From 72bc96f07868d532596477604b6fb41633ebd124 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 8 Jan 2013 14:54:12 +0100 Subject: udev: net_id - skip stacked network devices --- src/udev/udev-builtin-net_id.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index d5db762e80..1975c6d62c 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -366,6 +366,7 @@ static int ieee_oui(struct udev_device *dev, struct netnames *names, bool test) static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool test) { const char *s; + const char *p; unsigned int i; const char *devtype; const char *prefix = "en"; @@ -380,6 +381,16 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool if (i != 1) return 0; + /* skip stacked devices, like VLANs, ... */ + s = udev_device_get_sysattr_value(dev, "ifindex"); + if (!s) + return EXIT_FAILURE; + p = udev_device_get_sysattr_value(dev, "iflink"); + if (!p) + return EXIT_FAILURE; + if (strcmp(s, p) != 0) + return 0; + devtype = udev_device_get_devtype(dev); if (devtype) { if (streq("wlan", devtype)) -- cgit v1.2.1 From 5088d19fa5cc898feda656019b08ae8714bd9148 Mon Sep 17 00:00:00 2001 From: Umut Tezduyar Date: Tue, 8 Jan 2013 13:23:32 +0100 Subject: bootchart: install missing man page and config file --- Makefile.am | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 474110a6e5..2232a1d38b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3027,11 +3027,14 @@ systemd_bootchart_SOURCES = \ src/bootchart/svg.c MANPAGES += \ - man/systemd-bootchart.1 + man/systemd-bootchart.1 \ man/bootchart.conf.5 rootlibexec_PROGRAMS += \ systemd-bootchart + +dist_pkgsysconf_DATA += \ + src/bootchart/bootchart.conf endif # ------------------------------------------------------------------------------ -- cgit v1.2.1 From 788f75a0e766738c052086e856b7c1b1b676de6b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 8 Jan 2013 19:43:01 +0100 Subject: update TODO --- TODO | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TODO b/TODO index 73d7b7f1c4..a61bed09bf 100644 --- a/TODO +++ b/TODO @@ -19,6 +19,10 @@ F18: Features: +* print a nicer explanation if people use variable/specifier expansion in ExecStart= for the first word + +* kernel cmdline switch to turn of predictable network interface names + * mount: turn dependency information from /proc/self/mountinfo into dependency information between systemd units. * udev: remove all (misguided from day 1) userspace firmware_class handling -- cgit v1.2.1 From 3761902e2e120849c283106fd4b78b6adec7367e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 8 Jan 2013 20:00:01 +0100 Subject: dbus: fix serialization of calendar timers --- src/core/dbus-timer.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/src/core/dbus-timer.c b/src/core/dbus-timer.c index 11d18cbd83..b22fcb5934 100644 --- a/src/core/dbus-timer.c +++ b/src/core/dbus-timer.c @@ -69,22 +69,28 @@ static int bus_timer_append_timers(DBusMessageIter *i, const char *property, voi return -ENOMEM; LIST_FOREACH(value, k, p->values) { - char *buf; + _cleanup_free_ char *buf = NULL; const char *t; size_t l; bool b; t = timer_base_to_string(k->base); - assert(endswith(t, "Sec")); - /* s/Sec/USec/ */ - l = strlen(t); - buf = new(char, l+2); - if (!buf) - return -ENOMEM; + if (endswith(t, "Sec")) { + + /* s/Sec/USec/ */ + l = strlen(t); + buf = new(char, l+2); + if (!buf) + return -ENOMEM; - memcpy(buf, t, l-3); - memcpy(buf+l-3, "USec", 5); + memcpy(buf, t, l-3); + memcpy(buf+l-3, "USec", 5); + } else { + buf = strdup(t); + if (!buf) + return -ENOMEM; + } b = dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) && dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &buf) && @@ -92,7 +98,6 @@ static int bus_timer_append_timers(DBusMessageIter *i, const char *property, voi dbus_message_iter_append_basic(&sub2, DBUS_TYPE_UINT64, &k->next_elapse) && dbus_message_iter_close_container(&sub, &sub2); - free(buf); if (!b) return -ENOMEM; } -- cgit v1.2.1 From 9096ad367f6d6072ea29fa5255e968eb84ad9a3d Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 8 Jan 2013 21:39:44 +0100 Subject: update TODO --- TODO | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/TODO b/TODO index a61bed09bf..69698cb411 100644 --- a/TODO +++ b/TODO @@ -378,8 +378,6 @@ Features: * ConditionSecurity= should learn about IMA and SMACK -* Auke: merge Auke's bootchart - * udev: move to LGPL * udev systemd unify: @@ -514,7 +512,6 @@ Features: - the journal HTTP iface - non-cgroup resource management - refreshed, longer missions statement - - using detect-virt * allow port=0 in .socket units @@ -579,7 +576,7 @@ External: * make cryptsetup lower --iter-time -* patch kernel for xattr support in /dev, /proc/, /sys and /sys/fs/cgroup? +* patch kernel for xattr support in /dev, /proc/, /sys? * NTP: the kernel's 11-minutes-mode syncs the system time to the RTC, but only in an ~30 minutes window. It does not adjust larger differences. Find a way @@ -610,7 +607,3 @@ Regularly: Scheduled for removal or fixing: * xxxOverridable dependencies (probably: fix) - -* support for early-boot SysV services (definitely: remove) - -* insserv support (definitely: remove) -- cgit v1.2.1 From 3c123e0899b56c0587db36420da5e049c56d9e19 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Wed, 9 Jan 2013 17:10:56 +0100 Subject: udev: don't call fclose on NULL in is_pci_multifunction --- src/udev/udev-builtin-net_id.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index 1975c6d62c..7c9564f4cd 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -136,7 +136,7 @@ static int dev_pci_onboard(struct udev_device *dev, struct netnames *names) { /* read the 256 bytes PCI configuration space to check the multi-function bit */ static bool is_pci_multifunction(struct udev_device *dev) { char filename[256]; - FILE *f; + FILE *f = NULL; char config[64]; bool multi = false; @@ -151,7 +151,8 @@ static bool is_pci_multifunction(struct udev_device *dev) { if ((config[PCI_HEADER_TYPE] & 0x80) != 0) multi = true; out: - fclose(f); + if(f) + fclose(f); return multi; } -- cgit v1.2.1 From 0908dd2fd5536cf15d75780980ac2eca37ff800f Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Wed, 9 Jan 2013 17:10:57 +0100 Subject: bootchart: check return of fopen before setvbuf in log.c --- src/bootchart/log.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/bootchart/log.c b/src/bootchart/log.c index 89c7b3523c..6c40913973 100644 --- a/src/bootchart/log.c +++ b/src/bootchart/log.c @@ -364,9 +364,9 @@ schedstat_next: if (!ps->smaps) { sprintf(filename, "/proc/%d/smaps", pid); ps->smaps = fopen(filename, "r"); - setvbuf(ps->smaps, smaps_buf, _IOFBF, sizeof(smaps_buf)); if (!ps->smaps) continue; + setvbuf(ps->smaps, smaps_buf, _IOFBF, sizeof(smaps_buf)); } else { rewind(ps->smaps); } -- cgit v1.2.1 From d5a89d7dc17a5ba5cf4fc71f82963c5c94a31c3d Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 9 Jan 2013 19:06:46 +0100 Subject: udev: move string copy functions to shared/ --- Makefile.am | 2 + TODO | 1 - src/libudev/libudev-device-private.c | 8 +-- src/libudev/libudev-device.c | 60 ++++++++++---------- src/libudev/libudev-enumerate.c | 12 ++-- src/libudev/libudev-private.h | 6 +- src/libudev/libudev-queue.c | 2 +- src/libudev/libudev-util.c | 99 +++------------------------------ src/shared/strxcpyx.c | 104 +++++++++++++++++++++++++++++++++++ src/shared/strxcpyx.h | 31 +++++++++++ src/test/test-udev.c | 2 +- src/udev/collect/collect.c | 2 +- src/udev/scsi_id/scsi_id.c | 8 +-- src/udev/udev-builtin-blkid.c | 2 +- src/udev/udev-builtin-btrfs.c | 2 +- src/udev/udev-builtin-firmware.c | 10 ++-- src/udev/udev-builtin-net_id.c | 20 +++---- src/udev/udev-builtin-usb_id.c | 10 ++-- src/udev/udev-builtin.c | 4 +- src/udev/udev-ctrl.c | 4 +- src/udev/udev-event.c | 58 +++++++++---------- src/udev/udev-node.c | 14 ++--- src/udev/udev-rules.c | 28 +++++----- src/udev/udevadm-info.c | 4 +- src/udev/udevadm-monitor.c | 2 +- src/udev/udevadm-test-builtin.c | 4 +- src/udev/udevadm-test.c | 4 +- src/udev/udevadm-trigger.c | 8 +-- src/udev/udevd.c | 14 ++--- 29 files changed, 287 insertions(+), 238 deletions(-) create mode 100644 src/shared/strxcpyx.c create mode 100644 src/shared/strxcpyx.h diff --git a/Makefile.am b/Makefile.am index 2232a1d38b..2ba8d55792 100644 --- a/Makefile.am +++ b/Makefile.am @@ -769,6 +769,8 @@ libsystemd_shared_la_SOURCES = \ src/shared/strv.h \ src/shared/strbuf.c \ src/shared/strbuf.h \ + src/shared/strxcpyx.c \ + src/shared/strxcpyx.h \ src/shared/conf-parser.c \ src/shared/conf-parser.h \ src/shared/log.c \ diff --git a/TODO b/TODO index 69698cb411..4ad2998030 100644 --- a/TODO +++ b/TODO @@ -381,7 +381,6 @@ Features: * udev: move to LGPL * udev systemd unify: - - strpcpy(), strpcpyl(), strscpy(), strscpyl() - utf8 validator code * udev: scsi_id -> sg3_utils -> kill scsi_id diff --git a/src/libudev/libudev-device-private.c b/src/libudev/libudev-device-private.c index c123057907..cba08d2f65 100644 --- a/src/libudev/libudev-device-private.c +++ b/src/libudev/libudev-device-private.c @@ -38,7 +38,7 @@ static void udev_device_tag(struct udev_device *dev, const char *tag, bool add) id = udev_device_get_id_filename(dev); if (id == NULL) return; - util_strscpyl(filename, sizeof(filename), "/run/udev/tags/", tag, "/", id, NULL); + strscpyl(filename, sizeof(filename), "/run/udev/tags/", tag, "/", id, NULL); if (add) { int fd; @@ -116,7 +116,7 @@ int udev_device_update_db(struct udev_device *udev_device) return -1; has_info = device_has_info(udev_device); - util_strscpyl(filename, sizeof(filename), "/run/udev/data/", id, NULL); + strscpyl(filename, sizeof(filename), "/run/udev/data/", id, NULL); /* do not store anything for otherwise empty devices */ if (!has_info && @@ -127,7 +127,7 @@ int udev_device_update_db(struct udev_device *udev_device) } /* write a database file */ - util_strscpyl(filename_tmp, sizeof(filename_tmp), filename, ".tmp", NULL); + strscpyl(filename_tmp, sizeof(filename_tmp), filename, ".tmp", NULL); mkdir_parents(filename_tmp, 0755); f = fopen(filename_tmp, "we"); if (f == NULL) { @@ -186,7 +186,7 @@ int udev_device_delete_db(struct udev_device *udev_device) id = udev_device_get_id_filename(udev_device); if (id == NULL) return -1; - util_strscpyl(filename, sizeof(filename), "/run/udev/data/", id, NULL); + strscpyl(filename, sizeof(filename), "/run/udev/data/", id, NULL); unlink(filename); return 0; } diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c index f218b0278a..9fe3d633d4 100644 --- a/src/libudev/libudev-device.c +++ b/src/libudev/libudev-device.c @@ -379,7 +379,7 @@ static struct udev_list_entry *udev_device_add_property_from_string(struct udev_ char name[UTIL_LINE_SIZE]; char *val; - util_strscpy(name, sizeof(name), property); + strscpy(name, sizeof(name), property); val = strchr(name, '='); if (val == NULL) return NULL; @@ -404,7 +404,7 @@ void udev_device_add_property_from_string_parse(struct udev_device *udev_device, if (startswith(property, "DEVPATH=")) { char path[UTIL_PATH_SIZE]; - util_strscpyl(path, sizeof(path), "/sys", &property[8], NULL); + strscpyl(path, sizeof(path), "/sys", &property[8], NULL); udev_device_set_syspath(udev_device, path); } else if (startswith(property, "SUBSYSTEM=")) { udev_device_set_subsystem(udev_device, &property[10]); @@ -417,7 +417,7 @@ void udev_device_add_property_from_string_parse(struct udev_device *udev_device, char *slink; char *next; - util_strscpy(devlinks, sizeof(devlinks), &property[9]); + strscpy(devlinks, sizeof(devlinks), &property[9]); slink = devlinks; next = strchr(slink, ' '); while (next != NULL) { @@ -432,7 +432,7 @@ void udev_device_add_property_from_string_parse(struct udev_device *udev_device, char tags[UTIL_PATH_SIZE]; char *next; - util_strscpy(tags, sizeof(tags), &property[5]); + strscpy(tags, sizeof(tags), &property[5]); next = strchr(tags, ':'); if (next != NULL) { next++; @@ -527,7 +527,7 @@ int udev_device_read_db(struct udev_device *udev_device, const char *dbfile) id = udev_device_get_id_filename(udev_device); if (id == NULL) return -1; - util_strscpyl(filename, sizeof(filename), "/run/udev/data/", id, NULL); + strscpyl(filename, sizeof(filename), "/run/udev/data/", id, NULL); dbfile = filename; } @@ -550,7 +550,7 @@ int udev_device_read_db(struct udev_device *udev_device, const char *dbfile) val = &line[2]; switch(line[0]) { case 'S': - util_strscpyl(filename, sizeof(filename), "/dev/", val, NULL); + strscpyl(filename, sizeof(filename), "/dev/", val, NULL); udev_device_add_devlink(udev_device, filename); break; case 'L': @@ -588,7 +588,7 @@ int udev_device_read_uevent_file(struct udev_device *udev_device) if (udev_device->uevent_loaded) return 0; - util_strscpyl(filename, sizeof(filename), udev_device->syspath, "/uevent", NULL); + strscpyl(filename, sizeof(filename), udev_device->syspath, "/uevent", NULL); f = fopen(filename, "re"); if (f == NULL) return -1; @@ -702,14 +702,14 @@ _public_ struct udev_device *udev_device_new_from_syspath(struct udev *udev, con return NULL; /* resolve possible symlink to real path */ - util_strscpy(path, sizeof(path), syspath); + strscpy(path, sizeof(path), syspath); util_resolve_sys_link(udev, path, sizeof(path)); if (startswith(path + strlen("/sys"), "/devices/")) { char file[UTIL_PATH_SIZE]; /* all "devices" require a "uevent" file */ - util_strscpyl(file, sizeof(file), path, "/uevent", NULL); + strscpyl(file, sizeof(file), path, "/uevent", NULL); if (stat(file, &statbuf) != 0) return NULL; } else { @@ -823,7 +823,7 @@ _public_ struct udev_device *udev_device_new_from_device_id(struct udev *udev, c return NULL; } case '+': - util_strscpy(subsys, sizeof(subsys), &id[1]); + strscpy(subsys, sizeof(subsys), &id[1]); sysname = strchr(subsys, ':'); if (sysname == NULL) return NULL; @@ -856,22 +856,22 @@ _public_ struct udev_device *udev_device_new_from_subsystem_sysname(struct udev struct stat statbuf; if (streq(subsystem, "subsystem")) { - util_strscpyl(path, sizeof(path), "/sys/subsystem/", sysname, NULL); + strscpyl(path, sizeof(path), "/sys/subsystem/", sysname, NULL); if (stat(path, &statbuf) == 0) goto found; - util_strscpyl(path, sizeof(path), "/sys/bus/", sysname, NULL); + strscpyl(path, sizeof(path), "/sys/bus/", sysname, NULL); if (stat(path, &statbuf) == 0) goto found; - util_strscpyl(path, sizeof(path), "/sys/class/", sysname, NULL); + strscpyl(path, sizeof(path), "/sys/class/", sysname, NULL); if (stat(path, &statbuf) == 0) goto found; goto out; } if (streq(subsystem, "module")) { - util_strscpyl(path, sizeof(path), "/sys/module/", sysname, NULL); + strscpyl(path, sizeof(path), "/sys/module/", sysname, NULL); if (stat(path, &statbuf) == 0) goto found; goto out; @@ -881,32 +881,32 @@ _public_ struct udev_device *udev_device_new_from_subsystem_sysname(struct udev char subsys[UTIL_NAME_SIZE]; char *driver; - util_strscpy(subsys, sizeof(subsys), sysname); + strscpy(subsys, sizeof(subsys), sysname); driver = strchr(subsys, ':'); if (driver != NULL) { driver[0] = '\0'; driver = &driver[1]; - util_strscpyl(path, sizeof(path), "/sys/subsystem/", subsys, "/drivers/", driver, NULL); + strscpyl(path, sizeof(path), "/sys/subsystem/", subsys, "/drivers/", driver, NULL); if (stat(path, &statbuf) == 0) goto found; - util_strscpyl(path, sizeof(path), "/sys/bus/", subsys, "/drivers/", driver, NULL); + strscpyl(path, sizeof(path), "/sys/bus/", subsys, "/drivers/", driver, NULL); if (stat(path, &statbuf) == 0) goto found; } goto out; } - util_strscpyl(path, sizeof(path), "/sys/subsystem/", subsystem, "/devices/", sysname, NULL); + strscpyl(path, sizeof(path), "/sys/subsystem/", subsystem, "/devices/", sysname, NULL); if (stat(path, &statbuf) == 0) goto found; - util_strscpyl(path, sizeof(path), "/sys/bus/", subsystem, "/devices/", sysname, NULL); + strscpyl(path, sizeof(path), "/sys/bus/", subsystem, "/devices/", sysname, NULL); if (stat(path, &statbuf) == 0) goto found; - util_strscpyl(path, sizeof(path), "/sys/class/", subsystem, "/", sysname, NULL); + strscpyl(path, sizeof(path), "/sys/class/", subsystem, "/", sysname, NULL); if (stat(path, &statbuf) == 0) goto found; out: @@ -957,7 +957,7 @@ static struct udev_device *device_new_from_parent(struct udev_device *udev_devic char path[UTIL_PATH_SIZE]; const char *subdir; - util_strscpy(path, sizeof(path), udev_device->syspath); + strscpy(path, sizeof(path), udev_device->syspath); subdir = path + strlen("/sys/"); for (;;) { char *pos; @@ -1260,9 +1260,9 @@ _public_ struct udev_list_entry *udev_device_get_properties_list_entry(struct ud size_t l; s = symlinks; - l = util_strpcpyl(&s, sizeof(symlinks), udev_list_entry_get_name(list_entry), NULL); + l = strpcpyl(&s, sizeof(symlinks), udev_list_entry_get_name(list_entry), NULL); udev_list_entry_foreach(list_entry, udev_list_entry_get_next(list_entry)) - l = util_strpcpyl(&s, l, " ", udev_list_entry_get_name(list_entry), NULL); + l = strpcpyl(&s, l, " ", udev_list_entry_get_name(list_entry), NULL); udev_device_add_property(udev_device, "DEVLINKS", symlinks); } } @@ -1275,9 +1275,9 @@ _public_ struct udev_list_entry *udev_device_get_properties_list_entry(struct ud size_t l; s = tags; - l = util_strpcpyl(&s, sizeof(tags), ":", NULL); + l = strpcpyl(&s, sizeof(tags), ":", NULL); udev_list_entry_foreach(list_entry, udev_device_get_tags_list_entry(udev_device)) - l = util_strpcpyl(&s, l, udev_list_entry_get_name(list_entry), ":", NULL); + l = strpcpyl(&s, l, udev_list_entry_get_name(list_entry), ":", NULL); udev_device_add_property(udev_device, "TAGS", tags); } } @@ -1374,7 +1374,7 @@ _public_ const char *udev_device_get_sysattr_value(struct udev_device *udev_devi if (list_entry != NULL) return udev_list_entry_get_value(list_entry); - util_strscpyl(path, sizeof(path), udev_device_get_syspath(udev_device), "/", sysattr, NULL); + strscpyl(path, sizeof(path), udev_device_get_syspath(udev_device), "/", sysattr, NULL); if (lstat(path, &statbuf) != 0) { udev_list_entry_add(&udev_device->sysattr_value_list, sysattr, NULL); goto out; @@ -1400,7 +1400,7 @@ _public_ const char *udev_device_get_sysattr_value(struct udev_device *udev_devi /* resolve custom link to a device and return its syspath */ if (!streq(sysattr, "device")) { - util_strscpyl(path, sizeof(path), udev_device->syspath, "/", sysattr, NULL); + strscpyl(path, sizeof(path), udev_device->syspath, "/", sysattr, NULL); dev = udev_device_new_from_syspath(udev_device->udev, path); if (dev != NULL) { list_entry = udev_list_entry_add(&udev_device->sysattr_value_list, sysattr, @@ -1463,7 +1463,7 @@ static int udev_device_sysattr_list_read(struct udev_device *udev_device) if (dent->d_type != DT_LNK && dent->d_type != DT_REG) continue; - util_strscpyl(path, sizeof(path), udev_device_get_syspath(udev_device), "/", dent->d_name, NULL); + strscpyl(path, sizeof(path), udev_device_get_syspath(udev_device), "/", dent->d_name, NULL); if (lstat(path, &statbuf) != 0) continue; if ((statbuf.st_mode & S_IRUSR) == 0) @@ -1722,10 +1722,10 @@ static int update_envp_monitor_buf(struct udev_device *udev_device) return -EINVAL; /* add property string to monitor buffer */ - l = util_strpcpyl(&s, l, key, "=", udev_list_entry_get_value(list_entry), NULL); + l = strpcpyl(&s, l, key, "=", udev_list_entry_get_value(list_entry), NULL); if (l == 0) return -EINVAL; - /* advance past the trailing '\0' that util_strpcpyl() guarantees */ + /* advance past the trailing '\0' that strpcpyl() guarantees */ s++; l--; } diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c index 6a5f4e025e..2c1f7ab4ac 100644 --- a/src/libudev/libudev-enumerate.c +++ b/src/libudev/libudev-enumerate.c @@ -659,11 +659,11 @@ static int scan_dir_and_add_devices(struct udev_enumerate *udev_enumerate, struct dirent *dent; s = path; - l = util_strpcpyl(&s, sizeof(path), "/sys/", basedir, NULL); + l = strpcpyl(&s, sizeof(path), "/sys/", basedir, NULL); if (subdir1 != NULL) - l = util_strpcpyl(&s, l, "/", subdir1, NULL); + l = strpcpyl(&s, l, "/", subdir1, NULL); if (subdir2 != NULL) - util_strpcpyl(&s, l, "/", subdir2, NULL); + strpcpyl(&s, l, "/", subdir2, NULL); dir = opendir(path); if (dir == NULL) return -ENOENT; @@ -677,7 +677,7 @@ static int scan_dir_and_add_devices(struct udev_enumerate *udev_enumerate, if (!match_sysname(udev_enumerate, dent->d_name)) continue; - util_strscpyl(syspath, sizeof(syspath), path, "/", dent->d_name, NULL); + strscpyl(syspath, sizeof(syspath), path, "/", dent->d_name, NULL); dev = udev_device_new_from_syspath(udev_enumerate->udev, syspath); if (dev == NULL) continue; @@ -738,7 +738,7 @@ static int scan_dir(struct udev_enumerate *udev_enumerate, const char *basedir, DIR *dir; struct dirent *dent; - util_strscpyl(path, sizeof(path), "/sys/", basedir, NULL); + strscpyl(path, sizeof(path), "/sys/", basedir, NULL); dir = opendir(path); if (dir == NULL) return -1; @@ -789,7 +789,7 @@ static int scan_devices_tags(struct udev_enumerate *udev_enumerate) struct dirent *dent; char path[UTIL_PATH_SIZE]; - util_strscpyl(path, sizeof(path), "/run/udev/tags/", udev_list_entry_get_name(list_entry), NULL); + strscpyl(path, sizeof(path), "/run/udev/tags/", udev_list_entry_get_name(list_entry), NULL); dir = opendir(path); if (dir == NULL) continue; diff --git a/src/libudev/libudev-private.h b/src/libudev/libudev-private.h index 1b86384703..54c51acc23 100644 --- a/src/libudev/libudev-private.h +++ b/src/libudev/libudev-private.h @@ -29,6 +29,7 @@ #include "macro.h" #include "util.h" #include "mkdir.h" +#include "strxcpyx.h" #define READ_END 0 #define WRITE_END 1 @@ -164,11 +165,6 @@ int util_resolve_sys_link(struct udev *udev, char *syspath, size_t size); int util_log_priority(const char *priority); size_t util_path_encode(const char *src, char *dest, size_t size); void util_remove_trailing_chars(char *path, char c); -size_t util_strpcpy(char **dest, size_t size, const char *src); -size_t util_strpcpyf(char **dest, size_t size, const char *src, ...) __attribute__((format(printf, 3, 4))); -size_t util_strpcpyl(char **dest, size_t size, const char *src, ...) __attribute__((sentinel)); -size_t util_strscpy(char *dest, size_t size, const char *src); -size_t util_strscpyl(char *dest, size_t size, const char *src, ...) __attribute__((sentinel)); int util_replace_whitespace(const char *str, char *to, size_t len); int util_replace_chars(char *str, const char *white); unsigned int util_string_hash32(const char *key); diff --git a/src/libudev/libudev-queue.c b/src/libudev/libudev-queue.c index 08d52ab1f1..bfb4807383 100644 --- a/src/libudev/libudev-queue.c +++ b/src/libudev/libudev-queue.c @@ -458,7 +458,7 @@ _public_ struct udev_list_entry *udev_queue_get_queued_list_entry(struct udev_qu snprintf(seqnum_str, sizeof(seqnum_str), "%llu", seqnum); s = syspath; - l = util_strpcpy(&s, sizeof(syspath), "/sys"); + l = strpcpy(&s, sizeof(syspath), "/sys"); len = udev_queue_read_devpath(queue_file, s, l); if (len < 0) break; diff --git a/src/libudev/libudev-util.c b/src/libudev/libudev-util.c index b55bf75bfc..2eb7907063 100644 --- a/src/libudev/libudev-util.c +++ b/src/libudev/libudev-util.c @@ -51,7 +51,7 @@ int util_delete_path(struct udev *udev, const char *path) if (path[0] == '/') while(path[1] == '/') path++; - util_strscpy(p, sizeof(p), path); + strscpy(p, sizeof(p), path); pos = strrchr(p, '/'); if (pos == p || pos == NULL) return 0; @@ -151,7 +151,7 @@ int util_resolve_subsys_kernel(struct udev *udev, const char *string, if (string[0] != '[') return -1; - util_strscpy(temp, sizeof(temp), string); + strscpy(temp, sizeof(temp), string); subsys = &temp[1]; @@ -183,7 +183,7 @@ int util_resolve_subsys_kernel(struct udev *udev, const char *string, val = udev_device_get_sysattr_value(dev, attr); if (val != NULL) - util_strscpy(result, maxsize, val); + strscpy(result, maxsize, val); else result[0] = '\0'; udev_dbg(udev, "value '[%s/%s]%s' is '%s'\n", subsys, sysname, attr, result); @@ -192,9 +192,9 @@ int util_resolve_subsys_kernel(struct udev *udev, const char *string, char *s; s = result; - l = util_strpcpyl(&s, maxsize, udev_device_get_syspath(dev), NULL); + l = strpcpyl(&s, maxsize, udev_device_get_syspath(dev), NULL); if (attr != NULL) - util_strpcpyl(&s, l, "/", attr, NULL); + strpcpyl(&s, l, "/", attr, NULL); udev_dbg(udev, "path '[%s/%s]%s' is '%s'\n", subsys, sysname, attr, result); } udev_device_unref(dev); @@ -207,7 +207,7 @@ ssize_t util_get_sys_core_link_value(struct udev *udev, const char *slink, const ssize_t len; const char *pos; - util_strscpyl(path, sizeof(path), syspath, "/", slink, NULL); + strscpyl(path, sizeof(path), syspath, "/", slink, NULL); len = readlink(path, target, sizeof(target)); if (len <= 0 || len == (ssize_t)sizeof(target)) return -1; @@ -216,7 +216,7 @@ ssize_t util_get_sys_core_link_value(struct udev *udev, const char *slink, const if (pos == NULL) return -1; pos = &pos[1]; - return util_strscpy(value, size, pos); + return strscpy(value, size, pos); } int util_resolve_sys_link(struct udev *udev, char *syspath, size_t size) @@ -243,7 +243,7 @@ int util_resolve_sys_link(struct udev *udev, char *syspath, size_t size) } if (base == NULL) return -EINVAL; - util_strscpyl(base, size - (base - syspath), "/", &link_target[back * 3], NULL); + strscpyl(base, size - (base - syspath), "/", &link_target[back * 3], NULL); return 0; } @@ -307,89 +307,6 @@ void util_remove_trailing_chars(char *path, char c) path[--len] = '\0'; } -/* - * Concatenates strings. In any case, terminates in _all_ cases with '\0' - * and moves the @dest pointer forward to the added '\0'. Returns the - * remaining size, and 0 if the string was truncated. - */ -size_t util_strpcpy(char **dest, size_t size, const char *src) -{ - size_t len; - - len = strlen(src); - if (len >= size) { - if (size > 1) - *dest = mempcpy(*dest, src, size-1); - size = 0; - } else { - if (len > 0) { - *dest = mempcpy(*dest, src, len); - size -= len; - } - } - *dest[0] = '\0'; - return size; -} - -size_t util_strpcpyf(char **dest, size_t size, const char *src, ...) -{ - va_list va; - int i; - - va_start(va, src); - i = vsnprintf(*dest, size, src, va); - if (i < (int)size) { - *dest += i; - size -= i; - } else { - *dest += size; - size = 0; - } - va_end(va); - *dest[0] = '\0'; - return size; -} - -/* concatenates list of strings, moves dest forward */ -size_t util_strpcpyl(char **dest, size_t size, const char *src, ...) -{ - va_list va; - - va_start(va, src); - do { - size = util_strpcpy(dest, size, src); - src = va_arg(va, char *); - } while (src != NULL); - va_end(va); - return size; -} - -/* copies string */ -size_t util_strscpy(char *dest, size_t size, const char *src) -{ - char *s; - - s = dest; - return util_strpcpy(&s, size, src); -} - -/* concatenates list of strings */ -size_t util_strscpyl(char *dest, size_t size, const char *src, ...) -{ - va_list va; - char *s; - - va_start(va, src); - s = dest; - do { - size = util_strpcpy(&s, size, src); - src = va_arg(va, char *); - } while (src != NULL); - va_end(va); - - return size; -} - /* count of characters used to encode one unicode char */ static int utf8_encoded_expected_len(const char *str) { diff --git a/src/shared/strxcpyx.c b/src/shared/strxcpyx.c new file mode 100644 index 0000000000..3cb04b25cd --- /dev/null +++ b/src/shared/strxcpyx.c @@ -0,0 +1,104 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Kay Sievers + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +/* + * Concatenates/copies strings. In any case, terminates in all cases + * with '\0' * and moves the @dest pointer forward to the added '\0'. + * Returns the * remaining size, and 0 if the string was truncated. + */ + +#include +#include +#include "strxcpyx.h" + +size_t strpcpy(char **dest, size_t size, const char *src) +{ + size_t len; + + len = strlen(src); + if (len >= size) { + if (size > 1) + *dest = mempcpy(*dest, src, size-1); + size = 0; + } else { + if (len > 0) { + *dest = mempcpy(*dest, src, len); + size -= len; + } + } + *dest[0] = '\0'; + return size; +} + +size_t strpcpyf(char **dest, size_t size, const char *src, ...) +{ + va_list va; + int i; + + va_start(va, src); + i = vsnprintf(*dest, size, src, va); + if (i < (int)size) { + *dest += i; + size -= i; + } else { + *dest += size; + size = 0; + } + va_end(va); + *dest[0] = '\0'; + return size; +} + +size_t strpcpyl(char **dest, size_t size, const char *src, ...) +{ + va_list va; + + va_start(va, src); + do { + size = strpcpy(dest, size, src); + src = va_arg(va, char *); + } while (src != NULL); + va_end(va); + return size; +} + +size_t strscpy(char *dest, size_t size, const char *src) +{ + char *s; + + s = dest; + return strpcpy(&s, size, src); +} + +size_t strscpyl(char *dest, size_t size, const char *src, ...) { + va_list va; + char *s; + + va_start(va, src); + s = dest; + do { + size = strpcpy(&s, size, src); + src = va_arg(va, char *); + } while (src != NULL); + va_end(va); + + return size; +} diff --git a/src/shared/strxcpyx.h b/src/shared/strxcpyx.h new file mode 100644 index 0000000000..1229a4821d --- /dev/null +++ b/src/shared/strxcpyx.h @@ -0,0 +1,31 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2013 Kay Sievers + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include + +size_t strpcpy(char **dest, size_t size, const char *src); +size_t strpcpyf(char **dest, size_t size, const char *src, ...) __attribute__((format(printf, 3, 4))); +size_t strpcpyl(char **dest, size_t size, const char *src, ...) __attribute__((sentinel)); +size_t strscpy(char *dest, size_t size, const char *src); +size_t strscpyl(char *dest, size_t size, const char *src, ...) __attribute__((sentinel)); diff --git a/src/test/test-udev.c b/src/test/test-udev.c index db9d36124e..7cb93edc1d 100644 --- a/src/test/test-udev.c +++ b/src/test/test-udev.c @@ -117,7 +117,7 @@ int main(int argc, char *argv[]) rules = udev_rules_new(udev, 1); - util_strscpyl(syspath, sizeof(syspath), "/sys", devpath, NULL); + strscpyl(syspath, sizeof(syspath), "/sys", devpath, NULL); dev = udev_device_new_from_syspath(udev, syspath); if (dev == NULL) { log_debug("unknown device '%s'\n", devpath); diff --git a/src/udev/collect/collect.c b/src/udev/collect/collect.c index 3c46e40de1..f594814dbe 100644 --- a/src/udev/collect/collect.c +++ b/src/udev/collect/collect.c @@ -414,7 +414,7 @@ int main(int argc, char **argv) if (debug) fprintf(stderr, "Using checkpoint '%s'\n", checkpoint); - util_strscpyl(tmpdir, sizeof(tmpdir), "/run/udev/collect", NULL); + strscpyl(tmpdir, sizeof(tmpdir), "/run/udev/collect", NULL); fd = prepare(tmpdir, checkpoint); if (fd < 0) { ret = 3; diff --git a/src/udev/scsi_id/scsi_id.c b/src/udev/scsi_id/scsi_id.c index c90b6aa581..fa0413c462 100644 --- a/src/udev/scsi_id/scsi_id.c +++ b/src/udev/scsi_id/scsi_id.c @@ -108,7 +108,7 @@ static void set_type(const char *from, char *to, size_t len) break; } } - util_strscpy(to, len, type); + strscpy(to, len, type); } /* @@ -341,7 +341,7 @@ static int set_options(struct udev *udev, case 'd': dev_specified = 1; - util_strscpy(maj_min_dev, MAX_PATH_LEN, optarg); + strscpy(maj_min_dev, MAX_PATH_LEN, optarg); break; case 'e': @@ -349,7 +349,7 @@ static int set_options(struct udev *udev, break; case 'f': - util_strscpy(config_file, MAX_PATH_LEN, optarg); + strscpy(config_file, MAX_PATH_LEN, optarg); break; case 'g': @@ -415,7 +415,7 @@ static int set_options(struct udev *udev, } if (optind < argc && !dev_specified) { dev_specified = 1; - util_strscpy(maj_min_dev, MAX_PATH_LEN, argv[optind]); + strscpy(maj_min_dev, MAX_PATH_LEN, argv[optind]); } return 0; } diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c index 4293103046..56a05f5e50 100644 --- a/src/udev/udev-builtin-blkid.c +++ b/src/udev/udev-builtin-blkid.c @@ -76,7 +76,7 @@ static void print_property(struct udev_device *dev, bool test, const char *name, udev_builtin_add_property(dev, test, "ID_PART_ENTRY_TYPE", s); } else if (startswith(name, "PART_ENTRY_")) { - util_strscpyl(s, sizeof(s), "ID_", name, NULL); + strscpyl(s, sizeof(s), "ID_", name, NULL); udev_builtin_add_property(dev, test, s, value); } } diff --git a/src/udev/udev-builtin-btrfs.c b/src/udev/udev-builtin-btrfs.c index dfb05525ad..f7bea69b26 100644 --- a/src/udev/udev-builtin-btrfs.c +++ b/src/udev/udev-builtin-btrfs.c @@ -48,7 +48,7 @@ static int builtin_btrfs(struct udev_device *dev, int argc, char *argv[], bool t if (fd < 0) return EXIT_FAILURE; - util_strscpy(args.name, sizeof(args.name), argv[2]); + strscpy(args.name, sizeof(args.name), argv[2]); err = ioctl(fd, BTRFS_IOC_DEVICES_READY, &args); close(fd); if (err < 0) diff --git a/src/udev/udev-builtin-firmware.c b/src/udev/udev-builtin-firmware.c index 4a91d33575..9cb4294633 100644 --- a/src/udev/udev-builtin-firmware.c +++ b/src/udev/udev-builtin-firmware.c @@ -100,20 +100,20 @@ static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], boo /* lookup firmware file */ uname(&kernel); for (i = 0; i < ELEMENTSOF(searchpath); i++) { - util_strscpyl(fwpath, sizeof(fwpath), searchpath[i], kernel.release, "/", firmware, NULL); + strscpyl(fwpath, sizeof(fwpath), searchpath[i], kernel.release, "/", firmware, NULL); fwfile = fopen(fwpath, "re"); if (fwfile != NULL) break; - util_strscpyl(fwpath, sizeof(fwpath), searchpath[i], firmware, NULL); + strscpyl(fwpath, sizeof(fwpath), searchpath[i], firmware, NULL); fwfile = fopen(fwpath, "re"); if (fwfile != NULL) break; } util_path_encode(firmware, fwencpath, sizeof(fwencpath)); - util_strscpyl(misspath, sizeof(misspath), "/run/udev/firmware-missing/", fwencpath, NULL); - util_strscpyl(loadpath, sizeof(loadpath), udev_device_get_syspath(dev), "/loading", NULL); + strscpyl(misspath, sizeof(misspath), "/run/udev/firmware-missing/", fwencpath, NULL); + strscpyl(loadpath, sizeof(loadpath), udev_device_get_syspath(dev), "/loading", NULL); if (fwfile == NULL) { int err; @@ -152,7 +152,7 @@ static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], boo if (!set_loading(udev, loadpath, "1")) goto exit; - util_strscpyl(datapath, sizeof(datapath), udev_device_get_syspath(dev), "/data", NULL); + strscpyl(datapath, sizeof(datapath), udev_device_get_syspath(dev), "/data", NULL); if (!copy_firmware(udev, fwpath, datapath, statbuf.st_size)) { log_error("error sending firmware '%s' to device\n", firmware); set_loading(udev, loadpath, "-1"); diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index 7c9564f4cd..a5da291497 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -183,11 +183,11 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) { /* compose a name based on the raw kernel's PCI bus, slot numbers */ s = names->pci_path; - l = util_strpcpyf(&s, sizeof(names->pci_path), "p%ds%d", bus, slot); + l = strpcpyf(&s, sizeof(names->pci_path), "p%ds%d", bus, slot); if (func > 0 || is_pci_multifunction(names->pcidev)) - l = util_strpcpyf(&s, l, "f%d", func); + l = strpcpyf(&s, l, "f%d", func); if (dev_id > 0) - l = util_strpcpyf(&s, l, "d%d", dev_id); + l = strpcpyf(&s, l, "d%d", dev_id); if (l == 0) names->pci_path[0] = '\0'; @@ -231,11 +231,11 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) { if (hotplug_slot > 0) { s = names->pci_slot; - l = util_strpcpyf(&s, sizeof(names->pci_slot), "s%d", hotplug_slot); + l = strpcpyf(&s, sizeof(names->pci_slot), "s%d", hotplug_slot); if (func > 0 || is_pci_multifunction(names->pcidev)) - l = util_strpcpyf(&s, l, "f%d", func); + l = strpcpyf(&s, l, "f%d", func); if (dev_id > 0) - l = util_strpcpyf(&s, l, "d%d", dev_id); + l = strpcpyf(&s, l, "d%d", dev_id); if (l == 0) names->pci_path[0] = '\0'; } @@ -277,7 +277,7 @@ static int names_usb(struct udev_device *dev, struct netnames *names) { return -ENOENT; /* get USB port number chain, configuration, interface */ - util_strscpy(name, sizeof(name), udev_device_get_sysname(names->usbdev)); + strscpy(name, sizeof(name), udev_device_get_sysname(names->usbdev)); s = strchr(name, '-'); if (!s) return -EINVAL; @@ -300,15 +300,15 @@ static int names_usb(struct udev_device *dev, struct netnames *names) { while ((s = strchr(s, '.'))) s[0] = 'u'; s = names->usb_ports; - l = util_strpcpyl(&s, sizeof(names->usb_ports), "u", ports, NULL); + l = strpcpyl(&s, sizeof(names->usb_ports), "u", ports, NULL); /* append USB config number, suppress the common config == 1 */ if (!streq(config, "1")) - l = util_strpcpyl(&s, sizeof(names->usb_ports), "c", config, NULL); + l = strpcpyl(&s, sizeof(names->usb_ports), "c", config, NULL); /* append USB interface number, suppress the interface == 0 */ if (!streq(interf, "0")) - l = util_strpcpyl(&s, sizeof(names->usb_ports), "i", interf, NULL); + l = strpcpyl(&s, sizeof(names->usb_ports), "i", interf, NULL); if (l == 0) return -ENAMETOOLONG; diff --git a/src/udev/udev-builtin-usb_id.c b/src/udev/udev-builtin-usb_id.c index 13d1226393..7ce401d152 100644 --- a/src/udev/udev-builtin-usb_id.c +++ b/src/udev/udev-builtin-usb_id.c @@ -111,7 +111,7 @@ static int set_usb_mass_storage_ifsubtype(char *to, const char *from, size_t len break; } } - util_strscpy(to, len, type); + strscpy(to, len, type); return type_num; } @@ -143,7 +143,7 @@ static void set_scsi_type(char *to, const char *from, size_t len) break; } } - util_strscpy(to, len, type); + strscpy(to, len, type); } #define USB_DT_DEVICE 0x01 @@ -438,12 +438,12 @@ fallback: } s = serial; - l = util_strpcpyl(&s, sizeof(serial), vendor_str, "_", model_str, NULL); + l = strpcpyl(&s, sizeof(serial), vendor_str, "_", model_str, NULL); if (serial_str[0] != '\0') - l = util_strpcpyl(&s, l, "_", serial_str, NULL); + l = strpcpyl(&s, l, "_", serial_str, NULL); if (instance_str[0] != '\0') - util_strpcpyl(&s, l, "-", instance_str, NULL); + strpcpyl(&s, l, "-", instance_str, NULL); udev_builtin_add_property(dev, test, "ID_VENDOR", vendor_str); udev_builtin_add_property(dev, test, "ID_VENDOR_ENC", vendor_str_enc); diff --git a/src/udev/udev-builtin.c b/src/udev/udev-builtin.c index 32e6e1e90c..0651ae2ff0 100644 --- a/src/udev/udev-builtin.c +++ b/src/udev/udev-builtin.c @@ -110,7 +110,7 @@ enum udev_builtin_cmd udev_builtin_lookup(const char *command) enum udev_builtin_cmd i; char *pos; - util_strscpy(name, sizeof(name), command); + strscpy(name, sizeof(name), command); pos = strchr(name, ' '); if (pos) pos[0] = '\0'; @@ -128,7 +128,7 @@ int udev_builtin_run(struct udev_device *dev, enum udev_builtin_cmd cmd, const c /* we need '0' here to reset the internal state */ optind = 0; - util_strscpy(arg, sizeof(arg), command); + strscpy(arg, sizeof(arg), command); udev_build_argv(udev_device_get_udev(dev), arg, &argc, argv); return builtins[cmd]->cmd(dev, argc, argv, test); } diff --git a/src/udev/udev-ctrl.c b/src/udev/udev-ctrl.c index a235912ffb..6ee6b04b1b 100644 --- a/src/udev/udev-ctrl.c +++ b/src/udev/udev-ctrl.c @@ -93,7 +93,7 @@ struct udev_ctrl *udev_ctrl_new_from_fd(struct udev *udev, int fd) } uctrl->saddr.sun_family = AF_LOCAL; - util_strscpy(uctrl->saddr.sun_path, sizeof(uctrl->saddr.sun_path), "/run/udev/control"); + strscpy(uctrl->saddr.sun_path, sizeof(uctrl->saddr.sun_path), "/run/udev/control"); uctrl->addrlen = offsetof(struct sockaddr_un, sun_path) + strlen(uctrl->saddr.sun_path); return uctrl; } @@ -250,7 +250,7 @@ static int ctrl_send(struct udev_ctrl *uctrl, enum udev_ctrl_msg_type type, int ctrl_msg_wire.type = type; if (buf != NULL) - util_strscpy(ctrl_msg_wire.buf, sizeof(ctrl_msg_wire.buf), buf); + strscpy(ctrl_msg_wire.buf, sizeof(ctrl_msg_wire.buf), buf); else ctrl_msg_wire.intval = intval; diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index 5eedf4f0df..8c8b058df7 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -191,20 +191,20 @@ subst: switch (type) { case SUBST_DEVPATH: - l = util_strpcpy(&s, l, udev_device_get_devpath(dev)); + l = strpcpy(&s, l, udev_device_get_devpath(dev)); break; case SUBST_KERNEL: - l = util_strpcpy(&s, l, udev_device_get_sysname(dev)); + l = strpcpy(&s, l, udev_device_get_sysname(dev)); break; case SUBST_KERNEL_NUMBER: if (udev_device_get_sysnum(dev) == NULL) break; - l = util_strpcpy(&s, l, udev_device_get_sysnum(dev)); + l = strpcpy(&s, l, udev_device_get_sysnum(dev)); break; case SUBST_ID: if (event->dev_parent == NULL) break; - l = util_strpcpy(&s, l, udev_device_get_sysname(event->dev_parent)); + l = strpcpy(&s, l, udev_device_get_sysname(event->dev_parent)); break; case SUBST_DRIVER: { const char *driver; @@ -215,21 +215,21 @@ subst: driver = udev_device_get_driver(event->dev_parent); if (driver == NULL) break; - l = util_strpcpy(&s, l, driver); + l = strpcpy(&s, l, driver); break; } case SUBST_MAJOR: { char num[UTIL_PATH_SIZE]; sprintf(num, "%d", major(udev_device_get_devnum(dev))); - l = util_strpcpy(&s, l, num); + l = strpcpy(&s, l, num); break; } case SUBST_MINOR: { char num[UTIL_PATH_SIZE]; sprintf(num, "%d", minor(udev_device_get_devnum(dev))); - l = util_strpcpy(&s, l, num); + l = strpcpy(&s, l, num); break; } case SUBST_RESULT: { @@ -247,7 +247,7 @@ subst: char tmp[UTIL_PATH_SIZE]; char *cpos; - util_strscpy(result, sizeof(result), event->program_result); + strscpy(result, sizeof(result), event->program_result); cpos = result; while (--i) { while (cpos[0] != '\0' && !isspace(cpos[0])) @@ -259,16 +259,16 @@ subst: log_error("requested part of result string not found\n"); break; } - util_strscpy(tmp, sizeof(tmp), cpos); + strscpy(tmp, sizeof(tmp), cpos); /* %{2+}c copies the whole string from the second part on */ if (rest[0] != '+') { cpos = strchr(tmp, ' '); if (cpos) cpos[0] = '\0'; } - l = util_strpcpy(&s, l, tmp); + l = strpcpy(&s, l, tmp); } else { - l = util_strpcpy(&s, l, event->program_result); + l = strpcpy(&s, l, event->program_result); } break; } @@ -300,14 +300,14 @@ subst: /* strip trailing whitespace, and replace unwanted characters */ if (value != vbuf) - util_strscpy(vbuf, sizeof(vbuf), value); + strscpy(vbuf, sizeof(vbuf), value); len = strlen(vbuf); while (len > 0 && isspace(vbuf[--len])) vbuf[len] = '\0'; count = util_replace_chars(vbuf, UDEV_ALLOWED_CHARS_INPUT); if (count > 0) log_debug("%i character(s) replaced\n" , count); - l = util_strpcpy(&s, l, vbuf); + l = strpcpy(&s, l, vbuf); break; } case SUBST_PARENT: { @@ -319,20 +319,20 @@ subst: break; devnode = udev_device_get_devnode(dev_parent); if (devnode != NULL) - l = util_strpcpy(&s, l, devnode + strlen("/dev/")); + l = strpcpy(&s, l, devnode + strlen("/dev/")); break; } case SUBST_DEVNODE: if (udev_device_get_devnode(dev) != NULL) - l = util_strpcpy(&s, l, udev_device_get_devnode(dev)); + l = strpcpy(&s, l, udev_device_get_devnode(dev)); break; case SUBST_NAME: if (event->name != NULL) - l = util_strpcpy(&s, l, event->name); + l = strpcpy(&s, l, event->name); else if (udev_device_get_devnode(dev) != NULL) - l = util_strpcpy(&s, l, udev_device_get_devnode(dev) + strlen("/dev/")); + l = strpcpy(&s, l, udev_device_get_devnode(dev) + strlen("/dev/")); else - l = util_strpcpy(&s, l, udev_device_get_sysname(dev)); + l = strpcpy(&s, l, udev_device_get_sysname(dev)); break; case SUBST_LINKS: { struct udev_list_entry *list_entry; @@ -340,16 +340,16 @@ subst: list_entry = udev_device_get_devlinks_list_entry(dev); if (list_entry == NULL) break; - l = util_strpcpy(&s, l, udev_list_entry_get_name(list_entry) + strlen("/dev/")); + l = strpcpy(&s, l, udev_list_entry_get_name(list_entry) + strlen("/dev/")); udev_list_entry_foreach(list_entry, udev_list_entry_get_next(list_entry)) - l = util_strpcpyl(&s, l, " ", udev_list_entry_get_name(list_entry) + strlen("/dev/"), NULL); + l = strpcpyl(&s, l, " ", udev_list_entry_get_name(list_entry) + strlen("/dev/"), NULL); break; } case SUBST_ROOT: - l = util_strpcpy(&s, l, "/dev"); + l = strpcpy(&s, l, "/dev"); break; case SUBST_SYS: - l = util_strpcpy(&s, l, "/sys"); + l = strpcpy(&s, l, "/sys"); break; case SUBST_ENV: if (attr == NULL) { @@ -360,7 +360,7 @@ subst: value = udev_device_get_property_value(event->dev, attr); if (value == NULL) break; - l = util_strpcpy(&s, l, value); + l = strpcpy(&s, l, value); break; } default: @@ -667,7 +667,7 @@ int udev_event_spawn(struct udev_event *event, char program[UTIL_PATH_SIZE]; int err = 0; - util_strscpy(arg, sizeof(arg), cmd); + strscpy(arg, sizeof(arg), cmd); udev_build_argv(event->udev, arg, NULL, argv); /* pipes from child to parent */ @@ -688,7 +688,7 @@ int udev_event_spawn(struct udev_event *event, /* allow programs in /usr/lib/udev/ to be called without the path */ if (argv[0][0] != '/') { - util_strscpyl(program, sizeof(program), UDEVLIBEXECDIR "/", argv[0], NULL); + strscpyl(program, sizeof(program), UDEVLIBEXECDIR "/", argv[0], NULL); argv[0] = program; } @@ -763,8 +763,8 @@ static int rename_netif(struct udev_event *event) } memset(&ifr, 0x00, sizeof(struct ifreq)); - util_strscpy(ifr.ifr_name, IFNAMSIZ, udev_device_get_sysname(dev)); - util_strscpy(ifr.ifr_newname, IFNAMSIZ, event->name); + strscpy(ifr.ifr_name, IFNAMSIZ, udev_device_get_sysname(dev)); + strscpy(ifr.ifr_newname, IFNAMSIZ, event->name); err = ioctl(sk, SIOCSIFNAME, &ifr); if (err >= 0) { print_kmsg("renamed network interface %s to %s\n", ifr.ifr_name, ifr.ifr_newname); @@ -825,11 +825,11 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, udev_device_add_property(dev, "INTERFACE_OLD", udev_device_get_sysname(dev)); /* now change the devpath, because the kernel device name has changed */ - util_strscpy(syspath, sizeof(syspath), udev_device_get_syspath(dev)); + strscpy(syspath, sizeof(syspath), udev_device_get_syspath(dev)); pos = strrchr(syspath, '/'); if (pos != NULL) { pos++; - util_strscpy(pos, sizeof(syspath) - (pos - syspath), event->name); + strscpy(pos, sizeof(syspath) - (pos - syspath), event->name); udev_device_set_syspath(event->dev, syspath); udev_device_add_property(dev, "INTERFACE", udev_device_get_sysname(dev)); log_debug("changed devpath to '%s'\n", udev_device_get_devpath(dev)); diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c index 1e378adf29..3eec14021b 100644 --- a/src/udev/udev-node.c +++ b/src/udev/udev-node.c @@ -55,10 +55,10 @@ static int node_symlink(struct udev *udev, const char *node, const char *slink) l = sizeof(target); while (slink[i] != '\0') { if (slink[i] == '/') - l = util_strpcpy(&s, l, "../"); + l = strpcpy(&s, l, "../"); i++; } - l = util_strscpy(s, l, &node[tail]); + l = strscpy(s, l, &node[tail]); if (l == 0) { err = -EINVAL; goto exit; @@ -101,7 +101,7 @@ static int node_symlink(struct udev *udev, const char *node, const char *slink) } log_debug("atomically replace '%s'\n", slink); - util_strscpyl(slink_tmp, sizeof(slink_tmp), slink, TMP_FILE_EXT, NULL); + strscpyl(slink_tmp, sizeof(slink_tmp), slink, TMP_FILE_EXT, NULL); unlink(slink_tmp); do { err = mkdir_parents_label(slink_tmp, 0755); @@ -136,7 +136,7 @@ static const char *link_find_prioritized(struct udev_device *dev, bool add, cons if (add) { priority = udev_device_get_devlink_priority(dev); - util_strscpy(buf, bufsize, udev_device_get_devnode(dev)); + strscpy(buf, bufsize, udev_device_get_devnode(dev)); target = buf; } @@ -169,7 +169,7 @@ static const char *link_find_prioritized(struct udev_device *dev, bool add, cons log_debug("'%s' claims priority %i for '%s'\n", udev_device_get_syspath(dev_db), udev_device_get_devlink_priority(dev_db), stackdir); priority = udev_device_get_devlink_priority(dev_db); - util_strscpy(buf, bufsize, devnode); + strscpy(buf, bufsize, devnode); target = buf; } } @@ -191,8 +191,8 @@ static void link_update(struct udev_device *dev, const char *slink, bool add) char buf[UTIL_PATH_SIZE]; util_path_encode(slink + strlen("/dev"), name_enc, sizeof(name_enc)); - util_strscpyl(dirname, sizeof(dirname), "/run/udev/links/", name_enc, NULL); - util_strscpyl(filename, sizeof(filename), dirname, "/", udev_device_get_id_filename(dev), NULL); + strscpyl(dirname, sizeof(dirname), "/run/udev/links/", name_enc, NULL); + strscpyl(filename, sizeof(filename), dirname, "/", udev_device_get_id_filename(dev), NULL); if (!add && unlink(filename) == 0) rmdir(dirname); diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index 9743243a37..bb57d2af48 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -600,7 +600,7 @@ static int import_property_from_string(struct udev_device *dev, char *line) log_debug("updating devpath from '%s' to '%s'\n", udev_device_get_devpath(dev), val); - util_strscpyl(syspath, sizeof(syspath), "/sys", val, NULL); + strscpyl(syspath, sizeof(syspath), "/sys", val, NULL); udev_device_set_syspath(dev, syspath); } else { struct udev_list_entry *entry; @@ -691,8 +691,8 @@ static int wait_for_file(struct udev_device *dev, const char *file, int timeout) /* a relative path is a device attribute */ devicepath[0] = '\0'; if (file[0] != '/') { - util_strscpyl(devicepath, sizeof(devicepath), udev_device_get_syspath(dev), NULL); - util_strscpyl(filepath, sizeof(filepath), devicepath, "/", file, NULL); + strscpyl(devicepath, sizeof(devicepath), udev_device_get_syspath(dev), NULL); + strscpyl(filepath, sizeof(filepath), devicepath, "/", file, NULL); file = filepath; } @@ -726,7 +726,7 @@ static int attr_subst_subdir(char *attr, size_t len) const char *tail; DIR *dir; - util_strscpy(dirname, sizeof(dirname), attr); + strscpy(dirname, sizeof(dirname), attr); pos = strstr(dirname, "/*/"); if (pos == NULL) return -1; @@ -741,7 +741,7 @@ static int attr_subst_subdir(char *attr, size_t len) if (dent->d_name[0] == '.') continue; - util_strscpyl(attr, len, dirname, "/", dent->d_name, tail, NULL); + strscpyl(attr, len, dirname, "/", dent->d_name, tail, NULL); if (stat(attr, &stats) == 0) { found = true; break; @@ -1752,7 +1752,7 @@ static int match_key(struct udev_rules *rules, struct token *token, const char * { char value[UTIL_PATH_SIZE]; - util_strscpy(value, sizeof(value), rules_str(rules, token->key.value_off)); + strscpy(value, sizeof(value), rules_str(rules, token->key.value_off)); key_value = value; while (key_value != NULL) { pos = strchr(key_value, '|'); @@ -1819,7 +1819,7 @@ static int match_attr(struct udev_rules *rules, struct udev_device *dev, struct klen = strlen(key_value); if (klen > 0 && !isspace(key_value[klen-1])) { if (value != vbuf) { - util_strscpy(vbuf, sizeof(vbuf), value); + strscpy(vbuf, sizeof(vbuf), value); value = vbuf; } while (len > 0 && isspace(vbuf[--len])) @@ -2015,8 +2015,8 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event if (filename[0] != '/') { char tmp[UTIL_PATH_SIZE]; - util_strscpy(tmp, sizeof(tmp), filename); - util_strscpyl(filename, sizeof(filename), + strscpy(tmp, sizeof(tmp), filename); + strscpyl(filename, sizeof(filename), udev_device_get_syspath(event->dev), "/", tmp, NULL); } } @@ -2328,7 +2328,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event /* append value separated by space */ udev_event_apply_format(event, value, temp, sizeof(temp)); - util_strscpyl(value_new, sizeof(value_new), value_old, " ", temp, NULL); + strscpyl(value_new, sizeof(value_new), value_old, " ", temp, NULL); } else udev_event_apply_format(event, value, value_new, sizeof(value_new)); @@ -2419,7 +2419,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event next[0] = '\0'; log_debug("LINK '%s' %s:%u\n", pos, rules_str(rules, rule->rule.filename_off), rule->rule.filename_line); - util_strscpyl(filename, sizeof(filename), "/dev/", pos, NULL); + strscpyl(filename, sizeof(filename), "/dev/", pos, NULL); udev_device_add_devlink(event->dev, filename); while (isspace(next[1])) next++; @@ -2429,7 +2429,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event if (pos[0] != '\0') { log_debug("LINK '%s' %s:%u\n", pos, rules_str(rules, rule->rule.filename_off), rule->rule.filename_line); - util_strscpyl(filename, sizeof(filename), "/dev/", pos, NULL); + strscpyl(filename, sizeof(filename), "/dev/", pos, NULL); udev_device_add_devlink(event->dev, filename); } break; @@ -2441,7 +2441,7 @@ int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event FILE *f; if (util_resolve_subsys_kernel(event->udev, key_name, attr, sizeof(attr), 0) != 0) - util_strscpyl(attr, sizeof(attr), udev_device_get_syspath(event->dev), "/", key_name, NULL); + strscpyl(attr, sizeof(attr), udev_device_get_syspath(event->dev), "/", key_name, NULL); attr_subst_subdir(attr, sizeof(attr)); udev_event_apply_format(event, rules_str(rules, cur->key.value_off), value, sizeof(value)); @@ -2539,7 +2539,7 @@ void udev_rules_apply_static_dev_perms(struct udev_rules *rules) /* we assure, that the permissions tokens are sorted before the static token */ if (mode == 0 && uid == 0 && gid == 0) goto next; - util_strscpyl(filename, sizeof(filename), "/dev/", rules_str(rules, cur->key.value_off), NULL); + strscpyl(filename, sizeof(filename), "/dev/", rules_str(rules, cur->key.value_off), NULL); if (stat(filename, &stats) != 0) goto next; if (!S_ISBLK(stats.st_mode) && !S_ISCHR(stats.st_mode)) diff --git a/src/udev/udevadm-info.c b/src/udev/udevadm-info.c index 95f077ca95..d6f82869b1 100644 --- a/src/udev/udevadm-info.c +++ b/src/udev/udevadm-info.c @@ -269,7 +269,7 @@ static struct udev_device *find_device(struct udev *udev, const char *id, const char name[UTIL_PATH_SIZE]; if (prefix && !startswith(id, prefix)) { - util_strscpyl(name, sizeof(name), prefix, id, NULL); + strscpyl(name, sizeof(name), prefix, id, NULL); id = name; } @@ -414,7 +414,7 @@ static int uinfo(struct udev *udev, int argc, char *argv[]) break; case 'd': action = ACTION_DEVICE_ID_FILE; - util_strscpy(name, sizeof(name), optarg); + strscpy(name, sizeof(name), optarg); break; case 'a': action = ACTION_ATTRIBUTE_WALK; diff --git a/src/udev/udevadm-monitor.c b/src/udev/udevadm-monitor.c index ffa70d8300..a390ee6c34 100644 --- a/src/udev/udevadm-monitor.c +++ b/src/udev/udevadm-monitor.c @@ -116,7 +116,7 @@ static int adm_monitor(struct udev *udev, int argc, char *argv[]) char subsys[UTIL_NAME_SIZE]; char *devtype; - util_strscpy(subsys, sizeof(subsys), optarg); + strscpy(subsys, sizeof(subsys), optarg); devtype = strchr(subsys, '/'); if (devtype != NULL) { devtype[0] = '\0'; diff --git a/src/udev/udevadm-test-builtin.c b/src/udev/udevadm-test-builtin.c index 9853d83b49..f4aa21ee72 100644 --- a/src/udev/udevadm-test-builtin.c +++ b/src/udev/udevadm-test-builtin.c @@ -96,9 +96,9 @@ static int adm_builtin(struct udev *udev, int argc, char *argv[]) /* add /sys if needed */ if (!startswith(syspath, "/sys")) - util_strscpyl(filename, sizeof(filename), "/sys", syspath, NULL); + strscpyl(filename, sizeof(filename), "/sys", syspath, NULL); else - util_strscpy(filename, sizeof(filename), syspath); + strscpy(filename, sizeof(filename), syspath); util_remove_trailing_chars(filename, '/'); dev = udev_device_new_from_syspath(udev, filename); diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c index 2d8aa7913e..f22a2c32cc 100644 --- a/src/udev/udevadm-test.c +++ b/src/udev/udevadm-test.c @@ -113,9 +113,9 @@ static int adm_test(struct udev *udev, int argc, char *argv[]) /* add /sys if needed */ if (!startswith(syspath, "/sys")) - util_strscpyl(filename, sizeof(filename), "/sys", syspath, NULL); + strscpyl(filename, sizeof(filename), "/sys", syspath, NULL); else - util_strscpy(filename, sizeof(filename), syspath); + strscpy(filename, sizeof(filename), syspath); util_remove_trailing_chars(filename, '/'); dev = udev_device_new_from_syspath(udev, filename); diff --git a/src/udev/udevadm-trigger.c b/src/udev/udevadm-trigger.c index d52ae461fe..4d96a786c3 100644 --- a/src/udev/udevadm-trigger.c +++ b/src/udev/udevadm-trigger.c @@ -48,7 +48,7 @@ static void exec_list(struct udev_enumerate *udev_enumerate, const char *action) printf("%s\n", udev_list_entry_get_name(entry)); if (dry_run) continue; - util_strscpyl(filename, sizeof(filename), udev_list_entry_get_name(entry), "/uevent", NULL); + strscpyl(filename, sizeof(filename), udev_list_entry_get_name(entry), "/uevent", NULL); fd = open(filename, O_WRONLY); if (fd < 0) continue; @@ -62,7 +62,7 @@ static const char *keyval(const char *str, const char **val, char *buf, size_t s { char *pos; - util_strscpy(buf, size,str); + strscpy(buf, size,str); pos = strchr(buf, '='); if (pos != NULL) { pos[0] = 0; @@ -165,9 +165,9 @@ static int adm_trigger(struct udev *udev, int argc, char *argv[]) /* add sys dir if needed */ if (!startswith(optarg, "/sys")) - util_strscpyl(path, sizeof(path), "/sys", optarg, NULL); + strscpyl(path, sizeof(path), "/sys", optarg, NULL); else - util_strscpy(path, sizeof(path), optarg); + strscpy(path, sizeof(path), optarg); util_remove_trailing_chars(path, '/'); dev = udev_device_new_from_syspath(udev, path); if (dev == NULL) { diff --git a/src/udev/udevd.c b/src/udev/udevd.c index ffc48a03bd..9f184621ae 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -726,7 +726,7 @@ static int handle_inotify(struct udev *udev) int fd; log_debug("device %s closed, synthesising 'change'\n", udev_device_get_devnode(dev)); - util_strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL); + strscpyl(filename, sizeof(filename), udev_device_get_syspath(dev), "/uevent", NULL); fd = open(filename, O_WRONLY); if (fd >= 0) { if (write(fd, "change", 6) < 0) @@ -813,7 +813,7 @@ static void static_dev_create_from_modules(struct udev *udev) FILE *f; uname(&kernel); - util_strscpyl(modules, sizeof(modules), ROOTPREFIX "/lib/modules/", kernel.release, "/modules.devname", NULL); + strscpyl(modules, sizeof(modules), ROOTPREFIX "/lib/modules/", kernel.release, "/modules.devname", NULL); f = fopen(modules, "re"); if (f == NULL) return; @@ -860,7 +860,7 @@ static void static_dev_create_from_modules(struct udev *udev) else continue; - util_strscpyl(filename, sizeof(filename), "/dev/", devname, NULL); + strscpyl(filename, sizeof(filename), "/dev/", devname, NULL); mkdir_parents_label(filename, 0755); label_context_set(filename, mode); log_debug("mknod '%s' %c%u:%u\n", filename, type, maj, min); @@ -909,7 +909,7 @@ static int convert_db(struct udev *udev) mkdir_p("/run/udev/data", 0755); /* old database */ - util_strscpyl(filename, sizeof(filename), "/dev/.udev/db", NULL); + strscpyl(filename, sizeof(filename), "/dev/.udev/db", NULL); if (access(filename, F_OK) < 0) return 0; @@ -938,7 +938,7 @@ static int convert_db(struct udev *udev) /* find database in old location */ id = udev_device_get_id_filename(device); - util_strscpyl(from, sizeof(from), "/dev/.udev/db/", id, NULL); + strscpyl(from, sizeof(from), "/dev/.udev/db/", id, NULL); if (lstat(from, &stats) == 0) { if (!have_db) { udev_device_read_db(device, from); @@ -948,7 +948,7 @@ static int convert_db(struct udev *udev) } /* find old database with $subsys:$sysname name */ - util_strscpyl(from, sizeof(from), "/dev/.udev/db/", + strscpyl(from, sizeof(from), "/dev/.udev/db/", udev_device_get_subsystem(device), ":", udev_device_get_sysname(device), NULL); if (lstat(from, &stats) == 0) { if (!have_db) { @@ -960,7 +960,7 @@ static int convert_db(struct udev *udev) /* find old database with the encoded devpath name */ util_path_encode(udev_device_get_devpath(device), devpath, sizeof(devpath)); - util_strscpyl(from, sizeof(from), "/dev/.udev/db/", devpath, NULL); + strscpyl(from, sizeof(from), "/dev/.udev/db/", devpath, NULL); if (lstat(from, &stats) == 0) { if (!have_db) { udev_device_read_db(device, from); -- cgit v1.2.1 From 99f861310d3f05f4e86cb9582a94b891dbb3382b Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 9 Jan 2013 19:14:44 +0100 Subject: timedated: remove left-over distribution specific code --- src/timedate/timedated.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index fdb4335464..f5430e9f78 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -176,14 +176,6 @@ static int read_data(void) { } } -#ifdef HAVE_DEBIAN - r = read_one_line_file("/etc/timezone", &tz.zone); - if (r < 0) { - if (r != -ENOENT) - log_warning("Failed to read /etc/timezone: %s", strerror(-r)); - } -#endif - have_timezone: if (isempty(tz.zone)) { free(tz.zone); -- cgit v1.2.1 From b929bf049d33823dedb1ab2e2ac688cd341792fb Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Wed, 9 Jan 2013 21:03:11 +0100 Subject: tabs to spaces Skipped bootchart and various files that looked like they should be kept in sync with external sources. --- src/analyze/systemd-analyze.in | 6 +++--- src/core/execute.c | 2 +- src/core/mount.c | 6 +++--- src/fstab-generator/fstab-generator.c | 4 ++-- src/udev/scsi_id/scsi_serial.c | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/analyze/systemd-analyze.in b/src/analyze/systemd-analyze.in index bcced18c2c..e964bb3367 100755 --- a/src/analyze/systemd-analyze.in +++ b/src/analyze/systemd-analyze.in @@ -322,7 +322,7 @@ else: bus = Gio.BusType.SYSTEM verb = {'time' : time, - 'blame': blame, - 'plot' : plot, - } + 'blame': blame, + 'plot' : plot, + } verb.get(args.action)() diff --git a/src/core/execute.c b/src/core/execute.c index 7dc15044b4..9718e43a70 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -1827,7 +1827,7 @@ void exec_context_dump(ExecContext *c, FILE* f, const char *prefix) { prefix, c->cpu_sched_priority, prefix, yes_no(c->cpu_sched_reset_on_fork)); free(policy_str); - } + } if (c->cpuset) { fprintf(f, "%sCPUAffinity:", prefix); diff --git a/src/core/mount.c b/src/core/mount.c index 5d2b010013..25bc7e197a 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -717,9 +717,9 @@ static void mount_set_state(Mount *m, MountState state) { state == MOUNT_UNMOUNTING_SIGTERM || state == MOUNT_UNMOUNTING_SIGKILL || state == MOUNT_FAILED) { - if (state != old_state) - mount_notify_automount(m, -ENODEV); - } + if (state != old_state) + mount_notify_automount(m, -ENODEV); + } if (state != old_state) log_debug_unit(UNIT(m)->id, diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index f3ecc24be6..2b67bb612d 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -451,8 +451,8 @@ static int parse_new_root_from_proc_cmdline(void) { if (!opts || !type) return log_oom(); - /* root= and roofstype= may occur more than once, the last instance should take precedence. - * In the case of multiple rootflags= the arguments should be concatenated */ + /* root= and roofstype= may occur more than once, the last instance should take precedence. + * In the case of multiple rootflags= the arguments should be concatenated */ FOREACH_WORD_QUOTED(w, l, line, state) { char *word, *tmp_word; diff --git a/src/udev/scsi_id/scsi_serial.c b/src/udev/scsi_id/scsi_serial.c index 3c52dee62d..950b8adc0a 100644 --- a/src/udev/scsi_id/scsi_serial.c +++ b/src/udev/scsi_id/scsi_serial.c @@ -799,7 +799,7 @@ static int do_scsi_page80_inquiry(struct udev *udev, ser_ind = prepend_vendor_model(udev, dev_scsi, &serial[1]); if (ser_ind < 0) return 1; - ser_ind++; /* for the leading 'S' */ + ser_ind++; /* for the leading 'S' */ for (i = 4; i < len + 4; i++, ser_ind++) serial[ser_ind] = buf[i]; } -- cgit v1.2.1 From 1959c6ce940786d33f91e19c41441bf4c9f6a768 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Wed, 9 Jan 2013 21:25:02 +0100 Subject: man/systemd-bootchart.xml: fix typo --- man/systemd-bootchart.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml index 4d53824d46..8c4d7cc1dc 100644 --- a/man/systemd-bootchart.xml +++ b/man/systemd-bootchart.xml @@ -100,7 +100,7 @@ Output Systemd-bootchart generates SVG graphs. In order to render these - on a graphica display any SVG capable viewer can be used. It should be + on a graphical display any SVG capable viewer can be used. It should be noted that the SVG render engines in most browsers (including Chrome and Firefox) are many times faster than dedicated graphical applications like Gimp and Inkscape. Just point your browser at "file:///var/log"! -- cgit v1.2.1 From e711d102df3d3eafec9c51edfbb302c0fd8583f0 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Thu, 10 Jan 2013 00:19:44 +0100 Subject: man/systemd.unit.xml: fix typos --- man/systemd.unit.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 8570815ad4..54671e7f19 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -961,8 +961,8 @@ an exclamation mark. ConditionACPower= - may may be used to check whether the - system has AC power, or is exlcusively + may be used to check whether the + system has AC power, or is exclusively battery powered at the time of activation of the unit. This takes a boolean argument. If set to -- cgit v1.2.1 From 28989b63f5e3a959557000f21f3891af08be40f7 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Wed, 9 Jan 2013 22:38:03 +0100 Subject: bootchart: tabs to spaces --- src/bootchart/bootchart.c | 564 ++++++------- src/bootchart/bootchart.h | 74 +- src/bootchart/log.c | 712 ++++++++--------- src/bootchart/svg.c | 1936 ++++++++++++++++++++++----------------------- 4 files changed, 1643 insertions(+), 1643 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 2eeb37ae53..3d77bab129 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -62,291 +62,291 @@ static struct rlimit rlim; static void signal_handler(int sig) { - if (sig++) - sig--; - exiting = 1; + if (sig++) + sig--; + exiting = 1; } int main(int argc, char *argv[]) { - struct sigaction sig; - struct ps_struct *ps; - char output_file[PATH_MAX]; - char datestr[200]; - time_t t; - FILE *f; - int gind; - int i; - - memset(&t, 0, sizeof(time_t)); - - rlim.rlim_cur = 4096; - rlim.rlim_max = 4096; - (void) setrlimit(RLIMIT_NOFILE, &rlim); - - f = fopen("/etc/systemd/bootchart.conf", "r"); - if (f) { - char buf[256]; - char *key; - char *val; - - while (fgets(buf, 80, f) != NULL) { - char *c; - - c = strchr(buf, '\n'); - if (c) *c = 0; /* remove trailing \n */ - - if (buf[0] == '#') - continue; /* comment line */ - - key = strtok(buf, "="); - if (!key) - continue; - val = strtok(NULL, "="); - if (!val) - continue; - - // todo: filter leading/trailing whitespace - - if (!strcmp(key, "samples")) - len = atoi(val); - if (!strcmp(key, "freq")) - hz = atof(val); - if (!strcmp(key, "rel")) - relative = atoi(val); - if (!strcmp(key, "filter")) - filter = atoi(val); - if (!strcmp(key, "pss")) - pss = atoi(val); - if (!strcmp(key, "output")) - strncpy(output_path, val, PATH_MAX - 1); - if (!strcmp(key, "init")) - strncpy(init_path, val, PATH_MAX - 1); - if (!strcmp(key, "scale_x")) - scale_x = atof(val); - if (!strcmp(key, "scale_y")) - scale_y = atof(val); - if (!strcmp(key, "entropy")) - entropy = atoi(val); - } - fclose(f); - } - - while (1) { - static struct option opts[] = { - {"rel", 0, NULL, 'r'}, - {"freq", 1, NULL, 'f'}, - {"samples", 1, NULL, 'n'}, - {"pss", 0, NULL, 'p'}, - {"output", 1, NULL, 'o'}, - {"init", 1, NULL, 'i'}, - {"filter", 0, NULL, 'F'}, - {"help", 0, NULL, 'h'}, - {"scale-x", 1, NULL, 'x'}, - {"scale-y", 1, NULL, 'y'}, - {"entropy", 0, NULL, 'e'}, - {NULL, 0, NULL, 0} - }; - - gind = 0; - - i = getopt_long(argc, argv, "erpf:n:o:i:Fhx:y:", opts, &gind); - if (i == -1) - break; - switch (i) { - case 'r': - relative = 1; - break; - case 'f': - hz = atof(optarg); - break; - case 'F': - filter = 0; - break; - case 'n': - len = atoi(optarg); - break; - case 'o': - strncpy(output_path, optarg, PATH_MAX - 1); - break; - case 'i': - strncpy(init_path, optarg, PATH_MAX - 1); - break; - case 'p': - pss = 1; - break; - case 'x': - scale_x = atof(optarg); - break; - case 'y': - scale_y = atof(optarg); - break; - case 'e': - entropy = 1; - break; - case 'h': - fprintf(stderr, "Usage: %s [OPTIONS]\n", argv[0]); - fprintf(stderr, " --rel, -r Record time relative to recording\n"); - fprintf(stderr, " --freq, -f N Sample frequency [%f]\n", hz); - fprintf(stderr, " --samples, -n N Stop sampling at [%d] samples\n", len); - fprintf(stderr, " --scale-x, -x N Scale the graph horizontally [%f] \n", scale_x); - fprintf(stderr, " --scale-y, -y N Scale the graph vertically [%f] \n", scale_y); - fprintf(stderr, " --pss, -p Enable PSS graph (CPU intensive)\n"); - fprintf(stderr, " --entropy, -e Enable the entropy_avail graph\n"); - fprintf(stderr, " --output, -o [PATH] Path to output files [%s]\n", output_path); - fprintf(stderr, " --init, -i [PATH] Path to init executable [%s]\n", init_path); - fprintf(stderr, " --filter, -F Disable filtering of processes from the graph\n"); - fprintf(stderr, " that are of less importance or short-lived\n"); - fprintf(stderr, " --help, -h Display this message\n"); - fprintf(stderr, "See the installed README and bootchartd.conf.example for more information.\n"); - exit (EXIT_SUCCESS); - break; - default: - break; - } - } - - if (len > MAXSAMPLES) { - fprintf(stderr, "Error: samples exceeds maximum\n"); - exit(EXIT_FAILURE); - } - - if (hz <= 0.0) { - fprintf(stderr, "Error: Frequency needs to be > 0\n"); - exit(EXIT_FAILURE); - } - - /* - * If the kernel executed us through init=/sbin/bootchartd, then - * fork: - * - parent execs executable specified via init_path[] (/sbin/init by default) as pid=1 - * - child logs data - */ - if (getpid() == 1) { - if (fork()) { - /* parent */ - execl(init_path, init_path, NULL); - } - } - - /* start with empty ps LL */ - ps_first = malloc(sizeof(struct ps_struct)); - if (!ps_first) { - perror("malloc(ps_struct)"); - exit(EXIT_FAILURE); - } - memset(ps_first, 0, sizeof(struct ps_struct)); - - /* handle TERM/INT nicely */ - memset(&sig, 0, sizeof(struct sigaction)); - sig.sa_handler = signal_handler; - sigaction(SIGHUP, &sig, NULL); - - interval = (1.0 / hz) * 1000000000.0; - - log_uptime(); - - /* main program loop */ - while (!exiting) { - int res; - double sample_stop; - struct timespec req; - time_t newint_s; - long newint_ns; - double elapsed; - double timeleft; - - sampletime[samples] = gettime_ns(); - - /* wait for /proc to become available, discarding samples */ - if (!(graph_start > 0.0)) - log_uptime(); - else - log_sample(samples); - - sample_stop = gettime_ns(); - - elapsed = (sample_stop - sampletime[samples]) * 1000000000.0; - timeleft = interval - elapsed; - - newint_s = (time_t)(timeleft / 1000000000.0); - newint_ns = (long)(timeleft - (newint_s * 1000000000.0)); - - /* - * check if we have not consumed our entire timeslice. If we - * do, don't sleep and take a new sample right away. - * we'll lose all the missed samples and overrun our total - * time - */ - if ((newint_ns > 0) || (newint_s > 0)) { - req.tv_sec = newint_s; - req.tv_nsec = newint_ns; - - res = nanosleep(&req, NULL); - if (res) { - if (errno == EINTR) { - /* caught signal, probably HUP! */ - break; - } - perror("nanosleep()"); - exit (EXIT_FAILURE); - } - } else { - overrun++; - /* calculate how many samples we lost and scrap them */ - len = len + ((int)(newint_ns / interval)); - } - - samples++; - - if (samples > len) - break; - - } - - /* do some cleanup, close fd's */ - ps = ps_first; - while (ps->next_ps) { - ps = ps->next_ps; - if (ps->schedstat) - close(ps->schedstat); - if (ps->sched) - close(ps->sched); - if (ps->smaps) - fclose(ps->smaps); - } - closedir(proc); - - t = time(NULL); - strftime(datestr, sizeof(datestr), "%Y%m%d-%H%M", localtime(&t)); - snprintf(output_file, PATH_MAX, "%s/bootchart-%s.svg", output_path, datestr); - - of = fopen(output_file, "w"); - if (!of) { - perror("open output_file"); - exit (EXIT_FAILURE); - } - - svg_do(); - - fprintf(stderr, "bootchartd: Wrote %s\n", output_file); - fclose(of); - - /* nitpic cleanups */ - ps = ps_first; - while (ps->next_ps) { - struct ps_struct *old = ps; - ps = ps->next_ps; - free(old->sample); - free(old); - } - free(ps->sample); - free(ps); - - /* don't complain when overrun once, happens most commonly on 1st sample */ - if (overrun > 1) - fprintf(stderr, "bootchartd: Warning: sample time overrun %i times\n", overrun); - - return 0; + struct sigaction sig; + struct ps_struct *ps; + char output_file[PATH_MAX]; + char datestr[200]; + time_t t; + FILE *f; + int gind; + int i; + + memset(&t, 0, sizeof(time_t)); + + rlim.rlim_cur = 4096; + rlim.rlim_max = 4096; + (void) setrlimit(RLIMIT_NOFILE, &rlim); + + f = fopen("/etc/systemd/bootchart.conf", "r"); + if (f) { + char buf[256]; + char *key; + char *val; + + while (fgets(buf, 80, f) != NULL) { + char *c; + + c = strchr(buf, '\n'); + if (c) *c = 0; /* remove trailing \n */ + + if (buf[0] == '#') + continue; /* comment line */ + + key = strtok(buf, "="); + if (!key) + continue; + val = strtok(NULL, "="); + if (!val) + continue; + + // todo: filter leading/trailing whitespace + + if (!strcmp(key, "samples")) + len = atoi(val); + if (!strcmp(key, "freq")) + hz = atof(val); + if (!strcmp(key, "rel")) + relative = atoi(val); + if (!strcmp(key, "filter")) + filter = atoi(val); + if (!strcmp(key, "pss")) + pss = atoi(val); + if (!strcmp(key, "output")) + strncpy(output_path, val, PATH_MAX - 1); + if (!strcmp(key, "init")) + strncpy(init_path, val, PATH_MAX - 1); + if (!strcmp(key, "scale_x")) + scale_x = atof(val); + if (!strcmp(key, "scale_y")) + scale_y = atof(val); + if (!strcmp(key, "entropy")) + entropy = atoi(val); + } + fclose(f); + } + + while (1) { + static struct option opts[] = { + {"rel", 0, NULL, 'r'}, + {"freq", 1, NULL, 'f'}, + {"samples", 1, NULL, 'n'}, + {"pss", 0, NULL, 'p'}, + {"output", 1, NULL, 'o'}, + {"init", 1, NULL, 'i'}, + {"filter", 0, NULL, 'F'}, + {"help", 0, NULL, 'h'}, + {"scale-x", 1, NULL, 'x'}, + {"scale-y", 1, NULL, 'y'}, + {"entropy", 0, NULL, 'e'}, + {NULL, 0, NULL, 0} + }; + + gind = 0; + + i = getopt_long(argc, argv, "erpf:n:o:i:Fhx:y:", opts, &gind); + if (i == -1) + break; + switch (i) { + case 'r': + relative = 1; + break; + case 'f': + hz = atof(optarg); + break; + case 'F': + filter = 0; + break; + case 'n': + len = atoi(optarg); + break; + case 'o': + strncpy(output_path, optarg, PATH_MAX - 1); + break; + case 'i': + strncpy(init_path, optarg, PATH_MAX - 1); + break; + case 'p': + pss = 1; + break; + case 'x': + scale_x = atof(optarg); + break; + case 'y': + scale_y = atof(optarg); + break; + case 'e': + entropy = 1; + break; + case 'h': + fprintf(stderr, "Usage: %s [OPTIONS]\n", argv[0]); + fprintf(stderr, " --rel, -r Record time relative to recording\n"); + fprintf(stderr, " --freq, -f N Sample frequency [%f]\n", hz); + fprintf(stderr, " --samples, -n N Stop sampling at [%d] samples\n", len); + fprintf(stderr, " --scale-x, -x N Scale the graph horizontally [%f] \n", scale_x); + fprintf(stderr, " --scale-y, -y N Scale the graph vertically [%f] \n", scale_y); + fprintf(stderr, " --pss, -p Enable PSS graph (CPU intensive)\n"); + fprintf(stderr, " --entropy, -e Enable the entropy_avail graph\n"); + fprintf(stderr, " --output, -o [PATH] Path to output files [%s]\n", output_path); + fprintf(stderr, " --init, -i [PATH] Path to init executable [%s]\n", init_path); + fprintf(stderr, " --filter, -F Disable filtering of processes from the graph\n"); + fprintf(stderr, " that are of less importance or short-lived\n"); + fprintf(stderr, " --help, -h Display this message\n"); + fprintf(stderr, "See the installed README and bootchartd.conf.example for more information.\n"); + exit (EXIT_SUCCESS); + break; + default: + break; + } + } + + if (len > MAXSAMPLES) { + fprintf(stderr, "Error: samples exceeds maximum\n"); + exit(EXIT_FAILURE); + } + + if (hz <= 0.0) { + fprintf(stderr, "Error: Frequency needs to be > 0\n"); + exit(EXIT_FAILURE); + } + + /* + * If the kernel executed us through init=/sbin/bootchartd, then + * fork: + * - parent execs executable specified via init_path[] (/sbin/init by default) as pid=1 + * - child logs data + */ + if (getpid() == 1) { + if (fork()) { + /* parent */ + execl(init_path, init_path, NULL); + } + } + + /* start with empty ps LL */ + ps_first = malloc(sizeof(struct ps_struct)); + if (!ps_first) { + perror("malloc(ps_struct)"); + exit(EXIT_FAILURE); + } + memset(ps_first, 0, sizeof(struct ps_struct)); + + /* handle TERM/INT nicely */ + memset(&sig, 0, sizeof(struct sigaction)); + sig.sa_handler = signal_handler; + sigaction(SIGHUP, &sig, NULL); + + interval = (1.0 / hz) * 1000000000.0; + + log_uptime(); + + /* main program loop */ + while (!exiting) { + int res; + double sample_stop; + struct timespec req; + time_t newint_s; + long newint_ns; + double elapsed; + double timeleft; + + sampletime[samples] = gettime_ns(); + + /* wait for /proc to become available, discarding samples */ + if (!(graph_start > 0.0)) + log_uptime(); + else + log_sample(samples); + + sample_stop = gettime_ns(); + + elapsed = (sample_stop - sampletime[samples]) * 1000000000.0; + timeleft = interval - elapsed; + + newint_s = (time_t)(timeleft / 1000000000.0); + newint_ns = (long)(timeleft - (newint_s * 1000000000.0)); + + /* + * check if we have not consumed our entire timeslice. If we + * do, don't sleep and take a new sample right away. + * we'll lose all the missed samples and overrun our total + * time + */ + if ((newint_ns > 0) || (newint_s > 0)) { + req.tv_sec = newint_s; + req.tv_nsec = newint_ns; + + res = nanosleep(&req, NULL); + if (res) { + if (errno == EINTR) { + /* caught signal, probably HUP! */ + break; + } + perror("nanosleep()"); + exit (EXIT_FAILURE); + } + } else { + overrun++; + /* calculate how many samples we lost and scrap them */ + len = len + ((int)(newint_ns / interval)); + } + + samples++; + + if (samples > len) + break; + + } + + /* do some cleanup, close fd's */ + ps = ps_first; + while (ps->next_ps) { + ps = ps->next_ps; + if (ps->schedstat) + close(ps->schedstat); + if (ps->sched) + close(ps->sched); + if (ps->smaps) + fclose(ps->smaps); + } + closedir(proc); + + t = time(NULL); + strftime(datestr, sizeof(datestr), "%Y%m%d-%H%M", localtime(&t)); + snprintf(output_file, PATH_MAX, "%s/bootchart-%s.svg", output_path, datestr); + + of = fopen(output_file, "w"); + if (!of) { + perror("open output_file"); + exit (EXIT_FAILURE); + } + + svg_do(); + + fprintf(stderr, "bootchartd: Wrote %s\n", output_file); + fclose(of); + + /* nitpic cleanups */ + ps = ps_first; + while (ps->next_ps) { + struct ps_struct *old = ps; + ps = ps->next_ps; + free(old->sample); + free(old); + } + free(ps->sample); + free(ps); + + /* don't complain when overrun once, happens most commonly on 1st sample */ + if (overrun > 1) + fprintf(stderr, "bootchartd: Warning: sample time overrun %i times\n", overrun); + + return 0; } diff --git a/src/bootchart/bootchart.h b/src/bootchart/bootchart.h index 0d8bed16b0..9127f92302 100644 --- a/src/bootchart/bootchart.h +++ b/src/bootchart/bootchart.h @@ -20,65 +20,65 @@ struct block_stat_struct { - /* /proc/vmstat pgpgin & pgpgout */ - int bi; - int bo; + /* /proc/vmstat pgpgin & pgpgout */ + int bi; + int bo; }; struct cpu_stat_sample_struct { - /* /proc/schedstat fields 10 & 11 (after name) */ - double runtime; - double waittime; + /* /proc/schedstat fields 10 & 11 (after name) */ + double runtime; + double waittime; }; struct cpu_stat_struct { - /* per cpu array */ - struct cpu_stat_sample_struct sample[MAXSAMPLES]; + /* per cpu array */ + struct cpu_stat_sample_struct sample[MAXSAMPLES]; }; /* per process, per sample data we will log */ struct ps_sched_struct { - /* /proc//schedstat fields 1 & 2 */ - double runtime; - double waittime; - int pss; + /* /proc//schedstat fields 1 & 2 */ + double runtime; + double waittime; + int pss; }; /* process info */ struct ps_struct { - struct ps_struct *next_ps; /* SLL pointer */ - struct ps_struct *parent; /* ppid ref */ - struct ps_struct *children; /* children */ - struct ps_struct *next; /* siblings */ + struct ps_struct *next_ps; /* SLL pointer */ + struct ps_struct *parent; /* ppid ref */ + struct ps_struct *children; /* children */ + struct ps_struct *next; /* siblings */ - /* must match - otherwise it's a new process with same PID */ - char name[16]; - int pid; - int ppid; + /* must match - otherwise it's a new process with same PID */ + char name[16]; + int pid; + int ppid; - /* cache fd's */ - int sched; - int schedstat; - FILE *smaps; + /* cache fd's */ + int sched; + int schedstat; + FILE *smaps; - /* index to first/last seen timestamps */ - int first; - int last; + /* index to first/last seen timestamps */ + int first; + int last; - /* records actual start time, may be way before bootchart runs */ - double starttime; + /* records actual start time, may be way before bootchart runs */ + double starttime; - /* record human readable total cpu time */ - double total; + /* record human readable total cpu time */ + double total; - /* largest PSS size found */ - int pss_max; + /* largest PSS size found */ + int pss_max; - /* for drawing connection lines later */ - double pos_x; - double pos_y; + /* for drawing connection lines later */ + double pos_x; + double pos_y; - struct ps_sched_struct *sample; + struct ps_sched_struct *sample; }; extern int entropy_avail[]; diff --git a/src/bootchart/log.c b/src/bootchart/log.c index 6c40913973..eda001a20e 100644 --- a/src/bootchart/log.c +++ b/src/bootchart/log.c @@ -38,383 +38,383 @@ DIR *proc; double gettime_ns(void) { - struct timespec now; + struct timespec now; - clock_gettime(CLOCK_MONOTONIC, &now); + clock_gettime(CLOCK_MONOTONIC, &now); - return (now.tv_sec + (now.tv_nsec / 1000000000.0)); + return (now.tv_sec + (now.tv_nsec / 1000000000.0)); } void log_uptime(void) { - FILE *f; - char str[32]; - double uptime; - - f = fopen("/proc/uptime", "r"); - if (!f) - return; - if (!fscanf(f, "%s %*s", str)) { - fclose(f); - return; - } - fclose(f); - uptime = strtod(str, NULL); - - log_start = gettime_ns(); - - /* start graph at kernel boot time */ - if (relative) - graph_start = log_start; - else - graph_start = log_start - uptime; + FILE *f; + char str[32]; + double uptime; + + f = fopen("/proc/uptime", "r"); + if (!f) + return; + if (!fscanf(f, "%s %*s", str)) { + fclose(f); + return; + } + fclose(f); + uptime = strtod(str, NULL); + + log_start = gettime_ns(); + + /* start graph at kernel boot time */ + if (relative) + graph_start = log_start; + else + graph_start = log_start - uptime; } static char *bufgetline(char *buf) { - char *c; + char *c; - if (!buf) - return NULL; + if (!buf) + return NULL; - c = strchr(buf, '\n'); - if (c) - c++; - return c; + c = strchr(buf, '\n'); + if (c) + c++; + return c; } void log_sample(int sample) { - static int vmstat; - static int schedstat; - FILE *st; - char buf[4095]; - char key[256]; - char val[256]; - char rt[256]; - char wt[256]; - char *m; - int c; - int p; - int mod; - static int e_fd; - ssize_t s; - ssize_t n; - struct dirent *ent; - - if (!vmstat) { - /* block stuff */ - vmstat = open("/proc/vmstat", O_RDONLY); - if (vmstat == -1) { - perror("open /proc/vmstat"); - exit (EXIT_FAILURE); - } - } - - n = pread(vmstat, buf, sizeof(buf) - 1, 0); - if (n <= 0) { - close(vmstat); - return; - } - buf[n] = '\0'; - - m = buf; - while (m) { - if (sscanf(m, "%s %s", key, val) < 2) - goto vmstat_next; - if (!strcmp(key, "pgpgin")) - blockstat[sample].bi = atoi(val); - if (!strcmp(key, "pgpgout")) { - blockstat[sample].bo = atoi(val); - break; - } + static int vmstat; + static int schedstat; + FILE *st; + char buf[4095]; + char key[256]; + char val[256]; + char rt[256]; + char wt[256]; + char *m; + int c; + int p; + int mod; + static int e_fd; + ssize_t s; + ssize_t n; + struct dirent *ent; + + if (!vmstat) { + /* block stuff */ + vmstat = open("/proc/vmstat", O_RDONLY); + if (vmstat == -1) { + perror("open /proc/vmstat"); + exit (EXIT_FAILURE); + } + } + + n = pread(vmstat, buf, sizeof(buf) - 1, 0); + if (n <= 0) { + close(vmstat); + return; + } + buf[n] = '\0'; + + m = buf; + while (m) { + if (sscanf(m, "%s %s", key, val) < 2) + goto vmstat_next; + if (!strcmp(key, "pgpgin")) + blockstat[sample].bi = atoi(val); + if (!strcmp(key, "pgpgout")) { + blockstat[sample].bo = atoi(val); + break; + } vmstat_next: - m = bufgetline(m); - if (!m) - break; - } - - if (!schedstat) { - /* overall CPU utilization */ - schedstat = open("/proc/schedstat", O_RDONLY); - if (schedstat == -1) { - perror("open /proc/schedstat"); - exit (EXIT_FAILURE); - } - } - - n = pread(schedstat, buf, sizeof(buf) - 1, 0); - if (n <= 0) { - close(schedstat); - return; - } - buf[n] = '\0'; - - m = buf; - while (m) { - if (sscanf(m, "%s %*s %*s %*s %*s %*s %*s %s %s", key, rt, wt) < 3) - goto schedstat_next; - - if (strstr(key, "cpu")) { - c = atoi((const char*)(key+3)); - if (c > MAXCPUS) - /* Oops, we only have room for MAXCPUS data */ - break; - cpustat[c].sample[sample].runtime = atoll(rt); - cpustat[c].sample[sample].waittime = atoll(wt); - - if (c == cpus) - cpus = c + 1; - } + m = bufgetline(m); + if (!m) + break; + } + + if (!schedstat) { + /* overall CPU utilization */ + schedstat = open("/proc/schedstat", O_RDONLY); + if (schedstat == -1) { + perror("open /proc/schedstat"); + exit (EXIT_FAILURE); + } + } + + n = pread(schedstat, buf, sizeof(buf) - 1, 0); + if (n <= 0) { + close(schedstat); + return; + } + buf[n] = '\0'; + + m = buf; + while (m) { + if (sscanf(m, "%s %*s %*s %*s %*s %*s %*s %s %s", key, rt, wt) < 3) + goto schedstat_next; + + if (strstr(key, "cpu")) { + c = atoi((const char*)(key+3)); + if (c > MAXCPUS) + /* Oops, we only have room for MAXCPUS data */ + break; + cpustat[c].sample[sample].runtime = atoll(rt); + cpustat[c].sample[sample].waittime = atoll(wt); + + if (c == cpus) + cpus = c + 1; + } schedstat_next: - m = bufgetline(m); - if (!m) - break; - } - - if (entropy) { - if (!e_fd) { - e_fd = open("/proc/sys/kernel/random/entropy_avail", O_RDONLY); - } - - if (e_fd) { - n = pread(e_fd, buf, sizeof(buf) - 1, 0); - if (n > 0) - entropy_avail[sample] = atoi(buf); - } - } - - /* all the per-process stuff goes here */ - if (!proc) { - /* find all processes */ - proc = opendir("/proc"); - if (!proc) - return; - } else { - rewinddir(proc); - } - - while ((ent = readdir(proc)) != NULL) { - char filename[PATH_MAX]; - int pid; - struct ps_struct *ps; - - if ((ent->d_name[0] < '0') || (ent->d_name[0] > '9')) - continue; - - pid = atoi(ent->d_name); - - if (pid >= MAXPIDS) - continue; - - ps = ps_first; - while (ps->next_ps) { - ps = ps->next_ps; - if (ps->pid == pid) - break; - } - - /* end of our LL? then append a new record */ - if (ps->pid != pid) { - char t[32]; - struct ps_struct *parent; - - ps->next_ps = malloc(sizeof(struct ps_struct)); - if (!ps->next_ps) { - perror("malloc(ps_struct)"); - exit (EXIT_FAILURE); - } - memset(ps->next_ps, 0, sizeof(struct ps_struct)); - ps = ps->next_ps; - ps->pid = pid; - - ps->sample = malloc(sizeof(struct ps_sched_struct) * (len + 1)); - if (!ps->sample) { - perror("malloc(ps_struct)"); - exit (EXIT_FAILURE); - } - memset(ps->sample, 0, sizeof(struct ps_sched_struct) * (len + 1)); - - pscount++; - - /* mark our first sample */ - ps->first = sample; - - /* get name, start time */ - if (!ps->sched) { - sprintf(filename, "/proc/%d/sched", pid); - ps->sched = open(filename, O_RDONLY); - if (ps->sched == -1) - continue; - } - - s = pread(ps->sched, buf, sizeof(buf) - 1, 0); - if (s <= 0) { - close(ps->sched); - continue; - } - - if (!sscanf(buf, "%s %*s %*s", key)) - continue; - - strncpy(ps->name, key, 16); - /* discard line 2 */ - m = bufgetline(buf); - if (!m) - continue; - - m = bufgetline(m); - if (!m) - continue; - - if (!sscanf(m, "%*s %*s %s", t)) - continue; - - ps->starttime = strtod(t, NULL) / 1000.0; - - /* ppid */ - sprintf(filename, "/proc/%d/stat", pid); - st = fopen(filename, "r"); - if (!st) - continue; - if (!fscanf(st, "%*s %*s %*s %i", &p)) { - fclose(st); - continue; - } - fclose(st); - ps->ppid = p; - - /* - * setup child pointers - * - * these are used to paint the tree coherently later - * each parent has a LL of children, and a LL of siblings - */ - if (pid == 1) - continue; /* nothing to do for init atm */ - - /* kthreadd has ppid=0, which breaks our tree ordering */ - if (ps->ppid == 0) - ps->ppid = 1; - - parent = ps_first; - while ((parent->next_ps && parent->pid != ps->ppid)) - parent = parent->next_ps; - - if ((!parent) || (parent->pid != ps->ppid)) { - /* orphan */ - ps->ppid = 1; - parent = ps_first->next_ps; - } - - ps->parent = parent; - - if (!parent->children) { - /* it's the first child */ - parent->children = ps; - } else { - /* walk all children and append */ - struct ps_struct *children; - children = parent->children; - while (children->next) - children = children->next; - children->next = ps; - } - } - - /* else -> found pid, append data in ps */ - - /* below here is all continuous logging parts - we get here on every - * iteration */ - - /* rt, wt */ - if (!ps->schedstat) { - sprintf(filename, "/proc/%d/schedstat", pid); - ps->schedstat = open(filename, O_RDONLY); - if (ps->schedstat == -1) - continue; - } - - if (pread(ps->schedstat, buf, sizeof(buf) - 1, 0) <= 0) { - /* clean up our file descriptors - assume that the process exited */ - close(ps->schedstat); - if (ps->sched) - close(ps->sched); - //if (ps->smaps) - // fclose(ps->smaps); - continue; - } - if (!sscanf(buf, "%s %s %*s", rt, wt)) - continue; - - ps->last = sample; - ps->sample[sample].runtime = atoll(rt); - ps->sample[sample].waittime = atoll(wt); - - ps->total = (ps->sample[ps->last].runtime - - ps->sample[ps->first].runtime) - / 1000000000.0; - - if (!pss) - goto catch_rename; - /* Pss */ - if (!ps->smaps) { - sprintf(filename, "/proc/%d/smaps", pid); - ps->smaps = fopen(filename, "r"); - if (!ps->smaps) - continue; - setvbuf(ps->smaps, smaps_buf, _IOFBF, sizeof(smaps_buf)); - } else { - rewind(ps->smaps); - } - - while (1) { - int pss_kb; - - /* skip one line, this contains the object mapped */ - if (fgets(buf, sizeof(buf), ps->smaps) == NULL) - break; - /* then there's a 28 char 14 line block */ - if (fread(buf, 1, 28 * 14, ps->smaps) != 28 * 14) - break; - - pss_kb = atoi(&buf[61]); - ps->sample[sample].pss += pss_kb; - } - - if (ps->sample[sample].pss > ps->pss_max) - ps->pss_max = ps->sample[sample].pss; + m = bufgetline(m); + if (!m) + break; + } + + if (entropy) { + if (!e_fd) { + e_fd = open("/proc/sys/kernel/random/entropy_avail", O_RDONLY); + } + + if (e_fd) { + n = pread(e_fd, buf, sizeof(buf) - 1, 0); + if (n > 0) + entropy_avail[sample] = atoi(buf); + } + } + + /* all the per-process stuff goes here */ + if (!proc) { + /* find all processes */ + proc = opendir("/proc"); + if (!proc) + return; + } else { + rewinddir(proc); + } + + while ((ent = readdir(proc)) != NULL) { + char filename[PATH_MAX]; + int pid; + struct ps_struct *ps; + + if ((ent->d_name[0] < '0') || (ent->d_name[0] > '9')) + continue; + + pid = atoi(ent->d_name); + + if (pid >= MAXPIDS) + continue; + + ps = ps_first; + while (ps->next_ps) { + ps = ps->next_ps; + if (ps->pid == pid) + break; + } + + /* end of our LL? then append a new record */ + if (ps->pid != pid) { + char t[32]; + struct ps_struct *parent; + + ps->next_ps = malloc(sizeof(struct ps_struct)); + if (!ps->next_ps) { + perror("malloc(ps_struct)"); + exit (EXIT_FAILURE); + } + memset(ps->next_ps, 0, sizeof(struct ps_struct)); + ps = ps->next_ps; + ps->pid = pid; + + ps->sample = malloc(sizeof(struct ps_sched_struct) * (len + 1)); + if (!ps->sample) { + perror("malloc(ps_struct)"); + exit (EXIT_FAILURE); + } + memset(ps->sample, 0, sizeof(struct ps_sched_struct) * (len + 1)); + + pscount++; + + /* mark our first sample */ + ps->first = sample; + + /* get name, start time */ + if (!ps->sched) { + sprintf(filename, "/proc/%d/sched", pid); + ps->sched = open(filename, O_RDONLY); + if (ps->sched == -1) + continue; + } + + s = pread(ps->sched, buf, sizeof(buf) - 1, 0); + if (s <= 0) { + close(ps->sched); + continue; + } + + if (!sscanf(buf, "%s %*s %*s", key)) + continue; + + strncpy(ps->name, key, 16); + /* discard line 2 */ + m = bufgetline(buf); + if (!m) + continue; + + m = bufgetline(m); + if (!m) + continue; + + if (!sscanf(m, "%*s %*s %s", t)) + continue; + + ps->starttime = strtod(t, NULL) / 1000.0; + + /* ppid */ + sprintf(filename, "/proc/%d/stat", pid); + st = fopen(filename, "r"); + if (!st) + continue; + if (!fscanf(st, "%*s %*s %*s %i", &p)) { + fclose(st); + continue; + } + fclose(st); + ps->ppid = p; + + /* + * setup child pointers + * + * these are used to paint the tree coherently later + * each parent has a LL of children, and a LL of siblings + */ + if (pid == 1) + continue; /* nothing to do for init atm */ + + /* kthreadd has ppid=0, which breaks our tree ordering */ + if (ps->ppid == 0) + ps->ppid = 1; + + parent = ps_first; + while ((parent->next_ps && parent->pid != ps->ppid)) + parent = parent->next_ps; + + if ((!parent) || (parent->pid != ps->ppid)) { + /* orphan */ + ps->ppid = 1; + parent = ps_first->next_ps; + } + + ps->parent = parent; + + if (!parent->children) { + /* it's the first child */ + parent->children = ps; + } else { + /* walk all children and append */ + struct ps_struct *children; + children = parent->children; + while (children->next) + children = children->next; + children->next = ps; + } + } + + /* else -> found pid, append data in ps */ + + /* below here is all continuous logging parts - we get here on every + * iteration */ + + /* rt, wt */ + if (!ps->schedstat) { + sprintf(filename, "/proc/%d/schedstat", pid); + ps->schedstat = open(filename, O_RDONLY); + if (ps->schedstat == -1) + continue; + } + + if (pread(ps->schedstat, buf, sizeof(buf) - 1, 0) <= 0) { + /* clean up our file descriptors - assume that the process exited */ + close(ps->schedstat); + if (ps->sched) + close(ps->sched); + //if (ps->smaps) + // fclose(ps->smaps); + continue; + } + if (!sscanf(buf, "%s %s %*s", rt, wt)) + continue; + + ps->last = sample; + ps->sample[sample].runtime = atoll(rt); + ps->sample[sample].waittime = atoll(wt); + + ps->total = (ps->sample[ps->last].runtime + - ps->sample[ps->first].runtime) + / 1000000000.0; + + if (!pss) + goto catch_rename; + /* Pss */ + if (!ps->smaps) { + sprintf(filename, "/proc/%d/smaps", pid); + ps->smaps = fopen(filename, "r"); + if (!ps->smaps) + continue; + setvbuf(ps->smaps, smaps_buf, _IOFBF, sizeof(smaps_buf)); + } else { + rewind(ps->smaps); + } + + while (1) { + int pss_kb; + + /* skip one line, this contains the object mapped */ + if (fgets(buf, sizeof(buf), ps->smaps) == NULL) + break; + /* then there's a 28 char 14 line block */ + if (fread(buf, 1, 28 * 14, ps->smaps) != 28 * 14) + break; + + pss_kb = atoi(&buf[61]); + ps->sample[sample].pss += pss_kb; + } + + if (ps->sample[sample].pss > ps->pss_max) + ps->pss_max = ps->sample[sample].pss; catch_rename: - /* catch process rename, try to randomize time */ - mod = (hz < 4.0) ? 4.0 : (hz / 4.0); - if (((samples - ps->first) + pid) % (int)(mod) == 0) { - - /* re-fetch name */ - /* get name, start time */ - if (!ps->sched) { - sprintf(filename, "/proc/%d/sched", pid); - ps->sched = open(filename, O_RDONLY); - if (ps->sched == -1) - continue; - } - if (pread(ps->sched, buf, sizeof(buf) - 1, 0) <= 0) { - /* clean up file descriptors */ - close(ps->sched); - if (ps->schedstat) - close(ps->schedstat); - //if (ps->smaps) - // fclose(ps->smaps); - continue; - } - - if (!sscanf(buf, "%s %*s %*s", key)) - continue; - - strncpy(ps->name, key, 16); - } - } + /* catch process rename, try to randomize time */ + mod = (hz < 4.0) ? 4.0 : (hz / 4.0); + if (((samples - ps->first) + pid) % (int)(mod) == 0) { + + /* re-fetch name */ + /* get name, start time */ + if (!ps->sched) { + sprintf(filename, "/proc/%d/sched", pid); + ps->sched = open(filename, O_RDONLY); + if (ps->sched == -1) + continue; + } + if (pread(ps->sched, buf, sizeof(buf) - 1, 0) <= 0) { + /* clean up file descriptors */ + close(ps->sched); + if (ps->schedstat) + close(ps->schedstat); + //if (ps->smaps) + // fclose(ps->smaps); + continue; + } + + if (!sscanf(buf, "%s %*s %*s", key)) + continue; + + strncpy(ps->name, key, 16); + } + } } diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index 68ec5399ac..156918a94b 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -37,18 +37,18 @@ static char str[8092]; #define svg(a...) do { snprintf(str, 8092, ## a); fputs(str, of); fflush(of); } while (0) static const char *colorwheel[12] = { - "rgb(255,32,32)", // red - "rgb(32,192,192)", // cyan - "rgb(255,128,32)", // orange - "rgb(128,32,192)", // blue-violet - "rgb(255,255,32)", // yellow - "rgb(192,32,128)", // red-violet - "rgb(32,255,32)", // green - "rgb(255,64,32)", // red-orange - "rgb(32,32,255)", // blue - "rgb(255,192,32)", // yellow-orange - "rgb(192,32,192)", // violet - "rgb(32,192,32)" // yellow-green + "rgb(255,32,32)", // red + "rgb(32,192,192)", // cyan + "rgb(255,128,32)", // orange + "rgb(128,32,192)", // blue-violet + "rgb(255,255,32)", // yellow + "rgb(192,32,128)", // red-violet + "rgb(32,255,32)", // green + "rgb(255,64,32)", // red-orange + "rgb(32,32,255)", // blue + "rgb(255,192,32)", // yellow-orange + "rgb(192,32,192)", // violet + "rgb(32,192,32)" // yellow-green }; static double idletime = -1.0; @@ -62,1059 +62,1059 @@ static float esize = 0; static void svg_header(void) { - float w; - float h; - - /* min width is about 1600px due to the label */ - w = 150.0 + 10.0 + time_to_graph(sampletime[samples-1] - graph_start); - w = ((w < 1600.0) ? 1600.0 : w); - - /* height is variable based on pss, psize, ksize */ - h = 400.0 + (scale_y * 30.0) /* base graphs and title */ - + (pss ? (100.0 * scale_y) + (scale_y * 7.0) : 0.0) /* pss estimate */ - + psize + ksize + esize; - - svg("\n"); - svg("\n"); - - //svg("\n", 1000 + 150 + (pcount * 20)); - svg("\n\n"); - - /* write some basic info as a comment, including some help */ - svg("\n"); - svg("\n"); - svg("\n"); - svg("\n"); - svg("\n\n"); - - svg("\n", VERSION); - svg("\n", hz, len); - svg("\n", scale_x, scale_y); - svg("\n", relative, filter); - svg("\n", pss, entropy); - svg("\n\n", output_path, init_path); - - /* style sheet */ - svg("\n \n\n\n"); + float w; + float h; + + /* min width is about 1600px due to the label */ + w = 150.0 + 10.0 + time_to_graph(sampletime[samples-1] - graph_start); + w = ((w < 1600.0) ? 1600.0 : w); + + /* height is variable based on pss, psize, ksize */ + h = 400.0 + (scale_y * 30.0) /* base graphs and title */ + + (pss ? (100.0 * scale_y) + (scale_y * 7.0) : 0.0) /* pss estimate */ + + psize + ksize + esize; + + svg("\n"); + svg("\n"); + + //svg("\n", 1000 + 150 + (pcount * 20)); + svg("\n\n"); + + /* write some basic info as a comment, including some help */ + svg("\n"); + svg("\n"); + svg("\n"); + svg("\n"); + svg("\n\n"); + + svg("\n", VERSION); + svg("\n", hz, len); + svg("\n", scale_x, scale_y); + svg("\n", relative, filter); + svg("\n", pss, entropy); + svg("\n\n", output_path, init_path); + + /* style sheet */ + svg("\n \n\n\n"); } static void svg_title(void) { - char cmdline[256] = ""; - char filename[PATH_MAX]; - char buf[256]; - char rootbdev[16] = "Unknown"; - char model[256] = "Unknown"; - char date[256] = "Unknown"; - char cpu[256] = "Unknown"; - char build[256] = "Unknown"; - char *c; - FILE *f; - time_t t; - struct utsname uts; - - /* grab /proc/cmdline */ - f = fopen("/proc/cmdline", "r"); - if (f) { - if (!fgets(cmdline, 255, f)) - sprintf(cmdline, "Unknown"); - fclose(f); - } - - /* extract root fs so we can find disk model name in sysfs */ - c = strstr(cmdline, "root=/dev/"); - if (c) { - strncpy(rootbdev, &c[10], 3); - rootbdev[3] = '\0'; - } - sprintf(filename, "/sys/block/%s/device/model", rootbdev); - f = fopen(filename, "r"); - if (f) { - if (!fgets(model, 255, f)) - fprintf(stderr, "Error reading disk model for %s\n", rootbdev); - fclose(f); - } - - /* various utsname parameters */ - if (uname(&uts)) - fprintf(stderr, "Error getting uname info\n"); - - /* date */ - t = time(NULL); - strftime(date, sizeof(date), "%a, %d %b %Y %H:%M:%S %z", localtime(&t)); - - /* CPU type */ - f = fopen("/proc/cpuinfo", "r"); - if (f) { - while (fgets(buf, 255, f)) { - if (strstr(buf, "model name")) { - strncpy(cpu, &buf[13], 255); - break; - } - } - fclose(f); - } - - /* Build - 1st line from /etc/system-release */ - f = fopen("/etc/system-release", "r"); - if (f) { - if (fgets(buf, 255, f)) - strncpy(build, buf, 255); - fclose(f); - } - - svg("Bootchart for %s - %s\n", - uts.nodename, date); - svg("System: %s %s %s %s\n", - uts.sysname, uts.release, uts.version, uts.machine); - svg("CPU: %s\n", - cpu); - svg("Disk: %s\n", - model); - svg("Boot options: %s\n", - cmdline); - svg("Build: %s\n", - build); - svg("Log start time: %.03fs\n", log_start); - svg("Idle time: "); - - if (idletime >= 0.0) - svg("%.03fs", idletime); - else - svg("Not detected"); - svg("\n"); - svg("Graph data: %.03f samples/sec, recorded %i total, dropped %i samples, %i processes, %i filtered\n", - hz, len, overrun, pscount, pfiltered); + char cmdline[256] = ""; + char filename[PATH_MAX]; + char buf[256]; + char rootbdev[16] = "Unknown"; + char model[256] = "Unknown"; + char date[256] = "Unknown"; + char cpu[256] = "Unknown"; + char build[256] = "Unknown"; + char *c; + FILE *f; + time_t t; + struct utsname uts; + + /* grab /proc/cmdline */ + f = fopen("/proc/cmdline", "r"); + if (f) { + if (!fgets(cmdline, 255, f)) + sprintf(cmdline, "Unknown"); + fclose(f); + } + + /* extract root fs so we can find disk model name in sysfs */ + c = strstr(cmdline, "root=/dev/"); + if (c) { + strncpy(rootbdev, &c[10], 3); + rootbdev[3] = '\0'; + } + sprintf(filename, "/sys/block/%s/device/model", rootbdev); + f = fopen(filename, "r"); + if (f) { + if (!fgets(model, 255, f)) + fprintf(stderr, "Error reading disk model for %s\n", rootbdev); + fclose(f); + } + + /* various utsname parameters */ + if (uname(&uts)) + fprintf(stderr, "Error getting uname info\n"); + + /* date */ + t = time(NULL); + strftime(date, sizeof(date), "%a, %d %b %Y %H:%M:%S %z", localtime(&t)); + + /* CPU type */ + f = fopen("/proc/cpuinfo", "r"); + if (f) { + while (fgets(buf, 255, f)) { + if (strstr(buf, "model name")) { + strncpy(cpu, &buf[13], 255); + break; + } + } + fclose(f); + } + + /* Build - 1st line from /etc/system-release */ + f = fopen("/etc/system-release", "r"); + if (f) { + if (fgets(buf, 255, f)) + strncpy(build, buf, 255); + fclose(f); + } + + svg("Bootchart for %s - %s\n", + uts.nodename, date); + svg("System: %s %s %s %s\n", + uts.sysname, uts.release, uts.version, uts.machine); + svg("CPU: %s\n", + cpu); + svg("Disk: %s\n", + model); + svg("Boot options: %s\n", + cmdline); + svg("Build: %s\n", + build); + svg("Log start time: %.03fs\n", log_start); + svg("Idle time: "); + + if (idletime >= 0.0) + svg("%.03fs", idletime); + else + svg("Not detected"); + svg("\n"); + svg("Graph data: %.03f samples/sec, recorded %i total, dropped %i samples, %i processes, %i filtered\n", + hz, len, overrun, pscount, pfiltered); } static void svg_graph_box(int height) { - double d = 0.0; - int i = 0; - - /* outside box, fill */ - svg("\n", - time_to_graph(0.0), - time_to_graph(sampletime[samples-1] - graph_start), - ps_to_graph(height)); - - for (d = graph_start; d <= sampletime[samples-1]; - d += (scale_x < 2.0 ? 60.0 : scale_x < 10.0 ? 1.0 : 0.1)) { - /* lines for each second */ - if (i % 50 == 0) - svg(" \n", - time_to_graph(d - graph_start), - time_to_graph(d - graph_start), - ps_to_graph(height)); - else if (i % 10 == 0) - svg(" \n", - time_to_graph(d - graph_start), - time_to_graph(d - graph_start), - ps_to_graph(height)); - else - svg(" \n", - time_to_graph(d - graph_start), - time_to_graph(d - graph_start), - ps_to_graph(height)); - - /* time label */ - if (i % 10 == 0) - svg(" %.01fs\n", - time_to_graph(d - graph_start), - -5.0, - d - graph_start); - - i++; - } + double d = 0.0; + int i = 0; + + /* outside box, fill */ + svg("\n", + time_to_graph(0.0), + time_to_graph(sampletime[samples-1] - graph_start), + ps_to_graph(height)); + + for (d = graph_start; d <= sampletime[samples-1]; + d += (scale_x < 2.0 ? 60.0 : scale_x < 10.0 ? 1.0 : 0.1)) { + /* lines for each second */ + if (i % 50 == 0) + svg(" \n", + time_to_graph(d - graph_start), + time_to_graph(d - graph_start), + ps_to_graph(height)); + else if (i % 10 == 0) + svg(" \n", + time_to_graph(d - graph_start), + time_to_graph(d - graph_start), + ps_to_graph(height)); + else + svg(" \n", + time_to_graph(d - graph_start), + time_to_graph(d - graph_start), + ps_to_graph(height)); + + /* time label */ + if (i % 10 == 0) + svg(" %.01fs\n", + time_to_graph(d - graph_start), + -5.0, + d - graph_start); + + i++; + } } static void svg_pss_graph(void) { - struct ps_struct *ps; - int i; - - svg("\n\n\n"); - - svg("\n Memory allocation - Pss\n"); - - /* vsize 1000 == 1000mb */ - svg_graph_box(100); - /* draw some hlines for usable memory sizes */ - for (i = 100000; i < 1000000; i += 100000) { - svg(" \n", - time_to_graph(.0), - kb_to_graph(i), - time_to_graph(sampletime[samples-1] - graph_start), - kb_to_graph(i)); - svg(" %dM\n", - time_to_graph(sampletime[samples-1] - graph_start) + 5, - kb_to_graph(i), (1000000 - i) / 1000); - } - svg("\n"); - - /* now plot the graph itself */ - for (i = 1; i < samples ; i++) { - int bottom; - int top; - - bottom = 0; - top = 0; - - /* put all the small pss blocks into the bottom */ - ps = ps_first; - while (ps->next_ps) { - ps = ps->next_ps; - if (!ps) - continue; - if (ps->sample[i].pss <= (100 * scale_y)) - top += ps->sample[i].pss; - }; - svg(" \n", - "rgb(64,64,64)", - time_to_graph(sampletime[i - 1] - graph_start), - kb_to_graph(1000000.0 - top), - time_to_graph(sampletime[i] - sampletime[i - 1]), - kb_to_graph(top - bottom)); - - bottom = top; - - /* now plot the ones that are of significant size */ - ps = ps_first; - while (ps->next_ps) { - ps = ps->next_ps; - if (!ps) - continue; - /* don't draw anything smaller than 2mb */ - if (ps->sample[i].pss > (100 * scale_y)) { - top = bottom + ps->sample[i].pss; - svg(" \n", - colorwheel[ps->pid % 12], - time_to_graph(sampletime[i - 1] - graph_start), - kb_to_graph(1000000.0 - top), - time_to_graph(sampletime[i] - sampletime[i - 1]), - kb_to_graph(top - bottom)); - bottom = top; - } - } - } - - /* overlay all the text labels */ - for (i = 1; i < samples ; i++) { - int bottom; - int top; - - bottom = 0; - top = 0; - - /* put all the small pss blocks into the bottom */ - ps = ps_first; - while (ps->next_ps) { - ps = ps->next_ps; - if (!ps) - continue; - if (ps->sample[i].pss <= (100 * scale_y)) - top += ps->sample[i].pss; - }; - - bottom = top; - - /* now plot the ones that are of significant size */ - ps = ps_first; - while (ps->next_ps) { - ps = ps->next_ps; - if (!ps) - continue; - /* don't draw anything smaller than 2mb */ - if (ps->sample[i].pss > (100 * scale_y)) { - top = bottom + ps->sample[i].pss; - /* draw a label with the process / PID */ - if ((i == 1) || (ps->sample[i - 1].pss <= (100 * scale_y))) - svg(" %s [%i]\n", - time_to_graph(sampletime[i] - graph_start), - kb_to_graph(1000000.0 - bottom - ((top - bottom) / 2)), - ps->name, - ps->pid); - bottom = top; - } - } - } - - /* debug output - full data dump */ - svg("\n\n\n"); - ps = ps_first; - while (ps->next_ps) { - ps = ps->next_ps; - if (!ps) - continue; - svg("\n"); - } + struct ps_struct *ps; + int i; + + svg("\n\n\n"); + + svg("\n Memory allocation - Pss\n"); + + /* vsize 1000 == 1000mb */ + svg_graph_box(100); + /* draw some hlines for usable memory sizes */ + for (i = 100000; i < 1000000; i += 100000) { + svg(" \n", + time_to_graph(.0), + kb_to_graph(i), + time_to_graph(sampletime[samples-1] - graph_start), + kb_to_graph(i)); + svg(" %dM\n", + time_to_graph(sampletime[samples-1] - graph_start) + 5, + kb_to_graph(i), (1000000 - i) / 1000); + } + svg("\n"); + + /* now plot the graph itself */ + for (i = 1; i < samples ; i++) { + int bottom; + int top; + + bottom = 0; + top = 0; + + /* put all the small pss blocks into the bottom */ + ps = ps_first; + while (ps->next_ps) { + ps = ps->next_ps; + if (!ps) + continue; + if (ps->sample[i].pss <= (100 * scale_y)) + top += ps->sample[i].pss; + }; + svg(" \n", + "rgb(64,64,64)", + time_to_graph(sampletime[i - 1] - graph_start), + kb_to_graph(1000000.0 - top), + time_to_graph(sampletime[i] - sampletime[i - 1]), + kb_to_graph(top - bottom)); + + bottom = top; + + /* now plot the ones that are of significant size */ + ps = ps_first; + while (ps->next_ps) { + ps = ps->next_ps; + if (!ps) + continue; + /* don't draw anything smaller than 2mb */ + if (ps->sample[i].pss > (100 * scale_y)) { + top = bottom + ps->sample[i].pss; + svg(" \n", + colorwheel[ps->pid % 12], + time_to_graph(sampletime[i - 1] - graph_start), + kb_to_graph(1000000.0 - top), + time_to_graph(sampletime[i] - sampletime[i - 1]), + kb_to_graph(top - bottom)); + bottom = top; + } + } + } + + /* overlay all the text labels */ + for (i = 1; i < samples ; i++) { + int bottom; + int top; + + bottom = 0; + top = 0; + + /* put all the small pss blocks into the bottom */ + ps = ps_first; + while (ps->next_ps) { + ps = ps->next_ps; + if (!ps) + continue; + if (ps->sample[i].pss <= (100 * scale_y)) + top += ps->sample[i].pss; + }; + + bottom = top; + + /* now plot the ones that are of significant size */ + ps = ps_first; + while (ps->next_ps) { + ps = ps->next_ps; + if (!ps) + continue; + /* don't draw anything smaller than 2mb */ + if (ps->sample[i].pss > (100 * scale_y)) { + top = bottom + ps->sample[i].pss; + /* draw a label with the process / PID */ + if ((i == 1) || (ps->sample[i - 1].pss <= (100 * scale_y))) + svg(" %s [%i]\n", + time_to_graph(sampletime[i] - graph_start), + kb_to_graph(1000000.0 - bottom - ((top - bottom) / 2)), + ps->name, + ps->pid); + bottom = top; + } + } + } + + /* debug output - full data dump */ + svg("\n\n\n"); + ps = ps_first; + while (ps->next_ps) { + ps = ps->next_ps; + if (!ps) + continue; + svg("\n"); + } } static void svg_io_bi_bar(void) { - double max = 0.0; - double range; - int max_here = 0; - int i; - - svg("\n"); - - svg("IO utilization - read\n"); - - /* - * calculate rounding range - * - * We need to round IO data since IO block data is not updated on - * each poll. Applying a smoothing function loses some burst data, - * so keep the smoothing range short. - */ - range = 0.25 / (1.0 / hz); - if (range < 2.0) - range = 2.0; /* no smoothing */ - - /* surrounding box */ - svg_graph_box(5); - - /* find the max IO first */ - for (i = 1; i < samples; i++) { - int start; - int stop; - double tot; - - start = max(i - ((range / 2) - 1), 0); - stop = min(i + (range / 2), samples - 1); - - tot = (double)(blockstat[stop].bi - blockstat[start].bi) - / (stop - start); - if (tot > max) { - max = tot; - max_here = i; - } - tot = (double)(blockstat[stop].bo - blockstat[start].bo) - / (stop - start); - if (tot > max) - max = tot; - } - - /* plot bi */ - for (i = 1; i < samples; i++) { - int start; - int stop; - double tot; - double pbi; - - start = max(i - ((range / 2) - 1), 0); - stop = min(i + (range / 2), samples); - - tot = (double)(blockstat[stop].bi - blockstat[start].bi) - / (stop - start); - pbi = tot / max; - - if (pbi > 0.001) - svg("\n", - time_to_graph(sampletime[i - 1] - graph_start), - (scale_y * 5) - (pbi * (scale_y * 5)), - time_to_graph(sampletime[i] - sampletime[i - 1]), - pbi * (scale_y * 5)); - - /* labels around highest value */ - if (i == max_here) { - svg(" %0.2fmb/sec\n", - time_to_graph(sampletime[i] - graph_start) + 5, - ((scale_y * 5) - (pbi * (scale_y * 5))) + 15, - max / 1024.0 / (interval / 1000000000.0)); - } - } + double max = 0.0; + double range; + int max_here = 0; + int i; + + svg("\n"); + + svg("IO utilization - read\n"); + + /* + * calculate rounding range + * + * We need to round IO data since IO block data is not updated on + * each poll. Applying a smoothing function loses some burst data, + * so keep the smoothing range short. + */ + range = 0.25 / (1.0 / hz); + if (range < 2.0) + range = 2.0; /* no smoothing */ + + /* surrounding box */ + svg_graph_box(5); + + /* find the max IO first */ + for (i = 1; i < samples; i++) { + int start; + int stop; + double tot; + + start = max(i - ((range / 2) - 1), 0); + stop = min(i + (range / 2), samples - 1); + + tot = (double)(blockstat[stop].bi - blockstat[start].bi) + / (stop - start); + if (tot > max) { + max = tot; + max_here = i; + } + tot = (double)(blockstat[stop].bo - blockstat[start].bo) + / (stop - start); + if (tot > max) + max = tot; + } + + /* plot bi */ + for (i = 1; i < samples; i++) { + int start; + int stop; + double tot; + double pbi; + + start = max(i - ((range / 2) - 1), 0); + stop = min(i + (range / 2), samples); + + tot = (double)(blockstat[stop].bi - blockstat[start].bi) + / (stop - start); + pbi = tot / max; + + if (pbi > 0.001) + svg("\n", + time_to_graph(sampletime[i - 1] - graph_start), + (scale_y * 5) - (pbi * (scale_y * 5)), + time_to_graph(sampletime[i] - sampletime[i - 1]), + pbi * (scale_y * 5)); + + /* labels around highest value */ + if (i == max_here) { + svg(" %0.2fmb/sec\n", + time_to_graph(sampletime[i] - graph_start) + 5, + ((scale_y * 5) - (pbi * (scale_y * 5))) + 15, + max / 1024.0 / (interval / 1000000000.0)); + } + } } static void svg_io_bo_bar(void) { - double max = 0.0; - double range; - int max_here = 0; - int i; - - svg("\n"); - - svg("IO utilization - write\n"); - - /* - * calculate rounding range - * - * We need to round IO data since IO block data is not updated on - * each poll. Applying a smoothing function loses some burst data, - * so keep the smoothing range short. - */ - range = 0.25 / (1.0 / hz); - if (range < 2.0) - range = 2.0; /* no smoothing */ - - /* surrounding box */ - svg_graph_box(5); - - /* find the max IO first */ - for (i = 1; i < samples; i++) { - int start; - int stop; - double tot; - - start = max(i - ((range / 2) - 1), 0); - stop = min(i + (range / 2), samples - 1); - - tot = (double)(blockstat[stop].bi - blockstat[start].bi) - / (stop - start); - if (tot > max) - max = tot; - tot = (double)(blockstat[stop].bo - blockstat[start].bo) - / (stop - start); - if (tot > max) { - max = tot; - max_here = i; - } - } - - /* plot bo */ - for (i = 1; i < samples; i++) { - int start; - int stop; - double tot; - double pbo; - - start = max(i - ((range / 2) - 1), 0); - stop = min(i + (range / 2), samples); - - tot = (double)(blockstat[stop].bo - blockstat[start].bo) - / (stop - start); - pbo = tot / max; - - if (pbo > 0.001) - svg("\n", - time_to_graph(sampletime[i - 1] - graph_start), - (scale_y * 5) - (pbo * (scale_y * 5)), - time_to_graph(sampletime[i] - sampletime[i - 1]), - pbo * (scale_y * 5)); - - /* labels around highest bo value */ - if (i == max_here) { - svg(" %0.2fmb/sec\n", - time_to_graph(sampletime[i] - graph_start) + 5, - ((scale_y * 5) - (pbo * (scale_y * 5))), - max / 1024.0 / (interval / 1000000000.0)); - } - } + double max = 0.0; + double range; + int max_here = 0; + int i; + + svg("\n"); + + svg("IO utilization - write\n"); + + /* + * calculate rounding range + * + * We need to round IO data since IO block data is not updated on + * each poll. Applying a smoothing function loses some burst data, + * so keep the smoothing range short. + */ + range = 0.25 / (1.0 / hz); + if (range < 2.0) + range = 2.0; /* no smoothing */ + + /* surrounding box */ + svg_graph_box(5); + + /* find the max IO first */ + for (i = 1; i < samples; i++) { + int start; + int stop; + double tot; + + start = max(i - ((range / 2) - 1), 0); + stop = min(i + (range / 2), samples - 1); + + tot = (double)(blockstat[stop].bi - blockstat[start].bi) + / (stop - start); + if (tot > max) + max = tot; + tot = (double)(blockstat[stop].bo - blockstat[start].bo) + / (stop - start); + if (tot > max) { + max = tot; + max_here = i; + } + } + + /* plot bo */ + for (i = 1; i < samples; i++) { + int start; + int stop; + double tot; + double pbo; + + start = max(i - ((range / 2) - 1), 0); + stop = min(i + (range / 2), samples); + + tot = (double)(blockstat[stop].bo - blockstat[start].bo) + / (stop - start); + pbo = tot / max; + + if (pbo > 0.001) + svg("\n", + time_to_graph(sampletime[i - 1] - graph_start), + (scale_y * 5) - (pbo * (scale_y * 5)), + time_to_graph(sampletime[i] - sampletime[i - 1]), + pbo * (scale_y * 5)); + + /* labels around highest bo value */ + if (i == max_here) { + svg(" %0.2fmb/sec\n", + time_to_graph(sampletime[i] - graph_start) + 5, + ((scale_y * 5) - (pbo * (scale_y * 5))), + max / 1024.0 / (interval / 1000000000.0)); + } + } } static void svg_cpu_bar(void) { - int i; + int i; - svg("\n"); + svg("\n"); - svg("CPU utilization\n"); - /* surrounding box */ - svg_graph_box(5); + svg("CPU utilization\n"); + /* surrounding box */ + svg_graph_box(5); - /* bars for each sample, proportional to the CPU util. */ - for (i = 1; i < samples; i++) { - int c; - double trt; - double ptrt; + /* bars for each sample, proportional to the CPU util. */ + for (i = 1; i < samples; i++) { + int c; + double trt; + double ptrt; - ptrt = trt = 0.0; + ptrt = trt = 0.0; - for (c = 0; c < cpus; c++) - trt += cpustat[c].sample[i].runtime - cpustat[c].sample[i - 1].runtime; + for (c = 0; c < cpus; c++) + trt += cpustat[c].sample[i].runtime - cpustat[c].sample[i - 1].runtime; - trt = trt / 1000000000.0; + trt = trt / 1000000000.0; - trt = trt / (double)cpus; + trt = trt / (double)cpus; - if (trt > 0.0) - ptrt = trt / (sampletime[i] - sampletime[i - 1]); + if (trt > 0.0) + ptrt = trt / (sampletime[i] - sampletime[i - 1]); - if (ptrt > 1.0) - ptrt = 1.0; + if (ptrt > 1.0) + ptrt = 1.0; - if (ptrt > 0.001) { - svg("\n", - time_to_graph(sampletime[i - 1] - graph_start), - (scale_y * 5) - (ptrt * (scale_y * 5)), - time_to_graph(sampletime[i] - sampletime[i - 1]), - ptrt * (scale_y * 5)); - } - } + if (ptrt > 0.001) { + svg("\n", + time_to_graph(sampletime[i - 1] - graph_start), + (scale_y * 5) - (ptrt * (scale_y * 5)), + time_to_graph(sampletime[i] - sampletime[i - 1]), + ptrt * (scale_y * 5)); + } + } } static void svg_wait_bar(void) { - int i; + int i; - svg("\n"); + svg("\n"); - svg("CPU wait\n"); + svg("CPU wait\n"); - /* surrounding box */ - svg_graph_box(5); + /* surrounding box */ + svg_graph_box(5); - /* bars for each sample, proportional to the CPU util. */ - for (i = 1; i < samples; i++) { - int c; - double twt; - double ptwt; + /* bars for each sample, proportional to the CPU util. */ + for (i = 1; i < samples; i++) { + int c; + double twt; + double ptwt; - ptwt = twt = 0.0; + ptwt = twt = 0.0; - for (c = 0; c < cpus; c++) - twt += cpustat[c].sample[i].waittime - cpustat[c].sample[i - 1].waittime; + for (c = 0; c < cpus; c++) + twt += cpustat[c].sample[i].waittime - cpustat[c].sample[i - 1].waittime; - twt = twt / 1000000000.0; + twt = twt / 1000000000.0; - twt = twt / (double)cpus; + twt = twt / (double)cpus; - if (twt > 0.0) - ptwt = twt / (sampletime[i] - sampletime[i - 1]); + if (twt > 0.0) + ptwt = twt / (sampletime[i] - sampletime[i - 1]); - if (ptwt > 1.0) - ptwt = 1.0; + if (ptwt > 1.0) + ptwt = 1.0; - if (ptwt > 0.001) { - svg("\n", - time_to_graph(sampletime[i - 1] - graph_start), - ((scale_y * 5) - (ptwt * (scale_y * 5))), - time_to_graph(sampletime[i] - sampletime[i - 1]), - ptwt * (scale_y * 5)); - } - } + if (ptwt > 0.001) { + svg("\n", + time_to_graph(sampletime[i - 1] - graph_start), + ((scale_y * 5) - (ptwt * (scale_y * 5))), + time_to_graph(sampletime[i] - sampletime[i - 1]), + ptwt * (scale_y * 5)); + } + } } static void svg_entropy_bar(void) { - int i; - - svg("\n"); - - svg("Entropy pool size\n"); - /* surrounding box */ - svg_graph_box(5); - - /* bars for each sample, scale 0-4096 */ - for (i = 1; i < samples; i++) { - /* svg("\n", sampletime[i], entropy_avail[i]); */ - svg("\n", - time_to_graph(sampletime[i - 1] - graph_start), - ((scale_y * 5) - ((entropy_avail[i] / 4096.) * (scale_y * 5))), - time_to_graph(sampletime[i] - sampletime[i - 1]), - (entropy_avail[i] / 4096.) * (scale_y * 5)); - } + int i; + + svg("\n"); + + svg("Entropy pool size\n"); + /* surrounding box */ + svg_graph_box(5); + + /* bars for each sample, scale 0-4096 */ + for (i = 1; i < samples; i++) { + /* svg("\n", sampletime[i], entropy_avail[i]); */ + svg("\n", + time_to_graph(sampletime[i - 1] - graph_start), + ((scale_y * 5) - ((entropy_avail[i] / 4096.) * (scale_y * 5))), + time_to_graph(sampletime[i] - sampletime[i - 1]), + (entropy_avail[i] / 4096.) * (scale_y * 5)); + } } static struct ps_struct *get_next_ps(struct ps_struct *ps) { - /* - * walk the list of processes and return the next one to be - * painted - */ - if (ps == ps_first) - return ps->next_ps; - - /* go deep */ - if (ps->children) - return ps->children; - - /* find siblings */ - if (ps->next) - return ps->next; - - /* go back for parent siblings */ - while (1) { - if (ps->parent) - if (ps->parent->next) - return ps->parent->next; - ps = ps->parent; - if (!ps) - return ps; - } - - return NULL; + /* + * walk the list of processes and return the next one to be + * painted + */ + if (ps == ps_first) + return ps->next_ps; + + /* go deep */ + if (ps->children) + return ps->children; + + /* find siblings */ + if (ps->next) + return ps->next; + + /* go back for parent siblings */ + while (1) { + if (ps->parent) + if (ps->parent->next) + return ps->parent->next; + ps = ps->parent; + if (!ps) + return ps; + } + + return NULL; } static int ps_filter(struct ps_struct *ps) { - if (!filter) - return 0; + if (!filter) + return 0; - /* can't draw data when there is only 1 sample (need start + stop) */ - if (ps->first == ps->last) - return -1; + /* can't draw data when there is only 1 sample (need start + stop) */ + if (ps->first == ps->last) + return -1; - /* don't filter kthreadd */ - if (ps->pid == 2) - return 0; + /* don't filter kthreadd */ + if (ps->pid == 2) + return 0; - /* drop stuff that doesn't use any real CPU time */ - if (ps->total <= 0.001) - return -1; + /* drop stuff that doesn't use any real CPU time */ + if (ps->total <= 0.001) + return -1; - return 0; + return 0; } static void svg_do_initcall(int count_only) { - FILE *f; - double t; - char func[256]; - int ret; - int usecs; - - /* can't plot initcall when disabled or in relative mode */ - if (!initcall || relative) { - kcount = 0; - return; - } - - if (!count_only) { - svg("\n"); - - svg("Kernel init threads\n"); - /* surrounding box */ - svg_graph_box(kcount); - } - - kcount = 0; - - /* - * Initcall graphing - parses dmesg buffer and displays kernel threads - * This somewhat uses the same methods and scaling to show processes - * but looks a lot simpler. It's overlaid entirely onto the PS graph - * when appropriate. - */ - - f = popen("dmesg", "r"); - if (!f) - return; - - while (!feof(f)) { - int c; - int z = 0; - char l[256]; - - if (fgets(l, sizeof(l) - 1, f) == NULL) - continue; - - c = sscanf(l, "[%lf] initcall %s %*s %d %*s %d %*s", - &t, func, &ret, &usecs); - if (c != 4) { - /* also parse initcalls done by module loading */ - c = sscanf(l, "[%lf] initcall %s %*s %*s %d %*s %d %*s", - &t, func, &ret, &usecs); - if (c != 4) - continue; - } - - /* chop the +0xXX/0xXX stuff */ - while(func[z] != '+') - z++; - func[z] = 0; - - if (count_only) { - /* filter out irrelevant stuff */ - if (usecs >= 1000) - kcount++; - continue; - } - - svg("\n", - func, t, usecs, ret); - - if (usecs < 1000) - continue; - - /* rect */ - svg(" \n", - time_to_graph(t - (usecs / 1000000.0)), - ps_to_graph(kcount), - time_to_graph(usecs / 1000000.0), - ps_to_graph(1)); - - /* label */ - svg(" %s %.03fs\n", - time_to_graph(t - (usecs / 1000000.0)) + 5, - ps_to_graph(kcount) + 15, - func, - usecs / 1000000.0); - - kcount++; - } - - fclose(f); + FILE *f; + double t; + char func[256]; + int ret; + int usecs; + + /* can't plot initcall when disabled or in relative mode */ + if (!initcall || relative) { + kcount = 0; + return; + } + + if (!count_only) { + svg("\n"); + + svg("Kernel init threads\n"); + /* surrounding box */ + svg_graph_box(kcount); + } + + kcount = 0; + + /* + * Initcall graphing - parses dmesg buffer and displays kernel threads + * This somewhat uses the same methods and scaling to show processes + * but looks a lot simpler. It's overlaid entirely onto the PS graph + * when appropriate. + */ + + f = popen("dmesg", "r"); + if (!f) + return; + + while (!feof(f)) { + int c; + int z = 0; + char l[256]; + + if (fgets(l, sizeof(l) - 1, f) == NULL) + continue; + + c = sscanf(l, "[%lf] initcall %s %*s %d %*s %d %*s", + &t, func, &ret, &usecs); + if (c != 4) { + /* also parse initcalls done by module loading */ + c = sscanf(l, "[%lf] initcall %s %*s %*s %d %*s %d %*s", + &t, func, &ret, &usecs); + if (c != 4) + continue; + } + + /* chop the +0xXX/0xXX stuff */ + while(func[z] != '+') + z++; + func[z] = 0; + + if (count_only) { + /* filter out irrelevant stuff */ + if (usecs >= 1000) + kcount++; + continue; + } + + svg("\n", + func, t, usecs, ret); + + if (usecs < 1000) + continue; + + /* rect */ + svg(" \n", + time_to_graph(t - (usecs / 1000000.0)), + ps_to_graph(kcount), + time_to_graph(usecs / 1000000.0), + ps_to_graph(1)); + + /* label */ + svg(" %s %.03fs\n", + time_to_graph(t - (usecs / 1000000.0)) + 5, + ps_to_graph(kcount) + 15, + func, + usecs / 1000000.0); + + kcount++; + } + + fclose(f); } static void svg_ps_bars(void) { - struct ps_struct *ps; - int i = 0; - int j = 0; - int w; - int pid; - - svg("\n"); - - svg("Processes\n"); - - /* surrounding box */ - svg_graph_box(pcount); - - /* pass 2 - ps boxes */ - ps = ps_first; - while ((ps = get_next_ps(ps))) { - double starttime; - int t; - - if (!ps) - continue; - - /* leave some trace of what we actually filtered etc. */ - svg("\n", ps->name, ps->pid, - ps->ppid, ps->total); - - /* it would be nice if we could use exec_start from /proc/pid/sched, - * but it's unreliable and gives bogus numbers */ - starttime = sampletime[ps->first]; - - if (!ps_filter(ps)) { - /* remember where _to_ our children need to draw a line */ - ps->pos_x = time_to_graph(starttime - graph_start); - ps->pos_y = ps_to_graph(j+1); /* bottom left corner */ - } else { - /* hook children to our parent coords instead */ - ps->pos_x = ps->parent->pos_x; - ps->pos_y = ps->parent->pos_y; - - /* if this is the last child, we might still need to draw a connecting line */ - if ((!ps->next) && (ps->parent)) - svg(" \n", - ps->parent->pos_x, - ps_to_graph(j-1) + 10.0, /* whee, use the last value here */ - ps->parent->pos_x, - ps->parent->pos_y); - continue; - } - - svg(" \n", - time_to_graph(starttime - graph_start), - ps_to_graph(j), - time_to_graph(sampletime[ps->last] - starttime), - ps_to_graph(1)); - - /* paint cpu load over these */ - for (t = ps->first + 1; t < ps->last; t++) { - double rt, prt; - double wt, wrt; - - /* calculate over interval */ - rt = ps->sample[t].runtime - ps->sample[t-1].runtime; - wt = ps->sample[t].waittime - ps->sample[t-1].waittime; - - prt = (rt / 1000000000) / (sampletime[t] - sampletime[t-1]); - wrt = (wt / 1000000000) / (sampletime[t] - sampletime[t-1]); - - /* this can happen if timekeeping isn't accurate enough */ - if (prt > 1.0) - prt = 1.0; - if (wrt > 1.0) - wrt = 1.0; - - if ((prt < 0.1) && (wrt < 0.1)) /* =~ 26 (color threshold) */ - continue; - - svg(" \n", - time_to_graph(sampletime[t - 1] - graph_start), - ps_to_graph(j), - time_to_graph(sampletime[t] - sampletime[t - 1]), - ps_to_graph(wrt)); - - /* draw cpu over wait - TODO figure out how/why run + wait > interval */ - svg(" \n", - time_to_graph(sampletime[t - 1] - graph_start), - ps_to_graph(j + (1.0 - prt)), - time_to_graph(sampletime[t] - sampletime[t - 1]), - ps_to_graph(prt)); - } - - /* determine where to display the process name */ - if (sampletime[ps->last] - sampletime[ps->first] < 1.5) - /* too small to fit label inside the box */ - w = ps->last; - else - w = ps->first; - - /* text label of process name */ - svg(" %s [%i] %.03fs\n", - time_to_graph(sampletime[w] - graph_start) + 5.0, - ps_to_graph(j) + 14.0, - ps->name, - ps->pid, - (ps->sample[ps->last].runtime - ps->sample[ps->first].runtime) / 1000000000.0); - /* paint lines to the parent process */ - if (ps->parent) { - /* horizontal part */ - svg(" \n", - time_to_graph(starttime - graph_start), - ps_to_graph(j) + 10.0, - ps->parent->pos_x, - ps_to_graph(j) + 10.0); - - /* one vertical line connecting all the horizontal ones up */ - if (!ps->next) - svg(" \n", - ps->parent->pos_x, - ps_to_graph(j) + 10.0, - ps->parent->pos_x, - ps->parent->pos_y); - } - - j++; /* count boxes */ - - svg("\n"); - } - - /* last pass - determine when idle */ - pid = getpid(); - /* make sure we start counting from the point where we actually have - * data: assume that bootchart's first sample is when data started - */ - ps = ps_first; - while (ps->next_ps) { - ps = ps->next_ps; - if (ps->pid == pid) - break; - } - - for (i = ps->first; i < samples - (hz / 2); i++) { - double crt; - double brt; - int c; - - /* subtract bootchart cpu utilization from total */ - crt = 0.0; - for (c = 0; c < cpus; c++) - crt += cpustat[c].sample[i + ((int)hz / 2)].runtime - cpustat[c].sample[i].runtime; - brt = ps->sample[i + ((int)hz / 2)].runtime - ps->sample[i].runtime; - - /* - * our definition of "idle": - * - * if for (hz / 2) we've used less CPU than (interval / 2) ... - * defaults to 4.0%, which experimentally, is where atom idles - */ - if ((crt - brt) < (interval / 2.0)) { - idletime = sampletime[i] - graph_start; - svg("\n\n", - idletime); - svg("\n", - time_to_graph(idletime), - -scale_y, - time_to_graph(idletime), - ps_to_graph(pcount) + scale_y); - svg("%.01fs\n", - time_to_graph(idletime) + 5.0, - ps_to_graph(pcount) + scale_y, - idletime); - break; - } - } + struct ps_struct *ps; + int i = 0; + int j = 0; + int w; + int pid; + + svg("\n"); + + svg("Processes\n"); + + /* surrounding box */ + svg_graph_box(pcount); + + /* pass 2 - ps boxes */ + ps = ps_first; + while ((ps = get_next_ps(ps))) { + double starttime; + int t; + + if (!ps) + continue; + + /* leave some trace of what we actually filtered etc. */ + svg("\n", ps->name, ps->pid, + ps->ppid, ps->total); + + /* it would be nice if we could use exec_start from /proc/pid/sched, + * but it's unreliable and gives bogus numbers */ + starttime = sampletime[ps->first]; + + if (!ps_filter(ps)) { + /* remember where _to_ our children need to draw a line */ + ps->pos_x = time_to_graph(starttime - graph_start); + ps->pos_y = ps_to_graph(j+1); /* bottom left corner */ + } else { + /* hook children to our parent coords instead */ + ps->pos_x = ps->parent->pos_x; + ps->pos_y = ps->parent->pos_y; + + /* if this is the last child, we might still need to draw a connecting line */ + if ((!ps->next) && (ps->parent)) + svg(" \n", + ps->parent->pos_x, + ps_to_graph(j-1) + 10.0, /* whee, use the last value here */ + ps->parent->pos_x, + ps->parent->pos_y); + continue; + } + + svg(" \n", + time_to_graph(starttime - graph_start), + ps_to_graph(j), + time_to_graph(sampletime[ps->last] - starttime), + ps_to_graph(1)); + + /* paint cpu load over these */ + for (t = ps->first + 1; t < ps->last; t++) { + double rt, prt; + double wt, wrt; + + /* calculate over interval */ + rt = ps->sample[t].runtime - ps->sample[t-1].runtime; + wt = ps->sample[t].waittime - ps->sample[t-1].waittime; + + prt = (rt / 1000000000) / (sampletime[t] - sampletime[t-1]); + wrt = (wt / 1000000000) / (sampletime[t] - sampletime[t-1]); + + /* this can happen if timekeeping isn't accurate enough */ + if (prt > 1.0) + prt = 1.0; + if (wrt > 1.0) + wrt = 1.0; + + if ((prt < 0.1) && (wrt < 0.1)) /* =~ 26 (color threshold) */ + continue; + + svg(" \n", + time_to_graph(sampletime[t - 1] - graph_start), + ps_to_graph(j), + time_to_graph(sampletime[t] - sampletime[t - 1]), + ps_to_graph(wrt)); + + /* draw cpu over wait - TODO figure out how/why run + wait > interval */ + svg(" \n", + time_to_graph(sampletime[t - 1] - graph_start), + ps_to_graph(j + (1.0 - prt)), + time_to_graph(sampletime[t] - sampletime[t - 1]), + ps_to_graph(prt)); + } + + /* determine where to display the process name */ + if (sampletime[ps->last] - sampletime[ps->first] < 1.5) + /* too small to fit label inside the box */ + w = ps->last; + else + w = ps->first; + + /* text label of process name */ + svg(" %s [%i] %.03fs\n", + time_to_graph(sampletime[w] - graph_start) + 5.0, + ps_to_graph(j) + 14.0, + ps->name, + ps->pid, + (ps->sample[ps->last].runtime - ps->sample[ps->first].runtime) / 1000000000.0); + /* paint lines to the parent process */ + if (ps->parent) { + /* horizontal part */ + svg(" \n", + time_to_graph(starttime - graph_start), + ps_to_graph(j) + 10.0, + ps->parent->pos_x, + ps_to_graph(j) + 10.0); + + /* one vertical line connecting all the horizontal ones up */ + if (!ps->next) + svg(" \n", + ps->parent->pos_x, + ps_to_graph(j) + 10.0, + ps->parent->pos_x, + ps->parent->pos_y); + } + + j++; /* count boxes */ + + svg("\n"); + } + + /* last pass - determine when idle */ + pid = getpid(); + /* make sure we start counting from the point where we actually have + * data: assume that bootchart's first sample is when data started + */ + ps = ps_first; + while (ps->next_ps) { + ps = ps->next_ps; + if (ps->pid == pid) + break; + } + + for (i = ps->first; i < samples - (hz / 2); i++) { + double crt; + double brt; + int c; + + /* subtract bootchart cpu utilization from total */ + crt = 0.0; + for (c = 0; c < cpus; c++) + crt += cpustat[c].sample[i + ((int)hz / 2)].runtime - cpustat[c].sample[i].runtime; + brt = ps->sample[i + ((int)hz / 2)].runtime - ps->sample[i].runtime; + + /* + * our definition of "idle": + * + * if for (hz / 2) we've used less CPU than (interval / 2) ... + * defaults to 4.0%, which experimentally, is where atom idles + */ + if ((crt - brt) < (interval / 2.0)) { + idletime = sampletime[i] - graph_start; + svg("\n\n", + idletime); + svg("\n", + time_to_graph(idletime), + -scale_y, + time_to_graph(idletime), + ps_to_graph(pcount) + scale_y); + svg("%.01fs\n", + time_to_graph(idletime) + 5.0, + ps_to_graph(pcount) + scale_y, + idletime); + break; + } + } } static void svg_top_ten_cpu(void) { - struct ps_struct *top[10]; - struct ps_struct emptyps; - struct ps_struct *ps; - int n, m; - - memset(&emptyps, 0, sizeof(struct ps_struct)); - for (n=0; n < 10; n++) - top[n] = &emptyps; - - /* walk all ps's and setup ptrs */ - ps = ps_first; - while ((ps = get_next_ps(ps))) { - for (n = 0; n < 10; n++) { - if (ps->total <= top[n]->total) - continue; - /* cascade insert */ - for (m = 9; m > n; m--) - top[m] = top[m-1]; - top[n] = ps; - break; - } - } - - svg("Top CPU consumers:\n"); - for (n = 0; n < 10; n++) - svg("%3.03fs - %s[%d]\n", - 20 + (n * 13), - top[n]->total, - top[n]->name, - top[n]->pid); + struct ps_struct *top[10]; + struct ps_struct emptyps; + struct ps_struct *ps; + int n, m; + + memset(&emptyps, 0, sizeof(struct ps_struct)); + for (n=0; n < 10; n++) + top[n] = &emptyps; + + /* walk all ps's and setup ptrs */ + ps = ps_first; + while ((ps = get_next_ps(ps))) { + for (n = 0; n < 10; n++) { + if (ps->total <= top[n]->total) + continue; + /* cascade insert */ + for (m = 9; m > n; m--) + top[m] = top[m-1]; + top[n] = ps; + break; + } + } + + svg("Top CPU consumers:\n"); + for (n = 0; n < 10; n++) + svg("%3.03fs - %s[%d]\n", + 20 + (n * 13), + top[n]->total, + top[n]->name, + top[n]->pid); } static void svg_top_ten_pss(void) { - struct ps_struct *top[10]; - struct ps_struct emptyps; - struct ps_struct *ps; - int n, m; - - memset(&emptyps, 0, sizeof(struct ps_struct)); - for (n=0; n < 10; n++) - top[n] = &emptyps; - - /* walk all ps's and setup ptrs */ - ps = ps_first; - while ((ps = get_next_ps(ps))) { - for (n = 0; n < 10; n++) { - if (ps->pss_max <= top[n]->pss_max) - continue; - /* cascade insert */ - for (m = 9; m > n; m--) - top[m] = top[m-1]; - top[n] = ps; - break; - } - } - - svg("Top PSS consumers:\n"); - for (n = 0; n < 10; n++) - svg("%dK - %s[%d]\n", - 20 + (n * 13), - top[n]->pss_max, - top[n]->name, - top[n]->pid); + struct ps_struct *top[10]; + struct ps_struct emptyps; + struct ps_struct *ps; + int n, m; + + memset(&emptyps, 0, sizeof(struct ps_struct)); + for (n=0; n < 10; n++) + top[n] = &emptyps; + + /* walk all ps's and setup ptrs */ + ps = ps_first; + while ((ps = get_next_ps(ps))) { + for (n = 0; n < 10; n++) { + if (ps->pss_max <= top[n]->pss_max) + continue; + /* cascade insert */ + for (m = 9; m > n; m--) + top[m] = top[m-1]; + top[n] = ps; + break; + } + } + + svg("Top PSS consumers:\n"); + for (n = 0; n < 10; n++) + svg("%dK - %s[%d]\n", + 20 + (n * 13), + top[n]->pss_max, + top[n]->name, + top[n]->pid); } void svg_do(void) { - struct ps_struct *ps; - - memset(&str, 0, sizeof(str)); - - ps = ps_first; - - /* count initcall thread count first */ - svg_do_initcall(1); - ksize = (kcount ? ps_to_graph(kcount) + (scale_y * 2) : 0); - - /* then count processes */ - while ((ps = get_next_ps(ps))) { - if (!ps_filter(ps)) - pcount++; - else - pfiltered++; - } - psize = ps_to_graph(pcount) + (scale_y * 2); - - esize = (entropy ? scale_y * 7 : 0); - - /* after this, we can draw the header with proper sizing */ - svg_header(); - - svg("\n"); - svg_io_bi_bar(); - svg("\n\n"); - - svg("\n", 400.0 + (scale_y * 7.0)); - svg_io_bo_bar(); - svg("\n\n"); - - svg("\n", 400.0 + (scale_y * 14.0)); - svg_cpu_bar(); - svg("\n\n"); - - svg("\n", 400.0 + (scale_y * 21.0)); - svg_wait_bar(); - svg("\n\n"); - - if (kcount) { - svg("\n", 400.0 + (scale_y * 28.0)); - svg_do_initcall(0); - svg("\n\n"); - } - - svg("\n", 400.0 + (scale_y * 28.0) + ksize); - svg_ps_bars(); - svg("\n\n"); - - svg("\n"); - svg_title(); - svg("\n\n"); - - svg("\n"); - svg_top_ten_cpu(); - svg("\n\n"); - - if (entropy) { - svg("\n", 400.0 + (scale_y * 28.0) + ksize + psize); - svg_entropy_bar(); - svg("\n\n"); - } - - if (pss) { - svg("\n", 400.0 + (scale_y * 28.0) + ksize + psize + esize); - svg_pss_graph(); - svg("\n\n"); - - svg("\n"); - svg_top_ten_pss(); - svg("\n\n"); - } - - /* svg footer */ - svg("\n\n"); + struct ps_struct *ps; + + memset(&str, 0, sizeof(str)); + + ps = ps_first; + + /* count initcall thread count first */ + svg_do_initcall(1); + ksize = (kcount ? ps_to_graph(kcount) + (scale_y * 2) : 0); + + /* then count processes */ + while ((ps = get_next_ps(ps))) { + if (!ps_filter(ps)) + pcount++; + else + pfiltered++; + } + psize = ps_to_graph(pcount) + (scale_y * 2); + + esize = (entropy ? scale_y * 7 : 0); + + /* after this, we can draw the header with proper sizing */ + svg_header(); + + svg("\n"); + svg_io_bi_bar(); + svg("\n\n"); + + svg("\n", 400.0 + (scale_y * 7.0)); + svg_io_bo_bar(); + svg("\n\n"); + + svg("\n", 400.0 + (scale_y * 14.0)); + svg_cpu_bar(); + svg("\n\n"); + + svg("\n", 400.0 + (scale_y * 21.0)); + svg_wait_bar(); + svg("\n\n"); + + if (kcount) { + svg("\n", 400.0 + (scale_y * 28.0)); + svg_do_initcall(0); + svg("\n\n"); + } + + svg("\n", 400.0 + (scale_y * 28.0) + ksize); + svg_ps_bars(); + svg("\n\n"); + + svg("\n"); + svg_title(); + svg("\n\n"); + + svg("\n"); + svg_top_ten_cpu(); + svg("\n\n"); + + if (entropy) { + svg("\n", 400.0 + (scale_y * 28.0) + ksize + psize); + svg_entropy_bar(); + svg("\n\n"); + } + + if (pss) { + svg("\n", 400.0 + (scale_y * 28.0) + ksize + psize + esize); + svg_pss_graph(); + svg("\n\n"); + + svg("\n"); + svg_top_ten_pss(); + svg("\n\n"); + } + + /* svg footer */ + svg("\n\n"); } -- cgit v1.2.1 From b719810db446244ff708a2f5f08566af67ddab61 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 10 Jan 2013 00:54:46 +0100 Subject: dbus: properly serialize calendar timer data As it turns out the bus properties for timer units wre really broken, so let's clean this up for good and properly add calendar timer serialization. We really should get that right before finalizing the bus API documentation in the wiki... --- src/core/dbus-timer.c | 92 +++++++++++++++++++++++++++++++++++++------------- src/core/timer.c | 2 +- src/core/timer.h | 4 +-- src/shared/time-util.c | 2 ++ 4 files changed, 73 insertions(+), 27 deletions(-) diff --git a/src/core/dbus-timer.c b/src/core/dbus-timer.c index b22fcb5934..75add81519 100644 --- a/src/core/dbus-timer.c +++ b/src/core/dbus-timer.c @@ -30,8 +30,10 @@ #define BUS_TIMER_INTERFACE \ " \n" \ " \n" \ - " \n" \ - " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ " \n" \ " \n" @@ -52,11 +54,13 @@ const char bus_timer_interface[] _introspect_("Timer") = BUS_TIMER_INTERFACE; const char bus_timer_invalidating_properties[] = - "Timers\0" - "NextElapseUSec\0" + "TimersMonotonic\0" + "TimersRealtime\0" + "NextElapseUSecRealtime\0" + "NextElapseUSecMonotonic\0" "Result\0"; -static int bus_timer_append_timers(DBusMessageIter *i, const char *property, void *data) { +static int bus_timer_append_monotonic_timers(DBusMessageIter *i, const char *property, void *data) { Timer *p = data; DBusMessageIter sub, sub2; TimerValue *k; @@ -74,23 +78,20 @@ static int bus_timer_append_timers(DBusMessageIter *i, const char *property, voi size_t l; bool b; - t = timer_base_to_string(k->base); + if (k->base == TIMER_CALENDAR) + continue; - if (endswith(t, "Sec")) { + t = timer_base_to_string(k->base); + assert(endswith(t, "Sec")); - /* s/Sec/USec/ */ - l = strlen(t); - buf = new(char, l+2); - if (!buf) - return -ENOMEM; + /* s/Sec/USec/ */ + l = strlen(t); + buf = new(char, l+2); + if (!buf) + return -ENOMEM; - memcpy(buf, t, l-3); - memcpy(buf+l-3, "USec", 5); - } else { - buf = strdup(t); - if (!buf) - return -ENOMEM; - } + memcpy(buf, t, l-3); + memcpy(buf+l-3, "USec", 5); b = dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) && dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &buf) && @@ -108,6 +109,48 @@ static int bus_timer_append_timers(DBusMessageIter *i, const char *property, voi return 0; } +static int bus_timer_append_calendar_timers(DBusMessageIter *i, const char *property, void *data) { + Timer *p = data; + DBusMessageIter sub, sub2; + TimerValue *k; + + assert(i); + assert(property); + assert(p); + + if (!dbus_message_iter_open_container(i, DBUS_TYPE_ARRAY, "(sst)", &sub)) + return -ENOMEM; + + LIST_FOREACH(value, k, p->values) { + _cleanup_free_ char *buf = NULL; + const char *t; + bool b; + int j; + + if (k->base != TIMER_CALENDAR) + continue; + + t = timer_base_to_string(k->base); + j = calendar_spec_to_string(k->calendar_spec, &buf); + if (j < 0) + return j; + + b = dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) && + dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &t) && + dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &buf) && + dbus_message_iter_append_basic(&sub2, DBUS_TYPE_UINT64, &k->next_elapse) && + dbus_message_iter_close_container(&sub, &sub2); + + if (!b) + return -ENOMEM; + } + + if (!dbus_message_iter_close_container(i, &sub)) + return -ENOMEM; + + return 0; +} + static int bus_timer_append_unit(DBusMessageIter *i, const char *property, void *data) { Unit *u = data; Timer *timer = TIMER(u); @@ -125,11 +168,12 @@ static int bus_timer_append_unit(DBusMessageIter *i, const char *property, void static DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_timer_append_timer_result, timer_result, TimerResult); static const BusProperty bus_timer_properties[] = { - { "Unit", bus_timer_append_unit, "s", 0 }, - { "Timers", bus_timer_append_timers, "a(stt)", 0 }, - { "NextElapseUSec", bus_property_append_usec, "t", offsetof(Timer, next_elapse_monotonic) }, - { "NextElapseUSecRealtime", bus_property_append_usec, "t", offsetof(Timer, next_elapse_realtime) }, - { "Result", bus_timer_append_timer_result,"s", offsetof(Timer, result) }, + { "Unit", bus_timer_append_unit, "s", 0 }, + { "TimersMonotonic", bus_timer_append_monotonic_timers, "a(stt)", 0 }, + { "TimersCalendar", bus_timer_append_calendar_timers, "a(sst)", 0 }, + { "NextElapseUSecMonotonic", bus_property_append_usec, "t", offsetof(Timer, next_elapse_monotonic) }, + { "NextElapseUSecRealtime", bus_property_append_usec, "t", offsetof(Timer, next_elapse_realtime) }, + { "Result", bus_timer_append_timer_result, "s", offsetof(Timer, result) }, { NULL, } }; diff --git a/src/core/timer.c b/src/core/timer.c index 31ef176e7e..4453aa0781 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -323,7 +323,7 @@ static void timer_enter_waiting(Timer *t, bool initial) { log_debug_unit(UNIT(t)->id, "%s: Monotonic timer elapses in %s the next time.", UNIT(t)->id, - format_timespan(buf, sizeof(buf), t->next_elapse_monotonic - ts.monotonic)); + format_timespan(buf, sizeof(buf), t->next_elapse_monotonic > ts.monotonic ? t->next_elapse_monotonic - ts.monotonic : 0)); r = unit_watch_timer(UNIT(t), CLOCK_MONOTONIC, false, t->next_elapse_monotonic, &t->monotonic_watch); if (r < 0) diff --git a/src/core/timer.h b/src/core/timer.h index 57a514a68c..10d3ce1116 100644 --- a/src/core/timer.h +++ b/src/core/timer.h @@ -52,8 +52,8 @@ typedef struct TimerValue { bool disabled; clockid_t clock_id; - usec_t value; - CalendarSpec *calendar_spec; + usec_t value; /* only for monotonic events */ + CalendarSpec *calendar_spec; /* only for calendar events */ usec_t next_elapse; LIST_FIELDS(struct TimerValue, value); diff --git a/src/shared/time-util.c b/src/shared/time-util.c index 4fd8f08984..e192d5ef58 100644 --- a/src/shared/time-util.c +++ b/src/shared/time-util.c @@ -230,6 +230,8 @@ char *format_timespan(char *buf, size_t l, usec_t t) { const char *suffix; usec_t usec; } table[] = { + { "y", USEC_PER_YEAR }, + { "month", USEC_PER_MONTH }, { "w", USEC_PER_WEEK }, { "d", USEC_PER_DAY }, { "h", USEC_PER_HOUR }, -- cgit v1.2.1 From 988d77ef2ea05113b54a77ecbd6653e314a9b7d4 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 10 Jan 2013 03:10:47 +0100 Subject: update TODO --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index 4ad2998030..5a276e178d 100644 --- a/TODO +++ b/TODO @@ -19,6 +19,8 @@ F18: Features: +* add a man page "systemdall" that lists all of systemd's man pages, inspired by zsh's "zshall" page + * print a nicer explanation if people use variable/specifier expansion in ExecStart= for the first word * kernel cmdline switch to turn of predictable network interface names -- cgit v1.2.1 From 1d010426c01044350b2b32d8b3af5d064f7dfe27 Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Thu, 10 Jan 2013 14:23:23 +0100 Subject: udev: Fix device matching in the accelerometer As we were searching by ID_PATH, it would have been possible for us to find a sibling device instead of the device we were looking for. This fixes device matching on the WeTab with the upstream kernel, as it was trying to use the "Asus Laptop extra buttons" device instead of the accelerometer. --- src/udev/accelerometer/accelerometer.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/udev/accelerometer/accelerometer.c b/src/udev/accelerometer/accelerometer.c index 21f51936ee..2fea3889c7 100644 --- a/src/udev/accelerometer/accelerometer.c +++ b/src/udev/accelerometer/accelerometer.c @@ -257,7 +257,6 @@ int main (int argc, char** argv) char devpath[PATH_MAX]; char *devnode; - const char *id_path; struct udev_enumerate *enumerate; struct udev_list_entry *list_entry; @@ -303,18 +302,10 @@ int main (int argc, char** argv) return 1; } - id_path = udev_device_get_property_value(dev, "ID_PATH"); - if (id_path == NULL) { - fprintf (stderr, "unable to get property ID_PATH for '%s'", devpath); - return 0; - } - /* Get the children devices and find the devnode */ - /* FIXME: use udev_enumerate_add_match_parent() instead */ devnode = NULL; enumerate = udev_enumerate_new(udev); - udev_enumerate_add_match_property(enumerate, "ID_PATH", id_path); - udev_enumerate_add_match_subsystem(enumerate, "input"); + udev_enumerate_add_match_parent(enumerate, dev); udev_enumerate_scan_devices(enumerate); udev_list_entry_foreach(list_entry, udev_enumerate_get_list_entry(enumerate)) { struct udev_device *device; -- cgit v1.2.1 From ef2648c12793ded136eb81b2482f84027cade614 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Thu, 10 Jan 2013 14:36:42 +0100 Subject: bootchart: make sure that every read buffer is null terminated --- src/bootchart/log.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/bootchart/log.c b/src/bootchart/log.c index eda001a20e..78f0cab178 100644 --- a/src/bootchart/log.c +++ b/src/bootchart/log.c @@ -182,8 +182,10 @@ schedstat_next: if (e_fd) { n = pread(e_fd, buf, sizeof(buf) - 1, 0); - if (n > 0) + if (n > 0) { + buf[n] = '\0'; entropy_avail[sample] = atoi(buf); + } } } @@ -256,6 +258,7 @@ schedstat_next: close(ps->sched); continue; } + buf[s] = '\0'; if (!sscanf(buf, "%s %*s %*s", key)) continue; @@ -337,8 +340,8 @@ schedstat_next: if (ps->schedstat == -1) continue; } - - if (pread(ps->schedstat, buf, sizeof(buf) - 1, 0) <= 0) { + s = pread(ps->schedstat, buf, sizeof(buf) - 1, 0); + if (s <= 0) { /* clean up our file descriptors - assume that the process exited */ close(ps->schedstat); if (ps->sched) @@ -347,6 +350,8 @@ schedstat_next: // fclose(ps->smaps); continue; } + buf[s] = '\0'; + if (!sscanf(buf, "%s %s %*s", rt, wt)) continue; @@ -401,7 +406,8 @@ catch_rename: if (ps->sched == -1) continue; } - if (pread(ps->sched, buf, sizeof(buf) - 1, 0) <= 0) { + s = pread(ps->sched, buf, sizeof(buf) - 1, 0); + if (s <= 0) { /* clean up file descriptors */ close(ps->sched); if (ps->schedstat) @@ -410,6 +416,7 @@ catch_rename: // fclose(ps->smaps); continue; } + buf[s] = '\0'; if (!sscanf(buf, "%s %*s %*s", key)) continue; -- cgit v1.2.1 From db91ea32aa223d1b087d99811226a9c59a1bb281 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 9 Jan 2013 19:14:32 -0500 Subject: journald: use automatic cleanup --- src/journal/journald-server.c | 96 ++++++++++++------------------------------- 1 file changed, 26 insertions(+), 70 deletions(-) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 43ffe75560..60e5a913a7 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -91,13 +91,14 @@ DEFINE_STRING_TABLE_LOOKUP(split_mode, SplitMode); DEFINE_CONFIG_PARSE_ENUM(config_parse_split_mode, split_mode, SplitMode, "Failed to parse split mode setting"); static uint64_t available_space(Server *s) { - char ids[33], *p; + char ids[33]; + char _cleanup_free_ *p = NULL; const char *f; sd_id128_t machine; struct statvfs ss; uint64_t sum = 0, avail = 0, ss_avail = 0; int r; - DIR *d; + DIR _cleanup_closedir_ *d = NULL; usec_t ts; JournalMetrics *m; @@ -125,13 +126,11 @@ static uint64_t available_space(Server *s) { return 0; d = opendir(p); - free(p); - if (!d) return 0; if (fstatvfs(dirfd(d), &ss) < 0) - goto finish; + return 0; for (;;) { struct stat st; @@ -170,9 +169,6 @@ static uint64_t available_space(Server *s) { s->cached_available_space = avail; s->cached_available_space_timestamp = ts; -finish: - closedir(d); - return avail; } @@ -396,7 +392,8 @@ void server_vacuum(Server *s) { static char *shortened_cgroup_path(pid_t pid) { int r; - char *process_path, *init_path, *path; + char _cleanup_free_ *process_path = NULL, *init_path = NULL; + char *path; assert(pid > 0); @@ -405,10 +402,8 @@ static char *shortened_cgroup_path(pid_t pid) { return NULL; r = cg_get_by_pid(SYSTEMD_CGROUP_CONTROLLER, 1, &init_path); - if (r < 0) { - free(process_path); + if (r < 0) return NULL; - } if (endswith(init_path, "/system")) init_path[strlen(init_path) - 7] = 0; @@ -416,23 +411,12 @@ static char *shortened_cgroup_path(pid_t pid) { init_path[0] = 0; if (startswith(process_path, init_path)) { - char *p; - - p = strdup(process_path + strlen(init_path)); - if (!p) { - free(process_path); - free(init_path); - return NULL; - } - path = p; + path = strdup(process_path + strlen(init_path)); } else { path = process_path; process_path = NULL; } - free(process_path); - free(init_path); - return path; } @@ -519,7 +503,7 @@ static void dispatch_message_real( const char *label, size_t label_len, const char *unit_id) { - char *pid = NULL, *uid = NULL, *gid = NULL, + char _cleanup_free_ *pid = NULL, *uid = NULL, *gid = NULL, *source_time = NULL, *boot_id = NULL, *machine_id = NULL, *comm = NULL, *cmdline = NULL, *hostname = NULL, *audit_session = NULL, *audit_loginuid = NULL, @@ -679,24 +663,6 @@ static void dispatch_message_real( s->split_mode == SPLIT_NONE ? 0 : (s->split_mode == SPLIT_UID ? realuid : (realuid == 0 ? 0 : loginuid)), iovec, n); - - free(pid); - free(uid); - free(gid); - free(comm); - free(exe); - free(cmdline); - free(source_time); - free(boot_id); - free(machine_id); - free(hostname); - free(audit_session); - free(audit_loginuid); - free(cgroup); - free(session); - free(owner_uid); - free(unit); - free(selinux_context); } void server_driver_message(Server *s, sd_id128_t message_id, const char *format, ...) { @@ -744,7 +710,8 @@ void server_dispatch_message( int priority) { int rl; - char *path = NULL, *c; + char _cleanup_free_ *path = NULL; + char *c; assert(s); assert(iovec || n == 0); @@ -778,18 +745,16 @@ void server_dispatch_message( } } - rl = journal_rate_limit_test(s->rate_limit, path, priority & LOG_PRIMASK, available_space(s)); + rl = journal_rate_limit_test(s->rate_limit, path, + priority & LOG_PRIMASK, available_space(s)); - if (rl == 0) { - free(path); + if (rl == 0) return; - } /* Write a suppression message if we suppressed something */ if (rl > 1) - server_driver_message(s, SD_MESSAGE_JOURNAL_DROPPED, "Suppressed %u messages from %s", rl - 1, path); - - free(path); + server_driver_message(s, SD_MESSAGE_JOURNAL_DROPPED, + "Suppressed %u messages from %s", rl - 1, path); finish: dispatch_message_real(s, iovec, n, m, ucred, tv, label, label_len, unit_id); @@ -1234,7 +1199,8 @@ static int open_signalfd(Server *s) { } static int server_parse_proc_cmdline(Server *s) { - char *line, *w, *state; + char _cleanup_free_ *line = NULL; + char *w, *state; int r; size_t l; @@ -1248,13 +1214,11 @@ static int server_parse_proc_cmdline(Server *s) { } FOREACH_WORD_QUOTED(w, l, line, state) { - char *word; + char _cleanup_free_ *word; word = strndup(w, l); - if (!word) { - r = -ENOMEM; - goto finish; - } + if (!word) + return -ENOMEM; if (startswith(word, "systemd.journald.forward_to_syslog=")) { r = parse_boolean(word + 35); @@ -1276,25 +1240,18 @@ static int server_parse_proc_cmdline(Server *s) { s->forward_to_console = r; } else if (startswith(word, "systemd.journald")) log_warning("Invalid systemd.journald parameter. Ignoring."); - - free(word); } - r = 0; - -finish: - free(line); - return r; + return 0; } static int server_parse_config_file(Server *s) { - FILE *f; - const char *fn; + static const char *fn = "/etc/systemd/journald.conf"; + FILE _cleanup_fclose_ *f = NULL; int r; assert(s); - fn = "/etc/systemd/journald.conf"; f = fopen(fn, "re"); if (!f) { if (errno == ENOENT) @@ -1304,12 +1261,11 @@ static int server_parse_config_file(Server *s) { return -errno; } - r = config_parse(fn, f, "Journal\0", config_item_perf_lookup, (void*) journald_gperf_lookup, false, s); + r = config_parse(fn, f, "Journal\0", config_item_perf_lookup, + (void*) journald_gperf_lookup, false, s); if (r < 0) log_warning("Failed to parse configuration file: %s", strerror(-r)); - fclose(f); - return r; } -- cgit v1.2.1 From 53f5329f7aa321d72847cd7f8f28da9a7db80331 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Thu, 10 Jan 2013 11:34:58 -0800 Subject: bootchart: Convert !strcmp usage to streq --- src/bootchart/bootchart.c | 21 +++++++++++---------- src/bootchart/log.c | 5 +++-- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 3d77bab129..7bcfd98249 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -28,6 +28,7 @@ #include "bootchart.h" +#include "util.h" double graph_start; double log_start; @@ -109,25 +110,25 @@ int main(int argc, char *argv[]) // todo: filter leading/trailing whitespace - if (!strcmp(key, "samples")) + if (streq(key, "samples")) len = atoi(val); - if (!strcmp(key, "freq")) + if (streq(key, "freq")) hz = atof(val); - if (!strcmp(key, "rel")) + if (streq(key, "rel")) relative = atoi(val); - if (!strcmp(key, "filter")) + if (streq(key, "filter")) filter = atoi(val); - if (!strcmp(key, "pss")) + if (streq(key, "pss")) pss = atoi(val); - if (!strcmp(key, "output")) + if (streq(key, "output")) strncpy(output_path, val, PATH_MAX - 1); - if (!strcmp(key, "init")) + if (streq(key, "init")) strncpy(init_path, val, PATH_MAX - 1); - if (!strcmp(key, "scale_x")) + if (streq(key, "scale_x")) scale_x = atof(val); - if (!strcmp(key, "scale_y")) + if (streq(key, "scale_y")) scale_y = atof(val); - if (!strcmp(key, "entropy")) + if (streq(key, "entropy")) entropy = atoi(val); } fclose(f); diff --git a/src/bootchart/log.c b/src/bootchart/log.c index 78f0cab178..c697121814 100644 --- a/src/bootchart/log.c +++ b/src/bootchart/log.c @@ -26,6 +26,7 @@ #include "bootchart.h" +#include "util.h" /* * Alloc a static 4k buffer for stdio - primarily used to increase @@ -125,9 +126,9 @@ void log_sample(int sample) while (m) { if (sscanf(m, "%s %s", key, val) < 2) goto vmstat_next; - if (!strcmp(key, "pgpgin")) + if (streq(key, "pgpgin")) blockstat[sample].bi = atoi(val); - if (!strcmp(key, "pgpgout")) { + if (streq(key, "pgpgout")) { blockstat[sample].bo = atoi(val); break; } -- cgit v1.2.1 From a2e9b3380804c9eff565836b0e32b88389d4391c Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Thu, 10 Jan 2013 11:35:00 -0800 Subject: bootchart: Convert malloc/memset to calloc --- src/bootchart/bootchart.c | 5 ++--- src/bootchart/log.c | 10 ++++------ 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 7bcfd98249..37d8fbe6e9 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -232,12 +232,11 @@ int main(int argc, char *argv[]) } /* start with empty ps LL */ - ps_first = malloc(sizeof(struct ps_struct)); + ps_first = calloc(1, sizeof(struct ps_struct)); if (!ps_first) { - perror("malloc(ps_struct)"); + perror("calloc(ps_struct)"); exit(EXIT_FAILURE); } - memset(ps_first, 0, sizeof(struct ps_struct)); /* handle TERM/INT nicely */ memset(&sig, 0, sizeof(struct sigaction)); diff --git a/src/bootchart/log.c b/src/bootchart/log.c index c697121814..e41689d611 100644 --- a/src/bootchart/log.c +++ b/src/bootchart/log.c @@ -225,21 +225,19 @@ schedstat_next: char t[32]; struct ps_struct *parent; - ps->next_ps = malloc(sizeof(struct ps_struct)); + ps->next_ps = calloc(1, sizeof(struct ps_struct)); if (!ps->next_ps) { - perror("malloc(ps_struct)"); + perror("calloc(ps_struct)"); exit (EXIT_FAILURE); } - memset(ps->next_ps, 0, sizeof(struct ps_struct)); ps = ps->next_ps; ps->pid = pid; - ps->sample = malloc(sizeof(struct ps_sched_struct) * (len + 1)); + ps->sample = calloc(len + 1, sizeof(struct ps_sched_struct)); if (!ps->sample) { - perror("malloc(ps_struct)"); + perror("calloc(ps_struct)"); exit (EXIT_FAILURE); } - memset(ps->sample, 0, sizeof(struct ps_sched_struct) * (len + 1)); pscount++; -- cgit v1.2.1 From 2c408fbf64af68c0fa6e882a2a34e5e7bf342ff6 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Thu, 10 Jan 2013 11:34:59 -0800 Subject: bootchart: fix a -Wshadow warning for "now" --- src/bootchart/log.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/bootchart/log.c b/src/bootchart/log.c index e41689d611..48002fafd0 100644 --- a/src/bootchart/log.c +++ b/src/bootchart/log.c @@ -39,11 +39,11 @@ DIR *proc; double gettime_ns(void) { - struct timespec now; + struct timespec n; - clock_gettime(CLOCK_MONOTONIC, &now); + clock_gettime(CLOCK_MONOTONIC, &n); - return (now.tv_sec + (now.tv_nsec / 1000000000.0)); + return (n.tv_sec + (n.tv_nsec / 1000000000.0)); } -- cgit v1.2.1 From 52edb22835c264d3c5b15b74993c34b4ec979ef5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 10 Jan 2013 15:42:31 -0500 Subject: build-sys: fix 'make distcheck' w/o sysvinit compat EXTRA_DIST must unconditionally contain all source files. --- Makefile.am | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/Makefile.am b/Makefile.am index 2ba8d55792..11bb9b3c4c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -377,24 +377,22 @@ EXTRA_DIST += \ introspect.awk \ man/custom-html.xsl -if HAVE_KMOD EXTRA_DIST += \ units/systemd-modules-load.service.in -endif if HAVE_SYSV_COMPAT nodist_systemunit_DATA += \ units/rc-local.service \ units/halt-local.service -EXTRA_DIST += \ - units/rc-local.service.in \ - units/halt-local.service.in - systemgenerator_PROGRAMS += \ systemd-rc-local-generator endif +EXTRA_DIST += \ + units/rc-local.service.in \ + units/halt-local.service.in + dist_doc_DATA = \ README \ NEWS \ @@ -3944,16 +3942,16 @@ docs/sysvinit/README: docs/sysvinit/README.in docs/var-log/README: docs/var-log/README.in $(SED_PROCESS) -EXTRA_DIST += \ - docs/sysvinit/README.in \ - docs/var-log/README.in - CLEANFILES += \ docs/sysvinit/README \ docs/var-log/README endif +EXTRA_DIST += \ + docs/sysvinit/README.in \ + docs/var-log/README.in + EXTRA_DIST += \ shell-completion/systemd-zsh-completion.zsh -- cgit v1.2.1 From d354315ff7a4e128aea58583a3cbedbf86e69196 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 10 Jan 2013 15:43:20 -0500 Subject: build-sys: do not install to / in 'make distcheck' --- Makefile.am | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 11bb9b3c4c..33188294a9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4105,11 +4105,14 @@ DISTCHECK_CONFIGURE_FLAGS = \ --with-rootprefix=$$dc_install_base \ --disable-split-usr - if HAVE_SYSV_COMPAT DISTCHECK_CONFIGURE_FLAGS += \ --with-sysvinit-path=$$dc_install_base/$(sysvinitdir) \ --with-sysvrcnd-path=$$dc_install_base/$(sysvrcnddir) +else +DISTCHECK_CONFIGURE_FLAGS += \ + --with-sysvinit-path= \ + --with-sysvrcnd-path= endif if ENABLE_GTK_DOC -- cgit v1.2.1 From 5dd9014faf58bf974352043fbddd3a8e9c3cd9d9 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 10 Jan 2013 22:45:45 +0100 Subject: dbus: duplicate Job.Cancel() as CancelJob() and Snapshot.Remove() as RemoveSnapshot() on the Manager interface For all other object mehtods there are already counterparts on the manager object, as they help us reduce round-trips. So let's complete this, and reduce complexity on the client side a bit. As a side effect this also makes "systemctl snapshot" without arguments work again. --- src/core/dbus-job.c | 4 +- src/core/dbus-manager.c | 60 +++++++++++++++++++++- src/core/dbus-snapshot.c | 20 ++------ src/systemctl/systemctl.c | 125 +++++++++++++--------------------------------- 4 files changed, 99 insertions(+), 110 deletions(-) diff --git a/src/core/dbus-job.c b/src/core/dbus-job.c index fdc1dce177..20c2a62338 100644 --- a/src/core/dbus-job.c +++ b/src/core/dbus-job.c @@ -101,12 +101,11 @@ static DBusHandlerResult bus_job_message_dispatch(Job *j, DBusConnection *connec if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Job", "Cancel")) { SELINUX_UNIT_ACCESS_CHECK(j->unit, connection, message, "stop"); + job_finish_and_invalidate(j, JOB_CANCELED, true); reply = dbus_message_new_method_return(message); if (!reply) return DBUS_HANDLER_RESULT_NEED_MEMORY; - - job_finish_and_invalidate(j, JOB_CANCELED, true); } else { const BusBoundProperties bps[] = { { "org.freedesktop.systemd1.Job", bus_job_properties, j }, @@ -114,7 +113,6 @@ static DBusHandlerResult bus_job_message_dispatch(Job *j, DBusConnection *connec }; SELINUX_UNIT_ACCESS_CHECK(j->unit, connection, message, "status"); - return bus_default_message_handler(connection, message, INTROSPECTION, INTERFACES_LIST, bps); } diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 859fa1a906..2d9cea676f 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -106,6 +106,9 @@ " \n" \ " \n" \ " \n" \ + " \n" \ + " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -124,6 +127,9 @@ " \n" \ " \n" \ " \n" \ + " \n" \ + " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -774,10 +780,33 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, DBUS_TYPE_INVALID)) goto oom; + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "CancelJob")) { + uint32_t id; + Job *j; + + if (!dbus_message_get_args( + message, + &error, + DBUS_TYPE_UINT32, &id, + DBUS_TYPE_INVALID)) + return bus_send_error_reply(connection, message, &error, -EINVAL); + + j = manager_get_job(m, id); + if (!j) { + dbus_set_error(&error, BUS_ERROR_NO_SUCH_JOB, "Job %u does not exist.", (unsigned) id); + return bus_send_error_reply(connection, message, &error, -ENOENT); + } + + SELINUX_UNIT_ACCESS_CHECK(j->unit, connection, message, "stop"); + job_finish_and_invalidate(j, JOB_CANCELED, true); + + reply = dbus_message_new_method_return(message); + if (!reply) + goto oom; + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "ClearJobs")) { SELINUX_ACCESS_CHECK(connection, message, "reboot"); - manager_clear_jobs(m); reply = dbus_message_new_method_return(message); @@ -1080,6 +1109,35 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, DBUS_TYPE_INVALID)) goto oom; + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "RemoveSnapshot")) { + const char *name; + Unit *u; + + if (!dbus_message_get_args( + message, + &error, + DBUS_TYPE_STRING, &name, + DBUS_TYPE_INVALID)) + return bus_send_error_reply(connection, message, &error, -EINVAL); + + u = manager_get_unit(m, name); + if (!u) { + dbus_set_error(&error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s does not exist.", name); + return bus_send_error_reply(connection, message, &error, -ENOENT); + } + + if (u->type != UNIT_SNAPSHOT) { + dbus_set_error(&error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s is not a snapshot.", name); + return bus_send_error_reply(connection, message, &error, -ENOENT); + } + + SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "stop"); + snapshot_remove(SNAPSHOT(u)); + + reply = dbus_message_new_method_return(message); + if (!reply) + goto oom; + } else if (dbus_message_is_method_call(message, "org.freedesktop.DBus.Introspectable", "Introspect")) { char *introspection = NULL; FILE *f; diff --git a/src/core/dbus-snapshot.c b/src/core/dbus-snapshot.c index 435c6df39c..02cfcb1829 100644 --- a/src/core/dbus-snapshot.c +++ b/src/core/dbus-snapshot.c @@ -54,19 +54,16 @@ static const BusProperty bus_snapshot_properties[] = { DBusHandlerResult bus_snapshot_message_handler(Unit *u, DBusConnection *c, DBusMessage *message) { Snapshot *s = SNAPSHOT(u); _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; - DBusError error; - - dbus_error_init(&error); if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Snapshot", "Remove")) { SELINUX_UNIT_ACCESS_CHECK(u, c, message, "stop"); - snapshot_remove(SNAPSHOT(u)); - reply = dbus_message_new_method_return(message); if (!reply) - goto oom; + return DBUS_HANDLER_RESULT_NEED_MEMORY; + + snapshot_remove(SNAPSHOT(u)); } else { const BusBoundProperties bps[] = { @@ -80,15 +77,8 @@ DBusHandlerResult bus_snapshot_message_handler(Unit *u, DBusConnection *c, DBusM return bus_default_message_handler(c, message, INTROSPECTION, INTERFACES_LIST, bps); } - if (reply) { - if (!dbus_connection_send(c, reply, NULL)) - goto oom; - } + if (!dbus_connection_send(c, reply, NULL)) + return DBUS_HANDLER_RESULT_NEED_MEMORY; return DBUS_HANDLER_RESULT_HANDLED; - -oom: - dbus_error_free(&error); - - return DBUS_HANDLER_RESULT_NEED_MEMORY; } diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 2ebfff8daf..b4c4ea36dc 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1032,12 +1032,14 @@ finish: } static int load_unit(DBusConnection *bus, char **args) { - int r = 0; - char **name, *n; + char **name; assert(args); STRV_FOREACH(name, args+1) { + _cleanup_free_ char *n = NULL; + int r; + n = unit_name_mangle(*name); r = bus_method_call_with_reply ( bus, @@ -1049,18 +1051,14 @@ static int load_unit(DBusConnection *bus, char **args) { NULL, DBUS_TYPE_STRING, n ? &n : name, DBUS_TYPE_INVALID); - free(n); - if (r) - goto finish; + if (r < 0) + return r; } -finish: - return r; + return 0; } static int cancel_job(DBusConnection *bus, char **args) { - DBusMessage *reply = NULL; - int r = 0; char **name; assert(args); @@ -1069,54 +1067,30 @@ static int cancel_job(DBusConnection *bus, char **args) { return daemon_reload(bus, args); STRV_FOREACH(name, args+1) { - unsigned id; - const char *path; + uint32_t id; + int r; - r = safe_atou(*name, &id); + r = safe_atou32(*name, &id); if (r < 0) { log_error("Failed to parse job id: %s", strerror(-r)); - goto finish; + return r; } - assert_cc(sizeof(uint32_t) == sizeof(id)); - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", - "GetJob", - &reply, - NULL, - DBUS_TYPE_UINT32, &id, - DBUS_TYPE_INVALID); - if (r) - goto finish; - - if (!dbus_message_get_args(reply, NULL, - DBUS_TYPE_OBJECT_PATH, &path, - DBUS_TYPE_INVALID)) { - log_error("Failed to parse reply"); - dbus_message_unref(reply); - r = -EIO; - goto finish; - } - dbus_message_unref(reply); - - r = bus_method_call_with_reply ( - bus, - "org.freedesktop.systemd1", - path, - "org.freedesktop.systemd1.Job", - "Cancel", + "CancelJob", NULL, NULL, + DBUS_TYPE_UINT32, &id, DBUS_TYPE_INVALID); - if (r) - goto finish; + if (r < 0) + return r; } -finish: - return r; + return 0; } static bool need_daemon_reload(DBusConnection *bus, const char *unit) { @@ -3062,7 +3036,7 @@ finish: } static int snapshot(DBusConnection *bus, char **args) { - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; DBusError error; int r; dbus_bool_t cleanup = FALSE; @@ -3071,14 +3045,15 @@ static int snapshot(DBusConnection *bus, char **args) { *name = "", *path, *id, *interface = "org.freedesktop.systemd1.Unit", *property = "Id"; - char *n; + _cleanup_free_ char *n = NULL; dbus_error_init(&error); - if (strv_length(args) > 1) + if (strv_length(args) > 1) { name = args[1]; + n = unit_name_mangle(name); + } - n = unit_name_mangle(name); r = bus_method_call_with_reply ( bus, "org.freedesktop.systemd1", @@ -3090,8 +3065,7 @@ static int snapshot(DBusConnection *bus, char **args) { DBUS_TYPE_STRING, n ? (const char**) &n : &name, DBUS_TYPE_BOOLEAN, &cleanup, DBUS_TYPE_INVALID); - free(n); - if (r) + if (r < 0) goto finish; if (!dbus_message_get_args(reply, &error, @@ -3103,6 +3077,8 @@ static int snapshot(DBusConnection *bus, char **args) { } dbus_message_unref(reply); + reply = NULL; + r = bus_method_call_with_reply ( bus, "org.freedesktop.systemd1", @@ -3114,7 +3090,7 @@ static int snapshot(DBusConnection *bus, char **args) { DBUS_TYPE_STRING, &interface, DBUS_TYPE_STRING, &property, DBUS_TYPE_INVALID); - if (r) + if (r < 0) goto finish; if (!dbus_message_iter_init(reply, &iter) || @@ -3138,69 +3114,36 @@ static int snapshot(DBusConnection *bus, char **args) { puts(id); finish: - if (reply) - dbus_message_unref(reply); - dbus_error_free(&error); return r; } static int delete_snapshot(DBusConnection *bus, char **args) { - DBusMessage *reply = NULL; - int r = 0; - DBusError error; char **name; assert(args); - dbus_error_init(&error); - STRV_FOREACH(name, args+1) { - const char *path = NULL; - char *n; + _cleanup_free_ char *n = NULL; + int r; n = unit_name_mangle(*name); - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", - "GetUnit", - &reply, - NULL, - DBUS_TYPE_STRING, n ? &n : name, - DBUS_TYPE_INVALID); - free(n); - if (r) - goto finish; - - if (!dbus_message_get_args(reply, &error, - DBUS_TYPE_OBJECT_PATH, &path, - DBUS_TYPE_INVALID)) { - log_error("Failed to parse reply: %s", bus_error_message(&error)); - r = -EIO; - dbus_message_unref(reply); - dbus_error_free(&error); - goto finish; - } - dbus_message_unref(reply); - - r = bus_method_call_with_reply ( - bus, - "org.freedesktop.systemd1", - path, - "org.freedesktop.systemd1.Snapshot", - "Remove", + "RemoveSnapshot", NULL, NULL, + DBUS_TYPE_STRING, n ? &n : name, DBUS_TYPE_INVALID); - if (r) - goto finish; + if (r < 0) + return r; } -finish: - return r; + return 0; } static int daemon_reload(DBusConnection *bus, char **args) { -- cgit v1.2.1 From 8afbb8e1180dce3cb33a14fc3ec5afcf501104e6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 11 Jan 2013 00:21:06 +0100 Subject: unit: allow extension of unit files with .d/*.conf drop-ins For all unit files foobar.service we will now read foobar.service.d/*.conf, too. This may be used to override certain unit settings without having to edit unit files directly. This makes it really easy to change specific settings for services without having to edit any unit file: mkdir /etc/systemd/system/avahi-daemon.service.d/ echo -e '[Service]\nNice=99' > /etc/systemd/system/avahi-daemon.service.d/nice.conf systemctl daemon-reload --- man/systemd.unit.xml | 284 ++++++++++++++++++++++++++----------------------- src/core/load-dropin.c | 63 +++++++---- src/core/unit.c | 20 ++-- 3 files changed, 207 insertions(+), 160 deletions(-) diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 54671e7f19..bba0f5d29f 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -81,7 +81,7 @@ sections of the unit files. In addition to the generic [Unit] and [Install] - sections described here, each unit should have a + sections described here, each unit may have a type-specific section, e.g. [Service] for a service unit. See the respective man pages for more information. @@ -106,12 +106,14 @@ Time span values encoded in unit files can be written in various formats. A stand-alone number specifies a time in seconds. If suffixed with a time - unit, the unit is honored. A concatenation of - multiple values with units is supported, in which case - the values are added up. Example: "50" refers to 50 + unit, the unit is honored. A concatenation of multiple + values with units is supported, in which case the + values are added up. Example: "50" refers to 50 seconds; "2min 200ms" refers to 2 minutes plus 200 milliseconds, i.e. 120200ms. The following time units - are understood: s, min, h, d, w, ms, us. For details see systemd.time7. + are understood: s, min, h, d, w, ms, us. For details + see + systemd.time7. Empty lines and lines starting with # or ; are ignored. This may be used for commenting. Lines ending @@ -119,32 +121,42 @@ line while reading and the backslash is replaced by a space character. This may be used to wrap long lines. - If a line starts with - followed by a file name, the specified file will be - parsed at this point. Make sure that the file that is - included has the appropriate section headers before - any directives. - Along with a unit file - foo.service a directory + foo.service the directory foo.service.wants/ may exist. All - units symlinked from such a directory are implicitly - added as dependencies of type + unit files symlinked from such a directory are + implicitly added as dependencies of type Wanted= to the unit. This is useful to hook units into the start-up of other units, - without having to modify their unit configuration - files. For details about the semantics of - Wanted= see below. The preferred - way to create symlinks in the - .wants/ directory of a service is - with the enable command of the + without having to modify their unit files. For details + about the semantics of Wanted= see + below. The preferred way to create symlinks in the + .wants/ directory of a unit file + is with the enable command of the systemctl1 tool which reads information from the [Install] - section of unit files. (See below.) A similar + section of unit files (see below). A similar functionality exists for Requires= type dependencies as well, the directory suffix is .requires/ in this case. + Along with a unit file + foo.service a directory + foo.service.d/ may exist. All + files with the suffix .conf from + this directory will be parsed after the file itself is + parsed. This is useful to alter or add configuration + settings to a unit, without having to modify their + unit files. Make sure that the file that is included + has the appropriate section headers before any + directive. + + If a line starts with + followed by a file name, the specified file will be + parsed at this point. Make sure that the file that is + included has the appropriate section headers before + any directives. + Note that while systemd offers a flexible dependency system between units it is recommended to use this functionality only sparsely and instead rely @@ -186,116 +198,7 @@ To refer to the instance string from within the configuration file you may use the special %i specifier in many of the - configuration options. Other specifiers exist, the - full list is: - - - Specifiers available in unit files - - - - - - - Specifier - Meaning - Details - - - - - %n - Full unit name - - - - %N - Unescaped full unit name - - - - %p - Prefix name - This refers to the string before the @, i.e. "getty" in the example above, where "tty3" is the instance name. - - - %P - Unescaped prefix name - - - - %i - Instance name - This is the string between the @ character and the suffix. - - - %I - Unescaped instance name - - - - %f - Unescaped file name - This is either the unescaped instance name (if set) with / prepended (if necessary), or the prefix name similarly prepended with /. - - - %c - Control group path of the unit - - - - %r - Root control group path of systemd - - - - %R - Parent directory of the root control group path of systemd - - - - %t - Runtime socket dir - This is either /run (for the system manager) or $XDG_RUNTIME_DIR (for user managers). - - - %u - User name - This is the name of the configured user of the unit, or (if none is set) the user running the systemd instance. - - - %U - User uid - This is the uid of the configured user of the unit, or (if none is set) the user running the systemd instance. - - - %h - User home directory - This is the home directory of the configured user of the unit, or (if none is set) the user running the systemd instance. - - - %s - User shell - This is the shell of the configured user of the unit, or (if none is set) the user running the systemd instance. - - - %m - Machine ID - The machine ID of the running system, formatted as string. See machine-id5 for more information. - - - %b - Boot ID - The boot ID of the running system, formatted as string. See random4 for more information. - - - %H - Host name - The host name of the running system. - - - -
+ configuration options. See below for details.
If a unit file is empty (i.e. has the file size 0) or is symlinked to /dev/null @@ -309,6 +212,7 @@ Interface Stability Promise. + @@ -1084,6 +988,124 @@ + + Specifiers + + Many settings resolve specifiers which may be + used to write generic unit files referring to runtime + or unit parameters that are replaced when the unit + files are loaded. The following specifiers are + understood: + + + Specifiers available in unit files + + + + + + + Specifier + Meaning + Details + + + + + %n + Full unit name + + + + %N + Unescaped full unit name + + + + %p + Prefix name + For instantiated units this refers to the string before the @. For non-instantiated units this refers to to the name of the unit with the type suffix removed. + + + %P + Unescaped prefix name + + + + %i + Instance name + For instantiated units: this is the string between the @ character and the suffix. + + + %I + Unescaped instance name + + + + %f + Unescaped file name + This is either the unescaped instance name (if applicable) with / prepended (if applicable), or the prefix name similarly prepended with /. + + + %c + Control group path of the unit + + + + %r + Root control group path of systemd + + + + %R + Parent directory of the root control group path of systemd + + + + %t + Runtime socket dir + This is either /run (for the system manager) or $XDG_RUNTIME_DIR (for user managers). + + + %u + User name + This is the name of the configured user of the unit, or (if none is set) the user running the systemd instance. + + + %U + User UID + This is the UID of the configured user of the unit, or (if none is set) the user running the systemd instance. + + + %h + User home directory + This is the home directory of the configured user of the unit, or (if none is set) the user running the systemd instance. + + + %s + User shell + This is the shell of the configured user of the unit, or (if none is set) the user running the systemd instance. + + + %m + Machine ID + The machine ID of the running system, formatted as string. See machine-id5 for more information. + + + %b + Boot ID + The boot ID of the running system, formatted as string. See random4 for more information. + + + %H + Host name + The host name of the running system. + + + +
+
+ See Also diff --git a/src/core/load-dropin.c b/src/core/load-dropin.c index 86f81c7484..8e10d8fb4c 100644 --- a/src/core/load-dropin.c +++ b/src/core/load-dropin.c @@ -27,10 +27,21 @@ #include "log.h" #include "strv.h" #include "unit-name.h" +#include "conf-parser.h" +#include "load-fragment.h" + +static int load_dropin_config_file(Unit *u, const char *path) { + assert(u); + assert(path); + + if (!endswith(path, ".conf")) + return 0; + + return config_parse(path, NULL, UNIT_VTABLE(u)->sections, config_item_perf_lookup, (void*) load_fragment_gperf_lookup, false, u); +} static int iterate_dir(Unit *u, const char *path, UnitDependency dependency) { - DIR *d; - struct dirent *de; + _cleanup_closedir_ DIR *d = NULL; int r; assert(u); @@ -38,37 +49,46 @@ static int iterate_dir(Unit *u, const char *path, UnitDependency dependency) { d = opendir(path); if (!d) { - if (errno == ENOENT) return 0; return -errno; } - while ((de = readdir(d))) { - char *f; + for (;;) { + struct dirent *de; + union dirent_storage buf; + _cleanup_free_ char *f = NULL; + int k; + + k = readdir_r(d, &buf.de, &de); + if (k != 0) { + log_error("Failed to read directory %s: %s", path, strerror(k)); + return -k; + } + + if (!de) + break; if (ignore_file(de->d_name)) continue; f = strjoin(path, "/", de->d_name, NULL); - if (!f) { - r = -ENOMEM; - goto finish; - } + if (!f) + return log_oom(); - r = unit_add_dependency_by_name(u, dependency, de->d_name, f, true); - free(f); - - if (r < 0) - log_error("Cannot add dependency %s to %s, ignoring: %s", de->d_name, u->id, strerror(-r)); + if (dependency >= 0) { + r = unit_add_dependency_by_name(u, dependency, de->d_name, f, true); + if (r < 0) + log_error("Cannot add dependency %s to %s, ignoring: %s", de->d_name, u->id, strerror(-r)); + } else { + r = load_dropin_config_file(u, f); + if (r < 0) + log_error("Cannot load drop-in configuration file %s for %s, ignoring: %s", f, u->id, strerror(-r)); + } } - r = 0; - -finish: - closedir(d); - return r; + return 0; } static int process_dir(Unit *u, const char *unit_path, const char *name, const char *suffix, UnitDependency dependency) { @@ -143,6 +163,11 @@ int unit_load_dropin(Unit *u) { r = process_dir(u, *p, t, ".requires", UNIT_REQUIRES); if (r < 0) return r; + + /* This loads the drop-in config snippets */ + r = process_dir(u, *p, t, ".d", _UNIT_TYPE_INVALID); + if (r < 0) + return r; } } diff --git a/src/core/unit.c b/src/core/unit.c index 45453dce64..f00cfedb89 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1781,6 +1781,7 @@ static const char *resolve_template(Unit *u, const char *name, const char*path, assert(u); assert(name || path); + assert(p); if (!name) name = path_get_file_name(path); @@ -1795,7 +1796,8 @@ static const char *resolve_template(Unit *u, const char *name, const char*path, else { char *i; - if (!(i = unit_name_to_prefix(u->id))) + i = unit_name_to_prefix(u->id); + if (!i) return NULL; s = unit_name_replace_instance(name, i); @@ -1812,22 +1814,20 @@ static const char *resolve_template(Unit *u, const char *name, const char*path, int unit_add_dependency_by_name(Unit *u, UnitDependency d, const char *name, const char *path, bool add_reference) { Unit *other; int r; - char *s; + _cleanup_free_ char *s = NULL; assert(u); assert(name || path); - if (!(name = resolve_template(u, name, path, &s))) + name = resolve_template(u, name, path, &s); + if (!name) return -ENOMEM; - if ((r = manager_load_unit(u->manager, name, path, NULL, &other)) < 0) - goto finish; - - r = unit_add_dependency(u, d, other, add_reference); + r = manager_load_unit(u->manager, name, path, NULL, &other); + if (r < 0) + return r; -finish: - free(s); - return r; + return unit_add_dependency(u, d, other, add_reference); } int unit_add_two_dependencies_by_name(Unit *u, UnitDependency d, UnitDependency e, const char *name, const char *path, bool add_reference) { -- cgit v1.2.1 From 5926cccae202f1b8869017d4bdaf9e9ce371bba6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 11 Jan 2013 01:04:11 +0100 Subject: unit: instead of directly loading drop-in configuration snippets use conf_files_list_strv() This has the benefit of allowing the usual overriding/masking knowledge everybody loves so much. --- src/core/load-dropin.c | 69 ++++++++++++++++++++++++++++++-------------------- src/shared/strv.c | 15 +++++++++++ src/shared/strv.h | 1 + 3 files changed, 57 insertions(+), 28 deletions(-) diff --git a/src/core/load-dropin.c b/src/core/load-dropin.c index 8e10d8fb4c..d53e77f706 100644 --- a/src/core/load-dropin.c +++ b/src/core/load-dropin.c @@ -29,24 +29,25 @@ #include "unit-name.h" #include "conf-parser.h" #include "load-fragment.h" +#include "conf-files.h" -static int load_dropin_config_file(Unit *u, const char *path) { - assert(u); - assert(path); - - if (!endswith(path, ".conf")) - return 0; - - return config_parse(path, NULL, UNIT_VTABLE(u)->sections, config_item_perf_lookup, (void*) load_fragment_gperf_lookup, false, u); -} - -static int iterate_dir(Unit *u, const char *path, UnitDependency dependency) { +static int iterate_dir(Unit *u, const char *path, UnitDependency dependency, char ***strv) { _cleanup_closedir_ DIR *d = NULL; int r; assert(u); assert(path); + /* The config directories are special, since the order of the + * drop-ins matters */ + if (dependency < 0) { + r = strv_extend(strv, path); + if (r < 0) + return log_oom(); + + return 0; + } + d = opendir(path); if (!d) { if (errno == ENOENT) @@ -77,21 +78,15 @@ static int iterate_dir(Unit *u, const char *path, UnitDependency dependency) { if (!f) return log_oom(); - if (dependency >= 0) { - r = unit_add_dependency_by_name(u, dependency, de->d_name, f, true); - if (r < 0) - log_error("Cannot add dependency %s to %s, ignoring: %s", de->d_name, u->id, strerror(-r)); - } else { - r = load_dropin_config_file(u, f); - if (r < 0) - log_error("Cannot load drop-in configuration file %s for %s, ignoring: %s", f, u->id, strerror(-r)); - } + r = unit_add_dependency_by_name(u, dependency, de->d_name, f, true); + if (r < 0) + log_error("Cannot add dependency %s to %s, ignoring: %s", de->d_name, u->id, strerror(-r)); } return 0; } -static int process_dir(Unit *u, const char *unit_path, const char *name, const char *suffix, UnitDependency dependency) { +static int process_dir(Unit *u, const char *unit_path, const char *name, const char *suffix, UnitDependency dependency, char ***strv) { int r; char *path; @@ -108,7 +103,7 @@ static int process_dir(Unit *u, const char *unit_path, const char *name, const c !set_get(u->manager->unit_path_cache, path)) r = 0; else - r = iterate_dir(u, path, dependency); + r = iterate_dir(u, path, dependency, strv); free(path); if (r < 0) @@ -132,7 +127,7 @@ static int process_dir(Unit *u, const char *unit_path, const char *name, const c !set_get(u->manager->unit_path_cache, path)) r = 0; else - r = iterate_dir(u, path, dependency); + r = iterate_dir(u, path, dependency, strv); free(path); if (r < 0) @@ -145,6 +140,9 @@ static int process_dir(Unit *u, const char *unit_path, const char *name, const c int unit_load_dropin(Unit *u) { Iterator i; char *t; + _cleanup_strv_free_ char **strv = NULL; + int r; + assert(u); @@ -154,22 +152,37 @@ int unit_load_dropin(Unit *u) { char **p; STRV_FOREACH(p, u->manager->lookup_paths.unit_path) { - int r; - - r = process_dir(u, *p, t, ".wants", UNIT_WANTS); + r = process_dir(u, *p, t, ".wants", UNIT_WANTS, NULL); if (r < 0) return r; - r = process_dir(u, *p, t, ".requires", UNIT_REQUIRES); + r = process_dir(u, *p, t, ".requires", UNIT_REQUIRES, NULL); if (r < 0) return r; /* This loads the drop-in config snippets */ - r = process_dir(u, *p, t, ".d", _UNIT_TYPE_INVALID); + r = process_dir(u, *p, t, ".d", _UNIT_DEPENDENCY_INVALID, &strv); if (r < 0) return r; } } + if (!strv_isempty(strv)) { + _cleanup_strv_free_ char **files = NULL, **f; + + r = conf_files_list_strv(&files, ".conf", (const char**) strv); + if (r < 0) { + log_error("Failed to get list of configuration files: %s", strerror(-r)); + return r; + } + + STRV_FOREACH(f, files) { + r = config_parse(*f, NULL, UNIT_VTABLE(u)->sections, config_item_perf_lookup, (void*) load_fragment_gperf_lookup, false, u); + if (r < 0) + return r; + } + } + + return 0; } diff --git a/src/shared/strv.c b/src/shared/strv.c index 6b76d0eaef..aed45d2612 100644 --- a/src/shared/strv.c +++ b/src/shared/strv.c @@ -370,6 +370,21 @@ fail: return NULL; } +int strv_extend(char ***l, const char *value) { + char **c; + + if (!value) + return 0; + + c = strv_append(*l, value); + if (!c) + return -ENOMEM; + + strv_free(*l); + *l = c; + return 0; +} + char **strv_uniq(char **l) { char **i; diff --git a/src/shared/strv.h b/src/shared/strv.h index 45558d8960..44ba3d1530 100644 --- a/src/shared/strv.h +++ b/src/shared/strv.h @@ -37,6 +37,7 @@ unsigned strv_length(char **l); char **strv_merge(char **a, char **b); char **strv_merge_concat(char **a, char **b, const char *suffix); char **strv_append(char **l, const char *s); +int strv_extend(char ***l, const char *value); char **strv_remove(char **l, const char *s); char **strv_remove_prefix(char **l, const char *s); -- cgit v1.2.1 From 946c11ed25429d6050a4d8fb0e0f9838167765e0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 11 Jan 2013 01:10:17 +0100 Subject: update TODO --- TODO | 1 - 1 file changed, 1 deletion(-) diff --git a/TODO b/TODO index 5a276e178d..bbb8d67537 100644 --- a/TODO +++ b/TODO @@ -346,7 +346,6 @@ Features: * readahead: when bumping /sys readahead variable save mtime and compare later to detect changes * (attempt to) make Debianites happy: - - implement .d/ auto includes for unit files - add syntax to reset ExecStart= lists (and similar) * move passno parsing to fstab generator -- cgit v1.2.1 From b37844d3d72af3afbcb801476cf07c085519f392 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 11 Jan 2013 04:24:05 +0100 Subject: systemctl: honour inhibitors when shutting down or entering sleep state --- man/systemctl.xml | 27 ++++++++++ src/systemctl/systemctl.c | 122 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 147 insertions(+), 2 deletions(-) diff --git a/man/systemctl.xml b/man/systemctl.xml index f86952c683..2f33e0c9e2 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -190,6 +190,33 @@ applications. + + + + + When system shutdown + or a sleep state is requested, ignore + inhibitor locks. Applications can + establish inhibitor locks to avoid + that certain important operations + (such as CD burning or suchlike) are + interrupted by system shutdown or a + sleep state. Any user may take these + locks and privileged users may + override these locks. If any locks are + taken, shutdown and sleep state + requests will normally fail + (regardless if privileged or not) and + list of active locks is + printed. However if + + is specified the locks are ignored and + not printed, and the operation + attempted anyway, possibly requiring + additional + privileges. + + diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index b4c4ea36dc..bf76a0e9c0 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -78,6 +78,7 @@ static bool arg_no_pager = false; static bool arg_no_wtmp = false; static bool arg_no_wall = false; static bool arg_no_reload = false; +static bool arg_ignore_inhibitors = false; static bool arg_dry = false; static bool arg_quiet = false; static bool arg_full = false; @@ -1778,6 +1779,104 @@ static int reboot_with_logind(DBusConnection *bus, enum action a) { #endif } +static int check_inhibitors(DBusConnection *bus, enum action a) { +#ifdef HAVE_LOGIND + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + DBusMessageIter iter, sub, sub2; + int r; + unsigned c = 0; + + if (arg_ignore_inhibitors) + return 0; + + if (!on_tty()) + return 0; + + r = bus_method_call_with_reply( + bus, + "org.freedesktop.login1", + "/org/freedesktop/login1", + "org.freedesktop.login1.Manager", + "ListInhibitors", + &reply, + NULL, + DBUS_TYPE_INVALID); + if (r < 0) + /* If logind is not around, then there are no inhibitors... */ + return 0; + + if (!dbus_message_iter_init(reply, &iter) || + dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || + dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) { + log_error("Failed to parse reply."); + return -EIO; + } + + dbus_message_iter_recurse(&iter, &sub); + while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { + const char *what, *who, *why, *mode; + uint32_t uid, pid; + _cleanup_strv_free_ char **sv = NULL; + _cleanup_free_ char *comm = NULL; + + if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) { + log_error("Failed to parse reply."); + return -EIO; + } + + dbus_message_iter_recurse(&sub, &sub2); + + if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &what, true) < 0 || + bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &who, true) < 0 || + bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &why, true) < 0 || + bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &mode, true) < 0 || + bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_UINT32, &uid, true) < 0 || + bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_UINT32, &pid, false) < 0) { + log_error("Failed to parse reply."); + return -EIO; + } + + if (!streq(mode, "block")) + goto next; + + sv = strv_split(what, ":"); + if (!sv) + return log_oom(); + + if (!strv_contains(sv, + a == ACTION_HALT || + a == ACTION_POWEROFF || + a == ACTION_REBOOT || + a == ACTION_KEXEC ? "shutdown" : "sleep")) + goto next; + + get_process_comm(pid, &comm); + log_warning("Operation inhibited by \"%s\" (PID %lu \"%s\", UID %lu), reason is \"%s\".", who, (unsigned long) pid, strna(comm), (unsigned long) uid, why); + c++; + + next: + dbus_message_iter_next(&sub); + } + + dbus_message_iter_recurse(&iter, &sub); + + if (c <= 0) + return 0; + + log_error("Please try again after closing inhibitors or ignore them with 'systemctl %s -i'.", + a == ACTION_HALT ? "halt" : + a == ACTION_POWEROFF ? "poweroff" : + a == ACTION_REBOOT ? "reboot" : + a == ACTION_KEXEC ? "kexec" : + a == ACTION_SUSPEND ? "suspend" : + a == ACTION_HIBERNATE ? "hibernate" : "hybrid-sleep"); + + return -EPERM; +#else + return 0; +#endif +} + static int start_special(DBusConnection *bus, char **args) { enum action a; int r; @@ -1805,6 +1904,12 @@ static int start_special(DBusConnection *bus, char **args) { a == ACTION_EXIT)) return daemon_reload(bus, args); + if (arg_force <= 0) { + r = check_inhibitors(bus, a); + if (r < 0) + return r; + } + /* first try logind, to allow authentication with polkit */ if (geteuid() != 0 && (a == ACTION_POWEROFF || @@ -3895,6 +4000,8 @@ static int systemctl_help(void) { " pending\n" " --ignore-dependencies\n" " When queueing a new job, ignore all its dependencies\n" + " -i --ignore-inhibitors\n" + " When shutting down or sleeping, ignore inhibitors\n" " --kill-who=WHO Who to send signal to\n" " -s --signal=SIGNAL Which signal to send\n" " -H --host=[USER@]HOST\n" @@ -4105,6 +4212,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { { "full", no_argument, NULL, ARG_FULL }, { "fail", no_argument, NULL, ARG_FAIL }, { "ignore-dependencies", no_argument, NULL, ARG_IGNORE_DEPENDENCIES }, + { "ignore-inhibitors", no_argument, NULL, 'i' }, { "user", no_argument, NULL, ARG_USER }, { "system", no_argument, NULL, ARG_SYSTEM }, { "global", no_argument, NULL, ARG_GLOBAL }, @@ -4134,7 +4242,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); - while ((c = getopt_long(argc, argv, "ht:p:aqfs:H:Pn:o:", options, NULL)) >= 0) { + while ((c = getopt_long(argc, argv, "ht:p:aqfs:H:Pn:o:i", options, NULL)) >= 0) { switch (c) { @@ -4300,6 +4408,10 @@ static int systemctl_parse_argv(int argc, char *argv[]) { } break; + case 'i': + arg_ignore_inhibitors = true; + break; + case '?': return -EINVAL; @@ -5172,6 +5284,12 @@ static _noreturn_ void halt_now(enum action a) { static int halt_main(DBusConnection *bus) { int r; + if (arg_when <= 0 && arg_force <= 0) { + r = check_inhibitors(bus, arg_action); + if (r < 0) + return r; + } + if (geteuid() != 0) { /* Try logind if we are a normal user and no special * mode applies. Maybe PolicyKit allows us to shutdown @@ -5179,7 +5297,7 @@ static int halt_main(DBusConnection *bus) { if (arg_when <= 0 && !arg_dry && - !arg_force && + arg_force <= 0 && (arg_action == ACTION_POWEROFF || arg_action == ACTION_REBOOT)) { r = reboot_with_logind(bus, arg_action); -- cgit v1.2.1 From 6a17986542912ed80d9fdc1b6eaa6d48fdd5d02d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 11 Jan 2013 10:03:04 -0500 Subject: build-sys: use _FORTIFY_SOURCE only if optimizing Rather then force the user to undefine _FORTIFY_SOURCE, don't define it in the first place if it cannot be used. I'm assuming that -O* can only be sensibly specified in $CFLAGS. --- autogen.sh | 4 ++-- configure.ac | 6 ++++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/autogen.sh b/autogen.sh index 33d8fcda23..86fe9b3785 100755 --- a/autogen.sh +++ b/autogen.sh @@ -54,7 +54,7 @@ args="$args \ fi if [ "x$1" = "xc" ]; then - ./configure CFLAGS='-g -O0 -Wp,-U_FORTIFY_SOURCE' $args + ./configure CFLAGS='-g -O0' $args make clean else echo @@ -62,6 +62,6 @@ else echo "Initialized build system. For a common configuration please run:" echo "----------------------------------------------------------------" echo - echo "./configure CFLAGS='-g -O0 -Wp,-U_FORTIFY_SOURCE' $args" + echo "./configure CFLAGS='-g -O0' $args" echo fi diff --git a/configure.ac b/configure.ac index 7a3cd87511..3566dac830 100644 --- a/configure.ac +++ b/configure.ac @@ -167,8 +167,10 @@ CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ --param=ssp-buffer-size=4]) AC_SUBST([OUR_CFLAGS], $with_cflags) -CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\ - -Wp,-D_FORTIFY_SOURCE=2]) +AS_CASE([$CFLAGS], [*-O[[12345\ ]]*], [ + CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\ + -Wp,-D_FORTIFY_SOURCE=2])], [ + AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])]) AC_SUBST([OUR_CPPFLAGS], $with_cppflags) CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\ -- cgit v1.2.1 From acbeb42770e1e99955ebc4464a0439cf741b3aeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 11 Jan 2013 16:03:49 -0500 Subject: nspawn: add --version --- man/systemd-nspawn.xml | 7 +++++++ src/nspawn/nspawn.c | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index fef5c2c83a..db2d417e49 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -138,6 +138,13 @@ text and exits. + + + + Prints a version string + and exits. + + diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 1f3bda5b4a..98b583d747 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -56,6 +56,7 @@ #include "sd-id128.h" #include "dev-setup.h" #include "fdset.h" +#include "build.h" typedef enum LinkJournal { LINK_NO, @@ -102,6 +103,7 @@ static int help(void) { printf("%s [OPTIONS...] [PATH] [ARGUMENTS...]\n\n" "Spawn a minimal namespace container for debugging, testing and building.\n\n" " -h --help Show this help\n" + " --version Print version string\n" " -D --directory=NAME Root directory for the container\n" " -b --boot Boot up full system (i.e. invoke init)\n" " -u --user=USER Run the command under specified user or uid\n" @@ -120,7 +122,8 @@ static int help(void) { static int parse_argv(int argc, char *argv[]) { enum { - ARG_PRIVATE_NETWORK = 0x100, + ARG_VERSION = 0x100, + ARG_PRIVATE_NETWORK, ARG_UUID, ARG_READ_ONLY, ARG_CAPABILITY, @@ -129,6 +132,7 @@ static int parse_argv(int argc, char *argv[]) { static const struct option options[] = { { "help", no_argument, NULL, 'h' }, + { "version", no_argument, NULL, ARG_VERSION }, { "directory", required_argument, NULL, 'D' }, { "user", required_argument, NULL, 'u' }, { "controllers", required_argument, NULL, 'C' }, @@ -154,6 +158,11 @@ static int parse_argv(int argc, char *argv[]) { help(); return 0; + case ARG_VERSION: + puts(PACKAGE_STRING); + puts(SYSTEMD_FEATURES); + return 0; + case 'D': free(arg_directory); arg_directory = canonicalize_file_name(optarg); -- cgit v1.2.1 From 85a3fa0e1979a13683baa1f3dda6b6d0005f20ab Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 12 Jan 2013 23:31:46 +0100 Subject: service: remove distribution specific comments, the code run unconditional now --- src/core/service.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/service.c b/src/core/service.c index 2a4e691e78..70b251f0bb 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -326,13 +326,13 @@ static char *sysv_translate_name(const char *name) { return NULL; if (endswith(name, ".sh")) - /* Drop Debian-style .sh suffix */ + /* Drop .sh suffix */ strcpy(stpcpy(r, name) - 3, ".service"); if (startswith(name, "rc.")) - /* Drop Frugalware-style rc. prefix */ + /* Drop rc. prefix */ strcpy(stpcpy(r, name + 3), ".service"); else - /* Normal init scripts */ + /* Normal init script name */ strcpy(stpcpy(r, name), ".service"); return r; -- cgit v1.2.1 From 20771ae336a7c72dc6d2cac2f0c9b0c0f3003379 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 12 Jan 2013 23:50:56 +0100 Subject: service: remove distribution specific comments, the code runs unconditional now --- src/core/service.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/service.c b/src/core/service.c index 70b251f0bb..8e9e11236d 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1012,14 +1012,14 @@ static int service_load_sysv_name(Service *s, const char *name) { r = service_load_sysv_path(s, path); if (r >= 0 && UNIT(s)->load_state == UNIT_STUB) { - /* Try Debian style *.sh source'able init scripts */ + /* Try *.sh source'able init scripts */ strcat(path, ".sh"); r = service_load_sysv_path(s, path); } free(path); if (r >= 0 && UNIT(s)->load_state == UNIT_STUB) { - /* Try Frugalware style rc.* init scripts */ + /* Try rc.* init scripts */ path = strjoin(*p, "/rc.", name, NULL); if (!path) -- cgit v1.2.1 From 735248643920eadf021526714c1eb67518086e8d Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sun, 13 Jan 2013 11:19:37 +0100 Subject: man: localectl - s/set-keyboard/set-keymap/ --- man/localectl.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/localectl.xml b/man/localectl.xml index 33508cffe5..f375bfa5d9 100644 --- a/man/localectl.xml +++ b/man/localectl.xml @@ -194,7 +194,7 @@ List available keyboard mappings for the console, useful for configuration with - set-keyboard. + set-keymap. -- cgit v1.2.1 From 65426b76324ea8ecf9d42812151b12e314bd2742 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 14 Jan 2013 18:23:18 +0100 Subject: locale: make sense of "dvorak-alt-intel" X variant in mapping database https://bugzilla.redhat.com/show_bug.cgi?id=873634 --- src/locale/kbd-model-map | 1 + 1 file changed, 1 insertion(+) diff --git a/src/locale/kbd-model-map b/src/locale/kbd-model-map index b0860abe80..1fe9bca6ce 100644 --- a/src/locale/kbd-model-map +++ b/src/locale/kbd-model-map @@ -53,6 +53,7 @@ de-latin1-nodeadkeys de pc105 nodeadkeys terminate:ctrl_alt_bksp no no pc105 - terminate:ctrl_alt_bksp bg_bds-utf8 bg,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll dvorak us pc105 dvorak terminate:ctrl_alt_bksp +dvorak us pc105 dvorak-alt-intl terminate:ctrl_alt_bksp ru ru,us pc105 - terminate:ctrl_alt_bksp,grp:shifts_toggle,grp_led:scroll cz-lat2 cz pc105 qwerty terminate:ctrl_alt_bksp pl2 pl pc105 - terminate:ctrl_alt_bksp -- cgit v1.2.1 From 6eebcda6a260cae878e7329b457c80b53bdc4b49 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 14 Jan 2013 20:34:56 +0100 Subject: update TODO --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index bbb8d67537..e89be556d9 100644 --- a/TODO +++ b/TODO @@ -19,6 +19,8 @@ F18: Features: +* add "loginctl unlock-sessions" as counterpart for "loginctl lock-sessions" + * add a man page "systemdall" that lists all of systemd's man pages, inspired by zsh's "zshall" page * print a nicer explanation if people use variable/specifier expansion in ExecStart= for the first word -- cgit v1.2.1 From e5e991a11c7749f8cb424e99ca4206264b0cf836 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 14 Jan 2013 20:37:12 +0100 Subject: core: document that JoinControllers= might be ineffective in initrd uses https://bugzilla.redhat.com/show_bug.cgi?id=875531 --- man/systemd.conf.xml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/man/systemd.conf.xml b/man/systemd.conf.xml index a6be932c73..da3c7f7789 100644 --- a/man/systemd.conf.xml +++ b/man/systemd.conf.xml @@ -134,7 +134,20 @@ 'cpu,cpuacct'. Pass an empty string to ensure that systemd mounts all controllers in separate - hierarchies. + hierarchies. + + Note that this option is only + applied once, at very early boot. If + you use an initial RAM disk (initrd) + that uses systemd it might hence be + necessary to rebuild the initrd if + this option is changed, and make sure + the new configuration file is included + in it. Otherwise the initrd might + mount the controllers in different + configuration than intended, and the + main system cannot remount them + anymore. -- cgit v1.2.1 From fbeefb45ac1a257a0c5af975ad26d68ed6c39fda Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 14 Jan 2013 21:05:17 +0100 Subject: service: for Type=forking services, ignore exit status of main process depending on ExecStart's ignore setting https://bugzilla.redhat.com/show_bug.cgi?id=860464 --- src/core/service.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/src/core/service.c b/src/core/service.c index 8e9e11236d..7eaac0dc4c 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -2926,15 +2926,25 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) { s->main_pid = 0; exec_status_exit(&s->main_exec_status, &s->exec_context, pid, code, status); - /* If this is not a forking service than the main - * process got started and hence we copy the exit - * status so that it is recorded both as main and as - * control process exit status */ if (s->main_command) { + /* If this is not a forking service than the + * main process got started and hence we copy + * the exit status so that it is recorded both + * as main and as control process exit + * status */ + s->main_command->exec_status = s->main_exec_status; if (s->main_command->ignore) f = SERVICE_SUCCESS; + } else if (s->exec_command[SERVICE_EXEC_START]) { + + /* If this is a forked process, then we should + * ignore the return value if this was + * configured for the starter process */ + + if (s->exec_command[SERVICE_EXEC_START]->ignore) + f = SERVICE_SUCCESS; } log_struct(f == SERVICE_SUCCESS ? LOG_DEBUG : LOG_NOTICE, -- cgit v1.2.1 From 83dd76170d425ea149b74254083b2ce8add18dd8 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 11 Jan 2013 23:39:23 +0100 Subject: core: fix double free --- src/core/load-dropin.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/load-dropin.c b/src/core/load-dropin.c index d53e77f706..52ebfea6dc 100644 --- a/src/core/load-dropin.c +++ b/src/core/load-dropin.c @@ -168,7 +168,8 @@ int unit_load_dropin(Unit *u) { } if (!strv_isempty(strv)) { - _cleanup_strv_free_ char **files = NULL, **f; + _cleanup_strv_free_ char **files = NULL; + char **f; r = conf_files_list_strv(&files, ".conf", (const char**) strv); if (r < 0) { @@ -183,6 +184,5 @@ int unit_load_dropin(Unit *u) { } } - return 0; } -- cgit v1.2.1 From 60f9ba0b94a4a86751d9a8c8b210cf07fc0962ba Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 11 Jan 2013 23:59:41 +0100 Subject: systemctl: rework is-active and is-failed code --- src/systemctl/systemctl.c | 117 ++++++++++++++++++++++++++-------------------- 1 file changed, 67 insertions(+), 50 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index bf76a0e9c0..0def1a2f55 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1341,20 +1341,25 @@ static int wait_for_jobs(DBusConnection *bus, Set *s) { return r; } -static int check_one_unit(DBusConnection *bus, char *name, char **check_states, bool quiet) { - DBusMessage *reply = NULL; +static int check_one_unit(DBusConnection *bus, const char *name, char **check_states, bool quiet) { + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; DBusMessageIter iter, sub; const char *interface = "org.freedesktop.systemd1.Unit", *property = "ActiveState"; - const char *path = NULL; - const char *state; + const char *state, *path; + _cleanup_free_ char *n = NULL; + DBusError error; int r; - char *n; assert(name); + dbus_error_init(&error); + n = unit_name_mangle(name); + if (!n) + return log_oom(); + r = bus_method_call_with_reply ( bus, "org.freedesktop.systemd1", @@ -1362,26 +1367,28 @@ static int check_one_unit(DBusConnection *bus, char *name, char **check_states, "org.freedesktop.systemd1.Manager", "GetUnit", &reply, - NULL, - DBUS_TYPE_STRING, n ? &n : &name, + &error, + DBUS_TYPE_STRING, &n, DBUS_TYPE_INVALID); - free(n); - if (r) { - if ((r != -ENOMEM) && (!quiet)) + if (r < 0) { + dbus_error_free(&error); + + if (!quiet) puts("unknown"); - goto finish; + return 0; } if (!dbus_message_get_args(reply, NULL, DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID)) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_unref(reply); - r = bus_method_call_with_reply ( + reply = NULL; + + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", path, @@ -1392,22 +1399,23 @@ static int check_one_unit(DBusConnection *bus, char *name, char **check_states, DBUS_TYPE_STRING, &interface, DBUS_TYPE_STRING, &property, DBUS_TYPE_INVALID); - if (r) - goto finish; + if (r < 0) { + if (!quiet) + puts("unknown"); + return 0; + } if (!dbus_message_iter_init(reply, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return r; } dbus_message_iter_recurse(&iter, &sub); if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRING) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return r; } dbus_message_iter_get_basic(&sub, &state); @@ -1415,16 +1423,7 @@ static int check_one_unit(DBusConnection *bus, char *name, char **check_states, if (!quiet) puts(state); - if (strv_find(check_states, state)) - r = 0; - else - r = 3; /* According to LSB: "program is not running" */ - -finish: - if (reply) - dbus_message_unref(reply); - - return r; + return strv_find(check_states, state) ? 1 : 0; } static void check_triggering_units( @@ -1433,7 +1432,6 @@ static void check_triggering_units( _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; DBusMessageIter iter, sub; - char *service_trigger = NULL; const char *interface = "org.freedesktop.systemd1.Unit", *triggered_by_property = "TriggeredBy"; @@ -1453,7 +1451,7 @@ static void check_triggering_units( return; } - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", unit_path, @@ -1464,7 +1462,7 @@ static void check_triggering_units( DBUS_TYPE_STRING, &interface, DBUS_TYPE_STRING, &triggered_by_property, DBUS_TYPE_INVALID); - if (r) + if (r < 0) return; if (!dbus_message_iter_init(reply, &iter) || @@ -1478,7 +1476,12 @@ static void check_triggering_units( sub = iter; while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { - char **check_states = NULL; + const char * const check_states[] = { + "active", + "reloading", + NULL + }; + const char *service_trigger; if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRING) { log_error("Failed to parse reply."); @@ -1487,16 +1490,15 @@ static void check_triggering_units( dbus_message_iter_get_basic(&sub, &service_trigger); - check_states = strv_new("active", "reloading", NULL); - r = check_one_unit(bus, service_trigger, check_states, true); - strv_free(check_states); + r = check_one_unit(bus, service_trigger, (char**) check_states, true); if (r < 0) return; - if (r == 0) { + if (r > 0) { if (print_warning_label) { log_warning("Warning: Stopping %s, but it can still be activated by:", unit_name); print_warning_label = false; } + log_warning(" %s", service_trigger); } @@ -1930,6 +1932,12 @@ static int start_special(DBusConnection *bus, char **args) { } static int check_unit_active(DBusConnection *bus, char **args) { + const char * const check_states[] = { + "active", + "reloading", + NULL + }; + char **name; int r = 3; /* According to LSB: "program is not running" */ @@ -1937,12 +1945,12 @@ static int check_unit_active(DBusConnection *bus, char **args) { assert(args); STRV_FOREACH(name, args+1) { - char **check_states = strv_new("active", "reloading", NULL); - int state = check_one_unit(bus, *name, check_states, arg_quiet); - strv_free(check_states); + int state; + + state = check_one_unit(bus, *name, (char**) check_states, arg_quiet); if (state < 0) return state; - if (state == 0) + if (state > 0) r = 0; } @@ -1950,6 +1958,11 @@ static int check_unit_active(DBusConnection *bus, char **args) { } static int check_unit_failed(DBusConnection *bus, char **args) { + const char * const check_states[] = { + "failed", + NULL + }; + char **name; int r = 1; @@ -1957,12 +1970,12 @@ static int check_unit_failed(DBusConnection *bus, char **args) { assert(args); STRV_FOREACH(name, args+1) { - char **check_states = strv_new("failed", NULL); - int state = check_one_unit(bus, *name, check_states, arg_quiet); - strv_free(check_states); + int state; + + state = check_one_unit(bus, *name, (char**) check_states, arg_quiet); if (state < 0) return state; - if (state == 0) + if (state > 0) r = 0; } @@ -1970,17 +1983,21 @@ static int check_unit_failed(DBusConnection *bus, char **args) { } static int kill_unit(DBusConnection *bus, char **args) { + char **name; int r = 0; - char **name, *n; + assert(bus); assert(args); if (!arg_kill_who) arg_kill_who = "all"; STRV_FOREACH(name, args+1) { + _cleanup_free_ char *n = NULL; + n = unit_name_mangle(*name); - r = bus_method_call_with_reply ( + + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", @@ -1992,8 +2009,7 @@ static int kill_unit(DBusConnection *bus, char **args) { DBUS_TYPE_STRING, &arg_kill_who, DBUS_TYPE_INT32, &arg_signal, DBUS_TYPE_INVALID); - free(n); - if (r) + if (r < 0) return r; } return 0; @@ -3446,6 +3462,7 @@ static int set_environment(DBusConnection *bus, char **args) { int r; assert(bus); + assert(args); dbus_error_init(&error); -- cgit v1.2.1 From d255133d8edc84662d2370a77414505a800d1922 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 12 Jan 2013 00:00:22 +0100 Subject: systemctl: don't hit an assert if we try to reboot and dbus is dead https://bugzilla.redhat.com/show_bug.cgi?id=889624 --- src/systemctl/systemctl.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 0def1a2f55..bfa4d45fc2 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1738,6 +1738,9 @@ static int reboot_with_logind(DBusConnection *bus, enum action a) { const char *method; dbus_bool_t interactive = true; + if (!bus) + return -EIO; + polkit_agent_open_if_enabled(); switch (a) { -- cgit v1.2.1 From 748ebafa7a10d4e1f168dd8ae0193124cdf4226e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 12 Jan 2013 00:09:22 +0100 Subject: systemctl: honour inhibitors only when running unprivileged --- src/systemctl/systemctl.c | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index bfa4d45fc2..91467cc085 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1791,7 +1791,16 @@ static int check_inhibitors(DBusConnection *bus, enum action a) { int r; unsigned c = 0; - if (arg_ignore_inhibitors) + if (!bus) + return 0; + + if (arg_ignore_inhibitors || arg_force > 0) + return 0; + + if (arg_when > 0) + return 0; + + if (geteuid() == 0) return 0; if (!on_tty()) @@ -1890,6 +1899,10 @@ static int start_special(DBusConnection *bus, char **args) { a = verb_to_action(args[0]); + r = check_inhibitors(bus, a); + if (r < 0) + return r; + if (arg_force >= 2 && geteuid() != 0) { log_error("Must be root."); return -EPERM; @@ -1909,12 +1922,6 @@ static int start_special(DBusConnection *bus, char **args) { a == ACTION_EXIT)) return daemon_reload(bus, args); - if (arg_force <= 0) { - r = check_inhibitors(bus, a); - if (r < 0) - return r; - } - /* first try logind, to allow authentication with polkit */ if (geteuid() != 0 && (a == ACTION_POWEROFF || @@ -5304,11 +5311,9 @@ static _noreturn_ void halt_now(enum action a) { static int halt_main(DBusConnection *bus) { int r; - if (arg_when <= 0 && arg_force <= 0) { - r = check_inhibitors(bus, arg_action); - if (r < 0) - return r; - } + r = check_inhibitors(bus, arg_action); + if (r < 0) + return r; if (geteuid() != 0) { /* Try logind if we are a normal user and no special -- cgit v1.2.1 From 246aa6dd9dcea84bb945d16ec86e69f869dbb9b4 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 12 Jan 2013 04:24:12 +0100 Subject: core: add bus API and systemctl commands for altering cgroup parameters during runtime --- src/core/cgroup-attr.c | 33 ++++-- src/core/cgroup-attr.h | 3 + src/core/cgroup.c | 32 +++++- src/core/cgroup.h | 3 + src/core/dbus-manager.c | 131 ++++++++++++++++++++++++ src/core/dbus-mount.c | 2 + src/core/dbus-service.c | 2 + src/core/dbus-socket.c | 2 + src/core/dbus-swap.c | 2 + src/core/dbus-unit.c | 250 +++++++++++++++++++++++++++++++++++++++++++++- src/core/dbus-unit.h | 31 +++++- src/core/load-fragment.c | 16 +-- src/core/unit.c | 134 ++++++++++++++++++------- src/core/unit.h | 4 +- src/shared/cgroup-util.c | 116 ++++++++++----------- src/shared/cgroup-util.h | 4 +- src/shared/strv.h | 4 + src/systemctl/systemctl.c | 114 +++++++++++++++++++++ src/test/test-cgroup.c | 2 +- 19 files changed, 757 insertions(+), 128 deletions(-) diff --git a/src/core/cgroup-attr.c b/src/core/cgroup-attr.c index 71af09cf87..cedf37de50 100644 --- a/src/core/cgroup-attr.c +++ b/src/core/cgroup-attr.c @@ -71,23 +71,42 @@ int cgroup_attribute_apply_list(CGroupAttribute *first, CGroupBonding *b) { return r; } -CGroupAttribute *cgroup_attribute_find_list(CGroupAttribute *first, const char *controller, const char *name) { +CGroupAttribute *cgroup_attribute_find_list( + CGroupAttribute *first, + const char *controller, + const char *name) { CGroupAttribute *a; - assert(controller); assert(name); - LIST_FOREACH(by_unit, a, first) - if (streq(a->controller, controller) && - streq(a->name, name)) - return a; + LIST_FOREACH(by_unit, a, first) { + + + if (controller) { + if (streq(a->controller, controller) && streq(a->name, name)) + return a; + + } else if (streq(a->name, name)) { + size_t x, y; + x = strlen(a->controller); + y = strlen(name); + + if (y > x && + memcmp(a->controller, name, x) == 0 && + name[x] == '.') + return a; + } + } return NULL; } -static void cgroup_attribute_free(CGroupAttribute *a) { +void cgroup_attribute_free(CGroupAttribute *a) { assert(a); + if (a->unit) + LIST_REMOVE(CGroupAttribute, by_unit, a->unit->cgroup_attributes, a); + free(a->controller); free(a->name); free(a->value); diff --git a/src/core/cgroup-attr.h b/src/core/cgroup-attr.h index 2b754eac40..0f5b854898 100644 --- a/src/core/cgroup-attr.h +++ b/src/core/cgroup-attr.h @@ -33,6 +33,8 @@ struct CGroupAttribute { char *name; char *value; + Unit *unit; + CGroupAttributeMapCallback map_callback; LIST_FIELDS(CGroupAttribute, by_unit); @@ -43,4 +45,5 @@ int cgroup_attribute_apply_list(CGroupAttribute *first, CGroupBonding *b); CGroupAttribute *cgroup_attribute_find_list(CGroupAttribute *first, const char *controller, const char *name); +void cgroup_attribute_free(CGroupAttribute *a); void cgroup_attribute_free_list(CGroupAttribute *first); diff --git a/src/core/cgroup.c b/src/core/cgroup.c index 8fc1731485..4790a09ff2 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -110,7 +110,6 @@ void cgroup_bonding_trim_list(CGroupBonding *first, bool delete_root) { cgroup_bonding_trim(b, delete_root); } - int cgroup_bonding_install(CGroupBonding *b, pid_t pid, const char *cgroup_suffix) { char *p = NULL; const char *path; @@ -151,6 +150,34 @@ int cgroup_bonding_install_list(CGroupBonding *first, pid_t pid, const char *cgr return 0; } +int cgroup_bonding_migrate(CGroupBonding *b, CGroupBonding *list) { + CGroupBonding *q; + int ret = 0; + + LIST_FOREACH(by_unit, q, list) { + int r; + + if (q == b) + continue; + + if (!q->ours) + continue; + + r = cg_migrate_recursive(q->controller, q->path, b->controller, b->path, true, false); + if (r < 0 && ret == 0) + ret = r; + } + + return ret; +} + +int cgroup_bonding_migrate_to(CGroupBonding *b, const char *target, bool rem) { + assert(b); + assert(target); + + return cg_migrate_recursive(b->controller, b->path, b->controller, target, true, rem); +} + int cgroup_bonding_set_group_access(CGroupBonding *b, mode_t mode, uid_t uid, gid_t gid) { assert(b); @@ -520,7 +547,8 @@ Unit* cgroup_unit_by_pid(Manager *m, pid_t pid) { CGroupBonding *cgroup_bonding_find_list(CGroupBonding *first, const char *controller) { CGroupBonding *b; - assert(controller); + if (!controller) + controller = SYSTEMD_CGROUP_CONTROLLER; LIST_FOREACH(by_unit, b, first) if (streq(b->controller, controller)) diff --git a/src/core/cgroup.h b/src/core/cgroup.h index 229da52ba4..2ff39e5767 100644 --- a/src/core/cgroup.h +++ b/src/core/cgroup.h @@ -58,6 +58,9 @@ void cgroup_bonding_free_list(CGroupBonding *first, bool trim); int cgroup_bonding_install(CGroupBonding *b, pid_t pid, const char *suffix); int cgroup_bonding_install_list(CGroupBonding *first, pid_t pid, const char *suffix); +int cgroup_bonding_migrate(CGroupBonding *b, CGroupBonding *list); +int cgroup_bonding_migrate_to(CGroupBonding *b, const char *target, bool rem); + int cgroup_bonding_set_group_access(CGroupBonding *b, mode_t mode, uid_t uid, gid_t gid); int cgroup_bonding_set_group_access_list(CGroupBonding *b, mode_t mode, uid_t uid, gid_t gid); diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 2d9cea676f..1d785a2347 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -102,6 +102,26 @@ " \n" \ " \n" \ " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " " \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " " \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -848,6 +868,117 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, if (!reply) goto oom; + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "SetUnitControlGroups")) { + const char *name; + Unit *u; + DBusMessageIter iter; + + if (!dbus_message_iter_init(message, &iter)) + goto oom; + + r = bus_iter_get_basic_and_next(&iter, DBUS_TYPE_STRING, &name, true); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + u = manager_get_unit(m, name); + if (!u) { + dbus_set_error(&error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s is not loaded.", name); + return bus_send_error_reply(connection, message, &error, -ENOENT); + } + + SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "start"); + + r = bus_unit_cgroup_set(u, &iter); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + reply = dbus_message_new_method_return(message); + if (!reply) + goto oom; + + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "UnsetUnitControlGroups")) { + const char *name; + Unit *u; + DBusMessageIter iter; + + if (!dbus_message_iter_init(message, &iter)) + goto oom; + + r = bus_iter_get_basic_and_next(&iter, DBUS_TYPE_STRING, &name, true); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + u = manager_get_unit(m, name); + if (!u) { + dbus_set_error(&error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s is not loaded.", name); + return bus_send_error_reply(connection, message, &error, -ENOENT); + } + + SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "stop"); + + r = bus_unit_cgroup_unset(u, &iter); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + reply = dbus_message_new_method_return(message); + if (!reply) + goto oom; + + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "SetUnitControlGroupAttributes")) { + const char *name; + Unit *u; + DBusMessageIter iter; + + if (!dbus_message_iter_init(message, &iter)) + goto oom; + + r = bus_iter_get_basic_and_next(&iter, DBUS_TYPE_STRING, &name, true); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + u = manager_get_unit(m, name); + if (!u) { + dbus_set_error(&error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s is not loaded.", name); + return bus_send_error_reply(connection, message, &error, -ENOENT); + } + + SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "start"); + r = bus_unit_cgroup_attribute_set(u, &iter); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + reply = dbus_message_new_method_return(message); + if (!reply) + goto oom; + + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "UnsetUnitControlGroupAttributes")) { + const char *name; + Unit *u; + DBusMessageIter iter; + + if (!dbus_message_iter_init(message, &iter)) + goto oom; + + r = bus_iter_get_basic_and_next(&iter, DBUS_TYPE_STRING, &name, true); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + u = manager_get_unit(m, name); + if (!u) { + dbus_set_error(&error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s is not loaded.", name); + return bus_send_error_reply(connection, message, &error, -ENOENT); + } + + SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "stop"); + + r = bus_unit_cgroup_attribute_unset(u, &iter); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + reply = dbus_message_new_method_return(message); + if (!reply) + goto oom; + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "ListUnits")) { DBusMessageIter iter, sub; Iterator i; diff --git a/src/core/dbus-mount.c b/src/core/dbus-mount.c index d81edeb807..0fcceb500d 100644 --- a/src/core/dbus-mount.c +++ b/src/core/dbus-mount.c @@ -40,6 +40,7 @@ BUS_EXEC_COMMAND_INTERFACE("ExecRemount") \ BUS_EXEC_CONTEXT_INTERFACE \ BUS_KILL_CONTEXT_INTERFACE \ + BUS_UNIT_CGROUP_INTERFACE \ " \n" \ " \n" \ " \n" \ @@ -159,6 +160,7 @@ DBusHandlerResult bus_mount_message_handler(Unit *u, DBusConnection *c, DBusMess { "org.freedesktop.systemd1.Mount", bus_mount_properties, m }, { "org.freedesktop.systemd1.Mount", bus_exec_context_properties, &m->exec_context }, { "org.freedesktop.systemd1.Mount", bus_kill_context_properties, &m->kill_context }, + { "org.freedesktop.systemd1.Mount", bus_unit_cgroup_properties, u }, { NULL, } }; diff --git a/src/core/dbus-service.c b/src/core/dbus-service.c index d99058dd46..e06a5dce97 100644 --- a/src/core/dbus-service.c +++ b/src/core/dbus-service.c @@ -50,6 +50,7 @@ BUS_EXEC_COMMAND_INTERFACE("ExecStopPost") \ BUS_EXEC_CONTEXT_INTERFACE \ BUS_KILL_CONTEXT_INTERFACE \ + BUS_UNIT_CGROUP_INTERFACE \ " \n" \ " \n" \ " \n" \ @@ -152,6 +153,7 @@ DBusHandlerResult bus_service_message_handler(Unit *u, DBusConnection *connectio { "org.freedesktop.systemd1.Service", bus_exec_context_properties, &s->exec_context }, { "org.freedesktop.systemd1.Service", bus_kill_context_properties, &s->kill_context }, { "org.freedesktop.systemd1.Service", bus_exec_main_status_properties, &s->main_exec_status }, + { "org.freedesktop.systemd1.Service", bus_unit_cgroup_properties, u }, { NULL, } }; diff --git a/src/core/dbus-socket.c b/src/core/dbus-socket.c index 095a031612..2092a63694 100644 --- a/src/core/dbus-socket.c +++ b/src/core/dbus-socket.c @@ -39,6 +39,7 @@ BUS_EXEC_COMMAND_INTERFACE("ExecStopPost") \ BUS_EXEC_CONTEXT_INTERFACE \ BUS_KILL_CONTEXT_INTERFACE \ + BUS_UNIT_CGROUP_INTERFACE \ " \n" \ " \n" \ " \n" \ @@ -142,6 +143,7 @@ DBusHandlerResult bus_socket_message_handler(Unit *u, DBusConnection *c, DBusMes { "org.freedesktop.systemd1.Socket", bus_socket_properties, s }, { "org.freedesktop.systemd1.Socket", bus_exec_context_properties, &s->exec_context }, { "org.freedesktop.systemd1.Socket", bus_kill_context_properties, &s->kill_context }, + { "org.freedesktop.systemd1.Socket", bus_unit_properties, u }, { NULL, } }; diff --git a/src/core/dbus-swap.c b/src/core/dbus-swap.c index 67ea0f24fe..2e99fba7db 100644 --- a/src/core/dbus-swap.c +++ b/src/core/dbus-swap.c @@ -38,6 +38,7 @@ BUS_EXEC_COMMAND_INTERFACE("ExecDeactivate") \ BUS_EXEC_CONTEXT_INTERFACE \ BUS_KILL_CONTEXT_INTERFACE \ + BUS_UNIT_CGROUP_INTERFACE \ " \n" \ " \n" \ " \n" @@ -106,6 +107,7 @@ DBusHandlerResult bus_swap_message_handler(Unit *u, DBusConnection *c, DBusMessa { "org.freedesktop.systemd1.Swap", bus_swap_properties, s }, { "org.freedesktop.systemd1.Swap", bus_exec_context_properties, &s->exec_context }, { "org.freedesktop.systemd1.Swap", bus_kill_context_properties, &s->kill_context }, + { "org.freedesktop.systemd1.Swap", bus_unit_cgroup_properties, u }, { NULL, } }; diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c index 8433a720b2..c7bf043764 100644 --- a/src/core/dbus-unit.c +++ b/src/core/dbus-unit.c @@ -27,6 +27,9 @@ #include "bus-errors.h" #include "dbus-common.h" #include "selinux-access.h" +#include "cgroup-util.h" +#include "strv.h" +#include "path-util.h" const char bus_unit_interface[] _introspect_("Unit") = BUS_UNIT_INTERFACE; @@ -468,6 +471,69 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusConnection *conn if (!reply) goto oom; + } else if (streq_ptr(dbus_message_get_member(message), "SetControlGroups")) { + DBusMessageIter iter; + + SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "start"); + + if (!dbus_message_iter_init(message, &iter)) + goto oom; + + r = bus_unit_cgroup_set(u, &iter); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + reply = dbus_message_new_method_return(message); + if (!reply) + goto oom; + + } else if (streq_ptr(dbus_message_get_member(message), "UnsetControlGroups")) { + DBusMessageIter iter; + + SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "stop"); + + if (!dbus_message_iter_init(message, &iter)) + goto oom; + + r = bus_unit_cgroup_set(u, &iter); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + reply = dbus_message_new_method_return(message); + if (!reply) + goto oom; + } else if (streq_ptr(dbus_message_get_member(message), "SetControlGroupAttributes")) { + DBusMessageIter iter; + + SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "start"); + + if (!dbus_message_iter_init(message, &iter)) + goto oom; + + r = bus_unit_cgroup_attribute_set(u, &iter); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + reply = dbus_message_new_method_return(message); + if (!reply) + goto oom; + + } else if (streq_ptr(dbus_message_get_member(message), "UnsetControlGroupAttributes")) { + DBusMessageIter iter; + + SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "stop"); + + if (!dbus_message_iter_init(message, &iter)) + goto oom; + + r = bus_unit_cgroup_attribute_unset(u, &iter); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + reply = dbus_message_new_method_return(message); + if (!reply) + goto oom; + } else if (UNIT_VTABLE(u)->bus_message_handler) return UNIT_VTABLE(u)->bus_message_handler(u, connection, message); else @@ -809,6 +875,180 @@ oom: return DBUS_HANDLER_RESULT_NEED_MEMORY; } +int bus_unit_cgroup_set(Unit *u, DBusMessageIter *iter) { + int r; + _cleanup_strv_free_ char **a = NULL; + char **name; + + assert(u); + assert(iter); + + if (!unit_get_exec_context(u)) + return -EINVAL; + + r = bus_parse_strv_iter(iter, &a); + if (r < 0) + return r; + + STRV_FOREACH(name, a) { + _cleanup_free_ char *controller = NULL, *old_path = NULL, *new_path = NULL; + CGroupBonding *b; + + r = cg_split_spec(*name, &controller, &new_path); + if (r < 0) + return r; + + b = cgroup_bonding_find_list(u->cgroup_bondings, controller); + if (b) { + old_path = strdup(b->path); + if (!old_path) + return -ENOMEM; + } + + r = unit_add_cgroup_from_text(u, *name, true, &b); + if (r < 0) + return r; + + if (r > 0) { + /* Try to move things to the new place, and clean up the old place */ + cgroup_bonding_realize(b); + cgroup_bonding_migrate(b, u->cgroup_bondings); + + if (old_path) + cg_trim(controller, old_path, true); + } + } + + return 0; +} + +int bus_unit_cgroup_unset(Unit *u, DBusMessageIter *iter) { + _cleanup_strv_free_ char **a = NULL; + char **name; + int r; + + assert(u); + assert(iter); + + if (!unit_get_exec_context(u)) + return -EINVAL; + + r = bus_parse_strv_iter(iter, &a); + if (r < 0) + return r; + + STRV_FOREACH(name, a) { + _cleanup_free_ char *controller = NULL, *path = NULL, *target = NULL; + CGroupBonding *b; + + r = cg_split_spec(*name, &controller, &path); + if (r < 0) + return r; + + b = cgroup_bonding_find_list(u->cgroup_bondings, controller); + if (!b) + continue; + + if (path && !path_equal(path, b->path)) + continue; + + if (b->essential) + return -EINVAL; + + /* Try to migrate the old group away */ + if (cg_get_by_pid(controller, 0, &target) >= 0) + cgroup_bonding_migrate_to(u->cgroup_bondings, target, false); + + cgroup_bonding_free(b, true); + } + + return 0; +} + +int bus_unit_cgroup_attribute_set(Unit *u, DBusMessageIter *iter) { + DBusMessageIter sub, sub2; + int r; + + assert(u); + assert(iter); + + if (!unit_get_exec_context(u)) + return -EINVAL; + + if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_ARRAY || + dbus_message_iter_get_element_type(iter) != DBUS_TYPE_STRUCT) + return -EINVAL; + + dbus_message_iter_recurse(iter, &sub); + + while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { + const char *name, *value; + CGroupAttribute *a; + + assert_se(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_STRUCT); + + dbus_message_iter_recurse(&sub, &sub2); + + if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &name, true) < 0 || + bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &value, false) < 0) + return -EINVAL; + + dbus_message_iter_next(&sub); + + r = unit_add_cgroup_attribute(u, NULL, name, value, NULL, &a); + if (r < 0) + return r; + + if (r > 0) { + CGroupBonding *b; + + b = cgroup_bonding_find_list(u->cgroup_bondings, a->controller); + if (!b) { + /* Doesn't exist yet? Then let's add it */ + r = unit_add_cgroup_from_text(u, a->controller, false, &b); + if (r < 0) + return r; + + if (r > 0) { + cgroup_bonding_realize(b); + cgroup_bonding_migrate(b, u->cgroup_bondings); + } + } + + /* Make it count */ + cgroup_attribute_apply(a, u->cgroup_bondings); + } + } + + return 0; +} + +int bus_unit_cgroup_attribute_unset(Unit *u, DBusMessageIter *iter) { + _cleanup_strv_free_ char **l = NULL; + char **name; + int r; + + assert(u); + assert(iter); + + if (!unit_get_exec_context(u)) + return -EINVAL; + + r = bus_parse_strv_iter(iter, &l); + if (r < 0) + return r; + + STRV_FOREACH(name, l) { + CGroupAttribute *a; + + a = cgroup_attribute_find_list(u->cgroup_attributes, NULL, *name); + if (a) + cgroup_attribute_free(a); + } + + return 0; +} + const BusProperty bus_unit_properties[] = { { "Id", bus_property_append_string, "s", offsetof(Unit, id), true }, { "Names", bus_unit_append_names, "as", 0 }, @@ -864,9 +1104,6 @@ const BusProperty bus_unit_properties[] = { { "OnFailureIsolate", bus_property_append_bool, "b", offsetof(Unit, on_failure_isolate) }, { "IgnoreOnIsolate", bus_property_append_bool, "b", offsetof(Unit, ignore_on_isolate) }, { "IgnoreOnSnapshot", bus_property_append_bool, "b", offsetof(Unit, ignore_on_snapshot) }, - { "DefaultControlGroup", bus_unit_append_default_cgroup, "s", 0 }, - { "ControlGroup", bus_unit_append_cgroups, "as", 0 }, - { "ControlGroupAttributes", bus_unit_append_cgroup_attrs,"a(sss)", 0 }, { "NeedDaemonReload", bus_unit_append_need_daemon_reload, "b", 0 }, { "JobTimeoutUSec", bus_property_append_usec, "t", offsetof(Unit, job_timeout) }, { "ConditionTimestamp", bus_property_append_usec, "t", offsetof(Unit, condition_timestamp.realtime) }, @@ -875,3 +1112,10 @@ const BusProperty bus_unit_properties[] = { { "LoadError", bus_unit_append_load_error, "(ss)", 0 }, { NULL, } }; + +const BusProperty bus_unit_cgroup_properties[] = { + { "DefaultControlGroup", bus_unit_append_default_cgroup, "s", 0 }, + { "ControlGroups", bus_unit_append_cgroups, "as", 0 }, + { "ControlGroupAttributes", bus_unit_append_cgroup_attrs, "a(sss)", 0 }, + { NULL, } +}; diff --git a/src/core/dbus-unit.h b/src/core/dbus-unit.h index ac6785a949..7b8c5a9442 100644 --- a/src/core/dbus-unit.h +++ b/src/core/dbus-unit.h @@ -113,9 +113,6 @@ " \n" \ " \n" \ " \n" \ - " \n" \ - " \n" \ - " \n" \ " \n" \ " \n" \ " \n" \ @@ -124,16 +121,37 @@ " \n" \ " \n" +#define BUS_UNIT_CGROUP_INTERFACE \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" + #define BUS_UNIT_INTERFACES_LIST \ BUS_GENERIC_INTERFACES_LIST \ "org.freedesktop.systemd1.Unit\0" extern const BusProperty bus_unit_properties[]; +extern const BusProperty bus_unit_cgroup_properties[]; void bus_unit_send_change_signal(Unit *u); void bus_unit_send_removed_signal(Unit *u); - DBusHandlerResult bus_unit_queue_job( DBusConnection *connection, DBusMessage *message, @@ -142,6 +160,11 @@ DBusHandlerResult bus_unit_queue_job( JobMode mode, bool reload_if_possible); +int bus_unit_cgroup_set(Unit *u, DBusMessageIter *iter); +int bus_unit_cgroup_unset(Unit *u, DBusMessageIter *iter); +int bus_unit_cgroup_attribute_set(Unit *u, DBusMessageIter *iter); +int bus_unit_cgroup_attribute_unset(Unit *u, DBusMessageIter *iter); + extern const DBusObjectPathVTable bus_unit_vtable; extern const char bus_unit_interface[]; diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index e35fdbc5ec..4d1154e408 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -984,7 +984,7 @@ int config_parse_unit_cgroup( if (!ku) return -ENOMEM; - r = unit_add_cgroup_from_text(u, ku); + r = unit_add_cgroup_from_text(u, ku, true, NULL); if (r < 0) { log_error("[%s:%u] Failed to parse cgroup value %s, ignoring: %s", filename, line, k, rvalue); @@ -1659,7 +1659,7 @@ int config_parse_unit_cgroup_attr( return 0; } - r = unit_add_cgroup_attribute(u, NULL, l[0], l[1], NULL); + r = unit_add_cgroup_attribute(u, NULL, l[0], l[1], NULL, NULL); strv_free(l); if (r < 0) { @@ -1689,7 +1689,7 @@ int config_parse_unit_cpu_shares(const char *filename, unsigned line, const char if (asprintf(&t, "%lu", ul) < 0) return -ENOMEM; - r = unit_add_cgroup_attribute(u, "cpu", "cpu.shares", t, NULL); + r = unit_add_cgroup_attribute(u, "cpu", "cpu.shares", t, NULL, NULL); free(t); if (r < 0) { @@ -1722,7 +1722,7 @@ int config_parse_unit_memory_limit(const char *filename, unsigned line, const ch r = unit_add_cgroup_attribute(u, "memory", streq(lvalue, "MemorySoftLimit") ? "memory.soft_limit_in_bytes" : "memory.limit_in_bytes", - t, NULL); + t, NULL, NULL); free(t); if (r < 0) { @@ -1821,7 +1821,7 @@ int config_parse_unit_device_allow(const char *filename, unsigned line, const ch r = unit_add_cgroup_attribute(u, "devices", streq(lvalue, "DeviceAllow") ? "devices.allow" : "devices.deny", - rvalue, device_map); + rvalue, device_map, NULL); if (r < 0) { log_error("[%s:%u] Failed to add cgroup attribute value, ignoring: %s", filename, line, rvalue); @@ -1931,9 +1931,9 @@ int config_parse_unit_blkio_weight(const char *filename, unsigned line, const ch return -ENOMEM; if (device) - r = unit_add_cgroup_attribute(u, "blkio", "blkio.weight_device", t, blkio_map); + r = unit_add_cgroup_attribute(u, "blkio", "blkio.weight_device", t, blkio_map, NULL); else - r = unit_add_cgroup_attribute(u, "blkio", "blkio.weight", t, NULL); + r = unit_add_cgroup_attribute(u, "blkio", "blkio.weight", t, NULL, NULL); free(t); if (r < 0) { @@ -1987,7 +1987,7 @@ int config_parse_unit_blkio_bandwidth(const char *filename, unsigned line, const r = unit_add_cgroup_attribute(u, "blkio", streq(lvalue, "BlockIOReadBandwidth") ? "blkio.read_bps_device" : "blkio.write_bps_device", - t, blkio_map); + t, blkio_map, NULL); free(t); if (r < 0) { diff --git a/src/core/unit.c b/src/core/unit.c index f00cfedb89..1194c524bf 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1941,8 +1941,9 @@ int unit_add_cgroup(Unit *u, CGroupBonding *b) { assert(b->path); if (!b->controller) { - if (!(b->controller = strdup(SYSTEMD_CGROUP_CONTROLLER))) - return -ENOMEM; + b->controller = strdup(SYSTEMD_CGROUP_CONTROLLER); + if (!b->controller) + return log_oom(); b->ours = true; } @@ -1956,7 +1957,8 @@ int unit_add_cgroup(Unit *u, CGroupBonding *b) { l = hashmap_get(u->manager->cgroup_bondings, b->path); LIST_PREPEND(CGroupBonding, by_path, l, b); - if ((r = hashmap_replace(u->manager->cgroup_bondings, b->path, l)) < 0) { + r = hashmap_replace(u->manager->cgroup_bondings, b->path, l); + if (r < 0) { LIST_REMOVE(CGroupBonding, by_path, l, b); return r; } @@ -1969,26 +1971,21 @@ int unit_add_cgroup(Unit *u, CGroupBonding *b) { } char *unit_default_cgroup_path(Unit *u) { - char *p; - assert(u); if (u->instance) { - char *t; + _cleanup_free_ char *t = NULL; t = unit_name_template(u->id); if (!t) return NULL; - p = strjoin(u->manager->cgroup_hierarchy, "/", t, "/", u->instance, NULL); - free(t); + return strjoin(u->manager->cgroup_hierarchy, "/", t, "/", u->instance, NULL); } else - p = strjoin(u->manager->cgroup_hierarchy, "/", u->id, NULL); - - return p; + return strjoin(u->manager->cgroup_hierarchy, "/", u->id, NULL); } -int unit_add_cgroup_from_text(Unit *u, const char *name) { +int unit_add_cgroup_from_text(Unit *u, const char *name, bool overwrite, CGroupBonding **ret) { char *controller = NULL, *path = NULL; CGroupBonding *b = NULL; bool ours = false; @@ -1997,7 +1994,8 @@ int unit_add_cgroup_from_text(Unit *u, const char *name) { assert(u); assert(name); - if ((r = cg_split_spec(name, &controller, &path)) < 0) + r = cg_split_spec(name, &controller, &path); + if (r < 0) return r; if (!path) { @@ -2013,16 +2011,42 @@ int unit_add_cgroup_from_text(Unit *u, const char *name) { if (!path || !controller) { free(path); free(controller); - - return -ENOMEM; + return log_oom(); } - if (cgroup_bonding_find_list(u->cgroup_bondings, controller)) { + b = cgroup_bonding_find_list(u->cgroup_bondings, controller); + if (b) { + if (streq(path, b->path)) { + free(path); + free(controller); + + if (ret) + *ret = b; + return 0; + } + + if (overwrite && !b->essential) { + free(controller); + + free(b->path); + b->path = path; + + b->ours = ours; + b->realized = false; + + if (ret) + *ret = b; + + return 1; + } + r = -EEXIST; + b = NULL; goto fail; } - if (!(b = new0(CGroupBonding, 1))) { + b = new0(CGroupBonding, 1); + if (!b) { r = -ENOMEM; goto fail; } @@ -2032,10 +2056,14 @@ int unit_add_cgroup_from_text(Unit *u, const char *name) { b->ours = ours; b->essential = streq(controller, SYSTEMD_CGROUP_CONTROLLER); - if ((r = unit_add_cgroup(u, b)) < 0) + r = unit_add_cgroup(u, b); + if (r < 0) goto fail; - return 0; + if (ret) + *ret = b; + + return 1; fail: free(path); @@ -2057,10 +2085,12 @@ static int unit_add_one_default_cgroup(Unit *u, const char *controller) { if (cgroup_bonding_find_list(u->cgroup_bondings, controller)) return 0; - if (!(b = new0(CGroupBonding, 1))) + b = new0(CGroupBonding, 1); + if (!b) return -ENOMEM; - if (!(b->controller = strdup(controller))) + b->controller = strdup(controller); + if (!b) goto fail; b->path = unit_default_cgroup_path(u); @@ -2070,7 +2100,8 @@ static int unit_add_one_default_cgroup(Unit *u, const char *controller) { b->ours = true; b->essential = streq(controller, SYSTEMD_CGROUP_CONTROLLER); - if ((r = unit_add_cgroup(u, b)) < 0) + r = unit_add_cgroup(u, b); + if (r < 0) goto fail; return 0; @@ -2096,7 +2127,8 @@ int unit_add_default_cgroups(Unit *u) { if (!u->manager->cgroup_hierarchy) return 0; - if ((r = unit_add_one_default_cgroup(u, NULL)) < 0) + r = unit_add_one_default_cgroup(u, NULL); + if (r < 0) return r; STRV_FOREACH(c, u->manager->default_controllers) @@ -2111,12 +2143,18 @@ int unit_add_default_cgroups(Unit *u) { CGroupBonding* unit_get_default_cgroup(Unit *u) { assert(u); - return cgroup_bonding_find_list(u->cgroup_bondings, SYSTEMD_CGROUP_CONTROLLER); + return cgroup_bonding_find_list(u->cgroup_bondings, NULL); } -int unit_add_cgroup_attribute(Unit *u, const char *controller, const char *name, const char *value, CGroupAttributeMapCallback map_callback) { - int r; - char *c = NULL; +int unit_add_cgroup_attribute( + Unit *u, + const char *controller, + const char *name, + const char *value, + CGroupAttributeMapCallback map_callback, + CGroupAttribute **ret) { + + _cleanup_free_ char *c = NULL; CGroupAttribute *a; assert(u); @@ -2137,16 +2175,36 @@ int unit_add_cgroup_attribute(Unit *u, const char *controller, const char *name, controller = c; } - if (streq(controller, SYSTEMD_CGROUP_CONTROLLER)) { - r = -EINVAL; - goto finish; + if (streq(controller, SYSTEMD_CGROUP_CONTROLLER)) + return -EINVAL; + + a = cgroup_attribute_find_list(u->cgroup_attributes, controller, name); + if (a) { + char *v; + + if (streq(value, a->value)) { + if (ret) + *ret = a; + + return 0; + } + + v = strdup(value); + if (!v) + return -ENOMEM; + + free(a->value); + a->value = v; + + if (ret) + *ret = a; + + return 1; } a = new0(CGroupAttribute, 1); - if (!a) { - r = -ENOMEM; - goto finish; - } + if (!a) + return -ENOMEM; if (c) { a->controller = c; @@ -2167,14 +2225,14 @@ int unit_add_cgroup_attribute(Unit *u, const char *controller, const char *name, } a->map_callback = map_callback; + a->unit = u; LIST_PREPEND(CGroupAttribute, by_unit, u->cgroup_attributes, a); - r = 0; + if (ret) + *ret = a; -finish: - free(c); - return r; + return 1; } int unit_load_related_unit(Unit *u, const char *type, Unit **_found) { diff --git a/src/core/unit.h b/src/core/unit.h index 702bfeece6..d1ecae74ac 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -438,10 +438,10 @@ int unit_add_two_dependencies_by_name_inverse(Unit *u, UnitDependency d, UnitDep int unit_add_exec_dependencies(Unit *u, ExecContext *c); int unit_add_cgroup(Unit *u, CGroupBonding *b); -int unit_add_cgroup_from_text(Unit *u, const char *name); +int unit_add_cgroup_from_text(Unit *u, const char *name, bool overwrite, CGroupBonding **ret); int unit_add_default_cgroups(Unit *u); CGroupBonding* unit_get_default_cgroup(Unit *u); -int unit_add_cgroup_attribute(Unit *u, const char *controller, const char *name, const char *value, CGroupAttributeMapCallback map_callback); +int unit_add_cgroup_attribute(Unit *u, const char *controller, const char *name, const char *value, CGroupAttributeMapCallback map_callback, CGroupAttribute **ret); int unit_choose_id(Unit *u, const char *name); int unit_set_description(Unit *u, const char *description); diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 18cbf0412a..9dfab2eaac 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -374,18 +374,20 @@ int cg_kill_recursive_and_wait(const char *controller, const char *path, bool re return 0; } -int cg_migrate(const char *controller, const char *from, const char *to, bool ignore_self) { +int cg_migrate(const char *cfrom, const char *pfrom, const char *cto, const char *pto, bool ignore_self) { bool done = false; - Set *s; + _cleanup_set_free_ Set *s = NULL; int r, ret = 0; pid_t my_pid; - FILE *f = NULL; + _cleanup_fclose_ FILE *f = NULL; - assert(controller); - assert(from); - assert(to); + assert(cfrom); + assert(pfrom); + assert(cto); + assert(pto); - if (!(s = set_new(trivial_hash_func, trivial_compare_func))) + s = set_new(trivial_hash_func, trivial_compare_func); + if (!s) return -ENOMEM; my_pid = getpid(); @@ -394,11 +396,12 @@ int cg_migrate(const char *controller, const char *from, const char *to, bool ig pid_t pid = 0; done = true; - if ((r = cg_enumerate_tasks(controller, from, &f)) < 0) { + r = cg_enumerate_tasks(cfrom, pfrom, &f); + if (r < 0) { if (ret >= 0 && r != -ENOENT) ret = r; - goto finish; + return ret; } while ((r = cg_read_pid(f, &pid)) > 0) { @@ -412,7 +415,8 @@ int cg_migrate(const char *controller, const char *from, const char *to, bool ig if (set_get(s, LONG_TO_PTR(pid)) == LONG_TO_PTR(pid)) continue; - if ((r = cg_attach(controller, to, pid)) < 0) { + r = cg_attach(cto, pto, pid); + if (r < 0) { if (ret >= 0 && r != -ESRCH) ret = r; } else if (ret == 0) @@ -420,11 +424,12 @@ int cg_migrate(const char *controller, const char *from, const char *to, bool ig done = false; - if ((r = set_put(s, LONG_TO_PTR(pid))) < 0) { + r = set_put(s, LONG_TO_PTR(pid)); + if (r < 0) { if (ret >= 0) ret = r; - goto finish; + return ret; } } @@ -432,56 +437,48 @@ int cg_migrate(const char *controller, const char *from, const char *to, bool ig if (ret >= 0) ret = r; - goto finish; + return ret; } fclose(f); f = NULL; - } while (!done); -finish: - set_free(s); - - if (f) - fclose(f); - return ret; } -int cg_migrate_recursive(const char *controller, const char *from, const char *to, bool ignore_self, bool rem) { +int cg_migrate_recursive(const char *cfrom, const char *pfrom, const char *cto, const char *pto, bool ignore_self, bool rem) { int r, ret = 0; - DIR *d = NULL; + _cleanup_closedir_ DIR *d = NULL; char *fn; - assert(controller); - assert(from); - assert(to); + assert(cfrom); + assert(pfrom); + assert(cto); + assert(pto); - ret = cg_migrate(controller, from, to, ignore_self); + ret = cg_migrate(cfrom, pfrom, cto, pto, ignore_self); - if ((r = cg_enumerate_subgroups(controller, from, &d)) < 0) { + r = cg_enumerate_subgroups(cfrom, pfrom, &d); + if (r < 0) { if (ret >= 0 && r != -ENOENT) ret = r; - goto finish; + return ret; } while ((r = cg_read_subgroup(d, &fn)) > 0) { - char *p = NULL; + _cleanup_free_ char *p = NULL; - r = asprintf(&p, "%s/%s", from, fn); + p = strjoin(pfrom, "/", fn, NULL); free(fn); - - if (r < 0) { + if (!p) { if (ret >= 0) ret = -ENOMEM; - goto finish; + return ret; } - r = cg_migrate_recursive(controller, p, to, ignore_self, rem); - free(p); - + r = cg_migrate_recursive(cfrom, p, cto, pto, ignore_self, rem); if (r != 0 && ret >= 0) ret = r; } @@ -489,17 +486,11 @@ int cg_migrate_recursive(const char *controller, const char *from, const char *t if (r < 0 && ret >= 0) ret = r; - if (rem) - if ((r = cg_rmdir(controller, from, true)) < 0) { - if (ret >= 0 && - r != -ENOENT && - r != -EBUSY) - ret = r; - } - -finish: - if (d) - closedir(d); + if (rem) { + r = cg_rmdir(cfrom, pfrom, true); + if (r < 0 && ret >= 0 && r != -ENOENT && r != -EBUSY) + return r; + } return ret; } @@ -677,7 +668,7 @@ int cg_delete(const char *controller, const char *path) { if ((r = path_get_parent(path, &parent)) < 0) return r; - r = cg_migrate_recursive(controller, path, parent, false, true); + r = cg_migrate_recursive(controller, path, controller, parent, false, true); free(parent); return r == -ENOENT ? 0 : r; @@ -947,7 +938,6 @@ int cg_is_empty_by_spec(const char *spec, bool ignore_self) { return cg_is_empty(controller, path, ignore_self); } - int cg_is_empty_recursive(const char *controller, const char *path, bool ignore_self) { int r; DIR *d = NULL; @@ -997,12 +987,12 @@ int cg_split_spec(const char *spec, char **controller, char **path) { char *t = NULL, *u = NULL; assert(spec); - assert(controller || path); if (*spec == '/') { if (path) { - if (!(t = strdup(spec))) + t = strdup(spec); + if (!t) return -ENOMEM; *path = t; @@ -1014,13 +1004,14 @@ int cg_split_spec(const char *spec, char **controller, char **path) { return 0; } - if (!(e = strchr(spec, ':'))) { - + e = strchr(spec, ':'); + if (!e) { if (strchr(spec, '/') || spec[0] == 0) return -EINVAL; if (controller) { - if (!(t = strdup(spec))) + t = strdup(spec); + if (!t) return -ENOMEM; *controller = t; @@ -1032,20 +1023,23 @@ int cg_split_spec(const char *spec, char **controller, char **path) { return 0; } - if (e[1] != '/' || - e == spec || - memchr(spec, '/', e-spec)) + if (e[1] != '/' || e == spec || memchr(spec, '/', e-spec)) return -EINVAL; - if (controller) - if (!(t = strndup(spec, e-spec))) + if (controller) { + t = strndup(spec, e-spec); + if (!t) return -ENOMEM; - if (path) - if (!(u = strdup(e+1))) { + } + + if (path) { + u = strdup(e+1); + if (!u) { free(t); return -ENOMEM; } + } if (controller) *controller = t; diff --git a/src/shared/cgroup-util.h b/src/shared/cgroup-util.h index af2efc39b4..f663fba687 100644 --- a/src/shared/cgroup-util.h +++ b/src/shared/cgroup-util.h @@ -39,8 +39,8 @@ int cg_kill(const char *controller, const char *path, int sig, bool sigcont, boo int cg_kill_recursive(const char *controller, const char *path, int sig, bool sigcont, bool ignore_self, bool remove, Set *s); int cg_kill_recursive_and_wait(const char *controller, const char *path, bool remove); -int cg_migrate(const char *controller, const char *from, const char *to, bool ignore_self); -int cg_migrate_recursive(const char *controller, const char *from, const char *to, bool ignore_self, bool remove); +int cg_migrate(const char *cfrom, const char *pfrom, const char *cto, const char *pto, bool ignore_self); +int cg_migrate_recursive(const char *cfrom, const char *pfrom, const char *cto, const char *pto, bool ignore_self, bool remove); int cg_split_spec(const char *spec, char **controller, char **path); int cg_join_spec(const char *controller, const char *path, char **spec); diff --git a/src/shared/strv.h b/src/shared/strv.h index 44ba3d1530..fd728eff81 100644 --- a/src/shared/strv.h +++ b/src/shared/strv.h @@ -82,4 +82,8 @@ bool strv_overlap(char **a, char **b); #define STRV_FOREACH_BACKWARDS(s, l) \ for (; (l) && ((s) >= (l)); (s)--) +#define STRV_FOREACH_PAIR(x, y, l) \ + for ((x) = (l), (y) = (x+1); (x) && *(x) && *(y); (x) += 2) + + char **strv_sort(char **l); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 91467cc085..075ee4b752 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -2025,6 +2025,110 @@ static int kill_unit(DBusConnection *bus, char **args) { return 0; } +static int set_cgroup(DBusConnection *bus, char **args) { + _cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL; + DBusError error; + const char *method; + DBusMessageIter iter; + int r; + _cleanup_free_ char *n = NULL; + + assert(bus); + assert(args); + + dbus_error_init(&error); + + method = + streq(args[0], "set-cgroup") ? "SetUnitControlGroups" : + streq(args[0], "unset-group") ? "UnsetUnitControlGroups" + : "UnsetUnitControlGroupAttributes"; + + n = unit_name_mangle(args[1]); + if (!n) + return log_oom(); + + m = dbus_message_new_method_call( + "org.freedesktop.systemd1", + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + method); + if (!m) + return log_oom(); + + dbus_message_iter_init_append(m, &iter); + if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &n)) + return log_oom(); + + r = bus_append_strv_iter(&iter, args + 2); + if (r < 0) + return log_oom(); + + reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error); + if (!reply) { + log_error("Failed to issue method call: %s", bus_error_message(&error)); + dbus_error_free(&error); + return -EIO; + } + + return 0; +} + +static int set_cgroup_attr(DBusConnection *bus, char **args) { + _cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL; + DBusError error; + DBusMessageIter iter, sub, sub2; + int r; + char **x, **y; + _cleanup_free_ char *n = NULL; + + assert(bus); + assert(args); + + dbus_error_init(&error); + + if (strv_length(args) % 2 != 0) { + log_error("Expecting an uneven number of arguments!"); + return -EINVAL; + } + + n = unit_name_mangle(args[1]); + if (!n) + return log_oom(); + + m = dbus_message_new_method_call( + "org.freedesktop.systemd1", + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + "SetUnitControlGroupAttributes"); + if (!m) + return log_oom(); + + dbus_message_iter_init_append(m, &iter); + if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &n) || + !dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "(ss)", &sub)) + return log_oom(); + + STRV_FOREACH_PAIR(x, y, args + 2) { + if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) || + !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, x) || + !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, y) || + !dbus_message_iter_close_container(&sub, &sub2)) + return log_oom(); + } + + if (!dbus_message_iter_close_container(&iter, &sub)) + return -ENOMEM; + + reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error); + if (!reply) { + log_error("Failed to issue method call: %s", bus_error_message(&error)); + dbus_error_free(&error); + return -EIO; + } + + return 0; +} + typedef struct ExecStatusInfo { char *name; @@ -4076,6 +4180,12 @@ static int systemctl_help(void) { " help [NAME...|PID...] Show manual for one or more units\n" " reset-failed [NAME...] Reset failed state for all, one, or more\n" " units\n" + " set-cgroup [NAME] [CGROUP...] Add unit to a control group\n" + " unset-cgroup [NAME] [CGROUP...] Remove unit from a control group\n" + " set-cgroup-attr [NAME] [ATTR] [VALUE] ...\n" + " Set control group attribute\n" + " unset-cgroup-attr [NAME] [ATTR...]\n" + " Unset control group attribute\n" " load [NAME...] Load one or more units\n\n" "Unit File Commands:\n" " list-unit-files List installed unit files\n" @@ -5051,6 +5161,10 @@ static int systemctl_main(DBusConnection *bus, int argc, char *argv[], DBusError { "condreload", MORE, 2, start_unit }, /* For compatibility with ALTLinux */ { "condrestart", MORE, 2, start_unit }, /* For compatibility with RH */ { "isolate", EQUAL, 2, start_unit }, + { "set-cgroup", MORE, 2, set_cgroup }, + { "unset-cgroup", MORE, 2, set_cgroup }, + { "set-cgroup-attr", MORE, 2, set_cgroup_attr }, + { "unset-cgroup-attr", MORE, 2, set_cgroup }, { "kill", MORE, 2, kill_unit }, { "is-active", MORE, 2, check_unit_active }, { "check", MORE, 2, check_unit_active }, diff --git a/src/test/test-cgroup.c b/src/test/test-cgroup.c index 6d64a4e47f..96aca1f7de 100644 --- a/src/test/test-cgroup.c +++ b/src/test/test-cgroup.c @@ -65,7 +65,7 @@ int main(int argc, char*argv[]) { assert_se(cg_kill_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-a", 0, false, false, false, NULL) == 0); assert_se(cg_kill_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-b", 0, false, false, false, NULL) > 0); - assert_se(cg_migrate_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-b", "/test-a", false, false) > 0); + assert_se(cg_migrate_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-b", SYSTEMD_CGROUP_CONTROLLER, "/test-a", false, false) > 0); assert_se(cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-a", false) == 0); assert_se(cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, "/test-b", false) > 0); -- cgit v1.2.1 From 043c432b77165dd149b7b870d3deb52cafe4fdb5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 14 Jan 2013 02:08:02 +0100 Subject: bootchart: no need for memset here --- src/bootchart/bootchart.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 37d8fbe6e9..f1b0e58c69 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -75,13 +75,11 @@ int main(int argc, char *argv[]) struct ps_struct *ps; char output_file[PATH_MAX]; char datestr[200]; - time_t t; + time_t t = 0; FILE *f; int gind; int i; - memset(&t, 0, sizeof(time_t)); - rlim.rlim_cur = 4096; rlim.rlim_max = 4096; (void) setrlimit(RLIMIT_NOFILE, &rlim); -- cgit v1.2.1 From f84190d8cad66f36eef1d851213711244ca297be Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 14 Jan 2013 02:11:22 +0100 Subject: systemctl: numerous modernizations --- src/systemctl/systemctl.c | 442 +++++++++++++++++----------------------------- 1 file changed, 163 insertions(+), 279 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 075ee4b752..b22010dcac 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -237,21 +237,18 @@ static void warn_wall(enum action a) { return; if (arg_wall) { - char *p; + _cleanup_free_ char *p; p = strv_join(arg_wall, " "); if (!p) { - log_error("Failed to join strings."); + log_oom(); return; } if (*p) { utmp_wall(p, NULL); - free(p); return; } - - free(p); } if (!table[a]) @@ -300,7 +297,8 @@ static int compare_unit_info(const void *a, const void *b) { if (d1 && d2) { int r; - if ((r = strcasecmp(d1, d2)) != 0) + r = strcasecmp(d1, d2); + if (r != 0) return r; } @@ -447,15 +445,15 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) { } static int list_units(DBusConnection *bus, char **args) { - DBusMessage *reply = NULL; - int r; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + _cleanup_free_ struct unit_info *unit_infos = NULL; DBusMessageIter iter, sub, sub2; unsigned c = 0, n_units = 0; - struct unit_info *unit_infos = NULL; + int r; pager_open_if_enabled(); - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", @@ -464,15 +462,14 @@ static int list_units(DBusConnection *bus, char **args) { &reply, NULL, DBUS_TYPE_INVALID); - if (r) - goto finish; + if (r < 0) + return r; if (!dbus_message_iter_init(reply, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&iter, &sub); @@ -480,28 +477,20 @@ static int list_units(DBusConnection *bus, char **args) { while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { struct unit_info *u; - if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) { - log_error("Failed to parse reply."); - r = -EIO; - goto finish; - } + assert(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_STRUCT); if (c >= n_units) { struct unit_info *w; n_units = MAX(2*c, 16); w = realloc(unit_infos, sizeof(struct unit_info) * n_units); - - if (!w) { - log_error("Failed to allocate unit array."); - r = -ENOMEM; - goto finish; - } + if (!w) + return log_oom(); unit_infos = w; } - u = unit_infos+c; + u = unit_infos + c; dbus_message_iter_recurse(&sub, &sub2); @@ -516,8 +505,7 @@ static int list_units(DBusConnection *bus, char **args) { bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &u->job_type, true) < 0 || bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &u->job_path, false) < 0) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_next(&sub); @@ -529,13 +517,7 @@ static int list_units(DBusConnection *bus, char **args) { output_units_list(unit_infos, c); } -finish: - if (reply) - dbus_message_unref(reply); - - free(unit_infos); - - return r; + return 0; } static int compare_unit_file_list(const void *a, const void *b) { @@ -626,11 +608,11 @@ static void output_unit_file_list(const UnitFileList *units, unsigned c) { } static int list_unit_files(DBusConnection *bus, char **args) { - DBusMessage *reply = NULL; - int r; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + _cleanup_free_ UnitFileList *units = NULL; DBusMessageIter iter, sub, sub2; unsigned c = 0, n_units = 0; - UnitFileList *units = NULL; + int r; pager_open_if_enabled(); @@ -664,7 +646,7 @@ static int list_unit_files(DBusConnection *bus, char **args) { hashmap_free(h); } else { - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", @@ -673,15 +655,14 @@ static int list_unit_files(DBusConnection *bus, char **args) { &reply, NULL, DBUS_TYPE_INVALID); - if (r) - goto finish; + if (r < 0) + return r; if (!dbus_message_iter_init(reply, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&iter, &sub); @@ -690,36 +671,27 @@ static int list_unit_files(DBusConnection *bus, char **args) { UnitFileList *u; const char *state; - if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) { - log_error("Failed to parse reply."); - r = -EIO; - goto finish; - } + assert(dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT); if (c >= n_units) { UnitFileList *w; n_units = MAX(2*c, 16); w = realloc(units, sizeof(struct UnitFileList) * n_units); - - if (!w) { - log_error("Failed to allocate unit array."); - r = -ENOMEM; - goto finish; - } + if (!w) + return log_oom(); units = w; } - u = units+c; + u = units + c; dbus_message_iter_recurse(&sub, &sub2); if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &u->path, true) < 0 || bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &state, false) < 0) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } u->state = unit_file_state_from_string(state); @@ -734,18 +706,11 @@ static int list_unit_files(DBusConnection *bus, char **args) { output_unit_file_list(units, c); } - r = 0; - -finish: - if (reply) - dbus_message_unref(reply); - - free(units); - - return r; + return 0; } static int dot_one_property(const char *name, const char *prop, DBusMessageIter *iter) { + static const char * const colors[] = { "Requires", "[color=\"black\"]", "RequiresOverridable", "[color=\"black\"]", @@ -804,14 +769,15 @@ static int dot_one_property(const char *name, const char *prop, DBusMessageIter } static int dot_one(DBusConnection *bus, const char *name, const char *path) { - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; const char *interface = "org.freedesktop.systemd1.Unit"; int r; DBusMessageIter iter, sub, sub2, sub3; + assert(bus); assert(path); - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", path, @@ -821,15 +787,14 @@ static int dot_one(DBusConnection *bus, const char *name, const char *path) { NULL, DBUS_TYPE_STRING, &interface, DBUS_TYPE_INVALID); - if (r) - goto finish; + if (r < 0) + return r; if (!dbus_message_iter_init(reply, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_DICT_ENTRY) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&iter, &sub); @@ -837,50 +802,32 @@ static int dot_one(DBusConnection *bus, const char *name, const char *path) { while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { const char *prop; - if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_DICT_ENTRY) { - log_error("Failed to parse reply."); - r = -EIO; - goto finish; - } - + assert(dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_DICT_ENTRY); dbus_message_iter_recurse(&sub, &sub2); - if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &prop, true) < 0) { + if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &prop, true) < 0 || + dbus_message_iter_get_arg_type(&sub2) != DBUS_TYPE_VARIANT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; - } - - if (dbus_message_iter_get_arg_type(&sub2) != DBUS_TYPE_VARIANT) { - log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&sub2, &sub3); - - if (dot_one_property(name, prop, &sub3)) { - log_error("Failed to parse reply."); - r = -EIO; - goto finish; - } + r = dot_one_property(name, prop, &sub3); + if (r < 0) + return r; dbus_message_iter_next(&sub); } -finish: - if (reply) - dbus_message_unref(reply); - - return r; + return 0; } static int dot(DBusConnection *bus, char **args) { - DBusMessage *reply = NULL; - int r; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; DBusMessageIter iter, sub, sub2; + int r; - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", @@ -889,15 +836,14 @@ static int dot(DBusConnection *bus, char **args) { &reply, NULL, DBUS_TYPE_INVALID); - if (r) - goto finish; + if (r < 0) + return r; if (!dbus_message_iter_init(reply, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } printf("digraph systemd {\n"); @@ -908,8 +854,7 @@ static int dot(DBusConnection *bus, char **args) { if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&sub, &sub2); @@ -922,12 +867,12 @@ static int dot(DBusConnection *bus, char **args) { bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &following, true) < 0 || bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &unit_path, true) < 0) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } - if ((r = dot_one(bus, id, unit_path)) < 0) - goto finish; + r = dot_one(bus, id, unit_path); + if (r < 0) + return r; /* printf("\t\"%s\";\n", id); */ dbus_message_iter_next(&sub); @@ -945,24 +890,18 @@ static int dot(DBusConnection *bus, char **args) { log_notice("-- You probably want to process this output with graphviz' dot tool.\n" "-- Try a shell pipeline like 'systemctl dot | dot -Tsvg > systemd.svg'!\n"); - r = 0; - -finish: - if (reply) - dbus_message_unref(reply); - - return r; + return 0; } static int list_jobs(DBusConnection *bus, char **args) { - DBusMessage *reply = NULL; - int r; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; DBusMessageIter iter, sub, sub2; unsigned k = 0; + int r; pager_open_if_enabled(); - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", @@ -971,15 +910,14 @@ static int list_jobs(DBusConnection *bus, char **args) { &reply, NULL, DBUS_TYPE_INVALID); - if (r) - goto finish; + if (r < 0) + return r; if (!dbus_message_iter_init(reply, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&iter, &sub); @@ -994,8 +932,7 @@ static int list_jobs(DBusConnection *bus, char **args) { if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&sub, &sub2); @@ -1007,8 +944,7 @@ static int list_jobs(DBusConnection *bus, char **args) { bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &job_path, true) < 0 || bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &unit_path, false) < 0) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } e = arg_full ? NULL : ellipsize(name, 25, 33); @@ -1023,13 +959,7 @@ static int list_jobs(DBusConnection *bus, char **args) { if (on_tty()) printf("\n%u jobs listed.\n", k); - r = 0; - -finish: - if (reply) - dbus_message_unref(reply); - - return r; + return 0; } static int load_unit(DBusConnection *bus, char **args) { @@ -1042,7 +972,10 @@ static int load_unit(DBusConnection *bus, char **args) { int r; n = unit_name_mangle(*name); - r = bus_method_call_with_reply ( + if (!n) + return log_oom(); + + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", @@ -1050,7 +983,7 @@ static int load_unit(DBusConnection *bus, char **args) { "LoadUnit", NULL, NULL, - DBUS_TYPE_STRING, n ? &n : name, + DBUS_TYPE_STRING, &n, DBUS_TYPE_INVALID); if (r < 0) return r; @@ -1095,19 +1028,22 @@ static int cancel_job(DBusConnection *bus, char **args) { } static bool need_daemon_reload(DBusConnection *bus, const char *unit) { - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; dbus_bool_t b = FALSE; DBusMessageIter iter, sub; const char *interface = "org.freedesktop.systemd1.Unit", *property = "NeedDaemonReload", *path; - char *n; + _cleanup_free_ char *n = NULL; int r; /* We ignore all errors here, since this is used to show a warning only */ n = unit_name_mangle(unit); + if (n) + return log_oom(); + r = bus_method_call_with_reply ( bus, "org.freedesktop.systemd1", @@ -1116,19 +1052,20 @@ static bool need_daemon_reload(DBusConnection *bus, const char *unit) { "GetUnit", &reply, NULL, - DBUS_TYPE_STRING, n ? (const char**) &n : &unit, + DBUS_TYPE_STRING, &n, DBUS_TYPE_INVALID); - free(n); - if (r) - goto finish; + if (r < 0) + return r; if (!dbus_message_get_args(reply, NULL, DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID)) - goto finish; + return -EIO; dbus_message_unref(reply); - r = bus_method_call_with_reply ( + reply = NULL; + + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", path, @@ -1139,24 +1076,18 @@ static bool need_daemon_reload(DBusConnection *bus, const char *unit) { DBUS_TYPE_STRING, &interface, DBUS_TYPE_STRING, &property, DBUS_TYPE_INVALID); - if (r) - goto finish; + if (r < 0) + return r; if (!dbus_message_iter_init(reply, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT) - goto finish; + return -EIO; dbus_message_iter_recurse(&iter, &sub); - if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_BOOLEAN) - goto finish; + return -EIO; dbus_message_iter_get_basic(&sub, &b); - -finish: - if (reply) - dbus_message_unref(reply); - return b; } @@ -1343,12 +1274,12 @@ static int wait_for_jobs(DBusConnection *bus, Set *s) { static int check_one_unit(DBusConnection *bus, const char *name, char **check_states, bool quiet) { _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + _cleanup_free_ char *n = NULL; DBusMessageIter iter, sub; const char *interface = "org.freedesktop.systemd1.Unit", *property = "ActiveState"; const char *state, *path; - _cleanup_free_ char *n = NULL; DBusError error; int r; @@ -1434,7 +1365,6 @@ static void check_triggering_units( DBusMessageIter iter, sub; const char *interface = "org.freedesktop.systemd1.Unit", *triggered_by_property = "TriggeredBy"; - char _cleanup_free_ *unit_path = NULL, *n = NULL; bool print_warning_label = true; int r; @@ -1515,9 +1445,9 @@ static int start_unit_one( Set *s) { _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + _cleanup_free_ char *n; const char *path; int r; - _cleanup_free_ char *n, *p = NULL; assert(method); assert(name); @@ -1562,17 +1492,18 @@ static int start_unit_one( n, arg_scope == UNIT_FILE_SYSTEM ? "--system" : "--user"); if (s) { + char *p; + p = strdup(path); if (!p) return log_oom(); r = set_put(s, p); if (r < 0) { + free(p); log_error("Failed to add path to set."); return r; } - - p = NULL; } return 0; @@ -1769,7 +1700,7 @@ static int reboot_with_logind(DBusConnection *bus, enum action a) { return -EINVAL; } - return bus_method_call_with_reply ( + return bus_method_call_with_reply( bus, "org.freedesktop.login1", "/org/freedesktop/login1", @@ -2006,6 +1937,8 @@ static int kill_unit(DBusConnection *bus, char **args) { _cleanup_free_ char *n = NULL; n = unit_name_mangle(*name); + if (!n) + return log_oom(); r = bus_method_call_with_reply( bus, @@ -2015,7 +1948,7 @@ static int kill_unit(DBusConnection *bus, char **args) { "KillUnit", NULL, NULL, - DBUS_TYPE_STRING, n ? &n : name, + DBUS_TYPE_STRING, &n, DBUS_TYPE_STRING, &arg_kill_who, DBUS_TYPE_INT32, &arg_signal, DBUS_TYPE_INVALID); @@ -2077,7 +2010,6 @@ static int set_cgroup_attr(DBusConnection *bus, char **args) { _cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL; DBusError error; DBusMessageIter iter, sub, sub2; - int r; char **x, **y; _cleanup_free_ char *n = NULL; @@ -2175,7 +2107,8 @@ static int exec_status_info_deserialize(DBusMessageIter *sub, ExecStatusInfo *i) if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &path, true) < 0) return -EIO; - if (!(i->path = strdup(path))) + i->path = strdup(path); + if (!i->path) return -ENOMEM; if (dbus_message_iter_get_arg_type(&sub2) != DBUS_TYPE_ARRAY || @@ -2190,8 +2123,8 @@ static int exec_status_info_deserialize(DBusMessageIter *sub, ExecStatusInfo *i) n++; } - - if (!(i->argv = new0(char*, n+1))) + i->argv = new0(char*, n+1); + if (!i->argv) return -ENOMEM; n = 0; @@ -2203,8 +2136,11 @@ static int exec_status_info_deserialize(DBusMessageIter *sub, ExecStatusInfo *i) dbus_message_iter_get_basic(&sub3, &s); dbus_message_iter_next(&sub3); - if (!(i->argv[n++] = strdup(s))) + i->argv[n] = strdup(s); + if (!i->argv[n]) return -ENOMEM; + + n++; } if (!dbus_message_iter_next(&sub2) || @@ -2403,7 +2339,7 @@ static void print_status_info(UnitStatusInfo *i) { printf("\tAccepted: %u; Connected: %u\n", i->n_accepted, i->n_connections); LIST_FOREACH(exec, p, i->exec) { - char *t; + _cleanup_free_ char *t = NULL; bool good; /* Only show exited processes here */ @@ -2412,7 +2348,6 @@ static void print_status_info(UnitStatusInfo *i) { t = strv_join(p->argv, " "); printf("\t Process: %u %s=%s ", p->pid, p->name, strna(t)); - free(t); good = is_clean_exit_lsb(p->code, p->status, NULL); if (!good) { @@ -2454,12 +2389,10 @@ static void print_status_info(UnitStatusInfo *i) { printf("Main PID: %u", (unsigned) i->main_pid); if (i->running) { - char *t = NULL; + _cleanup_free_ char *t = NULL; get_process_comm(i->main_pid, &t); - if (t) { + if (t) printf(" (%s)", t); - free(t); - } } else if (i->exit_code > 0) { printf(" (code=%s, ", sigchld_code_to_string(i->exit_code)); @@ -2482,15 +2415,13 @@ static void print_status_info(UnitStatusInfo *i) { printf(";"); if (i->control_pid > 0) { - char *t = NULL; + _cleanup_free_ char *t = NULL; printf(" Control: %u", (unsigned) i->control_pid); get_process_comm(i->control_pid, &t); - if (t) { + if (t) printf(" (%s)", t); - free(t); - } } printf("\n"); @@ -3015,7 +2946,7 @@ static int print_property(const char *name, DBusMessageIter *iter) { } static int show_one(const char *verb, DBusConnection *bus, const char *path, bool show_properties, bool *new_line) { - DBusMessage *reply = NULL; + _cleanup_free_ DBusMessage *reply = NULL; const char *interface = ""; int r; DBusMessageIter iter, sub, sub2, sub3; @@ -3027,7 +2958,7 @@ static int show_one(const char *verb, DBusConnection *bus, const char *path, boo zero(info); - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", path, @@ -3037,15 +2968,14 @@ static int show_one(const char *verb, DBusConnection *bus, const char *path, boo NULL, DBUS_TYPE_STRING, &interface, DBUS_TYPE_INVALID); - if (r) - goto finish; + if (r < 0) + return r; if (!dbus_message_iter_init(reply, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_DICT_ENTRY) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&iter, &sub); @@ -3058,24 +2988,13 @@ static int show_one(const char *verb, DBusConnection *bus, const char *path, boo while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { const char *name; - if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_DICT_ENTRY) { - log_error("Failed to parse reply."); - r = -EIO; - goto finish; - } - + assert(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_DICT_ENTRY); dbus_message_iter_recurse(&sub, &sub2); - if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &name, true) < 0) { + if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &name, true) < 0 || + dbus_message_iter_get_arg_type(&sub2) != DBUS_TYPE_VARIANT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; - } - - if (dbus_message_iter_get_arg_type(&sub2) != DBUS_TYPE_VARIANT) { - log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&sub2, &sub3); @@ -3084,11 +3003,9 @@ static int show_one(const char *verb, DBusConnection *bus, const char *path, boo r = print_property(name, &sub3); else r = status_property(name, &sub3, &info); - if (r < 0) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_next(&sub); @@ -3116,22 +3033,18 @@ static int show_one(const char *verb, DBusConnection *bus, const char *path, boo exec_status_info_free(p); } -finish: - if (reply) - dbus_message_unref(reply); - return r; } static int show_one_by_pid(const char *verb, DBusConnection *bus, uint32_t pid, bool *new_line) { - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; const char *path = NULL; DBusError error; int r; dbus_error_init(&error); - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", @@ -3141,7 +3054,7 @@ static int show_one_by_pid(const char *verb, DBusConnection *bus, uint32_t pid, NULL, DBUS_TYPE_UINT32, &pid, DBUS_TYPE_INVALID); - if (r) + if (r < 0) goto finish; if (!dbus_message_get_args(reply, &error, @@ -3155,9 +3068,6 @@ static int show_one_by_pid(const char *verb, DBusConnection *bus, uint32_t pid, r = show_one(verb, bus, path, false, new_line); finish: - if (reply) - dbus_message_unref(reply); - dbus_error_free(&error); return r; @@ -3176,50 +3086,43 @@ static int show(DBusConnection *bus, char **args) { if (show_properties) pager_open_if_enabled(); - if (show_properties && strv_length(args) <= 1) { - /* If not argument is specified inspect the manager - * itself */ + /* If no argument is specified inspect the manager itself */ + if (show_properties && strv_length(args) <= 1) return show_one(args[0], bus, "/org/freedesktop/systemd1", show_properties, &new_line); - } STRV_FOREACH(name, args+1) { uint32_t id; if (safe_atou32(*name, &id) < 0) { - char *p, *n; + _cleanup_free_ char *p = NULL, *n = NULL; /* Interpret as unit name */ n = unit_name_mangle(*name); - p = unit_dbus_path_from_name(n ? n : *name); - free(n); + if (!n) + return log_oom(); + + p = unit_dbus_path_from_name(n); if (!p) return log_oom(); r = show_one(args[0], bus, p, show_properties, &new_line); - free(p); - if (r != 0) ret = r; } else if (show_properties) { + _cleanup_free_ char *p = NULL; /* Interpret as job id */ - - char *p; if (asprintf(&p, "/org/freedesktop/systemd1/job/%u", id) < 0) return log_oom(); r = show_one(args[0], bus, p, show_properties, &new_line); - free(p); - if (r != 0) ret = r; } else { - /* Interpret as PID */ - r = show_one_by_pid(args[0], bus, id, &new_line); if (r != 0) ret = r; @@ -3230,7 +3133,7 @@ static int show(DBusConnection *bus, char **args) { } static int dump(DBusConnection *bus, char **args) { - DBusMessage *reply = NULL; + _cleanup_free_ DBusMessage *reply = NULL; DBusError error; int r; const char *text; @@ -3239,7 +3142,7 @@ static int dump(DBusConnection *bus, char **args) { pager_open_if_enabled(); - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", @@ -3248,26 +3151,19 @@ static int dump(DBusConnection *bus, char **args) { &reply, NULL, DBUS_TYPE_INVALID); - if (r) - goto finish; + if (r < 0) + return r; if (!dbus_message_get_args(reply, &error, DBUS_TYPE_STRING, &text, DBUS_TYPE_INVALID)) { log_error("Failed to parse reply: %s", bus_error_message(&error)); - r = -EIO; - goto finish; + dbus_error_free(&error); + return -EIO; } fputs(text, stdout); - -finish: - if (reply) - dbus_message_unref(reply); - - dbus_error_free(&error); - - return r; + return 0; } static int snapshot(DBusConnection *bus, char **args) { @@ -3433,14 +3329,19 @@ static int daemon_reload(DBusConnection *bus, char **args) { static int reset_failed(DBusConnection *bus, char **args) { int r = 0; - char **name, *n; + char **name; if (strv_length(args) <= 1) return daemon_reload(bus, args); STRV_FOREACH(name, args+1) { + _cleanup_free_ char *n; + n = unit_name_mangle(*name); - r = bus_method_call_with_reply ( + if (!n) + return log_oom(); + + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", @@ -3448,19 +3349,17 @@ static int reset_failed(DBusConnection *bus, char **args) { "ResetFailedUnit", NULL, NULL, - DBUS_TYPE_STRING, n ? &n : name, + DBUS_TYPE_STRING, &n, DBUS_TYPE_INVALID); - free(n); - if (r) - goto finish; + if (r < 0) + return r; } -finish: - return r; + return 0; } static int show_enviroment(DBusConnection *bus, char **args) { - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; DBusMessageIter iter, sub, sub2; int r; const char @@ -3469,7 +3368,7 @@ static int show_enviroment(DBusConnection *bus, char **args) { pager_open_if_enabled(); - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", @@ -3480,14 +3379,13 @@ static int show_enviroment(DBusConnection *bus, char **args) { DBUS_TYPE_STRING, &interface, DBUS_TYPE_STRING, &property, DBUS_TYPE_INVALID); - if (r) - goto finish; + if (r < 0) + return r; if (!dbus_message_iter_init(reply, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&iter, &sub); @@ -3495,8 +3393,7 @@ static int show_enviroment(DBusConnection *bus, char **args) { if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_ARRAY || dbus_message_iter_get_element_type(&sub) != DBUS_TYPE_STRING) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&sub, &sub2); @@ -3506,23 +3403,16 @@ static int show_enviroment(DBusConnection *bus, char **args) { if (dbus_message_iter_get_arg_type(&sub2) != DBUS_TYPE_STRING) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_get_basic(&sub2, &text); - printf("%s\n", text); + puts(text); dbus_message_iter_next(&sub2); } - r = 0; - -finish: - if (reply) - dbus_message_unref(reply); - - return r; + return 0; } static int switch_root(DBusConnection *bus, char **args) { @@ -3547,15 +3437,13 @@ static int switch_root(DBusConnection *bus, char **args) { if (!init) init = strdup(""); - - if (!init) - return log_oom(); - } + if (!init) + return log_oom(); log_debug("switching root - root: %s; init: %s", root, init); - return bus_method_call_with_reply ( + return bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", @@ -3601,15 +3489,11 @@ static int set_environment(DBusConnection *bus, char **args) { reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error); if (!reply) { log_error("Failed to issue method call: %s", bus_error_message(&error)); - r = -EIO; - goto finish; + dbus_error_free(&error); + return -EIO; } - r = 0; - -finish: - dbus_error_free(&error); - return r; + return 0; } static int enable_sysv_units(char **args) { -- cgit v1.2.1 From 1dcf60656cc68cf0182703d77e31f24f05b0c8cc Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 14 Jan 2013 02:11:57 +0100 Subject: systemctl: be smarter when mangling snapshot names For "systemctl snapshot" it makes no sense to complete an incomplete name with ".service" as we previously did, use ".snapshot" instead. Also, don't bother with mount units or suchlike, we know that this must be a snapshot and hence is the only sane way for completion. --- src/shared/unit-name.c | 30 ++++++++++++++++++++++++++++++ src/shared/unit-name.h | 1 + src/systemctl/systemctl.c | 46 +++++++++++++++++++++++----------------------- 3 files changed, 54 insertions(+), 23 deletions(-) diff --git a/src/shared/unit-name.c b/src/shared/unit-name.c index 88ca0b8f2c..06bbfacb00 100644 --- a/src/shared/unit-name.c +++ b/src/shared/unit-name.c @@ -506,6 +506,36 @@ char *unit_name_mangle(const char *name) { return r; } +char *snapshot_name_mangle(const char *name) { + char *r, *t; + const char *f; + + assert(name); + + /* Similar to unit_name_mangle(), but is called when we know + * that this is about snapshot units. */ + + r = new(char, strlen(name) * 4 + 1 + sizeof(".snapshot")-1); + if (!r) + return NULL; + + for (f = name, t = r; *f; f++) { + if (*f == '/') + *(t++) = '-'; + else if (!strchr(VALID_CHARS, *f)) + t = do_escape_char(*f, t); + else + *(t++) = *f; + } + + if (!endswith(name, ".snapshot")) + strcpy(t, ".snapshot"); + else + *t = 0; + + return r; +} + UnitType unit_name_to_type(const char *n) { const char *e; diff --git a/src/shared/unit-name.h b/src/shared/unit-name.h index d7528a3ac7..9150dd0b3f 100644 --- a/src/shared/unit-name.h +++ b/src/shared/unit-name.h @@ -94,3 +94,4 @@ char *unit_name_to_path(const char *name); char *unit_dbus_path_from_name(const char *name); char *unit_name_mangle(const char *name); +char *snapshot_name_mangle(const char *name); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index b22010dcac..76c67f20c8 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -3173,17 +3173,19 @@ static int snapshot(DBusConnection *bus, char **args) { dbus_bool_t cleanup = FALSE; DBusMessageIter iter, sub; const char - *name = "", *path, *id, + *path, *id, *interface = "org.freedesktop.systemd1.Unit", *property = "Id"; _cleanup_free_ char *n = NULL; dbus_error_init(&error); - if (strv_length(args) > 1) { - name = args[1]; - n = unit_name_mangle(name); - } + if (strv_length(args) > 1) + n = snapshot_name_mangle(args[1]); + else + n = strdup(""); + if (!n) + return log_oom(); r = bus_method_call_with_reply ( bus, @@ -3193,18 +3195,18 @@ static int snapshot(DBusConnection *bus, char **args) { "CreateSnapshot", &reply, NULL, - DBUS_TYPE_STRING, n ? (const char**) &n : &name, + DBUS_TYPE_STRING, &n, DBUS_TYPE_BOOLEAN, &cleanup, DBUS_TYPE_INVALID); if (r < 0) - goto finish; + return r; if (!dbus_message_get_args(reply, &error, DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID)) { log_error("Failed to parse reply: %s", bus_error_message(&error)); - r = -EIO; - goto finish; + dbus_error_free(&error); + return -EIO; } dbus_message_unref(reply); @@ -3222,21 +3224,19 @@ static int snapshot(DBusConnection *bus, char **args) { DBUS_TYPE_STRING, &property, DBUS_TYPE_INVALID); if (r < 0) - goto finish; + return r; if (!dbus_message_iter_init(reply, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&iter, &sub); if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRING) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_get_basic(&sub, &id); @@ -3244,10 +3244,7 @@ static int snapshot(DBusConnection *bus, char **args) { if (!arg_quiet) puts(id); -finish: - dbus_error_free(&error); - - return r; + return 0; } static int delete_snapshot(DBusConnection *bus, char **args) { @@ -3259,7 +3256,10 @@ static int delete_snapshot(DBusConnection *bus, char **args) { _cleanup_free_ char *n = NULL; int r; - n = unit_name_mangle(*name); + n = snapshot_name_mangle(*name); + if (!n) + return log_oom(); + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", @@ -3268,7 +3268,7 @@ static int delete_snapshot(DBusConnection *bus, char **args) { "RemoveSnapshot", NULL, NULL, - DBUS_TYPE_STRING, n ? &n : name, + DBUS_TYPE_STRING, &n, DBUS_TYPE_INVALID); if (r < 0) return r; @@ -3302,7 +3302,7 @@ static int daemon_reload(DBusConnection *bus, char **args) { /* "daemon-reload" */ "Reload"; } - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", @@ -3320,10 +3320,10 @@ static int daemon_reload(DBusConnection *bus, char **args) { /* On reexecution, we expect a disconnect, not * a reply */ r = 0; - else if (r) + else if (r < 0) log_error("Failed to issue method call: %s", bus_error_message(&error)); - dbus_error_free(&error); + dbus_error_free(&error); return r; } -- cgit v1.2.1 From 7b4da18c1717f811bae67ea3d39290495857c03e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 14 Jan 2013 02:13:07 +0100 Subject: update TODO --- TODO | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index e89be556d9..dce2604129 100644 --- a/TODO +++ b/TODO @@ -21,11 +21,15 @@ Features: * add "loginctl unlock-sessions" as counterpart for "loginctl lock-sessions" +* extend cgroup attr dbus calls to optionally make changes persistent, and retrieve current kernel values + +* support high-level cgroup setting syntax in systemctl. Example: "systemctl set-cgroup-attr MemoryLimit 5K" + * add a man page "systemdall" that lists all of systemd's man pages, inspired by zsh's "zshall" page * print a nicer explanation if people use variable/specifier expansion in ExecStart= for the first word -* kernel cmdline switch to turn of predictable network interface names +* kernel cmdline switch to turn off predictable network interface names * mount: turn dependency information from /proc/self/mountinfo into dependency information between systemd units. -- cgit v1.2.1 From aca26b52200a4666c9f80a942150a90004130010 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 14 Jan 2013 02:13:26 +0100 Subject: systemctl: drop compat with really really old systemd versions --- src/systemctl/systemctl.c | 31 ++----------------------------- 1 file changed, 2 insertions(+), 29 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 76c67f20c8..0bae67eb8c 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1120,7 +1120,6 @@ static DBusHandlerResult wait_filter(DBusConnection *connection, DBusMessage *me } else if (dbus_message_is_signal(message, "org.freedesktop.systemd1.Manager", "JobRemoved")) { uint32_t id; const char *path, *result, *unit; - dbus_bool_t success = true; if (dbus_message_get_args(message, &error, DBUS_TYPE_UINT32, &id, @@ -1128,10 +1127,8 @@ static DBusHandlerResult wait_filter(DBusConnection *connection, DBusMessage *me DBUS_TYPE_STRING, &unit, DBUS_TYPE_STRING, &result, DBUS_TYPE_INVALID)) { - char *p; - p = set_remove(d->set, (char*) path); - free(p); + free(set_remove(d->set, (char*) path)); if (!isempty(result)) d->result = strdup(result); @@ -1148,40 +1145,16 @@ static DBusHandlerResult wait_filter(DBusConnection *connection, DBusMessage *me DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_STRING, &result, DBUS_TYPE_INVALID)) { - char *p; - /* Compatibility with older systemd versions < * 183 during upgrades. This should be dropped * one day. */ - p = set_remove(d->set, (char*) path); - free(p); + free(set_remove(d->set, (char*) path)); if (*result) d->result = strdup(result); goto finish; } - - dbus_error_free(&error); - if (dbus_message_get_args(message, &error, - DBUS_TYPE_UINT32, &id, - DBUS_TYPE_OBJECT_PATH, &path, - DBUS_TYPE_BOOLEAN, &success, - DBUS_TYPE_INVALID)) { - char *p; - - /* Compatibility with older systemd versions < - * 19 during upgrades. This should be dropped - * one day */ - - p = set_remove(d->set, (char*) path); - free(p); - - if (!success) - d->result = strdup("failed"); - - goto finish; - } #endif log_error("Failed to parse message: %s", bus_error_message(&error)); -- cgit v1.2.1 From 1ca04b87979b2add53ebb8a7fdf13c34fb6c2743 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 14 Jan 2013 21:40:38 +0100 Subject: logind: ignore non-tty/non-x11 session when checking if there are other sessions before shutting down https://bugzilla.redhat.com/show_bug.cgi?id=890827 --- src/login/logind-dbus.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 77a06f2ce4..d64debe51f 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -979,9 +979,12 @@ static int have_multiple_sessions( assert(m); - /* Check for other users' sessions. Greeter sessions do not count. */ + /* Check for other users' sessions. Greeter sessions do not + * count, and non-login sessions do not count either. */ HASHMAP_FOREACH(session, m->sessions, i) - if (session->class == SESSION_USER && session->user->uid != uid) + if (session->class == SESSION_USER && + (session->type == SESSION_TTY || session->type == SESSION_X11) && + session->user->uid != uid) return true; return false; -- cgit v1.2.1 From ec6d2611e4c48409613870ea3924f5e36ab1997a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 14 Jan 2013 23:30:20 +0100 Subject: update TODO --- TODO | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/TODO b/TODO index dce2604129..c3612fdc34 100644 --- a/TODO +++ b/TODO @@ -19,6 +19,11 @@ F18: Features: +* man: link up systemd.directives better, so that people actually know about it + +* fstab: add new mount option x-systemd-after=/foobar/waldo to allow manual dependencies to other mount points + https://bugzilla.redhat.com/show_bug.cgi?id=812826 + * add "loginctl unlock-sessions" as counterpart for "loginctl lock-sessions" * extend cgroup attr dbus calls to optionally make changes persistent, and retrieve current kernel values -- cgit v1.2.1 From 554d1298b81655a2610101a03172350ea2a48a77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Piotr=20Dr=C4=85g?= Date: Sat, 12 Jan 2013 19:34:42 +0100 Subject: l10n: Updated Polish translation --- po/pl.po | 392 +++++++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 304 insertions(+), 88 deletions(-) diff --git a/po/pl.po b/po/pl.po index 2581d01fcc..6a95d2fd74 100644 --- a/po/pl.po +++ b/po/pl.po @@ -1,13 +1,13 @@ # translation of pl.po to Polish -# Piotr Drąg , 2011. +# Piotr Drąg , 2011, 2013. # Zbigniew Jędrzejewski-Szmek , 2011. # msgid "" msgstr "" "Project-Id-Version: systemd\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-10-14 16:18+0200\n" -"PO-Revision-Date: 2011-10-14 16:20+0200\n" +"POT-Creation-Date: 2013-01-12 19:29+0100\n" +"PO-Revision-Date: 2013-01-12 19:30+0100\n" "Last-Translator: Piotr Drąg \n" "Language-Team: Polish \n" "Language: pl\n" @@ -15,16 +15,19 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: ../src/org.freedesktop.hostname1.policy.in.h:1 -msgid "Authentication is required to set local machine information." -msgstr "" -"Wymagane jest uwierzytelnienie, aby ustawić informacje o lokalnym komputerze." +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:1 +msgid "Set host name" +msgstr "Ustawienie nazwy komputera" -#: ../src/org.freedesktop.hostname1.policy.in.h:2 +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:2 msgid "Authentication is required to set the local host name." msgstr "Wymagane jest uwierzytelnienie, aby ustawić nazwę lokalnego komputera." -#: ../src/org.freedesktop.hostname1.policy.in.h:3 +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:3 +msgid "Set static host name" +msgstr "Ustawienie statycznej nazwy komputera" + +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:4 msgid "" "Authentication is required to set the statically configured local host name, " "as well as the pretty host name." @@ -32,144 +35,357 @@ msgstr "" "Wymagane jest uwierzytelnienie, aby ustawić statycznie skonfigurowaną nazwę " "lokalnego komputera, a także jego ładną nazwę." -#: ../src/org.freedesktop.hostname1.policy.in.h:4 -msgid "Set host name" -msgstr "Ustawienie nazwy komputera" - -#: ../src/org.freedesktop.hostname1.policy.in.h:5 +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:5 msgid "Set machine information" msgstr "Ustawienie informacji o komputerze" -#: ../src/org.freedesktop.hostname1.policy.in.h:6 -msgid "Set static host name" -msgstr "Ustawienie statycznej nazwy komputera" +#: ../src/hostname/org.freedesktop.hostname1.policy.in.h:6 +msgid "Authentication is required to set local machine information." +msgstr "" +"Wymagane jest uwierzytelnienie, aby ustawić informacje o lokalnym komputerze." -#: ../src/org.freedesktop.locale1.policy.in.h:1 -msgid "Authentication is required to set the system keyboard settings." -msgstr "Wymagane jest uwierzytelnienie, aby ustawić klawiaturę systemu." +#: ../src/locale/org.freedesktop.locale1.policy.in.h:1 +msgid "Set system locale" +msgstr "Ustawienie lokalizacji systemu" -#: ../src/org.freedesktop.locale1.policy.in.h:2 +#: ../src/locale/org.freedesktop.locale1.policy.in.h:2 msgid "Authentication is required to set the system locale." msgstr "Wymagane jest uwierzytelnienie, aby ustawić lokalizację systemu." -#: ../src/org.freedesktop.locale1.policy.in.h:3 +#: ../src/locale/org.freedesktop.locale1.policy.in.h:3 msgid "Set system keyboard settings" msgstr "Ustawienie klawiatury systemu" -#: ../src/org.freedesktop.locale1.policy.in.h:4 -msgid "Set system locale" -msgstr "Ustawienie lokalizacji systemu" +#: ../src/locale/org.freedesktop.locale1.policy.in.h:4 +msgid "Authentication is required to set the system keyboard settings." +msgstr "Wymagane jest uwierzytelnienie, aby ustawić klawiaturę systemu." -#: ../src/org.freedesktop.login1.policy.in.h:1 -msgid "Allow attaching devices to seats" -msgstr "Zezwolenie na podłączanie urządzeń do stanowisk" +#: ../src/login/org.freedesktop.login1.policy.in.h:1 +msgid "Allow applications to inhibit system shutdown" +msgstr "Zezwolenie programom na wstrzymywanie wyłączenia systemu" -#: ../src/org.freedesktop.login1.policy.in.h:2 -msgid "Allow non-logged-in users to run programs" -msgstr "Zezwolenie niezalogowanym użytkownikom na uruchamianie programów" +#: ../src/login/org.freedesktop.login1.policy.in.h:2 +msgid "" +"Authentication is required to allow an application to inhibit system " +"shutdown." +msgstr "" +"Wymagane jest uwierzytelnienie, aby zezwolić programowi na wstrzymanie " +"wyłączenia systemu." -#: ../src/org.freedesktop.login1.policy.in.h:3 +#: ../src/login/org.freedesktop.login1.policy.in.h:3 +msgid "Allow applications to delay system shutdown" +msgstr "Zezwolenie programom na opóźnienie wyłączenia systemu" + +#: ../src/login/org.freedesktop.login1.policy.in.h:4 msgid "" -"Authentication is required to allow a non-logged-in user to run programs" +"Authentication is required to allow an application to delay system shutdown." msgstr "" -"Wymagane jest uwierzytelnienie, aby ustawić zezwolić niezalogowanym " -"użytkownikom na uruchamianie programów" +"Wymagane jest uwierzytelnienie, aby zezwolić programowi na opóźnienie " +"wyłączenia systemu." + +#: ../src/login/org.freedesktop.login1.policy.in.h:5 +msgid "Allow applications to inhibit system sleep" +msgstr "Zezwolenie programom na wstrzymanie uśpienia systemu" -#: ../src/org.freedesktop.login1.policy.in.h:4 -msgid "Authentication is required to allow attaching a device to a seat" +#: ../src/login/org.freedesktop.login1.policy.in.h:6 +msgid "" +"Authentication is required to allow an application to inhibit system sleep." msgstr "" -"Wymagane jest uwierzytelnienie, aby zezwolić na podłączenie urządzenia do " -"stanowiska" +"Wymagane jest uwierzytelnienie, aby zezwolić programowi na wstrzymanie " +"uśpienia systemu." -#: ../src/org.freedesktop.login1.policy.in.h:5 -msgid "Authentication is required to allow powering off the system" -msgstr "Wymagane jest uwierzytelnienie, aby zezwolić na wyłączanie systemu" +#: ../src/login/org.freedesktop.login1.policy.in.h:7 +msgid "Allow applications to delay system sleep" +msgstr "Zezwolenie programom na opóźnienie uśpienia systemu" -#: ../src/org.freedesktop.login1.policy.in.h:6 +#: ../src/login/org.freedesktop.login1.policy.in.h:8 msgid "" -"Authentication is required to allow powering off the system while other " -"users are logged in" +"Authentication is required to allow an application to delay system sleep." msgstr "" -"Wymagane jest uwierzytelnienie, aby zezwolić na wyłączanie systemu, kiedy są " -"zalogowani inni użytkownicy" +"Wymagane jest uwierzytelnienie, aby zezwolić programowi na opóźnienie " +"uśpienia systemu." + +#: ../src/login/org.freedesktop.login1.policy.in.h:9 +msgid "Allow applications to inhibit automatic system suspend" +msgstr "Zezwolenie programom na wstrzymanie automatycznego uśpienia systemu" -#: ../src/org.freedesktop.login1.policy.in.h:7 -msgid "Authentication is required to allow rebooting the system" +#: ../src/login/org.freedesktop.login1.policy.in.h:10 +msgid "" +"Authentication is required to allow an application to inhibit automatic " +"system suspend." +msgstr "" +"Wymagane jest uwierzytelnienie, aby zezwolić programowi na wstrzymanie " +"automatycznego uśpienia systemu." + +#: ../src/login/org.freedesktop.login1.policy.in.h:11 +msgid "Allow applications to inhibit system handling of the power key" msgstr "" -"Wymagane jest uwierzytelnienie, aby zezwolić na ponowne uruchamianie systemu" +"Zezwolenie programom na wstrzymanie obsługi klawisza zasilania przez system" -#: ../src/org.freedesktop.login1.policy.in.h:8 +#: ../src/login/org.freedesktop.login1.policy.in.h:12 msgid "" -"Authentication is required to allow rebooting the system while other users " -"are logged in" +"Authentication is required to allow an application to inhibit system " +"handling of the power key." +msgstr "" +"Wymagane jest uwierzytelnienie, aby zezwolić programowi na wstrzymanie " +"obsługi klawisza zasilania przez system." + +#: ../src/login/org.freedesktop.login1.policy.in.h:13 +msgid "Allow applications to inhibit system handling of the suspend key" msgstr "" -"Wymagane jest uwierzytelnienie, aby zezwolić na ponowne uruchamianie " -"systemu, kiedy są zalogowani inni użytkownicy" +"Zezwolenie programom na wstrzymanie obsługi klawisza uśpienia przez system" -#: ../src/org.freedesktop.login1.policy.in.h:9 +#: ../src/login/org.freedesktop.login1.policy.in.h:14 msgid "" -"Authentication is required to allow resetting how devices are attached to " -"seats" +"Authentication is required to allow an application to inhibit system " +"handling of the suspend key." msgstr "" -"Wymagane jest uwierzytelnienie, aby zezwolić na ponowne ustawianie sposobu " -"podłączenia urządzeń do stanowisk" +"Wymagane jest uwierzytelnienie, aby zezwolić programowi na wstrzymanie " +"obsługi klawisza uśpienia przez system." -#: ../src/org.freedesktop.login1.policy.in.h:10 +#: ../src/login/org.freedesktop.login1.policy.in.h:15 +msgid "Allow applications to inhibit system handling of the hibernate key" +msgstr "" +"Zezwolenie programom na wstrzymanie obsługi klawisza hibernacji przez system" + +#: ../src/login/org.freedesktop.login1.policy.in.h:16 +msgid "" +"Authentication is required to allow an application to inhibit system " +"handling of the hibernate key." +msgstr "" +"Wymagane jest uwierzytelnienie, aby zezwolić programowi na wstrzymanie " +"obsługi klawisza hibernacji przez system." + +#: ../src/login/org.freedesktop.login1.policy.in.h:17 +msgid "Allow applications to inhibit system handling of the lid switch" +msgstr "" +"Zezwolenie programom na wstrzymanie obsługi przełącznika pokrywy przez system" + +#: ../src/login/org.freedesktop.login1.policy.in.h:18 +msgid "" +"Authentication is required to allow an application to inhibit system " +"handling of the lid switch." +msgstr "" +"Wymagane jest uwierzytelnienie, aby zezwolić programowi na wstrzymanie " +"obsługi przełącznika pokrywy przez system." + +#: ../src/login/org.freedesktop.login1.policy.in.h:19 +msgid "Allow non-logged-in users to run programs" +msgstr "Zezwolenie niezalogowanym użytkownikom na uruchamianie programów" + +#: ../src/login/org.freedesktop.login1.policy.in.h:20 +msgid "" +"Authentication is required to allow a non-logged-in user to run programs." +msgstr "" +"Wymagane jest uwierzytelnienie, aby zezwolić niezalogowanemu użytkownikowi " +"na uruchamianie programów." + +#: ../src/login/org.freedesktop.login1.policy.in.h:21 +msgid "Allow attaching devices to seats" +msgstr "Zezwolenie na podłączanie urządzeń do stanowisk" + +#: ../src/login/org.freedesktop.login1.policy.in.h:22 +msgid "Authentication is required for attaching a device to a seat." +msgstr "" +"Wymagane jest uwierzytelnienie, aby podłączyć urządzenie do stanowiska." + +#: ../src/login/org.freedesktop.login1.policy.in.h:23 msgid "Flush device to seat attachments" msgstr "Usunięcie podłączenia urządzeń do stanowisk" -#: ../src/org.freedesktop.login1.policy.in.h:11 +#: ../src/login/org.freedesktop.login1.policy.in.h:24 +msgid "" +"Authentication is required for resetting how devices are attached to seats." +msgstr "" +"Wymagane jest uwierzytelnienie, aby ponownie ustawić sposób podłączenia " +"urządzeń do stanowisk." + +#: ../src/login/org.freedesktop.login1.policy.in.h:25 msgid "Power off the system" msgstr "Wyłączenie systemu" -#: ../src/org.freedesktop.login1.policy.in.h:12 -msgid "Power off the system when other users are logged in" +#: ../src/login/org.freedesktop.login1.policy.in.h:26 +msgid "Authentication is required for powering off the system." +msgstr "Wymagane jest uwierzytelnienie, aby wyłączyć system." + +#: ../src/login/org.freedesktop.login1.policy.in.h:27 +msgid "Power off the system while other users are logged in" msgstr "Wyłączenie systemu, kiedy są zalogowani inni użytkownicy" -#: ../src/org.freedesktop.login1.policy.in.h:13 +#: ../src/login/org.freedesktop.login1.policy.in.h:28 +msgid "" +"Authentication is required for powering off the system while other users are " +"logged in." +msgstr "" +"Wymagane jest uwierzytelnienie, aby wyłączyć system, kiedy są zalogowani " +"inni użytkownicy." + +#: ../src/login/org.freedesktop.login1.policy.in.h:29 +msgid "Power off the system while an application asked to inhibit it" +msgstr "Wyłączenie systemu, kiedy program zażądał jego wstrzymania" + +#: ../src/login/org.freedesktop.login1.policy.in.h:30 +msgid "" +"Authentication is required for powering off the system while an application " +"asked to inhibit it." +msgstr "" +"Wymagane jest uwierzytelnienie, aby wyłączyć system, kiedy program zażądał " +"jego wstrzymania." + +#: ../src/login/org.freedesktop.login1.policy.in.h:31 msgid "Reboot the system" msgstr "Ponowne uruchomienie systemu" -#: ../src/org.freedesktop.login1.policy.in.h:14 -msgid "Reboot the system when other users are logged in" +#: ../src/login/org.freedesktop.login1.policy.in.h:32 +msgid "Authentication is required for rebooting the system." +msgstr "Wymagane jest uwierzytelnienie, aby ponownie uruchomić system." + +#: ../src/login/org.freedesktop.login1.policy.in.h:33 +msgid "Reboot the system while other users are logged in" msgstr "Ponowne uruchomienie systemu, kiedy są zalogowani inni użytkownicy" -#: ../src/org.freedesktop.timedate1.policy.in.h:1 +#: ../src/login/org.freedesktop.login1.policy.in.h:34 msgid "" -"Authentication is required to control whether network time synchronization " -"shall be enabled." +"Authentication is required for rebooting the system while other users are " +"logged in." msgstr "" -"Wymagane jest uwierzytelnienie, aby kontrolować, czy włączyć synchronizację " -"czasu przez sieć." +"Wymagane jest uwierzytelnienie, aby ponownie uruchomić system, kiedy są " +"zalogowani inni użytkownicy." -#: ../src/org.freedesktop.timedate1.policy.in.h:2 +#: ../src/login/org.freedesktop.login1.policy.in.h:35 +msgid "Reboot the system while an application asked to inhibit it" +msgstr "" +"Ponowne uruchomienie systemu, kiedy program poprosił o jego wstrzymanie" + +#: ../src/login/org.freedesktop.login1.policy.in.h:36 msgid "" -"Authentication is required to control whether the RTC stores the local or " -"UTC time." +"Authentication is required for rebooting the system while an application " +"asked to inhibit it." msgstr "" -"Wymagane jest uwierzytelnienie, aby kontrolować, czy RTC przechowuje czas " -"lokalny lub czas UTC." +"Wymagane jest uwierzytelnienie, aby ponownie uruchomić system, kiedy program " +"zażądał jego wstrzymania." + +#: ../src/login/org.freedesktop.login1.policy.in.h:37 +msgid "Suspend the system" +msgstr "Uśpienie systemu" + +#: ../src/login/org.freedesktop.login1.policy.in.h:38 +msgid "Authentication is required for suspending the system." +msgstr "Wymagane jest uwierzytelnienie, aby uśpić system." + +#: ../src/login/org.freedesktop.login1.policy.in.h:39 +msgid "Suspend the system while other users are logged in" +msgstr "Uśpienie systemu, kiedy są zalogowani inni użytkownicy" + +#: ../src/login/org.freedesktop.login1.policy.in.h:40 +msgid "" +"Authentication is required for suspending the system while other users are " +"logged in." +msgstr "" +"Wymagane jest uwierzytelnienie, aby uśpić system, kiedy są zalogowani inni " +"użytkownicy." + +#: ../src/login/org.freedesktop.login1.policy.in.h:41 +msgid "Suspend the system while an application asked to inhibit it" +msgstr "Uśpienie systemu, kiedy program poprosił o jego wstrzymanie" + +#: ../src/login/org.freedesktop.login1.policy.in.h:42 +msgid "" +"Authentication is required for suspending the system while an application " +"asked to inhibit it." +msgstr "" +"Wymagane jest uwierzytelnienie, aby uśpić system, kiedy program zażądał jego " +"wstrzymania." + +#: ../src/login/org.freedesktop.login1.policy.in.h:43 +msgid "Hibernate the system" +msgstr "Hibernacja systemu" + +#: ../src/login/org.freedesktop.login1.policy.in.h:44 +msgid "Authentication is required for hibernating the system." +msgstr "Wymagane jest uwierzytelnienie, aby zahibernować system." + +#: ../src/login/org.freedesktop.login1.policy.in.h:45 +msgid "Hibernate the system while other users are logged in" +msgstr "Hibernacja systemu, kiedy są zalogowani inni użytkownicy" + +#: ../src/login/org.freedesktop.login1.policy.in.h:46 +msgid "" +"Authentication is required for hibernating the system while other users are " +"logged in." +msgstr "" +"Wymagane jest uwierzytelnienie, aby zahibernować system, kiedy są zalogowani " +"inni użytkownicy." + +#: ../src/login/org.freedesktop.login1.policy.in.h:47 +msgid "Hibernate the system while an application asked to inhibit it" +msgstr "Hibernacja systemu, kiedy program zażądał jej wstrzymania" + +#: ../src/login/org.freedesktop.login1.policy.in.h:48 +msgid "" +"Authentication is required for hibernating the system while an application " +"asked to inhibit it." +msgstr "" +"Wymagane jest uwierzytelnienie, aby zahibernować system, kiedy program " +"zażądał jej wstrzymania." + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:1 +msgid "Set system time" +msgstr "Ustawienie czasu systemu" -#: ../src/org.freedesktop.timedate1.policy.in.h:3 +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:2 msgid "Authentication is required to set the system time." msgstr "Wymagane jest uwierzytelnienie, aby ustawić czas systemu." -#: ../src/org.freedesktop.timedate1.policy.in.h:4 +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:3 +msgid "Set system timezone" +msgstr "Ustawienie strefy czasowej systemu" + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:4 msgid "Authentication is required to set the system timezone." msgstr "Wymagane jest uwierzytelnienie, aby ustawić strefę czasową systemu." -#: ../src/org.freedesktop.timedate1.policy.in.h:5 +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:5 msgid "Set RTC to local timezone or UTC" msgstr "Ustawienie RTC na lokalną strefę czasową lub strefę UTC" -#: ../src/org.freedesktop.timedate1.policy.in.h:6 -msgid "Set system time" -msgstr "Ustawienie czasu systemu" - -#: ../src/org.freedesktop.timedate1.policy.in.h:7 -msgid "Set system timezone" -msgstr "Ustawienie strefy czasowej systemu" +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:6 +msgid "" +"Authentication is required to control whether the RTC stores the local or " +"UTC time." +msgstr "" +"Wymagane jest uwierzytelnienie, aby kontrolować, czy RTC przechowuje czas " +"lokalny lub czas UTC." -#: ../src/org.freedesktop.timedate1.policy.in.h:8 +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:7 msgid "Turn network time synchronization on or off" msgstr "Włączenie lub wyłączenie synchronizacji czasu przez sieć" + +#: ../src/timedate/org.freedesktop.timedate1.policy.in.h:8 +msgid "" +"Authentication is required to control whether network time synchronization " +"shall be enabled." +msgstr "" +"Wymagane jest uwierzytelnienie, aby kontrolować, czy włączyć synchronizację " +"czasu przez sieć." + +#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:1 +msgid "Send passphrase back to system" +msgstr "Wysłanie hasła z powrotem do systemu" + +#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:2 +msgid "" +"Authentication is required to send the entered passphrase back to the system." +msgstr "" +"Wymagane jest uwierzytelnienie, aby wysłać podane hasło z powrotem do " +"systemu." + +#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:3 +msgid "Privileged system and service manager access" +msgstr "Uprawniony dostęp do menedżera systemu i usług" + +#: ../src/core/org.freedesktop.systemd1.policy.in.in.h:4 +msgid "Authentication is required to access the system and service manager." +msgstr "" +"Wymagane jest uwierzytelnienie, aby uzyskać dostęp do menedżera systemu i " +"usług." -- cgit v1.2.1 From dd04aac97f9e4739152e77d9f52bb0d0da1375d6 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 15 Jan 2013 02:25:56 +0100 Subject: vconsole: upload font to /dev/tty1 and copy it to all allocated VTs --- src/vconsole/vconsole-setup.c | 74 +++++++++++++++++++++++++++++++++++-------- 1 file changed, 60 insertions(+), 14 deletions(-) diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c index b9d8681a85..d8cdb7c609 100644 --- a/src/vconsole/vconsole-setup.c +++ b/src/vconsole/vconsole-setup.c @@ -33,6 +33,7 @@ #include #include #include +#include #include "util.h" #include "log.h" @@ -84,7 +85,7 @@ static int enable_utf8(int fd) { return r; } -static int load_keymap(const char *vc, const char *map, const char *map_toggle, bool utf8, pid_t *_pid) { +static int keymap_load(const char *vc, const char *map, const char *map_toggle, bool utf8, pid_t *_pid) { const char *args[8]; int i = 0; pid_t pid; @@ -119,7 +120,7 @@ static int load_keymap(const char *vc, const char *map, const char *map_toggle, return 0; } -static int load_font(const char *vc, const char *font, const char *map, const char *unimap, pid_t *_pid) { +static int font_load(const char *vc, const char *font, const char *map, const char *unimap, pid_t *_pid) { const char *args[9]; int i = 0; pid_t pid; @@ -157,6 +158,50 @@ static int load_font(const char *vc, const char *font, const char *map, const ch return 0; } +static void font_copy_to_all_vts(int fd, int from_vt) { + struct vt_stat vts; + unsigned short bits; + int i; + int r; + + /* get 16 bit mask of used VT numbers */ + zero(vts); + r = ioctl(fd, VT_GETSTATE, &vts); + if (r < 0) + return; + + bits = vts.v_state; + for (i = 1; i <= 16; i++) { + char vtname[16]; + int vtfd; + struct console_font_op cfo; + bool used; + + /* skip unused VTs */ + used = bits & 1; + bits >>= 1; + if (!used) + continue; + + if (i == from_vt) + continue; + + snprintf(vtname , sizeof(vtname), "/dev/tty%i", i); + vtfd = open_terminal(vtname, O_RDWR|O_CLOEXEC); + if (vtfd < 0) + continue; + + /* copy font from from_vt to this VT */ + zero(cfo); + cfo.op = KD_FONT_OP_COPY; + /* the index numbers seem to start at 0 for tty1 */ + cfo.height = from_vt - 1; + ioctl(vtfd, KDFONTOP, &cfo); + + close_nointr_nofail(vtfd); + } +} + int main(int argc, char **argv) { const char *vc; char *vc_keymap = NULL; @@ -166,8 +211,9 @@ int main(int argc, char **argv) { char *vc_font_unimap = NULL; int fd = -1; bool utf8; - int r = EXIT_FAILURE; pid_t font_pid = 0, keymap_pid = 0; + int font_copy_from_vt = 0; + int r = EXIT_FAILURE; log_set_target(LOG_TARGET_AUTO); log_parse_environment(); @@ -177,8 +223,10 @@ int main(int argc, char **argv) { if (argv[1]) vc = argv[1]; - else - vc = "/dev/tty0"; + else { + vc = "/dev/tty1"; + font_copy_from_vt = 1; + } fd = open_terminal(vc, O_RDWR|O_CLOEXEC); if (fd < 0) { @@ -223,27 +271,25 @@ int main(int argc, char **argv) { log_warning("Failed to read /etc/vconsole.conf: %s", strerror(-r)); } - if (r <= 0) { - } - - r = EXIT_FAILURE; - if (utf8) enable_utf8(fd); else disable_utf8(fd); - - if (load_keymap(vc, vc_keymap, vc_keymap_toggle, utf8, &keymap_pid) >= 0 && - load_font(vc, vc_font, vc_font_map, vc_font_unimap, &font_pid) >= 0) + r = EXIT_FAILURE; + if (keymap_load(vc, vc_keymap, vc_keymap_toggle, utf8, &keymap_pid) >= 0 && + font_load(vc, vc_font, vc_font_map, vc_font_unimap, &font_pid) >= 0) r = EXIT_SUCCESS; finish: if (keymap_pid > 0) wait_for_terminate_and_warn(KBD_LOADKEYS, keymap_pid); - if (font_pid > 0) + if (font_pid > 0) { wait_for_terminate_and_warn(KBD_SETFONT, font_pid); + if (font_copy_from_vt > 0) + font_copy_to_all_vts(fd, font_copy_from_vt); + } free(vc_keymap); free(vc_font); -- cgit v1.2.1 From c84f5e4a825f17163ead0f60308d548b415334a5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 15 Jan 2013 03:00:33 +0100 Subject: login: introduce sd_session_get_tty() --- Makefile.am | 2 ++ man/sd_session_is_active.xml | 29 +++++++++++++++++++++++------ src/login/libsystemd-login.sym | 5 +++++ src/login/sd-login.c | 4 ++++ src/systemd/sd-login.h | 3 +++ 5 files changed, 37 insertions(+), 6 deletions(-) diff --git a/Makefile.am b/Makefile.am index 33188294a9..e10e421d43 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3690,6 +3690,7 @@ MANPAGES_ALIAS += \ man/sd_session_get_type.3 \ man/sd_session_get_class.3 \ man/sd_session_get_display.3 \ + man/sd_session_get_tty.3 \ man/sd_pid_get_owner_uid.3 \ man/sd_pid_get_unit.3 \ man/sd_uid_is_on_seat.3 \ @@ -3714,6 +3715,7 @@ man/sd_session_get_state.3: man/sd_session_is_active.3 man/sd_session_get_type.3: man/sd_session_is_active.3 man/sd_session_get_class.3: man/sd_session_is_active.3 man/sd_session_get_display.3: man/sd_session_is_active.3 +man/sd_session_get_tty.3: man/sd_session_is_active.3 man/sd_pid_get_owner_uid.3: man/sd_pid_get_session.3 man/sd_pid_get_unit.3: man/sd_pid_get_session.3 man/sd_uid_is_on_seat.3: man/sd_uid_get_state.3 diff --git a/man/sd_session_is_active.xml b/man/sd_session_is_active.xml index a9107cb95f..ab48b9efc2 100644 --- a/man/sd_session_is_active.xml +++ b/man/sd_session_is_active.xml @@ -51,6 +51,7 @@ sd_session_get_type sd_session_get_class sd_session_get_display + sd_session_get_tty Determine state of a specific session @@ -104,6 +105,12 @@ const char* session char** display + + + int sd_session_get_tty + const char* session + char** tty + @@ -186,6 +193,14 @@ free3 call after use. + sd_session_get_tty() + may be used to determine the TTY device of the + session identified by the specified session + identifier. The returned string is one of needs to be + freed with the libc + free3 + call after use. + If the session parameter of any of these functions is passed as NULL the operation is executed for the session the calling process is a @@ -203,8 +218,9 @@ sd_session_get_seat(), sd_session_get_service(), sd_session_get_type(), - sd_session_get_class() and - sd_session_get_display() return 0 or + sd_session_get_class(), + sd_session_get_display() and + sd_session_get_tty() return 0 or a positive integer. On failure, these calls return a negative errno-style error code. @@ -218,10 +234,11 @@ sd_session_get_seat(), sd_session_get_service(), sd_session_get_type(), - sd_session_get_class() and - sd_session_get_display() interfaces - are available as shared library, which can be compiled - and linked to with the + sd_session_get_class(), + sd_session_get_display() and + sd_session_get_tty() + interfaces are available as shared library, which can + be compiled and linked to with the libsystemd-login pkg-config1 file. diff --git a/src/login/libsystemd-login.sym b/src/login/libsystemd-login.sym index ff51be729b..272b0e2b52 100644 --- a/src/login/libsystemd-login.sym +++ b/src/login/libsystemd-login.sym @@ -53,3 +53,8 @@ global: sd_seat_can_tty; sd_seat_can_graphical; } LIBSYSTEMD_LOGIN_43; + +LIBSYSTEMD_LOGIN_198 { +global: + sd_session_get_tty; +} LIBSYSTEMD_LOGIN_186; diff --git a/src/login/sd-login.c b/src/login/sd-login.c index 45e3bb8dcd..4bc51e71a2 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -409,6 +409,10 @@ _public_ int sd_session_get_seat(const char *session, char **seat) { return session_get_string(session, "SEAT", seat); } +_public_ int sd_session_get_tty(const char *session, char **tty) { + return session_get_string(session, "TTY", tty); +} + _public_ int sd_session_get_service(const char *session, char **service) { return session_get_string(session, "SERVICE", service); } diff --git a/src/systemd/sd-login.h b/src/systemd/sd-login.h index 6bd1f2da4a..3746b45cf3 100644 --- a/src/systemd/sd-login.h +++ b/src/systemd/sd-login.h @@ -108,6 +108,9 @@ int sd_session_get_class(const char *session, char **clazz); /* Determine the X11 display of this session. */ int sd_session_get_display(const char *session, char **display); +/* Determine the TTY of this session. */ +int sd_session_get_tty(const char *session, char **display); + /* Return active session and user of seat */ int sd_seat_get_active(const char *seat, char **session, uid_t *uid); -- cgit v1.2.1 From 59164be40e6b520315d87e1ef16a3be65c854224 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 15 Jan 2013 03:00:43 +0100 Subject: systemctl: when inhibiting shutdown/suspend also check for other login sessions --- src/shared/util.c | 17 +++++++++++++++++ src/shared/util.h | 2 ++ src/systemctl/systemctl.c | 35 ++++++++++++++++++++++++++++++++--- 3 files changed, 51 insertions(+), 3 deletions(-) diff --git a/src/shared/util.c b/src/shared/util.c index 49b58444c7..a87828d451 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -4444,6 +4444,23 @@ int get_user_creds( return 0; } +char* uid_to_name(uid_t uid) { + struct passwd *p; + char *r; + + if (uid == 0) + return strdup("root"); + + p = getpwuid(uid); + if (p) + return strdup(p->pw_name); + + if (asprintf(&r, "%lu", (unsigned long) uid) < 0) + return NULL; + + return r; +} + int get_group_creds(const char **groupname, gid_t *gid) { struct group *g; gid_t id; diff --git a/src/shared/util.h b/src/shared/util.h index bb6602fb24..bbf744e900 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -433,6 +433,8 @@ int get_group_creds(const char **groupname, gid_t *gid); int in_group(const char *name); +char* uid_to_name(uid_t uid); + int glob_exists(const char *path); int dirent_ensure_type(DIR *d, struct dirent *de); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 0bae67eb8c..d56b4d61e2 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -38,6 +38,7 @@ #include #include +#include #include "log.h" #include "util.h" @@ -1694,6 +1695,8 @@ static int check_inhibitors(DBusConnection *bus, enum action a) { DBusMessageIter iter, sub, sub2; int r; unsigned c = 0; + _cleanup_strv_free_ char **sessions = NULL; + char **s; if (!bus) return 0; @@ -1735,7 +1738,7 @@ static int check_inhibitors(DBusConnection *bus, enum action a) { const char *what, *who, *why, *mode; uint32_t uid, pid; _cleanup_strv_free_ char **sv = NULL; - _cleanup_free_ char *comm = NULL; + _cleanup_free_ char *comm = NULL, *user = NULL; if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); @@ -1769,7 +1772,9 @@ static int check_inhibitors(DBusConnection *bus, enum action a) { goto next; get_process_comm(pid, &comm); - log_warning("Operation inhibited by \"%s\" (PID %lu \"%s\", UID %lu), reason is \"%s\".", who, (unsigned long) pid, strna(comm), (unsigned long) uid, why); + user = uid_to_name(uid); + log_warning("Operation inhibited by \"%s\" (PID %lu \"%s\", user %s), reason is \"%s\".", + who, (unsigned long) pid, strna(comm), strna(user), why); c++; next: @@ -1778,10 +1783,34 @@ static int check_inhibitors(DBusConnection *bus, enum action a) { dbus_message_iter_recurse(&iter, &sub); + /* Check for current sessions */ + sd_get_sessions(&sessions); + STRV_FOREACH(s, sessions) { + uid_t uid; + _cleanup_free_ char *type = NULL, *tty = NULL, *seat = NULL, *user = NULL, *service = NULL, *class = NULL; + + if (sd_session_get_uid(*s, &uid) < 0 || uid == getuid()) + continue; + + if (sd_session_get_class(*s, &class) < 0 || !streq(class, "user")) + continue; + + if (sd_session_get_type(*s, &type) < 0 || (!streq(type, "x11") && !streq(type, "tty"))) + continue; + + sd_session_get_tty(*s, &tty); + sd_session_get_seat(*s, &seat); + sd_session_get_service(*s, &service); + user = uid_to_name(uid); + + log_warning("User %s is logged in on %s.", strna(user), isempty(tty) ? (isempty(seat) ? strna(service) : seat) : tty); + c++; + } + if (c <= 0) return 0; - log_error("Please try again after closing inhibitors or ignore them with 'systemctl %s -i'.", + log_error("Please retry operation after closing inhibitors and logging out other users.\nAlternatively, ignore inhibitors and users with 'systemctl %s -i'.", a == ACTION_HALT ? "halt" : a == ACTION_POWEROFF ? "poweroff" : a == ACTION_REBOOT ? "reboot" : -- cgit v1.2.1 From c817bbb1cbc47e2436731914710195d65fa0dd83 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 15 Jan 2013 02:35:42 +0100 Subject: Update TODO --- TODO | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TODO b/TODO index c3612fdc34..b4e4461291 100644 --- a/TODO +++ b/TODO @@ -19,6 +19,10 @@ F18: Features: +* "systemctl disable" on a static unit prints no message and does + nothing. "systemctl enable" does nothing, and gives a bad message + about it. Should fix both to print nice actionable messages. + * man: link up systemd.directives better, so that people actually know about it * fstab: add new mount option x-systemd-after=/foobar/waldo to allow manual dependencies to other mount points -- cgit v1.2.1 From aa6c53bf05f27bb094735e7bc2bbfc73ac7bc2ba Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 15 Jan 2013 04:12:53 +0100 Subject: man: link in wiki documentation about network.target --- man/systemd.special.xml | 10 ++++++++++ units/network.target | 1 + 2 files changed, 11 insertions(+) diff --git a/man/systemd.special.xml b/man/systemd.special.xml index 9ea288e337..35c5a28a1b 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -413,6 +413,16 @@ referring to the $network facility. + + This unit is supposed to + indicate when the network is + "up", but it is only very + losely defined what that is + supposed to mean. Also see Running + Services After the Network is + up for more + information. diff --git a/units/network.target b/units/network.target index 5406f4e5d9..65fc64b02c 100644 --- a/units/network.target +++ b/units/network.target @@ -8,3 +8,4 @@ [Unit] Description=Network Documentation=man:systemd.special(7) +Documentation=http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget -- cgit v1.2.1 From 236bc7573a400b77e515c441a34419b133d11b18 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 15 Jan 2013 05:10:50 +0100 Subject: man: link in API FS documentation from the wiki --- man/systemd-remount-fs.service.xml | 24 +++++++++++++++--------- man/systemd.mount.xml | 12 ++++++++++-- units/systemd-remount-fs.service.in | 1 + 3 files changed, 26 insertions(+), 11 deletions(-) diff --git a/man/systemd-remount-fs.service.xml b/man/systemd-remount-fs.service.xml index d920c0c400..9fe953e8c6 100644 --- a/man/systemd-remount-fs.service.xml +++ b/man/systemd-remount-fs.service.xml @@ -59,20 +59,26 @@ listed in fstab5 to the root file system, the /usr - file system and the kernel API virtual file - systems. This is required so that the mount options of - these file systems -- which are pre-mounted by the - kernel, the initial RAM disk, container environments - or system manager code -- are updated to those listed - in /etc/fstab. This service - ignores normal file systems and only changes the root - file system (i.e. /), + file system and the kernel API file systems. This is + required so that the mount options of these file + systems -- which are pre-mounted by the kernel, the + initial RAM disk, container environments or system + manager code -- are updated to those listed in + /etc/fstab. This service ignores + normal file systems and only changes the root file + system (i.e. /), /usr and the virtual kernel API file systems such as /proc, /sys or /dev/. This service executes no operation if /etc/fstab does not - exist or lists no entries for the mentioned file systems. + exist or lists no entries for the mentioned file + systems. + + For a longer discussion of kernel API file + systems see API + File Systems. diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml index 78b5f5257c..d1940831a9 100644 --- a/man/systemd.mount.xml +++ b/man/systemd.mount.xml @@ -102,10 +102,18 @@ in the file system hierarchy, a dependency between both units is created automatically. - Mount points created at runtime independent on - unit files or /etc/fstab will be + Mount points created at runtime (independently of + unit files or /etc/fstab) will be monitored by systemd and appear like any other mount unit in systemd. + + Some file systems have special semantics as API + file systems for kernel-to-userspace and + userspace-to-userpace interfaces. Some of them may not + be changed via mount units, and cannot be disabled. + For a longer discussion see API + File Systems. diff --git a/units/systemd-remount-fs.service.in b/units/systemd-remount-fs.service.in index cddb0a1fb9..70e1a8680a 100644 --- a/units/systemd-remount-fs.service.in +++ b/units/systemd-remount-fs.service.in @@ -8,6 +8,7 @@ [Unit] Description=Remount Root and Kernel File Systems Documentation=man:systemd-remount-fs.service(8) +Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems DefaultDependencies=no Conflicts=shutdown.target After=systemd-readahead-collect.service systemd-readahead-replay.service systemd-fsck-root.service -- cgit v1.2.1 From 69bd386c4c0618d686e1b5ac01c0e9658b1539b6 Mon Sep 17 00:00:00 2001 From: Oleksii Shevchuk Date: Tue, 15 Jan 2013 12:58:42 +0200 Subject: Typo fix --- src/systemctl/systemctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index d56b4d61e2..66d031dae8 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1042,7 +1042,7 @@ static bool need_daemon_reload(DBusConnection *bus, const char *unit) { /* We ignore all errors here, since this is used to show a warning only */ n = unit_name_mangle(unit); - if (n) + if (!n) return log_oom(); r = bus_method_call_with_reply ( -- cgit v1.2.1 From d3b37e846950aab3ce940c46204b729552093df8 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 15 Jan 2013 15:57:12 +0100 Subject: vconsole: copy font to tty1-15 --- src/vconsole/vconsole-setup.c | 58 +++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c index d8cdb7c609..679dc1aafb 100644 --- a/src/vconsole/vconsole-setup.c +++ b/src/vconsole/vconsole-setup.c @@ -158,47 +158,47 @@ static int font_load(const char *vc, const char *font, const char *map, const ch return 0; } -static void font_copy_to_all_vts(int fd, int from_vt) { - struct vt_stat vts; - unsigned short bits; +/* + * A newly allocated VT uses the font from the active VT. Here + * we update all possibly already allocated VTs with the configured + * font. It also allows to restart systemd-vconsole-setup.service, + * to apply a new font to all VTs. + */ +static void font_copy_to_all_vcs(int fd) { + struct vt_stat vcs; int i; int r; - /* get 16 bit mask of used VT numbers */ - zero(vts); - r = ioctl(fd, VT_GETSTATE, &vts); + /* get active, and 16 bit mask of used VT numbers */ + zero(vcs); + r = ioctl(fd, VT_GETSTATE, &vcs); if (r < 0) return; - bits = vts.v_state; - for (i = 1; i <= 16; i++) { - char vtname[16]; - int vtfd; + for (i = 1; i <= 15; i++) { + char vcname[16]; + int vcfd; struct console_font_op cfo; - bool used; - /* skip unused VTs */ - used = bits & 1; - bits >>= 1; - if (!used) + if (i == vcs.v_active) continue; - if (i == from_vt) + /* skip unused VTs above tty6 to avoid allocating them */ + if (i > 6 && ((vcs.v_state >> i) & 1) == 0) continue; - snprintf(vtname , sizeof(vtname), "/dev/tty%i", i); - vtfd = open_terminal(vtname, O_RDWR|O_CLOEXEC); - if (vtfd < 0) + snprintf(vcname , sizeof(vcname), "/dev/tty%i", i); + vcfd = open_terminal(vcname, O_RDWR|O_CLOEXEC); + if (vcfd < 0) continue; - /* copy font from from_vt to this VT */ + /* copy font from active VT, where the font was uploaded to */ zero(cfo); cfo.op = KD_FONT_OP_COPY; - /* the index numbers seem to start at 0 for tty1 */ - cfo.height = from_vt - 1; - ioctl(vtfd, KDFONTOP, &cfo); + cfo.height = vcs.v_active-1; /* tty1 == index 0 */ + ioctl(vcfd, KDFONTOP, &cfo); - close_nointr_nofail(vtfd); + close_nointr_nofail(vcfd); } } @@ -212,7 +212,7 @@ int main(int argc, char **argv) { int fd = -1; bool utf8; pid_t font_pid = 0, keymap_pid = 0; - int font_copy_from_vt = 0; + bool font_copy = false; int r = EXIT_FAILURE; log_set_target(LOG_TARGET_AUTO); @@ -224,8 +224,8 @@ int main(int argc, char **argv) { if (argv[1]) vc = argv[1]; else { - vc = "/dev/tty1"; - font_copy_from_vt = 1; + vc = "/dev/tty0"; + font_copy = true; } fd = open_terminal(vc, O_RDWR|O_CLOEXEC); @@ -287,8 +287,8 @@ finish: if (font_pid > 0) { wait_for_terminate_and_warn(KBD_SETFONT, font_pid); - if (font_copy_from_vt > 0) - font_copy_to_all_vts(fd, font_copy_from_vt); + if (font_copy) + font_copy_to_all_vcs(fd); } free(vc_keymap); -- cgit v1.2.1 From 8bae5e6abeca9ec2beb6d6e6b14a558283e895c9 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 15 Jan 2013 16:27:11 +0100 Subject: localectl: fix typo in man page https://bugs.freedesktop.org/show_bug.cgi?id=59247 --- man/localectl.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/localectl.xml b/man/localectl.xml index f375bfa5d9..73bff98938 100644 --- a/man/localectl.xml +++ b/man/localectl.xml @@ -183,7 +183,7 @@ mapping of X11, after converting it to the closest matching X11 keyboard mapping. Use - list-locales for a + list-keymaps for a list of available keyboard mappings (see below). -- cgit v1.2.1 From 4a431c9ab1475b38868c9e240a5615739a3d6458 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 14 Jan 2013 20:18:36 -0500 Subject: man: add bootchart.conf to directives index --- Makefile.am | 3 ++- make-directive-index.py | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index e10e421d43..05dcc79f6e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -714,7 +714,8 @@ XML_DIRECTIVE_FILES = \ man/systemd.device.xml \ man/systemd.conf.xml \ man/systemd.journal-fields.xml \ - man/systemd.time.xml + man/systemd.time.xml \ + man/bootchart.conf.xml man/systemd.directives.xml: make-directive-index.py $(XML_DIRECTIVE_FILES) $(AM_V_at)$(MKDIR_P) $(dir $@) diff --git a/make-directive-index.py b/make-directive-index.py index eaf7019a2b..b35735e109 100755 --- a/make-directive-index.py +++ b/make-directive-index.py @@ -83,6 +83,15 @@ TEMPLATE = '''\ + + + bootchart.conf directives + + Directives for configuring the behaviour of the + systemd-bootchart process. + + + ''' @@ -139,6 +148,7 @@ def make_page(xml_files): 'udev-directives', 'systemd-directives', 'journal-directives', + 'bootchart-directives', ]} for page in xml_files: _extract_directives(directive_groups, page) -- cgit v1.2.1 From eeb019b5b5db785feb0666f3238b1240e7f3e42e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 14 Jan 2013 21:02:49 -0500 Subject: make-directive-index: remove duplicated list of sections --- make-directive-index.py | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/make-directive-index.py b/make-directive-index.py index b35735e109..51d28c4fae 100755 --- a/make-directive-index.py +++ b/make-directive-index.py @@ -106,8 +106,8 @@ def _extract_directives(directive_groups, page): text = ''.join(varname.text.partition('=')[:2]) stor[text].append((pagename, section)) -def _make_section(refentry, name, directives): - varlist = refentry.find(".//*[@id='{}']".format(name)) +def _make_section(template, name, directives): + varlist = template.find(".//*[@id='{}']".format(name)) for varname, manpages in sorted(directives.items()): entry = tree.SubElement(varlist, 'varlistentry') a = tree.SubElement(tree.SubElement(entry, 'term'), 'varname') @@ -125,7 +125,7 @@ def _make_section(refentry, name, directives): d.text = manvolume entry.tail = '\n\n' -def _make_page(directive_groups): +def _make_page(template, directive_groups): """Create an XML tree from directive_groups. directive_groups = { @@ -134,26 +134,21 @@ def _make_page(directive_groups): ... } """ - refentry = tree.fromstring(TEMPLATE) - for name, directives in directive_groups.items(): - _make_section(refentry, name, directives) + _make_section(template, name, directives) - return refentry + return template def make_page(xml_files): "Extract directives from xml_files and return XML index tree." + template = tree.fromstring(TEMPLATE) + names = [vl.get('id') for vl in template.iterfind('.//variablelist')] directive_groups = {name:collections.defaultdict(list) - for name in ['unit-directives', - 'udev-directives', - 'systemd-directives', - 'journal-directives', - 'bootchart-directives', - ]} + for name in names} for page in xml_files: _extract_directives(directive_groups, page) - return _make_page(directive_groups) + return _make_page(template, directive_groups) if __name__ == '__main__': tree.dump(make_page(sys.argv[1:])) -- cgit v1.2.1 From 0acfdd61edb96585c6438698bcc21e366acd4291 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 14 Jan 2013 21:34:19 -0500 Subject: make-directive-index: count how many directives and pages are shown --- make-directive-index.py | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/make-directive-index.py b/make-directive-index.py index 51d28c4fae..3bf672e1a6 100755 --- a/make-directive-index.py +++ b/make-directive-index.py @@ -92,9 +92,19 @@ TEMPLATE = '''\ + + + Colophon + + ''' +COLOPHON = '''\ +This index contains {count} entries in {sections} sections, +referring to {pages} individual manual pages. +''' + def _extract_directives(directive_groups, page): t = tree.parse(page) section = t.find('./refmeta/manvolnum').text @@ -125,6 +135,19 @@ def _make_section(template, name, directives): d.text = manvolume entry.tail = '\n\n' +def _make_colophon(template, groups): + count = 0 + pages = set() + for group in groups: + count += len(group) + for pagelist in group.values(): + pages |= set(pagelist) + + para = template.find(".//para[@id='colophon']") + para.text = COLOPHON.format(count=count, + sections=len(groups), + pages=len(pages)) + def _make_page(template, directive_groups): """Create an XML tree from directive_groups. @@ -137,6 +160,8 @@ def _make_page(template, directive_groups): for name, directives in directive_groups.items(): _make_section(template, name, directives) + _make_colophon(template, directive_groups.values()) + return template def make_page(xml_files): -- cgit v1.2.1 From 08177c85efd52c2c2ab00991791649ad8cf61297 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 14 Jan 2013 21:58:22 -0500 Subject: make-directive-index: link to systemd options --- Makefile.am | 1 + make-directive-index.py | 17 +++++++++++++++++ man/systemd.xml | 4 ++-- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index 05dcc79f6e..f02e9532d9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -699,6 +699,7 @@ EXTRA_DIST += \ man/index.html XML_DIRECTIVE_FILES = \ + man/systemd.xml \ man/systemd.unit.xml \ man/systemd.service.xml \ man/systemd.socket.xml \ diff --git a/make-directive-index.py b/make-directive-index.py index 3bf672e1a6..e94f4c5b30 100755 --- a/make-directive-index.py +++ b/make-directive-index.py @@ -66,6 +66,23 @@ TEMPLATE = '''\ + + Options on the kernel command line + + Kernel boot options for configuring the behaviour of the + systemd process. + + + + + + Environment variables + + Environment variables understood by the systemd process. + + + + UDEV directives diff --git a/man/systemd.xml b/man/systemd.xml index 7b3d265b8d..55ba0875f0 100644 --- a/man/systemd.xml +++ b/man/systemd.xml @@ -877,7 +877,7 @@ Environment - + $SYSTEMD_LOG_LEVEL systemd reads the @@ -987,7 +987,7 @@ /proc/cmdline instead.: - + systemd.unit= rd.systemd.unit= -- cgit v1.2.1 From 9cc2c8b763fb4b9ddda95756a727a438a0d2a012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 14 Jan 2013 22:08:33 -0500 Subject: man: add links to directive index to see-alsos systemd.directives(5) is renamed to systemd.directives(7). Section 7 is "Miscellaneous". --- Makefile.am | 2 +- TODO | 2 -- make-directive-index.py | 2 +- man/bootchart.conf.xml | 3 ++- man/systemd.automount.xml | 3 ++- man/systemd.conf.xml | 3 ++- man/systemd.device.xml | 3 ++- man/systemd.exec.xml | 3 ++- man/systemd.journal-fields.xml | 3 ++- man/systemd.kill.xml | 3 ++- man/systemd.mount.xml | 3 ++- man/systemd.path.xml | 3 ++- man/systemd.service.xml | 3 ++- man/systemd.snapshot.xml | 3 ++- man/systemd.socket.xml | 3 ++- man/systemd.swap.xml | 3 ++- man/systemd.target.xml | 3 ++- man/systemd.time.xml | 3 ++- man/systemd.timer.xml | 3 ++- man/systemd.unit.xml | 3 ++- man/systemd.xml | 3 ++- 21 files changed, 38 insertions(+), 22 deletions(-) diff --git a/Makefile.am b/Makefile.am index f02e9532d9..ed6c307c90 100644 --- a/Makefile.am +++ b/Makefile.am @@ -693,7 +693,7 @@ man/index.html: make-man-index.py $(XML_FILES) $(AM_V_GEN)$(PYTHON) $^ > $@ MANPAGES += \ - man/systemd.directives.5 + man/systemd.directives.7 EXTRA_DIST += \ man/index.html diff --git a/TODO b/TODO index b4e4461291..7eeca3d4ee 100644 --- a/TODO +++ b/TODO @@ -23,8 +23,6 @@ Features: nothing. "systemctl enable" does nothing, and gives a bad message about it. Should fix both to print nice actionable messages. -* man: link up systemd.directives better, so that people actually know about it - * fstab: add new mount option x-systemd-after=/foobar/waldo to allow manual dependencies to other mount points https://bugzilla.redhat.com/show_bug.cgi?id=812826 diff --git a/make-directive-index.py b/make-directive-index.py index e94f4c5b30..48d830e96f 100755 --- a/make-directive-index.py +++ b/make-directive-index.py @@ -40,7 +40,7 @@ TEMPLATE = '''\ systemd.directives - 5 + 7 diff --git a/man/bootchart.conf.xml b/man/bootchart.conf.xml index f8fcfe0103..d2b09638c1 100644 --- a/man/bootchart.conf.xml +++ b/man/bootchart.conf.xml @@ -151,7 +151,8 @@ See Also - systemd-bootchart1 + systemd-bootchart1, + systemd.directives7 diff --git a/man/systemd.automount.xml b/man/systemd.automount.xml index fe559e1dcb..7575835060 100644 --- a/man/systemd.automount.xml +++ b/man/systemd.automount.xml @@ -160,7 +160,8 @@ systemd.unit5, systemd.mount5, mount8, - automount8 + automount8, + systemd.directives7 diff --git a/man/systemd.conf.xml b/man/systemd.conf.xml index da3c7f7789..956db2c4d3 100644 --- a/man/systemd.conf.xml +++ b/man/systemd.conf.xml @@ -290,7 +290,8 @@ See Also - systemd1 + systemd1, + systemd.directives7 diff --git a/man/systemd.device.xml b/man/systemd.device.xml index 141d72e3dc..4c4bb7cee5 100644 --- a/man/systemd.device.xml +++ b/man/systemd.device.xml @@ -161,7 +161,8 @@ systemd1, systemctl8, systemd.unit5, - udev7 + udev7, + systemd.directives7 diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml index 302ac43407..92f59bdfbd 100644 --- a/man/systemd.exec.xml +++ b/man/systemd.exec.xml @@ -1149,7 +1149,8 @@ systemd.socket5, systemd.swap5, systemd.mount5, - systemd.kill5 + systemd.kill5, + systemd.directives7 diff --git a/man/systemd.journal-fields.xml b/man/systemd.journal-fields.xml index 76a436d650..13af4fdfc1 100644 --- a/man/systemd.journal-fields.xml +++ b/man/systemd.journal-fields.xml @@ -443,7 +443,8 @@ systemd1, journalctl1, journald.conf5, - sd-journal3 + sd-journal3, + systemd.directives7 diff --git a/man/systemd.kill.xml b/man/systemd.kill.xml index 3fff2f57e6..1bff7b81fa 100644 --- a/man/systemd.kill.xml +++ b/man/systemd.kill.xml @@ -163,7 +163,8 @@ systemd.socket5, systemd.swap5, systemd.mount5, - systemd.exec5 + systemd.exec5, + systemd.directives7 diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml index d1940831a9..2dc095e47b 100644 --- a/man/systemd.mount.xml +++ b/man/systemd.mount.xml @@ -290,7 +290,8 @@ systemd.service5, systemd.device5, mount8, - systemd-fstab-generator8 + systemd-fstab-generator8, + systemd.directives7 diff --git a/man/systemd.path.xml b/man/systemd.path.xml index a27a97be77..70a89b7a47 100644 --- a/man/systemd.path.xml +++ b/man/systemd.path.xml @@ -213,7 +213,8 @@ systemctl8, systemd.unit5, systemd.service5, - inotify7 + inotify7, + systemd.directives7 diff --git a/man/systemd.service.xml b/man/systemd.service.xml index 598e863651..63e5b16e53 100644 --- a/man/systemd.service.xml +++ b/man/systemd.service.xml @@ -922,7 +922,8 @@ systemctl8, systemd.unit5, systemd.exec5, - systemd.kill5 + systemd.kill5, + systemd.directives7 diff --git a/man/systemd.snapshot.xml b/man/systemd.snapshot.xml index b432682a48..f7688e9998 100644 --- a/man/systemd.snapshot.xml +++ b/man/systemd.snapshot.xml @@ -80,7 +80,8 @@ systemd1, systemctl8, - systemd.unit5 + systemd.unit5, + systemd.directives7 diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml index 4b1fcc8b0c..88cdaca00f 100644 --- a/man/systemd.socket.xml +++ b/man/systemd.socket.xml @@ -678,7 +678,8 @@ systemd.unit5, systemd.exec5, systemd.kill5, - systemd.service5 + systemd.service5, + systemd.directives7 diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml index a932143d43..dae9d59e7c 100644 --- a/man/systemd.swap.xml +++ b/man/systemd.swap.xml @@ -206,7 +206,8 @@ systemd.device5, systemd.mount5, swapon8, - systemd-fstab-generator8 + systemd-fstab-generator8, + systemd.directives7 diff --git a/man/systemd.target.xml b/man/systemd.target.xml index d1f4d22674..efbad15cdf 100644 --- a/man/systemd.target.xml +++ b/man/systemd.target.xml @@ -101,7 +101,8 @@ systemd1, systemctl8, systemd.unit5, - systemd.special7 + systemd.special7, + systemd.directives7 diff --git a/man/systemd.time.xml b/man/systemd.time.xml index 4f80a306bf..db5d01b1a2 100644 --- a/man/systemd.time.xml +++ b/man/systemd.time.xml @@ -284,7 +284,8 @@ Wed-Sat,Tue 12-10-15 1:2:3 → Tue-Sat 2012-10-15 01:02:03 systemd1, journalctl1, systemd.timer5, - systemd.unit5 + systemd.unit5, + systemd.directives7 diff --git a/man/systemd.timer.xml b/man/systemd.timer.xml index 5cc543e453..e08e200212 100644 --- a/man/systemd.timer.xml +++ b/man/systemd.timer.xml @@ -199,7 +199,8 @@ systemctl8, systemd.unit5, systemd.service5, - systemd.time7 + systemd.time7, + systemd.directives7 diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index bba0f5d29f..d43f288b81 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -1123,7 +1123,8 @@ systemd.timer5, systemd.snapshot5, systemd.time7, - capabilities7 + capabilities7, + systemd.directives7 diff --git a/man/systemd.xml b/man/systemd.xml index 55ba0875f0..962ed56ffc 100644 --- a/man/systemd.xml +++ b/man/systemd.xml @@ -1265,7 +1265,8 @@ systemd.special5, pkg-config1, kernel-command-line7, - bootup7 + bootup7, + systemd.directives7 -- cgit v1.2.1 From f6b6728d1dc92754026a7f04d26f83e2290778f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 14 Jan 2013 22:17:49 -0500 Subject: man: generate xml not html for index This way we also get a man page. The output is not as polished. I hope that it doesn't matter too much. index.html is not generated now, the page is called systemd.index.html. If necessary, an install hook should be added. --- Makefile.am | 19 +++---- TODO | 2 - make-man-index.py | 154 ++++++++++++++++++++++++++++++++---------------------- man/.gitignore | 1 + 4 files changed, 99 insertions(+), 77 deletions(-) diff --git a/Makefile.am b/Makefile.am index ed6c307c90..9c7267b064 100644 --- a/Makefile.am +++ b/Makefile.am @@ -682,22 +682,10 @@ CLEANFILES += \ ${XML_FILES:.xml=.html} if HAVE_PYTHON -noinst_DATA += \ - man/index.html - -CLEANFILES += \ - man/index.html - -man/index.html: make-man-index.py $(XML_FILES) - $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_GEN)$(PYTHON) $^ > $@ - MANPAGES += \ + man/systemd.index.7 \ man/systemd.directives.7 -EXTRA_DIST += \ - man/index.html - XML_DIRECTIVE_FILES = \ man/systemd.xml \ man/systemd.unit.xml \ @@ -718,11 +706,16 @@ XML_DIRECTIVE_FILES = \ man/systemd.time.xml \ man/bootchart.conf.xml +man/systemd.index.xml: make-man-index.py $(filter-out man/systemd.index.xml,$(XML_FILES)) + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_GEN)$(PYTHON) $^ > $@ + man/systemd.directives.xml: make-directive-index.py $(XML_DIRECTIVE_FILES) $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(PYTHON) $^ > $@ EXTRA_DIST += \ + man/systemd.index.xml \ man/systemd.directives.xml endif diff --git a/TODO b/TODO index 7eeca3d4ee..d3d46994da 100644 --- a/TODO +++ b/TODO @@ -32,8 +32,6 @@ Features: * support high-level cgroup setting syntax in systemctl. Example: "systemctl set-cgroup-attr MemoryLimit 5K" -* add a man page "systemdall" that lists all of systemd's man pages, inspired by zsh's "zshall" page - * print a nicer explanation if people use variable/specifier expansion in ExecStart= for the first word * kernel cmdline switch to turn off predictable network interface names diff --git a/make-man-index.py b/make-man-index.py index b40c963f94..5fa90aefdb 100755 --- a/make-man-index.py +++ b/make-man-index.py @@ -1,8 +1,9 @@ -# -*- Mode: python; indent-tabs-mode: nil -*- */ +# -*- Mode: python; coding: utf-8; indent-tabs-mode: nil -*- */ # # This file is part of systemd. # # Copyright 2012 Lennart Poettering +# Copyright 2013 Zbigniew Jędrzejewski-Szmek # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by @@ -17,79 +18,108 @@ # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see . -from xml.etree.ElementTree import parse, Element, SubElement, tostring -from sys import argv, stdout - -index = {} - -def prettify(elem, indent = 0): - s = "\n" + indent * " " - if len(elem): - if not elem.text or not elem.text.strip(): - elem.text = s + " " - for e in elem: - prettify(e, indent + 1) - if not e.tail or not e.tail.strip(): - e.tail = s + " " - if not e.tail or not e.tail.strip(): - e.tail = s - else: - if indent and (not elem.tail or not elem.tail.strip()): - elem.tail = s - -for p in argv[1:]: - t = parse(p) +import collections +import xml.etree.ElementTree as tree +import sys + +TEMPLATE = '''\ + + + + systemd.index + systemd + + + + Developer + Lennart + Poettering + lennart@poettering.net + + + + + + systemd.index + 7 + + + + systemd.index + List all manpages from the systemd project + + +''' + +SUMMARY = '''\ + + See Also + + systemd.directives7 + + + + +''' + +COUNTS = '\ +This index contains {count} entries, referring to {pages} individual manual pages.' + +def make_index(pages): + index = collections.defaultdict(list) + for p in pages: + t = tree.parse(p) section = t.find('./refmeta/manvolnum').text + refname = t.find('./refnamediv/refname').text purpose = ' '.join(t.find('./refnamediv/refpurpose').text.split()) for f in t.findall('./refnamediv/refname'): - index[f.text] = (p, section, purpose) + infos = (f.text, section, purpose, refname) + index[f.text[0].upper()].append(infos) + return index -html = Element('html') +def add_letter(template, letter, pages): + refsect1 = tree.SubElement(template, 'refsect1') + title = tree.SubElement(refsect1, 'title') + title.text = letter + para = tree.SubElement(refsect1, 'para') + for info in sorted(pages, key=lambda info: str.lower(info[0])): + refname, section, purpose, realname = info -head = SubElement(html, 'head') -title = SubElement(head, 'title') -title.text = 'Manual Page Index' + b = tree.SubElement(para, 'citerefentry') + c = tree.SubElement(b, 'refentrytitle') + c.text = refname + d = tree.SubElement(b, 'manvolnum') + d.text = section -body = SubElement(html, 'body') -h1 = SubElement(body, 'h1') -h1.text = 'Manual Page Index' + b.tail = ' — ' + purpose # + ' (' + p + ')' -letter = None -for n in sorted(index.keys(), key = str.lower): - path, section, purpose = index[n] + tree.SubElement(para, 'sbr') - if path.endswith('.xml'): - path = path[:-4] + ".html" +def add_summary(template, indexpages): + count = 0 + pages = set() + for group in indexpages: + count += len(group) + for info in group: + refname, section, purpose, realname = info + pages.add((realname, section)) - c = path.rfind('/') - if c >= 0: - path = path[c+1:] + refsect1 = tree.fromstring(SUMMARY) + template.append(refsect1) - if letter is None or n[0].upper() != letter: - letter = n[0].upper() + para = template.find(".//para[@id='counts']") + para.text = COUNTS.format(count=count, pages=len(pages)) - h2 = SubElement(body, 'h2') - h2.text = letter +def make_page(xml_files): + template = tree.fromstring(TEMPLATE) + index = make_index(xml_files) - ul = SubElement(body, 'ul') - ul.set('style', 'list-style-type:none') + for letter in sorted(index): + add_letter(template, letter, index[letter]) - li = SubElement(ul, 'li') + add_summary(template, index.values()) - a = SubElement(li, 'a') - a.set('href', path) - a.text = n + '(' + section + ')' - a.tail = ' -- ' + return template - i = SubElement(li, 'i') - i.text = purpose - -hr = SubElement(body, 'hr') - -p = SubElement(body, 'p') -p.text = "This index contains %s entries, referring to %i individual manual pages." % (len(index), len(argv)-1) - -if hasattr(stdout, "buffer"): - stdout = stdout.buffer -prettify(html) -stdout.write(tostring(html)) +if __name__ == '__main__': + tree.dump(make_page(sys.argv[1:])) diff --git a/man/.gitignore b/man/.gitignore index e97cda79b3..9c5a7db1cc 100644 --- a/man/.gitignore +++ b/man/.gitignore @@ -1,2 +1,3 @@ /systemd.directives.xml +/systemd.index.xml /*.[13578] -- cgit v1.2.1 From dd6f5e4fb8a18822d1de8f98d5b24d1cb4d9e851 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 15 Jan 2013 10:34:59 -0500 Subject: make-man-index: work around UnicodeDecodeError --- make-man-index.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/make-man-index.py b/make-man-index.py index 5fa90aefdb..2dbc2da995 100755 --- a/make-man-index.py +++ b/make-man-index.py @@ -21,6 +21,7 @@ import collections import xml.etree.ElementTree as tree import sys +MDASH = ' — ' if sys.version_info.major >= 3 else ' -- ' TEMPLATE = '''\ @@ -91,7 +92,7 @@ def add_letter(template, letter, pages): d = tree.SubElement(b, 'manvolnum') d.text = section - b.tail = ' — ' + purpose # + ' (' + p + ')' + b.tail = MDASH + purpose # + ' (' + p + ')' tree.SubElement(para, 'sbr') -- cgit v1.2.1 From c32247e9d7c4231d4f731c9103d90b4e2e1682a2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 15 Jan 2013 18:10:11 +0100 Subject: man: correct order of precedence for fstab units --- man/systemd.mount.xml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml index 2dc095e47b..7f879db709 100644 --- a/man/systemd.mount.xml +++ b/man/systemd.mount.xml @@ -153,8 +153,16 @@ h, ms. If a mount point is configured in both - /etc/fstab and a unit file, the - configuration in the latter takes precedence. + /etc/fstab and a unit file that + is stored below /usr the former + will take precedence. If the unit file is stored below + /etc it will take + precedence. This means: native unit files take + precedence over traditional configuration files, but + this is superseded by the rule that configuration in + /etc will always take precedence + over configuration in + /usr. -- cgit v1.2.1 From 728075eea89dc20067d900bb086d3515e37caab0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 15 Jan 2013 18:13:15 +0100 Subject: update TODO --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index d3d46994da..4704604c20 100644 --- a/TODO +++ b/TODO @@ -19,6 +19,8 @@ F18: Features: +* refuse instantiation of proc.mount and mount units for all other API fs + * "systemctl disable" on a static unit prints no message and does nothing. "systemctl enable" does nothing, and gives a bad message about it. Should fix both to print nice actionable messages. -- cgit v1.2.1 From 25ed795892f309feecf048d4b5e66e5447b9c4ad Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 15 Jan 2013 18:13:34 +0100 Subject: units: add reference to new wiki page to all api mount units --- units/dev-hugepages.mount | 1 + units/dev-mqueue.mount | 1 + units/proc-sys-fs-binfmt_misc.automount | 1 + units/proc-sys-fs-binfmt_misc.mount | 1 + units/sys-fs-fuse-connections.mount | 1 + units/sys-kernel-config.mount | 1 + units/sys-kernel-debug.mount | 1 + units/tmp.mount | 1 + 8 files changed, 8 insertions(+) diff --git a/units/dev-hugepages.mount b/units/dev-hugepages.mount index 9381167c83..d711faed55 100644 --- a/units/dev-hugepages.mount +++ b/units/dev-hugepages.mount @@ -8,6 +8,7 @@ [Unit] Description=Huge Pages File System Documentation=https://www.kernel.org/doc/Documentation/vm/hugetlbpage.txt +Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems DefaultDependencies=no Before=sysinit.target ConditionPathExists=/sys/kernel/mm/hugepages diff --git a/units/dev-mqueue.mount b/units/dev-mqueue.mount index 5786bb1519..5c11ca7d35 100644 --- a/units/dev-mqueue.mount +++ b/units/dev-mqueue.mount @@ -8,6 +8,7 @@ [Unit] Description=POSIX Message Queue File System Documentation=man:mq_overview(7) +Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems DefaultDependencies=no Before=sysinit.target ConditionPathExists=/proc/sys/fs/mqueue diff --git a/units/proc-sys-fs-binfmt_misc.automount b/units/proc-sys-fs-binfmt_misc.automount index 7fd5afe3cd..6be38937b1 100644 --- a/units/proc-sys-fs-binfmt_misc.automount +++ b/units/proc-sys-fs-binfmt_misc.automount @@ -8,6 +8,7 @@ [Unit] Description=Arbitrary Executable File Formats File System Automount Point Documentation=https://www.kernel.org/doc/Documentation/binfmt_misc.txt +Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems DefaultDependencies=no Before=sysinit.target ConditionPathExists=/proc/sys/fs/binfmt_misc/ diff --git a/units/proc-sys-fs-binfmt_misc.mount b/units/proc-sys-fs-binfmt_misc.mount index c64c84951e..8c7c386318 100644 --- a/units/proc-sys-fs-binfmt_misc.mount +++ b/units/proc-sys-fs-binfmt_misc.mount @@ -8,6 +8,7 @@ [Unit] Description=Arbitrary Executable File Formats File System Documentation=https://www.kernel.org/doc/Documentation/binfmt_misc.txt +Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems DefaultDependencies=no [Mount] diff --git a/units/sys-fs-fuse-connections.mount b/units/sys-fs-fuse-connections.mount index 9269ea4272..ebd93e2cda 100644 --- a/units/sys-fs-fuse-connections.mount +++ b/units/sys-fs-fuse-connections.mount @@ -8,6 +8,7 @@ [Unit] Description=FUSE Control File System Documentation=https://www.kernel.org/doc/Documentation/filesystems/fuse.txt +Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems DefaultDependencies=no ConditionPathExists=/sys/fs/fuse/connections After=systemd-modules-load.service diff --git a/units/sys-kernel-config.mount b/units/sys-kernel-config.mount index e7cd4909c1..020101c0d8 100644 --- a/units/sys-kernel-config.mount +++ b/units/sys-kernel-config.mount @@ -8,6 +8,7 @@ [Unit] Description=Configuration File System Documentation=https://www.kernel.org/doc/Documentation/filesystems/configfs/configfs.txt +Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems DefaultDependencies=no ConditionPathExists=/sys/kernel/config After=systemd-modules-load.service diff --git a/units/sys-kernel-debug.mount b/units/sys-kernel-debug.mount index 8b1e33e7f7..5369728a9f 100644 --- a/units/sys-kernel-debug.mount +++ b/units/sys-kernel-debug.mount @@ -8,6 +8,7 @@ [Unit] Description=Debug File System Documentation=https://www.kernel.org/doc/Documentation/filesystems/debugfs.txt +Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems DefaultDependencies=no ConditionPathExists=/sys/kernel/debug Before=sysinit.target diff --git a/units/tmp.mount b/units/tmp.mount index 94c41c29ba..99a3ba3f6c 100644 --- a/units/tmp.mount +++ b/units/tmp.mount @@ -8,6 +8,7 @@ [Unit] Description=Temporary Directory Documentation=man:hier(7) +Documentation=http://www.freedesktop.org/wiki/Software/systemd/APIFileSystems DefaultDependencies=no Conflicts=umount.target Before=local-fs.target umount.target -- cgit v1.2.1 From b02a01dc08317e961545521359f963752bd2c206 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 15 Jan 2013 18:17:53 +0100 Subject: man: add reference to wiki doc from DefaultControllers= setting --- man/systemd.conf.xml | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/man/systemd.conf.xml b/man/systemd.conf.xml index 956db2c4d3..8c8fb7d7c0 100644 --- a/man/systemd.conf.xml +++ b/man/systemd.conf.xml @@ -114,7 +114,16 @@ of controller names. Pass an empty string to ensure that systemd does not touch any hierarchies but its - own. + own. + + Note that the default value of + 'cpu' will make realtime scheduling + unavailable to system services. See + My + Service Can't Get Realtime! + for more + information. @@ -144,10 +153,10 @@ this option is changed, and make sure the new configuration file is included in it. Otherwise the initrd might - mount the controllers in different - configuration than intended, and the - main system cannot remount them - anymore. + mount the controller hierachies in a + different configuration than intended, + and the main system cannot remount + them anymore. -- cgit v1.2.1 From 10ffbc99afed12bd59bcf91d8242ea65b04eec40 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 15 Jan 2013 20:32:57 +0100 Subject: vconsole: use /dev/vcsa1-15 to check for allocated VTs --- src/vconsole/vconsole-setup.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c index 679dc1aafb..65017055f3 100644 --- a/src/vconsole/vconsole-setup.c +++ b/src/vconsole/vconsole-setup.c @@ -183,11 +183,12 @@ static void font_copy_to_all_vcs(int fd) { if (i == vcs.v_active) continue; - /* skip unused VTs above tty6 to avoid allocating them */ - if (i > 6 && ((vcs.v_state >> i) & 1) == 0) + /* skip non-allocated ttys */ + snprintf(vcname, sizeof(vcname), "/dev/vcs%i", i); + if (access(vcname, F_OK) < 0) continue; - snprintf(vcname , sizeof(vcname), "/dev/tty%i", i); + snprintf(vcname, sizeof(vcname), "/dev/tty%i", i); vcfd = open_terminal(vcname, O_RDWR|O_CLOEXEC); if (vcfd < 0) continue; -- cgit v1.2.1 From 38c888a4049438f2521edf38d55f937b53d17a9e Mon Sep 17 00:00:00 2001 From: Michal Sekletar Date: Fri, 11 Jan 2013 17:06:22 +0100 Subject: core: use correct argument of type JobResult --- src/core/job.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/job.c b/src/core/job.c index 5ff95f5c90..31ab11880e 100644 --- a/src/core/job.c +++ b/src/core/job.c @@ -821,7 +821,7 @@ int job_finish_and_invalidate(Job *j, JobResult result, bool recursive) { log_struct(LOG_NOTICE, "UNIT=%s", u->id, "JOB_TYPE=%s", job_type_to_string(t), - "JOB_RESULT=%s", job_result_to_string(t), + "JOB_RESULT=%s", job_result_to_string(result), "Job %s/%s failed with result '%s'.", u->id, job_type_to_string(t), -- cgit v1.2.1 From 0762eaa3272b8c6d900737d610c9314c8610ef75 Mon Sep 17 00:00:00 2001 From: Michal Sekletar Date: Fri, 11 Jan 2013 17:06:23 +0100 Subject: logind: remove unused variable --- src/login/logind-session.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/login/logind-session.c b/src/login/logind-session.c index b64a5d302d..b981e147c9 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -772,7 +772,6 @@ static int get_process_ctty_atime(pid_t pid, usec_t *atime) { } int session_get_idle_hint(Session *s, dual_timestamp *t) { - _cleanup_free_ char *p = NULL; usec_t atime = 0, n; int r; @@ -786,7 +785,7 @@ int session_get_idle_hint(Session *s, dual_timestamp *t) { return s->idle_hint; } - /* Graphical sessions really should really implement a real + /* Graphical sessions should really implement a real * idle hint logic */ if (s->display) goto dont_know; -- cgit v1.2.1 From 8e417f59b668b1e5cbf6c1ff305595a6ffe56fba Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 15 Jan 2013 20:50:18 +0100 Subject: update TODO --- TODO | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TODO b/TODO index 4704604c20..7338e0828c 100644 --- a/TODO +++ b/TODO @@ -19,6 +19,10 @@ F18: Features: +* logind: make PrepareForSuspend(false) an official api for notification of resumes + +* ExecStartPre= with an empty string should reset the list of commands to invoke + * refuse instantiation of proc.mount and mount units for all other API fs * "systemctl disable" on a static unit prints no message and does -- cgit v1.2.1 From 244692cbfb46df5ff79d07da8fb848a1165bd2fb Mon Sep 17 00:00:00 2001 From: David Herrmann Date: Sun, 13 Jan 2013 12:28:38 +0100 Subject: journalctl: quit on I/O error This makes journalctl quit on ferror() conditions on stdout. It fixes an annoying bug if you pipe its output through 'less' and press 'q'. Without this fix journalctl will continue reading all journal data until EOF which can take quite some time. For instance on my machine: david-nb ~ # time journalctl | wc -l 327240 real 1m13.039s user 1m0.217s sys 0m10.467s However, expected behavior is journalctl to quit when its pager closed the output pipe. Signed-off-by: David Herrmann --- src/journal/journalctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index a74d43be7f..45543a5013 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -1077,7 +1077,7 @@ int main(int argc, char *argv[]) { arg_catalog * OUTPUT_CATALOG; r = output_journal(stdout, j, arg_output, 0, flags); - if (r < 0) + if (r < 0 || ferror(stdout)) goto finish; need_seek = true; -- cgit v1.2.1 From 7d0c710d72f8a6e5c6909c65700aa088c53aebc6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Bartoszkiewicz?= Date: Sat, 12 Jan 2013 23:05:52 +0100 Subject: core: do not make sockets dependent on lo /sys/subsystem/net/devices/lo is never considered active, so sockets with BindToDevice=lo would never be activated. --- src/core/socket.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/socket.c b/src/core/socket.c index fcbcdbe192..d75504051b 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -308,7 +308,7 @@ static int socket_add_device_link(Socket *s) { assert(s); - if (!s->bind_to_device) + if (!s->bind_to_device || streq(s->bind_to_device, "lo")) return 0; if (asprintf(&t, "/sys/subsystem/net/devices/%s", s->bind_to_device) < 0) -- cgit v1.2.1 From 858c33bf6002bcdbea185ddedde8f8d660afc731 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 15 Jan 2013 21:37:17 +0100 Subject: load-fragment: replace specifiers in path unit's Unit= setting --- src/core/load-fragment.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 4d1154e408..d9f01a2fb6 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -1287,6 +1287,7 @@ int config_parse_path_unit( int r; DBusError error; Unit *u; + _cleanup_free_ char *p = NULL; assert(filename); assert(lvalue); @@ -1295,13 +1296,18 @@ int config_parse_path_unit( dbus_error_init(&error); - if (endswith(rvalue, ".path")) { - log_error("[%s:%u] Unit cannot be of type path, ignoring: %s", filename, line, rvalue); + p = unit_name_printf(u, rvalue); + if (!p) + return log_oom(); + + if (endswith(p, ".path")) { + log_error("[%s:%u] Unit cannot be of type path, ignoring: %s", filename, line, p); return 0; } - if ((r = manager_load_unit(UNIT(t)->manager, rvalue, NULL, &error, &u)) < 0) { - log_error("[%s:%u] Failed to load unit %s, ignoring: %s", filename, line, rvalue, bus_error(&error, r)); + r = manager_load_unit(UNIT(t)->manager, p, NULL, &error, &u); + if (r < 0) { + log_error("[%s:%u] Failed to load unit %s, ignoring: %s", filename, line, p, bus_error(&error, r)); dbus_error_free(&error); return 0; } -- cgit v1.2.1 From cd7409576d36baeb4ccc93471d3bd9d72a436d59 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 15 Jan 2013 21:45:37 +0100 Subject: load-fragment: fix bad memory access --- src/core/load-fragment.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index d9f01a2fb6..7b1e664511 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -1296,7 +1296,7 @@ int config_parse_path_unit( dbus_error_init(&error); - p = unit_name_printf(u, rvalue); + p = unit_name_printf(UNIT(t), rvalue); if (!p) return log_oom(); -- cgit v1.2.1 From ec76596cab6298ae1fb9d7cbe4ad56f175e87943 Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Tue, 15 Jan 2013 18:49:31 -0500 Subject: systemctl: fix assertion hit by incorrect comparison --- src/systemctl/systemctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 66d031dae8..7cf51dceb8 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -672,7 +672,7 @@ static int list_unit_files(DBusConnection *bus, char **args) { UnitFileList *u; const char *state; - assert(dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT); + assert(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_STRUCT); if (c >= n_units) { UnitFileList *w; -- cgit v1.2.1 From 0c08f5cde749bd2818475e487109cd0d413452df Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 16 Jan 2013 03:51:56 +0100 Subject: shutdown: in the final umount loop don't use MNT_FORCE MNT_FORCE is honoured by NFS and FUSE and allows unmounting of the FS even if consumers still use it. For our brute-force loop we rely on EBUSY being reported as long as a file system is still used by a loopback device or suchlike. Hence, drop MNT_FORCE to make EBUSY reliable. --- src/core/umount.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/umount.c b/src/core/umount.c index 96232d38db..c7b6cee079 100644 --- a/src/core/umount.c +++ b/src/core/umount.c @@ -442,9 +442,11 @@ static int mount_points_list_umount(MountPoint **head, bool *changed, bool log_e ) continue; - /* Trying to umount. Forcing to umount if busy (only for NFS mounts) */ + /* Trying to umount. We don't force here since we rely + * on busy NFS and FUSE file systems to return EBUSY + * until we closed everything on top of them. */ log_info("Unmounting %s.", m->path); - if (umount2(m->path, MNT_FORCE) == 0) { + if (umount2(m->path, 0) == 0) { if (changed) *changed = true; -- cgit v1.2.1 From 3f141375cb4ff4f850b267258e776c90df594990 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 16 Jan 2013 03:46:38 +0100 Subject: service: sysv - remove distribution specific targets Systemd should not introduce any new facilities. Distributions which still need to support their non-standard/legacy facilities should add them as patches to their packaging. The following facilities are no longer recognized: $x-display-manager $mail-transfer-agent $mail-transport-agent $mail-transfer-agent $smtp $null This target is no longer available: mail-transfer-agent.target --- Makefile.am | 1 - man/systemd.special.xml | 28 ---------------------------- src/core/service.c | 8 -------- src/core/special.h | 2 -- units/mail-transfer-agent.target | 13 ------------- 5 files changed, 52 deletions(-) delete mode 100644 units/mail-transfer-agent.target diff --git a/Makefile.am b/Makefile.am index 9c7267b064..b64e781372 100644 --- a/Makefile.am +++ b/Makefile.am @@ -259,7 +259,6 @@ dist_systemunit_DATA = \ units/network.target \ units/nss-lookup.target \ units/nss-user-lookup.target \ - units/mail-transfer-agent.target \ units/hibernate.target \ units/hybrid-sleep.target \ units/poweroff.target \ diff --git a/man/systemd.special.xml b/man/systemd.special.xml index 35c5a28a1b..fc625db80d 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -68,7 +68,6 @@ kexec.target, local-fs.target, local-fs-pre.target, - mail-transfer-agent.target, multi-user.target, network.target, nss-lookup.target, @@ -214,14 +213,6 @@ gdm.service or a similar display manager service. - systemd automatically - adds dependencies of type - After for this target unit to - all SysV init script service - units with a LSB header - referring to the - $x-display-manager - facility. @@ -367,25 +358,6 @@ all local mounts. - - mail-transfer-agent.target - - The mail transfer agent - (MTA) service. Usually this - should pull-in all units - necessary for - sending/receiving mails on the - local host. - - systemd automatically - adds dependencies of type - After for this target unit to - all SysV init script service - units with an LSB header - referring to the - $mail-transfer-agent. - - multi-user.target diff --git a/src/core/service.c b/src/core/service.c index 7eaac0dc4c..017d292a8b 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -359,13 +359,6 @@ static int sysv_translate_facility(const char *name, const char *filename, char "remote_fs", SPECIAL_REMOTE_FS_TARGET, "syslog", SPECIAL_SYSLOG_TARGET, "time", SPECIAL_TIME_SYNC_TARGET, - - /* common extensions */ - "mail-transfer-agent", SPECIAL_MAIL_TRANSFER_AGENT_TARGET, - "x-display-manager", SPECIAL_DISPLAY_MANAGER_SERVICE, - "null", NULL, - "mail-transport-agent", SPECIAL_MAIL_TRANSFER_AGENT_TARGET, - "smtp", SPECIAL_MAIL_TRANSFER_AGENT_TARGET, }; unsigned i; @@ -815,7 +808,6 @@ static int service_load_sysv_path(Service *s, const char *path) { } r = sysv_translate_facility(n, path_get_file_name(path), &m); - if (r < 0) { log_error_unit(u->id, "[%s:%u] Failed to translate LSB dependency %s, ignoring: %s", diff --git a/src/core/special.h b/src/core/special.h index ef72260ecd..626e816922 100644 --- a/src/core/special.h +++ b/src/core/special.h @@ -59,8 +59,6 @@ #define SPECIAL_RPCBIND_TARGET "rpcbind.target" /* LSB's $portmap */ #define SPECIAL_SYSLOG_TARGET "syslog.target" /* LSB's $syslog */ #define SPECIAL_TIME_SYNC_TARGET "time-sync.target" /* LSB's $time */ -#define SPECIAL_DISPLAY_MANAGER_SERVICE "display-manager.service" /* Common extension of LSB */ -#define SPECIAL_MAIL_TRANSFER_AGENT_TARGET "mail-transfer-agent.target" /* Common extension of LSB */ /* * Rules regarding adding further high level targets like the above: diff --git a/units/mail-transfer-agent.target b/units/mail-transfer-agent.target deleted file mode 100644 index d2f24d15b9..0000000000 --- a/units/mail-transfer-agent.target +++ /dev/null @@ -1,13 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -# This exists mostly for compatibility with SysV/LSB units, and -# implementations lacking socket/bus activation. - -[Unit] -Description=Mail Transfer Agent -Documentation=man:systemd.special(7) -- cgit v1.2.1 From 9795da43c4b70fea1eef798d4aeb0467d6fb5f68 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 16 Jan 2013 04:20:14 +0100 Subject: doc: disable "make check" for gtk-doc --- TODO | 1 + docs/gudev/Makefile.am | 4 ++-- docs/libudev/Makefile.am | 4 ++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/TODO b/TODO index 7338e0828c..bfd6700c03 100644 --- a/TODO +++ b/TODO @@ -18,6 +18,7 @@ F18: * Retest multi-seat Features: +* re-enable "make check" for gtk-doc (broken for unknown reason) * logind: make PrepareForSuspend(false) an official api for notification of resumes diff --git a/docs/gudev/Makefile.am b/docs/gudev/Makefile.am index 26c8652b0a..3a3a3e5d72 100644 --- a/docs/gudev/Makefile.am +++ b/docs/gudev/Makefile.am @@ -108,6 +108,6 @@ EXTRA_DIST += version.xml.in # Comment this out if you want your docs-status tested during 'make check' if ENABLE_GTK_DOC -TESTS_ENVIRONMENT = cd $(top_srcdir) -TESTS = $(GTKDOC_CHECK) +#TESTS_ENVIRONMENT = cd $(top_srcdir) +#TESTS = $(GTKDOC_CHECK) endif diff --git a/docs/libudev/Makefile.am b/docs/libudev/Makefile.am index 87196e8586..d96bac6b30 100644 --- a/docs/libudev/Makefile.am +++ b/docs/libudev/Makefile.am @@ -102,6 +102,6 @@ EXTRA_DIST += version.xml.in # Comment this out if you want your docs-status tested during 'make check' if ENABLE_GTK_DOC -TESTS_ENVIRONMENT = cd $(top_srcdir) -TESTS = $(GTKDOC_CHECK) +#TESTS_ENVIRONMENT = cd $(top_srcdir) +#TESTS = $(GTKDOC_CHECK) endif -- cgit v1.2.1 From 3a7b06c8a8856381810352dce3369ca20f3b9fc6 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 16 Jan 2013 04:22:46 +0100 Subject: TODO: update --- TODO | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TODO b/TODO index bfd6700c03..f8ea2368de 100644 --- a/TODO +++ b/TODO @@ -18,6 +18,9 @@ F18: * Retest multi-seat Features: +* turn unused sysv early-boot stuff like $local-fs, $syslog into a NOP. systemd does + no longer support sysv early-boot scripts, these facilities can be silently ignored + * re-enable "make check" for gtk-doc (broken for unknown reason) * logind: make PrepareForSuspend(false) an official api for notification of resumes -- cgit v1.2.1 From bdffb521d01a2e2bc342154d74cb519755c52c25 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 16 Jan 2013 04:35:54 +0100 Subject: shutdown: ignore loop devices without a backing file --- src/core/umount.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/core/umount.c b/src/core/umount.c index c7b6cee079..f0f2711295 100644 --- a/src/core/umount.c +++ b/src/core/umount.c @@ -233,6 +233,7 @@ static int loopback_list_get(MountPoint **head) { udev_list_entry_foreach(item, first) { MountPoint *lb; struct udev_device *d; + const char *backing; char *loop; const char *dn; @@ -241,6 +242,12 @@ static int loopback_list_get(MountPoint **head) { goto finish; } + backing = udev_device_get_sysattr_value(d, "loop/backing_file"); + if (!backing) { + udev_device_unref(d); + continue; + } + if (!(dn = udev_device_get_devnode(d))) { udev_device_unref(d); continue; -- cgit v1.2.1 From d3a3f22267a7dac426b07a7ed0baa1632f5daf04 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 16 Jan 2013 05:01:04 +0100 Subject: TODO: add autofs expire details --- TODO | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index f8ea2368de..f9279669d4 100644 --- a/TODO +++ b/TODO @@ -382,7 +382,16 @@ Features: * readahead: make use of EXT4_IOC_MOVE_EXT, as used by http://e4rat.sourceforge.net/ -* automount: implement expire +* automount: implement expire: + - set superblock timeout AUTOFS_DEV_IOCTL_TIMEOUT_CMD + - periodically run AUTOFS_DEV_IOCTL_EXPIRE_CMD + - every timeout/4 (original autofs logic) + - blocking, needs a thread + - run until -EAGAIN + - receive expire packet on pipe if kernel tells the timeout is over + - call umount + - answer expire packet on pipe with AUTOFS_DEV_IOCTL_{READY,FAIL}_CMD + - AUTOFS_DEV_IOCTL_EXPIRE_CMD returns * services which create their own subcgroups break cgroup-empty notification (needs to be fixed in the kernel) -- cgit v1.2.1 From 2d19f95caef8668aeb5c05a18b39c6b79f710856 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 16 Jan 2013 05:02:53 +0100 Subject: TODO: Fedora 19 - /var/log/journal/ --- TODO | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index f9279669d4..0c9bc08908 100644 --- a/TODO +++ b/TODO @@ -13,10 +13,11 @@ Bugfixes: * properly handle .mount unit state tracking when two mount points are stacked one on top of another on the exact same mount point. -F18: - +Fedora 19: * Retest multi-seat +* create /var/log/journal/ + Features: * turn unused sysv early-boot stuff like $local-fs, $syslog into a NOP. systemd does no longer support sysv early-boot scripts, these facilities can be silently ignored -- cgit v1.2.1 From c29e06468cec7fac42b4a9b4ff735330d1ce71b5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 16 Jan 2013 17:57:08 +0100 Subject: man: document logind's IdleAction= and IdleActionSec= --- man/logind.conf.xml | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/man/logind.conf.xml b/man/logind.conf.xml index df15d51b5f..b602e2a5f5 100644 --- a/man/logind.conf.xml +++ b/man/logind.conf.xml @@ -141,6 +141,44 @@ no. + + IdleAction= + + Configures the action + to take when the system is idle. Takes + one of ignore, + poweroff, + reboot, + halt, + kexec, + suspend, + hibernate, + hybrid-sleep, + lock. Defaults to + ignore. + + Note that this requires that + user sessions correctly report the + idle status to the system. The system + will execute the action after all + sessions reported that they are idle, + and no idle inhibitor lock is active, + and subsquently the time configured + with IdleActionSec= + (see below) has passed. + + + + + IdleActionSec= + + Configures the delay + after which the action configured in + IdleAction= (see + above) is taken after the system is + idle. + + KillOnlyUsers= KillExcludeUsers= -- cgit v1.2.1 From 2e72983463fc0b95f5aac3528334848e8d1d0744 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 15 Jan 2013 15:02:00 -0500 Subject: logs-show: automatic cleanup --- src/shared/logs-show.c | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 04450a5504..c221af3de5 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -277,7 +277,7 @@ static int output_short( } else if ((flags & OUTPUT_FULL_WIDTH) || (message_len + n + 1 < n_columns)) fprintf(f, ": %s%.*s%s\n", color_on, (int) message_len, message, color_off); else if (n < n_columns && n_columns - n - 2 >= 3) { - char *e; + char _cleanup_free_ *e; e = ellipsize_mem(message, message_len, n_columns - n - 2, 90); @@ -285,8 +285,6 @@ static int output_short( fprintf(f, ": %s%.*s%s\n", color_on, (int) message_len, message, color_off); else fprintf(f, ": %s%s%s\n", color_on, e, color_off); - - free(e); } else fputs("\n", f); @@ -305,7 +303,7 @@ static int output_verbose( const void *data; size_t length; - char *cursor; + char _cleanup_free_ *cursor = NULL; uint64_t realtime; char ts[FORMAT_TIMESTAMP_MAX]; int r; @@ -331,8 +329,6 @@ static int output_verbose( format_timestamp(ts, sizeof(ts), realtime), cursor); - free(cursor); - SD_JOURNAL_FOREACH_DATA(j, data, length) { if (!shall_print(data, length, flags)) { const char *c; @@ -369,7 +365,7 @@ static int output_export( char sid[33]; int r; usec_t realtime, monotonic; - char *cursor; + char _cleanup_free_ *cursor = NULL; const void *data; size_t length; @@ -405,8 +401,6 @@ static int output_export( (unsigned long long) monotonic, sd_id128_to_string(boot_id, sid)); - free(cursor); - SD_JOURNAL_FOREACH_DATA(j, data, length) { /* We already printed the boot id, from the data in @@ -500,11 +494,11 @@ static int output_json( OutputFlags flags) { uint64_t realtime, monotonic; - char *cursor, *k; + char _cleanup_free_ *cursor = NULL; const void *data; size_t length; sd_id128_t boot_id; - char sid[33]; + char sid[33], *k; int r; Hashmap *h = NULL; bool done, separator; @@ -556,7 +550,6 @@ static int output_json( (unsigned long long) monotonic, sd_id128_to_string(boot_id, sid)); } - free(cursor); h = hashmap_new(string_hash_func, string_compare_func); if (!h) -- cgit v1.2.1 From 9bdbc2e2ec523dbefe1c1c7e164b5544aff0b185 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Mon, 14 Jan 2013 18:16:50 +0100 Subject: systemctl,loginctl,cgls: do not ellipsize cgroup members when --full is specified New file output.h with output flags and modes. --full parameter also for cgls and loginctl. Include 'all' parameter in flags (show_cgroup_by_path, show_cgroup, show_cgroup_and_extra, show_cgroup_and_extra_by_spec). get_process_cmdline with max_length == 0 will not ellipsize output. Replace LINE_MAX with 0 in some calls of get_process_cmdline. [zj: Default to --full when under pager for clgs. Drop '-f' since it wasn't documented and didn't actually work. Reindent a bit. ] --- Makefile.am | 3 +- man/loginctl.xml | 7 ++++ man/systemctl.xml | 2 +- man/systemd-cgls.xml | 8 +++++ src/cgls/cgls.c | 34 +++++++++++++++---- src/core/selinux-access.c | 4 +-- src/journal/coredump.c | 2 +- src/journal/journald-server.c | 2 +- src/login/loginctl.c | 24 +++++++++++-- src/shared/cgroup-show.c | 49 ++++++++++++++------------- src/shared/cgroup-show.h | 10 +++--- src/shared/logs-show.h | 23 +------------ src/shared/output-mode.h | 44 ++++++++++++++++++++++++ src/shared/util.c | 78 +++++++++++++++++++++++++------------------ src/systemctl/systemctl.c | 14 ++++---- 15 files changed, 201 insertions(+), 103 deletions(-) create mode 100644 src/shared/output-mode.h diff --git a/Makefile.am b/Makefile.am index b64e781372..5692077b34 100644 --- a/Makefile.am +++ b/Makefile.am @@ -803,7 +803,8 @@ libsystemd_shared_la_SOURCES = \ src/shared/time-dst.c \ src/shared/time-dst.h \ src/shared/calendarspec.c \ - src/shared/calendarspec.h + src/shared/calendarspec.h \ + src/shared/output-mode.h libsystemd_shared_la_LIBADD = libsystemd-daemon.la diff --git a/man/loginctl.xml b/man/loginctl.xml index 5dbc1f6967..8a20d18cfa 100644 --- a/man/loginctl.xml +++ b/man/loginctl.xml @@ -110,6 +110,13 @@ set or not. + + + + Do not ellipsize cgroup + members. + + diff --git a/man/systemctl.xml b/man/systemctl.xml index 2f33e0c9e2..48c5a1c738 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -156,7 +156,7 @@ Do not ellipsize unit - names and truncate unit descriptions + names, cgroup members, and truncate unit descriptions in the output of list-units and list-jobs. diff --git a/man/systemd-cgls.xml b/man/systemd-cgls.xml index 4b6ee93b4e..b280b87e6d 100644 --- a/man/systemd-cgls.xml +++ b/man/systemd-cgls.xml @@ -110,6 +110,14 @@ output. + + + + Do not ellipsize cgroup + members. + + + diff --git a/src/cgls/cgls.c b/src/cgls/cgls.c index cfb728bb80..a05f9795be 100644 --- a/src/cgls/cgls.c +++ b/src/cgls/cgls.c @@ -33,10 +33,12 @@ #include "util.h" #include "pager.h" #include "build.h" +#include "output-mode.h" static bool arg_no_pager = false; static bool arg_kernel_threads = false; static bool arg_all = false; +static int arg_full = -1; static void help(void) { @@ -46,6 +48,7 @@ static void help(void) { " --version Show package version\n" " --no-pager Do not pipe output into a pager\n" " -a --all Show all groups, including empty\n" + " --full Do not ellipsize output\n" " -k Include kernel threads in output\n", program_invocation_short_name); } @@ -54,7 +57,8 @@ static int parse_argv(int argc, char *argv[]) { enum { ARG_NO_PAGER = 0x100, - ARG_VERSION + ARG_VERSION, + ARG_FULL, }; static const struct option options[] = { @@ -62,6 +66,7 @@ static int parse_argv(int argc, char *argv[]) { { "version", no_argument, NULL, ARG_VERSION }, { "no-pager", no_argument, NULL, ARG_NO_PAGER }, { "all", no_argument, NULL, 'a' }, + { "full", no_argument, NULL, ARG_FULL }, { NULL, 0, NULL, 0 } }; @@ -91,6 +96,10 @@ static int parse_argv(int argc, char *argv[]) { arg_all = true; break; + case ARG_FULL: + arg_full = true; + break; + case 'k': arg_kernel_threads = true; break; @@ -109,6 +118,7 @@ static int parse_argv(int argc, char *argv[]) { int main(int argc, char *argv[]) { int r = 0, retval = EXIT_FAILURE; + int output_flags; log_parse_environment(); log_open(); @@ -121,8 +131,17 @@ int main(int argc, char *argv[]) { goto finish; } - if (!arg_no_pager) - pager_open(); + if (!arg_no_pager) { + r = pager_open(); + if (r > 0) { + if (arg_full == -1) + arg_full = true; + } + } + + output_flags = + arg_all * OUTPUT_SHOW_ALL | + (arg_full > 0) * OUTPUT_FULL_WIDTH; if (optind < argc) { unsigned i; @@ -131,7 +150,8 @@ int main(int argc, char *argv[]) { int q; printf("%s:\n", argv[i]); - q = show_cgroup_by_path(argv[i], NULL, 0, arg_kernel_threads, arg_all); + q = show_cgroup_by_path(argv[i], NULL, 0, + arg_kernel_threads, output_flags); if (q < 0) r = q; } @@ -147,7 +167,8 @@ int main(int argc, char *argv[]) { if (path_startswith(p, "/sys/fs/cgroup")) { printf("Working Directory %s:\n", p); - r = show_cgroup_by_path(p, NULL, 0, arg_kernel_threads, arg_all); + r = show_cgroup_by_path(p, NULL, 0, + arg_kernel_threads, output_flags); } else { char _cleanup_free_ *root = NULL; const char *t = NULL; @@ -162,7 +183,8 @@ int main(int argc, char *argv[]) { t = root[0] ? root : "/"; } - r = show_cgroup(SYSTEMD_CGROUP_CONTROLLER, t, NULL, 0, arg_kernel_threads, arg_all); + r = show_cgroup(SYSTEMD_CGROUP_CONTROLLER, t, NULL, 0, + arg_kernel_threads, output_flags); } } diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c index 6dfe8b45f3..b933698469 100644 --- a/src/core/selinux-access.c +++ b/src/core/selinux-access.c @@ -134,7 +134,7 @@ static int bus_get_audit_data( if (r < 0) return r; - r = get_process_cmdline(pid, LINE_MAX, true, &audit->cmdline); + r = get_process_cmdline(pid, 0, true, &audit->cmdline); if (r < 0) return r; @@ -280,7 +280,7 @@ static int get_audit_data( if (r < 0) return r; - r = get_process_cmdline(ucred.pid, LINE_MAX, true, &audit->cmdline); + r = get_process_cmdline(ucred.pid, 0, true, &audit->cmdline); if (r < 0) return r; diff --git a/src/journal/coredump.c b/src/journal/coredump.c index a507fc65f8..c989be9b82 100644 --- a/src/journal/coredump.c +++ b/src/journal/coredump.c @@ -205,7 +205,7 @@ int main(int argc, char* argv[]) { IOVEC_SET_STRING(iovec[j++], core_exe); } - if (get_process_cmdline(pid, LINE_MAX, false, &t) >= 0) { + if (get_process_cmdline(pid, 0, false, &t) >= 0) { core_cmdline = strappend("COREDUMP_CMDLINE=", t); free(t); diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 60e5a913a7..ec9be65575 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -556,7 +556,7 @@ static void dispatch_message_real( IOVEC_SET_STRING(iovec[n++], exe); } - r = get_process_cmdline(ucred->pid, LINE_MAX, false, &t); + r = get_process_cmdline(ucred->pid, 0, false, &t); if (r >= 0) { cmdline = strappend("_CMDLINE=", t); free(t); diff --git a/src/login/loginctl.c b/src/login/loginctl.c index e2b33a626c..0e57e0828e 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -40,6 +40,7 @@ static char **arg_property = NULL; static bool arg_all = false; +static bool arg_full = false; static bool arg_no_pager = false; static const char *arg_kill_who = NULL; static int arg_signal = SIGTERM; @@ -402,6 +403,9 @@ static void print_session_status_info(SessionStatusInfo *i) { if (i->default_control_group) { unsigned c; + int output_flags = + arg_all * OUTPUT_SHOW_ALL | + arg_full * OUTPUT_FULL_WIDTH; printf("\t CGroup: %s\n", i->default_control_group); @@ -412,7 +416,10 @@ static void print_session_status_info(SessionStatusInfo *i) { else c = 0; - show_cgroup_and_extra_by_spec(i->default_control_group, "\t\t ", c, false, arg_all, &i->leader, i->leader > 0 ? 1 : 0); + show_cgroup_and_extra_by_spec(i->default_control_group, + "\t\t ", c, false, &i->leader, + i->leader > 0 ? 1 : 0, + output_flags); } } } @@ -454,6 +461,9 @@ static void print_user_status_info(UserStatusInfo *i) { if (i->default_control_group) { unsigned c; + int output_flags = + arg_all * OUTPUT_SHOW_ALL | + arg_full * OUTPUT_FULL_WIDTH; printf("\t CGroup: %s\n", i->default_control_group); @@ -464,7 +474,8 @@ static void print_user_status_info(UserStatusInfo *i) { else c = 0; - show_cgroup_by_path(i->default_control_group, "\t\t ", c, false, arg_all); + show_cgroup_by_path(i->default_control_group, "\t\t ", + c, false, output_flags); } } } @@ -1323,6 +1334,7 @@ static int help(void) { " -p --property=NAME Show only properties by this name\n" " -a --all Show all properties, including empty ones\n" " --kill-who=WHO Who to send signal to\n" + " --full Do not ellipsize output\n" " -s --signal=SIGNAL Which signal to send\n" " --no-ask-password Don't prompt for password\n" " -H --host=[USER@]HOST Show information for remote host\n" @@ -1362,7 +1374,8 @@ static int parse_argv(int argc, char *argv[]) { ARG_VERSION = 0x100, ARG_NO_PAGER, ARG_KILL_WHO, - ARG_NO_ASK_PASSWORD + ARG_NO_ASK_PASSWORD, + ARG_FULL, }; static const struct option options[] = { @@ -1376,6 +1389,7 @@ static int parse_argv(int argc, char *argv[]) { { "host", required_argument, NULL, 'H' }, { "privileged", no_argument, NULL, 'P' }, { "no-ask-password", no_argument, NULL, ARG_NO_ASK_PASSWORD }, + { "full", no_argument, NULL, ARG_FULL }, { NULL, 0, NULL, 0 } }; @@ -1447,6 +1461,10 @@ static int parse_argv(int argc, char *argv[]) { arg_host = optarg; break; + case ARG_FULL: + arg_full = true; + break; + case '?': return -EINVAL; diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c index 2b79f370f9..2f2669f828 100644 --- a/src/shared/cgroup-show.c +++ b/src/shared/cgroup-show.c @@ -51,7 +51,7 @@ static unsigned ilog10(unsigned long ul) { return n; } -static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsigned n_columns, bool extra, bool more, bool kernel_threads) { +static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsigned n_columns, bool extra, bool more, bool kernel_threads, OutputFlags flags) { unsigned i, m, pid_width; pid_t biggest = 0; @@ -76,11 +76,14 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi /* And sort */ qsort(pids, n_pids, sizeof(pid_t), compare); - if (n_columns > pid_width+2) - n_columns -= pid_width+2; - else - n_columns = 20; - + if(flags & OUTPUT_FULL_WIDTH) + n_columns = 0; + else { + if (n_columns > pid_width+2) + n_columns -= pid_width+2; + else + n_columns = 20; + } for (i = 0; i < n_pids; i++) { char *t = NULL; @@ -99,7 +102,7 @@ static void show_pid_array(int pids[], unsigned n_pids, const char *prefix, unsi } -static int show_cgroup_one_by_path(const char *path, const char *prefix, unsigned n_columns, bool more, bool kernel_threads) { +static int show_cgroup_one_by_path(const char *path, const char *prefix, unsigned n_columns, bool more, bool kernel_threads, OutputFlags flags) { char *fn; FILE *f; size_t n = 0, n_allocated = 0; @@ -149,7 +152,7 @@ static int show_cgroup_one_by_path(const char *path, const char *prefix, unsigne goto finish; if (n > 0) - show_pid_array(pids, n, prefix, n_columns, false, more, kernel_threads); + show_pid_array(pids, n, prefix, n_columns, false, more, kernel_threads, flags); r = 0; @@ -162,7 +165,7 @@ finish: return r; } -int show_cgroup_by_path(const char *path, const char *prefix, unsigned n_columns, bool kernel_threads, bool all) { +int show_cgroup_by_path(const char *path, const char *prefix, unsigned n_columns, bool kernel_threads, OutputFlags flags) { DIR *d; char *last = NULL; char *p1 = NULL, *p2 = NULL, *fn = NULL, *gn = NULL; @@ -197,13 +200,13 @@ int show_cgroup_by_path(const char *path, const char *prefix, unsigned n_columns goto finish; } - if (!all && cg_is_empty_recursive(NULL, k, false) > 0) { + if (!(flags & OUTPUT_SHOW_ALL) && cg_is_empty_recursive(NULL, k, false) > 0) { free(k); continue; } if (!shown_pids) { - show_cgroup_one_by_path(path, prefix, n_columns, true, kernel_threads); + show_cgroup_one_by_path(path, prefix, n_columns, true, kernel_threads, flags); shown_pids = true; } @@ -220,7 +223,7 @@ int show_cgroup_by_path(const char *path, const char *prefix, unsigned n_columns } } - show_cgroup_by_path(last, p1, n_columns-2, kernel_threads, all); + show_cgroup_by_path(last, p1, n_columns-2, kernel_threads, flags); free(last); } @@ -231,7 +234,7 @@ int show_cgroup_by_path(const char *path, const char *prefix, unsigned n_columns goto finish; if (!shown_pids) - show_cgroup_one_by_path(path, prefix, n_columns, !!last, kernel_threads); + show_cgroup_one_by_path(path, prefix, n_columns, !!last, kernel_threads, flags); if (last) { printf("%s%s%s\n", prefix, draw_special_char(DRAW_TREE_RIGHT), @@ -245,7 +248,7 @@ int show_cgroup_by_path(const char *path, const char *prefix, unsigned n_columns } } - show_cgroup_by_path(last, p2, n_columns-2, kernel_threads, all); + show_cgroup_by_path(last, p2, n_columns-2, kernel_threads, flags); } r = 0; @@ -261,7 +264,7 @@ finish: return r; } -int show_cgroup(const char *controller, const char *path, const char *prefix, unsigned n_columns, bool kernel_threads, bool all) { +int show_cgroup(const char *controller, const char *path, const char *prefix, unsigned n_columns, bool kernel_threads, OutputFlags flags) { char *p; int r; @@ -272,13 +275,13 @@ int show_cgroup(const char *controller, const char *path, const char *prefix, un if (r < 0) return r; - r = show_cgroup_by_path(p, prefix, n_columns, kernel_threads, all); + r = show_cgroup_by_path(p, prefix, n_columns, kernel_threads, flags); free(p); return r; } -static int show_extra_pids(const char *controller, const char *path, const char *prefix, unsigned n_columns, const pid_t pids[], unsigned n_pids) { +static int show_extra_pids(const char *controller, const char *path, const char *prefix, unsigned n_columns, const pid_t pids[], unsigned n_pids, OutputFlags flags) { pid_t *copy; unsigned i, j; int r; @@ -314,26 +317,26 @@ static int show_extra_pids(const char *controller, const char *path, const char copy[j++] = pids[i]; } - show_pid_array(copy, j, prefix, n_columns, true, false, false); + show_pid_array(copy, j, prefix, n_columns, true, false, false, flags); free(copy); return 0; } -int show_cgroup_and_extra(const char *controller, const char *path, const char *prefix, unsigned n_columns, bool kernel_threads, bool all, const pid_t extra_pids[], unsigned n_extra_pids) { +int show_cgroup_and_extra(const char *controller, const char *path, const char *prefix, unsigned n_columns, bool kernel_threads, const pid_t extra_pids[], unsigned n_extra_pids, OutputFlags flags) { int r; assert(controller); assert(path); - r = show_cgroup(controller, path, prefix, n_columns, kernel_threads, all); + r = show_cgroup(controller, path, prefix, n_columns, kernel_threads, flags); if (r < 0) return r; - return show_extra_pids(controller, path, prefix, n_columns, extra_pids, n_extra_pids); + return show_extra_pids(controller, path, prefix, n_columns, extra_pids, n_extra_pids, flags); } -int show_cgroup_and_extra_by_spec(const char *spec, const char *prefix, unsigned n_columns, bool kernel_threads, bool all, const pid_t extra_pids[], unsigned n_extra_pids) { +int show_cgroup_and_extra_by_spec(const char *spec, const char *prefix, unsigned n_columns, bool kernel_threads, const pid_t extra_pids[], unsigned n_extra_pids, OutputFlags flags) { int r; _cleanup_free_ char *controller = NULL, *path = NULL; @@ -343,5 +346,5 @@ int show_cgroup_and_extra_by_spec(const char *spec, const char *prefix, unsigned if (r < 0) return r; - return show_cgroup_and_extra(controller, path, prefix, n_columns, kernel_threads, all, extra_pids, n_extra_pids); + return show_cgroup_and_extra(controller, path, prefix, n_columns, kernel_threads, extra_pids, n_extra_pids, flags); } diff --git a/src/shared/cgroup-show.h b/src/shared/cgroup-show.h index dba900a153..72bc8a650f 100644 --- a/src/shared/cgroup-show.h +++ b/src/shared/cgroup-show.h @@ -24,11 +24,13 @@ #include #include +#include "util.h" +#include "logs-show.h" -int show_cgroup_by_path(const char *path, const char *prefix, unsigned columns, bool kernel_threads, bool all); -int show_cgroup(const char *controller, const char *path, const char *prefix, unsigned columns, bool kernel_threads, bool all); +int show_cgroup_by_path(const char *path, const char *prefix, unsigned columns, bool kernel_threads, OutputFlags flags); +int show_cgroup(const char *controller, const char *path, const char *prefix, unsigned columns, bool kernel_threads, OutputFlags flags); -int show_cgroup_and_extra_by_spec(const char *spec, const char *prefix, unsigned n_columns, bool kernel_threads, bool all, const pid_t extra_pids[], unsigned n_extra_pids); -int show_cgroup_and_extra(const char *controller, const char *path, const char *prefix, unsigned n_columns, bool kernel_threads, bool all, const pid_t extra_pids[], unsigned n_extra_pids); +int show_cgroup_and_extra_by_spec(const char *spec, const char *prefix, unsigned n_columns, bool kernel_threads, const pid_t extra_pids[], unsigned n_extra_pids, OutputFlags flags); +int show_cgroup_and_extra(const char *controller, const char *path, const char *prefix, unsigned n_columns, bool kernel_threads, const pid_t extra_pids[], unsigned n_extra_pids, OutputFlags flags); #endif diff --git a/src/shared/logs-show.h b/src/shared/logs-show.h index 11cb41aab3..6c32aa7a72 100644 --- a/src/shared/logs-show.h +++ b/src/shared/logs-show.h @@ -26,28 +26,7 @@ #include #include "util.h" - -typedef enum OutputMode { - OUTPUT_SHORT, - OUTPUT_SHORT_MONOTONIC, - OUTPUT_VERBOSE, - OUTPUT_EXPORT, - OUTPUT_JSON, - OUTPUT_JSON_PRETTY, - OUTPUT_JSON_SSE, - OUTPUT_CAT, - _OUTPUT_MODE_MAX, - _OUTPUT_MODE_INVALID = -1 -} OutputMode; - -typedef enum OutputFlags { - OUTPUT_SHOW_ALL = 1 << 0, - OUTPUT_FOLLOW = 1 << 1, - OUTPUT_WARN_CUTOFF = 1 << 2, - OUTPUT_FULL_WIDTH = 1 << 3, - OUTPUT_COLOR = 1 << 4, - OUTPUT_CATALOG = 1 << 5 -} OutputFlags; +#include "output-mode.h" int output_journal( FILE *f, diff --git a/src/shared/output-mode.h b/src/shared/output-mode.h new file mode 100644 index 0000000000..0efd430c5d --- /dev/null +++ b/src/shared/output-mode.h @@ -0,0 +1,44 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +typedef enum OutputMode { + OUTPUT_SHORT, + OUTPUT_SHORT_MONOTONIC, + OUTPUT_VERBOSE, + OUTPUT_EXPORT, + OUTPUT_JSON, + OUTPUT_JSON_PRETTY, + OUTPUT_JSON_SSE, + OUTPUT_CAT, + _OUTPUT_MODE_MAX, + _OUTPUT_MODE_INVALID = -1 +} OutputMode; + +typedef enum OutputFlags { + OUTPUT_SHOW_ALL = 1 << 0, + OUTPUT_FOLLOW = 1 << 1, + OUTPUT_WARN_CUTOFF = 1 << 2, + OUTPUT_FULL_WIDTH = 1 << 3, + OUTPUT_COLOR = 1 << 4, + OUTPUT_CATALOG = 1 << 5 +} OutputFlags; diff --git a/src/shared/util.c b/src/shared/util.c index a87828d451..0161f3e957 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -905,13 +905,10 @@ int get_process_comm(pid_t pid, char **name) { } int get_process_cmdline(pid_t pid, size_t max_length, bool comm_fallback, char **line) { - char *r, *k; + char *r = NULL, *k; int c; - bool space = false; - size_t left; FILE *f; - assert(max_length > 0); assert(line); if (pid == 0) @@ -927,47 +924,64 @@ int get_process_cmdline(pid_t pid, size_t max_length, bool comm_fallback, char * if (!f) return -errno; + if (max_length == 0) { + size_t len = 1; + while ((c = getc(f)) != EOF) { + k = realloc(r, len+1); + if (k == NULL) { + free(r); + fclose(f); + return -ENOMEM; + } + r = k; + r[len-1] = isprint(c) ? c : ' '; + r[len] = 0; + len++; + } + } else { + bool space = false; + size_t left; + r = new(char, max_length); + if (!r) { + fclose(f); + return -ENOMEM; + } - r = new(char, max_length); - if (!r) { - fclose(f); - return -ENOMEM; - } + k = r; + left = max_length; + while ((c = getc(f)) != EOF) { + + if (isprint(c)) { + if (space) { + if (left <= 4) + break; - k = r; - left = max_length; - while ((c = getc(f)) != EOF) { + *(k++) = ' '; + left--; + space = false; + } - if (isprint(c)) { - if (space) { if (left <= 4) break; - *(k++) = ' '; + *(k++) = (char) c; left--; - space = false; - } - - if (left <= 4) - break; + } else + space = true; + } - *(k++) = (char) c; - left--; - } else - space = true; + if (left <= 4) { + size_t n = MIN(left-1, 3U); + memcpy(k, "...", n); + k[n] = 0; + } else + *k = 0; } - if (left <= 4) { - size_t n = MIN(left-1, 3U); - memcpy(k, "...", n); - k[n] = 0; - } else - *k = 0; - fclose(f); /* Kernel threads have no argv[] */ - if (r[0] == 0) { + if (r == NULL || r[0] == 0) { char *t; int h; diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 7cf51dceb8..a2ad0deb5a 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -2231,6 +2231,12 @@ static void print_status_info(UnitStatusInfo *i) { char since1[FORMAT_TIMESTAMP_RELATIVE_MAX], *s1; char since2[FORMAT_TIMESTAMP_MAX], *s2; const char *path; + int flags = + arg_all * OUTPUT_SHOW_ALL | + (!on_tty() || pager_have()) * OUTPUT_FULL_WIDTH | + on_tty() * OUTPUT_COLOR | + !arg_quiet * OUTPUT_WARN_CUTOFF | + arg_full * OUTPUT_FULL_WIDTH; assert(i); @@ -2454,17 +2460,11 @@ static void print_status_info(UnitStatusInfo *i) { if (i->control_pid > 0) extra[k++] = i->control_pid; - show_cgroup_and_extra_by_spec(i->default_control_group, "\t\t ", c, false, arg_all, extra, k); + show_cgroup_and_extra_by_spec(i->default_control_group, "\t\t ", c, false, extra, k, flags); } } if (i->id && arg_transport != TRANSPORT_SSH) { - int flags = - arg_all * OUTPUT_SHOW_ALL | - (!on_tty() || pager_have()) * OUTPUT_FULL_WIDTH | - on_tty() * OUTPUT_COLOR | - !arg_quiet * OUTPUT_WARN_CUTOFF; - printf("\n"); show_journal_by_unit(stdout, i->id, -- cgit v1.2.1 From a485210ce73fe1186fdc5fae481dc31773e14b3c Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Wed, 16 Jan 2013 21:01:30 +0100 Subject: man: typo fixes --- man/sd_session_is_active.xml | 4 ++-- man/systemd.special.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/man/sd_session_is_active.xml b/man/sd_session_is_active.xml index ab48b9efc2..1fa7457f78 100644 --- a/man/sd_session_is_active.xml +++ b/man/sd_session_is_active.xml @@ -188,7 +188,7 @@ sd_session_get_display() may be used to determine the X11 display of the session identified by the specified session - identifier. The returned string is one of needs to be + identifier. The returned string needs to be freed with the libc free3 call after use. @@ -196,7 +196,7 @@ sd_session_get_tty() may be used to determine the TTY device of the session identified by the specified session - identifier. The returned string is one of needs to be + identifier. The returned string needs to be freed with the libc free3 call after use. diff --git a/man/systemd.special.xml b/man/systemd.special.xml index fc625db80d..81374c2ade 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -389,7 +389,7 @@ This unit is supposed to indicate when the network is "up", but it is only very - losely defined what that is + loosely defined what that is supposed to mean. Also see Running Services After the Network is -- cgit v1.2.1 From 5d4caf565471ff3401bd9b53aa814c8545a18a93 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 16 Jan 2013 21:09:03 +0100 Subject: service: ignore dependencies on $syslog and $local_fs in LSB scripts We no longer allow early-boot init scripts, however in late boot the syslog socket and local mounts are established anyway, so let's simplify our dep graph a bit. If $syslog doesn't resolve to syslog.target anymore there's no reason to keep syslog.target around anymore. Let's remove it. Note that many 3rd party service unit files order themselves after syslog.target. These will be dangling dependencies now, which should be unproblematic, however. --- Makefile.am | 1 - man/systemd.special.xml | 23 ----------------------- src/core/service.c | 16 +++++++--------- src/core/special.h | 3 +-- units/syslog.socket | 5 +---- units/syslog.target | 19 ------------------- units/systemd-journald.socket | 2 +- 7 files changed, 10 insertions(+), 59 deletions(-) delete mode 100644 units/syslog.target diff --git a/Makefile.am b/Makefile.am index 5692077b34..db68522bf6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -291,7 +291,6 @@ dist_systemunit_DATA = \ units/quotaon.service \ units/systemd-ask-password-wall.path \ units/systemd-ask-password-console.path \ - units/syslog.target \ units/systemd-udevd-control.socket \ units/systemd-udevd-kernel.socket \ units/system-update.target diff --git a/man/systemd.special.xml b/man/systemd.special.xml index 81374c2ade..6acba91428 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -93,7 +93,6 @@ swap.target, sysinit.target, syslog.socket, - syslog.target, system-update.target, time-sync.target, umount.target @@ -335,15 +334,6 @@ and mount options set. - - systemd automatically - adds dependencies of type - After for this target unit to - all SysV init script service - units with an LSB header - referring to the - $local_fs - facility. @@ -679,19 +669,6 @@ document. - - syslog.target - - systemd automatically - adds dependencies of type - After for this target unit to - all SysV init script service - units with an LSB header - referring to the - $syslog - facility. - - system-update.target diff --git a/src/core/service.c b/src/core/service.c index 017d292a8b..ebd0baea89 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -322,7 +322,8 @@ static void service_done(Unit *u) { static char *sysv_translate_name(const char *name) { char *r; - if (!(r = new(char, strlen(name) + sizeof(".service")))) + r = new(char, strlen(name) + sizeof(".service")); + if (!r) return NULL; if (endswith(name, ".sh")) @@ -348,16 +349,12 @@ static int sysv_translate_facility(const char *name, const char *filename, char static const char * const table[] = { /* LSB defined facilities */ - "local_fs", SPECIAL_LOCAL_FS_TARGET, - /* Due to unfortunate name selection in Mandriva, - * $network is provided by network-up which is ordered - * after network which actually starts interfaces. - * To break the loop, just ignore it */ + "local_fs", NULL, "network", SPECIAL_NETWORK_TARGET, "named", SPECIAL_NSS_LOOKUP_TARGET, "portmap", SPECIAL_RPCBIND_TARGET, "remote_fs", SPECIAL_REMOTE_FS_TARGET, - "syslog", SPECIAL_SYSLOG_TARGET, + "syslog", NULL, "time", SPECIAL_TIME_SYNC_TARGET, }; @@ -378,8 +375,9 @@ static int sysv_translate_facility(const char *name, const char *filename, char if (!table[i+1]) return 0; - if (!(r = strdup(table[i+1]))) - return -ENOMEM; + r = strdup(table[i+1]); + if (!r) + return log_oom(); goto finish; } diff --git a/src/core/special.h b/src/core/special.h index 626e816922..99c0e1222e 100644 --- a/src/core/special.h +++ b/src/core/special.h @@ -46,7 +46,7 @@ /* Early boot targets */ #define SPECIAL_SYSINIT_TARGET "sysinit.target" #define SPECIAL_SOCKETS_TARGET "sockets.target" -#define SPECIAL_LOCAL_FS_TARGET "local-fs.target" /* LSB's $local_fs */ +#define SPECIAL_LOCAL_FS_TARGET "local-fs.target" #define SPECIAL_LOCAL_FS_PRE_TARGET "local-fs-pre.target" #define SPECIAL_REMOTE_FS_TARGET "remote-fs.target" /* LSB's $remote_fs */ #define SPECIAL_REMOTE_FS_PRE_TARGET "remote-fs-pre.target" @@ -57,7 +57,6 @@ #define SPECIAL_NETWORK_TARGET "network.target" /* LSB's $network */ #define SPECIAL_NSS_LOOKUP_TARGET "nss-lookup.target" /* LSB's $named */ #define SPECIAL_RPCBIND_TARGET "rpcbind.target" /* LSB's $portmap */ -#define SPECIAL_SYSLOG_TARGET "syslog.target" /* LSB's $syslog */ #define SPECIAL_TIME_SYNC_TARGET "time-sync.target" /* LSB's $time */ /* diff --git a/units/syslog.socket b/units/syslog.socket index c784357627..e6e9cf8525 100644 --- a/units/syslog.socket +++ b/units/syslog.socket @@ -10,14 +10,11 @@ Description=Syslog Socket Documentation=man:systemd.special(7) Documentation=http://www.freedesktop.org/wiki/Software/systemd/syslog DefaultDependencies=no -Before=sockets.target syslog.target shutdown.target +Before=sockets.target shutdown.target # Don't allow logging until the very end Conflicts=shutdown.target -# Pull in syslog.target to tell people that /dev/log is now accessible -Wants=syslog.target - [Socket] ListenDatagram=/run/systemd/journal/syslog SocketMode=0666 diff --git a/units/syslog.target b/units/syslog.target deleted file mode 100644 index 423fef30ad..0000000000 --- a/units/syslog.target +++ /dev/null @@ -1,19 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -# This exists mostly for compatibility with SysV/LSB units, and -# implementations lacking socket/bus activation. - -[Unit] -Description=Syslog -Documentation=man:systemd.special(7) -Documentation=http://www.freedesktop.org/wiki/Software/systemd/syslog - -# Avoid that we conflict with shutdown.target, so that we can stay -# until the very end and do not cancel shutdown.target if we should -# happen to be activated very late. -DefaultDependencies=no diff --git a/units/systemd-journald.socket b/units/systemd-journald.socket index dbe8882c0e..4f0619d258 100644 --- a/units/systemd-journald.socket +++ b/units/systemd-journald.socket @@ -9,7 +9,7 @@ Description=Journal Socket Documentation=man:systemd-journald.service(8) man:journald.conf(5) DefaultDependencies=no -Before=sockets.target syslog.target +Before=sockets.target # Mount and swap units need this. If this socket unit is removed by an # isolate request the mount and and swap units would be removed too, -- cgit v1.2.1 From 59d86149b062c382aa560798426bc9f3f667403f Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 17 Jan 2013 00:00:02 +0100 Subject: udev: path_id - clarify comment about the kernel ATA naming problem --- src/udev/udev-builtin-path_id.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c index c2c9161c94..d6b3736aee 100644 --- a/src/udev/udev-builtin-path_id.c +++ b/src/udev/udev-builtin-path_id.c @@ -356,7 +356,7 @@ static struct udev_device *handle_scsi(struct udev_device *parent, char **path) goto out; } - /* lousy scsi sysfs does not have a "subsystem" for the transport */ + /* scsi sysfs does not have a "subsystem" for the transport */ name = udev_device_get_syspath(parent); if (strstr(name, "/rport-") != NULL) { @@ -375,12 +375,15 @@ static struct udev_device *handle_scsi(struct udev_device *parent, char **path) } /* - * We do not support the ATA transport class, it creates duplicated link - * names as the fake SCSI host adapters are all separated, they are all - * re-based as host == 0. ATA should just stop faking two duplicated - * hierarchies for a single topology and leave the SCSI stuff alone; - * until that happens, there are no by-path/ links for ATA devices behind - * an ATA transport class. + * We do not support the ATA transport class, it uses global counters + * to name the ata devices which numbers spread across multiple + * controllers. + * + * The real link numbers are not exported. Also, possible chains of ports + * behind port multipliers cannot be composed that way. + * + * Until all that is solved at the kernel level, there are no by-path/ + * links for ATA devices. */ if (strstr(name, "/ata") != NULL) { parent = NULL; -- cgit v1.2.1 From a74a8793b04de9886b4f6987b9cb86fa02c73520 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 17 Jan 2013 00:11:27 +0100 Subject: update TODO --- TODO | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index 0c9bc08908..296d4c0756 100644 --- a/TODO +++ b/TODO @@ -19,9 +19,6 @@ Fedora 19: * create /var/log/journal/ Features: -* turn unused sysv early-boot stuff like $local-fs, $syslog into a NOP. systemd does - no longer support sysv early-boot scripts, these facilities can be silently ignored - * re-enable "make check" for gtk-doc (broken for unknown reason) * logind: make PrepareForSuspend(false) an official api for notification of resumes @@ -542,7 +539,9 @@ Features: - how to develop against journal browsing APIs - the journal HTTP iface - non-cgroup resource management + - dynamic resource management with cgroups - refreshed, longer missions statement + - celendar time events * allow port=0 in .socket units -- cgit v1.2.1 From 984c4348ff14d29c526d3d372daa82e278eeb5b4 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 17 Jan 2013 02:09:49 +0100 Subject: udev: net_id - handle "bcma" buses --- src/udev/udev-builtin-net_id.c | 44 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index a5da291497..312a54a6c1 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -94,6 +94,7 @@ enum netname_type{ NET_UNDEF, NET_PCI, NET_USB, + NET_BCMA, }; struct netnames { @@ -108,8 +109,9 @@ struct netnames { char pci_onboard[IFNAMSIZ]; const char *pci_onboard_label; - struct udev_device *usbdev; char usb_ports[IFNAMSIZ]; + + char bcma_core[IFNAMSIZ]; }; /* retrieve on-board index number and label from firmware */ @@ -265,6 +267,7 @@ static int names_pci(struct udev_device *dev, struct netnames *names) { } static int names_usb(struct udev_device *dev, struct netnames *names) { + struct udev_device *usbdev; char name[256]; char *ports; char *config; @@ -272,12 +275,12 @@ static int names_usb(struct udev_device *dev, struct netnames *names) { size_t l; char *s; - names->usbdev = udev_device_get_parent_with_subsystem_devtype(dev, "usb", "usb_interface"); - if (!names->usbdev) + usbdev = udev_device_get_parent_with_subsystem_devtype(dev, "usb", "usb_interface"); + if (!usbdev) return -ENOENT; /* get USB port number chain, configuration, interface */ - strscpy(name, sizeof(name), udev_device_get_sysname(names->usbdev)); + strscpy(name, sizeof(name), udev_device_get_sysname(usbdev)); s = strchr(name, '-'); if (!s) return -EINVAL; @@ -316,6 +319,22 @@ static int names_usb(struct udev_device *dev, struct netnames *names) { return 0; } +static int names_bcma(struct udev_device *dev, struct netnames *names) { + struct udev_device *bcmadev; + unsigned int core; + + bcmadev = udev_device_get_parent_with_subsystem_devtype(dev, "bcma", NULL); + if (!bcmadev) + return -ENOENT; + + /* bus num, core num */ + if (sscanf(udev_device_get_sysname(bcmadev), "bcma%*d:%d", &core) != 1) + return -EINVAL; + snprintf(names->bcma_core, sizeof(names->bcma_core), "b%d", core); + names->type = NET_BCMA; + return 0; +} + static int names_mac(struct udev_device *dev, struct netnames *names) { const char *s; unsigned int i; @@ -452,7 +471,24 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool if (names.pci_slot[0]) if (snprintf(str, sizeof(str), "%s%s%s", prefix, names.pci_slot, names.usb_ports) < (int)sizeof(str)) udev_builtin_add_property(dev, test, "ID_NET_NAME_SLOT", str); + goto out; + } + + /* Broadcom bus */ + err = names_bcma(dev, &names); + if (err >= 0 && names.type == NET_BCMA) { + char str[IFNAMSIZ]; + + if (names.pci_path[0]) + if (snprintf(str, sizeof(str), "%s%s%s", prefix, names.pci_path, names.bcma_core) < (int)sizeof(str)) + udev_builtin_add_property(dev, test, "ID_NET_NAME_PATH", str); + + if (names.pci_slot[0]) + if (snprintf(str, sizeof(str), "%s%s%s", prefix, names.pci_slot, names.bcma_core) < (int)sizeof(str)) + udev_builtin_add_property(dev, test, "ID_NET_NAME_SLOT", str); + goto out; } + out: return EXIT_SUCCESS; } -- cgit v1.2.1 From 4b20075e2fbd99caee8b6a782050969a087a1a21 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 17 Jan 2013 02:24:49 +0100 Subject: dbus: add Unit's PartOf and ConsistsOf deps to introspection XML --- src/core/dbus-unit.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/dbus-unit.h b/src/core/dbus-unit.h index 7b8c5a9442..c7d5863a97 100644 --- a/src/core/dbus-unit.h +++ b/src/core/dbus-unit.h @@ -69,11 +69,13 @@ " \n" \ " \n" \ " \n" \ - " \n" \ + " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ -- cgit v1.2.1 From 74051b9b5865586bf4d30b9075649af838fb92bd Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 17 Jan 2013 02:27:06 +0100 Subject: units: for all unit settings that take lists, allow the empty string for resetting the lists https://bugzilla.redhat.com/show_bug.cgi?id=756787 --- man/systemd.exec.xml | 190 +++++++++++------ man/systemd.path.xml | 23 ++- man/systemd.service.xml | 92 ++++++--- man/systemd.socket.xml | 25 ++- man/systemd.timer.xml | 16 +- man/systemd.unit.xml | 17 +- src/core/load-fragment-gperf.gperf.m4 | 14 +- src/core/load-fragment.c | 372 +++++++++++++++++++--------------- src/core/path.c | 16 +- src/core/path.h | 2 + src/core/socket.c | 11 +- src/core/socket.h | 2 + src/core/timer.c | 11 +- src/core/timer.h | 2 + src/shared/conf-parser.c | 46 ++++- 15 files changed, 538 insertions(+), 301 deletions(-) diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml index 92f59bdfbd..71472b4f5d 100644 --- a/man/systemd.exec.xml +++ b/man/systemd.exec.xml @@ -133,10 +133,15 @@ of group names or IDs. This option may be specified more than once in which case all listed groups are set as - supplementary groups. This option does - not override but extends the list of - supplementary groups configured in the - system group database for the + supplementary groups. When the empty + string is assigned the list of + supplementary groups is reset, and all + assignments prior to this one will + have no effect. In any way, this + option does not override, but extends + the list of supplementary groups + configured in the system group + database for the user. @@ -244,7 +249,13 @@ Controls the CPU affinity of the executed processes. Takes a space-separated - list of CPU indexes. See + list of CPU indexes. This option may + be specified more than once in which + case the specificed CPU affinity masks + are merged. If the empty string is + assigned the mask is reset, all + assignments prior to this will have no + effect. See sched_setaffinity2 for details. @@ -271,7 +282,11 @@ in which case all listed variables will be set. If the same variable is set twice the later setting will - override the earlier setting. See + override the earlier setting. If the + empty string is assigned to this + option the list of environment + variables is reset, all prior + assignments have no effect. See environ7 for details. @@ -288,14 +303,22 @@ parser strips leading and trailing whitespace from the values of assignments, unless you use - double quotes ("). - The - argument passed should be an absolute - file name or wildcard expression, optionally prefixed with + double quotes ("). + + The argument passed should be an + absolute file name or wildcard + expression, optionally prefixed with "-", which indicates that if the file does not exist it won't be read and no - error or warning message is - logged. The files listed with this + error or warning message is logged. + This option may be specified more than + once in which case all specified files + are read. If the empty string is + assigned to this option the list of + file to read is reset, all prior + assignments have no effect. + + The files listed with this directive will be read shortly before the process is executed. Settings from these files override settings made @@ -305,7 +328,7 @@ these files the files will be read in the order they are specified and the later setting will override the - earlier setting. + earlier setting. @@ -695,8 +718,13 @@ capability bounding set is not modified on process execution, hence no limits on the capabilities of the - process are - enforced. + process are enforced. This option may + appear more than once in which case + the bounding sets are merged. If the empty + string is assigned to this option the + bounding set is reset, and all prior + settings have no + effect. @@ -710,8 +738,12 @@ , , and/or - . - + . This + option may appear more than once in + which case the secure bits are + ORed. If the empty string is assigned + to this option the bits are reset to + 0. @@ -739,10 +771,10 @@ groups the executed processes shall be made members of. Takes a space-separated list of cgroup - identifiers. A cgroup identifier has a - format like + identifiers. A cgroup identifier is + formatted like cpu:/foo/bar, - where "cpu" identifies the kernel + where "cpu" indicates the kernel control group controller used, and /foo/bar is the control group path. The controller @@ -751,30 +783,50 @@ hierarchy is implied. Alternatively, the path and ":" may be omitted, in which case the default control group - path for this unit is implied. This - option may be used to place executed - processes in arbitrary groups in - arbitrary hierarchies -- which can be - configured externally with additional - execution limits. By default systemd - will place all executed processes in - separate per-unit control groups - (named after the unit) in the systemd - named hierarchy. Since every process - can be in one group per hierarchy only - overriding the control group path in - the named systemd hierarchy will - disable automatic placement in the - default group. This option is - primarily intended to place executed - processes in specific paths in - specific kernel controller - hierarchies. It is however not + path for this unit is implied. + + This option may be used to place + executed processes in arbitrary groups + in arbitrary hierarchies -- which may + then be externally configured with + additional execution limits. By + default systemd will place all + executed processes in separate + per-unit control groups (named after + the unit) in the systemd named + hierarchy. This option is primarily + intended to place executed processes + in specific paths in specific kernel + controller hierarchies. It is not recommended to manipulate the service control group path in the systemd named hierarchy. For details about control groups see cgroups.txt. + url="http://www.kernel.org/doc/Documentation/cgroups/cgroups.txt">cgroups.txt. + + This option may appear more than + once, in which case the list of + control group assignments is + merged. If the same hierarchy gets two + different paths assigned only the + later setting will take effect. If the + empty string is assigned to this + option the list of control group + assignments is reset, all previous + assignments will have no + effect. + + Note that the list of control + group assignments of a unit is + extended implicitly based on the + settings of + DefaultControllers= + of + systemd.conf5, + but a unit's + ControlGroup= + setting for a specific controller + takes precedence. @@ -832,8 +884,8 @@ the controller and the default unit cgroup path is implied. Thus, using ControlGroupAttribute= - is in most case sufficient to make use - of control group enforcements, + is in most cases sufficient to make + use of control group enforcements, explicit ControlGroup= are only necessary in case the implied @@ -844,7 +896,23 @@ url="http://www.kernel.org/doc/Documentation/cgroups/cgroups.txt">cgroups.txt. This option may appear more than once, in order to set multiple control group - attributes. + attributes. If this option is used + multiple times for the same cgroup + attribute only the later setting takes + effect. If the empty string is + assigned to this option the list of + attributes is reset, all previous + cgroup attribute settings have no + effect, including those done with + CPUShares=, + MemoryLimit=, + MemorySoftLimit, + DeviceAllow=, + DeviceDeny=, + BlockIOWeight=, + BlockIOReadBandwidth=, + BlockIOWriteBandwidth=. + @@ -988,18 +1056,21 @@ usual file access controls would permit this. Directories listed in InaccessibleDirectories= - will be made inaccessible for processes - inside the namespace. Note that - restricting access with these options - does not extend to submounts of a - directory. You must list submounts - separately in these settings to - ensure the same limited access. These - options may be specified more than - once in which case all directories - listed will have limited access from - within the - namespace. + will be made inaccessible for + processes inside the namespace. Note + that restricting access with these + options does not extend to submounts + of a directory. You must list + submounts separately in these settings + to ensure the same limited + access. These options may be specified + more than once in which case all + directories listed will have limited + access from within the namespace. If + the empty string is assigned to this + option the specific list is reset, and + all prior assignments have no + effect. @@ -1131,8 +1202,13 @@ exit_group, exit system calls are implicitly whitelisted and don't - need to be listed - explicitly. + need to be listed explicitly. This + option may be specified more than once + in which case the filter masks are + merged. If the empty string is + assigned the filter is reset, all + prior assignments will have no + effect. diff --git a/man/systemd.path.xml b/man/systemd.path.xml index 70a89b7a47..a602caab13 100644 --- a/man/systemd.path.xml +++ b/man/systemd.path.xml @@ -130,13 +130,15 @@ specified. PathChanged= may be used to watch a file or directory and activate the configured - unit whenever it changes. It is not activated - on every write to the watched file but it is - activated if the file which was open for writing - gets closed. PathModified= - is similar, but additionally it is activated - also on simple writes to the watched file. - + unit whenever it changes. It is not + activated on every write to the + watched file but it is activated if + the file which was open for writing + gets + closed. PathModified= + is similar, but additionally it is + activated also on simple writes to the + watched file. DirectoryNotEmpty= may be used to watch a directory and activate the configured unit whenever @@ -148,7 +150,12 @@ Multiple directives may be combined, of the same and of different - types, to watch multiple paths. + types, to watch multiple paths. If the + empty string is assigned to any of + these options the list of paths to + watch is reset, and any prior + assignments of these options will not + have any effect. If a path is already existing (in case of diff --git a/man/systemd.service.xml b/man/systemd.service.xml index 63e5b16e53..f7cbbb489c 100644 --- a/man/systemd.service.xml +++ b/man/systemd.service.xml @@ -315,14 +315,18 @@ for compatibility with parsers suitable for XDG .desktop files. - The commands are invoked one by - one sequentially in the order they - appear in the unit file. - When Type is - not , only one + The commands are invoked one by one + sequentially in the order they appear + in the unit file. When + Type is not + , only one command may be given. Lone semicolons may be escaped as - '\;'. + '\;'. If the empty + string is assigned to this option the + list of commands to start is reset, + prior assignments of this option will + have no effect. Unless Type=forking is @@ -338,23 +342,6 @@ line (i.e. the program to execute) may not include specifiers. - Optionally, if the absolute file - name is prefixed with - '@', the second token - will be passed as - argv[0] to the - executed process, followed by the - further arguments specified. If the - absolute file name is prefixed with - '-' an exit code of - the command normally considered a - failure (i.e. non-zero exit status or - abnormal exit due to signal) is ignored - and considered success. If both - '-' and - '@' are used they - can appear in either order. - On top of that basic environment variable substitution is supported. Use @@ -376,6 +363,23 @@ literal and absolute path name. + Optionally, if the absolute file + name is prefixed with + '@', the second token + will be passed as + argv[0] to the + executed process, followed by the + further arguments specified. If the + absolute file name is prefixed with + '-' an exit code of + the command normally considered a + failure (i.e. non-zero exit status or + abnormal exit due to signal) is ignored + and considered success. If both + '-' and + '@' are used they + can appear in either order. + Note that this setting does not directly support shell command lines. If shell command lines are to @@ -616,8 +620,14 @@ SIGKILL", ensures that exit codes 1, 2, 8 and the termination signal SIGKILL are considered clean - service - terminations. + service terminations. This option may + appear more than once in which case + the list of successful exit statuses + is merged. If the empty string is + assigned to this option the list is + reset, all prior assignments of this + option will have no + effect. @@ -638,9 +648,16 @@ logic. Example: "RestartPreventExitStatus=1 6 SIGABRT", ensures that exit - codes 1 and 6 and the termination signal - SIGABRT will not result in automatic - service restarting. + codes 1 and 6 and the termination + signal SIGABRT will not result in + automatic service restarting. This + option may appear more than once in + which case the list of restart preventing + statuses is merged. If the empty + string is assigned to this option the + list is reset, all prior assignments + of this option will have no + effect. @@ -754,13 +771,22 @@ same time. Also note that a different service may be activated on incoming traffic than inherits the sockets. Or - in other words: The + in other words: the Service= setting of .socket units - doesn't have to match the inverse of the - Sockets= setting of - the .service it - refers to. + doesn't have to match the inverse of + the Sockets= + setting of the + .service it + refers to. + + This option may appear more than + once, in which case the list of socket + units is merged. If the empty string + is assigned to this option the list of + sockets is reset, all prior uses of + this setting will have no + effect. diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml index 88cdaca00f..7ba8bdc85b 100644 --- a/man/systemd.socket.xml +++ b/man/systemd.socket.xml @@ -205,19 +205,24 @@ These options may be specified more than once in which case incoming - traffic on any of the sockets will trigger - service activation, and all listed - sockets will be passed to the service, - regardless whether there is incoming - traffic on them or not. - - If an IP address is used here, it - is often desirable to listen on it + traffic on any of the sockets will + trigger service activation, and all + listed sockets will be passed to the + service, regardless whether there is + incoming traffic on them or not. If + the empty string is assigned to any of + these options, the list of addresses + to listen on is reset, all prior uses + of any of these options will have no + effect. + + If an IP address is used here, + it is often desirable to listen on it before the interface it is configured on is up and running, and even regardless whether it will be up and - running ever at all. To deal with this it is - recommended to set the + running ever at all. To deal with this + it is recommended to set the FreeBind= option described below. diff --git a/man/systemd.timer.xml b/man/systemd.timer.xml index e08e200212..8682643349 100644 --- a/man/systemd.timer.xml +++ b/man/systemd.timer.xml @@ -115,7 +115,7 @@ machine was booted up. OnStartupSec= defines a timer relative to when - systemd was + systemd was first started. OnUnitActiveSec= defines a timer relative to when the unit the timer is activating was last @@ -157,7 +157,13 @@ These are monotonic timers, independent of wall-clock time and timezones. If the computer is temporarily suspended, the - monotonic clock stops too. + monotonic clock stops too. + + If the empty string is assigned + to any of these options the list of + timers is reset, and all prior + assignments will have no + effect. @@ -169,8 +175,10 @@ event expressions. See systemd.time7 for more information on the syntax of - calendar event - expressions. + calendar event expressions. Otherwise + the semantics are similar to + OnActiveSec= and + related settings. diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index d43f288b81..953a2897ad 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -254,8 +254,13 @@ reference documentation that explains what the unit's purpose is, followed by how it is configured, followed by - any other related - documentation. + any other related documentation. This + option may be specified more than once + in which case the specified list of + URIs is merged. If the empty string is + assigned to this option the list is + reset and all prior assignments will + have no effect. @@ -907,8 +912,12 @@ pipe symbol must be passed first, the exclamation second. Except for ConditionPathIsSymbolicLink=, - all path checks follow - symlinks. + all path checks follow symlinks. If + any of these options is assigned the + empty string the list of conditions is + reset completely, all previous + condition settings (of any kind) will + have no effect. diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4 index 7fba0cfb77..1783ad0586 100644 --- a/src/core/load-fragment-gperf.gperf.m4 +++ b/src/core/load-fragment-gperf.gperf.m4 @@ -174,13 +174,13 @@ Service.FsckPassNo, config_parse_fsck_passno, 0, EXEC_CONTEXT_CONFIG_ITEMS(Service)m4_dnl KILL_CONTEXT_CONFIG_ITEMS(Service)m4_dnl m4_dnl -Socket.ListenStream, config_parse_socket_listen, 0, 0 -Socket.ListenDatagram, config_parse_socket_listen, 0, 0 -Socket.ListenSequentialPacket, config_parse_socket_listen, 0, 0 -Socket.ListenFIFO, config_parse_socket_listen, 0, 0 -Socket.ListenNetlink, config_parse_socket_listen, 0, 0 -Socket.ListenSpecial, config_parse_socket_listen, 0, 0 -Socket.ListenMessageQueue, config_parse_socket_listen, 0, 0 +Socket.ListenStream, config_parse_socket_listen, SOCKET_SOCKET, 0 +Socket.ListenDatagram, config_parse_socket_listen, SOCKET_SOCKET, 0 +Socket.ListenSequentialPacket, config_parse_socket_listen, SOCKET_SOCKET, 0 +Socket.ListenFIFO, config_parse_socket_listen, SOCKET_FIFO, 0 +Socket.ListenNetlink, config_parse_socket_listen, SOCKET_SOCKET, 0 +Socket.ListenSpecial, config_parse_socket_listen, SOCKET_SPECIAL, 0 +Socket.ListenMessageQueue, config_parse_socket_listen, SOCKET_MQUEUE, 0 Socket.BindIPv6Only, config_parse_socket_bind, 0, 0, Socket.Backlog, config_parse_unsigned, 0, offsetof(Socket, backlog) Socket.BindToDevice, config_parse_socket_bindtodevice, 0, 0 diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 7b1e664511..f82ddd530c 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -91,11 +91,11 @@ int config_parse_unit_deps( t = strndup(w, l); if (!t) - return -ENOMEM; + return log_oom(); k = unit_name_printf(u, t); if (!k) - return -ENOMEM; + return log_oom(); r = unit_add_dependency_by_name(u, d, k, NULL, true); if (r < 0) @@ -117,8 +117,7 @@ int config_parse_unit_string_printf( void *userdata) { Unit *u = userdata; - char *k; - int r; + _cleanup_free_ char *k = NULL; assert(filename); assert(lvalue); @@ -127,12 +126,9 @@ int config_parse_unit_string_printf( k = unit_full_printf(u, rvalue); if (!k) - return -ENOMEM; - - r = config_parse_string(filename, line, section, lvalue, ltype, k, data, userdata); - free (k); + return log_oom(); - return r; + return config_parse_string(filename, line, section, lvalue, ltype, k, data, userdata); } int config_parse_unit_strv_printf( @@ -146,8 +142,7 @@ int config_parse_unit_strv_printf( void *userdata) { Unit *u = userdata; - char *k; - int r; + _cleanup_free_ char *k = NULL; assert(filename); assert(lvalue); @@ -156,12 +151,9 @@ int config_parse_unit_strv_printf( k = unit_full_printf(u, rvalue); if (!k) - return -ENOMEM; - - r = config_parse_strv(filename, line, section, lvalue, ltype, k, data, userdata); - free(k); + return log_oom(); - return r; + return config_parse_strv(filename, line, section, lvalue, ltype, k, data, userdata); } int config_parse_unit_path_printf( @@ -175,8 +167,7 @@ int config_parse_unit_path_printf( void *userdata) { Unit *u = userdata; - char *k; - int r; + _cleanup_free_ char *k = NULL; assert(filename); assert(lvalue); @@ -187,10 +178,7 @@ int config_parse_unit_path_printf( if (!k) return log_oom(); - r = config_parse_path(filename, line, section, lvalue, ltype, k, data, userdata); - free(k); - - return r; + return config_parse_path(filename, line, section, lvalue, ltype, k, data, userdata); } int config_parse_socket_listen( @@ -213,50 +201,39 @@ int config_parse_socket_listen( s = SOCKET(data); + if (isempty(rvalue)) { + /* An empty assignment removes all ports */ + socket_free_ports(s); + return 0; + } + p = new0(SocketPort, 1); if (!p) - return -ENOMEM; - - if (streq(lvalue, "ListenFIFO")) { - p->type = SOCKET_FIFO; - - if (!(p->path = unit_full_printf(UNIT(s), rvalue))) { - free(p); - return -ENOMEM; - } - - path_kill_slashes(p->path); - - } else if (streq(lvalue, "ListenSpecial")) { - p->type = SOCKET_SPECIAL; - - if (!(p->path = unit_full_printf(UNIT(s), rvalue))) { - free(p); - return -ENOMEM; - } - - path_kill_slashes(p->path); - - } else if (streq(lvalue, "ListenMessageQueue")) { + return log_oom(); - p->type = SOCKET_MQUEUE; + if (ltype != SOCKET_SOCKET) { - if (!(p->path = unit_full_printf(UNIT(s), rvalue))) { + p->type = ltype; + p->path = unit_full_printf(UNIT(s), rvalue); + if (!p->path) { free(p); - return -ENOMEM; + return log_oom(); } path_kill_slashes(p->path); } else if (streq(lvalue, "ListenNetlink")) { - char *k; + _cleanup_free_ char *k = NULL; int r; p->type = SOCKET_SOCKET; k = unit_full_printf(UNIT(s), rvalue); - r = socket_address_parse_netlink(&p->address, k); - free(k); + if (!k) { + free(p); + return log_oom(); + } + r = socket_address_parse_netlink(&p->address, k); if (r < 0) { log_error("[%s:%u] Failed to parse address value, ignoring: %s", filename, line, rvalue); free(p); @@ -264,14 +241,17 @@ int config_parse_socket_listen( } } else { - char *k; + _cleanup_free_ char *k = NULL; int r; p->type = SOCKET_SOCKET; k = unit_full_printf(UNIT(s), rvalue); - r = socket_address_parse(&p->address, k); - free(k); + if (!k) { + free(p); + return log_oom(); + } + r = socket_address_parse(&p->address, k); if (r < 0) { log_error("[%s:%u] Failed to parse address value, ignoring: %s", filename, line, rvalue); free(p); @@ -430,12 +410,18 @@ int config_parse_exec( assert(rvalue); assert(e); + e += ltype; + + if (isempty(rvalue)) { + /* An empty assignment resets the list */ + exec_command_free_list(*e); + *e = NULL; + return 0; + } + /* We accept an absolute path as first argument, or * alternatively an absolute prefixed with @ to allow * overriding of argv[0]. */ - - e += ltype; - for (;;) { int i; char *w; @@ -480,7 +466,7 @@ int config_parse_exec( n = new(char*, k + !honour_argv0); if (!n) - return -ENOMEM; + return log_oom(); k = 0; FOREACH_WORD_QUOTED(w, l, rvalue, state) { @@ -494,7 +480,7 @@ int config_parse_exec( path = strndup(w, l); if (!path) { - r = -ENOMEM; + r = log_oom(); goto fail; } @@ -509,7 +495,7 @@ int config_parse_exec( c = n[k++] = cunescape_length(w, l); if (!c) { - r = -ENOMEM; + r = log_oom(); goto fail; } @@ -532,7 +518,7 @@ int config_parse_exec( if (!path) { path = strdup(n[0]); if (!path) { - r = -ENOMEM; + r = log_oom(); goto fail; } } @@ -541,7 +527,7 @@ int config_parse_exec( nce = new0(ExecCommand, 1); if (!nce) { - r = -ENOMEM; + r = log_oom(); goto fail; } @@ -589,8 +575,9 @@ int config_parse_socket_bindtodevice( assert(data); if (rvalue[0] && !streq(rvalue, "*")) { - if (!(n = strdup(rvalue))) - return -ENOMEM; + n = strdup(rvalue); + if (!n) + return log_oom(); } else n = NULL; @@ -718,7 +705,6 @@ int config_parse_exec_cpu_sched_prio( return 0; } - /* On Linux RR/FIFO range from 1 to 99 and OTHER/BATCH may only be 0 */ min = sched_get_priority_min(c->cpu_sched_policy); max = sched_get_priority_max(c->cpu_sched_policy); @@ -754,6 +740,14 @@ int config_parse_exec_cpu_affinity( assert(rvalue); assert(data); + if (isempty(rvalue)) { + /* An empty assignment resets the CPU list */ + if (c->cpuset) + CPU_FREE(c->cpuset); + c->cpuset = NULL; + return 0; + } + FOREACH_WORD_QUOTED(w, l, rvalue, state) { char _cleanup_free_ *t = NULL; int r; @@ -761,14 +755,14 @@ int config_parse_exec_cpu_affinity( t = strndup(w, l); if (!t) - return -ENOMEM; + return log_oom(); r = safe_atou(t, &cpu); if (!c->cpuset) { c->cpuset = cpu_set_malloc(&c->cpuset_ncpus); if (!c->cpuset) - return -ENOMEM; + return log_oom(); } if (r < 0 || cpu >= c->cpuset_ncpus) { @@ -801,9 +795,10 @@ int config_parse_exec_capabilities( assert(rvalue); assert(data); - if (!(cap = cap_from_text(rvalue))) { + cap = cap_from_text(rvalue); + if (!cap) { if (errno == ENOMEM) - return -ENOMEM; + return log_oom(); log_error("[%s:%u] Failed to parse capabilities, ignoring: %s", filename, line, rvalue); return 0; @@ -836,6 +831,12 @@ int config_parse_exec_secure_bits( assert(rvalue); assert(data); + if (isempty(rvalue)) { + /* An empty assignment resets the field */ + c->secure_bits = 0; + return 0; + } + FOREACH_WORD_QUOTED(w, l, rvalue, state) { if (first_word(w, "keep-caps")) c->secure_bits |= SECURE_KEEP_CAPS; @@ -881,6 +882,12 @@ int config_parse_bounding_set( assert(rvalue); assert(data); + if (isempty(rvalue)) { + /* An empty assignment resets */ + *capability_bounding_set_drop = 0; + return 0; + } + if (rvalue[0] == '~') { invert = true; rvalue++; @@ -898,7 +905,7 @@ int config_parse_bounding_set( t = strndup(w, l); if (!t) - return -ENOMEM; + return log_oom(); r = cap_from_name(t, &cap); if (r < 0) { @@ -945,9 +952,11 @@ int config_parse_limit( return 0; } - if (!*rl) - if (!(*rl = new(struct rlimit, 1))) - return -ENOMEM; + if (!*rl) { + *rl = new(struct rlimit, 1); + if (!*rl) + return log_oom(); + } (*rl)->rlim_cur = (*rl)->rlim_max = (rlim_t) u; return 0; @@ -968,21 +977,28 @@ int config_parse_unit_cgroup( size_t l; char *state; + if (isempty(rvalue)) { + /* An empty assignment resets the list */ + cgroup_bonding_free_list(u->cgroup_bondings, false); + u->cgroup_bondings = NULL; + return 0; + } + FOREACH_WORD_QUOTED(w, l, rvalue, state) { char _cleanup_free_ *t = NULL, *k = NULL, *ku = NULL; int r; t = strndup(w, l); if (!t) - return -ENOMEM; + return log_oom(); k = unit_full_printf(u, t); if (!k) - return -ENOMEM; + return log_oom(); ku = cunescape(k); if (!ku) - return -ENOMEM; + return log_oom(); r = unit_add_cgroup_from_text(u, ku, true, NULL); if (r < 0) { @@ -1071,7 +1087,8 @@ int config_parse_kill_signal( assert(rvalue); assert(sig); - if ((r = signal_from_string_try_harder(rvalue)) <= 0) { + r = signal_from_string_try_harder(rvalue); + if (r <= 0) { log_error("[%s:%u] Failed to parse kill signal, ignoring: %s", filename, line, rvalue); return 0; } @@ -1106,7 +1123,7 @@ int config_parse_exec_mount_flags( t = strndup(w, l); if (!t) - return -ENOMEM; + return log_oom(); if (streq(t, "shared")) flags |= MS_SHARED; @@ -1147,6 +1164,12 @@ int config_parse_timer( assert(rvalue); assert(data); + if (isempty(rvalue)) { + /* Empty assignment resets list */ + timer_free_values(t); + return 0; + } + b = timer_base_from_string(lvalue); if (b < 0) { log_error("[%s:%u] Failed to parse timer base, ignoring: %s", filename, line, lvalue); @@ -1171,7 +1194,7 @@ int config_parse_timer( v = new0(TimerValue, 1); if (!v) - return -ENOMEM; + return log_oom(); v->base = b; v->clock_id = id; @@ -1197,6 +1220,7 @@ int config_parse_timer_unit( int r; DBusError error; Unit *u; + _cleanup_free_ char *p = NULL; assert(filename); assert(lvalue); @@ -1205,12 +1229,16 @@ int config_parse_timer_unit( dbus_error_init(&error); - if (endswith(rvalue, ".timer")) { + p = unit_name_printf(UNIT(t), rvalue); + if (!p) + return log_oom(); + + if (endswith(p, ".timer")) { log_error("[%s:%u] Unit cannot be of type timer, ignoring: %s", filename, line, rvalue); return 0; } - r = manager_load_unit(UNIT(t)->manager, rvalue, NULL, NULL, &u); + r = manager_load_unit(UNIT(t)->manager, p, NULL, NULL, &u); if (r < 0) { log_error("[%s:%u] Failed to load unit %s, ignoring: %s", filename, line, rvalue, bus_error(&error, r)); dbus_error_free(&error); @@ -1242,6 +1270,12 @@ int config_parse_path_spec( assert(rvalue); assert(data); + if (isempty(rvalue)) { + /* Empty assignment clears list */ + path_free_specs(p); + return 0; + } + b = path_type_from_string(lvalue); if (b < 0) { log_error("[%s:%u] Failed to parse path type, ignoring: %s", filename, line, lvalue); @@ -1331,6 +1365,7 @@ int config_parse_socket_service( int r; DBusError error; Unit *x; + _cleanup_free_ char *p = NULL; assert(filename); assert(lvalue); @@ -1339,12 +1374,16 @@ int config_parse_socket_service( dbus_error_init(&error); - if (!endswith(rvalue, ".service")) { + p = unit_name_printf(UNIT(s), rvalue); + if (!p) + return log_oom(); + + if (!endswith(p, ".service")) { log_error("[%s:%u] Unit must be of type service, ignoring: %s", filename, line, rvalue); return 0; } - r = manager_load_unit(UNIT(s)->manager, rvalue, NULL, &error, &x); + r = manager_load_unit(UNIT(s)->manager, p, NULL, &error, &x); if (r < 0) { log_error("[%s:%u] Failed to load unit %s, ignoring: %s", filename, line, rvalue, bus_error(&error, r)); dbus_error_free(&error); @@ -1381,11 +1420,11 @@ int config_parse_service_sockets( t = strndup(w, l); if (!t) - return -ENOMEM; + return log_oom(); k = unit_name_printf(UNIT(s), t); if (!k) - return -ENOMEM; + return log_oom(); if (!endswith(k, ".socket")) { log_error("[%s:%u] Unit must be of type socket, ignoring: %s", @@ -1425,8 +1464,7 @@ int config_parse_service_timeout( assert(s); r = config_parse_usec(filename, line, section, lvalue, ltype, rvalue, data, userdata); - - if (r) + if (r < 0) return r; if (streq(lvalue, "TimeoutSec")) { @@ -1457,9 +1495,17 @@ int config_parse_unit_env_file( assert(rvalue); assert(data); + if (isempty(rvalue)) { + /* Empty assignment frees the list */ + + strv_free(*env); + *env = NULL; + return 0; + } + s = unit_full_printf(u, rvalue); if (!s) - return -ENOMEM; + return log_oom(); if (!path_is_absolute(s[0] == '-' ? s + 1 : s)) { log_error("[%s:%u] Path '%s' is not absolute, ignoring.", filename, line, s); @@ -1470,7 +1516,7 @@ int config_parse_unit_env_file( k = strv_append(*env, s); free(s); if (!k) - return -ENOMEM; + return log_oom(); strv_free(*env); *env = k; @@ -1526,6 +1572,13 @@ int config_parse_unit_condition_path( assert(rvalue); assert(data); + if (isempty(rvalue)) { + /* Empty assignment resets the list */ + condition_free_list(u->conditions); + u->conditions = NULL; + return 0; + } + trigger = rvalue[0] == '|'; if (trigger) rvalue++; @@ -1536,7 +1589,7 @@ int config_parse_unit_condition_path( p = unit_full_printf(u, rvalue); if (!p) - return -ENOMEM; + return log_oom(); if (!path_is_absolute(p)) { log_error("[%s:%u] Path in condition not absolute, ignoring: %s", filename, line, p); @@ -1545,7 +1598,7 @@ int config_parse_unit_condition_path( c = condition_new(cond, p, trigger, negate); if (!c) - return -ENOMEM; + return log_oom(); LIST_PREPEND(Condition, conditions, u->conditions, c); return 0; @@ -1572,6 +1625,13 @@ int config_parse_unit_condition_string( assert(rvalue); assert(data); + if (isempty(rvalue)) { + /* Empty assignment resets the list */ + condition_free_list(u->conditions); + u->conditions = NULL; + return 0; + } + trigger = rvalue[0] == '|'; if (trigger) rvalue++; @@ -1582,7 +1642,7 @@ int config_parse_unit_condition_string( s = unit_full_printf(u, rvalue); if (!s) - return -ENOMEM; + return log_oom(); c = condition_new(cond, s, trigger, negate); if (!c) @@ -1612,13 +1672,23 @@ int config_parse_unit_condition_null( assert(rvalue); assert(data); - if ((trigger = rvalue[0] == '|')) + if (isempty(rvalue)) { + /* Empty assignment resets the list */ + condition_free_list(u->conditions); + u->conditions = NULL; + return 0; + } + + trigger = rvalue[0] == '|'; + if (trigger) rvalue++; - if ((negate = rvalue[0] == '!')) + negate = rvalue[0] == '!'; + if (negate) rvalue++; - if ((b = parse_boolean(rvalue)) < 0) { + b = parse_boolean(rvalue); + if (b < 0) { log_error("[%s:%u] Failed to parse boolean value in condition, ignoring: %s", filename, line, rvalue); return 0; } @@ -1626,8 +1696,9 @@ int config_parse_unit_condition_null( if (!b) negate = !negate; - if (!(c = condition_new(CONDITION_NULL, NULL, trigger, negate))) - return -ENOMEM; + c = condition_new(CONDITION_NULL, NULL, trigger, negate); + if (!c) + return log_oom(); LIST_PREPEND(Condition, conditions, u->conditions, c); return 0; @@ -1647,7 +1718,7 @@ int config_parse_unit_cgroup_attr( void *userdata) { Unit *u = data; - char **l; + _cleanup_strv_free_ char **l = NULL; int r; assert(filename); @@ -1655,19 +1726,23 @@ int config_parse_unit_cgroup_attr( assert(rvalue); assert(data); + if (isempty(rvalue)) { + /* Empty assignment clears the list */ + cgroup_attribute_free_list(u->cgroup_attributes); + u->cgroup_attributes = NULL; + return 0; + } + l = strv_split_quoted(rvalue); if (!l) - return -ENOMEM; + return log_oom(); if (strv_length(l) != 2) { log_error("[%s:%u] Failed to parse cgroup attribute value, ignoring: %s", filename, line, rvalue); - strv_free(l); return 0; } r = unit_add_cgroup_attribute(u, NULL, l[0], l[1], NULL, NULL); - strv_free(l); - if (r < 0) { log_error("[%s:%u] Failed to add cgroup attribute value, ignoring: %s", filename, line, rvalue); return 0; @@ -1680,7 +1755,7 @@ int config_parse_unit_cpu_shares(const char *filename, unsigned line, const char Unit *u = data; int r; unsigned long ul; - char *t; + _cleanup_free_ char *t = NULL; assert(filename); assert(lvalue); @@ -1693,11 +1768,9 @@ int config_parse_unit_cpu_shares(const char *filename, unsigned line, const char } if (asprintf(&t, "%lu", ul) < 0) - return -ENOMEM; + return log_oom(); r = unit_add_cgroup_attribute(u, "cpu", "cpu.shares", t, NULL, NULL); - free(t); - if (r < 0) { log_error("[%s:%u] Failed to add cgroup attribute value, ignoring: %s", filename, line, rvalue); return 0; @@ -1710,7 +1783,7 @@ int config_parse_unit_memory_limit(const char *filename, unsigned line, const ch Unit *u = data; int r; off_t sz; - char *t; + _cleanup_free_ char *t = NULL; assert(filename); assert(lvalue); @@ -1723,14 +1796,12 @@ int config_parse_unit_memory_limit(const char *filename, unsigned line, const ch } if (asprintf(&t, "%llu", (unsigned long long) sz) < 0) - return -ENOMEM; + return log_oom(); r = unit_add_cgroup_attribute(u, "memory", streq(lvalue, "MemorySoftLimit") ? "memory.soft_limit_in_bytes" : "memory.limit_in_bytes", t, NULL, NULL); - free(t); - if (r < 0) { log_error("[%s:%u] Failed to add cgroup attribute value, ignoring: %s", filename, line, rvalue); return 0; @@ -1740,7 +1811,7 @@ int config_parse_unit_memory_limit(const char *filename, unsigned line, const ch } static int device_map(const char *controller, const char *name, const char *value, char **ret) { - char **l; + _cleanup_strv_free_ char **l = NULL; assert(controller); assert(name); @@ -1756,43 +1827,34 @@ static int device_map(const char *controller, const char *name, const char *valu if (streq(l[0], "*")) { if (asprintf(ret, "a *:*%s%s", - isempty(l[1]) ? "" : " ", strempty(l[1])) < 0) { - strv_free(l); + isempty(l[1]) ? "" : " ", strempty(l[1])) < 0) return -ENOMEM; - } - } else { struct stat st; if (stat(l[0], &st) < 0) { log_warning("Couldn't stat device %s", l[0]); - strv_free(l); return -errno; } if (!S_ISCHR(st.st_mode) && !S_ISBLK(st.st_mode)) { log_warning("%s is not a device.", l[0]); - strv_free(l); return -ENODEV; } if (asprintf(ret, "%c %u:%u%s%s", S_ISCHR(st.st_mode) ? 'c' : 'b', major(st.st_rdev), minor(st.st_rdev), - isempty(l[1]) ? "" : " ", strempty(l[1])) < 0) { - - strv_free(l); + isempty(l[1]) ? "" : " ", strempty(l[1])) < 0) return -ENOMEM; - } } - strv_free(l); return 0; } int config_parse_unit_device_allow(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata) { Unit *u = data; - char **l; + _cleanup_strv_free_ char **l = NULL; int r; unsigned k; @@ -1803,27 +1865,23 @@ int config_parse_unit_device_allow(const char *filename, unsigned line, const ch l = strv_split_quoted(rvalue); if (!l) - return -ENOMEM; + return log_oom(); k = strv_length(l); if (k < 1 || k > 2) { log_error("[%s:%u] Failed to parse device value, ignoring: %s", filename, line, rvalue); - strv_free(l); return 0; } if (!streq(l[0], "*") && !path_startswith(l[0], "/dev")) { log_error("[%s:%u] Device node path not absolute, ignoring: %s", filename, line, rvalue); - strv_free(l); return 0; } if (!isempty(l[1]) && !in_charset(l[1], "rwm")) { log_error("[%s:%u] Device access string invalid, ignoring: %s", filename, line, rvalue); - strv_free(l); return 0; } - strv_free(l); r = unit_add_cgroup_attribute(u, "devices", streq(lvalue, "DeviceAllow") ? "devices.allow" : "devices.deny", @@ -1839,7 +1897,7 @@ int config_parse_unit_device_allow(const char *filename, unsigned line, const ch static int blkio_map(const char *controller, const char *name, const char *value, char **ret) { struct stat st; - char **l; + _cleanup_strv_free_ char **l = NULL; dev_t d; assert(controller); @@ -1849,13 +1907,12 @@ static int blkio_map(const char *controller, const char *name, const char *value l = strv_split_quoted(value); if (!l) - return -ENOMEM; + return log_oom(); assert(strv_length(l) == 2); if (stat(l[0], &st) < 0) { log_warning("Couldn't stat device %s", l[0]); - strv_free(l); return -errno; } @@ -1871,16 +1928,12 @@ static int blkio_map(const char *controller, const char *name, const char *value block_get_whole_disk(d, &d); } else { log_warning("%s is not a block device and file system block device cannot be determined or is not local.", l[0]); - strv_free(l); return -ENODEV; } - if (asprintf(ret, "%u:%u %s", major(d), minor(d), l[1]) < 0) { - strv_free(l); + if (asprintf(ret, "%u:%u %s", major(d), minor(d), l[1]) < 0) return -ENOMEM; - } - strv_free(l); return 0; } @@ -1890,7 +1943,8 @@ int config_parse_unit_blkio_weight(const char *filename, unsigned line, const ch unsigned long ul; const char *device = NULL, *weight; unsigned k; - char *t, **l; + _cleanup_free_ char *t = NULL; + _cleanup_strv_free_ char **l = NULL; assert(filename); assert(lvalue); @@ -1899,12 +1953,11 @@ int config_parse_unit_blkio_weight(const char *filename, unsigned line, const ch l = strv_split_quoted(rvalue); if (!l) - return -ENOMEM; + return log_oom(); k = strv_length(l); if (k < 1 || k > 2) { log_error("[%s:%u] Failed to parse weight value, ignoring: %s", filename, line, rvalue); - strv_free(l); return 0; } @@ -1917,13 +1970,11 @@ int config_parse_unit_blkio_weight(const char *filename, unsigned line, const ch if (device && !path_is_absolute(device)) { log_error("[%s:%u] Failed to parse block device node value, ignoring: %s", filename, line, rvalue); - strv_free(l); return 0; } if (safe_atolu(weight, &ul) < 0 || ul < 10 || ul > 1000) { log_error("[%s:%u] Failed to parse block IO weight value, ignoring: %s", filename, line, rvalue); - strv_free(l); return 0; } @@ -1931,17 +1982,13 @@ int config_parse_unit_blkio_weight(const char *filename, unsigned line, const ch r = asprintf(&t, "%s %lu", device, ul); else r = asprintf(&t, "%lu", ul); - strv_free(l); - if (r < 0) - return -ENOMEM; + return log_oom(); if (device) r = unit_add_cgroup_attribute(u, "blkio", "blkio.weight_device", t, blkio_map, NULL); else r = unit_add_cgroup_attribute(u, "blkio", "blkio.weight", t, NULL, NULL); - free(t); - if (r < 0) { log_error("[%s:%u] Failed to add cgroup attribute value, ignoring: %s", filename, line, rvalue); return 0; @@ -1955,7 +2002,8 @@ int config_parse_unit_blkio_bandwidth(const char *filename, unsigned line, const int r; off_t bytes; unsigned k; - char *t, **l; + _cleanup_free_ char *t = NULL; + _cleanup_strv_free_ char **l = NULL; assert(filename); assert(lvalue); @@ -1964,38 +2012,31 @@ int config_parse_unit_blkio_bandwidth(const char *filename, unsigned line, const l = strv_split_quoted(rvalue); if (!l) - return -ENOMEM; + return log_oom(); k = strv_length(l); if (k != 2) { log_error("[%s:%u] Failed to parse bandwidth value, ignoring: %s", filename, line, rvalue); - strv_free(l); return 0; } if (!path_is_absolute(l[0])) { log_error("[%s:%u] Failed to parse block device node value, ignoring: %s", filename, line, rvalue); - strv_free(l); return 0; } if (parse_bytes(l[1], &bytes) < 0 || bytes <= 0) { log_error("[%s:%u] Failed to parse block IO bandwidth value, ignoring: %s", filename, line, rvalue); - strv_free(l); return 0; } r = asprintf(&t, "%s %llu", l[0], (unsigned long long) bytes); - strv_free(l); - if (r < 0) - return -ENOMEM; + return log_oom(); r = unit_add_cgroup_attribute(u, "blkio", streq(lvalue, "BlockIOReadBandwidth") ? "blkio.read_bps_device" : "blkio.write_bps_device", t, blkio_map, NULL); - free(t); - if (r < 0) { log_error("[%s:%u] Failed to add cgroup attribute value, ignoring: %s", filename, line, rvalue); return 0; @@ -2053,6 +2094,13 @@ int config_parse_documentation( assert(rvalue); assert(u); + if (isempty(rvalue)) { + /* Empty assignment resets the list */ + strv_free(u->documentation); + u->documentation = NULL; + return 0; + } + r = config_parse_unit_strv_printf(filename, line, section, lvalue, ltype, rvalue, data, userdata); if (r < 0) return r; @@ -2101,6 +2149,13 @@ int config_parse_syscall_filter( assert(rvalue); assert(u); + if (isempty(rvalue)) { + /* Empty assignment resets the list */ + free(c->syscall_filter); + c->syscall_filter = NULL; + return 0; + } + if (rvalue[0] == '~') { invert = true; rvalue++; @@ -2112,7 +2167,7 @@ int config_parse_syscall_filter( n = (syscall_max() + 31) >> 4; c->syscall_filter = new(uint32_t, n); if (!c->syscall_filter) - return -ENOMEM; + return log_oom(); memset(c->syscall_filter, invert ? 0xFF : 0, n * sizeof(uint32_t)); @@ -2132,10 +2187,9 @@ int config_parse_syscall_filter( t = strndup(w, l); if (!t) - return -ENOMEM; + return log_oom(); id = syscall_from_name(t); - if (id < 0) { log_error("[%s:%u] Failed to parse syscall, ignoring: %s", filename, line, t); diff --git a/src/core/path.c b/src/core/path.c index 767620ba75..3775577bcf 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -248,22 +248,28 @@ static void path_init(Unit *u) { p->directory_mode = 0755; } -static void path_done(Unit *u) { - Path *p = PATH(u); +void path_free_specs(Path *p) { PathSpec *s; assert(p); - unit_ref_unset(&p->unit); - while ((s = p->specs)) { - path_spec_unwatch(s, u); + path_spec_unwatch(s, UNIT(p)); LIST_REMOVE(PathSpec, spec, p->specs, s); path_spec_done(s); free(s); } } +static void path_done(Unit *u) { + Path *p = PATH(u); + + assert(p); + + unit_ref_unset(&p->unit); + path_free_specs(p); +} + int path_add_one_mount_link(Path *p, Mount *m) { PathSpec *s; int r; diff --git a/src/core/path.h b/src/core/path.h index 77926888ae..645feef191 100644 --- a/src/core/path.h +++ b/src/core/path.h @@ -98,6 +98,8 @@ void path_unit_notify(Unit *u, UnitActiveState new_state); * any of the paths of this path object */ int path_add_one_mount_link(Path *p, Mount *m); +void path_free_specs(Path *p); + extern const UnitVTable path_vtable; const char* path_state_to_string(PathState i); diff --git a/src/core/socket.c b/src/core/socket.c index d75504051b..f2d854851d 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -102,8 +102,7 @@ static void socket_unwatch_control_pid(Socket *s) { s->control_pid = 0; } -static void socket_done(Unit *u) { - Socket *s = SOCKET(u); +void socket_free_ports(Socket *s) { SocketPort *p; assert(s); @@ -119,6 +118,14 @@ static void socket_done(Unit *u) { free(p->path); free(p); } +} + +static void socket_done(Unit *u) { + Socket *s = SOCKET(u); + + assert(s); + + socket_free_ports(s); exec_context_done(&s->exec_context); exec_command_free_array(s->exec_command, _SOCKET_EXEC_COMMAND_MAX); diff --git a/src/core/socket.h b/src/core/socket.h index f099520dce..e0bae299b3 100644 --- a/src/core/socket.h +++ b/src/core/socket.h @@ -163,6 +163,8 @@ int socket_add_one_mount_link(Socket *s, Mount *m); /* Called from the service code when a per-connection service ended */ void socket_connection_unref(Socket *s); +void socket_free_ports(Socket *s); + extern const UnitVTable socket_vtable; const char* socket_state_to_string(SocketState i); diff --git a/src/core/timer.c b/src/core/timer.c index 4453aa0781..8061f79e3a 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -48,8 +48,7 @@ static void timer_init(Unit *u) { watch_init(&t->realtime_watch); } -static void timer_done(Unit *u) { - Timer *t = TIMER(u); +void timer_free_values(Timer *t) { TimerValue *v; assert(t); @@ -62,6 +61,14 @@ static void timer_done(Unit *u) { free(v); } +} + +static void timer_done(Unit *u) { + Timer *t = TIMER(u); + + assert(t); + + timer_free_values(t); unit_unwatch_timer(u, &t->monotonic_watch); unit_unwatch_timer(u, &t->realtime_watch); diff --git a/src/core/timer.h b/src/core/timer.h index 10d3ce1116..c145348c7d 100644 --- a/src/core/timer.h +++ b/src/core/timer.h @@ -84,6 +84,8 @@ struct Timer { void timer_unit_notify(Unit *u, UnitActiveState new_state); +void timer_free_values(Timer *t); + extern const UnitVTable timer_vtable; const char *timer_state_to_string(TimerState i); diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 9f5c07c761..7f286096d2 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -377,7 +377,8 @@ int config_parse_int( assert(rvalue); assert(data); - if ((r = safe_atoi(rvalue, i)) < 0) { + r = safe_atoi(rvalue, i); + if (r < 0) { log_error("[%s:%u] Failed to parse numeric value, ingoring: %s", filename, line, rvalue); return 0; } @@ -403,7 +404,8 @@ int config_parse_long( assert(rvalue); assert(data); - if ((r = safe_atoli(rvalue, i)) < 0) { + r = safe_atoli(rvalue, i); + if (r < 0) { log_error("[%s:%u] Failed to parse numeric value, ignoring: %s", filename, line, rvalue); return 0; } @@ -429,7 +431,8 @@ int config_parse_uint64( assert(rvalue); assert(data); - if ((r = safe_atou64(rvalue, u)) < 0) { + r = safe_atou64(rvalue, u); + if (r < 0) { log_error("[%s:%u] Failed to parse numeric value, ignoring: %s", filename, line, rvalue); return 0; } @@ -455,7 +458,8 @@ int config_parse_unsigned( assert(rvalue); assert(data); - if ((r = safe_atou(rvalue, u)) < 0) { + r = safe_atou(rvalue, u); + if (r < 0) { log_error("[%s:%u] Failed to parse numeric value: %s", filename, line, rvalue); return r; } @@ -595,7 +599,7 @@ int config_parse_string( n = strdup(rvalue); if (!n) - return -ENOMEM; + return log_oom(); if (!utf8_is_valid(n)) { log_error("[%s:%u] String is not UTF-8 clean, ignoring assignment: %s", filename, line, rvalue); @@ -644,7 +648,7 @@ int config_parse_path( n = strdup(rvalue); if (!n) - return -ENOMEM; + return log_oom(); path_kill_slashes(n); @@ -677,13 +681,19 @@ int config_parse_strv( assert(rvalue); assert(data); + if (isempty(rvalue)) { + /* Empty assignment resets the list */ + strv_free(*sv); + *sv = NULL; + } + k = strv_length(*sv); FOREACH_WORD_QUOTED(w, l, rvalue, state) k++; n = new(char*, k+1); if (!n) - return -ENOMEM; + return log_oom(); if (*sv) for (k = 0; (*sv)[k]; k++) @@ -694,7 +704,7 @@ int config_parse_strv( FOREACH_WORD_QUOTED(w, l, rvalue, state) { n[k] = cunescape_length(w, l); if (!n[k]) { - r = -ENOMEM; + r = log_oom(); goto fail; } @@ -744,13 +754,19 @@ int config_parse_path_strv( assert(rvalue); assert(data); + if (isempty(rvalue)) { + /* Empty assignment resets the list */ + strv_free(*sv); + *sv = NULL; + } + k = strv_length(*sv); FOREACH_WORD_QUOTED(w, l, rvalue, state) k++; n = new(char*, k+1); if (!n) - return -ENOMEM; + return log_oom(); k = 0; if (*sv) @@ -760,7 +776,7 @@ int config_parse_path_strv( FOREACH_WORD_QUOTED(w, l, rvalue, state) { n[k] = strndup(w, l); if (!n[k]) { - r = -ENOMEM; + r = log_oom(); goto fail; } @@ -957,6 +973,16 @@ int config_parse_set_status( assert(rvalue); assert(data); + if (isempty(rvalue)) { + /* Empty assignment resets the list */ + + set_free(status_set->signal); + set_free(status_set->code); + + status_set->signal = status_set->code = NULL; + return 0; + } + FOREACH_WORD(w, l, rvalue, state) { int val; char *temp; -- cgit v1.2.1 From 7f8732835295fce29479b1afc9e8ee801852db09 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 17 Jan 2013 02:49:57 +0100 Subject: update TODO --- TODO | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/TODO b/TODO index 296d4c0756..d91eb366fb 100644 --- a/TODO +++ b/TODO @@ -23,10 +23,6 @@ Features: * logind: make PrepareForSuspend(false) an official api for notification of resumes -* ExecStartPre= with an empty string should reset the list of commands to invoke - -* refuse instantiation of proc.mount and mount units for all other API fs - * "systemctl disable" on a static unit prints no message and does nothing. "systemctl enable" does nothing, and gives a bad message about it. Should fix both to print nice actionable messages. @@ -118,7 +114,9 @@ Features: * libunwind support for coredump pattern hook, and includes this in the message for coredumps. After all, libunwind is now capable to unwind coredumps since a few weeks ago. This probably requires that - we have nice support for multi-line messages on display in logs-show.c. + we have nice support for multi-line messages on display in + logs-show.c. Alternatively: use libelfutil, which seems to be the + better supported alternative. * figure out relation of --all and --full in the various tools @@ -214,8 +212,6 @@ Features: * document that deps in [Unit] sections ignore Alias= fileds in [Install] units of other units, unless those units are disabled -* systemctl: when powering down/suspending check for inhibitors, and warn. - * instantiated [Install] for target units https://bugs.freedesktop.org/show_bug.cgi?id=54377 @@ -324,9 +320,6 @@ Features: * journald: we currently rotate only after MaxUse+MaxFilesize has been reached. -* Document: - - PID 1 D-Bus API - * introduce Type=pid-file * maybe allow services with ExecStop= set, but no ExecStart=? @@ -364,9 +357,6 @@ Features: * readahead: when bumping /sys readahead variable save mtime and compare later to detect changes -* (attempt to) make Debianites happy: - - add syntax to reset ExecStart= lists (and similar) - * move passno parsing to fstab generator * improve !/proc/*/loginuid situation: make /proc/*/loginuid less dependent on CONFIG_AUDIT, @@ -481,7 +471,7 @@ Features: * when a bus name of a service disappears from the bus make sure to queue further activation requests -* something like ConditionExec= or ExecStartPre= without failure state +* something like ConditionExec= or ExecCondition= without failure state * tmpfiles: apply "x" on "D" too (see patch from William Douglas) -- cgit v1.2.1 From f4ddacbd4de0f159ec598f8ad690466a84787ec5 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 17 Jan 2013 03:30:07 +0100 Subject: udev: net_id - suppress bcma core == 0 --- src/udev/udev-builtin-net_id.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index 312a54a6c1..20d96e041d 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -327,10 +327,13 @@ static int names_bcma(struct udev_device *dev, struct netnames *names) { if (!bcmadev) return -ENOENT; - /* bus num, core num */ + /* bus num:core num */ if (sscanf(udev_device_get_sysname(bcmadev), "bcma%*d:%d", &core) != 1) return -EINVAL; - snprintf(names->bcma_core, sizeof(names->bcma_core), "b%d", core); + /* suppress the common core == 0 */ + if (core > 0) + snprintf(names->bcma_core, sizeof(names->bcma_core), "b%d", core); + names->type = NET_BCMA; return 0; } -- cgit v1.2.1 From abd55b16547d0bb0ed1c31e72e16838f0f59f48b Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 17 Jan 2013 03:30:55 +0100 Subject: TODO: update udev --- TODO | 26 ++++++++++---------------- 1 file changed, 10 insertions(+), 16 deletions(-) diff --git a/TODO b/TODO index d91eb366fb..c948d89803 100644 --- a/TODO +++ b/TODO @@ -42,8 +42,6 @@ Features: * mount: turn dependency information from /proc/self/mountinfo into dependency information between systemd units. -* udev: remove all (misguided from day 1) userspace firmware_class handling - * logind: optionally, ignore idle-hint logic for autosuspend, block suspend as long as a session is around * service: when killing a service with SIGKILL always kill all processes, even if for SIGTERM we only killed the main process @@ -104,8 +102,6 @@ Features: * hwdb: - implement conditional properties (dmi matches) - hwdb --filter=ID_DRIVE_* - - find out what to do for blockdevs and skipping scsi modaliases - - move writing code to src/libudev/libudev-hwdb-private.c * if booted in "quiet" mode, and an error happens, turn on status output again, so that the emergency mode isn't totally surprising @@ -385,8 +381,6 @@ Features: * don't delete /tmp/systemd-namespace-* before a process is gone down -* vconsole: implement setterm -store -foreground xxx --background zzz - * ExecOnFailure=/usr/bin/foo * fedora: make sshd and pam_loginuid work in nspawn containers @@ -397,16 +391,16 @@ Features: * ConditionSecurity= should learn about IMA and SMACK -* udev: move to LGPL - -* udev systemd unify: - - utf8 validator code - -* udev: scsi_id -> sg3_utils -> kill scsi_id - -* udev: add trigger --subsystem-match=usb/usb_device device +* udev: + - remove all (misguided from day 1) userspace firmware_class handling + - move to LGPL + - unify utf8 validator code with shared/ + - kill scsi_id + - add trigger --subsystem-match=usb/usb_device device -* allow configuration of console width/height in vconsole.conf +* vconsole: + - implement setterm -store -foreground xxx --background zzz + - allow configuration of console width/height in vconsole.conf * cleanup syslog 'priority' vs. 'level' wording @@ -436,7 +430,7 @@ Features: * figure out whether we should leave dbus around during shutdown -* dbus: in fedora, make the machine a symlink to /etc/machine-id +* dbus: in fedora, make /var/lib/dbus/machine-id a symlink to /etc/machine-id * dbus: move dbus to early boot -- cgit v1.2.1 From 464876c9c410b2f5bb997259510a13d0ee7d0af0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 17 Jan 2013 04:52:19 +0100 Subject: service: properly signal permanent failure of a service to its socket This makes sure that a service is not indefinitely restarted in a tight loop if it fails before it is able to process its socket. This corrects the breakage introduced with 8d1b002a2e389e79a2414491523de549783abf73. Shame on me. --- src/core/service.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/core/service.c b/src/core/service.c index ebd0baea89..9e46dbae94 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1521,6 +1521,9 @@ static void service_set_state(Service *s, ServiceState state) { s->control_command_id = _SERVICE_EXEC_COMMAND_INVALID; } + if (state == SERVICE_FAILED) + service_notify_sockets_dead(s, s->result == SERVICE_FAILURE_START_LIMIT); + if (state == SERVICE_DEAD || state == SERVICE_STOP || state == SERVICE_STOP_SIGTERM || @@ -1528,7 +1531,6 @@ static void service_set_state(Service *s, ServiceState state) { state == SERVICE_STOP_POST || state == SERVICE_FINAL_SIGTERM || state == SERVICE_FINAL_SIGKILL || - state == SERVICE_FAILED || state == SERVICE_AUTO_RESTART) service_notify_sockets_dead(s, false); -- cgit v1.2.1 From 8755586eba8b824851f11aa6c3f8f184ed69a30a Mon Sep 17 00:00:00 2001 From: Nestor Ovroy Date: Thu, 17 Jan 2013 05:55:30 -0800 Subject: core: corrects check of strduped controller string In commit 246aa6d (core: add bus API and systemctl commands for altering cgroup parameters during runtime), when rewriting unit_add_one_default_cgroup to prefered style, the check of strduped b->controller was incorrectly changed to check the containing structure. Correct it. --- src/core/unit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/unit.c b/src/core/unit.c index 1194c524bf..d26f6e456c 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -2090,7 +2090,7 @@ static int unit_add_one_default_cgroup(Unit *u, const char *controller) { return -ENOMEM; b->controller = strdup(controller); - if (!b) + if (!b->controller) goto fail; b->path = unit_default_cgroup_path(u); -- cgit v1.2.1 From 2fd9b50ce2a3dd31bf0831ca80b01ac85ef50999 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 17 Jan 2013 17:00:50 +0100 Subject: TODO: remove vconsole items We should not pimp up the kernel's VC stuff, it's too linited and fragile. At the moment not even the font uploaded early during bootup does survive the KMS driver taking over the framebuffer driver. We surely don't want to make promises about colors or resolution. The future is fullscreen KMS/kmscon/wayland/... based terminals using X fonts, keymaps, input methods, and not the old school too limited kernel VC stuff. So leave the kernel VCs as they are, and don't expect wonders. --- TODO | 4 ---- 1 file changed, 4 deletions(-) diff --git a/TODO b/TODO index c948d89803..4c59e74eec 100644 --- a/TODO +++ b/TODO @@ -398,10 +398,6 @@ Features: - kill scsi_id - add trigger --subsystem-match=usb/usb_device device -* vconsole: - - implement setterm -store -foreground xxx --background zzz - - allow configuration of console width/height in vconsole.conf - * cleanup syslog 'priority' vs. 'level' wording * dbus upstream still refers to dbus.target and shouldn't -- cgit v1.2.1 From 86ed7ec58b9b6a0907bbb3b8d07c930e52915de0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 17 Jan 2013 17:38:00 +0100 Subject: util: fix bad memory access --- src/shared/util.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/shared/util.c b/src/shared/util.c index 0161f3e957..8e1409671f 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -439,7 +439,6 @@ int get_parent_of_pid(pid_t pid, pid_t *_ppid) { if (!fgets(line, sizeof(line), f)) { r = feof(f) ? -EIO : -errno; - fclose(f); return r; } -- cgit v1.2.1 From 55c0b89c575fcb2c075286d444ed4fb1cf8c8563 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Thu, 17 Jan 2013 21:34:11 +0100 Subject: systemctl add command list-dependencies systemctl list-dependencies lists all unit's dependecies and recursively expands all subsidiary target units into a tree. Primary purpose for this command is to show all units which are enabled in specified target. --- man/systemctl.xml | 11 +++ src/shared/util.c | 2 + src/shared/util.h | 1 + src/systemctl/systemctl.c | 227 +++++++++++++++++++++++++++++++++++++++++++++- 4 files changed, 239 insertions(+), 2 deletions(-) diff --git a/man/systemctl.xml b/man/systemctl.xml index 48c5a1c738..f223383716 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -996,6 +996,17 @@ ordering and requirement dependencies. + + list-dependencies [NAME] + + + Shows required and wanted units of given unit. + Target units are recursively expanded. + When is passed + dependency tree is generated for all + subsidiary units. + + snapshot [NAME] diff --git a/src/shared/util.c b/src/shared/util.c index 8e1409671f..d5de59fce9 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5648,12 +5648,14 @@ const char *draw_special_char(DrawSpecialChar ch) { [DRAW_TREE_VERT] = "\342\224\202 ", /* │ */ [DRAW_TREE_BRANCH] = "\342\224\234\342\224\200", /* ├─ */ [DRAW_TREE_RIGHT] = "\342\224\224\342\224\200", /* └─ */ + [DRAW_TREE_SPACE] = " ", /* */ [DRAW_TRIANGULAR_BULLET] = "\342\200\243 ", /* ‣ */ }, /* ASCII fallback */ { [DRAW_TREE_VERT] = "| ", [DRAW_TREE_BRANCH] = "|-", [DRAW_TREE_RIGHT] = "`-", + [DRAW_TREE_SPACE] = " ", [DRAW_TRIANGULAR_BULLET] = "> ", } }; diff --git a/src/shared/util.h b/src/shared/util.h index bbf744e900..cdaff45772 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -555,6 +555,7 @@ typedef enum DrawSpecialChar { DRAW_TREE_VERT, DRAW_TREE_BRANCH, DRAW_TREE_RIGHT, + DRAW_TREE_SPACE, DRAW_TRIANGULAR_BULLET, _DRAW_SPECIAL_CHAR_MAX } DrawSpecialChar; diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index a2ad0deb5a..442179d340 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -710,6 +710,226 @@ static int list_unit_files(DBusConnection *bus, char **args) { return 0; } +static int list_dependencies_print(const char *name, int level, unsigned int branches, bool last) { + int i; + _cleanup_free_ char *n = NULL; + size_t len = 0; + size_t max_len = MAX(columns(),20); + + for (i = level - 1; i >= 0; i--) { + len += 2; + if(len > max_len - 3 && !arg_full) { + printf("%s...\n",max_len % 2 ? "" : " "); + return 0; + } + printf("%s", draw_special_char(branches & (1 << i) ? DRAW_TREE_VERT : DRAW_TREE_SPACE)); + } + len += 2; + if(len > max_len - 3 && !arg_full) { + printf("%s...\n",max_len % 2 ? "" : " "); + return 0; + } + printf("%s", draw_special_char(last ? DRAW_TREE_RIGHT : DRAW_TREE_BRANCH)); + + if(arg_full){ + printf("%s\n", name); + return 0; + } + + n = ellipsize(name, max_len-len, 100); + if(!n) + return log_oom(); + + printf("%s\n", n); + return 0; +} + +static int list_dependencies_get_dependencies(DBusConnection *bus, const char *name, char ***deps) { + static const char * const dependencies[] = { + "Requires", + "RequiresOverridable", + "Requisite", + "RequisiteOverridable", + "Wants" + }; + + _cleanup_free_ char *path; + const char *interface = "org.freedesktop.systemd1.Unit"; + + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + DBusMessageIter iter, sub, sub2, sub3; + + int r = 0; + unsigned int i; + + char **ret = NULL; + char **c; + + assert(bus); + assert(name); + assert(deps); + + path = unit_dbus_path_from_name(name); + if (path == NULL) { + r = -EINVAL; + goto finish; + } + + r = bus_method_call_with_reply( + bus, + "org.freedesktop.systemd1", + path, + "org.freedesktop.DBus.Properties", + "GetAll", + &reply, + NULL, + DBUS_TYPE_STRING, &interface, + DBUS_TYPE_INVALID); + if (r < 0) + goto finish; + + if (!dbus_message_iter_init(reply, &iter) || + dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || + dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_DICT_ENTRY) { + log_error("Failed to parse reply."); + r = -EIO; + goto finish; + } + + dbus_message_iter_recurse(&iter, &sub); + + while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { + const char *prop; + + if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_DICT_ENTRY) { + log_error("Failed to parse reply."); + r = -EIO; + goto finish; + } + + dbus_message_iter_recurse(&sub, &sub2); + + if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &prop, true) < 0) { + log_error("Failed to parse reply."); + r = -EIO; + goto finish; + } + + if (dbus_message_iter_get_arg_type(&sub2) != DBUS_TYPE_VARIANT) { + log_error("Failed to parse reply."); + r = -EIO; + goto finish; + } + + dbus_message_iter_recurse(&sub2, &sub3); + + dbus_message_iter_next(&sub); + + for (i = 0; i < ELEMENTSOF(dependencies); i++) + if (streq(dependencies[i], prop)) { + break; + } + + if (i == ELEMENTSOF(dependencies)) + continue; + + if (dbus_message_iter_get_arg_type(&sub3) == DBUS_TYPE_ARRAY) { + if (dbus_message_iter_get_element_type(&sub3) == DBUS_TYPE_STRING) { + DBusMessageIter sub4; + dbus_message_iter_recurse(&sub3, &sub4); + + while (dbus_message_iter_get_arg_type(&sub4) != DBUS_TYPE_INVALID) { + const char *s; + + assert(dbus_message_iter_get_arg_type(&sub4) == DBUS_TYPE_STRING); + dbus_message_iter_get_basic(&sub4, &s); + c = strv_append(ret, s); + if (c == NULL) { + r = log_oom(); + goto finish; + } + strv_free(ret); + ret = c; + dbus_message_iter_next(&sub4); + } + } + } + } +finish: + if (r < 0) + strv_freep(&ret); + *deps = ret; + return r; +} + +static int list_dependencies_compare(const void *_a, const void *_b) { + const char **a = (const char**) _a, **b = (const char**) _b; + if (unit_name_to_type(*a) == UNIT_TARGET && unit_name_to_type(*b) != UNIT_TARGET) + return 1; + if (unit_name_to_type(*a) != UNIT_TARGET && unit_name_to_type(*b) == UNIT_TARGET) + return -1; + return strcasecmp(*a, *b); +} + +static int list_dependencies_one(DBusConnection *bus, const char *name, int level, char **units, unsigned int branches) { + char **deps = NULL; + char **c; + char **u = NULL; + int r = 0; + + u = strv_append(units, name); + if(!u) + return log_oom(); + + r = list_dependencies_get_dependencies(bus, name, &deps); + if (r < 0) + goto finish; + + qsort(deps, strv_length(deps), sizeof (char*), list_dependencies_compare); + + STRV_FOREACH(c, deps) { + if (strv_contains(u, *c)) { + r = list_dependencies_print("...", level + 1, (branches << 1) | (c[1] == NULL ? 0 : 1), 1); + if(r < 0) + goto finish; + continue; + } + + r = list_dependencies_print(*c, level, branches, c[1] == NULL); + if(r < 0) + goto finish; + + if (arg_all || unit_name_to_type(*c) == UNIT_TARGET) { + r = list_dependencies_one(bus, *c, level + 1, u, (branches << 1) | (c[1] == NULL ? 0 : 1)); + if(r < 0) + goto finish; + } + } + r = 0; +finish: + strv_free(deps); + strv_free(u); + + return r; +} + +static int list_dependencies(DBusConnection *bus, char **args) { + int r = 0; + _cleanup_free_ char *unit = NULL; + + assert(bus); + assert(args[1]); + + unit = unit_name_mangle(args[1]); + if (!unit) + return log_oom(); + + pager_open_if_enabled(); + printf("%s\n", unit); + r = list_dependencies_one(bus, unit, 0, NULL, 0); + return r; +} + static int dot_one_property(const char *name, const char *prop, DBusMessageIter *iter) { static const char * const colors[] = { @@ -4063,7 +4283,7 @@ static int systemctl_help(void) { " status [NAME...|PID...] Show runtime status of one or more units\n" " show [NAME...|JOB...] Show properties of one or more\n" " units/jobs or the manager\n" - " help [NAME...|PID...] Show manual for one or more units\n" + " help [NAME...|PID...] Show manual for one or more units\n" " reset-failed [NAME...] Reset failed state for all, one, or more\n" " units\n" " set-cgroup [NAME] [CGROUP...] Add unit to a control group\n" @@ -4072,7 +4292,9 @@ static int systemctl_help(void) { " Set control group attribute\n" " unset-cgroup-attr [NAME] [ATTR...]\n" " Unset control group attribute\n" - " load [NAME...] Load one or more units\n\n" + " load [NAME...] Load one or more units\n" + " list-dependencies [NAME] Recursively show units which are required\n" + " or wanted by this unit\n\n" "Unit File Commands:\n" " list-unit-files List installed unit files\n" " enable [NAME...] Enable one or more unit files\n" @@ -5088,6 +5310,7 @@ static int systemctl_main(DBusConnection *bus, int argc, char *argv[], DBusError { "unmask", MORE, 2, enable_unit }, { "link", MORE, 2, enable_unit }, { "switch-root", MORE, 2, switch_root }, + { "list-dependencies", EQUAL, 2, list_dependencies }, }; int left; -- cgit v1.2.1 From 34048c8ca6446497afc69d4deb0c5ce42dffc010 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 18 Jan 2013 00:15:25 +0100 Subject: hwdb: update --- hwdb/20-OUI.hwdb | 450 +++++++++++++++++++-- hwdb/20-pci-vendor-product.hwdb | 840 ++++++++++++++++++++++++++++------------ hwdb/20-usb-vendor-product.hwdb | 15 + 3 files changed, 1020 insertions(+), 285 deletions(-) diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb index be98198360..ac07a5d552 100644 --- a/hwdb/20-OUI.hwdb +++ b/hwdb/20-OUI.hwdb @@ -56,7 +56,7 @@ OUI:0050C2010* ID_OUI_FROM_DATABASE=Moisture Systems OUI:0050C2011* - ID_OUI_FROM_DATABASE=BIHL & Wiedemann GmbH + ID_OUI_FROM_DATABASE=Bihl + Wiedemann GmbH OUI:0050C2012* ID_OUI_FROM_DATABASE=Floware System Solutions Ltd. @@ -3656,7 +3656,7 @@ OUI:0050C24CC* ID_OUI_FROM_DATABASE=ImpediMed Limited OUI:0050C24CD* - ID_OUI_FROM_DATABASE=Adasoft AG + ID_OUI_FROM_DATABASE=Bixi Systems AG OUI:0050C24CE* ID_OUI_FROM_DATABASE=Open Date Equipment Limited @@ -5174,7 +5174,7 @@ OUI:0050C26C7* ID_OUI_FROM_DATABASE=QuickCircuit Ltd. OUI:0050C26C8* - ID_OUI_FROM_DATABASE=B&S MEDIA Co., LTD. + ID_OUI_FROM_DATABASE=B&S MEDIA CO., LTD. OUI:0050C26C9* ID_OUI_FROM_DATABASE=NETAMI @@ -5375,7 +5375,7 @@ OUI:0050C270A* ID_OUI_FROM_DATABASE=Efficient Channel Coding OUI:0050C270B* - ID_OUI_FROM_DATABASE=B.E.A.R. Solutions (Australasia) Pty Ltd + ID_OUI_FROM_DATABASE=B.E.A.R. Solutions (Australasia) Pty, Ltd OUI:0050C270C* ID_OUI_FROM_DATABASE=Exertus @@ -7553,7 +7553,7 @@ OUI:0050C29E2* ID_OUI_FROM_DATABASE=E-ViEWS SAFETY SYSTEMS, INC OUI:0050C29E3* - ID_OUI_FROM_DATABASE=beON Automatenmanagement GmbH + ID_OUI_FROM_DATABASE=SAI Informationstechnik OUI:0050C29E4* ID_OUI_FROM_DATABASE=Pyxis Controls WLL @@ -9320,7 +9320,7 @@ OUI:0050C2C36* ID_OUI_FROM_DATABASE=SET GmbH OUI:0050C2C37* - ID_OUI_FROM_DATABASE=BEAR Solutions (Australasia) Pty Ltd + ID_OUI_FROM_DATABASE=B.E.A.R. Solutions (Australasia) Pty, Ltd OUI:0050C2C38* ID_OUI_FROM_DATABASE=Computer Automation Technology Inc @@ -9881,7 +9881,7 @@ OUI:0050C2CF4* ID_OUI_FROM_DATABASE=Baudisch Electronic GmbH OUI:0050C2CF5* - ID_OUI_FROM_DATABASE=Aircell + ID_OUI_FROM_DATABASE=AirCell Inc. OUI:0050C2CF6* ID_OUI_FROM_DATABASE=Epec Oy @@ -10178,7 +10178,7 @@ OUI:0050C2D58* ID_OUI_FROM_DATABASE=NIK-ELEKTRONIKA Ltd OUI:0050C2D59* - ID_OUI_FROM_DATABASE=Buanco System A/S + ID_OUI_FROM_DATABASE=BUANCO SYSTEM A/S OUI:0050C2D5A* ID_OUI_FROM_DATABASE=Embedded Monitoring Systems Ltd. @@ -10535,7 +10535,7 @@ OUI:0050C2DD0* ID_OUI_FROM_DATABASE=IDC Solutions Pty Ltd OUI:0050C2DD1* - ID_OUI_FROM_DATABASE=Dr. Ing. K. Brankamp System Prozessautomation GmbH + ID_OUI_FROM_DATABASE=Brankamp GmbH OUI:0050C2DD2* ID_OUI_FROM_DATABASE=Electronic Applications, Inc. @@ -12547,6 +12547,51 @@ OUI:40D855074* OUI:40D855075* ID_OUI_FROM_DATABASE=Teraflops +OUI:40D855076* + ID_OUI_FROM_DATABASE=INTERNET PROTOCOLO LOGICA SL + +OUI:40D855077* + ID_OUI_FROM_DATABASE=TOEC TECHNOLOGY CO.,LTD + +OUI:40D855078* + ID_OUI_FROM_DATABASE=NACHI-FUJIKOSHI CORP + +OUI:40D855079* + ID_OUI_FROM_DATABASE=DelfiSolutions A/S + +OUI:40D85507A* + ID_OUI_FROM_DATABASE=4embedded + +OUI:40D85507B* + ID_OUI_FROM_DATABASE=IPS Technology Limited + +OUI:40D85507C* + ID_OUI_FROM_DATABASE=Agramkow Fluid Systems A/S + +OUI:40D85507D* + ID_OUI_FROM_DATABASE=Wuxi SiNeng New Energy Co., Ltd. + +OUI:40D85507E* + ID_OUI_FROM_DATABASE=TESCOM CORPORATION + +OUI:40D85507F* + ID_OUI_FROM_DATABASE=Wheatstone Corporation + +OUI:40D855080* + ID_OUI_FROM_DATABASE=Honeywell + +OUI:40D855081* + ID_OUI_FROM_DATABASE=Sicon srl + +OUI:40D855082* + ID_OUI_FROM_DATABASE=ard sa + +OUI:40D855083* + ID_OUI_FROM_DATABASE=DELOPT + +OUI:40D855084* + ID_OUI_FROM_DATABASE=Papendorf Software Engineering GmbH + OUI:000000* ID_OUI_FROM_DATABASE=XEROX CORPORATION @@ -16814,7 +16859,7 @@ OUI:000590* ID_OUI_FROM_DATABASE=Swissvoice Ltd. OUI:000591* - ID_OUI_FROM_DATABASE=Active Silicon Ltd. + ID_OUI_FROM_DATABASE=Active Silicon Ltd OUI:000592* ID_OUI_FROM_DATABASE=Pultek Corp. @@ -17108,7 +17153,7 @@ OUI:0005F2* ID_OUI_FROM_DATABASE=Power R, Inc. OUI:0005F3* - ID_OUI_FROM_DATABASE=Weboyn + ID_OUI_FROM_DATABASE=Webyn OUI:0005F4* ID_OUI_FROM_DATABASE=System Base Co., Ltd. @@ -17324,7 +17369,7 @@ OUI:00063A* ID_OUI_FROM_DATABASE=Dura Micro, Inc. OUI:00063B* - ID_OUI_FROM_DATABASE=Arcturus Networks, Inc. + ID_OUI_FROM_DATABASE=Arcturus Networks Inc. OUI:00063C* ID_OUI_FROM_DATABASE=Intrinsyc Europe Ltd @@ -17645,7 +17690,7 @@ OUI:0006A5* ID_OUI_FROM_DATABASE=PINON Corp. OUI:0006A6* - ID_OUI_FROM_DATABASE=Artistic Licence (UK) Ltd + ID_OUI_FROM_DATABASE=Artistic Licence Engineering Ltd OUI:0006A7* ID_OUI_FROM_DATABASE=Primarion @@ -21332,7 +21377,7 @@ OUI:000B8F* ID_OUI_FROM_DATABASE=AKITA ELECTRONICS SYSTEMS CO.,LTD. OUI:000B90* - ID_OUI_FROM_DATABASE=Adva Optical Networking Inc. + ID_OUI_FROM_DATABASE=ADVA Optical Networking Ltd. OUI:000B91* ID_OUI_FROM_DATABASE=Aglaia Gesellschaft für Bildverarbeitung und Kommunikation mbH @@ -21896,7 +21941,7 @@ OUI:000C4C* ID_OUI_FROM_DATABASE=Arcor AG&Co. OUI:000C4D* - ID_OUI_FROM_DATABASE=ACRA CONTROL + ID_OUI_FROM_DATABASE=Curtiss-Wright Controls Avionics & Electronics OUI:000C4E* ID_OUI_FROM_DATABASE=Winbest Technology CO,LT @@ -22736,7 +22781,7 @@ OUI:000D66* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. OUI:000D67* - ID_OUI_FROM_DATABASE=BelAir Networks Inc. + ID_OUI_FROM_DATABASE=Ericsson OUI:000D68* ID_OUI_FROM_DATABASE=Vinci Systems, Inc. @@ -24647,7 +24692,7 @@ OUI:000FEB* ID_OUI_FROM_DATABASE=Cylon Controls OUI:000FEC* - ID_OUI_FROM_DATABASE=Arkus Inc. + ID_OUI_FROM_DATABASE=ARKUS Inc. OUI:000FED* ID_OUI_FROM_DATABASE=Anam Electronics Co., Ltd @@ -25931,7 +25976,7 @@ OUI:001198* ID_OUI_FROM_DATABASE=Prism Media Products Limited OUI:001199* - ID_OUI_FROM_DATABASE=2wcom GmbH + ID_OUI_FROM_DATABASE=2wcom Systems GmbH OUI:00119A* ID_OUI_FROM_DATABASE=Alkeria srl @@ -26249,7 +26294,7 @@ OUI:001202* ID_OUI_FROM_DATABASE=Decrane Aerospace - Audio International Inc. OUI:001203* - ID_OUI_FROM_DATABASE=Activ Networks + ID_OUI_FROM_DATABASE=ActivNetworks OUI:001204* ID_OUI_FROM_DATABASE=u10 Networks, Inc. @@ -29669,7 +29714,7 @@ OUI:001676* ID_OUI_FROM_DATABASE=Intel Corporation OUI:001677* - ID_OUI_FROM_DATABASE=Bihl+Wiedemann GmbH + ID_OUI_FROM_DATABASE=Bihl + Wiedemann GmbH OUI:001678* ID_OUI_FROM_DATABASE=SHENZHEN BAOAN GAOKE ELECTRONICS CO., LTD @@ -30974,7 +31019,7 @@ OUI:00182C* ID_OUI_FROM_DATABASE=Ascend Networks, Inc. OUI:00182D* - ID_OUI_FROM_DATABASE=Artec Group OÜ + ID_OUI_FROM_DATABASE=Artec Design OUI:00182E* ID_OUI_FROM_DATABASE=XStreamHD, LLC @@ -32852,7 +32897,7 @@ OUI:001A9E* ID_OUI_FROM_DATABASE=ICON Digital International Limited OUI:001A9F* - ID_OUI_FROM_DATABASE=A-Link Europe Ltd + ID_OUI_FROM_DATABASE=A-Link Ltd OUI:001AA0* ID_OUI_FROM_DATABASE=Dell Inc @@ -38903,7 +38948,7 @@ OUI:002281* ID_OUI_FROM_DATABASE=Daintree Networks Inc OUI:002282* - ID_OUI_FROM_DATABASE=8086 Limited + ID_OUI_FROM_DATABASE=8086 Consultancy OUI:002283* ID_OUI_FROM_DATABASE=Juniper Networks @@ -39113,7 +39158,7 @@ OUI:0022C7* ID_OUI_FROM_DATABASE=SEGGER Microcontroller GmbH & Co. KG OUI:0022C8* - ID_OUI_FROM_DATABASE=Applied Instruments + ID_OUI_FROM_DATABASE=Applied Instruments B.V. OUI:0022C9* ID_OUI_FROM_DATABASE=Lenord, Bauer & Co GmbH @@ -41723,7 +41768,7 @@ OUI:00263B* ID_OUI_FROM_DATABASE=Onbnetech OUI:00263C* - ID_OUI_FROM_DATABASE=Bachmann GmbH & Co. KG + ID_OUI_FROM_DATABASE=Bachmann Technology GmbH & Co. KG OUI:00263D* ID_OUI_FROM_DATABASE=MIA Corporation @@ -42407,7 +42452,7 @@ OUI:002722* ID_OUI_FROM_DATABASE=Ubiquiti Networks OUI:0027F8* - ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc + ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc. OUI:002A6A* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -43055,7 +43100,7 @@ OUI:0030D3* ID_OUI_FROM_DATABASE=Agilent Technologies OUI:0030D4* - ID_OUI_FROM_DATABASE=AAE Systems, Inc + ID_OUI_FROM_DATABASE=AAE Systems, Inc. OUI:0030D5* ID_OUI_FROM_DATABASE=DResearch GmbH @@ -44516,7 +44561,7 @@ OUI:0050B1* ID_OUI_FROM_DATABASE=GIDDINGS & LEWIS OUI:0050B2* - ID_OUI_FROM_DATABASE=BRODEL AUTOMATION + ID_OUI_FROM_DATABASE=BRODEL GmbH OUI:0050B3* ID_OUI_FROM_DATABASE=VOICEBOARD CORPORATION @@ -45514,6 +45559,9 @@ OUI:006440* OUI:0064A6* ID_OUI_FROM_DATABASE=Maquet CardioVascular +OUI:00664B* + ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd + OUI:006B9E* ID_OUI_FROM_DATABASE=VIZIO Inc @@ -49244,7 +49292,7 @@ OUI:00D08A* ID_OUI_FROM_DATABASE=PHOTRON USA OUI:00D08B* - ID_OUI_FROM_DATABASE=ADVA Optical Networking Ltd + ID_OUI_FROM_DATABASE=ADVA Optical Networking Ltd. OUI:00D08C* ID_OUI_FROM_DATABASE=GENOA TECHNOLOGY, INC. @@ -50569,6 +50617,9 @@ OUI:044A50* OUI:044BFF* ID_OUI_FROM_DATABASE=GuangZhou Hedy Digital Technology Co., Ltd +OUI:044CEF* + ID_OUI_FROM_DATABASE=Fujian Sanao Technology Co.,Ltd + OUI:044FAA* ID_OUI_FROM_DATABASE=Ruckus Wireless @@ -50693,7 +50744,7 @@ OUI:04E1C8* ID_OUI_FROM_DATABASE=IMS Soluções em Energia Ltda. OUI:04E2F8* - ID_OUI_FROM_DATABASE=AEP srl + ID_OUI_FROM_DATABASE=AEP Ticketing solutions srl OUI:04E451* ID_OUI_FROM_DATABASE=Texas Instruments @@ -51178,6 +51229,9 @@ OUI:080CC9* OUI:080D84* ID_OUI_FROM_DATABASE=GECO, Inc. +OUI:080EA8* + ID_OUI_FROM_DATABASE=Velex s.r.l. + OUI:080FFA* ID_OUI_FROM_DATABASE=KSP INC. @@ -51253,6 +51307,9 @@ OUI:085B0E* OUI:08606E* ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. +OUI:086361* + ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd + OUI:0868D0* ID_OUI_FROM_DATABASE=Japan System Design @@ -51274,6 +51331,9 @@ OUI:0876FF* OUI:087999* ID_OUI_FROM_DATABASE=AIM GmbH +OUI:087A4C* + ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd + OUI:087BAA* ID_OUI_FROM_DATABASE=SVYAZKOMPLEKTSERVICE, LLC @@ -51376,6 +51436,9 @@ OUI:08FAE0* OUI:08FC52* ID_OUI_FROM_DATABASE=OpenXS BV +OUI:08FC88* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:0C130B* ID_OUI_FROM_DATABASE=Uniqoteq Ltd. @@ -51457,6 +51520,9 @@ OUI:0C7D7C* OUI:0C8230* ID_OUI_FROM_DATABASE=SHENZHEN MAGNUS TECHNOLOGIES CO.,LTD +OUI:0C8268* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + OUI:0C826A* ID_OUI_FROM_DATABASE=Wuhan Huagong Genuine Optics Technology Co., Ltd @@ -51481,6 +51547,9 @@ OUI:0C924E* OUI:0C93FB* ID_OUI_FROM_DATABASE=BNS Solutions +OUI:0C96BF* + ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd + OUI:0C9D56* ID_OUI_FROM_DATABASE=Consort Controls Ltd @@ -51871,6 +51940,9 @@ OUI:141BBD* OUI:141BF0* ID_OUI_FROM_DATABASE=Intellimedia Systems Ltd +OUI:1423D7* + ID_OUI_FROM_DATABASE=EUTRONIX CO., LTD. + OUI:142DF5* ID_OUI_FROM_DATABASE=Amphitech @@ -51946,6 +52018,9 @@ OUI:148FC6* OUI:149090* ID_OUI_FROM_DATABASE=KongTop industrial(shen zhen)CO.,LTD +OUI:149448* + ID_OUI_FROM_DATABASE=BLU CASTLE S.A. + OUI:149FE8* ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd. @@ -52225,6 +52300,9 @@ OUI:18E7F4* OUI:18E80F* ID_OUI_FROM_DATABASE=Viking Electronics Inc. +OUI:18E8DD* + ID_OUI_FROM_DATABASE=MODULETEK + OUI:18EF63* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -52279,12 +52357,18 @@ OUI:1C3477* OUI:1C35F1* ID_OUI_FROM_DATABASE=NEW Lift Neue Elektronische Wege Steuerungsbau GmbH +OUI:1C37BF* + ID_OUI_FROM_DATABASE=Cloudium Systems Ltd. + OUI:1C3A4F* ID_OUI_FROM_DATABASE=AccuSpec Electronics, LLC OUI:1C3DE7* ID_OUI_FROM_DATABASE=Sigma Koki Co.,Ltd. +OUI:1C3E84* + ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. + OUI:1C43EC* ID_OUI_FROM_DATABASE=JAPAN CIRCUIT CO.,LTD @@ -52393,6 +52477,9 @@ OUI:1CB17F* OUI:1CB243* ID_OUI_FROM_DATABASE=TDC A/S +OUI:1CBA8C* + ID_OUI_FROM_DATABASE=Texas Instruments + OUI:1CBBA8* ID_OUI_FROM_DATABASE=OJSC "Ufimskiy Zavod "Promsvyaz" @@ -52435,6 +52522,9 @@ OUI:1CF061* OUI:1CF5E7* ID_OUI_FROM_DATABASE=Turtle Industry Co., Ltd. +OUI:1CFA68* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + OUI:1CFEA7* ID_OUI_FROM_DATABASE=IDentytech Solutins Ltd. @@ -52732,6 +52822,9 @@ OUI:24767D* OUI:247703* ID_OUI_FROM_DATABASE=Intel Corporate +OUI:2481AA* + ID_OUI_FROM_DATABASE=KSH International Co., Ltd. + OUI:24828A* ID_OUI_FROM_DATABASE=Prowave Technologies Ltd. @@ -52864,6 +52957,9 @@ OUI:28162E* OUI:2817CE* ID_OUI_FROM_DATABASE=Omnisense Ltd +OUI:281878* + ID_OUI_FROM_DATABASE=Microsoft Corporation + OUI:2818FD* ID_OUI_FROM_DATABASE=Aditya Infotech Ltd. @@ -52873,6 +52969,9 @@ OUI:2826A6* OUI:2829D9* ID_OUI_FROM_DATABASE=GlobalBeiMing technology (Beijing)Co. Ltd +OUI:283152* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + OUI:283410* ID_OUI_FROM_DATABASE=Enigma Diagnostics Limited @@ -52993,6 +53092,9 @@ OUI:28C718* OUI:28C914* ID_OUI_FROM_DATABASE=Taimag Corporation +OUI:28CBEB* + ID_OUI_FROM_DATABASE=One + OUI:28CC01* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -53008,6 +53110,9 @@ OUI:28CD4C* OUI:28CFDA* ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:28CFE9* + ID_OUI_FROM_DATABASE=Apple + OUI:28D1AF* ID_OUI_FROM_DATABASE=Nokia Corporation @@ -53080,6 +53185,9 @@ OUI:2C26C5* OUI:2C27D7* ID_OUI_FROM_DATABASE=Hewlett-Packard Company +OUI:2C282D* + ID_OUI_FROM_DATABASE=BBK COMMUNICATIAO TECHNOLOGY CO.,LTD. + OUI:2C2D48* ID_OUI_FROM_DATABASE=bct electronic GesmbH @@ -53098,6 +53206,9 @@ OUI:2C36A0* OUI:2C36F8* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. +OUI:2C3996* + ID_OUI_FROM_DATABASE=SAGEMCOM + OUI:2C3A28* ID_OUI_FROM_DATABASE=Fagor Electrónica @@ -53122,6 +53233,9 @@ OUI:2C441B* OUI:2C542D* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. +OUI:2C59E5* + ID_OUI_FROM_DATABASE=Hewlett Packard + OUI:2C5AA3* ID_OUI_FROM_DATABASE=PROMATE ELECTRONIC CO.LTD @@ -53143,9 +53257,6 @@ OUI:2C750F* OUI:2C768A* ID_OUI_FROM_DATABASE=Hewlett-Packard Company -OUI:2C7AFE* - ID_OUI_FROM_DATABASE=IEE&E "Black" ops - OUI:2C7B5A* ID_OUI_FROM_DATABASE=Milper Ltd @@ -53206,6 +53317,9 @@ OUI:2CCD27* OUI:2CCD43* ID_OUI_FROM_DATABASE=Summit Technology Group +OUI:2CD05A* + ID_OUI_FROM_DATABASE=Liteon Technology Corporation + OUI:2CD1DA* ID_OUI_FROM_DATABASE=Sanjole, Inc. @@ -53234,7 +53348,10 @@ OUI:2CEE26* ID_OUI_FROM_DATABASE=Petroleum Geo-Services OUI:2CF4C5* - ID_OUI_FROM_DATABASE=Avaya Inc + ID_OUI_FROM_DATABASE=Avaya, Inc + +OUI:30055C* + ID_OUI_FROM_DATABASE=Brother industries, LTD. OUI:300B9C* ID_OUI_FROM_DATABASE=Delta Mobile Systems, Inc. @@ -53575,6 +53692,9 @@ OUI:34C803* OUI:34C99D* ID_OUI_FROM_DATABASE=EIDOLON COMMUNICATIONS TECHNOLOGY CO. LTD. +OUI:34CDBE* + ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd + OUI:34CE94* ID_OUI_FROM_DATABASE=Parsec (Pty) Ltd @@ -53692,6 +53812,9 @@ OUI:3863F6* OUI:386645* ID_OUI_FROM_DATABASE=OOSIC Technology CO.,Ltd +OUI:386793* + ID_OUI_FROM_DATABASE=Asia Optical Co., Inc. + OUI:386BBB* ID_OUI_FROM_DATABASE=Motorola Mobility, Inc. @@ -53914,6 +54037,9 @@ OUI:3C81D8* OUI:3C83B5* ID_OUI_FROM_DATABASE=Advance Vision Electronics Co. Ltd. +OUI:3C86A8* + ID_OUI_FROM_DATABASE=Sangshin elecom .co,, LTD + OUI:3C8AE5* ID_OUI_FROM_DATABASE=Tensun Information Technology(Hangzhou) Co.,LTD @@ -54019,6 +54145,9 @@ OUI:3CF52C* OUI:3CF72A* ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:3CFB96* + ID_OUI_FROM_DATABASE=Emcraft Systems LLC + OUI:4001C6* ID_OUI_FROM_DATABASE=3COM EUROPE LTD @@ -54094,6 +54223,9 @@ OUI:404D8E* OUI:4050E0* ID_OUI_FROM_DATABASE=Milton Security Group LLC +OUI:40516C* + ID_OUI_FROM_DATABASE=Grandex International Corporation + OUI:40520D* ID_OUI_FROM_DATABASE=Pico Technology @@ -54173,7 +54305,7 @@ OUI:40987B* ID_OUI_FROM_DATABASE=Aisino Corporation OUI:409FC7* - ID_OUI_FROM_DATABASE=BAEKCHUN ENC Co., Ltd. + ID_OUI_FROM_DATABASE=BAEKCHUN I&C Co., Ltd. OUI:40A6A4* ID_OUI_FROM_DATABASE=PassivSystems Ltd @@ -54214,6 +54346,9 @@ OUI:40C245* OUI:40C7C9* ID_OUI_FROM_DATABASE=Naviit Inc. +OUI:40CBA8* + ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd + OUI:40CD3A* ID_OUI_FROM_DATABASE=Z3 Technology @@ -54226,6 +54361,9 @@ OUI:40D40E* OUI:40D559* ID_OUI_FROM_DATABASE=MICRO S.E.R.I. +OUI:40E730* + ID_OUI_FROM_DATABASE=DEY Storage Systems, Inc. + OUI:40E793* ID_OUI_FROM_DATABASE=Shenzhen Siviton Technology Co.,Ltd @@ -54284,7 +54422,7 @@ OUI:442B03* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. OUI:44322A* - ID_OUI_FROM_DATABASE=Avaya Inc + ID_OUI_FROM_DATABASE=Avaya, Inc OUI:44334C* ID_OUI_FROM_DATABASE=Shenzhen Bilian electronic CO.,LTD @@ -54469,6 +54607,9 @@ OUI:44ED57* OUI:44F459* ID_OUI_FROM_DATABASE=Samsung Electronics +OUI:44F849* + ID_OUI_FROM_DATABASE=Union Pacific Railroad + OUI:44FB42* ID_OUI_FROM_DATABASE=Apple @@ -54625,6 +54766,9 @@ OUI:48F8B3* OUI:48F8E1* ID_OUI_FROM_DATABASE=Alcatel Lucent WT +OUI:48F925* + ID_OUI_FROM_DATABASE=Maestronic + OUI:48FCB8* ID_OUI_FROM_DATABASE=Woodstream Corporation @@ -54742,6 +54886,9 @@ OUI:4C774F* OUI:4C7897* ID_OUI_FROM_DATABASE=Arrowhead Alarm Products Ltd +OUI:4C804F* + ID_OUI_FROM_DATABASE=Armstrong Monitoring Corp + OUI:4C8093* ID_OUI_FROM_DATABASE=Intel Corporate @@ -54808,6 +54955,9 @@ OUI:4CC94F* OUI:4CCA53* ID_OUI_FROM_DATABASE=Skyera, Inc. +OUI:4CCC34* + ID_OUI_FROM_DATABASE=Motorola Solutions Inc. + OUI:4CE676* ID_OUI_FROM_DATABASE=Buffalo Inc. @@ -54829,6 +54979,9 @@ OUI:5001BB* OUI:50053D* ID_OUI_FROM_DATABASE=CyWee Group Ltd +OUI:500604* + ID_OUI_FROM_DATABASE=Cisco + OUI:500B32* ID_OUI_FROM_DATABASE=Foxda Technology Industrial(ShenZhen)Co.,LTD @@ -54865,6 +55018,9 @@ OUI:502DF4* OUI:502ECE* ID_OUI_FROM_DATABASE=Asahi Electronics Co.,Ltd +OUI:503275* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:503955* ID_OUI_FROM_DATABASE=Cisco SPVTG @@ -54943,6 +55099,9 @@ OUI:50934F* OUI:509772* ID_OUI_FROM_DATABASE=Westinghouse Digital +OUI:509F27* + ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd + OUI:50A4C8* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -54986,7 +55145,7 @@ OUI:50EAD6* ID_OUI_FROM_DATABASE=Apple, Inc. OUI:50EB1A* - ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc + ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc. OUI:50ED94* ID_OUI_FROM_DATABASE=Egatel SL @@ -54994,6 +55153,9 @@ OUI:50ED94* OUI:50F003* ID_OUI_FROM_DATABASE=Open Stack, Inc. +OUI:50F520* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:50F61A* ID_OUI_FROM_DATABASE=Kunshan JADE Technologies co., Ltd. @@ -55573,6 +55735,9 @@ OUI:5CF207* OUI:5CF3FC* ID_OUI_FROM_DATABASE=IBM Corp +OUI:5CF8A1* + ID_OUI_FROM_DATABASE=Murata Manufactuaring Co.,Ltd. + OUI:5CF9DD* ID_OUI_FROM_DATABASE=Dell Inc @@ -55651,6 +55816,9 @@ OUI:6052D0* OUI:605464* ID_OUI_FROM_DATABASE=Eyedro Green Solutions Inc. +OUI:60601F* + ID_OUI_FROM_DATABASE=SZ DJI TECHNOLOGY CO.,LTD + OUI:6063FD* ID_OUI_FROM_DATABASE=Transcend Communication Beijing Co.,Ltd. @@ -55807,6 +55975,9 @@ OUI:60FACD* OUI:60FB42* ID_OUI_FROM_DATABASE=Apple, Inc +OUI:60FEC5* + ID_OUI_FROM_DATABASE=Apple + OUI:6400F1* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -56014,6 +56185,9 @@ OUI:64AE0C* OUI:64AE88* ID_OUI_FROM_DATABASE=Polytec GmbH +OUI:64B310* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:64B64A* ID_OUI_FROM_DATABASE=ViVOtech, Inc. @@ -56026,6 +56200,9 @@ OUI:64BC11* OUI:64C5AA* ID_OUI_FROM_DATABASE=South African Broadcasting Corporation +OUI:64C667* + ID_OUI_FROM_DATABASE=Barnes&Noble + OUI:64C6AF* ID_OUI_FROM_DATABASE=AXERRA Networks Ltd @@ -56182,6 +56359,9 @@ OUI:6879ED* OUI:687F74* ID_OUI_FROM_DATABASE=Cisco-Linksys, LLC +OUI:68831A* + ID_OUI_FROM_DATABASE=Pandora Mobility Corporation + OUI:688470* ID_OUI_FROM_DATABASE=eSSys Co.,Ltd @@ -56233,6 +56413,9 @@ OUI:68AB8A* OUI:68AF13* ID_OUI_FROM_DATABASE=Futura Mobility +OUI:68B094* + ID_OUI_FROM_DATABASE=INESA ELECTRON CO.,LTD + OUI:68B43A* ID_OUI_FROM_DATABASE=WaterFurnace International, Inc. @@ -56500,6 +56683,9 @@ OUI:700514* OUI:700BC0* ID_OUI_FROM_DATABASE=Dewav Technology Company +OUI:70105C* + ID_OUI_FROM_DATABASE=Cisco + OUI:701124* ID_OUI_FROM_DATABASE=Apple @@ -56542,8 +56728,11 @@ OUI:7032D5* OUI:703811* ID_OUI_FROM_DATABASE=Invensys Rail +OUI:7038B4* + ID_OUI_FROM_DATABASE=Low Tech Solutions + OUI:7038EE* - ID_OUI_FROM_DATABASE=Avaya Inc + ID_OUI_FROM_DATABASE=Avaya, Inc OUI:703AD8* ID_OUI_FROM_DATABASE=Shenzhen Afoundry Electronic Co., Ltd @@ -56734,6 +56923,9 @@ OUI:7415E2* OUI:741E93* ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. +OUI:74258A* + ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited + OUI:74273C* ID_OUI_FROM_DATABASE=ChangYang Technology (Nanjing) Co., LTD @@ -56821,6 +57013,9 @@ OUI:747E1A* OUI:747E2D* ID_OUI_FROM_DATABASE=Beijing Thomson CITIC Digital Technology Co. LTD. +OUI:74867A* + ID_OUI_FROM_DATABASE=Dell Inc PCBA Test + OUI:74888B* ID_OUI_FROM_DATABASE=ADB Broadband Italia @@ -56920,6 +57115,9 @@ OUI:74F06D* OUI:74F07D* ID_OUI_FROM_DATABASE=BnCOM Co.,Ltd +OUI:74F102* + ID_OUI_FROM_DATABASE=Beijing HCHCOM Technology Co., Ltd + OUI:74F612* ID_OUI_FROM_DATABASE=Motorola Mobility, Inc. @@ -56965,6 +57163,9 @@ OUI:781DBA* OUI:781DFD* ID_OUI_FROM_DATABASE=Jabil Inc +OUI:781FDB* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:78223D* ID_OUI_FROM_DATABASE=Affirmed Networks @@ -57013,6 +57214,9 @@ OUI:78510C* OUI:785262* ID_OUI_FROM_DATABASE=Shenzhen Hojy Software Co., Ltd. +OUI:78542E* + ID_OUI_FROM_DATABASE=D-Link International + OUI:785517* ID_OUI_FROM_DATABASE=SankyuElectronics @@ -57064,6 +57268,9 @@ OUI:7898FD* OUI:78995C* ID_OUI_FROM_DATABASE=Nationz Technologies Inc +OUI:789966* + ID_OUI_FROM_DATABASE=Musilab Electronics (DongGuan)Co.,Ltd. + OUI:78998F* ID_OUI_FROM_DATABASE=MEDILINE ITALIA SRL @@ -57212,7 +57419,7 @@ OUI:7C11BE* ID_OUI_FROM_DATABASE=Apple, Inc. OUI:7C1476* - ID_OUI_FROM_DATABASE=Damall Technologies S.A.S. Di Ludovic Anselme Glaglanon & C. + ID_OUI_FROM_DATABASE=Damall Technologies SAS OUI:7C160D* ID_OUI_FROM_DATABASE=Saia-Burgess Controls AG @@ -57322,6 +57529,9 @@ OUI:7C94B2* OUI:7C9A9B* ID_OUI_FROM_DATABASE=VSE valencia smart energy +OUI:7CA15D* + ID_OUI_FROM_DATABASE=GN ReSound A/S + OUI:7CA29B* ID_OUI_FROM_DATABASE=D.SignT GmbH & Co. KG @@ -57365,7 +57575,7 @@ OUI:7CC8D7* ID_OUI_FROM_DATABASE=Damalisk OUI:7CCB0D* - ID_OUI_FROM_DATABASE=Aaxeon Technologies Inc. + ID_OUI_FROM_DATABASE=Antaira Technologies, LLC OUI:7CCFCF* ID_OUI_FROM_DATABASE=Shanghai SEARI Intelligent System Co., Ltd @@ -57373,6 +57583,9 @@ OUI:7CCFCF* OUI:7CD1C3* ID_OUI_FROM_DATABASE=Apple Inc +OUI:7CD762* + ID_OUI_FROM_DATABASE=Freestyle Technology Pty Ltd + OUI:7CD9FE* ID_OUI_FROM_DATABASE=New Cosmos Electric Co., Ltd. @@ -57418,6 +57631,9 @@ OUI:7CF0BA* OUI:7CF429* ID_OUI_FROM_DATABASE=NUUO Inc. +OUI:7CFADF* + ID_OUI_FROM_DATABASE=Apple + OUI:7CFE28* ID_OUI_FROM_DATABASE=Salutron Inc. @@ -57721,6 +57937,9 @@ OUI:845787* OUI:845DD7* ID_OUI_FROM_DATABASE=Shenzhen Netcom Electronics Co.,Ltd +OUI:846223* + ID_OUI_FROM_DATABASE=Shenzhen Coship Electronics Co., Ltd. + OUI:8462A6* ID_OUI_FROM_DATABASE=EuroCB (Phils), Inc. @@ -57823,12 +58042,18 @@ OUI:84EA99* OUI:84ED33* ID_OUI_FROM_DATABASE=BBMC Co.,Ltd +OUI:84F493* + ID_OUI_FROM_DATABASE=OMS spol. s.r.o. + OUI:84F64C* ID_OUI_FROM_DATABASE=Cross Point BV OUI:84FCFE* ID_OUI_FROM_DATABASE=Apple +OUI:880DD9* + ID_OUI_FROM_DATABASE=ISC applied systems corp + OUI:881036* ID_OUI_FROM_DATABASE=Panodic(ShenZhen) Electronics Limted @@ -57850,6 +58075,9 @@ OUI:8823FE* OUI:88252C* ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation +OUI:882E5A* + ID_OUI_FROM_DATABASE=storONE + OUI:88308A* ID_OUI_FROM_DATABASE=Murata Manufactuaring Co.,Ltd. @@ -58105,6 +58333,9 @@ OUI:8C76C1* OUI:8C7712* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd +OUI:8C7716* + ID_OUI_FROM_DATABASE=LONGCHEER TELECOMMUNICATION LIMITED + OUI:8C7B9D* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -58249,6 +58480,9 @@ OUI:901900* OUI:901B0E* ID_OUI_FROM_DATABASE=Fujitsu Technology Solutions GmbH +OUI:901D27* + ID_OUI_FROM_DATABASE=zte corporation + OUI:901EDD* ID_OUI_FROM_DATABASE=GREAT COMPUTER CORPORATION @@ -58423,6 +58657,9 @@ OUI:90D852* OUI:90D92C* ID_OUI_FROM_DATABASE=HUG-WITSCHI AG +OUI:90DA4E* + ID_OUI_FROM_DATABASE=AVANU + OUI:90E0F0* ID_OUI_FROM_DATABASE=IEEE P1722 @@ -58597,6 +58834,9 @@ OUI:94CCB9* OUI:94CDAC* ID_OUI_FROM_DATABASE=Creowave Oy +OUI:94CE2C* + ID_OUI_FROM_DATABASE=Sony Mobile Communications AB + OUI:94D019* ID_OUI_FROM_DATABASE=Cydle Corp. @@ -58636,6 +58876,9 @@ OUI:94E711* OUI:94E848* ID_OUI_FROM_DATABASE=FYLDE MICRO LTD +OUI:94EBCD* + ID_OUI_FROM_DATABASE=Research In Motion Limited + OUI:94F692* ID_OUI_FROM_DATABASE=Geminico co.,Ltd. @@ -58876,6 +59119,9 @@ OUI:9C3178* OUI:9C31B6* ID_OUI_FROM_DATABASE=Kulite Semiconductor Products Inc +OUI:9C3AAF* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:9C417C* ID_OUI_FROM_DATABASE=Hame Technology Co., Limited @@ -59032,6 +59278,9 @@ OUI:9CE1D6* OUI:9CE635* ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. +OUI:9CE6E7* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:9CEBE8* ID_OUI_FROM_DATABASE=BizLink (Kunshan) Co.,Ltd @@ -59161,6 +59410,9 @@ OUI:A071A9* OUI:A07332* ID_OUI_FROM_DATABASE=Cashmaster International Limited +OUI:A073FC* + ID_OUI_FROM_DATABASE=Rancore Technologies Private Limited + OUI:A07591* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -59476,6 +59728,12 @@ OUI:A4E731* OUI:A4E7E4* ID_OUI_FROM_DATABASE=Connex GmbH +OUI:A4E991* + ID_OUI_FROM_DATABASE=SISTEMAS AUDIOVISUALES ITELSIS S.L. + +OUI:A4EBD3* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:A4ED4E* ID_OUI_FROM_DATABASE=Motorola Mobility, Inc. @@ -59701,6 +59959,9 @@ OUI:AC162D* OUI:AC1702* ID_OUI_FROM_DATABASE=Fibar Group sp. z o.o. +OUI:AC1826* + ID_OUI_FROM_DATABASE=SEIKO EPSON CORPORATION + OUI:AC199F* ID_OUI_FROM_DATABASE=SUNGROW POWER SUPPLY CO.,LTD. @@ -59950,6 +60211,9 @@ OUI:B01266* OUI:B01408* ID_OUI_FROM_DATABASE=LIGHTSPEED INTERNATIONAL CO. +OUI:B01743* + ID_OUI_FROM_DATABASE=EDISON GLOBAL CIRCUITS LLC + OUI:B01B7C* ID_OUI_FROM_DATABASE=Ontrol A.S. @@ -60055,6 +60319,9 @@ OUI:B0B2DC* OUI:B0B32B* ID_OUI_FROM_DATABASE=Slican Sp. z o.o. +OUI:B0B448* + ID_OUI_FROM_DATABASE=Texas Instruments + OUI:B0B8D5* ID_OUI_FROM_DATABASE=Nanjing Nengrui Auto Equipment CO.,Ltd @@ -60304,6 +60571,9 @@ OUI:B4D8A9* OUI:B4D8DE* ID_OUI_FROM_DATABASE=iota Computing, Inc. +OUI:B4DD15* + ID_OUI_FROM_DATABASE=ControlThings Oy Ab + OUI:B4DF3B* ID_OUI_FROM_DATABASE=Chromlech @@ -60349,6 +60619,9 @@ OUI:B80B9D* OUI:B81413* ID_OUI_FROM_DATABASE=Keen High Holding(HK) Ltd. +OUI:B81619* + ID_OUI_FROM_DATABASE=Motorola Mobility, Inc. + OUI:B817C2* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -60523,6 +60796,9 @@ OUI:B8BB6D* OUI:B8BEBF* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. +OUI:B8C46F* + ID_OUI_FROM_DATABASE=PRIMMCON INDUSTRIES INC + OUI:B8C68E* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -60721,6 +60997,9 @@ OUI:BC851F* OUI:BC8B55* ID_OUI_FROM_DATABASE=NPP ELIKS America Inc. DBA T&M Atlantic +OUI:BC926B* + ID_OUI_FROM_DATABASE=Apple + OUI:BC99BC* ID_OUI_FROM_DATABASE=FonSee Technology Inc. @@ -60766,6 +61045,9 @@ OUI:BCCD45* OUI:BCCFCC* ID_OUI_FROM_DATABASE=HTC Corporation +OUI:BCD177* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + OUI:BCD5B6* ID_OUI_FROM_DATABASE=d2d technologies @@ -60883,6 +61165,9 @@ OUI:C0830A* OUI:C0847A* ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:C0885B* + ID_OUI_FROM_DATABASE=SnD Tech Co., Ltd. + OUI:C08ADE* ID_OUI_FROM_DATABASE=Ruckus Wireless @@ -61408,6 +61693,9 @@ OUI:C8E1A7* OUI:C8EE08* ID_OUI_FROM_DATABASE=TANGTOP TECHNOLOGY CO.,LTD +OUI:C8EEA6* + ID_OUI_FROM_DATABASE=Shenzhen SHX Technology Co., Ltd + OUI:C8EF2E* ID_OUI_FROM_DATABASE=Beijing Gefei Tech. Co., Ltd @@ -61450,6 +61738,9 @@ OUI:CC09C8* OUI:CC0CDA* ID_OUI_FROM_DATABASE=Miljovakt AS +OUI:CC0DEC* + ID_OUI_FROM_DATABASE=Cisco SPVTG + OUI:CC14A6* ID_OUI_FROM_DATABASE=Yichun MyEnergy Domain, Inc @@ -61513,6 +61804,9 @@ OUI:CC5C75* OUI:CC5D4E* ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation +OUI:CC5D57* + ID_OUI_FROM_DATABASE=Information System Research Institute,Inc. + OUI:CC60BB* ID_OUI_FROM_DATABASE=Empower RF Systems @@ -61690,6 +61984,9 @@ OUI:D023DB* OUI:D02788* ID_OUI_FROM_DATABASE=Hon Hai Precision Ind.Co.Ltd +OUI:D02DB3* + ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd + OUI:D03110* ID_OUI_FROM_DATABASE=Ingenic Semiconductor Co.,Ltd @@ -61744,6 +62041,9 @@ OUI:D0699E* OUI:D0738E* ID_OUI_FROM_DATABASE=DONG OH PRECISION CO., LTD. +OUI:D073D5* + ID_OUI_FROM_DATABASE=LIFI LABS MANAGEMENT PTY LTD + OUI:D075BE* ID_OUI_FROM_DATABASE=Reno A&E @@ -61792,6 +62092,9 @@ OUI:D0B53D* OUI:D0BB80* ID_OUI_FROM_DATABASE=SHL Telemedicine International Ltd. +OUI:D0BE2C* + ID_OUI_FROM_DATABASE=CNSLink Co., Ltd. + OUI:D0C1B1* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -61811,11 +62114,14 @@ OUI:D0D212* ID_OUI_FROM_DATABASE=K2NET Co.,Ltd. OUI:D0D286* - ID_OUI_FROM_DATABASE=Beckman Coulter Biomedical K.K. + ID_OUI_FROM_DATABASE=Beckman Coulter K.K. OUI:D0D3FC* ID_OUI_FROM_DATABASE=Mios, Ltd. +OUI:D0D471* + ID_OUI_FROM_DATABASE=MVTECH co., Ltd + OUI:D0D6CC* ID_OUI_FROM_DATABASE=Wintop @@ -61858,6 +62164,9 @@ OUI:D4000D* OUI:D40057* ID_OUI_FROM_DATABASE=MC Technologies GmbH +OUI:D40129* + ID_OUI_FROM_DATABASE=Broadcom Corporation + OUI:D4024A* ID_OUI_FROM_DATABASE=Delphian Systems LLC @@ -61960,6 +62269,9 @@ OUI:D46CBF* OUI:D46CDA* ID_OUI_FROM_DATABASE=CSM GmbH +OUI:D46E5C* + ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd + OUI:D46F42* ID_OUI_FROM_DATABASE=WAXESS USA Inc @@ -62239,6 +62551,9 @@ OUI:D8AF3B* OUI:D8AFF1* ID_OUI_FROM_DATABASE=Panasonic Appliances Company +OUI:D8B02E* + ID_OUI_FROM_DATABASE=Guangzhou Zonerich Business Machine Co., Ltd + OUI:D8B12A* ID_OUI_FROM_DATABASE=Panasonic Mobile Communications Co., Ltd. @@ -62324,7 +62639,7 @@ OUI:DC07C1* ID_OUI_FROM_DATABASE=HangZhou QiYang Technology Co.,Ltd. OUI:DC0B1A* - ID_OUI_FROM_DATABASE=ADB Broadband SpA + ID_OUI_FROM_DATABASE=ADB Broadband Italia OUI:DC0EA1* ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD @@ -62338,6 +62653,9 @@ OUI:DC175A* OUI:DC1D9F* ID_OUI_FROM_DATABASE=U & B tech +OUI:DC1DD4* + ID_OUI_FROM_DATABASE=Microstep-MIS spol. s r.o. + OUI:DC1EA3* ID_OUI_FROM_DATABASE=Accensus LLC @@ -62497,6 +62815,9 @@ OUI:E00C7F* OUI:E0143E* ID_OUI_FROM_DATABASE=Modoosis Inc. +OUI:E01877* + ID_OUI_FROM_DATABASE=Fujitsu Limited + OUI:E01C41* ID_OUI_FROM_DATABASE=Aerohive Networks Inc. @@ -62650,6 +62971,9 @@ OUI:E0C2B7* OUI:E0C3F3* ID_OUI_FROM_DATABASE=ZTE Corporation +OUI:E0C6B3* + ID_OUI_FROM_DATABASE=MilDef AB + OUI:E0C79D* ID_OUI_FROM_DATABASE=Texas Instruments @@ -62731,6 +63055,9 @@ OUI:E41C4B* OUI:E41F13* ID_OUI_FROM_DATABASE=IBM Corp +OUI:E425E7* + ID_OUI_FROM_DATABASE=Apple + OUI:E425E9* ID_OUI_FROM_DATABASE=Color-Chip @@ -62785,12 +63112,18 @@ OUI:E455EA* OUI:E45614* ID_OUI_FROM_DATABASE=Suttle Apparatus +OUI:E457A8* + ID_OUI_FROM_DATABASE=Stuart Manufacturing, Inc. + OUI:E46449* ID_OUI_FROM_DATABASE=Motorola Mobility, Inc. OUI:E467BA* ID_OUI_FROM_DATABASE=Danish Interpretation Systems A/S +OUI:E468A3* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + OUI:E46C21* ID_OUI_FROM_DATABASE=messMa GmbH @@ -63073,6 +63406,9 @@ OUI:E8CBA1* OUI:E8CC32* ID_OUI_FROM_DATABASE=Micronet LTD +OUI:E8CD2D* + ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd + OUI:E8D0FA* ID_OUI_FROM_DATABASE=MKS Instruments Deutschland GmbH @@ -63136,9 +63472,15 @@ OUI:EC233D* OUI:EC2368* ID_OUI_FROM_DATABASE=IntelliVoice Co.,Ltd. +OUI:EC2C49* + ID_OUI_FROM_DATABASE=University of Tokyo + OUI:EC3091* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. +OUI:EC3586* + ID_OUI_FROM_DATABASE=Apple` + OUI:EC3BF0* ID_OUI_FROM_DATABASE=NovelSat @@ -63382,9 +63724,15 @@ OUI:F04DA2* OUI:F05849* ID_OUI_FROM_DATABASE=CareView Communications +OUI:F05A09* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:F05D89* ID_OUI_FROM_DATABASE=Dycon Limited +OUI:F05DC8* + ID_OUI_FROM_DATABASE=Duracell Powermat + OUI:F05F5A* ID_OUI_FROM_DATABASE=Getriebebau NORD GmbH and Co. KG @@ -63400,6 +63748,9 @@ OUI:F065DD* OUI:F06853* ID_OUI_FROM_DATABASE=Integrated Corporation +OUI:F06BCA* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:F073AE* ID_OUI_FROM_DATABASE=PEAK-System Technik @@ -63766,6 +64117,9 @@ OUI:F82EDB* OUI:F82F5B* ID_OUI_FROM_DATABASE=eGauge Systems LLC +OUI:F82FA8* + ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. + OUI:F83094* ID_OUI_FROM_DATABASE=Alcatel-Lucent Telecom Limited @@ -64018,6 +64372,9 @@ OUI:FC5090* OUI:FC52CE* ID_OUI_FROM_DATABASE=Control iD +OUI:FC58FA* + ID_OUI_FROM_DATABASE=Shen Zhen Shi Xin Zhong Xin Technology Co.,Ltd. + OUI:FC5B24* ID_OUI_FROM_DATABASE=Weibel Scientific A/S @@ -64051,6 +64408,9 @@ OUI:FC8329* OUI:FC8399* ID_OUI_FROM_DATABASE=Avaya, Inc +OUI:FC8B97* + ID_OUI_FROM_DATABASE=Shenzhen Gongjin Electronics Co.,Ltd + OUI:FC8E7E* ID_OUI_FROM_DATABASE=Pace plc @@ -64108,6 +64468,12 @@ OUI:FCD4F6* OUI:FCD6BD* ID_OUI_FROM_DATABASE=Robert Bosch GmbH +OUI:FCDB96* + ID_OUI_FROM_DATABASE=ENERVALLEY CO., LTD + +OUI:FCDD55* + ID_OUI_FROM_DATABASE=Shenzhen WeWins wireless Co.,Ltd + OUI:FCE192* ID_OUI_FROM_DATABASE=Sichuan Jinwangtong Electronic Science&Technology Co,.Ltd diff --git a/hwdb/20-pci-vendor-product.hwdb b/hwdb/20-pci-vendor-product.hwdb index 2e87004fc1..f3fbbb7450 100644 --- a/hwdb/20-pci-vendor-product.hwdb +++ b/hwdb/20-pci-vendor-product.hwdb @@ -3,14 +3,11 @@ # Data imported from: http://pci-ids.ucw.cz/v2.2/pci.ids pci:v00000010* - ID_VENDOR_FROM_DATABASE=Allied Telesis, Inc + ID_VENDOR_FROM_DATABASE=Allied Telesis, Inc (Wrong ID) pci:v00000010d00008139* ID_PRODUCT_FROM_DATABASE=AT-2500TX V3 Ethernet -pci:v0000001A* - ID_VENDOR_FROM_DATABASE=Ascend Communications, Inc. - pci:v0000001C* ID_VENDOR_FROM_DATABASE=PEAK-System Technik GmbH @@ -23,9 +20,6 @@ pci:v0000001Cd00000001sv0000001Csd00000004* pci:v0000001Cd00000001sv0000001Csd00000005* ID_PRODUCT_FROM_DATABASE=2 Channel CAN Bus SJC1000 (Optically Isolated) -pci:v00000033* - ID_VENDOR_FROM_DATABASE=Paradyne corp. - pci:v0000003D* ID_VENDOR_FROM_DATABASE=Lockheed Martin-Marietta Corp @@ -35,60 +29,9 @@ pci:v00000059* pci:v00000070* ID_VENDOR_FROM_DATABASE=Hauppauge computer works Inc. -pci:v00000070d00000003* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-250 - -pci:v00000070d00000009* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-150 - -pci:v00000070d00000801* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-150 - -pci:v00000070d00000807* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-150 - -pci:v00000070d00004000* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-350 - -pci:v00000070d00004001* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-250 (v1) - -pci:v00000070d00004009* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-250 - -pci:v00000070d00004800* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-350 - -pci:v00000070d00004801* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-250 MCE - -pci:v00000070d00004803* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-250 - -pci:v00000070d00007444* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-1600 - pci:v00000070d00007801* ID_PRODUCT_FROM_DATABASE=WinTV HVR-1800 MCE -pci:v00000070d00008003* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-150 - -pci:v00000070d00008801* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-150 - -pci:v00000070d0000C108* - ID_PRODUCT_FROM_DATABASE=WinTV-HVR-4400-HD model 1278 - -pci:v00000070d0000C801* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-150 - -pci:v00000070d0000E807* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-500 MCE (1st tuner) - -pci:v00000070d0000E817* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-500 MCE (2nd tuner) - pci:v00000071* ID_VENDOR_FROM_DATABASE=Nebula Electronics Ltd. @@ -101,9 +44,6 @@ pci:v00000095d00000680* pci:v000000A7* ID_VENDOR_FROM_DATABASE=Teles AG (Wrong ID) -pci:v000000F5* - ID_VENDOR_FROM_DATABASE=BFG Technologies, Inc. - pci:v00000100* ID_VENDOR_FROM_DATABASE=Ncipher Corp Ltd @@ -125,39 +65,27 @@ pci:v0000021Bd00008139* pci:v00000270* ID_VENDOR_FROM_DATABASE=Hauppauge computer works Inc. (Wrong ID) -pci:v00000291* - ID_VENDOR_FROM_DATABASE=Davicom Semiconductor, Inc. - -pci:v00000291d00008212* - ID_PRODUCT_FROM_DATABASE=DM9102A(DM9102AE, SM9102AF) Ethernet 100/10 MBit(Rev 40) - pci:v000002AC* ID_VENDOR_FROM_DATABASE=SpeedStream pci:v000002ACd00001012* ID_PRODUCT_FROM_DATABASE=1012 PCMCIA 10/100 Ethernet Card [RTL81xx] -pci:v000002E0* - ID_VENDOR_FROM_DATABASE=XFX Pine Group Inc - pci:v00000303* ID_VENDOR_FROM_DATABASE=Hewlett-Packard Company (Wrong ID) pci:v00000308* - ID_VENDOR_FROM_DATABASE=ZyXEL Communications Corporation + ID_VENDOR_FROM_DATABASE=ZyXEL Communications Corporation (Wrong ID) pci:v00000315* ID_VENDOR_FROM_DATABASE=SK-Electronics Co., Ltd. pci:v00000357* - ID_VENDOR_FROM_DATABASE=TTTech AG + ID_VENDOR_FROM_DATABASE=TTTech Computertechnik AG (Wrong ID) pci:v00000357d0000000A* ID_PRODUCT_FROM_DATABASE=TTP-Monitoring Card V2.0 -pci:v0000036F* - ID_VENDOR_FROM_DATABASE=Trigem Computer Inc. - pci:v00000432* ID_VENDOR_FROM_DATABASE=SCM Microsystems, Inc. @@ -185,9 +113,6 @@ pci:v00000721* pci:v00000777* ID_VENDOR_FROM_DATABASE=Ubiquiti Networks, Inc. -pci:v00000777d00003005* - ID_PRODUCT_FROM_DATABASE=XtremeRange5 - pci:v00000795* ID_VENDOR_FROM_DATABASE=Wired Inc. @@ -197,18 +122,6 @@ pci:v00000795d00006663* pci:v00000795d00006666* ID_PRODUCT_FROM_DATABASE=MediaPress (MPEG2 encoder board) -pci:v000007CA* - ID_VENDOR_FROM_DATABASE=AVerMedia Technologies Inc. - -pci:v000007CAd0000534A* - ID_PRODUCT_FROM_DATABASE=Slim mobile Express DVB-T (Fujitsu) - -pci:v000007CAd0000A301* - ID_PRODUCT_FROM_DATABASE=AVerTV 301 - -pci:v000007CAd0000B808* - ID_PRODUCT_FROM_DATABASE=AVerTV DVB-T Volar (USB 2.0) - pci:v000007D0* ID_VENDOR_FROM_DATABASE=ITT Geospatial Systems @@ -1871,6 +1784,9 @@ pci:v00001002d00004152sv00001043sd0000C002* pci:v00001002d00004152sv00001043sd0000C01A* ID_PRODUCT_FROM_DATABASE=A9600XT/TD +pci:v00001002d00004152sv00001462sd00009510* + ID_PRODUCT_FROM_DATABASE=RX9600XT (MS-8951) + pci:v00001002d00004152sv0000174Bsd00007C29* ID_PRODUCT_FROM_DATABASE=Sapphire Radeon 9600XT @@ -2243,6 +2159,9 @@ pci:v00001002d00004382* pci:v00001002d00004383* ID_PRODUCT_FROM_DATABASE=SBx00 Azalia (Intel HDA) +pci:v00001002d00004383sv00001019sd00002120* + ID_PRODUCT_FROM_DATABASE=A785GM-M + pci:v00001002d00004383sv0000103Csd00001611* ID_PRODUCT_FROM_DATABASE=Pavilion DM1Z-3000 @@ -2276,6 +2195,9 @@ pci:v00001002d00004384* pci:v00001002d00004385* ID_PRODUCT_FROM_DATABASE=SBx00 SMBus Controller +pci:v00001002d00004385sv00001019sd00002120* + ID_PRODUCT_FROM_DATABASE=A785GM-M + pci:v00001002d00004385sv0000103Csd00001611* ID_PRODUCT_FROM_DATABASE=Pavilion DM1Z-3000 @@ -2477,6 +2399,9 @@ pci:v00001002d00004395* pci:v00001002d00004396* ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB EHCI Controller +pci:v00001002d00004396sv00001019sd00002120* + ID_PRODUCT_FROM_DATABASE=A785GM-M + pci:v00001002d00004396sv0000103Csd00001611* ID_PRODUCT_FROM_DATABASE=Pavilion DM1Z-3000 @@ -2495,6 +2420,9 @@ pci:v00001002d00004396sv0000174Bsd00001001* pci:v00001002d00004397* ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI0 Controller +pci:v00001002d00004397sv00001019sd00002120* + ID_PRODUCT_FROM_DATABASE=A785GM-M + pci:v00001002d00004397sv0000103Csd00001611* ID_PRODUCT_FROM_DATABASE=Pavilion DM1Z-3000 @@ -2513,6 +2441,9 @@ pci:v00001002d00004397sv0000174Bsd00001001* pci:v00001002d00004398* ID_PRODUCT_FROM_DATABASE=SB7x0 USB OHCI1 Controller +pci:v00001002d00004398sv00001019sd00002120* + ID_PRODUCT_FROM_DATABASE=A785GM-M + pci:v00001002d00004398sv00001043sd000082EF* ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard @@ -2522,6 +2453,9 @@ pci:v00001002d00004398sv000015D9sd0000A811* pci:v00001002d00004399* ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI2 Controller +pci:v00001002d00004399sv00001019sd00002120* + ID_PRODUCT_FROM_DATABASE=A785GM-M + pci:v00001002d00004399sv00001043sd000082EF* ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard @@ -2534,12 +2468,18 @@ pci:v00001002d00004399sv0000174Bsd00001001* pci:v00001002d0000439C* ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 IDE Controller +pci:v00001002d0000439Csv00001019sd00002120* + ID_PRODUCT_FROM_DATABASE=A785GM-M + pci:v00001002d0000439Csv00001043sd000082EF* ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard pci:v00001002d0000439D* ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 LPC host controller +pci:v00001002d0000439Dsv00001019sd00002120* + ID_PRODUCT_FROM_DATABASE=A785GM-M + pci:v00001002d0000439Dsv0000103Csd00001611* ID_PRODUCT_FROM_DATABASE=Pavilion DM1Z-3000 @@ -3617,6 +3557,9 @@ pci:v00001002d0000515Esv0000103Csd00001304* pci:v00001002d0000515Esv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard +pci:v00001002d0000515Esv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00001002d0000515Esv00008086sd00003476* ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board @@ -4415,6 +4358,9 @@ pci:v00001002d00005E4Dsv0000148Csd00002116* pci:v00001002d00005E4F* ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700] +pci:v00001002d00005E4Fsv00001569sd00001E4F* + ID_PRODUCT_FROM_DATABASE=Radeon X550 XT + pci:v00001002d00005E6B* ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 Pro (PCIE)] (Secondary) @@ -4478,6 +4424,9 @@ pci:v00001002d0000673E* pci:v00001002d00006740* ID_PRODUCT_FROM_DATABASE=Whistler XT [AMD Radeon HD 6700M Series] +pci:v00001002d00006740sv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00001002d00006741* ID_PRODUCT_FROM_DATABASE=Whistler [AMD Radeon HD 6600M Series] @@ -4562,6 +4511,9 @@ pci:v00001002d00006818* pci:v00001002d00006819* ID_PRODUCT_FROM_DATABASE=Pitcairn PRO [Radeon HD 7800] +pci:v00001002d00006819sv0000174Bsd0000E221* + ID_PRODUCT_FROM_DATABASE=Sapphire HD 7850 2G GDDR5 PCI-E DVI-I/DVI-D/HDMI/DP + pci:v00001002d00006820* ID_PRODUCT_FROM_DATABASE=Radeon HD 8800M Series @@ -4736,6 +4688,9 @@ pci:v00001002d000068F9* pci:v00001002d000068F9sv00001028sd0000010E* ID_PRODUCT_FROM_DATABASE=XPS 8300 +pci:v00001002d000068F9sv00001043sd000003C2* + ID_PRODUCT_FROM_DATABASE=EAH5450 SILENT/DI/512MD2 (LP) + pci:v00001002d000068FA* ID_PRODUCT_FROM_DATABASE=EG Cedar [Radeon HD 7300 Series] @@ -5570,6 +5525,9 @@ pci:v00001002d0000964A* pci:v00001002d0000970F* ID_PRODUCT_FROM_DATABASE=RS880 HDMI Audio [Radeon HD 4200 Series] +pci:v00001002d0000970Fsv00001019sd00002120* + ID_PRODUCT_FROM_DATABASE=A785GM-M + pci:v00001002d0000970Fsv00001043sd000083A2* ID_PRODUCT_FROM_DATABASE=M4A785TD Motherboard @@ -5579,6 +5537,9 @@ pci:v00001002d0000970Fsv00001043sd0000843E* pci:v00001002d00009710* ID_PRODUCT_FROM_DATABASE=RS880 [Radeon HD 4200] +pci:v00001002d00009710sv00001019sd00002120* + ID_PRODUCT_FROM_DATABASE=A785GM-M + pci:v00001002d00009710sv00001043sd000083A2* ID_PRODUCT_FROM_DATABASE=M4A785TD Motherboard @@ -5693,6 +5654,9 @@ pci:v00001002d0000AA88* pci:v00001002d0000AA90* ID_PRODUCT_FROM_DATABASE=Turks/Whistler HDMI Audio [Radeon HD 6000 Series] +pci:v00001002d0000AA90sv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00001002d0000AA98* ID_PRODUCT_FROM_DATABASE=Caicos HDMI Audio [Radeon HD 6400 Series] @@ -5702,6 +5666,9 @@ pci:v00001002d0000AA98sv0000174Bsd0000AA98* pci:v00001002d0000AAA0* ID_PRODUCT_FROM_DATABASE=Tahiti XT HDMI Audio [Radeon HD 7970 Series] +pci:v00001002d0000AAB0* + ID_PRODUCT_FROM_DATABASE=Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] + pci:v00001002d0000AC00* ID_PRODUCT_FROM_DATABASE=Theater 600 Pro @@ -7694,6 +7661,9 @@ pci:v00001022d00009600sv00001043sd000082F1* pci:v00001022d00009601* ID_PRODUCT_FROM_DATABASE=RS880 Host Bridge +pci:v00001022d00009601sv00001019sd00002120* + ID_PRODUCT_FROM_DATABASE=A785GM-M + pci:v00001022d00009601sv00001043sd0000843E* ID_PRODUCT_FROM_DATABASE=M5A88-V EVO @@ -9297,10 +9267,10 @@ pci:v00001033d0000002D* ID_PRODUCT_FROM_DATABASE=PCI to C-bus Bridge pci:v00001033d00000035* - ID_PRODUCT_FROM_DATABASE=USB + ID_PRODUCT_FROM_DATABASE=OHCI USB Controller pci:v00001033d00000035sv00001033sd00000035* - ID_PRODUCT_FROM_DATABASE=Hama USB 2.0 CardBus + ID_PRODUCT_FROM_DATABASE=USB Controller pci:v00001033d00000035sv0000103Csd00001293* ID_PRODUCT_FROM_DATABASE=USB add-in card @@ -9402,7 +9372,7 @@ pci:v00001033d000000DF* ID_PRODUCT_FROM_DATABASE=Vr4131 pci:v00001033d000000E0* - ID_PRODUCT_FROM_DATABASE=USB 2.0 + ID_PRODUCT_FROM_DATABASE=uPD72010x USB 2.0 Controller pci:v00001033d000000E0sv000012EEsd00007001* ID_PRODUCT_FROM_DATABASE=Root hub @@ -9437,6 +9407,9 @@ pci:v00001033d0000013A* pci:v00001033d00000194* ID_PRODUCT_FROM_DATABASE=uPD720200 USB 3.0 Host Controller +pci:v00001033d00000194sv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00001033d00000194sv00001028sd000004B2* ID_PRODUCT_FROM_DATABASE=Vostro 3350 @@ -10787,6 +10760,15 @@ pci:v0000104Ad00000009* pci:v0000104Ad00000010* ID_PRODUCT_FROM_DATABASE=STG4000 [3D Prophet Kyro Series] +pci:v0000104Ad00000010sv0000104Asd00004018* + ID_PRODUCT_FROM_DATABASE=ST PowerVR Kyro (64MB AGP TVO) + +pci:v0000104Ad00000010sv00001681sd00000028* + ID_PRODUCT_FROM_DATABASE=3D Prophet 4000XT + +pci:v0000104Ad00000010sv00001681sd0000C010* + ID_PRODUCT_FROM_DATABASE=3D Prophet 4500 TV-Out + pci:v0000104Ad00000010sv00001681sd0000C069* ID_PRODUCT_FROM_DATABASE=3D Prophet 4000XT @@ -11073,7 +11055,7 @@ pci:v0000104Cd00008024sv00001443sd00008024* ID_PRODUCT_FROM_DATABASE=FireBoard Blue pci:v0000104Cd00008024sv00001458sd00001000* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard + ID_PRODUCT_FROM_DATABASE=Motherboard pci:v0000104Cd00008025* ID_PRODUCT_FROM_DATABASE=TSB82AA2 IEEE-1394b Link Layer Controller @@ -11114,6 +11096,9 @@ pci:v0000104Cd00008026sv00001043sd0000808D* pci:v0000104Cd00008027* ID_PRODUCT_FROM_DATABASE=PCI4451 IEEE-1394 Controller +pci:v0000104Cd00008027sv00001028sd000000E5* + ID_PRODUCT_FROM_DATABASE=Latitude C810 + pci:v0000104Cd00008027sv00001028sd000000E6* ID_PRODUCT_FROM_DATABASE=PCI4451 IEEE-1394 Controller (Dell Inspiron 8100) @@ -14753,13 +14738,13 @@ pci:v000010B5d00000001* pci:v000010B5d00000557* ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge -pci:v000010B5d00000557sv0000105Bsd00009030* +pci:v000010B5d00000557sv000010B5sd00009030* ID_PRODUCT_FROM_DATABASE=Digium Tormenta 2 T400P-SS7 or E400P-SS7 Quad T1 or E1 PCI card pci:v000010B5d00001000* ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge -pci:v000010B5d00001000sv0000105Bsd00009030* +pci:v000010B5d00001000sv000010B5sd00009030* ID_PRODUCT_FROM_DATABASE=ATCOM AT400P Quad T1 PCI card pci:v000010B5d00001024* @@ -14792,7 +14777,7 @@ pci:v000010B5d00001147* pci:v000010B5d00002000* ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge -pci:v000010B5d00002000sv0000105Bsd00009030* +pci:v000010B5d00002000sv000010B5sd00009030* ID_PRODUCT_FROM_DATABASE=ATCOM AE400P Quad E1 PCI card pci:v000010B5d00002540* @@ -14813,13 +14798,13 @@ pci:v000010B5d00004000sv000010B5sd00009030* pci:v000010B5d00004001* ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge -pci:v000010B5d00004001sv0000105Bsd00009030* +pci:v000010B5d00004001sv000010B5sd00009030* ID_PRODUCT_FROM_DATABASE=ATCOM A400PE Quad E1 PCI card pci:v000010B5d00004002* ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge -pci:v000010B5d00004002sv0000105Bsd00009030* +pci:v000010B5d00004002sv000010B5sd00009030* ID_PRODUCT_FROM_DATABASE=ATCOM A400PT Quad T1 PCI card pci:v000010B5d00006140* @@ -15305,6 +15290,9 @@ pci:v000010B5d00009056sv000010B5sd00003355* pci:v000010B5d00009056sv000010B5sd00003415* ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCIe TS: Time Synchronisation Board +pci:v000010B5d00009056sv000010B5sd00003493* + ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCL PCIe 3G: Timecode Reader Board + pci:v000010B5d00009056sv00001369sd0000C001* ID_PRODUCT_FROM_DATABASE=LX6464ES @@ -15410,15 +15398,12 @@ pci:v000010B5d0000D00Dsv000010B5sd00009030* pci:v000010B5d0000D33D* ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge -pci:v000010B5d0000D33Dsv0000105Bsd00009030* +pci:v000010B5d0000D33Dsv000010B5sd00009030* ID_PRODUCT_FROM_DATABASE=Tormenta 3 Varion V401PT Quad T1/J1 PCI card pci:v000010B5d0000D44D* ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge -pci:v000010B5d0000D44Dsv0000105Bsd00009030* - ID_PRODUCT_FROM_DATABASE=Tormenta 3 Varion V401PE Quad E1 PCI card - pci:v000010B5d0000D44Dsv000010B5sd000017F6* ID_PRODUCT_FROM_DATABASE=Allo CP100P/E 1-port E1/T1/J1 PCI/PCIe card @@ -15428,6 +15413,9 @@ pci:v000010B5d0000D44Dsv000010B5sd000017F7* pci:v000010B5d0000D44Dsv000010B5sd000017F8* ID_PRODUCT_FROM_DATABASE=Allo CP200P/E 2-port E1/T1/J1 PCI/PCIe card +pci:v000010B5d0000D44Dsv000010B5sd00009030* + ID_PRODUCT_FROM_DATABASE=Tormenta 3 Varion V401PE Quad E1 PCI card + pci:v000010B6* ID_VENDOR_FROM_DATABASE=Madge Networks @@ -16841,6 +16829,9 @@ pci:v000010DEd00000028sv00001092sd00004A02* pci:v000010DEd00000028sv00001092sd00005A00* ID_PRODUCT_FROM_DATABASE=RIVA TNT2/TNT2 Pro +pci:v000010DEd00000028sv00001092sd00005A40* + ID_PRODUCT_FROM_DATABASE=Viper V770D AGP + pci:v000010DEd00000028sv00001092sd00006A02* ID_PRODUCT_FROM_DATABASE=Viper V770 Ultra @@ -16946,6 +16937,9 @@ pci:v000010DEd0000002Dsv00001048sd00000C3A* pci:v000010DEd0000002Dsv00001048sd00000C3B* ID_PRODUCT_FROM_DATABASE=Erazor III LT +pci:v000010DEd0000002Dsv0000107Dsd00002137* + ID_PRODUCT_FROM_DATABASE=WinFast 3D S325 + pci:v000010DEd0000002Dsv000010DEsd00000006* ID_PRODUCT_FROM_DATABASE=RIVA TNT2 Model 64/Model 64 Pro @@ -16964,6 +16958,9 @@ pci:v000010DEd0000002Dsv00001102sd0000102C* pci:v000010DEd0000002Dsv00001462sd00008808* ID_PRODUCT_FROM_DATABASE=MSI-8808 +pci:v000010DEd0000002Dsv000014AFsd00005620* + ID_PRODUCT_FROM_DATABASE=Gamer Cougar Video Edition + pci:v000010DEd0000002Dsv00001554sd00001041* ID_PRODUCT_FROM_DATABASE=Pixelview RIVA TNT2 M64 @@ -17015,9 +17012,18 @@ pci:v000010DEd00000041* pci:v000010DEd00000041sv00001043sd0000817B* ID_PRODUCT_FROM_DATABASE=V9999 Gamer Edition +pci:v000010DEd00000041sv0000107Dsd00002992* + ID_PRODUCT_FROM_DATABASE=WinFast A400 + +pci:v000010DEd00000041sv00001458sd0000310F* + ID_PRODUCT_FROM_DATABASE=Geforce 6800 GV-N6812 + pci:v000010DEd00000042* ID_PRODUCT_FROM_DATABASE=NV40.2 [GeForce 6800 LE] +pci:v000010DEd00000042sv0000107Dsd0000299B* + ID_PRODUCT_FROM_DATABASE=WinFast A400 LE + pci:v000010DEd00000043* ID_PRODUCT_FROM_DATABASE=NV40.3 [GeForce 6800 XE] @@ -21020,6 +21026,9 @@ pci:v000010DEd00000866* pci:v000010DEd00000867* ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9400] +pci:v000010DEd00000867sv0000106Bsd000000AD* + ID_PRODUCT_FROM_DATABASE=iMac 9,1 + pci:v000010DEd00000868* ID_PRODUCT_FROM_DATABASE=C79 [nForce 760i SLI] @@ -21221,18 +21230,33 @@ pci:v000010DEd00000A88* pci:v000010DEd00000A89* ID_PRODUCT_FROM_DATABASE=MCP79 Memory Controller +pci:v000010DEd00000A98* + ID_PRODUCT_FROM_DATABASE=MCP79 Memory Controller + +pci:v000010DEd00000A98sv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=iMac 9,1 + pci:v000010DEd00000AA0* ID_PRODUCT_FROM_DATABASE=MCP79 PCI Express Bridge +pci:v000010DEd00000AA0sv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000AA2* ID_PRODUCT_FROM_DATABASE=MCP79 SMBus +pci:v000010DEd00000AA2sv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000AA2sv000019DAsd0000A123* ID_PRODUCT_FROM_DATABASE=IONITX-F-E pci:v000010DEd00000AA3* ID_PRODUCT_FROM_DATABASE=MCP79 Co-processor +pci:v000010DEd00000AA3sv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000AA3sv000019DAsd0000A123* ID_PRODUCT_FROM_DATABASE=IONITX-F-E @@ -21245,18 +21269,27 @@ pci:v000010DEd00000AA4sv000019DAsd0000A123* pci:v000010DEd00000AA5* ID_PRODUCT_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller +pci:v000010DEd00000AA5sv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000AA5sv000019DAsd0000A123* ID_PRODUCT_FROM_DATABASE=IONITX-F-E pci:v000010DEd00000AA6* ID_PRODUCT_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller +pci:v000010DEd00000AA6sv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000AA6sv000019DAsd0000A123* ID_PRODUCT_FROM_DATABASE=IONITX-F-E pci:v000010DEd00000AA7* ID_PRODUCT_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller +pci:v000010DEd00000AA7sv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000AA7sv000019DAsd0000A123* ID_PRODUCT_FROM_DATABASE=IONITX-F-E @@ -21266,6 +21299,9 @@ pci:v000010DEd00000AA8* pci:v000010DEd00000AA9* ID_PRODUCT_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller +pci:v000010DEd00000AA9sv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000AA9sv000019DAsd0000A123* ID_PRODUCT_FROM_DATABASE=IONITX-F-E @@ -21275,6 +21311,9 @@ pci:v000010DEd00000AAA* pci:v000010DEd00000AAB* ID_PRODUCT_FROM_DATABASE=MCP79 PCI Bridge +pci:v000010DEd00000AABsv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000AAC* ID_PRODUCT_FROM_DATABASE=MCP79 LPC Bridge @@ -21287,12 +21326,18 @@ pci:v000010DEd00000AADsv000019DAsd0000A123* pci:v000010DEd00000AAE* ID_PRODUCT_FROM_DATABASE=MCP79 LPC Bridge +pci:v000010DEd00000AAEsv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000AAF* ID_PRODUCT_FROM_DATABASE=MCP79 LPC Bridge pci:v000010DEd00000AB0* ID_PRODUCT_FROM_DATABASE=MCP79 Ethernet +pci:v000010DEd00000AB0sv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000AB0sv000019DAsd0000A123* ID_PRODUCT_FROM_DATABASE=IONITX-F-E @@ -21326,6 +21371,9 @@ pci:v000010DEd00000AB8* pci:v000010DEd00000AB9* ID_PRODUCT_FROM_DATABASE=MCP79 AHCI Controller +pci:v000010DEd00000AB9sv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000ABA* ID_PRODUCT_FROM_DATABASE=MCP79 AHCI Controller @@ -21347,6 +21395,9 @@ pci:v000010DEd00000ABF* pci:v000010DEd00000AC0* ID_PRODUCT_FROM_DATABASE=MCP79 High Definition Audio +pci:v000010DEd00000AC0sv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000AC1* ID_PRODUCT_FROM_DATABASE=MCP79 High Definition Audio @@ -21359,15 +21410,24 @@ pci:v000010DEd00000AC3* pci:v000010DEd00000AC4* ID_PRODUCT_FROM_DATABASE=MCP79 PCI Express Bridge +pci:v000010DEd00000AC4sv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000AC5* ID_PRODUCT_FROM_DATABASE=MCP79 PCI Express Bridge pci:v000010DEd00000AC6* ID_PRODUCT_FROM_DATABASE=MCP79 PCI Express Bridge +pci:v000010DEd00000AC6sv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000AC7* ID_PRODUCT_FROM_DATABASE=MCP79 PCI Express Bridge +pci:v000010DEd00000AC7sv000010DEsd0000CB79* + ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 + pci:v000010DEd00000AC8* ID_PRODUCT_FROM_DATABASE=MCP79 PCI Express Bridge @@ -21422,6 +21482,9 @@ pci:v000010DEd00000BE9* pci:v000010DEd00000BE9sv00001558sd00008687* ID_PRODUCT_FROM_DATABASE=CLEVO/KAPOK W860CU +pci:v000010DEd00000BE9sv00003842sd00001452* + ID_PRODUCT_FROM_DATABASE=GeForce GTS 450 + pci:v000010DEd00000BEA* ID_PRODUCT_FROM_DATABASE=GF108 High Definition Audio Controller @@ -21590,6 +21653,9 @@ pci:v000010DEd00000DEF* pci:v000010DEd00000DF0* ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 425M] +pci:v000010DEd00000DF1* + ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 420M] + pci:v000010DEd00000DF2* ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 435M] @@ -22530,10 +22596,10 @@ pci:v000010ECd00008167sv00001462sd0000236C* ID_PRODUCT_FROM_DATABASE=945P Neo3-F motherboard pci:v000010ECd00008168* - ID_PRODUCT_FROM_DATABASE=RTL8111/8168B PCI Express Gigabit Ethernet controller + ID_PRODUCT_FROM_DATABASE=RTL8111/8168 PCI Express Gigabit Ethernet controller pci:v000010ECd00008168sv00001019sd00008168* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM + ID_PRODUCT_FROM_DATABASE=RTL8111/8168 PCI Express Gigabit Ethernet controller pci:v000010ECd00008168sv00001028sd000004B2* ID_PRODUCT_FROM_DATABASE=Vostro 3350 @@ -22562,11 +22628,17 @@ pci:v000010ECd00008168sv00001043sd000083A3* pci:v000010ECd00008168sv00001043sd00008432* ID_PRODUCT_FROM_DATABASE=P8P67 and other motherboards +pci:v000010ECd00008168sv00001043sd00008505* + ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard + +pci:v000010ECd00008168sv0000105Bsd00000D7C* + ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard + pci:v000010ECd00008168sv000010ECsd00008168* - ID_PRODUCT_FROM_DATABASE=TEG-ECTX Gigabit PCI-E Adapter [Trendnet] + ID_PRODUCT_FROM_DATABASE=RTL8111/8168 PCI Express Gigabit Ethernet controller pci:v000010ECd00008168sv00001458sd0000E000* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard + ID_PRODUCT_FROM_DATABASE=Motherboard pci:v000010ECd00008168sv00001462sd0000238C* ID_PRODUCT_FROM_DATABASE=Onboard RTL8111b on MSI P965 Platinum Mainboard @@ -26075,6 +26147,9 @@ pci:v00001131d00007134sv00001894sd0000FE01* pci:v00001131d00007134sv00005168sd00000138* ID_PRODUCT_FROM_DATABASE=FLY TV PRIME 34FM +pci:v00001131d00007134sv00005168sd00000300* + ID_PRODUCT_FROM_DATABASE=FlyDVB-S + pci:v00001131d00007134sv00005ACEsd00005070* ID_PRODUCT_FROM_DATABASE=Behold TV 507 FM @@ -27983,6 +28058,9 @@ pci:v00001180d00000552sv00001028sd00000188* pci:v00001180d00000552sv00001043sd00001237* ID_PRODUCT_FROM_DATABASE=A6J-Q008 +pci:v00001180d00000552sv00001043sd00001757* + ID_PRODUCT_FROM_DATABASE=M2400N laptop + pci:v00001180d00000552sv0000144Dsd0000C005* ID_PRODUCT_FROM_DATABASE=X10 Laptop @@ -28091,6 +28169,9 @@ pci:v00001180d00000822sv000017AAsd0000201D* pci:v00001180d00000822sv000017AAsd000020C7* ID_PRODUCT_FROM_DATABASE=ThinkPad T61 +pci:v00001180d00000822sv000017AAsd000020C8* + ID_PRODUCT_FROM_DATABASE=ThinkPad W500 + pci:v00001180d00000832* ID_PRODUCT_FROM_DATABASE=R5C832 IEEE 1394 Controller @@ -30440,6 +30521,9 @@ pci:v00001217d000010F7* pci:v00001217d000011F7* ID_PRODUCT_FROM_DATABASE=OZ600 1394a-2000 Controller +pci:v00001217d000011F7sv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00001217d000013F7* ID_PRODUCT_FROM_DATABASE=1394 OHCI Compliant Host Controller @@ -30554,9 +30638,21 @@ pci:v00001217d00008120* pci:v00001217d00008130* ID_PRODUCT_FROM_DATABASE=Integrated MS/MSPRO/xD Controller +pci:v00001217d00008320* + ID_PRODUCT_FROM_DATABASE=OZ600 MMC/SD Controller + +pci:v00001217d00008320sv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00001217d00008321* ID_PRODUCT_FROM_DATABASE=Integrated MMC/SD controller +pci:v00001217d00008330* + ID_PRODUCT_FROM_DATABASE=OZ600 MS/xD Controller + +pci:v00001217d00008330sv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00001217d00008331* ID_PRODUCT_FROM_DATABASE=O2 Flash Memory Card @@ -31244,6 +31340,9 @@ pci:v0000125Dd00001998* pci:v0000125Dd00001998sv00001028sd000000B1* ID_PRODUCT_FROM_DATABASE=Latitude C600 +pci:v0000125Dd00001998sv00001028sd000000E5* + ID_PRODUCT_FROM_DATABASE=Latitude C810 + pci:v0000125Dd00001998sv00001028sd000000E6* ID_PRODUCT_FROM_DATABASE=ES1983S Maestro-3i (Dell Inspiron 8100) @@ -36614,63 +36713,6 @@ pci:v00001461d0000F436* pci:v00001462* ID_VENDOR_FROM_DATABASE=Micro-Star International Co., Ltd. -pci:v00001462d00005501* - ID_PRODUCT_FROM_DATABASE=nVidia NV15DDR [GeForce2 Ti] - -pci:v00001462d00006819* - ID_PRODUCT_FROM_DATABASE=Broadcom Corporation BCM4306 802.11b/g Wireless LAN Controller [MSI CB54G] - -pci:v00001462d00006825* - ID_PRODUCT_FROM_DATABASE=PCI Card wireless 11g [PC54G] - -pci:v00001462d00006834* - ID_PRODUCT_FROM_DATABASE=RaLink RT2500 802.11g [PC54G2] - -pci:v00001462d00007125* - ID_PRODUCT_FROM_DATABASE=MS-7125 [K8N Neo4 Platinum] - -pci:v00001462d00007235* - ID_PRODUCT_FROM_DATABASE=P965 Neo MS-7235 mainboard - -pci:v00001462d00007242* - ID_PRODUCT_FROM_DATABASE=K9AGM RS485 Motherboard - -pci:v00001462d00007250* - ID_PRODUCT_FROM_DATABASE=MS-7250 Motherboard [K9N Platinum SLI/non-SLI] - -pci:v00001462d00007327* - ID_PRODUCT_FROM_DATABASE=K9AGM2-FIH Motherboard - -pci:v00001462d00007650* - ID_PRODUCT_FROM_DATABASE=Hetis 865GV-E (MS-7065) - -pci:v00001462d00008725* - ID_PRODUCT_FROM_DATABASE=NVIDIA NV25 [GeForce4 Ti 4600] VGA Adapter - -pci:v00001462d00009000* - ID_PRODUCT_FROM_DATABASE=NVIDIA NV28 [GeForce4 Ti 4800] VGA Adapter - -pci:v00001462d00009110* - ID_PRODUCT_FROM_DATABASE=GeFORCE FX5200 - -pci:v00001462d00009119* - ID_PRODUCT_FROM_DATABASE=NVIDIA NV31 [GeForce FX 5600XT] VGA Adapter - -pci:v00001462d00009123* - ID_PRODUCT_FROM_DATABASE=NVIDIA NV31 [GeForce FX 5600] FX5600-VTDR128 [MS-8912] - -pci:v00001462d00009510* - ID_PRODUCT_FROM_DATABASE=Radeon 9600XT - -pci:v00001462d00009511* - ID_PRODUCT_FROM_DATABASE=Radeon 9600XT - -pci:v00001462d00009591* - ID_PRODUCT_FROM_DATABASE=nVidia Corporation NV36 [GeForce FX 5700LE] - -pci:v00001462d0000B834* - ID_PRODUCT_FROM_DATABASE=Wireless 11g Turbo G PCI card [MSI PC60G] - pci:v00001463* ID_VENDOR_FROM_DATABASE=Fast Corporation @@ -38294,6 +38336,9 @@ pci:v000014E4d000016C7sv000014E4sd0000000A* pci:v000014E4d000016DD* ID_PRODUCT_FROM_DATABASE=NetLink BCM5781 Gigabit Ethernet PCI Express +pci:v000014E4d000016F3* + ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5727 Gigabit Ethernet PCIe + pci:v000014E4d000016F7* ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5753 Gigabit Ethernet PCI Express @@ -42101,6 +42146,9 @@ pci:v0000168Cd00000029sv00000777sd00004005* pci:v0000168Cd00000029sv00001186sd00003A7A* ID_PRODUCT_FROM_DATABASE=DWA-552 802.11n Xtreme N Desktop Adapter (rev A2) +pci:v0000168Cd00000029sv00001186sd00003A7D* + ID_PRODUCT_FROM_DATABASE=DWA-552 802.11n Xtreme N Desktop Adapter (rev A3) + pci:v0000168Cd0000002A* ID_PRODUCT_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) @@ -42191,6 +42239,9 @@ pci:v0000168Cd00000030* pci:v0000168Cd00000030sv0000103Csd00001627* ID_PRODUCT_FROM_DATABASE=AR9380/HB112 802.11abgn 3×3 Wi-Fi Adapter +pci:v0000168Cd00000030sv00001186sd00003A7E* + ID_PRODUCT_FROM_DATABASE=DWA-566 Wireless N 300 Dual Band PCIe Desktop Adapter + pci:v0000168Cd00000030sv00001A56sd00002000* ID_PRODUCT_FROM_DATABASE=Killer Wireless-N 1102 Half-size Mini PCIe Card [AR9382] @@ -43590,7 +43641,7 @@ pci:v00001876d0000A103* ID_PRODUCT_FROM_DATABASE=Vigra I/O pci:v0000187E* - ID_VENDOR_FROM_DATABASE=ZyXEL Communication Corporation + ID_VENDOR_FROM_DATABASE=ZyXEL Communications Corporation pci:v0000187Ed00003403* ID_PRODUCT_FROM_DATABASE=ZyAir G-110 802.11g @@ -44184,97 +44235,97 @@ pci:v00001924d00000803sv00001924sd00001201* ID_PRODUCT_FROM_DATABASE=SFA6902F-R1 SFP+ AOE Adapter pci:v00001924d00000803sv00001924sd00006200* - ID_PRODUCT_FROM_DATABASE=SFN5122F-R0 + ID_PRODUCT_FROM_DATABASE=SFN5122F-R0 SFP+ Server Adapter pci:v00001924d00000803sv00001924sd00006201* - ID_PRODUCT_FROM_DATABASE=SFN5122F-R1 + ID_PRODUCT_FROM_DATABASE=SFN5122F-R1 SFP+ Server Adapter pci:v00001924d00000803sv00001924sd00006202* - ID_PRODUCT_FROM_DATABASE=SFN5122F-R2 + ID_PRODUCT_FROM_DATABASE=SFN5122F-R2 SFP+ Server Adapter pci:v00001924d00000803sv00001924sd00006204* - ID_PRODUCT_FROM_DATABASE=SFN5122F-R4 + ID_PRODUCT_FROM_DATABASE=SFN5122F-R4 SFP+ Server Adapter pci:v00001924d00000803sv00001924sd00006205* - ID_PRODUCT_FROM_DATABASE=SFN5122F-R5 + ID_PRODUCT_FROM_DATABASE=SFN5122F-R5 SFP+ Server Adapter pci:v00001924d00000803sv00001924sd00006206* - ID_PRODUCT_FROM_DATABASE=SFN5122F-R6 + ID_PRODUCT_FROM_DATABASE=SFN5122F-R6 SFP+ Server Adapter pci:v00001924d00000803sv00001924sd00006207* - ID_PRODUCT_FROM_DATABASE=SFN5122F-R7 + ID_PRODUCT_FROM_DATABASE=SFN5122F-R7 SFP+ Server Adapter pci:v00001924d00000803sv00001924sd00006210* - ID_PRODUCT_FROM_DATABASE=SFN5322F-R0 + ID_PRODUCT_FROM_DATABASE=SFN5322F-R0 SFP+ Precision Time Synchronization Server Adapter pci:v00001924d00000803sv00001924sd00006211* - ID_PRODUCT_FROM_DATABASE=SFN5322F-R1 + ID_PRODUCT_FROM_DATABASE=SFN5322F-R1 SFP+ Precision Time Synchronization Server Adapter pci:v00001924d00000803sv00001924sd00006217* - ID_PRODUCT_FROM_DATABASE=SFN5322F-R7 + ID_PRODUCT_FROM_DATABASE=SFN5322F-R7 SFP+ Precision Time Synchronization Server Adapter pci:v00001924d00000803sv00001924sd00006227* - ID_PRODUCT_FROM_DATABASE=SFN6122F-R7 + ID_PRODUCT_FROM_DATABASE=SFN6122F-R7 SFP+ Server Adapter pci:v00001924d00000803sv00001924sd00006237* - ID_PRODUCT_FROM_DATABASE=SFN6322F-R7 + ID_PRODUCT_FROM_DATABASE=SFN6322F-R7 SFP+ Precision Time Synchronization Server Adapter pci:v00001924d00000803sv00001924sd00006501* - ID_PRODUCT_FROM_DATABASE=SFN5802K-R1 + ID_PRODUCT_FROM_DATABASE=SFN5802K-R1 Mezzanine Adapter pci:v00001924d00000803sv00001924sd00006511* - ID_PRODUCT_FROM_DATABASE=SFN5814H-R1 + ID_PRODUCT_FROM_DATABASE=SFN5814H-R1 Mezzanine Adapter pci:v00001924d00000803sv00001924sd00006521* - ID_PRODUCT_FROM_DATABASE=SFN5812H-R1 + ID_PRODUCT_FROM_DATABASE=SFN5812H-R1 Mezzanine Adapter pci:v00001924d00000803sv00001924sd00006562* ID_PRODUCT_FROM_DATABASE=SFN6832F-R2 SFP+ Mezzanine Adapter pci:v00001924d00000803sv00001924sd00006A05* - ID_PRODUCT_FROM_DATABASE=SFN5112F-R5 + ID_PRODUCT_FROM_DATABASE=SFN5112F-R5 SFP+ Server Adapter pci:v00001924d00000803sv00001924sd00006A06* - ID_PRODUCT_FROM_DATABASE=SFN5112F-R6 + ID_PRODUCT_FROM_DATABASE=SFN5112F-R6 SFP+ Server Adapter pci:v00001924d00000803sv00001924sd00007206* - ID_PRODUCT_FROM_DATABASE=SFN5162F-R6 + ID_PRODUCT_FROM_DATABASE=SFN5162F-R6 SFP+ Server Adapter pci:v00001924d00000803sv00001924sd00007207* - ID_PRODUCT_FROM_DATABASE=SFN5162F-R7 + ID_PRODUCT_FROM_DATABASE=SFN5162F-R7 SFP+ Server Adapter pci:v00001924d00000803sv00001924sd00007A06* - ID_PRODUCT_FROM_DATABASE=SFN5152F-R6 + ID_PRODUCT_FROM_DATABASE=SFN5152F-R6 SFP+ Server Adapter pci:v00001924d00000803sv00001924sd00007A07* - ID_PRODUCT_FROM_DATABASE=SFN5152F-R7 + ID_PRODUCT_FROM_DATABASE=SFN5152F-R7 SFP+ Server Adapter pci:v00001924d00000813* ID_PRODUCT_FROM_DATABASE=SFL9021 [Solarstorm] pci:v00001924d00000813sv00001924sd00006100* - ID_PRODUCT_FROM_DATABASE=SFN5121T-R0 + ID_PRODUCT_FROM_DATABASE=SFN5121T-R0 10GBASE-T Server Adapter pci:v00001924d00000813sv00001924sd00006102* - ID_PRODUCT_FROM_DATABASE=SFN5121T-R2 + ID_PRODUCT_FROM_DATABASE=SFN5121T-R2 10GBASE-T Server Adapter pci:v00001924d00000813sv00001924sd00006103* - ID_PRODUCT_FROM_DATABASE=SFN5121T-R3 + ID_PRODUCT_FROM_DATABASE=SFN5121T-R3 10GBASE-T Server Adapter pci:v00001924d00000813sv00001924sd00006104* - ID_PRODUCT_FROM_DATABASE=SFN5121T-R4 + ID_PRODUCT_FROM_DATABASE=SFN5121T-R4 10GBASE-T Server Adapter pci:v00001924d00000813sv00001924sd00006902* - ID_PRODUCT_FROM_DATABASE=SFN5111T-R2 + ID_PRODUCT_FROM_DATABASE=SFN5111T-R2 10GBASE-T Server Adapter pci:v00001924d00000813sv00001924sd00006904* - ID_PRODUCT_FROM_DATABASE=SFN5111T-R4 + ID_PRODUCT_FROM_DATABASE=SFN5111T-R4 10GBASE-T Server Adapter pci:v00001924d00000813sv00001924sd00007104* - ID_PRODUCT_FROM_DATABASE=SFN5161T-R4 + ID_PRODUCT_FROM_DATABASE=SFN5161T-R4 10GBASE-T Server Adapter pci:v00001924d00000813sv00001924sd00007904* - ID_PRODUCT_FROM_DATABASE=SFN5151T-R4 + ID_PRODUCT_FROM_DATABASE=SFN5151T-R4 10GBASE-T Server Adapter pci:v00001924d00001803* ID_PRODUCT_FROM_DATABASE=SFC9020 Virtual Function [Solarstorm] @@ -44787,7 +44838,7 @@ pci:v0000197Bd00002363sv00001043sd000081E4* ID_PRODUCT_FROM_DATABASE=P5B [JMB363] pci:v0000197Bd00002363sv00001458sd0000B000* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5 Motherboard + ID_PRODUCT_FROM_DATABASE=Motherboard pci:v0000197Bd00002363sv00001849sd00002363* ID_PRODUCT_FROM_DATABASE=Motherboard (one of many) @@ -45425,6 +45476,9 @@ pci:v00001AF4d00001002* pci:v00001AF4d00001003* ID_PRODUCT_FROM_DATABASE=Virtio console +pci:v00001AF4d00001009* + ID_PRODUCT_FROM_DATABASE=Virtio filesystem + pci:v00001AF5* ID_VENDOR_FROM_DATABASE=Netezza Corp. @@ -45902,6 +45956,12 @@ pci:v00003080* pci:v00003142* ID_VENDOR_FROM_DATABASE=Post Impression Systems. +pci:v000031AB* + ID_VENDOR_FROM_DATABASE=Zonet + +pci:v000031ABd00001FAA* + ID_PRODUCT_FROM_DATABASE=ZEW1602 802.11b/g Wireless Adapter + pci:v00003388* ID_VENDOR_FROM_DATABASE=Hint Corp @@ -47495,6 +47555,9 @@ pci:v00008086d00000044* pci:v00008086d00000044sv00001025sd00000347* ID_PRODUCT_FROM_DATABASE=Aspire 7740G +pci:v00008086d00000044sv00001025sd00000487* + ID_PRODUCT_FROM_DATABASE=TravelMate 5742 + pci:v00008086d00000044sv0000E4BFsd000050C1* ID_PRODUCT_FROM_DATABASE=PC1-GROOVE @@ -47702,9 +47765,15 @@ pci:v00008086d00000101sv0000106Bsd000000DC* pci:v00008086d00000102* ID_PRODUCT_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller +pci:v00008086d00000102sv00001028sd000004AA* + ID_PRODUCT_FROM_DATABASE=XPS 8300 + pci:v00008086d00000104* ID_PRODUCT_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller +pci:v00008086d00000104sv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00008086d00000104sv00001028sd000004B2* ID_PRODUCT_FROM_DATABASE=Vostro 3350 @@ -47765,15 +47834,24 @@ pci:v00008086d00000126sv00001028sd000004CC* pci:v00008086d00000150* ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller +pci:v00008086d00000150sv00001043sd000084CA* + ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard + pci:v00008086d00000151* ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port pci:v00008086d00000151sv00001043sd00001477* ID_PRODUCT_FROM_DATABASE=N56VZ +pci:v00008086d00000151sv00001043sd000084CA* + ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard + pci:v00008086d00000152* ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller +pci:v00008086d00000152sv00001043sd000084CA* + ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard + pci:v00008086d00000153* ID_PRODUCT_FROM_DATABASE=3rd Gen Core Processor Thermal Subsystem @@ -48305,6 +48383,9 @@ pci:v00008086d00000BE0* pci:v00008086d00000BE1* ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller +pci:v00008086d00000BE1sv0000105Bsd00000D7C* + ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard + pci:v00008086d00000BE2* ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller @@ -48365,6 +48446,9 @@ pci:v00008086d00000BF4* pci:v00008086d00000BF5* ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller +pci:v00008086d00000BF5sv0000105Bsd00000D7C* + ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard + pci:v00008086d00000BF6* ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller @@ -48393,82 +48477,100 @@ pci:v00008086d00000C0C* ID_PRODUCT_FROM_DATABASE=Haswell HD Audio Controller pci:v00008086d00000C46* - ID_PRODUCT_FROM_DATABASE=Centerton PCI Express Root Port 1 + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 1 pci:v00008086d00000C47* - ID_PRODUCT_FROM_DATABASE=Centerton PCI Express Root Port 2 + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 2 pci:v00008086d00000C48* - ID_PRODUCT_FROM_DATABASE=Centerton PCI Express Root Port 3 + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 3 pci:v00008086d00000C49* - ID_PRODUCT_FROM_DATABASE=Centerton PCI Express Root Port 4 + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 4 pci:v00008086d00000C4E* - ID_PRODUCT_FROM_DATABASE=Centerton NTB Primary + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 NTB Primary pci:v00008086d00000C54* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Management + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C55* + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 DFX 1 + +pci:v00008086d00000C56* + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 DFX 2 pci:v00008086d00000C59* - ID_PRODUCT_FROM_DATABASE=Centerton SMBus 2.0 Controller 0 + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 SMBus 2.0 Controller 0 pci:v00008086d00000C5A* - ID_PRODUCT_FROM_DATABASE=Centerton SMBus 2.0 Controller 1 + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 SMBus 2.0 Controller 1 + +pci:v00008086d00000C5B* + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 SMBus Controller 2 + +pci:v00008086d00000C5C* + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 SMBus Controller 3 + +pci:v00008086d00000C5D* + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 SMBus Controller 4 + +pci:v00008086d00000C5E* + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 SMBus Controller 5 pci:v00008086d00000C5F* - ID_PRODUCT_FROM_DATABASE=Centerton UART + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 UART pci:v00008086d00000C60* - ID_PRODUCT_FROM_DATABASE=Centerton Integrated Legacy Bus + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Integrated Legacy Bus pci:v00008086d00000C70* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C71* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C72* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C73* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C74* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C75* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C76* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C77* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C78* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C79* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C7A* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C7B* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C7C* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C7D* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C7E* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000C7F* - ID_PRODUCT_FROM_DATABASE=Centerton Internal Fabric + ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal pci:v00008086d00000D00* ID_PRODUCT_FROM_DATABASE=Crystal Well DRAM Controller @@ -49590,7 +49692,7 @@ pci:v00008086d00001049sv0000103Csd000030C1* ID_PRODUCT_FROM_DATABASE=Compaq 6910p pci:v00008086d00001049sv000017AAsd000020B9* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 + ID_PRODUCT_FROM_DATABASE=ThinkPad T61/R61 pci:v00008086d0000104A* ID_PRODUCT_FROM_DATABASE=82566DM Gigabit Network Connection @@ -49958,6 +50060,9 @@ pci:v00008086d00001095* pci:v00008086d00001096* ID_PRODUCT_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper) +pci:v00008086d00001096sv000015D9sd00001096* + ID_PRODUCT_FROM_DATABASE=Motherboard + pci:v00008086d00001096sv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard @@ -51116,6 +51221,9 @@ pci:v00008086d00001501* pci:v00008086d00001502* ID_PRODUCT_FROM_DATABASE=82579LM Gigabit Network Connection +pci:v00008086d00001502sv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00008086d00001503* ID_PRODUCT_FROM_DATABASE=82579V Gigabit Network Connection @@ -51575,6 +51683,9 @@ pci:v00008086d00001C02sv00001043sd0000844D* pci:v00008086d00001C03* ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller +pci:v00008086d00001C03sv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00008086d00001C03sv00001028sd000004B2* ID_PRODUCT_FROM_DATABASE=Vostro 3350 @@ -51599,6 +51710,9 @@ pci:v00008086d00001C09* pci:v00008086d00001C10* ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 1 +pci:v00008086d00001C10sv00001028sd000004AA* + ID_PRODUCT_FROM_DATABASE=XPS 8300 + pci:v00008086d00001C10sv00001028sd000004DA* ID_PRODUCT_FROM_DATABASE=Vostro 3750 @@ -51608,6 +51722,9 @@ pci:v00008086d00001C10sv00008086sd00007270* pci:v00008086d00001C12* ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 2 +pci:v00008086d00001C12sv00001028sd000004AA* + ID_PRODUCT_FROM_DATABASE=XPS 8300 + pci:v00008086d00001C12sv00008086sd00007270* ID_PRODUCT_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] @@ -51623,6 +51740,9 @@ pci:v00008086d00001C14sv00008086sd00007270* pci:v00008086d00001C16* ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 4 +pci:v00008086d00001C16sv00001028sd000004AA* + ID_PRODUCT_FROM_DATABASE=XPS 8300 + pci:v00008086d00001C18* ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 5 @@ -51647,6 +51767,9 @@ pci:v00008086d00001C20* pci:v00008086d00001C20sv00001028sd00000490* ID_PRODUCT_FROM_DATABASE=Alienware M17x R3 +pci:v00008086d00001C20sv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00008086d00001C20sv00001028sd000004AA* ID_PRODUCT_FROM_DATABASE=XPS 8300 @@ -51668,6 +51791,9 @@ pci:v00008086d00001C20sv00008086sd00007270* pci:v00008086d00001C22* ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family SMBus Controller +pci:v00008086d00001C22sv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00008086d00001C22sv00001028sd000004AA* ID_PRODUCT_FROM_DATABASE=XPS 8300 @@ -51692,6 +51818,9 @@ pci:v00008086d00001C25* pci:v00008086d00001C26* ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 +pci:v00008086d00001C26sv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00008086d00001C26sv00001028sd000004AA* ID_PRODUCT_FROM_DATABASE=XPS 8300 @@ -51722,6 +51851,9 @@ pci:v00008086d00001C2Csv00008086sd00007270* pci:v00008086d00001C2D* ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 +pci:v00008086d00001C2Dsv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00008086d00001C2Dsv00001028sd000004AA* ID_PRODUCT_FROM_DATABASE=XPS 8300 @@ -51746,6 +51878,9 @@ pci:v00008086d00001C35* pci:v00008086d00001C3A* ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #1 +pci:v00008086d00001C3Asv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00008086d00001C3Asv00001028sd000004AA* ID_PRODUCT_FROM_DATABASE=XPS 8300 @@ -51833,6 +51968,9 @@ pci:v00008086d00001C4E* pci:v00008086d00001C4F* ID_PRODUCT_FROM_DATABASE=QM67 Express Chipset Family LPC Controller +pci:v00008086d00001C4Fsv00001028sd000004A3* + ID_PRODUCT_FROM_DATABASE=Precision M4600 + pci:v00008086d00001C50* ID_PRODUCT_FROM_DATABASE=B65 Express Chipset Family LPC Controller @@ -52082,6 +52220,9 @@ pci:v00008086d00001E01* pci:v00008086d00001E02* ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] +pci:v00008086d00001E02sv00001043sd000084CA* + ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard + pci:v00008086d00001E03* ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family 6-port SATA Controller [AHCI mode] @@ -52121,6 +52262,9 @@ pci:v00008086d00001E10sv00001043sd00001477* pci:v00008086d00001E10sv00001043sd00001517* ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A +pci:v00008086d00001E10sv00001043sd000084CA* + ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard + pci:v00008086d00001E12* ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 2 @@ -52142,6 +52286,9 @@ pci:v00008086d00001E16sv00001043sd00001477* pci:v00008086d00001E18* ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 5 +pci:v00008086d00001E18sv00001043sd000084CA* + ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard + pci:v00008086d00001E1A* ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 6 @@ -52160,6 +52307,9 @@ pci:v00008086d00001E20sv00001043sd00001477* pci:v00008086d00001E20sv00001043sd00001517* ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A +pci:v00008086d00001E20sv00001043sd00008415* + ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard + pci:v00008086d00001E22* ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller @@ -52169,6 +52319,9 @@ pci:v00008086d00001E22sv00001043sd00001477* pci:v00008086d00001E22sv00001043sd00001517* ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A +pci:v00008086d00001E22sv00001043sd000084CA* + ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard + pci:v00008086d00001E24* ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family Thermal Management Controller @@ -52187,6 +52340,9 @@ pci:v00008086d00001E26sv00001043sd00001477* pci:v00008086d00001E26sv00001043sd00001517* ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A +pci:v00008086d00001E26sv00001043sd000084CA* + ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard + pci:v00008086d00001E2D* ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 @@ -52196,6 +52352,9 @@ pci:v00008086d00001E2Dsv00001043sd00001477* pci:v00008086d00001E2Dsv00001043sd00001517* ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A +pci:v00008086d00001E2Dsv00001043sd000084CA* + ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard + pci:v00008086d00001E31* ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller @@ -52205,6 +52364,9 @@ pci:v00008086d00001E31sv00001043sd00001477* pci:v00008086d00001E31sv00001043sd00001517* ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A +pci:v00008086d00001E31sv00001043sd000084CA* + ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard + pci:v00008086d00001E33* ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family LAN Controller @@ -52217,6 +52379,9 @@ pci:v00008086d00001E3Asv00001043sd00001477* pci:v00008086d00001E3Asv00001043sd00001517* ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A +pci:v00008086d00001E3Asv00001043sd000084CA* + ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard + pci:v00008086d00001E3B* ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #2 @@ -52256,6 +52421,9 @@ pci:v00008086d00001E49* pci:v00008086d00001E4A* ID_PRODUCT_FROM_DATABASE=H77 Express Chipset LPC Controller +pci:v00008086d00001E4Asv00001043sd000084CA* + ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard + pci:v00008086d00001E4B* ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller @@ -52634,18 +52802,27 @@ pci:v00008086d00002448sv0000103Csd000030C1* pci:v00008086d00002448sv0000104Dsd0000902D* ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E +pci:v00008086d00002448sv0000105Bsd00000D7C* + ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard + pci:v00008086d00002448sv0000144Dsd0000C00C* ID_PRODUCT_FROM_DATABASE=P30 notebook pci:v00008086d00002448sv0000144Dsd0000C072* ID_PRODUCT_FROM_DATABASE=Notebook N150P +pci:v00008086d00002448sv00001458sd00005000* + ID_PRODUCT_FROM_DATABASE=GA-D525TUD + pci:v00008086d00002448sv00001734sd00001055* ID_PRODUCT_FROM_DATABASE=Amilo M1420 pci:v00008086d00002448sv000017AAsd000020AE* ID_PRODUCT_FROM_DATABASE=ThinkPad T61 +pci:v00008086d00002448sv00008086sd0000544B* + ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT + pci:v00008086d00002448sv0000E4BFsd0000CC47* ID_PRODUCT_FROM_DATABASE=CCG-RUMBA @@ -52815,7 +52992,10 @@ pci:v00008086d0000244Esv0000103Csd0000330B* ID_PRODUCT_FROM_DATABASE=ProLiant ML150 G6 Server pci:v00008086d0000244Esv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5 Motherboard + ID_PRODUCT_FROM_DATABASE=Motherboard + +pci:v00008086d0000244Esv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard pci:v00008086d0000244Esv00001775sd000011CC* ID_PRODUCT_FROM_DATABASE=CC11/CL11 @@ -53268,7 +53448,7 @@ pci:v00008086d000024C5sv0000103Csd000008B0* ID_PRODUCT_FROM_DATABASE=tc1100 tablet pci:v00008086d000024C5sv00001043sd00001713* - ID_PRODUCT_FROM_DATABASE=M6800N + ID_PRODUCT_FROM_DATABASE=M2400N/M6800N laptop pci:v00008086d000024C5sv00001043sd000080B0* ID_PRODUCT_FROM_DATABASE=P4B533 @@ -53330,6 +53510,9 @@ pci:v00008086d000024C6sv0000103Csd00000890* pci:v00008086d000024C6sv0000103Csd000008B0* ID_PRODUCT_FROM_DATABASE=tc1100 tablet +pci:v00008086d000024C6sv00001043sd00001716* + ID_PRODUCT_FROM_DATABASE=M2400N laptop + pci:v00008086d000024C6sv00001043sd00001826* ID_PRODUCT_FROM_DATABASE=M6800N @@ -54644,8 +54827,11 @@ pci:v00008086d000025D4sv000015D9sd00008680* pci:v00008086d000025D8* ID_PRODUCT_FROM_DATABASE=5000P Chipset Memory Controller Hub +pci:v00008086d000025D8sv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d000025D8sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board + ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board pci:v00008086d000025E2* ID_PRODUCT_FROM_DATABASE=5000 Series Chipset PCI Express x4 Port 2 @@ -54677,8 +54863,11 @@ pci:v00008086d000025F0sv0000103Csd000031FD* pci:v00008086d000025F0sv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard +pci:v00008086d000025F0sv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d000025F0sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board + ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board pci:v00008086d000025F1* ID_PRODUCT_FROM_DATABASE=5000 Series Chipset Reserved Registers @@ -54689,8 +54878,11 @@ pci:v00008086d000025F1sv0000103Csd000031FD* pci:v00008086d000025F1sv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard +pci:v00008086d000025F1sv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d000025F1sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board + ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board pci:v00008086d000025F3* ID_PRODUCT_FROM_DATABASE=5000 Series Chipset Reserved Registers @@ -54701,8 +54893,11 @@ pci:v00008086d000025F3sv0000103Csd000031FD* pci:v00008086d000025F3sv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard +pci:v00008086d000025F3sv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d000025F3sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board + ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board pci:v00008086d000025F5* ID_PRODUCT_FROM_DATABASE=5000 Series Chipset FBD Registers @@ -54713,8 +54908,11 @@ pci:v00008086d000025F5sv0000103Csd000031FD* pci:v00008086d000025F5sv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard +pci:v00008086d000025F5sv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d000025F5sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board + ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board pci:v00008086d000025F6* ID_PRODUCT_FROM_DATABASE=5000 Series Chipset FBD Registers @@ -54725,8 +54923,11 @@ pci:v00008086d000025F6sv0000103Csd000031FD* pci:v00008086d000025F6sv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard +pci:v00008086d000025F6sv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d000025F6sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board + ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board pci:v00008086d000025F7* ID_PRODUCT_FROM_DATABASE=5000 Series Chipset PCI Express x8 Port 2-3 @@ -55319,6 +55520,9 @@ pci:v00008086d00002670sv0000103Csd000031FE* pci:v00008086d00002670sv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard +pci:v00008086d00002670sv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d00002670sv00008086sd00003476* ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board @@ -55334,6 +55538,9 @@ pci:v00008086d00002681sv0000103Csd000031FE* pci:v00008086d00002681sv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard +pci:v00008086d00002681sv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d00002681sv00008086sd00003476* ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board @@ -55361,6 +55568,9 @@ pci:v00008086d00002688sv0000103Csd000031FE* pci:v00008086d00002688sv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard +pci:v00008086d00002688sv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d00002688sv00008086sd00003476* ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board @@ -55379,6 +55589,9 @@ pci:v00008086d00002689sv0000103Csd000031FE* pci:v00008086d00002689sv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard +pci:v00008086d00002689sv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d00002689sv00008086sd00003476* ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board @@ -55394,6 +55607,9 @@ pci:v00008086d0000268Asv0000103Csd000031FE* pci:v00008086d0000268Asv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard +pci:v00008086d0000268Asv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d0000268Asv00008086sd00003476* ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board @@ -55424,6 +55640,9 @@ pci:v00008086d0000268Csv0000103Csd000031FE* pci:v00008086d0000268Csv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard +pci:v00008086d0000268Csv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d0000268Csv00008086sd00003476* ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board @@ -55433,6 +55652,9 @@ pci:v00008086d00002690* pci:v00008086d00002690sv0000103Csd000031FE* ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 +pci:v00008086d00002690sv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d00002692* ID_PRODUCT_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 2 @@ -55463,6 +55685,9 @@ pci:v00008086d0000269Bsv0000103Csd000031FE* pci:v00008086d0000269Bsv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard +pci:v00008086d0000269Bsv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d0000269Bsv00008086sd00003476* ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board @@ -55475,6 +55700,9 @@ pci:v00008086d0000269Esv0000103Csd000031FE* pci:v00008086d0000269Esv000015D9sd00008680* ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard +pci:v00008086d0000269Esv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d00002770* ID_PRODUCT_FROM_DATABASE=82945G/GZ/P/PL Memory Controller Hub @@ -55694,12 +55922,21 @@ pci:v00008086d000027B9sv000017AAsd00002009* pci:v00008086d000027BC* ID_PRODUCT_FROM_DATABASE=NM10 Family LPC Controller +pci:v00008086d000027BCsv0000105Bsd00000D7C* + ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard + pci:v00008086d000027BCsv0000144Dsd0000C072* ID_PRODUCT_FROM_DATABASE=Notebook N150P +pci:v00008086d000027BCsv00001458sd00005001* + ID_PRODUCT_FROM_DATABASE=GA-D525TUD + pci:v00008086d000027BCsv00008086sd00004F4D* ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO +pci:v00008086d000027BCsv00008086sd0000544B* + ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT + pci:v00008086d000027BD* ID_PRODUCT_FROM_DATABASE=82801GHM (ICH7-M DH) LPC Interface Bridge @@ -55733,6 +55970,9 @@ pci:v00008086d000027C0sv00001462sd00007236* pci:v00008086d000027C0sv00001775sd000011CC* ID_PRODUCT_FROM_DATABASE=CC11/CL11 +pci:v00008086d000027C0sv00008086sd0000544B* + ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT + pci:v00008086d000027C0sv00008086sd0000544E* ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP @@ -55745,9 +55985,15 @@ pci:v00008086d000027C1sv00001028sd000001DF* pci:v00008086d000027C1sv0000103Csd00002A3B* ID_PRODUCT_FROM_DATABASE=Pavilion A1512X +pci:v00008086d000027C1sv0000105Bsd00000D7C* + ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard + pci:v00008086d000027C1sv0000144Dsd0000C072* ID_PRODUCT_FROM_DATABASE=Notebook N150P +pci:v00008086d000027C1sv00001458sd0000B005* + ID_PRODUCT_FROM_DATABASE=GA-D525TUD + pci:v00008086d000027C1sv00001775sd000011CC* ID_PRODUCT_FROM_DATABASE=CC11/CL11 @@ -55829,12 +56075,18 @@ pci:v00008086d000027C8sv00001043sd00001237* pci:v00008086d000027C8sv00001043sd00008179* ID_PRODUCT_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard +pci:v00008086d000027C8sv0000105Bsd00000D7C* + ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard + pci:v00008086d000027C8sv0000107Bsd00005048* ID_PRODUCT_FROM_DATABASE=E4500 pci:v00008086d000027C8sv0000144Dsd0000C072* ID_PRODUCT_FROM_DATABASE=Notebook N150P +pci:v00008086d000027C8sv00001458sd00005004* + ID_PRODUCT_FROM_DATABASE=GA-D525TUD + pci:v00008086d000027C8sv00001775sd000011CC* ID_PRODUCT_FROM_DATABASE=CC11/CL11 @@ -55844,6 +56096,9 @@ pci:v00008086d000027C8sv000017AAsd0000200A* pci:v00008086d000027C8sv00008086sd00004F4D* ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO +pci:v00008086d000027C8sv00008086sd0000544B* + ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT + pci:v00008086d000027C8sv00008086sd0000544E* ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP @@ -55883,12 +56138,18 @@ pci:v00008086d000027C9sv00001043sd00001237* pci:v00008086d000027C9sv00001043sd00008179* ID_PRODUCT_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard +pci:v00008086d000027C9sv0000105Bsd00000D7C* + ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard + pci:v00008086d000027C9sv0000107Bsd00005048* ID_PRODUCT_FROM_DATABASE=E4500 pci:v00008086d000027C9sv0000144Dsd0000C072* ID_PRODUCT_FROM_DATABASE=Notebook N150P +pci:v00008086d000027C9sv00001458sd00005004* + ID_PRODUCT_FROM_DATABASE=GA-D525TUD + pci:v00008086d000027C9sv00001775sd000011CC* ID_PRODUCT_FROM_DATABASE=CC11/CL11 @@ -55898,6 +56159,9 @@ pci:v00008086d000027C9sv000017AAsd0000200A* pci:v00008086d000027C9sv00008086sd00004F4D* ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO +pci:v00008086d000027C9sv00008086sd0000544B* + ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT + pci:v00008086d000027C9sv00008086sd0000544E* ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP @@ -55937,12 +56201,18 @@ pci:v00008086d000027CAsv00001043sd00001237* pci:v00008086d000027CAsv00001043sd00008179* ID_PRODUCT_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard +pci:v00008086d000027CAsv0000105Bsd00000D7C* + ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard + pci:v00008086d000027CAsv0000107Bsd00005048* ID_PRODUCT_FROM_DATABASE=E4500 pci:v00008086d000027CAsv0000144Dsd0000C072* ID_PRODUCT_FROM_DATABASE=Notebook N150P +pci:v00008086d000027CAsv00001458sd00005004* + ID_PRODUCT_FROM_DATABASE=GA-D525TUD + pci:v00008086d000027CAsv00001775sd000011CC* ID_PRODUCT_FROM_DATABASE=CC11/CL11 @@ -55988,12 +56258,18 @@ pci:v00008086d000027CBsv00001043sd00001237* pci:v00008086d000027CBsv00001043sd00008179* ID_PRODUCT_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard +pci:v00008086d000027CBsv0000105Bsd00000D7C* + ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard + pci:v00008086d000027CBsv0000107Bsd00005048* ID_PRODUCT_FROM_DATABASE=E4500 pci:v00008086d000027CBsv0000144Dsd0000C072* ID_PRODUCT_FROM_DATABASE=Notebook N150P +pci:v00008086d000027CBsv00001458sd00005004* + ID_PRODUCT_FROM_DATABASE=GA-D525TUD + pci:v00008086d000027CBsv00001775sd000011CC* ID_PRODUCT_FROM_DATABASE=CC11/CL11 @@ -56042,9 +56318,15 @@ pci:v00008086d000027CCsv00001043sd00001237* pci:v00008086d000027CCsv00001043sd00008179* ID_PRODUCT_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard +pci:v00008086d000027CCsv0000105Bsd00000D7C* + ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard + pci:v00008086d000027CCsv0000144Dsd0000C072* ID_PRODUCT_FROM_DATABASE=Notebook N150P +pci:v00008086d000027CCsv00001458sd00005006* + ID_PRODUCT_FROM_DATABASE=GA-D525TUD + pci:v00008086d000027CCsv00001775sd000011CC* ID_PRODUCT_FROM_DATABASE=CC11/CL11 @@ -56054,6 +56336,9 @@ pci:v00008086d000027CCsv000017AAsd0000200B* pci:v00008086d000027CCsv00008086sd00004F4D* ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO +pci:v00008086d000027CCsv00008086sd0000544B* + ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT + pci:v00008086d000027CCsv00008086sd0000544E* ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP @@ -56069,9 +56354,15 @@ pci:v00008086d000027D0sv0000103Csd000030A3* pci:v00008086d000027D0sv0000144Dsd0000C072* ID_PRODUCT_FROM_DATABASE=Notebook N150P +pci:v00008086d000027D0sv00001458sd00005001* + ID_PRODUCT_FROM_DATABASE=GA-D525TUD + pci:v00008086d000027D0sv00001775sd000011CC* ID_PRODUCT_FROM_DATABASE=CC11/CL11 +pci:v00008086d000027D0sv00008086sd0000544B* + ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT + pci:v00008086d000027D2* ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 2 @@ -56087,6 +56378,9 @@ pci:v00008086d000027D2sv0000144Dsd0000C072* pci:v00008086d000027D2sv00001775sd000011CC* ID_PRODUCT_FROM_DATABASE=CC11/CL11 +pci:v00008086d000027D2sv00008086sd0000544B* + ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT + pci:v00008086d000027D4* ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 3 @@ -56096,6 +56390,9 @@ pci:v00008086d000027D4sv0000144Dsd0000C072* pci:v00008086d000027D4sv00001775sd000011CC* ID_PRODUCT_FROM_DATABASE=CC11/CL11 +pci:v00008086d000027D4sv00008086sd0000544B* + ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT + pci:v00008086d000027D6* ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 4 @@ -56108,6 +56405,9 @@ pci:v00008086d000027D6sv0000144Dsd0000C072* pci:v00008086d000027D6sv00001775sd000011CC* ID_PRODUCT_FROM_DATABASE=CC11/CL11 +pci:v00008086d000027D6sv00008086sd0000544B* + ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT + pci:v00008086d000027D8* ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller @@ -56144,6 +56444,9 @@ pci:v00008086d000027D8sv00001043sd00008290* pci:v00008086d000027D8sv00001043sd000082EA* ID_PRODUCT_FROM_DATABASE=P5KPL-CM Motherboard +pci:v00008086d000027D8sv0000105Bsd00000D7C* + ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard + pci:v00008086d000027D8sv0000107Bsd00005048* ID_PRODUCT_FROM_DATABASE=E4500 @@ -56162,6 +56465,9 @@ pci:v00008086d000027D8sv00001447sd00001043* pci:v00008086d000027D8sv0000144Dsd0000C072* ID_PRODUCT_FROM_DATABASE=Notebook N150P +pci:v00008086d000027D8sv00001458sd0000A002* + ID_PRODUCT_FROM_DATABASE=GA-D525TUD (Realtek ALC887) + pci:v00008086d000027D8sv00001458sd0000A102* ID_PRODUCT_FROM_DATABASE=GA-8I945PG-RH Mainboard @@ -56213,6 +56519,9 @@ pci:v00008086d000027DAsv0000103Csd00002A3B* pci:v00008086d000027DAsv00001043sd00008179* ID_PRODUCT_FROM_DATABASE=P5KPL-VM Motherboard +pci:v00008086d000027DAsv0000105Bsd00000D7C* + ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard + pci:v00008086d000027DAsv000010F7sd00008338* ID_PRODUCT_FROM_DATABASE=Panasonic CF-Y5 laptop @@ -56220,7 +56529,7 @@ pci:v00008086d000027DAsv0000144Dsd0000C072* ID_PRODUCT_FROM_DATABASE=Notebook N150P pci:v00008086d000027DAsv00001458sd00005001* - ID_PRODUCT_FROM_DATABASE=GA-8I945PG-RH Mainboard + ID_PRODUCT_FROM_DATABASE=GA-8I945PG-RH/GA-D525TUD Mainboard pci:v00008086d000027DAsv00001775sd000011CC* ID_PRODUCT_FROM_DATABASE=CC11/CL11 @@ -56231,6 +56540,9 @@ pci:v00008086d000027DAsv000017AAsd0000200F* pci:v00008086d000027DAsv00008086sd00004F4D* ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO +pci:v00008086d000027DAsv00008086sd0000544B* + ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT + pci:v00008086d000027DAsv00008086sd0000544E* ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP @@ -57762,7 +58074,7 @@ pci:v00008086d00002A00sv000017AAsd000020B1* ID_PRODUCT_FROM_DATABASE=ThinkPad T61 pci:v00008086d00002A00sv000017AAsd000020B3* - ID_PRODUCT_FROM_DATABASE=T61 + ID_PRODUCT_FROM_DATABASE=ThinkPad T61/R61 pci:v00008086d00002A00sv0000E4BFsd0000CC47* ID_PRODUCT_FROM_DATABASE=CCG-RUMBA @@ -57789,7 +58101,7 @@ pci:v00008086d00002A02sv0000104Dsd0000902D* ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E pci:v00008086d00002A02sv000017AAsd000020B5* - ID_PRODUCT_FROM_DATABASE=T61 + ID_PRODUCT_FROM_DATABASE=ThinkPad T61/R61 pci:v00008086d00002A02sv0000E4BFsd0000CC47* ID_PRODUCT_FROM_DATABASE=CCG-RUMBA @@ -57810,7 +58122,7 @@ pci:v00008086d00002A03sv0000104Dsd0000902D* ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E pci:v00008086d00002A03sv000017AAsd000020B5* - ID_PRODUCT_FROM_DATABASE=T61 + ID_PRODUCT_FROM_DATABASE=ThinkPad T61/R61 pci:v00008086d00002A03sv0000E4BFsd0000CC47* ID_PRODUCT_FROM_DATABASE=CCG-RUMBA @@ -58829,6 +59141,9 @@ pci:v00008086d00003500* pci:v00008086d00003500sv0000103Csd000031FE* ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 +pci:v00008086d00003500sv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d00003501* ID_PRODUCT_FROM_DATABASE=6310ESB PCI Express Upstream Port @@ -58844,6 +59159,9 @@ pci:v00008086d0000350C* pci:v00008086d0000350Csv0000103Csd000031FE* ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 +pci:v00008086d0000350Csv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d0000350D* ID_PRODUCT_FROM_DATABASE=6310ESB PCI Express to PCI-X Bridge @@ -58853,6 +59171,9 @@ pci:v00008086d00003510* pci:v00008086d00003510sv0000103Csd000031FE* ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 +pci:v00008086d00003510sv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d00003511* ID_PRODUCT_FROM_DATABASE=6310ESB PCI Express Downstream Port E1 @@ -58865,6 +59186,9 @@ pci:v00008086d00003515* pci:v00008086d00003518* ID_PRODUCT_FROM_DATABASE=6311ESB/6321ESB PCI Express Downstream Port E3 +pci:v00008086d00003518sv000015D9sd00009680* + ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard + pci:v00008086d00003519* ID_PRODUCT_FROM_DATABASE=6310ESB PCI Express Downstream Port E3 @@ -59529,7 +59853,7 @@ pci:v00008086d00003A37sv00001043sd000082D4* ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard pci:v00008086d00003A37sv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard + ID_PRODUCT_FROM_DATABASE=Motherboard pci:v00008086d00003A38* ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #5 @@ -59547,7 +59871,7 @@ pci:v00008086d00003A38sv00001043sd000082D4* ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard pci:v00008086d00003A38sv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard + ID_PRODUCT_FROM_DATABASE=Motherboard pci:v00008086d00003A39* ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #6 @@ -59565,7 +59889,7 @@ pci:v00008086d00003A39sv00001043sd000082D4* ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard pci:v00008086d00003A39sv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard + ID_PRODUCT_FROM_DATABASE=Motherboard pci:v00008086d00003A3A* ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #1 @@ -61196,12 +61520,6 @@ pci:v00008086d00008185* pci:v00008086d00008186* ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx LPC Bridge -pci:v00008086d0000821C* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #7 - -pci:v00008086d0000821D* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #7 - pci:v00008086d000084C4* ID_PRODUCT_FROM_DATABASE=450KX/GX [Orion] - 82454KX/GX PCI bridge @@ -61598,6 +61916,15 @@ pci:v00008086d00008D19* pci:v00008086d00008D1A* ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #6 +pci:v00008086d00008D1B* + ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #6 + +pci:v00008086d00008D1C* + ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #7 + +pci:v00008086d00008D1D* + ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #7 + pci:v00008086d00008D1E* ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #8 @@ -61829,6 +62156,18 @@ pci:v00008086d00009C1A* pci:v00008086d00009C1B* ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 6 +pci:v00008086d00009C1C* + ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 7 + +pci:v00008086d00009C1D* + ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 7 + +pci:v00008086d00009C1E* + ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 8 + +pci:v00008086d00009C1F* + ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 8 + pci:v00008086d00009C20* ID_PRODUCT_FROM_DATABASE=Lynx Point-LP HD Audio Controller @@ -61847,6 +62186,9 @@ pci:v00008086d00009C24* pci:v00008086d00009C26* ID_PRODUCT_FROM_DATABASE=Lynx Point-LP USB EHCI #1 +pci:v00008086d00009C2D* + ID_PRODUCT_FROM_DATABASE=Lynx Point-LP USB EHCI #2 + pci:v00008086d00009C31* ID_PRODUCT_FROM_DATABASE=Lynx Point-LP USB xHCI HC @@ -61916,15 +62258,27 @@ pci:v00008086d00009C66* pci:v00008086d0000A000* ID_PRODUCT_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge +pci:v00008086d0000A000sv00001458sd00005000* + ID_PRODUCT_FROM_DATABASE=GA-D525TUD + pci:v00008086d0000A000sv00008086sd00004F4D* ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO +pci:v00008086d0000A000sv00008086sd0000544B* + ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT + pci:v00008086d0000A001* ID_PRODUCT_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller +pci:v00008086d0000A001sv00001458sd0000D000* + ID_PRODUCT_FROM_DATABASE=GA-D525TUD + pci:v00008086d0000A001sv00008086sd00004F4D* ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO +pci:v00008086d0000A001sv00008086sd0000544B* + ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT + pci:v00008086d0000A002* ID_PRODUCT_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller diff --git a/hwdb/20-usb-vendor-product.hwdb b/hwdb/20-usb-vendor-product.hwdb index a9b5a7e5a3..423c5fb747 100644 --- a/hwdb/20-usb-vendor-product.hwdb +++ b/hwdb/20-usb-vendor-product.hwdb @@ -46484,6 +46484,21 @@ usb:v2659p1207* usb:v2659p1208* ID_PRODUCT_FROM_DATABASE=Sundtek SkyTV Ultimate III +usb:v2659p1209* + ID_PRODUCT_FROM_DATABASE=MediaTV Analog/FM/ATSC MiniPCIe + +usb:v2659p1210* + ID_PRODUCT_FROM_DATABASE=MediaTV Pro III (EU) + +usb:v2659p1211* + ID_PRODUCT_FROM_DATABASE=MediaTV Pro III (US) + +usb:v2659p1212* + ID_PRODUCT_FROM_DATABASE=MediaTV Pro III MiniPCIe (EU) + +usb:v2659p1213* + ID_PRODUCT_FROM_DATABASE=MediaTV Pro III MiniPCIe (US) + usb:v2730* ID_VENDOR_FROM_DATABASE=Citizen -- cgit v1.2.1 From e608b38a87fde7fd0b882c96ff235b26660ce074 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 18 Jan 2013 00:29:47 +0100 Subject: systemctl: we can use nulstr_contains() for this lookup It's a bit easier to read... --- src/systemctl/systemctl.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 442179d340..003b70647e 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -745,13 +745,12 @@ static int list_dependencies_print(const char *name, int level, unsigned int bra } static int list_dependencies_get_dependencies(DBusConnection *bus, const char *name, char ***deps) { - static const char * const dependencies[] = { - "Requires", - "RequiresOverridable", - "Requisite", - "RequisiteOverridable", - "Wants" - }; + static const char dependencies[] = + "Requires\0" + "RequiresOverridable\0" + "Requisite\0" + "RequisiteOverridable\0" + "Wants\0"; _cleanup_free_ char *path; const char *interface = "org.freedesktop.systemd1.Unit"; @@ -760,8 +759,6 @@ static int list_dependencies_get_dependencies(DBusConnection *bus, const char *n DBusMessageIter iter, sub, sub2, sub3; int r = 0; - unsigned int i; - char **ret = NULL; char **c; @@ -822,15 +819,9 @@ static int list_dependencies_get_dependencies(DBusConnection *bus, const char *n } dbus_message_iter_recurse(&sub2, &sub3); - dbus_message_iter_next(&sub); - for (i = 0; i < ELEMENTSOF(dependencies); i++) - if (streq(dependencies[i], prop)) { - break; - } - - if (i == ELEMENTSOF(dependencies)) + if (!nulstr_contains(dependencies, prop)) continue; if (dbus_message_iter_get_arg_type(&sub3) == DBUS_TYPE_ARRAY) { -- cgit v1.2.1 From e31165b26212b45e135fd4cd7d618a081d50bd28 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 18 Jan 2013 00:36:12 +0100 Subject: systemctl: make list-dependencies default to default.target --- man/systemctl.xml | 14 ++++++++------ src/systemctl/systemctl.c | 22 +++++++++++++--------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/man/systemctl.xml b/man/systemctl.xml index f223383716..60a0f401bd 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -999,12 +999,14 @@ list-dependencies [NAME] - - Shows required and wanted units of given unit. - Target units are recursively expanded. - When is passed - dependency tree is generated for all - subsidiary units. + Shows required and + wanted units of the specified unit. If + no unit is specified + default.target is + implied. Target units are recursively + expanded. When + is passed all other units aare + recursively expanded as well. diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 003b70647e..356854353c 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -905,20 +905,24 @@ finish: } static int list_dependencies(DBusConnection *bus, char **args) { - int r = 0; _cleanup_free_ char *unit = NULL; + const char *u; assert(bus); - assert(args[1]); - unit = unit_name_mangle(args[1]); - if (!unit) - return log_oom(); + if (args[1]) { + unit = unit_name_mangle(args[1]); + if (!unit) + return log_oom(); + u = unit; + } else + u = SPECIAL_DEFAULT_TARGET; pager_open_if_enabled(); - printf("%s\n", unit); - r = list_dependencies_one(bus, unit, 0, NULL, 0); - return r; + + puts(u); + + return list_dependencies_one(bus, u, 0, NULL, 0); } static int dot_one_property(const char *name, const char *prop, DBusMessageIter *iter) { @@ -5301,7 +5305,7 @@ static int systemctl_main(DBusConnection *bus, int argc, char *argv[], DBusError { "unmask", MORE, 2, enable_unit }, { "link", MORE, 2, enable_unit }, { "switch-root", MORE, 2, switch_root }, - { "list-dependencies", EQUAL, 2, list_dependencies }, + { "list-dependencies", LESS, 2, list_dependencies }, }; int left; -- cgit v1.2.1 From 82dde599ed2b8aa4877900d84e7a2ddc31ef8da2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 18 Jan 2013 00:47:19 +0100 Subject: strv: make strv_extend() smarter --- src/shared/strv.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/shared/strv.c b/src/shared/strv.c index aed45d2612..2d556f4a07 100644 --- a/src/shared/strv.c +++ b/src/shared/strv.c @@ -372,15 +372,26 @@ fail: int strv_extend(char ***l, const char *value) { char **c; + char *v; + unsigned n; if (!value) return 0; - c = strv_append(*l, value); - if (!c) + v = strdup(value); + if (!v) return -ENOMEM; - strv_free(*l); + n = strv_length(*l); + c = realloc(*l, sizeof(char*) * (n + 2)); + if (!c) { + free(v); + return -ENOMEM; + } + + c[n] = v; + c[n+1] = NULL; + *l = c; return 0; } -- cgit v1.2.1 From 540e7dbe9edeb7a309a89c51f22d27e3a7cd6390 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 18 Jan 2013 00:51:46 +0100 Subject: systemctl: we can make this faster and shorten it a bit with strv_extend() Now that strv_extend() is not so slow anymore, we can make use of it, to shorten our code a bit. --- src/systemctl/systemctl.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 356854353c..852c4d1a86 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -760,7 +760,6 @@ static int list_dependencies_get_dependencies(DBusConnection *bus, const char *n int r = 0; char **ret = NULL; - char **c; assert(bus); assert(name); @@ -834,13 +833,13 @@ static int list_dependencies_get_dependencies(DBusConnection *bus, const char *n assert(dbus_message_iter_get_arg_type(&sub4) == DBUS_TYPE_STRING); dbus_message_iter_get_basic(&sub4, &s); - c = strv_append(ret, s); - if (c == NULL) { - r = log_oom(); + + r = strv_extend(&ret, s); + if (r < 0) { + log_oom(); goto finish; } - strv_free(ret); - ret = c; + dbus_message_iter_next(&sub4); } } -- cgit v1.2.1 From 52a2ab41e029728ef0a4303d7aafc9d47f116004 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 18 Jan 2013 00:52:45 +0100 Subject: systemctl: no need to check this explicitly, we already checked it a few lines up anyway, so let's just assert --- src/systemctl/systemctl.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 852c4d1a86..de1a022ae3 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -797,12 +797,7 @@ static int list_dependencies_get_dependencies(DBusConnection *bus, const char *n while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { const char *prop; - if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_DICT_ENTRY) { - log_error("Failed to parse reply."); - r = -EIO; - goto finish; - } - + assert(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_DICT_ENTRY); dbus_message_iter_recurse(&sub, &sub2); if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &prop, true) < 0) { -- cgit v1.2.1 From d54110d11d5ea3381cfdd129356b91669b547216 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 18 Jan 2013 00:53:06 +0100 Subject: systemctl: it's probably a good idea not to alter return parameters if we fail We generally follow the rule not to touch return values unless we succeed, so for the sake of uniformity do the same here. --- src/systemctl/systemctl.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index de1a022ae3..cac70673c8 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -842,8 +842,9 @@ static int list_dependencies_get_dependencies(DBusConnection *bus, const char *n } finish: if (r < 0) - strv_freep(&ret); - *deps = ret; + strv_free(ret); + else + *deps = ret; return r; } -- cgit v1.2.1 From d2a30975827b3447ca0fd5a2c06ec1ff15ce7f0f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 18 Jan 2013 01:44:41 +0100 Subject: systemctl: add new "get-cgroup-attr" to query current cgroup attribute value Also adds a pair of bus calls for this to the daemon. --- src/core/cgroup-attr.c | 10 ++---- src/core/dbus-manager.c | 53 +++++++++++++++++++++++----- src/core/dbus-unit.c | 89 +++++++++++++++++++++++++++++++++++++++++++++++ src/core/dbus-unit.h | 19 ++++++---- src/shared/util.c | 3 ++ src/systemctl/systemctl.c | 65 ++++++++++++++++++++++++++++++++-- 6 files changed, 214 insertions(+), 25 deletions(-) diff --git a/src/core/cgroup-attr.c b/src/core/cgroup-attr.c index cedf37de50..aed4e99d86 100644 --- a/src/core/cgroup-attr.c +++ b/src/core/cgroup-attr.c @@ -25,8 +25,7 @@ int cgroup_attribute_apply(CGroupAttribute *a, CGroupBonding *b) { int r; - char *path = NULL; - char *v = NULL; + _cleanup_free_ char *path = NULL, *v = NULL; assert(a); @@ -41,18 +40,13 @@ int cgroup_attribute_apply(CGroupAttribute *a, CGroupBonding *b) { } r = cg_get_path(a->controller, b->path, a->name, &path); - if (r < 0) { - free(v); + if (r < 0) return r; - } r = write_one_line_file(path, v ? v : a->value); if (r < 0) log_warning("Failed to write '%s' to %s: %s", v ? v : a->value, path, strerror(-r)); - free(path); - free(v); - return r; } diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 1d785a2347..b7829572f5 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -102,15 +102,10 @@ " \n" \ " \n" \ " \n" \ - " \n" \ - " \n" \ - " \n" \ - " \n" \ - " \n" \ - " \n" \ + " \n" \ " \n" \ - " \n" \ - " " \ + " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -122,6 +117,16 @@ " \n" \ " \n" \ " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " " \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -979,6 +984,38 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, if (!reply) goto oom; + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "GetUnitControlGroupAttributes")) { + const char *name; + Unit *u; + DBusMessageIter iter; + _cleanup_strv_free_ char **list = NULL; + + if (!dbus_message_iter_init(message, &iter)) + goto oom; + + r = bus_iter_get_basic_and_next(&iter, DBUS_TYPE_STRING, &name, true); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + u = manager_get_unit(m, name); + if (!u) { + dbus_set_error(&error, BUS_ERROR_NO_SUCH_UNIT, "Unit %s is not loaded.", name); + return bus_send_error_reply(connection, message, &error, -ENOENT); + } + + SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "status"); + r = bus_unit_cgroup_attribute_get(u, &iter, &list); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + reply = dbus_message_new_method_return(message); + if (!reply) + goto oom; + + dbus_message_iter_init_append(reply, &iter); + if (bus_append_strv_iter(&iter, list) < 0) + goto oom; + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "ListUnits")) { DBusMessageIter iter, sub; Iterator i; diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c index c7bf043764..d2f8ebf760 100644 --- a/src/core/dbus-unit.c +++ b/src/core/dbus-unit.c @@ -502,6 +502,27 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusConnection *conn reply = dbus_message_new_method_return(message); if (!reply) goto oom; + } else if (streq_ptr(dbus_message_get_member(message), "GetControlGroupAttributes")) { + DBusMessageIter iter; + _cleanup_strv_free_ char **list = NULL; + + SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "status"); + + if (!dbus_message_iter_init(message, &iter)) + goto oom; + + r = bus_unit_cgroup_attribute_get(u, &iter, &list); + if (r < 0) + return bus_send_error_reply(connection, message, NULL, r); + + reply = dbus_message_new_method_return(message); + if (!reply) + goto oom; + + dbus_message_iter_init_append(reply, &iter); + if (bus_append_strv_iter(&iter, list) < 0) + goto oom; + } else if (streq_ptr(dbus_message_get_member(message), "SetControlGroupAttributes")) { DBusMessageIter iter; @@ -965,6 +986,74 @@ int bus_unit_cgroup_unset(Unit *u, DBusMessageIter *iter) { return 0; } +int bus_unit_cgroup_attribute_get(Unit *u, DBusMessageIter *iter, char ***_result) { + _cleanup_strv_free_ char **l = NULL, **result = NULL; + char **name; + int r; + + assert(u); + assert(iter); + assert(_result); + + if (!unit_get_exec_context(u)) + return -EINVAL; + + r = bus_parse_strv_iter(iter, &l); + if (r < 0) + return r; + + STRV_FOREACH(name, l) { + _cleanup_free_ char *controller = NULL; + const char *dot; + CGroupAttribute *a; + CGroupBonding *b; + + dot = strchr(*name, '.'); + if (dot) { + controller = strndup(*name, dot - *name); + if (!controller) + return -ENOMEM; + } + + /* First attempt, read the value from the kernel */ + b = cgroup_bonding_find_list(u->cgroup_bondings, controller); + if (b) { + _cleanup_free_ char *p = NULL, *v = NULL; + + r = cg_get_path(b->controller, b->path, *name, &p); + if (r < 0) + return r; + + r = read_full_file(p, &v, NULL); + if (r >= 0) { + r = strv_extend(&result, v); + if (r < 0) + return r; + + continue; + } else if (r != -ENOENT) + return r; + } + + /* If that didn't work, read our cached value */ + a = cgroup_attribute_find_list(u->cgroup_attributes, NULL, *name); + if (a) { + r = strv_extend(&result, a->value); + if (r < 0) + return r; + + continue; + } + + return -ENOENT; + } + + *_result = result; + result = NULL; + + return 0; +} + int bus_unit_cgroup_attribute_set(Unit *u, DBusMessageIter *iter) { DBusMessageIter sub, sub2; int r; diff --git a/src/core/dbus-unit.h b/src/core/dbus-unit.h index c7d5863a97..c8903f8e5e 100644 --- a/src/core/dbus-unit.h +++ b/src/core/dbus-unit.h @@ -127,13 +127,9 @@ " \n" \ " \n" \ " \n" \ - " \n" \ - " \n" \ - " \n" \ - " \n" \ - " \n" \ - " \n" \ - " \n" \ + " \n" \ + " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -142,6 +138,14 @@ " \n" \ " \n" \ " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ " \n" #define BUS_UNIT_INTERFACES_LIST \ @@ -164,6 +168,7 @@ DBusHandlerResult bus_unit_queue_job( int bus_unit_cgroup_set(Unit *u, DBusMessageIter *iter); int bus_unit_cgroup_unset(Unit *u, DBusMessageIter *iter); +int bus_unit_cgroup_attribute_get(Unit *u, DBusMessageIter *iter, char ***_result); int bus_unit_cgroup_attribute_set(Unit *u, DBusMessageIter *iter); int bus_unit_cgroup_attribute_unset(Unit *u, DBusMessageIter *iter); diff --git a/src/shared/util.c b/src/shared/util.c index d5de59fce9..f75a81c605 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -641,6 +641,9 @@ int read_full_file(const char *fn, char **contents, size_t *size) { _cleanup_free_ char *buf = NULL; struct stat st; + assert(fn); + assert(contents); + f = fopen(fn, "re"); if (!f) return -errno; diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index cac70673c8..f3d661d2b5 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -2273,6 +2273,64 @@ static int set_cgroup_attr(DBusConnection *bus, char **args) { return 0; } +static int get_cgroup_attr(DBusConnection *bus, char **args) { + _cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL; + DBusError error; + DBusMessageIter iter; + int r; + _cleanup_free_ char *n = NULL; + _cleanup_strv_free_ char **list = NULL; + char **a; + + assert(bus); + assert(args); + + dbus_error_init(&error); + + n = unit_name_mangle(args[1]); + if (!n) + return log_oom(); + + m = dbus_message_new_method_call( + "org.freedesktop.systemd1", + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + "GetUnitControlGroupAttributes"); + if (!m) + return log_oom(); + + dbus_message_iter_init_append(m, &iter); + if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &n)) + return log_oom(); + + r = bus_append_strv_iter(&iter, args + 2); + if (r < 0) + return log_oom(); + + reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error); + if (!reply) { + log_error("Failed to issue method call: %s", bus_error_message(&error)); + dbus_error_free(&error); + return -EIO; + } + + dbus_message_iter_init(reply, &iter); + r = bus_parse_strv_iter(&iter, &list); + if (r < 0) { + log_error("Failed to parse value list."); + return r; + } + + STRV_FOREACH(a, list) { + if (endswith(*a, "\n")) + fputs(*a, stdout); + else + puts(*a); + } + + return 0; +} + typedef struct ExecStatusInfo { char *name; @@ -4276,12 +4334,14 @@ static int systemctl_help(void) { " help [NAME...|PID...] Show manual for one or more units\n" " reset-failed [NAME...] Reset failed state for all, one, or more\n" " units\n" - " set-cgroup [NAME] [CGROUP...] Add unit to a control group\n" - " unset-cgroup [NAME] [CGROUP...] Remove unit from a control group\n" + " get-cgroup-attr [NAME] [ATTR] ...\n" + " Get control group attrubute\n" " set-cgroup-attr [NAME] [ATTR] [VALUE] ...\n" " Set control group attribute\n" " unset-cgroup-attr [NAME] [ATTR...]\n" " Unset control group attribute\n" + " set-cgroup [NAME] [CGROUP...] Add unit to a control group\n" + " unset-cgroup [NAME] [CGROUP...] Remove unit from a control group\n" " load [NAME...] Load one or more units\n" " list-dependencies [NAME] Recursively show units which are required\n" " or wanted by this unit\n\n" @@ -5261,6 +5321,7 @@ static int systemctl_main(DBusConnection *bus, int argc, char *argv[], DBusError { "isolate", EQUAL, 2, start_unit }, { "set-cgroup", MORE, 2, set_cgroup }, { "unset-cgroup", MORE, 2, set_cgroup }, + { "get-cgroup-attr", MORE, 2, get_cgroup_attr }, { "set-cgroup-attr", MORE, 2, set_cgroup_attr }, { "unset-cgroup-attr", MORE, 2, set_cgroup }, { "kill", MORE, 2, kill_unit }, -- cgit v1.2.1 From 7e2c2bcf1285d124c9c656ff46cafa4db0a987c9 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 18 Jan 2013 01:48:46 +0100 Subject: update TODO --- TODO | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index 4c59e74eec..a74ffc3e9a 100644 --- a/TODO +++ b/TODO @@ -19,6 +19,7 @@ Fedora 19: * create /var/log/journal/ Features: + * re-enable "make check" for gtk-doc (broken for unknown reason) * logind: make PrepareForSuspend(false) an official api for notification of resumes @@ -32,9 +33,13 @@ Features: * add "loginctl unlock-sessions" as counterpart for "loginctl lock-sessions" -* extend cgroup attr dbus calls to optionally make changes persistent, and retrieve current kernel values - -* support high-level cgroup setting syntax in systemctl. Example: "systemctl set-cgroup-attr MemoryLimit 5K" +* cgroup attrs: + - make persistent + - don't filter out duplicate settings + - support high-level cgroup setting syntax in systemctl. Example: "systemctl set-cgroup-attr MemoryLimit 5K" + - support writte string mapping even for non-high-level settings + - add man page for systemctl commands + - make sure we work fine with multi-line strings * print a nicer explanation if people use variable/specifier expansion in ExecStart= for the first word -- cgit v1.2.1 From a6c4586586af4656e827014a4df1918103d9d5f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 17 Jan 2013 23:49:05 -0500 Subject: build-sys: keep noninstallable tests in noinst_tests Repeating all tests in noinst_PROGRAMS and TESTS is pointless. This way it is also clearer which noinst_PROGRAMs are not part of the test suite. --- Makefile.am | 34 +++++++--------------------------- 1 file changed, 7 insertions(+), 27 deletions(-) diff --git a/Makefile.am b/Makefile.am index db68522bf6..752857a144 100644 --- a/Makefile.am +++ b/Makefile.am @@ -118,8 +118,9 @@ dbusinterface_DATA = dist_dbussystemservice_DATA = check_PROGRAMS = check_DATA = -noinst_PROGRAMS = -TESTS = +noinst_tests= +noinst_PROGRAMS = $(noinst_tests) +TESTS = $(noinst_tests) udevlibexec_PROGRAMS = AM_CPPFLAGS = \ @@ -1173,27 +1174,16 @@ CLEANFILES += \ # ------------------------------------------------------------------------------ noinst_PROGRAMS += \ test-engine \ - test-job-type \ test-ns \ test-loopback \ test-hostname \ test-daemon \ test-cgroup \ - test-env-replace \ - test-strv \ test-install \ test-watchdog \ - test-unit-name \ - test-log \ - test-unit-file \ - test-date \ - test-sleep \ - test-replace-var \ - test-sched-prio \ - test-calendarspec \ - test-strip-tab-ansi + test-log -TESTS += \ +noinst_tests += \ test-job-type \ test-env-replace \ test-strv \ @@ -2438,10 +2428,7 @@ test_id128_LDADD = \ libsystemd-shared.la \ libsystemd-id128-internal.la -noinst_PROGRAMS += \ - test-id128 - -TESTS += \ +noinst_tests += \ test-id128 pkginclude_HEADERS += \ @@ -2731,17 +2718,10 @@ UNINSTALL_DATA_HOOKS += \ catalog-remove-hook noinst_PROGRAMS += \ - test-journal \ - test-journal-send \ - test-journal-syslog \ - test-journal-match \ test-journal-enum \ - test-journal-stream \ - test-journal-verify \ - test-mmap-cache \ test-catalog -TESTS += \ +noinst_tests += \ test-journal \ test-journal-send \ test-journal-syslog \ -- cgit v1.2.1 From c54ff8e3586adec9e21c525bf0fa1fa0b73006d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 25 Nov 2012 23:21:22 +0100 Subject: journal-gatewayd: unify two code paths In preparation for adding more options, split out the option handling code. --- src/journal/journal-gatewayd.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/journal/journal-gatewayd.c b/src/journal/journal-gatewayd.c index 63d9744776..9c33218822 100644 --- a/src/journal/journal-gatewayd.c +++ b/src/journal/journal-gatewayd.c @@ -879,22 +879,22 @@ int main(int argc, char *argv[]) { } else if (n > 1) { log_error("Can't listen on more than one socket."); goto finish; - } else if (n > 0) { - d = MHD_start_daemon( - MHD_USE_THREAD_PER_CONNECTION|MHD_USE_POLL|MHD_USE_DEBUG, - 19531, - NULL, NULL, - request_handler, NULL, - MHD_OPTION_LISTEN_SOCKET, SD_LISTEN_FDS_START, - MHD_OPTION_NOTIFY_COMPLETED, request_meta_free, NULL, - MHD_OPTION_END); } else { + struct MHD_OptionItem opts[] = { + { MHD_OPTION_NOTIFY_COMPLETED, + (intptr_t) request_meta_free, NULL }, + { MHD_OPTION_END, 0, NULL }, + { MHD_OPTION_END, 0, NULL }}; + if (n > 0) + opts[1] = (struct MHD_OptionItem) + {MHD_OPTION_LISTEN_SOCKET, SD_LISTEN_FDS_START, NULL}; + d = MHD_start_daemon( - MHD_USE_DEBUG|MHD_USE_THREAD_PER_CONNECTION|MHD_USE_POLL, + MHD_USE_THREAD_PER_CONNECTION|MHD_USE_POLL|MHD_USE_DEBUG, 19531, NULL, NULL, request_handler, NULL, - MHD_OPTION_NOTIFY_COMPLETED, request_meta_free, NULL, + MHD_OPTION_ARRAY, opts, MHD_OPTION_END); } -- cgit v1.2.1 From 858634ff0e158757dfd630f4da72e790a42e60dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 25 Nov 2012 23:26:15 +0100 Subject: journal-gatewayd: SSL support For now the certificates are passed around as options to the program. This might not be the most convenient under "production", but makes for fairly easy testing. --- src/journal/journal-gatewayd.c | 120 +++++++++++++++++++++++++++++++++++------ 1 file changed, 105 insertions(+), 15 deletions(-) diff --git a/src/journal/journal-gatewayd.c b/src/journal/journal-gatewayd.c index 9c33218822..6922ebcf9c 100644 --- a/src/journal/journal-gatewayd.c +++ b/src/journal/journal-gatewayd.c @@ -23,6 +23,7 @@ #include #include #include +#include #include @@ -32,6 +33,7 @@ #include "sd-daemon.h" #include "logs-show.h" #include "virt.h" +#include "build.h" typedef struct RequestMeta { sd_journal *journal; @@ -859,19 +861,96 @@ static int request_handler( return respond_error(connection, MHD_HTTP_NOT_FOUND, "Not found.\n"); } -int main(int argc, char *argv[]) { - struct MHD_Daemon *d = NULL; - int r = EXIT_FAILURE, n; +static char *key_pem = NULL; +static char *cert_pem = NULL; + +static int parse_argv(int argc, char *argv[]) { + enum { + ARG_VERSION = 0x100, + ARG_KEY, + ARG_CERT, + }; + + int r, c; + + static const struct option options[] = { + { "version", no_argument, NULL, ARG_VERSION }, + { "key", required_argument, NULL, ARG_KEY }, + { "cert", required_argument, NULL, ARG_CERT }, + { NULL, 0, NULL, 0 } + }; + + assert(argc >= 0); + assert(argv); + + while ((c = getopt_long(argc, argv, "", options, NULL)) >= 0) + switch(c) { + case ARG_VERSION: + puts(PACKAGE_STRING); + puts(SYSTEMD_FEATURES); + return 0; + + case ARG_KEY: + if (key_pem) { + log_error("Key file specified twice"); + return -EINVAL; + } + r = read_full_file(optarg, &key_pem, NULL); + if (r < 0) { + log_error("Failed to read key file: %s", strerror(-r)); + return r; + } + assert(key_pem); + break; - if (argc > 1) { + case ARG_CERT: + if (cert_pem) { + log_error("Certificate file specified twice"); + return -EINVAL; + } + r = read_full_file(optarg, &cert_pem, NULL); + if (r < 0) { + log_error("Failed to read certificate file: %s", strerror(-r)); + return r; + } + assert(cert_pem); + break; + + case '?': + return -EINVAL; + + default: + log_error("Unknown option code %c", c); + return -EINVAL; + } + + if (optind < argc) { log_error("This program does not take arguments."); - goto finish; + return -EINVAL; + } + + if (!!key_pem != !!cert_pem) { + log_error("Certificate and key files must be specified together"); + return -EINVAL; } + return 1; +} + +int main(int argc, char *argv[]) { + struct MHD_Daemon *d = NULL; + int r, n; + log_set_target(LOG_TARGET_AUTO); log_parse_environment(); log_open(); + r = parse_argv(argc, argv); + if (r < 0) + return EXIT_FAILURE; + if (r == 0) + return EXIT_SUCCESS; + n = sd_listen_fds(1); if (n < 0) { log_error("Failed to determine passed sockets: %s", strerror(-n)); @@ -884,18 +963,29 @@ int main(int argc, char *argv[]) { { MHD_OPTION_NOTIFY_COMPLETED, (intptr_t) request_meta_free, NULL }, { MHD_OPTION_END, 0, NULL }, + { MHD_OPTION_END, 0, NULL }, + { MHD_OPTION_END, 0, NULL }, { MHD_OPTION_END, 0, NULL }}; + int opts_pos = 1; + int flags = MHD_USE_THREAD_PER_CONNECTION|MHD_USE_POLL|MHD_USE_DEBUG; + if (n > 0) - opts[1] = (struct MHD_OptionItem) - {MHD_OPTION_LISTEN_SOCKET, SD_LISTEN_FDS_START, NULL}; - - d = MHD_start_daemon( - MHD_USE_THREAD_PER_CONNECTION|MHD_USE_POLL|MHD_USE_DEBUG, - 19531, - NULL, NULL, - request_handler, NULL, - MHD_OPTION_ARRAY, opts, - MHD_OPTION_END); + opts[opts_pos++] = (struct MHD_OptionItem) + {MHD_OPTION_LISTEN_SOCKET, SD_LISTEN_FDS_START}; + if (key_pem) { + assert(cert_pem); + opts[opts_pos++] = (struct MHD_OptionItem) + {MHD_OPTION_HTTPS_MEM_KEY, 0, key_pem}; + opts[opts_pos++] = (struct MHD_OptionItem) + {MHD_OPTION_HTTPS_MEM_CERT, 0, cert_pem}; + flags |= MHD_USE_SSL; + } + + d = MHD_start_daemon(flags, 19531, + NULL, NULL, + request_handler, NULL, + MHD_OPTION_ARRAY, opts, + MHD_OPTION_END); } if (!d) { -- cgit v1.2.1 From e64690a85772fc77ba9e825333eb1ced5a202ad1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 25 Nov 2012 23:54:31 +0100 Subject: journal-gatewayd: redirect microhttpd messages to journal A prefix ("microhttpd: ") is added to the log lines to make it easy to distinguish the source. --- Makefile.am | 4 +++- src/journal/journal-gatewayd.c | 5 ++++- src/journal/microhttpd-util.c | 37 +++++++++++++++++++++++++++++++++++++ src/journal/microhttpd-util.h | 26 ++++++++++++++++++++++++++ 4 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 src/journal/microhttpd-util.c create mode 100644 src/journal/microhttpd-util.h diff --git a/Makefile.am b/Makefile.am index 752857a144..ab9fb99f96 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2799,7 +2799,9 @@ rootlibexec_PROGRAMS += \ systemd-journal-gatewayd systemd_journal_gatewayd_SOURCES = \ - src/journal/journal-gatewayd.c + src/journal/journal-gatewayd.c \ + src/journal/microhttpd-util.h \ + src/journal/microhttpd-util.c systemd_journal_gatewayd_LDADD = \ libsystemd-shared.la \ diff --git a/src/journal/journal-gatewayd.c b/src/journal/journal-gatewayd.c index 6922ebcf9c..bb9bd44c7a 100644 --- a/src/journal/journal-gatewayd.c +++ b/src/journal/journal-gatewayd.c @@ -32,6 +32,7 @@ #include "sd-journal.h" #include "sd-daemon.h" #include "logs-show.h" +#include "microhttpd-util.h" #include "virt.h" #include "build.h" @@ -962,11 +963,13 @@ int main(int argc, char *argv[]) { struct MHD_OptionItem opts[] = { { MHD_OPTION_NOTIFY_COMPLETED, (intptr_t) request_meta_free, NULL }, + { MHD_OPTION_EXTERNAL_LOGGER, + (intptr_t) microhttpd_logger, NULL }, { MHD_OPTION_END, 0, NULL }, { MHD_OPTION_END, 0, NULL }, { MHD_OPTION_END, 0, NULL }, { MHD_OPTION_END, 0, NULL }}; - int opts_pos = 1; + int opts_pos = 2; int flags = MHD_USE_THREAD_PER_CONNECTION|MHD_USE_POLL|MHD_USE_DEBUG; if (n > 0) diff --git a/src/journal/microhttpd-util.c b/src/journal/microhttpd-util.c new file mode 100644 index 0000000000..dc91b81bde --- /dev/null +++ b/src/journal/microhttpd-util.c @@ -0,0 +1,37 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2012 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include + +#include "microhttpd-util.h" +#include "log.h" +#include "macro.h" +#include "util.h" + +void microhttpd_logger(void *arg, const char *fmt, va_list ap) { + char _cleanup_free_ *f; + if (asprintf(&f, "microhttpd: %s", fmt) <= 0) { + log_oom(); + return; + } + log_metav(LOG_INFO, NULL, 0, NULL, f, ap); +} diff --git a/src/journal/microhttpd-util.h b/src/journal/microhttpd-util.h new file mode 100644 index 0000000000..d4fefa72d3 --- /dev/null +++ b/src/journal/microhttpd-util.h @@ -0,0 +1,26 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2012 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#pragma once + +#include + +void microhttpd_logger(void *arg, const char *fmt, va_list ap); -- cgit v1.2.1 From 41a79f1062d77f95248b92b91b3b788f886aa93f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 26 Nov 2012 16:39:46 +0100 Subject: share/log: unify two code paths Explicit zeroing is replaced with initialization to {0}. No functional change. --- src/shared/log.c | 77 +++++++++++++++++++++++++------------------------------- 1 file changed, 34 insertions(+), 43 deletions(-) diff --git a/src/shared/log.c b/src/shared/log.c index 8d3458e731..b39b5acb5b 100644 --- a/src/shared/log.c +++ b/src/shared/log.c @@ -441,31 +441,18 @@ static int write_to_kmsg( return 1; } -static int write_to_journal( - int level, - const char*file, - int line, - const char *func, - const char *object_name, - const char *object, - const char *buffer) { - - char header[LINE_MAX]; - struct iovec iovec[3]; - struct msghdr mh; - - if (journal_fd < 0) - return 0; - - snprintf(header, sizeof(header), +static int log_do_header(char *header, size_t size, + int level, + const char *file, int line, const char *func, + const char *object_name, const char *object) { + snprintf(header, size, "PRIORITY=%i\n" "SYSLOG_FACILITY=%i\n" "CODE_FILE=%s\n" "CODE_LINE=%i\n" "CODE_FUNCTION=%s\n" "%s%.*s%s" - "SYSLOG_IDENTIFIER=%s\n" - "MESSAGE=", + "SYSLOG_IDENTIFIER=%s\n", LOG_PRI(level), LOG_FAC(level), file, @@ -475,15 +462,34 @@ static int write_to_journal( object ? LINE_MAX : 0, object, /* %.0s means no output */ object ? "\n" : "", program_invocation_short_name); + header[size - 1] = '\0'; + return 0; +} - char_array_0(header); +static int write_to_journal( + int level, + const char*file, + int line, + const char *func, + const char *object_name, + const char *object, + const char *buffer) { + + char header[LINE_MAX]; + struct iovec iovec[4] = {{0}}; + struct msghdr mh = {0}; + + if (journal_fd < 0) + return 0; + + log_do_header(header, sizeof(header), level, + file, line, func, object_name, object); - zero(iovec); IOVEC_SET_STRING(iovec[0], header); - IOVEC_SET_STRING(iovec[1], buffer); - IOVEC_SET_STRING(iovec[2], "\n"); + IOVEC_SET_STRING(iovec[1], "MESSAGE="); + IOVEC_SET_STRING(iovec[2], buffer); + IOVEC_SET_STRING(iovec[3], "\n"); - zero(mh); mh.msg_iov = iovec; mh.msg_iovlen = ELEMENTSOF(iovec); @@ -744,29 +750,14 @@ int log_struct_internal( journal_fd >= 0) { char header[LINE_MAX]; - struct iovec iovec[17]; + struct iovec iovec[17] = {{0}}; unsigned n = 0, i; struct msghdr mh; - const char nl = '\n'; + static const char nl = '\n'; /* If the journal is available do structured logging */ - - snprintf(header, sizeof(header), - "PRIORITY=%i\n" - "SYSLOG_FACILITY=%i\n" - "CODE_FILE=%s\n" - "CODE_LINE=%i\n" - "CODE_FUNCTION=%s\n" - "SYSLOG_IDENTIFIER=%s\n", - LOG_PRI(level), - LOG_FAC(level), - file, - line, - func, - program_invocation_short_name); - char_array_0(header); - - zero(iovec); + log_do_header(header, sizeof(header), level, + file, line, func, NULL, NULL); IOVEC_SET_STRING(iovec[n++], header); va_start(ap, format); -- cgit v1.2.1 From e429981ba45894fe51d93956278badb61311bb99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 26 Nov 2012 16:39:46 +0100 Subject: share/log: skip file/line/func info if empty The new microhttpd logger doesn't know this information. It is better to log nothing than fake values. --- src/shared/log.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/src/shared/log.c b/src/shared/log.c index b39b5acb5b..293c261f9e 100644 --- a/src/shared/log.c +++ b/src/shared/log.c @@ -448,16 +448,22 @@ static int log_do_header(char *header, size_t size, snprintf(header, size, "PRIORITY=%i\n" "SYSLOG_FACILITY=%i\n" - "CODE_FILE=%s\n" - "CODE_LINE=%i\n" - "CODE_FUNCTION=%s\n" + "%s%.*s%s" + "%s%.*i%s" + "%s%.*s%s" "%s%.*s%s" "SYSLOG_IDENTIFIER=%s\n", LOG_PRI(level), LOG_FAC(level), - file, - line, - func, + file ? "CODE_FILE=" : "", + file ? LINE_MAX : 0, file, /* %.0s means no output */ + file ? "\n" : "", + line ? "CODE_LINE=" : "", + line ? 1 : 0, line, /* %.0d means no output too, special case for 0 */ + line ? "\n" : "", + func ? "CODE_FUNCTION=" : "", + func ? LINE_MAX : 0, func, + func ? "\n" : "", object ? object_name : "", object ? LINE_MAX : 0, object, /* %.0s means no output */ object ? "\n" : "", -- cgit v1.2.1 From 9775033d260f62869d29654a27113b809a03dad9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 28 Nov 2012 18:00:09 +0100 Subject: journal-gatewayd: always log oom() in addition to returning error --- src/journal/journal-gatewayd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/journal/journal-gatewayd.c b/src/journal/journal-gatewayd.c index bb9bd44c7a..613b5394a8 100644 --- a/src/journal/journal-gatewayd.c +++ b/src/journal/journal-gatewayd.c @@ -110,7 +110,7 @@ static int open_journal(RequestMeta *m) { } -static int respond_oom(struct MHD_Connection *connection) { +static int respond_oom_internal(struct MHD_Connection *connection) { struct MHD_Response *response; const char m[] = "Out of memory.\n"; int ret; @@ -128,6 +128,8 @@ static int respond_oom(struct MHD_Connection *connection) { return ret; } +#define respond_oom(connection) log_oom(), respond_oom_internal(connection) + static int respond_error( struct MHD_Connection *connection, unsigned code, -- cgit v1.2.1 From 8530a1436a50b3cfb6dc6231834bd04f56118d31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 28 Nov 2012 18:32:01 +0100 Subject: journal-gatewayd: allow pipelining The request must not be answered immediately (at first call to response_handler()), but on the second. This is also important for authentication, which cannot be performed on the first call. Before: % wget -O/dev/null -S https://localhost:19531/ --2012-11-28 18:29:43-- https://localhost:19531/ Resolving localhost (localhost)... 127.0.0.1 Connecting to localhost (localhost)|127.0.0.1|:19531... connected. HTTP request sent, awaiting response... HTTP/1.1 301 Moved Permanently Connection: close Content-Length: 87 Location: /browse Content-Type: text/html Date: Wed, 28 Nov 2012 17:29:44 GMT Location: /browse [following] --2012-11-28 18:29:43-- https://localhost:19531/browse Connecting to localhost (localhost)|127.0.0.1|:19531... connected. HTTP request sent, awaiting response... HTTP/1.1 200 OK Connection: close Content-Length: 23260 Content-Type: text/html Date: Wed, 28 Nov 2012 17:29:44 GMT Length: 23260 (23K) [text/html] After: % wget --no-check-certificate -O/dev/null -S https://localhost:19531/ --2012-11-28 18:30:05-- https://localhost:19531/ Resolving localhost (localhost)... 127.0.0.1 Connecting to localhost (localhost)|127.0.0.1|:19531... connected. HTTP request sent, awaiting response... HTTP/1.1 301 Moved Permanently Content-Length: 87 Location: /browse Content-Type: text/html Date: Wed, 28 Nov 2012 17:30:05 GMT Location: /browse [following] --2012-11-28 18:30:05-- https://localhost:19531/browse Reusing existing connection to localhost:19531. HTTP request sent, awaiting response... HTTP/1.1 200 OK Content-Length: 23260 Content-Type: text/html Date: Wed, 28 Nov 2012 17:30:06 GMT Length: 23260 (23K) [text/html] --- src/journal/journal-gatewayd.c | 40 ++++++++++++++++++---------------------- 1 file changed, 18 insertions(+), 22 deletions(-) diff --git a/src/journal/journal-gatewayd.c b/src/journal/journal-gatewayd.c index 613b5394a8..23939ccbca 100644 --- a/src/journal/journal-gatewayd.c +++ b/src/journal/journal-gatewayd.c @@ -482,18 +482,14 @@ static int request_parse_arguments( static int request_handler_entries( struct MHD_Connection *connection, - void **connection_cls) { + void *connection_cls) { struct MHD_Response *response; - RequestMeta *m; + RequestMeta *m = connection_cls; int r; assert(connection); - assert(connection_cls); - - m = request_meta(connection_cls); - if (!m) - return respond_oom(connection); + assert(m); r = open_journal(m); if (r < 0) @@ -651,15 +647,11 @@ static int request_handler_fields( void *connection_cls) { struct MHD_Response *response; - RequestMeta *m; + RequestMeta *m = connection_cls; int r; assert(connection); - assert(connection_cls); - - m = request_meta(connection_cls); - if (!m) - return respond_oom(connection); + assert(m); r = open_journal(m); if (r < 0) @@ -750,10 +742,10 @@ static int request_handler_file( static int request_handler_machine( struct MHD_Connection *connection, - void **connection_cls) { + void *connection_cls) { struct MHD_Response *response; - RequestMeta *m; + RequestMeta *m = connection_cls; int r; _cleanup_free_ char* hostname = NULL, *os_name = NULL; uint64_t cutoff_from, cutoff_to, usage; @@ -762,10 +754,7 @@ static int request_handler_machine( const char *v = "bare"; assert(connection); - - m = request_meta(connection_cls); - if (!m) - return respond_oom(connection); + assert(m); r = open_journal(m); if (r < 0) @@ -840,26 +829,33 @@ static int request_handler( void **connection_cls) { assert(connection); + assert(connection_cls); assert(url); assert(method); if (!streq(method, "GET")) return MHD_NO; + if (!*connection_cls) { + if (!request_meta(connection_cls)) + return respond_oom(connection); + return MHD_YES; + } + if (streq(url, "/")) return request_handler_redirect(connection, "/browse"); if (streq(url, "/entries")) - return request_handler_entries(connection, connection_cls); + return request_handler_entries(connection, *connection_cls); if (startswith(url, "/fields/")) - return request_handler_fields(connection, url + 8, connection_cls); + return request_handler_fields(connection, url + 8, *connection_cls); if (streq(url, "/browse")) return request_handler_file(connection, DOCUMENT_ROOT "/browse.html", "text/html"); if (streq(url, "/machine")) - return request_handler_machine(connection, connection_cls); + return request_handler_machine(connection, *connection_cls); return respond_error(connection, MHD_HTTP_NOT_FOUND, "Not found.\n"); } -- cgit v1.2.1 From a93035cee3df135b72b8ff6c1d8361e2e647ed0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 17 Jan 2013 01:53:01 -0500 Subject: journal-gatewayd: return nice error on unsupported methods Returns "HTTP/1.0 406 Not Acceptable" instead of silently closing the connection. --- src/journal/journal-gatewayd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/journal/journal-gatewayd.c b/src/journal/journal-gatewayd.c index 23939ccbca..4a4905dbfb 100644 --- a/src/journal/journal-gatewayd.c +++ b/src/journal/journal-gatewayd.c @@ -834,7 +834,9 @@ static int request_handler( assert(method); if (!streq(method, "GET")) - return MHD_NO; + return respond_error(connection, MHD_HTTP_METHOD_NOT_ACCEPTABLE, + "Unsupported method.\n"); + if (!*connection_cls) { if (!request_meta(connection_cls)) -- cgit v1.2.1 From c3a7cfb7dee251cab01e98a399e7d2a0f787b6b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 18 Jan 2013 01:41:01 -0500 Subject: journal-gatewayd,man: document new HTTPS options --- man/systemd-journal-gatewayd.service.xml | 50 ++++++++++++++++++++++++++++++-- src/journal/journal-gatewayd.c | 19 +++++++++++- 2 files changed, 66 insertions(+), 3 deletions(-) diff --git a/man/systemd-journal-gatewayd.service.xml b/man/systemd-journal-gatewayd.service.xml index 562d22186b..37b39c2d3e 100644 --- a/man/systemd-journal-gatewayd.service.xml +++ b/man/systemd-journal-gatewayd.service.xml @@ -52,7 +52,9 @@ along with systemd; If not, see . systemd-journal-gatewayd.service systemd-journal-gatewayd.socket - /usr/lib/systemd/systemd-journal-gatewayd + + /usr/lib/systemd/systemd-journal-gatewayd + OPTIONS @@ -61,7 +63,9 @@ along with systemd; If not, see . systemd-journal-gatewayd serves journal events over the network. Clients must connect using - HTTP. The server listens on port 19531 by default. + HTTP. The server listens on port 19531 by default. + If is specified, the server expects + HTTPS connections. The program is started by systemd1 @@ -71,6 +75,48 @@ along with systemd; If not, see . to have it started on boot. + + Options + + The following options are understood: + + + + + + + Prints a short help + text and exits. + + + + + + Prints a short version + string and exits. + + + + + + Specify the path to a file containing a server + certificate in PEM format. This option switches + systemd-journal-gatewayd into HTTPS mode + and must be used together with + . + + + + + + Specify the path to a file containing a server + key in PEM format corresponding to the certificate specified + with . + + + + + Supported URLs diff --git a/src/journal/journal-gatewayd.c b/src/journal/journal-gatewayd.c index 4a4905dbfb..dfec8352bb 100644 --- a/src/journal/journal-gatewayd.c +++ b/src/journal/journal-gatewayd.c @@ -862,6 +862,19 @@ static int request_handler( return respond_error(connection, MHD_HTTP_NOT_FOUND, "Not found.\n"); } +static int help(void) { + + printf("%s [OPTIONS...] ...\n\n" + "HTTP server for journal events.\n\n" + " -h --help Show this help\n" + " --version Show package version\n" + " --cert=CERT.PEM Specify server certificate in PEM format\n" + " --key=KEY.PEM Specify server key in PEM format\n", + program_invocation_short_name); + + return 0; +} + static char *key_pem = NULL; static char *cert_pem = NULL; @@ -875,6 +888,7 @@ static int parse_argv(int argc, char *argv[]) { int r, c; static const struct option options[] = { + { "help", no_argument, NULL, 'h' }, { "version", no_argument, NULL, ARG_VERSION }, { "key", required_argument, NULL, ARG_KEY }, { "cert", required_argument, NULL, ARG_CERT }, @@ -884,13 +898,16 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); - while ((c = getopt_long(argc, argv, "", options, NULL)) >= 0) + while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0) switch(c) { case ARG_VERSION: puts(PACKAGE_STRING); puts(SYSTEMD_FEATURES); return 0; + case 'h': + return help(); + case ARG_KEY: if (key_pem) { log_error("Key file specified twice"); -- cgit v1.2.1 From 565d91fdf198b88f7c2d72c67cfc6c30341a3596 Mon Sep 17 00:00:00 2001 From: Michal Vyskocil Date: Fri, 18 Jan 2013 10:05:10 +0100 Subject: util: continuation support for load_env_file Variable definitions can be written on more than one line - if each ends with a backslash, then is concatenated with a previous one. Only backslash and unix end of line (\n) are treated as a continuation. Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=58083 [zj: squashed two patches together; cleaned up grammar; removed comment about ignoring trailing backslash -- it is not ignored.] Document continuation support in systemd.exec --- man/systemd.exec.xml | 8 +++++--- src/shared/util.c | 43 ++++++++++++++++++++++++++++++++++++++----- 2 files changed, 43 insertions(+), 8 deletions(-) diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml index 71472b4f5d..8a22ac0138 100644 --- a/man/systemd.exec.xml +++ b/man/systemd.exec.xml @@ -299,9 +299,11 @@ contain new-line separated variable assignments. Empty lines and lines starting with ; or # will be ignored, - which may be used for commenting. The - parser strips leading and - trailing whitespace from the values + which may be used for commenting. A line + ending with a backslash will be concatenated + with the following one, allowing multiline variable + definitions. The parser strips leading + and trailing whitespace from the values of assignments, unless you use double quotes ("). diff --git a/src/shared/util.c b/src/shared/util.c index f75a81c605..08c0c2be13 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -780,6 +780,8 @@ int load_env_file( char ***rl) { FILE *f; + char *b; + char *c = NULL; char **m = NULL; int r; @@ -790,18 +792,45 @@ int load_env_file( return -errno; while (!feof(f)) { - char l[LINE_MAX], *p, *u; + char l[LINE_MAX], *p, *u, *cs; char **t; if (!fgets(l, sizeof(l), f)) { - if (feof(f)) + if(!feof(f)) { + r = -errno; + goto finish; + } + else if (!c) break; - r = -errno; - goto finish; } - p = strstrip(l); + cs = endswith(l, "\\\n"); + if (cs) { + + *cs = '\0'; + b = strappend(c, l); + if (!b) { + r = log_oom(); + goto finish; + } + free(c); + c = b; + *l = '\0'; + continue; + } + + if (c) { + b = strappend(c, l); + if (!b) { + r = log_oom(); + goto finish; + } + free(c); + c = b; + } + + p = strstrip(c ? c : l); if (!*p) continue; @@ -813,6 +842,8 @@ int load_env_file( r = log_oom(); goto finish; } + free(c); + c = NULL; t = strv_append(m, u); free(u); @@ -835,6 +866,8 @@ finish: if (f) fclose(f); + free(c); + strv_free(m); return r; -- cgit v1.2.1 From b9893505636b77878035b342026e391e10cfbb91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 18 Jan 2013 10:57:11 -0500 Subject: util: modernization and test for load_env_file --- src/shared/util.c | 63 +++++++++++++++++------------------------------ src/test/test-unit-file.c | 57 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+), 41 deletions(-) diff --git a/src/shared/util.c b/src/shared/util.c index 08c0c2be13..37e383f2ef 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -775,20 +775,19 @@ fail: return r; } -int load_env_file( - const char *fname, - char ***rl) { +int load_env_file(const char *fname, + char ***rl) { - FILE *f; + FILE _cleanup_fclose_ *f; char *b; - char *c = NULL; - char **m = NULL; - int r; + char _cleanup_free_ *c = NULL; + char _cleanup_strv_free_ **m = NULL; assert(fname); assert(rl); - if (!(f = fopen(fname, "re"))) + f = fopen(fname, "re"); + if (!f) return -errno; while (!feof(f)) { @@ -796,24 +795,19 @@ int load_env_file( char **t; if (!fgets(l, sizeof(l), f)) { - if(!feof(f)) { - r = -errno; - goto finish; - } + if (!feof(f)) + return -errno; else if (!c) break; - } cs = endswith(l, "\\\n"); if (cs) { - *cs = '\0'; b = strappend(c, l); - if (!b) { - r = log_oom(); - goto finish; - } + if (!b) + return log_oom(); + free(c); c = b; *l = '\0'; @@ -822,10 +816,9 @@ int load_env_file( if (c) { b = strappend(c, l); - if (!b) { - r = log_oom(); - goto finish; - } + if (!b) + return log_oom(); + free(c); c = b; } @@ -838,39 +831,27 @@ int load_env_file( if (strchr(COMMENTS, *p)) continue; - if (!(u = normalize_env_assignment(p))) { - r = log_oom(); - goto finish; - } + u = normalize_env_assignment(p); + if (!u) + return log_oom(); + free(c); c = NULL; t = strv_append(m, u); free(u); - if (!t) { - r = log_oom(); - goto finish; - } + if (!t) + return log_oom(); strv_free(m); m = t; } - r = 0; - *rl = m; m = NULL; -finish: - if (f) - fclose(f); - - free(c); - - strv_free(m); - - return r; + return 0; } int write_env_file(const char *fname, char **l) { diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c index 6636b949ea..de8be3257a 100644 --- a/src/test/test-unit-file.c +++ b/src/test/test-unit-file.c @@ -4,6 +4,7 @@ This file is part of systemd. Copyright 2012 Lennart Poettering + Copyright 2013 Zbigniew Jędrzejewski-Szmek systemd is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -23,12 +24,14 @@ #include #include #include +#include #include "install.h" #include "util.h" #include "macro.h" #include "hashmap.h" #include "load-fragment.h" +#include "strv.h" static void test_unit_file_get_set(void) { int r; @@ -174,10 +177,64 @@ static void test_config_parse_exec(void) { exec_command_free_list(c); } +#define env_file_1 \ + "a\n" \ + "b\\\n" \ + "c\n" \ + "d\\\n" \ + "e\\\n" \ + "f\n" \ + "g\\ \n" \ + "h\n" \ + "i\\" + +#define env_file_2 \ + "a\\\n" + +static void test_load_env_file_1(void) { + char _cleanup_strv_free_ **data = NULL; + int r; + + char name[] = "/tmp/test-load-env-file.XXXXXX"; + int _cleanup_close_ fd = mkstemp(name); + assert(fd >= 0); + assert_se(write(fd, env_file_1, sizeof(env_file_1)) == sizeof(env_file_1)); + + r = load_env_file(name, &data); + assert(r == 0); + assert(streq(data[0], "a")); + assert(streq(data[1], "bc")); + assert(streq(data[2], "def")); + assert(streq(data[3], "g\\")); + assert(streq(data[4], "h")); + assert(streq(data[5], "i\\")); + assert(data[6] == NULL); + unlink(name); +} + +static void test_load_env_file_2(void) { + char _cleanup_strv_free_ **data = NULL; + int r; + + char name[] = "/tmp/test-load-env-file.XXXXXX"; + int _cleanup_close_ fd = mkstemp(name); + assert(fd >= 0); + assert_se(write(fd, env_file_2, sizeof(env_file_2)) == sizeof(env_file_2)); + + r = load_env_file(name, &data); + assert(r == 0); + assert(streq(data[0], "a")); + assert(data[1] == NULL); + unlink(name); +} + + int main(int argc, char *argv[]) { test_unit_file_get_set(); test_config_parse_exec(); + test_load_env_file_1(); + test_load_env_file_2(); return 0; } -- cgit v1.2.1 From ef1673d16907726d83bdff2e57b5261997a85020 Mon Sep 17 00:00:00 2001 From: Mirco Tischler Date: Thu, 17 Jan 2013 18:55:05 +0100 Subject: journal: log _SYSTEMD_USER_UNIT for user session units --- src/journal/journald-server.c | 11 +++- src/shared/cgroup-util.c | 122 ++++++++++++++++++++++++++++++++---------- src/shared/cgroup-util.h | 1 + 3 files changed, 105 insertions(+), 29 deletions(-) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index ec9be65575..12a46e6bd0 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -601,8 +601,15 @@ static void dispatch_message_real( if (cg_pid_get_unit(ucred->pid, &t) >= 0) { unit = strappend("_SYSTEMD_UNIT=", t); free(t); - } else if (unit_id) - unit = strappend("_SYSTEMD_UNIT=", unit_id); + } else if (cg_pid_get_user_unit(ucred->pid, &t) >= 0) { + unit = strappend("_SYSTEMD_USER_UNIT=", t); + free(t); + } else if (unit_id) { + if (session) + unit = strappend("_SYSTEMD_USER_UNIT=", unit_id); + else + unit = strappend("_SYSTEMD_UNIT=", unit_id); + } if (unit) IOVEC_SET_STRING(iovec[n++], unit); diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 9dfab2eaac..3d12233a1b 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -36,6 +36,7 @@ #include "util.h" #include "path-util.h" #include "strv.h" +#include "unit-name.h" int cg_enumerate_processes(const char *controller, const char *path, FILE **_f) { char *fs; @@ -1210,11 +1211,76 @@ int cg_pid_get_cgroup(pid_t pid, char **root, char **cgroup) { return 0; } -int cg_pid_get_unit(pid_t pid, char **unit) { +static int instance_unit_from_cgroup(char **cgroup){ + char *at; + + assert(cgroup); + + at = memchr(*cgroup, '@', strlen(*cgroup)); + if (at && at[1] == '.') { + char *i, *s; + + /* This is a templated service */ + i = memchr(at, '/', strlen(at)); + if(!i) + return -EIO; + + s = strndup(at + 1, i - at); + if (!s) + return -ENOMEM; + + i = strdup(i + 1); + if (!i) { + free(s); + return -ENOMEM; + } + + strcpy(at + 1, i); + strcpy(at + strlen(i) + 1, s); + at[strlen(at) - 1] = '\0'; + + free(i); + free(s); + } + + return 0; +} + +static int cgroup_to_unit(char *cgroup, char **unit){ int r; - char *cgroup, *p, *at, *b; + char *b, *p; size_t k; + assert(cgroup); + assert(unit); + + r = instance_unit_from_cgroup(&cgroup); + if (r < 0) + return r; + + p = strrchr(cgroup, '/') + 1; + k = strlen(p); + + b = strndup(p, k); + + if (!b) + return -ENOMEM; + + r = unit_name_is_valid(b, true); + if (!r) { + free(b); + return -ENOENT; + } + + *unit = b; + + return 0; +} + +int cg_pid_get_unit(pid_t pid, char **unit) { + int r; + char *cgroup; + assert(pid >= 0); assert(unit); @@ -1227,38 +1293,40 @@ int cg_pid_get_unit(pid_t pid, char **unit) { return -ENOENT; } - p = cgroup + 8; - k = strcspn(p, "/"); + r = cgroup_to_unit(cgroup, unit); + if (r < 0){ + free(cgroup); + return r; + } - at = memchr(p, '@', k); - if (at && at[1] == '.') { - size_t j; + free(cgroup); - /* This is a templated service */ - if (p[k] != '/') { - free(cgroup); - return -EIO; - } + return 0; +} - j = strcspn(p+k+1, "/"); +int cg_pid_get_user_unit(pid_t pid, char **unit) { + int r; + char *cgroup; - b = malloc(k + j + 1); + assert(pid >= 0); + assert(unit); - if (b) { - memcpy(b, p, at - p + 1); - memcpy(b + (at - p) + 1, p + k + 1, j); - memcpy(b + (at - p) + 1 + j, at + 1, k - (at - p) - 1); - b[k+j] = 0; - } - } else - b = strndup(p, k); + r = cg_pid_get_cgroup(pid, NULL, &cgroup); + if (r < 0) + return r; - free(cgroup); + if (!startswith(cgroup, "/user/")) { + free(cgroup); + return -ENOENT; + } - if (!b) - return -ENOMEM; + r = cgroup_to_unit(cgroup, unit); + if (r < 0) { + free(cgroup); + return r; + } - *unit = b; - return 0; + free(cgroup); + return 0; } diff --git a/src/shared/cgroup-util.h b/src/shared/cgroup-util.h index f663fba687..2429ba2430 100644 --- a/src/shared/cgroup-util.h +++ b/src/shared/cgroup-util.h @@ -71,5 +71,6 @@ int cg_is_empty_recursive(const char *controller, const char *path, bool ignore_ int cg_get_user_path(char **path); int cg_pid_get_cgroup(pid_t pid, char **root, char **cgroup); int cg_pid_get_unit(pid_t pid, char **unit); +int cg_pid_get_user_unit(pid_t pid, char **unit); char **cg_shorten_controllers(char **controllers); -- cgit v1.2.1 From bbc9006e6b5665073149331d75c104a33224dc19 Mon Sep 17 00:00:00 2001 From: Mirco Tischler Date: Thu, 17 Jan 2013 18:55:06 +0100 Subject: core: log USER_UNIT instead of UNIT if in user session --- src/core/execute.c | 12 ++++++------ src/core/job.c | 16 ++++++++-------- src/core/mount.c | 4 ++-- src/core/service.c | 4 ++-- src/core/unit.c | 8 ++++---- src/core/unit.h | 5 ++++- 6 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/core/execute.c b/src/core/execute.c index 9718e43a70..65a10af3b0 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -1024,8 +1024,8 @@ int exec_spawn(ExecCommand *command, r = exec_context_load_environment(context, &files_env); if (r < 0) { - log_struct(LOG_ERR, - "UNIT=%s", unit_id, + log_struct_unit(LOG_ERR, + unit_id, "MESSAGE=Failed to load environment files: %s", strerror(-r), "ERRNO=%d", -r, NULL); @@ -1039,8 +1039,8 @@ int exec_spawn(ExecCommand *command, if (!line) return log_oom(); - log_struct(LOG_DEBUG, - "UNIT=%s", unit_id, + log_struct_unit(LOG_DEBUG, + unit_id, "MESSAGE=About to execute %s", line, NULL); free(line); @@ -1512,8 +1512,8 @@ int exec_spawn(ExecCommand *command, _exit(r); } - log_struct(LOG_DEBUG, - "UNIT=%s", unit_id, + log_struct_unit(LOG_DEBUG, + unit_id, "MESSAGE=Forked %s as %lu", command->path, (unsigned long) pid, NULL); diff --git a/src/core/job.c b/src/core/job.c index 31ab11880e..e381ea2b69 100644 --- a/src/core/job.c +++ b/src/core/job.c @@ -713,25 +713,25 @@ static void job_log_status_message(Unit *u, JobType t, JobResult result) { sd_id128_t mid; mid = result == JOB_DONE ? SD_MESSAGE_UNIT_STARTED : SD_MESSAGE_UNIT_FAILED; - log_struct(result == JOB_DONE ? LOG_INFO : LOG_ERR, + log_struct_unit(result == JOB_DONE ? LOG_INFO : LOG_ERR, + u->id, MESSAGE_ID(mid), - "UNIT=%s", u->id, "RESULT=%s", job_result_to_string(result), "MESSAGE=%s", buf, NULL); } else if (t == JOB_STOP) - log_struct(result == JOB_DONE ? LOG_INFO : LOG_ERR, + log_struct_unit(result == JOB_DONE ? LOG_INFO : LOG_ERR, + u->id, MESSAGE_ID(SD_MESSAGE_UNIT_STOPPED), - "UNIT=%s", u->id, "RESULT=%s", job_result_to_string(result), "MESSAGE=%s", buf, NULL); else if (t == JOB_RELOAD) - log_struct(result == JOB_DONE ? LOG_INFO : LOG_ERR, + log_struct_unit(result == JOB_DONE ? LOG_INFO : LOG_ERR, + u->id, MESSAGE_ID(SD_MESSAGE_UNIT_RELOADED), - "UNIT=%s", u->id, "RESULT=%s", job_result_to_string(result), "MESSAGE=%s", buf, NULL); @@ -818,8 +818,8 @@ int job_finish_and_invalidate(Job *j, JobResult result, bool recursive) { * this context. And JOB_FAILURE is already handled by the * unit itself. */ if (result == JOB_TIMEOUT || result == JOB_DEPENDENCY) { - log_struct(LOG_NOTICE, - "UNIT=%s", u->id, + log_struct_unit(LOG_NOTICE, + u->id, "JOB_TYPE=%s", job_type_to_string(t), "JOB_RESULT=%s", job_result_to_string(result), "Job %s/%s failed with result '%s'.", diff --git a/src/core/mount.c b/src/core/mount.c index 25bc7e197a..18ce73b438 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -955,11 +955,11 @@ fail: void warn_if_dir_nonempty(const char *unit, const char* where) { if (dir_is_empty(where) > 0) return; - log_struct(LOG_NOTICE, + log_struct_unit(LOG_NOTICE, + unit, "MESSAGE=%s: Directory %s to mount over is not empty, mounting anyway.", unit, where, "WHERE=%s", where, - "_SYSTEMD_UNIT=%s", unit, MESSAGE_ID(SD_MESSAGE_OVERMOUNTING), NULL); } diff --git a/src/core/service.c b/src/core/service.c index 9e46dbae94..bc41617bf7 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -2939,13 +2939,13 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) { f = SERVICE_SUCCESS; } - log_struct(f == SERVICE_SUCCESS ? LOG_DEBUG : LOG_NOTICE, + log_struct_unit(f == SERVICE_SUCCESS ? LOG_DEBUG : LOG_NOTICE, + u->id, "MESSAGE=%s: main process exited, code=%s, status=%i/%s", u->id, sigchld_code_to_string(code), status, strna(code == CLD_EXITED ? exit_status_to_string(status, EXIT_STATUS_FULL) : signal_to_string(status)), - "UNIT=%s", u->id, "EXIT_CODE=%s", sigchld_code_to_string(code), "EXIT_STATUS=%i", status, NULL); diff --git a/src/core/unit.c b/src/core/unit.c index d26f6e456c..83359e126b 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1022,9 +1022,9 @@ static void unit_status_log_starting_stopping_reloading(Unit *u, JobType t) { t == JOB_STOP ? SD_MESSAGE_UNIT_STOPPING : SD_MESSAGE_UNIT_RELOADING; - log_struct(LOG_INFO, + log_struct_unit(LOG_INFO, + u->id, MESSAGE_ID(mid), - "UNIT=%s", u->id, "MESSAGE=%s", buf, NULL); } @@ -1438,9 +1438,9 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su check_unneeded_dependencies(u); if (ns != os && ns == UNIT_FAILED) { - log_struct(LOG_NOTICE, + log_struct_unit(LOG_NOTICE, + u->id, "MESSAGE=Unit %s entered failed state", u->id, - "UNIT=%s", u->id, NULL); unit_trigger_on_failure(u); } diff --git a/src/core/unit.h b/src/core/unit.h index d1ecae74ac..23cd9ef459 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -23,6 +23,7 @@ #include #include +#include typedef struct Unit Unit; typedef struct UnitVTable UnitVTable; @@ -556,9 +557,11 @@ UnitActiveState unit_active_state_from_string(const char *s); const char *unit_dependency_to_string(UnitDependency i); UnitDependency unit_dependency_from_string(const char *s); -#define log_full_unit(level, unit, ...) log_meta_object(level, __FILE__, __LINE__, __func__, "UNIT=", unit, __VA_ARGS__) +#define log_full_unit(level, unit, ...) log_meta_object(level, __FILE__, __LINE__, __func__, getpid() == 1 ? "UNIT=" : "USER_UNIT=", unit, __VA_ARGS__) #define log_debug_unit(unit, ...) log_full_unit(LOG_DEBUG, unit, __VA_ARGS__) #define log_info_unit(unit, ...) log_full_unit(LOG_INFO, unit, __VA_ARGS__) #define log_notice_unit(unit, ...) log_full_unit(LOG_NOTICE, unit, __VA_ARGS__) #define log_warning_unit(unit, ...) log_full_unit(LOG_WARNING, unit, __VA_ARGS__) #define log_error_unit(unit, ...) log_full_unit(LOG_ERR, unit, __VA_ARGS__) + +#define log_struct_unit(level, unit, ...) log_struct(level, getpid() == 1 ? "UNIT=%s" : "USER_UNIT=%s", unit, __VA_ARGS__) -- cgit v1.2.1 From 1a6c43e94649b3f271502a88655f63ea85168fec Mon Sep 17 00:00:00 2001 From: Mirco Tischler Date: Thu, 17 Jan 2013 18:55:07 +0100 Subject: logs-show: add show_journal_by_user_unit Print the journal for a user session unit. For now this filters by _SYSTEMD_USER_UNIT and USER_UNIT and additionally _UID. --- src/shared/logs-show.c | 205 +++++++++++++++++++++++++++++++++++-------------- src/shared/logs-show.h | 12 +++ 2 files changed, 159 insertions(+), 58 deletions(-) diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index c221af3de5..034fde6624 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -774,72 +774,22 @@ int output_journal( return ret; } -int show_journal_by_unit( - FILE *f, - const char *unit, - OutputMode mode, - unsigned n_columns, - usec_t not_before, - unsigned how_many, - OutputFlags flags) { +static int show_journal(FILE *f, + sd_journal *j, + OutputMode mode, + unsigned n_columns, + usec_t not_before, + unsigned how_many, + OutputFlags flags) { - _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL; - sd_journal *j = NULL; int r; unsigned line = 0; bool need_seek = false; int warn_cutoff = flags & OUTPUT_WARN_CUTOFF; + assert(j); assert(mode >= 0); assert(mode < _OUTPUT_MODE_MAX); - assert(unit); - - if (!endswith(unit, ".service") && - !endswith(unit, ".socket") && - !endswith(unit, ".mount") && - !endswith(unit, ".swap")) - return 0; - - if (how_many <= 0) - return 0; - - if (asprintf(&m1, "_SYSTEMD_UNIT=%s", unit) < 0 || - asprintf(&m2, "COREDUMP_UNIT=%s", unit) < 0 || - asprintf(&m3, "UNIT=%s", unit) < 0) { - r = -ENOMEM; - goto finish; - } - - r = sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY|SD_JOURNAL_SYSTEM_ONLY); - if (r < 0) - goto finish; - - /* Look for messages from the service itself */ - r = sd_journal_add_match(j, m1, 0); - if (r < 0) - goto finish; - - /* Look for coredumps of the service */ - r = sd_journal_add_disjunction(j); - if (r < 0) - goto finish; - r = sd_journal_add_match(j, "MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1", 0); - if (r < 0) - goto finish; - r = sd_journal_add_match(j, m2, 0); - if (r < 0) - goto finish; - - /* Look for messages from PID 1 about this service */ - r = sd_journal_add_disjunction(j); - if (r < 0) - goto finish; - r = sd_journal_add_match(j, "_PID=1", 0); - if (r < 0) - goto finish; - r = sd_journal_add_match(j, m3, 0); - if (r < 0) - goto finish; /* Seek to end */ r = sd_journal_seek_tail(j); @@ -915,6 +865,145 @@ int show_journal_by_unit( } +finish: + return r; +} + +int show_journal_by_unit( + FILE *f, + const char *unit, + OutputMode mode, + unsigned n_columns, + usec_t not_before, + unsigned how_many, + OutputFlags flags) { + + _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL; + sd_journal *j = NULL; + int r; + + assert(mode >= 0); + assert(mode < _OUTPUT_MODE_MAX); + assert(unit); + + if (!endswith(unit, ".service") && + !endswith(unit, ".socket") && + !endswith(unit, ".mount") && + !endswith(unit, ".swap")) + return 0; + + if (how_many <= 0) + return 0; + + if (asprintf(&m1, "_SYSTEMD_UNIT=%s", unit) < 0 || + asprintf(&m2, "COREDUMP_UNIT=%s", unit) < 0 || + asprintf(&m3, "UNIT=%s", unit) < 0) { + r = -ENOMEM; + goto finish; + } + + r = sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY|SD_JOURNAL_SYSTEM_ONLY); + if (r < 0) + goto finish; + + /* Look for messages from the service itself */ + r = sd_journal_add_match(j, m1, 0); + if (r < 0) + goto finish; + + /* Look for coredumps of the service */ + r = sd_journal_add_disjunction(j); + if (r < 0) + goto finish; + r = sd_journal_add_match(j, "MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1", 0); + if (r < 0) + goto finish; + r = sd_journal_add_match(j, m2, 0); + if (r < 0) + goto finish; + + /* Look for messages from PID 1 about this service */ + r = sd_journal_add_disjunction(j); + if (r < 0) + goto finish; + r = sd_journal_add_match(j, "_PID=1", 0); + if (r < 0) + goto finish; + r = sd_journal_add_match(j, m3, 0); + if (r < 0) + goto finish; + + r = show_journal(f, j, mode, n_columns, not_before, how_many, flags); + if (r < 0) + goto finish; + +finish: + if (j) + sd_journal_close(j); + + return r; +} + +int show_journal_by_user_unit( + FILE *f, + const char *unit, + OutputMode mode, + unsigned n_columns, + usec_t not_before, + unsigned how_many, + uid_t uid, + OutputFlags flags) { + + _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL; + sd_journal *j = NULL; + int r; + + assert(mode >= 0); + assert(mode < _OUTPUT_MODE_MAX); + assert(unit); + + if (!endswith(unit, ".service") && + !endswith(unit, ".socket")) + + return 0; + + if (how_many <= 0) + return 0; + + if (asprintf(&m1, "_SYSTEMD_USER_UNIT=%s", unit) < 0 || + asprintf(&m2, "USER_UNIT=%s", unit) < 0 || + asprintf(&m3, "_UID=%d", uid) < 0) { + r = -ENOMEM; + goto finish; + } + + r = sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY); + if (r < 0) + goto finish; + + /* Look for messages from the user service itself */ + r = sd_journal_add_match(j, m1, 0); + if (r < 0) + goto finish; + r = sd_journal_add_match(j, m3, 0); + if (r < 0) + goto finish; + + /* Look for messages from systemd about this service */ + r = sd_journal_add_disjunction(j); + if (r < 0) + goto finish; + r = sd_journal_add_match(j, m2, 0); + if (r < 0) + goto finish; + r = sd_journal_add_match(j, m3, 0); + if (r < 0) + goto finish; + + r = show_journal(f, j, mode, n_columns, not_before, how_many, flags); + if (r < 0) + goto finish; + finish: if (j) sd_journal_close(j); diff --git a/src/shared/logs-show.h b/src/shared/logs-show.h index 6c32aa7a72..a835112c99 100644 --- a/src/shared/logs-show.h +++ b/src/shared/logs-show.h @@ -22,6 +22,8 @@ ***/ #include +#include +#include #include @@ -44,6 +46,16 @@ int show_journal_by_unit( unsigned how_many, OutputFlags flags); +int show_journal_by_user_unit( + FILE *f, + const char *unit, + OutputMode mode, + unsigned n_columns, + usec_t not_before, + unsigned how_many, + uid_t uid, + OutputFlags flags); + void json_escape( FILE *f, const char* p, -- cgit v1.2.1 From cc86e6b86e6431940a68fae56b84b865cf5b1e6d Mon Sep 17 00:00:00 2001 From: Mirco Tischler Date: Thu, 17 Jan 2013 18:55:08 +0100 Subject: systemctl: print the user session journal for user session units. --- src/systemctl/systemctl.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index f3d661d2b5..fb4ae24ed6 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -2734,13 +2734,23 @@ static void print_status_info(UnitStatusInfo *i) { if (i->id && arg_transport != TRANSPORT_SSH) { printf("\n"); - show_journal_by_unit(stdout, - i->id, - arg_output, - 0, - i->inactive_exit_timestamp_monotonic, - arg_lines, - flags); + if(arg_scope == UNIT_FILE_SYSTEM) + show_journal_by_unit(stdout, + i->id, + arg_output, + 0, + i->inactive_exit_timestamp_monotonic, + arg_lines, + flags); + else + show_journal_by_user_unit(stdout, + i->id, + arg_output, + 0, + i->inactive_exit_timestamp_monotonic, + arg_lines, + getuid(), + flags); } if (i->need_daemon_reload) -- cgit v1.2.1 From 64abe9aa3f7dc7d755a4d3d1783fe3f0285edaea Mon Sep 17 00:00:00 2001 From: Mirco Tischler Date: Thu, 17 Jan 2013 18:55:09 +0100 Subject: man: document the _SYSTEMD_USER_UNIT journal field --- man/systemd.journal-fields.xml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/man/systemd.journal-fields.xml b/man/systemd.journal-fields.xml index 13af4fdfc1..2e9bc5baff 100644 --- a/man/systemd.journal-fields.xml +++ b/man/systemd.journal-fields.xml @@ -212,13 +212,15 @@ _SYSTEMD_CGROUP= _SYSTEMD_SESSION= _SYSTEMD_UNIT= + _SYSTEMD_USER_UNIT= _SYSTEMD_OWNER_UID= The control group path in the systemd hierarchy, the systemd session ID (if any), - the systemd unit name (if any) + the systemd unit name (if any), + the systemd user session unit name (if any) and the owner UID of the systemd session (if any) of the process the journal entry -- cgit v1.2.1 From 3f98659cce700fea91959312297950f15011b07b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 18 Jan 2013 01:13:26 -0500 Subject: core/group-util: merge two functions --- src/shared/cgroup-util.c | 44 ++++++++------------------------------------ 1 file changed, 8 insertions(+), 36 deletions(-) diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 3d12233a1b..af5227848d 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -1277,9 +1277,9 @@ static int cgroup_to_unit(char *cgroup, char **unit){ return 0; } -int cg_pid_get_unit(pid_t pid, char **unit) { +static int cg_pid_get(const char *prefix, pid_t pid, char **unit) { int r; - char *cgroup; + char _cleanup_free_ *cgroup = NULL; assert(pid >= 0); assert(unit); @@ -1288,45 +1288,17 @@ int cg_pid_get_unit(pid_t pid, char **unit) { if (r < 0) return r; - if (!startswith(cgroup, "/system/")) { - free(cgroup); + if (!startswith(cgroup, prefix)) return -ENOENT; - } r = cgroup_to_unit(cgroup, unit); - if (r < 0){ - free(cgroup); - return r; - } - - free(cgroup); + return r; +} - return 0; +int cg_pid_get_unit(pid_t pid, char **unit) { + return cg_pid_get("/system/", pid, unit); } int cg_pid_get_user_unit(pid_t pid, char **unit) { - int r; - char *cgroup; - - assert(pid >= 0); - assert(unit); - - r = cg_pid_get_cgroup(pid, NULL, &cgroup); - if (r < 0) - return r; - - if (!startswith(cgroup, "/user/")) { - free(cgroup); - return -ENOENT; - } - - r = cgroup_to_unit(cgroup, unit); - if (r < 0) { - free(cgroup); - return r; - } - - free(cgroup); - - return 0; + return cg_pid_get("/user/", pid, unit); } -- cgit v1.2.1 From 96cde13ace6406582688028f3df5668a172ba628 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 18 Jan 2013 01:13:27 -0500 Subject: core/cgroup-util: simplify functions and add tests --- Makefile.am | 10 +++++++- src/shared/cgroup-util.c | 62 ++++++++++++++++++--------------------------- src/shared/cgroup-util.h | 2 ++ src/test/test-cgroup-util.c | 27 ++++++++++++++++++++ 4 files changed, 63 insertions(+), 38 deletions(-) create mode 100644 src/test/test-cgroup-util.c diff --git a/Makefile.am b/Makefile.am index ab9fb99f96..25d99950ff 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1194,7 +1194,8 @@ noinst_tests += \ test-replace-var \ test-sched-prio \ test-calendarspec \ - test-strip-tab-ansi + test-strip-tab-ansi \ + test-cgroup-util EXTRA_DIST += \ test/sched_idle_bad.service \ @@ -1311,6 +1312,13 @@ test_cgroup_LDADD = \ libsystemd-label.la \ libsystemd-shared.la +test_cgroup_util_SOURCES = \ + src/test/test-cgroup-util.c + +test_cgroup_util_LDADD = \ + libsystemd-label.la \ + libsystemd-shared.la + test_env_replace_SOURCES = \ src/test/test-env-replace.c diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index af5227848d..f0d0d4855b 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -1211,69 +1211,57 @@ int cg_pid_get_cgroup(pid_t pid, char **root, char **cgroup) { return 0; } -static int instance_unit_from_cgroup(char **cgroup){ +static int instance_unit_from_cgroup(char *cgroup){ char *at; assert(cgroup); - at = memchr(*cgroup, '@', strlen(*cgroup)); - if (at && at[1] == '.') { - char *i, *s; - + at = strstr(cgroup, "@."); + if (at) { /* This is a templated service */ - i = memchr(at, '/', strlen(at)); - if(!i) - return -EIO; - s = strndup(at + 1, i - at); - if (!s) - return -ENOMEM; + char *i; + char _cleanup_free_ *i2 = NULL, *s = NULL; - i = strdup(i + 1); - if (!i) { - free(s); - return -ENOMEM; - } + i = strchr(at, '/'); + if (!i || !i[1]) /* disallow empty instances */ + return -EINVAL; - strcpy(at + 1, i); - strcpy(at + strlen(i) + 1, s); - at[strlen(at) - 1] = '\0'; + s = strndup(at + 1, i - at - 1); + i2 = strdup(i + 1); + if (!s || !i2) + return -ENOMEM; - free(i); - free(s); + strcpy(at + 1, i2); + strcat(at + 1, s); } return 0; } -static int cgroup_to_unit(char *cgroup, char **unit){ +/* non-static only for testing purposes */ +int cgroup_to_unit(char *cgroup, char **unit){ int r; - char *b, *p; - size_t k; + char *p; assert(cgroup); assert(unit); - r = instance_unit_from_cgroup(&cgroup); + r = instance_unit_from_cgroup(cgroup); if (r < 0) return r; - p = strrchr(cgroup, '/') + 1; - k = strlen(p); + p = strrchr(cgroup, '/'); + assert(p); - b = strndup(p, k); + r = unit_name_is_valid(p + 1, true); + if (!r) + return -EINVAL; - if (!b) + *unit = strdup(p + 1); + if (!*unit) return -ENOMEM; - r = unit_name_is_valid(b, true); - if (!r) { - free(b); - return -ENOENT; - } - - *unit = b; - return 0; } diff --git a/src/shared/cgroup-util.h b/src/shared/cgroup-util.h index 2429ba2430..920cf631e5 100644 --- a/src/shared/cgroup-util.h +++ b/src/shared/cgroup-util.h @@ -73,4 +73,6 @@ int cg_pid_get_cgroup(pid_t pid, char **root, char **cgroup); int cg_pid_get_unit(pid_t pid, char **unit); int cg_pid_get_user_unit(pid_t pid, char **unit); +int cgroup_to_unit(char *cgroup, char **unit); + char **cg_shorten_controllers(char **controllers); diff --git a/src/test/test-cgroup-util.c b/src/test/test-cgroup-util.c new file mode 100644 index 0000000000..b30bf23a80 --- /dev/null +++ b/src/test/test-cgroup-util.c @@ -0,0 +1,27 @@ +#include + +#include "util.h" +#include "cgroup-util.h" + +#define check_c_t_u(path, code, result) \ +{ \ + char a[] = path; \ + char *unit = NULL; \ + assert_se(cgroup_to_unit(a, &unit) == code); \ + assert(code < 0 || streq(unit, result)); \ +} + + +static void test_cgroup_to_unit(void) { + check_c_t_u("/system/getty@.service/tty2", 0, "getty@tty2.service"); + check_c_t_u("/system/getty@.service/", -EINVAL, "getty@tty2.service"); + check_c_t_u("/system/getty@.service", -EINVAL, "getty@tty2.service"); + check_c_t_u("/system/getty.service", 0, "getty.service"); + check_c_t_u("/system/getty", -EINVAL, "getty.service"); +} + +int main(void) { + test_cgroup_to_unit(); + + return 0; +} -- cgit v1.2.1 From 88d04e31ce0837ebf937ab46c3c39a0d93ab4c7c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 18 Jan 2013 18:13:01 +0100 Subject: nspawn: add audit caps to default set to keep Due to the brokeness of much of the userspace audit code we cannot really start too many systems without the audit caps set. To make nspawn easier to use just add the audit caps by default. To boot up containers successfully the kernel's auditing needs to be turned off still (use "audit=0" on the kernel command line), but at least no manual caps have to be passed anymore. In the long run auditing will be fixed for containers and ve virtualized properly at which time it should be safe to enable these caps anyway. --- man/systemd-nspawn.xml | 8 +++++--- src/nspawn/nspawn.c | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index db2d417e49..2939951a88 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -227,8 +227,8 @@ list of capability names, see capabilities7 for more information. Note that the - following capabilities will be - granted in any way: CAP_CHOWN, + following capabilities will be granted + in any way: CAP_CHOWN, CAP_DAC_OVERRIDE, CAP_DAC_READ_SEARCH, CAP_FOWNER, CAP_FSETID, CAP_IPC_OWNER, CAP_KILL, CAP_LEASE, @@ -239,7 +239,9 @@ CAP_SETUID, CAP_SYS_ADMIN, CAP_SYS_CHROOT, CAP_SYS_NICE, CAP_SYS_PTRACE, CAP_SYS_TTY_CONFIG, - CAP_SYS_RESOURCE, CAP_SYS_BOOT. + CAP_SYS_RESOURCE, CAP_SYS_BOOT, + CAP_AUDIT_WRITE, + CAP_AUDIT_CONTROL. diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 98b583d747..62dc20d824 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -96,7 +96,9 @@ static uint64_t arg_retain = (1ULL << CAP_SYS_PTRACE) | (1ULL << CAP_SYS_TTY_CONFIG) | (1ULL << CAP_SYS_RESOURCE) | - (1ULL << CAP_SYS_BOOT); + (1ULL << CAP_SYS_BOOT) | + (1ULL << CAP_AUDIT_WRITE) | + (1ULL << CAP_AUDIT_CONTROL); static int help(void) { -- cgit v1.2.1 From 2b3987a863975f5a1fa1754725e3d07a5d4f6478 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 18 Jan 2013 18:22:55 +0100 Subject: man: update suggested yum command line in nspawn(1) --- man/systemd-nspawn.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index 2939951a88..777e0a3a77 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -298,13 +298,13 @@ Example 1 - # yum --releasever=17 --nogpgcheck --installroot ~/fedora-tree/ install yum passwd vim-minimal rootfiles systemd -# systemd-nspawn -D ~/fedora-tree /usr/lib/systemd/systemd + # yum -y --releasever=19 --nogpg --installroot=/srv/mycontainer --disablerepo='*' --enablerepo=fedora install systemd passwd yum fedora-release vim-minimal +# systemd-nspawn -bD /srv/mycontainer This installs a minimal Fedora distribution into - the directory ~/fedora-tree/ - and then boots an OS in a namespace container in it, - with systemd as init system. + the directory /srv/mycontainer/ and + then boots an OS in a namespace container in + it. -- cgit v1.2.1 From d6a195a3c373f67632cb98d6e6e14f974ef062f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 18 Jan 2013 16:49:48 -0500 Subject: build-sys: add autoconf macro to pick macro for x32 compatibility --- configure.ac | 1 + m4/sd_check_max_int_size.m4 | 27 +++++++++++++++++++++++++++ src/core/manager.c | 4 ++-- 3 files changed, 30 insertions(+), 2 deletions(-) create mode 100644 m4/sd_check_max_int_size.m4 diff --git a/configure.ac b/configure.ac index 3566dac830..540bfa47a5 100644 --- a/configure.ac +++ b/configure.ac @@ -40,6 +40,7 @@ AC_DEFINE_UNQUOTED([CANONICAL_HOST], "$host", [Canonical host string.]) AS_IF([test "x$host_cpu" = "xmips" || test "x$host_cpu" = "xmipsel" || test "x$host_cpu" = "xmips64" || test "x$host_cpu" = "xmips64el"], [AC_DEFINE(ARCH_MIPS, [], [Whether on mips arch])]) +SD_CHECK_MAX_INT_SIZE([time_t], [#include ]) LT_PREREQ(2.2) LT_INIT([disable-static]) diff --git a/m4/sd_check_max_int_size.m4 b/m4/sd_check_max_int_size.m4 new file mode 100644 index 0000000000..a4230b5ee8 --- /dev/null +++ b/m4/sd_check_max_int_size.m4 @@ -0,0 +1,27 @@ +dnl Find what INT_MAX define to use for a type + +#serial 1 + +ifdef([AC_TR_SH],[], [ +define([AC_TR_SH], + [patsubst(translit([[$1]], [*+], [pp]), [[^a-zA-Z0-9_]], [_])]) +define([AC_TR_CPP], + [patsubst(translit([[$1]], + [*abcdefghijklmnopqrstuvwxyz], + [PABCDEFGHIJKLMNOPQRSTUVWXYZ]), + [[^A-Z0-9_]], [_])]) +]) + +AC_DEFUN([SD_CHECK_MAX_INT_SIZE], + [AC_CHECK_SIZEOF([long],,) + AC_CHECK_SIZEOF([long long],,) + AC_CHECK_SIZEOF([$1],,[$2]) + AS_CASE([$ac_cv_sizeof_[]AC_TR_SH($1)], + [$ac_cv_sizeof_long], [sd_type_max=LONG_MAX], + [$ac_cv_sizeof_long_long], [sd_type_max=LONG_LONG_MAX], + [AC_MSG_ERROR([Don't know how to map $1 to an integer])]) + AC_DEFINE_UNQUOTED(AC_TR_CPP($1_MAX), [$sd_type_max], + [what int to use to maximize $1]) + AC_MSG_CHECKING([what int to to use to maximize $1]) + AC_MSG_RESULT([$sd_type_max]) +]) diff --git a/src/core/manager.c b/src/core/manager.c index df0fd63e87..d4afc931f3 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -157,8 +157,8 @@ static int manager_setup_time_change(Manager *m) { /* We only care for the cancellation event, hence we set the * timeout to the latest possible value. */ - assert_cc(sizeof(time_t) == sizeof(long)); - its.it_value.tv_sec = LONG_MAX; + assert_cc(sizeof(time_t) == sizeof(TIME_T_MAX)); + its.it_value.tv_sec = TIME_T_MAX; if (timerfd_settime(m->time_change_watch.fd, TFD_TIMER_ABSTIME|TFD_TIMER_CANCEL_ON_SET, &its, NULL) < 0) { log_debug("Failed to set up TFD_TIMER_CANCEL_ON_SET, ignoring: %m"); -- cgit v1.2.1 From 0fa57908e1b159867299261bc46c7a03629709e4 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 19 Jan 2013 00:11:36 +0100 Subject: build-sys: prune the list of directories we create on install --- Makefile.am | 3 --- 1 file changed, 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index 25d99950ff..c57ea0dce4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3967,10 +3967,7 @@ systemd-install-data-hook: $(DESTDIR)$(systemunitdir)/runlevel4.target.wants \ $(DESTDIR)$(systemunitdir)/runlevel5.target.wants \ $(DESTDIR)$(systemunitdir)/multi-user.target.wants \ - $(DESTDIR)$(systemunitdir)/graphical.target.wants \ $(DESTDIR)$(pkgsysconfdir)/system \ - $(DESTDIR)$(pkgsysconfdir)/system/sysinit.target.wants \ - $(DESTDIR)$(pkgsysconfdir)/system/local-fs.target.wants \ $(DESTDIR)$(pkgsysconfdir)/system/multi-user.target.wants \ $(DESTDIR)$(pkgsysconfdir)/system/getty.target.wants \ $(DESTDIR)$(pkgsysconfdir)/user \ -- cgit v1.2.1 From adf36dd0aec564a00a7445e328c3e27f44938629 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 19 Jan 2013 00:11:45 +0100 Subject: update TODO --- TODO | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/TODO b/TODO index a74ffc3e9a..626ea3d5e8 100644 --- a/TODO +++ b/TODO @@ -20,6 +20,13 @@ Fedora 19: Features: +* link runlevel targets on install only if sysv compat is enabled + +* logind: when executing sleep/shutdown job, keep track of its id, and + as long as the job is running refuse any further operation. + +* maybe not install getty@tty1.service symlink in /etc but in /usr? + * re-enable "make check" for gtk-doc (broken for unknown reason) * logind: make PrepareForSuspend(false) an official api for notification of resumes -- cgit v1.2.1 From e884315e3d28df0d5f4e7d4590730e9760b8f447 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 19 Jan 2013 00:59:19 +0100 Subject: cgroup: additional validity checks for cgroup attribute names --- src/core/unit.c | 19 +++++++------- src/shared/cgroup-util.c | 64 +++++++++++++++++++++++++++++++++++++----------- src/shared/cgroup-util.h | 2 ++ src/shared/util.c | 37 +++++++++++++++++++--------- src/shared/util.h | 1 + 5 files changed, 89 insertions(+), 34 deletions(-) diff --git a/src/core/unit.c b/src/core/unit.c index 83359e126b..6cf02365e9 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -2156,26 +2156,27 @@ int unit_add_cgroup_attribute( _cleanup_free_ char *c = NULL; CGroupAttribute *a; + int r; assert(u); assert(name); assert(value); if (!controller) { - const char *dot; - - dot = strchr(name, '.'); - if (!dot) + r = cg_controller_from_attr(name, &c); + if (r < 0) return -EINVAL; - c = strndup(name, dot - name); - if (!c) - return -ENOMEM; - controller = c; + } else { + if (!filename_is_safe(name)) + return -EINVAL; + + if (!filename_is_safe(controller)) + return -EINVAL; } - if (streq(controller, SYSTEMD_CGROUP_CONTROLLER)) + if (!controller || streq(controller, SYSTEMD_CGROUP_CONTROLLER)) return -EINVAL; a = cgroup_attribute_find_list(u->cgroup_attributes, controller, name); diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index f0d0d4855b..acace52bc8 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -990,6 +990,8 @@ int cg_split_spec(const char *spec, char **controller, char **path) { assert(spec); if (*spec == '/') { + if (!path_is_safe(spec)) + return -EINVAL; if (path) { t = strdup(spec); @@ -1007,7 +1009,7 @@ int cg_split_spec(const char *spec, char **controller, char **path) { e = strchr(spec, ':'); if (!e) { - if (strchr(spec, '/') || spec[0] == 0) + if (!filename_is_safe(spec)) return -EINVAL; if (controller) { @@ -1024,29 +1026,34 @@ int cg_split_spec(const char *spec, char **controller, char **path) { return 0; } - if (e[1] != '/' || e == spec || memchr(spec, '/', e-spec)) + t = strndup(spec, e-spec); + if (!t) + return -ENOMEM; + if (!filename_is_safe(t)) { + free(t); return -EINVAL; - - if (controller) { - t = strndup(spec, e-spec); - if (!t) - return -ENOMEM; - } - if (path) { - u = strdup(e+1); - if (!u) { - free(t); - return -ENOMEM; - } + u = strdup(e+1); + if (!u) { + free(t); + return -ENOMEM; + } + if (!path_is_safe(u)) { + free(t); + free(u); + return -EINVAL; } if (controller) *controller = t; + else + free(t); if (path) *path = u; + else + free(u); return 0; } @@ -1290,3 +1297,32 @@ int cg_pid_get_unit(pid_t pid, char **unit) { int cg_pid_get_user_unit(pid_t pid, char **unit) { return cg_pid_get("/user/", pid, unit); } + +int cg_controller_from_attr(const char *attr, char **controller) { + const char *dot; + char *c; + + assert(attr); + assert(controller); + + if (!filename_is_safe(attr)) + return -EINVAL; + + dot = strchr(attr, '.'); + if (!dot) { + *controller = NULL; + return 0; + } + + c = strndup(attr, dot - attr); + if (!c) + return -ENOMEM; + + if (!filename_is_safe(c)) { + free(c); + return -EINVAL; + } + + *controller = c; + return 1; +} diff --git a/src/shared/cgroup-util.h b/src/shared/cgroup-util.h index 920cf631e5..06c6bfb2e3 100644 --- a/src/shared/cgroup-util.h +++ b/src/shared/cgroup-util.h @@ -76,3 +76,5 @@ int cg_pid_get_user_unit(pid_t pid, char **unit); int cgroup_to_unit(char *cgroup, char **unit); char **cg_shorten_controllers(char **controllers); + +int cg_controller_from_attr(const char *attr, char **controller); diff --git a/src/shared/util.c b/src/shared/util.c index 37e383f2ef..1aaebf0612 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -561,9 +561,9 @@ int fchmod_umask(int fd, mode_t m) { } int write_one_line_file_atomic(const char *fn, const char *line) { - FILE *f; + _cleanup_fclose_ FILE *f = NULL; + _cleanup_free_ char *p = NULL; int r; - char *p; assert(fn); assert(line); @@ -585,12 +585,9 @@ int write_one_line_file_atomic(const char *fn, const char *line) { fflush(f); - if (ferror(f)) { - if (errno != 0) - r = -errno; - else - r = -EIO; - } else { + if (ferror(f)) + r = errno ? -errno : -EIO; + else { if (rename(p, fn) < 0) r = -errno; else @@ -601,9 +598,6 @@ finish: if (r < 0) unlink(p); - fclose(f); - free(p); - return r; } @@ -5613,6 +5607,27 @@ bool string_is_safe(const char *p) { return true; } +bool path_is_safe(const char *p) { + + if (isempty(p)) + return false; + + if (streq(p, "..") || startswith(p, "../") || endswith(p, "/..") || strstr(p, "/../")) + return false; + + if (strlen(p) > PATH_MAX) + return false; + + /* The following two checks are not really dangerous, but hey, they still are confusing */ + if (streq(p, ".") || startswith(p, "./") || endswith(p, "/.") || strstr(p, "/./")) + return false; + + if (strstr(p, "//")) + return false; + + return true; +} + /* hey glibc, APIs with callbacks without a user pointer are so useless */ void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *, void *), void *arg) { diff --git a/src/shared/util.h b/src/shared/util.h index cdaff45772..d260385991 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -543,6 +543,7 @@ _malloc_ static inline void *memdup_multiply(const void *p, size_t a, size_t b) } bool filename_is_safe(const char *p); +bool path_is_safe(const char *p); bool string_is_safe(const char *p); void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size, -- cgit v1.2.1 From 71645acac27da55d510f2e4d61cc61b4e5b93035 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 19 Jan 2013 01:01:41 +0100 Subject: unit: optionally allow making cgroup attribute changes persistent --- src/core/dbus-unit.c | 103 ++++++++++++++++++++++++++++++++++------------ src/core/mount.c | 4 +- src/core/service.c | 4 +- src/core/socket.c | 4 +- src/core/swap.c | 4 +- src/core/unit.c | 49 ++++++++++++++++++++++ src/core/unit.h | 6 +++ src/shared/dbus-common.c | 61 +++++++++++++++++++++++++++ src/shared/dbus-common.h | 1 + src/systemctl/systemctl.c | 14 +++++-- 10 files changed, 217 insertions(+), 33 deletions(-) diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c index d2f8ebf760..d1de46afd4 100644 --- a/src/core/dbus-unit.c +++ b/src/core/dbus-unit.c @@ -896,10 +896,32 @@ oom: return DBUS_HANDLER_RESULT_NEED_MEMORY; } +static int next_and_parse_mode(DBusMessageIter *iter, bool *runtime) { + const char *mode; + + assert(iter); + assert(runtime); + + dbus_message_iter_next(iter); + if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_STRING) + return -EINVAL; + + dbus_message_iter_get_basic(iter, &mode); + if (streq(mode, "runtime")) + *runtime = true; + else if (streq(mode, "persistent")) + *runtime = false; + else + return -EINVAL; + + return 0; +} + int bus_unit_cgroup_set(Unit *u, DBusMessageIter *iter) { int r; _cleanup_strv_free_ char **a = NULL; char **name; + bool runtime; assert(u); assert(iter); @@ -911,8 +933,12 @@ int bus_unit_cgroup_set(Unit *u, DBusMessageIter *iter) { if (r < 0) return r; + r = next_and_parse_mode(iter, &runtime); + if (r < 0) + return r; + STRV_FOREACH(name, a) { - _cleanup_free_ char *controller = NULL, *old_path = NULL, *new_path = NULL; + _cleanup_free_ char *controller = NULL, *old_path = NULL, *new_path = NULL, *contents = NULL; CGroupBonding *b; r = cg_split_spec(*name, &controller, &new_path); @@ -938,6 +964,15 @@ int bus_unit_cgroup_set(Unit *u, DBusMessageIter *iter) { if (old_path) cg_trim(controller, old_path, true); } + + contents = strjoin("[", UNIT_VTABLE(u)->exec_section, "]\n" + "ControlGroup=", *name, "\n", NULL); + if (!contents) + return -ENOMEM; + + r = unit_write_drop_in(u, runtime, *name, contents); + if (r < 0) + return r; } return 0; @@ -947,6 +982,7 @@ int bus_unit_cgroup_unset(Unit *u, DBusMessageIter *iter) { _cleanup_strv_free_ char **a = NULL; char **name; int r; + bool runtime; assert(u); assert(iter); @@ -958,6 +994,10 @@ int bus_unit_cgroup_unset(Unit *u, DBusMessageIter *iter) { if (r < 0) return r; + r = next_and_parse_mode(iter, &runtime); + if (r < 0) + return r; + STRV_FOREACH(name, a) { _cleanup_free_ char *controller = NULL, *path = NULL, *target = NULL; CGroupBonding *b; @@ -966,6 +1006,11 @@ int bus_unit_cgroup_unset(Unit *u, DBusMessageIter *iter) { if (r < 0) return r; + if (!controller || streq(controller, SYSTEMD_CGROUP_CONTROLLER)) + return -EINVAL; + + unit_remove_drop_in(u, runtime, *name); + b = cgroup_bonding_find_list(u->cgroup_bondings, controller); if (!b) continue; @@ -1004,16 +1049,12 @@ int bus_unit_cgroup_attribute_get(Unit *u, DBusMessageIter *iter, char ***_resul STRV_FOREACH(name, l) { _cleanup_free_ char *controller = NULL; - const char *dot; CGroupAttribute *a; CGroupBonding *b; - dot = strchr(*name, '.'); - if (dot) { - controller = strndup(*name, dot - *name); - if (!controller) - return -ENOMEM; - } + r = cg_controller_from_attr(*name, &controller); + if (r < 0) + return r; /* First attempt, read the value from the kernel */ b = cgroup_bonding_find_list(u->cgroup_bondings, controller); @@ -1055,8 +1096,10 @@ int bus_unit_cgroup_attribute_get(Unit *u, DBusMessageIter *iter, char ***_resul } int bus_unit_cgroup_attribute_set(Unit *u, DBusMessageIter *iter) { - DBusMessageIter sub, sub2; + _cleanup_strv_free_ char **l = NULL; int r; + bool runtime = false; + char **name, **value; assert(u); assert(iter); @@ -1064,27 +1107,19 @@ int bus_unit_cgroup_attribute_set(Unit *u, DBusMessageIter *iter) { if (!unit_get_exec_context(u)) return -EINVAL; - if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_ARRAY || - dbus_message_iter_get_element_type(iter) != DBUS_TYPE_STRUCT) - return -EINVAL; + r = bus_parse_strv_pairs_iter(iter, &l); + if (r < 0) + return r; - dbus_message_iter_recurse(iter, &sub); + r = next_and_parse_mode(iter, &runtime); + if (r < 0) + return r; - while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { - const char *name, *value; + STRV_FOREACH_PAIR(name, value, l) { + _cleanup_free_ char *contents = NULL; CGroupAttribute *a; - assert_se(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_STRUCT); - - dbus_message_iter_recurse(&sub, &sub2); - - if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &name, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &value, false) < 0) - return -EINVAL; - - dbus_message_iter_next(&sub); - - r = unit_add_cgroup_attribute(u, NULL, name, value, NULL, &a); + r = unit_add_cgroup_attribute(u, NULL, *name, *value, NULL, &a); if (r < 0) return r; @@ -1107,6 +1142,15 @@ int bus_unit_cgroup_attribute_set(Unit *u, DBusMessageIter *iter) { /* Make it count */ cgroup_attribute_apply(a, u->cgroup_bondings); } + + contents = strjoin("[", UNIT_VTABLE(u)->exec_section, "]\n" + "ControlGroupAttribute=", *name, " ", *value, "\n", NULL); + if (!contents) + return -ENOMEM; + + r = unit_write_drop_in(u, runtime, *name, contents); + if (r < 0) + return r; } return 0; @@ -1115,6 +1159,7 @@ int bus_unit_cgroup_attribute_set(Unit *u, DBusMessageIter *iter) { int bus_unit_cgroup_attribute_unset(Unit *u, DBusMessageIter *iter) { _cleanup_strv_free_ char **l = NULL; char **name; + bool runtime; int r; assert(u); @@ -1127,12 +1172,18 @@ int bus_unit_cgroup_attribute_unset(Unit *u, DBusMessageIter *iter) { if (r < 0) return r; + r = next_and_parse_mode(iter, &runtime); + if (r < 0) + return r; + STRV_FOREACH(name, l) { CGroupAttribute *a; a = cgroup_attribute_find_list(u->cgroup_attributes, NULL, *name); if (a) cgroup_attribute_free(a); + + unit_remove_drop_in(u, runtime, *name); } return 0; diff --git a/src/core/mount.c b/src/core/mount.c index 18ce73b438..03eff9d9ed 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -1888,13 +1888,15 @@ DEFINE_STRING_TABLE_LOOKUP(mount_result, MountResult); const UnitVTable mount_vtable = { .object_size = sizeof(Mount), - .exec_context_offset = offsetof(Mount, exec_context), .sections = "Unit\0" "Mount\0" "Install\0", + .exec_context_offset = offsetof(Mount, exec_context), + .exec_section = "Mount", + .no_alias = true, .no_instances = true, diff --git a/src/core/service.c b/src/core/service.c index bc41617bf7..ee5a1a41e5 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -3832,13 +3832,15 @@ DEFINE_STRING_TABLE_LOOKUP(start_limit_action, StartLimitAction); const UnitVTable service_vtable = { .object_size = sizeof(Service), - .exec_context_offset = offsetof(Service, exec_context), .sections = "Unit\0" "Service\0" "Install\0", + .exec_context_offset = offsetof(Service, exec_context), + .exec_section = "Service", + .init = service_init, .done = service_done, .load = service_load, diff --git a/src/core/socket.c b/src/core/socket.c index f2d854851d..f74d88e602 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -2388,13 +2388,15 @@ DEFINE_STRING_TABLE_LOOKUP(socket_result, SocketResult); const UnitVTable socket_vtable = { .object_size = sizeof(Socket), - .exec_context_offset = offsetof(Socket, exec_context), .sections = "Unit\0" "Socket\0" "Install\0", + .exec_context_offset = offsetof(Socket, exec_context), + .exec_section = "Socket", + .init = socket_init, .done = socket_done, .load = socket_load, diff --git a/src/core/swap.c b/src/core/swap.c index c8e25d0665..a2f11875a2 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -1382,13 +1382,15 @@ DEFINE_STRING_TABLE_LOOKUP(swap_result, SwapResult); const UnitVTable swap_vtable = { .object_size = sizeof(Swap), - .exec_context_offset = offsetof(Swap, exec_context), .sections = "Unit\0" "Swap\0" "Install\0", + .exec_context_offset = offsetof(Swap, exec_context), + .exec_section = "Swap", + .no_alias = true, .no_instances = true, diff --git a/src/core/unit.c b/src/core/unit.c index 6cf02365e9..98237c8147 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -45,6 +45,7 @@ #include "cgroup-util.h" #include "missing.h" #include "cgroup-attr.h" +#include "mkdir.h" const UnitVTable * const unit_vtable[_UNIT_TYPE_MAX] = { [UNIT_SERVICE] = &service_vtable, @@ -2758,6 +2759,54 @@ ExecContext *unit_get_exec_context(Unit *u) { return (ExecContext*) ((uint8_t*) u + offset); } +int unit_write_drop_in(Unit *u, bool runtime, const char *name, const char *data) { + _cleanup_free_ char *p = NULL, *q = NULL; + assert(u); + + if (u->manager->running_as != SYSTEMD_SYSTEM) + return -ENOTSUP; + + if (!filename_is_safe(name)) + return -EINVAL; + + p = strjoin(runtime ? "/run/systemd/system/" : "/etc/systemd/systemd/", u->id, ".d", NULL); + if (!p) + return -ENOMEM; + + q = strjoin(p, "/50-", name, ".conf", NULL); + if (!q) + return -ENOMEM; + + mkdir_p(p, 0755); + return write_one_line_file_atomic(q, data); +} + +int unit_remove_drop_in(Unit *u, bool runtime, const char *name) { + _cleanup_free_ char *p = NULL, *q = NULL; + + assert(u); + + if (u->manager->running_as != SYSTEMD_SYSTEM) + return -ENOTSUP; + + if (!filename_is_safe(name)) + return -EINVAL; + + p = strjoin(runtime ? "/run/systemd/system/" : "/etc/systemd/systemd/", u->id, ".d", NULL); + if (!p) + return -ENOMEM; + + q = strjoin(p, "/50-", name, ".conf", NULL); + if (!q) + return -ENOMEM; + + if (unlink(q) < 0) + return -errno; + + rmdir(p); + return 0; +} + static const char* const unit_active_state_table[_UNIT_ACTIVE_STATE_MAX] = { [UNIT_ACTIVE] = "active", [UNIT_RELOADING] = "reloading", diff --git a/src/core/unit.h b/src/core/unit.h index 23cd9ef459..297b35d8f5 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -271,6 +271,9 @@ struct UnitVTable { * ExecContext is found, if the unit type has that */ size_t exec_context_offset; + /* The name of the section with the exec settings of ExecContext */ + const char *exec_section; + /* Config file sections this unit type understands, separated * by NUL chars */ const char *sections; @@ -551,6 +554,9 @@ int unit_exec_context_defaults(Unit *u, ExecContext *c); ExecContext *unit_get_exec_context(Unit *u); +int unit_write_drop_in(Unit *u, bool runtime, const char *name, const char *data); +int unit_remove_drop_in(Unit *u, bool runtime, const char *name); + const char *unit_active_state_to_string(UnitActiveState i); UnitActiveState unit_active_state_from_string(const char *s); diff --git a/src/shared/dbus-common.c b/src/shared/dbus-common.c index e9a78c299e..50891a8ade 100644 --- a/src/shared/dbus-common.c +++ b/src/shared/dbus-common.c @@ -927,6 +927,67 @@ int bus_parse_strv_iter(DBusMessageIter *iter, char ***_l) { return 0; } +int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) { + DBusMessageIter sub, sub2; + unsigned n = 0, i = 0; + char **l; + + assert(iter); + assert(_l); + + if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_ARRAY || + dbus_message_iter_get_element_type(iter) != DBUS_TYPE_STRUCT) + return -EINVAL; + + dbus_message_iter_recurse(iter, &sub); + + while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { + n++; + dbus_message_iter_next(&sub); + } + + l = new(char*, n*2+1); + if (!l) + return -ENOMEM; + + dbus_message_iter_recurse(iter, &sub); + + while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { + const char *a, *b; + + assert_se(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_STRUCT); + + dbus_message_iter_recurse(&sub, &sub2); + + if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &a, true) < 0 || + bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &b, false) < 0) + return -EINVAL; + + l[i] = strdup(a); + if (!l[i]) { + strv_free(l); + return -ENOMEM; + } + + l[++i] = strdup(b); + if (!l[i]) { + strv_free(l); + return -ENOMEM; + } + + i++; + dbus_message_iter_next(&sub); + } + + assert(i == n*2); + l[i] = NULL; + + if (_l) + *_l = l; + + return 0; +} + int bus_append_strv_iter(DBusMessageIter *iter, char **l) { DBusMessageIter sub; diff --git a/src/shared/dbus-common.h b/src/shared/dbus-common.h index bcbf18ffab..e141c9ec90 100644 --- a/src/shared/dbus-common.h +++ b/src/shared/dbus-common.h @@ -197,6 +197,7 @@ unsigned bus_events_to_flags(uint32_t events); int bus_parse_strv(DBusMessage *m, char ***_l); int bus_parse_strv_iter(DBusMessageIter *iter, char ***_l); +int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l); int bus_append_strv_iter(DBusMessageIter *iter, char **l); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index fb4ae24ed6..408a4f0506 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -2177,6 +2177,7 @@ static int set_cgroup(DBusConnection *bus, char **args) { DBusMessageIter iter; int r; _cleanup_free_ char *n = NULL; + const char *runtime; assert(bus); assert(args); @@ -2208,6 +2209,10 @@ static int set_cgroup(DBusConnection *bus, char **args) { if (r < 0) return log_oom(); + runtime = arg_runtime ? "runtime" : "persistent"; + if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &runtime)) + return log_oom(); + reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error); if (!reply) { log_error("Failed to issue method call: %s", bus_error_message(&error)); @@ -2224,6 +2229,7 @@ static int set_cgroup_attr(DBusConnection *bus, char **args) { DBusMessageIter iter, sub, sub2; char **x, **y; _cleanup_free_ char *n = NULL; + const char *runtime; assert(bus); assert(args); @@ -2260,8 +2266,10 @@ static int set_cgroup_attr(DBusConnection *bus, char **args) { return log_oom(); } - if (!dbus_message_iter_close_container(&iter, &sub)) - return -ENOMEM; + runtime = arg_runtime ? "runtime" : "persistent"; + if (!dbus_message_iter_close_container(&iter, &sub) || + !dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &runtime)) + return log_oom(); reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error); if (!reply) { @@ -3163,7 +3171,7 @@ static int print_property(const char *name, DBusMessageIter *iter) { bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &attr, true) >= 0 && bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &value, false) >= 0) { - printf("ControlGroupAttribute={ controller=%s ; attribute=%s ; value=\"%s\" }\n", + printf("ControlGroupAttributes={ controller=%s ; attribute=%s ; value=\"%s\" }\n", controller, attr, value); -- cgit v1.2.1 From 59704f3e937c664f7324bfbb08483c358dfbc4c6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 17 Jan 2013 21:20:23 +0100 Subject: update TODO --- TODO | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index 626ea3d5e8..e9cbe1e4b7 100644 --- a/TODO +++ b/TODO @@ -115,7 +115,9 @@ Features: - implement conditional properties (dmi matches) - hwdb --filter=ID_DRIVE_* -* if booted in "quiet" mode, and an error happens, turn on status output again, so that the emergency mode isn't totally surprising +* if booted in "quiet" mode, and an error happens, turn on status + output again, so that the emergency mode isn't totally + surprising. Also, terminate plymouth. * localectl: add listing support for X11 keymaps, by parsing /usr/share/X11/xkb/rules/xorg.lst -- cgit v1.2.1 From 80d22739a7a21be1d77c4cc4e41365cb41dae19f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 19 Jan 2013 01:13:52 +0100 Subject: update TODO --- TODO | 1 - 1 file changed, 1 deletion(-) diff --git a/TODO b/TODO index e9cbe1e4b7..0cd27369d8 100644 --- a/TODO +++ b/TODO @@ -41,7 +41,6 @@ Features: * add "loginctl unlock-sessions" as counterpart for "loginctl lock-sessions" * cgroup attrs: - - make persistent - don't filter out duplicate settings - support high-level cgroup setting syntax in systemctl. Example: "systemctl set-cgroup-attr MemoryLimit 5K" - support writte string mapping even for non-high-level settings -- cgit v1.2.1 From 6d3a739048deab5c10a0debdad788e19898144cc Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 19 Jan 2013 01:18:01 +0100 Subject: unit: fix typo --- src/core/unit.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/unit.c b/src/core/unit.c index 98237c8147..b2a47653b6 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -2769,7 +2769,7 @@ int unit_write_drop_in(Unit *u, bool runtime, const char *name, const char *data if (!filename_is_safe(name)) return -EINVAL; - p = strjoin(runtime ? "/run/systemd/system/" : "/etc/systemd/systemd/", u->id, ".d", NULL); + p = strjoin(runtime ? "/run/systemd/system/" : "/etc/systemd/system/", u->id, ".d", NULL); if (!p) return -ENOMEM; @@ -2792,7 +2792,7 @@ int unit_remove_drop_in(Unit *u, bool runtime, const char *name) { if (!filename_is_safe(name)) return -EINVAL; - p = strjoin(runtime ? "/run/systemd/system/" : "/etc/systemd/systemd/", u->id, ".d", NULL); + p = strjoin(runtime ? "/run/systemd/system/" : "/etc/systemd/system/", u->id, ".d", NULL); if (!p) return -ENOMEM; -- cgit v1.2.1 From ba70211e0fe05d2e89e222e6eb7dd3766655cb44 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 19 Jan 2013 02:11:01 +0100 Subject: update TODO --- TODO | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/TODO b/TODO index 0cd27369d8..ddbcb39e29 100644 --- a/TODO +++ b/TODO @@ -333,26 +333,24 @@ Features: * maybe allow services with ExecStop= set, but no ExecStart=? -* efi: implement /forcefsck as uefi variables thus not requiring file system altering to trigger a file system check - -* efi: honor language efi variables for default language selection - -* efi: honor timezone efi variables for default timezone selection - -* efi: automatically mount EFI partition to /boot if no such entry exists in /etc/fstab and /boot is empty - gummiboot exports the EFI system partion (ESP) device: - /sys/firmware/efi/vars/LoaderDeviceIdentifier-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f/data - Acpi(PNP0A03,0)/Pci(1F|2)/?/HD(Part1,Sig1FCBC57F-4BFC-4C2B-91A3-9C84FBCD9AF1) - '/' is the separator for the device path list - HD(Part1,Sig1FCBC57F-4BFC-4C2B-91A3-9C84FBCD9AF1) contains the GPT UUID of the ESP - -* read the bootloader performance data (raw TSC) in systemd-analyze - /sys/firmware/efi/vars/LoaderTicksExec-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f/data - 19066159288 - /sys/firmware/efi/vars/LoaderTicksInit-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f/data - 17442940316 - /sys/firmware/efi/vars/LoaderTicksStartMenu-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f/data - (only set if the menu was active) +* efi: + - implement /forcefsck as uefi variables thus not requiring file system altering to trigger a file system check + - honor language efi variables for default language selection + - honor timezone efi variables for default timezone selection + - automatically mount EFI partition to /boot if no such entry exists in /etc/fstab and /boot is empty + gummiboot exports the EFI system partion (ESP) device: + /sys/firmware/efi/vars/LoaderDeviceIdentifier-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f/data + Acpi(PNP0A03,0)/Pci(1F|2)/?/HD(Part1,Sig1FCBC57F-4BFC-4C2B-91A3-9C84FBCD9AF1) + /' is the separator for the device path list + HD(Part1,Sig1FCBC57F-4BFC-4C2B-91A3-9C84FBCD9AF1) contains the GPT UUID of the ESP + - read the bootloader performance data (raw TSC) in systemd-analyze + /sys/firmware/efi/vars/LoaderTicksExec-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f/data + 19066159288 + /sys/firmware/efi/vars/LoaderTicksInit-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f/data + 17442940316 + /sys/firmware/efi/vars/LoaderTicksStartMenu-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f/data + (only set if the menu was active) + - introduce bootctl (backed by systemd-bootd) to control temporary and persistent default boot goal plus efi variables * change Requires=basic.target to RequisiteOverride=basic.target -- cgit v1.2.1 From 610d99284feb9e942bce601c6aac1a5074545e6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Bartoszkiewicz?= Date: Fri, 18 Jan 2013 21:33:59 +0100 Subject: tmpfiles: do not make /run/nologin executable --- tmpfiles.d/systemd.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tmpfiles.d/systemd.conf b/tmpfiles.d/systemd.conf index f3928d6967..ee86f2ebce 100644 --- a/tmpfiles.d/systemd.conf +++ b/tmpfiles.d/systemd.conf @@ -21,4 +21,4 @@ d /run/systemd/sessions 0755 root root - d /run/systemd/users 0755 root root - d /run/systemd/shutdown 0755 root root - -F /run/nologin 0755 - - - "System is booting up." +F /run/nologin 0644 - - - "System is booting up." -- cgit v1.2.1 From 2e3d069236777cd62f755a02f4a239306b4ad21a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 19 Jan 2013 04:20:23 +0100 Subject: core: if the bootloader supports it, determine firmware and boot loader delay This allows us to print simple performance data of all parts of the boot now: - firmware - boot loader - kernel - initrd - userspace This only works for bootloaders which support passing TSC data via EFI variables. As of now that's only gummiboot. --- .gitignore | 2 + Makefile.am | 11 ++- src/core/manager.c | 2 + src/shared/efivars.c | 233 ++++++++++++++++++++++++++++++++++++++++++++++++ src/shared/efivars.h | 30 +++++++ src/shared/utf8.c | 37 ++++++++ src/shared/utf8.h | 2 + src/test/test-efivars.c | 47 ++++++++++ 8 files changed, 363 insertions(+), 1 deletion(-) create mode 100644 src/shared/efivars.c create mode 100644 src/shared/efivars.h create mode 100644 src/test/test-efivars.c diff --git a/.gitignore b/.gitignore index af62f2acad..23c1b59799 100644 --- a/.gitignore +++ b/.gitignore @@ -79,8 +79,10 @@ /test-calendarspec /test-catalog /test-cgroup +/test-cgroup-util /test-daemon /test-date +/test-efivars /test-engine /test-env-replace /test-hostname diff --git a/Makefile.am b/Makefile.am index c57ea0dce4..ba93db0d82 100644 --- a/Makefile.am +++ b/Makefile.am @@ -747,6 +747,8 @@ libsystemd_shared_la_SOURCES = \ src/shared/util.h \ src/shared/virt.c \ src/shared/virt.h \ + src/shared/efivars.c \ + src/shared/efivars.h \ src/shared/path-util.c \ src/shared/path-util.h \ src/shared/time-util.c \ @@ -1181,7 +1183,8 @@ noinst_PROGRAMS += \ test-cgroup \ test-install \ test-watchdog \ - test-log + test-log \ + test-efivars noinst_tests += \ test-job-type \ @@ -1246,6 +1249,12 @@ test_hostname_SOURCES = \ test_hostname_LDADD = \ libsystemd-core.la +test_efivars_SOURCES = \ + src/test/test-efivars.c + +test_efivars_LDADD = \ + libsystemd-shared.la + test_unit_name_SOURCES = \ src/test/test-unit-name.c diff --git a/src/core/manager.c b/src/core/manager.c index d4afc931f3..aaf66970cf 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -70,6 +70,7 @@ #include "cgroup-util.h" #include "path-util.h" #include "audit-fd.h" +#include "efivars.h" /* As soon as 16 units are in our GC queue, make sure to run a gc sweep */ #define GC_QUEUE_ENTRIES_MAX 16 @@ -302,6 +303,7 @@ int manager_new(SystemdRunningAs running_as, Manager **_m) { dual_timestamp_get(&m->userspace_timestamp); dual_timestamp_from_monotonic(&m->kernel_timestamp, 0); + efi_get_boot_timestamps(&m->userspace_timestamp, &m->firmware_timestamp, &m->loader_timestamp); m->running_as = running_as; m->name_data_slot = m->conn_data_slot = m->subscribed_data_slot = -1; diff --git a/src/shared/efivars.c b/src/shared/efivars.c new file mode 100644 index 0000000000..3bd47b8868 --- /dev/null +++ b/src/shared/efivars.c @@ -0,0 +1,233 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include + +#include "util.h" +#include "utf8.h" +#include "efivars.h" + +#define EFI_VENDOR_LOADER SD_ID128_MAKE(4a,67,b0,82,0a,4c,41,cf,b6,c7,44,0b,29,bb,8c,4f) + +int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, void **value, size_t *size) { + _cleanup_close_ int fd = -1; + _cleanup_free_ char *p = NULL; + uint32_t a; + ssize_t n; + struct stat st; + void *r; + + assert(name); + assert(value); + assert(size); + + if (asprintf(&p, + "/sys/firmware/efi/efivars/%s-%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", + name, SD_ID128_FORMAT_VAL(vendor)) < 0) + return -ENOMEM; + + fd = open(p, O_RDONLY|O_NOCTTY|O_CLOEXEC); + if (fd < 0) + return -errno; + + if (fstat(fd, &st) < 0) + return -errno; + if (st.st_size < 4) + return -EIO; + if (st.st_size > 4*1024*1024 + 4) + return -E2BIG; + + n = read(fd, &a, sizeof(a)); + if (n < 0) + return (int) n; + if (n != sizeof(a)) + return -EIO; + + r = malloc(st.st_size - 4 + 2); + if (!r) + return -ENOMEM; + + n = read(fd, r, (size_t) st.st_size - 4); + if (n < 0) { + free(r); + return (int) -n; + } + if (n != (ssize_t) st.st_size - 4) { + free(r); + return -EIO; + } + + /* Always NUL terminate (2 bytes, to protect UTF-16) */ + ((char*) r)[st.st_size - 4] = 0; + ((char*) r)[st.st_size - 4 + 1] = 0; + + *value = r; + *size = (size_t) st.st_size; + + if (attribute) + *attribute = a; + + return 0; +} + +static int read_bogomips(unsigned long *u) { + _cleanup_fclose_ FILE *f = NULL; + + f = fopen("/proc/cpuinfo", "re"); + if (!f) + return -errno; + + while (!feof(f)) { + char line[LINE_MAX]; + char *x; + unsigned long a, b; + + if (!fgets(line, sizeof(line), f)) + return -EIO; + + char_array_0(line); + truncate_nl(line); + + if (!startswith(line, "bogomips")) + continue; + + x = line + 8; + x += strspn(x, WHITESPACE); + if (*x != ':') + continue; + x++; + x += strspn(x, WHITESPACE); + + if (sscanf(x, "%lu.%lu", &a, &b) != 2) + continue; + + *u = a * 1000000L + b * 10000L; + return 0; + } + + return -EIO; +} + +static int read_ticks(sd_id128_t vendor, const char *name, unsigned long speed, usec_t *u) { + _cleanup_free_ void *i = NULL; + _cleanup_free_ char *j = NULL; + size_t is; + int r; + uint64_t x; + + assert(name); + assert(u); + + r = efi_get_variable(EFI_VENDOR_LOADER, name, NULL, &i, &is); + if (r < 0) + return r; + + j = utf16_to_utf8(i, is); + if (!j) + return -ENOMEM; + + r = safe_atou64(j, &x); + if (r < 0) + return r; + + *u = USEC_PER_SEC * x / speed; + return 0; +} + +static int get_boot_usec(usec_t *firmware, usec_t *loader) { + uint64_t x, y; + int r; + unsigned long bogomips; + + assert(firmware); + assert(loader); + + /* Returns the usec after the CPU was turned on. The two + * timestamps are: the firmware finished, and the boot loader + * finished. */ + + /* We assume that the kernel's bogomips value is calibrated to + * twice the CPU frequency, and use this to convert the TSC + * ticks into usec. Of course, bogomips are only vaguely + * defined. If this breaks one day we can come up with + * something better. However, for now this saves us from doing + * a local calibration loop. */ + + r = read_bogomips(&bogomips); + if (r < 0) + return r; + + r = read_ticks(EFI_VENDOR_LOADER, "LoaderTicksInit", bogomips / 2, &x); + if (r < 0) + return r; + + r = read_ticks(EFI_VENDOR_LOADER, "LoaderTicksExec", bogomips / 2, &y); + if (r < 0) + return r; + + if (y == 0 || y < x) + return -EIO; + + if (y > USEC_PER_HOUR) + return -EIO; + + *firmware = x; + *loader = y; + + return 0; +} + +int efi_get_boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_timestamp *loader) { + usec_t x, y, a; + int r; + dual_timestamp _n; + + assert(firmware); + assert(loader); + + if (!n) { + dual_timestamp_get(&_n); + n = &_n; + } + + r = get_boot_usec(&x, &y); + if (r < 0) + return r; + + /* Let's convert this to timestamps where the firmware + * began/loader began working. To make this more confusing: + * since usec_t is unsigned and the kernel's monotonic clock + * begins at kernel initialization we'll actually initialize + * the monotonic timestamps here as negative of the actual + * value. */ + + firmware->monotonic = y; + loader->monotonic = y - x; + + a = n->monotonic + firmware->monotonic; + firmware->realtime = n->realtime > a ? n->realtime - a : 0; + + a = n->monotonic + loader->monotonic; + loader->realtime = n->realtime > a ? n->realtime - a : 0; + + return 0; +} diff --git a/src/shared/efivars.h b/src/shared/efivars.h new file mode 100644 index 0000000000..7b65c9264e --- /dev/null +++ b/src/shared/efivars.h @@ -0,0 +1,30 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include + +#include "sd-id128.h" + +int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, void **value, size_t *size); +int efi_get_boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_timestamp *loader); diff --git a/src/shared/utf8.c b/src/shared/utf8.c index 62e2803919..7ec8cb620d 100644 --- a/src/shared/utf8.c +++ b/src/shared/utf8.c @@ -49,6 +49,7 @@ #include #include "utf8.h" +#include "util.h" #define FILTER_CHAR '_' @@ -283,3 +284,39 @@ char *ascii_filter(const char *str) { return r; } + +char *utf16_to_utf8(const void *s, size_t length) { + char *r; + const uint8_t *f; + uint8_t *t; + + r = new(char, (length*3+1)/2 + 1); + if (!r) + return NULL; + + t = (uint8_t*) r; + + for (f = s; f < (const uint8_t*) s + length; f += 2) { + uint16_t c; + + c = (f[1] << 8) | f[0]; + + if (c == 0) { + *t = 0; + return r; + } else if (c < 0x80) { + *(t++) = (uint8_t) c; + } else if (c < 0x800) { + *(t++) = (uint8_t) (0xc0 | (c >> 6)); + *(t++) = (uint8_t) (0x80 | (c & 0x3f)); + } else { + *(t++) = (uint8_t) (0xe0 | (c >> 12)); + *(t++) = (uint8_t) (0x80 | ((c >> 6) & 0x3f)); + *(t++) = (uint8_t) (0x80 | (c & 0x3f)); + } + } + + *t = 0; + return r; + +} diff --git a/src/shared/utf8.h b/src/shared/utf8.h index 13d2f6a980..794ae15ab9 100644 --- a/src/shared/utf8.h +++ b/src/shared/utf8.h @@ -30,3 +30,5 @@ char *utf8_is_printable_n(const char* str, size_t length) _pure_; char *utf8_filter(const char *s); char *ascii_filter(const char *s); + +char *utf16_to_utf8(const void *s, size_t length); diff --git a/src/test/test-efivars.c b/src/test/test-efivars.c new file mode 100644 index 0000000000..e54a83665a --- /dev/null +++ b/src/test/test-efivars.c @@ -0,0 +1,47 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include "util.h" +#include "log.h" +#include "efivars.h" + +int main(int argc, char* argv[]) { + char s[MAX(FORMAT_TIMESPAN_MAX, FORMAT_TIMESTAMP_MAX)]; + int r; + dual_timestamp fw, l, k; + + dual_timestamp_from_monotonic(&k, 0); + + r = efi_get_boot_timestamps(NULL, &fw, &l); + if (r < 0) { + log_error("Failed to read variables: %s", strerror(-r)); + return 1; + } + + log_info("Firmware began %s before kernel.", format_timespan(s, sizeof(s), fw.monotonic)); + log_info("Loader began %s before kernel.", format_timespan(s, sizeof(s), l.monotonic)); + + log_info("Firmware began %s.", format_timestamp(s, sizeof(s), fw.realtime)); + log_info("Loader began %s.", format_timestamp(s, sizeof(s), l.realtime)); + log_info("Kernel began %s.", format_timestamp(s, sizeof(s), k.realtime)); + + return 0; +} -- cgit v1.2.1 From 25da63b9dac8f166ebf390ca92d1de18fbfc9d11 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 19 Jan 2013 16:01:26 +0100 Subject: udev: net_id - add link to the wiki page --- src/udev/udev-builtin-net_id.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index 20d96e041d..7ffdaad73f 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -24,6 +24,8 @@ * - physical/geographical location of the hardware * - the interface's MAC address * + * http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames + * * Two character prefixes based on the type of interface: * en -- ethernet * wl -- wlan -- cgit v1.2.1 From 843fc7f7f26a6507fe896a79ed1b474c35c4300f Mon Sep 17 00:00:00 2001 From: Jonathan Callen Date: Tue, 24 Jul 2012 22:45:22 -0400 Subject: execute: Fix seccomp support on x32 In the x32 ABI, syscall numbers start at 0x40000000. Mask that bit on x32 for lookups in the syscall_names array and syscall_filter and ensure that syscall.h is parsed correctly. [zj: added SYSCALL_TO_INDEX, INDEX_TO_SYSCALL macros.] --- Makefile.am | 4 ++-- src/core/execute.c | 2 +- src/core/load-fragment.c | 2 ++ src/core/syscall-list.c | 1 + src/core/syscall-list.h | 14 ++++++++++++++ 5 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index ba93db0d82..2631748f61 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1099,7 +1099,7 @@ BUILT_SOURCES += \ src/core/syscall-list.txt: Makefile $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_GEN)$(CPP) $(CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include sys/syscall.h - < /dev/null | $(AWK) '/^#define[ \t]+__NR_[^ ]+[ \t]+\(?.*[0-9]+.*\)?/ { sub(/__NR_/, "", $$2); print $$2; }' > $@ + $(AM_V_GEN)$(CPP) $(CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) -dM -include sys/syscall.h - < /dev/null | $(AWK) '/^#define[ \t]+__NR_[^ ]+[ \t]+[0-9(]/ { sub(/__NR_/, "", $$2); print $$2; }' > $@ src/core/syscall-from-name.gperf: src/core/syscall-list.txt Makefile $(AM_V_at)$(MKDIR_P) $(dir $@) @@ -1111,7 +1111,7 @@ src/core/syscall-from-name.h: src/core/syscall-from-name.gperf Makefile src/core/syscall-to-name.h: src/core/syscall-list.txt Makefile $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_GEN)$(AWK) 'BEGIN{ print "const char* const syscall_names[] = { "} { printf "[__NR_%s] = \"%s\",\n", $$1, $$1 } END{print "};"}' < $< > $@ + $(AM_V_GEN)$(AWK) 'BEGIN{ print "const char* const syscall_names[] = { "} { printf "[SYSCALL_TO_INDEX(__NR_%s)] = \"%s\",\n", $$1, $$1 } END{print "};"}' < $< > $@ # ------------------------------------------------------------------------------ systemd_SOURCES = \ diff --git a/src/core/execute.c b/src/core/execute.c index 65a10af3b0..1413c9110e 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -957,7 +957,7 @@ static int apply_seccomp(uint32_t *syscall_filter) { for (i = 0, n = 0; i < syscall_max(); i++) if (syscall_filter[i >> 4] & (1 << (i & 31))) { struct sock_filter item[] = { - BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, i, 0, 1), + BPF_JUMP(BPF_JMP+BPF_JEQ+BPF_K, INDEX_TO_SYSCALL(i), 0, 1), BPF_STMT(BPF_RET+BPF_K, SECCOMP_RET_ALLOW) }; diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index f82ddd530c..8436d4f95e 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -2120,10 +2120,12 @@ int config_parse_documentation( } static void syscall_set(uint32_t *p, int nr) { + nr = SYSCALL_TO_INDEX(nr); p[nr >> 4] |= 1 << (nr & 31); } static void syscall_unset(uint32_t *p, int nr) { + nr = SYSCALL_TO_INDEX(nr); p[nr >> 4] &= ~(1 << (nr & 31)); } diff --git a/src/core/syscall-list.c b/src/core/syscall-list.c index 05fad3e158..b608e8582f 100644 --- a/src/core/syscall-list.c +++ b/src/core/syscall-list.c @@ -32,6 +32,7 @@ const struct syscall_name *lookup_syscall(register const char *str, register uns #include "syscall-from-name.h" const char *syscall_to_name(int id) { + id = SYSCALL_TO_INDEX(id); if (id < 0 || id >= (int) ELEMENTSOF(syscall_names)) return NULL; diff --git a/src/core/syscall-list.h b/src/core/syscall-list.h index 0fc6859605..503838b7fb 100644 --- a/src/core/syscall-list.h +++ b/src/core/syscall-list.h @@ -22,6 +22,20 @@ along with systemd; If not, see . ***/ +#if defined __x86_64__ && defined __ILP32__ +/* The x32 ABI defines all of its syscalls with bit 30 set, which causes + issues when attempting to use syscalls as simple indicies into an array. + Instead, use the syscall id & ~SYSCALL_MASK as the index, and | the + internal id with the syscall mask as needed. +*/ +#include +#define SYSCALL_TO_INDEX(x) ((x) & ~__X32_SYSCALL_BIT) +#define INDEX_TO_SYSCALL(x) ((x) | __X32_SYSCALL_BIT) +#else +#define SYSCALL_TO_INDEX(x) (x) +#define INDEX_TO_SYSCALL(x) (x) +#endif + const char *syscall_to_name(int id); int syscall_from_name(const char *name); -- cgit v1.2.1 From 746c8397a011fe6c45a5be275554c77d22e58340 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sun, 20 Jan 2013 04:12:29 +0100 Subject: TODO: update loader variables --- TODO | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/TODO b/TODO index ddbcb39e29..cf50ac6d0b 100644 --- a/TODO +++ b/TODO @@ -334,22 +334,13 @@ Features: * maybe allow services with ExecStop= set, but no ExecStart=? * efi: - - implement /forcefsck as uefi variables thus not requiring file system altering to trigger a file system check + - implement /forcefsck as efi variables thus not requiring file system altering to trigger a file system check - honor language efi variables for default language selection - honor timezone efi variables for default timezone selection - - automatically mount EFI partition to /boot if no such entry exists in /etc/fstab and /boot is empty - gummiboot exports the EFI system partion (ESP) device: - /sys/firmware/efi/vars/LoaderDeviceIdentifier-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f/data - Acpi(PNP0A03,0)/Pci(1F|2)/?/HD(Part1,Sig1FCBC57F-4BFC-4C2B-91A3-9C84FBCD9AF1) - /' is the separator for the device path list - HD(Part1,Sig1FCBC57F-4BFC-4C2B-91A3-9C84FBCD9AF1) contains the GPT UUID of the ESP - - read the bootloader performance data (raw TSC) in systemd-analyze - /sys/firmware/efi/vars/LoaderTicksExec-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f/data - 19066159288 - /sys/firmware/efi/vars/LoaderTicksInit-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f/data - 17442940316 - /sys/firmware/efi/vars/LoaderTicksStartMenu-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f/data - (only set if the menu was active) + - automatically (auto)mount EFI partition to /boot if no such entry exists in /etc/fstab and /boot is empty + gummiboot exports the EFI system partion's GPT PARTUUID: + $ cat /sys/firmware/efi/efivars/LoaderDevicePartUUID-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f + 1FCBC57F-4BFC-4C2B-91A3-9C84FBCD9AF1 - introduce bootctl (backed by systemd-bootd) to control temporary and persistent default boot goal plus efi variables * change Requires=basic.target to RequisiteOverride=basic.target -- cgit v1.2.1 From e1af7092a8e124eff5f7a668f0f1562c4df4b02f Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sun, 20 Jan 2013 16:18:00 +0100 Subject: shutdown: loop - convert to enumerate match --- src/core/umount.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/core/umount.c b/src/core/umount.c index f0f2711295..3fcb90eca4 100644 --- a/src/core/umount.c +++ b/src/core/umount.c @@ -219,7 +219,8 @@ static int loopback_list_get(MountPoint **head) { } if (udev_enumerate_add_match_subsystem(e, "block") < 0 || - udev_enumerate_add_match_sysname(e, "loop*") < 0) { + udev_enumerate_add_match_sysname(e, "loop*") < 0 || + udev_enumerate_add_match_sysattr(e, "loop/backing_file", NULL) < 0) { r = -EIO; goto finish; } @@ -233,7 +234,6 @@ static int loopback_list_get(MountPoint **head) { udev_list_entry_foreach(item, first) { MountPoint *lb; struct udev_device *d; - const char *backing; char *loop; const char *dn; @@ -242,12 +242,6 @@ static int loopback_list_get(MountPoint **head) { goto finish; } - backing = udev_device_get_sysattr_value(d, "loop/backing_file"); - if (!backing) { - udev_device_unref(d); - continue; - } - if (!(dn = udev_device_get_devnode(d))) { udev_device_unref(d); continue; -- cgit v1.2.1 From 34e5a31ec5897de8ba1436dad53df99637569d0a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 19 Jan 2013 04:41:33 +0100 Subject: util: move is_efiboot() to efivars.c --- src/core/mount-setup.c | 1 + src/shared/efivars.c | 4 ++++ src/shared/efivars.h | 3 +++ src/shared/util.c | 4 ---- src/shared/util.h | 2 -- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index 98614d0c3e..5b32474bbe 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -41,6 +41,7 @@ #include "path-util.h" #include "missing.h" #include "virt.h" +#include "efivars.h" #ifndef TTY_GID #define TTY_GID 5 diff --git a/src/shared/efivars.c b/src/shared/efivars.c index 3bd47b8868..784ff364d9 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -28,6 +28,10 @@ #define EFI_VENDOR_LOADER SD_ID128_MAKE(4a,67,b0,82,0a,4c,41,cf,b6,c7,44,0b,29,bb,8c,4f) +bool is_efiboot(void) { + return access("/sys/firmware/efi", F_OK) >= 0; +} + int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, void **value, size_t *size) { _cleanup_close_ int fd = -1; _cleanup_free_ char *p = NULL; diff --git a/src/shared/efivars.h b/src/shared/efivars.h index 7b65c9264e..120f3c7a6a 100644 --- a/src/shared/efivars.h +++ b/src/shared/efivars.h @@ -26,5 +26,8 @@ #include "sd-id128.h" +bool is_efiboot(void); + int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, void **value, size_t *size); + int efi_get_boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_timestamp *loader); diff --git a/src/shared/util.c b/src/shared/util.c index 1aaebf0612..490399c910 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -77,10 +77,6 @@ char **saved_argv = NULL; static volatile unsigned cached_columns = 0; static volatile unsigned cached_lines = 0; -bool is_efiboot(void) { - return access("/sys/firmware/efi", F_OK) >= 0; -} - size_t page_size(void) { static __thread size_t pgsz = 0; long r; diff --git a/src/shared/util.h b/src/shared/util.h index d260385991..202e15d481 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -60,8 +60,6 @@ union dirent_storage { #define ANSI_HIGHLIGHT_YELLOW_ON "\x1B[1;33m" #define ANSI_HIGHLIGHT_OFF "\x1B[0m" -bool is_efiboot(void); - size_t page_size(void); #define PAGE_ALIGN(l) ALIGN_TO((l), page_size()) -- cgit v1.2.1 From f4ce2b3e5ce93b83f14f8785e205ebb5a9b8c1df Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 21 Jan 2013 01:02:53 +0100 Subject: efi: add efi boot generator that automatically mounts the ESP to /boot --- .gitignore | 1 + Makefile.am | 11 ++- src/efi-boot-generator/Makefile | 1 + src/efi-boot-generator/efi-boot-generator.c | 117 ++++++++++++++++++++++++++++ src/shared/efivars.c | 30 +++++++ src/shared/efivars.h | 4 + 6 files changed, 163 insertions(+), 1 deletion(-) create mode 120000 src/efi-boot-generator/Makefile create mode 100644 src/efi-boot-generator/efi-boot-generator.c diff --git a/.gitignore b/.gitignore index 23c1b59799..03ed5543b1 100644 --- a/.gitignore +++ b/.gitignore @@ -36,6 +36,7 @@ /systemd-cryptsetup-generator /systemd-delta /systemd-detect-virt +/systemd-efi-boot-generator /systemd-fsck /systemd-fstab-generator /systemd-getty-generator diff --git a/Makefile.am b/Makefile.am index 2631748f61..7d5bd5a803 100644 --- a/Makefile.am +++ b/Makefile.am @@ -219,7 +219,8 @@ endif systemgenerator_PROGRAMS = \ systemd-getty-generator \ systemd-fstab-generator \ - systemd-system-update-generator + systemd-system-update-generator \ + systemd-efi-boot-generator dist_bin_SCRIPTS = \ src/analyze/systemd-analyze @@ -1545,6 +1546,14 @@ systemd_system_update_generator_LDADD = \ libsystemd-label.la \ libsystemd-shared.la +# ------------------------------------------------------------------------------ +systemd_efi_boot_generator_SOURCES = \ + src/efi-boot-generator/efi-boot-generator.c + +systemd_efi_boot_generator_LDADD = \ + libsystemd-label.la \ + libsystemd-shared.la + # ------------------------------------------------------------------------------ systemd_rc_local_generator_SOURCES = \ src/rc-local-generator/rc-local-generator.c diff --git a/src/efi-boot-generator/Makefile b/src/efi-boot-generator/Makefile new file mode 120000 index 0000000000..d0b0e8e008 --- /dev/null +++ b/src/efi-boot-generator/Makefile @@ -0,0 +1 @@ +../Makefile \ No newline at end of file diff --git a/src/efi-boot-generator/efi-boot-generator.c b/src/efi-boot-generator/efi-boot-generator.c new file mode 100644 index 0000000000..ee6ec31c0e --- /dev/null +++ b/src/efi-boot-generator/efi-boot-generator.c @@ -0,0 +1,117 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include + +#include "efivars.h" +#include "path-util.h" +#include "util.h" + +static const char *arg_dest = NULL; + +int main(int argc, char *argv[]) { + int r = EXIT_SUCCESS; + sd_id128_t id; + _cleanup_free_ char *name = NULL; + _cleanup_fclose_ FILE *f = NULL; + + if (argc > 1 && argc != 4) { + log_error("This program takes three or no arguments."); + return EXIT_FAILURE; + } + + if (argc > 1) + arg_dest = argv[3]; + + log_set_target(LOG_TARGET_SAFE); + log_parse_environment(); + log_open(); + + umask(0022); + + if (!is_efiboot()) + return EXIT_SUCCESS; + + if (dir_is_empty("/boot") <= 0) + return EXIT_SUCCESS; + + r = efi_get_loader_device_part_uuid(&id); + if (r == -ENOENT) + return EXIT_SUCCESS; + if (r < 0) { + log_error("Failed to read ESP partition UUID: %s", strerror(-r)); + return EXIT_FAILURE; + } + + name = strjoin(arg_dest, "/boot.mount", NULL); + if (!name) { + log_oom(); + return EXIT_FAILURE; + } + + f = fopen(name, "wxe"); + if (!f) { + log_error("Failed to create mount unit file %s: %m", name); + return EXIT_FAILURE; + } + + fprintf(f, + "# Automatially generated by systemd-efi-boot-generator\n\n" + "[Mount]\n" + "Where=/boot\n" + "What=/dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n" + "Options=umask=0077\n", + SD_ID128_FORMAT_VAL(id)); + + free(name); + name = strjoin(arg_dest, "/boot.automount", NULL); + if (!name) { + log_oom(); + return EXIT_FAILURE; + } + + fclose(f); + f = fopen(name, "wxe"); + if (!f) { + log_error("Failed to create automount unit file %s: %m", name); + return EXIT_FAILURE; + } + + fprintf(f, + "# Automatially generated by systemd-efi-boot-generator\n\n" + "[Automount]\n" + "Where=/boot\n"); + + free(name); + name = strjoin(arg_dest, "/local-fs.target.wants/boot.automount", NULL); + if (!name) { + log_oom(); + return EXIT_FAILURE; + } + + if (symlink("../boot.automount", name) < 0) { + log_error("Failed to create symlink: %m"); + return EXIT_FAILURE; + } + + return 0; +} diff --git a/src/shared/efivars.c b/src/shared/efivars.c index 784ff364d9..183d33c772 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -235,3 +235,33 @@ int efi_get_boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, d return 0; } + +int efi_get_loader_device_part_uuid(sd_id128_t *u) { + _cleanup_free_ void *s = NULL; + _cleanup_free_ char *p = NULL; + size_t ss; + int r, parsed[16]; + unsigned i; + + assert(u); + + r = efi_get_variable(EFI_VENDOR_LOADER, "LoaderDevicePartUUID", NULL, &s, &ss); + if (r < 0) + return r; + + p = utf16_to_utf8(s, ss); + if (!p) + return -ENOMEM; + + if (sscanf(p, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", + &parsed[0], &parsed[1], &parsed[2], &parsed[3], + &parsed[4], &parsed[5], &parsed[6], &parsed[7], + &parsed[8], &parsed[9], &parsed[10], &parsed[11], + &parsed[12], &parsed[13], &parsed[14], &parsed[15]) != 16) + return -EIO; + + for (i = 0; i < ELEMENTSOF(parsed); i++) + u->bytes[i] = parsed[i]; + + return 0; +} diff --git a/src/shared/efivars.h b/src/shared/efivars.h index 120f3c7a6a..d5cfb4fa0d 100644 --- a/src/shared/efivars.h +++ b/src/shared/efivars.h @@ -23,11 +23,15 @@ #include #include +#include #include "sd-id128.h" +#include "time-util.h" bool is_efiboot(void); int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, void **value, size_t *size); int efi_get_boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_timestamp *loader); + +int efi_get_loader_device_part_uuid(sd_id128_t *u); -- cgit v1.2.1 From 382e77287c6f4d122395e8685274d2ee85aec3eb Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 21 Jan 2013 01:04:05 +0100 Subject: build-sys: add makefile to bootchart --- src/bootchart/Makefile | 1 + 1 file changed, 1 insertion(+) create mode 120000 src/bootchart/Makefile diff --git a/src/bootchart/Makefile b/src/bootchart/Makefile new file mode 120000 index 0000000000..d0b0e8e008 --- /dev/null +++ b/src/bootchart/Makefile @@ -0,0 +1 @@ +../Makefile \ No newline at end of file -- cgit v1.2.1 From 1da350f18e871566eeab16585e5c18c6e440e30e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 21 Jan 2013 01:12:51 +0100 Subject: efi: properly create symlink dir --- src/efi-boot-generator/efi-boot-generator.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/efi-boot-generator/efi-boot-generator.c b/src/efi-boot-generator/efi-boot-generator.c index ee6ec31c0e..c7bf34a532 100644 --- a/src/efi-boot-generator/efi-boot-generator.c +++ b/src/efi-boot-generator/efi-boot-generator.c @@ -25,8 +25,9 @@ #include "efivars.h" #include "path-util.h" #include "util.h" +#include "mkdir.h" -static const char *arg_dest = NULL; +static const char *arg_dest = "/tmp"; int main(int argc, char *argv[]) { int r = EXIT_SUCCESS; @@ -108,6 +109,8 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } + mkdir_parents(name, 0755); + if (symlink("../boot.automount", name) < 0) { log_error("Failed to create symlink: %m"); return EXIT_FAILURE; -- cgit v1.2.1 From 4beaf24f416e33840a974c18c34b56084d2b978a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 21 Jan 2013 01:27:32 +0100 Subject: efi: set a nice description string in the ESP units --- src/efi-boot-generator/efi-boot-generator.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/efi-boot-generator/efi-boot-generator.c b/src/efi-boot-generator/efi-boot-generator.c index c7bf34a532..1319c71201 100644 --- a/src/efi-boot-generator/efi-boot-generator.c +++ b/src/efi-boot-generator/efi-boot-generator.c @@ -77,6 +77,8 @@ int main(int argc, char *argv[]) { fprintf(f, "# Automatially generated by systemd-efi-boot-generator\n\n" + "[Unit]\n" + "Description=EFI System Partition\n\n" "[Mount]\n" "Where=/boot\n" "What=/dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n" @@ -97,10 +99,11 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } - fprintf(f, - "# Automatially generated by systemd-efi-boot-generator\n\n" - "[Automount]\n" - "Where=/boot\n"); + fputs("# Automatially generated by systemd-efi-boot-generator\n\n" + "[Unit]\n" + "Description=EFI System Partition Automount\n\n" + "[Automount]\n" + "Where=/boot\n", f); free(name); name = strjoin(arg_dest, "/local-fs.target.wants/boot.automount", NULL); -- cgit v1.2.1 From 50326b1353fd8929dca12b2c4dfbbe3d13d5386b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 21 Jan 2013 01:28:13 +0100 Subject: update TODO --- TODO | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TODO b/TODO index cf50ac6d0b..cfcc3f18dd 100644 --- a/TODO +++ b/TODO @@ -20,6 +20,10 @@ Fedora 19: Features: +* write man page for efi boot generator + +* document bootloader interface in wiki + * link runlevel targets on install only if sysv compat is enabled * logind: when executing sleep/shutdown job, keep track of its id, and -- cgit v1.2.1 From 46d785ca843362be76749b5b109248a504a6fb1f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 21 Jan 2013 03:19:36 +0100 Subject: update TODO --- TODO | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/TODO b/TODO index cfcc3f18dd..1ef1144d56 100644 --- a/TODO +++ b/TODO @@ -338,13 +338,8 @@ Features: * maybe allow services with ExecStop= set, but no ExecStart=? * efi: - - implement /forcefsck as efi variables thus not requiring file system altering to trigger a file system check - - honor language efi variables for default language selection - - honor timezone efi variables for default timezone selection - - automatically (auto)mount EFI partition to /boot if no such entry exists in /etc/fstab and /boot is empty - gummiboot exports the EFI system partion's GPT PARTUUID: - $ cat /sys/firmware/efi/efivars/LoaderDevicePartUUID-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f - 1FCBC57F-4BFC-4C2B-91A3-9C84FBCD9AF1 + - honor language efi variables for default language selection (if there are any?) + - honor timezone efi variables for default timezone selection (if there are any?) - introduce bootctl (backed by systemd-bootd) to control temporary and persistent default boot goal plus efi variables * change Requires=basic.target to RequisiteOverride=basic.target @@ -368,8 +363,6 @@ Features: * pam: when leaving a session explicitly exclude the ReleaseSession() caller process from the killing spree -* maybe introduce ~/.config/locale.conf and apply it within PAM - * readahead: make use of EXT4_IOC_MOVE_EXT, as used by http://e4rat.sourceforge.net/ * automount: implement expire: -- cgit v1.2.1 From 28137202027b07fec5c270c1b1ef12ebaf35d58d Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Sun, 20 Jan 2013 16:27:58 +0100 Subject: Fix some typos --- man/systemd.service.xml | 2 +- src/core/manager.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/man/systemd.service.xml b/man/systemd.service.xml index f7cbbb489c..891b3474aa 100644 --- a/man/systemd.service.xml +++ b/man/systemd.service.xml @@ -745,7 +745,7 @@ open access to the notification socket when using Type=notify or - WatchdogUsec= (see + WatchdogSec= (see above). If those options are used but NotifyAccess= not configured it will be implicitly set diff --git a/src/core/manager.c b/src/core/manager.c index aaf66970cf..9c829fdb3b 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -123,7 +123,7 @@ static int manager_setup_notify(Manager *m) { ev.data.ptr = &m->notify_watch; if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->notify_watch.fd, &ev) < 0) { - log_error("Failed to add timer change fd to epoll: %m"); + log_error("Failed to add notification socket fd to epoll: %m"); return -errno; } -- cgit v1.2.1 From c93350728e822c3da7522664cf0a0e0ee10509fa Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Wed, 23 Jan 2013 01:02:14 +0100 Subject: man: clearify the meaning of timeout=0 for password agents The fact that timeout=0 makes password agents wait indefinitely is documented in http://www.freedesktop.org/wiki/Software/systemd/PasswordAgents. Document it also in the relevant man pages. --- man/crypttab.xml | 3 ++- man/systemd-ask-password.xml | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/man/crypttab.xml b/man/crypttab.xml index 2a839944dc..acc702961d 100644 --- a/man/crypttab.xml +++ b/man/crypttab.xml @@ -220,7 +220,8 @@ for querying for a password. If no unit is specified seconds is used. Supported units are s, ms, - us, min, h, d. + us, min, h, d. A timeout of 0 waits + indefinitely. diff --git a/man/systemd-ask-password.xml b/man/systemd-ask-password.xml index 7b0b9ab809..563f9d5d61 100644 --- a/man/systemd-ask-password.xml +++ b/man/systemd-ask-password.xml @@ -129,7 +129,8 @@ Specify the query timeout in seconds. Defaults to - 90s. + 90s. A timeout of 0 waits indefinitely. + -- cgit v1.2.1 From 780040dc2a4b08a2c1fe5bd8db3a70e966c2acb3 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 22 Jan 2013 18:10:55 +0100 Subject: configure.ac: combine --Wformat* options into one argument https://bugs.freedesktop.org/show_bug.cgi?id=59621 --- configure.ac | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/configure.ac b/configure.ac index 540bfa47a5..ee599a7858 100644 --- a/configure.ac +++ b/configure.ac @@ -130,12 +130,10 @@ CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ -Wextra \ -Wno-inline \ -Wundef \ - -Wformat=2 \ + "-Wformat=2 -Wformat-security -Wformat-nonliteral" \ -Wlogical-op \ -Wsign-compare \ - -Wformat-security \ -Wmissing-include-dirs \ - -Wformat-nonliteral \ -Wold-style-definition \ -Wpointer-arith \ -Winit-self \ -- cgit v1.2.1 From 5dbe9f539849a9404a92858e5b70b36408812fbd Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 23 Jan 2013 02:16:11 +0100 Subject: efi: read microseconds from boot loader info instead of "ticks" magic --- src/shared/efivars.c | 62 ++++------------------------------------------------ 1 file changed, 4 insertions(+), 58 deletions(-) diff --git a/src/shared/efivars.c b/src/shared/efivars.c index 183d33c772..f1abee34c2 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -93,45 +93,7 @@ int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, v return 0; } -static int read_bogomips(unsigned long *u) { - _cleanup_fclose_ FILE *f = NULL; - - f = fopen("/proc/cpuinfo", "re"); - if (!f) - return -errno; - - while (!feof(f)) { - char line[LINE_MAX]; - char *x; - unsigned long a, b; - - if (!fgets(line, sizeof(line), f)) - return -EIO; - - char_array_0(line); - truncate_nl(line); - - if (!startswith(line, "bogomips")) - continue; - - x = line + 8; - x += strspn(x, WHITESPACE); - if (*x != ':') - continue; - x++; - x += strspn(x, WHITESPACE); - - if (sscanf(x, "%lu.%lu", &a, &b) != 2) - continue; - - *u = a * 1000000L + b * 10000L; - return 0; - } - - return -EIO; -} - -static int read_ticks(sd_id128_t vendor, const char *name, unsigned long speed, usec_t *u) { +static int read_usec(sd_id128_t vendor, const char *name, usec_t *u) { _cleanup_free_ void *i = NULL; _cleanup_free_ char *j = NULL; size_t is; @@ -153,38 +115,22 @@ static int read_ticks(sd_id128_t vendor, const char *name, unsigned long speed, if (r < 0) return r; - *u = USEC_PER_SEC * x / speed; + *u = x; return 0; } static int get_boot_usec(usec_t *firmware, usec_t *loader) { uint64_t x, y; int r; - unsigned long bogomips; assert(firmware); assert(loader); - /* Returns the usec after the CPU was turned on. The two - * timestamps are: the firmware finished, and the boot loader - * finished. */ - - /* We assume that the kernel's bogomips value is calibrated to - * twice the CPU frequency, and use this to convert the TSC - * ticks into usec. Of course, bogomips are only vaguely - * defined. If this breaks one day we can come up with - * something better. However, for now this saves us from doing - * a local calibration loop. */ - - r = read_bogomips(&bogomips); - if (r < 0) - return r; - - r = read_ticks(EFI_VENDOR_LOADER, "LoaderTicksInit", bogomips / 2, &x); + r = read_usec(EFI_VENDOR_LOADER, "LoaderTimeInitUsec", &x); if (r < 0) return r; - r = read_ticks(EFI_VENDOR_LOADER, "LoaderTicksExec", bogomips / 2, &y); + r = read_usec(EFI_VENDOR_LOADER, "LoaderTimeExecUsec", &y); if (r < 0) return r; -- cgit v1.2.1 From c3e31c7ba1d29c9b967035a6d697820114e1c087 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 22 Jan 2013 23:05:41 -0500 Subject: Replace autoconf int max test with simple define --- configure.ac | 1 - m4/sd_check_max_int_size.m4 | 27 --------------------------- src/core/manager.c | 2 ++ 3 files changed, 2 insertions(+), 28 deletions(-) delete mode 100644 m4/sd_check_max_int_size.m4 diff --git a/configure.ac b/configure.ac index ee599a7858..d94af7b304 100644 --- a/configure.ac +++ b/configure.ac @@ -40,7 +40,6 @@ AC_DEFINE_UNQUOTED([CANONICAL_HOST], "$host", [Canonical host string.]) AS_IF([test "x$host_cpu" = "xmips" || test "x$host_cpu" = "xmipsel" || test "x$host_cpu" = "xmips64" || test "x$host_cpu" = "xmips64el"], [AC_DEFINE(ARCH_MIPS, [], [Whether on mips arch])]) -SD_CHECK_MAX_INT_SIZE([time_t], [#include ]) LT_PREREQ(2.2) LT_INIT([disable-static]) diff --git a/m4/sd_check_max_int_size.m4 b/m4/sd_check_max_int_size.m4 deleted file mode 100644 index a4230b5ee8..0000000000 --- a/m4/sd_check_max_int_size.m4 +++ /dev/null @@ -1,27 +0,0 @@ -dnl Find what INT_MAX define to use for a type - -#serial 1 - -ifdef([AC_TR_SH],[], [ -define([AC_TR_SH], - [patsubst(translit([[$1]], [*+], [pp]), [[^a-zA-Z0-9_]], [_])]) -define([AC_TR_CPP], - [patsubst(translit([[$1]], - [*abcdefghijklmnopqrstuvwxyz], - [PABCDEFGHIJKLMNOPQRSTUVWXYZ]), - [[^A-Z0-9_]], [_])]) -]) - -AC_DEFUN([SD_CHECK_MAX_INT_SIZE], - [AC_CHECK_SIZEOF([long],,) - AC_CHECK_SIZEOF([long long],,) - AC_CHECK_SIZEOF([$1],,[$2]) - AS_CASE([$ac_cv_sizeof_[]AC_TR_SH($1)], - [$ac_cv_sizeof_long], [sd_type_max=LONG_MAX], - [$ac_cv_sizeof_long_long], [sd_type_max=LONG_LONG_MAX], - [AC_MSG_ERROR([Don't know how to map $1 to an integer])]) - AC_DEFINE_UNQUOTED(AC_TR_CPP($1_MAX), [$sd_type_max], - [what int to use to maximize $1]) - AC_MSG_CHECKING([what int to to use to maximize $1]) - AC_MSG_RESULT([$sd_type_max]) -]) diff --git a/src/core/manager.c b/src/core/manager.c index 9c829fdb3b..b538a9a3ae 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -81,6 +81,8 @@ /* Where clients shall send notification messages to */ #define NOTIFY_SOCKET "@/org/freedesktop/systemd1/notify" +#define TIME_T_MAX (time_t)((1UL << ((sizeof(time_t) << 3) - 1)) - 1) + static int manager_setup_notify(Manager *m) { union { struct sockaddr sa; -- cgit v1.2.1 From a4cc3e5ccc0a3033d764a9eb3ae5ee90db560682 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 24 Jan 2013 02:59:25 +0100 Subject: update TODO --- TODO | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/TODO b/TODO index 1ef1144d56..e4020a482a 100644 --- a/TODO +++ b/TODO @@ -20,6 +20,15 @@ Fedora 19: Features: +* if we have systemd-analyze in C "systemctl dot" should move there too + +* fsck hookup for the ESP mount is missing + +* external: maybe it is time to patch procps so that "ps" links to + libsystemd-logind to print a pretty service name, seat name, session + name in its output. Currently it only shows cgroup membership, but + that's sometimes kinda hard to parse. + * write man page for efi boot generator * document bootloader interface in wiki -- cgit v1.2.1 From af9792ac7f39354f80e9006c42c2400c5e41c447 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 24 Jan 2013 04:56:44 +0100 Subject: logind: only allow one shutdown/sleep action to be queued at the same time This should make sure that closing the lid while shutting down won't suspend the machine but will simply cause the shutdown to complete. --- src/login/logind-action.c | 9 ++++++- src/login/logind-dbus.c | 65 +++++++++++++++++++++++++++++++++++++++-------- src/login/logind.c | 2 ++ src/login/logind.h | 4 ++- 4 files changed, 67 insertions(+), 13 deletions(-) diff --git a/src/login/logind-action.c b/src/login/logind-action.c index e1517d6ac2..a796ebe9ec 100644 --- a/src/login/logind-action.c +++ b/src/login/logind-action.c @@ -56,10 +56,15 @@ int manager_handle_action( DBusError error; int r; InhibitWhat inhibit_operation; - bool supported = true; + bool supported; assert(m); + if (m->action_job || m->delayed_unit) { + log_debug("Action already in progress, ignoring."); + return -EALREADY; + } + /* If the key handling is turned off, don't do anything */ if (handle == HANDLE_IGNORE) { log_debug("Refusing operation, as it is turned off."); @@ -74,6 +79,8 @@ int manager_handle_action( supported = can_sleep("disk") > 0 && can_sleep_disk("suspend") > 0; else if (handle == HANDLE_KEXEC) supported = access("/sbin/kexec", X_OK) >= 0; + else + supported = true; if (!supported) { log_warning("Requested operation not supported, ignoring."); diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index d64debe51f..0ff20fabd5 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -990,22 +990,44 @@ static int have_multiple_sessions( return false; } -static int send_start_unit(DBusConnection *connection, const char *unit_name, DBusError *error) { - const char *mode = "replace"; +static int send_start_unit(Manager *m, const char *unit_name, DBusError *error) { + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + const char *mode = "replace", *p; + int r; + char *c; + assert(m); assert(unit_name); - return bus_method_call_with_reply ( - connection, + r = bus_method_call_with_reply( + m->bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "StartUnit", - NULL, - NULL, + &reply, + error, DBUS_TYPE_STRING, &unit_name, DBUS_TYPE_STRING, &mode, DBUS_TYPE_INVALID); + if (r < 0) + return r; + + if (!dbus_message_get_args( + reply, + error, + DBUS_TYPE_OBJECT_PATH, &p, + DBUS_TYPE_INVALID)) + return -EINVAL; + + c = strdup(p); + if (!c) + return -ENOMEM; + + free(m->action_job); + m->action_job = c; + + return 0; } static int send_prepare_for(Manager *m, InhibitWhat w, bool _active) { @@ -1226,6 +1248,7 @@ int bus_manager_shutdown_or_sleep_now_or_later( assert(unit_name); assert(w >= 0); assert(w <= _INHIBIT_WHAT_MAX); + assert(!m->action_job); delayed = m->inhibit_delay_max > 0 && @@ -1240,7 +1263,7 @@ int bus_manager_shutdown_or_sleep_now_or_later( /* Shutdown is not delayed, execute it * immediately */ - r = send_start_unit(m->bus, unit_name, error); + r = send_start_unit(m, unit_name, error); } return r; @@ -1278,6 +1301,9 @@ static int bus_manager_do_shutdown_or_sleep( assert(error); assert(_reply); + if (m->action_job || m->delayed_unit) + return -EALREADY; + if (!dbus_message_get_args( message, error, @@ -2327,6 +2353,23 @@ DBusHandlerResult bus_message_filter( log_error("Failed to parse Released message: %s", bus_error_message(&error)); else manager_cgroup_notify_empty(m, cgroup); + + } else if (dbus_message_is_signal(message, "org.freedesktop.systemd1.Manager", "JobRemoved")) { + uint32_t id; + const char *path, *result, *unit; + + if (!dbus_message_get_args(message, &error, + DBUS_TYPE_UINT32, &id, + DBUS_TYPE_OBJECT_PATH, &path, + DBUS_TYPE_STRING, &unit, + DBUS_TYPE_STRING, &result, + DBUS_TYPE_INVALID)) + log_error("Failed to parse JobRemoved message: %s", bus_error_message(&error)); + else if (m->action_job && streq(m->action_job, path)) { + log_info("Action is complete, result is '%s'.", result); + free(m->action_job); + m->action_job = NULL; + } } dbus_error_free(&error); @@ -2376,21 +2419,21 @@ int manager_dispatch_delayed(Manager *manager) { bus_manager_log_shutdown(manager, manager->delayed_what, manager->delayed_unit); + /* Tell people about it */ + send_prepare_for(manager, manager->delayed_what, false); + /* Reset delay data */ unit_name = manager->delayed_unit; manager->delayed_unit = NULL; /* Actually do the shutdown */ dbus_error_init(&error); - r = send_start_unit(manager->bus, unit_name, &error); + r = send_start_unit(manager, unit_name, &error); if (r < 0) { log_warning("Failed to send delayed message: %s", bus_error_message_or_strerror(&error, -r)); dbus_error_free(&error); return r; } - /* Tell people about it */ - send_prepare_for(manager, manager->delayed_what, false); - return 1; } diff --git a/src/login/logind.c b/src/login/logind.c index 6776229ee7..ed0b7489b9 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -187,6 +187,8 @@ void manager_free(Manager *m) { strv_free(m->kill_only_users); strv_free(m->kill_exclude_users); + free(m->action_job); + free(m->cgroup_path); free(m); } diff --git a/src/login/logind.h b/src/login/logind.h index 816635dcfc..fe6ea0fd34 100644 --- a/src/login/logind.h +++ b/src/login/logind.h @@ -100,7 +100,9 @@ struct Manager { usec_t inhibit_delay_max; - int idle_action_fd; + char* action_job; + + int idle_action_fd; /* the timer_fd */ usec_t idle_action_usec; usec_t idle_action_not_before_usec; HandleAction idle_action; -- cgit v1.2.1 From ee17c9281d3c208ca3f4fadd800990e61e8fd4f2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 24 Jan 2013 05:15:36 +0100 Subject: logind: send Resumed() signal after we come back from suspend/hibernate/hybrid-sleep This allows clients to get asynchronous notifications for user-requested suspend/hibernate cycles. Kernel-triggered automatic suspending is not covered. --- src/login/logind-dbus.c | 24 ++++++++++++++++-------- src/login/logind.h | 1 + 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 0ff20fabd5..1717584e8e 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -197,6 +197,7 @@ " \n" \ " \n" \ " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -990,7 +991,7 @@ static int have_multiple_sessions( return false; } -static int send_start_unit(Manager *m, const char *unit_name, DBusError *error) { +static int send_start_unit(Manager *m, const char *unit_name, bool send_resumed, DBusError *error) { _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; const char *mode = "replace", *p; int r; @@ -1026,6 +1027,7 @@ static int send_start_unit(Manager *m, const char *unit_name, DBusError *error) free(m->action_job); m->action_job = c; + m->send_resumed_after_action_job = send_resumed; return 0; } @@ -1037,8 +1039,7 @@ static int send_prepare_for(Manager *m, InhibitWhat w, bool _active) { }; dbus_bool_t active = _active; - DBusMessage *message; - int r = 0; + _cleanup_dbus_message_unref_ DBusMessage *message = NULL; assert(m); assert(w >= 0); @@ -1051,10 +1052,9 @@ static int send_prepare_for(Manager *m, InhibitWhat w, bool _active) { if (!dbus_message_append_args(message, DBUS_TYPE_BOOLEAN, &active, DBUS_TYPE_INVALID) || !dbus_connection_send(m->bus, message, NULL)) - r = -ENOMEM; + return -ENOMEM; - dbus_message_unref(message); - return r; + return 0; } static int delay_shutdown_or_sleep(Manager *m, InhibitWhat w, const char *unit_name) { @@ -1263,7 +1263,7 @@ int bus_manager_shutdown_or_sleep_now_or_later( /* Shutdown is not delayed, execute it * immediately */ - r = send_start_unit(m, unit_name, error); + r = send_start_unit(m, unit_name, w & INHIBIT_SLEEP, error); } return r; @@ -2369,6 +2369,14 @@ DBusHandlerResult bus_message_filter( log_info("Action is complete, result is '%s'.", result); free(m->action_job); m->action_job = NULL; + + if (m->send_resumed_after_action_job) { + _cleanup_dbus_message_unref_ DBusMessage *s = NULL; + + s = dbus_message_new_signal("/org/freedesktop/login1", "org.freedesktop.login1.Manager", "Resumed"); + if (s) + dbus_connection_send(m->bus, s, NULL); + } } } @@ -2428,7 +2436,7 @@ int manager_dispatch_delayed(Manager *manager) { /* Actually do the shutdown */ dbus_error_init(&error); - r = send_start_unit(manager, unit_name, &error); + r = send_start_unit(manager, unit_name, manager->delayed_what & INHIBIT_SLEEP, &error); if (r < 0) { log_warning("Failed to send delayed message: %s", bus_error_message_or_strerror(&error, -r)); dbus_error_free(&error); diff --git a/src/login/logind.h b/src/login/logind.h index fe6ea0fd34..7a0f8f25b0 100644 --- a/src/login/logind.h +++ b/src/login/logind.h @@ -101,6 +101,7 @@ struct Manager { usec_t inhibit_delay_max; char* action_job; + bool send_resumed_after_action_job; int idle_action_fd; /* the timer_fd */ usec_t idle_action_usec; -- cgit v1.2.1 From b61600291e3bbc51482bbb9823ccd48f03c130da Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 24 Jan 2013 05:29:37 +0100 Subject: logind: add UnlockSessions() clal to complement LockSessions() --- man/loginctl.xml | 8 +++++--- src/login/loginctl.c | 6 +++++- src/login/logind-dbus.c | 7 +++++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/man/loginctl.xml b/man/loginctl.xml index 8a20d18cfa..9d082cf915 100644 --- a/man/loginctl.xml +++ b/man/loginctl.xml @@ -251,10 +251,12 @@ lock-sessions + unlock-sessions - Activate the screen - lock on all current sessions - supporting it. + Activates/deactivates + the screen lock on all current + sessions supporting + it. diff --git a/src/login/loginctl.c b/src/login/loginctl.c index 0e57e0828e..473c77b92d 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -1287,6 +1287,8 @@ static int flush_devices(DBusConnection *bus, char **args, unsigned n) { } static int lock_sessions(DBusConnection *bus, char **args, unsigned n) { + assert(args); + polkit_agent_open_if_enabled(); return bus_method_call_with_reply ( @@ -1294,7 +1296,7 @@ static int lock_sessions(DBusConnection *bus, char **args, unsigned n) { "org.freedesktop.login1", "/org/freedesktop/login1", "org.freedesktop.login1.Manager", - "LockSessions", + streq(args[0], "lock-sessions") ? "LockSessions" : "UnlockSessions", NULL, NULL, DBUS_TYPE_INVALID); @@ -1348,6 +1350,7 @@ static int help(void) { " lock-session [ID...] Screen lock one or more sessions\n" " unlock-session [ID...] Screen unlock one or more sessions\n" " lock-sessions Screen lock all current sessions\n" + " unlock-sessions Screen unlock all current sessions\n" " terminate-session [ID...] Terminate one or more sessions\n" " kill-session [ID...] Send signal to processes of a session\n" " list-users List users\n" @@ -1496,6 +1499,7 @@ static int loginctl_main(DBusConnection *bus, int argc, char *argv[], DBusError { "lock-session", MORE, 2, activate }, { "unlock-session", MORE, 2, activate }, { "lock-sessions", EQUAL, 1, lock_sessions }, + { "unlock-sessions", EQUAL, 1, lock_sessions }, { "terminate-session", MORE, 2, activate }, { "kill-session", MORE, 2, kill_session }, { "list-users", EQUAL, 1, list_users }, diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 1717584e8e..0960aab634 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -102,6 +102,7 @@ " \n" \ " \n" \ " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -1853,8 +1854,10 @@ static DBusHandlerResult manager_message_handler( if (!reply) goto oom; - } else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "LockSessions")) { - r = session_send_lock_all(m, true); + } else if (dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "LockSessions") || + dbus_message_is_method_call(message, "org.freedesktop.login1.Manager", "UnlockSessions")) { + + r = session_send_lock_all(m, streq(dbus_message_get_member(message), "LockSessions")); if (r < 0) bus_send_error_reply(connection, message, NULL, r); -- cgit v1.2.1 From bfb7ec0ebab18a0bc8a99997f541c980a323c867 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 24 Jan 2013 05:33:33 +0100 Subject: update TODO --- TODO | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/TODO b/TODO index e4020a482a..0bfbe1b47f 100644 --- a/TODO +++ b/TODO @@ -20,6 +20,17 @@ Fedora 19: Features: +* unify killing logic of service, socket, mount, swap units + +* downgrade selinux log messages + +* logind: document new Resume signal and UnlockSessions call in wiki + +* logind: when a delay lock is taken, delay method return until we are + out of a suspend cycle + +* in "loginctl seat-status" we should mark the master device with a "*" or so + * if we have systemd-analyze in C "systemctl dot" should move there too * fsck hookup for the ESP mount is missing @@ -31,19 +42,12 @@ Features: * write man page for efi boot generator -* document bootloader interface in wiki - * link runlevel targets on install only if sysv compat is enabled -* logind: when executing sleep/shutdown job, keep track of its id, and - as long as the job is running refuse any further operation. - * maybe not install getty@tty1.service symlink in /etc but in /usr? * re-enable "make check" for gtk-doc (broken for unknown reason) -* logind: make PrepareForSuspend(false) an official api for notification of resumes - * "systemctl disable" on a static unit prints no message and does nothing. "systemctl enable" does nothing, and gives a bad message about it. Should fix both to print nice actionable messages. @@ -51,8 +55,6 @@ Features: * fstab: add new mount option x-systemd-after=/foobar/waldo to allow manual dependencies to other mount points https://bugzilla.redhat.com/show_bug.cgi?id=812826 -* add "loginctl unlock-sessions" as counterpart for "loginctl lock-sessions" - * cgroup attrs: - don't filter out duplicate settings - support high-level cgroup setting syntax in systemctl. Example: "systemctl set-cgroup-attr MemoryLimit 5K" @@ -68,8 +70,6 @@ Features: * logind: optionally, ignore idle-hint logic for autosuspend, block suspend as long as a session is around -* service: when killing a service with SIGKILL always kill all processes, even if for SIGTERM we only killed the main process - * exec: when deinitializating a tty device fix the perms and group, too, not only when initializing. Set access mode/gid to 0620/tty. * DeviceAllow/DeviceDeny: disallow everything by default, but whitelist /dev/zero, /dev/null and friends @@ -119,8 +119,6 @@ Features: mode, it will never touch the RTC if the no reliable time source is active or the user did not request anything like it. -* When we begin with system shutdown all kind of suspend/hibernation should be prohibited until shutdown/reboot - * When we update the kernel all kind of hibernation should be prohibited until shutdown/reboot * hwdb: -- cgit v1.2.1 From d239d84aa384a532e1056ec1d09fef16d843b8eb Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 24 Jan 2013 05:47:37 +0100 Subject: loginctl: show seat master and uaccess devices in seat-status output --- src/login/sysfs-show.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/login/sysfs-show.c b/src/login/sysfs-show.c index d113ec3e43..da34c3ade8 100644 --- a/src/login/sysfs-show.c +++ b/src/login/sysfs-show.c @@ -45,6 +45,7 @@ static int show_sysfs_one( struct udev_device *d; const char *sn, *name, *sysfs, *subsystem, *sysname; char *l, *k; + bool is_master, uaccess; sysfs = udev_list_entry_get_name(*item); if (!path_startswith(sysfs, sub)) @@ -60,13 +61,16 @@ static int show_sysfs_one( if (isempty(sn)) sn = "seat0"; - /* fixme, also check for tag 'seat' here */ + /* Explicitly also check for tag 'seat' here */ if (!streq(seat, sn) || !udev_device_has_tag(d, "seat")) { udev_device_unref(d); *item = udev_list_entry_get_next(*item); continue; } + is_master = udev_device_has_tag(d, "seat-master"); + uaccess = udev_device_has_tag(d, "uaccess"); + name = udev_device_get_sysattr_value(d, "name"); if (!name) name = udev_device_get_sysattr_value(d, "id"); @@ -110,7 +114,8 @@ static int show_sysfs_one( free(k); if (asprintf(&l, - "(%s:%s)%s%s%s", + "%s%s%s:%s%s%s%s", + is_master ? "[MASTER] " : "", uaccess ? "[ACL] " : "", subsystem, sysname, name ? " \"" : "", name ? name : "", name ? "\"" : "") < 0) { udev_device_unref(d); -- cgit v1.2.1 From bf9e477c92506884977d6c8d761969e105528f3e Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 24 Jan 2013 10:31:34 +0100 Subject: README: remove mentioning of nss-myhostname "package" --- README | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README b/README index 581e84598e..3b248048cc 100644 --- a/README +++ b/README @@ -78,9 +78,7 @@ REQUIREMENTS: install nss-myhostname to ensure that in a world of dynamically changing hostnames the hostname stays resolvable under all circumstances. In fact, systemd-hostnamed will warn - if nss-myhostname is not installed. Packagers are encouraged to - add a dependency on nss-myhostname to the package that - includes systemd-hostnamed. + if nss-myhostname is not installed. Note that D-Bus can link against libsystemd-login.so, which results in a cyclic build dependency. To accommodate for this -- cgit v1.2.1 From e9cea16db6c3e3c371a2f9651a2eea3dd47022d2 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 24 Jan 2013 10:32:21 +0100 Subject: efi: fix Usec vs. USec --- src/shared/efivars.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shared/efivars.c b/src/shared/efivars.c index f1abee34c2..d5cb88cff1 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -126,11 +126,11 @@ static int get_boot_usec(usec_t *firmware, usec_t *loader) { assert(firmware); assert(loader); - r = read_usec(EFI_VENDOR_LOADER, "LoaderTimeInitUsec", &x); + r = read_usec(EFI_VENDOR_LOADER, "LoaderTimeInitUSec", &x); if (r < 0) return r; - r = read_usec(EFI_VENDOR_LOADER, "LoaderTimeExecUsec", &y); + r = read_usec(EFI_VENDOR_LOADER, "LoaderTimeExecUSec", &y); if (r < 0) return r; -- cgit v1.2.1 From 3939e155d57e0a7319ed3af8bff48e68aea76543 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 24 Jan 2013 12:42:57 +0100 Subject: hwdb: update --- hwdb/20-OUI.hwdb | 117 ++++++++++++++++++++++++++++++++++ hwdb/20-pci-vendor-product.hwdb | 136 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 248 insertions(+), 5 deletions(-) diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb index ac07a5d552..736299b1fb 100644 --- a/hwdb/20-OUI.hwdb +++ b/hwdb/20-OUI.hwdb @@ -12592,6 +12592,36 @@ OUI:40D855083* OUI:40D855084* ID_OUI_FROM_DATABASE=Papendorf Software Engineering GmbH +OUI:40D855085* + ID_OUI_FROM_DATABASE=Peek Traffic Corporation + +OUI:40D855086* + ID_OUI_FROM_DATABASE=DSP DESIGN + +OUI:40D855087* + ID_OUI_FROM_DATABASE=Bestel China + +OUI:40D855088* + ID_OUI_FROM_DATABASE=JEL SYSTEM CO., LTD. + +OUI:40D855089* + ID_OUI_FROM_DATABASE=WUHAN XINGTUXINKE ELECTRONIC CO.,LTD + +OUI:40D85508A* + ID_OUI_FROM_DATABASE=Leder Elektronik Design + +OUI:40D85508B* + ID_OUI_FROM_DATABASE=MeshWorks Wireless Oy + +OUI:40D85508C* + ID_OUI_FROM_DATABASE=Magnescale Co.,Ltd + +OUI:40D85508D* + ID_OUI_FROM_DATABASE=Boehme Nachrichtentechnik + +OUI:40D85508E* + ID_OUI_FROM_DATABASE=Lyngsoe Systems + OUI:000000* ID_OUI_FROM_DATABASE=XEROX CORPORATION @@ -51292,6 +51322,9 @@ OUI:083AB8* OUI:083E8E* ID_OUI_FROM_DATABASE=Hon Hai Precision Ind.Co.Ltd +OUI:08482C* + ID_OUI_FROM_DATABASE=Raycore Taiwan Co., LTD. + OUI:084E1C* ID_OUI_FROM_DATABASE=H2A Systems, LLC @@ -51718,6 +51751,9 @@ OUI:10189E* OUI:101B54* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD +OUI:101C0C* + ID_OUI_FROM_DATABASE=Apple + OUI:101D51* ID_OUI_FROM_DATABASE=ON-Q LLC dba ON-Q Mesh Networks @@ -51727,6 +51763,9 @@ OUI:101DC0* OUI:101F74* ID_OUI_FROM_DATABASE=Hewlett-Packard Company +OUI:102831* + ID_OUI_FROM_DATABASE=Morion Inc. + OUI:102D96* ID_OUI_FROM_DATABASE=Looxcie Inc. @@ -51790,6 +51829,9 @@ OUI:1065A3* OUI:1065CF* ID_OUI_FROM_DATABASE=IQSIM +OUI:106682* + ID_OUI_FROM_DATABASE=NEC AccessTechnica, Ltd. + OUI:10683F* ID_OUI_FROM_DATABASE=LG Electronics @@ -51898,6 +51940,9 @@ OUI:10EA59* OUI:10EED9* ID_OUI_FROM_DATABASE=Canoga Perkins Corporation +OUI:10F311* + ID_OUI_FROM_DATABASE=Cisco + OUI:10F3DB* ID_OUI_FROM_DATABASE=Gridco Systems, Inc. @@ -52807,6 +52852,9 @@ OUI:24497B* OUI:245FDF* ID_OUI_FROM_DATABASE=KYOCERA Corporation +OUI:246278* + ID_OUI_FROM_DATABASE=sysmocom - systems for mobile communications GmbH + OUI:246511* ID_OUI_FROM_DATABASE=AVM GmbH @@ -52837,6 +52885,9 @@ OUI:248707* OUI:249442* ID_OUI_FROM_DATABASE=OPEN ROAD SOLUTIONS , INC. +OUI:249504* + ID_OUI_FROM_DATABASE=SFR + OUI:24A42C* ID_OUI_FROM_DATABASE=KOUKAAM a.s. @@ -52918,6 +52969,9 @@ OUI:24DEC6* OUI:24E6BA* ID_OUI_FROM_DATABASE=JSC Zavod im. Kozitsky +OUI:24EA40* + ID_OUI_FROM_DATABASE=Systeme Helmholz GmbH + OUI:24EC99* ID_OUI_FROM_DATABASE=Askey Computer Corp @@ -53347,6 +53401,9 @@ OUI:2CEDEB* OUI:2CEE26* ID_OUI_FROM_DATABASE=Petroleum Geo-Services +OUI:2CF203* + ID_OUI_FROM_DATABASE=EMKO ELEKTRONIK SAN VE TIC AS + OUI:2CF4C5* ID_OUI_FROM_DATABASE=Avaya, Inc @@ -53473,6 +53530,9 @@ OUI:3085A9* OUI:308730* ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd +OUI:308999* + ID_OUI_FROM_DATABASE=Guangdong East Power Co., + OUI:308CFB* ID_OUI_FROM_DATABASE=Dropcam @@ -53932,6 +53992,9 @@ OUI:3C0754* OUI:3C0771* ID_OUI_FROM_DATABASE=Sony Corporation +OUI:3C081E* + ID_OUI_FROM_DATABASE=Beijing Yupont Electric Power Technology Co.,Ltd + OUI:3C096D* ID_OUI_FROM_DATABASE=Powerhouse Dynamics @@ -56104,6 +56167,9 @@ OUI:646E6C* OUI:647002* ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO., LTD. +OUI:6472D8* + ID_OUI_FROM_DATABASE=GooWi Technology Co.,Limited + OUI:6473E2* ID_OUI_FROM_DATABASE=Arbiter Systems, Inc. @@ -56389,6 +56455,9 @@ OUI:68967B* OUI:68974B* ID_OUI_FROM_DATABASE=Shenzhen Costar Electronics Co. Ltd. +OUI:6897E8* + ID_OUI_FROM_DATABASE=Society of Motion Picture & Television Engineers + OUI:689C5E* ID_OUI_FROM_DATABASE=AcSiP Technology Corp. @@ -56752,6 +56821,9 @@ OUI:704AAE* OUI:704AE4* ID_OUI_FROM_DATABASE=Rinstrum Pty Ltd +OUI:7052C5* + ID_OUI_FROM_DATABASE=Avaya, Inc. + OUI:7054D2* ID_OUI_FROM_DATABASE=PEGATRON CORPORATION @@ -57541,6 +57613,9 @@ OUI:7CA61D* OUI:7CACB2* ID_OUI_FROM_DATABASE=Bosch Software Innovations GmbH +OUI:7CAD74* + ID_OUI_FROM_DATABASE=Cisco + OUI:7CB03E* ID_OUI_FROM_DATABASE=OSRAM AG @@ -58111,6 +58186,9 @@ OUI:885C4F* OUI:88615A* ID_OUI_FROM_DATABASE=Siano Mobile Silicon Ltd. +OUI:88685C* + ID_OUI_FROM_DATABASE=Shenzhen ChuangDao & Perpetual Eternal Technology Co.,Ltd + OUI:886B76* ID_OUI_FROM_DATABASE=CHINA HOPEFUL GROUP HOPEFUL ELECTRIC CO.,LTD @@ -58567,6 +58645,9 @@ OUI:906EBB* OUI:907025* ID_OUI_FROM_DATABASE=Garea Microsys Co.,Ltd. +OUI:907AF1* + ID_OUI_FROM_DATABASE=SNUPI Technologies + OUI:907F61* ID_OUI_FROM_DATABASE=Chicony Electronics Co., Ltd. @@ -59803,6 +59884,9 @@ OUI:A85BB0* OUI:A85BF3* ID_OUI_FROM_DATABASE=Audivo GmbH +OUI:A861AA* + ID_OUI_FROM_DATABASE=Cloudview Limited + OUI:A862A2* ID_OUI_FROM_DATABASE=JIWUMEDIA CO., LTD. @@ -59995,6 +60079,9 @@ OUI:AC3FA4* OUI:AC40EA* ID_OUI_FROM_DATABASE=C&T Solution Inc. +OUI:AC4122* + ID_OUI_FROM_DATABASE=Eclipse Electronic Systems Inc. + OUI:AC44F2* ID_OUI_FROM_DATABASE=Revolabs Inc @@ -60607,6 +60694,9 @@ OUI:B4F323* OUI:B4FC75* ID_OUI_FROM_DATABASE=SEMA Electronics(HK) CO.,LTD +OUI:B4FE8C* + ID_OUI_FROM_DATABASE=Centro Sicurezza Italia SpA + OUI:B80305* ID_OUI_FROM_DATABASE=Intel Corporate @@ -60712,6 +60802,9 @@ OUI:B8763F* OUI:B877C3* ID_OUI_FROM_DATABASE=Decagon Devices, Inc. +OUI:B8782E* + ID_OUI_FROM_DATABASE=Apple + OUI:B8797E* ID_OUI_FROM_DATABASE=Secure Meters (UK) Limited @@ -61594,6 +61687,9 @@ OUI:C88B47* OUI:C8903E* ID_OUI_FROM_DATABASE=Pakton Technologies +OUI:C89346* + ID_OUI_FROM_DATABASE=MXCHIP Company Limited + OUI:C89383* ID_OUI_FROM_DATABASE=Embedded Automation, Inc. @@ -62332,6 +62428,9 @@ OUI:D4A02A* OUI:D4A425* ID_OUI_FROM_DATABASE=SMAX Technology Co., Ltd. +OUI:D4A499* + ID_OUI_FROM_DATABASE=InView Technology Corporation + OUI:D4A928* ID_OUI_FROM_DATABASE=GreenWave Reality Inc @@ -62443,6 +62542,9 @@ OUI:D81BFE* OUI:D81C14* ID_OUI_FROM_DATABASE=Compacta International, Ltd. +OUI:D81EDE* + ID_OUI_FROM_DATABASE=B&W Group Ltd + OUI:D824BD* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -62452,6 +62554,9 @@ OUI:D826B9* OUI:D828C9* ID_OUI_FROM_DATABASE=General Electric Consumer and Industrial +OUI:D82916* + ID_OUI_FROM_DATABASE=Ascent Communication Technology + OUI:D82986* ID_OUI_FROM_DATABASE=Best Wish Technology LTD @@ -63022,6 +63127,9 @@ OUI:E0E8E8* OUI:E0ED1A* ID_OUI_FROM_DATABASE=vastriver Technology Co., Ltd +OUI:E0EDC7* + ID_OUI_FROM_DATABASE=Shenzhen Friendcom Technology Development Co., Ltd + OUI:E0EE1B* ID_OUI_FROM_DATABASE=Panasonic Automotive Systems Company of America @@ -63868,6 +63976,9 @@ OUI:F0EEBB* OUI:F0F002* ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. +OUI:F0F260* + ID_OUI_FROM_DATABASE=Mobitec AB + OUI:F0F644* ID_OUI_FROM_DATABASE=Whitesky Science & Technology Co.,Ltd. @@ -63961,6 +64072,9 @@ OUI:F4559C* OUI:F455E0* ID_OUI_FROM_DATABASE=Niceway CNC Technology Co.,Ltd.Hunan Province +OUI:F45842* + ID_OUI_FROM_DATABASE=Boxx TV Ltd + OUI:F45FD4* ID_OUI_FROM_DATABASE=Cisco SPVTG @@ -64021,6 +64135,9 @@ OUI:F4ACC1* OUI:F4B164* ID_OUI_FROM_DATABASE=Lightning Telecommunications Technology Co. Ltd +OUI:F4B381* + ID_OUI_FROM_DATABASE=WindowMaster A/S + OUI:F4B549* ID_OUI_FROM_DATABASE=Yeastar Technology Co., Ltd. diff --git a/hwdb/20-pci-vendor-product.hwdb b/hwdb/20-pci-vendor-product.hwdb index f3fbbb7450..7049d3a6b3 100644 --- a/hwdb/20-pci-vendor-product.hwdb +++ b/hwdb/20-pci-vendor-product.hwdb @@ -1688,6 +1688,9 @@ pci:v00001002d00003152* pci:v00001002d00003154* ID_PRODUCT_FROM_DATABASE=M24GL [Mobility FireGL V3200] +pci:v00001002d00003155* + ID_PRODUCT_FROM_DATABASE=RV380 [FireMV 2400] + pci:v00001002d00003171* ID_PRODUCT_FROM_DATABASE=M24 [FireMV 2400] (Secondary) @@ -4400,6 +4403,9 @@ pci:v00001002d00006718* pci:v00001002d00006719* ID_PRODUCT_FROM_DATABASE=Cayman PRO [Radeon HD 6950] +pci:v00001002d0000671C* + ID_PRODUCT_FROM_DATABASE=Antilles [Radeon HD 6990] + pci:v00001002d0000671D* ID_PRODUCT_FROM_DATABASE=Antilles [AMD Radeon HD 6990] @@ -4409,6 +4415,15 @@ pci:v00001002d0000671F* pci:v00001002d00006720* ID_PRODUCT_FROM_DATABASE=Blackcomb [Radeon HD 6900M series] +pci:v00001002d00006721* + ID_PRODUCT_FROM_DATABASE=Blackcomb [Mobility Radeon HD 6000 series] + +pci:v00001002d00006724* + ID_PRODUCT_FROM_DATABASE=Blackcomb [Mobility Radeon HD 6000 series] + +pci:v00001002d00006725* + ID_PRODUCT_FROM_DATABASE=Blackcomb [Mobility Radeon HD 6000 series] + pci:v00001002d00006738* ID_PRODUCT_FROM_DATABASE=Barts XT [Radeon HD 6800 Series] @@ -4439,6 +4454,9 @@ pci:v00001002d00006742* pci:v00001002d00006743* ID_PRODUCT_FROM_DATABASE=Whistler [Radeon E6760] +pci:v00001002d00006744* + ID_PRODUCT_FROM_DATABASE=Whistler [ATI Mobility Radeon HD 6000 series] + pci:v00001002d00006749* ID_PRODUCT_FROM_DATABASE=Turks [FirePro V4900] @@ -4472,6 +4490,12 @@ pci:v00001002d00006761* pci:v00001002d00006763* ID_PRODUCT_FROM_DATABASE=Seymour [Radeon E6460] +pci:v00001002d00006764* + ID_PRODUCT_FROM_DATABASE=Seymour [Mobility Radeon HD 6000 series] + +pci:v00001002d00006765* + ID_PRODUCT_FROM_DATABASE=Seymour [Mobility Radeon HD 6000 series] + pci:v00001002d00006770* ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 6400 Series] @@ -4499,6 +4523,9 @@ pci:v00001002d00006799* pci:v00001002d0000679A* ID_PRODUCT_FROM_DATABASE=Tahiti PRO [Radeon HD 7950] +pci:v00001002d0000679B* + ID_PRODUCT_FROM_DATABASE=Tahiti [Radeon HD 7900 Series] + pci:v00001002d0000679E* ID_PRODUCT_FROM_DATABASE=Tahiti LE [Radeon HD 7800 Series] @@ -4523,15 +4550,33 @@ pci:v00001002d00006821* pci:v00001002d00006823* ID_PRODUCT_FROM_DATABASE=Radeon HD 8800M Series +pci:v00001002d00006824* + ID_PRODUCT_FROM_DATABASE=Chelsea [Radeon HD 7700M Series] + pci:v00001002d00006825* ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7800M Series] +pci:v00001002d00006826* + ID_PRODUCT_FROM_DATABASE=Chelsea [Radeon HD 7700M Series] + +pci:v00001002d00006827* + ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7800M Series] + pci:v00001002d0000682B* ID_PRODUCT_FROM_DATABASE=Radeon HD 8800M Series pci:v00001002d0000682F* ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7700M Series] +pci:v00001002d00006830* + ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7800M Series] + +pci:v00001002d00006831* + ID_PRODUCT_FROM_DATABASE=Cape Verde [AMD Radeon HD 7700M Series] + +pci:v00001002d00006837* + ID_PRODUCT_FROM_DATABASE=Cape Verde LE [Radeon HD 7700 Series] + pci:v00001002d0000683B* ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7700 Series] @@ -4553,6 +4598,9 @@ pci:v00001002d00006842* pci:v00001002d00006843* ID_PRODUCT_FROM_DATABASE=Thames [Radeon HD 7670M] +pci:v00001002d00006849* + ID_PRODUCT_FROM_DATABASE=Lombok [AMD Radeon HD 7400 Series] + pci:v00001002d00006850* ID_PRODUCT_FROM_DATABASE=Lombok GL AIO [Radeon HD 7570] @@ -4592,6 +4640,9 @@ pci:v00001002d0000689B* pci:v00001002d0000689C* ID_PRODUCT_FROM_DATABASE=Hemlock [Radeon HD 5900 Series] +pci:v00001002d0000689D* + ID_PRODUCT_FROM_DATABASE=Hemlock [ATI Radeon HD 5900 Series] + pci:v00001002d0000689E* ID_PRODUCT_FROM_DATABASE=Cypress LE [Radeon HD 5800 Series] @@ -4652,6 +4703,9 @@ pci:v00001002d000068C7* pci:v00001002d000068C8* ID_PRODUCT_FROM_DATABASE=FirePro V4800 +pci:v00001002d000068C9* + ID_PRODUCT_FROM_DATABASE=Redwood [FirePro 3800 (FireGL)] + pci:v00001002d000068D8* ID_PRODUCT_FROM_DATABASE=Redwood [Radeon HD 5670] @@ -4682,6 +4736,9 @@ pci:v00001002d000068F1* pci:v00001002d000068F2* ID_PRODUCT_FROM_DATABASE=Cedar [FirePro 2270] +pci:v00001002d000068F8* + ID_PRODUCT_FROM_DATABASE=Cedar [Radeon HD 7300 Series] + pci:v00001002d000068F9* ID_PRODUCT_FROM_DATABASE=Cedar PRO [Radeon HD 5450/6350] @@ -4940,6 +4997,9 @@ pci:v00001002d000071C6* pci:v00001002d000071C7* ID_PRODUCT_FROM_DATABASE=RV535 [Radeon X1650 Series] +pci:v00001002d000071C7sv00001787sd00003000* + ID_PRODUCT_FROM_DATABASE=PowerColor X1650 PRO AGP + pci:v00001002d000071CE* ID_PRODUCT_FROM_DATABASE=RV530LE [Radeon X1600] @@ -4973,6 +5033,9 @@ pci:v00001002d000071E6* pci:v00001002d000071E7* ID_PRODUCT_FROM_DATABASE=RV535 [Radeon X1650 Series] +pci:v00001002d000071E7sv00001787sd00003001* + ID_PRODUCT_FROM_DATABASE=PowerColor X1650 PRO AGP + pci:v00001002d000071F2* ID_PRODUCT_FROM_DATABASE=RV530GL [FireGL V3400 (Secondary)] @@ -5163,7 +5226,7 @@ pci:v00001002d00007942* ID_PRODUCT_FROM_DATABASE=RS600 [Radeon Xpress 1250] pci:v00001002d0000796E* - ID_PRODUCT_FROM_DATABASE=Radeon 2100 + ID_PRODUCT_FROM_DATABASE=RS740 [Radeon 2100] pci:v00001002d00007C37* ID_PRODUCT_FROM_DATABASE=RV350 AQ [Radeon 9600 SE] @@ -5177,9 +5240,18 @@ pci:v00001002d00009400sv00001002sd00003000* pci:v00001002d00009400sv00001002sd00003142* ID_PRODUCT_FROM_DATABASE=HIS Radeon HD 2900XT 512MB GDDR3 VIVO PCIe +pci:v00001002d00009401* + ID_PRODUCT_FROM_DATABASE=R600 [Radeon HD 2900 XT] + +pci:v00001002d00009402* + ID_PRODUCT_FROM_DATABASE=R600 [Radeon HD 2900 XT] + pci:v00001002d00009403* ID_PRODUCT_FROM_DATABASE=R600 [Radeon HD 2900 PRO] +pci:v00001002d00009405* + ID_PRODUCT_FROM_DATABASE=R600 [Radeon HD 2900 GT] + pci:v00001002d0000940A* ID_PRODUCT_FROM_DATABASE=R600GL [Fire GL V8650] @@ -5207,9 +5279,18 @@ pci:v00001002d00009442sv0000174Bsd0000E810* pci:v00001002d00009443* ID_PRODUCT_FROM_DATABASE=R700 [Radeon HD 4850] +pci:v00001002d00009444* + ID_PRODUCT_FROM_DATABASE=RV770 [FirePro V8750 (FireGL)] + +pci:v00001002d00009446* + ID_PRODUCT_FROM_DATABASE=RV770 [FirePro V7760 (FireGL)] + pci:v00001002d0000944A* ID_PRODUCT_FROM_DATABASE=M98L [Mobility Radeon HD 4850] +pci:v00001002d0000944B* + ID_PRODUCT_FROM_DATABASE=RV770 [Mobility Radeon HD 4850 X2] + pci:v00001002d0000944C* ID_PRODUCT_FROM_DATABASE=RV770 LE [Radeon HD 4800 Series] @@ -5222,6 +5303,9 @@ pci:v00001002d00009450* pci:v00001002d00009452* ID_PRODUCT_FROM_DATABASE=RV770 [FireStream 9250] +pci:v00001002d00009456* + ID_PRODUCT_FROM_DATABASE=RV770 [FirePro 3D V8700] + pci:v00001002d0000945A* ID_PRODUCT_FROM_DATABASE=M98 XT [Mobility Radeon HD 4870] @@ -5231,6 +5315,9 @@ pci:v00001002d00009460* pci:v00001002d00009462* ID_PRODUCT_FROM_DATABASE=RV790LE [Radeon HD 4800 Series] +pci:v00001002d0000946A* + ID_PRODUCT_FROM_DATABASE=RV770 [FirePro M7750] + pci:v00001002d00009480* ID_PRODUCT_FROM_DATABASE=M96 [Mobility Radeon HD 4650] @@ -5288,6 +5375,9 @@ pci:v00001002d000094B3* pci:v00001002d000094B4* ID_PRODUCT_FROM_DATABASE=RV740 LE [ATI Radeon HD 4700 Series] +pci:v00001002d000094B5* + ID_PRODUCT_FROM_DATABASE=RV740 [Radeon HD 4770] + pci:v00001002d000094C1* ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2400 XT] @@ -5315,6 +5405,12 @@ pci:v00001002d000094C3sv000018BCsd00003550* pci:v00001002d000094C4* ID_PRODUCT_FROM_DATABASE=RV610 LE AGP [Radeon HD 2400 PRO AGP] +pci:v00001002d000094C5* + ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2400 LE] + +pci:v00001002d000094C7* + ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2350] + pci:v00001002d000094C8* ID_PRODUCT_FROM_DATABASE=Radeon HD 2400 XT @@ -5342,12 +5438,18 @@ pci:v00001002d00009504* pci:v00001002d00009505* ID_PRODUCT_FROM_DATABASE=RV670PRO [Radeon HD 3850] +pci:v00001002d00009506* + ID_PRODUCT_FROM_DATABASE=RV670 [Mobility Radeon HD 3850 X2] + pci:v00001002d00009507* ID_PRODUCT_FROM_DATABASE=RV670 [Radeon HD 3850] pci:v00001002d00009508* ID_PRODUCT_FROM_DATABASE=M88 XT Mobility Radeon HD 3870] +pci:v00001002d00009509* + ID_PRODUCT_FROM_DATABASE=RV670 [Mobility Radeon HD 3870] + pci:v00001002d0000950F* ID_PRODUCT_FROM_DATABASE=R680 [Radeon HD 3870 x2] @@ -5411,6 +5513,9 @@ pci:v00001002d00009588sv00001458sd0000216C* pci:v00001002d00009589* ID_PRODUCT_FROM_DATABASE=RV630 [Radeon HD 2600 Series] +pci:v00001002d0000958B* + ID_PRODUCT_FROM_DATABASE=RV630 [Mobility Radeon HD 2600 XT] + pci:v00001002d0000958C* ID_PRODUCT_FROM_DATABASE=RV630GL [FireGL v5600] @@ -5435,6 +5540,9 @@ pci:v00001002d00009596* pci:v00001002d00009596sv00001043sd00000028* ID_PRODUCT_FROM_DATABASE=EAH3650 SILENT/HTDI/512M/A +pci:v00001002d00009597* + ID_PRODUCT_FROM_DATABASE=RV635 [Radeon HD 2600 Series] + pci:v00001002d00009598* ID_PRODUCT_FROM_DATABASE=RV630 [Radeon HD 3600 Series] @@ -5579,6 +5687,9 @@ pci:v00001002d00009901* pci:v00001002d00009902* ID_PRODUCT_FROM_DATABASE=Trinity HDMI Audio Controller +pci:v00001002d00009903* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7640G] + pci:v00001002d00009904* ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7560D] @@ -15642,7 +15753,7 @@ pci:v000010B7d00007646* ID_PRODUCT_FROM_DATABASE=3cSOHO100-TX Hurricane pci:v000010B7d00007770* - ID_PRODUCT_FROM_DATABASE=3CRWE777 PCI(PLX) Wireless Adaptor [Airconnect] + ID_PRODUCT_FROM_DATABASE=3CRWE777 PCI Wireless Adapter [Airconnect] pci:v000010B7d00007940* ID_PRODUCT_FROM_DATABASE=3c803 FDDILink UTP Controller @@ -16889,6 +17000,9 @@ pci:v000010DEd00000029sv00001102sd0000102F* pci:v000010DEd00000029sv000014AFsd00005820* ID_PRODUCT_FROM_DATABASE=Maxi Gamer Xentor 32 +pci:v000010DEd00000029sv00004843sd00004F34* + ID_PRODUCT_FROM_DATABASE=Dynamite + pci:v000010DEd0000002A* ID_PRODUCT_FROM_DATABASE=NV5 [Riva TNT2] @@ -17853,7 +17967,7 @@ pci:v000010DEd00000101sv0000107Dsd00002822* ID_PRODUCT_FROM_DATABASE=WinFast GeForce 256 pci:v000010DEd00000101sv00001102sd0000102E* - ID_PRODUCT_FROM_DATABASE=CT6971 GeForce 256 DDR + ID_PRODUCT_FROM_DATABASE=CT6970/CT6971 pci:v000010DEd00000101sv000014AFsd00005021* ID_PRODUCT_FROM_DATABASE=3D Prophet DDR-DVI @@ -18263,6 +18377,12 @@ pci:v000010DEd000001D0* pci:v000010DEd000001D1* ID_PRODUCT_FROM_DATABASE=G72 [GeForce 7300 LE] +pci:v000010DEd000001D1sv0000107Dsd00005EFA* + ID_PRODUCT_FROM_DATABASE=WinFast PX7300LE-TD128 + +pci:v000010DEd000001D1sv0000107Dsd00005EFB* + ID_PRODUCT_FROM_DATABASE=WinFast PX7300LE-TD256 + pci:v000010DEd000001D1sv00001462sd00000345* ID_PRODUCT_FROM_DATABASE=7300LE PCI Express Graphics Adapter @@ -21741,7 +21861,7 @@ pci:v000010DEd00000FD2* ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 640M] pci:v000010DEd00000FF2* - ID_PRODUCT_FROM_DATABASE=GK107 [VGX K1] + ID_PRODUCT_FROM_DATABASE=GK107 [GRID K1] pci:v000010DEd00000FFA* ID_PRODUCT_FROM_DATABASE=GK107 [Quadro K600] @@ -21873,7 +21993,7 @@ pci:v000010DEd000011BE* ID_PRODUCT_FROM_DATABASE=GK104 [Quadro K3000M] pci:v000010DEd000011BF* - ID_PRODUCT_FROM_DATABASE=GK104GL [VGX K2] + ID_PRODUCT_FROM_DATABASE=GK104GL [GRID K2] pci:v000010DEd000011FA* ID_PRODUCT_FROM_DATABASE=GK104 [Quadro K4000] @@ -45938,6 +46058,12 @@ pci:v0000270F* pci:v00002711* ID_VENDOR_FROM_DATABASE=AVID Technology Inc. +pci:v00002955* + ID_VENDOR_FROM_DATABASE=Connectix Virtual PC + +pci:v00002955d00006E61* + ID_PRODUCT_FROM_DATABASE=OHCI USB 1.1 controller + pci:v000029B4* ID_VENDOR_FROM_DATABASE=82q35 Express MEI Controller -- cgit v1.2.1 From 6ff392416e6a6403e0183ca9c3e158f7aa6bc7ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 22 Jan 2013 22:24:54 -0500 Subject: build-sys: add a variable to collect .wants links The idea is to make Makefile.am more declarative and avoid repetitions. Redeclaring unit links as variables also makes it easier to conditionally install only some of them. --- Makefile.am | 253 +++++++++++++++++++++++++++--------------------------------- 1 file changed, 112 insertions(+), 141 deletions(-) diff --git a/Makefile.am b/Makefile.am index 7d5bd5a803..a7a7940eb7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -179,6 +179,48 @@ define move-to-rootlibdir fi endef +INSTALL_DIRS = + +RUNLEVEL1_TARGET_WANTS = +RUNLEVEL2_TARGET_WANTS = +RUNLEVEL3_TARGET_WANTS = +RUNLEVEL4_TARGET_WANTS = +RUNLEVEL5_TARGET_WANTS = +SHUTDOWN_TARGET_WANTS = +LOCAL_FS_TARGET_WANTS = +MULTI_USER_TARGET_WANTS = +SYSINIT_TARGET_WANTS = +BASIC_TARGET_WANTS = +SOCKETS_TARGET_WANTS = + +install-target-wants-hook: + what="$(RUNLEVEL1_TARGET_WANTS)" && wants=runlevel1.target && $(add-wants) + what="$(RUNLEVEL2_TARGET_WANTS)" && wants=runlevel2.target && $(add-wants) + what="$(RUNLEVEL3_TARGET_WANTS)" && wants=runlevel3.target && $(add-wants) + what="$(RUNLEVEL4_TARGET_WANTS)" && wants=runlevel4.target && $(add-wants) + what="$(RUNLEVEL5_TARGET_WANTS)" && wants=runlevel5.target && $(add-wants) + what="$(SHUTDOWN_TARGET_WANTS)" && wants=shutdown.target && $(add-wants) + what="$(LOCAL_FS_TARGET_WANTS)" && wants=local-fs.target && $(add-wants) + what="$(MULTI_USER_TARGET_WANTS)" && wants=multi-user.target && $(add-wants) + what="$(SYSINIT_TARGET_WANTS)" && wants=sysinit.target && $(add-wants) + what="$(BASIC_TARGET_WANTS)" && wants=basic.target && $(add-wants) + what="$(SOCKETS_TARGET_WANTS)" && wants=sockets.target && $(add-wants) + +define add-wants + dir=$(DESTDIR)$(systemunitdir)/$$wants.wants && \ + $(MKDIR_P) -m 0755 $$dir && \ + ( cd $$dir && \ + rm -f $$what && \ + for i in $$what; do ln -s ../$$i . || exit $$? ; done ) +endef + +install-directories-hook: + $(MKDIR_P) $(addprefix $(DESTDIR),$(INSTALL_DIRS)) + +INSTALL_EXEC_HOOKS += \ + install-target-wants-hook \ + install-directories-hook + # ------------------------------------------------------------------------------ rootbin_PROGRAMS = \ systemctl \ @@ -1893,15 +1935,12 @@ CLEANFILES += \ units/systemd-udev-trigger.service \ units/systemd-udev-settle.service -systemd-install-hook: - $(MKDIR_P) $(DESTDIR)$(systemunitdir)/sockets.target.wants - ln -sf ../systemd-udevd-control.socket $(DESTDIR)$(systemunitdir)/sockets.target.wants/systemd-udevd-control.socket - ln -sf ../systemd-udevd-kernel.socket $(DESTDIR)$(systemunitdir)/sockets.target.wants/systemd-udevd-kernel.socket - $(MKDIR_P) $(DESTDIR)$(systemunitdir)/sysinit.target.wants - ln -sf ../systemd-udevd.service $(DESTDIR)$(systemunitdir)/sysinit.target.wants/systemd-udevd.service - ln -sf ../systemd-udev-trigger.service $(DESTDIR)$(systemunitdir)/sysinit.target.wants/systemd-udev-trigger.service - -INSTALL_DATA_HOOKS += systemd-install-hook +SOCKETS_TARGET_WANTS += \ + systemd-udevd-control.socket \ + systemd-udevd-kernel.socket +SYSINIT_TARGET_WANTS += \ + systemd-udevd.service \ + systemd-udev-trigger.service bin_PROGRAMS += \ udevadm @@ -2792,20 +2831,11 @@ pkgconfiglib_DATA += \ dist_catalog_DATA = \ catalog/systemd.catalog -journal-install-data-hook: - $(MKDIR_P) -m 0755 \ - $(DESTDIR)$(systemunitdir)/sockets.target.wants \ - $(DESTDIR)$(systemunitdir)/sysinit.target.wants - ( cd $(DESTDIR)$(systemunitdir)/sockets.target.wants && \ - rm -f systemd-journald.socket && \ - $(LN_S) ../systemd-journald.socket ) - ( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \ - rm -f systemd-journald.service systemd-journal-flush.service && \ - $(LN_S) ../systemd-journald.service && \ - $(LN_S) ../systemd-journal-flush.service ) - -INSTALL_DATA_HOOKS += \ - journal-install-data-hook +SOCKETS_TARGET_WANTS += \ + systemd-journald.socket +SYSINIT_TARGET_WANTS += \ + systemd-journald.service \ + systemd-journal-flush.service EXTRA_DIST += \ src/journal/libsystemd-journal.pc.in \ @@ -2902,19 +2932,13 @@ dist_systemunit_DATA += \ nodist_systemunit_DATA += \ units/systemd-binfmt.service -binfmt-install-data-hook: - $(MKDIR_P) -m 0755 \ - $(DESTDIR)$(prefix)/lib/binfmt.d \ - $(DESTDIR)$(sysconfdir)/binfmt.d \ - $(DESTDIR)$(systemunitdir)/sysinit.target.wants - ( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \ - rm -f systemd-binfmt.service \ - proc-sys-fs-binfmt_misc.automount && \ - $(LN_S) ../systemd-binfmt.service systemd-binfmt.service && \ - $(LN_S) ../proc-sys-fs-binfmt_misc.automount proc-sys-fs-binfmt_misc.automount ) +INSTALL_DIRS += \ + $(prefix)/lib/binfmt.d \ + $(sysconfdir)/binfmt.d -INSTALL_DATA_HOOKS += \ - binfmt-install-data-hook +SYSINIT_TARGET_WANTS += \ + systemd-binfmt.service \ + proc-sys-fs-binfmt_misc.automount MANPAGES += \ man/binfmt.d.5 \ @@ -2943,15 +2967,8 @@ rootlibexec_PROGRAMS += \ nodist_systemunit_DATA += \ units/systemd-vconsole-setup.service -vconsole-install-data-hook: - $(MKDIR_P) -m 0755 \ - $(DESTDIR)$(systemunitdir)/sysinit.target.wants - ( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \ - rm -f systemd-vconsole-setup.service && \ - $(LN_S) ../systemd-vconsole-setup.service systemd-vconsole-setup.service ) - -INSTALL_DATA_HOOKS += \ - vconsole-install-data-hook +SYSINIT_TARGET_WANTS += \ + systemd-vconsole-setup.service MANPAGES += \ man/vconsole.conf.5 \ @@ -3085,19 +3102,10 @@ systemd_random_seed_LDADD = \ libsystemd-label.la \ libsystemd-shared.la -randomseed-install-data-hook: - $(MKDIR_P) -m 0755 \ - $(DESTDIR)$(systemunitdir)/shutdown.target.wants \ - $(DESTDIR)$(systemunitdir)/sysinit.target.wants - ( cd $(DESTDIR)$(systemunitdir)/shutdown.target.wants && \ - rm -f systemd-random-seed-save.service && \ - $(LN_S) ../systemd-random-seed-save.service systemd-random-seed-save.service ) - ( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \ - rm -f systemd-random-seed-load.service && \ - $(LN_S) ../systemd-random-seed-load.service systemd-random-seed-load.service ) - -INSTALL_DATA_HOOKS += \ - randomseed-install-data-hook +SHUTDOWN_TARGET_WANTS += \ + systemd-random-seed-save.service +SYSINIT_TARGET_WANTS += \ + systemd-random-seed-load.service MANPAGES += \ man/systemd-random-seed-load.service.8 @@ -3146,15 +3154,8 @@ systemd_cryptsetup_generator_LDADD = \ libsystemd-label.la \ libsystemd-shared.la -cryptsetup-install-data-hook: - $(MKDIR_P) -m 0755 \ - $(DESTDIR)$(systemunitdir)/sysinit.target.wants - ( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \ - rm -f cryptsetup.target && \ - $(LN_S) ../cryptsetup.target cryptsetup.target ) - -INSTALL_DATA_HOOKS += \ - cryptsetup-install-data-hook +SYSINIT_TARGET_WANTS += \ + cryptsetup.target MANPAGES += \ man/systemd-cryptsetup@.service.8 \ @@ -3634,17 +3635,17 @@ pkgconfiglib_DATA += \ polkitpolicy_files += \ src/login/org.freedesktop.login1.policy +INSTALL_DIRS += \ + $(systemdstatedir) + +MULTI_USER_TARGET_WANTS += \ + systemd-logind.service \ + systemd-user-sessions.service + logind-install-data-hook: - $(MKDIR_P) -m 0755 \ - $(DESTDIR)$(systemunitdir)/multi-user.target.wants \ - $(DESTDIR)$(systemdstatedir) ( cd $(DESTDIR)$(systemunitdir) && \ rm -f dbus-org.freedesktop.login1.service && \ $(LN_S) systemd-logind.service dbus-org.freedesktop.login1.service) - ( cd $(DESTDIR)$(systemunitdir)/multi-user.target.wants && \ - rm -f systemd-logind.service systemd-user-sessions.service && \ - $(LN_S) ../systemd-logind.service systemd-logind.service && \ - $(LN_S) ../systemd-user-sessions.service systemd-user-sessions.service ) INSTALL_DATA_HOOKS += \ logind-install-data-hook @@ -3959,6 +3960,41 @@ EXTRA_DIST += \ EXTRA_DIST += \ shell-completion/systemd-zsh-completion.zsh +SOCKETS_TARGET_WANTS += \ + systemd-initctl.socket \ + systemd-shutdownd.socket + +RUNLEVEL1_TARGET_WANTS += \ + systemd-update-utmp-runlevel.service +RUNLEVEL2_TARGET_WANTS += \ + systemd-update-utmp-runlevel.service +RUNLEVEL3_TARGET_WANTS += \ + systemd-update-utmp-runlevel.service +RUNLEVEL4_TARGET_WANTS += \ + systemd-update-utmp-runlevel.service +RUNLEVEL5_TARGET_WANTS += \ + systemd-update-utmp-runlevel.service +SHUTDOWN_TARGET_WANTS += \ + systemd-update-utmp-shutdown.service +LOCAL_FS_TARGET_WANTS += \ + systemd-remount-fs.service \ + systemd-fsck-root.service \ + tmp.mount +MULTI_USER_TARGET_WANTS += \ + getty.target \ + systemd-ask-password-wall.path +SYSINIT_TARGET_WANTS += \ + dev-hugepages.mount \ + dev-mqueue.mount \ + sys-kernel-config.mount \ + sys-kernel-debug.mount \ + sys-fs-fuse-connections.mount \ + systemd-tmpfiles-setup.service \ + systemd-sysctl.service \ + systemd-ask-password-console.path +BASIC_TARGET_WANTS += \ + systemd-tmpfiles-clean.timer + systemd-install-data-hook: $(MKDIR_P) -m 0755 \ $(DESTDIR)$(tmpfilesdir) \ @@ -3972,19 +4008,7 @@ systemd-install-data-hook: $(DESTDIR)$(systemgeneratordir) \ $(DESTDIR)$(usergeneratordir) $(MKDIR_P) -m 0755 \ - $(DESTDIR)$(systemunitdir) \ $(DESTDIR)$(userunitdir) \ - $(DESTDIR)$(systemunitdir)/sysinit.target.wants \ - $(DESTDIR)$(systemunitdir)/sockets.target.wants \ - $(DESTDIR)$(systemunitdir)/basic.target.wants \ - $(DESTDIR)$(systemunitdir)/shutdown.target.wants \ - $(DESTDIR)$(systemunitdir)/local-fs.target.wants \ - $(DESTDIR)$(systemunitdir)/runlevel1.target.wants \ - $(DESTDIR)$(systemunitdir)/runlevel2.target.wants \ - $(DESTDIR)$(systemunitdir)/runlevel3.target.wants \ - $(DESTDIR)$(systemunitdir)/runlevel4.target.wants \ - $(DESTDIR)$(systemunitdir)/runlevel5.target.wants \ - $(DESTDIR)$(systemunitdir)/multi-user.target.wants \ $(DESTDIR)$(pkgsysconfdir)/system \ $(DESTDIR)$(pkgsysconfdir)/system/multi-user.target.wants \ $(DESTDIR)$(pkgsysconfdir)/system/getty.target.wants \ @@ -3994,35 +4018,7 @@ systemd-install-data-hook: ( cd $(DESTDIR)$(sysconfdir)/xdg/systemd/ && \ rm -f user && \ $(LN_S) $(pkgsysconfdir)/user user ) - ( cd $(DESTDIR)$(systemunitdir)/sockets.target.wants && \ - rm -f systemd-initctl.socket systemd-shutdownd.socket && \ - $(LN_S) ../systemd-initctl.socket systemd-initctl.socket && \ - $(LN_S) ../systemd-shutdownd.socket systemd-shutdownd.socket ) - ( cd $(DESTDIR)$(systemunitdir)/runlevel1.target.wants && \ - rm -f systemd-update-utmp-runlevel.service && \ - $(LN_S) ../systemd-update-utmp-runlevel.service systemd-update-utmp-runlevel.service ) - ( cd $(DESTDIR)$(systemunitdir)/runlevel2.target.wants && \ - rm -f systemd-update-utmp-runlevel.service && \ - $(LN_S) ../systemd-update-utmp-runlevel.service systemd-update-utmp-runlevel.service ) - ( cd $(DESTDIR)$(systemunitdir)/runlevel3.target.wants && \ - rm -f systemd-update-utmp-runlevel.service && \ - $(LN_S) ../systemd-update-utmp-runlevel.service systemd-update-utmp-runlevel.service ) - ( cd $(DESTDIR)$(systemunitdir)/runlevel4.target.wants && \ - rm -f systemd-update-utmp-runlevel.service && \ - $(LN_S) ../systemd-update-utmp-runlevel.service systemd-update-utmp-runlevel.service ) - ( cd $(DESTDIR)$(systemunitdir)/runlevel5.target.wants && \ - rm -f systemd-update-utmp-runlevel.service && \ - $(LN_S) ../systemd-update-utmp-runlevel.service systemd-update-utmp-runlevel.service ) - ( cd $(DESTDIR)$(systemunitdir)/shutdown.target.wants && \ - rm -f systemd-update-utmp-shutdown.service && \ - $(LN_S) ../systemd-update-utmp-shutdown.service systemd-update-utmp-shutdown.service ) - ( cd $(DESTDIR)$(systemunitdir)/local-fs.target.wants && \ - rm -f systemd-remount-fs.service \ - systemd-fsck-root.service \ - tmp.mount && \ - $(LN_S) ../systemd-remount-fs.service systemd-remount-fs.service && \ - $(LN_S) ../systemd-fsck-root.service systemd-fsck-root.service && \ - $(LN_S) ../tmp.mount tmp.mount ) + ( cd $(DESTDIR)$(userunitdir) && \ rm -f shutdown.target sockets.target bluetooth.target printer.target sound.target && \ $(LN_S) $(systemunitdir)/shutdown.target shutdown.target && \ @@ -4044,44 +4040,19 @@ systemd-install-data-hook: $(LN_S) graphical.target default.target && \ $(LN_S) reboot.target ctrl-alt-del.target && \ $(LN_S) getty@.service autovt@.service ) - ( cd $(DESTDIR)$(systemunitdir)/multi-user.target.wants && \ - rm -f getty.target systemd-ask-password-wall.path && \ - $(LN_S) ../getty.target getty.target && \ - $(LN_S) ../systemd-ask-password-wall.path systemd-ask-password-wall.path) ( cd $(DESTDIR)$(pkgsysconfdir)/system/getty.target.wants && \ rm -f getty@tty1.service && \ $(LN_S) $(systemunitdir)/getty@.service getty@tty1.service ) ( cd $(DESTDIR)$(pkgsysconfdir)/system/multi-user.target.wants && \ rm -f remote-fs.target && \ $(LN_S) $(systemunitdir)/remote-fs.target remote-fs.target ) - ( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \ - rm -f dev-hugepages.mount \ - dev-mqueue.mount \ - sys-kernel-config.mount \ - sys-kernel-debug.mount \ - sys-fs-fuse-connections.mount \ - systemd-tmpfiles-setup.service \ - systemd-sysctl.service \ - systemd-ask-password-console.path && \ - $(LN_S) ../dev-hugepages.mount dev-hugepages.mount && \ - $(LN_S) ../dev-mqueue.mount dev-mqueue.mount && \ - $(LN_S) ../sys-kernel-config.mount sys-kernel-config.mount && \ - $(LN_S) ../sys-kernel-debug.mount sys-kernel-debug.mount && \ - $(LN_S) ../sys-fs-fuse-connections.mount sys-fs-fuse-connections.mount && \ - $(LN_S) ../systemd-tmpfiles-setup.service systemd-tmpfiles-setup.service && \ - $(LN_S) ../systemd-sysctl.service systemd-sysctl.service && \ - $(LN_S) ../systemd-ask-password-console.path systemd-ask-password-console.path ) - ( cd $(DESTDIR)$(systemunitdir)/basic.target.wants && \ - rm -f systemd-tmpfiles-clean.timer && \ - $(LN_S) ../systemd-tmpfiles-clean.timer systemd-tmpfiles-clean.timer ) ( cd $(DESTDIR)$(dbussessionservicedir) && \ rm -f org.freedesktop.systemd1.service && \ $(LN_S) ../system-services/org.freedesktop.systemd1.service org.freedesktop.systemd1.service ) if HAVE_KMOD - ( cd $(DESTDIR)$(systemunitdir)/sysinit.target.wants && \ - rm -f systemd-modules-load.service && \ - $(LN_S) ../systemd-modules-load.service systemd-modules-load.service ) +SYSINIT_TARGET_WANTS += \ + systemd-modules-load.service endif install-exec-hook: $(INSTALL_EXEC_HOOKS) -- cgit v1.2.1 From 91e8651b6e3acf77c0fc51febe70b94afcd81b7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 22 Jan 2013 23:51:51 -0500 Subject: build-sys: add variables to collect unit aliases --- Makefile.am | 173 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 87 insertions(+), 86 deletions(-) diff --git a/Makefile.am b/Makefile.am index a7a7940eb7..c02145badb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4,6 +4,7 @@ # # Copyright 2010-2012 Lennart Poettering # Copyright 2010-2012 Kay Sievers +# Copyright 2013 Zbigniew Jędrzejewski-Szmek # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by @@ -193,6 +194,11 @@ SYSINIT_TARGET_WANTS = BASIC_TARGET_WANTS = SOCKETS_TARGET_WANTS = +SYSTEM_UNIT_ALIASES = +USER_UNIT_ALIASES = + +GENERAL_ALIASES = + install-target-wants-hook: what="$(RUNLEVEL1_TARGET_WANTS)" && wants=runlevel1.target && $(add-wants) what="$(RUNLEVEL2_TARGET_WANTS)" && wants=runlevel2.target && $(add-wants) @@ -217,9 +223,27 @@ endef install-directories-hook: $(MKDIR_P) $(addprefix $(DESTDIR),$(INSTALL_DIRS)) +install-aliases-hook: + set -- $(SYSTEM_UNIT_ALIASES) && \ + dir=$(systemunitdir) && $(install-aliases) + set -- $(USER_UNIT_ALIASES) && \ + dir=$(userunitdir) && $(install-aliases) + set -- $(GENERAL_ALIASES) && \ + dir= && $(install-aliases) + +define install-aliases + $(MKDIR_P) /$(DESTDIR)$$dir && \ + while [ -n "$$1" ]; do \ + rm -f $(DESTDIR)$$dir/$$2 && \ + ln -s $$1 $(DESTDIR)$$dir/$$2 && \ + shift 2 || exit $$?; \ + done +endef + INSTALL_EXEC_HOOKS += \ install-target-wants-hook \ - install-directories-hook + install-directories-hook \ + install-aliases-hook # ------------------------------------------------------------------------------ rootbin_PROGRAMS = \ @@ -3206,13 +3230,8 @@ org.freedesktop.hostname1.xml: systemd-hostnamed $(STRINGS) $@.tmp | $(AWK) -f $(srcdir)/introspect.awk | \ $(DBUS_PREPROCESS) -o $@ - && rm $@.tmp -hostnamed-install-data-hook: - ( cd $(DESTDIR)$(systemunitdir) && \ - rm -f dbus-org.freedesktop.hostname1.service && \ - $(LN_S) systemd-hostnamed.service dbus-org.freedesktop.hostname1.service ) - -INSTALL_DATA_HOOKS += \ - hostnamed-install-data-hook +SYSTEM_UNIT_ALIASES += \ + systemd-hostnamed.service dbus-org.freedesktop.hostname1.service MANPAGES += \ man/systemd-hostnamed.service.8 @@ -3286,13 +3305,8 @@ org.freedesktop.locale1.xml: systemd-localed $(STRINGS) $@.tmp | $(AWK) -f $(srcdir)/introspect.awk | \ $(DBUS_PREPROCESS) -o $@ - && rm $@.tmp -localed-install-data-hook: - ( cd $(DESTDIR)$(systemunitdir) && \ - rm -f dbus-org.freedesktop.locale1.service && \ - $(LN_S) systemd-localed.service dbus-org.freedesktop.locale1.service ) - -INSTALL_DATA_HOOKS += \ - localed-install-data-hook +SYSTEM_UNIT_ALIASES += \ + systemd-localed.service dbus-org.freedesktop.locale1.service MANPAGES += \ man/systemd-localed.service.8 @@ -3374,16 +3388,12 @@ org.freedesktop.timedate1.xml: systemd-timedated dbusinterface_DATA += \ org.freedesktop.timedate1.xml -timedated-install-data-hook: - $(MKDIR_P) -m 0755 \ - $(DESTDIR)$(prefix)/lib/systemd/ntp-units.d \ - $(DESTDIR)$(sysconfdir)/systemd/ntp-units.d - ( cd $(DESTDIR)$(systemunitdir) && \ - rm -f dbus-org.freedesktop.timedate1.service && \ - $(LN_S) systemd-timedated.service dbus-org.freedesktop.timedate1.service ) +INSTALL_DIRS += \ + $(prefix)/lib/systemd/ntp-units.d \ + $(sysconfdir)/systemd/ntp-units.d -INSTALL_DATA_HOOKS += \ - timedated-install-data-hook +SYSTEM_UNIT_ALIASES += \ + systemd-timedated.service dbus-org.freedesktop.timedate1.service MANPAGES += \ man/systemd-timedated.service.8 @@ -3642,13 +3652,8 @@ MULTI_USER_TARGET_WANTS += \ systemd-logind.service \ systemd-user-sessions.service -logind-install-data-hook: - ( cd $(DESTDIR)$(systemunitdir) && \ - rm -f dbus-org.freedesktop.login1.service && \ - $(LN_S) systemd-logind.service dbus-org.freedesktop.login1.service) - -INSTALL_DATA_HOOKS += \ - logind-install-data-hook +SYSTEM_UNIT_ALIASES += \ + systemd-logind.service dbus-org.freedesktop.login1.service systemd_multi_seat_x_SOURCES = \ src/login/multi-seat-x.c @@ -3995,60 +4000,56 @@ SYSINIT_TARGET_WANTS += \ BASIC_TARGET_WANTS += \ systemd-tmpfiles-clean.timer -systemd-install-data-hook: - $(MKDIR_P) -m 0755 \ - $(DESTDIR)$(tmpfilesdir) \ - $(DESTDIR)$(sysconfdir)/tmpfiles.d \ - $(DESTDIR)$(prefix)/lib/modules-load.d \ - $(DESTDIR)$(sysconfdir)/modules-load.d \ - $(DESTDIR)$(prefix)/lib/sysctl.d \ - $(DESTDIR)$(sysconfdir)/sysctl.d \ - $(DESTDIR)$(systemshutdowndir) \ - $(DESTDIR)$(systemsleepdir) \ - $(DESTDIR)$(systemgeneratordir) \ - $(DESTDIR)$(usergeneratordir) - $(MKDIR_P) -m 0755 \ - $(DESTDIR)$(userunitdir) \ - $(DESTDIR)$(pkgsysconfdir)/system \ - $(DESTDIR)$(pkgsysconfdir)/system/multi-user.target.wants \ - $(DESTDIR)$(pkgsysconfdir)/system/getty.target.wants \ - $(DESTDIR)$(pkgsysconfdir)/user \ - $(DESTDIR)$(dbussessionservicedir) \ - $(DESTDIR)$(sysconfdir)/xdg/systemd - ( cd $(DESTDIR)$(sysconfdir)/xdg/systemd/ && \ - rm -f user && \ - $(LN_S) $(pkgsysconfdir)/user user ) - - ( cd $(DESTDIR)$(userunitdir) && \ - rm -f shutdown.target sockets.target bluetooth.target printer.target sound.target && \ - $(LN_S) $(systemunitdir)/shutdown.target shutdown.target && \ - $(LN_S) $(systemunitdir)/sockets.target sockets.target && \ - $(LN_S) $(systemunitdir)/bluetooth.target bluetooth.target && \ - $(LN_S) $(systemunitdir)/printer.target printer.target && \ - $(LN_S) $(systemunitdir)/sound.target sound.target ) - ( cd $(DESTDIR)$(systemunitdir) && \ - rm -f runlevel0.target runlevel1.target runlevel2.target runlevel3.target runlevel4.target runlevel5.target runlevel6.target && \ - $(LN_S) poweroff.target runlevel0.target && \ - $(LN_S) rescue.target runlevel1.target && \ - $(LN_S) multi-user.target runlevel2.target && \ - $(LN_S) multi-user.target runlevel3.target && \ - $(LN_S) multi-user.target runlevel4.target && \ - $(LN_S) graphical.target runlevel5.target && \ - $(LN_S) reboot.target runlevel6.target ) - ( cd $(DESTDIR)$(systemunitdir) && \ - rm -f default.target ctrl-alt-del.target autovt@.service && \ - $(LN_S) graphical.target default.target && \ - $(LN_S) reboot.target ctrl-alt-del.target && \ - $(LN_S) getty@.service autovt@.service ) - ( cd $(DESTDIR)$(pkgsysconfdir)/system/getty.target.wants && \ - rm -f getty@tty1.service && \ - $(LN_S) $(systemunitdir)/getty@.service getty@tty1.service ) - ( cd $(DESTDIR)$(pkgsysconfdir)/system/multi-user.target.wants && \ - rm -f remote-fs.target && \ - $(LN_S) $(systemunitdir)/remote-fs.target remote-fs.target ) - ( cd $(DESTDIR)$(dbussessionservicedir) && \ - rm -f org.freedesktop.systemd1.service && \ - $(LN_S) ../system-services/org.freedesktop.systemd1.service org.freedesktop.systemd1.service ) +SYSTEM_UNIT_ALIASES += \ + poweroff.target runlevel0.target \ + rescue.target runlevel1.target \ + multi-user.target runlevel2.target \ + multi-user.target runlevel3.target \ + multi-user.target runlevel4.target \ + graphical.target runlevel5.target \ + reboot.target runlevel6.target \ + graphical.target default.target \ + reboot.target ctrl-alt-del.target \ + getty@.service autovt@.service + +USER_UNIT_ALIASES += \ + $(systemunitdir)/shutdown.target shutdown.target \ + $(systemunitdir)/sockets.target sockets.target \ + $(systemunitdir)/bluetooth.target bluetooth.target \ + $(systemunitdir)/printer.target printer.target \ + $(systemunitdir)/sound.target sound.target + +GENERAL_ALIASES += \ + $(systemunitdir)/remote-fs.target $(pkgsysconfdir)/system/multi-user.target.wants/remote-fs.target \ + $(systemunitdir)/getty@.service $(pkgsysconfdir)/system/getty.target.wants/getty@tty1.service \ + $(pkgsysconfdir)/user $(sysconfdir)/xdg/systemd/user \ + ../system-services/org.freedesktop.systemd1.service $(dbussessionservicedir)/org.freedesktop.systemd1.service + +INSTALL_DIRS += \ + $(systemunitdir)/runlevel1.target.wants \ + $(systemunitdir)/runlevel2.target.wants \ + $(systemunitdir)/runlevel3.target.wants \ + $(systemunitdir)/runlevel4.target.wants \ + $(systemunitdir)/runlevel5.target.wants \ + \ + $(tmpfilesdir) \ + $(sysconfdir)/tmpfiles.d \ + $(prefix)/lib/modules-load.d \ + $(sysconfdir)/modules-load.d \ + $(prefix)/lib/sysctl.d \ + $(sysconfdir)/sysctl.d \ + $(systemshutdowndir) \ + $(systemsleepdir) \ + $(systemgeneratordir) \ + $(usergeneratordir) \ + \ + $(userunitdir) \ + $(pkgsysconfdir)/system \ + $(pkgsysconfdir)/system/multi-user.target.wants \ + $(pkgsysconfdir)/system/getty.target.wants \ + $(pkgsysconfdir)/user \ + $(dbussessionservicedir) \ + $(sysconfdir)/xdg/systemd if HAVE_KMOD SYSINIT_TARGET_WANTS += \ @@ -4059,7 +4060,7 @@ install-exec-hook: $(INSTALL_EXEC_HOOKS) uninstall-hook: $(UNINSTALL_DATA_HOOKS) $(UNINSTALL_EXEC_HOOKS) -install-data-hook: systemd-install-data-hook $(INSTALL_DATA_HOOKS) +install-data-hook: $(INSTALL_DATA_HOOKS) distclean-local: $(DISTCLEAN_LOCAL_HOOKS) -- cgit v1.2.1 From 245d345f7539983c08fd8dbc0c51079422ca096a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 23 Jan 2013 21:41:30 -0500 Subject: build-sys: link runlevel targets on install only if sysv compat is enabled --- Makefile.am | 20 ++++++++++++++------ TODO | 2 -- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Makefile.am b/Makefile.am index c02145badb..cd4d879ce7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -213,9 +213,10 @@ install-target-wants-hook: what="$(SOCKETS_TARGET_WANTS)" && wants=sockets.target && $(add-wants) define add-wants - dir=$(DESTDIR)$(systemunitdir)/$$wants.wants && \ - $(MKDIR_P) -m 0755 $$dir && \ - ( cd $$dir && \ + [ -z "$$what" ] || ( \ + dir=$(DESTDIR)$(systemunitdir)/$$wants.wants && \ + $(MKDIR_P) -m 0755 $$dir && \ + cd $$dir && \ rm -f $$what && \ for i in $$what; do ln -s ../$$i . || exit $$? ; done ) endef @@ -3969,6 +3970,7 @@ SOCKETS_TARGET_WANTS += \ systemd-initctl.socket \ systemd-shutdownd.socket +if HAVE_SYSV_COMPAT RUNLEVEL1_TARGET_WANTS += \ systemd-update-utmp-runlevel.service RUNLEVEL2_TARGET_WANTS += \ @@ -3979,6 +3981,7 @@ RUNLEVEL4_TARGET_WANTS += \ systemd-update-utmp-runlevel.service RUNLEVEL5_TARGET_WANTS += \ systemd-update-utmp-runlevel.service +endif SHUTDOWN_TARGET_WANTS += \ systemd-update-utmp-shutdown.service LOCAL_FS_TARGET_WANTS += \ @@ -4000,6 +4003,7 @@ SYSINIT_TARGET_WANTS += \ BASIC_TARGET_WANTS += \ systemd-tmpfiles-clean.timer +if HAVE_SYSV_COMPAT SYSTEM_UNIT_ALIASES += \ poweroff.target runlevel0.target \ rescue.target runlevel1.target \ @@ -4007,7 +4011,9 @@ SYSTEM_UNIT_ALIASES += \ multi-user.target runlevel3.target \ multi-user.target runlevel4.target \ graphical.target runlevel5.target \ - reboot.target runlevel6.target \ + reboot.target runlevel6.target +endif +SYSTEM_UNIT_ALIASES += \ graphical.target default.target \ reboot.target ctrl-alt-del.target \ getty@.service autovt@.service @@ -4025,13 +4031,15 @@ GENERAL_ALIASES += \ $(pkgsysconfdir)/user $(sysconfdir)/xdg/systemd/user \ ../system-services/org.freedesktop.systemd1.service $(dbussessionservicedir)/org.freedesktop.systemd1.service +if HAVE_SYSV_COMPAT INSTALL_DIRS += \ $(systemunitdir)/runlevel1.target.wants \ $(systemunitdir)/runlevel2.target.wants \ $(systemunitdir)/runlevel3.target.wants \ $(systemunitdir)/runlevel4.target.wants \ - $(systemunitdir)/runlevel5.target.wants \ - \ + $(systemunitdir)/runlevel5.target.wants +endif +INSTALL_DIRS += \ $(tmpfilesdir) \ $(sysconfdir)/tmpfiles.d \ $(prefix)/lib/modules-load.d \ diff --git a/TODO b/TODO index 0bfbe1b47f..44922db916 100644 --- a/TODO +++ b/TODO @@ -42,8 +42,6 @@ Features: * write man page for efi boot generator -* link runlevel targets on install only if sysv compat is enabled - * maybe not install getty@tty1.service symlink in /etc but in /usr? * re-enable "make check" for gtk-doc (broken for unknown reason) -- cgit v1.2.1 From ebea41b8d21457d435b8fd6ee6783e3dbf749cba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 23 Jan 2013 22:20:23 -0500 Subject: build-sys: add silent rule for m4 processing Using custom prefixes makes the whole build process a bit more readable. --- Makefile.am | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index cd4d879ce7..abc3d55438 100644 --- a/Makefile.am +++ b/Makefile.am @@ -246,6 +246,12 @@ INSTALL_EXEC_HOOKS += \ install-directories-hook \ install-aliases-hook +# ------------------------------------------------------------------------------ + +AM_V_M4 = $(AM_V_M4_$(V)) +AM_V_M4_ = $(AM_V_M4_$(AM_DEFAULT_VERBOSITY)) +AM_V_M4_0 = @echo " M4 " $@; + # ------------------------------------------------------------------------------ rootbin_PROGRAMS = \ systemctl \ @@ -3863,14 +3869,14 @@ src/%.c: src/%.gperf src/%: src/%.m4 $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_GEN)$(M4) -P $(M4_DEFINES) < $< > $@ + $(AM_V_M4)$(M4) -P $(M4_DEFINES) < $< > $@ M4_PROCESS_SYSTEM = \ - $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ + $(AM_V_M4)$(MKDIR_P) $(dir $@) && \ $(M4) -P $(M4_DEFINES) -DFOR_SYSTEM=1 < $< > $@ M4_PROCESS_USER = \ - $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ + $(AM_V_M4)$(MKDIR_P) $(dir $@) && \ $(M4) -P $(M4_DEFINES) -DFOR_USER=1 < $< > $@ units/%: units/%.m4 Makefile -- cgit v1.2.1 From 5b40782c8df897e5b1e4c1cc97b8bad4145a6bef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 23 Jan 2013 22:26:43 -0500 Subject: build-sys: add silent rules for xslt processing --- Makefile.am | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index abc3d55438..6f83c8bcc7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -252,6 +252,10 @@ AM_V_M4 = $(AM_V_M4_$(V)) AM_V_M4_ = $(AM_V_M4_$(AM_DEFAULT_VERBOSITY)) AM_V_M4_0 = @echo " M4 " $@; +AM_V_XSLT = $(AM_V_XSLT_$(V)) +AM_V_XSLT_ = $(AM_V_XSLT_$(AM_DEFAULT_VERBOSITY)) +AM_V_XSLT_0 = @echo " XSLT " $@; + # ------------------------------------------------------------------------------ rootbin_PROGRAMS = \ systemctl \ @@ -3911,11 +3915,11 @@ XSLTPROC_FLAGS = \ --stringparam man.copyright.section.enabled 0 XSLTPROC_PROCESS_MAN = \ - $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ + $(AM_V_XSLT)$(MKDIR_P) $(dir $@) && \ $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $< XSLTPROC_PROCESS_HTML = \ - $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ + $(AM_V_XSLT)$(MKDIR_P) $(dir $@) && \ $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(srcdir)/man/custom-html.xsl $< man/%.1: man/%.xml -- cgit v1.2.1 From c8503a3e16bb487e86682c9bee9a60f24b9e40d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 23 Jan 2013 22:30:12 -0500 Subject: build-sys: add silent rules for gperf generation --- Makefile.am | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index 6f83c8bcc7..be3fa71409 100644 --- a/Makefile.am +++ b/Makefile.am @@ -256,6 +256,10 @@ AM_V_XSLT = $(AM_V_XSLT_$(V)) AM_V_XSLT_ = $(AM_V_XSLT_$(AM_DEFAULT_VERBOSITY)) AM_V_XSLT_0 = @echo " XSLT " $@; +AM_V_GPERF = $(AM_V_GPERF_$(V)) +AM_V_GPERF_ = $(AM_V_GPERF_$(AM_DEFAULT_VERBOSITY)) +AM_V_GPERF_0 = @echo " GPERF " $@; + # ------------------------------------------------------------------------------ rootbin_PROGRAMS = \ systemctl \ @@ -1185,7 +1189,7 @@ src/core/syscall-from-name.gperf: src/core/syscall-list.txt Makefile src/core/syscall-from-name.h: src/core/syscall-from-name.gperf Makefile $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_GEN)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_syscall -H hash_syscall_name -p -C < $< > $@ + $(AM_V_GPERF)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_syscall -H hash_syscall_name -p -C < $< > $@ src/core/syscall-to-name.h: src/core/syscall-list.txt Makefile $(AM_V_at)$(MKDIR_P) $(dir $@) @@ -2476,7 +2480,7 @@ src/udev/keymap/keys-from-name.gperf: src/udev/keymap/keys.txt Makefile $(AM_V_GEN)$(AWK) 'BEGIN{ print "struct key { const char* name; unsigned short id; };"; print "%null-strings"; print "%%";} { print $$1 ", " $$1 }' < $< > $@ src/udev/keymap/keys-from-name.h: src/udev/keymap/keys-from-name.gperf Makefile - $(AM_V_GEN)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_key -H hash_key_name -p -C < $< > $@ + $(AM_V_GPERF)$(GPERF) -L ANSI-C -t --ignore-case -N lookup_key -H hash_key_name -p -C < $< > $@ src/udev/keymap/keys-to-name.h: src/udev/keymap/keys.txt Makefile $(AM_V_GEN)$(AWK) 'BEGIN{ print "const char* const key_names[KEY_CNT] = { "} { print "[" $$1 "] = \"" $$1 "\"," } END{print "};"}' < $< > $@ @@ -3869,7 +3873,7 @@ src/analyze/systemd-analyze: %: %.in Makefile src/%.c: src/%.gperf $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_GEN)$(GPERF) < $< > $@ + $(AM_V_GPERF)$(GPERF) < $< > $@ src/%: src/%.m4 $(AM_V_at)$(MKDIR_P) $(dir $@) -- cgit v1.2.1 From 6d594baa3fa3a361efc2a4c1da3557fc4eba960d Mon Sep 17 00:00:00 2001 From: Michael Olbrich Date: Wed, 23 Jan 2013 14:12:15 +0100 Subject: service: really stop watchdog timer when stopping For services without ExecStop= the state SERVICE_STOP is never entered. as a result the watchdog timer is not stopped and the service is restarted (if it is configuered to restart). Stopping the watchdog timer for SERVICE_STOP_SIGTERM as well fixes this. --- src/core/service.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/service.c b/src/core/service.c index ee5a1a41e5..593946e517 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1550,7 +1550,7 @@ static void service_set_state(Service *s, ServiceState state) { service_connection_unref(s); } - if (state == SERVICE_STOP) + if (state == SERVICE_STOP || state == SERVICE_STOP_SIGTERM) service_stop_watchdog(s); /* For the inactive states unit_notify() will trim the cgroup, -- cgit v1.2.1 From 90527fbb2c48ffda5c6d8f232f8993a90b2632a4 Mon Sep 17 00:00:00 2001 From: Michael Olbrich Date: Wed, 23 Jan 2013 14:12:16 +0100 Subject: service: make sure the watchdog timer is not restarted while stopping A watchdog notification may be handled after the watchdog timer was stopped while stopping the service. As a result the timer is restarted and the service may be restarted as well. The watchdog timestamp is initially set during startup in service_enter_start_post() and cleared when the timer is stopped. Therefore it can be used as an indication if the timer should be reset. --- src/core/service.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/service.c b/src/core/service.c index 593946e517..baddc5ade4 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -3400,7 +3400,8 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) { if (strv_find(tags, "WATCHDOG=1")) { log_debug_unit(u->id, "%s: got WATCHDOG=1", u->id); - service_reset_watchdog(s); + if (dual_timestamp_is_set(&s->watchdog_timestamp)) + service_reset_watchdog(s); } /* Notify clients about changed status or main pid */ -- cgit v1.2.1 From aa7cb2098302d45c8768ca08bf1e433a19aa46b9 Mon Sep 17 00:00:00 2001 From: Umut Tezduyar Date: Wed, 23 Jan 2013 09:23:49 +0100 Subject: core: Set source for mountinfo .mount units --- src/core/mount.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/core/mount.c b/src/core/mount.c index 03eff9d9ed..e5f5e4272e 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -1472,7 +1472,7 @@ static int mount_add_one( int r; Unit *u; bool delete; - char *e, *w = NULL, *o = NULL, *f = NULL; + char *e, *w = NULL, *o = NULL, *s = NULL, *f = NULL; MountParameters *p; bool load_extras = false; @@ -1545,6 +1545,7 @@ static int mount_add_one( if (!(w = strdup(what)) || !(o = strdup(options)) || + !(s = strdup("/proc/self/mountinfo")) || !(f = strdup(fstype))) { r = -ENOMEM; goto fail; @@ -1558,6 +1559,8 @@ static int mount_add_one( } MOUNT(u)->from_proc_self_mountinfo = true; + free(u->source_path); + u->source_path = s; free(p->what); p->what = w; @@ -1583,6 +1586,7 @@ static int mount_add_one( fail: free(w); free(o); + free(s); free(f); if (delete && u) -- cgit v1.2.1 From 0ae9c92a933869d5695396d067aa555dacbbba08 Mon Sep 17 00:00:00 2001 From: Frederic Crozat Date: Thu, 24 Jan 2013 18:06:00 +0100 Subject: man: systemd.exec - explicit Environment assignment Hi all, while working on another bug, I discovered the "strange" way systemd is parsing Environment= in .service and thought it was worth documenting (because I don't expect people to find this syntax by themselves unless they read the parsing code ;) Be more verbose about using space in Environment field and not using value of other variables Fixes https://bugzilla.redhat.com/show_bug.cgi?id=840260 [zj: expand and reformat the example a bit] --- man/systemd.exec.xml | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml index 8a22ac0138..a0fca5996b 100644 --- a/man/systemd.exec.xml +++ b/man/systemd.exec.xml @@ -286,9 +286,24 @@ empty string is assigned to this option the list of environment variables is reset, all prior - assignments have no effect. See + assignments have no effect. + Variable expansion is not performed + inside the strings, and $ has no special + meaning. + If you need to assign a value containing spaces + to a variable, use double quotes (") + for the assignment. + + Example: + Environment="VAR1=word1 word2" VAR2=word3 "VAR3=word 5 6" + gives three variables VAR1, + VAR2, VAR3. + + + + See environ7 - for details. + for details about environment variables. EnvironmentFile= -- cgit v1.2.1 From e22ac43bc057a305d748221c3b2c935084d6f1b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 24 Jan 2013 19:59:33 -0500 Subject: man: mention /proc/self/mountinfo in systemd.mount(5) --- man/systemd.mount.xml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml index 7f879db709..f319cf7ce9 100644 --- a/man/systemd.mount.xml +++ b/man/systemd.mount.xml @@ -105,7 +105,10 @@ Mount points created at runtime (independently of unit files or /etc/fstab) will be monitored by systemd and appear like any other mount - unit in systemd. + unit in systemd. + See /proc/self/mountinfo description + in proc5. + Some file systems have special semantics as API file systems for kernel-to-userspace and @@ -297,6 +300,7 @@ systemd.kill5, systemd.service5, systemd.device5, + proc5, mount8, systemd-fstab-generator8, systemd.directives7 -- cgit v1.2.1 From 6fd55349ab1c392b01d7979f115f8be2cd89d76a Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Thu, 24 Jan 2013 17:47:45 -0500 Subject: selinux-access: Delete debugging message logged as an error I don't see why this should be logged at all, so let's delete it. --- src/core/selinux-access.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c index b933698469..41f824a1ac 100644 --- a/src/core/selinux-access.c +++ b/src/core/selinux-access.c @@ -308,8 +308,6 @@ static int get_calling_context( */ sender = dbus_message_get_sender(message); if (sender) { - log_error("SELinux Got Sender %s", sender); - r = bus_get_selinux_security_context(connection, sender, scon, error); if (r >= 0) return r; -- cgit v1.2.1 From 035dba6f8261af9f714ac3901d695ff39d4a896b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 25 Jan 2013 03:05:08 +0100 Subject: selinux: we don't need that many debug messages by default --- src/core/selinux-access.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c index 41f824a1ac..be728d5d5b 100644 --- a/src/core/selinux-access.c +++ b/src/core/selinux-access.c @@ -104,8 +104,6 @@ static int bus_get_selinux_security_context( *scon = b; - log_debug("GetConnectionSELinuxSecurityContext %s (pid %ld)", *scon, (long) bus_get_unix_process_id(connection, name, error)); - return 0; } @@ -316,7 +314,6 @@ static int get_calling_context( return r; } - log_debug("SELinux No Sender"); if (!dbus_connection_get_unix_fd(connection, &fd)) { log_error("bus_connection_get_unix_fd failed %m"); return -EINVAL; @@ -361,8 +358,6 @@ int selinux_access_check( if (r < 0) return r; - log_debug("SELinux access check for path=%s permission=%s", strna(path), permission); - audit.uid = audit.loginuid = (uid_t) -1; audit.gid = (gid_t) -1; audit.cmdline = NULL; -- cgit v1.2.1 From 0028da22f194f7c0ca7169a48cf32e1bc0f9138a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 25 Jan 2013 03:07:24 +0100 Subject: update TODO --- TODO | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/TODO b/TODO index 44922db916..4748f58077 100644 --- a/TODO +++ b/TODO @@ -20,17 +20,12 @@ Fedora 19: Features: -* unify killing logic of service, socket, mount, swap units +* logind: get rid of Resumed() signal again, instead, move PrepareForSleep(false) after coming back from suspend, and generate it unconditionally -* downgrade selinux log messages +* unify killing logic of service, socket, mount, swap units * logind: document new Resume signal and UnlockSessions call in wiki -* logind: when a delay lock is taken, delay method return until we are - out of a suspend cycle - -* in "loginctl seat-status" we should mark the master device with a "*" or so - * if we have systemd-analyze in C "systemctl dot" should move there too * fsck hookup for the ESP mount is missing @@ -38,7 +33,7 @@ Features: * external: maybe it is time to patch procps so that "ps" links to libsystemd-logind to print a pretty service name, seat name, session name in its output. Currently it only shows cgroup membership, but - that's sometimes kinda hard to parse. + that's sometimes kinda hard to parse for a human. * write man page for efi boot generator -- cgit v1.2.1 From 5486bcefe5af023395f8cbc528b7e771814d4b0d Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 25 Jan 2013 03:09:41 +0100 Subject: update TODO --- TODO | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TODO b/TODO index 4748f58077..7f0df84b28 100644 --- a/TODO +++ b/TODO @@ -22,6 +22,10 @@ Features: * logind: get rid of Resumed() signal again, instead, move PrepareForSleep(false) after coming back from suspend, and generate it unconditionally +* add configure switch for enabling/disabling efi stuff + +* introduce ExecCondition= in services + * unify killing logic of service, socket, mount, swap units * logind: document new Resume signal and UnlockSessions call in wiki -- cgit v1.2.1 From 5d1fb81b2c602abd2605f6e50810ac7fcb06c024 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 25 Jan 2013 04:48:34 +0100 Subject: loginctl: don't show [UACCESS] info in device tree As the tree doesn't really necessarily show all device node devices and only those are marked for uaccess it's kinda pointless showing this at all, since it would give a pretty incomplete impression of the uaccess information. --- src/login/sysfs-show.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/login/sysfs-show.c b/src/login/sysfs-show.c index da34c3ade8..fc3af75876 100644 --- a/src/login/sysfs-show.c +++ b/src/login/sysfs-show.c @@ -45,7 +45,7 @@ static int show_sysfs_one( struct udev_device *d; const char *sn, *name, *sysfs, *subsystem, *sysname; char *l, *k; - bool is_master, uaccess; + bool is_master; sysfs = udev_list_entry_get_name(*item); if (!path_startswith(sysfs, sub)) @@ -69,7 +69,6 @@ static int show_sysfs_one( } is_master = udev_device_has_tag(d, "seat-master"); - uaccess = udev_device_has_tag(d, "uaccess"); name = udev_device_get_sysattr_value(d, "name"); if (!name) @@ -114,8 +113,8 @@ static int show_sysfs_one( free(k); if (asprintf(&l, - "%s%s%s:%s%s%s%s", - is_master ? "[MASTER] " : "", uaccess ? "[ACL] " : "", + "%s%s:%s%s%s%s", + is_master ? "[MASTER] " : "", subsystem, sysname, name ? " \"" : "", name ? name : "", name ? "\"" : "") < 0) { udev_device_unref(d); -- cgit v1.2.1 From 314b4b0a68d9ab35de981923a088fc8c8820caa5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 25 Jan 2013 06:30:23 +0100 Subject: logind: rework delay inhibition logic - Don't allow any locks to be taken while we are in the process of executing the specific operation, so that apps are not surprised if a suspend/shutdown happens while they rely on their inhibitor. - Get rid of the Resumed signal, it was a bad idea, and redundant due to PrepareForSleep(false), see below. - Always send out PrepareFor{Shutdown,Sleep} signals, instead of only if a delay lock is taken. - Move PrepareForSleep(false) after we come back from the suspend, so that apps can use this as "Resumed" notification. This also has the benefit that apps know when to take a new lock. --- TODO | 6 +- src/login/logind-action.c | 2 +- src/login/logind-dbus.c | 218 +++++++++++++++++++++++++--------------------- src/login/logind.c | 4 +- src/login/logind.h | 22 +++-- 5 files changed, 134 insertions(+), 118 deletions(-) diff --git a/TODO b/TODO index 7f0df84b28..ce0e6a7e09 100644 --- a/TODO +++ b/TODO @@ -20,15 +20,13 @@ Fedora 19: Features: -* logind: get rid of Resumed() signal again, instead, move PrepareForSleep(false) after coming back from suspend, and generate it unconditionally - * add configure switch for enabling/disabling efi stuff * introduce ExecCondition= in services * unify killing logic of service, socket, mount, swap units -* logind: document new Resume signal and UnlockSessions call in wiki +* logind: document new PrepareForSleep(false) semantics and UnlockSessions call in wiki * if we have systemd-analyze in C "systemctl dot" should move there too @@ -386,8 +384,6 @@ Features: * ExecOnFailure=/usr/bin/foo -* fedora: make sshd and pam_loginuid work in nspawn containers - * fix utmp for console logins in containers * Add pretty name for seats in logind diff --git a/src/login/logind-action.c b/src/login/logind-action.c index a796ebe9ec..1e529e1c98 100644 --- a/src/login/logind-action.c +++ b/src/login/logind-action.c @@ -60,7 +60,7 @@ int manager_handle_action( assert(m); - if (m->action_job || m->delayed_unit) { + if (m->action_what) { log_debug("Action already in progress, ignoring."); return -EALREADY; } diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 0960aab634..f35185971b 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -198,7 +198,6 @@ " \n" \ " \n" \ " \n" \ - " \n" \ " \n" \ " \n" \ " \n" \ @@ -298,9 +297,9 @@ static int bus_manager_append_preparing(DBusMessageIter *i, const char *property assert(property); if (streq(property, "PreparingForShutdown")) - b = !!(m->delayed_what & INHIBIT_SHUTDOWN); + b = !!(m->action_what & INHIBIT_SHUTDOWN); else - b = !!(m->delayed_what & INHIBIT_SLEEP); + b = !!(m->action_what & INHIBIT_SLEEP); dbus_message_iter_append_basic(i, DBUS_TYPE_BOOLEAN, &b); return 0; @@ -697,7 +696,13 @@ fail: return r; } -static int bus_manager_inhibit(Manager *m, DBusConnection *connection, DBusMessage *message, DBusError *error, DBusMessage **_reply) { +static int bus_manager_inhibit( + Manager *m, + DBusConnection *connection, + DBusMessage *message, + DBusError *error, + DBusMessage **_reply) { + Inhibitor *i = NULL; char *id = NULL; const char *who, *why, *what, *mode; @@ -744,6 +749,15 @@ static int bus_manager_inhibit(Manager *m, DBusConnection *connection, DBusMessa goto fail; } + /* Don't allow taking delay locks while we are already + * executing the operation. We shouldn't create the impression + * that the lock was successful if the machine is about to go + * down/suspend any moment. */ + if (m->action_what & w) { + r = -EALREADY; + goto fail; + } + r = verify_polkit(connection, message, w == INHIBIT_SHUTDOWN ? (mm == INHIBIT_BLOCK ? "org.freedesktop.login1.inhibit-block-shutdown" : "org.freedesktop.login1.inhibit-delay-shutdown") : w == INHIBIT_SLEEP ? (mm == INHIBIT_BLOCK ? "org.freedesktop.login1.inhibit-block-sleep" : "org.freedesktop.login1.inhibit-delay-sleep") : @@ -992,15 +1006,59 @@ static int have_multiple_sessions( return false; } -static int send_start_unit(Manager *m, const char *unit_name, bool send_resumed, DBusError *error) { +static int bus_manager_log_shutdown( + Manager *m, + InhibitWhat w, + const char *unit_name) { + + const char *p, *q; + + assert(m); + assert(unit_name); + + if (w != INHIBIT_SHUTDOWN) + return 0; + + if (streq(unit_name, SPECIAL_POWEROFF_TARGET)) { + p = "MESSAGE=System is powering down."; + q = "SHUTDOWN=power-off"; + } else if (streq(unit_name, SPECIAL_HALT_TARGET)) { + p = "MESSAGE=System is halting."; + q = "SHUTDOWN=halt"; + } else if (streq(unit_name, SPECIAL_REBOOT_TARGET)) { + p = "MESSAGE=System is rebooting."; + q = "SHUTDOWN=reboot"; + } else if (streq(unit_name, SPECIAL_KEXEC_TARGET)) { + p = "MESSAGE=System is rebooting with kexec."; + q = "SHUTDOWN=kexec"; + } else { + p = "MESSAGE=System is shutting down."; + q = NULL; + } + + return log_struct(LOG_NOTICE, MESSAGE_ID(SD_MESSAGE_SHUTDOWN), + p, + q, NULL); +} + +static int execute_shutdown_or_sleep( + Manager *m, + InhibitWhat w, + const char *unit_name, + DBusError *error) { + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; const char *mode = "replace", *p; int r; char *c; assert(m); + assert(w >= 0); + assert(w < _INHIBIT_WHAT_MAX); assert(unit_name); + bus_manager_log_shutdown(m, w, unit_name); + r = bus_method_call_with_reply( m->bus, "org.freedesktop.systemd1", @@ -1026,54 +1084,27 @@ static int send_start_unit(Manager *m, const char *unit_name, bool send_resumed, if (!c) return -ENOMEM; + m->action_unit = unit_name; free(m->action_job); m->action_job = c; - m->send_resumed_after_action_job = send_resumed; + m->action_what = w; return 0; } -static int send_prepare_for(Manager *m, InhibitWhat w, bool _active) { - static const char * const signal_name[_INHIBIT_WHAT_MAX] = { - [INHIBIT_SHUTDOWN] = "PrepareForShutdown", - [INHIBIT_SLEEP] = "PrepareForSleep" - }; - - dbus_bool_t active = _active; - _cleanup_dbus_message_unref_ DBusMessage *message = NULL; - - assert(m); - assert(w >= 0); - assert(w < _INHIBIT_WHAT_MAX); - assert(signal_name[w]); - - message = dbus_message_new_signal("/org/freedesktop/login1", "org.freedesktop.login1.Manager", signal_name[w]); - if (!message) - return -ENOMEM; - - if (!dbus_message_append_args(message, DBUS_TYPE_BOOLEAN, &active, DBUS_TYPE_INVALID) || - !dbus_connection_send(m->bus, message, NULL)) - return -ENOMEM; - - return 0; -} +static int delay_shutdown_or_sleep( + Manager *m, + InhibitWhat w, + const char *unit_name) { -static int delay_shutdown_or_sleep(Manager *m, InhibitWhat w, const char *unit_name) { assert(m); assert(w >= 0); assert(w < _INHIBIT_WHAT_MAX); + assert(unit_name); - /* Tell everybody to prepare for shutdown/sleep */ - send_prepare_for(m, w, true); - - /* Update timestamp for timeout */ - if (!m->delayed_unit) - m->delayed_timestamp = now(CLOCK_MONOTONIC); - - /* Remember what we want to do, possibly overriding what kind - * of unit we previously queued. */ - m->delayed_unit = unit_name; - m->delayed_what = w; + m->action_timestamp = now(CLOCK_MONOTONIC); + m->action_unit = unit_name; + m->action_what = w; return 0; } @@ -1201,39 +1232,29 @@ finish: return 0; } -static int bus_manager_log_shutdown( - Manager *m, - InhibitWhat w, - const char *unit_name) { +static int send_prepare_for(Manager *m, InhibitWhat w, bool _active) { + static const char * const signal_name[_INHIBIT_WHAT_MAX] = { + [INHIBIT_SHUTDOWN] = "PrepareForShutdown", + [INHIBIT_SLEEP] = "PrepareForSleep" + }; - const char *p, *q; + dbus_bool_t active = _active; + _cleanup_dbus_message_unref_ DBusMessage *message = NULL; assert(m); - assert(unit_name); + assert(w >= 0); + assert(w < _INHIBIT_WHAT_MAX); + assert(signal_name[w]); - if (w != INHIBIT_SHUTDOWN) - return 0; + message = dbus_message_new_signal("/org/freedesktop/login1", "org.freedesktop.login1.Manager", signal_name[w]); + if (!message) + return -ENOMEM; - if (streq(unit_name, SPECIAL_POWEROFF_TARGET)) { - p = "MESSAGE=System is powering down."; - q = "SHUTDOWN=power-off"; - } else if (streq(unit_name, SPECIAL_HALT_TARGET)) { - p = "MESSAGE=System is halting."; - q = "SHUTDOWN=halt"; - } else if (streq(unit_name, SPECIAL_REBOOT_TARGET)) { - p = "MESSAGE=System is rebooting."; - q = "SHUTDOWN=reboot"; - } else if (streq(unit_name, SPECIAL_KEXEC_TARGET)) { - p = "MESSAGE=System is rebooting with kexec."; - q = "SHUTDOWN=kexec"; - } else { - p = "MESSAGE=System is shutting down."; - q = NULL; - } + if (!dbus_message_append_args(message, DBUS_TYPE_BOOLEAN, &active, DBUS_TYPE_INVALID) || + !dbus_connection_send(m->bus, message, NULL)) + return -ENOMEM; - return log_struct(LOG_NOTICE, MESSAGE_ID(SD_MESSAGE_SHUTDOWN), - p, - q, NULL); + return 0; } int bus_manager_shutdown_or_sleep_now_or_later( @@ -1251,6 +1272,9 @@ int bus_manager_shutdown_or_sleep_now_or_later( assert(w <= _INHIBIT_WHAT_MAX); assert(!m->action_job); + /* Tell everybody to prepare for shutdown/sleep */ + send_prepare_for(m, w, true); + delayed = m->inhibit_delay_max > 0 && manager_is_inhibited(m, w, INHIBIT_DELAY, NULL, false, false, 0); @@ -1259,13 +1283,10 @@ int bus_manager_shutdown_or_sleep_now_or_later( /* Shutdown is delayed, keep in mind what we * want to do, and start a timeout */ r = delay_shutdown_or_sleep(m, w, unit_name); - else { - bus_manager_log_shutdown(m, w, unit_name); - + else /* Shutdown is not delayed, execute it * immediately */ - r = send_start_unit(m, unit_name, w & INHIBIT_SLEEP, error); - } + r = execute_shutdown_or_sleep(m, w, unit_name, error); return r; } @@ -1302,7 +1323,8 @@ static int bus_manager_do_shutdown_or_sleep( assert(error); assert(_reply); - if (m->action_job || m->delayed_unit) + /* Don't allow multiple jobs being executed at the same time */ + if (m->action_what) return -EALREADY; if (!dbus_message_get_args( @@ -2368,18 +2390,18 @@ DBusHandlerResult bus_message_filter( DBUS_TYPE_STRING, &result, DBUS_TYPE_INVALID)) log_error("Failed to parse JobRemoved message: %s", bus_error_message(&error)); + else if (m->action_job && streq(m->action_job, path)) { - log_info("Action is complete, result is '%s'.", result); - free(m->action_job); - m->action_job = NULL; - if (m->send_resumed_after_action_job) { - _cleanup_dbus_message_unref_ DBusMessage *s = NULL; + log_info("Operation finished."); - s = dbus_message_new_signal("/org/freedesktop/login1", "org.freedesktop.login1.Manager", "Resumed"); - if (s) - dbus_connection_send(m->bus, s, NULL); - } + /* Tell people that they now may take a lock again */ + send_prepare_for(m, m->action_what, false); + + free(m->action_job); + m->action_job = NULL; + m->action_unit = NULL; + m->action_what = 0; } } @@ -2411,38 +2433,32 @@ finish: } int manager_dispatch_delayed(Manager *manager) { - const char *unit_name; DBusError error; - bool delayed; int r; assert(manager); - if (!manager->delayed_unit) + if (!manager->action_unit || manager->action_job) return 0; /* Continue delay? */ - delayed = - manager->delayed_timestamp + manager->inhibit_delay_max > now(CLOCK_MONOTONIC) && - manager_is_inhibited(manager, manager->delayed_what, INHIBIT_DELAY, NULL, false, false, 0); - if (delayed) - return 0; + if (manager_is_inhibited(manager, manager->action_what, INHIBIT_DELAY, NULL, false, false, 0)) { - bus_manager_log_shutdown(manager, manager->delayed_what, manager->delayed_unit); - - /* Tell people about it */ - send_prepare_for(manager, manager->delayed_what, false); + if (manager->action_timestamp + manager->inhibit_delay_max > now(CLOCK_MONOTONIC)) + return 0; - /* Reset delay data */ - unit_name = manager->delayed_unit; - manager->delayed_unit = NULL; + log_info("Delay lock is active but inhibitor timeout is reached."); + } - /* Actually do the shutdown */ + /* Actually do the operation */ dbus_error_init(&error); - r = send_start_unit(manager, unit_name, manager->delayed_what & INHIBIT_SLEEP, &error); + r = execute_shutdown_or_sleep(manager, manager->action_what, manager->action_unit, &error); if (r < 0) { log_warning("Failed to send delayed message: %s", bus_error_message_or_strerror(&error, -r)); dbus_error_free(&error); + + manager->action_unit = NULL; + manager->action_what = 0; return r; } diff --git a/src/login/logind.c b/src/login/logind.c index ed0b7489b9..be793e2a93 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -1628,11 +1628,11 @@ int manager_run(Manager *m) { manager_gc(m, true); - if (m->delayed_unit) { + if (m->action_what != 0) { usec_t x, y; x = now(CLOCK_MONOTONIC); - y = m->delayed_timestamp + m->inhibit_delay_max; + y = m->action_timestamp + m->inhibit_delay_max; msec = x >= y ? 0 : (int) ((y - x) / USEC_PER_MSEC); } diff --git a/src/login/logind.h b/src/login/logind.h index 7a0f8f25b0..904dc20467 100644 --- a/src/login/logind.h +++ b/src/login/logind.h @@ -91,17 +91,21 @@ struct Manager { Hashmap *inhibitor_fds; Hashmap *button_fds; - /* If a shutdown was delayed due to a inhibitor this contains - the unit name we are supposed to start after the delay is - over */ - const char *delayed_unit; - InhibitWhat delayed_what; - usec_t delayed_timestamp; - usec_t inhibit_delay_max; - char* action_job; - bool send_resumed_after_action_job; + /* If an action is currently being executed or is delayed, + * this is != 0 and encodes what is being done */ + InhibitWhat action_what; + + /* If a shutdown/suspend was delayed due to a inhibitor this + contains the unit name we are supposed to start after the + delay is over */ + const char *action_unit; + + /* If a shutdown/suspend is currently executed, then this is + * the job of it */ + char *action_job; + usec_t action_timestamp; int idle_action_fd; /* the timer_fd */ usec_t idle_action_usec; -- cgit v1.2.1 From e985665d2d226cb42b52bfcad6fd5b1586ad57d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 25 Jan 2013 10:33:07 -0500 Subject: Add _cleanup_pclose_ and fix mismatching pipe close opened by popen() Based-on-patch-by: Thomas Jarosch cppcheck reported: [src/bootchart/svg.c:791]: (error) Mismatching allocation and deallocation: f --- Makefile.am | 3 +++ src/bootchart/svg.c | 6 +++--- src/shared/macro.h | 1 + src/shared/util.c | 5 +++++ src/shared/util.h | 1 + 5 files changed, 13 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index be3fa71409..f362b53728 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3084,6 +3084,9 @@ systemd_bootchart_SOURCES = \ src/bootchart/log.c \ src/bootchart/svg.c +systemd_bootchart_LDADD = \ + libsystemd-shared.la + MANPAGES += \ man/systemd-bootchart.1 \ man/bootchart.conf.5 diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index 156918a94b..b9636e20a3 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -22,6 +22,8 @@ #include #include "bootchart.h" +#include "util.h" +#include "macro.h" #define time_to_graph(t) ((t) * scale_x) @@ -702,7 +704,7 @@ static int ps_filter(struct ps_struct *ps) static void svg_do_initcall(int count_only) { - FILE *f; + FILE _cleanup_pclose_ *f = NULL; double t; char func[256]; int ret; @@ -787,8 +789,6 @@ static void svg_do_initcall(int count_only) kcount++; } - - fclose(f); } diff --git a/src/shared/macro.h b/src/shared/macro.h index 29d91392f8..b307dedaa8 100644 --- a/src/shared/macro.h +++ b/src/shared/macro.h @@ -196,6 +196,7 @@ static inline size_t IOVEC_INCREMENT(struct iovec *i, unsigned n, size_t k) { #define _cleanup_free_ __attribute__((cleanup(freep))) #define _cleanup_fclose_ __attribute__((cleanup(fclosep))) +#define _cleanup_pclose_ __attribute__((cleanup(pclosep))) #define _cleanup_close_ __attribute__((cleanup(closep))) #define _cleanup_closedir_ __attribute__((cleanup(closedirp))) #define _cleanup_umask_ __attribute__((cleanup(umaskp))) diff --git a/src/shared/util.c b/src/shared/util.c index 490399c910..969ef2bb90 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5553,6 +5553,11 @@ void fclosep(FILE **f) { fclose(*f); } +void pclosep(FILE **f) { + if (*f) + pclose(*f); +} + void closep(int *fd) { if (*fd >= 0) close_nointr_nofail(*fd); diff --git a/src/shared/util.h b/src/shared/util.h index 202e15d481..223617c3ff 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -522,6 +522,7 @@ int get_home_dir(char **ret); void freep(void *p); void fclosep(FILE **f); +void pclosep(FILE **f); void closep(int *fd); void closedirp(DIR **d); void umaskp(mode_t *u); -- cgit v1.2.1 From 78a92a5a2306709e4587e332728a76901323ade9 Mon Sep 17 00:00:00 2001 From: Michal Sekletar Date: Fri, 18 Jan 2013 16:13:08 +0100 Subject: tmpfiles: introduce type X Type X will exclude path itself from clean-up. However, if the path is a directory systemd-tmpfiles will clean-up its content. In contrast to type x, where path is ignored completely, type X needs some Age parameter. In order to determine Age parameter, we will look for config entries of type d or D and pick the best match. Best match is either exact match or longest prefix match. --- man/tmpfiles.d.xml | 15 ++++ src/tmpfiles/tmpfiles.c | 192 +++++++++++++++++++++++++++++++----------------- 2 files changed, 138 insertions(+), 69 deletions(-) diff --git a/man/tmpfiles.d.xml b/man/tmpfiles.d.xml index 785264e3cf..519f9bc618 100644 --- a/man/tmpfiles.d.xml +++ b/man/tmpfiles.d.xml @@ -165,6 +165,21 @@ L /tmp/foobar - - - - /dev/null names. + + X + Ignore a path + during cleanup. Use this type + to prevent path removal as + controlled with the Age parameter. + Note that if path is a directory, + content of a directory is not + excluded from clean-up, only + directory itself. Lines of this + type accept shell-style globs + in place of normal path + names. + + r Remove a file diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index d8fb07e59a..c2023f5454 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -70,6 +70,7 @@ typedef enum ItemType { /* These ones take globs */ IGNORE_PATH = 'x', + IGNORE_DIRECTORY_PATH = 'X', REMOVE_PATH = 'r', RECURSIVE_REMOVE_PATH = 'R', RELABEL_PATH = 'z', @@ -119,7 +120,7 @@ static const char * const conf_file_dirs[] = { #define MAX_DEPTH 256 static bool needs_glob(ItemType t) { - return t == IGNORE_PATH || t == REMOVE_PATH || t == RECURSIVE_REMOVE_PATH || t == RELABEL_PATH || t == RECURSIVE_RELABEL_PATH; + return t == IGNORE_PATH || t == IGNORE_DIRECTORY_PATH || t == REMOVE_PATH || t == RECURSIVE_REMOVE_PATH || t == RELABEL_PATH || t == RECURSIVE_RELABEL_PATH; } static struct Item* find_glob(Hashmap *h, const char *match) { @@ -218,6 +219,7 @@ static bool unix_socket_alive(const char *fn) { } static int dir_cleanup( + Item *i, const char *p, DIR *d, const struct stat *ds, @@ -297,7 +299,7 @@ static int dir_cleanup( continue; } - q = dir_cleanup(sub_path, sub_dir, &s, cutoff, rootdev, false, maxdepth-1, false); + q = dir_cleanup(i, sub_path, sub_dir, &s, cutoff, rootdev, false, maxdepth-1, false); closedir(sub_dir); if (q < 0) @@ -320,12 +322,14 @@ static int dir_cleanup( if (age >= cutoff) continue; - log_debug("rmdir '%s'\n", sub_path); + if (!i->type == IGNORE_DIRECTORY_PATH || !streq(dent->d_name, p)) { + log_debug("rmdir '%s'\n", sub_path); - if (unlinkat(dirfd(d), dent->d_name, AT_REMOVEDIR) < 0) { - if (errno != ENOENT && errno != ENOTEMPTY) { - log_error("rmdir(%s): %m", sub_path); - r = -errno; + if (unlinkat(dirfd(d), dent->d_name, AT_REMOVEDIR) < 0) { + if (errno != ENOENT && errno != ENOTEMPTY) { + log_error("rmdir(%s): %m", sub_path); + r = -errno; + } } } @@ -395,68 +399,6 @@ finish: return r; } -static int clean_item(Item *i) { - DIR *d; - struct stat s, ps; - bool mountpoint; - int r; - usec_t cutoff, n; - - assert(i); - - if (i->type != CREATE_DIRECTORY && - i->type != TRUNCATE_DIRECTORY && - i->type != IGNORE_PATH) - return 0; - - if (!i->age_set) - return 0; - - n = now(CLOCK_REALTIME); - if (n < i->age) - return 0; - - cutoff = n - i->age; - - d = opendir(i->path); - if (!d) { - if (errno == ENOENT) - return 0; - - log_error("Failed to open directory %s: %m", i->path); - return -errno; - } - - if (fstat(dirfd(d), &s) < 0) { - log_error("stat(%s) failed: %m", i->path); - r = -errno; - goto finish; - } - - if (!S_ISDIR(s.st_mode)) { - log_error("%s is not a directory.", i->path); - r = -ENOTDIR; - goto finish; - } - - if (fstatat(dirfd(d), "..", &ps, AT_SYMLINK_NOFOLLOW) != 0) { - log_error("stat(%s/..) failed: %m", i->path); - r = -errno; - goto finish; - } - - mountpoint = s.st_dev != ps.st_dev || - (s.st_dev == ps.st_dev && s.st_ino == ps.st_ino); - - r = dir_cleanup(i->path, d, &s, cutoff, s.st_dev, mountpoint, MAX_DEPTH, i->keep_first_level); - -finish: - if (d) - closedir(d); - - return r; -} - static int item_set_perms(Item *i, const char *path) { /* not using i->path directly because it may be a glob */ if (i->mode_set) @@ -669,6 +611,7 @@ static int create_item(Item *i) { switch (i->type) { case IGNORE_PATH: + case IGNORE_DIRECTORY_PATH: case REMOVE_PATH: case RECURSIVE_REMOVE_PATH: return 0; @@ -852,6 +795,7 @@ static int remove_item_instance(Item *i, const char *instance) { case CREATE_BLOCK_DEVICE: case CREATE_CHAR_DEVICE: case IGNORE_PATH: + case IGNORE_DIRECTORY_PATH: case RELABEL_PATH: case RECURSIVE_RELABEL_PATH: case WRITE_FILE: @@ -896,6 +840,7 @@ static int remove_item(Item *i) { case CREATE_CHAR_DEVICE: case CREATE_BLOCK_DEVICE: case IGNORE_PATH: + case IGNORE_DIRECTORY_PATH: case RELABEL_PATH: case RECURSIVE_RELABEL_PATH: case WRITE_FILE: @@ -911,6 +856,84 @@ static int remove_item(Item *i) { return r; } +static int clean_item_instance(Item *i, const char* instance) { + DIR *d; + struct stat s, ps; + bool mountpoint; + int r; + usec_t cutoff, n; + + assert(i); + + if (!i->age_set) + return 0; + + n = now(CLOCK_REALTIME); + if (n < i->age) + return 0; + + cutoff = n - i->age; + + d = opendir(instance); + if (!d) { + if (errno == ENOENT || errno == ENOTDIR) + return 0; + + log_error("Failed to open directory %s: %m", i->path); + return -errno; + } + + if (fstat(dirfd(d), &s) < 0) { + log_error("stat(%s) failed: %m", i->path); + r = -errno; + goto finish; + } + + if (!S_ISDIR(s.st_mode)) { + log_error("%s is not a directory.", i->path); + r = -ENOTDIR; + goto finish; + } + + if (fstatat(dirfd(d), "..", &ps, AT_SYMLINK_NOFOLLOW) != 0) { + log_error("stat(%s/..) failed: %m", i->path); + r = -errno; + goto finish; + } + + mountpoint = s.st_dev != ps.st_dev || + (s.st_dev == ps.st_dev && s.st_ino == ps.st_ino); + + r = dir_cleanup(i, instance, d, &s, cutoff, s.st_dev, mountpoint, MAX_DEPTH, i->keep_first_level); + +finish: + if (d) + closedir(d); + + return r; +} + +static int clean_item(Item *i) { + int r = 0; + + assert(i); + + switch (i->type) { + case CREATE_DIRECTORY: + case TRUNCATE_DIRECTORY: + case IGNORE_PATH: + clean_item_instance(i, i->path); + break; + case IGNORE_DIRECTORY_PATH: + r = glob_item(i, clean_item_instance); + break; + default: + break; + } + + return r; +} + static int process_item(Item *i) { int r, q, p; @@ -1030,6 +1053,7 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { case TRUNCATE_DIRECTORY: case CREATE_FIFO: case IGNORE_PATH: + case IGNORE_DIRECTORY_PATH: case REMOVE_PATH: case RECURSIVE_REMOVE_PATH: case RELABEL_PATH: @@ -1266,6 +1290,8 @@ static int read_config_file(const char *fn, bool ignore_enoent) { FILE *f; unsigned v = 0; int r = 0; + Iterator iterator; + Item *i; assert(fn); @@ -1298,6 +1324,34 @@ static int read_config_file(const char *fn, bool ignore_enoent) { r = k; } + /* we have to determine age parameter for each entry of type X */ + HASHMAP_FOREACH(i, globs, iterator) { + Iterator iter; + Item *j, *candidate_item = NULL; + + if (i->type != IGNORE_DIRECTORY_PATH) + continue; + + HASHMAP_FOREACH(j, items, iter) { + if (j->type != CREATE_DIRECTORY && j->type != TRUNCATE_DIRECTORY) + continue; + + if (path_equal(j->path, i->path)) { + candidate_item = j; + break; + } + + if ((!candidate_item && path_startswith(i->path, j->path)) || + (candidate_item && path_startswith(j->path, candidate_item->path) && (fnmatch(i->path, j->path, FNM_PATHNAME | FNM_PERIOD) == 0))) + candidate_item = j; + } + + if (candidate_item) { + i->age = candidate_item->age; + i->age_set = true; + } + } + if (ferror(f)) { log_error("Failed to read from file %s: %m", fn); if (r == 0) -- cgit v1.2.1 From e4ac004c12f9f45e8f2a222879dbf59a86dfcf7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 25 Jan 2013 17:42:59 +0100 Subject: tmpfiles: exclude /tmp/systemd-private-* from cleanup See http://thread.gmane.org/gmane.comp.sysutils.systemd.devel/6874/focus=6891 Should fix https://bugzilla.redhat.com/show_bug.cgi?id=866693 --- tmpfiles.d/tmp.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tmpfiles.d/tmp.conf b/tmpfiles.d/tmp.conf index 1284fc4700..031770c04f 100644 --- a/tmpfiles.d/tmp.conf +++ b/tmpfiles.d/tmp.conf @@ -10,3 +10,6 @@ # Clear tmp directories separately, to make them easier to override d /tmp 1777 root root 10d d /var/tmp 1777 root root 30d + +# Exclude namespace mountpoints created with PrivateTmp=yes +X /tmp/systemd-private-* -- cgit v1.2.1 From b44be3ecf6326c27aa2c6c6d1fe34e22e22592a0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 25 Jan 2013 21:11:59 +0100 Subject: reorganize TODO --- TODO | 371 ++++++++++++++++++++++++++----------------------------------------- 1 file changed, 142 insertions(+), 229 deletions(-) diff --git a/TODO b/TODO index ce0e6a7e09..239781a343 100644 --- a/TODO +++ b/TODO @@ -14,96 +14,152 @@ Bugfixes: * properly handle .mount unit state tracking when two mount points are stacked one on top of another on the exact same mount point. Fedora 19: + * Retest multi-seat * create /var/log/journal/ -Features: - -* add configure switch for enabling/disabling efi stuff - -* introduce ExecCondition= in services - -* unify killing logic of service, socket, mount, swap units - * logind: document new PrepareForSleep(false) semantics and UnlockSessions call in wiki -* if we have systemd-analyze in C "systemctl dot" should move there too - -* fsck hookup for the ESP mount is missing - * external: maybe it is time to patch procps so that "ps" links to libsystemd-logind to print a pretty service name, seat name, session name in its output. Currently it only shows cgroup membership, but that's sometimes kinda hard to parse for a human. -* write man page for efi boot generator - -* maybe not install getty@tty1.service symlink in /etc but in /usr? - -* re-enable "make check" for gtk-doc (broken for unknown reason) - -* "systemctl disable" on a static unit prints no message and does - nothing. "systemctl enable" does nothing, and gives a bad message - about it. Should fix both to print nice actionable messages. - -* fstab: add new mount option x-systemd-after=/foobar/waldo to allow manual dependencies to other mount points - https://bugzilla.redhat.com/show_bug.cgi?id=812826 - * cgroup attrs: - - don't filter out duplicate settings + - don't unconditionally filter out duplicate settings - support high-level cgroup setting syntax in systemctl. Example: "systemctl set-cgroup-attr MemoryLimit 5K" - support writte string mapping even for non-high-level settings - add man page for systemctl commands - make sure we work fine with multi-line strings -* print a nicer explanation if people use variable/specifier expansion in ExecStart= for the first word - * kernel cmdline switch to turn off predictable network interface names -* mount: turn dependency information from /proc/self/mountinfo into dependency information between systemd units. +* journal is not closed properly at shutdown when run in a container? -* logind: optionally, ignore idle-hint logic for autosuspend, block suspend as long as a session is around +* introduce new "journal" group in place of adm? -* exec: when deinitializating a tty device fix the perms and group, too, not only when initializing. Set access mode/gid to 0620/tty. +Features: -* DeviceAllow/DeviceDeny: disallow everything by default, but whitelist /dev/zero, /dev/null and friends +* introduce ExecCondition= in services -* service: watchdog logic: for testing purposes allow ping, but do not require pong +* unify killing logic of service, socket, mount, swap units -* journald: when dropping msgs due to ratelimit make sure to write - "dropped %u messages" not only when we are about to print the next - message that works, but alraedy after a short tiemout +* if we have systemd-analyze in C "systemctl dot" should move there too -* journald: also get thread ID from client, plus thread name +* EFI: + - fsck hookup for the ESP mount is missing + - write man page for efi boot generator + - add configure switch for enabling/disabling efi stuff + - honor language efi variables for default language selection (if there are any?) + - honor timezone efi variables for default timezone selection (if there are any?) + - introduce bootctl (backed by systemd-bootd) to control temporary and persistent default boot goal plus efi variables -* check if we can make journalctl by default use --follow mode inside of less if called without args? +* maybe not install getty@tty1.service symlink in /etc but in /usr? -* Add a verbose mode to "systemctl start" and friends that explains what is being done or not done +* re-enable "make check" for gtk-doc (broken for unknown reason) -* journal is not closed properly at shutdown when run in a container? +* fstab: add new mount option x-systemd-after=/foobar/waldo to allow manual dependencies to other mount points + https://bugzilla.redhat.com/show_bug.cgi?id=812826 -* journal: when waiting for journal additions in the client always sleep at least 1s or so, in order to minimize wakeups +* print a nicer explanation if people use variable/specifier expansion in ExecStart= for the first word -* When shutdown.target is queued begin with an asynchronous sync()? +* mount: turn dependency information from /proc/self/mountinfo into dependency information between systemd units. -* add API to close/reopen/get fd for journal client fd in libsystemd-journal. +* logind: + - logind: optionally, ignore idle-hint logic for autosuspend, block suspend as long as a session is around + - When we update the kernel all kind of hibernation should be prohibited until shutdown/reboot + - logind: wakelock/opportunistic suspend support + - Add pretty name for seats in logind + - logind: allow showing logout dialog from system? + - logind: spawn user@..service on login + - logind: non-local X11 server handling + - logind: add equivalent to sd_pid_get_owner_uid() to the D-Bus API + - pam_systemd: try to get old session id from cgroup, if audit sessionid cannot be determined + - pam: when leaving a session explicitly exclude the ReleaseSession() caller process from the killing spree -* maybe add API to send pairs of iovecs via sd_journal_send +* exec: when deinitializating a tty device fix the perms and group, too, not only when initializing. Set access mode/gid to 0620/tty. -* fallback to /dev/log based logging in libsystemd-journal, if we can't log natively? +* DeviceAllow/DeviceDeny: disallow everything by default, but whitelist /dev/zero, /dev/null and friends -* declare the local journal protocol stable in the wiki interface chart +* service: watchdog logic: for testing purposes allow ping, but do not require pong -* journal: reuse XZ context +* journal: + - journald: also get thread ID from client, plus thread name + - journal: when waiting for journal additions in the client always sleep at least 1s or so, in order to minimize wakeups + - add API to close/reopen/get fd for journal client fd in libsystemd-journal. + - fallback to /dev/log based logging in libsystemd-journal, if we can't log natively? + - declare the local journal protocol stable in the wiki interface chart + - journal: reuse XZ context + - sd-journal: speed up sd_journal_get_data() with transparent hash table in bg + - journald: when dropping msgs due to ratelimit make sure to write + "dropped %u messages" not only when we are about to print the next + message that works, but alraedy after a short tiemout + - check if we can make journalctl by default use --follow mode inside of less if called without args? + - maybe add API to send pairs of iovecs via sd_journal_send + - journal: when writing journal auto-rotate if time jumps backwards + - gatewayd: should run under its own UID + - journal: add a setgid "adm" utility to invoke from libsystemd-journal, which passes fds via STDOUT and does PK access + - journactl: support negative filtering, i.e. FOOBAR!="waldo", + and !FOOBAR for events without FOOBAR. + - journal: when rotating, copy over old acls/access mode + - journal: document why we do not give ownership to journal files to the user that created them but use FS ACLs for that + - journal: send out marker messages every now and then, and immediately sync with fdatasync() afterwards, in order to have hourly guaranteed syncs. + - journal: when we haven't written anything in a while, sync to disk and mark file as offline, in order to be more often than not in a clean state + - journal-send.c, log.c: when the log socket is clogged, and we drop, count this and write a message about this when it gets unclogged again. + - journal: find a way to allow dropping history early, based on priority, other rules + - journal: When used on NFS, check payload hashes + - journal: When used on NFS make sure wake up sd_journal_wait() every 2s, to handle missing inotify + - document that people can use file system ACLs to manage access to journal files, with example + - Introduce journalctl -b to show journal messages of a previous boot + - journald: check whether it is OK if the client can still modify delivered journal entries + - journal live copy, based on libneon (client) and libmicrohttpd + - journald: add kernel cmdline option to disable ratelimiting for debug purposes + - refuse taking lower-case variable names in sd_journal_send() and friends. + - journald: we currently rotate only after MaxUse+MaxFilesize has been reached. + - journal: deal nicely with byte-by-byte copied files, especially regards header + - journalctl: show multiline log messages sanely, expand tabs, and show all valid utf8 messages + - journal: store euid in journal if it differs from uid + - journal: sanely deal with entries which are larger than the individual file size, but where the components would fit + +* document: + - document unit_name_mangle() + - document that deps in [Unit] sections ignore Alias= fileds in + [Install] units of other units, unless those units are disabled + - man: clarify that time-sync.target is not only sysv compat but also useful otherwise. Same for similar targets + - Document word splitting syntax for ExecStart= and friends + - document that units from /etc override those from /usr and /run + - document the exit codes when services fail before they are exec()ed + - document that %% can be used to write % in a string that is specifier extended + - document that service reload may be implemented as service reexec + +* systemctl: + - systemctl list-jobs - show dependencies + - add systemctl switch to dump transaction without executing it + - Add a verbose mode to "systemctl start" and friends that explains what is being done or not done + - "systemctl disable" on a static unit prints no message and does + nothing. "systemctl enable" does nothing, and gives a bad message + about it. Should fix both to print nice actionable messages. + - print nice message from systemctl --failed if there are no entries shown, and hook that into ExecStartPre of rescue.service/emergency.service + - add new command to systemctl: "systemctl system-reexec" which reexecs as many daemons as virtually possible + - systemctl enable: improve the success messages (i.e. more human readable, less shell-like) + - systemctl enable: fail if target to alias into doesn't exist? maybe show how many units are enabled afterwards? + - systemctl: "Journal has been rotated since unit was started." message is misleading + - support "systemctl stop foobar@.service" to stop all units matching a certain template + - Something is wrong with symlink handling of "autovt@.service" in "systemctl list-unit-files" -* sd-journal: speed up sd_journal_get_data() with transparent hash table in bg +* When shutdown.target is queued begin with an asynchronous sync()? * introduce ntp.service (or suchlike) as symlink that is used to arbitrate between various NTP implementations -* timer units should get the ability to trigger when: - - CLOCK_REALTIME makes jumps (TFD_TIMER_CANCEL_ON_SET) - - DST changes +* deal with sendmail/postfix exclusivity + +* timer units: + - configurable jitter for timer events + - timer events with system resume + - timer units should get the ability to trigger when: + o CLOCK_REALTIME makes jumps (TFD_TIMER_CANCEL_ON_SET) + o DST changes * update the kernel's TZ (sys_tz) when DST changes @@ -114,8 +170,6 @@ Features: mode, it will never touch the RTC if the no reliable time source is active or the user did not request anything like it. -* When we update the kernel all kind of hibernation should be prohibited until shutdown/reboot - * hwdb: - implement conditional properties (dmi matches) - hwdb --filter=ID_DRIVE_* @@ -124,7 +178,9 @@ Features: output again, so that the emergency mode isn't totally surprising. Also, terminate plymouth. -* localectl: add listing support for X11 keymaps, by parsing /usr/share/X11/xkb/rules/xorg.lst +* localed: + - localectl: add listing support for X11 keymaps, by parsing /usr/share/X11/xkb/rules/xorg.lst + - localectl: support new converted x11→console keymaps * libunwind support for coredump pattern hook, and includes this in the message for coredumps. After all, libunwind is now capable to @@ -135,62 +191,23 @@ Features: * figure out relation of --all and --full in the various tools -* journal: when writing journal auto-rotate if time jumps backwards - -* introduce new "journal" group in place of adm? introduce groups for the various mini daemons? - -* journal: add a setgid "adm" utility to invoke from libsystemd-journal, which passes fds via STDOUT and does PK access - -* journactl: support negative filtering, i.e. FOOBAR!="waldo", - and !FOOBAR for events without FOOBAR. - -* print nice message from systemctl --failed if there are no entries shown, and hook that into ExecStartPre of rescue.service/emergency.service - * add libsystemd-password or so to query passwords during boot using the password agent logic -* journal: when rotating, copy over old acls/access mode - -* journal: document why we do not give ownership to journal files to the user that created them but use FS ACLs for that - -* journal: send out marker messages every now and then, and immediately sync with fdatasync() afterwards, in order to have hourly guaranteed syncs. - -* journal: when we haven't written anything in a while, sync to disk and mark file as offline, in order to be more often than not in a clean state - -* journal-send.c, log.c: when the log socket is clogged, and we drop, count this and write a message about this when it gets unclogged again. - * If we show an error about a unit (such as not showing up) and it has no Description string, then show a description string generated form the reverse of unit_name_mangle(). * fedup: add --unit to systemctl switch-root somehow * fedup: don't delete initrd on switch-root * fedup: generator -* journal: find a way to allow dropping history early, based on priority, other rules - -* journal: When used on NFS, check payload hashes - -* journal: When used on NFS make sure wake up sd_journal_wait() every 2s, to handle missing inotify - -* document that people can use file system ACLs to manage access to journal files, with example - -* timedated: export boolean that clarifies whether NTP is even available - -* timedated: refuse time changes when NTP is on +* timedated: + - timedated: export boolean that clarifies whether NTP is even available + - timedated: refuse time changes when NTP is on * clean up date formatting and parsing so that all absolute/relative timestamps we format can also be parsed -* document unit_name_mangle() - -* add new command to systemctl: "systemctl system-reexec" which reexecs as many daemons as virtually possible - * introduce generic AUGMENT_PID=, AUGMENT_DEVICE= fields -* deal with sendmail/postfix exclusivity - -* systemctl enable: improve the success messages (i.e. more human readable, less shell-like) - -* systemctl enable: fail if target to alias into doesn't exist? maybe show how many units are enabled afterwards? - -* on shutdown: move utmp, wall, audit logic all into PID 1 itself, get rid of systemd-update-utmp-runlevel +* on shutdown: move utmp, wall, audit logic all into PID 1 (or logind?), get rid of systemd-update-utmp-runlevel * add "provisioning" instructions to setup an empty /etc + /var - used to setup a new container from a shared /usr @@ -204,8 +221,6 @@ Features: * high level net_prio setting in execution context -* Introduce journalctl -b to show journal messages of a previous boot - * hostnamed: before returning information from /etc/machine-info.conf check the modification data and reread. Similar for localed, ... * currently x-systemd.timeout is lost in the initrd, since crypttab is copied into dracut, but fstab isn't @@ -214,27 +229,26 @@ Features: * refuse boot if /etc/machine-id is not useful (or set taint?) -* nspawn: consider changing users for -u with su, so that NSS resolving works correctly - -* nspawn: implement personality changes a la linux32(8) - -* cryptsetup-generator: warn if the password files are world-readable - -* cryptsetup-generator: add RequiresMountsFor= to cryptseup service files referencing a file, similar for devices - -* cryptsetup-generator: allow specification of passwords in crypttab itself - -* document that deps in [Unit] sections ignore Alias= fileds in - [Install] units of other units, unless those units are disabled +* nspawn: + - nspawn: consider changing users for -u with su, so that NSS resolving works correctly + - nspawn: implement personality changes a la linux32(8) + - nspawn: --read-only is not applied recursively to submounts + - nspawn: make use of device cgroup controller by default + - bind mount read-only the cgroup tree higher than nspawn + +* cryptsetup: + - cryptsetup-generator: warn if the password files are world-readable + - cryptsetup-generator: add RequiresMountsFor= to cryptseup service files referencing a file, similar for devices + - cryptsetup-generator: allow specification of passwords in crypttab itself + - move cryptsetup key caching into kernel keyctl? + https://bugs.freedesktop.org/show_bug.cgi?id=54982 + - when key file cannot be found, read it from kbd in cryptsetup * instantiated [Install] for target units https://bugs.freedesktop.org/show_bug.cgi?id=54377 * move debug shell to tty6 and make sure this doesn't break the gettys on tty6 -* move cryptsetup key caching into kernel keyctl? - https://bugs.freedesktop.org/show_bug.cgi?id=54982 - * hw watchdog: optionally try to use the preset watchdog timeout instead of always overriding it https://bugs.freedesktop.org/show_bug.cgi?id=54712 @@ -247,26 +261,14 @@ Features: * come up with a nice way to write queue/read_ahead_kb for a block device without interfering with readahead -* journald: add kernel cmdline option to disable ratelimiting for debug purposes - * move PID 1 segfaults to /var/lib/systemd/coredump? -* Document word splitting syntax for ExecStart= and friends - * create /sbin/init symlinks from the build system * Query Paul Moore about relabelling socket fds while they are open -* journald: check whether it is OK if the client can still modify delivered journal entries - -* journal live copy, based on libneon (client) and libmicrohttpd - -* system-wide seccomp filter - * system.conf should have controls for cgroups -* bind mount read-only the cgroup tree higher than nspawn - * allow writing multiple conditions in unit files on one line * explore multiple service instances per listening socket idea @@ -275,8 +277,6 @@ Features: * shutdown: don't read-only mount anything when running in container -* nspawn: --read-only is not applied recursively to submounts - * MountFlags=shared acts as MountFlags=slave right now. * ReadOnlyDirectories= is not applied recursively to submounts @@ -288,8 +288,6 @@ Features: when done. That means clients don't get a successful method reply, but much rather a disconnect on success. -* document that service reload may be implemented as service reexec - * remember which condition failed for services, not just the fact that something failed * use opterr = 0 for all getopt tools @@ -298,75 +296,40 @@ Features: * allow services with no ExecStart= but with an ExecStop= -* add proper journal support to "systemctl --user status ..." - -* add _SYSTEMD_USER_UNIT= field to journal entries - * dracut-shutdown needs to be ordered before unmounting /boot * initialize the hostname from the fs label of /, if /etc/hostname does not exist? * rename "userspace" to "core-os" -* systemctl: "Journal has been rotated since unit was started." message is misleading - -* syscall filter: add knowledge about compat syscalls - -* syscall filter: don't enforce no new privs? - -* syscall filter: option to return EPERM rather than SIGSYS? - -* syscall filter: port to libseccomp - -* logind: wakelock/opportunistic suspend support - -* systemd-analyze post-boot is broken for initrd +* syscall filter: + - syscall filter: add knowledge about compat syscalls + - syscall filter: don't enforce no new privs? + - syscall filter: option to return EPERM rather than SIGSYS? + - syscall filter: port to libseccomp + - system-wide seccomp filter * systemd-analyze: data collection tools should be lightweight (few dependencies); data analysis tools can be heavyweight -* man: clarify that time-sync.target is not only sysv compat but also useful otherwise. Same for similar targets - * .device aliases need to be implemented with the "following" logic, probably. -* refuse taking lower-case variable names in sd_journal_send() and friends. - * load-fragment: when loading a unit file via a chain of symlinks verify that it isn't masked via any of the names traversed. -* journald: we currently rotate only after MaxUse+MaxFilesize has been reached. - * introduce Type=pid-file * maybe allow services with ExecStop= set, but no ExecStart=? -* efi: - - honor language efi variables for default language selection (if there are any?) - - honor timezone efi variables for default timezone selection (if there are any?) - - introduce bootctl (backed by systemd-bootd) to control temporary and persistent default boot goal plus efi variables - * change Requires=basic.target to RequisiteOverride=basic.target * support rd.luks.allow-discards= kernel cmdline params in cryptsetup generator -* nspawn: make use of device cgroup controller by default - * drop accountsservice's StandardOutput=syslog and Type=dbus fields * when breaking cycles drop sysv services first, then services from /run, then from /etc, then from /usr -* readahead: when bumping /sys readahead variable save mtime and compare later to detect changes - * move passno parsing to fstab generator -* improve !/proc/*/loginuid situation: make /proc/*/loginuid less dependent on CONFIG_AUDIT, - or use the users cgroup information when /proc/*/loginuid is not available. - -* pam_systemd: try to get old session id from cgroup, if audit sessionid cannot be determined - -* pam: when leaving a session explicitly exclude the ReleaseSession() caller process from the killing spree - -* readahead: make use of EXT4_IOC_MOVE_EXT, as used by http://e4rat.sourceforge.net/ - * automount: implement expire: - set superblock timeout AUTOFS_DEV_IOCTL_TIMEOUT_CMD - periodically run AUTOFS_DEV_IOCTL_EXPIRE_CMD @@ -380,14 +343,8 @@ Features: * services which create their own subcgroups break cgroup-empty notification (needs to be fixed in the kernel) -* don't delete /tmp/systemd-namespace-* before a process is gone down - * ExecOnFailure=/usr/bin/foo -* fix utmp for console logins in containers - -* Add pretty name for seats in logind - * ConditionSecurity= should learn about IMA and SMACK * udev: @@ -407,18 +364,10 @@ Features: * introduce mix of BindTo and Requisite -* journalctl: show multiline log messages sanely, expand tabs, and show all valid utf8 messages - * add DeleteSocketsOnStop=yes|no option to socket units -* journal: store euid in journal if it differs from uid - * There's currently no way to cancel fsck (used to be possible via C-c or c on the console) -* journal: sanely deal with entries which are larger than the individual file size, but where the components would fit - -* add command to systemctl to plot dependency graph as tree (see rhbz 795365) - * add option to sockets to avoid activation. Instead just drop packets/connections, see http://cyberelk.net/tim/2012/02/15/portreserve-systemd-solution/ * default unix qlen is too small (10). bump sysctl? add sockopt? @@ -429,26 +378,12 @@ Features: * dbus: move dbus to early boot -* logind: add equivalent to sd_pid_get_owner_uid() to the D-Bus API - -* journal: deal nicely with byte-by-byte copied files, especially regards header - -* journal: local deserializer of export mode, http server - -* document the exit codes when services fail before they are exec()ed - * save coredump in Windows/Mozilla minidump format * support crash reporting operation modes (https://live.gnome.org/GnomeOS/Design/Whiteboards/ProblemReporting) * clean up session cgroups that remain after logout (think sshd), but eventually run empty -* support "systemctl stop foobar@.service" to stop all units matching a certain template - -* logind: allow showing logout dialog from system - -* document that %% can be used to write % in a string that is specifier extended - * when an instanced service exits, remove its parent cgroup too if possible. * default to actual 32bit PIDs, via /proc/sys/kernel/pid_max @@ -456,15 +391,11 @@ Features: * be able to specify a forced restart of service A where service B depends on, in case B needs to be auto-respawned? -* Something is wrong with symlink handling of "autovt@.service" in "systemctl list-unit-files" - * when a bus name of a service disappears from the bus make sure to queue further activation requests -* something like ConditionExec= or ExecCondition= without failure state - * tmpfiles: apply "x" on "D" too (see patch from William Douglas) -* don't set $HOME in services unless requested +* for services: don't set $HOME in services unless requested * hide PAM/TCPWrap options in fragment parser when compile time disabled @@ -475,17 +406,11 @@ Features: * move PAM code into its own binary -* logind: spawn user@..service on login - -* logind: non-local X11 server handling - * implement Register= switch in .socket units to enable registration in Avahi, RPC and other socket registration services. * make sure systemd-ask-password-wall does not shutdown systemd-ask-password-console too early -* readahead: use BTRFS_IOC_DEFRAG_RANGE instead of BTRFS_IOC_DEFRAG ioctl, with START_IO - * support sd_notify() style notification when reload begins (RELOADING=1), reload is finished (READY=1), and add ReloadSignal= then to use in combination * support sd_notify() style notification when shutting down, to make auto-exit bus services work (STOPPING=1) @@ -499,7 +424,12 @@ Features: * and a dbus call to generate target from current state -* drop /.readahead on bigger upgrades with yum +* readahead: + - drop /.readahead on bigger upgrades with yum + - move readahead files into /var (look for them with .path units?) + - readahead: use BTRFS_IOC_DEFRAG_RANGE instead of BTRFS_IOC_DEFRAG ioctl, with START_IO + - readahead: when bumping /sys readahead variable save mtime and compare later to detect changes + - readahead: make use of EXT4_IOC_MOVE_EXT, as used by http://e4rat.sourceforge.net/ * add support for /bin/mount -s @@ -524,14 +454,8 @@ Features: * allow port=0 in .socket units -* move readahead files into /var (look for them with .path units?) - -* teach dbus to activate all services it finds in /etc/systemd/services/org-*.service - * support systemd.mask= on the kernel command line. -* when key file cannot be found, read it from kbd in cryptsetup - * reuse mkdtemp namespace dirs in /tmp? * recreate systemd's D-Bus private socket file on SIGUSR2 @@ -542,14 +466,8 @@ Features: * maybe introduce ExecRestartPre= -* configurable jitter for timer events - -* timer events with system resume - * dot output for --test showing the 'initial transaction' -* writable cgroups dbus properties for live changes - * port over to LISTEN_FDS/LISTEN_PID: - rpcbind (/var/run/rpcbind.sock!) HAVEPATCH - cups HAVEPATCH @@ -563,10 +481,6 @@ Features: * io priority during initialization -* systemctl list-jobs - show dependencies - -* add systemctl switch to dump transaction without executing it - * drop cap bounding set in readahead and other services External: @@ -578,11 +492,10 @@ External: - allow disabling of fd passing when connecting a AF_UNIX connection - allow disabling of UID passing for AUTH EXTERNAL - always pass cred data along each message + - teach dbus to activate all services it finds in /etc/systemd/services/org-*.service * fix alsa mixer restore to not print error when no config is stored -* gnome-shell python script/glxinfo/is-accelerated must die - * make cryptsetup lower --iter-time * patch kernel for xattr support in /dev, /proc/, /sys? -- cgit v1.2.1 From e8a66f4af296dc1dd4879a1401eb42bf7b7aeb01 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 25 Jan 2013 19:49:19 +0100 Subject: test: use non-blocking systemctl calls in testsuite.service "systemctl poweroff" called from testsuite.service will cause this unit itself to stop. To avoid deadlock, the call must not be synchronous. --- test/TEST-01-BASIC/test.sh | 2 +- test/TEST-02-CRYPTSETUP/test.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh index eb6a80a07c..9ab0a6fce9 100755 --- a/test/TEST-01-BASIC/test.sh +++ b/test/TEST-01-BASIC/test.sh @@ -141,7 +141,7 @@ After=multi-user.target [Service] ExecStart=/bin/bash -c 'set -x; systemctl --failed --no-legend --no-pager > /failed ; echo OK > /testok; while : ;do echo "testsuite service waiting for journal to move to /var/log/journal" > /dev/console ; for i in /var/log/journal/*;do [ -d "\$i" ] && echo "\$i" && break 2; done; sleep 1; done; sleep 1; exit 0;' -ExecStopPost=/usr/bin/systemctl poweroff +ExecStopPost=/usr/bin/systemctl poweroff --no-block Type=oneshot EOF mkdir -p $initdir/etc/systemd/system/testsuite.target.wants diff --git a/test/TEST-02-CRYPTSETUP/test.sh b/test/TEST-02-CRYPTSETUP/test.sh index 790dc3074c..a0e4d6580d 100755 --- a/test/TEST-02-CRYPTSETUP/test.sh +++ b/test/TEST-02-CRYPTSETUP/test.sh @@ -140,7 +140,7 @@ After=multi-user.target [Service] ExecStart=/bin/bash -c 'set -x; systemctl --failed --no-legend --no-pager > /failed ; echo OK > /testok; while : ;do systemd-cat echo "testsuite service waiting for /var/log/journal" ; echo "testsuite service waiting for journal to move to /var/log/journal" > /dev/console ; for i in /var/log/journal/*;do [ -d "\$i" ] && echo "\$i" && break 2; done; sleep 1; done; sleep 1; exit 0;' -ExecStopPost=/usr/bin/systemctl poweroff +ExecStopPost=/usr/bin/systemctl poweroff --no-block Type=oneshot EOF mkdir -p $initdir/etc/systemd/system/testsuite.target.wants -- cgit v1.2.1 From c90feab4ff8bc23d88d4f9c67d9652ba189cb51b Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 25 Jan 2013 22:19:19 +0100 Subject: test: factor out testsuite.target, end.service Tests can use the same testsuite.target. Add end.service to call poweroff instead of doing it from ExecStopPost where it may be skipped on failure of ExecStart. --- test/TEST-01-BASIC/test.sh | 14 ++++---------- test/TEST-02-CRYPTSETUP/test.sh | 14 ++++---------- test/end.service | 6 ++++++ test/testsuite.target | 6 ++++++ 4 files changed, 20 insertions(+), 20 deletions(-) create mode 100644 test/end.service create mode 100644 test/testsuite.target diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh index 9ab0a6fce9..7d2e3d4bd7 100755 --- a/test/TEST-01-BASIC/test.sh +++ b/test/TEST-01-BASIC/test.sh @@ -123,15 +123,8 @@ EOF LABEL=systemd / ext3 rw 0 1 EOF - # setup the testsuite target - cat >$initdir/etc/systemd/system/testsuite.target <$initdir/etc/systemd/system/testsuite.service < /failed ; echo OK > /testok; while : ;do echo "testsuite service waiting for journal to move to /var/log/journal" > /dev/console ; for i in /var/log/journal/*;do [ -d "\$i" ] && echo "\$i" && break 2; done; sleep 1; done; sleep 1; exit 0;' -ExecStopPost=/usr/bin/systemctl poweroff --no-block Type=oneshot EOF + mkdir -p $initdir/etc/systemd/system/testsuite.target.wants ln -fs ../testsuite.service $initdir/etc/systemd/system/testsuite.target.wants/testsuite.service + ln -fs ../end.service $initdir/etc/systemd/system/testsuite.target.wants/end.service # make the testsuite the default target ln -fs testsuite.target $initdir/etc/systemd/system/default.target diff --git a/test/TEST-02-CRYPTSETUP/test.sh b/test/TEST-02-CRYPTSETUP/test.sh index a0e4d6580d..e0945313f8 100755 --- a/test/TEST-02-CRYPTSETUP/test.sh +++ b/test/TEST-02-CRYPTSETUP/test.sh @@ -122,15 +122,8 @@ LABEL=systemd / ext3 rw 0 1 /dev/mapper/varcrypt /var ext3 defaults 0 1 EOF - # setup the testsuite target - cat >$initdir/etc/systemd/system/testsuite.target <$initdir/etc/systemd/system/testsuite.service < /failed ; echo OK > /testok; while : ;do systemd-cat echo "testsuite service waiting for /var/log/journal" ; echo "testsuite service waiting for journal to move to /var/log/journal" > /dev/console ; for i in /var/log/journal/*;do [ -d "\$i" ] && echo "\$i" && break 2; done; sleep 1; done; sleep 1; exit 0;' -ExecStopPost=/usr/bin/systemctl poweroff --no-block Type=oneshot EOF + mkdir -p $initdir/etc/systemd/system/testsuite.target.wants ln -fs ../testsuite.service $initdir/etc/systemd/system/testsuite.target.wants/testsuite.service + ln -fs ../end.service $initdir/etc/systemd/system/testsuite.target.wants/end.service # make the testsuite the default target ln -fs testsuite.target $initdir/etc/systemd/system/default.target diff --git a/test/end.service b/test/end.service new file mode 100644 index 0000000000..0f04dfeb20 --- /dev/null +++ b/test/end.service @@ -0,0 +1,6 @@ +[Unit] +Description=End the test +After=testsuite.service + +[Service] +ExecStart=/usr/bin/systemctl poweroff --no-block diff --git a/test/testsuite.target b/test/testsuite.target new file mode 100644 index 0000000000..1a7e5b371a --- /dev/null +++ b/test/testsuite.target @@ -0,0 +1,6 @@ +[Unit] +Description=Testsuite target +Requires=multi-user.target +After=multi-user.target +Conflicts=rescue.target +AllowIsolate=yes -- cgit v1.2.1 From b5da077ddf01546c4a85688624d6957766d6c00c Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 25 Jan 2013 20:10:00 +0100 Subject: test: add test for jobs Add a test case for job merging with --ignore-dependencies. test.sh is copied from TEST-01-*, only lightly modified (this should be refactored better in the future). test-jobs.sh is the core of this test. --- test/TEST-03-JOBS/Makefile | 1 + test/TEST-03-JOBS/test-jobs.sh | 28 +++++ test/TEST-03-JOBS/test.sh | 250 +++++++++++++++++++++++++++++++++++++++++ test/hello-after-sleep.target | 5 + test/hello.service | 5 + test/sleep.service | 6 + 6 files changed, 295 insertions(+) create mode 120000 test/TEST-03-JOBS/Makefile create mode 100755 test/TEST-03-JOBS/test-jobs.sh create mode 100755 test/TEST-03-JOBS/test.sh create mode 100644 test/hello-after-sleep.target create mode 100644 test/hello.service create mode 100644 test/sleep.service diff --git a/test/TEST-03-JOBS/Makefile b/test/TEST-03-JOBS/Makefile new file mode 120000 index 0000000000..e9f93b1104 --- /dev/null +++ b/test/TEST-03-JOBS/Makefile @@ -0,0 +1 @@ +../TEST-01-BASIC/Makefile \ No newline at end of file diff --git a/test/TEST-03-JOBS/test-jobs.sh b/test/TEST-03-JOBS/test-jobs.sh new file mode 100755 index 0000000000..98746c5363 --- /dev/null +++ b/test/TEST-03-JOBS/test-jobs.sh @@ -0,0 +1,28 @@ +#!/bin/bash -x + +# Test merging of a --ignore-dependencies job into a previously +# installed job. + +systemctl start --no-block hello-after-sleep.target +# sleep is now running, hello/start is waiting. Verify that: +systemctl list-jobs > /root/list-jobs.txt +grep 'sleep\.service.*running' /root/list-jobs.txt || exit 1 +grep 'hello\.service.*waiting' /root/list-jobs.txt || exit 1 + +# This is supposed to finish quickly, not wait for sleep to finish. +START_SEC=$(date -u '+%s') +systemctl start --ignore-dependencies hello +END_SEC=$(date -u '+%s') +ELAPSED=$(($END_SEC-$START_SEC)) + +[ "$ELAPSED" -lt 3 ] || exit 1 + +# sleep should still be running, hello not. +systemctl list-jobs > /root/list-jobs.txt +grep 'sleep\.service.*running' /root/list-jobs.txt || exit 1 +grep 'hello\.service' /root/list-jobs.txt && exit 1 + +# TODO: add more job queueing/merging tests here. + +touch /testok +exit 0 diff --git a/test/TEST-03-JOBS/test.sh b/test/TEST-03-JOBS/test.sh new file mode 100755 index 0000000000..4cfb2a504a --- /dev/null +++ b/test/TEST-03-JOBS/test.sh @@ -0,0 +1,250 @@ +#!/bin/bash +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh +TEST_DESCRIPTION="Job merging" + +KVERSION=${KVERSION-$(uname -r)} +KERNEL_VER=$(uname -r) + +# Uncomment this to debug failures +#DEBUGFAIL="systemd.unit=multi-user.target" +DEBUGTOOLS="df free ls stty cat ps ln ip route dmesg dhclient mkdir cp ping dhclient strace less grep id tty touch du sort" + +run_qemu() { + # TODO: qemu wrapper script: http://www.spinics.net/lists/kvm/msg72389.html + qemu-kvm \ + -hda $TESTDIR/rootdisk.img \ + -m 512M -nographic \ + -net none -kernel /boot/vmlinuz-$KERNEL_VER \ + -append "root=/dev/sda1 systemd.log_level=debug raid=noautodetect loglevel=2 init=/usr/lib/systemd/systemd ro console=ttyS0,115200n81 selinux=0 $DEBUGFAIL" || return 1 + + ret=1 + mkdir -p $TESTDIR/root + mount ${LOOPDEV}p1 $TESTDIR/root + [[ -e $TESTDIR/root/testok ]] && ret=0 + cp -a $TESTDIR/root/failed $TESTDIR + cp -a $TESTDIR/root/var/log/journal $TESTDIR + umount $TESTDIR/root + cat $TESTDIR/failed + ls -l $TESTDIR/journal/*/*.journal + test -s $TESTDIR/failed && ret=$(($ret+1)) + return $ret +} + + +run_nspawn() { + systemd-nspawn -b -D $TESTDIR/nspawn-root --capability=CAP_AUDIT_CONTROL,CAP_AUDIT_WRITE /usr/lib/systemd/systemd + ret=1 + [[ -e $TESTDIR/nspawn-root/testok ]] && ret=0 + cp -a $TESTDIR/nspawn-root/failed $TESTDIR + cp -a $TESTDIR/nspawn-root/var/log/journal $TESTDIR + cat $TESTDIR/failed + ls -l $TESTDIR/journal/*/*.journal + test -s $TESTDIR/failed && ret=$(($ret+1)) + return $ret +} + + +test_run() { + if check_qemu ; then + run_qemu || return 1 + else + dwarn "can't run qemu-kvm, skipping" + fi + if check_nspawn; then + run_nspawn || return 1 + else + dwarn "can't run systemd-nspawn, skipping" + fi + return 0 +} + +test_setup() { + rm -f $TESTDIR/rootdisk.img + # Create the blank file to use as a root filesystem + dd if=/dev/null of=$TESTDIR/rootdisk.img bs=1M seek=200 + LOOPDEV=$(losetup --show -P -f $TESTDIR/rootdisk.img) + [ -b $LOOPDEV ] || return 1 + echo "LOOPDEV=$LOOPDEV" >> $STATEFILE + sfdisk -C 6400 -H 2 -S 32 -L $LOOPDEV <$TESTDIR/keyfile + mkdir -p $TESTDIR/root + mount ${LOOPDEV}p1 $TESTDIR/root + mkdir -p $TESTDIR/root/run + + # Create what will eventually be our root filesystem onto an overlay + ( + LOG_LEVEL=5 + initdir=$TESTDIR/root + + # create the basic filesystem layout + setup_basic_dirs + + # install compiled files + (cd ../..; make DESTDIR=$initdir install) + + # remove unneeded documentation + rm -fr $initdir/usr/share/{man,doc,gtk-doc} + + # install possible missing libraries + for i in $initdir/{sbin,bin}/* $initdir/lib/systemd/*; do + inst_libs $i + done + + # make a journal directory + mkdir -p $initdir/var/log/journal + + # install some basic config files + inst /etc/sysconfig/init + inst /etc/passwd + inst /etc/shadow + inst /etc/group + inst /etc/shells + inst /etc/nsswitch.conf + inst /etc/pam.conf + inst /etc/securetty + inst /etc/os-release + inst /etc/localtime + # we want an empty environment + > $initdir/etc/environment + > $initdir/etc/machine-id + + # set the hostname + echo systemd-testsuite > $initdir/etc/hostname + + eval $(udevadm info --export --query=env --name=${LOOPDEV}p2) + + cat >$initdir/etc/fstab <$initdir/etc/systemd/system/testsuite.service <$initdir/etc/rc.d/rc.local </dev/null + [[ $LOOPDEV ]] && losetup -d $LOOPDEV + return 0 +} + +. $TEST_BASE_DIR/test-functions +do_test "$@" diff --git a/test/hello-after-sleep.target b/test/hello-after-sleep.target new file mode 100644 index 0000000000..526fbd2a12 --- /dev/null +++ b/test/hello-after-sleep.target @@ -0,0 +1,5 @@ +[Unit] +Description=Sleep for a minute, then say hello. +Wants=sleep.service hello.service +After=sleep.service +Before=hello.service diff --git a/test/hello.service b/test/hello.service new file mode 100644 index 0000000000..82907b64e1 --- /dev/null +++ b/test/hello.service @@ -0,0 +1,5 @@ +[Unit] +Description=Hello World + +[Service] +ExecStart=/bin/echo "Hello World" diff --git a/test/sleep.service b/test/sleep.service new file mode 100644 index 0000000000..946c44b621 --- /dev/null +++ b/test/sleep.service @@ -0,0 +1,6 @@ +[Unit] +Description=Sleep for 1 minute + +[Service] +Type=oneshot +ExecStart=/bin/sleep 60 -- cgit v1.2.1 From e45460d666512db4f908f86e8722d7932dcf0f82 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 25 Jan 2013 19:54:21 +0100 Subject: job: fix merging with --ignore-dependencies This fixes a bug where a job with --ignore-dependencies would wait for other jobs because it merged into a previously queued job. --- src/core/job.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/job.c b/src/core/job.c index e381ea2b69..6a03d17aa8 100644 --- a/src/core/job.c +++ b/src/core/job.c @@ -166,6 +166,7 @@ static void job_merge_into_installed(Job *j, Job *other) { assert(other->type == JOB_NOP); j->override = j->override || other->override; + j->ignore_order = j->ignore_order || other->ignore_order; } Job* job_install(Job *j) { -- cgit v1.2.1 From f2956e80c99cd41ca6bbbe41b09e01b234ca8778 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Sat, 26 Jan 2013 00:16:13 +0100 Subject: nspawn: assume stdout is always writable if it does not support epoll stdout can be redirected to a regular file. Regular files don't support epoll. nspawn failed with: "Failed to register fds in epoll: Operation not permitted". If stdout does not support epoll, assume it's always writable. --- src/nspawn/nspawn.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 62dc20d824..4c8737132b 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -885,8 +885,17 @@ static int process_pty(int master, pid_t pid, sigset_t *mask) { signal_ev.events = EPOLLIN; signal_ev.data.fd = signal_fd; - if (epoll_ctl(ep, EPOLL_CTL_ADD, STDOUT_FILENO, &stdout_ev) < 0 || - epoll_ctl(ep, EPOLL_CTL_ADD, master, &master_ev) < 0 || + if (epoll_ctl(ep, EPOLL_CTL_ADD, STDOUT_FILENO, &stdout_ev) < 0) { + if (errno != EPERM) { + log_error("Failed to register stdout in epoll: %m"); + r = -errno; + goto finish; + } + /* stdout without epoll support. Likely redirected to regular file. */ + stdout_writable = true; + } + + if (epoll_ctl(ep, EPOLL_CTL_ADD, master, &master_ev) < 0 || epoll_ctl(ep, EPOLL_CTL_ADD, signal_fd, &signal_ev) < 0) { log_error("Failed to register fds in epoll: %m"); r = -errno; -- cgit v1.2.1 From cd2086fe6573df923dc53ef33998c9fff8c2bda5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 26 Jan 2013 05:53:30 +0100 Subject: core: unify kill code of mount, service, socket, swap units --- src/core/mount.c | 60 ++++++++++-------------------------------- src/core/service.c | 64 +++++++-------------------------------------- src/core/socket.c | 54 +++++++------------------------------- src/core/swap.c | 57 +++++++--------------------------------- src/core/unit.c | 76 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/core/unit.h | 2 ++ 6 files changed, 122 insertions(+), 191 deletions(-) diff --git a/src/core/mount.c b/src/core/mount.c index e5f5e4272e..2aaf78ceae 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -877,56 +877,23 @@ static void mount_enter_mounted(Mount *m, MountResult f) { static void mount_enter_signal(Mount *m, MountState state, MountResult f) { int r; - Set *pid_set = NULL; - bool wait_for_exit = false; assert(m); if (f != MOUNT_SUCCESS) m->result = f; - if (m->kill_context.kill_mode != KILL_NONE) { - int sig = (state == MOUNT_MOUNTING_SIGTERM || - state == MOUNT_UNMOUNTING_SIGTERM || - state == MOUNT_REMOUNTING_SIGTERM) ? m->kill_context.kill_signal : SIGKILL; - - if (m->control_pid > 0) { - if (kill_and_sigcont(m->control_pid, sig) < 0 && errno != ESRCH) - - log_warning_unit(UNIT(m)->id, - "Failed to kill control process %li: %m", - (long) m->control_pid); - else - wait_for_exit = true; - } - - if (m->kill_context.kill_mode == KILL_CONTROL_GROUP) { - - if (!(pid_set = set_new(trivial_hash_func, trivial_compare_func))) { - r = -ENOMEM; - goto fail; - } - - /* Exclude the control pid from being killed via the cgroup */ - if (m->control_pid > 0) - if ((r = set_put(pid_set, LONG_TO_PTR(m->control_pid))) < 0) - goto fail; - - r = cgroup_bonding_kill_list(UNIT(m)->cgroup_bondings, sig, true, false, pid_set, NULL); - if (r < 0) { - if (r != -EAGAIN && r != -ESRCH && r != -ENOENT) - log_warning_unit(UNIT(m)->id, - "Failed to kill control group: %s", - strerror(-r)); - } else if (r > 0) - wait_for_exit = true; - - set_free(pid_set); - pid_set = NULL; - } - } + r = unit_kill_context( + UNIT(m), + &m->kill_context, + state != MOUNT_MOUNTING_SIGTERM && state != MOUNT_UNMOUNTING_SIGTERM && state != MOUNT_REMOUNTING_SIGTERM, + -1, + m->control_pid, + false); + if (r < 0) + goto fail; - if (wait_for_exit) { + if (r > 0) { r = unit_watch_timer(UNIT(m), CLOCK_MONOTONIC, true, m->timeout_usec, &m->timer_watch); if (r < 0) goto fail; @@ -947,14 +914,15 @@ fail: mount_enter_mounted(m, MOUNT_FAILURE_RESOURCES); else mount_enter_dead(m, MOUNT_FAILURE_RESOURCES); - - if (pid_set) - set_free(pid_set); } void warn_if_dir_nonempty(const char *unit, const char* where) { + assert(unit); + assert(where); + if (dir_is_empty(where) > 0) return; + log_struct_unit(LOG_NOTICE, unit, "MESSAGE=%s: Directory %s to mount over is not empty, mounting anyway.", diff --git a/src/core/service.c b/src/core/service.c index baddc5ade4..914146383c 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1955,64 +1955,23 @@ fail: static void service_enter_signal(Service *s, ServiceState state, ServiceResult f) { int r; - Set *pid_set = NULL; - bool wait_for_exit = false; assert(s); if (f != SERVICE_SUCCESS) s->result = f; - if (s->kill_context.kill_mode != KILL_NONE) { - int sig = (state == SERVICE_STOP_SIGTERM || state == SERVICE_FINAL_SIGTERM) ? s->kill_context.kill_signal : SIGKILL; - - if (s->main_pid > 0) { - if (kill_and_sigcont(s->main_pid, sig) < 0 && errno != ESRCH) - log_warning_unit(UNIT(s)->id, - "Failed to kill main process %li: %m", (long) s->main_pid); - else - wait_for_exit = !s->main_pid_alien; - } - - if (s->control_pid > 0) { - if (kill_and_sigcont(s->control_pid, sig) < 0 && errno != ESRCH) - log_warning_unit(UNIT(s)->id, - "Failed to kill control process %li: %m", (long) s->control_pid); - else - wait_for_exit = true; - } - - if (s->kill_context.kill_mode == KILL_CONTROL_GROUP) { - - pid_set = set_new(trivial_hash_func, trivial_compare_func); - if (!pid_set) { - r = -ENOMEM; - goto fail; - } - - /* Exclude the main/control pids from being killed via the cgroup */ - if (s->main_pid > 0) - if ((r = set_put(pid_set, LONG_TO_PTR(s->main_pid))) < 0) - goto fail; - - if (s->control_pid > 0) - if ((r = set_put(pid_set, LONG_TO_PTR(s->control_pid))) < 0) - goto fail; - - r = cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, sig, true, false, pid_set, NULL); - if (r < 0) { - if (r != -EAGAIN && r != -ESRCH && r != -ENOENT) - log_warning_unit(UNIT(s)->id, - "Failed to kill control group: %s", strerror(-r)); - } else if (r > 0) - wait_for_exit = true; - - set_free(pid_set); - pid_set = NULL; - } - } + r = unit_kill_context( + UNIT(s), + &s->kill_context, + state != SERVICE_STOP_SIGTERM && state != SERVICE_FINAL_SIGTERM, + s->main_pid, + s->control_pid, + s->main_pid_alien); + if (r < 0) + goto fail; - if (wait_for_exit) { + if (r > 0) { if (s->timeout_stop_usec > 0) { r = unit_watch_timer(UNIT(s), CLOCK_MONOTONIC, true, s->timeout_stop_usec, &s->timer_watch); if (r < 0) @@ -2035,9 +1994,6 @@ fail: service_enter_stop_post(s, SERVICE_FAILURE_RESOURCES); else service_enter_dead(s, SERVICE_FAILURE_RESOURCES, true); - - if (pid_set) - set_free(pid_set); } static void service_enter_stop(Service *s, ServiceResult f) { diff --git a/src/core/socket.c b/src/core/socket.c index f74d88e602..2105369018 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -1288,54 +1288,23 @@ fail: static void socket_enter_signal(Socket *s, SocketState state, SocketResult f) { int r; - Set *pid_set = NULL; - bool wait_for_exit = false; assert(s); if (f != SOCKET_SUCCESS) s->result = f; - if (s->kill_context.kill_mode != KILL_NONE) { - int sig = (state == SOCKET_STOP_PRE_SIGTERM || state == SOCKET_FINAL_SIGTERM) ? s->kill_context.kill_signal : SIGKILL; - - if (s->control_pid > 0) { - if (kill_and_sigcont(s->control_pid, sig) < 0 && errno != ESRCH) - - log_warning_unit(UNIT(s)->id, - "Failed to kill control process %li: %m", - (long) s->control_pid); - else - wait_for_exit = true; - } - - if (s->kill_context.kill_mode == KILL_CONTROL_GROUP) { - - if (!(pid_set = set_new(trivial_hash_func, trivial_compare_func))) { - r = -ENOMEM; - goto fail; - } - - /* Exclude the control pid from being killed via the cgroup */ - if (s->control_pid > 0) - if ((r = set_put(pid_set, LONG_TO_PTR(s->control_pid))) < 0) - goto fail; - - r = cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, sig, true, false, pid_set, NULL); - if (r < 0) { - if (r != -EAGAIN && r != -ESRCH && r != -ENOENT) - log_warning_unit(UNIT(s)->id, - "Failed to kill control group: %s", - strerror(-r)); - } else if (r > 0) - wait_for_exit = true; - - set_free(pid_set); - pid_set = NULL; - } - } + r = unit_kill_context( + UNIT(s), + &s->kill_context, + state != SOCKET_STOP_PRE_SIGTERM && state != SOCKET_FINAL_SIGTERM, + -1, + s->control_pid, + false); + if (r < 0) + goto fail; - if (wait_for_exit) { + if (r > 0) { r = unit_watch_timer(UNIT(s), CLOCK_MONOTONIC, true, s->timeout_usec, &s->timer_watch); if (r < 0) goto fail; @@ -1357,9 +1326,6 @@ fail: socket_enter_stop_post(s, SOCKET_FAILURE_RESOURCES); else socket_enter_dead(s, SOCKET_FAILURE_RESOURCES); - - if (pid_set) - set_free(pid_set); } static void socket_enter_stop_pre(Socket *s, SocketResult f) { diff --git a/src/core/swap.c b/src/core/swap.c index a2f11875a2..61ce8316c2 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -646,57 +646,23 @@ static void swap_enter_active(Swap *s, SwapResult f) { static void swap_enter_signal(Swap *s, SwapState state, SwapResult f) { int r; - Set *pid_set = NULL; - bool wait_for_exit = false; assert(s); if (f != SWAP_SUCCESS) s->result = f; - if (s->kill_context.kill_mode != KILL_NONE) { - int sig = (state == SWAP_ACTIVATING_SIGTERM || - state == SWAP_DEACTIVATING_SIGTERM) ? s->kill_context.kill_signal : SIGKILL; - - if (s->control_pid > 0) { - if (kill_and_sigcont(s->control_pid, sig) < 0 && errno != ESRCH) - - log_warning_unit(UNIT(s)->id, - "Failed to kill control process %li: %m", - (long) s->control_pid); - else - wait_for_exit = true; - } - - if (s->kill_context.kill_mode == KILL_CONTROL_GROUP) { - - pid_set = set_new(trivial_hash_func, trivial_compare_func); - if (!pid_set) { - r = log_oom(); - goto fail; - } - - /* Exclude the control pid from being killed via the cgroup */ - if (s->control_pid > 0) { - r = set_put(pid_set, LONG_TO_PTR(s->control_pid)); - if (r < 0) - goto fail; - } - - r = cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, sig, true, false, pid_set, NULL); - if (r < 0) { - if (r != -EAGAIN && r != -ESRCH && r != -ENOENT) - log_warning_unit(UNIT(s)->id, - "Failed to kill control group: %s", strerror(-r)); - } else if (r > 0) - wait_for_exit = true; - - set_free(pid_set); - pid_set = NULL; - } - } + r = unit_kill_context( + UNIT(s), + &s->kill_context, + state != SWAP_ACTIVATING_SIGTERM && state != SWAP_DEACTIVATING_SIGTERM, + -1, + s->control_pid, + false); + if (r < 0) + goto fail; - if (wait_for_exit) { + if (r > 0) { r = unit_watch_timer(UNIT(s), CLOCK_MONOTONIC, true, s->timeout_usec, &s->timer_watch); if (r < 0) goto fail; @@ -712,9 +678,6 @@ fail: "%s failed to kill processes: %s", UNIT(s)->id, strerror(-r)); swap_enter_dead(s, SWAP_FAILURE_RESOURCES); - - if (pid_set) - set_free(pid_set); } static void swap_enter_activating(Swap *s) { diff --git a/src/core/unit.c b/src/core/unit.c index b2a47653b6..f7d00b6030 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -2807,6 +2807,82 @@ int unit_remove_drop_in(Unit *u, bool runtime, const char *name) { return 0; } +int unit_kill_context( + Unit *u, + KillContext *c, + bool sigkill, + pid_t main_pid, + pid_t control_pid, + bool main_pid_alien) { + + int sig, wait_for_exit = 0, r; + + assert(u); + assert(c); + + if (c->kill_mode == KILL_NONE) + return 0; + + sig = sigkill ? SIGKILL : c->kill_signal; + + if (main_pid > 0) { + r = kill_and_sigcont(main_pid, sig); + + if (r < 0 && r != -ESRCH) { + _cleanup_free_ char *comm = NULL; + get_process_comm(main_pid, &comm); + + log_warning_unit(u->id, "Failed to kill main process %li (%s): %s", + (long) main_pid, strna(comm), strerror(-r)); + } else + wait_for_exit = !main_pid_alien; + } + + if (control_pid > 0) { + r = kill_and_sigcont(control_pid, sig); + + if (r < 0 && r != -ESRCH) { + _cleanup_free_ char *comm = NULL; + get_process_comm(control_pid, &comm); + + log_warning_unit(u->id, + "Failed to kill control process %li (%s): %s", + (long) control_pid, strna(comm), strerror(-r)); + } else + wait_for_exit = true; + } + + if (c->kill_mode == KILL_CONTROL_GROUP) { + _cleanup_set_free_ Set *pid_set = NULL; + + pid_set = set_new(trivial_hash_func, trivial_compare_func); + if (!pid_set) + return -ENOMEM; + + /* Exclude the main/control pids from being killed via the cgroup */ + if (main_pid > 0) { + r = set_put(pid_set, LONG_TO_PTR(main_pid)); + if (r < 0) + return r; + } + + if (control_pid > 0) { + r = set_put(pid_set, LONG_TO_PTR(control_pid)); + if (r < 0) + return r; + } + + r = cgroup_bonding_kill_list(u->cgroup_bondings, sig, true, false, pid_set, NULL); + if (r < 0) { + if (r != -EAGAIN && r != -ESRCH && r != -ENOENT) + log_warning_unit(u->id, "Failed to kill control group: %s", strerror(-r)); + } else if (r > 0) + wait_for_exit = true; + } + + return wait_for_exit; +} + static const char* const unit_active_state_table[_UNIT_ACTIVE_STATE_MAX] = { [UNIT_ACTIVE] = "active", [UNIT_RELOADING] = "reloading", diff --git a/src/core/unit.h b/src/core/unit.h index 297b35d8f5..c90210302d 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -557,6 +557,8 @@ ExecContext *unit_get_exec_context(Unit *u); int unit_write_drop_in(Unit *u, bool runtime, const char *name, const char *data); int unit_remove_drop_in(Unit *u, bool runtime, const char *name); +int unit_kill_context(Unit *u, KillContext *c, bool sigkill, pid_t main_pid, pid_t control_pid, bool main_pid_alien); + const char *unit_active_state_to_string(UnitActiveState i); UnitActiveState unit_active_state_from_string(const char *s); -- cgit v1.2.1 From b08131ec17e9263c3beabfbe1c41562cf1ac40af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 25 Jan 2013 14:25:20 -0500 Subject: tmpfiles: exclude /var/tmp/systemd-private-* too --- tmpfiles.d/tmp.conf | 1 + 1 file changed, 1 insertion(+) diff --git a/tmpfiles.d/tmp.conf b/tmpfiles.d/tmp.conf index 031770c04f..ef5a9f0f2c 100644 --- a/tmpfiles.d/tmp.conf +++ b/tmpfiles.d/tmp.conf @@ -13,3 +13,4 @@ d /var/tmp 1777 root root 30d # Exclude namespace mountpoints created with PrivateTmp=yes X /tmp/systemd-private-* +X /var/tmp/systemd-private-* -- cgit v1.2.1 From 652d0dd7097984801fca0378b762bf96e8fda029 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 25 Jan 2013 14:25:43 -0500 Subject: man: mention that PrivateTmp means /var/tmp too --- man/systemd.exec.xml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml index a0fca5996b..fb74bcc972 100644 --- a/man/systemd.exec.xml +++ b/man/systemd.exec.xml @@ -1096,15 +1096,17 @@ Takes a boolean argument. If true sets up a new file system namespace for the executed - processes and mounts a private - /tmp directory - inside it, that is not shared by + processes and mounts private + /tmp and + /var/tmp directories + inside it, that are not shared by processes outside of the namespace. This is useful to secure access to temporary files of the process, but makes sharing between processes via - /tmp + /tmp or + /var/tmp impossible. Defaults to false. -- cgit v1.2.1 From 6b76fa66199967b4ec71854f717d0b8ee94497c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 26 Jan 2013 10:45:37 -0500 Subject: man: docbook consitency fixes Use proper (or at least more proper) docbook tags for various fields. This should help with automatic parsing of the documentation. --- man/runlevel.xml | 2 +- man/systemd-coredumpctl.xml | 8 +++---- man/systemd-journal-gatewayd.service.xml | 28 ++++++++++++------------- man/systemd-udevd.service.xml | 2 +- man/udev.xml | 36 ++++++++++++++++---------------- 5 files changed, 38 insertions(+), 38 deletions(-) diff --git a/man/runlevel.xml b/man/runlevel.xml index 02d5371c5d..0ad4953efd 100644 --- a/man/runlevel.xml +++ b/man/runlevel.xml @@ -124,7 +124,7 @@ - /var/run/utmp + /var/run/utmp The utmp database runlevel reads the diff --git a/man/systemd-coredumpctl.xml b/man/systemd-coredumpctl.xml index 53b82ed277..87ed6fa735 100644 --- a/man/systemd-coredumpctl.xml +++ b/man/systemd-coredumpctl.xml @@ -162,7 +162,7 @@ - + PID Process ID of the process that dumped @@ -170,7 +170,7 @@ - + COMM Name of the executable (matches ). @@ -179,7 +179,7 @@ - + EXE Path to the executable (matches ). @@ -188,7 +188,7 @@ - + MATCH General journalctl predicates (see journalctl1). diff --git a/man/systemd-journal-gatewayd.service.xml b/man/systemd-journal-gatewayd.service.xml index 37b39c2d3e..44cd6167f5 100644 --- a/man/systemd-journal-gatewayd.service.xml +++ b/man/systemd-journal-gatewayd.service.xml @@ -124,13 +124,13 @@ along with systemd; If not, see . - + /browse Interactive browsing. - + /entries[?option1&option2=value...] Retrieval of events in various formats. @@ -149,7 +149,7 @@ along with systemd; If not, see . - + /machine Return a JSON structure describing the machine. @@ -167,7 +167,7 @@ along with systemd; If not, see . - FIELD_NAME + /fields/FIELD_NAME Return a list of values of this field present in the logs. @@ -179,14 +179,14 @@ along with systemd; If not, see . Accept header - format + Recognized formats: - + text/plain The default. Plaintext syslog-like output, one line per journal entry @@ -195,7 +195,7 @@ along with systemd; If not, see . - + application/json Entries are formatted as JSON data structures, one per line @@ -207,7 +207,7 @@ along with systemd; If not, see . - + application/event-stream Entries are formatted as JSON data structures, wrapped in a format suitable for . - + application/vnd.fdo.journal Entries are serialized into a binary (but mostly text-based) stream suitable for backups and network @@ -237,7 +237,7 @@ along with systemd; If not, see . Range header - + where @@ -256,7 +256,7 @@ along with systemd; If not, see . - + follow wait for new events (like journalctl --follow, except that @@ -265,7 +265,7 @@ along with systemd; If not, see . - + discrete Test that the specified cursor refers to an entry in the journal. Returns just this entry. @@ -273,14 +273,14 @@ along with systemd; If not, see . - + boot Limit events to the current boot of the system (like journalctl --this--boot). - + KEY=match Match journal fields. See systemd.journal-fields7. diff --git a/man/systemd-udevd.service.xml b/man/systemd-udevd.service.xml index 92fb38f067..9fc59c1bf1 100644 --- a/man/systemd-udevd.service.xml +++ b/man/systemd-udevd.service.xml @@ -118,7 +118,7 @@ Environment - UDEV_LOG= + $UDEV_LOG= Set the logging priority. diff --git a/man/udev.xml b/man/udev.xml index 7ec7a3fed0..773635ecf7 100644 --- a/man/udev.xml +++ b/man/udev.xml @@ -65,7 +65,7 @@ The following variables can be set: - + udev_log The logging priority. Valid values are the numerical syslog priorities or their textual representations: , @@ -107,21 +107,21 @@ operators are: - + == Compare for equality. - + != Compare for inequality. - + = Assign a value to a key. Keys that represent a list are reset and only this single value is assigned. @@ -129,14 +129,14 @@ - + += Add the value to a key that holds a list of entries. - + := Assign a value to a key finally; disallow any later changes. @@ -297,19 +297,19 @@ pattern characters are supported: - + * Matches zero or more characters. - + ? Matches any single character. - + [] Matches any single character specified within the brackets. For example, the pattern string 'tty[SR]' would match either 'ttyS' or 'ttyR'. @@ -354,7 +354,7 @@ - + , , The permissions for the device node. Every specified value overrides the compiled-in default value. @@ -427,10 +427,10 @@ Import a set of variables as device properties, - depending on type: + depending on type: - + program Execute an external program specified as the assigned value and import its output, which must be in environment key @@ -439,14 +439,14 @@ - + file Import a text file specified as the assigned value, the content of which must be in environment key format. - + db Import a single property specified as the assigned value from the current device database. This works only if the database is already populated @@ -454,14 +454,14 @@ - + cmdline Import a single property from the kernel command line. For simple flags the value of the property is set to '1'. - + parent Import the stored keys from the parent device by reading the database entry of the parent device. The value assigned to @@ -677,14 +677,14 @@ - + %% The '%' character itself. - + $$ The '$' character itself. -- cgit v1.2.1 From ccc9a4f9ffdab069b0b785627c48962fdadf6d46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 26 Jan 2013 10:47:16 -0500 Subject: man: extend systemd.directives(7) to all manual pages New sections are added: PAM options, crypttab options, commandline options, miscellaneous. The last category will be used for all untagged elements. Commandline options sections is meant to be a developer tool: when adding an option it is sometimes useful to be able to check if similarly named options exist elsewhere. --- Makefile.am | 25 ++------- make-directive-index.py | 92 +++++++++++++++++++++++++--------- man/crypttab.xml | 2 +- man/journalctl.xml | 2 +- man/kernel-command-line.xml | 2 +- man/localectl.xml | 2 +- man/loginctl.xml | 2 +- man/pam_systemd.xml | 4 +- man/runlevel.xml | 2 +- man/sd_listen_fds.xml | 2 +- man/sd_notify.xml | 2 +- man/systemctl.xml | 2 +- man/systemd-bootchart.xml | 2 +- man/systemd-cryptsetup-generator.xml | 2 +- man/systemd-fsck@.service.xml | 2 +- man/systemd-fstab-generator.xml | 2 +- man/systemd-journald.service.xml | 2 +- man/systemd-modules-load.service.xml | 2 +- man/systemd-quotacheck.service.xml | 2 +- man/systemd-udevd.service.xml | 4 +- man/systemd-vconsole-setup.service.xml | 2 +- man/systemd.automount.xml | 2 +- man/systemd.exec.xml | 2 +- man/systemd.kill.xml | 2 +- man/systemd.mount.xml | 4 +- man/systemd.path.xml | 2 +- man/systemd.service.xml | 4 +- man/systemd.socket.xml | 2 +- man/systemd.swap.xml | 2 +- man/systemd.timer.xml | 2 +- man/systemd.unit.xml | 4 +- man/systemd.xml | 4 +- man/timedatectl.xml | 2 +- man/udev.xml | 8 +-- 34 files changed, 112 insertions(+), 87 deletions(-) diff --git a/Makefile.am b/Makefile.am index f362b53728..9c92bffc01 100644 --- a/Makefile.am +++ b/Makefile.am @@ -767,31 +767,12 @@ MANPAGES += \ man/systemd.index.7 \ man/systemd.directives.7 -XML_DIRECTIVE_FILES = \ - man/systemd.xml \ - man/systemd.unit.xml \ - man/systemd.service.xml \ - man/systemd.socket.xml \ - man/systemd.mount.xml \ - man/systemd.automount.xml \ - man/systemd.swap.xml \ - man/systemd.target.xml \ - man/systemd.path.xml \ - man/systemd.timer.xml \ - man/systemd.snapshot.xml \ - man/systemd.exec.xml \ - man/systemd.kill.xml \ - man/systemd.device.xml \ - man/systemd.conf.xml \ - man/systemd.journal-fields.xml \ - man/systemd.time.xml \ - man/bootchart.conf.xml - -man/systemd.index.xml: make-man-index.py $(filter-out man/systemd.index.xml,$(XML_FILES)) +NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES)) +man/systemd.index.xml: make-man-index.py $(NON_INDEX_XML_FILES) $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(PYTHON) $^ > $@ -man/systemd.directives.xml: make-directive-index.py $(XML_DIRECTIVE_FILES) +man/systemd.directives.xml: make-directive-index.py $(filter-out man/systemd.directives.xml,$(NON_INDEX_XML_FILES)) $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(PYTHON) $^ > $@ diff --git a/make-directive-index.py b/make-directive-index.py index 48d830e96f..29c594cb75 100755 --- a/make-directive-index.py +++ b/make-directive-index.py @@ -2,7 +2,7 @@ # # This file is part of systemd. # -# Copyright 2012 Zbigniew Jędrzejewski-Szmek +# Copyright 2012-2013 Zbigniew Jędrzejewski-Szmek # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by @@ -20,6 +20,7 @@ import sys import collections import xml.etree.ElementTree as tree +import re TEMPLATE = '''\ @@ -57,28 +58,20 @@ TEMPLATE = '''\ - - System manager directives - - Directives for configuring the behaviour of the - systemd process. - - - - Options on the kernel command line Kernel boot options for configuring the behaviour of the systemd process. - + Environment variables - Environment variables understood by the systemd process. + Environment variables understood by the systemd + manager and other programs. @@ -93,14 +86,39 @@ TEMPLATE = '''\ - Journal directives + Journal fields - Directives for configuring the behaviour of the - journald process. + Fields in the journal events with a well known meaning. + + PAM configuration directives + + Directives for configuring PAM behaviour. + + + + + + crypttab options + + Options which influence mounted filesystems and + encrypted volumes. + + + + + + System manager directives + + Directives for configuring the behaviour of the + systemd process. + + + + bootchart.conf directives @@ -110,6 +128,24 @@ TEMPLATE = '''\ + + command-line options + + Command-line options accepted by programs in the + systemd suite. + + + + + + Miscellaneous options and directives + + Other configuration elements which don't fit in + any of the above groups. + + + + Colophon @@ -127,11 +163,16 @@ def _extract_directives(directive_groups, page): section = t.find('./refmeta/manvolnum').text pagename = t.find('./refmeta/refentrytitle').text for variablelist in t.iterfind('.//variablelist'): - klass = variablelist.attrib.get('class') or 'unit-directives' - stor = directive_groups[klass] - for varname in variablelist.iterfind('./varlistentry/term/varname'): - text = ''.join(varname.text.partition('=')[:2]) - stor[text].append((pagename, section)) + klass = variablelist.attrib.get('class') + storvar = directive_groups[klass or 'miscellaneous'] + storopt = directive_groups['options'] + # - + cipher= diff --git a/man/journalctl.xml b/man/journalctl.xml index 959ae1efa2..d8f8f68929 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -518,7 +518,7 @@ Environment - + $SYSTEMD_PAGER Pager to use when diff --git a/man/kernel-command-line.xml b/man/kernel-command-line.xml index 154d399d5a..f249798171 100644 --- a/man/kernel-command-line.xml +++ b/man/kernel-command-line.xml @@ -74,7 +74,7 @@ Core OS Command Line Arguments - + systemd.unit= rd.systemd.unit= diff --git a/man/localectl.xml b/man/localectl.xml index 73bff98938..7563eb513c 100644 --- a/man/localectl.xml +++ b/man/localectl.xml @@ -229,7 +229,7 @@ Environment - + $SYSTEMD_PAGER Pager to use when diff --git a/man/loginctl.xml b/man/loginctl.xml index 9d082cf915..90b6f1e110 100644 --- a/man/loginctl.xml +++ b/man/loginctl.xml @@ -457,7 +457,7 @@ Environment - + $SYSTEMD_PAGER Pager to use when diff --git a/man/pam_systemd.xml b/man/pam_systemd.xml index 600bfd71b4..0093a8fb2d 100644 --- a/man/pam_systemd.xml +++ b/man/pam_systemd.xml @@ -118,7 +118,7 @@ The following options are understood: - + @@ -247,7 +247,7 @@ The following environment variables are set for the processes of the user's session: - + $XDG_SESSION_ID diff --git a/man/runlevel.xml b/man/runlevel.xml index 0ad4953efd..6d9fe85726 100644 --- a/man/runlevel.xml +++ b/man/runlevel.xml @@ -96,7 +96,7 @@ Environment - + $RUNLEVEL diff --git a/man/sd_listen_fds.xml b/man/sd_listen_fds.xml index b891b6b039..9c8fdbccaf 100644 --- a/man/sd_listen_fds.xml +++ b/man/sd_listen_fds.xml @@ -168,7 +168,7 @@ Environment - + $LISTEN_PID $LISTEN_FDS diff --git a/man/sd_notify.xml b/man/sd_notify.xml index 75edeeadf3..81f74aa843 100644 --- a/man/sd_notify.xml +++ b/man/sd_notify.xml @@ -254,7 +254,7 @@ Environment - + $NOTIFY_SOCKET diff --git a/man/systemctl.xml b/man/systemctl.xml index 60a0f401bd..38426454d4 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -1296,7 +1296,7 @@ Environment - + $SYSTEMD_PAGER Pager to use when diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml index 8c4d7cc1dc..0df7c4bcf4 100644 --- a/man/systemd-bootchart.xml +++ b/man/systemd-bootchart.xml @@ -65,7 +65,7 @@ systemd-bootchart can be invoked in several different ways: - + Kernel invocation diff --git a/man/systemd-cryptsetup-generator.xml b/man/systemd-cryptsetup-generator.xml index 49d4d5545b..c5f8d2a9d8 100644 --- a/man/systemd-cryptsetup-generator.xml +++ b/man/systemd-cryptsetup-generator.xml @@ -72,7 +72,7 @@ systemd-cryptsetup-generator understands the following kernel command line parameters: - + luks= rd.luks= diff --git a/man/systemd-fsck@.service.xml b/man/systemd-fsck@.service.xml index 62f63110e1..4d6464c2b8 100644 --- a/man/systemd-fsck@.service.xml +++ b/man/systemd-fsck@.service.xml @@ -77,7 +77,7 @@ systemd-fsck understands one kernel command line parameter: - + fsck.mode= diff --git a/man/systemd-fstab-generator.xml b/man/systemd-fstab-generator.xml index b265b6c082..4bd25bfa8f 100644 --- a/man/systemd-fstab-generator.xml +++ b/man/systemd-fstab-generator.xml @@ -81,7 +81,7 @@ systemd-fstab-generator understands the following kernel command line parameters: - + fstab= diff --git a/man/systemd-journald.service.xml b/man/systemd-journald.service.xml index abc03df5db..4969ab19c3 100644 --- a/man/systemd-journald.service.xml +++ b/man/systemd-journald.service.xml @@ -137,7 +137,7 @@ journald.conf may be overridden on the kernel command line: - + systemd.journald.forward_to_syslog= systemd.journald.forward_to_kmsg= diff --git a/man/systemd-modules-load.service.xml b/man/systemd-modules-load.service.xml index e5f10a7beb..ea10be2234 100644 --- a/man/systemd-modules-load.service.xml +++ b/man/systemd-modules-load.service.xml @@ -71,7 +71,7 @@ systemd-modules-load.service understands the following kernel command line parameters: - + modules-load= diff --git a/man/systemd-quotacheck.service.xml b/man/systemd-quotacheck.service.xml index 4d0218b659..2ffee9158e 100644 --- a/man/systemd-quotacheck.service.xml +++ b/man/systemd-quotacheck.service.xml @@ -67,7 +67,7 @@ systemd-quotacheck understands one kernel command line parameter: - + quotacheck.mode= diff --git a/man/systemd-udevd.service.xml b/man/systemd-udevd.service.xml index 9fc59c1bf1..2b9a29adcd 100644 --- a/man/systemd-udevd.service.xml +++ b/man/systemd-udevd.service.xml @@ -116,7 +116,7 @@ Environment - + $UDEV_LOG= @@ -127,7 +127,7 @@ Kernel command line - + Parameters starting with "rd." will be read when systemd-udevd is used in an initrd. diff --git a/man/systemd-vconsole-setup.service.xml b/man/systemd-vconsole-setup.service.xml index c1ef80dae4..df1b1a16b6 100644 --- a/man/systemd-vconsole-setup.service.xml +++ b/man/systemd-vconsole-setup.service.xml @@ -76,7 +76,7 @@ vconsole.conf may be overridden on the kernel command line: - + vconsole.keymap= vconsole.keymap.toggle= diff --git a/man/systemd.automount.xml b/man/systemd.automount.xml index 7575835060..f428ddfe1a 100644 --- a/man/systemd.automount.xml +++ b/man/systemd.automount.xml @@ -123,7 +123,7 @@ specific to the [Automount] section of automount units are the following: - + Where= diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml index fb74bcc972..53094e587d 100644 --- a/man/systemd.exec.xml +++ b/man/systemd.exec.xml @@ -82,7 +82,7 @@ Options - + WorkingDirectory= diff --git a/man/systemd.kill.xml b/man/systemd.kill.xml index 1bff7b81fa..5ff8feee63 100644 --- a/man/systemd.kill.xml +++ b/man/systemd.kill.xml @@ -82,7 +82,7 @@ Options - + KillMode= diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml index f319cf7ce9..022be4661d 100644 --- a/man/systemd.mount.xml +++ b/man/systemd.mount.xml @@ -182,7 +182,7 @@ options specific to the [Mount] section of mount units are the following: - + What= @@ -276,7 +276,7 @@ for compatibility reasons and should not be used in newly written mount files. - + FsckPassNo= diff --git a/man/systemd.path.xml b/man/systemd.path.xml index a602caab13..ccf16df004 100644 --- a/man/systemd.path.xml +++ b/man/systemd.path.xml @@ -108,7 +108,7 @@ monitors. The options specific to the [Path] section of path units are the following: - + PathExists= PathExistsGlob= diff --git a/man/systemd.service.xml b/man/systemd.service.xml index 891b3474aa..d2feb98247 100644 --- a/man/systemd.service.xml +++ b/man/systemd.service.xml @@ -121,7 +121,7 @@ options specific to the [Service] section of service units are the following: - + Type= @@ -887,7 +887,7 @@ for compatibility reasons and should not be used in newly written service files. - + SysVStartPriority= Set the SysV start diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml index 7ba8bdc85b..28730ca441 100644 --- a/man/systemd.socket.xml +++ b/man/systemd.socket.xml @@ -143,7 +143,7 @@ options specific to the [Socket] section of socket units are the following: - + ListenStream= ListenDatagram= diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml index dae9d59e7c..e547e71722 100644 --- a/man/systemd.swap.xml +++ b/man/systemd.swap.xml @@ -136,7 +136,7 @@ options specific to the [Swap] section of swap units are the following: - + What= diff --git a/man/systemd.timer.xml b/man/systemd.timer.xml index 8682643349..2c2ba58226 100644 --- a/man/systemd.timer.xml +++ b/man/systemd.timer.xml @@ -97,7 +97,7 @@ defines. The options specific to the [Timer] section of timer units are the following: - + OnActiveSec= OnBootSec= diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 953a2897ad..dcdfc1e5d6 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -222,7 +222,7 @@ carries generic information about the unit that is not dependent on the type of unit: - + Description= @@ -944,7 +944,7 @@ systemctl1 tool during installation of a unit: - + Alias= diff --git a/man/systemd.xml b/man/systemd.xml index 962ed56ffc..bae90a5f09 100644 --- a/man/systemd.xml +++ b/man/systemd.xml @@ -508,7 +508,7 @@ Directories - + System unit directories @@ -987,7 +987,7 @@ /proc/cmdline instead.: - + systemd.unit= rd.systemd.unit= diff --git a/man/timedatectl.xml b/man/timedatectl.xml index 01ca0a73d5..4f34bb7b73 100644 --- a/man/timedatectl.xml +++ b/man/timedatectl.xml @@ -221,7 +221,7 @@ Environment - + $SYSTEMD_PAGER Pager to use when diff --git a/man/udev.xml b/man/udev.xml index 773635ecf7..415cf8e6a9 100644 --- a/man/udev.xml +++ b/man/udev.xml @@ -148,7 +148,7 @@ not only the device that has generated the event. If multiple keys that match a parent device are specified in a single rule, all these keys must match at one and the same parent device. - + @@ -322,7 +322,7 @@ The following keys can get values assigned: - + @@ -489,7 +489,7 @@ Rule and device options: - + @@ -546,7 +546,7 @@ is executed, allowing for the use of device properties set by earlier matching rules. For all other fields, substitutions are performed while the individual rule is being processed. The available substitutions are: - + , -- cgit v1.2.1 From d970bd6d39f808b29a804050747c0883fcc2784b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 26 Jan 2013 11:27:35 -0500 Subject: make-directive-index: use original XML as index entries udev(7) fields are now display in whole, which looks much better. --- make-directive-index.py | 23 +++++++++++++++-------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/make-directive-index.py b/make-directive-index.py index 29c594cb75..ab40997a98 100755 --- a/make-directive-index.py +++ b/make-directive-index.py @@ -158,7 +158,7 @@ This index contains {count} entries in {sections} sections, referring to {pages} individual manual pages. ''' -def _extract_directives(directive_groups, page): +def _extract_directives(directive_groups, formatting, page): t = tree.parse(page) section = t.find('./refmeta/manvolnum').text pagename = t.find('./refmeta/refentrytitle').text @@ -173,13 +173,19 @@ def _extract_directives(directive_groups, page): for name in variablelist.iterfind(xpath): text = re.sub(r'([= ]).*', r'\1', name.text).rstrip() stor[text].append((pagename, section)) + if text not in formatting: + # use element as formatted display + name.tail = '' + name.text = text + formatting[text] = name -def _make_section(template, name, directives): +def _make_section(template, name, directives, formatting): varlist = template.find(".//*[@id='{}']".format(name)) for varname, manpages in sorted(directives.items()): entry = tree.SubElement(varlist, 'varlistentry') - a = tree.SubElement(tree.SubElement(entry, 'term'), 'varname') - a.text = varname + term = tree.SubElement(entry, 'term') + term.append(formatting[varname]) + para = tree.SubElement(tree.SubElement(entry, 'listitem'), 'para') b = None @@ -206,7 +212,7 @@ def _make_colophon(template, groups): sections=len(groups), pages=len(pages)) -def _make_page(template, directive_groups): +def _make_page(template, directive_groups, formatting): """Create an XML tree from directive_groups. directive_groups = { @@ -216,7 +222,7 @@ def _make_page(template, directive_groups): } """ for name, directives in directive_groups.items(): - _make_section(template, name, directives) + _make_section(template, name, directives, formatting) _make_colophon(template, directive_groups.values()) @@ -228,13 +234,14 @@ def make_page(*xml_files): names = [vl.get('id') for vl in template.iterfind('.//variablelist')] directive_groups = {name:collections.defaultdict(list) for name in names} + formatting = {} for page in xml_files: try: - _extract_directives(directive_groups, page) + _extract_directives(directive_groups, formatting, page) except Exception: raise ValueError("failed to process " + page) - return _make_page(template, directive_groups) + return _make_page(template, directive_groups, formatting) if __name__ == '__main__': tree.dump(make_page(*sys.argv[1:])) -- cgit v1.2.1 From 22582bb2cbe85b40de5f561589e0468dac769515 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sun, 27 Jan 2013 21:46:36 +0100 Subject: udev: set default rules permissions only at "add" events --- rules/50-udev-default.rules | 42 ++++++++++-------------------------------- src/udev/udev-event.c | 5 +++-- src/udev/udev-node.c | 17 +++++------------ src/udev/udev.h | 2 +- 4 files changed, 19 insertions(+), 47 deletions(-) diff --git a/rules/50-udev-default.rules b/rules/50-udev-default.rules index fc52fd17f5..5d8bde53c1 100644 --- a/rules/50-udev-default.rules +++ b/rules/50-udev-default.rules @@ -1,51 +1,35 @@ # do not edit this file, it will be overwritten on update +ACTION!="add", GOTO="default_permissions_end" + SUBSYSTEM=="tty", KERNEL=="ptmx", GROUP="tty", MODE="0666" SUBSYSTEM=="tty", KERNEL=="tty", GROUP="tty", MODE="0666" SUBSYSTEM=="tty", KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620" SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty" - -# serial KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout" -# virtio serial / console ports -SUBSYSTEM=="virtio-ports", KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}" - -# mem SUBSYSTEM=="mem", KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640" -# input -SUBSYSTEM=="input", ENV{ID_INPUT}=="", IMPORT{builtin}="input_id" SUBSYSTEM=="input", KERNEL=="mouse*|mice|event*", MODE="0640" SUBSYSTEM=="input", KERNEL=="ts[0-9]*|uinput", MODE="0640" SUBSYSTEM=="input", KERNEL=="js[0-9]*", MODE="0644" -# video4linux SUBSYSTEM=="video4linux", GROUP="video" - -# graphics SUBSYSTEM=="misc", KERNEL=="agpgart", GROUP="video" SUBSYSTEM=="graphics", GROUP="video" SUBSYSTEM=="drm", GROUP="video" +SUBSYSTEM=="dvb", GROUP="video" -# sound SUBSYSTEM=="sound", GROUP="audio", \ OPTIONS+="static_node=snd/seq", OPTIONS+="static_node=snd/timer" -# DVB (video) -SUBSYSTEM=="dvb", GROUP="video" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664" -# FireWire (firewire-core driver: IIDC devices, AV/C devices) SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x00010*", GROUP="video" SUBSYSTEM=="firewire", ATTR{units}=="*0x00b09d:0x00010*", GROUP="video" SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x010001*", GROUP="video" SUBSYSTEM=="firewire", ATTR{units}=="*0x00a02d:0x014001*", GROUP="video" -# 'libusb' device nodes -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", MODE="0664" -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" - -# printer KERNEL=="parport[0-9]*", GROUP="lp" SUBSYSTEM=="printer", KERNEL=="lp*", GROUP="lp" SUBSYSTEM=="ppdev", GROUP="lp" @@ -53,23 +37,15 @@ KERNEL=="lp[0-9]*", GROUP="lp" KERNEL=="irlpt[0-9]*", GROUP="lp" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", GROUP="lp" -# block SUBSYSTEM=="block", GROUP="disk" - -# floppy SUBSYSTEM=="block", KERNEL=="fd[0-9]", GROUP="floppy" - -# cdrom SUBSYSTEM=="block", KERNEL=="sr[0-9]*", GROUP="cdrom" SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="4|5", GROUP="cdrom" KERNEL=="sch[0-9]*", GROUP="cdrom" KERNEL=="pktcdvd[0-9]*", GROUP="cdrom" KERNEL=="pktcdvd", GROUP="cdrom" -# tape SUBSYSTEM=="scsi_generic|scsi_tape", SUBSYSTEMS=="scsi", ATTRS{type}=="1|8", GROUP="tape" - -# block-related SUBSYSTEM=="scsi_generic", SUBSYSTEMS=="scsi", ATTRS{type}=="0", GROUP="disk" KERNEL=="qft[0-9]*|nqft[0-9]*|zqft[0-9]*|nzqft[0-9]*|rawqft[0-9]*|nrawqft[0-9]*", GROUP="disk" KERNEL=="rawctl", GROUP="disk" @@ -77,14 +53,16 @@ SUBSYSTEM=="raw", KERNEL=="raw[0-9]*", GROUP="disk" SUBSYSTEM=="aoe", GROUP="disk", MODE="0220" SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440" -# network -KERNEL=="tun", MODE="0666", OPTIONS+="static_node=net/tun" KERNEL=="rfkill", MODE="0644" +KERNEL=="tun", MODE="0666", OPTIONS+="static_node=net/tun" -KERNEL=="fuse", ACTION=="add", MODE="0666", OPTIONS+="static_node=fuse" +KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse" +LABEL="default_permissions_end" SUBSYSTEM=="rtc", ATTR{hctosys}=="1", MODE="0644", SYMLINK+="rtc" +SUBSYSTEM=="virtio-ports", KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}" +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" +SUBSYSTEM=="input", ENV{ID_INPUT}=="", IMPORT{builtin}="input_id" SUBSYSTEM=="firmware", ACTION=="add", IMPORT{builtin}="firmware" - ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}" diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index 8c8b058df7..ef9fc61c64 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2010 Kay Sievers + * Copyright (C) 2003-2013 Kay Sievers * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -861,7 +861,8 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, } } - udev_node_add(dev, event->mode, event->uid, event->gid); + udev_node_add(dev, event->owner_set || event->group_set || event->mode_set, + event->mode, event->uid, event->gid); } /* preserve old, or get new initialization timestamp */ diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c index 3eec14021b..bce4cfe433 100644 --- a/src/udev/udev-node.c +++ b/src/udev/udev-node.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2003-2010 Kay Sievers + * Copyright (C) 2003-2013 Kay Sievers * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -254,7 +254,7 @@ void udev_node_update_old_links(struct udev_device *dev, struct udev_device *dev } } -static int node_fixup(struct udev_device *dev, mode_t mode, uid_t uid, gid_t gid) +static int node_permissions_apply(struct udev_device *dev, bool apply, mode_t mode, uid_t uid, gid_t gid) { const char *devnode = udev_device_get_devnode(dev); dev_t devnum = udev_device_get_devnum(dev); @@ -279,13 +279,7 @@ static int node_fixup(struct udev_device *dev, mode_t mode, uid_t uid, gid_t gid goto out; } - /* - * Set permissions and selinux file context only on add events. We always - * set it on bootup (coldplug) with "trigger --action=add" for all devices - * and for any newly added devices (hotplug). We don't want to change it - * later, in case something else has applied custom settings in the meantime. - */ - if (strcmp(udev_device_get_action(dev), "add") == 0) { + if (apply) { if ((stats.st_mode & 0777) != (mode & 0777) || stats.st_uid != uid || stats.st_gid != gid) { log_debug("set permissions %s, %#o, uid=%u, gid=%u\n", devnode, mode, uid, gid); chmod(devnode, mode); @@ -293,7 +287,6 @@ static int node_fixup(struct udev_device *dev, mode_t mode, uid_t uid, gid_t gid } else { log_debug("preserve permissions %s, %#o, uid=%u, gid=%u\n", devnode, mode, uid, gid); } - label_fix(devnode, true, false); } @@ -303,7 +296,7 @@ out: return err; } -void udev_node_add(struct udev_device *dev, mode_t mode, uid_t uid, gid_t gid) +void udev_node_add(struct udev_device *dev, bool apply, mode_t mode, uid_t uid, gid_t gid) { struct udev *udev = udev_device_get_udev(dev); char filename[UTIL_PATH_SIZE]; @@ -312,7 +305,7 @@ void udev_node_add(struct udev_device *dev, mode_t mode, uid_t uid, gid_t gid) log_debug("handling device node '%s', devnum=%s, mode=%#o, uid=%d, gid=%d\n", udev_device_get_devnode(dev), udev_device_get_id_filename(dev), mode, uid, gid); - if (node_fixup(dev, mode, uid, gid) < 0) + if (node_permissions_apply(dev, apply, mode, uid, gid) < 0) return; /* always add /dev/{block,char}/$major:$minor */ diff --git a/src/udev/udev.h b/src/udev/udev.h index 72a7623e34..b54cb58fc3 100644 --- a/src/udev/udev.h +++ b/src/udev/udev.h @@ -95,7 +95,7 @@ void udev_watch_end(struct udev *udev, struct udev_device *dev); struct udev_device *udev_watch_lookup(struct udev *udev, int wd); /* udev-node.c */ -void udev_node_add(struct udev_device *dev, mode_t mode, uid_t uid, gid_t gid); +void udev_node_add(struct udev_device *dev, bool apply, mode_t mode, uid_t uid, gid_t gid); void udev_node_remove(struct udev_device *dev); void udev_node_update_old_links(struct udev_device *dev, struct udev_device *dev_old); -- cgit v1.2.1 From c0fe5db522b52f27e030655ce2c03e05cbbc1558 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sun, 27 Jan 2013 22:59:01 +0100 Subject: TODO: update --- TODO | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index 239781a343..7624068f6c 100644 --- a/TODO +++ b/TODO @@ -14,8 +14,9 @@ Bugfixes: * properly handle .mount unit state tracking when two mount points are stacked one on top of another on the exact same mount point. Fedora 19: +* drop no longer needed modprobe.d udlfb file (it does not belong in /etc anyway) -* Retest multi-seat +* Retest multi-seat (new kms driver for displaylink) * create /var/log/journal/ @@ -55,7 +56,7 @@ Features: - honor timezone efi variables for default timezone selection (if there are any?) - introduce bootctl (backed by systemd-bootd) to control temporary and persistent default boot goal plus efi variables -* maybe not install getty@tty1.service symlink in /etc but in /usr? +* maybe do not install getty@tty1.service symlink in /etc but in /usr? * re-enable "make check" for gtk-doc (broken for unknown reason) -- cgit v1.2.1 From 17e588a4f2dd210a444d9a5b5b7e7260609fabb1 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 28 Jan 2013 03:53:33 +0100 Subject: rules: there is no "ata" subsystem for ATA device --- rules/60-persistent-storage.rules | 2 -- 1 file changed, 2 deletions(-) diff --git a/rules/60-persistent-storage.rules b/rules/60-persistent-storage.rules index b74821edd4..a4d009ae6e 100644 --- a/rules/60-persistent-storage.rules +++ b/rules/60-persistent-storage.rules @@ -26,8 +26,6 @@ ENV{DEVTYPE}=="partition", IMPORT{parent}="ID_*" KERNEL=="vd*[!0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}" KERNEL=="vd*[0-9]", ATTRS{serial}=="?*", ENV{ID_SERIAL}="$attr{serial}", SYMLINK+="disk/by-id/virtio-$env{ID_SERIAL}-part%n" -# ATA devices with their own "ata" kernel subsystem -KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="ata", IMPORT{program}="ata_id --export $devnode" # ATA devices using the "scsi" subsystem KERNEL=="sd*[!0-9]|sr*", ENV{ID_SERIAL}!="?*", SUBSYSTEMS=="scsi", ATTRS{vendor}=="ATA", IMPORT{program}="ata_id --export $devnode" # ATA/ATAPI devices (SPC-3 or later) using the "scsi" subsystem -- cgit v1.2.1 From 28dcf77ffe346b2385dbb77f533bab2fa6bfb211 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 28 Jan 2013 03:54:49 +0100 Subject: update .gitignore --- test/.gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/.gitignore b/test/.gitignore index 93c1f950fe..fd7483da0a 100644 --- a/test/.gitignore +++ b/test/.gitignore @@ -1,3 +1,5 @@ .testdir test.log +/dev +/run /sys -- cgit v1.2.1 From c485437f50450c0087bae3df4aed462e4a86ee83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 27 Jan 2013 21:14:14 -0500 Subject: logind: add MESSAGE_IDs to interesting events --- src/login/logind-button.c | 26 +++++++++++++++++++++----- src/systemd/sd-messages.h | 6 ++++++ 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/login/logind-button.c b/src/login/logind-button.c index dbf3d3c446..cbb067aa55 100644 --- a/src/login/logind-button.c +++ b/src/login/logind-button.c @@ -33,6 +33,7 @@ #include "logind-button.h" #include "special.h" #include "dbus-common.h" +#include "sd-messages.h" Button* button_new(Manager *m, const char *name) { Button *b; @@ -188,7 +189,10 @@ int button_process(Button *b) { case KEY_POWER: case KEY_POWER2: - log_info("Power key pressed."); + log_struct(LOG_INFO, + "MESSAGE=Power key pressed.", + MESSAGE_ID(SD_MESSAGE_POWER_KEY), + NULL); return button_handle(b, INHIBIT_HANDLE_POWER_KEY, b->manager->handle_power_key, b->manager->power_key_ignore_inhibited, true); /* The kernel is a bit confused here: @@ -198,11 +202,17 @@ int button_process(Button *b) { */ case KEY_SLEEP: - log_info("Suspend key pressed."); + log_struct(LOG_INFO, + "MESSAGE=Suspend key pressed.", + MESSAGE_ID(SD_MESSAGE_SUSPEND_KEY), + NULL); return button_handle(b, INHIBIT_HANDLE_SUSPEND_KEY, b->manager->handle_suspend_key, b->manager->suspend_key_ignore_inhibited, true); case KEY_SUSPEND: - log_info("Hibernate key pressed."); + log_struct(LOG_INFO, + "MESSAGE=Hibernate key pressed.", + MESSAGE_ID(SD_MESSAGE_HIBERNATE_KEY), + NULL); return button_handle(b, INHIBIT_HANDLE_HIBERNATE_KEY, b->manager->handle_hibernate_key, b->manager->hibernate_key_ignore_inhibited, true); } @@ -211,7 +221,10 @@ int button_process(Button *b) { switch (ev.code) { case SW_LID: - log_info("Lid closed."); + log_struct(LOG_INFO, + "MESSAGE=Lid closed.", + MESSAGE_ID(SD_MESSAGE_LID_CLOSED), + NULL); b->lid_close_queued = true; return button_handle(b, INHIBIT_HANDLE_LID_SWITCH, b->manager->handle_lid_switch, b->manager->lid_switch_ignore_inhibited, true); @@ -222,7 +235,10 @@ int button_process(Button *b) { switch (ev.code) { case SW_LID: - log_info("Lid opened."); + log_struct(LOG_INFO, + "MESSAGE=Lid opened.", + MESSAGE_ID(SD_MESSAGE_LID_OPENED), + NULL); b->lid_close_queued = false; break; } diff --git a/src/systemd/sd-messages.h b/src/systemd/sd-messages.h index bc560947d4..92a731dfc2 100644 --- a/src/systemd/sd-messages.h +++ b/src/systemd/sd-messages.h @@ -67,6 +67,12 @@ extern "C" { #define SD_MESSAGE_OVERMOUNTING SD_ID128_MAKE(1d,ee,03,69,c7,fc,47,36,b7,09,9b,38,ec,b4,6e,e7) +#define SD_MESSAGE_LID_OPENED SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,6f) +#define SD_MESSAGE_LID_CLOSED SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,70) +#define SD_MESSAGE_POWER_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,71) +#define SD_MESSAGE_SUSPEND_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,72) +#define SD_MESSAGE_HIBERNATE_KEY SD_ID128_MAKE(b7,2e,a4,a2,88,15,45,a0,b5,0e,20,0e,55,b9,b0,73) + #ifdef __cplusplus } #endif -- cgit v1.2.1 From 350b6a6560759cbc9903a0f9275e271cd840d6ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 27 Jan 2013 21:23:27 -0500 Subject: build-sys: install two more man aliases --- Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile.am b/Makefile.am index 9c92bffc01..faff3255e7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -637,6 +637,8 @@ MANPAGES_ALIAS = \ man/SD_JOURNAL_INVALIDATE.3 \ man/sd_journal_add_disjunction.3 \ man/sd_journal_flush_matches.3 \ + man/sd_journal_get_data_threshold.3 \ + man/sd_journal_set_data_threshold.3 \ man/sd_journal_seek_tail.3 \ man/sd_journal_seek_monotonic_usec.3 \ man/sd_journal_seek_realtime_usec.3 \ -- cgit v1.2.1 From 68562936c243a2e2190a7232c4805ffd094e9b3b Mon Sep 17 00:00:00 2001 From: William Giokas <1007380@gmail.com> Date: Sat, 26 Jan 2013 11:15:32 -0600 Subject: man: add Arch Linux entry to systemd-nspawn(5) Archlinux has a similar tool to debbotstrap in the arch-install-scripts package that will install to a specified directory. This is generally used for installation, so the -d flag must be passed to tell it to install to a non-mountpoint directory. --- man/systemd-nspawn.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index 777e0a3a77..834e2ccf14 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -320,6 +320,17 @@ + + Example 3 + + # pacstrap -c -d ~/arch-tree/ base +# systemd-nspawn -bD ~/arch-tree/ + + This installs a mimimal Arch Linux distribution into + the directory ~/arch-tree/ and then + boots an OS in a namespace container in it. + + Exit status @@ -334,6 +345,7 @@ chroot1, yum8, debootstrap8 + pacman8 -- cgit v1.2.1 From c437b20d6efcbd14b086b93de8633d3c23eee811 Mon Sep 17 00:00:00 2001 From: Ayan George Date: Mon, 28 Jan 2013 07:30:01 +0100 Subject: keymap: Add support for the brower hotkey on the HP ProBook https://bugs.launchpad.net/bugs/1105191 --- src/udev/keymap/95-keymap.rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/udev/keymap/95-keymap.rules b/src/udev/keymap/95-keymap.rules index 347b5a1dda..945b1319b1 100644 --- a/src/udev/keymap/95-keymap.rules +++ b/src/udev/keymap/95-keymap.rules @@ -96,7 +96,7 @@ ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*2510p*|*2530p ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*[tT][xX]2*", RUN+="keymap $name hewlett-packard-tx2" ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="Presario 2100*", RUN+="keymap $name hewlett-packard-presario-2100" ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="HP G62 Notebook PC", RUN+="keymap $name 0xB2 www" -ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="HP ProBook*", RUN+="keymap $name 0xF8 rfkill" +ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="HP ProBook*", RUN+="keymap $name 0xF8 rfkill 0xB2 www" ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="HP EliteBook 8440p", RUN+="keymap $name hewlett-packard_elitebook-8440p" # HP Pavillion dv6315ea has empty DMI_VENDOR ATTR{[dmi/id]board_vendor}=="Quanta", ATTR{[dmi/id]board_name}=="30B7", ATTR{[dmi/id]board_version}=="65.2B", RUN+="keymap $name 0x88 media" # "quick play -- cgit v1.2.1 From 4dbcb1b3bada9632ca3ea763a8d8cf0ffcbc25d5 Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Mon, 28 Jan 2013 07:41:36 +0100 Subject: keymap: Add HP HDX 9494NR Add touchpad and www keys. https://bugzilla.redhat.com/show_bug.cgi?id=757928 --- Makefile.am | 1 + keymaps/hewlett-packard-hdx9494nr | 3 +++ src/udev/keymap/95-keyboard-force-release.rules | 2 +- src/udev/keymap/95-keymap.rules | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 keymaps/hewlett-packard-hdx9494nr diff --git a/Makefile.am b/Makefile.am index faff3255e7..8d10144a94 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2412,6 +2412,7 @@ dist_udevkeymap_DATA = \ keymaps/hewlett-packard-tablet \ keymaps/hewlett-packard-tx2 \ keymaps/hewlett-packard_elitebook-8440p \ + keymaps/hewlett-packard-hdx9494nr \ keymaps/ibm-thinkpad-usb-keyboard-trackpoint \ keymaps/inventec-symphony_6.0_7.0 \ keymaps/lenovo-3000 \ diff --git a/keymaps/hewlett-packard-hdx9494nr b/keymaps/hewlett-packard-hdx9494nr new file mode 100644 index 0000000000..f3484e125a --- /dev/null +++ b/keymaps/hewlett-packard-hdx9494nr @@ -0,0 +1,3 @@ +0xB2 www # FnF3 +0xD8 f22 # touchpad off +0xD9 f23 # touchpad on diff --git a/src/udev/keymap/95-keyboard-force-release.rules b/src/udev/keymap/95-keyboard-force-release.rules index f97a022d8d..3e33e85535 100644 --- a/src/udev/keymap/95-keyboard-force-release.rules +++ b/src/udev/keymap/95-keyboard-force-release.rules @@ -42,7 +42,7 @@ ENV{DMI_VENDOR}=="Viooo Corporation", ATTR{[dmi/id]product_name}=="PT17", RUN+=" # These are all the HP laptops that setup a touchpad toggle key ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*[pP][aA][vV][iI][lL][iI][oO][nN]*", RUN+="keyboard-force-release.sh $devpath hp-other" ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*[tT][xX]2*", RUN+="keyboard-force-release.sh $devpath hp-other" -ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*2510p*|*2530p*|HP G60 Notebook PC", RUN+="keyboard-force-release.sh $devpath hp-other" +ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*2510p*|*2530p*|HP G60 Notebook PC|HDX9494NR", RUN+="keyboard-force-release.sh $devpath hp-other" ENV{DMI_VENDOR}=="Zepto", ATTR{[dmi/id]product_name}=="Znote 6615WD", RUN+="keyboard-force-release.sh $devpath common-volume-keys" diff --git a/src/udev/keymap/95-keymap.rules b/src/udev/keymap/95-keymap.rules index 945b1319b1..a13063e1b3 100644 --- a/src/udev/keymap/95-keymap.rules +++ b/src/udev/keymap/95-keymap.rules @@ -98,6 +98,7 @@ ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="Presario 2100*" ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="HP G62 Notebook PC", RUN+="keymap $name 0xB2 www" ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="HP ProBook*", RUN+="keymap $name 0xF8 rfkill 0xB2 www" ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="HP EliteBook 8440p", RUN+="keymap $name hewlett-packard_elitebook-8440p" +ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="HDX9494NR", RUN+="keymap $name hewlett-packard-hdx9494nr" # HP Pavillion dv6315ea has empty DMI_VENDOR ATTR{[dmi/id]board_vendor}=="Quanta", ATTR{[dmi/id]board_name}=="30B7", ATTR{[dmi/id]board_version}=="65.2B", RUN+="keymap $name 0x88 media" # "quick play -- cgit v1.2.1 From 5b56ba707fcd0242d79264c7064563cc8ad81977 Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Mon, 28 Jan 2013 16:21:51 +0100 Subject: keymap: Add HP HDX 9494NR: Fix touchpad keys Previous commit had them the wrong way around. https://bugzilla.redhat.com/show_bug.cgi?id=757928 --- keymaps/hewlett-packard-hdx9494nr | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keymaps/hewlett-packard-hdx9494nr b/keymaps/hewlett-packard-hdx9494nr index f3484e125a..92217879c8 100644 --- a/keymaps/hewlett-packard-hdx9494nr +++ b/keymaps/hewlett-packard-hdx9494nr @@ -1,3 +1,3 @@ 0xB2 www # FnF3 -0xD8 f22 # touchpad off -0xD9 f23 # touchpad on +0xD8 f23 # touchpad off +0xD9 f22 # touchpad on -- cgit v1.2.1 From 81d112a8f0522a09fcfe317f420363a2b728137c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 29 Jan 2013 00:36:23 +0100 Subject: update TODO --- TODO | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index 7624068f6c..6e337e0c12 100644 --- a/TODO +++ b/TODO @@ -14,10 +14,13 @@ Bugfixes: * properly handle .mount unit state tracking when two mount points are stacked one on top of another on the exact same mount point. Fedora 19: + * drop no longer needed modprobe.d udlfb file (it does not belong in /etc anyway) * Retest multi-seat (new kms driver for displaylink) +* make sure pkexec works fine with pam_systemd works fine with audit=0 + * create /var/log/journal/ * logind: document new PrepareForSleep(false) semantics and UnlockSessions call in wiki @@ -40,11 +43,17 @@ Fedora 19: * introduce new "journal" group in place of adm? +* localed: + - localectl: add listing support for X11 keymaps, by parsing /usr/share/X11/xkb/rules/xorg.lst + - localectl: support new converted x11→console keymaps + Features: -* introduce ExecCondition= in services +* merge service_kill() logic into unit_kill_context() and unify the code paths -* unify killing logic of service, socket, mount, swap units +* when auto-detecting the main pid of a service, only look for those processes with ppid == 1 + +* introduce ExecCondition= in services * if we have systemd-analyze in C "systemctl dot" should move there too @@ -56,6 +65,8 @@ Features: - honor timezone efi variables for default timezone selection (if there are any?) - introduce bootctl (backed by systemd-bootd) to control temporary and persistent default boot goal plus efi variables +* polkit: add configure switch to enable/disable polkit client side code + * maybe do not install getty@tty1.service symlink in /etc but in /usr? * re-enable "make check" for gtk-doc (broken for unknown reason) @@ -179,10 +190,6 @@ Features: output again, so that the emergency mode isn't totally surprising. Also, terminate plymouth. -* localed: - - localectl: add listing support for X11 keymaps, by parsing /usr/share/X11/xkb/rules/xorg.lst - - localectl: support new converted x11→console keymaps - * libunwind support for coredump pattern hook, and includes this in the message for coredumps. After all, libunwind is now capable to unwind coredumps since a few weeks ago. This probably requires that -- cgit v1.2.1 From 4d62fb4298a5904a53f484636c91540d08f68765 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 29 Jan 2013 01:44:33 +0100 Subject: man: mention pacman at the top of the nspawn man page, too --- man/systemd-nspawn.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index 834e2ccf14..554637d5f1 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -93,9 +93,10 @@ container. Use a tool like - yum8 - or + yum8, debootstrap8 + or + pacman8 to set up an OS directory tree suitable as file system hierarchy for systemd-nspawn containers. @@ -344,7 +345,7 @@ systemd1, chroot1, yum8, - debootstrap8 + debootstrap8, pacman8 -- cgit v1.2.1 From 390b5e558c8d1fc550386f52969ee8dc256e9b3d Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 29 Jan 2013 01:44:39 +0100 Subject: TODO --- TODO | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TODO b/TODO index 6e337e0c12..3e2ff8b6d1 100644 --- a/TODO +++ b/TODO @@ -49,6 +49,10 @@ Fedora 19: Features: +* nspawn: investigate whether we can support the same as LXC's + lxc.network.type=phys mode, and pass through entire network + interfaces to the container + * merge service_kill() logic into unit_kill_context() and unify the code paths * when auto-detecting the main pid of a service, only look for those processes with ppid == 1 -- cgit v1.2.1 From 67e04a486b92fcb656049cb4d6b66148c7d2e61b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 27 Jan 2013 23:53:52 -0500 Subject: journalctl: allow --lines=0 i.e. only new Makes it easier to watch just for new entries. Once scenario is where the user starts 'journalctl -qfn0' to watch for changes during some operation. --- src/journal/journalctl.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 45543a5013..0ec2f331db 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -60,7 +60,7 @@ static bool arg_follow = false; static bool arg_full = false; static bool arg_all = false; static bool arg_no_pager = false; -static unsigned arg_lines = 0; +static int arg_lines = -1; static bool arg_no_tail = false; static bool arg_quiet = false; static bool arg_merge = false; @@ -239,8 +239,8 @@ static int parse_argv(int argc, char *argv[]) { case 'n': if (optarg) { - r = safe_atou(optarg, &arg_lines); - if (r < 0 || arg_lines <= 0) { + r = safe_atoi(optarg, &arg_lines); + if (r < 0 || arg_lines < 0) { log_error("Failed to parse lines '%s'", optarg); return -EINVAL; } @@ -413,7 +413,7 @@ static int parse_argv(int argc, char *argv[]) { } } - if (arg_follow && !arg_no_tail && arg_lines <= 0) + if (arg_follow && !arg_no_tail && arg_lines < 0) arg_lines = 10; if (arg_since_set && arg_until_set && arg_since_set > arg_until_set) { @@ -849,8 +849,8 @@ int main(int argc, char *argv[]) { sd_journal *j = NULL; bool need_seek = false; sd_id128_t previous_boot_id; - bool previous_boot_id_valid = false; - unsigned n_shown = 0; + bool previous_boot_id_valid = false, first_line = true; + int n_shown = 0; setlocale(LC_ALL, ""); log_parse_environment(); @@ -937,6 +937,11 @@ int main(int argc, char *argv[]) { if (r < 0) goto finish; + /* Opening the fd now means the first sd_journal_wait() will actually wait */ + r = sd_journal_get_fd(j); + if (r < 0) + goto finish; + if (arg_field) { const void *data; size_t size; @@ -950,7 +955,7 @@ int main(int argc, char *argv[]) { SD_JOURNAL_FOREACH_UNIQUE(j, data, size) { const void *eq; - if (arg_lines > 0 && n_shown >= arg_lines) + if (arg_lines >= 0 && n_shown >= arg_lines) break; eq = memchr(data, '=', size); @@ -983,7 +988,7 @@ int main(int argc, char *argv[]) { } r = sd_journal_next(j); - } else if (arg_lines > 0) { + } else if (arg_lines >= 0) { r = sd_journal_seek_tail(j); if (r < 0) { log_error("Failed to seek to tail: %s", strerror(-r)); @@ -1032,7 +1037,7 @@ int main(int argc, char *argv[]) { } for (;;) { - while (arg_lines == 0 || arg_follow || n_shown < arg_lines) { + while (arg_lines < 0 || n_shown < arg_lines || (arg_follow && !first_line)) { int flags; if (need_seek) { @@ -1092,6 +1097,8 @@ int main(int argc, char *argv[]) { log_error("Couldn't wait for journal event: %s", strerror(-r)); goto finish; } + + first_line = false; } finish: -- cgit v1.2.1 From e65c85abcf17c9ab92f6a2eb45704a17b466fd64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 28 Jan 2013 22:10:50 -0500 Subject: man: grammar fix --- man/systemd.unit.xml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index dcdfc1e5d6..c09b8aae72 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -159,11 +159,10 @@ Note that while systemd offers a flexible dependency system between units it is recommended to - use this functionality only sparsely and instead rely + use this functionality only sparingly and instead rely on techniques such as bus-based or socket-based - activation which makes dependencies implicit, which - both results in a simpler and more flexible - system. + activation which make dependencies implicit, resulting + in a both simpler and more flexible system. Some unit names reflect paths existing in the file system name space. Example: a device unit -- cgit v1.2.1 From 01233fc71296bc78c2de14b755236ced752500f7 Mon Sep 17 00:00:00 2001 From: Tollef Fog Heen Date: Tue, 29 Jan 2013 17:57:16 +0100 Subject: Clarify sentence --- CODING_STYLE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODING_STYLE b/CODING_STYLE index 04b4ed20e9..d93ccd8a98 100644 --- a/CODING_STYLE +++ b/CODING_STYLE @@ -17,7 +17,7 @@ - Do not issue NSS requests (that includes user name and host name lookups) from the main daemon as this might trigger deadlocks when - we those lookups involve synchronously talking to services that we + those lookups involve synchronously talking to services that we would need to start up - Do not access any directories outside of /etc, /dev, /lib from the -- cgit v1.2.1 From e3ded78be7df143ba780dd55ca8897fdddd67460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 28 Jan 2013 19:36:48 -0500 Subject: shared: introduce _cleanup_set_free_free_ --- src/shared/macro.h | 1 + src/shared/set.c | 8 ++++++++ src/shared/set.h | 1 + 3 files changed, 10 insertions(+) diff --git a/src/shared/macro.h b/src/shared/macro.h index b307dedaa8..055919048c 100644 --- a/src/shared/macro.h +++ b/src/shared/macro.h @@ -201,6 +201,7 @@ static inline size_t IOVEC_INCREMENT(struct iovec *i, unsigned n, size_t k) { #define _cleanup_closedir_ __attribute__((cleanup(closedirp))) #define _cleanup_umask_ __attribute__((cleanup(umaskp))) #define _cleanup_set_free_ __attribute__((cleanup(set_freep))) +#define _cleanup_set_free_free_ __attribute__((cleanup(set_free_freep))) #define _cleanup_strv_free_ __attribute__((cleanup(strv_freep))) #define VA_FORMAT_ADVANCE(format, ap) \ diff --git a/src/shared/set.c b/src/shared/set.c index 53399b655b..cd910d70ab 100644 --- a/src/shared/set.c +++ b/src/shared/set.c @@ -49,6 +49,14 @@ void set_free_free(Set *s) { hashmap_free_free(MAKE_HASHMAP(s)); } +void set_free_freep(Set **s) { + if (!*s) + return; + + set_free_free(*s); + *s = NULL; +} + int set_ensure_allocated(Set **s, hash_func_t hash_func, compare_func_t compare_func) { return hashmap_ensure_allocated((Hashmap**) s, hash_func, compare_func); } diff --git a/src/shared/set.h b/src/shared/set.h index ed5b5a44d6..2f792585fa 100644 --- a/src/shared/set.h +++ b/src/shared/set.h @@ -35,6 +35,7 @@ Set *set_new(hash_func_t hash_func, compare_func_t compare_func); void set_free(Set* s); void set_freep(Set **s); void set_free_free(Set *s); +void set_free_freep(Set **s); Set* set_copy(Set *s); int set_ensure_allocated(Set **s, hash_func_t hash_func, compare_func_t compare_func); -- cgit v1.2.1 From ea55addcb7cd31ab46f7be610cd3dc60c3abb52a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 27 Jan 2013 15:54:00 -0500 Subject: install: use automatic cleanup in find_symlinks_fd() --- src/shared/install.c | 54 ++++++++++++++++------------------------------------ 1 file changed, 16 insertions(+), 38 deletions(-) diff --git a/src/shared/install.c b/src/shared/install.c index a9d75f3b7c..d2da0d8a2c 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -375,7 +375,7 @@ static int find_symlinks_fd( bool *same_name_link) { int r = 0; - DIR *d; + DIR _cleanup_closedir_ *d = NULL; assert(name); assert(fd >= 0); @@ -395,13 +395,11 @@ static int find_symlinks_fd( union dirent_storage buf; k = readdir_r(d, &buf.de, &de); - if (k != 0) { - r = -errno; - break; - } + if (k != 0) + return -errno; if (!de) - break; + return r; if (ignore_file(de->d_name)) continue; @@ -410,7 +408,7 @@ static int find_symlinks_fd( if (de->d_type == DT_DIR) { int nfd, q; - char *p; + char _cleanup_free_ *p = NULL; nfd = openat(fd, de->d_name, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|O_NOFOLLOW); if (nfd < 0) { @@ -425,39 +423,31 @@ static int find_symlinks_fd( p = path_make_absolute(de->d_name, path); if (!p) { close_nointr_nofail(nfd); - r = -ENOMEM; - break; + return -ENOMEM; } /* This will close nfd, regardless whether it succeeds or not */ q = find_symlinks_fd(name, nfd, p, config_path, same_name_link); - free(p); - if (q > 0) { - r = 1; - break; - } + if (q > 0) + return 1; if (r == 0) r = q; } else if (de->d_type == DT_LNK) { - char *p, *dest; + char _cleanup_free_ *p = NULL, *dest = NULL; bool found_path, found_dest, b = false; int q; /* Acquire symlink name */ p = path_make_absolute(de->d_name, path); - if (!p) { - r = -ENOMEM; - break; - } + if (!p) + return -ENOMEM; /* Acquire symlink destination */ q = readlink_and_canonicalize(p, &dest); if (q < 0) { - free(p); - if (q == -ENOENT) continue; @@ -480,37 +470,25 @@ static int find_symlinks_fd( else found_dest = streq(path_get_file_name(dest), name); - free(dest); - if (found_path && found_dest) { - char *t; + char _cleanup_free_ *t = NULL; /* Filter out same name links in the main * config path */ t = path_make_absolute(name, config_path); - if (!t) { - free(p); - r = -ENOMEM; - break; - } + if (!t) + return -ENOMEM; b = path_equal(t, p); - free(t); } - free(p); - if (b) *same_name_link = true; - else if (found_path || found_dest) { - r = 1; - break; - } + else if (found_path || found_dest) + return 1; } } - closedir(d); - return r; } -- cgit v1.2.1 From d9e5e694ea7841045975426163c96fc9f71e6f7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 28 Jan 2013 20:33:10 -0500 Subject: install: automatic cleanup using local cleanup functions --- src/shared/install.c | 387 ++++++++++++++++++--------------------------------- 1 file changed, 134 insertions(+), 253 deletions(-) diff --git a/src/shared/install.c b/src/shared/install.c index d2da0d8a2c..24905e1af6 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -51,6 +51,11 @@ typedef struct { Hashmap *have_installed; } InstallContext; +#define _cleanup_lookup_paths_free_ \ + __attribute__((cleanup(lookup_paths_free))) +#define _cleanup_install_context_done_ \ + __attribute__((cleanup(install_context_done))) + static int lookup_paths_init_from_scope(LookupPaths *paths, UnitFileScope scope) { assert(paths); assert(scope >= 0); @@ -200,7 +205,7 @@ static int remove_marked_symlinks_fd( char** files) { int r = 0; - DIR *d; + DIR _cleanup_closedir_ *d = NULL; assert(remove_symlinks_to); assert(fd >= 0); @@ -237,7 +242,7 @@ static int remove_marked_symlinks_fd( if (de->d_type == DT_DIR) { int nfd, q; - char *p; + char _cleanup_free_ *p = NULL; nfd = openat(fd, de->d_name, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|O_NOFOLLOW); if (nfd < 0) { @@ -252,32 +257,26 @@ static int remove_marked_symlinks_fd( p = path_make_absolute(de->d_name, path); if (!p) { close_nointr_nofail(nfd); - r = -ENOMEM; - break; + return -ENOMEM; } /* This will close nfd, regardless whether it succeeds or not */ q = remove_marked_symlinks_fd(remove_symlinks_to, nfd, p, config_path, deleted, changes, n_changes, files); - free(p); if (r == 0) r = q; } else if (de->d_type == DT_LNK) { - char *p, *dest; + char _cleanup_free_ *p = NULL, *dest = NULL; int q; bool found; p = path_make_absolute(de->d_name, path); - if (!p) { - r = -ENOMEM; - break; - } + if (!p) + return -ENOMEM; q = readlink_and_canonicalize(p, &dest); if (q < 0) { - free(p); - if (q == -ENOENT) continue; @@ -316,14 +315,9 @@ static int remove_marked_symlinks_fd( } } } - - free(p); - free(dest); } } - closedir(d); - return r; } @@ -713,25 +707,25 @@ int unit_file_link( UnitFileChange **changes, unsigned *n_changes) { - LookupPaths paths; - char **i, *config_path = NULL; + LookupPaths _cleanup_lookup_paths_free_ paths = {NULL}; + char **i; + char _cleanup_free_ *config_path = NULL; int r, q; assert(scope >= 0); assert(scope < _UNIT_FILE_SCOPE_MAX); - zero(paths); - r = lookup_paths_init_from_scope(&paths, scope); if (r < 0) return r; r = get_config_path(scope, runtime, root_dir, &config_path); if (r < 0) - goto finish; + return r; STRV_FOREACH(i, files) { - char *path, *fn; + char _cleanup_free_ *path = NULL; + char *fn; struct stat st; fn = path_get_file_name(*i); @@ -755,48 +749,34 @@ int unit_file_link( } q = in_search_path(*i, paths.unit_path); - if (q < 0) { - r = q; - break; - } + if (q < 0) + return q; if (q > 0) continue; path = path_make_absolute(fn, config_path); - if (!path) { - r = -ENOMEM; - break; - } + if (!path) + return -ENOMEM; if (symlink(*i, path) >= 0) { add_file_change(changes, n_changes, UNIT_FILE_SYMLINK, path, *i); - - free(path); continue; } if (errno == EEXIST) { - char *dest = NULL; + char _cleanup_free_ *dest = NULL; q = readlink_and_make_absolute(path, &dest); if (q < 0 && errno != ENOENT) { - free(path); - if (r == 0) r = q; - continue; } - if (q >= 0 && path_equal(dest, *i)) { - free(dest); - free(path); + if (q >= 0 && path_equal(dest, *i)) continue; - } - - free(dest); if (force) { unlink(path); @@ -806,7 +786,6 @@ int unit_file_link( add_file_change(changes, n_changes, UNIT_FILE_UNLINK, path, NULL); add_file_change(changes, n_changes, UNIT_FILE_SYMLINK, path, *i); - free(path); continue; } } @@ -817,14 +796,8 @@ int unit_file_link( if (r == 0) r = -errno; } - - free(path); } - finish: - lookup_paths_free(&paths); - free(config_path); - return r; } @@ -975,7 +948,7 @@ static int config_parse_also( assert(rvalue); FOREACH_WORD_QUOTED(w, l, rvalue, state) { - char *n; + char _cleanup_free_ *n; int r; n = strndup(w, l); @@ -983,12 +956,8 @@ static int config_parse_also( return -ENOMEM; r = install_info_add(c, n, NULL); - if (r < 0) { - free(n); + if (r < 0) return r; - } - - free(n); } return 0; @@ -1009,7 +978,7 @@ static int unit_file_load( }; int fd; - FILE *f; + FILE _cleanup_fclose_ *f = NULL; int r; assert(c); @@ -1027,7 +996,6 @@ static int unit_file_load( } r = config_parse(path, f, NULL, config_item_table_lookup, (void*) items, true, info); - fclose(f); if (r < 0) return r; @@ -1127,15 +1095,13 @@ static int unit_file_can_install( const char *name, bool allow_symlink) { - InstallContext c; + InstallContext _cleanup_install_context_done_ c = {NULL}; InstallInfo *i; int r; assert(paths); assert(name); - zero(c); - r = install_info_add_auto(&c, name); if (r < 0) return r; @@ -1150,8 +1116,6 @@ static int unit_file_can_install( strv_length(i->wanted_by) + strv_length(i->required_by); - install_context_done(&c); - return r; } @@ -1162,7 +1126,7 @@ static int create_symlink( UnitFileChange **changes, unsigned *n_changes) { - char *dest; + char _cleanup_free_ *dest = NULL; int r; assert(old_path); @@ -1182,12 +1146,8 @@ static int create_symlink( if (r < 0) return r; - if (path_equal(dest, old_path)) { - free(dest); + if (path_equal(dest, old_path)) return 0; - } - - free(dest); if (!force) return -EEXIST; @@ -1311,7 +1271,7 @@ static int install_info_symlink_link( unsigned *n_changes) { int r; - char *path; + char _cleanup_free_ *path = NULL; assert(i); assert(paths); @@ -1326,8 +1286,6 @@ static int install_info_symlink_link( return -ENOMEM; r = create_symlink(i->path, path, force, changes, n_changes); - free(path); - return r; } @@ -1466,29 +1424,27 @@ int unit_file_enable( UnitFileChange **changes, unsigned *n_changes) { - LookupPaths paths; - InstallContext c; - char **i, *config_path = NULL; + LookupPaths _cleanup_lookup_paths_free_ paths = {NULL}; + InstallContext _cleanup_install_context_done_ c = {NULL}; + char **i; + char _cleanup_free_ *config_path = NULL; int r; assert(scope >= 0); assert(scope < _UNIT_FILE_SCOPE_MAX); - zero(paths); - zero(c); - r = lookup_paths_init_from_scope(&paths, scope); if (r < 0) return r; r = get_config_path(scope, runtime, root_dir, &config_path); if (r < 0) - goto finish; + return r; STRV_FOREACH(i, files) { r = install_info_add_auto(&c, *i); if (r < 0) - goto finish; + return r; } /* This will return the number of symlink rules that were @@ -1496,12 +1452,6 @@ int unit_file_enable( useful to determine whether the passed files had any installation data at all. */ r = install_context_apply(&c, &paths, config_path, root_dir, force, changes, n_changes); - -finish: - install_context_done(&c); - lookup_paths_free(&paths); - free(config_path); - return r; } @@ -1513,30 +1463,28 @@ int unit_file_disable( UnitFileChange **changes, unsigned *n_changes) { - LookupPaths paths; - InstallContext c; - char **i, *config_path = NULL; - Set *remove_symlinks_to = NULL; + LookupPaths _cleanup_lookup_paths_free_ paths = {NULL}; + InstallContext _cleanup_install_context_done_ c = {NULL}; + char **i; + char _cleanup_free_ *config_path = NULL; + Set _cleanup_set_free_free_ *remove_symlinks_to = NULL; int r, q; assert(scope >= 0); assert(scope < _UNIT_FILE_SCOPE_MAX); - zero(paths); - zero(c); - r = lookup_paths_init_from_scope(&paths, scope); if (r < 0) return r; r = get_config_path(scope, runtime, root_dir, &config_path); if (r < 0) - goto finish; + return r; STRV_FOREACH(i, files) { r = install_info_add_auto(&c, *i); if (r < 0) - goto finish; + return r; } r = install_context_mark_for_removal(&c, &paths, &remove_symlinks_to, config_path, root_dir); @@ -1545,12 +1493,6 @@ int unit_file_disable( if (r == 0) r = q; -finish: - install_context_done(&c); - lookup_paths_free(&paths); - set_free_free(remove_symlinks_to); - free(config_path); - return r; } @@ -1563,34 +1505,32 @@ int unit_file_reenable( UnitFileChange **changes, unsigned *n_changes) { - LookupPaths paths; - InstallContext c; - char **i, *config_path = NULL; - Set *remove_symlinks_to = NULL; + LookupPaths _cleanup_lookup_paths_free_ paths = {NULL}; + InstallContext _cleanup_install_context_done_ c = {NULL}; + char **i; + char _cleanup_free_ *config_path = NULL; + Set _cleanup_set_free_free_ *remove_symlinks_to = NULL; int r, q; assert(scope >= 0); assert(scope < _UNIT_FILE_SCOPE_MAX); - zero(paths); - zero(c); - r = lookup_paths_init_from_scope(&paths, scope); if (r < 0) return r; r = get_config_path(scope, runtime, root_dir, &config_path); if (r < 0) - goto finish; + return r; STRV_FOREACH(i, files) { r = mark_symlink_for_removal(&remove_symlinks_to, *i); if (r < 0) - goto finish; + return r; r = install_info_add_auto(&c, *i); if (r < 0) - goto finish; + return r; } r = remove_marked_symlinks(remove_symlinks_to, config_path, changes, n_changes, files); @@ -1600,12 +1540,6 @@ int unit_file_reenable( if (r == 0) r = q; -finish: - lookup_paths_free(&paths); - install_context_done(&c); - set_free_free(remove_symlinks_to); - free(config_path); - return r; } @@ -1614,17 +1548,16 @@ UnitFileState unit_file_get_state( const char *root_dir, const char *name) { - LookupPaths paths; + LookupPaths _cleanup_lookup_paths_free_ paths = {NULL}; UnitFileState state = _UNIT_FILE_STATE_INVALID; - char **i, *path = NULL; + char **i; + char _cleanup_free_ *path = NULL; int r; assert(scope >= 0); assert(scope < _UNIT_FILE_SCOPE_MAX); assert(name); - zero(paths); - if (root_dir && scope != UNIT_FILE_SYSTEM) return -EINVAL; @@ -1646,65 +1579,50 @@ UnitFileState unit_file_get_state( else asprintf(&path, "%s/%s", *i, name); - if (!path) { - r = -ENOMEM; - goto finish; - } + if (!path) + return -ENOMEM; if (lstat(path, &st) < 0) { r = -errno; if (errno == ENOENT) continue; - goto finish; + return -errno; } - if (!S_ISREG(st.st_mode) && !S_ISLNK(st.st_mode)) { - r = -ENOENT; - goto finish; - } + if (!S_ISREG(st.st_mode) && !S_ISLNK(st.st_mode)) + return -ENOENT; r = null_or_empty_path(path); if (r < 0 && r != -ENOENT) - goto finish; + return r; else if (r > 0) { state = path_startswith(*i, "/run") ? UNIT_FILE_MASKED_RUNTIME : UNIT_FILE_MASKED; - r = 0; - goto finish; + return state; } r = find_symlinks_in_scope(scope, root_dir, name, &state); - if (r < 0) { - goto finish; - } else if (r > 0) { - r = 0; - goto finish; - } + if (r < 0) + return r; + else if (r > 0) + return state; r = unit_file_can_install(&paths, root_dir, path, true); if (r < 0 && errno != -ENOENT) - goto finish; - else if (r > 0) { - state = UNIT_FILE_DISABLED; - r = 0; - goto finish; - } else if (r == 0) { - state = UNIT_FILE_STATIC; - r = 0; - goto finish; - } + return r; + else if (r > 0) + return UNIT_FILE_DISABLED; + else if (r == 0) + return UNIT_FILE_STATIC; } -finish: - lookup_paths_free(&paths); - free(path); - return r < 0 ? r : state; } int unit_file_query_preset(UnitFileScope scope, const char *name) { - char **files, **i; + char _cleanup_strv_free_ **files = NULL; + char **i; int r; assert(scope >= 0); @@ -1733,15 +1651,14 @@ int unit_file_query_preset(UnitFileScope scope, const char *name) { return r; STRV_FOREACH(i, files) { - FILE *f; + FILE _cleanup_fclose_ *f; f = fopen(*i, "re"); if (!f) { if (errno == ENOENT) continue; - r = -errno; - goto finish; + return -errno; } for (;;) { @@ -1761,34 +1678,23 @@ int unit_file_query_preset(UnitFileScope scope, const char *name) { l += 6; l += strspn(l, WHITESPACE); - if (fnmatch(l, name, FNM_NOESCAPE) == 0) { - r = 1; - fclose(f); - goto finish; - } + if (fnmatch(l, name, FNM_NOESCAPE) == 0) + return 1; + } else if (first_word(l, "disable")) { l += 7; l += strspn(l, WHITESPACE); - if (fnmatch(l, name, FNM_NOESCAPE) == 0) { - r = 0; - fclose(f); - goto finish; - } + if (fnmatch(l, name, FNM_NOESCAPE) == 0) + return 0; + } else log_debug("Couldn't parse line '%s'", l); } - - fclose(f); } /* Default is "enable" */ - r = 1; - -finish: - strv_free(files); - - return r; + return 1; } int unit_file_preset( @@ -1800,37 +1706,32 @@ int unit_file_preset( UnitFileChange **changes, unsigned *n_changes) { - LookupPaths paths; - InstallContext plus, minus; - char **i, *config_path = NULL; - Set *remove_symlinks_to = NULL; + LookupPaths _cleanup_lookup_paths_free_ paths = {NULL}; + InstallContext _cleanup_install_context_done_ plus = {NULL}, minus = {NULL}; + char **i; + char _cleanup_free_ *config_path = NULL; + Set _cleanup_set_free_free_ *remove_symlinks_to = NULL; int r, q; assert(scope >= 0); assert(scope < _UNIT_FILE_SCOPE_MAX); - zero(paths); - zero(plus); - zero(minus); - r = lookup_paths_init_from_scope(&paths, scope); if (r < 0) return r; r = get_config_path(scope, runtime, root_dir, &config_path); if (r < 0) - goto finish; + return r; STRV_FOREACH(i, files) { - if (!unit_name_is_valid(*i, true)) { - r = -EINVAL; - goto finish; - } + if (!unit_name_is_valid(*i, true)) + return -EINVAL; r = unit_file_query_preset(scope, *i); if (r < 0) - goto finish; + return r; if (r) r = install_info_add_auto(&plus, *i); @@ -1838,46 +1739,49 @@ int unit_file_preset( r = install_info_add_auto(&minus, *i); if (r < 0) - goto finish; + return r; } - r = install_context_mark_for_removal(&minus, &paths, &remove_symlinks_to, config_path, root_dir); + r = install_context_mark_for_removal(&minus, &paths, &remove_symlinks_to, + config_path, root_dir); - q = remove_marked_symlinks(remove_symlinks_to, config_path, changes, n_changes, files); + q = remove_marked_symlinks(remove_symlinks_to, config_path, + changes, n_changes, files); if (r == 0) r = q; /* Returns number of symlinks that where supposed to be installed. */ - q = install_context_apply(&plus, &paths, config_path, root_dir, force, changes, n_changes); + q = install_context_apply(&plus, &paths, config_path, root_dir, force, + changes, n_changes); if (r == 0) r = q; -finish: - lookup_paths_free(&paths); - install_context_done(&plus); - install_context_done(&minus); - set_free_free(remove_symlinks_to); - free(config_path); - return r; } +static void unitfilelist_free(UnitFileList **f) { + if (!*f) + return; + + free((*f)->path); + free(*f); +} + int unit_file_get_list( UnitFileScope scope, const char *root_dir, Hashmap *h) { - LookupPaths paths; - char **i, *buf = NULL; - DIR *d = NULL; + LookupPaths _cleanup_lookup_paths_free_ paths = {NULL}; + char **i; + char _cleanup_free_ *buf = NULL; + DIR _cleanup_closedir_ *d = NULL; int r; assert(scope >= 0); assert(scope < _UNIT_FILE_SCOPE_MAX); assert(h); - zero(paths); - if (root_dir && scope != UNIT_FILE_SYSTEM) return -EINVAL; @@ -1892,10 +1796,9 @@ int unit_file_get_list( buf = NULL; if (root_dir) { - if (asprintf(&buf, "%s/%s", root_dir, *i) < 0) { - r = -ENOMEM; - goto finish; - } + if (asprintf(&buf, "%s/%s", root_dir, *i) < 0) + return -ENOMEM; + units_dir = buf; } else units_dir = *i; @@ -1908,20 +1811,18 @@ int unit_file_get_list( if (errno == ENOENT) continue; - r = -errno; - goto finish; + return -errno; } for (;;) { struct dirent *de; union dirent_storage buffer; - UnitFileList *f; + UnitFileList __attribute__((cleanup(unitfilelist_free))) + *f = NULL; r = readdir_r(d, &buffer.de, &de); - if (r != 0) { - r = -r; - goto finish; - } + if (r != 0) + return -r; if (!de) break; @@ -1940,31 +1841,24 @@ int unit_file_get_list( if (r == -ENOENT) continue; - goto finish; + return r; } if (de->d_type != DT_LNK && de->d_type != DT_REG) continue; f = new0(UnitFileList, 1); - if (!f) { - r = -ENOMEM; - goto finish; - } + if (!f) + return -ENOMEM; f->path = path_make_absolute(de->d_name, units_dir); - if (!f->path) { - free(f); - r = -ENOMEM; - goto finish; - } + if (!f->path) + return -ENOMEM; r = null_or_empty_path(f->path); - if (r < 0 && r != -ENOENT) { - free(f->path); - free(f); - goto finish; - } else if (r > 0) { + if (r < 0 && r != -ENOENT) + return r; + else if (r > 0) { f->state = path_startswith(*i, "/run") ? UNIT_FILE_MASKED_RUNTIME : UNIT_FILE_MASKED; @@ -1972,11 +1866,9 @@ int unit_file_get_list( } r = find_symlinks_in_scope(scope, root_dir, de->d_name, &f->state); - if (r < 0) { - free(f->path); - free(f); - goto finish; - } else if (r > 0) { + if (r < 0) + return r; + else if (r > 0) { f->state = UNIT_FILE_ENABLED; goto found; } @@ -1986,32 +1878,21 @@ int unit_file_get_list( r == -EBADMSG || /* Invalid format? */ r == -ENOENT /* Included file not found? */) f->state = UNIT_FILE_INVALID; - else if (r < 0) { - free(f->path); - free(f); - goto finish; - } else if (r > 0) + else if (r < 0) + return r; + else if (r > 0) f->state = UNIT_FILE_DISABLED; else f->state = UNIT_FILE_STATIC; found: r = hashmap_put(h, path_get_file_name(f->path), f); - if (r < 0) { - free(f->path); - free(f); - goto finish; - } + if (r < 0) + return r; + f = NULL; /* prevent cleanup */ } } -finish: - lookup_paths_free(&paths); - free(buf); - - if (d) - closedir(d); - return r; } -- cgit v1.2.1 From d848b9cbfa0ba72381363accce481600169df2eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 27 Jan 2013 19:44:52 -0500 Subject: Move generic specifier functions to shared No functional change. This makes it possible to use them in install.c. --- src/core/unit-printf.c | 36 ------------------------------------ src/shared/specifier.c | 36 ++++++++++++++++++++++++++++++++++++ src/shared/specifier.h | 6 +++++- 3 files changed, 41 insertions(+), 37 deletions(-) diff --git a/src/core/unit-printf.c b/src/core/unit-printf.c index a58c96c238..3aa735e5b2 100644 --- a/src/core/unit-printf.c +++ b/src/core/unit-printf.c @@ -211,42 +211,6 @@ static char *specifier_user_shell(char specifier, void *data, void *userdata) { return strdup(shell); } -static char *specifier_machine_id(char specifier, void *data, void *userdata) { - sd_id128_t id; - char *buf; - int r; - - r = sd_id128_get_machine(&id); - if (r < 0) - return NULL; - - buf = new(char, 33); - if (!buf) - return NULL; - - return sd_id128_to_string(id, buf); -} - -static char *specifier_boot_id(char specifier, void *data, void *userdata) { - sd_id128_t id; - char *buf; - int r; - - r = sd_id128_get_boot(&id); - if (r < 0) - return NULL; - - buf = new(char, 33); - if (!buf) - return NULL; - - return sd_id128_to_string(id, buf); -} - -static char *specifier_host_name(char specifier, void *data, void *userdata) { - return gethostname_malloc(); -} - char *unit_name_printf(Unit *u, const char* format) { /* diff --git a/src/shared/specifier.c b/src/shared/specifier.c index 599027cd47..7577c91052 100644 --- a/src/shared/specifier.c +++ b/src/shared/specifier.c @@ -109,3 +109,39 @@ char *specifier_printf(const char *text, const Specifier table[], void *userdata char* specifier_string(char specifier, void *data, void *userdata) { return strdup(strempty(data)); } + +char *specifier_machine_id(char specifier, void *data, void *userdata) { + sd_id128_t id; + char *buf; + int r; + + r = sd_id128_get_machine(&id); + if (r < 0) + return NULL; + + buf = new(char, 33); + if (!buf) + return NULL; + + return sd_id128_to_string(id, buf); +} + +char *specifier_boot_id(char specifier, void *data, void *userdata) { + sd_id128_t id; + char *buf; + int r; + + r = sd_id128_get_boot(&id); + if (r < 0) + return NULL; + + buf = new(char, 33); + if (!buf) + return NULL; + + return sd_id128_to_string(id, buf); +} + +char *specifier_host_name(char specifier, void *data, void *userdata) { + return gethostname_malloc(); +} diff --git a/src/shared/specifier.h b/src/shared/specifier.h index 25a27a423f..0440dcac48 100644 --- a/src/shared/specifier.h +++ b/src/shared/specifier.h @@ -31,4 +31,8 @@ typedef struct Specifier { char *specifier_printf(const char *text, const Specifier table[], void *userdata); -char* specifier_string(char specifier, void *data, void *userdata); +char *specifier_string(char specifier, void *data, void *userdata); + +char *specifier_machine_id(char specifier, void *data, void *userdata); +char *specifier_boot_id(char specifier, void *data, void *userdata); +char *specifier_host_name(char specifier, void *data, void *userdata); -- cgit v1.2.1 From 0591220f339c313761f9a208e88fb719db566993 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 29 Jan 2013 10:32:39 -0500 Subject: core: fix %U when no User= used When the username was not explicitly specified, both %U and %u would print the username. Make %U always print UID. --- src/core/unit-printf.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/core/unit-printf.c b/src/core/unit-printf.c index 3aa735e5b2..7430beb3da 100644 --- a/src/core/unit-printf.c +++ b/src/core/unit-printf.c @@ -26,6 +26,7 @@ #include "strv.h" #include "unit-name.h" #include "unit-printf.h" +#include "macro.h" static char *specifier_prefix_and_instance(char specifier, void *data, void *userdata) { Unit *u = userdata; @@ -123,6 +124,7 @@ static char *specifier_user_name(char specifier, void *data, void *userdata) { ExecContext *c; int r; const char *username; + char _cleanup_free_ *tmp = NULL; uid_t uid; char *printed = NULL; @@ -130,12 +132,13 @@ static char *specifier_user_name(char specifier, void *data, void *userdata) { c = unit_get_exec_context(u); - /* get USER env from our own env if set */ - if (!c || !c->user) - return getusername_malloc(); + if (c && c->user) + username = c->user; + else + /* get USER env from env or our own uid */ + username = tmp = getusername_malloc(); /* fish username from passwd */ - username = c->user; r = get_user_creds(&username, &uid, NULL, NULL, NULL); if (r < 0) return NULL; -- cgit v1.2.1 From 7584d236eac91f9b7128b1eb08bddf18be2bce9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 27 Jan 2013 23:11:31 -0500 Subject: install: allow specifiers in WantedBy/RequiredBy/Alias This allows one templated unit to refer to another templated unit at installation time. Examples: > grep WantedBy ~/.config/systemd/user/mpop@.timer WantedBy=services@%i.target > srv disable mpop@iit.timer rm '/home/alxchk/.config/systemd/user/services@iit.target.wants/mpop@iit.timer' > srv enable mpop@iit.timer ln -s '/home/alxchk/.config/systemd/user/mpop@.timer' '/home/alxchk/.config/systemd/user/services@iit.target.wants/mpop@iit.timer' Based-on-patch-by: Oleksii Shevchuk --- Makefile.am | 8 +++- man/systemd.unit.xml | 4 ++ src/core/unit-printf.c | 4 +- src/shared/install-printf.c | 95 +++++++++++++++++++++++++++++++++++++++++++++ src/shared/install-printf.h | 25 ++++++++++++ src/shared/install.c | 42 ++++++++++---------- src/shared/install.h | 9 +++++ 7 files changed, 162 insertions(+), 25 deletions(-) create mode 100644 src/shared/install-printf.c create mode 100644 src/shared/install-printf.h diff --git a/Makefile.am b/Makefile.am index 8d10144a94..c44ca0b76d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -901,6 +901,8 @@ noinst_LTLIBRARIES += \ libsystemd_units_la_SOURCES = \ src/shared/install.c \ src/shared/install.h \ + src/shared/install-printf.c \ + src/shared/install-printf.h \ src/shared/path-lookup.c \ src/shared/path-lookup.h @@ -1403,7 +1405,8 @@ test_strv_SOURCES = \ src/test/test-strv.c test_strv_LDADD = \ - libsystemd-shared.la + libsystemd-shared.la \ + libsystemd-id128-internal.la test_install_SOURCES = \ src/test/test-install.c @@ -1415,7 +1418,8 @@ test_install_CFLAGS = \ test_install_LDADD = \ libsystemd-units.la \ libsystemd-label.la \ - libsystemd-shared.la + libsystemd-shared.la \ + libsystemd-id128-internal.la test_watchdog_SOURCES = \ src/test/test-watchdog.c diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index c09b8aae72..7c3a6c75f8 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -994,6 +994,10 @@ + The following specifiers are interpreted in the + Install section: %n, %N, %p, %i, %U, %u, %m, %H, %b. + For their meaning see the next section. + diff --git a/src/core/unit-printf.c b/src/core/unit-printf.c index 7430beb3da..7415824cdf 100644 --- a/src/core/unit-printf.c +++ b/src/core/unit-printf.c @@ -250,12 +250,13 @@ char *unit_full_printf(Unit *u, const char *format) { * %r root cgroup path of this systemd instance (e.g. "/user/lennart/shared/systemd-4711") * %R parent of root cgroup path (e.g. "/usr/lennart/shared") * %t the runtime directory to place sockets in (e.g. "/run" or $XDG_RUNTIME_DIR) + * %U the UID of the configured user or running user * %u the username of the configured user or running user * %h the homedir of the configured user or running user * %s the shell of the configured user or running user * %m the machine ID of the running system - * %b the boot ID of the running system * %H the host name of the running system + * %b the boot ID of the running system */ const Specifier table[] = { @@ -282,7 +283,6 @@ char *unit_full_printf(Unit *u, const char *format) { { 0, NULL, NULL } }; - assert(u); assert(format); return specifier_printf(format, table, u); diff --git a/src/shared/install-printf.c b/src/shared/install-printf.c new file mode 100644 index 0000000000..85aebc42cc --- /dev/null +++ b/src/shared/install-printf.c @@ -0,0 +1,95 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include + +#include "specifier.h" +#include "unit-name.h" +#include "install-printf.h" + +static char *specifier_prefix_and_instance(char specifier, void *data, void *userdata) { + InstallInfo *i = userdata; + assert(i); + + return unit_name_to_prefix_and_instance(i->name); +} + +static char *specifier_prefix(char specifier, void *data, void *userdata) { + InstallInfo *i = userdata; + assert(i); + + return unit_name_to_prefix(i->name); +} + +static char *specifier_instance(char specifier, void *data, void *userdata) { + InstallInfo *i = userdata; + char *instance; + int r; + + assert(i); + + r = unit_name_to_instance(i->name, &instance); + if (r < 0) + return NULL; + if (instance != NULL) + return instance; + else + return strdup(""); +} + +char *install_full_printf(InstallInfo *i, const char *format) { + + /* This is similar to unit_full_printf() but does not support + * anything path-related. + * + * %n: the full id of the unit (foo@bar.waldo) + * %N: the id of the unit without the suffix (foo@bar) + * %p: the prefix (foo) + * %i: the instance (bar) + + * %U the UID of the configured user or running user + * %u the username of the configured user or running user + * %m the machine ID of the running system + * %H the host name of the running system + * %b the boot ID of the running system + */ + + const Specifier table[] = { + { 'n', specifier_string, i->name }, + { 'N', specifier_prefix_and_instance, NULL }, + { 'p', specifier_prefix, NULL }, + { 'i', specifier_instance, NULL }, + +// { 'U', specifier_user_name, NULL }, +// { 'u', specifier_user_name, NULL }, + + { 'm', specifier_machine_id, NULL }, + { 'H', specifier_host_name, NULL }, + { 'b', specifier_boot_id, NULL }, + { 0, NULL, NULL } + }; + + assert(i); + assert(format); + + return specifier_printf(format, table, i); +} diff --git a/src/shared/install-printf.h b/src/shared/install-printf.h new file mode 100644 index 0000000000..46f5294d21 --- /dev/null +++ b/src/shared/install-printf.h @@ -0,0 +1,25 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#pragma once + +#include "install.h" +char *install_full_printf(InstallInfo *i, const char *format); diff --git a/src/shared/install.c b/src/shared/install.c index 24905e1af6..7fb352cfff 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -36,15 +36,8 @@ #include "install.h" #include "conf-parser.h" #include "conf-files.h" - -typedef struct { - char *name; - char *path; - - char **aliases; - char **wanted_by; - char **required_by; -} InstallInfo; +#include "specifier.h" +#include "install-printf.h" typedef struct { Hashmap *will_install; @@ -1177,16 +1170,17 @@ static int install_info_symlink_alias( assert(config_path); STRV_FOREACH(s, i->aliases) { - char *alias_path; + char _cleanup_free_ *alias_path = NULL, *dst = NULL; - alias_path = path_make_absolute(*s, config_path); + dst = install_full_printf(i, *s); + if (!dst) + return -ENOMEM; + alias_path = path_make_absolute(dst, config_path); if (!alias_path) return -ENOMEM; q = create_symlink(i->path, alias_path, force, changes, n_changes); - free(alias_path); - if (r == 0) r = q; } @@ -1208,18 +1202,21 @@ static int install_info_symlink_wants( assert(config_path); STRV_FOREACH(s, i->wanted_by) { - char *path; + char _cleanup_free_ *path = NULL, *dst = NULL; - if (!unit_name_is_valid(*s, true)) { + dst = install_full_printf(i, *s); + if (!dst) + return -ENOMEM; + + if (!unit_name_is_valid(dst, true)) { r = -EINVAL; continue; } - if (asprintf(&path, "%s/%s.wants/%s", config_path, *s, i->name) < 0) + if (asprintf(&path, "%s/%s.wants/%s", config_path, dst, i->name) < 0) return -ENOMEM; q = create_symlink(i->path, path, force, changes, n_changes); - free(path); if (r == 0) r = q; @@ -1242,18 +1239,21 @@ static int install_info_symlink_requires( assert(config_path); STRV_FOREACH(s, i->required_by) { - char *path; + char _cleanup_free_ *path = NULL, *dst = NULL; - if (!unit_name_is_valid(*s, true)) { + dst = install_full_printf(i, *s); + if (!dst) + return -ENOMEM; + + if (!unit_name_is_valid(dst, true)) { r = -EINVAL; continue; } - if (asprintf(&path, "%s/%s.requires/%s", config_path, *s, i->name) < 0) + if (asprintf(&path, "%s/%s.requires/%s", config_path, dst, i->name) < 0) return -ENOMEM; q = create_symlink(i->path, path, force, changes, n_changes); - free(path); if (r == 0) r = q; diff --git a/src/shared/install.h b/src/shared/install.h index 55249914b1..5a351254bb 100644 --- a/src/shared/install.h +++ b/src/shared/install.h @@ -63,6 +63,15 @@ typedef struct UnitFileList { UnitFileState state; } UnitFileList; +typedef struct { + char *name; + char *path; + + char **aliases; + char **wanted_by; + char **required_by; +} InstallInfo; + int unit_file_enable(UnitFileScope scope, bool runtime, const char *root_dir, char *files[], bool force, UnitFileChange **changes, unsigned *n_changes); int unit_file_disable(UnitFileScope scope, bool runtime, const char *root_dir, char *files[], UnitFileChange **changes, unsigned *n_changes); int unit_file_reenable(UnitFileScope scope, bool runtime, const char *root_dir, char *files[], bool force, UnitFileChange **changes, unsigned *n_changes); -- cgit v1.2.1 From 3f0b2f0f452e94444e4fb7b62030ea05738bb1b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 28 Jan 2013 22:34:38 -0500 Subject: install: allow %u an and %U specifiers in WantedBy/RequiredBy/Alias --- src/shared/install-printf.c | 41 +++++++++++++++++++++++++++++++++++++++-- src/shared/install.c | 28 ++++++++++++++++++++++++++++ src/shared/install.h | 1 + 3 files changed, 68 insertions(+), 2 deletions(-) diff --git a/src/shared/install-printf.c b/src/shared/install-printf.c index 85aebc42cc..10b0cf379b 100644 --- a/src/shared/install-printf.c +++ b/src/shared/install-printf.c @@ -24,6 +24,7 @@ #include "specifier.h" #include "unit-name.h" +#include "util.h" #include "install-printf.h" static char *specifier_prefix_and_instance(char specifier, void *data, void *userdata) { @@ -56,6 +57,42 @@ static char *specifier_instance(char specifier, void *data, void *userdata) { return strdup(""); } +static char *specifier_user_name(char specifier, void *data, void *userdata) { + InstallInfo *i = userdata; + const char *username; + char _cleanup_free_ *tmp = NULL; + char *printed = NULL; + + assert(i); + + if (i->user) + username = i->user; + else + /* get USER env from env or our own uid */ + username = tmp = getusername_malloc(); + + switch (specifier) { + case 'u': + printed = strdup(username); + break; + case 'U': { + /* fish username from passwd */ + uid_t uid; + int r; + + r = get_user_creds(&username, &uid, NULL, NULL, NULL); + if (r < 0) + return NULL; + + if (asprintf(&printed, "%d", uid) < 0) + return NULL; + break; + }} + + return printed; +} + + char *install_full_printf(InstallInfo *i, const char *format) { /* This is similar to unit_full_printf() but does not support @@ -79,8 +116,8 @@ char *install_full_printf(InstallInfo *i, const char *format) { { 'p', specifier_prefix, NULL }, { 'i', specifier_instance, NULL }, -// { 'U', specifier_user_name, NULL }, -// { 'u', specifier_user_name, NULL }, + { 'U', specifier_user_name, NULL }, + { 'u', specifier_user_name, NULL }, { 'm', specifier_machine_id, NULL }, { 'H', specifier_host_name, NULL }, diff --git a/src/shared/install.c b/src/shared/install.c index 7fb352cfff..b82d1891dd 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -956,6 +956,33 @@ static int config_parse_also( return 0; } +static int config_parse_user( + const char *filename, + unsigned line, + const char *section, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + InstallInfo *i = data; + char* printed; + + assert(filename); + assert(lvalue); + assert(rvalue); + + printed = install_full_printf(i, rvalue); + if (!printed) + return -ENOMEM; + + free(i->user); + i->user = printed; + + return 0; +} + static int unit_file_load( InstallContext *c, InstallInfo *info, @@ -967,6 +994,7 @@ static int unit_file_load( { "Install", "WantedBy", config_parse_strv, 0, &info->wanted_by }, { "Install", "RequiredBy", config_parse_strv, 0, &info->required_by }, { "Install", "Also", config_parse_also, 0, c }, + { "Exec", "User", config_parse_user, 0, info }, { NULL, NULL, NULL, 0, NULL } }; diff --git a/src/shared/install.h b/src/shared/install.h index 5a351254bb..755dddeb12 100644 --- a/src/shared/install.h +++ b/src/shared/install.h @@ -66,6 +66,7 @@ typedef struct UnitFileList { typedef struct { char *name; char *path; + char *user; char **aliases; char **wanted_by; -- cgit v1.2.1 From 7742f7e999d58062b9784be83553eda109fff366 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 29 Jan 2013 14:39:06 -0500 Subject: tests: add test for install_full_printf() --- src/test/test-unit-file.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c index de8be3257a..85191310d4 100644 --- a/src/test/test-unit-file.c +++ b/src/test/test-unit-file.c @@ -27,6 +27,8 @@ #include #include "install.h" +#include "install-printf.h" +#include "specifier.h" #include "util.h" #include "macro.h" #include "hashmap.h" @@ -228,6 +230,74 @@ static void test_load_env_file_2(void) { unlink(name); } +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnonnull" + +static void test_install_printf(void) { + char name[] = "name.service", + path[] = "/run/systemd/systemd/name.service", + user[] = "xxxx-no-such-user"; + InstallInfo i = {name, path, user}; + InstallInfo i2 = {name, path, NULL}; + char name3[] = "name@inst.service", + path3[] = "/run/systemd/systemd/name.service"; + InstallInfo i3 = {name3, path3, user}; + InstallInfo i4 = {name3, path3, NULL}; + + char _cleanup_free_ *mid, *bid, *host; + + assert_se((mid = specifier_machine_id('m', NULL, NULL))); + assert_se((bid = specifier_boot_id('b', NULL, NULL))); + assert_se((host = gethostname_malloc())); + +#define expect(src, pattern, result) \ + { \ + char _cleanup_free_ *t = install_full_printf(&src, pattern); \ + char _cleanup_free_ \ + *d1 = strdup(i.name), \ + *d2 = strdup(i.path), \ + *d3 = strdup(i.user); \ + memzero(i.name, strlen(i.name)); \ + memzero(i.path, strlen(i.path)); \ + memzero(i.user, strlen(i.user)); \ + assert(d1 && d2 && d3); \ + if (result) { \ + printf("%s\n", t); \ + assert(streq(t, result)); \ + } else assert(t == NULL); \ + strcpy(i.name, d1); \ + strcpy(i.path, d2); \ + strcpy(i.user, d3); \ + } + + assert_se(setenv("USER", "root", 1) == 0); + + expect(i, "%n", "name.service"); + expect(i, "%N", "name"); + expect(i, "%p", "name"); + expect(i, "%i", ""); + expect(i, "%u", "xxxx-no-such-user"); + expect(i, "%U", NULL); + expect(i, "%m", mid); + expect(i, "%b", bid); + expect(i, "%H", host); + + expect(i2, "%u", "root"); + expect(i2, "%U", "0"); + + expect(i3, "%n", "name@inst.service"); + expect(i3, "%N", "name@inst"); + expect(i3, "%p", "name"); + expect(i3, "%u", "xxxx-no-such-user"); + expect(i3, "%U", NULL); + expect(i3, "%m", mid); + expect(i3, "%b", bid); + expect(i3, "%H", host); + + expect(i4, "%u", "root"); + expect(i4, "%U", "0"); +} +#pragma GCC diagnostic pop int main(int argc, char *argv[]) { @@ -235,6 +305,7 @@ int main(int argc, char *argv[]) { test_config_parse_exec(); test_load_env_file_1(); test_load_env_file_2(); + test_install_printf(); return 0; } -- cgit v1.2.1 From 3251c0d2392062b2b8354793a2037d1161f824ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 29 Jan 2013 14:39:32 -0500 Subject: tests: compress unit name tests and add more asserts --- src/test/test-unit-name.c | 214 +++++++++++++++------------------------------- 1 file changed, 69 insertions(+), 145 deletions(-) diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c index 50187e1129..5207781f99 100644 --- a/src/test/test-unit-name.c +++ b/src/test/test-unit-name.c @@ -27,151 +27,75 @@ #include "util.h" int main(int argc, char* argv[]) { - char *t, *k; - - t = unit_name_replace_instance("foo@.service", "waldo"); - puts(t); - free(t); - - t = unit_name_replace_instance("foo@xyz.service", "waldo"); - puts(t); - free(t); - - t = unit_name_replace_instance("xyz", "waldo"); - puts(t); - free(t); - - t = unit_name_replace_instance("", "waldo"); - puts(t); - free(t); - - t = unit_name_replace_instance("", ""); - puts(t); - free(t); - - t = unit_name_replace_instance("foo.service", "waldo"); - puts(t); - free(t); - - t = unit_name_replace_instance(".service", "waldo"); - puts(t); - free(t); - - t = unit_name_replace_instance("foo@bar", "waldo"); - puts(t); - free(t); - - t = unit_name_replace_instance("foo@", "waldo"); - puts(t); - free(t); - - t = unit_name_replace_instance("@", "waldo"); - puts(t); - free(t); - - t = unit_name_replace_instance("@bar", "waldo"); - puts(t); - free(t); - - t = unit_name_from_path("/waldo", ".mount"); - puts(t); - k = unit_name_to_path(t); - puts(k); - free(k); - free(t); - - t = unit_name_from_path("/waldo/quuix", ".mount"); - puts(t); - k = unit_name_to_path(t); - puts(k); - free(k); - free(t); - - t = unit_name_from_path("/waldo/quuix/", ".mount"); - puts(t); - k = unit_name_to_path(t); - puts(k); - free(k); - free(t); - - t = unit_name_from_path("/", ".mount"); - puts(t); - k = unit_name_to_path(t); - puts(k); - free(k); - free(t); - - t = unit_name_from_path("///", ".mount"); - puts(t); - k = unit_name_to_path(t); - puts(k); - free(k); - free(t); - - t = unit_name_from_path_instance("waldo", "/waldo", ".mount"); - puts(t); - free(t); - - t = unit_name_from_path_instance("waldo", "/waldo////quuix////", ".mount"); - puts(t); - free(t); - - t = unit_name_from_path_instance("waldo", "/", ".mount"); - puts(t); - free(t); - - t = unit_name_from_path_instance("wa--ldo", "/--", ".mount"); - puts(t); - free(t); - - assert_se(t = unit_name_mangle("/home")); - assert_se(k = unit_name_mangle(t)); - puts(t); - assert_se(streq(t, k)); - free(t); - free(k); - - assert_se(t = unit_name_mangle("/dev/sda")); - assert_se(k = unit_name_mangle(t)); - puts(t); - assert_se(streq(t, k)); - free(t); - free(k); - - assert_se(t = unit_name_mangle("üxknürz.service")); - assert_se(k = unit_name_mangle(t)); - puts(t); - assert_se(streq(t, k)); - free(t); - free(k); - - assert_se(t = unit_name_mangle("foobar-meh...waldi.service")); - assert_se(k = unit_name_mangle(t)); - puts(t); - assert_se(streq(t, k)); - free(t); - free(k); - - assert_se(t = unit_name_mangle("_____####----.....service")); - assert_se(k = unit_name_mangle(t)); - puts(t); - assert_se(streq(t, k)); - free(t); - free(k); - - assert_se(t = unit_name_mangle("_____##@;;;,,,##----.....service")); - assert_se(k = unit_name_mangle(t)); - puts(t); - assert_se(streq(t, k)); - free(t); - free(k); - - assert_se(t = unit_name_mangle("xxx@@@@/////\\\\\\\\\\yyy.service")); - assert_se(k = unit_name_mangle(t)); - puts(t); - assert_se(streq(t, k)); - free(t); - free(k); + +#define expect(pattern, repl, expected) \ + { \ + char _cleanup_free_ *t = \ + unit_name_replace_instance(pattern, repl); \ + puts(t); \ + assert(streq(t, expected)); \ + } + + expect("foo@.service", "waldo", "foo@waldo.service"); + expect("foo@xyz.service", "waldo", "foo@waldo.service"); + expect("xyz", "waldo", "xyz"); + expect("", "waldo", ""); + expect("foo.service", "waldo", "foo.service"); + expect(".service", "waldo", ".service"); + expect("foo@", "waldo", "foo@waldo"); + expect("@bar", "waldo", "@waldo"); + + puts("-------------------------------------------------"); +#undef expect +#define expect(path, suffix, expected) \ + { \ + char _cleanup_free_ *k, *t = \ + unit_name_from_path(path, suffix); \ + puts(t); \ + k = unit_name_to_path(t); \ + puts(k); \ + assert(streq(k, expected ? expected : path)); \ + } + + expect("/waldo", ".mount", NULL); + expect("/waldo/quuix", ".mount", NULL); + expect("/waldo/quuix/", ".mount", "/waldo/quuix"); + expect("/", ".mount", NULL); + expect("///", ".mount", "/"); + + puts("-------------------------------------------------"); +#undef expect +#define expect(pattern, path, suffix, expected) \ + { \ + char _cleanup_free_ *t = \ + unit_name_from_path_instance(pattern, path, suffix); \ + puts(t); \ + assert(streq(t, expected)); \ + } + + expect("waldo", "/waldo", ".mount", "waldo@waldo.mount"); + expect("waldo", "/waldo////quuix////", ".mount", "waldo@waldo-quuix.mount"); + expect("waldo", "/", ".mount", "waldo@-.mount"); + expect("wa--ldo", "/--", ".mount", "wa--ldo@\\x2d\\x2d.mount"); + + puts("-------------------------------------------------"); +#undef expect +#define expect(pattern) \ + { \ + char _cleanup_free_ *k, *t; \ + assert_se(t = unit_name_mangle(pattern)); \ + assert_se(k = unit_name_mangle(t)); \ + puts(t); \ + assert_se(streq(t, k)); \ + } + + expect("/home"); + expect("/dev/sda"); + expect("üxknürz.service"); + expect("foobar-meh...waldi.service"); + expect("_____####----.....service"); + expect("_____##@;;;,,,##----.....service"); + expect("xxx@@@@/////\\\\\\\\\\yyy.service"); return 0; } -- cgit v1.2.1 From 1682ff60114b7a57972a03aa99f9864064593f72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 29 Jan 2013 15:25:36 -0500 Subject: tests: add test for unit name printing --- Makefile.am | 4 +++ src/test/test-unit-name.c | 92 +++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 94 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index c44ca0b76d..f014931033 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1325,6 +1325,10 @@ test_efivars_LDADD = \ test_unit_name_SOURCES = \ src/test/test-unit-name.c +test_unit_name_CFLAGS = \ + $(AM_CFLAGS) \ + $(DBUS_CFLAGS) + test_unit_name_LDADD = \ libsystemd-core.la diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c index 5207781f99..b1a4134f48 100644 --- a/src/test/test-unit-name.c +++ b/src/test/test-unit-name.c @@ -4,6 +4,7 @@ This file is part of systemd. Copyright 2012 Lennart Poettering + Copyright 2013 Zbigniew Jędrzejewski-Szmek systemd is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -22,12 +23,19 @@ #include #include #include +#include +#include +#include "manager.h" +#include "unit.h" #include "unit-name.h" +#include "unit-printf.h" +#include "install.h" +#include "specifier.h" #include "util.h" +#include "macro.h" -int main(int argc, char* argv[]) { - +static void test_replacements(void) { #define expect(pattern, repl, expected) \ { \ char _cleanup_free_ *t = \ @@ -97,5 +105,85 @@ int main(int argc, char* argv[]) { expect("_____##@;;;,,,##----.....service"); expect("xxx@@@@/////\\\\\\\\\\yyy.service"); +#undef expect +} + +static void test_unit_printf(void) { + Manager *m; + Unit *u, *u2; + + char _cleanup_free_ *mid, *bid, *host, *root_uid; + struct passwd *root; + + assert_se((mid = specifier_machine_id('m', NULL, NULL))); + assert_se((bid = specifier_boot_id('b', NULL, NULL))); + assert_se((host = gethostname_malloc())); + + assert_se((root = getpwnam("root"))); + assert_se(asprintf(&root_uid, "%d", (int) root->pw_uid) > 0); + + assert_se(manager_new(SYSTEMD_SYSTEM, &m) == 0); + +#define expect(unit, pattern, expected) \ + { \ + char _cleanup_free_ *t = \ + unit_full_printf(unit, pattern); \ + printf("result: %s\n", t); \ + assert(streq(t, expected)); \ + } + + assert_se(setenv("USER", "root", 1) == 0); + assert_se(setenv("HOME", "/root", 1) == 0); + + assert_se(u = unit_new(m, sizeof(Service))); + assert_se(unit_add_name(u, "blah.service") == 0); + assert_se(unit_add_name(u, "blah.service") == 0); + + /* general tests */ + expect(u, "%%", "%"); + expect(u, "%%s", "%s"); + expect(u, "%", ""); // REALLY? + + /* normal unit */ + expect(u, "%n", "blah.service"); + expect(u, "%N", "blah"); + expect(u, "%p", "blah"); + expect(u, "%P", "blah"); + expect(u, "%i", ""); + expect(u, "%I", ""); + expect(u, "%u", root->pw_name); + expect(u, "%U", root_uid); + expect(u, "%h", root->pw_dir); + expect(u, "%s", root->pw_shell); + expect(u, "%m", mid); + expect(u, "%b", bid); + expect(u, "%H", host); + expect(u, "%t", "/run"); + + /* templated */ + assert_se(u2 = unit_new(m, sizeof(Service))); + assert_se(unit_add_name(u2, "blah@foo-foo.service") == 0); + assert_se(unit_add_name(u2, "blah@foo-foo.service") == 0); + + expect(u2, "%n", "blah@foo-foo.service"); + expect(u2, "%N", "blah@foo-foo"); + expect(u2, "%p", "blah"); + expect(u2, "%P", "blah"); + expect(u2, "%i", "foo-foo"); + expect(u2, "%I", "foo/foo"); + expect(u2, "%u", root->pw_name); + expect(u2, "%U", root_uid); + expect(u2, "%h", root->pw_dir); + expect(u2, "%s", root->pw_shell); + expect(u2, "%m", mid); + expect(u2, "%b", bid); + expect(u2, "%H", host); + expect(u2, "%t", "/run"); +} + +int main(int argc, char* argv[]) { + test_replacements(); + test_unit_printf(); + return 0; } -- cgit v1.2.1 From 7bcd865d386d96caac83cb1c589fdb8f9ce3b081 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 29 Jan 2013 16:14:07 -0500 Subject: test: some trivial fixes to test scripts - fix typo - use compiled systemd-nspawn - drop --capability=... from systemd-nspawn invocation, is is the default now - simplify sudo make invocations --- TODO | 3 +++ test/README.testsuite | 4 ++-- test/TEST-01-BASIC/test.sh | 6 +++--- test/TEST-03-JOBS/test.sh | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index 3e2ff8b6d1..26e4c5acf3 100644 --- a/TODO +++ b/TODO @@ -13,6 +13,9 @@ Bugfixes: * properly handle .mount unit state tracking when two mount points are stacked one on top of another on the exact same mount point. +* add 'set -e' to scripts in test/ +* make test in test/ work with separate output dir + Fedora 19: * drop no longer needed modprobe.d udlfb file (it does not belong in /etc anyway) diff --git a/test/README.testsuite b/test/README.testsuite index 0f96b984a9..54d0eaac50 100644 --- a/test/README.testsuite +++ b/test/README.testsuite @@ -28,8 +28,8 @@ $ sudo make clean setup run If you want to log in the testsuite virtual machine, you can specify additional kernel command line parameter with $DEBUGFAIL. -$ sudo sh -c 'DEBUGFAIL="systemd.unit=multi-user.target" make clean setup run' +$ sudo make DEBUGFAIL="systemd.unit=multi-user.target" clean setup run you can even skip the "clean" and "setup" if you want to run the machine again. -$ sudo sh -c 'DEBUGFAIL="systemd.unit=multi-user.target" make run' +$ sudo make DEBUGFAIL="systemd.unit=multi-user.target" run diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh index 7d2e3d4bd7..90492079e4 100755 --- a/test/TEST-01-BASIC/test.sh +++ b/test/TEST-01-BASIC/test.sh @@ -33,7 +33,7 @@ run_qemu() { run_nspawn() { - systemd-nspawn -b -D $TESTDIR/nspawn-root --capability=CAP_AUDIT_CONTROL,CAP_AUDIT_WRITE /usr/lib/systemd/systemd + ../../systemd-nspawn -b -D $TESTDIR/nspawn-root /usr/lib/systemd/systemd ret=1 [[ -e $TESTDIR/nspawn-root/testok ]] && ret=0 cp -a $TESTDIR/nspawn-root/failed $TESTDIR @@ -213,7 +213,7 @@ EOF # install ld.so.conf* and run ldconfig cp -a /etc/ld.so.conf* $initdir/etc ldconfig -r "$initdir" - ddebug "Strip binaeries" + ddebug "Strip binaries" find "$initdir" -perm +111 -type f | xargs strip --strip-unneeded | ddebug # copy depmod files @@ -230,7 +230,7 @@ EOF ddebug "cp -ar $TESTDIR/root $TESTDIR/nspawn-root" cp -ar $TESTDIR/root $TESTDIR/nspawn-root # we don't mount in the nspawn root - rm -fr $TESTDIR/nspawn-root/etc/fstab + rm -f $TESTDIR/nspawn-root/etc/fstab ddebug "umount $TESTDIR/root" umount $TESTDIR/root diff --git a/test/TEST-03-JOBS/test.sh b/test/TEST-03-JOBS/test.sh index 4cfb2a504a..bd211f3ad5 100755 --- a/test/TEST-03-JOBS/test.sh +++ b/test/TEST-03-JOBS/test.sh @@ -33,7 +33,7 @@ run_qemu() { run_nspawn() { - systemd-nspawn -b -D $TESTDIR/nspawn-root --capability=CAP_AUDIT_CONTROL,CAP_AUDIT_WRITE /usr/lib/systemd/systemd + ../../systemd-nspawn -b -D $TESTDIR/nspawn-root /usr/lib/systemd/systemd ret=1 [[ -e $TESTDIR/nspawn-root/testok ]] && ret=0 cp -a $TESTDIR/nspawn-root/failed $TESTDIR -- cgit v1.2.1 From 652e737517bbbae692923246aeb687e2d1f314ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 29 Jan 2013 21:17:40 -0500 Subject: build-sys: keep intermediate files Sometimes it is useful to look at them, and they don't take up any significant amount of space. Keeping them also avoids the message about files being removed at the end of make run. --- Makefile.am | 3 +++ units/.gitignore | 3 +++ 2 files changed, 6 insertions(+) diff --git a/Makefile.am b/Makefile.am index f014931033..1f36aeea23 100644 --- a/Makefile.am +++ b/Makefile.am @@ -28,6 +28,9 @@ SUBDIRS = . po # remove targets if the command fails .DELETE_ON_ERROR: +# keep intermediate files +.SECONDARY: + LIBUDEV_CURRENT=3 LIBUDEV_REVISION=1 LIBUDEV_AGE=2 diff --git a/units/.gitignore b/units/.gitignore index 5e86d30113..b1e81ab086 100644 --- a/units/.gitignore +++ b/units/.gitignore @@ -6,6 +6,7 @@ /systemd-hibernate.service /systemd-suspend.service /console-getty.service +/console-getty.service.m4 /systemd-journald.service /user@.service /systemd-logind.service @@ -13,9 +14,11 @@ /systemd-timedated.service /systemd-hostnamed.service /console-shell.service +/console-shell.service.m4 /systemd-sysctl.service /systemd-ask-password-console.service /rescue.service +/rescue.service.m4 /systemd-ask-password-wall.service /systemd-quotacheck.service /quotaon.service -- cgit v1.2.1 From 38936e3cfaa9c813fe778448de49996429687ad5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 29 Jan 2013 21:18:19 -0500 Subject: build-sys: inline two definitions which were only used in one place --- Makefile.am | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/Makefile.am b/Makefile.am index 1f36aeea23..33d96e8601 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3877,19 +3877,13 @@ src/%: src/%.m4 $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_M4)$(M4) -P $(M4_DEFINES) < $< > $@ -M4_PROCESS_SYSTEM = \ - $(AM_V_M4)$(MKDIR_P) $(dir $@) && \ - $(M4) -P $(M4_DEFINES) -DFOR_SYSTEM=1 < $< > $@ - -M4_PROCESS_USER = \ - $(AM_V_M4)$(MKDIR_P) $(dir $@) && \ - $(M4) -P $(M4_DEFINES) -DFOR_USER=1 < $< > $@ - units/%: units/%.m4 Makefile - $(M4_PROCESS_SYSTEM) + $(AM_V_M4)$(MKDIR_P) $(dir $@) + $(AM_V_M4)$(M4) -P $(M4_DEFINES) -DFOR_SYSTEM=1 < $< > $@ units/user/%: units/%.m4 Makefile - $(M4_PROCESS_USER) + $(AM_V_M4)$(MKDIR_P) $(dir $@) + $(AM_V_M4)$(M4) -P $(M4_DEFINES) -DFOR_USER=1 < $< > $@ nodist_polkitpolicy_DATA = \ $(polkitpolicy_files) \ -- cgit v1.2.1 From decc5aa90d5a5c561c9da97ec188033e9ef629ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 29 Jan 2013 21:31:41 -0500 Subject: Add a few entries to .mailmap --- .mailmap | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.mailmap b/.mailmap index 12fb2c8e60..ddaf4d5708 100644 --- a/.mailmap +++ b/.mailmap @@ -50,3 +50,13 @@ Ted Ts'o Tobias Klauser Tobias Klauser Tobias Klauser +Patrick Mansfield +Christophe Varoqui +Daniel Stekloff +Michael Buesch +Olaf Hering +Robert Love +Arnd Bergmann +Tom Rini +Paul Mundt +Atul Sabharwal -- cgit v1.2.1 From 06637f8bd1ceb6dc567d3a79a6b9745376797352 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 29 Jan 2013 23:01:01 -0500 Subject: build-sys: add rules for sd_journal_{get,set}_data_threshold(3) Fixup for 350b6a65. --- Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile.am b/Makefile.am index 33d96e8601..4422eb8db0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -740,6 +740,8 @@ man/SD_JOURNAL_NOP.3: man/sd_journal_get_fd.3 man/SD_JOURNAL_APPEND.3: man/sd_journal_get_fd.3 man/SD_JOURNAL_INVALIDATE.3: man/sd_journal_get_fd.3 man/sd_journal_add_disjunction.3: man/sd_journal_add_match.3 +man/sd_journal_get_data_threshold.3: man/sd_journal_get_data.3 +man/sd_journal_set_data_threshold.3: man/sd_journal_get_data.3 man/sd_journal_flush_matches.3: man/sd_journal_add_match.3 man/sd_journal_seek_tail.3: man/sd_journal_seek_head.3 man/sd_journal_seek_monotonic_usec.3: man/sd_journal_seek_head.3 -- cgit v1.2.1 From 94172f3c9c34e23593f1942f02164cb578109a84 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Wed, 30 Jan 2013 12:25:19 +0100 Subject: man: time - exchange some 'colons' with 'commas' --- man/systemd.time.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/systemd.time.xml b/man/systemd.time.xml index db5d01b1a2..a9318bb787 100644 --- a/man/systemd.time.xml +++ b/man/systemd.time.xml @@ -214,7 +214,7 @@ specified it should consist of one or more english language week day names, either in the abbreviated (Wed) or non-abbreviated (Wednesday) form (case does - not matter), separated by colons. Specifying two week + not matter), separated by commas. Specifying two week days separated by "-" refers to a range of continuous week days. "," and "-" may be combined freely. @@ -222,7 +222,7 @@ component may be specified as "*" in which case any value will match. Alternatively, each component can be specified as list of values separated by - colons. Values may also be suffixed with "/" and a + commas. Values may also be suffixed with "/" and a repetition value, which indicates that the value and all values plus multiples of the repetition value are matched. -- cgit v1.2.1 From 4584651afd7c1ddb30a2bd16a08088969e4bccff Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 30 Jan 2013 17:32:02 +0100 Subject: build-sys: add intermediate files to CLEANFILES to fix distcheck --- Makefile.am | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index 4422eb8db0..b08f66257f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -416,6 +416,9 @@ nodist_systemunit_DATA = \ if HAVE_KMOD nodist_systemunit_DATA += \ units/systemd-modules-load.service + +EXTRA_DIST += \ + units/systemd-modules-load.service.in endif dist_userunit_DATA = \ @@ -461,8 +464,10 @@ EXTRA_DIST += \ introspect.awk \ man/custom-html.xsl -EXTRA_DIST += \ - units/systemd-modules-load.service.in +CLEANFILES += \ + units/console-shell.service.m4 \ + units/console-getty.service.m4 \ + units/rescue.service.m4 if HAVE_SYSV_COMPAT nodist_systemunit_DATA += \ @@ -1243,7 +1248,8 @@ EXTRA_DIST += \ src/core/macros.systemd.in CLEANFILES += \ - src/core/macros.systemd + src/core/macros.systemd \ + src/core/org.freedesktop.systemd1.policy.in # ------------------------------------------------------------------------------ noinst_PROGRAMS += \ -- cgit v1.2.1 From aa5902410776dcfe4498be6c2bc2dac8f2294737 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 30 Jan 2013 17:50:55 +0100 Subject: build-sys: move most of HAVE_KMOD into one section --- Makefile.am | 55 ++++++++++++++++++++++--------------------------------- 1 file changed, 22 insertions(+), 33 deletions(-) diff --git a/Makefile.am b/Makefile.am index b08f66257f..f2b8fb41bd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -295,11 +295,6 @@ rootlibexec_PROGRAMS = \ systemd-sysctl \ systemd-sleep -if HAVE_KMOD -rootlibexec_PROGRAMS += \ - systemd-modules-load -endif - systemgenerator_PROGRAMS = \ systemd-getty-generator \ systemd-fstab-generator \ @@ -413,14 +408,6 @@ nodist_systemunit_DATA = \ units/systemd-udev-settle.service \ units/debug-shell.service -if HAVE_KMOD -nodist_systemunit_DATA += \ - units/systemd-modules-load.service - -EXTRA_DIST += \ - units/systemd-modules-load.service.in -endif - dist_userunit_DATA = \ units/user/default.target \ units/user/exit.target @@ -657,15 +644,6 @@ MANPAGES_ALIAS = \ man/SD_JOURNAL_FOREACH_UNIQUE.3 \ man/sd_journal_get_catalog_for_message_id.3 -if HAVE_KMOD -MANPAGES += \ - man/modules-load.d.5 \ - man/systemd-modules-load.service.8 -MANPAGES_ALIAS += \ - man/systemd-modules-load.8 -man/systemd-modules-load.8: man/systemd-modules-load.service.8 -endif - if HAVE_MICROHTTPD MANPAGES += \ man/systemd-journal-gatewayd.service.8 @@ -1508,8 +1486,8 @@ systemd_shutdown_LDADD = \ libsystemd-shared.la \ libudev.la -if HAVE_KMOD # ------------------------------------------------------------------------------ +if HAVE_KMOD systemd_modules_load_SOURCES = \ src/modules-load/modules-load.c @@ -1520,8 +1498,29 @@ systemd_modules_load_CFLAGS = \ systemd_modules_load_LDADD = \ libsystemd-shared.la \ $(KMOD_LIBS) + +rootlibexec_PROGRAMS += \ + systemd-modules-load + +nodist_systemunit_DATA += \ + units/systemd-modules-load.service +SYSINIT_TARGET_WANTS += \ + systemd-modules-load.service + +dist_udevrules_DATA += \ + rules/80-drivers.rules + +MANPAGES += \ + man/modules-load.d.5 \ + man/systemd-modules-load.service.8 +MANPAGES_ALIAS += \ + man/systemd-modules-load.8 +man/systemd-modules-load.8: man/systemd-modules-load.service.8 endif +EXTRA_DIST += \ + units/systemd-modules-load.service.in + # ------------------------------------------------------------------------------ systemd_tmpfiles_SOURCES = \ src/tmpfiles/tmpfiles.c @@ -1936,11 +1935,6 @@ dist_udevrules_DATA += \ rules/80-net-name-slot.rules \ rules/95-udev-late.rules -if HAVE_KMOD -dist_udevrules_DATA += \ - rules/80-drivers.rules -endif - dist_udevhwdb_DATA = \ hwdb/20-pci-vendor-product.hwdb \ hwdb/20-pci-classes.hwdb \ @@ -4073,11 +4067,6 @@ INSTALL_DIRS += \ $(dbussessionservicedir) \ $(sysconfdir)/xdg/systemd -if HAVE_KMOD -SYSINIT_TARGET_WANTS += \ - systemd-modules-load.service -endif - install-exec-hook: $(INSTALL_EXEC_HOOKS) uninstall-hook: $(UNINSTALL_DATA_HOOKS) $(UNINSTALL_EXEC_HOOKS) -- cgit v1.2.1 From 4caf4ac1424cf1aa328c30c5b4265da004af1a74 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 30 Jan 2013 18:01:23 +0100 Subject: build-sys: move HAVE_MICROHTTPD HAVE_MYHOSTNAME to their own sections --- Makefile.am | 71 +++++++++++++++++++++++++++++-------------------------------- 1 file changed, 34 insertions(+), 37 deletions(-) diff --git a/Makefile.am b/Makefile.am index f2b8fb41bd..4806f60ec3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -644,21 +644,6 @@ MANPAGES_ALIAS = \ man/SD_JOURNAL_FOREACH_UNIQUE.3 \ man/sd_journal_get_catalog_for_message_id.3 -if HAVE_MICROHTTPD -MANPAGES += \ - man/systemd-journal-gatewayd.service.8 -MANPAGES_ALIAS += \ - man/systemd-journal-gatewayd.socket.8 \ - man/systemd-journal-gatewayd.8 -man/systemd-journal-gatewayd.socket.8: man/systemd-journal-gatewayd.service.8 -man/systemd-journal-gatewayd.8: man/systemd-journal-gatewayd.service.8 -endif - -if HAVE_MYHOSTNAME -MANPAGES += \ - man/nss-myhostname.8 -endif - man/reboot.8: man/halt.8 man/poweroff.8: man/halt.8 man/init.1: man/systemd.1 @@ -2883,8 +2868,8 @@ EXTRA_DIST += \ CLEANFILES += \ src/journal/journald-gperf.c +# ------------------------------------------------------------------------------ if HAVE_MICROHTTPD - gatewayddocumentrootdir=$(pkgdatadir)/gatewayd rootlibexec_PROGRAMS += \ @@ -2917,6 +2902,13 @@ nodist_systemunit_DATA += \ dist_gatewayddocumentroot_DATA = \ src/journal/browse.html +MANPAGES += \ + man/systemd-journal-gatewayd.service.8 +MANPAGES_ALIAS += \ + man/systemd-journal-gatewayd.socket.8 \ + man/systemd-journal-gatewayd.8 +man/systemd-journal-gatewayd.socket.8: man/systemd-journal-gatewayd.service.8 +man/systemd-journal-gatewayd.8: man/systemd-journal-gatewayd.service.8 endif EXTRA_DIST += \ @@ -3443,6 +3435,31 @@ polkitpolicy_in_files += \ EXTRA_DIST += \ units/systemd-timedated.service.in +# ------------------------------------------------------------------------------ +if HAVE_MYHOSTNAME +libnss_myhostname_la_SOURCES = \ + src/nss-myhostname/nss-myhostname.c \ + src/nss-myhostname/ifconf.h \ + src/nss-myhostname/netlink.c + +libnss_myhostname_la_CFLAGS = \ + $(AM_CFLAGS) + +libnss_myhostname_la_LDFLAGS = \ + $(AM_LDFLAGS) \ + -module \ + -export-dynamic \ + -avoid-version \ + -shared \ + -shrext .so.2 + +lib_LTLIBRARIES += \ + libnss_myhostname.la + +MANPAGES += \ + man/nss-myhostname.8 +endif + # ------------------------------------------------------------------------------ if ENABLE_LOGIND systemd_logind_SOURCES = \ @@ -3601,27 +3618,7 @@ pamlib_LTLIBRARIES = \ pam_systemd.la endif -if HAVE_MYHOSTNAME -libnss_myhostname_la_SOURCES = \ - src/nss-myhostname/nss-myhostname.c \ - src/nss-myhostname/ifconf.h \ - src/nss-myhostname/netlink.c - -libnss_myhostname_la_CFLAGS = \ - $(AM_CFLAGS) - -libnss_myhostname_la_LDFLAGS = \ - $(AM_LDFLAGS) \ - -module \ - -export-dynamic \ - -avoid-version \ - -shared \ - -shrext .so.2 - -lib_LTLIBRARIES += \ - libnss_myhostname.la -endif - +# ------------------------------------------------------------------------------ # move lib from $(libdir) to $(rootlibdir) and update devel link, if needed libsystemd-login-install-hook: libname=libsystemd-login.so && $(move-to-rootlibdir) -- cgit v1.2.1 From 2a4b7e7bf2465112415907eef238c786ea145b06 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 30 Jan 2013 18:14:44 +0100 Subject: build-sys: fix empty lines --- Makefile.am | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/Makefile.am b/Makefile.am index 4806f60ec3..88662c0144 100644 --- a/Makefile.am +++ b/Makefile.am @@ -172,7 +172,6 @@ AM_CFLAGS = $(OUR_CFLAGS) AM_LDFLAGS = $(OUR_LDFLAGS) # ------------------------------------------------------------------------------ - define move-to-rootlibdir if test "$(libdir)" != "$(rootlibdir)"; then \ $(MKDIR_P) $(DESTDIR)$(rootlibdir) && \ @@ -250,7 +249,6 @@ INSTALL_EXEC_HOOKS += \ install-aliases-hook # ------------------------------------------------------------------------------ - AM_V_M4 = $(AM_V_M4_$(V)) AM_V_M4_ = $(AM_V_M4_$(AM_DEFAULT_VERBOSITY)) AM_V_M4_0 = @echo " M4 " $@; @@ -2340,7 +2338,6 @@ EXTRA_DIST += \ src/gudev/seed-example-enum.js \ src/gudev/seed-example.js - # ------------------------------------------------------------------------------ if ENABLE_KEYMAP keymap_SOURCES = \ @@ -3197,7 +3194,6 @@ MANPAGES_ALIAS += \ man/systemd-cryptsetup.8 man/systemd-cryptsetup.8: man/systemd-cryptsetup@.service.8 - endif # ------------------------------------------------------------------------------ @@ -3618,7 +3614,6 @@ pamlib_LTLIBRARIES = \ pam_systemd.la endif -# ------------------------------------------------------------------------------ # move lib from $(libdir) to $(rootlibdir) and update devel link, if needed libsystemd-login-install-hook: libname=libsystemd-login.so && $(move-to-rootlibdir) @@ -3766,9 +3761,7 @@ EXTRA_DIST += \ units/systemd-user-sessions.service.in # ------------------------------------------------------------------------------ - if HAVE_PYTHON_DEVEL - pkgpyexec_LTLIBRARIES = \ _journal.la @@ -3793,11 +3786,9 @@ _journal_la_LIBADD = \ dist_pkgpyexec_PYTHON = \ src/python-systemd/journal.py \ src/python-systemd/__init__.py - endif # ------------------------------------------------------------------------------ - SED_PROCESS = \ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ $(SED) -e 's,@rootlibexecdir\@,$(rootlibexecdir),g' \ @@ -3900,6 +3891,7 @@ CLEANFILES += \ $(pkgconfiglib_DATA) \ $(nodist_polkitpolicy_DATA) +# ------------------------------------------------------------------------------ if ENABLE_MANPAGES XSLTPROC_FLAGS = \ --nonet \ @@ -3940,6 +3932,7 @@ CLEANFILES += \ ${XML_FILES:.xml=.html} endif +# ------------------------------------------------------------------------------ DBUS_PREPROCESS = $(CPP) -P $(CFLAGS) $(DBUS_CFLAGS) -imacros dbus/dbus-protocol.h CLEANFILES += \ @@ -3961,7 +3954,6 @@ docs/var-log/README: docs/var-log/README.in CLEANFILES += \ docs/sysvinit/README \ docs/var-log/README - endif EXTRA_DIST += \ @@ -4018,6 +4010,7 @@ SYSTEM_UNIT_ALIASES += \ graphical.target runlevel5.target \ reboot.target runlevel6.target endif + SYSTEM_UNIT_ALIASES += \ graphical.target default.target \ reboot.target ctrl-alt-del.target \ @@ -4044,6 +4037,7 @@ INSTALL_DIRS += \ $(systemunitdir)/runlevel4.target.wants \ $(systemunitdir)/runlevel5.target.wants endif + INSTALL_DIRS += \ $(tmpfilesdir) \ $(sysconfdir)/tmpfiles.d \ -- cgit v1.2.1 From 883127fd84a05927f33fd25c868c52cce2123362 Mon Sep 17 00:00:00 2001 From: Mauro Dreissig Date: Wed, 30 Jan 2013 16:55:24 -0200 Subject: systemctl: Fix wrong assertion test --- src/systemctl/systemctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 408a4f0506..5deacbf36b 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1013,7 +1013,7 @@ static int dot_one(DBusConnection *bus, const char *name, const char *path) { while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { const char *prop; - assert(dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_DICT_ENTRY); + assert(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_DICT_ENTRY); dbus_message_iter_recurse(&sub, &sub2); if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &prop, true) < 0 || -- cgit v1.2.1 From 3a7719d303c14a74040944485e3e366db3f9fcc5 Mon Sep 17 00:00:00 2001 From: Daniel Buch Date: Wed, 30 Jan 2013 21:36:56 +0100 Subject: test-strv.c: Split tests into seperate functions test-strv.c: Leaves main clean for additional tests --- src/test/test-strv.c | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/src/test/test-strv.c b/src/test/test-strv.c index 5ee4447669..44b067cec4 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -24,19 +24,25 @@ #include "util.h" #include "specifier.h" -int main(int argc, char *argv[]) { +static void test_specifier_printf(void) { + char *w; + const Specifier table[] = { { 'a', specifier_string, (char*) "AAAA" }, { 'b', specifier_string, (char*) "BBBB" }, { 0, NULL, NULL } }; + w = specifier_printf("xxx a=%a b=%b yyy", table, NULL); + printf("<%s>\n", w); + free(w); +} + +static void test_foreach_word_quoted(void) { char *w, *state; size_t l; const char test[] = "test a b c 'd' e '' '' hhh '' ''"; - printf("<%s>\n", test); - FOREACH_WORD_QUOTED(w, l, test, state) { char *t; @@ -44,7 +50,9 @@ int main(int argc, char *argv[]) { printf("<%s>\n", t); free(t); } +} +static void test_default_term_for_tty(void) { printf("%s\n", default_term_for_tty("/dev/tty23")); printf("%s\n", default_term_for_tty("/dev/ttyS23")); printf("%s\n", default_term_for_tty("/dev/tty0")); @@ -57,10 +65,12 @@ int main(int argc, char *argv[]) { printf("%s\n", default_term_for_tty("pty0")); printf("%s\n", default_term_for_tty("pts/0")); printf("%s\n", default_term_for_tty("console")); +} - w = specifier_printf("xxx a=%a b=%b yyy", table, NULL); - printf("<%s>\n", w); - free(w); +int main(int argc, char *argv[]) { + test_default_term_for_tty(); + test_foreach_word_quoted(); + test_specifier_printf(); return 0; } -- cgit v1.2.1 From 682cfdff697707dbe29c9c1907a7c8c452ffb397 Mon Sep 17 00:00:00 2001 From: Daniel Buch Date: Wed, 30 Jan 2013 21:45:40 +0100 Subject: test-strv.c: test strv_join added --- src/test/test-strv.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/test/test-strv.c b/src/test/test-strv.c index 44b067cec4..7898ea7cf6 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -23,6 +23,7 @@ #include "util.h" #include "specifier.h" +#include "strv.h" static void test_specifier_printf(void) { char *w; @@ -52,6 +53,49 @@ static void test_foreach_word_quoted(void) { } } +static void test_strv_join(void) { + char *r; + + const char * const input_table_multiple[] = { + "one", + "two", + "three", + NULL + }; + const char * const input_table_one[] = { + "one", + NULL + }; + const char * const input_table_none[] = { + NULL + }; + + r = strv_join((char **)input_table_multiple, ", "); + assert_se(streq(r, "one, two, three")); + puts(r); + free(r); + + r = strv_join((char **)input_table_multiple, ";"); + assert_se(streq(r, "one;two;three")); + puts(r); + free(r); + + r = strv_join((char **)input_table_multiple, NULL); + assert_se(streq(r, "one two three")); + puts(r); + free(r); + + r = strv_join((char **)input_table_one, ", "); + assert_se(streq(r, "one")); + puts(r); + free(r); + + r = strv_join((char **)input_table_none, ", "); + assert_se(streq(r, "")); + puts(r); + free(r); +} + static void test_default_term_for_tty(void) { printf("%s\n", default_term_for_tty("/dev/tty23")); printf("%s\n", default_term_for_tty("/dev/ttyS23")); @@ -71,6 +115,7 @@ int main(int argc, char *argv[]) { test_default_term_for_tty(); test_foreach_word_quoted(); test_specifier_printf(); + test_strv_join(); return 0; } -- cgit v1.2.1 From 18cf1a1be5ae6985f211ec6f02504506da36b223 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Thu, 31 Jan 2013 11:03:09 +0100 Subject: cryptsetup: accept both "read-only" and "readonly" spellings Mukund Sivaraman pointed out that cryptsetup(5) mentions the "read-only" option, while the code understands "readonly". We could just fix the manpage, but for consistency in naming of multi-word options it would be prettier to have "read-only". So let's accept both spellings. BZ: https://bugzilla.redhat.com/show_bug.cgi?id=903463 --- man/crypttab.xml | 2 +- src/cryptsetup/cryptsetup.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/man/crypttab.xml b/man/crypttab.xml index 2379fc0827..f976bdaa25 100644 --- a/man/crypttab.xml +++ b/man/crypttab.xml @@ -182,7 +182,7 @@ - read-only + read-onlyreadonly Set up the encrypted block device in read-only diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c index f33284370c..a8cdf10177 100644 --- a/src/cryptsetup/cryptsetup.c +++ b/src/cryptsetup/cryptsetup.c @@ -111,7 +111,7 @@ static int parse_one_option(const char *option) { return 0; } - } else if (streq(option, "readonly")) + } else if (streq(option, "readonly") || streq(option, "read-only")) opt_readonly = true; else if (streq(option, "verify")) opt_verify = true; -- cgit v1.2.1 From 2f8d077ece024b985f2501dc8c904c2d29967acb Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 4 Feb 2013 18:54:58 +0100 Subject: TODO: update --- TODO | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index 26e4c5acf3..cffb02863a 100644 --- a/TODO +++ b/TODO @@ -3,8 +3,6 @@ Bugfixes: * swap units that are activated by one name but shown in the kernel under another are semi-broken -* make anaconda write timeout=0 for encrypted devices - * Dangling symlinks of .automount unit files in .wants/ directories, set up automount points even when the original .automount file did not exist anymore. Only the .mount unit was still around. @@ -16,7 +14,10 @@ Bugfixes: * add 'set -e' to scripts in test/ * make test in test/ work with separate output dir +* suppress log output on shutdown when "quiet" is used + Fedora 19: +* make anaconda write timeout=0 for encrypted devices * drop no longer needed modprobe.d udlfb file (it does not belong in /etc anyway) -- cgit v1.2.1 From f2f1861383c5cf4c07a7c6098d7c0b7134f06d51 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 4 Feb 2013 18:55:10 +0100 Subject: hwdb: update --- hwdb/20-OUI.hwdb | 173 +++++-- hwdb/20-pci-vendor-product.hwdb | 1025 ++++++++++++++++++++++++++++++++++++++- hwdb/ids-update.pl | 2 + 3 files changed, 1156 insertions(+), 44 deletions(-) diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb index 736299b1fb..cd3b4327ec 100644 --- a/hwdb/20-OUI.hwdb +++ b/hwdb/20-OUI.hwdb @@ -5720,7 +5720,7 @@ OUI:0050C277D* ID_OUI_FROM_DATABASE=Lincoln Industrial OUI:0050C277E* - ID_OUI_FROM_DATABASE=Cominfo, a.s. + ID_OUI_FROM_DATABASE=Cominfo Inc. OUI:0050C277F* ID_OUI_FROM_DATABASE=ACD Elektronik GmbH @@ -6488,7 +6488,7 @@ OUI:0050C287F* ID_OUI_FROM_DATABASE=Optoelettronica Italia S.r.l. OUI:0050C2880* - ID_OUI_FROM_DATABASE=Creation Technologies + ID_OUI_FROM_DATABASE=Creation Technologies Chicago OUI:0050C2881* ID_OUI_FROM_DATABASE=InnoTrans Communications, Inc. @@ -8747,7 +8747,7 @@ OUI:0050C2B72* ID_OUI_FROM_DATABASE=Advanced Desktop Systems Ltd OUI:0050C2B73* - ID_OUI_FROM_DATABASE=ARKRAY, Inc. + ID_OUI_FROM_DATABASE=ARKRAY, Inc. Kyoto Laboratory OUI:0050C2B74* ID_OUI_FROM_DATABASE=AXED Jakubowski Wojciechowski sp.j. @@ -8819,7 +8819,7 @@ OUI:0050C2B8A* ID_OUI_FROM_DATABASE=MicroPoise OUI:0050C2B8B* - ID_OUI_FROM_DATABASE=CSTI BV + ID_OUI_FROM_DATABASE=FBB OUI:0050C2B8C* ID_OUI_FROM_DATABASE=Keith & Koep GmbH @@ -10607,7 +10607,7 @@ OUI:0050C2DE8* ID_OUI_FROM_DATABASE=Visual Productions OUI:0050C2DE9* - ID_OUI_FROM_DATABASE=Digatale Analoge COMponenten West Electronic Vertrieb GmbH + ID_OUI_FROM_DATABASE=Dacom West GmbH OUI:0050C2DEA* ID_OUI_FROM_DATABASE=Cerner Corporation @@ -11849,7 +11849,7 @@ OUI:0050C2F8A* ID_OUI_FROM_DATABASE=EMAC, Inc. OUI:0050C2F8B* - ID_OUI_FROM_DATABASE=Comlet Verteilte Systeme GmbH + ID_OUI_FROM_DATABASE=comlet Verteilte Systeme GmbH OUI:0050C2F8C* ID_OUI_FROM_DATABASE=UBSTechnology Co., Ltd @@ -12622,6 +12622,36 @@ OUI:40D85508D* OUI:40D85508E* ID_OUI_FROM_DATABASE=Lyngsoe Systems +OUI:40D85508F* + ID_OUI_FROM_DATABASE=Excelitas + +OUI:40D855090* + ID_OUI_FROM_DATABASE=Axxess Identification Ltd + +OUI:40D855091* + ID_OUI_FROM_DATABASE=KDT + +OUI:40D855092* + ID_OUI_FROM_DATABASE=Wasserbauer GmbH + +OUI:40D855093* + ID_OUI_FROM_DATABASE=Sentry 360 Security + +OUI:40D855094* + ID_OUI_FROM_DATABASE=Nomad Digital Limited + +OUI:40D855095* + ID_OUI_FROM_DATABASE=Heart Force Medical + +OUI:40D855096* + ID_OUI_FROM_DATABASE=Comtel Electronics GmbH + +OUI:40D855097* + ID_OUI_FROM_DATABASE=Burton Technical Services LLC + +OUI:40D855098* + ID_OUI_FROM_DATABASE=Dave Srl + OUI:000000* ID_OUI_FROM_DATABASE=XEROX CORPORATION @@ -18071,7 +18101,7 @@ OUI:00071A* ID_OUI_FROM_DATABASE=Finedigital Inc. OUI:00071B* - ID_OUI_FROM_DATABASE=CDV Americas Ltd + ID_OUI_FROM_DATABASE=CDVI Americas Ltd OUI:00071C* ID_OUI_FROM_DATABASE=AT&T Fixed Wireless Services @@ -18866,7 +18896,7 @@ OUI:000823* ID_OUI_FROM_DATABASE=Texa Corp. OUI:000824* - ID_OUI_FROM_DATABASE=Copitrak Inc + ID_OUI_FROM_DATABASE=Nuance Document Imaging OUI:000825* ID_OUI_FROM_DATABASE=Acme Packet @@ -23018,7 +23048,7 @@ OUI:000DAC* ID_OUI_FROM_DATABASE=Japan CBM Corporation OUI:000DAD* - ID_OUI_FROM_DATABASE=Dataprobe Inc + ID_OUI_FROM_DATABASE=Dataprobe, Inc. OUI:000DAE* ID_OUI_FROM_DATABASE=SAMSUNG HEAVY INDUSTRIES CO., LTD. @@ -25940,7 +25970,7 @@ OUI:001182* ID_OUI_FROM_DATABASE=IMI Norgren Ltd OUI:001183* - ID_OUI_FROM_DATABASE=Datalogic Mobile, Inc. + ID_OUI_FROM_DATABASE=Datalogic ADC, Inc. OUI:001184* ID_OUI_FROM_DATABASE=Humo Laboratory,Ltd. @@ -28376,7 +28406,7 @@ OUI:0014AE* ID_OUI_FROM_DATABASE=Wizlogics Co., Ltd. OUI:0014AF* - ID_OUI_FROM_DATABASE=Datasym Inc. + ID_OUI_FROM_DATABASE=Datasym POS Inc. OUI:0014B0* ID_OUI_FROM_DATABASE=Naeil Community @@ -28592,7 +28622,7 @@ OUI:0014F6* ID_OUI_FROM_DATABASE=Juniper Networks, Inc. OUI:0014F7* - ID_OUI_FROM_DATABASE=Crevis + ID_OUI_FROM_DATABASE=CREVIS Co., LTD OUI:0014F8* ID_OUI_FROM_DATABASE=Scientific Atlanta @@ -29552,7 +29582,7 @@ OUI:001636* ID_OUI_FROM_DATABASE=Quanta Computer Inc. OUI:001637* - ID_OUI_FROM_DATABASE=Citel Srl + ID_OUI_FROM_DATABASE=CITEL SpA OUI:001638* ID_OUI_FROM_DATABASE=TECOM Co., Ltd. @@ -31214,7 +31244,7 @@ OUI:001863* ID_OUI_FROM_DATABASE=Veritech Electronics Limited OUI:001864* - ID_OUI_FROM_DATABASE=Cybectec Inc. + ID_OUI_FROM_DATABASE=Eaton Corporation OUI:001865* ID_OUI_FROM_DATABASE=Siemens Healthcare Diagnostics Manufacturing Ltd @@ -34286,7 +34316,7 @@ OUI:001C63* ID_OUI_FROM_DATABASE=TRUEN OUI:001C64* - ID_OUI_FROM_DATABASE=Cellnet+Hunt + ID_OUI_FROM_DATABASE=Landis+Gyr OUI:001C65* ID_OUI_FROM_DATABASE=JoeScan, Inc. @@ -34880,7 +34910,7 @@ OUI:001D29* ID_OUI_FROM_DATABASE=Doro AB OUI:001D2A* - ID_OUI_FROM_DATABASE=Tideway Electronic LTD + ID_OUI_FROM_DATABASE=SHENZHEN BUL-TECH CO.,LTD. OUI:001D2B* ID_OUI_FROM_DATABASE=Wuhan Pont Technology CO. , LTD @@ -38939,7 +38969,7 @@ OUI:002274* ID_OUI_FROM_DATABASE=FamilyPhone AB OUI:002275* - ID_OUI_FROM_DATABASE=Belkin International, Inc. + ID_OUI_FROM_DATABASE=Belkin International Inc. OUI:002276* ID_OUI_FROM_DATABASE=Triple EYE B.V. @@ -38975,7 +39005,7 @@ OUI:002280* ID_OUI_FROM_DATABASE=A2B Electronics AB OUI:002281* - ID_OUI_FROM_DATABASE=Daintree Networks Inc + ID_OUI_FROM_DATABASE=Daintree Networks Pty OUI:002282* ID_OUI_FROM_DATABASE=8086 Consultancy @@ -41615,7 +41645,7 @@ OUI:0025FE* ID_OUI_FROM_DATABASE=Pilot Electronics Corporation OUI:0025FF* - ID_OUI_FROM_DATABASE=CreNova Technology GmbH + ID_OUI_FROM_DATABASE=CreNova Multimedia Co., Ltd OUI:002600* ID_OUI_FROM_DATABASE=TEAC Australia Pty Ltd. @@ -42074,7 +42104,7 @@ OUI:002699* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. OUI:00269A* - ID_OUI_FROM_DATABASE=carina system co., ltd. + ID_OUI_FROM_DATABASE=Carina System Co., Ltd. OUI:00269B* ID_OUI_FROM_DATABASE=SOKRAT Ltd. @@ -43760,7 +43790,7 @@ OUI:004095* ID_OUI_FROM_DATABASE=R.P.T. INTERGROUPS INT'L LTD. OUI:004096* - ID_OUI_FROM_DATABASE=Cisco Systems, Inc. + ID_OUI_FROM_DATABASE=Cisco Systems OUI:004097* ID_OUI_FROM_DATABASE=DATEX DIVISION OF @@ -50144,7 +50174,7 @@ OUI:00E085* ID_OUI_FROM_DATABASE=GLOBAL MAINTECH, INC. OUI:00E086* - ID_OUI_FROM_DATABASE=CYBEX COMPUTER PRODUCTS + ID_OUI_FROM_DATABASE=Emerson Network Power, Avocent Division OUI:00E087* ID_OUI_FROM_DATABASE=LeCroy - Networking Productions Division @@ -50740,6 +50770,9 @@ OUI:04B3B6* OUI:04B466* ID_OUI_FROM_DATABASE=BSP Co., Ltd. +OUI:04BFA8* + ID_OUI_FROM_DATABASE=ISB Corporation + OUI:04C05B* ID_OUI_FROM_DATABASE=Tigo Energy @@ -52360,6 +52393,9 @@ OUI:18F650* OUI:18F87A* ID_OUI_FROM_DATABASE=i3 International Inc. +OUI:18FA6F* + ID_OUI_FROM_DATABASE=ISC applied systems corp + OUI:18FC9F* ID_OUI_FROM_DATABASE=Changhe Electronics Co., Ltd. @@ -53161,6 +53197,9 @@ OUI:28CD1C* OUI:28CD4C* ID_OUI_FROM_DATABASE=Individual Computers GmbH +OUI:28CD9C* + ID_OUI_FROM_DATABASE=Shenzhen Dynamax Software Development Co.,Ltd. + OUI:28CFDA* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -53339,7 +53378,7 @@ OUI:2C9EFC* ID_OUI_FROM_DATABASE=CANON INC. OUI:2CA157* - ID_OUI_FROM_DATABASE=ACROMATE, INC. + ID_OUI_FROM_DATABASE=acromate, Inc. OUI:2CA780* ID_OUI_FROM_DATABASE=True Technologies Inc. @@ -53356,6 +53395,9 @@ OUI:2CB05D* OUI:2CB0DF* ID_OUI_FROM_DATABASE=Soliton Technologies Pvt Ltd +OUI:2CB693* + ID_OUI_FROM_DATABASE=Radware + OUI:2CB69D* ID_OUI_FROM_DATABASE=RED Digital Cinema @@ -54160,6 +54202,9 @@ OUI:3CC12C* OUI:3CC1F6* ID_OUI_FROM_DATABASE=Melange Systems Pvt. Ltd. +OUI:3CC243* + ID_OUI_FROM_DATABASE=Nokia Corporation + OUI:3CC99E* ID_OUI_FROM_DATABASE=Huiyang Technology Co., Ltd @@ -54379,6 +54424,9 @@ OUI:40A6D9* OUI:40AC8D* ID_OUI_FROM_DATABASE=Data Management, Inc. +OUI:40B0FA* + ID_OUI_FROM_DATABASE=LG Electronics + OUI:40B2C8* ID_OUI_FROM_DATABASE=Nortel Networks @@ -54547,6 +54595,9 @@ OUI:445F7A* OUI:446132* ID_OUI_FROM_DATABASE=ecobee inc +OUI:44619C* + ID_OUI_FROM_DATABASE=FONsystem co. ltd. + OUI:4468AB* ID_OUI_FROM_DATABASE=JUIN COMPANY, LIMITED @@ -55156,6 +55207,9 @@ OUI:508ACB* OUI:508C77* ID_OUI_FROM_DATABASE=DIRMEIER Schanktechnik GmbH &Co KG +OUI:508D6F* + ID_OUI_FROM_DATABASE=CHAHOO Limited + OUI:50934F* ID_OUI_FROM_DATABASE=Gradual Tecnologia Ltda. @@ -55192,6 +55246,9 @@ OUI:50C971* OUI:50CCF8* ID_OUI_FROM_DATABASE=Samsung Electro Mechanics +OUI:50CD32* + ID_OUI_FROM_DATABASE=NanJing Chaoran Technology Co; Ltd. + OUI:50CE75* ID_OUI_FROM_DATABASE=Measy Electronics Ltd @@ -55705,6 +55762,9 @@ OUI:5C7757* OUI:5C7D5E* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd +OUI:5C8486* + ID_OUI_FROM_DATABASE=Brightsource Industries Israel LTD + OUI:5C864A* ID_OUI_FROM_DATABASE=Secret Labs LLC @@ -55814,7 +55874,7 @@ OUI:600F77* ID_OUI_FROM_DATABASE=SilverPlus, Inc OUI:601199* - ID_OUI_FROM_DATABASE=Data-Tester Inc. + ID_OUI_FROM_DATABASE=Siama Systems Inc OUI:601283* ID_OUI_FROM_DATABASE=Soluciones Tecnologicas para la Salud y el Bienestar SA @@ -56308,6 +56368,9 @@ OUI:64DE1C* OUI:64E161* ID_OUI_FROM_DATABASE=DEP Corp. +OUI:64E599* + ID_OUI_FROM_DATABASE=EFM Networks + OUI:64E682* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -56374,6 +56437,9 @@ OUI:68234B* OUI:683B1E* ID_OUI_FROM_DATABASE=Countwise LTD +OUI:683EEC* + ID_OUI_FROM_DATABASE=ERECA + OUI:684352* ID_OUI_FROM_DATABASE=Bhuu Limited @@ -56884,6 +56950,9 @@ OUI:707EDE* OUI:708105* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. +OUI:70820E* + ID_OUI_FROM_DATABASE=as electronics GmbH + OUI:70828E* ID_OUI_FROM_DATABASE=OleumTech Corporation @@ -57661,6 +57730,9 @@ OUI:7CD1C3* OUI:7CD762* ID_OUI_FROM_DATABASE=Freestyle Technology Pty Ltd +OUI:7CD844* + ID_OUI_FROM_DATABASE=Enmotus Inc + OUI:7CD9FE* ID_OUI_FROM_DATABASE=New Cosmos Electric Co., Ltd. @@ -58474,6 +58546,9 @@ OUI:8CC5E1* OUI:8CC7AA* ID_OUI_FROM_DATABASE=Radinet Communications Inc. +OUI:8CC7D0* + ID_OUI_FROM_DATABASE=zhejiang ebang communication co.,ltd + OUI:8CC8CD* ID_OUI_FROM_DATABASE=Samsung Electronics Co., LTD @@ -58826,7 +58901,7 @@ OUI:944444* ID_OUI_FROM_DATABASE=LG Innotek OUI:944452* - ID_OUI_FROM_DATABASE=Belkin International, Inc. + ID_OUI_FROM_DATABASE=Belkin International Inc. OUI:944696* ID_OUI_FROM_DATABASE=BaudTec Corporation @@ -58876,6 +58951,9 @@ OUI:948FEE* OUI:949426* ID_OUI_FROM_DATABASE=Apple +OUI:9498A2* + ID_OUI_FROM_DATABASE=Shanghai LISTEN TECH.LTD + OUI:949BFD* ID_OUI_FROM_DATABASE=Trans New Technology, Inc. @@ -58888,6 +58966,9 @@ OUI:94A7BC* OUI:94AAB8* ID_OUI_FROM_DATABASE=Joview(Beijing) Technology Co. Ltd. +OUI:94ACCA* + ID_OUI_FROM_DATABASE=trivum technologies GmbH + OUI:94AE61* ID_OUI_FROM_DATABASE=Alcatel Lucent @@ -59056,6 +59137,9 @@ OUI:98588A* OUI:985945* ID_OUI_FROM_DATABASE=Texas Instruments +OUI:985C93* + ID_OUI_FROM_DATABASE=SBG Systems SAS + OUI:985E1B* ID_OUI_FROM_DATABASE=ConversDigital Co., Ltd. @@ -59503,6 +59587,9 @@ OUI:A078BA* OUI:A082C7* ID_OUI_FROM_DATABASE=P.T.I Co.,LTD +OUI:A0861D* + ID_OUI_FROM_DATABASE=Chengdu Fuhuaxin Technology co.,Ltd + OUI:A086EC* ID_OUI_FROM_DATABASE=SAEHAN HITEC Co., Ltd @@ -59512,6 +59599,9 @@ OUI:A08869* OUI:A088B4* ID_OUI_FROM_DATABASE=Intel Corporate +OUI:A08A87* + ID_OUI_FROM_DATABASE=HuiZhou KaiYue Electronic Co.,Ltd + OUI:A08C15* ID_OUI_FROM_DATABASE=Gerhard D. Wempe KG @@ -60862,6 +60952,9 @@ OUI:B8A8AF* OUI:B8AC6F* ID_OUI_FROM_DATABASE=Dell Inc +OUI:B8AE6E* + ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. + OUI:B8AF67* ID_OUI_FROM_DATABASE=Hewlett-Packard Company @@ -61117,6 +61210,9 @@ OUI:BCB1F3* OUI:BCB852* ID_OUI_FROM_DATABASE=Cybera, Inc. +OUI:BCBAE1* + ID_OUI_FROM_DATABASE=AREC Inc. + OUI:BCBBC9* ID_OUI_FROM_DATABASE=Kellendonk Elektronik GmbH @@ -61190,7 +61286,7 @@ OUI:C02506* ID_OUI_FROM_DATABASE=AVM GmbH OUI:C027B9* - ID_OUI_FROM_DATABASE=Beijing National Railway Research & Design Institute of Signal & Communication + ID_OUI_FROM_DATABASE=Beijing National Railway Research & Design Institute of Signal & Communication Co., Ltd. OUI:C02973* ID_OUI_FROM_DATABASE=Audyssey Laboratories Inc. @@ -61292,7 +61388,7 @@ OUI:C0A26D* ID_OUI_FROM_DATABASE=Abbott Point of Care OUI:C0A364* - ID_OUI_FROM_DATABASE=3D Systems Burlington + ID_OUI_FROM_DATABASE=3D Systems Massachusetts OUI:C0AA68* ID_OUI_FROM_DATABASE=OSASI Technos Inc. @@ -61958,7 +62054,7 @@ OUI:CCA374* ID_OUI_FROM_DATABASE=Guangdong Guanglian Electronic Technology Co.Ltd OUI:CCA462* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. OUI:CCAF78* ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. @@ -62245,6 +62341,9 @@ OUI:D0E54D* OUI:D0E782* ID_OUI_FROM_DATABASE=Azurewave Technologies, Inc. +OUI:D0EB03* + ID_OUI_FROM_DATABASE=Zhehua technology limited + OUI:D0EB9E* ID_OUI_FROM_DATABASE=Seowoo Inc. @@ -62311,6 +62410,9 @@ OUI:D429EA* OUI:D42C3D* ID_OUI_FROM_DATABASE=Sky Light Digital Limited +OUI:D43A65* + ID_OUI_FROM_DATABASE=IGRS Engineering Lab Ltd. + OUI:D43AE9* ID_OUI_FROM_DATABASE=DONGGUAN ipt INDUSTRIAL CO., LTD @@ -62776,6 +62878,9 @@ OUI:DC2B61* OUI:DC2B66* ID_OUI_FROM_DATABASE=Infoblock +OUI:DC2BCA* + ID_OUI_FROM_DATABASE=Zera GmbH + OUI:DC2C26* ID_OUI_FROM_DATABASE=Iton Technology Limited @@ -63392,7 +63497,7 @@ OUI:E83EFB* ID_OUI_FROM_DATABASE=GEODESIC LTD. OUI:E83EFC* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. OUI:E84040* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -63452,7 +63557,7 @@ OUI:E87AF3* ID_OUI_FROM_DATABASE=S5 Tech S.r.l. OUI:E8892C* - ID_OUI_FROM_DATABASE=ARRIS Group, Inc + ID_OUI_FROM_DATABASE=ARRIS Group, Inc. OUI:E88D28* ID_OUI_FROM_DATABASE=Apple @@ -64123,6 +64228,9 @@ OUI:F49461* OUI:F49466* ID_OUI_FROM_DATABASE=CountMax, ltd +OUI:F499AC* + ID_OUI_FROM_DATABASE=WEBER Schraubautomaten GmbH + OUI:F49F54* ID_OUI_FROM_DATABASE=Samsung Electronics @@ -64444,6 +64552,9 @@ OUI:FC0FE6* OUI:FC10BD* ID_OUI_FROM_DATABASE=Control Sistematizado S.A. +OUI:FC1186* + ID_OUI_FROM_DATABASE=Logic3 plc + OUI:FC1794* ID_OUI_FROM_DATABASE=InterCreative Co., Ltd @@ -64460,7 +64571,7 @@ OUI:FC253F* ID_OUI_FROM_DATABASE=Apple, Inc. OUI:FC2A54* - ID_OUI_FROM_DATABASE=connected data + ID_OUI_FROM_DATABASE=Connected Data, Inc. OUI:FC2E2D* ID_OUI_FROM_DATABASE=Lorom Industrial Co.LTD. diff --git a/hwdb/20-pci-vendor-product.hwdb b/hwdb/20-pci-vendor-product.hwdb index 7049d3a6b3..3c87a51763 100644 --- a/hwdb/20-pci-vendor-product.hwdb +++ b/hwdb/20-pci-vendor-product.hwdb @@ -4391,12 +4391,39 @@ pci:v00001002d00006610* pci:v00001002d00006611* ID_PRODUCT_FROM_DATABASE=Oland [Radeon HD 8500 Series] +pci:v00001002d00006660* + ID_PRODUCT_FROM_DATABASE=Sun [Radeon HD 8600M Series] + +pci:v00001002d00006700* + ID_PRODUCT_FROM_DATABASE=Cayman GL XT [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006701* + ID_PRODUCT_FROM_DATABASE=Cayman GL XT [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006702* + ID_PRODUCT_FROM_DATABASE=Cayman GL XT [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006703* + ID_PRODUCT_FROM_DATABASE=Cayman GL XT [ATI FirePro V (FireGL V) Graphics Adapter] + pci:v00001002d00006704* ID_PRODUCT_FROM_DATABASE=Cayman PRO GL [FirePro V7900] +pci:v00001002d00006705* + ID_PRODUCT_FROM_DATABASE=Cayman GL PRO [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006706* + ID_PRODUCT_FROM_DATABASE=Cayman GL [ATI FirePro V (FireGL V) Graphics Adapter] + pci:v00001002d00006707* ID_PRODUCT_FROM_DATABASE=Cayman LE GL [FirePro V5900] +pci:v00001002d00006708* + ID_PRODUCT_FROM_DATABASE=Cayman GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006709* + ID_PRODUCT_FROM_DATABASE=Cayman GL [ATI FirePro V (FireGL V) Graphics Adapter] + pci:v00001002d00006718* ID_PRODUCT_FROM_DATABASE=Cayman XT [Radeon HD 6970] @@ -4418,12 +4445,30 @@ pci:v00001002d00006720* pci:v00001002d00006721* ID_PRODUCT_FROM_DATABASE=Blackcomb [Mobility Radeon HD 6000 series] +pci:v00001002d00006722* + ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006723* + ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] + pci:v00001002d00006724* ID_PRODUCT_FROM_DATABASE=Blackcomb [Mobility Radeon HD 6000 series] pci:v00001002d00006725* ID_PRODUCT_FROM_DATABASE=Blackcomb [Mobility Radeon HD 6000 series] +pci:v00001002d00006726* + ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006727* + ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006728* + ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006729* + ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] + pci:v00001002d00006738* ID_PRODUCT_FROM_DATABASE=Barts XT [Radeon HD 6800 Series] @@ -4457,6 +4502,18 @@ pci:v00001002d00006743* pci:v00001002d00006744* ID_PRODUCT_FROM_DATABASE=Whistler [ATI Mobility Radeon HD 6000 series] +pci:v00001002d00006745* + ID_PRODUCT_FROM_DATABASE=Whistler + +pci:v00001002d00006746* + ID_PRODUCT_FROM_DATABASE=Turks GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006747* + ID_PRODUCT_FROM_DATABASE=Turks GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006748* + ID_PRODUCT_FROM_DATABASE=Turks GL [ATI FirePro V (FireGL V) Graphics Adapter] + pci:v00001002d00006749* ID_PRODUCT_FROM_DATABASE=Turks [FirePro V4900] @@ -4478,6 +4535,9 @@ pci:v00001002d00006759* pci:v00001002d0000675D* ID_PRODUCT_FROM_DATABASE=Turks [Radeon HD 7500 Series] +pci:v00001002d0000675F* + ID_PRODUCT_FROM_DATABASE=Turks LE [Radeon HD 5500/7510 Series] + pci:v00001002d00006760* ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 6400M/7400M Series] @@ -4487,6 +4547,9 @@ pci:v00001002d00006760sv00001028sd000004CC* pci:v00001002d00006761* ID_PRODUCT_FROM_DATABASE=Seymour LP [Radeon HD 6430M] +pci:v00001002d00006762* + ID_PRODUCT_FROM_DATABASE=Caicos GL [ATI FirePro V (FireGL V) Graphics Adapter] + pci:v00001002d00006763* ID_PRODUCT_FROM_DATABASE=Seymour [Radeon E6460] @@ -4496,9 +4559,21 @@ pci:v00001002d00006764* pci:v00001002d00006765* ID_PRODUCT_FROM_DATABASE=Seymour [Mobility Radeon HD 6000 series] +pci:v00001002d00006766* + ID_PRODUCT_FROM_DATABASE=Caicos + +pci:v00001002d00006767* + ID_PRODUCT_FROM_DATABASE=Caicos + +pci:v00001002d00006768* + ID_PRODUCT_FROM_DATABASE=Caicos + pci:v00001002d00006770* ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 6400 Series] +pci:v00001002d00006771* + ID_PRODUCT_FROM_DATABASE=Caicos + pci:v00001002d00006772* ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 7400A Series] @@ -4514,6 +4589,27 @@ pci:v00001002d00006779sv0000174Bsd0000E164* pci:v00001002d0000677B* ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 7400 Series] +pci:v00001002d00006780* + ID_PRODUCT_FROM_DATABASE=Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006784* + ID_PRODUCT_FROM_DATABASE=Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006788* + ID_PRODUCT_FROM_DATABASE=Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d0000678A* + ID_PRODUCT_FROM_DATABASE=Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006790* + ID_PRODUCT_FROM_DATABASE=Tahiti + +pci:v00001002d00006791* + ID_PRODUCT_FROM_DATABASE=Tahiti + +pci:v00001002d00006792* + ID_PRODUCT_FROM_DATABASE=Tahiti + pci:v00001002d00006798* ID_PRODUCT_FROM_DATABASE=Tahiti XT [Radeon HD 7970] @@ -4529,9 +4625,39 @@ pci:v00001002d0000679B* pci:v00001002d0000679E* ID_PRODUCT_FROM_DATABASE=Tahiti LE [Radeon HD 7800 Series] +pci:v00001002d0000679F* + ID_PRODUCT_FROM_DATABASE=Tahiti + pci:v00001002d00006800* ID_PRODUCT_FROM_DATABASE=Wimbledon XT [Radeon HD 7970M] +pci:v00001002d00006801* + ID_PRODUCT_FROM_DATABASE=Wimbledon + +pci:v00001002d00006802* + ID_PRODUCT_FROM_DATABASE=Wimbledon + +pci:v00001002d00006806* + ID_PRODUCT_FROM_DATABASE=Pitcairn + +pci:v00001002d00006808* + ID_PRODUCT_FROM_DATABASE=Pitcairn [ATI FirePro V(FireGL V) Graphics Adapter] + +pci:v00001002d00006809* + ID_PRODUCT_FROM_DATABASE=Pitcairn [ATI FirePro V(FireGL V) Graphics Adapter] + +pci:v00001002d00006810* + ID_PRODUCT_FROM_DATABASE=Pitcairn + +pci:v00001002d00006811* + ID_PRODUCT_FROM_DATABASE=Pitcairn + +pci:v00001002d00006816* + ID_PRODUCT_FROM_DATABASE=Pitcairn + +pci:v00001002d00006817* + ID_PRODUCT_FROM_DATABASE=Pitcairn + pci:v00001002d00006818* ID_PRODUCT_FROM_DATABASE=Pitcairn [Radeon HD 7800] @@ -4562,6 +4688,12 @@ pci:v00001002d00006826* pci:v00001002d00006827* ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7800M Series] +pci:v00001002d00006828* + ID_PRODUCT_FROM_DATABASE=Cape Verde + +pci:v00001002d00006829* + ID_PRODUCT_FROM_DATABASE=Cape Verde + pci:v00001002d0000682B* ID_PRODUCT_FROM_DATABASE=Radeon HD 8800M Series @@ -4577,6 +4709,12 @@ pci:v00001002d00006831* pci:v00001002d00006837* ID_PRODUCT_FROM_DATABASE=Cape Verde LE [Radeon HD 7700 Series] +pci:v00001002d00006838* + ID_PRODUCT_FROM_DATABASE=Cape Verde + +pci:v00001002d00006839* + ID_PRODUCT_FROM_DATABASE=Cape Verde + pci:v00001002d0000683B* ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7700 Series] @@ -4601,12 +4739,18 @@ pci:v00001002d00006843* pci:v00001002d00006849* ID_PRODUCT_FROM_DATABASE=Lombok [AMD Radeon HD 7400 Series] +pci:v00001002d0000684C* + ID_PRODUCT_FROM_DATABASE=Pitcairn [ATI FirePro V(FireGL V) Graphics Adapter] + pci:v00001002d00006850* ID_PRODUCT_FROM_DATABASE=Lombok GL AIO [Radeon HD 7570] pci:v00001002d00006858* ID_PRODUCT_FROM_DATABASE=Lombok [Radeon HD 7400 series] +pci:v00001002d00006880* + ID_PRODUCT_FROM_DATABASE=Cypress + pci:v00001002d00006888* ID_PRODUCT_FROM_DATABASE=Cypress [FirePro 3D V8800] @@ -4715,6 +4859,9 @@ pci:v00001002d000068D9* pci:v00001002d000068DA* ID_PRODUCT_FROM_DATABASE=Redwood PRO [Radeon HD 5500 Series] +pci:v00001002d000068DE* + ID_PRODUCT_FROM_DATABASE=Redwood + pci:v00001002d000068E0* ID_PRODUCT_FROM_DATABASE=Manhattan [Mobility Radeon HD 5400 Series] @@ -4730,6 +4877,12 @@ pci:v00001002d000068E4* pci:v00001002d000068E5* ID_PRODUCT_FROM_DATABASE=Robson LE [AMD Radeon HD 6300M Series] +pci:v00001002d000068E8* + ID_PRODUCT_FROM_DATABASE=Cedar + +pci:v00001002d000068E9* + ID_PRODUCT_FROM_DATABASE=Cedar [ATI FirePro (FireGL) Graphics Adapter] + pci:v00001002d000068F1* ID_PRODUCT_FROM_DATABASE=Cedar [FirePro 2460] @@ -4751,6 +4904,9 @@ pci:v00001002d000068F9sv00001043sd000003C2* pci:v00001002d000068FA* ID_PRODUCT_FROM_DATABASE=EG Cedar [Radeon HD 7300 Series] +pci:v00001002d000068FE* + ID_PRODUCT_FROM_DATABASE=Cedar LE + pci:v00001002d0000700F* ID_PRODUCT_FROM_DATABASE=PCI Bridge [IGP 320M] @@ -5225,9 +5381,18 @@ pci:v00001002d00007941* pci:v00001002d00007942* ID_PRODUCT_FROM_DATABASE=RS600 [Radeon Xpress 1250] +pci:v00001002d0000796C* + ID_PRODUCT_FROM_DATABASE=RS740 + +pci:v00001002d0000796D* + ID_PRODUCT_FROM_DATABASE=RS740 + pci:v00001002d0000796E* ID_PRODUCT_FROM_DATABASE=RS740 [Radeon 2100] +pci:v00001002d0000796F* + ID_PRODUCT_FROM_DATABASE=RS740 + pci:v00001002d00007C37* ID_PRODUCT_FROM_DATABASE=RV350 AQ [Radeon 9600 SE] @@ -5309,6 +5474,12 @@ pci:v00001002d00009456* pci:v00001002d0000945A* ID_PRODUCT_FROM_DATABASE=M98 XT [Mobility Radeon HD 4870] +pci:v00001002d0000945B* + ID_PRODUCT_FROM_DATABASE=RV770 + +pci:v00001002d0000945E* + ID_PRODUCT_FROM_DATABASE=RV770 + pci:v00001002d00009460* ID_PRODUCT_FROM_DATABASE=RV790 [Radeon HD 4890] @@ -5318,6 +5489,15 @@ pci:v00001002d00009462* pci:v00001002d0000946A* ID_PRODUCT_FROM_DATABASE=RV770 [FirePro M7750] +pci:v00001002d0000946B* + ID_PRODUCT_FROM_DATABASE=RV770 + +pci:v00001002d0000947A* + ID_PRODUCT_FROM_DATABASE=RV770 + +pci:v00001002d0000947B* + ID_PRODUCT_FROM_DATABASE=RV770 + pci:v00001002d00009480* ID_PRODUCT_FROM_DATABASE=M96 [Mobility Radeon HD 4650] @@ -5327,12 +5507,21 @@ pci:v00001002d00009480sv0000103Csd00003628* pci:v00001002d00009485* ID_PRODUCT_FROM_DATABASE=RV740 Pro [Radeon HD 4770] +pci:v00001002d00009487* + ID_PRODUCT_FROM_DATABASE=RV730 + pci:v00001002d00009488* ID_PRODUCT_FROM_DATABASE=RV730 XT [Mobility Radeon HD 4670] pci:v00001002d00009489* ID_PRODUCT_FROM_DATABASE=M96 XT [Mobility FireGL V5725] +pci:v00001002d0000948A* + ID_PRODUCT_FROM_DATABASE=RV730 + +pci:v00001002d0000948F* + ID_PRODUCT_FROM_DATABASE=RV730 + pci:v00001002d00009490* ID_PRODUCT_FROM_DATABASE=RV730XT [Radeon HD 4670] @@ -5354,6 +5543,9 @@ pci:v00001002d00009495sv00001458sd00000028* pci:v00001002d00009498* ID_PRODUCT_FROM_DATABASE=RV730 PRO [Radeon HD 4650] +pci:v00001002d0000949C* + ID_PRODUCT_FROM_DATABASE=RV730 + pci:v00001002d0000949E* ID_PRODUCT_FROM_DATABASE=RV370 [FirePro V5700] @@ -5369,6 +5561,9 @@ pci:v00001002d000094A1* pci:v00001002d000094A3* ID_PRODUCT_FROM_DATABASE=M97 GL [ATI FirePro M7740] +pci:v00001002d000094B1* + ID_PRODUCT_FROM_DATABASE=RV740 + pci:v00001002d000094B3* ID_PRODUCT_FROM_DATABASE=Radeon HD 4770 [RV740] @@ -5378,6 +5573,12 @@ pci:v00001002d000094B4* pci:v00001002d000094B5* ID_PRODUCT_FROM_DATABASE=RV740 [Radeon HD 4770] +pci:v00001002d000094B9* + ID_PRODUCT_FROM_DATABASE=RV740 + +pci:v00001002d000094C0* + ID_PRODUCT_FROM_DATABASE=RV610 + pci:v00001002d000094C1* ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2400 XT] @@ -5408,6 +5609,9 @@ pci:v00001002d000094C4* pci:v00001002d000094C5* ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2400 LE] +pci:v00001002d000094C6* + ID_PRODUCT_FROM_DATABASE=RV610 + pci:v00001002d000094C7* ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2350] @@ -5426,6 +5630,12 @@ pci:v00001002d000094CB* pci:v00001002d000094CC* ID_PRODUCT_FROM_DATABASE=RV610 LE [Radeon HD 2400 Pro PCI] +pci:v00001002d000094CD* + ID_PRODUCT_FROM_DATABASE=RV610 + +pci:v00001002d00009500* + ID_PRODUCT_FROM_DATABASE=RV670 + pci:v00001002d00009501* ID_PRODUCT_FROM_DATABASE=RV670 [Radeon HD 3870] @@ -5459,12 +5669,24 @@ pci:v00001002d00009511* pci:v00001002d00009515* ID_PRODUCT_FROM_DATABASE=RV670 AGP [Radeon HD 3850] +pci:v00001002d00009517* + ID_PRODUCT_FROM_DATABASE=RV670 + pci:v00001002d00009519* ID_PRODUCT_FROM_DATABASE=RV670 [FireStream 9170] pci:v00001002d00009540* ID_PRODUCT_FROM_DATABASE=RV710 [Radeon HD 4550] +pci:v00001002d00009541* + ID_PRODUCT_FROM_DATABASE=RV710 + +pci:v00001002d00009542* + ID_PRODUCT_FROM_DATABASE=RV710 + +pci:v00001002d0000954E* + ID_PRODUCT_FROM_DATABASE=RV710 + pci:v00001002d0000954F* ID_PRODUCT_FROM_DATABASE=RV710 [Radeon HD 4350] @@ -5486,12 +5708,18 @@ pci:v00001002d00009555* pci:v00001002d00009555sv0000103Csd00001411* ID_PRODUCT_FROM_DATABASE=ProBook 4720s GPU (Mobility Radeon HD 4350) +pci:v00001002d00009557* + ID_PRODUCT_FROM_DATABASE=RV710 + pci:v00001002d00009559* ID_PRODUCT_FROM_DATABASE=RV635 [Mobility Radeon HD 3600 Series] pci:v00001002d0000955F* ID_PRODUCT_FROM_DATABASE=RV710 [Mobility Radeon HD 4330] +pci:v00001002d00009580* + ID_PRODUCT_FROM_DATABASE=RV630 + pci:v00001002d00009581* ID_PRODUCT_FROM_DATABASE=RV630 [Mobility Radeon HD 2600] @@ -5513,6 +5741,9 @@ pci:v00001002d00009588sv00001458sd0000216C* pci:v00001002d00009589* ID_PRODUCT_FROM_DATABASE=RV630 [Radeon HD 2600 Series] +pci:v00001002d0000958A* + ID_PRODUCT_FROM_DATABASE=RV630 + pci:v00001002d0000958B* ID_PRODUCT_FROM_DATABASE=RV630 [Mobility Radeon HD 2600 XT] @@ -5522,6 +5753,15 @@ pci:v00001002d0000958C* pci:v00001002d0000958D* ID_PRODUCT_FROM_DATABASE=RV630 [FireGL V3600] +pci:v00001002d0000958E* + ID_PRODUCT_FROM_DATABASE=RV630 + +pci:v00001002d0000958F* + ID_PRODUCT_FROM_DATABASE=RV630 + +pci:v00001002d00009590* + ID_PRODUCT_FROM_DATABASE=RV635 + pci:v00001002d00009591* ID_PRODUCT_FROM_DATABASE=RV635 [Mobility Radeon HD 3650] @@ -5552,12 +5792,21 @@ pci:v00001002d00009598sv00001002sd00009598* pci:v00001002d00009598sv00001043sd000001D6* ID_PRODUCT_FROM_DATABASE=EAH3650 Silent +pci:v00001002d00009599* + ID_PRODUCT_FROM_DATABASE=RV635 + +pci:v00001002d0000959B* + ID_PRODUCT_FROM_DATABASE=RV635 + pci:v00001002d000095C0* ID_PRODUCT_FROM_DATABASE=RV620 PRO [Radeon HD 3470] pci:v00001002d000095C0sv00001002sd000095C0* ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 3470 +pci:v00001002d000095C2* + ID_PRODUCT_FROM_DATABASE=RV620 + pci:v00001002d000095C4* ID_PRODUCT_FROM_DATABASE=RV620 [Mobility Radeon HD 3400 Series] @@ -5624,12 +5873,42 @@ pci:v00001002d00009640* pci:v00001002d00009641* ID_PRODUCT_FROM_DATABASE=BeaverCreek [Mobility Radeon HD 6620G] +pci:v00001002d00009642* + ID_PRODUCT_FROM_DATABASE=Sumo [Radeon HD 6370D] + +pci:v00001002d00009643* + ID_PRODUCT_FROM_DATABASE=Sumo [Radeon HD 6380G] + +pci:v00001002d00009644* + ID_PRODUCT_FROM_DATABASE=Sumo [Radeon HD 6410D] + +pci:v00001002d00009645* + ID_PRODUCT_FROM_DATABASE=Sumo [Radeon HD 6410D] + pci:v00001002d00009647* ID_PRODUCT_FROM_DATABASE=BeaverCreek [Radeon HD 6520G] +pci:v00001002d00009648* + ID_PRODUCT_FROM_DATABASE=Sumo [Radeon HD 6480G] + +pci:v00001002d00009649* + ID_PRODUCT_FROM_DATABASE=Sumo [Radeon HD 6480G] + pci:v00001002d0000964A* ID_PRODUCT_FROM_DATABASE=BeaverCreek [Radeon HD 6530D] +pci:v00001002d0000964B* + ID_PRODUCT_FROM_DATABASE=Sumo + +pci:v00001002d0000964C* + ID_PRODUCT_FROM_DATABASE=Sumo + +pci:v00001002d0000964E* + ID_PRODUCT_FROM_DATABASE=Sumo + +pci:v00001002d0000964F* + ID_PRODUCT_FROM_DATABASE=Sumo + pci:v00001002d0000970F* ID_PRODUCT_FROM_DATABASE=RS880 HDMI Audio [Radeon HD 4200 Series] @@ -5651,6 +5930,9 @@ pci:v00001002d00009710sv00001019sd00002120* pci:v00001002d00009710sv00001043sd000083A2* ID_PRODUCT_FROM_DATABASE=M4A785TD Motherboard +pci:v00001002d00009711* + ID_PRODUCT_FROM_DATABASE=RS880 [Radeon 4100] + pci:v00001002d00009712* ID_PRODUCT_FROM_DATABASE=RS880M [Mobility Radeon HD 4200 Series] @@ -5672,15 +5954,30 @@ pci:v00001002d00009802* pci:v00001002d00009802sv0000174Bsd00001001* ID_PRODUCT_FROM_DATABASE=Sapphire PURE Fusion Mini +pci:v00001002d00009803* + ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 6310] + pci:v00001002d00009804* ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 6250] +pci:v00001002d00009805* + ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 6250] + pci:v00001002d00009806* ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 6320] pci:v00001002d00009807* ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 6290] +pci:v00001002d00009808* + ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 7340] + +pci:v00001002d00009809* + ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 7310] + +pci:v00001002d0000980A* + ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 7290] + pci:v00001002d00009901* ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7660D] @@ -5693,9 +5990,63 @@ pci:v00001002d00009903* pci:v00001002d00009904* ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7560D] +pci:v00001002d00009905* + ID_PRODUCT_FROM_DATABASE=Trinity [FirePro A300 Series Graphics] + +pci:v00001002d00009906* + ID_PRODUCT_FROM_DATABASE=Trinity [FirePro A300 Series Graphics] + +pci:v00001002d00009907* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7620G] + +pci:v00001002d00009908* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7600G] + +pci:v00001002d00009909* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7500G] + +pci:v00001002d0000990A* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7500G] + +pci:v00001002d00009910* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7660G] + +pci:v00001002d00009913* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7640G] + +pci:v00001002d00009917* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7620G] + +pci:v00001002d00009918* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7600G] + +pci:v00001002d00009919* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7500G] + pci:v00001002d00009990* ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7520G] +pci:v00001002d00009991* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7540D] + +pci:v00001002d00009992* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7420G] + +pci:v00001002d00009993* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7480D] + +pci:v00001002d00009994* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7400G] + +pci:v00001002d000099A0* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7520G] + +pci:v00001002d000099A2* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7420G] + +pci:v00001002d000099A4* + ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7400G] + pci:v00001002d0000AA00* ID_PRODUCT_FROM_DATABASE=R600 Audio Device [Radeon HD 2900 Series] @@ -10397,6 +10748,36 @@ pci:v0000103Cd0000323Bsv0000103Csd00003354* pci:v0000103Cd0000323Bsv0000103Csd00003355* ID_PRODUCT_FROM_DATABASE=P220i +pci:v0000103Cd0000323C* + ID_PRODUCT_FROM_DATABASE=Smart Array Gen8+ Controllers + +pci:v0000103Cd0000323Csv0000103Csd00001920* + ID_PRODUCT_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001921* + ID_PRODUCT_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001922* + ID_PRODUCT_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001923* + ID_PRODUCT_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001924* + ID_PRODUCT_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001925* + ID_PRODUCT_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001926* + ID_PRODUCT_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001927* + ID_PRODUCT_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001928* + ID_PRODUCT_FROM_DATABASE=Smart Array + pci:v0000103Cd00003300* ID_PRODUCT_FROM_DATABASE=Integrated Lights-Out Standard Virtual USB Controller @@ -11465,6 +11846,9 @@ pci:v0000104Cd00009066sv00000308sd00003406* pci:v0000104Cd00009066sv0000104Csd00009066* ID_PRODUCT_FROM_DATABASE=WL212 Sitecom Wireless Network PCI-Card 100M (Version 1) +pci:v0000104Cd00009066sv0000104Csd00009067* + ID_PRODUCT_FROM_DATABASE=TNETW1130GVF + pci:v0000104Cd00009066sv0000104Csd00009096* ID_PRODUCT_FROM_DATABASE=Trendnet TEW-412PC Wireless PCI Adapter (Version A) @@ -13997,6 +14381,9 @@ pci:v00001093d00002CC0* pci:v00001093d00002DB0* ID_PRODUCT_FROM_DATABASE=PCI-6608 +pci:v00001093d00007085* + ID_PRODUCT_FROM_DATABASE=PCI-6509 + pci:v00001093d000070A9* ID_PRODUCT_FROM_DATABASE=PCI-6528 (Digital I/O at 60V) @@ -15089,6 +15476,9 @@ pci:v000010B5d00008680* pci:v000010B5d00008696* ID_PRODUCT_FROM_DATABASE=PEX 8696 96-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch +pci:v000010B5d00008717* + ID_PRODUCT_FROM_DATABASE=PEX 8717 16-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch with DMA + pci:v000010B5d00008732* ID_PRODUCT_FROM_DATABASE=PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch @@ -19217,6 +19607,9 @@ pci:v000010DEd00000322sv00001043sd000002FB* pci:v000010DEd00000322sv00001043sd00008180* ID_PRODUCT_FROM_DATABASE=V9520-X/TD/128M +pci:v000010DEd00000322sv0000107Dsd00002967* + ID_PRODUCT_FROM_DATABASE=WinFast A340T 128MB + pci:v000010DEd00000322sv00001462sd00009110* ID_PRODUCT_FROM_DATABASE=MS-8911 (FX5200-TD128) @@ -21800,6 +22193,9 @@ pci:v000010DEd00000DFA* pci:v000010DEd00000E08* ID_PRODUCT_FROM_DATABASE=GF119 HDMI Audio Controller +pci:v000010DEd00000E08sv000010B0sd0000104A* + ID_PRODUCT_FROM_DATABASE=Gainward GeForce GT 610 + pci:v000010DEd00000E09* ID_PRODUCT_FROM_DATABASE=GF110 High Definition Audio Controller @@ -21872,12 +22268,18 @@ pci:v000010DEd00000FFB* pci:v000010DEd00000FFC* ID_PRODUCT_FROM_DATABASE=GK107 [Quadro K1000M] +pci:v000010DEd00000FFD* + ID_PRODUCT_FROM_DATABASE=GK107 [NVS 510] + pci:v000010DEd00000FFE* ID_PRODUCT_FROM_DATABASE=GK107 [Quadro K2000] pci:v000010DEd00000FFF* ID_PRODUCT_FROM_DATABASE=GK107 [Quadro 410] +pci:v000010DEd00001022* + ID_PRODUCT_FROM_DATABASE=GK107 [Tesla K20c] + pci:v000010DEd00001040* ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 520] @@ -21893,6 +22295,9 @@ pci:v000010DEd00001049* pci:v000010DEd0000104A* ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 610] +pci:v000010DEd0000104Asv000010B0sd0000104A* + ID_PRODUCT_FROM_DATABASE=Gainward GeForce GT 610 + pci:v000010DEd00001050* ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 520M] @@ -23640,7 +24045,7 @@ pci:v00001106d00000571sv0000147Bsd00001407* ID_PRODUCT_FROM_DATABASE=KV8-MAX3 motherboard pci:v00001106d00000571sv00001849sd00000571* - ID_PRODUCT_FROM_DATABASE=K7VT2/K7VT6 motherboard + ID_PRODUCT_FROM_DATABASE=K7VT series Motherboards pci:v00001106d00000576* ID_PRODUCT_FROM_DATABASE=VT82C576 3V [Apollo Master] @@ -23970,7 +24375,7 @@ pci:v00001106d00003038sv0000182Dsd0000201D* ID_PRODUCT_FROM_DATABASE=CN-029 USB2.0 4 port PCI Card pci:v00001106d00003038sv00001849sd00003038* - ID_PRODUCT_FROM_DATABASE=K7VT6 + ID_PRODUCT_FROM_DATABASE=K7VT series Motherboards pci:v00001106d00003038sv000019DAsd0000A179* ID_PRODUCT_FROM_DATABASE=ZBOX nano VD01 @@ -24009,7 +24414,7 @@ pci:v00001106d00003044sv00001043sd0000808A* ID_PRODUCT_FROM_DATABASE=A8V/A8N/P4P800 series motherboard pci:v00001106d00003044sv00001043sd000081FE* - ID_PRODUCT_FROM_DATABASE=M4A series motherboard + ID_PRODUCT_FROM_DATABASE=Motherboard pci:v00001106d00003044sv00001458sd00001000* ID_PRODUCT_FROM_DATABASE=GA-7VT600-1394 Motherboard @@ -24180,7 +24585,7 @@ pci:v00001106d00003059sv00001849sd00009739* ID_PRODUCT_FROM_DATABASE=P4VT8 Mainboard (C-Media CMI9739A codec) pci:v00001106d00003059sv00001849sd00009761* - ID_PRODUCT_FROM_DATABASE=K7VT6 motherboard + ID_PRODUCT_FROM_DATABASE=K7VT series Motherboards pci:v00001106d00003059sv00004005sd00004710* ID_PRODUCT_FROM_DATABASE=MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P) @@ -24228,7 +24633,7 @@ pci:v00001106d00003065sv00001695sd0000300C* ID_PRODUCT_FROM_DATABASE=Realtek ALC655 sound chip pci:v00001106d00003065sv00001849sd00003065* - ID_PRODUCT_FROM_DATABASE=K7VT6 motherboard + ID_PRODUCT_FROM_DATABASE=K7VT series Motherboards pci:v00001106d00003068* ID_PRODUCT_FROM_DATABASE=AC'97 Modem Controller @@ -24309,7 +24714,7 @@ pci:v00001106d00003104sv0000182Dsd0000201D* ID_PRODUCT_FROM_DATABASE=CN-029 USB 2.0 4 port PCI Card pci:v00001106d00003104sv00001849sd00003104* - ID_PRODUCT_FROM_DATABASE=K7VT6 motherboard + ID_PRODUCT_FROM_DATABASE=K7VT series Motherboards pci:v00001106d00003104sv000019DAsd0000A179* ID_PRODUCT_FROM_DATABASE=ZBOX nano VD01 @@ -24453,7 +24858,7 @@ pci:v00001106d00003177sv00001458sd00005001* ID_PRODUCT_FROM_DATABASE=GA-7VAX Mainboard pci:v00001106d00003177sv00001849sd00003177* - ID_PRODUCT_FROM_DATABASE=K7VT2 motherboard + ID_PRODUCT_FROM_DATABASE=K7VT series Motherboards pci:v00001106d00003178* ID_PRODUCT_FROM_DATABASE=ProSavageDDR P4N333 Host Bridge @@ -24480,7 +24885,7 @@ pci:v00001106d00003189sv00001458sd00005000* ID_PRODUCT_FROM_DATABASE=GA-7VAX Mainboard pci:v00001106d00003189sv00001849sd00003189* - ID_PRODUCT_FROM_DATABASE=K7VT6 motherboard + ID_PRODUCT_FROM_DATABASE=K7VT series Motherboards pci:v00001106d00003204* ID_PRODUCT_FROM_DATABASE=K8M800 Host Bridge @@ -29288,6 +29693,9 @@ pci:v000011ABd00004363* pci:v000011ABd00004364* ID_PRODUCT_FROM_DATABASE=88E8056 PCI-E Gigabit Ethernet Controller +pci:v000011ABd00004364sv00001043sd000081F8* + ID_PRODUCT_FROM_DATABASE=Motherboard + pci:v000011ABd00004364sv000011BAsd000000BA* ID_PRODUCT_FROM_DATABASE=8056 Gigabit Ethernet Controller @@ -29375,6 +29783,9 @@ pci:v000011ABd00006081* pci:v000011ABd00006101* ID_PRODUCT_FROM_DATABASE=88SE6101/6102 single-port PATA133 interface +pci:v000011ABd00006101sv00001043sd000082E0* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v000011ABd00006111* ID_PRODUCT_FROM_DATABASE=88SE6111 1-port PATA133(IDE) and 1-port SATA II Controllers @@ -36338,6 +36749,33 @@ pci:v00001425d0000400D* pci:v00001425d0000400E* ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller +pci:v00001425d0000400F* + ID_PRODUCT_FROM_DATABASE=Amsterdam T440 Unified Wire Ethernet Controller + +pci:v00001425d00004080* + ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller + +pci:v00001425d00004081* + ID_PRODUCT_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Ethernet Controller + +pci:v00001425d00004082* + ID_PRODUCT_FROM_DATABASE=T420-4082 Unified Wire Ethernet Controller + +pci:v00001425d00004083* + ID_PRODUCT_FROM_DATABASE=T420X-4083 Unified Wire Ethernet Controller + +pci:v00001425d00004084* + ID_PRODUCT_FROM_DATABASE=T420-4084 Unified Wire Ethernet Controller + +pci:v00001425d00004085* + ID_PRODUCT_FROM_DATABASE=T420-4085 SFP+ Unified Wire Ethernet Controller + +pci:v00001425d00004086* + ID_PRODUCT_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Ethernet Controller + +pci:v00001425d00004087* + ID_PRODUCT_FROM_DATABASE=T440T-4087 Unified Wire Ethernet Controller + pci:v00001425d00004401* ID_PRODUCT_FROM_DATABASE=T420-CR Unified Wire Ethernet Controller @@ -36380,6 +36818,33 @@ pci:v00001425d0000440D* pci:v00001425d0000440E* ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller +pci:v00001425d0000440F* + ID_PRODUCT_FROM_DATABASE=Amsterdam T440 Unified Wire Ethernet Controller + +pci:v00001425d00004480* + ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller + +pci:v00001425d00004481* + ID_PRODUCT_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Ethernet Controller + +pci:v00001425d00004482* + ID_PRODUCT_FROM_DATABASE=T420-4082 Unified Wire Ethernet Controller + +pci:v00001425d00004483* + ID_PRODUCT_FROM_DATABASE=T420X-4083 Unified Wire Ethernet Controller + +pci:v00001425d00004484* + ID_PRODUCT_FROM_DATABASE=T420-4084 Unified Wire Ethernet Controller + +pci:v00001425d00004485* + ID_PRODUCT_FROM_DATABASE=T420-4085 SFP+ Unified Wire Ethernet Controller + +pci:v00001425d00004486* + ID_PRODUCT_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Ethernet Controller + +pci:v00001425d00004487* + ID_PRODUCT_FROM_DATABASE=T440T-4087 Unified Wire Ethernet Controller + pci:v00001425d00004501* ID_PRODUCT_FROM_DATABASE=T420-CR Unified Wire Storage Controller @@ -36411,10 +36876,10 @@ pci:v00001425d0000450A* ID_PRODUCT_FROM_DATABASE=T404-BT Unified Wire Storage Controller pci:v00001425d0000450B* - ID_PRODUCT_FROM_DATABASE=B420-SR Unified Wire Ethernet Controller + ID_PRODUCT_FROM_DATABASE=B420-SR Unified Wire Storage Controller pci:v00001425d0000450C* - ID_PRODUCT_FROM_DATABASE=B404-BT Unified Wire Ethernet Controller + ID_PRODUCT_FROM_DATABASE=B404-BT Unified Wire Storage Controller pci:v00001425d0000450D* ID_PRODUCT_FROM_DATABASE=T480 Unified Wire Storage Controller @@ -36422,6 +36887,33 @@ pci:v00001425d0000450D* pci:v00001425d0000450E* ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Storage Controller +pci:v00001425d0000450F* + ID_PRODUCT_FROM_DATABASE=Amsterdam T440 Unified Wire Storage Controller + +pci:v00001425d00004580* + ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Storage Controller + +pci:v00001425d00004581* + ID_PRODUCT_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Storage Controller + +pci:v00001425d00004582* + ID_PRODUCT_FROM_DATABASE=T420-4082 Unified Wire Storage Controller + +pci:v00001425d00004583* + ID_PRODUCT_FROM_DATABASE=T420X-4083 Unified Wire Storage Controller + +pci:v00001425d00004584* + ID_PRODUCT_FROM_DATABASE=T420-4084 Unified Wire Storage Controller + +pci:v00001425d00004585* + ID_PRODUCT_FROM_DATABASE=T420-4085 SFP+ Unified Wire Storage Controller + +pci:v00001425d00004586* + ID_PRODUCT_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Storage Controller + +pci:v00001425d00004587* + ID_PRODUCT_FROM_DATABASE=T440T-4087 Unified Wire Storage Controller + pci:v00001425d00004601* ID_PRODUCT_FROM_DATABASE=T420-CR Unified Wire Storage Controller @@ -36453,10 +36945,10 @@ pci:v00001425d0000460A* ID_PRODUCT_FROM_DATABASE=T404-BT Unified Wire Storage Controller pci:v00001425d0000460B* - ID_PRODUCT_FROM_DATABASE=B420-SR Unified Wire Ethernet Controller + ID_PRODUCT_FROM_DATABASE=B420-SR Unified Wire Storage Controller pci:v00001425d0000460C* - ID_PRODUCT_FROM_DATABASE=B404-BT Unified Wire Ethernet Controller + ID_PRODUCT_FROM_DATABASE=B404-BT Unified Wire Storage Controller pci:v00001425d0000460D* ID_PRODUCT_FROM_DATABASE=T480 Unified Wire Storage Controller @@ -36464,6 +36956,33 @@ pci:v00001425d0000460D* pci:v00001425d0000460E* ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Storage Controller +pci:v00001425d0000460F* + ID_PRODUCT_FROM_DATABASE=Amsterdam T440 Unified Wire Storage Controller + +pci:v00001425d00004680* + ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Storage Controller + +pci:v00001425d00004681* + ID_PRODUCT_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Storage Controller + +pci:v00001425d00004682* + ID_PRODUCT_FROM_DATABASE=T420-4082 Unified Wire Storage Controller + +pci:v00001425d00004683* + ID_PRODUCT_FROM_DATABASE=T420X-4083 Unified Wire Storage Controller + +pci:v00001425d00004684* + ID_PRODUCT_FROM_DATABASE=T420-4084 Unified Wire Storage Controller + +pci:v00001425d00004685* + ID_PRODUCT_FROM_DATABASE=T420-4085 SFP+ Unified Wire Storage Controller + +pci:v00001425d00004686* + ID_PRODUCT_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Storage Controller + +pci:v00001425d00004687* + ID_PRODUCT_FROM_DATABASE=T440T-4087 Unified Wire Storage Controller + pci:v00001425d00004701* ID_PRODUCT_FROM_DATABASE=T420-CR Unified Wire Ethernet Controller @@ -36506,6 +37025,33 @@ pci:v00001425d0000470D* pci:v00001425d0000470E* ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller +pci:v00001425d0000470F* + ID_PRODUCT_FROM_DATABASE=Amsterdam T440 Unified Wire Ethernet Controller + +pci:v00001425d00004780* + ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller + +pci:v00001425d00004781* + ID_PRODUCT_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Ethernet Controller + +pci:v00001425d00004782* + ID_PRODUCT_FROM_DATABASE=T420-4082 Unified Wire Ethernet Controller + +pci:v00001425d00004783* + ID_PRODUCT_FROM_DATABASE=T420X-4083 Unified Wire Ethernet Controller + +pci:v00001425d00004784* + ID_PRODUCT_FROM_DATABASE=T420-4084 Unified Wire Ethernet Controller + +pci:v00001425d00004785* + ID_PRODUCT_FROM_DATABASE=T420-4085 SFP+ Unified Wire Ethernet Controller + +pci:v00001425d00004786* + ID_PRODUCT_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Ethernet Controller + +pci:v00001425d00004787* + ID_PRODUCT_FROM_DATABASE=T440T-4087 Unified Wire Ethernet Controller + pci:v00001425d00004801* ID_PRODUCT_FROM_DATABASE=T420-CR Unified Wire Ethernet Controller @@ -36548,6 +37094,375 @@ pci:v00001425d0000480D* pci:v00001425d0000480E* ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller +pci:v00001425d0000480F* + ID_PRODUCT_FROM_DATABASE=Amsterdam T440 Unified Wire Ethernet Controller + +pci:v00001425d00004880* + ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller + +pci:v00001425d00004881* + ID_PRODUCT_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Ethernet Controller + +pci:v00001425d00004882* + ID_PRODUCT_FROM_DATABASE=T420-4082 Unified Wire Ethernet Controller + +pci:v00001425d00004883* + ID_PRODUCT_FROM_DATABASE=T420X-4083 Unified Wire Ethernet Controller + +pci:v00001425d00004884* + ID_PRODUCT_FROM_DATABASE=T420-4084 Unified Wire Ethernet Controller + +pci:v00001425d00004885* + ID_PRODUCT_FROM_DATABASE=T420-4085 SFP+ Unified Wire Ethernet Controller + +pci:v00001425d00004886* + ID_PRODUCT_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Ethernet Controller + +pci:v00001425d00004887* + ID_PRODUCT_FROM_DATABASE=T440T-4087 Unified Wire Ethernet Controller + +pci:v00001425d00005001* + ID_PRODUCT_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller + +pci:v00001425d00005002* + ID_PRODUCT_FROM_DATABASE=T522-CR Unified Wire Ethernet Controller + +pci:v00001425d00005003* + ID_PRODUCT_FROM_DATABASE=T540-CR Unified Wire Ethernet Controller + +pci:v00001425d00005004* + ID_PRODUCT_FROM_DATABASE=T520-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005005* + ID_PRODUCT_FROM_DATABASE=T540-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005006* + ID_PRODUCT_FROM_DATABASE=T540-CH Unified Wire Ethernet Controller + +pci:v00001425d00005007* + ID_PRODUCT_FROM_DATABASE=T520-SO Unified Wire Ethernet Controller + +pci:v00001425d00005008* + ID_PRODUCT_FROM_DATABASE=T520-CX Unified Wire Ethernet Controller + +pci:v00001425d00005009* + ID_PRODUCT_FROM_DATABASE=T520-BT Unified Wire Ethernet Controller + +pci:v00001425d0000500A* + ID_PRODUCT_FROM_DATABASE=T504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000500B* + ID_PRODUCT_FROM_DATABASE=B520-SR Unified Wire Ethernet Controller + +pci:v00001425d0000500C* + ID_PRODUCT_FROM_DATABASE=B504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000500D* + ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d0000500E* + ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d0000500F* + ID_PRODUCT_FROM_DATABASE=Amsterdam T540 Unified Wire Ethernet Controller + +pci:v00001425d00005010* + ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d00005011* + ID_PRODUCT_FROM_DATABASE=T520-LL-CR Unified Wire Ethernet Controller + +pci:v00001425d00005012* + ID_PRODUCT_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller + +pci:v00001425d00005013* + ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d00005401* + ID_PRODUCT_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller + +pci:v00001425d00005402* + ID_PRODUCT_FROM_DATABASE=T522-CR Unified Wire Ethernet Controller + +pci:v00001425d00005403* + ID_PRODUCT_FROM_DATABASE=T540-CR Unified Wire Ethernet Controller + +pci:v00001425d00005404* + ID_PRODUCT_FROM_DATABASE=T520-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005405* + ID_PRODUCT_FROM_DATABASE=T540-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005406* + ID_PRODUCT_FROM_DATABASE=T540-CH Unified Wire Ethernet Controller + +pci:v00001425d00005407* + ID_PRODUCT_FROM_DATABASE=T520-SO Unified Wire Ethernet Controller + +pci:v00001425d00005408* + ID_PRODUCT_FROM_DATABASE=T520-CX Unified Wire Ethernet Controller + +pci:v00001425d00005409* + ID_PRODUCT_FROM_DATABASE=T520-BT Unified Wire Ethernet Controller + +pci:v00001425d0000540A* + ID_PRODUCT_FROM_DATABASE=T504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000540B* + ID_PRODUCT_FROM_DATABASE=B520-SR Unified Wire Ethernet Controller + +pci:v00001425d0000540C* + ID_PRODUCT_FROM_DATABASE=B504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000540D* + ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d0000540E* + ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d0000540F* + ID_PRODUCT_FROM_DATABASE=Amsterdam T540 Unified Wire Ethernet Controller + +pci:v00001425d00005410* + ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d00005411* + ID_PRODUCT_FROM_DATABASE=T520-LL-CR Unified Wire Ethernet Controller + +pci:v00001425d00005412* + ID_PRODUCT_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller + +pci:v00001425d00005413* + ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d00005501* + ID_PRODUCT_FROM_DATABASE=T520-CR Unified Wire Storage Controller + +pci:v00001425d00005502* + ID_PRODUCT_FROM_DATABASE=T522-CR Unified Wire Storage Controller + +pci:v00001425d00005503* + ID_PRODUCT_FROM_DATABASE=T540-CR Unified Wire Storage Controller + +pci:v00001425d00005504* + ID_PRODUCT_FROM_DATABASE=T520-BCH Unified Wire Storage Controller + +pci:v00001425d00005505* + ID_PRODUCT_FROM_DATABASE=T540-BCH Unified Wire Storage Controller + +pci:v00001425d00005506* + ID_PRODUCT_FROM_DATABASE=T540-CH Unified Wire Storage Controller + +pci:v00001425d00005507* + ID_PRODUCT_FROM_DATABASE=T520-SO Unified Wire Storage Controller + +pci:v00001425d00005508* + ID_PRODUCT_FROM_DATABASE=T520-CX Unified Wire Storage Controller + +pci:v00001425d00005509* + ID_PRODUCT_FROM_DATABASE=T520-BT Unified Wire Storage Controller + +pci:v00001425d0000550A* + ID_PRODUCT_FROM_DATABASE=T504-BT Unified Wire Storage Controller + +pci:v00001425d0000550B* + ID_PRODUCT_FROM_DATABASE=B520-SR Unified Wire Storage Controller + +pci:v00001425d0000550C* + ID_PRODUCT_FROM_DATABASE=B504-BT Unified Wire Storage Controller + +pci:v00001425d0000550D* + ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Storage Controller + +pci:v00001425d0000550E* + ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Storage Controller + +pci:v00001425d0000550F* + ID_PRODUCT_FROM_DATABASE=Amsterdam T540 Unified Wire Storage Controller + +pci:v00001425d00005510* + ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Storage Controller + +pci:v00001425d00005511* + ID_PRODUCT_FROM_DATABASE=T520-LL-CR Unified Wire Storage Controller + +pci:v00001425d00005512* + ID_PRODUCT_FROM_DATABASE=T560-CR Unified Wire Storage Controller + +pci:v00001425d00005513* + ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Storage Controller + +pci:v00001425d00005601* + ID_PRODUCT_FROM_DATABASE=T520-CR Unified Wire Storage Controller + +pci:v00001425d00005602* + ID_PRODUCT_FROM_DATABASE=T522-CR Unified Wire Storage Controller + +pci:v00001425d00005603* + ID_PRODUCT_FROM_DATABASE=T540-CR Unified Wire Storage Controller + +pci:v00001425d00005604* + ID_PRODUCT_FROM_DATABASE=T520-BCH Unified Wire Storage Controller + +pci:v00001425d00005605* + ID_PRODUCT_FROM_DATABASE=T540-BCH Unified Wire Storage Controller + +pci:v00001425d00005606* + ID_PRODUCT_FROM_DATABASE=T540-CH Unified Wire Storage Controller + +pci:v00001425d00005607* + ID_PRODUCT_FROM_DATABASE=T520-SO Unified Wire Storage Controller + +pci:v00001425d00005608* + ID_PRODUCT_FROM_DATABASE=T520-CX Unified Wire Storage Controller + +pci:v00001425d00005609* + ID_PRODUCT_FROM_DATABASE=T520-BT Unified Wire Storage Controller + +pci:v00001425d0000560A* + ID_PRODUCT_FROM_DATABASE=T504-BT Unified Wire Storage Controller + +pci:v00001425d0000560B* + ID_PRODUCT_FROM_DATABASE=B520-SR Unified Wire Storage Controller + +pci:v00001425d0000560C* + ID_PRODUCT_FROM_DATABASE=B504-BT Unified Wire Storage Controller + +pci:v00001425d0000560D* + ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Storage Controller + +pci:v00001425d0000560E* + ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Storage Controller + +pci:v00001425d0000560F* + ID_PRODUCT_FROM_DATABASE=Amsterdam T540 Unified Wire Storage Controller + +pci:v00001425d00005610* + ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Storage Controller + +pci:v00001425d00005611* + ID_PRODUCT_FROM_DATABASE=T520-LL-CR Unified Wire Storage Controller + +pci:v00001425d00005612* + ID_PRODUCT_FROM_DATABASE=T560-CR Unified Wire Storage Controller + +pci:v00001425d00005613* + ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Storage Controller + +pci:v00001425d00005701* + ID_PRODUCT_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller + +pci:v00001425d00005702* + ID_PRODUCT_FROM_DATABASE=T522-CR Unified Wire Ethernet Controller + +pci:v00001425d00005703* + ID_PRODUCT_FROM_DATABASE=T540-CR Unified Wire Ethernet Controller + +pci:v00001425d00005704* + ID_PRODUCT_FROM_DATABASE=T520-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005705* + ID_PRODUCT_FROM_DATABASE=T540-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005706* + ID_PRODUCT_FROM_DATABASE=T540-CH Unified Wire Ethernet Controller + +pci:v00001425d00005707* + ID_PRODUCT_FROM_DATABASE=T520-SO Unified Wire Ethernet Controller + +pci:v00001425d00005708* + ID_PRODUCT_FROM_DATABASE=T520-CX Unified Wire Ethernet Controller + +pci:v00001425d00005709* + ID_PRODUCT_FROM_DATABASE=T520-BT Unified Wire Ethernet Controller + +pci:v00001425d0000570A* + ID_PRODUCT_FROM_DATABASE=T504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000570B* + ID_PRODUCT_FROM_DATABASE=B520-SR Unified Wire Ethernet Controller + +pci:v00001425d0000570C* + ID_PRODUCT_FROM_DATABASE=B504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000570D* + ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d0000570E* + ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d0000570F* + ID_PRODUCT_FROM_DATABASE=Amsterdam T540 Unified Wire Ethernet Controller + +pci:v00001425d00005710* + ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d00005711* + ID_PRODUCT_FROM_DATABASE=T520-LL-CR Unified Wire Ethernet Controller + +pci:v00001425d00005712* + ID_PRODUCT_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller + +pci:v00001425d00005713* + ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d00005801* + ID_PRODUCT_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller + +pci:v00001425d00005802* + ID_PRODUCT_FROM_DATABASE=T522-CR Unified Wire Ethernet Controller + +pci:v00001425d00005803* + ID_PRODUCT_FROM_DATABASE=T540-CR Unified Wire Ethernet Controller + +pci:v00001425d00005804* + ID_PRODUCT_FROM_DATABASE=T520-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005805* + ID_PRODUCT_FROM_DATABASE=T540-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005806* + ID_PRODUCT_FROM_DATABASE=T540-CH Unified Wire Ethernet Controller + +pci:v00001425d00005807* + ID_PRODUCT_FROM_DATABASE=T520-SO Unified Wire Ethernet Controller + +pci:v00001425d00005808* + ID_PRODUCT_FROM_DATABASE=T520-CX Unified Wire Ethernet Controller + +pci:v00001425d00005809* + ID_PRODUCT_FROM_DATABASE=T520-BT Unified Wire Ethernet Controller + +pci:v00001425d0000580A* + ID_PRODUCT_FROM_DATABASE=T504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000580B* + ID_PRODUCT_FROM_DATABASE=B520-SR Unified Wire Ethernet Controller + +pci:v00001425d0000580C* + ID_PRODUCT_FROM_DATABASE=B504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000580D* + ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d0000580E* + ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d0000580F* + ID_PRODUCT_FROM_DATABASE=Amsterdam T540 Unified Wire Ethernet Controller + +pci:v00001425d00005810* + ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d00005811* + ID_PRODUCT_FROM_DATABASE=T520-LL-CR Unified Wire Ethernet Controller + +pci:v00001425d00005812* + ID_PRODUCT_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller + +pci:v00001425d00005813* + ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + pci:v00001425d0000A000* ID_PRODUCT_FROM_DATABASE=PE10K Unified Wire Ethernet Controller @@ -39683,6 +40598,9 @@ pci:v000014F1d00008800* pci:v000014F1d00008800sv00000070sd00002801* ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV 28xxx (Roslyn) models +pci:v000014F1d00008800sv00000070sd00003400* + ID_PRODUCT_FROM_DATABASE=WinTV 34604 + pci:v000014F1d00008800sv00000070sd00003401* ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV 34xxx models @@ -39914,6 +40832,9 @@ pci:v000014F1d00008804sv00007063sd00005500* pci:v000014F1d00008811* ID_PRODUCT_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] +pci:v000014F1d00008811sv00000070sd00003400* + ID_PRODUCT_FROM_DATABASE=WinTV 34604 + pci:v000014F1d00008811sv00000070sd00003401* ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV 34xxx models @@ -42074,6 +42995,9 @@ pci:v0000168Cd0000001Asv000017F9sd00000018* pci:v0000168Cd0000001B* ID_PRODUCT_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] +pci:v0000168Cd0000001Bsv00000777sd00001107* + ID_PRODUCT_FROM_DATABASE=UB5 802.11a Wireless Mini PCI Adapter + pci:v0000168Cd0000001Bsv00000777sd00003002* ID_PRODUCT_FROM_DATABASE=XR2 802.11g Wireless Mini PCI Adapter @@ -42323,6 +43247,9 @@ pci:v0000168Cd0000002Bsv0000103Csd00003040* pci:v0000168Cd0000002Bsv0000105Bsd0000E017* ID_PRODUCT_FROM_DATABASE=T77H126.00 802.11bgn Wireless Half-size Mini PCIe Card +pci:v0000168Cd0000002Bsv0000105Bsd0000E023* + ID_PRODUCT_FROM_DATABASE=T77H121.04 802.11bgn Wireless Half-size Mini PCIe Card + pci:v0000168Cd0000002Bsv00001113sd0000E811* ID_PRODUCT_FROM_DATABASE=WN7811A (Toshiba PA3722U-1MPC) 802.11bgn Wireless Half-size Mini PCIe Card @@ -42402,7 +43329,10 @@ pci:v0000168Cd0000FF1C* ID_PRODUCT_FROM_DATABASE=AR5008 Wireless Network Adapter pci:v0000168Cd0000FF1D* - ID_PRODUCT_FROM_DATABASE=AR5008 Wireless Network Adapter + ID_PRODUCT_FROM_DATABASE=AR922x Wireless Network Adapter + +pci:v0000168Cd0000FF1Dsv0000168Csd0000EE1C* + ID_PRODUCT_FROM_DATABASE=AR9220-AC1A [AVM Fritz!Box FON WLAN 7270 v3] pci:v00001695* ID_VENDOR_FROM_DATABASE=EPoX Computer Co., Ltd. @@ -44135,12 +45065,21 @@ pci:v000018F6* pci:v000018F6d00001000* ID_PRODUCT_FROM_DATABASE=[Nexsis] Switch Virtual P2P PCIe Bridge +pci:v000018F6d00001001* + ID_PRODUCT_FROM_DATABASE=[Texsis] Switch Virtual P2P PCIe Bridge + pci:v000018F6d00001050* ID_PRODUCT_FROM_DATABASE=[Nexsis] Switch Virtual P2P PCI Bridge +pci:v000018F6d00001051* + ID_PRODUCT_FROM_DATABASE=[Texsis] Switch Virtual P2P PCI Bridge + pci:v000018F6d00002000* ID_PRODUCT_FROM_DATABASE=[Nexsis] Switch Integrated Mgmt. Endpoint +pci:v000018F6d00002001* + ID_PRODUCT_FROM_DATABASE=[Texsis] Switch Integrated Mgmt. Endpoint + pci:v000018F7* ID_VENDOR_FROM_DATABASE=Commtech, Inc. @@ -53117,6 +54056,9 @@ pci:v00008086d0000244Esv0000103Csd000031FE* pci:v00008086d0000244Esv0000103Csd0000330B* ID_PRODUCT_FROM_DATABASE=ProLiant ML150 G6 Server +pci:v00008086d0000244Esv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d0000244Esv00001458sd00005000* ID_PRODUCT_FROM_DATABASE=Motherboard @@ -57392,6 +58334,9 @@ pci:v00008086d00002916* pci:v00008086d00002916sv00001028sd0000020D* ID_PRODUCT_FROM_DATABASE=Inspiron 530 +pci:v00008086d00002916sv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d00002916sv00008086sd00005044* ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP @@ -57431,6 +58376,9 @@ pci:v00008086d00002920sv00001028sd00000211* pci:v00008086d00002920sv00001028sd0000023C* ID_PRODUCT_FROM_DATABASE=PowerEdge R200 onboard SATA Controller +pci:v00008086d00002920sv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d00002921* ID_PRODUCT_FROM_DATABASE=82801IB (ICH9) 2 port SATA Controller [IDE mode] @@ -57479,6 +58427,9 @@ pci:v00008086d00002926sv00001028sd00000210* pci:v00008086d00002926sv00001028sd00000211* ID_PRODUCT_FROM_DATABASE=Optiplex 755 +pci:v00008086d00002926sv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d00002926sv00001462sd00007360* ID_PRODUCT_FROM_DATABASE=G33/P35 Neo @@ -57515,6 +58466,9 @@ pci:v00008086d00002930sv00001028sd00000211* pci:v00008086d00002930sv0000103Csd00003628* ID_PRODUCT_FROM_DATABASE=dv6-1190en +pci:v00008086d00002930sv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d00002930sv00001462sd00007360* ID_PRODUCT_FROM_DATABASE=G33/P35 Neo @@ -57566,6 +58520,9 @@ pci:v00008086d00002934sv00001028sd0000029C* pci:v00008086d00002934sv00001028sd00002011* ID_PRODUCT_FROM_DATABASE=Optiplex 755 +pci:v00008086d00002934sv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d00002934sv00001462sd00007360* ID_PRODUCT_FROM_DATABASE=G33/P35 Neo @@ -57608,6 +58565,9 @@ pci:v00008086d00002935sv00001028sd00000287* pci:v00008086d00002935sv00001028sd0000029C* ID_PRODUCT_FROM_DATABASE=PowerEdge M710 USB UHCI Controller +pci:v00008086d00002935sv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d00002935sv00001462sd00007360* ID_PRODUCT_FROM_DATABASE=G33/P35 Neo @@ -57644,6 +58604,9 @@ pci:v00008086d00002936sv00001028sd00000287* pci:v00008086d00002936sv00001028sd0000029C* ID_PRODUCT_FROM_DATABASE=PowerEdge M710 USB UHCI Controller +pci:v00008086d00002936sv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d00002936sv00001462sd00007360* ID_PRODUCT_FROM_DATABASE=G33/P35 Neo @@ -57680,6 +58643,9 @@ pci:v00008086d00002937sv00001028sd0000029C* pci:v00008086d00002937sv00001028sd00002011* ID_PRODUCT_FROM_DATABASE=Optiplex 755 +pci:v00008086d00002937sv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d00002937sv00001462sd00007360* ID_PRODUCT_FROM_DATABASE=G33/P35 Neo @@ -57719,6 +58685,9 @@ pci:v00008086d00002938sv00001028sd00000287* pci:v00008086d00002938sv00001028sd0000029C* ID_PRODUCT_FROM_DATABASE=PowerEdge M710 USB UHCI Controller +pci:v00008086d00002938sv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d00002938sv00001462sd00007360* ID_PRODUCT_FROM_DATABASE=G33/P35 Neo @@ -57743,6 +58712,9 @@ pci:v00008086d00002939sv00001028sd00000210* pci:v00008086d00002939sv00001028sd00000237* ID_PRODUCT_FROM_DATABASE=PowerEdge T610 USB UHCI Controller +pci:v00008086d00002939sv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d00002939sv00001462sd00007360* ID_PRODUCT_FROM_DATABASE=G33/P35 Neo @@ -57785,6 +58757,9 @@ pci:v00008086d0000293Asv00001028sd00000287* pci:v00008086d0000293Asv00001028sd0000029C* ID_PRODUCT_FROM_DATABASE=PowerEdge M710 USB EHCI Controller +pci:v00008086d0000293Asv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d0000293Asv00001462sd00007360* ID_PRODUCT_FROM_DATABASE=G33/P35 Neo @@ -57818,6 +58793,9 @@ pci:v00008086d0000293Csv00001028sd00000287* pci:v00008086d0000293Csv00001028sd0000029C* ID_PRODUCT_FROM_DATABASE=PowerEdge M710 USB EHCI Controller +pci:v00008086d0000293Csv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d0000293Csv00001462sd00007360* ID_PRODUCT_FROM_DATABASE=G33/P35 Neo @@ -57842,6 +58820,9 @@ pci:v00008086d0000293Esv00001028sd00000211* pci:v00008086d0000293Esv0000103Csd00003628* ID_PRODUCT_FROM_DATABASE=dv6-1190en +pci:v00008086d0000293Esv00001043sd0000829F* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d0000293Esv00001462sd00007360* ID_PRODUCT_FROM_DATABASE=G33/P35 Neo @@ -57863,6 +58844,9 @@ pci:v00008086d00002940sv00001028sd0000020D* pci:v00008086d00002940sv00001028sd00000211* ID_PRODUCT_FROM_DATABASE=Optiplex 755 +pci:v00008086d00002940sv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d00002940sv00008086sd00002940* ID_PRODUCT_FROM_DATABASE=Optiplex 755 @@ -57890,12 +58874,18 @@ pci:v00008086d00002948* pci:v00008086d00002948sv00001028sd0000020D* ID_PRODUCT_FROM_DATABASE=Inspiron 530 +pci:v00008086d00002948sv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d0000294A* ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 6 pci:v00008086d0000294Asv00001028sd0000020D* ID_PRODUCT_FROM_DATABASE=Inspiron 530 +pci:v00008086d0000294Asv00001043sd00008277* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d0000294C* ID_PRODUCT_FROM_DATABASE=82566DC-2 Gigabit Network Connection @@ -58052,6 +59042,9 @@ pci:v00008086d000029C0* pci:v00008086d000029C0sv00001028sd0000020D* ID_PRODUCT_FROM_DATABASE=Inspiron 530 +pci:v00008086d000029C0sv00001043sd00008276* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d000029C0sv00001043sd000082B0* ID_PRODUCT_FROM_DATABASE=P5KPL-VM Motherboard @@ -58067,6 +59060,9 @@ pci:v00008086d000029C1* pci:v00008086d000029C1sv00001028sd0000020D* ID_PRODUCT_FROM_DATABASE=Inspiron 530 +pci:v00008086d000029C1sv00001043sd00008276* + ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard + pci:v00008086d000029C2* ID_PRODUCT_FROM_DATABASE=82G33/G31 Express Integrated Graphics Controller @@ -60854,6 +61850,9 @@ pci:v00008086d00004220sv0000103Csd00000934* pci:v00008086d00004220sv0000103Csd000012F6* ID_PRODUCT_FROM_DATABASE=nc6120/nx8220/nw8240 +pci:v00008086d00004220sv00008086sd00002701* + ID_PRODUCT_FROM_DATABASE=WM3B2300BG Mini-PCI Card + pci:v00008086d00004220sv00008086sd00002712* ID_PRODUCT_FROM_DATABASE=IBM ThinkPad R50e diff --git a/hwdb/ids-update.pl b/hwdb/ids-update.pl index 13596b85c3..5782bb51ef 100755 --- a/hwdb/ids-update.pl +++ b/hwdb/ids-update.pl @@ -219,6 +219,7 @@ sub oui { open(IN, "<", "iab.txt"); while (my $line = ) { + $line =~ s/^ +//; $line =~ s/\s+$//; $line =~ m/^([0-9A-F]{2})-([0-9A-F]{2})-([0-9A-F]{2})\s*\(hex\)\s*.+$/; if (defined $1) { @@ -241,6 +242,7 @@ sub oui { open(IN, "<", "oui.txt"); while (my $line = ) { + $line =~ s/^ +//; $line =~ s/\s+$//; $line =~ m/^([0-9A-F]{6})\s*\(base 16\)\s*(.+)$/; if (defined $1) { -- cgit v1.2.1 From f8aeee1f1fe432924b355f48f01f09c9a552ed97 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 30 Jan 2013 02:33:16 +0100 Subject: update TODO --- TODO | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/TODO b/TODO index cffb02863a..2c8aad30ed 100644 --- a/TODO +++ b/TODO @@ -51,8 +51,19 @@ Fedora 19: - localectl: add listing support for X11 keymaps, by parsing /usr/share/X11/xkb/rules/xorg.lst - localectl: support new converted x11→console keymaps +* The tag "seat-master" in udev is badly named, as it might conflict with + actual seat names. + Features: +* Honour "-" for InaccessibleDirectories= and ReadOnlyDirectories= to + suppress errors of the specified path doesn't exist + +* dev-setup.c: when running in a container, create a tiny stub udev + database with the systemd tag set for all network interfaces found, + so that libudev reports them as present, and systemd's .device units + will be activated. + * nspawn: investigate whether we can support the same as LXC's lxc.network.type=phys mode, and pass through entire network interfaces to the container -- cgit v1.2.1 From 398a745c73cec10b1a669703644651d94eb37599 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 4 Feb 2013 22:27:32 +0100 Subject: update TODO --- TODO | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TODO b/TODO index 2c8aad30ed..0c349edcc3 100644 --- a/TODO +++ b/TODO @@ -56,6 +56,9 @@ Fedora 19: Features: +* We should not set KDSKBMODE to K_UNICODE in vconsole-setup if the + kbd is currently in raw/off state. + * Honour "-" for InaccessibleDirectories= and ReadOnlyDirectories= to suppress errors of the specified path doesn't exist -- cgit v1.2.1 From 4f19b1df41b9a1971989ffd858d0a2f6977b01c8 Mon Sep 17 00:00:00 2001 From: Umut Tezduyar Date: Fri, 1 Feb 2013 13:20:49 +0100 Subject: man: remove boot up runlevel support As of 3cdebc217c42c8529086f2965319b6a48eaaeabe support for distro specific boot up runlevels has been dropped. --- man/systemd.special.xml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/man/systemd.special.xml b/man/systemd.special.xml index 6acba91428..0d1df8475a 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -641,16 +641,6 @@ A special target unit covering early boot-up scripts. - systemd automatically - adds dependencies of the types - Wants and After for all - SysV service units configured - for runlevels that are not 0 - to 6 to this target unit. - This covers the special - boot-up runlevels some - distributions have, such as S - or b. -- cgit v1.2.1 From 539ad707db5361e7fbe0076615a92456fd34f7df Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Wed, 6 Feb 2013 21:15:23 +0100 Subject: test: add a few tests and tidy up adds test of: strv_find strv_find_prefix strv_overlap strv_sort streq_ptr first_word Splits tests of util.c into own file to avoid clutter as we add more. Removed a few prints and uses _cleanup_free_ to make the tests more focused. --- .gitignore | 1 + Makefile.am | 10 ++++ src/test/test-strv.c | 130 ++++++++++++++++++++++++++++++++------------------- src/test/test-util.c | 82 ++++++++++++++++++++++++++++++++ 4 files changed, 174 insertions(+), 49 deletions(-) create mode 100644 src/test/test-util.c diff --git a/.gitignore b/.gitignore index 03ed5543b1..6c2944bfa1 100644 --- a/.gitignore +++ b/.gitignore @@ -112,6 +112,7 @@ /test-udev /test-unit-file /test-unit-name +/test-util /test-watchdog /timedatectl /udevadm diff --git a/Makefile.am b/Makefile.am index 88662c0144..93fd3773e6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1231,6 +1231,7 @@ noinst_tests += \ test-strv \ test-unit-name \ test-unit-file \ + test-util \ test-date \ test-sleep \ test-replace-var \ @@ -1314,6 +1315,15 @@ test_unit_file_CFLAGS = \ test_unit_file_LDADD = \ libsystemd-core.la +test_util_SOURCES = \ + src/test/test-util.c + +test_util_CFLAGS = \ + $(AM_CFLAGS) + +test_util_LDADD = \ + libsystemd-core.la + test_log_SOURCES = \ src/test/test-log.c diff --git a/src/test/test-strv.c b/src/test/test-strv.c index 7898ea7cf6..1df8157b59 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -4,6 +4,7 @@ This file is part of systemd. Copyright 2010 Lennart Poettering + Copyright 2013 Thomas H.P. Andersen systemd is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -39,22 +40,35 @@ static void test_specifier_printf(void) { free(w); } -static void test_foreach_word_quoted(void) { - char *w, *state; - size_t l; - const char test[] = "test a b c 'd' e '' '' hhh '' ''"; - printf("<%s>\n", test); - FOREACH_WORD_QUOTED(w, l, test, state) { - char *t; - - assert_se(t = strndup(w, l)); - printf("<%s>\n", t); - free(t); - } +static void test_strv_find(void) { + const char * const input_table[] = { + "one", + "two", + "three", + NULL + }; + + assert(strv_find((char **)input_table, "three")); + assert(!strv_find((char **)input_table, "four")); +} + +static void test_strv_find_prefix(void) { + const char * const input_table[] = { + "one", + "two", + "three", + NULL + }; + + assert(strv_find_prefix((char **)input_table, "o")); + assert(strv_find_prefix((char **)input_table, "one")); + assert(strv_find_prefix((char **)input_table, "")); + assert(!strv_find_prefix((char **)input_table, "xxx")); + assert(!strv_find_prefix((char **)input_table, "onee")); } static void test_strv_join(void) { - char *r; + _cleanup_free_ char *p = NULL, *q = NULL, *r = NULL, *s = NULL, *t = NULL; const char * const input_table_multiple[] = { "one", @@ -70,52 +84,70 @@ static void test_strv_join(void) { NULL }; - r = strv_join((char **)input_table_multiple, ", "); - assert_se(streq(r, "one, two, three")); - puts(r); - free(r); + p = strv_join((char **)input_table_multiple, ", "); + assert(streq(p, "one, two, three")); - r = strv_join((char **)input_table_multiple, ";"); - assert_se(streq(r, "one;two;three")); - puts(r); - free(r); + q = strv_join((char **)input_table_multiple, ";"); + assert(streq(q, "one;two;three")); r = strv_join((char **)input_table_multiple, NULL); - assert_se(streq(r, "one two three")); - puts(r); - free(r); - - r = strv_join((char **)input_table_one, ", "); - assert_se(streq(r, "one")); - puts(r); - free(r); - - r = strv_join((char **)input_table_none, ", "); - assert_se(streq(r, "")); - puts(r); - free(r); + assert(streq(r, "one two three")); + + s = strv_join((char **)input_table_one, ", "); + assert(streq(s, "one")); + + t = strv_join((char **)input_table_none, ", "); + assert(streq(t, "")); } -static void test_default_term_for_tty(void) { - printf("%s\n", default_term_for_tty("/dev/tty23")); - printf("%s\n", default_term_for_tty("/dev/ttyS23")); - printf("%s\n", default_term_for_tty("/dev/tty0")); - printf("%s\n", default_term_for_tty("/dev/pty0")); - printf("%s\n", default_term_for_tty("/dev/pts/0")); - printf("%s\n", default_term_for_tty("/dev/console")); - printf("%s\n", default_term_for_tty("tty23")); - printf("%s\n", default_term_for_tty("ttyS23")); - printf("%s\n", default_term_for_tty("tty0")); - printf("%s\n", default_term_for_tty("pty0")); - printf("%s\n", default_term_for_tty("pts/0")); - printf("%s\n", default_term_for_tty("console")); +static void test_strv_overlap(void) { + const char * const input_table[] = { + "one", + "two", + "three", + NULL + }; + const char * const input_table_overlap[] = { + "two", + NULL + }; + const char * const input_table_unique[] = { + "four", + "five", + "six", + NULL + }; + + assert(strv_overlap((char **)input_table, (char**)input_table_overlap)); + assert(!strv_overlap((char **)input_table, (char**)input_table_unique)); +} + +static void test_strv_sort(void) { + const char * const input_table[] = { + "durian", + "apple", + "citrus", + "CAPITAL LETTERS FIRST", + "banana", + NULL + }; + + strv_sort((char **)input_table); + + assert(streq(input_table[0], "CAPITAL LETTERS FIRST")); + assert(streq(input_table[1], "apple")); + assert(streq(input_table[2], "banana")); + assert(streq(input_table[3], "citrus")); + assert(streq(input_table[4], "durian")); } int main(int argc, char *argv[]) { - test_default_term_for_tty(); - test_foreach_word_quoted(); test_specifier_printf(); + test_strv_find(); + test_strv_find_prefix(); test_strv_join(); + test_strv_overlap(); + test_strv_sort(); return 0; } diff --git a/src/test/test-util.c b/src/test/test-util.c new file mode 100644 index 0000000000..ebbdcfc6de --- /dev/null +++ b/src/test/test-util.c @@ -0,0 +1,82 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2010 Lennart Poettering + Copyright 2013 Thomas H.P. Andersen + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include + +#include "util.h" + +static void test_streq_ptr(void) { + assert(streq_ptr(NULL, NULL)); + assert(!streq_ptr("abc", "cdef")); +} + +static void test_first_word(void) { + assert(first_word("Hello", "")); + assert(first_word("Hello", "Hello")); + assert(first_word("Hello world", "Hello")); + assert(first_word("Hello\tworld", "Hello")); + assert(first_word("Hello\nworld", "Hello")); + assert(first_word("Hello\rworld", "Hello")); + assert(first_word("Hello ", "Hello")); + + assert(!first_word("Hello", "Hellooo")); + assert(!first_word("Hello", "xxxxx")); + assert(!first_word("Hellooo", "Hello")); +} + +static void test_foreach_word_quoted(void) { + char *w, *state; + size_t l; + const char test[] = "test a b c 'd' e '' '' hhh '' ''"; + printf("<%s>\n", test); + FOREACH_WORD_QUOTED(w, l, test, state) { + char *t; + + assert_se(t = strndup(w, l)); + printf("<%s>\n", t); + free(t); + } +} + +static void test_default_term_for_tty(void) { + puts(default_term_for_tty("/dev/tty23")); + puts(default_term_for_tty("/dev/ttyS23")); + puts(default_term_for_tty("/dev/tty0")); + puts(default_term_for_tty("/dev/pty0")); + puts(default_term_for_tty("/dev/pts/0")); + puts(default_term_for_tty("/dev/console")); + puts(default_term_for_tty("tty23")); + puts(default_term_for_tty("ttyS23")); + puts(default_term_for_tty("tty0")); + puts(default_term_for_tty("pty0")); + puts(default_term_for_tty("pts/0")); + puts(default_term_for_tty("console")); +} + +int main(int argc, char *argv[]) { + test_streq_ptr(); + test_first_word(); + test_default_term_for_tty(); + test_foreach_word_quoted(); + + return 0; +} -- cgit v1.2.1 From fa3cd7394c227ad38c5c09b2bc2d035e7fb14a76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 6 Feb 2013 17:03:12 -0500 Subject: tests: run manager in session mode False positives pop up otherwise. FAIL: test-unit-name (exit: 134) ================================ Failed to open /dev/tty0: Permission denied Failed to create root cgroup hierarchy: Permission denied Assertion 'manager_new(SYSTEMD_SYSTEM, &m) == 0' failed at src/test/test-unit-name.c:125, function test_unit_printf(). Aborting. --- src/test/test-sched-prio.c | 2 +- src/test/test-unit-name.c | 12 ++++++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/test/test-sched-prio.c b/src/test/test-sched-prio.c index 29235e8347..63f7ebda08 100644 --- a/src/test/test-sched-prio.c +++ b/src/test/test-sched-prio.c @@ -33,7 +33,7 @@ int main(int argc, char *argv[]) { /* prepare the test */ assert_se(set_unit_path(TEST_DIR) >= 0); - assert_se(manager_new(SYSTEMD_SYSTEM, &m) >= 0); + assert_se(manager_new(SYSTEMD_USER, &m) >= 0); assert_se(manager_startup(m, serial, fdset) >= 0); /* load idle ok */ diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c index b1a4134f48..3c0a416dfa 100644 --- a/src/test/test-unit-name.c +++ b/src/test/test-unit-name.c @@ -122,14 +122,18 @@ static void test_unit_printf(void) { assert_se((root = getpwnam("root"))); assert_se(asprintf(&root_uid, "%d", (int) root->pw_uid) > 0); - assert_se(manager_new(SYSTEMD_SYSTEM, &m) == 0); + assert_se(manager_new(SYSTEMD_USER, &m) == 0); #define expect(unit, pattern, expected) \ { \ + char *e; \ char _cleanup_free_ *t = \ unit_full_printf(unit, pattern); \ printf("result: %s\n", t); \ - assert(streq(t, expected)); \ + if ((e = endswith(expected, "*"))) \ + assert(strncmp(t, e, e-expected)); \ + else \ + assert(streq(t, expected)); \ } assert_se(setenv("USER", "root", 1) == 0); @@ -158,7 +162,7 @@ static void test_unit_printf(void) { expect(u, "%m", mid); expect(u, "%b", bid); expect(u, "%H", host); - expect(u, "%t", "/run"); + expect(u, "%t", "/run/user/*"); /* templated */ assert_se(u2 = unit_new(m, sizeof(Service))); @@ -178,7 +182,7 @@ static void test_unit_printf(void) { expect(u2, "%m", mid); expect(u2, "%b", bid); expect(u2, "%H", host); - expect(u2, "%t", "/run"); + expect(u2, "%t", "/run/user/*"); } int main(int argc, char* argv[]) { -- cgit v1.2.1 From 7c2d80944afb4196f2eff614e8da1450dffcbeaa Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Thu, 7 Feb 2013 00:15:27 +0100 Subject: strv: add strv_print Clearer, and spares the temp variable. --- src/locale/localectl.c | 9 ++------- src/shared/strv.c | 10 ++++++++++ src/shared/strv.h | 1 + src/test/test-env-replace.c | 12 +++--------- src/timedate/timedatectl.c | 4 +--- 5 files changed, 17 insertions(+), 19 deletions(-) diff --git a/src/locale/localectl.c b/src/locale/localectl.c index 290edcc103..8c3c8e3f0f 100644 --- a/src/locale/localectl.c +++ b/src/locale/localectl.c @@ -432,7 +432,6 @@ static int add_locales_from_libdir (Set *locales) { static int list_locales(DBusConnection *bus, char **args, unsigned n) { _cleanup_set_free_ Set *locales; _cleanup_strv_free_ char **l = NULL; - char **j; int r; locales = set_new(string_hash_func, string_compare_func); @@ -455,8 +454,7 @@ static int list_locales(DBusConnection *bus, char **args, unsigned n) { pager_open_if_enabled(); - STRV_FOREACH(j, l) - puts(*j); + strv_print(l); return 0; } @@ -539,7 +537,6 @@ static int nftw_cb( static int list_vconsole_keymaps(DBusConnection *bus, char **args, unsigned n) { char _cleanup_strv_free_ **l = NULL; - char **i; keymaps = set_new(string_hash_func, string_compare_func); if (!keymaps) @@ -566,9 +563,7 @@ static int list_vconsole_keymaps(DBusConnection *bus, char **args, unsigned n) { pager_open_if_enabled(); - STRV_FOREACH(i, l) - puts(*i); - + strv_print(l); return 0; } diff --git a/src/shared/strv.c b/src/shared/strv.c index 2d556f4a07..fc6104ffea 100644 --- a/src/shared/strv.c +++ b/src/shared/strv.c @@ -774,3 +774,13 @@ char **strv_sort(char **l) { qsort(l, strv_length(l), sizeof(char*), str_compare); return l; } + +void strv_print(char **l) { + char **s; + + if (!l) + return; + + STRV_FOREACH(s, l) + puts(*s); +} diff --git a/src/shared/strv.h b/src/shared/strv.h index fd728eff81..33c752a313 100644 --- a/src/shared/strv.h +++ b/src/shared/strv.h @@ -87,3 +87,4 @@ bool strv_overlap(char **a, char **b); char **strv_sort(char **l); +void strv_print(char **l); diff --git a/src/test/test-env-replace.c b/src/test/test-env-replace.c index cd596a6e16..ad5c991608 100644 --- a/src/test/test-env-replace.c +++ b/src/test/test-env-replace.c @@ -58,10 +58,7 @@ int main(int argc, char *argv[]) { strv_free(a); r = replace_env_argv((char**) line, (char**) env); - - STRV_FOREACH(i, r) - printf("%s\n", *i); - + strv_print(r); strv_free(r); t = normalize_env_assignment("foo=bar"); @@ -127,16 +124,13 @@ int main(int argc, char *argv[]) { strv_free(a); strv_free(b); - STRV_FOREACH(i, r) - printf("%s\n", *i); + strv_print(r); printf("CLEANED UP:\n"); r = strv_env_clean(r); - STRV_FOREACH(i, r) - printf("%s\n", *i); - + strv_print(r); strv_free(r); return 0; diff --git a/src/timedate/timedatectl.c b/src/timedate/timedatectl.c index 281c0524da..f5b5f0ca84 100644 --- a/src/timedate/timedatectl.c +++ b/src/timedate/timedatectl.c @@ -425,7 +425,6 @@ static int list_timezones(DBusConnection *bus, char **args, unsigned n) { _cleanup_fclose_ FILE *f = NULL; _cleanup_strv_free_ char **zones = NULL; size_t n_zones = 0; - char **i; assert(args); assert(n == 1); @@ -487,8 +486,7 @@ static int list_timezones(DBusConnection *bus, char **args, unsigned n) { pager_open_if_enabled(); strv_sort(zones); - STRV_FOREACH(i, zones) - puts(*i); + strv_print(zones); return 0; } -- cgit v1.2.1 From 10ddd913f0d13584e13b5e6bbcb381f1618c90c0 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Thu, 7 Feb 2013 00:33:58 +0100 Subject: tests: move strv_parse_nulstr to test-strv, and actually test it The test was originally added with this commit message: "ask-password: supported plymouth cached passwords" --- src/test/test-env-replace.c | 10 +--------- src/test/test-strv.c | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/test/test-env-replace.c b/src/test/test-env-replace.c index ad5c991608..0bd42e3298 100644 --- a/src/test/test-env-replace.c +++ b/src/test/test-env-replace.c @@ -47,15 +47,7 @@ int main(int argc, char *argv[]) { NULL }; - char **i, **r, *t, **a, **b; - const char nulstr[] = "fuck\0fuck2\0fuck3\0\0fuck5\0\0xxx"; - - a = strv_parse_nulstr(nulstr, sizeof(nulstr)-1); - - STRV_FOREACH(i, a) - printf("nulstr--%s\n", *i); - - strv_free(a); + char **r, *t, **a, **b; r = replace_env_argv((char**) line, (char**) env); strv_print(r); diff --git a/src/test/test-strv.c b/src/test/test-strv.c index 1df8157b59..07aac3a670 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -100,6 +100,23 @@ static void test_strv_join(void) { assert(streq(t, "")); } +static void test_strv_parse_nulstr(void) { + _cleanup_strv_free_ char **l = NULL; + const char nulstr[] = "fuck\0fuck2\0fuck3\0\0fuck5\0\0xxx"; + + l = strv_parse_nulstr(nulstr, sizeof(nulstr)-1); + puts("Parse nulstr:"); + strv_print(l); + + assert(streq(l[0], "fuck")); + assert(streq(l[1], "fuck2")); + assert(streq(l[2], "fuck3")); + assert(streq(l[3], "")); + assert(streq(l[4], "fuck5")); + assert(streq(l[5], "")); + assert(streq(l[6], "xxx")); +} + static void test_strv_overlap(void) { const char * const input_table[] = { "one", @@ -146,6 +163,7 @@ int main(int argc, char *argv[]) { test_strv_find(); test_strv_find_prefix(); test_strv_join(); + test_strv_parse_nulstr(); test_strv_overlap(); test_strv_sort(); -- cgit v1.2.1 From c5e33bf8342daa6bab22f495ef774741184de09d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 6 Feb 2013 17:35:53 -0500 Subject: tests: skip tests if manager cannot be created When running without a user session, tests fail. --- src/test/test-sched-prio.c | 10 ++++++++-- src/test/test-unit-name.c | 10 ++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/src/test/test-sched-prio.c b/src/test/test-sched-prio.c index 63f7ebda08..c57f6a3671 100644 --- a/src/test/test-sched-prio.c +++ b/src/test/test-sched-prio.c @@ -30,10 +30,16 @@ int main(int argc, char *argv[]) { Service *ser; FILE *serial = NULL; FDSet *fdset = NULL; + int r; /* prepare the test */ assert_se(set_unit_path(TEST_DIR) >= 0); - assert_se(manager_new(SYSTEMD_USER, &m) >= 0); + r = manager_new(SYSTEMD_USER, &m); + if (r == -EPERM) { + puts("manager_new: Permission denied. Skipping test."); + return EXIT_SUCCESS; + } + assert(r >= 0); assert_se(manager_startup(m, serial, fdset) >= 0); /* load idle ok */ @@ -82,5 +88,5 @@ int main(int argc, char *argv[]) { assert_se(ser->exec_context.cpu_sched_policy == SCHED_RR); assert_se(ser->exec_context.cpu_sched_priority == 99); - return 0; + return EXIT_SUCCESS; } diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c index 3c0a416dfa..7bd99d31c8 100644 --- a/src/test/test-unit-name.c +++ b/src/test/test-unit-name.c @@ -111,6 +111,7 @@ static void test_replacements(void) { static void test_unit_printf(void) { Manager *m; Unit *u, *u2; + int r; char _cleanup_free_ *mid, *bid, *host, *root_uid; struct passwd *root; @@ -122,14 +123,19 @@ static void test_unit_printf(void) { assert_se((root = getpwnam("root"))); assert_se(asprintf(&root_uid, "%d", (int) root->pw_uid) > 0); - assert_se(manager_new(SYSTEMD_USER, &m) == 0); + r = manager_new(SYSTEMD_USER, &m); + if (r == -EPERM) { + puts("manager_new: Permission denied. Skipping test."); + return; + } + assert(r == 0); #define expect(unit, pattern, expected) \ { \ char *e; \ char _cleanup_free_ *t = \ unit_full_printf(unit, pattern); \ - printf("result: %s\n", t); \ + printf("result: %s\nexpect: %s\n", t, expected); \ if ((e = endswith(expected, "*"))) \ assert(strncmp(t, e, e-expected)); \ else \ -- cgit v1.2.1 From 0a4c519bd3f5cd00c77e022504f38fc899e23c1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 31 Jan 2013 15:52:13 -0500 Subject: man: see also dracut(7) in bootup(7) --- TODO | 3 --- man/bootup.xml | 3 ++- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/TODO b/TODO index 0c349edcc3..205aaa5511 100644 --- a/TODO +++ b/TODO @@ -274,9 +274,6 @@ Features: https://bugs.freedesktop.org/show_bug.cgi?id=54982 - when key file cannot be found, read it from kbd in cryptsetup -* instantiated [Install] for target units - https://bugs.freedesktop.org/show_bug.cgi?id=54377 - * move debug shell to tty6 and make sure this doesn't break the gettys on tty6 * hw watchdog: optionally try to use the preset watchdog timeout instead of always overriding it diff --git a/man/bootup.xml b/man/bootup.xml index 4cc4bafab7..f65abf5452 100644 --- a/man/bootup.xml +++ b/man/bootup.xml @@ -219,7 +219,8 @@ systemd-reboot.service systemd-poweroff.service systemd-halt.service syste systemd1, boot7, systemd.special7, - systemd.target5 + systemd.target5, + dracut8 -- cgit v1.2.1 From 63ed840e59e82a34cfd59df47917a4e8498da903 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 2 Feb 2013 22:48:38 -0500 Subject: build-sys: replace one last mkdir hook with list item Previously, errors would be ignored. Now they are not. But I don't see how we could fail to create the directory, so I don't think that it matters. --- Makefile.am | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Makefile.am b/Makefile.am index 93fd3773e6..1f9a2b4a66 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1906,11 +1906,9 @@ man/systemd-udevd.8: man/systemd-udevd.service.8 man/systemd-udevd-control.socket.8: man/systemd-udevd.service.8 man/systemd-udevd-kernel.socket.8: man/systemd-udevd.service.8 -udev-confdirs: - -$(MKDIR_P) $(DESTDIR)$(sysconfdir)/udev/rules.d - -$(MKDIR_P) $(DESTDIR)$(sysconfdir)/udev/hwdb.d - -INSTALL_DATA_HOOKS += udev-confdirs +INSTALL_DIRS += \ + $(sysconfdir)/udev/rules.d \ + $(sysconfdir)/udev/hwdb.d dist_udevrules_DATA += \ rules/99-systemd.rules \ -- cgit v1.2.1 From 823eb4e64e88e1787a82f84539344ef530f381a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 2 Feb 2013 22:38:33 -0500 Subject: build-sys: split man alias rules into separate file There shouldn't be any functional change. This is an 'automake include', so the generated Makefile is the same (apart from ordering). --- Makefile-man.am | 467 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ Makefile.am | 477 +------------------------------------------------------- 2 files changed, 472 insertions(+), 472 deletions(-) create mode 100644 Makefile-man.am diff --git a/Makefile-man.am b/Makefile-man.am new file mode 100644 index 0000000000..76b794a27b --- /dev/null +++ b/Makefile-man.am @@ -0,0 +1,467 @@ +MANPAGES += \ + man/bootup.7 \ + man/daemon.7 \ + man/halt.8 \ + man/hostname.5 \ + man/journalctl.1 \ + man/journald.conf.5 \ + man/kernel-command-line.7 \ + man/locale.conf.5 \ + man/localtime.5 \ + man/machine-id.5 \ + man/machine-info.5 \ + man/os-release.5 \ + man/pam_systemd.8 \ + man/runlevel.8 \ + man/sd-daemon.3 \ + man/sd-id128.3 \ + man/sd-journal.3 \ + man/sd_booted.3 \ + man/sd_id128_get_machine.3 \ + man/sd_id128_randomize.3 \ + man/sd_id128_to_string.3 \ + man/sd_is_fifo.3 \ + man/sd_journal_add_match.3 \ + man/sd_journal_get_catalog.3 \ + man/sd_journal_get_cursor.3 \ + man/sd_journal_get_cutoff_realtime_usec.3 \ + man/sd_journal_get_data.3 \ + man/sd_journal_get_fd.3 \ + man/sd_journal_get_realtime_usec.3 \ + man/sd_journal_get_usage.3 \ + man/sd_journal_next.3 \ + man/sd_journal_open.3 \ + man/sd_journal_print.3 \ + man/sd_journal_query_unique.3 \ + man/sd_journal_seek_head.3 \ + man/sd_journal_stream_fd.3 \ + man/sd_listen_fds.3 \ + man/sd_notify.3 \ + man/shutdown.8 \ + man/sysctl.d.5 \ + man/systemctl.1 \ + man/systemd-analyze.1 \ + man/systemd-ask-password-console.service.8 \ + man/systemd-ask-password.1 \ + man/systemd-cat.1 \ + man/systemd-cgls.1 \ + man/systemd-cgtop.1 \ + man/systemd-coredumpctl.1 \ + man/systemd-delta.1 \ + man/systemd-detect-virt.1 \ + man/systemd-fsck@.service.8 \ + man/systemd-fstab-generator.8 \ + man/systemd-getty-generator.8 \ + man/systemd-halt.service.8 \ + man/systemd-inhibit.1 \ + man/systemd-initctl.service.8 \ + man/systemd-journald.service.8 \ + man/systemd-machine-id-setup.1 \ + man/systemd-notify.1 \ + man/systemd-nspawn.1 \ + man/systemd-remount-fs.service.8 \ + man/systemd-shutdownd.service.8 \ + man/systemd-suspend.service.8 \ + man/systemd-sysctl.service.8 \ + man/systemd-system-update-generator.8 \ + man/systemd-tmpfiles.8 \ + man/systemd-tty-ask-password-agent.1 \ + man/systemd-udevd.service.8 \ + man/systemd-update-utmp-runlevel.service.8 \ + man/systemd.1 \ + man/systemd.automount.5 \ + man/systemd.conf.5 \ + man/systemd.device.5 \ + man/systemd.exec.5 \ + man/systemd.journal-fields.7 \ + man/systemd.kill.5 \ + man/systemd.mount.5 \ + man/systemd.path.5 \ + man/systemd.preset.5 \ + man/systemd.service.5 \ + man/systemd.snapshot.5 \ + man/systemd.socket.5 \ + man/systemd.special.7 \ + man/systemd.swap.5 \ + man/systemd.target.5 \ + man/systemd.time.7 \ + man/systemd.timer.5 \ + man/systemd.unit.5 \ + man/telinit.8 \ + man/tmpfiles.d.5 \ + man/udev.7 \ + man/udevadm.8 +MANPAGES_ALIAS += \ + man/SD_ALERT.3 \ + man/SD_CRIT.3 \ + man/SD_DEBUG.3 \ + man/SD_EMERG.3 \ + man/SD_ERR.3 \ + man/SD_ID128_CONST_STR.3 \ + man/SD_ID128_FORMAT_STR.3 \ + man/SD_ID128_FORMAT_VAL.3 \ + man/SD_ID128_MAKE.3 \ + man/SD_INFO.3 \ + man/SD_JOURNAL_APPEND.3 \ + man/SD_JOURNAL_FOREACH.3 \ + man/SD_JOURNAL_FOREACH_BACKWARDS.3 \ + man/SD_JOURNAL_FOREACH_DATA.3 \ + man/SD_JOURNAL_FOREACH_UNIQUE.3 \ + man/SD_JOURNAL_INVALIDATE.3 \ + man/SD_JOURNAL_LOCAL_ONLY.3 \ + man/SD_JOURNAL_NOP.3 \ + man/SD_JOURNAL_RUNTIME_ONLY.3 \ + man/SD_JOURNAL_SUPPRESS_LOCATION.3 \ + man/SD_JOURNAL_SYSTEM_ONLY.3 \ + man/SD_LISTEN_FDS_START.3 \ + man/SD_NOTICE.3 \ + man/SD_WARNING.3 \ + man/init.1 \ + man/poweroff.8 \ + man/reboot.8 \ + man/sd_id128_equal.3 \ + man/sd_id128_from_string.3 \ + man/sd_id128_get_boot.3 \ + man/sd_id128_t.3 \ + man/sd_is_mq.3 \ + man/sd_is_socket.3 \ + man/sd_is_socket_inet.3 \ + man/sd_is_socket_unix.3 \ + man/sd_journal.3 \ + man/sd_journal_add_disjunction.3 \ + man/sd_journal_close.3 \ + man/sd_journal_enumerate_data.3 \ + man/sd_journal_enumerate_unique.3 \ + man/sd_journal_flush_matches.3 \ + man/sd_journal_get_catalog_for_message_id.3 \ + man/sd_journal_get_cutoff_monotonic_usec.3 \ + man/sd_journal_get_data_threshold.3 \ + man/sd_journal_get_monotonic_usec.3 \ + man/sd_journal_next_skip.3 \ + man/sd_journal_open_directory.3 \ + man/sd_journal_perror.3 \ + man/sd_journal_previous.3 \ + man/sd_journal_previous_skip.3 \ + man/sd_journal_printv.3 \ + man/sd_journal_process.3 \ + man/sd_journal_reliable_fd.3 \ + man/sd_journal_restart_data.3 \ + man/sd_journal_restart_unique.3 \ + man/sd_journal_seek_cursor.3 \ + man/sd_journal_seek_monotonic_usec.3 \ + man/sd_journal_seek_realtime_usec.3 \ + man/sd_journal_seek_tail.3 \ + man/sd_journal_send.3 \ + man/sd_journal_sendv.3 \ + man/sd_journal_set_data_threshold.3 \ + man/sd_journal_test_cursor.3 \ + man/sd_journal_wait.3 \ + man/sd_notifyf.3 \ + man/systemd-ask-password-console.path.8 \ + man/systemd-ask-password-wall.path.8 \ + man/systemd-ask-password-wall.service.8 \ + man/systemd-fsck-root.service.8 \ + man/systemd-fsck.8 \ + man/systemd-hibernate.service.8 \ + man/systemd-hybrid-sleep.service.8 \ + man/systemd-initctl.8 \ + man/systemd-initctl.socket.8 \ + man/systemd-journald.8 \ + man/systemd-journald.socket.8 \ + man/systemd-kexec.service.8 \ + man/systemd-poweroff.service.8 \ + man/systemd-reboot.service.8 \ + man/systemd-remount-fs.8 \ + man/systemd-shutdown.8 \ + man/systemd-shutdownd.8 \ + man/systemd-shutdownd.socket.8 \ + man/systemd-sleep.8 \ + man/systemd-sysctl.8 \ + man/systemd-tmpfiles-clean.service.8 \ + man/systemd-tmpfiles-clean.timer.8 \ + man/systemd-tmpfiles-setup.service.8 \ + man/systemd-udevd-control.socket.8 \ + man/systemd-udevd-kernel.socket.8 \ + man/systemd-udevd.8 \ + man/systemd-update-utmp-shutdown.service.8 \ + man/systemd-update-utmp.8 +man/SD_ALERT.3: man/sd-daemon.3 +man/SD_CRIT.3: man/sd-daemon.3 +man/SD_DEBUG.3: man/sd-daemon.3 +man/SD_EMERG.3: man/sd-daemon.3 +man/SD_ERR.3: man/sd-daemon.3 +man/SD_ID128_CONST_STR.3: man/sd-id128.3 +man/SD_ID128_FORMAT_STR.3: man/sd-id128.3 +man/SD_ID128_FORMAT_VAL.3: man/sd-id128.3 +man/SD_ID128_MAKE.3: man/sd-id128.3 +man/SD_INFO.3: man/sd-daemon.3 +man/SD_JOURNAL_APPEND.3: man/sd_journal_get_fd.3 +man/SD_JOURNAL_FOREACH.3: man/sd_journal_next.3 +man/SD_JOURNAL_FOREACH_BACKWARDS.3: man/sd_journal_next.3 +man/SD_JOURNAL_FOREACH_DATA.3: man/sd_journal_get_data.3 +man/SD_JOURNAL_FOREACH_UNIQUE.3: man/sd_journal_query_unique.3 +man/SD_JOURNAL_INVALIDATE.3: man/sd_journal_get_fd.3 +man/SD_JOURNAL_LOCAL_ONLY.3: man/sd_journal_open.3 +man/SD_JOURNAL_NOP.3: man/sd_journal_get_fd.3 +man/SD_JOURNAL_RUNTIME_ONLY.3: man/sd_journal_open.3 +man/SD_JOURNAL_SUPPRESS_LOCATION.3: man/sd_journal_print.3 +man/SD_JOURNAL_SYSTEM_ONLY.3: man/sd_journal_open.3 +man/SD_LISTEN_FDS_START.3: man/sd_listen_fds.3 +man/SD_NOTICE.3: man/sd-daemon.3 +man/SD_WARNING.3: man/sd-daemon.3 +man/init.1: man/systemd.1 +man/poweroff.8: man/halt.8 +man/reboot.8: man/halt.8 +man/sd_id128_equal.3: man/sd-id128.3 +man/sd_id128_from_string.3: man/sd_id128_to_string.3 +man/sd_id128_get_boot.3: man/sd_id128_get_machine.3 +man/sd_id128_t.3: man/sd-id128.3 +man/sd_is_mq.3: man/sd_is_fifo.3 +man/sd_is_socket.3: man/sd_is_fifo.3 +man/sd_is_socket_inet.3: man/sd_is_fifo.3 +man/sd_is_socket_unix.3: man/sd_is_fifo.3 +man/sd_journal.3: man/sd_journal_open.3 +man/sd_journal_add_disjunction.3: man/sd_journal_add_match.3 +man/sd_journal_close.3: man/sd_journal_open.3 +man/sd_journal_enumerate_data.3: man/sd_journal_get_data.3 +man/sd_journal_enumerate_unique.3: man/sd_journal_query_unique.3 +man/sd_journal_flush_matches.3: man/sd_journal_add_match.3 +man/sd_journal_get_catalog_for_message_id.3: man/sd_journal_get_catalog.3 +man/sd_journal_get_cutoff_monotonic_usec.3: man/sd_journal_get_cutoff_realtime_usec.3 +man/sd_journal_get_data_threshold.3: man/sd_journal_get_data.3 +man/sd_journal_get_monotonic_usec.3: man/sd_journal_get_realtime_usec.3 +man/sd_journal_next_skip.3: man/sd_journal_next.3 +man/sd_journal_open_directory.3: man/sd_journal_open.3 +man/sd_journal_perror.3: man/sd_journal_print.3 +man/sd_journal_previous.3: man/sd_journal_next.3 +man/sd_journal_previous_skip.3: man/sd_journal_next.3 +man/sd_journal_printv.3: man/sd_journal_print.3 +man/sd_journal_process.3: man/sd_journal_get_fd.3 +man/sd_journal_reliable_fd.3: man/sd_journal_get_fd.3 +man/sd_journal_restart_data.3: man/sd_journal_get_data.3 +man/sd_journal_restart_unique.3: man/sd_journal_query_unique.3 +man/sd_journal_seek_cursor.3: man/sd_journal_seek_head.3 +man/sd_journal_seek_monotonic_usec.3: man/sd_journal_seek_head.3 +man/sd_journal_seek_realtime_usec.3: man/sd_journal_seek_head.3 +man/sd_journal_seek_tail.3: man/sd_journal_seek_head.3 +man/sd_journal_send.3: man/sd_journal_print.3 +man/sd_journal_sendv.3: man/sd_journal_print.3 +man/sd_journal_set_data_threshold.3: man/sd_journal_get_data.3 +man/sd_journal_test_cursor.3: man/sd_journal_get_cursor.3 +man/sd_journal_wait.3: man/sd_journal_get_fd.3 +man/sd_notifyf.3: man/sd_notify.3 +man/systemd-ask-password-console.path.8: man/systemd-ask-password-console.service.8 +man/systemd-ask-password-wall.path.8: man/systemd-ask-password-console.service.8 +man/systemd-ask-password-wall.service.8: man/systemd-ask-password-console.service.8 +man/systemd-fsck-root.service.8: man/systemd-fsck@.service.8 +man/systemd-fsck.8: man/systemd-fsck@.service.8 +man/systemd-hibernate.service.8: man/systemd-suspend.service.8 +man/systemd-hybrid-sleep.service.8: man/systemd-suspend.service.8 +man/systemd-initctl.8: man/systemd-initctl.service.8 +man/systemd-initctl.socket.8: man/systemd-initctl.service.8 +man/systemd-journald.8: man/systemd-journald.service.8 +man/systemd-journald.socket.8: man/systemd-journald.service.8 +man/systemd-kexec.service.8: man/systemd-halt.service.8 +man/systemd-poweroff.service.8: man/systemd-halt.service.8 +man/systemd-reboot.service.8: man/systemd-halt.service.8 +man/systemd-remount-fs.8: man/systemd-remount-fs.service.8 +man/systemd-shutdown.8: man/systemd-halt.service.8 +man/systemd-shutdownd.8: man/systemd-shutdownd.service.8 +man/systemd-shutdownd.socket.8: man/systemd-shutdownd.service.8 +man/systemd-sleep.8: man/systemd-suspend.service.8 +man/systemd-sysctl.8: man/systemd-sysctl.service.8 +man/systemd-tmpfiles-clean.service.8: man/systemd-tmpfiles.8 +man/systemd-tmpfiles-clean.timer.8: man/systemd-tmpfiles.8 +man/systemd-tmpfiles-setup.service.8: man/systemd-tmpfiles.8 +man/systemd-udevd-control.socket.8: man/systemd-udevd.service.8 +man/systemd-udevd-kernel.socket.8: man/systemd-udevd.service.8 +man/systemd-udevd.8: man/systemd-udevd.service.8 +man/systemd-update-utmp-shutdown.service.8: man/systemd-update-utmp-runlevel.service.8 +man/systemd-update-utmp.8: man/systemd-update-utmp-runlevel.service.8 + +if ENABLE_BINFMT +MANPAGES += \ + man/binfmt.d.5 \ + man/systemd-binfmt.service.8 +MANPAGES_ALIAS += \ + man/systemd-binfmt.8 +man/systemd-binfmt.8: man/systemd-binfmt.service.8 +endif + +if ENABLE_BOOTCHART +MANPAGES += \ + man/bootchart.conf.5 \ + man/systemd-bootchart.1 +endif + +if ENABLE_HOSTNAMED +MANPAGES += \ + man/hostnamectl.1 \ + man/systemd-hostnamed.service.8 +MANPAGES_ALIAS += \ + man/systemd-hostnamed.8 +man/systemd-hostnamed.8: man/systemd-hostnamed.service.8 +endif + +if ENABLE_LOCALED +MANPAGES += \ + man/localectl.1 \ + man/systemd-localed.service.8 +MANPAGES_ALIAS += \ + man/systemd-localed.8 +man/systemd-localed.8: man/systemd-localed.service.8 +endif + +if ENABLE_QUOTACHECK +MANPAGES += \ + man/systemd-quotacheck.service.8 +MANPAGES_ALIAS += \ + man/systemd-quotacheck.8 +man/systemd-quotacheck.8: man/systemd-quotacheck.service.8 +endif + +if ENABLE_RANDOMSEED +MANPAGES += \ + man/systemd-random-seed-load.service.8 +MANPAGES_ALIAS += \ + man/systemd-random-seed-save.service.8 \ + man/systemd-random-seed.8 +man/systemd-random-seed-save.service.8: man/systemd-random-seed-load.service.8 +man/systemd-random-seed.8: man/systemd-random-seed-load.service.8 +endif + +if ENABLE_READAHEAD +MANPAGES += \ + man/sd-readahead.3 \ + man/sd_readahead.3 \ + man/systemd-readahead-replay.service.8 +MANPAGES_ALIAS += \ + man/systemd-readahead-collect.service.8 \ + man/systemd-readahead-done.service.8 \ + man/systemd-readahead-done.timer.8 \ + man/systemd-readahead.8 +man/systemd-readahead-collect.service.8: man/systemd-readahead-replay.service.8 +man/systemd-readahead-done.service.8: man/systemd-readahead-replay.service.8 +man/systemd-readahead-done.timer.8: man/systemd-readahead-replay.service.8 +man/systemd-readahead.8: man/systemd-readahead-replay.service.8 +endif + +if ENABLE_TIMEDATED +MANPAGES += \ + man/systemd-timedated.service.8 \ + man/timedatectl.1 +MANPAGES_ALIAS += \ + man/systemd-timedated.8 +man/systemd-timedated.8: man/systemd-timedated.service.8 +endif + +if ENABLE_VCONSOLE +MANPAGES += \ + man/systemd-vconsole-setup.service.8 \ + man/vconsole.conf.5 +MANPAGES_ALIAS += \ + man/systemd-vconsole-setup.8 +man/systemd-vconsole-setup.8: man/systemd-vconsole-setup.service.8 +endif + +if HAVE_KMOD +MANPAGES += \ + man/modules-load.d.5 \ + man/systemd-modules-load.service.8 +MANPAGES_ALIAS += \ + man/systemd-modules-load.8 +man/systemd-modules-load.8: man/systemd-modules-load.service.8 +endif + +if HAVE_LIBCRYPTSETUP +MANPAGES += \ + man/crypttab.5 \ + man/systemd-cryptsetup-generator.8 \ + man/systemd-cryptsetup@.service.8 +MANPAGES_ALIAS += \ + man/systemd-cryptsetup.8 +man/systemd-cryptsetup.8: man/systemd-cryptsetup@.service.8 +endif + +if HAVE_MICROHTTPD +MANPAGES += \ + man/systemd-journal-gatewayd.service.8 +MANPAGES_ALIAS += \ + man/systemd-journal-gatewayd.8 \ + man/systemd-journal-gatewayd.socket.8 +man/systemd-journal-gatewayd.8: man/systemd-journal-gatewayd.service.8 +man/systemd-journal-gatewayd.socket.8: man/systemd-journal-gatewayd.service.8 +endif + +if HAVE_MYHOSTNAME +MANPAGES += \ + man/nss-myhostname.8 +endif + +if HAVE_PAM +MANPAGES += \ + man/loginctl.1 \ + man/logind.conf.5 \ + man/sd-login.3 \ + man/sd_get_seats.3 \ + man/sd_login_monitor_new.3 \ + man/sd_pid_get_session.3 \ + man/sd_seat_get_active.3 \ + man/sd_session_is_active.3 \ + man/sd_uid_get_state.3 \ + man/systemd-logind.service.8 \ + man/systemd-user-sessions.service.8 +MANPAGES_ALIAS += \ + man/sd_get_sessions.3 \ + man/sd_get_uids.3 \ + man/sd_login_monitor.3 \ + man/sd_login_monitor_flush.3 \ + man/sd_login_monitor_get_fd.3 \ + man/sd_login_monitor_unref.3 \ + man/sd_pid_get_owner_uid.3 \ + man/sd_pid_get_unit.3 \ + man/sd_seat_can_multi_session.3 \ + man/sd_seat_get_sessions.3 \ + man/sd_session_get_class.3 \ + man/sd_session_get_display.3 \ + man/sd_session_get_seat.3 \ + man/sd_session_get_service.3 \ + man/sd_session_get_state.3 \ + man/sd_session_get_tty.3 \ + man/sd_session_get_type.3 \ + man/sd_session_get_uid.3 \ + man/sd_uid_get_seats.3 \ + man/sd_uid_get_sessions.3 \ + man/sd_uid_is_on_seat.3 \ + man/systemd-logind.8 \ + man/systemd-user-sessions.8 +man/sd_get_sessions.3: man/sd_get_seats.3 +man/sd_get_uids.3: man/sd_get_seats.3 +man/sd_login_monitor.3: man/sd_login_monitor_new.3 +man/sd_login_monitor_flush.3: man/sd_login_monitor_new.3 +man/sd_login_monitor_get_fd.3: man/sd_login_monitor_new.3 +man/sd_login_monitor_unref.3: man/sd_login_monitor_new.3 +man/sd_pid_get_owner_uid.3: man/sd_pid_get_session.3 +man/sd_pid_get_unit.3: man/sd_pid_get_session.3 +man/sd_seat_can_multi_session.3: man/sd_seat_get_active.3 +man/sd_seat_get_sessions.3: man/sd_seat_get_active.3 +man/sd_session_get_class.3: man/sd_session_is_active.3 +man/sd_session_get_display.3: man/sd_session_is_active.3 +man/sd_session_get_seat.3: man/sd_session_is_active.3 +man/sd_session_get_service.3: man/sd_session_is_active.3 +man/sd_session_get_state.3: man/sd_session_is_active.3 +man/sd_session_get_tty.3: man/sd_session_is_active.3 +man/sd_session_get_type.3: man/sd_session_is_active.3 +man/sd_session_get_uid.3: man/sd_session_is_active.3 +man/sd_uid_get_seats.3: man/sd_uid_get_state.3 +man/sd_uid_get_sessions.3: man/sd_uid_get_state.3 +man/sd_uid_is_on_seat.3: man/sd_uid_get_state.3 +man/systemd-logind.8: man/systemd-logind.service.8 +man/systemd-user-sessions.8: man/systemd-user-sessions.service.8 +endif + +if HAVE_PYTHON +MANPAGES += \ + man/systemd.directives.7 \ + man/systemd.index.7 +endif diff --git a/Makefile.am b/Makefile.am index 1f9a2b4a66..ba55a7e1b6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -478,246 +478,11 @@ dist_doc_DATA = \ @INTLTOOL_POLICY_RULE@ # ------------------------------------------------------------------------------ -MANPAGES = \ - man/systemd.1 \ - man/systemctl.1 \ - man/systemd-cgls.1 \ - man/systemd-delta.1 \ - man/systemd-cgtop.1 \ - man/systemd-nspawn.1 \ - man/systemd-tmpfiles.8 \ - man/systemd-notify.1 \ - man/systemd.unit.5 \ - man/systemd.service.5 \ - man/systemd.socket.5 \ - man/systemd.mount.5 \ - man/systemd.automount.5 \ - man/systemd.swap.5 \ - man/systemd.timer.5 \ - man/systemd.path.5 \ - man/systemd.target.5 \ - man/systemd.device.5 \ - man/systemd.snapshot.5 \ - man/systemd.exec.5 \ - man/systemd.kill.5 \ - man/systemd.special.7 \ - man/systemd.journal-fields.7 \ - man/systemd.time.7 \ - man/kernel-command-line.7 \ - man/daemon.7 \ - man/bootup.7 \ - man/runlevel.8 \ - man/telinit.8 \ - man/halt.8 \ - man/shutdown.8 \ - man/pam_systemd.8 \ - man/systemd.conf.5 \ - man/tmpfiles.d.5 \ - man/hostname.5 \ - man/localtime.5 \ - man/machine-id.5 \ - man/locale.conf.5 \ - man/os-release.5 \ - man/machine-info.5 \ - man/sysctl.d.5 \ - man/systemd-sysctl.service.8 \ - man/systemd-ask-password.1 \ - man/systemd-cat.1 \ - man/systemd-machine-id-setup.1 \ - man/systemd-detect-virt.1 \ - man/journald.conf.5 \ - man/systemd-journald.service.8 \ - man/journalctl.1 \ - man/systemd-coredumpctl.1 \ - man/systemd-inhibit.1 \ - man/systemd-remount-fs.service.8 \ - man/systemd-update-utmp-runlevel.service.8 \ - man/systemd-initctl.service.8 \ - man/systemd-shutdownd.service.8 \ - man/systemd-suspend.service.8 \ - man/systemd-halt.service.8 \ - man/systemd-fsck@.service.8 \ - man/systemd-ask-password-console.service.8 \ - man/systemd-analyze.1 \ - man/systemd-tty-ask-password-agent.1 \ - man/systemd-getty-generator.8 \ - man/systemd-system-update-generator.8 \ - man/systemd-fstab-generator.8 \ - man/systemd.preset.5 \ - man/sd-id128.3 \ - man/sd_id128_to_string.3 \ - man/sd_id128_randomize.3 \ - man/sd_id128_get_machine.3 \ - man/sd-journal.3 \ - man/sd_journal_print.3 \ - man/sd_journal_stream_fd.3 \ - man/sd_journal_open.3 \ - man/sd_journal_next.3 \ - man/sd_journal_get_data.3 \ - man/sd_journal_get_realtime_usec.3 \ - man/sd_journal_get_cutoff_realtime_usec.3 \ - man/sd_journal_get_cursor.3 \ - man/sd_journal_get_fd.3 \ - man/sd_journal_get_usage.3 \ - man/sd_journal_add_match.3 \ - man/sd_journal_seek_head.3 \ - man/sd_journal_query_unique.3 \ - man/sd_journal_get_catalog.3 - -MANPAGES_ALIAS = \ - man/reboot.8 \ - man/poweroff.8 \ - man/init.1 \ - man/systemd-sysctl.8 \ - man/systemd-journald.socket.8 \ - man/systemd-journald.8 \ - man/systemd-remount-fs.8 \ - man/systemd-update-utmp-shutdown.service.8 \ - man/systemd-update-utmp.8 \ - man/systemd-initctl.socket.8 \ - man/systemd-initctl.8 \ - man/systemd-shutdownd.socket.8 \ - man/systemd-shutdownd.8 \ - man/systemd-hibernate.service.8 \ - man/systemd-hybrid-sleep.service.8 \ - man/systemd-sleep.8 \ - man/systemd-shutdown.8 \ - man/systemd-poweroff.service.8 \ - man/systemd-reboot.service.8 \ - man/systemd-kexec.service.8 \ - man/systemd-fsck.8 \ - man/systemd-fsck-root.service.8 \ - man/systemd-ask-password-console.path.8 \ - man/systemd-ask-password-wall.service.8 \ - man/systemd-ask-password-wall.path.8 \ - man/systemd-tmpfiles-setup.service.8 \ - man/systemd-tmpfiles-clean.service.8 \ - man/systemd-tmpfiles-clean.timer.8 \ - man/sd_id128_t.3 \ - man/SD_ID128_MAKE.3 \ - man/SD_ID128_CONST_STR.3 \ - man/SD_ID128_FORMAT_STR.3 \ - man/SD_ID128_FORMAT_VAL.3 \ - man/sd_id128_equal.3 \ - man/sd_id128_from_string.3 \ - man/sd_id128_get_boot.3 \ - man/sd_journal_printv.3 \ - man/sd_journal_send.3 \ - man/sd_journal_sendv.3 \ - man/sd_journal_perror.3 \ - man/SD_JOURNAL_SUPPRESS_LOCATION.3 \ - man/sd_journal_open_directory.3 \ - man/sd_journal_close.3 \ - man/sd_journal.3 \ - man/SD_JOURNAL_RUNTIME_ONLY.3 \ - man/SD_JOURNAL_SYSTEM_ONLY.3 \ - man/SD_JOURNAL_LOCAL_ONLY.3 \ - man/sd_journal_previous.3 \ - man/sd_journal_next_skip.3 \ - man/sd_journal_previous_skip.3 \ - man/SD_JOURNAL_FOREACH.3 \ - man/SD_JOURNAL_FOREACH_BACKWARDS.3 \ - man/sd_journal_enumerate_data.3 \ - man/sd_journal_restart_data.3 \ - man/SD_JOURNAL_FOREACH_DATA.3 \ - man/sd_journal_get_monotonic_usec.3 \ - man/sd_journal_get_cutoff_monotonic_usec.3 \ - man/sd_journal_reliable_fd.3 \ - man/sd_journal_process.3 \ - man/sd_journal_wait.3 \ - man/SD_JOURNAL_NOP.3 \ - man/SD_JOURNAL_APPEND.3 \ - man/SD_JOURNAL_INVALIDATE.3 \ - man/sd_journal_add_disjunction.3 \ - man/sd_journal_flush_matches.3 \ - man/sd_journal_get_data_threshold.3 \ - man/sd_journal_set_data_threshold.3 \ - man/sd_journal_seek_tail.3 \ - man/sd_journal_seek_monotonic_usec.3 \ - man/sd_journal_seek_realtime_usec.3 \ - man/sd_journal_seek_cursor.3 \ - man/sd_journal_test_cursor.3 \ - man/sd_journal_enumerate_unique.3 \ - man/sd_journal_restart_unique.3 \ - man/SD_JOURNAL_FOREACH_UNIQUE.3 \ - man/sd_journal_get_catalog_for_message_id.3 - -man/reboot.8: man/halt.8 -man/poweroff.8: man/halt.8 -man/init.1: man/systemd.1 -man/systemd-sysctl.8: man/systemd-sysctl.service.8 -man/systemd-journald.socket.8: man/systemd-journald.service.8 -man/systemd-journald.8: man/systemd-journald.service.8 -man/systemd-remount-fs.8: man/systemd-remount-fs.service.8 -man/systemd-update-utmp-shutdown.service.8: man/systemd-update-utmp-runlevel.service.8 -man/systemd-update-utmp.8: man/systemd-update-utmp-runlevel.service.8 -man/systemd-initctl.socket.8: man/systemd-initctl.service.8 -man/systemd-initctl.8: man/systemd-initctl.service.8 -man/systemd-shutdownd.socket.8: man/systemd-shutdownd.service.8 -man/systemd-shutdownd.8: man/systemd-shutdownd.service.8 -man/systemd-hibernate.service.8: man/systemd-suspend.service.8 -man/systemd-hybrid-sleep.service.8: man/systemd-suspend.service.8 -man/systemd-sleep.8: man/systemd-suspend.service.8 -man/systemd-shutdown.8: man/systemd-halt.service.8 -man/systemd-poweroff.service.8: man/systemd-halt.service.8 -man/systemd-reboot.service.8: man/systemd-halt.service.8 -man/systemd-kexec.service.8: man/systemd-halt.service.8 -man/systemd-fsck.8: man/systemd-fsck@.service.8 -man/systemd-fsck-root.service.8: man/systemd-fsck@.service.8 -man/systemd-ask-password-console.path.8: man/systemd-ask-password-console.service.8 -man/systemd-ask-password-wall.service.8: man/systemd-ask-password-console.service.8 -man/systemd-ask-password-wall.path.8: man/systemd-ask-password-console.service.8 -man/systemd-tmpfiles-setup.service.8: man/systemd-tmpfiles.8 -man/systemd-tmpfiles-clean.service.8: man/systemd-tmpfiles.8 -man/systemd-tmpfiles-clean.timer.8: man/systemd-tmpfiles.8 -man/sd_id128_t.3: man/sd-id128.3 -man/SD_ID128_MAKE.3: man/sd-id128.3 -man/SD_ID128_CONST_STR.3: man/sd-id128.3 -man/SD_ID128_FORMAT_STR.3: man/sd-id128.3 -man/SD_ID128_FORMAT_VAL.3: man/sd-id128.3 -man/sd_id128_equal.3: man/sd-id128.3 -man/sd_id128_from_string.3: man/sd_id128_to_string.3 -man/sd_id128_get_boot.3: man/sd_id128_get_machine.3 -man/sd_journal_printv.3: man/sd_journal_print.3 -man/sd_journal_send.3: man/sd_journal_print.3 -man/sd_journal_sendv.3: man/sd_journal_print.3 -man/sd_journal_perror.3: man/sd_journal_print.3 -man/SD_JOURNAL_SUPPRESS_LOCATION.3: man/sd_journal_print.3 -man/sd_journal_open_directory.3: man/sd_journal_open.3 -man/sd_journal_close.3: man/sd_journal_open.3 -man/sd_journal.3: man/sd_journal_open.3 -man/SD_JOURNAL_RUNTIME_ONLY.3: man/sd_journal_open.3 -man/SD_JOURNAL_SYSTEM_ONLY.3: man/sd_journal_open.3 -man/SD_JOURNAL_LOCAL_ONLY.3: man/sd_journal_open.3 -man/sd_journal_previous.3: man/sd_journal_next.3 -man/sd_journal_next_skip.3: man/sd_journal_next.3 -man/sd_journal_previous_skip.3: man/sd_journal_next.3 -man/SD_JOURNAL_FOREACH.3: man/sd_journal_next.3 -man/SD_JOURNAL_FOREACH_BACKWARDS.3: man/sd_journal_next.3 -man/sd_journal_enumerate_data.3: man/sd_journal_get_data.3 -man/sd_journal_restart_data.3: man/sd_journal_get_data.3 -man/SD_JOURNAL_FOREACH_DATA.3: man/sd_journal_get_data.3 -man/sd_journal_get_monotonic_usec.3: man/sd_journal_get_realtime_usec.3 -man/sd_journal_get_cutoff_monotonic_usec.3: man/sd_journal_get_cutoff_realtime_usec.3 -man/sd_journal_reliable_fd.3: man/sd_journal_get_fd.3 -man/sd_journal_process.3: man/sd_journal_get_fd.3 -man/sd_journal_wait.3: man/sd_journal_get_fd.3 -man/SD_JOURNAL_NOP.3: man/sd_journal_get_fd.3 -man/SD_JOURNAL_APPEND.3: man/sd_journal_get_fd.3 -man/SD_JOURNAL_INVALIDATE.3: man/sd_journal_get_fd.3 -man/sd_journal_add_disjunction.3: man/sd_journal_add_match.3 -man/sd_journal_get_data_threshold.3: man/sd_journal_get_data.3 -man/sd_journal_set_data_threshold.3: man/sd_journal_get_data.3 -man/sd_journal_flush_matches.3: man/sd_journal_add_match.3 -man/sd_journal_seek_tail.3: man/sd_journal_seek_head.3 -man/sd_journal_seek_monotonic_usec.3: man/sd_journal_seek_head.3 -man/sd_journal_seek_realtime_usec.3: man/sd_journal_seek_head.3 -man/sd_journal_seek_cursor.3: man/sd_journal_seek_head.3 -man/sd_journal_test_cursor.3: man/sd_journal_get_cursor.3 -man/sd_journal_enumerate_unique.3: man/sd_journal_query_unique.3 -man/sd_journal_restart_unique.3: man/sd_journal_query_unique.3 -man/SD_JOURNAL_FOREACH_UNIQUE.3: man/sd_journal_query_unique.3 -man/sd_journal_get_catalog_for_message_id.3: man/sd_journal_get_catalog.3 + +MANPAGES = +MANPAGES_ALIAS = + +include Makefile-man.am XML_FILES = \ ${patsubst %.1,%.xml,${patsubst %.3,%.xml,${patsubst %.5,%.xml,${patsubst %.7,%.xml,${patsubst %.8,%.xml,$(MANPAGES)}}}}} @@ -736,10 +501,6 @@ CLEANFILES += \ ${XML_FILES:.xml=.html} if HAVE_PYTHON -MANPAGES += \ - man/systemd.index.7 \ - man/systemd.directives.7 - NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES)) man/systemd.index.xml: make-man-index.py $(NON_INDEX_XML_FILES) $(AM_V_at)$(MKDIR_P) $(dir $@) @@ -1503,12 +1264,6 @@ SYSINIT_TARGET_WANTS += \ dist_udevrules_DATA += \ rules/80-drivers.rules -MANPAGES += \ - man/modules-load.d.5 \ - man/systemd-modules-load.service.8 -MANPAGES_ALIAS += \ - man/systemd-modules-load.8 -man/systemd-modules-load.8: man/systemd-modules-load.service.8 endif EXTRA_DIST += \ @@ -1777,44 +1532,6 @@ lib_LTLIBRARIES += \ pkgconfiglib_DATA += \ src/libsystemd-daemon/libsystemd-daemon.pc -MANPAGES += \ - man/sd-daemon.3 \ - man/sd_notify.3 \ - man/sd_listen_fds.3 \ - man/sd_is_fifo.3 \ - man/sd_booted.3 - -MANPAGES_ALIAS += \ - man/sd_is_socket.3 \ - man/sd_is_socket_unix.3 \ - man/sd_is_socket_inet.3 \ - man/sd_is_mq.3 \ - man/sd_notifyf.3 \ - man/SD_LISTEN_FDS_START.3 \ - man/SD_EMERG.3 \ - man/SD_ALERT.3 \ - man/SD_CRIT.3 \ - man/SD_ERR.3 \ - man/SD_WARNING.3 \ - man/SD_NOTICE.3 \ - man/SD_INFO.3 \ - man/SD_DEBUG.3 - -man/sd_is_socket.3: man/sd_is_fifo.3 -man/sd_is_socket_unix.3: man/sd_is_fifo.3 -man/sd_is_socket_inet.3: man/sd_is_fifo.3 -man/sd_is_mq.3: man/sd_is_fifo.3 -man/sd_notifyf.3: man/sd_notify.3 -man/SD_LISTEN_FDS_START.3: man/sd_listen_fds.3 -man/SD_EMERG.3: man/sd-daemon.3 -man/SD_ALERT.3: man/sd-daemon.3 -man/SD_CRIT.3: man/sd-daemon.3 -man/SD_ERR.3: man/sd-daemon.3 -man/SD_WARNING.3: man/sd-daemon.3 -man/SD_NOTICE.3: man/sd-daemon.3 -man/SD_INFO.3: man/sd-daemon.3 -man/SD_DEBUG.3: man/sd-daemon.3 - EXTRA_DIST += \ src/libsystemd-daemon/libsystemd-daemon.pc.in \ src/libsystemd-daemon/libsystemd-daemon.sym @@ -1892,20 +1609,6 @@ libudev_private_la_LIBADD = \ libsystemd-shared.la # ------------------------------------------------------------------------------ -MANPAGES += \ - man/udev.7 \ - man/udevadm.8 \ - man/systemd-udevd.service.8 - -MANPAGES_ALIAS += \ - man/systemd-udevd.8 \ - man/systemd-udevd-control.socket.8 \ - man/systemd-udevd-kernel.socket.8 - -man/systemd-udevd.8: man/systemd-udevd.service.8 -man/systemd-udevd-control.socket.8: man/systemd-udevd.service.8 -man/systemd-udevd-kernel.socket.8: man/systemd-udevd.service.8 - INSTALL_DIRS += \ $(sysconfdir)/udev/rules.d \ $(sysconfdir)/udev/hwdb.d @@ -2907,13 +2610,6 @@ nodist_systemunit_DATA += \ dist_gatewayddocumentroot_DATA = \ src/journal/browse.html -MANPAGES += \ - man/systemd-journal-gatewayd.service.8 -MANPAGES_ALIAS += \ - man/systemd-journal-gatewayd.socket.8 \ - man/systemd-journal-gatewayd.8 -man/systemd-journal-gatewayd.socket.8: man/systemd-journal-gatewayd.service.8 -man/systemd-journal-gatewayd.8: man/systemd-journal-gatewayd.service.8 endif EXTRA_DIST += \ @@ -2973,14 +2669,6 @@ SYSINIT_TARGET_WANTS += \ systemd-binfmt.service \ proc-sys-fs-binfmt_misc.automount -MANPAGES += \ - man/binfmt.d.5 \ - man/systemd-binfmt.service.8 - -MANPAGES_ALIAS += \ - man/systemd-binfmt.8 - -man/systemd-binfmt.8: man/systemd-binfmt.service.8 endif EXTRA_DIST += \ @@ -3002,15 +2690,6 @@ nodist_systemunit_DATA += \ SYSINIT_TARGET_WANTS += \ systemd-vconsole-setup.service - -MANPAGES += \ - man/vconsole.conf.5 \ - man/systemd-vconsole-setup.service.8 - -MANPAGES_ALIAS += \ - man/systemd-vconsole-setup.8 - -man/systemd-vconsole-setup.8: man/systemd-vconsole-setup.service.8 endif EXTRA_DIST += \ @@ -3047,22 +2726,6 @@ nodist_systemunit_DATA += \ units/systemd-readahead-replay.service \ units/systemd-readahead-done.service -MANPAGES += \ - man/sd_readahead.3 \ - man/sd-readahead.3 \ - man/systemd-readahead-replay.service.8 - -MANPAGES_ALIAS += \ - man/systemd-readahead-collect.service.8 \ - man/systemd-readahead-done.service.8 \ - man/systemd-readahead-done.timer.8 \ - man/systemd-readahead.8 - -man/systemd-readahead-collect.service.8: man/systemd-readahead-replay.service.8 -man/systemd-readahead-done.service.8: man/systemd-readahead-replay.service.8 -man/systemd-readahead-done.timer.8: man/systemd-readahead-replay.service.8 -man/systemd-readahead.8: man/systemd-readahead-replay.service.8 - endif EXTRA_DIST += \ @@ -3081,10 +2744,6 @@ systemd_bootchart_SOURCES = \ systemd_bootchart_LDADD = \ libsystemd-shared.la -MANPAGES += \ - man/systemd-bootchart.1 \ - man/bootchart.conf.5 - rootlibexec_PROGRAMS += \ systemd-bootchart @@ -3105,15 +2764,6 @@ systemd_quotacheck_SOURCES = \ systemd_quotacheck_LDADD = \ libsystemd-shared.la - -MANPAGES += \ - man/systemd-quotacheck.service.8 - -MANPAGES_ALIAS += \ - man/systemd-quotacheck.8 - -man/systemd-quotacheck.8: man/systemd-quotacheck.service.8 - endif EXTRA_DIST += \ @@ -3143,16 +2793,6 @@ SHUTDOWN_TARGET_WANTS += \ SYSINIT_TARGET_WANTS += \ systemd-random-seed-load.service -MANPAGES += \ - man/systemd-random-seed-load.service.8 - -MANPAGES_ALIAS += \ - man/systemd-random-seed-save.service.8 \ - man/systemd-random-seed.8 - -man/systemd-random-seed-save.service.8: man/systemd-random-seed-load.service.8 -man/systemd-random-seed.8: man/systemd-random-seed-load.service.8 - endif EXTRA_DIST += \ @@ -3193,15 +2833,6 @@ systemd_cryptsetup_generator_LDADD = \ SYSINIT_TARGET_WANTS += \ cryptsetup.target -MANPAGES += \ - man/systemd-cryptsetup@.service.8 \ - man/systemd-cryptsetup-generator.8 \ - man/crypttab.5 - -MANPAGES_ALIAS += \ - man/systemd-cryptsetup.8 - -man/systemd-cryptsetup.8: man/systemd-cryptsetup@.service.8 endif # ------------------------------------------------------------------------------ @@ -3244,14 +2875,6 @@ org.freedesktop.hostname1.xml: systemd-hostnamed SYSTEM_UNIT_ALIASES += \ systemd-hostnamed.service dbus-org.freedesktop.hostname1.service -MANPAGES += \ - man/systemd-hostnamed.service.8 - -MANPAGES_ALIAS += \ - man/systemd-hostnamed.8 - -man/systemd-hostnamed.8: man/systemd-hostnamed.service.8 - hostnamectl_SOURCES = \ src/hostname/hostnamectl.c @@ -3267,9 +2890,6 @@ hostnamectl_LDADD = \ bin_PROGRAMS += \ hostnamectl -MANPAGES += \ - man/hostnamectl.1 - endif polkitpolicy_in_files += \ @@ -3319,14 +2939,6 @@ org.freedesktop.locale1.xml: systemd-localed SYSTEM_UNIT_ALIASES += \ systemd-localed.service dbus-org.freedesktop.locale1.service -MANPAGES += \ - man/systemd-localed.service.8 - -MANPAGES_ALIAS += \ - man/systemd-localed.8 - -man/systemd-localed.8: man/systemd-localed.service.8 - dist_pkgdata_DATA += \ src/locale/kbd-model-map @@ -3351,9 +2963,6 @@ localectl_LDADD = \ bin_PROGRAMS += \ localectl -MANPAGES += \ - man/localectl.1 - endif polkitpolicy_in_files += \ @@ -3406,14 +3015,6 @@ INSTALL_DIRS += \ SYSTEM_UNIT_ALIASES += \ systemd-timedated.service dbus-org.freedesktop.timedate1.service -MANPAGES += \ - man/systemd-timedated.service.8 - -MANPAGES_ALIAS += \ - man/systemd-timedated.8 - -man/systemd-timedated.8: man/systemd-timedated.service.8 - timedatectl_SOURCES = \ src/timedate/timedatectl.c @@ -3428,9 +3029,6 @@ timedatectl_LDADD = \ bin_PROGRAMS += \ timedatectl -MANPAGES += \ - man/timedatectl.1 - endif polkitpolicy_in_files += \ @@ -3459,9 +3057,6 @@ libnss_myhostname_la_LDFLAGS = \ lib_LTLIBRARIES += \ libnss_myhostname.la - -MANPAGES += \ - man/nss-myhostname.8 endif # ------------------------------------------------------------------------------ @@ -3688,68 +3283,6 @@ nodist_udevrules_DATA += \ src/login/71-seat.rules \ src/login/73-seat-late.rules -MANPAGES += \ - man/systemd-logind.service.8 \ - man/logind.conf.5 \ - man/sd-login.3 \ - man/loginctl.1 \ - man/sd_login_monitor_new.3 \ - man/sd_pid_get_session.3 \ - man/sd_uid_get_state.3 \ - man/sd_session_is_active.3 \ - man/sd_seat_get_active.3 \ - man/sd_get_seats.3 \ - man/systemd-user-sessions.service.8 - -MANPAGES_ALIAS += \ - man/sd_login_monitor_unref.3 \ - man/sd_login_monitor_flush.3 \ - man/sd_login_monitor_get_fd.3 \ - man/sd_login_monitor.3 \ - man/sd_session_get_uid.3 \ - man/sd_session_get_seat.3 \ - man/sd_session_get_service.3 \ - man/sd_session_get_state.3 \ - man/sd_session_get_type.3 \ - man/sd_session_get_class.3 \ - man/sd_session_get_display.3 \ - man/sd_session_get_tty.3 \ - man/sd_pid_get_owner_uid.3 \ - man/sd_pid_get_unit.3 \ - man/sd_uid_is_on_seat.3 \ - man/sd_uid_get_sessions.3 \ - man/sd_uid_get_seats.3 \ - man/sd_seat_get_sessions.3 \ - man/sd_seat_can_multi_session.3 \ - man/sd_get_sessions.3 \ - man/sd_get_uids.3 \ - man/systemd-logind.8 \ - man/systemd-user-sessions.8 - -man/systemd-logind.8: man/systemd-logind.service.8 -man/sd_login_monitor_unref.3: man/sd_login_monitor_new.3 -man/sd_login_monitor_flush.3: man/sd_login_monitor_new.3 -man/sd_login_monitor_get_fd.3: man/sd_login_monitor_new.3 -man/sd_login_monitor.3: man/sd_login_monitor_new.3 -man/sd_session_get_uid.3: man/sd_session_is_active.3 -man/sd_session_get_seat.3: man/sd_session_is_active.3 -man/sd_session_get_service.3: man/sd_session_is_active.3 -man/sd_session_get_state.3: man/sd_session_is_active.3 -man/sd_session_get_type.3: man/sd_session_is_active.3 -man/sd_session_get_class.3: man/sd_session_is_active.3 -man/sd_session_get_display.3: man/sd_session_is_active.3 -man/sd_session_get_tty.3: man/sd_session_is_active.3 -man/sd_pid_get_owner_uid.3: man/sd_pid_get_session.3 -man/sd_pid_get_unit.3: man/sd_pid_get_session.3 -man/sd_uid_is_on_seat.3: man/sd_uid_get_state.3 -man/sd_uid_get_sessions.3: man/sd_uid_get_state.3 -man/sd_uid_get_seats.3: man/sd_uid_get_state.3 -man/sd_seat_get_sessions.3: man/sd_seat_get_active.3 -man/sd_seat_can_multi_session.3: man/sd_seat_get_active.3 -man/sd_get_sessions.3: man/sd_get_seats.3 -man/sd_get_uids.3: man/sd_get_seats.3 -man/systemd-user-sessions.8: man/systemd-user-sessions.service.8 - CLEANFILES += \ src/login/logind-gperf.c \ src/login/71-seat.rules \ -- cgit v1.2.1 From 56ba3c78ae35065064c4289a0c8e22a81256af20 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 2 Feb 2013 22:47:47 -0500 Subject: build-sys: create Makefile-man.am automatically man rules were repeating the same information in too many places, which was error prone. Those rules can be easily generated from .xml files. For efficiency and because python is not a required dependency, Makefile-man.am is only regenerated when requested with make update-man-list If no metadata in man/*.xml changed, this file should not change. So only when a new man page or a new alias is added, this file should show up in 'git diff'. The change should then be committed. If the support for building from git without python was dropped, we could drop Makefile-man.am from version control. This would also increase the partial build time (since more stuff would be rebuild whenever sources in man/*.xml would be modified), so it would probably wouldn't be worth it. --- Makefile-man.am | 12 +++++ Makefile.am | 7 +++ make-directive-index.py | 2 +- make-man-index.py | 2 +- make-man-rules.py | 92 ++++++++++++++++++++++++++++++++ man/binfmt.d.xml | 2 +- man/bootchart.conf.xml | 2 +- man/crypttab.xml | 2 +- man/hostnamectl.xml | 2 +- man/localectl.xml | 2 +- man/loginctl.xml | 2 +- man/logind.conf.xml | 2 +- man/modules-load.d.xml | 2 +- man/nss-myhostname.xml | 2 +- man/sd-login.xml | 2 +- man/sd-readahead.xml | 2 +- man/sd_get_seats.xml | 2 +- man/sd_login_monitor_new.xml | 2 +- man/sd_pid_get_session.xml | 2 +- man/sd_readahead.xml | 2 +- man/sd_seat_get_active.xml | 2 +- man/sd_session_is_active.xml | 2 +- man/sd_uid_get_state.xml | 2 +- man/systemd-binfmt.service.xml | 2 +- man/systemd-bootchart.xml | 2 +- man/systemd-cryptsetup-generator.xml | 2 +- man/systemd-cryptsetup@.service.xml | 2 +- man/systemd-hostnamed.service.xml | 2 +- man/systemd-journal-gatewayd.service.xml | 2 +- man/systemd-localed.service.xml | 2 +- man/systemd-logind.service.xml | 2 +- man/systemd-modules-load.service.xml | 2 +- man/systemd-quotacheck.service.xml | 2 +- man/systemd-random-seed-load.service.xml | 2 +- man/systemd-readahead-replay.service.xml | 2 +- man/systemd-timedated.service.xml | 2 +- man/systemd-user-sessions.service.xml | 2 +- man/systemd-vconsole-setup.service.xml | 2 +- man/timedatectl.xml | 2 +- man/vconsole.conf.xml | 2 +- 40 files changed, 148 insertions(+), 37 deletions(-) create mode 100644 make-man-rules.py diff --git a/Makefile-man.am b/Makefile-man.am index 76b794a27b..d54d67cf11 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -1,3 +1,6 @@ +# Do not edit. Generated by make-man-rules.py. +# Regenerate with 'make man-list-update'. + MANPAGES += \ man/bootup.7 \ man/daemon.7 \ @@ -292,6 +295,9 @@ if ENABLE_BOOTCHART MANPAGES += \ man/bootchart.conf.5 \ man/systemd-bootchart.1 +MANPAGES_ALIAS += \ + # + endif if ENABLE_HOSTNAMED @@ -396,6 +402,9 @@ endif if HAVE_MYHOSTNAME MANPAGES += \ man/nss-myhostname.8 +MANPAGES_ALIAS += \ + # + endif if HAVE_PAM @@ -464,4 +473,7 @@ if HAVE_PYTHON MANPAGES += \ man/systemd.directives.7 \ man/systemd.index.7 +MANPAGES_ALIAS += \ + # + endif diff --git a/Makefile.am b/Makefile.am index ba55a7e1b6..f73e8a6e74 100644 --- a/Makefile.am +++ b/Makefile.am @@ -502,6 +502,13 @@ CLEANFILES += \ if HAVE_PYTHON NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES)) + +XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml) +update-man-list: make-man-rules.py $(XML_GLOB) + $(AM_V_GEN)$(PYTHON) $^ > $(top_srcdir)/Makefile-man.tmp + $(AM_V_at)mv $(top_srcdir)/Makefile-man.tmp $(top_srcdir)/Makefile-man.am + @echo "Makefile-man.am has been regenerated" + man/systemd.index.xml: make-man-index.py $(NON_INDEX_XML_FILES) $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GEN)$(PYTHON) $^ > $@ diff --git a/make-directive-index.py b/make-directive-index.py index ab40997a98..b06a54c1d5 100755 --- a/make-directive-index.py +++ b/make-directive-index.py @@ -23,7 +23,7 @@ import xml.etree.ElementTree as tree import re TEMPLATE = '''\ - + systemd.directives diff --git a/make-man-index.py b/make-man-index.py index 2dbc2da995..f829d98b6a 100755 --- a/make-man-index.py +++ b/make-man-index.py @@ -24,7 +24,7 @@ import sys MDASH = ' — ' if sys.version_info.major >= 3 else ' -- ' TEMPLATE = '''\ - + systemd.index diff --git a/make-man-rules.py b/make-man-rules.py new file mode 100644 index 0000000000..b88b43ac3d --- /dev/null +++ b/make-man-rules.py @@ -0,0 +1,92 @@ +# -*- Mode: python; coding: utf-8; indent-tabs-mode: nil -*- */ +# +# This file is part of systemd. +# +# Copyright 2013 Zbigniew Jędrzejewski-Szmek +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see . + +from __future__ import print_function +import xml.etree.ElementTree as tree +import collections +import sys + +SECTION = '''\ +MANPAGES += \\ + {manpages} +MANPAGES_ALIAS += \\ + {aliases} +{rules} +''' + +CONDITIONAL = '''\ +if {conditional} +''' \ ++ SECTION + \ +'''\ +endif +''' + +HEADER = '''\ +# Do not edit. Generated by make-man-rules.py. +# Regenerate with 'make update-man-list'. + +''' + +def man(page, number): + return 'man/{}.{}'.format(page, number) + +def add_rules(rules, name): + xml = tree.parse(name) + # print('parsing {}'.format(name), file=sys.stderr) + conditional = xml.getroot().get('conditional') or '' + rulegroup = rules[conditional] + refmeta = xml.find('./refmeta') + title = refmeta.find('./refentrytitle').text + number = refmeta.find('./manvolnum').text + refnames = xml.findall('./refnamediv/refname') + target = man(refnames[0].text, number) + if title != refnames[0].text: + raise ValueError('refmeta and refnamediv disagree: ' + name) + for refname in refnames: + assert all(refname not in group + for group in rules.values()), "duplicate page name" + alias = man(refname.text, number) + rulegroup[alias] = target + # print('{} => {} [{}]'.format(alias, target, conditional), file=sys.stderr) + +def create_rules(*xml_files): + " {conditional => {alias-name => source-name}} " + rules = collections.defaultdict(dict) + for name in xml_files: + add_rules(rules, name) + return rules + +def mjoin(files): + return ' \\\n\t'.join(sorted(files) or '#') + +def make_makefile(rules): + return HEADER + '\n'.join( + (CONDITIONAL if conditional else SECTION).format( + manpages=mjoin(set(rulegroup.values())), + aliases=mjoin(k for k,v in rulegroup.items() if k != v), + rules='\n'.join('{}: {}'.format(k,v) + for k,v in sorted(rulegroup.items()) + if k != v), + conditional=conditional) + for conditional,rulegroup in sorted(rules.items())) + +if __name__ == '__main__': + rules = create_rules(*sys.argv[1:]) + print(make_makefile(rules), end='') diff --git a/man/binfmt.d.xml b/man/binfmt.d.xml index 07ae0ac231..8c5083cafb 100644 --- a/man/binfmt.d.xml +++ b/man/binfmt.d.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + binfmt.d diff --git a/man/bootchart.conf.xml b/man/bootchart.conf.xml index d2b09638c1..419554e2d1 100644 --- a/man/bootchart.conf.xml +++ b/man/bootchart.conf.xml @@ -25,7 +25,7 @@ along with systemd; If not, see . --> - + bootchart.conf systemd diff --git a/man/crypttab.xml b/man/crypttab.xml index f976bdaa25..a94163b4b2 100644 --- a/man/crypttab.xml +++ b/man/crypttab.xml @@ -25,7 +25,7 @@ The Red Hat version has been written by Miloslav Trmac . --> - + crypttab diff --git a/man/hostnamectl.xml b/man/hostnamectl.xml index a29d2f5b75..07d363420c 100644 --- a/man/hostnamectl.xml +++ b/man/hostnamectl.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + hostnamectl diff --git a/man/localectl.xml b/man/localectl.xml index 7563eb513c..3e5b812dac 100644 --- a/man/localectl.xml +++ b/man/localectl.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + localectl diff --git a/man/loginctl.xml b/man/loginctl.xml index 90b6f1e110..ba0352cf61 100644 --- a/man/loginctl.xml +++ b/man/loginctl.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + loginctl diff --git a/man/logind.conf.xml b/man/logind.conf.xml index b602e2a5f5..d223514e0e 100644 --- a/man/logind.conf.xml +++ b/man/logind.conf.xml @@ -22,7 +22,7 @@ along with systemd; If not, see . --> - + logind.conf systemd diff --git a/man/modules-load.d.xml b/man/modules-load.d.xml index bcc4d12561..ea4f524048 100644 --- a/man/modules-load.d.xml +++ b/man/modules-load.d.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + modules-load.d diff --git a/man/nss-myhostname.xml b/man/nss-myhostname.xml index bd3f635692..46b7471b06 100644 --- a/man/nss-myhostname.xml +++ b/man/nss-myhostname.xml @@ -22,7 +22,7 @@ along with systemd; If not, see . --> - + nss-myhostname diff --git a/man/sd-login.xml b/man/sd-login.xml index c02ad0c146..697259564d 100644 --- a/man/sd-login.xml +++ b/man/sd-login.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd-login diff --git a/man/sd-readahead.xml b/man/sd-readahead.xml index cebaa5da2b..ee7c936813 100644 --- a/man/sd-readahead.xml +++ b/man/sd-readahead.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd-readahead diff --git a/man/sd_get_seats.xml b/man/sd_get_seats.xml index 17adcef745..a300a05751 100644 --- a/man/sd_get_seats.xml +++ b/man/sd_get_seats.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_get_seats diff --git a/man/sd_login_monitor_new.xml b/man/sd_login_monitor_new.xml index 35cb6b368b..2c4d05dcb9 100644 --- a/man/sd_login_monitor_new.xml +++ b/man/sd_login_monitor_new.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_login_monitor_new diff --git a/man/sd_pid_get_session.xml b/man/sd_pid_get_session.xml index 9517795f78..511fcf3ede 100644 --- a/man/sd_pid_get_session.xml +++ b/man/sd_pid_get_session.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_pid_get_session diff --git a/man/sd_readahead.xml b/man/sd_readahead.xml index a1fc6f178f..39e34698d4 100644 --- a/man/sd_readahead.xml +++ b/man/sd_readahead.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_readahead diff --git a/man/sd_seat_get_active.xml b/man/sd_seat_get_active.xml index b1d6d20edf..07e018de13 100644 --- a/man/sd_seat_get_active.xml +++ b/man/sd_seat_get_active.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_seat_get_active diff --git a/man/sd_session_is_active.xml b/man/sd_session_is_active.xml index 1fa7457f78..76f6f9544c 100644 --- a/man/sd_session_is_active.xml +++ b/man/sd_session_is_active.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_session_is_active diff --git a/man/sd_uid_get_state.xml b/man/sd_uid_get_state.xml index b7bc944b14..cc8fc0f5b6 100644 --- a/man/sd_uid_get_state.xml +++ b/man/sd_uid_get_state.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_uid_get_state diff --git a/man/systemd-binfmt.service.xml b/man/systemd-binfmt.service.xml index 1db735a826..748e41780a 100644 --- a/man/systemd-binfmt.service.xml +++ b/man/systemd-binfmt.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-binfmt.service diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml index 0df7c4bcf4..f31d4a0a6c 100644 --- a/man/systemd-bootchart.xml +++ b/man/systemd-bootchart.xml @@ -25,7 +25,7 @@ along with systemd; If not, see . --> - + systemd-bootchart systemd diff --git a/man/systemd-cryptsetup-generator.xml b/man/systemd-cryptsetup-generator.xml index c5f8d2a9d8..292e967bea 100644 --- a/man/systemd-cryptsetup-generator.xml +++ b/man/systemd-cryptsetup-generator.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-cryptsetup-generator diff --git a/man/systemd-cryptsetup@.service.xml b/man/systemd-cryptsetup@.service.xml index abbb9d78f2..6fa2e0cdd0 100644 --- a/man/systemd-cryptsetup@.service.xml +++ b/man/systemd-cryptsetup@.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-cryptsetup@.service diff --git a/man/systemd-hostnamed.service.xml b/man/systemd-hostnamed.service.xml index d9c1911018..fe64a62fbe 100644 --- a/man/systemd-hostnamed.service.xml +++ b/man/systemd-hostnamed.service.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + systemd-hostnamed.service diff --git a/man/systemd-journal-gatewayd.service.xml b/man/systemd-journal-gatewayd.service.xml index 44cd6167f5..0b6fd706a6 100644 --- a/man/systemd-journal-gatewayd.service.xml +++ b/man/systemd-journal-gatewayd.service.xml @@ -21,7 +21,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-journal-gatewayd.service diff --git a/man/systemd-localed.service.xml b/man/systemd-localed.service.xml index 6cefc4265f..1551e6a2ba 100644 --- a/man/systemd-localed.service.xml +++ b/man/systemd-localed.service.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + systemd-localed.service diff --git a/man/systemd-logind.service.xml b/man/systemd-logind.service.xml index 00f34051a3..523a63b4f3 100644 --- a/man/systemd-logind.service.xml +++ b/man/systemd-logind.service.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + systemd-logind.service diff --git a/man/systemd-modules-load.service.xml b/man/systemd-modules-load.service.xml index ea10be2234..1d33b8eec6 100644 --- a/man/systemd-modules-load.service.xml +++ b/man/systemd-modules-load.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-modules-load.service diff --git a/man/systemd-quotacheck.service.xml b/man/systemd-quotacheck.service.xml index 2ffee9158e..ff04e582de 100644 --- a/man/systemd-quotacheck.service.xml +++ b/man/systemd-quotacheck.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-quotacheck.service diff --git a/man/systemd-random-seed-load.service.xml b/man/systemd-random-seed-load.service.xml index 87f563e293..693c008a2d 100644 --- a/man/systemd-random-seed-load.service.xml +++ b/man/systemd-random-seed-load.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-random-seed-load.service diff --git a/man/systemd-readahead-replay.service.xml b/man/systemd-readahead-replay.service.xml index 66d253454b..3d7d9f5424 100644 --- a/man/systemd-readahead-replay.service.xml +++ b/man/systemd-readahead-replay.service.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + systemd-readahead-replay.service diff --git a/man/systemd-timedated.service.xml b/man/systemd-timedated.service.xml index ea2abc5765..c82c0ff439 100644 --- a/man/systemd-timedated.service.xml +++ b/man/systemd-timedated.service.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + systemd-timedated.service diff --git a/man/systemd-user-sessions.service.xml b/man/systemd-user-sessions.service.xml index 9214ec9c35..fc93e2dc2f 100644 --- a/man/systemd-user-sessions.service.xml +++ b/man/systemd-user-sessions.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-user-sessions.service diff --git a/man/systemd-vconsole-setup.service.xml b/man/systemd-vconsole-setup.service.xml index df1b1a16b6..3c50799cbd 100644 --- a/man/systemd-vconsole-setup.service.xml +++ b/man/systemd-vconsole-setup.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-vconsole-setup.service diff --git a/man/timedatectl.xml b/man/timedatectl.xml index 4f34bb7b73..a8e78ae8d3 100644 --- a/man/timedatectl.xml +++ b/man/timedatectl.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + timedatectl diff --git a/man/vconsole.conf.xml b/man/vconsole.conf.xml index 45156b7447..f60b571b72 100644 --- a/man/vconsole.conf.xml +++ b/man/vconsole.conf.xml @@ -22,7 +22,7 @@ along with systemd; If not, see . --> - + vconsole.conf systemd -- cgit v1.2.1 From 874310b7b68c4c0d36ff07397db30a959bb7dae5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 6 Feb 2013 22:49:19 -0500 Subject: systemd: do not remove empty paths from unit lookup path The ability to start a new unit with 'systemctl start ...' should not depend on whether there are other units in the directory. Previously, an additional 'systemctl daemon-reload' would be necessary to tell systemd to update the list of unit lookup paths. --- src/core/manager.c | 14 +++++++------- src/shared/path-lookup.c | 3 --- src/shared/path-util.c | 14 +++++++++----- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/core/manager.c b/src/core/manager.c index b538a9a3ae..25aa1be12f 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -621,14 +621,15 @@ int manager_coldplug(Manager *m) { static void manager_build_unit_path_cache(Manager *m) { char **i; - DIR *d = NULL; + DIR _cleanup_free_ *d = NULL; int r; assert(m); set_free_free(m->unit_path_cache); - if (!(m->unit_path_cache = set_new(string_hash_func, string_compare_func))) { + m->unit_path_cache = set_new(string_hash_func, string_compare_func); + if (!m->unit_path_cache) { log_error("Failed to allocate unit path cache."); return; } @@ -641,7 +642,8 @@ static void manager_build_unit_path_cache(Manager *m) { d = opendir(*i); if (!d) { - log_error("Failed to open directory: %m"); + if (errno != ENOENT) + log_error("Failed to open directory %s: %m", *i); continue; } @@ -657,7 +659,8 @@ static void manager_build_unit_path_cache(Manager *m) { goto fail; } - if ((r = set_put(m->unit_path_cache, p)) < 0) { + r = set_put(m->unit_path_cache, p); + if (r < 0) { free(p); goto fail; } @@ -674,9 +677,6 @@ fail: set_free_free(m->unit_path_cache); m->unit_path_cache = NULL; - - if (d) - closedir(d); } int manager_startup(Manager *m, FILE *serialization, FDSet *fds) { diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c index 6e5529e0c7..8ee9ddc9c6 100644 --- a/src/shared/path-lookup.c +++ b/src/shared/path-lookup.c @@ -316,7 +316,6 @@ int lookup_paths_init( return -ENOMEM; strv_uniq(p->unit_path); - path_strv_remove_empty(p->unit_path); if (!strv_isempty(p->unit_path)) { @@ -379,8 +378,6 @@ int lookup_paths_init( strv_uniq(p->sysvinit_path); strv_uniq(p->sysvrcnd_path); - path_strv_remove_empty(p->sysvinit_path); - path_strv_remove_empty(p->sysvrcnd_path); if (!strv_isempty(p->sysvinit_path)) { diff --git a/src/shared/path-util.c b/src/shared/path-util.c index dd12d3d634..4857971b33 100644 --- a/src/shared/path-util.c +++ b/src/shared/path-util.c @@ -190,13 +190,17 @@ char **path_strv_canonicalize(char **l) { errno = 0; u = canonicalize_file_name(t); - free(t); if (!u) { - if (errno == ENOMEM || !errno) - enomem = true; - - continue; + if (errno == ENOENT) + u = t; + else { + free(t); + if (errno == ENOMEM || !errno) + enomem = true; + + continue; + } } l[k++] = u; -- cgit v1.2.1 From 0783951b931cb2743a43cbfdc37babd76fedd2fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 2 Feb 2013 16:12:33 -0500 Subject: shared: remove now unused function --- src/shared/path-util.c | 20 -------------------- src/shared/path-util.h | 1 - 2 files changed, 21 deletions(-) diff --git a/src/shared/path-util.c b/src/shared/path-util.c index 4857971b33..ae12c05317 100644 --- a/src/shared/path-util.c +++ b/src/shared/path-util.c @@ -214,26 +214,6 @@ char **path_strv_canonicalize(char **l) { return l; } -char **path_strv_remove_empty(char **l) { - char **f, **t; - - if (!l) - return NULL; - - for (f = t = l; *f; f++) { - - if (dir_is_empty(*f) > 0) { - free(*f); - continue; - } - - *(t++) = *f; - } - - *t = NULL; - return l; -} - char *path_kill_slashes(char *path) { char *f, *t; bool slash = false; diff --git a/src/shared/path-util.h b/src/shared/path-util.h index e81821a28f..e37ab9350b 100644 --- a/src/shared/path-util.h +++ b/src/shared/path-util.h @@ -37,7 +37,6 @@ bool path_equal(const char *a, const char *b); char **path_strv_make_absolute_cwd(char **l); char **path_strv_canonicalize(char **l); -char **path_strv_remove_empty(char **l); int path_is_mount_point(const char *path, bool allow_symlink); int path_is_read_only_fs(const char *path); -- cgit v1.2.1 From 7ad94c716d6403233d04c4d37cb14df958c9b65d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 2 Feb 2013 10:36:11 -0500 Subject: systemd: raise level of message about lookup paths This can be pretty important for the user, and is not trivial to figure out in all cases. Also show failing path in error messages. --- src/core/manager.c | 9 ++++++--- src/shared/path-lookup.c | 24 +++++++++--------------- 2 files changed, 15 insertions(+), 18 deletions(-) diff --git a/src/core/manager.c b/src/core/manager.c index 25aa1be12f..c8d7d70dc4 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -2263,7 +2263,8 @@ static int create_generator_dir(Manager *m, char **generator, const char *name) r = mkdir_p_label(p, 0755); if (r < 0) { - log_error("Failed to create generator directory: %s", strerror(-r)); + log_error("Failed to create generator directory %s: %s", + p, strerror(-r)); free(p); return r; } @@ -2274,7 +2275,8 @@ static int create_generator_dir(Manager *m, char **generator, const char *name) if (!mkdtemp(p)) { free(p); - log_error("Failed to create generator directory: %m"); + log_error("Failed to create generator directory %s: %m", + p); return -errno; } } @@ -2313,7 +2315,8 @@ void manager_run_generators(Manager *m) { if (errno == ENOENT) return; - log_error("Failed to enumerate generator directory: %m"); + log_error("Failed to enumerate generator directory %s: %m", + generator_path); return; } diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c index 8ee9ddc9c6..fa4995ceea 100644 --- a/src/shared/path-lookup.c +++ b/src/shared/path-lookup.c @@ -239,7 +239,6 @@ int lookup_paths_init( const char *generator_late) { const char *e; - char *t; assert(p); @@ -318,14 +317,12 @@ int lookup_paths_init( strv_uniq(p->unit_path); if (!strv_isempty(p->unit_path)) { - - t = strv_join(p->unit_path, "\n\t"); + char _cleanup_free_ *t = strv_join(p->unit_path, "\n\t"); if (!t) return -ENOMEM; - log_debug("Looking for unit files in:\n\t%s", t); - free(t); + log_info("Looking for unit files in (higher priority first):\n\t%s", t); } else { - log_debug("Ignoring unit files."); + log_info("Ignoring unit files."); strv_free(p->unit_path); p->unit_path = NULL; } @@ -380,33 +377,30 @@ int lookup_paths_init( strv_uniq(p->sysvrcnd_path); if (!strv_isempty(p->sysvinit_path)) { - - t = strv_join(p->sysvinit_path, "\n\t"); + char _cleanup_free_ *t = strv_join(p->sysvinit_path, "\n\t"); if (!t) return -ENOMEM; - log_debug("Looking for SysV init scripts in:\n\t%s", t); - free(t); + log_info("Looking for SysV init scripts in:\n\t%s", t); } else { - log_debug("Ignoring SysV init scripts."); + log_info("Ignoring SysV init scripts."); strv_free(p->sysvinit_path); p->sysvinit_path = NULL; } if (!strv_isempty(p->sysvrcnd_path)) { - - t = strv_join(p->sysvrcnd_path, "\n\t"); + char _cleanup_free_ *t = + strv_join(p->sysvrcnd_path, "\n\t"); if (!t) return -ENOMEM; log_debug("Looking for SysV rcN.d links in:\n\t%s", t); - free(t); } else { log_debug("Ignoring SysV rcN.d links."); strv_free(p->sysvrcnd_path); p->sysvrcnd_path = NULL; } #else - log_debug("Disabled SysV init scripts and rcN.d links support"); + log_info("SysV init scripts and rcN.d links support disabled"); #endif } -- cgit v1.2.1 From c78ab91132aab9193f3c17a9a206f8825ff4be84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 5 Feb 2013 10:31:20 -0500 Subject: build-sys: substitute strings in systemd.unit(5) Makefile.am is updated to deal with .xml.in sources. Nothing in the output is really changed yet, this is just preparation. --- Makefile-man.am | 3 + Makefile.am | 2 +- make-man-rules.py | 18 +- man/.gitignore | 1 + man/systemd.unit.xml | 1143 ----------------------------------------------- man/systemd.unit.xml.in | 1143 +++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 1162 insertions(+), 1148 deletions(-) delete mode 100644 man/systemd.unit.xml create mode 100644 man/systemd.unit.xml.in diff --git a/Makefile-man.am b/Makefile-man.am index d54d67cf11..ee9a952765 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -477,3 +477,6 @@ MANPAGES_ALIAS += \ # endif + +CLEANFILES += \ + man/systemd.unit.xml diff --git a/Makefile.am b/Makefile.am index f73e8a6e74..6e5f5af9ac 100644 --- a/Makefile.am +++ b/Makefile.am @@ -503,7 +503,7 @@ CLEANFILES += \ if HAVE_PYTHON NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES)) -XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml) +XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml $(top_srcdir)/man/*.xml.in) update-man-list: make-man-rules.py $(XML_GLOB) $(AM_V_GEN)$(PYTHON) $^ > $(top_srcdir)/Makefile-man.tmp $(AM_V_at)mv $(top_srcdir)/Makefile-man.tmp $(top_srcdir)/Makefile-man.am diff --git a/make-man-rules.py b/make-man-rules.py index b88b43ac3d..9c50c8dec2 100644 --- a/make-man-rules.py +++ b/make-man-rules.py @@ -44,6 +44,12 @@ HEADER = '''\ ''' +CLEANFILES = '''\ + +CLEANFILES += \\ + {cleanfiles} +''' + def man(page, number): return 'man/{}.{}'.format(page, number) @@ -76,7 +82,7 @@ def create_rules(*xml_files): def mjoin(files): return ' \\\n\t'.join(sorted(files) or '#') -def make_makefile(rules): +def make_makefile(rules, cleanfiles): return HEADER + '\n'.join( (CONDITIONAL if conditional else SECTION).format( manpages=mjoin(set(rulegroup.values())), @@ -85,8 +91,12 @@ def make_makefile(rules): for k,v in sorted(rulegroup.items()) if k != v), conditional=conditional) - for conditional,rulegroup in sorted(rules.items())) + for conditional,rulegroup in sorted(rules.items())) + \ + CLEANFILES.format(cleanfiles=mjoin(cleanfiles)) if __name__ == '__main__': - rules = create_rules(*sys.argv[1:]) - print(make_makefile(rules), end='') + sources = set(sys.argv[1:]) + spares = set([source for source in sources + if source + '.in' in sources]) + rules = create_rules(*(sources - spares)) + print(make_makefile(rules, spares), end='') diff --git a/man/.gitignore b/man/.gitignore index 9c5a7db1cc..18767949c1 100644 --- a/man/.gitignore +++ b/man/.gitignore @@ -1,3 +1,4 @@ /systemd.directives.xml /systemd.index.xml +/systemd.unit.xml /*.[13578] diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml deleted file mode 100644 index 7c3a6c75f8..0000000000 --- a/man/systemd.unit.xml +++ /dev/null @@ -1,1143 +0,0 @@ - - - - - - - - - systemd.unit - systemd - - - - Developer - Lennart - Poettering - lennart@poettering.net - - - - - - systemd.unit - 5 - - - - systemd.unit - Unit configuration - - - - systemd.service, - systemd.socket, - systemd.device, - systemd.mount, - systemd.automount, - systemd.swap, - systemd.target, - systemd.path, - systemd.timer, - systemd.snapshot - - - - Description - - A unit configuration file encodes information - about a service, a socket, a device, a mount point, an - automount point, a swap file or partition, a start-up - target, a file system path or a timer controlled and - supervised by - systemd1. The - syntax is inspired by XDG - Desktop Entry Specification .desktop files, which are in turn - inspired by Microsoft Windows - .ini files. - - This man page lists the common configuration - options of all the unit types. These options need to - be configured in the [Unit] or [Install] - sections of the unit files. - - In addition to the generic [Unit] and [Install] - sections described here, each unit may have a - type-specific section, e.g. [Service] for a service - unit. See the respective man pages for more - information. - - Unit files may contain additional options on top - of those listed here. If systemd encounters an unknown - option it will write a warning log message but - continue loading the unit. If an option is prefixed - with it is ignored completely by - systemd. Applications may use this to include - additional information in the unit files. - - Boolean arguments used in unit files can be - written in various formats. For positive settings the - strings , , - and are - equivalent. For negative settings the strings - , , - and are - equivalent. - - Time span values encoded in unit files can be - written in various formats. A stand-alone number - specifies a time in seconds. If suffixed with a time - unit, the unit is honored. A concatenation of multiple - values with units is supported, in which case the - values are added up. Example: "50" refers to 50 - seconds; "2min 200ms" refers to 2 minutes plus 200 - milliseconds, i.e. 120200ms. The following time units - are understood: s, min, h, d, w, ms, us. For details - see - systemd.time7. - - Empty lines and lines starting with # or ; are - ignored. This may be used for commenting. Lines ending - in a backslash are concatenated with the following - line while reading and the backslash is replaced by a - space character. This may be used to wrap long lines. - - Along with a unit file - foo.service the directory - foo.service.wants/ may exist. All - unit files symlinked from such a directory are - implicitly added as dependencies of type - Wanted= to the unit. This is useful - to hook units into the start-up of other units, - without having to modify their unit files. For details - about the semantics of Wanted= see - below. The preferred way to create symlinks in the - .wants/ directory of a unit file - is with the enable command of the - systemctl1 - tool which reads information from the [Install] - section of unit files (see below). A similar - functionality exists for Requires= - type dependencies as well, the directory suffix is - .requires/ in this case. - - Along with a unit file - foo.service a directory - foo.service.d/ may exist. All - files with the suffix .conf from - this directory will be parsed after the file itself is - parsed. This is useful to alter or add configuration - settings to a unit, without having to modify their - unit files. Make sure that the file that is included - has the appropriate section headers before any - directive. - - If a line starts with - followed by a file name, the specified file will be - parsed at this point. Make sure that the file that is - included has the appropriate section headers before - any directives. - - Note that while systemd offers a flexible - dependency system between units it is recommended to - use this functionality only sparingly and instead rely - on techniques such as bus-based or socket-based - activation which make dependencies implicit, resulting - in a both simpler and more flexible system. - - Some unit names reflect paths existing in the - file system name space. Example: a device unit - dev-sda.device refers to a device - with the device node /dev/sda in - the file system namespace. If this applies a special - way to escape the path name is used, so that the - result is usable as part of a file name. Basically, - given a path, "/" is replaced by "-", and all - unprintable characters and the "-" are replaced by - C-style "\x20" escapes. The root directory "/" is - encoded as single dash, while otherwise the initial - and ending "/" is removed from all paths during - transformation. This escaping is reversible. - - Optionally, units may be instantiated from a - template file at runtime. This allows creation of - multiple units from a single configuration file. If - systemd looks for a unit configuration file it will - first search for the literal unit name in the - filesystem. If that yields no success and the unit - name contains an @ character, systemd will look for a - unit template that shares the same name but with the - instance string (i.e. the part between the @ character - and the suffix) removed. Example: if a service - getty@tty3.service is requested - and no file by that name is found, systemd will look - for getty@.service and - instantiate a service from that configuration file if - it is found. - - To refer to the instance string from - within the configuration file you may use the special - %i specifier in many of the - configuration options. See below for details. - - If a unit file is empty (i.e. has the file size - 0) or is symlinked to /dev/null - its configuration will not be loaded and it appears - with a load state of masked, and - cannot be activated. Use this as an effective way to - fully disable a unit, making it impossible to start it - even manually. - - The unit file format is covered by the - Interface - Stability Promise. - - - - - Options - - Unit file may include a [Unit] section, which - carries generic information about the unit that is not - dependent on the type of unit: - - - - - Description= - A free-form string - describing the unit. This is intended - for use in UIs to show descriptive - information along with the unit - name. - - - - Documentation= - A space separated list - of URIs referencing documentation for - this unit or its - configuration. Accepted are only URIs - of the types - http://, - https://, - file:, - info:, - man:. For more - information about the syntax of these - URIs see - uri7. The - URIs should be listed in order of - relevance, starting with the most - relevant. It is a good idea to first - reference documentation that explains - what the unit's purpose is, followed - by how it is configured, followed by - any other related documentation. This - option may be specified more than once - in which case the specified list of - URIs is merged. If the empty string is - assigned to this option the list is - reset and all prior assignments will - have no effect. - - - - Requires= - - Configures requirement - dependencies on other units. If this - unit gets activated, the units listed - here will be activated as well. If one - of the other units gets deactivated or - its activation fails, this unit will - be deactivated. This option may be - specified more than once, in which - case requirement dependencies for all - listed names are created. Note that - requirement dependencies do not - influence the order in which services - are started or stopped. This has to be - configured independently with the - After= or - Before= options. If - a unit - foo.service - requires a unit - bar.service as - configured with - Requires= and no - ordering is configured with - After= or - Before=, then both - units will be started simultaneously - and without any delay between them if - foo.service is - activated. Often it is a better choice - to use Wants= - instead of - Requires= in order - to achieve a system that is more - robust when dealing with failing - services. - - Note that dependencies of this - type may also be configured outside of - the unit configuration file by - adding a symlink to a - .requires/ directory - accompanying the unit file. For - details see above. - - - - RequiresOverridable= - - Similar to - Requires=. - Dependencies listed in - RequiresOverridable= - which cannot be fulfilled or fail to - start are ignored if the startup was - explicitly requested by the user. If - the start-up was pulled in indirectly - by some dependency or automatic - start-up of units that is not - requested by the user this dependency - must be fulfilled and otherwise the - transaction fails. Hence, this option - may be used to configure dependencies - that are normally honored unless the - user explicitly starts up the unit, in - which case whether they failed or not - is irrelevant. - - - - Requisite= - RequisiteOverridable= - - Similar to - Requires= - and RequiresOverridable=, respectively. However, - if a unit listed here is not started - already it will not be started and the - transaction fails - immediately. - - - - Wants= - - A weaker version of - Requires=. A unit - listed in this option will be started - if the configuring unit is. However, - if the listed unit fails to start up - or cannot be added to the transaction - this has no impact on the validity of - the transaction as a whole. This is - the recommended way to hook start-up - of one unit to the start-up of another - unit. - - Note that dependencies of this - type may also be configured outside of - the unit configuration file by - adding a symlink to a - .wants/ directory - accompanying the unit file. For - details see above. - - - - BindsTo= - - Configures requirement - dependencies, very similar in style to - Requires=, however - in addition to this behavior it also - declares that this unit is stopped - when any of the units listed suddenly - disappears. Units can suddenly, - unexpectedly disappear if a service - terminates on its own choice, a device - is unplugged or a mount point - unmounted without involvement of - systemd. - - - - PartOf= - - Configures dependencies - similar to Requires=, - but limited to stopping and restarting - of units. When systemd stops or restarts - the units listed here, the action is - propagated to this unit. - Note that this is a one way dependency - - changes to this unit do not affect the - listed units. - - - - - Conflicts= - - Configures negative - requirement dependencies. If a unit - has a - Conflicts= setting - on another unit, starting the former - will stop the latter and vice - versa. Note that this setting is - independent of and orthogonal to the - After= and - Before= ordering - dependencies. - - If a unit A that conflicts with - a unit B is scheduled to be started at - the same time as B, the transaction - will either fail (in case both are - required part of the transaction) or - be modified to be fixed (in case one - or both jobs are not a required part - of the transaction). In the latter - case the job that is not the required - will be removed, or in case both are - not required the unit that conflicts - will be started and the unit that is - conflicted is - stopped. - - - - Before= - After= - - Configures ordering - dependencies between units. If a unit - foo.service - contains a setting - - and both units are being started, - bar.service's - start-up is delayed until - foo.service is - started up. Note that this setting is - independent of and orthogonal to the - requirement dependencies as configured - by Requires=. It is - a common pattern to include a unit - name in both the - After= and - Requires= option in - which case the unit listed will be - started before the unit that is - configured with these options. This - option may be specified more than - once, in which case ordering - dependencies for all listed names are - created. After= is - the inverse of - Before=, i.e. while - After= ensures that - the configured unit is started after - the listed unit finished starting up, - Before= ensures the - opposite, i.e. that the configured - unit is fully started up before the - listed unit is started. Note that when - two units with an ordering dependency - between them are shut down, the - inverse of the start-up order is - applied. i.e. if a unit is configured - with After= on - another unit, the former is stopped - before the latter if both are shut - down. If one unit with an ordering - dependency on another unit is shut - down while the latter is started up, - the shut down is ordered before the - start-up regardless whether the - ordering dependency is actually of - type After= or - Before=. If two - units have no ordering dependencies - between them they are shut down - or started up simultaneously, and - no ordering takes - place. - - - - OnFailure= - - Lists one or more - units that are activated when this - unit enters the - 'failed' - state. - - - - PropagatesReloadTo= - ReloadPropagatedFrom= - - Lists one or more - units where reload requests on the - unit will be propagated to/on the - other unit will be propagated - from. Issuing a reload request on a - unit will automatically also enqueue a - reload request on all units that the - reload request shall be propagated to - via these two - settings. - - - - RequiresMountsFor= - - Takes a space - separated list of absolute paths. Automatically - adds dependencies of type - Requires= and - After= for all - mount units required to access the - specified path. - - - - OnFailureIsolate= - - Takes a boolean - argument. If the - unit listed in - OnFailure= will be - enqueued in isolation mode, i.e. all - units that are not its dependency will - be stopped. If this is set only a - single unit may be listed in - OnFailure=. Defaults - to - . - - - - IgnoreOnIsolate= - - Takes a boolean - argument. If - this unit will not be stopped when - isolating another unit. Defaults to - . - - - - IgnoreOnSnapshot= - - Takes a boolean - argument. If - this unit will not be included in - snapshots. Defaults to - for device and - snapshot units, - for the others. - - - - StopWhenUnneeded= - - Takes a boolean - argument. If - this unit will be stopped when it is - no longer used. Note that in order to - minimize the work to be executed, - systemd will not stop units by default - unless they are conflicting with other - units, or the user explicitly - requested their shut down. If this - option is set, a unit will be - automatically cleaned up if no other - active unit requires it. Defaults to - . - - - - RefuseManualStart= - RefuseManualStop= - - Takes a boolean - argument. If - this unit can only be activated - or deactivated indirectly. In - this case explicit start-up - or termination requested by the - user is denied, however if it is - started or stopped as a - dependency of another unit, start-up - or termination will succeed. This - is mostly a safety feature to ensure - that the user does not accidentally - activate units that are not intended - to be activated explicitly, and not - accidentally deactivate units that are - not intended to be deactivated. - These options default to - . - - - - AllowIsolate= - - Takes a boolean - argument. If - this unit may be used with the - systemctl isolate - command. Otherwise this will be - refused. It probably is a good idea to - leave this disabled except for target - units that shall be used similar to - runlevels in SysV init systems, just - as a precaution to avoid unusable - system states. This option defaults to - . - - - - DefaultDependencies= - - Takes a boolean - argument. If - (the default), a few default - dependencies will implicitly be - created for the unit. The actual - dependencies created depend on the - unit type. For example, for service - units, these dependencies ensure that - the service is started only after - basic system initialization is - completed and is properly terminated on - system shutdown. See the respective - man pages for details. Generally, only - services involved with early boot or - late shutdown should set this option - to . It is - highly recommended to leave this - option enabled for the majority of - common units. If set to - this option - does not disable all implicit - dependencies, just non-essential - ones. - - - - JobTimeoutSec= - - When clients are - waiting for a job of this unit to - complete, time out after the specified - time. If this time limit is reached - the job will be cancelled, the unit - however will not change state or even - enter the 'failed' - mode. This value defaults to 0 (job - timeouts disabled), except for device - units. NB: this timeout is independent - from any unit-specific timeout (for - example, the timeout set with - Timeout= in service - units) as the job timeout has no - effect on the unit itself, only on the - job that might be pending for it. Or - in other words: unit-specific timeouts - are useful to abort unit state - changes, and revert them. The job - timeout set with this option however - is useful to abort only the job - waiting for the unit state to - change. - - - - ConditionPathExists= - ConditionPathExistsGlob= - ConditionPathIsDirectory= - ConditionPathIsSymbolicLink= - ConditionPathIsMountPoint= - ConditionPathIsReadWrite= - ConditionDirectoryNotEmpty= - ConditionFileNotEmpty= - ConditionFileIsExecutable= - ConditionKernelCommandLine= - ConditionVirtualization= - ConditionSecurity= - ConditionCapability= - ConditionHost= - ConditionACPower= - ConditionNull= - - Before starting a unit - verify that the specified condition is - true. If it is not true the starting - of the unit will be skipped, however - all ordering dependencies of it are - still respected. A failing condition - will not result in the unit being - moved into a failure state. The - condition is checked at the time the - queued start job is to be - executed. - - With - ConditionPathExists= - a file existence condition is - checked before a unit is started. If - the specified absolute path name does - not exist the condition will - fail. If the absolute path name passed - to - ConditionPathExists= - is prefixed with an exclamation mark - ('!'), the test is negated, and the unit - is only started if the path does not - exist. - - ConditionPathExistsGlob= - is similar to - ConditionPathExists=, - but checks for the existence of at - least one file or directory matching - the specified globbing pattern. - - ConditionPathIsDirectory= - is similar to - ConditionPathExists= - but verifies whether a certain path - exists and is a - directory. - - ConditionPathIsSymbolicLink= - is similar to - ConditionPathExists= - but verifies whether a certain path - exists and is a symbolic - link. - - ConditionPathIsMountPoint= - is similar to - ConditionPathExists= - but verifies whether a certain path - exists and is a mount - point. - - ConditionPathIsReadWrite= - is similar to - ConditionPathExists= - but verifies whether the underlying - file system is readable and writable - (i.e. not mounted - read-only). - - ConditionDirectoryNotEmpty= - is similar to - ConditionPathExists= - but verifies whether a certain path - exists and is a non-empty - directory. - - ConditionFileNotEmpty= - is similar to - ConditionPathExists= - but verifies whether a certain path - exists and refers to a regular file - with a non-zero size. - - ConditionFileIsExecutable= - is similar to - ConditionPathExists= - but verifies whether a certain path - exists, is a regular file and marked - executable. - - Similar, - ConditionKernelCommandLine= - may be used to check whether a - specific kernel command line option is - set (or if prefixed with the - exclamation mark unset). The argument - must either be a single word, or an - assignment (i.e. two words, separated - '='). In the former - case the kernel command line is - searched for the word appearing as is, - or as left hand side of an - assignment. In the latter case the - exact assignment is looked for with - right and left hand side - matching. - - ConditionVirtualization= - may be used to check whether the - system is executed in a virtualized - environment and optionally test - whether it is a specific - implementation. Takes either boolean - value to check if being executed in - any virtualized environment, or one of - vm and - container to test - against a generic type of - virtualization solution, or one of - qemu, - kvm, - vmware, - microsoft, - oracle, - xen, - bochs, - chroot, - openvz, - lxc, - lxc-libvirt, - systemd-nspawn to - test against a specific - implementation. If multiple - virtualization technologies are nested - only the innermost is considered. The - test may be negated by prepending an - exclamation mark. - - ConditionSecurity= - may be used to check whether the given - security module is enabled on the - system. Currently the only recognized - value is selinux. - The test may be negated by prepending - an exclamation - mark. - - ConditionCapability= - may be used to check whether the given - capability exists in the capability - bounding set of the service manager - (i.e. this does not check whether - capability is actually available in - the permitted or effective sets, see - capabilities7 - for details). Pass a capability name - such as CAP_MKNOD, - possibly prefixed with an exclamation - mark to negate the check. - - ConditionHost= - may be used to match against the - host name or machine ID of the - host. This either takes a host name - string (optionally with shell style - globs) which is tested against the - locally set host name as returned by - gethostname2, - or a machine ID formatted as string - (see - machine-id5). - The test may be negated by prepending - an exclamation mark. - - ConditionACPower= - may be used to check whether the - system has AC power, or is exclusively - battery powered at the time of - activation of the unit. This takes a - boolean argument. If set to - true the condition - will hold only if at least one AC - connector of the system is connected - to a power source, or if no AC - connectors are known. Conversely, if - set to false the - condition will hold only if there is - at least one AC connector known and - all AC connectors are disconnected - from a power source. - - Finally, - ConditionNull= may - be used to add a constant condition - check value to the unit. It takes a - boolean argument. If set to - false the condition - will always fail, otherwise - succeed. - - If multiple conditions are - specified the unit will be executed if - all of them apply (i.e. a logical AND - is applied). Condition checks can be - prefixed with a pipe symbol (|) in - which case a condition becomes a - triggering condition. If at least one - triggering condition is defined for a - unit then the unit will be executed if - at least one of the triggering - conditions apply and all of the - non-triggering conditions. If you - prefix an argument with the pipe - symbol and an exclamation mark the - pipe symbol must be passed first, the - exclamation second. Except for - ConditionPathIsSymbolicLink=, - all path checks follow symlinks. If - any of these options is assigned the - empty string the list of conditions is - reset completely, all previous - condition settings (of any kind) will - have no effect. - - - - SourcePath= - A path to a - configuration file this unit has been - generated from. This is primarily - useful for implementation of generator - tools that convert configuration from - an external configuration file format - into native unit files. Thus - functionality should not be used in - normal units. - - - - Unit file may include a [Install] section, which - carries installation information for the unit. This - section is not interpreted by - systemd1 - during runtime. It is used exclusively by the - enable and - disable commands of the - systemctl1 - tool during installation of a unit: - - - - Alias= - - Additional names this - unit shall be installed under. The - names listed here must have the same - suffix (i.e. type) as the unit file - name. This option may be specified - more than once, in which case all - listed names are used. At installation - time, - systemctl enable - will create symlinks from these names - to the unit file name. - - - - WantedBy= - RequiredBy= - - Installs a symlink in - the .wants/ - or .requires/ - subdirectory for a unit, respectively. This has the - effect that when the listed unit name - is activated the unit listing it is - activated - too. WantedBy=foo.service - in a service - bar.service is - mostly equivalent to - Alias=foo.service.wants/bar.service - in the same file. - - - - Also= - - Additional units to - install when this unit is - installed. If the user requests - installation of a unit with this - option configured, - systemctl enable - will automatically install units - listed in this option as - well. - - - - The following specifiers are interpreted in the - Install section: %n, %N, %p, %i, %U, %u, %m, %H, %b. - For their meaning see the next section. - - - - - Specifiers - - Many settings resolve specifiers which may be - used to write generic unit files referring to runtime - or unit parameters that are replaced when the unit - files are loaded. The following specifiers are - understood: - - - Specifiers available in unit files - - - - - - - Specifier - Meaning - Details - - - - - %n - Full unit name - - - - %N - Unescaped full unit name - - - - %p - Prefix name - For instantiated units this refers to the string before the @. For non-instantiated units this refers to to the name of the unit with the type suffix removed. - - - %P - Unescaped prefix name - - - - %i - Instance name - For instantiated units: this is the string between the @ character and the suffix. - - - %I - Unescaped instance name - - - - %f - Unescaped file name - This is either the unescaped instance name (if applicable) with / prepended (if applicable), or the prefix name similarly prepended with /. - - - %c - Control group path of the unit - - - - %r - Root control group path of systemd - - - - %R - Parent directory of the root control group path of systemd - - - - %t - Runtime socket dir - This is either /run (for the system manager) or $XDG_RUNTIME_DIR (for user managers). - - - %u - User name - This is the name of the configured user of the unit, or (if none is set) the user running the systemd instance. - - - %U - User UID - This is the UID of the configured user of the unit, or (if none is set) the user running the systemd instance. - - - %h - User home directory - This is the home directory of the configured user of the unit, or (if none is set) the user running the systemd instance. - - - %s - User shell - This is the shell of the configured user of the unit, or (if none is set) the user running the systemd instance. - - - %m - Machine ID - The machine ID of the running system, formatted as string. See machine-id5 for more information. - - - %b - Boot ID - The boot ID of the running system, formatted as string. See random4 for more information. - - - %H - Host name - The host name of the running system. - - - -
-
- - - See Also - - systemd1, - systemctl8, - systemd.special7, - systemd.service5, - systemd.socket5, - systemd.device5, - systemd.mount5, - systemd.automount5, - systemd.swap5, - systemd.target5, - systemd.path5, - systemd.timer5, - systemd.snapshot5, - systemd.time7, - capabilities7, - systemd.directives7 - - - -
diff --git a/man/systemd.unit.xml.in b/man/systemd.unit.xml.in new file mode 100644 index 0000000000..7c3a6c75f8 --- /dev/null +++ b/man/systemd.unit.xml.in @@ -0,0 +1,1143 @@ + + + + + + + + + systemd.unit + systemd + + + + Developer + Lennart + Poettering + lennart@poettering.net + + + + + + systemd.unit + 5 + + + + systemd.unit + Unit configuration + + + + systemd.service, + systemd.socket, + systemd.device, + systemd.mount, + systemd.automount, + systemd.swap, + systemd.target, + systemd.path, + systemd.timer, + systemd.snapshot + + + + Description + + A unit configuration file encodes information + about a service, a socket, a device, a mount point, an + automount point, a swap file or partition, a start-up + target, a file system path or a timer controlled and + supervised by + systemd1. The + syntax is inspired by XDG + Desktop Entry Specification .desktop files, which are in turn + inspired by Microsoft Windows + .ini files. + + This man page lists the common configuration + options of all the unit types. These options need to + be configured in the [Unit] or [Install] + sections of the unit files. + + In addition to the generic [Unit] and [Install] + sections described here, each unit may have a + type-specific section, e.g. [Service] for a service + unit. See the respective man pages for more + information. + + Unit files may contain additional options on top + of those listed here. If systemd encounters an unknown + option it will write a warning log message but + continue loading the unit. If an option is prefixed + with it is ignored completely by + systemd. Applications may use this to include + additional information in the unit files. + + Boolean arguments used in unit files can be + written in various formats. For positive settings the + strings , , + and are + equivalent. For negative settings the strings + , , + and are + equivalent. + + Time span values encoded in unit files can be + written in various formats. A stand-alone number + specifies a time in seconds. If suffixed with a time + unit, the unit is honored. A concatenation of multiple + values with units is supported, in which case the + values are added up. Example: "50" refers to 50 + seconds; "2min 200ms" refers to 2 minutes plus 200 + milliseconds, i.e. 120200ms. The following time units + are understood: s, min, h, d, w, ms, us. For details + see + systemd.time7. + + Empty lines and lines starting with # or ; are + ignored. This may be used for commenting. Lines ending + in a backslash are concatenated with the following + line while reading and the backslash is replaced by a + space character. This may be used to wrap long lines. + + Along with a unit file + foo.service the directory + foo.service.wants/ may exist. All + unit files symlinked from such a directory are + implicitly added as dependencies of type + Wanted= to the unit. This is useful + to hook units into the start-up of other units, + without having to modify their unit files. For details + about the semantics of Wanted= see + below. The preferred way to create symlinks in the + .wants/ directory of a unit file + is with the enable command of the + systemctl1 + tool which reads information from the [Install] + section of unit files (see below). A similar + functionality exists for Requires= + type dependencies as well, the directory suffix is + .requires/ in this case. + + Along with a unit file + foo.service a directory + foo.service.d/ may exist. All + files with the suffix .conf from + this directory will be parsed after the file itself is + parsed. This is useful to alter or add configuration + settings to a unit, without having to modify their + unit files. Make sure that the file that is included + has the appropriate section headers before any + directive. + + If a line starts with + followed by a file name, the specified file will be + parsed at this point. Make sure that the file that is + included has the appropriate section headers before + any directives. + + Note that while systemd offers a flexible + dependency system between units it is recommended to + use this functionality only sparingly and instead rely + on techniques such as bus-based or socket-based + activation which make dependencies implicit, resulting + in a both simpler and more flexible system. + + Some unit names reflect paths existing in the + file system name space. Example: a device unit + dev-sda.device refers to a device + with the device node /dev/sda in + the file system namespace. If this applies a special + way to escape the path name is used, so that the + result is usable as part of a file name. Basically, + given a path, "/" is replaced by "-", and all + unprintable characters and the "-" are replaced by + C-style "\x20" escapes. The root directory "/" is + encoded as single dash, while otherwise the initial + and ending "/" is removed from all paths during + transformation. This escaping is reversible. + + Optionally, units may be instantiated from a + template file at runtime. This allows creation of + multiple units from a single configuration file. If + systemd looks for a unit configuration file it will + first search for the literal unit name in the + filesystem. If that yields no success and the unit + name contains an @ character, systemd will look for a + unit template that shares the same name but with the + instance string (i.e. the part between the @ character + and the suffix) removed. Example: if a service + getty@tty3.service is requested + and no file by that name is found, systemd will look + for getty@.service and + instantiate a service from that configuration file if + it is found. + + To refer to the instance string from + within the configuration file you may use the special + %i specifier in many of the + configuration options. See below for details. + + If a unit file is empty (i.e. has the file size + 0) or is symlinked to /dev/null + its configuration will not be loaded and it appears + with a load state of masked, and + cannot be activated. Use this as an effective way to + fully disable a unit, making it impossible to start it + even manually. + + The unit file format is covered by the + Interface + Stability Promise. + + + + + Options + + Unit file may include a [Unit] section, which + carries generic information about the unit that is not + dependent on the type of unit: + + + + + Description= + A free-form string + describing the unit. This is intended + for use in UIs to show descriptive + information along with the unit + name. + + + + Documentation= + A space separated list + of URIs referencing documentation for + this unit or its + configuration. Accepted are only URIs + of the types + http://, + https://, + file:, + info:, + man:. For more + information about the syntax of these + URIs see + uri7. The + URIs should be listed in order of + relevance, starting with the most + relevant. It is a good idea to first + reference documentation that explains + what the unit's purpose is, followed + by how it is configured, followed by + any other related documentation. This + option may be specified more than once + in which case the specified list of + URIs is merged. If the empty string is + assigned to this option the list is + reset and all prior assignments will + have no effect. + + + + Requires= + + Configures requirement + dependencies on other units. If this + unit gets activated, the units listed + here will be activated as well. If one + of the other units gets deactivated or + its activation fails, this unit will + be deactivated. This option may be + specified more than once, in which + case requirement dependencies for all + listed names are created. Note that + requirement dependencies do not + influence the order in which services + are started or stopped. This has to be + configured independently with the + After= or + Before= options. If + a unit + foo.service + requires a unit + bar.service as + configured with + Requires= and no + ordering is configured with + After= or + Before=, then both + units will be started simultaneously + and without any delay between them if + foo.service is + activated. Often it is a better choice + to use Wants= + instead of + Requires= in order + to achieve a system that is more + robust when dealing with failing + services. + + Note that dependencies of this + type may also be configured outside of + the unit configuration file by + adding a symlink to a + .requires/ directory + accompanying the unit file. For + details see above. + + + + RequiresOverridable= + + Similar to + Requires=. + Dependencies listed in + RequiresOverridable= + which cannot be fulfilled or fail to + start are ignored if the startup was + explicitly requested by the user. If + the start-up was pulled in indirectly + by some dependency or automatic + start-up of units that is not + requested by the user this dependency + must be fulfilled and otherwise the + transaction fails. Hence, this option + may be used to configure dependencies + that are normally honored unless the + user explicitly starts up the unit, in + which case whether they failed or not + is irrelevant. + + + + Requisite= + RequisiteOverridable= + + Similar to + Requires= + and RequiresOverridable=, respectively. However, + if a unit listed here is not started + already it will not be started and the + transaction fails + immediately. + + + + Wants= + + A weaker version of + Requires=. A unit + listed in this option will be started + if the configuring unit is. However, + if the listed unit fails to start up + or cannot be added to the transaction + this has no impact on the validity of + the transaction as a whole. This is + the recommended way to hook start-up + of one unit to the start-up of another + unit. + + Note that dependencies of this + type may also be configured outside of + the unit configuration file by + adding a symlink to a + .wants/ directory + accompanying the unit file. For + details see above. + + + + BindsTo= + + Configures requirement + dependencies, very similar in style to + Requires=, however + in addition to this behavior it also + declares that this unit is stopped + when any of the units listed suddenly + disappears. Units can suddenly, + unexpectedly disappear if a service + terminates on its own choice, a device + is unplugged or a mount point + unmounted without involvement of + systemd. + + + + PartOf= + + Configures dependencies + similar to Requires=, + but limited to stopping and restarting + of units. When systemd stops or restarts + the units listed here, the action is + propagated to this unit. + Note that this is a one way dependency - + changes to this unit do not affect the + listed units. + + + + + Conflicts= + + Configures negative + requirement dependencies. If a unit + has a + Conflicts= setting + on another unit, starting the former + will stop the latter and vice + versa. Note that this setting is + independent of and orthogonal to the + After= and + Before= ordering + dependencies. + + If a unit A that conflicts with + a unit B is scheduled to be started at + the same time as B, the transaction + will either fail (in case both are + required part of the transaction) or + be modified to be fixed (in case one + or both jobs are not a required part + of the transaction). In the latter + case the job that is not the required + will be removed, or in case both are + not required the unit that conflicts + will be started and the unit that is + conflicted is + stopped. + + + + Before= + After= + + Configures ordering + dependencies between units. If a unit + foo.service + contains a setting + + and both units are being started, + bar.service's + start-up is delayed until + foo.service is + started up. Note that this setting is + independent of and orthogonal to the + requirement dependencies as configured + by Requires=. It is + a common pattern to include a unit + name in both the + After= and + Requires= option in + which case the unit listed will be + started before the unit that is + configured with these options. This + option may be specified more than + once, in which case ordering + dependencies for all listed names are + created. After= is + the inverse of + Before=, i.e. while + After= ensures that + the configured unit is started after + the listed unit finished starting up, + Before= ensures the + opposite, i.e. that the configured + unit is fully started up before the + listed unit is started. Note that when + two units with an ordering dependency + between them are shut down, the + inverse of the start-up order is + applied. i.e. if a unit is configured + with After= on + another unit, the former is stopped + before the latter if both are shut + down. If one unit with an ordering + dependency on another unit is shut + down while the latter is started up, + the shut down is ordered before the + start-up regardless whether the + ordering dependency is actually of + type After= or + Before=. If two + units have no ordering dependencies + between them they are shut down + or started up simultaneously, and + no ordering takes + place. + + + + OnFailure= + + Lists one or more + units that are activated when this + unit enters the + 'failed' + state. + + + + PropagatesReloadTo= + ReloadPropagatedFrom= + + Lists one or more + units where reload requests on the + unit will be propagated to/on the + other unit will be propagated + from. Issuing a reload request on a + unit will automatically also enqueue a + reload request on all units that the + reload request shall be propagated to + via these two + settings. + + + + RequiresMountsFor= + + Takes a space + separated list of absolute paths. Automatically + adds dependencies of type + Requires= and + After= for all + mount units required to access the + specified path. + + + + OnFailureIsolate= + + Takes a boolean + argument. If the + unit listed in + OnFailure= will be + enqueued in isolation mode, i.e. all + units that are not its dependency will + be stopped. If this is set only a + single unit may be listed in + OnFailure=. Defaults + to + . + + + + IgnoreOnIsolate= + + Takes a boolean + argument. If + this unit will not be stopped when + isolating another unit. Defaults to + . + + + + IgnoreOnSnapshot= + + Takes a boolean + argument. If + this unit will not be included in + snapshots. Defaults to + for device and + snapshot units, + for the others. + + + + StopWhenUnneeded= + + Takes a boolean + argument. If + this unit will be stopped when it is + no longer used. Note that in order to + minimize the work to be executed, + systemd will not stop units by default + unless they are conflicting with other + units, or the user explicitly + requested their shut down. If this + option is set, a unit will be + automatically cleaned up if no other + active unit requires it. Defaults to + . + + + + RefuseManualStart= + RefuseManualStop= + + Takes a boolean + argument. If + this unit can only be activated + or deactivated indirectly. In + this case explicit start-up + or termination requested by the + user is denied, however if it is + started or stopped as a + dependency of another unit, start-up + or termination will succeed. This + is mostly a safety feature to ensure + that the user does not accidentally + activate units that are not intended + to be activated explicitly, and not + accidentally deactivate units that are + not intended to be deactivated. + These options default to + . + + + + AllowIsolate= + + Takes a boolean + argument. If + this unit may be used with the + systemctl isolate + command. Otherwise this will be + refused. It probably is a good idea to + leave this disabled except for target + units that shall be used similar to + runlevels in SysV init systems, just + as a precaution to avoid unusable + system states. This option defaults to + . + + + + DefaultDependencies= + + Takes a boolean + argument. If + (the default), a few default + dependencies will implicitly be + created for the unit. The actual + dependencies created depend on the + unit type. For example, for service + units, these dependencies ensure that + the service is started only after + basic system initialization is + completed and is properly terminated on + system shutdown. See the respective + man pages for details. Generally, only + services involved with early boot or + late shutdown should set this option + to . It is + highly recommended to leave this + option enabled for the majority of + common units. If set to + this option + does not disable all implicit + dependencies, just non-essential + ones. + + + + JobTimeoutSec= + + When clients are + waiting for a job of this unit to + complete, time out after the specified + time. If this time limit is reached + the job will be cancelled, the unit + however will not change state or even + enter the 'failed' + mode. This value defaults to 0 (job + timeouts disabled), except for device + units. NB: this timeout is independent + from any unit-specific timeout (for + example, the timeout set with + Timeout= in service + units) as the job timeout has no + effect on the unit itself, only on the + job that might be pending for it. Or + in other words: unit-specific timeouts + are useful to abort unit state + changes, and revert them. The job + timeout set with this option however + is useful to abort only the job + waiting for the unit state to + change. + + + + ConditionPathExists= + ConditionPathExistsGlob= + ConditionPathIsDirectory= + ConditionPathIsSymbolicLink= + ConditionPathIsMountPoint= + ConditionPathIsReadWrite= + ConditionDirectoryNotEmpty= + ConditionFileNotEmpty= + ConditionFileIsExecutable= + ConditionKernelCommandLine= + ConditionVirtualization= + ConditionSecurity= + ConditionCapability= + ConditionHost= + ConditionACPower= + ConditionNull= + + Before starting a unit + verify that the specified condition is + true. If it is not true the starting + of the unit will be skipped, however + all ordering dependencies of it are + still respected. A failing condition + will not result in the unit being + moved into a failure state. The + condition is checked at the time the + queued start job is to be + executed. + + With + ConditionPathExists= + a file existence condition is + checked before a unit is started. If + the specified absolute path name does + not exist the condition will + fail. If the absolute path name passed + to + ConditionPathExists= + is prefixed with an exclamation mark + ('!'), the test is negated, and the unit + is only started if the path does not + exist. + + ConditionPathExistsGlob= + is similar to + ConditionPathExists=, + but checks for the existence of at + least one file or directory matching + the specified globbing pattern. + + ConditionPathIsDirectory= + is similar to + ConditionPathExists= + but verifies whether a certain path + exists and is a + directory. + + ConditionPathIsSymbolicLink= + is similar to + ConditionPathExists= + but verifies whether a certain path + exists and is a symbolic + link. + + ConditionPathIsMountPoint= + is similar to + ConditionPathExists= + but verifies whether a certain path + exists and is a mount + point. + + ConditionPathIsReadWrite= + is similar to + ConditionPathExists= + but verifies whether the underlying + file system is readable and writable + (i.e. not mounted + read-only). + + ConditionDirectoryNotEmpty= + is similar to + ConditionPathExists= + but verifies whether a certain path + exists and is a non-empty + directory. + + ConditionFileNotEmpty= + is similar to + ConditionPathExists= + but verifies whether a certain path + exists and refers to a regular file + with a non-zero size. + + ConditionFileIsExecutable= + is similar to + ConditionPathExists= + but verifies whether a certain path + exists, is a regular file and marked + executable. + + Similar, + ConditionKernelCommandLine= + may be used to check whether a + specific kernel command line option is + set (or if prefixed with the + exclamation mark unset). The argument + must either be a single word, or an + assignment (i.e. two words, separated + '='). In the former + case the kernel command line is + searched for the word appearing as is, + or as left hand side of an + assignment. In the latter case the + exact assignment is looked for with + right and left hand side + matching. + + ConditionVirtualization= + may be used to check whether the + system is executed in a virtualized + environment and optionally test + whether it is a specific + implementation. Takes either boolean + value to check if being executed in + any virtualized environment, or one of + vm and + container to test + against a generic type of + virtualization solution, or one of + qemu, + kvm, + vmware, + microsoft, + oracle, + xen, + bochs, + chroot, + openvz, + lxc, + lxc-libvirt, + systemd-nspawn to + test against a specific + implementation. If multiple + virtualization technologies are nested + only the innermost is considered. The + test may be negated by prepending an + exclamation mark. + + ConditionSecurity= + may be used to check whether the given + security module is enabled on the + system. Currently the only recognized + value is selinux. + The test may be negated by prepending + an exclamation + mark. + + ConditionCapability= + may be used to check whether the given + capability exists in the capability + bounding set of the service manager + (i.e. this does not check whether + capability is actually available in + the permitted or effective sets, see + capabilities7 + for details). Pass a capability name + such as CAP_MKNOD, + possibly prefixed with an exclamation + mark to negate the check. + + ConditionHost= + may be used to match against the + host name or machine ID of the + host. This either takes a host name + string (optionally with shell style + globs) which is tested against the + locally set host name as returned by + gethostname2, + or a machine ID formatted as string + (see + machine-id5). + The test may be negated by prepending + an exclamation mark. + + ConditionACPower= + may be used to check whether the + system has AC power, or is exclusively + battery powered at the time of + activation of the unit. This takes a + boolean argument. If set to + true the condition + will hold only if at least one AC + connector of the system is connected + to a power source, or if no AC + connectors are known. Conversely, if + set to false the + condition will hold only if there is + at least one AC connector known and + all AC connectors are disconnected + from a power source. + + Finally, + ConditionNull= may + be used to add a constant condition + check value to the unit. It takes a + boolean argument. If set to + false the condition + will always fail, otherwise + succeed. + + If multiple conditions are + specified the unit will be executed if + all of them apply (i.e. a logical AND + is applied). Condition checks can be + prefixed with a pipe symbol (|) in + which case a condition becomes a + triggering condition. If at least one + triggering condition is defined for a + unit then the unit will be executed if + at least one of the triggering + conditions apply and all of the + non-triggering conditions. If you + prefix an argument with the pipe + symbol and an exclamation mark the + pipe symbol must be passed first, the + exclamation second. Except for + ConditionPathIsSymbolicLink=, + all path checks follow symlinks. If + any of these options is assigned the + empty string the list of conditions is + reset completely, all previous + condition settings (of any kind) will + have no effect. + + + + SourcePath= + A path to a + configuration file this unit has been + generated from. This is primarily + useful for implementation of generator + tools that convert configuration from + an external configuration file format + into native unit files. Thus + functionality should not be used in + normal units. + + + + Unit file may include a [Install] section, which + carries installation information for the unit. This + section is not interpreted by + systemd1 + during runtime. It is used exclusively by the + enable and + disable commands of the + systemctl1 + tool during installation of a unit: + + + + Alias= + + Additional names this + unit shall be installed under. The + names listed here must have the same + suffix (i.e. type) as the unit file + name. This option may be specified + more than once, in which case all + listed names are used. At installation + time, + systemctl enable + will create symlinks from these names + to the unit file name. + + + + WantedBy= + RequiredBy= + + Installs a symlink in + the .wants/ + or .requires/ + subdirectory for a unit, respectively. This has the + effect that when the listed unit name + is activated the unit listing it is + activated + too. WantedBy=foo.service + in a service + bar.service is + mostly equivalent to + Alias=foo.service.wants/bar.service + in the same file. + + + + Also= + + Additional units to + install when this unit is + installed. If the user requests + installation of a unit with this + option configured, + systemctl enable + will automatically install units + listed in this option as + well. + + + + The following specifiers are interpreted in the + Install section: %n, %N, %p, %i, %U, %u, %m, %H, %b. + For their meaning see the next section. + + + + + Specifiers + + Many settings resolve specifiers which may be + used to write generic unit files referring to runtime + or unit parameters that are replaced when the unit + files are loaded. The following specifiers are + understood: + + + Specifiers available in unit files + + + + + + + Specifier + Meaning + Details + + + + + %n + Full unit name + + + + %N + Unescaped full unit name + + + + %p + Prefix name + For instantiated units this refers to the string before the @. For non-instantiated units this refers to to the name of the unit with the type suffix removed. + + + %P + Unescaped prefix name + + + + %i + Instance name + For instantiated units: this is the string between the @ character and the suffix. + + + %I + Unescaped instance name + + + + %f + Unescaped file name + This is either the unescaped instance name (if applicable) with / prepended (if applicable), or the prefix name similarly prepended with /. + + + %c + Control group path of the unit + + + + %r + Root control group path of systemd + + + + %R + Parent directory of the root control group path of systemd + + + + %t + Runtime socket dir + This is either /run (for the system manager) or $XDG_RUNTIME_DIR (for user managers). + + + %u + User name + This is the name of the configured user of the unit, or (if none is set) the user running the systemd instance. + + + %U + User UID + This is the UID of the configured user of the unit, or (if none is set) the user running the systemd instance. + + + %h + User home directory + This is the home directory of the configured user of the unit, or (if none is set) the user running the systemd instance. + + + %s + User shell + This is the shell of the configured user of the unit, or (if none is set) the user running the systemd instance. + + + %m + Machine ID + The machine ID of the running system, formatted as string. See machine-id5 for more information. + + + %b + Boot ID + The boot ID of the running system, formatted as string. See random4 for more information. + + + %H + Host name + The host name of the running system. + + + +
+
+ + + See Also + + systemd1, + systemctl8, + systemd.special7, + systemd.service5, + systemd.socket5, + systemd.device5, + systemd.mount5, + systemd.automount5, + systemd.swap5, + systemd.target5, + systemd.path5, + systemd.timer5, + systemd.snapshot5, + systemd.time7, + capabilities7, + systemd.directives7 + + + +
-- cgit v1.2.1 From 13219b7f74cb2722746b953bbec7593d5cc665e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 3 Feb 2013 22:23:53 -0500 Subject: man: describe unit load path in systemd.unit(5) In other cases where multiple directories are searched for unit files, the list of directories is described in the man page describing the format. I think this makes sense too in case of systemd directories, since the systemd(1) manpage already has an overview of many different topics. --- Makefile.am | 2 + man/systemd.unit.xml.in | 198 +++++++++++++++++++++++++++++++++++++++++++++--- man/systemd.xml | 8 +- 3 files changed, 194 insertions(+), 14 deletions(-) diff --git a/Makefile.am b/Makefile.am index 6e5f5af9ac..d8546b51e3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3345,6 +3345,8 @@ SED_PROCESS = \ -e 's,@SYSTEMCTL\@,$(rootbindir)/systemctl,g' \ -e 's,@SYSTEMD_NOTIFY\@,$(rootbindir)/systemd-notify,g' \ -e 's,@pkgsysconfdir\@,$(pkgsysconfdir),g' \ + -e 's,@SYSTEM_CONFIG_UNIT_PATH\@,$(pkgsysconfdir)/system,g' \ + -e 's,@USER_CONFIG_UNIT_PATH\@,$(pkgsysconfdir)/user,g' \ -e 's,@pkgdatadir\@,$(pkgdatadir),g' \ -e 's,@systemunitdir\@,$(systemunitdir),g' \ -e 's,@userunitdir\@,$(userunitdir),g' \ diff --git a/man/systemd.unit.xml.in b/man/systemd.unit.xml.in index 7c3a6c75f8..43f5ffc1f2 100644 --- a/man/systemd.unit.xml.in +++ b/man/systemd.unit.xml.in @@ -48,16 +48,28 @@ - systemd.service, - systemd.socket, - systemd.device, - systemd.mount, - systemd.automount, - systemd.swap, - systemd.target, - systemd.path, - systemd.timer, - systemd.snapshot + service.service, + socket.socket, + device.device, + mount.mount, + automount.automount, + swap.swap, + target.target, + path.path, + timer.timer, + snapshot.snapshot + + /etc/systemd/system/* +/run/systemd/system/* +/usr/lib/systemd/system/* +... + + + /etc/systemd/user/* +/run/systemd/user/* +/usr/lib/systemd/user/* +... + @@ -66,7 +78,7 @@ A unit configuration file encodes information about a service, a socket, a device, a mount point, an automount point, a swap file or partition, a start-up - target, a file system path or a timer controlled and + target, a file system path, or a timer controlled and supervised by systemd1. The syntax is inspired by + information: + systemd.service5, + systemd.socket5, + systemd.device5, + systemd.mount5, + systemd.automount5, + systemd.swap5, + systemd.target5, + systemd.path5, + systemd.timer5, + systemd.snapshot5. + + + Unit files are loaded from a set of paths + determined during compilation, described in the next section. + Unit files may contain additional options on top of those listed here. If systemd encounters an unknown @@ -214,6 +241,153 @@ + + Unit load path + + Unit files are loaded from a set of paths + determined during compilation, described in the two + tables below. Unit files found in directories higher + in the hierarchy override files with the same name + lower in the hierarchy, thus allowing overrides. + + + When systemd is running in session mode + () and the variable + $SYSTEMD_UNIT_PATH is set, this + contents of this variable overrides the unit load + path. + + + + + Load path when running in system mode (<option>--system</option>). + + + + + + + + Path + Description + + + + + /run/systemd/generator.early + Generated units + + + @SYSTEM_CONFIG_UNIT_PATH@ + Local configuration + + + /etc/systemd/system + + + /run/systemd/systemd + Volatile units + + + /run/systemd/generator + Generated units + + + /usr/local/lib/systemd/system + Units for local packages + + + @systemunitdir@ + Systemd package configuration + + + /usr/lib/systemd/system + Units for installed packages + + + /lib/systemd/system + + + /run/systemd/generator.late + Generated units + + + +
+ + + + Load path when running in session mode (<option>--user</option>). + + + + + + + + Path + Description + + + + + /tmp/systemd-generator.early.XXXXXX + Generated units + + + @USER_CONFIG_UNIT_PATH@ + Local configuration + + + /etc/systemd/user + + + /run/systemd/user + Volatile units + + + /tmp/systemd-generator.XXXXXX + Generated units + + + /usr/local/lib/systemd/user + Units for local packages + + + /usr/local/share/systemd/user + + + @userunitdir@ + Systemd package configuration + + + /usr/lib/systemd/user + Units for installed packages + + + /usr/share/systemd/user + + + /tmp/systemd-generator.late.XXXXXX + Generated units + + + +
+ + Note: the paths listed above are set at + compilation time and differ between distributions. The + "authorative" list is printed by + systemd at during start and daemon + reconfiguration. + + Additional units might be loaded into systemd + ("linked") from directories not on the unit load + path. See the link command for + systemctl1. + +
+ Options diff --git a/man/systemd.xml b/man/systemd.xml index bae90a5f09..5380ae8b67 100644 --- a/man/systemd.xml +++ b/man/systemd.xml @@ -535,7 +535,9 @@ disable commands of the systemctl1 - tool.
+ tool. Full list of directories is provided in + systemd.unit5. +
@@ -564,7 +566,9 @@ tool can handle both global (i.e. for all users) and private (for one user) enabling/disabling of - units. + units. Full list of directories is provided in + systemd.unit5. +
-- cgit v1.2.1 From d2f1f23ad2636cf05589a67b5229c7fd604bc21f Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Mon, 4 Feb 2013 15:56:26 +0100 Subject: nss-myhostname: copy first result to preallocated buffer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixes a segfault in nscd when using nss-myhostname. Nscd expects that an NSS module's gethostbyname4_r function returns its first result in the pre-allocated gaih_addrtuple denoted by **pat. (See nscd/aicache.c in the Glibc sources.) However, nss-myhostname doesn't fill in **pat but allocates the first result in ‘buffer’, then sets *pat. So nscd crashes (e.g. when running ‘getent ahosts my-machine’). Hard to tell if this is a bug in nscd, since there doesn't seem to be a proper API spec for gethostbyname4_r. But in any case, this patch fixes the crash by copying the first result to **pat. --- src/nss-myhostname/nss-myhostname.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c index 834a80690f..b0fb8323ad 100644 --- a/src/nss-myhostname/nss-myhostname.c +++ b/src/nss-myhostname/nss-myhostname.c @@ -176,7 +176,11 @@ enum nss_status _nss_myhostname_gethostbyname4_r( /* Verify the size matches */ assert(idx == ms); - *pat = r_tuple_prev; + /* Nscd expects us to store the first record in **pat. */ + if (*pat) + **pat = *r_tuple_prev; + else + *pat = r_tuple_prev; if (ttlp) *ttlp = 0; -- cgit v1.2.1 From f9045468945cd06fad84f9fbf44019c6813fc50a Mon Sep 17 00:00:00 2001 From: Mirco Tischler Date: Mon, 4 Feb 2013 15:13:23 +0100 Subject: journal: log user units for coredumps and show them in systemctl status --- src/journal/coredump.c | 9 ++++++--- src/shared/logs-show.c | 18 +++++++++++++++--- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/journal/coredump.c b/src/journal/coredump.c index c989be9b82..91528d3c81 100644 --- a/src/journal/coredump.c +++ b/src/journal/coredump.c @@ -144,11 +144,14 @@ int main(int argc, char* argv[]) { core_unit = strappend("COREDUMP_UNIT=", t); free(t); - - if (core_unit) - IOVEC_SET_STRING(iovec[j++], core_unit); + } else if (cg_pid_get_user_unit(pid, &t) >= 0) { + core_unit = strappend("COREDUMP_USER_UNIT=", t); + free(t); } + if (core_unit) + IOVEC_SET_STRING(iovec[j++], core_unit); + /* OK, now we know it's not the journal, hence make use of * it */ log_set_target(LOG_TARGET_JOURNAL_OR_KMSG); diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 034fde6624..7dacccf6af 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -954,7 +954,7 @@ int show_journal_by_user_unit( uid_t uid, OutputFlags flags) { - _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL; + _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL, *m4 = NULL; sd_journal *j = NULL; int r; @@ -972,7 +972,8 @@ int show_journal_by_user_unit( if (asprintf(&m1, "_SYSTEMD_USER_UNIT=%s", unit) < 0 || asprintf(&m2, "USER_UNIT=%s", unit) < 0 || - asprintf(&m3, "_UID=%d", uid) < 0) { + asprintf(&m3, "COREDUMP_USER_UNIT=%s", unit) < 0 || + asprintf(&m4, "_UID=%d", uid) < 0) { r = -ENOMEM; goto finish; } @@ -985,7 +986,7 @@ int show_journal_by_user_unit( r = sd_journal_add_match(j, m1, 0); if (r < 0) goto finish; - r = sd_journal_add_match(j, m3, 0); + r = sd_journal_add_match(j, m4, 0); if (r < 0) goto finish; @@ -994,9 +995,20 @@ int show_journal_by_user_unit( if (r < 0) goto finish; r = sd_journal_add_match(j, m2, 0); + if (r < 0) + goto finish; + r = sd_journal_add_match(j, m4, 0); + if (r < 0) + goto finish; + + /* Look for coredumps of the service */ + r = sd_journal_add_disjunction(j); if (r < 0) goto finish; r = sd_journal_add_match(j, m3, 0); + if (r < 0) + goto finish; + r = sd_journal_add_match(j, m4, 0); if (r < 0) goto finish; -- cgit v1.2.1 From a4b88c1ecb2a787d44ba1a46336aa187f60293b5 Mon Sep 17 00:00:00 2001 From: Mirco Tischler Date: Mon, 4 Feb 2013 15:13:24 +0100 Subject: logs-show: show messages for all unit types in systemctl status I can't find a reason why we shouldn't try to output messages for other unit types than .service, .socket, .mount and .swap as well. It's probably a leftover from before we started logging UNIT= from inside PID 1. --- src/shared/logs-show.c | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 7dacccf6af..b909c24e98 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -886,12 +886,6 @@ int show_journal_by_unit( assert(mode < _OUTPUT_MODE_MAX); assert(unit); - if (!endswith(unit, ".service") && - !endswith(unit, ".socket") && - !endswith(unit, ".mount") && - !endswith(unit, ".swap")) - return 0; - if (how_many <= 0) return 0; @@ -962,11 +956,6 @@ int show_journal_by_user_unit( assert(mode < _OUTPUT_MODE_MAX); assert(unit); - if (!endswith(unit, ".service") && - !endswith(unit, ".socket")) - - return 0; - if (how_many <= 0) return 0; -- cgit v1.2.1 From b7f7c68570b384fceceb82660528e688f207e145 Mon Sep 17 00:00:00 2001 From: Mirco Tischler Date: Tue, 5 Feb 2013 01:43:10 +0100 Subject: coredump: make use of the cleanup macros --- src/journal/coredump.c | 41 ++++++++++------------------------------- 1 file changed, 10 insertions(+), 31 deletions(-) diff --git a/src/journal/coredump.c b/src/journal/coredump.c index 91528d3c81..021b4c6651 100644 --- a/src/journal/coredump.c +++ b/src/journal/coredump.c @@ -32,6 +32,7 @@ #include "log.h" #include "util.h" +#include "macro.h" #include "mkdir.h" #include "special.h" #include "cgroup-util.h" @@ -49,8 +50,7 @@ enum { }; static int divert_coredump(void) { - FILE *f; - int r; + _cleanup_fclose_ FILE *f = NULL; log_info("Detected coredump of the journal daemon itself, diverting coredump to /var/lib/systemd/coredump/."); @@ -70,19 +70,16 @@ static int divert_coredump(void) { if (l <= 0) { if (ferror(f)) { log_error("Failed to read coredump: %m"); - r = -errno; - goto finish; + return -errno; } - r = 0; break; } q = fwrite(buffer, 1, l, f); if (q != l) { log_error("Failed to write coredump: %m"); - r = -errno; - goto finish; + return -errno; } } @@ -90,25 +87,23 @@ static int divert_coredump(void) { if (ferror(f)) { log_error("Failed to write coredump: %m"); - r = -errno; + return -errno; } -finish: - fclose(f); - return r; + return 0; } int main(int argc, char* argv[]) { int r, j = 0; - char *p = NULL; + _cleanup_free_ char *p = NULL; ssize_t n; pid_t pid; uid_t uid; gid_t gid; struct iovec iovec[14]; - char *core_pid = NULL, *core_uid = NULL, *core_gid = NULL, *core_signal = NULL, + _cleanup_free_ char *core_pid = NULL, *core_uid = NULL, *core_gid = NULL, *core_signal = NULL, *core_timestamp = NULL, *core_comm = NULL, *core_exe = NULL, *core_unit = NULL, - *core_session = NULL, *core_message = NULL, *core_cmdline = NULL, *t; + *core_session = NULL, *core_message = NULL, *core_cmdline = NULL, *t = NULL; prctl(PR_SET_DUMPABLE, 0); @@ -143,11 +138,8 @@ int main(int argc, char* argv[]) { } core_unit = strappend("COREDUMP_UNIT=", t); - free(t); - } else if (cg_pid_get_user_unit(pid, &t) >= 0) { + } else if (cg_pid_get_user_unit(pid, &t) >= 0) core_unit = strappend("COREDUMP_USER_UNIT=", t); - free(t); - } if (core_unit) IOVEC_SET_STRING(iovec[j++], core_unit); @@ -264,18 +256,5 @@ int main(int argc, char* argv[]) { log_error("Failed to send coredump: %s", strerror(-r)); finish: - free(p); - free(core_pid); - free(core_uid); - free(core_gid); - free(core_signal); - free(core_timestamp); - free(core_comm); - free(core_exe); - free(core_cmdline); - free(core_unit); - free(core_session); - free(core_message); - return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; } -- cgit v1.2.1 From 53057ef93bafbf78318a5e08f6395504a0719f3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Feb 2013 00:50:37 -0500 Subject: man: document COREDUMP_UNIT and COREDUMP_USER_UNIT Also fix formatting for kernel related fields, enabling them to show up in the directives index. --- man/systemd.journal-fields.xml | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/man/systemd.journal-fields.xml b/man/systemd.journal-fields.xml index 2e9bc5baff..a0f1bfda13 100644 --- a/man/systemd.journal-fields.xml +++ b/man/systemd.journal-fields.xml @@ -315,9 +315,9 @@ messages originating in the kernel and stored in the journal. - + - _KERNEL_DEVICE= + _KERNEL_DEVICE= The kernel device name. If the entry is @@ -336,13 +336,13 @@ - _KERNEL_SUBSYSTEM= + _KERNEL_SUBSYSTEM= The kernel subsystem name. - _UDEV_SYSNAME= + _UDEV_SYSNAME= The kernel device name as it shows up in the device @@ -351,7 +351,7 @@ - _UDEV_DEVNODE= + _UDEV_DEVNODE= The device node path of this device in @@ -359,7 +359,7 @@ - _UDEV_DEVLINK= + _UDEV_DEVLINK= Additional symlink names pointing to the device node in @@ -371,6 +371,29 @@ + + Special Journal Fields + + Fields used by the systemd-coredump + coredump kernel helper. + + + + + COREDUMP_UNIT= + COREDUMP_USER_UNIT= + + Used to annotate + messages containing coredumps from + system and session units. + See + systemd-coredumpctl1. + + + + + + Address Fields @@ -446,6 +469,7 @@ journalctl1, journald.conf5, sd-journal3, + systemd-coredumpctl1, systemd.directives7 -- cgit v1.2.1 From 15cd601be0f8920083957ef2274a64e00fb92498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Feb 2013 00:53:11 -0500 Subject: man: fix return value for sd_journal_flush_matches https://bugs.freedesktop.org/show_bug.cgi?id=60133 --- man/sd_journal_add_match.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/sd_journal_add_match.xml b/man/sd_journal_add_match.xml index ad2486d749..04b33883cb 100644 --- a/man/sd_journal_add_match.xml +++ b/man/sd_journal_add_match.xml @@ -66,7 +66,7 @@ - int sd_journal_flush_matches + void sd_journal_flush_matches sd_journal* j -- cgit v1.2.1 From 42007a09f3a7fc82a40068eae5b616756b2fb401 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Feb 2013 01:10:21 -0500 Subject: build-sys: restore man/index.html as link to systemd.index.html It got lost in the transformation to XML generation. --- Makefile.am | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/Makefile.am b/Makefile.am index d8546b51e3..e20bbcbb84 100644 --- a/Makefile.am +++ b/Makefile.am @@ -501,6 +501,15 @@ CLEANFILES += \ ${XML_FILES:.xml=.html} if HAVE_PYTHON +noinst_DATA += \ + man/index.html + +CLEANFILES += \ + man/index.html + +man/index.html: + $(AM_V_GEN)$(LN_S) systemd.index.html $@ + NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES)) XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml $(top_srcdir)/man/*.xml.in) @@ -519,6 +528,7 @@ man/systemd.directives.xml: make-directive-index.py $(filter-out man/systemd.dir EXTRA_DIST += \ man/systemd.index.xml \ + man/index.html \ man/systemd.directives.xml endif -- cgit v1.2.1 From 78c55e2155b2badad23c3dc255fdc5b7823dda1a Mon Sep 17 00:00:00 2001 From: David Strauss Date: Thu, 7 Feb 2013 01:23:59 -0500 Subject: build-sys: add libsystemd-id128 as libudev dependency After d848b9cbfa0 'Move generic specifier functions to shared' libudev depends (through) libsystemd-shared.la on libsystemd-id128.so. The problem only appears when the linker does not support --gc-sections and manifests itself as the inability to resolve sd_id128_get_machine and other libsystemd-id128 functions, which aren't really used. --- Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index e20bbcbb84..8f44f5d903 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1587,7 +1587,8 @@ libudev_la_LDFLAGS = \ -Wl,--version-script=$(top_srcdir)/src/libudev/libudev.sym libudev_la_LIBADD = \ - libsystemd-shared.la + libsystemd-shared.la \ + libsystemd-id128.la pkgconfiglib_DATA += \ src/libudev/libudev.pc -- cgit v1.2.1 From 8d81eb8e248da6d4d5667afc25db05bce880dcbd Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 7 Feb 2013 13:47:46 +0100 Subject: build-sys: at least for now, never link libudev against systemd's shared libraries --- Makefile.am | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index 8f44f5d903..ad69ee3870 100644 --- a/Makefile.am +++ b/Makefile.am @@ -622,8 +622,6 @@ libsystemd_shared_la_SOURCES = \ src/shared/calendarspec.h \ src/shared/output-mode.h -libsystemd_shared_la_LIBADD = libsystemd-daemon.la - #------------------------------------------------------------------------------- noinst_LTLIBRARIES += \ libsystemd-dbus.la @@ -1519,6 +1517,9 @@ systemd_tty_ask_password_agent_LDADD = \ libsystemd_daemon_la_SOURCES = \ src/libsystemd-daemon/sd-daemon.c +libsystemd_daemon_internal_la_SOURCES = \ + $(libsystemd_daemon_la_SOURCES) + libsystemd_daemon_la_CFLAGS = \ $(AM_CFLAGS) \ -fvisibility=hidden \ @@ -1546,6 +1547,9 @@ UNINSTALL_EXEC_HOOKS += libsystemd-daemon-uninstall-hook lib_LTLIBRARIES += \ libsystemd-daemon.la +noinst_LTLIBRARIES += \ + libsystemd-daemon-internal.la + pkgconfiglib_DATA += \ src/libsystemd-daemon/libsystemd-daemon.pc @@ -1588,7 +1592,8 @@ libudev_la_LDFLAGS = \ libudev_la_LIBADD = \ libsystemd-shared.la \ - libsystemd-id128.la + libsystemd-daemon-internal.la \ + libsystemd-id128-internal.la pkgconfiglib_DATA += \ src/libudev/libudev.pc -- cgit v1.2.1 From 1f28b2deb4e118cd2d2a5138ccb4cc45841c136d Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Thu, 7 Feb 2013 21:10:31 +0100 Subject: test-env-replace: assert results instead of printing them Also code cleanup and split into functions in preparation for more tests to come. --- src/test/test-env-replace.c | 135 ++++++++++++++++++++------------------------ 1 file changed, 60 insertions(+), 75 deletions(-) diff --git a/src/test/test-env-replace.c b/src/test/test-env-replace.c index 0bd42e3298..70a28cd0c6 100644 --- a/src/test/test-env-replace.c +++ b/src/test/test-env-replace.c @@ -23,17 +23,36 @@ #include #include "util.h" -#include "log.h" #include "strv.h" -int main(int argc, char *argv[]) { +static void test_strv_env_merge(void) { + _cleanup_strv_free_ char **a = NULL, **b = NULL, **r = NULL; + + a = strv_new("FOO=BAR", "WALDO=WALDO", "WALDO=", "PIEP", "SCHLUMPF=SMURF", NULL); + b = strv_new("FOO=KKK", "FOO=", "PIEP=", "SCHLUMPF=SMURFF", "NANANANA=YES", NULL); + r = strv_env_merge(2, a, b); + assert(streq(r[0], "FOO=")); + assert(streq(r[1], "WALDO=")); + assert(streq(r[2], "PIEP")); + assert(streq(r[3], "SCHLUMPF=SMURFF")); + assert(streq(r[4], "PIEP=")); + assert(streq(r[5], "NANANANA=YES")); + assert(strv_length(r) == 6); + + strv_env_clean(r); + assert(streq(r[0], "PIEP")); + assert(streq(r[1], "SCHLUMPF=SMURFF")); + assert(streq(r[2], "NANANANA=YES")); + assert(strv_length(r) == 3); +} + +static void test_replace_env_arg(void) { const char *env[] = { "FOO=BAR BAR", "BAR=waldo", NULL }; - const char *line[] = { "FOO$FOO", "FOO$FOOFOO", @@ -46,84 +65,50 @@ int main(int argc, char *argv[]) { "${FOO", NULL }; - - char **r, *t, **a, **b; + _cleanup_strv_free_ char **r = NULL; r = replace_env_argv((char**) line, (char**) env); - strv_print(r); - strv_free(r); - - t = normalize_env_assignment("foo=bar"); - printf("%s\n", t); - free(t); - - t = normalize_env_assignment("=bar"); - printf("%s\n", t); - free(t); - - t = normalize_env_assignment("foo="); - printf("%s\n", t); - free(t); - - t = normalize_env_assignment("="); - printf("%s\n", t); - free(t); - - t = normalize_env_assignment(""); - printf("%s\n", t); - free(t); - - t = normalize_env_assignment("a=\"waldo\""); - printf("%s\n", t); - free(t); - - t = normalize_env_assignment("a=\"waldo"); - printf("%s\n", t); - free(t); - - t = normalize_env_assignment("a=waldo\""); - printf("%s\n", t); - free(t); - - t = normalize_env_assignment("a=\'"); - printf("%s\n", t); - free(t); - - t = normalize_env_assignment("a=\'\'"); - printf("%s\n", t); - free(t); - - t = normalize_env_assignment(" xyz "); - printf("<%s>\n", t); - free(t); - - t = normalize_env_assignment(" xyz = bar "); - printf("<%s>\n", t); - free(t); - - t = normalize_env_assignment(" xyz = 'bar ' "); - printf("<%s>\n", t); - free(t); - - t = normalize_env_assignment(" ' xyz' = 'bar ' "); - printf("<%s>\n", t); - free(t); - - a = strv_new("FOO=BAR", "WALDO=WALDO", "WALDO=", "PIEP", "SCHLUMPF=SMURF", NULL); - b = strv_new("FOO=KKK", "FOO=", "PIEP=", "SCHLUMPF=SMURFF", "NANANANA=YES", NULL); - - r = strv_env_merge(2, a, b); - strv_free(a); - strv_free(b); + assert(streq(r[0], "FOO$FOO")); + assert(streq(r[1], "FOO$FOOFOO")); + assert(streq(r[2], "FOOBAR BAR$FOO")); + assert(streq(r[3], "FOOBAR BAR")); + assert(streq(r[4], "BAR BAR")); + assert(streq(r[5], "BAR")); + assert(streq(r[6], "BAR")); + assert(streq(r[7], "BAR BARwaldo")); + assert(streq(r[8], "${FOO")); + assert(strv_length(r) == 9); +} - strv_print(r); +static void test_one_normalize(const char *input, const char *output) +{ + _cleanup_free_ char *t; - printf("CLEANED UP:\n"); + t = normalize_env_assignment(input); + assert(streq(t, output)); +} - r = strv_env_clean(r); +static void test_normalize_env_assignment(void) { + test_one_normalize("foo=bar", "foo=bar"); + test_one_normalize("=bar", "=bar"); + test_one_normalize("foo=", "foo="); + test_one_normalize("=", "="); + test_one_normalize("", ""); + test_one_normalize("a=\"waldo\"", "a=waldo"); + test_one_normalize("a=\"waldo", "a=\"waldo"); + test_one_normalize("a=waldo\"", "a=waldo\""); + test_one_normalize("a=\'", "a='"); + test_one_normalize("a=\'\'", "a="); + test_one_normalize(" xyz ", "xyz"); + test_one_normalize(" xyz = bar ", "xyz=bar"); + test_one_normalize(" xyz = 'bar ' ", "xyz=bar "); + test_one_normalize(" ' xyz' = 'bar ' ", "' xyz'=bar "); +} - strv_print(r); - strv_free(r); +int main(int argc, char *argv[]) { + test_strv_env_merge(); + test_replace_env_arg(); + test_normalize_env_assignment(); return 0; } -- cgit v1.2.1 From beb23689e357ed549f5c9d4a3440da2132a419f1 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 7 Feb 2013 21:53:10 +0100 Subject: udev: remove HWDB_BIN --- Makefile.am | 4 +--- src/libudev/libudev-hwdb.c | 10 +++++----- src/udev/udevadm-hwdb.c | 7 +++---- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/Makefile.am b/Makefile.am index ad69ee3870..9a26a07602 100644 --- a/Makefile.am +++ b/Makefile.am @@ -71,7 +71,6 @@ sysvrcnddir=$(SYSTEM_SYSVRCND_PATH) varlogdir=$(localstatedir)/log systemdstatedir=$(localstatedir)/lib/systemd catalogstatedir=$(systemdstatedir)/catalog -hwdb_bin=/etc/udev/hwdb.bin # Our own, non-special dirs pkgsysconfdir=$(sysconfdir)/systemd @@ -138,7 +137,6 @@ AM_CPPFLAGS = \ -DUSER_CONFIG_UNIT_PATH=\"$(pkgsysconfdir)/user\" \ -DUSER_DATA_UNIT_PATH=\"$(userunitdir)\" \ -DCATALOG_PATH=\"$(catalogstatedir)\" \ - -DHWDB_BIN=\"$(hwdb_bin)\" \ -DSYSTEMD_CGROUP_AGENT_PATH=\"$(rootlibexecdir)/systemd-cgroups-agent\" \ -DSYSTEMD_BINARY_PATH=\"$(rootlibexecdir)/systemd\" \ -DSYSTEMD_SHUTDOWN_BINARY_PATH=\"$(rootlibexecdir)/systemd-shutdown\" \ @@ -1786,7 +1784,7 @@ INSTALL_DATA_HOOKS += \ hwdb-update-hook hwdb-remove-hook: - -test -n "$(DESTDIR)" || rm -f $(HWDB_BIN) + -test -n "$(DESTDIR)" || rm -f /etc/udev/hwdb.bin # ------------------------------------------------------------------------------ TESTS += \ diff --git a/src/libudev/libudev-hwdb.c b/src/libudev/libudev-hwdb.c index 09096c4d71..42ab6d9a6b 100644 --- a/src/libudev/libudev-hwdb.c +++ b/src/libudev/libudev-hwdb.c @@ -271,30 +271,30 @@ _public_ struct udev_hwdb *udev_hwdb_new(struct udev *udev) { hwdb->refcount = 1; udev_list_init(udev, &hwdb->properties_list, true); - hwdb->f = fopen(HWDB_BIN, "re"); + hwdb->f = fopen("/etc/udev/hwdb.bin", "re"); if (!hwdb->f) { - log_debug("error reading %s: %m", HWDB_BIN); + log_debug("error reading /etc/udev/hwdb.bin: %m"); udev_hwdb_unref(hwdb); return NULL; } if (fstat(fileno(hwdb->f), &hwdb->st) < 0 || (size_t)hwdb->st.st_size < offsetof(struct trie_header_f, strings_len) + 8) { - log_debug("error reading %s: %m", HWDB_BIN); + log_debug("error reading /etc/udev/hwdb.bin: %m"); udev_hwdb_unref(hwdb); return NULL; } hwdb->map = mmap(0, hwdb->st.st_size, PROT_READ, MAP_SHARED, fileno(hwdb->f), 0); if (hwdb->map == MAP_FAILED) { - log_debug("error mapping %s: %m", HWDB_BIN); + log_debug("error mapping /etc/udev/hwdb.bin: %m"); udev_hwdb_unref(hwdb); return NULL; } if (memcmp(hwdb->map, sig, sizeof(hwdb->head->signature)) != 0 || (size_t)hwdb->st.st_size != le64toh(hwdb->head->file_size)) { - log_debug("error recognizing the format of %s", HWDB_BIN); + log_debug("error recognizing the format of /etc/udev/hwdb.bin"); udev_hwdb_unref(hwdb); return NULL; } diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index 00c0d3d4c4..8e515b9f71 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -565,11 +565,10 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) { log_debug("strings dedup'ed: %8zu bytes (%8zu)\n", trie->strings->dedup_len, trie->strings->dedup_count); - mkdir_parents(HWDB_BIN, 0755); - err = trie_store(trie, HWDB_BIN); + mkdir_parents("/etc/udev/hwdb.bin", 0755); + err = trie_store(trie, "/etc/udev/hwdb.bin"); if (err < 0) { - log_error("Failure writing hardware database '%s': %s", - HWDB_BIN, strerror(-err)); + log_error("Failure writing database /etc/udev/hwdb.bin: %s", strerror(-err)); rc = EXIT_FAILURE; } } -- cgit v1.2.1 From 9d6cbf7871f5ff69e5835caef1b46673af51e000 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Feb 2013 16:22:29 -0500 Subject: build-sys: fix build without -Wl,--gc-sections In 8d81eb8e the new library was added for libudev, use it for libsystemd-journal too. --- Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.am b/Makefile.am index 9a26a07602..163e8f8fee 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2424,6 +2424,7 @@ libsystemd_journal_la_LDFLAGS = \ libsystemd_journal_la_LIBADD = \ libsystemd-shared.la \ libsystemd-label.la \ + libsystemd-daemon-internal.la \ libsystemd-id128-internal.la libsystemd_journal_internal_la_SOURCES = \ -- cgit v1.2.1 From 940bd4738b16503d903689e50eeb22645463fc16 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Fri, 8 Feb 2013 00:22:26 +0100 Subject: tests: add more tests Adds tests of: strv_env_delete strv_env_unset strv_env_set --- src/test/test-env-replace.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/test/test-env-replace.c b/src/test/test-env-replace.c index 70a28cd0c6..2da3845354 100644 --- a/src/test/test-env-replace.c +++ b/src/test/test-env-replace.c @@ -25,6 +25,46 @@ #include "util.h" #include "strv.h" +static void test_strv_env_delete(void) { + _cleanup_strv_free_ char **a = NULL, **b = NULL, **c = NULL, **d = NULL; + + a = strv_new("FOO=BAR", "WALDO=WALDO", "WALDO=", "PIEP", "SCHLUMPF=SMURF", NULL); + b = strv_new("PIEP", "FOO", NULL); + c = strv_new("SCHLUMPF", NULL); + + d = strv_env_delete(a, 2, b, c); + + assert(streq(d[0], "WALDO=WALDO")); + assert(streq(d[1], "WALDO=")); + assert(strv_length(d) == 2); +} + +static void test_strv_env_unset(void) { + _cleanup_strv_free_ char **l = NULL; + + l = strv_new("PIEP", "SCHLUMPF=SMURFF", "NANANANA=YES", NULL); + + strv_env_unset(l, "SCHLUMPF"); + + assert(streq(l[0], "PIEP")); + assert(streq(l[1], "NANANANA=YES")); + assert(strv_length(l) == 2); +} + +static void test_strv_env_set(void) { + _cleanup_strv_free_ char **l = NULL, **r = NULL; + + l = strv_new("PIEP", "SCHLUMPF=SMURFF", "NANANANA=YES", NULL); + + r = strv_env_set(l, "WALDO=WALDO"); + + assert(streq(r[0], "PIEP")); + assert(streq(r[1], "SCHLUMPF=SMURFF")); + assert(streq(r[2], "NANANANA=YES")); + assert(streq(r[3], "WALDO=WALDO")); + assert(strv_length(r) == 4); +} + static void test_strv_env_merge(void) { _cleanup_strv_free_ char **a = NULL, **b = NULL, **r = NULL; @@ -106,6 +146,9 @@ static void test_normalize_env_assignment(void) { } int main(int argc, char *argv[]) { + test_strv_env_delete(); + test_strv_env_unset(); + test_strv_env_set(); test_strv_env_merge(); test_replace_env_arg(); test_normalize_env_assignment(); -- cgit v1.2.1 From 0b9cc004a4dd20b32459615dd1ab98ba27202095 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Feb 2013 20:58:02 -0500 Subject: systemd: fix uninitialized memory access in selinux ==6129== Syscall param socketcall.getsockopt(optlen) points to uninitialised byte(s) ==6129== at 0x312D0F325A: getsockopt (syscall-template.S:81) ==6129== by 0x4615E6: get_audit_data (selinux-access.c:268) ==6129== by 0x461A81: selinux_access_check (selinux-access.c:394) ==6129== by 0x453B23: bus_manager_message_handler (dbus-manager.c:1395) ==6129== by 0x313581D9C4: _dbus_object_tree_dispatch_and_unlock (dbus-object-tree.c:862) ==6129== by 0x313580FC1F: dbus_connection_dispatch (dbus-connection.c:4672) ==6129== by 0x44CD4C: bus_dispatch (dbus.c:528) ==6129== by 0x41292F: manager_loop (manager.c:1573) ==6129== by 0x40CD8E: main (main.c:1735) ==6129== Address 0x7fefff2c0 is on thread 1's stack --- src/core/selinux-access.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c index be728d5d5b..08a4834575 100644 --- a/src/core/selinux-access.c +++ b/src/core/selinux-access.c @@ -256,7 +256,7 @@ static int get_audit_data( const char *sender; int r, fd; struct ucred ucred; - socklen_t len; + socklen_t len = sizeof(ucred); sender = dbus_message_get_sender(message); if (sender) -- cgit v1.2.1 From 7850b3b83791ba0e2377ba40383c5abc258b839d Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 8 Feb 2013 10:22:02 +0100 Subject: shared: conf-files - add root parameter --- src/binfmt/binfmt.c | 2 +- src/core/load-dropin.c | 2 +- src/journal/catalog.c | 2 +- src/modules-load/modules-load.c | 2 +- src/shared/conf-files.c | 10 +++++----- src/shared/conf-files.h | 4 ++-- src/shared/install.c | 4 ++-- src/sysctl/sysctl.c | 2 +- src/timedate/timedated.c | 2 +- src/tmpfiles/tmpfiles.c | 2 +- src/udev/udev-rules.c | 2 +- src/udev/udevadm-hwdb.c | 2 +- 12 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c index 788fd4b1a4..296607d6a2 100644 --- a/src/binfmt/binfmt.c +++ b/src/binfmt/binfmt.c @@ -138,7 +138,7 @@ int main(int argc, char *argv[]) { } else { char **files, **f; - r = conf_files_list(&files, ".conf", + r = conf_files_list(&files, ".conf", NULL, "/etc/binfmt.d", "/run/binfmt.d", "/usr/local/lib/binfmt.d", diff --git a/src/core/load-dropin.c b/src/core/load-dropin.c index 52ebfea6dc..95c9a386ca 100644 --- a/src/core/load-dropin.c +++ b/src/core/load-dropin.c @@ -171,7 +171,7 @@ int unit_load_dropin(Unit *u) { _cleanup_strv_free_ char **files = NULL; char **f; - r = conf_files_list_strv(&files, ".conf", (const char**) strv); + r = conf_files_list_strv(&files, ".conf", NULL, (const char**) strv); if (r < 0) { log_error("Failed to get list of configuration files: %s", strerror(-r)); return r; diff --git a/src/journal/catalog.c b/src/journal/catalog.c index 3735ad9213..32256f6263 100644 --- a/src/journal/catalog.c +++ b/src/journal/catalog.c @@ -296,7 +296,7 @@ int catalog_update(void) { goto finish; } - r = conf_files_list_strv(&files, ".catalog", (const char **) conf_file_dirs); + r = conf_files_list_strv(&files, ".catalog", NULL, (const char **) conf_file_dirs); if (r < 0) { log_error("Failed to get catalog files: %s", strerror(-r)); goto finish; diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c index f6279e1975..936aaed8e4 100644 --- a/src/modules-load/modules-load.c +++ b/src/modules-load/modules-load.c @@ -198,7 +198,7 @@ int main(int argc, char *argv[]) { r = EXIT_FAILURE; } - k = conf_files_list(&files, ".conf", + k = conf_files_list(&files, ".conf", NULL, "/etc/modules-load.d", "/run/modules-load.d", "/usr/local/lib/modules-load.d", diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c index 34b86293d3..368b7bf6bb 100644 --- a/src/shared/conf-files.c +++ b/src/shared/conf-files.c @@ -37,7 +37,7 @@ #include "hashmap.h" #include "conf-files.h" -static int files_add(Hashmap *h, const char *path, const char *suffix) { +static int files_add(Hashmap *h, const char *root, const char *path, const char *suffix) { DIR *dir; int r = 0; @@ -90,7 +90,7 @@ static int base_cmp(const void *a, const void *b) { return strcmp(path_get_file_name(s1), path_get_file_name(s2)); } -int conf_files_list_strv(char ***strv, const char *suffix, const char **dirs) { +int conf_files_list_strv(char ***strv, const char *suffix, const char *root, const char **dirs) { Hashmap *fh = NULL; char **files = NULL; const char **p; @@ -105,7 +105,7 @@ int conf_files_list_strv(char ***strv, const char *suffix, const char **dirs) { } STRV_FOREACH(p, dirs) { - r = files_add(fh, *p, suffix); + r = files_add(fh, root, *p, suffix); if (r < 0) log_warning("Failed to search for files in %s: %s", *p, strerror(-r)); @@ -126,7 +126,7 @@ finish: return r; } -int conf_files_list(char ***strv, const char *suffix, const char *dir, ...) { +int conf_files_list(char ***strv, const char *suffix, const char *root, const char *dir, ...) { char **dirs = NULL; va_list ap; int r; @@ -145,7 +145,7 @@ int conf_files_list(char ***strv, const char *suffix, const char *dir, ...) { } strv_uniq(dirs); - r = conf_files_list_strv(strv, suffix, (const char **)dirs); + r = conf_files_list_strv(strv, suffix, root, (const char **)dirs); finish: strv_free(dirs); diff --git a/src/shared/conf-files.h b/src/shared/conf-files.h index f37ee1f3db..4d7941f4cb 100644 --- a/src/shared/conf-files.h +++ b/src/shared/conf-files.h @@ -25,7 +25,7 @@ #include "macro.h" -int conf_files_list(char ***strv, const char *suffix, const char *dir, ...); -int conf_files_list_strv(char ***strv, const char *suffix, const char **dirs); +int conf_files_list(char ***strv, const char *suffix, const char *root, const char *dir, ...); +int conf_files_list_strv(char ***strv, const char *suffix, const char *root, const char **dirs); #endif diff --git a/src/shared/install.c b/src/shared/install.c index b82d1891dd..2555a36c0a 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -1658,7 +1658,7 @@ int unit_file_query_preset(UnitFileScope scope, const char *name) { assert(name); if (scope == UNIT_FILE_SYSTEM) - r = conf_files_list(&files, ".preset", + r = conf_files_list(&files, ".preset", NULL, "/etc/systemd/system-preset", "/usr/local/lib/systemd/system-preset", "/usr/lib/systemd/system-preset", @@ -1667,7 +1667,7 @@ int unit_file_query_preset(UnitFileScope scope, const char *name) { #endif NULL); else if (scope == UNIT_FILE_GLOBAL) - r = conf_files_list(&files, ".preset", + r = conf_files_list(&files, ".preset", NULL, "/etc/systemd/user-preset", "/usr/local/lib/systemd/user-preset", "/usr/lib/systemd/user-preset", diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c index 035e0ec321..f5ef89b385 100644 --- a/src/sysctl/sysctl.c +++ b/src/sysctl/sysctl.c @@ -289,7 +289,7 @@ int main(int argc, char *argv[]) { } else { char **files, **f; - r = conf_files_list(&files, ".conf", + r = conf_files_list(&files, ".conf", NULL, "/etc/sysctl.d", "/run/sysctl.d", "/usr/local/lib/sysctl.d", diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index f5430e9f78..b8c6b36858 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -280,7 +280,7 @@ static char** get_ntp_services(void) { char **r = NULL, **files, **i; int k; - k = conf_files_list(&files, ".list", + k = conf_files_list(&files, ".list", NULL, "/etc/systemd/ntp-units.d", "/run/systemd/ntp-units.d", "/usr/local/lib/systemd/ntp-units.d", diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index c2023f5454..96adbff42e 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -1435,7 +1435,7 @@ int main(int argc, char *argv[]) { } else { char **files, **f; - r = conf_files_list_strv(&files, ".conf", (const char **)conf_file_dirs); + r = conf_files_list_strv(&files, ".conf", NULL, (const char **)conf_file_dirs); if (r < 0) { log_error("Failed to enumerate tmpfiles.d files: %s", strerror(-r)); r = EXIT_FAILURE; diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index bb57d2af48..a86f8c365a 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -1619,7 +1619,7 @@ struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names) return udev_rules_unref(rules); udev_rules_check_timestamp(rules); - r = conf_files_list_strv(&files, ".rules", (const char **)rules->dirs); + r = conf_files_list_strv(&files, ".rules", NULL, (const char **)rules->dirs); if (r < 0) { log_error("failed to enumerate rules files: %s\n", strerror(-r)); return udev_rules_unref(rules); diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index 8e515b9f71..596a89b640 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -537,7 +537,7 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) { } trie->nodes_count++; - err = conf_files_list_strv(&files, ".hwdb", (const char **)conf_file_dirs); + err = conf_files_list_strv(&files, ".hwdb", NULL, (const char **)conf_file_dirs); if (err < 0) { log_error("failed to enumerate hwdb files: %s\n", strerror(-err)); rc = EXIT_FAILURE; -- cgit v1.2.1 From e02caf30ac6ed2e14f2e6c7f237fde2a3a7acf5d Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 8 Feb 2013 10:45:30 +0100 Subject: shared: conf-files - use root parameter and convert to auto-cleanup --- src/shared/conf-files.c | 29 +++++++++++++---------------- 1 file changed, 13 insertions(+), 16 deletions(-) diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c index 368b7bf6bb..5bbd2388d3 100644 --- a/src/shared/conf-files.c +++ b/src/shared/conf-files.c @@ -38,10 +38,13 @@ #include "conf-files.h" static int files_add(Hashmap *h, const char *root, const char *path, const char *suffix) { - DIR *dir; - int r = 0; + _cleanup_closedir_ DIR *dir; + _cleanup_free_ char *dirpath = NULL; - dir = opendir(path); + if (asprintf(&dirpath, "%s%s", root ? root : "", path) < 0) + return -ENOMEM; + + dir = opendir(dirpath); if (!dir) { if (errno == ENOENT) return 0; @@ -51,14 +54,12 @@ static int files_add(Hashmap *h, const char *root, const char *path, const char for (;;) { struct dirent *de; union dirent_storage buf; - int k; char *p; + int err; - k = readdir_r(dir, &buf.de, &de); - if (k != 0) { - r = -k; - goto finish; - } + err = readdir_r(dir, &buf.de, &de); + if (err != 0) + return err; if (!de) break; @@ -66,10 +67,8 @@ static int files_add(Hashmap *h, const char *root, const char *path, const char if (!dirent_is_file_with_suffix(de, suffix)) continue; - if (asprintf(&p, "%s/%s", path, de->d_name) < 0) { - r = -ENOMEM; - goto finish; - } + if (asprintf(&p, "%s/%s", dirpath, de->d_name) < 0) + return -ENOMEM; if (hashmap_put(h, path_get_file_name(p), p) <= 0) { log_debug("Skip overridden file: %s.", p); @@ -77,9 +76,7 @@ static int files_add(Hashmap *h, const char *root, const char *path, const char } } -finish: - closedir(dir); - return r; + return 0; } static int base_cmp(const void *a, const void *b) { -- cgit v1.2.1 From 3e49f2ecb55185966ee425a45fcd7b8c2526f3af Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 8 Feb 2013 12:00:05 +0100 Subject: udev: udevadm hwdb - add --root= https://bugs.freedesktop.org/show_bug.cgi?id=60398 --- man/udevadm.xml | 6 ++++++ src/udev/udevadm-hwdb.c | 23 +++++++++++++++++------ 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/man/udevadm.xml b/man/udevadm.xml index 7791028221..d0b257dec9 100644 --- a/man/udevadm.xml +++ b/man/udevadm.xml @@ -443,6 +443,12 @@ retrieved properties. + + + + Alternative root path in the filesystem for reading and writing files. + + diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index 596a89b640..ca1bf165a9 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -471,18 +471,21 @@ static int import_file(struct trie *trie, const char *filename) { static void help(void) { printf("Usage: udevadm hwdb OPTIONS\n" " --update update the hardware database\n" - " --test query database and print result\n" + " --test= query database and print result\n" + " --root= alternative root path in the filesystem\n" " --help\n\n"); } static int adm_hwdb(struct udev *udev, int argc, char *argv[]) { static const struct option options[] = { { "update", no_argument, NULL, 'u' }, + { "root", required_argument, NULL, 'r' }, { "test", required_argument, NULL, 't' }, { "help", no_argument, NULL, 'h' }, {} }; const char *test = NULL; + const char *root = ""; bool update = false; struct trie *trie = NULL; int err; @@ -491,7 +494,7 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) { for (;;) { int option; - option = getopt_long(argc, argv, "ut:h", options, NULL); + option = getopt_long(argc, argv, "ut:r:h", options, NULL); if (option == -1) break; @@ -502,6 +505,9 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) { case 't': test = optarg; break; + case 'r': + root = optarg; + break; case 'h': help(); return EXIT_SUCCESS; @@ -515,6 +521,7 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) { if (update) { char **files, **f; + _cleanup_free_ char *hwdb_bin = NULL; trie = calloc(sizeof(struct trie), 1); if (!trie) { @@ -537,7 +544,7 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) { } trie->nodes_count++; - err = conf_files_list_strv(&files, ".hwdb", NULL, (const char **)conf_file_dirs); + err = conf_files_list_strv(&files, ".hwdb", root, (const char **)conf_file_dirs); if (err < 0) { log_error("failed to enumerate hwdb files: %s\n", strerror(-err)); rc = EXIT_FAILURE; @@ -565,10 +572,14 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) { log_debug("strings dedup'ed: %8zu bytes (%8zu)\n", trie->strings->dedup_len, trie->strings->dedup_count); - mkdir_parents("/etc/udev/hwdb.bin", 0755); - err = trie_store(trie, "/etc/udev/hwdb.bin"); + if (asprintf(&hwdb_bin, "%s/etc/udev/hwdb.bin", root) < 0) { + rc = EXIT_FAILURE; + goto out; + } + mkdir_parents(hwdb_bin, 0755); + err = trie_store(trie, hwdb_bin); if (err < 0) { - log_error("Failure writing database /etc/udev/hwdb.bin: %s", strerror(-err)); + log_error("Failure writing database %s: %s", hwdb_bin, strerror(-err)); rc = EXIT_FAILURE; } } -- cgit v1.2.1 From 3d85f7e02aae952cc9f8d0fc1a50b8c112c2c9b5 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 8 Feb 2013 13:25:26 +0100 Subject: build-sys: link libudev against the internal sd-daemon lib, not the source file --- Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index 163e8f8fee..7885a79be8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1715,8 +1715,7 @@ libudev_core_la_SOURCES = \ src/udev/udev-builtin-input_id.c \ src/udev/udev-builtin-net_id.c \ src/udev/udev-builtin-path_id.c \ - src/udev/udev-builtin-usb_id.c \ - src/libsystemd-daemon/sd-daemon.c + src/udev/udev-builtin-usb_id.c libudev_core_la_CFLAGS = \ $(AM_CFLAGS) \ @@ -1726,6 +1725,7 @@ libudev_core_la_CFLAGS = \ libudev_core_la_LIBADD = \ libudev-private.la \ libsystemd-label.la \ + libsystemd-daemon-internal.la \ libsystemd-shared.la \ $(BLKID_LIBS) \ $(KMOD_LIBS) -- cgit v1.2.1 From 990ffbe5cffe7f11a8d3ab2258a85fc52b97bf60 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 8 Feb 2013 23:25:55 +0100 Subject: update TODO --- TODO | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index 205aaa5511..a36cf6f7f8 100644 --- a/TODO +++ b/TODO @@ -56,10 +56,16 @@ Fedora 19: Features: +* support --root in msgcatalog and hwdb + +* document in wiki how to map ical recurrence events to systemd timer unit calendar specifications + +* Support 2012-02~4 as syntax for specifying the fourth to last day of the month. + * We should not set KDSKBMODE to K_UNICODE in vconsole-setup if the kbd is currently in raw/off state. -* Honour "-" for InaccessibleDirectories= and ReadOnlyDirectories= to +* Honour "-" prefix for InaccessibleDirectories= and ReadOnlyDirectories= to suppress errors of the specified path doesn't exist * dev-setup.c: when running in a container, create a tiny stub udev @@ -70,6 +76,8 @@ Features: * nspawn: investigate whether we can support the same as LXC's lxc.network.type=phys mode, and pass through entire network interfaces to the container +* nspawn: maybe add a way to drop additional caps, in addition to add additional caps +* nspawn: maybe explicitly reset loginuid? * merge service_kill() logic into unit_kill_context() and unify the code paths -- cgit v1.2.1 From 79cd774324451baa86c341f36709ec4dd90100d9 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 8 Feb 2013 23:31:13 +0100 Subject: man: fix prototype of sd_get_uids() --- man/sd_get_seats.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/sd_get_seats.xml b/man/sd_get_seats.xml index a300a05751..4bdb5c3e9e 100644 --- a/man/sd_get_seats.xml +++ b/man/sd_get_seats.xml @@ -65,7 +65,7 @@ int sd_get_uids - char*** sessions + uid_t** users -- cgit v1.2.1 From eb124a97fb72d076014253b1acde69d428f15ecf Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 9 Feb 2013 01:17:36 +0100 Subject: update TODO --- TODO | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/TODO b/TODO index a36cf6f7f8..d3731501a2 100644 --- a/TODO +++ b/TODO @@ -27,8 +27,6 @@ Fedora 19: * create /var/log/journal/ -* logind: document new PrepareForSleep(false) semantics and UnlockSessions call in wiki - * external: maybe it is time to patch procps so that "ps" links to libsystemd-logind to print a pretty service name, seat name, session name in its output. Currently it only shows cgroup membership, but @@ -54,17 +52,15 @@ Fedora 19: * The tag "seat-master" in udev is badly named, as it might conflict with actual seat names. -Features: - -* support --root in msgcatalog and hwdb - -* document in wiki how to map ical recurrence events to systemd timer unit calendar specifications - -* Support 2012-02~4 as syntax for specifying the fourth to last day of the month. +* logind: Class property should probably know "background" or so as value for cron jobs, and the inhibition checks should filter those out too. * We should not set KDSKBMODE to K_UNICODE in vconsole-setup if the kbd is currently in raw/off state. +Features: + +* support --root= in msgcatalog compiler + * Honour "-" prefix for InaccessibleDirectories= and ReadOnlyDirectories= to suppress errors of the specified path doesn't exist @@ -73,16 +69,8 @@ Features: so that libudev reports them as present, and systemd's .device units will be activated. -* nspawn: investigate whether we can support the same as LXC's - lxc.network.type=phys mode, and pass through entire network - interfaces to the container -* nspawn: maybe add a way to drop additional caps, in addition to add additional caps -* nspawn: maybe explicitly reset loginuid? - * merge service_kill() logic into unit_kill_context() and unify the code paths -* when auto-detecting the main pid of a service, only look for those processes with ppid == 1 - * introduce ExecCondition= in services * if we have systemd-analyze in C "systemctl dot" should move there too @@ -119,6 +107,7 @@ Features: - logind: add equivalent to sd_pid_get_owner_uid() to the D-Bus API - pam_systemd: try to get old session id from cgroup, if audit sessionid cannot be determined - pam: when leaving a session explicitly exclude the ReleaseSession() caller process from the killing spree + - logind: GetSessionByPID() should accept 0 as PID value * exec: when deinitializating a tty device fix the perms and group, too, not only when initializing. Set access mode/gid to 0620/tty. @@ -174,6 +163,7 @@ Features: - document the exit codes when services fail before they are exec()ed - document that %% can be used to write % in a string that is specifier extended - document that service reload may be implemented as service reexec + - document in wiki how to map ical recurrence events to systemd timer unit calendar specifications * systemctl: - systemctl list-jobs - show dependencies @@ -202,6 +192,7 @@ Features: - timer units should get the ability to trigger when: o CLOCK_REALTIME makes jumps (TFD_TIMER_CANCEL_ON_SET) o DST changes + - Support 2012-02~4 as syntax for specifying the fourth to last day of the month. * update the kernel's TZ (sys_tz) when DST changes @@ -273,6 +264,11 @@ Features: - nspawn: --read-only is not applied recursively to submounts - nspawn: make use of device cgroup controller by default - bind mount read-only the cgroup tree higher than nspawn + - nspawn: investigate whether we can support the same as LXC's + lxc.network.type=phys mode, and pass through entire network + interfaces to the container + - nspawn: maybe add a way to drop additional caps, in addition to add additional caps + - nspawn: maybe explicitly reset loginuid? * cryptsetup: - cryptsetup-generator: warn if the password files are world-readable -- cgit v1.2.1 From 2d96536dd7ef371c94be70cd9fb0fcbc0e5a0329 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 9 Feb 2013 01:25:55 +0100 Subject: logind: rename "seat-master" tag to "master-of-seat" We currently enforce that seats are to be named in the form of "seatXXX", i.e. need to begin with the 4 characters "seat". Thus, "seat-master" would qualify as a seat name. As seat names are frequently used as tags on devices, the "seat-master" tag might hence confuse logind if the user decides to name a seat "seat-master". Hence, avoid any ambuigity: let's rename the "seat-master" tag to "master-of-seat". --- TODO | 3 --- src/login/71-seat.rules.in | 2 +- src/login/logind.c | 4 ++-- src/login/sysfs-show.c | 2 +- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/TODO b/TODO index d3731501a2..d195137190 100644 --- a/TODO +++ b/TODO @@ -49,9 +49,6 @@ Fedora 19: - localectl: add listing support for X11 keymaps, by parsing /usr/share/X11/xkb/rules/xorg.lst - localectl: support new converted x11→console keymaps -* The tag "seat-master" in udev is badly named, as it might conflict with - actual seat names. - * logind: Class property should probably know "background" or so as value for cron jobs, and the inhibition checks should filter those out too. * We should not set KDSKBMODE to K_UNICODE in vconsole-setup if the diff --git a/src/login/71-seat.rules.in b/src/login/71-seat.rules.in index 4f1a9a59a1..a064de4b5e 100644 --- a/src/login/71-seat.rules.in +++ b/src/login/71-seat.rules.in @@ -10,7 +10,7 @@ ACTION=="remove", GOTO="seat_end" TAG=="uaccess", SUBSYSTEM!="sound", TAG+="seat" SUBSYSTEM=="sound", KERNEL=="card*", TAG+="seat" SUBSYSTEM=="input", KERNEL=="input*", TAG+="seat" -SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", TAG+="seat", TAG+="seat-master" +SUBSYSTEM=="graphics", KERNEL=="fb[0-9]*", TAG+="seat", TAG+="master-of-seat" SUBSYSTEM=="usb", ATTR{bDeviceClass}=="09", TAG+="seat" # 'Plugable' USB hub, sound, network, graphics adapter diff --git a/src/login/logind.c b/src/login/logind.c index be793e2a93..680bc1fcdf 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -461,7 +461,7 @@ int manager_enumerate_devices(Manager *m) { goto finish; } - r = udev_enumerate_add_match_tag(e, "seat-master"); + r = udev_enumerate_add_match_tag(e, "master-of-seat"); if (r < 0) goto finish; @@ -1293,7 +1293,7 @@ static int manager_connect_udev(Manager *m) { if (!m->udev_seat_monitor) return -ENOMEM; - r = udev_monitor_filter_add_match_tag(m->udev_seat_monitor, "seat-master"); + r = udev_monitor_filter_add_match_tag(m->udev_seat_monitor, "master-of-seat"); if (r < 0) return r; diff --git a/src/login/sysfs-show.c b/src/login/sysfs-show.c index fc3af75876..3c03bd1f2e 100644 --- a/src/login/sysfs-show.c +++ b/src/login/sysfs-show.c @@ -68,7 +68,7 @@ static int show_sysfs_one( continue; } - is_master = udev_device_has_tag(d, "seat-master"); + is_master = udev_device_has_tag(d, "master-of-seat"); name = udev_device_get_sysattr_value(d, "name"); if (!name) -- cgit v1.2.1 From 97b5f608182773d7ef9ca18913085b3a3eccd943 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Sat, 9 Feb 2013 01:39:44 +0100 Subject: tests: add test of strbuf --- .gitignore | 1 + Makefile.am | 7 ++++ src/test/test-strbuf.c | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 src/test/test-strbuf.c diff --git a/.gitignore b/.gitignore index 6c2944bfa1..f000719daf 100644 --- a/.gitignore +++ b/.gitignore @@ -108,6 +108,7 @@ /test-sched-prio /test-sleep /test-strip-tab-ansi +/test-strbuf /test-strv /test-udev /test-unit-file diff --git a/Makefile.am b/Makefile.am index 7885a79be8..f912c5dd52 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1002,6 +1002,7 @@ noinst_PROGRAMS += \ noinst_tests += \ test-job-type \ test-env-replace \ + test-strbuf \ test-strv \ test-unit-name \ test-unit-file \ @@ -1161,6 +1162,12 @@ test_env_replace_SOURCES = \ test_env_replace_LDADD = \ libsystemd-shared.la +test_strbuf_SOURCES = \ + src/test/test-strbuf.c + +test_strbuf_LDADD = \ + libsystemd-shared.la + test_strv_SOURCES = \ src/test/test-strv.c diff --git a/src/test/test-strbuf.c b/src/test/test-strbuf.c new file mode 100644 index 0000000000..49a3d2bb79 --- /dev/null +++ b/src/test/test-strbuf.c @@ -0,0 +1,93 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Thomas H.P. Andersen + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include + +#include "strbuf.h" +#include "strv.h" +#include "util.h" + +static ssize_t add_string(struct strbuf *sb, const char *s) { + return strbuf_add_string(sb, s, strlen(s)); +} + +static void test_strbuf(void) { + struct strbuf *sb; + _cleanup_strv_free_ char **l; + ssize_t a, b, c, d, e, f, g; + + sb = strbuf_new(); + + a = add_string(sb, "waldo"); + b = add_string(sb, "foo"); + c = add_string(sb, "bar"); + d = add_string(sb, "waldo"); /* duplicate */ + e = add_string(sb, "aldo"); /* duplicate */ + f = add_string(sb, "do"); /* duplicate */ + g = add_string(sb, "waldorf"); /* not a duplicate: matches from tail */ + + /* check the content of the buffer directly */ + l = strv_parse_nulstr(sb->buf, sb->len); + + assert(streq(l[0], "")); /* root*/ + assert(streq(l[1], "waldo")); + assert(streq(l[2], "foo")); + assert(streq(l[3], "bar")); + assert(streq(l[4], "waldorf")); + + assert(sb->nodes_count == 5); /* root + 4 non-duplicates */ + assert(sb->dedup_count == 3); + assert(sb->in_count == 7); + + assert(sb->in_len == 29); /* length of all strings added */ + assert(sb->dedup_len == 11); /* length of all strings duplicated */ + assert(sb->len == 23); /* buffer length: in - dedup + \0 for each node */ + + /* check the returned offsets and the respective content in the buffer */ + assert(a == 1); + assert(b == 7); + assert(c == 11); + assert(d == 1); + assert(e == 2); + assert(f == 4); + assert(g == 15); + + assert(streq(sb->buf + a, "waldo")); + assert(streq(sb->buf + b, "foo")); + assert(streq(sb->buf + c, "bar")); + assert(streq(sb->buf + d, "waldo")); + assert(streq(sb->buf + e, "aldo")); + assert(streq(sb->buf + f, "do")); + assert(streq(sb->buf + g, "waldorf")); + + strbuf_complete(sb); + assert(sb->root == NULL); + + strbuf_cleanup(sb); +} + +int main(int argc, const char *argv[]) +{ + test_strbuf(); + + return 0; +} -- cgit v1.2.1 From c65eb8365344eeb72ee2c0b333ab54d925263b3f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 25 Jan 2013 22:33:33 +0100 Subject: shutdown: issue a sync() as soon as shutdown.target is queued --- Makefile.am | 7 ++++-- src/core/job.c | 26 ++++++++++++++++++++ src/core/job.h | 2 ++ src/core/sync.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/core/sync.h | 24 +++++++++++++++++++ src/core/transaction.c | 1 + 6 files changed, 123 insertions(+), 2 deletions(-) create mode 100644 src/core/sync.c create mode 100644 src/core/sync.h diff --git a/Makefile.am b/Makefile.am index f912c5dd52..2b7d78ccf5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -853,7 +853,9 @@ libsystemd_core_la_SOURCES = \ src/core/syscall-list.c \ src/core/syscall-list.h \ src/core/audit-fd.c \ - src/core/audit-fd.h + src/core/audit-fd.h \ + src/core/sync.c \ + src/core/sync.h if HAVE_KMOD libsystemd_core_la_SOURCES += \ @@ -873,7 +875,8 @@ libsystemd_core_la_CFLAGS = \ $(LIBWRAP_CFLAGS) \ $(PAM_CFLAGS) \ $(AUDIT_CFLAGS) \ - $(KMOD_CFLAGS) + $(KMOD_CFLAGS) \ + -pthread libsystemd_core_la_LIBADD = \ libsystemd-capability.la \ diff --git a/src/core/job.c b/src/core/job.c index 6a03d17aa8..2bafbc1589 100644 --- a/src/core/job.c +++ b/src/core/job.c @@ -34,6 +34,9 @@ #include "load-dropin.h" #include "log.h" #include "dbus-job.h" +#include "special.h" +#include "sync.h" +#include "virt.h" JobBusClient* job_bus_client_new(DBusConnection *connection, const char *name) { JobBusClient *cl; @@ -1061,6 +1064,29 @@ int job_coldplug(Job *j) { return 0; } +void job_shutdown_magic(Job *j) { + assert(j); + + /* The shutdown target gets some special treatment here: we + * tell the kernel to begin with flushing its disk caches, to + * optimize shutdown time a bit. Ideally we wouldn't hardcode + * this magic into PID 1. However all other processes aren't + * options either since they'd exit much sooner than PID 1 and + * asynchronous sync() would cause their exit to be + * delayed. */ + + if (!unit_has_name(j->unit, SPECIAL_SHUTDOWN_TARGET)) + return; + + if (j->type != JOB_START) + return; + + if (detect_container(NULL) > 0) + return; + + asynchronous_sync(); +} + static const char* const job_state_table[_JOB_STATE_MAX] = { [JOB_WAITING] = "waiting", [JOB_RUNNING] = "running" diff --git a/src/core/job.h b/src/core/job.h index 3aa49d4b46..d10e6b6b0e 100644 --- a/src/core/job.h +++ b/src/core/job.h @@ -217,6 +217,8 @@ int job_finish_and_invalidate(Job *j, JobResult result, bool recursive); char *job_dbus_path(Job *j); +void job_shutdown_magic(Job *j); + const char* job_type_to_string(JobType t); JobType job_type_from_string(const char *s); diff --git a/src/core/sync.c b/src/core/sync.c new file mode 100644 index 0000000000..7e74b63071 --- /dev/null +++ b/src/core/sync.c @@ -0,0 +1,65 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include + +#include "sync.h" + +static void *sync_thread(void *p) { + sync(); + return NULL; +} + +int asynchronous_sync(void) { + pthread_attr_t a; + pthread_t t; + int r; + + /* It kinda sucks that we have to resort to threads to + * implement an asynchronous sync(), but well, such is + * life. + * + * Note that issuing this command right before exiting a + * process will cause the process to wait for the sync() to + * complete. This function hence is nicely asynchronous really + * only in long running processes. */ + + r = pthread_attr_init(&a); + if (r != 0) + return -r; + + r = pthread_attr_setdetachstate(&a, PTHREAD_CREATE_DETACHED); + if (r != 0) { + r = -r; + goto finish; + } + + r = pthread_create(&t, &a, sync_thread, NULL); + if (r != 0) { + r = -r; + goto finish; + } + +finish: + pthread_attr_destroy(&a); + return r; +} diff --git a/src/core/sync.h b/src/core/sync.h new file mode 100644 index 0000000000..eb26c88deb --- /dev/null +++ b/src/core/sync.h @@ -0,0 +1,24 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +int asynchronous_sync(void); diff --git a/src/core/transaction.c b/src/core/transaction.c index 1854047afd..dbc30af7d1 100644 --- a/src/core/transaction.c +++ b/src/core/transaction.c @@ -620,6 +620,7 @@ static int transaction_apply(Transaction *tr, Manager *m, JobMode mode) { job_add_to_run_queue(j); job_add_to_dbus_queue(j); job_start_timer(j); + job_shutdown_magic(j); } return 0; -- cgit v1.2.1 From a25d4d0e3ccf0e9bf0b37e5791275fd6ca5eb4ae Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 9 Feb 2013 02:40:57 +0100 Subject: vconsole-setup: don't set the kbd mode to unicode if is is currently in raw/off mode Let's not confuse X11 --- src/vconsole/vconsole-setup.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c index 65017055f3..1208aeb524 100644 --- a/src/vconsole/vconsole-setup.c +++ b/src/vconsole/vconsole-setup.c @@ -68,9 +68,22 @@ static int disable_utf8(int fd) { static int enable_utf8(int fd) { int r = 0, k; - - if (ioctl(fd, KDSKBMODE, K_UNICODE) < 0) - r = -errno; + long current = 0; + + if (ioctl(fd, KDGKBMODE, ¤t) < 0 || current == K_XLATE) { + /* + * Change the current keyboard to unicode, unless it + * is currently in raw or off mode anyway. We + * shouldn't interfere with X11's processing of the + * key events. + * + * http://lists.freedesktop.org/archives/systemd-devel/2013-February/008573.html + * + */ + + if (ioctl(fd, KDSKBMODE, K_UNICODE) < 0) + r = -errno; + } if (loop_write(fd, "\033%G", 3, false) < 0) r = -errno; -- cgit v1.2.1 From efd3cf43266c206f67b96dda4bef0acd43500efc Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 9 Feb 2013 02:47:42 +0100 Subject: update TODO --- TODO | 3 --- 1 file changed, 3 deletions(-) diff --git a/TODO b/TODO index d195137190..91146ff664 100644 --- a/TODO +++ b/TODO @@ -51,9 +51,6 @@ Fedora 19: * logind: Class property should probably know "background" or so as value for cron jobs, and the inhibition checks should filter those out too. -* We should not set KDSKBMODE to K_UNICODE in vconsole-setup if the - kbd is currently in raw/off state. - Features: * support --root= in msgcatalog compiler -- cgit v1.2.1 From 89ca69941d0422069903b95265cee02bc1f498f7 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Sat, 9 Feb 2013 14:09:05 +0100 Subject: man: typo fix in systemd.socket --- man/systemd.socket.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml index 28730ca441..f2d4dbe3b7 100644 --- a/man/systemd.socket.xml +++ b/man/systemd.socket.xml @@ -75,7 +75,7 @@ , , and - commands are executed + commands are executed in, and in systemd.kill5 which define the way the processes are -- cgit v1.2.1 From c62c294fd521e5b65bb52f831773916bbc4cd90a Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Sun, 10 Feb 2013 21:56:03 +0100 Subject: tests: add tests of strxcpyx also fix a bad indentation in test-strbug.c --- .gitignore | 1 + Makefile.am | 7 ++++ src/test/test-strbuf.c | 2 +- src/test/test-strxcpyx.c | 101 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 110 insertions(+), 1 deletion(-) create mode 100644 src/test/test-strxcpyx.c diff --git a/.gitignore b/.gitignore index f000719daf..350aaf7a1f 100644 --- a/.gitignore +++ b/.gitignore @@ -110,6 +110,7 @@ /test-strip-tab-ansi /test-strbuf /test-strv +/test-strxcpyx /test-udev /test-unit-file /test-unit-name diff --git a/Makefile.am b/Makefile.am index 2b7d78ccf5..8a7c2b67aa 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1007,6 +1007,7 @@ noinst_tests += \ test-env-replace \ test-strbuf \ test-strv \ + test-strxcpyx \ test-unit-name \ test-unit-file \ test-util \ @@ -1178,6 +1179,12 @@ test_strv_LDADD = \ libsystemd-shared.la \ libsystemd-id128-internal.la +test_strxcpyx_SOURCES = \ + src/test/test-strxcpyx.c + +test_strxcpyx_LDADD = \ + libsystemd-shared.la + test_install_SOURCES = \ src/test/test-install.c diff --git a/src/test/test-strbuf.c b/src/test/test-strbuf.c index 49a3d2bb79..e9b6c033fd 100644 --- a/src/test/test-strbuf.c +++ b/src/test/test-strbuf.c @@ -32,7 +32,7 @@ static ssize_t add_string(struct strbuf *sb, const char *s) { static void test_strbuf(void) { struct strbuf *sb; - _cleanup_strv_free_ char **l; + _cleanup_strv_free_ char **l; ssize_t a, b, c, d, e, f, g; sb = strbuf_new(); diff --git a/src/test/test-strxcpyx.c b/src/test/test-strxcpyx.c new file mode 100644 index 0000000000..9b4dae805f --- /dev/null +++ b/src/test/test-strxcpyx.c @@ -0,0 +1,101 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Thomas H.P. Andersen + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include + +#include "util.h" +#include "strv.h" +#include "strxcpyx.h" + +static void test_strpcpy(void) { + char target[25]; + char *s = target; + size_t space_left; + + space_left = sizeof(target); + space_left = strpcpy(&s, space_left, "12345"); + space_left = strpcpy(&s, space_left, "hey hey hey"); + space_left = strpcpy(&s, space_left, "waldo"); + space_left = strpcpy(&s, space_left, "ba"); + space_left = strpcpy(&s, space_left, "r"); + space_left = strpcpy(&s, space_left, "foo"); + + assert(streq(target, "12345hey hey heywaldobar")); + assert(space_left == 0); +} + +static void test_strpcpyf(void) { + char target[25]; + char *s = target; + size_t space_left; + + space_left = sizeof(target); + space_left = strpcpyf(&s, space_left, "space left: %ld. ", space_left); + space_left = strpcpyf(&s, space_left, "foo%s", "bar"); + + assert(streq(target, "space left: 25. foobar")); + assert(space_left == 3); +} + +static void test_strpcpyl(void) { + char target[25]; + char *s = target; + size_t space_left; + + space_left = sizeof(target); + space_left = strpcpyl(&s, space_left, "waldo", " test", " waldo. ", NULL); + space_left = strpcpyl(&s, space_left, "Banana", NULL); + + assert(streq(target, "waldo test waldo. Banana")); + assert(space_left == 1); +} + +static void test_strscpy(void) { + char target[25]; + size_t space_left; + + space_left = sizeof(target); + space_left = strscpy(target, space_left, "12345"); + + assert(streq(target, "12345")); + assert(space_left == 20); +} + +static void test_strscpyl(void) { + char target[25]; + size_t space_left; + + space_left = sizeof(target); + space_left = strscpyl(target, space_left, "12345", "waldo", "waldo", NULL); + + assert(streq(target, "12345waldowaldo")); + assert(space_left == 10); +} + +int main(int argc, char *argv[]) { + test_strpcpy(); + test_strpcpyf(); + test_strpcpyl(); + test_strscpy(); + test_strscpyl(); + + return 0; +} -- cgit v1.2.1 From 4d1a69043862ed979642f5688097160355d4cc81 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Feb 2013 03:46:08 +0100 Subject: env: considerably beef up environment cleaning logic Now, actually check if the environment variable names and values used are valid, before accepting them. With this in place are at some places more rigid than POSIX, and less rigid at others. For example, this code allows lower-case environment variables (which POSIX suggests not to use), but it will not allow non-UTF8 variable values. All in all this should be a good middle ground of what to allow and what not to allow as environment variables. (This also splits out all environment related calls into env-util.[ch]) --- Makefile.am | 2 + src/core/dbus-manager.c | 1 + src/core/execute.c | 1 + src/core/service.c | 1 + src/hostname/hostnamed.c | 1 + src/locale/localed.c | 1 + src/notify/notify.c | 1 + src/shared/env-util.c | 394 ++++++++++++++++++++++++++++++++++++++++++++ src/shared/env-util.h | 41 +++++ src/shared/strv.c | 243 --------------------------- src/shared/strv.h | 11 -- src/shared/util.c | 22 ++- src/shared/util.h | 1 + src/test/test-env-replace.c | 44 ++++- 14 files changed, 502 insertions(+), 262 deletions(-) create mode 100644 src/shared/env-util.c create mode 100644 src/shared/env-util.h diff --git a/Makefile.am b/Makefile.am index 8a7c2b67aa..9da3394c78 100644 --- a/Makefile.am +++ b/Makefile.am @@ -573,6 +573,8 @@ libsystemd_shared_la_SOURCES = \ src/shared/fdset.h \ src/shared/strv.c \ src/shared/strv.h \ + src/shared/env-util.c \ + src/shared/env-util.h \ src/shared/strbuf.c \ src/shared/strbuf.h \ src/shared/strxcpyx.c \ diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index b7829572f5..7071196238 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -36,6 +36,7 @@ #include "path-util.h" #include "dbus-unit.h" #include "virt.h" +#include "env-util.h" #define BUS_MANAGER_INTERFACE_BEGIN \ " \n" diff --git a/src/core/execute.c b/src/core/execute.c index 1413c9110e..aa58bc488c 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -64,6 +64,7 @@ #include "loopback-setup.h" #include "path-util.h" #include "syscall-list.h" +#include "env-util.h" #define IDLE_TIMEOUT_USEC (5*USEC_PER_SEC) diff --git a/src/core/service.c b/src/core/service.c index 914146383c..9c4bc41430 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -42,6 +42,7 @@ #include "path-util.h" #include "util.h" #include "utf8.h" +#include "env-util.h" #ifdef HAVE_SYSV_COMPAT diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index 92b150bfc9..c5a8b6faaf 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -32,6 +32,7 @@ #include "polkit.h" #include "def.h" #include "virt.h" +#include "env-util.h" #define INTERFACE \ " \n" \ diff --git a/src/locale/localed.c b/src/locale/localed.c index bb2a3a2e54..6b1a793d3b 100644 --- a/src/locale/localed.c +++ b/src/locale/localed.c @@ -31,6 +31,7 @@ #include "dbus-common.h" #include "polkit.h" #include "def.h" +#include "env-util.h" #define INTERFACE \ " \n" \ diff --git a/src/notify/notify.c b/src/notify/notify.c index f521f56659..1e9766f862 100644 --- a/src/notify/notify.c +++ b/src/notify/notify.c @@ -34,6 +34,7 @@ #include "log.h" #include "sd-readahead.h" #include "build.h" +#include "env-util.h" static bool arg_ready = false; static pid_t arg_pid = 0; diff --git a/src/shared/env-util.c b/src/shared/env-util.c new file mode 100644 index 0000000000..7a213a77c0 --- /dev/null +++ b/src/shared/env-util.c @@ -0,0 +1,394 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2012 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include +#include + +#include "strv.h" +#include "utf8.h" +#include "util.h" +#include "env-util.h" + +#define VALID_CHARS_ENV_NAME \ + "0123456789" \ + "abcdefghijklmnopqrstuvwxyz" \ + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ + "_" + +#ifndef ARG_MAX +#define ARG_MAX ((size_t) sysconf(_SC_ARG_MAX)) +#endif + +static bool env_name_is_valid_n(const char *e, size_t n) { + const char *p; + + if (!e) + return false; + + if (n <= 0) + return false; + + if (e[0] >= '0' && e[0] <= '9') + return false; + + /* POSIX says the overall size of the environment block cannot + * be > ARG_MAX, an individual assignment hence cannot be + * either. Discounting the equal sign and trailing NUL this + * hence leaves ARG_MAX-2 as longest possible variable + * name. */ + if (n > ARG_MAX - 2) + return false; + + for (p = e; p < e + n; p++) + if (!strchr(VALID_CHARS_ENV_NAME, *p)) + return false; + + return true; +} + +bool env_name_is_valid(const char *e) { + if (!e) + return false; + + return env_name_is_valid_n(e, strlen(e)); +} + +bool env_value_is_valid(const char *e) { + if (!e) + return false; + + if (!utf8_is_valid(e)) + return false; + + if (string_has_cc(e)) + return false; + + /* POSIX says the overall size of the environment block cannot + * be > ARG_MAX, an individual assignment hence cannot be + * either. Discounting the shortest possible variable name of + * length 1, the equal sign and trailing NUL this hence leaves + * ARG_MAX-3 as longest possible variable value. */ + if (strlen(e) > ARG_MAX - 3) + return false; + + return true; +} + +bool env_assignment_is_valid(const char *e) { + const char *eq; + + eq = strchr(e, '='); + if (!eq) + return false; + + if (!env_name_is_valid_n(e, eq - e)) + return false; + + if (!env_value_is_valid(eq + 1)) + return false; + + /* POSIX says the overall size of the environment block cannot + * be > ARG_MAX, hence the individual variable assignments + * cannot be either, but let's room for one trailing NUL + * byte. */ + if (strlen(e) > ARG_MAX - 1) + return false; + + return true; +} + +bool strv_env_is_valid(char **e) { + char **p, **q; + + STRV_FOREACH(p, e) { + size_t k; + + if (!env_assignment_is_valid(*p)) + return false; + + /* Check if there are duplicate assginments */ + k = strcspn(*p, "="); + STRV_FOREACH(q, p + 1) + if (strncmp(*p, *q, k) == 0 && (*q)[k] == '=') + return false; + } + + return true; +} + +static int env_append(char **r, char ***k, char **a) { + assert(r); + assert(k); + + if (!a) + return 0; + + /* Add the entries of a to *k unless they already exist in *r + * in which case they are overridden instead. This assumes + * there is enough space in the r array. */ + + for (; *a; a++) { + char **j; + size_t n; + + n = strcspn(*a, "="); + + if ((*a)[n] == '=') + n++; + + for (j = r; j < *k; j++) + if (strncmp(*j, *a, n) == 0) + break; + + if (j >= *k) + (*k)++; + else + free(*j); + + *j = strdup(*a); + if (!*j) + return -ENOMEM; + } + + return 0; +} + +char **strv_env_merge(unsigned n_lists, ...) { + size_t n = 0; + char **l, **k, **r; + va_list ap; + unsigned i; + + /* Merges an arbitrary number of environment sets */ + + va_start(ap, n_lists); + for (i = 0; i < n_lists; i++) { + l = va_arg(ap, char**); + n += strv_length(l); + } + va_end(ap); + + r = new(char*, n+1); + if (!r) + return NULL; + + k = r; + + va_start(ap, n_lists); + for (i = 0; i < n_lists; i++) { + l = va_arg(ap, char**); + if (env_append(r, &k, l) < 0) + goto fail; + } + va_end(ap); + + *k = NULL; + + return r; + +fail: + va_end(ap); + strv_free(r); + + return NULL; +} + +static bool env_match(const char *t, const char *pattern) { + assert(t); + assert(pattern); + + /* pattern a matches string a + * a matches a= + * a matches a=b + * a= matches a= + * a=b matches a=b + * a= does not match a + * a=b does not match a= + * a=b does not match a + * a=b does not match a=c */ + + if (streq(t, pattern)) + return true; + + if (!strchr(pattern, '=')) { + size_t l = strlen(pattern); + + return strncmp(t, pattern, l) == 0 && t[l] == '='; + } + + return false; +} + +char **strv_env_delete(char **x, unsigned n_lists, ...) { + size_t n, i = 0; + char **k, **r; + va_list ap; + + /* Deletes every entry from x that is mentioned in the other + * string lists */ + + n = strv_length(x); + + r = new(char*, n+1); + if (!r) + return NULL; + + STRV_FOREACH(k, x) { + unsigned v; + + va_start(ap, n_lists); + for (v = 0; v < n_lists; v++) { + char **l, **j; + + l = va_arg(ap, char**); + STRV_FOREACH(j, l) + if (env_match(*k, *j)) + goto skip; + } + va_end(ap); + + r[i] = strdup(*k); + if (!r[i]) { + strv_free(r); + return NULL; + } + + i++; + continue; + + skip: + va_end(ap); + } + + r[i] = NULL; + + assert(i <= n); + + return r; +} + +char **strv_env_unset(char **l, const char *p) { + + char **f, **t; + + if (!l) + return NULL; + + assert(p); + + /* Drops every occurrence of the env var setting p in the + * string list. edits in-place. */ + + for (f = t = l; *f; f++) { + + if (env_match(*f, p)) { + free(*f); + continue; + } + + *(t++) = *f; + } + + *t = NULL; + return l; +} + +char **strv_env_set(char **x, const char *p) { + + char **k, **r; + char* m[2] = { (char*) p, NULL }; + + /* Overrides the env var setting of p, returns a new copy */ + + r = new(char*, strv_length(x)+2); + if (!r) + return NULL; + + k = r; + if (env_append(r, &k, x) < 0) + goto fail; + + if (env_append(r, &k, m) < 0) + goto fail; + + *k = NULL; + + return r; + +fail: + strv_free(r); + return NULL; +} + +char *strv_env_get_n(char **l, const char *name, size_t k) { + char **i; + + assert(name); + + if (k <= 0) + return NULL; + + STRV_FOREACH(i, l) + if (strncmp(*i, name, k) == 0 && + (*i)[k] == '=') + return *i + k + 1; + + return NULL; +} + +char *strv_env_get(char **l, const char *name) { + assert(name); + + return strv_env_get_n(l, name, strlen(name)); +} + +char **strv_env_clean(char **e) { + char **p, **q; + int k = 0; + + STRV_FOREACH(p, e) { + size_t n; + bool duplicate = false; + + if (!env_assignment_is_valid(*p)) { + free(*p); + continue; + } + + n = strcspn(*p, "="); + STRV_FOREACH(q, p + 1) + if (strncmp(*p, *q, n) == 0 && (*q)[n] == '=') { + duplicate = true; + break; + } + + if (duplicate) { + free(*p); + continue; + } + + e[k++] = *p; + } + + e[k] = NULL; + return e; +} diff --git a/src/shared/env-util.h b/src/shared/env-util.h new file mode 100644 index 0000000000..93bf596ca8 --- /dev/null +++ b/src/shared/env-util.h @@ -0,0 +1,41 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include + +bool env_name_is_valid(const char *e); +bool env_value_is_valid(const char *e); +bool env_assignment_is_valid(const char *e); + +bool strv_env_is_valid(char **e); +char **strv_env_clean(char **l); + +char **strv_env_merge(unsigned n_lists, ...); +char **strv_env_delete(char **x, unsigned n_lists, ...); /* New copy */ + +char **strv_env_set(char **x, const char *p); /* New copy ... */ +char **strv_env_unset(char **l, const char *p); /* In place ... */ + +char *strv_env_get_n(char **l, const char *name, size_t k); +char *strv_env_get(char **x, const char *n); diff --git a/src/shared/strv.c b/src/shared/strv.c index fc6104ffea..ee0b71ece0 100644 --- a/src/shared/strv.c +++ b/src/shared/strv.c @@ -458,249 +458,6 @@ char **strv_remove_prefix(char **l, const char *s) { return l; } -static int env_append(char **r, char ***k, char **a) { - assert(r); - assert(k); - - if (!a) - return 0; - - /* Add the entries of a to *k unless they already exist in *r - * in which case they are overridden instead. This assumes - * there is enough space in the r array. */ - - for (; *a; a++) { - char **j; - size_t n; - - n = strcspn(*a, "="); - - if ((*a)[n] == '=') - n++; - - for (j = r; j < *k; j++) - if (strncmp(*j, *a, n) == 0) - break; - - if (j >= *k) - (*k)++; - else - free(*j); - - *j = strdup(*a); - if (!*j) - return -ENOMEM; - } - - return 0; -} - -char **strv_env_merge(unsigned n_lists, ...) { - size_t n = 0; - char **l, **k, **r; - va_list ap; - unsigned i; - - /* Merges an arbitrary number of environment sets */ - - va_start(ap, n_lists); - for (i = 0; i < n_lists; i++) { - l = va_arg(ap, char**); - n += strv_length(l); - } - va_end(ap); - - r = new(char*, n+1); - if (!r) - return NULL; - - k = r; - - va_start(ap, n_lists); - for (i = 0; i < n_lists; i++) { - l = va_arg(ap, char**); - if (env_append(r, &k, l) < 0) - goto fail; - } - va_end(ap); - - *k = NULL; - - return r; - -fail: - va_end(ap); - strv_free(r); - - return NULL; -} - -static bool env_match(const char *t, const char *pattern) { - assert(t); - assert(pattern); - - /* pattern a matches string a - * a matches a= - * a matches a=b - * a= matches a= - * a=b matches a=b - * a= does not match a - * a=b does not match a= - * a=b does not match a - * a=b does not match a=c */ - - if (streq(t, pattern)) - return true; - - if (!strchr(pattern, '=')) { - size_t l = strlen(pattern); - - return strncmp(t, pattern, l) == 0 && t[l] == '='; - } - - return false; -} - -char **strv_env_delete(char **x, unsigned n_lists, ...) { - size_t n, i = 0; - char **k, **r; - va_list ap; - - /* Deletes every entry from x that is mentioned in the other - * string lists */ - - n = strv_length(x); - - r = new(char*, n+1); - if (!r) - return NULL; - - STRV_FOREACH(k, x) { - unsigned v; - - va_start(ap, n_lists); - for (v = 0; v < n_lists; v++) { - char **l, **j; - - l = va_arg(ap, char**); - STRV_FOREACH(j, l) - if (env_match(*k, *j)) - goto skip; - } - va_end(ap); - - r[i] = strdup(*k); - if (!r[i]) { - strv_free(r); - return NULL; - } - - i++; - continue; - - skip: - va_end(ap); - } - - r[i] = NULL; - - assert(i <= n); - - return r; -} - -char **strv_env_unset(char **l, const char *p) { - - char **f, **t; - - if (!l) - return NULL; - - assert(p); - - /* Drops every occurrence of the env var setting p in the - * string list. edits in-place. */ - - for (f = t = l; *f; f++) { - - if (env_match(*f, p)) { - free(*f); - continue; - } - - *(t++) = *f; - } - - *t = NULL; - return l; -} - -char **strv_env_set(char **x, const char *p) { - - char **k, **r; - char* m[2] = { (char*) p, NULL }; - - /* Overrides the env var setting of p, returns a new copy */ - - r = new(char*, strv_length(x)+2); - if (!r) - return NULL; - - k = r; - if (env_append(r, &k, x) < 0) - goto fail; - - if (env_append(r, &k, m) < 0) - goto fail; - - *k = NULL; - - return r; - -fail: - strv_free(r); - return NULL; - -} - -char *strv_env_get_with_length(char **l, const char *name, size_t k) { - char **i; - - assert(name); - - STRV_FOREACH(i, l) - if (strncmp(*i, name, k) == 0 && - (*i)[k] == '=') - return *i + k + 1; - - return NULL; -} - -char *strv_env_get(char **l, const char *name) { - return strv_env_get_with_length(l, name, strlen(name)); -} - -char **strv_env_clean(char **l) { - char **r, **ret; - - for (r = ret = l; *l; l++) { - const char *equal; - - equal = strchr(*l, '='); - - if (equal && equal[1] == 0) { - free(*l); - continue; - } - - *(r++) = *l; - } - - *r = NULL; - - return ret; -} - char **strv_parse_nulstr(const char *s, size_t l) { const char *p; unsigned c = 0, i = 0; diff --git a/src/shared/strv.h b/src/shared/strv.h index 33c752a313..d28625bd2f 100644 --- a/src/shared/strv.h +++ b/src/shared/strv.h @@ -61,17 +61,6 @@ char **strv_split_quoted(const char *s) _malloc_; char *strv_join(char **l, const char *separator) _malloc_; -char **strv_env_merge(unsigned n_lists, ...); -char **strv_env_delete(char **x, unsigned n_lists, ...); - -char **strv_env_set(char **x, const char *p); -char **strv_env_unset(char **l, const char *p); - -char *strv_env_get_with_length(char **l, const char *name, size_t k); -char *strv_env_get(char **x, const char *n); - -char **strv_env_clean(char **l); - char **strv_parse_nulstr(const char *s, size_t l); bool strv_overlap(char **a, char **b); diff --git a/src/shared/util.c b/src/shared/util.c index 969ef2bb90..5b795d4a24 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -70,6 +70,7 @@ #include "path-util.h" #include "exit-status.h" #include "hashmap.h" +#include "env-util.h" int saved_argc = 0; char **saved_argv = NULL; @@ -3341,10 +3342,10 @@ char *replace_env(const char *format, char **env) { if (*e == '}') { const char *t; - if (!(t = strv_env_get_with_length(env, word+2, e-word-2))) - t = ""; + t = strempty(strv_env_get_n(env, word+2, e-word-2)); - if (!(k = strappend(r, t))) + k = strappend(r, t); + if (!k) goto fail; free(r); @@ -3385,7 +3386,8 @@ char **replace_env_argv(char **argv, char **env) { char **w, **m; unsigned q; - if ((e = strv_env_get(env, *i+1))) { + e = strv_env_get(env, *i+1); + if (e) { if (!(m = strv_split_quoted(e))) { r[k] = NULL; @@ -5608,6 +5610,18 @@ bool string_is_safe(const char *p) { return true; } +bool string_has_cc(const char *p) { + const char *t; + + assert(p); + + for (t = p; *t; t++) + if (*t > 0 && *t < ' ') + return true; + + return false; +} + bool path_is_safe(const char *p) { if (isempty(p)) diff --git a/src/shared/util.h b/src/shared/util.h index 223617c3ff..18494f14f2 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -544,6 +544,7 @@ _malloc_ static inline void *memdup_multiply(const void *p, size_t a, size_t b) bool filename_is_safe(const char *p); bool path_is_safe(const char *p); bool string_is_safe(const char *p); +bool string_has_cc(const char *p); void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *, void *), diff --git a/src/test/test-env-replace.c b/src/test/test-env-replace.c index 2da3845354..b8747db681 100644 --- a/src/test/test-env-replace.c +++ b/src/test/test-env-replace.c @@ -24,6 +24,7 @@ #include "util.h" #include "strv.h" +#include "env-util.h" static void test_strv_env_delete(void) { _cleanup_strv_free_ char **a = NULL, **b = NULL, **c = NULL, **d = NULL; @@ -81,10 +82,12 @@ static void test_strv_env_merge(void) { assert(strv_length(r) == 6); strv_env_clean(r); - assert(streq(r[0], "PIEP")); - assert(streq(r[1], "SCHLUMPF=SMURFF")); - assert(streq(r[2], "NANANANA=YES")); - assert(strv_length(r) == 3); + assert(streq(r[0], "FOO=")); + assert(streq(r[1], "WALDO=")); + assert(streq(r[2], "SCHLUMPF=SMURFF")); + assert(streq(r[3], "PIEP=")); + assert(streq(r[4], "NANANANA=YES")); + assert(strv_length(r) == 5); } static void test_replace_env_arg(void) { @@ -145,6 +148,38 @@ static void test_normalize_env_assignment(void) { test_one_normalize(" ' xyz' = 'bar ' ", "' xyz'=bar "); } +static void test_env_clean(void) { + + _cleanup_strv_free_ char **e; + + e = strv_new("FOOBAR=WALDO", + "FOOBAR=WALDO", + "FOOBAR", + "F", + "X=", + "F=F", + "=", + "=F", + "", + "0000=000", + "äöüß=abcd", + "abcd=äöüß", + "xyz\n=xyz", + "xyz=xyz\n", + "another=one", + "another=final one", + NULL); + + assert_se(strv_env_clean(e)); + + assert_se(streq(e[0], "FOOBAR=WALDO")); + assert_se(streq(e[1], "X=")); + assert_se(streq(e[2], "F=F")); + assert_se(streq(e[3], "abcd=äöüß")); + assert_se(streq(e[4], "another=final one")); + assert_se(e[5] == NULL); +} + int main(int argc, char *argv[]) { test_strv_env_delete(); test_strv_env_unset(); @@ -152,6 +187,7 @@ int main(int argc, char *argv[]) { test_strv_env_merge(); test_replace_env_arg(); test_normalize_env_assignment(); + test_env_clean(); return 0; } -- cgit v1.2.1 From 9b5d6bd909855543cba75a4469bff6f82845cf0d Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Feb 2013 03:52:32 +0100 Subject: test-env-replace: better user assert_se() everywhere For test tools it's better to use assert_se() rather than assert(), since the former is not optimized away, even if -DNDEBUG is used. That means the test program now retains its usefulness even if -DNDEBUG is used. This also adds in some OOM checks, to be extra anal... --- src/test/test-env-replace.c | 101 +++++++++++++++++++++++++------------------- 1 file changed, 58 insertions(+), 43 deletions(-) diff --git a/src/test/test-env-replace.c b/src/test/test-env-replace.c index b8747db681..d6cb2892e7 100644 --- a/src/test/test-env-replace.c +++ b/src/test/test-env-replace.c @@ -30,64 +30,77 @@ static void test_strv_env_delete(void) { _cleanup_strv_free_ char **a = NULL, **b = NULL, **c = NULL, **d = NULL; a = strv_new("FOO=BAR", "WALDO=WALDO", "WALDO=", "PIEP", "SCHLUMPF=SMURF", NULL); + assert_se(a); + b = strv_new("PIEP", "FOO", NULL); + assert_se(b); + c = strv_new("SCHLUMPF", NULL); + assert_se(c); d = strv_env_delete(a, 2, b, c); + assert_se(d); - assert(streq(d[0], "WALDO=WALDO")); - assert(streq(d[1], "WALDO=")); - assert(strv_length(d) == 2); + assert_se(streq(d[0], "WALDO=WALDO")); + assert_se(streq(d[1], "WALDO=")); + assert_se(strv_length(d) == 2); } static void test_strv_env_unset(void) { _cleanup_strv_free_ char **l = NULL; l = strv_new("PIEP", "SCHLUMPF=SMURFF", "NANANANA=YES", NULL); + assert_se(l); - strv_env_unset(l, "SCHLUMPF"); + assert_se(strv_env_unset(l, "SCHLUMPF") == l); - assert(streq(l[0], "PIEP")); - assert(streq(l[1], "NANANANA=YES")); - assert(strv_length(l) == 2); + assert_se(streq(l[0], "PIEP")); + assert_se(streq(l[1], "NANANANA=YES")); + assert_se(strv_length(l) == 2); } static void test_strv_env_set(void) { _cleanup_strv_free_ char **l = NULL, **r = NULL; l = strv_new("PIEP", "SCHLUMPF=SMURFF", "NANANANA=YES", NULL); + assert_se(l); r = strv_env_set(l, "WALDO=WALDO"); + assert_se(r); - assert(streq(r[0], "PIEP")); - assert(streq(r[1], "SCHLUMPF=SMURFF")); - assert(streq(r[2], "NANANANA=YES")); - assert(streq(r[3], "WALDO=WALDO")); - assert(strv_length(r) == 4); + assert_se(streq(r[0], "PIEP")); + assert_se(streq(r[1], "SCHLUMPF=SMURFF")); + assert_se(streq(r[2], "NANANANA=YES")); + assert_se(streq(r[3], "WALDO=WALDO")); + assert_se(strv_length(r) == 4); } static void test_strv_env_merge(void) { _cleanup_strv_free_ char **a = NULL, **b = NULL, **r = NULL; a = strv_new("FOO=BAR", "WALDO=WALDO", "WALDO=", "PIEP", "SCHLUMPF=SMURF", NULL); + assert_se(a); + b = strv_new("FOO=KKK", "FOO=", "PIEP=", "SCHLUMPF=SMURFF", "NANANANA=YES", NULL); + assert_se(b); r = strv_env_merge(2, a, b); - assert(streq(r[0], "FOO=")); - assert(streq(r[1], "WALDO=")); - assert(streq(r[2], "PIEP")); - assert(streq(r[3], "SCHLUMPF=SMURFF")); - assert(streq(r[4], "PIEP=")); - assert(streq(r[5], "NANANANA=YES")); - assert(strv_length(r) == 6); - - strv_env_clean(r); - assert(streq(r[0], "FOO=")); - assert(streq(r[1], "WALDO=")); - assert(streq(r[2], "SCHLUMPF=SMURFF")); - assert(streq(r[3], "PIEP=")); - assert(streq(r[4], "NANANANA=YES")); - assert(strv_length(r) == 5); + assert_se(r); + assert_se(streq(r[0], "FOO=")); + assert_se(streq(r[1], "WALDO=")); + assert_se(streq(r[2], "PIEP")); + assert_se(streq(r[3], "SCHLUMPF=SMURFF")); + assert_se(streq(r[4], "PIEP=")); + assert_se(streq(r[5], "NANANANA=YES")); + assert_se(strv_length(r) == 6); + + assert_se(strv_env_clean(r) == r); + assert_se(streq(r[0], "FOO=")); + assert_se(streq(r[1], "WALDO=")); + assert_se(streq(r[2], "SCHLUMPF=SMURFF")); + assert_se(streq(r[3], "PIEP=")); + assert_se(streq(r[4], "NANANANA=YES")); + assert_se(strv_length(r) == 5); } static void test_replace_env_arg(void) { @@ -111,24 +124,25 @@ static void test_replace_env_arg(void) { _cleanup_strv_free_ char **r = NULL; r = replace_env_argv((char**) line, (char**) env); - assert(streq(r[0], "FOO$FOO")); - assert(streq(r[1], "FOO$FOOFOO")); - assert(streq(r[2], "FOOBAR BAR$FOO")); - assert(streq(r[3], "FOOBAR BAR")); - assert(streq(r[4], "BAR BAR")); - assert(streq(r[5], "BAR")); - assert(streq(r[6], "BAR")); - assert(streq(r[7], "BAR BARwaldo")); - assert(streq(r[8], "${FOO")); - assert(strv_length(r) == 9); + assert_se(r); + assert_se(streq(r[0], "FOO$FOO")); + assert_se(streq(r[1], "FOO$FOOFOO")); + assert_se(streq(r[2], "FOOBAR BAR$FOO")); + assert_se(streq(r[3], "FOOBAR BAR")); + assert_se(streq(r[4], "BAR BAR")); + assert_se(streq(r[5], "BAR")); + assert_se(streq(r[6], "BAR")); + assert_se(streq(r[7], "BAR BARwaldo")); + assert_se(streq(r[8], "${FOO")); + assert_se(strv_length(r) == 9); } -static void test_one_normalize(const char *input, const char *output) -{ +static void test_one_normalize(const char *input, const char *output) { _cleanup_free_ char *t; t = normalize_env_assignment(input); - assert(streq(t, output)); + assert_se(t); + assert_se(streq(t, output)); } static void test_normalize_env_assignment(void) { @@ -149,7 +163,6 @@ static void test_normalize_env_assignment(void) { } static void test_env_clean(void) { - _cleanup_strv_free_ char **e; e = strv_new("FOOBAR=WALDO", @@ -169,8 +182,10 @@ static void test_env_clean(void) { "another=one", "another=final one", NULL); - - assert_se(strv_env_clean(e)); + assert_se(e); + assert_se(!strv_env_is_valid(e)); + assert_se(strv_env_clean(e) == e); + assert_se(strv_env_is_valid(e)); assert_se(streq(e[0], "FOOBAR=WALDO")); assert_se(streq(e[1], "X=")); -- cgit v1.2.1 From f74e605fc06c1c23e968dc4c26045eb746791706 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Feb 2013 05:09:29 +0100 Subject: util: introduce FOREACH_LINE for iterating through files --- src/shared/util.c | 30 +++++++----------------------- src/shared/util.h | 9 +++++++++ 2 files changed, 16 insertions(+), 23 deletions(-) diff --git a/src/shared/util.c b/src/shared/util.c index 5b795d4a24..1d30ea5851 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -1063,10 +1063,10 @@ int get_process_exe(pid_t pid, char **name) { } static int get_process_id(pid_t pid, const char *field, uid_t *uid) { - char *p; - FILE *f; - int r; + _cleanup_fclose_ FILE *f = NULL; + _cleanup_free_ char *p = NULL; + assert(field); assert(uid); if (pid == 0) @@ -1076,21 +1076,11 @@ static int get_process_id(pid_t pid, const char *field, uid_t *uid) { return -ENOMEM; f = fopen(p, "re"); - free(p); - if (!f) return -errno; - while (!feof(f)) { - char line[LINE_MAX], *l; - - if (!fgets(line, sizeof(line), f)) { - if (feof(f)) - break; - - r = -errno; - goto finish; - } + FOREACH_LINE(f, line, return -errno) { + char *l; l = strstrip(line); @@ -1100,17 +1090,11 @@ static int get_process_id(pid_t pid, const char *field, uid_t *uid) { l[strcspn(l, WHITESPACE)] = 0; - r = parse_uid(l, uid); - goto finish; + return parse_uid(l, uid); } } - r = -EIO; - -finish: - fclose(f); - - return r; + return -EIO; } int get_process_uid(pid_t pid, uid_t *uid) { diff --git a/src/shared/util.h b/src/shared/util.h index 18494f14f2..d926b01919 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -567,3 +567,12 @@ char *strreplace(const char *text, const char *old_string, const char *new_strin char *strip_tab_ansi(char **p, size_t *l); int on_ac_power(void); + +#define FOREACH_LINE(f, line, on_error) \ + for (char line[LINE_MAX]; !feof(f); ) \ + if (!fgets(line, sizeof(line), f)) { \ + if (ferror(f)) { \ + on_error; \ + } \ + break; \ + } else -- cgit v1.2.1 From 91a6489d9949776605939fe65a2a6174ee719049 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Feb 2013 05:10:23 +0100 Subject: path-util: fix memory leak --- src/shared/path-util.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/shared/path-util.c b/src/shared/path-util.c index ae12c05317..52ce65de6d 100644 --- a/src/shared/path-util.c +++ b/src/shared/path-util.c @@ -135,7 +135,8 @@ char *path_make_absolute_cwd(const char *p) { if (path_is_absolute(p)) return strdup(p); - if (!(cwd = get_current_dir_name())) + cwd = get_current_dir_name(); + if (!cwd) return NULL; r = path_make_absolute(p, cwd); @@ -190,7 +191,6 @@ char **path_strv_canonicalize(char **l) { errno = 0; u = canonicalize_file_name(t); - if (!u) { if (errno == ENOENT) u = t; @@ -201,7 +201,8 @@ char **path_strv_canonicalize(char **l) { continue; } - } + } else + free(t); l[k++] = u; } -- cgit v1.2.1 From dfbacb6fe56db4820137e4b668c361168fbfe5ff Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Feb 2013 05:36:54 +0100 Subject: util: rework load_env_file() Inner library calls should not invoke log_oom(), that's something for main programs, not library calls. Don't read through uninitialized memory if a file ends in a continuation line. Add comments for the non-obvious bits. Don't choke on comment lines that are continuation lines. Simplify some things. --- src/shared/util.c | 65 ++++++++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 30 deletions(-) diff --git a/src/shared/util.c b/src/shared/util.c index 1d30ea5851..29cb9f1e8d 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -766,77 +766,82 @@ fail: return r; } -int load_env_file(const char *fname, - char ***rl) { +int load_env_file(const char *fname, char ***rl) { - FILE _cleanup_fclose_ *f; - char *b; - char _cleanup_free_ *c = NULL; - char _cleanup_strv_free_ **m = NULL; + _cleanup_fclose_ FILE *f; + _cleanup_strv_free_ char **m = NULL; + _cleanup_free_ char *c = NULL; assert(fname); assert(rl); + /* This reads an environment file, but will not complain about + * any invalid assignments, that needs to be done by the + * caller */ + f = fopen(fname, "re"); if (!f) return -errno; while (!feof(f)) { - char l[LINE_MAX], *p, *u, *cs; - char **t; + char l[LINE_MAX], *p, *cs, *b; if (!fgets(l, sizeof(l), f)) { - if (!feof(f)) + if (ferror(f)) return -errno; - else if (!c) - break; + + /* The previous line was a continuation line? + * Let's process it now, before we leave the + * loop */ + if (c) + goto process; + + break; } + /* Is this a continuation line? If so, just append + * this to c, and go to next line right-away */ cs = endswith(l, "\\\n"); if (cs) { *cs = '\0'; b = strappend(c, l); if (!b) - return log_oom(); + return -ENOMEM; free(c); c = b; - *l = '\0'; continue; } + /* If the previous line was a continuation line, + * append the current line to it */ if (c) { b = strappend(c, l); if (!b) - return log_oom(); + return -ENOMEM; free(c); c = b; } + process: p = strstrip(c ? c : l); - if (!*p) - continue; + if (*p && !strchr(COMMENTS, *p)) { + _cleanup_free_ char *u; + int k; - if (strchr(COMMENTS, *p)) - continue; + u = normalize_env_assignment(p); + if (!u) + return -ENOMEM; - u = normalize_env_assignment(p); - if (!u) - return log_oom(); + k = strv_extend(&m, u); + if (k < 0) + return -ENOMEM; + } free(c); c = NULL; - - t = strv_append(m, u); - free(u); - - if (!t) - return log_oom(); - - strv_free(m); - m = t; } *rl = m; -- cgit v1.2.1 From ff47c895c8c2132ef98ef4182213a0ba79eefb73 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Feb 2013 06:20:55 +0100 Subject: efi: fix returned length of efi_get_variable() --- src/shared/efivars.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/efivars.c b/src/shared/efivars.c index d5cb88cff1..09af44a2fe 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -85,7 +85,7 @@ int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, v ((char*) r)[st.st_size - 4 + 1] = 0; *value = r; - *size = (size_t) st.st_size; + *size = (size_t) st.st_size - 4; if (attribute) *attribute = a; -- cgit v1.2.1 From c937e0d5c579863677e0fcb5508517f7714c332d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 11 Feb 2013 01:08:30 -0500 Subject: build-sys: add -U_FORTIFY_SOURCE to $PYTHON_CFLAGS when necessary This patch only adds one line, but moves python detection after cflags detection, so the result of the latter can be used in the former. $PYTHON_CFLAGS usually includes -D_FORTIFY_SOURCE, which will generate a warning when compiling without optimization. Avoid by undefining _FORTIFY_SOURCE. --- configure.ac | 64 ++++++++++++++++++++++++++++++++---------------------------- 1 file changed, 34 insertions(+), 30 deletions(-) diff --git a/configure.ac b/configure.ac index d94af7b304..56694ff22a 100644 --- a/configure.ac +++ b/configure.ac @@ -93,36 +93,6 @@ if test -z "$GPERF" ; then AC_MSG_ERROR([*** gperf not found]) fi -# we use python to build the man page index, and for systemd-python -have_python=no -have_python_devel=no - -AC_ARG_WITH([python], - [AS_HELP_STRING([--without-python], [Disable building the man page index and systemd-python (default: test)])]) - -AS_IF([test "x$with_python" != "xno"], [ - AM_PATH_PYTHON(,, [:]) - AS_IF([test "$PYTHON" != :], [have_python=yes]) -]) -AM_CONDITIONAL([HAVE_PYTHON], [test "x$have_python" = "xyes"]) -AS_IF([test "x$PYTHON_BINARY" = "x"], - [AS_IF([test "x$have_python" = "xyes"], - [PYTHON_BINARY="`which "$PYTHON"`"], - [PYTHON_BINARY=/usr/bin/python])]) -AC_ARG_VAR(PYTHON_BINARY, [Python binary used to launch installed scripts]) - -AS_IF([test "x$with_python" != "xno"], [ - AC_PATH_PROG(PYTHON_CONFIG, python${PYTHON_VERSION}-config) - AS_IF([test -n "$PYTHON_CONFIG"], [ - have_python_devel=yes - PYTHON_CFLAGS="`$PYTHON_CONFIG --cflags`" - PYTHON_LIBS="`$PYTHON_CONFIG --ldflags`" - AC_SUBST(PYTHON_CFLAGS) - AC_SUBST(PYTHON_LIBS) - ]) -]) -AM_CONDITIONAL([HAVE_PYTHON_DEVEL], [test "$have_python_devel" = "yes"]) - CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ -pipe \ -Wall \ @@ -168,6 +138,7 @@ AC_SUBST([OUR_CFLAGS], $with_cflags) AS_CASE([$CFLAGS], [*-O[[12345\ ]]*], [ CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\ -Wp,-D_FORTIFY_SOURCE=2])], [ + python_extra_cflags=-Wp,-U_FORTIFY_SOURCE AC_MSG_RESULT([skipping -D_FORTIFY_SOURCE, optimization not enabled])]) AC_SUBST([OUR_CPPFLAGS], $with_cppflags) @@ -178,6 +149,39 @@ CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\ -Wl,-z,now]) AC_SUBST([OUR_LDFLAGS], $with_ldflags) +# ------------------------------------------------------------------------------ +# we use python to build the man page index, and for systemd-python +have_python=no +have_python_devel=no + +AC_ARG_WITH([python], + [AS_HELP_STRING([--without-python], [Disable building the man page index and systemd-python (default: test)])]) + +AS_IF([test "x$with_python" != "xno"], [ + AM_PATH_PYTHON(,, [:]) + AS_IF([test "$PYTHON" != :], [have_python=yes]) +]) +AM_CONDITIONAL([HAVE_PYTHON], [test "x$have_python" = "xyes"]) +AS_IF([test "x$PYTHON_BINARY" = "x"], + [AS_IF([test "x$have_python" = "xyes"], + [PYTHON_BINARY="`which "$PYTHON"`"], + [PYTHON_BINARY=/usr/bin/python])]) +AC_ARG_VAR(PYTHON_BINARY, [Python binary used to launch installed scripts]) + +AS_IF([test "x$with_python" != "xno"], [ + AC_PATH_PROG(PYTHON_CONFIG, python${PYTHON_VERSION}-config) + AS_IF([test -n "$PYTHON_CONFIG"], [ + have_python_devel=yes + PYTHON_CFLAGS="`$PYTHON_CONFIG --cflags` $python_extra_cflags" + PYTHON_LIBS="`$PYTHON_CONFIG --ldflags`" + AC_SUBST(PYTHON_CFLAGS) + AC_SUBST(PYTHON_LIBS) + ]) +]) +AM_CONDITIONAL([HAVE_PYTHON_DEVEL], [test "$have_python_devel" = "yes"]) + +# ------------------------------------------------------------------------------ + AC_SEARCH_LIBS([mq_open], [rt], [], [AC_MSG_ERROR([*** POSIX RT library not found])]) AC_SEARCH_LIBS([dlsym], [dl], [], [AC_MSG_ERROR([*** Dynamic linking loader library not found])]) -- cgit v1.2.1 From 7b4d7cc08283e5485dcfa49ffdf1915de1d5e81b Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 8 Feb 2013 17:24:43 +0100 Subject: bootctl: add boot loader and firmware interface tool --- .gitignore | 1 + Makefile.am | 16 ++- src/boot/boot-efi.c | 171 +++++++++++++++++++++++++++++++ src/boot/boot-loader.c | 131 ++++++++++++++++++++++++ src/boot/boot-loader.h | 25 +++++ src/boot/boot.h | 64 ++++++++++++ src/boot/bootctl.c | 271 +++++++++++++++++++++++++++++++++++++++++++++++++ src/shared/efivars.c | 185 ++++++++++++++++++++++++++++++++- src/shared/efivars.h | 7 ++ src/shared/utf8.c | 2 +- 10 files changed, 869 insertions(+), 4 deletions(-) create mode 100644 src/boot/boot-efi.c create mode 100644 src/boot/boot-loader.c create mode 100644 src/boot/boot-loader.h create mode 100644 src/boot/boot.h create mode 100644 src/boot/bootctl.c diff --git a/.gitignore b/.gitignore index 350aaf7a1f..d27cce78f6 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ /TAGS /accelerometer /ata_id +/bootctl /build-aux /cdrom_id /collect diff --git a/Makefile.am b/Makefile.am index 9da3394c78..2cec04a140 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3069,7 +3069,6 @@ timedatectl_LDADD = \ bin_PROGRAMS += \ timedatectl - endif polkitpolicy_in_files += \ @@ -3078,6 +3077,21 @@ polkitpolicy_in_files += \ EXTRA_DIST += \ units/systemd-timedated.service.in +# ------------------------------------------------------------------------------ +bootctl_SOURCES = \ + src/boot/boot.h \ + src/boot/boot-loader.h \ + src/boot/bootctl.c \ + src/boot/boot-loader.c \ + src/boot/boot-efi.c + +bootctl_LDADD = \ + libsystemd-shared.la \ + libsystemd-id128.la + +bin_PROGRAMS += \ + bootctl + # ------------------------------------------------------------------------------ if HAVE_MYHOSTNAME libnss_myhostname_la_SOURCES = \ diff --git a/src/boot/boot-efi.c b/src/boot/boot-efi.c new file mode 100644 index 0000000000..32cb973cf6 --- /dev/null +++ b/src/boot/boot-efi.c @@ -0,0 +1,171 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Kay Sievers + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "boot.h" +#include "boot-loader.h" +#include "build.h" +#include "util.h" +#include "strv.h" +#include "efivars.h" +#include "conf-files.h" + +static int get_boot_entries(struct boot_info *info) { + DIR *d = NULL; + struct dirent *dent; + int err = 0; + + d = opendir("/sys/firmware/efi/efivars"); + if (!d) + return -errno; + + for (dent = readdir(d); dent != NULL; dent = readdir(d)) { + unsigned int id; + struct boot_info_entry *e; + + if (dent->d_name[0] == '.') + continue; + if (sscanf(dent->d_name, "Boot%04X-8be4df61-93ca-11d2-aa0d-00e098032b8c", &id) != 1) + continue; + + e = realloc(info->fw_entries, (info->fw_entries_count+1) * sizeof(struct boot_info_entry)); + if (!e) { + err = -ENOMEM; + break; + } + info->fw_entries = e; + + e = &info->fw_entries[info->fw_entries_count]; + memset(e, 0, sizeof(struct boot_info_entry)); + e->order = -1; + + err = efi_get_boot_option(id, NULL, &e->title, &e->part_uuid, &e->path, &e->data, &e->data_size); + if (err < 0) + break; + e->id = id; + + info->fw_entries_count++; + } + closedir(d); + + return err; +} + +static int find_active_entry(struct boot_info *info) { + uint16_t boot_cur; + void *buf; + size_t l; + size_t i; + int err = -ENOENT; + + err = efi_get_variable(EFI_VENDOR_GLOBAL, "BootCurrent", NULL, &buf, &l); + if (err < 0) + return err; + + memcpy(&boot_cur, buf, sizeof(uint16_t)); + for (i = 0; i < info->fw_entries_count; i++) { + if (info->fw_entries[i].id != boot_cur) + continue; + info->fw_entry_active = i; + err = 0; + break; + } + free(buf); + return err; +} + +static int get_boot_order(struct boot_info *info) { + size_t i, k; + int err; + + err = efi_get_boot_order(&info->fw_entries_order, &info->fw_entries_order_count); + if (err < 0) + return err; + + for (i = 0; i < info->fw_entries_order_count; i++) { + for (k = 0; k < info->fw_entries_count; k++) { + if (info->fw_entries[k].id != info->fw_entries_order[i]) + continue; + info->fw_entries[k].order = i; + break; + } + } + + return 0; +} + +static int entry_cmp(const void *a, const void *b) { + const struct boot_info_entry *e1 = a; + const struct boot_info_entry *e2 = b; + + /* boot order of active entries */ + if (e1->order > 0 && e2->order > 0) + return e1->order - e2->order; + + /* sort active entries before inactive ones */ + if (e1->order > 0) + return 1; + if (e2->order > 0) + return -1; + + /* order of inactive entries */ + return e1->id - e2->id; +} + +int boot_info_query(struct boot_info *info) { + char str[64]; + char buf[64]; + char *loader_active; + + info->loader = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderInfo"); + + get_boot_entries(info); + if (info->fw_entries_count > 0) { + get_boot_order(info); + qsort(info->fw_entries, info->fw_entries_count, sizeof(struct boot_info_entry), entry_cmp); + find_active_entry(info); + } + + info->fw_type = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderFirmwareType"); + info->fw_info = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderFirmwareInfo"); + info->loader_image_path = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderImageIdentifier"); + efi_get_loader_device_part_uuid(&info->loader_part_uuid); + + boot_loader_read_entries(info); + loader_active = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderEntrySelected"); + if (loader_active) { + boot_loader_find_active_entry(info, loader_active); + free(loader_active); + } + + snprintf(str, sizeof(str), "LoaderEntryOptions-%s", sd_id128_to_string(info->machine_id, buf)); + info->loader_options_added = efi_get_variable_string(EFI_VENDOR_LOADER, str); + return 0; +} diff --git a/src/boot/boot-loader.c b/src/boot/boot-loader.c new file mode 100644 index 0000000000..bd563da226 --- /dev/null +++ b/src/boot/boot-loader.c @@ -0,0 +1,131 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Kay Sievers + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "boot.h" +#include "boot-loader.h" +#include "build.h" +#include "util.h" +#include "strv.h" +#include "conf-files.h" + +static char *loader_fragment_read_title(const char *fragment) { + FILE *f; + char line[LINE_MAX]; + char *title = NULL; + + f = fopen(fragment, "re"); + if (!f) + return NULL; + + while (fgets(line, sizeof(line), f) != NULL) { + char *s; + size_t l; + + l = strlen(line); + if (l < 1) + continue; + if (line[l-1] == '\n') + line[l-1] = '\0'; + + s = line; + while (isspace(s[0])) + s++; + + if (s[0] == '#') + continue; + + if (!startswith(s, "title")) + continue; + + s += strlen("title"); + if (!isspace(s[0])) + continue; + while (isspace(s[0])) + s++; + + title = strdup(s); + break; + } + + fclose(f); + return title; +} + +int boot_loader_read_entries(struct boot_info *info) { + _cleanup_strv_free_ char **files = NULL; + static const char *loader_dir[] = { "/boot/loader/entries", NULL}; + unsigned int count; + unsigned int i; + int err; + + err = conf_files_list_strv(&files, ".conf", NULL, loader_dir); + if (err < 0) + return err; + + count = strv_length(files); + info->loader_entries = new0(struct boot_info_entry, count); + if (!info->loader_entries) + return -ENOMEM; + + for (i = 0; i < count; i++) { + info->loader_entries[i].title = loader_fragment_read_title(files[i]); + info->loader_entries[i].path = strdup(files[i]); + if (!info->loader_entries[i].title || !info->loader_entries[i].path) { + free(info->loader_entries[i].title); + free(info->loader_entries[i].path); + return -ENOMEM; + } + info->loader_entries_count++; + } + return 0; +} + +int boot_loader_find_active_entry(struct boot_info *info, const char *loader_active) { + char *fn; + unsigned int i; + + if (!loader_active) + return -ENOENT; + if (info->loader_entries_count == 0) + return -ENOENT; + + if (asprintf(&fn, "/boot/loader/entries/%s.conf", loader_active) < 0) + return -ENOMEM; + + for (i = 0; i < info->loader_entries_count; i++) { + if (strcmp(fn, info->loader_entries[i].path) == 0) { + info->loader_entry_active = i; + break; + } + } + + free(fn); + return 0; +} diff --git a/src/boot/boot-loader.h b/src/boot/boot-loader.h new file mode 100644 index 0000000000..08827c30ad --- /dev/null +++ b/src/boot/boot-loader.h @@ -0,0 +1,25 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2013 Kay Sievers + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +int boot_loader_read_entries(struct boot_info *info); +int boot_loader_find_active_entry(struct boot_info *info, const char *loader_active); diff --git a/src/boot/boot.h b/src/boot/boot.h new file mode 100644 index 0000000000..90e45ccd68 --- /dev/null +++ b/src/boot/boot.h @@ -0,0 +1,64 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2013 Kay Sievers + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include "sd-id128.h" + +/* + * Firmware and boot manager information to be filled in + * by the platform. + * + * This is partly EFI specific, if you add things, keep this + * as generic as possible to be able to re-use it on other + * platforms. + */ + +struct boot_info_entry { + uint16_t id; + uint16_t order; + char *title; + sd_id128_t part_uuid; + char *path; + char *data; + size_t data_size; +}; + +struct boot_info { + sd_id128_t machine_id; + sd_id128_t boot_id; + char *fw_type; + char *fw_info; + struct boot_info_entry *fw_entries; + size_t fw_entries_count; + uint16_t *fw_entries_order; + size_t fw_entries_order_count; + ssize_t fw_entry_active; + char *loader; + char *loader_image_path; + sd_id128_t loader_part_uuid; + struct boot_info_entry *loader_entries; + size_t loader_entries_count; + ssize_t loader_entry_active; + char *loader_options_added; +}; + +int boot_info_query(struct boot_info *info); diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c new file mode 100644 index 0000000000..641546bc08 --- /dev/null +++ b/src/boot/bootctl.c @@ -0,0 +1,271 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Kay Sievers + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include +#include +#include +#include +#include +#include + +#include "boot.h" +#include "build.h" +#include "util.h" +#include "utf8.h" + +static int help(void) { + printf("%s [OPTIONS...] COMMAND ...\n\n" + "Query or change firmware and boot mananger settings.\n\n" + " -h --help Show this help\n" + " --version Show package version\n" + "Commands:\n" + " status Show current time settings\n", + program_invocation_short_name); + + return 0; +} + +static int parse_argv(int argc, char *argv[]) { + enum { + ARG_VERSION = 0x100, + }; + + static const struct option options[] = { + { "help", no_argument, NULL, 'h' }, + { "version", no_argument, NULL, ARG_VERSION }, + { NULL, 0, NULL, 0 } + }; + + int c; + + assert(argc >= 0); + assert(argv); + while ((c = getopt_long(argc, argv, "+hH:P", options, NULL)) >= 0) { + + switch (c) { + + case 'h': + help(); + return 0; + + case ARG_VERSION: + puts(PACKAGE_STRING); + puts(SYSTEMD_FEATURES); + return 0; + + case '?': + return -EINVAL; + + default: + log_error("Unknown option code %c", c); + return -EINVAL; + } + } + + return 1; +} + +static int boot_info_new(struct boot_info **info) { + struct boot_info *in; + int err; + + in = new0(struct boot_info, 1); + if (!in) + return -ENOMEM; + + err = sd_id128_get_machine(&in->machine_id); + if (err < 0) + goto err; + + err = sd_id128_get_boot(&in->boot_id); + if (err < 0) + goto err; + + in->fw_entry_active = -1; + in->loader_entry_active = -1; + + *info = in; + return 0; +err: + free(in); + return err; +} + +static void boot_info_entries_free(struct boot_info_entry *entries, size_t n) { + size_t i; + + for (i = 0; i < n; i++) { + free(entries[i].title); + free(entries[i].path); + } + free(entries); +} + +static void boot_info_free(struct boot_info *info) { + free(info->fw_type); + free(info->fw_info); + boot_info_entries_free(info->fw_entries, info->fw_entries_count); + free(info->fw_entries_order); + free(info->loader); + free(info->loader_image_path); + free(info->loader_options_added); + boot_info_entries_free(info->loader_entries, info->loader_entries_count); + free(info); +} + +static int show_status(char **args, unsigned n) { + char buf[64]; + struct boot_info *info; + int err; + + err = boot_info_new(&info); + if (err < 0) + return -ENOMEM; + + err = boot_info_query(info); + + printf(" Machine ID: %s\n", sd_id128_to_string(info->machine_id, buf)); + printf(" Boot ID: %s\n", sd_id128_to_string(info->boot_id, buf)); + if (info->fw_type) + printf(" Firmware: %s (%s)\n", info->fw_type, strna(info->fw_info)); + + if (info->fw_entry_active >= 0) { + printf("Firmware entry: %s\n", info->fw_entries[info->fw_entry_active].title); + if (info->fw_entries[info->fw_entry_active].path) + printf(" %s\n", info->fw_entries[info->fw_entry_active].path); + if (!sd_id128_equal(info->fw_entries[info->fw_entry_active].part_uuid, SD_ID128_NULL)) + printf(" %s\n", sd_id128_to_string(info->fw_entries[info->fw_entry_active].part_uuid, buf)); + } + + if (info->loader) { + printf(" Loader: %s\n", info->loader); + printf(" %s\n", strna(info->loader_image_path)); + if (!sd_id128_equal(info->loader_part_uuid, SD_ID128_NULL)) + printf(" %s\n", sd_id128_to_string(info->loader_part_uuid, buf)); + + if (info->loader_entry_active >= 0) { + printf(" Loader entry: %s\n", info->loader_entries[info->loader_entry_active].title); + printf(" %s\n", info->loader_entries[info->loader_entry_active].path); + } + + printf("Loader options: %s\n", strna(info->loader_options_added)); + } else + printf("No suitable data is provided by the boot manager. See:\n" + " http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface\n" + " http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec\n" + "for details.\n"); + printf("\n"); + + boot_info_free(info); + return err; +} + +static int bootctl_main(int argc, char *argv[]) { + static const struct { + const char* verb; + const enum { + MORE, + LESS, + EQUAL + } argc_cmp; + const int argc; + int (* const dispatch)(char **args, unsigned n); + } verbs[] = { + { "status", LESS, 1, show_status }, + }; + + int left; + unsigned i; + + assert(argc >= 0); + assert(argv); + + left = argc - optind; + + if (left <= 0) + /* Special rule: no arguments means "status" */ + i = 0; + else { + if (streq(argv[optind], "help")) { + help(); + return 0; + } + + for (i = 0; i < ELEMENTSOF(verbs); i++) + if (streq(argv[optind], verbs[i].verb)) + break; + + if (i >= ELEMENTSOF(verbs)) { + log_error("Unknown operation %s", argv[optind]); + return -EINVAL; + } + } + + switch (verbs[i].argc_cmp) { + + case EQUAL: + if (left != verbs[i].argc) { + log_error("Invalid number of arguments."); + return -EINVAL; + } + break; + + case MORE: + if (left < verbs[i].argc) { + log_error("Too few arguments."); + return -EINVAL; + } + break; + + case LESS: + if (left > verbs[i].argc) { + log_error("Too many arguments."); + return -EINVAL; + } + break; + + default: + assert_not_reached("Unknown comparison operator."); + } + + return verbs[i].dispatch(argv + optind, left); +} + +int main(int argc, char *argv[]) { + int r, retval = EXIT_FAILURE; + + log_parse_environment(); + log_open(); + + r = parse_argv(argc, argv); + if (r < 0) + goto finish; + else if (r == 0) { + retval = EXIT_SUCCESS; + goto finish; + } + + r = bootctl_main(argc, argv); + retval = r < 0 ? EXIT_FAILURE : r; +finish: + return retval; +} diff --git a/src/shared/efivars.c b/src/shared/efivars.c index 09af44a2fe..e16c61029b 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -20,14 +20,13 @@ ***/ #include +#include #include #include "util.h" #include "utf8.h" #include "efivars.h" -#define EFI_VENDOR_LOADER SD_ID128_MAKE(4a,67,b0,82,0a,4c,41,cf,b6,c7,44,0b,29,bb,8c,4f) - bool is_efiboot(void) { return access("/sys/firmware/efi", F_OK) >= 0; } @@ -93,6 +92,188 @@ int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, v return 0; } +char *efi_get_variable_string(sd_id128_t vendor, const char *name) { + _cleanup_free_ void *s = NULL; + size_t ss; + int err; + + err = efi_get_variable(vendor, name, NULL, &s, &ss); + if (err < 0) + return NULL; + return utf16_to_utf8(s, ss); +} + +static size_t utf16_size(const uint16_t *s) { + size_t l = 0; + + while (s[l] > 0) + l++; + return (l+1) * sizeof(uint16_t); +} + +static void efi_guid_to_id128(const void *guid, sd_id128_t *id128) { + struct uuid { + uint32_t u1; + uint16_t u2; + uint16_t u3; + uint8_t u4[8]; + } _packed_; + const struct uuid *uuid = guid; + + id128->bytes[0] = (uuid->u1 >> 24) & 0xff; + id128->bytes[1] = (uuid->u1 >> 16) & 0xff; + id128->bytes[2] = (uuid->u1 >> 8) & 0xff; + id128->bytes[3] = (uuid->u1) & 0xff; + id128->bytes[4] = (uuid->u2 >> 8) & 0xff; + id128->bytes[5] = (uuid->u2) & 0xff; + id128->bytes[6] = (uuid->u3 >> 8) & 0xff; + id128->bytes[7] = (uuid->u3) & 0xff; + memcpy(&id128->bytes[8], uuid->u4, sizeof(uuid->u4)); +} + +int efi_get_boot_option(uint32_t id, uint32_t *attributes, char **title, sd_id128_t *part_uuid, char **path, char **data, size_t *data_size) { + struct boot_option { + uint32_t attr; + uint16_t path_len; + uint16_t title[]; + } _packed_; + + struct drive_path { + uint32_t part_nr; + uint64_t part_start; + uint64_t part_size; + char signature[16]; + uint8_t mbr_type; + uint8_t signature_type; + } _packed_; + + struct device_path { + uint8_t type; + uint8_t sub_type; + uint16_t length; + union { + uint16_t path[0]; + struct drive_path drive; + }; + } _packed_; + + char boot_id[32]; + _cleanup_free_ char *buf = NULL; + size_t l; + struct boot_option *header; + size_t title_size; + char *s = NULL; + char *p = NULL; + sd_id128_t p_uuid = SD_ID128_NULL; + char *d = NULL; + size_t d_size = 0; + int err; + + snprintf(boot_id, sizeof(boot_id), "Boot%04X", id); + err = efi_get_variable(EFI_VENDOR_GLOBAL, boot_id, NULL, (void **)&buf, &l); + if (err < 0) + return err; + + if (l < sizeof(struct boot_option)) + return -ENOENT; + + header = (struct boot_option *)buf; + title_size = utf16_size(header->title); + if (title_size > l - offsetof(struct boot_option, title)) + return -EINVAL; + + s = utf16_to_utf8(header->title, title_size); + if (!s) { + err = -ENOMEM; + goto err; + } + + if (header->path_len > 0) { + char *dbuf; + size_t dnext; + + dbuf = buf + offsetof(struct boot_option, title) + title_size; + dnext = 0; + while (dnext < header->path_len) { + struct device_path *dpath; + + dpath = (struct device_path *)(dbuf + dnext); + if (dpath->length < 4) + break; + + /* Type 0x7F – End of Hardware Device Path, Sub-Type 0xFF – End Entire Device Path */ + if (dpath->type == 0x7f && dpath->sub_type == 0xff) + break; + + dnext += dpath->length; + + /* Type 0x04 – Media Device Path */ + if (dpath->type != 0x04) + continue; + + /* Sub-Type 1 – Hard Drive */ + if (dpath->sub_type == 0x01) { + /* 0x02 – GUID Partition Table */ + if (dpath->drive.mbr_type != 0x02) + continue; + + /* 0x02 – GUID signature */ + if (dpath->drive.signature_type != 0x02) + continue; + + efi_guid_to_id128(dpath->drive.signature, &p_uuid); + continue; + } + + /* Sub-Type 4 – File Path */ + if (dpath->sub_type == 0x04) { + p = utf16_to_utf8(dpath->path, dpath->length-4); + continue; + } + } + } + + *title = s; + if (part_uuid) + *part_uuid = p_uuid; + if (path) + *path = p; + if (data) + *data = d; + if (data_size) + *data_size = d_size; + return 0; +err: + free(s); + free(p); + free(d); + return err; +} + +int efi_get_boot_order(uint16_t **order, size_t *count) { + void *buf; + size_t l; + int err; + + err = efi_get_variable(EFI_VENDOR_GLOBAL, "BootOrder", NULL, &buf, &l); + if (err < 0) + return err; + + if (l == 0) { + free(buf); + return -ENOENT; + } + + if ((l % sizeof(uint16_t) > 0)) { + free(buf); + return -EINVAL; + } + + *order = buf; + *count = l / sizeof(uint16_t); + return 0; +} + static int read_usec(sd_id128_t vendor, const char *name, usec_t *u) { _cleanup_free_ void *i = NULL; _cleanup_free_ char *j = NULL; diff --git a/src/shared/efivars.h b/src/shared/efivars.h index d5cfb4fa0d..d54cc433b2 100644 --- a/src/shared/efivars.h +++ b/src/shared/efivars.h @@ -28,9 +28,16 @@ #include "sd-id128.h" #include "time-util.h" +#define EFI_VENDOR_LOADER SD_ID128_MAKE(4a,67,b0,82,0a,4c,41,cf,b6,c7,44,0b,29,bb,8c,4f) +#define EFI_VENDOR_GLOBAL SD_ID128_MAKE(8b,e4,df,61,93,ca,11,d2,aa,0d,00,e0,98,03,2b,8c) + bool is_efiboot(void); int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, void **value, size_t *size); +char *efi_get_variable_string(sd_id128_t vendor, const char *name); + +int efi_get_boot_option(uint32_t nr, uint32_t *attributes, char **title, sd_id128_t *partuuid, char **path, char **data, size_t *data_size); +int efi_get_boot_order(uint16_t **order, size_t *count); int efi_get_boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_timestamp *loader); diff --git a/src/shared/utf8.c b/src/shared/utf8.c index 7ec8cb620d..3964e8b1ce 100644 --- a/src/shared/utf8.c +++ b/src/shared/utf8.c @@ -317,6 +317,6 @@ char *utf16_to_utf8(const void *s, size_t length) { } *t = 0; - return r; + return r; } -- cgit v1.2.1 From eb6d233862f33575b6a3e6c21ffaafa3f686248c Mon Sep 17 00:00:00 2001 From: Adel Gadllah Date: Wed, 6 Feb 2013 14:24:56 +0100 Subject: logind: Allow active sessions to always shutdown by default Currently local user are being asked for an admin password when another user is logged into the system. This does not make sense as the user has the power to shut down the system anyway regardless if he/she knows the password or not (by pulling the plug, battery or whatever). So only require the admin authentification for remote sessions. https://bugzilla.gnome.org/show_bug.cgi?id=693385 --- src/login/org.freedesktop.login1.policy.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/login/org.freedesktop.login1.policy.in b/src/login/org.freedesktop.login1.policy.in index b5f5db4f6a..0c551d4f9b 100644 --- a/src/login/org.freedesktop.login1.policy.in +++ b/src/login/org.freedesktop.login1.policy.in @@ -158,7 +158,7 @@ auth_admin_keep auth_admin_keep - auth_admin_keep + yes org.freedesktop.login1.power-off -- cgit v1.2.1 From 8354c34e14799593c85a638ef543b378ac97c6fe Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Mon, 11 Feb 2013 21:40:59 +0100 Subject: tests: more tests tests for: parse_boolean env_name_is_valid Also convert assert to assert_se to make sure they are run even with optimization. (see commit 9b5d6bd909855543cba75a4469bff6f82845cf0d) --- src/test/test-env-replace.c | 10 +++++++++ src/test/test-util.c | 52 +++++++++++++++++++++++++++++++++------------ 2 files changed, 49 insertions(+), 13 deletions(-) diff --git a/src/test/test-env-replace.c b/src/test/test-env-replace.c index d6cb2892e7..0274e97618 100644 --- a/src/test/test-env-replace.c +++ b/src/test/test-env-replace.c @@ -195,6 +195,15 @@ static void test_env_clean(void) { assert_se(e[5] == NULL); } +static void test_env_name_is_valid(void) { + assert_se(env_name_is_valid("test")); + + assert_se(!env_name_is_valid(NULL)); + assert_se(!env_name_is_valid("")); + assert_se(!env_name_is_valid("5_starting_with_a_number_is_wrong")); + assert_se(!env_name_is_valid("#¤%&?_only_numbers_letters_and_underscore_allowed")); +} + int main(int argc, char *argv[]) { test_strv_env_delete(); test_strv_env_unset(); @@ -203,6 +212,7 @@ int main(int argc, char *argv[]) { test_replace_env_arg(); test_normalize_env_assignment(); test_env_clean(); + test_env_name_is_valid(); return 0; } diff --git a/src/test/test-util.c b/src/test/test-util.c index ebbdcfc6de..476fa09dbf 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -25,22 +25,47 @@ #include "util.h" static void test_streq_ptr(void) { - assert(streq_ptr(NULL, NULL)); - assert(!streq_ptr("abc", "cdef")); + assert_se(streq_ptr(NULL, NULL)); + assert_se(!streq_ptr("abc", "cdef")); } static void test_first_word(void) { - assert(first_word("Hello", "")); - assert(first_word("Hello", "Hello")); - assert(first_word("Hello world", "Hello")); - assert(first_word("Hello\tworld", "Hello")); - assert(first_word("Hello\nworld", "Hello")); - assert(first_word("Hello\rworld", "Hello")); - assert(first_word("Hello ", "Hello")); - - assert(!first_word("Hello", "Hellooo")); - assert(!first_word("Hello", "xxxxx")); - assert(!first_word("Hellooo", "Hello")); + assert_se(first_word("Hello", "")); + assert_se(first_word("Hello", "Hello")); + assert_se(first_word("Hello world", "Hello")); + assert_se(first_word("Hello\tworld", "Hello")); + assert_se(first_word("Hello\nworld", "Hello")); + assert_se(first_word("Hello\rworld", "Hello")); + assert_se(first_word("Hello ", "Hello")); + + assert_se(!first_word("Hello", "Hellooo")); + assert_se(!first_word("Hello", "xxxxx")); + assert_se(!first_word("Hellooo", "Hello")); +} + +static void test_parse_boolean(void) { + assert_se(parse_boolean("1") == 1); + assert_se(parse_boolean("y") == 1); + assert_se(parse_boolean("Y") == 1); + assert_se(parse_boolean("yes") == 1); + assert_se(parse_boolean("YES") == 1); + assert_se(parse_boolean("true") == 1); + assert_se(parse_boolean("TRUE") == 1); + assert_se(parse_boolean("on") == 1); + assert_se(parse_boolean("ON") == 1); + + assert_se(parse_boolean("0") == 0); + assert_se(parse_boolean("n") == 0); + assert_se(parse_boolean("N") == 0); + assert_se(parse_boolean("no") == 0); + assert_se(parse_boolean("NO") == 0); + assert_se(parse_boolean("false") == 0); + assert_se(parse_boolean("FALSE") == 0); + assert_se(parse_boolean("off") == 0); + assert_se(parse_boolean("OFF") == 0); + + assert_se(parse_boolean("garbage") < 0); + assert_se(parse_boolean("") < 0); } static void test_foreach_word_quoted(void) { @@ -75,6 +100,7 @@ static void test_default_term_for_tty(void) { int main(int argc, char *argv[]) { test_streq_ptr(); test_first_word(); + test_parse_boolean(); test_default_term_for_tty(); test_foreach_word_quoted(); -- cgit v1.2.1 From 0c4025d14201a46a1ce09ef5e266f8f81c47b22f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Feb 2013 05:51:14 +0100 Subject: core: don't accept invalid environment assignments from the kernel cmdline --- src/core/main.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/src/core/main.c b/src/core/main.c index 1ee3c9c0e8..a2b0a39fd5 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -52,6 +52,9 @@ #include "switch-root.h" #include "capability.h" #include "killall.h" +#include "env-util.h" +#include "hwclock.h" +#include "sd-daemon.h" #include "mount-setup.h" #include "loopback-setup.h" @@ -61,10 +64,8 @@ #include "hostname-setup.h" #include "machine-id-setup.h" #include "locale-setup.h" -#include "hwclock.h" #include "selinux-setup.h" #include "ima-setup.h" -#include "sd-daemon.h" static enum { ACTION_RUN, @@ -342,7 +343,8 @@ static int parse_proc_cmdline_word(const char *word) { else arg_default_std_error = r; } else if (startswith(word, "systemd.setenv=")) { - char *cenv, *eq; + _cleanup_free_ char *cenv = NULL; + char *eq; int r; cenv = strdup(word + 15); @@ -351,16 +353,23 @@ static int parse_proc_cmdline_word(const char *word) { eq = strchr(cenv, '='); if (!eq) { - r = unsetenv(cenv); - if (r < 0) - log_warning("unsetenv failed %m. Ignoring."); + if (!env_name_is_valid(cenv)) + log_warning("Environment variable name '%s' is not valid. Ignoring.", cenv); + else { + r = unsetenv(cenv); + if (r < 0) + log_warning("Unsetting environment variable '%s' failed, ignoring: %m", cenv); + } } else { - *eq = 0; - r = setenv(cenv, eq + 1, 1); - if (r < 0) - log_warning("setenv failed %m. Ignoring."); + if (!env_assignment_is_valid(cenv)) + log_warning("Environment variable assignment '%s' is not valid. Ignoring.", cenv); + else { + *eq = 0; + r = setenv(cenv, eq + 1, 1); + if (r < 0) + log_warning("Setting environment variable '%s=%s' failed, ignoring: %m", cenv, eq + 1); + } } - free(cenv); } else if (startswith(word, "systemd.") || (in_initrd() && startswith(word, "rd.systemd."))) { -- cgit v1.2.1 From abb381b3b3a169a0cd6015c02f21f6032a78a873 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 11 Feb 2013 23:19:31 +0100 Subject: bootctl: print partition uuids as /dev/disk/by-partuuid/... --- src/boot/bootctl.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index 641546bc08..2f1f6438cd 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -153,14 +153,16 @@ static int show_status(char **args, unsigned n) { if (info->fw_entries[info->fw_entry_active].path) printf(" %s\n", info->fw_entries[info->fw_entry_active].path); if (!sd_id128_equal(info->fw_entries[info->fw_entry_active].part_uuid, SD_ID128_NULL)) - printf(" %s\n", sd_id128_to_string(info->fw_entries[info->fw_entry_active].part_uuid, buf)); + printf(" /dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", + SD_ID128_FORMAT_VAL(info->fw_entries[info->fw_entry_active].part_uuid)); } if (info->loader) { printf(" Loader: %s\n", info->loader); printf(" %s\n", strna(info->loader_image_path)); if (!sd_id128_equal(info->loader_part_uuid, SD_ID128_NULL)) - printf(" %s\n", sd_id128_to_string(info->loader_part_uuid, buf)); + printf(" /dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", + SD_ID128_FORMAT_VAL(info->loader_part_uuid)); if (info->loader_entry_active >= 0) { printf(" Loader entry: %s\n", info->loader_entries[info->loader_entry_active].title); -- cgit v1.2.1 From 123b964a537c21e9ebaf849acefb23f0f13db785 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Feb 2013 23:41:15 +0100 Subject: manager: validate environment parameters for SetEnvironment(), UnsetEnvironment() bus calls --- src/core/dbus-manager.c | 42 +++++++++++++++++++----------------------- src/shared/env-util.c | 15 +++++++++++++++ src/shared/env-util.h | 2 ++ 3 files changed, 36 insertions(+), 23 deletions(-) diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 7071196238..de23369397 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -1542,7 +1542,8 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, m->exit_code = MANAGER_SWITCH_ROOT; } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "SetEnvironment")) { - char **l = NULL, **e = NULL; + _cleanup_strv_free_ char **l = NULL; + char **e = NULL; SELINUX_ACCESS_CHECK(connection, message, "reboot"); @@ -1551,9 +1552,10 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, goto oom; if (r < 0) return bus_send_error_reply(connection, message, NULL, r); + if (!strv_env_is_valid(l)) + return bus_send_error_reply(connection, message, NULL, -EINVAL); e = strv_env_merge(2, m->environment, l); - strv_free(l); if (!e) goto oom; @@ -1567,7 +1569,8 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, m->environment = e; } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "UnsetEnvironment")) { - char **l = NULL, **e = NULL; + _cleanup_strv_free_ char **l = NULL; + char **e = NULL; SELINUX_ACCESS_CHECK(connection, message, "reboot"); @@ -1576,10 +1579,10 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, goto oom; if (r < 0) return bus_send_error_reply(connection, message, NULL, r); + if (!strv_env_name_or_assignment_is_valid(l)) + return bus_send_error_reply(connection, message, NULL, -EINVAL); e = strv_env_delete(m->environment, 1, l); - strv_free(l); - if (!e) goto oom; @@ -1593,7 +1596,8 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, m->environment = e; } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "UnsetAndSetEnvironment")) { - char **l_set = NULL, **l_unset = NULL, **e = NULL, **f = NULL; + _cleanup_strv_free_ char **l_set = NULL, **l_unset = NULL, **e = NULL; + char **f = NULL; DBusMessageIter iter; SELINUX_ACCESS_CHECK(connection, message, "reboot"); @@ -1606,33 +1610,25 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, goto oom; if (r < 0) return bus_send_error_reply(connection, message, NULL, r); + if (!strv_env_name_or_assignment_is_valid(l_unset)) + return bus_send_error_reply(connection, message, NULL, -EINVAL); - if (!dbus_message_iter_next(&iter)) { - strv_free(l_unset); + if (!dbus_message_iter_next(&iter)) return bus_send_error_reply(connection, message, NULL, -EINVAL); - } r = bus_parse_strv_iter(&iter, &l_set); - if (r < 0) { - strv_free(l_unset); - if (r == -ENOMEM) - goto oom; - + if (r == -ENOMEM) + goto oom; + if (r < 0) return bus_send_error_reply(connection, message, NULL, r); - } + if (!strv_env_is_valid(l_set)) + return bus_send_error_reply(connection, message, NULL, -EINVAL); e = strv_env_delete(m->environment, 1, l_unset); - strv_free(l_unset); - - if (!e) { - strv_free(l_set); + if (!e) goto oom; - } f = strv_env_merge(2, e, l_set); - strv_free(l_set); - strv_free(e); - if (!f) goto oom; diff --git a/src/shared/env-util.c b/src/shared/env-util.c index 7a213a77c0..9a833d22e4 100644 --- a/src/shared/env-util.c +++ b/src/shared/env-util.c @@ -135,6 +135,21 @@ bool strv_env_is_valid(char **e) { return true; } +bool strv_env_name_or_assignment_is_valid(char **l) { + char **p, **q; + + STRV_FOREACH(p, l) { + if (!env_assignment_is_valid(*p) && !env_name_is_valid(*p)) + return false; + + STRV_FOREACH(q, p + 1) + if (streq(*p, *q)) + return false; + } + + return true; +} + static int env_append(char **r, char ***k, char **a) { assert(r); assert(k); diff --git a/src/shared/env-util.h b/src/shared/env-util.h index 93bf596ca8..9449576b5c 100644 --- a/src/shared/env-util.h +++ b/src/shared/env-util.h @@ -31,6 +31,8 @@ bool env_assignment_is_valid(const char *e); bool strv_env_is_valid(char **e); char **strv_env_clean(char **l); +bool strv_env_name_or_assignment_is_valid(char **l); + char **strv_env_merge(unsigned n_lists, ...); char **strv_env_delete(char **x, unsigned n_lists, ...); /* New copy */ -- cgit v1.2.1 From 853b8397acdebdd44777810e560403bae3756859 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Feb 2013 23:45:59 +0100 Subject: core: properly validate environment data from Environment= lines in unit files --- src/core/load-fragment-gperf.gperf.m4 | 2 +- src/core/load-fragment.c | 67 +++++++++++++++++++--- src/core/load-fragment.h | 1 + src/shared/conf-parser.c | 104 ++++++++-------------------------- 4 files changed, 86 insertions(+), 88 deletions(-) diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4 index 1783ad0586..0b6a5cc659 100644 --- a/src/core/load-fragment-gperf.gperf.m4 +++ b/src/core/load-fragment-gperf.gperf.m4 @@ -31,7 +31,7 @@ $1.CPUSchedulingPriority, config_parse_exec_cpu_sched_prio, 0, $1.CPUSchedulingResetOnFork, config_parse_bool, 0, offsetof($1, exec_context.cpu_sched_reset_on_fork) $1.CPUAffinity, config_parse_exec_cpu_affinity, 0, offsetof($1, exec_context) $1.UMask, config_parse_mode, 0, offsetof($1, exec_context.umask) -$1.Environment, config_parse_unit_strv_printf, 0, offsetof($1, exec_context.environment) +$1.Environment, config_parse_environ, 0, offsetof($1, exec_context.environment) $1.EnvironmentFile, config_parse_unit_env_file, 0, offsetof($1, exec_context.environment_files) $1.StandardInput, config_parse_input, 0, offsetof($1, exec_context.std_input) $1.StandardOutput, config_parse_output, 0, offsetof($1, exec_context.std_output) diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 8436d4f95e..44698d46e5 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -48,6 +48,7 @@ #include "utf8.h" #include "path-util.h" #include "syscall-list.h" +#include "env-util.h" #ifndef HAVE_SYSV_COMPAT int config_parse_warn_compat( @@ -1486,9 +1487,10 @@ int config_parse_unit_env_file( void *data, void *userdata) { - char ***env = data, **k; + char ***env = data; Unit *u = userdata; - char *s; + _cleanup_free_ char *s = NULL; + int r; assert(filename); assert(lvalue); @@ -1497,7 +1499,6 @@ int config_parse_unit_env_file( if (isempty(rvalue)) { /* Empty assignment frees the list */ - strv_free(*env); *env = NULL; return 0; @@ -1509,17 +1510,67 @@ int config_parse_unit_env_file( if (!path_is_absolute(s[0] == '-' ? s + 1 : s)) { log_error("[%s:%u] Path '%s' is not absolute, ignoring.", filename, line, s); - free(s); return 0; } - k = strv_append(*env, s); - free(s); + r = strv_extend(env, s); + if (r < 0) + return log_oom(); + + return 0; +} + +int config_parse_environ( + const char *filename, + unsigned line, + const char *section, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + Unit *u = userdata; + char*** env = data, *w, *state; + size_t l; + _cleanup_free_ char *k = NULL; + + assert(filename); + assert(lvalue); + assert(rvalue); + assert(u); + + if (isempty(rvalue)) { + /* Empty assignment resets the list */ + strv_free(*env); + *env = NULL; + return 0; + } + + k = unit_full_printf(u, rvalue); if (!k) return log_oom(); - strv_free(*env); - *env = k; + FOREACH_WORD_QUOTED(w, l, k, state) { + _cleanup_free_ char *n; + char **x; + + n = cunescape_length(w, l); + if (!n) + return log_oom(); + + if (!env_assignment_is_valid(n)) { + log_error("[%s:%u] Invalid environment assignment, ignoring: %s", filename, line, rvalue); + continue; + } + + x = strv_env_set(*env, n); + if (!x) + return log_oom(); + + strv_free(*env); + *env = x; + } return 0; } diff --git a/src/core/load-fragment.h b/src/core/load-fragment.h index 24f738464c..421b4c33ec 100644 --- a/src/core/load-fragment.h +++ b/src/core/load-fragment.h @@ -82,6 +82,7 @@ int config_parse_unit_blkio_weight(const char *filename, unsigned line, const ch int config_parse_unit_blkio_bandwidth(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_unit_requires_mounts_for(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_syscall_filter(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); +int config_parse_environ(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); /* gperf prototypes */ const struct ConfigPerfItem* load_fragment_gperf_lookup(const char *key, unsigned length); diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 7f286096d2..c5dd26db52 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -668,12 +668,8 @@ int config_parse_strv( void *data, void *userdata) { - char*** sv = data; - char **n; - char *w; - unsigned k; + char *** sv = data, *w, *state; size_t l; - char *state; int r; assert(filename); @@ -685,50 +681,27 @@ int config_parse_strv( /* Empty assignment resets the list */ strv_free(*sv); *sv = NULL; + return 0; } - k = strv_length(*sv); - FOREACH_WORD_QUOTED(w, l, rvalue, state) - k++; - - n = new(char*, k+1); - if (!n) - return log_oom(); - - if (*sv) - for (k = 0; (*sv)[k]; k++) - n[k] = (*sv)[k]; - else - k = 0; - FOREACH_WORD_QUOTED(w, l, rvalue, state) { - n[k] = cunescape_length(w, l); - if (!n[k]) { - r = log_oom(); - goto fail; - } + _cleanup_free_ char *n; - if (!utf8_is_valid(n[k])) { - log_error("[%s:%u] String is not UTF-8 clean, ignoring assignment: %s", filename, line, rvalue); - free(n[k]); + n = cunescape_length(w, l); + if (!n) + return log_oom(); + + if (!utf8_is_valid(n)) { + log_error("[%s:%u] String is not UTF-8 clean, ignoring: %s", filename, line, rvalue); continue; } - k++; + r = strv_extend(sv, n); + if (r < 0) + return log_oom(); } - n[k] = NULL; - free(*sv); - *sv = n; - return 0; - -fail: - for (; k > 0; k--) - free(n[k-1]); - free(n); - - return r; } int config_parse_path_strv( @@ -741,12 +714,8 @@ int config_parse_path_strv( void *data, void *userdata) { - char*** sv = data; - char **n; - char *w; - unsigned k; + char*** sv = data, *w, *state; size_t l; - char *state; int r; assert(filename); @@ -758,56 +727,33 @@ int config_parse_path_strv( /* Empty assignment resets the list */ strv_free(*sv); *sv = NULL; + return 0; } - k = strv_length(*sv); - FOREACH_WORD_QUOTED(w, l, rvalue, state) - k++; - - n = new(char*, k+1); - if (!n) - return log_oom(); - - k = 0; - if (*sv) - for (; (*sv)[k]; k++) - n[k] = (*sv)[k]; - FOREACH_WORD_QUOTED(w, l, rvalue, state) { - n[k] = strndup(w, l); - if (!n[k]) { - r = log_oom(); - goto fail; - } + _cleanup_free_ char *n; - if (!utf8_is_valid(n[k])) { + n = strndup(w, l); + if (!n) + return log_oom(); + + if (!utf8_is_valid(n)) { log_error("[%s:%u] Path is not UTF-8 clean, ignoring assignment: %s", filename, line, rvalue); - free(n[k]); continue; } - if (!path_is_absolute(n[k])) { + if (!path_is_absolute(n)) { log_error("[%s:%u] Not an absolute path, ignoring: %s", filename, line, rvalue); - free(n[k]); continue; } - path_kill_slashes(n[k]); - k++; + path_kill_slashes(n); + r = strv_extend(sv, n); + if (r < 0) + return log_oom(); } - n[k] = NULL; - free(*sv); - *sv = n; - return 0; - -fail: - for (; k > 0; k--) - free(n[k-1]); - free(n); - - return r; } int config_parse_usec( -- cgit v1.2.1 From fabe5c0e5fce730aa66e10a9c4f9fdd443d7aeda Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Feb 2013 23:48:36 +0100 Subject: binfmt,tmpfiles,modules-load,sysctl: rework the various early-boot services that work on .d/ directories This unifies much of the logic behind them: - All four will now ofllow the rule that the earlier file and earlier assignment in the .d/ directories wins. Before, sysctl was the only outlier, where the later setting always won. - All four now support getopt() and --help on the command line. - All four can now handle specification of configuration file names on the command line to apply. The tools will automatically find them, and apply them. Previously only tmpfiles could do that. This is useful for %post scripts in RPMs and suchlike. - This fixes various error path issues in conf_files_list() --- man/sysctl.d.xml | 2 +- src/binfmt/binfmt.c | 130 +++++++++++++++++++---------- src/modules-load/modules-load.c | 181 +++++++++++++++++++++++++++------------- src/shared/conf-files.c | 112 +++++++++++++++---------- src/shared/conf-files.h | 1 + src/shared/hashmap.c | 27 ++++++ src/shared/hashmap.h | 2 + src/shared/path-util.c | 10 +++ src/shared/path-util.h | 1 + src/shared/strv.c | 16 ++++ src/shared/strv.h | 1 + src/shared/util.c | 79 ++++++++++++++++++ src/shared/util.h | 3 + src/sysctl/sysctl.c | 153 ++++++++++++++++----------------- src/tmpfiles/tmpfiles.c | 88 ++++++------------- 15 files changed, 516 insertions(+), 290 deletions(-) diff --git a/man/sysctl.d.xml b/man/sysctl.d.xml index 69aac8cab7..0ef5545163 100644 --- a/man/sysctl.d.xml +++ b/man/sysctl.d.xml @@ -92,7 +92,7 @@ alphabetical order, regardless in which of the directories they reside, to guarantee that a specific configuration file takes precedence over another file - with an alphabetically earlier name, if both files + with an alphabetically later name, if both files contain the same variable setting. If the administrator wants to disable a diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c index 296607d6a2..f8c97b5ca5 100644 --- a/src/binfmt/binfmt.c +++ b/src/binfmt/binfmt.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "log.h" #include "hashmap.h" @@ -33,28 +34,34 @@ #include "util.h" #include "conf-files.h" +static const char conf_file_dirs[] = + "/etc/binfmt.d\0" + "/run/binfmt.d\0" + "/usr/local/lib/binfmt.d\0" + "/usr/lib/binfmt.d\0" +#ifdef HAVE_SPLIT_USR + "/lib/binfmt.d\0" +#endif + ; + static int delete_rule(const char *rule) { - char *x, *fn = NULL, *e; - int r; + _cleanup_free_ char *x = NULL, *fn = NULL; + char *e; assert(rule[0]); - if (!(x = strdup(rule))) + x = strdup(rule); + if (!x) return log_oom(); e = strchrnul(x+1, x[0]); *e = 0; - asprintf(&fn, "/proc/sys/fs/binfmt_misc/%s", x+1); - free(x); - + fn = strappend("/proc/sys/fs/binfmt_misc/", x+1); if (!fn) return log_oom(); - r = write_one_line_file(fn, "-1"); - free(fn); - - return r; + return write_one_line_file(fn, "-1"); } static int apply_rule(const char *rule) { @@ -62,7 +69,8 @@ static int apply_rule(const char *rule) { delete_rule(rule); - if ((r = write_one_line_file("/proc/sys/fs/binfmt_misc/register", rule)) < 0) { + r = write_one_line_file("/proc/sys/fs/binfmt_misc/register", rule); + if (r < 0) { log_error("Failed to add binary format: %s", strerror(-r)); return r; } @@ -71,21 +79,22 @@ static int apply_rule(const char *rule) { } static int apply_file(const char *path, bool ignore_enoent) { - FILE *f; - int r = 0; + _cleanup_fclose_ FILE *f = NULL; + int r; assert(path); - if (!(f = fopen(path, "re"))) { - if (ignore_enoent && errno == ENOENT) + r = search_and_fopen_nulstr(path, "re", conf_file_dirs, &f); + if (r < 0) { + if (ignore_enoent && r == -ENOENT) return 0; - log_error("Failed to open file '%s', ignoring: %m", path); - return -errno; + log_error("Failed to open file '%s', ignoring: %s", path, strerror(-r)); + return r; } log_debug("apply: %s\n", path); - while (!feof(f)) { + for (;;) { char l[LINE_MAX], *p; int k; @@ -94,30 +103,71 @@ static int apply_file(const char *path, bool ignore_enoent) { break; log_error("Failed to read file '%s', ignoring: %m", path); - r = -errno; - goto finish; + return -errno; } p = strstrip(l); - if (!*p) continue; - if (strchr(COMMENTS, *p)) continue; - if ((k = apply_rule(p)) < 0 && r == 0) + k = apply_rule(p); + if (k < 0 && r == 0) r = k; } -finish: - fclose(f); - return r; } +static int help(void) { + + printf("%s [OPTIONS...] [CONFIGURATION FILE...]\n\n" + "Registers binary formats.\n\n" + " -h --help Show this help\n", + program_invocation_short_name); + + return 0; +} + +static int parse_argv(int argc, char *argv[]) { + + static const struct option options[] = { + { "help", no_argument, NULL, 'h' }, + { NULL, 0, NULL, 0 } + }; + + int c; + + assert(argc >= 0); + assert(argv); + + while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0) { + + switch (c) { + + case 'h': + help(); + return 0; + + case '?': + return -EINVAL; + + default: + log_error("Unknown option code %c", c); + return -EINVAL; + } + } + + return 1; +} + int main(int argc, char *argv[]) { - int r = 0; + int r, k; + + r = parse_argv(argc, argv); + if (r <= 0) + return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; log_set_target(LOG_TARGET_AUTO); log_parse_environment(); @@ -125,28 +175,21 @@ int main(int argc, char *argv[]) { umask(0022); - if (argc > 1) { - int i; + r = 0; - for (i = 1; i < argc; i++) { - int k; + if (argc > optind) { + int i; + for (i = optind; i < argc; i++) { k = apply_file(argv[i], false); if (k < 0 && r == 0) r = k; } } else { - char **files, **f; + _cleanup_strv_free_ char **files = NULL; + char **f; - r = conf_files_list(&files, ".conf", NULL, - "/etc/binfmt.d", - "/run/binfmt.d", - "/usr/local/lib/binfmt.d", - "/usr/lib/binfmt.d", -#ifdef HAVE_SPLIT_USR - "/lib/binfmt.d", -#endif - NULL); + r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs); if (r < 0) { log_error("Failed to enumerate binfmt.d files: %s", strerror(-r)); goto finish; @@ -156,15 +199,12 @@ int main(int argc, char *argv[]) { write_one_line_file("/proc/sys/fs/binfmt_misc/status", "-1"); STRV_FOREACH(f, files) { - int k; - k = apply_file(*f, true); if (k < 0 && r == 0) r = k; } - - strv_free(files); } + finish: return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; } diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c index 936aaed8e4..88b1261494 100644 --- a/src/modules-load/modules-load.c +++ b/src/modules-load/modules-load.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include "log.h" @@ -36,6 +37,16 @@ static char **arg_proc_cmdline_modules = NULL; +static const char conf_file_dirs[] = + "/etc/modules-load.d\0" + "/run/modules-load.d\0" + "/usr/local/lib/modules-load.d\0" + "/usr/lib/modules-load.d\0" +#ifdef HAVE_SPLIT_USR + "/lib/modules-load.d\0" +#endif + ; + #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wformat-nonliteral" static void systemd_kmod_log(void *data, int priority, const char *file, int line, @@ -46,14 +57,14 @@ static void systemd_kmod_log(void *data, int priority, const char *file, int lin #pragma GCC diagnostic pop static int add_modules(const char *p) { - char **t, **k; + char **t; + _cleanup_strv_free_ char **k = NULL; k = strv_split(p, ","); if (!k) return log_oom(); t = strv_merge(arg_proc_cmdline_modules, k); - strv_free(k); if (!t) return log_oom(); @@ -162,15 +173,98 @@ static int load_module(struct kmod_ctx *ctx, const char *m) { return r; } +static int apply_file(struct kmod_ctx *ctx, const char *path, bool ignore_enoent) { + _cleanup_fclose_ FILE *f = NULL; + int r; + + assert(ctx); + assert(path); + + r = search_and_fopen_nulstr(path, "re", conf_file_dirs, &f); + if (r < 0) { + if (ignore_enoent && r == -ENOENT) + return 0; + + log_error("Failed to open %s, ignoring: %s", path, strerror(-r)); + return r; + } + + log_debug("apply: %s\n", path); + for (;;) { + char line[LINE_MAX], *l; + int k; + + if (!fgets(line, sizeof(line), f)) { + if (feof(f)) + break; + + log_error("Failed to read file '%s', ignoring: %m", path); + return -errno; + } + + l = strstrip(line); + if (!*l) + continue; + if (strchr(COMMENTS, *l)) + continue; + + k = load_module(ctx, l); + if (k < 0 && r == 0) + r = k; + } + + return r; +} + +static int help(void) { + + printf("%s [OPTIONS...] [CONFIGURATION FILE...]\n\n" + "Loads statically configured kernel modules.\n\n" + " -h --help Show this help\n", + program_invocation_short_name); + + return 0; +} + +static int parse_argv(int argc, char *argv[]) { + + static const struct option options[] = { + { "help", no_argument, NULL, 'h' }, + { NULL, 0, NULL, 0 } + }; + + int c; + + assert(argc >= 0); + assert(argv); + + while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0) { + + switch (c) { + + case 'h': + help(); + return 0; + + case '?': + return -EINVAL; + + default: + log_error("Unknown option code %c", c); + return -EINVAL; + } + } + + return 1; +} + int main(int argc, char *argv[]) { - int r = EXIT_FAILURE, k; - char **files = NULL, **fn, **i; + int r, k; struct kmod_ctx *ctx; - if (argc > 1) { - log_error("This program takes no argument."); - return EXIT_FAILURE; - } + r = parse_argv(argc, argv); + if (r <= 0) + return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; log_set_target(LOG_TARGET_AUTO); log_parse_environment(); @@ -190,70 +284,43 @@ int main(int argc, char *argv[]) { kmod_load_resources(ctx); kmod_set_log_fn(ctx, systemd_kmod_log, NULL); - r = EXIT_SUCCESS; + r = 0; - STRV_FOREACH(i, arg_proc_cmdline_modules) { - k = load_module(ctx, *i); - if (k < 0) - r = EXIT_FAILURE; - } - - k = conf_files_list(&files, ".conf", NULL, - "/etc/modules-load.d", - "/run/modules-load.d", - "/usr/local/lib/modules-load.d", - "/usr/lib/modules-load.d", -#ifdef HAVE_SPLIT_USR - "/lib/modules-load.d", -#endif - NULL); - if (k < 0) { - log_error("Failed to enumerate modules-load.d files: %s", strerror(-k)); - r = EXIT_FAILURE; - goto finish; - } - - STRV_FOREACH(fn, files) { - FILE *f; + if (argc > optind) { + int i; - f = fopen(*fn, "re"); - if (!f) { - if (errno == ENOENT) - continue; - - log_error("Failed to open %s: %m", *fn); - r = EXIT_FAILURE; - continue; + for (i = optind; i < argc; i++) { + k = apply_file(ctx, argv[i], false); + if (k < 0 && r == 0) + r = k; } - log_debug("apply: %s\n", *fn); - for (;;) { - char line[LINE_MAX], *l; - - if (!fgets(line, sizeof(line), f)) - break; + } else { + _cleanup_free_ char **files = NULL; + char **fn, **i; - l = strstrip(line); - if (*l == '#' || *l == 0) - continue; - - k = load_module(ctx, l); + STRV_FOREACH(i, arg_proc_cmdline_modules) { + k = load_module(ctx, *i); if (k < 0) r = EXIT_FAILURE; } - if (ferror(f)) { - log_error("Failed to read from file: %m"); - r = EXIT_FAILURE; + r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs); + if (r < 0) { + log_error("Failed to enumerate modules-load.d files: %s", strerror(-r)); + goto finish; } - fclose(f); + STRV_FOREACH(fn, files) { + k = apply_file(ctx, *fn, true); + if (k < 0 && r == 0) + r = k; + } } finish: - strv_free(files); kmod_unref(ctx); strv_free(arg_proc_cmdline_modules); - return r; + return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; } diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c index 5bbd2388d3..296e605761 100644 --- a/src/shared/conf-files.c +++ b/src/shared/conf-files.c @@ -38,7 +38,7 @@ #include "conf-files.h" static int files_add(Hashmap *h, const char *root, const char *path, const char *suffix) { - _cleanup_closedir_ DIR *dir; + _cleanup_closedir_ DIR *dir = NULL; _cleanup_free_ char *dirpath = NULL; if (asprintf(&dirpath, "%s%s", root ? root : "", path) < 0) @@ -55,11 +55,11 @@ static int files_add(Hashmap *h, const char *root, const char *path, const char struct dirent *de; union dirent_storage buf; char *p; - int err; + int r; - err = readdir_r(dir, &buf.de, &de); - if (err != 0) - return err; + r = readdir_r(dir, &buf.de, &de); + if (r != 0) + return -r; if (!de) break; @@ -67,11 +67,19 @@ static int files_add(Hashmap *h, const char *root, const char *path, const char if (!dirent_is_file_with_suffix(de, suffix)) continue; - if (asprintf(&p, "%s/%s", dirpath, de->d_name) < 0) + p = strjoin(dirpath, "/", de->d_name, NULL); + if (!p) return -ENOMEM; - if (hashmap_put(h, path_get_file_name(p), p) <= 0) { - log_debug("Skip overridden file: %s.", p); + r = hashmap_put(h, path_get_file_name(p), p); + if (r == -EEXIST) { + log_debug("Skipping overridden file: %s.", p); + free(p); + } else if (r < 0) { + free(p); + return r; + } else if (r == 0) { + log_debug("Duplicate file %s", p); free(p); } } @@ -87,64 +95,84 @@ static int base_cmp(const void *a, const void *b) { return strcmp(path_get_file_name(s1), path_get_file_name(s2)); } -int conf_files_list_strv(char ***strv, const char *suffix, const char *root, const char **dirs) { - Hashmap *fh = NULL; - char **files = NULL; - const char **p; +static int conf_files_list_strv_internal(char ***strv, const char *suffix, const char *root, char **dirs) { + Hashmap *fh; + char **files, **p; int r; - assert(dirs); + assert(strv); + assert(suffix); + + /* This alters the dirs string array */ + if (!path_strv_canonicalize_uniq(dirs)) + return -ENOMEM; fh = hashmap_new(string_hash_func, string_compare_func); - if (!fh) { - r = -ENOMEM; - goto finish; - } + if (!fh) + return -ENOMEM; STRV_FOREACH(p, dirs) { r = files_add(fh, root, *p, suffix); - if (r < 0) - log_warning("Failed to search for files in %s: %s", - *p, strerror(-r)); + if (r == -ENOMEM) { + hashmap_free_free(fh); + return r; + } else if (r < 0) + log_debug("Failed to search for files in %s: %s", + *p, strerror(-r)); } files = hashmap_get_strv(fh); if (files == NULL) { - log_error("Failed to compose list of files."); - r = -ENOMEM; - goto finish; + hashmap_free_free(fh); + return -ENOMEM; } + qsort(files, hashmap_size(fh), sizeof(char *), base_cmp); - r = 0; + *strv = files; -finish: hashmap_free(fh); - *strv = files; - return r; + return 0; +} + +int conf_files_list_strv(char ***strv, const char *suffix, const char *root, const char **dirs) { + _cleanup_strv_free_ char **copy = NULL; + + assert(strv); + assert(suffix); + + copy = strv_copy((char**) dirs); + if (!copy) + return -ENOMEM; + + return conf_files_list_strv_internal(strv, suffix, root, copy); } int conf_files_list(char ***strv, const char *suffix, const char *root, const char *dir, ...) { - char **dirs = NULL; + _cleanup_strv_free_ char **dirs = NULL; va_list ap; - int r; + + assert(strv); + assert(suffix); va_start(ap, dir); dirs = strv_new_ap(dir, ap); va_end(ap); - if (!dirs) { - r = -ENOMEM; - goto finish; - } - if (!path_strv_canonicalize(dirs)) { - r = -ENOMEM; - goto finish; - } - strv_uniq(dirs); + if (!dirs) + return -ENOMEM; + + return conf_files_list_strv_internal(strv, suffix, root, dirs); +} - r = conf_files_list_strv(strv, suffix, root, (const char **)dirs); +int conf_files_list_nulstr(char ***strv, const char *suffix, const char *root, const char *d) { + _cleanup_strv_free_ char **dirs = NULL; + + assert(strv); + assert(suffix); + + dirs = strv_split_nulstr(d); + if (!dirs) + return -ENOMEM; -finish: - strv_free(dirs); - return r; + return conf_files_list_strv_internal(strv, suffix, root, dirs); } diff --git a/src/shared/conf-files.h b/src/shared/conf-files.h index 4d7941f4cb..28588e6f03 100644 --- a/src/shared/conf-files.h +++ b/src/shared/conf-files.h @@ -27,5 +27,6 @@ int conf_files_list(char ***strv, const char *suffix, const char *root, const char *dir, ...); int conf_files_list_strv(char ***strv, const char *suffix, const char *root, const char **dirs); +int conf_files_list_nulstr(char ***strv, const char *suffix, const char *root, const char *dirs); #endif diff --git a/src/shared/hashmap.c b/src/shared/hashmap.c index a2c728d642..9f7db34397 100644 --- a/src/shared/hashmap.c +++ b/src/shared/hashmap.c @@ -309,6 +309,17 @@ void hashmap_free_free(Hashmap *h) { hashmap_free(h); } +void hashmap_free_free_free(Hashmap *h) { + + /* Free the hashmap and all data and key objects in it */ + + if (!h) + return; + + hashmap_clear_free_free(h); + hashmap_free(h); +} + void hashmap_clear(Hashmap *h) { if (!h) return; @@ -327,6 +338,22 @@ void hashmap_clear_free(Hashmap *h) { free(p); } +void hashmap_clear_free_free(Hashmap *h) { + if (!h) + return; + + while (h->iterate_list_head) { + void *a, *b; + + a = h->iterate_list_head->value; + b = (void*) h->iterate_list_head->key; + remove_entry(h, h->iterate_list_head); + free(a); + free(b); + } +} + + static struct hashmap_entry *hash_scan(Hashmap *h, unsigned hash, const void *key) { struct hashmap_entry *e; assert(h); diff --git a/src/shared/hashmap.h b/src/shared/hashmap.h index 6fd71cf519..26bd03096d 100644 --- a/src/shared/hashmap.h +++ b/src/shared/hashmap.h @@ -50,6 +50,7 @@ int uint64_compare_func(const void *a, const void *b); Hashmap *hashmap_new(hash_func_t hash_func, compare_func_t compare_func); void hashmap_free(Hashmap *h); void hashmap_free_free(Hashmap *h); +void hashmap_free_free_free(Hashmap *h); Hashmap *hashmap_copy(Hashmap *h); int hashmap_ensure_allocated(Hashmap **h, hash_func_t hash_func, compare_func_t compare_func); @@ -77,6 +78,7 @@ void *hashmap_iterate_skip(Hashmap *h, const void *key, Iterator *i); void hashmap_clear(Hashmap *h); void hashmap_clear_free(Hashmap *h); +void hashmap_clear_free_free(Hashmap *h); void *hashmap_steal_first(Hashmap *h); void *hashmap_steal_first_key(Hashmap *h); diff --git a/src/shared/path-util.c b/src/shared/path-util.c index 52ce65de6d..0b50ea646a 100644 --- a/src/shared/path-util.c +++ b/src/shared/path-util.c @@ -215,6 +215,16 @@ char **path_strv_canonicalize(char **l) { return l; } +char **path_strv_canonicalize_uniq(char **l) { + if (strv_isempty(l)) + return l; + + if (!path_strv_canonicalize(l)) + return NULL; + + return strv_uniq(l); +} + char *path_kill_slashes(char *path) { char *f, *t; bool slash = false; diff --git a/src/shared/path-util.h b/src/shared/path-util.h index e37ab9350b..ff523943dc 100644 --- a/src/shared/path-util.h +++ b/src/shared/path-util.h @@ -37,6 +37,7 @@ bool path_equal(const char *a, const char *b); char **path_strv_make_absolute_cwd(char **l); char **path_strv_canonicalize(char **l); +char **path_strv_canonicalize_uniq(char **l); int path_is_mount_point(const char *path, bool allow_symlink); int path_is_read_only_fs(const char *path); diff --git a/src/shared/strv.c b/src/shared/strv.c index ee0b71ece0..ec25755289 100644 --- a/src/shared/strv.c +++ b/src/shared/strv.c @@ -504,6 +504,22 @@ char **strv_parse_nulstr(const char *s, size_t l) { return v; } +char **strv_split_nulstr(const char *s) { + const char *i; + char **r = NULL; + + NULSTR_FOREACH(i, s) + if (strv_extend(&r, i) < 0) { + strv_free(r); + return NULL; + } + + if (!r) + return strv_new(NULL, NULL); + + return r; +} + bool strv_overlap(char **a, char **b) { char **i, **j; diff --git a/src/shared/strv.h b/src/shared/strv.h index d28625bd2f..b3802a7a3f 100644 --- a/src/shared/strv.h +++ b/src/shared/strv.h @@ -62,6 +62,7 @@ char **strv_split_quoted(const char *s) _malloc_; char *strv_join(char **l, const char *separator) _malloc_; char **strv_parse_nulstr(const char *s, size_t l); +char **strv_split_nulstr(const char *s); bool strv_overlap(char **a, char **b); diff --git a/src/shared/util.c b/src/shared/util.c index 29cb9f1e8d..24f9e7ee58 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5909,3 +5909,82 @@ int on_ac_power(void) { return found_online || !found_offline; } + +static int search_and_fopen_internal(const char *path, const char *mode, char **search, FILE **_f) { + char **i; + + assert(path); + assert(mode); + assert(_f); + + if (!path_strv_canonicalize_uniq(search)) + return -ENOMEM; + + STRV_FOREACH(i, search) { + _cleanup_free_ char *p = NULL; + FILE *f; + + p = strjoin(*i, "/", path, NULL); + if (!p) + return -ENOMEM; + + f = fopen(p, mode); + if (f) { + *_f = f; + return 0; + } + + if (errno != ENOENT) + return -errno; + } + + return -ENOENT; +} + +int search_and_fopen(const char *path, const char *mode, const char **search, FILE **_f) { + _cleanup_strv_free_ char **copy = NULL; + + assert(path); + assert(mode); + assert(_f); + + if (path_is_absolute(path)) { + FILE *f; + + f = fopen(path, mode); + if (f) { + *_f = f; + return 0; + } + + return -errno; + } + + copy = strv_copy((char**) search); + if (!copy) + return -ENOMEM; + + return search_and_fopen_internal(path, mode, copy, _f); +} + +int search_and_fopen_nulstr(const char *path, const char *mode, const char *search, FILE **_f) { + _cleanup_strv_free_ char **s = NULL; + + if (path_is_absolute(path)) { + FILE *f; + + f = fopen(path, mode); + if (f) { + *_f = f; + return 0; + } + + return -errno; + } + + s = strv_split_nulstr(search); + if (!s) + return -ENOMEM; + + return search_and_fopen_internal(path, mode, s, _f); +} diff --git a/src/shared/util.h b/src/shared/util.h index d926b01919..cd13457528 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -568,6 +568,9 @@ char *strip_tab_ansi(char **p, size_t *l); int on_ac_power(void); +int search_and_fopen(const char *path, const char *mode, const char **search, FILE **_f); +int search_and_fopen_nulstr(const char *path, const char *mode, const char *search, FILE **_f); + #define FOREACH_LINE(f, line, on_error) \ for (char line[LINE_MAX]; !feof(f); ) \ if (!fgets(line, sizeof(line), f)) { \ diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c index f5ef89b385..f59a858323 100644 --- a/src/sysctl/sysctl.c +++ b/src/sysctl/sysctl.c @@ -35,28 +35,42 @@ #include "path-util.h" #include "conf-files.h" -#define PROC_SYS_PREFIX "/proc/sys/" +static char **arg_prefixes = NULL; -static char **arg_prefixes; -static Hashmap *sysctl_options; +static const char conf_file_dirs[] = + "/etc/sysctl.d\0" + "/run/sysctl.d\0" + "/usr/local/lib/sysctl.d\0" + "/usr/lib/sysctl.d\0" +#ifdef HAVE_SPLIT_USR + "/lib/sysctl.d\0" +#endif + ; + +static char *normalize_sysctl(char *s) { + char *n; + + for (n = s; *n; n++) + if (*n == '.') + *n = '/'; + + return s; +} static int apply_sysctl(const char *property, const char *value) { - char *p, *n; + _cleanup_free_ char *p = NULL; + char *n; int r = 0, k; log_debug("Setting '%s' to '%s'", property, value); - p = new(char, sizeof(PROC_SYS_PREFIX) + strlen(property)); + p = new(char, sizeof("/proc/sys/") + strlen(property)); if (!p) return log_oom(); - n = stpcpy(p, PROC_SYS_PREFIX); + n = stpcpy(p, "/proc/sys/"); strcpy(n, property); - for (; *n; n++) - if (*n == '.') - *n = '/'; - if (!strv_isempty(arg_prefixes)) { char **i; bool good = false; @@ -69,14 +83,12 @@ static int apply_sysctl(const char *property, const char *value) { if (!good) { log_debug("Skipping %s", p); - free(p); return 0; } } k = write_one_line_file(p, value); if (k < 0) { - log_full(k == -ENOENT ? LOG_DEBUG : LOG_WARNING, "Failed to write '%s' to '%s': %s", value, p, strerror(-k)); @@ -84,16 +96,16 @@ static int apply_sysctl(const char *property, const char *value) { r = k; } - free(p); - return r; } -static int apply_all(void) { +static int apply_all(Hashmap *sysctl_options) { int r = 0; char *property, *value; Iterator i; + assert(sysctl_options); + HASHMAP_FOREACH_KEY(value, property, sysctl_options, i) { int k; @@ -104,36 +116,35 @@ static int apply_all(void) { return r; } -static int parse_file(const char *path, bool ignore_enoent) { - FILE *f; - int r = 0; +static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_enoent) { + _cleanup_fclose_ FILE *f = NULL; + int r; assert(path); - f = fopen(path, "re"); - if (!f) { - if (ignore_enoent && errno == ENOENT) + r = search_and_fopen_nulstr(path, "re", conf_file_dirs, &f); + if (r < 0) { + if (ignore_enoent && errno == -ENOENT) return 0; - log_error("Failed to open file '%s', ignoring: %m", path); - return -errno; + log_error("Failed to open file '%s', ignoring: %s", path, strerror(-r)); + return r; } log_debug("parse: %s\n", path); while (!feof(f)) { - char l[LINE_MAX], *p, *value, *new_value, *property; + char l[LINE_MAX], *p, *value, *new_value, *property, *existing; + int k; if (!fgets(l, sizeof(l), f)) { if (feof(f)) break; log_error("Failed to read file '%s', ignoring: %m", path); - r = -errno; - goto finish; + return -errno; } p = strstrip(l); - if (!*p) continue; @@ -152,40 +163,36 @@ static int parse_file(const char *path, bool ignore_enoent) { *value = 0; value++; - property = strdup(strstrip(p)); - if (!property) { - r = log_oom(); - goto finish; + p = normalize_sysctl(strstrip(p)); + value = strstrip(value); + + existing = hashmap_get(sysctl_options, p); + if (existing) { + if (!streq(value, existing)) + log_warning("Two ore more conflicting assignments of %s, ignoring.", property); + + continue; } - new_value = strdup(strstrip(value)); + property = strdup(p); + if (!property) + return log_oom(); + + new_value = strdup(value); if (!new_value) { free(property); - r = log_oom(); - goto finish; + return log_oom(); } - r = hashmap_put(sysctl_options, property, new_value); - if (r < 0) { - if (r == -EEXIST) { - /* ignore this "error" to avoid returning it - * for the function when this is the last key - * in the file being parsed. */ - r = 0; - log_debug("Skipping previously assigned sysctl variable %s", property); - } else - log_error("Failed to add sysctl variable %s to hashmap: %s", property, strerror(-r)); - + k = hashmap_put(sysctl_options, property, new_value); + if (k < 0) { + log_error("Failed to add sysctl variable %s to hashmap: %s", property, strerror(-r)); free(property); free(new_value); - if (r != 0) - goto finish; + return k; } } -finish: - fclose(f); - return r; } @@ -257,8 +264,7 @@ static int parse_argv(int argc, char *argv[]) { int main(int argc, char *argv[]) { int r = 0, k; - char *property, *value; - Iterator it; + Hashmap *sysctl_options; r = parse_argv(argc, argv); if (r <= 0) @@ -282,54 +288,35 @@ int main(int argc, char *argv[]) { int i; for (i = optind; i < argc; i++) { - k = parse_file(argv[i], false); - if (k < 0) + k = parse_file(sysctl_options, argv[i], false); + if (k < 0 && r == 0) r = k; } } else { - char **files, **f; + _cleanup_strv_free_ char **files = NULL; + char **f; - r = conf_files_list(&files, ".conf", NULL, - "/etc/sysctl.d", - "/run/sysctl.d", - "/usr/local/lib/sysctl.d", - "/usr/lib/sysctl.d", -#ifdef HAVE_SPLIT_USR - "/lib/sysctl.d", -#endif - NULL); + r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs); if (r < 0) { log_error("Failed to enumerate sysctl.d files: %s", strerror(-r)); goto finish; } - /* We parse the files in decreasing order of precedence. - * parse_file() will skip keys that were already assigned. */ + r = parse_file(sysctl_options, "/etc/sysctl.conf", true); - r = parse_file("/etc/sysctl.conf", true); - - f = files + strv_length(files) - 1; - STRV_FOREACH_BACKWARDS(f, files) { - k = parse_file(*f, true); - if (k < 0) + STRV_FOREACH(f, files) { + k = parse_file(sysctl_options, *f, true); + if (k < 0 && r == 0) r = k; } - - strv_free(files); } - k = apply_all(); - if (k < 0) + k = apply_all(sysctl_options); + if (k < 0 && r == 0) r = k; finish: - HASHMAP_FOREACH_KEY(value, property, sysctl_options, it) { - hashmap_remove(sysctl_options, property); - free(property); - free(value); - } - hashmap_free(sysctl_options); - + hashmap_free_free_free(sysctl_options); strv_free(arg_prefixes); return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index 96adbff42e..6b3f70e071 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -106,16 +106,15 @@ static bool arg_remove = false; static const char *arg_prefix = NULL; -static const char * const conf_file_dirs[] = { - "/etc/tmpfiles.d", - "/run/tmpfiles.d", - "/usr/local/lib/tmpfiles.d", - "/usr/lib/tmpfiles.d", +static const char conf_file_dirs[] = + "/etc/tmpfiles.d\0" + "/run/tmpfiles.d\0" + "/usr/local/lib/tmpfiles.d\0" + "/usr/lib/tmpfiles.d\0" #ifdef HAVE_SPLIT_USR - "/lib/tmpfiles.d", + "/lib/tmpfiles.d\0" #endif - NULL -}; + ; #define MAX_DEPTH 256 @@ -1289,20 +1288,19 @@ static int parse_argv(int argc, char *argv[]) { static int read_config_file(const char *fn, bool ignore_enoent) { FILE *f; unsigned v = 0; - int r = 0; + int r; Iterator iterator; Item *i; assert(fn); - f = fopen(fn, "re"); - if (!f) { - - if (ignore_enoent && errno == ENOENT) + r = search_and_fopen_nulstr(fn, "re", conf_file_dirs, &f); + if (r < 0) { + if (ignore_enoent && r == -ENOENT) return 0; - log_error("Failed to open %s: %m", fn); - return -errno; + log_error("Failed to open '%s', ignoring: %s", fn, strerror(-r)); + return r; } log_debug("apply: %s\n", fn); @@ -1363,32 +1361,8 @@ static int read_config_file(const char *fn, bool ignore_enoent) { return r; } -static char *resolve_fragment(const char *fragment, const char **search_paths) { - const char **p; - char *resolved_path; - - if (is_path(fragment)) - return strdup(fragment); - - STRV_FOREACH(p, search_paths) { - resolved_path = strjoin(*p, "/", fragment, NULL); - if (resolved_path == NULL) { - log_oom(); - return NULL; - } - - if (access(resolved_path, F_OK) == 0) - return resolved_path; - - free(resolved_path); - } - - errno = ENOENT; - return NULL; -} - int main(int argc, char *argv[]) { - int r; + int r, k; Item *i; Iterator iterator; @@ -1408,46 +1382,36 @@ int main(int argc, char *argv[]) { globs = hashmap_new(string_hash_func, string_compare_func); if (!items || !globs) { - log_oom(); - r = EXIT_FAILURE; + r = log_oom(); goto finish; } - r = EXIT_SUCCESS; + r = 0; if (optind < argc) { int j; for (j = optind; j < argc; j++) { - char *fragment; - - fragment = resolve_fragment(argv[j], (const char **)conf_file_dirs); - if (!fragment) { - log_error("Failed to find a %s file: %m", argv[j]); - r = EXIT_FAILURE; - goto finish; - } - if (read_config_file(fragment, false) < 0) - r = EXIT_FAILURE; - free(fragment); + k = read_config_file(argv[j], false); + if (k < 0 && r == 0) + r = k; } } else { - char **files, **f; + _cleanup_strv_free_ char **files = NULL; + char **f; - r = conf_files_list_strv(&files, ".conf", NULL, (const char **)conf_file_dirs); + r = conf_files_list_nulstr(&files, ".conf", NULL, conf_file_dirs); if (r < 0) { log_error("Failed to enumerate tmpfiles.d files: %s", strerror(-r)); - r = EXIT_FAILURE; goto finish; } STRV_FOREACH(f, files) { - if (read_config_file(*f, true) < 0) - r = EXIT_FAILURE; + k = read_config_file(*f, true); + if (k < 0 && r == 0) + r = k; } - - strv_free(files); } HASHMAP_FOREACH(i, globs, iterator) @@ -1470,5 +1434,5 @@ finish: label_finish(); - return r; + return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; } -- cgit v1.2.1 From 8b55b8c4e7fce5e05dcfd783a37fb843d1bf1868 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Feb 2013 23:53:14 +0100 Subject: manager: clean environment before passing it on to others --- src/core/manager.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/manager.c b/src/core/manager.c index c8d7d70dc4..4bebb2996f 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -71,6 +71,7 @@ #include "path-util.h" #include "audit-fd.h" #include "efivars.h" +#include "env-util.h" /* As soon as 16 units are in our GC queue, make sure to run a gc sweep */ #define GC_QUEUE_ENTRIES_MAX 16 @@ -289,6 +290,9 @@ static void manager_strip_environment(Manager *m) { * the initrd interface: * http://www.freedesktop.org/wiki/Software/systemd/InitrdInterface */ strv_remove_prefix(m->environment, "RD_"); + + /* Drop invalid entries */ + strv_env_clean(m->environment); } int manager_new(SystemdRunningAs running_as, Manager **_m) { -- cgit v1.2.1 From 96088db02b2802049f1edbd44d5f8c2ea838f3f2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 12 Feb 2013 00:31:13 +0100 Subject: journalctl: allow both "-n 55" and "-n55" on the command line, as equivalent syntaxes https://bugs.freedesktop.org/show_bug.cgi?id=60596 --- src/journal/journalctl.c | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 0ec2f331db..0afeef932e 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -244,8 +244,25 @@ static int parse_argv(int argc, char *argv[]) { log_error("Failed to parse lines '%s'", optarg); return -EINVAL; } - } else - arg_lines = 10; + } else { + int n; + + /* Hmm, no argument? Maybe the next + * word on the command line is + * supposed to be the argument? Let's + * see if there is one, and is + * parsable as a positive + * integer... */ + + if (optind < argc && + safe_atoi(argv[optind], &n) >= 0 && + n >= 0) { + + arg_lines = n; + optind++; + } else + arg_lines = 10; + } break; -- cgit v1.2.1 From 82c1d8f4eb74ddd9be2c9b9b56d9dc564c599eff Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 12 Feb 2013 00:34:39 +0100 Subject: localectl: fix --help text https://bugs.freedesktop.org/show_bug.cgi?id=60595 --- src/locale/localectl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/locale/localectl.c b/src/locale/localectl.c index 8c3c8e3f0f..ce31e1ffce 100644 --- a/src/locale/localectl.c +++ b/src/locale/localectl.c @@ -609,7 +609,7 @@ static int set_x11_keymap(DBusConnection *bus, char **args, unsigned n) { static int help(void) { printf("%s [OPTIONS...] COMMAND ...\n\n" - "Query or change system time and date settings.\n\n" + "Query or change system locale and keyboard settings.\n\n" " -h --help Show this help\n" " --version Show package version\n" " --no-convert Don't convert keyboard mappings\n" -- cgit v1.2.1 From a0ec302b9309bc56f6bed6162e47ad6c27165747 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 12 Feb 2013 15:19:38 +0100 Subject: cdrom_id: add data track count for bad virtual drive implementations /# /lib/udev/cdrom_id --debug /dev/sr0 probing: '/dev/sr0' INQUIRY: [AMI ][Virtual CDROM ][1.00] GET CONFIGURATION failed with SK=5h/ASC=20h/ACQ=00h drive is pre-MMC2 and does not support 46h get configuration command trying to work around the problem READ DISC INFORMATION failed with SK=5h/ASC=20h/ACQ=00h no current profile, but disc is present; assuming CD-ROM READ TOC: len: 12, start track: 1, end track: 1 last track 1 starts at block 0 READ DISC INFORMATION failed with SK=5h/ASC=20h/ACQ=00h ID_CDROM=1 ID_CDROM_MEDIA=1 ID_CDROM_MEDIA_CD=1 What is missing here is ID_CDROM_MEDIA_TRACK_COUNT_DATA to trigger blkid in /lib/udev/rules.d/60-persistent-storage.rules KERNEL=="sr*", ENV{DISK_EJECT_REQUEST}!="?*", ENV{ID_CDROM_MEDIA_TRACK_COUNT_DATA}=="?*", ENV{ID_CDROM_MEDIA_SESSION_LAST_OFFSET}=="", \ IMPORT{builtin}="blkid --noraid" --- src/udev/cdrom_id/cdrom_id.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/udev/cdrom_id/cdrom_id.c b/src/udev/cdrom_id/cdrom_id.c index 1056536b7d..b659cc31ee 100644 --- a/src/udev/cdrom_id/cdrom_id.c +++ b/src/udev/cdrom_id/cdrom_id.c @@ -513,6 +513,8 @@ static int cd_profiles_old_mmc(struct udev *udev, int fd) if (cd_media == 1) { log_debug("no current profile, but disc is present; assuming CD-ROM\n"); cd_media_cd_rom = 1; + cd_media_track_count = 1; + cd_media_track_count_data = 1; return 0; } else { log_debug("no current profile, assuming no media\n"); -- cgit v1.2.1 From 38d70045d15d5bc463c097a6983a23502ff8a837 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 12 Feb 2013 16:03:45 +0100 Subject: udev: use unique names for temporary files created in /dev On Tue, Feb 12, 2013 at 2:18 PM, Robert Milasan wrote: > Under some circumstances udev mixed with multipath fails: > > udevd-work[1376]: > symlink(../../sdk, /dev/disk/by-id/scsi-36005076305ffc0670000000000002842.udev-tmp) > failed: File exists udevd-work[1432]: > rename(/dev/disk/by-id/scsi-36005076305ffc0850000000000000a88.udev-tmp, /dev/disk/by-id/scsi-36005076305ffc0850000000000000a88) > failed: No such file or directory > > This is non-fatal, but there is no point of created the symlink or > renaming the symlink if it already exists. > > Reference: https://bugzilla.novell.com/show_bug.cgi?id=791503 It looke like this now: stat("/dev/disk/by-id", {st_mode=S_IFDIR|0755, st_size=80, ...}) = 0 symlink("../../sda", "/dev/disk/by-id/ata-INTEL...N.tmp-b8:0") = 0 rename("/dev/disk/by-id/ata-INTEL...N.tmp-b8:0", "/dev/disk/by-id/ata-INTEL...N") = 0 --- src/udev/udev-node.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c index bce4cfe433..363cee1d1c 100644 --- a/src/udev/udev-node.c +++ b/src/udev/udev-node.c @@ -31,15 +31,13 @@ #include "udev.h" -#define TMP_FILE_EXT ".udev-tmp" - -static int node_symlink(struct udev *udev, const char *node, const char *slink) +static int node_symlink(struct udev_device *dev, const char *node, const char *slink) { struct stat stats; char target[UTIL_PATH_SIZE]; char *s; size_t l; - char slink_tmp[UTIL_PATH_SIZE + sizeof(TMP_FILE_EXT)]; + char slink_tmp[UTIL_PATH_SIZE + 32]; int i = 0; int tail = 0; int err = 0; @@ -101,7 +99,7 @@ static int node_symlink(struct udev *udev, const char *node, const char *slink) } log_debug("atomically replace '%s'\n", slink); - strscpyl(slink_tmp, sizeof(slink_tmp), slink, TMP_FILE_EXT, NULL); + strscpyl(slink_tmp, sizeof(slink_tmp), slink, ".tmp-", udev_device_get_id_filename(dev), NULL); unlink(slink_tmp); do { err = mkdir_parents_label(slink_tmp, 0755); @@ -204,7 +202,7 @@ static void link_update(struct udev_device *dev, const char *slink, bool add) util_delete_path(udev, slink); } else { log_debug("creating link '%s' to '%s'\n", slink, target); - node_symlink(udev, target, slink); + node_symlink(dev, target, slink); } if (add) { @@ -298,7 +296,6 @@ out: void udev_node_add(struct udev_device *dev, bool apply, mode_t mode, uid_t uid, gid_t gid) { - struct udev *udev = udev_device_get_udev(dev); char filename[UTIL_PATH_SIZE]; struct udev_list_entry *list_entry; @@ -312,7 +309,7 @@ void udev_node_add(struct udev_device *dev, bool apply, mode_t mode, uid_t uid, snprintf(filename, sizeof(filename), "/dev/%s/%u:%u", strcmp(udev_device_get_subsystem(dev), "block") == 0 ? "block" : "char", major(udev_device_get_devnum(dev)), minor(udev_device_get_devnum(dev))); - node_symlink(udev, udev_device_get_devnode(dev), filename); + node_symlink(dev, udev_device_get_devnode(dev), filename); /* create/update symlinks, add symlinks to name index */ udev_list_entry_foreach(list_entry, udev_device_get_devlinks_list_entry(dev)) -- cgit v1.2.1 From a96215285a9566668a5d92c1342888da7596144b Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Tue, 12 Feb 2013 14:26:17 +0100 Subject: missing: define MS_REC and MS_SHARED if not defined already --- src/shared/missing.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/shared/missing.h b/src/shared/missing.h index c53579ff7f..d4ba0d3dcf 100644 --- a/src/shared/missing.h +++ b/src/shared/missing.h @@ -196,6 +196,14 @@ static inline pid_t gettid(void) { #define MS_STRICTATIME (1<<24) #endif +#ifndef MS_REC +#define MS_REC 16384 +#endif + +#ifndef MS_SHARED +#define MS_SHARED (1<<20) +#endif + #ifndef PR_SET_NO_NEW_PRIVS #define PR_SET_NO_NEW_PRIVS 38 #endif -- cgit v1.2.1 From 9cde64ff264c432fc83be638e57d8fd6392793a6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 00:07:55 +0100 Subject: efi: various cleanups --- src/boot/boot-efi.c | 27 +++--- src/boot/boot.h | 2 - src/core/mount-setup.c | 2 +- src/efi-boot-generator/efi-boot-generator.c | 2 +- src/shared/efivars.c | 125 +++++++++++++++++++++------- src/shared/efivars.h | 9 +- 6 files changed, 116 insertions(+), 51 deletions(-) diff --git a/src/boot/boot-efi.c b/src/boot/boot-efi.c index 32cb973cf6..ac5f9c12a7 100644 --- a/src/boot/boot-efi.c +++ b/src/boot/boot-efi.c @@ -66,7 +66,7 @@ static int get_boot_entries(struct boot_info *info) { memset(e, 0, sizeof(struct boot_info_entry)); e->order = -1; - err = efi_get_boot_option(id, NULL, &e->title, &e->part_uuid, &e->path, &e->data, &e->data_size); + err = efi_get_boot_option(id, &e->title, &e->part_uuid, &e->path); if (err < 0) break; e->id = id; @@ -103,11 +103,13 @@ static int find_active_entry(struct boot_info *info) { static int get_boot_order(struct boot_info *info) { size_t i, k; - int err; + int r; - err = efi_get_boot_order(&info->fw_entries_order, &info->fw_entries_order_count); - if (err < 0) - return err; + r = efi_get_boot_order(&info->fw_entries_order); + if (r < 0) + return r; + + info->fw_entries_order_count = r; for (i = 0; i < info->fw_entries_order_count; i++) { for (k = 0; k < info->fw_entries_count; k++) { @@ -142,9 +144,9 @@ static int entry_cmp(const void *a, const void *b) { int boot_info_query(struct boot_info *info) { char str[64]; char buf[64]; - char *loader_active; + char *loader_active = NULL; - info->loader = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderInfo"); + efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderInfo", &info->loader); get_boot_entries(info); if (info->fw_entries_count > 0) { @@ -153,19 +155,20 @@ int boot_info_query(struct boot_info *info) { find_active_entry(info); } - info->fw_type = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderFirmwareType"); - info->fw_info = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderFirmwareInfo"); - info->loader_image_path = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderImageIdentifier"); + efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderFirmwareType", &info->fw_type); + efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderFirmwareInfo", &info->fw_info); + efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderImageIdentifier", &info->loader_image_path); efi_get_loader_device_part_uuid(&info->loader_part_uuid); boot_loader_read_entries(info); - loader_active = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderEntrySelected"); + efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderEntrySelected", &loader_active); if (loader_active) { boot_loader_find_active_entry(info, loader_active); free(loader_active); } snprintf(str, sizeof(str), "LoaderEntryOptions-%s", sd_id128_to_string(info->machine_id, buf)); - info->loader_options_added = efi_get_variable_string(EFI_VENDOR_LOADER, str); + efi_get_variable_string(EFI_VENDOR_LOADER, str, &info->loader_options_added); + return 0; } diff --git a/src/boot/boot.h b/src/boot/boot.h index 90e45ccd68..febee123d5 100644 --- a/src/boot/boot.h +++ b/src/boot/boot.h @@ -38,8 +38,6 @@ struct boot_info_entry { char *title; sd_id128_t part_uuid; char *path; - char *data; - size_t data_size; }; struct boot_info { diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index 5b32474bbe..2cd0b60ba7 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -78,7 +78,7 @@ static const MountPoint mount_table[] = { { "securityfs", "/sys/kernel/security", "securityfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_NONE }, { "efivarfs", "/sys/firmware/efi/efivars", "efivarfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, - is_efiboot, MNT_NONE }, + is_efi_boot, MNT_NONE }, { "tmpfs", "/dev/shm", "tmpfs", "mode=1777", MS_NOSUID|MS_NODEV|MS_STRICTATIME, NULL, MNT_FATAL|MNT_IN_CONTAINER }, { "devpts", "/dev/pts", "devpts", "mode=620,gid=" STRINGIFY(TTY_GID), MS_NOSUID|MS_NOEXEC, diff --git a/src/efi-boot-generator/efi-boot-generator.c b/src/efi-boot-generator/efi-boot-generator.c index 1319c71201..88fa220d2f 100644 --- a/src/efi-boot-generator/efi-boot-generator.c +++ b/src/efi-boot-generator/efi-boot-generator.c @@ -49,7 +49,7 @@ int main(int argc, char *argv[]) { umask(0022); - if (!is_efiboot()) + if (!is_efi_boot()) return EXIT_SUCCESS; if (dir_is_empty("/boot") <= 0) diff --git a/src/shared/efivars.c b/src/shared/efivars.c index e16c61029b..3e59ee5e7d 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -27,11 +27,17 @@ #include "utf8.h" #include "efivars.h" -bool is_efiboot(void) { +bool is_efi_boot(void) { return access("/sys/firmware/efi", F_OK) >= 0; } -int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, void **value, size_t *size) { +int efi_get_variable( + sd_id128_t vendor, + const char *name, + uint32_t *attribute, + void **value, + size_t *size) { + _cleanup_close_ int fd = -1; _cleanup_free_ char *p = NULL; uint32_t a; @@ -61,7 +67,7 @@ int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, v n = read(fd, &a, sizeof(a)); if (n < 0) - return (int) n; + return -errno; if (n != sizeof(a)) return -EIO; @@ -92,15 +98,22 @@ int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, v return 0; } -char *efi_get_variable_string(sd_id128_t vendor, const char *name) { +int efi_get_variable_string(sd_id128_t vendor, const char *name, char **p) { _cleanup_free_ void *s = NULL; size_t ss; - int err; + int r; + char *x; - err = efi_get_variable(vendor, name, NULL, &s, &ss); - if (err < 0) - return NULL; - return utf16_to_utf8(s, ss); + r = efi_get_variable(vendor, name, NULL, &s, &ss); + if (r < 0) + return r; + + x = utf16_to_utf8(s, ss); + if (!x) + return -ENOMEM; + + *p = x; + return 0; } static size_t utf16_size(const uint16_t *s) { @@ -108,6 +121,7 @@ static size_t utf16_size(const uint16_t *s) { while (s[l] > 0) l++; + return (l+1) * sizeof(uint16_t); } @@ -131,7 +145,12 @@ static void efi_guid_to_id128(const void *guid, sd_id128_t *id128) { memcpy(&id128->bytes[8], uuid->u4, sizeof(uuid->u4)); } -int efi_get_boot_option(uint32_t id, uint32_t *attributes, char **title, sd_id128_t *part_uuid, char **path, char **data, size_t *data_size) { +int efi_get_boot_option( + uint16_t id, + char **title, + sd_id128_t *part_uuid, + char **path) { + struct boot_option { uint32_t attr; uint16_t path_len; @@ -157,23 +176,20 @@ int efi_get_boot_option(uint32_t id, uint32_t *attributes, char **title, sd_id12 }; } _packed_; - char boot_id[32]; - _cleanup_free_ char *buf = NULL; + char boot_id[9]; + _cleanup_free_ uint8_t *buf = NULL; size_t l; struct boot_option *header; size_t title_size; char *s = NULL; char *p = NULL; sd_id128_t p_uuid = SD_ID128_NULL; - char *d = NULL; - size_t d_size = 0; int err; snprintf(boot_id, sizeof(boot_id), "Boot%04X", id); err = efi_get_variable(EFI_VENDOR_GLOBAL, boot_id, NULL, (void **)&buf, &l); if (err < 0) return err; - if (l < sizeof(struct boot_option)) return -ENOENT; @@ -189,7 +205,7 @@ int efi_get_boot_option(uint32_t id, uint32_t *attributes, char **title, sd_id12 } if (header->path_len > 0) { - char *dbuf; + uint8_t *dbuf; size_t dnext; dbuf = buf + offsetof(struct boot_option, title) + title_size; @@ -233,45 +249,92 @@ int efi_get_boot_option(uint32_t id, uint32_t *attributes, char **title, sd_id12 } } - *title = s; + if (title) + *title = s; if (part_uuid) *part_uuid = p_uuid; if (path) *path = p; - if (data) - *data = d; - if (data_size) - *data_size = d_size; + return 0; err: free(s); free(p); - free(d); return err; } -int efi_get_boot_order(uint16_t **order, size_t *count) { +int efi_get_boot_order(uint16_t **order) { void *buf; size_t l; - int err; + int r; - err = efi_get_variable(EFI_VENDOR_GLOBAL, "BootOrder", NULL, &buf, &l); - if (err < 0) - return err; + r = efi_get_variable(EFI_VENDOR_GLOBAL, "BootOrder", NULL, &buf, &l); + if (r < 0) + return r; - if (l == 0) { + if (l <= 0) { free(buf); return -ENOENT; } - if ((l % sizeof(uint16_t) > 0)) { + if ((l % sizeof(uint16_t) > 0) || + (l / sizeof(uint16_t) > INT_MAX)) { free(buf); return -EINVAL; } *order = buf; - *count = l / sizeof(uint16_t); - return 0; + return (int) (l / sizeof(uint16_t)); +} + +int efi_get_boot_options(uint16_t **options) { + _cleanup_closedir_ DIR *dir = NULL; + struct dirent *de; + uint16_t *list = NULL; + int count = 0; + + assert(options); + + dir = opendir("/sys/firmware/efi/efivars/"); + if (!dir) + return -errno; + + while ((de = readdir(dir))) { + size_t n; + int a, b, c, d; + uint16_t *t; + + if (strncmp(de->d_name, "Boot", 4) != 0) + continue; + + n = strlen(de->d_name); + if (n != 45) + continue; + + if (strcmp(de->d_name + 8, "-8be4df61-93ca-11d2-aa0d-00e098032b8c") != 0) + continue; + + a = de->d_name[4]; + b = de->d_name[5]; + c = de->d_name[6]; + d = de->d_name[7]; + + if (!isdigit(a) || !isdigit(b) || !isdigit(c) || !isdigit(d)) + continue; + + t = realloc(list, (count + 1) * sizeof(uint16_t)); + if (!t) { + free(list); + return -ENOMEM; + } + + list = t; + list[count ++] = (a - '0') * 1000 + (b - '0') * 100 + (c - '0') * 10 + (d - '0'); + + } + + *options = list; + return count; } static int read_usec(sd_id128_t vendor, const char *name, usec_t *u) { diff --git a/src/shared/efivars.h b/src/shared/efivars.h index d54cc433b2..380e038f69 100644 --- a/src/shared/efivars.h +++ b/src/shared/efivars.h @@ -31,13 +31,14 @@ #define EFI_VENDOR_LOADER SD_ID128_MAKE(4a,67,b0,82,0a,4c,41,cf,b6,c7,44,0b,29,bb,8c,4f) #define EFI_VENDOR_GLOBAL SD_ID128_MAKE(8b,e4,df,61,93,ca,11,d2,aa,0d,00,e0,98,03,2b,8c) -bool is_efiboot(void); +bool is_efi_boot(void); int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, void **value, size_t *size); -char *efi_get_variable_string(sd_id128_t vendor, const char *name); +int efi_get_variable_string(sd_id128_t vendor, const char *name, char **p); -int efi_get_boot_option(uint32_t nr, uint32_t *attributes, char **title, sd_id128_t *partuuid, char **path, char **data, size_t *data_size); -int efi_get_boot_order(uint16_t **order, size_t *count); +int efi_get_boot_option(uint16_t nr, char **title, sd_id128_t *partuuid, char **path); +int efi_get_boot_order(uint16_t **order); +int efi_get_boot_options(uint16_t **options); int efi_get_boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, dual_timestamp *loader); -- cgit v1.2.1 From d01a73b6396f57792113c1b5df6e8492fc703e5e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 00:12:40 +0100 Subject: update TODO --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index 91146ff664..ef6f5ef5d7 100644 --- a/TODO +++ b/TODO @@ -53,6 +53,8 @@ Fedora 19: Features: +* timedate: have global on/off switches for auto-time (NTP), and auto-timezone that connman can subscribe to. + * support --root= in msgcatalog compiler * Honour "-" prefix for InaccessibleDirectories= and ReadOnlyDirectories= to -- cgit v1.2.1 From cd3bccaaf7b3c0e000cfd1bac638a52cb4f510c3 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Tue, 12 Feb 2013 15:14:15 -0800 Subject: systemd-bootchart: relicense to LGPLv2.1+ When we merged systemd-bootchart we omitted relicensing this to LGPL. Now that code is being used for other purposes we need to make sure the code is shareable within systemd without further problems. The original committers and contributors of bootchart before it was merged all have agreed with the relicensing. --- src/bootchart/bootchart.c | 33 ++++++++++++++++++++------------- src/bootchart/bootchart.h | 34 +++++++++++++++++++++------------- src/bootchart/log.c | 34 +++++++++++++++++++++------------- src/bootchart/svg.c | 34 +++++++++++++++++++++------------- 4 files changed, 83 insertions(+), 52 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index f1b0e58c69..6b9252dbb9 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -1,17 +1,24 @@ -/* - * bootchart.c - * - * Copyright (C) 2009-2012 Intel Coproration - * - * Authors: - * Auke Kok - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; version 2 - * of the License. - */ +/*** + bootchart.c - This file is part of systemd-bootchart + Copyright (C) 2009-2013 Intel Coproration + + Authors: + Auke Kok + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . + ***/ #include #include diff --git a/src/bootchart/bootchart.h b/src/bootchart/bootchart.h index 9127f92302..7793cfc63c 100644 --- a/src/bootchart/bootchart.h +++ b/src/bootchart/bootchart.h @@ -1,16 +1,24 @@ -/* - * bootchart.h - * - * Copyright (C) 2009-2012 Intel Coproration - * - * Authors: - * Auke Kok - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; version 2 - * of the License. - */ +/*** + bootchart.h - This file is part of systemd-bootchart + + Copyright (C) 2009-2013 Intel Coproration + + Authors: + Auke Kok + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . + ***/ #include diff --git a/src/bootchart/log.c b/src/bootchart/log.c index 48002fafd0..c7973a5285 100644 --- a/src/bootchart/log.c +++ b/src/bootchart/log.c @@ -1,16 +1,24 @@ -/* - * log.c - * - * Copyright (C) 2009-2012 Intel Coproration - * - * Authors: - * Auke Kok - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; version 2 - * of the License. - */ +/*** + log.c - This file is part of systemd-bootchart + + Copyright (C) 2009-2013 Intel Coproration + + Authors: + Auke Kok + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . + ***/ #define _GNU_SOURCE 1 #include diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index b9636e20a3..8da32efca5 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -1,16 +1,24 @@ -/* - * svg.c - * - * Copyright (C) 2009-2012 Intel Coproration - * - * Authors: - * Auke Kok - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; version 2 - * of the License. - */ +/*** + bootchart.c - This file is part of systemd-bootchart + + Copyright (C) 2009-2013 Intel Coproration + + Authors: + Auke Kok + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . + ***/ #include #include -- cgit v1.2.1 From 4a9fd066f0804a41f3d34676101fb8fdc141ef13 Mon Sep 17 00:00:00 2001 From: Oleksii Shevchuk Date: Tue, 12 Feb 2013 01:14:39 +0200 Subject: manager: pass environment over daemon-reexec Fixes this bug: alxchk > systemctl --user set-environment A=B alxchk > systemctl --user show-environment | grep ^A= A=B alxchk > systemctl --user daemon-reexec alxchk > systemctl --user show-environment | grep ^A= alxchk > --- src/core/manager.c | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/core/manager.c b/src/core/manager.c index 4bebb2996f..bd49892cd4 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -1856,6 +1856,7 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool serialize_jobs) { Iterator i; Unit *u; const char *t; + char **e; int r; assert(m); @@ -1879,6 +1880,14 @@ int manager_serialize(Manager *m, FILE *f, FDSet *fds, bool serialize_jobs) { dual_timestamp_serialize(f, "finish-timestamp", &m->finish_timestamp); } + STRV_FOREACH(e, m->environment) { + _cleanup_free_ char *ce; + + ce = cescape(*e); + if (ce) + fprintf(f, "env=%s\n", *e); + } + fputc('\n', f); HASHMAP_FOREACH_KEY(u, t, m->units, i) { @@ -1979,7 +1988,25 @@ int manager_deserialize(Manager *m, FILE *f, FDSet *fds) { dual_timestamp_deserialize(l+20, &m->userspace_timestamp); else if (startswith(l, "finish-timestamp=")) dual_timestamp_deserialize(l+17, &m->finish_timestamp); - else + else if (startswith(l, "env=")) { + _cleanup_free_ char *uce = NULL; + char **e; + + uce = cunescape(l+4); + if (!uce) { + r = -ENOMEM; + goto finish; + } + + e = strv_env_set(m->environment, uce); + if (!e) { + r = -ENOMEM; + goto finish; + } + + strv_free(m->environment); + m->environment = e; + } else log_debug("Unknown serialization item '%s'", l); } -- cgit v1.2.1 From 726c6b6b3d82b8cdf0087375d4f95e4df4013c62 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 00:18:29 +0100 Subject: efi: add missing #include --- src/shared/efivars.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/shared/efivars.c b/src/shared/efivars.c index 3e59ee5e7d..70b6ce1cc7 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -22,6 +22,7 @@ #include #include #include +#include #include "util.h" #include "utf8.h" -- cgit v1.2.1 From 641906e9366891e0ad3e6e38b7396a427678c4cf Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Tue, 12 Feb 2013 21:47:36 +0100 Subject: use strneq instead of strncmp --- src/core/load-fragment.c | 8 ++++---- src/delta/delta.c | 12 ++++++------ src/libudev/libudev-enumerate.c | 2 +- src/locale/localed.c | 2 +- src/login/logind-inhibit.c | 14 +++++++------- src/login/sd-login.c | 2 +- src/shared/cgroup-util.c | 2 +- src/shared/env-util.c | 10 +++++----- src/shared/socket-util.c | 2 +- src/shared/util.c | 2 +- src/stdio-bridge/stdio-bridge.c | 6 +++--- src/udev/scsi_id/scsi_id.c | 8 ++++---- src/udev/scsi_id/scsi_serial.c | 2 +- src/udev/udev-builtin-net_id.c | 2 +- src/udev/udev-rules.c | 2 +- 15 files changed, 38 insertions(+), 38 deletions(-) diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 44698d46e5..6e333aaf15 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -459,7 +459,7 @@ int config_parse_exec( k = 0; FOREACH_WORD_QUOTED(w, l, rvalue, state) { - if (strncmp(w, ";", MAX(l, 1U)) == 0) + if (strneq(w, ";", MAX(l, 1U))) break; k++; @@ -471,9 +471,9 @@ int config_parse_exec( k = 0; FOREACH_WORD_QUOTED(w, l, rvalue, state) { - if (strncmp(w, ";", MAX(l, 1U)) == 0) + if (strneq(w, ";", MAX(l, 1U))) break; - else if (strncmp(w, "\\;", MAX(l, 1U)) == 0) + else if (strneq(w, "\\;", MAX(l, 1U))) w ++; if (honour_argv0 && w == rvalue) { @@ -2670,7 +2670,7 @@ void unit_dump_config_items(FILE *f) { prefix_len = dot-i; if (dot) - if (!prev || strncmp(prev, i, prefix_len+1) != 0) { + if (!prev || !strneq(prev, i, prefix_len+1)) { if (prev) fputc('\n', f); diff --git a/src/delta/delta.c b/src/delta/delta.c index 9f20938516..16b10021b7 100644 --- a/src/delta/delta.c +++ b/src/delta/delta.c @@ -312,17 +312,17 @@ static int parse_flags(const char *flag_str, int flags) { size_t l; FOREACH_WORD(w, l, flag_str, state) { - if (strncmp("masked", w, l) == 0) + if (strneq("masked", w, l)) flags |= SHOW_MASKED; - else if (strncmp ("equivalent", w, l) == 0) + else if (strneq ("equivalent", w, l)) flags |= SHOW_EQUIVALENT; - else if (strncmp("redirected", w, l) == 0) + else if (strneq("redirected", w, l)) flags |= SHOW_REDIRECTED; - else if (strncmp("overridden", w, l) == 0) + else if (strneq("overridden", w, l)) flags |= SHOW_OVERRIDDEN; - else if (strncmp("unchanged", w, l) == 0) + else if (strneq("unchanged", w, l)) flags |= SHOW_UNCHANGED; - else if (strncmp("default", w, l) == 0) + else if (strneq("default", w, l)) flags |= SHOW_DEFAULTS; else return -EINVAL; diff --git a/src/libudev/libudev-enumerate.c b/src/libudev/libudev-enumerate.c index 2c1f7ab4ac..5ccaabdc6c 100644 --- a/src/libudev/libudev-enumerate.c +++ b/src/libudev/libudev-enumerate.c @@ -309,7 +309,7 @@ _public_ struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enume } if (move_later && - strncmp(entry->syspath, move_later->syspath, move_later_prefix) != 0) { + !strneq(entry->syspath, move_later->syspath, move_later_prefix)) { udev_list_entry_add(&udev_enumerate->devices_list, move_later->syspath, NULL); move_later = NULL; diff --git a/src/locale/localed.c b/src/locale/localed.c index 6b1a793d3b..fedcdfb373 100644 --- a/src/locale/localed.c +++ b/src/locale/localed.c @@ -854,7 +854,7 @@ static int convert_x11_to_vconsole(DBusConnection *connection) { * layout stripped off. */ if (x > 0 && strlen(a[1]) == x && - strncmp(state.x11_layout, a[1], x) == 0) + strneq(state.x11_layout, a[1], x)) matching = 5; else { size_t w; diff --git a/src/login/logind-inhibit.c b/src/login/logind-inhibit.c index f1b9cca834..2c1a412e55 100644 --- a/src/login/logind-inhibit.c +++ b/src/login/logind-inhibit.c @@ -439,19 +439,19 @@ InhibitWhat inhibit_what_from_string(const char *s) { size_t l; FOREACH_WORD_SEPARATOR(w, l, s, ":", state) { - if (l == 8 && strncmp(w, "shutdown", l) == 0) + if (l == 8 && strneq(w, "shutdown", l)) what |= INHIBIT_SHUTDOWN; - else if (l == 5 && strncmp(w, "sleep", l) == 0) + else if (l == 5 && strneq(w, "sleep", l)) what |= INHIBIT_SLEEP; - else if (l == 4 && strncmp(w, "idle", l) == 0) + else if (l == 4 && strneq(w, "idle", l)) what |= INHIBIT_IDLE; - else if (l == 16 && strncmp(w, "handle-power-key", l) == 0) + else if (l == 16 && strneq(w, "handle-power-key", l)) what |= INHIBIT_HANDLE_POWER_KEY; - else if (l == 18 && strncmp(w, "handle-suspend-key", l) == 0) + else if (l == 18 && strneq(w, "handle-suspend-key", l)) what |= INHIBIT_HANDLE_SUSPEND_KEY; - else if (l == 20 && strncmp(w, "handle-hibernate-key", l) == 0) + else if (l == 20 && strneq(w, "handle-hibernate-key", l)) what |= INHIBIT_HANDLE_HIBERNATE_KEY; - else if (l == 17 && strncmp(w, "handle-lid-switch", l) == 0) + else if (l == 17 && strneq(w, "handle-lid-switch", l)) what |= INHIBIT_HANDLE_LID_SWITCH; else return _INHIBIT_WHAT_INVALID; diff --git a/src/login/sd-login.c b/src/login/sd-login.c index 4bc51e71a2..b81dddf86b 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -196,7 +196,7 @@ _public_ int sd_uid_is_on_seat(uid_t uid, int require_active, const char *seat) } FOREACH_WORD(w, l, s, state) { - if (strncmp(t, w, l) == 0) { + if (strneq(t, w, l)) { free(s); free(t); diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index acace52bc8..7efbc2ed39 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -811,7 +811,7 @@ int cg_get_by_pid(const char *controller, pid_t pid, char **path) { continue; l++; - if (strncmp(l, controller, cs) != 0) + if (!strneq(l, controller, cs)) continue; if (l[cs] != ':') diff --git a/src/shared/env-util.c b/src/shared/env-util.c index 9a833d22e4..0f1ac9294b 100644 --- a/src/shared/env-util.c +++ b/src/shared/env-util.c @@ -128,7 +128,7 @@ bool strv_env_is_valid(char **e) { /* Check if there are duplicate assginments */ k = strcspn(*p, "="); STRV_FOREACH(q, p + 1) - if (strncmp(*p, *q, k) == 0 && (*q)[k] == '=') + if (strneq(*p, *q, k) && (*q)[k] == '=') return false; } @@ -171,7 +171,7 @@ static int env_append(char **r, char ***k, char **a) { n++; for (j = r; j < *k; j++) - if (strncmp(*j, *a, n) == 0) + if (strneq(*j, *a, n)) break; if (j >= *k) @@ -247,7 +247,7 @@ static bool env_match(const char *t, const char *pattern) { if (!strchr(pattern, '=')) { size_t l = strlen(pattern); - return strncmp(t, pattern, l) == 0 && t[l] == '='; + return strneq(t, pattern, l) && t[l] == '='; } return false; @@ -363,7 +363,7 @@ char *strv_env_get_n(char **l, const char *name, size_t k) { return NULL; STRV_FOREACH(i, l) - if (strncmp(*i, name, k) == 0 && + if (strneq(*i, name, k) && (*i)[k] == '=') return *i + k + 1; @@ -391,7 +391,7 @@ char **strv_env_clean(char **e) { n = strcspn(*p, "="); STRV_FOREACH(q, p + 1) - if (strncmp(*p, *q, n) == 0 && (*q)[n] == '=') { + if (strneq(*p, *q, n) && (*q)[n] == '=') { duplicate = true; break; } diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c index 56ec99f442..39b6142e88 100644 --- a/src/shared/socket-util.c +++ b/src/shared/socket-util.c @@ -432,7 +432,7 @@ bool socket_address_equal(const SocketAddress *a, const SocketAddress *b) { return false; if (a->sockaddr.un.sun_path[0]) { - if (strncmp(a->sockaddr.un.sun_path, b->sockaddr.un.sun_path, sizeof(a->sockaddr.un.sun_path)) != 0) + if (!strneq(a->sockaddr.un.sun_path, b->sockaddr.un.sun_path, sizeof(a->sockaddr.un.sun_path))) return false; } else { if (memcmp(a->sockaddr.un.sun_path, b->sockaddr.un.sun_path, a->size) != 0) diff --git a/src/shared/util.c b/src/shared/util.c index 24f9e7ee58..8dceb82051 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -720,7 +720,7 @@ int parse_env_file( value = va_arg(ap, char **); n = strlen(key); - if (strncmp(p, key, n) != 0 || + if (!strneq(p, key, n) || p[n] != '=') continue; diff --git a/src/stdio-bridge/stdio-bridge.c b/src/stdio-bridge/stdio-bridge.c index f926fe5538..adc692f1eb 100644 --- a/src/stdio-bridge/stdio-bridge.c +++ b/src/stdio-bridge/stdio-bridge.c @@ -69,16 +69,16 @@ static size_t patch_in_line(char *line, size_t l, size_t left) { } else r = 0; - if (l == 5 && strncmp(line, "BEGIN", 5) == 0) { + if (l == 5 && strneq(line, "BEGIN", 5)) { r += l; auth_over = true; - } else if (l == 17 && strncmp(line, "NEGOTIATE_UNIX_FD", 17) == 0) { + } else if (l == 17 && strneq(line, "NEGOTIATE_UNIX_FD", 17)) { memmove(line + 13, line + 17, left); memcpy(line, "NEGOTIATE_NOP", 13); r += 13; - } else if (l >= 14 && strncmp(line, "AUTH EXTERNAL ", 14) == 0) { + } else if (l >= 14 && strneq(line, "AUTH EXTERNAL ", 14)) { char uid[20*2 + 1]; size_t len; diff --git a/src/udev/scsi_id/scsi_id.c b/src/udev/scsi_id/scsi_id.c index fa0413c462..d664787fd9 100644 --- a/src/udev/scsi_id/scsi_id.c +++ b/src/udev/scsi_id/scsi_id.c @@ -267,10 +267,10 @@ static int get_file_options(struct udev *udev, if (vendor == NULL) { if (vendor_in == NULL) break; - } else if ((vendor_in && strncmp(vendor, vendor_in, - strlen(vendor_in)) == 0) && - (!model_in || (strncmp(model, model_in, - strlen(model_in)) == 0))) { + } else if ((vendor_in && strneq(vendor, vendor_in, + strlen(vendor_in))) && + (!model_in || (strneq(model, model_in, + strlen(model_in))))) { /* * Matched vendor and optionally model. * diff --git a/src/udev/scsi_id/scsi_serial.c b/src/udev/scsi_id/scsi_serial.c index 950b8adc0a..d522a23a08 100644 --- a/src/udev/scsi_id/scsi_serial.c +++ b/src/udev/scsi_id/scsi_serial.c @@ -436,7 +436,7 @@ static int do_scsi_page0_inquiry(struct udev *udev, * If the vendor id appears in the page assume the page is * invalid. */ - if (!strncmp((char *)&buffer[VENDOR_LENGTH], dev_scsi->vendor, VENDOR_LENGTH)) { + if (strneq((char *)&buffer[VENDOR_LENGTH], dev_scsi->vendor, VENDOR_LENGTH)) { log_debug("%s: invalid page0 data\n", dev_scsi->kernel); return 1; } diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index 7ffdaad73f..c55c34d614 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -223,7 +223,7 @@ static int dev_pci_slot(struct udev_device *dev, struct netnames *names) { snprintf(str, sizeof(str), "%s/%s/address", slots, dent->d_name); if (read_one_line_file(str, &address) >= 0) { /* match slot address with device by stripping the function */ - if (strncmp(address, udev_device_get_sysname(names->pcidev), strlen(address)) == 0) + if (strneq(address, udev_device_get_sysname(names->pcidev), strlen(address))) hotplug_slot = i; free(address); } diff --git a/src/udev/udev-rules.c b/src/udev/udev-rules.c index a86f8c365a..d2810a01d8 100644 --- a/src/udev/udev-rules.c +++ b/src/udev/udev-rules.c @@ -1737,7 +1737,7 @@ static int match_key(struct udev_rules *rules, struct token *token, const char * if (next != NULL) { size_t matchlen = (size_t)(next - s); - match = (matchlen == len && strncmp(s, val, matchlen) == 0); + match = (matchlen == len && strneq(s, val, matchlen)); if (match) break; } else { -- cgit v1.2.1 From b43d1d01eabe2cbbf393e8f56b76e182c6069c4c Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Tue, 12 Feb 2013 21:47:37 +0100 Subject: util: introduce strcaseeq/strncaseeq --- src/shared/calendarspec.c | 8 ++++---- src/shared/util.c | 4 ++-- src/shared/util.h | 2 ++ src/udev/scsi_id/scsi_id.c | 6 +++--- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/src/shared/calendarspec.c b/src/shared/calendarspec.c index c2eae3f139..cc680779b5 100644 --- a/src/shared/calendarspec.c +++ b/src/shared/calendarspec.c @@ -653,7 +653,7 @@ int calendar_spec_from_string(const char *p, CalendarSpec **spec) { if (!c) return -ENOMEM; - if (strcasecmp(p, "hourly") == 0) { + if (strcaseeq(p, "hourly")) { r = const_chain(0, &c->minute); if (r < 0) goto fail; @@ -661,7 +661,7 @@ int calendar_spec_from_string(const char *p, CalendarSpec **spec) { if (r < 0) goto fail; - } else if (strcasecmp(p, "daily") == 0) { + } else if (strcaseeq(p, "daily")) { r = const_chain(0, &c->hour); if (r < 0) goto fail; @@ -672,7 +672,7 @@ int calendar_spec_from_string(const char *p, CalendarSpec **spec) { if (r < 0) goto fail; - } else if (strcasecmp(p, "monthly") == 0) { + } else if (strcaseeq(p, "monthly")) { r = const_chain(1, &c->day); if (r < 0) goto fail; @@ -686,7 +686,7 @@ int calendar_spec_from_string(const char *p, CalendarSpec **spec) { if (r < 0) goto fail; - } else if (strcasecmp(p, "weekly") == 0) { + } else if (strcaseeq(p, "weekly")) { c->weekdays_bits = 1; diff --git a/src/shared/util.c b/src/shared/util.c index 8dceb82051..aa0532a2be 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -218,9 +218,9 @@ void close_many(const int fds[], unsigned n_fd) { int parse_boolean(const char *v) { assert(v); - if (streq(v, "1") || v[0] == 'y' || v[0] == 'Y' || v[0] == 't' || v[0] == 'T' || !strcasecmp(v, "on")) + if (streq(v, "1") || v[0] == 'y' || v[0] == 'Y' || v[0] == 't' || v[0] == 'T' || strcaseeq(v, "on")) return 1; - else if (streq(v, "0") || v[0] == 'n' || v[0] == 'N' || v[0] == 'f' || v[0] == 'F' || !strcasecmp(v, "off")) + else if (streq(v, "0") || v[0] == 'n' || v[0] == 'N' || v[0] == 'f' || v[0] == 'F' || strcaseeq(v, "off")) return 0; return -EINVAL; diff --git a/src/shared/util.h b/src/shared/util.h index cd13457528..3ad90ddce4 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -65,6 +65,8 @@ size_t page_size(void); #define streq(a,b) (strcmp((a),(b)) == 0) #define strneq(a, b, n) (strncmp((a), (b), (n)) == 0) +#define strcaseeq(a,b) (strcasecmp((a),(b)) == 0) +#define strncaseeq(a, b, n) (strncasecmp((a), (b), (n)) == 0) bool streq_ptr(const char *a, const char *b); diff --git a/src/udev/scsi_id/scsi_id.c b/src/udev/scsi_id/scsi_id.c index d664787fd9..dcf03eefac 100644 --- a/src/udev/scsi_id/scsi_id.c +++ b/src/udev/scsi_id/scsi_id.c @@ -227,7 +227,7 @@ static int get_file_options(struct udev *udev, continue; str1 = strsep(&buf, "="); - if (str1 && strcasecmp(str1, "VENDOR") == 0) { + if (str1 && strcaseeq(str1, "VENDOR")) { str1 = get_value(&buf); if (!str1) { retval = log_oom(); @@ -236,7 +236,7 @@ static int get_file_options(struct udev *udev, vendor_in = str1; str1 = strsep(&buf, "="); - if (str1 && strcasecmp(str1, "MODEL") == 0) { + if (str1 && strcaseeq(str1, "MODEL")) { str1 = get_value(&buf); if (!str1) { retval = log_oom(); @@ -247,7 +247,7 @@ static int get_file_options(struct udev *udev, } } - if (str1 && strcasecmp(str1, "OPTIONS") == 0) { + if (str1 && strcaseeq(str1, "OPTIONS")) { str1 = get_value(&buf); if (!str1) { retval = log_oom(); -- cgit v1.2.1 From 759c945a43577d56e85a927f15e7d9aaa94a4e4a Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 12 Feb 2013 12:24:30 -0500 Subject: journal: Don't use loginuid if it's not valid Code above this attempted to load loginuid, if this failed for whatever reason, we'd still end up using that value (0) in place of realuid. Fix this by setting a bool when we know the loginuid is valid. This fixes journal messages showing up in per-user journals in gnome-ostree (not configured with loginuid, but I'll shortly fix that). --- src/journal/journald-server.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 12a46e6bd0..1375d7a98e 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -515,6 +515,8 @@ static void dispatch_message_real( int r; char *t; uid_t loginuid = 0, realuid = 0; + uid_t journal_uid; + bool loginuid_valid = false; assert(s); assert(iovec); @@ -571,9 +573,11 @@ static void dispatch_message_real( IOVEC_SET_STRING(iovec[n++], audit_session); r = audit_loginuid_from_pid(ucred->pid, &loginuid); - if (r >= 0) + if (r >= 0) { + loginuid_valid = true; if (asprintf(&audit_loginuid, "_AUDIT_LOGINUID=%lu", (unsigned long) loginuid) >= 0) IOVEC_SET_STRING(iovec[n++], audit_loginuid); + } t = shortened_cgroup_path(ucred->pid); if (t) { @@ -666,10 +670,14 @@ static void dispatch_message_real( assert(n <= m); - write_to_journal(s, - s->split_mode == SPLIT_NONE ? 0 : - (s->split_mode == SPLIT_UID ? realuid : - (realuid == 0 ? 0 : loginuid)), iovec, n); + if (s->split_mode == SPLIT_NONE) + journal_uid = 0; + else if (s->split_mode == SPLIT_UID || realuid == 0 || !loginuid_valid) + journal_uid = realuid; + else + journal_uid = loginuid; + + write_to_journal(s, journal_uid, iovec, n); } void server_driver_message(Server *s, sd_id128_t message_id, const char *format, ...) { -- cgit v1.2.1 From f2f85884caac671da84256acb44148df9a4dca70 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 12 Feb 2013 15:36:29 -0800 Subject: bootchart: make bootchart work from within the initrd With this patch, bootchart can be started from within the initramfs via the kernel command line "rdinit=/usr/lib/systemd/systemd-bootchart" see: http://harald.fedorapeople.org/downloads/bootchart-20130207-1652.svg --- src/bootchart/bootchart.c | 23 ++++++++++++++------ src/bootchart/log.c | 53 ++++++++++++++++++++++++++--------------------- 2 files changed, 46 insertions(+), 30 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 6b9252dbb9..fb95c6b807 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -47,7 +47,7 @@ struct cpu_stat_struct cpustat[MAXCPUS]; int pscount; int cpus; double interval; -FILE *of; +FILE *of = NULL; int overrun = 0; static int exiting = 0; @@ -64,7 +64,7 @@ double scale_x = 100.0; /* 100px = 1sec */ double scale_y = 20.0; /* 16px = 1 process bar */ char init_path[PATH_MAX] = "/sbin/init"; -char output_path[PATH_MAX] = "/var/log"; +char output_path[PATH_MAX] = "/run/log"; static struct rlimit rlim; @@ -235,6 +235,7 @@ int main(int argc, char *argv[]) execl(init_path, init_path, NULL); } } + argv[0][0] = '@'; /* start with empty ps LL */ ps_first = calloc(1, sizeof(struct ps_struct)); @@ -264,6 +265,14 @@ int main(int argc, char *argv[]) sampletime[samples] = gettime_ns(); + if (!of && (access(output_path, R_OK|W_OK|X_OK) == 0)) { + t = time(NULL); + strftime(datestr, sizeof(datestr), "%Y%m%d-%H%M", localtime(&t)); + snprintf(output_file, PATH_MAX, "%s/bootchart-%s.svg", output_path, datestr); + of = fopen(output_file, "w"); + } + + /* wait for /proc to become available, discarding samples */ if (!(graph_start > 0.0)) log_uptime(); @@ -323,11 +332,13 @@ int main(int argc, char *argv[]) } closedir(proc); - t = time(NULL); - strftime(datestr, sizeof(datestr), "%Y%m%d-%H%M", localtime(&t)); - snprintf(output_file, PATH_MAX, "%s/bootchart-%s.svg", output_path, datestr); + if (!of) { + t = time(NULL); + strftime(datestr, sizeof(datestr), "%Y%m%d-%H%M", localtime(&t)); + snprintf(output_file, PATH_MAX, "%s/bootchart-%s.svg", output_path, datestr); + of = fopen(output_file, "w"); + } - of = fopen(output_file, "w"); if (!of) { perror("open output_file"); exit (EXIT_FAILURE); diff --git a/src/bootchart/log.c b/src/bootchart/log.c index c7973a5285..cf6c3a73f6 100644 --- a/src/bootchart/log.c +++ b/src/bootchart/log.c @@ -43,7 +43,7 @@ */ static char smaps_buf[4096]; DIR *proc; - +int procfd=-1; double gettime_ns(void) { @@ -62,6 +62,7 @@ void log_uptime(void) double uptime; f = fopen("/proc/uptime", "r"); + if (!f) return; if (!fscanf(f, "%s %*s", str)) { @@ -113,10 +114,22 @@ void log_sample(int sample) ssize_t s; ssize_t n; struct dirent *ent; + int fd; + + /* all the per-process stuff goes here */ + if (!proc) { + /* find all processes */ + proc = opendir("/proc"); + if (!proc) + return; + procfd = dirfd(proc); + } else { + rewinddir(proc); + } if (!vmstat) { /* block stuff */ - vmstat = open("/proc/vmstat", O_RDONLY); + vmstat = openat(procfd, "vmstat", O_RDONLY); if (vmstat == -1) { perror("open /proc/vmstat"); exit (EXIT_FAILURE); @@ -148,7 +161,7 @@ vmstat_next: if (!schedstat) { /* overall CPU utilization */ - schedstat = open("/proc/schedstat", O_RDONLY); + schedstat = openat(procfd, "schedstat", O_RDONLY); if (schedstat == -1) { perror("open /proc/schedstat"); exit (EXIT_FAILURE); @@ -186,7 +199,7 @@ schedstat_next: if (entropy) { if (!e_fd) { - e_fd = open("/proc/sys/kernel/random/entropy_avail", O_RDONLY); + e_fd = openat(procfd, "sys/kernel/random/entropy_avail", O_RDONLY); } if (e_fd) { @@ -198,16 +211,6 @@ schedstat_next: } } - /* all the per-process stuff goes here */ - if (!proc) { - /* find all processes */ - proc = opendir("/proc"); - if (!proc) - return; - } else { - rewinddir(proc); - } - while ((ent = readdir(proc)) != NULL) { char filename[PATH_MAX]; int pid; @@ -254,8 +257,8 @@ schedstat_next: /* get name, start time */ if (!ps->sched) { - sprintf(filename, "/proc/%d/sched", pid); - ps->sched = open(filename, O_RDONLY); + sprintf(filename, "%d/sched", pid); + ps->sched = openat(procfd, filename, O_RDONLY); if (ps->sched == -1) continue; } @@ -286,8 +289,9 @@ schedstat_next: ps->starttime = strtod(t, NULL) / 1000.0; /* ppid */ - sprintf(filename, "/proc/%d/stat", pid); - st = fopen(filename, "r"); + sprintf(filename, "%d/stat", pid); + fd = openat(procfd, filename, O_RDONLY); + st = fdopen(fd, "r"); if (!st) continue; if (!fscanf(st, "%*s %*s %*s %i", &p)) { @@ -342,8 +346,8 @@ schedstat_next: /* rt, wt */ if (!ps->schedstat) { - sprintf(filename, "/proc/%d/schedstat", pid); - ps->schedstat = open(filename, O_RDONLY); + sprintf(filename, "%d/schedstat", pid); + ps->schedstat = openat(procfd, filename, O_RDONLY); if (ps->schedstat == -1) continue; } @@ -374,8 +378,9 @@ schedstat_next: goto catch_rename; /* Pss */ if (!ps->smaps) { - sprintf(filename, "/proc/%d/smaps", pid); - ps->smaps = fopen(filename, "r"); + sprintf(filename, "%d/smaps", pid); + fd = openat(procfd, filename, O_RDONLY); + ps->smaps = fdopen(fd, "r"); if (!ps->smaps) continue; setvbuf(ps->smaps, smaps_buf, _IOFBF, sizeof(smaps_buf)); @@ -408,8 +413,8 @@ catch_rename: /* re-fetch name */ /* get name, start time */ if (!ps->sched) { - sprintf(filename, "/proc/%d/sched", pid); - ps->sched = open(filename, O_RDONLY); + sprintf(filename, "%d/sched", pid); + ps->sched = openat(procfd, filename, O_RDONLY); if (ps->sched == -1) continue; } -- cgit v1.2.1 From b1ce67bf33b01cc2aa4c668a360ce9acf6e02f06 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Tue, 12 Feb 2013 16:58:00 -0800 Subject: TODO: bootchart items --- TODO | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TODO b/TODO index ef6f5ef5d7..f97663fe2b 100644 --- a/TODO +++ b/TODO @@ -535,6 +535,10 @@ External: * kernel: add device_type = "fb", "fbcon" to class "graphics" +* bootchart: + - use conf_parser for bootchart.conf + - change config options to CamelCase + Regularly: * look for close() vs. close_nointr() vs. close_nointr_nofail() -- cgit v1.2.1 From 2a2473d89e02ccd923abc6e74cddd07798679a15 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 01:03:26 +0100 Subject: boot: add stub Makefile symlink --- src/boot/Makefile | 1 + 1 file changed, 1 insertion(+) create mode 120000 src/boot/Makefile diff --git a/src/boot/Makefile b/src/boot/Makefile new file mode 120000 index 0000000000..d0b0e8e008 --- /dev/null +++ b/src/boot/Makefile @@ -0,0 +1 @@ +../Makefile \ No newline at end of file -- cgit v1.2.1 From b0ee8068da5bc9ed949656700274bb6ff60d2073 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Fri, 25 Jan 2013 11:21:20 -0500 Subject: util: *DO NOT* loop for EINTR handling with close_nointr() See the linked references for why we should not do this. --- src/shared/util.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/shared/util.c b/src/shared/util.c index aa0532a2be..d754c836f2 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -183,18 +183,25 @@ bool first_word(const char *s, const char *word) { } int close_nointr(int fd) { - assert(fd >= 0); - - for (;;) { - int r; + int r; - r = close(fd); - if (r >= 0) - return r; + assert(fd >= 0); + r = close(fd); - if (errno != EINTR) - return -errno; - } + /* Just ignore EINTR; a retry loop is the wrong + * thing to do on Linux. + * + * http://lkml.indiana.edu/hypermail/linux/kernel/0509.1/0877.html + * https://bugzilla.gnome.org/show_bug.cgi?id=682819 + * http://utcc.utoronto.ca/~cks/space/blog/unix/CloseEINTR + * https://sites.google.com/site/michaelsafyan/software-engineering/checkforeintrwheninvokingclosethinkagain + */ + if (_unlikely_(r < 0 && errno == EINTR)) + return 0; + else if (r >= 0) + return r; + else + return -errno; } void close_nointr_nofail(int fd) { -- cgit v1.2.1 From dd359de89b1fbabf6f4eb5003d2b5a806b6185c1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 04:57:30 +0100 Subject: update TODO --- TODO | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/TODO b/TODO index f97663fe2b..7f77605479 100644 --- a/TODO +++ b/TODO @@ -51,8 +51,13 @@ Fedora 19: * logind: Class property should probably know "background" or so as value for cron jobs, and the inhibition checks should filter those out too. +* timer logic is confused by units which are skipped due to failing condition + http://lists.freedesktop.org/archives/systemd-devel/2013-February/008816.html + Features: +* ensure sd_journal_seek_monotonic actually works properly. + * timedate: have global on/off switches for auto-time (NTP), and auto-timezone that connman can subscribe to. * support --root= in msgcatalog compiler -- cgit v1.2.1 From 3ef51b2ce8e9ba09d1872544d11a6b7861cc2fb7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 04:57:36 +0100 Subject: man: typo fix --- man/sd_journal_seek_head.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/sd_journal_seek_head.xml b/man/sd_journal_seek_head.xml index 3716c5d367..d24b2f30ee 100644 --- a/man/sd_journal_seek_head.xml +++ b/man/sd_journal_seek_head.xml @@ -101,7 +101,7 @@ sd_journal_seek_monotonic_usec() seeks to the entry with the specified monotonic - timestamp, i.e. CLOCK_MONOOTONIC. Since monotonic time + timestamp, i.e. CLOCK_MONOTONIC. Since monotonic time restarts on every reboot a boot ID needs to be specified as well. -- cgit v1.2.1 From 6bb25a058227d89fbbeba6c12873e6f83da5cf94 Mon Sep 17 00:00:00 2001 From: William Giokas <1007380@gmail.com> Date: Tue, 12 Feb 2013 19:08:26 -0600 Subject: bootchart: Fix typos and some English bootchart.conf: direct users to `bootchart.conf(5)`, not a nonexistent man page. svg.c: Fix some English in the svg comment header. * Chrome/Chromium => Chrome, Chromium * firefox => Firefox * much more slow => more slowly --- src/bootchart/bootchart.conf | 2 +- src/bootchart/svg.c | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/bootchart/bootchart.conf b/src/bootchart/bootchart.conf index 06c1b47510..fa1a09bd0a 100644 --- a/src/bootchart/bootchart.conf +++ b/src/bootchart/bootchart.conf @@ -6,7 +6,7 @@ # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # -# See systemd-bootchart.conf(5) for details +# See bootchart.conf(5) for details #samples=500 #freq=25 diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index 8da32efca5..d7c4168d57 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -95,9 +95,9 @@ static void svg_header(void) /* write some basic info as a comment, including some help */ svg("\n"); - svg("\n"); - svg("\n"); - svg("\n"); + svg("\n"); + svg("\n"); + svg("\n"); svg("\n\n"); svg("\n", VERSION); -- cgit v1.2.1 From 6fc00209d5906bd14d54af4a6ac2961dd9731f72 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 6 Feb 2013 21:11:27 -0500 Subject: build-sys: disable tests in po/, docs/ with separate build dir Both gtk-doc and intltoolize have problems with VPATH builds. "Creatively" disable tests when configuring from outside the source directory. This more-or-less reverts 9795da43c. --- configure.ac | 7 +++++++ docs/gudev/Makefile.am | 6 ++++-- docs/libudev/Makefile.am | 6 ++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index 56694ff22a..4e36dc3dca 100644 --- a/configure.ac +++ b/configure.ac @@ -821,6 +821,13 @@ AS_IF([test "x${enable_split_usr}" = "xyes"], [ AC_DEFINE(HAVE_SPLIT_USR, 1, [Define if /bin, /sbin aren't symlinks into /usr]) ]) +# Work around intltoolize and gtk-doc problems in VPATH builds +AM_CONDITIONAL([ENABLE_GTK_DOC_TESTS], [test "x$0" = "x./configure"], + [Define to do gtk-doc tests]) +AS_IF([test "x$0" != "x./configure"], [ + AC_SUBST([INTLTOOL_UPDATE], [/bin/true]) +]) + AC_SUBST([dbuspolicydir], [$with_dbuspolicydir]) AC_SUBST([dbussessionservicedir], [$with_dbussessionservicedir]) AC_SUBST([dbussystemservicedir], [$with_dbussystemservicedir]) diff --git a/docs/gudev/Makefile.am b/docs/gudev/Makefile.am index 3a3a3e5d72..64e4361021 100644 --- a/docs/gudev/Makefile.am +++ b/docs/gudev/Makefile.am @@ -108,6 +108,8 @@ EXTRA_DIST += version.xml.in # Comment this out if you want your docs-status tested during 'make check' if ENABLE_GTK_DOC -#TESTS_ENVIRONMENT = cd $(top_srcdir) -#TESTS = $(GTKDOC_CHECK) +if ENABLE_GTK_DOC_TESTS +TESTS_ENVIRONMENT = cd $(top_srcdir) +TESTS = $(GTKDOC_CHECK) +endif endif diff --git a/docs/libudev/Makefile.am b/docs/libudev/Makefile.am index d96bac6b30..cc236ad50a 100644 --- a/docs/libudev/Makefile.am +++ b/docs/libudev/Makefile.am @@ -102,6 +102,8 @@ EXTRA_DIST += version.xml.in # Comment this out if you want your docs-status tested during 'make check' if ENABLE_GTK_DOC -#TESTS_ENVIRONMENT = cd $(top_srcdir) -#TESTS = $(GTKDOC_CHECK) +if ENABLE_GTK_DOC_TESTS +TESTS_ENVIRONMENT = cd $(top_srcdir) +TESTS = $(GTKDOC_CHECK) +endif endif -- cgit v1.2.1 From a3aa7ee6ff7b3cc6e473367efd5fecf0f48f9635 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 12 Feb 2013 23:28:48 -0500 Subject: tests: add test for continuation lines with comments --- src/test/test-unit-file.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c index 85191310d4..041daaba68 100644 --- a/src/test/test-unit-file.c +++ b/src/test/test-unit-file.c @@ -193,6 +193,11 @@ static void test_config_parse_exec(void) { #define env_file_2 \ "a\\\n" +#define env_file_3 \ + "#SPAMD_ARGS=\"-d --socketpath=/var/lib/bulwark/spamd \\\n" \ + "#--nouser-config \\\n" \ + "normal=line" + static void test_load_env_file_1(void) { char _cleanup_strv_free_ **data = NULL; int r; @@ -230,6 +235,21 @@ static void test_load_env_file_2(void) { unlink(name); } +static void test_load_env_file_3(void) { + char _cleanup_strv_free_ **data = NULL; + int r; + + char name[] = "/tmp/test-load-env-file.XXXXXX"; + int _cleanup_close_ fd = mkstemp(name); + assert(fd >= 0); + assert_se(write(fd, env_file_3, sizeof(env_file_3)) == sizeof(env_file_3)); + + r = load_env_file(name, &data); + assert(r == 0); + assert(data == NULL); + unlink(name); +} + #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wnonnull" @@ -305,6 +325,7 @@ int main(int argc, char *argv[]) { test_config_parse_exec(); test_load_env_file_1(); test_load_env_file_2(); + test_load_env_file_3(); test_install_printf(); return 0; -- cgit v1.2.1 From 1c00832624a146745c31ce5367330b1d2ca04088 Mon Sep 17 00:00:00 2001 From: Michael Olbrich Date: Wed, 13 Feb 2013 08:00:46 +0100 Subject: ratelimit: fix off-by-one The current code might make sense during startup for service restart limiting: With burst=1 after starting num is 1, so the next ('first') restart is still accepted ( 1 <= 1). However, once interval has expired, num is 1 after the first restart, so the second restart is also accepted. This change is also useful in combination with watchdogs: With burst=1 and a very large interval the system can be restarted on the first failure. --- src/shared/ratelimit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/ratelimit.c b/src/shared/ratelimit.c index 1054d52f97..01b62b7b38 100644 --- a/src/shared/ratelimit.c +++ b/src/shared/ratelimit.c @@ -46,7 +46,7 @@ bool ratelimit_test(RateLimit *r) { goto good; } - if (r->num <= r->burst) + if (r->num < r->burst) goto good; return false; -- cgit v1.2.1 From 10efe2cdbe0a5815431217e4b3fd05e5bc65a782 Mon Sep 17 00:00:00 2001 From: Aleksander Morgado Date: Wed, 13 Feb 2013 08:50:15 +0100 Subject: test-udev: include missing.h We need MS_REC and MS_SHARED defined for a proper compilation, so get them from 'missing.h' if not defined already. --- src/test/test-udev.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/test/test-udev.c b/src/test/test-udev.c index 7cb93edc1d..aee87f753d 100644 --- a/src/test/test-udev.c +++ b/src/test/test-udev.c @@ -32,6 +32,7 @@ #include #include +#include "missing.h" #include "udev.h" void udev_main_log(struct udev *udev, int priority, -- cgit v1.2.1 From 5797606612b5b37dbba5d90b39665cdf7f7a1b11 Mon Sep 17 00:00:00 2001 From: William Giokas <1007380@gmail.com> Date: Wed, 13 Feb 2013 03:38:49 -0600 Subject: man: Write man page for systemd-bootchart(1) Mostly coppied from bootchart.conf(5) --- man/systemd-bootchart.xml | 92 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 89 insertions(+), 3 deletions(-) diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml index f31d4a0a6c..75341100f9 100644 --- a/man/systemd-bootchart.xml +++ b/man/systemd-bootchart.xml @@ -10,6 +10,7 @@ Authors: Auke Kok + William Giokas <1007380@gmail.com> systemd is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -91,9 +92,94 @@ Options - Please read systemd-bootchart --help or the bootchart.conf manual - page for information about the various options that influence how - systemd-bootchart operates. + + + + + + Specify the amount of samples to + record total before bootchart exits. Each sample will + record at intervals defined by --freq. + + + + + + Specify the sample log frequency. + This can be a fractional number, but must be larger than + 0.0. Most systems can cope with values under 25-50 without + impacting boot time severely. + + + + + + Use relative times instead of absolute + times. This is useful for using bootchart at post-boot + time to profile an already booted system, otherwise the + graph would become extremely large. If set, the + horizontal axis starts at the first recorded sample + instead of time=0.0. + + + + + + Disable filtering of tasks tasks that + did not contribute significantly to the boot. Processes + that are too short-lived (only seen in one sample) or + that do not consume any significant CPU time (less than + 0.001sec) will not be displayed in the output graph. + + + + + + + Configures the output folder for writing + the graphs. By default, bootchart writes the graphs to + /var/log. + + + + + + Set init binary to run. Defaults to + /sbin/init. + + + + + + + Enable logging and graphing + of processes PSS memory consumption. + + + + + + Enable logging and graphing + of the kernel random entropy pool size. + + + + + + Horizontal scaling factor for all variable + graph components. + + + + + + Vertical scaling factor for all variable + graph components. + + + + + -- cgit v1.2.1 From a7f5bb1eafadbb08c8528baae588bbe773a37e79 Mon Sep 17 00:00:00 2001 From: William Giokas <1007380@gmail.com> Date: Wed, 13 Feb 2013 03:39:22 -0600 Subject: man: Make options consistent Option listings seemed to be pretty much random, some were short opt, long opt, others were long opt, short opt. This just makes every option with a short and long opt that I could find in the order short opt, long opt, for formatting's sake. --- man/hostnamectl.xml | 2 +- man/journalctl.xml | 26 +++++++++++++------------- man/localectl.xml | 2 +- man/loginctl.xml | 8 ++++---- man/systemctl.xml | 18 +++++++++--------- man/systemd-coredumpctl.xml | 6 +++--- man/systemd-delta.xml | 2 +- man/systemd-nspawn.xml | 10 +++++----- man/timedatectl.xml | 2 +- 9 files changed, 38 insertions(+), 38 deletions(-) diff --git a/man/hostnamectl.xml b/man/hostnamectl.xml index 07d363420c..9efe220119 100644 --- a/man/hostnamectl.xml +++ b/man/hostnamectl.xml @@ -93,8 +93,8 @@ - + Prints a short help text and exits. diff --git a/man/journalctl.xml b/man/journalctl.xml index d8f8f68929..5ed0e1fe3f 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -114,8 +114,8 @@ - + Prints a short help text and exits. @@ -143,8 +143,8 @@ - + Show all fields in full, even if they include unprintable @@ -153,8 +153,8 @@ - + Show only the most recent journal entries, and continuously print @@ -163,8 +163,8 @@ - + Show the most recent journal events and limit the number of @@ -185,8 +185,8 @@ - + Controls the formatting of the journal entries that @@ -240,8 +240,8 @@ - + Augment log lines with explanation texts from the message @@ -264,8 +264,8 @@ - + Suppresses any warning message regarding inaccessible system @@ -274,8 +274,8 @@ - + Show entries interleaved from all available @@ -284,8 +284,8 @@ - + Show data only from current boot. This will add a match @@ -295,8 +295,8 @@ - + Show data only of the specified unit. This will add a match @@ -341,8 +341,8 @@ - + Start showing entries from the location in the journal @@ -381,8 +381,8 @@ - + Print all possible data values the specified field can @@ -391,8 +391,8 @@ - + Takes an absolute directory path as argument. If diff --git a/man/localectl.xml b/man/localectl.xml index 3e5b812dac..5e7886c108 100644 --- a/man/localectl.xml +++ b/man/localectl.xml @@ -79,8 +79,8 @@ - + Prints a short help text and exits. diff --git a/man/loginctl.xml b/man/loginctl.xml index ba0352cf61..2c8d982eda 100644 --- a/man/loginctl.xml +++ b/man/loginctl.xml @@ -69,8 +69,8 @@ - + Prints a short help text and exits. @@ -84,8 +84,8 @@ - + When showing session/user properties, limit @@ -101,8 +101,8 @@ - + When showing unit/job/manager properties, show all @@ -148,8 +148,8 @@ - + When used with kill-session or diff --git a/man/systemctl.xml b/man/systemctl.xml index 38426454d4..bf11cc3c71 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -69,8 +69,8 @@ - + Prints a short help text and exits. @@ -84,8 +84,8 @@ - + The argument should be a unit type name such as @@ -115,8 +115,8 @@ - + When showing unit/job/manager properties, limit @@ -132,8 +132,8 @@ - + When listing units, show all units, regardless of their @@ -218,8 +218,8 @@ - + Suppress output to STDOUT in @@ -370,8 +370,8 @@ - + When used with kill, choose which @@ -384,8 +384,8 @@ - + When used with enable, overwrite any @@ -463,8 +463,8 @@ - + When used with status controls the @@ -476,8 +476,8 @@ - + When used with status controls the diff --git a/man/systemd-coredumpctl.xml b/man/systemd-coredumpctl.xml index 87ed6fa735..ce40404da7 100644 --- a/man/systemd-coredumpctl.xml +++ b/man/systemd-coredumpctl.xml @@ -71,8 +71,8 @@ - + Print a short help text and exit. @@ -86,8 +86,8 @@ - + Print all possible data values the specified field @@ -96,8 +96,8 @@ + - Write the core to . diff --git a/man/systemd-delta.xml b/man/systemd-delta.xml index 072f55f1a1..9293c9b462 100644 --- a/man/systemd-delta.xml +++ b/man/systemd-delta.xml @@ -100,8 +100,8 @@ - + When listing the differences, only list those that are diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index 554637d5f1..2fa00e80c0 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -132,8 +132,8 @@ - + Prints a short help text and exits. @@ -147,8 +147,8 @@ - + Directory to use as file system root for the namespace @@ -158,8 +158,8 @@ - + Automatically search for an init binary and invoke it @@ -168,8 +168,8 @@ - + Run the command under specified user, create home @@ -192,8 +192,8 @@ - + Makes the container appear in other hierarchies than the name=systemd:/ one. diff --git a/man/timedatectl.xml b/man/timedatectl.xml index a8e78ae8d3..faccc5086d 100644 --- a/man/timedatectl.xml +++ b/man/timedatectl.xml @@ -68,8 +68,8 @@ - + Prints a short help text and exits. -- cgit v1.2.1 From 5f9cfd4c3877fdc68618faf9ae5efb5948e002b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 11 Feb 2013 14:42:24 -0500 Subject: man: rename systemd.conf to systemd-system.conf Alias as systemd-user.conf is also provided. This should help users running systemd in session mode. https://bugzilla.redhat.com/show_bug.cgi?id=690868 --- Makefile-man.am | 8 +- man/journald.conf.xml | 2 +- man/logind.conf.xml | 2 +- man/systemd-cgtop.xml | 2 +- man/systemd-system.conf.xml | 308 ++++++++++++++++++++++++++++++++++++++++++++ man/systemd.conf.xml | 307 ------------------------------------------- man/systemd.exec.xml | 6 +- man/systemd.xml | 4 +- src/core/system.conf | 2 +- src/core/user.conf | 2 +- src/shared/env-util.c | 2 +- 11 files changed, 324 insertions(+), 321 deletions(-) create mode 100644 man/systemd-system.conf.xml delete mode 100644 man/systemd.conf.xml diff --git a/Makefile-man.am b/Makefile-man.am index ee9a952765..e4eb26ce6e 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -1,5 +1,5 @@ # Do not edit. Generated by make-man-rules.py. -# Regenerate with 'make man-list-update'. +# Regenerate with 'make update-man-list'. MANPAGES += \ man/bootup.7 \ @@ -67,13 +67,13 @@ MANPAGES += \ man/systemd-suspend.service.8 \ man/systemd-sysctl.service.8 \ man/systemd-system-update-generator.8 \ + man/systemd-system.conf.5 \ man/systemd-tmpfiles.8 \ man/systemd-tty-ask-password-agent.1 \ man/systemd-udevd.service.8 \ man/systemd-update-utmp-runlevel.service.8 \ man/systemd.1 \ man/systemd.automount.5 \ - man/systemd.conf.5 \ man/systemd.device.5 \ man/systemd.exec.5 \ man/systemd.journal-fields.7 \ @@ -187,7 +187,8 @@ MANPAGES_ALIAS += \ man/systemd-udevd-kernel.socket.8 \ man/systemd-udevd.8 \ man/systemd-update-utmp-shutdown.service.8 \ - man/systemd-update-utmp.8 + man/systemd-update-utmp.8 \ + man/systemd-user.conf.5 man/SD_ALERT.3: man/sd-daemon.3 man/SD_CRIT.3: man/sd-daemon.3 man/SD_DEBUG.3: man/sd-daemon.3 @@ -281,6 +282,7 @@ man/systemd-udevd-kernel.socket.8: man/systemd-udevd.service.8 man/systemd-udevd.8: man/systemd-udevd.service.8 man/systemd-update-utmp-shutdown.service.8: man/systemd-update-utmp-runlevel.service.8 man/systemd-update-utmp.8: man/systemd-update-utmp-runlevel.service.8 +man/systemd-user.conf.5: man/systemd-system.conf.5 if ENABLE_BINFMT MANPAGES += \ diff --git a/man/journald.conf.xml b/man/journald.conf.xml index 30523c5370..6ba583b31d 100644 --- a/man/journald.conf.xml +++ b/man/journald.conf.xml @@ -404,7 +404,7 @@ systemd-journald.service8, journalctl1, systemd.journal-fields7, - systemd.conf5 + systemd-system.conf5 diff --git a/man/logind.conf.xml b/man/logind.conf.xml index d223514e0e..96e5936e5e 100644 --- a/man/logind.conf.xml +++ b/man/logind.conf.xml @@ -329,7 +329,7 @@ systemd1, systemd-logind.service8, loginctl1, - systemd.conf5 + systemd-system.conf5 diff --git a/man/systemd-cgtop.xml b/man/systemd-cgtop.xml index 7a34512b21..ad1f0f8c4d 100644 --- a/man/systemd-cgtop.xml +++ b/man/systemd-cgtop.xml @@ -78,7 +78,7 @@ blkio and memory to the DefaultControllers= setting in /etc/systemd/system.conf (see - systemd.conf5 + systemd-system.conf5 for details). Alternatively, it is possible to enable resource accounting individually for services, by making use of the ControlGroup= diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml new file mode 100644 index 0000000000..12979d81b6 --- /dev/null +++ b/man/systemd-system.conf.xml @@ -0,0 +1,308 @@ + + + + + + + + + systemd-system.conf + systemd + + + + Developer + Lennart + Poettering + lennart@poettering.net + + + + + + systemd-system.conf + 5 + + + + systemd-system.conf + systemd-user.conf + System and session service manager configuration file + + + + /etc/systemd/system.conf + /etc/systemd/user.conf + + + + Description + + When run as system instance systemd reads the + configuration file system.conf, + otherwise user.conf. These + configuration files contain a few settings controlling + basic manager operations. + + + + + Options + + All options are configured in the + [Manager] section: + + + + + LogLevel= + LogTarget= + LogColor= + LogLocation= + DumpCore=yes + CrashShell=no + ShowStatus=yes + CrashChVT=1 + DefaultStandardOutput=journal + DefaultStandardError=inherit + + Configures various + parameters of basic manager + operation. These options may be + overridden by the respective command + line arguments. See + systemd1 + for details about these command line + arguments. + + + + CPUAffinity= + + Configures the initial + CPU affinity for the init + process. Takes a space-separated list + of CPU indexes. + + + + DefaultControllers=cpu + + Configures in which + cgroup controller hierarchies to + create per-service cgroups + automatically, in addition to the + name=systemd named hierarchy. Defaults + to 'cpu'. Takes a space separated list + of controller names. Pass an empty + string to ensure that systemd does not + touch any hierarchies but its + own. + + Note that the default value of + 'cpu' will make realtime scheduling + unavailable to system services. See + My + Service Can't Get Realtime! + for more + information. + + + + JoinControllers=cpu,cpuacct,cpuset net_cls,netprio + + Configures controllers + that shall be mounted in a single + hierarchy. By default systemd will + mount all controllers which are + enabled in the kernel in individual + hierarchies, with the exception of + those listed in this setting. Takes a + space separated list of comma + separated controller names, in order + to allow multiple joined + hierarchies. Defaults to + 'cpu,cpuacct'. Pass an empty string to + ensure that systemd mounts all + controllers in separate + hierarchies. + + Note that this option is only + applied once, at very early boot. If + you use an initial RAM disk (initrd) + that uses systemd it might hence be + necessary to rebuild the initrd if + this option is changed, and make sure + the new configuration file is included + in it. Otherwise the initrd might + mount the controller hierachies in a + different configuration than intended, + and the main system cannot remount + them anymore. + + + + RuntimeWatchdogSec= + ShutdownWatchdogSec= + + Configure the hardware + watchdog at runtime and at + reboot. Takes a timeout value in + seconds (or in other time units if + suffixed with ms, + min, + h, + d, + w). If + RuntimeWatchdogSec= + is set to a non-zero value the + watchdog hardware + (/dev/watchdog) + will be programmed to automatically + reboot the system if it is not + contacted within the specified timeout + interval. The system manager will + ensure to contact it at least once in + half the specified timeout + interval. This feature requires a + hardware watchdog device to be + present, as it is commonly the case in + embedded and server systems. Not all + hardware watchdogs allow configuration + of the reboot timeout, in which case + the closest available timeout is + picked. ShutdownWatchdogSec= + may be used to configure the hardware + watchdog when the system is asked to + reboot. It works as a safety net to + ensure that the reboot takes place + even if a clean reboot attempt times + out. By default + RuntimeWatchdogSec= + defaults to 0 (off), and + ShutdownWatchdogSec= + to 10min. These settings have no + effect if a hardware watchdog is not + available. + + + + CapabilityBoundingSet= + + Controls which + capabilities to include in the + capability bounding set for PID 1 and + its children. See + capabilities7 + for details. Takes a whitespace + separated list of capability names as + read by + cap_from_name3. + Capabilities listed will be included + in the bounding set, all others are + removed. If the list of capabilities + is prefixed with ~ all but the listed + capabilities will be included, the + effect of the assignment + inverted. Note that this option also + affects the respective capabilities in + the effective, permitted and + inheritable capability sets. The + capability bounding set may also be + individually configured for units + using the + CapabilityBoundingSet= + directive for units, but note that + capabilities dropped for PID 1 cannot + be regained in individual units, they + are lost for good. + + + + TimerSlackNSec= + + Sets the timer slack + in nanoseconds for PID 1 which is then + inherited to all executed processes, + unless overridden individually, for + example with the + TimerSlackNSec= + setting in service units (for details + see + systemd.exec5). The + timer slack controls the accuracy of + wake-ups triggered by timers. See + prctl2 + for more information. Note that in + contrast to most other time span + definitions this parameter takes an + integer value in nano-seconds if no + unit is specified. The usual time + units are understood + too. + + + + DefaultLimitCPU= + DefaultLimitFSIZE= + DefaultLimitDATA= + DefaultLimitSTACK= + DefaultLimitCORE= + DefaultLimitRSS= + DefaultLimitNOFILE= + DefaultLimitAS= + DefaultLimitNPROC= + DefaultLimitMEMLOCK= + DefaultLimitLOCKS= + DefaultLimitSIGPENDING= + DefaultLimitMSGQUEUE= + DefaultLimitNICE= + DefaultLimitRTPRIO= + DefaultLimitRTTIME= + + These settings control + various default resource limits for + units. See + setrlimit2 + for details. Use the string + infinity to + configure no limit on a specific + resource. These settings may be + overridden in individual units + using the corresponding LimitXXX= + directives. Note that these resource + limits are only defaults for units, + they are not applied to PID 1 + itself. + + + + + + See Also + + systemd1, + systemd.directives7 + + + + diff --git a/man/systemd.conf.xml b/man/systemd.conf.xml deleted file mode 100644 index 8c8fb7d7c0..0000000000 --- a/man/systemd.conf.xml +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - - systemd.conf - systemd - - - - Developer - Lennart - Poettering - lennart@poettering.net - - - - - - systemd.conf - 5 - - - - systemd.conf - System and service manager configuration file - - - - /etc/systemd/system.conf - /etc/systemd/user.conf - - - - Description - - When run as system instance systemd reads the - configuration file system.conf, - otherwise user.conf. These - configuration files contain a few settings controlling - basic manager operations. - - - - - Options - - All options are configured in the - [Manager] section: - - - - - LogLevel= - LogTarget= - LogColor= - LogLocation= - DumpCore=yes - CrashShell=no - ShowStatus=yes - CrashChVT=1 - DefaultStandardOutput=journal - DefaultStandardError=inherit - - Configures various - parameters of basic manager - operation. These options may be - overridden by the respective command - line arguments. See - systemd1 - for details about these command line - arguments. - - - - CPUAffinity= - - Configures the initial - CPU affinity for the init - process. Takes a space-separated list - of CPU indexes. - - - - DefaultControllers=cpu - - Configures in which - cgroup controller hierarchies to - create per-service cgroups - automatically, in addition to the - name=systemd named hierarchy. Defaults - to 'cpu'. Takes a space separated list - of controller names. Pass an empty - string to ensure that systemd does not - touch any hierarchies but its - own. - - Note that the default value of - 'cpu' will make realtime scheduling - unavailable to system services. See - My - Service Can't Get Realtime! - for more - information. - - - - JoinControllers=cpu,cpuacct,cpuset net_cls,netprio - - Configures controllers - that shall be mounted in a single - hierarchy. By default systemd will - mount all controllers which are - enabled in the kernel in individual - hierarchies, with the exception of - those listed in this setting. Takes a - space separated list of comma - separated controller names, in order - to allow multiple joined - hierarchies. Defaults to - 'cpu,cpuacct'. Pass an empty string to - ensure that systemd mounts all - controllers in separate - hierarchies. - - Note that this option is only - applied once, at very early boot. If - you use an initial RAM disk (initrd) - that uses systemd it might hence be - necessary to rebuild the initrd if - this option is changed, and make sure - the new configuration file is included - in it. Otherwise the initrd might - mount the controller hierachies in a - different configuration than intended, - and the main system cannot remount - them anymore. - - - - RuntimeWatchdogSec= - ShutdownWatchdogSec= - - Configure the hardware - watchdog at runtime and at - reboot. Takes a timeout value in - seconds (or in other time units if - suffixed with ms, - min, - h, - d, - w). If - RuntimeWatchdogSec= - is set to a non-zero value the - watchdog hardware - (/dev/watchdog) - will be programmed to automatically - reboot the system if it is not - contacted within the specified timeout - interval. The system manager will - ensure to contact it at least once in - half the specified timeout - interval. This feature requires a - hardware watchdog device to be - present, as it is commonly the case in - embedded and server systems. Not all - hardware watchdogs allow configuration - of the reboot timeout, in which case - the closest available timeout is - picked. ShutdownWatchdogSec= - may be used to configure the hardware - watchdog when the system is asked to - reboot. It works as a safety net to - ensure that the reboot takes place - even if a clean reboot attempt times - out. By default - RuntimeWatchdogSec= - defaults to 0 (off), and - ShutdownWatchdogSec= - to 10min. These settings have no - effect if a hardware watchdog is not - available. - - - - CapabilityBoundingSet= - - Controls which - capabilities to include in the - capability bounding set for PID 1 and - its children. See - capabilities7 - for details. Takes a whitespace - separated list of capability names as - read by - cap_from_name3. - Capabilities listed will be included - in the bounding set, all others are - removed. If the list of capabilities - is prefixed with ~ all but the listed - capabilities will be included, the - effect of the assignment - inverted. Note that this option also - affects the respective capabilities in - the effective, permitted and - inheritable capability sets. The - capability bounding set may also be - individually configured for units - using the - CapabilityBoundingSet= - directive for units, but note that - capabilities dropped for PID 1 cannot - be regained in individual units, they - are lost for good. - - - - TimerSlackNSec= - - Sets the timer slack - in nanoseconds for PID 1 which is then - inherited to all executed processes, - unless overridden individually, for - example with the - TimerSlackNSec= - setting in service units (for details - see - systemd.exec5). The - timer slack controls the accuracy of - wake-ups triggered by timers. See - prctl2 - for more information. Note that in - contrast to most other time span - definitions this parameter takes an - integer value in nano-seconds if no - unit is specified. The usual time - units are understood - too. - - - - DefaultLimitCPU= - DefaultLimitFSIZE= - DefaultLimitDATA= - DefaultLimitSTACK= - DefaultLimitCORE= - DefaultLimitRSS= - DefaultLimitNOFILE= - DefaultLimitAS= - DefaultLimitNPROC= - DefaultLimitMEMLOCK= - DefaultLimitLOCKS= - DefaultLimitSIGPENDING= - DefaultLimitMSGQUEUE= - DefaultLimitNICE= - DefaultLimitRTPRIO= - DefaultLimitRTTIME= - - These settings control - various default resource limits for - units. See - setrlimit2 - for details. Use the string - infinity to - configure no limit on a specific - resource. These settings may be - overridden in individual units - using the corresponding LimitXXX= - directives. Note that these resource - limits are only defaults for units, - they are not applied to PID 1 - itself. - - - - - - See Also - - systemd1, - systemd.directives7 - - - - diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml index 53094e587d..952bb9595e 100644 --- a/man/systemd.exec.xml +++ b/man/systemd.exec.xml @@ -462,7 +462,7 @@ with in - systemd.conf5, + systemd-system.conf5, which defaults to . @@ -481,7 +481,7 @@ setting defaults to the value set with in - systemd.conf5, + systemd-system.conf5, which defaults to . @@ -839,7 +839,7 @@ settings of DefaultControllers= of - systemd.conf5, + systemd-system.conf5, but a unit's ControlGroup= setting for a specific controller diff --git a/man/systemd.xml b/man/systemd.xml index 5380ae8b67..cd38c16375 100644 --- a/man/systemd.xml +++ b/man/systemd.xml @@ -78,7 +78,7 @@ the configuration file system.conf, otherwise user.conf. See - systemd.conf5 + systemd-system.conf5 for more information. @@ -1258,7 +1258,7 @@ See Also - systemd.conf5, + systemd-system.conf5, locale.conf5, systemctl1, journalctl1, diff --git a/src/core/system.conf b/src/core/system.conf index 68076d9735..508e0f5fa4 100644 --- a/src/core/system.conf +++ b/src/core/system.conf @@ -5,7 +5,7 @@ # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # -# See systemd.conf(5) for details +# See systemd-system.conf(5) for details [Manager] #LogLevel=info diff --git a/src/core/user.conf b/src/core/user.conf index e02b46bc3a..4252451eb7 100644 --- a/src/core/user.conf +++ b/src/core/user.conf @@ -5,7 +5,7 @@ # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. # -# See systemd.conf(5) for details +# See systemd-user.conf(5) for details [Manager] #LogLevel=info diff --git a/src/shared/env-util.c b/src/shared/env-util.c index 0f1ac9294b..54988e6437 100644 --- a/src/shared/env-util.c +++ b/src/shared/env-util.c @@ -108,7 +108,7 @@ bool env_assignment_is_valid(const char *e) { /* POSIX says the overall size of the environment block cannot * be > ARG_MAX, hence the individual variable assignments - * cannot be either, but let's room for one trailing NUL + * cannot be either, but let's leave room for one trailing NUL * byte. */ if (strlen(e) > ARG_MAX - 1) return false; -- cgit v1.2.1 From f04e95ba6b861fc7d00e16d3d912a01aa7d286de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 13 Feb 2013 09:55:32 -0500 Subject: sysctl: fix uninitalized memory access in error path MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit src/sysctl/sysctl.c: In function ‘parse_file’: src/sysctl/sysctl.c:172:41: warning: ‘property’ may be used uninitialized in this function [-Wmaybe-uninitialized] --- src/sysctl/sysctl.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c index f59a858323..a8cbb5a326 100644 --- a/src/sysctl/sysctl.c +++ b/src/sysctl/sysctl.c @@ -169,7 +169,8 @@ static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno existing = hashmap_get(sysctl_options, p); if (existing) { if (!streq(value, existing)) - log_warning("Two ore more conflicting assignments of %s, ignoring.", property); + log_warning("Duplicate assignment of %s in file '%s', ignoring.", + p, path); continue; } -- cgit v1.2.1 From 2826d14091e43ed3397d862dee79d09d0115c84e Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Wed, 13 Feb 2013 15:09:36 +0100 Subject: log_error() if inotify_add_watch() fails [zj: Reworded message s/to watch/to add watch on/ to make it clear that it was the watch init action that failed, and not the "process of watching". I think this way it'll be clearer to people who don't know what inotify does.] --- src/login/sd-login.c | 3 +++ src/readahead/readahead-common.c | 2 +- src/shared/ask-password-api.c | 1 + src/shared/util.c | 1 + src/tty-ask-password-agent/tty-ask-password-agent.c | 2 ++ 5 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/login/sd-login.c b/src/login/sd-login.c index b81dddf86b..865527f8dd 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -733,6 +733,7 @@ _public_ int sd_login_monitor_new(const char *category, sd_login_monitor **m) { if (!category || streq(category, "seat")) { k = inotify_add_watch(fd, "/run/systemd/seats/", IN_MOVED_TO|IN_DELETE); if (k < 0) { + log_error("Failed to add watch on /run/systemd/seats/: %m"); close_nointr_nofail(fd); return -errno; } @@ -743,6 +744,7 @@ _public_ int sd_login_monitor_new(const char *category, sd_login_monitor **m) { if (!category || streq(category, "session")) { k = inotify_add_watch(fd, "/run/systemd/sessions/", IN_MOVED_TO|IN_DELETE); if (k < 0) { + log_error("Failed to add watch on /run/systemd/sessions/: %m"); close_nointr_nofail(fd); return -errno; } @@ -753,6 +755,7 @@ _public_ int sd_login_monitor_new(const char *category, sd_login_monitor **m) { if (!category || streq(category, "uid")) { k = inotify_add_watch(fd, "/run/systemd/users/", IN_MOVED_TO|IN_DELETE); if (k < 0) { + log_error("Failed to add watch on /run/systemd/users/: %m"); close_nointr_nofail(fd); return -errno; } diff --git a/src/readahead/readahead-common.c b/src/readahead/readahead-common.c index 41aaff0a3d..1599ac15a4 100644 --- a/src/readahead/readahead-common.c +++ b/src/readahead/readahead-common.c @@ -227,7 +227,7 @@ int open_inotify(void) { mkdir("/run/systemd/readahead", 0755); if (inotify_add_watch(fd, "/run/systemd/readahead", IN_CREATE) < 0) { - log_error("Failed to watch /run/systemd/readahead: %m"); + log_error("Failed to add watch on /run/systemd/readahead: %m"); close_nointr_nofail(fd); return -errno; } diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c index 8a0fb89a84..10e6ae0614 100644 --- a/src/shared/ask-password-api.c +++ b/src/shared/ask-password-api.c @@ -78,6 +78,7 @@ int ask_password_tty( } if (inotify_add_watch(notify, flag_file, IN_ATTRIB /* for the link count */) < 0) { + log_error("Failed to add watch on %s: %m", flag_file); r = -errno; goto finish; } diff --git a/src/shared/util.c b/src/shared/util.c index d754c836f2..6ef191422c 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -2220,6 +2220,7 @@ int acquire_terminal( wd = inotify_add_watch(notify, name, IN_CLOSE); if (wd < 0) { r = -errno; + log_error("Failed to add watch on %s: %m", name); goto fail; } } diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c index 99a626c6c5..276ccf9780 100644 --- a/src/tty-ask-password-agent/tty-ask-password-agent.c +++ b/src/tty-ask-password-agent/tty-ask-password-agent.c @@ -81,6 +81,7 @@ static int ask_password_plymouth( } if (inotify_add_watch(notify, flag_file, IN_ATTRIB /* for the link count */) < 0) { + log_error("Failed to add watch on %s: %m", flag_file); r = -errno; goto finish; } @@ -577,6 +578,7 @@ static int watch_passwords(void) { } if (inotify_add_watch(notify, "/run/systemd/ask-password", IN_CLOSE_WRITE|IN_MOVED_TO) < 0) { + log_error("Failed to add watch on /run/systemd/ask-password: %m"); r = -errno; goto finish; } -- cgit v1.2.1 From 092c4c437f30bb030deae89cc81109a624898b36 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 16:25:33 +0100 Subject: Revert "log_error() if inotify_add_watch() fails" This reverts commit 2826d14091e43ed3397d862dee79d09d0115c84e. We never should generate log messages from a library. --- src/login/sd-login.c | 3 --- src/readahead/readahead-common.c | 2 +- src/shared/ask-password-api.c | 1 - src/shared/util.c | 1 - src/tty-ask-password-agent/tty-ask-password-agent.c | 2 -- 5 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/login/sd-login.c b/src/login/sd-login.c index 865527f8dd..b81dddf86b 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -733,7 +733,6 @@ _public_ int sd_login_monitor_new(const char *category, sd_login_monitor **m) { if (!category || streq(category, "seat")) { k = inotify_add_watch(fd, "/run/systemd/seats/", IN_MOVED_TO|IN_DELETE); if (k < 0) { - log_error("Failed to add watch on /run/systemd/seats/: %m"); close_nointr_nofail(fd); return -errno; } @@ -744,7 +743,6 @@ _public_ int sd_login_monitor_new(const char *category, sd_login_monitor **m) { if (!category || streq(category, "session")) { k = inotify_add_watch(fd, "/run/systemd/sessions/", IN_MOVED_TO|IN_DELETE); if (k < 0) { - log_error("Failed to add watch on /run/systemd/sessions/: %m"); close_nointr_nofail(fd); return -errno; } @@ -755,7 +753,6 @@ _public_ int sd_login_monitor_new(const char *category, sd_login_monitor **m) { if (!category || streq(category, "uid")) { k = inotify_add_watch(fd, "/run/systemd/users/", IN_MOVED_TO|IN_DELETE); if (k < 0) { - log_error("Failed to add watch on /run/systemd/users/: %m"); close_nointr_nofail(fd); return -errno; } diff --git a/src/readahead/readahead-common.c b/src/readahead/readahead-common.c index 1599ac15a4..41aaff0a3d 100644 --- a/src/readahead/readahead-common.c +++ b/src/readahead/readahead-common.c @@ -227,7 +227,7 @@ int open_inotify(void) { mkdir("/run/systemd/readahead", 0755); if (inotify_add_watch(fd, "/run/systemd/readahead", IN_CREATE) < 0) { - log_error("Failed to add watch on /run/systemd/readahead: %m"); + log_error("Failed to watch /run/systemd/readahead: %m"); close_nointr_nofail(fd); return -errno; } diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c index 10e6ae0614..8a0fb89a84 100644 --- a/src/shared/ask-password-api.c +++ b/src/shared/ask-password-api.c @@ -78,7 +78,6 @@ int ask_password_tty( } if (inotify_add_watch(notify, flag_file, IN_ATTRIB /* for the link count */) < 0) { - log_error("Failed to add watch on %s: %m", flag_file); r = -errno; goto finish; } diff --git a/src/shared/util.c b/src/shared/util.c index 6ef191422c..d754c836f2 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -2220,7 +2220,6 @@ int acquire_terminal( wd = inotify_add_watch(notify, name, IN_CLOSE); if (wd < 0) { r = -errno; - log_error("Failed to add watch on %s: %m", name); goto fail; } } diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c index 276ccf9780..99a626c6c5 100644 --- a/src/tty-ask-password-agent/tty-ask-password-agent.c +++ b/src/tty-ask-password-agent/tty-ask-password-agent.c @@ -81,7 +81,6 @@ static int ask_password_plymouth( } if (inotify_add_watch(notify, flag_file, IN_ATTRIB /* for the link count */) < 0) { - log_error("Failed to add watch on %s: %m", flag_file); r = -errno; goto finish; } @@ -578,7 +577,6 @@ static int watch_passwords(void) { } if (inotify_add_watch(notify, "/run/systemd/ask-password", IN_CLOSE_WRITE|IN_MOVED_TO) < 0) { - log_error("Failed to add watch on /run/systemd/ask-password: %m"); r = -errno; goto finish; } -- cgit v1.2.1 From 4d34c4951ab1b9c85fd3aefd40deb87ae05b4c65 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 13 Feb 2013 17:34:57 +0100 Subject: efi: unify BootXXXX reading --- src/boot/boot-efi.c | 28 +++++++++++----------------- src/boot/boot-loader.c | 1 + src/shared/efivars.c | 31 ++++++++++++++++++++----------- 3 files changed, 32 insertions(+), 28 deletions(-) diff --git a/src/boot/boot-efi.c b/src/boot/boot-efi.c index ac5f9c12a7..a0305ba77d 100644 --- a/src/boot/boot-efi.c +++ b/src/boot/boot-efi.c @@ -38,27 +38,21 @@ #include "conf-files.h" static int get_boot_entries(struct boot_info *info) { - DIR *d = NULL; - struct dirent *dent; + uint16_t *list; + int i, n; int err = 0; - d = opendir("/sys/firmware/efi/efivars"); - if (!d) - return -errno; + n = efi_get_boot_options(&list); + if (n < 0) + return n; - for (dent = readdir(d); dent != NULL; dent = readdir(d)) { - unsigned int id; + for (i = 0; i < n; i++) { struct boot_info_entry *e; - if (dent->d_name[0] == '.') - continue; - if (sscanf(dent->d_name, "Boot%04X-8be4df61-93ca-11d2-aa0d-00e098032b8c", &id) != 1) - continue; - e = realloc(info->fw_entries, (info->fw_entries_count+1) * sizeof(struct boot_info_entry)); if (!e) { err = -ENOMEM; - break; + break; } info->fw_entries = e; @@ -66,15 +60,15 @@ static int get_boot_entries(struct boot_info *info) { memset(e, 0, sizeof(struct boot_info_entry)); e->order = -1; - err = efi_get_boot_option(id, &e->title, &e->part_uuid, &e->path); + err = efi_get_boot_option(list[i], &e->title, &e->part_uuid, &e->path); if (err < 0) - break; - e->id = id; + continue; + e->id = list[i]; info->fw_entries_count++; } - closedir(d); + free(list); return err; } diff --git a/src/boot/boot-loader.c b/src/boot/boot-loader.c index bd563da226..d1a8b0320b 100644 --- a/src/boot/boot-loader.c +++ b/src/boot/boot-loader.c @@ -104,6 +104,7 @@ int boot_loader_read_entries(struct boot_info *info) { } info->loader_entries_count++; } + return 0; } diff --git a/src/shared/efivars.c b/src/shared/efivars.c index 70b6ce1cc7..7918c59613 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -288,6 +288,21 @@ int efi_get_boot_order(uint16_t **order) { return (int) (l / sizeof(uint16_t)); } +static int boot_id_hex(const char s[4]) { + int i; + int id = 0; + + for (i = 0; i < 4; i++) + if (s[i] >= '0' && s[i] <= '9') + id |= (s[i] - '0') << (3 - i) * 4; + else if (s[i] >= 'A' && s[i] <= 'F') + id |= (s[i] - 'A' + 10) << (3 - i) * 4; + else + return -1; + + return id; +} + int efi_get_boot_options(uint16_t **options) { _cleanup_closedir_ DIR *dir = NULL; struct dirent *de; @@ -301,26 +316,20 @@ int efi_get_boot_options(uint16_t **options) { return -errno; while ((de = readdir(dir))) { - size_t n; - int a, b, c, d; + int id; uint16_t *t; if (strncmp(de->d_name, "Boot", 4) != 0) continue; - n = strlen(de->d_name); - if (n != 45) + if (strlen(de->d_name) != 45) continue; if (strcmp(de->d_name + 8, "-8be4df61-93ca-11d2-aa0d-00e098032b8c") != 0) continue; - a = de->d_name[4]; - b = de->d_name[5]; - c = de->d_name[6]; - d = de->d_name[7]; - - if (!isdigit(a) || !isdigit(b) || !isdigit(c) || !isdigit(d)) + id = boot_id_hex(de->d_name + 4); + if (id < 0) continue; t = realloc(list, (count + 1) * sizeof(uint16_t)); @@ -330,7 +339,7 @@ int efi_get_boot_options(uint16_t **options) { } list = t; - list[count ++] = (a - '0') * 1000 + (b - '0') * 100 + (c - '0') * 10 + (d - '0'); + list[count ++] = id; } -- cgit v1.2.1 From b05105f0a80bcf2f2d18e9e33f740d7d04fca633 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 13 Feb 2013 17:49:48 +0100 Subject: bootctl: always show slashes not backslashes --- src/boot/boot-efi.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/boot/boot-efi.c b/src/boot/boot-efi.c index a0305ba77d..faa86805d4 100644 --- a/src/boot/boot-efi.c +++ b/src/boot/boot-efi.c @@ -37,6 +37,18 @@ #include "efivars.h" #include "conf-files.h" +static char *tilt_slashes(char *s) { + char *p; + + if (!s) + return NULL; + + for (p = s; *p; p++) + if (*p == '\\') + *p = '/'; + return s; +} + static int get_boot_entries(struct boot_info *info) { uint16_t *list; int i, n; @@ -63,7 +75,7 @@ static int get_boot_entries(struct boot_info *info) { err = efi_get_boot_option(list[i], &e->title, &e->part_uuid, &e->path); if (err < 0) continue; - + tilt_slashes(e->path); e->id = list[i]; info->fw_entries_count++; } @@ -152,6 +164,7 @@ int boot_info_query(struct boot_info *info) { efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderFirmwareType", &info->fw_type); efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderFirmwareInfo", &info->fw_info); efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderImageIdentifier", &info->loader_image_path); + tilt_slashes(info->loader_image_path); efi_get_loader_device_part_uuid(&info->loader_part_uuid); boot_loader_read_entries(info); -- cgit v1.2.1 From 090be8653471e1abe3f1cdd32eaad0fbd65f85cd Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Wed, 13 Feb 2013 18:13:22 +0100 Subject: use streq instead of strcmp --- src/boot/boot-loader.c | 2 +- src/journal/test-journal-syslog.c | 4 ++-- src/libudev/libudev-monitor.c | 8 ++++---- src/libudev/libudev-queue.c | 2 +- src/libudev/libudev-util.c | 4 ++-- src/libudev/libudev.c | 2 +- src/test/test-udev.c | 4 ++-- src/udev/accelerometer/accelerometer.c | 2 +- src/udev/collect/collect.c | 6 +++--- src/udev/scsi_id/scsi_id.c | 12 ++++++------ src/udev/udev-builtin-kmod.c | 2 +- src/udev/udev-builtin-net_id.c | 2 +- src/udev/udev-builtin-path_id.c | 28 ++++++++++++++-------------- src/udev/udev-builtin-usb_id.c | 2 +- src/udev/udev-builtin.c | 2 +- src/udev/udev-event.c | 6 +++--- src/udev/udev-node.c | 12 ++++++------ src/udev/udevadm-info.c | 12 ++++++------ src/udev/udevadm-test.c | 6 +++--- src/udev/udevadm-trigger.c | 4 ++-- src/udev/udevadm.c | 2 +- src/udev/udevd.c | 8 ++++---- 22 files changed, 66 insertions(+), 66 deletions(-) diff --git a/src/boot/boot-loader.c b/src/boot/boot-loader.c index d1a8b0320b..d44fdb3aef 100644 --- a/src/boot/boot-loader.c +++ b/src/boot/boot-loader.c @@ -121,7 +121,7 @@ int boot_loader_find_active_entry(struct boot_info *info, const char *loader_act return -ENOMEM; for (i = 0; i < info->loader_entries_count; i++) { - if (strcmp(fn, info->loader_entries[i].path) == 0) { + if (streq(fn, info->loader_entries[i].path)) { info->loader_entry_active = i; break; } diff --git a/src/journal/test-journal-syslog.c b/src/journal/test-journal-syslog.c index 3ae8633f22..5cf940733b 100644 --- a/src/journal/test-journal-syslog.c +++ b/src/journal/test-journal-syslog.c @@ -31,8 +31,8 @@ static void test_syslog_parse_identifier(const char* str, ret2 = syslog_parse_identifier(&buf, &ident2, &pid2); assert(ret == ret2); - assert(ident==ident2 || !strcmp(ident, ident2)); - assert(pid==pid2 || !strcmp(pid, pid2)); + assert(ident==ident2 || streq(ident, ident2)); + assert(pid==pid2 || streq(pid, pid2)); } int main(void) { diff --git a/src/libudev/libudev-monitor.c b/src/libudev/libudev-monitor.c index b02ea8808c..0212792552 100644 --- a/src/libudev/libudev-monitor.c +++ b/src/libudev/libudev-monitor.c @@ -115,9 +115,9 @@ struct udev_monitor *udev_monitor_new_from_netlink_fd(struct udev *udev, const c if (name == NULL) group = UDEV_MONITOR_NONE; - else if (strcmp(name, "udev") == 0) + else if (streq(name, "udev")) group = UDEV_MONITOR_UDEV; - else if (strcmp(name, "kernel") == 0) + else if (streq(name, "kernel")) group = UDEV_MONITOR_KERNEL; else return NULL; @@ -467,7 +467,7 @@ static int passes_filter(struct udev_monitor *udev_monitor, struct udev_device * const char *devtype; const char *ddevtype; - if (strcmp(dsubsys, subsys) != 0) + if (!streq(dsubsys, subsys)) continue; devtype = udev_list_entry_get_value(list_entry); @@ -476,7 +476,7 @@ static int passes_filter(struct udev_monitor *udev_monitor, struct udev_device * ddevtype = udev_device_get_devtype(udev_device); if (ddevtype == NULL) continue; - if (strcmp(ddevtype, devtype) == 0) + if (streq(ddevtype, devtype)) goto tag; } return 0; diff --git a/src/libudev/libudev-queue.c b/src/libudev/libudev-queue.c index bfb4807383..0dd20313d9 100644 --- a/src/libudev/libudev-queue.c +++ b/src/libudev/libudev-queue.c @@ -467,7 +467,7 @@ _public_ struct udev_list_entry *udev_queue_get_queued_list_entry(struct udev_qu udev_list_entry_add(&udev_queue->queue_list, syspath, seqnum_str); } else { udev_list_entry_foreach(list_entry, udev_list_get_entry(&udev_queue->queue_list)) { - if (strcmp(seqnum_str, udev_list_entry_get_value(list_entry)) == 0) { + if (streq(seqnum_str, udev_list_entry_get_value(list_entry))) { udev_list_entry_delete(list_entry); break; } diff --git a/src/libudev/libudev-util.c b/src/libudev/libudev-util.c index 2eb7907063..62b7e56c05 100644 --- a/src/libudev/libudev-util.c +++ b/src/libudev/libudev-util.c @@ -83,7 +83,7 @@ uid_t util_lookup_user(struct udev *udev, const char *user) size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX); char *buf = alloca(buflen); - if (strcmp(user, "root") == 0) + if (streq(user, "root")) return 0; uid = strtoul(user, &endptr, 10); if (endptr[0] == '\0') @@ -108,7 +108,7 @@ gid_t util_lookup_group(struct udev *udev, const char *group) size_t buflen = sysconf(_SC_GETPW_R_SIZE_MAX); char *buf = NULL; - if (strcmp(group, "root") == 0) + if (streq(group, "root")) return 0; gid = strtoul(group, &endptr, 10); if (endptr[0] == '\0') diff --git a/src/libudev/libudev.c b/src/libudev/libudev.c index d860ebc080..208039a1b2 100644 --- a/src/libudev/libudev.c +++ b/src/libudev/libudev.c @@ -191,7 +191,7 @@ _public_ struct udev *udev_new(void) val++; } - if (strcmp(key, "udev_log") == 0) { + if (streq(key, "udev_log")) { udev_set_log_priority(udev, util_log_priority(val)); continue; } diff --git a/src/test/test-udev.c b/src/test/test-udev.c index aee87f753d..52b61b4206 100644 --- a/src/test/test-udev.c +++ b/src/test/test-udev.c @@ -140,12 +140,12 @@ int main(int argc, char *argv[]) if (udev_device_get_devnode(dev) != NULL) { mode_t mode = 0600; - if (strcmp(udev_device_get_subsystem(dev), "block") == 0) + if (streq(udev_device_get_subsystem(dev), "block")) mode |= S_IFBLK; else mode |= S_IFCHR; - if (strcmp(action, "remove") != 0) { + if (!streq(action, "remove")) { mkdir_parents_label(udev_device_get_devnode(dev), 0755); mknod(udev_device_get_devnode(dev), mode, udev_device_get_devnum(dev)); } else { diff --git a/src/udev/accelerometer/accelerometer.c b/src/udev/accelerometer/accelerometer.c index 2fea3889c7..f50db71a76 100644 --- a/src/udev/accelerometer/accelerometer.c +++ b/src/udev/accelerometer/accelerometer.c @@ -122,7 +122,7 @@ string_to_orientation (const char *orientation) if (orientation == NULL) return ORIENTATION_UNDEFINED; for (i = 0; orientations[i] != NULL; i++) { - if (strcmp (orientation, orientations[i]) == 0) + if (streq (orientation, orientations[i])) return i; } return ORIENTATION_UNDEFINED; diff --git a/src/udev/collect/collect.c b/src/udev/collect/collect.c index f594814dbe..7850cfa418 100644 --- a/src/udev/collect/collect.c +++ b/src/udev/collect/collect.c @@ -213,7 +213,7 @@ static void invite(char *us) udev_list_node_foreach(him_node, &bunch) { struct _mate *him = node_to_mate(him_node); - if (!strcmp(him->name, us)) { + if (streq(him->name, us)) { him->state = STATE_CONFIRMED; who = him; } @@ -241,7 +241,7 @@ static void reject(char *us) udev_list_node_foreach(him_node, &bunch) { struct _mate *him = node_to_mate(him_node); - if (!strcmp(him->name, us)) { + if (streq(him->name, us)) { him->state = STATE_NONE; who = him; } @@ -434,7 +434,7 @@ int main(int argc, char **argv) udev_list_node_foreach(him_node, &bunch) { struct _mate *him = node_to_mate(him_node); - if (!strcmp(him->name, argv[i])) + if (streq(him->name, argv[i])) who = him; } if (!who) { diff --git a/src/udev/scsi_id/scsi_id.c b/src/udev/scsi_id/scsi_id.c index dcf03eefac..ab7c54c3f2 100644 --- a/src/udev/scsi_id/scsi_id.c +++ b/src/udev/scsi_id/scsi_id.c @@ -372,11 +372,11 @@ static int set_options(struct udev *udev, exit(0); case 'p': - if (strcmp(optarg, "0x80") == 0) { + if (streq(optarg, "0x80")) { default_page_code = PAGE_80; - } else if (strcmp(optarg, "0x83") == 0) { + } else if (streq(optarg, "0x83")) { default_page_code = PAGE_83; - } else if (strcmp(optarg, "pre-spc3-83") == 0) { + } else if (streq(optarg, "pre-spc3-83")) { default_page_code = PAGE_83_PRE_SPC3; } else { log_error("Unknown page code '%s'\n", optarg); @@ -449,11 +449,11 @@ static int per_dev_options(struct udev *udev, break; case 'p': - if (strcmp(optarg, "0x80") == 0) { + if (streq(optarg, "0x80")) { *page_code = PAGE_80; - } else if (strcmp(optarg, "0x83") == 0) { + } else if (streq(optarg, "0x83")) { *page_code = PAGE_83; - } else if (strcmp(optarg, "pre-spc3-83") == 0) { + } else if (streq(optarg, "pre-spc3-83")) { *page_code = PAGE_83_PRE_SPC3; } else { log_error("Unknown page code '%s'\n", optarg); diff --git a/src/udev/udev-builtin-kmod.c b/src/udev/udev-builtin-kmod.c index 17aca2944d..fc28121267 100644 --- a/src/udev/udev-builtin-kmod.c +++ b/src/udev/udev-builtin-kmod.c @@ -78,7 +78,7 @@ static int builtin_kmod(struct udev_device *dev, int argc, char *argv[], bool te if (!ctx) return 0; - if (argc < 3 || strcmp(argv[1], "load")) { + if (argc < 3 || !streq(argv[1], "load")) { log_error("expect: %s load \n", argv[0]); return EXIT_FAILURE; } diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index c55c34d614..57674bf278 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -413,7 +413,7 @@ static int builtin_net_id(struct udev_device *dev, int argc, char *argv[], bool p = udev_device_get_sysattr_value(dev, "iflink"); if (!p) return EXIT_FAILURE; - if (strcmp(s, p) != 0) + if (!streq(s, p)) return 0; devtype = udev_device_get_devtype(dev); diff --git a/src/udev/udev-builtin-path_id.c b/src/udev/udev-builtin-path_id.c index d6b3736aee..da0273197b 100644 --- a/src/udev/udev-builtin-path_id.c +++ b/src/udev/udev-builtin-path_id.c @@ -83,7 +83,7 @@ static struct udev_device *skip_subsystem(struct udev_device *dev, const char *s const char *subsystem; subsystem = udev_device_get_subsystem(parent); - if (subsystem == NULL || strcmp(subsystem, subsys) != 0) + if (subsystem == NULL || !streq(subsystem, subsys)) break; dev = parent; parent = udev_device_get_parent(parent); @@ -345,7 +345,7 @@ static struct udev_device *handle_scsi(struct udev_device *parent, char **path) const char *id; devtype = udev_device_get_devtype(parent); - if (devtype == NULL || strcmp(devtype, "scsi_device") != 0) + if (devtype == NULL || !streq(devtype, "scsi_device")) return parent; /* firewire */ @@ -438,7 +438,7 @@ static struct udev_device *handle_usb(struct udev_device *parent, char **path) devtype = udev_device_get_devtype(parent); if (devtype == NULL) return parent; - if (strcmp(devtype, "usb_interface") != 0 && strcmp(devtype, "usb_device") != 0) + if (!streq(devtype, "usb_interface") && !streq(devtype, "usb_device")) return parent; str = udev_device_get_sysname(parent); @@ -498,37 +498,37 @@ static int builtin_path_id(struct udev_device *dev, int argc, char *argv[], bool subsys = udev_device_get_subsystem(parent); if (subsys == NULL) { ; - } else if (strcmp(subsys, "scsi_tape") == 0) { + } else if (streq(subsys, "scsi_tape")) { handle_scsi_tape(parent, &path); - } else if (strcmp(subsys, "scsi") == 0) { + } else if (streq(subsys, "scsi")) { parent = handle_scsi(parent, &path); some_transport = true; - } else if (strcmp(subsys, "cciss") == 0) { + } else if (streq(subsys, "cciss")) { parent = handle_cciss(parent, &path); some_transport = true; - } else if (strcmp(subsys, "usb") == 0) { + } else if (streq(subsys, "usb")) { parent = handle_usb(parent, &path); some_transport = true; - } else if (strcmp(subsys, "serio") == 0) { + } else if (streq(subsys, "serio")) { path_prepend(&path, "serio-%s", udev_device_get_sysnum(parent)); parent = skip_subsystem(parent, "serio"); - } else if (strcmp(subsys, "pci") == 0) { + } else if (streq(subsys, "pci")) { path_prepend(&path, "pci-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "pci"); - } else if (strcmp(subsys, "platform") == 0) { + } else if (streq(subsys, "platform")) { path_prepend(&path, "platform-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "platform"); some_transport = true; - } else if (strcmp(subsys, "acpi") == 0) { + } else if (streq(subsys, "acpi")) { path_prepend(&path, "acpi-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "acpi"); - } else if (strcmp(subsys, "xen") == 0) { + } else if (streq(subsys, "xen")) { path_prepend(&path, "xen-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "xen"); - } else if (strcmp(subsys, "virtio") == 0) { + } else if (streq(subsys, "virtio")) { path_prepend(&path, "virtio-pci-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "virtio"); - } else if (strcmp(subsys, "scm") == 0) { + } else if (streq(subsys, "scm")) { path_prepend(&path, "scm-%s", udev_device_get_sysname(parent)); parent = skip_subsystem(parent, "scm"); } diff --git a/src/udev/udev-builtin-usb_id.c b/src/udev/udev-builtin-usb_id.c index 7ce401d152..01e42ca7b1 100644 --- a/src/udev/udev-builtin-usb_id.c +++ b/src/udev/udev-builtin-usb_id.c @@ -273,7 +273,7 @@ static int builtin_usb_id(struct udev_device *dev, int argc, char *argv[], bool instance_str[0] = '\0'; /* shortcut, if we are called directly for a "usb_device" type */ - if (udev_device_get_devtype(dev) != NULL && strcmp(udev_device_get_devtype(dev), "usb_device") == 0) { + if (udev_device_get_devtype(dev) != NULL && streq(udev_device_get_devtype(dev), "usb_device")) { dev_if_packed_info(dev, packed_if_str, sizeof(packed_if_str)); dev_usb = dev; goto fallback; diff --git a/src/udev/udev-builtin.c b/src/udev/udev-builtin.c index 0651ae2ff0..57d75a13e4 100644 --- a/src/udev/udev-builtin.c +++ b/src/udev/udev-builtin.c @@ -115,7 +115,7 @@ enum udev_builtin_cmd udev_builtin_lookup(const char *command) if (pos) pos[0] = '\0'; for (i = 0; i < ELEMENTSOF(builtins); i++) - if (strcmp(builtins[i]->name, name) == 0) + if (streq(builtins[i]->name, name)) return i; return UDEV_BUILTIN_MAX; } diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index ef9fc61c64..efd9b6d71d 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -784,7 +784,7 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, if (udev_device_get_subsystem(dev) == NULL) return -1; - if (strcmp(udev_device_get_action(dev), "remove") == 0) { + if (streq(udev_device_get_action(dev), "remove")) { udev_device_read_db(dev, NULL); udev_device_delete_db(dev); udev_device_tag_index(dev, NULL, false); @@ -812,8 +812,8 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, udev_rules_apply_to_event(rules, event, sigmask); /* rename a new network interface, if needed */ - if (udev_device_get_ifindex(dev) > 0 && strcmp(udev_device_get_action(dev), "add") == 0 && - event->name != NULL && strcmp(event->name, udev_device_get_sysname(dev)) != 0) { + if (udev_device_get_ifindex(dev) > 0 && streq(udev_device_get_action(dev), "add") && + event->name != NULL && !streq(event->name, udev_device_get_sysname(dev))) { char syspath[UTIL_PATH_SIZE]; char *pos; diff --git a/src/udev/udev-node.c b/src/udev/udev-node.c index 363cee1d1c..1148a1529c 100644 --- a/src/udev/udev-node.c +++ b/src/udev/udev-node.c @@ -74,7 +74,7 @@ static int node_symlink(struct udev_device *dev, const char *node, const char *s len = readlink(slink, buf, sizeof(buf)); if (len > 0 && len < (int)sizeof(buf)) { buf[len] = '\0'; - if (strcmp(target, buf) == 0) { + if (streq(target, buf)) { log_debug("preserve already existing symlink '%s' to '%s'\n", slink, target); label_fix(slink, true, false); utimensat(AT_FDCWD, slink, NULL, AT_SYMLINK_NOFOLLOW); @@ -154,7 +154,7 @@ static const char *link_find_prioritized(struct udev_device *dev, bool add, cons log_debug("found '%s' claiming '%s'\n", dent->d_name, stackdir); /* did we find ourself? */ - if (strcmp(dent->d_name, udev_device_get_id_filename(dev)) == 0) + if (streq(dent->d_name, udev_device_get_id_filename(dev))) continue; dev_db = udev_device_new_from_device_id(udev, dent->d_name); @@ -238,7 +238,7 @@ void udev_node_update_old_links(struct udev_device *dev, struct udev_device *dev udev_list_entry_foreach(list_entry_current, udev_device_get_devlinks_list_entry(dev)) { const char *name_current = udev_list_entry_get_name(list_entry_current); - if (strcmp(name, name_current) == 0) { + if (streq(name, name_current)) { found = 1; break; } @@ -259,7 +259,7 @@ static int node_permissions_apply(struct udev_device *dev, bool apply, mode_t mo struct stat stats; int err = 0; - if (strcmp(udev_device_get_subsystem(dev), "block") == 0) + if (streq(udev_device_get_subsystem(dev), "block")) mode |= S_IFBLK; else mode |= S_IFCHR; @@ -307,7 +307,7 @@ void udev_node_add(struct udev_device *dev, bool apply, mode_t mode, uid_t uid, /* always add /dev/{block,char}/$major:$minor */ snprintf(filename, sizeof(filename), "/dev/%s/%u:%u", - strcmp(udev_device_get_subsystem(dev), "block") == 0 ? "block" : "char", + streq(udev_device_get_subsystem(dev), "block") ? "block" : "char", major(udev_device_get_devnum(dev)), minor(udev_device_get_devnum(dev))); node_symlink(dev, udev_device_get_devnode(dev), filename); @@ -327,7 +327,7 @@ void udev_node_remove(struct udev_device *dev) /* remove /dev/{block,char}/$major:$minor */ snprintf(filename, sizeof(filename), "/dev/%s/%u:%u", - strcmp(udev_device_get_subsystem(dev), "block") == 0 ? "block" : "char", + streq(udev_device_get_subsystem(dev), "block") ? "block" : "char", major(udev_device_get_devnum(dev)), minor(udev_device_get_devnum(dev))); unlink(filename); } diff --git a/src/udev/udevadm-info.c b/src/udev/udevadm-info.c index d6f82869b1..0f4565eda8 100644 --- a/src/udev/udevadm-info.c +++ b/src/udev/udevadm-info.c @@ -45,7 +45,7 @@ static bool skip_attribute(const char *name) unsigned int i; for (i = 0; i < ELEMENTSOF(skip); i++) - if (strcmp(name, skip[i]) == 0) + if (streq(name, skip[i])) return true; return false; } @@ -393,15 +393,15 @@ static int uinfo(struct udev *udev, int argc, char *argv[]) break; case 'q': action = ACTION_QUERY; - if (strcmp(optarg, "property") == 0 || strcmp(optarg, "env") == 0) { + if (streq(optarg, "property") || streq(optarg, "env")) { query = QUERY_PROPERTY; - } else if (strcmp(optarg, "name") == 0) { + } else if (streq(optarg, "name")) { query = QUERY_NAME; - } else if (strcmp(optarg, "symlink") == 0) { + } else if (streq(optarg, "symlink")) { query = QUERY_SYMLINK; - } else if (strcmp(optarg, "path") == 0) { + } else if (streq(optarg, "path")) { query = QUERY_PATH; - } else if (strcmp(optarg, "all") == 0) { + } else if (streq(optarg, "all")) { query = QUERY_ALL; } else { fprintf(stderr, "unknown query type\n"); diff --git a/src/udev/udevadm-test.c b/src/udev/udevadm-test.c index f22a2c32cc..df1409bff6 100644 --- a/src/udev/udevadm-test.c +++ b/src/udev/udevadm-test.c @@ -66,11 +66,11 @@ static int adm_test(struct udev *udev, int argc, char *argv[]) action = optarg; break; case 'N': - if (strcmp (optarg, "early") == 0) { + if (streq (optarg, "early")) { resolve_names = 1; - } else if (strcmp (optarg, "late") == 0) { + } else if (streq (optarg, "late")) { resolve_names = 0; - } else if (strcmp (optarg, "never") == 0) { + } else if (streq (optarg, "never")) { resolve_names = -1; } else { fprintf(stderr, "resolve-names must be early, late or never\n"); diff --git a/src/udev/udevadm-trigger.c b/src/udev/udevadm-trigger.c index 4d96a786c3..9624c66fba 100644 --- a/src/udev/udevadm-trigger.c +++ b/src/udev/udevadm-trigger.c @@ -122,9 +122,9 @@ static int adm_trigger(struct udev *udev, int argc, char *argv[]) dry_run = 1; break; case 't': - if (strcmp(optarg, "devices") == 0) { + if (streq(optarg, "devices")) { device_type = TYPE_DEVICES; - } else if (strcmp(optarg, "subsystems") == 0) { + } else if (streq(optarg, "subsystems")) { device_type = TYPE_SUBSYSTEMS; } else { log_error("unknown type --type=%s\n", optarg); diff --git a/src/udev/udevadm.c b/src/udev/udevadm.c index 53419ffa62..e14b3ca27c 100644 --- a/src/udev/udevadm.c +++ b/src/udev/udevadm.c @@ -131,7 +131,7 @@ int main(int argc, char *argv[]) if (command != NULL) for (i = 0; i < ELEMENTSOF(udevadm_cmds); i++) { - if (strcmp(udevadm_cmds[i]->name, command) == 0) { + if (streq(udevadm_cmds[i]->name, command)) { argc -= optind; argv += optind; /* we need '0' here to reset the internal state */ diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 9f184621ae..088a89f470 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -499,7 +499,7 @@ static bool is_devpath_busy(struct event *event) return true; /* check our old name */ - if (event->devpath_old != NULL && strcmp(loop_event->devpath, event->devpath_old) == 0) { + if (event->devpath_old != NULL && streq(loop_event->devpath, event->devpath_old)) { event->delaying_seqnum = loop_event->seqnum; return true; } @@ -1117,11 +1117,11 @@ int main(int argc, char *argv[]) udev_set_log_priority(udev, LOG_DEBUG); break; case 'N': - if (strcmp (optarg, "early") == 0) { + if (streq(optarg, "early")) { resolve_names = 1; - } else if (strcmp (optarg, "late") == 0) { + } else if (streq(optarg, "late")) { resolve_names = 0; - } else if (strcmp (optarg, "never") == 0) { + } else if (streq(optarg, "never")) { resolve_names = -1; } else { fprintf(stderr, "resolve-names must be early, late or never\n"); -- cgit v1.2.1 From ace188cf3a0de77cb644f0e4dee7853c4f6404fd Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 19:35:08 +0100 Subject: selinux: use a dynamically sized string when generating audit messages https://bugzilla.redhat.com/show_bug.cgi?id=883043 --- src/core/selinux-access.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c index 08a4834575..bc195f3c56 100644 --- a/src/core/selinux-access.c +++ b/src/core/selinux-access.c @@ -181,13 +181,18 @@ static int log_callback(int type, const char *fmt, ...) { #ifdef HAVE_AUDIT if (get_audit_fd() >= 0) { - char buf[LINE_MAX]; + _cleanup_free_ char *buf = NULL; + int r; - vsnprintf(buf, sizeof(buf), fmt, ap); - audit_log_user_avc_message(get_audit_fd(), AUDIT_USER_AVC, buf, NULL, NULL, NULL, 0); + r = vasprintf(&buf, fmt, ap); va_end(ap); - return 0; + if (r >= 0) { + audit_log_user_avc_message(get_audit_fd(), AUDIT_USER_AVC, buf, NULL, NULL, NULL, 0); + return 0; + } + + va_start(ap, fmt); } #endif log_metav(LOG_USER | LOG_INFO, __FILE__, __LINE__, __FUNCTION__, fmt, ap); -- cgit v1.2.1 From cbb7712189527f9f483321607e44c4ead3dd11b8 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 19:35:28 +0100 Subject: TODO --- TODO | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TODO b/TODO index 7f77605479..d1b85a93ff 100644 --- a/TODO +++ b/TODO @@ -56,6 +56,10 @@ Fedora 19: Features: +* use "log level" rather than "log priority" everywhere + +* unit_name_mangle() is currently not used on "systemctl enable" and friends, only on "systemctl start" + * ensure sd_journal_seek_monotonic actually works properly. * timedate: have global on/off switches for auto-time (NTP), and auto-timezone that connman can subscribe to. -- cgit v1.2.1 From a1022300b9f5af6249292acf93f5c6d4bf45e655 Mon Sep 17 00:00:00 2001 From: Daniel Buch Date: Wed, 13 Feb 2013 16:13:36 +0100 Subject: test-strv.c: added strv_merge test --- src/test/test-strv.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/test/test-strv.c b/src/test/test-strv.c index 07aac3a670..3ed5a09836 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -158,6 +158,24 @@ static void test_strv_sort(void) { assert(streq(input_table[4], "durian")); } +static void test_strv_merge(void) { + _cleanup_strv_free_ char **a = NULL, **b = NULL, **c = NULL; + + a = strv_new("abc", "def", "ghi", NULL); + b = strv_new("jkl", "mno", "pqr", NULL); + + c = strv_merge(a, b); + + assert(streq(c[0], "abc")); + assert(streq(c[1], "def")); + assert(streq(c[2], "ghi")); + assert(streq(c[3], "jkl")); + assert(streq(c[4], "mno")); + assert(streq(c[5], "pqr")); + + assert(strv_length(c) == 6); +} + int main(int argc, char *argv[]) { test_specifier_printf(); test_strv_find(); @@ -166,6 +184,7 @@ int main(int argc, char *argv[]) { test_strv_parse_nulstr(); test_strv_overlap(); test_strv_sort(); + test_strv_merge(); return 0; } -- cgit v1.2.1 From 343a896935b9573949f57918c375ad783d71febf Mon Sep 17 00:00:00 2001 From: Daniel Buch Date: Wed, 13 Feb 2013 16:13:37 +0100 Subject: test-strv.c: added strv_merge_concat test --- src/test/test-strv.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/test/test-strv.c b/src/test/test-strv.c index 3ed5a09836..fabc26e25e 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -158,6 +158,20 @@ static void test_strv_sort(void) { assert(streq(input_table[4], "durian")); } +static void test_strv_merge_concat(void) { + _cleanup_strv_free_ char **a = NULL, **b = NULL, **c = NULL; + + a = strv_new("without", "suffix", NULL); + b = strv_new("with", "suffix", NULL); + + c = strv_merge_concat(a, b, "_suffix"); + + assert(streq(c[0], "without")); + assert(streq(c[1], "suffix")); + assert(streq(c[2], "with_suffix")); + assert(streq(c[3], "suffix_suffix")); +} + static void test_strv_merge(void) { _cleanup_strv_free_ char **a = NULL, **b = NULL, **c = NULL; @@ -185,6 +199,7 @@ int main(int argc, char *argv[]) { test_strv_overlap(); test_strv_sort(); test_strv_merge(); + test_strv_merge_concat(); return 0; } -- cgit v1.2.1 From 40857008d814c0c0915767b72c225379ce103a10 Mon Sep 17 00:00:00 2001 From: Daniel Buch Date: Wed, 13 Feb 2013 16:13:38 +0100 Subject: test-strv.c: added strv_append test --- src/test/test-strv.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/test/test-strv.c b/src/test/test-strv.c index fabc26e25e..535685f219 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -190,6 +190,19 @@ static void test_strv_merge(void) { assert(strv_length(c) == 6); } +static void test_strv_append(void) { + _cleanup_strv_free_ char **a = NULL, **b = NULL, **c = NULL; + + a = strv_new("test", "test1", NULL); + b = strv_append(a, "test2"); + c = strv_append(NULL, "test3"); + + assert(streq(b[0], "test")); + assert(streq(b[1], "test1")); + assert(streq(b[2], "test2")); + assert(streq(c[0], "test3")); +} + int main(int argc, char *argv[]) { test_specifier_printf(); test_strv_find(); @@ -200,6 +213,7 @@ int main(int argc, char *argv[]) { test_strv_sort(); test_strv_merge(); test_strv_merge_concat(); + test_strv_append(); return 0; } -- cgit v1.2.1 From 7b68d618a2946ccd022dc424147adddebafb8298 Mon Sep 17 00:00:00 2001 From: Daniel Buch Date: Wed, 13 Feb 2013 16:13:39 +0100 Subject: test-strv.c: Changed assert() to assert_se() test-strv.c: Indent fix --- src/test/test-strv.c | 96 ++++++++++++++++++++++++++-------------------------- 1 file changed, 48 insertions(+), 48 deletions(-) diff --git a/src/test/test-strv.c b/src/test/test-strv.c index 535685f219..a8801b56b5 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -48,8 +48,8 @@ static void test_strv_find(void) { NULL }; - assert(strv_find((char **)input_table, "three")); - assert(!strv_find((char **)input_table, "four")); + assert_se(strv_find((char **)input_table, "three")); + assert_se(!strv_find((char **)input_table, "four")); } static void test_strv_find_prefix(void) { @@ -60,11 +60,11 @@ static void test_strv_find_prefix(void) { NULL }; - assert(strv_find_prefix((char **)input_table, "o")); - assert(strv_find_prefix((char **)input_table, "one")); - assert(strv_find_prefix((char **)input_table, "")); - assert(!strv_find_prefix((char **)input_table, "xxx")); - assert(!strv_find_prefix((char **)input_table, "onee")); + assert_se(strv_find_prefix((char **)input_table, "o")); + assert_se(strv_find_prefix((char **)input_table, "one")); + assert_se(strv_find_prefix((char **)input_table, "")); + assert_se(!strv_find_prefix((char **)input_table, "xxx")); + assert_se(!strv_find_prefix((char **)input_table, "onee")); } static void test_strv_join(void) { @@ -85,19 +85,19 @@ static void test_strv_join(void) { }; p = strv_join((char **)input_table_multiple, ", "); - assert(streq(p, "one, two, three")); + assert_se(streq(p, "one, two, three")); q = strv_join((char **)input_table_multiple, ";"); - assert(streq(q, "one;two;three")); + assert_se(streq(q, "one;two;three")); r = strv_join((char **)input_table_multiple, NULL); - assert(streq(r, "one two three")); + assert_se(streq(r, "one two three")); s = strv_join((char **)input_table_one, ", "); - assert(streq(s, "one")); + assert_se(streq(s, "one")); t = strv_join((char **)input_table_none, ", "); - assert(streq(t, "")); + assert_se(streq(t, "")); } static void test_strv_parse_nulstr(void) { @@ -108,13 +108,13 @@ static void test_strv_parse_nulstr(void) { puts("Parse nulstr:"); strv_print(l); - assert(streq(l[0], "fuck")); - assert(streq(l[1], "fuck2")); - assert(streq(l[2], "fuck3")); - assert(streq(l[3], "")); - assert(streq(l[4], "fuck5")); - assert(streq(l[5], "")); - assert(streq(l[6], "xxx")); + assert_se(streq(l[0], "fuck")); + assert_se(streq(l[1], "fuck2")); + assert_se(streq(l[2], "fuck3")); + assert_se(streq(l[3], "")); + assert_se(streq(l[4], "fuck5")); + assert_se(streq(l[5], "")); + assert_se(streq(l[6], "xxx")); } static void test_strv_overlap(void) { @@ -135,8 +135,8 @@ static void test_strv_overlap(void) { NULL }; - assert(strv_overlap((char **)input_table, (char**)input_table_overlap)); - assert(!strv_overlap((char **)input_table, (char**)input_table_unique)); + assert_se(strv_overlap((char **)input_table, (char**)input_table_overlap)); + assert_se(!strv_overlap((char **)input_table, (char**)input_table_unique)); } static void test_strv_sort(void) { @@ -151,43 +151,43 @@ static void test_strv_sort(void) { strv_sort((char **)input_table); - assert(streq(input_table[0], "CAPITAL LETTERS FIRST")); - assert(streq(input_table[1], "apple")); - assert(streq(input_table[2], "banana")); - assert(streq(input_table[3], "citrus")); - assert(streq(input_table[4], "durian")); + assert_se(streq(input_table[0], "CAPITAL LETTERS FIRST")); + assert_se(streq(input_table[1], "apple")); + assert_se(streq(input_table[2], "banana")); + assert_se(streq(input_table[3], "citrus")); + assert_se(streq(input_table[4], "durian")); } static void test_strv_merge_concat(void) { - _cleanup_strv_free_ char **a = NULL, **b = NULL, **c = NULL; + _cleanup_strv_free_ char **a = NULL, **b = NULL, **c = NULL; - a = strv_new("without", "suffix", NULL); - b = strv_new("with", "suffix", NULL); + a = strv_new("without", "suffix", NULL); + b = strv_new("with", "suffix", NULL); - c = strv_merge_concat(a, b, "_suffix"); + c = strv_merge_concat(a, b, "_suffix"); - assert(streq(c[0], "without")); - assert(streq(c[1], "suffix")); - assert(streq(c[2], "with_suffix")); - assert(streq(c[3], "suffix_suffix")); + assert_se(streq(c[0], "without")); + assert_se(streq(c[1], "suffix")); + assert_se(streq(c[2], "with_suffix")); + assert_se(streq(c[3], "suffix_suffix")); } static void test_strv_merge(void) { _cleanup_strv_free_ char **a = NULL, **b = NULL, **c = NULL; - a = strv_new("abc", "def", "ghi", NULL); - b = strv_new("jkl", "mno", "pqr", NULL); + a = strv_new("abc", "def", "ghi", NULL); + b = strv_new("jkl", "mno", "pqr", NULL); - c = strv_merge(a, b); + c = strv_merge(a, b); - assert(streq(c[0], "abc")); - assert(streq(c[1], "def")); - assert(streq(c[2], "ghi")); - assert(streq(c[3], "jkl")); - assert(streq(c[4], "mno")); - assert(streq(c[5], "pqr")); + assert_se(streq(c[0], "abc")); + assert_se(streq(c[1], "def")); + assert_se(streq(c[2], "ghi")); + assert_se(streq(c[3], "jkl")); + assert_se(streq(c[4], "mno")); + assert_se(streq(c[5], "pqr")); - assert(strv_length(c) == 6); + assert_se(strv_length(c) == 6); } static void test_strv_append(void) { @@ -197,10 +197,10 @@ static void test_strv_append(void) { b = strv_append(a, "test2"); c = strv_append(NULL, "test3"); - assert(streq(b[0], "test")); - assert(streq(b[1], "test1")); - assert(streq(b[2], "test2")); - assert(streq(c[0], "test3")); + assert_se(streq(b[0], "test")); + assert_se(streq(b[1], "test1")); + assert_se(streq(b[2], "test2")); + assert_se(streq(c[0], "test3")); } int main(int argc, char *argv[]) { -- cgit v1.2.1 From 3ac525bd75f0009954c6dde3461b6a640d936ee3 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 21:20:42 +0100 Subject: update TODO --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index d1b85a93ff..84105779bc 100644 --- a/TODO +++ b/TODO @@ -56,6 +56,8 @@ Fedora 19: Features: +* figure out what we do about hostnames/fqdn in hostnamectl/hostnamed + * use "log level" rather than "log priority" everywhere * unit_name_mangle() is currently not used on "systemctl enable" and friends, only on "systemctl start" -- cgit v1.2.1 From 61cc634bc208b264bd2fbe6af241b345a2002509 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 21:24:10 +0100 Subject: efi: use efi_get_variable_string() instead of efi_get_variable() where we can --- src/shared/efivars.c | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/src/shared/efivars.c b/src/shared/efivars.c index 7918c59613..064746a9a8 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -348,23 +348,17 @@ int efi_get_boot_options(uint16_t **options) { } static int read_usec(sd_id128_t vendor, const char *name, usec_t *u) { - _cleanup_free_ void *i = NULL; _cleanup_free_ char *j = NULL; - size_t is; int r; uint64_t x; assert(name); assert(u); - r = efi_get_variable(EFI_VENDOR_LOADER, name, NULL, &i, &is); + r = efi_get_variable_string(EFI_VENDOR_LOADER, name, &j); if (r < 0) return r; - j = utf16_to_utf8(i, is); - if (!j) - return -ENOMEM; - r = safe_atou64(j, &x); if (r < 0) return r; @@ -437,22 +431,16 @@ int efi_get_boot_timestamps(const dual_timestamp *n, dual_timestamp *firmware, d } int efi_get_loader_device_part_uuid(sd_id128_t *u) { - _cleanup_free_ void *s = NULL; _cleanup_free_ char *p = NULL; - size_t ss; int r, parsed[16]; unsigned i; assert(u); - r = efi_get_variable(EFI_VENDOR_LOADER, "LoaderDevicePartUUID", NULL, &s, &ss); + r = efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderDevicePartUUID", &p); if (r < 0) return r; - p = utf16_to_utf8(s, ss); - if (!p) - return -ENOMEM; - if (sscanf(p, "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x", &parsed[0], &parsed[1], &parsed[2], &parsed[3], &parsed[4], &parsed[5], &parsed[6], &parsed[7], -- cgit v1.2.1 From 9db11a99beaf25f6eb948348202a4c783e1d31a6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 22:02:40 +0100 Subject: efi: efi_get_boot_options() should already sort the entries, the random order in the efivars fs is probably not useful This also introduces a new FOREACH_DIRENT macro and makes use of it. --- src/shared/efivars.c | 26 +++++++++++++++++++++----- src/shared/util.c | 3 ++- src/shared/util.h | 15 +++++++++++++-- 3 files changed, 36 insertions(+), 8 deletions(-) diff --git a/src/shared/efivars.c b/src/shared/efivars.c index 064746a9a8..840e4e0c35 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -303,11 +303,22 @@ static int boot_id_hex(const char s[4]) { return id; } +static int cmp_uint16(const void *_a, const void *_b) { + const uint16_t *a = _a, *b = _b; + + if (*a < *b) + return -1; + if (*a > *b) + return 1; + + return 0; +} + int efi_get_boot_options(uint16_t **options) { _cleanup_closedir_ DIR *dir = NULL; struct dirent *de; uint16_t *list = NULL; - int count = 0; + int count = 0, r; assert(options); @@ -315,7 +326,7 @@ int efi_get_boot_options(uint16_t **options) { if (!dir) return -errno; - while ((de = readdir(dir))) { + FOREACH_DIRENT(de, dir, r = -errno; goto fail) { int id; uint16_t *t; @@ -334,17 +345,22 @@ int efi_get_boot_options(uint16_t **options) { t = realloc(list, (count + 1) * sizeof(uint16_t)); if (!t) { - free(list); - return -ENOMEM; + r = -ENOMEM; + goto fail; } list = t; list[count ++] = id; - } + qsort(list, count, sizeof(uint16_t), cmp_uint16); + *options = list; return count; + +fail: + free(list); + return r; } static int read_usec(sd_id128_t vendor, const char *name, usec_t *u) { diff --git a/src/shared/util.c b/src/shared/util.c index d754c836f2..4f0b652f4f 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -1077,6 +1077,7 @@ int get_process_exe(pid_t pid, char **name) { static int get_process_id(pid_t pid, const char *field, uid_t *uid) { _cleanup_fclose_ FILE *f = NULL; _cleanup_free_ char *p = NULL; + char line[LINE_MAX]; assert(field); assert(uid); @@ -1091,7 +1092,7 @@ static int get_process_id(pid_t pid, const char *field, uid_t *uid) { if (!f) return -errno; - FOREACH_LINE(f, line, return -errno) { + FOREACH_LINE(line, f, return -errno) { char *l; l = strstrip(line); diff --git a/src/shared/util.h b/src/shared/util.h index 3ad90ddce4..fcb0d9af17 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -573,11 +573,22 @@ int on_ac_power(void); int search_and_fopen(const char *path, const char *mode, const char **search, FILE **_f); int search_and_fopen_nulstr(const char *path, const char *mode, const char *search, FILE **_f); -#define FOREACH_LINE(f, line, on_error) \ - for (char line[LINE_MAX]; !feof(f); ) \ +#define FOREACH_LINE(line, f, on_error) \ + for (;;) \ if (!fgets(line, sizeof(line), f)) { \ if (ferror(f)) { \ on_error; \ } \ break; \ } else + +#define FOREACH_DIRENT(de, d, on_error) \ + for (errno = 0, de = readdir(d);; errno = 0, de = readdir(d)) \ + if (!de) { \ + if (errno != 0) { \ + on_error; \ + } \ + break; \ + } else if (ignore_file((de)->d_name)) \ + continue; \ + else -- cgit v1.2.1 From 5322bdd4ccc9e8c59b1fdd066f0ba9cb7d091c92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 13 Feb 2013 16:13:56 -0500 Subject: build-sys: fix build without -Wl,--gc-sections bootctl needs libsystemd-daemon.la too. --- Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 2cec04a140..aae3c27d36 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3087,7 +3087,8 @@ bootctl_SOURCES = \ bootctl_LDADD = \ libsystemd-shared.la \ - libsystemd-id128.la + libsystemd-id128.la \ + libsystemd-daemon.la bin_PROGRAMS += \ bootctl -- cgit v1.2.1 From 46ba8aae2b82bc5c87ba347e6bf914ecd5e9d51e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 22:56:43 +0100 Subject: build-sys: make PolicyKit support compile-time optional (was runtime-optional already) --- Makefile.am | 5 ++++- README | 1 + configure.ac | 10 ++++++++++ src/shared/polkit.c | 10 +++++++++- src/shared/spawn-polkit-agent.c | 12 ++++++++++++ 5 files changed, 36 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index aae3c27d36..d73b78ce31 100644 --- a/Makefile.am +++ b/Makefile.am @@ -109,6 +109,7 @@ noinst_LTLIBRARIES = lib_LTLIBRARIES = include_HEADERS = pkgconfiglib_DATA = +polkitpolicy_in_in_files = polkitpolicy_in_files = polkitpolicy_files = dist_udevrules_DATA = @@ -969,7 +970,7 @@ dbusinterface_DATA += \ org.freedesktop.systemd1.Swap.xml \ org.freedesktop.systemd1.Path.xml -polkitpolicy_in_in_files = \ +polkitpolicy_in_in_files += \ src/core/org.freedesktop.systemd1.policy.in.in org.freedesktop.systemd1.%.xml: systemd @@ -3474,9 +3475,11 @@ units/user/%: units/%.m4 Makefile $(AM_V_M4)$(MKDIR_P) $(dir $@) $(AM_V_M4)$(M4) -P $(M4_DEFINES) -DFOR_USER=1 < $< > $@ +if ENABLE_POLKIT nodist_polkitpolicy_DATA = \ $(polkitpolicy_files) \ $(polkitpolicy_in_in_files:.policy.in.in=.policy) +endif EXTRA_DIST += \ $(polkitpolicy_in_files) \ diff --git a/README b/README index 3b248048cc..f20bd38894 100644 --- a/README +++ b/README @@ -61,6 +61,7 @@ REQUIREMENTS: util-linux >= v2.19 (requires fsck -l, agetty -s) sulogin (from util-linux >= 2.22 or sysvinit-tools, optional but recommended) dracut (optional) + PolicyKit (optional) When building from git you need the following additional dependencies: diff --git a/configure.ac b/configure.ac index 4e36dc3dca..228f6969ff 100644 --- a/configure.ac +++ b/configure.ac @@ -626,6 +626,15 @@ if test "x$enable_coredump" != "xno"; then fi AM_CONDITIONAL(ENABLE_COREDUMP, [test "$have_coredump" = "yes"]) +# ------------------------------------------------------------------------------ +have_polkit=no +AC_ARG_ENABLE(polkit, AS_HELP_STRING([--disable-polkit], [disable PolicyKit support])) +if test "x$enable_polkit" != "xno"; then + AC_DEFINE(ENABLE_POLKIT, 1, [Define if PolicyKit support is to be enabled]) + have_polkit=yes +fi +AM_CONDITIONAL(ENABLE_POLKIT, [test "x$have_polkit" = "xyes"]) + # ------------------------------------------------------------------------------ AC_ARG_WITH(rc-local-script-path-start, AS_HELP_STRING([--with-rc-local-script-path-start=PATH], @@ -872,6 +881,7 @@ AC_MSG_RESULT([ timedated: ${have_timedated} localed: ${have_localed} coredump: ${have_coredump} + polkit: ${have_polkit} kmod: ${have_kmod} blkid: ${have_blkid} nss-myhostname: ${have_myhostname} diff --git a/src/shared/polkit.c b/src/shared/polkit.c index 826944585c..cea7074ad3 100644 --- a/src/shared/polkit.c +++ b/src/shared/polkit.c @@ -35,9 +35,10 @@ int verify_polkit( bool *_challenge, DBusError *error) { + +#ifdef ENABLE_POLKIT DBusMessage *m = NULL, *reply = NULL; const char *unix_process = "unix-process", *pid = "pid", *starttime = "start-time", *cancel_id = ""; - const char *sender; uint32_t flags = interactive ? 1 : 0; pid_t pid_raw; uint32_t pid_u32; @@ -46,6 +47,8 @@ int verify_polkit( DBusMessageIter iter_msg, iter_struct, iter_array, iter_dict, iter_variant; int r; dbus_bool_t authorized = FALSE, challenge = FALSE; +#endif + const char *sender; unsigned long ul; assert(c); @@ -63,6 +66,8 @@ int verify_polkit( if (ul == 0) return 1; +#ifdef ENABLE_POLKIT + pid_raw = bus_get_unix_process_id(c, sender, error); if (pid_raw == 0) return -EINVAL; @@ -163,4 +168,7 @@ finish: dbus_message_unref(reply); return r; +#else + return -EPERM; +#endif } diff --git a/src/shared/spawn-polkit-agent.c b/src/shared/spawn-polkit-agent.c index fcb3722ddf..f9e52cdcbd 100644 --- a/src/shared/spawn-polkit-agent.c +++ b/src/shared/spawn-polkit-agent.c @@ -33,6 +33,7 @@ #include "util.h" #include "spawn-polkit-agent.h" +#ifdef ENABLE_POLKIT static pid_t agent_pid = 0; int polkit_agent_open(void) { @@ -84,3 +85,14 @@ void polkit_agent_close(void) { wait_for_terminate(agent_pid, NULL); agent_pid = 0; } + +#else + +int polkit_agent_open(void) { + return 0; +} + +void polkit_agent_close(void) { +} + +#endif -- cgit v1.2.1 From b872e9a05939bc3e0ac95a042592506a7488dd6f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 23:07:59 +0100 Subject: build-sys: make EFI support build-time optional --- Makefile.am | 18 ++++++++++++++---- configure.ac | 10 ++++++++++ src/core/manager.c | 2 ++ src/core/mount-setup.c | 2 ++ src/shared/efivars.c | 4 ++++ 5 files changed, 32 insertions(+), 4 deletions(-) diff --git a/Makefile.am b/Makefile.am index d73b78ce31..65294a56a9 100644 --- a/Makefile.am +++ b/Makefile.am @@ -295,8 +295,7 @@ rootlibexec_PROGRAMS = \ systemgenerator_PROGRAMS = \ systemd-getty-generator \ systemd-fstab-generator \ - systemd-system-update-generator \ - systemd-efi-boot-generator + systemd-system-update-generator dist_bin_SCRIPTS = \ src/analyze/systemd-analyze @@ -1002,8 +1001,7 @@ noinst_PROGRAMS += \ test-cgroup \ test-install \ test-watchdog \ - test-log \ - test-efivars + test-log noinst_tests += \ test-job-type \ @@ -1071,11 +1069,16 @@ test_hostname_SOURCES = \ test_hostname_LDADD = \ libsystemd-core.la +if ENABLE_EFI +noinst_PROGRAMS += \ + test-efivars + test_efivars_SOURCES = \ src/test/test-efivars.c test_efivars_LDADD = \ libsystemd-shared.la +endif test_unit_name_SOURCES = \ src/test/test-unit-name.c @@ -1410,12 +1413,17 @@ systemd_system_update_generator_LDADD = \ libsystemd-shared.la # ------------------------------------------------------------------------------ +if ENABLE_EFI +systemgenerator_PROGRAMS += \ + systemd-efi-boot-generator + systemd_efi_boot_generator_SOURCES = \ src/efi-boot-generator/efi-boot-generator.c systemd_efi_boot_generator_LDADD = \ libsystemd-label.la \ libsystemd-shared.la +endif # ------------------------------------------------------------------------------ systemd_rc_local_generator_SOURCES = \ @@ -3079,6 +3087,7 @@ EXTRA_DIST += \ units/systemd-timedated.service.in # ------------------------------------------------------------------------------ +if ENABLE_EFI bootctl_SOURCES = \ src/boot/boot.h \ src/boot/boot-loader.h \ @@ -3093,6 +3102,7 @@ bootctl_LDADD = \ bin_PROGRAMS += \ bootctl +endif # ------------------------------------------------------------------------------ if HAVE_MYHOSTNAME diff --git a/configure.ac b/configure.ac index 228f6969ff..834b12314c 100644 --- a/configure.ac +++ b/configure.ac @@ -635,6 +635,15 @@ if test "x$enable_polkit" != "xno"; then fi AM_CONDITIONAL(ENABLE_POLKIT, [test "x$have_polkit" = "xyes"]) +# ------------------------------------------------------------------------------ +have_efi=no +AC_ARG_ENABLE(efi, AS_HELP_STRING([--disable-efi], [disable EFI support])) +if test "x$enable_efi" != "xno"; then + AC_DEFINE(ENABLE_EFI, 1, [Define if EFI support is to be enabled]) + have_efi=yes +fi +AM_CONDITIONAL(ENABLE_EFI, [test "x$have_efi" = "xyes"]) + # ------------------------------------------------------------------------------ AC_ARG_WITH(rc-local-script-path-start, AS_HELP_STRING([--with-rc-local-script-path-start=PATH], @@ -882,6 +891,7 @@ AC_MSG_RESULT([ localed: ${have_localed} coredump: ${have_coredump} polkit: ${have_polkit} + efi: ${have_efi} kmod: ${have_kmod} blkid: ${have_blkid} nss-myhostname: ${have_myhostname} diff --git a/src/core/manager.c b/src/core/manager.c index bd49892cd4..28f169daab 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -309,7 +309,9 @@ int manager_new(SystemdRunningAs running_as, Manager **_m) { dual_timestamp_get(&m->userspace_timestamp); dual_timestamp_from_monotonic(&m->kernel_timestamp, 0); +#ifdef ENABLE_EFI efi_get_boot_timestamps(&m->userspace_timestamp, &m->firmware_timestamp, &m->loader_timestamp); +#endif m->running_as = running_as; m->name_data_slot = m->conn_data_slot = m->subscribed_data_slot = -1; diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index 2cd0b60ba7..e7e2736615 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -77,8 +77,10 @@ static const MountPoint mount_table[] = { NULL, MNT_FATAL|MNT_IN_CONTAINER }, { "securityfs", "/sys/kernel/security", "securityfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_NONE }, +#ifdef ENABLE_EFI { "efivarfs", "/sys/firmware/efi/efivars", "efivarfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, is_efi_boot, MNT_NONE }, +#endif { "tmpfs", "/dev/shm", "tmpfs", "mode=1777", MS_NOSUID|MS_NODEV|MS_STRICTATIME, NULL, MNT_FATAL|MNT_IN_CONTAINER }, { "devpts", "/dev/pts", "devpts", "mode=620,gid=" STRINGIFY(TTY_GID), MS_NOSUID|MS_NOEXEC, diff --git a/src/shared/efivars.c b/src/shared/efivars.c index 840e4e0c35..8494f37729 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -28,6 +28,8 @@ #include "utf8.h" #include "efivars.h" +#ifdef ENABLE_EFI + bool is_efi_boot(void) { return access("/sys/firmware/efi", F_OK) >= 0; } @@ -469,3 +471,5 @@ int efi_get_loader_device_part_uuid(sd_id128_t *u) { return 0; } + +#endif -- cgit v1.2.1 From 93eec5c774336ff6da2ef30c7f41cdb4d9de5494 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 Feb 2013 23:08:52 +0100 Subject: update TODO --- TODO | 3 --- 1 file changed, 3 deletions(-) diff --git a/TODO b/TODO index 84105779bc..b89e3eabfb 100644 --- a/TODO +++ b/TODO @@ -85,13 +85,10 @@ Features: * EFI: - fsck hookup for the ESP mount is missing - write man page for efi boot generator - - add configure switch for enabling/disabling efi stuff - honor language efi variables for default language selection (if there are any?) - honor timezone efi variables for default timezone selection (if there are any?) - introduce bootctl (backed by systemd-bootd) to control temporary and persistent default boot goal plus efi variables -* polkit: add configure switch to enable/disable polkit client side code - * maybe do not install getty@tty1.service symlink in /etc but in /usr? * re-enable "make check" for gtk-doc (broken for unknown reason) -- cgit v1.2.1 From cdf3f17bfb20eac2929c8b6a582b988b790f071d Mon Sep 17 00:00:00 2001 From: Marc-Antoine Perennou Date: Thu, 31 Jan 2013 09:49:35 +0100 Subject: dbus: import struct unit_info from systemctl Signed-off-by: Marc-Antoine Perennou --- src/shared/dbus-common.h | 13 +++++++++++++ src/systemctl/systemctl.c | 13 ------------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/shared/dbus-common.h b/src/shared/dbus-common.h index e141c9ec90..800c0ea23a 100644 --- a/src/shared/dbus-common.h +++ b/src/shared/dbus-common.h @@ -199,6 +199,19 @@ int bus_parse_strv(DBusMessage *m, char ***_l); int bus_parse_strv_iter(DBusMessageIter *iter, char ***_l); int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l); +struct unit_info { + const char *id; + const char *description; + const char *load_state; + const char *active_state; + const char *sub_state; + const char *following; + const char *unit_path; + uint32_t job_id; + const char *job_type; + const char *job_path; +}; + int bus_append_strv_iter(DBusMessageIter *iter, char **l); int bus_iter_get_basic_and_next(DBusMessageIter *iter, int type, void *data, bool next); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 5deacbf36b..0d1be19862 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -275,19 +275,6 @@ static bool avoid_bus(void) { return false; } -struct unit_info { - const char *id; - const char *description; - const char *load_state; - const char *active_state; - const char *sub_state; - const char *following; - const char *unit_path; - uint32_t job_id; - const char *job_type; - const char *job_path; -}; - static int compare_unit_info(const void *a, const void *b) { const char *d1, *d2; const struct unit_info *u = a, *v = b; -- cgit v1.2.1 From ddb88cc5b8c5896fc30a86397da6d7e14160801b Mon Sep 17 00:00:00 2001 From: Marc-Antoine Perennou Date: Thu, 31 Jan 2013 09:50:21 +0100 Subject: dbus: introduce parse_unit_info Signed-off-by: Marc-Antoine Perennou --- src/shared/dbus-common.c | 28 ++++++++++++++++++++++++++++ src/shared/dbus-common.h | 2 ++ 2 files changed, 30 insertions(+) diff --git a/src/shared/dbus-common.c b/src/shared/dbus-common.c index 50891a8ade..2769b2c882 100644 --- a/src/shared/dbus-common.c +++ b/src/shared/dbus-common.c @@ -988,6 +988,34 @@ int bus_parse_strv_pairs_iter(DBusMessageIter *iter, char ***_l) { return 0; } +int bus_parse_unit_info(DBusMessageIter *iter, struct unit_info *u) { + DBusMessageIter sub; + + assert(iter); + assert(u); + + if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_STRUCT) + return -EINVAL; + + dbus_message_iter_recurse(iter, &sub); + + if (bus_iter_get_basic_and_next(&sub, DBUS_TYPE_STRING, &u->id, true) < 0 || + bus_iter_get_basic_and_next(&sub, DBUS_TYPE_STRING, &u->description, true) < 0 || + bus_iter_get_basic_and_next(&sub, DBUS_TYPE_STRING, &u->load_state, true) < 0 || + bus_iter_get_basic_and_next(&sub, DBUS_TYPE_STRING, &u->active_state, true) < 0 || + bus_iter_get_basic_and_next(&sub, DBUS_TYPE_STRING, &u->sub_state, true) < 0 || + bus_iter_get_basic_and_next(&sub, DBUS_TYPE_STRING, &u->following, true) < 0 || + bus_iter_get_basic_and_next(&sub, DBUS_TYPE_OBJECT_PATH, &u->unit_path, true) < 0 || + bus_iter_get_basic_and_next(&sub, DBUS_TYPE_UINT32, &u->job_id, true) < 0 || + bus_iter_get_basic_and_next(&sub, DBUS_TYPE_STRING, &u->job_type, true) < 0 || + bus_iter_get_basic_and_next(&sub, DBUS_TYPE_OBJECT_PATH, &u->job_path, false) < 0) { + log_error("Failed to parse reply."); + return -EIO; + } + + return 0; +} + int bus_append_strv_iter(DBusMessageIter *iter, char **l) { DBusMessageIter sub; diff --git a/src/shared/dbus-common.h b/src/shared/dbus-common.h index 800c0ea23a..f7f614cdcd 100644 --- a/src/shared/dbus-common.h +++ b/src/shared/dbus-common.h @@ -212,6 +212,8 @@ struct unit_info { const char *job_path; }; +int bus_parse_unit_info(DBusMessageIter *iter, struct unit_info *u); + int bus_append_strv_iter(DBusMessageIter *iter, char **l); int bus_iter_get_basic_and_next(DBusMessageIter *iter, int type, void *data, bool next); -- cgit v1.2.1 From a38694df9c49cb8953e444ff94b1d78239347dfe Mon Sep 17 00:00:00 2001 From: Marc-Antoine Perennou Date: Thu, 31 Jan 2013 09:57:25 +0100 Subject: systemctl: use parse_unit_info Signed-off-by: Marc-Antoine Perennou --- src/systemctl/systemctl.c | 54 +++++++++++------------------------------------ 1 file changed, 12 insertions(+), 42 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 0d1be19862..54c8ebc363 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -435,7 +435,7 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) { static int list_units(DBusConnection *bus, char **args) { _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; _cleanup_free_ struct unit_info *unit_infos = NULL; - DBusMessageIter iter, sub, sub2; + DBusMessageIter iter, sub; unsigned c = 0, n_units = 0; int r; @@ -465,8 +465,6 @@ static int list_units(DBusConnection *bus, char **args) { while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { struct unit_info *u; - assert(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_STRUCT); - if (c >= n_units) { struct unit_info *w; @@ -480,21 +478,7 @@ static int list_units(DBusConnection *bus, char **args) { u = unit_infos + c; - dbus_message_iter_recurse(&sub, &sub2); - - if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &u->id, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &u->description, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &u->load_state, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &u->active_state, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &u->sub_state, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &u->following, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &u->unit_path, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_UINT32, &u->job_id, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &u->job_type, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &u->job_path, false) < 0) { - log_error("Failed to parse reply."); - return -EIO; - } + bus_parse_unit_info(&sub, u); dbus_message_iter_next(&sub); c++; @@ -966,19 +950,19 @@ static int dot_one_property(const char *name, const char *prop, DBusMessageIter return 0; } -static int dot_one(DBusConnection *bus, const char *name, const char *path) { +static int dot_one(DBusConnection *bus, const struct unit_info *u) { _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; const char *interface = "org.freedesktop.systemd1.Unit"; int r; DBusMessageIter iter, sub, sub2, sub3; assert(bus); - assert(path); + assert(u); r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", - path, + u->unit_path, "org.freedesktop.DBus.Properties", "GetAll", &reply, @@ -1010,7 +994,7 @@ static int dot_one(DBusConnection *bus, const char *name, const char *path) { } dbus_message_iter_recurse(&sub2, &sub3); - r = dot_one_property(name, prop, &sub3); + r = dot_one_property(u->id, prop, &sub3); if (r < 0) return r; @@ -1022,7 +1006,7 @@ static int dot_one(DBusConnection *bus, const char *name, const char *path) { static int dot(DBusConnection *bus, char **args) { _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; - DBusMessageIter iter, sub, sub2; + DBusMessageIter iter, sub; int r; r = bus_method_call_with_reply( @@ -1048,31 +1032,17 @@ static int dot(DBusConnection *bus, char **args) { dbus_message_iter_recurse(&iter, &sub); while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { - const char *id, *description, *load_state, *active_state, *sub_state, *following, *unit_path; - - if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) { - log_error("Failed to parse reply."); - return -EIO; - } + struct unit_info u; - dbus_message_iter_recurse(&sub, &sub2); - - if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &id, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &description, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &load_state, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &active_state, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &sub_state, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &following, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &unit_path, true) < 0) { - log_error("Failed to parse reply."); + r = bus_parse_unit_info(&sub, &u); + if (r < 0) return -EIO; - } - r = dot_one(bus, id, unit_path); + r = dot_one(bus, &u); if (r < 0) return r; - /* printf("\t\"%s\";\n", id); */ + /* printf("\t\"%s\";\n", u.id); */ dbus_message_iter_next(&sub); } -- cgit v1.2.1 From 2265fbf7e5614e9a9e5272937219181290f86e07 Mon Sep 17 00:00:00 2001 From: Simon Peeters Date: Wed, 6 Feb 2013 15:21:03 +0100 Subject: systemd-analyze: rewrite in C. Written by Peeters Simon . Makefile stuff and cleaned up a bit by Auke Kok . Some code inspired by Marc-Antoine Perennou . --- Makefile.am | 21 +- src/analyze/systemd-analyze.c | 624 +++++++++++++++++++++++++++++++++++++++++ src/analyze/systemd-analyze.in | 328 ---------------------- 3 files changed, 634 insertions(+), 339 deletions(-) create mode 100644 src/analyze/systemd-analyze.c delete mode 100755 src/analyze/systemd-analyze.in diff --git a/Makefile.am b/Makefile.am index 65294a56a9..403439b6eb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -267,7 +267,8 @@ rootbin_PROGRAMS = \ systemd-ask-password \ systemd-tty-ask-password-agent \ systemd-tmpfiles \ - systemd-machine-id-setup + systemd-machine-id-setup \ + systemd-analyze bin_PROGRAMS = \ systemd-cgls \ @@ -297,14 +298,16 @@ systemgenerator_PROGRAMS = \ systemd-fstab-generator \ systemd-system-update-generator -dist_bin_SCRIPTS = \ - src/analyze/systemd-analyze +systemd_analyze_SOURCES = \ + src/analyze/systemd-analyze.c -EXTRA_DIST += \ - src/analyze/systemd-analyze.in +systemd_analyze_CFLAGS = \ + $(AM_CFLAGS) \ + $(DBUS_CFLAGS) -CLEANFILES += \ - src/analyze/systemd-analyze +systemd_analyze_LDADD = \ + libsystemd-shared.la \ + libsystemd-dbus.la dist_bashcompletion_DATA = \ shell-completion/systemd-bash-completion.sh @@ -3465,10 +3468,6 @@ src/%.policy.in: src/%.policy.in.in Makefile $(SED_PROCESS) $(AM_V_GEN)chmod +x $@ -src/analyze/systemd-analyze: %: %.in Makefile - $(SED_PROCESS) - $(AM_V_GEN)chmod +x $@ - src/%.c: src/%.gperf $(AM_V_at)$(MKDIR_P) $(dir $@) $(AM_V_GPERF)$(GPERF) < $< > $@ diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c new file mode 100644 index 0000000000..1ea56c6896 --- /dev/null +++ b/src/analyze/systemd-analyze.c @@ -0,0 +1,624 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2010 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include +#include +#include +#include + +#include "install.h" +#include "log.h" +#include "dbus-common.h" +#include "build.h" +#include "util.h" +#include "strxcpyx.h" + +#define compare(a, b) (((a) > (b))? 1 : (((b) > (a))? -1 : 0)) +#define svg(...) printf(__VA_ARGS__) +#define svg_bar(class, x1, x2, y) \ + svg(" \n", \ + (class), \ + scale_x * (x1), scale_y * (y), \ + scale_x * ((x2) - (x1)), scale_y - 1.0) +#define svg_text(x, y, format, ...) do {\ + svg(" ", scale_x * (x) + 5.0, scale_y * (y) + 14.0); \ + svg(format, ## __VA_ARGS__); \ + svg("\n"); \ + } while(false) + +static UnitFileScope arg_scope = UNIT_FILE_SYSTEM; + +double scale_x = 0.1; // pixels per ms +double scale_y = 20.0; + +struct boot_times { + uint64_t firmware_time; + uint64_t loader_time; + uint64_t kernel_time; + uint64_t kernel_done_time; + uint64_t initrd_time; + uint64_t userspace_time; + uint64_t finish_time; +}; +struct unit_times { + char *name; + uint64_t ixt; + uint64_t iet; + uint64_t axt; + uint64_t aet; + uint64_t time; +}; + +static int bus_get_uint64_property (DBusConnection *bus, const char *path, const char *interface, const char *property, uint64_t *val) +{ + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + int r; + DBusMessageIter iter, sub; + + r = bus_method_call_with_reply ( + bus, + "org.freedesktop.systemd1", + path, + "org.freedesktop.DBus.Properties", + "Get", + &reply, + NULL, + DBUS_TYPE_STRING, &interface, + DBUS_TYPE_STRING, &property, + DBUS_TYPE_INVALID); + if (r < 0) + return r; + + if (!dbus_message_iter_init(reply, &iter) || + dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT) { + log_error("Failed to parse reply."); + return -EIO; + } + + dbus_message_iter_recurse(&iter, &sub); + + if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_UINT64) { + log_error("Failed to parse reply."); + return -EIO; + } + + dbus_message_iter_get_basic(&sub, val); + + return 0; +} + +static int compare_unit_time(const void *a, const void *b) +{ + return compare(((struct unit_times *)b)->time, + ((struct unit_times *)a)->time); +} + +static int compare_unit_start(const void *a, const void *b) +{ + return compare(((struct unit_times *)a)->ixt, + ((struct unit_times *)b)->ixt); +} + +static char *get_os_name(void) +{ + char *n = NULL; + + parse_env_file("/etc/os-release", NEWLINE, "PRETTY_NAME", &n, NULL); + return n; +} + +static int acquire_time_data(DBusConnection *bus, struct unit_times **out) +{ + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + DBusMessageIter iter, sub; + int r, c = 0, n_units = 0; + struct unit_times *unit_times = NULL; + + r = bus_method_call_with_reply ( + bus, + "org.freedesktop.systemd1", + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + "ListUnits", + &reply, + NULL, + DBUS_TYPE_INVALID); + if (r) + goto fail; + + if (!dbus_message_iter_init(reply, &iter) || + dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || + dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) { + log_error("Failed to parse reply."); + r = -EIO; + goto fail; + } + + for (dbus_message_iter_recurse(&iter, &sub); + dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID; + dbus_message_iter_next(&sub)) { + struct unit_info u; + struct unit_times *t; + + if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) { + log_error("Failed to parse reply."); + r = -EIO; + goto fail; + } + + if (c >= n_units) { + struct unit_times *w; + + n_units = MAX(2*c, 16); + w = realloc(unit_times, sizeof(struct unit_times) * n_units); + + if (!w) { + r = log_oom(); + goto fail; + } + + unit_times = w; + } + t = unit_times+c; + t->name = NULL; + + r = bus_parse_unit_info(&sub, &u); + if (r < 0) + goto fail; + + if (bus_get_uint64_property(bus, u.unit_path, + "org.freedesktop.systemd1.Unit", + "InactiveExitTimestampMonotonic", + &t->ixt) < 0 || + bus_get_uint64_property(bus, u.unit_path, + "org.freedesktop.systemd1.Unit", + "ActiveEnterTimestampMonotonic", + &t->aet) < 0 || + bus_get_uint64_property(bus, u.unit_path, + "org.freedesktop.systemd1.Unit", + "ActiveExitTimestampMonotonic", + &t->axt) < 0 || + bus_get_uint64_property(bus, u.unit_path, + "org.freedesktop.systemd1.Unit", + "InactiveEnterTimestampMonotonic", + &t->iet) < 0) { + r = -EIO; + goto fail; + } + + t->iet /= 1000; + t->ixt /= 1000; + t->aet /= 1000; + t->axt /= 1000; + + if (t->aet >= t->ixt) + t->time = t->aet - t->ixt; + else if (t->iet >= t->ixt) + t->time = t->iet - t->ixt; + else + t->time = 0; + + if (t->ixt == 0) + continue; + + t->name = strdup(u.id); + if (t->name == NULL) { + r = log_oom(); + goto fail; + } + c++; + } + + *out = unit_times; + return c; +fail: + for (; c >= 0; c--) + free(unit_times[c].name); + free(unit_times); + return r; +} + +static struct boot_times *acquire_boot_times(DBusConnection *bus) +{ + static struct boot_times times; + static bool cached = false; + if (cached) + return × + + if (bus_get_uint64_property(bus, + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + "FirmwareTimestampMonotonic", + ×.firmware_time) < 0 || + bus_get_uint64_property(bus, + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + "LoaderTimestampMonotonic", + ×.loader_time) < 0 || + bus_get_uint64_property(bus, + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + "KernelTimestamp", + ×.kernel_time) < 0 || + bus_get_uint64_property(bus, + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + "InitRDTimestampMonotonic", + ×.initrd_time) < 0 || + bus_get_uint64_property(bus, + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + "UserspaceTimestampMonotonic", + ×.userspace_time) < 0 || + bus_get_uint64_property(bus, + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + "FinishTimestampMonotonic", + ×.finish_time) < 0) + return NULL; + + if (!times.finish_time) { + log_error("Bootup is not yet finished. Please try again later."); + return NULL; + } + + times.firmware_time /= 1000; + times.loader_time /= 1000; + times.initrd_time /= 1000; + times.userspace_time /= 1000; + times.finish_time /= 1000; + + if (times.initrd_time) + times.kernel_done_time = times.initrd_time; + else + times.kernel_done_time = times.userspace_time; + + cached = true; + return × +} + +static char *pretty_boot_time(DBusConnection *bus) +{ + struct boot_times *t; + size_t size = 4096; + static char buf[4096]; + char *ptr = buf; + + t = acquire_boot_times(bus); + if (!t) + return NULL; + + size = strpcpyf(&ptr, size, "Startup finished in "); + if (t->firmware_time) + size = strpcpyf(&ptr, size, "%llums (firmware) + ", (unsigned long long)(t->firmware_time - t->loader_time)); + if (t->loader_time) + size = strpcpyf(&ptr, size, "%llums (loader) + ", (unsigned long long)t->loader_time); + if (t->kernel_time) + size = strpcpyf(&ptr, size, "%llums (kernel) + ", (unsigned long long)t->kernel_done_time); + if (t->initrd_time > 0) + size = strpcpyf(&ptr, size, "%llums (initrd) + ", (unsigned long long)(t->userspace_time - t->initrd_time)); + + size = strpcpyf(&ptr, size, "%llums (userspace) ", (unsigned long long)(t->finish_time - t->userspace_time)); + if (t->kernel_time > 0) + size = strpcpyf(&ptr, size, "= %llums", (unsigned long long)(t->firmware_time + t->finish_time)); + else + size = strpcpyf(&ptr, size, "= %llums", (unsigned long long)(t->finish_time - t->userspace_time)); + + return buf; +} + +static void svg_graph_box(int height, int64_t begin, int64_t end) +{ + /* outside box, fill */ + svg("\n", + scale_x * (end - begin), scale_y * height); + + for (int i = (begin / 100) * 100; i <= end; i+=100) { + /* lines for each second */ + if (i % 5000 == 0) + svg(" \n" + " %.01fs\n", + scale_x * i, scale_x * i, scale_y * height, scale_x * i, -5.0, 0.001 * i); + else if (i % 1000 == 0) + svg(" \n" + " %.01fs\n", + scale_x * i, scale_x * i, scale_y * height, scale_x * i, -5.0, 0.001 * i); + else + svg(" \n", + scale_x * i, scale_x * i, scale_y * height); + } +} + +static int analyze_plot(DBusConnection *bus) +{ + struct unit_times *times; + struct boot_times *boot; + struct utsname name; + int n, m = 1, y=0; + double width; + char *osname; + char *pretty_times; + + boot = acquire_boot_times(bus); + if (!boot) + return -EIO; + pretty_times = pretty_boot_time(bus); + if (!pretty_times) + return -EIO; + + osname = get_os_name(); + + n = uname(&name); + if (n < 0) { + log_error("Cannot get system name: %m"); + return -errno; + } + + n = acquire_time_data(bus, ×); + if (n<=0) + return n; + + qsort(times, n, sizeof(struct unit_times), compare_unit_start); + + width = scale_x * (boot->firmware_time + boot->finish_time); + if (width < 800.0) + width = 800.0; + + if (boot->firmware_time > boot->loader_time) + m++; + if (boot->loader_time) { + m++; + if (width < 1000.0) + width = 1000.0; + } + if (boot->initrd_time) + m++; + if (boot->kernel_time) + m++; + + for (struct unit_times *u = times; u < times + n; u++) { + double len; + if (u->ixt < boot->userspace_time || + u->ixt > boot->finish_time) { + free(u->name); + u->name = NULL; + continue; + } + len = ((boot->firmware_time + u->ixt) * scale_x) + + (10.0 * strlen(u->name)); + if (len > width) + width = len; + + if (u->iet > u->ixt && u->iet <= boot->finish_time + && u->aet == 0 && u->axt == 0) + u->aet = u->axt = u->iet; + if (u->aet < u->ixt || u->aet > boot->finish_time) + u->aet = boot->finish_time; + if (u->axt < u->aet || u->aet > boot->finish_time) + u->axt = boot->finish_time; + if (u->iet < u->axt || u->iet > boot->finish_time) + u->iet = boot->finish_time; + m++; + } + + svg("\n" + "\n"); + + svg("\n\n", + 80.0 + width, 150.0 + (m * scale_y)); + + /* write some basic info as a comment, including some help */ + svg("\n" + "\n" + "\n" + "\n" + "\n\n" + "\n\n", VERSION); + + /* style sheet */ + svg("\n \n\n\n"); + + svg("%s", pretty_times); + svg("%s %s (%s %s) %s", + isempty(osname)? "Linux" : osname, + name.nodename, name.release, name.version, name.machine); + svg("Legend: Red = Activating; Pink = Active; Dark Pink = Deactivating", + 120.0 + (m *scale_y)); + + svg("\n", 20.0 + (scale_x * boot->firmware_time)); + svg_graph_box(m, -boot->firmware_time, boot->finish_time); + + if (boot->firmware_time) { + svg_bar("firmware", -(int64_t) boot->firmware_time, -(int64_t) boot->loader_time, y); + svg_text(-(int64_t) boot->firmware_time, y, "firmware"); + y++; + } + if (boot->loader_time) { + svg_bar("loader", -(int64_t) boot->loader_time, 0, y); + svg_text(-(int64_t) boot->loader_time, y, "loader"); + y++; + } + if (boot->kernel_time) { + svg_bar("kernel", 0, boot->kernel_done_time, y); + svg_text(0, y, "kernel"); + y++; + } + if (boot->initrd_time) { + svg_bar("initrd", boot->initrd_time, boot->userspace_time, y); + svg_text(boot->initrd_time, y, "initrd"); + y++; + } + svg_bar("userspace", boot->userspace_time, boot->finish_time, y); + svg_text(boot->userspace_time, y, "userspace"); + y++; + + for (struct unit_times *u = times; u < times + n; u++) { + if (!u->name) + continue; + svg_bar("activating", u->ixt, u->aet, y); + svg_bar("active", u->aet, u->axt, y); + svg_bar("deactivating", u->axt, u->iet, y); + svg_text(u->ixt, y, u->time? "%s (%llums)" : "%s", u->name, (unsigned long long)u->time); + y++; + } + svg("\n\n"); + + svg(""); + return 0; +} + +static int analyze_blame(DBusConnection *bus) +{ + struct unit_times *times; + int n = acquire_time_data(bus, ×); + if (n<=0) + return n; + + qsort(times, n, sizeof(struct unit_times), compare_unit_time); + + for (int i = 0; i < n; i++) { + if (times[i].time) + printf("%6llums %s\n", (unsigned long long)times[i].time, times[i].name); + } + return 0; +} + +static int analyze_time(DBusConnection *bus) +{ + char *buf; + buf = pretty_boot_time(bus); + if (!buf) + return -EIO; + if (puts(buf) == EOF) + return -errno; + return 0; +} + +static void analyze_help(void) +{ + printf("%s [OPTIONS...] {COMMAND} ...\n\n" + "Process systemd profiling information\n\n" + " -h --help Show this help\n" + " --version Show package version\n" + " --system Connect to system manager\n" + " --user Connect to user service manager\n\n" + "Commands:\n" + " time print time spent in the kernel before reaching userspace\n" + " blame print list of running units ordered by time to init\n" + " plot output SVG graphic showing service initialization\n\n", + program_invocation_short_name); +} + +static int parse_argv(int argc, char *argv[]) +{ + enum { + ARG_VERSION = 0x100, + ARG_USER, + ARG_SYSTEM + }; + + static const struct option options[] = { + { "help", no_argument, NULL, 'h' }, + { "version", no_argument, NULL, ARG_VERSION }, + { "user", no_argument, NULL, ARG_USER }, + { "system", no_argument, NULL, ARG_SYSTEM }, + { NULL, 0, NULL, 0 } + }; + + assert(argc >= 0); + assert(argv); + + while (true) { + switch (getopt_long(argc, argv, "h", options, NULL)) { + case 'h': + analyze_help(); + return 0; + case ARG_VERSION: + puts(PACKAGE_STRING "\n" SYSTEMD_FEATURES); + return 0; + case ARG_USER: + arg_scope = UNIT_FILE_USER; + break; + case ARG_SYSTEM: + arg_scope = UNIT_FILE_SYSTEM; + break; + case -1: + return 1; + case '?': + return -EINVAL; + default: + assert_not_reached("Unhandled option"); + } + } +} + +int main(int argc, char *argv[]) { + int r; + DBusConnection *bus = NULL; + + setlocale(LC_ALL, ""); + log_parse_environment(); + log_open(); + + r = parse_argv(argc, argv); + if (r == 0) + return 0; + if (r < 0) + return 1; + + bus = dbus_bus_get(arg_scope == UNIT_FILE_SYSTEM ? DBUS_BUS_SYSTEM : DBUS_BUS_SESSION, NULL); + if (!bus) + return 1; + + if (!argv[optind] || streq(argv[optind], "time")) + r = analyze_time(bus); + else if (streq(argv[optind], "blame")) + r = analyze_blame(bus); + else if (streq(argv[optind], "plot")) + r = analyze_plot(bus); + else + log_error("Unknown operation '%s'.", argv[optind]); + + dbus_connection_unref(bus); + if (r) + return 1; + return 0; +} diff --git a/src/analyze/systemd-analyze.in b/src/analyze/systemd-analyze.in deleted file mode 100755 index e964bb3367..0000000000 --- a/src/analyze/systemd-analyze.in +++ /dev/null @@ -1,328 +0,0 @@ -#!@PYTHON_BINARY@ -# -*-python-*- - -# This file is part of systemd. -# -# Copyright 2010-2013 Lennart Poettering -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. -# -# systemd is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# Lesser General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with systemd; If not, see . - -import sys, os -import argparse -from gi.repository import Gio -try: - import cairo -except ImportError: - cairo = None - -def acquire_time_data(): - manager = Gio.DBusProxy.new_for_bus_sync(bus, Gio.DBusProxyFlags.NONE, - None, 'org.freedesktop.systemd1', '/org/freedesktop/systemd1', 'org.freedesktop.systemd1.Manager', None) - units = manager.ListUnits() - - l = [] - - for i in units: - if i[5] != "": - continue - - properties = Gio.DBusProxy.new_for_bus_sync(bus, Gio.DBusProxyFlags.NONE, - None, 'org.freedesktop.systemd1', i[6], 'org.freedesktop.DBus.Properties', None) - - ixt = properties.Get('(ss)', 'org.freedesktop.systemd1.Unit', 'InactiveExitTimestampMonotonic') - aet = properties.Get('(ss)', 'org.freedesktop.systemd1.Unit', 'ActiveEnterTimestampMonotonic') - axt = properties.Get('(ss)', 'org.freedesktop.systemd1.Unit', 'ActiveExitTimestampMonotonic') - iet = properties.Get('(ss)', 'org.freedesktop.systemd1.Unit', 'InactiveEnterTimestampMonotonic') - - l.append((str(i[0]), ixt, aet, axt, iet)) - - return l - -def acquire_start_time(): - properties = Gio.DBusProxy.new_for_bus_sync(bus, Gio.DBusProxyFlags.NONE, - None, 'org.freedesktop.systemd1', '/org/freedesktop/systemd1', 'org.freedesktop.DBus.Properties', None) - - # Note that the firmware/loader times are returned as positive - # values but are actually considered negative from the point - # in time of kernel initialization. Also, the monotonic kernel - # time will always be 0 since that's the epoch of the - # monotonic clock. Since we want to know whether the kernel - # timestamp is set at all we will instead ask for the realtime - # clock for this timestamp. - - firmware_time = properties.Get('(ss)', 'org.freedesktop.systemd1.Manager', 'FirmwareTimestampMonotonic') - loader_time = properties.Get('(ss)', 'org.freedesktop.systemd1.Manager', 'LoaderTimestampMonotonic') - kernel_time = properties.Get('(ss)', 'org.freedesktop.systemd1.Manager', 'KernelTimestamp') - initrd_time = properties.Get('(ss)', 'org.freedesktop.systemd1.Manager', 'InitRDTimestampMonotonic') - userspace_time = properties.Get('(ss)', 'org.freedesktop.systemd1.Manager', 'UserspaceTimestampMonotonic') - finish_time = properties.Get('(ss)', 'org.freedesktop.systemd1.Manager', 'FinishTimestampMonotonic') - - if finish_time == 0: - sys.exit("Bootup is not yet finished. Please try again later.") - - assert firmware_time >= loader_time - assert initrd_time <= userspace_time - assert userspace_time <= finish_time - - return firmware_time, loader_time, kernel_time, initrd_time, userspace_time, finish_time - -def draw_box(context, j, k, l, m, r = 0, g = 0, b = 0): - context.save() - context.set_source_rgb(r, g, b) - context.rectangle(j, k, l, m) - context.fill() - context.restore() - -def draw_text(context, x, y, text, size = 12, r = 0, g = 0, b = 0, vcenter = 0.5, hcenter = 0.5): - context.save() - - context.set_source_rgb(r, g, b) - context.select_font_face("Sans", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL) - context.set_font_size(size) - - if vcenter or hcenter: - x_bearing, y_bearing, width, height = context.text_extents(text)[:4] - - if hcenter: - x = x - width*hcenter - x_bearing - - if vcenter: - y = y - height*vcenter - y_bearing - - context.move_to(x, y) - context.show_text(text) - - context.restore() - -def time(): - - firmware_time, loader_time, kernel_time, initrd_time, userspace_time, finish_time = acquire_start_time() - - sys.stdout.write("Startup finished in ") - - if firmware_time > 0: - sys.stdout.write("%lums (firmware) + " % ((firmware_time - loader_time) / 1000)) - if loader_time > 0: - sys.stdout.write("%lums (loader) + " % (loader_time / 1000)) - if initrd_time > 0: - sys.stdout.write("%lums (kernel) + %lums (initrd) + " % (initrd_time / 1000, (userspace_time - initrd_time) / 1000)) - elif kernel_time > 0: - sys.stdout.write("%lums (kernel) + " % (userspace_time / 1000)) - - sys.stdout.write("%lums (userspace) " % ((finish_time - userspace_time) / 1000)) - - if kernel_time > 0: - sys.stdout.write("= %lums\n" % ((firmware_time + finish_time) / 1000)) - else: - sys.stdout.write("= %lums\n" % ((finish_time - userspace_time) / 1000)) - -def blame(): - - data = acquire_time_data() - s = sorted(data, key = lambda i: i[2] - i[1], reverse = True) - - for name, ixt, aet, axt, iet in s: - - if ixt <= 0 or aet <= 0: - continue - - if aet <= ixt: - continue - - sys.stdout.write("%6lums %s\n" % ((aet - ixt) / 1000, name)) - -def plot(): - if cairo is None: - sys.exit("Failed to initilize python-cairo required for 'plot' verb.") - firmware_time, loader_time, kernel_time, initrd_time, userspace_time, finish_time = acquire_start_time() - data = acquire_time_data() - s = sorted(data, key = lambda i: i[1]) - - # Account for kernel and initramfs bars if they exist - if initrd_time > 0: - count = 3 - else: - count = 2 - - for name, ixt, aet, axt, iet in s: - - if (ixt >= userspace_time and ixt <= finish_time) or \ - (aet >= userspace_time and aet <= finish_time) or \ - (axt >= userspace_time and axt <= finish_time): - count += 1 - - border = 100 - bar_height = 20 - bar_space = bar_height * 0.1 - - # 1000px = 10s, 1px = 10ms - width = finish_time/10000 + border*2 - height = count * (bar_height + bar_space) + border * 2 - - if width < 1000: - width = 1000 - - surface = cairo.SVGSurface(sys.stdout, width, height) - context = cairo.Context(surface) - - draw_box(context, 0, 0, width, height, 1, 1, 1) - - context.translate(border + 0.5, border + 0.5) - - context.save() - context.set_line_width(1) - context.set_source_rgb(0.7, 0.7, 0.7) - - for x in range(0, int(finish_time/10000) + 100, 100): - context.move_to(x, 0) - context.line_to(x, height-border*2) - - context.move_to(0, 0) - context.line_to(width-border*2, 0) - - context.move_to(0, height-border*2) - context.line_to(width-border*2, height-border*2) - - context.stroke() - context.restore() - - osrel = "Linux" - if os.path.exists("/etc/os-release"): - for line in open("/etc/os-release"): - if line.startswith('PRETTY_NAME='): - osrel = line[12:] - osrel = osrel.strip('\"\n') - break - - banner = "{} {} ({} {}) {}".format(osrel, *(os.uname()[1:5])) - draw_text(context, 0, -15, banner, hcenter = 0, vcenter = 1) - - for x in range(0, int(finish_time/10000) + 100, 100): - draw_text(context, x, -5, "%lus" % (x/100), vcenter = 0, hcenter = 0) - - y = 0 - - # draw boxes for kernel and initramfs boot time - if initrd_time > 0: - draw_box(context, 0, y, initrd_time/10000, bar_height, 0.7, 0.7, 0.7) - draw_text(context, 10, y + bar_height/2, "kernel", hcenter = 0) - y += bar_height + bar_space - - draw_box(context, initrd_time/10000, y, userspace_time/10000-initrd_time/10000, bar_height, 0.7, 0.7, 0.7) - draw_text(context, initrd_time/10000 + 10, y + bar_height/2, "initramfs", hcenter = 0) - y += bar_height + bar_space - - else: - draw_box(context, 0, y, userspace_time/10000, bar_height, 0.6, 0.6, 0.6) - draw_text(context, 10, y + bar_height/2, "kernel", hcenter = 0) - y += bar_height + bar_space - - draw_box(context, userspace_time/10000, y, finish_time/10000-userspace_time/10000, bar_height, 0.7, 0.7, 0.7) - draw_text(context, userspace_time/10000 + 10, y + bar_height/2, "userspace", hcenter = 0) - y += bar_height + bar_space - - for name, ixt, aet, axt, iet in s: - - drawn = False - left = -1 - - if ixt >= userspace_time and ixt <= finish_time: - - # Activating - a = ixt - b = min(filter(lambda x: x >= ixt, (aet, axt, iet, finish_time))) - ixt - - draw_box(context, a/10000, y, b/10000, bar_height, 1, 0, 0) - drawn = True - - if left < 0: - left = a - - if aet >= userspace_time and aet <= finish_time: - - # Active - a = aet - b = min(filter(lambda x: x >= aet, (axt, iet, finish_time))) - aet - - draw_box(context, a/10000, y, b/10000, bar_height, .8, .6, .6) - drawn = True - - if left < 0: - left = a - - if axt >= userspace_time and axt <= finish_time: - - # Deactivating - a = axt - b = min(filter(lambda x: x >= axt, (iet, finish_time))) - axt - - draw_box(context, a/10000, y, b/10000, bar_height, .6, .4, .4) - drawn = True - - if left < 0: - left = a - - if drawn: - x = left/10000 - - if x < width/2-border: - draw_text(context, x + 10, y + bar_height/2, name, hcenter = 0) - else: - draw_text(context, x - 10, y + bar_height/2, name, hcenter = 1) - - y += bar_height + bar_space - - draw_text(context, 0, height-border*2, "Legend: Red = Activating; Pink = Active; Dark Pink = Deactivating", hcenter = 0, vcenter = -1) - - if initrd_time > 0: - draw_text(context, 0, height-border*2 + bar_height, "Startup finished in %lums (kernel) + %lums (initramfs) + %lums (userspace) = %lums" % ( \ - initrd_time/1000, \ - (userspace_time - initrd_time)/1000, \ - (finish_time - userspace_time)/1000, \ - finish_time/1000), hcenter = 0, vcenter = -1) - else: - draw_text(context, 0, height-border*2 + bar_height, "Startup finished in %lums (kernel) + %lums (userspace) = %lums" % ( \ - userspace_time/1000, \ - (finish_time - userspace_time)/1000, \ - finish_time/1000), hcenter = 0, vcenter = -1) - - surface.finish() - -parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter, - version='systemd-analyze @PACKAGE_VERSION@', - description='Process systemd profiling information', - epilog='''\ -time - print time spent in the kernel before reaching userspace -blame - print list of running units ordered by time to init -plot - output SVG graphic showing service initialization -''') - -parser.add_argument('action', choices=('time', 'blame', 'plot'), - default='time', nargs='?', - help='action to perform (default: time)') -parser.add_argument('--user', action='store_true', - help='use the session bus') - -args = parser.parse_args() - -if args.user: - bus = Gio.BusType.SESSION -else: - bus = Gio.BusType.SYSTEM - -verb = {'time' : time, - 'blame': blame, - 'plot' : plot, - } -verb.get(args.action)() -- cgit v1.2.1 From 1700761b0678a5f5b43dc5224a97cc1922f74fad Mon Sep 17 00:00:00 2001 From: Simon Peeters Date: Wed, 13 Feb 2013 14:17:28 -0800 Subject: Move systemctl dot to systemd-analyze dot --- TODO | 2 - man/systemctl.xml | 44 ------- man/systemd-analyze.xml | 40 ++++++ shell-completion/systemd-bash-completion.sh | 4 +- shell-completion/systemd-zsh-completion.zsh | 8 +- src/analyze/systemd-analyze.c | 188 ++++++++++++++++++++++++++- src/systemctl/systemctl.c | 191 ---------------------------- 7 files changed, 230 insertions(+), 247 deletions(-) diff --git a/TODO b/TODO index b89e3eabfb..f6fbb5313d 100644 --- a/TODO +++ b/TODO @@ -80,8 +80,6 @@ Features: * introduce ExecCondition= in services -* if we have systemd-analyze in C "systemctl dot" should move there too - * EFI: - fsck hookup for the ESP mount is missing - write man page for efi boot generator diff --git a/man/systemctl.xml b/man/systemctl.xml index bf11cc3c71..7f7064214e 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -271,32 +271,6 @@ manager of the calling user. - - - - - When used in - conjunction with the - dot command (see - below), selects which dependencies are - shown in the dependency graph. If - is passed - only dependencies of type - After= or - Before= are - shown. If - is passed only dependencies of type - Requires=, - RequiresOverridable=, - Requisite=, - RequisiteOverridable=, - Wants= and - Conflicts= are - shown. If neither is passed, shows - dependencies of all these - types. - - @@ -978,24 +952,6 @@ be parsed by applications. - - dot - - Generate textual - dependency graph description in dot - format for further processing with the - GraphViz - dot1 - tool. Use a command line like - systemctl dot | dot -Tsvg > - systemd.svg to generate a - graphical dependency tree. Unless - or - is passed - the generated graph will show both - ordering and requirement - dependencies. - list-dependencies [NAME] diff --git a/man/systemd-analyze.xml b/man/systemd-analyze.xml index c2ff9cc5bd..533bc4264f 100644 --- a/man/systemd-analyze.xml +++ b/man/systemd-analyze.xml @@ -57,6 +57,9 @@ systemd-analyze OPTIONS plot > file.svg + + systemd-analyze OPTIONS dot + @@ -90,6 +93,17 @@ been started at what time, highlighting the time they spent on initialization. + systemd-analyze dot + Generate textual dependency graph description in dot + format for further processing with the GraphViz + dot1 + tool. Use a command line like systemd-analyze + dot | dot -Tsvg > systemd.svg to generate + a graphical dependency tree. Unless + or + is passed the generated graph will show both ordering + and requirement dependencies. + If no command is passed systemd-analyze time is implied. @@ -116,6 +130,32 @@ of user sessions instead of the system manager. + + + + + + When used in + conjunction with the + dot command (see + above), selects which dependencies are + shown in the dependency graph. If + is passed + only dependencies of type + After= or + Before= are + shown. If + is passed only dependencies of type + Requires=, + RequiresOverridable=, + Requisite=, + RequisiteOverridable=, + Wants= and + Conflicts= are + shown. If neither is passed, shows + dependencies of all these + types. +
diff --git a/shell-completion/systemd-bash-completion.sh b/shell-completion/systemd-bash-completion.sh index 52dc72b04f..1132b3c028 100644 --- a/shell-completion/systemd-bash-completion.sh +++ b/shell-completion/systemd-bash-completion.sh @@ -60,7 +60,7 @@ _systemctl () { local -A OPTS=( [STANDALONE]='--all -a --defaults --fail --ignore-dependencies --failed --force -f --full --global --help -h --no-ask-password --no-block --no-legend --no-pager --no-reload --no-wall - --order --require --quiet -q --privileged -P --system --user --version --runtime' + --quiet -q --privileged -P --system --user --version --runtime' [ARG]='--host -H --kill-mode --kill-who --property -p --signal -s --type -t --root' ) @@ -113,7 +113,7 @@ _systemctl () { [JOBS]='cancel' [SNAPSHOTS]='delete' [ENVS]='set-environment unset-environment' - [STANDALONE]='daemon-reexec daemon-reload default dot dump + [STANDALONE]='daemon-reexec daemon-reload default dump emergency exit halt hibernate hybrid-sleep kexec list-jobs list-units list-unit-files poweroff reboot rescue show-environment suspend' diff --git a/shell-completion/systemd-zsh-completion.zsh b/shell-completion/systemd-zsh-completion.zsh index d5fb850cdb..177a564d38 100644 --- a/shell-completion/systemd-zsh-completion.zsh +++ b/shell-completion/systemd-zsh-completion.zsh @@ -27,8 +27,6 @@ _ctls() '--no-legend[Do not print a legend, i.e. the column headers and the footer with hints]' \ '--no-pager[Do not pipe output into a pager]' \ '--no-ask-password[Do not ask for system passwords]' \ - '--order[When generating graph for dot, show only order]' \ - '--require[When generating graph for dot, show only requirement]' \ '--system[Connect to system manager]' \ '--user[Connect to user service manager]' \ '--global[Enable/disable unit files globally]' \ @@ -136,6 +134,8 @@ _ctls() _arguments \ {-h,--help}'[Show help text.]' \ '--user[Shows performance data of user sessions instead of the system manager.]' \ + '--order[When generating graph for dot, show only order]' \ + '--require[When generating graph for dot, show only requirement]' \ '*::systemd-analyze commands:_systemd_analyze_command' ;; systemd-ask-password) @@ -293,6 +293,7 @@ _systemd_analyze_command(){ 'time:Print the time taken to start' 'blame:prints a list of all running units, ordered by the time they took to initialize' 'plot:prints an SVG graphic detailing which system services have been started at what time' + 'dot:Dump dependency graph for dot(1)' ) if (( CURRENT == 1 )); then @@ -352,7 +353,6 @@ _outputmodes() { "list-jobs:List jobs" "cancel:Cancel all, one, or more jobs" "dump:Dump server status" - "dot:Dump dependency graph for dot(1)" "snapshot:Create a snapshot" "delete:Remove one or more snapshots" "show-environment:Dump environment" @@ -575,7 +575,7 @@ done (( $+functions[_systemctl_link] )) || _systemctl_link() { _files } # no systemctl completion for: -# [STANDALONE]='daemon-reexec daemon-reload default dot dump +# [STANDALONE]='daemon-reexec daemon-reload default dump # emergency exit halt kexec list-jobs list-units # list-unit-files poweroff reboot rescue show-environment' # [NAME]='snapshot load' diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c index 1ea56c6896..88fb40676e 100644 --- a/src/analyze/systemd-analyze.c +++ b/src/analyze/systemd-analyze.c @@ -46,6 +46,11 @@ } while(false) static UnitFileScope arg_scope = UNIT_FILE_SYSTEM; +static enum dot { + DEP_ALL, + DEP_ORDER, + DEP_REQUIRE +} arg_dot = DEP_ALL; double scale_x = 0.1; // pixels per ms double scale_y = 20.0; @@ -532,6 +537,166 @@ static int analyze_time(DBusConnection *bus) return 0; } +static int graph_one_property(const char *name, const char *prop, DBusMessageIter *iter) { + + static const char * const colors[] = { + "Requires", "[color=\"black\"]", + "RequiresOverridable", "[color=\"black\"]", + "Requisite", "[color=\"darkblue\"]", + "RequisiteOverridable", "[color=\"darkblue\"]", + "Wants", "[color=\"grey66\"]", + "Conflicts", "[color=\"red\"]", + "ConflictedBy", "[color=\"red\"]", + "After", "[color=\"green\"]" + }; + + const char *c = NULL; + unsigned i; + + assert(name); + assert(prop); + assert(iter); + + for (i = 0; i < ELEMENTSOF(colors); i += 2) + if (streq(colors[i], prop)) { + c = colors[i+1]; + break; + } + + if (!c) + return 0; + + if (arg_dot != DEP_ALL) + if ((arg_dot == DEP_ORDER) != streq(prop, "After")) + return 0; + + if (dbus_message_iter_get_arg_type(iter) == DBUS_TYPE_ARRAY && + dbus_message_iter_get_element_type(iter) == DBUS_TYPE_STRING) { + DBusMessageIter sub; + + dbus_message_iter_recurse(iter, &sub); + + for (dbus_message_iter_recurse(iter, &sub); + dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID; + dbus_message_iter_next(&sub)) { + const char *s; + + assert(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_STRING); + dbus_message_iter_get_basic(&sub, &s); + printf("\t\"%s\"->\"%s\" %s;\n", name, s, c); + } + } + + return 0; +} + +static int graph_one(DBusConnection *bus, const struct unit_info *u) { + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + const char *interface = "org.freedesktop.systemd1.Unit"; + int r; + DBusMessageIter iter, sub, sub2, sub3; + + assert(bus); + assert(u); + + r = bus_method_call_with_reply( + bus, + "org.freedesktop.systemd1", + u->unit_path, + "org.freedesktop.DBus.Properties", + "GetAll", + &reply, + NULL, + DBUS_TYPE_STRING, &interface, + DBUS_TYPE_INVALID); + if (r < 0) + return r; + + if (!dbus_message_iter_init(reply, &iter) || + dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || + dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_DICT_ENTRY) { + log_error("Failed to parse reply."); + return -EIO; + } + + for (dbus_message_iter_recurse(&iter, &sub); + dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID; + dbus_message_iter_next(&sub)) { + const char *prop; + + assert(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_DICT_ENTRY); + dbus_message_iter_recurse(&sub, &sub2); + + if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &prop, true) < 0 || + dbus_message_iter_get_arg_type(&sub2) != DBUS_TYPE_VARIANT) { + log_error("Failed to parse reply."); + return -EIO; + } + + dbus_message_iter_recurse(&sub2, &sub3); + r = graph_one_property(u->id, prop, &sub3); + if (r < 0) + return r; + } + + return 0; +} + +static int dot(DBusConnection *bus) { + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + DBusMessageIter iter, sub; + int r; + + r = bus_method_call_with_reply( + bus, + "org.freedesktop.systemd1", + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + "ListUnits", + &reply, + NULL, + DBUS_TYPE_INVALID); + if (r < 0) + return r; + + if (!dbus_message_iter_init(reply, &iter) || + dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || + dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) { + log_error("Failed to parse reply."); + return -EIO; + } + + printf("digraph systemd {\n"); + + for (dbus_message_iter_recurse(&iter, &sub); + dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID; + dbus_message_iter_next(&sub)) { + struct unit_info u; + + r = bus_parse_unit_info(&sub, &u); + if (r < 0) + return -EIO; + + r = graph_one(bus, &u); + if (r < 0) + return r; + } + + printf("}\n"); + + log_info(" Color legend: black = Requires\n" + " dark blue = Requisite\n" + " dark grey = Wants\n" + " red = Conflicts\n" + " green = After\n"); + + if (on_tty()) + log_notice("-- You probably want to process this output with graphviz' dot tool.\n" + "-- Try a shell pipeline like 'systemd-analyze dot | dot -Tsvg > systemd.svg'!\n"); + + return 0; +} + static void analyze_help(void) { printf("%s [OPTIONS...] {COMMAND} ...\n\n" @@ -539,11 +704,14 @@ static void analyze_help(void) " -h --help Show this help\n" " --version Show package version\n" " --system Connect to system manager\n" - " --user Connect to user service manager\n\n" + " --user Connect to user service manager\n" + " --order When generating a dependency graph, show only order\n" + " --require When generating a dependency graph, show only requirement\n\n" "Commands:\n" - " time print time spent in the kernel before reaching userspace\n" - " blame print list of running units ordered by time to init\n" - " plot output SVG graphic showing service initialization\n\n", + " time Print time spent in the kernel before reaching userspace\n" + " blame Print list of running units ordered by time to init\n" + " plot Output SVG graphic showing service initialization\n" + " dot Dump dependency graph (in dot(1) format)\n\n", program_invocation_short_name); } @@ -551,6 +719,8 @@ static int parse_argv(int argc, char *argv[]) { enum { ARG_VERSION = 0x100, + ARG_ORDER, + ARG_REQUIRE, ARG_USER, ARG_SYSTEM }; @@ -558,6 +728,8 @@ static int parse_argv(int argc, char *argv[]) static const struct option options[] = { { "help", no_argument, NULL, 'h' }, { "version", no_argument, NULL, ARG_VERSION }, + { "order", no_argument, NULL, ARG_ORDER }, + { "require", no_argument, NULL, ARG_REQUIRE }, { "user", no_argument, NULL, ARG_USER }, { "system", no_argument, NULL, ARG_SYSTEM }, { NULL, 0, NULL, 0 } @@ -580,6 +752,12 @@ static int parse_argv(int argc, char *argv[]) case ARG_SYSTEM: arg_scope = UNIT_FILE_SYSTEM; break; + case ARG_ORDER: + arg_dot = DEP_ORDER; + break; + case ARG_REQUIRE: + arg_dot = DEP_REQUIRE; + break; case -1: return 1; case '?': @@ -614,6 +792,8 @@ int main(int argc, char *argv[]) { r = analyze_blame(bus); else if (streq(argv[optind], "plot")) r = analyze_plot(bus); + else if (streq(argv[optind], "dot")) + r = dot(bus); else log_error("Unknown operation '%s'.", argv[optind]); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 54c8ebc363..12e343e853 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -116,11 +116,6 @@ static enum action { ACTION_CANCEL_SHUTDOWN, _ACTION_MAX } arg_action = ACTION_SYSTEMCTL; -static enum dot { - DOT_ALL, - DOT_ORDER, - DOT_REQUIRE -} arg_dot = DOT_ALL; static enum transport { TRANSPORT_NORMAL, TRANSPORT_SSH, @@ -891,176 +886,6 @@ static int list_dependencies(DBusConnection *bus, char **args) { return list_dependencies_one(bus, u, 0, NULL, 0); } -static int dot_one_property(const char *name, const char *prop, DBusMessageIter *iter) { - - static const char * const colors[] = { - "Requires", "[color=\"black\"]", - "RequiresOverridable", "[color=\"black\"]", - "Requisite", "[color=\"darkblue\"]", - "RequisiteOverridable", "[color=\"darkblue\"]", - "Wants", "[color=\"grey66\"]", - "Conflicts", "[color=\"red\"]", - "ConflictedBy", "[color=\"red\"]", - "After", "[color=\"green\"]" - }; - - const char *c = NULL; - unsigned i; - - assert(name); - assert(prop); - assert(iter); - - for (i = 0; i < ELEMENTSOF(colors); i += 2) - if (streq(colors[i], prop)) { - c = colors[i+1]; - break; - } - - if (!c) - return 0; - - if (arg_dot != DOT_ALL) - if ((arg_dot == DOT_ORDER) != streq(prop, "After")) - return 0; - - switch (dbus_message_iter_get_arg_type(iter)) { - - case DBUS_TYPE_ARRAY: - - if (dbus_message_iter_get_element_type(iter) == DBUS_TYPE_STRING) { - DBusMessageIter sub; - - dbus_message_iter_recurse(iter, &sub); - - while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { - const char *s; - - assert(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_STRING); - dbus_message_iter_get_basic(&sub, &s); - printf("\t\"%s\"->\"%s\" %s;\n", name, s, c); - - dbus_message_iter_next(&sub); - } - - return 0; - } - } - - return 0; -} - -static int dot_one(DBusConnection *bus, const struct unit_info *u) { - _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; - const char *interface = "org.freedesktop.systemd1.Unit"; - int r; - DBusMessageIter iter, sub, sub2, sub3; - - assert(bus); - assert(u); - - r = bus_method_call_with_reply( - bus, - "org.freedesktop.systemd1", - u->unit_path, - "org.freedesktop.DBus.Properties", - "GetAll", - &reply, - NULL, - DBUS_TYPE_STRING, &interface, - DBUS_TYPE_INVALID); - if (r < 0) - return r; - - if (!dbus_message_iter_init(reply, &iter) || - dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || - dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_DICT_ENTRY) { - log_error("Failed to parse reply."); - return -EIO; - } - - dbus_message_iter_recurse(&iter, &sub); - - while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { - const char *prop; - - assert(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_DICT_ENTRY); - dbus_message_iter_recurse(&sub, &sub2); - - if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &prop, true) < 0 || - dbus_message_iter_get_arg_type(&sub2) != DBUS_TYPE_VARIANT) { - log_error("Failed to parse reply."); - return -EIO; - } - - dbus_message_iter_recurse(&sub2, &sub3); - r = dot_one_property(u->id, prop, &sub3); - if (r < 0) - return r; - - dbus_message_iter_next(&sub); - } - - return 0; -} - -static int dot(DBusConnection *bus, char **args) { - _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; - DBusMessageIter iter, sub; - int r; - - r = bus_method_call_with_reply( - bus, - "org.freedesktop.systemd1", - "/org/freedesktop/systemd1", - "org.freedesktop.systemd1.Manager", - "ListUnits", - &reply, - NULL, - DBUS_TYPE_INVALID); - if (r < 0) - return r; - - if (!dbus_message_iter_init(reply, &iter) || - dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || - dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) { - log_error("Failed to parse reply."); - return -EIO; - } - - printf("digraph systemd {\n"); - - dbus_message_iter_recurse(&iter, &sub); - while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { - struct unit_info u; - - r = bus_parse_unit_info(&sub, &u); - if (r < 0) - return -EIO; - - r = dot_one(bus, &u); - if (r < 0) - return r; - - /* printf("\t\"%s\";\n", u.id); */ - dbus_message_iter_next(&sub); - } - - printf("}\n"); - - log_info(" Color legend: black = Requires\n" - " dark blue = Requisite\n" - " dark grey = Wants\n" - " red = Conflicts\n" - " green = After\n"); - - if (on_tty()) - log_notice("-- You probably want to process this output with graphviz' dot tool.\n" - "-- Try a shell pipeline like 'systemctl dot | dot -Tsvg > systemd.svg'!\n"); - - return 0; -} - static int list_jobs(DBusConnection *bus, char **args) { _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; DBusMessageIter iter, sub, sub2; @@ -4276,8 +4101,6 @@ static int systemctl_help(void) { " --no-pager Do not pipe output into a pager\n" " --no-ask-password\n" " Do not ask for system passwords\n" - " --order When generating graph for dot, show only order\n" - " --require When generating graph for dot, show only requirement\n" " --system Connect to system manager\n" " --user Connect to user service manager\n" " --global Enable/disable unit files globally\n" @@ -4337,7 +4160,6 @@ static int systemctl_help(void) { " cancel [JOB...] Cancel all, one, or more jobs\n\n" "Status Commands:\n" " dump Dump server status\n" - " dot Dump dependency graph for dot(1)\n\n" "Snapshot Commands:\n" " snapshot [NAME] Create a snapshot\n" " delete [NAME...] Remove one or more snapshots\n\n" @@ -4460,8 +4282,6 @@ static int systemctl_parse_argv(int argc, char *argv[]) { ARG_NO_LEGEND, ARG_NO_PAGER, ARG_NO_WALL, - ARG_ORDER, - ARG_REQUIRE, ARG_ROOT, ARG_FULL, ARG_NO_RELOAD, @@ -4491,8 +4311,6 @@ static int systemctl_parse_argv(int argc, char *argv[]) { { "no-pager", no_argument, NULL, ARG_NO_PAGER }, { "no-wall", no_argument, NULL, ARG_NO_WALL }, { "quiet", no_argument, NULL, 'q' }, - { "order", no_argument, NULL, ARG_ORDER }, - { "require", no_argument, NULL, ARG_REQUIRE }, { "root", required_argument, NULL, ARG_ROOT }, { "force", no_argument, NULL, ARG_FORCE }, { "no-reload", no_argument, NULL, ARG_NO_RELOAD }, @@ -4599,14 +4417,6 @@ static int systemctl_parse_argv(int argc, char *argv[]) { arg_no_wall = true; break; - case ARG_ORDER: - arg_dot = DOT_ORDER; - break; - - case ARG_REQUIRE: - arg_dot = DOT_REQUIRE; - break; - case ARG_ROOT: arg_root = optarg; break; @@ -5307,7 +5117,6 @@ static int systemctl_main(DBusConnection *bus, int argc, char *argv[], DBusError { "status", MORE, 2, show }, { "help", MORE, 2, show }, { "dump", EQUAL, 1, dump }, - { "dot", EQUAL, 1, dot }, { "snapshot", LESS, 2, snapshot }, { "delete", MORE, 2, delete_snapshot }, { "daemon-reload", EQUAL, 1, daemon_reload }, -- cgit v1.2.1 From 3e37b970b5454863ca34bd96506c4f14804b2580 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Wed, 13 Feb 2013 14:51:12 -0800 Subject: Add systemd-analyze to .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index d27cce78f6..9afbb10668 100644 --- a/.gitignore +++ b/.gitignore @@ -24,6 +24,7 @@ /systemctl /systemd /systemd-ac-power +/systemd-analyze /systemd-ask-password /systemd-binfmt /systemd-bootchart -- cgit v1.2.1 From 895aeb27795c00f365ce3b30b1dca549b4f5468e Mon Sep 17 00:00:00 2001 From: William Giokas <1007380@gmail.com> Date: Wed, 13 Feb 2013 14:49:24 -0600 Subject: man: bootchart: change /var/log to /run/log As of [1], bootchart stores files in /run/log, not /var/log, by default. [1] f2f85884caac671da84256acb44148df9a4dca70 --- man/bootchart.conf.xml | 2 +- man/systemd-bootchart.xml | 2 +- src/bootchart/README | 2 +- src/bootchart/bootchart.conf | 2 +- src/bootchart/svg.c | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/man/bootchart.conf.xml b/man/bootchart.conf.xml index 419554e2d1..fb6e274492 100644 --- a/man/bootchart.conf.xml +++ b/man/bootchart.conf.xml @@ -109,7 +109,7 @@ output=[path] Configures the output folder for writing the graphs. By default, bootchart writes the graphs to - /var/log. + /run/log. diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml index 75341100f9..a3fea05b5c 100644 --- a/man/systemd-bootchart.xml +++ b/man/systemd-bootchart.xml @@ -138,7 +138,7 @@ Configures the output folder for writing the graphs. By default, bootchart writes the graphs to - /var/log. + /run/log. diff --git a/src/bootchart/README b/src/bootchart/README index a209caf46b..03b0fe95ee 100644 --- a/src/bootchart/README +++ b/src/bootchart/README @@ -18,7 +18,7 @@ where possible problems exist in the startup sequence of the system. Of course, bootchart can also be used at any moment in time to collect and graph some data for an amount of time. Bootchart does not even require root privileges to do so, and will happily run as a normal user. Bootchart graphs -are by default written time-stamped in /var/log. +are by default written time-stamped in /run/log. -- diff --git a/src/bootchart/bootchart.conf b/src/bootchart/bootchart.conf index fa1a09bd0a..079750436a 100644 --- a/src/bootchart/bootchart.conf +++ b/src/bootchart/bootchart.conf @@ -12,7 +12,7 @@ #freq=25 #rel=0 #filter=1 -#output= +#output= #init=/path/to/init-binary #pss=0 #entropy=0 diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index d7c4168d57..6ad7348ecb 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -98,7 +98,7 @@ static void svg_header(void) svg("\n"); svg("\n"); svg("\n"); - svg("\n\n"); + svg("\n\n"); svg("\n", VERSION); svg("\n", hz, len); -- cgit v1.2.1 From a4e0b94d318e35b1441fc56f590668e80ff2e44e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 13 Feb 2013 21:51:31 -0500 Subject: man: add filenames to the index Limiting the addition to filenames from seems to give a good enough S/N ratio. --- make-directive-index.py | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/make-directive-index.py b/make-directive-index.py index b06a54c1d5..15bd9b9341 100755 --- a/make-directive-index.py +++ b/make-directive-index.py @@ -146,6 +146,15 @@ TEMPLATE = '''\ + + Files and directories + + Paths and file names referred to in the + documentation. + + + + Colophon @@ -162,10 +171,11 @@ def _extract_directives(directive_groups, formatting, page): t = tree.parse(page) section = t.find('./refmeta/manvolnum').text pagename = t.find('./refmeta/refentrytitle').text + + storopt = directive_groups['options'] for variablelist in t.iterfind('.//variablelist'): klass = variablelist.attrib.get('class') storvar = directive_groups[klass or 'miscellaneous'] - storopt = directive_groups['options'] # Each configuration file shall be named in the - style of <program>.conf. + style of program.conf. Files in /etc/ override files with the same name in /usr/lib/ and /run/. Files in diff --git a/man/modules-load.d.xml b/man/modules-load.d.xml index ea4f524048..ce94bef7a7 100644 --- a/man/modules-load.d.xml +++ b/man/modules-load.d.xml @@ -58,7 +58,7 @@ reads files from the above directories which contain kernel modules to load during boot in a static list. Each configuration file is named in the style of - /etc/modules-load.d/<program>.conf. Note + /etc/modules-load.d/program.conf. Note that it is usually a better idea to rely on the automatic module loading by PCI IDs, USB IDs, DMI IDs or similar triggers encoded in the kernel modules @@ -76,7 +76,7 @@ non-whitespace character is # or ; are ignored. Each configuration file shall be named in the - style of <program>.conf. + style of program.conf. Files in /etc/ override files with the same name in /usr/lib/ and /run/. Files in diff --git a/man/nss-myhostname.xml b/man/nss-myhostname.xml index 46b7471b06..3fc91ee792 100644 --- a/man/nss-myhostname.xml +++ b/man/nss-myhostname.xml @@ -50,9 +50,7 @@ - - nss-myhostname.la - + nss-myhostname.la diff --git a/man/pam_systemd.xml b/man/pam_systemd.xml index 0093a8fb2d..d74a91878c 100644 --- a/man/pam_systemd.xml +++ b/man/pam_systemd.xml @@ -48,9 +48,7 @@ - - pam_systemd.so - + pam_systemd.so diff --git a/man/sysctl.d.xml b/man/sysctl.d.xml index 0ef5545163..759b8740f5 100644 --- a/man/sysctl.d.xml +++ b/man/sysctl.d.xml @@ -77,7 +77,7 @@ entirely equivalent. Each configuration file shall be named in the - style of <program>.conf. + style of program.conf. Files in /etc/ override files with the same name in /usr/lib/ and /run/. Files in diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index 2fa00e80c0..6a01ffd450 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -262,13 +262,13 @@ not linked. If host, the journal files are stored on the host file system (beneath - /var/log/journal/<machine-id>) + /var/log/journal/machine-id) and the subdirectory is bind-mounted into the container at the same location. If guest, the journal files are stored on the guest file system (beneath - /var/log/journal/<machine-id>) + /var/log/journal/machine-id) and the subdirectory is symlinked into the host at the same location. If auto (the default), diff --git a/man/systemd.automount.xml b/man/systemd.automount.xml index f428ddfe1a..f0a4293dea 100644 --- a/man/systemd.automount.xml +++ b/man/systemd.automount.xml @@ -48,7 +48,7 @@ - systemd.automount + automount.automount diff --git a/man/systemd.device.xml b/man/systemd.device.xml index 4c4bb7cee5..3f6d012c11 100644 --- a/man/systemd.device.xml +++ b/man/systemd.device.xml @@ -48,7 +48,7 @@ - systemd.device + device.device diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml index 952bb9595e..9c31baf793 100644 --- a/man/systemd.exec.xml +++ b/man/systemd.exec.xml @@ -48,10 +48,10 @@ - systemd.service, - systemd.socket, - systemd.mount, - systemd.swap + service.service, + socket.socket, + mount.mount, + swap.swap diff --git a/man/systemd.kill.xml b/man/systemd.kill.xml index 5ff8feee63..b41ce460b5 100644 --- a/man/systemd.kill.xml +++ b/man/systemd.kill.xml @@ -48,10 +48,10 @@ - systemd.service, - systemd.socket, - systemd.mount, - systemd.swap + service.service, + socket.socket, + mount.mount, + swap.swap diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml index 022be4661d..23e1e6c28e 100644 --- a/man/systemd.mount.xml +++ b/man/systemd.mount.xml @@ -48,7 +48,7 @@ - systemd.mount + mount.mount diff --git a/man/systemd.path.xml b/man/systemd.path.xml index ccf16df004..cc2d366198 100644 --- a/man/systemd.path.xml +++ b/man/systemd.path.xml @@ -48,7 +48,7 @@ - systemd.path + path.path diff --git a/man/systemd.service.xml b/man/systemd.service.xml index d2feb98247..aecf9c6efa 100644 --- a/man/systemd.service.xml +++ b/man/systemd.service.xml @@ -48,7 +48,7 @@ - systemd.service + service.service diff --git a/man/systemd.snapshot.xml b/man/systemd.snapshot.xml index f7688e9998..08d14c4e01 100644 --- a/man/systemd.snapshot.xml +++ b/man/systemd.snapshot.xml @@ -48,7 +48,7 @@ - systemd.snapshot + snapshot.snapshot diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml index f2d4dbe3b7..e594422889 100644 --- a/man/systemd.socket.xml +++ b/man/systemd.socket.xml @@ -48,7 +48,7 @@ - systemd.socket + socket.socket diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml index e547e71722..78b04f58d9 100644 --- a/man/systemd.swap.xml +++ b/man/systemd.swap.xml @@ -48,7 +48,7 @@ - systemd.swap + swap.swap diff --git a/man/systemd.target.xml b/man/systemd.target.xml index efbad15cdf..fd51cfde3a 100644 --- a/man/systemd.target.xml +++ b/man/systemd.target.xml @@ -48,7 +48,7 @@ - systemd.target + target.target diff --git a/man/systemd.timer.xml b/man/systemd.timer.xml index 2c2ba58226..2b9d91a60f 100644 --- a/man/systemd.timer.xml +++ b/man/systemd.timer.xml @@ -48,7 +48,7 @@ - systemd.timer + timer.timer -- cgit v1.2.1 From edc211f314f257921eb3599b5dca8d51984b9328 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Wed, 13 Feb 2013 20:22:12 -0800 Subject: bootchart items --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index f6fbb5313d..843b5878e6 100644 --- a/TODO +++ b/TODO @@ -544,6 +544,8 @@ External: * bootchart: - use conf_parser for bootchart.conf - change config options to CamelCase + - plot per-process IO utilization + - group processes based on service association (cgroups) Regularly: -- cgit v1.2.1 From a5c32cff1f56afe6f0c6c70d91a88a7a8238b2d7 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 14 Feb 2013 12:26:13 +0100 Subject: honor SELinux labels, when creating and writing config files Also split out some fileio functions to fileio.c and provide a SELinux aware pendant in fileio-label.c see https://bugzilla.redhat.com/show_bug.cgi?id=881577 --- Makefile.am | 6 + src/analyze/systemd-analyze.c | 1 + src/binfmt/binfmt.c | 1 + src/bootchart/bootchart.c | 1 + src/cgtop/cgtop.c | 1 + src/core/cgroup-attr.c | 1 + src/core/condition.c | 1 + src/core/dbus-execute.c | 1 + src/core/dbus-unit.c | 1 + src/core/execute.c | 1 + src/core/hostname-setup.c | 1 + src/core/locale-setup.c | 1 + src/core/machine-id-setup.c | 1 + src/core/main.c | 1 + src/core/service.c | 1 + src/core/unit.c | 4 +- src/fsck/fsck.c | 1 + src/fstab-generator/fstab-generator.c | 1 + src/getty-generator/getty-generator.c | 1 + src/hostname/hostnamectl.c | 1 + src/hostname/hostnamed.c | 8 +- src/journal/journald-server.c | 1 + src/locale/localed.c | 9 +- src/login/logind-dbus.c | 5 +- src/login/logind-inhibit.c | 1 + src/login/logind-session.c | 1 + src/login/logind-user.c | 1 + src/login/pam-module.c | 1 + src/login/sd-login.c | 1 + src/login/user-sessions.c | 1 + src/modules-load/modules-load.c | 1 + src/nspawn/nspawn.c | 1 + src/quotacheck/quotacheck.c | 1 + src/readahead/readahead-common.c | 1 + src/shared/audit.c | 1 + src/shared/capability.c | 1 + src/shared/cgroup-util.c | 1 + src/shared/fileio-label.c | 55 +++++ src/shared/fileio-label.h | 29 +++ src/shared/fileio.c | 383 ++++++++++++++++++++++++++++++++++ src/shared/fileio.h | 33 +++ src/shared/hwclock.c | 1 + src/shared/label.c | 4 + src/shared/label.h | 4 + src/shared/socket-util.c | 1 + src/shared/util.c | 359 +------------------------------ src/shared/util.h | 9 - src/shared/virt.c | 1 + src/shutdownd/shutdownd.c | 1 + src/sleep/sleep.c | 1 + src/sysctl/sysctl.c | 1 + src/systemctl/systemctl.c | 1 + src/test/test-unit-file.c | 1 + src/timedate/timedated.c | 6 +- src/udev/udev-builtin-net_id.c | 1 + src/udev/udevd.c | 1 + src/vconsole/vconsole-setup.c | 1 + 57 files changed, 580 insertions(+), 377 deletions(-) create mode 100644 src/shared/fileio-label.c create mode 100644 src/shared/fileio-label.h create mode 100644 src/shared/fileio.c create mode 100644 src/shared/fileio.h diff --git a/Makefile.am b/Makefile.am index 403439b6eb..10934eba77 100644 --- a/Makefile.am +++ b/Makefile.am @@ -623,6 +623,8 @@ libsystemd_shared_la_SOURCES = \ src/shared/time-dst.h \ src/shared/calendarspec.c \ src/shared/calendarspec.h \ + src/shared/fileio.c \ + src/shared/fileio.h \ src/shared/output-mode.h #------------------------------------------------------------------------------- @@ -675,6 +677,8 @@ libsystemd_label_la_SOURCES = \ src/shared/mkdir.h \ src/shared/ask-password-api.c \ src/shared/ask-password-api.h \ + src/shared/fileio-label.c \ + src/shared/fileio-label.h \ src/shared/dev-setup.c \ src/shared/dev-setup.h @@ -2898,6 +2902,7 @@ systemd_hostnamed_CFLAGS = \ $(DBUS_CFLAGS) systemd_hostnamed_LDADD = \ + libsystemd-label.la \ libsystemd-shared.la \ libsystemd-daemon.la \ libsystemd-dbus.la @@ -3034,6 +3039,7 @@ systemd_timedated_CFLAGS = \ $(DBUS_CFLAGS) systemd_timedated_LDADD = \ + libsystemd-label.la \ libsystemd-shared.la \ libsystemd-daemon.la \ libsystemd-dbus.la diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c index 88fb40676e..b7e16706cd 100644 --- a/src/analyze/systemd-analyze.c +++ b/src/analyze/systemd-analyze.c @@ -31,6 +31,7 @@ #include "build.h" #include "util.h" #include "strxcpyx.h" +#include "fileio.h" #define compare(a, b) (((a) > (b))? 1 : (((b) > (a))? -1 : 0)) #define svg(...) printf(__VA_ARGS__) diff --git a/src/binfmt/binfmt.c b/src/binfmt/binfmt.c index f8c97b5ca5..909eef732c 100644 --- a/src/binfmt/binfmt.c +++ b/src/binfmt/binfmt.c @@ -33,6 +33,7 @@ #include "strv.h" #include "util.h" #include "conf-files.h" +#include "fileio.h" static const char conf_file_dirs[] = "/etc/binfmt.d\0" diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index fb95c6b807..adfaba57b0 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -36,6 +36,7 @@ #include "bootchart.h" #include "util.h" +#include "fileio.h" double graph_start; double log_start; diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c index f2e62761f1..f80d51efed 100644 --- a/src/cgtop/cgtop.c +++ b/src/cgtop/cgtop.c @@ -31,6 +31,7 @@ #include "hashmap.h" #include "cgroup-util.h" #include "build.h" +#include "fileio.h" typedef struct Group { char *path; diff --git a/src/core/cgroup-attr.c b/src/core/cgroup-attr.c index aed4e99d86..1373684bdb 100644 --- a/src/core/cgroup-attr.c +++ b/src/core/cgroup-attr.c @@ -22,6 +22,7 @@ #include "cgroup-attr.h" #include "cgroup-util.h" #include "list.h" +#include "fileio.h" int cgroup_attribute_apply(CGroupAttribute *a, CGroupBonding *b) { int r; diff --git a/src/core/condition.c b/src/core/condition.c index b3184922b8..30199c10e3 100644 --- a/src/core/condition.c +++ b/src/core/condition.c @@ -36,6 +36,7 @@ #include "condition.h" #include "virt.h" #include "path-util.h" +#include "fileio.h" Condition* condition_new(ConditionType type, const char *parameter, bool trigger, bool negate) { Condition *c; diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c index e815cb58e4..53394c25f4 100644 --- a/src/core/dbus-execute.c +++ b/src/core/dbus-execute.c @@ -29,6 +29,7 @@ #include "strv.h" #include "dbus-common.h" #include "syscall-list.h" +#include "fileio.h" DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_execute_append_input, exec_input, ExecInput); DEFINE_BUS_PROPERTY_APPEND_ENUM(bus_execute_append_output, exec_output, ExecOutput); diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c index d1de46afd4..4f968c20f2 100644 --- a/src/core/dbus-unit.c +++ b/src/core/dbus-unit.c @@ -30,6 +30,7 @@ #include "cgroup-util.h" #include "strv.h" #include "path-util.h" +#include "fileio.h" const char bus_unit_interface[] _introspect_("Unit") = BUS_UNIT_INTERFACE; diff --git a/src/core/execute.c b/src/core/execute.c index aa58bc488c..3376adc34a 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -65,6 +65,7 @@ #include "path-util.h" #include "syscall-list.h" #include "env-util.h" +#include "fileio.h" #define IDLE_TIMEOUT_USEC (5*USEC_PER_SEC) diff --git a/src/core/hostname-setup.c b/src/core/hostname-setup.c index 7894f8a5f2..ac508af122 100644 --- a/src/core/hostname-setup.c +++ b/src/core/hostname-setup.c @@ -29,6 +29,7 @@ #include "macro.h" #include "util.h" #include "log.h" +#include "fileio.h" static int read_and_strip_hostname(const char *path, char **hn) { char *s; diff --git a/src/core/locale-setup.c b/src/core/locale-setup.c index 48b59bf448..eefb256ac5 100644 --- a/src/core/locale-setup.c +++ b/src/core/locale-setup.c @@ -27,6 +27,7 @@ #include "util.h" #include "macro.h" #include "virt.h" +#include "fileio.h" enum { /* We don't list LC_ALL here on purpose. People should be diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c index 7f4c23b130..ca163978f3 100644 --- a/src/core/machine-id-setup.c +++ b/src/core/machine-id-setup.c @@ -35,6 +35,7 @@ #include "mkdir.h" #include "log.h" #include "virt.h" +#include "fileio.h" static int shorten_uuid(char destination[36], const char *source) { unsigned i, j; diff --git a/src/core/main.c b/src/core/main.c index a2b0a39fd5..71e0a6cf2f 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -66,6 +66,7 @@ #include "locale-setup.h" #include "selinux-setup.h" #include "ima-setup.h" +#include "fileio.h" static enum { ACTION_RUN, diff --git a/src/core/service.c b/src/core/service.c index 9c4bc41430..c510736b76 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -43,6 +43,7 @@ #include "util.h" #include "utf8.h" #include "env-util.h" +#include "fileio.h" #ifdef HAVE_SYSV_COMPAT diff --git a/src/core/unit.c b/src/core/unit.c index f7d00b6030..86aaa1509a 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -46,6 +46,8 @@ #include "missing.h" #include "cgroup-attr.h" #include "mkdir.h" +#include "label.h" +#include "fileio-label.h" const UnitVTable * const unit_vtable[_UNIT_TYPE_MAX] = { [UNIT_SERVICE] = &service_vtable, @@ -2778,7 +2780,7 @@ int unit_write_drop_in(Unit *u, bool runtime, const char *name, const char *data return -ENOMEM; mkdir_p(p, 0755); - return write_one_line_file_atomic(q, data); + return write_one_line_file_atomic_label(q, data); } int unit_remove_drop_in(Unit *u, bool runtime, const char *name) { diff --git a/src/fsck/fsck.c b/src/fsck/fsck.c index f5d38ad261..f692b3a8d3 100644 --- a/src/fsck/fsck.c +++ b/src/fsck/fsck.c @@ -35,6 +35,7 @@ #include "special.h" #include "bus-errors.h" #include "virt.h" +#include "fileio.h" static bool arg_skip = false; static bool arg_force = false; diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 2b67bb612d..ad26acb14a 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -33,6 +33,7 @@ #include "special.h" #include "mkdir.h" #include "virt.h" +#include "fileio.h" static const char *arg_dest = "/tmp"; static bool arg_enabled = true; diff --git a/src/getty-generator/getty-generator.c b/src/getty-generator/getty-generator.c index cb38f21052..e811830a6b 100644 --- a/src/getty-generator/getty-generator.c +++ b/src/getty-generator/getty-generator.c @@ -28,6 +28,7 @@ #include "mkdir.h" #include "unit-name.h" #include "virt.h" +#include "fileio.h" static const char *arg_dest = "/tmp"; diff --git a/src/hostname/hostnamectl.c b/src/hostname/hostnamectl.c index ff1f091776..7945c86b5f 100644 --- a/src/hostname/hostnamectl.c +++ b/src/hostname/hostnamectl.c @@ -36,6 +36,7 @@ #include "strv.h" #include "sd-id128.h" #include "virt.h" +#include "fileio.h" static enum transport { TRANSPORT_NORMAL, diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index c5a8b6faaf..7ea891c681 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -33,6 +33,8 @@ #include "def.h" #include "virt.h" #include "env-util.h" +#include "fileio-label.h" +#include "label.h" #define INTERFACE \ " \n" \ @@ -287,8 +289,7 @@ static int write_data_static_hostname(void) { return 0; } - - return write_one_line_file_atomic("/etc/hostname", data[PROP_STATIC_HOSTNAME]); + return write_one_line_file_atomic_label("/etc/hostname", data[PROP_STATIC_HOSTNAME]); } static int write_data_other(void) { @@ -338,7 +339,7 @@ static int write_data_other(void) { return 0; } - r = write_env_file("/etc/machine-info", l); + r = write_env_file_label("/etc/machine-info", l); strv_free(l); return r; @@ -683,6 +684,7 @@ int main(int argc, char *argv[]) { log_open(); umask(0022); + label_init("/etc"); if (argc == 2 && streq(argv[1], "--introspect")) { fputs(DBUS_INTROSPECT_1_0_XML_DOCTYPE_DECL_NODE diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 1375d7a98e..818bd0803a 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -34,6 +34,7 @@ #include #endif +#include "fileio.h" #include "mkdir.h" #include "hashmap.h" #include "journal-file.h" diff --git a/src/locale/localed.c b/src/locale/localed.c index fedcdfb373..4f85b8b583 100644 --- a/src/locale/localed.c +++ b/src/locale/localed.c @@ -32,6 +32,9 @@ #include "polkit.h" #include "def.h" #include "env-util.h" +#include "fileio.h" +#include "fileio-label.h" +#include "label.h" #define INTERFACE \ " \n" \ @@ -390,7 +393,7 @@ static int write_data_locale(void) { return 0; } - r = write_env_file("/etc/locale.conf", l); + r = write_env_file_label("/etc/locale.conf", l); strv_free(l); return r; @@ -546,7 +549,7 @@ static int write_data_vconsole(void) { return 0; } - r = write_env_file("/etc/vconsole.conf", l); + r = write_env_file_label("/etc/vconsole.conf", l); strv_free(l); return r; @@ -1364,7 +1367,7 @@ int main(int argc, char *argv[]) { log_set_target(LOG_TARGET_AUTO); log_parse_environment(); log_open(); - + label_init("/etc"); umask(0022); if (argc == 2 && streq(argv[1], "--introspect")) { diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index f35185971b..d235474a23 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -33,6 +33,8 @@ #include "special.h" #include "systemd/sd-id128.h" #include "systemd/sd-messages.h" +#include "fileio-label.h" +#include "label.h" #define BUS_MANAGER_INTERFACE \ " \n" \ @@ -937,7 +939,8 @@ static int attach_device(Manager *m, const char *seat, const char *sysfs) { } mkdir_p_label("/etc/udev/rules.d", 0755); - r = write_one_line_file_atomic(file, rule); + label_init("/etc"); + r = write_one_line_file_atomic_label(file, rule); if (r < 0) goto finish; diff --git a/src/login/logind-inhibit.c b/src/login/logind-inhibit.c index 2c1a412e55..9994084f93 100644 --- a/src/login/logind-inhibit.c +++ b/src/login/logind-inhibit.c @@ -30,6 +30,7 @@ #include "mkdir.h" #include "path-util.h" #include "logind-inhibit.h" +#include "fileio.h" Inhibitor* inhibitor_new(Manager *m, const char* id) { Inhibitor *i; diff --git a/src/login/logind-session.c b/src/login/logind-session.c index b981e147c9..71c79127e9 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -33,6 +33,7 @@ #include "path-util.h" #include "cgroup-util.h" #include "logind-session.h" +#include "fileio.h" Session* session_new(Manager *m, User *u, const char *id) { Session *s; diff --git a/src/login/logind-user.c b/src/login/logind-user.c index b692b533e2..411215a925 100644 --- a/src/login/logind-user.c +++ b/src/login/logind-user.c @@ -29,6 +29,7 @@ #include "cgroup-util.h" #include "hashmap.h" #include "strv.h" +#include "fileio.h" User* user_new(Manager *m, uid_t uid, gid_t gid, const char *name) { User *u; diff --git a/src/login/pam-module.c b/src/login/pam-module.c index 88b0ef9e45..702095e5e6 100644 --- a/src/login/pam-module.c +++ b/src/login/pam-module.c @@ -41,6 +41,7 @@ #include "dbus-common.h" #include "def.h" #include "socket-util.h" +#include "fileio.h" static int parse_argv(pam_handle_t *handle, int argc, const char **argv, diff --git a/src/login/sd-login.c b/src/login/sd-login.c index b81dddf86b..8867e8c8eb 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -29,6 +29,7 @@ #include "macro.h" #include "sd-login.h" #include "strv.h" +#include "fileio.h" _public_ int sd_pid_get_session(pid_t pid, char **session) { int r; diff --git a/src/login/user-sessions.c b/src/login/user-sessions.c index 91531e8f38..c6f8fa79e2 100644 --- a/src/login/user-sessions.c +++ b/src/login/user-sessions.c @@ -26,6 +26,7 @@ #include "log.h" #include "util.h" #include "cgroup-util.h" +#include "fileio.h" int main(int argc, char*argv[]) { int ret = EXIT_FAILURE; diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c index 88b1261494..28b53ec7a3 100644 --- a/src/modules-load/modules-load.c +++ b/src/modules-load/modules-load.c @@ -34,6 +34,7 @@ #include "strv.h" #include "conf-files.h" #include "virt.h" +#include "fileio.h" static char **arg_proc_cmdline_modules = NULL; diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 4c8737132b..1d602a5b31 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -57,6 +57,7 @@ #include "dev-setup.h" #include "fdset.h" #include "build.h" +#include "fileio.h" typedef enum LinkJournal { LINK_NO, diff --git a/src/quotacheck/quotacheck.c b/src/quotacheck/quotacheck.c index e7a4405027..32f3ff904d 100644 --- a/src/quotacheck/quotacheck.c +++ b/src/quotacheck/quotacheck.c @@ -27,6 +27,7 @@ #include "util.h" #include "virt.h" +#include "fileio.h" static bool arg_skip = false; static bool arg_force = false; diff --git a/src/readahead/readahead-common.c b/src/readahead/readahead-common.c index 41aaff0a3d..81bb16c7a3 100644 --- a/src/readahead/readahead-common.c +++ b/src/readahead/readahead-common.c @@ -33,6 +33,7 @@ #include "readahead-common.h" #include "util.h" #include "missing.h" +#include "fileio.h" int file_verify(int fd, const char *fn, off_t file_size_max, struct stat *st) { assert(fd >= 0); diff --git a/src/shared/audit.c b/src/shared/audit.c index e5c483ab08..138ca1d7fa 100644 --- a/src/shared/audit.c +++ b/src/shared/audit.c @@ -33,6 +33,7 @@ #include "audit.h" #include "util.h" #include "log.h" +#include "fileio.h" int audit_session_from_pid(pid_t pid, uint32_t *id) { char *s; diff --git a/src/shared/capability.c b/src/shared/capability.c index 9b743e86d0..cad718d749 100644 --- a/src/shared/capability.c +++ b/src/shared/capability.c @@ -34,6 +34,7 @@ #include "capability.h" #include "util.h" #include "log.h" +#include "fileio.h" int have_effective_cap(int value) { cap_t cap; diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 7efbc2ed39..be00b40fa2 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -37,6 +37,7 @@ #include "path-util.h" #include "strv.h" #include "unit-name.h" +#include "fileio.h" int cg_enumerate_processes(const char *controller, const char *path, FILE **_f) { char *fs; diff --git a/src/shared/fileio-label.c b/src/shared/fileio-label.c new file mode 100644 index 0000000000..5bf127bcf1 --- /dev/null +++ b/src/shared/fileio-label.c @@ -0,0 +1,55 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2010 Lennart Poettering + Copyright 2010 Harald Hoyer + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ +#include +#include +#include + +#include "fileio-label.h" +#include "label.h" + +int write_one_line_file_atomic_label(const char *fn, const char *line) { + int r; + + r = label_context_set(fn, S_IFREG); + if (r < 0) + return r; + + write_one_line_file_atomic(fn, line); + + label_context_clear(); + + return r; +} + +int write_env_file_label(const char *fname, char **l) { + int r; + + r = label_context_set(fname, S_IFREG); + if (r < 0) + return r; + + write_env_file(fname, l); + + label_context_clear(); + + return r; +} diff --git a/src/shared/fileio-label.h b/src/shared/fileio-label.h new file mode 100644 index 0000000000..cc5ce34708 --- /dev/null +++ b/src/shared/fileio-label.h @@ -0,0 +1,29 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2010 Lennart Poettering + Copyright 2010 Harald Hoyer + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include "fileio.h" + +int write_one_line_file_atomic_label(const char *fn, const char *line); +int write_env_file_label(const char *fname, char **l); diff --git a/src/shared/fileio.c b/src/shared/fileio.c new file mode 100644 index 0000000000..4e6ff16045 --- /dev/null +++ b/src/shared/fileio.c @@ -0,0 +1,383 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2010 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include "fileio.h" +#include "util.h" +#include "strv.h" + +int write_one_line_file(const char *fn, const char *line) { + _cleanup_fclose_ FILE *f = NULL; + + assert(fn); + assert(line); + + f = fopen(fn, "we"); + if (!f) + return -errno; + + errno = 0; + if (fputs(line, f) < 0) + return errno ? -errno : -EIO; + + if (!endswith(line, "\n")) + fputc('\n', f); + + fflush(f); + + if (ferror(f)) + return errno ? -errno : -EIO; + + return 0; +} + +int write_one_line_file_atomic(const char *fn, const char *line) { + _cleanup_fclose_ FILE *f = NULL; + _cleanup_free_ char *p = NULL; + int r; + + assert(fn); + assert(line); + + r = fopen_temporary(fn, &f, &p); + if (r < 0) + return r; + + fchmod_umask(fileno(f), 0644); + + errno = 0; + if (fputs(line, f) < 0) { + r = -errno; + goto finish; + } + + if (!endswith(line, "\n")) + fputc('\n', f); + + fflush(f); + + if (ferror(f)) + r = errno ? -errno : -EIO; + else { + if (rename(p, fn) < 0) + r = -errno; + else + r = 0; + } + +finish: + if (r < 0) + unlink(p); + + return r; +} + +int read_one_line_file(const char *fn, char **line) { + _cleanup_fclose_ FILE *f = NULL; + char t[LINE_MAX], *c; + + assert(fn); + assert(line); + + f = fopen(fn, "re"); + if (!f) + return -errno; + + if (!fgets(t, sizeof(t), f)) { + + if (ferror(f)) + return errno ? -errno : -EIO; + + t[0] = 0; + } + + c = strdup(t); + if (!c) + return -ENOMEM; + truncate_nl(c); + + *line = c; + return 0; +} + +int read_full_file(const char *fn, char **contents, size_t *size) { + _cleanup_fclose_ FILE *f = NULL; + size_t n, l; + _cleanup_free_ char *buf = NULL; + struct stat st; + + assert(fn); + assert(contents); + + f = fopen(fn, "re"); + if (!f) + return -errno; + + if (fstat(fileno(f), &st) < 0) + return -errno; + + /* Safety check */ + if (st.st_size > 4*1024*1024) + return -E2BIG; + + n = st.st_size > 0 ? st.st_size : LINE_MAX; + l = 0; + + for (;;) { + char *t; + size_t k; + + t = realloc(buf, n+1); + if (!t) + return -ENOMEM; + + buf = t; + k = fread(buf + l, 1, n - l, f); + + if (k <= 0) { + if (ferror(f)) + return -errno; + + break; + } + + l += k; + n *= 2; + + /* Safety check */ + if (n > 4*1024*1024) + return -E2BIG; + } + + buf[l] = 0; + *contents = buf; + buf = NULL; + + if (size) + *size = l; + + return 0; +} + +int parse_env_file( + const char *fname, + const char *separator, ...) { + + int r = 0; + char *contents = NULL, *p; + + assert(fname); + assert(separator); + + if ((r = read_full_file(fname, &contents, NULL)) < 0) + return r; + + p = contents; + for (;;) { + const char *key = NULL; + + p += strspn(p, separator); + p += strspn(p, WHITESPACE); + + if (!*p) + break; + + if (!strchr(COMMENTS, *p)) { + va_list ap; + char **value; + + va_start(ap, separator); + while ((key = va_arg(ap, char *))) { + size_t n; + char *v; + + value = va_arg(ap, char **); + + n = strlen(key); + if (!strneq(p, key, n) || + p[n] != '=') + continue; + + p += n + 1; + n = strcspn(p, separator); + + if (n >= 2 && + strchr(QUOTES, p[0]) && + p[n-1] == p[0]) + v = strndup(p+1, n-2); + else + v = strndup(p, n); + + if (!v) { + r = -ENOMEM; + va_end(ap); + goto fail; + } + + if (v[0] == '\0') { + /* return empty value strings as NULL */ + free(v); + v = NULL; + } + + free(*value); + *value = v; + + p += n; + + r ++; + break; + } + va_end(ap); + } + + if (!key) + p += strcspn(p, separator); + } + +fail: + free(contents); + return r; +} + +int load_env_file(const char *fname, char ***rl) { + + _cleanup_fclose_ FILE *f; + _cleanup_strv_free_ char **m = NULL; + _cleanup_free_ char *c = NULL; + + assert(fname); + assert(rl); + + /* This reads an environment file, but will not complain about + * any invalid assignments, that needs to be done by the + * caller */ + + f = fopen(fname, "re"); + if (!f) + return -errno; + + while (!feof(f)) { + char l[LINE_MAX], *p, *cs, *b; + + if (!fgets(l, sizeof(l), f)) { + if (ferror(f)) + return -errno; + + /* The previous line was a continuation line? + * Let's process it now, before we leave the + * loop */ + if (c) + goto process; + + break; + } + + /* Is this a continuation line? If so, just append + * this to c, and go to next line right-away */ + cs = endswith(l, "\\\n"); + if (cs) { + *cs = '\0'; + b = strappend(c, l); + if (!b) + return -ENOMEM; + + free(c); + c = b; + continue; + } + + /* If the previous line was a continuation line, + * append the current line to it */ + if (c) { + b = strappend(c, l); + if (!b) + return -ENOMEM; + + free(c); + c = b; + } + + process: + p = strstrip(c ? c : l); + + if (*p && !strchr(COMMENTS, *p)) { + _cleanup_free_ char *u; + int k; + + u = normalize_env_assignment(p); + if (!u) + return -ENOMEM; + + k = strv_extend(&m, u); + if (k < 0) + return -ENOMEM; + } + + free(c); + c = NULL; + } + + *rl = m; + m = NULL; + + return 0; +} + +int write_env_file(const char *fname, char **l) { + char **i, *p; + FILE *f; + int r; + + r = fopen_temporary(fname, &f, &p); + if (r < 0) + return r; + + fchmod_umask(fileno(f), 0644); + + errno = 0; + STRV_FOREACH(i, l) { + fputs(*i, f); + fputc('\n', f); + } + + fflush(f); + + if (ferror(f)) { + if (errno != 0) + r = -errno; + else + r = -EIO; + } else { + if (rename(p, fname) < 0) + r = -errno; + else + r = 0; + } + + if (r < 0) + unlink(p); + + fclose(f); + free(p); + + return r; +} diff --git a/src/shared/fileio.h b/src/shared/fileio.h new file mode 100644 index 0000000000..0023204a73 --- /dev/null +++ b/src/shared/fileio.h @@ -0,0 +1,33 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2010 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ +#include +#include "macro.h" + +int write_one_line_file(const char *fn, const char *line); +int write_one_line_file_atomic(const char *fn, const char *line); +int read_one_line_file(const char *fn, char **line); +int read_full_file(const char *fn, char **contents, size_t *size); + +int parse_env_file(const char *fname, const char *separator, ...) _sentinel_; +int load_env_file(const char *fname, char ***l); +int write_env_file(const char *fname, char **l); diff --git a/src/shared/hwclock.c b/src/shared/hwclock.c index f9adf0369e..488c30e93f 100644 --- a/src/shared/hwclock.c +++ b/src/shared/hwclock.c @@ -41,6 +41,7 @@ #include "log.h" #include "strv.h" #include "hwclock.h" +#include "fileio.h" static int rtc_open(int flags) { int fd; diff --git a/src/shared/label.c b/src/shared/label.c index d353da57ec..a8bf6bd4f9 100644 --- a/src/shared/label.c +++ b/src/shared/label.c @@ -25,8 +25,12 @@ #include #include #include +#include +#include +#include #include "label.h" +#include "strv.h" #include "util.h" #include "path-util.h" diff --git a/src/shared/label.h b/src/shared/label.h index 1220b18965..dda4d1c024 100644 --- a/src/shared/label.h +++ b/src/shared/label.h @@ -45,3 +45,7 @@ int label_mkdir(const char *path, mode_t mode, bool apply); void label_retest_selinux(void); int label_bind(int fd, const struct sockaddr *addr, socklen_t addrlen); + +int label_write_one_line_file_atomic(const char *fn, const char *line); +int label_write_env_file(const char *fname, char **l); +int label_fopen_temporary(const char *path, FILE **_f, char **_temp_path); diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c index 39b6142e88..6c94d69486 100644 --- a/src/shared/socket-util.c +++ b/src/shared/socket-util.c @@ -38,6 +38,7 @@ #include "path-util.h" #include "socket-util.h" #include "missing.h" +#include "fileio.h" int socket_address_parse(SocketAddress *a, const char *s) { int r; diff --git a/src/shared/util.c b/src/shared/util.c index 4f0b652f4f..152724949d 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -71,6 +71,7 @@ #include "exit-status.h" #include "hashmap.h" #include "env-util.h" +#include "fileio.h" int saved_argc = 0; char **saved_argv = NULL; @@ -528,31 +529,6 @@ int get_starttime_of_pid(pid_t pid, unsigned long long *st) { return 0; } -int write_one_line_file(const char *fn, const char *line) { - _cleanup_fclose_ FILE *f = NULL; - - assert(fn); - assert(line); - - f = fopen(fn, "we"); - if (!f) - return -errno; - - errno = 0; - if (fputs(line, f) < 0) - return errno ? -errno : -EIO; - - if (!endswith(line, "\n")) - fputc('\n', f); - - fflush(f); - - if (ferror(f)) - return errno ? -errno : -EIO; - - return 0; -} - int fchmod_umask(int fd, mode_t m) { mode_t u; int r; @@ -564,339 +540,6 @@ int fchmod_umask(int fd, mode_t m) { return r; } -int write_one_line_file_atomic(const char *fn, const char *line) { - _cleanup_fclose_ FILE *f = NULL; - _cleanup_free_ char *p = NULL; - int r; - - assert(fn); - assert(line); - - r = fopen_temporary(fn, &f, &p); - if (r < 0) - return r; - - fchmod_umask(fileno(f), 0644); - - errno = 0; - if (fputs(line, f) < 0) { - r = -errno; - goto finish; - } - - if (!endswith(line, "\n")) - fputc('\n', f); - - fflush(f); - - if (ferror(f)) - r = errno ? -errno : -EIO; - else { - if (rename(p, fn) < 0) - r = -errno; - else - r = 0; - } - -finish: - if (r < 0) - unlink(p); - - return r; -} - -int read_one_line_file(const char *fn, char **line) { - _cleanup_fclose_ FILE *f = NULL; - char t[LINE_MAX], *c; - - assert(fn); - assert(line); - - f = fopen(fn, "re"); - if (!f) - return -errno; - - if (!fgets(t, sizeof(t), f)) { - - if (ferror(f)) - return errno ? -errno : -EIO; - - t[0] = 0; - } - - c = strdup(t); - if (!c) - return -ENOMEM; - truncate_nl(c); - - *line = c; - return 0; -} - -int read_full_file(const char *fn, char **contents, size_t *size) { - _cleanup_fclose_ FILE *f = NULL; - size_t n, l; - _cleanup_free_ char *buf = NULL; - struct stat st; - - assert(fn); - assert(contents); - - f = fopen(fn, "re"); - if (!f) - return -errno; - - if (fstat(fileno(f), &st) < 0) - return -errno; - - /* Safety check */ - if (st.st_size > 4*1024*1024) - return -E2BIG; - - n = st.st_size > 0 ? st.st_size : LINE_MAX; - l = 0; - - for (;;) { - char *t; - size_t k; - - t = realloc(buf, n+1); - if (!t) - return -ENOMEM; - - buf = t; - k = fread(buf + l, 1, n - l, f); - - if (k <= 0) { - if (ferror(f)) - return -errno; - - break; - } - - l += k; - n *= 2; - - /* Safety check */ - if (n > 4*1024*1024) - return -E2BIG; - } - - buf[l] = 0; - *contents = buf; - buf = NULL; - - if (size) - *size = l; - - return 0; -} - -int parse_env_file( - const char *fname, - const char *separator, ...) { - - int r = 0; - char *contents = NULL, *p; - - assert(fname); - assert(separator); - - if ((r = read_full_file(fname, &contents, NULL)) < 0) - return r; - - p = contents; - for (;;) { - const char *key = NULL; - - p += strspn(p, separator); - p += strspn(p, WHITESPACE); - - if (!*p) - break; - - if (!strchr(COMMENTS, *p)) { - va_list ap; - char **value; - - va_start(ap, separator); - while ((key = va_arg(ap, char *))) { - size_t n; - char *v; - - value = va_arg(ap, char **); - - n = strlen(key); - if (!strneq(p, key, n) || - p[n] != '=') - continue; - - p += n + 1; - n = strcspn(p, separator); - - if (n >= 2 && - strchr(QUOTES, p[0]) && - p[n-1] == p[0]) - v = strndup(p+1, n-2); - else - v = strndup(p, n); - - if (!v) { - r = -ENOMEM; - va_end(ap); - goto fail; - } - - if (v[0] == '\0') { - /* return empty value strings as NULL */ - free(v); - v = NULL; - } - - free(*value); - *value = v; - - p += n; - - r ++; - break; - } - va_end(ap); - } - - if (!key) - p += strcspn(p, separator); - } - -fail: - free(contents); - return r; -} - -int load_env_file(const char *fname, char ***rl) { - - _cleanup_fclose_ FILE *f; - _cleanup_strv_free_ char **m = NULL; - _cleanup_free_ char *c = NULL; - - assert(fname); - assert(rl); - - /* This reads an environment file, but will not complain about - * any invalid assignments, that needs to be done by the - * caller */ - - f = fopen(fname, "re"); - if (!f) - return -errno; - - while (!feof(f)) { - char l[LINE_MAX], *p, *cs, *b; - - if (!fgets(l, sizeof(l), f)) { - if (ferror(f)) - return -errno; - - /* The previous line was a continuation line? - * Let's process it now, before we leave the - * loop */ - if (c) - goto process; - - break; - } - - /* Is this a continuation line? If so, just append - * this to c, and go to next line right-away */ - cs = endswith(l, "\\\n"); - if (cs) { - *cs = '\0'; - b = strappend(c, l); - if (!b) - return -ENOMEM; - - free(c); - c = b; - continue; - } - - /* If the previous line was a continuation line, - * append the current line to it */ - if (c) { - b = strappend(c, l); - if (!b) - return -ENOMEM; - - free(c); - c = b; - } - - process: - p = strstrip(c ? c : l); - - if (*p && !strchr(COMMENTS, *p)) { - _cleanup_free_ char *u; - int k; - - u = normalize_env_assignment(p); - if (!u) - return -ENOMEM; - - k = strv_extend(&m, u); - if (k < 0) - return -ENOMEM; - } - - free(c); - c = NULL; - } - - *rl = m; - m = NULL; - - return 0; -} - -int write_env_file(const char *fname, char **l) { - char **i, *p; - FILE *f; - int r; - - r = fopen_temporary(fname, &f, &p); - if (r < 0) - return r; - - fchmod_umask(fileno(f), 0644); - - errno = 0; - STRV_FOREACH(i, l) { - fputs(*i, f); - fputc('\n', f); - } - - fflush(f); - - if (ferror(f)) { - if (errno != 0) - r = -errno; - else - r = -EIO; - } else { - if (rename(p, fname) < 0) - r = -errno; - else - r = 0; - } - - if (r < 0) - unlink(p); - - fclose(f); - free(p); - - return r; -} - char *truncate_nl(char *s) { assert(s); diff --git a/src/shared/util.h b/src/shared/util.h index fcb0d9af17..88ef2f9040 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -177,15 +177,6 @@ char *split_quoted(const char *c, size_t *l, char **state); pid_t get_parent_of_pid(pid_t pid, pid_t *ppid); int get_starttime_of_pid(pid_t pid, unsigned long long *st); -int write_one_line_file(const char *fn, const char *line); -int write_one_line_file_atomic(const char *fn, const char *line); -int read_one_line_file(const char *fn, char **line); -int read_full_file(const char *fn, char **contents, size_t *size); - -int parse_env_file(const char *fname, const char *separator, ...) _sentinel_; -int load_env_file(const char *fname, char ***l); -int write_env_file(const char *fname, char **l); - char *strappend(const char *s, const char *suffix); char *strnappend(const char *s, const char *suffix, size_t length); diff --git a/src/shared/virt.c b/src/shared/virt.c index fc62c72328..eed321016d 100644 --- a/src/shared/virt.c +++ b/src/shared/virt.c @@ -25,6 +25,7 @@ #include "util.h" #include "virt.h" +#include "fileio.h" /* Returns a short identifier for the various VM implementations */ int detect_vm(const char **id) { diff --git a/src/shutdownd/shutdownd.c b/src/shutdownd/shutdownd.c index c0747415fd..0464c89187 100644 --- a/src/shutdownd/shutdownd.c +++ b/src/shutdownd/shutdownd.c @@ -38,6 +38,7 @@ #include "util.h" #include "utmp-wtmp.h" #include "mkdir.h" +#include "fileio.h" union shutdown_buffer { struct sd_shutdown_command command; diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c index 218de3a567..070762546b 100644 --- a/src/sleep/sleep.c +++ b/src/sleep/sleep.c @@ -27,6 +27,7 @@ #include "util.h" #include "systemd/sd-id128.h" #include "systemd/sd-messages.h" +#include "fileio.h" int main(int argc, char *argv[]) { const char *verb; diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c index a8cbb5a326..2d43660bb5 100644 --- a/src/sysctl/sysctl.c +++ b/src/sysctl/sysctl.c @@ -34,6 +34,7 @@ #include "hashmap.h" #include "path-util.h" #include "conf-files.h" +#include "fileio.h" static char **arg_prefixes = NULL; diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 12e343e853..df8da96eb7 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -66,6 +66,7 @@ #include "logs-show.h" #include "path-util.h" #include "socket-util.h" +#include "fileio.h" static const char *arg_type = NULL; static const char *arg_load_state = NULL; diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c index 041daaba68..8a71ee94bb 100644 --- a/src/test/test-unit-file.c +++ b/src/test/test-unit-file.c @@ -34,6 +34,7 @@ #include "hashmap.h" #include "load-fragment.h" #include "strv.h" +#include "fileio.h" static void test_unit_file_get_set(void) { int r; diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index b8c6b36858..80c24eb62b 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -35,6 +35,8 @@ #include "hwclock.h" #include "conf-files.h" #include "path-util.h" +#include "fileio-label.h" +#include "label.h" #define NULL_ADJTIME_UTC "0.0 0 0\n0\nUTC\n" #define NULL_ADJTIME_LOCAL "0.0 0 0\n0\nLOCAL\n" @@ -269,8 +271,8 @@ static int write_data_local_rtc(void) { return 0; } } - - r = write_one_line_file_atomic("/etc/adjtime", w); + label_init("/etc"); + r = write_one_line_file_atomic_label("/etc/adjtime", w); free(w); return r; diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index 57674bf278..fbacb45877 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -91,6 +91,7 @@ #include #include "udev.h" +#include "fileio.h" enum netname_type{ NET_UNDEF, diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 088a89f470..92911efa90 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -48,6 +48,7 @@ #include "sd-daemon.h" #include "cgroup-util.h" #include "dev-setup.h" +#include "fileio.h" static bool debug; diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c index 1208aeb524..c1f662baa6 100644 --- a/src/vconsole/vconsole-setup.c +++ b/src/vconsole/vconsole-setup.c @@ -39,6 +39,7 @@ #include "log.h" #include "macro.h" #include "virt.h" +#include "fileio.h" static bool is_vconsole(int fd) { unsigned char data[1]; -- cgit v1.2.1 From a860325e7ed7ea2bd688b2f002021123a05af084 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 14 Feb 2013 16:37:31 +0100 Subject: added some missing include for a5c32cff1f56afe6f0c6c70d91a88a7a8238b2d7 --- src/cryptsetup/cryptsetup-generator.c | 1 + src/journal/journal-gatewayd.c | 1 + 2 files changed, 2 insertions(+) diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index 6e7b7070e2..f416675ba0 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -29,6 +29,7 @@ #include "mkdir.h" #include "virt.h" #include "strv.h" +#include "fileio.h" static const char *arg_dest = "/tmp"; static bool arg_enabled = true; diff --git a/src/journal/journal-gatewayd.c b/src/journal/journal-gatewayd.c index dfec8352bb..7e29c905e2 100644 --- a/src/journal/journal-gatewayd.c +++ b/src/journal/journal-gatewayd.c @@ -35,6 +35,7 @@ #include "microhttpd-util.h" #include "virt.h" #include "build.h" +#include "fileio.h" typedef struct RequestMeta { sd_journal *journal; -- cgit v1.2.1 From 1fd961211df69ce672252d543bf4777738647048 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 12 Jan 2013 16:55:04 -0500 Subject: nspawn: print PID and show how to enter the namespace systemd-nspawn will now print the PID of the child. An example showing how to enter the container is added to the man page. Support for nsenter without an explicit command was added in https://github.com/karelzak/util-linux/commit/5758069 (post v2.22.2). So this example requires both a new kernel and the latest util-linux. --- man/systemd-nspawn.xml | 30 +++++++++++++++++++++++++++--- src/nspawn/nspawn.c | 26 ++++++++++++++++++++------ 2 files changed, 47 insertions(+), 9 deletions(-) diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index 6a01ffd450..5cba40bcd4 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -49,7 +49,10 @@ - systemd-nspawn OPTIONS COMMAND ARGS + systemd-nspawn + OPTIONS + COMMAND + ARGS @@ -114,7 +117,10 @@ see each other. The PID namespace separation of the two containers is complete and the containers will share very few runtime objects except for the - underlying file system. + underlying file system. It is however possible to + enter an existing container, see + Example 4 below. + systemd-nspawn implements the ~/debian-tree/ and then spawns a shell in a namespace container in it. - @@ -332,6 +337,24 @@ boots an OS in a namespace container in it. + + Example 4 + + To enter the container, PID of one of the + processes sharing the new namespaces must be used. + systemd-nspawn prints the PID + (as viewed from the outside) of the launched process, + and it can be used to enter the container. + + # nsenter -muinpt $PID + + nsenter1 + is part of + util-linux. + Kernel support for entering namespaces was added in + Linux 3.8. + + Exit status @@ -344,6 +367,7 @@ systemd1, chroot1, + unshare1, yum8, debootstrap8, pacman8 diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 1d602a5b31..2fec9023a1 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -1204,12 +1205,11 @@ int main(int argc, char *argv[]) { for (;;) { siginfo_t status; + int pipefd[2]; - if (saved_attr_valid) { - if (tcsetattr(STDIN_FILENO, TCSANOW, &raw_attr) < 0) { - log_error("Failed to set terminal attributes: %m"); - goto finish; - } + if(pipe2(pipefd, O_NONBLOCK|O_CLOEXEC) < 0) { + log_error("pipe2(): %m"); + goto finish; } pid = syscall(__NR_clone, SIGCHLD|CLONE_NEWIPC|CLONE_NEWNS|CLONE_NEWPID|CLONE_NEWUTS|(arg_private_network ? CLONE_NEWNET : 0), NULL); @@ -1224,7 +1224,6 @@ int main(int argc, char *argv[]) { if (pid == 0) { /* child */ - const char *home = NULL; uid_t uid = (uid_t) -1; gid_t gid = (gid_t) -1; @@ -1245,9 +1244,20 @@ int main(int argc, char *argv[]) { envp[2] = strv_find_prefix(environ, "TERM="); n_env = 3; + close(pipefd[1]); + fd_wait_for_event(pipefd[0], POLLHUP, -1); + close(pipefd[0]); + close_nointr_nofail(master); master = -1; + if (saved_attr_valid) { + if (tcsetattr(STDIN_FILENO, TCSANOW, &raw_attr) < 0) { + log_error("Failed to set terminal attributes: %m"); + goto child_fail; + } + } + close_nointr(STDIN_FILENO); close_nointr(STDOUT_FILENO); close_nointr(STDERR_FILENO); @@ -1482,6 +1492,10 @@ int main(int argc, char *argv[]) { _exit(EXIT_FAILURE); } + log_info("Init process in the container running as PID %d", pid); + close(pipefd[0]); + close(pipefd[1]); + fdset_free(fds); fds = NULL; -- cgit v1.2.1 From b823b5e272d07d31c12625a268e8d563289a4db5 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 14 Feb 2013 11:26:05 +0100 Subject: bootchart: more fixes for bootchart in the initramfs --- src/bootchart/bootchart.c | 10 +++++++++- src/bootchart/bootchart.h | 2 ++ src/bootchart/svg.c | 14 ++++++++++---- 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index adfaba57b0..e34c08a5eb 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -23,6 +23,7 @@ #include #include #include +#include #include #include #include @@ -32,6 +33,7 @@ #include #include #include +#include #include "bootchart.h" @@ -51,6 +53,7 @@ double interval; FILE *of = NULL; int overrun = 0; static int exiting = 0; +int sysfd=-1; /* graph defaults */ int entropy = 0; @@ -273,6 +276,9 @@ int main(int argc, char *argv[]) of = fopen(output_file, "w"); } + if (sysfd < 0) { + sysfd = open("/sys", O_RDONLY); + } /* wait for /proc to become available, discarding samples */ if (!(graph_start > 0.0)) @@ -331,7 +337,6 @@ int main(int argc, char *argv[]) if (ps->smaps) fclose(ps->smaps); } - closedir(proc); if (!of) { t = time(NULL); @@ -350,6 +355,9 @@ int main(int argc, char *argv[]) fprintf(stderr, "bootchartd: Wrote %s\n", output_file); fclose(of); + closedir(proc); + close(sysfd); + /* nitpic cleanups */ ps = ps_first; while (ps->next_ps) { diff --git a/src/bootchart/bootchart.h b/src/bootchart/bootchart.h index 7793cfc63c..6b11fd8b8e 100644 --- a/src/bootchart/bootchart.h +++ b/src/bootchart/bootchart.h @@ -117,6 +117,8 @@ extern char init_path[PATH_MAX]; extern FILE *of; extern DIR *proc; +extern int procfd; +extern int sysfd; extern double gettime_ns(void); extern void log_uptime(void); diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index 6ad7348ecb..dc55cb3797 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -28,6 +28,8 @@ #include #include #include +#include +#include #include "bootchart.h" #include "util.h" @@ -151,10 +153,12 @@ static void svg_title(void) char *c; FILE *f; time_t t; + int fd; struct utsname uts; /* grab /proc/cmdline */ - f = fopen("/proc/cmdline", "r"); + fd = openat(procfd, "cmdline", O_RDONLY); + f = fdopen(fd, "r"); if (f) { if (!fgets(cmdline, 255, f)) sprintf(cmdline, "Unknown"); @@ -167,8 +171,9 @@ static void svg_title(void) strncpy(rootbdev, &c[10], 3); rootbdev[3] = '\0'; } - sprintf(filename, "/sys/block/%s/device/model", rootbdev); - f = fopen(filename, "r"); + sprintf(filename, "block/%s/device/model", rootbdev); + fd = openat(sysfd, filename, O_RDONLY); + f = fdopen(fd, "r"); if (f) { if (!fgets(model, 255, f)) fprintf(stderr, "Error reading disk model for %s\n", rootbdev); @@ -184,7 +189,8 @@ static void svg_title(void) strftime(date, sizeof(date), "%a, %d %b %Y %H:%M:%S %z", localtime(&t)); /* CPU type */ - f = fopen("/proc/cpuinfo", "r"); + fd = openat(procfd, "cpuinfo", O_RDONLY); + f = fdopen(fd, "r"); if (f) { while (fgets(buf, 255, f)) { if (strstr(buf, "model name")) { -- cgit v1.2.1 From e93450c6c053d7499971a2b1310e893978f67f74 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 14 Feb 2013 11:26:07 +0100 Subject: bootchart: parse /etc/os-release rather than system-release Also parse it early, so that we can get it in the initramfs. --- src/bootchart/bootchart.c | 9 ++++++++- src/bootchart/bootchart.h | 2 +- src/bootchart/svg.c | 15 +++------------ 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index e34c08a5eb..7affacfdbf 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -82,6 +82,7 @@ static void signal_handler(int sig) int main(int argc, char *argv[]) { + _cleanup_free_ char *build = NULL; struct sigaction sig; struct ps_struct *ps; char output_file[PATH_MAX]; @@ -280,6 +281,12 @@ int main(int argc, char *argv[]) sysfd = open("/sys", O_RDONLY); } + if (!build) { + parse_env_file("/etc/os-release", NEWLINE, + "PRETTY_NAME", &build, + NULL); + } + /* wait for /proc to become available, discarding samples */ if (!(graph_start > 0.0)) log_uptime(); @@ -350,7 +357,7 @@ int main(int argc, char *argv[]) exit (EXIT_FAILURE); } - svg_do(); + svg_do(build); fprintf(stderr, "bootchartd: Wrote %s\n", output_file); fclose(of); diff --git a/src/bootchart/bootchart.h b/src/bootchart/bootchart.h index 6b11fd8b8e..84e9420998 100644 --- a/src/bootchart/bootchart.h +++ b/src/bootchart/bootchart.h @@ -124,4 +124,4 @@ extern double gettime_ns(void); extern void log_uptime(void); extern void log_sample(int sample); -extern void svg_do(void); +extern void svg_do(const char *build); diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index dc55cb3797..414d7af9b9 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -140,7 +140,7 @@ static void svg_header(void) } -static void svg_title(void) +static void svg_title(const char *build) { char cmdline[256] = ""; char filename[PATH_MAX]; @@ -149,7 +149,6 @@ static void svg_title(void) char model[256] = "Unknown"; char date[256] = "Unknown"; char cpu[256] = "Unknown"; - char build[256] = "Unknown"; char *c; FILE *f; time_t t; @@ -201,14 +200,6 @@ static void svg_title(void) fclose(f); } - /* Build - 1st line from /etc/system-release */ - f = fopen("/etc/system-release", "r"); - if (f) { - if (fgets(buf, 255, f)) - strncpy(build, buf, 255); - fclose(f); - } - svg("Bootchart for %s - %s\n", uts.nodename, date); svg("System: %s %s %s %s\n", @@ -1053,7 +1044,7 @@ static void svg_top_ten_pss(void) } -void svg_do(void) +void svg_do(const char *build) { struct ps_struct *ps; @@ -1106,7 +1097,7 @@ void svg_do(void) svg("\n\n"); svg("\n"); - svg_title(); + svg_title(build); svg("\n\n"); svg("\n"); -- cgit v1.2.1 From c3fec6715df4df7bfec9a0d0315e8f17b53eeb8e Mon Sep 17 00:00:00 2001 From: William Giokas <1007380@gmail.com> Date: Thu, 14 Feb 2013 00:13:54 -0600 Subject: man: Add even more to the bootchart man page Essentially transfer the 'README' file in src/bootchart to the man page for easier reading by users. Moved the 'History' section to the bottom, before the 'See Also' section. man/systemd-bootchart.xml | 100 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 83 insertions(+), 17 deletions(-) --- man/systemd-bootchart.xml | 100 ++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 83 insertions(+), 17 deletions(-) diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml index a3fea05b5c..f87f821257 100644 --- a/man/systemd-bootchart.xml +++ b/man/systemd-bootchart.xml @@ -54,10 +54,19 @@ Description - Systemd-bootchart is an boot time analysis tool. It represents - various aspects of the system as graph elements. These graph - elements allow the user to determine resource usage, efficiency - and performance issues. + systemd-bootchart is a tool used to analyze a boot sequence. + It collects system information pertaining to the CPU and disk load, as + well as per-process information, and then creates a chart with this + information. Usually it is invoked by setting the init to + systemd-bootchart on the kernel command line. It + be run after boot to analyze running processes, though it is recommended + to use the switch when doing this. + + After collecting a certain amount of data (default: 20 seconds) it + will write the SVG chart to /run/log. This chart + can be used to find problems in the start up sequence and where these + problems exist. It is essentially a more detailed version of the + systemd-analyze plot function. @@ -69,15 +78,15 @@ - Kernel invocation + Kernel invocation The kernel can invoke systemd-bootchart instead of the init process. In itself, systemd-bootchart will invoke /sbin/init if invoked in - this matter. + this manner. - Started as a standalone program + Started as a standalone program One can execute systemd-bootchart as normal application from the commandline. In this mode it is highly recommended to pass the "-r" flag in order @@ -92,12 +101,15 @@ Options - + These options can be set globally in the /etc/systemd/bootchart.conf + file. + + - Specify the amount of samples to + Specify the amount of samples, N, to record total before bootchart exits. Each sample will record at intervals defined by --freq. @@ -105,10 +117,10 @@ - Specify the sample log frequency. + Specify the sample log frequency, N. This can be a fractional number, but must be larger than 0.0. Most systems can cope with values under 25-50 without - impacting boot time severely. + creating too much overhead. @@ -185,19 +197,73 @@ Output - Systemd-bootchart generates SVG graphs. In order to render these + systemd-bootchart generates SVG graphs. In order to render these on a graphical display any SVG capable viewer can be used. It should be noted that the SVG render engines in most browsers (including Chrome and Firefox) are many times faster than dedicated graphical applications - like Gimp and Inkscape. Just point your browser at "file:///var/log"! + like Gimp and Inkscape. Just point your browser at "file:///run/log"! + + + + + History + + This version of bootchart was implemented from scratch, but inspired + by former bootchart incantations: + + + + Original bash + The original bash/shell code implemented + bootchart. This version created a compressed tarball for + processing with external applications. This version did + not graph anything, only generated data. + + + + Ubuntu C Implementation + This version replaced the shell version with + a fast and efficient data logger, but also did not graph + the data. + + + + Java bootchart + This was the original graphing application + for charting the data, written in java. + + + + pybootchartgui.py + pybootchart created a graph from the data + collected by either the bash or C version. + + + + The version of bootchart you are using now combines both the data + collection and the charting into a single application, making it more + efficient and simpler. There are no longer any timing issues with the data + collector and the grapher, as the graphing cannot be run until the data + has been collected. Also, the data kept in memory is reduced to the absolute + minimum needed. + + + + + + See Also + + bootchart.conf5 - See Also - - bootchart.conf5 - + Bugs + For bugs, please contact the author or current maintainer: + + Auke Kok + auke-jan.h.kok@intel.com + -- cgit v1.2.1 From 5659774c575c3c7ac4aa0620a6528cd39e983af6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 14 Feb 2013 11:02:02 -0500 Subject: nspawn: fail if unable to close pipe --- src/nspawn/nspawn.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 2fec9023a1..b8962e9894 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1244,9 +1244,9 @@ int main(int argc, char *argv[]) { envp[2] = strv_find_prefix(environ, "TERM="); n_env = 3; - close(pipefd[1]); + close_nointr_nofail(pipefd[1]); fd_wait_for_event(pipefd[0], POLLHUP, -1); - close(pipefd[0]); + close_nointr_nofail(pipefd[0]); close_nointr_nofail(master); master = -1; @@ -1493,8 +1493,8 @@ int main(int argc, char *argv[]) { } log_info("Init process in the container running as PID %d", pid); - close(pipefd[0]); - close(pipefd[1]); + close_nointr_nofail(pipefd[0]); + close_nointr_nofail(pipefd[1]); fdset_free(fds); fds = NULL; -- cgit v1.2.1 From cec7eda533d6ce74667c712de3bbad29214c1030 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 14 Feb 2013 13:32:19 -0500 Subject: systemctl: use automatic cleanup --- src/systemctl/systemctl.c | 168 +++++++++++++--------------------------------- 1 file changed, 48 insertions(+), 120 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index df8da96eb7..70fd15562e 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -352,7 +352,7 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) { id_len = max_id_len; for (u = unit_infos; u < unit_infos + c; u++) { - char *e; + char _cleanup_free_ *e = NULL; const char *on_loaded, *off_loaded; const char *on_active, *off_active; @@ -396,8 +396,6 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) { printf("%.*s\n", desc_len, u->description); else printf("%s\n", u->description); - - free(e); } if (!arg_no_legend) { @@ -539,7 +537,7 @@ static void output_unit_file_list(const UnitFileList *units, unsigned c) { printf("%-*s %-*s\n", id_cols, "UNIT FILE", state_cols, "STATE"); for (u = units; u < units + c; u++) { - char *e; + char _cleanup_free_ *e = NULL; const char *on, *off; const char *id; @@ -567,8 +565,6 @@ static void output_unit_file_list(const UnitFileList *units, unsigned c) { printf("%-*s %s%-*s%s\n", id_cols, e ? e : id, on, state_cols, unit_file_state_to_string(u->state), off); - - free(e); } if (!arg_no_legend) @@ -825,45 +821,40 @@ static int list_dependencies_compare(const void *_a, const void *_b) { } static int list_dependencies_one(DBusConnection *bus, const char *name, int level, char **units, unsigned int branches) { - char **deps = NULL; + char _cleanup_strv_free_ **deps = NULL, **u; char **c; - char **u = NULL; int r = 0; u = strv_append(units, name); - if(!u) + if (!u) return log_oom(); r = list_dependencies_get_dependencies(bus, name, &deps); if (r < 0) - goto finish; + return r; qsort(deps, strv_length(deps), sizeof (char*), list_dependencies_compare); STRV_FOREACH(c, deps) { if (strv_contains(u, *c)) { r = list_dependencies_print("...", level + 1, (branches << 1) | (c[1] == NULL ? 0 : 1), 1); - if(r < 0) - goto finish; + if (r < 0) + return r; continue; } r = list_dependencies_print(*c, level, branches, c[1] == NULL); - if(r < 0) - goto finish; + if (r < 0) + return r; if (arg_all || unit_name_to_type(*c) == UNIT_TARGET) { r = list_dependencies_one(bus, *c, level + 1, u, (branches << 1) | (c[1] == NULL ? 0 : 1)); if(r < 0) - goto finish; + return r; } } - r = 0; -finish: - strv_free(deps); - strv_free(u); - return r; + return 0; } static int list_dependencies(DBusConnection *bus, char **args) { @@ -922,7 +913,7 @@ static int list_jobs(DBusConnection *bus, char **args) { while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { const char *name, *type, *state, *job_path, *unit_path; uint32_t id; - char *e; + char _cleanup_free_ *e = NULL; if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); @@ -943,7 +934,6 @@ static int list_jobs(DBusConnection *bus, char **args) { e = arg_full ? NULL : ellipsize(name, 25, 33); printf("%4u %-25s %-15s %-7s\n", id, e ? e : name, type, state); - free(e); k++; @@ -1093,15 +1083,15 @@ typedef struct WaitData { } WaitData; static DBusHandlerResult wait_filter(DBusConnection *connection, DBusMessage *message, void *data) { - DBusError error; + DBusError _cleanup_dbus_error_free_ error; WaitData *d = data; + dbus_error_init(&error); + assert(connection); assert(message); assert(d); - dbus_error_init(&error); - log_debug("Got D-Bus request: %s.%s() on %s", dbus_message_get_interface(message), dbus_message_get_member(message), @@ -1130,7 +1120,7 @@ static DBusHandlerResult wait_filter(DBusConnection *connection, DBusMessage *me if (!isempty(unit)) d->name = strdup(unit); - goto finish; + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } #ifndef LEGACY dbus_error_free(&error); @@ -1147,15 +1137,13 @@ static DBusHandlerResult wait_filter(DBusConnection *connection, DBusMessage *me if (*result) d->result = strdup(result); - goto finish; + return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } #endif log_error("Failed to parse message: %s", bus_error_message(&error)); } -finish: - dbus_error_free(&error); return DBUS_HANDLER_RESULT_NOT_YET_HANDLED; } @@ -1525,8 +1513,8 @@ static int start_unit(DBusConnection *bus, char **args) { int r, ret = 0; const char *method, *mode, *one_name; - Set *s = NULL; - DBusError error; + Set _cleanup_set_free_free_ *s = NULL; + DBusError _cleanup_dbus_error_free_ error; char **name; dbus_error_init(&error); @@ -1580,14 +1568,12 @@ static int start_unit(DBusConnection *bus, char **args) { ret = enable_wait_for_jobs(bus); if (ret < 0) { log_error("Could not watch jobs: %s", strerror(-ret)); - goto finish; + return ret; } s = set_new(string_hash_func, string_compare_func); - if (!s) { - ret = log_oom(); - goto finish; - } + if (!s) + return log_oom(); } if (one_name) { @@ -1606,10 +1592,8 @@ static int start_unit(DBusConnection *bus, char **args) { if (!arg_no_block) { r = wait_for_jobs(bus, s); - if (r < 0) { - ret = r; - goto finish; - } + if (r < 0) + return r; /* When stopping units, warn if they can still be triggered by * another active unit (socket, path, timer) */ @@ -1622,10 +1606,6 @@ static int start_unit(DBusConnection *bus, char **args) { } } -finish: - set_free_free(s); - dbus_error_free(&error); - return ret; } @@ -2566,7 +2546,7 @@ static void show_unit_help(UnitStatusInfo *i) { if (startswith(*p, "man:")) { size_t k; char *e = NULL; - char *page = NULL, *section = NULL; + char _cleanup_free_ *page = NULL, *section = NULL; const char *args[4] = { "man", NULL, NULL, NULL }; pid_t pid; @@ -2577,14 +2557,8 @@ static void show_unit_help(UnitStatusInfo *i) { if (e) { page = strndup((*p) + 4, e - *p - 4); - if (!page) { - log_oom(); - return; - } - section = strndup(e + 1, *p + k - e - 2); - if (!section) { - free(page); + if (!page || !section) { log_oom(); return; } @@ -2597,8 +2571,6 @@ static void show_unit_help(UnitStatusInfo *i) { pid = fork(); if (pid < 0) { log_error("Failed to fork: %m"); - free(page); - free(section); continue; } @@ -2609,9 +2581,6 @@ static void show_unit_help(UnitStatusInfo *i) { _exit(EXIT_FAILURE); } - free(page); - free(section); - wait_for_terminate(pid, NULL); } else log_info("Can't show: %s", *p); @@ -2975,7 +2944,7 @@ static int print_property(const char *name, DBusMessageIter *iter) { zero(info); if (exec_status_info_deserialize(&sub, &info) >= 0) { char timestamp1[FORMAT_TIMESTAMP_MAX], timestamp2[FORMAT_TIMESTAMP_MAX]; - char *t; + char _cleanup_free_ *t; t = strv_join(info.argv, " "); @@ -2991,8 +2960,6 @@ static int print_property(const char *name, DBusMessageIter *iter) { info.status, info.code == CLD_EXITED ? "" : "/", strempty(info.code == CLD_EXITED ? NULL : signal_to_string(info.status))); - - free(t); } free(info.path); @@ -3110,7 +3077,7 @@ static int show_one(const char *verb, DBusConnection *bus, const char *path, boo static int show_one_by_pid(const char *verb, DBusConnection *bus, uint32_t pid, bool *new_line) { _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; const char *path = NULL; - DBusError error; + DBusError _cleanup_dbus_error_free_ error; int r; dbus_error_init(&error); @@ -3126,21 +3093,16 @@ static int show_one_by_pid(const char *verb, DBusConnection *bus, uint32_t pid, DBUS_TYPE_UINT32, &pid, DBUS_TYPE_INVALID); if (r < 0) - goto finish; + return r; if (!dbus_message_get_args(reply, &error, DBUS_TYPE_OBJECT_PATH, &path, DBUS_TYPE_INVALID)) { log_error("Failed to parse reply: %s", bus_error_message(&error)); - r = -EIO; - goto finish; + return -EIO; } r = show_one(verb, bus, path, false, new_line); - -finish: - dbus_error_free(&error); - return r; } @@ -3777,10 +3739,12 @@ static int enable_unit(DBusConnection *bus, char **args) { UnitFileChange *changes = NULL; unsigned n_changes = 0, i; int carries_install_info = -1; - DBusMessage *m = NULL, *reply = NULL; + DBusMessage _cleanup_dbus_message_unref_ *m = NULL, *reply = NULL; int r; - DBusError error; - char **mangled_names = NULL; + DBusError _cleanup_dbus_error_free_ error; + char _cleanup_strv_free_ **mangled_names = NULL; + + dbus_error_init(&error); r = enable_sysv_units(args); if (r < 0) @@ -3789,8 +3753,6 @@ static int enable_unit(DBusConnection *bus, char **args) { if (!args[1]) return 0; - dbus_error_init(&error); - if (!bus || avoid_bus()) { if (streq(verb, "enable")) { r = unit_file_enable(arg_scope, arg_runtime, arg_root, args+1, arg_force, &changes, &n_changes); @@ -3971,25 +3933,15 @@ static int enable_unit(DBusConnection *bus, char **args) { " D-Bus, udev, scripted systemctl call, ...).\n"); finish: - if (m) - dbus_message_unref(m); - - if (reply) - dbus_message_unref(reply); - unit_file_changes_free(changes, n_changes); - dbus_error_free(&error); - - strv_free(mangled_names); - return r; } static int unit_is_enabled(DBusConnection *bus, char **args) { - DBusError error; + DBusError _cleanup_dbus_error_free_ error; int r; - DBusMessage *reply = NULL; + DBusMessage _cleanup_dbus_message_unref_ *reply = NULL; bool enabled; char **name; @@ -4007,10 +3959,8 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { UnitFileState state; state = unit_file_get_state(arg_scope, arg_root, *name); - if (state < 0) { - r = state; - goto finish; - } + if (state < 0) + return state; if (state == UNIT_FILE_ENABLED || state == UNIT_FILE_ENABLED_RUNTIME || @@ -4036,14 +3986,13 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { DBUS_TYPE_STRING, name, DBUS_TYPE_INVALID); if (r) - goto finish; + return r; if (!dbus_message_get_args(reply, &error, DBUS_TYPE_STRING, &s, DBUS_TYPE_INVALID)) { log_error("Failed to parse reply: %s", bus_error_message(&error)); - r = -EIO; - goto finish; + return -EIO; } dbus_message_unref(reply); @@ -4059,14 +4008,7 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { } } - r = enabled ? 0 : 1; - -finish: - if (reply) - dbus_message_unref(reply); - - dbus_error_free(&error); - return r; + return enabled ? 0 : 1; } static int systemctl_help(void) { @@ -4945,8 +4887,8 @@ static int action_to_runlevel(void) { } static int talk_upstart(void) { - DBusMessage *m = NULL, *reply = NULL; - DBusError error; + DBusMessage _cleanup_dbus_message_unref_ *m = NULL, *reply = NULL; + DBusError _cleanup_dbus_error_free_ error; int previous, rl, r; char env1_buf[] = "RUNLEVEL=X", @@ -5023,20 +4965,12 @@ static int talk_upstart(void) { r = 1; finish: - if (m) - dbus_message_unref(m); - - if (reply) - dbus_message_unref(reply); - if (bus) { dbus_connection_flush(bus); dbus_connection_close(bus); dbus_connection_unref(bus); } - dbus_error_free(&error); - return r; } @@ -5246,7 +5180,7 @@ static int systemctl_main(DBusConnection *bus, int argc, char *argv[], DBusError } static int send_shutdownd(usec_t t, char mode, bool dry_run, bool warn, const char *message) { - int fd; + int _cleanup_close_ fd; struct msghdr msghdr; struct iovec iovec[2]; union sockaddr_union sockaddr; @@ -5283,12 +5217,9 @@ static int send_shutdownd(usec_t t, char mode, bool dry_run, bool warn, const ch } msghdr.msg_iov = iovec; - if (sendmsg(fd, &msghdr, MSG_NOSIGNAL) < 0) { - close_nointr_nofail(fd); + if (sendmsg(fd, &msghdr, MSG_NOSIGNAL) < 0) return -errno; - } - close_nointr_nofail(fd); return 0; } @@ -5394,7 +5325,7 @@ static int halt_main(DBusConnection *bus) { } if (arg_when > 0) { - char *m; + char _cleanup_free_ *m; m = strv_join(arg_wall, " "); r = send_shutdownd(arg_when, @@ -5405,7 +5336,6 @@ static int halt_main(DBusConnection *bus) { arg_dry, !arg_no_wall, m); - free(m); if (r < 0) log_warning("Failed to talk to shutdownd, proceeding with immediate shutdown: %s", strerror(-r)); @@ -5458,7 +5388,7 @@ static int runlevel_main(void) { int main(int argc, char*argv[]) { int r, retval = EXIT_FAILURE; DBusConnection *bus = NULL; - DBusError error; + DBusError _cleanup_dbus_error_free_ error; dbus_error_init(&error); @@ -5561,8 +5491,6 @@ finish: dbus_connection_unref(bus); } - dbus_error_free(&error); - dbus_shutdown(); strv_free(arg_property); -- cgit v1.2.1 From f6bb13ab8db51aaedc825fec2f0458b60309b27a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 14 Feb 2013 14:08:09 -0500 Subject: systemctl: print wall message only if successful systemctl would write to the wall even if unsuccessful. https://bugs.freedesktop.org/show_bug.cgi?id=60393 --- src/systemctl/systemctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 70fd15562e..4c91a18b8b 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1841,7 +1841,7 @@ static int start_special(DBusConnection *bus, char **args) { } r = start_unit(bus, args); - if (r >= 0) + if (r == EXIT_SUCCESS) warn_wall(a); return r; -- cgit v1.2.1 From 47a81ba2e101058459328d2da3d9b950a8030c86 Mon Sep 17 00:00:00 2001 From: Umut Tezduyar Date: Thu, 7 Feb 2013 09:06:20 +0100 Subject: core: do not overwrite existing units source Only set source for freshly created .mounts coming from mountinfo file. --- src/core/mount.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/core/mount.c b/src/core/mount.c index 2aaf78ceae..e3d298eb96 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -1440,7 +1440,7 @@ static int mount_add_one( int r; Unit *u; bool delete; - char *e, *w = NULL, *o = NULL, *s = NULL, *f = NULL; + char *e, *w = NULL, *o = NULL, *f = NULL; MountParameters *p; bool load_extras = false; @@ -1488,6 +1488,12 @@ static int mount_add_one( goto fail; } + u->source_path = strdup("/proc/self/mountinfo"); + if (!u->source_path) { + r = -ENOMEM; + goto fail; + } + unit_add_to_load_queue(u); } else { delete = false; @@ -1513,7 +1519,6 @@ static int mount_add_one( if (!(w = strdup(what)) || !(o = strdup(options)) || - !(s = strdup("/proc/self/mountinfo")) || !(f = strdup(fstype))) { r = -ENOMEM; goto fail; @@ -1527,8 +1532,6 @@ static int mount_add_one( } MOUNT(u)->from_proc_self_mountinfo = true; - free(u->source_path); - u->source_path = s; free(p->what); p->what = w; @@ -1554,7 +1557,6 @@ static int mount_add_one( fail: free(w); free(o); - free(s); free(f); if (delete && u) -- cgit v1.2.1 From f7900e258dfb8ab55f333d02d96f908ca0ea8899 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Thu, 14 Feb 2013 21:32:49 +0100 Subject: bootchart: use conf-parser & CamelCase names in .conf --- src/bootchart/bootchart.c | 97 +++++++++++++++++++------------------------- src/bootchart/bootchart.conf | 22 +++++----- src/bootchart/bootchart.h | 11 ++--- src/shared/conf-parser.c | 27 ++++++++++++ src/shared/conf-parser.h | 1 + src/shared/util.c | 17 ++++++++ src/shared/util.h | 2 + 7 files changed, 105 insertions(+), 72 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 7affacfdbf..db345ee71f 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -34,11 +34,15 @@ #include #include #include +#include #include "bootchart.h" #include "util.h" #include "fileio.h" +#include "macro.h" +#include "conf-parser.h" +#include "strxcpyx.h" double graph_start; double log_start; @@ -56,11 +60,11 @@ static int exiting = 0; int sysfd=-1; /* graph defaults */ -int entropy = 0; -int initcall = 1; -int relative; -int filter = 1; -int pss = 0; +bool entropy = false; +bool initcall = true; +bool relative = false; +bool filter = true; +bool pss = false; int samples; int len = 500; /* we record len+1 (1 start sample) */ double hz = 25.0; /* 20 seconds log time */ @@ -88,60 +92,41 @@ int main(int argc, char *argv[]) char output_file[PATH_MAX]; char datestr[200]; time_t t = 0; - FILE *f; + const char *fn; + _cleanup_fclose_ FILE *f; int gind; - int i; + int i, r; + char *init = NULL, *output = NULL; + + const ConfigTableItem items[] = { + { "Bootchart", "Samples", config_parse_int, 0, &len }, + { "Bootchart", "Frequency", config_parse_double, 0, &hz }, + { "Bootchart", "Relative", config_parse_bool, 0, &relative }, + { "Bootchart", "Filter", config_parse_bool, 0, &filter }, + { "Bootchart", "Output", config_parse_path, 0, &output }, + { "Bootchart", "Init", config_parse_path, 0, &init }, + { "Bootchart", "PlotMemoryUsage", config_parse_bool, 0, &pss }, + { "Bootchart", "PlotEntropyGraph", config_parse_bool, 0, &entropy }, + { "Bootchart", "ScaleX", config_parse_double, 0, &scale_x }, + { "Bootchart", "ScaleY", config_parse_double, 0, &scale_y }, + { NULL, NULL, NULL, 0, NULL } + }; rlim.rlim_cur = 4096; rlim.rlim_max = 4096; (void) setrlimit(RLIMIT_NOFILE, &rlim); - f = fopen("/etc/systemd/bootchart.conf", "r"); + fn = "/etc/systemd/bootchart.conf"; + f = fopen(fn, "re"); if (f) { - char buf[256]; - char *key; - char *val; - - while (fgets(buf, 80, f) != NULL) { - char *c; - - c = strchr(buf, '\n'); - if (c) *c = 0; /* remove trailing \n */ - - if (buf[0] == '#') - continue; /* comment line */ - - key = strtok(buf, "="); - if (!key) - continue; - val = strtok(NULL, "="); - if (!val) - continue; - - // todo: filter leading/trailing whitespace - - if (streq(key, "samples")) - len = atoi(val); - if (streq(key, "freq")) - hz = atof(val); - if (streq(key, "rel")) - relative = atoi(val); - if (streq(key, "filter")) - filter = atoi(val); - if (streq(key, "pss")) - pss = atoi(val); - if (streq(key, "output")) - strncpy(output_path, val, PATH_MAX - 1); - if (streq(key, "init")) - strncpy(init_path, val, PATH_MAX - 1); - if (streq(key, "scale_x")) - scale_x = atof(val); - if (streq(key, "scale_y")) - scale_y = atof(val); - if (streq(key, "entropy")) - entropy = atoi(val); - } - fclose(f); + r = config_parse(fn, f, NULL, config_item_table_lookup, (void*) items, true, NULL); + if (r < 0) + log_warning("Failed to parse configuration file: %s", strerror(-r)); + + if (init != NULL) + strscpy(init_path, sizeof(init_path), init); + if (output != NULL) + strscpy(output_path, sizeof(output_path), output); } while (1) { @@ -167,13 +152,13 @@ int main(int argc, char *argv[]) break; switch (i) { case 'r': - relative = 1; + relative = true; break; case 'f': hz = atof(optarg); break; case 'F': - filter = 0; + filter = false; break; case 'n': len = atoi(optarg); @@ -185,7 +170,7 @@ int main(int argc, char *argv[]) strncpy(init_path, optarg, PATH_MAX - 1); break; case 'p': - pss = 1; + pss = true; break; case 'x': scale_x = atof(optarg); @@ -194,7 +179,7 @@ int main(int argc, char *argv[]) scale_y = atof(optarg); break; case 'e': - entropy = 1; + entropy = true; break; case 'h': fprintf(stderr, "Usage: %s [OPTIONS]\n", argv[0]); diff --git a/src/bootchart/bootchart.conf b/src/bootchart/bootchart.conf index 079750436a..48fad02726 100644 --- a/src/bootchart/bootchart.conf +++ b/src/bootchart/bootchart.conf @@ -1,4 +1,3 @@ - # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it @@ -8,13 +7,14 @@ # # See bootchart.conf(5) for details -#samples=500 -#freq=25 -#rel=0 -#filter=1 -#output= -#init=/path/to/init-binary -#pss=0 -#entropy=0 -#scale_x=100 -#scale_y=20 +[Bootchart] +#Samples=500 +#Frequency=25 +#Relative=no +#Filter=yes +#Output= +#Init=/path/to/init-binary +#PlotMemoryUsage=no +#PlotEntropyGraph=no +#ScaleX=100 +#ScaleY=20 diff --git a/src/bootchart/bootchart.h b/src/bootchart/bootchart.h index 84e9420998..ea26c93c46 100644 --- a/src/bootchart/bootchart.h +++ b/src/bootchart/bootchart.h @@ -21,6 +21,7 @@ ***/ #include +#include #define MAXCPUS 16 #define MAXPIDS 65535 @@ -98,11 +99,11 @@ extern struct ps_struct *ps_first; extern struct block_stat_struct blockstat[]; extern struct cpu_stat_struct cpustat[]; extern int pscount; -extern int relative; -extern int filter; -extern int pss; -extern int entropy; -extern int initcall; +extern bool relative; +extern bool filter; +extern bool pss; +extern bool entropy; +extern bool initcall; extern int samples; extern int cpus; extern int len; diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index c5dd26db52..b09e90ae8b 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -467,6 +467,33 @@ int config_parse_unsigned( return 0; } +int config_parse_double( + const char *filename, + unsigned line, + const char *section, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { + + double *d = data; + int r; + + assert(filename); + assert(lvalue); + assert(rvalue); + assert(data); + + r = safe_atod(rvalue, d); + if (r < 0) { + log_error("[%s:%u] Failed to parse numeric value: %s", filename, line, rvalue); + return r; + } + + return 0; +} + int config_parse_bytes_size( const char *filename, unsigned line, diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h index 56ffc2f8a8..9096c605e2 100644 --- a/src/shared/conf-parser.h +++ b/src/shared/conf-parser.h @@ -92,6 +92,7 @@ int config_parse_int(const char *filename, unsigned line, const char *section, c int config_parse_unsigned(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_long(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_uint64(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); +int config_parse_double(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_bytes_size(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_bytes_off(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_bool(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); diff --git a/src/shared/util.c b/src/shared/util.c index 152724949d..f5adedc531 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -353,6 +353,23 @@ int safe_atolli(const char *s, long long int *ret_lli) { return 0; } +int safe_atod(const char *s, double *ret_d) { + char *x = NULL; + double d; + + assert(s); + assert(ret_d); + + errno = 0; + d = strtod(s, &x); + + if (!x || x == s || *x || errno) + return errno ? -errno : -EINVAL; + + *ret_d = (double) d; + return 0; +} + /* Split a string into words. */ char *split(const char *c, size_t *l, const char *separator, char **state) { char *current; diff --git a/src/shared/util.h b/src/shared/util.h index 88ef2f9040..19cc36af84 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -122,6 +122,8 @@ int safe_atoi(const char *s, int *ret_i); int safe_atollu(const char *s, unsigned long long *ret_u); int safe_atolli(const char *s, long long int *ret_i); +int safe_atod(const char *s, double *ret_d); + #if __WORDSIZE == 32 static inline int safe_atolu(const char *s, unsigned long *ret_u) { assert_cc(sizeof(unsigned long) == sizeof(unsigned)); -- cgit v1.2.1 From 0e4ffbff01cb6b8ca1dd9f0afe61c4e4918872e7 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Thu, 14 Feb 2013 22:03:40 +0100 Subject: bootchart: stricter checks of cli input --- src/bootchart/bootchart.c | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index db345ee71f..0c4d3e3432 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -43,6 +43,7 @@ #include "macro.h" #include "conf-parser.h" #include "strxcpyx.h" +#include "path-util.h" double graph_start; double log_start; @@ -131,17 +132,17 @@ int main(int argc, char *argv[]) while (1) { static struct option opts[] = { - {"rel", 0, NULL, 'r'}, - {"freq", 1, NULL, 'f'}, - {"samples", 1, NULL, 'n'}, - {"pss", 0, NULL, 'p'}, - {"output", 1, NULL, 'o'}, - {"init", 1, NULL, 'i'}, - {"filter", 0, NULL, 'F'}, - {"help", 0, NULL, 'h'}, - {"scale-x", 1, NULL, 'x'}, - {"scale-y", 1, NULL, 'y'}, - {"entropy", 0, NULL, 'e'}, + {"rel", no_argument, NULL, 'r'}, + {"freq", required_argument, NULL, 'f'}, + {"samples", required_argument, NULL, 'n'}, + {"pss", no_argument, NULL, 'p'}, + {"output", required_argument, NULL, 'o'}, + {"init", required_argument, NULL, 'i'}, + {"filter", no_argument, NULL, 'F'}, + {"help", no_argument, NULL, 'h'}, + {"scale-x", required_argument, NULL, 'x'}, + {"scale-y", required_argument, NULL, 'y'}, + {"entropy", no_argument, NULL, 'e'}, {NULL, 0, NULL, 0} }; @@ -155,28 +156,30 @@ int main(int argc, char *argv[]) relative = true; break; case 'f': - hz = atof(optarg); + safe_atod(optarg, &hz); break; case 'F': filter = false; break; case 'n': - len = atoi(optarg); + safe_atoi(optarg, &len); break; case 'o': - strncpy(output_path, optarg, PATH_MAX - 1); + path_kill_slashes(optarg); + strscpy(output_path, sizeof(output_path), optarg); break; case 'i': - strncpy(init_path, optarg, PATH_MAX - 1); + path_kill_slashes(optarg); + strscpy(init_path, sizeof(init_path), optarg); break; case 'p': pss = true; break; case 'x': - scale_x = atof(optarg); + safe_atod(optarg, &scale_x); break; case 'y': - scale_y = atof(optarg); + safe_atod(optarg, &scale_y); break; case 'e': entropy = true; @@ -225,7 +228,7 @@ int main(int argc, char *argv[]) execl(init_path, init_path, NULL); } } - argv[0][0] = '@'; + argv[0][0] = '@'; /* start with empty ps LL */ ps_first = calloc(1, sizeof(struct ps_struct)); -- cgit v1.2.1 From 39ccc87c8a70cbe8a02e681cda280baee91b2907 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Thu, 14 Feb 2013 22:16:58 +0100 Subject: update TODO --- TODO | 2 -- src/login/logind.c | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/TODO b/TODO index 843b5878e6..0905e82b04 100644 --- a/TODO +++ b/TODO @@ -542,8 +542,6 @@ External: * kernel: add device_type = "fb", "fbcon" to class "graphics" * bootchart: - - use conf_parser for bootchart.conf - - change config options to CamelCase - plot per-process IO utilization - group processes based on service association (cgroups) diff --git a/src/login/logind.c b/src/login/logind.c index 680bc1fcdf..bb34a7f362 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -1463,7 +1463,7 @@ int manager_dispatch_idle_action(Manager *m) { r = manager_get_idle_hint(m, &since); if (r <= 0) - /* Not idle. Let's check if after a timeout it it might be idle then. */ + /* Not idle. Let's check if after a timeout it might be idle then. */ timespec_store(&its.it_value, n + m->idle_action_usec); else { /* Idle! Let's see if it's time to do something, or if -- cgit v1.2.1 From 8846199d2006824debdc587df73826a7efa31d24 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 14 Feb 2013 11:26:06 +0100 Subject: bootchart: if "root=/dev" is not matched, don't try to read /sys --- src/bootchart/svg.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index 414d7af9b9..f8a3776873 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -165,18 +165,19 @@ static void svg_title(const char *build) } /* extract root fs so we can find disk model name in sysfs */ + /* FIXME: this works only in the simple case */ c = strstr(cmdline, "root=/dev/"); if (c) { strncpy(rootbdev, &c[10], 3); rootbdev[3] = '\0'; - } - sprintf(filename, "block/%s/device/model", rootbdev); - fd = openat(sysfd, filename, O_RDONLY); - f = fdopen(fd, "r"); - if (f) { - if (!fgets(model, 255, f)) - fprintf(stderr, "Error reading disk model for %s\n", rootbdev); - fclose(f); + sprintf(filename, "block/%s/device/model", rootbdev); + fd = openat(sysfd, filename, O_RDONLY); + f = fdopen(fd, "r"); + if (f) { + if (!fgets(model, 255, f)) + fprintf(stderr, "Error reading disk model for %s\n", rootbdev); + fclose(f); + } } /* various utsname parameters */ -- cgit v1.2.1 From e57b477183259eac2d56c5f9d9820170afb1a5e6 Mon Sep 17 00:00:00 2001 From: William Giokas <1007380@gmail.com> Date: Thu, 14 Feb 2013 16:59:48 -0600 Subject: man: Update bootchart.conf(5) Recent changes in config options makes almost eveny variable in the man page obsolete. --- man/bootchart.conf.xml | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/man/bootchart.conf.xml b/man/bootchart.conf.xml index fb6e274492..1e440eb2cc 100644 --- a/man/bootchart.conf.xml +++ b/man/bootchart.conf.xml @@ -70,14 +70,14 @@ - samples=500 + Samples=500 Configure the amount of samples to record total before bootchart exits. Each sample will - record at intervals defined by freq=. + record at intervals defined by Frequency=. - freq=25 + Frequency=25 Configure the sample log frequency. This can be a fractional number, but must be larger than 0.0. Most systems can cope with values under 25-50 without @@ -85,18 +85,18 @@ - rel=0 + Relative=no Configures whether the left axis of the output graph equals time=0.0 (CLOCK_MONOTONIC start). This is useful for using bootchart at post-boot time to profile an already booted system, otherwise the graph would become - extremely large. If set to a non-zero value, the horizontal - axis starts at the first recorded sample instead of time=0.0. + extremely large. If set to yes, the horizontal axis starts + at the first recorded sample instead of time=0.0. - filter=0 + Filter=no Configures whether the resulting graph should omit tasks that did not contribute significantly to the boot. Processes that are too short-lived (only @@ -106,14 +106,14 @@ - output=[path] + Output=[path] Configures the output folder for writing the graphs. By default, bootchart writes the graphs to /run/log. - init=[path] + Init=[path] Configures bootchart to run a non-standard binary instead of /sbin/init. This option is only relevant if bootchart was invoked from the @@ -122,25 +122,25 @@ - pss=0 - If set to 1, enables logging and graphing + PlotMemoryUsage=no + If set to yes, enables logging and graphing of processes PSS memory consumption. - entropy=0 - If set to 1, enables logging and graphing + PlotEntropyGraph=no + If set to yes, enables logging and graphing of the kernel random entropy pool size. - scale_x=100 + ScaleX=100 Horizontal scaling factor for all variable graph components. - scale_y=20 + ScaleY=20 Vertical scaling factor for all variable graph components. -- cgit v1.2.1 From 4a01181e460686d8b4a543b1dfa7f77c9e3c5ab8 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 15 Feb 2013 22:41:19 +0100 Subject: log: fix fallbacks to kmsg MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit write_to_journal() returns 0 if journal_fd is closed and nothing is written. We need to make sure we'll try log_open_kmsg() then to make the fallback work for "journal-or-kmsg". --- src/shared/log.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/shared/log.c b/src/shared/log.c index 293c261f9e..ff2dd45350 100644 --- a/src/shared/log.c +++ b/src/shared/log.c @@ -541,11 +541,11 @@ static int log_dispatch( k = write_to_journal(level, file, line, func, object_name, object, buffer); - if (k < 0) { - if (k != -EAGAIN) + if (k <= 0) { + if (k < 0 && k != -EAGAIN) log_close_journal(); log_open_kmsg(); - } else if (k > 0) + } else r++; } @@ -554,11 +554,11 @@ static int log_dispatch( k = write_to_syslog(level, file, line, func, object_name, object, buffer); - if (k < 0) { - if (k != -EAGAIN) + if (k <= 0) { + if (k < 0 && k != -EAGAIN) log_close_syslog(); log_open_kmsg(); - } else if (k > 0) + } else r++; } @@ -571,10 +571,11 @@ static int log_dispatch( k = write_to_kmsg(level, file, line, func, object_name, object, buffer); - if (k < 0) { - log_close_kmsg(); + if (k <= 0) { + if (k < 0 && k != -EAGAIN) + log_close_kmsg(); log_open_console(); - } else if (k > 0) + } else r++; } -- cgit v1.2.1 From 47c1d80d844689c81faf2eede95803c1ed6eb4af Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 15 Feb 2013 22:43:23 +0100 Subject: execute: robustness against journald failures Almost every unit logs to the journal. If journald gets a permanent failure, units would not be able to start (exit code 209/STDOUT). Add a fallback to /dev/null to avoid making the system entirely unusable in such a case. --- src/core/execute.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/core/execute.c b/src/core/execute.c index 3376adc34a..b878c331d5 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -323,6 +323,7 @@ static int setup_input(const ExecContext *context, int socket_fd, bool apply_tty static int setup_output(const ExecContext *context, int socket_fd, const char *ident, const char *unit_id, bool apply_tty_stdin) { ExecOutput o; ExecInput i; + int r; assert(context); assert(ident); @@ -367,7 +368,12 @@ static int setup_output(const ExecContext *context, int socket_fd, const char *i case EXEC_OUTPUT_KMSG_AND_CONSOLE: case EXEC_OUTPUT_JOURNAL: case EXEC_OUTPUT_JOURNAL_AND_CONSOLE: - return connect_logger_as(context, o, ident, unit_id, STDOUT_FILENO); + r = connect_logger_as(context, o, ident, unit_id, STDOUT_FILENO); + if (r < 0) { + log_error("Failed to connect stdout of %s to the journal socket: %s", unit_id, strerror(-r)); + r = open_null_as(O_WRONLY, STDOUT_FILENO); + } + return r; case EXEC_OUTPUT_SOCKET: assert(socket_fd >= 0); @@ -381,6 +387,7 @@ static int setup_output(const ExecContext *context, int socket_fd, const char *i static int setup_error(const ExecContext *context, int socket_fd, const char *ident, const char *unit_id, bool apply_tty_stdin) { ExecOutput o, e; ExecInput i; + int r; assert(context); assert(ident); @@ -422,7 +429,12 @@ static int setup_error(const ExecContext *context, int socket_fd, const char *id case EXEC_OUTPUT_KMSG_AND_CONSOLE: case EXEC_OUTPUT_JOURNAL: case EXEC_OUTPUT_JOURNAL_AND_CONSOLE: - return connect_logger_as(context, e, ident, unit_id, STDERR_FILENO); + r = connect_logger_as(context, e, ident, unit_id, STDERR_FILENO); + if (r < 0) { + log_error("Failed to connect stderr of %s to the journal socket: %s", unit_id, strerror(-r)); + r = open_null_as(O_WRONLY, STDERR_FILENO); + } + return r; case EXEC_OUTPUT_SOCKET: assert(socket_fd >= 0); -- cgit v1.2.1 From eb17e935988993f4e0ebe08be81150ce35b140bf Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 15 Feb 2013 23:36:23 +0100 Subject: execute: unify setup_{output,error} The functions are quite similar. Unify them into one. The source gets shorter, the binary gets slightly smaller. --- src/core/execute.c | 114 +++++++++++++++++------------------------------------ 1 file changed, 37 insertions(+), 77 deletions(-) diff --git a/src/core/execute.c b/src/core/execute.c index b878c331d5..d459dfde64 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -320,7 +320,7 @@ static int setup_input(const ExecContext *context, int socket_fd, bool apply_tty } } -static int setup_output(const ExecContext *context, int socket_fd, const char *ident, const char *unit_id, bool apply_tty_stdin) { +static int setup_output(const ExecContext *context, int fileno, int socket_fd, const char *ident, const char *unit_id, bool apply_tty_stdin) { ExecOutput o; ExecInput i; int r; @@ -331,97 +331,55 @@ static int setup_output(const ExecContext *context, int socket_fd, const char *i i = fixup_input(context->std_input, socket_fd, apply_tty_stdin); o = fixup_output(context->std_output, socket_fd); - /* This expects the input is already set up */ + if (fileno == STDERR_FILENO) { + ExecOutput e; + e = fixup_output(context->std_error, socket_fd); - switch (o) { + /* This expects the input and output are already set up */ + + /* Don't change the stderr file descriptor if we inherit all + * the way and are not on a tty */ + if (e == EXEC_OUTPUT_INHERIT && + o == EXEC_OUTPUT_INHERIT && + i == EXEC_INPUT_NULL && + !is_terminal_input(context->std_input) && + getppid () != 1) + return fileno; + + /* Duplicate from stdout if possible */ + if (e == o || e == EXEC_OUTPUT_INHERIT) + return dup2(STDOUT_FILENO, fileno) < 0 ? -errno : fileno; - case EXEC_OUTPUT_INHERIT: + o = e; + } else if (o == EXEC_OUTPUT_INHERIT) { /* If input got downgraded, inherit the original value */ if (i == EXEC_INPUT_NULL && is_terminal_input(context->std_input)) - return open_terminal_as(tty_path(context), O_WRONLY, STDOUT_FILENO); + return open_terminal_as(tty_path(context), O_WRONLY, fileno); /* If the input is connected to anything that's not a /dev/null, inherit that... */ if (i != EXEC_INPUT_NULL) - return dup2(STDIN_FILENO, STDOUT_FILENO) < 0 ? -errno : STDOUT_FILENO; + return dup2(STDIN_FILENO, fileno) < 0 ? -errno : fileno; /* If we are not started from PID 1 we just inherit STDOUT from our parent process. */ if (getppid() != 1) - return STDOUT_FILENO; - - /* We need to open /dev/null here anew, to get the - * right access mode. So we fall through */ - - case EXEC_OUTPUT_NULL: - return open_null_as(O_WRONLY, STDOUT_FILENO); - - case EXEC_OUTPUT_TTY: - if (is_terminal_input(i)) - return dup2(STDIN_FILENO, STDOUT_FILENO) < 0 ? -errno : STDOUT_FILENO; - - /* We don't reset the terminal if this is just about output */ - return open_terminal_as(tty_path(context), O_WRONLY, STDOUT_FILENO); + return fileno; - case EXEC_OUTPUT_SYSLOG: - case EXEC_OUTPUT_SYSLOG_AND_CONSOLE: - case EXEC_OUTPUT_KMSG: - case EXEC_OUTPUT_KMSG_AND_CONSOLE: - case EXEC_OUTPUT_JOURNAL: - case EXEC_OUTPUT_JOURNAL_AND_CONSOLE: - r = connect_logger_as(context, o, ident, unit_id, STDOUT_FILENO); - if (r < 0) { - log_error("Failed to connect stdout of %s to the journal socket: %s", unit_id, strerror(-r)); - r = open_null_as(O_WRONLY, STDOUT_FILENO); - } - return r; - - case EXEC_OUTPUT_SOCKET: - assert(socket_fd >= 0); - return dup2(socket_fd, STDOUT_FILENO) < 0 ? -errno : STDOUT_FILENO; - - default: - assert_not_reached("Unknown output type"); + /* We need to open /dev/null here anew, to get the right access mode. */ + return open_null_as(O_WRONLY, fileno); } -} -static int setup_error(const ExecContext *context, int socket_fd, const char *ident, const char *unit_id, bool apply_tty_stdin) { - ExecOutput o, e; - ExecInput i; - int r; - - assert(context); - assert(ident); - - i = fixup_input(context->std_input, socket_fd, apply_tty_stdin); - o = fixup_output(context->std_output, socket_fd); - e = fixup_output(context->std_error, socket_fd); - - /* This expects the input and output are already set up */ - - /* Don't change the stderr file descriptor if we inherit all - * the way and are not on a tty */ - if (e == EXEC_OUTPUT_INHERIT && - o == EXEC_OUTPUT_INHERIT && - i == EXEC_INPUT_NULL && - !is_terminal_input(context->std_input) && - getppid () != 1) - return STDERR_FILENO; - - /* Duplicate from stdout if possible */ - if (e == o || e == EXEC_OUTPUT_INHERIT) - return dup2(STDOUT_FILENO, STDERR_FILENO) < 0 ? -errno : STDERR_FILENO; - - switch (e) { + switch (o) { case EXEC_OUTPUT_NULL: - return open_null_as(O_WRONLY, STDERR_FILENO); + return open_null_as(O_WRONLY, fileno); case EXEC_OUTPUT_TTY: if (is_terminal_input(i)) - return dup2(STDIN_FILENO, STDERR_FILENO) < 0 ? -errno : STDERR_FILENO; + return dup2(STDIN_FILENO, fileno) < 0 ? -errno : fileno; /* We don't reset the terminal if this is just about output */ - return open_terminal_as(tty_path(context), O_WRONLY, STDERR_FILENO); + return open_terminal_as(tty_path(context), O_WRONLY, fileno); case EXEC_OUTPUT_SYSLOG: case EXEC_OUTPUT_SYSLOG_AND_CONSOLE: @@ -429,16 +387,18 @@ static int setup_error(const ExecContext *context, int socket_fd, const char *id case EXEC_OUTPUT_KMSG_AND_CONSOLE: case EXEC_OUTPUT_JOURNAL: case EXEC_OUTPUT_JOURNAL_AND_CONSOLE: - r = connect_logger_as(context, e, ident, unit_id, STDERR_FILENO); + r = connect_logger_as(context, o, ident, unit_id, fileno); if (r < 0) { - log_error("Failed to connect stderr of %s to the journal socket: %s", unit_id, strerror(-r)); - r = open_null_as(O_WRONLY, STDERR_FILENO); + log_error("Failed to connect std%s of %s to the journal socket: %s", + fileno == STDOUT_FILENO ? "out" : "err", + unit_id, strerror(-r)); + r = open_null_as(O_WRONLY, fileno); } return r; case EXEC_OUTPUT_SOCKET: assert(socket_fd >= 0); - return dup2(socket_fd, STDERR_FILENO) < 0 ? -errno : STDERR_FILENO; + return dup2(socket_fd, fileno) < 0 ? -errno : fileno; default: assert_not_reached("Unknown error type"); @@ -1179,13 +1139,13 @@ int exec_spawn(ExecCommand *command, goto fail_child; } - err = setup_output(context, socket_fd, path_get_file_name(command->path), unit_id, apply_tty_stdin); + err = setup_output(context, STDOUT_FILENO, socket_fd, path_get_file_name(command->path), unit_id, apply_tty_stdin); if (err < 0) { r = EXIT_STDOUT; goto fail_child; } - err = setup_error(context, socket_fd, path_get_file_name(command->path), unit_id, apply_tty_stdin); + err = setup_output(context, STDERR_FILENO, socket_fd, path_get_file_name(command->path), unit_id, apply_tty_stdin); if (err < 0) { r = EXIT_STDERR; goto fail_child; -- cgit v1.2.1 From 80cbda3558c534b575bf5315fa53b0f82dc088ab Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Sat, 16 Feb 2013 00:34:12 +0100 Subject: execute: increase severity of journal connect failure message journald is supposed to work. Failure to connect to its socket implies losing messages. It should be a very unusual event. Log the failure with LOG_CRIT. Just because this unit's stdout/stderr failed to connect to the journal does not necessarily mean that we shouldn't try to log the failure using a structured entry, so let's use log_struct_unit. --- src/core/execute.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/core/execute.c b/src/core/execute.c index d459dfde64..b28962a3c3 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -389,9 +389,12 @@ static int setup_output(const ExecContext *context, int fileno, int socket_fd, c case EXEC_OUTPUT_JOURNAL_AND_CONSOLE: r = connect_logger_as(context, o, ident, unit_id, fileno); if (r < 0) { - log_error("Failed to connect std%s of %s to the journal socket: %s", + log_struct_unit(LOG_CRIT, unit_id, + "MESSAGE=Failed to connect std%s of %s to the journal socket: %s", fileno == STDOUT_FILENO ? "out" : "err", - unit_id, strerror(-r)); + unit_id, strerror(-r), + "ERRNO=%d", -r, + NULL); r = open_null_as(O_WRONLY, fileno); } return r; -- cgit v1.2.1 From 9d246da3c630559924a0262769c8493fa22c7acc Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 15 Feb 2013 22:42:26 +0100 Subject: unit: don't Require systemd-journald.socket from units It is not really necessary to have a hard requirement dependency on systemd-journald.socket in almost every unit. The socket gets pulled into boot via at least two ways: sockets.target -> systemd-journald.socket sysinit.target -> systemd-journald.service -> systemd-journald.socket So just assume something pulled the socket in and drop the automatic requirement dependencies on it. "systemctl stop systemd-journald.socket" will now not take the whole system down with it. --- src/core/unit.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/unit.c b/src/core/unit.c index 86aaa1509a..3a88996eb7 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -616,9 +616,11 @@ int unit_add_exec_dependencies(Unit *u, ExecContext *c) { /* If syslog or kernel logging is requested, make sure our own * logging daemon is run first. */ - if (u->manager->running_as == SYSTEMD_SYSTEM) - if ((r = unit_add_two_dependencies_by_name(u, UNIT_REQUIRES, UNIT_AFTER, SPECIAL_JOURNALD_SOCKET, NULL, true)) < 0) + if (u->manager->running_as == SYSTEMD_SYSTEM) { + r = unit_add_dependency_by_name(u, UNIT_AFTER, SPECIAL_JOURNALD_SOCKET, NULL, true); + if (r < 0) return r; + } return 0; } -- cgit v1.2.1 From 265a7a2a604a9cf92e8aa167ed48afb78e6602ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 14 Feb 2013 16:55:24 -0500 Subject: systemctl: allow status with no units This makes 'status' behave like 'list-units': systemctl status -> status of all units systemctl -t error status -> status of error units systemctl -t mount status -> etc. --- man/systemctl.xml | 27 +++++++++------ src/systemctl/systemctl.c | 88 +++++++++++++++++++++++++++++++++++++---------- 2 files changed, 87 insertions(+), 28 deletions(-) diff --git a/man/systemctl.xml b/man/systemctl.xml index 7f7064214e..760115acb5 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -471,7 +471,10 @@ list-units - List known units. + List known units (subject to limitations + specified with ). + + This is the default command. start [NAME...] @@ -619,15 +622,19 @@ Show terse runtime status information about one or more - units, followed by its most recent log - data from the journal. This function - is intended to generate human-readable - output. If you are looking for - computer-parsable output, use - show instead. If a - PID is passed information about the - unit the process of the PID belongs to - is shown. + units, followed by most recent log + data from the journal. If no units are + specified, show all units (subject to + limitations specified with + ). If a PID is + passed show information about the unit + the process belongs to. + + This function is intended to + generate human-readable output. If you + are looking for computer-parsable + output, use show + instead. show [NAME...|JOB...] diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 4c91a18b8b..becd68ff6e 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -426,14 +426,15 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) { } } -static int list_units(DBusConnection *bus, char **args) { - _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; - _cleanup_free_ struct unit_info *unit_infos = NULL; +static int get_unit_list(DBusConnection *bus, DBusMessage **reply, + struct unit_info **unit_infos, unsigned *c) { DBusMessageIter iter, sub; - unsigned c = 0, n_units = 0; + unsigned n_units = 0; int r; - pager_open_if_enabled(); + assert(bus); + assert(unit_infos); + assert(c); r = bus_method_call_with_reply( bus, @@ -441,13 +442,13 @@ static int list_units(DBusConnection *bus, char **args) { "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", "ListUnits", - &reply, + reply, NULL, DBUS_TYPE_INVALID); if (r < 0) return r; - if (!dbus_message_iter_init(reply, &iter) || + if (!dbus_message_iter_init(*reply, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); @@ -459,29 +460,45 @@ static int list_units(DBusConnection *bus, char **args) { while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { struct unit_info *u; - if (c >= n_units) { + if (*c >= n_units) { struct unit_info *w; - n_units = MAX(2*c, 16); - w = realloc(unit_infos, sizeof(struct unit_info) * n_units); + n_units = MAX(2 * *c, 16); + w = realloc(*unit_infos, sizeof(struct unit_info) * n_units); if (!w) return log_oom(); - unit_infos = w; + *unit_infos = w; } - u = unit_infos + c; + u = *unit_infos + *c; bus_parse_unit_info(&sub, u); dbus_message_iter_next(&sub); - c++; + (*c)++; } - if (c > 0) { - qsort(unit_infos, c, sizeof(struct unit_info), compare_unit_info); + if (*c > 0) + qsort(*unit_infos, *c, sizeof(struct unit_info), compare_unit_info); + + return 0; +} + +static int list_units(DBusConnection *bus, char **args) { + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + _cleanup_free_ struct unit_info *unit_infos = NULL; + unsigned c = 0; + int r; + + pager_open_if_enabled(); + + r = get_unit_list(bus, &reply, &unit_infos, &c); + if (r < 0) + return r; + + if (c > 0) output_units_list(unit_infos, c); - } return 0; } @@ -3106,15 +3123,47 @@ static int show_one_by_pid(const char *verb, DBusConnection *bus, uint32_t pid, return r; } +static int show_all(const char* verb, DBusConnection *bus, bool show_properties, bool *new_line) { + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + _cleanup_free_ struct unit_info *unit_infos = NULL; + unsigned c = 0; + const struct unit_info *u; + int r; + + r = get_unit_list(bus, &reply, &unit_infos, &c); + if (r < 0) + return r; + + for (u = unit_infos; u < unit_infos + c; u++) { + char _cleanup_free_ *p = NULL; + + if (!output_show_unit(u)) + continue; + + p = unit_dbus_path_from_name(u->id); + if (!p) + return log_oom(); + + printf("%s -> '%s'\n", u->id, p); + + r = show_one(verb, bus, p, show_properties, new_line); + if (r != 0) + return r; + } + + return 0; +} + static int show(DBusConnection *bus, char **args) { int r, ret = 0; - bool show_properties, new_line = false; + bool show_properties, show_status, new_line = false; char **name; assert(bus); assert(args); show_properties = streq(args[0], "show"); + show_status = streq(args[0], "status"); if (show_properties) pager_open_if_enabled(); @@ -3124,6 +3173,9 @@ static int show(DBusConnection *bus, char **args) { if (show_properties && strv_length(args) <= 1) return show_one(args[0], bus, "/org/freedesktop/systemd1", show_properties, &new_line); + if (show_status && strv_length(args) <= 1) + return show_all(args[0], bus, false, &new_line); + STRV_FOREACH(name, args+1) { uint32_t id; @@ -5049,7 +5101,7 @@ static int systemctl_main(DBusConnection *bus, int argc, char *argv[], DBusError { "check", MORE, 2, check_unit_active }, { "is-failed", MORE, 2, check_unit_failed }, { "show", MORE, 1, show }, - { "status", MORE, 2, show }, + { "status", MORE, 1, show }, { "help", MORE, 2, show }, { "dump", EQUAL, 1, dump }, { "snapshot", LESS, 2, snapshot }, -- cgit v1.2.1 From d0a5cdb280f904eafacb09bbc391afd03c207b62 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Fri, 15 Feb 2013 16:10:36 +0100 Subject: systemctl: Don't give re-activation warning if unit is masked --- src/systemctl/systemctl.c | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index becd68ff6e..ddf46b66d5 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1336,7 +1336,9 @@ static void check_triggering_units( _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; DBusMessageIter iter, sub; const char *interface = "org.freedesktop.systemd1.Unit", - *triggered_by_property = "TriggeredBy"; + *load_state_property = "LoadState", + *triggered_by_property = "TriggeredBy", + *state; char _cleanup_free_ *unit_path = NULL, *n = NULL; bool print_warning_label = true; int r; @@ -1353,6 +1355,41 @@ static void check_triggering_units( return; } + r = bus_method_call_with_reply( + bus, + "org.freedesktop.systemd1", + unit_path, + "org.freedesktop.DBus.Properties", + "Get", + &reply, + NULL, + DBUS_TYPE_STRING, &interface, + DBUS_TYPE_STRING, &load_state_property, + DBUS_TYPE_INVALID); + if (r < 0) + return; + + if (!dbus_message_iter_init(reply, &iter) || + dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT) { + log_error("Failed to parse reply."); + return; + } + + dbus_message_iter_recurse(&iter, &sub); + + if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRING) { + log_error("Failed to parse reply."); + return; + } + + dbus_message_iter_get_basic(&sub, &state); + + if (streq(state, "masked")) + return; + + dbus_message_unref(reply); + reply = NULL; + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", -- cgit v1.2.1 From f1c24fea94e19cf2108abbeed1d36ded7102ab98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 16 Feb 2013 12:40:33 -0500 Subject: man: move bootchart README to manpage, docbooksify --- README | 7 ++ man/systemd-bootchart.xml | 162 +++++++++++++++++++++++++++++----------------- src/bootchart/README | 83 ------------------------ src/bootchart/bootchart.c | 11 ++++ 4 files changed, 119 insertions(+), 144 deletions(-) delete mode 100644 src/bootchart/README diff --git a/README b/README index f20bd38894..297d8f79e7 100644 --- a/README +++ b/README @@ -63,6 +63,13 @@ REQUIREMENTS: dracut (optional) PolicyKit (optional) + For systmed-bootchart a kernel with procfs support and several + proc output options enabled is required: + + CONFIG_PROC_FS + CONFIG_SCHEDSTATS + CONFIG_SCHED_DEBUG + When building from git you need the following additional dependencies: docbook-xsl diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml index f87f821257..3b755d1b20 100644 --- a/man/systemd-bootchart.xml +++ b/man/systemd-bootchart.xml @@ -48,52 +48,84 @@ systemd-bootchart - Boot performance analysis graphing tool + Boot performance graphing tool Description - - systemd-bootchart is a tool used to analyze a boot sequence. - It collects system information pertaining to the CPU and disk load, as - well as per-process information, and then creates a chart with this - information. Usually it is invoked by setting the init to - systemd-bootchart on the kernel command line. It - be run after boot to analyze running processes, though it is recommended - to use the switch when doing this. - - After collecting a certain amount of data (default: 20 seconds) it - will write the SVG chart to /run/log. This chart - can be used to find problems in the start up sequence and where these - problems exist. It is essentially a more detailed version of the - systemd-analyze plot function. + + systemd-bootchart is a + tool, usually run at system startup, that + collects the CPU load, disk load, memory + usage, as well as per-process information from + a running system. Collected results are output + as an SVG graph. Normally, systemd-bootchart + is invoked by the kernel by passing + + on the kernel commandline. systemd-bootchart will then + fork the real init off to resume normal system + startup, while monitoring and logging startup + information in the background. + + + After collecting a certain amount of data + (usually 15-30 seconds, default 20 s) the + logging stops and a graph is generated from + the logged information. This graph contains + vital clues as to which resources are being used, + in which order, and where possible problems + exist in the startup sequence of the system. + It is essentially a more detailed version of + the systemd-analyze + plot function. + + + Of course, bootchart can also be used at any + moment in time to collect and graph some data + for an amount of time. It is + recommended to use the + switch in this case. + + + Bootchart does not require root privileges, + and will happily run as a normal user. + + + Bootchart graphs are by default written + time-stamped in /run/log. + Invocation - systemd-bootchart can be invoked in several different ways: + systemd-bootchart can be invoked in several different ways: Kernel invocation - The kernel can invoke systemd-bootchart - instead of the init process. In itself, systemd-bootchart - will invoke /sbin/init if invoked in - this manner. + The kernel can invoke + systemd-bootchart + instead of the init process. In turn, + systemd-bootchart + will invoke /sbin/init. + Started as a standalone program - One can execute systemd-bootchart as - normal application from the commandline. In this mode - it is highly recommended to pass the "-r" flag in order - to not graph the time elapsed since boot and before - systemd-bootchart was started, as it may result in - extremely large graphs. - + One can execute + systemd-bootchart + as normal application from the + commandline. In this mode it is highly + recommended to pass the + flag in order to + not graph the time elapsed since boot + and before systemd-bootchart was + started, as it may result in extremely + large graphs. @@ -101,25 +133,30 @@ Options - These options can be set globally in the /etc/systemd/bootchart.conf - file. + These options can also be set in the + /etc/systemd/bootchart.conf + file. See + bootchart.conf5. + - - Specify the amount of samples, N, to - record total before bootchart exits. Each sample will - record at intervals defined by --freq. + + Specify the number of + samples, N, + to record. Samples will be recorded at + intervals defined with . + - - Specify the sample log frequency, N. - This can be a fractional number, but must be larger than - 0.0. Most systems can cope with values under 25-50 without + + Specify the sample log + frequency, a positive real f, in Hz. + Most systems can cope with values up to 25-50 without creating too much overhead. @@ -128,36 +165,36 @@ Use relative times instead of absolute times. This is useful for using bootchart at post-boot - time to profile an already booted system, otherwise the - graph would become extremely large. If set, the + time to profile an already booted system. Without this + option the graph would become extremely large. If set, the horizontal axis starts at the first recorded sample - instead of time=0.0. + instead of time 0.0. - Disable filtering of tasks tasks that + Disable filtering of tasks that did not contribute significantly to the boot. Processes that are too short-lived (only seen in one sample) or that do not consume any significant CPU time (less than - 0.001sec) will not be displayed in the output graph. + 0.001 s) will not be displayed in the output graph. - - Configures the output folder for writing - the graphs. By default, bootchart writes the graphs to + + Specify the output folder for the + graphs. By default, bootchart writes the graphs to /run/log. - - Set init binary to run. Defaults to - /sbin/init. + + Use this init binary. Defaults to + /sbin/init. @@ -165,7 +202,11 @@ Enable logging and graphing - of processes PSS memory consumption. + of processes' PSS (Proportional Set Size) + memory consumption. See filesystems/proc.txt + in the kernel documentation for an + explanation of this field. + @@ -177,14 +218,14 @@ - + Horizontal scaling factor for all variable graph components. - + Vertical scaling factor for all variable graph components. @@ -197,19 +238,20 @@ Output - systemd-bootchart generates SVG graphs. In order to render these + systemd-bootchart generates SVG graphs. In order to render those on a graphical display any SVG capable viewer can be used. It should be noted that the SVG render engines in most browsers (including Chrome and Firefox) are many times faster than dedicated graphical applications - like Gimp and Inkscape. Just point your browser at "file:///run/log"! + like Gimp and Inkscape. Just point your browser at ! History - This version of bootchart was implemented from scratch, but inspired - by former bootchart incantations: + This version of bootchart was implemented from + scratch, but is inspired by former bootchart + incantations: @@ -247,7 +289,6 @@ has been collected. Also, the data kept in memory is reduced to the absolute minimum needed. - @@ -259,11 +300,10 @@ Bugs - For bugs, please contact the author or current maintainer: - - Auke Kok - auke-jan.h.kok@intel.com - + For bugs, please contact the author and current maintainer: + + Auke Kok auke-jan.h.kok@intel.com + diff --git a/src/bootchart/README b/src/bootchart/README deleted file mode 100644 index 03b0fe95ee..0000000000 --- a/src/bootchart/README +++ /dev/null @@ -1,83 +0,0 @@ - -Bootchart - a 'startup' graphing tool - --- - -Bootchart is a tool, usually run at system startup, that collects and graphs -the CPU and disk load of the system as it works. The output of bootchart is -an SVG graph. Normally, bootchart is invoked as `bootchartd` by the kernel -by passing "init=/sbin/bootchartd" to the kernel. Bootchart will then fork -init off to resume normal system startup, while monitoring and logging -startup information in the background. - -After collecting a certain amount of data (usually 15-30 seconds) the logging -stops and a graph is generated from the logged information. This graph -contains vital clues to which resources are being used, in which order, and -where possible problems exist in the startup sequence of the system. - -Of course, bootchart can also be used at any moment in time to collect and -graph some data for an amount of time. Bootchart does not even require root -privileges to do so, and will happily run as a normal user. Bootchart graphs -are by default written time-stamped in /run/log. - --- - -This version of bootchart was implemented from scratch and inspired by former -incantations of bootchart: - -- The original bash/shell code implemented bootchart. This version logged all -data into a compressed tarball for later processing, and did not create a graph -on it's own. - -- The C-code implementation found in Ubuntu. This version replaced above shell -code version with a faster and efficient data logger, but still did not graph -code itself. - -- the original Java-based bootchart, the original graphing program that created -a bootchart graph from logged data. - -- the pybootchartgui.py program, which created a graph based on the data logged -by either standalone data logger. - -The version you are looking at combines these 2 parts into a single program, -which makes running it and creating graphs a bit more efficient and simple. -You can now run a single program at startup instead of 2. There are no timing -problems (the graphing stage will never run if the logging stage didn't -finish). The logged data isn't being written to disc first, then read again. -Also, the data kept in memory is reduced to the absolute minimum needed to -keep memory use low. - --- - -Requirements: glibc. Your kernel must have procfs support and several -proc output options enabled: - CONFIG_PROC_FS - CONFIG_SCHEDSTATS - CONFIG_SCHED_DEBUG -at a minimum. bootchartd itself does not require any graphics library -to generate the SVG output file. - --- - -Configuration: please see bootchartd --help, as well as /etc/bootchartd.conf -and/or /usr/share/doc/bootchart/bootchartd.conf.example for a list of -configurable options. - --- - -Many thanks to those who contributed ideas and code: - - Ziga Mahkovec - Original bootchart author - - Anders Norgaard - PyBootchartgui - - Michael Meeks - bootchart2 - - Scott James Remnant - Ubuntu C-based logger - - Arjan van der Ven - for the idea to merge bootgraph.pl functionality - --- - -For bugs, please contact the author or current maintainer: -Auke Kok - --- - -Download bootchart releases here: http://foo-projects.org/~sofar/bootchart/ -Source code is hosted here: git://github.com/sofar/bootchart diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 0c4d3e3432..017632781a 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -20,6 +20,17 @@ along with systemd; If not, see . ***/ +/*** + + Many thanks to those who contributed ideas and code: + - Ziga Mahkovec - Original bootchart author + - Anders Norgaard - PyBootchartgui + - Michael Meeks - bootchart2 + - Scott James Remnant - Ubuntu C-based logger + - Arjan van der Ven - for the idea to merge bootgraph.pl functionality + + ***/ + #include #include #include -- cgit v1.2.1 From 547ba5a9e854c2811c8452123dae8caa01e1e26e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 16 Feb 2013 13:29:28 -0500 Subject: bootchart: provide better error messages --- src/bootchart/bootchart.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 017632781a..42b9103dcb 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -167,13 +167,19 @@ int main(int argc, char *argv[]) relative = true; break; case 'f': - safe_atod(optarg, &hz); + r = safe_atod(optarg, &hz); + if (r < 0) + log_warning("failed to parse --freq/-f argument '%s': %s", + optarg, strerror(-r)); break; case 'F': filter = false; break; case 'n': - safe_atoi(optarg, &len); + r = safe_atoi(optarg, &len); + if (r < 0) + log_warning("failed to parse --samples/-n argument '%s': %s", + optarg, strerror(-r)); break; case 'o': path_kill_slashes(optarg); @@ -187,10 +193,16 @@ int main(int argc, char *argv[]) pss = true; break; case 'x': - safe_atod(optarg, &scale_x); + r = safe_atod(optarg, &scale_x); + if (r < 0) + log_warning("failed to parse --scale-x/-x argument '%s': %s", + optarg, strerror(-r)); break; case 'y': - safe_atod(optarg, &scale_y); + r = safe_atod(optarg, &scale_y); + if (r < 0) + log_warning("failed to parse --scale-y/-y argument '%s': %s", + optarg, strerror(-r)); break; case 'e': entropy = true; @@ -209,7 +221,7 @@ int main(int argc, char *argv[]) fprintf(stderr, " --filter, -F Disable filtering of processes from the graph\n"); fprintf(stderr, " that are of less importance or short-lived\n"); fprintf(stderr, " --help, -h Display this message\n"); - fprintf(stderr, "See the installed README and bootchartd.conf.example for more information.\n"); + fprintf(stderr, "See bootchart.conf for more information.\n"); exit (EXIT_SUCCESS); break; default: @@ -228,7 +240,7 @@ int main(int argc, char *argv[]) } /* - * If the kernel executed us through init=/sbin/bootchartd, then + * If the kernel executed us through init=/usr/lib/systemd/systemd-bootchart, then * fork: * - parent execs executable specified via init_path[] (/sbin/init by default) as pid=1 * - child logs data @@ -352,13 +364,13 @@ int main(int argc, char *argv[]) } if (!of) { - perror("open output_file"); + fprintf(stderr, "opening output file '%s': %m\n", output_file); exit (EXIT_FAILURE); } svg_do(build); - fprintf(stderr, "bootchartd: Wrote %s\n", output_file); + fprintf(stderr, "systemd-bootchart wrote %s\n", output_file); fclose(of); closedir(proc); @@ -377,7 +389,7 @@ int main(int argc, char *argv[]) /* don't complain when overrun once, happens most commonly on 1st sample */ if (overrun > 1) - fprintf(stderr, "bootchartd: Warning: sample time overrun %i times\n", overrun); + fprintf(stderr, "systemd-boochart: Warning: sample time overrun %i times\n", overrun); return 0; } -- cgit v1.2.1 From 6d2679917919f1d59bf677d719fb84aedf8b9558 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 16 Feb 2013 15:16:24 -0500 Subject: bootchart: rename --filter to --no-filter Turning off filtering with --filter is just too confusing. Config option "Filter" doesn't have to be changed, here "Filter=yes" already meant to filter. --- man/systemd-bootchart.xml | 2 +- src/bootchart/bootchart.c | 44 ++++++++++++++++++++++---------------------- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml index 3b755d1b20..a4770fc62d 100644 --- a/man/systemd-bootchart.xml +++ b/man/systemd-bootchart.xml @@ -173,7 +173,7 @@ - + Disable filtering of tasks that did not contribute significantly to the boot. Processes that are too short-lived (only seen in one sample) or diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 42b9103dcb..af573da0f2 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -143,17 +143,17 @@ int main(int argc, char *argv[]) while (1) { static struct option opts[] = { - {"rel", no_argument, NULL, 'r'}, - {"freq", required_argument, NULL, 'f'}, - {"samples", required_argument, NULL, 'n'}, - {"pss", no_argument, NULL, 'p'}, - {"output", required_argument, NULL, 'o'}, - {"init", required_argument, NULL, 'i'}, - {"filter", no_argument, NULL, 'F'}, - {"help", no_argument, NULL, 'h'}, - {"scale-x", required_argument, NULL, 'x'}, - {"scale-y", required_argument, NULL, 'y'}, - {"entropy", no_argument, NULL, 'e'}, + {"rel", no_argument, NULL, 'r'}, + {"freq", required_argument, NULL, 'f'}, + {"samples", required_argument, NULL, 'n'}, + {"pss", no_argument, NULL, 'p'}, + {"output", required_argument, NULL, 'o'}, + {"init", required_argument, NULL, 'i'}, + {"no-filter", no_argument, NULL, 'F'}, + {"help", no_argument, NULL, 'h'}, + {"scale-x", required_argument, NULL, 'x'}, + {"scale-y", required_argument, NULL, 'y'}, + {"entropy", no_argument, NULL, 'e'}, {NULL, 0, NULL, 0} }; @@ -209,18 +209,18 @@ int main(int argc, char *argv[]) break; case 'h': fprintf(stderr, "Usage: %s [OPTIONS]\n", argv[0]); - fprintf(stderr, " --rel, -r Record time relative to recording\n"); - fprintf(stderr, " --freq, -f N Sample frequency [%f]\n", hz); - fprintf(stderr, " --samples, -n N Stop sampling at [%d] samples\n", len); - fprintf(stderr, " --scale-x, -x N Scale the graph horizontally [%f] \n", scale_x); - fprintf(stderr, " --scale-y, -y N Scale the graph vertically [%f] \n", scale_y); - fprintf(stderr, " --pss, -p Enable PSS graph (CPU intensive)\n"); - fprintf(stderr, " --entropy, -e Enable the entropy_avail graph\n"); - fprintf(stderr, " --output, -o [PATH] Path to output files [%s]\n", output_path); - fprintf(stderr, " --init, -i [PATH] Path to init executable [%s]\n", init_path); - fprintf(stderr, " --filter, -F Disable filtering of processes from the graph\n"); + fprintf(stderr, " --rel, -r Record time relative to recording\n"); + fprintf(stderr, " --freq, -f f Sample frequency [%f]\n", hz); + fprintf(stderr, " --samples, -n N Stop sampling at [%d] samples\n", len); + fprintf(stderr, " --scale-x, -x N Scale the graph horizontally [%f] \n", scale_x); + fprintf(stderr, " --scale-y, -y N Scale the graph vertically [%f] \n", scale_y); + fprintf(stderr, " --pss, -p Enable PSS graph (CPU intensive)\n"); + fprintf(stderr, " --entropy, -e Enable the entropy_avail graph\n"); + fprintf(stderr, " --output, -o [PATH] Path to output files [%s]\n", output_path); + fprintf(stderr, " --init, -i [PATH] Path to init executable [%s]\n", init_path); + fprintf(stderr, " --no-filter, -F Disable filtering of processes from the graph\n"); fprintf(stderr, " that are of less importance or short-lived\n"); - fprintf(stderr, " --help, -h Display this message\n"); + fprintf(stderr, " --help, -h Display this message\n"); fprintf(stderr, "See bootchart.conf for more information.\n"); exit (EXIT_SUCCESS); break; -- cgit v1.2.1 From 4a6022f01cfe092d018db52186d6af1fe28f3421 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 16 Feb 2013 16:28:21 -0500 Subject: man: prettify systemctl(1) - reindent with two spaces, otherwise everything is squeezed near the right margin, - mark only optional arguments as optional, - some typos, etc. --- man/systemctl.xml | 2418 +++++++++++++++++++++++++---------------------------- 1 file changed, 1143 insertions(+), 1275 deletions(-) diff --git a/man/systemctl.xml b/man/systemctl.xml index 760115acb5..1a55522b12 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -1,1289 +1,1157 @@ +"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd"> - - systemctl - systemd - - - - Developer - Lennart - Poettering - lennart@poettering.net - - - - - - systemctl - 1 - - - - systemctl - Control the systemd system and service manager - - - - - systemctl OPTIONS COMMAND NAME - - - - - Description - - systemctl may be used to - introspect and control the state of the - systemd1 - system and service manager. - - - - Options - - The following options are understood: - - - - - - - Prints a short help - text and exits. - - - - - - Prints a short version - string and exits. - - - - - - - The argument should - be a unit type name such as - and - , - or a unit load state such as - and - . - - - If the argument is a unit type, - when listing units, limit display to - certain unit types. If not specified - units of all types will be shown. - - If the argument is a unit load state, - when listing units, limit display to - certain unit types. If not specified - units of in all load states will be - shown. - - As a special case, if the argument - is , a list of - allowed values will be printed and the - program will exit. - - - - - - - - When showing - unit/job/manager properties, limit - display to certain properties as - specified as argument. If not - specified all set properties are - shown. The argument should be a - property name, such as - MainPID. If - specified more than once all - properties with the specified names - are shown. - - - - - - - When listing units, - show all units, regardless of their - state, including inactive units. When - showing unit/job/manager properties, - show all properties regardless whether - they are set or not. - - - - - - When listing units, - show only failed units. Do not confuse - with - . - - - - - - Do not ellipsize unit - names, cgroup members, and truncate unit descriptions - in the output of - list-units and - list-jobs. - - - - - - If the requested - operation conflicts with a pending - unfinished job, fail the command. If - this is not specified the requested - operation will replace the pending job, - if necessary. Do not confuse - with - . - - - - - - When enqueuing a new - job ignore all its dependencies and - execute it immediately. If passed no - required units of the unit passed will - be pulled in, and no ordering - dependencies will be honored. This is - mostly a debugging and rescue tool for - the administrator and should not be - used by - applications. - - - - - - - When system shutdown - or a sleep state is requested, ignore - inhibitor locks. Applications can - establish inhibitor locks to avoid - that certain important operations - (such as CD burning or suchlike) are - interrupted by system shutdown or a - sleep state. Any user may take these - locks and privileged users may - override these locks. If any locks are - taken, shutdown and sleep state - requests will normally fail - (regardless if privileged or not) and - list of active locks is - printed. However if - - is specified the locks are ignored and - not printed, and the operation - attempted anyway, possibly requiring - additional - privileges. - - - - - - - Suppress output to - STDOUT in - snapshot, - is-active, - is-failed, - enable and - disable. - - - - - - Do not synchronously wait for - the requested operation to finish. If this is - not specified the job will be verified, - enqueued and systemctl will - wait until it is completed. By passing this - argument it is only verified and - enqueued. - - - - - - Do not print a legend, i.e. - the column headers and the footer with hints. - - - - - - - Do not pipe output into a - pager. - - - - - - Talk to the systemd - system manager. (Default) - - - - - - Talk to the systemd - manager of the calling user. - - - - - - Don't send wall - message before - halt, power-off, reboot. - - - - - - When used with - enable and - disable, operate on the - global user configuration - directory, thus enabling or disabling - a unit file globally for all future - logins of all users. - - - - - - When used with - enable and - disable, do not - implicitly reload daemon configuration - after executing the - changes. - - - - - - When used with - start and related - commands, disables asking for - passwords. Background services may - require input of a password or - passphrase string, for example to - unlock system hard disks or - cryptographic certificates. Unless - this option is specified and the - command is invoked from a terminal - systemctl will - query the user on the terminal for the - necessary secrets. Use this option to - switch this behavior off. In this case - the password must be supplied by some - other means (for example graphical - password agents) or the service might - fail. This also disables querying the - user for authentication for privileged - operations. - - - - - - When used with - kill, choose which - processes to kill. Must be one of - , - or - to select whether - to kill only the main process of the - unit, the control process or all - processes of the unit. If omitted - defaults to - . - - - - - - - When used with - kill, choose which - signal to send to selected - processes. Must be one of the well - known signal specifiers such as - SIGTERM, SIGINT or SIGSTOP. If - omitted defaults to - . - - - - - - - When used with - enable, overwrite any - existing conflicting - symlinks. - - When used with - halt, - poweroff, - reboot or - kexec execute the - selected operation without shutting - down all units. However, all processes - will be killed forcibly and all file - systems are unmounted or remounted - read-only. This is hence a drastic but - relatively safe option to request an - immediate reboot. If - is specified - twice for these operations, they will - be executed immediately without - terminating any processes or umounting - any file systems. Warning: specifying - twice with - any of these operations might result - in data loss. - - - - - - When used with - enable/disable/is-enabled (and - related commands), use alternative - root path when looking for unit - files. - - - - - - When used with - enable/disable/is-enabled (and related commands), make - changes only temporarily, so that they - are dropped on the next reboot. This - will have the effect that changes are - not made in subdirectories of - /etc but in - /run, with - identical immediate effects, however, - since the latter is lost on reboot, - the changes are lost - too. - - - - - - - Execute operation - remotely. Specify a hostname, or - username and hostname separated by @, - to connect to. This will use SSH to - talk to the remote systemd - instance. - - - - - - - Acquire privileges via - PolicyKit before executing the - operation. - - - - - - - When used with - status controls the - number of journal lines to show, - counting from the most recent - ones. Takes a positive integer - argument. Defaults to - 10. - - - - - - - When used with - status controls the - formatting of the journal entries that - are shown. For the available choices - see - journalctl1. Defaults - to - short. - - - - - The following commands are understood: - - - - list-units - - List known units (subject to limitations - specified with ). - - This is the default command. - - - start [NAME...] - - Start (activate) one - or more units specified on the command - line. - - - stop [NAME...] - - Stop (deactivate) one - or more units specified on the command - line. - - - reload [NAME...] - - Asks all units listed - on the command line to reload their - configuration. Note that this will - reload the service-specific - configuration, not the unit - configuration file of systemd. If you - want systemd to reload the - configuration file of a unit use the - daemon-reload - command. In other words: for the - example case of Apache, this will - reload Apache's - httpd.conf in the - web server, not the - apache.service - systemd unit file. - - This command should not be - confused with the - daemon-reload or - load - commands. - - - - restart [NAME...] - - Restart one or more - units specified on the command - line. If the units are not running yet - they will be - started. - - - try-restart [NAME...] - - Restart one or more - units specified on the command - line if the units are running. Do - nothing if units are not running. - Note that for compatibility - with Red Hat init scripts - condrestart is - equivalent to this command. - - - reload-or-restart [NAME...] - - Reload one or more - units if they support it. If not, - restart them instead. If the units - are not running yet they will be - started. - - - reload-or-try-restart [NAME...] - - Reload one or more - units if they support it. If not, - restart them instead. Do nothing if - the units are not running. Note that - for compatibility with SysV init - scripts - force-reload is - equivalent to this - command. - - - isolate [NAME] - - Start the unit - specified on the command line and its - dependencies and stop all others. - - This is similar to changing the - runlevel in a traditional init system. The - isolate command will - immediately stop processes that are not - enabled in the new unit, possibly including - the graphical environment or terminal you - are currently using. - - Note that this works only on units - where is - enabled. See - systemd.unit5 - for details. - - - kill [NAME...] - - Send a signal to one - or more processes of the unit. Use - to select - which process to kill. Use - to - select the kill mode and - to select - the signal to send. - - - is-active [NAME...] - - Check whether any of - the specified units are active - (i.e. running). Returns an exit code - 0 if at least one is active, non-zero - otherwise. Unless - is specified - this will also print the current unit - state to STDOUT. - - - is-failed [NAME...] - - Check whether any of - the specified units are failed. - Returns an exit code - 0 if at least one is failed, non-zero - otherwise. Unless - is specified - this will also print the current unit - state to STDOUT. - - - status [NAME...|PID...] - - Show terse runtime - status information about one or more - units, followed by most recent log - data from the journal. If no units are - specified, show all units (subject to - limitations specified with - ). If a PID is - passed show information about the unit - the process belongs to. - - This function is intended to - generate human-readable output. If you - are looking for computer-parsable - output, use show - instead. - - - show [NAME...|JOB...] - - Show properties of one - or more units, jobs or the manager - itself. If no argument is specified - properties of the manager will be - shown. If a unit name is specified - properties of the unit is shown, and - if a job id is specified properties of - the job is shown. By default, empty - properties are suppressed. Use - to show those - too. To select specific properties to - show use - . This - command is intended to be used - whenever computer-parsable output is - required. Use - status if you are - looking for formatted human-readable - output. - - - help [NAME...|PID...] - - Show manual pages for - one or more units, if available. If a - PID is passed the manual pages for the - unit the process of the PID belongs to - is shown. - - - reset-failed [NAME...] - - Reset the - 'failed' state of the - specified units, or if no unit name is - passed of all units. When a unit fails - in some way (i.e. process exiting with - non-zero error code, terminating - abnormally or timing out) it will - automatically enter the - 'failed' state and - its exit code and status is recorded - for introspection by the administrator - until the service is restarted or - reset with this - command. - - - - list-unit-files - - List installed unit files. - - - - - enable [NAME...] - - Enable one or - more unit files or unit file - instances, as specified on the - command line. This will create a - number of symlinks as encoded in - the [Install] - sections of the unit files. After - the symlinks have been created the - systemd configuration is reloaded - (in a way that is equivalent to - daemon-reload) - to ensure the changes are taken into - account immediately. Note that this - does not have the effect that any of - the units enabled are also started at - the same time. If this is desired - a separate start - command must be invoked for the unit. - Also note that in case of instance - enablement, symlinks named same as - instances are created in install - location, however they all point to - the same template unit file. - - This command will - print the actions executed. This - output may be suppressed by passing - . - - Note that this operation creates - only the suggested symlinks for the - units. While this command is the - recommended way to manipulate the unit - configuration directory, the - administrator is free to make - additional changes manually, by - placing or removing symlinks in the - directory. This is particularly useful - to create configurations that deviate - from the suggested default - installation. In this case the - administrator must make sure to invoke - daemon-reload - manually as necessary, to ensure his - changes are taken into account. - - Enabling units should not be - confused with starting (activating) - units, as done by the - start - command. Enabling and starting units - is orthogonal: units may be enabled - without being started and started - without being enabled. Enabling simply - hooks the unit into various suggested - places (for example, so that the unit - is automatically started on boot or - when a particular kind of hardware is - plugged in). Starting actually spawns - the daemon process (in case of service - units), or binds the socket (in case - of socket units), and so - on. - - Depending on whether - , - or - is specified - this enables the unit for the system, - for the calling user only - or for all future logins of all - users. Note that in the latter case no - systemd daemon configuration is - reloaded. - - - - - disable [NAME...] - - Disables one or more - units. This removes all symlinks to - the specified unit files from the unit - configuration directory, and hence - undoes the changes made by - enable. Note - however that this removes - all symlinks to the unit files - (i.e. including manual additions), not - just those actually created by - enable. This call - implicitly reloads the systemd daemon - configuration after completing the - disabling of the units. Note that this - command does not implicitly stop the - units that are being disabled. If this - is desired an additional - stop command should - be executed afterwards. - - This command will print the - actions executed. This output may be - suppressed by passing - . - - - This command honors - , - , - in a similar - way as - enable. - - - - is-enabled [NAME...] - - Checks whether any of - the specified unit files are enabled - (as with - enable). Returns an - exit code of 0 if at least one is - enabled, non-zero otherwise. Prints - the current enable status. To suppress - this output use - . - - - - reenable [NAME...] - - Reenable one or more - unit files, as specified on the - command line. This is a combination of - disable and - enable and is - useful to reset the symlinks a unit is - enabled with to the defaults - configured in the - [Install] section - of the unit file. - - - - - preset [NAME...] - - Reset one or more unit - files, as specified on the command - line, to the defaults configured in - the preset policy files. This has the - same effect as - disable or - enable, depending - how the unit is listed in the preset - files. For more information on preset - policy format see - systemd.preset5. For - more information on the concept of - presets please consult the Preset - document. - - - - - mask [NAME...] - - Mask one or more unit - files, as specified on the command - line. This will link these units to - /dev/null, making - it impossible to start them. This is a stronger version - of disable, since - it prohibits all kinds of activation - of the unit, including manual - activation. Use this option with - care. - - - - - unmask [NAME...] - - Unmask one or more - unit files, as specified on the - command line. This will undo the - effect of - mask. - - - - - link [NAME...] - - Link a unit file that - is not in the unit file search paths - into the unit file search path. This - requires an absolute path to a unit - file. The effect of this can be undone - with disable. The - effect of this command is that a unit - file is available for - start and other - commands although it isn't installed - directly in the unit search - path. - - - - - load [NAME...] - - Load one or more units - specified on the command line. This - will simply load their configuration - from disk, but not start them. To - start them you need to use the - start command which - will implicitly load a unit that has - not been loaded yet. Note that systemd - garbage collects loaded units that are - not active or referenced by an active - unit. This means that units loaded - this way will usually not stay loaded - for long. Also note that this command - cannot be used to reload unit - configuration. Use the - daemon-reload - command for that. All in all, this - command is of little use except for - debugging. - This command should not be - confused with the - daemon-reload or - reload - commands. - - - list-jobs - - List jobs that are in progress. - - - cancel [JOB...] - - Cancel one or more - jobs specified on the command line by - their numeric job - IDs. If no job id is specified, cancel all pending jobs. - - - dump - - Dump server - status. This will output a (usually - very long) human readable manager - status dump. Its format is subject to - change without notice and should not - be parsed by - applications. - - - list-dependencies [NAME] - - Shows required and - wanted units of the specified unit. If - no unit is specified - default.target is - implied. Target units are recursively - expanded. When - is passed all other units aare - recursively expanded as well. - - - - snapshot [NAME] - - Create a snapshot. If - a snapshot name is specified, the new - snapshot will be named after it. If - none is specified an automatic - snapshot name is generated. In either - case, the snapshot name used is - printed to STDOUT, unless - is - specified. - - A snapshot refers to a saved - state of the systemd manager. It is - implemented itself as a unit that is - generated dynamically with this - command and has dependencies on all - units active at the time. At a later - time the user may return to this state - by using the - isolate command on - the snapshot unit. - - Snapshots are only useful for - saving and restoring which units are - running or are stopped, they do not - save/restore any other - state. Snapshots are dynamic and lost - on reboot. - - - delete [NAME...] - - Remove a snapshot - previously created with - snapshot. - - - daemon-reload - - Reload systemd manager - configuration. This will reload all - unit files and recreate the entire - dependency tree. While the daemon is - reloaded, all sockets systemd listens - on on behalf of user configuration will - stay accessible. This - command should not be confused with - the load or - reload - commands. - - - daemon-reexec - - Reexecute the systemd - manager. This will serialize the - manager state, reexecute the process - and deserialize the state again. This - command is of little use except for - debugging and package - upgrades. Sometimes it might be - helpful as a heavy-weight - daemon-reload. While - the daemon is reexecuted all sockets - systemd listens on on behalf of user - configuration will stay - accessible. - - - show-environment - - Dump the systemd - manager environment block. The - environment block will be dumped in - straight-forward form suitable for - sourcing into a shell script. This - environment block will be passed to - all processes the manager - spawns. - - - set-environment [NAME=VALUE...] - - Set one or more - systemd manager environment variables, - as specified on the command - line. - - - unset-environment [NAME...] - - Unset one or more - systemd manager environment - variables. If only a variable name is - specified it will be removed - regardless of its value. If a variable - and a value are specified the variable - is only removed if it has the - specified value. - - - default - - Enter default - mode. This is mostly equivalent to - start - default.target. - - - rescue - - Enter rescue - mode. This is mostly equivalent to - isolate - rescue.target but also - prints a wall message to all - users. - - - emergency - - Enter emergency - mode. This is mostly equivalent to - isolate - emergency.target but also - prints a wall message to all - users. - - - halt - - Shut down and halt the - system. This is mostly equivalent to - start halt.target - but also prints a wall message to all - users. If combined with - shutdown of - all running services is skipped, - however all processes are killed and - all file systems are unmounted or - mounted read-only, immediately - followed by the system halt. If - is specified - twice the operation is immediately - executed without terminating any - processes or unmounting any file - systems. This may result in data - loss. - - - poweroff - - Shut down and - power-off the system. This is mostly - equivalent to start - poweroff.target but also - prints a wall message to all users. If - combined with - shutdown of all running services is - skipped, however all processes are - killed and all file systems are - unmounted or mounted read-only, - immediately followed by the powering - off. If is - specified twice the operation is - immediately executed without - terminating any processes or - unmounting any file systems. This may - result in data loss. - - - reboot - - Shut down and reboot - the system. This is mostly equivalent - to start - reboot.target but also - prints a wall message to all users. If - combined with - shutdown of all running services is - skipped, however all processes are - killed and all file systems are - unmounted or mounted read-only, - immediately followed by the reboot. If - is specified - twice the operation is immediately - executed without terminating any - processes or unmounting any file - systems. This may result in data - loss. - - - kexec - - Shut down and reboot - the system via kexec. This is mostly - equivalent to start - kexec.target but also prints - a wall message to all users. If - combined with - shutdown of all running services is - skipped, however all processes are killed - and all file systems are unmounted or - mounted read-only, immediately - followed by the - reboot. - - - exit - - Ask the systemd - manager to quit. This is only - supported for user service managers - (i.e. in conjunction with the - option) and - will fail otherwise. - - - suspend - - Suspend the - system. This will trigger activation - of the special - suspend.target - target. - - - hibernate - - Hibernate the - system. This will trigger activation - of the special - hibernate.target - target. - - - hybrid-sleep - - Hibernate and suspend - the system. This will trigger - activation of the special - hybrid-sleep.target - target. - - - switch-root [ROOT] [INIT] - - Switches to a - different root directory and executes - a new system manager process below - it. This is intended for usage in - initial RAM disks ("initrd"), and will - transition from the initrd's system - manager process (a.k.a "init" process) - to the main system manager - process. Takes two arguments: the - directory to make the new root - directory, and the path to the new - system manager binary below it to - execute as PID 1. If the latter is - omitted or the empty string, a - systemd binary will automatically be - searched for and used as init. If the - system manager path is omitted or - equal the empty string the state of - the initrd's system manager process is - passed to the main system manager, - which allows later introspection of the - state of the services involved in the - initrd boot. - - - - - - - Exit status - - On success 0 is returned, a non-zero failure - code otherwise. - - - - Environment - - - - $SYSTEMD_PAGER - Pager to use when - is not given; - overrides $PAGER. Setting - this to an empty string or the value - cat is equivalent to passing - . - - - - - - See Also - - systemd1, - systemadm1, - journalctl1, - loginctl1, - systemd.unit5, - systemd.special7, - wall1, - systemd.preset5 - - + + systemctl + systemd + + + + Developer + Lennart + Poettering + lennart@poettering.net + + + + + + systemctl + 1 + + + + systemctl + Control the systemd system and service manager + + + + + systemctl + OPTIONS + COMMAND + NAME + + + + + Description + + systemctl may be used to + introspect and control the state of the + systemd1 + system and service manager. + + + + Options + + The following options are understood: + + + + + + + Prints a short help + text and exits. + + + + + + + Prints a short version string and exits. + + + + + + + + + The argument should be a unit type name such as + and , or a + unit load state such as and + . + + + If the argument is a unit type, when listing units, + limit display to certain unit types. If not specified units + of all types will be shown. + + If the argument is a unit load state, when listing + units, limit display to certain unit types. If not specified + units of in all load states will be shown. + + As a special case, if the argument is + , a list of allowed values will be + printed and the program will exit. + + + + + + + + + When showing unit/job/manager properties, limit + display to certain properties as specified as argument. If + not specified all set properties are shown. The argument + should be a property name, such as + MainPID. If specified more than once all + properties with the specified names are + shown. + + + + + + + + + When listing units, show all units, regardless of + their state, including inactive units. When showing + unit/job/manager properties, show all properties regardless + whether they are set or not. + + + + + + + + When listing units, show only failed units. Do not + confuse with . + + + + + + + + Do not ellipsize unit names, cgroup members, and + truncate unit descriptions in the output of + list-units and + list-jobs. + + + + + + + + If the requested operation conflicts with a pending + unfinished job, fail the command. If this is not specified + the requested operation will replace the pending job, if + necessary. Do not confuse with + . + + + + + + + + When enqueuing a new job ignore all its dependencies + and execute it immediately. If passed no required units of + the unit passed will be pulled in, and no ordering + dependencies will be honored. This is mostly a debugging and + rescue tool for the administrator and should not be used by + applications. + + + + + + + + + When system shutdown or a sleep state is requested, + ignore inhibitor locks. Applications can establish inhibitor + locks to avoid that certain important operations (such as CD + burning or suchlike) are interrupted by system shutdown or a + sleep state. Any user may take these locks and privileged + users may override these locks. If any locks are taken, + shutdown and sleep state requests will normally fail + (regardless if privileged or not) and list of active locks + is printed. However if + is specified the locks are ignored and not printed, and the + operation attempted anyway, possibly requiring additional + privileges. + + + + + + + + + Suppress output to standard output in + snapshot, + is-active, + is-failed, + enable and + disable. + + + + + + + + Do not synchronously wait for the requested operation + to finish. If this is not specified the job will be + verified, enqueued and systemctl will + wait until it is completed. By passing this argument it is + only verified and enqueued. + + + + + + + + Do not print a legend, i.e. the column headers and + the footer with hints. + + + + + + + + Do not pipe output into a pager. + + + + + + + + Talk to the systemd system manager. (Default) + + + + + + + + Talk to the systemd manager of the calling + user. + + + + + + + + Don't send wall message before halt, power-off, + reboot. + + + + + + + + When used with enable and + disable, operate on the global user + configuration directory, thus enabling or disabling a unit + file globally for all future logins of all users. + + + + + + + + When used with enable and + disable, do not implicitly reload daemon + configuration after executing the changes. + + + + + + + + When used with start and related + commands, disables asking for passwords. Background services + may require input of a password or passphrase string, for + example to unlock system hard disks or cryptographic + certificates. Unless this option is specified and the + command is invoked from a terminal + systemctl will query the user on the + terminal for the necessary secrets. Use this option to + switch this behavior off. In this case the password must be + supplied by some other means (for example graphical password + agents) or the service might fail. This also disables + querying the user for authentication for privileged + operations. + + + + + + + + + When used with kill, choose which + processes to kill. Must be one of , + or to select + whether to kill only the main process of the unit, the + control process or all processes of the unit. If omitted + defaults to . + + + + + + + + + + When used with kill, choose which + signal to send to selected processes. Must be one of the + well known signal specifiers such as SIGTERM, SIGINT or + SIGSTOP. If omitted defaults to + . + + + + + + + + + When used with enable, overwrite + any existing conflicting symlinks. + + When used with halt, + poweroff, reboot or + kexec execute the selected operation + without shutting down all units. However, all processes will + be killed forcibly and all file systems are unmounted or + remounted read-only. This is hence a drastic but relatively + safe option to request an immediate reboot. If + is specified twice for these + operations, they will be executed immediately without + terminating any processes or umounting any file + systems. Warning: specifying twice + with any of these operations might result in data + loss. + + + + + + + + When used with + enable/disable/is-enabled + (and related commands), use alternative root path when + looking for unit files. + + + + + + + + + When used with + enable/disable/is-enabled + (and related commands), make changes only temporarily, so + that they are dropped on the next reboot. This will have the + effect that changes are not made in subdirectories of + /etc but in /run, + with identical immediate effects, however, since the latter + is lost on reboot, the changes are lost too. + + + + + + + + + Execute operation remotely. Specify a hostname, or + username and hostname separated by @, to connect to. This + will use SSH to talk to the remote systemd + instance. + + + + + + + + + Acquire privileges via PolicyKit before executing the + operation. + + + + + + + + + When used with status controls the + number of journal lines to show, counting from the most + recent ones. Takes a positive integer argument. Defaults to + 10. + + + + + + + + + When used with status controls the + formatting of the journal entries that are shown. For the + available choices see + journalctl1. + Defaults to short. + + + + + + + + Commands + + The following commands are understood: + + + + list-units + + + List known units (subject to limitations specified + with ). + + This is the default command. + + + + start NAME... + + + Start (activate) one or more units specified on the + command line. + + + + stop NAME... + + + Stop (deactivate) one or more units specified on the + command line. + + + + reload NAME... + + + Asks all units listed on the command line to reload + their configuration. Note that this will reload the + service-specific configuration, not the unit configuration + file of systemd. If you want systemd to reload the + configuration file of a unit use the + daemon-reload command. In other words: + for the example case of Apache, this will reload Apache's + httpd.conf in the web server, not the + apache.service systemd unit + file. + + This command should not be confused with the + daemon-reload or load + commands. + + + + + restart NAME... + + + Restart one or more units specified on the command + line. If the units are not running yet they will be + started. + + + + try-restart NAME... + + + Restart one or more units specified on the command + line if the units are running. Do nothing if units are not + running. Note that for compatibility with Red Hat init + scripts condrestart is equivalent to this + command. + + + + reload-or-restart NAME... + + + Reload one or more units if they support it. If not, + restart them instead. If the units are not running yet they + will be started. + + + + reload-or-try-restart NAME... + + + Reload one or more units if they support it. If not, + restart them instead. Do nothing if the units are not + running. Note that for compatibility with SysV init scripts + force-reload is equivalent to this + command. + + + + isolate NAME + + + Start the unit specified on the command line and its + dependencies and stop all others. + + This is similar to changing the runlevel in a + traditional init system. The isolate + command will immediately stop processes that are not enabled + in the new unit, possibly including the graphical + environment or terminal you are currently using. + + Note that this is allowed only on units where + is enabled. See + systemd.unit5 + for details. + + + + kill NAME... + + + Send a signal to one or more processes of the + unit. Use to select which + process to kill. Use to select + the kill mode and to select the + signal to send. + + + + is-active NAME... + + + Check whether any of the specified units are active + (i.e. running). Returns an exit code 0 if at least one is + active, non-zero otherwise. Unless + is specified this will also print the current unit state to + STDOUT. + + + + is-failed NAME... + + + Check whether any of the specified units are failed. + Returns an exit code 0 if at least one is failed, non-zero + otherwise. Unless is specified this + will also print the current unit state to + STDOUT. + + + + status [NAME...|PID...] + + + Show terse runtime status information about one or + more units, followed by most recent log data from the + journal. If no units are specified, show all units (subject + to limitations specified with ). If a PID + is passed show information about the unit the process + belongs to. + + This function is intended to generate human-readable + output. If you are looking for computer-parsable output, use + show instead. + + + + show [NAME...|JOB...] + + + Show properties of one or more units, jobs, or the + manager itself. If no argument is specified properties of + the manager will be shown. If a unit name is specified + properties of the unit is shown, and if a job id is + specified properties of the job is shown. By default, empty + properties are suppressed. Use to + show those too. To select specific properties to show use + . This command is intended to be + used whenever computer-parsable output is required. Use + status if you are looking for formatted + human-readable output. + + + + help NAME...|PID... + + + Show manual pages for one or more units, if + available. If a PID is passed the manual pages for the unit + the process of the PID belongs to is + shown. + + + + reset-failed [NAME...] + + + Reset the failed state of the + specified units, or if no unit name is passed of all + units. When a unit fails in some way (i.e. process exiting + with non-zero error code, terminating abnormally or timing + out) it will automatically enter the + failed state and its exit code and status + is recorded for introspection by the administrator until the + service is restarted or reset with this command. + + + + + list-unit-files + + + List installed unit files. + + + + + enable NAME... + + + Enable one or more unit files or unit file instances, + as specified on the command line. This will create a number + of symlinks as encoded in the [Install] + sections of the unit files. After the symlinks have been + created the systemd configuration is reloaded (in a way that + is equivalent to daemon-reload) to ensure + the changes are taken into account immediately. Note that + this does not have the effect that any of the units enabled + are also started at the same time. If this is desired a + separate start command must be invoked + for the unit. Also note that in case of instance enablement, + symlinks named same as instances are created in install + location, however they all point to the same template unit + file. + + This command will print the actions executed. This + output may be suppressed by passing . + + + Note that this operation creates only the suggested + symlinks for the units. While this command is the + recommended way to manipulate the unit configuration + directory, the administrator is free to make additional + changes manually, by placing or removing symlinks in the + directory. This is particularly useful to create + configurations that deviate from the suggested default + installation. In this case the administrator must make sure + to invoke daemon-reload manually as + necessary, to ensure his changes are taken into account. + + + Enabling units should not be confused with starting + (activating) units, as done by the start + command. Enabling and starting units is orthogonal: units + may be enabled without being started and started without + being enabled. Enabling simply hooks the unit into various + suggested places (for example, so that the unit is + automatically started on boot or when a particular kind of + hardware is plugged in). Starting actually spawns the daemon + process (in case of service units), or binds the socket (in + case of socket units), and so on. + + Depending on whether , + or is + specified this enables the unit for the system, for the + calling user only or for all future logins of all + users. Note that in the last case no systemd daemon + configuration is reloaded. + + + + + disable NAME... + + + Disables one or more units. This removes all symlinks + to the specified unit files from the unit configuration + directory, and hence undoes the changes made by + enable. Note however that this removes + all symlinks to the unit files (i.e. including manual + additions), not just those actually created by + enable. This call implicitly reloads the + systemd daemon configuration after completing the disabling + of the units. Note that this command does not implicitly + stop the units that are being disabled. If this is desired + an additional stop command should be + executed afterwards. + + This command will print the actions executed. This + output may be suppressed by passing . + + + This command honors , + , in a + similar way as enable. + + + + + is-enabled NAME... + + + Checks whether any of the specified unit files are + enabled (as with enable). Returns an exit + code of 0 if at least one is enabled, non-zero + otherwise. Prints the current enable status. To suppress + this output use . + + + + + reenable NAME... + + + Reenable one or more unit files, as specified on the + command line. This is a combination of + disable and enable and + is useful to reset the symlinks a unit is enabled with to + the defaults configured in the [Install] + section of the unit file. + + + + + preset NAME... + + + Reset one or more unit files, as specified on the + command line, to the defaults configured in the preset + policy files. This has the same effect as + disable or enable, + depending how the unit is listed in the preset files. For + more information on preset policy format see + systemd.preset5. + For more information on the concept of presets please + consult the + Preset + document. + + + + + mask NAME... + + + Mask one or more unit files, as specified on the + command line. This will link these units to + /dev/null, making it impossible to + start them. This is a stronger version of + disable, since it prohibits all kinds of + activation of the unit, including manual activation. Use + this option with care. + + + + + unmask NAME... + + + Unmask one or more unit files, as specified on the + command line. This will undo the effect of + mask. + + + + + link FILENAME... + + + Link a unit file that is not in the unit file search + paths into the unit file search path. This requires an + absolute path to a unit file. The effect of this can be + undone with disable. The effect of this + command is that a unit file is available for + start and other commands although it + isn't installed directly in the unit search path. + + + + + load NAME... + + + Load one or more units specified on the command + line. This will simply load their configuration from disk, + but not start them. To start them you need to use the + start command which will implicitly load + a unit that has not been loaded yet. Note that systemd + garbage collects loaded units that are not active or + referenced by an active unit. This means that units loaded + this way will usually not stay loaded for long. Also note + that this command cannot be used to reload unit + configuration. Use the daemon-reload + command for that. All in all, this command is of little use + except for debugging. + + This command should not be confused with the + daemon-reload or + reload. + + + + list-jobs + + + List jobs that are in progress. + + + + cancel JOB... + + + Cancel one or more jobs specified on the command line + by their numeric job IDs. If no job id is specified, cancel + all pending jobs. + + + + dump + + + Dump server status. This will output a (usually very + long) human readable manager status dump. Its format is + subject to change without notice and should not be parsed by + applications. + + + + list-dependencies NAME + + + Shows required and wanted units of the specified + unit. If no unit is specified + default.target is implied. Target units + are recursively expanded. When is + passed all other units are recursively expanded as + well. + + + + snapshot [NAME] + + + Create a snapshot. If a snapshot name is specified, + the new snapshot will be named after it. If none is + specified an automatic snapshot name is generated. In either + case, the snapshot name used is printed to STDOUT, unless + is specified. + + A snapshot refers to a saved state of the systemd + manager. It is implemented itself as a unit that is + generated dynamically with this command and has dependencies + on all units active at the time. At a later time the user + may return to this state by using the + isolate command on the snapshot unit. + + + Snapshots are only useful for saving and restoring + which units are running or are stopped, they do not + save/restore any other state. Snapshots are dynamic and lost + on reboot. + + + + delete NAME... + + + Remove a snapshot previously created with + snapshot. + + + + daemon-reload + + + Reload systemd manager configuration. This will reload + all unit files and recreate the entire dependency + tree. While the daemon is reloaded, all sockets systemd + listens on on behalf of user configuration will stay + accessible. This command should not be confused + with the load or + reload commands. + + + + daemon-reexec + + + Reexecute the systemd manager. This will serialize the + manager state, reexecute the process and deserialize the + state again. This command is of little use except for + debugging and package upgrades. Sometimes it might be + helpful as a heavy-weight daemon-reload. + While the daemon is reexecuted all sockets systemd listens + on on behalf of user configuration will stay accessible. + + + + + show-environment + + + Dump the systemd manager environment block. The + environment block will be dumped in straight-forward form + suitable for sourcing into a shell script. This environment + block will be passed to all processes the manager + spawns. + + + + set-environment VARIABLE=VALUE... + + + Set one or more systemd manager environment variables, + as specified on the command line. + + + + unset-environment VARIABLE... + + + Unset one or more systemd manager environment + variables. If only a variable name is specified it will be + removed regardless of its value. If a variable and a value + are specified the variable is only removed if it has the + specified value. + + + + default + + + Enter default mode. This is mostly equivalent to + start default.target. + + + + rescue + + + Enter rescue mode. This is mostly equivalent to + isolate rescue.target but also prints a + wall message to all users. + + + + emergency + + + Enter emergency mode. This is mostly equivalent to + isolate emergency.target but also prints + a wall message to all users. + + + + halt + + + Shut down and halt the system. This is mostly + equivalent to start halt.target but also + prints a wall message to all users. If combined with + shutdown of all running services is + skipped, however all processes are killed and all file + systems are unmounted or mounted read-only, immediately + followed by the system halt. If is + specified twice the operation is immediately executed + without terminating any processes or unmounting any file + systems. This may result in data loss. + + + + poweroff + + + Shut down and power-off the system. This is mostly + equivalent to start poweroff.target but + also prints a wall message to all users. If combined with + shutdown of all running services is + skipped, however all processes are killed and all file + systems are unmounted or mounted read-only, immediately + followed by the powering off. If is + specified twice the operation is immediately executed + without terminating any processes or unmounting any file + systems. This may result in data loss. + + + + reboot + + + Shut down and reboot the system. This is mostly + equivalent to start reboot.target but + also prints a wall message to all users. If combined with + shutdown of all running services is + skipped, however all processes are killed and all file + systems are unmounted or mounted read-only, immediately + followed by the reboot. If is + specified twice the operation is immediately executed + without terminating any processes or unmounting any file + systems. This may result in data loss. + + + + kexec + + + Shut down and reboot the system via kexec. This is + mostly equivalent to start kexec.target + but also prints a wall message to all users. If combined + with shutdown of all running + services is skipped, however all processes are killed and + all file systems are unmounted or mounted read-only, + immediately followed by the reboot. + + + + exit + + + Ask the systemd manager to quit. This is only + supported for user service managers (i.e. in conjunction + with the option) and will fail + otherwise. + + + + + suspend + + + Suspend the system. This will trigger activation of + the special suspend.target target. + + + + + hibernate + + + Hibernate the system. This will trigger activation of + the special hibernate.target target. + + + + + hybrid-sleep + + + Hibernate and suspend the system. This will trigger + activation of the special + hybrid-sleep.target target. + + + + switch-root ROOT [INIT] + + + Switches to a different root directory and executes a + new system manager process below it. This is intended for + usage in initial RAM disks ("initrd"), and will transition + from the initrd's system manager process (a.k.a "init" + process) to the main system manager process. Takes two + arguments: the directory to make the new root directory, and + the path to the new system manager binary below it to + execute as PID 1. If the latter is omitted or the empty + string, a systemd binary will automatically be searched for + and used as init. If the system manager path is omitted or + equal to the empty string the state of the initrd's system + manager process is passed to the main system manager, which + allows later introspection of the state of the services + involved in the initrd boot. + + + + + + + + Exit status + + On success 0 is returned, a non-zero failure + code otherwise. + + + + Environment + + + + $SYSTEMD_PAGER + + + Pager to use when is not + given; overrides $PAGER. Setting this to + an empty string or the value cat is + equivalent to passing + . + + + + + + + See Also + + systemd1, + systemadm1, + journalctl1, + loginctl1, + systemd.unit5, + systemd.special7, + wall1, + systemd.preset5 + + -- cgit v1.2.1 From 033a842c36e7629f81d05d12a4ed8c298ad4d3f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 16 Feb 2013 17:20:28 -0500 Subject: systemctl: allow comma sepearted property lists --- man/systemctl.xml | 5 ++--- src/systemctl/systemctl.c | 25 ++++++++++++++++++++----- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/man/systemctl.xml b/man/systemctl.xml index 1a55522b12..683f2e7402 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -120,10 +120,9 @@ along with systemd; If not, see . When showing unit/job/manager properties, limit display to certain properties as specified as argument. If not specified all set properties are shown. The argument - should be a property name, such as + should be a comma-seperated list of property names, such as MainPID. If specified more than once all - properties with the specified names are - shown. + properties with the specified names are shown. diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index ddf46b66d5..509651c1fd 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -4394,18 +4394,33 @@ static int systemctl_parse_argv(int argc, char *argv[]) { log_info("Use -t help to see a list of allowed values."); return -EINVAL; case 'p': { - char **l; + char *word, *state; + size_t size; + /* Make sure that if the empty property list + was specified, we won't show any properties. */ + const char *source = isempty(optarg) ? " " : optarg; + + FOREACH_WORD_SEPARATOR(word, size, source, ",", state) { + char _cleanup_free_ *prop; + char **tmp; + + prop = strndup(word, size); + if (!prop) + return -ENOMEM; - if (!(l = strv_append(arg_property, optarg))) - return -ENOMEM; + tmp = strv_append(arg_property, prop); + if (!tmp) + return -ENOMEM; - strv_free(arg_property); - arg_property = l; + strv_free(arg_property); + arg_property = tmp; + } /* If the user asked for a particular * property, show it to him, even if it is * empty. */ arg_all = true; + break; } -- cgit v1.2.1 From 486bdbded8728d5f0af10d4dc886329be512d66d Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Sat, 16 Feb 2013 16:40:02 -0800 Subject: TODO --- TODO | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO b/TODO index 0905e82b04..4b75c8517d 100644 --- a/TODO +++ b/TODO @@ -544,6 +544,7 @@ External: * bootchart: - plot per-process IO utilization - group processes based on service association (cgroups) + - document initcall_debug Regularly: -- cgit v1.2.1 From ddb5bee15a6ad71e5b596c035c1ee4dc04d5fd2e Mon Sep 17 00:00:00 2001 From: "Zeeshan Ali (Khattak)" Date: Sun, 17 Feb 2013 03:21:27 +0200 Subject: udev: expose new ISO9660 properties from libblkid --- src/udev/udev-builtin-blkid.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/udev/udev-builtin-blkid.c b/src/udev/udev-builtin-blkid.c index 56a05f5e50..bae429344f 100644 --- a/src/udev/udev-builtin-blkid.c +++ b/src/udev/udev-builtin-blkid.c @@ -78,6 +78,22 @@ static void print_property(struct udev_device *dev, bool test, const char *name, } else if (startswith(name, "PART_ENTRY_")) { strscpyl(s, sizeof(s), "ID_", name, NULL); udev_builtin_add_property(dev, test, s, value); + + } else if (streq(name, "SYSTEM_ID")) { + blkid_encode_string(value, s, sizeof(s)); + udev_builtin_add_property(dev, test, "ID_FS_SYSTEM_ID", s); + + } else if (streq(name, "PUBLISHER_ID")) { + blkid_encode_string(value, s, sizeof(s)); + udev_builtin_add_property(dev, test, "ID_FS_PUBLISHER_ID", s); + + } else if (streq(name, "APPLICATION_ID")) { + blkid_encode_string(value, s, sizeof(s)); + udev_builtin_add_property(dev, test, "ID_FS_APPLICATION_ID", s); + + } else if (streq(name, "BOOT_SYSTEM_ID")) { + blkid_encode_string(value, s, sizeof(s)); + udev_builtin_add_property(dev, test, "ID_FS_BOOT_SYSTEM_ID", s); } } -- cgit v1.2.1 From 02a6fc3ea69ba8801bc1864dd393d8df31559667 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sun, 17 Feb 2013 19:54:29 +0100 Subject: efi: compare by substraction --- src/shared/efivars.c | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/shared/efivars.c b/src/shared/efivars.c index 8494f37729..c42956f84d 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -308,12 +308,7 @@ static int boot_id_hex(const char s[4]) { static int cmp_uint16(const void *_a, const void *_b) { const uint16_t *a = _a, *b = _b; - if (*a < *b) - return -1; - if (*a > *b) - return 1; - - return 0; + return (int)*a - (int)*b; } int efi_get_boot_options(uint16_t **options) { -- cgit v1.2.1 From a2cbfd5916ee13b216a314826083e4c4e06930d1 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sun, 17 Feb 2013 19:55:15 +0100 Subject: udev: usb_id - ignore non-ASCII serial numbers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On Thu, Feb 7, 2013 at 3:52 PM, Robert Milasan wrote: > Hi, seems that using some strange usb devices with really bogus serial > numbers usb_id creates links with junk strings in it: > > /dev/disk/by-id/usb-TSSTcorp_BDDVDW_SE-506AB_㡒䍌䜶䉗ぁㄴ㌴†ँ-0:0 > > Initially was believed that usb_id is to blame, then the kernel, but it > turns out that really the usb cd/dvd drive has this bogus serial number: > > output from dmesg: > [ 538.200160] usb 1-2: new high-speed USB device number 5 using > ehci_hcd [ 538.335067] usb 1-2: New USB device found, idVendor=0e8d, > idProduct=1956 [ 538.335080] usb 1-2: New USB device strings: Mfr=1, > Product=2, SerialNumber=3 [ 538.335089] usb 1-2: Product: MT1956 > [ 538.335097] usb 1-2: Manufacturer: MediaTek Inc > [ 538.335105] usb 1-2: SerialNumber: > \xffffffe3\xffffffa1\xffffff92\xffffffe4\xffffff8d\xffffff8c ... > [ 538.337540] scsi6 : usb-storage 1-2:1.0 [ 539.341385] scsi 6:0:0:0: > CD-ROM TSSTcorp BDDVDW SE-506AB TS00 PQ: 0 ANSI: 0 > [ 539.354240] sr0: scsi3-mmc drive: 0x/24x writer dvd-ram cd/rw > xa/form2 cdda tray [ 539.354777] sr 6:0:0:0: Attached scsi CD-ROM sr0 > [ 539.355122] sr 6:0:0:0: Attached scsi generic sg2 type 5 --- src/udev/udev-builtin-usb_id.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/udev/udev-builtin-usb_id.c b/src/udev/udev-builtin-usb_id.c index 01e42ca7b1..ee83d4fde9 100644 --- a/src/udev/udev-builtin-usb_id.c +++ b/src/udev/udev-builtin-usb_id.c @@ -431,6 +431,17 @@ fallback: const char *usb_serial; usb_serial = udev_device_get_sysattr_value(dev_usb, "serial"); + if (usb_serial) { + const unsigned char *p; + + /* http://msdn.microsoft.com/en-us/library/windows/hardware/gg487321.aspx */ + for (p = (unsigned char *)usb_serial; *p != '\0'; p++) + if (*p < 0x20 || *p > 0x7f || *p == ',') { + usb_serial = NULL; + break; + } + } + if (usb_serial) { util_replace_whitespace(usb_serial, serial_str, sizeof(serial_str)-1); util_replace_chars(serial_str, NULL); -- cgit v1.2.1 From 7962afbba9016ea03d9f2987fee341443fcde39d Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sun, 17 Feb 2013 21:16:56 +0100 Subject: udev: usb_id: parse only 'size' bytes of the 'descriptors' buffer --- src/udev/udev-builtin-usb_id.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/udev/udev-builtin-usb_id.c b/src/udev/udev-builtin-usb_id.c index ee83d4fde9..dcb2468bf6 100644 --- a/src/udev/udev-builtin-usb_id.c +++ b/src/udev/udev-builtin-usb_id.c @@ -189,7 +189,7 @@ static int dev_if_packed_info(struct udev_device *dev, char *ifs_str, size_t len pos = 0; strpos = 0; ifs_str[0] = '\0'; - while (pos < sizeof(buf) && strpos+7 < len-2) { + while (pos < size && strpos+7 < len-2) { struct usb_interface_descriptor *desc; char if_str[8]; -- cgit v1.2.1 From 71bf4f6f6c450e111795054e1bc50da692202c31 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sun, 17 Feb 2013 22:28:21 +0100 Subject: bootctl: show "n/a" for empty boot option labels --- src/boot/boot-efi.c | 6 ++++++ src/boot/bootctl.c | 4 ++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/boot/boot-efi.c b/src/boot/boot-efi.c index faa86805d4..51f12c0c1a 100644 --- a/src/boot/boot-efi.c +++ b/src/boot/boot-efi.c @@ -75,7 +75,13 @@ static int get_boot_entries(struct boot_info *info) { err = efi_get_boot_option(list[i], &e->title, &e->part_uuid, &e->path); if (err < 0) continue; + + if (isempty(e->title)) { + free(e->title); + e->title = NULL; + } tilt_slashes(e->path); + e->id = list[i]; info->fw_entries_count++; } diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index 2f1f6438cd..2a42898e39 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -149,7 +149,7 @@ static int show_status(char **args, unsigned n) { printf(" Firmware: %s (%s)\n", info->fw_type, strna(info->fw_info)); if (info->fw_entry_active >= 0) { - printf("Firmware entry: %s\n", info->fw_entries[info->fw_entry_active].title); + printf("Firmware entry: %s\n", strna(info->fw_entries[info->fw_entry_active].title)); if (info->fw_entries[info->fw_entry_active].path) printf(" %s\n", info->fw_entries[info->fw_entry_active].path); if (!sd_id128_equal(info->fw_entries[info->fw_entry_active].part_uuid, SD_ID128_NULL)) @@ -165,7 +165,7 @@ static int show_status(char **args, unsigned n) { SD_ID128_FORMAT_VAL(info->loader_part_uuid)); if (info->loader_entry_active >= 0) { - printf(" Loader entry: %s\n", info->loader_entries[info->loader_entry_active].title); + printf(" Loader entry: %s\n", strna(info->loader_entries[info->loader_entry_active].title)); printf(" %s\n", info->loader_entries[info->loader_entry_active].path); } -- cgit v1.2.1 From 1e447e0a3cb3e98827938a182593056ddbb13b29 Mon Sep 17 00:00:00 2001 From: William Giokas <1007380@gmail.com> Date: Sat, 16 Feb 2013 22:04:29 -0600 Subject: man: Add reason for disk model info not working In systemd-bootchart, the disk model information will not be found unless the root device is specified using `root=/dev/sdxY` on the kernel line. Just add a note as to why this doesn't happen. --- man/systemd-bootchart.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml index a4770fc62d..9067d6530c 100644 --- a/man/systemd-bootchart.xml +++ b/man/systemd-bootchart.xml @@ -300,6 +300,10 @@ Bugs + systemd-bootchart does not get the model information for the hard drive + unless the root device is specified with root=/dev/sdxY. Using + UUIDs or PARTUUIDs will boot fine, but the hard drive model will not be + added to the chart. For bugs, please contact the author and current maintainer: Auke Kok auke-jan.h.kok@intel.com -- cgit v1.2.1 From 0d585d82913f06cd6174dd8d35fe5aacc3e08719 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Mon, 18 Feb 2013 23:49:04 +0100 Subject: tests: add test of memdup_multiply --- src/test/test-util.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/test/test-util.c b/src/test/test-util.c index 476fa09dbf..9ba984c75e 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -97,12 +97,26 @@ static void test_default_term_for_tty(void) { puts(default_term_for_tty("console")); } +static void test_memdup_multiply(void) { + int org[] = {1, 2, 3}; + int *dup; + + dup = (int*)memdup_multiply(org, sizeof(int), 3); + + assert_se(dup); + assert_se(dup[0] == 1); + assert_se(dup[1] == 2); + assert_se(dup[2] == 3); + free(dup); +} + int main(int argc, char *argv[]) { test_streq_ptr(); test_first_word(); test_parse_boolean(); test_default_term_for_tty(); test_foreach_word_quoted(); + test_memdup_multiply(); return 0; } -- cgit v1.2.1 From 2f213f74939e4e34700a98ff789edca1ea92456e Mon Sep 17 00:00:00 2001 From: Daniel Buch Date: Mon, 18 Feb 2013 23:53:33 +0100 Subject: test-strv.c: added strv_split_nulstr() test --- src/test/test-strv.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/test/test-strv.c b/src/test/test-strv.c index a8801b56b5..ea1f0881fe 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -100,6 +100,18 @@ static void test_strv_join(void) { assert_se(streq(t, "")); } +static void test_strv_split_nulstr(void) { + _cleanup_strv_free_ char **l = NULL; + const char nulstr[] = "str0\0str1\0str2\0str3\0"; + + l = strv_split_nulstr (nulstr); + + assert_se(streq(l[0], "str0")); + assert_se(streq(l[1], "str1")); + assert_se(streq(l[2], "str2")); + assert_se(streq(l[3], "str3")); +} + static void test_strv_parse_nulstr(void) { _cleanup_strv_free_ char **l = NULL; const char nulstr[] = "fuck\0fuck2\0fuck3\0\0fuck5\0\0xxx"; @@ -208,6 +220,7 @@ int main(int argc, char *argv[]) { test_strv_find(); test_strv_find_prefix(); test_strv_join(); + test_strv_split_nulstr(); test_strv_parse_nulstr(); test_strv_overlap(); test_strv_sort(); -- cgit v1.2.1 From 04045d8426fa03fc4414d71b0454c47e951840d8 Mon Sep 17 00:00:00 2001 From: Daniel Buch Date: Mon, 18 Feb 2013 16:48:12 +0100 Subject: test-strv.c: added OOM check for current tests New OOM check patch: I do assert_se() before variable is used to do correct check. --- src/test/test-strv.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/test/test-strv.c b/src/test/test-strv.c index ea1f0881fe..7f475a6f4c 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -85,18 +85,23 @@ static void test_strv_join(void) { }; p = strv_join((char **)input_table_multiple, ", "); + assert_se(p); assert_se(streq(p, "one, two, three")); q = strv_join((char **)input_table_multiple, ";"); + assert_se(q); assert_se(streq(q, "one;two;three")); r = strv_join((char **)input_table_multiple, NULL); + assert_se(r); assert_se(streq(r, "one two three")); s = strv_join((char **)input_table_one, ", "); + assert_se(s); assert_se(streq(s, "one")); t = strv_join((char **)input_table_none, ", "); + assert_se(t); assert_se(streq(t, "")); } @@ -105,6 +110,7 @@ static void test_strv_split_nulstr(void) { const char nulstr[] = "str0\0str1\0str2\0str3\0"; l = strv_split_nulstr (nulstr); + assert_se(l); assert_se(streq(l[0], "str0")); assert_se(streq(l[1], "str1")); @@ -117,6 +123,7 @@ static void test_strv_parse_nulstr(void) { const char nulstr[] = "fuck\0fuck2\0fuck3\0\0fuck5\0\0xxx"; l = strv_parse_nulstr(nulstr, sizeof(nulstr)-1); + assert_se(l); puts("Parse nulstr:"); strv_print(l); @@ -175,8 +182,11 @@ static void test_strv_merge_concat(void) { a = strv_new("without", "suffix", NULL); b = strv_new("with", "suffix", NULL); + assert_se(a); + assert_se(b); c = strv_merge_concat(a, b, "_suffix"); + assert_se(c); assert_se(streq(c[0], "without")); assert_se(streq(c[1], "suffix")); @@ -189,8 +199,11 @@ static void test_strv_merge(void) { a = strv_new("abc", "def", "ghi", NULL); b = strv_new("jkl", "mno", "pqr", NULL); + assert_se(a); + assert_se(b); c = strv_merge(a, b); + assert_se(c); assert_se(streq(c[0], "abc")); assert_se(streq(c[1], "def")); @@ -206,8 +219,11 @@ static void test_strv_append(void) { _cleanup_strv_free_ char **a = NULL, **b = NULL, **c = NULL; a = strv_new("test", "test1", NULL); + assert_se(a); b = strv_append(a, "test2"); c = strv_append(NULL, "test3"); + assert_se(b); + assert_se(c); assert_se(streq(b[0], "test")); assert_se(streq(b[1], "test1")); -- cgit v1.2.1 From 9f316366482471667dca20aba34c1f3a36fd56c3 Mon Sep 17 00:00:00 2001 From: Daniel Buch Date: Sun, 17 Feb 2013 20:15:52 +0100 Subject: test-strv.c: ported test_specifier_printf() to _cleanup_free_ + assert_se + cleanup --- src/test/test-strv.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/test/test-strv.c b/src/test/test-strv.c index 7f475a6f4c..504415ac0c 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -27,7 +27,7 @@ #include "strv.h" static void test_specifier_printf(void) { - char *w; + _cleanup_free_ char *w = NULL; const Specifier table[] = { { 'a', specifier_string, (char*) "AAAA" }, @@ -36,8 +36,10 @@ static void test_specifier_printf(void) { }; w = specifier_printf("xxx a=%a b=%b yyy", table, NULL); - printf("<%s>\n", w); - free(w); + puts(w); + + assert_se(w); + assert_se(streq(w, "xxx a=AAAA b=BBBB yyy")); } static void test_strv_find(void) { -- cgit v1.2.1 From 599391d88bba63c86d5cedf4c2393a180a18be8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 20 Feb 2013 11:17:43 +0100 Subject: man: document %% --- TODO | 1 - man/systemd.unit.xml.in | 5 +++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index 4b75c8517d..dd432b07af 100644 --- a/TODO +++ b/TODO @@ -163,7 +163,6 @@ Features: - Document word splitting syntax for ExecStart= and friends - document that units from /etc override those from /usr and /run - document the exit codes when services fail before they are exec()ed - - document that %% can be used to write % in a string that is specifier extended - document that service reload may be implemented as service reexec - document in wiki how to map ical recurrence events to systemd timer unit calendar specifications diff --git a/man/systemd.unit.xml.in b/man/systemd.unit.xml.in index 43f5ffc1f2..e99703f7b3 100644 --- a/man/systemd.unit.xml.in +++ b/man/systemd.unit.xml.in @@ -1287,6 +1287,11 @@ Host name The host name of the running system. + + %% + Escaped % + Single percent sign. + -- cgit v1.2.1 From 8d99e5f53057f490b93d2ea9cb2b669bbee21d00 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Wed, 20 Feb 2013 22:34:06 +0100 Subject: tests: more tests for util.c tests for: test_parse_pid test_parse_uid test_safe_atolli test_safe_atod --- src/test/test-util.c | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/src/test/test-util.c b/src/test/test-util.c index 9ba984c75e..e4dea09f85 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -68,6 +68,67 @@ static void test_parse_boolean(void) { assert_se(parse_boolean("") < 0); } +static void test_parse_pid(void) { + int r; + pid_t pid; + + r = parse_pid("100", &pid); + assert_se(r == 0); + assert_se(pid == 100); + + r = parse_pid("0x7FFFFFFF", &pid); + assert_se(r == 0); + assert_se(pid == 2147483647); + + pid = 65; /* pid is left unchanged on ERANGE. Set to known arbitrary value. */ + r = parse_pid("0", &pid); + assert_se(r == -ERANGE); + assert_se(pid == 65); + + pid = 65; /* pid is left unchanged on ERANGE. Set to known arbitrary value. */ + r = parse_pid("-100", &pid); + assert_se(r == -ERANGE); + assert_se(pid == 65); + + pid = 65; /* pid is left unchanged on ERANGE. Set to known arbitrary value. */ + r = parse_pid("0xFFFFFFFFFFFFFFFFF", &pid); + assert(r == -ERANGE); + assert_se(pid == 65); +} + +static void test_parse_uid(void) { + int r; + uid_t uid; + + r = parse_uid("100", &uid); + assert_se(r == 0); + assert_se(uid == 100); +} + +static void test_safe_atolli(void) { + int r; + long long l; + + r = safe_atolli("12345", &l); + assert_se(r == 0); + assert_se(l == 12345); + + r = safe_atolli("junk", &l); + assert_se(r == -EINVAL); +} + +static void test_safe_atod(void) { + int r; + double d; + + r = safe_atod("0.2244", &d); + assert_se(r == 0); + assert_se(abs(d - 0.2244) < 0.000001); + + r = safe_atod("junk", &d); + assert_se(r == -EINVAL); +} + static void test_foreach_word_quoted(void) { char *w, *state; size_t l; @@ -115,6 +176,10 @@ int main(int argc, char *argv[]) { test_first_word(); test_parse_boolean(); test_default_term_for_tty(); + test_parse_pid(); + test_parse_uid(); + test_safe_atolli(); + test_safe_atod(); test_foreach_word_quoted(); test_memdup_multiply(); -- cgit v1.2.1 From 22382c3f57a700126b5e7ab0641b7d583d67dbff Mon Sep 17 00:00:00 2001 From: "Max F. Albrecht" <1@178.is> Date: Wed, 20 Feb 2013 13:49:57 -0800 Subject: man: be even more clear about ExecStart's first argument. --- man/systemd.service.xml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/man/systemd.service.xml b/man/systemd.service.xml index aecf9c6efa..8977873c1e 100644 --- a/man/systemd.service.xml +++ b/man/systemd.service.xml @@ -298,8 +298,9 @@ ExecStart= Commands with their arguments that are executed when this - service is started. - + service is started. The first + argument must be an absolute path + name. When Type=oneshot is @@ -359,8 +360,8 @@ at whitespace, resulting in no or more arguments. Note that the first argument (i.e. the program to execute) - may not be a variable, and must be a - literal and absolute path + may not be a variable, since it must + be a literal and absolute path name. Optionally, if the absolute file -- cgit v1.2.1 From 696164cb5b5c35a8c5ba4ee63d299d404bb48833 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 21 Feb 2013 10:23:58 +0100 Subject: fstab-generator: change kernel command line mount path for root Use /sysroot instead of /new_root to mount the real root in the initramfs. --- TODO | 1 + src/fstab-generator/fstab-generator.c | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index dd432b07af..cffb2dbf08 100644 --- a/TODO +++ b/TODO @@ -128,6 +128,7 @@ Features: - journald: when dropping msgs due to ratelimit make sure to write "dropped %u messages" not only when we are about to print the next message that works, but alraedy after a short tiemout + - ratelimit should be configurable by message severity and by service/source - check if we can make journalctl by default use --follow mode inside of less if called without args? - maybe add API to send pairs of iovecs via sd_journal_send - journal: when writing journal auto-rotate if time jumps backwards diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index ad26acb14a..bfeddedf62 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -495,8 +495,8 @@ static int parse_new_root_from_proc_cmdline(void) { if (what) { - log_debug("Found entry what=%s where=/new_root type=%s", what, type); - r = add_mount(what, "/new_root", type, opts, 0, wait, false, false, + log_debug("Found entry what=%s where=/sysroot type=%s", what, type); + r = add_mount(what, "/sysroot", type, opts, 0, wait, false, false, false, false, false, "/proc/cmdline"); if (r < 0) -- cgit v1.2.1 From 2792bd6fef4c2ded0ddc77376af77ffd4c46f06f Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 21 Feb 2013 10:30:14 +0100 Subject: TODO: removed ratelimit --- TODO | 1 - 1 file changed, 1 deletion(-) diff --git a/TODO b/TODO index cffb2dbf08..dd432b07af 100644 --- a/TODO +++ b/TODO @@ -128,7 +128,6 @@ Features: - journald: when dropping msgs due to ratelimit make sure to write "dropped %u messages" not only when we are about to print the next message that works, but alraedy after a short tiemout - - ratelimit should be configurable by message severity and by service/source - check if we can make journalctl by default use --follow mode inside of less if called without args? - maybe add API to send pairs of iovecs via sd_journal_send - journal: when writing journal auto-rotate if time jumps backwards -- cgit v1.2.1 From 6f47ad30250cf467065a19105013321ee4973694 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 22 Feb 2013 11:18:46 +0100 Subject: journal: sd_journal_get_cursor should return 0 on success Documentation states that 0 is correct, and all other similar functions return 0 on success. Pointed-out-by: Steven Hiscocks --- src/journal/sd-journal.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 095fbb249c..8904560094 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -958,7 +958,7 @@ _public_ int sd_journal_get_cursor(sd_journal *j, char **cursor) { (unsigned long long) le64toh(o->entry.xor_hash)) < 0) return -ENOMEM; - return 1; + return 0; } _public_ int sd_journal_seek_cursor(sd_journal *j, const char *cursor) { -- cgit v1.2.1 From b7cf6049a36dfd8e5f3c6420243eb49d348dbd2f Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 22 Feb 2013 09:56:16 +0100 Subject: systemctl: make "systemctl default" use "isolate" job mode "systemctl default" should behave identically to "telinit N" (where N is the corresponding runlevel target number), therefore it should use isolate job mode too. --- man/systemctl.xml | 2 +- src/systemctl/systemctl.c | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/man/systemctl.xml b/man/systemctl.xml index 683f2e7402..c233543d7d 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -970,7 +970,7 @@ along with systemd; If not, see . Enter default mode. This is mostly equivalent to - start default.target. + isolate default.target. diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 509651c1fd..0f19c25ce5 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1598,7 +1598,8 @@ static int start_unit(DBusConnection *bus, char **args) { mode = (streq(args[0], "isolate") || streq(args[0], "rescue") || - streq(args[0], "emergency")) ? "isolate" : arg_job_mode; + streq(args[0], "emergency") || + streq(args[0], "default")) ? "isolate" : arg_job_mode; one_name = table[verb_to_action(args[0])]; -- cgit v1.2.1 From 23ade460e5a118daa575a961b405d089f95e0617 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 22 Feb 2013 11:21:37 +0100 Subject: core, systemctl: add support for irreversible jobs Add a new job mode: replace-irreversibly. Jobs enqueued using this mode cannot be implicitly canceled by later enqueued conflicting jobs. They can however still be canceled with an explicit "systemctl cancel" call. --- man/systemctl.xml | 11 +++++++++++ src/core/job.c | 15 +++++++++++++-- src/core/job.h | 2 ++ src/core/manager.c | 2 +- src/core/transaction.c | 20 +++++++++++--------- src/core/transaction.h | 3 ++- src/systemctl/systemctl.c | 6 ++++++ 7 files changed, 46 insertions(+), 13 deletions(-) diff --git a/man/systemctl.xml b/man/systemctl.xml index c233543d7d..0ceb26d59b 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -170,6 +170,17 @@ along with systemd; If not, see . + + + + + Mark this transaction's jobs as irreversible. This prevents + future conflicting transactions from replacing these jobs. + The jobs can still be cancelled using the cancel + command. + + + diff --git a/src/core/job.c b/src/core/job.c index 2bafbc1589..990607f990 100644 --- a/src/core/job.c +++ b/src/core/job.c @@ -169,6 +169,7 @@ static void job_merge_into_installed(Job *j, Job *other) { assert(other->type == JOB_NOP); j->override = j->override || other->override; + j->irreversible = j->irreversible || other->irreversible; j->ignore_order = j->ignore_order || other->ignore_order; } @@ -294,11 +295,13 @@ void job_dump(Job *j, FILE*f, const char *prefix) { "%s-> Job %u:\n" "%s\tAction: %s -> %s\n" "%s\tState: %s\n" - "%s\tForced: %s\n", + "%s\tForced: %s\n" + "%s\tIrreversible: %s\n", prefix, j->id, prefix, j->unit->id, job_type_to_string(j->type), prefix, job_state_to_string(j->state), - prefix, yes_no(j->override)); + prefix, yes_no(j->override), + prefix, yes_no(j->irreversible)); } /* @@ -947,6 +950,7 @@ int job_serialize(Job *j, FILE *f, FDSet *fds) { fprintf(f, "job-type=%s\n", job_type_to_string(j->type)); fprintf(f, "job-state=%s\n", job_state_to_string(j->state)); fprintf(f, "job-override=%s\n", yes_no(j->override)); + fprintf(f, "job-irreversible=%s\n", yes_no(j->irreversible)); fprintf(f, "job-sent-dbus-new-signal=%s\n", yes_no(j->sent_dbus_new_signal)); fprintf(f, "job-ignore-order=%s\n", yes_no(j->ignore_order)); /* Cannot save bus clients. Just note the fact that we're losing @@ -1014,6 +1018,12 @@ int job_deserialize(Job *j, FILE *f, FDSet *fds) { log_debug("Failed to parse job override flag %s", v); else j->override = j->override || b; + } else if (streq(l, "job-irreversible")) { + int b = parse_boolean(v); + if (b < 0) + log_debug("Failed to parse job irreversible flag %s", v); + else + j->irreversible = j->irreversible || b; } else if (streq(l, "job-sent-dbus-new-signal")) { int b = parse_boolean(v); if (b < 0) @@ -1110,6 +1120,7 @@ DEFINE_STRING_TABLE_LOOKUP(job_type, JobType); static const char* const job_mode_table[_JOB_MODE_MAX] = { [JOB_FAIL] = "fail", [JOB_REPLACE] = "replace", + [JOB_REPLACE_IRREVERSIBLY] = "replace-irreversibly", [JOB_ISOLATE] = "isolate", [JOB_IGNORE_DEPENDENCIES] = "ignore-dependencies", [JOB_IGNORE_REQUIREMENTS] = "ignore-requirements" diff --git a/src/core/job.h b/src/core/job.h index d10e6b6b0e..45d0487451 100644 --- a/src/core/job.h +++ b/src/core/job.h @@ -83,6 +83,7 @@ enum JobState { enum JobMode { JOB_FAIL, /* Fail if a conflicting job is already queued */ JOB_REPLACE, /* Replace an existing conflicting job */ + JOB_REPLACE_IRREVERSIBLY, /* Like JOB_REPLACE + produce irreversible jobs */ JOB_ISOLATE, /* Start a unit, and stop all others */ JOB_IGNORE_DEPENDENCIES, /* Ignore both requirement and ordering dependencies */ JOB_IGNORE_REQUIREMENTS, /* Ignore requirement dependencies */ @@ -161,6 +162,7 @@ struct Job { bool sent_dbus_new_signal:1; bool ignore_order:1; bool forgot_bus_clients:1; + bool irreversible:1; }; JobBusClient* job_bus_client_new(DBusConnection *connection, const char *name); diff --git a/src/core/manager.c b/src/core/manager.c index 28f169daab..a578813617 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -766,7 +766,7 @@ int manager_add_job(Manager *m, JobType type, Unit *unit, JobMode mode, bool ove job_type_collapse(&type, unit); - tr = transaction_new(); + tr = transaction_new(mode == JOB_REPLACE_IRREVERSIBLY); if (!tr) return -ENOMEM; diff --git a/src/core/transaction.c b/src/core/transaction.c index dbc30af7d1..0329366350 100644 --- a/src/core/transaction.c +++ b/src/core/transaction.c @@ -97,6 +97,7 @@ static void transaction_merge_and_delete_job(Transaction *tr, Job *j, Job *other j->type = t; j->state = JOB_WAITING; j->override = j->override || other->override; + j->irreversible = j->irreversible || other->irreversible; j->matters_to_anchor = j->matters_to_anchor || other->matters_to_anchor; @@ -488,7 +489,7 @@ rescan: } } -static int transaction_is_destructive(Transaction *tr, DBusError *e) { +static int transaction_is_destructive(Transaction *tr, JobMode mode, DBusError *e) { Iterator i; Job *j; @@ -503,7 +504,7 @@ static int transaction_is_destructive(Transaction *tr, DBusError *e) { assert(!j->transaction_prev); assert(!j->transaction_next); - if (j->unit->job && + if (j->unit->job && (mode == JOB_FAIL || j->unit->job->irreversible) && !job_type_is_superset(j->type, j->unit->job->type)) { dbus_set_error(e, BUS_ERROR_TRANSACTION_IS_DESTRUCTIVE, "Transaction is destructive."); @@ -709,12 +710,10 @@ int transaction_activate(Transaction *tr, Manager *m, JobMode mode, DBusError *e transaction_drop_redundant(tr); /* Ninth step: check whether we can actually apply this */ - if (mode == JOB_FAIL) { - r = transaction_is_destructive(tr, e); - if (r < 0) { - log_notice("Requested transaction contradicts existing jobs: %s", bus_error(e, r)); - return r; - } + r = transaction_is_destructive(tr, mode, e); + if (r < 0) { + log_notice("Requested transaction contradicts existing jobs: %s", bus_error(e, r)); + return r; } /* Tenth step: apply changes */ @@ -770,6 +769,7 @@ static Job* transaction_add_one_job(Transaction *tr, JobType type, Unit *unit, b j->marker = NULL; j->matters_to_anchor = false; j->override = override; + j->irreversible = tr->irreversible; LIST_PREPEND(Job, transaction, f, j); @@ -1106,7 +1106,7 @@ int transaction_add_isolate_jobs(Transaction *tr, Manager *m) { return 0; } -Transaction *transaction_new(void) { +Transaction *transaction_new(bool irreversible) { Transaction *tr; tr = new0(Transaction, 1); @@ -1119,6 +1119,8 @@ Transaction *transaction_new(void) { return NULL; } + tr->irreversible = irreversible; + return tr; } diff --git a/src/core/transaction.h b/src/core/transaction.h index 67ace4da0b..12f9194927 100644 --- a/src/core/transaction.h +++ b/src/core/transaction.h @@ -33,9 +33,10 @@ struct Transaction { /* Jobs to be added */ Hashmap *jobs; /* Unit object => Job object list 1:1 */ Job *anchor_job; /* the job the user asked for */ + bool irreversible; }; -Transaction *transaction_new(void); +Transaction *transaction_new(bool irreversible); void transaction_free(Transaction *tr); int transaction_add_job_and_dependencies( diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 0f19c25ce5..723be76cdb 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -4306,6 +4306,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { enum { ARG_FAIL = 0x100, + ARG_IRREVERSIBLE, ARG_IGNORE_DEPENDENCIES, ARG_VERSION, ARG_USER, @@ -4334,6 +4335,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { { "failed", no_argument, NULL, ARG_FAILED }, { "full", no_argument, NULL, ARG_FULL }, { "fail", no_argument, NULL, ARG_FAIL }, + { "irreversible", no_argument, NULL, ARG_IRREVERSIBLE }, { "ignore-dependencies", no_argument, NULL, ARG_IGNORE_DEPENDENCIES }, { "ignore-inhibitors", no_argument, NULL, 'i' }, { "user", no_argument, NULL, ARG_USER }, @@ -4433,6 +4435,10 @@ static int systemctl_parse_argv(int argc, char *argv[]) { arg_job_mode = "fail"; break; + case ARG_IRREVERSIBLE: + arg_job_mode = "replace-irreversibly"; + break; + case ARG_IGNORE_DEPENDENCIES: arg_job_mode = "ignore-dependencies"; break; -- cgit v1.2.1 From b85bdddafb321fa870b9250a2ff17040d6996061 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 22 Feb 2013 11:21:47 +0100 Subject: systemctl: make shutdown operations use irreversible jobs Occasionally people report problem with reboot/poweroff operations hanging in the middle. One known cause is when a new transaction to start a unit is enqueued while the shutdown is going on. The start of the unit conflicts with the shutdown jobs, so they get cancelled. The failure case can be quite unpleasant, becase getty and sshd may already be stopped. Fix it by using irreversible jobs for shutdown (reboot/poweroff/...) actions. This applies to commands like "reboot", "telinit 6", "systemctl reboot". Should someone desire to use reversible jobs, they can say "systemctl start reboot.target".` --- man/systemctl.xml | 14 +++++++------- src/login/logind-dbus.c | 2 +- src/systemctl/systemctl.c | 23 +++++++++++++++++------ 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/man/systemctl.xml b/man/systemctl.xml index 0ceb26d59b..39229a0075 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -1006,8 +1006,8 @@ along with systemd; If not, see . halt - Shut down and halt the system. This is mostly - equivalent to start halt.target but also + Shut down and halt the system. This is mostly equivalent to + start halt.target --irreversible but also prints a wall message to all users. If combined with shutdown of all running services is skipped, however all processes are killed and all file @@ -1023,8 +1023,8 @@ along with systemd; If not, see . Shut down and power-off the system. This is mostly - equivalent to start poweroff.target but - also prints a wall message to all users. If combined with + equivalent to start poweroff.target --irreversible + but also prints a wall message to all users. If combined with shutdown of all running services is skipped, however all processes are killed and all file systems are unmounted or mounted read-only, immediately @@ -1039,8 +1039,8 @@ along with systemd; If not, see . Shut down and reboot the system. This is mostly - equivalent to start reboot.target but - also prints a wall message to all users. If combined with + equivalent to start reboot.target --irreversible + but also prints a wall message to all users. If combined with shutdown of all running services is skipped, however all processes are killed and all file systems are unmounted or mounted read-only, immediately @@ -1055,7 +1055,7 @@ along with systemd; If not, see . Shut down and reboot the system via kexec. This is - mostly equivalent to start kexec.target + mostly equivalent to start kexec.target --irreversible but also prints a wall message to all users. If combined with shutdown of all running services is skipped, however all processes are killed and diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index d235474a23..818f2fa808 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -1051,7 +1051,7 @@ static int execute_shutdown_or_sleep( DBusError *error) { _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; - const char *mode = "replace", *p; + const char *mode = "replace-irreversibly", *p; int r; char *c; diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 723be76cdb..3d59a8bb1d 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1595,11 +1595,22 @@ static int start_unit(DBusConnection *bus, char **args) { streq(args[0], "force-reload") ? "ReloadOrTryRestartUnit" : "StartUnit"; - mode = - (streq(args[0], "isolate") || - streq(args[0], "rescue") || - streq(args[0], "emergency") || - streq(args[0], "default")) ? "isolate" : arg_job_mode; + if (streq(args[0], "isolate") || + streq(args[0], "rescue") || + streq(args[0], "emergency") || + streq(args[0], "default")) + mode = "isolate"; + else if (streq(args[0], "halt") || + streq(args[0], "poweroff") || + streq(args[0], "reboot") || + streq(args[0], "kexec") || + streq(args[0], "exit") || + streq(args[0], "suspend") || + streq(args[0], "hibernate") || + streq(args[0], "hybrid-sleep")) + mode = "replace-irreversibly"; + else + mode = arg_job_mode; one_name = table[verb_to_action(args[0])]; @@ -1614,7 +1625,7 @@ static int start_unit(DBusConnection *bus, char **args) { arg_action == ACTION_RUNLEVEL2 || arg_action == ACTION_RUNLEVEL3 || arg_action == ACTION_RUNLEVEL4 || - arg_action == ACTION_RUNLEVEL5) ? "isolate" : "replace"; + arg_action == ACTION_RUNLEVEL5) ? "isolate" : "replace-irreversibly"; one_name = table[arg_action]; } -- cgit v1.2.1 From 47a0eaa60cb5434d13f0acbe048aa4681bc8b8a8 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 22 Feb 2013 13:37:57 +0100 Subject: systemctl: generalize action table to be usable in more action<->verb mappings Should be no functional change. --- src/systemctl/systemctl.c | 113 ++++++++++++++++------------------------------ 1 file changed, 38 insertions(+), 75 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 3d59a8bb1d..8174376257 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1518,53 +1518,39 @@ static int start_unit_one( return 0; } +static const struct { + const char *target; + const char *verb; + const char *mode; +} action_table[_ACTION_MAX] = { + [ACTION_HALT] = { SPECIAL_HALT_TARGET, "halt", "replace-irreversibly" }, + [ACTION_POWEROFF] = { SPECIAL_POWEROFF_TARGET, "poweroff", "replace-irreversibly" }, + [ACTION_REBOOT] = { SPECIAL_REBOOT_TARGET, "reboot", "replace-irreversibly" }, + [ACTION_KEXEC] = { SPECIAL_KEXEC_TARGET, "kexec", "replace-irreversibly" }, + [ACTION_RUNLEVEL2] = { SPECIAL_RUNLEVEL2_TARGET, NULL, "isolate" }, + [ACTION_RUNLEVEL3] = { SPECIAL_RUNLEVEL3_TARGET, NULL, "isolate" }, + [ACTION_RUNLEVEL4] = { SPECIAL_RUNLEVEL4_TARGET, NULL, "isolate" }, + [ACTION_RUNLEVEL5] = { SPECIAL_RUNLEVEL5_TARGET, NULL, "isolate" }, + [ACTION_RESCUE] = { SPECIAL_RESCUE_TARGET, "rescue", "isolate" }, + [ACTION_EMERGENCY] = { SPECIAL_EMERGENCY_TARGET, "emergency", "isolate" }, + [ACTION_DEFAULT] = { SPECIAL_DEFAULT_TARGET, "default", "isolate" }, + [ACTION_EXIT] = { SPECIAL_EXIT_TARGET, "exit", "replace-irreversibly" }, + [ACTION_SUSPEND] = { SPECIAL_SUSPEND_TARGET, "suspend", "replace-irreversibly" }, + [ACTION_HIBERNATE] = { SPECIAL_HIBERNATE_TARGET, "hibernate", "replace-irreversibly" }, + [ACTION_HYBRID_SLEEP] = { SPECIAL_HYBRID_SLEEP_TARGET, "hybrid-sleep", "replace-irreversibly" }, +}; + static enum action verb_to_action(const char *verb) { - if (streq(verb, "halt")) - return ACTION_HALT; - else if (streq(verb, "poweroff")) - return ACTION_POWEROFF; - else if (streq(verb, "reboot")) - return ACTION_REBOOT; - else if (streq(verb, "kexec")) - return ACTION_KEXEC; - else if (streq(verb, "rescue")) - return ACTION_RESCUE; - else if (streq(verb, "emergency")) - return ACTION_EMERGENCY; - else if (streq(verb, "default")) - return ACTION_DEFAULT; - else if (streq(verb, "exit")) - return ACTION_EXIT; - else if (streq(verb, "suspend")) - return ACTION_SUSPEND; - else if (streq(verb, "hibernate")) - return ACTION_HIBERNATE; - else if (streq(verb, "hybrid-sleep")) - return ACTION_HYBRID_SLEEP; - else - return ACTION_INVALID; + enum action i; + + for (i = ACTION_INVALID; i < _ACTION_MAX; i++) + if (action_table[i].verb && streq(verb, action_table[i].verb)) + return i; + return ACTION_INVALID; } static int start_unit(DBusConnection *bus, char **args) { - static const char * const table[_ACTION_MAX] = { - [ACTION_HALT] = SPECIAL_HALT_TARGET, - [ACTION_POWEROFF] = SPECIAL_POWEROFF_TARGET, - [ACTION_REBOOT] = SPECIAL_REBOOT_TARGET, - [ACTION_KEXEC] = SPECIAL_KEXEC_TARGET, - [ACTION_RUNLEVEL2] = SPECIAL_RUNLEVEL2_TARGET, - [ACTION_RUNLEVEL3] = SPECIAL_RUNLEVEL3_TARGET, - [ACTION_RUNLEVEL4] = SPECIAL_RUNLEVEL4_TARGET, - [ACTION_RUNLEVEL5] = SPECIAL_RUNLEVEL5_TARGET, - [ACTION_RESCUE] = SPECIAL_RESCUE_TARGET, - [ACTION_EMERGENCY] = SPECIAL_EMERGENCY_TARGET, - [ACTION_DEFAULT] = SPECIAL_DEFAULT_TARGET, - [ACTION_EXIT] = SPECIAL_EXIT_TARGET, - [ACTION_SUSPEND] = SPECIAL_SUSPEND_TARGET, - [ACTION_HIBERNATE] = SPECIAL_HIBERNATE_TARGET, - [ACTION_HYBRID_SLEEP] = SPECIAL_HYBRID_SLEEP_TARGET - }; - int r, ret = 0; const char *method, *mode, *one_name; Set _cleanup_set_free_free_ *s = NULL; @@ -1578,6 +1564,7 @@ static int start_unit(DBusConnection *bus, char **args) { ask_password_agent_open_if_enabled(); if (arg_action == ACTION_SYSTEMCTL) { + enum action action; method = streq(args[0], "stop") || streq(args[0], "condstop") ? "StopUnit" : @@ -1594,40 +1581,21 @@ static int start_unit(DBusConnection *bus, char **args) { streq(args[0], "force-reload") ? "ReloadOrTryRestartUnit" : "StartUnit"; + action = verb_to_action(args[0]); - if (streq(args[0], "isolate") || - streq(args[0], "rescue") || - streq(args[0], "emergency") || - streq(args[0], "default")) - mode = "isolate"; - else if (streq(args[0], "halt") || - streq(args[0], "poweroff") || - streq(args[0], "reboot") || - streq(args[0], "kexec") || - streq(args[0], "exit") || - streq(args[0], "suspend") || - streq(args[0], "hibernate") || - streq(args[0], "hybrid-sleep")) - mode = "replace-irreversibly"; - else - mode = arg_job_mode; + mode = streq(args[0], "isolate") ? "isolate" : + action_table[action].mode ?: arg_job_mode; - one_name = table[verb_to_action(args[0])]; + one_name = action_table[action].target; } else { - assert(arg_action < ELEMENTSOF(table)); - assert(table[arg_action]); + assert(arg_action < ELEMENTSOF(action_table)); + assert(action_table[arg_action].target); method = "StartUnit"; - mode = (arg_action == ACTION_EMERGENCY || - arg_action == ACTION_RESCUE || - arg_action == ACTION_RUNLEVEL2 || - arg_action == ACTION_RUNLEVEL3 || - arg_action == ACTION_RUNLEVEL4 || - arg_action == ACTION_RUNLEVEL5) ? "isolate" : "replace-irreversibly"; - - one_name = table[arg_action]; + mode = action_table[arg_action].mode; + one_name = action_table[arg_action].target; } if (!arg_no_block) { @@ -1850,12 +1818,7 @@ static int check_inhibitors(DBusConnection *bus, enum action a) { return 0; log_error("Please retry operation after closing inhibitors and logging out other users.\nAlternatively, ignore inhibitors and users with 'systemctl %s -i'.", - a == ACTION_HALT ? "halt" : - a == ACTION_POWEROFF ? "poweroff" : - a == ACTION_REBOOT ? "reboot" : - a == ACTION_KEXEC ? "kexec" : - a == ACTION_SUSPEND ? "suspend" : - a == ACTION_HIBERNATE ? "hibernate" : "hybrid-sleep"); + action_table[a].verb); return -EPERM; #else -- cgit v1.2.1 From 89f603f5d83e519fcbd633928e203b1e6457114c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 22 Feb 2013 16:54:42 +0100 Subject: TODO: drop two items --- TODO | 4 ---- 1 file changed, 4 deletions(-) diff --git a/TODO b/TODO index dd432b07af..4bcaea7ceb 100644 --- a/TODO +++ b/TODO @@ -19,10 +19,6 @@ Bugfixes: Fedora 19: * make anaconda write timeout=0 for encrypted devices -* drop no longer needed modprobe.d udlfb file (it does not belong in /etc anyway) - -* Retest multi-seat (new kms driver for displaylink) - * make sure pkexec works fine with pam_systemd works fine with audit=0 * create /var/log/journal/ -- cgit v1.2.1 From 927e96326c195ad39a45b091f98e9c635f400982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 5 Feb 2013 21:44:46 -0500 Subject: python: add systemd.id128 module uuid.UUIDs are utilized to hold UUID values. --- Makefile.am | 30 +++++++- src/python-systemd/.gitignore | 1 + src/python-systemd/_journal.c | 2 +- src/python-systemd/id128.c | 157 ++++++++++++++++++++++++++++++++++++++++++ src/python-systemd/journal.py | 8 ++- 5 files changed, 193 insertions(+), 5 deletions(-) create mode 100644 src/python-systemd/.gitignore create mode 100644 src/python-systemd/id128.c diff --git a/Makefile.am b/Makefile.am index 10934eba77..42d35441ea 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3380,7 +3380,8 @@ EXTRA_DIST += \ # ------------------------------------------------------------------------------ if HAVE_PYTHON_DEVEL pkgpyexec_LTLIBRARIES = \ - _journal.la + _journal.la \ + id128.la _journal_la_SOURCES = \ src/python-systemd/_journal.c @@ -3400,9 +3401,36 @@ _journal_la_LIBADD = \ $(PYTHON_LIBS) \ libsystemd-journal.la +id128_la_SOURCES = \ + src/python-systemd/id128.c \ + src/python-systemd/id128-constants.h + +id128_la_CFLAGS = \ + $(AM_CFLAGS) \ + -fvisibility=default \ + $(PYTHON_CFLAGS) \ + -I$(top_builddir)/src/python-systemd + +id128_la_LDFLAGS = \ + $(AM_LDFLAGS) \ + -shared \ + -module \ + -avoid-version + +id128_la_LIBADD = \ + $(PYTHON_LIBS) \ + libsystemd-id128.la + dist_pkgpyexec_PYTHON = \ src/python-systemd/journal.py \ src/python-systemd/__init__.py + +src/python-systemd/id128-constants.h: src/systemd/sd-messages.h Makefile + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_GEN)$(SED) -n -r 's/,//g; s/#define (SD_MESSAGE_[A-Z0-9_]+)\s.*/add_id(m, "\1", \1);/p' <$< >$@ + +BUILT_SOURCES += \ + src/python-systemd/id128-constants.h endif # ------------------------------------------------------------------------------ diff --git a/src/python-systemd/.gitignore b/src/python-systemd/.gitignore new file mode 100644 index 0000000000..ed3a500942 --- /dev/null +++ b/src/python-systemd/.gitignore @@ -0,0 +1 @@ +/id128-constants.h diff --git a/src/python-systemd/_journal.c b/src/python-systemd/_journal.c index 0bdf709aea..ced52b2f52 100644 --- a/src/python-systemd/_journal.c +++ b/src/python-systemd/_journal.c @@ -3,7 +3,7 @@ /*** This file is part of systemd. - Copyright 2012 David Strauss + Copyright 2012 David Strauss systemd is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by diff --git a/src/python-systemd/id128.c b/src/python-systemd/id128.c new file mode 100644 index 0000000000..f82b0afb99 --- /dev/null +++ b/src/python-systemd/id128.c @@ -0,0 +1,157 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include + +#include + +#define _cleanup_Py_DECREF_ __attribute__((cleanup(cleanup_Py_DECREFp))) + +static void cleanup_Py_DECREFp(PyObject **p) { + if (!*p) + return; + + Py_DECREF(*p); +} + +PyDoc_STRVAR(module__doc__, + "Python interface to the libsystemd-id128 library.\n\n" + "Provides SD_MESSAGE_* constants and functions to query and generate\n" + "128bit unique identifiers." +); + +PyDoc_STRVAR(randomize__doc__, + "randomize() -> UUID\n\n" + "Return a new random 128bit unique identifier.\n" + "Wraps sd_id128_randomize(3)." +); + +PyDoc_STRVAR(get_machine__doc__, + "get_machine() -> UUID\n\n" + "Return a 128bit unique identifier for this machine.\n" + "Wraps sd_id128_get_machine(3)." +); + +PyDoc_STRVAR(get_boot__doc__, + "get_boot() -> UUID\n\n" + "Return a 128bit unique identifier for this boot.\n" + "Wraps sd_id128_get_boot(3)." +); + +static PyObject* make_uuid(sd_id128_t id) { + PyObject _cleanup_Py_DECREF_ + *uuid = NULL, *UUID = NULL, *bytes = NULL, + *args = NULL, *kwargs = NULL, *obj = NULL; + + uuid = PyImport_ImportModule("uuid"); + if (!uuid) + return NULL; + + UUID = PyObject_GetAttrString(uuid, "UUID"); + bytes = PyBytes_FromStringAndSize((const char*) &id.bytes, sizeof(id.bytes)); + args = Py_BuildValue("()"); + kwargs = PyDict_New(); + if (!UUID || !bytes || !args || !kwargs) + return NULL; + + if (PyDict_SetItemString(kwargs, "bytes", bytes) < 0) + return NULL; + + return PyObject_Call(UUID, args, kwargs); +} + +#define helper(name) \ + static PyObject *name(PyObject *self, PyObject *args) { \ + sd_id128_t id; \ + int r; \ + \ + assert(args == NULL); \ + \ + r = sd_id128_##name(&id); \ + if (r < 0) { \ + errno = -r; \ + return PyErr_SetFromErrno(PyExc_IOError); \ + } \ + \ + return make_uuid(id); \ + } + +helper(randomize) +helper(get_machine) +helper(get_boot) + +static PyMethodDef methods[] = { + { "randomize", randomize, METH_NOARGS, randomize__doc__}, + { "get_machine", get_machine, METH_NOARGS, get_machine__doc__}, + { "get_boot", get_boot, METH_NOARGS, get_boot__doc__}, + { NULL, NULL, 0, NULL } /* Sentinel */ +}; + +static int add_id(PyObject *module, const char* name, sd_id128_t id) { + PyObject _cleanup_Py_DECREF_ *obj; + + obj = make_uuid(id); + if (!obj) + return -1; + + return PyObject_SetAttrString(module, name, obj); +} + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-prototypes" + +#if PY_MAJOR_VERSION < 3 + +PyMODINIT_FUNC initid128(void) { + PyObject *m; + + m = Py_InitModule3("id128", methods, module__doc__); + if (m == NULL) + return; + +#include "id128-constants.h" +} + +#else + +static struct PyModuleDef module = { + PyModuleDef_HEAD_INIT, + "id128", /* name of module */ + module__doc__, /* module documentation, may be NULL */ + 0, /* size of per-interpreter state of the module */ + methods +}; + +PyMODINIT_FUNC PyInit_id128(void) { + PyObject *m; + + m = PyModule_Create(&module); + if (m == NULL) + return NULL; + +#include "id128-constants.h" + + return m; +} + +#endif + +#pragma GCC diagnostic pop diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 516ca1ab56..fc57437c28 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -1,8 +1,10 @@ -# -*- Mode: python; indent-tabs-mode: nil -*- */ +# -*- Mode: python; coding:utf-8; indent-tabs-mode: nil -*- */ # # This file is part of systemd. # -# Copyright 2012 David Strauss +# Copyright 2012 David Strauss +# Copyright 2012 Zbigniew Jędrzejewski-Szmek +# Copyright 2012 Marti Raudsepp # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by @@ -120,7 +122,7 @@ class JournalHandler(_logging.Handler): """Journal handler class for the Python logging framework. Please see the Python logging module documentation for an - overview: http://docs.python.org/library/logging.html + overview: http://docs.python.org/library/logging.html. To create a custom logger whose messages go only to journal: -- cgit v1.2.1 From afcd68c1498ba4d449b782f4703490a74770c5f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 9 Feb 2013 12:20:05 -0500 Subject: python: utilize uuid.UUID in logging --- src/python-systemd/journal.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index fc57437c28..d610b4767b 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -35,24 +35,18 @@ def _make_line(field, value): def send(MESSAGE, MESSAGE_ID=None, CODE_FILE=None, CODE_LINE=None, CODE_FUNC=None, **kwargs): - r"""Send a message to journald. + r"""Send a message to the journal. >>> journal.send('Hello world') >>> journal.send('Hello, again, world', FIELD2='Greetings!') >>> journal.send('Binary message', BINARY=b'\xde\xad\xbe\xef') Value of the MESSAGE argument will be used for the MESSAGE= - field. + field. MESSAGE must be a string and will be sent as UTF-8 to + the journal. MESSAGE_ID can be given to uniquely identify the type of - message. - - Other parts of the message can be specified as keyword - arguments. - - Both MESSAGE and MESSAGE_ID, if present, must be strings, and - will be sent as UTF-8 to journal. Other arguments can be - bytes, in which case they will be sent as-is to journal. + message. It must be a string or a uuid.UUID object. CODE_LINE, CODE_FILE, and CODE_FUNC can be specified to identify the caller. Unless at least on of the three is given, @@ -60,6 +54,11 @@ def send(MESSAGE, MESSAGE_ID=None, send(). CODE_FILE and CODE_FUNC must be strings, CODE_LINE must be an integer. + Additional fields for the journal entry can only be specified + as keyword arguments. The payload can be either a string or + bytes. A string will be sent as UTF-8, and bytes will be sent + as-is to the journal. + Other useful fields include PRIORITY, SYSLOG_FACILITY, SYSLOG_IDENTIFIER, SYSLOG_PID. """ @@ -67,7 +66,8 @@ def send(MESSAGE, MESSAGE_ID=None, args = ['MESSAGE=' + MESSAGE] if MESSAGE_ID is not None: - args.append('MESSAGE_ID=' + MESSAGE_ID) + id = getattr(MESSAGE_ID, 'hex', MESSAGE_ID) + args.append('MESSAGE_ID=' + id) if CODE_LINE == CODE_FILE == CODE_FUNC == None: CODE_FILE, CODE_LINE, CODE_FUNC = \ @@ -138,8 +138,9 @@ class JournalHandler(_logging.Handler): To attach journal MESSAGE_ID, an extra field is supported: - >>> log.warn("Message with ID", - >>> extra={'MESSAGE_ID': '22bb01335f724c959ac4799627d1cb61'}) + >>> import uuid + >>> mid = uuid.UUID('0123456789ABCDEF0123456789ABCDEF') + >>> log.warn("Message with ID", extra={'MESSAGE_ID': mid}) To redirect all logging messages to journal regardless of where they come from, attach it to the root logger: -- cgit v1.2.1 From d489071fb348cd180bc4f70e732b0e76d9804448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 10 Feb 2013 22:47:14 -0500 Subject: journalct: also print Python code in --new-id --- src/journal/journalctl.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 0afeef932e..0de159b89a 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -462,14 +462,17 @@ static int generate_new_id128(void) { "As UUID:\n" "%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n\n" "As macro:\n" - "#define MESSAGE_XYZ SD_ID128_MAKE(", + "#define MESSAGE_XYZ SD_ID128_MAKE(", SD_ID128_FORMAT_VAL(id), SD_ID128_FORMAT_VAL(id)); - for (i = 0; i < 16; i++) printf("%02x%s", id.bytes[i], i != 15 ? "," : ""); + fputs(")\n\n", stdout); - fputs(")\n", stdout); + printf("As Python constant:\n" + ">>> import uuid\n" + ">>> MESSAGE_XYZ = uuid.UUID('" SD_ID128_FORMAT_STR "')\n", + SD_ID128_FORMAT_VAL(id)); return 0; } -- cgit v1.2.1 From 9015fa646e04fc3cb180bea24c33d34edbb48ed7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 9 Feb 2013 15:37:35 -0500 Subject: python: build html docs using sphinx Build instructions: make make DESTIDIR=/tmp/... install make DESTIDIR=/tmp/... sphinx-html sphinx-man sphinx-epub ... --- Makefile.am | 8 + README | 7 + configure.ac | 14 ++ man/.gitignore | 1 + src/python-systemd/.gitignore | 1 + src/python-systemd/docs/conf.py | 288 ++++++++++++++++++++++++++++++++++++ src/python-systemd/docs/id128.rst | 7 + src/python-systemd/docs/index.rst | 22 +++ src/python-systemd/docs/journal.rst | 11 ++ src/python-systemd/journal.py | 30 ++-- 10 files changed, 374 insertions(+), 15 deletions(-) create mode 100644 src/python-systemd/docs/conf.py create mode 100644 src/python-systemd/docs/id128.rst create mode 100644 src/python-systemd/docs/index.rst create mode 100644 src/python-systemd/docs/journal.rst diff --git a/Makefile.am b/Makefile.am index 42d35441ea..085f4b36b2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3433,6 +3433,14 @@ BUILT_SOURCES += \ src/python-systemd/id128-constants.h endif +if ENABLE_SPHINX +PAPER = $(shell cat /etc/papersize 2>/dev/null || echo a4) +SPHINXOPTS = -D latex_paper_size=$(PAPER) +sphinx-%: + $(AM_V_GEN)PYTHONPATH=$(DESTDIR)$(pyexecdir) $(SPHINX_BUILD) -b $* $(SPHINXOPTS) $(top_srcdir)/src/python-systemd/docs $(top_builddir)/man/python-systemd/ + $(AM_V_at)echo Output has been generated in $(abs_top_builddir)/man/python-systemd/ +endif + # ------------------------------------------------------------------------------ SED_PROCESS = \ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ diff --git a/README b/README index 297d8f79e7..1aa044be75 100644 --- a/README +++ b/README @@ -81,6 +81,7 @@ REQUIREMENTS: gperf gtkdocize (optional) python (optional) + sphinx (optional) When systemd-hostnamed is used it is strongly recommended to install nss-myhostname to ensure that in a world of @@ -93,6 +94,12 @@ REQUIREMENTS: please build D-Bus without systemd first, then build systemd, then rebuild D-Bus with systemd support. + To build HTML documentation for python-systemd using sphinx, + please first install systemd (using 'make install'), and then + invoke sphinx-build with 'make sphinx-', with + being 'html' or 'latexpdf'. If using DESTDIR for installation, + pass the same DESTDIR to 'make sphinx-html' invocation. + WARNINGS: systemd will warn you during boot if /etc/mtab is not a symlink to /proc/mounts. Please ensure that /etc/mtab is a diff --git a/configure.ac b/configure.ac index 834b12314c..5737c65257 100644 --- a/configure.ac +++ b/configure.ac @@ -180,6 +180,19 @@ AS_IF([test "x$with_python" != "xno"], [ ]) AM_CONDITIONAL([HAVE_PYTHON_DEVEL], [test "$have_python_devel" = "yes"]) +AC_ARG_ENABLE(sphinx, AS_HELP_STRING([--enable-sphinx], + [use sphinx to build documentation for python-systemd])) +AS_IF([test "x$enable_sphinx" = "xyes"], [ + AC_PATH_PROGS(SPHINX_BUILD, sphinx-build-${PYTHON_VERSION} sphinx-build) + AS_IF([test -z "$SPHINX_BUILD"], [ + AC_MSG_ERROR([*** sphinx build requested, but sphinx-build not found]) + ]) + AS_IF([test "x$have_python_devel" != "xyes"], [ + AC_MSG_ERROR([*** sphinx build requested, but python support not enabled]) + ]) +]) +AM_CONDITIONAL(ENABLE_SPHINX, [test "x$enable_sphinx" = "xyes"]) + # ------------------------------------------------------------------------------ AC_SEARCH_LIBS([mq_open], [rt], [], [AC_MSG_ERROR([*** POSIX RT library not found])]) @@ -902,6 +915,7 @@ AC_MSG_RESULT([ Python Headers: ${have_python_devel} man pages: ${have_manpages} gtk-doc: ${enable_gtk_doc} + sphinx documentation: ${enable_sphinx} Split /usr: ${enable_split_usr} SysV compatibility: ${SYSTEM_SYSV_COMPAT} diff --git a/man/.gitignore b/man/.gitignore index 18767949c1..fcf4dabd2a 100644 --- a/man/.gitignore +++ b/man/.gitignore @@ -2,3 +2,4 @@ /systemd.index.xml /systemd.unit.xml /*.[13578] +/python-systemd/ diff --git a/src/python-systemd/.gitignore b/src/python-systemd/.gitignore index ed3a500942..4124b7affd 100644 --- a/src/python-systemd/.gitignore +++ b/src/python-systemd/.gitignore @@ -1 +1,2 @@ /id128-constants.h +*.py[oc] diff --git a/src/python-systemd/docs/conf.py b/src/python-systemd/docs/conf.py new file mode 100644 index 0000000000..4a55778b7d --- /dev/null +++ b/src/python-systemd/docs/conf.py @@ -0,0 +1,288 @@ +# -*- coding: utf-8 -*- +# +# python-systemd documentation build configuration file, created by +# sphinx-quickstart on Sat Feb 9 13:49:42 2013. +# +# This file is execfile()d with the current directory set to its containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys, os + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, os.path.abspath('.')) + +# -- General configuration ----------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +#needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.coverage', 'sphinx.ext.viewcode'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +#source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'python-systemd' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '197' +# The full version, including alpha/beta/rc tags. +release = '197' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +#language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = [] + +# The reST default role (used for this markup: `text`) to use for all documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + + +# -- Options for HTML output --------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +html_theme = 'default' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +#html_domain_indices = True + +# If false, no index is generated. +#html_use_index = True + +# If true, the index is split into individual pages for each letter. +#html_split_index = False + +# If true, links to the reST sources are added to the pages. +html_show_sourcelink = False + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +#html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +#html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = None + +# Output file base name for HTML help builder. +htmlhelp_basename = 'python-systemddoc' + + +# -- Options for LaTeX output -------------------------------------------------- + +latex_elements = { +# The paper size ('letterpaper' or 'a4paper'). +#'papersize': 'letterpaper', + +# The font size ('10pt', '11pt' or '12pt'). +#'pointsize': '10pt', + +# Additional stuff for the LaTeX preamble. +#'preamble': '', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass [howto/manual]). +latex_documents = [ + ('index', 'python-systemd.tex', u'python-systemd Documentation', + None, 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# If true, show page references after internal links. +#latex_show_pagerefs = False + +# If true, show URL addresses after external links. +#latex_show_urls = False + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +#latex_domain_indices = True + + +# -- Options for manual page output -------------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'python-systemd', u'python-systemd Documentation', + [], 1) +] + +# If true, show URL addresses after external links. +#man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------------ + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ('index', 'python-systemd', u'python-systemd Documentation', + u'David Strauss, Zbigniew Jędrzejewski-Szmek, Marti Raudsepp, Steven Hiscocks', 'python-systemd', 'One line description of project.', + 'Miscellaneous'), +] + +# Documents to append as an appendix to all manuals. +#texinfo_appendices = [] + +# If false, no module index is generated. +#texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +#texinfo_show_urls = 'footnote' + + +# -- Options for Epub output --------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = u'python-systemd' +epub_author = u'David Strauss, Zbigniew Jędrzejewski-Szmek, Marti Raudsepp, Steven Hiscocks' +epub_publisher = u'David Strauss, Zbigniew Jędrzejewski-Szmek, Marti Raudsepp, Steven Hiscocks' +epub_copyright = u'2013, David Strauss, Zbigniew Jędrzejewski-Szmek, Marti Raudsepp, Steven Hiscocks' + +# The language of the text. It defaults to the language option +# or en if the language is not set. +#epub_language = '' + +# The scheme of the identifier. Typical schemes are ISBN or URL. +#epub_scheme = '' + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +#epub_identifier = '' + +# A unique identification for the text. +#epub_uid = '' + +# A tuple containing the cover image and cover page html template filenames. +#epub_cover = () + +# HTML files that should be inserted before the pages created by sphinx. +# The format is a list of tuples containing the path and title. +#epub_pre_files = [] + +# HTML files shat should be inserted after the pages created by sphinx. +# The format is a list of tuples containing the path and title. +#epub_post_files = [] + +# A list of files that should not be packed into the epub file. +#epub_exclude_files = [] + +# The depth of the table of contents in toc.ncx. +#epub_tocdepth = 3 + +# Allow duplicate toc entries. +#epub_tocdup = True + + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/src/python-systemd/docs/id128.rst b/src/python-systemd/docs/id128.rst new file mode 100644 index 0000000000..e817d803a7 --- /dev/null +++ b/src/python-systemd/docs/id128.rst @@ -0,0 +1,7 @@ +`systemd.id128` module +====================== + +.. automodule:: systemd.id128 + :members: + :undoc-members: + :inherited-members: diff --git a/src/python-systemd/docs/index.rst b/src/python-systemd/docs/index.rst new file mode 100644 index 0000000000..f04d5a181c --- /dev/null +++ b/src/python-systemd/docs/index.rst @@ -0,0 +1,22 @@ +.. python-systemd documentation master file, created by + sphinx-quickstart on Sat Feb 9 13:49:42 2013. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to python-systemd's documentation! +========================================== + +Contents: + +.. toctree:: + :maxdepth: 2 + + journal + id128 + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/src/python-systemd/docs/journal.rst b/src/python-systemd/docs/journal.rst new file mode 100644 index 0000000000..036250a764 --- /dev/null +++ b/src/python-systemd/docs/journal.rst @@ -0,0 +1,11 @@ +`systemd.journal` module +======================== + +.. automodule:: systemd.journal + :members: send, sendv, stream, stream_fd + :undoc-members: + +`JournalHandler` class +---------------------- + +.. autoclass:: JournalHandler diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index d610b4767b..47849a360c 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -96,19 +96,20 @@ def stream(identifier, priority=LOG_DEBUG, level_prefix=False): ', mode 'w' at 0x...> >>> stream.write('message...\n') - will produce the following message in the journal: + will produce the following message in the journal:: - PRIORITY=7 - SYSLOG_IDENTIFIER=myapp - MESSAGE=message... + PRIORITY=7 + SYSLOG_IDENTIFIER=myapp + MESSAGE=message... Using the interface with print might be more convinient: >>> from __future__ import print_function >>> print('message...', file=stream) - priority is the syslog priority, one of LOG_EMERG, LOG_ALERT, - LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG. + priority is the syslog priority, one of `LOG_EMERG`, + `LOG_ALERT`, `LOG_CRIT`, `LOG_ERR`, `LOG_WARNING`, + `LOG_NOTICE`, `LOG_INFO`, `LOG_DEBUG`. level_prefix is a boolean. If true, kernel-style log priority level prefixes (such as '<1>') are interpreted. See @@ -131,8 +132,8 @@ class JournalHandler(_logging.Handler): >>> log.addHandler(journal.JournalHandler()) >>> log.warn("Some message: %s", detail) - Note that by default, message levels INFO and DEBUG are ignored - by the logging framework. To enable those log levels: + Note that by default, message levels `INFO` and `DEBUG` are + ignored by the logging framework. To enable those log levels: >>> log.setLevel(logging.DEBUG) @@ -147,16 +148,15 @@ class JournalHandler(_logging.Handler): >>> logging.root.addHandler(journal.JournalHandler()) - For more complex configurations when using dictConfig or - fileConfig, specify 'systemd.journal.JournalHandler' as the + For more complex configurations when using `dictConfig` or + `fileConfig`, specify `systemd.journal.JournalHandler` as the handler class. Only standard handler configuration options - are supported: level, formatter, filters. + are supported: `level`, `formatter`, `filters`. The following journal fields will be sent: - - MESSAGE, PRIORITY, THREAD_NAME, CODE_FILE, CODE_LINE, - CODE_FUNC, LOGGER (name as supplied to getLogger call), - MESSAGE_ID (optional, see above). + `MESSAGE`, `PRIORITY`, `THREAD_NAME`, `CODE_FILE`, `CODE_LINE`, + `CODE_FUNC`, `LOGGER` (name as supplied to getLogger call), + `MESSAGE_ID` (optional, see above). """ def emit(self, record): -- cgit v1.2.1 From c4e9b5b557ba956e316933c31bbefa8b48fa3f93 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Fri, 8 Feb 2013 19:41:21 +0000 Subject: systemd-python: add Journal class for reading journal --- Makefile.am | 22 +- src/python-systemd/_reader.c | 1163 +++++++++++++++++++++++++++++++++++++++++ src/python-systemd/journal.py | 2 + 3 files changed, 1186 insertions(+), 1 deletion(-) create mode 100644 src/python-systemd/_reader.c diff --git a/Makefile.am b/Makefile.am index 085f4b36b2..fc7e8c429e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3381,7 +3381,8 @@ EXTRA_DIST += \ if HAVE_PYTHON_DEVEL pkgpyexec_LTLIBRARIES = \ _journal.la \ - id128.la + id128.la \ + _reader.la _journal_la_SOURCES = \ src/python-systemd/_journal.c @@ -3421,6 +3422,25 @@ id128_la_LIBADD = \ $(PYTHON_LIBS) \ libsystemd-id128.la +_reader_la_SOURCES = \ + src/python-systemd/_reader.c + +_reader_la_CFLAGS = \ + $(AM_CFLAGS) \ + -fvisibility=default \ + $(PYTHON_CFLAGS) + +_reader_la_LDFLAGS = \ + $(AM_LDFLAGS) \ + -shared \ + -module \ + -avoid-version + +_reader_la_LIBADD = \ + $(PYTHON_LIBS) \ + libsystemd-journal.la \ + libsystemd-id128.la + dist_pkgpyexec_PYTHON = \ src/python-systemd/journal.py \ src/python-systemd/__init__.py diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c new file mode 100644 index 0000000000..963da11dc6 --- /dev/null +++ b/src/python-systemd/_reader.c @@ -0,0 +1,1163 @@ +/* +_reader - Python module that reads systemd journal similar to journalctl +Copyright (C) 2012 Steven Hiscocks + +This library is free software; you can redistribute it and/or +modify it under the terms of the GNU Lesser General Public +License as published by the Free Software Foundation; either +version 2.1 of the License, or (at your option) any later version. + +This library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Lesser General Public License for more details. + +You should have received a copy of the GNU Lesser General Public +License along with this library; if not, write to the Free Software +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +*/ +#include + +#include +#include +#include + +typedef struct { + PyObject_HEAD + sd_journal *j; + PyObject *default_call; + PyObject *call_dict; +} Journal; +static PyTypeObject JournalType; + +static void +Journal_dealloc(Journal* self) +{ + sd_journal_close(self->j); + Py_XDECREF(self->default_call); + Py_XDECREF(self->call_dict); + Py_TYPE(self)->tp_free((PyObject*)self); +} + +static PyObject * +Journal_new(PyTypeObject *type, PyObject *args, PyObject *kwds) +{ + Journal *self; + + self = (Journal *)type->tp_alloc(type, 0); + if (self != NULL) { + PyObject *globals, *temp; + + globals = PyEval_GetBuiltins(); + temp = PyImport_ImportModule("functools"); + PyDict_SetItemString(globals, "functools", temp); + Py_DECREF(temp); + temp = PyImport_ImportModule("datetime"); + PyDict_SetItemString(globals, "datetime", temp); + Py_DECREF(temp); + +#if PY_MAJOR_VERSION >=3 + self->default_call = PyRun_String("functools.partial(str, encoding='utf-8')", Py_eval_input, globals, NULL); +#else + self->default_call = PyRun_String("functools.partial(unicode, encoding='utf-8')", Py_eval_input, globals, NULL); +#endif + + self->call_dict = PyRun_String("{" + "'PRIORITY': int," + "'LEADER': int," + "'SESSION_ID': int," + "'USERSPACE_USEC': int," + "'INITRD_USEC': int," + "'KERNEL_USEC': int," + "'_UID': int," + "'_GID': int," + "'_PID': int," + "'SYSLOG_FACILITY': int," + "'SYSLOG_PID': int," + "'_AUDIT_SESSION': int," + "'_AUDIT_LOGINUID': int," + "'_SYSTEMD_SESSION': int," + "'_SYSTEMD_OWNER_UID': int," + "'CODE_LINE': int," + "'ERRNO': int," + "'EXIT_STATUS': int," + "'_SOURCE_REALTIME_TIMESTAMP': lambda x: datetime.datetime.fromtimestamp(float(x)/1E6)," + "'__REALTIME_TIMESTAMP': lambda x: datetime.datetime.fromtimestamp(float(x)/1E6)," + "'_SOURCE_MONOTONIC_TIMESTAMP': lambda x: datetime.timedelta(microseconds=float(x))," + "'__MONOTONIC_TIMESTAMP': lambda x: datetime.timedelta(microseconds=float(x))," +#if PY_MAJOR_VERSION >=3 + "'COREDUMP': bytes," +#else + "'COREDUMP': str," +#endif + "'COREDUMP_PID': int," + "'COREDUMP_UID': int," + "'COREDUMP_GID': int," + "'COREDUMP_SESSION': int," + "'COREDUMP_SIGNAL': int," + "'COREDUMP_TIMESTAMP': lambda x: datetime.datetime.fromtimestamp(float(x)/1E6)," + "}", Py_eval_input, globals, NULL); + } + + return (PyObject *) self; +} + +PyDoc_STRVAR(Journal__doc__, +"Journal([flags][, default_call][, call_dict][,path]) -> ...\n" +"Journal instance\n\n" +"Returns instance of Journal, which allows filtering and return\n" +"of journal entries.\n" +"Argument `flags` sets open flags of the journal, which can be one\n" +"of, or ORed combination of constants: LOCAL_ONLY (default) opens\n" +"journal on local machine only; RUNTIME_ONLY opens only\n" +"volatile journal files; and SYSTEM_ONLY opens only\n" +"journal files of system services and the kernel.\n" +"Argument `default_call` must be a callable that accepts one\n" +"argument which is string/bytes value of a field and returns\n" +"python object.\n" +"Argument `call_dict` is a dictionary where the key represents\n" +"a field name, and value is a callable as per `default_call`.\n" +"A set of sane defaults for `default_call` and `call_dict` are\n" +"present.\n" +"Argument `path` is the directory of journal files. Note that\n" +"currently flags are ignored when `path` is present as they are\n" +" not relevant."); +static int +Journal_init(Journal *self, PyObject *args, PyObject *keywds) +{ + int flags=SD_JOURNAL_LOCAL_ONLY; + char *path=NULL; + PyObject *default_call=NULL, *call_dict=NULL; + + static char *kwlist[] = {"flags", "default_call", "call_dict", "path", NULL}; + if (! PyArg_ParseTupleAndKeywords(args, keywds, "|iOOs", kwlist, + &flags, &default_call, &call_dict, &path)) + return 1; + + if (default_call) { + if (PyCallable_Check(default_call) || default_call == Py_None) { + Py_DECREF(self->default_call); + self->default_call = default_call; + Py_INCREF(self->default_call); + }else{ + PyErr_SetString(PyExc_TypeError, "Default call not callable"); + return 1; + } + } + + if (call_dict) { + if (PyDict_Check(call_dict)) { + Py_DECREF(self->call_dict); + self->call_dict = call_dict; + Py_INCREF(self->call_dict); + }else if (call_dict == Py_None) { + Py_DECREF(self->call_dict); + self->call_dict = PyDict_New(); + }else{ + PyErr_SetString(PyExc_TypeError, "Call dictionary must be dict type"); + return 1; + } + } + + int r; + if (path) { + r = sd_journal_open_directory(&self->j, path, 0); + }else{ + Py_BEGIN_ALLOW_THREADS + r = sd_journal_open(&self->j, flags); + Py_END_ALLOW_THREADS + } + if (r == -EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid flags or path"); + return -1; + }else if (r == -ENOMEM) { + PyErr_SetString(PyExc_MemoryError, "Not enough memory"); + return 1; + }else if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error opening journal"); + return 1; + } + + return 0; +} + +static PyObject * +Journal___process_field(Journal *self, PyObject *key, const void *value, ssize_t value_len) +{ + PyObject *callable=NULL, *return_value=NULL; + if (PyDict_Check(self->call_dict)) + callable = PyDict_GetItem(self->call_dict, key); + + if (PyCallable_Check(callable)) { +#if PY_MAJOR_VERSION >=3 + return_value = PyObject_CallFunction(callable, "y#", value, value_len); +#else + return_value = PyObject_CallFunction(callable, "s#", value, value_len); +#endif + if (!return_value) + PyErr_Clear(); + } + if (!return_value && PyCallable_Check(self->default_call)) +#if PY_MAJOR_VERSION >=3 + return_value = PyObject_CallFunction(self->default_call, "y#", value, value_len); +#else + return_value = PyObject_CallFunction(self->default_call, "s#", value, value_len); +#endif + if (!return_value) { + PyErr_Clear(); +#if PY_MAJOR_VERSION >=3 + return_value = PyBytes_FromStringAndSize(value, value_len); +#else + return_value = PyString_FromStringAndSize(value, value_len); +#endif + } + if (!return_value) { + return_value = Py_None; + } + return return_value; +} + +PyDoc_STRVAR(Journal_get_next__doc__, +"get_next([skip]) -> dict\n\n" +"Return dictionary of the next log entry. Optional skip value will\n" +"return the `skip`th log entry."); +static PyObject * +Journal_get_next(Journal *self, PyObject *args) +{ + int64_t skip=1LL; + if (! PyArg_ParseTuple(args, "|L", &skip)) + return NULL; + + int r; + if (skip == 1LL) { + Py_BEGIN_ALLOW_THREADS + r = sd_journal_next(self->j); + Py_END_ALLOW_THREADS + }else if (skip == -1LL) { + Py_BEGIN_ALLOW_THREADS + r = sd_journal_previous(self->j); + Py_END_ALLOW_THREADS + }else if (skip > 1LL) { + Py_BEGIN_ALLOW_THREADS + r = sd_journal_next_skip(self->j, skip); + Py_END_ALLOW_THREADS + }else if (skip < -1LL) { + Py_BEGIN_ALLOW_THREADS + r = sd_journal_previous_skip(self->j, -skip); + Py_END_ALLOW_THREADS + }else{ + PyErr_SetString(PyExc_ValueError, "Skip number must positive/negative integer"); + return NULL; + } + + if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error getting next message"); + return NULL; + }else if ( r == 0) { //EOF + return PyDict_New(); + } + + PyObject *dict; + dict = PyDict_New(); + + const void *msg; + size_t msg_len; + const char *delim_ptr; + PyObject *key, *value, *cur_value, *tmp_list; + + SD_JOURNAL_FOREACH_DATA(self->j, msg, msg_len) { + delim_ptr = memchr(msg, '=', msg_len); +#if PY_MAJOR_VERSION >=3 + key = PyUnicode_FromStringAndSize(msg, delim_ptr - (const char*) msg); +#else + key = PyString_FromStringAndSize(msg, delim_ptr - (const char*) msg); +#endif + value = Journal___process_field(self, key, delim_ptr + 1, (const char*) msg + msg_len - (delim_ptr + 1) ); + if (PyDict_Contains(dict, key)) { + cur_value = PyDict_GetItem(dict, key); + if (PyList_CheckExact(cur_value) && PyList_Size(cur_value) > 1) { + PyList_Append(cur_value, value); + }else{ + tmp_list = PyList_New(0); + PyList_Append(tmp_list, cur_value); + PyList_Append(tmp_list, value); + PyDict_SetItem(dict, key, tmp_list); + Py_DECREF(tmp_list); + } + }else{ + PyDict_SetItem(dict, key, value); + } + Py_DECREF(key); + Py_DECREF(value); + } + + uint64_t realtime; + if (sd_journal_get_realtime_usec(self->j, &realtime) == 0) { + char realtime_str[20]; + sprintf(realtime_str, "%llu", (long long unsigned) realtime); + +#if PY_MAJOR_VERSION >=3 + key = PyUnicode_FromString("__REALTIME_TIMESTAMP"); +#else + key = PyString_FromString("__REALTIME_TIMESTAMP"); +#endif + value = Journal___process_field(self, key, realtime_str, strlen(realtime_str)); + PyDict_SetItem(dict, key, value); + Py_DECREF(key); + Py_DECREF(value); + } + + sd_id128_t sd_id; + uint64_t monotonic; + if (sd_journal_get_monotonic_usec(self->j, &monotonic, &sd_id) == 0) { + char monotonic_str[20]; + sprintf(monotonic_str, "%llu", (long long unsigned) monotonic); +#if PY_MAJOR_VERSION >=3 + key = PyUnicode_FromString("__MONOTONIC_TIMESTAMP"); +#else + key = PyString_FromString("__MONOTONIC_TIMESTAMP"); +#endif + value = Journal___process_field(self, key, monotonic_str, strlen(monotonic_str)); + + PyDict_SetItem(dict, key, value); + Py_DECREF(key); + Py_DECREF(value); + } + + char *cursor; + if (sd_journal_get_cursor(self->j, &cursor) > 0) { //Should return 0... +#if PY_MAJOR_VERSION >=3 + key = PyUnicode_FromString("__CURSOR"); +#else + key = PyString_FromString("__CURSOR"); +#endif + value = Journal___process_field(self, key, cursor, strlen(cursor)); + PyDict_SetItem(dict, key, value); + free(cursor); + Py_DECREF(key); + Py_DECREF(value); + } + + return dict; +} + +PyDoc_STRVAR(Journal_get_previous__doc__, +"get_previous([skip]) -> dict\n\n" +"Return dictionary of the previous log entry. Optional skip value\n" +"will return the -`skip`th log entry. Equivalent to get_next(-skip)."); +static PyObject * +Journal_get_previous(Journal *self, PyObject *args) +{ + int64_t skip=1LL; + if (! PyArg_ParseTuple(args, "|L", &skip)) + return NULL; + + PyObject *dict, *arg; + arg = Py_BuildValue("(L)", -skip); + dict = Journal_get_next(self, arg); + Py_DECREF(arg); + return dict; +} + +PyDoc_STRVAR(Journal_add_match__doc__, +"add_match(match, ..., field=value, ...) -> None\n\n" +"Add a match to filter journal log entries. All matches of different\n" +"field are combined in logical AND, and matches of the same field\n" +"are automatically combined in logical OR.\n" +"Matches can be passed as strings \"field=value\", or keyword\n" +"arguments field=\"value\"."); +static PyObject * +Journal_add_match(Journal *self, PyObject *args, PyObject *keywds) +{ + Py_ssize_t arg_match_len; + char *arg_match; + int i, r; + for (i = 0; i < PySequence_Size(args); i++) { +#if PY_MAJOR_VERSION >=3 + PyObject *arg; + arg = PySequence_Fast_GET_ITEM(args, i); + if (PyUnicode_Check(arg)) { +#if PY_MINOR_VERSION >=3 + arg_match = PyUnicode_AsUTF8AndSize(arg, &arg_match_len); +#else + PyObject *temp; + temp = PyUnicode_AsUTF8String(arg); + PyBytes_AsStringAndSize(temp, &arg_match, &arg_match_len); + Py_DECREF(temp); +#endif + }else if (PyBytes_Check(arg)) { + PyBytes_AsStringAndSize(arg, &arg_match, &arg_match_len); + }else{ + PyErr_SetString(PyExc_TypeError, "expected bytes or string"); + } +#else + PyString_AsStringAndSize(PySequence_Fast_GET_ITEM(args, i), &arg_match, &arg_match_len); +#endif + if (PyErr_Occurred()) + return NULL; + r = sd_journal_add_match(self->j, arg_match, arg_match_len); + if (r == -EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid match"); + return NULL; + }else if (r == -ENOMEM) { + PyErr_SetString(PyExc_MemoryError, "Not enough memory"); + return NULL; + }else if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error adding match"); + return NULL; + } + } + + if (! keywds) + Py_RETURN_NONE; + + PyObject *key, *value; + Py_ssize_t pos=0, match_key_len, match_value_len; + int match_len; + char *match_key, *match_value; + void *match; + while (PyDict_Next(keywds, &pos, &key, &value)) { +#if PY_MAJOR_VERSION >=3 + if (PyUnicode_Check(key)) { +#if PY_MINOR_VERSION >=3 + match_key = PyUnicode_AsUTF8AndSize(key, &match_key_len); +#else + PyObject *temp2; + temp2 = PyUnicode_AsUTF8String(key); + PyBytes_AsStringAndSize(temp2, &match_key, &match_key_len); + Py_DECREF(temp2); +#endif + }else if (PyBytes_Check(key)) { + PyBytes_AsStringAndSize(key, &match_key, &match_key_len); + }else{ + PyErr_SetString(PyExc_TypeError, "expected bytes or string"); + } + if (PyUnicode_Check(value)) { +#if PY_MINOR_VERSION >=3 + match_value = PyUnicode_AsUTF8AndSize(value, &match_value_len); +#else + PyObject *temp3; + temp3 = PyUnicode_AsUTF8String(value); + PyBytes_AsStringAndSize(temp3, &match_value, &match_value_len); + Py_DECREF(temp3); +#endif + }else if (PyBytes_Check(value)) { + PyBytes_AsStringAndSize(value, &match_value, &match_value_len); + }else{ + PyErr_SetString(PyExc_TypeError, "expected bytes or string"); + } +#else + PyString_AsStringAndSize(key, &match_key, &match_key_len); + PyString_AsStringAndSize(value, &match_value, &match_value_len); +#endif + if (PyErr_Occurred()) + return NULL; + + match_len = match_key_len + 1 + match_value_len; + match = malloc(match_len); + memcpy(match, match_key, match_key_len); + memcpy(match + match_key_len, "=", 1); + memcpy(match + match_key_len + 1, match_value, match_value_len); + + r = sd_journal_add_match(self->j, match, match_len); + free(match); + if (r == -EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid match"); + return NULL; + }else if (r == -ENOMEM) { + PyErr_SetString(PyExc_MemoryError, "Not enough memory"); + return NULL; + }else if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error adding match"); + return NULL; + } + } + + Py_RETURN_NONE; +} + +PyDoc_STRVAR(Journal_add_disjunction__doc__, +"add_disjunction() -> None\n\n" +"Once called, all matches before and after are combined in logical\n" +"OR."); +static PyObject * +Journal_add_disjunction(Journal *self, PyObject *args) +{ + int r; + r = sd_journal_add_disjunction(self->j); + if (r == -ENOMEM) { + PyErr_SetString(PyExc_MemoryError, "Not enough memory"); + return NULL; + }else if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error adding disjunction"); + return NULL; + } + Py_RETURN_NONE; +} + +PyDoc_STRVAR(Journal_flush_matches__doc__, +"flush_matches() -> None\n\n" +"Clears all current match filters."); +static PyObject * +Journal_flush_matches(Journal *self, PyObject *args) +{ + sd_journal_flush_matches(self->j); + Py_RETURN_NONE; +} + +PyDoc_STRVAR(Journal_seek__doc__, +"seek(offset[, whence]) -> None\n\n" +"Seek through journal by `offset` number of entries. Argument\n" +"`whence` defines what the offset is relative to:\n" +"os.SEEK_SET (default) from first match in journal;\n" +"os.SEEK_CUR from current position in journal;\n" +"and os.SEEK_END is from last match in journal."); +static PyObject * +Journal_seek(Journal *self, PyObject *args, PyObject *keywds) +{ + int64_t offset; + int whence=SEEK_SET; + static char *kwlist[] = {"offset", "whence", NULL}; + + if (! PyArg_ParseTupleAndKeywords(args, keywds, "L|i", kwlist, + &offset, &whence)) + return NULL; + + PyObject *arg; + if (whence == SEEK_SET){ + int r; + Py_BEGIN_ALLOW_THREADS + r = sd_journal_seek_head(self->j); + Py_END_ALLOW_THREADS + if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error seeking to head"); + return NULL; + } + if (offset > 0LL) { + arg = Py_BuildValue("(L)", offset); + Py_DECREF(Journal_get_next(self, arg)); + Py_DECREF(arg); + } + }else if (whence == SEEK_CUR){ + arg = Py_BuildValue("(L)", offset); + Py_DECREF(Journal_get_next(self, arg)); + Py_DECREF(arg); + }else if (whence == SEEK_END){ + int r; + Py_BEGIN_ALLOW_THREADS + r = sd_journal_seek_tail(self->j); + Py_END_ALLOW_THREADS + if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error seeking to tail"); + return NULL; + } + arg = Py_BuildValue("(L)", -1LL); + Py_DECREF(Journal_get_next(self, arg)); + Py_DECREF(arg); + if (offset < 0LL) { + arg = Py_BuildValue("(L)", offset); + Py_DECREF(Journal_get_next(self, arg)); + Py_DECREF(arg); + } + }else{ + PyErr_SetString(PyExc_ValueError, "Invalid value for whence"); + return NULL; + } + Py_RETURN_NONE; +} + +PyDoc_STRVAR(Journal_seek_realtime__doc__, +"seek_realtime(realtime) -> None\n\n" +"Seek to nearest matching journal entry to `realtime`. Argument\n" +"`realtime` can be an integer unix timestamp in usecs or a " +"datetime instance."); +static PyObject * +Journal_seek_realtime(Journal *self, PyObject *args) +{ + PyObject *arg; + if (! PyArg_ParseTuple(args, "O", &arg)) + return NULL; + + uint64_t timestamp=-1LL; + if (PyDateTime_Check(arg)) { + PyObject *temp; + char *timestamp_str; + temp = PyObject_CallMethod(arg, "strftime", "s", "%s%f"); +#if PY_MAJOR_VERSION >=3 + PyObject *temp2; + temp2 = PyUnicode_AsUTF8String(temp); + timestamp_str = PyBytes_AsString(temp2); + Py_DECREF(temp2); +#else + timestamp_str = PyString_AsString(temp); +#endif + Py_DECREF(temp); + timestamp = strtoull(timestamp_str, NULL, 10); + }else if (PyLong_Check(arg)) { + timestamp = PyLong_AsUnsignedLongLong(arg); +#if PY_MAJOR_VERSION <3 + }else if (PyInt_Check(arg)) { + timestamp = PyInt_AsUnsignedLongLongMask(arg); +#endif + } + if ((int64_t) timestamp < 0LL) { + PyErr_SetString(PyExc_ValueError, "Time must be positive integer or datetime instance"); + return NULL; + } + + int r; + Py_BEGIN_ALLOW_THREADS + r = sd_journal_seek_realtime_usec(self->j, timestamp); + Py_END_ALLOW_THREADS + if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error seek to time"); + return NULL; + } + Py_RETURN_NONE; +} + +PyDoc_STRVAR(Journal_seek_monotonic__doc__, +"seek_monotonic(monotonic[, bootid]) -> None\n\n" +"Seek to nearest matching journal entry to `monotonic`. Argument\n" +"`monotonic` is an timestamp from boot in secs, or a\n" +"timedelta instance.\n" +"Argument `bootid` is a string representing which boot the\n" +"monotonic time is reference to. Defaults to current bootid."); +static PyObject * +Journal_seek_monotonic(Journal *self, PyObject *args) +{ + PyObject *arg; + char *bootid=NULL; + if (! PyArg_ParseTuple(args, "O|s", &arg, &bootid)) + return NULL; + + uint64_t timestamp=-1LL; + if PyDelta_Check(arg) { + PyObject *temp; + temp = PyObject_CallMethod(arg, "total_seconds", NULL); + timestamp = (uint64_t) (PyFloat_AsDouble(temp) * 1E6); + Py_DECREF(temp); + }else if (PyFloat_Check(arg)) { + timestamp = (uint64_t) (PyFloat_AsDouble(arg) * 1E6); + }else if (PyLong_Check(arg)) { + timestamp = PyLong_AsUnsignedLongLong(arg) * (uint64_t) 1E6; +#if PY_MAJOR_VERSION <3 + }else if (PyInt_Check(arg)) { + timestamp = PyInt_AsUnsignedLongLongMask(arg) * (uint64_t) 1E6; +#endif + + } + + if ((int64_t) timestamp < 0LL) { + PyErr_SetString(PyExc_ValueError, "Time must be positive number or timedelta instance"); + return NULL; + } + + sd_id128_t sd_id; + int r; + if (bootid) { + r = sd_id128_from_string(bootid, &sd_id); + if (r == -EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid bootid"); + return NULL; + } else if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error processing bootid"); + return NULL; + } + }else{ + r = sd_id128_get_boot(&sd_id); + if (r == -EIO) { + PyErr_SetString(PyExc_IOError, "Error getting current boot ID"); + return NULL; + } else if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error getting current boot ID"); + return NULL; + } + } + + Py_BEGIN_ALLOW_THREADS + r = sd_journal_seek_monotonic_usec(self->j, sd_id, timestamp); + Py_END_ALLOW_THREADS + if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error seek to time"); + return NULL; + } + Py_RETURN_NONE; +} + +PyDoc_STRVAR(Journal_wait__doc__, +"wait([timeout]) -> Change state (integer)\n\n" +"Waits until there is a change in the journal. Argument `timeout`\n" +"is the maximum number of seconds to wait before returning\n" +"regardless if journal has changed. If `timeout` is not given or is\n" +"0, then it will block forever.\n" +"Will return constants: NOP if no change; APPEND if new\n" +"entries have been added to the end of the journal; and\n" +"INVALIDATE if journal files have been added or removed."); +static PyObject * +Journal_wait(Journal *self, PyObject *args, PyObject *keywds) +{ + int64_t timeout=0LL; + if (! PyArg_ParseTuple(args, "|L", &timeout)) + return NULL; + + int r; + if ( timeout == 0LL) { + Py_BEGIN_ALLOW_THREADS + r = sd_journal_wait(self->j, (uint64_t) -1); + Py_END_ALLOW_THREADS + }else{ + Py_BEGIN_ALLOW_THREADS + r = sd_journal_wait(self->j, timeout * 1E6); + Py_END_ALLOW_THREADS + } +#if PY_MAJOR_VERSION >=3 + return PyLong_FromLong(r); +#else + return PyInt_FromLong(r); +#endif +} + +PyDoc_STRVAR(Journal_seek_cursor__doc__, +"seek_cursor(cursor) -> None\n\n" +"Seeks to journal entry by given unique reference `cursor`."); +static PyObject * +Journal_seek_cursor(Journal *self, PyObject *args) +{ + const char *cursor; + if (! PyArg_ParseTuple(args, "s", &cursor)) + return NULL; + + int r; + Py_BEGIN_ALLOW_THREADS + r = sd_journal_seek_cursor(self->j, cursor); + Py_END_ALLOW_THREADS + if (r == -EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid cursor"); + return NULL; + }else if (r == -ENOMEM) { + PyErr_SetString(PyExc_MemoryError, "Not enough memory"); + return NULL; + }else if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error seeking to cursor"); + return NULL; + } + Py_RETURN_NONE; +} + +static PyObject * +Journal_iter(PyObject *self) +{ + Py_INCREF(self); + return self; +} + +static PyObject * +Journal_iternext(PyObject *self) +{ + Journal *iter = (Journal *)self; + PyObject *dict, *arg; + Py_ssize_t dict_size; + + arg = Py_BuildValue("()"); + dict = Journal_get_next(iter, arg); + Py_DECREF(arg); + dict_size = PyDict_Size(dict); + if ((int64_t) dict_size > 0LL) { + return dict; + }else{ + Py_DECREF(dict); + PyErr_SetNone(PyExc_StopIteration); + return NULL; + } +} + +#ifdef SD_JOURNAL_FOREACH_UNIQUE +PyDoc_STRVAR(Journal_query_unique__doc__, +"query_unique(field) -> a set of values\n\n" +"Returns a set of unique values in journal for given `field`.\n" +"Note this does not respect any journal matches."); +static PyObject * +Journal_query_unique(Journal *self, PyObject *args) +{ + char *query; + if (! PyArg_ParseTuple(args, "s", &query)) + return NULL; + + int r; + Py_BEGIN_ALLOW_THREADS + r = sd_journal_query_unique(self->j, query); + Py_END_ALLOW_THREADS + if (r == -EINVAL) { + PyErr_SetString(PyExc_ValueError, "Invalid field name"); + return NULL; + } else if (r == -ENOMEM) { + PyErr_SetString(PyExc_MemoryError, "Not enough memory"); + return NULL; + } else if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error querying journal"); + return NULL; + } + + const void *uniq; + size_t uniq_len; + const char *delim_ptr; + PyObject *value_set, *key, *value; + value_set = PySet_New(0); + +#if PY_MAJOR_VERSION >=3 + key = PyUnicode_FromString(query); +#else + key = PyString_FromString(query); +#endif + + SD_JOURNAL_FOREACH_UNIQUE(self->j, uniq, uniq_len) { + delim_ptr = memchr(uniq, '=', uniq_len); + value = Journal___process_field(self, key, delim_ptr + 1, (const char*) uniq + uniq_len - (delim_ptr + 1)); + PySet_Add(value_set, value); + Py_DECREF(value); + } + Py_DECREF(key); + return value_set; +} +#endif //def SD_JOURNAL_FOREACH_UNIQUE + +PyDoc_STRVAR(Journal_log_level__doc__, +"log_level(level) -> None\n\n" +"Sets maximum log level by setting matches for PRIORITY."); +static PyObject * +Journal_log_level(Journal *self, PyObject *args) +{ + int level; + if (! PyArg_ParseTuple(args, "i", &level)) + return NULL; + + if (level < 0 || level > 7) { + PyErr_SetString(PyExc_ValueError, "Log level should be 0 <= level <= 7"); + return NULL; + } + int i; + char level_str[2]; + PyObject *arg, *keywds; + for(i = 0; i <= level; i++) { + sprintf(level_str, "%i", i); + arg = PyTuple_New(0); + keywds = Py_BuildValue("{s:s}", "PRIORITY", level_str); + Journal_add_match(self, arg, keywds); + Py_DECREF(arg); + Py_DECREF(keywds); + if (PyErr_Occurred()) + return NULL; + } + Py_RETURN_NONE; +} + +PyDoc_STRVAR(Journal_this_boot__doc__, +"this_boot() -> None\n\n" +"Sets match filter for the current _BOOT_ID."); +static PyObject * +Journal_this_boot(Journal *self, PyObject *args) +{ + sd_id128_t sd_id; + int r; + r = sd_id128_get_boot(&sd_id); + if (r == -EIO) { + PyErr_SetString(PyExc_IOError, "Error getting current boot ID"); + return NULL; + } else if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error getting current boot ID"); + return NULL; + } + + char bootid[33]; + sd_id128_to_string(sd_id, bootid); + + PyObject *arg, *keywds; + arg = PyTuple_New(0); + keywds = Py_BuildValue("{s:s}", "_BOOT_ID", bootid); + Journal_add_match(self, arg, keywds); + Py_DECREF(arg); + Py_DECREF(keywds); + if (PyErr_Occurred()) + return NULL; + + Py_RETURN_NONE; +} + +PyDoc_STRVAR(Journal_this_machine__doc__, +"this_machine() -> None\n\n" +"Sets match filter for the current _MACHINE_ID."); +static PyObject * +Journal_this_machine(Journal *self, PyObject *args) +{ + sd_id128_t sd_id; + int r; + r = sd_id128_get_machine(&sd_id); + if (r == -EIO) { + PyErr_SetString(PyExc_IOError, "Error getting current boot ID"); + return NULL; + } else if (r < 0) { + PyErr_SetString(PyExc_RuntimeError, "Error getting current boot ID"); + return NULL; + } + + char machineid[33]; + sd_id128_to_string(sd_id, machineid); + + PyObject *arg, *keywds; + arg = PyTuple_New(0); + keywds = Py_BuildValue("{s:s}", "_MACHINE_ID", machineid); + Journal_add_match(self, arg, keywds); + Py_DECREF(arg); + Py_DECREF(keywds); + if (PyErr_Occurred()) + return NULL; + + Py_RETURN_NONE; +} + +static PyObject * +Journal_get_default_call(Journal *self, void *closure) +{ + Py_INCREF(self->default_call); + return self->default_call; +} + +static int +Journal_set_default_call(Journal *self, PyObject *value, void *closure) +{ + if (value == NULL) { + PyErr_SetString(PyExc_TypeError, "Cannot delete default_call"); + return -1; + } + if (! PyCallable_Check(value)) { + PyErr_SetString(PyExc_TypeError, "default_call must be callable"); + return -1; + } + Py_DECREF(self->default_call); + Py_INCREF(value); + self->default_call = value; + + return 0; +} + +static PyObject * +Journal_get_call_dict(Journal *self, void *closure) +{ + Py_INCREF(self->call_dict); + return self->call_dict; +} + +static int +Journal_set_call_dict(Journal *self, PyObject *value, void *closure) +{ + if (value == NULL) { + PyErr_SetString(PyExc_TypeError, "Cannot delete call_dict"); + return -1; + } + if (! PyDict_Check(value)) { + PyErr_SetString(PyExc_TypeError, "call_dict must be dict type"); + return -1; + } + Py_DECREF(self->call_dict); + Py_INCREF(value); + self->call_dict = value; + + return 0; +} + +static PyObject * +Journal_get_data_threshold(Journal *self, void *closure) +{ + size_t cvalue; + PyObject *value; + int r; + + r = sd_journal_get_data_threshold(self->j, &cvalue); + if (r < 0){ + PyErr_SetString(PyExc_RuntimeError, "Error getting data threshold"); + return NULL; + } + +#if PY_MAJOR_VERSION >=3 + value = PyLong_FromSize_t(cvalue); +#else + value = PyInt_FromSize_t(cvalue); +#endif + return value; +} + +static int +Journal_set_data_threshold(Journal *self, PyObject *value, void *closure) +{ + if (value == NULL) { + PyErr_SetString(PyExc_TypeError, "Cannot delete data threshold"); + return -1; + } +#if PY_MAJOR_VERSION >=3 + if (! PyLong_Check(value)){ +#else + if (! PyInt_Check(value)){ +#endif + PyErr_SetString(PyExc_TypeError, "Data threshold must be int"); + return -1; + } + int r; +#if PY_MAJOR_VERSION >=3 + r = sd_journal_set_data_threshold(self->j, (size_t) PyLong_AsLong(value)); +#else + r = sd_journal_set_data_threshold(self->j, (size_t) PyInt_AsLong(value)); +#endif + if (r < 0){ + PyErr_SetString(PyExc_RuntimeError, "Error setting data threshold"); + return -1; + } + return 0; +} + +static PyGetSetDef Journal_getseters[] = { + {"data_threshold", + (getter)Journal_get_data_threshold, + (setter)Journal_set_data_threshold, + "data threshold", + NULL}, + {"call_dict", + (getter)Journal_get_call_dict, + (setter)Journal_set_call_dict, + "dictionary of calls for each field", + NULL}, + {"default_call", + (getter)Journal_get_default_call, + (setter)Journal_set_default_call, + "default call for values for fields", + NULL}, + {NULL} +}; + +static PyMethodDef Journal_methods[] = { + {"get_next", (PyCFunction)Journal_get_next, METH_VARARGS, + Journal_get_next__doc__}, + {"get_previous", (PyCFunction)Journal_get_previous, METH_VARARGS, + Journal_get_previous__doc__}, + {"add_match", (PyCFunction)Journal_add_match, METH_VARARGS|METH_KEYWORDS, + Journal_add_match__doc__}, + {"add_disjunction", (PyCFunction)Journal_add_disjunction, METH_NOARGS, + Journal_add_disjunction__doc__}, + {"flush_matches", (PyCFunction)Journal_flush_matches, METH_NOARGS, + Journal_flush_matches__doc__}, + {"seek", (PyCFunction)Journal_seek, METH_VARARGS | METH_KEYWORDS, + Journal_seek__doc__}, + {"seek_realtime", (PyCFunction)Journal_seek_realtime, METH_VARARGS, + Journal_seek_realtime__doc__}, + {"seek_monotonic", (PyCFunction)Journal_seek_monotonic, METH_VARARGS, + Journal_seek_monotonic__doc__}, + {"wait", (PyCFunction)Journal_wait, METH_VARARGS, + Journal_wait__doc__}, + {"seek_cursor", (PyCFunction)Journal_seek_cursor, METH_VARARGS, + Journal_seek_cursor__doc__}, +#ifdef SD_JOURNAL_FOREACH_UNIQUE + {"query_unique", (PyCFunction)Journal_query_unique, METH_VARARGS, + Journal_query_unique__doc__}, +#endif + {"log_level", (PyCFunction)Journal_log_level, METH_VARARGS, + Journal_log_level__doc__}, + {"this_boot", (PyCFunction)Journal_this_boot, METH_NOARGS, + Journal_this_boot__doc__}, + {"this_machine", (PyCFunction)Journal_this_machine, METH_NOARGS, + Journal_this_machine__doc__}, + {NULL} /* Sentinel */ +}; + +static PyTypeObject JournalType = { + PyVarObject_HEAD_INIT(NULL, 0) + "_reader.Journal", /*tp_name*/ + sizeof(Journal), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + (destructor)Journal_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash */ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,/*tp_flags*/ + Journal__doc__, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + Journal_iter, /* tp_iter */ + Journal_iternext, /* tp_iternext */ + Journal_methods, /* tp_methods */ + 0, /* tp_members */ + Journal_getseters, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + (initproc)Journal_init, /* tp_init */ + 0, /* tp_alloc */ + Journal_new, /* tp_new */ +}; + +#if PY_MAJOR_VERSION >= 3 +static PyModuleDef _reader_module = { + PyModuleDef_HEAD_INIT, + "_reader", + "Module that reads systemd journal similar to journalctl.", + -1, + NULL, NULL, NULL, NULL, NULL +}; +#endif + +PyMODINIT_FUNC +#if PY_MAJOR_VERSION >= 3 +PyInit__reader(void) +#else +init_reader(void) +#endif +{ + PyObject* m; + + PyDateTime_IMPORT; + + if (PyType_Ready(&JournalType) < 0) +#if PY_MAJOR_VERSION >= 3 + return NULL; +#else + return; +#endif + +#if PY_MAJOR_VERSION >= 3 + m = PyModule_Create(&_reader_module); + if (m == NULL) + return NULL; +#else + m = Py_InitModule3("_reader", NULL, + "Module that reads systemd journal similar to journalctl."); + if (m == NULL) + return; +#endif + + Py_INCREF(&JournalType); + PyModule_AddObject(m, "Journal", (PyObject *)&JournalType); + PyModule_AddIntConstant(m, "NOP", SD_JOURNAL_NOP); + PyModule_AddIntConstant(m, "APPEND", SD_JOURNAL_APPEND); + PyModule_AddIntConstant(m, "INVALIDATE", SD_JOURNAL_INVALIDATE); + PyModule_AddIntConstant(m, "LOCAL_ONLY", SD_JOURNAL_LOCAL_ONLY); + PyModule_AddIntConstant(m, "RUNTIME_ONLY", SD_JOURNAL_RUNTIME_ONLY); + PyModule_AddIntConstant(m, "SYSTEM_ONLY", SD_JOURNAL_SYSTEM_ONLY); + +#if PY_MAJOR_VERSION >= 3 + return m; +#endif +} diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 47849a360c..a1543b884e 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -25,6 +25,8 @@ import logging as _logging from syslog import (LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG) from ._journal import sendv, stream_fd +from ._reader import (Journal, NOP, APPEND, INVALIDATE, + LOCAL_ONLY, RUNTIME_ONLY, SYSTEM_ONLY) def _make_line(field, value): if isinstance(value, bytes): -- cgit v1.2.1 From 2d0603bd976978a62165c79129fc3a1f8d36b9e6 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Fri, 8 Feb 2013 22:04:42 +0000 Subject: systemd-python: moved PyRun_String to journal.py code --- src/python-systemd/_reader.c | 55 +++---------------------------------------- src/python-systemd/journal.py | 48 ++++++++++++++++++++++++++++++++++++- 2 files changed, 50 insertions(+), 53 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 963da11dc6..69c6d02a9e 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -46,57 +46,8 @@ Journal_new(PyTypeObject *type, PyObject *args, PyObject *kwds) self = (Journal *)type->tp_alloc(type, 0); if (self != NULL) { - PyObject *globals, *temp; - - globals = PyEval_GetBuiltins(); - temp = PyImport_ImportModule("functools"); - PyDict_SetItemString(globals, "functools", temp); - Py_DECREF(temp); - temp = PyImport_ImportModule("datetime"); - PyDict_SetItemString(globals, "datetime", temp); - Py_DECREF(temp); - -#if PY_MAJOR_VERSION >=3 - self->default_call = PyRun_String("functools.partial(str, encoding='utf-8')", Py_eval_input, globals, NULL); -#else - self->default_call = PyRun_String("functools.partial(unicode, encoding='utf-8')", Py_eval_input, globals, NULL); -#endif - - self->call_dict = PyRun_String("{" - "'PRIORITY': int," - "'LEADER': int," - "'SESSION_ID': int," - "'USERSPACE_USEC': int," - "'INITRD_USEC': int," - "'KERNEL_USEC': int," - "'_UID': int," - "'_GID': int," - "'_PID': int," - "'SYSLOG_FACILITY': int," - "'SYSLOG_PID': int," - "'_AUDIT_SESSION': int," - "'_AUDIT_LOGINUID': int," - "'_SYSTEMD_SESSION': int," - "'_SYSTEMD_OWNER_UID': int," - "'CODE_LINE': int," - "'ERRNO': int," - "'EXIT_STATUS': int," - "'_SOURCE_REALTIME_TIMESTAMP': lambda x: datetime.datetime.fromtimestamp(float(x)/1E6)," - "'__REALTIME_TIMESTAMP': lambda x: datetime.datetime.fromtimestamp(float(x)/1E6)," - "'_SOURCE_MONOTONIC_TIMESTAMP': lambda x: datetime.timedelta(microseconds=float(x))," - "'__MONOTONIC_TIMESTAMP': lambda x: datetime.timedelta(microseconds=float(x))," -#if PY_MAJOR_VERSION >=3 - "'COREDUMP': bytes," -#else - "'COREDUMP': str," -#endif - "'COREDUMP_PID': int," - "'COREDUMP_UID': int," - "'COREDUMP_GID': int," - "'COREDUMP_SESSION': int," - "'COREDUMP_SIGNAL': int," - "'COREDUMP_TIMESTAMP': lambda x: datetime.datetime.fromtimestamp(float(x)/1E6)," - "}", Py_eval_input, globals, NULL); + self->call_dict = PyDict_New(); + self->default_call = Py_None; } return (PyObject *) self; @@ -1149,7 +1100,7 @@ init_reader(void) #endif Py_INCREF(&JournalType); - PyModule_AddObject(m, "Journal", (PyObject *)&JournalType); + PyModule_AddObject(m, "_Journal", (PyObject *)&JournalType); PyModule_AddIntConstant(m, "NOP", SD_JOURNAL_NOP); PyModule_AddIntConstant(m, "APPEND", SD_JOURNAL_APPEND); PyModule_AddIntConstant(m, "INVALIDATE", SD_JOURNAL_INVALIDATE); diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index a1543b884e..1f0aafc7fe 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -19,15 +19,61 @@ # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see . +import datetime +import functools +import sys import traceback as _traceback import os as _os import logging as _logging from syslog import (LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG) from ._journal import sendv, stream_fd -from ._reader import (Journal, NOP, APPEND, INVALIDATE, +from ._reader import (_Journal, NOP, APPEND, INVALIDATE, LOCAL_ONLY, RUNTIME_ONLY, SYSTEM_ONLY) +class Journal(_Journal): + def __new__(cls, *args, **kwargs): + self = _Journal.__new__(cls, *args, **kwargs) + if sys.version_info[0] >= 3: + self.default_call = functools.partial(str, encoding='utf-8') + else: + self.default_call = functools.partial(unicode, encoding='utf-8') + self.call_dict = { + 'PRIORITY': int, + 'LEADER': int, + 'SESSION_ID': int, + 'USERSPACE_USEC': int, + 'INITRD_USEC': int, + 'KERNEL_USEC': int, + '_UID': int, + '_GID': int, + '_PID': int, + 'SYSLOG_FACILITY': int, + 'SYSLOG_PID': int, + '_AUDIT_SESSION': int, + '_AUDIT_LOGINUID': int, + '_SYSTEMD_SESSION': int, + '_SYSTEMD_OWNER_UID': int, + 'CODE_LINE': int, + 'ERRNO': int, + 'EXIT_STATUS': int, + '_SOURCE_REALTIME_TIMESTAMP': lambda x: datetime.datetime.fromtimestamp(float(x)/1E6), + '__REALTIME_TIMESTAMP': lambda x: datetime.datetime.fromtimestamp(float(x)/1E6), + '_SOURCE_MONOTONIC_TIMESTAMP': lambda x: datetime.timedelta(microseconds=float(x)), + '__MONOTONIC_TIMESTAMP': lambda x: datetime.timedelta(microseconds=float(x)), + 'COREDUMP_PID': int, + 'COREDUMP_UID': int, + 'COREDUMP_GID': int, + 'COREDUMP_SESSION': int, + 'COREDUMP_SIGNAL': int, + 'COREDUMP_TIMESTAMP': lambda x: datetime.datetime.fromtimestamp(float(x)/1E6), + } + if sys.version_info[0] >= 3: + self.call_dict['COREDUMP'] = bytes + else: + self.call_dict['COREDUMP'] = str + return self + def _make_line(field, value): if isinstance(value, bytes): return field.encode('utf-8') + b'=' + value -- cgit v1.2.1 From 3ce2cc25bb8e623788fdfaf1ab5a804122a93473 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Fri, 8 Feb 2013 22:14:18 +0000 Subject: systemd-python: MESSAGE_ID as UUID for Journal --- src/python-systemd/journal.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 1f0aafc7fe..fafddaa27e 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -22,6 +22,7 @@ import datetime import functools import sys +import uuid import traceback as _traceback import os as _os import logging as _logging @@ -39,6 +40,7 @@ class Journal(_Journal): else: self.default_call = functools.partial(unicode, encoding='utf-8') self.call_dict = { + 'MESSAGE_ID': uuid.UUID, 'PRIORITY': int, 'LEADER': int, 'SESSION_ID': int, -- cgit v1.2.1 From 3aa8f0861ca00572879bd32e4f352afd578e674c Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Fri, 15 Feb 2013 16:59:50 +0000 Subject: systemd-python: move default call dicts from C to python --- src/python-systemd/_reader.c | 196 ++++-------------------------------------- src/python-systemd/journal.py | 121 +++++++++++++++++--------- 2 files changed, 97 insertions(+), 220 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 69c6d02a9e..f047ab9e6d 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -25,8 +25,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA typedef struct { PyObject_HEAD sd_journal *j; - PyObject *default_call; - PyObject *call_dict; } Journal; static PyTypeObject JournalType; @@ -34,27 +32,11 @@ static void Journal_dealloc(Journal* self) { sd_journal_close(self->j); - Py_XDECREF(self->default_call); - Py_XDECREF(self->call_dict); Py_TYPE(self)->tp_free((PyObject*)self); } -static PyObject * -Journal_new(PyTypeObject *type, PyObject *args, PyObject *kwds) -{ - Journal *self; - - self = (Journal *)type->tp_alloc(type, 0); - if (self != NULL) { - self->call_dict = PyDict_New(); - self->default_call = Py_None; - } - - return (PyObject *) self; -} - PyDoc_STRVAR(Journal__doc__, -"Journal([flags][, default_call][, call_dict][,path]) -> ...\n" +"Journal([flags][,path]) -> ...\n" "Journal instance\n\n" "Returns instance of Journal, which allows filtering and return\n" "of journal entries.\n" @@ -63,13 +45,6 @@ PyDoc_STRVAR(Journal__doc__, "journal on local machine only; RUNTIME_ONLY opens only\n" "volatile journal files; and SYSTEM_ONLY opens only\n" "journal files of system services and the kernel.\n" -"Argument `default_call` must be a callable that accepts one\n" -"argument which is string/bytes value of a field and returns\n" -"python object.\n" -"Argument `call_dict` is a dictionary where the key represents\n" -"a field name, and value is a callable as per `default_call`.\n" -"A set of sane defaults for `default_call` and `call_dict` are\n" -"present.\n" "Argument `path` is the directory of journal files. Note that\n" "currently flags are ignored when `path` is present as they are\n" " not relevant."); @@ -78,38 +53,12 @@ Journal_init(Journal *self, PyObject *args, PyObject *keywds) { int flags=SD_JOURNAL_LOCAL_ONLY; char *path=NULL; - PyObject *default_call=NULL, *call_dict=NULL; - static char *kwlist[] = {"flags", "default_call", "call_dict", "path", NULL}; - if (! PyArg_ParseTupleAndKeywords(args, keywds, "|iOOs", kwlist, - &flags, &default_call, &call_dict, &path)) + static char *kwlist[] = {"flags", NULL}; + if (! PyArg_ParseTupleAndKeywords(args, keywds, "|is", kwlist, + &flags, &path)) return 1; - if (default_call) { - if (PyCallable_Check(default_call) || default_call == Py_None) { - Py_DECREF(self->default_call); - self->default_call = default_call; - Py_INCREF(self->default_call); - }else{ - PyErr_SetString(PyExc_TypeError, "Default call not callable"); - return 1; - } - } - - if (call_dict) { - if (PyDict_Check(call_dict)) { - Py_DECREF(self->call_dict); - self->call_dict = call_dict; - Py_INCREF(self->call_dict); - }else if (call_dict == Py_None) { - Py_DECREF(self->call_dict); - self->call_dict = PyDict_New(); - }else{ - PyErr_SetString(PyExc_TypeError, "Call dictionary must be dict type"); - return 1; - } - } - int r; if (path) { r = sd_journal_open_directory(&self->j, path, 0); @@ -132,42 +81,6 @@ Journal_init(Journal *self, PyObject *args, PyObject *keywds) return 0; } -static PyObject * -Journal___process_field(Journal *self, PyObject *key, const void *value, ssize_t value_len) -{ - PyObject *callable=NULL, *return_value=NULL; - if (PyDict_Check(self->call_dict)) - callable = PyDict_GetItem(self->call_dict, key); - - if (PyCallable_Check(callable)) { -#if PY_MAJOR_VERSION >=3 - return_value = PyObject_CallFunction(callable, "y#", value, value_len); -#else - return_value = PyObject_CallFunction(callable, "s#", value, value_len); -#endif - if (!return_value) - PyErr_Clear(); - } - if (!return_value && PyCallable_Check(self->default_call)) -#if PY_MAJOR_VERSION >=3 - return_value = PyObject_CallFunction(self->default_call, "y#", value, value_len); -#else - return_value = PyObject_CallFunction(self->default_call, "s#", value, value_len); -#endif - if (!return_value) { - PyErr_Clear(); -#if PY_MAJOR_VERSION >=3 - return_value = PyBytes_FromStringAndSize(value, value_len); -#else - return_value = PyString_FromStringAndSize(value, value_len); -#endif - } - if (!return_value) { - return_value = Py_None; - } - return return_value; -} - PyDoc_STRVAR(Journal_get_next__doc__, "get_next([skip]) -> dict\n\n" "Return dictionary of the next log entry. Optional skip value will\n" @@ -223,10 +136,10 @@ Journal_get_next(Journal *self, PyObject *args) #else key = PyString_FromStringAndSize(msg, delim_ptr - (const char*) msg); #endif - value = Journal___process_field(self, key, delim_ptr + 1, (const char*) msg + msg_len - (delim_ptr + 1) ); + value = PyBytes_FromStringAndSize(delim_ptr + 1, (const char*) msg + msg_len - (delim_ptr + 1) ); if (PyDict_Contains(dict, key)) { cur_value = PyDict_GetItem(dict, key); - if (PyList_CheckExact(cur_value) && PyList_Size(cur_value) > 1) { + if (PyList_CheckExact(cur_value)) { PyList_Append(cur_value, value); }else{ tmp_list = PyList_New(0); @@ -252,7 +165,7 @@ Journal_get_next(Journal *self, PyObject *args) #else key = PyString_FromString("__REALTIME_TIMESTAMP"); #endif - value = Journal___process_field(self, key, realtime_str, strlen(realtime_str)); + value = PyBytes_FromString(realtime_str); PyDict_SetItem(dict, key, value); Py_DECREF(key); Py_DECREF(value); @@ -268,7 +181,7 @@ Journal_get_next(Journal *self, PyObject *args) #else key = PyString_FromString("__MONOTONIC_TIMESTAMP"); #endif - value = Journal___process_field(self, key, monotonic_str, strlen(monotonic_str)); + value = PyBytes_FromString(monotonic_str); PyDict_SetItem(dict, key, value); Py_DECREF(key); @@ -282,7 +195,7 @@ Journal_get_next(Journal *self, PyObject *args) #else key = PyString_FromString("__CURSOR"); #endif - value = Journal___process_field(self, key, cursor, strlen(cursor)); + value = PyBytes_FromString(cursor); PyDict_SetItem(dict, key, value); free(cursor); Py_DECREF(key); @@ -303,11 +216,7 @@ Journal_get_previous(Journal *self, PyObject *args) if (! PyArg_ParseTuple(args, "|L", &skip)) return NULL; - PyObject *dict, *arg; - arg = Py_BuildValue("(L)", -skip); - dict = Journal_get_next(self, arg); - Py_DECREF(arg); - return dict; + return PyObject_CallMethod((PyObject *)self, "get_next", "L", -skip); } PyDoc_STRVAR(Journal_add_match__doc__, @@ -485,14 +394,10 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) return NULL; } if (offset > 0LL) { - arg = Py_BuildValue("(L)", offset); - Py_DECREF(Journal_get_next(self, arg)); - Py_DECREF(arg); + Py_DECREF(PyObject_CallMethod((PyObject *)self, "get_next", "L", offset)); } }else if (whence == SEEK_CUR){ - arg = Py_BuildValue("(L)", offset); - Py_DECREF(Journal_get_next(self, arg)); - Py_DECREF(arg); + Py_DECREF(PyObject_CallMethod((PyObject *)self, "get_next", "L", offset)); }else if (whence == SEEK_END){ int r; Py_BEGIN_ALLOW_THREADS @@ -502,13 +407,9 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) PyErr_SetString(PyExc_RuntimeError, "Error seeking to tail"); return NULL; } - arg = Py_BuildValue("(L)", -1LL); - Py_DECREF(Journal_get_next(self, arg)); - Py_DECREF(arg); + Py_DECREF(PyObject_CallMethod((PyObject *)self, "get_next", "L", -1LL)); if (offset < 0LL) { - arg = Py_BuildValue("(L)", offset); - Py_DECREF(Journal_get_next(self, arg)); - Py_DECREF(arg); + Py_DECREF(PyObject_CallMethod((PyObject *)self, "get_next", "L", offset)); } }else{ PyErr_SetString(PyExc_ValueError, "Invalid value for whence"); @@ -706,13 +607,10 @@ Journal_iter(PyObject *self) static PyObject * Journal_iternext(PyObject *self) { - Journal *iter = (Journal *)self; PyObject *dict, *arg; Py_ssize_t dict_size; - arg = Py_BuildValue("()"); - dict = Journal_get_next(iter, arg); - Py_DECREF(arg); + dict = PyObject_CallMethod(self, "get_next", ""); dict_size = PyDict_Size(dict); if ((int64_t) dict_size > 0LL) { return dict; @@ -764,7 +662,7 @@ Journal_query_unique(Journal *self, PyObject *args) SD_JOURNAL_FOREACH_UNIQUE(self->j, uniq, uniq_len) { delim_ptr = memchr(uniq, '=', uniq_len); - value = Journal___process_field(self, key, delim_ptr + 1, (const char*) uniq + uniq_len - (delim_ptr + 1)); + value = PyBytes_FromStringAndSize(delim_ptr + 1, (const char*) uniq + uniq_len - (delim_ptr + 1)); PySet_Add(value_set, value); Py_DECREF(value); } @@ -867,56 +765,6 @@ Journal_this_machine(Journal *self, PyObject *args) Py_RETURN_NONE; } -static PyObject * -Journal_get_default_call(Journal *self, void *closure) -{ - Py_INCREF(self->default_call); - return self->default_call; -} - -static int -Journal_set_default_call(Journal *self, PyObject *value, void *closure) -{ - if (value == NULL) { - PyErr_SetString(PyExc_TypeError, "Cannot delete default_call"); - return -1; - } - if (! PyCallable_Check(value)) { - PyErr_SetString(PyExc_TypeError, "default_call must be callable"); - return -1; - } - Py_DECREF(self->default_call); - Py_INCREF(value); - self->default_call = value; - - return 0; -} - -static PyObject * -Journal_get_call_dict(Journal *self, void *closure) -{ - Py_INCREF(self->call_dict); - return self->call_dict; -} - -static int -Journal_set_call_dict(Journal *self, PyObject *value, void *closure) -{ - if (value == NULL) { - PyErr_SetString(PyExc_TypeError, "Cannot delete call_dict"); - return -1; - } - if (! PyDict_Check(value)) { - PyErr_SetString(PyExc_TypeError, "call_dict must be dict type"); - return -1; - } - Py_DECREF(self->call_dict); - Py_INCREF(value); - self->call_dict = value; - - return 0; -} - static PyObject * Journal_get_data_threshold(Journal *self, void *closure) { @@ -972,16 +820,6 @@ static PyGetSetDef Journal_getseters[] = { (setter)Journal_set_data_threshold, "data threshold", NULL}, - {"call_dict", - (getter)Journal_get_call_dict, - (setter)Journal_set_call_dict, - "dictionary of calls for each field", - NULL}, - {"default_call", - (getter)Journal_get_default_call, - (setter)Journal_set_default_call, - "default call for values for fields", - NULL}, {NULL} }; @@ -1057,7 +895,7 @@ static PyTypeObject JournalType = { 0, /* tp_dictoffset */ (initproc)Journal_init, /* tp_init */ 0, /* tp_alloc */ - Journal_new, /* tp_new */ + PyType_GenericNew, /* tp_new */ }; #if PY_MAJOR_VERSION >= 3 diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index fafddaa27e..8a688f978b 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -32,49 +32,88 @@ from ._journal import sendv, stream_fd from ._reader import (_Journal, NOP, APPEND, INVALIDATE, LOCAL_ONLY, RUNTIME_ONLY, SYSTEM_ONLY) +_MONOTONIC_CONVERTER = lambda x: datetime.timedelta(microseconds=float(x)) +_REALTIME_CONVERTER = lambda x: datetime.datetime.fromtimestamp(float(x)/1E6) +DEFAULT_CONVERTERS = { + 'MESSAGE_ID': uuid.UUID, + 'PRIORITY': int, + 'LEADER': int, + 'SESSION_ID': int, + 'USERSPACE_USEC': int, + 'INITRD_USEC': int, + 'KERNEL_USEC': int, + '_UID': int, + '_GID': int, + '_PID': int, + 'SYSLOG_FACILITY': int, + 'SYSLOG_PID': int, + '_AUDIT_SESSION': int, + '_AUDIT_LOGINUID': int, + '_SYSTEMD_SESSION': int, + '_SYSTEMD_OWNER_UID': int, + 'CODE_LINE': int, + 'ERRNO': int, + 'EXIT_STATUS': int, + '_SOURCE_REALTIME_TIMESTAMP': _REALTIME_CONVERTER, + '__REALTIME_TIMESTAMP': _REALTIME_CONVERTER, + '_SOURCE_MONOTONIC_TIMESTAMP': _MONOTONIC_CONVERTER, + '__MONOTONIC_TIMESTAMP': _MONOTONIC_CONVERTER, + 'COREDUMP': bytes, + 'COREDUMP_PID': int, + 'COREDUMP_UID': int, + 'COREDUMP_GID': int, + 'COREDUMP_SESSION': int, + 'COREDUMP_SIGNAL': int, + 'COREDUMP_TIMESTAMP': _REALTIME_CONVERTER, +} + +if sys.version_info >= (3,): + _convert_unicode = functools.partial(str, encoding='utf-8') +else: + _convert_unicode = functools.partial(unicode, encoding='utf-8') + class Journal(_Journal): - def __new__(cls, *args, **kwargs): - self = _Journal.__new__(cls, *args, **kwargs) - if sys.version_info[0] >= 3: - self.default_call = functools.partial(str, encoding='utf-8') - else: - self.default_call = functools.partial(unicode, encoding='utf-8') - self.call_dict = { - 'MESSAGE_ID': uuid.UUID, - 'PRIORITY': int, - 'LEADER': int, - 'SESSION_ID': int, - 'USERSPACE_USEC': int, - 'INITRD_USEC': int, - 'KERNEL_USEC': int, - '_UID': int, - '_GID': int, - '_PID': int, - 'SYSLOG_FACILITY': int, - 'SYSLOG_PID': int, - '_AUDIT_SESSION': int, - '_AUDIT_LOGINUID': int, - '_SYSTEMD_SESSION': int, - '_SYSTEMD_OWNER_UID': int, - 'CODE_LINE': int, - 'ERRNO': int, - 'EXIT_STATUS': int, - '_SOURCE_REALTIME_TIMESTAMP': lambda x: datetime.datetime.fromtimestamp(float(x)/1E6), - '__REALTIME_TIMESTAMP': lambda x: datetime.datetime.fromtimestamp(float(x)/1E6), - '_SOURCE_MONOTONIC_TIMESTAMP': lambda x: datetime.timedelta(microseconds=float(x)), - '__MONOTONIC_TIMESTAMP': lambda x: datetime.timedelta(microseconds=float(x)), - 'COREDUMP_PID': int, - 'COREDUMP_UID': int, - 'COREDUMP_GID': int, - 'COREDUMP_SESSION': int, - 'COREDUMP_SIGNAL': int, - 'COREDUMP_TIMESTAMP': lambda x: datetime.datetime.fromtimestamp(float(x)/1E6), - } - if sys.version_info[0] >= 3: - self.call_dict['COREDUMP'] = bytes + def __init__(self, converters=None, *args, **kwargs): + super(Journal, self).__init__(*args, **kwargs) + if sys.version_info >= (3,3): + self.converters = ChainMap() + if converters is not None: + self.converters.maps.append(converters) + self.converters.maps.append(DEFAULT_CONVERTERS) else: - self.call_dict['COREDUMP'] = str - return self + # suitable fallback, e.g. + self.converters = DEFAULT_CONVERTERS.copy() + if converters is not None: + self.converters.update(converters) + + def _convert_field(self, key, value): + try: + result = self.converters[key](value) + except KeyError: + # Default conversion in unicode + try: + result = _convert_unicode(value) + except: + # Leave in default bytes + result = value + return result + + def _convert_entry(self, entry): + result = {} + for key, value in entry.iteritems(): + if isinstance(value, list): + result[key] = [self._convert_field(key, val) for val in value] + else: + result[key] = self._convert_field(key, value) + return result + + def get_next(self, *args, **kwargs): + return self._convert_entry( + super(Journal, self).get_next(*args, **kwargs)) + + def query_unique(self, key, *args, **kwargs): + return set(self._convert_field(key, value) + for value in super(Journal, self).query_unique(key, *args, **kwargs)) def _make_line(field, value): if isinstance(value, bytes): -- cgit v1.2.1 From c1db45c6a5b0bd2ad7ddbfd877162794ac3a48f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 16 Feb 2013 20:28:34 -0500 Subject: sphinx: document Journal class too --- src/python-systemd/docs/journal.rst | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/python-systemd/docs/journal.rst b/src/python-systemd/docs/journal.rst index 036250a764..89728a2ecb 100644 --- a/src/python-systemd/docs/journal.rst +++ b/src/python-systemd/docs/journal.rst @@ -9,3 +9,16 @@ ---------------------- .. autoclass:: JournalHandler + +Accessing the Journal +--------------------- + +.. autoclass:: _Journal + :undoc-members: + :inherited-members: + +.. autoclass:: Journal + :undoc-members: + :inherited-members: + + .. automethod:: __init__ -- cgit v1.2.1 From 25523db4e1a3da09916ed69c1e90a52d027ac765 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Fri, 15 Feb 2013 17:09:47 +0000 Subject: systemd-python: Journal log_level moved to python --- src/python-systemd/_reader.c | 32 -------------------------------- src/python-systemd/journal.py | 8 ++++++++ 2 files changed, 8 insertions(+), 32 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index f047ab9e6d..ce6631782f 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -671,36 +671,6 @@ Journal_query_unique(Journal *self, PyObject *args) } #endif //def SD_JOURNAL_FOREACH_UNIQUE -PyDoc_STRVAR(Journal_log_level__doc__, -"log_level(level) -> None\n\n" -"Sets maximum log level by setting matches for PRIORITY."); -static PyObject * -Journal_log_level(Journal *self, PyObject *args) -{ - int level; - if (! PyArg_ParseTuple(args, "i", &level)) - return NULL; - - if (level < 0 || level > 7) { - PyErr_SetString(PyExc_ValueError, "Log level should be 0 <= level <= 7"); - return NULL; - } - int i; - char level_str[2]; - PyObject *arg, *keywds; - for(i = 0; i <= level; i++) { - sprintf(level_str, "%i", i); - arg = PyTuple_New(0); - keywds = Py_BuildValue("{s:s}", "PRIORITY", level_str); - Journal_add_match(self, arg, keywds); - Py_DECREF(arg); - Py_DECREF(keywds); - if (PyErr_Occurred()) - return NULL; - } - Py_RETURN_NONE; -} - PyDoc_STRVAR(Journal_this_boot__doc__, "this_boot() -> None\n\n" "Sets match filter for the current _BOOT_ID."); @@ -848,8 +818,6 @@ static PyMethodDef Journal_methods[] = { {"query_unique", (PyCFunction)Journal_query_unique, METH_VARARGS, Journal_query_unique__doc__}, #endif - {"log_level", (PyCFunction)Journal_log_level, METH_VARARGS, - Journal_log_level__doc__}, {"this_boot", (PyCFunction)Journal_this_boot, METH_NOARGS, Journal_this_boot__doc__}, {"this_machine", (PyCFunction)Journal_this_machine, METH_NOARGS, diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 8a688f978b..40e40c360b 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -115,6 +115,14 @@ class Journal(_Journal): return set(self._convert_field(key, value) for value in super(Journal, self).query_unique(key, *args, **kwargs)) + def log_level(self, level): + """Sets maximum log level by setting matches for PRIORITY.""" + if 0 <= level <= 7: + for i in range(level+1): + self.add_match(PRIORITY="%s" % i) + else: + raise ValueError("Log level must be 0 <= level <= 7") + def _make_line(field, value): if isinstance(value, bytes): return field.encode('utf-8') + b'=' + value -- cgit v1.2.1 From 6a71de70e5f5a244b656d9ccb373cc7241033e15 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Fri, 15 Feb 2013 17:16:56 +0000 Subject: systemd-python: implement this_boot/this_machine in Python --- src/python-systemd/_reader.c | 68 ------------------------------------------- src/python-systemd/journal.py | 9 ++++++ 2 files changed, 9 insertions(+), 68 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index ce6631782f..06bdf1694e 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -671,70 +671,6 @@ Journal_query_unique(Journal *self, PyObject *args) } #endif //def SD_JOURNAL_FOREACH_UNIQUE -PyDoc_STRVAR(Journal_this_boot__doc__, -"this_boot() -> None\n\n" -"Sets match filter for the current _BOOT_ID."); -static PyObject * -Journal_this_boot(Journal *self, PyObject *args) -{ - sd_id128_t sd_id; - int r; - r = sd_id128_get_boot(&sd_id); - if (r == -EIO) { - PyErr_SetString(PyExc_IOError, "Error getting current boot ID"); - return NULL; - } else if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error getting current boot ID"); - return NULL; - } - - char bootid[33]; - sd_id128_to_string(sd_id, bootid); - - PyObject *arg, *keywds; - arg = PyTuple_New(0); - keywds = Py_BuildValue("{s:s}", "_BOOT_ID", bootid); - Journal_add_match(self, arg, keywds); - Py_DECREF(arg); - Py_DECREF(keywds); - if (PyErr_Occurred()) - return NULL; - - Py_RETURN_NONE; -} - -PyDoc_STRVAR(Journal_this_machine__doc__, -"this_machine() -> None\n\n" -"Sets match filter for the current _MACHINE_ID."); -static PyObject * -Journal_this_machine(Journal *self, PyObject *args) -{ - sd_id128_t sd_id; - int r; - r = sd_id128_get_machine(&sd_id); - if (r == -EIO) { - PyErr_SetString(PyExc_IOError, "Error getting current boot ID"); - return NULL; - } else if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error getting current boot ID"); - return NULL; - } - - char machineid[33]; - sd_id128_to_string(sd_id, machineid); - - PyObject *arg, *keywds; - arg = PyTuple_New(0); - keywds = Py_BuildValue("{s:s}", "_MACHINE_ID", machineid); - Journal_add_match(self, arg, keywds); - Py_DECREF(arg); - Py_DECREF(keywds); - if (PyErr_Occurred()) - return NULL; - - Py_RETURN_NONE; -} - static PyObject * Journal_get_data_threshold(Journal *self, void *closure) { @@ -818,10 +754,6 @@ static PyMethodDef Journal_methods[] = { {"query_unique", (PyCFunction)Journal_query_unique, METH_VARARGS, Journal_query_unique__doc__}, #endif - {"this_boot", (PyCFunction)Journal_this_boot, METH_NOARGS, - Journal_this_boot__doc__}, - {"this_machine", (PyCFunction)Journal_this_machine, METH_NOARGS, - Journal_this_machine__doc__}, {NULL} /* Sentinel */ }; diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 40e40c360b..533a8754a4 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -31,6 +31,7 @@ from syslog import (LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, from ._journal import sendv, stream_fd from ._reader import (_Journal, NOP, APPEND, INVALIDATE, LOCAL_ONLY, RUNTIME_ONLY, SYSTEM_ONLY) +from . import id128 as _id128 _MONOTONIC_CONVERTER = lambda x: datetime.timedelta(microseconds=float(x)) _REALTIME_CONVERTER = lambda x: datetime.datetime.fromtimestamp(float(x)/1E6) @@ -123,6 +124,14 @@ class Journal(_Journal): else: raise ValueError("Log level must be 0 <= level <= 7") + def this_boot(self): + """Add match for _BOOT_ID equal to current boot ID.""" + self.add_match(_BOOT_ID=_id128.get_boot().hex) + + def this_machine(self): + """Add match for _MACHINE_ID equal to the ID of this machine.""" + self.add_match(_MACHINE_ID=_id128.get_machine().hex) + def _make_line(field, value): if isinstance(value, bytes): return field.encode('utf-8') + b'=' + value -- cgit v1.2.1 From bf1ced5503bf02fa8c18f0089f4cf74a5456c3c9 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sat, 16 Feb 2013 13:40:44 +0000 Subject: systemd-python: some python3 and bug fixes --- src/python-systemd/_reader.c | 19 ++++++++++++------- src/python-systemd/journal.py | 11 +++++++++-- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 06bdf1694e..ae3d77cfe9 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -383,7 +383,7 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) &offset, &whence)) return NULL; - PyObject *arg; + PyObject *result=NULL; if (whence == SEEK_SET){ int r; Py_BEGIN_ALLOW_THREADS @@ -394,10 +394,10 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) return NULL; } if (offset > 0LL) { - Py_DECREF(PyObject_CallMethod((PyObject *)self, "get_next", "L", offset)); + result = PyObject_CallMethod((PyObject *)self, "get_next", "L", offset); } }else if (whence == SEEK_CUR){ - Py_DECREF(PyObject_CallMethod((PyObject *)self, "get_next", "L", offset)); + result = PyObject_CallMethod((PyObject *)self, "get_next", "L", offset); }else if (whence == SEEK_END){ int r; Py_BEGIN_ALLOW_THREADS @@ -407,14 +407,19 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) PyErr_SetString(PyExc_RuntimeError, "Error seeking to tail"); return NULL; } - Py_DECREF(PyObject_CallMethod((PyObject *)self, "get_next", "L", -1LL)); if (offset < 0LL) { - Py_DECREF(PyObject_CallMethod((PyObject *)self, "get_next", "L", offset)); + result = PyObject_CallMethod((PyObject *)self, "get_next", "L", offset); + }else{ + result = PyObject_CallMethod((PyObject *)self, "get_next", "L", -1LL); } }else{ PyErr_SetString(PyExc_ValueError, "Invalid value for whence"); - return NULL; } + + if (result) + Py_DECREF(result); + if (PyErr_Occurred()) + return NULL; Py_RETURN_NONE; } @@ -607,7 +612,7 @@ Journal_iter(PyObject *self) static PyObject * Journal_iternext(PyObject *self) { - PyObject *dict, *arg; + PyObject *dict; Py_ssize_t dict_size; dict = PyObject_CallMethod(self, "get_next", ""); diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 533a8754a4..6e82a460b5 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -26,6 +26,8 @@ import uuid import traceback as _traceback import os as _os import logging as _logging +if sys.version_info >= (3,): + from collections import ChainMap from syslog import (LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG) from ._journal import sendv, stream_fd @@ -90,7 +92,7 @@ class Journal(_Journal): def _convert_field(self, key, value): try: result = self.converters[key](value) - except KeyError: + except: # Default conversion in unicode try: result = _convert_unicode(value) @@ -101,13 +103,18 @@ class Journal(_Journal): def _convert_entry(self, entry): result = {} - for key, value in entry.iteritems(): + for key, value in entry.items(): if isinstance(value, list): result[key] = [self._convert_field(key, val) for val in value] else: result[key] = self._convert_field(key, value) return result + def add_match(self, *args, **kwargs): + args = list(args) + args.extend(_make_line(key, val) for key, val in kwargs.items()) + super(Journal, self).add_match(*args) + def get_next(self, *args, **kwargs): return self._convert_entry( super(Journal, self).get_next(*args, **kwargs)) -- cgit v1.2.1 From 71766afa2d80ffe1b03c410f6d5ffdc140883314 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sat, 16 Feb 2013 17:29:57 +0000 Subject: systemd-python: Tidy up _reader error handling --- src/python-systemd/_reader.c | 140 +++++++++++++++++++++--------------------- src/python-systemd/journal.py | 8 +-- 2 files changed, 75 insertions(+), 73 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index ae3d77cfe9..5d743eb562 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -54,28 +54,26 @@ Journal_init(Journal *self, PyObject *args, PyObject *keywds) int flags=SD_JOURNAL_LOCAL_ONLY; char *path=NULL; - static char *kwlist[] = {"flags", NULL}; + static char *kwlist[] = {"flags", "path", NULL}; if (! PyArg_ParseTupleAndKeywords(args, keywds, "|is", kwlist, &flags, &path)) return 1; int r; + Py_BEGIN_ALLOW_THREADS if (path) { r = sd_journal_open_directory(&self->j, path, 0); }else{ - Py_BEGIN_ALLOW_THREADS r = sd_journal_open(&self->j, flags); - Py_END_ALLOW_THREADS } - if (r == -EINVAL) { - PyErr_SetString(PyExc_ValueError, "Invalid flags or path"); + Py_END_ALLOW_THREADS + if (r < 0) { + errno = -r; + PyObject *errtype = r == -EINVAL ? PyExc_ValueError : + r == -ENOMEM ? PyExc_MemoryError : + PyExc_OSError; + PyErr_SetFromErrnoWithFilename(errtype, path); return -1; - }else if (r == -ENOMEM) { - PyErr_SetString(PyExc_MemoryError, "Not enough memory"); - return 1; - }else if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error opening journal"); - return 1; } return 0; @@ -92,30 +90,27 @@ Journal_get_next(Journal *self, PyObject *args) if (! PyArg_ParseTuple(args, "|L", &skip)) return NULL; + if (skip == 0LL) { + PyErr_SetString(PyExc_ValueError, "Skip number must positive/negative integer"); + return NULL; + } + int r; + Py_BEGIN_ALLOW_THREADS if (skip == 1LL) { - Py_BEGIN_ALLOW_THREADS r = sd_journal_next(self->j); - Py_END_ALLOW_THREADS }else if (skip == -1LL) { - Py_BEGIN_ALLOW_THREADS r = sd_journal_previous(self->j); - Py_END_ALLOW_THREADS }else if (skip > 1LL) { - Py_BEGIN_ALLOW_THREADS r = sd_journal_next_skip(self->j, skip); - Py_END_ALLOW_THREADS }else if (skip < -1LL) { - Py_BEGIN_ALLOW_THREADS r = sd_journal_previous_skip(self->j, -skip); - Py_END_ALLOW_THREADS - }else{ - PyErr_SetString(PyExc_ValueError, "Skip number must positive/negative integer"); - return NULL; } + Py_END_ALLOW_THREADS if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error getting next message"); + errno = -r; + PyErr_SetFromErrno(PyExc_OSError); return NULL; }else if ( r == 0) { //EOF return PyDict_New(); @@ -256,14 +251,12 @@ Journal_add_match(Journal *self, PyObject *args, PyObject *keywds) if (PyErr_Occurred()) return NULL; r = sd_journal_add_match(self->j, arg_match, arg_match_len); - if (r == -EINVAL) { - PyErr_SetString(PyExc_ValueError, "Invalid match"); - return NULL; - }else if (r == -ENOMEM) { - PyErr_SetString(PyExc_MemoryError, "Not enough memory"); - return NULL; - }else if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error adding match"); + if (r < 0) { + errno = -r; + PyObject *errtype = r == -EINVAL ? PyExc_ValueError : + r == -ENOMEM ? PyExc_MemoryError : + PyExc_OSError; + PyErr_SetFromErrno(errtype); return NULL; } } @@ -345,11 +338,11 @@ Journal_add_disjunction(Journal *self, PyObject *args) { int r; r = sd_journal_add_disjunction(self->j); - if (r == -ENOMEM) { - PyErr_SetString(PyExc_MemoryError, "Not enough memory"); - return NULL; - }else if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error adding disjunction"); + if (r < 0) { + errno = -r; + PyObject *errtype = r == -ENOMEM ? PyExc_MemoryError : + PyExc_OSError; + PyErr_SetFromErrno(errtype); return NULL; } Py_RETURN_NONE; @@ -390,7 +383,8 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) r = sd_journal_seek_head(self->j); Py_END_ALLOW_THREADS if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error seeking to head"); + errno = -r; + PyErr_SetFromErrno(PyExc_OSError); return NULL; } if (offset > 0LL) { @@ -404,7 +398,8 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) r = sd_journal_seek_tail(self->j); Py_END_ALLOW_THREADS if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error seeking to tail"); + errno = -r; + PyErr_SetFromErrno(PyExc_OSError); return NULL; } if (offset < 0LL) { @@ -467,7 +462,8 @@ Journal_seek_realtime(Journal *self, PyObject *args) r = sd_journal_seek_realtime_usec(self->j, timestamp); Py_END_ALLOW_THREADS if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error seek to time"); + errno = -r; + PyErr_SetFromErrno(PyExc_OSError); return NULL; } Py_RETURN_NONE; @@ -517,8 +513,9 @@ Journal_seek_monotonic(Journal *self, PyObject *args) if (r == -EINVAL) { PyErr_SetString(PyExc_ValueError, "Invalid bootid"); return NULL; - } else if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error processing bootid"); + }else if (r < 0) { + errno = -r; + PyErr_SetFromErrno(PyExc_OSError); return NULL; } }else{ @@ -526,8 +523,9 @@ Journal_seek_monotonic(Journal *self, PyObject *args) if (r == -EIO) { PyErr_SetString(PyExc_IOError, "Error getting current boot ID"); return NULL; - } else if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error getting current boot ID"); + }else if (r < 0) { + errno = -r; + PyErr_SetFromErrno(PyExc_OSError); return NULL; } } @@ -536,7 +534,8 @@ Journal_seek_monotonic(Journal *self, PyObject *args) r = sd_journal_seek_monotonic_usec(self->j, sd_id, timestamp); Py_END_ALLOW_THREADS if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error seek to time"); + errno = -r; + PyErr_SetFromErrno(PyExc_OSError); return NULL; } Py_RETURN_NONE; @@ -559,14 +558,19 @@ Journal_wait(Journal *self, PyObject *args, PyObject *keywds) return NULL; int r; + Py_BEGIN_ALLOW_THREADS if ( timeout == 0LL) { - Py_BEGIN_ALLOW_THREADS r = sd_journal_wait(self->j, (uint64_t) -1); - Py_END_ALLOW_THREADS }else{ - Py_BEGIN_ALLOW_THREADS r = sd_journal_wait(self->j, timeout * 1E6); - Py_END_ALLOW_THREADS + } + Py_END_ALLOW_THREADS + if (r < 0) { + errno = -r; + PyObject *errtype = r == -ENOMEM ? PyExc_MemoryError : + PyExc_OSError; + PyErr_SetFromErrno(errtype); + return NULL; } #if PY_MAJOR_VERSION >=3 return PyLong_FromLong(r); @@ -589,14 +593,12 @@ Journal_seek_cursor(Journal *self, PyObject *args) Py_BEGIN_ALLOW_THREADS r = sd_journal_seek_cursor(self->j, cursor); Py_END_ALLOW_THREADS - if (r == -EINVAL) { - PyErr_SetString(PyExc_ValueError, "Invalid cursor"); - return NULL; - }else if (r == -ENOMEM) { - PyErr_SetString(PyExc_MemoryError, "Not enough memory"); - return NULL; - }else if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error seeking to cursor"); + if (r < 0) { + errno = -r; + PyObject *errtype = r == -EINVAL ? PyExc_ValueError : + r == -ENOMEM ? PyExc_MemoryError : + PyExc_OSError; + PyErr_SetFromErrno(errtype); return NULL; } Py_RETURN_NONE; @@ -642,14 +644,12 @@ Journal_query_unique(Journal *self, PyObject *args) Py_BEGIN_ALLOW_THREADS r = sd_journal_query_unique(self->j, query); Py_END_ALLOW_THREADS - if (r == -EINVAL) { - PyErr_SetString(PyExc_ValueError, "Invalid field name"); - return NULL; - } else if (r == -ENOMEM) { - PyErr_SetString(PyExc_MemoryError, "Not enough memory"); - return NULL; - } else if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error querying journal"); + if (r < 0) { + errno = -r; + PyObject *errtype = r == -EINVAL ? PyExc_ValueError : + r == -ENOMEM ? PyExc_MemoryError : + PyExc_OSError; + PyErr_SetFromErrno(errtype); return NULL; } @@ -684,8 +684,9 @@ Journal_get_data_threshold(Journal *self, void *closure) int r; r = sd_journal_get_data_threshold(self->j, &cvalue); - if (r < 0){ - PyErr_SetString(PyExc_RuntimeError, "Error getting data threshold"); + if (r < 0) { + errno = -r; + PyErr_SetFromErrno(PyExc_OSError); return NULL; } @@ -718,9 +719,10 @@ Journal_set_data_threshold(Journal *self, PyObject *value, void *closure) #else r = sd_journal_set_data_threshold(self->j, (size_t) PyInt_AsLong(value)); #endif - if (r < 0){ - PyErr_SetString(PyExc_RuntimeError, "Error setting data threshold"); - return -1; + if (r < 0) { + errno = -r; + PyErr_SetFromErrno(PyExc_OSError); + return NULL; } return 0; } diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 6e82a460b5..db35ba2005 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -115,13 +115,13 @@ class Journal(_Journal): args.extend(_make_line(key, val) for key, val in kwargs.items()) super(Journal, self).add_match(*args) - def get_next(self, *args, **kwargs): + def get_next(self, skip=1): return self._convert_entry( - super(Journal, self).get_next(*args, **kwargs)) + super(Journal, self).get_next(skip)) - def query_unique(self, key, *args, **kwargs): + def query_unique(self, key): return set(self._convert_field(key, value) - for value in super(Journal, self).query_unique(key, *args, **kwargs)) + for value in super(Journal, self).query_unique(key)) def log_level(self, level): """Sets maximum log level by setting matches for PRIORITY.""" -- cgit v1.2.1 From 7a1b9cd5e43c85a3b1f22a0151ac5b6340fb0d0f Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sat, 16 Feb 2013 17:31:18 +0000 Subject: systemd-python: Moved _reader datetime usage to python --- src/python-systemd/_reader.c | 52 +++++++------------------------------------ src/python-systemd/journal.py | 10 +++++++++ 2 files changed, 18 insertions(+), 44 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 5d743eb562..f1c3175bbf 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -426,34 +426,12 @@ PyDoc_STRVAR(Journal_seek_realtime__doc__, static PyObject * Journal_seek_realtime(Journal *self, PyObject *args) { - PyObject *arg; - if (! PyArg_ParseTuple(args, "O", &arg)) + uint64_t timestamp; + if (! PyArg_ParseTuple(args, "K", ×tamp)) return NULL; - uint64_t timestamp=-1LL; - if (PyDateTime_Check(arg)) { - PyObject *temp; - char *timestamp_str; - temp = PyObject_CallMethod(arg, "strftime", "s", "%s%f"); -#if PY_MAJOR_VERSION >=3 - PyObject *temp2; - temp2 = PyUnicode_AsUTF8String(temp); - timestamp_str = PyBytes_AsString(temp2); - Py_DECREF(temp2); -#else - timestamp_str = PyString_AsString(temp); -#endif - Py_DECREF(temp); - timestamp = strtoull(timestamp_str, NULL, 10); - }else if (PyLong_Check(arg)) { - timestamp = PyLong_AsUnsignedLongLong(arg); -#if PY_MAJOR_VERSION <3 - }else if (PyInt_Check(arg)) { - timestamp = PyInt_AsUnsignedLongLongMask(arg); -#endif - } if ((int64_t) timestamp < 0LL) { - PyErr_SetString(PyExc_ValueError, "Time must be positive integer or datetime instance"); + PyErr_SetString(PyExc_ValueError, "Time must be positive integer"); return NULL; } @@ -479,30 +457,16 @@ PyDoc_STRVAR(Journal_seek_monotonic__doc__, static PyObject * Journal_seek_monotonic(Journal *self, PyObject *args) { - PyObject *arg; + double timedouble; char *bootid=NULL; - if (! PyArg_ParseTuple(args, "O|s", &arg, &bootid)) + if (! PyArg_ParseTuple(args, "d|z", &timedouble, &bootid)) return NULL; - uint64_t timestamp=-1LL; - if PyDelta_Check(arg) { - PyObject *temp; - temp = PyObject_CallMethod(arg, "total_seconds", NULL); - timestamp = (uint64_t) (PyFloat_AsDouble(temp) * 1E6); - Py_DECREF(temp); - }else if (PyFloat_Check(arg)) { - timestamp = (uint64_t) (PyFloat_AsDouble(arg) * 1E6); - }else if (PyLong_Check(arg)) { - timestamp = PyLong_AsUnsignedLongLong(arg) * (uint64_t) 1E6; -#if PY_MAJOR_VERSION <3 - }else if (PyInt_Check(arg)) { - timestamp = PyInt_AsUnsignedLongLongMask(arg) * (uint64_t) 1E6; -#endif - - } + uint64_t timestamp; + timestamp = (uint64_t) (timedouble * 1.0E6); if ((int64_t) timestamp < 0LL) { - PyErr_SetString(PyExc_ValueError, "Time must be positive number or timedelta instance"); + PyErr_SetString(PyExc_ValueError, "Time must be positive number"); return NULL; } diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index db35ba2005..46affcee00 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -123,6 +123,16 @@ class Journal(_Journal): return set(self._convert_field(key, value) for value in super(Journal, self).query_unique(key)) + def seek_realtime(self, timestamp): + if isinstance(timestamp, datetime.datetime): + timestamp = int(timestamp.strftime("%s%f")) + return super(Journal, self).seek_realtime(timestamp) + + def seek_monotonic(self, timestamp, bootid=None): + if isinstance(timestamp, datetime.timedelta): + timestamp = timestamp.totalseconds() + return super(Journal, self).seek_monotonic(timestamp, bootid) + def log_level(self, level): """Sets maximum log level by setting matches for PRIORITY.""" if 0 <= level <= 7: -- cgit v1.2.1 From d2dd0265b5140ce849cfc3821ad595df2d4c9eb7 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sat, 16 Feb 2013 17:32:05 +0000 Subject: systemd-python: updated _reader header to standard license --- src/python-systemd/_reader.c | 38 ++++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index f1c3175bbf..9d7ce2da27 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -1,21 +1,23 @@ -/* -_reader - Python module that reads systemd journal similar to journalctl -Copyright (C) 2012 Steven Hiscocks - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -*/ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Steven Hiscocks, Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ #include #include -- cgit v1.2.1 From a49f4d17bfc50c5864b992e2410a41f96286afc1 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sat, 16 Feb 2013 18:23:24 +0000 Subject: systemd-python: correct data_threshold error return value --- src/python-systemd/_reader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 9d7ce2da27..d2f738b9c7 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -688,7 +688,7 @@ Journal_set_data_threshold(Journal *self, PyObject *value, void *closure) if (r < 0) { errno = -r; PyErr_SetFromErrno(PyExc_OSError); - return NULL; + return -1; } return 0; } -- cgit v1.2.1 From 5bb2b8d5e40eadde6ab9cc2941d2395c93e2a545 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sat, 16 Feb 2013 18:53:52 +0000 Subject: systemd-python: _reader add_match takes single string python code now takes care of multiple matches --- src/python-systemd/_reader.c | 112 +++++------------------------------------- src/python-systemd/journal.py | 3 +- 2 files changed, 15 insertions(+), 100 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index d2f738b9c7..8f21678c81 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -97,7 +97,7 @@ Journal_get_next(Journal *self, PyObject *args) return NULL; } - int r; + int r = -EINVAL; Py_BEGIN_ALLOW_THREADS if (skip == 1LL) { r = sd_journal_next(self->j); @@ -226,106 +226,20 @@ PyDoc_STRVAR(Journal_add_match__doc__, static PyObject * Journal_add_match(Journal *self, PyObject *args, PyObject *keywds) { - Py_ssize_t arg_match_len; - char *arg_match; - int i, r; - for (i = 0; i < PySequence_Size(args); i++) { -#if PY_MAJOR_VERSION >=3 - PyObject *arg; - arg = PySequence_Fast_GET_ITEM(args, i); - if (PyUnicode_Check(arg)) { -#if PY_MINOR_VERSION >=3 - arg_match = PyUnicode_AsUTF8AndSize(arg, &arg_match_len); -#else - PyObject *temp; - temp = PyUnicode_AsUTF8String(arg); - PyBytes_AsStringAndSize(temp, &arg_match, &arg_match_len); - Py_DECREF(temp); -#endif - }else if (PyBytes_Check(arg)) { - PyBytes_AsStringAndSize(arg, &arg_match, &arg_match_len); - }else{ - PyErr_SetString(PyExc_TypeError, "expected bytes or string"); - } -#else - PyString_AsStringAndSize(PySequence_Fast_GET_ITEM(args, i), &arg_match, &arg_match_len); -#endif - if (PyErr_Occurred()) - return NULL; - r = sd_journal_add_match(self->j, arg_match, arg_match_len); - if (r < 0) { - errno = -r; - PyObject *errtype = r == -EINVAL ? PyExc_ValueError : - r == -ENOMEM ? PyExc_MemoryError : - PyExc_OSError; - PyErr_SetFromErrno(errtype); - return NULL; - } - } - - if (! keywds) - Py_RETURN_NONE; - - PyObject *key, *value; - Py_ssize_t pos=0, match_key_len, match_value_len; + char *match; int match_len; - char *match_key, *match_value; - void *match; - while (PyDict_Next(keywds, &pos, &key, &value)) { -#if PY_MAJOR_VERSION >=3 - if (PyUnicode_Check(key)) { -#if PY_MINOR_VERSION >=3 - match_key = PyUnicode_AsUTF8AndSize(key, &match_key_len); -#else - PyObject *temp2; - temp2 = PyUnicode_AsUTF8String(key); - PyBytes_AsStringAndSize(temp2, &match_key, &match_key_len); - Py_DECREF(temp2); -#endif - }else if (PyBytes_Check(key)) { - PyBytes_AsStringAndSize(key, &match_key, &match_key_len); - }else{ - PyErr_SetString(PyExc_TypeError, "expected bytes or string"); - } - if (PyUnicode_Check(value)) { -#if PY_MINOR_VERSION >=3 - match_value = PyUnicode_AsUTF8AndSize(value, &match_value_len); -#else - PyObject *temp3; - temp3 = PyUnicode_AsUTF8String(value); - PyBytes_AsStringAndSize(temp3, &match_value, &match_value_len); - Py_DECREF(temp3); -#endif - }else if (PyBytes_Check(value)) { - PyBytes_AsStringAndSize(value, &match_value, &match_value_len); - }else{ - PyErr_SetString(PyExc_TypeError, "expected bytes or string"); - } -#else - PyString_AsStringAndSize(key, &match_key, &match_key_len); - PyString_AsStringAndSize(value, &match_value, &match_value_len); -#endif - if (PyErr_Occurred()) - return NULL; - - match_len = match_key_len + 1 + match_value_len; - match = malloc(match_len); - memcpy(match, match_key, match_key_len); - memcpy(match + match_key_len, "=", 1); - memcpy(match + match_key_len + 1, match_value, match_value_len); + if (! PyArg_ParseTuple(args, "s#", &match, &match_len)) + return NULL; - r = sd_journal_add_match(self->j, match, match_len); - free(match); - if (r == -EINVAL) { - PyErr_SetString(PyExc_ValueError, "Invalid match"); - return NULL; - }else if (r == -ENOMEM) { - PyErr_SetString(PyExc_MemoryError, "Not enough memory"); - return NULL; - }else if (r < 0) { - PyErr_SetString(PyExc_RuntimeError, "Error adding match"); - return NULL; - } + int r; + r = sd_journal_add_match(self->j, match, match_len); + if (r < 0) { + errno = -r; + PyObject *errtype = r == -EINVAL ? PyExc_ValueError : + r == -ENOMEM ? PyExc_MemoryError : + PyExc_OSError; + PyErr_SetFromErrno(errtype); + return NULL; } Py_RETURN_NONE; diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 46affcee00..279662e6a6 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -113,7 +113,8 @@ class Journal(_Journal): def add_match(self, *args, **kwargs): args = list(args) args.extend(_make_line(key, val) for key, val in kwargs.items()) - super(Journal, self).add_match(*args) + for arg in args: + super(Journal, self).add_match(arg) def get_next(self, skip=1): return self._convert_entry( -- cgit v1.2.1 From 83718af6f59fb3a6359c8da1f8bc8b8fd8799106 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sat, 16 Feb 2013 19:06:46 +0000 Subject: systemd-python: Update _reader docstrings --- src/python-systemd/_reader.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 8f21678c81..7aa638b076 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -217,12 +217,11 @@ Journal_get_previous(Journal *self, PyObject *args) } PyDoc_STRVAR(Journal_add_match__doc__, -"add_match(match, ..., field=value, ...) -> None\n\n" +"add_match(match) -> None\n\n" "Add a match to filter journal log entries. All matches of different\n" -"field are combined in logical AND, and matches of the same field\n" +"fields are combined in logical AND, and matches of the same field\n" "are automatically combined in logical OR.\n" -"Matches can be passed as strings \"field=value\", or keyword\n" -"arguments field=\"value\"."); +"Match is string of form \"field=value\"."); static PyObject * Journal_add_match(Journal *self, PyObject *args, PyObject *keywds) { @@ -337,8 +336,7 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) PyDoc_STRVAR(Journal_seek_realtime__doc__, "seek_realtime(realtime) -> None\n\n" "Seek to nearest matching journal entry to `realtime`. Argument\n" -"`realtime` can be an integer unix timestamp in usecs or a " -"datetime instance."); +"`realtime` can must be an integer unix timestamp in usecs."); static PyObject * Journal_seek_realtime(Journal *self, PyObject *args) { @@ -366,8 +364,7 @@ Journal_seek_realtime(Journal *self, PyObject *args) PyDoc_STRVAR(Journal_seek_monotonic__doc__, "seek_monotonic(monotonic[, bootid]) -> None\n\n" "Seek to nearest matching journal entry to `monotonic`. Argument\n" -"`monotonic` is an timestamp from boot in secs, or a\n" -"timedelta instance.\n" +"`monotonic` is an timestamp from boot in seconds.\n" "Argument `bootid` is a string representing which boot the\n" "monotonic time is reference to. Defaults to current bootid."); static PyObject * -- cgit v1.2.1 From 518dc5dff557116db3f072eb9d0a9492b6226778 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sat, 16 Feb 2013 19:10:49 +0000 Subject: systemd-python: _reader now takes unix timestamp in seconds --- src/python-systemd/_reader.c | 9 ++++++--- src/python-systemd/journal.py | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 7aa638b076..95e6094162 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -336,14 +336,17 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) PyDoc_STRVAR(Journal_seek_realtime__doc__, "seek_realtime(realtime) -> None\n\n" "Seek to nearest matching journal entry to `realtime`. Argument\n" -"`realtime` can must be an integer unix timestamp in usecs."); +"`realtime` can must be an integer unix timestamp."); static PyObject * Journal_seek_realtime(Journal *self, PyObject *args) { - uint64_t timestamp; - if (! PyArg_ParseTuple(args, "K", ×tamp)) + double timedouble; + if (! PyArg_ParseTuple(args, "d", &timedouble)) return NULL; + uint64_t timestamp; + timestamp = (uint64_t) (timedouble * 1.0E6); + if ((int64_t) timestamp < 0LL) { PyErr_SetString(PyExc_ValueError, "Time must be positive integer"); return NULL; diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 279662e6a6..ab8661e987 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -126,7 +126,7 @@ class Journal(_Journal): def seek_realtime(self, timestamp): if isinstance(timestamp, datetime.datetime): - timestamp = int(timestamp.strftime("%s%f")) + timestamp = float(timestamp.strftime("%s.%f")) return super(Journal, self).seek_realtime(timestamp) def seek_monotonic(self, timestamp, bootid=None): -- cgit v1.2.1 From dd37d563ba236cb0ae583d73e02e9e093084e2e5 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sat, 16 Feb 2013 19:16:09 +0000 Subject: systemd-python: remove unneeded ifdef for query_unique --- src/python-systemd/_reader.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 95e6094162..c16cbdcd76 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -508,7 +508,6 @@ Journal_iternext(PyObject *self) } } -#ifdef SD_JOURNAL_FOREACH_UNIQUE PyDoc_STRVAR(Journal_query_unique__doc__, "query_unique(field) -> a set of values\n\n" "Returns a set of unique values in journal for given `field`.\n" @@ -554,7 +553,6 @@ Journal_query_unique(Journal *self, PyObject *args) Py_DECREF(key); return value_set; } -#endif //def SD_JOURNAL_FOREACH_UNIQUE static PyObject * Journal_get_data_threshold(Journal *self, void *closure) @@ -637,10 +635,8 @@ static PyMethodDef Journal_methods[] = { Journal_wait__doc__}, {"seek_cursor", (PyCFunction)Journal_seek_cursor, METH_VARARGS, Journal_seek_cursor__doc__}, -#ifdef SD_JOURNAL_FOREACH_UNIQUE {"query_unique", (PyCFunction)Journal_query_unique, METH_VARARGS, Journal_query_unique__doc__}, -#endif {NULL} /* Sentinel */ }; -- cgit v1.2.1 From 301ae164b7478ee1f153ddd529093dcf0e61933d Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sun, 17 Feb 2013 11:48:13 +0000 Subject: systemd-python: Journal this_boot/machine now accepts ID --- src/python-systemd/journal.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index ab8661e987..60c8111d23 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -142,13 +142,28 @@ class Journal(_Journal): else: raise ValueError("Log level must be 0 <= level <= 7") - def this_boot(self): - """Add match for _BOOT_ID equal to current boot ID.""" - self.add_match(_BOOT_ID=_id128.get_boot().hex) + def this_boot(self, bootid=None): + """Add match for _BOOT_ID equal to current boot ID or the specified boot ID. + + bootid should be either a UUID or a 32 digit hex number. + """ + if bootid is None: + bootid = _id128.get_boot().hex + else: + bootid = getattr(bootid, 'hex', bootid) + self.add_match(_BOOT_ID=bootid) + + def this_machine(self, machineid=None): + """Add match for _MACHINE_ID equal to the ID of this machine. + + bootid should be either a UUID or a 32 digit hex number. + """ + if machineid is None: + machineid = _id128.get_machine().hex + else: + machineid = getattr(machineid, 'hex', machineid) + self.add_match(_MACHINE_ID=machineid) - def this_machine(self): - """Add match for _MACHINE_ID equal to the ID of this machine.""" - self.add_match(_MACHINE_ID=_id128.get_machine().hex) def _make_line(field, value): if isinstance(value, bytes): -- cgit v1.2.1 From b835982344834085a47254f0cd8cc437b7678719 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sun, 17 Feb 2013 11:53:09 +0000 Subject: systemd-python: tidy up import names in journal --- src/python-systemd/_reader.c | 2 +- src/python-systemd/journal.py | 30 +++++++++++++++++------------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index c16cbdcd76..481da245e9 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -642,7 +642,7 @@ static PyMethodDef Journal_methods[] = { static PyTypeObject JournalType = { PyVarObject_HEAD_INIT(NULL, 0) - "_reader.Journal", /*tp_name*/ + "_reader._Journal", /*tp_name*/ sizeof(Journal), /*tp_basicsize*/ 0, /*tp_itemsize*/ (destructor)Journal_dealloc, /*tp_dealloc*/ diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 60c8111d23..a50922ca3d 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -19,14 +19,15 @@ # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see . -import datetime -import functools -import sys -import uuid +import sys as _sys +import datetime as _datetime +import functools as _functools +import uuid as _uuid import traceback as _traceback import os as _os +from os import SEEK_SET, SEEK_CUR, SEEK_END import logging as _logging -if sys.version_info >= (3,): +if _sys.version_info >= (3,): from collections import ChainMap from syslog import (LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG) @@ -35,10 +36,12 @@ from ._reader import (_Journal, NOP, APPEND, INVALIDATE, LOCAL_ONLY, RUNTIME_ONLY, SYSTEM_ONLY) from . import id128 as _id128 -_MONOTONIC_CONVERTER = lambda x: datetime.timedelta(microseconds=float(x)) -_REALTIME_CONVERTER = lambda x: datetime.datetime.fromtimestamp(float(x)/1E6) +_MONOTONIC_CONVERTER = lambda x: _datetime.timedelta(microseconds=float(x)) +_REALTIME_CONVERTER = lambda x: _datetime.datetime.fromtimestamp(float(x)/1E6) DEFAULT_CONVERTERS = { - 'MESSAGE_ID': uuid.UUID, + 'MESSAGE_ID': _uuid.UUID, + '_MACHINE_ID': _uuid.UUID, + '_BOOT_ID': _uuid.UUID, 'PRIORITY': int, 'LEADER': int, 'SESSION_ID': int, @@ -70,15 +73,16 @@ DEFAULT_CONVERTERS = { 'COREDUMP_TIMESTAMP': _REALTIME_CONVERTER, } -if sys.version_info >= (3,): - _convert_unicode = functools.partial(str, encoding='utf-8') +if _sys.version_info >= (3,): + _convert_unicode = _functools.partial(str, encoding='utf-8') else: - _convert_unicode = functools.partial(unicode, encoding='utf-8') + _convert_unicode = _functools.partial(unicode, encoding='utf-8') class Journal(_Journal): def __init__(self, converters=None, *args, **kwargs): super(Journal, self).__init__(*args, **kwargs) if sys.version_info >= (3,3): + if _sys.version_info >= (3,3): self.converters = ChainMap() if converters is not None: self.converters.maps.append(converters) @@ -125,12 +129,12 @@ class Journal(_Journal): for value in super(Journal, self).query_unique(key)) def seek_realtime(self, timestamp): - if isinstance(timestamp, datetime.datetime): + if isinstance(realtime, _datetime.datetime): timestamp = float(timestamp.strftime("%s.%f")) return super(Journal, self).seek_realtime(timestamp) def seek_monotonic(self, timestamp, bootid=None): - if isinstance(timestamp, datetime.timedelta): + if isinstance(monotonic, _datetime.timedelta): timestamp = timestamp.totalseconds() return super(Journal, self).seek_monotonic(timestamp, bootid) -- cgit v1.2.1 From c71f26eba57a8263dc28c99f9f446e0a75307f34 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sun, 17 Feb 2013 11:55:45 +0000 Subject: systemd-python: update Journal python docstrings --- src/python-systemd/_reader.c | 2 +- src/python-systemd/journal.py | 77 +++++++++++++++++++++++++++++++++---------- 2 files changed, 60 insertions(+), 19 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 481da245e9..70676aceca 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -57,7 +57,7 @@ Journal_init(Journal *self, PyObject *args, PyObject *keywds) char *path=NULL; static char *kwlist[] = {"flags", "path", NULL}; - if (! PyArg_ParseTupleAndKeywords(args, keywds, "|is", kwlist, + if (! PyArg_ParseTupleAndKeywords(args, keywds, "|iz", kwlist, &flags, &path)) return 1; diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index a50922ca3d..4f42928f69 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -79,21 +79,34 @@ else: _convert_unicode = _functools.partial(unicode, encoding='utf-8') class Journal(_Journal): - def __init__(self, converters=None, *args, **kwargs): - super(Journal, self).__init__(*args, **kwargs) - if sys.version_info >= (3,3): + def __init__(self, converters=None, flags=LOCAL_ONLY, path=None): + """Creates instance of Journal, which allows filtering and + return of journal entries. + Argument `converters` is a dictionary which updates the + DEFAULT_CONVERTERS to convert journal field values. + Argument `flags` sets open flags of the journal, which can be one + of, or ORed combination of constants: LOCAL_ONLY (default) opens + journal on local machine only; RUNTIME_ONLY opens only + volatile journal files; and SYSTEM_ONLY opens only + journal files of system services and the kernel. + Argument `path` is the directory of journal files. Note that + currently flags are ignored when `path` is present as they are + currently not relevant. + """ + super(Journal, self).__init__(flags, path) if _sys.version_info >= (3,3): self.converters = ChainMap() if converters is not None: self.converters.maps.append(converters) self.converters.maps.append(DEFAULT_CONVERTERS) else: - # suitable fallback, e.g. self.converters = DEFAULT_CONVERTERS.copy() if converters is not None: self.converters.update(converters) def _convert_field(self, key, value): + """ Convert value based on callable from self.converters + based of field/key""" try: result = self.converters[key](value) except: @@ -106,6 +119,7 @@ class Journal(_Journal): return result def _convert_entry(self, entry): + """ Convert entire journal entry utilising _covert_field""" result = {} for key, value in entry.items(): if isinstance(value, list): @@ -115,31 +129,54 @@ class Journal(_Journal): return result def add_match(self, *args, **kwargs): + """Add one or more matches to the filter journal log entries. + All matches of different field are combined in a logical AND, + and matches of the smae field are automatically combined in a + logical OR. + Matches can be passed as strings of form "field=value", or + keyword arguments field="value".""" args = list(args) args.extend(_make_line(key, val) for key, val in kwargs.items()) for arg in args: super(Journal, self).add_match(arg) def get_next(self, skip=1): + """Return dictionary of the next log entry. Optional skip value + will return the `skip`th log entry. + Returned will be journal entry dictionary processed with + converters.""" return self._convert_entry( super(Journal, self).get_next(skip)) - def query_unique(self, key): - return set(self._convert_field(key, value) - for value in super(Journal, self).query_unique(key)) - - def seek_realtime(self, timestamp): + def query_unique(self, field): + """Returns a set of unique values in journal for given `field`, + processed with converters. + Note this does not respect any journal matches.""" + return set(self._convert_field(field, value) + for value in super(Journal, self).query_unique(field)) + + def seek_realtime(self, realtime): + """Seek to nearest matching journal entry to `realtime`. + Argument `realtime` can must be either an integer unix timestamp + or datetime.datetime instance.""" if isinstance(realtime, _datetime.datetime): - timestamp = float(timestamp.strftime("%s.%f")) - return super(Journal, self).seek_realtime(timestamp) - - def seek_monotonic(self, timestamp, bootid=None): + realtime = float(realtime.strftime("%s.%f")) + return super(Journal, self).seek_realtime(realtime) + + def seek_monotonic(self, monotonic, bootid=None): + """Seek to nearest matching journal entry to `monotonic`. + Argument `monotonic` is a timestamp from boot in either seconds + or a datetime.timedelta instance. + Argument `bootid` is a string or UUID representing which boot the + monotonic time is reference to. Defaults to current bootid.""" if isinstance(monotonic, _datetime.timedelta): - timestamp = timestamp.totalseconds() - return super(Journal, self).seek_monotonic(timestamp, bootid) + monotonic = monotonic.totalseconds() + if isinstance(bootid, _uuid.UUID): + bootid = bootid.get_hex() + return super(Journal, self).seek_monotonic(monotonic, bootid) def log_level(self, level): - """Sets maximum log level by setting matches for PRIORITY.""" + """Sets maximum log `level` by setting matches for PRIORITY.""" if 0 <= level <= 7: for i in range(level+1): self.add_match(PRIORITY="%s" % i) @@ -149,7 +186,9 @@ class Journal(_Journal): def this_boot(self, bootid=None): """Add match for _BOOT_ID equal to current boot ID or the specified boot ID. - bootid should be either a UUID or a 32 digit hex number. + If specified, bootid should be either a UUID or a 32 digit hex number. + + Equivalent to add_match(_BOOT_ID='bootid'). """ if bootid is None: bootid = _id128.get_boot().hex @@ -160,7 +199,9 @@ class Journal(_Journal): def this_machine(self, machineid=None): """Add match for _MACHINE_ID equal to the ID of this machine. - bootid should be either a UUID or a 32 digit hex number. + If specified, machineid should be either a UUID or a 32 digit hex number. + + Equivalent to add_match(_MACHINE_ID='machineid'). """ if machineid is None: machineid = _id128.get_machine().hex -- cgit v1.2.1 From 6d0c634ca32c772c72b0bb4207866e2a35f4eadb Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sun, 17 Feb 2013 14:27:59 +0000 Subject: systemd-python: fix memory leak in _reader and minor bugs iternext now checks for error from get_next, and changed a DECREF to XDECREF rather than NULL check --- src/python-systemd/_reader.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 70676aceca..b754014e9b 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -326,8 +326,7 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) PyErr_SetString(PyExc_ValueError, "Invalid value for whence"); } - if (result) - Py_DECREF(result); + Py_XDECREF(result); if (PyErr_Occurred()) return NULL; Py_RETURN_NONE; @@ -498,6 +497,8 @@ Journal_iternext(PyObject *self) Py_ssize_t dict_size; dict = PyObject_CallMethod(self, "get_next", ""); + if (PyErr_Occurred()) + return NULL; dict_size = PyDict_Size(dict); if ((int64_t) dict_size > 0LL) { return dict; -- cgit v1.2.1 From 89d9a233890a11eb4e6bd3960fff20d8a5afd8ae Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Sun, 17 Feb 2013 17:46:01 +0000 Subject: systemd-python: add Journal method to add MESSAGE_ID match --- src/python-systemd/journal.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 4f42928f69..d61c30e124 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -183,6 +183,15 @@ class Journal(_Journal): else: raise ValueError("Log level must be 0 <= level <= 7") + def messageid_match(self, messageid): + """Sets match filter for log entries for specified `messageid`. + `messageid` can be string or UUID instance. + Standard message IDs can be found in systemd.id128 + Equivalent to add_match(MESSAGE_ID=`messageid`).""" + if isinstance(messageid, _uuid.UUID): + messageid = messageid.get_hex() + self.add_match(MESSAGE_ID=messageid) + def this_boot(self, bootid=None): """Add match for _BOOT_ID equal to current boot ID or the specified boot ID. -- cgit v1.2.1 From eccc9e74d2258e094882614db39bce9d7d1c9510 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Tue, 19 Feb 2013 20:37:55 +0000 Subject: systemd-python: Journal convert_unicode exception handling change Rather than catch all, is now limited to UnicodeDecodeError --- src/python-systemd/journal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index d61c30e124..5c5f5ca05b 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -113,7 +113,7 @@ class Journal(_Journal): # Default conversion in unicode try: result = _convert_unicode(value) - except: + except UnicodeDecodeError: # Leave in default bytes result = value return result -- cgit v1.2.1 From cac40fbe240565c9431f3f535b0523bd3a7fe225 Mon Sep 17 00:00:00 2001 From: Steven Hiscocks Date: Tue, 19 Feb 2013 20:39:45 +0000 Subject: systemd-python: Added doc string for Journal --- src/python-systemd/journal.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 5c5f5ca05b..d63722b91d 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -79,6 +79,24 @@ else: _convert_unicode = _functools.partial(unicode, encoding='utf-8') class Journal(_Journal): + """Journal allows the access and filtering of systemd journal + entries. Note that in order to access the system journal, a + non-root user must be in the `adm` group. + + Example usage to print out all error or higher level messages + for systemd-udevd for the boot: + + >>> myjournal = journal.Journal() + >>> myjournal.add_boot_match(journal.CURRENT_BOOT) + >>> myjournal.add_loglevel_matches(journal.LOG_ERR) + >>> myjournal.add_match(_SYSTEMD_UNIT="systemd-udevd.service") + >>> from __future__ import print_function + >>> for entry in myjournal: + ... print(entry['MESSAGE']) + + See man page "systemd.journal-fields" for more info on + typical fields found in the journal. + """ def __init__(self, converters=None, flags=LOCAL_ONLY, path=None): """Creates instance of Journal, which allows filtering and return of journal entries. -- cgit v1.2.1 From e82e4f4562f2c6e9d2949d6357ff24154f758426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 17 Feb 2013 11:26:10 -0500 Subject: systemd-python: introduce error setting helper --- src/python-systemd/_reader.c | 137 +++++++++++++------------------------------ 1 file changed, 42 insertions(+), 95 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index b754014e9b..65ca06b97f 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -30,6 +30,20 @@ typedef struct { } Journal; static PyTypeObject JournalType; +static int set_error(int r, const char* path, const char* invalid_message) { + if (r >= 0) + return r; + if (r == -EINVAL && invalid_message) + PyErr_SetString(PyExc_ValueError, invalid_message); + else if (r == -ENOMEM) + PyErr_SetString(PyExc_MemoryError, "Not enough memory"); + else { + errno = -r; + PyErr_SetFromErrnoWithFilename(PyExc_OSError, path); + } + return 1; +} + static void Journal_dealloc(Journal* self) { @@ -69,16 +83,8 @@ Journal_init(Journal *self, PyObject *args, PyObject *keywds) r = sd_journal_open(&self->j, flags); } Py_END_ALLOW_THREADS - if (r < 0) { - errno = -r; - PyObject *errtype = r == -EINVAL ? PyExc_ValueError : - r == -ENOMEM ? PyExc_MemoryError : - PyExc_OSError; - PyErr_SetFromErrnoWithFilename(errtype, path); - return -1; - } - return 0; + return set_error(r, path, "Invalid flags or path"); } PyDoc_STRVAR(Journal_get_next__doc__, @@ -110,13 +116,11 @@ Journal_get_next(Journal *self, PyObject *args) } Py_END_ALLOW_THREADS - if (r < 0) { - errno = -r; - PyErr_SetFromErrno(PyExc_OSError); + set_error(r, NULL, NULL); + if (r < 0) return NULL; - }else if ( r == 0) { //EOF + else if (r == 0) /* EOF */ return PyDict_New(); - } PyObject *dict; dict = PyDict_New(); @@ -232,14 +236,9 @@ Journal_add_match(Journal *self, PyObject *args, PyObject *keywds) int r; r = sd_journal_add_match(self->j, match, match_len); - if (r < 0) { - errno = -r; - PyObject *errtype = r == -EINVAL ? PyExc_ValueError : - r == -ENOMEM ? PyExc_MemoryError : - PyExc_OSError; - PyErr_SetFromErrno(errtype); - return NULL; - } + set_error(r, NULL, "Invalid match"); + if (r < 0) + return NULL; Py_RETURN_NONE; } @@ -253,13 +252,9 @@ Journal_add_disjunction(Journal *self, PyObject *args) { int r; r = sd_journal_add_disjunction(self->j); - if (r < 0) { - errno = -r; - PyObject *errtype = r == -ENOMEM ? PyExc_MemoryError : - PyExc_OSError; - PyErr_SetFromErrno(errtype); + set_error(r, NULL, NULL); + if (r < 0) return NULL; - } Py_RETURN_NONE; } @@ -297,11 +292,9 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) Py_BEGIN_ALLOW_THREADS r = sd_journal_seek_head(self->j); Py_END_ALLOW_THREADS - if (r < 0) { - errno = -r; - PyErr_SetFromErrno(PyExc_OSError); + if (set_error(r, NULL, NULL)) return NULL; - } + if (offset > 0LL) { result = PyObject_CallMethod((PyObject *)self, "get_next", "L", offset); } @@ -312,11 +305,9 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) Py_BEGIN_ALLOW_THREADS r = sd_journal_seek_tail(self->j); Py_END_ALLOW_THREADS - if (r < 0) { - errno = -r; - PyErr_SetFromErrno(PyExc_OSError); + if (set_error(r, NULL, NULL)) return NULL; - } + if (offset < 0LL) { result = PyObject_CallMethod((PyObject *)self, "get_next", "L", offset); }else{ @@ -355,11 +346,8 @@ Journal_seek_realtime(Journal *self, PyObject *args) Py_BEGIN_ALLOW_THREADS r = sd_journal_seek_realtime_usec(self->j, timestamp); Py_END_ALLOW_THREADS - if (r < 0) { - errno = -r; - PyErr_SetFromErrno(PyExc_OSError); + if (set_error(r, NULL, NULL)) return NULL; - } Py_RETURN_NONE; } @@ -389,37 +377,24 @@ Journal_seek_monotonic(Journal *self, PyObject *args) int r; if (bootid) { r = sd_id128_from_string(bootid, &sd_id); - if (r == -EINVAL) { - PyErr_SetString(PyExc_ValueError, "Invalid bootid"); + if (set_error(r, NULL, "Invalid bootid")) return NULL; - }else if (r < 0) { - errno = -r; - PyErr_SetFromErrno(PyExc_OSError); - return NULL; - } - }else{ + } else { + Py_BEGIN_ALLOW_THREADS r = sd_id128_get_boot(&sd_id); - if (r == -EIO) { - PyErr_SetString(PyExc_IOError, "Error getting current boot ID"); - return NULL; - }else if (r < 0) { - errno = -r; - PyErr_SetFromErrno(PyExc_OSError); + Py_END_ALLOW_THREADS + if (set_error(r, NULL, NULL)) return NULL; - } } Py_BEGIN_ALLOW_THREADS r = sd_journal_seek_monotonic_usec(self->j, sd_id, timestamp); Py_END_ALLOW_THREADS - if (r < 0) { - errno = -r; - PyErr_SetFromErrno(PyExc_OSError); + if (set_error(r, NULL, NULL)) return NULL; - } Py_RETURN_NONE; } - + PyDoc_STRVAR(Journal_wait__doc__, "wait([timeout]) -> Change state (integer)\n\n" "Waits until there is a change in the journal. Argument `timeout`\n" @@ -438,19 +413,11 @@ Journal_wait(Journal *self, PyObject *args, PyObject *keywds) int r; Py_BEGIN_ALLOW_THREADS - if ( timeout == 0LL) { - r = sd_journal_wait(self->j, (uint64_t) -1); - }else{ - r = sd_journal_wait(self->j, timeout * 1E6); - } + r = sd_journal_wait(self->j, timeout ==0 ? (uint64_t) -1 : timeout * 1E6); Py_END_ALLOW_THREADS - if (r < 0) { - errno = -r; - PyObject *errtype = r == -ENOMEM ? PyExc_MemoryError : - PyExc_OSError; - PyErr_SetFromErrno(errtype); + if (set_error(r, NULL, NULL)) return NULL; - } + #if PY_MAJOR_VERSION >=3 return PyLong_FromLong(r); #else @@ -472,14 +439,8 @@ Journal_seek_cursor(Journal *self, PyObject *args) Py_BEGIN_ALLOW_THREADS r = sd_journal_seek_cursor(self->j, cursor); Py_END_ALLOW_THREADS - if (r < 0) { - errno = -r; - PyObject *errtype = r == -EINVAL ? PyExc_ValueError : - r == -ENOMEM ? PyExc_MemoryError : - PyExc_OSError; - PyErr_SetFromErrno(errtype); + if (set_error(r, NULL, "Invalid cursor")) return NULL; - } Py_RETURN_NONE; } @@ -524,14 +485,8 @@ Journal_query_unique(Journal *self, PyObject *args) Py_BEGIN_ALLOW_THREADS r = sd_journal_query_unique(self->j, query); Py_END_ALLOW_THREADS - if (r < 0) { - errno = -r; - PyObject *errtype = r == -EINVAL ? PyExc_ValueError : - r == -ENOMEM ? PyExc_MemoryError : - PyExc_OSError; - PyErr_SetFromErrno(errtype); + if (set_error(r, NULL, "Invalid field name")) return NULL; - } const void *uniq; size_t uniq_len; @@ -563,11 +518,8 @@ Journal_get_data_threshold(Journal *self, void *closure) int r; r = sd_journal_get_data_threshold(self->j, &cvalue); - if (r < 0) { - errno = -r; - PyErr_SetFromErrno(PyExc_OSError); + if (set_error(r, NULL, NULL)) return NULL; - } #if PY_MAJOR_VERSION >=3 value = PyLong_FromSize_t(cvalue); @@ -598,12 +550,7 @@ Journal_set_data_threshold(Journal *self, PyObject *value, void *closure) #else r = sd_journal_set_data_threshold(self->j, (size_t) PyInt_AsLong(value)); #endif - if (r < 0) { - errno = -r; - PyErr_SetFromErrno(PyExc_OSError); - return -1; - } - return 0; + return set_error(r, NULL, NULL); } static PyGetSetDef Journal_getseters[] = { -- cgit v1.2.1 From ecb6dfe117a8890a86c7e586fb2315bf44aed882 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 16 Feb 2013 21:54:09 -0500 Subject: systemd-python: wrap some python differences using macros --- src/python-systemd/_reader.c | 74 ++++++++++++++++---------------------------- 1 file changed, 26 insertions(+), 48 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 65ca06b97f..6504396404 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -24,6 +24,23 @@ #include #include +#if PY_MAJOR_VERSION >=3 +# define unicode_FromStringAndSize PyUnicode_FromStringAndSize +# define unicode_FromString PyUnicode_FromString +# define long_FromLong PyLong_FromLong +# define long_FromSize_t PyLong_FromSize_t +# define long_Check PyLong_Check +# define long_AsLong PyLong_AsLong +#else +/* Python 3 type naming convention is used */ +# define unicode_FromStringAndSize PyString_FromStringAndSize +# define unicode_FromString PyString_FromString +# define long_FromLong PyInt_FromLong +# define long_FromSize_t PyInt_FromSize_t +# define long_Check PyInt_Check +# define long_AsLong PyInt_AsLong +#endif + typedef struct { PyObject_HEAD sd_journal *j; @@ -132,11 +149,7 @@ Journal_get_next(Journal *self, PyObject *args) SD_JOURNAL_FOREACH_DATA(self->j, msg, msg_len) { delim_ptr = memchr(msg, '=', msg_len); -#if PY_MAJOR_VERSION >=3 - key = PyUnicode_FromStringAndSize(msg, delim_ptr - (const char*) msg); -#else - key = PyString_FromStringAndSize(msg, delim_ptr - (const char*) msg); -#endif + key = unicode_FromStringAndSize(msg, delim_ptr - (const char*) msg); value = PyBytes_FromStringAndSize(delim_ptr + 1, (const char*) msg + msg_len - (delim_ptr + 1) ); if (PyDict_Contains(dict, key)) { cur_value = PyDict_GetItem(dict, key); @@ -160,12 +173,7 @@ Journal_get_next(Journal *self, PyObject *args) if (sd_journal_get_realtime_usec(self->j, &realtime) == 0) { char realtime_str[20]; sprintf(realtime_str, "%llu", (long long unsigned) realtime); - -#if PY_MAJOR_VERSION >=3 - key = PyUnicode_FromString("__REALTIME_TIMESTAMP"); -#else - key = PyString_FromString("__REALTIME_TIMESTAMP"); -#endif + key = unicode_FromString("__REALTIME_TIMESTAMP"); value = PyBytes_FromString(realtime_str); PyDict_SetItem(dict, key, value); Py_DECREF(key); @@ -177,11 +185,7 @@ Journal_get_next(Journal *self, PyObject *args) if (sd_journal_get_monotonic_usec(self->j, &monotonic, &sd_id) == 0) { char monotonic_str[20]; sprintf(monotonic_str, "%llu", (long long unsigned) monotonic); -#if PY_MAJOR_VERSION >=3 - key = PyUnicode_FromString("__MONOTONIC_TIMESTAMP"); -#else - key = PyString_FromString("__MONOTONIC_TIMESTAMP"); -#endif + key = unicode_FromString("__MONOTONIC_TIMESTAMP"); value = PyBytes_FromString(monotonic_str); PyDict_SetItem(dict, key, value); @@ -191,11 +195,7 @@ Journal_get_next(Journal *self, PyObject *args) char *cursor; if (sd_journal_get_cursor(self->j, &cursor) > 0) { //Should return 0... -#if PY_MAJOR_VERSION >=3 - key = PyUnicode_FromString("__CURSOR"); -#else - key = PyString_FromString("__CURSOR"); -#endif + key = unicode_FromString("__CURSOR"); value = PyBytes_FromString(cursor); PyDict_SetItem(dict, key, value); free(cursor); @@ -418,11 +418,7 @@ Journal_wait(Journal *self, PyObject *args, PyObject *keywds) if (set_error(r, NULL, NULL)) return NULL; -#if PY_MAJOR_VERSION >=3 - return PyLong_FromLong(r); -#else - return PyInt_FromLong(r); -#endif + return long_FromLong(r); } PyDoc_STRVAR(Journal_seek_cursor__doc__, @@ -493,12 +489,7 @@ Journal_query_unique(Journal *self, PyObject *args) const char *delim_ptr; PyObject *value_set, *key, *value; value_set = PySet_New(0); - -#if PY_MAJOR_VERSION >=3 - key = PyUnicode_FromString(query); -#else - key = PyString_FromString(query); -#endif + key = unicode_FromString(query); SD_JOURNAL_FOREACH_UNIQUE(self->j, uniq, uniq_len) { delim_ptr = memchr(uniq, '=', uniq_len); @@ -521,12 +512,7 @@ Journal_get_data_threshold(Journal *self, void *closure) if (set_error(r, NULL, NULL)) return NULL; -#if PY_MAJOR_VERSION >=3 - value = PyLong_FromSize_t(cvalue); -#else - value = PyInt_FromSize_t(cvalue); -#endif - return value; + return long_FromSize_t(cvalue); } static int @@ -536,20 +522,12 @@ Journal_set_data_threshold(Journal *self, PyObject *value, void *closure) PyErr_SetString(PyExc_TypeError, "Cannot delete data threshold"); return -1; } -#if PY_MAJOR_VERSION >=3 - if (! PyLong_Check(value)){ -#else - if (! PyInt_Check(value)){ -#endif + if (!long_Check(value)){ PyErr_SetString(PyExc_TypeError, "Data threshold must be int"); return -1; } int r; -#if PY_MAJOR_VERSION >=3 - r = sd_journal_set_data_threshold(self->j, (size_t) PyLong_AsLong(value)); -#else - r = sd_journal_set_data_threshold(self->j, (size_t) PyInt_AsLong(value)); -#endif + r = sd_journal_set_data_threshold(self->j, (size_t) long_AsLong(value)); return set_error(r, NULL, NULL); } -- cgit v1.2.1 From 118bf4bad88366fc210a92561b3bf056630a3592 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 19 Feb 2013 21:58:54 -0500 Subject: systemd-python: add casts and fix unused variable warnings in _reader --- src/python-systemd/_reader.c | 58 ++++++++++++++++++++++++++------------------ 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 6504396404..c6f29f5e33 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -84,12 +84,12 @@ PyDoc_STRVAR(Journal__doc__, static int Journal_init(Journal *self, PyObject *args, PyObject *keywds) { - int flags=SD_JOURNAL_LOCAL_ONLY; - char *path=NULL; + int flags = SD_JOURNAL_LOCAL_ONLY; + char *path = NULL; - static char *kwlist[] = {"flags", "path", NULL}; - if (! PyArg_ParseTupleAndKeywords(args, keywds, "|iz", kwlist, - &flags, &path)) + static const char* const kwlist[] = {"flags", "path", NULL}; + if (!PyArg_ParseTupleAndKeywords(args, keywds, "|iz", (char**) kwlist, + &flags, &path)) return 1; int r; @@ -217,7 +217,8 @@ Journal_get_previous(Journal *self, PyObject *args) if (! PyArg_ParseTuple(args, "|L", &skip)) return NULL; - return PyObject_CallMethod((PyObject *)self, "get_next", "L", -skip); + return PyObject_CallMethod((PyObject *)self, (char*) "get_next", + (char*) "L", -skip); } PyDoc_STRVAR(Journal_add_match__doc__, @@ -280,10 +281,10 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) { int64_t offset; int whence=SEEK_SET; - static char *kwlist[] = {"offset", "whence", NULL}; - if (! PyArg_ParseTupleAndKeywords(args, keywds, "L|i", kwlist, - &offset, &whence)) + static const char* const kwlist[] = {"offset", "whence", NULL}; + if (!PyArg_ParseTupleAndKeywords(args, keywds, "L|i", (char**) kwlist, + &offset, &whence)) return NULL; PyObject *result=NULL; @@ -296,10 +297,12 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) return NULL; if (offset > 0LL) { - result = PyObject_CallMethod((PyObject *)self, "get_next", "L", offset); + result = PyObject_CallMethod((PyObject *)self, (char*) "get_next", + (char*) "L", offset); } }else if (whence == SEEK_CUR){ - result = PyObject_CallMethod((PyObject *)self, "get_next", "L", offset); + result = PyObject_CallMethod((PyObject *)self, (char*) "get_next", + (char*) "L", offset); }else if (whence == SEEK_END){ int r; Py_BEGIN_ALLOW_THREADS @@ -309,9 +312,11 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) return NULL; if (offset < 0LL) { - result = PyObject_CallMethod((PyObject *)self, "get_next", "L", offset); + result = PyObject_CallMethod((PyObject *)self, (char*) "get_next", + (char*) "L", offset); }else{ - result = PyObject_CallMethod((PyObject *)self, "get_next", "L", -1LL); + result = PyObject_CallMethod((PyObject *)self, (char*) "get_next", + (char*) "L", -1LL); } }else{ PyErr_SetString(PyExc_ValueError, "Invalid value for whence"); @@ -407,11 +412,12 @@ PyDoc_STRVAR(Journal_wait__doc__, static PyObject * Journal_wait(Journal *self, PyObject *args, PyObject *keywds) { - int64_t timeout=0LL; - if (! PyArg_ParseTuple(args, "|L", &timeout)) + int r; + int64_t timeout = 0LL; + + if (!PyArg_ParseTuple(args, "|L", &timeout)) return NULL; - int r; Py_BEGIN_ALLOW_THREADS r = sd_journal_wait(self->j, timeout ==0 ? (uint64_t) -1 : timeout * 1E6); Py_END_ALLOW_THREADS @@ -453,7 +459,7 @@ Journal_iternext(PyObject *self) PyObject *dict; Py_ssize_t dict_size; - dict = PyObject_CallMethod(self, "get_next", ""); + dict = PyObject_CallMethod(self, (char*) "get_next", (char*) ""); if (PyErr_Occurred()) return NULL; dict_size = PyDict_Size(dict); @@ -505,7 +511,6 @@ static PyObject * Journal_get_data_threshold(Journal *self, void *closure) { size_t cvalue; - PyObject *value; int r; r = sd_journal_get_data_threshold(self->j, &cvalue); @@ -532,11 +537,11 @@ Journal_set_data_threshold(Journal *self, PyObject *value, void *closure) } static PyGetSetDef Journal_getseters[] = { - {"data_threshold", - (getter)Journal_get_data_threshold, - (setter)Journal_set_data_threshold, - "data threshold", - NULL}, + {(char*) "data_threshold", + (getter)Journal_get_data_threshold, + (setter)Journal_set_data_threshold, + (char*) "data threshold", + NULL}, {NULL} }; @@ -617,11 +622,14 @@ static PyModuleDef _reader_module = { }; #endif +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-prototypes" + PyMODINIT_FUNC #if PY_MAJOR_VERSION >= 3 PyInit__reader(void) #else -init_reader(void) +init_reader(void) #endif { PyObject* m; @@ -659,3 +667,5 @@ init_reader(void) return m; #endif } + +#pragma GCC diagnostic pop -- cgit v1.2.1 From 0d92ee93dcf2f524f31eb2484157209022c68e3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 19 Feb 2013 22:11:02 -0500 Subject: systemd-python: downgrade _reader.c to C89 --- src/python-systemd/_reader.c | 167 ++++++++++++++++++++++--------------------- 1 file changed, 86 insertions(+), 81 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index c6f29f5e33..d0ccb91dca 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -84,7 +84,7 @@ PyDoc_STRVAR(Journal__doc__, static int Journal_init(Journal *self, PyObject *args, PyObject *keywds) { - int flags = SD_JOURNAL_LOCAL_ONLY; + int flags = SD_JOURNAL_LOCAL_ONLY, r; char *path = NULL; static const char* const kwlist[] = {"flags", "path", NULL}; @@ -92,13 +92,11 @@ Journal_init(Journal *self, PyObject *args, PyObject *keywds) &flags, &path)) return 1; - int r; Py_BEGIN_ALLOW_THREADS - if (path) { + if (path) r = sd_journal_open_directory(&self->j, path, 0); - }else{ + else r = sd_journal_open(&self->j, flags); - } Py_END_ALLOW_THREADS return set_error(r, path, "Invalid flags or path"); @@ -111,26 +109,30 @@ PyDoc_STRVAR(Journal_get_next__doc__, static PyObject * Journal_get_next(Journal *self, PyObject *args) { - int64_t skip=1LL; + PyObject *dict; + const void *msg; + size_t msg_len; + const char *delim_ptr; + PyObject *key, *value, *cur_value, *tmp_list; + + int64_t skip = 1LL, r = -EINVAL; if (! PyArg_ParseTuple(args, "|L", &skip)) return NULL; if (skip == 0LL) { - PyErr_SetString(PyExc_ValueError, "Skip number must positive/negative integer"); + PyErr_SetString(PyExc_ValueError, "skip must be nonzero"); return NULL; } - int r = -EINVAL; Py_BEGIN_ALLOW_THREADS - if (skip == 1LL) { + if (skip == 1LL) r = sd_journal_next(self->j); - }else if (skip == -1LL) { + else if (skip == -1LL) r = sd_journal_previous(self->j); - }else if (skip > 1LL) { + else if (skip > 1LL) r = sd_journal_next_skip(self->j, skip); - }else if (skip < -1LL) { + else if (skip < -1LL) r = sd_journal_previous_skip(self->j, -skip); - } Py_END_ALLOW_THREADS set_error(r, NULL, NULL); @@ -139,14 +141,8 @@ Journal_get_next(Journal *self, PyObject *args) else if (r == 0) /* EOF */ return PyDict_New(); - PyObject *dict; dict = PyDict_New(); - const void *msg; - size_t msg_len; - const char *delim_ptr; - PyObject *key, *value, *cur_value, *tmp_list; - SD_JOURNAL_FOREACH_DATA(self->j, msg, msg_len) { delim_ptr = memchr(msg, '=', msg_len); key = unicode_FromStringAndSize(msg, delim_ptr - (const char*) msg); @@ -169,38 +165,44 @@ Journal_get_next(Journal *self, PyObject *args) Py_DECREF(value); } - uint64_t realtime; - if (sd_journal_get_realtime_usec(self->j, &realtime) == 0) { - char realtime_str[20]; - sprintf(realtime_str, "%llu", (long long unsigned) realtime); - key = unicode_FromString("__REALTIME_TIMESTAMP"); - value = PyBytes_FromString(realtime_str); - PyDict_SetItem(dict, key, value); - Py_DECREF(key); - Py_DECREF(value); + { + uint64_t realtime; + if (sd_journal_get_realtime_usec(self->j, &realtime) == 0) { + char realtime_str[20]; + sprintf(realtime_str, "%llu", (long long unsigned) realtime); + key = unicode_FromString("__REALTIME_TIMESTAMP"); + value = PyBytes_FromString(realtime_str); + PyDict_SetItem(dict, key, value); + Py_DECREF(key); + Py_DECREF(value); + } } - sd_id128_t sd_id; - uint64_t monotonic; - if (sd_journal_get_monotonic_usec(self->j, &monotonic, &sd_id) == 0) { - char monotonic_str[20]; - sprintf(monotonic_str, "%llu", (long long unsigned) monotonic); - key = unicode_FromString("__MONOTONIC_TIMESTAMP"); - value = PyBytes_FromString(monotonic_str); - - PyDict_SetItem(dict, key, value); - Py_DECREF(key); - Py_DECREF(value); + { + sd_id128_t sd_id; + uint64_t monotonic; + if (sd_journal_get_monotonic_usec(self->j, &monotonic, &sd_id) == 0) { + char monotonic_str[20]; + sprintf(monotonic_str, "%llu", (long long unsigned) monotonic); + key = unicode_FromString("__MONOTONIC_TIMESTAMP"); + value = PyBytes_FromString(monotonic_str); + + PyDict_SetItem(dict, key, value); + Py_DECREF(key); + Py_DECREF(value); + } } - char *cursor; - if (sd_journal_get_cursor(self->j, &cursor) > 0) { //Should return 0... - key = unicode_FromString("__CURSOR"); - value = PyBytes_FromString(cursor); - PyDict_SetItem(dict, key, value); - free(cursor); - Py_DECREF(key); - Py_DECREF(value); + { + char *cursor; + if (sd_journal_get_cursor(self->j, &cursor) > 0) { //Should return 0... + key = unicode_FromString("__CURSOR"); + value = PyBytes_FromString(cursor); + PyDict_SetItem(dict, key, value); + free(cursor); + Py_DECREF(key); + Py_DECREF(value); + } } return dict; @@ -231,11 +233,10 @@ static PyObject * Journal_add_match(Journal *self, PyObject *args, PyObject *keywds) { char *match; - int match_len; - if (! PyArg_ParseTuple(args, "s#", &match, &match_len)) + int match_len, r; + if (!PyArg_ParseTuple(args, "s#", &match, &match_len)) return NULL; - int r; r = sd_journal_add_match(self->j, match, match_len); set_error(r, NULL, "Invalid match"); if (r < 0) @@ -280,15 +281,16 @@ static PyObject * Journal_seek(Journal *self, PyObject *args, PyObject *keywds) { int64_t offset; - int whence=SEEK_SET; + int whence = SEEK_SET; + PyObject *result = NULL; static const char* const kwlist[] = {"offset", "whence", NULL}; if (!PyArg_ParseTupleAndKeywords(args, keywds, "L|i", (char**) kwlist, &offset, &whence)) return NULL; - PyObject *result=NULL; - if (whence == SEEK_SET){ + switch(whence) { + case SEEK_SET: { int r; Py_BEGIN_ALLOW_THREADS r = sd_journal_seek_head(self->j); @@ -296,14 +298,16 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) if (set_error(r, NULL, NULL)) return NULL; - if (offset > 0LL) { + if (offset > 0LL) result = PyObject_CallMethod((PyObject *)self, (char*) "get_next", (char*) "L", offset); - } - }else if (whence == SEEK_CUR){ + break; + } + case SEEK_CUR: result = PyObject_CallMethod((PyObject *)self, (char*) "get_next", (char*) "L", offset); - }else if (whence == SEEK_END){ + break; + case SEEK_END: { int r; Py_BEGIN_ALLOW_THREADS r = sd_journal_seek_tail(self->j); @@ -311,14 +315,11 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) if (set_error(r, NULL, NULL)) return NULL; - if (offset < 0LL) { - result = PyObject_CallMethod((PyObject *)self, (char*) "get_next", - (char*) "L", offset); - }else{ - result = PyObject_CallMethod((PyObject *)self, (char*) "get_next", - (char*) "L", -1LL); - } - }else{ + result = PyObject_CallMethod((PyObject *)self, (char*) "get_next", + (char*) "L", offset < 0LL ? offset : -1LL); + break; + } + default: PyErr_SetString(PyExc_ValueError, "Invalid value for whence"); } @@ -336,18 +337,18 @@ static PyObject * Journal_seek_realtime(Journal *self, PyObject *args) { double timedouble; - if (! PyArg_ParseTuple(args, "d", &timedouble)) + uint64_t timestamp; + int r; + + if (!PyArg_ParseTuple(args, "d", &timedouble)) return NULL; - uint64_t timestamp; timestamp = (uint64_t) (timedouble * 1.0E6); - if ((int64_t) timestamp < 0LL) { - PyErr_SetString(PyExc_ValueError, "Time must be positive integer"); + PyErr_SetString(PyExc_ValueError, "Time must be a positive integer"); return NULL; } - int r; Py_BEGIN_ALLOW_THREADS r = sd_journal_seek_realtime_usec(self->j, timestamp); Py_END_ALLOW_THREADS @@ -367,10 +368,13 @@ Journal_seek_monotonic(Journal *self, PyObject *args) { double timedouble; char *bootid=NULL; + uint64_t timestamp; + sd_id128_t sd_id; + int r; + if (! PyArg_ParseTuple(args, "d|z", &timedouble, &bootid)) return NULL; - uint64_t timestamp; timestamp = (uint64_t) (timedouble * 1.0E6); if ((int64_t) timestamp < 0LL) { @@ -378,8 +382,6 @@ Journal_seek_monotonic(Journal *self, PyObject *args) return NULL; } - sd_id128_t sd_id; - int r; if (bootid) { r = sd_id128_from_string(bootid, &sd_id); if (set_error(r, NULL, "Invalid bootid")) @@ -434,10 +436,11 @@ static PyObject * Journal_seek_cursor(Journal *self, PyObject *args) { const char *cursor; + int r; + if (! PyArg_ParseTuple(args, "s", &cursor)) return NULL; - int r; Py_BEGIN_ALLOW_THREADS r = sd_journal_seek_cursor(self->j, cursor); Py_END_ALLOW_THREADS @@ -480,24 +483,26 @@ static PyObject * Journal_query_unique(Journal *self, PyObject *args) { char *query; + int r; + const void *uniq; + size_t uniq_len; + PyObject *value_set, *key, *value; + if (! PyArg_ParseTuple(args, "s", &query)) return NULL; - int r; Py_BEGIN_ALLOW_THREADS r = sd_journal_query_unique(self->j, query); Py_END_ALLOW_THREADS if (set_error(r, NULL, "Invalid field name")) return NULL; - const void *uniq; - size_t uniq_len; - const char *delim_ptr; - PyObject *value_set, *key, *value; value_set = PySet_New(0); key = unicode_FromString(query); SD_JOURNAL_FOREACH_UNIQUE(self->j, uniq, uniq_len) { + const char *delim_ptr; + delim_ptr = memchr(uniq, '=', uniq_len); value = PyBytes_FromStringAndSize(delim_ptr + 1, (const char*) uniq + uniq_len - (delim_ptr + 1)); PySet_Add(value_set, value); @@ -523,15 +528,15 @@ Journal_get_data_threshold(Journal *self, void *closure) static int Journal_set_data_threshold(Journal *self, PyObject *value, void *closure) { + int r; if (value == NULL) { PyErr_SetString(PyExc_TypeError, "Cannot delete data threshold"); return -1; } if (!long_Check(value)){ - PyErr_SetString(PyExc_TypeError, "Data threshold must be int"); + PyErr_SetString(PyExc_TypeError, "Data threshold must be an int"); return -1; } - int r; r = sd_journal_set_data_threshold(self->j, (size_t) long_AsLong(value)); return set_error(r, NULL, NULL); } -- cgit v1.2.1 From f948423bb565194a5a8242f556bacf6f7e2d3273 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 22 Feb 2013 17:02:06 +0100 Subject: build-sys: move systemd-analyze to /usr/bin --- Makefile.am | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index 10934eba77..f2d3ac7a42 100644 --- a/Makefile.am +++ b/Makefile.am @@ -267,8 +267,7 @@ rootbin_PROGRAMS = \ systemd-ask-password \ systemd-tty-ask-password-agent \ systemd-tmpfiles \ - systemd-machine-id-setup \ - systemd-analyze + systemd-machine-id-setup bin_PROGRAMS = \ systemd-cgls \ @@ -276,7 +275,8 @@ bin_PROGRAMS = \ systemd-stdio-bridge \ systemd-nspawn \ systemd-detect-virt \ - systemd-delta + systemd-delta \ + systemd-analyze rootlibexec_PROGRAMS = \ systemd \ -- cgit v1.2.1 From 33ed3769b5ef0e50966061bbc023a05e206396b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 19 Feb 2013 22:22:03 -0500 Subject: systemd-python: indenation and style tweaks --- src/python-systemd/_reader.c | 177 +++++++++++++++++++------------------------ 1 file changed, 80 insertions(+), 97 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index d0ccb91dca..1bca1160f3 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -1,4 +1,4 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ +/*-*- Mode: C; c-basic-offset: 4; indent-tabs-mode: nil -*-*/ /*** This file is part of systemd. @@ -61,28 +61,26 @@ static int set_error(int r, const char* path, const char* invalid_message) { return 1; } -static void -Journal_dealloc(Journal* self) +static void Journal_dealloc(Journal* self) { sd_journal_close(self->j); Py_TYPE(self)->tp_free((PyObject*)self); } PyDoc_STRVAR(Journal__doc__, -"Journal([flags][,path]) -> ...\n" -"Journal instance\n\n" -"Returns instance of Journal, which allows filtering and return\n" -"of journal entries.\n" -"Argument `flags` sets open flags of the journal, which can be one\n" -"of, or ORed combination of constants: LOCAL_ONLY (default) opens\n" -"journal on local machine only; RUNTIME_ONLY opens only\n" -"volatile journal files; and SYSTEM_ONLY opens only\n" -"journal files of system services and the kernel.\n" -"Argument `path` is the directory of journal files. Note that\n" -"currently flags are ignored when `path` is present as they are\n" -" not relevant."); -static int -Journal_init(Journal *self, PyObject *args, PyObject *keywds) + "Journal([flags][,path]) -> ...\n" + "Journal instance\n\n" + "Returns instance of Journal, which allows filtering and return\n" + "of journal entries.\n" + "Argument `flags` sets open flags of the journal, which can be one\n" + "of, or ORed combination of constants: LOCAL_ONLY (default) opens\n" + "journal on local machine only; RUNTIME_ONLY opens only\n" + "volatile journal files; and SYSTEM_ONLY opens only\n" + "journal files of system services and the kernel.\n" + "Argument `path` is the directory of journal files. Note that\n" + "currently flags are ignored when `path` is present as they are\n" + " not relevant."); +static int Journal_init(Journal *self, PyObject *args, PyObject *keywds) { int flags = SD_JOURNAL_LOCAL_ONLY, r; char *path = NULL; @@ -103,11 +101,10 @@ Journal_init(Journal *self, PyObject *args, PyObject *keywds) } PyDoc_STRVAR(Journal_get_next__doc__, -"get_next([skip]) -> dict\n\n" -"Return dictionary of the next log entry. Optional skip value will\n" -"return the `skip`th log entry."); -static PyObject * -Journal_get_next(Journal *self, PyObject *args) + "get_next([skip]) -> dict\n\n" + "Return dictionary of the next log entry. Optional skip value will\n" + "return the `skip`th log entry."); +static PyObject* Journal_get_next(Journal *self, PyObject *args) { PyObject *dict; const void *msg; @@ -116,7 +113,7 @@ Journal_get_next(Journal *self, PyObject *args) PyObject *key, *value, *cur_value, *tmp_list; int64_t skip = 1LL, r = -EINVAL; - if (! PyArg_ParseTuple(args, "|L", &skip)) + if (!PyArg_ParseTuple(args, "|L", &skip)) return NULL; if (skip == 0LL) { @@ -209,14 +206,13 @@ Journal_get_next(Journal *self, PyObject *args) } PyDoc_STRVAR(Journal_get_previous__doc__, -"get_previous([skip]) -> dict\n\n" -"Return dictionary of the previous log entry. Optional skip value\n" -"will return the -`skip`th log entry. Equivalent to get_next(-skip)."); -static PyObject * -Journal_get_previous(Journal *self, PyObject *args) + "get_previous([skip]) -> dict\n\n" + "Return dictionary of the previous log entry. Optional skip value\n" + "will return the -`skip`th log entry. Equivalent to get_next(-skip)."); +static PyObject* Journal_get_previous(Journal *self, PyObject *args) { - int64_t skip=1LL; - if (! PyArg_ParseTuple(args, "|L", &skip)) + int64_t skip = 1LL; + if (!PyArg_ParseTuple(args, "|L", &skip)) return NULL; return PyObject_CallMethod((PyObject *)self, (char*) "get_next", @@ -224,13 +220,12 @@ Journal_get_previous(Journal *self, PyObject *args) } PyDoc_STRVAR(Journal_add_match__doc__, -"add_match(match) -> None\n\n" -"Add a match to filter journal log entries. All matches of different\n" -"fields are combined in logical AND, and matches of the same field\n" -"are automatically combined in logical OR.\n" -"Match is string of form \"field=value\"."); -static PyObject * -Journal_add_match(Journal *self, PyObject *args, PyObject *keywds) + "add_match(match) -> None\n\n" + "Add a match to filter journal log entries. All matches of different\n" + "fields are combined in logical AND, and matches of the same field\n" + "are automatically combined in logical OR.\n" + "Match is a string of the form \"FIELD=value\"."); +static PyObject* Journal_add_match(Journal *self, PyObject *args, PyObject *keywds) { char *match; int match_len, r; @@ -246,11 +241,10 @@ Journal_add_match(Journal *self, PyObject *args, PyObject *keywds) } PyDoc_STRVAR(Journal_add_disjunction__doc__, -"add_disjunction() -> None\n\n" -"Once called, all matches before and after are combined in logical\n" -"OR."); -static PyObject * -Journal_add_disjunction(Journal *self, PyObject *args) + "add_disjunction() -> None\n\n" + "Once called, all matches before and after are combined in logical\n" + "OR."); +static PyObject* Journal_add_disjunction(Journal *self, PyObject *args) { int r; r = sd_journal_add_disjunction(self->j); @@ -261,24 +255,22 @@ Journal_add_disjunction(Journal *self, PyObject *args) } PyDoc_STRVAR(Journal_flush_matches__doc__, -"flush_matches() -> None\n\n" -"Clears all current match filters."); -static PyObject * -Journal_flush_matches(Journal *self, PyObject *args) + "flush_matches() -> None\n\n" + "Clears all current match filters."); +static PyObject* Journal_flush_matches(Journal *self, PyObject *args) { sd_journal_flush_matches(self->j); Py_RETURN_NONE; } PyDoc_STRVAR(Journal_seek__doc__, -"seek(offset[, whence]) -> None\n\n" -"Seek through journal by `offset` number of entries. Argument\n" -"`whence` defines what the offset is relative to:\n" -"os.SEEK_SET (default) from first match in journal;\n" -"os.SEEK_CUR from current position in journal;\n" -"and os.SEEK_END is from last match in journal."); -static PyObject * -Journal_seek(Journal *self, PyObject *args, PyObject *keywds) + "seek(offset[, whence]) -> None\n\n" + "Seek through journal by `offset` number of entries. Argument\n" + "`whence` defines what the offset is relative to:\n" + "os.SEEK_SET (default) from first match in journal;\n" + "os.SEEK_CUR from current position in journal;\n" + "and os.SEEK_END is from last match in journal."); +static PyObject* Journal_seek(Journal *self, PyObject *args, PyObject *keywds) { int64_t offset; int whence = SEEK_SET; @@ -330,11 +322,10 @@ Journal_seek(Journal *self, PyObject *args, PyObject *keywds) } PyDoc_STRVAR(Journal_seek_realtime__doc__, -"seek_realtime(realtime) -> None\n\n" -"Seek to nearest matching journal entry to `realtime`. Argument\n" -"`realtime` can must be an integer unix timestamp."); -static PyObject * -Journal_seek_realtime(Journal *self, PyObject *args) + "seek_realtime(realtime) -> None\n\n" + "Seek to nearest matching journal entry to `realtime`. Argument\n" + "`realtime` can must be an integer unix timestamp."); +static PyObject* Journal_seek_realtime(Journal *self, PyObject *args) { double timedouble; uint64_t timestamp; @@ -358,21 +349,20 @@ Journal_seek_realtime(Journal *self, PyObject *args) } PyDoc_STRVAR(Journal_seek_monotonic__doc__, -"seek_monotonic(monotonic[, bootid]) -> None\n\n" -"Seek to nearest matching journal entry to `monotonic`. Argument\n" -"`monotonic` is an timestamp from boot in seconds.\n" -"Argument `bootid` is a string representing which boot the\n" -"monotonic time is reference to. Defaults to current bootid."); -static PyObject * -Journal_seek_monotonic(Journal *self, PyObject *args) + "seek_monotonic(monotonic[, bootid]) -> None\n\n" + "Seek to nearest matching journal entry to `monotonic`. Argument\n" + "`monotonic` is an timestamp from boot in seconds.\n" + "Argument `bootid` is a string representing which boot the\n" + "monotonic time is reference to. Defaults to current bootid."); +static PyObject* Journal_seek_monotonic(Journal *self, PyObject *args) { double timedouble; - char *bootid=NULL; + char *bootid = NULL; uint64_t timestamp; sd_id128_t sd_id; int r; - if (! PyArg_ParseTuple(args, "d|z", &timedouble, &bootid)) + if (!PyArg_ParseTuple(args, "d|z", &timedouble, &bootid)) return NULL; timestamp = (uint64_t) (timedouble * 1.0E6); @@ -403,16 +393,15 @@ Journal_seek_monotonic(Journal *self, PyObject *args) } PyDoc_STRVAR(Journal_wait__doc__, -"wait([timeout]) -> Change state (integer)\n\n" -"Waits until there is a change in the journal. Argument `timeout`\n" -"is the maximum number of seconds to wait before returning\n" -"regardless if journal has changed. If `timeout` is not given or is\n" -"0, then it will block forever.\n" -"Will return constants: NOP if no change; APPEND if new\n" -"entries have been added to the end of the journal; and\n" -"INVALIDATE if journal files have been added or removed."); -static PyObject * -Journal_wait(Journal *self, PyObject *args, PyObject *keywds) + "wait([timeout]) -> Change state (integer)\n\n" + "Waits until there is a change in the journal. Argument `timeout`\n" + "is the maximum number of seconds to wait before returning\n" + "regardless if journal has changed. If `timeout` is not given or is\n" + "0, then it will block forever.\n" + "Will return constants: NOP if no change; APPEND if new\n" + "entries have been added to the end of the journal; and\n" + "INVALIDATE if journal files have been added or removed."); +static PyObject* Journal_wait(Journal *self, PyObject *args, PyObject *keywds) { int r; int64_t timeout = 0LL; @@ -430,15 +419,14 @@ Journal_wait(Journal *self, PyObject *args, PyObject *keywds) } PyDoc_STRVAR(Journal_seek_cursor__doc__, -"seek_cursor(cursor) -> None\n\n" -"Seeks to journal entry by given unique reference `cursor`."); -static PyObject * -Journal_seek_cursor(Journal *self, PyObject *args) + "seek_cursor(cursor) -> None\n\n" + "Seeks to journal entry by given unique reference `cursor`."); +static PyObject* Journal_seek_cursor(Journal *self, PyObject *args) { const char *cursor; int r; - if (! PyArg_ParseTuple(args, "s", &cursor)) + if (!PyArg_ParseTuple(args, "s", &cursor)) return NULL; Py_BEGIN_ALLOW_THREADS @@ -449,15 +437,13 @@ Journal_seek_cursor(Journal *self, PyObject *args) Py_RETURN_NONE; } -static PyObject * -Journal_iter(PyObject *self) +static PyObject* Journal_iter(PyObject *self) { Py_INCREF(self); return self; } -static PyObject * -Journal_iternext(PyObject *self) +static PyObject* Journal_iternext(PyObject *self) { PyObject *dict; Py_ssize_t dict_size; @@ -476,11 +462,10 @@ Journal_iternext(PyObject *self) } PyDoc_STRVAR(Journal_query_unique__doc__, -"query_unique(field) -> a set of values\n\n" -"Returns a set of unique values in journal for given `field`.\n" -"Note this does not respect any journal matches."); -static PyObject * -Journal_query_unique(Journal *self, PyObject *args) + "query_unique(field) -> a set of values\n\n" + "Returns a set of unique values in journal for given `field`.\n" + "Note this does not respect any journal matches."); +static PyObject* Journal_query_unique(Journal *self, PyObject *args) { char *query; int r; @@ -488,7 +473,7 @@ Journal_query_unique(Journal *self, PyObject *args) size_t uniq_len; PyObject *value_set, *key, *value; - if (! PyArg_ParseTuple(args, "s", &query)) + if (!PyArg_ParseTuple(args, "s", &query)) return NULL; Py_BEGIN_ALLOW_THREADS @@ -512,8 +497,7 @@ Journal_query_unique(Journal *self, PyObject *args) return value_set; } -static PyObject * -Journal_get_data_threshold(Journal *self, void *closure) +static PyObject* Journal_get_data_threshold(Journal *self, void *closure) { size_t cvalue; int r; @@ -525,8 +509,7 @@ Journal_get_data_threshold(Journal *self, void *closure) return long_FromSize_t(cvalue); } -static int -Journal_set_data_threshold(Journal *self, PyObject *value, void *closure) +static int Journal_set_data_threshold(Journal *self, PyObject *value, void *closure) { int r; if (value == NULL) { -- cgit v1.2.1 From d710d36375bacbf9cfb8903107bedf2c0aada84e Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 22 Feb 2013 18:59:07 +0100 Subject: test: test irreversible jobs --- test/TEST-03-JOBS/test-jobs.sh | 13 +++++++++++++ test/TEST-03-JOBS/test.sh | 5 +++-- test/unstoppable.service | 5 +++++ 3 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 test/unstoppable.service diff --git a/test/TEST-03-JOBS/test-jobs.sh b/test/TEST-03-JOBS/test-jobs.sh index 98746c5363..12b38af942 100755 --- a/test/TEST-03-JOBS/test-jobs.sh +++ b/test/TEST-03-JOBS/test-jobs.sh @@ -24,5 +24,18 @@ grep 'hello\.service' /root/list-jobs.txt && exit 1 # TODO: add more job queueing/merging tests here. +# Test for irreversible jobs +systemctl start unstoppable.service || exit 1 + +# This is expected to fail with 'job cancelled' +systemctl stop unstoppable.service && exit 1 +# But this should succeed +systemctl stop --irreversible unstoppable.service || exit 1 + +# We're going to shutdown soon. Let's see if it succeeds when +# there's an active service that tries to be unstoppable. +# Shutdown of the container/VM will hang if not. +systemctl start unstoppable.service || exit 1 + touch /testok exit 0 diff --git a/test/TEST-03-JOBS/test.sh b/test/TEST-03-JOBS/test.sh index bd211f3ad5..6eaba72e57 100755 --- a/test/TEST-03-JOBS/test.sh +++ b/test/TEST-03-JOBS/test.sh @@ -1,7 +1,7 @@ #!/bin/bash # -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- # ex: ts=8 sw=4 sts=4 et filetype=sh -TEST_DESCRIPTION="Job merging" +TEST_DESCRIPTION="Job-related tests" KVERSION=${KVERSION-$(uname -r)} KERNEL_VER=$(uname -r) @@ -138,7 +138,8 @@ Type=oneshot EOF # copy the units used by this test - cp $TEST_BASE_DIR/{hello.service,sleep.service,hello-after-sleep.target} $initdir/etc/systemd/system + cp $TEST_BASE_DIR/{hello.service,sleep.service,hello-after-sleep.target,unstoppable.service} \ + $initdir/etc/systemd/system cp test-jobs.sh $initdir/ mkdir -p $initdir/etc/systemd/system/testsuite.target.wants diff --git a/test/unstoppable.service b/test/unstoppable.service new file mode 100644 index 0000000000..24fb0a25e1 --- /dev/null +++ b/test/unstoppable.service @@ -0,0 +1,5 @@ +[Service] +Type=oneshot +RemainAfterExit=yes +ExecStart=/bin/echo 'I'm unstoppable!' +ExecStop=/bin/systemctl start --no-block unstoppable.service -- cgit v1.2.1 From cb96a2c69a312fb089fef4501650f4fc40a1420b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 24 Feb 2013 14:10:51 +0100 Subject: nspawn: catch config mistake of specifying -b and args --- man/systemd-nspawn.xml | 4 +++- src/nspawn/nspawn.c | 5 +++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index 5cba40bcd4..8396def003 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -170,7 +170,9 @@ Automatically search for an init binary and invoke it instead of a shell or a user supplied - program. + program. A command to execute cannot + be specified in this case. + diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index b8962e9894..c346f58412 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -267,6 +267,11 @@ static int parse_argv(int argc, char *argv[]) { } } + if (optind < argc && arg_boot) { + log_error("Cannot specify a command together with '-b'"); + return -EINVAL; + } + return 1; } -- cgit v1.2.1 From 3ba09ee8eb9453daf9228f612c9bcd59905fcf05 Mon Sep 17 00:00:00 2001 From: "Paul W. Frields" Date: Sun, 24 Feb 2013 15:27:51 +0100 Subject: journal: fix --until https://bugs.freedesktop.org/show_bug.cgi?id=58946 --- src/journal/journalctl.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 0afeef932e..0b3a79bee9 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -433,7 +433,7 @@ static int parse_argv(int argc, char *argv[]) { if (arg_follow && !arg_no_tail && arg_lines < 0) arg_lines = 10; - if (arg_since_set && arg_until_set && arg_since_set > arg_until_set) { + if (arg_since_set && arg_until_set && arg_since > arg_until) { log_error("--since= must be before --until=."); return -EINVAL; } @@ -1076,6 +1076,8 @@ int main(int argc, char *argv[]) { log_error("Failed to determine timestamp: %s", strerror(-r)); goto finish; } + if (usec > arg_until) + goto finish; } if (!arg_merge) { -- cgit v1.2.1 From 855f6f07fec5106c1c0201dd70ffab6764a0c1a6 Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Sun, 24 Feb 2013 16:39:25 -0500 Subject: build: remove explicit -shared in LDFLAGS This doesn't need to be passed, as it's handled by libtool. Since the default for autoconf is --disable-static, this change is effectively a noop. It only matters if you pass --enable-static, in which case the static libs for systemd libraries will actually be built. Nitpicky, but this only affects systemd libs. The override for the other libs remains since these libs are always loaded dynamically and never compiled staticly. --- Makefile.am | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Makefile.am b/Makefile.am index f2d3ac7a42..f0f0ebcbb0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1560,7 +1560,6 @@ libsystemd_daemon_la_CFLAGS = \ libsystemd_daemon_la_LDFLAGS = \ $(AM_LDFLAGS) \ - -shared \ -version-info $(LIBSYSTEMD_DAEMON_CURRENT):$(LIBSYSTEMD_DAEMON_REVISION):$(LIBSYSTEMD_DAEMON_AGE) \ -Wl,--version-script=$(top_srcdir)/src/libsystemd-daemon/libsystemd-daemon.sym @@ -2261,7 +2260,6 @@ libsystemd_id128_la_CFLAGS = \ libsystemd_id128_la_LDFLAGS = \ $(AM_LDFLAGS) \ - -shared \ -version-info $(LIBSYSTEMD_ID128_CURRENT):$(LIBSYSTEMD_ID128_REVISION):$(LIBSYSTEMD_ID128_AGE) \ -Wl,--version-script=$(top_srcdir)/src/libsystemd-id128/libsystemd-id128.sym @@ -2452,7 +2450,6 @@ libsystemd_journal_la_CFLAGS = \ libsystemd_journal_la_LDFLAGS = \ $(AM_LDFLAGS) \ - -shared \ -version-info $(LIBSYSTEMD_JOURNAL_CURRENT):$(LIBSYSTEMD_JOURNAL_REVISION):$(LIBSYSTEMD_JOURNAL_AGE) \ -Wl,--version-script=$(top_srcdir)/src/journal/libsystemd-journal.sym @@ -3254,7 +3251,6 @@ libsystemd_login_la_CFLAGS = \ libsystemd_login_la_LDFLAGS = \ $(AM_LDFLAGS) \ - -shared \ -version-info $(LIBSYSTEMD_LOGIN_CURRENT):$(LIBSYSTEMD_LOGIN_REVISION):$(LIBSYSTEMD_LOGIN_AGE) \ -Wl,--version-script=$(top_srcdir)/src/login/libsystemd-login.sym -- cgit v1.2.1 From 317c96d944e01e6e87200dd7ebe964fe9774d2c4 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Fri, 22 Feb 2013 17:40:00 +0100 Subject: debug-shell: don't be picky, use /bin/sh rather than /bin/bash In a minimal initramfs, one might not always have the full bash available. Typically if using busybox. --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 834b12314c..b7a587c662 100644 --- a/configure.ac +++ b/configure.ac @@ -276,7 +276,7 @@ AM_CONDITIONAL(HAVE_SELINUX, [test "$have_selinux" = "yes"]) if test "x${have_selinux}" != xno ; then sushell=/sbin/sushell else - sushell=/bin/bash + sushell=/bin/sh fi AC_SUBST(sushell) -- cgit v1.2.1 From 1ddf879acf388a4625150c3a97b76458f6d2a070 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Mon, 25 Feb 2013 18:33:08 +0100 Subject: Revert "nspawn: catch config mistake of specifying -b and args" This reverts commit cb96a2c69a312fb089fef4501650f4fc40a1420b. It is not a mistake to pass args when -b is specified. They will simply be passed on to the container's init. The manpage needs fixing, that's true. --- man/systemd-nspawn.xml | 4 +--- src/nspawn/nspawn.c | 5 ----- 2 files changed, 1 insertion(+), 8 deletions(-) diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index 8396def003..5cba40bcd4 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -170,9 +170,7 @@ Automatically search for an init binary and invoke it instead of a shell or a user supplied - program. A command to execute cannot - be specified in this case. - + program. diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index c346f58412..b8962e9894 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -267,11 +267,6 @@ static int parse_argv(int argc, char *argv[]) { } } - if (optind < argc && arg_boot) { - log_error("Cannot specify a command together with '-b'"); - return -EINVAL; - } - return 1; } -- cgit v1.2.1 From 81516adcb71a47837544340f72eb8ee810274119 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Fri, 22 Feb 2013 17:18:47 +0100 Subject: kernel-install: add kernel-install tool --- Makefile-man.am | 1 + Makefile.am | 3 + man/kernel-install.xml | 138 ++++++++++++++++++++++++++++++++++ src/kernel-install/kernel-install | 152 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 294 insertions(+) create mode 100644 man/kernel-install.xml create mode 100644 src/kernel-install/kernel-install diff --git a/Makefile-man.am b/Makefile-man.am index e4eb26ce6e..526c05d521 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -9,6 +9,7 @@ MANPAGES += \ man/journalctl.1 \ man/journald.conf.5 \ man/kernel-command-line.7 \ + man/kernel-install.8 \ man/locale.conf.5 \ man/localtime.5 \ man/machine-id.5 \ diff --git a/Makefile.am b/Makefile.am index f0f0ebcbb0..74534cce82 100644 --- a/Makefile.am +++ b/Makefile.am @@ -278,6 +278,9 @@ bin_PROGRAMS = \ systemd-delta \ systemd-analyze +bin_SCRIPTS = \ + src/kernel-install/kernel-install + rootlibexec_PROGRAMS = \ systemd \ systemd-cgroups-agent \ diff --git a/man/kernel-install.xml b/man/kernel-install.xml new file mode 100644 index 0000000000..06939fa090 --- /dev/null +++ b/man/kernel-install.xml @@ -0,0 +1,138 @@ + + + + + + + + + kernel-install + systemd + + + + Developer + Harald + Hoyer + harald@redhat.com + + + + + + kernel-install + 8 + + + + kernel-install + Add and remove kernel and initramfs images to and from /boot + + + + + kernel-install COMMAND KERNEL VERSION KERNEL IMAGE + + + + + Description + + kernel-install is used to install and remove kernel and + initramfs images to and from /boot. + + + kernel-install will execute the files located in the directory /usr/lib/kernel/install.d/ + and the local administration directory /etc/kernel/install.d/. + All files are collectively sorted and executed in lexical order, regardless of the directories in + which they live. However, files with identical file names replace each other. + Files in /etc/kernel/install.d/ take precedence over files with the same name + in /usr/lib/kernel/install.d/. This can be used to override a system-supplied + executables with a local file if needed; a symbolic link in /etc/kernel/install.d/ + with the same name as an executable in /usr/lib/kernel/install.d/, + pointing to /dev/null, disables the executable entirely. Executables must have the + extension .install; other extensions are ignored. + + + + + Commands + The following commands are understood: + + + add <KERNEL VERSION> <KERNEL IMAGE> + + calls every executable /usr/lib/kernel/install.d/*.install + and /etc/kernel/install.d/*.install with the arguments + "add <KERNEL VERSION> /boot/<MACHINE-ID>/<KERNEL VERSION>/" + + kernel-install copies <KERNEL IMAGE> to + /boot/<MACHINE-ID>/<KERNEL VERSION>/linux. + + kernel-install also creates a boot loader entry according to the boot loader specification + in /boot/loader/entries/<OS-ID>-<KERNEL VERSION>-<MACHINE-ID>.conf. + If the file initrd is found next to the linux file, + the initrd will be added to the configuration. + + + + remove <KERNEL VERSION> <KERNEL IMAGE> + calls every executable /usr/lib/kernel/install.d/*.install + and /etc/kernel/install.d/*.install with the arguments: + "remove <KERNEL VERSION> /boot/<MACHINE-ID>/<KERNEL VERSION>/" + + kernel-install removes the entire directory /boot/<MACHINE-ID>/<KERNEL VERSION>/ + and the file /boot/loader/entries/<OS-ID>-<KERNEL VERSION>-<MACHINE-ID>.conf + + + + + + + + + Exit status + If every executable returns with 0, 0 is returned, a non-zero failure code otherwise. + + + + Files + + + + /usr/lib/kernel/install.d/*.install + /etc/kernel/install.d/*.install + + + Drop-in files, which are executed by kernel-install. + + + + + + + See Also + + Boot loader specification + + + + diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install new file mode 100644 index 0000000000..1bbbc17556 --- /dev/null +++ b/src/kernel-install/kernel-install @@ -0,0 +1,152 @@ +#!/bin/bash +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh +# +# This file is part of systemd. +# +# Copyright 2013 Harald Hoyer +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see . + +export LC_COLLATE=C + +COMMAND="$1" +KERNEL_VERSION="$2" +KERNEL_IMAGE="$3" + +[[ -f /etc/os-release ]] && . /etc/os-release +if ! [[ $ID ]]; then + echo "Can't determine the name of your distribution. Please create /etc/os-release." >&2 + echo "See http://www.freedesktop.org/software/systemd/man/os-release.html" >&2 + exit 1 +fi + +[[ -f /etc/machine-id ]] && read MACHINE_ID < /etc/machine-id +if ! [[ $MACHINE_ID ]]; then + echo "Can't determine your machine id. Please create /etc/machine-id!" >&2 + echo "See http://www.freedesktop.org/software/systemd/man/machine-id.html" >&2 + exit 1 +fi + +if [[ -f /etc/kernel/cmdline ]]; then + readarray -t BOOT_OPTIONS < /etc/kernel/cmdline +fi + +if ! [[ "${BOOT_OPTIONS[@]}" ]]; then + readarray -t BOOT_OPTIONS < /proc/cmdline +fi + +if ! [[ $BOOT_OPTIONS ]]; then + echo "Can't determine the kernel command line parameters." >&2 + echo "Please specify the kernel command line in /etc/kernel/cmdline!" >&2 + exit 1 +fi + +usage() +{ + { + echo "Usage:" + echo " $0 add " + echo " $0 remove " + } >&2 +} + +if ! ( [[ $COMMAND ]] && [[ $KERNEL_VERSION ]] && [[ $KERNEL_IMAGE ]] ); then + usage + exit 1 +fi + +BOOT_DIR="/boot/$MACHINE_ID/$KERNEL_VERSION" +ret=0 + +dropindirs_sort() +{ + suffix=$1; shift + readarray -t files< <( + for d in "$@"; do + for i in "${d}/"*${suffix}; do + [[ -e $i ]] && echo ${i##*/} + done + done | sort -Vu + ) + + for f in "${files[@]}"; do + for d in "$@"; do + if [[ -e "$d/$f" ]]; then + echo "$d/$f" + continue 2 + fi + done + done +} + +readarray -t PLUGINS < <( + dropindirs_sort ".install" \ + "/etc/kernel/install.d" \ + "/usr/lib/kernel/install.d" +) + +case "$COMMAND" in + add) + mkdir -p "$BOOT_DIR" || exit 1 + + for f in "${PLUGINS[@]}"; do + [[ -x $f ]] && "$f" add "$KERNEL_VERSION" "$BOOT_DIR" + ((ret+=$?)) + done + + if ! cp --preserve "$KERNEL_IMAGE" "$BOOT_DIR"/linux; then + echo "Can't copy '$KERNEL_IMAGE to '$BOOT_DIR/linux'!" >&2 + fi + + [[ -d /boot/loader/entries ]] || mkdir -p /boot/loader/entries + + { + echo "title $PRETTY_NAME" + echo "version $KERNEL_VERSION" + echo "machine-id $MACHINE_ID" + echo "options $BOOT_OPTIONS" + echo "linux $BOOT_DIR/linux" + [[ -f "${BOOT_DIR}"/initrd ]] && \ + echo "initrd $BOOT_DIR/initrd" + : + } > "/boot/loader/entries/${ID}-${KERNEL_VERSION}-${MACHINE_ID}.conf" +export LANG=C + + ((ret+=$?)) + + if ! [[ -f "/boot/loader/entries/${ID}-${KERNEL_VERSION}-${MACHINE_ID}.conf" ]]; then + echo "Could not create '/boot/loader/entries/${ID}-${KERNEL_VERSION}-${MACHINE_ID}.conf'!" >&2 + fi + + ;; + + remove) + for f in "${PLUGINS[@]}"; do + [[ -x $f ]] && "$f" remove "$KERNEL_VERSION" "$BOOT_DIR" + ((ret+=$?)) + done + + rm -fr "$BOOT_DIR" + rm -f "/boot/loader/entries/${ID}-${KERNEL_VERSION}-${MACHINE_ID}.conf" + ;; + + *) + usage + ret=1;; +esac + +((ret+=$?)) + +exit $ret -- cgit v1.2.1 From 2d0614d3d310e1fa0246bb6fcf90f7014acaf209 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Mon, 25 Feb 2013 19:29:16 +0100 Subject: kernel-install(8): add documentation about the configuration files used --- man/kernel-install.xml | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/man/kernel-install.xml b/man/kernel-install.xml index 06939fa090..93dc0ae4fd 100644 --- a/man/kernel-install.xml +++ b/man/kernel-install.xml @@ -125,12 +125,40 @@ along with systemd; If not, see . Drop-in files, which are executed by kernel-install. + + + /etc/kernel/cmdline + /proc/cmdline + + + The contents of the file /etc/kernel/cmdline specifies the kernel command line to use. + If that file does not exist, /proc/cmdline is used. + + + + + /etc/machine-id + + + The contents of the file specifies the machine identifaction <MACHINE-ID>. + + + + + /etc/os-release + + + The contents of the file specifies the the operating system id <OS-ID>. + + See Also + machine-id5, + os-release5, Boot loader specification -- cgit v1.2.1 From 17fe052346f1d905b5ce0f12123b5ce24e992c6b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Feb 2013 18:21:13 +0100 Subject: nspawn: add --bind= and --bind-ro= to bind mount host paths into the container --- man/systemd-nspawn.xml | 20 +++++++++ src/nspawn/nspawn.c | 119 ++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 117 insertions(+), 22 deletions(-) diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index 5cba40bcd4..41477b46d5 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -298,6 +298,26 @@ Equivalent to . + + + + + + Bind mount a file or + directory from the host into the + container. Either takes a path + argument -- in which case the + specified path will be mounted from + the host to the same path in the + container --, or a colon-separated + pair of paths -- in which case the + first specified path is the source in + the host, and the second path is the + destination in the container. The + option + creates read-only bind + mount. + diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index b8962e9894..d35a8b547b 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -101,23 +101,30 @@ static uint64_t arg_retain = (1ULL << CAP_SYS_BOOT) | (1ULL << CAP_AUDIT_WRITE) | (1ULL << CAP_AUDIT_CONTROL); +static char **arg_bind = NULL; +static char **arg_bind_ro = NULL; static int help(void) { printf("%s [OPTIONS...] [PATH] [ARGUMENTS...]\n\n" "Spawn a minimal namespace container for debugging, testing and building.\n\n" - " -h --help Show this help\n" - " --version Print version string\n" - " -D --directory=NAME Root directory for the container\n" - " -b --boot Boot up full system (i.e. invoke init)\n" - " -u --user=USER Run the command under specified user or uid\n" - " -C --controllers=LIST Put the container in specified comma-separated cgroup hierarchies\n" - " --uuid=UUID Set a specific machine UUID for the container\n" - " --private-network Disable network in container\n" - " --read-only Mount the root directory read-only\n" - " --capability=CAP In addition to the default, retain specified capability\n" - " --link-journal=MODE Link up guest journal, one of no, auto, guest, host\n" - " -j Equivalent to --link-journal=host\n", + " -h --help Show this help\n" + " --version Print version string\n" + " -D --directory=NAME Root directory for the container\n" + " -b --boot Boot up full system (i.e. invoke init)\n" + " -u --user=USER Run the command under specified user or uid\n" + " -C --controllers=LIST Put the container in specified comma-separated\n" + " cgroup hierarchies\n" + " --uuid=UUID Set a specific machine UUID for the container\n" + " --private-network Disable network in container\n" + " --read-only Mount the root directory read-only\n" + " --capability=CAP In addition to the default, retain specified\n" + " capability\n" + " --link-journal=MODE Link up guest journal, one of no, auto, guest, host\n" + " -j Equivalent to --link-journal=host\n" + " --bind=PATH[:PATH] Bind mount a file or directory from the host into\n" + " the container\n" + " --bind-ro=PATH[:PATH] Similar, but creates a read-only bind mount\n", program_invocation_short_name); return 0; @@ -131,7 +138,9 @@ static int parse_argv(int argc, char *argv[]) { ARG_UUID, ARG_READ_ONLY, ARG_CAPABILITY, - ARG_LINK_JOURNAL + ARG_LINK_JOURNAL, + ARG_BIND, + ARG_BIND_RO }; static const struct option options[] = { @@ -146,6 +155,8 @@ static int parse_argv(int argc, char *argv[]) { { "read-only", no_argument, NULL, ARG_READ_ONLY }, { "capability", required_argument, NULL, ARG_CAPABILITY }, { "link-journal", required_argument, NULL, ARG_LINK_JOURNAL }, + { "bind", required_argument, NULL, ARG_BIND }, + { "bind-ro", required_argument, NULL, ARG_BIND_RO }, { NULL, 0, NULL, 0 } }; @@ -258,6 +269,43 @@ static int parse_argv(int argc, char *argv[]) { break; + case ARG_BIND: + case ARG_BIND_RO: { + _cleanup_free_ char *a = NULL, *b = NULL; + char *e; + char ***x; + int r; + + x = c == ARG_BIND ? &arg_bind : &arg_bind_ro; + + e = strchr(optarg, ':'); + if (e) { + a = strndup(optarg, e - optarg); + b = strdup(e + 1); + } else { + a = strdup(optarg); + b = strdup(optarg); + } + + if (!a || !b) + return log_oom(); + + if (!path_is_absolute(a) || !path_is_absolute(b)) { + log_error("Invalid bind mount specification: %s", optarg); + return -EINVAL; + } + + r = strv_extend(x, a); + if (r < 0) + return r; + + r = strv_extend(x, b); + if (r < 0) + return r; + + break; + } + case '?': return -EINVAL; @@ -303,14 +351,9 @@ static int mount_all(const char *dest) { char _cleanup_free_ *where = NULL; int t; - if (asprintf(&where, "%s/%s", dest, mount_table[k].where) < 0) { - log_oom(); - - if (r == 0) - r = -ENOMEM; - - break; - } + where = strjoin(dest, "/", mount_table[k].where, NULL); + if (!where) + return log_oom(); t = path_is_mount_point(where, true); if (t < 0) { @@ -326,7 +369,7 @@ static int mount_all(const char *dest) { if (mount_table[k].what && t > 0) continue; - mkdir_p_label(where, 0755); + mkdir_p(where, 0755); if (mount(mount_table[k].what, where, @@ -345,6 +388,32 @@ static int mount_all(const char *dest) { return r; } +static int mount_binds(const char *dest, char **l, unsigned long flags) { + char **x, **y; + + STRV_FOREACH_PAIR(x, y, l) { + _cleanup_free_ char *where = NULL; + + where = strjoin(dest, "/", *y, NULL); + if (!where) + return log_oom(); + + mkdir_p_label(where, 0755); + + if (mount(*x, where, "bind", MS_BIND, NULL) < 0) { + log_error("mount(%s) failed: %m", where); + return -errno; + } + + if (flags && mount(NULL, where, NULL, MS_REMOUNT|MS_BIND|flags, NULL) < 0) { + log_error("mount(%s) failed: %m", where); + return -errno; + } + } + + return 0; +} + static int setup_timezone(const char *dest) { _cleanup_free_ char *where = NULL, *p = NULL, *q = NULL, *check = NULL, *what = NULL; char *z, *y; @@ -1346,6 +1415,12 @@ int main(int argc, char *argv[]) { if (setup_journal(arg_directory) < 0) goto child_fail; + if (mount_binds(arg_directory, arg_bind, 0) < 0) + goto child_fail; + + if (mount_binds(arg_directory, arg_bind_ro, MS_RDONLY) < 0) + goto child_fail; + if (chdir(arg_directory) < 0) { log_error("chdir(%s) failed: %m", arg_directory); goto child_fail; -- cgit v1.2.1 From 61f99b60644cbf92c35627937868cd62557898b1 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 25 Feb 2013 23:18:57 +0100 Subject: kernel-install: remove LANG= --- src/kernel-install/kernel-install | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install index 1bbbc17556..1a694578a1 100644 --- a/src/kernel-install/kernel-install +++ b/src/kernel-install/kernel-install @@ -122,14 +122,12 @@ case "$COMMAND" in echo "initrd $BOOT_DIR/initrd" : } > "/boot/loader/entries/${ID}-${KERNEL_VERSION}-${MACHINE_ID}.conf" -export LANG=C ((ret+=$?)) if ! [[ -f "/boot/loader/entries/${ID}-${KERNEL_VERSION}-${MACHINE_ID}.conf" ]]; then echo "Could not create '/boot/loader/entries/${ID}-${KERNEL_VERSION}-${MACHINE_ID}.conf'!" >&2 fi - ;; remove) -- cgit v1.2.1 From 1ef04f0b14a5e48a822683a9e3a19233b42aecb2 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Mon, 25 Feb 2013 23:41:55 +0100 Subject: tests: add a few more tests to test-util.c Add asserts on the resutls in FOREACH_WORD_QUOTED Added tests for: FOREACH_WORD strstrip delete_chars in_charset --- src/test/test-util.c | 71 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 67 insertions(+), 4 deletions(-) diff --git a/src/test/test-util.c b/src/test/test-util.c index e4dea09f85..c15f19df8e 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -129,17 +129,76 @@ static void test_safe_atod(void) { assert_se(r == -EINVAL); } +static void test_strstrip(void) { + char *r; + char input[] = " hello, waldo. "; + + r = strstrip(input); + assert_se(streq(r, "hello, waldo.")); + +} + +static void test_delete_chars(void) { + char *r; + char input[] = " hello, waldo. abc"; + + r = delete_chars(input, WHITESPACE); + assert_se(streq(r, "hello,waldo.abc")); +} + +static void test_in_charset(void) { + assert_se(in_charset("dddaaabbbcccc", "abcd")); + assert_se(!in_charset("dddaaabbbcccc", "abc f")); +} + +static void test_foreach_word(void) { + char *w, *state; + size_t l; + int i = 0; + const char test[] = "test abc d\te f "; + const char * const expected[] = { + "test", + "abc", + "d", + "e", + "f", + "", + NULL + }; + + FOREACH_WORD(w, l, test, state) { + assert_se(strneq(expected[i++], w, l)); + } +} + static void test_foreach_word_quoted(void) { char *w, *state; size_t l; - const char test[] = "test a b c 'd' e '' '' hhh '' ''"; + int i = 0; + const char test[] = "test a b c 'd' e '' '' hhh '' '' \"a b c\""; + const char * const expected[] = { + "test", + "a", + "b", + "c", + "d", + "e", + "", + "", + "hhh", + "", + "", + "a b c", + NULL + }; + printf("<%s>\n", test); FOREACH_WORD_QUOTED(w, l, test, state) { - char *t; + _cleanup_free_ char *t = NULL; assert_se(t = strndup(w, l)); + assert_se(strneq(expected[i++], w, l)); printf("<%s>\n", t); - free(t); } } @@ -175,12 +234,16 @@ int main(int argc, char *argv[]) { test_streq_ptr(); test_first_word(); test_parse_boolean(); - test_default_term_for_tty(); test_parse_pid(); test_parse_uid(); test_safe_atolli(); test_safe_atod(); + test_strstrip(); + test_delete_chars(); + test_in_charset(); + test_foreach_word(); test_foreach_word_quoted(); + test_default_term_for_tty(); test_memdup_multiply(); return 0; -- cgit v1.2.1 From 6557484fb169f4fad7e9e877c7c553288aa67b20 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 26 Feb 2013 08:47:18 +0100 Subject: kernel-install: fixed paths in boot loader entry For the loader entry a relative path has to be used. --- src/kernel-install/kernel-install | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install index 1a694578a1..769c609606 100644 --- a/src/kernel-install/kernel-install +++ b/src/kernel-install/kernel-install @@ -67,7 +67,9 @@ if ! ( [[ $COMMAND ]] && [[ $KERNEL_VERSION ]] && [[ $KERNEL_IMAGE ]] ); then exit 1 fi -BOOT_DIR="/boot/$MACHINE_ID/$KERNEL_VERSION" +BOOT_DIR="$MACHINE_ID/$KERNEL_VERSION" +BOOT_DIR_ABS="/boot/$BOOT_DIR" +LOADER_ENTRY="/boot/loader/entries/${ID}-${KERNEL_VERSION}-${MACHINE_ID}.conf" ret=0 dropindirs_sort() @@ -99,15 +101,15 @@ readarray -t PLUGINS < <( case "$COMMAND" in add) - mkdir -p "$BOOT_DIR" || exit 1 + mkdir -p "$BOOT_DIR_ABS" || exit 1 for f in "${PLUGINS[@]}"; do - [[ -x $f ]] && "$f" add "$KERNEL_VERSION" "$BOOT_DIR" + [[ -x $f ]] && "$f" add "$KERNEL_VERSION" "$BOOT_DIR_ABS" ((ret+=$?)) done - if ! cp --preserve "$KERNEL_IMAGE" "$BOOT_DIR"/linux; then - echo "Can't copy '$KERNEL_IMAGE to '$BOOT_DIR/linux'!" >&2 + if ! cp --preserve "$KERNEL_IMAGE" "$BOOT_DIR_ABS"/linux; then + echo "Can't copy '$KERNEL_IMAGE to '$BOOT_DIR_ABS/linux'!" >&2 fi [[ -d /boot/loader/entries ]] || mkdir -p /boot/loader/entries @@ -116,28 +118,28 @@ case "$COMMAND" in echo "title $PRETTY_NAME" echo "version $KERNEL_VERSION" echo "machine-id $MACHINE_ID" - echo "options $BOOT_OPTIONS" + echo "options ${BOOT_OPTIONS[@]}" echo "linux $BOOT_DIR/linux" - [[ -f "${BOOT_DIR}"/initrd ]] && \ + [[ -f "${BOOT_DIR_ABS}"/initrd ]] && \ echo "initrd $BOOT_DIR/initrd" : - } > "/boot/loader/entries/${ID}-${KERNEL_VERSION}-${MACHINE_ID}.conf" + } > $LOADER_ENTRY ((ret+=$?)) - if ! [[ -f "/boot/loader/entries/${ID}-${KERNEL_VERSION}-${MACHINE_ID}.conf" ]]; then - echo "Could not create '/boot/loader/entries/${ID}-${KERNEL_VERSION}-${MACHINE_ID}.conf'!" >&2 + if ! [[ -f $LOADER_ENTRY ]]; then + echo "Could not create '$LOADER_ENTRY'!" >&2 fi ;; remove) for f in "${PLUGINS[@]}"; do - [[ -x $f ]] && "$f" remove "$KERNEL_VERSION" "$BOOT_DIR" + [[ -x $f ]] && "$f" remove "$KERNEL_VERSION" "$BOOT_DIR_ABS" ((ret+=$?)) done - rm -fr "$BOOT_DIR" - rm -f "/boot/loader/entries/${ID}-${KERNEL_VERSION}-${MACHINE_ID}.conf" + rm -fr "$BOOT_DIR_ABS" + rm -f "$LOADER_ENTRY" ;; *) -- cgit v1.2.1 From d1ebea5f2c59bab4b874e4479d61ad09b796ce30 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 26 Feb 2013 08:56:45 +0100 Subject: kernel-install: replace URLs with man pages in the error messages --- src/kernel-install/kernel-install | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install index 769c609606..8dd7f6788b 100644 --- a/src/kernel-install/kernel-install +++ b/src/kernel-install/kernel-install @@ -28,14 +28,14 @@ KERNEL_IMAGE="$3" [[ -f /etc/os-release ]] && . /etc/os-release if ! [[ $ID ]]; then echo "Can't determine the name of your distribution. Please create /etc/os-release." >&2 - echo "See http://www.freedesktop.org/software/systemd/man/os-release.html" >&2 + echo "See man:os-release(5)" >&2 exit 1 fi [[ -f /etc/machine-id ]] && read MACHINE_ID < /etc/machine-id if ! [[ $MACHINE_ID ]]; then echo "Can't determine your machine id. Please create /etc/machine-id!" >&2 - echo "See http://www.freedesktop.org/software/systemd/man/machine-id.html" >&2 + echo "See man:machine-id(5)" >&2 exit 1 fi -- cgit v1.2.1 From 4120b92f8e3977c644c5fb1ab0c7bc505108d491 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 26 Feb 2013 10:56:07 +0100 Subject: kernel-install: create the loader entries with absolute paths relative to /boot --- src/kernel-install/kernel-install | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install index 8dd7f6788b..6378d8c315 100644 --- a/src/kernel-install/kernel-install +++ b/src/kernel-install/kernel-install @@ -67,8 +67,8 @@ if ! ( [[ $COMMAND ]] && [[ $KERNEL_VERSION ]] && [[ $KERNEL_IMAGE ]] ); then exit 1 fi -BOOT_DIR="$MACHINE_ID/$KERNEL_VERSION" -BOOT_DIR_ABS="/boot/$BOOT_DIR" +BOOT_DIR="/${MACHINE_ID}/${KERNEL_VERSION}" +BOOT_DIR_ABS="/boot${BOOT_DIR}" LOADER_ENTRY="/boot/loader/entries/${ID}-${KERNEL_VERSION}-${MACHINE_ID}.conf" ret=0 -- cgit v1.2.1 From 82673dd4104482b9ffe71441d125918409665c5e Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 26 Feb 2013 14:58:38 +0100 Subject: kernel-install: rename the loader entry filename The wildcard matching the default loader entry should always be able to point to the same machine. So instead of sorting by -- we better sort by -. --- src/kernel-install/kernel-install | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install index 6378d8c315..16c06e0842 100644 --- a/src/kernel-install/kernel-install +++ b/src/kernel-install/kernel-install @@ -69,7 +69,7 @@ fi BOOT_DIR="/${MACHINE_ID}/${KERNEL_VERSION}" BOOT_DIR_ABS="/boot${BOOT_DIR}" -LOADER_ENTRY="/boot/loader/entries/${ID}-${KERNEL_VERSION}-${MACHINE_ID}.conf" +LOADER_ENTRY="/boot/loader/entries/${MACHINE_ID}-${KERNEL_VERSION}.conf" ret=0 dropindirs_sort() -- cgit v1.2.1 From 1495115aa483301bc7704488c58efa4e47f9ef6a Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 26 Feb 2013 16:17:54 +0100 Subject: TODO: update --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index 4bcaea7ceb..69e9b4d7f2 100644 --- a/TODO +++ b/TODO @@ -51,6 +51,8 @@ Fedora 19: http://lists.freedesktop.org/archives/systemd-devel/2013-February/008816.html Features: +* convert /etc/bash_completion.d/ to /usr/share/bash-completion/ + (systemd (and everything else) should install zero static data in /etc) * figure out what we do about hostnames/fqdn in hostnamectl/hostnamed -- cgit v1.2.1 From 44f4c86c424582caad04ea95ebf185c93d11325e Mon Sep 17 00:00:00 2001 From: Daniel Buch Date: Tue, 26 Feb 2013 14:24:12 +0100 Subject: test-util.c: added hexchar, unhexchar, octchar, unoctchar, decchar, undecchar tests --- src/test/test-util.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/test/test-util.c b/src/test/test-util.c index c15f19df8e..cb0af4f6a1 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -151,6 +151,37 @@ static void test_in_charset(void) { assert_se(!in_charset("dddaaabbbcccc", "abc f")); } +static void test_hexchar(void) { + assert_se(hexchar(0xa) == 'a'); + assert_se(hexchar(0x0) == '0'); +} + +static void test_unhexchar(void) { + assert_se(unhexchar('a') == 0xA); + assert_se(unhexchar('A') == 0xA); + assert_se(unhexchar('0') == 0x0); +} + +static void test_octchar(void) { + assert_se(octchar(00) == '0'); + assert_se(octchar(07) == '7'); +} + +static void test_unoctchar(void) { + assert_se(unoctchar('0') == 00); + assert_se(unoctchar('7') == 07); +} + +static void test_decchar(void) { + assert_se(decchar(0) == '0'); + assert_se(decchar(9) == '9'); +} + +static void test_undecchar(void) { + assert_se(undecchar('0') == 0); + assert_se(undecchar('9') == 9); +} + static void test_foreach_word(void) { char *w, *state; size_t l; @@ -241,6 +272,12 @@ int main(int argc, char *argv[]) { test_strstrip(); test_delete_chars(); test_in_charset(); + test_hexchar(); + test_unhexchar(); + test_octchar(); + test_unoctchar(); + test_decchar(); + test_undecchar(); test_foreach_word(); test_foreach_word_quoted(); test_default_term_for_tty(); -- cgit v1.2.1 From 3679d1126bae52e02f6cd60fca196f616b9e660d Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 27 Feb 2013 02:24:10 +0100 Subject: update TODO, hackfest edition --- TODO | 51 ++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index 69e9b4d7f2..54a93fdff4 100644 --- a/TODO +++ b/TODO @@ -17,6 +17,7 @@ Bugfixes: * suppress log output on shutdown when "quiet" is used Fedora 19: + * make anaconda write timeout=0 for encrypted devices * make sure pkexec works fine with pam_systemd works fine with audit=0 @@ -51,9 +52,51 @@ Fedora 19: http://lists.freedesktop.org/archives/systemd-devel/2013-February/008816.html Features: + * convert /etc/bash_completion.d/ to /usr/share/bash-completion/ (systemd (and everything else) should install zero static data in /etc) +* tmpfiles: when traversing the tree, check for bind mount points with nametohandle() + +* fedora: connect the timer units of a service to the service via Also= in [Install], and maybe introduce timers.target + +* fedora: F20: go timer units all the way, leave cron.daily for cron + +* add a tool that lists active timer units plus their next elapstion and the time the units ran last + +* man: document the very specific env the shutdown drop-in tools live in + +* shutdown logging: store to EFI var, and store to USB stick? + +* man: extend runlevel(8) to mention that runlevels suck, and are dead. Maybe add runlevel(7) with a note about that too + +* systemctl: maybe add "systemctl add-wants" or so... + +* man: add a link to socket activation blog from systemd.socket(5) + +* systemctl status: show drop-in snippets for service files in addition to service file path themesevles. + +* man: add more examples to man pages + +* man: maybe sort directives in man pages, and take sections from --help and apply them to man too + +* man: systemctl: clarify that -p applies to "systemctl show" only + +* add "# export SYSTEMD_PAGER=" to bash login + +* /usr/bin/service should actually show the new command line + +* fedora: suggest auto-restart on failure, but not on sucess and not on coredump. also, ask people to think about changing the start limit logic. Also point people to RestartPreventExitStatus=, SuccessExitStatus= + +* write UI tool that pops up emergency messages from the journal as notification + +* think about window-manager-run-as-user-service problem: exit 0 → activate shutdown.target; exit != 0 → restart service + +* msgcatalog determine default language of entries from the catalog + file name. i.e. foobar.de_DE.catalog would set the default entry + name for the entries to de_DE if they aren't explicitly suffixed + individually. + * figure out what we do about hostnames/fqdn in hostnamectl/hostnamed * use "log level" rather than "log priority" everywhere @@ -268,6 +311,8 @@ Features: interfaces to the container - nspawn: maybe add a way to drop additional caps, in addition to add additional caps - nspawn: maybe explicitly reset loginuid? + - nspawn: move all containers to name=systemd:/containers/, and introduce externally visible names for containers + - nspawn: make it work for dwalsh and shared /usr containers -- tmpfs mounts as command line parameters, selinux exec context * cryptsetup: - cryptsetup-generator: warn if the password files are world-readable @@ -480,7 +525,11 @@ Features: - non-cgroup resource management - dynamic resource management with cgroups - refreshed, longer missions statement - - celendar time events + - calendar time events + - init=/bin/sh vs. "emergency" mode, vs. "rescue" mode, vs. "multi-user" mode, vs. "graphical" mode, and the debug shell + - how to create your own target + - instantiated apache, dovecot and so on + - hooking a script into various stages of shutdown/rearly booot * allow port=0 in .socket units -- cgit v1.2.1 From 1883552c3d80d44f4cb368874d54c1cb15b83e61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 25 Feb 2013 15:24:10 +0100 Subject: bash-completion: journalctl query by binary and device The approach taken is different between the two: - since there are many files in /usr, but messages appear only for a tiny subset, the completion is performed only for stuff shown by journalctl -F _EXE. This makes sense because the list is already in proper form. - since it is hard to convert _KERNEL_DEVICE to device file name, simply all files in /dev/ are used as possible completions. Unfortunately zsh completion requires more work and is not covered by this commit. --- shell-completion/systemd-bash-completion.sh | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/shell-completion/systemd-bash-completion.sh b/shell-completion/systemd-bash-completion.sh index 1132b3c028..7848bafc17 100644 --- a/shell-completion/systemd-bash-completion.sh +++ b/shell-completion/systemd-bash-completion.sh @@ -334,6 +334,20 @@ _journalctl() { elif [[ $cur = *=* ]]; then mapfile -t field_vals < <(journalctl -F "${prev%=}" 2>/dev/null) COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur#=}") ) + elif [[ $cur = /dev* ]]; then + compopt -o filenames + COMPREPLY=( $(compgen -f -- "${cur}") ) + elif [[ $cur = /* ]]; then + # Append /dev/ to the list of completions, so that + # after typing / the user sees /dev/ as one + # of the alternatives. Later on the rule above will + # take care of showing device files in /dev/. + mapfile -t field_vals < <(journalctl -F "_EXE" 2>/dev/null; echo '/dev/') + COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur}") ) + if [[ "${COMPREPLY[@]}" = '/dev/' ]]; then + compopt -o filenames + COMPREPLY=( $(compgen -f -- "${cur}") ) + fi elif [[ $prev = '=' ]]; then mapfile -t field_vals < <(journalctl -F "${COMP_WORDS[COMP_CWORD-2]}" 2>/dev/null) COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "$cur") ) -- cgit v1.2.1 From d95b1fb315f62313be5bee5bee3b2d1467868a7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 25 Feb 2013 05:51:41 +0100 Subject: log-show: look at everything in /run/log/journal Logs written by journald from the initramfs may be written to a directory with the name created from a random machine-id. Afterwards, when the root filesystem has been mounted and machine-id reinitalized, logs will be written to the directory with a name created from the proper machine-id. When logs are flushed to /var/log/journal, everything is copied to one output directory. When journalctl without '-m' is run after the logs have been flushed to /var/log/journal, all messages are shown. However, when run while logs are still in /run/log/journal, those stored under the random machine-id will not be shown. Make journalctl behave the same regardless whether persistent storage has been enabled or not, and slurp all files from /run/log/journal even without '-m'. --- src/journal/sd-journal.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 8904560094..19123544b3 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -1321,10 +1321,12 @@ static int add_directory(sd_journal *j, const char *prefix, const char *dirname) assert(prefix); assert(dirname); + log_debug("Considering %s/%s.", prefix, dirname); + if ((j->flags & SD_JOURNAL_LOCAL_ONLY) && (sd_id128_from_string(dirname, &id) < 0 || sd_id128_get_machine(&mid) < 0 || - !sd_id128_equal(id, mid))) + !(sd_id128_equal(id, mid) || path_startswith(prefix, "/run")))) return 0; path = strjoin(prefix, "/", dirname, NULL); -- cgit v1.2.1 From c06bf414042cd1bf94e0af63e9e2a0c291bfc546 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 27 Feb 2013 13:07:09 +0100 Subject: mount-setup: mount pstore filesystem --- TODO | 1 + src/core/mount-setup.c | 10 ++++++---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/TODO b/TODO index 54a93fdff4..f7861c4ea8 100644 --- a/TODO +++ b/TODO @@ -159,6 +159,7 @@ Features: * service: watchdog logic: for testing purposes allow ping, but do not require pong * journal: + - import and delete pstore filesystem content at startup - journald: also get thread ID from client, plus thread name - journal: when waiting for journal additions in the client always sleep at least 1s or so, in order to minimize wakeups - add API to close/reopen/get fd for journal client fd in libsystemd-journal. diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index e7e2736615..dab3601467 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -77,10 +77,6 @@ static const MountPoint mount_table[] = { NULL, MNT_FATAL|MNT_IN_CONTAINER }, { "securityfs", "/sys/kernel/security", "securityfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_NONE }, -#ifdef ENABLE_EFI - { "efivarfs", "/sys/firmware/efi/efivars", "efivarfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, - is_efi_boot, MNT_NONE }, -#endif { "tmpfs", "/dev/shm", "tmpfs", "mode=1777", MS_NOSUID|MS_NODEV|MS_STRICTATIME, NULL, MNT_FATAL|MNT_IN_CONTAINER }, { "devpts", "/dev/pts", "devpts", "mode=620,gid=" STRINGIFY(TTY_GID), MS_NOSUID|MS_NOEXEC, @@ -91,6 +87,12 @@ static const MountPoint mount_table[] = { NULL, MNT_IN_CONTAINER }, { "cgroup", "/sys/fs/cgroup/systemd", "cgroup", "none,name=systemd", MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_IN_CONTAINER }, + { "pstore", "/sys/fs/pstore", "pstore", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, + NULL, MNT_NONE }, +#ifdef ENABLE_EFI + { "efivarfs", "/sys/firmware/efi/efivars", "efivarfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, + is_efi_boot, MNT_NONE }, +#endif }; /* These are API file systems that might be mounted by other software, -- cgit v1.2.1 From 4e7bc3f339a8f08b788ccccee4038f59f29c4429 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 27 Feb 2013 14:33:50 +0100 Subject: Revert "log: fix fallbacks to kmsg" This reverts commit 4a01181e460686d8b4a543b1dfa7f77c9e3c5ab8. This patch broke LOG_TARGET_AUTO, i.e. automatic selection of STDERR if it is a TTY with a fallback on the journal and kmsg otherwise. The general rule should probably be: log_open() -- open the "best" possible logging channel according to log_target configuration. log_dispatch() -- don't open any log channels ever, with the exception of kmsg since that has no drawbacks. And do this only on true errors of the better log channel, not just when it wasn't opened. --- src/shared/log.c | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/src/shared/log.c b/src/shared/log.c index ff2dd45350..293c261f9e 100644 --- a/src/shared/log.c +++ b/src/shared/log.c @@ -541,11 +541,11 @@ static int log_dispatch( k = write_to_journal(level, file, line, func, object_name, object, buffer); - if (k <= 0) { - if (k < 0 && k != -EAGAIN) + if (k < 0) { + if (k != -EAGAIN) log_close_journal(); log_open_kmsg(); - } else + } else if (k > 0) r++; } @@ -554,11 +554,11 @@ static int log_dispatch( k = write_to_syslog(level, file, line, func, object_name, object, buffer); - if (k <= 0) { - if (k < 0 && k != -EAGAIN) + if (k < 0) { + if (k != -EAGAIN) log_close_syslog(); log_open_kmsg(); - } else + } else if (k > 0) r++; } @@ -571,11 +571,10 @@ static int log_dispatch( k = write_to_kmsg(level, file, line, func, object_name, object, buffer); - if (k <= 0) { - if (k < 0 && k != -EAGAIN) - log_close_kmsg(); + if (k < 0) { + log_close_kmsg(); log_open_console(); - } else + } else if (k > 0) r++; } -- cgit v1.2.1 From 3ae0c5e18916a3c67822f644266205d6e2fa6e06 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 27 Feb 2013 15:00:26 +0100 Subject: man: clarify how to configure default control group hierarchies for services and sessions --- man/logind.conf.xml | 25 ++++++++++++++++++++----- man/systemd-system.conf.xml | 19 ++++++++++--------- 2 files changed, 30 insertions(+), 14 deletions(-) diff --git a/man/logind.conf.xml b/man/logind.conf.xml index 96e5936e5e..362a4f6108 100644 --- a/man/logind.conf.xml +++ b/man/logind.conf.xml @@ -207,10 +207,17 @@ These settings control the default control group hierarchies - users logging in are added to. When - logging in users will get private - control groups in all hierarchies - listed in + users logging in are added to, in + addition to the + name=systemd named + hierarchy. These settings take space + separated lists of controller + names. Pass the empty string to ensure + that logind does not touch any + hierarchies but systemd's own. When + logging in user sessions will get + private control groups in all + hierarchies listed in Controllers= and be reset to the root control group in all hierarchies listed in @@ -218,7 +225,15 @@ defaults to the empty list, ResetControllers= defaults to - cpu. + cpu. Note that for + all controllers that are not listed in + either Controllers= + nor + ResetControllers= + newly created sessions will be part of + the control groups of the system + service that created the + session. diff --git a/man/systemd-system.conf.xml b/man/systemd-system.conf.xml index 12979d81b6..eaa770b4b1 100644 --- a/man/systemd-system.conf.xml +++ b/man/systemd-system.conf.xml @@ -107,15 +107,16 @@ DefaultControllers=cpu Configures in which - cgroup controller hierarchies to - create per-service cgroups - automatically, in addition to the - name=systemd named hierarchy. Defaults - to 'cpu'. Takes a space separated list - of controller names. Pass an empty - string to ensure that systemd does not - touch any hierarchies but its - own. + control group hierarchies to create + per-service cgroups automatically, in + addition to the + name=systemd named + hierarchy. Defaults to + cpu. Takes a space + separated list of controller + names. Pass the empty string to ensure + that systemd does not touch any + hierarchies but its own. Note that the default value of 'cpu' will make realtime scheduling -- cgit v1.2.1 From 826872b61e4857dfffe63ba84e2b005623baecd6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 27 Feb 2013 15:00:38 +0100 Subject: update TODO --- TODO | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TODO b/TODO index f7861c4ea8..253b0e8cc3 100644 --- a/TODO +++ b/TODO @@ -53,6 +53,10 @@ Fedora 19: Features: +* journal-or-kmsg is currently broken? See reverted commit 4a01181e460686d8b4a543b1dfa7f77c9e3c5ab8. + +* remove any syslog support from log.c + * convert /etc/bash_completion.d/ to /usr/share/bash-completion/ (systemd (and everything else) should install zero static data in /etc) -- cgit v1.2.1 From 416389f7ae262ae7a0848302e7a6516597f9fad1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 27 Feb 2013 15:01:06 +0100 Subject: systemctl: fix indentation --- src/systemctl/systemctl.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 8174376257..65c5eca559 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1045,7 +1045,7 @@ static bool need_daemon_reload(DBusConnection *bus, const char *unit) { if (!n) return log_oom(); - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", @@ -3985,16 +3985,15 @@ static int enable_unit(DBusConnection *bus, char **args) { } if (carries_install_info == 0) - log_warning( -"The unit files have no [Install] section. They are not meant to be enabled\n" -"using systemctl.\n" -"Possible reasons for having this kind of units are:\n" -"1) A unit may be statically enabled by being symlinked from another unit's\n" -" .wants/ or .requires/ directory.\n" -"2) A unit's purpose may be to act as a helper for some other unit which has\n" -" a requirement dependency on it.\n" -"3) A unit may be started when needed via activation (socket, path, timer,\n" -" D-Bus, udev, scripted systemctl call, ...).\n"); + log_warning("The unit files have no [Install] section. They are not meant to be enabled\n" + "using systemctl.\n" + "Possible reasons for having this kind of units are:\n" + "1) A unit may be statically enabled by being symlinked from another unit's\n" + " .wants/ or .requires/ directory.\n" + "2) A unit's purpose may be to act as a helper for some other unit which has\n" + " a requirement dependency on it.\n" + "3) A unit may be started when needed via activation (socket, path, timer,\n" + " D-Bus, udev, scripted systemctl call, ...).\n"); finish: unit_file_changes_free(changes, n_changes); -- cgit v1.2.1 From 26d04f86a36595e3565c74d67863e076c3e3c773 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 27 Feb 2013 18:50:41 +0100 Subject: unit: rework resource management API This introduces a new static list of known attributes and their special semantics. This means that cgroup attribute values can now be automatically translated from user to kernel notation for command line set settings, too. This also adds proper support for multi-line attributes. --- Makefile.am | 2 + src/core/cgroup-attr.c | 58 +++--- src/core/cgroup-attr.h | 7 +- src/core/cgroup-semantics.c | 333 ++++++++++++++++++++++++++++++++++ src/core/cgroup-semantics.h | 43 +++++ src/core/dbus-manager.c | 41 +++-- src/core/dbus-unit.c | 329 +++++++++++++++++++-------------- src/core/dbus-unit.h | 25 +-- src/core/load-fragment-gperf.gperf.m4 | 16 +- src/core/load-fragment.c | 300 +++--------------------------- src/core/load-fragment.h | 6 +- src/core/unit.c | 159 +++++++++------- src/core/unit.h | 3 +- src/shared/path-lookup.c | 9 +- src/shared/strv.c | 25 +++ src/shared/strv.h | 1 + src/systemctl/systemctl.c | 155 +++++++--------- 17 files changed, 874 insertions(+), 638 deletions(-) create mode 100644 src/core/cgroup-semantics.c create mode 100644 src/core/cgroup-semantics.h diff --git a/Makefile.am b/Makefile.am index 74534cce82..2108abe318 100644 --- a/Makefile.am +++ b/Makefile.am @@ -852,6 +852,8 @@ libsystemd_core_la_SOURCES = \ src/core/tcpwrap.h \ src/core/cgroup-attr.c \ src/core/cgroup-attr.h \ + src/core/cgroup-semantics.c \ + src/core/cgroup-semantics.h \ src/core/securebits.h \ src/core/initreq.h \ src/core/special.h \ diff --git a/src/core/cgroup-attr.c b/src/core/cgroup-attr.c index 1373684bdb..2ab4d4623e 100644 --- a/src/core/cgroup-attr.c +++ b/src/core/cgroup-attr.c @@ -25,8 +25,8 @@ #include "fileio.h" int cgroup_attribute_apply(CGroupAttribute *a, CGroupBonding *b) { - int r; _cleanup_free_ char *path = NULL, *v = NULL; + int r; assert(a); @@ -34,8 +34,8 @@ int cgroup_attribute_apply(CGroupAttribute *a, CGroupBonding *b) { if (!b) return 0; - if (a->map_callback) { - r = a->map_callback(a->controller, a->name, a->value, &v); + if (a->semantics && a->semantics->map_write) { + r = a->semantics->map_write(a->semantics, a->value, &v); if (r < 0) return r; } @@ -66,6 +66,29 @@ int cgroup_attribute_apply_list(CGroupAttribute *first, CGroupBonding *b) { return r; } +bool cgroup_attribute_matches(CGroupAttribute *a, const char *controller, const char *name) { + assert(a); + + if (controller) { + if (streq(a->controller, controller) && (!name || streq(a->name, name))) + return true; + + } else if (!name) + return true; + else if (streq(a->name, name)) { + size_t x, y; + x = strlen(a->controller); + y = strlen(name); + + if (y > x && + memcmp(a->controller, name, x) == 0 && + name[x] == '.') + return true; + } + + return false; +} + CGroupAttribute *cgroup_attribute_find_list( CGroupAttribute *first, const char *controller, @@ -74,24 +97,9 @@ CGroupAttribute *cgroup_attribute_find_list( assert(name); - LIST_FOREACH(by_unit, a, first) { - - - if (controller) { - if (streq(a->controller, controller) && streq(a->name, name)) - return a; - - } else if (streq(a->name, name)) { - size_t x, y; - x = strlen(a->controller); - y = strlen(name); - - if (y > x && - memcmp(a->controller, name, x) == 0 && - name[x] == '.') - return a; - } - } + LIST_FOREACH(by_unit, a, first) + if (cgroup_attribute_matches(a, controller, name)) + return a; return NULL; } @@ -114,3 +122,11 @@ void cgroup_attribute_free_list(CGroupAttribute *first) { LIST_FOREACH_SAFE(by_unit, a, n, first) cgroup_attribute_free(a); } + +void cgroup_attribute_free_some(CGroupAttribute *first, const char *controller, const char *name) { + CGroupAttribute *a, *n; + + LIST_FOREACH_SAFE(by_unit, a, n, first) + if (cgroup_attribute_matches(a, controller, name)) + cgroup_attribute_free(a); +} diff --git a/src/core/cgroup-attr.h b/src/core/cgroup-attr.h index 0f5b854898..0b542981e8 100644 --- a/src/core/cgroup-attr.h +++ b/src/core/cgroup-attr.h @@ -23,10 +23,9 @@ typedef struct CGroupAttribute CGroupAttribute; -typedef int (*CGroupAttributeMapCallback)(const char *controller, const char*name, const char *value, char **ret); - #include "unit.h" #include "cgroup.h" +#include "cgroup-semantics.h" struct CGroupAttribute { char *controller; @@ -35,7 +34,7 @@ struct CGroupAttribute { Unit *unit; - CGroupAttributeMapCallback map_callback; + const CGroupSemantics *semantics; LIST_FIELDS(CGroupAttribute, by_unit); }; @@ -43,7 +42,9 @@ struct CGroupAttribute { int cgroup_attribute_apply(CGroupAttribute *a, CGroupBonding *b); int cgroup_attribute_apply_list(CGroupAttribute *first, CGroupBonding *b); +bool cgroup_attribute_matches(CGroupAttribute *a, const char *controller, const char *name); CGroupAttribute *cgroup_attribute_find_list(CGroupAttribute *first, const char *controller, const char *name); void cgroup_attribute_free(CGroupAttribute *a); void cgroup_attribute_free_list(CGroupAttribute *first); +void cgroup_attribute_free_some(CGroupAttribute *first, const char *controller, const char *name); diff --git a/src/core/cgroup-semantics.c b/src/core/cgroup-semantics.c new file mode 100644 index 0000000000..82b02bbd78 --- /dev/null +++ b/src/core/cgroup-semantics.c @@ -0,0 +1,333 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include "util.h" +#include "strv.h" +#include "path-util.h" +#include "cgroup-util.h" + +#include "cgroup-semantics.h" + +static int parse_cpu_shares(const CGroupSemantics *s, const char *value, char **ret) { + unsigned long ul; + + assert(s); + assert(value); + assert(ret); + + if (safe_atolu(value, &ul) < 0 || ul < 1) + return -EINVAL; + + if (asprintf(ret, "%lu", ul) < 0) + return -ENOMEM; + + return 1; +} + +static int parse_memory_limit(const CGroupSemantics *s, const char *value, char **ret) { + off_t sz; + + assert(s); + assert(value); + assert(ret); + + if (parse_bytes(value, &sz) < 0 || sz <= 0) + return -EINVAL; + + if (asprintf(ret, "%llu", (unsigned long long) sz) < 0) + return -ENOMEM; + + return 1; +} + +static int parse_device(const CGroupSemantics *s, const char *value, char **ret) { + _cleanup_strv_free_ char **l = NULL; + char *x; + unsigned k; + + assert(s); + assert(value); + assert(ret); + + l = strv_split_quoted(value); + if (!l) + return -ENOMEM; + + k = strv_length(l); + if (k < 1 || k > 2) + return -EINVAL; + + if (!streq(l[0], "*") && !path_startswith(l[0], "/dev")) + return -EINVAL; + + if (!isempty(l[1]) && !in_charset(l[1], "rwm")) + return -EINVAL; + + x = strdup(value); + if (!x) + return -ENOMEM; + + *ret = x; + return 1; +} + +static int parse_blkio_weight(const CGroupSemantics *s, const char *value, char **ret) { + _cleanup_strv_free_ char **l = NULL; + unsigned long ul; + + assert(s); + assert(value); + assert(ret); + + l = strv_split_quoted(value); + if (!l) + return -ENOMEM; + + if (strv_length(l) != 1) + return 0; /* Returning 0 will cause parse_blkio_weight_device() be tried instead */ + + if (safe_atolu(l[0], &ul) < 0 || ul < 10 || ul > 1000) + return -EINVAL; + + if (asprintf(ret, "%lu", ul) < 0) + return -ENOMEM; + + return 1; +} + +static int parse_blkio_weight_device(const CGroupSemantics *s, const char *value, char **ret) { + _cleanup_strv_free_ char **l = NULL; + unsigned long ul; + + assert(s); + assert(value); + assert(ret); + + l = strv_split_quoted(value); + if (!l) + return -ENOMEM; + + if (strv_length(l) != 2) + return -EINVAL; + + if (!path_startswith(l[0], "/dev")) + return -EINVAL; + + if (safe_atolu(l[1], &ul) < 0 || ul < 10 || ul > 1000) + return -EINVAL; + + if (asprintf(ret, "%s %lu", l[0], ul) < 0) + return -ENOMEM; + + return 1; +} + +static int parse_blkio_bandwidth(const CGroupSemantics *s, const char *value, char **ret) { + _cleanup_strv_free_ char **l = NULL; + off_t bytes; + + assert(s); + assert(value); + assert(ret); + + l = strv_split_quoted(value); + if (!l) + return -ENOMEM; + + if (strv_length(l) != 2) + return -EINVAL; + + if (!path_startswith(l[0], "/dev")) { + return -EINVAL; + } + + if (parse_bytes(l[1], &bytes) < 0 || bytes <= 0) + return -EINVAL; + + if (asprintf(ret, "%s %llu", l[0], (unsigned long long) bytes) < 0) + return -ENOMEM; + + return 0; +} + +static int map_device(const CGroupSemantics *s, const char *value, char **ret) { + _cleanup_strv_free_ char **l = NULL; + unsigned k; + + assert(s); + assert(value); + assert(ret); + + l = strv_split_quoted(value); + if (!l) + return -ENOMEM; + + k = strv_length(l); + if (k < 1 || k > 2) + return -EINVAL; + + if (streq(l[0], "*")) { + + if (asprintf(ret, "a *:*%s%s", + isempty(l[1]) ? "" : " ", strempty(l[1])) < 0) + return -ENOMEM; + } else { + struct stat st; + + if (stat(l[0], &st) < 0) { + log_warning("Couldn't stat device %s", l[0]); + return -errno; + } + + if (!S_ISCHR(st.st_mode) && !S_ISBLK(st.st_mode)) { + log_warning("%s is not a device.", l[0]); + return -ENODEV; + } + + if (asprintf(ret, "%c %u:%u%s%s", + S_ISCHR(st.st_mode) ? 'c' : 'b', + major(st.st_rdev), minor(st.st_rdev), + isempty(l[1]) ? "" : " ", strempty(l[1])) < 0) + return -ENOMEM; + } + + return 0; +} + +static int map_blkio(const CGroupSemantics *s, const char *value, char **ret) { + _cleanup_strv_free_ char **l = NULL; + struct stat st; + dev_t d; + + assert(s); + assert(value); + assert(ret); + + l = strv_split_quoted(value); + if (!l) + return log_oom(); + + if (strv_length(l) != 2) + return -EINVAL; + + if (stat(l[0], &st) < 0) { + log_warning("Couldn't stat device %s", l[0]); + return -errno; + } + + if (S_ISBLK(st.st_mode)) + d = st.st_rdev; + else if (major(st.st_dev) != 0) { + /* If this is not a device node then find the block + * device this file is stored on */ + d = st.st_dev; + + /* If this is a partition, try to get the originating + * block device */ + block_get_whole_disk(d, &d); + } else { + log_warning("%s is not a block device and file system block device cannot be determined or is not local.", l[0]); + return -ENODEV; + } + + if (asprintf(ret, "%u:%u %s", major(d), minor(d), l[1]) < 0) + return -ENOMEM; + + return 0; +} + +static const CGroupSemantics semantics[] = { + { "cpu", "cpu.shares", "CPUShare", false, parse_cpu_shares, NULL, NULL }, + { "memory", "memory.soft_limit_in_bytes", "MemorySoftLimit", false, parse_memory_limit, NULL, NULL }, + { "memory", "memory.limit_in_bytes", "MemoryLimit", false, parse_memory_limit, NULL, NULL }, + { "devices", "devices.allow", "DeviceAllow", true, parse_device, map_device, NULL }, + { "devices", "devices.deny", "DeviceDeny", true, parse_device, map_device, NULL }, + { "blkio", "blkio.weight", "BlockIOWeight", false, parse_blkio_weight, NULL, NULL }, + { "blkio", "blkio.weight_device", "BlockIOWeight", true, parse_blkio_weight_device, map_blkio, NULL }, + { "blkio", "blkio.read_bps_device", "BlockIOReadBandwidth", true, parse_blkio_bandwidth, map_blkio, NULL }, + { "blkio", "blkio.write_bps_device", "BlockIOWriteBandwidth", true, parse_blkio_bandwidth, map_blkio, NULL } +}; + +int cgroup_semantics_find( + const char *controller, + const char *name, + const char *value, + char **ret, + const CGroupSemantics **_s) { + + _cleanup_free_ char *c = NULL; + unsigned i; + int r; + + assert(name); + assert(_s); + assert(!value == !ret); + + if (!controller) { + r = cg_controller_from_attr(name, &c); + if (r < 0) + return r; + + controller = c; + } + + for (i = 0; i < ELEMENTSOF(semantics); i++) { + const CGroupSemantics *s = semantics + i; + bool matches_name, matches_pretty; + + if (controller && s->controller && !streq(s->controller, controller)) + continue; + + matches_name = s->name && streq(s->name, name); + matches_pretty = s->pretty && streq(s->pretty, name); + + if (!matches_name && !matches_pretty) + continue; + + if (value) { + if (matches_pretty && s->map_pretty) { + + r = s->map_pretty(s, value, ret); + if (r < 0) + return r; + + if (r == 0) + continue; + + } else { + char *x; + + x = strdup(value); + if (!x) + return -ENOMEM; + + *ret = x; + } + } + + *_s = s; + return 1; + } + + *ret = NULL; + *_s = NULL; + return 0; +} diff --git a/src/core/cgroup-semantics.h b/src/core/cgroup-semantics.h new file mode 100644 index 0000000000..4f848f4bb7 --- /dev/null +++ b/src/core/cgroup-semantics.h @@ -0,0 +1,43 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2011 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +typedef struct CGroupSemantics CGroupSemantics; + +struct CGroupSemantics { + const char *controller; + const char *name; + const char *pretty; + + bool multiple; + + /* This call is used for parsing the pretty value to the actual attribute value */ + int (*map_pretty)(const CGroupSemantics *semantics, const char *value, char **ret); + + /* Right before writing this attribute the attribute value is converted to a low-level value */ + int (*map_write)(const CGroupSemantics *semantics, const char *value, char **ret); + + /* If this attribute takes a list, this call can be used to reset the list to empty */ + int (*reset)(const CGroupSemantics *semantics, const char *group); +}; + +int cgroup_semantics_find(const char *controller, const char *name, const char *value, char **ret, const CGroupSemantics **semantics); diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index de23369397..8f4bbc59b7 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -103,30 +103,31 @@ " \n" \ " \n" \ " \n" \ - " \n" \ + " \n" \ " \n" \ - " \n" \ - " \n" \ + " \n" \ + " \n" \ " \n" \ - " \n" \ + " \n" \ " \n" \ - " \n" \ + " \n" \ " " \ " \n" \ - " \n" \ + " \n" \ " \n" \ - " \n" \ - " \n" \ + " \n" \ + " \n" \ " \n" \ - " \n" \ + " \n" \ " \n" \ - " \n" \ - " \n" \ + " \n" \ + " \n" \ + " " \ " \n" \ - " \n" \ + " \n" \ " \n" \ - " \n" \ - " " \ + " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -874,7 +875,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, if (!reply) goto oom; - } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "SetUnitControlGroups")) { + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "SetUnitControlGroup")) { const char *name; Unit *u; DBusMessageIter iter; @@ -902,7 +903,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, if (!reply) goto oom; - } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "UnsetUnitControlGroups")) { + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "UnsetUnitControlGroup")) { const char *name; Unit *u; DBusMessageIter iter; @@ -930,7 +931,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, if (!reply) goto oom; - } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "SetUnitControlGroupAttributes")) { + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "SetUnitControlGroupAttribute")) { const char *name; Unit *u; DBusMessageIter iter; @@ -949,6 +950,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, } SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "start"); + r = bus_unit_cgroup_attribute_set(u, &iter); if (r < 0) return bus_send_error_reply(connection, message, NULL, r); @@ -957,7 +959,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, if (!reply) goto oom; - } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "UnsetUnitControlGroupAttributes")) { + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "UnsetUnitControlGroupAttribute")) { const char *name; Unit *u; DBusMessageIter iter; @@ -985,7 +987,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, if (!reply) goto oom; - } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "GetUnitControlGroupAttributes")) { + } else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "GetUnitControlGroupAttribute")) { const char *name; Unit *u; DBusMessageIter iter; @@ -1005,6 +1007,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, } SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "status"); + r = bus_unit_cgroup_attribute_get(u, &iter, &list); if (r < 0) return bus_send_error_reply(connection, message, NULL, r); diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c index 4f968c20f2..7c23e1e616 100644 --- a/src/core/dbus-unit.c +++ b/src/core/dbus-unit.c @@ -344,8 +344,8 @@ static int bus_unit_append_cgroup_attrs(DBusMessageIter *i, const char *property char _cleanup_free_ *v = NULL; bool success; - if (a->map_callback) - a->map_callback(a->controller, a->name, a->value, &v); + if (a->semantics && a->semantics->map_write) + a->semantics->map_write(a->semantics, a->value, &v); success = dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) && @@ -472,7 +472,7 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusConnection *conn if (!reply) goto oom; - } else if (streq_ptr(dbus_message_get_member(message), "SetControlGroups")) { + } else if (streq_ptr(dbus_message_get_member(message), "SetControlGroup")) { DBusMessageIter iter; SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "start"); @@ -488,7 +488,7 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusConnection *conn if (!reply) goto oom; - } else if (streq_ptr(dbus_message_get_member(message), "UnsetControlGroups")) { + } else if (streq_ptr(dbus_message_get_member(message), "UnsetControlGroup")) { DBusMessageIter iter; SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "stop"); @@ -496,14 +496,14 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusConnection *conn if (!dbus_message_iter_init(message, &iter)) goto oom; - r = bus_unit_cgroup_set(u, &iter); + r = bus_unit_cgroup_unset(u, &iter); if (r < 0) return bus_send_error_reply(connection, message, NULL, r); reply = dbus_message_new_method_return(message); if (!reply) goto oom; - } else if (streq_ptr(dbus_message_get_member(message), "GetControlGroupAttributes")) { + } else if (streq_ptr(dbus_message_get_member(message), "GetControlGroupAttribute")) { DBusMessageIter iter; _cleanup_strv_free_ char **list = NULL; @@ -524,7 +524,7 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusConnection *conn if (bus_append_strv_iter(&iter, list) < 0) goto oom; - } else if (streq_ptr(dbus_message_get_member(message), "SetControlGroupAttributes")) { + } else if (streq_ptr(dbus_message_get_member(message), "SetControlGroupAttribute")) { DBusMessageIter iter; SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "start"); @@ -540,7 +540,7 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusConnection *conn if (!reply) goto oom; - } else if (streq_ptr(dbus_message_get_member(message), "UnsetControlGroupAttributes")) { + } else if (streq_ptr(dbus_message_get_member(message), "UnsetControlGroupAttribute")) { DBusMessageIter iter; SELINUX_UNIT_ACCESS_CHECK(u, connection, message, "stop"); @@ -897,17 +897,17 @@ oom: return DBUS_HANDLER_RESULT_NEED_MEMORY; } -static int next_and_parse_mode(DBusMessageIter *iter, bool *runtime) { +static int parse_mode(DBusMessageIter *iter, bool *runtime, bool next) { const char *mode; + int r; assert(iter); assert(runtime); - dbus_message_iter_next(iter); - if (dbus_message_iter_get_arg_type(iter) != DBUS_TYPE_STRING) - return -EINVAL; + r = bus_iter_get_basic_and_next(iter, DBUS_TYPE_STRING, &mode, next); + if (r < 0) + return r; - dbus_message_iter_get_basic(iter, &mode); if (streq(mode, "runtime")) *runtime = true; else if (streq(mode, "persistent")) @@ -919,10 +919,11 @@ static int next_and_parse_mode(DBusMessageIter *iter, bool *runtime) { } int bus_unit_cgroup_set(Unit *u, DBusMessageIter *iter) { - int r; - _cleanup_strv_free_ char **a = NULL; - char **name; + _cleanup_free_ char *controller = NULL, *old_path = NULL, *new_path = NULL, *contents = NULL; + const char *name; + CGroupBonding *b; bool runtime; + int r; assert(u); assert(iter); @@ -930,60 +931,74 @@ int bus_unit_cgroup_set(Unit *u, DBusMessageIter *iter) { if (!unit_get_exec_context(u)) return -EINVAL; - r = bus_parse_strv_iter(iter, &a); + r = bus_iter_get_basic_and_next(iter, DBUS_TYPE_STRING, &name, true); if (r < 0) return r; - r = next_and_parse_mode(iter, &runtime); + r = parse_mode(iter, &runtime, false); if (r < 0) return r; - STRV_FOREACH(name, a) { - _cleanup_free_ char *controller = NULL, *old_path = NULL, *new_path = NULL, *contents = NULL; - CGroupBonding *b; - - r = cg_split_spec(*name, &controller, &new_path); - if (r < 0) - return r; + r = cg_split_spec(name, &controller, &new_path); + if (r < 0) + return r; - b = cgroup_bonding_find_list(u->cgroup_bondings, controller); - if (b) { - old_path = strdup(b->path); - if (!old_path) - return -ENOMEM; - } + if (!new_path) { + new_path = unit_default_cgroup_path(u); + if (!new_path) + return -ENOMEM; + } - r = unit_add_cgroup_from_text(u, *name, true, &b); - if (r < 0) - return r; + if (!controller || streq(controller, SYSTEMD_CGROUP_CONTROLLER)) + return -EINVAL; - if (r > 0) { - /* Try to move things to the new place, and clean up the old place */ - cgroup_bonding_realize(b); - cgroup_bonding_migrate(b, u->cgroup_bondings); + b = cgroup_bonding_find_list(u->cgroup_bondings, controller); + if (b) { + if (streq(b->path, new_path)) + return 0; - if (old_path) - cg_trim(controller, old_path, true); - } + if (b->essential) + return -EINVAL; - contents = strjoin("[", UNIT_VTABLE(u)->exec_section, "]\n" - "ControlGroup=", *name, "\n", NULL); - if (!contents) + old_path = strdup(b->path); + if (!old_path) return -ENOMEM; + } - r = unit_write_drop_in(u, runtime, *name, contents); - if (r < 0) - return r; + r = unit_add_cgroup_from_text(u, name, true, &b); + if (r < 0) + return r; + if (r > 0) { + CGroupAttribute *a; + + /* Try to move things to the new place, and clean up the old place */ + cgroup_bonding_realize(b); + cgroup_bonding_migrate(b, u->cgroup_bondings); + + if (old_path) + cg_trim(controller, old_path, true); + + /* Apply the attributes to the new group */ + LIST_FOREACH(by_unit, a, u->cgroup_attributes) + if (streq(a->controller, controller)) + cgroup_attribute_apply(a, b); } - return 0; + contents = strjoin("[", UNIT_VTABLE(u)->exec_section, "]\n" + "ControlGroup=", name, "\n", NULL); + if (!contents) + return -ENOMEM; + + return unit_write_drop_in(u, runtime, controller, contents); } int bus_unit_cgroup_unset(Unit *u, DBusMessageIter *iter) { - _cleanup_strv_free_ char **a = NULL; - char **name; - int r; + _cleanup_free_ char *controller = NULL, *path = NULL, *target = NULL; + const char *name; + CGroupAttribute *a, *n; + CGroupBonding *b; bool runtime; + int r; assert(u); assert(iter); @@ -991,50 +1006,57 @@ int bus_unit_cgroup_unset(Unit *u, DBusMessageIter *iter) { if (!unit_get_exec_context(u)) return -EINVAL; - r = bus_parse_strv_iter(iter, &a); + r = bus_iter_get_basic_and_next(iter, DBUS_TYPE_STRING, &name, true); if (r < 0) return r; - r = next_and_parse_mode(iter, &runtime); + r = parse_mode(iter, &runtime, false); if (r < 0) return r; - STRV_FOREACH(name, a) { - _cleanup_free_ char *controller = NULL, *path = NULL, *target = NULL; - CGroupBonding *b; + r = cg_split_spec(name, &controller, &path); + if (r < 0) + return r; - r = cg_split_spec(*name, &controller, &path); - if (r < 0) - return r; + if (!controller || streq(controller, SYSTEMD_CGROUP_CONTROLLER)) + return -EINVAL; - if (!controller || streq(controller, SYSTEMD_CGROUP_CONTROLLER)) - return -EINVAL; + b = cgroup_bonding_find_list(u->cgroup_bondings, controller); + if (!b) + return -ENOENT; - unit_remove_drop_in(u, runtime, *name); + if (path && !path_equal(path, b->path)) + return -ENOENT; - b = cgroup_bonding_find_list(u->cgroup_bondings, controller); - if (!b) - continue; + if (b->essential) + return -EINVAL; - if (path && !path_equal(path, b->path)) - continue; + unit_remove_drop_in(u, runtime, controller); - if (b->essential) - return -EINVAL; + /* Try to migrate the old group away */ + if (cg_get_by_pid(controller, 0, &target) >= 0) + cgroup_bonding_migrate_to(u->cgroup_bondings, target, false); + + cgroup_bonding_free(b, true); - /* Try to migrate the old group away */ - if (cg_get_by_pid(controller, 0, &target) >= 0) - cgroup_bonding_migrate_to(u->cgroup_bondings, target, false); + /* Drop all attributes of this controller */ + LIST_FOREACH_SAFE(by_unit, a, n, u->cgroup_attributes) { + if (!streq(a->controller, controller)) + continue; - cgroup_bonding_free(b, true); + unit_remove_drop_in(u, runtime, a->name); + cgroup_attribute_free(a); } return 0; } int bus_unit_cgroup_attribute_get(Unit *u, DBusMessageIter *iter, char ***_result) { - _cleanup_strv_free_ char **l = NULL, **result = NULL; - char **name; + _cleanup_free_ char *controller = NULL; + CGroupAttribute *a; + CGroupBonding *b; + const char *name; + char **l = NULL; int r; assert(u); @@ -1044,63 +1066,99 @@ int bus_unit_cgroup_attribute_get(Unit *u, DBusMessageIter *iter, char ***_resul if (!unit_get_exec_context(u)) return -EINVAL; - r = bus_parse_strv_iter(iter, &l); + r = bus_iter_get_basic_and_next(iter, DBUS_TYPE_STRING, &name, false); if (r < 0) return r; - STRV_FOREACH(name, l) { - _cleanup_free_ char *controller = NULL; - CGroupAttribute *a; - CGroupBonding *b; + r = cg_controller_from_attr(name, &controller); + if (r < 0) + return r; + + /* First attempt, read the value from the kernel */ + b = cgroup_bonding_find_list(u->cgroup_bondings, controller); + if (b) { + _cleanup_free_ char *p = NULL, *v = NULL; - r = cg_controller_from_attr(*name, &controller); + r = cg_get_path(b->controller, b->path, name, &p); if (r < 0) return r; - /* First attempt, read the value from the kernel */ - b = cgroup_bonding_find_list(u->cgroup_bondings, controller); - if (b) { - _cleanup_free_ char *p = NULL, *v = NULL; + r = read_full_file(p, &v, NULL); + if (r >= 0) { + /* Split on new lines */ + l = strv_split_newlines(v); + if (!l) + return -ENOMEM; - r = cg_get_path(b->controller, b->path, *name, &p); - if (r < 0) - return r; + *_result = l; + return 0; - r = read_full_file(p, &v, NULL); - if (r >= 0) { - r = strv_extend(&result, v); - if (r < 0) - return r; - - continue; - } else if (r != -ENOENT) - return r; } + } - /* If that didn't work, read our cached value */ - a = cgroup_attribute_find_list(u->cgroup_attributes, NULL, *name); - if (a) { - r = strv_extend(&result, a->value); - if (r < 0) - return r; + /* If that didn't work, read our cached value */ + LIST_FOREACH(by_unit, a, u->cgroup_attributes) { + if (!cgroup_attribute_matches(a, controller, name)) continue; - } - return -ENOENT; + r = strv_extend(&l, a->value); + if (r < 0) { + strv_free(l); + return r; + } } - *_result = result; - result = NULL; + if (!l) + return -ENOENT; + *_result = l; return 0; } +static int update_attribute_drop_in(Unit *u, bool runtime, const char *name) { + _cleanup_free_ char *buf = NULL; + CGroupAttribute *a; + + assert(u); + assert(name); + + LIST_FOREACH(by_unit, a, u->cgroup_attributes) { + if (!cgroup_attribute_matches(a, NULL, name)) + continue; + + if (!buf) { + buf = strjoin("[", UNIT_VTABLE(u)->exec_section, "]\n" + "ControlGroupAttribute=", a->name, " ", a->value, "\n", NULL); + + if (!buf) + return -ENOMEM; + } else { + char *b; + + b = strjoin(buf, + "ControlGroupAttribute=", a->name, " ", a->value, "\n", NULL); + + if (!b) + return -ENOMEM; + + free(buf); + buf = b; + } + } + + if (buf) + return unit_write_drop_in(u, runtime, name, buf); + else + return unit_remove_drop_in(u, runtime, name); +} + int bus_unit_cgroup_attribute_set(Unit *u, DBusMessageIter *iter) { _cleanup_strv_free_ char **l = NULL; int r; bool runtime = false; - char **name, **value; + char **value; + const char *name; assert(u); assert(iter); @@ -1108,19 +1166,34 @@ int bus_unit_cgroup_attribute_set(Unit *u, DBusMessageIter *iter) { if (!unit_get_exec_context(u)) return -EINVAL; - r = bus_parse_strv_pairs_iter(iter, &l); + r = bus_iter_get_basic_and_next(iter, DBUS_TYPE_STRING, &name, true); + if (r < 0) + return r; + + r = bus_parse_strv_iter(iter, &l); if (r < 0) return r; - r = next_and_parse_mode(iter, &runtime); + if (!dbus_message_iter_next(iter)) + return -EINVAL; + + r = parse_mode(iter, &runtime, false); if (r < 0) return r; - STRV_FOREACH_PAIR(name, value, l) { - _cleanup_free_ char *contents = NULL; + STRV_FOREACH(value, l) { + _cleanup_free_ char *v = NULL; CGroupAttribute *a; + const CGroupSemantics *s; + + r = cgroup_semantics_find(NULL, name, *value, &v, &s); + if (r < 0) + return r; + + if (s && !s->multiple && l[1]) + return -EINVAL; - r = unit_add_cgroup_attribute(u, NULL, *name, *value, NULL, &a); + r = unit_add_cgroup_attribute(u, s, NULL, name, v ? v : *value, &a); if (r < 0) return r; @@ -1144,22 +1217,17 @@ int bus_unit_cgroup_attribute_set(Unit *u, DBusMessageIter *iter) { cgroup_attribute_apply(a, u->cgroup_bondings); } - contents = strjoin("[", UNIT_VTABLE(u)->exec_section, "]\n" - "ControlGroupAttribute=", *name, " ", *value, "\n", NULL); - if (!contents) - return -ENOMEM; - - r = unit_write_drop_in(u, runtime, *name, contents); - if (r < 0) - return r; } + r = update_attribute_drop_in(u, runtime, name); + if (r < 0) + return r; + return 0; } int bus_unit_cgroup_attribute_unset(Unit *u, DBusMessageIter *iter) { - _cleanup_strv_free_ char **l = NULL; - char **name; + const char *name; bool runtime; int r; @@ -1169,23 +1237,16 @@ int bus_unit_cgroup_attribute_unset(Unit *u, DBusMessageIter *iter) { if (!unit_get_exec_context(u)) return -EINVAL; - r = bus_parse_strv_iter(iter, &l); + r = bus_iter_get_basic_and_next(iter, DBUS_TYPE_STRING, &name, true); if (r < 0) return r; - r = next_and_parse_mode(iter, &runtime); + r = parse_mode(iter, &runtime, false); if (r < 0) return r; - STRV_FOREACH(name, l) { - CGroupAttribute *a; - - a = cgroup_attribute_find_list(u->cgroup_attributes, NULL, *name); - if (a) - cgroup_attribute_free(a); - - unit_remove_drop_in(u, runtime, *name); - } + cgroup_attribute_free_some(u->cgroup_attributes, NULL, name); + update_attribute_drop_in(u, runtime, name); return 0; } diff --git a/src/core/dbus-unit.h b/src/core/dbus-unit.h index c8903f8e5e..34980b046e 100644 --- a/src/core/dbus-unit.h +++ b/src/core/dbus-unit.h @@ -127,24 +127,25 @@ " \n" \ " \n" \ " \n" \ - " \n" \ - " \n" \ - " \n" \ - " \n" \ - " \n" \ - " \n" \ + " \n" \ + " \n" \ " \n" \ " \n" \ - " \n" \ - " \n" \ + " \n" \ + " \n" \ " \n" \ " \n" \ - " \n" \ - " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ " \n" \ " \n" \ - " \n" \ - " \n" \ + " \n" \ + " \n" \ " \n" \ " \n" diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4 index 0b6a5cc659..22c1761dc2 100644 --- a/src/core/load-fragment-gperf.gperf.m4 +++ b/src/core/load-fragment-gperf.gperf.m4 @@ -68,14 +68,14 @@ $1.LimitRTPRIO, config_parse_limit, RLIMIT_RTPR $1.LimitRTTIME, config_parse_limit, RLIMIT_RTTIME, offsetof($1, exec_context.rlimit) $1.ControlGroup, config_parse_unit_cgroup, 0, 0 $1.ControlGroupAttribute, config_parse_unit_cgroup_attr, 0, 0 -$1.CPUShares, config_parse_unit_cpu_shares, 0, 0 -$1.MemoryLimit, config_parse_unit_memory_limit, 0, 0 -$1.MemorySoftLimit, config_parse_unit_memory_limit, 0, 0 -$1.DeviceAllow, config_parse_unit_device_allow, 0, 0 -$1.DeviceDeny, config_parse_unit_device_allow, 0, 0 -$1.BlockIOWeight, config_parse_unit_blkio_weight, 0, 0 -$1.BlockIOReadBandwidth, config_parse_unit_blkio_bandwidth, 0, 0 -$1.BlockIOWriteBandwidth, config_parse_unit_blkio_bandwidth, 0, 0 +$1.CPUShares, config_parse_unit_cgroup_attr_pretty, 0, 0 +$1.MemoryLimit, config_parse_unit_cgroup_attr_pretty, 0, 0 +$1.MemorySoftLimit, config_parse_unit_cgroup_attr_pretty, 0, 0 +$1.DeviceAllow, config_parse_unit_cgroup_attr_pretty, 0, 0 +$1.DeviceDeny, config_parse_unit_cgroup_attr_pretty, 0, 0 +$1.BlockIOWeight, config_parse_unit_cgroup_attr_pretty, 0, 0 +$1.BlockIOReadBandwidth, config_parse_unit_cgroup_attr_pretty, 0, 0 +$1.BlockIOWriteBandwidth, config_parse_unit_cgroup_attr_pretty, 0, 0 $1.ReadWriteDirectories, config_parse_path_strv, 0, offsetof($1, exec_context.read_write_dirs) $1.ReadOnlyDirectories, config_parse_path_strv, 0, offsetof($1, exec_context.read_only_dirs) $1.InaccessibleDirectories, config_parse_path_strv, 0, offsetof($1, exec_context.inaccessible_dirs) diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 6e333aaf15..d79e1d936c 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -1769,7 +1769,9 @@ int config_parse_unit_cgroup_attr( void *userdata) { Unit *u = data; - _cleanup_strv_free_ char **l = NULL; + size_t a, b; + _cleanup_free_ char *n = NULL, *v = NULL; + const CGroupSemantics *s; int r; assert(filename); @@ -1784,160 +1786,24 @@ int config_parse_unit_cgroup_attr( return 0; } - l = strv_split_quoted(rvalue); - if (!l) - return log_oom(); - - if (strv_length(l) != 2) { + a = strcspn(rvalue, WHITESPACE); + b = strspn(rvalue + a, WHITESPACE); + if (a <= 0 || b <= 0) { log_error("[%s:%u] Failed to parse cgroup attribute value, ignoring: %s", filename, line, rvalue); return 0; } - r = unit_add_cgroup_attribute(u, NULL, l[0], l[1], NULL, NULL); - if (r < 0) { - log_error("[%s:%u] Failed to add cgroup attribute value, ignoring: %s", filename, line, rvalue); - return 0; - } - - return 0; -} - -int config_parse_unit_cpu_shares(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata) { - Unit *u = data; - int r; - unsigned long ul; - _cleanup_free_ char *t = NULL; - - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); - - if (safe_atolu(rvalue, &ul) < 0 || ul < 1) { - log_error("[%s:%u] Failed to parse CPU shares value, ignoring: %s", filename, line, rvalue); - return 0; - } - - if (asprintf(&t, "%lu", ul) < 0) - return log_oom(); - - r = unit_add_cgroup_attribute(u, "cpu", "cpu.shares", t, NULL, NULL); - if (r < 0) { - log_error("[%s:%u] Failed to add cgroup attribute value, ignoring: %s", filename, line, rvalue); - return 0; - } - - return 0; -} - -int config_parse_unit_memory_limit(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata) { - Unit *u = data; - int r; - off_t sz; - _cleanup_free_ char *t = NULL; - - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); - - if (parse_bytes(rvalue, &sz) < 0 || sz <= 0) { - log_error("[%s:%u] Failed to parse memory limit value, ignoring: %s", filename, line, rvalue); - return 0; - } - - if (asprintf(&t, "%llu", (unsigned long long) sz) < 0) + n = strndup(rvalue, a); + if (!n) return log_oom(); - r = unit_add_cgroup_attribute(u, - "memory", - streq(lvalue, "MemorySoftLimit") ? "memory.soft_limit_in_bytes" : "memory.limit_in_bytes", - t, NULL, NULL); + r = cgroup_semantics_find(NULL, n, rvalue + a + b, &v, &s); if (r < 0) { - log_error("[%s:%u] Failed to add cgroup attribute value, ignoring: %s", filename, line, rvalue); - return 0; - } - - return 0; -} - -static int device_map(const char *controller, const char *name, const char *value, char **ret) { - _cleanup_strv_free_ char **l = NULL; - - assert(controller); - assert(name); - assert(value); - assert(ret); - - l = strv_split_quoted(value); - if (!l) - return -ENOMEM; - - assert(strv_length(l) >= 1); - - if (streq(l[0], "*")) { - - if (asprintf(ret, "a *:*%s%s", - isempty(l[1]) ? "" : " ", strempty(l[1])) < 0) - return -ENOMEM; - } else { - struct stat st; - - if (stat(l[0], &st) < 0) { - log_warning("Couldn't stat device %s", l[0]); - return -errno; - } - - if (!S_ISCHR(st.st_mode) && !S_ISBLK(st.st_mode)) { - log_warning("%s is not a device.", l[0]); - return -ENODEV; - } - - if (asprintf(ret, "%c %u:%u%s%s", - S_ISCHR(st.st_mode) ? 'c' : 'b', - major(st.st_rdev), minor(st.st_rdev), - isempty(l[1]) ? "" : " ", strempty(l[1])) < 0) - return -ENOMEM; - } - - return 0; -} - -int config_parse_unit_device_allow(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata) { - Unit *u = data; - _cleanup_strv_free_ char **l = NULL; - int r; - unsigned k; - - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); - - l = strv_split_quoted(rvalue); - if (!l) - return log_oom(); - - k = strv_length(l); - if (k < 1 || k > 2) { - log_error("[%s:%u] Failed to parse device value, ignoring: %s", filename, line, rvalue); - return 0; - } - - if (!streq(l[0], "*") && !path_startswith(l[0], "/dev")) { - log_error("[%s:%u] Device node path not absolute, ignoring: %s", filename, line, rvalue); - return 0; - } - - if (!isempty(l[1]) && !in_charset(l[1], "rwm")) { - log_error("[%s:%u] Device access string invalid, ignoring: %s", filename, line, rvalue); + log_error("[%s:%u] Failed to parse cgroup attribute value, ignoring: %s", filename, line, rvalue); return 0; } - r = unit_add_cgroup_attribute(u, "devices", - streq(lvalue, "DeviceAllow") ? "devices.allow" : "devices.deny", - rvalue, device_map, NULL); - + r = unit_add_cgroup_attribute(u, s, NULL, n, v ? v : rvalue + a + b, NULL); if (r < 0) { log_error("[%s:%u] Failed to add cgroup attribute value, ignoring: %s", filename, line, rvalue); return 0; @@ -1946,148 +1812,36 @@ int config_parse_unit_device_allow(const char *filename, unsigned line, const ch return 0; } -static int blkio_map(const char *controller, const char *name, const char *value, char **ret) { - struct stat st; - _cleanup_strv_free_ char **l = NULL; - dev_t d; - - assert(controller); - assert(name); - assert(value); - assert(ret); - - l = strv_split_quoted(value); - if (!l) - return log_oom(); - - assert(strv_length(l) == 2); - - if (stat(l[0], &st) < 0) { - log_warning("Couldn't stat device %s", l[0]); - return -errno; - } - - if (S_ISBLK(st.st_mode)) - d = st.st_rdev; - else if (major(st.st_dev) != 0) { - /* If this is not a device node then find the block - * device this file is stored on */ - d = st.st_dev; - - /* If this is a partition, try to get the originating - * block device */ - block_get_whole_disk(d, &d); - } else { - log_warning("%s is not a block device and file system block device cannot be determined or is not local.", l[0]); - return -ENODEV; - } - - if (asprintf(ret, "%u:%u %s", major(d), minor(d), l[1]) < 0) - return -ENOMEM; - - return 0; -} +int config_parse_unit_cgroup_attr_pretty( + const char *filename, + unsigned line, + const char *section, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { -int config_parse_unit_blkio_weight(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata) { Unit *u = data; + _cleanup_free_ char *v = NULL; + const CGroupSemantics *s; int r; - unsigned long ul; - const char *device = NULL, *weight; - unsigned k; - _cleanup_free_ char *t = NULL; - _cleanup_strv_free_ char **l = NULL; assert(filename); assert(lvalue); assert(rvalue); assert(data); - l = strv_split_quoted(rvalue); - if (!l) - return log_oom(); - - k = strv_length(l); - if (k < 1 || k > 2) { - log_error("[%s:%u] Failed to parse weight value, ignoring: %s", filename, line, rvalue); - return 0; - } - - if (k == 1) - weight = l[0]; - else { - device = l[0]; - weight = l[1]; - } - - if (device && !path_is_absolute(device)) { - log_error("[%s:%u] Failed to parse block device node value, ignoring: %s", filename, line, rvalue); - return 0; - } - - if (safe_atolu(weight, &ul) < 0 || ul < 10 || ul > 1000) { - log_error("[%s:%u] Failed to parse block IO weight value, ignoring: %s", filename, line, rvalue); - return 0; - } - - if (device) - r = asprintf(&t, "%s %lu", device, ul); - else - r = asprintf(&t, "%lu", ul); - if (r < 0) - return log_oom(); - - if (device) - r = unit_add_cgroup_attribute(u, "blkio", "blkio.weight_device", t, blkio_map, NULL); - else - r = unit_add_cgroup_attribute(u, "blkio", "blkio.weight", t, NULL, NULL); + r = cgroup_semantics_find(NULL, lvalue, rvalue, &v, &s); if (r < 0) { - log_error("[%s:%u] Failed to add cgroup attribute value, ignoring: %s", filename, line, rvalue); - return 0; - } - - return 0; -} - -int config_parse_unit_blkio_bandwidth(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata) { - Unit *u = data; - int r; - off_t bytes; - unsigned k; - _cleanup_free_ char *t = NULL; - _cleanup_strv_free_ char **l = NULL; - - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); - - l = strv_split_quoted(rvalue); - if (!l) - return log_oom(); - - k = strv_length(l); - if (k != 2) { - log_error("[%s:%u] Failed to parse bandwidth value, ignoring: %s", filename, line, rvalue); + log_error("[%s:%u] Failed to parse cgroup attribute value, ignoring: %s", filename, line, rvalue); return 0; - } - - if (!path_is_absolute(l[0])) { - log_error("[%s:%u] Failed to parse block device node value, ignoring: %s", filename, line, rvalue); + } else if (r == 0) { + log_error("[%s:%u] Unknown or unsupported cgroup attribute %s, ignoring: %s", filename, line, lvalue, rvalue); return 0; } - if (parse_bytes(l[1], &bytes) < 0 || bytes <= 0) { - log_error("[%s:%u] Failed to parse block IO bandwidth value, ignoring: %s", filename, line, rvalue); - return 0; - } - - r = asprintf(&t, "%s %llu", l[0], (unsigned long long) bytes); - if (r < 0) - return log_oom(); - - r = unit_add_cgroup_attribute(u, "blkio", - streq(lvalue, "BlockIOReadBandwidth") ? "blkio.read_bps_device" : "blkio.write_bps_device", - t, blkio_map, NULL); + r = unit_add_cgroup_attribute(u, s, NULL, NULL, v, NULL); if (r < 0) { log_error("[%s:%u] Failed to add cgroup attribute value, ignoring: %s", filename, line, rvalue); return 0; diff --git a/src/core/load-fragment.h b/src/core/load-fragment.h index 421b4c33ec..dfb2ef0c3b 100644 --- a/src/core/load-fragment.h +++ b/src/core/load-fragment.h @@ -75,11 +75,7 @@ int config_parse_kill_mode(const char *filename, unsigned line, const char *sect int config_parse_notify_access(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_start_limit_action(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_unit_cgroup_attr(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); -int config_parse_unit_cpu_shares(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); -int config_parse_unit_memory_limit(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); -int config_parse_unit_device_allow(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); -int config_parse_unit_blkio_weight(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); -int config_parse_unit_blkio_bandwidth(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); +int config_parse_unit_cgroup_attr_pretty(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_unit_requires_mounts_for(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_syscall_filter(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_environ(const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); diff --git a/src/core/unit.c b/src/core/unit.c index 3a88996eb7..370ad67e59 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -749,15 +749,13 @@ void unit_dump(Unit *u, FILE *f, const char *prefix) { prefix, b->controller, b->path); LIST_FOREACH(by_unit, a, u->cgroup_attributes) { - char *v = NULL; + _cleanup_free_ char *v = NULL; - if (a->map_callback) - a->map_callback(a->controller, a->name, a->value, &v); + if (a->semantics && a->semantics->map_write) + a->semantics->map_write(a->semantics, a->value, &v); fprintf(f, "%s\tControlGroupAttribute: %s %s \"%s\"\n", prefix, a->controller, a->name, v ? v : a->value); - - free(v); } if (UNIT_VTABLE(u)->dump) @@ -1900,30 +1898,12 @@ finish: } int set_unit_path(const char *p) { - char *cwd, *c; - int r; + _cleanup_free_ char *c = NULL; /* This is mostly for debug purposes */ - - if (path_is_absolute(p)) { - if (!(c = strdup(p))) - return -ENOMEM; - } else { - if (!(cwd = get_current_dir_name())) - return -errno; - - r = asprintf(&c, "%s/%s", cwd, p); - free(cwd); - - if (r < 0) - return -ENOMEM; - } - - if (setenv("SYSTEMD_UNIT_PATH", c, 0) < 0) { - r = -errno; - free(c); - return r; - } + c = path_make_absolute_cwd(p); + if (setenv("SYSTEMD_UNIT_PATH", c, 0) < 0) + return -errno; return 0; } @@ -2109,7 +2089,7 @@ static int unit_add_one_default_cgroup(Unit *u, const char *controller) { if (r < 0) goto fail; - return 0; + return 1; fail: free(b->path); @@ -2153,10 +2133,10 @@ CGroupBonding* unit_get_default_cgroup(Unit *u) { int unit_add_cgroup_attribute( Unit *u, + const CGroupSemantics *semantics, const char *controller, const char *name, const char *value, - CGroupAttributeMapCallback map_callback, CGroupAttribute **ret) { _cleanup_free_ char *c = NULL; @@ -2164,48 +2144,67 @@ int unit_add_cgroup_attribute( int r; assert(u); - assert(name); assert(value); + if (semantics) { + /* Semantics always take precedence */ + if (semantics->name) + name = semantics->name; + + if (semantics->controller) + controller = semantics->controller; + } + + if (!name) + return -EINVAL; + if (!controller) { r = cg_controller_from_attr(name, &c); if (r < 0) return -EINVAL; controller = c; - } else { - if (!filename_is_safe(name)) - return -EINVAL; - - if (!filename_is_safe(controller)) - return -EINVAL; } if (!controller || streq(controller, SYSTEMD_CGROUP_CONTROLLER)) return -EINVAL; + if (!filename_is_safe(name)) + return -EINVAL; + + if (!filename_is_safe(controller)) + return -EINVAL; + + /* Check if this attribute already exists. Note that we will + * explicitly check for the value here too, as there are + * attributes which accept multiple values. */ a = cgroup_attribute_find_list(u->cgroup_attributes, controller, name); if (a) { - char *v; - if (streq(value, a->value)) { + /* Exactly the same value is always OK, let's ignore this */ if (ret) *ret = a; return 0; } - v = strdup(value); - if (!v) - return -ENOMEM; + if (semantics && !semantics->multiple) { + char *v; - free(a->value); - a->value = v; + /* If this is a single-item entry, we can + * simply patch the existing attribute */ + + v = strdup(value); + if (!v) + return -ENOMEM; - if (ret) - *ret = a; + free(a->value); + a->value = v; - return 1; + if (ret) + *ret = a; + return 1; + } } a = new0(CGroupAttribute, 1); @@ -2226,11 +2225,10 @@ int unit_add_cgroup_attribute( free(a->name); free(a->value); free(a); - return -ENOMEM; } - a->map_callback = map_callback; + a->semantics = semantics; a->unit = u; LIST_PREPEND(CGroupAttribute, by_unit, u->cgroup_attributes, a); @@ -2763,52 +2761,77 @@ ExecContext *unit_get_exec_context(Unit *u) { return (ExecContext*) ((uint8_t*) u + offset); } -int unit_write_drop_in(Unit *u, bool runtime, const char *name, const char *data) { - _cleanup_free_ char *p = NULL, *q = NULL; +static int drop_in_file(Unit *u, bool runtime, const char *name, char **_p, char **_q) { + char *p, *q; + int r; + assert(u); + assert(name); + assert(_p); + assert(_q); - if (u->manager->running_as != SYSTEMD_SYSTEM) + if (u->manager->running_as == SYSTEMD_USER && runtime) return -ENOTSUP; if (!filename_is_safe(name)) return -EINVAL; - p = strjoin(runtime ? "/run/systemd/system/" : "/etc/systemd/system/", u->id, ".d", NULL); + if (u->manager->running_as == SYSTEMD_USER) { + _cleanup_free_ char *c = NULL; + + r = user_config_home(&c); + if (r < 0) + return r; + if (r == 0) + return -ENOENT; + + p = strjoin(c, "/", u->id, ".d", NULL); + } else if (runtime) + p = strjoin("/run/systemd/system/", u->id, ".d", NULL); + else + p = strjoin("/etc/systemd/system/", u->id, ".d", NULL); if (!p) return -ENOMEM; q = strjoin(p, "/50-", name, ".conf", NULL); - if (!q) + if (!q) { + free(p); return -ENOMEM; + } - mkdir_p(p, 0755); - return write_one_line_file_atomic_label(q, data); + *_p = p; + *_q = q; + return 0; } -int unit_remove_drop_in(Unit *u, bool runtime, const char *name) { +int unit_write_drop_in(Unit *u, bool runtime, const char *name, const char *data) { _cleanup_free_ char *p = NULL, *q = NULL; + int r; assert(u); - if (u->manager->running_as != SYSTEMD_SYSTEM) - return -ENOTSUP; + r = drop_in_file(u, runtime, name, &p, &q); + if (r < 0) + return r; - if (!filename_is_safe(name)) - return -EINVAL; + mkdir_p(p, 0755); + return write_one_line_file_atomic_label(q, data); +} - p = strjoin(runtime ? "/run/systemd/system/" : "/etc/systemd/system/", u->id, ".d", NULL); - if (!p) - return -ENOMEM; +int unit_remove_drop_in(Unit *u, bool runtime, const char *name) { + _cleanup_free_ char *p = NULL, *q = NULL; + int r; - q = strjoin(p, "/50-", name, ".conf", NULL); - if (!q) - return -ENOMEM; + assert(u); + r = drop_in_file(u, runtime, name, &p, &q); if (unlink(q) < 0) - return -errno; + r = -errno; + else + r = 0; rmdir(p); - return 0; + return r; } int unit_kill_context( diff --git a/src/core/unit.h b/src/core/unit.h index c90210302d..17a5a5f0d9 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -40,6 +40,7 @@ typedef struct UnitStatusMessageFormats UnitStatusMessageFormats; #include "condition.h" #include "install.h" #include "unit-name.h" +#include "cgroup-semantics.h" enum UnitActiveState { UNIT_ACTIVE, @@ -445,7 +446,7 @@ int unit_add_cgroup(Unit *u, CGroupBonding *b); int unit_add_cgroup_from_text(Unit *u, const char *name, bool overwrite, CGroupBonding **ret); int unit_add_default_cgroups(Unit *u); CGroupBonding* unit_get_default_cgroup(Unit *u); -int unit_add_cgroup_attribute(Unit *u, const char *controller, const char *name, const char *value, CGroupAttributeMapCallback map_callback, CGroupAttribute **ret); +int unit_add_cgroup_attribute(Unit *u, const CGroupSemantics *semantics, const char *controller, const char *name, const char *value, CGroupAttribute **ret); int unit_choose_id(Unit *u, const char *name); int unit_set_description(Unit *u, const char *description); diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c index fa4995ceea..ffdc5367cb 100644 --- a/src/shared/path-lookup.c +++ b/src/shared/path-lookup.c @@ -41,21 +41,26 @@ DEFINE_STRING_TABLE_LOOKUP(systemd_running_as, SystemdRunningAs); int user_config_home(char **config_home) { const char *e; + char *r; e = getenv("XDG_CONFIG_HOME"); if (e) { - if (asprintf(config_home, "%s/systemd/user", e) < 0) + r = strappend(e, "/systemd/user"); + if (!r) return -ENOMEM; + *config_home = r; return 1; } else { const char *home; home = getenv("HOME"); if (home) { - if (asprintf(config_home, "%s/.config/systemd/user", home) < 0) + r = strappend(home, "/.config/systemd/user"); + if (!r) return -ENOMEM; + *config_home = r; return 1; } } diff --git a/src/shared/strv.c b/src/shared/strv.c index ec25755289..60c4762572 100644 --- a/src/shared/strv.c +++ b/src/shared/strv.c @@ -305,6 +305,31 @@ char **strv_split_quoted(const char *s) { return r; } +char **strv_split_newlines(const char *s) { + char **l; + unsigned n; + + assert(s); + + /* Special version of strv_split() that splits on newlines and + * suppresses an empty string at the end */ + + l = strv_split(s, NEWLINE); + if (!l) + return NULL; + + n = strv_length(l); + if (n <= 0) + return l; + + if (isempty(l[n-1])) { + free(l[n-1]); + l[n-1] = NULL; + } + + return l; +} + char *strv_join(char **l, const char *separator) { char *r, *e; char **s; diff --git a/src/shared/strv.h b/src/shared/strv.h index b3802a7a3f..623f10216d 100644 --- a/src/shared/strv.h +++ b/src/shared/strv.h @@ -58,6 +58,7 @@ static inline bool strv_isempty(char **l) { char **strv_split(const char *s, const char *separator) _malloc_; char **strv_split_quoted(const char *s) _malloc_; +char **strv_split_newlines(const char *s) _malloc_; char *strv_join(char **l, const char *separator) _malloc_; diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 65c5eca559..a2dbbe82cd 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1963,53 +1963,41 @@ static int kill_unit(DBusConnection *bus, char **args) { } static int set_cgroup(DBusConnection *bus, char **args) { - _cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL; - DBusError error; - const char *method; - DBusMessageIter iter; - int r; _cleanup_free_ char *n = NULL; - const char *runtime; + const char *method, *runtime; + char **argument; + int r; assert(bus); assert(args); - dbus_error_init(&error); - method = - streq(args[0], "set-cgroup") ? "SetUnitControlGroups" : - streq(args[0], "unset-group") ? "UnsetUnitControlGroups" - : "UnsetUnitControlGroupAttributes"; + streq(args[0], "set-cgroup") ? "SetUnitControlGroup" : + streq(args[0], "unset-cgroup") ? "UnsetUnitControlGroup" + : "UnsetUnitControlGroupAttribute"; + + runtime = arg_runtime ? "runtime" : "persistent"; n = unit_name_mangle(args[1]); if (!n) return log_oom(); - m = dbus_message_new_method_call( - "org.freedesktop.systemd1", - "/org/freedesktop/systemd1", - "org.freedesktop.systemd1.Manager", - method); - if (!m) - return log_oom(); - - dbus_message_iter_init_append(m, &iter); - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &n)) - return log_oom(); - - r = bus_append_strv_iter(&iter, args + 2); - if (r < 0) - return log_oom(); - - runtime = arg_runtime ? "runtime" : "persistent"; - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &runtime)) - return log_oom(); + STRV_FOREACH(argument, args + 2) { - reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error); - if (!reply) { - log_error("Failed to issue method call: %s", bus_error_message(&error)); - dbus_error_free(&error); - return -EIO; + r = bus_method_call_with_reply( + bus, + "org.freedesktop.systemd1", + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + method, + NULL, + NULL, + DBUS_TYPE_STRING, &n, + DBUS_TYPE_STRING, argument, + DBUS_TYPE_STRING, &runtime, + DBUS_TYPE_INVALID); + if (r < 0) + return r; } return 0; @@ -2018,20 +2006,17 @@ static int set_cgroup(DBusConnection *bus, char **args) { static int set_cgroup_attr(DBusConnection *bus, char **args) { _cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL; DBusError error; - DBusMessageIter iter, sub, sub2; - char **x, **y; + DBusMessageIter iter; _cleanup_free_ char *n = NULL; const char *runtime; + int r; assert(bus); assert(args); dbus_error_init(&error); - if (strv_length(args) % 2 != 0) { - log_error("Expecting an uneven number of arguments!"); - return -EINVAL; - } + runtime = arg_runtime ? "runtime" : "persistent"; n = unit_name_mangle(args[1]); if (!n) @@ -2041,26 +2026,20 @@ static int set_cgroup_attr(DBusConnection *bus, char **args) { "org.freedesktop.systemd1", "/org/freedesktop/systemd1", "org.freedesktop.systemd1.Manager", - "SetUnitControlGroupAttributes"); + "SetUnitControlGroupAttribute"); if (!m) return log_oom(); dbus_message_iter_init_append(m, &iter); if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &n) || - !dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "(ss)", &sub)) + !dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &args[2])) return log_oom(); - STRV_FOREACH_PAIR(x, y, args + 2) { - if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2) || - !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, x) || - !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, y) || - !dbus_message_iter_close_container(&sub, &sub2)) - return log_oom(); - } + r = bus_append_strv_iter(&iter, args + 3); + if (r < 0) + return log_oom(); - runtime = arg_runtime ? "runtime" : "persistent"; - if (!dbus_message_iter_close_container(&iter, &sub) || - !dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &runtime)) + if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &runtime)) return log_oom(); reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error); @@ -2075,57 +2054,49 @@ static int set_cgroup_attr(DBusConnection *bus, char **args) { static int get_cgroup_attr(DBusConnection *bus, char **args) { _cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL; - DBusError error; - DBusMessageIter iter; - int r; _cleanup_free_ char *n = NULL; - _cleanup_strv_free_ char **list = NULL; - char **a; + char **argument; + int r; assert(bus); assert(args); - dbus_error_init(&error); - n = unit_name_mangle(args[1]); if (!n) return log_oom(); - m = dbus_message_new_method_call( - "org.freedesktop.systemd1", - "/org/freedesktop/systemd1", - "org.freedesktop.systemd1.Manager", - "GetUnitControlGroupAttributes"); - if (!m) - return log_oom(); - - dbus_message_iter_init_append(m, &iter); - if (!dbus_message_iter_append_basic(&iter, DBUS_TYPE_STRING, &n)) - return log_oom(); - - r = bus_append_strv_iter(&iter, args + 2); - if (r < 0) - return log_oom(); + STRV_FOREACH(argument, args + 2) { + _cleanup_strv_free_ char **list = NULL; + DBusMessageIter iter; + char **a; - reply = dbus_connection_send_with_reply_and_block(bus, m, -1, &error); - if (!reply) { - log_error("Failed to issue method call: %s", bus_error_message(&error)); - dbus_error_free(&error); - return -EIO; - } + r = bus_method_call_with_reply( + bus, + "org.freedesktop.systemd1", + "/org/freedesktop/systemd1", + "org.freedesktop.systemd1.Manager", + "GetUnitControlGroupAttribute", + &reply, + NULL, + DBUS_TYPE_STRING, &n, + DBUS_TYPE_STRING, argument, + DBUS_TYPE_INVALID); + if (r < 0) + return r; - dbus_message_iter_init(reply, &iter); - r = bus_parse_strv_iter(&iter, &list); - if (r < 0) { - log_error("Failed to parse value list."); - return r; - } + dbus_message_iter_init(reply, &iter); + r = bus_parse_strv_iter(&iter, &list); + if (r < 0) { + log_error("Failed to parse value list."); + return r; + } - STRV_FOREACH(a, list) { - if (endswith(*a, "\n")) - fputs(*a, stdout); - else - puts(*a); + STRV_FOREACH(a, list) { + if (endswith(*a, "\n")) + fputs(*a, stdout); + else + puts(*a); + } } return 0; -- cgit v1.2.1 From f0c15f288513aa4da012db7497a4aec3f7763ebb Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 27 Feb 2013 18:56:25 +0100 Subject: update TODO --- TODO | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/TODO b/TODO index 253b0e8cc3..5427d1b62f 100644 --- a/TODO +++ b/TODO @@ -30,11 +30,8 @@ Fedora 19: that's sometimes kinda hard to parse for a human. * cgroup attrs: - - don't unconditionally filter out duplicate settings - - support high-level cgroup setting syntax in systemctl. Example: "systemctl set-cgroup-attr MemoryLimit 5K" - - support writte string mapping even for non-high-level settings - add man page for systemctl commands - - make sure we work fine with multi-line strings + - update dbus interface docs in wiki * kernel cmdline switch to turn off predictable network interface names -- cgit v1.2.1 From 1f4cadad8ba5bae48ae8169eebe01558ce664ee8 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 27 Feb 2013 18:58:56 +0100 Subject: systemctl: fix minimal number of params for new cgroup commands --- src/systemctl/systemctl.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index a2dbbe82cd..c67c6c972a 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -5094,11 +5094,11 @@ static int systemctl_main(DBusConnection *bus, int argc, char *argv[], DBusError { "condreload", MORE, 2, start_unit }, /* For compatibility with ALTLinux */ { "condrestart", MORE, 2, start_unit }, /* For compatibility with RH */ { "isolate", EQUAL, 2, start_unit }, - { "set-cgroup", MORE, 2, set_cgroup }, - { "unset-cgroup", MORE, 2, set_cgroup }, - { "get-cgroup-attr", MORE, 2, get_cgroup_attr }, - { "set-cgroup-attr", MORE, 2, set_cgroup_attr }, - { "unset-cgroup-attr", MORE, 2, set_cgroup }, + { "set-cgroup", MORE, 3, set_cgroup }, + { "unset-cgroup", MORE, 3, set_cgroup }, + { "get-cgroup-attr", MORE, 3, get_cgroup_attr }, + { "set-cgroup-attr", MORE, 4, set_cgroup_attr }, + { "unset-cgroup-attr", MORE, 3, set_cgroup }, { "kill", MORE, 2, kill_unit }, { "is-active", MORE, 2, check_unit_active }, { "check", MORE, 2, check_unit_active }, -- cgit v1.2.1 From a330b376bac697ecf13cada5f96070a318ab9ab9 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 27 Feb 2013 19:37:04 +0100 Subject: man: document the new systemctl cgroup commands --- man/systemctl.xml | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 104 insertions(+), 3 deletions(-) diff --git a/man/systemctl.xml b/man/systemctl.xml index 39229a0075..87d783e45d 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -392,14 +392,22 @@ along with systemd; If not, see . - When used with - enable/disable/is-enabled + When used with enable, + disable, is-enabled (and related commands), make changes only temporarily, so - that they are dropped on the next reboot. This will have the + that they are lost on the next reboot. This will have the effect that changes are not made in subdirectories of /etc but in /run, with identical immediate effects, however, since the latter is lost on reboot, the changes are lost too. + + Similar, when used with + set-cgroup-attr, + unset-cgroup-attr, + set-cgroup and + unset-cgroup, make changes only + temporarily, so that they are lost on the next + reboot. @@ -631,6 +639,98 @@ along with systemd; If not, see . human-readable output. + + + get-cgroup-attr NAME ATTRIBUTE... + + + Retrieve the specified control group attributes of the + specified unit. Takes a unit name and one or more attribute + names such as cpu.shares. This will + output the current values of the specified attributes, + separated by new-lines. For attributes that take list of + items the output will be new-line separated, too. This + operation will always try to retrieve the data in question + from the kernel first, and if that is not available use the + configured values instead. Instead of low-level control + group attribute names high-level pretty names may be used, + as used for unit execution environment configuration, see + systemd.exec5 + for details. For example, passing + memory.limit_in_bytes and + MemoryLimit is equivalent. + + + + + set-cgroup-attr NAME ATTRIBUTE VALUE... + + + Set the specified control group attribute of the + specified unit to the specified value. Takes a unit + name and an attribute name such as + cpu.shares, plus one or more values + (multiple values may only be used for attributes that take + multiple values). This operation will immediately update the + kernel attribute for this unit and persistently store this + setting for later reboots (unless + is passed, in which case the setting is not saved + persistently and only valid until the next reboot.) Instead + of low-level control group attribute names high-level pretty + names may be used, as used for unit execution environment + configuration, see + systemd.exec5 + for details. For example, passing + memory.limit_in_bytes and + MemoryLimit is equivalent. This operation + will implicitly create a control group for the unit in the + controller the attribute belongs to, if needed. For + attributes that take multiple values, this operation will + append the specified values to the previously set values + list (use unset-cgroup-attr to reset the + list explicitly). For attributes that take a single value + only the list will be reset implicitly. + + + + + unset-cgroup-attr NAME ATTRIBUTE... + + Unset the specified control group attributes + of the specified unit. Takes a unit name and one or more + attribut names such as cpu.shares. This + operation might or might not have an immediate effect on the + current kernel attribute value. This will remove any + persistently stored configuration values for this attribute + (as set with set-cgroup-attr before), + unless is passed, in which case the + configuration is reset only until the next reboot. Again, + high-level control group attributes may be used instead of the + low-level kernel ones. For attributes which take multiple + values, all currently set values are reset. + + + + + set-cgroup NAME CGROUP... + unset-cgroup NAME CGROUP... + + Add or remove a unit to/from a specific + control group hierarchy and/or control group path. Takes a + unit name, plus a control group specification in the syntax + CONTROLLER:PATH + or CONTROLLER. In the latter syntax + (where the path is ommitted) the default unit control group + path is implied. Examples: cpu or + cpu:/foo/bar. If a unit is removed from a + control group hierarchy all its processes will be moved to the + root group of the hierarchy and all control group attributes + will be reset. These operations are immediately reflected in + the kernel hierarchy, and stored persistently to disk (unless + is passed). + + + help NAME...|PID... @@ -641,6 +741,7 @@ along with systemd; If not, see . shown. + reset-failed [NAME...] -- cgit v1.2.1 From 637f8b8eb5decb6dd626276ea9e3a545c895e086 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Tue, 26 Feb 2013 12:09:41 +0100 Subject: =?UTF-8?q?core:=C2=A0keep=20track=20of=20the=20number=20of=20JOB?= =?UTF-8?q?=5FRUNNING=20jobs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/job.c | 13 +++++++++---- src/core/manager.h | 2 ++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/core/job.c b/src/core/job.c index 990607f990..677a01d73d 100644 --- a/src/core/job.c +++ b/src/core/job.c @@ -206,6 +206,7 @@ Job* job_install(Job *j) { "Merged into running job, re-running: %s/%s as %u", uj->unit->id, job_type_to_string(uj->type), (unsigned) uj->id); uj->state = JOB_WAITING; + uj->manager->n_running_jobs--; return uj; } } @@ -483,7 +484,7 @@ static void job_change_type(Job *j, JobType newtype) { int job_run_and_invalidate(Job *j) { int r; uint32_t id; - Manager *m; + Manager *m = j->manager; assert(j); assert(j->installed); @@ -500,6 +501,7 @@ int job_run_and_invalidate(Job *j) { return -EAGAIN; j->state = JOB_RUNNING; + m->n_running_jobs++; job_add_to_dbus_queue(j); /* While we execute this operation the job might go away (for @@ -508,7 +510,6 @@ int job_run_and_invalidate(Job *j) { * store the id here, so that we can verify the job is still * valid. */ id = j->id; - m = j->manager; switch (j->type) { @@ -558,9 +559,10 @@ int job_run_and_invalidate(Job *j) { r = job_finish_and_invalidate(j, JOB_DONE, true); else if (r == -ENOEXEC) r = job_finish_and_invalidate(j, JOB_SKIPPED, true); - else if (r == -EAGAIN) + else if (r == -EAGAIN) { j->state = JOB_WAITING; - else if (r < 0) + m->n_running_jobs--; + } else if (r < 0) r = job_finish_and_invalidate(j, JOB_FAILED, true); } @@ -760,6 +762,9 @@ int job_finish_and_invalidate(Job *j, JobResult result, bool recursive) { j->result = result; + if (j->state == JOB_RUNNING) + j->manager->n_running_jobs--; + log_debug_unit(u->id, "Job %s/%s finished, result=%s", u->id, job_type_to_string(t), job_result_to_string(result)); diff --git a/src/core/manager.h b/src/core/manager.h index cc4edf8f1e..0bd7a6d48b 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -225,6 +225,8 @@ struct Manager { unsigned n_installed_jobs; unsigned n_failed_jobs; + unsigned n_running_jobs; + /* Type=idle pipes */ int idle_pipe[2]; -- cgit v1.2.1 From 25cee55076a7c00c0a584731c2705686cc843210 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Thu, 28 Feb 2013 00:14:40 +0100 Subject: core: add manager_status_printf() unit_status_printf() checks the state of the manager, not of the unit as such. Move it to manager.c and rename it to manager_status_printf(). Temporarily keep unit_status_printf as a wrapper macro. --- src/core/manager.c | 14 ++++++++++++++ src/core/manager.h | 1 + src/core/unit.c | 17 ----------------- src/core/unit.h | 3 ++- 4 files changed, 17 insertions(+), 18 deletions(-) diff --git a/src/core/manager.c b/src/core/manager.c index a578813617..d6c6e2de6d 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -2494,6 +2494,20 @@ bool manager_get_show_status(Manager *m) { return plymouth_running(); } +void manager_status_printf(Manager *m, const char *status, const char *format, ...) { + va_list ap; + + if (!manager_get_show_status(m)) + return; + + if (!manager_is_booting_or_shutting_down(m)) + return; + + va_start(ap, format); + status_vprintf(status, true, format, ap); + va_end(ap); +} + void watch_init(Watch *w) { assert(w); diff --git a/src/core/manager.h b/src/core/manager.h index 0bd7a6d48b..3ec8d707d2 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -295,6 +295,7 @@ void manager_undo_generators(Manager *m); void manager_recheck_journal(Manager *m); void manager_set_show_status(Manager *m, bool b); +void manager_status_printf(Manager *m, const char *status, const char *format, ...); bool manager_get_show_status(Manager *m); void watch_init(Watch *w); diff --git a/src/core/unit.c b/src/core/unit.c index 370ad67e59..74b0e47885 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -2535,23 +2535,6 @@ int unit_coldplug(Unit *u) { return 0; } -void unit_status_printf(Unit *u, const char *status, const char *format, ...) { - va_list ap; - - assert(u); - assert(format); - - if (!manager_get_show_status(u->manager)) - return; - - if (!manager_is_booting_or_shutting_down(u->manager)) - return; - - va_start(ap, format); - status_vprintf(status, true, format, ap); - va_end(ap); -} - bool unit_need_daemon_reload(Unit *u) { struct stat st; diff --git a/src/core/unit.h b/src/core/unit.h index 17a5a5f0d9..84aabd5723 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -520,7 +520,8 @@ int unit_add_node_link(Unit *u, const char *what, bool wants); int unit_coldplug(Unit *u); -void unit_status_printf(Unit *u, const char *status, const char *format, ...); +#define unit_status_printf(u, st, fo, ...) \ + manager_status_printf((u)->manager, st, fo, __VA_ARGS__) bool unit_need_daemon_reload(Unit *u); -- cgit v1.2.1 From 6084e22e57afd588ad205697c0af119d93db1e39 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Thu, 28 Feb 2013 00:14:47 +0100 Subject: core/manager: make a couple of functions static They're not used outside manager.c anymore. --- src/core/manager.c | 4 ++-- src/core/manager.h | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/core/manager.c b/src/core/manager.c index d6c6e2de6d..1dac69b791 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -2152,7 +2152,7 @@ finish: return r; } -bool manager_is_booting_or_shutting_down(Manager *m) { +static bool manager_is_booting_or_shutting_down(Manager *m) { Unit *u; assert(m); @@ -2479,7 +2479,7 @@ void manager_set_show_status(Manager *m, bool b) { unlink("/run/systemd/show-status"); } -bool manager_get_show_status(Manager *m) { +static bool manager_get_show_status(Manager *m) { assert(m); if (m->running_as != SYSTEMD_SYSTEM) diff --git a/src/core/manager.h b/src/core/manager.h index 3ec8d707d2..d21f27dfd4 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -278,8 +278,6 @@ int manager_distribute_fds(Manager *m, FDSet *fds); int manager_reload(Manager *m); -bool manager_is_booting_or_shutting_down(Manager *m); - void manager_reset_failed(Manager *m); void manager_send_unit_audit(Manager *m, Unit *u, int type, bool success); @@ -296,6 +294,5 @@ void manager_recheck_journal(Manager *m); void manager_set_show_status(Manager *m, bool b); void manager_status_printf(Manager *m, const char *status, const char *format, ...); -bool manager_get_show_status(Manager *m); void watch_init(Watch *w); -- cgit v1.2.1 From 49b1d377263f33991a03235779e50f61273ba649 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Wed, 27 Feb 2013 22:54:14 +0100 Subject: =?UTF-8?q?core:=C2=A0redefine=20unit=5Fstatus=5Fprintf()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Take advantage of the fact that almost all callers want to pass unit description as the last parameter. Those who don't can use the more flexible manager_status_printf(). --- src/core/job.c | 16 ++++++++-------- src/core/unit.c | 6 +++++- src/core/unit.h | 3 +-- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/core/job.c b/src/core/job.c index 677a01d73d..9f792b84fd 100644 --- a/src/core/job.c +++ b/src/core/job.c @@ -644,20 +644,20 @@ static void job_print_status_message(Unit *u, JobType t, JobResult result) { case JOB_DONE: if (u->condition_result) - unit_status_printf(u, ANSI_HIGHLIGHT_GREEN_ON " OK " ANSI_HIGHLIGHT_OFF, format, unit_description(u)); + unit_status_printf(u, ANSI_HIGHLIGHT_GREEN_ON " OK " ANSI_HIGHLIGHT_OFF, format); break; case JOB_FAILED: - unit_status_printf(u, ANSI_HIGHLIGHT_RED_ON "FAILED" ANSI_HIGHLIGHT_OFF, format, unit_description(u)); - unit_status_printf(u, NULL, "See 'systemctl status %s' for details.", u->id); + unit_status_printf(u, ANSI_HIGHLIGHT_RED_ON "FAILED" ANSI_HIGHLIGHT_OFF, format); + manager_status_printf(u->manager, NULL, "See 'systemctl status %s' for details.", u->id); break; case JOB_DEPENDENCY: - unit_status_printf(u, ANSI_HIGHLIGHT_YELLOW_ON "DEPEND" ANSI_HIGHLIGHT_OFF, format, unit_description(u)); + unit_status_printf(u, ANSI_HIGHLIGHT_YELLOW_ON "DEPEND" ANSI_HIGHLIGHT_OFF, format); break; case JOB_TIMEOUT: - unit_status_printf(u, ANSI_HIGHLIGHT_RED_ON " TIME " ANSI_HIGHLIGHT_OFF, format, unit_description(u)); + unit_status_printf(u, ANSI_HIGHLIGHT_RED_ON " TIME " ANSI_HIGHLIGHT_OFF, format); break; default: @@ -673,12 +673,12 @@ static void job_print_status_message(Unit *u, JobType t, JobResult result) { switch (result) { case JOB_TIMEOUT: - unit_status_printf(u, ANSI_HIGHLIGHT_RED_ON " TIME " ANSI_HIGHLIGHT_OFF, format, unit_description(u)); + unit_status_printf(u, ANSI_HIGHLIGHT_RED_ON " TIME " ANSI_HIGHLIGHT_OFF, format); break; case JOB_DONE: case JOB_FAILED: - unit_status_printf(u, ANSI_HIGHLIGHT_GREEN_ON " OK " ANSI_HIGHLIGHT_OFF, format, unit_description(u)); + unit_status_printf(u, ANSI_HIGHLIGHT_GREEN_ON " OK " ANSI_HIGHLIGHT_OFF, format); break; default: @@ -691,7 +691,7 @@ static void job_print_status_message(Unit *u, JobType t, JobResult result) { * Most likely a DEPEND warning from a requisiting unit will * occur next and it's nice to see what was requisited. */ if (result == JOB_SKIPPED) - unit_status_printf(u, ANSI_HIGHLIGHT_ON " INFO " ANSI_HIGHLIGHT_OFF, "%s is not active.", unit_description(u)); + unit_status_printf(u, ANSI_HIGHLIGHT_ON " INFO " ANSI_HIGHLIGHT_OFF, "%s is not active."); } } diff --git a/src/core/unit.c b/src/core/unit.c index 74b0e47885..6fee0506d8 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -994,7 +994,7 @@ static void unit_status_print_starting_stopping(Unit *u, JobType t) { if (!format) return; - unit_status_printf(u, "", format, unit_description(u)); + unit_status_printf(u, "", format); } #pragma GCC diagnostic push @@ -2535,6 +2535,10 @@ int unit_coldplug(Unit *u) { return 0; } +void unit_status_printf(Unit *u, const char *status, const char *unit_status_msg_format) { + manager_status_printf(u->manager, false, status, unit_status_msg_format, unit_description(u)); +} + bool unit_need_daemon_reload(Unit *u) { struct stat st; diff --git a/src/core/unit.h b/src/core/unit.h index 84aabd5723..9029d6225b 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -520,8 +520,7 @@ int unit_add_node_link(Unit *u, const char *what, bool wants); int unit_coldplug(Unit *u); -#define unit_status_printf(u, st, fo, ...) \ - manager_status_printf((u)->manager, st, fo, __VA_ARGS__) +void unit_status_printf(Unit *u, const char *status, const char *unit_status_msg_format); bool unit_need_daemon_reload(Unit *u); -- cgit v1.2.1 From 297d0749dd82ea2442203d53c23ee401bdf46fca Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Wed, 27 Feb 2013 23:31:35 +0100 Subject: =?UTF-8?q?core/transaction:=C2=A0replace=20a=20bare=20status=5Fpr?= =?UTF-8?q?intf()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Like other status messages, this one too should not be printed unconditionally, but it should take the manager state into account. unit_status_printf() does that. --- src/core/transaction.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/transaction.c b/src/core/transaction.c index 0329366350..4a8d90e6e5 100644 --- a/src/core/transaction.c +++ b/src/core/transaction.c @@ -396,8 +396,8 @@ static int transaction_verify_order_one(Transaction *tr, Job *j, Job *from, unsi "Job %s/%s deleted to break ordering cycle starting with %s/%s", delete->unit->id, job_type_to_string(delete->type), j->unit->id, job_type_to_string(j->type)); - status_printf(ANSI_HIGHLIGHT_RED_ON " SKIP " ANSI_HIGHLIGHT_OFF, true, - "Ordering cycle found, skipping %s", unit_description(delete->unit)); + unit_status_printf(delete->unit, ANSI_HIGHLIGHT_RED_ON " SKIP " ANSI_HIGHLIGHT_OFF, + "Ordering cycle found, skipping %s"); transaction_delete_unit(tr, delete->unit); return -EAGAIN; } -- cgit v1.2.1 From 984a2be450abac81474889b8bea4b3fbeddb26c5 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Wed, 27 Feb 2013 22:52:43 +0100 Subject: =?UTF-8?q?util,=20core:=C2=A0add=20support=20for=20ephemeral=20st?= =?UTF-8?q?atus=20lines?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ephemeral status lines do not end with a newline and they expect to be overwritten by the next printed status line. --- src/core/job.c | 2 +- src/core/manager.c | 4 ++-- src/core/manager.h | 2 +- src/shared/util.c | 16 +++++++++++----- src/shared/util.h | 5 +++-- 5 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/core/job.c b/src/core/job.c index 9f792b84fd..90de550016 100644 --- a/src/core/job.c +++ b/src/core/job.c @@ -649,7 +649,7 @@ static void job_print_status_message(Unit *u, JobType t, JobResult result) { case JOB_FAILED: unit_status_printf(u, ANSI_HIGHLIGHT_RED_ON "FAILED" ANSI_HIGHLIGHT_OFF, format); - manager_status_printf(u->manager, NULL, "See 'systemctl status %s' for details.", u->id); + manager_status_printf(u->manager, false, NULL, "See 'systemctl status %s' for details.", u->id); break; case JOB_DEPENDENCY: diff --git a/src/core/manager.c b/src/core/manager.c index 1dac69b791..c6f13f7d5a 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -2494,7 +2494,7 @@ static bool manager_get_show_status(Manager *m) { return plymouth_running(); } -void manager_status_printf(Manager *m, const char *status, const char *format, ...) { +void manager_status_printf(Manager *m, bool ephemeral, const char *status, const char *format, ...) { va_list ap; if (!manager_get_show_status(m)) @@ -2504,7 +2504,7 @@ void manager_status_printf(Manager *m, const char *status, const char *format, . return; va_start(ap, format); - status_vprintf(status, true, format, ap); + status_vprintf(status, true, ephemeral, format, ap); va_end(ap); } diff --git a/src/core/manager.h b/src/core/manager.h index d21f27dfd4..0d0255289a 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -293,6 +293,6 @@ void manager_undo_generators(Manager *m); void manager_recheck_journal(Manager *m); void manager_set_show_status(Manager *m, bool b); -void manager_status_printf(Manager *m, const char *status, const char *format, ...); +void manager_status_printf(Manager *m, bool ephemeral, const char *status, const char *format, ...); void watch_init(Watch *w); diff --git a/src/shared/util.c b/src/shared/util.c index f5adedc531..cc415894a5 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -2859,12 +2859,13 @@ cpu_set_t* cpu_set_malloc(unsigned *ncpus) { } } -int status_vprintf(const char *status, bool ellipse, const char *format, va_list ap) { +int status_vprintf(const char *status, bool ellipse, bool ephemeral, const char *format, va_list ap) { static const char status_indent[] = " "; /* "[" STATUS "] " */ _cleanup_free_ char *s = NULL; _cleanup_close_ int fd = -1; - struct iovec iovec[5]; + struct iovec iovec[6]; int n = 0; + static bool prev_ephemeral; assert(format); @@ -2902,6 +2903,10 @@ int status_vprintf(const char *status, bool ellipse, const char *format, va_list zero(iovec); + if (prev_ephemeral) + IOVEC_SET_STRING(iovec[n++], "\r" ANSI_ERASE_TO_END_OF_LINE); + prev_ephemeral = ephemeral; + if (status) { if (!isempty(status)) { IOVEC_SET_STRING(iovec[n++], "["); @@ -2912,7 +2917,8 @@ int status_vprintf(const char *status, bool ellipse, const char *format, va_list } IOVEC_SET_STRING(iovec[n++], s); - IOVEC_SET_STRING(iovec[n++], "\n"); + if (!ephemeral) + IOVEC_SET_STRING(iovec[n++], "\n"); if (writev(fd, iovec, n) < 0) return -errno; @@ -2920,14 +2926,14 @@ int status_vprintf(const char *status, bool ellipse, const char *format, va_list return 0; } -int status_printf(const char *status, bool ellipse, const char *format, ...) { +int status_printf(const char *status, bool ellipse, bool ephemeral, const char *format, ...) { va_list ap; int r; assert(format); va_start(ap, format); - r = status_vprintf(status, ellipse, format, ap); + r = status_vprintf(status, ellipse, ephemeral, format, ap); va_end(ap); return r; diff --git a/src/shared/util.h b/src/shared/util.h index 19cc36af84..f8957bca42 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -59,6 +59,7 @@ union dirent_storage { #define ANSI_HIGHLIGHT_GREEN_ON "\x1B[1;32m" #define ANSI_HIGHLIGHT_YELLOW_ON "\x1B[1;33m" #define ANSI_HIGHLIGHT_OFF "\x1B[0m" +#define ANSI_ERASE_TO_END_OF_LINE "\x1B[K" size_t page_size(void); #define PAGE_ALIGN(l) ALIGN_TO((l), page_size()) @@ -354,8 +355,8 @@ int pipe_eof(int fd); cpu_set_t* cpu_set_malloc(unsigned *ncpus); -int status_vprintf(const char *status, bool ellipse, const char *format, va_list ap); -int status_printf(const char *status, bool ellipse, const char *format, ...); +int status_vprintf(const char *status, bool ellipse, bool ephemeral, const char *format, va_list ap); +int status_printf(const char *status, bool ellipse, bool ephemeral, const char *format, ...); int status_welcome(void); int fd_columns(int fd); -- cgit v1.2.1 From 546ac4f0078228ef0bdd764dc7566cacf684c562 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Wed, 27 Feb 2013 23:58:10 +0100 Subject: =?UTF-8?q?core/unit:=C2=A0use=20a=20temp=20variable=20for=20manag?= =?UTF-8?q?er=20pointer=20in=20unit=5Fnotify()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/core/unit.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/src/core/unit.c b/src/core/unit.c index 6fee0506d8..f8a913e39a 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1320,6 +1320,7 @@ void unit_trigger_on_failure(Unit *u) { } void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_success) { + Manager *m; bool unexpected; assert(u); @@ -1332,7 +1333,9 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su * behavior here. For example: if a mount point is remounted * this function will be called too! */ - if (u->manager->n_reloading <= 0) { + m = u->manager; + + if (m->n_reloading <= 0) { dual_timestamp ts; dual_timestamp_get(&ts); @@ -1420,7 +1423,7 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su } else unexpected = true; - if (u->manager->n_reloading <= 0) { + if (m->n_reloading <= 0) { /* If this state change happened without being * requested by a job, then let's retroactively start @@ -1456,18 +1459,18 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su /* The bus just might have become available, * hence try to connect to it, if we aren't * yet connected. */ - bus_init(u->manager, true); + bus_init(m, true); if (u->type == UNIT_SERVICE && !UNIT_IS_ACTIVE_OR_RELOADING(os) && - u->manager->n_reloading <= 0) { + m->n_reloading <= 0) { /* Write audit record if we have just finished starting up */ - manager_send_unit_audit(u->manager, u, AUDIT_SERVICE_START, true); + manager_send_unit_audit(m, u, AUDIT_SERVICE_START, true); u->in_audit = true; } if (!UNIT_IS_ACTIVE_OR_RELOADING(os)) - manager_send_unit_plymouth(u->manager, u); + manager_send_unit_plymouth(m, u); } else { @@ -1477,25 +1480,25 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su if (u->type == UNIT_SERVICE && UNIT_IS_INACTIVE_OR_FAILED(ns) && !UNIT_IS_INACTIVE_OR_FAILED(os) && - u->manager->n_reloading <= 0) { + m->n_reloading <= 0) { /* Hmm, if there was no start record written * write it now, so that we always have a nice * pair */ if (!u->in_audit) { - manager_send_unit_audit(u->manager, u, AUDIT_SERVICE_START, ns == UNIT_INACTIVE); + manager_send_unit_audit(m, u, AUDIT_SERVICE_START, ns == UNIT_INACTIVE); if (ns == UNIT_INACTIVE) - manager_send_unit_audit(u->manager, u, AUDIT_SERVICE_STOP, true); + manager_send_unit_audit(m, u, AUDIT_SERVICE_STOP, true); } else /* Write audit record if we have just finished shutting down */ - manager_send_unit_audit(u->manager, u, AUDIT_SERVICE_STOP, ns == UNIT_INACTIVE); + manager_send_unit_audit(m, u, AUDIT_SERVICE_STOP, ns == UNIT_INACTIVE); u->in_audit = false; } } - manager_recheck_journal(u->manager); + manager_recheck_journal(m); /* Maybe we finished startup and are now ready for being * stopped because unneeded? */ -- cgit v1.2.1 From 21baf21ae526d0180177cf4a26ce82d45b6103e2 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Thu, 28 Feb 2013 01:30:38 +0100 Subject: util: split resolving of /dev/console into a new function --- src/shared/util.c | 41 ++++++++++++++++++++++++++++------------- src/shared/util.h | 1 + 2 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/shared/util.c b/src/shared/util.c index cc415894a5..e643cd367c 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -3509,6 +3509,29 @@ int vtnr_from_tty(const char *tty) { return i; } +char *resolve_dev_console(char **active) { + char *tty; + + /* Resolve where /dev/console is pointing to, if /sys is actually ours + * (i.e. not read-only-mounted which is a sign for container setups) */ + + if (path_is_read_only_fs("/sys") > 0) + return NULL; + + if (read_one_line_file("/sys/class/tty/console/active", active) < 0) + return NULL; + + /* If multiple log outputs are configured the last one is what + * /dev/console points to */ + tty = strrchr(*active, ' '); + if (tty) + tty++; + else + tty = *active; + + return tty; +} + bool tty_is_vc_resolve(const char *tty) { char *active = NULL; bool b; @@ -3518,19 +3541,11 @@ bool tty_is_vc_resolve(const char *tty) { if (startswith(tty, "/dev/")) tty += 5; - /* Resolve where /dev/console is pointing to, if /sys is - * actually ours (i.e. not read-only-mounted which is a sign - * for container setups) */ - if (streq(tty, "console") && path_is_read_only_fs("/sys") <= 0) - if (read_one_line_file("/sys/class/tty/console/active", &active) >= 0) { - /* If multiple log outputs are configured the - * last one is what /dev/console points to */ - tty = strrchr(active, ' '); - if (tty) - tty++; - else - tty = active; - } + if (streq(tty, "console")) { + tty = resolve_dev_console(&active); + if (!tty) + return false; + } b = tty_is_vc(tty); free(active); diff --git a/src/shared/util.h b/src/shared/util.h index f8957bca42..555e1d8665 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -389,6 +389,7 @@ DIR *xopendirat(int dirfd, const char *name, int flags); char *fstab_node_to_udev_node(const char *p); +char *resolve_dev_console(char **active); bool tty_is_vc(const char *tty); bool tty_is_vc_resolve(const char *tty); bool tty_is_console(const char *tty); -- cgit v1.2.1 From 3a1286b66883ef2cf577b29364e4b5fd43a295c8 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Thu, 28 Feb 2013 01:35:47 +0100 Subject: core/execute: add internal is_terminal_output() Similar to already existing is_terminal_input(). Note that the only current user (connect_logger_as) is never called for EXEC_OUTPUT_TTY, so it won't mind whether we accept it. --- src/core/execute.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/core/execute.c b/src/core/execute.c index b28962a3c3..1f62635196 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -165,6 +165,14 @@ void exec_context_tty_reset(const ExecContext *context) { vt_disallocate(context->tty_path); } +static bool is_terminal_output(ExecOutput o) { + return + o == EXEC_OUTPUT_TTY || + o == EXEC_OUTPUT_SYSLOG_AND_CONSOLE || + o == EXEC_OUTPUT_KMSG_AND_CONSOLE || + o == EXEC_OUTPUT_JOURNAL_AND_CONSOLE; +} + static int open_null_as(int flags, int nfd) { int fd, r; @@ -224,7 +232,7 @@ static int connect_logger_as(const ExecContext *context, ExecOutput output, cons !!context->syslog_level_prefix, output == EXEC_OUTPUT_SYSLOG || output == EXEC_OUTPUT_SYSLOG_AND_CONSOLE, output == EXEC_OUTPUT_KMSG || output == EXEC_OUTPUT_KMSG_AND_CONSOLE, - output == EXEC_OUTPUT_SYSLOG_AND_CONSOLE || output == EXEC_OUTPUT_KMSG_AND_CONSOLE || output == EXEC_OUTPUT_JOURNAL_AND_CONSOLE); + is_terminal_output(output)); if (fd != nfd) { r = dup2(fd, nfd) < 0 ? -errno : nfd; -- cgit v1.2.1 From 6ac8fdc9554a40024827ad9f64d02b4d8d2ab8ba Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Thu, 28 Feb 2013 01:36:55 +0100 Subject: core/execute: determine if ExecContext may fiddle with /dev/console There is some guesswork, but it should work satisfactorily for the purpose of knowing when to suppress printing of status messages. --- src/core/execute.c | 31 +++++++++++++++++++++++++++++++ src/core/execute.h | 2 ++ 2 files changed, 33 insertions(+) diff --git a/src/core/execute.c b/src/core/execute.c index 1f62635196..92cf174641 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -1718,6 +1718,37 @@ int exec_context_load_environment(const ExecContext *c, char ***l) { return 0; } +static bool tty_may_match_dev_console(const char *tty) { + char *active = NULL, *console; + bool b; + + if (startswith(tty, "/dev/")) + tty += 5; + + /* trivial identity? */ + if (streq(tty, "console")) + return true; + + console = resolve_dev_console(&active); + /* if we could not resolve, assume it may */ + if (!console) + return true; + + /* "tty0" means the active VC, so it may be the same sometimes */ + b = streq(console, tty) || (streq(console, "tty0") && tty_is_vc(tty)); + free(active); + + return b; +} + +bool exec_context_may_touch_console(ExecContext *ec) { + return (ec->tty_reset || ec->tty_vhangup || ec->tty_vt_disallocate || + is_terminal_input(ec->std_input) || + is_terminal_output(ec->std_output) || + is_terminal_output(ec->std_error)) && + tty_may_match_dev_console(tty_path(ec)); +} + static void strv_fprintf(FILE *f, char **l) { char **g; diff --git a/src/core/execute.h b/src/core/execute.h index 2bcd2e1e6c..001eb0e7cc 100644 --- a/src/core/execute.h +++ b/src/core/execute.h @@ -198,6 +198,8 @@ void exec_context_tty_reset(const ExecContext *context); int exec_context_load_environment(const ExecContext *c, char ***l); +bool exec_context_may_touch_console(ExecContext *c); + void exec_status_start(ExecStatus *s, pid_t pid); void exec_status_exit(ExecStatus *s, ExecContext *context, pid_t pid, int code, int status); void exec_status_dump(ExecStatus *s, FILE *f, const char *prefix); -- cgit v1.2.1 From 7ed9f6cd785634dd093e1b1550c3c6183177abf6 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Thu, 28 Feb 2013 00:01:10 +0100 Subject: core: count active units that may mind our printing to /dev/console --- src/core/manager.h | 1 + src/core/unit.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/src/core/manager.h b/src/core/manager.h index 0d0255289a..78e4bc6404 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -226,6 +226,7 @@ struct Manager { unsigned n_failed_jobs; unsigned n_running_jobs; + unsigned n_on_console; /* Type=idle pipes */ int idle_pipe[2]; diff --git a/src/core/unit.c b/src/core/unit.c index f8a913e39a..e2c06ae8b6 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1357,6 +1357,21 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su if (UNIT_IS_INACTIVE_OR_FAILED(ns)) cgroup_bonding_trim_list(u->cgroup_bondings, true); + if (UNIT_IS_INACTIVE_OR_FAILED(os) != UNIT_IS_INACTIVE_OR_FAILED(ns)) { + ExecContext *ec = unit_get_exec_context(u); + if (ec && exec_context_may_touch_console(ec)) { + /* XXX The counter may get out of sync if the admin edits + * TTY-related unit file properties and issues a daemon-reload + * while the unit is active. No big deal though, because + * it influences only the printing of boot/shutdown + * status messages. */ + if (UNIT_IS_INACTIVE_OR_FAILED(ns)) + m->n_on_console--; + else + m->n_on_console++; + } + } + if (u->job) { unexpected = false; -- cgit v1.2.1 From 03b717a3c4f9348807fc56e7a7d711d72d4ec0cb Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Thu, 28 Feb 2013 00:03:22 +0100 Subject: core/manager: print status messages about running jobs Sometimes the boot gets stuck until a timeout hits. The usual timeouts are on the order of minutes, so users may lose patience. Print animated status messages telling the names of units with running jobs to make it easy to see what systemd is waiting for. The animation looks cooler with a shorter interval, but 1 s is OK and should not be too hard on slow serial console users. --- src/core/manager.c | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++++- src/core/manager.h | 6 +- src/shared/util.h | 1 + 3 files changed, 178 insertions(+), 2 deletions(-) diff --git a/src/core/manager.c b/src/core/manager.c index c6f13f7d5a..ec12a75371 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -79,6 +79,11 @@ /* As soon as 5s passed since a unit was added to our GC queue, make sure to run a gc sweep */ #define GC_QUEUE_USEC_MAX (10*USEC_PER_SEC) +/* Initial delay and the interval for printing status messages about running jobs */ +#define JOBS_IN_PROGRESS_WAIT_SEC 5 +#define JOBS_IN_PROGRESS_PERIOD_SEC 1 +#define JOBS_IN_PROGRESS_PERIOD_DIVISOR 3 + /* Where clients shall send notification messages to */ #define NOTIFY_SOCKET "@/org/freedesktop/systemd1/notify" @@ -140,6 +145,146 @@ static int manager_setup_notify(Manager *m) { return 0; } +static int manager_jobs_in_progress_mod_timer(Manager *m) { + struct itimerspec its; + + zero(its); + + its.it_value.tv_sec = JOBS_IN_PROGRESS_WAIT_SEC; + its.it_interval.tv_sec = JOBS_IN_PROGRESS_PERIOD_SEC; + + if (timerfd_settime(m->jobs_in_progress_watch.fd, 0, &its, NULL) < 0) + return -errno; + + return 0; +} + +static int manager_watch_jobs_in_progress(Manager *m) { + struct epoll_event ev; + int r; + + assert(m); + + if (m->jobs_in_progress_watch.type != WATCH_INVALID) + return 0; + + m->jobs_in_progress_watch.type = WATCH_JOBS_IN_PROGRESS; + m->jobs_in_progress_watch.fd = timerfd_create(CLOCK_MONOTONIC, TFD_NONBLOCK|TFD_CLOEXEC); + if (m->jobs_in_progress_watch.fd < 0) { + log_error("Failed to create timerfd: %m"); + r = -errno; + goto err; + } + + r = manager_jobs_in_progress_mod_timer(m); + if (r < 0) { + log_error("Failed to set up timer for jobs progress watch: %s", strerror(-r)); + goto err; + } + + zero(ev); + ev.events = EPOLLIN; + ev.data.ptr = &m->jobs_in_progress_watch; + + if (epoll_ctl(m->epoll_fd, EPOLL_CTL_ADD, m->jobs_in_progress_watch.fd, &ev) < 0) { + log_error("Failed to add jobs progress timer fd to epoll: %m"); + r = -errno; + goto err; + } + + log_debug("Set up jobs progress timerfd."); + + return 0; + +err: + if (m->jobs_in_progress_watch.fd >= 0) + close_nointr_nofail(m->jobs_in_progress_watch.fd); + watch_init(&m->jobs_in_progress_watch); + return r; +} + +static void manager_unwatch_jobs_in_progress(Manager *m) { + if (m->jobs_in_progress_watch.type != WATCH_JOBS_IN_PROGRESS) + return; + + assert_se(epoll_ctl(m->epoll_fd, EPOLL_CTL_DEL, m->jobs_in_progress_watch.fd, NULL) >= 0); + close_nointr_nofail(m->jobs_in_progress_watch.fd); + watch_init(&m->jobs_in_progress_watch); + m->jobs_in_progress_iteration = 0; + + log_debug("Closed jobs progress timerfd."); +} + +#define CYLON_BUFFER_EXTRA (2*strlen(ANSI_RED_ON) + strlen(ANSI_HIGHLIGHT_RED_ON) + 2*strlen(ANSI_HIGHLIGHT_OFF)) +static void draw_cylon(char buffer[], size_t buflen, unsigned width, unsigned pos) { + char *p = buffer; + + assert(buflen >= CYLON_BUFFER_EXTRA + width + 1); + assert(pos <= width+1); /* 0 or width+1 mean that the center light is behind the corner */ + + if (pos > 1) { + if (pos > 2) { + memset(p, ' ', pos-2); + p += pos-2; + } + memcpy(p, ANSI_RED_ON, strlen(ANSI_RED_ON)); + p += strlen(ANSI_RED_ON); + *p++ = '*'; + } + + if (pos > 0 && pos <= width) { + memcpy(p, ANSI_HIGHLIGHT_RED_ON, strlen(ANSI_HIGHLIGHT_RED_ON)); + p += strlen(ANSI_HIGHLIGHT_RED_ON); + *p++ = '*'; + } + + memcpy(p, ANSI_HIGHLIGHT_OFF, strlen(ANSI_HIGHLIGHT_OFF)); + p += strlen(ANSI_HIGHLIGHT_OFF); + + if (pos < width) { + memcpy(p, ANSI_RED_ON, strlen(ANSI_RED_ON)); + p += strlen(ANSI_RED_ON); + *p++ = '*'; + if (pos < width-1) { + memset(p, ' ', width-1-pos); + p += width-1-pos; + } + memcpy(p, ANSI_HIGHLIGHT_OFF, strlen(ANSI_HIGHLIGHT_OFF)); + p += strlen(ANSI_HIGHLIGHT_OFF); + } + *p = 0; +} + +static void manager_print_jobs_in_progress(Manager *m) { + Iterator i; + Job *j; + char *job_of_n = NULL; + unsigned counter = 0, print_nr; + char cylon[6 + CYLON_BUFFER_EXTRA + 1]; + unsigned cylon_pos; + + print_nr = (m->jobs_in_progress_iteration / JOBS_IN_PROGRESS_PERIOD_DIVISOR) % m->n_running_jobs; + + HASHMAP_FOREACH(j, m->jobs, i) + if (j->state == JOB_RUNNING && counter++ == print_nr) + break; + + cylon_pos = m->jobs_in_progress_iteration % 14; + if (cylon_pos >= 8) + cylon_pos = 14 - cylon_pos; + draw_cylon(cylon, sizeof(cylon), 6, cylon_pos); + + if (m->n_running_jobs > 1) + if (asprintf(&job_of_n, "(%u of %u) ", counter, m->n_running_jobs) < 0) + job_of_n = NULL; + + manager_status_printf(m, true, cylon, "%sA %s job is running for %s", + strempty(job_of_n), job_type_to_string(j->type), unit_description(j->unit)); + free(job_of_n); + + m->jobs_in_progress_iteration++; +} + static int manager_setup_time_change(Manager *m) { struct epoll_event ev; struct itimerspec its; @@ -324,6 +469,7 @@ int manager_new(SystemdRunningAs running_as, Manager **_m) { watch_init(&m->swap_watch); watch_init(&m->udev_watch); watch_init(&m->time_change_watch); + watch_init(&m->jobs_in_progress_watch); m->epoll_fd = m->dev_autofs_fd = -1; m->current_job_id = 1; /* start as id #1, so that we can leave #0 around as "null-like" value */ @@ -564,6 +710,8 @@ void manager_free(Manager *m) { close_nointr_nofail(m->notify_watch.fd); if (m->time_change_watch.fd >= 0) close_nointr_nofail(m->time_change_watch.fd); + if (m->jobs_in_progress_watch.fd >= 0) + close_nointr_nofail(m->jobs_in_progress_watch.fd); free(m->notify_socket); @@ -988,6 +1136,10 @@ unsigned manager_dispatch_run_queue(Manager *m) { } m->dispatching_run_queue = false; + + if (hashmap_size(m->jobs) > 0) + manager_watch_jobs_in_progress(m); + return n; } @@ -1527,6 +1679,16 @@ static int process_event(Manager *m, struct epoll_event *ev) { break; } + case WATCH_JOBS_IN_PROGRESS: { + uint64_t v; + + /* not interested in the data */ + read(w->fd, &v, sizeof(v)); + + manager_print_jobs_in_progress(m); + break; + } + default: log_error("event type=%i", w->type); assert_not_reached("Unknown epoll event type."); @@ -2199,8 +2361,10 @@ void manager_check_finished(Manager *m) { assert(m); - if (hashmap_size(m->jobs) > 0) + if (hashmap_size(m->jobs) > 0) { + manager_jobs_in_progress_mod_timer(m); return; + } /* Notify Type=idle units that we are done now */ close_pipe(m->idle_pipe); @@ -2208,6 +2372,8 @@ void manager_check_finished(Manager *m) { /* Turn off confirm spawn now */ m->confirm_spawn = false; + manager_unwatch_jobs_in_progress(m); + if (dual_timestamp_is_set(&m->finish_timestamp)) return; @@ -2500,6 +2666,11 @@ void manager_status_printf(Manager *m, bool ephemeral, const char *status, const if (!manager_get_show_status(m)) return; + /* XXX We should totally drop the check for ephemeral here + * and thus effectively make 'Type=idle' pointless. */ + if (ephemeral && m->n_on_console > 0) + return; + if (!manager_is_booting_or_shutting_down(m)) return; diff --git a/src/core/manager.h b/src/core/manager.h index 78e4bc6404..c486a16887 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -61,7 +61,8 @@ enum WatchType { WATCH_UDEV, WATCH_DBUS_WATCH, WATCH_DBUS_TIMEOUT, - WATCH_TIME_CHANGE + WATCH_TIME_CHANGE, + WATCH_JOBS_IN_PROGRESS }; struct Watch { @@ -127,6 +128,7 @@ struct Manager { Watch notify_watch; Watch signal_watch; Watch time_change_watch; + Watch jobs_in_progress_watch; int epoll_fd; @@ -225,8 +227,10 @@ struct Manager { unsigned n_installed_jobs; unsigned n_failed_jobs; + /* Jobs in progress watching */ unsigned n_running_jobs; unsigned n_on_console; + unsigned jobs_in_progress_iteration; /* Type=idle pipes */ int idle_pipe[2]; diff --git a/src/shared/util.h b/src/shared/util.h index 555e1d8665..b5ad1ff3b5 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -55,6 +55,7 @@ union dirent_storage { #define FORMAT_BYTES_MAX 8 #define ANSI_HIGHLIGHT_ON "\x1B[1;39m" +#define ANSI_RED_ON "\x1B[31m" #define ANSI_HIGHLIGHT_RED_ON "\x1B[1;31m" #define ANSI_HIGHLIGHT_GREEN_ON "\x1B[1;32m" #define ANSI_HIGHLIGHT_YELLOW_ON "\x1B[1;33m" -- cgit v1.2.1 From fcc43d015815c23700854a8d3800850910282c8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 27 Feb 2013 21:48:34 -0500 Subject: build-sys: tell Makefile.am to distribute kernel-install --- Makefile.am | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile.am b/Makefile.am index 2108abe318..e0c8529e8e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -281,6 +281,9 @@ bin_PROGRAMS = \ bin_SCRIPTS = \ src/kernel-install/kernel-install +EXTRA_DIST += \ + src/kernel-install/kernel-install + rootlibexec_PROGRAMS = \ systemd \ systemd-cgroups-agent \ -- cgit v1.2.1 From 185c3be03cec26023acc11b49553753aa7330a1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 27 Feb 2013 20:16:38 -0500 Subject: build-sys: fix update-man-rules for vpath builds --- Makefile-man.am | 2 +- Makefile.am | 2 +- make-man-rules.py | 6 ++++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Makefile-man.am b/Makefile-man.am index 526c05d521..9a2f2f5504 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -1,5 +1,5 @@ # Do not edit. Generated by make-man-rules.py. -# Regenerate with 'make update-man-list'. +# Regenerate with 'make all update-man-list'. MANPAGES += \ man/bootup.7 \ diff --git a/Makefile.am b/Makefile.am index e0c8529e8e..cc0d4da22f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -519,7 +519,7 @@ man/index.html: NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES)) -XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml $(top_srcdir)/man/*.xml.in) +XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml $(top_srcdir)/man/*.xml.in $(top_builddir)/man/*.xml) update-man-list: make-man-rules.py $(XML_GLOB) $(AM_V_GEN)$(PYTHON) $^ > $(top_srcdir)/Makefile-man.tmp $(AM_V_at)mv $(top_srcdir)/Makefile-man.tmp $(top_srcdir)/Makefile-man.am diff --git a/make-man-rules.py b/make-man-rules.py index 9c50c8dec2..5415984d88 100644 --- a/make-man-rules.py +++ b/make-man-rules.py @@ -21,6 +21,7 @@ from __future__ import print_function import xml.etree.ElementTree as tree import collections import sys +import os SECTION = '''\ MANPAGES += \\ @@ -40,7 +41,7 @@ endif HEADER = '''\ # Do not edit. Generated by make-man-rules.py. -# Regenerate with 'make update-man-list'. +# Regenerate with 'make all update-man-list'. ''' @@ -96,7 +97,8 @@ def make_makefile(rules, cleanfiles): if __name__ == '__main__': sources = set(sys.argv[1:]) + basenames = [os.path.basename(source) for source in sources] spares = set([source for source in sources - if source + '.in' in sources]) + if os.path.basename(source) + '.in' in basenames]) rules = create_rules(*(sources - spares)) print(make_makefile(rules, spares), end='') -- cgit v1.2.1 From 699ad6c06c0e235f588c900934bdf4bed421503b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 27 Feb 2013 21:31:02 -0500 Subject: man: drop rhs parts in snippets in directive index - --exit-if-exists=file + --exit-if-exists= etc. --- make-directive-index.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/make-directive-index.py b/make-directive-index.py index 15bd9b9341..c61383b0a4 100755 --- a/make-directive-index.py +++ b/make-directive-index.py @@ -185,7 +185,10 @@ def _extract_directives(directive_groups, formatting, page): stor[text].append((pagename, section)) if text not in formatting: # use element as formatted display - name.tail = '' + if name.text[-1] in '= ': + name.clear() + else: + name.tail = '' name.text = text formatting[text] = name -- cgit v1.2.1 From 5674767ec2cf7d168fe9c30f78074231fbe3408c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 23 Feb 2013 14:44:16 +0100 Subject: nspawn: environment would be truncated with TERM unset --- src/nspawn/nspawn.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index d35a8b547b..8b57421431 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1296,7 +1296,7 @@ int main(int argc, char *argv[]) { const char *home = NULL; uid_t uid = (uid_t) -1; gid_t gid = (gid_t) -1; - unsigned n_env = 0; + unsigned n_env = 2; const char *envp[] = { "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "container=systemd-nspawn", /* LXC sets container=lxc, so follow the scheme here */ @@ -1310,8 +1310,9 @@ int main(int argc, char *argv[]) { NULL }; - envp[2] = strv_find_prefix(environ, "TERM="); - n_env = 3; + envp[n_env] = strv_find_prefix(environ, "TERM="); + if (envp[n_env]) + n_env ++; close_nointr_nofail(pipefd[1]); fd_wait_for_event(pipefd[0], POLLHUP, -1); -- cgit v1.2.1 From 2ca0435be9359bde3020eeb528c2a6d72ac1e0b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 23 Feb 2013 17:52:04 +0100 Subject: systemd-activate: add a socket-activation test tool --- Makefile-man.am | 1 + Makefile.am | 14 ++ TODO | 2 - man/systemd-activate.xml | 171 ++++++++++++++++++++ src/activate/activate.c | 410 +++++++++++++++++++++++++++++++++++++++++++++++ src/shared/socket-util.c | 39 +++++ src/shared/socket-util.h | 2 + 7 files changed, 637 insertions(+), 2 deletions(-) create mode 100644 man/systemd-activate.xml create mode 100644 src/activate/activate.c diff --git a/Makefile-man.am b/Makefile-man.am index 9a2f2f5504..d02fff05e2 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -44,6 +44,7 @@ MANPAGES += \ man/shutdown.8 \ man/sysctl.d.5 \ man/systemctl.1 \ + man/systemd-activate.8 \ man/systemd-analyze.1 \ man/systemd-ask-password-console.service.8 \ man/systemd-ask-password.1 \ diff --git a/Makefile.am b/Makefile.am index cc0d4da22f..d00ca113e0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2313,6 +2313,18 @@ EXTRA_DIST += \ src/libsystemd-id128/libsystemd-id128.pc.in \ src/libsystemd-id128/libsystemd-id128.sym +# ------------------------------------------------------------------------------ + +rootlibexec_PROGRAMS += \ + systemd-activate + +systemd_activate_SOURCES = \ + src/activate/activate.c + +systemd_activate_LDADD = \ + libsystemd-shared.la \ + libsystemd-daemon.la + # ------------------------------------------------------------------------------ systemd_journald_SOURCES = \ src/journal/journald.c \ @@ -2559,6 +2571,8 @@ libsystemd-journal-uninstall-hook: INSTALL_EXEC_HOOKS += libsystemd-journal-install-hook UNINSTALL_EXEC_HOOKS += libsystemd-journal-uninstall-hook +# ------------------------------------------------------------------------------ + # Update catalog on installation. Do not bother if installing # in DESTDIR, since this is likely for packaging purposes. catalog-update-hook: diff --git a/TODO b/TODO index 5427d1b62f..f99f894115 100644 --- a/TODO +++ b/TODO @@ -350,8 +350,6 @@ Features: * explore multiple service instances per listening socket idea -* testing tool for socket activation: some binary that listens on a socket and passes it on using the usual socket activation protocol to some server. - * shutdown: don't read-only mount anything when running in container * MountFlags=shared acts as MountFlags=slave right now. diff --git a/man/systemd-activate.xml b/man/systemd-activate.xml new file mode 100644 index 0000000000..b2987d95a8 --- /dev/null +++ b/man/systemd-activate.xml @@ -0,0 +1,171 @@ + + + + + + + + + systemd-activate + systemd + + + + Developer + Zbigniew + Jędrzejewski-Szmek + zbyszek@in.waw.pl + + + + + + systemd-activate + 8 + + + + systemd-activate + Test socket activation of daemons + + + + + /usr/lib/systemd/systemd-activate + OPTIONS + daemon + OPTIONS + + + + + Description + + systemd-activate can be used to + launch a socket activated daemon from the command-line for + testing purposes. It can also be used to launch single instances + of the daemon per connection (inetd-style). + + + The daemon to launch and its options should be specifed + after options intended for systemd-activate. + + + If the option is given, file descriptor + of the connection will be used as the standard input and output of + the launched process. Otherwise, standard input and output will be + inherited, and sockets will be passed through file descriptors 3 + and higher. Sockets passed through $LISTEN_FDS + to systemd-activate will be passed through to + the dameon, in the original positions. Other sockets specified + with will use consecutive descriptors. + + + + + Options + + + + + + Prints a short help + text and exits. + + + + + + Prints a short version + string and exits. + + + + + + + Listen on this address. + Takes a string like 2000 or + 127.0.0.1:2001. + + + + + + + + Launch a separate instance of daemon per + connection and pass the connection socket as standard input + and standard output. + + + + + + Environment variables + + + $LISTEN_FDS + $LISTEN_PID + + See + sd_listen_fds3. + + + + $SYSTEMD_LOG_TARGET + $SYSTEMD_LOG_LEVEL + $SYSTEMD_LOG_COLOR + $SYSTEMD_LOG_LOCATION + + Same as in + systemd1. + + + + + + Example 1 + + $ /usr/lib/systemd/systemd-activate -l 2000 -a cat + + This runs an echo server on port 2000. + + + + Example 2 + + $ /usr/lib/systemd/systemd-activate -l 19531 /usr/lib/systemd/systemd-journal-gatewayd + + This runs a socket activated instance of + systemd-journal-gatewayd8. + + + + See Also + + systemd1, + systemd.socket5, + systemd.service5, + cat1 + + + diff --git a/src/activate/activate.c b/src/activate/activate.c new file mode 100644 index 0000000000..7fcb0a97c4 --- /dev/null +++ b/src/activate/activate.c @@ -0,0 +1,410 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "socket-util.h" +#include "build.h" +#include "log.h" +#include "strv.h" +#include "macro.h" + +static char** arg_listen = NULL; +static bool arg_accept = false; +static char** arg_args = NULL; + +static int add_epoll(int epoll_fd, int fd) { + int r; + struct epoll_event ev = {EPOLLIN}; + ev.data.fd = fd; + + assert(epoll_fd >= 0); + assert(fd >= 0); + + r = epoll_ctl(epoll_fd, EPOLL_CTL_ADD, fd, &ev); + if (r < 0) + log_error("Failed to add event on epoll fd:%d for fd:%d: %s", + epoll_fd, fd, strerror(-r)); + return r; +} + +static int set_nocloexec(int fd) { + int flags; + + flags = fcntl(fd, F_GETFD); + if (flags < 0) { + log_error("Querying flags for fd:%d: %m", fd); + return -errno; + } + + if (!(flags & FD_CLOEXEC)) + return 0; + + if (fcntl(fd, F_SETFD, flags & ~FD_CLOEXEC) < 0) { + log_error("Settings flags for fd:%d: %m", fd); + return -errno; + } + + return 0; +} + +static int print_socket(const char* desc, int fd) { + int r; + SocketAddress addr = { + .size = sizeof(union sockaddr_union), + .type = SOCK_STREAM, + }; + int family; + + r = getsockname(fd, &addr.sockaddr.sa, &addr.size); + if (r < 0) { + log_warning("Failed to query socket on fd:%d: %m", fd); + return 0; + } + + family = socket_address_family(&addr); + switch(family) { + case AF_INET: + case AF_INET6: { + char* _cleanup_free_ a = NULL; + r = socket_address_print(&addr, &a); + if (r < 0) + log_warning("socket_address_print(): %s", strerror(-r)); + else + log_info("%s %s address %s", + desc, + family == AF_INET ? "IP" : "IPv6", + a); + break; + } + default: + log_warning("Connection with unknown family %d", family); + } + + return 0; +} + +static int open_sockets(int *epoll_fd, bool accept) { + int n, fd; + int count = 0; + char **address; + + n = sd_listen_fds(true); + if (n < 0) { + log_error("Failed to read listening file descriptors from environment: %s", + strerror(-n)); + return n; + } + log_info("Received %d descriptors", n); + + for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + n; fd++) { + log_debug("Received descriptor fd:%d", fd); + print_socket("Listening on", fd); + + if (!arg_accept) { + int r = set_nocloexec(fd); + if (r < 0) + return r; + } + + count ++; + } + + STRV_FOREACH(address, arg_listen) { + log_info("Opening address %s", *address); + + fd = make_socket_fd(*address, SOCK_STREAM | (arg_accept*SOCK_CLOEXEC)); + if (fd < 0) { + log_error("Failed to open '%s': %s", *address, strerror(-fd)); + return fd; + } + + count ++; + } + + *epoll_fd = epoll_create1(EPOLL_CLOEXEC); + if (*epoll_fd < 0) { + log_error("Failed to create epoll object: %m"); + return -errno; + } + + for (fd = SD_LISTEN_FDS_START; fd < SD_LISTEN_FDS_START + count; fd++) { + int r = add_epoll(*epoll_fd, fd); + if (r < 0) + return r; + } + + return count; +} + +static int launch(char* name, char **argv, char **environ, int fds) { + unsigned n_env = 0; + char* envp[7] = {NULL}; /* PATH, TERM, HOME, USER, LISTEN_FDS, LISTEN_PID */ + static const char* tocopy[] = {"TERM=", "PATH=", "USER=", "HOME="}; + char _cleanup_free_ *tmp = NULL; + unsigned i; + + for (i = 0; i < ELEMENTSOF(tocopy); i++) { + envp[n_env] = strv_find_prefix(environ, tocopy[i]); + if (envp[n_env]) + n_env ++; + } + + if ((asprintf((char**)(envp + n_env++), "LISTEN_FDS=%d", fds) < 0) || + (asprintf((char**)(envp + n_env++), "LISTEN_PID=%d", getpid()) < 0)) + return log_oom(); + + tmp = strv_join(argv, " "); + if (!tmp) + return log_oom(); + + log_info("Execing %s (%s)", name, tmp); + execvpe(name, argv, envp); + log_error("Failed to execp %s (%s): %m", name, tmp); + return -errno; +} + +static int launch1(const char* child, char** argv, char **environ, int fd) { + pid_t parent_pid, child_pid; + int r; + + char _cleanup_free_ *tmp = NULL; + tmp = strv_join(argv, " "); + if (!tmp) + return log_oom(); + + parent_pid = getpid(); + + child_pid = fork(); + if (child_pid < 0) { + log_error("Failed to fork: %m"); + return -errno; + } + + /* In the child */ + if (child_pid == 0) { + r = dup2(fd, STDIN_FILENO); + if (r < 0) { + log_error("Failed to dup connection to stdin: %m"); + _exit(EXIT_FAILURE); + } + + r = dup2(fd, STDOUT_FILENO); + if (r < 0) { + log_error("Failed to dup connection to stdout: %m"); + _exit(EXIT_FAILURE); + } + + r = close(fd); + if (r < 0) { + log_error("Failed to close dupped connection: %m"); + _exit(EXIT_FAILURE); + } + + /* Make sure the child goes away when the parent dies */ + if (prctl(PR_SET_PDEATHSIG, SIGTERM) < 0) + _exit(EXIT_FAILURE); + + /* Check whether our parent died before we were able + * to set the death signal */ + if (getppid() != parent_pid) + _exit(EXIT_SUCCESS); + + execvp(child, argv); + log_error("Failed to exec child %s: %m", child); + _exit(EXIT_FAILURE); + } + + log_info("Spawned %s (%s) as PID %d", child, tmp, child_pid); + + return 0; +} + +static int do_accept(const char* name, char **argv, char **envp, int fd) { + SocketAddress addr = { + .size = sizeof(union sockaddr_union), + .type = SOCK_STREAM, + }; + int fd2, r; + + fd2 = accept(fd, &addr.sockaddr.sa, &addr.size); + if (fd2 < 0) { + log_error("Failed to accept connection on fd:%d: %m", fd); + return fd2; + } + + print_socket("Connection from", fd2); + + r = launch1(name, argv, envp, fd2); + return r; +} + +/* SIGCHLD handler. */ +static void sigchld_hdl(int sig, siginfo_t *t, void *data) +{ + log_info("Child %d died with code %d", t->si_pid, t->si_status); + /* Wait for a dead child. */ + waitpid(t->si_pid, NULL, 0); +} + +static int install_chld_handler(void) { + int r; + struct sigaction act; + zero(act); + act.sa_flags = SA_SIGINFO; + act.sa_sigaction = sigchld_hdl; + + r = sigaction(SIGCHLD, &act, 0); + if (r < 0) + log_error("Failed to install SIGCHLD handler: %m"); + return r; +} + +static int help(void) { + printf("%s [OPTIONS...]\n\n" + "Listen on sockets and launch child on connection.\n\n" + "Options:\n" + " -l --listen=ADDR Listen for raw connections at ADDR\n" + " -a --accept Spawn separate child for each connection\n" + " -h --help Show this help and exit\n" + " --version Print version string and exit\n" + "\n" + "Note: file descriptors from sd_listen_fds() will be passed through.\n" + , program_invocation_short_name + ); + + return 0; +} + +static int parse_argv(int argc, char *argv[]) { + enum { + ARG_VERSION = 0x100, + }; + + static const struct option options[] = { + { "help", no_argument, NULL, 'h' }, + { "version", no_argument, NULL, ARG_VERSION }, + { "listen", required_argument, NULL, 'l' }, + { "accept", no_argument, NULL, 'a' }, + { NULL, 0, NULL, 0 } + }; + + int c; + + assert(argc >= 0); + assert(argv); + + while ((c = getopt_long(argc, argv, "+hl:sa", options, NULL)) >= 0) + switch(c) { + case 'h': + help(); + return 0 /* done */; + + case ARG_VERSION: + puts(PACKAGE_STRING); + puts(SYSTEMD_FEATURES); + return 0 /* done */; + + case 'l': { + int r = strv_extend(&arg_listen, optarg); + if (r < 0) + return r; + + break; + } + + case 'a': + arg_accept = true; + break; + + case '?': + return -EINVAL; + + default: + log_error("Unknown option code %c", c); + return -EINVAL; + } + + if (optind == argc) { + log_error("Usage: %s [OPTION...] PROGRAM [OPTION...]", + program_invocation_short_name); + return -EINVAL; + } + + arg_args = argv + optind; + + return 1 /* work to do */; +} + +int main(int argc, char **argv, char **envp) { + int r, n; + int epoll_fd = -1; + + log_set_max_level(LOG_DEBUG); + log_show_color(true); + log_parse_environment(); + + r = parse_argv(argc, argv); + if (r <= 0) + return r == 0 ? EXIT_SUCCESS : EXIT_FAILURE; + + r = install_chld_handler(); + if (r < 0) + return EXIT_FAILURE; + + n = open_sockets(&epoll_fd, arg_accept); + if (n < 0) + return EXIT_FAILURE; + + while (true) { + struct epoll_event event; + + r = epoll_wait(epoll_fd, &event, 1, -1); + if (r < 0) { + if (errno == EINTR) + continue; + + log_error("epoll_wait() failed: %m"); + return EXIT_FAILURE; + } + + log_info("Communication attempt on fd:%d", event.data.fd); + if (arg_accept) { + r = do_accept(argv[optind], argv + optind, envp, + event.data.fd); + if (r < 0) + return EXIT_FAILURE; + } else + break; + } + + launch(argv[optind], argv + optind, envp, n); + + return EXIT_SUCCESS; +} diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c index 6c94d69486..f6ddea3183 100644 --- a/src/shared/socket-util.c +++ b/src/shared/socket-util.c @@ -565,6 +565,45 @@ bool socket_address_matches_fd(const SocketAddress *a, int fd) { return false; } +int make_socket_fd(const char* address, int flags) { + SocketAddress a; + int fd, r; + char _cleanup_free_ *p = NULL; + + r = socket_address_parse(&a, address); + if (r < 0) { + log_error("failed to parse socket: %s", strerror(-r)); + return r; + } + + fd = socket(socket_address_family(&a), flags, 0); + if (fd < 0) { + log_error("socket(): %m"); + return -errno; + } + + r = socket_address_print(&a, &p); + if (r < 0) { + log_error("socket_address_print(): %s", strerror(-r)); + return r; + } + log_info("Listening on %s", p); + + r = bind(fd, &a.sockaddr.sa, a.size); + if (r < 0) { + log_error("bind to %s: %m", address); + return -errno; + } + + r = listen(fd, SOMAXCONN); + if (r < 0) { + log_error("listen on %s: %m", address); + return -errno; + } + + return fd; +} + static const char* const netlink_family_table[] = { [NETLINK_ROUTE] = "route", [NETLINK_FIREWALL] = "firewall", diff --git a/src/shared/socket-util.h b/src/shared/socket-util.h index 771765d323..33838345ed 100644 --- a/src/shared/socket-util.h +++ b/src/shared/socket-util.h @@ -88,6 +88,8 @@ bool socket_address_is_netlink(const SocketAddress *a, const char *s); bool socket_address_matches_fd(const SocketAddress *a, int fd); +int make_socket_fd(const char* address, int flags); + bool socket_address_equal(const SocketAddress *a, const SocketAddress *b); bool socket_address_needs_mount(const SocketAddress *a, const char *prefix); -- cgit v1.2.1 From 870c4365cf3d407270788abe14d216a636ecf6c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 27 Feb 2013 22:25:40 -0500 Subject: man: document systemd-nspawn behaviour with -b Cf. cb96a2c69 and 1ddf879a. --- man/systemd-nspawn.xml | 28 ++++++++++++++++++++++------ 1 file changed, 22 insertions(+), 6 deletions(-) diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index 41477b46d5..8adcd946b0 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -51,7 +51,14 @@ systemd-nspawn OPTIONS - COMMAND + COMMAND + ARGS + + + + systemd-nspawn + -b + OPTIONS ARGS @@ -131,10 +138,16 @@ Options - If no arguments are passed the container is set - up and a shell started in it, otherwise the passed - command and arguments are executed in it. The - following options are understood: + If option is specified, the + arguments are used as arguments for the init + binary. Otherwise, COMMAND + specifies the program to launch in the container, and + the remaining arguments are used as arguments for this + program. If is not used and no + arguments are specifed, a shell is launched in the + container. + + The following options are understood: @@ -170,7 +183,10 @@ Automatically search for an init binary and invoke it instead of a shell or a user supplied - program. + program. If this option is used, arguments + specified on the command line are used + as arguments for the init binary. + -- cgit v1.2.1 From 1446560f22a9eb95f084691ac1ea73c99c82b643 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 27 Feb 2013 22:38:26 -0500 Subject: man: fix docbook in systemd-activate(8) --- man/systemd-activate.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/man/systemd-activate.xml b/man/systemd-activate.xml index b2987d95a8..6949731f64 100644 --- a/man/systemd-activate.xml +++ b/man/systemd-activate.xml @@ -126,8 +126,8 @@ along with systemd; If not, see . $LISTEN_FDS $LISTEN_PID - See - sd_listen_fds3. + See + sd_listen_fds3. @@ -136,8 +136,8 @@ along with systemd; If not, see . $SYSTEMD_LOG_COLOR $SYSTEMD_LOG_LOCATION - Same as in - systemd1. + Same as in + systemd1. -- cgit v1.2.1 From 3cd170c33eab78633a06174986b8595cd1453193 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 28 Feb 2013 13:48:53 +0100 Subject: update TODO --- TODO | 1 - 1 file changed, 1 deletion(-) diff --git a/TODO b/TODO index f99f894115..6f4a30c5ac 100644 --- a/TODO +++ b/TODO @@ -30,7 +30,6 @@ Fedora 19: that's sometimes kinda hard to parse for a human. * cgroup attrs: - - add man page for systemctl commands - update dbus interface docs in wiki * kernel cmdline switch to turn off predictable network interface names -- cgit v1.2.1 From 54c31a79f72ff57ac8eba089acacc4ab482b745d Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 28 Feb 2013 19:55:48 +0100 Subject: man: clarify systemctl --property= documentation a bit --- .gitignore | 1 + TODO | 6 +++--- man/systemctl.xml | 11 ++++++----- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 9afbb10668..7385107894 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ /systemadm /systemctl /systemd +/systemd-activate /systemd-ac-power /systemd-analyze /systemd-ask-password diff --git a/TODO b/TODO index 6f4a30c5ac..2366470ae5 100644 --- a/TODO +++ b/TODO @@ -49,9 +49,11 @@ Fedora 19: Features: +* systemd-inhibit: refuse taking delay locks + * journal-or-kmsg is currently broken? See reverted commit 4a01181e460686d8b4a543b1dfa7f77c9e3c5ab8. -* remove any syslog support from log.c +* remove any syslog support from log.c -- we probably can't do this before split-off udev is gone for good * convert /etc/bash_completion.d/ to /usr/share/bash-completion/ (systemd (and everything else) should install zero static data in /etc) @@ -80,8 +82,6 @@ Features: * man: maybe sort directives in man pages, and take sections from --help and apply them to man too -* man: systemctl: clarify that -p applies to "systemctl show" only - * add "# export SYSTEMD_PAGER=" to bash login * /usr/bin/service should actually show the new command line diff --git a/man/systemctl.xml b/man/systemctl.xml index 87d783e45d..5656564f54 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -117,10 +117,11 @@ along with systemd; If not, see . - When showing unit/job/manager properties, limit - display to certain properties as specified as argument. If - not specified all set properties are shown. The argument - should be a comma-seperated list of property names, such as + When showing unit/job/manager properties with the + show command, limit display to certain + properties as specified as argument. If not specified all + set properties are shown. The argument should be a + comma-seperated list of property names, such as MainPID. If specified more than once all properties with the specified names are shown. @@ -206,7 +207,7 @@ along with systemd; If not, see . sleep state. Any user may take these locks and privileged users may override these locks. If any locks are taken, shutdown and sleep state requests will normally fail - (regardless if privileged or not) and list of active locks + (regardless if privileged or not) and a list of active locks is printed. However if is specified the locks are ignored and not printed, and the operation attempted anyway, possibly requiring additional -- cgit v1.2.1 From 2c07646764384545e5303222729d5ff93dec4347 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 19 Feb 2013 23:03:32 -0500 Subject: systemd-python: polish the docstrings --- src/python-systemd/_reader.c | 54 +++++++++++++++++--------------- src/python-systemd/id128.c | 8 ++--- src/python-systemd/journal.py | 71 ++++++++++++++++++++++++++----------------- 3 files changed, 76 insertions(+), 57 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 1bca1160f3..207b9e76cb 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -68,10 +68,8 @@ static void Journal_dealloc(Journal* self) } PyDoc_STRVAR(Journal__doc__, - "Journal([flags][,path]) -> ...\n" - "Journal instance\n\n" - "Returns instance of Journal, which allows filtering and return\n" - "of journal entries.\n" + "Journal([flags][,path]) -> ...\n\n" + "Journal allows filtering and retrieval of Journal entries.\n" "Argument `flags` sets open flags of the journal, which can be one\n" "of, or ORed combination of constants: LOCAL_ONLY (default) opens\n" "journal on local machine only; RUNTIME_ONLY opens only\n" @@ -79,7 +77,7 @@ PyDoc_STRVAR(Journal__doc__, "journal files of system services and the kernel.\n" "Argument `path` is the directory of journal files. Note that\n" "currently flags are ignored when `path` is present as they are\n" - " not relevant."); + "not relevant."); static int Journal_init(Journal *self, PyObject *args, PyObject *keywds) { int flags = SD_JOURNAL_LOCAL_ONLY, r; @@ -103,7 +101,7 @@ static int Journal_init(Journal *self, PyObject *args, PyObject *keywds) PyDoc_STRVAR(Journal_get_next__doc__, "get_next([skip]) -> dict\n\n" "Return dictionary of the next log entry. Optional skip value will\n" - "return the `skip`th log entry."); + "return the `skip`\\-th log entry."); static PyObject* Journal_get_next(Journal *self, PyObject *args) { PyObject *dict; @@ -208,7 +206,7 @@ static PyObject* Journal_get_next(Journal *self, PyObject *args) PyDoc_STRVAR(Journal_get_previous__doc__, "get_previous([skip]) -> dict\n\n" "Return dictionary of the previous log entry. Optional skip value\n" - "will return the -`skip`th log entry. Equivalent to get_next(-skip)."); + "will return the -`skip`\\-th log entry. Equivalent to get_next(-skip)."); static PyObject* Journal_get_previous(Journal *self, PyObject *args) { int64_t skip = 1LL; @@ -222,8 +220,8 @@ static PyObject* Journal_get_previous(Journal *self, PyObject *args) PyDoc_STRVAR(Journal_add_match__doc__, "add_match(match) -> None\n\n" "Add a match to filter journal log entries. All matches of different\n" - "fields are combined in logical AND, and matches of the same field\n" - "are automatically combined in logical OR.\n" + "fields are combined with logical AND, and matches of the same field\n" + "are automatically combined with logical OR.\n" "Match is a string of the form \"FIELD=value\"."); static PyObject* Journal_add_match(Journal *self, PyObject *args, PyObject *keywds) { @@ -242,8 +240,7 @@ static PyObject* Journal_add_match(Journal *self, PyObject *args, PyObject *keyw PyDoc_STRVAR(Journal_add_disjunction__doc__, "add_disjunction() -> None\n\n" - "Once called, all matches before and after are combined in logical\n" - "OR."); + "Inserts a logical OR between matches added before and afterwards."); static PyObject* Journal_add_disjunction(Journal *self, PyObject *args) { int r; @@ -256,7 +253,7 @@ static PyObject* Journal_add_disjunction(Journal *self, PyObject *args) PyDoc_STRVAR(Journal_flush_matches__doc__, "flush_matches() -> None\n\n" - "Clears all current match filters."); + "Clear all current match filters."); static PyObject* Journal_flush_matches(Journal *self, PyObject *args) { sd_journal_flush_matches(self->j); @@ -265,7 +262,7 @@ static PyObject* Journal_flush_matches(Journal *self, PyObject *args) PyDoc_STRVAR(Journal_seek__doc__, "seek(offset[, whence]) -> None\n\n" - "Seek through journal by `offset` number of entries. Argument\n" + "Jump `offset` entries in the journal. Argument\n" "`whence` defines what the offset is relative to:\n" "os.SEEK_SET (default) from first match in journal;\n" "os.SEEK_CUR from current position in journal;\n" @@ -393,11 +390,11 @@ static PyObject* Journal_seek_monotonic(Journal *self, PyObject *args) } PyDoc_STRVAR(Journal_wait__doc__, - "wait([timeout]) -> Change state (integer)\n\n" - "Waits until there is a change in the journal. Argument `timeout`\n" - "is the maximum number of seconds to wait before returning\n" - "regardless if journal has changed. If `timeout` is not given or is\n" - "0, then it will block forever.\n" + "wait([timeout]) -> state change (integer)\n\n" + "Wait for a change in the journal. Argument `timeout` specifies\n" + "the maximum number of seconds to wait before returning\n" + "regardless of wheter the journal has changed. If `timeout` is not given\n" + "or is 0, then block forever.\n" "Will return constants: NOP if no change; APPEND if new\n" "entries have been added to the end of the journal; and\n" "INVALIDATE if journal files have been added or removed."); @@ -420,7 +417,7 @@ static PyObject* Journal_wait(Journal *self, PyObject *args, PyObject *keywds) PyDoc_STRVAR(Journal_seek_cursor__doc__, "seek_cursor(cursor) -> None\n\n" - "Seeks to journal entry by given unique reference `cursor`."); + "Seek to journal entry by given unique reference `cursor`."); static PyObject* Journal_seek_cursor(Journal *self, PyObject *args) { const char *cursor; @@ -463,8 +460,8 @@ static PyObject* Journal_iternext(PyObject *self) PyDoc_STRVAR(Journal_query_unique__doc__, "query_unique(field) -> a set of values\n\n" - "Returns a set of unique values in journal for given `field`.\n" - "Note this does not respect any journal matches."); + "Return a set of unique values appearing in journal for the\n" + "given `field`. Note this does not respect any journal matches."); static PyObject* Journal_query_unique(Journal *self, PyObject *args) { char *query; @@ -497,6 +494,11 @@ static PyObject* Journal_query_unique(Journal *self, PyObject *args) return value_set; } +PyDoc_STRVAR(data_threshold__doc__, + "Threshold for field size truncation.\n\n" + "Fields longer than this will be truncated to the threshold size.\n" + "Defaults to 64Kb."); + static PyObject* Journal_get_data_threshold(Journal *self, void *closure) { size_t cvalue; @@ -528,7 +530,7 @@ static PyGetSetDef Journal_getseters[] = { {(char*) "data_threshold", (getter)Journal_get_data_threshold, (setter)Journal_set_data_threshold, - (char*) "data threshold", + (char*) data_threshold__doc__, NULL}, {NULL} }; @@ -600,11 +602,14 @@ static PyTypeObject JournalType = { PyType_GenericNew, /* tp_new */ }; +#define SUMMARY \ + "Module that reads the systemd journal similar to journalctl." + #if PY_MAJOR_VERSION >= 3 static PyModuleDef _reader_module = { PyModuleDef_HEAD_INIT, "_reader", - "Module that reads systemd journal similar to journalctl.", + SUMMARY, -1, NULL, NULL, NULL, NULL, NULL }; @@ -636,8 +641,7 @@ init_reader(void) if (m == NULL) return NULL; #else - m = Py_InitModule3("_reader", NULL, - "Module that reads systemd journal similar to journalctl."); + m = Py_InitModule3("_reader", NULL, SUMMARY); if (m == NULL) return; #endif diff --git a/src/python-systemd/id128.c b/src/python-systemd/id128.c index f82b0afb99..04db786b66 100644 --- a/src/python-systemd/id128.c +++ b/src/python-systemd/id128.c @@ -35,24 +35,24 @@ static void cleanup_Py_DECREFp(PyObject **p) { PyDoc_STRVAR(module__doc__, "Python interface to the libsystemd-id128 library.\n\n" "Provides SD_MESSAGE_* constants and functions to query and generate\n" - "128bit unique identifiers." + "128-bit unique identifiers." ); PyDoc_STRVAR(randomize__doc__, "randomize() -> UUID\n\n" - "Return a new random 128bit unique identifier.\n" + "Return a new random 128-bit unique identifier.\n" "Wraps sd_id128_randomize(3)." ); PyDoc_STRVAR(get_machine__doc__, "get_machine() -> UUID\n\n" - "Return a 128bit unique identifier for this machine.\n" + "Return a 128-bit unique identifier for this machine.\n" "Wraps sd_id128_get_machine(3)." ); PyDoc_STRVAR(get_boot__doc__, "get_boot() -> UUID\n\n" - "Return a 128bit unique identifier for this boot.\n" + "Return a 128-bit unique identifier for this boot.\n" "Wraps sd_id128_get_boot(3)." ); diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index d63722b91d..892a56ff23 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -90,12 +90,11 @@ class Journal(_Journal): >>> myjournal.add_boot_match(journal.CURRENT_BOOT) >>> myjournal.add_loglevel_matches(journal.LOG_ERR) >>> myjournal.add_match(_SYSTEMD_UNIT="systemd-udevd.service") - >>> from __future__ import print_function >>> for entry in myjournal: ... print(entry['MESSAGE']) - See man page "systemd.journal-fields" for more info on - typical fields found in the journal. + See systemd.journal-fields(7) for more info on typical fields + found in the journal. """ def __init__(self, converters=None, flags=LOCAL_ONLY, path=None): """Creates instance of Journal, which allows filtering and @@ -123,7 +122,7 @@ class Journal(_Journal): self.converters.update(converters) def _convert_field(self, key, value): - """ Convert value based on callable from self.converters + """Convert value based on callable from self.converters based of field/key""" try: result = self.converters[key](value) @@ -137,7 +136,7 @@ class Journal(_Journal): return result def _convert_entry(self, entry): - """ Convert entire journal entry utilising _covert_field""" + """Convert entire journal entry utilising _covert_field""" result = {} for key, value in entry.items(): if isinstance(value, list): @@ -149,44 +148,56 @@ class Journal(_Journal): def add_match(self, *args, **kwargs): """Add one or more matches to the filter journal log entries. All matches of different field are combined in a logical AND, - and matches of the smae field are automatically combined in a + and matches of the same field are automatically combined in a logical OR. - Matches can be passed as strings of form "field=value", or - keyword arguments field="value".""" + Matches can be passed as strings of form "FIELD=value", or + keyword arguments FIELD="value". + """ args = list(args) args.extend(_make_line(key, val) for key, val in kwargs.items()) for arg in args: super(Journal, self).add_match(arg) def get_next(self, skip=1): - """Return dictionary of the next log entry. Optional skip value - will return the `skip`th log entry. - Returned will be journal entry dictionary processed with - converters.""" + """Return the next log entry as a dictionary of fields. + + Optional skip value will return the `skip`\-th log entry. + + Entries will be processed with converters specified during + Journal creation. + """ return self._convert_entry( super(Journal, self).get_next(skip)) def query_unique(self, field): - """Returns a set of unique values in journal for given `field`, - processed with converters. - Note this does not respect any journal matches.""" + """Return unique values appearing in the Journal for given `field`. + + Note this does not respect any journal matches. + + Entries will be processed with converters specified during + Journal creation. + """ return set(self._convert_field(field, value) for value in super(Journal, self).query_unique(field)) def seek_realtime(self, realtime): - """Seek to nearest matching journal entry to `realtime`. - Argument `realtime` can must be either an integer unix timestamp - or datetime.datetime instance.""" + """Seek to a matching journal entry nearest to `realtime` time. + + Argument `realtime` must be either an integer unix timestamp + or datetime.datetime instance. + """ if isinstance(realtime, _datetime.datetime): realtime = float(realtime.strftime("%s.%f")) return super(Journal, self).seek_realtime(realtime) def seek_monotonic(self, monotonic, bootid=None): - """Seek to nearest matching journal entry to `monotonic`. - Argument `monotonic` is a timestamp from boot in either seconds - or a datetime.timedelta instance. - Argument `bootid` is a string or UUID representing which boot the - monotonic time is reference to. Defaults to current bootid.""" + """Seek to a matching journal entry nearest to `monotonic` time. + + Argument `monotonic` is a timestamp from boot in either + seconds or a datetime.timedelta instance. Argument `bootid` + is a string or UUID representing which boot the monotonic time + is reference to. Defaults to current bootid. + """ if isinstance(monotonic, _datetime.timedelta): monotonic = monotonic.totalseconds() if isinstance(bootid, _uuid.UUID): @@ -194,7 +205,8 @@ class Journal(_Journal): return super(Journal, self).seek_monotonic(monotonic, bootid) def log_level(self, level): - """Sets maximum log `level` by setting matches for PRIORITY.""" + """Set maximum log `level` by setting matches for PRIORITY. + """ if 0 <= level <= 7: for i in range(level+1): self.add_match(PRIORITY="%s" % i) @@ -202,10 +214,13 @@ class Journal(_Journal): raise ValueError("Log level must be 0 <= level <= 7") def messageid_match(self, messageid): - """Sets match filter for log entries for specified `messageid`. - `messageid` can be string or UUID instance. - Standard message IDs can be found in systemd.id128 - Equivalent to add_match(MESSAGE_ID=`messageid`).""" + """Add match for log entries with specified `messageid`. + + `messageid` can be string of hexadicimal digits or a UUID + instance. Standard message IDs can be found in systemd.id128. + + Equivalent to add_match(MESSAGE_ID=`messageid`). + """ if isinstance(messageid, _uuid.UUID): messageid = messageid.get_hex() self.add_match(MESSAGE_ID=messageid) -- cgit v1.2.1 From 603c0b7b14a6b59a87ede20b2fdb6765e773c0ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 20 Feb 2013 09:20:35 +0100 Subject: build-sys: make sphinx support uncoditional It needs to be invoked explicitly, so there's no need to check explicitly. --- Makefile.am | 3 +-- configure.ac | 15 +-------------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/Makefile.am b/Makefile.am index fc7e8c429e..dfe70a570d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3453,13 +3453,12 @@ BUILT_SOURCES += \ src/python-systemd/id128-constants.h endif -if ENABLE_SPHINX PAPER = $(shell cat /etc/papersize 2>/dev/null || echo a4) SPHINXOPTS = -D latex_paper_size=$(PAPER) sphinx-%: + $(AM_V_at)test -n "$(SPHINX_BUILD)" || { echo " *** sphinx-build is not available"; exit 1; } $(AM_V_GEN)PYTHONPATH=$(DESTDIR)$(pyexecdir) $(SPHINX_BUILD) -b $* $(SPHINXOPTS) $(top_srcdir)/src/python-systemd/docs $(top_builddir)/man/python-systemd/ $(AM_V_at)echo Output has been generated in $(abs_top_builddir)/man/python-systemd/ -endif # ------------------------------------------------------------------------------ SED_PROCESS = \ diff --git a/configure.ac b/configure.ac index 5737c65257..397ce82e20 100644 --- a/configure.ac +++ b/configure.ac @@ -176,23 +176,11 @@ AS_IF([test "x$with_python" != "xno"], [ PYTHON_LIBS="`$PYTHON_CONFIG --ldflags`" AC_SUBST(PYTHON_CFLAGS) AC_SUBST(PYTHON_LIBS) + AC_PATH_PROGS(SPHINX_BUILD, sphinx-build-${PYTHON_VERSION} sphinx-build) ]) ]) AM_CONDITIONAL([HAVE_PYTHON_DEVEL], [test "$have_python_devel" = "yes"]) -AC_ARG_ENABLE(sphinx, AS_HELP_STRING([--enable-sphinx], - [use sphinx to build documentation for python-systemd])) -AS_IF([test "x$enable_sphinx" = "xyes"], [ - AC_PATH_PROGS(SPHINX_BUILD, sphinx-build-${PYTHON_VERSION} sphinx-build) - AS_IF([test -z "$SPHINX_BUILD"], [ - AC_MSG_ERROR([*** sphinx build requested, but sphinx-build not found]) - ]) - AS_IF([test "x$have_python_devel" != "xyes"], [ - AC_MSG_ERROR([*** sphinx build requested, but python support not enabled]) - ]) -]) -AM_CONDITIONAL(ENABLE_SPHINX, [test "x$enable_sphinx" = "xyes"]) - # ------------------------------------------------------------------------------ AC_SEARCH_LIBS([mq_open], [rt], [], [AC_MSG_ERROR([*** POSIX RT library not found])]) @@ -915,7 +903,6 @@ AC_MSG_RESULT([ Python Headers: ${have_python_devel} man pages: ${have_manpages} gtk-doc: ${enable_gtk_doc} - sphinx documentation: ${enable_sphinx} Split /usr: ${enable_split_usr} SysV compatibility: ${SYSTEM_SYSV_COMPAT} -- cgit v1.2.1 From a244c095c2fc18095ec793b52a72f3a40d9973e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 21 Feb 2013 14:23:57 +0100 Subject: systemd-python: use PyModule_AddObject in id128 --- src/python-systemd/id128.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/python-systemd/id128.c b/src/python-systemd/id128.c index 04db786b66..42f247d108 100644 --- a/src/python-systemd/id128.c +++ b/src/python-systemd/id128.c @@ -106,13 +106,13 @@ static PyMethodDef methods[] = { }; static int add_id(PyObject *module, const char* name, sd_id128_t id) { - PyObject _cleanup_Py_DECREF_ *obj; + PyObject *obj; obj = make_uuid(id); if (!obj) return -1; - return PyObject_SetAttrString(module, name, obj); + return PyModule_AddObject(module, name, obj); } #pragma GCC diagnostic push -- cgit v1.2.1 From df2795d9f94ec1e17a5b780261b21ac8d9f22101 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 21 Feb 2013 15:07:39 +0100 Subject: systemd-python: document attributes In id128 it would be better to add everything automatically, but sphinx cannot do this right now. --- src/python-systemd/docs/id128.rst | 31 +++++++++++++++++++++++++++++++ src/python-systemd/docs/journal.rst | 23 +++++++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/src/python-systemd/docs/id128.rst b/src/python-systemd/docs/id128.rst index e817d803a7..12c28f362b 100644 --- a/src/python-systemd/docs/id128.rst +++ b/src/python-systemd/docs/id128.rst @@ -5,3 +5,34 @@ :members: :undoc-members: :inherited-members: + + .. autoattribute:: systemd.id128.SD_MESSAGE_COREDUMP + .. autoattribute:: systemd.id128.SD_MESSAGE_FORWARD_SYSLOG_MISSED + .. autoattribute:: systemd.id128.SD_MESSAGE_HIBERNATE_KEY + .. autoattribute:: systemd.id128.SD_MESSAGE_JOURNAL_DROPPED + .. autoattribute:: systemd.id128.SD_MESSAGE_JOURNAL_MISSED + .. autoattribute:: systemd.id128.SD_MESSAGE_JOURNAL_START + .. autoattribute:: systemd.id128.SD_MESSAGE_JOURNAL_STOP + .. autoattribute:: systemd.id128.SD_MESSAGE_LID_CLOSED + .. autoattribute:: systemd.id128.SD_MESSAGE_LID_OPENED + .. autoattribute:: systemd.id128.SD_MESSAGE_OVERMOUNTING + .. autoattribute:: systemd.id128.SD_MESSAGE_POWER_KEY + .. autoattribute:: systemd.id128.SD_MESSAGE_SEAT_START + .. autoattribute:: systemd.id128.SD_MESSAGE_SEAT_STOP + .. autoattribute:: systemd.id128.SD_MESSAGE_SESSION_START + .. autoattribute:: systemd.id128.SD_MESSAGE_SESSION_STOP + .. autoattribute:: systemd.id128.SD_MESSAGE_SHUTDOWN + .. autoattribute:: systemd.id128.SD_MESSAGE_SLEEP_START + .. autoattribute:: systemd.id128.SD_MESSAGE_SLEEP_STOP + .. autoattribute:: systemd.id128.SD_MESSAGE_SPAWN_FAILED + .. autoattribute:: systemd.id128.SD_MESSAGE_STARTUP_FINISHED + .. autoattribute:: systemd.id128.SD_MESSAGE_SUSPEND_KEY + .. autoattribute:: systemd.id128.SD_MESSAGE_TIMEZONE_CHANGE + .. autoattribute:: systemd.id128.SD_MESSAGE_TIME_CHANGE + .. autoattribute:: systemd.id128.SD_MESSAGE_UNIT_FAILED + .. autoattribute:: systemd.id128.SD_MESSAGE_UNIT_RELOADED + .. autoattribute:: systemd.id128.SD_MESSAGE_UNIT_RELOADING + .. autoattribute:: systemd.id128.SD_MESSAGE_UNIT_STARTED + .. autoattribute:: systemd.id128.SD_MESSAGE_UNIT_STARTING + .. autoattribute:: systemd.id128.SD_MESSAGE_UNIT_STOPPED + .. autoattribute:: systemd.id128.SD_MESSAGE_UNIT_STOPPING diff --git a/src/python-systemd/docs/journal.rst b/src/python-systemd/docs/journal.rst index 89728a2ecb..9d627ce3ed 100644 --- a/src/python-systemd/docs/journal.rst +++ b/src/python-systemd/docs/journal.rst @@ -22,3 +22,26 @@ Accessing the Journal :inherited-members: .. automethod:: __init__ + +.. autoattribute:: systemd.journal.DEFAULT_CONVERTERS + +Whence constants +~~~~~~~~~~~~~~~~ + +.. autoattribute:: systemd.journal.SEEK_SET +.. autoattribute:: systemd.journal.SEEK_CUR +.. autoattribute:: systemd.journal.SEEK_END + +Journal access types +~~~~~~~~~~~~~~~~~~~~ + +.. autoattribute:: systemd.journal.LOCAL_ONLY +.. autoattribute:: systemd.journal.RUNTIME_ONLY +.. autoattribute:: systemd.journal.SYSTEM_ONLY + +Journal event types +~~~~~~~~~~~~~~~~~~~ + +.. autoattribute:: systemd.journal.NOP +.. autoattribute:: systemd.journal.APPEND +.. autoattribute:: systemd.journal.INVALIDATE -- cgit v1.2.1 From 5c083fa815d7357d107e76ffb9a5161956c3aec5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 21 Feb 2013 15:08:01 +0100 Subject: systemd-python: hide ChainMap import --- src/python-systemd/journal.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 892a56ff23..4d71564c65 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -28,7 +28,7 @@ import os as _os from os import SEEK_SET, SEEK_CUR, SEEK_END import logging as _logging if _sys.version_info >= (3,): - from collections import ChainMap + from collections import ChainMap as _ChainMap from syslog import (LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG) from ._journal import sendv, stream_fd @@ -112,7 +112,7 @@ class Journal(_Journal): """ super(Journal, self).__init__(flags, path) if _sys.version_info >= (3,3): - self.converters = ChainMap() + self.converters = _ChainMap() if converters is not None: self.converters.maps.append(converters) self.converters.maps.append(DEFAULT_CONVERTERS) -- cgit v1.2.1 From d426d8c8632ba0be408f8b6b56514b4598abab74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 21 Feb 2013 18:10:08 +0100 Subject: build-sys: upload python documentation to freedesktop.org --- Makefile.am | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/Makefile.am b/Makefile.am index dfe70a570d..4ff0cff8bb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3457,9 +3457,15 @@ PAPER = $(shell cat /etc/papersize 2>/dev/null || echo a4) SPHINXOPTS = -D latex_paper_size=$(PAPER) sphinx-%: $(AM_V_at)test -n "$(SPHINX_BUILD)" || { echo " *** sphinx-build is not available"; exit 1; } - $(AM_V_GEN)PYTHONPATH=$(DESTDIR)$(pyexecdir) $(SPHINX_BUILD) -b $* $(SPHINXOPTS) $(top_srcdir)/src/python-systemd/docs $(top_builddir)/man/python-systemd/ + $(AM_V_GEN)PYTHONPATH=$(DESTDIR)$(pyexecdir) LD_LIBRARY_PATH=$(DESTDIR)$(libdir) $(SPHINX_BUILD) -b $* $(SPHINXOPTS) $(top_srcdir)/src/python-systemd/docs $(top_builddir)/man/python-systemd/ $(AM_V_at)echo Output has been generated in $(abs_top_builddir)/man/python-systemd/ +destdir-sphinx: all + dir="`mktemp -d /tmp/systemd-install.XXXXXX`" && \ + $(MAKE) DESTDIR="$$dir" install && \ + $(MAKE) DESTDIR="$$dir" sphinx-html && \ + rm -rf "$$dir" + # ------------------------------------------------------------------------------ SED_PROCESS = \ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ @@ -3780,17 +3786,19 @@ upload: all distcheck scp systemd-$(VERSION).tar.xz fdo:/srv/www.freedesktop.org/www/software/systemd/ scp man/*.html tango:public/systemd-man/ -doc-sync: all +www_target = www.freedesktop.org:/srv/www.freedesktop.org/www/software/systemd +doc-sync: all destdir-sphinx gtkdoc-rebase --html-dir=docs/libudev/html --online - rsync -av --delete docs/libudev/html/ --omit-dir-times www.freedesktop.org:/srv/www.freedesktop.org/www/software/systemd/libudev/ + rsync -av --delete docs/libudev/html/ --omit-dir-times $(www_target)/libudev/ gtkdoc-rebase --html-dir=docs/gudev/html --online - rsync -av --delete docs/gudev/html/ --omit-dir-times www.freedesktop.org:/srv/www.freedesktop.org/www/software/systemd/gudev/ - rsync -av --delete-excluded --include="*.html" --exclude="*" --omit-dir-times man/ www.freedesktop.org:/srv/www.freedesktop.org/www/software/systemd/man/ + rsync -av --delete docs/gudev/html/ --omit-dir-times $(www_target)/gudev/ + rsync -av --delete-excluded --include="*.html" --exclude="*" --omit-dir-times man/ $(www_target)/man/ + rsync -av --delete --omit-dir-times man/python-systemd/ $(www_target)/man/python-systemd/ git-tag: git tag "v$(VERSION)" -m "systemd $(VERSION)" install-tree: all rm -rf $(abs_srcdir)/install-tree - make install DESTDIR=$(abs_srcdir)/install-tree + $(MAKE) install DESTDIR=$(abs_srcdir)/install-tree tree $(abs_srcdir)/install-tree -- cgit v1.2.1 From 6a6633a16a510b40c6ad30cd0858699619384a44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 22 Feb 2013 13:33:06 +0100 Subject: python-systemd: check all errors and use automatic cleanup __REALTIME_TIMESTAMP and __MONOTONIC_TIMESTAMP return ints. It doesn't make sense to convert to string, just to convert back to a number later on. Also try to follow systemd rules for indentation. --- Makefile.am | 13 +- src/python-systemd/_reader.c | 293 +++++++++++++++++++++++++----------------- src/python-systemd/id128.c | 21 +-- src/python-systemd/journal.py | 6 +- src/python-systemd/pyutil.c | 30 +++++ src/python-systemd/pyutil.h | 29 +++++ 6 files changed, 262 insertions(+), 130 deletions(-) create mode 100644 src/python-systemd/pyutil.c create mode 100644 src/python-systemd/pyutil.h diff --git a/Makefile.am b/Makefile.am index 4ff0cff8bb..f1c2ce05b5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3404,7 +3404,9 @@ _journal_la_LIBADD = \ id128_la_SOURCES = \ src/python-systemd/id128.c \ - src/python-systemd/id128-constants.h + src/python-systemd/id128-constants.h \ + src/python-systemd/pyutil.c \ + src/python-systemd/pyutil.h id128_la_CFLAGS = \ $(AM_CFLAGS) \ @@ -3423,7 +3425,9 @@ id128_la_LIBADD = \ libsystemd-id128.la _reader_la_SOURCES = \ - src/python-systemd/_reader.c + src/python-systemd/_reader.c \ + src/python-systemd/pyutil.c \ + src/python-systemd/pyutil.h _reader_la_CFLAGS = \ $(AM_CFLAGS) \ @@ -3439,7 +3443,8 @@ _reader_la_LDFLAGS = \ _reader_la_LIBADD = \ $(PYTHON_LIBS) \ libsystemd-journal.la \ - libsystemd-id128.la + libsystemd-id128.la \ + libsystemd-shared.la dist_pkgpyexec_PYTHON = \ src/python-systemd/journal.py \ @@ -3447,7 +3452,7 @@ dist_pkgpyexec_PYTHON = \ src/python-systemd/id128-constants.h: src/systemd/sd-messages.h Makefile $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_GEN)$(SED) -n -r 's/,//g; s/#define (SD_MESSAGE_[A-Z0-9_]+)\s.*/add_id(m, "\1", \1);/p' <$< >$@ + $(AM_V_GEN)$(SED) -n -r 's/,//g; s/#define (SD_MESSAGE_[A-Z0-9_]+)\s.*/add_id(m, "\1", \1) JOINER/p' <$< >$@ BUILT_SOURCES += \ src/python-systemd/id128-constants.h diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 207b9e76cb..9262c89e4d 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -18,11 +18,17 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . ***/ -#include #include #include #include +#include + +#include + +#include "pyutil.h" +#include "macro.h" +#include "util.h" #if PY_MAJOR_VERSION >=3 # define unicode_FromStringAndSize PyUnicode_FromStringAndSize @@ -107,10 +113,9 @@ static PyObject* Journal_get_next(Journal *self, PyObject *args) PyObject *dict; const void *msg; size_t msg_len; - const char *delim_ptr; - PyObject *key, *value, *cur_value, *tmp_list; + int64_t skip = 1LL; + int r; - int64_t skip = 1LL, r = -EINVAL; if (!PyArg_ParseTuple(args, "|L", &skip)) return NULL; @@ -128,6 +133,8 @@ static PyObject* Journal_get_next(Journal *self, PyObject *args) r = sd_journal_next_skip(self->j, skip); else if (skip < -1LL) r = sd_journal_previous_skip(self->j, -skip); + else + assert_not_reached("should not be here"); Py_END_ALLOW_THREADS set_error(r, NULL, NULL); @@ -137,70 +144,128 @@ static PyObject* Journal_get_next(Journal *self, PyObject *args) return PyDict_New(); dict = PyDict_New(); + if (!dict) + return NULL; SD_JOURNAL_FOREACH_DATA(self->j, msg, msg_len) { + PyObject _cleanup_Py_DECREF_ *key = NULL, *value = NULL; + const char *delim_ptr; + delim_ptr = memchr(msg, '=', msg_len); + if (!delim_ptr) { + PyErr_SetString(PyExc_OSError, + "journal gave us a field without '='"); + goto error; + } + key = unicode_FromStringAndSize(msg, delim_ptr - (const char*) msg); - value = PyBytes_FromStringAndSize(delim_ptr + 1, (const char*) msg + msg_len - (delim_ptr + 1) ); + if (!key) + goto error; + + value = PyBytes_FromStringAndSize( + delim_ptr + 1, + (const char*) msg + msg_len - (delim_ptr + 1) ); + if (!value) + goto error; + if (PyDict_Contains(dict, key)) { - cur_value = PyDict_GetItem(dict, key); + PyObject *cur_value = PyDict_GetItem(dict, key); + if (PyList_CheckExact(cur_value)) { - PyList_Append(cur_value, value); - }else{ - tmp_list = PyList_New(0); - PyList_Append(tmp_list, cur_value); - PyList_Append(tmp_list, value); + r = PyList_Append(cur_value, value); + if (r < 0) + goto error; + } else { + PyObject _cleanup_Py_DECREF_ *tmp_list = PyList_New(0); + if (!tmp_list) + goto error; + + r = PyList_Append(tmp_list, cur_value); + if (r < 0) + goto error; + + r = PyList_Append(tmp_list, value); + if (r < 0) + goto error; + PyDict_SetItem(dict, key, tmp_list); - Py_DECREF(tmp_list); + if (r < 0) + goto error; } - }else{ - PyDict_SetItem(dict, key, value); + } else { + r = PyDict_SetItem(dict, key, value); + if (r < 0) + goto error; } - Py_DECREF(key); - Py_DECREF(value); } { + PyObject _cleanup_Py_DECREF_ *key = NULL, *value = NULL; uint64_t realtime; - if (sd_journal_get_realtime_usec(self->j, &realtime) == 0) { - char realtime_str[20]; - sprintf(realtime_str, "%llu", (long long unsigned) realtime); - key = unicode_FromString("__REALTIME_TIMESTAMP"); - value = PyBytes_FromString(realtime_str); - PyDict_SetItem(dict, key, value); - Py_DECREF(key); - Py_DECREF(value); - } + + r = sd_journal_get_realtime_usec(self->j, &realtime); + if (set_error(r, NULL, NULL)) + goto error; + + key = unicode_FromString("__REALTIME_TIMESTAMP"); + if (!key) + goto error; + + assert_cc(sizeof(unsigned long long) == sizeof(realtime)); + value = PyLong_FromUnsignedLongLong(realtime); + if (!value) + goto error; + + if (PyDict_SetItem(dict, key, value)) + goto error; } { + PyObject _cleanup_Py_DECREF_ *key = NULL, *value = NULL; sd_id128_t sd_id; uint64_t monotonic; - if (sd_journal_get_monotonic_usec(self->j, &monotonic, &sd_id) == 0) { - char monotonic_str[20]; - sprintf(monotonic_str, "%llu", (long long unsigned) monotonic); - key = unicode_FromString("__MONOTONIC_TIMESTAMP"); - value = PyBytes_FromString(monotonic_str); - - PyDict_SetItem(dict, key, value); - Py_DECREF(key); - Py_DECREF(value); - } + + r = sd_journal_get_monotonic_usec(self->j, &monotonic, &sd_id); + if (set_error(r, NULL, NULL)) + goto error; + + key = unicode_FromString("__MONOTONIC_TIMESTAMP"); + if (!key) + goto error; + + assert_cc(sizeof(unsigned long long) == sizeof(monotonic)); + value = PyLong_FromUnsignedLongLong(monotonic); + if (!value) + goto error; + + if (PyDict_SetItem(dict, key, value)) + goto error; } { - char *cursor; - if (sd_journal_get_cursor(self->j, &cursor) > 0) { //Should return 0... - key = unicode_FromString("__CURSOR"); - value = PyBytes_FromString(cursor); - PyDict_SetItem(dict, key, value); - free(cursor); - Py_DECREF(key); - Py_DECREF(value); - } + PyObject _cleanup_Py_DECREF_ *key = NULL, *value = NULL; + char _cleanup_free_ *cursor = NULL; + + r = sd_journal_get_cursor(self->j, &cursor); + if (set_error(r, NULL, NULL)) + goto error; + + key = unicode_FromString("__CURSOR"); + if (!key) + goto error; + + value = PyBytes_FromString(cursor); + if (!value) + goto error; + + if (PyDict_SetItem(dict, key, value)) + goto error; } return dict; +error: + Py_DECREF(dict); + return NULL; } PyDoc_STRVAR(Journal_get_previous__doc__, @@ -451,7 +516,7 @@ static PyObject* Journal_iternext(PyObject *self) dict_size = PyDict_Size(dict); if ((int64_t) dict_size > 0LL) { return dict; - }else{ + } else { Py_DECREF(dict); PyErr_SetNone(PyExc_StopIteration); return NULL; @@ -486,7 +551,9 @@ static PyObject* Journal_query_unique(Journal *self, PyObject *args) const char *delim_ptr; delim_ptr = memchr(uniq, '=', uniq_len); - value = PyBytes_FromStringAndSize(delim_ptr + 1, (const char*) uniq + uniq_len - (delim_ptr + 1)); + value = PyBytes_FromStringAndSize( + delim_ptr + 1, + (const char*) uniq + uniq_len - (delim_ptr + 1)); PySet_Add(value_set, value); Py_DECREF(value); } @@ -495,7 +562,7 @@ static PyObject* Journal_query_unique(Journal *self, PyObject *args) } PyDoc_STRVAR(data_threshold__doc__, - "Threshold for field size truncation.\n\n" + "Threshold for field size truncation in bytes.\n\n" "Fields longer than this will be truncated to the threshold size.\n" "Defaults to 64Kb."); @@ -515,7 +582,7 @@ static int Journal_set_data_threshold(Journal *self, PyObject *value, void *clos { int r; if (value == NULL) { - PyErr_SetString(PyExc_TypeError, "Cannot delete data threshold"); + PyErr_SetString(PyExc_AttributeError, "Cannot delete data threshold"); return -1; } if (!long_Check(value)){ @@ -528,78 +595,67 @@ static int Journal_set_data_threshold(Journal *self, PyObject *value, void *clos static PyGetSetDef Journal_getseters[] = { {(char*) "data_threshold", - (getter)Journal_get_data_threshold, - (setter)Journal_set_data_threshold, + (getter) Journal_get_data_threshold, + (setter) Journal_set_data_threshold, (char*) data_threshold__doc__, NULL}, {NULL} }; static PyMethodDef Journal_methods[] = { - {"get_next", (PyCFunction)Journal_get_next, METH_VARARGS, - Journal_get_next__doc__}, - {"get_previous", (PyCFunction)Journal_get_previous, METH_VARARGS, - Journal_get_previous__doc__}, - {"add_match", (PyCFunction)Journal_add_match, METH_VARARGS|METH_KEYWORDS, - Journal_add_match__doc__}, - {"add_disjunction", (PyCFunction)Journal_add_disjunction, METH_NOARGS, - Journal_add_disjunction__doc__}, - {"flush_matches", (PyCFunction)Journal_flush_matches, METH_NOARGS, - Journal_flush_matches__doc__}, - {"seek", (PyCFunction)Journal_seek, METH_VARARGS | METH_KEYWORDS, - Journal_seek__doc__}, - {"seek_realtime", (PyCFunction)Journal_seek_realtime, METH_VARARGS, - Journal_seek_realtime__doc__}, - {"seek_monotonic", (PyCFunction)Journal_seek_monotonic, METH_VARARGS, - Journal_seek_monotonic__doc__}, - {"wait", (PyCFunction)Journal_wait, METH_VARARGS, - Journal_wait__doc__}, - {"seek_cursor", (PyCFunction)Journal_seek_cursor, METH_VARARGS, - Journal_seek_cursor__doc__}, - {"query_unique", (PyCFunction)Journal_query_unique, METH_VARARGS, - Journal_query_unique__doc__}, + {"get_next", (PyCFunction) Journal_get_next, METH_VARARGS, Journal_get_next__doc__}, + {"get_previous", (PyCFunction) Journal_get_previous, METH_VARARGS, Journal_get_previous__doc__}, + {"add_match", (PyCFunction) Journal_add_match, METH_VARARGS|METH_KEYWORDS, Journal_add_match__doc__}, + {"add_disjunction", (PyCFunction) Journal_add_disjunction, METH_NOARGS, Journal_add_disjunction__doc__}, + {"flush_matches", (PyCFunction) Journal_flush_matches, METH_NOARGS, Journal_flush_matches__doc__}, + {"seek", (PyCFunction) Journal_seek, METH_VARARGS | METH_KEYWORDS, Journal_seek__doc__}, + {"seek_realtime", (PyCFunction) Journal_seek_realtime, METH_VARARGS, Journal_seek_realtime__doc__}, + {"seek_monotonic", (PyCFunction) Journal_seek_monotonic, METH_VARARGS, Journal_seek_monotonic__doc__}, + {"wait", (PyCFunction) Journal_wait, METH_VARARGS, Journal_wait__doc__}, + {"seek_cursor", (PyCFunction) Journal_seek_cursor, METH_VARARGS, Journal_seek_cursor__doc__}, + {"query_unique", (PyCFunction) Journal_query_unique, METH_VARARGS, Journal_query_unique__doc__}, {NULL} /* Sentinel */ }; static PyTypeObject JournalType = { PyVarObject_HEAD_INIT(NULL, 0) - "_reader._Journal", /*tp_name*/ - sizeof(Journal), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - (destructor)Journal_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash */ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - 0, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,/*tp_flags*/ - Journal__doc__, /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - Journal_iter, /* tp_iter */ - Journal_iternext, /* tp_iternext */ - Journal_methods, /* tp_methods */ - 0, /* tp_members */ - Journal_getseters, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - (initproc)Journal_init, /* tp_init */ - 0, /* tp_alloc */ - PyType_GenericNew, /* tp_new */ + "_reader._Journal", /*tp_name*/ + sizeof(Journal), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + (destructor)Journal_dealloc, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + 0, /*tp_hash */ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + 0, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ + Journal__doc__, /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + Journal_iter, /* tp_iter */ + Journal_iternext, /* tp_iternext */ + Journal_methods, /* tp_methods */ + 0, /* tp_members */ + Journal_getseters, /* tp_getset */ + 0, /* tp_base */ + 0, /* tp_dict */ + 0, /* tp_descr_get */ + 0, /* tp_descr_set */ + 0, /* tp_dictoffset */ + (initproc) Journal_init, /* tp_init */ + 0, /* tp_alloc */ + PyType_GenericNew, /* tp_new */ }; #define SUMMARY \ @@ -647,13 +703,18 @@ init_reader(void) #endif Py_INCREF(&JournalType); - PyModule_AddObject(m, "_Journal", (PyObject *)&JournalType); - PyModule_AddIntConstant(m, "NOP", SD_JOURNAL_NOP); - PyModule_AddIntConstant(m, "APPEND", SD_JOURNAL_APPEND); - PyModule_AddIntConstant(m, "INVALIDATE", SD_JOURNAL_INVALIDATE); - PyModule_AddIntConstant(m, "LOCAL_ONLY", SD_JOURNAL_LOCAL_ONLY); - PyModule_AddIntConstant(m, "RUNTIME_ONLY", SD_JOURNAL_RUNTIME_ONLY); - PyModule_AddIntConstant(m, "SYSTEM_ONLY", SD_JOURNAL_SYSTEM_ONLY); + if (PyModule_AddObject(m, "_Journal", (PyObject *) &JournalType) || + PyModule_AddIntConstant(m, "NOP", SD_JOURNAL_NOP) || + PyModule_AddIntConstant(m, "APPEND", SD_JOURNAL_APPEND) || + PyModule_AddIntConstant(m, "INVALIDATE", SD_JOURNAL_INVALIDATE) || + PyModule_AddIntConstant(m, "LOCAL_ONLY", SD_JOURNAL_LOCAL_ONLY) || + PyModule_AddIntConstant(m, "RUNTIME_ONLY", SD_JOURNAL_RUNTIME_ONLY) || + PyModule_AddIntConstant(m, "SYSTEM_ONLY", SD_JOURNAL_SYSTEM_ONLY)) { +#if PY_MAJOR_VERSION >= 3 + Py_DECREF(m); + return NULL; +#endif + } #if PY_MAJOR_VERSION >= 3 return m; diff --git a/src/python-systemd/id128.c b/src/python-systemd/id128.c index 42f247d108..a6711a5bd5 100644 --- a/src/python-systemd/id128.c +++ b/src/python-systemd/id128.c @@ -19,18 +19,13 @@ along with systemd; If not, see . ***/ +#include + #include #include -#define _cleanup_Py_DECREF_ __attribute__((cleanup(cleanup_Py_DECREFp))) - -static void cleanup_Py_DECREFp(PyObject **p) { - if (!*p) - return; - - Py_DECREF(*p); -} +#include "pyutil.h" PyDoc_STRVAR(module__doc__, "Python interface to the libsystemd-id128 library.\n\n" @@ -127,7 +122,10 @@ PyMODINIT_FUNC initid128(void) { if (m == NULL) return; + /* a series of lines like 'add_id() ;' follow */ +#define JOINER ; #include "id128-constants.h" +#undef JOINER } #else @@ -147,7 +145,14 @@ PyMODINIT_FUNC PyInit_id128(void) { if (m == NULL) return NULL; + if ( /* a series of lines like 'add_id() ||' follow */ +#define JOINER || #include "id128-constants.h" +#undef JOINER + false) { + Py_DECREF(m); + return NULL; + } return m; } diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 4d71564c65..d94934cfa8 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -19,6 +19,8 @@ # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see . +from __future__ import division + import sys as _sys import datetime as _datetime import functools as _functools @@ -36,8 +38,8 @@ from ._reader import (_Journal, NOP, APPEND, INVALIDATE, LOCAL_ONLY, RUNTIME_ONLY, SYSTEM_ONLY) from . import id128 as _id128 -_MONOTONIC_CONVERTER = lambda x: _datetime.timedelta(microseconds=float(x)) -_REALTIME_CONVERTER = lambda x: _datetime.datetime.fromtimestamp(float(x)/1E6) +_MONOTONIC_CONVERTER = lambda x: _datetime.timedelta(microseconds=x) +_REALTIME_CONVERTER = lambda x: _datetime.datetime.fromtimestamp(x / 1E6) DEFAULT_CONVERTERS = { 'MESSAGE_ID': _uuid.UUID, '_MACHINE_ID': _uuid.UUID, diff --git a/src/python-systemd/pyutil.c b/src/python-systemd/pyutil.c new file mode 100644 index 0000000000..79065a11c0 --- /dev/null +++ b/src/python-systemd/pyutil.c @@ -0,0 +1,30 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include "pyutil.h" + +void cleanup_Py_DECREFp(PyObject **p) { + if (!*p) + return; + + Py_DECREF(*p); +} diff --git a/src/python-systemd/pyutil.h b/src/python-systemd/pyutil.h new file mode 100644 index 0000000000..3b7bc580df --- /dev/null +++ b/src/python-systemd/pyutil.h @@ -0,0 +1,29 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#ifndef Py_TYPE +/* avoid duplication warnings from errors in Python 2.7 headers */ +# include +#endif + +void cleanup_Py_DECREFp(PyObject **p); + +#define _cleanup_Py_DECREF_ __attribute__((cleanup(cleanup_Py_DECREFp))) -- cgit v1.2.1 From 86e3d32a1d52cd2ccba184e8375da8828914d3ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 23 Feb 2013 01:11:36 +0100 Subject: systemd-python: return both parts of sd_journal_get_monotonic_usec In Python 3, a named tuple is used. In Python 2, a simple tuple is used. In either case, the pair is (timestamp, bootid). --- src/python-systemd/_reader.c | 74 +++++++++++++++++++++++++++++++------ src/python-systemd/docs/journal.rst | 2 + src/python-systemd/journal.py | 8 +++- 3 files changed, 71 insertions(+), 13 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 9262c89e4d..7645cb9a84 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -67,6 +67,26 @@ static int set_error(int r, const char* path, const char* invalid_message) { return 1; } +#if PY_MAJOR_VERSION >= 3 +static PyTypeObject MonotonicType; + +PyDoc_STRVAR(MonotonicType__doc__, + "A tuple of (timestamp, bootid) for holding monotonic timestamps"); + +static PyStructSequence_Field MonotonicType_fields[] = { + {(char*) "timestamp", (char*) "Time"}, + {(char*) "bootid", (char*) "Unique identifier of the boot"}, + {NULL, NULL} +}; + +static PyStructSequence_Desc Monotonic_desc = { + (char*) "journal.Monotonic", + MonotonicType__doc__, + MonotonicType_fields, + 2, +}; +#endif + static void Journal_dealloc(Journal* self) { sd_journal_close(self->j); @@ -221,22 +241,37 @@ static PyObject* Journal_get_next(Journal *self, PyObject *args) } { - PyObject _cleanup_Py_DECREF_ *key = NULL, *value = NULL; - sd_id128_t sd_id; + PyObject _cleanup_Py_DECREF_ + *key = NULL, *timestamp = NULL, *bytes = NULL, *value = NULL; + sd_id128_t id; uint64_t monotonic; - r = sd_journal_get_monotonic_usec(self->j, &monotonic, &sd_id); + r = sd_journal_get_monotonic_usec(self->j, &monotonic, &id); if (set_error(r, NULL, NULL)) goto error; + assert_cc(sizeof(unsigned long long) == sizeof(monotonic)); key = unicode_FromString("__MONOTONIC_TIMESTAMP"); - if (!key) + timestamp = PyLong_FromUnsignedLongLong(monotonic); + bytes = PyBytes_FromStringAndSize((const char*) &id.bytes, sizeof(id.bytes)); +#if PY_MAJOR_VERSION >= 3 + value = PyStructSequence_New(&MonotonicType); +#else + value = PyTuple_New(2); +#endif + if (!key || !timestamp || !bytes || !value) goto error; - assert_cc(sizeof(unsigned long long) == sizeof(monotonic)); - value = PyLong_FromUnsignedLongLong(monotonic); - if (!value) - goto error; + Py_INCREF(timestamp); + Py_INCREF(bytes); + +#if PY_MAJOR_VERSION >= 3 + PyStructSequence_SET_ITEM(value, 0, timestamp); + PyStructSequence_SET_ITEM(value, 1, bytes); +#else + PyTuple_SET_ITEM(value, 0, timestamp); + PyTuple_SET_ITEM(value, 1, bytes); +#endif if (PyDict_SetItem(dict, key, value)) goto error; @@ -421,7 +456,7 @@ static PyObject* Journal_seek_monotonic(Journal *self, PyObject *args) double timedouble; char *bootid = NULL; uint64_t timestamp; - sd_id128_t sd_id; + sd_id128_t id; int r; if (!PyArg_ParseTuple(args, "d|z", &timedouble, &bootid)) @@ -435,19 +470,19 @@ static PyObject* Journal_seek_monotonic(Journal *self, PyObject *args) } if (bootid) { - r = sd_id128_from_string(bootid, &sd_id); + r = sd_id128_from_string(bootid, &id); if (set_error(r, NULL, "Invalid bootid")) return NULL; } else { Py_BEGIN_ALLOW_THREADS - r = sd_id128_get_boot(&sd_id); + r = sd_id128_get_boot(&id); Py_END_ALLOW_THREADS if (set_error(r, NULL, NULL)) return NULL; } Py_BEGIN_ALLOW_THREADS - r = sd_journal_seek_monotonic_usec(self->j, sd_id, timestamp); + r = sd_journal_seek_monotonic_usec(self->j, id, timestamp); Py_END_ALLOW_THREADS if (set_error(r, NULL, NULL)) return NULL; @@ -671,6 +706,10 @@ static PyModuleDef _reader_module = { }; #endif +#if PY_MAJOR_VERSION >= 3 +static bool initialized = false; +#endif + #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wmissing-prototypes" @@ -696,6 +735,11 @@ init_reader(void) m = PyModule_Create(&_reader_module); if (m == NULL) return NULL; + + if (!initialized) { + PyStructSequence_InitType(&MonotonicType, &Monotonic_desc); + initialized = true; + } #else m = Py_InitModule3("_reader", NULL, SUMMARY); if (m == NULL) @@ -703,7 +747,13 @@ init_reader(void) #endif Py_INCREF(&JournalType); +#if PY_MAJOR_VERSION >= 3 + Py_INCREF(&MonotonicType); +#endif if (PyModule_AddObject(m, "_Journal", (PyObject *) &JournalType) || +#if PY_MAJOR_VERSION >= 3 + PyModule_AddObject(m, "Monotonic", (PyObject*) &MonotonicType) || +#endif PyModule_AddIntConstant(m, "NOP", SD_JOURNAL_NOP) || PyModule_AddIntConstant(m, "APPEND", SD_JOURNAL_APPEND) || PyModule_AddIntConstant(m, "INVALIDATE", SD_JOURNAL_INVALIDATE) || diff --git a/src/python-systemd/docs/journal.rst b/src/python-systemd/docs/journal.rst index 9d627ce3ed..38ab57e45b 100644 --- a/src/python-systemd/docs/journal.rst +++ b/src/python-systemd/docs/journal.rst @@ -23,6 +23,8 @@ Accessing the Journal .. automethod:: __init__ +.. autoclass:: Monotonic + .. autoattribute:: systemd.journal.DEFAULT_CONVERTERS Whence constants diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index d94934cfa8..a5641e98b2 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -38,7 +38,13 @@ from ._reader import (_Journal, NOP, APPEND, INVALIDATE, LOCAL_ONLY, RUNTIME_ONLY, SYSTEM_ONLY) from . import id128 as _id128 -_MONOTONIC_CONVERTER = lambda x: _datetime.timedelta(microseconds=x) +if _sys.version_info >= (3,): + from ._reader import Monotonic +else: + Monotonic = tuple + +_MONOTONIC_CONVERTER = lambda p: Monotonic((_datetime.timedelta(microseconds=p[0]), + _uuid.UUID(bytes=p[1]))) _REALTIME_CONVERTER = lambda x: _datetime.datetime.fromtimestamp(x / 1E6) DEFAULT_CONVERTERS = { 'MESSAGE_ID': _uuid.UUID, -- cgit v1.2.1 From 7f41820b07ccb8a6da5552c466818fcce3d085bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 28 Feb 2013 19:32:31 -0500 Subject: python-systemd: rename Journal to Reader It seems inevitable that we'll also grow a writing interface, and then it'll be cumbersome to have a "Journal" for reading, and a "Writer" for writing. --- src/python-systemd/_reader.c | 122 ++++++++++++++++++------------------ src/python-systemd/docs/journal.rst | 4 +- src/python-systemd/journal.py | 28 ++++----- 3 files changed, 77 insertions(+), 77 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 7645cb9a84..7f200d53f6 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -50,8 +50,8 @@ typedef struct { PyObject_HEAD sd_journal *j; -} Journal; -static PyTypeObject JournalType; +} Reader; +static PyTypeObject ReaderType; static int set_error(int r, const char* path, const char* invalid_message) { if (r >= 0) @@ -87,15 +87,15 @@ static PyStructSequence_Desc Monotonic_desc = { }; #endif -static void Journal_dealloc(Journal* self) +static void Reader_dealloc(Reader* self) { sd_journal_close(self->j); Py_TYPE(self)->tp_free((PyObject*)self); } -PyDoc_STRVAR(Journal__doc__, - "Journal([flags][,path]) -> ...\n\n" - "Journal allows filtering and retrieval of Journal entries.\n" +PyDoc_STRVAR(Reader__doc__, + "Reader([flags][,path]) -> ...\n\n" + "Reader allows filtering and retrieval of Journal entries.\n" "Argument `flags` sets open flags of the journal, which can be one\n" "of, or ORed combination of constants: LOCAL_ONLY (default) opens\n" "journal on local machine only; RUNTIME_ONLY opens only\n" @@ -104,7 +104,7 @@ PyDoc_STRVAR(Journal__doc__, "Argument `path` is the directory of journal files. Note that\n" "currently flags are ignored when `path` is present as they are\n" "not relevant."); -static int Journal_init(Journal *self, PyObject *args, PyObject *keywds) +static int Reader_init(Reader *self, PyObject *args, PyObject *keywds) { int flags = SD_JOURNAL_LOCAL_ONLY, r; char *path = NULL; @@ -124,11 +124,11 @@ static int Journal_init(Journal *self, PyObject *args, PyObject *keywds) return set_error(r, path, "Invalid flags or path"); } -PyDoc_STRVAR(Journal_get_next__doc__, +PyDoc_STRVAR(Reader_get_next__doc__, "get_next([skip]) -> dict\n\n" "Return dictionary of the next log entry. Optional skip value will\n" "return the `skip`\\-th log entry."); -static PyObject* Journal_get_next(Journal *self, PyObject *args) +static PyObject* Reader_get_next(Reader *self, PyObject *args) { PyObject *dict; const void *msg; @@ -303,11 +303,11 @@ error: return NULL; } -PyDoc_STRVAR(Journal_get_previous__doc__, +PyDoc_STRVAR(Reader_get_previous__doc__, "get_previous([skip]) -> dict\n\n" "Return dictionary of the previous log entry. Optional skip value\n" "will return the -`skip`\\-th log entry. Equivalent to get_next(-skip)."); -static PyObject* Journal_get_previous(Journal *self, PyObject *args) +static PyObject* Reader_get_previous(Reader *self, PyObject *args) { int64_t skip = 1LL; if (!PyArg_ParseTuple(args, "|L", &skip)) @@ -317,13 +317,13 @@ static PyObject* Journal_get_previous(Journal *self, PyObject *args) (char*) "L", -skip); } -PyDoc_STRVAR(Journal_add_match__doc__, +PyDoc_STRVAR(Reader_add_match__doc__, "add_match(match) -> None\n\n" "Add a match to filter journal log entries. All matches of different\n" "fields are combined with logical AND, and matches of the same field\n" "are automatically combined with logical OR.\n" "Match is a string of the form \"FIELD=value\"."); -static PyObject* Journal_add_match(Journal *self, PyObject *args, PyObject *keywds) +static PyObject* Reader_add_match(Reader *self, PyObject *args, PyObject *keywds) { char *match; int match_len, r; @@ -338,10 +338,10 @@ static PyObject* Journal_add_match(Journal *self, PyObject *args, PyObject *keyw Py_RETURN_NONE; } -PyDoc_STRVAR(Journal_add_disjunction__doc__, +PyDoc_STRVAR(Reader_add_disjunction__doc__, "add_disjunction() -> None\n\n" "Inserts a logical OR between matches added before and afterwards."); -static PyObject* Journal_add_disjunction(Journal *self, PyObject *args) +static PyObject* Reader_add_disjunction(Reader *self, PyObject *args) { int r; r = sd_journal_add_disjunction(self->j); @@ -351,23 +351,23 @@ static PyObject* Journal_add_disjunction(Journal *self, PyObject *args) Py_RETURN_NONE; } -PyDoc_STRVAR(Journal_flush_matches__doc__, +PyDoc_STRVAR(Reader_flush_matches__doc__, "flush_matches() -> None\n\n" "Clear all current match filters."); -static PyObject* Journal_flush_matches(Journal *self, PyObject *args) +static PyObject* Reader_flush_matches(Reader *self, PyObject *args) { sd_journal_flush_matches(self->j); Py_RETURN_NONE; } -PyDoc_STRVAR(Journal_seek__doc__, +PyDoc_STRVAR(Reader_seek__doc__, "seek(offset[, whence]) -> None\n\n" "Jump `offset` entries in the journal. Argument\n" "`whence` defines what the offset is relative to:\n" "os.SEEK_SET (default) from first match in journal;\n" "os.SEEK_CUR from current position in journal;\n" "and os.SEEK_END is from last match in journal."); -static PyObject* Journal_seek(Journal *self, PyObject *args, PyObject *keywds) +static PyObject* Reader_seek(Reader *self, PyObject *args, PyObject *keywds) { int64_t offset; int whence = SEEK_SET; @@ -418,11 +418,11 @@ static PyObject* Journal_seek(Journal *self, PyObject *args, PyObject *keywds) Py_RETURN_NONE; } -PyDoc_STRVAR(Journal_seek_realtime__doc__, +PyDoc_STRVAR(Reader_seek_realtime__doc__, "seek_realtime(realtime) -> None\n\n" "Seek to nearest matching journal entry to `realtime`. Argument\n" "`realtime` can must be an integer unix timestamp."); -static PyObject* Journal_seek_realtime(Journal *self, PyObject *args) +static PyObject* Reader_seek_realtime(Reader *self, PyObject *args) { double timedouble; uint64_t timestamp; @@ -445,13 +445,13 @@ static PyObject* Journal_seek_realtime(Journal *self, PyObject *args) Py_RETURN_NONE; } -PyDoc_STRVAR(Journal_seek_monotonic__doc__, +PyDoc_STRVAR(Reader_seek_monotonic__doc__, "seek_monotonic(monotonic[, bootid]) -> None\n\n" "Seek to nearest matching journal entry to `monotonic`. Argument\n" "`monotonic` is an timestamp from boot in seconds.\n" "Argument `bootid` is a string representing which boot the\n" "monotonic time is reference to. Defaults to current bootid."); -static PyObject* Journal_seek_monotonic(Journal *self, PyObject *args) +static PyObject* Reader_seek_monotonic(Reader *self, PyObject *args) { double timedouble; char *bootid = NULL; @@ -489,7 +489,7 @@ static PyObject* Journal_seek_monotonic(Journal *self, PyObject *args) Py_RETURN_NONE; } -PyDoc_STRVAR(Journal_wait__doc__, +PyDoc_STRVAR(Reader_wait__doc__, "wait([timeout]) -> state change (integer)\n\n" "Wait for a change in the journal. Argument `timeout` specifies\n" "the maximum number of seconds to wait before returning\n" @@ -498,7 +498,7 @@ PyDoc_STRVAR(Journal_wait__doc__, "Will return constants: NOP if no change; APPEND if new\n" "entries have been added to the end of the journal; and\n" "INVALIDATE if journal files have been added or removed."); -static PyObject* Journal_wait(Journal *self, PyObject *args, PyObject *keywds) +static PyObject* Reader_wait(Reader *self, PyObject *args, PyObject *keywds) { int r; int64_t timeout = 0LL; @@ -515,10 +515,10 @@ static PyObject* Journal_wait(Journal *self, PyObject *args, PyObject *keywds) return long_FromLong(r); } -PyDoc_STRVAR(Journal_seek_cursor__doc__, +PyDoc_STRVAR(Reader_seek_cursor__doc__, "seek_cursor(cursor) -> None\n\n" "Seek to journal entry by given unique reference `cursor`."); -static PyObject* Journal_seek_cursor(Journal *self, PyObject *args) +static PyObject* Reader_seek_cursor(Reader *self, PyObject *args) { const char *cursor; int r; @@ -534,13 +534,13 @@ static PyObject* Journal_seek_cursor(Journal *self, PyObject *args) Py_RETURN_NONE; } -static PyObject* Journal_iter(PyObject *self) +static PyObject* Reader_iter(PyObject *self) { Py_INCREF(self); return self; } -static PyObject* Journal_iternext(PyObject *self) +static PyObject* Reader_iternext(PyObject *self) { PyObject *dict; Py_ssize_t dict_size; @@ -558,11 +558,11 @@ static PyObject* Journal_iternext(PyObject *self) } } -PyDoc_STRVAR(Journal_query_unique__doc__, +PyDoc_STRVAR(Reader_query_unique__doc__, "query_unique(field) -> a set of values\n\n" "Return a set of unique values appearing in journal for the\n" "given `field`. Note this does not respect any journal matches."); -static PyObject* Journal_query_unique(Journal *self, PyObject *args) +static PyObject* Reader_query_unique(Reader *self, PyObject *args) { char *query; int r; @@ -601,7 +601,7 @@ PyDoc_STRVAR(data_threshold__doc__, "Fields longer than this will be truncated to the threshold size.\n" "Defaults to 64Kb."); -static PyObject* Journal_get_data_threshold(Journal *self, void *closure) +static PyObject* Reader_get_data_threshold(Reader *self, void *closure) { size_t cvalue; int r; @@ -613,7 +613,7 @@ static PyObject* Journal_get_data_threshold(Journal *self, void *closure) return long_FromSize_t(cvalue); } -static int Journal_set_data_threshold(Journal *self, PyObject *value, void *closure) +static int Reader_set_data_threshold(Reader *self, PyObject *value, void *closure) { int r; if (value == NULL) { @@ -628,36 +628,36 @@ static int Journal_set_data_threshold(Journal *self, PyObject *value, void *clos return set_error(r, NULL, NULL); } -static PyGetSetDef Journal_getseters[] = { +static PyGetSetDef Reader_getseters[] = { {(char*) "data_threshold", - (getter) Journal_get_data_threshold, - (setter) Journal_set_data_threshold, + (getter) Reader_get_data_threshold, + (setter) Reader_set_data_threshold, (char*) data_threshold__doc__, NULL}, {NULL} }; -static PyMethodDef Journal_methods[] = { - {"get_next", (PyCFunction) Journal_get_next, METH_VARARGS, Journal_get_next__doc__}, - {"get_previous", (PyCFunction) Journal_get_previous, METH_VARARGS, Journal_get_previous__doc__}, - {"add_match", (PyCFunction) Journal_add_match, METH_VARARGS|METH_KEYWORDS, Journal_add_match__doc__}, - {"add_disjunction", (PyCFunction) Journal_add_disjunction, METH_NOARGS, Journal_add_disjunction__doc__}, - {"flush_matches", (PyCFunction) Journal_flush_matches, METH_NOARGS, Journal_flush_matches__doc__}, - {"seek", (PyCFunction) Journal_seek, METH_VARARGS | METH_KEYWORDS, Journal_seek__doc__}, - {"seek_realtime", (PyCFunction) Journal_seek_realtime, METH_VARARGS, Journal_seek_realtime__doc__}, - {"seek_monotonic", (PyCFunction) Journal_seek_monotonic, METH_VARARGS, Journal_seek_monotonic__doc__}, - {"wait", (PyCFunction) Journal_wait, METH_VARARGS, Journal_wait__doc__}, - {"seek_cursor", (PyCFunction) Journal_seek_cursor, METH_VARARGS, Journal_seek_cursor__doc__}, - {"query_unique", (PyCFunction) Journal_query_unique, METH_VARARGS, Journal_query_unique__doc__}, +static PyMethodDef Reader_methods[] = { + {"get_next", (PyCFunction) Reader_get_next, METH_VARARGS, Reader_get_next__doc__}, + {"get_previous", (PyCFunction) Reader_get_previous, METH_VARARGS, Reader_get_previous__doc__}, + {"add_match", (PyCFunction) Reader_add_match, METH_VARARGS|METH_KEYWORDS, Reader_add_match__doc__}, + {"add_disjunction", (PyCFunction) Reader_add_disjunction, METH_NOARGS, Reader_add_disjunction__doc__}, + {"flush_matches", (PyCFunction) Reader_flush_matches, METH_NOARGS, Reader_flush_matches__doc__}, + {"seek", (PyCFunction) Reader_seek, METH_VARARGS | METH_KEYWORDS, Reader_seek__doc__}, + {"seek_realtime", (PyCFunction) Reader_seek_realtime, METH_VARARGS, Reader_seek_realtime__doc__}, + {"seek_monotonic", (PyCFunction) Reader_seek_monotonic, METH_VARARGS, Reader_seek_monotonic__doc__}, + {"wait", (PyCFunction) Reader_wait, METH_VARARGS, Reader_wait__doc__}, + {"seek_cursor", (PyCFunction) Reader_seek_cursor, METH_VARARGS, Reader_seek_cursor__doc__}, + {"query_unique", (PyCFunction) Reader_query_unique, METH_VARARGS, Reader_query_unique__doc__}, {NULL} /* Sentinel */ }; -static PyTypeObject JournalType = { +static PyTypeObject ReaderType = { PyVarObject_HEAD_INIT(NULL, 0) - "_reader._Journal", /*tp_name*/ - sizeof(Journal), /*tp_basicsize*/ + "_reader._Reader", /*tp_name*/ + sizeof(Reader), /*tp_basicsize*/ 0, /*tp_itemsize*/ - (destructor)Journal_dealloc, /*tp_dealloc*/ + (destructor)Reader_dealloc, /*tp_dealloc*/ 0, /*tp_print*/ 0, /*tp_getattr*/ 0, /*tp_setattr*/ @@ -673,22 +673,22 @@ static PyTypeObject JournalType = { 0, /*tp_setattro*/ 0, /*tp_as_buffer*/ Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE, /*tp_flags*/ - Journal__doc__, /* tp_doc */ + Reader__doc__, /* tp_doc */ 0, /* tp_traverse */ 0, /* tp_clear */ 0, /* tp_richcompare */ 0, /* tp_weaklistoffset */ - Journal_iter, /* tp_iter */ - Journal_iternext, /* tp_iternext */ - Journal_methods, /* tp_methods */ + Reader_iter, /* tp_iter */ + Reader_iternext, /* tp_iternext */ + Reader_methods, /* tp_methods */ 0, /* tp_members */ - Journal_getseters, /* tp_getset */ + Reader_getseters, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ 0, /* tp_dictoffset */ - (initproc) Journal_init, /* tp_init */ + (initproc) Reader_init, /* tp_init */ 0, /* tp_alloc */ PyType_GenericNew, /* tp_new */ }; @@ -724,7 +724,7 @@ init_reader(void) PyDateTime_IMPORT; - if (PyType_Ready(&JournalType) < 0) + if (PyType_Ready(&ReaderType) < 0) #if PY_MAJOR_VERSION >= 3 return NULL; #else @@ -746,11 +746,11 @@ init_reader(void) return; #endif - Py_INCREF(&JournalType); + Py_INCREF(&ReaderType); #if PY_MAJOR_VERSION >= 3 Py_INCREF(&MonotonicType); #endif - if (PyModule_AddObject(m, "_Journal", (PyObject *) &JournalType) || + if (PyModule_AddObject(m, "_Reader", (PyObject *) &ReaderType) || #if PY_MAJOR_VERSION >= 3 PyModule_AddObject(m, "Monotonic", (PyObject*) &MonotonicType) || #endif diff --git a/src/python-systemd/docs/journal.rst b/src/python-systemd/docs/journal.rst index 38ab57e45b..78b831afff 100644 --- a/src/python-systemd/docs/journal.rst +++ b/src/python-systemd/docs/journal.rst @@ -13,11 +13,11 @@ Accessing the Journal --------------------- -.. autoclass:: _Journal +.. autoclass:: _Reader :undoc-members: :inherited-members: -.. autoclass:: Journal +.. autoclass:: Reader :undoc-members: :inherited-members: diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index a5641e98b2..23e1d65747 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -34,7 +34,7 @@ if _sys.version_info >= (3,): from syslog import (LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG) from ._journal import sendv, stream_fd -from ._reader import (_Journal, NOP, APPEND, INVALIDATE, +from ._reader import (_Reader, NOP, APPEND, INVALIDATE, LOCAL_ONLY, RUNTIME_ONLY, SYSTEM_ONLY) from . import id128 as _id128 @@ -86,15 +86,15 @@ if _sys.version_info >= (3,): else: _convert_unicode = _functools.partial(unicode, encoding='utf-8') -class Journal(_Journal): - """Journal allows the access and filtering of systemd journal +class Reader(_Reader): + """Reader allows the access and filtering of systemd journal entries. Note that in order to access the system journal, a non-root user must be in the `adm` group. Example usage to print out all error or higher level messages for systemd-udevd for the boot: - >>> myjournal = journal.Journal() + >>> myjournal = journal.Reader() >>> myjournal.add_boot_match(journal.CURRENT_BOOT) >>> myjournal.add_loglevel_matches(journal.LOG_ERR) >>> myjournal.add_match(_SYSTEMD_UNIT="systemd-udevd.service") @@ -105,7 +105,7 @@ class Journal(_Journal): found in the journal. """ def __init__(self, converters=None, flags=LOCAL_ONLY, path=None): - """Creates instance of Journal, which allows filtering and + """Create an instance of Reader, which allows filtering and return of journal entries. Argument `converters` is a dictionary which updates the DEFAULT_CONVERTERS to convert journal field values. @@ -118,7 +118,7 @@ class Journal(_Journal): currently flags are ignored when `path` is present as they are currently not relevant. """ - super(Journal, self).__init__(flags, path) + super(Reader, self).__init__(flags, path) if _sys.version_info >= (3,3): self.converters = _ChainMap() if converters is not None: @@ -164,7 +164,7 @@ class Journal(_Journal): args = list(args) args.extend(_make_line(key, val) for key, val in kwargs.items()) for arg in args: - super(Journal, self).add_match(arg) + super(Reader, self).add_match(arg) def get_next(self, skip=1): """Return the next log entry as a dictionary of fields. @@ -172,21 +172,21 @@ class Journal(_Journal): Optional skip value will return the `skip`\-th log entry. Entries will be processed with converters specified during - Journal creation. + Reader creation. """ return self._convert_entry( - super(Journal, self).get_next(skip)) + super(Reader, self).get_next(skip)) def query_unique(self, field): - """Return unique values appearing in the Journal for given `field`. + """Return unique values appearing in the journal for given `field`. Note this does not respect any journal matches. Entries will be processed with converters specified during - Journal creation. + Reader creation. """ return set(self._convert_field(field, value) - for value in super(Journal, self).query_unique(field)) + for value in super(Reader, self).query_unique(field)) def seek_realtime(self, realtime): """Seek to a matching journal entry nearest to `realtime` time. @@ -196,7 +196,7 @@ class Journal(_Journal): """ if isinstance(realtime, _datetime.datetime): realtime = float(realtime.strftime("%s.%f")) - return super(Journal, self).seek_realtime(realtime) + return super(Reader, self).seek_realtime(realtime) def seek_monotonic(self, monotonic, bootid=None): """Seek to a matching journal entry nearest to `monotonic` time. @@ -210,7 +210,7 @@ class Journal(_Journal): monotonic = monotonic.totalseconds() if isinstance(bootid, _uuid.UUID): bootid = bootid.get_hex() - return super(Journal, self).seek_monotonic(monotonic, bootid) + return super(Reader, self).seek_monotonic(monotonic, bootid) def log_level(self, level): """Set maximum log `level` by setting matches for PRIORITY. -- cgit v1.2.1 From d89d6c86d9f141e0fb6939b7fc4f5ea068750690 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Fri, 1 Mar 2013 10:27:10 +0100 Subject: journalctl: add --reverse option to show the newest lines first --- man/journalctl.xml | 8 +++++++ src/journal/journalctl.c | 58 +++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 60 insertions(+), 6 deletions(-) diff --git a/man/journalctl.xml b/man/journalctl.xml index 5ed0e1fe3f..ca940fec7e 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -184,6 +184,14 @@ . + + + + + Reverse output, so the newest + entries are displayed first. + + diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 9084509704..4c9862fa6c 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -77,6 +77,7 @@ static bool arg_since_set = false, arg_until_set = false; static const char *arg_unit = NULL; static const char *arg_field = NULL; static bool arg_catalog = false; +static bool arg_reverse = false; static enum { ACTION_SHOW, @@ -103,6 +104,7 @@ static int help(void) { " -f --follow Follow journal\n" " -n --lines[=INTEGER] Number of journal entries to show\n" " --no-tail Show all lines, even in follow mode\n" + " -r --reverse Show the newest entries first\n" " -o --output=STRING Change journal output mode (short, short-monotonic,\n" " verbose, export, json, json-pretty, json-sse, cat)\n" " -x --catalog Add message explanations where available\n" @@ -184,6 +186,7 @@ static int parse_argv(int argc, char *argv[]) { { "catalog", no_argument, NULL, 'x' }, { "list-catalog", no_argument, NULL, ARG_LIST_CATALOG }, { "update-catalog",no_argument, NULL, ARG_UPDATE_CATALOG }, + { "reverse", no_argument, NULL, 'r' }, { NULL, 0, NULL, 0 } }; @@ -192,7 +195,7 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); - while ((c = getopt_long(argc, argv, "hfo:an::qmbD:p:c:u:F:x", options, NULL)) >= 0) { + while ((c = getopt_long(argc, argv, "hfo:an::qmbD:p:c:u:F:xr", options, NULL)) >= 0) { switch (c) { @@ -424,6 +427,10 @@ static int parse_argv(int argc, char *argv[]) { arg_action = ACTION_UPDATE_CATALOG; break; + case 'r': + arg_reverse = true; + break; + default: log_error("Unknown option code %c", c); return -EINVAL; @@ -443,6 +450,11 @@ static int parse_argv(int argc, char *argv[]) { return -EINVAL; } + if (arg_follow && arg_reverse) { + log_error("Please specify either --reverse= or --follow=, not both."); + return -EINVAL; + } + return 1; } @@ -997,10 +1009,12 @@ int main(int argc, char *argv[]) { log_error("Failed to seek to cursor: %s", strerror(-r)); goto finish; } + if (!arg_reverse) + r = sd_journal_next(j); + else + r = sd_journal_previous(j); - r = sd_journal_next(j); - - } else if (arg_since_set) { + } else if (arg_since_set && !arg_reverse) { r = sd_journal_seek_realtime_usec(j, arg_since); if (r < 0) { log_error("Failed to seek to date: %s", strerror(-r)); @@ -1008,6 +1022,14 @@ int main(int argc, char *argv[]) { } r = sd_journal_next(j); + } else if (arg_until_set && arg_reverse) { + r = sd_journal_seek_realtime_usec(j, arg_until); + if (r < 0) { + log_error("Failed to seek to date: %s", strerror(-r)); + goto finish; + } + r = sd_journal_previous(j); + } else if (arg_lines >= 0) { r = sd_journal_seek_tail(j); if (r < 0) { @@ -1017,6 +1039,15 @@ int main(int argc, char *argv[]) { r = sd_journal_previous_skip(j, arg_lines); + } else if (arg_reverse) { + r = sd_journal_seek_tail(j); + if (r < 0) { + log_error("Failed to seek to tail: %s", strerror(-r)); + goto finish; + } + + r = sd_journal_previous(j); + } else { r = sd_journal_seek_head(j); if (r < 0) { @@ -1061,7 +1092,10 @@ int main(int argc, char *argv[]) { int flags; if (need_seek) { - r = sd_journal_next(j); + if(!arg_reverse) + r = sd_journal_next(j); + else + r = sd_journal_previous(j); if (r < 0) { log_error("Failed to iterate through journal: %s", strerror(-r)); goto finish; @@ -1071,7 +1105,7 @@ int main(int argc, char *argv[]) { if (r == 0) break; - if (arg_until_set) { + if (arg_until_set && !arg_reverse) { usec_t usec; r = sd_journal_get_realtime_usec(j, &usec); @@ -1083,6 +1117,18 @@ int main(int argc, char *argv[]) { goto finish; } + if (arg_since_set && arg_reverse) { + usec_t usec; + + r = sd_journal_get_realtime_usec(j, &usec); + if (r < 0) { + log_error("Failed to determine timestamp: %s", strerror(-r)); + goto finish; + } + if (usec < arg_since) + goto finish; + } + if (!arg_merge) { sd_id128_t boot_id; -- cgit v1.2.1 From 82910f1358c1d15f4e432e6d1f42efdeaf1eddb1 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Wed, 27 Feb 2013 16:26:59 +0100 Subject: pager: add K to less environment Using less as a pager sometimes breaks terminal when output is interrupted by ctrl-c. Reproducer: run 'sudo journalctl' ctrl-c. Thanks mbriza@redhat.com for the solution. --- src/shared/pager.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/pager.c b/src/shared/pager.c index 488a12c763..5165d2b1c8 100644 --- a/src/shared/pager.c +++ b/src/shared/pager.c @@ -85,7 +85,7 @@ int pager_open(void) { dup2(fd[0], STDIN_FILENO); close_pipe(fd); - setenv("LESS", "FRSX", 0); + setenv("LESS", "FRSXK", 0); /* Make sure the pager goes away when the parent dies */ if (prctl(PR_SET_PDEATHSIG, SIGTERM) < 0) -- cgit v1.2.1 From 5522a1fa876f1ab94a2accaadca824799fdf2cab Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 1 Mar 2013 13:59:49 +0100 Subject: systemctl: try to reload daemon after enable/disable only when not running in a chroot http://lists.freedesktop.org/archives/systemd-devel/2013-February/009208.html --- src/systemctl/systemctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index c67c6c972a..418a80b6f0 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -3951,7 +3951,7 @@ static int enable_unit(DBusConnection *bus, char **args) { } /* Try to reload if enabeld */ - if (!arg_no_reload) + if (!arg_no_reload && running_in_chroot() <= 0) r = daemon_reload(bus, args); } -- cgit v1.2.1 From d6cb60c7a05f15ce3145080007bce602a6cb52ba Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 1 Mar 2013 14:04:18 +0100 Subject: Revert "systemctl: try to reload daemon after enable/disable only when not running in a chroot" This reverts commit 5522a1fa876f1ab94a2accaadca824799fdf2cab. I am an idiot, the chroot case was already filtered out, so no point in checking this again. --- src/systemctl/systemctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 418a80b6f0..c67c6c972a 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -3951,7 +3951,7 @@ static int enable_unit(DBusConnection *bus, char **args) { } /* Try to reload if enabeld */ - if (!arg_no_reload && running_in_chroot() <= 0) + if (!arg_no_reload) r = daemon_reload(bus, args); } -- cgit v1.2.1 From 242c4e1cc4d6419043729904d7dd88b2b1283556 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 1 Mar 2013 14:07:20 +0100 Subject: path-lookup: downgrade again the messages where we log for units This partially reverts 7ad94c716d6403233d04c4d37cb14df958c9b65d. After that commit commands such as "systemctl enable" and friends printed the search path information multiple times in its output, which is ugly. If we want the search paths to be printed at a higher log level, then we should do this in PID 1 only, i.e. split the printing out of the normal path lookup logic and invoke that explicitly from PID 1 but not in the auxiliary tools. --- src/shared/path-lookup.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c index ffdc5367cb..6bb390fc90 100644 --- a/src/shared/path-lookup.c +++ b/src/shared/path-lookup.c @@ -325,9 +325,9 @@ int lookup_paths_init( char _cleanup_free_ *t = strv_join(p->unit_path, "\n\t"); if (!t) return -ENOMEM; - log_info("Looking for unit files in (higher priority first):\n\t%s", t); + log_debug("Looking for unit files in (higher priority first):\n\t%s", t); } else { - log_info("Ignoring unit files."); + log_debug("Ignoring unit files."); strv_free(p->unit_path); p->unit_path = NULL; } @@ -385,9 +385,9 @@ int lookup_paths_init( char _cleanup_free_ *t = strv_join(p->sysvinit_path, "\n\t"); if (!t) return -ENOMEM; - log_info("Looking for SysV init scripts in:\n\t%s", t); + log_debug("Looking for SysV init scripts in:\n\t%s", t); } else { - log_info("Ignoring SysV init scripts."); + log_debug("Ignoring SysV init scripts."); strv_free(p->sysvinit_path); p->sysvinit_path = NULL; } @@ -405,7 +405,7 @@ int lookup_paths_init( p->sysvrcnd_path = NULL; } #else - log_info("SysV init scripts and rcN.d links support disabled"); + log_debug("SysV init scripts and rcN.d links support disabled"); #endif } -- cgit v1.2.1 From ffa7cd15cd2a9e802827ef0f5762de6c22933c07 Mon Sep 17 00:00:00 2001 From: Daniel Wallace Date: Fri, 1 Mar 2013 14:39:04 +0100 Subject: journalctl: add --user-unit= switch Add --user-unit= to make it possible to query for user logs by the name of the service. --- man/journalctl.xml | 11 +++++++++++ shell-completion/systemd-bash-completion.sh | 5 ++++- shell-completion/systemd-zsh-completion.zsh | 1 + src/journal/journalctl.c | 13 ++++++++++++- 4 files changed, 28 insertions(+), 2 deletions(-) diff --git a/man/journalctl.xml b/man/journalctl.xml index ca940fec7e..e2740e4213 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -313,6 +313,17 @@ unit. + + + + Show data only of the + specified user session unit. This will + add a match for + _SYSTEMD_USER_UNIT= + for the specified + unit. + + diff --git a/shell-completion/systemd-bash-completion.sh b/shell-completion/systemd-bash-completion.sh index 7848bafc17..40e66e9d10 100644 --- a/shell-completion/systemd-bash-completion.sh +++ b/shell-completion/systemd-bash-completion.sh @@ -300,7 +300,7 @@ _journalctl() { -h --help -l --local --new-id128 -m --merge --no-pager --no-tail -q --quiet --setup-keys --this-boot --verify --version --list-catalog --update-catalog' - [ARG]='-D --directory -F --field -o --output -u --unit' + [ARG]='-D --directory -F --field -o --output -u --unit --user-unit' [ARGUNKNOWN]='-c --cursor --interval -n --lines -p --priority --since --until --verify-key' ) @@ -320,6 +320,9 @@ _journalctl() { --unit|-u) comps=$(journalctl -F '_SYSTEMD_UNIT') ;; + --user-unit) + comps=$(journalctl -F '_SYSTEMD_USER_UNIT') + ;; *) return 0 ;; diff --git a/shell-completion/systemd-zsh-completion.zsh b/shell-completion/systemd-zsh-completion.zsh index 177a564d38..46e29b217a 100644 --- a/shell-completion/systemd-zsh-completion.zsh +++ b/shell-completion/systemd-zsh-completion.zsh @@ -70,6 +70,7 @@ _ctls() {-c,--cursor=}'[Start showing entries from specified cursor]:cursors:_journal_fields __CURSORS' \ {-b,--this-boot}'[Show data only from current boot]' \ {-u,--unit=}'[Show data only from the specified unit]:units:_journal_fields _SYSTEMD_UNIT' \ + '--user-unit[Show data only from the specified user session unit]:units:_journal_fields _SYSTEMD_USER_UNIT' \ {-p,--priority=}'[Show only messages within the specified priority range]:priority:_journal_fields PRIORITY' \ {-f,--follow}'[Follow journal]' \ {-n,--lines=}'[Number of journal entries to show]:integer' \ diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 4c9862fa6c..d898ae7179 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -75,6 +75,7 @@ static usec_t arg_interval = DEFAULT_FSS_INTERVAL_USEC; static usec_t arg_since, arg_until; static bool arg_since_set = false, arg_until_set = false; static const char *arg_unit = NULL; +static const char *arg_unit_type = NULL; static const char *arg_field = NULL; static bool arg_catalog = false; static bool arg_reverse = false; @@ -100,6 +101,7 @@ static int help(void) { " -c --cursor=CURSOR Start showing entries from specified cursor\n" " -b --this-boot Show data only from current boot\n" " -u --unit=UNIT Show data only from the specified unit\n" + " --user-unit=UNIT Show data only from the specified user session unit\n" " -p --priority=RANGE Show only messages within the specified priority range\n" " -f --follow Follow journal\n" " -n --lines[=INTEGER] Number of journal entries to show\n" @@ -152,6 +154,7 @@ static int parse_argv(int argc, char *argv[]) { ARG_DISK_USAGE, ARG_SINCE, ARG_UNTIL, + ARG_USER_UNIT, ARG_LIST_CATALOG, ARG_UPDATE_CATALOG }; @@ -181,6 +184,7 @@ static int parse_argv(int argc, char *argv[]) { { "cursor", required_argument, NULL, 'c' }, { "since", required_argument, NULL, ARG_SINCE }, { "until", required_argument, NULL, ARG_UNTIL }, + { "user-unit", required_argument, NULL, ARG_USER_UNIT }, { "unit", required_argument, NULL, 'u' }, { "field", required_argument, NULL, 'F' }, { "catalog", no_argument, NULL, 'x' }, @@ -404,8 +408,14 @@ static int parse_argv(int argc, char *argv[]) { arg_until_set = true; break; + case ARG_USER_UNIT: + arg_unit = optarg; + arg_unit_type = "_SYSTEMD_USER_UNIT="; + break; + case 'u': arg_unit = optarg; + arg_unit_type = "_SYSTEMD_UNIT="; break; case '?': @@ -583,7 +593,8 @@ static int add_unit(sd_journal *j) { if (!u) return log_oom(); - m = strappend("_SYSTEMD_UNIT=", u); + m = strappend(arg_unit_type, u); + if (!m) return log_oom(); -- cgit v1.2.1 From 3f8ee7918207d7128d4edbc20a1e81f4c6e1110e Mon Sep 17 00:00:00 2001 From: Frederic Crozat Date: Thu, 21 Feb 2013 16:09:40 +0100 Subject: fstab,mount: detect rbind as bind mount Correctly detect rbind mount option as bind mount. Fixes https://bugzilla.novell.com/show_bug.cgi?id=804575. --- src/core/mount.c | 6 ++++++ src/fstab-generator/fstab-generator.c | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/core/mount.c b/src/core/mount.c index e3d298eb96..419cf27a88 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -329,6 +329,12 @@ static bool mount_is_bind(MountParameters *p) { if (p->fstype && streq(p->fstype, "bind")) return true; + if (mount_test_option(p->options, "rbind")) + return true; + + if (p->fstype && streq(p->fstype, "rbind")) + return true; + return false; } diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index bfeddedf62..9db4123530 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -178,7 +178,9 @@ static bool mount_is_bind(struct mntent *me) { return hasmntopt(me, "bind") || - streq(me->mnt_type, "bind"); + streq(me->mnt_type, "bind") || + hasmntopt(me, "rbind") || + streq(me->mnt_type, "rbind"); } static bool mount_is_network(struct mntent *me) { -- cgit v1.2.1 From 487060c2394b7703e59650ef332053645ffae2a3 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 1 Mar 2013 14:54:55 +0100 Subject: specifier: when resolving specifier strings when loading configuration, don't misunderstand parse failures as OOM http://lists.freedesktop.org/archives/systemd-devel/2013-February/009179.html --- TODO | 2 ++ src/core/load-fragment.c | 57 +++++++++++++++++++++++++++++------------------- 2 files changed, 37 insertions(+), 22 deletions(-) diff --git a/TODO b/TODO index 2366470ae5..168913beb0 100644 --- a/TODO +++ b/TODO @@ -49,6 +49,8 @@ Fedora 19: Features: +* rework specifier logic so that we can distuingish OOM errors from other errors + * systemd-inhibit: refuse taking delay locks * journal-or-kmsg is currently broken? See reverted commit 4a01181e460686d8b4a543b1dfa7f77c9e3c5ab8. diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index d79e1d936c..2204c67a4b 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -127,9 +127,10 @@ int config_parse_unit_string_printf( k = unit_full_printf(u, rvalue); if (!k) - return log_oom(); + log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.", + filename, line, rvalue); - return config_parse_string(filename, line, section, lvalue, ltype, k, data, userdata); + return config_parse_string(filename, line, section, lvalue, ltype, k ? k : rvalue, data, userdata); } int config_parse_unit_strv_printf( @@ -152,9 +153,10 @@ int config_parse_unit_strv_printf( k = unit_full_printf(u, rvalue); if (!k) - return log_oom(); + log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.", + filename, line, rvalue); - return config_parse_strv(filename, line, section, lvalue, ltype, k, data, userdata); + return config_parse_strv(filename, line, section, lvalue, ltype, k ? k : rvalue, data, userdata); } int config_parse_unit_path_printf( @@ -177,9 +179,10 @@ int config_parse_unit_path_printf( k = unit_full_printf(u, rvalue); if (!k) - return log_oom(); + log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.", + filename, line, rvalue); - return config_parse_path(filename, line, section, lvalue, ltype, k, data, userdata); + return config_parse_path(filename, line, section, lvalue, ltype, k ? k : rvalue, data, userdata); } int config_parse_socket_listen( @@ -217,8 +220,13 @@ int config_parse_socket_listen( p->type = ltype; p->path = unit_full_printf(UNIT(s), rvalue); if (!p->path) { - free(p); - return log_oom(); + p->path = strdup(rvalue); + if (!p->path) { + free(p); + return log_oom(); + } else + log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.", + filename, line, rvalue); } path_kill_slashes(p->path); @@ -229,12 +237,11 @@ int config_parse_socket_listen( p->type = SOCKET_SOCKET; k = unit_full_printf(UNIT(s), rvalue); - if (!k) { - free(p); - return log_oom(); - } + if (!k) + log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.", + filename, line, rvalue); - r = socket_address_parse_netlink(&p->address, k); + r = socket_address_parse_netlink(&p->address, k ? k : rvalue); if (r < 0) { log_error("[%s:%u] Failed to parse address value, ignoring: %s", filename, line, rvalue); free(p); @@ -247,12 +254,11 @@ int config_parse_socket_listen( p->type = SOCKET_SOCKET; k = unit_full_printf(UNIT(s), rvalue); - if (!k) { - free(p); - return log_oom(); - } + if (!k) + log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.", + filename, line, rvalue); - r = socket_address_parse(&p->address, k); + r = socket_address_parse(&p->address, k ? k : rvalue); if (r < 0) { log_error("[%s:%u] Failed to parse address value, ignoring: %s", filename, line, rvalue); free(p); @@ -995,9 +1001,10 @@ int config_parse_unit_cgroup( k = unit_full_printf(u, t); if (!k) - return log_oom(); + log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.", + filename, line, t); - ku = cunescape(k); + ku = cunescape(k ? k : t); if (!ku) return log_oom(); @@ -1284,8 +1291,14 @@ int config_parse_path_spec( } k = unit_full_printf(UNIT(p), rvalue); - if (!k) - return log_oom(); + if (!k) { + k = strdup(rvalue); + if (!k) + return log_oom(); + else + log_error("[%s:%u] Failed to resolve unit specifiers on %s. Ignoring.", + filename, line, rvalue); + } if (!path_is_absolute(k)) { log_error("[%s:%u] Path is not absolute, ignoring: %s", filename, line, k); -- cgit v1.2.1 From e2cb60fa97e6a6483a98b685ff0d20c61da38c00 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Fri, 1 Mar 2013 11:33:14 +0100 Subject: cryptsetup-generator: fix the kernel command line strategy for luks.uuid If rd.luks.uuid or luks.uuid is specified on the kernel command, only generate units for these UUIDs. Additionally use the information in /etc/crypttab unless rd.luks.crypttab=0 or luks.crypttab=0 is specified. --- src/cryptsetup/cryptsetup-generator.c | 145 +++++++++++++++++++++++----------- 1 file changed, 99 insertions(+), 46 deletions(-) diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index f416675ba0..38a7cfa0b6 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -329,6 +329,8 @@ static int parse_proc_cmdline(void) { free(word); } + strv_uniq(arg_proc_cmdline_disks); + r = 0; finish: @@ -341,6 +343,7 @@ int main(int argc, char *argv[]) { int r = EXIT_SUCCESS; unsigned n = 0; char **i; + char **arg_proc_cmdline_disks_done = NULL; if (argc > 1 && argc != 4) { log_error("This program takes three or no arguments."); @@ -364,76 +367,125 @@ int main(int argc, char *argv[]) { goto finish; } - STRV_FOREACH(i, arg_proc_cmdline_disks) { - char *name, *device; - const char *p = *i; + if (arg_read_crypttab) { + f = fopen("/etc/crypttab", "re"); - if (startswith(p, "luks-")) - p += 5; - - name = strappend("luks-", p); - device = strappend("UUID=", p); + if (!f) { + if (errno == ENOENT) + r = EXIT_SUCCESS; + else { + r = EXIT_FAILURE; + log_error("Failed to open /etc/crypttab: %m"); + } - if (!name || !device) { - log_oom(); - r = EXIT_FAILURE; - free(name); - free(device); goto finish; } - if (create_disk(name, device, NULL, NULL) < 0) - r = EXIT_FAILURE; + for (;;) { + char line[LINE_MAX], *l; + char *name = NULL, *device = NULL, *password = NULL, *options = NULL; + int k; - free(name); - free(device); - } + if (!fgets(line, sizeof(line), f)) + break; - if (!arg_read_crypttab) - return r; + n++; - f = fopen("/etc/crypttab", "re"); - if (!f) { + l = strstrip(line); + if (*l == '#' || *l == 0) + continue; - if (errno == ENOENT) - r = EXIT_SUCCESS; - else { - r = EXIT_FAILURE; - log_error("Failed to open /etc/crypttab: %m"); - } + k = sscanf(l, "%ms %ms %ms %ms", &name, &device, &password, &options); + if (k < 2 || k > 4) { + log_error("Failed to parse /etc/crypttab:%u, ignoring.", n); + r = EXIT_FAILURE; + goto next; + } - goto finish; + if (arg_proc_cmdline_disks) { + /* + If luks UUIDs are specified on the kernel command line, use them as a filter + for /etc/crypttab and only generate units for those. + */ + STRV_FOREACH(i, arg_proc_cmdline_disks) { + char *proc_device, *proc_name; + const char *p = *i; + + if (startswith(p, "luks-")) + p += 5; + + proc_name = strappend("luks-", p); + proc_device = strappend("UUID=", p); + + if (!proc_name || !proc_device) { + log_oom(); + r = EXIT_FAILURE; + free(proc_name); + free(proc_device); + goto finish; + } + if (streq(proc_device, device) || streq(proc_name, name)) { + char **t; + + if (create_disk(name, device, password, options) < 0) + r = EXIT_FAILURE; + + t = strv_append(arg_proc_cmdline_disks_done, p); + if (!t) { + r = log_oom(); + goto finish; + } + strv_free(arg_proc_cmdline_disks_done); + arg_proc_cmdline_disks_done = t; + } + + free(proc_device); + free(proc_name); + } + } else { + if (create_disk(name, device, password, options) < 0) + r = EXIT_FAILURE; + } + + next: + free(name); + free(device); + free(password); + free(options); + } } - for (;;) { - char line[LINE_MAX], *l; - char *name = NULL, *device = NULL, *password = NULL, *options = NULL; - int k; + STRV_FOREACH(i, arg_proc_cmdline_disks) { + /* + Generate units for those UUIDs, which were specified + on the kernel command line and not yet written. + */ - if (!fgets(line, sizeof(line), f)) - break; + char *name, *device; + const char *p = *i; - n++; + if (startswith(p, "luks-")) + p += 5; - l = strstrip(line); - if (*l == '#' || *l == 0) + if (strv_contains(arg_proc_cmdline_disks_done, p)) continue; - k = sscanf(l, "%ms %ms %ms %ms", &name, &device, &password, &options); - if (k < 2 || k > 4) { - log_error("Failed to parse /etc/crypttab:%u, ignoring.", n); + name = strappend("luks-", p); + device = strappend("UUID=", p); + + if (!name || !device) { + log_oom(); r = EXIT_FAILURE; - goto next; + free(name); + free(device); + goto finish; } - if (create_disk(name, device, password, options) < 0) + if (create_disk(name, device, NULL, "timeout=0") < 0) r = EXIT_FAILURE; - next: free(name); free(device); - free(password); - free(options); } finish: @@ -441,6 +493,7 @@ finish: fclose(f); strv_free(arg_proc_cmdline_disks); + strv_free(arg_proc_cmdline_disks_done); return r; } -- cgit v1.2.1 From 5a82a91a9904059c174232f1a534a160b5f61c0e Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Fri, 1 Mar 2013 14:57:16 +0100 Subject: manager: prevent segfault in manager_print_jobs_in_progress() --- src/core/manager.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/core/manager.c b/src/core/manager.c index ec12a75371..5527e9d429 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -269,6 +269,9 @@ static void manager_print_jobs_in_progress(Manager *m) { if (j->state == JOB_RUNNING && counter++ == print_nr) break; + if (!j) + return; + cylon_pos = m->jobs_in_progress_iteration % 14; if (cylon_pos >= 8) cylon_pos = 14 - cylon_pos; -- cgit v1.2.1 From 92094b75fb8629492cddab1677a29830a7d96811 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Fri, 1 Mar 2013 14:58:32 +0100 Subject: fstab-generator: parse_new_root_from_proc_cmdline() don't use "defaults" Don't use "defaults" as default option string. "defaults," does not even work for the mount unit mount options. --- src/fstab-generator/fstab-generator.c | 1 - 1 file changed, 1 deletion(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 9db4123530..d4470f4fb8 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -449,7 +449,6 @@ static int parse_new_root_from_proc_cmdline(void) { return 0; } - opts = strdup("defaults"); type = strdup("auto"); if (!opts || !type) return log_oom(); -- cgit v1.2.1 From bf6dcfa6a79a459239799a21bdcba115d696a006 Mon Sep 17 00:00:00 2001 From: Oleksii Shevchuk Date: Thu, 14 Feb 2013 00:49:26 +0200 Subject: unit: fix the race in deserialization. unit_notify is fired in deserelization code (particulary in service_set_state). Units passed in random order, and there is possibility, that unit with StopWhenUnneeded=yes passed before it actual dependecies. In that case unit will be stopped as unneeded, because deps in UNIT_INACTIVE state yet. So, reuse similar logic (unit.c:1421) to avoid this race --- src/core/unit.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/unit.c b/src/core/unit.c index e2c06ae8b6..601be60ed0 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1517,7 +1517,8 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su /* Maybe we finished startup and are now ready for being * stopped because unneeded? */ - unit_check_unneeded(u); + if (u->manager->n_reloading <= 0) + unit_check_unneeded(u); unit_add_to_dbus_queue(u); unit_add_to_gc_queue(u); -- cgit v1.2.1 From 3fb5a0feb4bbbc670c212acc9e6fcfb46465cc2f Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Fri, 1 Mar 2013 17:05:58 +0100 Subject: fstab-generator: fix commit 92094b7 --- src/fstab-generator/fstab-generator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index d4470f4fb8..af7276daa7 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -450,7 +450,7 @@ static int parse_new_root_from_proc_cmdline(void) { } type = strdup("auto"); - if (!opts || !type) + if (!type) return log_oom(); /* root= and roofstype= may occur more than once, the last instance should take precedence. -- cgit v1.2.1 From 945d1442ed5d6cf50b0d0a45fe482130f74f2997 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Fri, 1 Mar 2013 17:49:06 +0100 Subject: fstab-generator: set "ro" as default for sysroot.mount --- src/fstab-generator/fstab-generator.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index af7276daa7..5c34de1155 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -449,8 +449,9 @@ static int parse_new_root_from_proc_cmdline(void) { return 0; } + opts = strdup("ro"); type = strdup("auto"); - if (!type) + if (!opts || !type) return log_oom(); /* root= and roofstype= may occur more than once, the last instance should take precedence. -- cgit v1.2.1 From 9e9e2b722cf796b58e959cd174d87ce0ec0bc996 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 1 Mar 2013 14:47:46 +0100 Subject: core: fix running jobs counters after reload/reexec All active units will call unit_notify() during coldplug, so we just make sure we're counting from zero again and get the correct result for n_on_console. For n_running_jobs we likewise reset it to zero and then count the running jobs as we encounter them in deserialization. --- src/core/manager.c | 3 +++ src/core/unit.c | 8 +++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/core/manager.c b/src/core/manager.c index 5527e9d429..42423985bc 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -678,6 +678,9 @@ static void manager_clear_jobs_and_units(Manager *m) { assert(hashmap_isempty(m->jobs)); assert(hashmap_isempty(m->units)); + + m->n_on_console = 0; + m->n_running_jobs = 0; } void manager_free(Manager *m) { diff --git a/src/core/unit.c b/src/core/unit.c index 601be60ed0..2f0ac00fcf 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1360,11 +1360,6 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su if (UNIT_IS_INACTIVE_OR_FAILED(os) != UNIT_IS_INACTIVE_OR_FAILED(ns)) { ExecContext *ec = unit_get_exec_context(u); if (ec && exec_context_may_touch_console(ec)) { - /* XXX The counter may get out of sync if the admin edits - * TTY-related unit file properties and issues a daemon-reload - * while the unit is active. No big deal though, because - * it influences only the printing of boot/shutdown - * status messages. */ if (UNIT_IS_INACTIVE_OR_FAILED(ns)) m->n_on_console--; else @@ -2446,6 +2441,9 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) { return r; } + if (j->state == JOB_RUNNING) + u->manager->n_running_jobs++; + r = job_install_deserialized(j); if (r < 0) { hashmap_remove(u->manager->jobs, UINT32_TO_PTR(j->id)); -- cgit v1.2.1 From 41be2ca14d34b67776240bc67facf341b156b974 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 1 Mar 2013 15:19:00 +0100 Subject: coredump: bump coredump truncation size from 24M to 768M In the long run we really should make this runtime configurable. --- src/journal/coredump.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/journal/coredump.c b/src/journal/coredump.c index 021b4c6651..bada8487c4 100644 --- a/src/journal/coredump.c +++ b/src/journal/coredump.c @@ -37,7 +37,7 @@ #include "special.h" #include "cgroup-util.h" -#define COREDUMP_MAX (24*1024*1024) +#define COREDUMP_MAX (768*1024*1024) enum { ARG_PID = 1, -- cgit v1.2.1 From 41330ddb033f2cbeeb565e43708be91d5df28fb2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= Date: Sun, 17 Feb 2013 21:00:34 +0200 Subject: inhibit: make the output more readable The columnar output can become pretty horrible. When GNOME inhibits power/suspend/hibernate keys, the "WHAT" column's text extends to "WHO" and even "WHY". At the same time, all texts in "WHY" are of the form GNOME handlin...sses Receiving sle...ions GNOME needs t...reen This patch splits each inhibit entry into four lines, allowing the full text to fit in a normal-width terminal. --- src/login/inhibit.c | 27 +++++++++------------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/src/login/inhibit.c b/src/login/inhibit.c index 9b6613340f..586582190e 100644 --- a/src/login/inhibit.c +++ b/src/login/inhibit.c @@ -99,18 +99,9 @@ static int print_inhibitors(DBusConnection *bus, DBusError *error) { goto finish; } - printf("%-21s %-20s %-20s %-5s %6s %6s\n", - "WHAT", - "WHO", - "WHY", - "MODE", - "UID", - "PID"); - dbus_message_iter_recurse(&iter, &sub); while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { const char *what, *who, *why, *mode; - char *ewho, *ewhy; dbus_uint32_t uid, pid; if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) { @@ -130,21 +121,21 @@ static int print_inhibitors(DBusConnection *bus, DBusError *error) { goto finish; } - ewho = ellipsize(who, 20, 66); - ewhy = ellipsize(why, 20, 66); - - printf("%-21s %-20s %-20s %-5s %6lu %6lu\n", - what, ewho ? ewho : who, ewhy ? ewhy : why, mode, (unsigned long) uid, (unsigned long) pid); - - free(ewho); - free(ewhy); + printf(" Who: %s (UID %lu, PID %lu)\n" + " What: %s\n" + " Why: %s\n" + " Mode: %s\n\n", + who, (unsigned long) uid, (unsigned long) pid, + what, + why, + mode); dbus_message_iter_next(&sub); n++; } - printf("\n%u inhibitors listed.\n", n); + printf("%u inhibitors listed.\n", n); r = 0; finish: -- cgit v1.2.1 From 9058482225a046dc66406ba4cf4250612eca3794 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 1 Mar 2013 19:21:47 +0100 Subject: update TODO --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index 168913beb0..17b508149e 100644 --- a/TODO +++ b/TODO @@ -49,6 +49,8 @@ Fedora 19: Features: +* remove "rootwait" support from fstab generator + * rework specifier logic so that we can distuingish OOM errors from other errors * systemd-inhibit: refuse taking delay locks -- cgit v1.2.1 From 533740e16118147ca1c066d641654d975ab6e169 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Fri, 1 Mar 2013 21:15:51 +0100 Subject: fstab-generator: drop rootwait support I originally added this to stay as compatible as possible with the kernel, but as Lennart argued it is not really useful in the initramfs, so let's drop it (we already don't support 'rootdealy'). --- TODO | 2 -- src/fstab-generator/fstab-generator.c | 19 ++++++------------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/TODO b/TODO index 17b508149e..168913beb0 100644 --- a/TODO +++ b/TODO @@ -49,8 +49,6 @@ Fedora 19: Features: -* remove "rootwait" support from fstab generator - * rework specifier logic so that we can distuingish OOM errors from other errors * systemd-inhibit: refuse taking delay locks diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 5c34de1155..23a8d79813 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -192,7 +192,7 @@ static bool mount_is_network(struct mntent *me) { } static int add_mount(const char *what, const char *where, const char *type, const char *opts, - int passno, bool wait, bool noauto, bool nofail, bool automount, bool isbind, bool isnetwork, + int passno, bool noauto, bool nofail, bool automount, bool isbind, bool isnetwork, const char *source) { char _cleanup_free_ *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL, @@ -284,10 +284,6 @@ static int add_mount(const char *what, const char *where, const char *type, cons "Options=%s\n", opts); - if (wait) - fprintf(f, - "TimeoutSec=0\n"); - fflush(f); if (ferror(f)) { log_error("Failed to write unit file %s: %m", unit); @@ -422,9 +418,8 @@ static int parse_fstab(void) { isnetwork = mount_is_network(me); k = add_mount(what, where, me->mnt_type, me->mnt_opts, - me->mnt_passno, false, noauto, nofail, - automount, isbind, isnetwork, - "/etc/fstab"); + me->mnt_passno, noauto, nofail, automount, + isbind, isnetwork, "/etc/fstab"); } if (k < 0) @@ -441,7 +436,6 @@ static int parse_new_root_from_proc_cmdline(void) { _cleanup_free_ char *what = NULL, *type = NULL, *opts = NULL, *line = NULL; int r; size_t l; - bool wait = false; r = read_one_line_file("/proc/cmdline", &line); if (r < 0) { @@ -489,8 +483,7 @@ static int parse_new_root_from_proc_cmdline(void) { if (!opts) return log_oom(); - } else if (streq(word, "rootwait")) - wait = true; + } free(word); } @@ -498,8 +491,8 @@ static int parse_new_root_from_proc_cmdline(void) { if (what) { log_debug("Found entry what=%s where=/sysroot type=%s", what, type); - r = add_mount(what, "/sysroot", type, opts, 0, wait, false, false, - false, false, false, "/proc/cmdline"); + r = add_mount(what, "/sysroot", type, opts, 0, false, false, false, + false, false, "/proc/cmdline"); if (r < 0) return r; -- cgit v1.2.1 From 684ecf306a2a9749fd4be28170b7d83252e7c590 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Fri, 1 Mar 2013 18:29:57 +0100 Subject: systemd-python: add missing check for return of PyDict_SetItem in _reader.c --- src/python-systemd/_reader.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 7f200d53f6..d3d45cc015 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -208,7 +208,7 @@ static PyObject* Reader_get_next(Reader *self, PyObject *args) if (r < 0) goto error; - PyDict_SetItem(dict, key, tmp_list); + r = PyDict_SetItem(dict, key, tmp_list); if (r < 0) goto error; } -- cgit v1.2.1 From 45348240358d29c43f8d943b6c8f07dec5fbdb56 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Fri, 1 Mar 2013 18:30:00 +0100 Subject: systemd-analyze: free unit_times only if it is not NULL --- src/analyze/systemd-analyze.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c index b7e16706cd..7603cc0de4 100644 --- a/src/analyze/systemd-analyze.c +++ b/src/analyze/systemd-analyze.c @@ -237,9 +237,11 @@ static int acquire_time_data(DBusConnection *bus, struct unit_times **out) *out = unit_times; return c; fail: - for (; c >= 0; c--) - free(unit_times[c].name); - free(unit_times); + if (unit_times) { + for (; c >= 0; c--) + free(unit_times[c].name); + free(unit_times); + } return r; } -- cgit v1.2.1 From 34bf02818d06343982a06a1c33d165190e918d0d Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Fri, 1 Mar 2013 18:30:01 +0100 Subject: manager: print p and then free it --- src/core/manager.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/manager.c b/src/core/manager.c index 42423985bc..d976581c96 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -2479,9 +2479,9 @@ static int create_generator_dir(Manager *m, char **generator, const char *name) return log_oom(); if (!mkdtemp(p)) { - free(p); log_error("Failed to create generator directory %s: %m", p); + free(p); return -errno; } } -- cgit v1.2.1 From fea9740ae463c409b84a38d2592d434c2875975b Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Fri, 1 Mar 2013 18:29:58 +0100 Subject: systemctl: check if iterator was initialized succesfully --- src/systemctl/systemctl.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index c67c6c972a..99286cfc75 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -2084,7 +2084,11 @@ static int get_cgroup_attr(DBusConnection *bus, char **args) { if (r < 0) return r; - dbus_message_iter_init(reply, &iter); + if (!dbus_message_iter_init(reply, &iter)) { + log_error("Failed to initialize iterator."); + return -EIO; + } + r = bus_parse_strv_iter(&iter, &list); if (r < 0) { log_error("Failed to parse value list."); -- cgit v1.2.1 From 3d22d1ab57bf44c92e4d9ca95d9728105dd3fb0d Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Fri, 22 Feb 2013 11:52:36 +0100 Subject: fstab-generator: initrd - mount selected entries from /sysroot/etc/fstab We only mount "/usr" and entries marked with "x-initrd.mount". This (together with the right unit files) is needed in the initramfs in order to natively support mounting /usr (and friends) from the initramfs. The way it is meant to work is: * wait for sysroot.mount to be mounted * do a daemon-reload to generate sysroot-usr.mount (++) from /sysroot/etc/fstab * wait for sysroot-usr.mount to be mounted * switch-root Cc: Harald Hoyer Cc: Dave Reisner --- src/fstab-generator/fstab-generator.c | 39 +++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 23a8d79813..1a1fe8605f 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -191,6 +191,14 @@ static bool mount_is_network(struct mntent *me) { fstype_is_network(me->mnt_type); } +static bool mount_in_initrd(struct mntent *me) { + assert(me); + + return + hasmntopt(me, "x-initrd.mount") || + streq(me->mnt_dir, "/usr"); +} + static int add_mount(const char *what, const char *where, const char *type, const char *opts, int passno, bool noauto, bool nofail, bool automount, bool isbind, bool isnetwork, const char *source) { @@ -342,13 +350,14 @@ static int add_mount(const char *what, const char *where, const char *type, cons fprintf(f, "# Automatically generated by systemd-fstab-generator\n\n" "[Unit]\n" - "SourcePath=/etc/fstab\n" + "SourcePath=%s\n" "DefaultDependencies=no\n" "Conflicts=" SPECIAL_UMOUNT_TARGET "\n" "Before=" SPECIAL_UMOUNT_TARGET " %s\n" "\n" "[Automount]\n" "Where=%s\n", + source, post, where); @@ -373,18 +382,20 @@ static int add_mount(const char *what, const char *where, const char *type, cons return 0; } -static int parse_fstab(void) { +static int parse_fstab(const char *prefix, bool initrd) { FILE *f; + _cleanup_free_ char *fstab_path = NULL; int r = 0; struct mntent *me; errno = 0; - f = setmntent("/etc/fstab", "r"); + fstab_path = strjoin(prefix, "/etc/fstab", NULL); + f = setmntent(fstab_path, "r"); if (!f) { if (errno == ENOENT) return 0; - log_error("Failed to open /etc/fstab: %m"); + log_error("Failed to open %s/etc/fstab: %m", prefix); return -errno; } @@ -392,8 +403,11 @@ static int parse_fstab(void) { char _cleanup_free_ *where = NULL, *what = NULL; int k; + if (initrd && !mount_in_initrd(me)) + continue; + what = fstab_node_to_udev_node(me->mnt_fsname); - where = strdup(me->mnt_dir); + where = strjoin(prefix, me->mnt_dir, NULL); if (!what || !where) { r = log_oom(); goto finish; @@ -419,7 +433,7 @@ static int parse_fstab(void) { k = add_mount(what, where, me->mnt_type, me->mnt_opts, me->mnt_passno, noauto, nofail, automount, - isbind, isnetwork, "/etc/fstab"); + isbind, isnetwork, fstab_path); } if (k < 0) @@ -552,7 +566,7 @@ static int parse_proc_cmdline(void) { } int main(int argc, char *argv[]) { - int r, k = 0; + int r = 0, k, l = 0; if (argc > 1 && argc != 4) { log_error("This program takes three or no arguments."); @@ -572,12 +586,15 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; if (in_initrd()) - k = parse_new_root_from_proc_cmdline(); + r = parse_new_root_from_proc_cmdline(); if (!arg_enabled) - return EXIT_SUCCESS; + return (r < 0) ? EXIT_FAILURE : EXIT_SUCCESS; - r = parse_fstab(); + k = parse_fstab("", false); + + if (in_initrd()) + l = parse_fstab("/sysroot", true); - return (r < 0) || (k < 0) ? EXIT_FAILURE : EXIT_SUCCESS; + return (r < 0) || (k < 0) || (l < 0) ? EXIT_FAILURE : EXIT_SUCCESS; } -- cgit v1.2.1 From cf843477946451fabf9b5d17eec8ec81515057b6 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Sun, 24 Feb 2013 17:40:36 +0100 Subject: initrd: add unit files needed for basic systemd-in-initrd support This will: * mount all configured filesystems (typically the rootfs on /sysroot) * reload the configuration to pick up anything from the mounted fs (typically /sysroot/etc/fstab) * mount any newly configured filesystems (typically /usr on /sysroot/usr, if applicable) * shut-down and clean-up any daemons running in the initramfs (typically udevd) * switch-root to /sysroot and start the real init For an example of what files should be included in an initramfs based on this see . Cc: Harald Hoyer Cc: Dave Reisner --- Makefile.am | 7 ++++++- units/initrd-cleanup.service | 18 ++++++++++++++++++ units/initrd-parse-etc.service | 19 +++++++++++++++++++ units/initrd-switch-root.service | 19 +++++++++++++++++++ units/initrd-switch-root.target | 16 ++++++++++++++++ units/initrd-udevadm-cleanup-db.service | 18 ++++++++++++++++++ 6 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 units/initrd-cleanup.service create mode 100644 units/initrd-parse-etc.service create mode 100644 units/initrd-switch-root.service create mode 100644 units/initrd-switch-root.target create mode 100644 units/initrd-udevadm-cleanup-db.service diff --git a/Makefile.am b/Makefile.am index 790e5014be..b69794994d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -379,7 +379,12 @@ dist_systemunit_DATA = \ units/systemd-ask-password-console.path \ units/systemd-udevd-control.socket \ units/systemd-udevd-kernel.socket \ - units/system-update.target + units/system-update.target \ + units/initrd-parse-etc.service \ + units/initrd-cleanup.service \ + units/initrd-switch-root.target \ + units/initrd-udevadm-cleanup-db.service \ + units/initrd-switch-root.service nodist_systemunit_DATA = \ units/getty@.service \ diff --git a/units/initrd-cleanup.service b/units/initrd-cleanup.service new file mode 100644 index 0000000000..89986964ea --- /dev/null +++ b/units/initrd-cleanup.service @@ -0,0 +1,18 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Cleaning Up and Shutting Down Daemons +DefaultDependencies=no +ConditionPathExists=/etc/initrd-release +OnFailure=emergency.target +Requires=local-fs.target swap.target +After=local-fs.target swap.target + +[Service] +Type=oneshot +ExecStart=/usr/bin/systemctl --no-block isolate initrd-switch-root.target diff --git a/units/initrd-parse-etc.service b/units/initrd-parse-etc.service new file mode 100644 index 0000000000..4bfbb0f9fb --- /dev/null +++ b/units/initrd-parse-etc.service @@ -0,0 +1,19 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Reload Configuration from the Real Root +DefaultDependencies=no +Requires=local-fs.target swap.target +After=local-fs.target swap.target +OnFailure=emergency.target +ConditionPathExists=/etc/initrd-release + +[Service] +Type=oneshot +ExecStartPre=/usr/bin/systemctl daemon-reload +ExecStart=/usr/bin/systemctl --no-block start initrd-cleanup.service diff --git a/units/initrd-switch-root.service b/units/initrd-switch-root.service new file mode 100644 index 0000000000..e076b391de --- /dev/null +++ b/units/initrd-switch-root.service @@ -0,0 +1,19 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Switch Root +DefaultDependencies=no +ConditionPathExists=/etc/initrd-release +OnFailure=emergency.target +AllowIsolate=yes + +[Service] +Type=oneshot +# we have to use "--force" here, otherwise systemd would umount /run +ExecStart=/usr/bin/systemctl --no-block --force switch-root /sysroot +KillMode=none diff --git a/units/initrd-switch-root.target b/units/initrd-switch-root.target new file mode 100644 index 0000000000..f706d29ba6 --- /dev/null +++ b/units/initrd-switch-root.target @@ -0,0 +1,16 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Switch Root +ConditionPathExists=/etc/initrd-release +DefaultDependencies=no +Requires=initrd-switch-root.service +Before=initrd-switch-root.service +AllowIsolate=yes +Wants=initrd-udevadm-cleanup-db.service local-fs.target swap.target systemd-journald.service +After=initrd-udevadm-cleanup-db.service local-fs.target swap.target emergency.service emergency.target diff --git a/units/initrd-udevadm-cleanup-db.service b/units/initrd-udevadm-cleanup-db.service new file mode 100644 index 0000000000..983189e8b0 --- /dev/null +++ b/units/initrd-udevadm-cleanup-db.service @@ -0,0 +1,18 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Cleanup udevd DB +DefaultDependencies=no +ConditionPathExists=/etc/initrd-release +Conflicts=systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket +After=systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket +Before=initrd-switch-root.target + +[Service] +Type=oneshot +ExecStart=-/usr/bin/udevadm info --cleanup-db -- cgit v1.2.1 From 6b19ad24d3b6ade48d9e3d29e5348fc6b8d7c811 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Sat, 2 Mar 2013 12:29:04 +0100 Subject: unit: count deserialized job only after it's definitely installed Installation of a deserialized job may fail (though purely in theory), so increase the running job counter only when succeeding. --- src/core/unit.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/unit.c b/src/core/unit.c index 2f0ac00fcf..a6cc3b6102 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -2441,15 +2441,15 @@ int unit_deserialize(Unit *u, FILE *f, FDSet *fds) { return r; } - if (j->state == JOB_RUNNING) - u->manager->n_running_jobs++; - r = job_install_deserialized(j); if (r < 0) { hashmap_remove(u->manager->jobs, UINT32_TO_PTR(j->id)); job_free(j); return r; } + + if (j->state == JOB_RUNNING) + u->manager->n_running_jobs++; } else { /* legacy */ JobType type = job_type_from_string(v); -- cgit v1.2.1 From e970a72e94413d9011d510c97eadfdc85c96ccc0 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Sat, 2 Mar 2013 12:44:41 +0100 Subject: manager: turn a superfluous check into assert The crash that the check prevented has been fixed by commit 9e9e2b7. --- src/core/manager.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/manager.c b/src/core/manager.c index d976581c96..91d773c2f6 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -269,8 +269,9 @@ static void manager_print_jobs_in_progress(Manager *m) { if (j->state == JOB_RUNNING && counter++ == print_nr) break; - if (!j) - return; + /* m->n_running_jobs must be consistent with the contents of m->jobs, + * so the above loop must have succeeded in finding j. */ + assert(counter == print_nr + 1); cylon_pos = m->jobs_in_progress_iteration % 14; if (cylon_pos >= 8) -- cgit v1.2.1 From 076a24adf4bfbb9c5aa8167e102c253c7e1c651e Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Sat, 2 Mar 2013 13:16:27 +0100 Subject: job: print the "OK" status messages in normal green The "OK" status messages should not draw attention to themselves. It's better if they're not printed in bright/bold. Leave that to errors and warnings. Use a plain inconspicuous enterprisey green. --- src/core/job.c | 4 ++-- src/shared/util.h | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/job.c b/src/core/job.c index 90de550016..d5b7987a00 100644 --- a/src/core/job.c +++ b/src/core/job.c @@ -644,7 +644,7 @@ static void job_print_status_message(Unit *u, JobType t, JobResult result) { case JOB_DONE: if (u->condition_result) - unit_status_printf(u, ANSI_HIGHLIGHT_GREEN_ON " OK " ANSI_HIGHLIGHT_OFF, format); + unit_status_printf(u, ANSI_GREEN_ON " OK " ANSI_HIGHLIGHT_OFF, format); break; case JOB_FAILED: @@ -678,7 +678,7 @@ static void job_print_status_message(Unit *u, JobType t, JobResult result) { case JOB_DONE: case JOB_FAILED: - unit_status_printf(u, ANSI_HIGHLIGHT_GREEN_ON " OK " ANSI_HIGHLIGHT_OFF, format); + unit_status_printf(u, ANSI_GREEN_ON " OK " ANSI_HIGHLIGHT_OFF, format); break; default: diff --git a/src/shared/util.h b/src/shared/util.h index b5ad1ff3b5..27b21f97cc 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -57,6 +57,7 @@ union dirent_storage { #define ANSI_HIGHLIGHT_ON "\x1B[1;39m" #define ANSI_RED_ON "\x1B[31m" #define ANSI_HIGHLIGHT_RED_ON "\x1B[1;31m" +#define ANSI_GREEN_ON "\x1B[32m" #define ANSI_HIGHLIGHT_GREEN_ON "\x1B[1;32m" #define ANSI_HIGHLIGHT_YELLOW_ON "\x1B[1;33m" #define ANSI_HIGHLIGHT_OFF "\x1B[0m" -- cgit v1.2.1 From d611dadcc74db10ba533ee6859308f5fc505aee1 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Sat, 2 Mar 2013 22:34:01 +0100 Subject: bash-completion: split completions and move to new location Split the large bash completion script into separate, smaller files each named after the binary it is used for and move the files to /usr/share/bash-completion/completions. This way the completions can be loaded on demand and we only install the completions for the tools we actually build. The old path /etc/bash_completion.d/ is deprecated and will disappear in the future. --- Makefile.am | 19 +- shell-completion/bash/hostnamectl | 60 +++ shell-completion/bash/journalctl | 105 +++++ shell-completion/bash/localectl | 75 ++++ shell-completion/bash/loginctl | 108 +++++ shell-completion/bash/systemctl | 202 +++++++++ shell-completion/bash/systemd-coredumpctl | 84 ++++ shell-completion/bash/timedatectl | 75 ++++ shell-completion/bash/udevadm | 103 +++++ shell-completion/systemd-bash-completion.sh | 624 ---------------------------- 10 files changed, 829 insertions(+), 626 deletions(-) create mode 100644 shell-completion/bash/hostnamectl create mode 100644 shell-completion/bash/journalctl create mode 100644 shell-completion/bash/localectl create mode 100644 shell-completion/bash/loginctl create mode 100644 shell-completion/bash/systemctl create mode 100644 shell-completion/bash/systemd-coredumpctl create mode 100644 shell-completion/bash/timedatectl create mode 100644 shell-completion/bash/udevadm delete mode 100644 shell-completion/systemd-bash-completion.sh diff --git a/Makefile.am b/Makefile.am index b69794994d..6e12a43ddf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -64,7 +64,7 @@ pamlibdir=@pamlibdir@ pkgconfigdatadir=$(datadir)/pkgconfig pkgconfiglibdir=$(libdir)/pkgconfig polkitpolicydir=$(datadir)/polkit-1/actions -bashcompletiondir=$(sysconfdir)/bash_completion.d +bashcompletiondir=$(datadir)/bash-completion/completions rpmmacrosdir=$(sysconfdir)/rpm sysvinitdir=$(SYSTEM_SYSVINIT_PATH) sysvrcnddir=$(SYSTEM_SYSVRCND_PATH) @@ -316,7 +316,10 @@ systemd_analyze_LDADD = \ libsystemd-dbus.la dist_bashcompletion_DATA = \ - shell-completion/systemd-bash-completion.sh + shell-completion/bash/journalctl \ + shell-completion/bash/systemctl \ + shell-completion/bash/systemd-coredumpctl \ + shell-completion/bash/udevadm dist_tmpfiles_DATA = \ tmpfiles.d/systemd.conf \ @@ -2972,6 +2975,9 @@ hostnamectl_LDADD = \ bin_PROGRAMS += \ hostnamectl +dist_bashcompletion_DATA += \ + shell-completion/bash/hostnamectl + endif polkitpolicy_in_files += \ @@ -3045,6 +3051,9 @@ localectl_LDADD = \ bin_PROGRAMS += \ localectl +dist_bashcompletion_DATA += \ + shell-completion/bash/localectl + endif polkitpolicy_in_files += \ @@ -3111,6 +3120,9 @@ timedatectl_LDADD = \ bin_PROGRAMS += \ timedatectl + +dist_bashcompletion_DATA += \ + shell-completion/bash/timedatectl endif polkitpolicy_in_files += \ @@ -3233,6 +3245,9 @@ loginctl_LDADD = \ rootbin_PROGRAMS += \ loginctl +dist_bashcompletion_DATA += \ + shell-completion/bash/loginctl + systemd_inhibit_SOURCES = \ src/login/inhibit.c diff --git a/shell-completion/bash/hostnamectl b/shell-completion/bash/hostnamectl new file mode 100644 index 0000000000..a57bffe15f --- /dev/null +++ b/shell-completion/bash/hostnamectl @@ -0,0 +1,60 @@ +# hostnamectl(1) completion -*- shell-script -*- +# +# This file is part of systemd. +# +# Copyright 2010 Ran Benita +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see . + +__contains_word () { + local word=$1; shift + for w in $*; do [[ $w = $word ]] && return 0; done + return 1 +} + +_hostnamectl() { + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='-h --help --version --transient --static --pretty + --no-ask-password -H --host' + + if [[ $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + local -A VERBS=( + [STANDALONE]='status' + [ICONS]='set-icon-name' + [NAME]='set-hostname' + ) + + for ((i=0; i <= COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[ICONS]} ${VERBS[NAME]}; then + comps='' + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 +} + +complete -F _hostnamectl hostnamectl diff --git a/shell-completion/bash/journalctl b/shell-completion/bash/journalctl new file mode 100644 index 0000000000..1fca5ad31b --- /dev/null +++ b/shell-completion/bash/journalctl @@ -0,0 +1,105 @@ +# journalctl(1) completion -*- shell-script -*- +# +# This file is part of systemd. +# +# Copyright 2010 Ran Benita +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see . + +__contains_word () { + local word=$1; shift + for w in $*; do [[ $w = $word ]] && return 0; done + return 1 +} + +__journal_fields=(MESSAGE{,_ID} PRIORITY CODE_{FILE,LINE,FUNC} + ERRNO SYSLOG_{FACILITY,IDENTIFIER,PID} COREDUMP_EXE + _{P,U,G}ID _COMM _EXE _CMDLINE + _AUDIT_{SESSION,LOGINUID} + _SYSTEMD_{CGROUP,SESSION,UNIT,OWNER_UID} + _SELINUX_CONTEXT _SOURCE_REALTIME_TIMESTAMP + _{BOOT,MACHINE}_ID _HOSTNAME _TRANSPORT + _KERNEL_{DEVICE,SUBSYSTEM} + _UDEV_{SYSNAME,DEVNODE,DEVLINK} + __CURSOR __{REALTIME,MONOTONIC}_TIMESTAMP) + +_journalctl() { + local field_vals= cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-a --all --full + -b --this-boot --disk-usage -f --follow --header + -h --help -l --local --new-id128 -m --merge --no-pager + --no-tail -q --quiet --setup-keys --this-boot --verify + --version --list-catalog --update-catalog' + [ARG]='-D --directory -F --field -o --output -u --unit --user-unit' + [ARGUNKNOWN]='-c --cursor --interval -n --lines -p --priority --since --until + --verify-key' + ) + + if __contains_word "$prev" ${OPTS[ARG]} ${OPTS[ARGUNKNOWN]}; then + case $prev in + --directory|-D) + comps=$(compgen -d -- "$cur") + compopt -o filenames + ;; + --output|-o) + comps='short short-monotonic verbose export json cat' + ;; + --field|-F) + comps=${__journal_fields[*]} + ;; + --unit|-u) + comps=$(journalctl -F '_SYSTEMD_UNIT') + ;; + --user-unit) + comps=$(journalctl -F '_SYSTEMD_USER_UNIT') + ;; + *) + return 0 + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + if [[ $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + elif [[ $cur = *=* ]]; then + mapfile -t field_vals < <(journalctl -F "${prev%=}" 2>/dev/null) + COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur#=}") ) + elif [[ $cur = /dev* ]]; then + compopt -o filenames + COMPREPLY=( $(compgen -f -- "${cur}") ) + elif [[ $cur = /* ]]; then + # Append /dev/ to the list of completions, so that + # after typing / the user sees /dev/ as one + # of the alternatives. Later on the rule above will + # take care of showing device files in /dev/. + mapfile -t field_vals < <(journalctl -F "_EXE" 2>/dev/null; echo '/dev/') + COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur}") ) + if [[ "${COMPREPLY[@]}" = '/dev/' ]]; then + compopt -o filenames + COMPREPLY=( $(compgen -f -- "${cur}") ) + fi + elif [[ $prev = '=' ]]; then + mapfile -t field_vals < <(journalctl -F "${COMP_WORDS[COMP_CWORD-2]}" 2>/dev/null) + COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "$cur") ) + else + compopt -o nospace + COMPREPLY=( $(compgen -W '${__journal_fields[*]}' -S= -- "$cur") ) + fi +} + +complete -F _journalctl journalctl diff --git a/shell-completion/bash/localectl b/shell-completion/bash/localectl new file mode 100644 index 0000000000..ef19f01461 --- /dev/null +++ b/shell-completion/bash/localectl @@ -0,0 +1,75 @@ +# localectl(1) completion -*- shell-script -*- +# +# This file is part of systemd. +# +# Copyright 2010 Ran Benita +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see . + +__contains_word () { + local word=$1; shift + for w in $*; do [[ $w = $word ]] && return 0; done + return 1 +} + +_localectl() { + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='-h --help --version --no-convert --no-pager --no-ask-password + -H --host' + + if __contains_word "$prev" $OPTS; then + case $prev in + --host|-H) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + if [[ $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + local -A VERBS=( + [STANDALONE]='status list-locales list-keymaps' + [LOCALES]='set-locale' + [KEYMAPS]='set-keymap' + [X11]='set-x11-keymap' + ) + + for ((i=0; i <= COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[LOCALES]}; then + comps=$(command localectl list-locales) + elif __contains_word "$verb" ${VERBS[KEYMAPS]}; then + comps=$(command localectl list-keymaps) + elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[X11]}; then + comps='' + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 +} + +complete -F _localectl localectl diff --git a/shell-completion/bash/loginctl b/shell-completion/bash/loginctl new file mode 100644 index 0000000000..1844085d49 --- /dev/null +++ b/shell-completion/bash/loginctl @@ -0,0 +1,108 @@ +# loginctl(1) completion -*- shell-script -*- +# +# This file is part of systemd. +# +# Copyright 2010 Ran Benita +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see . + +__contains_word () { + local word=$1; shift + for w in $*; do [[ $w = $word ]] && return 0; done + return 1 +} + +__get_all_sessions () { loginctl list-sessions | { while read -r a b; do printf "%s\n" "$a"; done; } ; } +__get_all_users () { loginctl list-users | { while read -r a b; do printf "%s\n" "$b"; done; } ; } +__get_all_seats () { loginctl list-seats | { while read -r a b; do printf "%s\n" "$a"; done; } ; } + +_loginctl () { + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps + + local -A OPTS=( + [STANDALONE]='--all -a --help -h --no-pager --privileged -P --version' + [ARG]='--host -H --kill-who --property -p --signal -s' + ) + + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --signal|-s) + comps=$(compgen -A signal) + ;; + --kill-who) + comps='all leader' + ;; + --host|-H) + comps=$(compgen -A hostname) + ;; + --property|-p) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + local -A VERBS=( + [SESSIONS]='session-status show-session activate lock-session unlock-session terminate-session kill-session' + [USERS]='user-status show-user enable-linger disable-linger terminate-user kill-user' + [SEATS]='seat-status show-seat terminate-seat' + [STANDALONE]='list-sessions list-users list-seats flush-devices' + [ATTACH]='attach' + ) + + for ((i=0; $i <= $COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb ]]; then + comps="${VERBS[*]}" + + elif __contains_word "$verb" ${VERBS[SESSIONS]}; then + comps=$( __get_all_sessions ) + + elif __contains_word "$verb" ${VERBS[USERS]}; then + comps=$( __get_all_users ) + + elif __contains_word "$verb" ${VERBS[SEATS]}; then + comps=$( __get_all_seats ) + + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + + elif __contains_word "$verb" ${VERBS[ATTACH]}; then + if [[ $prev = $verb ]]; then + comps=$( __get_all_seats ) + else + comps=$(compgen -A file -- "$cur" ) + compopt -o filenames + fi + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 +} + +complete -F _loginctl loginctl diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl new file mode 100644 index 0000000000..27d89ec13a --- /dev/null +++ b/shell-completion/bash/systemctl @@ -0,0 +1,202 @@ +# systemctl(1) completion -*- shell-script -*- +# +# This file is part of systemd. +# +# Copyright 2010 Ran Benita +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see . + +__systemctl() { + systemctl --full --no-legend "$@" +} + +__contains_word () { + local word=$1; shift + for w in $*; do [[ $w = $word ]] && return 0; done + return 1 +} + +__filter_units_by_property () { + local property=$1 value=$2 ; shift 2 + local units=("$@") + local props + IFS=$'\n' read -rd '' -a props < \ + <(__systemctl show --property "$property" -- "${units[@]}") + for ((i=0; $i < ${#units[*]}; i++)); do + if [[ "${props[i]}" = "$property=$value" ]]; then + printf "%s\n" "${units[i]}" + fi + done +} + +__get_all_units () { __systemctl list-units --all \ + | { while read -r a b; do printf "%s\n" "$a"; done; }; } +__get_active_units () { __systemctl list-units \ + | { while read -r a b; do printf "%s\n" "$a"; done; }; } +__get_inactive_units () { __systemctl list-units --all \ + | { while read -r a b c d; do [[ $c == "inactive" ]] && printf "%s\n" "$a"; done; }; } +__get_failed_units () { __systemctl list-units \ + | { while read -r a b c d; do [[ $c == "failed" ]] && printf "%s\n" "$a"; done; }; } +__get_enabled_units () { __systemctl list-unit-files \ + | { while read -r a b c ; do [[ $b == "enabled" ]] && printf "%s\n" "$a"; done; }; } +__get_disabled_units () { __systemctl list-unit-files \ + | { while read -r a b c ; do [[ $b == "disabled" ]] && printf "%s\n" "$a"; done; }; } +__get_masked_units () { __systemctl list-unit-files \ + | { while read -r a b c ; do [[ $b == "masked" ]] && printf "%s\n" "$a"; done; }; } + +_systemctl () { + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps + + local -A OPTS=( + [STANDALONE]='--all -a --defaults --fail --ignore-dependencies --failed --force -f --full --global + --help -h --no-ask-password --no-block --no-legend --no-pager --no-reload --no-wall + --quiet -q --privileged -P --system --user --version --runtime' + [ARG]='--host -H --kill-mode --kill-who --property -p --signal -s --type -t --root' + ) + + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --signal|-s) + comps=$(compgen -A signal) + ;; + --type|-t) + comps='automount device mount path service snapshot socket swap target timer' + ;; + --kill-who) + comps='all control main' + ;; + --kill-mode) + comps='control-group process' + ;; + --root) + comps=$(compgen -A directory -- "$cur" ) + compopt -o filenames + ;; + --host|-H) + comps=$(compgen -A hostname) + ;; + --property|-p) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + local -A VERBS=( + [ALL_UNITS]='is-active is-failed is-enabled status show mask preset' + [ENABLED_UNITS]='disable reenable' + [DISABLED_UNITS]='enable' + [FAILED_UNITS]='reset-failed' + [STARTABLE_UNITS]='start' + [STOPPABLE_UNITS]='stop condstop kill try-restart condrestart' + [ISOLATABLE_UNITS]='isolate' + [RELOADABLE_UNITS]='reload condreload reload-or-try-restart force-reload' + [RESTARTABLE_UNITS]='restart reload-or-restart' + [MASKED_UNITS]='unmask' + [JOBS]='cancel' + [SNAPSHOTS]='delete' + [ENVS]='set-environment unset-environment' + [STANDALONE]='daemon-reexec daemon-reload default dump + emergency exit halt hibernate hybrid-sleep kexec list-jobs + list-units list-unit-files poweroff reboot rescue + show-environment suspend' + [NAME]='snapshot load' + [FILE]='link' + ) + + for ((i=0; $i <= $COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb ]]; then + comps="${VERBS[*]}" + + elif __contains_word "$verb" ${VERBS[ALL_UNITS]}; then + comps=$( __get_all_units ) + + elif __contains_word "$verb" ${VERBS[ENABLED_UNITS]}; then + comps=$( __get_enabled_units ) + + elif __contains_word "$verb" ${VERBS[DISABLED_UNITS]}; then + comps=$( __get_disabled_units ) + + elif __contains_word "$verb" ${VERBS[STARTABLE_UNITS]}; then + comps=$( __filter_units_by_property CanStart yes \ + $( __get_inactive_units \ + | while read -r line; do \ + [[ "$line" =~ \.(device|snapshot)$ ]] || printf "%s\n" "$line"; \ + done )) + + elif __contains_word "$verb" ${VERBS[RESTARTABLE_UNITS]}; then + comps=$( __filter_units_by_property CanStart yes \ + $( __get_all_units \ + | while read -r line; do \ + [[ "$line" =~ \.(device|snapshot|socket|timer)$ ]] || printf "%s\n" "$line"; \ + done )) + + elif __contains_word "$verb" ${VERBS[STOPPABLE_UNITS]}; then + comps=$( __filter_units_by_property CanStop yes \ + $( __get_active_units ) ) + + elif __contains_word "$verb" ${VERBS[RELOADABLE_UNITS]}; then + comps=$( __filter_units_by_property CanReload yes \ + $( __get_active_units ) ) + + elif __contains_word "$verb" ${VERBS[ISOLATABLE_UNITS]}; then + comps=$( __filter_units_by_property AllowIsolate yes \ + $( __get_all_units ) ) + + elif __contains_word "$verb" ${VERBS[FAILED_UNITS]}; then + comps=$( __get_failed_units ) + + elif __contains_word "$verb" ${VERBS[MASKED_UNITS]}; then + comps=$( __get_masked_units ) + + elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[NAME]}; then + comps='' + + elif __contains_word "$verb" ${VERBS[JOBS]}; then + comps=$( __systemctl list-jobs | { while read -r a b; do printf "%s\n" "$a"; done; } ) + + elif __contains_word "$verb" ${VERBS[SNAPSHOTS]}; then + comps=$( __systemctl list-units --type snapshot --full --all \ + | { while read -r a b; do printf "%s\n" "$a"; done; } ) + + elif __contains_word "$verb" ${VERBS[ENVS]}; then + comps=$( __systemctl show-environment \ + | while read -r line; do printf "%s\n" "${line%%=*}=";done ) + compopt -o nospace + + elif __contains_word "$verb" ${VERBS[FILE]}; then + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 +} + +complete -F _systemctl systemctl diff --git a/shell-completion/bash/systemd-coredumpctl b/shell-completion/bash/systemd-coredumpctl new file mode 100644 index 0000000000..4bbece7347 --- /dev/null +++ b/shell-completion/bash/systemd-coredumpctl @@ -0,0 +1,84 @@ +# systemd-coredumpctl(1) completion -*- shell-script -*- +# +# This file is part of systemd. +# +# Copyright 2010 Ran Benita +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see . + +__contains_word () { + local word=$1; shift + for w in $*; do [[ $w = $word ]] && return 0; done + return 1 +} + +__journal_fields=(MESSAGE{,_ID} PRIORITY CODE_{FILE,LINE,FUNC} + ERRNO SYSLOG_{FACILITY,IDENTIFIER,PID} COREDUMP_EXE + _{P,U,G}ID _COMM _EXE _CMDLINE + _AUDIT_{SESSION,LOGINUID} + _SYSTEMD_{CGROUP,SESSION,UNIT,OWNER_UID} + _SELINUX_CONTEXT _SOURCE_REALTIME_TIMESTAMP + _{BOOT,MACHINE}_ID _HOSTNAME _TRANSPORT + _KERNEL_{DEVICE,SUBSYSTEM} + _UDEV_{SYSNAME,DEVNODE,DEVLINK} + __CURSOR __{REALTIME,MONOTONIC}_TIMESTAMP) +_coredumpctl() { + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='-h --help --version --no-pager --no-legend -o --output -F --field' + + local -A VERBS=( + [LIST]='list' + [DUMP]='dump gdb' + ) + + if __contains_word "$prev" '--output -o'; then + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames + elif __contains_word "$prev" '--FIELD -F'; then + comps=$( compgen -W '${__journal_fields[*]}' -- "$cur" ) + elif [[ $cur = -* ]]; then + comps=${OPTS} + elif __contains_word "$prev" ${VERBS[*]} && + ! __contains_word ${COMP_WORDS[COMP_CWORD-2]} '--output -o -F --field'; then + compopt -o nospace + COMPREPLY=( $(compgen -W '${__journal_fields[*]}' -S= -- "$cur") ) + return 0 + elif [[ $cur = *=* ]]; then + mapfile -t field_vals < <(systemd-coredumpctl -F "${prev%=}" 2>/dev/null) + COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur#=}") ) + return 0 + elif [[ $prev = '=' ]]; then + mapfile -t field_vals < <(systemd-coredumpctl -F "${COMP_WORDS[COMP_CWORD-2]}" 2>/dev/null) + comps=${field_vals[*]} + else + for ((i=0; i <= COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[LIST]} ${VERBS[DUMP]}; then + comps='' + fi + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 +} + +complete -F _coredumpctl systemd-coredumpctl diff --git a/shell-completion/bash/timedatectl b/shell-completion/bash/timedatectl new file mode 100644 index 0000000000..2842b31069 --- /dev/null +++ b/shell-completion/bash/timedatectl @@ -0,0 +1,75 @@ +# timedatectl(1) completion -*- shell-script -*- +# +# This file is part of systemd. +# +# Copyright 2010 Ran Benita +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see . + +__contains_word () { + local word=$1; shift + for w in $*; do [[ $w = $word ]] && return 0; done + return 1 +} + +_timedatectl() { + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='-h --help --version --adjust-system-clock --no-pager + --no-ask-password -H --host' + + if __contains_word "$prev" $OPTS; then + case $prev in + --host|-H) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + if [[ $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + local -A VERBS=( + [BOOLEAN]='set-local-rtc set-ntp' + [STANDALONE]='status set-time list-timezones' + [TIMEZONES]='set-timezone' + [TIME]='set-time' + ) + + for ((i=0; i <= COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[BOOLEAN]}; then + comps='true false' + elif __contains_word "$verb" ${VERBS[TIMEZONES]}; then + comps=$(command timedatectl list-timezones) + elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[TIME]}; then + comps='' + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 +} + +complete -F _timedatectl timedatectl diff --git a/shell-completion/bash/udevadm b/shell-completion/bash/udevadm new file mode 100644 index 0000000000..a31d465d35 --- /dev/null +++ b/shell-completion/bash/udevadm @@ -0,0 +1,103 @@ +# udevadm(8) completion -*- shell-script -*- +# +# This file is part of systemd. +# +# Copyright 2010 Ran Benita +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see . + +__contains_word () { + local word=$1; shift + for w in $*; do [[ $w = $word ]] && return 0; done + return 1 +} + +__get_all_sysdevs() { + local -a devs=(/sys/bus/*/devices/*/ /sys/class/*/*/) + printf '%s\n' "${devs[@]%/}" +} + +_udevadm() { + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='-h --help --version --debug' + + local -A VERBS=( + [INFO]='info' + [TRIGGER]='trigger' + [SETTLE]='settle' + [CONTROL]='control' + [MONITOR]='monitor' + [HWDB]='hwdb' + [TESTBUILTIN]='test-builtin' + [TEST]='test' + ) + + for ((i=0; $i <= $COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb && $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + + elif __contains_word "$verb" ${VERBS[INFO]}; then + if [[ $cur = -* ]]; then + comps='--help --query= --path= --name= --root --attribute-walk --export-db --cleanup-db' + else + comps=$( __get_all_sysdevs ) + fi + + elif __contains_word "$verb" ${VERBS[TRIGGER]}; then + comps='--help --verbose --dry-run --type= --action= --subsystem-match= + --subsystem-nomatch= --attr-match= --attr-nomatch= --property-match= + --tag-match= --sysname-match= --parent-match=' + + elif __contains_word "$verb" ${VERBS[SETTLE]}; then + comps='--help --timeout= --seq-start= --seq-end= --exit-if-exists= --quiet' + + elif __contains_word "$verb" ${VERBS[CONTROL]}; then + comps='--help --exit --log-priority= --stop-exec-queue --start-exec-queue + --reload --property= --children-max= --timeout=' + + elif __contains_word "$verb" ${VERBS[MONITOR]}; then + comps='--help --kernel --udev --property --subsystem-match= --tag-match=' + + elif __contains_word "$verb" ${VERBS[HWDB]}; then + comps='--help --update --test=' + + elif __contains_word "$verb" ${VERBS[TEST]}; then + if [[ $cur = -* ]]; then + comps='--help --action=' + else + comps=$( __get_all_sysdevs ) + fi + + elif __contains_word "$verb" ${VERBS[TESTBUILTIN]}; then + comps='blkid btrfs firmware hwdb input_id kmod net_id path_id usb_id uaccess' + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 +} + +complete -F _udevadm udevadm diff --git a/shell-completion/systemd-bash-completion.sh b/shell-completion/systemd-bash-completion.sh deleted file mode 100644 index 40e66e9d10..0000000000 --- a/shell-completion/systemd-bash-completion.sh +++ /dev/null @@ -1,624 +0,0 @@ -# This file is part of systemd. -# -# Copyright 2010 Ran Benita -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. -# -# systemd is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU Lesser General Public License -# along with systemd; If not, see . - -__systemctl() { - systemctl --full --no-legend "$@" -} - -__contains_word () { - local word=$1; shift - for w in $*; do [[ $w = $word ]] && return 0; done - return 1 -} - -__filter_units_by_property () { - local property=$1 value=$2 ; shift 2 - local units=("$@") - local props - IFS=$'\n' read -rd '' -a props < \ - <(__systemctl show --property "$property" -- "${units[@]}") - for ((i=0; $i < ${#units[*]}; i++)); do - if [[ "${props[i]}" = "$property=$value" ]]; then - printf "%s\n" "${units[i]}" - fi - done -} - -__get_all_units () { __systemctl list-units --all \ - | { while read -r a b; do printf "%s\n" "$a"; done; }; } -__get_active_units () { __systemctl list-units \ - | { while read -r a b; do printf "%s\n" "$a"; done; }; } -__get_inactive_units () { __systemctl list-units --all \ - | { while read -r a b c d; do [[ $c == "inactive" ]] && printf "%s\n" "$a"; done; }; } -__get_failed_units () { __systemctl list-units \ - | { while read -r a b c d; do [[ $c == "failed" ]] && printf "%s\n" "$a"; done; }; } -__get_enabled_units () { __systemctl list-unit-files \ - | { while read -r a b c ; do [[ $b == "enabled" ]] && printf "%s\n" "$a"; done; }; } -__get_disabled_units () { __systemctl list-unit-files \ - | { while read -r a b c ; do [[ $b == "disabled" ]] && printf "%s\n" "$a"; done; }; } -__get_masked_units () { __systemctl list-unit-files \ - | { while read -r a b c ; do [[ $b == "masked" ]] && printf "%s\n" "$a"; done; }; } - -_systemctl () { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps - - local -A OPTS=( - [STANDALONE]='--all -a --defaults --fail --ignore-dependencies --failed --force -f --full --global - --help -h --no-ask-password --no-block --no-legend --no-pager --no-reload --no-wall - --quiet -q --privileged -P --system --user --version --runtime' - [ARG]='--host -H --kill-mode --kill-who --property -p --signal -s --type -t --root' - ) - - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --signal|-s) - comps=$(compgen -A signal) - ;; - --type|-t) - comps='automount device mount path service snapshot socket swap target timer' - ;; - --kill-who) - comps='all control main' - ;; - --kill-mode) - comps='control-group process' - ;; - --root) - comps=$(compgen -A directory -- "$cur" ) - compopt -o filenames - ;; - --host|-H) - comps=$(compgen -A hostname) - ;; - --property|-p) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - local -A VERBS=( - [ALL_UNITS]='is-active is-failed is-enabled status show mask preset' - [ENABLED_UNITS]='disable reenable' - [DISABLED_UNITS]='enable' - [FAILED_UNITS]='reset-failed' - [STARTABLE_UNITS]='start' - [STOPPABLE_UNITS]='stop condstop kill try-restart condrestart' - [ISOLATABLE_UNITS]='isolate' - [RELOADABLE_UNITS]='reload condreload reload-or-try-restart force-reload' - [RESTARTABLE_UNITS]='restart reload-or-restart' - [MASKED_UNITS]='unmask' - [JOBS]='cancel' - [SNAPSHOTS]='delete' - [ENVS]='set-environment unset-environment' - [STANDALONE]='daemon-reexec daemon-reload default dump - emergency exit halt hibernate hybrid-sleep kexec list-jobs - list-units list-unit-files poweroff reboot rescue - show-environment suspend' - [NAME]='snapshot load' - [FILE]='link' - ) - - for ((i=0; $i <= $COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps="${VERBS[*]}" - - elif __contains_word "$verb" ${VERBS[ALL_UNITS]}; then - comps=$( __get_all_units ) - - elif __contains_word "$verb" ${VERBS[ENABLED_UNITS]}; then - comps=$( __get_enabled_units ) - - elif __contains_word "$verb" ${VERBS[DISABLED_UNITS]}; then - comps=$( __get_disabled_units ) - - elif __contains_word "$verb" ${VERBS[STARTABLE_UNITS]}; then - comps=$( __filter_units_by_property CanStart yes \ - $( __get_inactive_units \ - | while read -r line; do \ - [[ "$line" =~ \.(device|snapshot)$ ]] || printf "%s\n" "$line"; \ - done )) - - elif __contains_word "$verb" ${VERBS[RESTARTABLE_UNITS]}; then - comps=$( __filter_units_by_property CanStart yes \ - $( __get_all_units \ - | while read -r line; do \ - [[ "$line" =~ \.(device|snapshot|socket|timer)$ ]] || printf "%s\n" "$line"; \ - done )) - - elif __contains_word "$verb" ${VERBS[STOPPABLE_UNITS]}; then - comps=$( __filter_units_by_property CanStop yes \ - $( __get_active_units ) ) - - elif __contains_word "$verb" ${VERBS[RELOADABLE_UNITS]}; then - comps=$( __filter_units_by_property CanReload yes \ - $( __get_active_units ) ) - - elif __contains_word "$verb" ${VERBS[ISOLATABLE_UNITS]}; then - comps=$( __filter_units_by_property AllowIsolate yes \ - $( __get_all_units ) ) - - elif __contains_word "$verb" ${VERBS[FAILED_UNITS]}; then - comps=$( __get_failed_units ) - - elif __contains_word "$verb" ${VERBS[MASKED_UNITS]}; then - comps=$( __get_masked_units ) - - elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[NAME]}; then - comps='' - - elif __contains_word "$verb" ${VERBS[JOBS]}; then - comps=$( __systemctl list-jobs | { while read -r a b; do printf "%s\n" "$a"; done; } ) - - elif __contains_word "$verb" ${VERBS[SNAPSHOTS]}; then - comps=$( __systemctl list-units --type snapshot --full --all \ - | { while read -r a b; do printf "%s\n" "$a"; done; } ) - - elif __contains_word "$verb" ${VERBS[ENVS]}; then - comps=$( __systemctl show-environment \ - | while read -r line; do printf "%s\n" "${line%%=*}=";done ) - compopt -o nospace - - elif __contains_word "$verb" ${VERBS[FILE]}; then - comps=$( compgen -A file -- "$cur" ) - compopt -o filenames - fi - - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 -} -complete -F _systemctl systemctl - -__get_all_sessions () { loginctl list-sessions | { while read -r a b; do printf "%s\n" "$a"; done; } ; } -__get_all_users () { loginctl list-users | { while read -r a b; do printf "%s\n" "$b"; done; } ; } -__get_all_seats () { loginctl list-seats | { while read -r a b; do printf "%s\n" "$a"; done; } ; } - -_loginctl () { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps - - local -A OPTS=( - [STANDALONE]='--all -a --help -h --no-pager --privileged -P --version' - [ARG]='--host -H --kill-who --property -p --signal -s' - ) - - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --signal|-s) - comps=$(compgen -A signal) - ;; - --kill-who) - comps='all leader' - ;; - --host|-H) - comps=$(compgen -A hostname) - ;; - --property|-p) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - local -A VERBS=( - [SESSIONS]='session-status show-session activate lock-session unlock-session terminate-session kill-session' - [USERS]='user-status show-user enable-linger disable-linger terminate-user kill-user' - [SEATS]='seat-status show-seat terminate-seat' - [STANDALONE]='list-sessions list-users list-seats flush-devices' - [ATTACH]='attach' - ) - - for ((i=0; $i <= $COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps="${VERBS[*]}" - - elif __contains_word "$verb" ${VERBS[SESSIONS]}; then - comps=$( __get_all_sessions ) - - elif __contains_word "$verb" ${VERBS[USERS]}; then - comps=$( __get_all_users ) - - elif __contains_word "$verb" ${VERBS[SEATS]}; then - comps=$( __get_all_seats ) - - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' - - elif __contains_word "$verb" ${VERBS[ATTACH]}; then - if [[ $prev = $verb ]]; then - comps=$( __get_all_seats ) - else - comps=$(compgen -A file -- "$cur" ) - compopt -o filenames - fi - fi - - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 -} -complete -F _loginctl loginctl - -__journal_fields=(MESSAGE{,_ID} PRIORITY CODE_{FILE,LINE,FUNC} - ERRNO SYSLOG_{FACILITY,IDENTIFIER,PID} COREDUMP_EXE - _{P,U,G}ID _COMM _EXE _CMDLINE - _AUDIT_{SESSION,LOGINUID} - _SYSTEMD_{CGROUP,SESSION,UNIT,OWNER_UID} - _SELINUX_CONTEXT _SOURCE_REALTIME_TIMESTAMP - _{BOOT,MACHINE}_ID _HOSTNAME _TRANSPORT - _KERNEL_{DEVICE,SUBSYSTEM} - _UDEV_{SYSNAME,DEVNODE,DEVLINK} - __CURSOR __{REALTIME,MONOTONIC}_TIMESTAMP) - -_journalctl() { - local field_vals= cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-a --all --full - -b --this-boot --disk-usage -f --follow --header - -h --help -l --local --new-id128 -m --merge --no-pager - --no-tail -q --quiet --setup-keys --this-boot --verify - --version --list-catalog --update-catalog' - [ARG]='-D --directory -F --field -o --output -u --unit --user-unit' - [ARGUNKNOWN]='-c --cursor --interval -n --lines -p --priority --since --until - --verify-key' - ) - - if __contains_word "$prev" ${OPTS[ARG]} ${OPTS[ARGUNKNOWN]}; then - case $prev in - --directory|-D) - comps=$(compgen -d -- "$cur") - compopt -o filenames - ;; - --output|-o) - comps='short short-monotonic verbose export json cat' - ;; - --field|-F) - comps=${__journal_fields[*]} - ;; - --unit|-u) - comps=$(journalctl -F '_SYSTEMD_UNIT') - ;; - --user-unit) - comps=$(journalctl -F '_SYSTEMD_USER_UNIT') - ;; - *) - return 0 - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - elif [[ $cur = *=* ]]; then - mapfile -t field_vals < <(journalctl -F "${prev%=}" 2>/dev/null) - COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur#=}") ) - elif [[ $cur = /dev* ]]; then - compopt -o filenames - COMPREPLY=( $(compgen -f -- "${cur}") ) - elif [[ $cur = /* ]]; then - # Append /dev/ to the list of completions, so that - # after typing / the user sees /dev/ as one - # of the alternatives. Later on the rule above will - # take care of showing device files in /dev/. - mapfile -t field_vals < <(journalctl -F "_EXE" 2>/dev/null; echo '/dev/') - COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur}") ) - if [[ "${COMPREPLY[@]}" = '/dev/' ]]; then - compopt -o filenames - COMPREPLY=( $(compgen -f -- "${cur}") ) - fi - elif [[ $prev = '=' ]]; then - mapfile -t field_vals < <(journalctl -F "${COMP_WORDS[COMP_CWORD-2]}" 2>/dev/null) - COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "$cur") ) - else - compopt -o nospace - COMPREPLY=( $(compgen -W '${__journal_fields[*]}' -S= -- "$cur") ) - fi -} -complete -F _journalctl journalctl - -_coredumpctl() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --no-pager --no-legend -o --output -F --field' - - local -A VERBS=( - [LIST]='list' - [DUMP]='dump gdb' - ) - - if __contains_word "$prev" '--output -o'; then - comps=$( compgen -A file -- "$cur" ) - compopt -o filenames - elif __contains_word "$prev" '--FIELD -F'; then - comps=$( compgen -W '${__journal_fields[*]}' -- "$cur" ) - elif [[ $cur = -* ]]; then - comps=${OPTS} - elif __contains_word "$prev" ${VERBS[*]} && - ! __contains_word ${COMP_WORDS[COMP_CWORD-2]} '--output -o -F --field'; then - compopt -o nospace - COMPREPLY=( $(compgen -W '${__journal_fields[*]}' -S= -- "$cur") ) - return 0 - elif [[ $cur = *=* ]]; then - mapfile -t field_vals < <(systemd-coredumpctl -F "${prev%=}" 2>/dev/null) - COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur#=}") ) - return 0 - elif [[ $prev = '=' ]]; then - mapfile -t field_vals < <(systemd-coredumpctl -F "${COMP_WORDS[COMP_CWORD-2]}" 2>/dev/null) - comps=${field_vals[*]} - else - for ((i=0; i <= COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[LIST]} ${VERBS[DUMP]}; then - comps='' - fi - fi - - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 -} -complete -F _coredumpctl systemd-coredumpctl - -_timedatectl() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --adjust-system-clock --no-pager - --no-ask-password -H --host' - - if __contains_word "$prev" $OPTS; then - case $prev in - --host|-H) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - local -A VERBS=( - [BOOLEAN]='set-local-rtc set-ntp' - [STANDALONE]='status set-time list-timezones' - [TIMEZONES]='set-timezone' - [TIME]='set-time' - ) - - for ((i=0; i <= COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[BOOLEAN]}; then - comps='true false' - elif __contains_word "$verb" ${VERBS[TIMEZONES]}; then - comps=$(command timedatectl list-timezones) - elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[TIME]}; then - comps='' - fi - - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 -} -complete -F _timedatectl timedatectl - -_localectl() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --no-convert --no-pager --no-ask-password - -H --host' - - if __contains_word "$prev" $OPTS; then - case $prev in - --host|-H) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - local -A VERBS=( - [STANDALONE]='status list-locales list-keymaps' - [LOCALES]='set-locale' - [KEYMAPS]='set-keymap' - [X11]='set-x11-keymap' - ) - - for ((i=0; i <= COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[LOCALES]}; then - comps=$(command localectl list-locales) - elif __contains_word "$verb" ${VERBS[KEYMAPS]}; then - comps=$(command localectl list-keymaps) - elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[X11]}; then - comps='' - fi - - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 -} -complete -F _localectl localectl - -_hostnamectl() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --transient --static --pretty - --no-ask-password -H --host' - - if [[ $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - local -A VERBS=( - [STANDALONE]='status' - [ICONS]='set-icon-name' - [NAME]='set-hostname' - ) - - for ((i=0; i <= COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[ICONS]} ${VERBS[NAME]}; then - comps='' - fi - - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 -} -complete -F _hostnamectl hostnamectl - -__get_all_sysdevs() { - local -a devs=(/sys/bus/*/devices/*/ /sys/class/*/*/) - printf '%s\n' "${devs[@]%/}" -} - -_udevadm() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --debug' - - local -A VERBS=( - [INFO]='info' - [TRIGGER]='trigger' - [SETTLE]='settle' - [CONTROL]='control' - [MONITOR]='monitor' - [HWDB]='hwdb' - [TESTBUILTIN]='test-builtin' - [TEST]='test' - ) - - for ((i=0; $i <= $COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb && $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - - elif __contains_word "$verb" ${VERBS[INFO]}; then - if [[ $cur = -* ]]; then - comps='--help --query= --path= --name= --root --attribute-walk --export-db --cleanup-db' - else - comps=$( __get_all_sysdevs ) - fi - - elif __contains_word "$verb" ${VERBS[TRIGGER]}; then - comps='--help --verbose --dry-run --type= --action= --subsystem-match= - --subsystem-nomatch= --attr-match= --attr-nomatch= --property-match= - --tag-match= --sysname-match= --parent-match=' - - elif __contains_word "$verb" ${VERBS[SETTLE]}; then - comps='--help --timeout= --seq-start= --seq-end= --exit-if-exists= --quiet' - - elif __contains_word "$verb" ${VERBS[CONTROL]}; then - comps='--help --exit --log-priority= --stop-exec-queue --start-exec-queue - --reload --property= --children-max= --timeout=' - - elif __contains_word "$verb" ${VERBS[MONITOR]}; then - comps='--help --kernel --udev --property --subsystem-match= --tag-match=' - - elif __contains_word "$verb" ${VERBS[HWDB]}; then - comps='--help --update --test=' - - elif __contains_word "$verb" ${VERBS[TEST]}; then - if [[ $cur = -* ]]; then - comps='--help --action=' - else - comps=$( __get_all_sysdevs ) - fi - - elif __contains_word "$verb" ${VERBS[TESTBUILTIN]}; then - comps='blkid btrfs firmware hwdb input_id kmod net_id path_id usb_id uaccess' - fi - - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 -} -complete -F _udevadm udevadm -- cgit v1.2.1 From b8fe3faf9fa6b95ca0413e7dbe0bbdc1d6ab4d7c Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Sun, 3 Mar 2013 14:40:49 +0100 Subject: Update TODO --- TODO | 3 --- 1 file changed, 3 deletions(-) diff --git a/TODO b/TODO index 168913beb0..5f351b24a6 100644 --- a/TODO +++ b/TODO @@ -57,9 +57,6 @@ Features: * remove any syslog support from log.c -- we probably can't do this before split-off udev is gone for good -* convert /etc/bash_completion.d/ to /usr/share/bash-completion/ - (systemd (and everything else) should install zero static data in /etc) - * tmpfiles: when traversing the tree, check for bind mount points with nametohandle() * fedora: connect the timer units of a service to the service via Also= in [Install], and maybe introduce timers.target -- cgit v1.2.1 From f8c16f42fb6d8e0425ff2b867aa9af07d9b6b4ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 1 Mar 2013 17:44:25 -0500 Subject: core/path: fix a leak in success path ... and use automatic cleanup. --- src/core/path.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/core/path.c b/src/core/path.c index 3775577bcf..7bbbf1f8eb 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -33,6 +33,7 @@ #include "special.h" #include "bus-errors.h" #include "path-util.h" +#include "macro.h" static const UnitActiveState state_translation_table[_PATH_STATE_MAX] = { [PATH_DEAD] = UNIT_INACTIVE, @@ -52,7 +53,8 @@ int path_spec_watch(PathSpec *s, Unit *u) { }; bool exists = false; - char *k, *slash; + char _cleanup_free_ *k = NULL; + char *slash; int r; assert(u); @@ -60,18 +62,19 @@ int path_spec_watch(PathSpec *s, Unit *u) { path_spec_unwatch(s, u); - if (!(k = strdup(s->path))) + k = strdup(s->path); + if (!k) return -ENOMEM; - if ((s->inotify_fd = inotify_init1(IN_NONBLOCK|IN_CLOEXEC)) < 0) { + s->inotify_fd = inotify_init1(IN_NONBLOCK|IN_CLOEXEC); + if (s->inotify_fd < 0) { r = -errno; goto fail; } - if (unit_watch_fd(u, s->inotify_fd, EPOLLIN, &s->watch) < 0) { - r = -errno; + r = unit_watch_fd(u, s->inotify_fd, EPOLLIN, &s->watch); + if (r < 0) goto fail; - } s->primary_wd = inotify_add_watch(s->inotify_fd, k, flags_table[s->type]); if (s->primary_wd >= 0) @@ -99,8 +102,6 @@ int path_spec_watch(PathSpec *s, Unit *u) { return 0; fail: - free(k); - path_spec_unwatch(s, u); return r; } -- cgit v1.2.1 From a163db44190dea7c34112f28f32cdff664d79b06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 1 Mar 2013 17:58:56 -0500 Subject: core/path: use automatic cleanup ... and fix bogus return code on malloc failure. --- src/core/path.c | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/src/core/path.c b/src/core/path.c index 7bbbf1f8eb..65913f8759 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -118,7 +118,7 @@ void path_spec_unwatch(PathSpec *s, Unit *u) { } int path_spec_fd_event(PathSpec *s, uint32_t events) { - uint8_t *buf = NULL; + uint8_t _cleanup_free_ *buf = NULL; struct inotify_event *e; ssize_t k; int l; @@ -126,30 +126,24 @@ int path_spec_fd_event(PathSpec *s, uint32_t events) { if (events != EPOLLIN) { log_error("Got invalid poll event on inotify."); - r = -EINVAL; - goto out; + return -EINVAL; } if (ioctl(s->inotify_fd, FIONREAD, &l) < 0) { log_error("FIONREAD failed: %m"); - r = -errno; - goto out; + return -errno; } assert(l > 0); buf = malloc(l); - if (!buf) { - log_error("Failed to allocate buffer: %m"); - r = -errno; - goto out; - } + if (!buf) + return log_oom(); k = read(s->inotify_fd, buf, l); if (k < 0) { log_error("Failed to read inotify event: %m"); - r = -errno; - goto out; + return -errno; } e = (struct inotify_event*) buf; @@ -167,8 +161,7 @@ int path_spec_fd_event(PathSpec *s, uint32_t events) { e = (struct inotify_event*) ((uint8_t*) e + step); k -= step; } -out: - free(buf); + return r; } -- cgit v1.2.1 From e0207c8d91514350c6a1bf0dda9337823004c371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 1 Mar 2013 18:04:36 -0500 Subject: core/path: modernize style --- src/core/path.c | 65 ++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 44 insertions(+), 21 deletions(-) diff --git a/src/core/path.c b/src/core/path.c index 65913f8759..dcb3b1ff60 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -276,11 +276,12 @@ int path_add_one_mount_link(Path *p, Mount *m) { return 0; LIST_FOREACH(spec, s, p->specs) { - if (!path_spec_startswith(s, m->where)) continue; - if ((r = unit_add_two_dependencies(UNIT(p), UNIT_AFTER, UNIT_REQUIRES, UNIT(m), true)) < 0) + r = unit_add_two_dependencies(UNIT(p), UNIT_AFTER, UNIT_REQUIRES, + UNIT(m), true); + if (r < 0) return r; } @@ -293,9 +294,11 @@ static int path_add_mount_links(Path *p) { assert(p); - LIST_FOREACH(units_by_type, other, UNIT(p)->manager->units_by_type[UNIT_MOUNT]) - if ((r = path_add_one_mount_link(p, MOUNT(other))) < 0) + LIST_FOREACH(units_by_type, other, UNIT(p)->manager->units_by_type[UNIT_MOUNT]) { + r = path_add_one_mount_link(p, MOUNT(other)); + if (r < 0) return r; + } return 0; } @@ -321,14 +324,19 @@ static int path_add_default_dependencies(Path *p) { assert(p); if (UNIT(p)->manager->running_as == SYSTEMD_SYSTEM) { - if ((r = unit_add_dependency_by_name(UNIT(p), UNIT_BEFORE, SPECIAL_BASIC_TARGET, NULL, true)) < 0) + r = unit_add_dependency_by_name(UNIT(p), UNIT_BEFORE, + SPECIAL_BASIC_TARGET, NULL, true); + if (r < 0) return r; - if ((r = unit_add_two_dependencies_by_name(UNIT(p), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, NULL, true)) < 0) + r = unit_add_two_dependencies_by_name(UNIT(p), UNIT_AFTER, UNIT_REQUIRES, + SPECIAL_SYSINIT_TARGET, NULL, true); + if (r < 0) return r; } - return unit_add_two_dependencies_by_name(UNIT(p), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true); + return unit_add_two_dependencies_by_name(UNIT(p), UNIT_BEFORE, UNIT_CONFLICTS, + SPECIAL_SHUTDOWN_TARGET, NULL, true); } static int path_load(Unit *u) { @@ -338,7 +346,8 @@ static int path_load(Unit *u) { assert(u); assert(u->load_state == UNIT_STUB); - if ((r = unit_load_fragment_and_dropin(u)) < 0) + r = unit_load_fragment_and_dropin(u); + if (r < 0) return r; if (u->load_state == UNIT_LOADED) { @@ -353,16 +362,20 @@ static int path_load(Unit *u) { unit_ref_set(&p->unit, x); } - r = unit_add_two_dependencies(u, UNIT_BEFORE, UNIT_TRIGGERS, UNIT_DEREF(p->unit), true); + r = unit_add_two_dependencies(u, UNIT_BEFORE, UNIT_TRIGGERS, + UNIT_DEREF(p->unit), true); if (r < 0) return r; - if ((r = path_add_mount_links(p)) < 0) + r = path_add_mount_links(p); + if (r < 0) return r; - if (UNIT(p)->default_dependencies) - if ((r = path_add_default_dependencies(p)) < 0) + if (UNIT(p)->default_dependencies) { + r = path_add_default_dependencies(p); + if (r < 0) return r; + } } return path_verify(p); @@ -406,9 +419,11 @@ static int path_watch(Path *p) { assert(p); - LIST_FOREACH(spec, s, p->specs) - if ((r = path_spec_watch(s, UNIT(p))) < 0) + LIST_FOREACH(spec, s, p->specs) { + r = path_spec_watch(s, UNIT(p)); + if (r < 0) return r; + } return 0; } @@ -473,19 +488,23 @@ static void path_enter_running(Path *p) { if (UNIT(p)->job && UNIT(p)->job->type == JOB_STOP) return; - if ((r = manager_add_job(UNIT(p)->manager, JOB_START, UNIT_DEREF(p->unit), JOB_REPLACE, true, &error, NULL)) < 0) + r = manager_add_job(UNIT(p)->manager, JOB_START, UNIT_DEREF(p->unit), + JOB_REPLACE, true, &error, NULL); + if (r < 0) goto fail; p->inotify_triggered = false; - if ((r = path_watch(p)) < 0) + r = path_watch(p); + if (r < 0) goto fail; path_set_state(p, PATH_RUNNING); return; fail: - log_warning("%s failed to queue unit startup job: %s", UNIT(p)->id, bus_error(&error, r)); + log_warning("%s failed to queue unit startup job: %s", + UNIT(p)->id, bus_error(&error, r)); path_enter_dead(p, PATH_FAILURE_RESOURCES); dbus_error_free(&error); @@ -517,7 +536,8 @@ static void path_enter_waiting(Path *p, bool initial, bool recheck) { return; } - if ((r = path_watch(p)) < 0) + r = path_watch(p); + if (r < 0) goto fail; /* Hmm, so now we have created inotify watches, but the file @@ -535,7 +555,8 @@ static void path_enter_waiting(Path *p, bool initial, bool recheck) { return; fail: - log_warning("%s failed to enter waiting state: %s", UNIT(p)->id, strerror(-r)); + log_warning("%s failed to enter waiting state: %s", + UNIT(p)->id, strerror(-r)); path_enter_dead(p, PATH_FAILURE_RESOURCES); } @@ -602,7 +623,8 @@ static int path_deserialize_item(Unit *u, const char *key, const char *value, FD if (streq(key, "state")) { PathState state; - if ((state = path_state_from_string(value)) < 0) + state = path_state_from_string(value); + if (state < 0) log_debug("Failed to parse state value %s", value); else p->deserialized_state = state; @@ -696,7 +718,8 @@ void path_unit_notify(Unit *u, UnitActiveState new_state) { p = PATH(k); if (p->state == PATH_RUNNING && new_state == UNIT_INACTIVE) { - log_debug("%s got notified about unit deactivation.", UNIT(p)->id); + log_debug("%s got notified about unit deactivation.", + UNIT(p)->id); /* Hmm, so inotify was triggered since the * last activation, so I guess we need to -- cgit v1.2.1 From 28a79bd28b706e33825ec01fc651dbd76a252ea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 3 Mar 2013 01:49:11 -0500 Subject: core/path: catch errors when adding watches Errors because of oom conditions or descriptor exhaustion should not be ignored. We probably cannot recover from those conditions. Current behaviour wrt. insufficient permissions is described in the man page. It might make sense in case of user sessions, so I left it as is. --- man/systemd.path.xml | 23 +++++++++++++++-------- src/core/path.c | 17 +++++++++++++++++ 2 files changed, 32 insertions(+), 8 deletions(-) diff --git a/man/systemd.path.xml b/man/systemd.path.xml index cc2d366198..1975142d2c 100644 --- a/man/systemd.path.xml +++ b/man/systemd.path.xml @@ -88,16 +88,15 @@ point in the file system hierarchy, a dependency between both units is created automatically. - Unless DefaultDependencies= - is set to , path units will - implicitly have dependencies of type - Conflicts= and + Unless DefaultDependencies=false + is used, path units will implicitly have dependencies of + type Conflicts= and Before= on shutdown.target. These ensure that path units are terminated cleanly prior to system shutdown. Only path units involved with early boot or - late system shutdown should disable this - option. + late system shutdown should disable this option. + @@ -157,7 +156,7 @@ assignments of these options will not have any effect. - If a path is already existing + If a path already exists (in case of PathExists= and PathExistsGlob=) or @@ -168,7 +167,15 @@ activated, then the configured unit is immediately activated as well. Something similar does not apply - to PathChanged=. + to PathChanged= and + PathModified=. + + If the path itself or any of the + containing directories are not + accessible, systemd + will watch for permission changes and + notice that conditions are satisfied + when permissions allow that. diff --git a/src/core/path.c b/src/core/path.c index dcb3b1ff60..fc101280a1 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -79,6 +79,11 @@ int path_spec_watch(PathSpec *s, Unit *u) { s->primary_wd = inotify_add_watch(s->inotify_fd, k, flags_table[s->type]); if (s->primary_wd >= 0) exists = true; + else if (errno != EACCES && errno != ENOENT) { + log_error("Failed to add watch on %s: %m", k); + r = -errno; + goto fail; + } do { int flags; @@ -97,8 +102,20 @@ int path_spec_watch(PathSpec *s, Unit *u) { if (inotify_add_watch(s->inotify_fd, k, flags) >= 0) exists = true; + else if (errno != EACCES && errno != ENOENT) { + log_error("Failed to add watch on %s: %m", k); + r = -errno; + goto fail; + } } while (slash != k); + if (!exists) { + log_error("Failed to add watch on any of the components of %s: %m", + s->path); + r = -errno; + goto fail; + } + return 0; fail: -- cgit v1.2.1 From 117dcc57930b26bd8390516624700eb2024e1bb6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 2 Mar 2013 08:28:58 -0500 Subject: core/service: use cleanup functions, wrap lines --- src/core/service.c | 238 ++++++++++++++++++++++++++++++++--------------------- 1 file changed, 145 insertions(+), 93 deletions(-) diff --git a/src/core/service.c b/src/core/service.c index c510736b76..3f8aabcf45 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1100,7 +1100,8 @@ static int fsck_fix_order(Service *s) { else continue; - if ((r = unit_add_dependency(UNIT(s), d, UNIT(t), true)) < 0) + r = unit_add_dependency(UNIT(s), d, UNIT(t), true); + if (r < 0) return r; } @@ -1155,18 +1156,22 @@ static int service_add_default_dependencies(Service *s) { /* First, pull in base system */ if (UNIT(s)->manager->running_as == SYSTEMD_SYSTEM) { - - if ((r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_BASIC_TARGET, NULL, true)) < 0) + r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, + SPECIAL_BASIC_TARGET, NULL, true); + if (r < 0) return r; } else if (UNIT(s)->manager->running_as == SYSTEMD_USER) { - - if ((r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SOCKETS_TARGET, NULL, true)) < 0) + r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, + SPECIAL_SOCKETS_TARGET, NULL, true); + if (r < 0) return r; } /* Second, activate normal shutdown */ - return unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true); + r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, + SPECIAL_SHUTDOWN_TARGET, NULL, true); + return r; } static void service_fix_output(Service *s) { @@ -1224,18 +1229,22 @@ static int service_load(Unit *u) { service_fix_output(s); - if ((r = unit_add_exec_dependencies(u, &s->exec_context)) < 0) + r = unit_add_exec_dependencies(u, &s->exec_context); + if (r < 0) return r; - if ((r = unit_add_default_cgroups(u)) < 0) + r = unit_add_default_cgroups(u); + if (r < 0) return r; #ifdef HAVE_SYSV_COMPAT - if ((r = sysv_fix_order(s)) < 0) + r = sysv_fix_order(s); + if (r < 0) return r; #endif - if ((r = fsck_fix_order(s)) < 0) + r = fsck_fix_order(s); + if (r < 0) return r; if (s->bus_name) @@ -1248,13 +1257,18 @@ static int service_load(Unit *u) { if (s->watchdog_usec > 0 && s->notify_access == NOTIFY_NONE) s->notify_access = NOTIFY_MAIN; - if (s->type == SERVICE_DBUS || s->bus_name) - if ((r = unit_add_two_dependencies_by_name(u, UNIT_AFTER, UNIT_REQUIRES, SPECIAL_DBUS_SOCKET, NULL, true)) < 0) + if (s->type == SERVICE_DBUS || s->bus_name) { + r = unit_add_two_dependencies_by_name(u, UNIT_AFTER, UNIT_REQUIRES, + SPECIAL_DBUS_SOCKET, NULL, true); + if (r < 0) return r; + } - if (UNIT(s)->default_dependencies) - if ((r = service_add_default_dependencies(s)) < 0) + if (UNIT(s)->default_dependencies) { + r = service_add_default_dependencies(s); + if (r < 0) return r; + } r = unit_exec_context_defaults(u, &s->exec_context); if (r < 0) @@ -1269,7 +1283,7 @@ static void service_dump(Unit *u, FILE *f, const char *prefix) { ServiceExecCommand c; Service *s = SERVICE(u); const char *prefix2; - char *p2; + char _cleanup_free_ *p2 = NULL; assert(s); @@ -1364,12 +1378,10 @@ static void service_dump(Unit *u, FILE *f, const char *prefix) { if (s->status_text) fprintf(f, "%sStatus Text: %s\n", prefix, s->status_text); - - free(p2); } static int service_load_pid_file(Service *s, bool may_warn) { - char *k; + char _cleanup_free_ *k = NULL; int r; pid_t pid; @@ -1378,7 +1390,8 @@ static int service_load_pid_file(Service *s, bool may_warn) { if (!s->pid_file) return -ENOENT; - if ((r = read_one_line_file(s->pid_file, &k)) < 0) { + r = read_one_line_file(s->pid_file, &k); + if (r < 0) { if (may_warn) log_info_unit(UNIT(s)->id, "PID file %s not readable (yet?) after %s.", @@ -1387,8 +1400,6 @@ static int service_load_pid_file(Service *s, bool may_warn) { } r = parse_pid(k, &pid); - free(k); - if (r < 0) return r; @@ -1413,10 +1424,12 @@ static int service_load_pid_file(Service *s, bool may_warn) { log_debug_unit(UNIT(s)->id, "Main PID loaded: %lu", (unsigned long) pid); - if ((r = service_set_main_pid(s, pid)) < 0) + r = service_set_main_pid(s, pid); + if (r < 0) return r; - if ((r = unit_watch_pid(UNIT(s), pid)) < 0) + r = unit_watch_pid(UNIT(s), pid); + if (r < 0) /* FIXME: we need to do something here */ return r; @@ -1439,15 +1452,18 @@ static int service_search_main_pid(Service *s) { assert(s->main_pid <= 0); - if ((pid = cgroup_bonding_search_main_pid_list(UNIT(s)->cgroup_bondings)) <= 0) + pid = cgroup_bonding_search_main_pid_list(UNIT(s)->cgroup_bondings); + if (pid <= 0) return -ENOENT; log_debug_unit(UNIT(s)->id, "Main PID guessed: %lu", (unsigned long) pid); - if ((r = service_set_main_pid(s, pid)) < 0) + r = service_set_main_pid(s, pid); + if (r < 0) return r; - if ((r = unit_watch_pid(UNIT(s), pid)) < 0) + r = unit_watch_pid(UNIT(s), pid); + if (r < 0) /* FIXME: we need to do something here */ return r; @@ -1612,9 +1628,11 @@ static int service_coldplug(Unit *u) { s->deserialized_state == SERVICE_STOP || s->deserialized_state == SERVICE_STOP_SIGTERM || s->deserialized_state == SERVICE_STOP_SIGKILL) - if (s->main_pid > 0) - if ((r = unit_watch_pid(UNIT(s), s->main_pid)) < 0) + if (s->main_pid > 0) { + r = unit_watch_pid(UNIT(s), s->main_pid); + if (r < 0) return r; + } if (s->deserialized_state == SERVICE_START_PRE || s->deserialized_state == SERVICE_START || @@ -1626,9 +1644,11 @@ static int service_coldplug(Unit *u) { s->deserialized_state == SERVICE_STOP_POST || s->deserialized_state == SERVICE_FINAL_SIGTERM || s->deserialized_state == SERVICE_FINAL_SIGKILL) - if (s->control_pid > 0) - if ((r = unit_watch_pid(UNIT(s), s->control_pid)) < 0) + if (s->control_pid > 0) { + r = unit_watch_pid(UNIT(s), s->control_pid); + if (r < 0) return r; + } if (s->deserialized_state == SERVICE_START_POST || s->deserialized_state == SERVICE_RUNNING) @@ -1663,7 +1683,8 @@ static int service_collect_fds(Service *s, int **fds, unsigned *n_fds) { sock = SOCKET(u); - if ((r = socket_collect_fds(sock, &cfds, &cn_fds)) < 0) + r = socket_collect_fds(sock, &cfds, &cn_fds); + if (r < 0) goto fail; if (!cfds) @@ -1675,7 +1696,8 @@ static int service_collect_fds(Service *s, int **fds, unsigned *n_fds) { } else { int *t; - if (!(t = new(int, rn_fds+cn_fds))) { + t = new(int, rn_fds+cn_fds); + if (!t) { free(cfds); r = -ENOMEM; goto fail; @@ -1716,9 +1738,11 @@ static int service_spawn( pid_t pid; int r; - int *fds = NULL, *fdsbuf = NULL; + int *fds = NULL; + int _cleanup_free_ *fdsbuf = NULL; unsigned n_fds = 0, n_env = 0; - char **argv = NULL, **final_env = NULL, **our_env = NULL; + char _cleanup_strv_free_ + **argv = NULL, **final_env = NULL, **our_env = NULL; assert(s); assert(c); @@ -1733,7 +1757,8 @@ static int service_spawn( fds = &s->socket_fd; n_fds = 1; } else { - if ((r = service_collect_fds(s, &fdsbuf, &n_fds)) < 0) + r = service_collect_fds(s, &fdsbuf, &n_fds); + if (r < 0) goto fail; fds = fdsbuf; @@ -1741,13 +1766,15 @@ static int service_spawn( } if (timeout && s->timeout_start_usec) { - r = unit_watch_timer(UNIT(s), CLOCK_MONOTONIC, true, s->timeout_start_usec, &s->timer_watch); + r = unit_watch_timer(UNIT(s), CLOCK_MONOTONIC, true, + s->timeout_start_usec, &s->timer_watch); if (r < 0) goto fail; } else unit_unwatch_timer(UNIT(s), &s->timer_watch); - if (!(argv = unit_full_printf_strv(UNIT(s), c->argv))) { + argv = unit_full_printf_strv(UNIT(s), c->argv); + if (!argv) { r = -ENOMEM; goto fail; } @@ -1803,29 +1830,19 @@ static int service_spawn( UNIT(s)->id, s->type == SERVICE_IDLE ? UNIT(s)->manager->idle_pipe : NULL, &pid); - if (r < 0) goto fail; - if ((r = unit_watch_pid(UNIT(s), pid)) < 0) + r = unit_watch_pid(UNIT(s), pid); + if (r < 0) /* FIXME: we need to do something here */ goto fail; - free(fdsbuf); - strv_free(argv); - strv_free(our_env); - strv_free(final_env); - *_pid = pid; return 0; fail: - free(fdsbuf); - strv_free(argv); - strv_free(our_env); - strv_free(final_env); - if (timeout) unit_unwatch_timer(UNIT(s), &s->timer_watch); @@ -1868,7 +1885,8 @@ static int cgroup_good(Service *s) { assert(s); - if ((r = cgroup_bonding_is_empty_list(UNIT(s)->cgroup_bondings)) < 0) + r = cgroup_bonding_is_empty_list(UNIT(s)->cgroup_bondings); + if (r < 0) return r; return !r; @@ -1925,7 +1943,8 @@ static void service_enter_stop_post(Service *s, ServiceResult f) { service_unwatch_control_pid(s); - if ((s->control_command = s->exec_command[SERVICE_EXEC_STOP_POST])) { + s->control_command = s->exec_command[SERVICE_EXEC_STOP_POST]; + if (s->control_command) { s->control_command_id = SERVICE_EXEC_STOP_POST; r = service_spawn(s, @@ -1975,7 +1994,8 @@ static void service_enter_signal(Service *s, ServiceState state, ServiceResult f if (r > 0) { if (s->timeout_stop_usec > 0) { - r = unit_watch_timer(UNIT(s), CLOCK_MONOTONIC, true, s->timeout_stop_usec, &s->timer_watch); + r = unit_watch_timer(UNIT(s), CLOCK_MONOTONIC, true, + s->timeout_stop_usec, &s->timer_watch); if (r < 0) goto fail; } @@ -2008,7 +2028,8 @@ static void service_enter_stop(Service *s, ServiceResult f) { service_unwatch_control_pid(s); - if ((s->control_command = s->exec_command[SERVICE_EXEC_STOP])) { + s->control_command = s->exec_command[SERVICE_EXEC_STOP]; + if (s->control_command) { s->control_command_id = SERVICE_EXEC_STOP; r = service_spawn(s, @@ -2064,7 +2085,8 @@ static void service_enter_start_post(Service *s) { if (s->watchdog_usec > 0) service_reset_watchdog(s); - if ((s->control_command = s->exec_command[SERVICE_EXEC_START_POST])) { + s->control_command = s->exec_command[SERVICE_EXEC_START_POST]; + if (s->control_command) { s->control_command_id = SERVICE_EXEC_START_POST; r = service_spawn(s, @@ -2126,7 +2148,8 @@ static void service_enter_start(Service *s) { r = service_spawn(s, c, - s->type == SERVICE_FORKING || s->type == SERVICE_DBUS || s->type == SERVICE_NOTIFY || s->type == SERVICE_ONESHOT, + s->type == SERVICE_FORKING || s->type == SERVICE_DBUS || + s->type == SERVICE_NOTIFY || s->type == SERVICE_ONESHOT, true, true, true, @@ -2183,11 +2206,13 @@ static void service_enter_start_pre(Service *s) { service_unwatch_control_pid(s); - if ((s->control_command = s->exec_command[SERVICE_EXEC_START_PRE])) { + s->control_command = s->exec_command[SERVICE_EXEC_START_PRE]; + if (s->control_command) { /* Before we start anything, let's clear up what might * be left from previous runs. */ - cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, SIGKILL, true, true, NULL, "control"); + cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, SIGKILL, + true,true, NULL, "control"); s->control_command_id = SERVICE_EXEC_START_PRE; @@ -2267,7 +2292,8 @@ static void service_enter_reload(Service *s) { service_unwatch_control_pid(s); - if ((s->control_command = s->exec_command[SERVICE_EXEC_RELOAD])) { + s->control_command = s->exec_command[SERVICE_EXEC_RELOAD]; + if (s->control_command) { s->control_command_id = SERVICE_EXEC_RELOAD; r = service_spawn(s, @@ -2401,7 +2427,9 @@ static int service_start_limit_test(Service *s) { log_warning_unit(UNIT(s)->id, "%s start request repeated too quickly, rebooting.", UNIT(s)->id); - r = manager_add_job_by_name(UNIT(s)->manager, JOB_START, SPECIAL_REBOOT_TARGET, JOB_REPLACE, true, &error, NULL); + r = manager_add_job_by_name(UNIT(s)->manager, JOB_START, + SPECIAL_REBOOT_TARGET, JOB_REPLACE, + true, &error, NULL); if (r < 0) { log_error_unit(UNIT(s)->id, "Failed to reboot: %s.", bus_error(&error, r)); @@ -2555,7 +2583,8 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) { unit_serialize_item(u, f, "reload-result", service_result_to_string(s->reload_result)); if (s->control_pid > 0) - unit_serialize_item_format(u, f, "control-pid", "%lu", (unsigned long) s->control_pid); + unit_serialize_item_format(u, f, "control-pid", "%lu", + (unsigned long) s->control_pid); if (s->main_pid_known && s->main_pid > 0) unit_serialize_item_format(u, f, "main-pid", "%lu", (unsigned long) s->main_pid); @@ -2569,7 +2598,8 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) { * multiple commands attached here, we will start from the * first one again */ if (s->control_command_id >= 0) - unit_serialize_item(u, f, "control-command", service_exec_command_to_string(s->control_command_id)); + unit_serialize_item(u, f, "control-command", + service_exec_command_to_string(s->control_command_id)); if (s->socket_fd >= 0) { int copy; @@ -2581,17 +2611,23 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) { } if (s->main_exec_status.pid > 0) { - unit_serialize_item_format(u, f, "main-exec-status-pid", "%lu", (unsigned long) s->main_exec_status.pid); - dual_timestamp_serialize(f, "main-exec-status-start", &s->main_exec_status.start_timestamp); - dual_timestamp_serialize(f, "main-exec-status-exit", &s->main_exec_status.exit_timestamp); + unit_serialize_item_format(u, f, "main-exec-status-pid", "%lu", + (unsigned long) s->main_exec_status.pid); + dual_timestamp_serialize(f, "main-exec-status-start", + &s->main_exec_status.start_timestamp); + dual_timestamp_serialize(f, "main-exec-status-exit", + &s->main_exec_status.exit_timestamp); if (dual_timestamp_is_set(&s->main_exec_status.exit_timestamp)) { - unit_serialize_item_format(u, f, "main-exec-status-code", "%i", s->main_exec_status.code); - unit_serialize_item_format(u, f, "main-exec-status-status", "%i", s->main_exec_status.status); + unit_serialize_item_format(u, f, "main-exec-status-code", "%i", + s->main_exec_status.code); + unit_serialize_item_format(u, f, "main-exec-status-status", "%i", + s->main_exec_status.status); } } if (dual_timestamp_is_set(&s->watchdog_timestamp)) - dual_timestamp_serialize(f, "watchdog-timestamp", &s->watchdog_timestamp); + dual_timestamp_serialize(f, "watchdog-timestamp", + &s->watchdog_timestamp); return 0; } @@ -2607,7 +2643,8 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, if (streq(key, "state")) { ServiceState state; - if ((state = service_state_from_string(value)) < 0) + state = service_state_from_string(value); + if (state < 0) log_debug_unit(u->id, "Failed to parse state value %s", value); else s->deserialized_state = state; @@ -2646,14 +2683,18 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, } else if (streq(key, "main-pid-known")) { int b; - if ((b = parse_boolean(value)) < 0) + b = parse_boolean(value); + if (b < 0) log_debug_unit(u->id, "Failed to parse main-pid-known value %s", value); else s->main_pid_known = b; } else if (streq(key, "status-text")) { char *t; - if ((t = strdup(value))) { + t = strdup(value); + if (!t) + log_oom(); + else { free(s->status_text); s->status_text = t; } @@ -2661,7 +2702,8 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, } else if (streq(key, "control-command")) { ServiceExecCommand id; - if ((id = service_exec_command_from_string(value)) < 0) + id = service_exec_command_from_string(value); + if (id < 0) log_debug_unit(u->id, "Failed to parse exec-command value %s", value); else { s->control_command_id = id; @@ -2973,7 +3015,8 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) { s->control_pid = 0; if (s->control_command) { - exec_status_exit(&s->control_command->exec_status, &s->exec_context, pid, code, status); + exec_status_exit(&s->control_command->exec_status, + &s->exec_context, pid, code, status); if (s->control_command->ignore) f = SERVICE_SUCCESS; @@ -2989,7 +3032,8 @@ static void service_sigchld_event(Unit *u, pid_t pid, int code, int status) { /* Immediately get rid of the cgroup, so that the * kernel doesn't delay the cgroup empty messages for * the service cgroup any longer than necessary */ - cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, SIGKILL, true, true, NULL, "control"); + cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, SIGKILL, + true, true, NULL, "control"); if (s->control_command && s->control_command->command_next && @@ -3371,9 +3415,10 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) { static int service_enumerate(Manager *m) { char **p; unsigned i; - DIR *d = NULL; - char *path = NULL, *fpath = NULL, *name = NULL; - Set *runlevel_services[ELEMENTSOF(rcnd_table)], *shutdown_services = NULL; + DIR _cleanup_closedir_ *d = NULL; + char _cleanup_free_ *path = NULL, *fpath = NULL, *name = NULL; + Set *runlevel_services[ELEMENTSOF(rcnd_table)]; + Set _cleanup_set_free_ *shutdown_services = NULL; Unit *service; Iterator j; int r; @@ -3399,9 +3444,10 @@ static int service_enumerate(Manager *m) { if (d) closedir(d); - if (!(d = opendir(path))) { + d = opendir(path); + if (!d) { if (errno != ENOENT) - log_warning("opendir() failed on %s: %s", path, strerror(errno)); + log_warning("opendir(%s) failed: %s", path, strerror(errno)); continue; } @@ -3440,8 +3486,9 @@ static int service_enumerate(Manager *m) { } free(name); - if (!(name = sysv_translate_name(de->d_name + 3))) { - r = -ENOMEM; + name = sysv_translate_name(de->d_name + 3); + if (!name) { + r = log_oom(); goto finish; } @@ -3460,19 +3507,25 @@ static int service_enumerate(Manager *m) { SERVICE(service)->sysv_enabled = true; } - if ((r = set_ensure_allocated(&runlevel_services[i], trivial_hash_func, trivial_compare_func)) < 0) + r = set_ensure_allocated(&runlevel_services[i], + trivial_hash_func, trivial_compare_func); + if (r < 0) goto finish; - if ((r = set_put(runlevel_services[i], service)) < 0) + r = set_put(runlevel_services[i], service); + if (r < 0) goto finish; } else if (de->d_name[0] == 'K' && (rcnd_table[i].type == RUNLEVEL_DOWN)) { - if ((r = set_ensure_allocated(&shutdown_services, trivial_hash_func, trivial_compare_func)) < 0) + r = set_ensure_allocated(&shutdown_services, + trivial_hash_func, trivial_compare_func); + if (r < 0) goto finish; - if ((r = set_put(shutdown_services, service)) < 0) + r = set_put(shutdown_services, service); + if (r < 0) goto finish; } } @@ -3493,7 +3546,10 @@ static int service_enumerate(Manager *m) { if (service->fragment_path) continue; - if ((r = unit_add_two_dependencies_by_name_inverse(service, UNIT_AFTER, UNIT_WANTS, rcnd_table[i].target, NULL, true)) < 0) + r = unit_add_two_dependencies_by_name_inverse( + service, UNIT_AFTER, UNIT_WANTS, + rcnd_table[i].target, NULL, true); + if (r < 0) goto finish; } @@ -3508,23 +3564,19 @@ static int service_enumerate(Manager *m) { if (service->fragment_path) continue; - if ((r = unit_add_two_dependencies_by_name(service, UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true)) < 0) + r = unit_add_two_dependencies_by_name( + service, UNIT_BEFORE, UNIT_CONFLICTS, + SPECIAL_SHUTDOWN_TARGET, NULL, true); + if (r < 0) goto finish; } r = 0; finish: - free(path); - free(fpath); - free(name); for (i = 0; i < ELEMENTSOF(rcnd_table); i++) set_free(runlevel_services[i]); - set_free(shutdown_services); - - if (d) - closedir(d); return r; } -- cgit v1.2.1 From d288f79fb4a2fe4a93cf99f74dacd2cebd3f2440 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 2 Mar 2013 20:14:21 -0500 Subject: journald: do not barf when setting RateLimitInterval=0 Assertion 'interval > 0 || burst == 0' failed at src/journal/journald-rate-limit.c:78, function journal_rate_limit_new(). Aborting. --- src/journal/journald-server.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 818bd0803a..c8a6285a84 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -1310,6 +1310,12 @@ int server_init(Server *s) { server_parse_config_file(s); server_parse_proc_cmdline(s); + if (!!s->rate_limit_interval ^ !!s->rate_limit_burst) { + log_debug("Setting both rate limit interval and burst from %llu,%u to 0,0", + (long long unsigned) s->rate_limit_interval, + s->rate_limit_burst); + s->rate_limit_interval = s->rate_limit_burst = 0; + } mkdir_p("/run/systemd/journal", 0755); @@ -1396,7 +1402,8 @@ int server_init(Server *s) { if (!s->udev) return -ENOMEM; - s->rate_limit = journal_rate_limit_new(s->rate_limit_interval, s->rate_limit_burst); + s->rate_limit = journal_rate_limit_new(s->rate_limit_interval, + s->rate_limit_burst); if (!s->rate_limit) return -ENOMEM; -- cgit v1.2.1 From 3f60bcb5e69846fe8a3156ca1c9a7e0813ac158a Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sun, 3 Mar 2013 18:20:09 +0100 Subject: udev: firmware - do not created /run/udev/firmware-missing/ The userspace firmware loader is deprecated now, and will be entirely removed when we depend on a kernel version with the built-in firmware loader available. --- TODO | 2 +- src/udev/udev-builtin-firmware.c | 18 ------------------ src/udev/udevadm-info.c | 6 ------ 3 files changed, 1 insertion(+), 25 deletions(-) diff --git a/TODO b/TODO index 5f351b24a6..4ea0471a1f 100644 --- a/TODO +++ b/TODO @@ -421,7 +421,7 @@ Features: * ConditionSecurity= should learn about IMA and SMACK * udev: - - remove all (misguided from day 1) userspace firmware_class handling + - remove src/udev/udev-builtin-firmware.c (CONFIG_FW_LOADER_USER_HELPER=n) - move to LGPL - unify utf8 validator code with shared/ - kill scsi_id diff --git a/src/udev/udev-builtin-firmware.c b/src/udev/udev-builtin-firmware.c index 9cb4294633..b80940b6ef 100644 --- a/src/udev/udev-builtin-firmware.c +++ b/src/udev/udev-builtin-firmware.c @@ -78,8 +78,6 @@ static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], boo { struct udev *udev = udev_device_get_udev(dev); static const char *searchpath[] = { FIRMWARE_PATH }; - char fwencpath[UTIL_PATH_SIZE]; - char misspath[UTIL_PATH_SIZE]; char loadpath[UTIL_PATH_SIZE]; char datapath[UTIL_PATH_SIZE]; char fwpath[UTIL_PATH_SIZE]; @@ -111,23 +109,10 @@ static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], boo break; } - util_path_encode(firmware, fwencpath, sizeof(fwencpath)); - strscpyl(misspath, sizeof(misspath), "/run/udev/firmware-missing/", fwencpath, NULL); strscpyl(loadpath, sizeof(loadpath), udev_device_get_syspath(dev), "/loading", NULL); if (fwfile == NULL) { - int err; - - /* This link indicates the missing firmware file and the associated device */ log_debug("did not find firmware file '%s'\n", firmware); - do { - err = mkdir_parents(misspath, 0755); - if (err != 0 && err != -ENOENT) - break; - err = symlink(udev_device_get_devpath(dev), misspath); - if (err != 0) - err = -errno; - } while (err == -ENOENT); rc = EXIT_FAILURE; /* * Do not cancel the request in the initrd, the real root might have @@ -146,9 +131,6 @@ static int builtin_firmware(struct udev_device *dev, int argc, char *argv[], boo goto exit; } - if (unlink(misspath) == 0) - util_delete_path(udev, misspath); - if (!set_loading(udev, loadpath, "1")) goto exit; diff --git a/src/udev/udevadm-info.c b/src/udev/udevadm-info.c index 0f4565eda8..c47821401a 100644 --- a/src/udev/udevadm-info.c +++ b/src/udev/udevadm-info.c @@ -256,12 +256,6 @@ static void cleanup_db(struct udev *udev) cleanup_dir(dir, 0, 1); closedir(dir); } - - dir = opendir("/run/udev/firmware-missing"); - if (dir != NULL) { - cleanup_dir(dir, 0, 1); - closedir(dir); - } } static struct udev_device *find_device(struct udev *udev, const char *id, const char *prefix) -- cgit v1.2.1 From 1d600df55bdba448b05d6f8293028d6b6702914b Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sun, 3 Mar 2013 18:35:22 +0100 Subject: udev: remove database conversion code --- src/udev/udevd.c | 87 -------------------------------------------------------- 1 file changed, 87 deletions(-) diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 92911efa90..0a3ab687fd 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -896,90 +896,6 @@ static int mem_size_mb(void) return memsize; } -static int convert_db(struct udev *udev) -{ - char filename[UTIL_PATH_SIZE]; - struct udev_enumerate *udev_enumerate; - struct udev_list_entry *list_entry; - - /* current database */ - if (access("/run/udev/data", F_OK) >= 0) - return 0; - - /* make sure we do not get here again */ - mkdir_p("/run/udev/data", 0755); - - /* old database */ - strscpyl(filename, sizeof(filename), "/dev/.udev/db", NULL); - if (access(filename, F_OK) < 0) - return 0; - - print_kmsg("converting old udev database\n"); - - udev_enumerate = udev_enumerate_new(udev); - if (udev_enumerate == NULL) - return -1; - udev_enumerate_scan_devices(udev_enumerate); - udev_list_entry_foreach(list_entry, udev_enumerate_get_list_entry(udev_enumerate)) { - struct udev_device *device; - - device = udev_device_new_from_syspath(udev, udev_list_entry_get_name(list_entry)); - if (device == NULL) - continue; - - /* try to find the old database for devices without a current one */ - if (udev_device_read_db(device, NULL) < 0) { - bool have_db; - const char *id; - struct stat stats; - char devpath[UTIL_PATH_SIZE]; - char from[UTIL_PATH_SIZE]; - - have_db = false; - - /* find database in old location */ - id = udev_device_get_id_filename(device); - strscpyl(from, sizeof(from), "/dev/.udev/db/", id, NULL); - if (lstat(from, &stats) == 0) { - if (!have_db) { - udev_device_read_db(device, from); - have_db = true; - } - unlink(from); - } - - /* find old database with $subsys:$sysname name */ - strscpyl(from, sizeof(from), "/dev/.udev/db/", - udev_device_get_subsystem(device), ":", udev_device_get_sysname(device), NULL); - if (lstat(from, &stats) == 0) { - if (!have_db) { - udev_device_read_db(device, from); - have_db = true; - } - unlink(from); - } - - /* find old database with the encoded devpath name */ - util_path_encode(udev_device_get_devpath(device), devpath, sizeof(devpath)); - strscpyl(from, sizeof(from), "/dev/.udev/db/", devpath, NULL); - if (lstat(from, &stats) == 0) { - if (!have_db) { - udev_device_read_db(device, from); - have_db = true; - } - unlink(from); - } - - /* write out new database */ - if (have_db) - udev_device_update_db(device); - } - udev_device_unref(device); - } - udev_enumerate_unref(udev_enumerate); - return 0; -} - static int systemd_fds(struct udev *udev, int *rctrl, int *rnetlink) { int ctrl = -1, netlink = -1; @@ -1355,9 +1271,6 @@ int main(int argc, char *argv[]) goto exit; } - /* if needed, convert old database from earlier udev version */ - convert_db(udev); - if (children_max <= 0) { int memsize = mem_size_mb(); -- cgit v1.2.1 From bb26309dd042c79de907f103d83f398b9436cde0 Mon Sep 17 00:00:00 2001 From: Rob Clark Date: Sun, 3 Mar 2013 12:55:08 -0500 Subject: udev: fix segfault with android rndis The android gadget driver for network tethering over rndis somehow has a parent device with a null subsystem. Probably this is bug in android driver, but it is easy enough to make systemd/udev behave gracefully and not segfault. And this will help for making linux distros with systemd (like fedora) work on android devices. --- src/udev/udev-builtin-net_id.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/udev/udev-builtin-net_id.c b/src/udev/udev-builtin-net_id.c index fbacb45877..fdbec5ae91 100644 --- a/src/udev/udev-builtin-net_id.c +++ b/src/udev/udev-builtin-net_id.c @@ -256,7 +256,7 @@ static int names_pci(struct udev_device *dev, struct netnames *names) { if (!parent) return -ENOENT; /* check if our direct parent is a PCI device with no other bus in-between */ - if (streq("pci", udev_device_get_subsystem(parent))) { + if (streq_ptr("pci", udev_device_get_subsystem(parent))) { names->type = NET_PCI; names->pcidev = parent; } else { -- cgit v1.2.1 From 6b7620431fb59c3a670580851502a2756a0cf8e9 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Sun, 3 Mar 2013 21:27:44 +0100 Subject: build-sys: use $PKG_CONFIG instead of calling the pkg-config binary directly --- configure.ac | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/configure.ac b/configure.ac index ea9fafe2a4..3f0fe01abe 100644 --- a/configure.ac +++ b/configure.ac @@ -796,22 +796,22 @@ AC_ARG_WITH([tty-gid], AC_ARG_WITH([dbuspolicydir], AS_HELP_STRING([--with-dbuspolicydir=DIR], [D-Bus policy directory]), [], - [with_dbuspolicydir=`pkg-config --variable=sysconfdir dbus-1`/dbus-1/system.d]) + [with_dbuspolicydir=`$PKG_CONFIG --variable=sysconfdir dbus-1`/dbus-1/system.d]) AC_ARG_WITH([dbussessionservicedir], AS_HELP_STRING([--with-dbussessionservicedir=DIR], [D-Bus session service directory]), [], - [with_dbussessionservicedir=`pkg-config --variable=session_bus_services_dir dbus-1`]) + [with_dbussessionservicedir=`$PKG_CONFIG --variable=session_bus_services_dir dbus-1`]) AC_ARG_WITH([dbussystemservicedir], AS_HELP_STRING([--with-dbussystemservicedir=DIR], [D-Bus system service directory]), [], - [with_dbussystemservicedir=`pkg-config --variable=session_bus_services_dir dbus-1`/../system-services]) + [with_dbussystemservicedir=`$PKG_CONFIG --variable=session_bus_services_dir dbus-1`/../system-services]) AC_ARG_WITH([dbusinterfacedir], AS_HELP_STRING([--with-dbusinterfacedir=DIR], [D-Bus interface directory]), [], - [with_dbusinterfacedir=`pkg-config --variable=session_bus_services_dir dbus-1`/../interfaces]) + [with_dbusinterfacedir=`$PKG_CONFIG --variable=session_bus_services_dir dbus-1`/../interfaces]) AC_ARG_WITH([rootprefix], AS_HELP_STRING([--with-rootprefix=DIR], [rootfs directory prefix for config files and kernel modules]), -- cgit v1.2.1 From db059f1b031a92ed45b62d1036877abd9c128d1b Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Sun, 3 Mar 2013 21:32:49 +0100 Subject: build-sys: don't hard code bash-completion directory --- Makefile.am | 3 ++- configure.ac | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 6e12a43ddf..f18cccd070 100644 --- a/Makefile.am +++ b/Makefile.am @@ -64,7 +64,7 @@ pamlibdir=@pamlibdir@ pkgconfigdatadir=$(datadir)/pkgconfig pkgconfiglibdir=$(libdir)/pkgconfig polkitpolicydir=$(datadir)/polkit-1/actions -bashcompletiondir=$(datadir)/bash-completion/completions +bashcompletiondir=@bashcompletiondir@ rpmmacrosdir=$(sysconfdir)/rpm sysvinitdir=$(SYSTEM_SYSVINIT_PATH) sysvrcnddir=$(SYSTEM_SYSVRCND_PATH) @@ -3797,6 +3797,7 @@ DISTCHECK_CONFIGURE_FLAGS = \ --with-dbussessionservicedir=$$dc_install_base/$(dbussessionservicedir) \ --with-dbussystemservicedir=$$dc_install_base/$(dbussystemservicedir) \ --with-dbusinterfacedir=$$dc_install_base/$(dbusinterfacedir) \ + --with-bashcompletiondir=$$dc_install_base/$(bashcompletiondir) \ --with-pamlibdir=$$dc_install_base/$(pamlibdir) \ --with-rootprefix=$$dc_install_base \ --disable-split-usr diff --git a/configure.ac b/configure.ac index 3f0fe01abe..c4503bfcb2 100644 --- a/configure.ac +++ b/configure.ac @@ -813,6 +813,15 @@ AC_ARG_WITH([dbusinterfacedir], [], [with_dbusinterfacedir=`$PKG_CONFIG --variable=session_bus_services_dir dbus-1`/../interfaces]) +AC_ARG_WITH([bashcompletiondir], + AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]), + [], + [AS_IF([`$PKG_CONFIG --exists bash-completion`], [ + with_bashcompletiondir=`$PKG_CONFIG --variable=completionsdir bash-completion` + ] , [ + with_bashcompletiondir=${datadir}/bash-completion/completions + ])]) + AC_ARG_WITH([rootprefix], AS_HELP_STRING([--with-rootprefix=DIR], [rootfs directory prefix for config files and kernel modules]), [], [with_rootprefix=${ac_default_prefix}]) @@ -851,6 +860,7 @@ AC_SUBST([dbuspolicydir], [$with_dbuspolicydir]) AC_SUBST([dbussessionservicedir], [$with_dbussessionservicedir]) AC_SUBST([dbussystemservicedir], [$with_dbussystemservicedir]) AC_SUBST([dbusinterfacedir], [$with_dbusinterfacedir]) +AC_SUBST([bashcompletiondir], [$with_bashcompletiondir]) AC_SUBST([pamlibdir], [$with_pamlibdir]) AC_SUBST([rootprefix], [$with_rootprefix]) AC_SUBST([rootlibdir], [$with_rootlibdir]) @@ -924,6 +934,7 @@ AC_MSG_RESULT([ D-Bus session dir: ${with_dbussessionservicedir} D-Bus system dir: ${with_dbussystemservicedir} D-Bus interfaces dir: ${with_dbusinterfacedir} + Bash completions dir: ${with_bashcompletiondir} Extra start script: ${RC_LOCAL_SCRIPT_PATH_START} Extra stop script: ${RC_LOCAL_SCRIPT_PATH_STOP} -- cgit v1.2.1 From 25ee45f9953c121fc26a54a85ad7bb3a3180152b Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Mon, 4 Mar 2013 01:38:16 +0100 Subject: build-sys: replace backticks `` with $() for consistencies sake use $() everywhere --- Makefile.am | 2 +- configure.ac | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Makefile.am b/Makefile.am index f18cccd070..5453868f82 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3504,7 +3504,7 @@ sphinx-%: $(AM_V_at)echo Output has been generated in $(abs_top_builddir)/man/python-systemd/ destdir-sphinx: all - dir="`mktemp -d /tmp/systemd-install.XXXXXX`" && \ + dir="$(mktemp -d /tmp/systemd-install.XXXXXX)" && \ $(MAKE) DESTDIR="$$dir" install && \ $(MAKE) DESTDIR="$$dir" sphinx-html && \ rm -rf "$$dir" diff --git a/configure.ac b/configure.ac index c4503bfcb2..23322c7a85 100644 --- a/configure.ac +++ b/configure.ac @@ -164,7 +164,7 @@ AS_IF([test "x$with_python" != "xno"], [ AM_CONDITIONAL([HAVE_PYTHON], [test "x$have_python" = "xyes"]) AS_IF([test "x$PYTHON_BINARY" = "x"], [AS_IF([test "x$have_python" = "xyes"], - [PYTHON_BINARY="`which "$PYTHON"`"], + [PYTHON_BINARY="$(which "$PYTHON")"], [PYTHON_BINARY=/usr/bin/python])]) AC_ARG_VAR(PYTHON_BINARY, [Python binary used to launch installed scripts]) @@ -172,8 +172,8 @@ AS_IF([test "x$with_python" != "xno"], [ AC_PATH_PROG(PYTHON_CONFIG, python${PYTHON_VERSION}-config) AS_IF([test -n "$PYTHON_CONFIG"], [ have_python_devel=yes - PYTHON_CFLAGS="`$PYTHON_CONFIG --cflags` $python_extra_cflags" - PYTHON_LIBS="`$PYTHON_CONFIG --ldflags`" + PYTHON_CFLAGS="$($PYTHON_CONFIG --cflags) $python_extra_cflags" + PYTHON_LIBS="$($PYTHON_CONFIG --ldflags)" AC_SUBST(PYTHON_CFLAGS) AC_SUBST(PYTHON_LIBS) AC_PATH_PROGS(SPHINX_BUILD, sphinx-build-${PYTHON_VERSION} sphinx-build) @@ -796,28 +796,28 @@ AC_ARG_WITH([tty-gid], AC_ARG_WITH([dbuspolicydir], AS_HELP_STRING([--with-dbuspolicydir=DIR], [D-Bus policy directory]), [], - [with_dbuspolicydir=`$PKG_CONFIG --variable=sysconfdir dbus-1`/dbus-1/system.d]) + [with_dbuspolicydir=$($PKG_CONFIG --variable=sysconfdir dbus-1)/dbus-1/system.d]) AC_ARG_WITH([dbussessionservicedir], AS_HELP_STRING([--with-dbussessionservicedir=DIR], [D-Bus session service directory]), [], - [with_dbussessionservicedir=`$PKG_CONFIG --variable=session_bus_services_dir dbus-1`]) + [with_dbussessionservicedir=$($PKG_CONFIG --variable=session_bus_services_dir dbus-1)]) AC_ARG_WITH([dbussystemservicedir], AS_HELP_STRING([--with-dbussystemservicedir=DIR], [D-Bus system service directory]), [], - [with_dbussystemservicedir=`$PKG_CONFIG --variable=session_bus_services_dir dbus-1`/../system-services]) + [with_dbussystemservicedir=$($PKG_CONFIG --variable=session_bus_services_dir dbus-1)/../system-services]) AC_ARG_WITH([dbusinterfacedir], AS_HELP_STRING([--with-dbusinterfacedir=DIR], [D-Bus interface directory]), [], - [with_dbusinterfacedir=`$PKG_CONFIG --variable=session_bus_services_dir dbus-1`/../interfaces]) + [with_dbusinterfacedir=$($PKG_CONFIG --variable=session_bus_services_dir dbus-1)/../interfaces]) AC_ARG_WITH([bashcompletiondir], AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]), [], - [AS_IF([`$PKG_CONFIG --exists bash-completion`], [ - with_bashcompletiondir=`$PKG_CONFIG --variable=completionsdir bash-completion` + [AS_IF([$($PKG_CONFIG --exists bash-completion)], [ + with_bashcompletiondir=$($PKG_CONFIG --variable=completionsdir bash-completion) ] , [ with_bashcompletiondir=${datadir}/bash-completion/completions ])]) -- cgit v1.2.1 From 5a37b9476f0e82a3ea0c3bd4cb19eb25cf776af7 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Mon, 4 Mar 2013 01:39:22 +0100 Subject: build-sys: resolve absolute path for the dbus directories /usr/share/dbus-1/system-services simply looks a lot nicer then /usr/share/dbus-1/services/../system-services --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index 23322c7a85..fab0b91c55 100644 --- a/configure.ac +++ b/configure.ac @@ -806,12 +806,12 @@ AC_ARG_WITH([dbussessionservicedir], AC_ARG_WITH([dbussystemservicedir], AS_HELP_STRING([--with-dbussystemservicedir=DIR], [D-Bus system service directory]), [], - [with_dbussystemservicedir=$($PKG_CONFIG --variable=session_bus_services_dir dbus-1)/../system-services]) + [with_dbussystemservicedir=$(readlink -f $($PKG_CONFIG --variable=session_bus_services_dir dbus-1)/../system-services)]) AC_ARG_WITH([dbusinterfacedir], AS_HELP_STRING([--with-dbusinterfacedir=DIR], [D-Bus interface directory]), [], - [with_dbusinterfacedir=$($PKG_CONFIG --variable=session_bus_services_dir dbus-1)/../interfaces]) + [with_dbusinterfacedir=$(readlink -f $($PKG_CONFIG --variable=session_bus_services_dir dbus-1)/../interfaces)]) AC_ARG_WITH([bashcompletiondir], AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]), -- cgit v1.2.1 From 03c149144d374cffd40a17ffb067837e3e220933 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Mon, 4 Mar 2013 02:13:34 +0100 Subject: build-sys: be more tolerant if dbus directories do not exist use readlink -m instead of -f since we might be building in a minimal chroot where those directories do not actually exist and readlink -f would return an empty string. --- configure.ac | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index fab0b91c55..43b8225285 100644 --- a/configure.ac +++ b/configure.ac @@ -806,12 +806,12 @@ AC_ARG_WITH([dbussessionservicedir], AC_ARG_WITH([dbussystemservicedir], AS_HELP_STRING([--with-dbussystemservicedir=DIR], [D-Bus system service directory]), [], - [with_dbussystemservicedir=$(readlink -f $($PKG_CONFIG --variable=session_bus_services_dir dbus-1)/../system-services)]) + [with_dbussystemservicedir=$(readlink -m $($PKG_CONFIG --variable=session_bus_services_dir dbus-1)/../system-services)]) AC_ARG_WITH([dbusinterfacedir], AS_HELP_STRING([--with-dbusinterfacedir=DIR], [D-Bus interface directory]), [], - [with_dbusinterfacedir=$(readlink -f $($PKG_CONFIG --variable=session_bus_services_dir dbus-1)/../interfaces)]) + [with_dbusinterfacedir=$(readlink -m $($PKG_CONFIG --variable=session_bus_services_dir dbus-1)/../interfaces)]) AC_ARG_WITH([bashcompletiondir], AS_HELP_STRING([--with-bashcompletiondir=DIR], [Bash completions directory]), -- cgit v1.2.1 From bc41f93e90f6edcc9067f3bc1085bb6c85082c00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 3 Mar 2013 01:32:34 -0500 Subject: core/path: install inotify watches top-down instead of bottom-up When watches are installed from the bottom, it is always possible to race, and miss a file creation event. The race can be avoided if a watch is first established for a parent directory, and then for the file in the directory. If the file is created in the time between, the watch on the parent directory will fire. Some messages (mostly at debug level) are added to help diagnose pidfile issues. Should fix https://bugzilla.redhat.com/show_bug.cgi?id=917075. --- src/core/path.c | 78 +++++++++++++++++++++++++++++++++--------------------- src/core/service.c | 16 +++++++++-- 2 files changed, 62 insertions(+), 32 deletions(-) diff --git a/src/core/path.c b/src/core/path.c index fc101280a1..01a2b0810e 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -53,8 +53,8 @@ int path_spec_watch(PathSpec *s, Unit *u) { }; bool exists = false; - char _cleanup_free_ *k = NULL; - char *slash; + char _cleanup_free_ *path = NULL; + char *slash, *oldslash = NULL; int r; assert(u); @@ -62,8 +62,8 @@ int path_spec_watch(PathSpec *s, Unit *u) { path_spec_unwatch(s, u); - k = strdup(s->path); - if (!k) + path = strdup(s->path); + if (!path) return -ENOMEM; s->inotify_fd = inotify_init1(IN_NONBLOCK|IN_CLOEXEC); @@ -76,43 +76,61 @@ int path_spec_watch(PathSpec *s, Unit *u) { if (r < 0) goto fail; - s->primary_wd = inotify_add_watch(s->inotify_fd, k, flags_table[s->type]); - if (s->primary_wd >= 0) - exists = true; - else if (errno != EACCES && errno != ENOENT) { - log_error("Failed to add watch on %s: %m", k); - r = -errno; - goto fail; - } + /* This assumes the path was passed through path_kill_slashes()! */ - do { + for(slash = strchr(path, '/'); ; slash = strchr(slash+1, '/')) { int flags; + char tmp; + + if (slash) { + tmp = slash[slash == path]; + slash[slash == path] = '\0'; + flags = IN_MOVE_SELF | IN_DELETE_SELF | IN_ATTRIB | IN_CREATE | IN_MOVED_TO; + } else { + flags = flags_table[s->type]; + } - /* This assumes the path was passed through path_kill_slashes()! */ - slash = strrchr(k, '/'); - if (!slash) - break; - - /* Trim the path at the last slash. Keep the slash if it's the root dir. */ - slash[slash == k] = 0; - - flags = IN_MOVE_SELF; - if (!exists) - flags |= IN_DELETE_SELF | IN_ATTRIB | IN_CREATE | IN_MOVED_TO; + r = inotify_add_watch(s->inotify_fd, path, flags); + if (r < 0) { + if (errno == EACCES || errno == ENOENT) + break; - if (inotify_add_watch(s->inotify_fd, k, flags) >= 0) - exists = true; - else if (errno != EACCES && errno != ENOENT) { - log_error("Failed to add watch on %s: %m", k); + log_warning("Failed to add watch on %s: %m", path); r = -errno; goto fail; + } else { + exists = true; + + /* Path exists, we don't need to watch parent + too closely. */ + if (oldslash) { + char tmp2 = oldslash[oldslash == path]; + oldslash[oldslash == path] = '\0'; + + inotify_add_watch(s->inotify_fd, path, IN_MOVE_SELF); + /* Error is ignored, the worst can happen is + we get spurious events. */ + + oldslash[oldslash == path] = tmp2; + } } - } while (slash != k); + + if (slash) { + slash[slash == path] = tmp; + oldslash = slash; + } else { + /* whole path has been iterated over */ + s->primary_wd = r; + break; + } + } + + assert(errno == EACCES || errno == ENOENT || streq(path, s->path)); if (!exists) { log_error("Failed to add watch on any of the components of %s: %m", s->path); - r = -errno; + r = -errno; /* either EACCESS or ENOENT */ goto fail; } diff --git a/src/core/service.c b/src/core/service.c index 3f8aabcf45..61b150cba8 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1400,8 +1400,13 @@ static int service_load_pid_file(Service *s, bool may_warn) { } r = parse_pid(k, &pid); - if (r < 0) + if (r < 0) { + if (may_warn) + log_info_unit(UNIT(s)->id, + "Failed to read PID from file %s: %s", + s->pid_file, strerror(-r)); return r; + } if (kill(pid, 0) < 0 && errno != EPERM) { if (may_warn) @@ -1429,9 +1434,13 @@ static int service_load_pid_file(Service *s, bool may_warn) { return r; r = unit_watch_pid(UNIT(s), pid); - if (r < 0) + if (r < 0) { /* FIXME: we need to do something here */ + log_warning_unit(UNIT(s)->id, + "Failed to watch PID %lu from service %s", + (unsigned long) pid, UNIT(s)->id); return r; + } return 0; } @@ -2824,6 +2833,9 @@ static int service_watch_pid_file(Service *s) { goto fail; /* the pidfile might have appeared just before we set the watch */ + log_debug_unit(UNIT(s)->id, + "Trying to read %s's PID file %s in case it changed", + UNIT(s)->id, s->pid_file_pathspec->path); service_retry_pid_file(s); return 0; -- cgit v1.2.1 From a6187d4ce884e3c9ccf18d46b2ee494af386cb42 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Fri, 1 Mar 2013 18:29:59 +0100 Subject: tmpfiles: move exclamation mark into right place Unary not has higher precedence than comparisons, so the condition was bogus. --- src/tmpfiles/tmpfiles.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index 6b3f70e071..7da94ed57b 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -321,7 +321,7 @@ static int dir_cleanup( if (age >= cutoff) continue; - if (!i->type == IGNORE_DIRECTORY_PATH || !streq(dent->d_name, p)) { + if (i->type != IGNORE_DIRECTORY_PATH || !streq(dent->d_name, p)) { log_debug("rmdir '%s'\n", sub_path); if (unlinkat(dirfd(d), dent->d_name, AT_REMOVEDIR) < 0) { -- cgit v1.2.1 From 19fbec19192998fa7fc0c24a58038b98cf989802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 3 Mar 2013 18:42:52 -0500 Subject: tmpfiles: use cleanup func. to save a few lines --- src/tmpfiles/tmpfiles.c | 66 +++++++++++++------------------------------------ 1 file changed, 17 insertions(+), 49 deletions(-) diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index 7da94ed57b..b93d8988fc 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -134,7 +134,7 @@ static struct Item* find_glob(Hashmap *h, const char *match) { } static void load_unix_sockets(void) { - FILE *f = NULL; + FILE _cleanup_fclose_ *f = NULL; char line[LINE_MAX]; if (unix_sockets) @@ -194,15 +194,11 @@ static void load_unix_sockets(void) { } } - fclose(f); return; fail: set_free_free(unix_sockets); unix_sockets = NULL; - - if (f) - fclose(f); } static bool unix_socket_alive(const char *fn) { @@ -231,12 +227,12 @@ static int dir_cleanup( struct dirent *dent; struct timespec times[2]; bool deleted = false; - char *sub_path = NULL; int r = 0; while ((dent = readdir(d))) { struct stat s; usec_t age; + char _cleanup_free_ *sub_path = NULL; if (streq(dent->d_name, ".") || streq(dent->d_name, "..")) @@ -260,9 +256,6 @@ static int dir_cleanup( if (s.st_uid == 0 && !(s.st_mode & S_IWUSR)) continue; - free(sub_path); - sub_path = NULL; - if (asprintf(&sub_path, "%s/%s", p, dent->d_name) < 0) { r = log_oom(); goto finish; @@ -285,7 +278,7 @@ static int dir_cleanup( if (maxdepth <= 0) log_warning("Reached max depth on %s.", sub_path); else { - DIR *sub_dir; + DIR _cleanup_closedir_ *sub_dir; int q; sub_dir = xopendirat(dirfd(d), dent->d_name, O_NOFOLLOW|O_NOATIME); @@ -299,7 +292,6 @@ static int dir_cleanup( } q = dir_cleanup(i, sub_path, sub_dir, &s, cutoff, rootdev, false, maxdepth-1, false); - closedir(sub_dir); if (q < 0) r = q; @@ -393,8 +385,6 @@ finish: log_error("utimensat(%s): %m", p); } - free(sub_path); - return r; } @@ -483,7 +473,7 @@ static int write_one_file(Item *i, const char *path) { } static int recursive_relabel_children(Item *i, const char *path) { - DIR *d; + DIR _cleanup_closedir_ *d; int ret = 0; /* This returns the first error we run into, but nevertheless @@ -498,7 +488,7 @@ static int recursive_relabel_children(Item *i, const char *path) { union dirent_storage buf; bool is_dir; int r; - char *entry_path; + char _cleanup_free_ *entry_path = NULL; r = readdir_r(d, &buf.de, &de); if (r != 0) { @@ -525,7 +515,6 @@ static int recursive_relabel_children(Item *i, const char *path) { if (lstat(entry_path, &st) < 0) { if (ret == 0 && errno != ENOENT) ret = -errno; - free(entry_path); continue; } @@ -538,7 +527,6 @@ static int recursive_relabel_children(Item *i, const char *path) { if (r < 0) { if (ret == 0 && r != -ENOENT) ret = r; - free(entry_path); continue; } @@ -547,12 +535,8 @@ static int recursive_relabel_children(Item *i, const char *path) { if (r < 0 && ret == 0) ret = r; } - - free(entry_path); } - closedir(d); - return ret; } @@ -856,7 +840,7 @@ static int remove_item(Item *i) { } static int clean_item_instance(Item *i, const char* instance) { - DIR *d; + DIR _cleanup_closedir_ *d = NULL; struct stat s, ps; bool mountpoint; int r; @@ -884,31 +868,24 @@ static int clean_item_instance(Item *i, const char* instance) { if (fstat(dirfd(d), &s) < 0) { log_error("stat(%s) failed: %m", i->path); - r = -errno; - goto finish; + return -errno; } if (!S_ISDIR(s.st_mode)) { log_error("%s is not a directory.", i->path); - r = -ENOTDIR; - goto finish; + return -ENOTDIR; } if (fstatat(dirfd(d), "..", &ps, AT_SYMLINK_NOFOLLOW) != 0) { log_error("stat(%s/..) failed: %m", i->path); - r = -errno; - goto finish; + return -errno; } mountpoint = s.st_dev != ps.st_dev || (s.st_dev == ps.st_dev && s.st_ino == ps.st_ino); - r = dir_cleanup(i, instance, d, &s, cutoff, s.st_dev, mountpoint, MAX_DEPTH, i->keep_first_level); - -finish: - if (d) - closedir(d); - + r = dir_cleanup(i, instance, d, &s, cutoff, s.st_dev, mountpoint, + MAX_DEPTH, i->keep_first_level); return r; } @@ -1002,7 +979,8 @@ static bool item_equal(Item *a, Item *b) { static int parse_line(const char *fname, unsigned line, const char *buffer) { Item *i, *existing; - char *mode = NULL, *user = NULL, *group = NULL, *age = NULL; + char _cleanup_free_ + *mode = NULL, *user = NULL, *group = NULL, *age = NULL; char type; Hashmap *h; int r, n = -1; @@ -1015,21 +993,16 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { if (!i) return log_oom(); - if (sscanf(buffer, - "%c " - "%ms " - "%ms " - "%ms " - "%ms " - "%ms " - "%n", + r = sscanf(buffer, + "%c %ms %ms %ms %ms %ms %n", &type, &i->path, &mode, &user, &group, &age, - &n) < 2) { + &n); + if (r < 2) { log_error("[%s:%u] Syntax error.", fname, line); r = -EIO; goto finish; @@ -1196,11 +1169,6 @@ static int parse_line(const char *fname, unsigned line, const char *buffer) { r = 0; finish: - free(user); - free(group); - free(mode); - free(age); - if (i) item_free(i); -- cgit v1.2.1 From a0b6422689e37ffee37742d027f91af8bacfa78d Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Mon, 4 Mar 2013 14:38:51 +0100 Subject: core/manager: fix conditions to start and stop watching running jobs Harald encountered division by zero in manager_print_jobs_in_progress. Clearly we had the watch enabled when we shouldn't - there were no running jobs in m->jobs, only waiting ones. This is either a deadlock, or maybe some of them would be detected as runnable in the next dispatch of the run queue. In any case we mustn't crash. Fix it by starting and stopping the watch based on n_running_jobs instead of the number of all jobs. --- src/core/manager.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/core/manager.c b/src/core/manager.c index 91d773c2f6..1d188081a1 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -1144,7 +1144,7 @@ unsigned manager_dispatch_run_queue(Manager *m) { m->dispatching_run_queue = false; - if (hashmap_size(m->jobs) > 0) + if (m->n_running_jobs > 0) manager_watch_jobs_in_progress(m); return n; @@ -2368,10 +2368,11 @@ void manager_check_finished(Manager *m) { assert(m); - if (hashmap_size(m->jobs) > 0) { - manager_jobs_in_progress_mod_timer(m); + if (m->n_running_jobs == 0) + manager_unwatch_jobs_in_progress(m); + + if (hashmap_size(m->jobs) > 0) return; - } /* Notify Type=idle units that we are done now */ close_pipe(m->idle_pipe); @@ -2379,8 +2380,6 @@ void manager_check_finished(Manager *m) { /* Turn off confirm spawn now */ m->confirm_spawn = false; - manager_unwatch_jobs_in_progress(m); - if (dual_timestamp_is_set(&m->finish_timestamp)) return; -- cgit v1.2.1 From da4993920cdf5527b8528f0a483b54ab3cbc1971 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 4 Mar 2013 15:17:45 +0100 Subject: journal: split journal uid only when audit uid data is valid --- src/journal/journald-server.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index c8a6285a84..545760726e 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -671,12 +671,12 @@ static void dispatch_message_real( assert(n <= m); - if (s->split_mode == SPLIT_NONE) - journal_uid = 0; - else if (s->split_mode == SPLIT_UID || realuid == 0 || !loginuid_valid) + if (s->split_mode == SPLIT_UID && realuid > 0) journal_uid = realuid; - else + else if (s->split_mode == SPLIT_LOGIN && loginuid > 0 && loginuid_valid) journal_uid = loginuid; + else + journal_uid = 0; write_to_journal(s, journal_uid, iovec, n); } -- cgit v1.2.1 From 8ab85e2d2d9bf049e8f9a4c598ba32ff3cf19b6d Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 4 Mar 2013 16:13:19 +0100 Subject: ProFUSION got bought by Intel --- README | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/README b/README index 1aa044be75..d8b1b1296a 100644 --- a/README +++ b/README @@ -123,13 +123,3 @@ WARNINGS: (e.g. ./configure CPPFLAGS='... -DVALGRIND=1'). Otherwise, false positives will be triggered by code which violates some rules but is actually safe. - -ENGINEERING AND CONSULTING SERVICES: - ProFUSION offers professional - engineering and consulting services for systemd for embedded - and other use. Please contact Gustavo Barbieri - for more information. - - Disclaimer: This notice is not a recommendation or official - endorsement. However, ProFUSION's upstream work has been very - beneficial for the systemd project. -- cgit v1.2.1 From 4fe52119233710903f9b52e1e608889fe5036837 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 4 Mar 2013 12:57:12 -0500 Subject: build-sys: do not install logind manpages when disabled The condition was wrong: HAVE_PAM -> ENABLE_LOGIND. --- Makefile-man.am | 13 +++++++++---- man/logind.conf.xml | 2 +- man/systemd-logind.service.xml | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/Makefile-man.am b/Makefile-man.am index d02fff05e2..58271d28dc 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -322,6 +322,15 @@ MANPAGES_ALIAS += \ man/systemd-localed.8: man/systemd-localed.service.8 endif +if ENABLE_LOGIND +MANPAGES += \ + man/logind.conf.5 \ + man/systemd-logind.service.8 +MANPAGES_ALIAS += \ + man/systemd-logind.8 +man/systemd-logind.8: man/systemd-logind.service.8 +endif + if ENABLE_QUOTACHECK MANPAGES += \ man/systemd-quotacheck.service.8 @@ -414,7 +423,6 @@ endif if HAVE_PAM MANPAGES += \ man/loginctl.1 \ - man/logind.conf.5 \ man/sd-login.3 \ man/sd_get_seats.3 \ man/sd_login_monitor_new.3 \ @@ -422,7 +430,6 @@ MANPAGES += \ man/sd_seat_get_active.3 \ man/sd_session_is_active.3 \ man/sd_uid_get_state.3 \ - man/systemd-logind.service.8 \ man/systemd-user-sessions.service.8 MANPAGES_ALIAS += \ man/sd_get_sessions.3 \ @@ -446,7 +453,6 @@ MANPAGES_ALIAS += \ man/sd_uid_get_seats.3 \ man/sd_uid_get_sessions.3 \ man/sd_uid_is_on_seat.3 \ - man/systemd-logind.8 \ man/systemd-user-sessions.8 man/sd_get_sessions.3: man/sd_get_seats.3 man/sd_get_uids.3: man/sd_get_seats.3 @@ -469,7 +475,6 @@ man/sd_session_get_uid.3: man/sd_session_is_active.3 man/sd_uid_get_seats.3: man/sd_uid_get_state.3 man/sd_uid_get_sessions.3: man/sd_uid_get_state.3 man/sd_uid_is_on_seat.3: man/sd_uid_get_state.3 -man/systemd-logind.8: man/systemd-logind.service.8 man/systemd-user-sessions.8: man/systemd-user-sessions.service.8 endif diff --git a/man/logind.conf.xml b/man/logind.conf.xml index 362a4f6108..b0dd20f2a4 100644 --- a/man/logind.conf.xml +++ b/man/logind.conf.xml @@ -22,7 +22,7 @@ along with systemd; If not, see . --> - + logind.conf systemd diff --git a/man/systemd-logind.service.xml b/man/systemd-logind.service.xml index 523a63b4f3..09bcfac430 100644 --- a/man/systemd-logind.service.xml +++ b/man/systemd-logind.service.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + systemd-logind.service -- cgit v1.2.1 From 47c490345256f2db32d8d883cd7c5243158a14e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 4 Mar 2013 13:16:38 -0500 Subject: build-sys: do not install pam_systemd(8) without PAM --- Makefile-man.am | 2 +- man/pam_systemd.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile-man.am b/Makefile-man.am index 58271d28dc..e095c3e765 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -15,7 +15,6 @@ MANPAGES += \ man/machine-id.5 \ man/machine-info.5 \ man/os-release.5 \ - man/pam_systemd.8 \ man/runlevel.8 \ man/sd-daemon.3 \ man/sd-id128.3 \ @@ -423,6 +422,7 @@ endif if HAVE_PAM MANPAGES += \ man/loginctl.1 \ + man/pam_systemd.8 \ man/sd-login.3 \ man/sd_get_seats.3 \ man/sd_login_monitor_new.3 \ diff --git a/man/pam_systemd.xml b/man/pam_systemd.xml index d74a91878c..2dc6651885 100644 --- a/man/pam_systemd.xml +++ b/man/pam_systemd.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + pam_systemd -- cgit v1.2.1 From 39b83cdab37623a546344622db9bbbc784c15df5 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Mon, 4 Mar 2013 19:01:05 +0100 Subject: add initrd-fs.target and initrd-fs-pre.target --- Makefile.am | 2 ++ src/core/special.h | 2 ++ units/initrd-fs-pre.target | 11 +++++++++++ units/initrd-fs.target | 13 +++++++++++++ 4 files changed, 28 insertions(+) create mode 100644 units/initrd-fs-pre.target create mode 100644 units/initrd-fs.target diff --git a/Makefile.am b/Makefile.am index 5453868f82..e23a6b4482 100644 --- a/Makefile.am +++ b/Makefile.am @@ -343,6 +343,8 @@ dist_systemunit_DATA = \ units/kexec.target \ units/local-fs.target \ units/local-fs-pre.target \ + units/initrd-fs.target \ + units/initrd-fs-pre.target \ units/remote-fs.target \ units/remote-fs-pre.target \ units/network.target \ diff --git a/src/core/special.h b/src/core/special.h index 99c0e1222e..de5889dd82 100644 --- a/src/core/special.h +++ b/src/core/special.h @@ -48,6 +48,8 @@ #define SPECIAL_SOCKETS_TARGET "sockets.target" #define SPECIAL_LOCAL_FS_TARGET "local-fs.target" #define SPECIAL_LOCAL_FS_PRE_TARGET "local-fs-pre.target" +#define SPECIAL_INITRD_FS_TARGET "initrd-fs.target" +#define SPECIAL_INITRD_FS_PRE_TARGET "initrd-fs-pre.target" #define SPECIAL_REMOTE_FS_TARGET "remote-fs.target" /* LSB's $remote_fs */ #define SPECIAL_REMOTE_FS_PRE_TARGET "remote-fs-pre.target" #define SPECIAL_SWAP_TARGET "swap.target" diff --git a/units/initrd-fs-pre.target b/units/initrd-fs-pre.target new file mode 100644 index 0000000000..9aa8061a57 --- /dev/null +++ b/units/initrd-fs-pre.target @@ -0,0 +1,11 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Initrd File Systems (Pre) +Documentation=man:systemd.special(7) +ConditionPathExists=/etc/initrd-release diff --git a/units/initrd-fs.target b/units/initrd-fs.target new file mode 100644 index 0000000000..6ba1758e45 --- /dev/null +++ b/units/initrd-fs.target @@ -0,0 +1,13 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Initrd File Systems +Documentation=man:systemd.special(7) +OnFailure=emergency.target +OnFailureIsolate=yes +ConditionPathExists=/etc/initrd-release -- cgit v1.2.1 From 7d89ce303fb59743a4392eeb3110c00f100172ca Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Mon, 4 Mar 2013 19:03:05 +0100 Subject: units/initrd-*: require initrd-fs.target rather than local-fs.target --- units/initrd-cleanup.service | 4 ++-- units/initrd-parse-etc.service | 5 +++-- units/initrd-switch-root.target | 4 ++-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/units/initrd-cleanup.service b/units/initrd-cleanup.service index 89986964ea..061f803d55 100644 --- a/units/initrd-cleanup.service +++ b/units/initrd-cleanup.service @@ -10,8 +10,8 @@ Description=Cleaning Up and Shutting Down Daemons DefaultDependencies=no ConditionPathExists=/etc/initrd-release OnFailure=emergency.target -Requires=local-fs.target swap.target -After=local-fs.target swap.target +Requires=initrd-fs.target swap.target +After=initrd-fs.target swap.target [Service] Type=oneshot diff --git a/units/initrd-parse-etc.service b/units/initrd-parse-etc.service index 4bfbb0f9fb..99e8c33978 100644 --- a/units/initrd-parse-etc.service +++ b/units/initrd-parse-etc.service @@ -8,12 +8,13 @@ [Unit] Description=Reload Configuration from the Real Root DefaultDependencies=no -Requires=local-fs.target swap.target -After=local-fs.target swap.target +Requires=initrd-fs.target swap.target sysroot.mount +After=initrd-fs.target swap.target sysroot.mount OnFailure=emergency.target ConditionPathExists=/etc/initrd-release [Service] Type=oneshot ExecStartPre=/usr/bin/systemctl daemon-reload +ExecStart=/usr/bin/systemctl start initrd-fs.target ExecStart=/usr/bin/systemctl --no-block start initrd-cleanup.service diff --git a/units/initrd-switch-root.target b/units/initrd-switch-root.target index f706d29ba6..ffadfc09b6 100644 --- a/units/initrd-switch-root.target +++ b/units/initrd-switch-root.target @@ -12,5 +12,5 @@ DefaultDependencies=no Requires=initrd-switch-root.service Before=initrd-switch-root.service AllowIsolate=yes -Wants=initrd-udevadm-cleanup-db.service local-fs.target swap.target systemd-journald.service -After=initrd-udevadm-cleanup-db.service local-fs.target swap.target emergency.service emergency.target +Wants=initrd-udevadm-cleanup-db.service initrd-fs.target swap.target systemd-journald.service +After=initrd-udevadm-cleanup-db.service initrd-fs.target swap.target emergency.service emergency.target -- cgit v1.2.1 From 8330847e949fc0c26b16910e5240eef1fe2c330a Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Mon, 4 Mar 2013 19:04:32 +0100 Subject: fstab-generator: place initrd /sysroot mounts in initrd-fs.target also do not overwrite /sysroot*.mount units already generated from fstab --- src/fstab-generator/fstab-generator.c | 60 +++++++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 17 deletions(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 1a1fe8605f..a8436e6233 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -200,8 +200,8 @@ static bool mount_in_initrd(struct mntent *me) { } static int add_mount(const char *what, const char *where, const char *type, const char *opts, - int passno, bool noauto, bool nofail, bool automount, bool isbind, bool isnetwork, - const char *source) { + int passno, bool noauto, bool nofail, bool automount, bool isbind, + bool remote_fs_target, bool initrd_fs_target, const char *source) { char _cleanup_free_ *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL, *automount_name = NULL, *automount_unit = NULL; @@ -227,9 +227,12 @@ static int add_mount(const char *what, const char *where, const char *type, cons mount_point_ignore(where)) return 0; - if (isnetwork) { + if (remote_fs_target) { post = SPECIAL_REMOTE_FS_TARGET; pre = SPECIAL_REMOTE_FS_PRE_TARGET; + } else if (initrd_fs_target) { + post = SPECIAL_INITRD_FS_TARGET; + pre = SPECIAL_INITRD_FS_PRE_TARGET; } else { post = SPECIAL_LOCAL_FS_TARGET; pre = SPECIAL_LOCAL_FS_PRE_TARGET; @@ -407,6 +410,7 @@ static int parse_fstab(const char *prefix, bool initrd) { continue; what = fstab_node_to_udev_node(me->mnt_fsname); + where = strjoin(prefix, me->mnt_dir, NULL); if (!what || !where) { r = log_oom(); @@ -416,6 +420,21 @@ static int parse_fstab(const char *prefix, bool initrd) { if (is_path(where)) path_kill_slashes(where); + if (initrd) { + char _cleanup_free_ *mu = NULL, *name = NULL; + /* Skip generation, if unit already exists */ + name = unit_name_from_path(where, ".mount"); + if (!name) + return log_oom(); + mu = strjoin(arg_dest, "/", name, NULL); + if (!mu) + return log_oom(); + + k = access(mu, R_OK); + if (k == 0) + continue; + } + log_debug("Found entry what=%s where=%s type=%s", what, where, me->mnt_type); if (streq(me->mnt_type, "swap")) @@ -432,8 +451,8 @@ static int parse_fstab(const char *prefix, bool initrd) { isnetwork = mount_is_network(me); k = add_mount(what, where, me->mnt_type, me->mnt_opts, - me->mnt_passno, noauto, nofail, automount, - isbind, isnetwork, fstab_path); + me->mnt_passno, noauto, nofail, automount, + isbind, isnetwork, initrd, fstab_path); } if (k < 0) @@ -447,10 +466,19 @@ finish: static int parse_new_root_from_proc_cmdline(void) { char *w, *state; - _cleanup_free_ char *what = NULL, *type = NULL, *opts = NULL, *line = NULL; + _cleanup_free_ char *what = NULL, *type = NULL, *opts = NULL, *line = NULL, *mu = NULL; int r; size_t l; + /* Skip generation, if sysroot.mount already exists */ + mu = strjoin(arg_dest, "/", "sysroot.mount", NULL); + if (!mu) + return log_oom(); + + r = access(mu, R_OK); + if (r == 0) + return 0; + r = read_one_line_file("/proc/cmdline", &line); if (r < 0) { log_error("Failed to read /proc/cmdline, ignoring: %s", strerror(-r)); @@ -506,7 +534,7 @@ static int parse_new_root_from_proc_cmdline(void) { log_debug("Found entry what=%s where=/sysroot type=%s", what, type); r = add_mount(what, "/sysroot", type, opts, 0, false, false, false, - false, false, "/proc/cmdline"); + false, false, true, "/proc/cmdline"); if (r < 0) return r; @@ -566,7 +594,7 @@ static int parse_proc_cmdline(void) { } int main(int argc, char *argv[]) { - int r = 0, k, l = 0; + int r = 0, k = 0, l = 0; if (argc > 1 && argc != 4) { log_error("This program takes three or no arguments."); @@ -585,16 +613,14 @@ int main(int argc, char *argv[]) { if (parse_proc_cmdline() < 0) return EXIT_FAILURE; - if (in_initrd()) - r = parse_new_root_from_proc_cmdline(); + if (arg_enabled) + r = parse_fstab("", false); - if (!arg_enabled) - return (r < 0) ? EXIT_FAILURE : EXIT_SUCCESS; - - k = parse_fstab("", false); - - if (in_initrd()) - l = parse_fstab("/sysroot", true); + if (in_initrd()) { + if (arg_enabled) + k = parse_fstab("/sysroot", true); + l = parse_new_root_from_proc_cmdline(); + } return (r < 0) || (k < 0) || (l < 0) ? EXIT_FAILURE : EXIT_SUCCESS; } -- cgit v1.2.1 From 135b5212d4234f5b75c9b86c9f924047c8d07589 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Mon, 4 Mar 2013 21:00:56 +0100 Subject: fstab-generator: only handle block devices with root= kernel command line parameter skip s.th. like root=nfs:... root=iscsi:... root=nbd:... --- src/fstab-generator/fstab-generator.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index a8436e6233..986f72d7e6 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -530,18 +530,21 @@ static int parse_new_root_from_proc_cmdline(void) { free(word); } - if (what) { + if (!what) { + log_error("Could not find a root= entry on the kernel commandline."); + return 0; + } - log_debug("Found entry what=%s where=/sysroot type=%s", what, type); - r = add_mount(what, "/sysroot", type, opts, 0, false, false, false, - false, false, true, "/proc/cmdline"); + if (what[0] != '/') { + log_debug("Skipping entry what=%s where=/sysroot type=%s", what, type); + return 0; + } - if (r < 0) - return r; - } else - log_error("Could not find a root= entry on the kernel commandline."); + log_debug("Found entry what=%s where=/sysroot type=%s", what, type); + r = add_mount(what, "/sysroot", type, opts, 0, false, false, false, + false, false, true, "/proc/cmdline"); - return 0; + return (r < 0) ? r : 0; } static int parse_proc_cmdline(void) { -- cgit v1.2.1 From d51167c6268d11f02c2676693a8e9dc1b628cdbb Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Mon, 4 Mar 2013 23:20:16 +0100 Subject: build-sys: build and install systemd-coredumpctl conditionally If coredump support is disabled via --disable-coredump, do not build and install the systemd-coredumpctl binary and man page. --- Makefile-man.am | 9 ++++++++- Makefile.am | 22 +++++++++++++--------- man/systemd-coredumpctl.xml | 2 +- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/Makefile-man.am b/Makefile-man.am index e095c3e765..8d48ee05ef 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -50,7 +50,6 @@ MANPAGES += \ man/systemd-cat.1 \ man/systemd-cgls.1 \ man/systemd-cgtop.1 \ - man/systemd-coredumpctl.1 \ man/systemd-delta.1 \ man/systemd-detect-virt.1 \ man/systemd-fsck@.service.8 \ @@ -303,6 +302,14 @@ MANPAGES_ALIAS += \ endif +if ENABLE_COREDUMP +MANPAGES += \ + man/systemd-coredumpctl.1 +MANPAGES_ALIAS += \ + # + +endif + if ENABLE_HOSTNAMED MANPAGES += \ man/hostnamectl.1 \ diff --git a/Makefile.am b/Makefile.am index e23a6b4482..3d3f2652f6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -318,7 +318,6 @@ systemd_analyze_LDADD = \ dist_bashcompletion_DATA = \ shell-completion/bash/journalctl \ shell-completion/bash/systemctl \ - shell-completion/bash/systemd-coredumpctl \ shell-completion/bash/udevadm dist_tmpfiles_DATA = \ @@ -2376,13 +2375,6 @@ journalctl_LDADD += \ $(QRENCODE_LIBS) endif -systemd_coredumpctl_SOURCES = \ - src/journal/coredumpctl.c - -systemd_coredumpctl_LDADD = \ - libsystemd-shared.la \ - libsystemd-journal.la - test_journal_SOURCES = \ src/journal/test-journal.c @@ -2627,7 +2619,6 @@ rootbin_PROGRAMS += \ journalctl bin_PROGRAMS += \ - systemd-coredumpctl \ systemd-cat dist_systemunit_DATA += \ @@ -2719,6 +2710,19 @@ endif rootlibexec_PROGRAMS += \ systemd-coredump +systemd_coredumpctl_SOURCES = \ + src/journal/coredumpctl.c + +systemd_coredumpctl_LDADD = \ + libsystemd-shared.la \ + libsystemd-journal.la + +bin_PROGRAMS += \ + systemd-coredumpctl + +dist_bashcompletion_DATA += \ + shell-completion/bash/systemd-coredumpctl + sysctl_DATA = \ sysctl.d/coredump.conf diff --git a/man/systemd-coredumpctl.xml b/man/systemd-coredumpctl.xml index ce40404da7..02b688606c 100644 --- a/man/systemd-coredumpctl.xml +++ b/man/systemd-coredumpctl.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + systemd-coredumpctl -- cgit v1.2.1 From 954449b82df7fc2d37a8d854977a1a73a65edfbd Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 5 Mar 2013 03:29:54 +0100 Subject: logind: when registering a new session always use previous session info from cgroup path rather than audit Previously for cases like "su" or "sudo" where a session is attempted to be created from within an existing one we used the audit session ID to detect this and in such a case we simple returned the session data of the original session a second time. With this change we will now use the cgroup path of the calling path to determine the old session, i.e. we only rely on our own session identification scheme, instead of audits. We will continue to keep the audit session ID and ours in sync however, to avoid unnecessary confusion. --- src/login/logind-dbus.c | 173 ++++++++++++++++++++++++------------------------ 1 file changed, 86 insertions(+), 87 deletions(-) diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 818f2fa808..1dcdf04b29 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -308,21 +308,21 @@ static int bus_manager_append_preparing(DBusMessageIter *i, const char *property } static int bus_manager_create_session(Manager *m, DBusMessage *message, DBusMessage **_reply) { - Session *session = NULL; - User *user = NULL; - const char *type, *class, *seat, *tty, *display, *remote_user, *remote_host, *service; + const char *type, *class, *cseat, *tty, *display, *remote_user, *remote_host, *service; uint32_t uid, leader, audit_id = 0; dbus_bool_t remote, kill_processes, exists; - char **controllers = NULL, **reset_controllers = NULL; + _cleanup_strv_free_ char **controllers = NULL, **reset_controllers = NULL; + _cleanup_free_ char *cgroup = NULL, *id = NULL, *p = NULL; SessionType t; SessionClass c; - Seat *s; DBusMessageIter iter; int r; - char *id = NULL, *p; uint32_t vtnr = 0; - int fifo_fd = -1; + _cleanup_close_ int fifo_fd = -1; DBusMessage *reply = NULL; + Session *session = NULL; + User *user = NULL; + Seat *seat = NULL; bool b; assert(m); @@ -371,13 +371,13 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message, DBusMess dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_STRING) return -EINVAL; - dbus_message_iter_get_basic(&iter, &seat); + dbus_message_iter_get_basic(&iter, &cseat); - if (isempty(seat)) - s = NULL; + if (isempty(cseat)) + seat = NULL; else { - s = hashmap_get(m->seats, seat); - if (!s) + seat = hashmap_get(m->seats, cseat); + if (!seat) return -ENOENT; } @@ -396,9 +396,9 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message, DBusMess if (tty_is_vc(tty)) { int v; - if (!s) - s = m->vtconsole; - else if (s != m->vtconsole) + if (!seat) + seat = m->vtconsole; + else if (seat != m->vtconsole) return -EINVAL; v = vtnr_from_tty(tty); @@ -412,18 +412,17 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message, DBusMess return -EINVAL; } else if (tty_is_console(tty)) { - if (!s) - s = m->vtconsole; - else if (s != m->vtconsole) + if (!seat) + seat = m->vtconsole; + else if (seat != m->vtconsole) return -EINVAL; if (vtnr != 0) return -EINVAL; - } - if (s) { - if (seat_can_multi_session(s)) { + if (seat) { + if (seat_can_multi_session(seat)) { if (vtnr > 63) return -EINVAL; } else { @@ -486,78 +485,83 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message, DBusMess dbus_message_iter_get_basic(&iter, &kill_processes); - r = manager_add_user_by_uid(m, uid, &user); + r = cg_pid_get_cgroup(leader, NULL, &cgroup); if (r < 0) goto fail; - audit_session_from_pid(leader, &audit_id); - - if (audit_id > 0) { - asprintf(&id, "%lu", (unsigned long) audit_id); + r = manager_get_session_by_cgroup(m, cgroup, &session); + if (r < 0) + goto fail; - if (!id) { - r = -ENOMEM; + if (session) { + fifo_fd = session_create_fifo(session); + if (fifo_fd < 0) { + r = fifo_fd; goto fail; } - session = hashmap_get(m->sessions, id); + /* Session already exists, client is probably + * something like "su" which changes uid but + * is still the same audit session */ - if (session) { - free(id); + reply = dbus_message_new_method_return(message); + if (!reply) { + r = -ENOMEM; + goto fail; + } - fifo_fd = session_create_fifo(session); - if (fifo_fd < 0) { - r = fifo_fd; - goto fail; - } + p = session_bus_path(session); + if (!p) { + r = -ENOMEM; + goto fail; + } - /* Session already exists, client is probably - * something like "su" which changes uid but - * is still the same audit session */ + cseat = session->seat ? session->seat->id : ""; + vtnr = session->vtnr; + exists = true; - reply = dbus_message_new_method_return(message); - if (!reply) { - r = -ENOMEM; - goto fail; - } + b = dbus_message_append_args( + reply, + DBUS_TYPE_STRING, &session->id, + DBUS_TYPE_OBJECT_PATH, &p, + DBUS_TYPE_STRING, &session->user->runtime_path, + DBUS_TYPE_UNIX_FD, &fifo_fd, + DBUS_TYPE_STRING, &cseat, + DBUS_TYPE_UINT32, &vtnr, + DBUS_TYPE_BOOLEAN, &exists, + DBUS_TYPE_INVALID); + if (!b) { + r = -ENOMEM; + goto fail; + } - p = session_bus_path(session); - if (!p) { - r = -ENOMEM; - goto fail; - } + *_reply = reply; - seat = session->seat ? session->seat->id : ""; - vtnr = session->vtnr; - exists = true; - - b = dbus_message_append_args( - reply, - DBUS_TYPE_STRING, &session->id, - DBUS_TYPE_OBJECT_PATH, &p, - DBUS_TYPE_STRING, &session->user->runtime_path, - DBUS_TYPE_UNIX_FD, &fifo_fd, - DBUS_TYPE_STRING, &seat, - DBUS_TYPE_UINT32, &vtnr, - DBUS_TYPE_BOOLEAN, &exists, - DBUS_TYPE_INVALID); - free(p); + return 0; + } - if (!b) { - r = -ENOMEM; - goto fail; - } + audit_session_from_pid(leader, &audit_id); + if (audit_id > 0) { + /* Keep our session IDs and the audit session IDs in sync */ - close_nointr_nofail(fifo_fd); - *_reply = reply; + if (asprintf(&id, "%lu", (unsigned long) audit_id) < 0) { + r = -ENOMEM; + goto fail; + } - strv_free(controllers); - strv_free(reset_controllers); + /* Wut? There's already a session by this name and we + * didn't find it above? Weird, then let's not trust + * the audit data and let's better register a new + * ID */ + if (hashmap_get(m->sessions, id)) { + audit_id = 0; - return 0; + free(id); + id = NULL; } + } - } else { + if (!id) { do { free(id); id = NULL; @@ -570,8 +574,11 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message, DBusMess } while (hashmap_get(m->sessions, id)); } + r = manager_add_user_by_uid(m, uid, &user); + if (r < 0) + goto fail; + r = manager_add_session(m, user, id, &session); - free(id); if (r < 0) goto fail; @@ -633,8 +640,8 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message, DBusMess goto fail; } - if (s) { - r = seat_attach_session(s, session); + if (seat) { + r = seat_attach_session(seat, session); if (r < 0) goto fail; } @@ -655,7 +662,7 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message, DBusMess goto fail; } - seat = s ? s->id : ""; + cseat = seat ? seat->id : ""; exists = false; b = dbus_message_append_args( reply, @@ -663,35 +670,27 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message, DBusMess DBUS_TYPE_OBJECT_PATH, &p, DBUS_TYPE_STRING, &session->user->runtime_path, DBUS_TYPE_UNIX_FD, &fifo_fd, - DBUS_TYPE_STRING, &seat, + DBUS_TYPE_STRING, &cseat, DBUS_TYPE_UINT32, &vtnr, DBUS_TYPE_BOOLEAN, &exists, DBUS_TYPE_INVALID); - free(p); if (!b) { r = -ENOMEM; goto fail; } - close_nointr_nofail(fifo_fd); *_reply = reply; return 0; fail: - strv_free(controllers); - strv_free(reset_controllers); - if (session) session_add_to_gc_queue(session); if (user) user_add_to_gc_queue(user); - if (fifo_fd >= 0) - close_nointr_nofail(fifo_fd); - if (reply) dbus_message_unref(reply); -- cgit v1.2.1 From 6bc80e94b66e6b008cdc21101fc7409ebcb279db Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 5 Mar 2013 04:10:19 +0100 Subject: update TODO --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index 4ea0471a1f..cef02e6ed8 100644 --- a/TODO +++ b/TODO @@ -49,6 +49,8 @@ Fedora 19: Features: +* neither pkexec nor sudo initialize environ[] from the PAM environment? + * rework specifier logic so that we can distuingish OOM errors from other errors * systemd-inhibit: refuse taking delay locks -- cgit v1.2.1 From ac4785b031451030aeb5cd46e94c7e8f43796dec Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 5 Mar 2013 06:45:06 +0100 Subject: Revert "fstab-generator: place initrd /sysroot mounts in initrd-fs.target" This reverts commit 8330847e949fc0c26b16910e5240eef1fe2c330a. Conflicts: src/fstab-generator/fstab-generator.c --- src/fstab-generator/fstab-generator.c | 60 ++++++++++------------------------- 1 file changed, 17 insertions(+), 43 deletions(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 986f72d7e6..910bbc1df7 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -200,8 +200,8 @@ static bool mount_in_initrd(struct mntent *me) { } static int add_mount(const char *what, const char *where, const char *type, const char *opts, - int passno, bool noauto, bool nofail, bool automount, bool isbind, - bool remote_fs_target, bool initrd_fs_target, const char *source) { + int passno, bool noauto, bool nofail, bool automount, bool isbind, bool isnetwork, + const char *source) { char _cleanup_free_ *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL, *automount_name = NULL, *automount_unit = NULL; @@ -227,12 +227,9 @@ static int add_mount(const char *what, const char *where, const char *type, cons mount_point_ignore(where)) return 0; - if (remote_fs_target) { + if (isnetwork) { post = SPECIAL_REMOTE_FS_TARGET; pre = SPECIAL_REMOTE_FS_PRE_TARGET; - } else if (initrd_fs_target) { - post = SPECIAL_INITRD_FS_TARGET; - pre = SPECIAL_INITRD_FS_PRE_TARGET; } else { post = SPECIAL_LOCAL_FS_TARGET; pre = SPECIAL_LOCAL_FS_PRE_TARGET; @@ -410,7 +407,6 @@ static int parse_fstab(const char *prefix, bool initrd) { continue; what = fstab_node_to_udev_node(me->mnt_fsname); - where = strjoin(prefix, me->mnt_dir, NULL); if (!what || !where) { r = log_oom(); @@ -420,21 +416,6 @@ static int parse_fstab(const char *prefix, bool initrd) { if (is_path(where)) path_kill_slashes(where); - if (initrd) { - char _cleanup_free_ *mu = NULL, *name = NULL; - /* Skip generation, if unit already exists */ - name = unit_name_from_path(where, ".mount"); - if (!name) - return log_oom(); - mu = strjoin(arg_dest, "/", name, NULL); - if (!mu) - return log_oom(); - - k = access(mu, R_OK); - if (k == 0) - continue; - } - log_debug("Found entry what=%s where=%s type=%s", what, where, me->mnt_type); if (streq(me->mnt_type, "swap")) @@ -451,8 +432,8 @@ static int parse_fstab(const char *prefix, bool initrd) { isnetwork = mount_is_network(me); k = add_mount(what, where, me->mnt_type, me->mnt_opts, - me->mnt_passno, noauto, nofail, automount, - isbind, isnetwork, initrd, fstab_path); + me->mnt_passno, noauto, nofail, automount, + isbind, isnetwork, fstab_path); } if (k < 0) @@ -466,19 +447,10 @@ finish: static int parse_new_root_from_proc_cmdline(void) { char *w, *state; - _cleanup_free_ char *what = NULL, *type = NULL, *opts = NULL, *line = NULL, *mu = NULL; + _cleanup_free_ char *what = NULL, *type = NULL, *opts = NULL, *line = NULL; int r; size_t l; - /* Skip generation, if sysroot.mount already exists */ - mu = strjoin(arg_dest, "/", "sysroot.mount", NULL); - if (!mu) - return log_oom(); - - r = access(mu, R_OK); - if (r == 0) - return 0; - r = read_one_line_file("/proc/cmdline", &line); if (r < 0) { log_error("Failed to read /proc/cmdline, ignoring: %s", strerror(-r)); @@ -542,7 +514,7 @@ static int parse_new_root_from_proc_cmdline(void) { log_debug("Found entry what=%s where=/sysroot type=%s", what, type); r = add_mount(what, "/sysroot", type, opts, 0, false, false, false, - false, false, true, "/proc/cmdline"); + false, false, "/proc/cmdline"); return (r < 0) ? r : 0; } @@ -597,7 +569,7 @@ static int parse_proc_cmdline(void) { } int main(int argc, char *argv[]) { - int r = 0, k = 0, l = 0; + int r = 0, k, l = 0; if (argc > 1 && argc != 4) { log_error("This program takes three or no arguments."); @@ -616,14 +588,16 @@ int main(int argc, char *argv[]) { if (parse_proc_cmdline() < 0) return EXIT_FAILURE; - if (arg_enabled) - r = parse_fstab("", false); + if (in_initrd()) + r = parse_new_root_from_proc_cmdline(); - if (in_initrd()) { - if (arg_enabled) - k = parse_fstab("/sysroot", true); - l = parse_new_root_from_proc_cmdline(); - } + if (!arg_enabled) + return (r < 0) ? EXIT_FAILURE : EXIT_SUCCESS; + + k = parse_fstab("", false); + + if (in_initrd()) + l = parse_fstab("/sysroot", true); return (r < 0) || (k < 0) || (l < 0) ? EXIT_FAILURE : EXIT_SUCCESS; } -- cgit v1.2.1 From 8a0889dfdafa3054c894e54852d8a9e3a7e8390b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 5 Mar 2013 14:23:22 +0100 Subject: journald: check session owner UID rather then audit ID when splitting up journal files We should always go by our own cgroup hierarchy before using foreign schemes such as audit, so let's do that for the split out logic too. --- src/journal/journald-server.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 545760726e..dcfdeaf68e 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -515,9 +515,8 @@ static void dispatch_message_real( sd_id128_t id; int r; char *t; - uid_t loginuid = 0, realuid = 0; - uid_t journal_uid; - bool loginuid_valid = false; + uid_t loginuid = 0, realuid = 0, owner = 0, journal_uid; + bool loginuid_valid = false, owner_valid = false; assert(s); assert(iovec); @@ -526,9 +525,6 @@ static void dispatch_message_real( if (ucred) { uint32_t audit; -#ifdef HAVE_LOGIND - uid_t owner; -#endif realuid = ucred->uid; @@ -598,9 +594,11 @@ static void dispatch_message_real( IOVEC_SET_STRING(iovec[n++], session); } - if (sd_pid_get_owner_uid(ucred->uid, &owner) >= 0) + if (sd_pid_get_owner_uid(ucred->uid, &owner) >= 0) { + owner_valid = true; if (asprintf(&owner_uid, "_SYSTEMD_OWNER_UID=%lu", (unsigned long) owner) >= 0) IOVEC_SET_STRING(iovec[n++], owner_uid); + } #endif if (cg_pid_get_unit(ucred->pid, &t) >= 0) { @@ -673,7 +671,9 @@ static void dispatch_message_real( if (s->split_mode == SPLIT_UID && realuid > 0) journal_uid = realuid; - else if (s->split_mode == SPLIT_LOGIN && loginuid > 0 && loginuid_valid) + else if (s->split_mode == SPLIT_LOGIN && owner_valid && owner > 0) + journal_uid = owner; + else if (s->split_mode == SPLIT_LOGIN && loginuid_valid && loginuid > 0) journal_uid = loginuid; else journal_uid = 0; -- cgit v1.2.1 From 40adcda869bda55f44b57fd3a2bd71d006dfb51b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 5 Mar 2013 14:27:34 +0100 Subject: journald: be a bit more careful when spitting up journals by user id --- src/journal/journald-server.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index dcfdeaf68e..b46a2f63b3 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -670,10 +670,19 @@ static void dispatch_message_real( assert(n <= m); if (s->split_mode == SPLIT_UID && realuid > 0) + /* Split up strictly by any UID */ journal_uid = realuid; - else if (s->split_mode == SPLIT_LOGIN && owner_valid && owner > 0) + else if (s->split_mode == SPLIT_LOGIN && owner_valid && owner > 0 && realuid > 0) + /* Split up by login UIDs, this avoids creation of + * individual journals for system UIDs. We do this + * only if the realuid is not root, in order not to + * accidentally leak privileged information logged by + * a privileged process that is part of an + * unprivileged session to the user. */ journal_uid = owner; - else if (s->split_mode == SPLIT_LOGIN && loginuid_valid && loginuid > 0) + else if (s->split_mode == SPLIT_LOGIN && loginuid_valid && loginuid > 0 && realuid > 0) + /* Hmm, let's try via the audit uids, as fallback, + * just in case */ journal_uid = loginuid; else journal_uid = 0; -- cgit v1.2.1 From 82499507b369fea3033a74c22813bf423301aef4 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 5 Mar 2013 14:36:57 +0100 Subject: journald: drop splitting-by-audit entirely Thinking about it we should probably not hide bugs by falling back to audit when we have our own session information anyway. --- src/journal/journald-server.c | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index b46a2f63b3..c1ec0fad32 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -515,8 +515,8 @@ static void dispatch_message_real( sd_id128_t id; int r; char *t; - uid_t loginuid = 0, realuid = 0, owner = 0, journal_uid; - bool loginuid_valid = false, owner_valid = false; + uid_t realuid = 0, owner = 0, journal_uid; + bool owner_valid = false; assert(s); assert(iovec); @@ -525,6 +525,7 @@ static void dispatch_message_real( if (ucred) { uint32_t audit; + uid_t loginuid; realuid = ucred->uid; @@ -570,11 +571,9 @@ static void dispatch_message_real( IOVEC_SET_STRING(iovec[n++], audit_session); r = audit_loginuid_from_pid(ucred->pid, &loginuid); - if (r >= 0) { - loginuid_valid = true; + if (r >= 0) if (asprintf(&audit_loginuid, "_AUDIT_LOGINUID=%lu", (unsigned long) loginuid) >= 0) IOVEC_SET_STRING(iovec[n++], audit_loginuid); - } t = shortened_cgroup_path(ucred->pid); if (t) { @@ -672,18 +671,14 @@ static void dispatch_message_real( if (s->split_mode == SPLIT_UID && realuid > 0) /* Split up strictly by any UID */ journal_uid = realuid; - else if (s->split_mode == SPLIT_LOGIN && owner_valid && owner > 0 && realuid > 0) + else if (s->split_mode == SPLIT_LOGIN && realuid > 0 && owner_valid && owner > 0) /* Split up by login UIDs, this avoids creation of * individual journals for system UIDs. We do this * only if the realuid is not root, in order not to - * accidentally leak privileged information logged by - * a privileged process that is part of an - * unprivileged session to the user. */ + * accidentally leak privileged information to the + * user that is logged by a privileged process that is + * part of an unprivileged session.*/ journal_uid = owner; - else if (s->split_mode == SPLIT_LOGIN && loginuid_valid && loginuid > 0 && realuid > 0) - /* Hmm, let's try via the audit uids, as fallback, - * just in case */ - journal_uid = loginuid; else journal_uid = 0; -- cgit v1.2.1 From fc7b7e2e74ed0c4ce2bda91d693240c9dcd0d526 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 5 Mar 2013 15:02:38 +0100 Subject: journald: stpcpy() + mempcpy() are awesome --- src/journal/journald-server.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index c1ec0fad32..654f7ace21 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -620,9 +620,7 @@ static void dispatch_message_real( if (label) { selinux_context = malloc(sizeof("_SELINUX_CONTEXT=") + label_len); if (selinux_context) { - memcpy(selinux_context, "_SELINUX_CONTEXT=", sizeof("_SELINUX_CONTEXT=")-1); - memcpy(selinux_context+sizeof("_SELINUX_CONTEXT=")-1, label, label_len); - selinux_context[sizeof("_SELINUX_CONTEXT=")-1+label_len] = 0; + *((char*) mempcpy(stpcpy(selinux_context, "_SELINUX_CONTEXT="), label, label_len)) = 0; IOVEC_SET_STRING(iovec[n++], selinux_context); } } else { @@ -632,7 +630,6 @@ static void dispatch_message_real( selinux_context = strappend("_SELINUX_CONTEXT=", con); if (selinux_context) IOVEC_SET_STRING(iovec[n++], selinux_context); - freecon(con); } } -- cgit v1.2.1 From a24c64f03f9c5c0304451d8542fee853187a5168 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 5 Mar 2013 18:53:21 +0100 Subject: journald: introduce new "systemd-journal" group and make it own the journal files Previously all journal files were owned by "adm". In order to allow specific users to read the journal files without granting it access to the full "adm" powers, introduce a new specific group for this. "systemd-journal" has to be created by the packaging scripts manually at installation time. It's a good idea to assign a static UID/GID to this group, since /var/log/journal might be shared across machines via NFS. This commit also grants read access to the journal files by default to members of the "wheel" and "adm" groups via file system ACLs, since these "almost-root" groups should be able to see what's going on on the system. These ACLs are created by "make install". Packagers probably need to duplicate this logic in their postinst scripts. This also adds documentation how to grant access to the journal to additional users or groups via fs ACLs. --- Makefile.am | 9 ++++++++- README | 13 +++++++++++++ man/systemd-journald.service.xml | 35 ++++++++++++++++++++++++++++++++++- src/journal/journalctl.c | 12 ++++++------ src/journal/journald-server.c | 6 +++--- 5 files changed, 64 insertions(+), 11 deletions(-) diff --git a/Makefile.am b/Makefile.am index 3d3f2652f6..13211c45bd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2563,9 +2563,16 @@ libsystemd_journal_internal_la_LIBADD += \ $(GCRYPT_LIBS) endif -# move lib from $(libdir) to $(rootlibdir) and update devel link, if needed +# move lib from $(libdir) to $(rootlibdir) and update devel link, if +# needed. Also, grant read access to new journal files to members of +# "adm" and "wheel". libsystemd-journal-install-hook: libname=libsystemd-journal.so && $(move-to-rootlibdir) + $(MKDIR_P) $(DESTDIR)/var/log/journal + -chown 0:0 $(DESTDIR)/var/log/journal + -chmod 755 $(DESTDIR)/var/log/journal + -setfacl -nm g:adm:rx,d:g:adm:rx $(DESTDIR)/var/log/journal/ + -setfacl -nm g:wheel:rx,d:g:wheel:rx $(DESTDIR)/var/log/journal/ libsystemd-journal-uninstall-hook: rm -f $(DESTDIR)$(rootlibdir)/libsystemd-journal.so* diff --git a/README b/README index d8b1b1296a..300a4cf8bc 100644 --- a/README +++ b/README @@ -100,6 +100,19 @@ REQUIREMENTS: being 'html' or 'latexpdf'. If using DESTDIR for installation, pass the same DESTDIR to 'make sphinx-html' invocation. +USERS AND GROUPS: + During runtime the journal daemon requires the + "system-journal" system group to exist. New journal files will + be readable by this group (but not writable) which may be used + to grant specific users read access. + + It is also recommended to grant read access to all journal + files to the system groups "wheel" and "adm" with a command + like the following in the post installation script of the + package: + + # setfacl -nm g:wheel:rx,d:g:wheel:rx,g:adm:rx,d:g:adm:rx /var/log/journal/ + WARNINGS: systemd will warn you during boot if /etc/mtab is not a symlink to /proc/mounts. Please ensure that /etc/mtab is a diff --git a/man/systemd-journald.service.xml b/man/systemd-journald.service.xml index 4969ab19c3..bc32c8e38b 100644 --- a/man/systemd-journald.service.xml +++ b/man/systemd-journald.service.xml @@ -158,6 +158,38 @@ + + Access Control + + Journal files are by default owned and readable + by the systemd-journal system group + (but not writable). Adding a user to this group thus + enables her/him to read the journal files. + + By default, each logged in user will get her/his + own set of journal files in + /var/log/journal/. These files + will not be owned by the user however, in order to + avoid that the user can write to them + directly. Instead, file system ACLs are used to ensure + the user gets read access only. + + Additional users and groups may be granted + access to journal files via file system access control + lists (ACL). Distributions and administrators may + choose to grant read access to all members of the + wheel and adm + system groups with a command such as the + following: + + # setfacl -Rnm g:wheel:rx,d:g:wheel:rx,g:adm:rx,d:g:adm:rx /var/log/journal/ + + Note that this command will update the ACLs both + for existing journal files and for future journal + files created in the + /var/log/journal/ + directory. + See Also @@ -166,7 +198,8 @@ journalctl1, journald.conf5, systemd.journal-fields7, - sd-journal3 + sd-journal3, + setfacl1 diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index d898ae7179..cb93fea63b 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -870,16 +870,16 @@ static int verify(sd_journal *j) { static int access_check(void) { #ifdef HAVE_ACL - if (access("/var/log/journal", F_OK) < 0 && geteuid() != 0 && in_group("adm") <= 0) { - log_error("Unprivileged users can't see messages unless persistent log storage is enabled. Users in the group 'adm' can always see messages."); + if (access("/var/log/journal", F_OK) < 0 && geteuid() != 0 && in_group("systemd-journal") <= 0) { + log_error("Unprivileged users can't see messages unless persistent log storage is enabled. Users in the group 'systemd-journal' can always see messages."); return -EACCES; } - if (!arg_quiet && geteuid() != 0 && in_group("adm") <= 0) - log_warning("Showing user generated messages only. Users in the group 'adm' can see all messages. Pass -q to turn this notice off."); + if (!arg_quiet && geteuid() != 0 && in_group("systemd-journal") <= 0) + log_warning("Showing user generated messages only. Users in the group 'systemd-journal' can see all messages. Pass -q to turn this notice off."); #else - if (geteuid() != 0 && in_group("adm") <= 0) { - log_error("No access to messages. Only users in the group 'adm' can see messages."); + if (geteuid() != 0 && in_group("systemd-journal") <= 0) { + log_error("No access to messages. Only users in the group 'systemd-journal' can see messages."); return -EACCES; } #endif diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 654f7ace21..ac565c7ece 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -174,7 +174,7 @@ static uint64_t available_space(Server *s) { } static void server_read_file_gid(Server *s) { - const char *adm = "adm"; + const char *g = "systemd-journal"; int r; assert(s); @@ -182,9 +182,9 @@ static void server_read_file_gid(Server *s) { if (s->file_gid_valid) return; - r = get_group_creds(&adm, &s->file_gid); + r = get_group_creds(&g, &s->file_gid); if (r < 0) - log_warning("Failed to resolve 'adm' group: %s", strerror(-r)); + log_warning("Failed to resolve '%s' group: %s", g, strerror(-r)); /* if we couldn't read the gid, then it will be 0, but that's * fine and we shouldn't try to resolve the group again, so -- cgit v1.2.1 From f47ec8ebb3858553dec870e1c596e39525f46360 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 5 Mar 2013 18:59:14 +0100 Subject: update TODO --- TODO | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/TODO b/TODO index cef02e6ed8..5ff5707ca9 100644 --- a/TODO +++ b/TODO @@ -20,8 +20,6 @@ Fedora 19: * make anaconda write timeout=0 for encrypted devices -* make sure pkexec works fine with pam_systemd works fine with audit=0 - * create /var/log/journal/ * external: maybe it is time to patch procps so that "ps" links to @@ -36,8 +34,6 @@ Fedora 19: * journal is not closed properly at shutdown when run in a container? -* introduce new "journal" group in place of adm? - * localed: - localectl: add listing support for X11 keymaps, by parsing /usr/share/X11/xkb/rules/xorg.lst - localectl: support new converted x11→console keymaps @@ -175,21 +171,19 @@ Features: - maybe add API to send pairs of iovecs via sd_journal_send - journal: when writing journal auto-rotate if time jumps backwards - gatewayd: should run under its own UID - - journal: add a setgid "adm" utility to invoke from libsystemd-journal, which passes fds via STDOUT and does PK access + - journal: add a setgid "systemd-journal" utility to invoke from libsystemd-journal, which passes fds via STDOUT and does PK access - journactl: support negative filtering, i.e. FOOBAR!="waldo", and !FOOBAR for events without FOOBAR. - journal: when rotating, copy over old acls/access mode - - journal: document why we do not give ownership to journal files to the user that created them but use FS ACLs for that - journal: send out marker messages every now and then, and immediately sync with fdatasync() afterwards, in order to have hourly guaranteed syncs. - journal: when we haven't written anything in a while, sync to disk and mark file as offline, in order to be more often than not in a clean state - journal-send.c, log.c: when the log socket is clogged, and we drop, count this and write a message about this when it gets unclogged again. - journal: find a way to allow dropping history early, based on priority, other rules - journal: When used on NFS, check payload hashes - journal: When used on NFS make sure wake up sd_journal_wait() every 2s, to handle missing inotify - - document that people can use file system ACLs to manage access to journal files, with example - Introduce journalctl -b to show journal messages of a previous boot - journald: check whether it is OK if the client can still modify delivered journal entries - - journal live copy, based on libneon (client) and libmicrohttpd + - journal live copy, based on libneon (client) and libmicrohttpd (server) - journald: add kernel cmdline option to disable ratelimiting for debug purposes - refuse taking lower-case variable names in sd_journal_send() and friends. - journald: we currently rotate only after MaxUse+MaxFilesize has been reached. -- cgit v1.2.1 From 37c0e8f35e92190a22b2ac0fbb23bf396121e84a Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 5 Mar 2013 19:04:48 +0100 Subject: README: add udev goups --- README | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README b/README index 300a4cf8bc..889c687bac 100644 --- a/README +++ b/README @@ -101,6 +101,12 @@ REQUIREMENTS: pass the same DESTDIR to 'make sphinx-html' invocation. USERS AND GROUPS: + Default udev rules use the following standard system group names,\ + which need to be resolvable by getgrnam() at any time, even in the + very early boot stages, where no other databases and network is + available: + tty, dialout, kmem, video, audio, lp, floppy, cdrom, tape, disk + During runtime the journal daemon requires the "system-journal" system group to exist. New journal files will be readable by this group (but not writable) which may be used -- cgit v1.2.1 From 37495eede95d3212b797c8459d7ed6258fb23c6a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 5 Mar 2013 19:15:31 +0100 Subject: journal: make gatewayd run under its own user ID --- README | 16 +++++++++++----- units/systemd-journal-gatewayd.service.in | 3 +++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/README b/README index 889c687bac..b6e347ec2b 100644 --- a/README +++ b/README @@ -101,11 +101,12 @@ REQUIREMENTS: pass the same DESTDIR to 'make sphinx-html' invocation. USERS AND GROUPS: - Default udev rules use the following standard system group names,\ - which need to be resolvable by getgrnam() at any time, even in the - very early boot stages, where no other databases and network is - available: - tty, dialout, kmem, video, audio, lp, floppy, cdrom, tape, disk + Default udev rules use the following standard system group + names, which need to be resolvable by getgrnam() at any time, + even in the very early boot stages, where no other databases + and network are available: + + tty, dialout, kmem, video, audio, lp, floppy, cdrom, tape, disk During runtime the journal daemon requires the "system-journal" system group to exist. New journal files will @@ -119,6 +120,11 @@ USERS AND GROUPS: # setfacl -nm g:wheel:rx,d:g:wheel:rx,g:adm:rx,d:g:adm:rx /var/log/journal/ + The journal gateway daemon requires the + "system-journal-gateway" system user and group to + exist. During execution this network facing service will drop + privileges and assume this uid/gid for security reasons. + WARNINGS: systemd will warn you during boot if /etc/mtab is not a symlink to /proc/mounts. Please ensure that /etc/mtab is a diff --git a/units/systemd-journal-gatewayd.service.in b/units/systemd-journal-gatewayd.service.in index c3b5c725bf..a01ce8da45 100644 --- a/units/systemd-journal-gatewayd.service.in +++ b/units/systemd-journal-gatewayd.service.in @@ -11,6 +11,9 @@ Requires=systemd-journal-gatewayd.socket [Service] ExecStart=@rootlibexecdir@/systemd-journal-gatewayd +User=systemd-journal-gateway +Group=systemd-journal-gateway +SupplementaryGroups=systemd-journal [Install] Also=systemd-journal-gatewayd.socket -- cgit v1.2.1 From 1a9ce3f766a03c7daab4ca7edae7533841e1721a Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Tue, 5 Mar 2013 19:19:26 +0100 Subject: Fix typos --- README | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README b/README index b6e347ec2b..948bb650ad 100644 --- a/README +++ b/README @@ -109,7 +109,7 @@ USERS AND GROUPS: tty, dialout, kmem, video, audio, lp, floppy, cdrom, tape, disk During runtime the journal daemon requires the - "system-journal" system group to exist. New journal files will + "systemd-journal" system group to exist. New journal files will be readable by this group (but not writable) which may be used to grant specific users read access. @@ -121,7 +121,7 @@ USERS AND GROUPS: # setfacl -nm g:wheel:rx,d:g:wheel:rx,g:adm:rx,d:g:adm:rx /var/log/journal/ The journal gateway daemon requires the - "system-journal-gateway" system user and group to + "systemd-journal-gateway" system user and group to exist. During execution this network facing service will drop privileges and assume this uid/gid for security reasons. -- cgit v1.2.1 From 2f2343c6b15ec5495eb5032ae36b937fe36177cc Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 5 Mar 2013 19:32:36 +0100 Subject: inhibit: print --list if no argument is given --- src/login/inhibit.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/login/inhibit.c b/src/login/inhibit.c index 586582190e..a812195cae 100644 --- a/src/login/inhibit.c +++ b/src/login/inhibit.c @@ -230,7 +230,10 @@ static int parse_argv(int argc, char *argv[]) { } } - if (arg_action == ACTION_INHIBIT && optind >= argc) { + if (arg_action == ACTION_INHIBIT && argc == 1) + arg_action = ACTION_LIST; + + else if (arg_action == ACTION_INHIBIT && optind >= argc) { log_error("Missing command line to execute."); return -EINVAL; } -- cgit v1.2.1 From d47c78be4a2acbb631a26af11b7ce2ef57f55996 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 5 Mar 2013 19:58:32 +0100 Subject: util: properly escape corner cases in bus_path_escape(), too This follows the suggestions from: http://lists.freedesktop.org/archives/systemd-devel/2013-March/009363.html --- src/shared/util.c | 21 +++++++++++++++++---- src/test/test-util.c | 24 ++++++++++++++++++++++++ 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/src/shared/util.c b/src/shared/util.c index e643cd367c..b7ba7fbe84 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -1325,16 +1325,24 @@ char *bus_path_escape(const char *s) { assert(s); /* Escapes all chars that D-Bus' object path cannot deal - * with. Can be reverse with bus_path_unescape() */ + * with. Can be reverse with bus_path_unescape(). We special + * case the empty string. */ - if (!(r = new(char, strlen(s)*3+1))) + if (*s == 0) + return strdup("_"); + + r = new(char, strlen(s)*3 + 1); + if (!r) return NULL; for (f = s, t = r; *f; f++) { + /* Escape everything that is not a-zA-Z0-9. We also + * escape 0-9 if it's the first character */ + if (!(*f >= 'A' && *f <= 'Z') && !(*f >= 'a' && *f <= 'z') && - !(*f >= '0' && *f <= '9')) { + !(f > s && *f >= '0' && *f <= '9')) { *(t++) = '_'; *(t++) = hexchar(*f >> 4); *(t++) = hexchar(*f); @@ -1352,7 +1360,12 @@ char *bus_path_unescape(const char *f) { assert(f); - if (!(r = strdup(f))) + /* Special case for the empty string */ + if (streq(f, "_")) + return strdup(""); + + r = new(char, strlen(f) + 1); + if (!r) return NULL; for (t = r; *f; f++) { diff --git a/src/test/test-util.c b/src/test/test-util.c index cb0af4f6a1..789fc089fe 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -261,6 +261,29 @@ static void test_memdup_multiply(void) { free(dup); } +static void test_bus_path_escape_one(const char *a, const char *b) { + _cleanup_free_ char *t = NULL, *x = NULL, *y = NULL; + + assert_se(t = bus_path_escape(a)); + assert_se(streq(t, b)); + + assert_se(x = bus_path_unescape(t)); + assert_se(streq(a, x)); + + assert_se(y = bus_path_unescape(b)); + assert_se(streq(a, y)); +} + +static void test_bus_path_escape(void) { + test_bus_path_escape_one("foo123bar", "foo123bar"); + test_bus_path_escape_one("foo.bar", "foo_2ebar"); + test_bus_path_escape_one("foo_2ebar", "foo_5f2ebar"); + test_bus_path_escape_one("", "_"); + test_bus_path_escape_one("_", "_5f"); + test_bus_path_escape_one("1", "_31"); + test_bus_path_escape_one(":1", "_3a1"); +} + int main(int argc, char *argv[]) { test_streq_ptr(); test_first_word(); @@ -282,6 +305,7 @@ int main(int argc, char *argv[]) { test_foreach_word_quoted(); test_default_term_for_tty(); test_memdup_multiply(); + test_bus_path_escape(); return 0; } -- cgit v1.2.1 From ebe5d6d0d05d1f17c96315c42f8d9bcf5e13ba9d Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Tue, 5 Mar 2013 11:46:34 -0800 Subject: hostnamed: allow more special characters in pretty hostname this addresses the bug at: https://bugs.freedesktop.org/show_bug.cgi?id=59311 https://bugzilla.redhat.com/show_bug.cgi?id=895299 hostnamectl is supposed to allow a range of special characters for the 'pretty' hostname: $ hostnamectl set-hostname --pretty "Nathaniels Desktop !@#$%" ..however, it rejects apostrophes, double quotes, and backslashes. The manual for hostnamectl suggests that this should be allowed. It makes sense to reject \0, \n, etc. pretty_string_is_safe() is the same as string_is_safe(), but allows more special characters. --- src/hostname/hostnamed.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index 7ea891c681..979dcfdc7f 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -159,6 +159,19 @@ static bool valid_chassis(const char *chassis) { chassis); } +static bool pretty_string_is_safe(const char *p) { + const char *t; + + assert(p); + + for (t = p; *t; t++) { + if (*t >= '\0' && *t < ' ') + return false; + } + + return true; +} + static const char* fallback_chassis(void) { int r; char *type; @@ -553,7 +566,7 @@ static DBusHandlerResult hostname_message_handler( * safe than sorry */ if (k == PROP_ICON_NAME && !filename_is_safe(name)) return bus_send_error_reply(connection, message, NULL, -EINVAL); - if (k == PROP_PRETTY_HOSTNAME && !string_is_safe(name)) + if (k == PROP_PRETTY_HOSTNAME && !pretty_string_is_safe(name)) return bus_send_error_reply(connection, message, NULL, -EINVAL); if (k == PROP_CHASSIS && !valid_chassis(name)) return bus_send_error_reply(connection, message, NULL, -EINVAL); -- cgit v1.2.1 From 646614a40713ef864bfc4dcf64f7a84cdeebff24 Mon Sep 17 00:00:00 2001 From: Daniel Wallace Date: Tue, 5 Mar 2013 14:32:09 -0500 Subject: zsh-completion: journalctl query by binary and device implement 1883552c3d8 from bash completion in zsh-completion --- shell-completion/systemd-zsh-completion.zsh | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/shell-completion/systemd-zsh-completion.zsh b/shell-completion/systemd-zsh-completion.zsh index 46e29b217a..77b26f6d26 100644 --- a/shell-completion/systemd-zsh-completion.zsh +++ b/shell-completion/systemd-zsh-completion.zsh @@ -94,6 +94,7 @@ _ctls() '--verify[Verify journal file consistency]' \ '--list-catalog[List messages in catalog]' \ '--update-catalog[Update binary catalog database]' \ + '*::default: _journal_none' ;; localectl) _arguments \ @@ -608,6 +609,7 @@ _list_fields() { _{P,U,G}ID _COMM _EXE _CMDLINE _AUDIT_{SESSION,LOGINUID} _SYSTEMD_{CGROUP,SESSION,UNIT,OWNER_UID} + _SYSTEMD_USER_UNIT _SELINUX_CONTEXT _SOURCE_REALTIME_TIMESTAMP _{BOOT,MACHINE}_ID _HOSTNAME _TRANSPORT _KERNEL_{DEVICE,SUBSYSTEM} @@ -616,6 +618,15 @@ _list_fields() { _describe 'possible fields' journal_fields } +_journal_none() { + local -a _commands _files + _commands=( ${(f)"$(_call_program commands "$service" -F _EXE 2>/dev/null)"} ) + _alternative : \ + 'files:/dev files:_files -W /dev -P /dev/' \ + "commands:commands:($_commands[@])" \ + 'fields:fields:_list_fields' +} + _journal_fields() { local -a _fields cmd cmd=("journalctl" "-F ${@[-1]}" "2>/dev/null" ) -- cgit v1.2.1 From a187bfd98ae7b651f7c464450895ead6bdf1ddd6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 5 Mar 2013 21:43:06 -0500 Subject: journal/tests: free allocated memory in test --- src/journal/test-journal-syslog.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/journal/test-journal-syslog.c b/src/journal/test-journal-syslog.c index 5cf940733b..895975caa5 100644 --- a/src/journal/test-journal-syslog.c +++ b/src/journal/test-journal-syslog.c @@ -25,7 +25,7 @@ static void test_syslog_parse_identifier(const char* str, const char *ident, const char*pid, int ret) { const char *buf = str; - char *ident2 = NULL, *pid2 = NULL; + char _cleanup_free_ *ident2 = NULL, *pid2 = NULL; int ret2; ret2 = syslog_parse_identifier(&buf, &ident2, &pid2); -- cgit v1.2.1 From 6210afbcff435c857458a908d730db176797a0f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 5 Mar 2013 23:23:09 -0500 Subject: systemd-python: fix error check in _Reader.wait() --- src/python-systemd/_reader.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index d3d45cc015..7013fcfcef 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -507,9 +507,10 @@ static PyObject* Reader_wait(Reader *self, PyObject *args, PyObject *keywds) return NULL; Py_BEGIN_ALLOW_THREADS - r = sd_journal_wait(self->j, timeout ==0 ? (uint64_t) -1 : timeout * 1E6); + r = sd_journal_wait(self->j, + timeout == 0 ? (uint64_t) -1 : timeout * 1E6); Py_END_ALLOW_THREADS - if (set_error(r, NULL, NULL)) + if (set_error(r, NULL, NULL) < 0) return NULL; return long_FromLong(r); -- cgit v1.2.1 From fdf1848d1dc55e03b83821989bed2f8b26260236 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 5 Mar 2013 08:16:06 +0100 Subject: Revert "units/initrd-*: require initrd-fs.target rather than local-fs.target" This reverts commit 7d89ce303fb59743a4392eeb3110c00f100172ca. --- units/initrd-cleanup.service | 4 ++-- units/initrd-parse-etc.service | 5 ++--- units/initrd-switch-root.target | 4 ++-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/units/initrd-cleanup.service b/units/initrd-cleanup.service index 061f803d55..89986964ea 100644 --- a/units/initrd-cleanup.service +++ b/units/initrd-cleanup.service @@ -10,8 +10,8 @@ Description=Cleaning Up and Shutting Down Daemons DefaultDependencies=no ConditionPathExists=/etc/initrd-release OnFailure=emergency.target -Requires=initrd-fs.target swap.target -After=initrd-fs.target swap.target +Requires=local-fs.target swap.target +After=local-fs.target swap.target [Service] Type=oneshot diff --git a/units/initrd-parse-etc.service b/units/initrd-parse-etc.service index 99e8c33978..4bfbb0f9fb 100644 --- a/units/initrd-parse-etc.service +++ b/units/initrd-parse-etc.service @@ -8,13 +8,12 @@ [Unit] Description=Reload Configuration from the Real Root DefaultDependencies=no -Requires=initrd-fs.target swap.target sysroot.mount -After=initrd-fs.target swap.target sysroot.mount +Requires=local-fs.target swap.target +After=local-fs.target swap.target OnFailure=emergency.target ConditionPathExists=/etc/initrd-release [Service] Type=oneshot ExecStartPre=/usr/bin/systemctl daemon-reload -ExecStart=/usr/bin/systemctl start initrd-fs.target ExecStart=/usr/bin/systemctl --no-block start initrd-cleanup.service diff --git a/units/initrd-switch-root.target b/units/initrd-switch-root.target index ffadfc09b6..f706d29ba6 100644 --- a/units/initrd-switch-root.target +++ b/units/initrd-switch-root.target @@ -12,5 +12,5 @@ DefaultDependencies=no Requires=initrd-switch-root.service Before=initrd-switch-root.service AllowIsolate=yes -Wants=initrd-udevadm-cleanup-db.service initrd-fs.target swap.target systemd-journald.service -After=initrd-udevadm-cleanup-db.service initrd-fs.target swap.target emergency.service emergency.target +Wants=initrd-udevadm-cleanup-db.service local-fs.target swap.target systemd-journald.service +After=initrd-udevadm-cleanup-db.service local-fs.target swap.target emergency.service emergency.target -- cgit v1.2.1 From 7fdf51751c752e8074e2d8e429d40db91ce87b95 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 5 Mar 2013 08:16:15 +0100 Subject: Revert "add initrd-fs.target and initrd-fs-pre.target" This reverts commit 39b83cdab37623a546344622db9bbbc784c15df5. --- Makefile.am | 2 -- src/core/special.h | 2 -- units/initrd-fs-pre.target | 11 ----------- units/initrd-fs.target | 13 ------------- 4 files changed, 28 deletions(-) delete mode 100644 units/initrd-fs-pre.target delete mode 100644 units/initrd-fs.target diff --git a/Makefile.am b/Makefile.am index 13211c45bd..f4ac471a13 100644 --- a/Makefile.am +++ b/Makefile.am @@ -342,8 +342,6 @@ dist_systemunit_DATA = \ units/kexec.target \ units/local-fs.target \ units/local-fs-pre.target \ - units/initrd-fs.target \ - units/initrd-fs-pre.target \ units/remote-fs.target \ units/remote-fs-pre.target \ units/network.target \ diff --git a/src/core/special.h b/src/core/special.h index de5889dd82..99c0e1222e 100644 --- a/src/core/special.h +++ b/src/core/special.h @@ -48,8 +48,6 @@ #define SPECIAL_SOCKETS_TARGET "sockets.target" #define SPECIAL_LOCAL_FS_TARGET "local-fs.target" #define SPECIAL_LOCAL_FS_PRE_TARGET "local-fs-pre.target" -#define SPECIAL_INITRD_FS_TARGET "initrd-fs.target" -#define SPECIAL_INITRD_FS_PRE_TARGET "initrd-fs-pre.target" #define SPECIAL_REMOTE_FS_TARGET "remote-fs.target" /* LSB's $remote_fs */ #define SPECIAL_REMOTE_FS_PRE_TARGET "remote-fs-pre.target" #define SPECIAL_SWAP_TARGET "swap.target" diff --git a/units/initrd-fs-pre.target b/units/initrd-fs-pre.target deleted file mode 100644 index 9aa8061a57..0000000000 --- a/units/initrd-fs-pre.target +++ /dev/null @@ -1,11 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -[Unit] -Description=Initrd File Systems (Pre) -Documentation=man:systemd.special(7) -ConditionPathExists=/etc/initrd-release diff --git a/units/initrd-fs.target b/units/initrd-fs.target deleted file mode 100644 index 6ba1758e45..0000000000 --- a/units/initrd-fs.target +++ /dev/null @@ -1,13 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -[Unit] -Description=Initrd File Systems -Documentation=man:systemd.special(7) -OnFailure=emergency.target -OnFailureIsolate=yes -ConditionPathExists=/etc/initrd-release -- cgit v1.2.1 From 248ea600d090fd9e5de3443a6b7b7194bf55f9c2 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Wed, 6 Mar 2013 11:02:35 +0100 Subject: initrd-parse-etc.servic: force start local-fs.target --- units/initrd-parse-etc.service | 1 + 1 file changed, 1 insertion(+) diff --git a/units/initrd-parse-etc.service b/units/initrd-parse-etc.service index 4bfbb0f9fb..3a71a7ec56 100644 --- a/units/initrd-parse-etc.service +++ b/units/initrd-parse-etc.service @@ -16,4 +16,5 @@ ConditionPathExists=/etc/initrd-release [Service] Type=oneshot ExecStartPre=/usr/bin/systemctl daemon-reload +ExecStart=/usr/bin/systemctl start local-fs.target ExecStart=/usr/bin/systemctl --no-block start initrd-cleanup.service -- cgit v1.2.1 From da61d6b2f20767a6a4116aac4bbf11281cd3b290 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 14 Feb 2013 12:52:24 +0100 Subject: units: run systemd-ask-password-console.service after systemd-vconsole-setup.service --- units/systemd-ask-password-console.service.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/units/systemd-ask-password-console.service.in b/units/systemd-ask-password-console.service.in index 4bcb30be02..a24fa51903 100644 --- a/units/systemd-ask-password-console.service.in +++ b/units/systemd-ask-password-console.service.in @@ -10,7 +10,7 @@ Description=Dispatch Password Requests to Console Documentation=man:systemd-ask-password-console.service(8) DefaultDependencies=no Conflicts=shutdown.target -After=plymouth-start.service +After=plymouth-start.service systemd-vconsole-setup.service Before=shutdown.target ConditionPathExists=!/run/plymouth/pid -- cgit v1.2.1 From 6ffe5e37c47c85f91bf6cc56bc3ff3cf60bffd15 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Mon, 4 Mar 2013 16:35:02 -0500 Subject: timedated: add CanNTP property If we can't successfully query any ntpd units, set CanNTP to false. GNOME wants to use this to grey out the NTP switch in the UI. https://bugs.freedesktop.org/show_bug.cgi?id=61816 --- src/timedate/timedated.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index 80c24eb62b..77534933c3 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -45,6 +45,7 @@ " \n" \ " \n" \ " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -84,10 +85,12 @@ const char timedate_interface[] _introspect_("timedate1") = INTERFACE; typedef struct TZ { char *zone; bool local_rtc; + int can_ntp; int use_ntp; } TZ; static TZ tz = { + .can_ntp = -1, .use_ntp = -1, }; @@ -387,6 +390,7 @@ static int read_ntp(DBusConnection *bus) { goto finish; } + tz.can_ntp = 1; tz.use_ntp = streq(s, "enabled") || streq(s, "enabled-runtime"); @@ -395,6 +399,7 @@ static int read_ntp(DBusConnection *bus) { } /* NTP is not installed. */ + tz.can_ntp = 0; tz.use_ntp = 0; r = 0; @@ -588,6 +593,20 @@ finish: return r; } +static int property_append_can_ntp(DBusMessageIter *i, const char *property, void *data) { + dbus_bool_t db; + + assert(i); + assert(property); + + db = tz.can_ntp > 0; + + if (!dbus_message_iter_append_basic(i, DBUS_TYPE_BOOLEAN, &db)) + return -ENOMEM; + + return 0; +} + static int property_append_ntp(DBusMessageIter *i, const char *property, void *data) { dbus_bool_t db; @@ -605,6 +624,7 @@ static int property_append_ntp(DBusMessageIter *i, const char *property, void *d static const BusProperty bus_timedate_properties[] = { { "Timezone", bus_property_append_string, "s", offsetof(TZ, zone), true }, { "LocalRTC", bus_property_append_bool, "b", offsetof(TZ, local_rtc) }, + { "CanNTP", property_append_can_ntp, "b", offsetof(TZ, can_ntp) }, { "NTP", property_append_ntp, "b", offsetof(TZ, use_ntp) }, { NULL, } }; -- cgit v1.2.1 From 61a9648f022049ac14c5667958752e8dcff857c1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 6 Mar 2013 15:39:27 +0100 Subject: update TODO --- TODO | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TODO b/TODO index 5ff5707ca9..42c5361713 100644 --- a/TODO +++ b/TODO @@ -43,6 +43,9 @@ Fedora 19: * timer logic is confused by units which are skipped due to failing condition http://lists.freedesktop.org/archives/systemd-devel/2013-February/008816.html +* timer logic is also confused if a service it triggers hasn't finished when the next timer elapses: + http://lists.freedesktop.org/archives/systemd-devel/2013-February/009021.html + Features: * neither pkexec nor sudo initialize environ[] from the PAM environment? -- cgit v1.2.1 From 95f1b47d27066c139ca685f65a2e4e91e1c3d6a9 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Tue, 5 Mar 2013 15:56:47 +0900 Subject: main: ISOLATE rather than REPLACE default.target This allows switch-root to work correctly if a unit is active both before and after the switch-root, but its dependencies change. Before the patch, any dependencies added to active units by switch-root will not be pulled, in particular filesystems configured in /etc/fstab would not be activated if local-fs.target was active in the initrd. It is not clear to me if there is a bug in the REPLACE handling, or if it is working as expected and that we really want to use ISOLATE instead as this patch does. --- src/core/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/main.c b/src/core/main.c index 71e0a6cf2f..2bbea7ec2f 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1720,7 +1720,7 @@ int main(int argc, char *argv[]) { manager_dump_units(m, stdout, "\t"); } - r = manager_add_job(m, JOB_START, target, JOB_REPLACE, false, &error, &default_unit_job); + r = manager_add_job(m, JOB_START, target, JOB_ISOLATE, false, &error, &default_unit_job); if (r < 0) { log_error("Failed to start default target: %s", bus_error(&error, r)); dbus_error_free(&error); -- cgit v1.2.1 From f1324eaa6868f196cccfec839e126ea0046cb6b6 Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Sat, 2 Mar 2013 17:31:53 +0100 Subject: manager: remove timer fd explicitly from epoll Forked processes can keep the old fd alive triggering epoll over and over again else. https://bugs.freedesktop.org/show_bug.cgi?id=61697 --- src/core/manager.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/manager.c b/src/core/manager.c index 1d188081a1..c261b25fb6 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -1674,6 +1674,8 @@ static int process_event(Manager *m, struct epoll_event *ev) { NULL); /* Restart the watch */ + epoll_ctl(m->epoll_fd, EPOLL_CTL_DEL, m->time_change_watch.fd, + NULL); close_nointr_nofail(m->time_change_watch.fd); watch_init(&m->time_change_watch); manager_setup_time_change(m); -- cgit v1.2.1 From 92f303495868f7d6971b7f42c69f63cb0e2e0ebd Mon Sep 17 00:00:00 2001 From: Simon McVittie Date: Thu, 7 Feb 2013 21:14:56 +0000 Subject: bus: Escape environment-based D-Bus addresses properly If XDG_RUNTIME_DIR contains a character like ":" (for instance if it's formed from an X11 display name), then it isn't valid to substitute it into a D-Bus address without escaping. http://bugs.freedesktop.org/show_bug.cgi?id=60499 --- src/core/dbus.c | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/core/dbus.c b/src/core/dbus.c index 2a1c66054a..08aff1fd2b 100644 --- a/src/core/dbus.c +++ b/src/core/dbus.c @@ -1077,18 +1077,33 @@ static int bus_init_private(Manager *m) { } else { const char *e; char *p; + char *escaped; e = secure_getenv("XDG_RUNTIME_DIR"); if (!e) return 0; - if (asprintf(&p, "unix:path=%s/systemd/private", e) < 0) { + if (asprintf(&p, "%s/systemd/private", e) < 0) { r = log_oom(); goto fail; } - mkdir_parents_label(p+10, 0755); - unlink(p+10); + mkdir_parents_label(p, 0755); + unlink(p); + free(p); + + escaped = dbus_address_escape_value(e); + if (!escaped) { + r = log_oom(); + goto fail; + } + if (asprintf(&p, "unix:path=%s/systemd/private", escaped) < 0) { + dbus_free(escaped); + r = log_oom(); + goto fail; + } + dbus_free(escaped); + m->private_bus = dbus_server_listen(p, &error); free(p); } -- cgit v1.2.1 From 3c912ded61c69d89873d5d164ba56c5637b8ddbe Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 6 Mar 2013 17:48:42 +0100 Subject: core: add missing comma for NonewPrivileges= https://bugzilla.redhat.com/show_bug.cgi?id=917404 --- src/core/load-fragment-gperf.gperf.m4 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4 index 22c1761dc2..3643bcded0 100644 --- a/src/core/load-fragment-gperf.gperf.m4 +++ b/src/core/load-fragment-gperf.gperf.m4 @@ -48,7 +48,7 @@ $1.Capabilities, config_parse_exec_capabilities, 0, $1.SecureBits, config_parse_exec_secure_bits, 0, offsetof($1, exec_context) $1.CapabilityBoundingSet, config_parse_bounding_set, 0, offsetof($1, exec_context.capability_bounding_set_drop) $1.TimerSlackNSec, config_parse_nsec, 0, offsetof($1, exec_context.timer_slack_nsec) -$1.NoNewPrivileges config_parse_bool, 0, offsetof($1, exec_context.no_new_privileges) +$1.NoNewPrivileges, config_parse_bool, 0, offsetof($1, exec_context.no_new_privileges) $1.SystemCallFilter, config_parse_syscall_filter, 0, offsetof($1, exec_context) $1.LimitCPU, config_parse_limit, RLIMIT_CPU, offsetof($1, exec_context.rlimit) $1.LimitFSIZE, config_parse_limit, RLIMIT_FSIZE, offsetof($1, exec_context.rlimit) -- cgit v1.2.1 From e76d2e20a5e0ef59a612a8eeec4dd3ce98b7a252 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 6 Mar 2013 12:01:59 -0500 Subject: build-sys: add missing $ Fixup for 25ee45f99. --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index f4ac471a13..a7b9e7f129 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3515,7 +3515,7 @@ sphinx-%: $(AM_V_at)echo Output has been generated in $(abs_top_builddir)/man/python-systemd/ destdir-sphinx: all - dir="$(mktemp -d /tmp/systemd-install.XXXXXX)" && \ + dir="$$(mktemp -d /tmp/systemd-install.XXXXXX)" && \ $(MAKE) DESTDIR="$$dir" install && \ $(MAKE) DESTDIR="$$dir" sphinx-html && \ rm -rf "$$dir" -- cgit v1.2.1 From 66ee5c3df7dc8ef7cd5b35457471d23d09a3cb56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 6 Mar 2013 12:17:37 -0500 Subject: journal: properly advertise sd_journal_reliable_fd sd_journal_reliable_fd was added in 85210bffd836, but it was exported under the wrong name. Not too many users I guess. --- src/journal/libsystemd-journal.sym | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/journal/libsystemd-journal.sym b/src/journal/libsystemd-journal.sym index 7b602f59cb..67741770c9 100644 --- a/src/journal/libsystemd-journal.sym +++ b/src/journal/libsystemd-journal.sym @@ -83,7 +83,7 @@ global: LIBSYSTEMD_JOURNAL_196 { global: - sd_journal_fd_reliable; + sd_journal_reliable_fd; sd_journal_get_catalog; sd_journal_get_catalog_for_message_id; sd_journal_set_data_threshold; -- cgit v1.2.1 From 713bc0cfa477ca1df8769041cb3dbc83c10eace2 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 6 Mar 2013 19:36:39 +0100 Subject: README: add kernel config options --- README | 47 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 37 insertions(+), 10 deletions(-) diff --git a/README b/README index 948bb650ad..04735d61b4 100644 --- a/README +++ b/README @@ -35,9 +35,43 @@ LICENSE: REQUIREMENTS: Linux kernel >= 2.6.39 - with devtmpfs - with cgroups (but it's OK to disable all controllers) - optional but strongly recommended: autofs4, ipv6 + CONFIG_DEVTMPFS + CONFIG_CGROUPS (it's OK to disable all controllers) + CONFIG_INOTIFY_USER + CONFIG_SIGNALFD + CONFIG_TIMERFD + CONFIG_EPOLL + CONFIG_HOTPLUG + CONFIG_SYSFS + + Udev will fail to work with the legacy layout: + CONFIG_SYSFS_DEPRECATED*=n + + Legacy hotplug slows down the system and confuses udev: + CONFIG_UEVENT_HELPER_PATH="" + + Userspace firmware loading is deprecated, will go away, and + sometimes causes problems: + CONFIG_FW_LOADER_USER_HELPER=n + + Some udev rules and virtualization detection relies on it: + CONFIG_DMIID + + Mount and bind mount handling might require it: + CONFIG_FHANDLE + + Optional but strongly recommended: + CONFIG_IPV6 + CONFIG_AUTOFS4_FS + CONFIG_TMPFS_POSIX_ACL + CONFIG_TMPFS_XATTR + + For systemd-bootchart a kernel with procfs support and several + proc output options enabled is required: + CONFIG_PROC_FS + CONFIG_SCHEDSTATS + CONFIG_SCHED_DEBUG + dbus >= 1.4.0 libcap libblkid >= 2.20 (from util-linux) (optional) @@ -63,13 +97,6 @@ REQUIREMENTS: dracut (optional) PolicyKit (optional) - For systmed-bootchart a kernel with procfs support and several - proc output options enabled is required: - - CONFIG_PROC_FS - CONFIG_SCHEDSTATS - CONFIG_SCHED_DEBUG - When building from git you need the following additional dependencies: docbook-xsl -- cgit v1.2.1 From 41938693e76c32161d2b3b83253ce996468cbf9b Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 6 Mar 2013 19:51:52 +0100 Subject: README: remove CONFIG_HOTPLUG, add CONFIG_NET --- README | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README b/README index 04735d61b4..865625afdc 100644 --- a/README +++ b/README @@ -41,7 +41,7 @@ REQUIREMENTS: CONFIG_SIGNALFD CONFIG_TIMERFD CONFIG_EPOLL - CONFIG_HOTPLUG + CONFIG_NET CONFIG_SYSFS Udev will fail to work with the legacy layout: -- cgit v1.2.1 From f28cbd0382ca53baa99803bbc907a469fbf68128 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 6 Mar 2013 20:01:45 +0100 Subject: README: more CONFIG_* updates --- README | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README b/README index 865625afdc..5649a51689 100644 --- a/README +++ b/README @@ -31,7 +31,7 @@ AUTHOR: LICENSE: LGPLv2.1+ for all code - except sd-daemon.[ch] and sd-readahead.[ch] which are MIT - - except src/udev/ which is GPLv2.0+ + - except src/udev/ which is (currently still) GPLv2+ REQUIREMENTS: Linux kernel >= 2.6.39 @@ -45,7 +45,7 @@ REQUIREMENTS: CONFIG_SYSFS Udev will fail to work with the legacy layout: - CONFIG_SYSFS_DEPRECATED*=n + CONFIG_SYSFS_DEPRECATED=n Legacy hotplug slows down the system and confuses udev: CONFIG_UEVENT_HELPER_PATH="" @@ -65,6 +65,7 @@ REQUIREMENTS: CONFIG_AUTOFS4_FS CONFIG_TMPFS_POSIX_ACL CONFIG_TMPFS_XATTR + CONFIG_SECCOMP For systemd-bootchart a kernel with procfs support and several proc output options enabled is required: @@ -72,6 +73,10 @@ REQUIREMENTS: CONFIG_SCHEDSTATS CONFIG_SCHED_DEBUG + For UEFI systems: + CONFIG_EFI_VARS + CONFIG_EFI_PARTITION + dbus >= 1.4.0 libcap libblkid >= 2.20 (from util-linux) (optional) -- cgit v1.2.1 From 9304ef91c563263cfd914fb32b6ca118bf60d60e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 6 Mar 2013 13:19:45 -0500 Subject: libsystemd-journal: export new function, increase library version Since sd_journal_reliable_fd wasn't exported before, it is as if it was added now. Library "current" number must be bumped. michich> Someone links with the fixed version and produces a RPM with his program. The RPM will happily install on a system with an old systemd version (the deps will appear fine), but the program will fail to run. --- Makefile.am | 6 +++--- src/journal/libsystemd-journal.sym | 6 +++++- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Makefile.am b/Makefile.am index a7b9e7f129..7b1bac5e50 100644 --- a/Makefile.am +++ b/Makefile.am @@ -51,9 +51,9 @@ LIBSYSTEMD_ID128_CURRENT=0 LIBSYSTEMD_ID128_REVISION=17 LIBSYSTEMD_ID128_AGE=0 -LIBSYSTEMD_JOURNAL_CURRENT=7 -LIBSYSTEMD_JOURNAL_REVISION=1 -LIBSYSTEMD_JOURNAL_AGE=7 +LIBSYSTEMD_JOURNAL_CURRENT=8 +LIBSYSTEMD_JOURNAL_REVISION=0 +LIBSYSTEMD_JOURNAL_AGE=8 # Dirs of external packages dbuspolicydir=@dbuspolicydir@ diff --git a/src/journal/libsystemd-journal.sym b/src/journal/libsystemd-journal.sym index 67741770c9..fbe41501f0 100644 --- a/src/journal/libsystemd-journal.sym +++ b/src/journal/libsystemd-journal.sym @@ -83,9 +83,13 @@ global: LIBSYSTEMD_JOURNAL_196 { global: - sd_journal_reliable_fd; sd_journal_get_catalog; sd_journal_get_catalog_for_message_id; sd_journal_set_data_threshold; sd_journal_get_data_threshold; } LIBSYSTEMD_JOURNAL_195; + +LIBSYSTEMD_JOURNAL_198 { +global: + sd_journal_reliable_fd; +} LIBSYSTEMD_JOURNAL_196; -- cgit v1.2.1 From 11dac832c75cbdd0015fb0417b9877396ea57f6f Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Wed, 6 Mar 2013 23:24:31 +0100 Subject: service: sysv - properly handle init scripts with .sh suffix Dropping the distribution specific #ifdefs in 88516c0c952b9502e8ef1d6a1481af61b0fb422d broke the .sh suffix stripping since we now always used the else clause of the rc. check. We eventually want to drop the rc. prefix stripping, but for now we assume that no sysv init script uses both an rc. prefix and .sh suffix, so make the check for the .sh suffix and rc. prefix mutually exclusive. --- src/core/service.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/service.c b/src/core/service.c index 61b150cba8..3fbb0a136d 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -331,7 +331,7 @@ static char *sysv_translate_name(const char *name) { if (endswith(name, ".sh")) /* Drop .sh suffix */ strcpy(stpcpy(r, name) - 3, ".service"); - if (startswith(name, "rc.")) + else if (startswith(name, "rc.")) /* Drop rc. prefix */ strcpy(stpcpy(r, name + 3), ".service"); else -- cgit v1.2.1 From 1d98d9a62c16c8282d02942d80e025ceec962c9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 6 Mar 2013 17:07:42 -0500 Subject: man: fix compilation of example --- man/sd_journal_get_fd.xml | 8 ++++---- sysctl.d/coredump.conf.in | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/man/sd_journal_get_fd.xml b/man/sd_journal_get_fd.xml index 189d21352b..3fc9c5f5b5 100644 --- a/man/sd_journal_get_fd.xml +++ b/man/sd_journal_get_fd.xml @@ -212,7 +212,7 @@ int main(int argc, char *argv[]) { return 1; } for (;;) { - const char *d; + const void *d; size_t l; r = sd_journal_next(j); if (r < 0) { @@ -233,7 +233,7 @@ int main(int argc, char *argv[]) { fprintf(stderr, "Failed to read message field: %s\n", strerror(-r)); continue; } - printf("%.*s\n", (int) l, d); + printf("%.*s\n", (int) l, (const char*) d); } sd_journal_close(j); return 0; @@ -248,9 +248,9 @@ int main(int argc, char *argv[]) { int wait_for_changes(sd_journal *j) { struct pollfd pollfd; - pollfd.fd = sd_journal_get_fd(); + pollfd.fd = sd_journal_get_fd(j); pollfd.events = POLLIN; - poll(&pollfd, 1, sd_journal_reliable_fd() > 0 ? -1 : 2000); + poll(&pollfd, 1, sd_journal_reliable_fd(j) > 0 ? -1 : 2000); return sd_journal_process(j); } diff --git a/sysctl.d/coredump.conf.in b/sysctl.d/coredump.conf.in index 5c791b791b..d5795a37d5 100644 --- a/sysctl.d/coredump.conf.in +++ b/sysctl.d/coredump.conf.in @@ -5,6 +5,6 @@ # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. -# See sysctl.d(5) for details +# See sysctl.d(5) and core(5) for for details. kernel.core_pattern=|@rootlibexecdir@/systemd-coredump %p %u %g %s %t %e -- cgit v1.2.1 From aaf080611894aa70af421380af3bca23ad998a8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 6 Mar 2013 22:15:46 -0500 Subject: systemd-python: catch only ValueErrors in conversion code First of all, 'try: ... except: ...' (with no exception specified) is always a no-no, since it catches all BaseExceptions, which includes ^C and other stuff which should almost never be caught. Now the conversion is stricter, and only one conversion is attempted, and only a ValueEror is caught. It seems reasonable to catch ValueErrors, since the entries in the journal are not verified, and any erroneous application might log a field which cannot be converted. The consumer of events must only check if a field is an instance of bytes and can otherwise assume that the conversion was performed correctly. Order of arguments in Reader.__init__ has been changed to match order in _Reader.__init__. Conversions have been updated to work under Python 2 and 3. --- src/python-systemd/journal.py | 98 ++++++++++++++++++++++++++----------------- 1 file changed, 60 insertions(+), 38 deletions(-) diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 23e1d65747..80299e6b98 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -43,13 +43,29 @@ if _sys.version_info >= (3,): else: Monotonic = tuple -_MONOTONIC_CONVERTER = lambda p: Monotonic((_datetime.timedelta(microseconds=p[0]), - _uuid.UUID(bytes=p[1]))) -_REALTIME_CONVERTER = lambda x: _datetime.datetime.fromtimestamp(x / 1E6) +def _convert_monotonic(m): + return Monotonic((_datetime.timedelta(microseconds=m[0]), + _uuid.UUID(bytes=m[1]))) + +def _convert_source_monotonic(s): + return _datetime.timedelta(microseconds=int(s)) + +def _convert_realtime(t): + return _datetime.datetime.fromtimestamp(t / 1E6) + +def _convert_timestamp(s): + return _datetime.datetime.fromtimestamp(int(s) / 1E6) + +if _sys.version_info >= (3,): + def _convert_uuid(s): + return _uuid.UUID(s.decode()) +else: + _convert_uuid = _uuid.UUID + DEFAULT_CONVERTERS = { - 'MESSAGE_ID': _uuid.UUID, - '_MACHINE_ID': _uuid.UUID, - '_BOOT_ID': _uuid.UUID, + 'MESSAGE_ID': _convert_uuid, + '_MACHINE_ID': _convert_uuid, + '_BOOT_ID': _convert_uuid, 'PRIORITY': int, 'LEADER': int, 'SESSION_ID': int, @@ -68,55 +84,60 @@ DEFAULT_CONVERTERS = { 'CODE_LINE': int, 'ERRNO': int, 'EXIT_STATUS': int, - '_SOURCE_REALTIME_TIMESTAMP': _REALTIME_CONVERTER, - '__REALTIME_TIMESTAMP': _REALTIME_CONVERTER, - '_SOURCE_MONOTONIC_TIMESTAMP': _MONOTONIC_CONVERTER, - '__MONOTONIC_TIMESTAMP': _MONOTONIC_CONVERTER, + '_SOURCE_REALTIME_TIMESTAMP': _convert_timestamp, + '__REALTIME_TIMESTAMP': _convert_realtime, + '_SOURCE_MONOTONIC_TIMESTAMP': _convert_source_monotonic, + '__MONOTONIC_TIMESTAMP': _convert_monotonic, 'COREDUMP': bytes, 'COREDUMP_PID': int, 'COREDUMP_UID': int, 'COREDUMP_GID': int, 'COREDUMP_SESSION': int, 'COREDUMP_SIGNAL': int, - 'COREDUMP_TIMESTAMP': _REALTIME_CONVERTER, + 'COREDUMP_TIMESTAMP': _convert_timestamp, } -if _sys.version_info >= (3,): - _convert_unicode = _functools.partial(str, encoding='utf-8') -else: - _convert_unicode = _functools.partial(unicode, encoding='utf-8') - class Reader(_Reader): """Reader allows the access and filtering of systemd journal entries. Note that in order to access the system journal, a non-root user must be in the `adm` group. - Example usage to print out all error or higher level messages - for systemd-udevd for the boot: + Example usage to print out all informational or higher level + messages for systemd-udevd for this boot: - >>> myjournal = journal.Reader() - >>> myjournal.add_boot_match(journal.CURRENT_BOOT) - >>> myjournal.add_loglevel_matches(journal.LOG_ERR) - >>> myjournal.add_match(_SYSTEMD_UNIT="systemd-udevd.service") - >>> for entry in myjournal: + >>> j = journal.Reader() + >>> j.this_boot() + >>> j.log_level(journal.LOG_INFO) + >>> j.add_match(_SYSTEMD_UNIT="systemd-udevd.service") + >>> for entry in j: ... print(entry['MESSAGE']) See systemd.journal-fields(7) for more info on typical fields found in the journal. """ - def __init__(self, converters=None, flags=LOCAL_ONLY, path=None): + def __init__(self, flags=LOCAL_ONLY, path=None, converters=None): """Create an instance of Reader, which allows filtering and return of journal entries. - Argument `converters` is a dictionary which updates the - DEFAULT_CONVERTERS to convert journal field values. + Argument `flags` sets open flags of the journal, which can be one of, or ORed combination of constants: LOCAL_ONLY (default) opens journal on local machine only; RUNTIME_ONLY opens only volatile journal files; and SYSTEM_ONLY opens only journal files of system services and the kernel. + Argument `path` is the directory of journal files. Note that currently flags are ignored when `path` is present as they are currently not relevant. + + Argument `converters` is a dictionary which updates the + DEFAULT_CONVERTERS to convert journal field values. Field + names are used as keys into this dictionary. The values must + be single argument functions, which take a `bytes` object and + return a converted value. When there's no entry for a field + name, then the default UTF-8 decoding will be attempted. If + the conversion fails with a ValueError, unconverted bytes + object will be returned. (Note that ValueEror is a superclass + of UnicodeDecodeError). """ super(Reader, self).__init__(flags, path) if _sys.version_info >= (3,3): @@ -130,18 +151,19 @@ class Reader(_Reader): self.converters.update(converters) def _convert_field(self, key, value): - """Convert value based on callable from self.converters - based of field/key""" + """Convert value using self.converters[key] + + If `key` is not present in self.converters, a standard unicode + decoding will be attempted. If the conversion (either + key-specific or the default one) fails with a ValueError, the + original bytes object will be returned. + """ + convert = self.converters.get(key, bytes.decode) try: - result = self.converters[key](value) - except: - # Default conversion in unicode - try: - result = _convert_unicode(value) - except UnicodeDecodeError: - # Leave in default bytes - result = value - return result + return convert(value) + except ValueError: + # Leave in default bytes + return value def _convert_entry(self, entry): """Convert entire journal entry utilising _covert_field""" @@ -217,7 +239,7 @@ class Reader(_Reader): """ if 0 <= level <= 7: for i in range(level+1): - self.add_match(PRIORITY="%s" % i) + self.add_match(PRIORITY="%d" % i) else: raise ValueError("Log level must be 0 <= level <= 7") -- cgit v1.2.1 From 5c1c14b3a021fbf91f31018256b0c241ea1fe3f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Mar 2013 00:26:24 -0500 Subject: systemd-python: split .seek() into .seek_head() and .seek_tail() This way python code follows the original interface more closely. Also, .seek(0, journal.SEEK_END) was just to much to type. --- src/python-systemd/_reader.c | 79 +++++++++++++------------------------ src/python-systemd/docs/journal.rst | 5 --- src/python-systemd/journal.py | 1 - 3 files changed, 27 insertions(+), 58 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 7013fcfcef..e5733f0bca 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -360,60 +360,34 @@ static PyObject* Reader_flush_matches(Reader *self, PyObject *args) Py_RETURN_NONE; } -PyDoc_STRVAR(Reader_seek__doc__, - "seek(offset[, whence]) -> None\n\n" - "Jump `offset` entries in the journal. Argument\n" - "`whence` defines what the offset is relative to:\n" - "os.SEEK_SET (default) from first match in journal;\n" - "os.SEEK_CUR from current position in journal;\n" - "and os.SEEK_END is from last match in journal."); -static PyObject* Reader_seek(Reader *self, PyObject *args, PyObject *keywds) +PyDoc_STRVAR(Reader_seek_head__doc__, + "seek_head() -> None\n\n" + "Jump to the beginning of the journal.\n" + "This method invokes sd_journal_seek_head().\n" + "See man:sd_journal_seek_head(3)."); +static PyObject* Reader_seek_head(Reader *self, PyObject *args) { - int64_t offset; - int whence = SEEK_SET; - PyObject *result = NULL; - - static const char* const kwlist[] = {"offset", "whence", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, keywds, "L|i", (char**) kwlist, - &offset, &whence)) + int r; + Py_BEGIN_ALLOW_THREADS + r = sd_journal_seek_head(self->j); + Py_END_ALLOW_THREADS + if (set_error(r, NULL, NULL)) return NULL; + Py_RETURN_NONE; +} - switch(whence) { - case SEEK_SET: { - int r; - Py_BEGIN_ALLOW_THREADS - r = sd_journal_seek_head(self->j); - Py_END_ALLOW_THREADS - if (set_error(r, NULL, NULL)) - return NULL; - - if (offset > 0LL) - result = PyObject_CallMethod((PyObject *)self, (char*) "get_next", - (char*) "L", offset); - break; - } - case SEEK_CUR: - result = PyObject_CallMethod((PyObject *)self, (char*) "get_next", - (char*) "L", offset); - break; - case SEEK_END: { - int r; - Py_BEGIN_ALLOW_THREADS - r = sd_journal_seek_tail(self->j); - Py_END_ALLOW_THREADS - if (set_error(r, NULL, NULL)) - return NULL; - - result = PyObject_CallMethod((PyObject *)self, (char*) "get_next", - (char*) "L", offset < 0LL ? offset : -1LL); - break; - } - default: - PyErr_SetString(PyExc_ValueError, "Invalid value for whence"); - } - - Py_XDECREF(result); - if (PyErr_Occurred()) +PyDoc_STRVAR(Reader_seek_tail__doc__, + "seek_tail() -> None\n\n" + "Jump to the beginning of the journal.\n" + "This method invokes sd_journal_seek_tail().\n" + "See man:sd_journal_seek_tail(3)."); +static PyObject* Reader_seek_tail(Reader *self, PyObject *args) +{ + int r; + Py_BEGIN_ALLOW_THREADS + r = sd_journal_seek_tail(self->j); + Py_END_ALLOW_THREADS + if (set_error(r, NULL, NULL)) return NULL; Py_RETURN_NONE; } @@ -644,7 +618,8 @@ static PyMethodDef Reader_methods[] = { {"add_match", (PyCFunction) Reader_add_match, METH_VARARGS|METH_KEYWORDS, Reader_add_match__doc__}, {"add_disjunction", (PyCFunction) Reader_add_disjunction, METH_NOARGS, Reader_add_disjunction__doc__}, {"flush_matches", (PyCFunction) Reader_flush_matches, METH_NOARGS, Reader_flush_matches__doc__}, - {"seek", (PyCFunction) Reader_seek, METH_VARARGS | METH_KEYWORDS, Reader_seek__doc__}, + {"seek_head", (PyCFunction) Reader_seek_head, METH_NOARGS, Reader_seek_head__doc__}, + {"seek_tail", (PyCFunction) Reader_seek_tail, METH_NOARGS, Reader_seek_tail__doc__}, {"seek_realtime", (PyCFunction) Reader_seek_realtime, METH_VARARGS, Reader_seek_realtime__doc__}, {"seek_monotonic", (PyCFunction) Reader_seek_monotonic, METH_VARARGS, Reader_seek_monotonic__doc__}, {"wait", (PyCFunction) Reader_wait, METH_VARARGS, Reader_wait__doc__}, diff --git a/src/python-systemd/docs/journal.rst b/src/python-systemd/docs/journal.rst index 78b831afff..faa270746d 100644 --- a/src/python-systemd/docs/journal.rst +++ b/src/python-systemd/docs/journal.rst @@ -27,12 +27,7 @@ Accessing the Journal .. autoattribute:: systemd.journal.DEFAULT_CONVERTERS -Whence constants -~~~~~~~~~~~~~~~~ -.. autoattribute:: systemd.journal.SEEK_SET -.. autoattribute:: systemd.journal.SEEK_CUR -.. autoattribute:: systemd.journal.SEEK_END Journal access types ~~~~~~~~~~~~~~~~~~~~ diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 80299e6b98..e9c09e8747 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -27,7 +27,6 @@ import functools as _functools import uuid as _uuid import traceback as _traceback import os as _os -from os import SEEK_SET, SEEK_CUR, SEEK_END import logging as _logging if _sys.version_info >= (3,): from collections import ChainMap as _ChainMap -- cgit v1.2.1 From f2e82cd5add31d704b39a91d570ab6649653fa49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Mar 2013 00:35:28 -0500 Subject: systemd-python: export sd_j_get_fd, sd_j_reliable_fd, sd_j_close sd_journal_get_fd(j) is called j.fileno(), for compatiblity with Python conventions for file-like objects. More importantly, those new .seek_head() and .seek_tail() do not call .get_next(). This is better, if one wants to skip before retrieving an entry. --- src/python-systemd/_reader.c | 44 +++++++++++++++++++++++++++++++++++++ src/python-systemd/docs/journal.rst | 16 ++++++++++++++ 2 files changed, 60 insertions(+) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index e5733f0bca..c435dadecf 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -124,6 +124,47 @@ static int Reader_init(Reader *self, PyObject *args, PyObject *keywds) return set_error(r, path, "Invalid flags or path"); } +PyDoc_STRVAR(Reader_fileno__doc__, + "fileno() -> int\n\n" + "Get a file descriptor to poll for changes in the journal.\n" + "This method invokes sd_journal_get_fd().\n" + "See man:sd_journal_get_fd(3)."); +static PyObject* Reader_fileno(Reader *self, PyObject *args) +{ + int r; + r = sd_journal_get_fd(self->j); + set_error(r, NULL, NULL); + if (r < 0) + return NULL; + return long_FromLong(r); +} + +PyDoc_STRVAR(Reader_reliable_fd__doc__, + "reliable_fd() -> bool\n\n" + "Returns True iff the journal can be polled reliably.\n" + "This method invokes sd_journal_reliable_fd().\n" + "See man:sd_journal_reliable_fd(3)."); +static PyObject* Reader_reliable_fd(Reader *self, PyObject *args) +{ + int r; + r = sd_journal_reliable_fd(self->j); + set_error(r, NULL, NULL); + if (r < 0) + return NULL; + return PyBool_FromLong(r); +} + +PyDoc_STRVAR(Reader_close__doc__, + "reliable_fd() -> None\n\n" + "Free resources allocated by this Reader object.\n" + "This method invokes sd_journal_close().\n" + "See man:sd_journal_close(3)."); +static PyObject* Reader_close(Reader *self, PyObject *args) +{ + sd_journal_close(self->j); + Py_RETURN_NONE; +} + PyDoc_STRVAR(Reader_get_next__doc__, "get_next([skip]) -> dict\n\n" "Return dictionary of the next log entry. Optional skip value will\n" @@ -613,6 +654,9 @@ static PyGetSetDef Reader_getseters[] = { }; static PyMethodDef Reader_methods[] = { + {"fileno", (PyCFunction) Reader_fileno, METH_NOARGS, Reader_fileno__doc__}, + {"reliable_fd", (PyCFunction) Reader_reliable_fd, METH_NOARGS, Reader_reliable_fd__doc__}, + {"close", (PyCFunction) Reader_close, METH_NOARGS, Reader_close__doc__}, {"get_next", (PyCFunction) Reader_get_next, METH_VARARGS, Reader_get_next__doc__}, {"get_previous", (PyCFunction) Reader_get_previous, METH_VARARGS, Reader_get_previous__doc__}, {"add_match", (PyCFunction) Reader_add_match, METH_VARARGS|METH_KEYWORDS, Reader_add_match__doc__}, diff --git a/src/python-systemd/docs/journal.rst b/src/python-systemd/docs/journal.rst index faa270746d..9dc495ffdb 100644 --- a/src/python-systemd/docs/journal.rst +++ b/src/python-systemd/docs/journal.rst @@ -27,6 +27,22 @@ Accessing the Journal .. autoattribute:: systemd.journal.DEFAULT_CONVERTERS +Example: polling for journal events +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +This example shows that journal events can be waited for (using +e.g. `poll`). This makes it easy to integrate Reader in an external +event loop: + + >>> import select + >>> from systemd import journal + >>> j = journal.Reader() + >>> j.seek_tail() + >>> p = select.poll() + >>> p.register(j, select.POLLIN) + >>> p.poll() + [(3, 1)] + >>> j.get_next() Journal access types -- cgit v1.2.1 From 99613ec5d7f0c6e30801457f60c2cab7d8e50d8d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Mar 2013 00:40:30 -0500 Subject: libsystemd-journal: return 0 on success in get_data() The man page says so. Right now 0 would be returned if the data was encrypted, 1 otherwise. --- src/journal/journalctl.c | 2 +- src/journal/sd-journal.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index cb93fea63b..c90fecd239 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -1103,7 +1103,7 @@ int main(int argc, char *argv[]) { int flags; if (need_seek) { - if(!arg_reverse) + if (!arg_reverse) r = sd_journal_next(j); else r = sd_journal_previous(j); diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 19123544b3..fa04bfdfc8 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -1868,7 +1868,7 @@ _public_ int sd_journal_get_data(sd_journal *j, const char *field, const void ** *data = o->data.payload; *size = t; - return 1; + return 0; } r = journal_file_move_to_object(f, OBJECT_ENTRY, f->current_offset, &o); -- cgit v1.2.1 From 46e6e4f1e50a56d69f87653f30996766fcb23f8a Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 7 Mar 2013 09:27:59 +0100 Subject: man/kernel-install.xml: fix paths to reflect actual behaviour --- man/kernel-install.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/kernel-install.xml b/man/kernel-install.xml index 93dc0ae4fd..4634680b39 100644 --- a/man/kernel-install.xml +++ b/man/kernel-install.xml @@ -88,7 +88,7 @@ along with systemd; If not, see . /boot/<MACHINE-ID>/<KERNEL VERSION>/linux. kernel-install also creates a boot loader entry according to the boot loader specification - in /boot/loader/entries/<OS-ID>-<KERNEL VERSION>-<MACHINE-ID>.conf. + in /boot/loader/entries/<MACHINE-ID>-<KERNEL VERSION>.conf. If the file initrd is found next to the linux file, the initrd will be added to the configuration. @@ -100,7 +100,7 @@ along with systemd; If not, see . "remove <KERNEL VERSION> /boot/<MACHINE-ID>/<KERNEL VERSION>/" kernel-install removes the entire directory /boot/<MACHINE-ID>/<KERNEL VERSION>/ - and the file /boot/loader/entries/<OS-ID>-<KERNEL VERSION>-<MACHINE-ID>.conf + and the file /boot/loader/entries/<MACHINE-ID>-<KERNEL VERSION>.conf -- cgit v1.2.1 From f2d88580b50e3c173dcc2838f92fa85291bc5495 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 13:34:07 +0100 Subject: nspawn: create a separate devpts namespace for nspawn containers --- src/nspawn/nspawn.c | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 8b57421431..1a3e41f403 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -60,6 +60,10 @@ #include "build.h" #include "fileio.h" +#ifndef TTY_GID +#define TTY_GID 5 +#endif + typedef enum LinkJournal { LINK_NO, LINK_AUTO, @@ -335,7 +339,7 @@ static int mount_all(const char *dest) { { NULL, "/proc/sys", NULL, NULL, MS_BIND|MS_RDONLY|MS_REMOUNT, true }, /* Then, make it r/o */ { "sysfs", "/sys", "sysfs", NULL, MS_RDONLY|MS_NOSUID|MS_NOEXEC|MS_NODEV, true }, { "tmpfs", "/dev", "tmpfs", "mode=755", MS_NOSUID|MS_STRICTATIME, true }, - { "/dev/pts", "/dev/pts", NULL, NULL, MS_BIND, true }, + { "devpts", "/dev/pts", "devpts","newinstance,ptmxmode=0666,mode=620,gid=" STRINGIFY(TTY_GID), MS_NOSUID|MS_NOEXEC, true }, { "tmpfs", "/dev/shm", "tmpfs", "mode=1777", MS_NOSUID|MS_NODEV|MS_STRICTATIME, true }, { "tmpfs", "/run", "tmpfs", "mode=755", MS_NOSUID|MS_NODEV|MS_STRICTATIME, true }, #ifdef HAVE_SELINUX @@ -548,8 +552,7 @@ static int copy_devnodes(const char *dest) { "full\0" "random\0" "urandom\0" - "tty\0" - "ptmx\0"; + "tty\0"; const char *d; int r = 0; @@ -600,6 +603,21 @@ static int copy_devnodes(const char *dest) { return r; } +static int setup_ptmx(const char *dest) { + _cleanup_free_ char *p = NULL; + + p = strappend(dest, "/dev/ptmx"); + if (!p) + return log_oom(); + + if (symlink("pts/ptmx", p) < 0) { + log_error("Failed to create /dev/ptmx symlink: %m"); + return -errno; + } + + return 0; +} + static int setup_dev_console(const char *dest, const char *console) { struct stat st; char _cleanup_free_ *to = NULL; @@ -1276,7 +1294,7 @@ int main(int argc, char *argv[]) { siginfo_t status; int pipefd[2]; - if(pipe2(pipefd, O_NONBLOCK|O_CLOEXEC) < 0) { + if (pipe2(pipefd, O_NONBLOCK|O_CLOEXEC) < 0) { log_error("pipe2(): %m"); goto finish; } @@ -1393,6 +1411,9 @@ int main(int argc, char *argv[]) { if (copy_devnodes(arg_directory) < 0) goto child_fail; + if (setup_ptmx(arg_directory) < 0) + goto child_fail; + dev_setup(arg_directory); if (setup_dev_console(arg_directory, console) < 0) -- cgit v1.2.1 From b1b8e8169496d3c4f991de9a9d2975ffada6fa0f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 15:59:26 +0100 Subject: virt: check for /sys/hypervisor/type for detecting xen PV https://bugs.freedesktop.org/show_bug.cgi?id=61491 --- src/shared/virt.c | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/src/shared/virt.c b/src/shared/virt.c index eed321016d..78016eec89 100644 --- a/src/shared/virt.c +++ b/src/shared/virt.c @@ -66,6 +66,22 @@ int detect_vm(const char **id) { unsigned i; const char *j, *k; bool hypervisor; + _cleanup_free_ char *hvtype = NULL; + int r; + + /* Try high-level hypervisor sysfs file first: + * + * https://bugs.freedesktop.org/show_bug.cgi?id=61491 */ + r = read_one_line_file("/sys/hypervisor/type", &hvtype); + if (r >= 0) { + if (streq(hvtype, "xen")) { + if (id) + *id = "xen"; + + return 1; + } + } else if (r != -ENOENT) + return r; /* http://lwn.net/Articles/301888/ */ zero(sig); @@ -118,11 +134,11 @@ int detect_vm(const char **id) { } for (i = 0; i < ELEMENTSOF(dmi_vendors); i++) { - char *s; - int r; + _cleanup_free_ char *s = NULL; const char *found = NULL; - if ((r = read_one_line_file(dmi_vendors[i], &s)) < 0) { + r = read_one_line_file(dmi_vendors[i], &s); + if (r < 0) { if (r != -ENOENT) return r; @@ -132,7 +148,6 @@ int detect_vm(const char **id) { NULSTR_FOREACH_PAIR(j, k, dmi_vendor_table) if (startswith(s, j)) found = k; - free(s); if (found) { if (id) @@ -142,7 +157,7 @@ int detect_vm(const char **id) { } } - if (hypervisor) { + if (hypervisor || hvtype) { if (id) *id = "other"; -- cgit v1.2.1 From ed1553a20d5bc73c1ae8e269d46ee24f80d259d4 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Thu, 7 Mar 2013 15:12:44 +0100 Subject: man: Fix id attributes --- man/sd-readahead.xml | 2 +- man/sd_readahead.xml | 2 +- man/systemd-activate.xml | 2 +- man/systemd-update-utmp-runlevel.service.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/man/sd-readahead.xml b/man/sd-readahead.xml index ee7c936813..f8a0a0b559 100644 --- a/man/sd-readahead.xml +++ b/man/sd-readahead.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd-readahead diff --git a/man/sd_readahead.xml b/man/sd_readahead.xml index 39e34698d4..c26d5c63e3 100644 --- a/man/sd_readahead.xml +++ b/man/sd_readahead.xml @@ -21,7 +21,7 @@ along with systemd; If not, see . --> - + sd_readahead diff --git a/man/systemd-activate.xml b/man/systemd-activate.xml index 6949731f64..a5cab8e3b7 100644 --- a/man/systemd-activate.xml +++ b/man/systemd-activate.xml @@ -21,7 +21,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-activate diff --git a/man/systemd-update-utmp-runlevel.service.xml b/man/systemd-update-utmp-runlevel.service.xml index 0e19581f98..867b958d30 100644 --- a/man/systemd-update-utmp-runlevel.service.xml +++ b/man/systemd-update-utmp-runlevel.service.xml @@ -19,7 +19,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . --> - + systemd-update-utmp-runlevel.service -- cgit v1.2.1 From 7aa955af052f8e50bfdbf01f368317012775bc9f Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Thu, 7 Mar 2013 15:12:45 +0100 Subject: man: Unify title for configuration files --- man/hostname.xml | 2 +- man/localtime.xml | 2 +- man/machine-id.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/man/hostname.xml b/man/hostname.xml index 84a2961664..f89332e983 100644 --- a/man/hostname.xml +++ b/man/hostname.xml @@ -24,7 +24,7 @@ - /etc/hostname + hostname systemd diff --git a/man/localtime.xml b/man/localtime.xml index 88c84a3682..d3da4ed277 100644 --- a/man/localtime.xml +++ b/man/localtime.xml @@ -25,7 +25,7 @@ - /etc/localtime + localtime systemd diff --git a/man/machine-id.xml b/man/machine-id.xml index 7d424b705b..153ae4da2c 100644 --- a/man/machine-id.xml +++ b/man/machine-id.xml @@ -24,7 +24,7 @@ - /etc/machine-id + machine-id systemd -- cgit v1.2.1 From 650001c6f7532601a9e5f685c348dae9541352cf Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Thu, 7 Mar 2013 15:12:46 +0100 Subject: util: Fix grammar in comment --- src/shared/util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shared/util.c b/src/shared/util.c index b7ba7fbe84..c493a34877 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -3607,8 +3607,8 @@ void execute_directory(const char *directory, DIR *d, char *argv[]) { assert(directory); - /* Executes all binaries in a directory in parallel and waits - * until all they all finished. */ + /* Executes all binaries in a directory in parallel and + * waits for them to finish. */ if (!d) { if (!(_d = opendir(directory))) { -- cgit v1.2.1 From e90f9fa4d1cab6f73fc502fe9ef705c1bb2912a0 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 7 Mar 2013 08:52:54 +0100 Subject: bootchart: add parameter "-C" to expand process names to the full cmdline --- src/bootchart/bootchart.c | 7 ++++++- src/bootchart/bootchart.h | 3 ++- src/bootchart/log.c | 33 +++++++++++++++++++++++++++++++-- src/bootchart/svg.c | 39 +++++++++++++++++++++++++++++++++------ 4 files changed, 72 insertions(+), 10 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index af573da0f2..543037dae1 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -76,6 +76,7 @@ bool entropy = false; bool initcall = true; bool relative = false; bool filter = true; +bool show_cmdline = false; bool pss = false; int samples; int len = 500; /* we record len+1 (1 start sample) */ @@ -150,6 +151,7 @@ int main(int argc, char *argv[]) {"output", required_argument, NULL, 'o'}, {"init", required_argument, NULL, 'i'}, {"no-filter", no_argument, NULL, 'F'}, + {"cmdline", no_argument, NULL, 'C'}, {"help", no_argument, NULL, 'h'}, {"scale-x", required_argument, NULL, 'x'}, {"scale-y", required_argument, NULL, 'y'}, @@ -159,7 +161,7 @@ int main(int argc, char *argv[]) gind = 0; - i = getopt_long(argc, argv, "erpf:n:o:i:Fhx:y:", opts, &gind); + i = getopt_long(argc, argv, "erpf:n:o:i:FChx:y:", opts, &gind); if (i == -1) break; switch (i) { @@ -175,6 +177,9 @@ int main(int argc, char *argv[]) case 'F': filter = false; break; + case 'C': + show_cmdline = true; + break; case 'n': r = safe_atoi(optarg, &len); if (r < 0) diff --git a/src/bootchart/bootchart.h b/src/bootchart/bootchart.h index ea26c93c46..c42f97140a 100644 --- a/src/bootchart/bootchart.h +++ b/src/bootchart/bootchart.h @@ -61,7 +61,7 @@ struct ps_struct { struct ps_struct *next; /* siblings */ /* must match - otherwise it's a new process with same PID */ - char name[16]; + char name[256]; int pid; int ppid; @@ -101,6 +101,7 @@ extern struct cpu_stat_struct cpustat[]; extern int pscount; extern bool relative; extern bool filter; +extern bool show_cmdline; extern bool pss; extern bool entropy; extern bool initcall; diff --git a/src/bootchart/log.c b/src/bootchart/log.c index cf6c3a73f6..1e3f4a9e8c 100644 --- a/src/bootchart/log.c +++ b/src/bootchart/log.c @@ -95,6 +95,26 @@ static char *bufgetline(char *buf) return c; } +static int pid_cmdline_strncpy(char *buffer, int pid, size_t buf_len) { + char filename[PATH_MAX]; + int _cleanup_close_ fd=-1; + ssize_t n; + + sprintf(filename, "%d/cmdline", pid); + fd = openat(procfd, filename, O_RDONLY); + if (fd < 0) + return -errno; + + n = read(fd, buffer, buf_len-1); + if (n > 0) { + int i; + for (i = 0; i < n; i++) + if (buffer[i] == '\0') + buffer[i] = ' '; + buffer[n] = '\0'; + } + return 0; +} void log_sample(int sample) { @@ -273,7 +293,12 @@ schedstat_next: if (!sscanf(buf, "%s %*s %*s", key)) continue; - strncpy(ps->name, key, 16); + strncpy(ps->name, key, 256); + + /* cmdline */ + if (show_cmdline) + pid_cmdline_strncpy(ps->name, pid, 256); + /* discard line 2 */ m = bufgetline(buf); if (!m) @@ -433,7 +458,11 @@ catch_rename: if (!sscanf(buf, "%s %*s %*s", key)) continue; - strncpy(ps->name, key, 16); + strncpy(ps->name, key, 256); + + /* cmdline */ + if (show_cmdline) + pid_cmdline_strncpy(ps->name, pid, 256); } } } diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index f8a3776873..4c78abda63 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -267,6 +267,20 @@ static void svg_graph_box(int height) } } +/* xml comments must not contain "--" */ +static char* xml_comment_encode(const char* name) { + char *enc_name, *p; + + enc_name = strdup(name); + if (!enc_name) + return NULL; + + for (p = enc_name; *p; p++) + if (p[0] == '-' && p[1] == '-') + p[1] = '_'; + + return enc_name; +} static void svg_pss_graph(void) { @@ -369,7 +383,7 @@ static void svg_pss_graph(void) top = bottom + ps->sample[i].pss; /* draw a label with the process / PID */ if ((i == 1) || (ps->sample[i - 1].pss <= (100 * scale_y))) - svg(" %s [%i]\n", + svg(" [%i]\n", time_to_graph(sampletime[i] - graph_start), kb_to_graph(1000000.0 - bottom - ((top - bottom) / 2)), ps->name, @@ -383,10 +397,17 @@ static void svg_pss_graph(void) svg("\n\n\n"); ps = ps_first; while (ps->next_ps) { + char _cleanup_free_*enc_name; ps = ps->next_ps; if (!ps) continue; - svg("\n", ps->name, ps->pid, + svg("\n", enc_name, ps->pid, ps->ppid, ps->total); /* it would be nice if we could use exec_start from /proc/pid/sched, @@ -898,7 +925,7 @@ static void svg_ps_bars(void) w = ps->first; /* text label of process name */ - svg(" %s [%i] %.03fs\n", + svg(" [%i]%.03fs\n", time_to_graph(sampletime[w] - graph_start) + 5.0, ps_to_graph(j) + 14.0, ps->name, @@ -1002,7 +1029,7 @@ static void svg_top_ten_cpu(void) svg("Top CPU consumers:\n"); for (n = 0; n < 10; n++) - svg("%3.03fs - %s[%d]\n", + svg("%3.03fs - [%d]\n", 20 + (n * 13), top[n]->total, top[n]->name, @@ -1037,7 +1064,7 @@ static void svg_top_ten_pss(void) svg("Top PSS consumers:\n"); for (n = 0; n < 10; n++) - svg("%dK - %s[%d]\n", + svg("%dK - [%d]\n", 20 + (n * 13), top[n]->pss_max, top[n]->name, -- cgit v1.2.1 From b9a496c166c35f670b1f0fce8745bc5df5ea74ad Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 7 Mar 2013 08:52:55 +0100 Subject: bootchart: rename global len to samples_len --- src/bootchart/bootchart.c | 32 ++++++++++++++++---------------- src/bootchart/bootchart.h | 2 +- src/bootchart/log.c | 2 +- src/bootchart/svg.c | 4 ++-- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 543037dae1..e7c0b4942b 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -79,7 +79,7 @@ bool filter = true; bool show_cmdline = false; bool pss = false; int samples; -int len = 500; /* we record len+1 (1 start sample) */ +int samples_len = 500; /* we record len+1 (1 start sample) */ double hz = 25.0; /* 20 seconds log time */ double scale_x = 100.0; /* 100px = 1sec */ double scale_y = 20.0; /* 16px = 1 process bar */ @@ -112,16 +112,16 @@ int main(int argc, char *argv[]) char *init = NULL, *output = NULL; const ConfigTableItem items[] = { - { "Bootchart", "Samples", config_parse_int, 0, &len }, - { "Bootchart", "Frequency", config_parse_double, 0, &hz }, - { "Bootchart", "Relative", config_parse_bool, 0, &relative }, - { "Bootchart", "Filter", config_parse_bool, 0, &filter }, - { "Bootchart", "Output", config_parse_path, 0, &output }, - { "Bootchart", "Init", config_parse_path, 0, &init }, - { "Bootchart", "PlotMemoryUsage", config_parse_bool, 0, &pss }, - { "Bootchart", "PlotEntropyGraph", config_parse_bool, 0, &entropy }, - { "Bootchart", "ScaleX", config_parse_double, 0, &scale_x }, - { "Bootchart", "ScaleY", config_parse_double, 0, &scale_y }, + { "Bootchart", "Samples", config_parse_int, 0, &samples_len }, + { "Bootchart", "Frequency", config_parse_double, 0, &hz }, + { "Bootchart", "Relative", config_parse_bool, 0, &relative }, + { "Bootchart", "Filter", config_parse_bool, 0, &filter }, + { "Bootchart", "Output", config_parse_path, 0, &output }, + { "Bootchart", "Init", config_parse_path, 0, &init }, + { "Bootchart", "PlotMemoryUsage", config_parse_bool, 0, &pss }, + { "Bootchart", "PlotEntropyGraph", config_parse_bool, 0, &entropy }, + { "Bootchart", "ScaleX", config_parse_double, 0, &scale_x }, + { "Bootchart", "ScaleY", config_parse_double, 0, &scale_y }, { NULL, NULL, NULL, 0, NULL } }; @@ -181,7 +181,7 @@ int main(int argc, char *argv[]) show_cmdline = true; break; case 'n': - r = safe_atoi(optarg, &len); + r = safe_atoi(optarg, &samples_len); if (r < 0) log_warning("failed to parse --samples/-n argument '%s': %s", optarg, strerror(-r)); @@ -216,7 +216,7 @@ int main(int argc, char *argv[]) fprintf(stderr, "Usage: %s [OPTIONS]\n", argv[0]); fprintf(stderr, " --rel, -r Record time relative to recording\n"); fprintf(stderr, " --freq, -f f Sample frequency [%f]\n", hz); - fprintf(stderr, " --samples, -n N Stop sampling at [%d] samples\n", len); + fprintf(stderr, " --samples, -n N Stop sampling at [%d] samples\n", samples_len); fprintf(stderr, " --scale-x, -x N Scale the graph horizontally [%f] \n", scale_x); fprintf(stderr, " --scale-y, -y N Scale the graph vertically [%f] \n", scale_y); fprintf(stderr, " --pss, -p Enable PSS graph (CPU intensive)\n"); @@ -234,7 +234,7 @@ int main(int argc, char *argv[]) } } - if (len > MAXSAMPLES) { + if (samples_len > MAXSAMPLES) { fprintf(stderr, "Error: samples exceeds maximum\n"); exit(EXIT_FAILURE); } @@ -339,12 +339,12 @@ int main(int argc, char *argv[]) } else { overrun++; /* calculate how many samples we lost and scrap them */ - len = len + ((int)(newint_ns / interval)); + samples_len = samples_len + ((int)(newint_ns / interval)); } samples++; - if (samples > len) + if (samples > samples_len) break; } diff --git a/src/bootchart/bootchart.h b/src/bootchart/bootchart.h index c42f97140a..0fe4d2f4da 100644 --- a/src/bootchart/bootchart.h +++ b/src/bootchart/bootchart.h @@ -107,7 +107,7 @@ extern bool entropy; extern bool initcall; extern int samples; extern int cpus; -extern int len; +extern int samples_len; extern double hz; extern double scale_x; extern double scale_y; diff --git a/src/bootchart/log.c b/src/bootchart/log.c index 1e3f4a9e8c..43999f23cf 100644 --- a/src/bootchart/log.c +++ b/src/bootchart/log.c @@ -264,7 +264,7 @@ schedstat_next: ps = ps->next_ps; ps->pid = pid; - ps->sample = calloc(len + 1, sizeof(struct ps_sched_struct)); + ps->sample = calloc(samples_len + 1, sizeof(struct ps_sched_struct)); if (!ps->sample) { perror("calloc(ps_struct)"); exit (EXIT_FAILURE); diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index 4c78abda63..9fee810795 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -103,7 +103,7 @@ static void svg_header(void) svg("\n\n"); svg("\n", VERSION); - svg("\n", hz, len); + svg("\n", hz, samples_len); svg("\n", scale_x, scale_y); svg("\n", relative, filter); svg("\n", pss, entropy); @@ -222,7 +222,7 @@ static void svg_title(const char *build) svg("Not detected"); svg("\n"); svg("Graph data: %.03f samples/sec, recorded %i total, dropped %i samples, %i processes, %i filtered\n", - hz, len, overrun, pscount, pfiltered); + hz, samples_len, overrun, pscount, pfiltered); } -- cgit v1.2.1 From 57dbefdf3878cf3408f62beb69f4b87b5dc65df2 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 7 Mar 2013 08:52:56 +0100 Subject: bootchart: use _cleanup_fclose_ --- src/bootchart/log.c | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/src/bootchart/log.c b/src/bootchart/log.c index 43999f23cf..ccec03f12c 100644 --- a/src/bootchart/log.c +++ b/src/bootchart/log.c @@ -57,7 +57,7 @@ double gettime_ns(void) void log_uptime(void) { - FILE *f; + FILE _cleanup_fclose_ *f = NULL; char str[32]; double uptime; @@ -65,11 +65,9 @@ void log_uptime(void) if (!f) return; - if (!fscanf(f, "%s %*s", str)) { - fclose(f); + if (!fscanf(f, "%s %*s", str)) return; - } - fclose(f); + uptime = strtod(str, NULL); log_start = gettime_ns(); @@ -120,7 +118,6 @@ void log_sample(int sample) { static int vmstat; static int schedstat; - FILE *st; char buf[4095]; char key[256]; char val[256]; @@ -253,6 +250,7 @@ schedstat_next: /* end of our LL? then append a new record */ if (ps->pid != pid) { + FILE _cleanup_fclose_ *st = NULL; char t[32]; struct ps_struct *parent; @@ -320,10 +318,8 @@ schedstat_next: if (!st) continue; if (!fscanf(st, "%*s %*s %*s %i", &p)) { - fclose(st); continue; } - fclose(st); ps->ppid = p; /* -- cgit v1.2.1 From 78da2cd926937935741ce86bd53c8b546cca6f7a Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 7 Mar 2013 16:19:38 +0100 Subject: bootchart: document -C, --cmdline parameter --- man/systemd-bootchart.xml | 8 ++++++++ src/bootchart/bootchart.c | 2 ++ 2 files changed, 10 insertions(+) diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml index 9067d6530c..f3c967006a 100644 --- a/man/systemd-bootchart.xml +++ b/man/systemd-bootchart.xml @@ -182,6 +182,14 @@ + + + + Display the full command line with arguments of processes, + instead of only the process name. + + + diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index e7c0b4942b..65f16c517c 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -225,6 +225,8 @@ int main(int argc, char *argv[]) fprintf(stderr, " --init, -i [PATH] Path to init executable [%s]\n", init_path); fprintf(stderr, " --no-filter, -F Disable filtering of processes from the graph\n"); fprintf(stderr, " that are of less importance or short-lived\n"); + fprintf(stderr, " --cmdline, -C Display the full command line with arguments\n"); + fprintf(stderr, " of processes, instead of only the process name\n"); fprintf(stderr, " --help, -h Display this message\n"); fprintf(stderr, "See bootchart.conf for more information.\n"); exit (EXIT_SUCCESS); -- cgit v1.2.1 From dec49d88d6a4febc8be0a4470183d9794b3b02b8 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Thu, 7 Mar 2013 16:09:20 +0100 Subject: systemctl: mangle unit name in is-enabled https://bugs.freedesktop.org/show_bug.cgi?id=56072 https://bugzilla.redhat.com/show_bug.cgi?id=880353 --- src/systemctl/systemctl.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 99286cfc75..72e9c5539b 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -3982,6 +3982,7 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { DBusMessage _cleanup_dbus_message_unref_ *reply = NULL; bool enabled; char **name; + char *n; dbus_error_init(&error); @@ -3996,7 +3997,14 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { STRV_FOREACH(name, args+1) { UnitFileState state; - state = unit_file_get_state(arg_scope, arg_root, *name); + n = unit_name_mangle(*name); + if (!n) + return log_oom(); + + state = unit_file_get_state(arg_scope, arg_root, n); + + free(n); + if (state < 0) return state; @@ -4013,6 +4021,10 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { STRV_FOREACH(name, args+1) { const char *s; + n = unit_name_mangle(*name); + if (!n) + return log_oom(); + r = bus_method_call_with_reply ( bus, "org.freedesktop.systemd1", @@ -4021,8 +4033,11 @@ static int unit_is_enabled(DBusConnection *bus, char **args) { "GetUnitFileState", &reply, NULL, - DBUS_TYPE_STRING, name, + DBUS_TYPE_STRING, &n, DBUS_TYPE_INVALID); + + free(n); + if (r) return r; -- cgit v1.2.1 From c30a0c62fdbf6f11902be9db64ade99fb508adfd Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 16:48:14 +0100 Subject: logind: don't hit an assert if an close() on an input device fd fails with ENODEV because the device is gone https://bugzilla.redhat.com/show_bug.cgi?id=907890 --- src/login/logind-button.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/login/logind-button.c b/src/login/logind-button.c index cbb067aa55..ea45c28eef 100644 --- a/src/login/logind-button.c +++ b/src/login/logind-button.c @@ -71,7 +71,11 @@ void button_free(Button *b) { if (b->fd >= 0) { hashmap_remove(b->manager->button_fds, INT_TO_PTR(b->fd + 1)); assert_se(epoll_ctl(b->manager->epoll_fd, EPOLL_CTL_DEL, b->fd, NULL) == 0); - close_nointr_nofail(b->fd); + + /* If the device has been unplugged close() returns + * ENODEV, let's ignore this, hence we don't use + * close_nointr_nofail() */ + close(b->fd); } free(b->name); @@ -103,7 +107,7 @@ int button_open(Button *b) { assert(b); if (b->fd >= 0) { - close_nointr_nofail(b->fd); + close(b->fd); b->fd = -1; } @@ -146,7 +150,7 @@ int button_open(Button *b) { return 0; fail: - close_nointr_nofail(b->fd); + close(b->fd); b->fd = -1; return r; } -- cgit v1.2.1 From 17edd81a9d1265952c662d5f49c70895d0ab17d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Mar 2013 10:15:20 -0500 Subject: build-sys: force creation of symlink For some reason make sometimes wants to rerun this, and ln would refuse to recreate the link. --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 7b1bac5e50..7e408798a6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -522,7 +522,7 @@ CLEANFILES += \ man/index.html man/index.html: - $(AM_V_GEN)$(LN_S) systemd.index.html $@ + $(AM_V_GEN)$(LN_S) -f systemd.index.html $@ NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES)) -- cgit v1.2.1 From 0eff0f3bce1d0826765f6e84ff046b10fe5a1a12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Mar 2013 11:28:44 -0500 Subject: systemd-python: refuse path and flags together in __init__ It's better to explictly check, instead of just documenting it. The return value from init is changed from 1 to -1 on error. Python seems to ignore 1 every second time. Looks like a bug in Python, but the return value doesn't seem to be documented anywhere, and -1 works as expected... so let's just use that. --- src/python-systemd/_reader.c | 23 ++++++++++++++++------- src/python-systemd/journal.py | 5 ++--- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index c435dadecf..42029abd46 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -64,7 +64,7 @@ static int set_error(int r, const char* path, const char* invalid_message) { errno = -r; PyErr_SetFromErrnoWithFilename(PyExc_OSError, path); } - return 1; + return -1; } #if PY_MAJOR_VERSION >= 3 @@ -94,25 +94,34 @@ static void Reader_dealloc(Reader* self) } PyDoc_STRVAR(Reader__doc__, - "Reader([flags][,path]) -> ...\n\n" + "Reader([flags | path]) -> ...\n\n" "Reader allows filtering and retrieval of Journal entries.\n" + "Note: this is a low-level interface, and probably not what you\n" + "want, use systemd.journal.Reader instead.\n\n" "Argument `flags` sets open flags of the journal, which can be one\n" "of, or ORed combination of constants: LOCAL_ONLY (default) opens\n" "journal on local machine only; RUNTIME_ONLY opens only\n" "volatile journal files; and SYSTEM_ONLY opens only\n" - "journal files of system services and the kernel.\n" + "journal files of system services and the kernel.\n\n" "Argument `path` is the directory of journal files. Note that\n" - "currently flags are ignored when `path` is present as they are\n" - "not relevant."); + "`flags` and `path` are exclusive.\n"); static int Reader_init(Reader *self, PyObject *args, PyObject *keywds) { - int flags = SD_JOURNAL_LOCAL_ONLY, r; + int flags = 0, r; char *path = NULL; static const char* const kwlist[] = {"flags", "path", NULL}; if (!PyArg_ParseTupleAndKeywords(args, keywds, "|iz", (char**) kwlist, &flags, &path)) - return 1; + return -1; + + if (!flags) + flags = SD_JOURNAL_LOCAL_ONLY; + else + if (path) { + PyErr_SetString(PyExc_ValueError, "cannot use both flags and path"); + return -1; + } Py_BEGIN_ALLOW_THREADS if (path) diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index e9c09e8747..1ed726c33a 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -114,7 +114,7 @@ class Reader(_Reader): See systemd.journal-fields(7) for more info on typical fields found in the journal. """ - def __init__(self, flags=LOCAL_ONLY, path=None, converters=None): + def __init__(self, flags=0, path=None, converters=None): """Create an instance of Reader, which allows filtering and return of journal entries. @@ -125,8 +125,7 @@ class Reader(_Reader): journal files of system services and the kernel. Argument `path` is the directory of journal files. Note that - currently flags are ignored when `path` is present as they are - currently not relevant. + `flags` and `path` are exclusive. Argument `converters` is a dictionary which updates the DEFAULT_CONVERTERS to convert journal field values. Field -- cgit v1.2.1 From 614e5fbb8ba192526990a840eef382d0ee94b22d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Mar 2013 11:29:01 -0500 Subject: systemd-python: update documentation for new systemd-journal group --- src/python-systemd/journal.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 1ed726c33a..146f59f220 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -99,7 +99,7 @@ DEFAULT_CONVERTERS = { class Reader(_Reader): """Reader allows the access and filtering of systemd journal entries. Note that in order to access the system journal, a - non-root user must be in the `adm` group. + non-root user must be in the `systemd-journal` group. Example usage to print out all informational or higher level messages for systemd-udevd for this boot: -- cgit v1.2.1 From dd7c30c36a8235652e7c1ad8e6082f32ff6de2f9 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 18:39:06 +0100 Subject: core: don't complain about systemd.journald.xxx kernel command line arguments in PID 1 https://bugzilla.redhat.com/show_bug.cgi?id=880025 --- src/core/main.c | 51 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 20 deletions(-) diff --git a/src/core/main.c b/src/core/main.c index 2bbea7ec2f..1c2453c9b1 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -375,26 +375,37 @@ static int parse_proc_cmdline_word(const char *word) { } else if (startswith(word, "systemd.") || (in_initrd() && startswith(word, "rd.systemd."))) { - log_warning("Unknown kernel switch %s. Ignoring.", word); - - log_info("Supported kernel switches:\n" - "systemd.unit=UNIT Default unit to start\n" - "rd.systemd.unit=UNIT Default unit to start when run in initrd\n" - "systemd.dump_core=0|1 Dump core on crash\n" - "systemd.crash_shell=0|1 Run shell on crash\n" - "systemd.crash_chvt=N Change to VT #N on crash\n" - "systemd.confirm_spawn=0|1 Confirm every process spawn\n" - "systemd.show_status=0|1 Show status updates on the console during bootup\n" - "systemd.log_target=console|kmsg|journal|journal-or-kmsg|syslog|syslog-or-kmsg|null\n" - " Log target\n" - "systemd.log_level=LEVEL Log level\n" - "systemd.log_color=0|1 Highlight important log messages\n" - "systemd.log_location=0|1 Include code location in log messages\n" - "systemd.default_standard_output=null|tty|syslog|syslog+console|kmsg|kmsg+console|journal|journal+console\n" - " Set default log output for services\n" - "systemd.default_standard_error=null|tty|syslog|syslog+console|kmsg|kmsg+console|journal|journal+console\n" - " Set default log error output for services\n" - "systemd.setenv=ASSIGNMENT Set an environment variable for all spawned processes\n"); + const char *c; + + /* Ignore systemd.journald.xyz and friends */ + c = word; + if (startswith(c, "rd.")) + c += 3; + if (startswith(c, "systemd.")) + c += 8; + if (c[strcspn(c, ".=")] != '.') { + + log_warning("Unknown kernel switch %s. Ignoring.", word); + + log_info("Supported kernel switches:\n" + "systemd.unit=UNIT Default unit to start\n" + "rd.systemd.unit=UNIT Default unit to start when run in initrd\n" + "systemd.dump_core=0|1 Dump core on crash\n" + "systemd.crash_shell=0|1 Run shell on crash\n" + "systemd.crash_chvt=N Change to VT #N on crash\n" + "systemd.confirm_spawn=0|1 Confirm every process spawn\n" + "systemd.show_status=0|1 Show status updates on the console during bootup\n" + "systemd.log_target=console|kmsg|journal|journal-or-kmsg|syslog|syslog-or-kmsg|null\n" + " Log target\n" + "systemd.log_level=LEVEL Log level\n" + "systemd.log_color=0|1 Highlight important log messages\n" + "systemd.log_location=0|1 Include code location in log messages\n" + "systemd.default_standard_output=null|tty|syslog|syslog+console|kmsg|kmsg+console|journal|journal+console\n" + " Set default log output for services\n" + "systemd.default_standard_error=null|tty|syslog|syslog+console|kmsg|kmsg+console|journal|journal+console\n" + " Set default log error output for services\n" + "systemd.setenv=ASSIGNMENT Set an environment variable for all spawned processes\n"); + } } else if (streq(word, "quiet")) arg_show_status = false; -- cgit v1.2.1 From 7ba9719595ee13612c9aea786233ffdd4d77ee46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Mar 2013 12:41:22 -0500 Subject: TODO: python stuff and freeze and standby --- TODO | 12 ++++++++++++ man/sd_journal_get_catalog.xml | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index 42c5361713..f4c0dd5fb6 100644 --- a/TODO +++ b/TODO @@ -220,6 +220,9 @@ Features: - systemctl: "Journal has been rotated since unit was started." message is misleading - support "systemctl stop foobar@.service" to stop all units matching a certain template - Something is wrong with symlink handling of "autovt@.service" in "systemctl list-unit-files" + - add configuration/switches to use + freeze (http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git) and + standby (https://bugs.freedesktop.org/show_bug.cgi?id=57793) as suspend modes * When shutdown.target is queued begin with an asynchronous sync()? @@ -559,6 +562,15 @@ Features: * drop cap bounding set in readahead and other services +* systemd-python: + - export sd_journal_get_catalog (in systemd.journal._reader) + - export sd_journal_get_catalog_for_message_id (in systemd.id128) + - allow reading of only select fields in systemd.journal._reader.Reader + - export sd_journal_test_cursor in systemd.journal._reader.Reader + - export sd_journal_get_usage in systemd.journal._reader.Reader + - figure out a simple way to wait for journal events in a way that + works with ^C + External: * dbus: diff --git a/man/sd_journal_get_catalog.xml b/man/sd_journal_get_catalog.xml index fa9bbc9b2d..b3c7b58b07 100644 --- a/man/sd_journal_get_catalog.xml +++ b/man/sd_journal_get_catalog.xml @@ -103,7 +103,7 @@ sd_journal_get_catalog() and sd_journal_get_catalog_for_message_id() - returns 0 on success or a negative errno-style error + return 0 on success or a negative errno-style error code. If no matching message catalog entry is found -ENOENT is returned. -- cgit v1.2.1 From 3c1872ebb6e9a435f61c3df0399a353ae28fb472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Mar 2013 13:04:17 -0500 Subject: build-sys: check if manpage ids match file names Commit ed1553a fixed current errors, but this error is easy to make. A wrong id messes up the indexes and linking, so it is better to catch this automatically. --- make-man-index.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/make-man-index.py b/make-man-index.py index f829d98b6a..d38d5b63f6 100755 --- a/make-man-index.py +++ b/make-man-index.py @@ -21,6 +21,7 @@ import collections import xml.etree.ElementTree as tree import sys +import re MDASH = ' — ' if sys.version_info.major >= 3 else ' -- ' TEMPLATE = '''\ @@ -66,10 +67,16 @@ SUMMARY = '''\ COUNTS = '\ This index contains {count} entries, referring to {pages} individual manual pages.' +def check_id(page, t): + id = t.getroot().get('id') + if not re.search('/' + id + '[.]', page): + raise ValueError("id='{}' is not the same as page name '{}'".format(id, page)) + def make_index(pages): index = collections.defaultdict(list) for p in pages: t = tree.parse(p) + check_id(p, t) section = t.find('./refmeta/manvolnum').text refname = t.find('./refnamediv/refname').text purpose = ' '.join(t.find('./refnamediv/refpurpose').text.split()) -- cgit v1.2.1 From 46797983bec2b56411441a3496ad00be2638cf24 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 7 Mar 2013 19:42:51 +0100 Subject: hwdb: update --- hwdb/20-OUI.hwdb | 544 ++++++++++++++- hwdb/20-pci-vendor-product.hwdb | 1415 +++++++++++++++++++++++++-------------- 2 files changed, 1425 insertions(+), 534 deletions(-) diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb index cd3b4327ec..a5689b82bb 100644 --- a/hwdb/20-OUI.hwdb +++ b/hwdb/20-OUI.hwdb @@ -173,7 +173,7 @@ OUI:0050C2037* ID_OUI_FROM_DATABASE=E.I.S.M. OUI:0050C2038* - ID_OUI_FROM_DATABASE=Ardmona Foods Limites + ID_OUI_FROM_DATABASE=Etheira Technologies OUI:0050C2039* ID_OUI_FROM_DATABASE=Apex Signal Corp @@ -3884,7 +3884,7 @@ OUI:0050C2518* ID_OUI_FROM_DATABASE=Christ Elektronik GmbH OUI:0050C2519* - ID_OUI_FROM_DATABASE=DBM, LLC + ID_OUI_FROM_DATABASE=DBMCORP, Inc. OUI:0050C251A* ID_OUI_FROM_DATABASE=SpeasTech, Inc. @@ -4094,7 +4094,7 @@ OUI:0050C255E* ID_OUI_FROM_DATABASE=HANZAS ELEKTRONIKA, SIA OUI:0050C255F* - ID_OUI_FROM_DATABASE=Broad Reach Engineering + ID_OUI_FROM_DATABASE=Moog Broad Reach OUI:0050C2560* ID_OUI_FROM_DATABASE=Procon Electronics @@ -4844,7 +4844,7 @@ OUI:0050C2658* ID_OUI_FROM_DATABASE=OpenPKG GmbH OUI:0050C2659* - ID_OUI_FROM_DATABASE=Dorsett's, Incorporated + ID_OUI_FROM_DATABASE=Dorsett Technologies, Inc. OUI:0050C265A* ID_OUI_FROM_DATABASE=Hisstema AB @@ -5501,7 +5501,7 @@ OUI:0050C2734* ID_OUI_FROM_DATABASE=CardioMEMS Inc. OUI:0050C2735* - ID_OUI_FROM_DATABASE=Duma Video, Inc. + ID_OUI_FROM_DATABASE=Ant Lamp, Inc OUI:0050C2736* ID_OUI_FROM_DATABASE=Nika Ltd @@ -6605,7 +6605,7 @@ OUI:0050C28A6* ID_OUI_FROM_DATABASE=SELCO OUI:0050C28A7* - ID_OUI_FROM_DATABASE=EBPW LTD + ID_OUI_FROM_DATABASE=PIXEYE LTD OUI:0050C28A8* ID_OUI_FROM_DATABASE=ALTEK ELECTRONICS @@ -8510,7 +8510,7 @@ OUI:0050C2B22* ID_OUI_FROM_DATABASE=FarSite Communications Limited OUI:0050C2B23* - ID_OUI_FROM_DATABASE=7 Marsyas Development a.s. + ID_OUI_FROM_DATABASE=Ronyo Technologies s.r.o. OUI:0050C2B24* ID_OUI_FROM_DATABASE=Teledyne Defence Limited @@ -10574,7 +10574,7 @@ OUI:0050C2DDD* ID_OUI_FROM_DATABASE=A&A GENERAL SRL OUI:0050C2DDE* - ID_OUI_FROM_DATABASE=DRS RSTA + ID_OUI_FROM_DATABASE=DRS ITS OUI:0050C2DDF* ID_OUI_FROM_DATABASE=Device GmbH @@ -12652,6 +12652,90 @@ OUI:40D855097* OUI:40D855098* ID_OUI_FROM_DATABASE=Dave Srl +OUI:40D855099* + ID_OUI_FROM_DATABASE=idcell co.ltd + +OUI:40D85509A* + ID_OUI_FROM_DATABASE=CoherentPlus Sdn Bhd + +OUI:40D85509B* + ID_OUI_FROM_DATABASE=Tokyo Denki Gijutsu Kogyo + +OUI:40D85509C* + ID_OUI_FROM_DATABASE=Keyware Solutions Inc. + +OUI:40D85509D* + ID_OUI_FROM_DATABASE=EMAC, Inc. + +OUI:40D85509E* + ID_OUI_FROM_DATABASE=NanoPulse, Inc. + +OUI:40D85509F* + ID_OUI_FROM_DATABASE=Bascules Robbe nv + +OUI:40D8550A0* + ID_OUI_FROM_DATABASE=Quantronix, Inc. + +OUI:40D8550A1* + ID_OUI_FROM_DATABASE=ADVALY SYSTEM Inc. + +OUI:40D8550A2* + ID_OUI_FROM_DATABASE=Xemex NV + +OUI:40D8550A3* + ID_OUI_FROM_DATABASE=Telefrank GmbH + +OUI:40D8550A4* + ID_OUI_FROM_DATABASE=Resch Electronic Innovation GmbH + +OUI:40D8550A5* + ID_OUI_FROM_DATABASE=WooshCom Corporation + +OUI:40D8550A6* + ID_OUI_FROM_DATABASE=Alumbra Produtos Elétricos e Eletrônicos Ltda + +OUI:40D8550A7* + ID_OUI_FROM_DATABASE=First Design System Inc. + +OUI:40D8550A8* + ID_OUI_FROM_DATABASE=Baudisch Electronic GmbH + +OUI:40D8550A9* + ID_OUI_FROM_DATABASE=Apantac LLC + +OUI:40D8550AA* + ID_OUI_FROM_DATABASE=Thermal Imaging Radar, LLC + +OUI:40D8550AB* + ID_OUI_FROM_DATABASE=Enel doo Belgrade + +OUI:40D8550AC* + ID_OUI_FROM_DATABASE=Fraunhofer HHI + +OUI:40D8550AD* + ID_OUI_FROM_DATABASE=Space Micro + +OUI:40D8550AE* + ID_OUI_FROM_DATABASE=GENERAL DYNAMICS C4 SYSTEMS + +OUI:40D8550AF* + ID_OUI_FROM_DATABASE=EnVerv Inc. + +OUI:40D8550B0* + ID_OUI_FROM_DATABASE=Micrologic + +OUI:40D8550B1* + ID_OUI_FROM_DATABASE=Nanjing TIANSU Automation Control System Co., Ltd. + +OUI:40D8550B2* + ID_OUI_FROM_DATABASE=Ever Trend Technology Development Limited + +OUI:40D8550B3* + ID_OUI_FROM_DATABASE=T.W.S. srl + +OUI:40D8550B4* + ID_OUI_FROM_DATABASE=MITSUBIDHI ELECTRIC SYSTEM & SERVICE CO.,LTD. + OUI:000000* ID_OUI_FROM_DATABASE=XEROX CORPORATION @@ -22793,7 +22877,7 @@ OUI:000D55* ID_OUI_FROM_DATABASE=SANYCOM Technology Co.,Ltd OUI:000D56* - ID_OUI_FROM_DATABASE=Dell PCBA Test + ID_OUI_FROM_DATABASE=Dell ESG PCBA Test OUI:000D57* ID_OUI_FROM_DATABASE=Fujitsu I-Network Systems Limited. @@ -24137,7 +24221,7 @@ OUI:000F1E* ID_OUI_FROM_DATABASE=Chengdu KT Electric Co.of High & New Technology OUI:000F1F* - ID_OUI_FROM_DATABASE=WW PCBA Test + ID_OUI_FROM_DATABASE=Dell ESG PCBA Test OUI:000F20* ID_OUI_FROM_DATABASE=Hewlett-Packard Company @@ -25778,7 +25862,7 @@ OUI:001142* ID_OUI_FROM_DATABASE=e-SMARTCOM INC. OUI:001143* - ID_OUI_FROM_DATABASE=DELL INC. + ID_OUI_FROM_DATABASE=Dell ESG PCBA Test OUI:001144* ID_OUI_FROM_DATABASE=Assurance Technology Corp @@ -26534,7 +26618,7 @@ OUI:00123E* ID_OUI_FROM_DATABASE=ERUNE technology Co., Ltd. OUI:00123F* - ID_OUI_FROM_DATABASE=Dell Inc + ID_OUI_FROM_DATABASE=Dell ESG PCBA Test OUI:001240* ID_OUI_FROM_DATABASE=AMOI ELECTRONICS CO.,LTD @@ -27455,7 +27539,7 @@ OUI:001371* ID_OUI_FROM_DATABASE=Motorola Mobility, Inc. OUI:001372* - ID_OUI_FROM_DATABASE=Dell Inc. + ID_OUI_FROM_DATABASE=Dell ESG PCBA Test OUI:001373* ID_OUI_FROM_DATABASE=BLwave Electronics Co., Ltd @@ -27983,7 +28067,7 @@ OUI:001421* ID_OUI_FROM_DATABASE=Total Wireless Technologies Pte. Ltd. OUI:001422* - ID_OUI_FROM_DATABASE=Dell Inc. + ID_OUI_FROM_DATABASE=Dell ESG PCBA Test OUI:001423* ID_OUI_FROM_DATABASE=J-S Co. NEUROCOM @@ -29240,7 +29324,7 @@ OUI:0015C4* ID_OUI_FROM_DATABASE=FLOVEL CO., LTD. OUI:0015C5* - ID_OUI_FROM_DATABASE=Dell Inc + ID_OUI_FROM_DATABASE=Dell ESG PCBA Test OUI:0015C6* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -30155,7 +30239,7 @@ OUI:0016F6* ID_OUI_FROM_DATABASE=Video Products Group OUI:0016F7* - ID_OUI_FROM_DATABASE=L-3 Communications, Electrodynamics, Inc. + ID_OUI_FROM_DATABASE=L-3 Communications, Aviation Recorders OUI:0016F8* ID_OUI_FROM_DATABASE=AVIQTECH TECHNOLOGY CO., LTD. @@ -31361,7 +31445,7 @@ OUI:00188A* ID_OUI_FROM_DATABASE=Infinova LLC OUI:00188B* - ID_OUI_FROM_DATABASE=Dell + ID_OUI_FROM_DATABASE=Dell ESG PCBA Test OUI:00188C* ID_OUI_FROM_DATABASE=Mobile Action Technology Inc. @@ -31739,7 +31823,7 @@ OUI:001908* ID_OUI_FROM_DATABASE=Duaxes Corporation OUI:001909* - ID_OUI_FROM_DATABASE=Devi A/S + ID_OUI_FROM_DATABASE=DEVI - Danfoss A/S OUI:00190A* ID_OUI_FROM_DATABASE=HASWARE INC. @@ -31871,7 +31955,7 @@ OUI:001934* ID_OUI_FROM_DATABASE=TRENDON TOUCH TECHNOLOGY CORP. OUI:001935* - ID_OUI_FROM_DATABASE=Duerr Dental GmbH & Co. KG + ID_OUI_FROM_DATABASE=DÜRR DENTAL AG OUI:001936* ID_OUI_FROM_DATABASE=STERLITE OPTICAL TECHNOLOGIES LIMITED @@ -39839,7 +39923,7 @@ OUI:002399* ID_OUI_FROM_DATABASE=VD Division, Samsung Electronics Co. OUI:00239A* - ID_OUI_FROM_DATABASE=EasyData Software GmbH + ID_OUI_FROM_DATABASE=EasyData Hardware GmbH OUI:00239B* ID_OUI_FROM_DATABASE=Elster Solutions, LLC @@ -41513,7 +41597,7 @@ OUI:0025D0* ID_OUI_FROM_DATABASE=Nokia Danmark A/S OUI:0025D1* - ID_OUI_FROM_DATABASE=Eastech Electronics (Taiwan) Inc. + ID_OUI_FROM_DATABASE=Eastern Asia Technology Limited OUI:0025D2* ID_OUI_FROM_DATABASE=InpegVision Co., Ltd @@ -44839,6 +44923,9 @@ OUI:005218* OUI:0054AF* ID_OUI_FROM_DATABASE=Continental Automotive Systems Inc. +OUI:005907* + ID_OUI_FROM_DATABASE=LenovoEMC Products USA, LLC + OUI:005CB1* ID_OUI_FROM_DATABASE=Gospell DIGITAL TECHNOLOGY CO., LTD @@ -51334,6 +51421,9 @@ OUI:081FF3* OUI:082522* ID_OUI_FROM_DATABASE=ADVANSEE +OUI:082719* + ID_OUI_FROM_DATABASE=APS systems/electronic AG + OUI:082AD0* ID_OUI_FROM_DATABASE=SRD Innovations Inc. @@ -51454,6 +51544,9 @@ OUI:08BBCC* OUI:08BE09* ID_OUI_FROM_DATABASE=Astrol Electronic AG +OUI:08CC68* + ID_OUI_FROM_DATABASE=Cisco + OUI:08D09F* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -51505,6 +51598,12 @@ OUI:08FC52* OUI:08FC88* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd +OUI:0C0400* + ID_OUI_FROM_DATABASE=Jantar d.o.o. + +OUI:0C1105* + ID_OUI_FROM_DATABASE=Ringslink (Xiamen) Network Communication Technologies Co., Ltd + OUI:0C130B* ID_OUI_FROM_DATABASE=Uniqoteq Ltd. @@ -51529,6 +51628,9 @@ OUI:0C2755* OUI:0C2A69* ID_OUI_FROM_DATABASE=electric imp, incorporated +OUI:0C2AE7* + ID_OUI_FROM_DATABASE=Beijing General Research Institute of Mining and Metallurgy + OUI:0C37DC* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd @@ -51595,6 +51697,9 @@ OUI:0C826A* OUI:0C8411* ID_OUI_FROM_DATABASE=A.O. Smith Water Products +OUI:0C8484* + ID_OUI_FROM_DATABASE=Zenovia Electronics Inc. + OUI:0C8525* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -51730,6 +51835,9 @@ OUI:0CF361* OUI:0CF3EE* ID_OUI_FROM_DATABASE=EM Microelectronic +OUI:0CF405* + ID_OUI_FROM_DATABASE=Beijing Signalway Technologies Co.,Ltd + OUI:0CF893* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. @@ -51880,6 +51988,9 @@ OUI:1071F9* OUI:10768A* ID_OUI_FROM_DATABASE=EoCell +OUI:1077B1* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD + OUI:1078D2* ID_OUI_FROM_DATABASE=ELITEGROUP COMPUTER SYSTEM CO., LTD. @@ -51949,6 +52060,9 @@ OUI:10CCDB* OUI:10D1DC* ID_OUI_FROM_DATABASE=INSTAR Deutschland GmbH +OUI:10D542* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:10DDB1* ID_OUI_FROM_DATABASE=Apple @@ -52006,6 +52120,9 @@ OUI:140C76* OUI:14109F* ID_OUI_FROM_DATABASE=Apple Inc +OUI:141330* + ID_OUI_FROM_DATABASE=Anakreon UK LLP + OUI:14144B* ID_OUI_FROM_DATABASE=FUJIAN STAR-NET COMMUNICATION CO.,LTD @@ -52045,6 +52162,9 @@ OUI:143AEA* OUI:143E60* ID_OUI_FROM_DATABASE=Alcatel-Lucent +OUI:1441E2* + ID_OUI_FROM_DATABASE=Monaco Enterprises, Inc. + OUI:144319* ID_OUI_FROM_DATABASE=Creative&Link Technology Limited @@ -52084,6 +52204,9 @@ OUI:147DC5* OUI:14825B* ID_OUI_FROM_DATABASE=Hefei Radio Communication Technology Co., Ltd +OUI:148692* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + OUI:1489FD* ID_OUI_FROM_DATABASE=Samsung Electronics @@ -52168,6 +52291,9 @@ OUI:14FEB5* OUI:18002D* ID_OUI_FROM_DATABASE=Sony Mobile Communications AB +OUI:1800DB* + ID_OUI_FROM_DATABASE=Fitbit Inc. + OUI:1801E3* ID_OUI_FROM_DATABASE=Elektrobit Wireless Communications Ltd @@ -52219,6 +52345,9 @@ OUI:182B05* OUI:182C91* ID_OUI_FROM_DATABASE=Concept Development, Inc. +OUI:1832A2* + ID_OUI_FROM_DATABASE=LAON TECHNOLOGY CO., LTD. + OUI:18339D* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -52294,6 +52423,9 @@ OUI:1880CE* OUI:1880F5* ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd +OUI:188410* + ID_OUI_FROM_DATABASE=CoreTrust Inc. + OUI:18863A* ID_OUI_FROM_DATABASE=DIGITAL ART SYSTEM @@ -52504,6 +52636,9 @@ OUI:1C6F65* OUI:1C7508* ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD. +OUI:1C76CA* + ID_OUI_FROM_DATABASE=Terasic Technologies Inc. + OUI:1C7C11* ID_OUI_FROM_DATABASE=EID @@ -52594,6 +52729,9 @@ OUI:1CE192* OUI:1CE2CC* ID_OUI_FROM_DATABASE=Texas Instruments +OUI:1CE62B* + ID_OUI_FROM_DATABASE=Apple + OUI:1CE6C7* ID_OUI_FROM_DATABASE=Cisco @@ -52678,6 +52816,9 @@ OUI:2046F9* OUI:204AAA* ID_OUI_FROM_DATABASE=Hanscan Spain S.A. +OUI:204C6D* + ID_OUI_FROM_DATABASE=Hugo Brennenstuhl Gmbh & Co. KG. + OUI:204E6B* ID_OUI_FROM_DATABASE=Axxana(israel) ltd @@ -52837,6 +52978,9 @@ OUI:2401C7* OUI:240917* ID_OUI_FROM_DATABASE=Devlin Electronics Limited +OUI:240A64* + ID_OUI_FROM_DATABASE=AzureWaveTechnologies,Inc + OUI:240B2A* ID_OUI_FROM_DATABASE=Viettel Group @@ -53008,6 +53152,9 @@ OUI:24E6BA* OUI:24EA40* ID_OUI_FROM_DATABASE=Systeme Helmholz GmbH +OUI:24EB65* + ID_OUI_FROM_DATABASE=SAET I.S. S.r.l. + OUI:24EC99* ID_OUI_FROM_DATABASE=Askey Computer Corp @@ -53059,6 +53206,9 @@ OUI:2826A6* OUI:2829D9* ID_OUI_FROM_DATABASE=GlobalBeiMing technology (Beijing)Co. Ltd +OUI:282CB2* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + OUI:283152* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD @@ -53161,6 +53311,9 @@ OUI:28AF0A* OUI:28B0CC* ID_OUI_FROM_DATABASE=Xenya d.o.o. +OUI:28B2BD* + ID_OUI_FROM_DATABASE=Intel Corporate + OUI:28B3AB* ID_OUI_FROM_DATABASE=Genmark Automation @@ -53272,6 +53425,9 @@ OUI:2C1EEA* OUI:2C2172* ID_OUI_FROM_DATABASE=Juniper Networks +OUI:2C245F* + ID_OUI_FROM_DATABASE=Babolat VS + OUI:2C26C5* ID_OUI_FROM_DATABASE=zte corporation @@ -53341,6 +53497,9 @@ OUI:2C6289* OUI:2C67FB* ID_OUI_FROM_DATABASE=ShenZhen Zhengjili Electronics Co., LTD +OUI:2C69BA* + ID_OUI_FROM_DATABASE=RF Controls, LLC + OUI:2C6BF5* ID_OUI_FROM_DATABASE=Juniper networks @@ -53395,6 +53554,9 @@ OUI:2CB05D* OUI:2CB0DF* ID_OUI_FROM_DATABASE=Soliton Technologies Pvt Ltd +OUI:2CB43A* + ID_OUI_FROM_DATABASE=Apple + OUI:2CB693* ID_OUI_FROM_DATABASE=Radware @@ -53584,6 +53746,12 @@ OUI:3090AB* OUI:3092F6* ID_OUI_FROM_DATABASE=SHANGHAI SUNMON COMMUNICATION TECHNOGY CO.,LTD +OUI:30AABD* + ID_OUI_FROM_DATABASE=Shanghai Reallytek Information Technology Co.,Ltd + +OUI:30AE7B* + ID_OUI_FROM_DATABASE=Deqing Dusun Electron CO., LTD + OUI:30AEF6* ID_OUI_FROM_DATABASE=Radio Mobile Access @@ -53602,6 +53770,9 @@ OUI:30CDA7* OUI:30D357* ID_OUI_FROM_DATABASE=Logosol, Inc. +OUI:30D46A* + ID_OUI_FROM_DATABASE=Autosales Incorporated + OUI:30DE86* ID_OUI_FROM_DATABASE=Cedac Software S.r.l. @@ -53644,6 +53815,9 @@ OUI:34159E* OUI:342109* ID_OUI_FROM_DATABASE=Jensen Scandinavia AS +OUI:3423BA* + ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co.,LTD. + OUI:34255D* ID_OUI_FROM_DATABASE=Shenzhen Loadcom Technology Co.,Ltd @@ -53857,6 +54031,9 @@ OUI:380FE4* OUI:3816D1* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd +OUI:381766* + ID_OUI_FROM_DATABASE=PROMZAKAZ LTD. + OUI:38192F* ID_OUI_FROM_DATABASE=Nokia Corporation @@ -53893,6 +54070,9 @@ OUI:384608* OUI:38484C* ID_OUI_FROM_DATABASE=Apple +OUI:384FF0* + ID_OUI_FROM_DATABASE=Azurewave Technologies, Inc. + OUI:38521A* ID_OUI_FROM_DATABASE=Alcatel-Lucent 7705 @@ -53950,6 +54130,9 @@ OUI:38A5B6* OUI:38A851* ID_OUI_FROM_DATABASE=Quickset International Inc +OUI:38A86B* + ID_OUI_FROM_DATABASE=Orga BV + OUI:38A95F* ID_OUI_FROM_DATABASE=Actifio Inc @@ -53987,7 +54170,7 @@ OUI:38DE60* ID_OUI_FROM_DATABASE=Mohlenhoff GmbH OUI:38E08E* - ID_OUI_FROM_DATABASE=Mitsubishi Electric Co. + ID_OUI_FROM_DATABASE=Mitsubishi Electric Corporation OUI:38E595* ID_OUI_FROM_DATABASE=Shenzhen Gongjin Electronics Co.,Ltd @@ -54454,6 +54637,9 @@ OUI:40BF17* OUI:40C245* ID_OUI_FROM_DATABASE=Shenzhen Hexicom Technology Co., Ltd. +OUI:40C4D6* + ID_OUI_FROM_DATABASE=ChongQing Camyu Technology Development Co.,Ltd. + OUI:40C7C9* ID_OUI_FROM_DATABASE=Naviit Inc. @@ -54535,6 +54721,9 @@ OUI:442B03* OUI:44322A* ID_OUI_FROM_DATABASE=Avaya, Inc +OUI:4432C8* + ID_OUI_FROM_DATABASE=Technicolor USA Inc. + OUI:44334C* ID_OUI_FROM_DATABASE=Shenzhen Bilian electronic CO.,LTD @@ -54553,6 +54742,9 @@ OUI:4437E6* OUI:443839* ID_OUI_FROM_DATABASE=Cumulus Networks, inc +OUI:4439C4* + ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co.,Ltd + OUI:443D21* ID_OUI_FROM_DATABASE=Nuvolt @@ -54637,6 +54829,9 @@ OUI:448E81* OUI:4491DB* ID_OUI_FROM_DATABASE=Shanghai Huaqin Telecom Technology Co.,Ltd +OUI:4494FC* + ID_OUI_FROM_DATABASE=NETGEAR INC., + OUI:4495FA* ID_OUI_FROM_DATABASE=Qingdao Santong Digital Technology Co.Ltd @@ -54664,6 +54859,9 @@ OUI:44AA27* OUI:44AAE8* ID_OUI_FROM_DATABASE=Nanotec Electronic GmbH & Co. KG +OUI:44ADD9* + ID_OUI_FROM_DATABASE=Cisco + OUI:44B382* ID_OUI_FROM_DATABASE=Kuang-chi Institute of Advanced Technology @@ -54979,6 +55177,9 @@ OUI:4C60D5* OUI:4C60DE* ID_OUI_FROM_DATABASE=NETGEAR +OUI:4C6255* + ID_OUI_FROM_DATABASE=SANMINA-SCI SYSTEM DE MEXICO S.A. DE C.V. + OUI:4C63EB* ID_OUI_FROM_DATABASE=Application Solutions (Electronics and Vision) Ltd @@ -55000,12 +55201,18 @@ OUI:4C774F* OUI:4C7897* ID_OUI_FROM_DATABASE=Arrowhead Alarm Products Ltd +OUI:4C79BA* + ID_OUI_FROM_DATABASE=Intel Corporate + OUI:4C804F* ID_OUI_FROM_DATABASE=Armstrong Monitoring Corp OUI:4C8093* ID_OUI_FROM_DATABASE=Intel Corporate +OUI:4C82CF* + ID_OUI_FROM_DATABASE=Echostar Technologies + OUI:4C8B55* ID_OUI_FROM_DATABASE=Grupo Digicon @@ -55162,9 +55369,15 @@ OUI:505663* OUI:5057A8* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. +OUI:505AC6* + ID_OUI_FROM_DATABASE=GUANGDONG SUPER TELECOM CO.,LTD. + OUI:506028* ID_OUI_FROM_DATABASE=Xirrus Inc. +OUI:5061D6* + ID_OUI_FROM_DATABASE=Indu-Sol GmbH + OUI:506313* ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. @@ -55225,6 +55438,9 @@ OUI:50A4C8* OUI:50A6E3* ID_OUI_FROM_DATABASE=David Clark Company +OUI:50A715* + ID_OUI_FROM_DATABASE=Aboundi, Inc. + OUI:50A733* ID_OUI_FROM_DATABASE=Ruckus Wireless @@ -55247,7 +55463,7 @@ OUI:50CCF8* ID_OUI_FROM_DATABASE=Samsung Electro Mechanics OUI:50CD32* - ID_OUI_FROM_DATABASE=NanJing Chaoran Technology Co; Ltd. + ID_OUI_FROM_DATABASE=NanJing Chaoran Science & Technology Co.,Ltd. OUI:50CE75* ID_OUI_FROM_DATABASE=Measy Electronics Ltd @@ -55339,6 +55555,9 @@ OUI:544A05* OUI:5453ED* ID_OUI_FROM_DATABASE=Sony Corporation +OUI:545414* + ID_OUI_FROM_DATABASE=Digital RF Corea, Inc + OUI:545EBD* ID_OUI_FROM_DATABASE=NL Technologies @@ -55687,6 +55906,9 @@ OUI:5C18B5* OUI:5C20D0* ID_OUI_FROM_DATABASE=Asoni Communication Co., Ltd. +OUI:5C22C4* + ID_OUI_FROM_DATABASE=DAE EUN ELETRONICS CO., LTD + OUI:5C2479* ID_OUI_FROM_DATABASE=Baltech AG @@ -55855,9 +56077,15 @@ OUI:5CEE79* OUI:5CF207* ID_OUI_FROM_DATABASE=Speco Technologies +OUI:5CF370* + ID_OUI_FROM_DATABASE=CC&C Technologies, Inc + OUI:5CF3FC* ID_OUI_FROM_DATABASE=IBM Corp +OUI:5CF6DC* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD + OUI:5CF8A1* ID_OUI_FROM_DATABASE=Murata Manufactuaring Co.,Ltd. @@ -55891,6 +56119,9 @@ OUI:601929* OUI:601D0F* ID_OUI_FROM_DATABASE=Midnite Solar +OUI:601E02* + ID_OUI_FROM_DATABASE=EltexAlatau + OUI:6021C0* ID_OUI_FROM_DATABASE=Murata Manufactuaring Co.,Ltd. @@ -55933,6 +56164,9 @@ OUI:6045BD* OUI:604616* ID_OUI_FROM_DATABASE=XIAMEN VANN INTELLIGENT CO., LTD +OUI:604A1C* + ID_OUI_FROM_DATABASE=SUYIN Corporation + OUI:6052D0* ID_OUI_FROM_DATABASE=FACTS Engineering @@ -56065,6 +56299,9 @@ OUI:60DA23* OUI:60DE44* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD +OUI:60E00E* + ID_OUI_FROM_DATABASE=SHINSEI ELECTRONICS CO LTD + OUI:60E956* ID_OUI_FROM_DATABASE=Ayla Networks, Inc @@ -56452,12 +56689,18 @@ OUI:684CA8* OUI:6851B7* ID_OUI_FROM_DATABASE=PowerCloud Systems, Inc. +OUI:6854ED* + ID_OUI_FROM_DATABASE=Alcatel-Lucent - Nuage + OUI:6854F5* ID_OUI_FROM_DATABASE=enLighted Inc OUI:68597F* ID_OUI_FROM_DATABASE=Alcatel Lucent +OUI:685B35* + ID_OUI_FROM_DATABASE=Apple inc + OUI:685B36* ID_OUI_FROM_DATABASE=POWERTECH INDUSTRIAL CO., LTD. @@ -56488,6 +56731,9 @@ OUI:687924* OUI:6879ED* ID_OUI_FROM_DATABASE=SHARP Corporation +OUI:687CD5* + ID_OUI_FROM_DATABASE=Y Soft Corporation, a.s. + OUI:687F74* ID_OUI_FROM_DATABASE=Cisco-Linksys, LLC @@ -56587,6 +56833,9 @@ OUI:68D1FD* OUI:68D925* ID_OUI_FROM_DATABASE=ProSys Development Services +OUI:68DB67* + ID_OUI_FROM_DATABASE=Nantong Coship Electronics Co., Ltd + OUI:68DB96* ID_OUI_FROM_DATABASE=OPWILL Technologies CO .,LTD @@ -56602,6 +56851,9 @@ OUI:68EBAE* OUI:68EBC5* ID_OUI_FROM_DATABASE=Angstrem Telecom +OUI:68EC62* + ID_OUI_FROM_DATABASE=YODO Technology Corp. Ltd. + OUI:68ED43* ID_OUI_FROM_DATABASE=Research In Motion @@ -56686,6 +56938,9 @@ OUI:6C5D63* OUI:6C5E7A* ID_OUI_FROM_DATABASE=Ubiquitous Internet Telecom Co., Ltd +OUI:6C6126* + ID_OUI_FROM_DATABASE=Rinicom Holdings + OUI:6C626D* ID_OUI_FROM_DATABASE=Micro-Star INT'L CO., LTD @@ -56704,9 +56959,15 @@ OUI:6C81FE* OUI:6C8336* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd +OUI:6C8686* + ID_OUI_FROM_DATABASE=Technonia + OUI:6C8814* ID_OUI_FROM_DATABASE=Intel Corporate +OUI:6C8B2F* + ID_OUI_FROM_DATABASE=zte corporation + OUI:6C8CDB* ID_OUI_FROM_DATABASE=Otus Technologies Ltd @@ -56803,6 +57064,9 @@ OUI:6CF373* OUI:6CF37F* ID_OUI_FROM_DATABASE=Aruba Networks +OUI:6CFA58* + ID_OUI_FROM_DATABASE=Avaya, Inc + OUI:6CFDB9* ID_OUI_FROM_DATABASE=Proware Technologies Co Ltd. @@ -57208,6 +57472,9 @@ OUI:74CD0C* OUI:74CE56* ID_OUI_FROM_DATABASE=Packet Force Technology Limited Company +OUI:74D02B* + ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. + OUI:74D0DC* ID_OUI_FROM_DATABASE=ERICSSON AB @@ -57352,6 +57619,9 @@ OUI:78471D* OUI:78510C* ID_OUI_FROM_DATABASE=LiveU Ltd. +OUI:78521A* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:785262* ID_OUI_FROM_DATABASE=Shenzhen Hojy Software Co., Ltd. @@ -57424,6 +57694,9 @@ OUI:789F87* OUI:78A051* ID_OUI_FROM_DATABASE=iiNet Labs Pty Ltd +OUI:78A106* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + OUI:78A183* ID_OUI_FROM_DATABASE=Advidia @@ -57526,12 +57799,18 @@ OUI:78EF4C* OUI:78F5FD* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd +OUI:78F7BE* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:78F7D0* ID_OUI_FROM_DATABASE=Silverbrook Research OUI:78FE3D* ID_OUI_FROM_DATABASE=Juniper Networks +OUI:78FF57* + ID_OUI_FROM_DATABASE=Intel Corporate + OUI:7C0187* ID_OUI_FROM_DATABASE=Curtis Instruments, Inc. @@ -57544,6 +57823,9 @@ OUI:7C034C* OUI:7C03D8* ID_OUI_FROM_DATABASE=SAGEMCOM SAS +OUI:7C0507* + ID_OUI_FROM_DATABASE=PEGATRON CORPORATION + OUI:7C051E* ID_OUI_FROM_DATABASE=RAFAEL LTD. @@ -57910,6 +58192,9 @@ OUI:808287* OUI:808698* ID_OUI_FROM_DATABASE=Netronics Technologies Inc. +OUI:8086F2* + ID_OUI_FROM_DATABASE=Intel Corporate + OUI:808B5C* ID_OUI_FROM_DATABASE=Shenzhen Runhuicheng Technology Co., Ltd @@ -58051,6 +58336,9 @@ OUI:842B50* OUI:842BBC* ID_OUI_FROM_DATABASE=Modelleisenbahn GmbH +OUI:842F75* + ID_OUI_FROM_DATABASE=Innokas Group + OUI:8430E5* ID_OUI_FROM_DATABASE=SkyHawke Technologies, LLC @@ -58174,6 +58462,9 @@ OUI:84D9C8* OUI:84DB2F* ID_OUI_FROM_DATABASE=Sierra Wireless Inc +OUI:84DD20* + ID_OUI_FROM_DATABASE=Texas Instruments + OUI:84DE3D* ID_OUI_FROM_DATABASE=Crystal Vision Ltd @@ -58198,8 +58489,8 @@ OUI:84F64C* OUI:84FCFE* ID_OUI_FROM_DATABASE=Apple -OUI:880DD9* - ID_OUI_FROM_DATABASE=ISC applied systems corp +OUI:880905* + ID_OUI_FROM_DATABASE=MTMCommunications OUI:881036* ID_OUI_FROM_DATABASE=Panodic(ShenZhen) Electronics Limted @@ -58231,6 +58522,9 @@ OUI:88308A* OUI:88329B* ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co.,LTD. +OUI:883314* + ID_OUI_FROM_DATABASE=Texas Instruments + OUI:8841C1* ID_OUI_FROM_DATABASE=ORBISAT DA AMAZONIA IND E AEROL SA @@ -58276,6 +58570,9 @@ OUI:888717* OUI:8887DD* ID_OUI_FROM_DATABASE=DarbeeVision Inc. +OUI:888964* + ID_OUI_FROM_DATABASE=GSI Electronics Inc. + OUI:888B5D* ID_OUI_FROM_DATABASE=Storage Appliance Corporation @@ -58447,6 +58744,9 @@ OUI:8C5877* OUI:8C598B* ID_OUI_FROM_DATABASE=C Technologies AB +OUI:8C5AF0* + ID_OUI_FROM_DATABASE=Exeltech Solar Products + OUI:8C5CA1* ID_OUI_FROM_DATABASE=d-broad,INC @@ -58693,6 +58993,9 @@ OUI:9055AE* OUI:905682* ID_OUI_FROM_DATABASE=Lenbrook Industries Limited +OUI:905692* + ID_OUI_FROM_DATABASE=Autotalks Ltd. + OUI:9059AF* ID_OUI_FROM_DATABASE=Texas Instruments @@ -59071,6 +59374,12 @@ OUI:9803D8* OUI:980C82* ID_OUI_FROM_DATABASE=Samsung Electro Mechanics +OUI:980D2E* + ID_OUI_FROM_DATABASE=HTC Corporation + +OUI:981094* + ID_OUI_FROM_DATABASE=Shenzhen Vsun communication technology Co.,ltd + OUI:98208E* ID_OUI_FROM_DATABASE=Definium Technologies @@ -59092,6 +59401,9 @@ OUI:982D56* OUI:983000* ID_OUI_FROM_DATABASE=Beijing KEMACOM Technologies Co., Ltd. +OUI:983071* + ID_OUI_FROM_DATABASE=DAIKYUNG VASCOM + OUI:983571* ID_OUI_FROM_DATABASE=Sub10 Systems Ltd @@ -59125,6 +59437,9 @@ OUI:984CD3* OUI:984E97* ID_OUI_FROM_DATABASE=Starlight Marketing (H. K.) Ltd. +OUI:984FEE* + ID_OUI_FROM_DATABASE=Intel Corporate + OUI:9852B1* ID_OUI_FROM_DATABASE=Samsung Electronics @@ -59179,6 +59494,9 @@ OUI:988EDD* OUI:989080* ID_OUI_FROM_DATABASE=Linkpower Network System Inc Ltd. +OUI:9893CC* + ID_OUI_FROM_DATABASE=LG Electronics Inc. + OUI:989449* ID_OUI_FROM_DATABASE=Skyworth Wireless Technology Ltd. @@ -59380,6 +59698,9 @@ OUI:9C934E* OUI:9C95F8* ID_OUI_FROM_DATABASE=SmartDoor Systems, LLC +OUI:9C9726* + ID_OUI_FROM_DATABASE=Technicolor + OUI:9C9811* ID_OUI_FROM_DATABASE=Guangzhou Sunrise Electronics Development Co., Ltd @@ -59392,6 +59713,9 @@ OUI:9CA134* OUI:9CA3BA* ID_OUI_FROM_DATABASE=SAKURA Internet Inc. +OUI:9CA577* + ID_OUI_FROM_DATABASE=Osorno Enterprises Inc. + OUI:9CADEF* ID_OUI_FROM_DATABASE=Obihai Technology, Inc. @@ -59491,6 +59815,9 @@ OUI:A01859* OUI:A01917* ID_OUI_FROM_DATABASE=Bertel S.p.a. +OUI:A01C05* + ID_OUI_FROM_DATABASE=NIMAX TELECOM CO.,LTD. + OUI:A02195* ID_OUI_FROM_DATABASE=Samsung Electronics Digital Imaging @@ -59584,6 +59911,9 @@ OUI:A07591* OUI:A078BA* ID_OUI_FROM_DATABASE=Pantech Co., Ltd. +OUI:A0821F* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:A082C7* ID_OUI_FROM_DATABASE=P.T.I Co.,LTD @@ -59680,6 +60010,12 @@ OUI:A0E534* OUI:A0E9DB* ID_OUI_FROM_DATABASE=Ningbo FreeWings Technologies Co.,Ltd +OUI:A0EB76* + ID_OUI_FROM_DATABASE=AirCUVE Inc. + +OUI:A0EDCD* + ID_OUI_FROM_DATABASE=Apple + OUI:A0EF84* ID_OUI_FROM_DATABASE=Seine Image Int'l Co., Ltd @@ -59791,6 +60127,9 @@ OUI:A479E4* OUI:A47AA4* ID_OUI_FROM_DATABASE=Motorola Mobility, Inc. +OUI:A47ACF* + ID_OUI_FROM_DATABASE=VIBICOM COMMUNICATIONS INC. + OUI:A47C14* ID_OUI_FROM_DATABASE=ChargeStorm AB @@ -59818,6 +60157,9 @@ OUI:A49981* OUI:A49B13* ID_OUI_FROM_DATABASE=Burroughs Payment Systems, Inc. +OUI:A49EDB* + ID_OUI_FROM_DATABASE=AutoCrib, Inc. + OUI:A4A24A* ID_OUI_FROM_DATABASE=Cisco SPVTG @@ -59851,6 +60193,9 @@ OUI:A4B2A7* OUI:A4B36A* ID_OUI_FROM_DATABASE=JSC SDO Chromatec +OUI:A4B818* + ID_OUI_FROM_DATABASE=PENTA Gesellschaft für elektronische Industriedatenverarbeitung mbH + OUI:A4B980* ID_OUI_FROM_DATABASE=Parking BOXX Inc. @@ -59875,6 +60220,9 @@ OUI:A4D1D1* OUI:A4D1D2* ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:A4D3B5* + ID_OUI_FROM_DATABASE=GLITEL Stropkov, s.r.o. + OUI:A4D856* ID_OUI_FROM_DATABASE=Qualcomm Labs Inc. @@ -59887,6 +60235,9 @@ OUI:A4DB2E* OUI:A4DE50* ID_OUI_FROM_DATABASE=Total Walther GmbH +OUI:A4E0E6* + ID_OUI_FROM_DATABASE=FILIZOLA S.A. PESAGEM E AUTOMACAO + OUI:A4E32E* ID_OUI_FROM_DATABASE=Silicon & Software Systems Ltd. @@ -59914,6 +60265,9 @@ OUI:A4EE57* OUI:A4EF52* ID_OUI_FROM_DATABASE=Telewave Co., Ltd. +OUI:A4F3C1* + ID_OUI_FROM_DATABASE=Open Source Robotics Foundation, Inc. + OUI:A4F7D0* ID_OUI_FROM_DATABASE=LAN Accessories Co., Ltd. @@ -59923,6 +60277,9 @@ OUI:A80180* OUI:A80600* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd +OUI:A8154D* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + OUI:A816B2* ID_OUI_FROM_DATABASE=LG Electronics @@ -59941,6 +60298,9 @@ OUI:A82066* OUI:A826D9* ID_OUI_FROM_DATABASE=HTC Corporation +OUI:A8294C* + ID_OUI_FROM_DATABASE=Precision Optical Transceivers, Inc. + OUI:A82BD6* ID_OUI_FROM_DATABASE=Shina System Co., Ltd @@ -60403,6 +60763,9 @@ OUI:B0358D* OUI:B03829* ID_OUI_FROM_DATABASE=Siliconware Precision Industries Co., Ltd. +OUI:B03850* + ID_OUI_FROM_DATABASE=Nanjing CAS-ZDC IOT SYSTEM CO.,LTD + OUI:B0435D* ID_OUI_FROM_DATABASE=NuLEDs, Inc. @@ -60451,6 +60814,9 @@ OUI:B07D62* OUI:B081D8* ID_OUI_FROM_DATABASE=I-sys Corp +OUI:B08807* + ID_OUI_FROM_DATABASE=Strata Worldwide + OUI:B08991* ID_OUI_FROM_DATABASE=LGE @@ -60868,6 +61234,9 @@ OUI:B8616F* OUI:B8621F* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. +OUI:B863BC* + ID_OUI_FROM_DATABASE=ROBOTIS, Co, Ltd + OUI:B86491* ID_OUI_FROM_DATABASE=CK Telecom Ltd @@ -61078,12 +61447,18 @@ OUI:BC1401* OUI:BC15A6* ID_OUI_FROM_DATABASE=Taiwan Jantek Electronics,Ltd. +OUI:BC1665* + ID_OUI_FROM_DATABASE=Cisco + OUI:BC20A4* ID_OUI_FROM_DATABASE=Samsung Electronics OUI:BC20BA* ID_OUI_FROM_DATABASE=Inspur (Shandong) Electronic Information Co., Ltd +OUI:BC261D* + ID_OUI_FROM_DATABASE=HONG KONG TECON TECHNOLOGY + OUI:BC2846* ID_OUI_FROM_DATABASE=NextBIT Computing Pvt. Ltd. @@ -61153,6 +61528,9 @@ OUI:BC6E76* OUI:BC71C1* ID_OUI_FROM_DATABASE=XTrillion, Inc. +OUI:BC72B1* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:BC764E* ID_OUI_FROM_DATABASE=Rackspace US, Inc. @@ -61217,7 +61595,7 @@ OUI:BCBBC9* ID_OUI_FROM_DATABASE=Kellendonk Elektronik GmbH OUI:BCC168* - ID_OUI_FROM_DATABASE=DInBox Sverige AB + ID_OUI_FROM_DATABASE=DinBox Sverige AB OUI:BCC23A* ID_OUI_FROM_DATABASE=Thomson Video Networks @@ -61225,6 +61603,9 @@ OUI:BCC23A* OUI:BCC61A* ID_OUI_FROM_DATABASE=SPECTRA EMBEDDED SYSTEMS +OUI:BCC6DB* + ID_OUI_FROM_DATABASE=Nokia Corporation + OUI:BCC810* ID_OUI_FROM_DATABASE=Cisco SPVTG @@ -61318,6 +61699,9 @@ OUI:C03F2A* OUI:C041F6* ID_OUI_FROM_DATABASE=LG Electronics Inc +OUI:C04301* + ID_OUI_FROM_DATABASE=Epec Oy + OUI:C044E3* ID_OUI_FROM_DATABASE=Shenzhen Sinkna Electronics Co., LTD @@ -61327,6 +61711,9 @@ OUI:C0493D* OUI:C04A00* ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. +OUI:C04DF7* + ID_OUI_FROM_DATABASE=SERELEC + OUI:C058A7* ID_OUI_FROM_DATABASE=Pico Systems Co., Ltd. @@ -61414,6 +61801,9 @@ OUI:C0BD42* OUI:C0C1C0* ID_OUI_FROM_DATABASE=Cisco-Linksys, LLC +OUI:C0C3B6* + ID_OUI_FROM_DATABASE=Automatic Systems + OUI:C0C520* ID_OUI_FROM_DATABASE=Ruckus Wireless @@ -61483,6 +61873,9 @@ OUI:C4237A* OUI:C4242E* ID_OUI_FROM_DATABASE=Galvanic Applied Sciences Inc +OUI:C42628* + ID_OUI_FROM_DATABASE=Airo Wireless + OUI:C42C03* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -61831,6 +62224,9 @@ OUI:C8AE9C* OUI:C8AF40* ID_OUI_FROM_DATABASE=marco Systemanalyse und Entwicklung GmbH +OUI:C8B373* + ID_OUI_FROM_DATABASE=Cisco-Linksys, LLC + OUI:C8BBD3* ID_OUI_FROM_DATABASE=Embrane @@ -61873,6 +62269,9 @@ OUI:C8D5FE* OUI:C8D719* ID_OUI_FROM_DATABASE=Cisco Consumer Products, LLC +OUI:C8DDC9* + ID_OUI_FROM_DATABASE=Lenovo Mobile Communication Technology Ltd. + OUI:C8DE51* ID_OUI_FROM_DATABASE=Integra Networks, Inc. @@ -61939,6 +62338,9 @@ OUI:CC14A6* OUI:CC187B* ID_OUI_FROM_DATABASE=Manzanita Systems, Inc. +OUI:CC1AFA* + ID_OUI_FROM_DATABASE=zte corporation + OUI:CC1EFF* ID_OUI_FROM_DATABASE=Metrological Group BV @@ -61957,6 +62359,9 @@ OUI:CC34D7* OUI:CC3A61* ID_OUI_FROM_DATABASE=SAMSUNG ELECTRO MECHANICS CO., LTD. +OUI:CC3C3F* + ID_OUI_FROM_DATABASE=SA.S.S. Datentechnik AG + OUI:CC3E5F* ID_OUI_FROM_DATABASE=Hewlett Packard @@ -62191,6 +62596,9 @@ OUI:D046DC* OUI:D04CC1* ID_OUI_FROM_DATABASE=SINTRONES Technology Corp. +OUI:D05099* + ID_OUI_FROM_DATABASE=ASRock Incorporation + OUI:D05162* ID_OUI_FROM_DATABASE=Sony Mobile Communications AB @@ -62350,6 +62758,9 @@ OUI:D0EB9E* OUI:D0F0DB* ID_OUI_FROM_DATABASE=Ericsson +OUI:D0F27F* + ID_OUI_FROM_DATABASE=SteadyServ Technoligies, LLC + OUI:D0F73B* ID_OUI_FROM_DATABASE=Helmut Mauell GmbH @@ -62362,6 +62773,9 @@ OUI:D40057* OUI:D40129* ID_OUI_FROM_DATABASE=Broadcom Corporation +OUI:D4016D* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + OUI:D4024A* ID_OUI_FROM_DATABASE=Delphian Systems LLC @@ -62458,6 +62872,9 @@ OUI:D45C70* OUI:D45D42* ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:D464F7* + ID_OUI_FROM_DATABASE=CHENGDU USEE DIGITAL TECHNOLOGY CO., LTD + OUI:D466A8* ID_OUI_FROM_DATABASE=Riedo Networks GmbH @@ -62509,6 +62926,9 @@ OUI:D4945A* OUI:D494A1* ID_OUI_FROM_DATABASE=Texas Instruments +OUI:D49524* + ID_OUI_FROM_DATABASE=Clover Network, Inc. + OUI:D496DF* ID_OUI_FROM_DATABASE=SUNGJIN C&T CO.,LTD @@ -62539,6 +62959,9 @@ OUI:D4A928* OUI:D4AAFF* ID_OUI_FROM_DATABASE=MICRO WORLD +OUI:D4AC4E* + ID_OUI_FROM_DATABASE=BODi rS, LLC + OUI:D4AE52* ID_OUI_FROM_DATABASE=Dell Inc @@ -62548,12 +62971,18 @@ OUI:D4BED9* OUI:D4BF2D* ID_OUI_FROM_DATABASE=SE Controls Asia Pacific Ltd +OUI:D4BF7F* + ID_OUI_FROM_DATABASE=UPVEL + OUI:D4C1FC* ID_OUI_FROM_DATABASE=Nokia Corporation OUI:D4C766* ID_OUI_FROM_DATABASE=Acentic GmbH +OUI:D4C9EF* + ID_OUI_FROM_DATABASE=Hewlett Packard + OUI:D4CA6D* ID_OUI_FROM_DATABASE=Routerboard.com @@ -62917,6 +63346,12 @@ OUI:DC49C9* OUI:DC4EDE* ID_OUI_FROM_DATABASE=SHINYEI TECHNOLOGY CO., LTD. +OUI:DC5726* + ID_OUI_FROM_DATABASE=Power-One + +OUI:DC647C* + ID_OUI_FROM_DATABASE=C.R.S. iiMotion GmbH + OUI:DC6F08* ID_OUI_FROM_DATABASE=Bay Storage Technology @@ -62926,6 +63361,9 @@ OUI:DC7144* OUI:DC7B94* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. +OUI:DC825B* + ID_OUI_FROM_DATABASE=JANUS, spol. s r.o. + OUI:DC85DE* ID_OUI_FROM_DATABASE=Azurewave Technologies., inc. @@ -63100,6 +63538,9 @@ OUI:E061B2* OUI:E06290* ID_OUI_FROM_DATABASE=Jinan Jovision Science & Technology Co., Ltd. +OUI:E063E5* + ID_OUI_FROM_DATABASE=Sony Mobile Communications AB + OUI:E064BB* ID_OUI_FROM_DATABASE=DigiView S.r.l. @@ -63109,6 +63550,9 @@ OUI:E06995* OUI:E0757D* ID_OUI_FROM_DATABASE=Motorola Mobility LLC +OUI:E07C62* + ID_OUI_FROM_DATABASE=Whistle Labs, Inc. + OUI:E08177* ID_OUI_FROM_DATABASE=GreenBytes, Inc. @@ -63247,6 +63691,9 @@ OUI:E0F211* OUI:E0F379* ID_OUI_FROM_DATABASE=Vaddio +OUI:E0F5C6* + ID_OUI_FROM_DATABASE=Apple Inc + OUI:E0F5CA* ID_OUI_FROM_DATABASE=CHENG UEI PRECISION INDUSTRY CO.,LTD. @@ -63352,6 +63799,9 @@ OUI:E477D4* OUI:E47CF9* ID_OUI_FROM_DATABASE=Samsung Electronics Co., LTD +OUI:E47D5A* + ID_OUI_FROM_DATABASE=Beijing Hanbang Technology Corp. + OUI:E48399* ID_OUI_FROM_DATABASE=Motorola Mobility, Inc. @@ -63430,6 +63880,9 @@ OUI:E4EEFD* OUI:E4F365* ID_OUI_FROM_DATABASE=Time-O-Matic, Inc. +OUI:E4F7A1* + ID_OUI_FROM_DATABASE=Datafox GmbH + OUI:E4FA1D* ID_OUI_FROM_DATABASE=PAD Peripheral Advanced Design Inc. @@ -63478,6 +63931,9 @@ OUI:E82877* OUI:E828D5* ID_OUI_FROM_DATABASE=Cots Technology +OUI:E82AEA* + ID_OUI_FROM_DATABASE=Intel Corporate + OUI:E82E24* ID_OUI_FROM_DATABASE=Out of the Fog Research LLC @@ -63571,6 +64027,9 @@ OUI:E892A4* OUI:E8944C* ID_OUI_FROM_DATABASE=Cogent Healthcare Systems Ltd +OUI:E894F6* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + OUI:E8995A* ID_OUI_FROM_DATABASE=PiiGAB, Processinformation i Goteborg AB @@ -63634,6 +64093,9 @@ OUI:E8DA96* OUI:E8DAAA* ID_OUI_FROM_DATABASE=VideoHome Technology Corp. +OUI:E8DE27* + ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO.,LTD. + OUI:E8DFF2* ID_OUI_FROM_DATABASE=PRF Co., Ltd. @@ -63823,6 +64285,9 @@ OUI:ECCD6D* OUI:ECD00E* ID_OUI_FROM_DATABASE=MiraeRecognition Co., Ltd. +OUI:ECD040* + ID_OUI_FROM_DATABASE=GEA Farm Technologies GmbH + OUI:ECD19A* ID_OUI_FROM_DATABASE=Zhuhai Liming Industries Co., Ltd @@ -63967,6 +64432,9 @@ OUI:F06BCA* OUI:F073AE* ID_OUI_FROM_DATABASE=PEAK-System Technik +OUI:F07765* + ID_OUI_FROM_DATABASE=Sourcefire, Inc + OUI:F077D0* ID_OUI_FROM_DATABASE=Xcellen @@ -63976,9 +64444,15 @@ OUI:F07BCB* OUI:F07D68* ID_OUI_FROM_DATABASE=D-Link Corporation +OUI:F07F0C* + ID_OUI_FROM_DATABASE=Leopold Kostal GmbH &Co. KG + OUI:F081AF* ID_OUI_FROM_DATABASE=IRZ AUTOMATION TECHNOLOGIES LTD +OUI:F084C9* + ID_OUI_FROM_DATABASE=zte corporation + OUI:F08BFE* ID_OUI_FROM_DATABASE=COSTEL.,CO.LTD @@ -64126,6 +64600,9 @@ OUI:F41E26* OUI:F41F0B* ID_OUI_FROM_DATABASE=YAMABISHI Corporation +OUI:F41FC2* + ID_OUI_FROM_DATABASE=Cisco + OUI:F436E1* ID_OUI_FROM_DATABASE=Abilis Systems SARL @@ -64315,6 +64792,9 @@ OUI:F80BD0* OUI:F80CF3* ID_OUI_FROM_DATABASE=LG Electronics +OUI:F80DEA* + ID_OUI_FROM_DATABASE=ZyCast Technology Inc. + OUI:F80F41* ID_OUI_FROM_DATABASE=Wistron InfoComm(ZhongShan) Corporation @@ -64477,6 +64957,9 @@ OUI:F8D756* OUI:F8D7BF* ID_OUI_FROM_DATABASE=REV Ritter GmbH +OUI:F8DADF* + ID_OUI_FROM_DATABASE=EcoTech, Inc. + OUI:F8DAE2* ID_OUI_FROM_DATABASE=Beta LaserMike @@ -64531,6 +65014,9 @@ OUI:F8FB2F* OUI:F8FE5C* ID_OUI_FROM_DATABASE=Reciprocal Labs Corp +OUI:F8FEA8* + ID_OUI_FROM_DATABASE=Technico Japan Corporation + OUI:FC0012* ID_OUI_FROM_DATABASE=Toshiba Samsung Storage Technolgoy Korea Corporation @@ -64567,6 +65053,9 @@ OUI:FC1F19* OUI:FC1FC0* ID_OUI_FROM_DATABASE=EURECAM +OUI:FC229C* + ID_OUI_FROM_DATABASE=Han Kyung I Net Co.,Ltd. + OUI:FC253F* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -64585,6 +65074,9 @@ OUI:FC3598* OUI:FC4463* ID_OUI_FROM_DATABASE=Universal Audio +OUI:FC4499* + ID_OUI_FROM_DATABASE=Swarco LEA d.o.o. + OUI:FC455F* ID_OUI_FROM_DATABASE=JIANGXI SHANSHUI OPTOELECTRONIC TECHNOLOGY CO.,LTD diff --git a/hwdb/20-pci-vendor-product.hwdb b/hwdb/20-pci-vendor-product.hwdb index 3c87a51763..90f280e00e 100644 --- a/hwdb/20-pci-vendor-product.hwdb +++ b/hwdb/20-pci-vendor-product.hwdb @@ -122,66 +122,12 @@ pci:v00000795d00006663* pci:v00000795d00006666* ID_PRODUCT_FROM_DATABASE=MediaPress (MPEG2 encoder board) -pci:v000007D0* - ID_VENDOR_FROM_DATABASE=ITT Geospatial Systems - pci:v000007D1* ID_VENDOR_FROM_DATABASE=D-Link System Inc -pci:v000007E2* - ID_VENDOR_FROM_DATABASE=ELMEG Communication Systems GmbH - -pci:v00000842* - ID_VENDOR_FROM_DATABASE=NPG, Personal Grand Technology - -pci:v000008E6* - ID_VENDOR_FROM_DATABASE=Gemalto NV - -pci:v000008FF* - ID_VENDOR_FROM_DATABASE=AuthenTec - -pci:v000008FFd0000AFE4* - ID_PRODUCT_FROM_DATABASE=[Anchor] AF-S2 FingerLoc Sensor Module - pci:v00000925* ID_VENDOR_FROM_DATABASE=VIA Technologies, Inc. (Wrong ID) -pci:v00000925d00001234* - ID_PRODUCT_FROM_DATABASE=VT82C686/A/B USB Controller - -pci:v0000093A* - ID_VENDOR_FROM_DATABASE=PixArt Imaging Inc. - -pci:v0000093Ad0000010E* - ID_PRODUCT_FROM_DATABASE=Innovage Mini Digital Camera - -pci:v0000093Ad0000010F* - ID_PRODUCT_FROM_DATABASE=SDC-300 Webcam - -pci:v0000093Ad0000020F* - ID_PRODUCT_FROM_DATABASE=Digital Photo Viewer - -pci:v0000093Ad00002468* - ID_PRODUCT_FROM_DATABASE=CIF Single Chip - -pci:v0000093Ad00002600* - ID_PRODUCT_FROM_DATABASE=PAC7311 - -pci:v0000093Ad00002603* - ID_PRODUCT_FROM_DATABASE=Philips Webcam SPC500NC - -pci:v0000093Ad00002608* - ID_PRODUCT_FROM_DATABASE=Maxell MaxCam RotaWeb - -pci:v0000093Ad00002620* - ID_PRODUCT_FROM_DATABASE=C3 Tech Mod. 153 - -pci:v000009C1* - ID_VENDOR_FROM_DATABASE=Arris - -pci:v000009C1d00000704* - ID_PRODUCT_FROM_DATABASE=CM 200E Cable Modem - pci:v00000A89* ID_VENDOR_FROM_DATABASE=BREA Technologies Inc @@ -230,15 +176,6 @@ pci:v00000B0Bd00000906* pci:v00000B0Bd00000A06* ID_PRODUCT_FROM_DATABASE=RCB672FXX 672-channel modular analog telphony card -pci:v00000B3D* - ID_VENDOR_FROM_DATABASE=Brontes Technologies - -pci:v00000CCD* - ID_VENDOR_FROM_DATABASE=TerraTec Electronic GmbH - -pci:v00000CCDd00000038* - ID_PRODUCT_FROM_DATABASE=Cinergy T^2 DVB-T Receiver - pci:v00000E11* ID_VENDOR_FROM_DATABASE=Compaq Computer Corporation @@ -560,12 +497,6 @@ pci:v00000E11d0000F130* pci:v00000E11d0000F150* ID_PRODUCT_FROM_DATABASE=NetFlex-3/P ThunderLAN 2.3 -pci:v00000E21* - ID_VENDOR_FROM_DATABASE=Cowon Systems, Inc. - -pci:v00000E55* - ID_VENDOR_FROM_DATABASE=HaSoTec GmbH - pci:v00000EAC* ID_VENDOR_FROM_DATABASE=SHF Communication Technologies AG @@ -4382,15 +4313,42 @@ pci:v00001002d00006600* pci:v00001002d00006601* ID_PRODUCT_FROM_DATABASE=Mars [Radeon HD 8500/8700M Series] +pci:v00001002d00006602* + ID_PRODUCT_FROM_DATABASE=Mars + +pci:v00001002d00006603* + ID_PRODUCT_FROM_DATABASE=Mars + pci:v00001002d00006606* ID_PRODUCT_FROM_DATABASE=Mars [Radeon HD 8790M] +pci:v00001002d00006607* + ID_PRODUCT_FROM_DATABASE=Mars + pci:v00001002d00006610* ID_PRODUCT_FROM_DATABASE=Oland [Radeon HD 8600 Series] pci:v00001002d00006611* ID_PRODUCT_FROM_DATABASE=Oland [Radeon HD 8500 Series] +pci:v00001002d00006613* + ID_PRODUCT_FROM_DATABASE=Oland [Radeon HD 8500 Series] + +pci:v00001002d00006620* + ID_PRODUCT_FROM_DATABASE=Mars + +pci:v00001002d00006621* + ID_PRODUCT_FROM_DATABASE=Mars + +pci:v00001002d00006623* + ID_PRODUCT_FROM_DATABASE=Mars + +pci:v00001002d00006631* + ID_PRODUCT_FROM_DATABASE=Oland + +pci:v00001002d0000665C* + ID_PRODUCT_FROM_DATABASE=Bonaire [Radeon HD 7700 Series] + pci:v00001002d00006660* ID_PRODUCT_FROM_DATABASE=Sun [Radeon HD 8600M Series] @@ -5540,6 +5498,9 @@ pci:v00001002d00009495sv00001002sd00009495* pci:v00001002d00009495sv00001458sd00000028* ID_PRODUCT_FROM_DATABASE=HD4650 +pci:v00001002d00009495sv00001682sd00000028* + ID_PRODUCT_FROM_DATABASE=HD465X + pci:v00001002d00009498* ID_PRODUCT_FROM_DATABASE=RV730 PRO [Radeon HD 4650] @@ -6329,6 +6290,9 @@ pci:v0000100Bd00000020sv000012D9sd0000000C* pci:v0000100Bd00000020sv00001385sd0000F311* ID_PRODUCT_FROM_DATABASE=FA311 / FA312 (FA311 with WoL HW) +pci:v0000100Bd00000020sv00001385sd0000F312* + ID_PRODUCT_FROM_DATABASE=FA312 (rev. A1) Fast Ethernet PCI Adapter + pci:v0000100Bd00000021* ID_PRODUCT_FROM_DATABASE=PC87200 PCI to ISA Bridge @@ -7049,9 +7013,6 @@ pci:v00001014d00000057* pci:v00001014d00000058* ID_PRODUCT_FROM_DATABASE=SSA Adapter [Advanced SerialRAID/X] -pci:v00001014d0000005C* - ID_PRODUCT_FROM_DATABASE=i82557B 10/100 - pci:v00001014d0000005E* ID_PRODUCT_FROM_DATABASE=GXT800P Graphics Adapter @@ -7118,9 +7079,6 @@ pci:v00001014d000000DC* pci:v00001014d000000FC* ID_PRODUCT_FROM_DATABASE=CPC710 Dual Bridge and Memory Controller (PCI-64) -pci:v00001014d00000104* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet-SX Adapter - pci:v00001014d00000105* ID_PRODUCT_FROM_DATABASE=CPC710 Dual Bridge and Memory Controller (PCI-32) @@ -7238,15 +7196,6 @@ pci:v00001014d0000021C* pci:v00001014d00000233* ID_PRODUCT_FROM_DATABASE=GXT135P Graphics Adapter -pci:v00001014d00000266* - ID_PRODUCT_FROM_DATABASE=PCI-X Dual Channel SCSI - -pci:v00001014d00000268* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet-SX Adapter (PCI-X) - -pci:v00001014d00000269* - ID_PRODUCT_FROM_DATABASE=10/100/1000 Base-TX Ethernet Adapter (PCI-X) - pci:v00001014d0000028C* ID_PRODUCT_FROM_DATABASE=Citrine chipset SCSI controller @@ -8066,6 +8015,9 @@ pci:v00001022d00007800* pci:v00001022d00007801* ID_PRODUCT_FROM_DATABASE=FCH SATA Controller [AHCI mode] +pci:v00001022d00007801sv0000103Csd0000168B* + ID_PRODUCT_FROM_DATABASE=ProBook 4535s Notebook + pci:v00001022d00007802* ID_PRODUCT_FROM_DATABASE=FCH SATA Controller [RAID mode] @@ -10457,15 +10409,6 @@ pci:v0000103B* pci:v0000103C* ID_VENDOR_FROM_DATABASE=Hewlett-Packard Company -pci:v0000103Cd00000025* - ID_PRODUCT_FROM_DATABASE=XE4500 Notebook - -pci:v0000103Cd0000002A* - ID_PRODUCT_FROM_DATABASE=NX9000 Notebook - -pci:v0000103Cd000008BC* - ID_PRODUCT_FROM_DATABASE=NX5000 Notebook - pci:v0000103Cd00001005* ID_PRODUCT_FROM_DATABASE=A4977A Visualize EG @@ -10571,9 +10514,6 @@ pci:v0000103Cd000010F0* pci:v0000103Cd000010F1* ID_PRODUCT_FROM_DATABASE=rio I/O Controller -pci:v0000103Cd00001200* - ID_PRODUCT_FROM_DATABASE=82557B 10/100 NIC - pci:v0000103Cd00001219* ID_PRODUCT_FROM_DATABASE=NetServer PCI Hot-Plug Controller @@ -10622,54 +10562,18 @@ pci:v0000103Cd000012EC* pci:v0000103Cd000012EE* ID_PRODUCT_FROM_DATABASE=PCI-X 2.0 Local Bus Adapter -pci:v0000103Cd000012F8* - ID_PRODUCT_FROM_DATABASE=Broadcom BCM4306 802.11b/g Wireless LAN - -pci:v0000103Cd000012FA* - ID_PRODUCT_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller - pci:v0000103Cd00001302* ID_PRODUCT_FROM_DATABASE=RMP-3 Shared Memory Driver pci:v0000103Cd00001303* ID_PRODUCT_FROM_DATABASE=RMP-3 (Remote Management Processor) -pci:v0000103Cd00001361* - ID_PRODUCT_FROM_DATABASE=BCM4312 802.11a/b/g WLAN Controller - -pci:v0000103Cd00001371* - ID_PRODUCT_FROM_DATABASE=Broadcom Corporation BCM4312 802.11a/b/g (rev 02) - -pci:v0000103Cd00001717* - ID_PRODUCT_FROM_DATABASE=Intel 82571EB dual 1 Gb Ethernet controller - -pci:v0000103Cd0000179B* - ID_PRODUCT_FROM_DATABASE=EliteBook 8470p Notebook - -pci:v0000103Cd0000179D* - ID_PRODUCT_FROM_DATABASE=EliteBook 8470p Notebook - pci:v0000103Cd00002910* ID_PRODUCT_FROM_DATABASE=E2910A PCIBus Exerciser pci:v0000103Cd00002925* ID_PRODUCT_FROM_DATABASE=E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer -pci:v0000103Cd00003080* - ID_PRODUCT_FROM_DATABASE=Pavilion ze2028ea - -pci:v0000103Cd00003085* - ID_PRODUCT_FROM_DATABASE=Realtek RTL8139/8139C/8139C+ - -pci:v0000103Cd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq NW8440 Notebook - -pci:v0000103Cd000030B5* - ID_PRODUCT_FROM_DATABASE=Compaq Presario V3000Z - -pci:v0000103Cd000031FB* - ID_PRODUCT_FROM_DATABASE=DL365 ATI ES1000 VGA controller - pci:v0000103Cd00003206* ID_PRODUCT_FROM_DATABASE=Adaptec Embedded Serial ATA HostRAID @@ -10922,83 +10826,8 @@ pci:v00001043d00000675sv00000675sd00001707* pci:v00001043d00000675sv000010CFsd0000105E* ID_PRODUCT_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) -pci:v00001043d00000C11* - ID_PRODUCT_FROM_DATABASE=A7N8X Motherboard nForce2 IDE/USB/SMBus - -pci:v00001043d00004015* - ID_PRODUCT_FROM_DATABASE=v7100 SDRAM [GeForce2 MX] - -pci:v00001043d00004021* - ID_PRODUCT_FROM_DATABASE=v7100 Combo Deluxe [GeForce2 MX + TV tuner] - -pci:v00001043d00004057* - ID_PRODUCT_FROM_DATABASE=v8200 GeForce 3 - -pci:v00001043d00008043* - ID_PRODUCT_FROM_DATABASE=v8240 PAL 128M [P4T] Motherboard - -pci:v00001043d00008047* - ID_PRODUCT_FROM_DATABASE=v8420 Deluxe [GeForce4 Ti4200] - -pci:v00001043d0000807B* - ID_PRODUCT_FROM_DATABASE=v9280/TD [GeForce4 TI4200 8X With TV-Out and DVI] - -pci:v00001043d00008095* - ID_PRODUCT_FROM_DATABASE=A7N8X Motherboard nForce2 AC97 Audio - -pci:v00001043d000080AC* - ID_PRODUCT_FROM_DATABASE=A7N8X Motherboard nForce2 AGP/Memory - -pci:v00001043d000080BB* - ID_PRODUCT_FROM_DATABASE=v9180 Magic/T [GeForce4 MX440 AGP 8x 64MB TV-out] - -pci:v00001043d000080C5* - ID_PRODUCT_FROM_DATABASE=nForce3 chipset motherboard [SK8N] - -pci:v00001043d000080DF* - ID_PRODUCT_FROM_DATABASE=v9520 Magic/T - -pci:v00001043d0000815A* - ID_PRODUCT_FROM_DATABASE=A8N-SLI Motherboard nForce4 SATA - -pci:v00001043d00008168* - ID_PRODUCT_FROM_DATABASE=Realtek PCI-E Gigabit Ethernet Controller (RTL8111B) - -pci:v00001043d00008187* - ID_PRODUCT_FROM_DATABASE=802.11a/b/g Wireless LAN Card - -pci:v00001043d00008188* - ID_PRODUCT_FROM_DATABASE=Tiger Hybrid TV Capture Device - -pci:v00001043d000081E7* - ID_PRODUCT_FROM_DATABASE=Realtek ALC-660 6-channel CODEC - -pci:v00001043d000081F4* - ID_PRODUCT_FROM_DATABASE=EN7300TC512/TD/128M/A(C262G) [Graphics Card EN7300TC512] - -pci:v00001043d00008233* - ID_PRODUCT_FROM_DATABASE=EEE-PC 701 Netbook - -pci:v00001043d000082CA* - ID_PRODUCT_FROM_DATABASE=G96 GeForce 9500 GT - -pci:v00001043d000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v00001043d00008383* - ID_PRODUCT_FROM_DATABASE=P7P55D Series Motherboard - -pci:v00001043d000083A4* - ID_PRODUCT_FROM_DATABASE=Motherboard M2N68-AM SE2 - -pci:v00001043d00008410* - ID_PRODUCT_FROM_DATABASE=SBx00 [Azalia] - -pci:v00001043d0000843E* - ID_PRODUCT_FROM_DATABASE=M5A88-V EVO - pci:v00001043d00009602* - ID_PRODUCT_FROM_DATABASE=RS880 PCI to PCI bridge (int gfx) + ID_PRODUCT_FROM_DATABASE=AMD RS780/RS880 PCI to PCI bridge (int gfx) pci:v00001043d00009602sv00001043sd000083A2* ID_PRODUCT_FROM_DATABASE=M4A785TD Motherboard @@ -12482,9 +12311,6 @@ pci:v00001057d000018C1* pci:v00001057d00003052* ID_PRODUCT_FROM_DATABASE=SM56 Data Fax Modem -pci:v00001057d00003055* - ID_PRODUCT_FROM_DATABASE=SM56 Data Fax Modem - pci:v00001057d00003410* ID_PRODUCT_FROM_DATABASE=DSP56361 Digital Signal Processor @@ -12863,9 +12689,6 @@ pci:v0000105Ad0000E350* pci:v0000105B* ID_VENDOR_FROM_DATABASE=Foxconn International, Inc. -pci:v0000105Bd00000C4D* - ID_PRODUCT_FROM_DATABASE=SiS AC'97 Sound Controller - pci:v0000105C* ID_VENDOR_FROM_DATABASE=Wipro Infotech Limited @@ -13404,7 +13227,7 @@ pci:v0000106Bd00000074* ID_PRODUCT_FROM_DATABASE=U4 HT Bridge pci:v0000106Bd00001645* - ID_PRODUCT_FROM_DATABASE=Tigon3 Gigabit Ethernet NIC (BCM5701) + ID_PRODUCT_FROM_DATABASE=Broadcom NetXtreme BCM5701 Gigabit Ethernet pci:v0000106C* ID_VENDOR_FROM_DATABASE=Hynix Semiconductor @@ -13577,6 +13400,9 @@ pci:v00001077d00001280* pci:v00001077d00002020* ID_PRODUCT_FROM_DATABASE=ISP2020A Fast!SCSI Basic Adapter +pci:v00001077d00002031* + ID_PRODUCT_FROM_DATABASE=ISP8324-based 16Gb Fibre Channel to PCI Express Adapter + pci:v00001077d00002100* ID_PRODUCT_FROM_DATABASE=QLA2100 64-bit Fibre Channel Adapter @@ -13703,6 +13529,21 @@ pci:v00001077d00008022sv0000103Csd00003347* pci:v00001077d00008022sv00001077sd00000212* ID_PRODUCT_FROM_DATABASE=QME8242-k 10GbE Dual Port Mezzanine Card, iSCSI +pci:v00001077d00008030* + ID_PRODUCT_FROM_DATABASE=ISP8324 1/10GbE Converged Network Controller + +pci:v00001077d00008030sv00001077sd00000243* + ID_PRODUCT_FROM_DATABASE=8300 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking) + +pci:v00001077d00008030sv00001077sd00000246* + ID_PRODUCT_FROM_DATABASE=8300 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking) + +pci:v00001077d00008031* + ID_PRODUCT_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (FCoE) + +pci:v00001077d00008032* + ID_PRODUCT_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (iSCSI) + pci:v00001077d00008432* ID_PRODUCT_FROM_DATABASE=ISP2432M-based 10GbE Converged Network Adapter (CNA) @@ -13752,7 +13593,7 @@ pci:v0000107A* ID_VENDOR_FROM_DATABASE=NetWorth pci:v0000107B* - ID_VENDOR_FROM_DATABASE=Gateway 2000 + ID_VENDOR_FROM_DATABASE=Gateway, Inc. pci:v0000107C* ID_VENDOR_FROM_DATABASE=LG Electronics [Lucky Goldstar Co. Ltd] @@ -13763,18 +13604,6 @@ pci:v0000107D* pci:v0000107Dd00000000* ID_PRODUCT_FROM_DATABASE=P86C850 -pci:v0000107Dd00002134* - ID_PRODUCT_FROM_DATABASE=WinFast 3D S320 II - -pci:v0000107Dd00006609* - ID_PRODUCT_FROM_DATABASE=Winfast TV 2000 XP RM - -pci:v0000107Dd00006654* - ID_PRODUCT_FROM_DATABASE=Conexant CX23883 [WinFast DTV1800 H] - -pci:v0000107Dd00006F22* - ID_PRODUCT_FROM_DATABASE=WinFast PxTV1200 - pci:v0000107Dd00006F34* ID_PRODUCT_FROM_DATABASE=WinFast DVR3100 H @@ -15479,9 +15308,15 @@ pci:v000010B5d00008696* pci:v000010B5d00008717* ID_PRODUCT_FROM_DATABASE=PEX 8717 16-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch with DMA +pci:v000010B5d00008718* + ID_PRODUCT_FROM_DATABASE=PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch + pci:v000010B5d00008732* ID_PRODUCT_FROM_DATABASE=PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch +pci:v000010B5d00008734* + ID_PRODUCT_FROM_DATABASE=PEX 8734 32-lane, 8-Port PCI Express Gen 3 (8.0GT/s) Switch + pci:v000010B5d000087B0* ID_PRODUCT_FROM_DATABASE=PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch @@ -16859,9 +16694,6 @@ pci:v000010C2* pci:v000010C3* ID_VENDOR_FROM_DATABASE=Samsung Semiconductors, Inc. -pci:v000010C3d00001100* - ID_PRODUCT_FROM_DATABASE=Smartether100 SC1100 LAN Adapter (i82557B) - pci:v000010C4* ID_VENDOR_FROM_DATABASE=Award Software International Inc. @@ -17414,6 +17246,9 @@ pci:v000010DEd0000002Csv00001048sd00000C20* pci:v000010DEd0000002Csv00001048sd00000C21* ID_PRODUCT_FROM_DATABASE=TNT2 Vanta +pci:v000010DEd0000002Csv00001048sd00000C25* + ID_PRODUCT_FROM_DATABASE=TNT2 Vanta 16MB + pci:v000010DEd0000002Csv00001092sd00006820* ID_PRODUCT_FROM_DATABASE=Viper V730 @@ -17459,6 +17294,15 @@ pci:v000010DEd0000002Dsv00001102sd00001024* pci:v000010DEd0000002Dsv00001102sd0000102C* ID_PRODUCT_FROM_DATABASE=CT6931 RIVA TNT2 Value [Jumper] +pci:v000010DEd0000002Dsv00001102sd00001030* + ID_PRODUCT_FROM_DATABASE=CT6931 RIVA TNT2 Value + +pci:v000010DEd0000002Dsv0000110Asd0000006F* + ID_PRODUCT_FROM_DATABASE=GM1000-16 + +pci:v000010DEd0000002Dsv0000110Asd00000081* + ID_PRODUCT_FROM_DATABASE=GM1000-16 + pci:v000010DEd0000002Dsv00001462sd00008808* ID_PRODUCT_FROM_DATABASE=MSI-8808 @@ -17537,6 +17381,9 @@ pci:v000010DEd00000044* pci:v000010DEd00000045* ID_PRODUCT_FROM_DATABASE=NV40 [GeForce 6800 GT] +pci:v000010DEd00000045sv00001458sd00003140* + ID_PRODUCT_FROM_DATABASE=GV-N68T256D + pci:v000010DEd00000046* ID_PRODUCT_FROM_DATABASE=NV45 [GeForce 6800 GT] @@ -18410,12 +18257,18 @@ pci:v000010DEd00000110sv00001048sd00000C65* pci:v000010DEd00000110sv00001048sd00000C66* ID_PRODUCT_FROM_DATABASE=Gladiac 311 +pci:v000010DEd00000110sv000010B0sd00000001* + ID_PRODUCT_FROM_DATABASE=GeForce2 MX Jumbo TV + pci:v000010DEd00000110sv000010DEsd00000091* ID_PRODUCT_FROM_DATABASE=Dell OEM GeForce 2 MX 400 pci:v000010DEd00000110sv000010DEsd000000A1* ID_PRODUCT_FROM_DATABASE=Apple OEM GeForce2 MX +pci:v000010DEd00000110sv00001462sd00008523* + ID_PRODUCT_FROM_DATABASE=MS-8852 + pci:v000010DEd00000110sv00001462sd00008817* ID_PRODUCT_FROM_DATABASE=MSI GeForce2 MX400 Pro32S [MS-8817] @@ -18428,6 +18281,9 @@ pci:v000010DEd00000110sv000014AFsd00007103* pci:v000010DEd00000110sv00001545sd00000023* ID_PRODUCT_FROM_DATABASE=Xtasy Rev. B2 +pci:v000010DEd00000110sv00001554sd00001081* + ID_PRODUCT_FROM_DATABASE=MVGA-NVG11AM(400) + pci:v000010DEd00000111* ID_PRODUCT_FROM_DATABASE=NV11DDR [GeForce2 MX200] @@ -18440,12 +18296,27 @@ pci:v000010DEd00000113* pci:v000010DEd00000140* ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6600 GT] +pci:v000010DEd00000140sv00001458sd00003125* + ID_PRODUCT_FROM_DATABASE=GV-NX66T128D + +pci:v000010DEd00000140sv00001458sd00003126* + ID_PRODUCT_FROM_DATABASE=GV-NX66T256DE + +pci:v000010DEd00000140sv00001462sd00008939* + ID_PRODUCT_FROM_DATABASE=MS-8983 + pci:v000010DEd00000141* ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6600] pci:v000010DEd00000141sv00001043sd000081B0* ID_PRODUCT_FROM_DATABASE=EN6600 Silencer +pci:v000010DEd00000141sv0000107Dsd0000593A* + ID_PRODUCT_FROM_DATABASE=LR2A22 128MB TV OUT + +pci:v000010DEd00000141sv0000107Dsd0000597B* + ID_PRODUCT_FROM_DATABASE=WINFAST PX6600 + pci:v000010DEd00000141sv00001458sd00003124* ID_PRODUCT_FROM_DATABASE=GV-NX66128DP Turbo Force Edition @@ -18494,6 +18365,9 @@ pci:v000010DEd00000150* pci:v000010DEd00000150sv00001043sd00004016* ID_PRODUCT_FROM_DATABASE=V7700 AGP Video Card +pci:v000010DEd00000150sv00001043sd0000402A* + ID_PRODUCT_FROM_DATABASE=AGP-V7700 + pci:v000010DEd00000150sv00001048sd00000C50* ID_PRODUCT_FROM_DATABASE=Gladiac @@ -18509,6 +18383,9 @@ pci:v000010DEd00000150sv0000107Dsd00002842* pci:v000010DEd00000150sv000010DEsd0000002E* ID_PRODUCT_FROM_DATABASE=GeForce2 GTS +pci:v000010DEd00000150sv00001462sd0000815A* + ID_PRODUCT_FROM_DATABASE=MS-8815 + pci:v000010DEd00000150sv00001462sd00008831* ID_PRODUCT_FROM_DATABASE=Creative GeForce2 Pro @@ -18521,6 +18398,9 @@ pci:v000010DEd00000151sv00001043sd0000405F* pci:v000010DEd00000151sv00001462sd00005506* ID_PRODUCT_FROM_DATABASE=Creative 3D Blaster GeForce2 Titanium +pci:v000010DEd00000151sv00001462sd00008364* + ID_PRODUCT_FROM_DATABASE=MS-8836 + pci:v000010DEd00000152* ID_PRODUCT_FROM_DATABASE=NV15BR [GeForce2 Ultra, Bladerunner] @@ -18566,6 +18446,9 @@ pci:v000010DEd0000016A* pci:v000010DEd00000170* ID_PRODUCT_FROM_DATABASE=NV17 [GeForce4 MX 460] +pci:v000010DEd00000170sv00001462sd00008630* + ID_PRODUCT_FROM_DATABASE=MS-8863 + pci:v000010DEd00000171* ID_PRODUCT_FROM_DATABASE=NV17 [GeForce4 MX 440] @@ -18581,6 +18464,9 @@ pci:v000010DEd00000171sv00001462sd00008661* pci:v000010DEd00000171sv00001462sd00008730* ID_PRODUCT_FROM_DATABASE=MX440SES-T (MS-8873) +pci:v000010DEd00000171sv00001462sd00008743* + ID_PRODUCT_FROM_DATABASE=MS-8874 + pci:v000010DEd00000171sv00001462sd00008852* ID_PRODUCT_FROM_DATABASE=GeForce4 MX440 PCI @@ -18590,6 +18476,12 @@ pci:v000010DEd00000171sv0000147Bsd00008F00* pci:v000010DEd00000172* ID_PRODUCT_FROM_DATABASE=NV17 [GeForce4 MX 420] +pci:v000010DEd00000172sv00001462sd00008730* + ID_PRODUCT_FROM_DATABASE=MS-8873 + +pci:v000010DEd00000172sv00001462sd00008784* + ID_PRODUCT_FROM_DATABASE=MS-8878 + pci:v000010DEd00000173* ID_PRODUCT_FROM_DATABASE=NV17 [GeForce4 MX 440-SE] @@ -20330,6 +20222,9 @@ pci:v000010DEd00000427* pci:v000010DEd00000427sv0000103Csd000030CC* ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 +pci:v000010DEd00000427sv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop + pci:v000010DEd00000428* ID_PRODUCT_FROM_DATABASE=G86 [GeForce 8400M G] @@ -20366,30 +20261,51 @@ pci:v000010DEd00000441* pci:v000010DEd00000442* ID_PRODUCT_FROM_DATABASE=MCP65 LPC Bridge +pci:v000010DEd00000442sv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop + pci:v000010DEd00000443* ID_PRODUCT_FROM_DATABASE=MCP65 LPC Bridge pci:v000010DEd00000444* ID_PRODUCT_FROM_DATABASE=MCP65 Memory Controller +pci:v000010DEd00000444sv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop + pci:v000010DEd00000445* ID_PRODUCT_FROM_DATABASE=MCP65 Memory Controller pci:v000010DEd00000446* ID_PRODUCT_FROM_DATABASE=MCP65 SMBus +pci:v000010DEd00000446sv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop + pci:v000010DEd00000447* ID_PRODUCT_FROM_DATABASE=MCP65 SMU +pci:v000010DEd00000447sv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop + pci:v000010DEd00000448* ID_PRODUCT_FROM_DATABASE=MCP65 IDE +pci:v000010DEd00000448sv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop + pci:v000010DEd00000449* ID_PRODUCT_FROM_DATABASE=MCP65 PCI bridge +pci:v000010DEd00000449sv000010DEsd0000CB84* + ID_PRODUCT_FROM_DATABASE=HP Pavilion dv9668eg Laptop + pci:v000010DEd0000044A* ID_PRODUCT_FROM_DATABASE=MCP65 High Definition Audio +pci:v000010DEd0000044Asv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop + pci:v000010DEd0000044B* ID_PRODUCT_FROM_DATABASE=MCP65 High Definition Audio @@ -20408,6 +20324,9 @@ pci:v000010DEd0000044F* pci:v000010DEd00000450* ID_PRODUCT_FROM_DATABASE=MCP65 Ethernet +pci:v000010DEd00000450sv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop + pci:v000010DEd00000451* ID_PRODUCT_FROM_DATABASE=MCP65 Ethernet @@ -20418,10 +20337,16 @@ pci:v000010DEd00000453* ID_PRODUCT_FROM_DATABASE=MCP65 Ethernet pci:v000010DEd00000454* - ID_PRODUCT_FROM_DATABASE=MCP65 USB Controller + ID_PRODUCT_FROM_DATABASE=MCP65 USB 1.1 OHCI Controller + +pci:v000010DEd00000454sv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop pci:v000010DEd00000455* - ID_PRODUCT_FROM_DATABASE=MCP65 USB Controller + ID_PRODUCT_FROM_DATABASE=MCP65 USB 2.0 EHCI Controller + +pci:v000010DEd00000455sv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop pci:v000010DEd00000456* ID_PRODUCT_FROM_DATABASE=MCP65 USB Controller @@ -20432,18 +20357,36 @@ pci:v000010DEd00000457* pci:v000010DEd00000458* ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge +pci:v000010DEd00000458sv000010DEsd00000000* + ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge + pci:v000010DEd00000459* ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge +pci:v000010DEd00000459sv000010DEsd00000000* + ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge + pci:v000010DEd0000045A* ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge +pci:v000010DEd0000045Asv000010DEsd00000000* + ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge + +pci:v000010DEd0000045B* + ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge + +pci:v000010DEd0000045Bsv000010DEsd00000000* + ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge + pci:v000010DEd0000045C* ID_PRODUCT_FROM_DATABASE=MCP65 SATA Controller pci:v000010DEd0000045D* ID_PRODUCT_FROM_DATABASE=MCP65 SATA Controller +pci:v000010DEd0000045Dsv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop + pci:v000010DEd0000045E* ID_PRODUCT_FROM_DATABASE=MCP65 SATA Controller @@ -22277,9 +22220,15 @@ pci:v000010DEd00000FFE* pci:v000010DEd00000FFF* ID_PRODUCT_FROM_DATABASE=GK107 [Quadro 410] +pci:v000010DEd00001021* + ID_PRODUCT_FROM_DATABASE=GK110 [Tesla K20Xm] + pci:v000010DEd00001022* ID_PRODUCT_FROM_DATABASE=GK107 [Tesla K20c] +pci:v000010DEd00001028* + ID_PRODUCT_FROM_DATABASE=GK110 [Tesla K20m] + pci:v000010DEd00001040* ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 520] @@ -22385,6 +22334,9 @@ pci:v000010DEd00001188* pci:v000010DEd00001189* ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 670] +pci:v000010DEd0000118F* + ID_PRODUCT_FROM_DATABASE=GK104 [Tesla K10] + pci:v000010DEd000011BA* ID_PRODUCT_FROM_DATABASE=GK104 [Quadro K5000] @@ -22859,51 +22811,18 @@ pci:v000010EC* pci:v000010ECd00000139* ID_PRODUCT_FROM_DATABASE=Zonet Zen3200 -pci:v000010ECd00000260* - ID_PRODUCT_FROM_DATABASE=Realtek 260 High Definition Audio - -pci:v000010ECd00000261* - ID_PRODUCT_FROM_DATABASE=Realtek 261 High Definition Audio - -pci:v000010ECd00000262* - ID_PRODUCT_FROM_DATABASE=Realtek 262 High Definition Audio - -pci:v000010ECd00000269* - ID_PRODUCT_FROM_DATABASE=Realtek ALC269 High Definition Audio (82801G) - -pci:v000010ECd00000280* - ID_PRODUCT_FROM_DATABASE=Realtek 280 High Definition Audio - -pci:v000010ECd00000660* - ID_PRODUCT_FROM_DATABASE=Realtek 660 High Definition Audio - -pci:v000010ECd00000662* - ID_PRODUCT_FROM_DATABASE=Realtek 662 High Definition Audio - -pci:v000010ECd00000861* - ID_PRODUCT_FROM_DATABASE=Realtek 861 High Definition Audio - -pci:v000010ECd00000862* - ID_PRODUCT_FROM_DATABASE=Realtek 862 High Definition Audio - pci:v000010ECd00000880* ID_PRODUCT_FROM_DATABASE=Realtek 880 High Definition Audio pci:v000010ECd00000883* ID_PRODUCT_FROM_DATABASE=Realtek 883 High Definition Audio -pci:v000010ECd00000883sv00001025sd00001605* - ID_PRODUCT_FROM_DATABASE=TravelMate 5600 series - pci:v000010ECd00000885* ID_PRODUCT_FROM_DATABASE=Realtek 885 High Definition Audio pci:v000010ECd00000888* ID_PRODUCT_FROM_DATABASE=Realtek 888 High Definition Audio -pci:v000010ECd00000888sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - pci:v000010ECd00000892* ID_PRODUCT_FROM_DATABASE=Realtek 892 High Definition Audio @@ -23181,7 +23100,7 @@ pci:v000010ECd00008168sv00001849sd00008168* ID_PRODUCT_FROM_DATABASE=Motherboard (one of many) pci:v000010ECd00008168sv00008086sd0000D615* - ID_PRODUCT_FROM_DATABASE=Desktop Board D510MO + ID_PRODUCT_FROM_DATABASE=Desktop Board D510MO/D525MW pci:v000010ECd00008169* ID_PRODUCT_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller @@ -23204,6 +23123,9 @@ pci:v000010ECd00008169sv00001371sd0000434E* pci:v000010ECd00008169sv00001385sd0000311A* ID_PRODUCT_FROM_DATABASE=GA311 +pci:v000010ECd00008169sv00001385sd00005200* + ID_PRODUCT_FROM_DATABASE=GA511 Gigabit PC Card + pci:v000010ECd00008169sv00001458sd0000E000* ID_PRODUCT_FROM_DATABASE=GA-8I915ME-G Mainboard @@ -23285,6 +23207,9 @@ pci:v000010ECd00008199* pci:v000010ECd00008199sv00001462sd00006894* ID_PRODUCT_FROM_DATABASE=MN54G2 / MS-6894 Wireless Mini PCIe Card +pci:v000010ECd00008723* + ID_PRODUCT_FROM_DATABASE=RTL8723AE PCIe Wireless Network Adapter + pci:v000010ED* ID_VENDOR_FROM_DATABASE=Ascii Corporation @@ -23963,15 +23888,6 @@ pci:v00001106d00000364sv00001043sd000081CE* pci:v00001106d00000391* ID_PRODUCT_FROM_DATABASE=VT8371 [KX133] -pci:v00001106d00000397* - ID_PRODUCT_FROM_DATABASE=VT1708S HD Audio - -pci:v00001106d00000397sv00001043sd0000836C* - ID_PRODUCT_FROM_DATABASE=P7H55 - -pci:v00001106d00000397sv00001043sd000083C7* - ID_PRODUCT_FROM_DATABASE=P5KPL-AM EPU - pci:v00001106d00000409* ID_PRODUCT_FROM_DATABASE=VX855/VX875 Host Bridge: Host Control @@ -24728,6 +24644,9 @@ pci:v00001106d00003106sv00001106sd00000105* pci:v00001106d00003106sv00001186sd00001403* ID_PRODUCT_FROM_DATABASE=DFE-530TX rev C +pci:v00001106d00003106sv00001186sd00001405* + ID_PRODUCT_FROM_DATABASE=DFE-520TX Fast Ethernet PCI Adapter + pci:v00001106d00003106sv00001186sd00001406* ID_PRODUCT_FROM_DATABASE=DFE-530TX+ rev F2 @@ -25100,9 +25019,6 @@ pci:v00001106d00004353* pci:v00001106d00004364* ID_PRODUCT_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge -pci:v00001106d00004397* - ID_PRODUCT_FROM_DATABASE=VT1708B/1702S/1708S HD audio codec - pci:v00001106d00004409* ID_PRODUCT_FROM_DATABASE=VX855/VX875 Power Management Control @@ -25112,9 +25028,6 @@ pci:v00001106d00004410* pci:v00001106d00004410sv000019DAsd0000A179* ID_PRODUCT_FROM_DATABASE=ZBOX nano VD01 -pci:v00001106d00004428* - ID_PRODUCT_FROM_DATABASE=VT1718S HD Audio Codec - pci:v00001106d00005030* ID_PRODUCT_FROM_DATABASE=VT82C596 ACPI [Apollo PRO] @@ -25370,6 +25283,9 @@ pci:v00001106d0000A364* pci:v00001106d0000A409* ID_PRODUCT_FROM_DATABASE=VX855/VX875 USB Device Controller +pci:v00001106d0000A410* + ID_PRODUCT_FROM_DATABASE=VX900 PCI Express Root Port 0 + pci:v00001106d0000B091* ID_PRODUCT_FROM_DATABASE=VT8633 [Apollo Pro266 AGP] @@ -25412,6 +25328,9 @@ pci:v00001106d0000B213* pci:v00001106d0000B353* ID_PRODUCT_FROM_DATABASE=VX855/VX875/VX900 PCI to PCI Bridge +pci:v00001106d0000B410* + ID_PRODUCT_FROM_DATABASE=VX900 PCI Express Root Port 1 + pci:v00001106d0000B999* ID_PRODUCT_FROM_DATABASE=[K8T890 North / VT8237 South] PCI Bridge @@ -25436,6 +25355,9 @@ pci:v00001106d0000C364* pci:v00001106d0000C409* ID_PRODUCT_FROM_DATABASE=VX855/VX875 EIDE Controller +pci:v00001106d0000C410* + ID_PRODUCT_FROM_DATABASE=VX900 PCI Express Root Port 2 + pci:v00001106d0000D104* ID_PRODUCT_FROM_DATABASE=VT8237R USB UDCI Controller @@ -25451,6 +25373,9 @@ pci:v00001106d0000D238* pci:v00001106d0000D340* ID_PRODUCT_FROM_DATABASE=PT900 PCI to PCI Bridge Controller +pci:v00001106d0000D410* + ID_PRODUCT_FROM_DATABASE=VX900 PCI Express Root Port 3 + pci:v00001106d0000E208* ID_PRODUCT_FROM_DATABASE=PT890 PCI to PCI Bridge Controller @@ -25463,9 +25388,6 @@ pci:v00001106d0000E340* pci:v00001106d0000E353* ID_PRODUCT_FROM_DATABASE=VX800/VX820 PCI Express Root Port -pci:v00001106d0000E721* - ID_PRODUCT_FROM_DATABASE=VT1708B 8-channel High Definition Audio CODEC - pci:v00001106d0000F208* ID_PRODUCT_FROM_DATABASE=PT890 PCI to PCI Bridge Controller @@ -25565,6 +25487,9 @@ pci:v0000110Ad00004021* pci:v0000110Ad00004029* ID_PRODUCT_FROM_DATABASE=SIMATIC NET CP 5613A2 (Profibus Adapter) +pci:v0000110Ad00004035* + ID_PRODUCT_FROM_DATABASE=SIMATIC NET CP 1613 A2 + pci:v0000110Ad00004942* ID_PRODUCT_FROM_DATABASE=FPGA I-Bus Tracer for MBD @@ -26004,7 +25929,7 @@ pci:v0000111Cd00000001* ID_PRODUCT_FROM_DATABASE=Powerbis Bridge pci:v0000111D* - ID_VENDOR_FROM_DATABASE=Integrated Device Technology, Inc. + ID_VENDOR_FROM_DATABASE=Integrated Device Technology, Inc. [IDT] pci:v0000111Dd00000001* ID_PRODUCT_FROM_DATABASE=IDT77201/77211 155Mbps ATM SAR Controller [NICStAR] @@ -26450,6 +26375,9 @@ pci:v00001131d00007133sv00001435sd00007330* pci:v00001131d00007133sv00001435sd00007350* ID_PRODUCT_FROM_DATABASE=VFG7350 +pci:v00001131d00007133sv00001458sd00009001* + ID_PRODUCT_FROM_DATABASE=GC-PTV-TAF Hybrid TV card + pci:v00001131d00007133sv00001458sd00009002* ID_PRODUCT_FROM_DATABASE=GT-PTV-TAF-RH DVB-T/Analog TV/FM tuner @@ -28625,6 +28553,9 @@ pci:v00001180d00000592sv0000103Csd000030B7* pci:v00001180d00000592sv0000103Csd000030CC* ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 +pci:v00001180d00000592sv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop + pci:v00001180d00000592sv00001043sd00001237* ID_PRODUCT_FROM_DATABASE=A6J-Q008 @@ -28676,6 +28607,9 @@ pci:v00001180d00000822sv0000103Csd000030C1* pci:v00001180d00000822sv0000103Csd000030CC* ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 +pci:v00001180d00000822sv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop + pci:v00001180d00000822sv00001043sd00001237* ID_PRODUCT_FROM_DATABASE=A6J-Q008 @@ -28721,6 +28655,9 @@ pci:v00001180d00000832sv0000103Csd000030C1* pci:v00001180d00000832sv0000103Csd000030CC* ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 +pci:v00001180d00000832sv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop + pci:v00001180d00000841* ID_PRODUCT_FROM_DATABASE=R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394 @@ -28769,6 +28706,9 @@ pci:v00001180d00000852sv0000103Csd000030B7* pci:v00001180d00000852sv0000103Csd000030CC* ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 +pci:v00001180d00000852sv0000103Csd000030CF* + ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop + pci:v00001180d00000852sv00001043sd00001967* ID_PRODUCT_FROM_DATABASE=V6800V @@ -28829,9 +28769,6 @@ pci:v00001185* pci:v00001186* ID_VENDOR_FROM_DATABASE=D-Link System Inc -pci:v00001186d00000100* - ID_PRODUCT_FROM_DATABASE=DC21041 - pci:v00001186d00001002* ID_PRODUCT_FROM_DATABASE=DL10050 Sundance Ethernet @@ -28865,9 +28802,6 @@ pci:v00001186d00001300sv00001186sd00001303* pci:v00001186d00001340* ID_PRODUCT_FROM_DATABASE=DFE-690TXD CardBus PC Card -pci:v00001186d00001405* - ID_PRODUCT_FROM_DATABASE=DFE-520TX Fast Ethernet PCI Adapter - pci:v00001186d00001540* ID_PRODUCT_FROM_DATABASE=DFE-680TX @@ -28886,42 +28820,12 @@ pci:v00001186d00003300sv00001186sd00003300* pci:v00001186d00003300sv00001186sd00003301* ID_PRODUCT_FROM_DATABASE=DWL-510 Wireless PCI Adapter -pci:v00001186d00003A03* - ID_PRODUCT_FROM_DATABASE=AirPro DWL-A650 Wireless Cardbus Adapter(rev.B) - -pci:v00001186d00003A04* - ID_PRODUCT_FROM_DATABASE=AirPro DWL-AB650 Multimode Wireless Cardbus Adapter - -pci:v00001186d00003A05* - ID_PRODUCT_FROM_DATABASE=AirPro DWL-AB520 Multimode Wireless PCI Adapter - -pci:v00001186d00003A07* - ID_PRODUCT_FROM_DATABASE=AirXpert DWL-AG650 Wireless Cardbus Adapter - -pci:v00001186d00003A08* - ID_PRODUCT_FROM_DATABASE=AirXpert DWL-AG520 Wireless PCI Adapter - pci:v00001186d00003A10* ID_PRODUCT_FROM_DATABASE=AirXpert DWL-AG650 Wireless Cardbus Adapter(rev.B) pci:v00001186d00003A11* ID_PRODUCT_FROM_DATABASE=AirXpert DWL-AG520 Wireless PCI Adapter(rev.B) -pci:v00001186d00003A12* - ID_PRODUCT_FROM_DATABASE=AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C) - -pci:v00001186d00003A63* - ID_PRODUCT_FROM_DATABASE=AirXpert DWL-AG660 Wireless Cardbus Adapter - -pci:v00001186d00003A70* - ID_PRODUCT_FROM_DATABASE=DWA-556 Xtreme N PCI Express Desktop Adapter - -pci:v00001186d00003C00* - ID_PRODUCT_FROM_DATABASE=D-link DWL-G650X - -pci:v00001186d00003C09* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G510 - pci:v00001186d00004000* ID_PRODUCT_FROM_DATABASE=DL2000-based Gigabit Ethernet @@ -28937,9 +28841,6 @@ pci:v00001186d00004300sv00001186sd00004B10* pci:v00001186d00004302* ID_PRODUCT_FROM_DATABASE=DGE-530T Gigabit Ethernet Adapter (rev.C1) [Realtek RTL8169] -pci:v00001186d00004800* - ID_PRODUCT_FROM_DATABASE=DGE-530T Gigabit Ethernet Adapter (rev 11) - pci:v00001186d00004B00* ID_PRODUCT_FROM_DATABASE=DGE-560T PCI Express Gigabit Ethernet Adapter @@ -29267,6 +29168,9 @@ pci:v000011ABd00002A02* pci:v000011ABd00002A02sv000007D1sd00003B02* ID_PRODUCT_FROM_DATABASE=DIR-615 rev. A1 Mini PCI Wireless Module +pci:v000011ABd00002A02sv00001385sd00007C00* + ID_PRODUCT_FROM_DATABASE=WN511T RangeMax Next 300 Mbps Wireless PC Card + pci:v000011ABd00002A02sv00001385sd00007C01* ID_PRODUCT_FROM_DATABASE=WN511T RangeMax Next 300 Mbps Wireless Notebook Adapter @@ -30317,15 +30221,9 @@ pci:v000011C1d0000048F* pci:v000011C1d00000620* ID_PRODUCT_FROM_DATABASE=Lucent V.92 Data/Fax Modem -pci:v000011C1d00001040* - ID_PRODUCT_FROM_DATABASE=HDA softmodem - pci:v000011C1d00002600* ID_PRODUCT_FROM_DATABASE=StarPro26XX family (SP2601, SP2603, SP2612) DSP -pci:v000011C1d00003026* - ID_PRODUCT_FROM_DATABASE=HDA Modem - pci:v000011C1d00005400* ID_PRODUCT_FROM_DATABASE=OR3TP12 FPSC @@ -30509,45 +30407,12 @@ pci:v000011D3* pci:v000011D4* ID_VENDOR_FROM_DATABASE=Analog Devices -pci:v000011D4d00000078* - ID_PRODUCT_FROM_DATABASE=AD1986HD sound chip - pci:v000011D4d00001535* ID_PRODUCT_FROM_DATABASE=Blackfin BF535 processor pci:v000011D4d00001805* ID_PRODUCT_FROM_DATABASE=SM56 PCI modem -pci:v000011D4d00001889* - ID_PRODUCT_FROM_DATABASE=AD1889 sound chip - -pci:v000011D4d0000194A* - ID_PRODUCT_FROM_DATABASE=AD1984A sound chip - -pci:v000011D4d00001981* - ID_PRODUCT_FROM_DATABASE=AD1981HD sound chip - -pci:v000011D4d00001983* - ID_PRODUCT_FROM_DATABASE=AD1983HD sound chip - -pci:v000011D4d00001984* - ID_PRODUCT_FROM_DATABASE=AD1984HD sound chip - -pci:v000011D4d00001984sv000017AAsd000020BB* - ID_PRODUCT_FROM_DATABASE=T61p Notebook - -pci:v000011D4d00001986* - ID_PRODUCT_FROM_DATABASE=AD1986A sound chip - -pci:v000011D4d00001986sv000011D4sd00001986* - ID_PRODUCT_FROM_DATABASE=Lenovo N100 B9G - -pci:v000011D4d0000198B* - ID_PRODUCT_FROM_DATABASE=AD1988B Sound Chip - -pci:v000011D4d00005340* - ID_PRODUCT_FROM_DATABASE=AD1881 sound chip - pci:v000011D5* ID_VENDOR_FROM_DATABASE=Ikon Corporation @@ -34955,48 +34820,15 @@ pci:v00001385d0000006B* pci:v00001385d00004100* ID_PRODUCT_FROM_DATABASE=MA301 802.11b Wireless PCI Adapter -pci:v00001385d00004105* - ID_PRODUCT_FROM_DATABASE=MA311 802.11b Wireless PCI Adapter - -pci:v00001385d00004400* - ID_PRODUCT_FROM_DATABASE=WAG511 802.11a/b/g Dual Band Wireless PC Card - -pci:v00001385d00004600* - ID_PRODUCT_FROM_DATABASE=WAG511 802.11a/b/g Dual Band Wireless PC Card - pci:v00001385d00004601* ID_PRODUCT_FROM_DATABASE=WAG511 802.11a/b/g Dual Band Wireless PC Card -pci:v00001385d00004610* - ID_PRODUCT_FROM_DATABASE=WAG511 802.11a/b/g Dual Band Wireless PC Card - -pci:v00001385d00004A00* - ID_PRODUCT_FROM_DATABASE=WAG311 802.11a/g Wireless PCI Adapter - -pci:v00001385d00005200* - ID_PRODUCT_FROM_DATABASE=GA511 Gigabit PC Card - pci:v00001385d0000620A* ID_PRODUCT_FROM_DATABASE=GA620 Gigabit Ethernet pci:v00001385d0000630A* ID_PRODUCT_FROM_DATABASE=GA630 Gigabit Ethernet -pci:v00001385d00006D00* - ID_PRODUCT_FROM_DATABASE=WPNT511 RangeMax 240 Mbps Wireless PC Card - -pci:v00001385d00007B00* - ID_PRODUCT_FROM_DATABASE=WN511B RangeMax Next 270 Mbps Wireless PC Card - -pci:v00001385d00007C00* - ID_PRODUCT_FROM_DATABASE=WN511T RangeMax Next 300 Mbps Wireless PC Card - -pci:v00001385d0000F004* - ID_PRODUCT_FROM_DATABASE=FA310TX - -pci:v00001385d0000F312* - ID_PRODUCT_FROM_DATABASE=FA312 REV-A1 Fast Ethernet PCI Adapter - pci:v00001386* ID_VENDOR_FROM_DATABASE=Video Domain Technologies @@ -35906,9 +35738,6 @@ pci:v000013F6d00008788sv00007284sd00009783* pci:v000013F6d00008788sv00007284sd00009787* ID_PRODUCT_FROM_DATABASE=CLARO II -pci:v000013F6d00009880* - ID_PRODUCT_FROM_DATABASE=CM9880 - pci:v000013F7* ID_VENDOR_FROM_DATABASE=Wildfire Communications @@ -36750,7 +36579,7 @@ pci:v00001425d0000400E* ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller pci:v00001425d0000400F* - ID_PRODUCT_FROM_DATABASE=Amsterdam T440 Unified Wire Ethernet Controller + ID_PRODUCT_FROM_DATABASE=T440 [Amsterdam] Unified Wire Ethernet Controller pci:v00001425d00004080* ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller @@ -36819,7 +36648,7 @@ pci:v00001425d0000440E* ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller pci:v00001425d0000440F* - ID_PRODUCT_FROM_DATABASE=Amsterdam T440 Unified Wire Ethernet Controller + ID_PRODUCT_FROM_DATABASE=T440 [Amsterdam] Unified Wire Ethernet Controller pci:v00001425d00004480* ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller @@ -36888,7 +36717,7 @@ pci:v00001425d0000450E* ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Storage Controller pci:v00001425d0000450F* - ID_PRODUCT_FROM_DATABASE=Amsterdam T440 Unified Wire Storage Controller + ID_PRODUCT_FROM_DATABASE=T440 [Amsterdam] Unified Wire Storage Controller pci:v00001425d00004580* ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Storage Controller @@ -36957,7 +36786,7 @@ pci:v00001425d0000460E* ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Storage Controller pci:v00001425d0000460F* - ID_PRODUCT_FROM_DATABASE=Amsterdam T440 Unified Wire Storage Controller + ID_PRODUCT_FROM_DATABASE=T440 [Amsterdam] Unified Wire Storage Controller pci:v00001425d00004680* ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Storage Controller @@ -37026,7 +36855,7 @@ pci:v00001425d0000470E* ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller pci:v00001425d0000470F* - ID_PRODUCT_FROM_DATABASE=Amsterdam T440 Unified Wire Ethernet Controller + ID_PRODUCT_FROM_DATABASE=T440 [Amsterdam] Unified Wire Ethernet Controller pci:v00001425d00004780* ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller @@ -37095,7 +36924,7 @@ pci:v00001425d0000480E* ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller pci:v00001425d0000480F* - ID_PRODUCT_FROM_DATABASE=Amsterdam T440 Unified Wire Ethernet Controller + ID_PRODUCT_FROM_DATABASE=T440 [Amsterdam] Unified Wire Ethernet Controller pci:v00001425d00004880* ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller @@ -37164,7 +36993,7 @@ pci:v00001425d0000500E* ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller pci:v00001425d0000500F* - ID_PRODUCT_FROM_DATABASE=Amsterdam T540 Unified Wire Ethernet Controller + ID_PRODUCT_FROM_DATABASE=T540 [Amsterdam] Unified Wire Ethernet Controller pci:v00001425d00005010* ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller @@ -37221,7 +37050,7 @@ pci:v00001425d0000540E* ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller pci:v00001425d0000540F* - ID_PRODUCT_FROM_DATABASE=Amsterdam T540 Unified Wire Ethernet Controller + ID_PRODUCT_FROM_DATABASE=T540 [Amsterdam] Unified Wire Ethernet Controller pci:v00001425d00005410* ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller @@ -37278,7 +37107,7 @@ pci:v00001425d0000550E* ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Storage Controller pci:v00001425d0000550F* - ID_PRODUCT_FROM_DATABASE=Amsterdam T540 Unified Wire Storage Controller + ID_PRODUCT_FROM_DATABASE=T540 [Amsterdam] Unified Wire Storage Controller pci:v00001425d00005510* ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Storage Controller @@ -37335,7 +37164,7 @@ pci:v00001425d0000560E* ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Storage Controller pci:v00001425d0000560F* - ID_PRODUCT_FROM_DATABASE=Amsterdam T540 Unified Wire Storage Controller + ID_PRODUCT_FROM_DATABASE=T540 [Amsterdam] Unified Wire Storage Controller pci:v00001425d00005610* ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Storage Controller @@ -37392,7 +37221,7 @@ pci:v00001425d0000570E* ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller pci:v00001425d0000570F* - ID_PRODUCT_FROM_DATABASE=Amsterdam T540 Unified Wire Ethernet Controller + ID_PRODUCT_FROM_DATABASE=T540 [Amsterdam] Unified Wire Ethernet Controller pci:v00001425d00005710* ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller @@ -37449,7 +37278,7 @@ pci:v00001425d0000580E* ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller pci:v00001425d0000580F* - ID_PRODUCT_FROM_DATABASE=Amsterdam T540 Unified Wire Ethernet Controller + ID_PRODUCT_FROM_DATABASE=T540 [Amsterdam] Unified Wire Ethernet Controller pci:v00001425d00005810* ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller @@ -37658,12 +37487,6 @@ pci:v0000144C* pci:v0000144D* ID_VENDOR_FROM_DATABASE=Samsung Electronics Co Ltd -pci:v0000144Dd0000C00C* - ID_PRODUCT_FROM_DATABASE=P35 laptop - -pci:v0000144Dd0000C511* - ID_PRODUCT_FROM_DATABASE=R20 Laptop - pci:v0000144E* ID_VENDOR_FROM_DATABASE=OLITEC @@ -37694,12 +37517,6 @@ pci:v00001457* pci:v00001458* ID_VENDOR_FROM_DATABASE=Giga-byte Technology -pci:v00001458d00009001* - ID_PRODUCT_FROM_DATABASE=GC-PTV-TAF Hybrid TV card - -pci:v00001458d0000E911* - ID_PRODUCT_FROM_DATABASE=GN-WIAG02 - pci:v00001459* ID_VENDOR_FROM_DATABASE=DOOIN Electronics @@ -40070,9 +39887,21 @@ pci:v000014E4d00005841* pci:v000014E4d00005850* ID_PRODUCT_FROM_DATABASE=BCM5850 Crypto Accelerator +pci:v000014E4d00008602* + ID_PRODUCT_FROM_DATABASE=BCM7400/BCM7405 Serial ATA Controller + +pci:v000014E4d0000B302* + ID_PRODUCT_FROM_DATABASE=BCM56302 StrataXGS 24x1GE 2x10GE Switch Controller + +pci:v000014E4d0000B334* + ID_PRODUCT_FROM_DATABASE=BCM56334 StrataXGS 24x1GE 4x10GE Switch Controller + pci:v000014E4d0000B800* ID_PRODUCT_FROM_DATABASE=BCM56800 StrataXGS 10GE Switch Controller +pci:v000014E4d0000B842* + ID_PRODUCT_FROM_DATABASE=BCM56842 Trident 10GE Switch Controller + pci:v000014E5* ID_VENDOR_FROM_DATABASE=Pixelfusion Ltd @@ -40526,12 +40355,6 @@ pci:v000014F1d00002465* pci:v000014F1d00002466* ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (Mob SmartDAA) -pci:v000014F1d00002BFA* - ID_PRODUCT_FROM_DATABASE=D110 HDAudio Soft Data Fax Modem with SmartCP - -pci:v000014F1d00002BFAsv00001025sd00000009* - ID_PRODUCT_FROM_DATABASE=Aspire 5622WLMi - pci:v000014F1d00002F00* ID_PRODUCT_FROM_DATABASE=HSF 56k HSFi Modem @@ -40568,15 +40391,6 @@ pci:v000014F1d00002F30sv000014F1sd00002014* pci:v000014F1d00002F50* ID_PRODUCT_FROM_DATABASE=Conexant SoftK56 Data/Fax Modem -pci:v000014F1d00005045* - ID_PRODUCT_FROM_DATABASE=CX20549 (Venice) - -pci:v000014F1d00005047* - ID_PRODUCT_FROM_DATABASE=High Definition Audio [Waikiki] - -pci:v000014F1d00005051* - ID_PRODUCT_FROM_DATABASE=High Definition Audio (HERMOSA) - pci:v000014F1d00005B7A* ID_PRODUCT_FROM_DATABASE=CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder @@ -40871,6 +40685,9 @@ pci:v000014F1d00008852* pci:v000014F1d00008852sv00000070sd00008010* ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV HVR-1400 ExpressCard +pci:v000014F1d00008852sv0000107Dsd00006F22* + ID_PRODUCT_FROM_DATABASE=WinFast PxTV1200 + pci:v000014F1d00008852sv00001461sd0000C039* ID_PRODUCT_FROM_DATABASE=AVerTV Hybrid Express (A577) @@ -41426,9 +41243,6 @@ pci:v00001543* pci:v00001543d00003052* ID_PRODUCT_FROM_DATABASE=Intel 537 [Winmodem] -pci:v00001543d00003155* - ID_PRODUCT_FROM_DATABASE=Motorola SM56 Speakerphone Modem - pci:v00001543d00004C22* ID_PRODUCT_FROM_DATABASE=Si3036 MC'97 DAA @@ -42248,6 +42062,9 @@ pci:v000015CE* pci:v000015CF* ID_VENDOR_FROM_DATABASE=Hilscher GmbH +pci:v000015CFd00000000* + ID_PRODUCT_FROM_DATABASE=CIFX 50E-DP(M/S) + pci:v000015D1* ID_VENDOR_FROM_DATABASE=Infineon Technologies AG @@ -42743,6 +42560,15 @@ pci:v0000168Cd00000011* pci:v0000168Cd00000012* ID_PRODUCT_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001X 802.11ab] +pci:v0000168Cd00000012sv00001186sd00003A03* + ID_PRODUCT_FROM_DATABASE=AirPro DWL-A650 Wireless Cardbus Adapter (rev.B) + +pci:v0000168Cd00000012sv00001186sd00003A04* + ID_PRODUCT_FROM_DATABASE=AirPro DWL-AB650 Multimode Wireless Cardbus Adapter + +pci:v0000168Cd00000012sv00001186sd00003A05* + ID_PRODUCT_FROM_DATABASE=AirPro DWL-AB520 Multimode Wireless PCI Adapter + pci:v0000168Cd00000012sv0000126Csd00008031* ID_PRODUCT_FROM_DATABASE=2201 Mobile Adapter @@ -42788,6 +42614,12 @@ pci:v0000168Cd00000013sv00001186sd00003202* pci:v0000168Cd00000013sv00001186sd00003203* ID_PRODUCT_FROM_DATABASE=AirPlus DWL-G520 Wireless PCI Adapter (rev. A) +pci:v0000168Cd00000013sv00001186sd00003A07* + ID_PRODUCT_FROM_DATABASE=AirXpert DWL-AG650 Wireless Cardbus Adapter + +pci:v0000168Cd00000013sv00001186sd00003A08* + ID_PRODUCT_FROM_DATABASE=AirXpert DWL-AG520 Wireless PCI Adapter + pci:v0000168Cd00000013sv00001186sd00003A12* ID_PRODUCT_FROM_DATABASE=D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C) @@ -42818,9 +42650,18 @@ pci:v0000168Cd00000013sv00001186sd00003A94* pci:v0000168Cd00000013sv00001186sd00003AB0* ID_PRODUCT_FROM_DATABASE=Allnet ALL0281 Wireless PCI Card +pci:v0000168Cd00000013sv00001385sd00004600* + ID_PRODUCT_FROM_DATABASE=WAG511 802.11a/b/g Dual Band Wireless PC Card + +pci:v0000168Cd00000013sv00001385sd00004610* + ID_PRODUCT_FROM_DATABASE=WAG511 802.11a/b/g Dual Band Wireless PC Card + pci:v0000168Cd00000013sv00001385sd00004900* ID_PRODUCT_FROM_DATABASE=WG311v1 802.11g Wireless PCI Adapter +pci:v0000168Cd00000013sv00001385sd00004A00* + ID_PRODUCT_FROM_DATABASE=WAG311 802.11a/g Wireless PCI Adapter + pci:v0000168Cd00000013sv00001385sd00004B00* ID_PRODUCT_FROM_DATABASE=WG511T 108 Mbps Wireless PC Card (rev.A/B) @@ -42840,7 +42681,7 @@ pci:v0000168Cd00000013sv00001385sd00005D00* ID_PRODUCT_FROM_DATABASE=WPN511 RangeMax Wireless PC Card pci:v0000168Cd00000013sv00001458sd0000E911* - ID_PRODUCT_FROM_DATABASE=Gigabyte GN-WIAG02 + ID_PRODUCT_FROM_DATABASE=GN-WIAG02 pci:v0000168Cd00000013sv00001468sd00000403* ID_PRODUCT_FROM_DATABASE=U10H014 802.11g Cardbus Adapter @@ -43175,6 +43016,9 @@ pci:v0000168Cd00000024* pci:v0000168Cd00000024sv0000106Bsd00000087* ID_PRODUCT_FROM_DATABASE=AR5BXB72 802.11abgn Mini PCIe Card [AR5008E-3NX] +pci:v0000168Cd00000024sv00001186sd00003A70* + ID_PRODUCT_FROM_DATABASE=DWA-556 Xtreme N PCI Express Desktop Adapter + pci:v0000168Cd00000027* ID_PRODUCT_FROM_DATABASE=AR9160 Wireless Network Adapter [AR9001 802.11(a)bgn] @@ -43715,15 +43559,6 @@ pci:v0000172Ad000013C8* pci:v00001734* ID_VENDOR_FROM_DATABASE=Fujitsu Technology Solutions -pci:v00001734d00001078* - ID_PRODUCT_FROM_DATABASE=Amilo Pro v2010 - -pci:v00001734d00001085* - ID_PRODUCT_FROM_DATABASE=Celsius M450 - -pci:v00001734d00001098* - ID_PRODUCT_FROM_DATABASE=Amilo L 1310G - pci:v00001735* ID_VENDOR_FROM_DATABASE=Aten International Co. Ltd. @@ -43862,6 +43697,15 @@ pci:v0000177Dd00000092* pci:v0000177Dd00000093* ID_PRODUCT_FROM_DATABASE=Octeon II CN61XX Network Processor +pci:v0000177Dd00000094* + ID_PRODUCT_FROM_DATABASE=Octeon Fusion CNF71XX Cell processor + +pci:v0000177Dd00000095* + ID_PRODUCT_FROM_DATABASE=Octeon III CN78XX Network Processor + +pci:v0000177Dd00000096* + ID_PRODUCT_FROM_DATABASE=Octeon III CN70XX Network Processor + pci:v00001787* ID_VENDOR_FROM_DATABASE=Hightech Information System Ltd. @@ -44031,7 +43875,7 @@ pci:v000017C2* ID_VENDOR_FROM_DATABASE=Newisys, Inc. pci:v000017CB* - ID_VENDOR_FROM_DATABASE=Airgo Networks Inc + ID_VENDOR_FROM_DATABASE=Airgo Networks, Inc. pci:v000017CBd00000001* ID_PRODUCT_FROM_DATABASE=AGN100 802.11 a/b/g True MIMO Wireless Card @@ -45117,13 +44961,13 @@ pci:v000018F7d00000014* ID_PRODUCT_FROM_DATABASE=SuperFSCC Serial PCI Adapter [Fastcom] pci:v000018F7d00000015* - ID_PRODUCT_FROM_DATABASE=SuperFSCC-104 Serial PCI/104+ Adapter [Fastcom] + ID_PRODUCT_FROM_DATABASE=SuperFSCC-104 Serial PC/104+ Adapter [Fastcom] pci:v000018F7d00000016* ID_PRODUCT_FROM_DATABASE=FSCC-232 RS-232 Serial PCI Adapter [Fastcom] pci:v000018F7d00000017* - ID_PRODUCT_FROM_DATABASE=SuperFSCC-104-NOUART Serial PCI/104+ Adapter [Fastcom] + ID_PRODUCT_FROM_DATABASE=SuperFSCC-104 Serial PC/104+ Adapter pci:v000018F7d00000018* ID_PRODUCT_FROM_DATABASE=SuperFSCC/4 Serial PCI Adapter [Fastcom] @@ -45140,6 +44984,15 @@ pci:v000018F7d0000001B* pci:v000018F7d0000001C* ID_PRODUCT_FROM_DATABASE=SuperFSCC/4-LVDS Serial PCI Adapter [Fastcom] +pci:v000018F7d0000001D* + ID_PRODUCT_FROM_DATABASE=FSCC Serial PCI Adapter [Fastcom] + +pci:v000018F7d0000001E* + ID_PRODUCT_FROM_DATABASE=SuperFSCC/4 Serial PCIe Adapter [Fastcom] + +pci:v000018F7d0000001F* + ID_PRODUCT_FROM_DATABASE=SuperFSCC/4 Serial cPCI Adapter [Fastcom] + pci:v000018F7d00000020* ID_PRODUCT_FROM_DATABASE=422/4-PCIe Serial PCIe Adapter [Fastcom] @@ -45777,7 +45630,7 @@ pci:v00001966d00001977* ID_PRODUCT_FROM_DATABASE=DVG128 family pci:v00001969* - ID_VENDOR_FROM_DATABASE=Atheros Communications Inc. + ID_VENDOR_FROM_DATABASE=Qualcomm Atheros pci:v00001969d00001026* ID_PRODUCT_FROM_DATABASE=AR8121/AR8113/AR8114 Gigabit or Fast Ethernet @@ -45821,6 +45674,12 @@ pci:v00001969d00001091* pci:v00001969d00001091sv00001043sd00001477* ID_PRODUCT_FROM_DATABASE=N56VZ +pci:v00001969d000010A0* + ID_PRODUCT_FROM_DATABASE=QCA8172 Fast Ethernet + +pci:v00001969d000010A1* + ID_PRODUCT_FROM_DATABASE=QCA8171 Gigabit Ethernet + pci:v00001969d00002048* ID_PRODUCT_FROM_DATABASE=Attansic L2 Fast Ethernet @@ -45830,6 +45689,9 @@ pci:v00001969d00002060* pci:v00001969d00002062* ID_PRODUCT_FROM_DATABASE=AR8152 v2.0 Fast Ethernet +pci:v00001969d0000E091* + ID_PRODUCT_FROM_DATABASE=Killer E2200 Gigabit Ethernet Controller + pci:v0000196A* ID_VENDOR_FROM_DATABASE=Sensory Networks Inc. @@ -46184,6 +46046,9 @@ pci:v00001A08d00000000* pci:v00001A0E* ID_VENDOR_FROM_DATABASE=DekTec Digital Video B.V. +pci:v00001A0Ed0000083F* + ID_PRODUCT_FROM_DATABASE=DTA-2111 VHF/UHF Modulator + pci:v00001A17* ID_VENDOR_FROM_DATABASE=Force10 Networks, Inc. @@ -46653,7 +46518,7 @@ pci:v00001B4Bd000091A0* ID_PRODUCT_FROM_DATABASE=88SE91A0 SATA 6Gb/s Controller pci:v00001B4Bd000091A4* - ID_PRODUCT_FROM_DATABASE=88SE9128 IDE Controller + ID_PRODUCT_FROM_DATABASE=88SE912x IDE Controller pci:v00001B4Bd00009230* ID_PRODUCT_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller @@ -46817,6 +46682,12 @@ pci:v00001C7Fd00005100* pci:v00001C8A* ID_VENDOR_FROM_DATABASE=TSF5 Corporation +pci:v00001C8Ad00000001* + ID_PRODUCT_FROM_DATABASE=Hunter PCI Express + +pci:v00001CB1* + ID_VENDOR_FROM_DATABASE=Collion UG & Co.KG + pci:v00001D44* ID_VENDOR_FROM_DATABASE=DPT @@ -46973,9 +46844,6 @@ pci:v00002116* pci:v000021C3* ID_VENDOR_FROM_DATABASE=21st Century Computer Corp. -pci:v000022B8* - ID_VENDOR_FROM_DATABASE=Motorola, Inc. - pci:v00002304* ID_VENDOR_FROM_DATABASE=Colorgraphic Communications Corp. @@ -47003,21 +46871,12 @@ pci:v00002955* pci:v00002955d00006E61* ID_PRODUCT_FROM_DATABASE=OHCI USB 1.1 controller -pci:v000029B4* - ID_VENDOR_FROM_DATABASE=82q35 Express MEI Controller - pci:v00002A15* ID_VENDOR_FROM_DATABASE=3D Vision(???) pci:v00003000* ID_VENDOR_FROM_DATABASE=Hansol Electronics Inc. -pci:v00003020* - ID_VENDOR_FROM_DATABASE=LSI SAS2 9211-8i - -pci:v00003080* - ID_VENDOR_FROM_DATABASE=LSI SAS2 9200-8e - pci:v00003142* ID_VENDOR_FROM_DATABASE=Post Impression Systems. @@ -49877,9 +49736,12 @@ pci:v00008086d00000EB4* pci:v00008086d00000EB5* ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 3 -pci:v00008086d00000EB7* +pci:v00008086d00000EB6* ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2 +pci:v00008086d00000EB7* + ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3 + pci:v00008086d00000EC0* ID_PRODUCT_FROM_DATABASE=Ivytown Power Control Unit 0 @@ -49977,7 +49839,7 @@ pci:v00008086d00000EF2* ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 0 pci:v00008086d00000EF3* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2 + ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 1 pci:v00008086d00000EF4* ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 2 @@ -49985,6 +49847,9 @@ pci:v00008086d00000EF4* pci:v00008086d00000EF5* ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 3 +pci:v00008086d00000EF6* + ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2 + pci:v00008086d00000EF7* ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 3 @@ -51392,6 +51257,9 @@ pci:v00008086d000010D3sv0000103Csd00003250* pci:v00008086d000010D3sv000010A9sd00008029* ID_PRODUCT_FROM_DATABASE=Prism XL Single Port Gigabit Ethernet +pci:v00008086d000010D3sv000015D9sd0000060A* + ID_PRODUCT_FROM_DATABASE=X7SPA-H/X7SPA-HF Motherboard + pci:v00008086d000010D3sv00008086sd00000001* ID_PRODUCT_FROM_DATABASE=Gigabit CT2 Desktop Adapter @@ -51590,6 +51458,12 @@ pci:v00008086d000010FBsv0000103Csd000017D2* pci:v00008086d000010FBsv0000103Csd000017D3* ID_PRODUCT_FROM_DATABASE=Ethernet 10Gb 2-port 560SFP+ Adapter +pci:v00008086d000010FBsv0000103Csd0000211B* + ID_PRODUCT_FROM_DATABASE=Ethernet 10Gb 1-port P560FLR-SFP+ Adapter + +pci:v00008086d000010FBsv0000103Csd00002147* + ID_PRODUCT_FROM_DATABASE=Ethernet 10Gb 1-port 561i Adapter + pci:v00008086d000010FBsv0000108Esd00007B11* ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter X520-2 @@ -52499,6 +52373,9 @@ pci:v00008086d00001528sv00001028sd00001F61* pci:v00008086d00001528sv0000103Csd0000192D* ID_PRODUCT_FROM_DATABASE=561FLR-T 2-port 10Gb Ethernet Adapter +pci:v00008086d00001528sv0000103Csd0000211A* + ID_PRODUCT_FROM_DATABASE=Ethernet 10Gb 2-port 561T Adapter + pci:v00008086d00001528sv0000108Esd00007B14* ID_PRODUCT_FROM_DATABASE=Sun Dual Port 10 GbE PCIe 2.0 ExpressModule, Base-T @@ -53558,6 +53435,180 @@ pci:v00008086d00001E5E* pci:v00008086d00001E5F* ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller +pci:v00008086d00001F00* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F01* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F02* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F03* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F04* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F05* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F06* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F07* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F08* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F09* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F0A* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F0B* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F0C* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F0D* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F0E* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F0F* + ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F10* + ID_PRODUCT_FROM_DATABASE=Avoton PCIe Root Port 1 + +pci:v00008086d00001F11* + ID_PRODUCT_FROM_DATABASE=Avoton PCIe Root Port 2 + +pci:v00008086d00001F12* + ID_PRODUCT_FROM_DATABASE=Avoton PCIe Root Port 3 + +pci:v00008086d00001F13* + ID_PRODUCT_FROM_DATABASE=Avoton PCIe Root Port 4 + +pci:v00008086d00001F14* + ID_PRODUCT_FROM_DATABASE=Avoton RAS + +pci:v00008086d00001F15* + ID_PRODUCT_FROM_DATABASE=Avoton SMBus 2.0 + +pci:v00008086d00001F16* + ID_PRODUCT_FROM_DATABASE=Avoton RCEC + +pci:v00008086d00001F18* + ID_PRODUCT_FROM_DATABASE=Avoton nCPM + +pci:v00008086d00001F19* + ID_PRODUCT_FROM_DATABASE=Avoton nCPM + +pci:v00008086d00001F20* + ID_PRODUCT_FROM_DATABASE=Avoton 4-Port IDE SATA2 Controller + +pci:v00008086d00001F21* + ID_PRODUCT_FROM_DATABASE=Avoton 4-Port IDE SATA2 Controller + +pci:v00008086d00001F22* + ID_PRODUCT_FROM_DATABASE=Avoton AHCI SATA2 Controller + +pci:v00008086d00001F23* + ID_PRODUCT_FROM_DATABASE=Avoton AHCI SATA2 Controller + +pci:v00008086d00001F24* + ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA2 Controller + +pci:v00008086d00001F25* + ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA2 Controller + +pci:v00008086d00001F26* + ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA2 Controller + +pci:v00008086d00001F27* + ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA2 Controller + +pci:v00008086d00001F2C* + ID_PRODUCT_FROM_DATABASE=Avoton USB Enhanced Host Controller + +pci:v00008086d00001F2E* + ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA2 Controller + +pci:v00008086d00001F2F* + ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA2 Controller + +pci:v00008086d00001F30* + ID_PRODUCT_FROM_DATABASE=Avoton 2-Port IDE SATA3 Controller + +pci:v00008086d00001F31* + ID_PRODUCT_FROM_DATABASE=Avoton 2-Port IDE SATA3 Controller + +pci:v00008086d00001F32* + ID_PRODUCT_FROM_DATABASE=Avoton AHCI SATA3 Controller + +pci:v00008086d00001F33* + ID_PRODUCT_FROM_DATABASE=Avoton AHCI SATA3 Controller + +pci:v00008086d00001F34* + ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA3 Controller + +pci:v00008086d00001F35* + ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA3 Controller + +pci:v00008086d00001F36* + ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA3 Controller + +pci:v00008086d00001F37* + ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA3 Controller + +pci:v00008086d00001F38* + ID_PRODUCT_FROM_DATABASE=Avoton PCU + +pci:v00008086d00001F39* + ID_PRODUCT_FROM_DATABASE=Avoton PCU + +pci:v00008086d00001F3A* + ID_PRODUCT_FROM_DATABASE=Avoton PCU + +pci:v00008086d00001F3B* + ID_PRODUCT_FROM_DATABASE=Avoton PCU + +pci:v00008086d00001F3C* + ID_PRODUCT_FROM_DATABASE=Avoton PCU SMBus + +pci:v00008086d00001F3D* + ID_PRODUCT_FROM_DATABASE=Avoton PCU SMBus + +pci:v00008086d00001F3E* + ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA3 Controller + +pci:v00008086d00001F3F* + ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA3 Controller + +pci:v00008086d00001F40* + ID_PRODUCT_FROM_DATABASE=Avoton GbE x4 1000base-KX + +pci:v00008086d00001F41* + ID_PRODUCT_FROM_DATABASE=Avoton GbE x4 SGMII + +pci:v00008086d00001F42* + ID_PRODUCT_FROM_DATABASE=Avoton GbE + +pci:v00008086d00001F43* + ID_PRODUCT_FROM_DATABASE=Avoton GbE EEPROM-less + +pci:v00008086d00001F44* + ID_PRODUCT_FROM_DATABASE=Avoton GbE Virtual Function + +pci:v00008086d00001F45* + ID_PRODUCT_FROM_DATABASE=Avoton GbE 2500base-KX + pci:v00008086d00002310* ID_PRODUCT_FROM_DATABASE=DH89xxCC LPC Controller @@ -57695,9 +57746,6 @@ pci:v00008086d000027E2* pci:v00008086d000027E2sv00001775sd000011CC* ID_PRODUCT_FROM_DATABASE=CC11/CL11 -pci:v00008086d00002802* - ID_PRODUCT_FROM_DATABASE=82GL40 [Cantiga] High Definition Audio HDMI Service - pci:v00008086d00002810* ID_PRODUCT_FROM_DATABASE=82801HB/HR (ICH8/R) LPC Interface Controller @@ -60032,6 +60080,381 @@ pci:v00008086d00002E95* pci:v00008086d00002E96* ID_PRODUCT_FROM_DATABASE=4 Series Chipset PT IDER Controller +pci:v00008086d00002F00* + ID_PRODUCT_FROM_DATABASE=Haswell-E DMI2 + +pci:v00008086d00002F01* + ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 0 + +pci:v00008086d00002F02* + ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 1 + +pci:v00008086d00002F03* + ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 1 + +pci:v00008086d00002F04* + ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 2 + +pci:v00008086d00002F05* + ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 2 + +pci:v00008086d00002F06* + ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 2 + +pci:v00008086d00002F07* + ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 2 + +pci:v00008086d00002F08* + ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 3 + +pci:v00008086d00002F09* + ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 3 + +pci:v00008086d00002F0A* + ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 3 + +pci:v00008086d00002F0B* + ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 3 + +pci:v00008086d00002F1D* + ID_PRODUCT_FROM_DATABASE=Haswell-E PCIe Ring Interface + +pci:v00008086d00002F1E* + ID_PRODUCT_FROM_DATABASE=Haswell-E Scratchpad & Semaphore Registers + +pci:v00008086d00002F1F* + ID_PRODUCT_FROM_DATABASE=Haswell-E Scratchpad & Semaphore Registers + +pci:v00008086d00002F20* + ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 0 + +pci:v00008086d00002F21* + ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 1 + +pci:v00008086d00002F22* + ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 2 + +pci:v00008086d00002F23* + ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 3 + +pci:v00008086d00002F24* + ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 4 + +pci:v00008086d00002F25* + ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 5 + +pci:v00008086d00002F26* + ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 6 + +pci:v00008086d00002F27* + ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 7 + +pci:v00008086d00002F28* + ID_PRODUCT_FROM_DATABASE=Haswell-E Address Map, VTd_Misc, System Management + +pci:v00008086d00002F29* + ID_PRODUCT_FROM_DATABASE=Haswell-E Hot Plug + +pci:v00008086d00002F2A* + ID_PRODUCT_FROM_DATABASE=Haswell-E RAS, Control Status and Global Errors + +pci:v00008086d00002F2C* + ID_PRODUCT_FROM_DATABASE=Haswell-E I/O Apic + +pci:v00008086d00002F2E* + ID_PRODUCT_FROM_DATABASE=Haswell-E RAID 5/6 + +pci:v00008086d00002F2F* + ID_PRODUCT_FROM_DATABASE=Haswell-E RAID 5/6 + +pci:v00008086d00002F30* + ID_PRODUCT_FROM_DATABASE=Haswell-E Home Agent 0 + +pci:v00008086d00002F32* + ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 0 + +pci:v00008086d00002F33* + ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 1 + +pci:v00008086d00002F34* + ID_PRODUCT_FROM_DATABASE=Haswell-E PCIe Ring Interface + +pci:v00008086d00002F36* + ID_PRODUCT_FROM_DATABASE=Haswell-E R3 QPI Link 0 & 1 Monitoring + +pci:v00008086d00002F37* + ID_PRODUCT_FROM_DATABASE=Haswell-E R3 QPI Link 0 & 1 Monitoring + +pci:v00008086d00002F38* + ID_PRODUCT_FROM_DATABASE=Haswell-E Home Agent 1 + +pci:v00008086d00002F3A* + ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 2 + +pci:v00008086d00002F3E* + ID_PRODUCT_FROM_DATABASE=Haswell-E R3 QPI Link 2 Monitoring + +pci:v00008086d00002F3F* + ID_PRODUCT_FROM_DATABASE=Haswell-E R3 QPI Link 2 Monitoring + +pci:v00008086d00002F40* + ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 2 + +pci:v00008086d00002F41* + ID_PRODUCT_FROM_DATABASE=Haswell-E R3 QPI Link 2 Monitoring + +pci:v00008086d00002F43* + ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 2 + +pci:v00008086d00002F60* + ID_PRODUCT_FROM_DATABASE=Haswell-E Home Agent 1 + +pci:v00008086d00002F68* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Target Address, Thermal & RAS Registers + +pci:v00008086d00002F6A* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel Target Address Decoder + +pci:v00008086d00002F6B* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel Target Address Decoder + +pci:v00008086d00002F6C* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel Target Address Decoder + +pci:v00008086d00002F6D* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel Target Address Decoder + +pci:v00008086d00002F6E* + ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO Channel 2/3 Broadcast + +pci:v00008086d00002F6F* + ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO Global Broadcast + +pci:v00008086d00002F71* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Target Address, Thermal & RAS Registers + +pci:v00008086d00002F79* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Target Address, Thermal & RAS Registers + +pci:v00008086d00002F7D* + ID_PRODUCT_FROM_DATABASE=Haswell-E Scratchpad & Semaphore Registers + +pci:v00008086d00002F80* + ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 0 + +pci:v00008086d00002F81* + ID_PRODUCT_FROM_DATABASE=Haswell-E R3 QPI Link 0 & 1 Monitoring + +pci:v00008086d00002F83* + ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 0 + +pci:v00008086d00002F90* + ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 1 + +pci:v00008086d00002F93* + ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 1 + +pci:v00008086d00002FA0* + ID_PRODUCT_FROM_DATABASE=Haswell-E Home Agent 0 + +pci:v00008086d00002FA8* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Target Address, Thermal & RAS Registers + +pci:v00008086d00002FAA* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel Target Address Decoder + +pci:v00008086d00002FAB* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel Target Address Decoder + +pci:v00008086d00002FAC* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel Target Address Decoder + +pci:v00008086d00002FAD* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel Target Address Decoder + +pci:v00008086d00002FAE* + ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO Channel 0/1 Broadcast + +pci:v00008086d00002FAF* + ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO Global Broadcast + +pci:v00008086d00002FB0* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 0 Thermal Control + +pci:v00008086d00002FB1* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 1 Thermal Control + +pci:v00008086d00002FB2* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 0 ERROR Registers + +pci:v00008086d00002FB3* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 1 ERROR Registers + +pci:v00008086d00002FB4* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 2 Thermal Control + +pci:v00008086d00002FB5* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 3 Thermal Control + +pci:v00008086d00002FB8* + ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 2 & 3 + +pci:v00008086d00002FB9* + ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 2 & 3 + +pci:v00008086d00002FBA* + ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 2 & 3 + +pci:v00008086d00002FBB* + ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 2 & 3 + +pci:v00008086d00002FBC* + ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 0 & 1 + +pci:v00008086d00002FBD* + ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 0 & 1 + +pci:v00008086d00002FBE* + ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 0 & 1 + +pci:v00008086d00002FBF* + ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 0 & 1 + +pci:v00008086d00002FC0* + ID_PRODUCT_FROM_DATABASE=Haswell-E Power Control Unit + +pci:v00008086d00002FC1* + ID_PRODUCT_FROM_DATABASE=Haswell-E Power Control Unit + +pci:v00008086d00002FC2* + ID_PRODUCT_FROM_DATABASE=Power Control Unit + +pci:v00008086d00002FC3* + ID_PRODUCT_FROM_DATABASE=Power Control Unit + +pci:v00008086d00002FC4* + ID_PRODUCT_FROM_DATABASE=Power Control Unit + +pci:v00008086d00002FC5* + ID_PRODUCT_FROM_DATABASE=Power Control Unit + +pci:v00008086d00002FD0* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 0 Thermal Control + +pci:v00008086d00002FD1* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 1 Thermal Control + +pci:v00008086d00002FD2* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 0 ERROR Registers + +pci:v00008086d00002FD3* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 1 ERROR Registers + +pci:v00008086d00002FD4* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 2 Thermal Control + +pci:v00008086d00002FD5* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 3 Thermal Control + +pci:v00008086d00002FD6* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 2 ERROR Registers + +pci:v00008086d00002FD7* + ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 3 ERROR Registers + +pci:v00008086d00002FE0* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE1* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE2* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE3* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE4* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE5* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE6* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE7* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE8* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE9* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FEA* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FEB* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FEC* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FED* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FEE* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FEF* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF0* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF1* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF2* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF3* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF4* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF5* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF6* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF7* + ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF8* + ID_PRODUCT_FROM_DATABASE=Haswell-E Buffered Ring Agent + +pci:v00008086d00002FF9* + ID_PRODUCT_FROM_DATABASE=Haswell-E Buffered Ring Agent + +pci:v00008086d00002FFA* + ID_PRODUCT_FROM_DATABASE=Haswell-E Buffered Ring Agent + +pci:v00008086d00002FFB* + ID_PRODUCT_FROM_DATABASE=Haswell-E Buffered Ring Agent + +pci:v00008086d00002FFC* + ID_PRODUCT_FROM_DATABASE=Haswell-E System Address Decoder & Broadcast Registers + +pci:v00008086d00002FFD* + ID_PRODUCT_FROM_DATABASE=Haswell-E System Address Decoder & Broadcast Registers + +pci:v00008086d00002FFE* + ID_PRODUCT_FROM_DATABASE=Haswell-E System Address Decoder & Broadcast Registers + pci:v00008086d00003200* ID_PRODUCT_FROM_DATABASE=GD31244 PCI-X SATA HBA @@ -63545,36 +63968,6 @@ pci:v00008322* pci:v00008384* ID_VENDOR_FROM_DATABASE=SigmaTel -pci:v00008384d00007618* - ID_PRODUCT_FROM_DATABASE=High Definition Audio Codec - -pci:v00008384d00007634* - ID_PRODUCT_FROM_DATABASE=9250 HD Audio Codec - -pci:v00008384d00007662* - ID_PRODUCT_FROM_DATABASE=High Definition Audio Codec - -pci:v00008384d00007662sv0000104Dsd00001E00* - ID_PRODUCT_FROM_DATABASE=High Definition Audio Codec [STAC9872AK] - -pci:v00008384d00007664* - ID_PRODUCT_FROM_DATABASE=High Definition Audio Codec - -pci:v00008384d00007670* - ID_PRODUCT_FROM_DATABASE=9770 High Definition Audio - -pci:v00008384d00007672* - ID_PRODUCT_FROM_DATABASE=9772 High Definition Audio - -pci:v00008384d00007682* - ID_PRODUCT_FROM_DATABASE=IDT High Definition Audio Codec - -pci:v00008384d00007690* - ID_PRODUCT_FROM_DATABASE=9200 HD Audio Codec - -pci:v00008384d00007690sv00001028sd000001C1* - ID_PRODUCT_FROM_DATABASE=Precision 490 - pci:v00008401* ID_VENDOR_FROM_DATABASE=TRENDware International Inc. @@ -64676,6 +65069,15 @@ pci:v00009005d0000801Fsv00001734sd00001011* pci:v00009005d00008080* ID_PRODUCT_FROM_DATABASE=ASC-29320A U320 w/HostRAID +pci:v00009005d00008081* + ID_PRODUCT_FROM_DATABASE=PMC-Sierra PM8001 SAS HBA [Series 6H] + +pci:v00009005d00008088* + ID_PRODUCT_FROM_DATABASE=PMC-Sierra PM8018 SAS HBA [Series 7H] + +pci:v00009005d00008089* + ID_PRODUCT_FROM_DATABASE=PMC-Sierra PM8019 SAS encryption HBA [Series 7He] + pci:v00009005d0000808F* ID_PRODUCT_FROM_DATABASE=AIC-7901 U320 w/HostRAID @@ -64746,7 +65148,7 @@ pci:v00009699d00006565* ID_PRODUCT_FROM_DATABASE=6565 pci:v00009710* - ID_VENDOR_FROM_DATABASE=NetMos Technology + ID_VENDOR_FROM_DATABASE=MosChip Semiconductor Technology Ltd. pci:v00009710d00009250* ID_PRODUCT_FROM_DATABASE=PCI-to-PCI bridge [MCS9250] @@ -65453,9 +65855,6 @@ pci:v0000FEDE* pci:v0000FEDEd00000003* ID_PRODUCT_FROM_DATABASE=TABIC PCI v3 -pci:v0000FFEE* - ID_VENDOR_FROM_DATABASE=FNK Tech - pci:v0000FFFD* ID_VENDOR_FROM_DATABASE=XenSource, Inc. -- cgit v1.2.1 From 85d683970b7dc2c4470b2b7d60c3d9dce28c1471 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 20:25:12 +0100 Subject: update NEWS --- NEWS | 255 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 255 insertions(+) diff --git a/NEWS b/NEWS index b04f1b5bc7..6f58020d5f 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,260 @@ systemd System and Service Manager +CHANGES WITH 198: + + * Configuration of unit files may now be extended via drop-in + files without having to edit/override the unit files + themselves. More specifically, if the administrator wants to + change one value for a service file foobar.service he can + now do so by dropping in a configuration snippet into + /etc/systemd/systemd/foobar.service.d/*.conf. The unit logic + will load all these snippets and apply them on top of the + main unit configuration file, possibly extending or + overriding its settings. Using these drop-in snippets is + generally nicer than the two earler options for changing + unit files locally: copying the files form + /usr/lib/systemd/system/ to /etc/systemd/system/ and editing + them there; or creating a new file in /etc/systemd/system/ + that incorporates the original one via ".include". Drop-in + snippets into these .d/ directories can be placed in any + directory systems looks for units in, and the usual + overriding semantics between /usr/lib, /etc and /run apply + for them too. + + * Most unit file settings which take lists of items can now be + reset by assigning the empty strings to them. For example, + normally, settings such as Environment=FOO=BAR append a new + environment variable assignment to the environment block, + each time they are used. By assigning Environment= the empty + string the environment block can be reset to empty. This is + particularly useful with the .d/*.conf drop-in snippets + mentioned above, since this allows resetting list settings + from vendor unit files via these drop-ins. + + * systemctl gained a new "list-dependencies" command for + listing the dependencies of a unit recursively. + + * Inhibitors are now honoured and listed by "systemctl + suspend", "systemctl poweroff" (and similar) too, not only + GNOME. These commands will also list active sessions by + other users. + + * Resource limits (as exposed by the various control group + controllers) can now be controlled dynamically at runtime + for all units. More specifically, you can now use a command + like "systemctl set-cgroup-attr foobar.service cpu.shares + 2000" to alter the CPU shares a specific service gets. These + settings are stores persistently on disk, and thus allow the + administrator to easily adjust the resource usage of + services with a few simple commands. This dynamic resource + management logic is also available to other services via the + bus. Almost any kernel cgroup attribute and controller is + supported. + + * systemd-vconsole-setup will now copy all font settings to + all open VTs, where it previously applied them only to the + foreground VT. + + * libsystemd-login gained the new sd_session_get_tty() API + call. + + * This release drops support with a few + legacy/distribution-specific LSB facility names when parsing + init scripts: $x-display-manager, $mail-transfer-agent, + $mail-transport-agent, $mail-transfer-agent, $smtp, + $null. Also, the mail-transfer-agent.target unit backing + this has been removed. Distributions which want to retain + compatibility with this should carry the burden for support + this themselves and patch support for these back in if they + really need to. Also, the facilities $syslog and $local_fs + are now ignored, since systemd does not support early-boot + LSB init scripts anymore, and these facilities are implied + anyway for normal services. syslog.target has also been + removed hence. + + * There ar new bus calls on PID1's Manager object for + canceling jobs, and removing snapshot units. Previously, + both calls were only available on the Job and Snapshot + objects themselves. + + * systemd-journal-gatewayd gained SSL support. + + * The various "environment" files, such as /etc/locale.conf + now support continuation lines with a backslash ("\") as + last character in the line, similar in style (but different) + to how this is supported in shells. + + * For normal user processes the _SYSTEMD_USER_UNIT= field is + now implicitly appended to every log entry logged. systemctl + has been updated to filter by this field when operating on a + user systemd instance. + + * nspawn will now implicitly add the CAP_AUDIT_WRITE and + CAP_AUDIT_CONTROL capabilities to the capabilities set for + the container. This makes it easier to boot unmodified + Fedora systems in a container, which however still requires + audit=0 to be passed on the kernel command line. Auditing in + kernel and userspace is unfortunately still too broken in + context of containers, hence we recommend compiling it out + of the kernel or using audit=0. Hopefully this will be fixed + one day for good in the kernel. + + * nspawn gained the new --bind= and --bind-ro= parameters to + bind mount specific directories from the host into the + container. + + * nspawn will not mount its own devpts file system instance + into the container, in order not to leaker pty devices from + the host into the container. + + * systemd will now read the firmware boot time performance + from the EFI variables, if the used boot loader supports + this, and take it into account for boot performance analysis + via "systemd-analyze". This is currently supported only in + conjunction with Gummiboot, but could be supported by other + boot loaders too. For details, see: + + http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface + + * A new generator has been added that automatically mounts the + EFI System Partition (ESP) to /boot, if that directory + exists, is empty, and no other partition has been configured + to be mounted there. + + * logind will now send out PrepareForSleep(false) out + unconditionally, after coming back from suspend. This may be + used by applications as asynchronous notification for + system resume events. + + * "systemctl unlock-sessions" has been added, that allows + unlocking the screens of all user sessions at once, similar + how "systemctl lock-sessions" already locked all users + sessions. This is backed by a new D-Bus call + UnlockSessions(). + + * "loginctl seat-status" will now show the master device of a + seat. (i.e. the device of a seat that needs to be around for + the seat to be considered available, usually the graphics + card). + + * tmpfiles gained a new "X" line type, that allows + configuration of files and directories (with wildcards) that + shall be excluded from automatic cleanup ("aging"). + + * udev permission rules are now only applied for "add" rules, + no longer for "change" events. + + * The log messages for lid events and power/sleep keypresses + now carry a message ID. + + * We now have a substantially larger unit test suite, but this + continues to be work in progress. + + * udevadm hwdb gained a new --root= parameter to change the + root directory to operate relative to. + + * logind will now issue a sync() request to the kernel early + at shutdown, so that dirty buffers are flushed to disk early + instead of at the last moment, in order to optimize shutdown + times a little. + + * A new bootctl tool has been added that is an interface for + certain boot loader operations. This is currently a preview + and is likely to be extended into a small mechanism daemon + like timedated, localed, hostnamed, and can be used by + graphical UIs to enumerate available boot options, and + request boot into firmware operations. + + * systemd-bootchart has been relicensed to LGPLv2.1+ to match + the rest of the package. It also has been updated to work + correctly in initrds. + + * Policykit previously has been runtime optional, and is now + also compile time optional via a configure switch. + + * systemd-analyze has been reimplemented in C. Also "systemctl + dot" has moved into systemd-analyze. + + * "systemctl status" with no further parameters will now print + the status of all active or failed units. + + * Operations such as "systemctl start" can now be executed + with a new mode "--irreversible" which may be used to queue + operations that cannot accidentally be reversed by a later + job queuing. This is by default use to make shutdown + requests more robust. + + * The Python API of systemd now gained a new module for + reading journal files. + + * A new tool kernel-install has been added that can install + kernel images according to the Boot Loader Specification: + + http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec + + * Boot time console output has been improved to provide + animated boot time output. + + * A new tool systemd-activate has been added which can be used + to test socket activation with, directly from the command + line. This should make it much easier to test and debug + socket activation in daemons. + + * journalctl gained a new "--reverse" (or -r) option to show + journal output in reverse order (i.e. newest line first). + + * journalctl gained a new "--user-unit=" option, that works + similar to "--unit=" but filters for user units rather than + system units. + + * A number of unit files to ease adoption of systemd in + initrds has been added. This moves some minimal logic from + the various initrd implementations into systemd proper. + + * The journal files are now owned by a new group + "systemd-journal", which exists specifically to allow access + to the journal, and nothing else. Previously, we used the + "adm" group for that, which however possible covers more + than just journal/log file access. This new group is now + already used by systemd-journal-gatewayd to ensure this + daemon gets access to the journal files and as little else + as possible. Note that "make install" will also set FS ACLs + up for /var/log/journal to give "adm" and "wheel" read + access to it, in addition to "systemd-journal" which owns + the journal files. We recommend that packaging scripts also + add read access to "adm", "wheel" to /var/log/journal, and + all existing/future journal files. To normal users and + administrators little changes, however packagers need to + ensure to create the "systemd-journal" system group at + package installation time. + + * The systemd-journal-gatewayd now runs as unprivileged user + systemd-journal-gateway:systemd-journal-gateway. Packaging + scripts need to create these system user/group at + installation time. + + * timedated now exposes a new boolean property CanNTP that + indicates whether a local NTP service is available or not. + + * systemd-detect-virt will now also detect xen PVs + + * The pstore file system is now mounted by default, if it is available. + + Contributions from: Adel Gadllah, Aleksander Morgado, Auke + Kok, Ayan George, Bastien Nocera, Colin Walters, Daniel Buch, + Daniel Wallace, Dave Reisner, David Herrmann, David Strauss, + Eelco Dolstra, Enrico Scholz, Frederic Crozat, Harald Hoyer, + Jan Janssen, Jonathan Callen, Kay Sievers, Lennart Poettering, + Lukas Nykryn, Mantas Mikulėnas, Marc-Antoine Perennou, Martin + Pitt, Mauro Dreissig, Max F. Albrecht, Michael Biebl, Michael + Olbrich, Michal Schmidt, Michal Sekletar, Michal Vyskocil, + Michał Bartoszkiewicz, Mirco Tischler, Nathaniel Chen, Nestor + Ovroy, Oleksii Shevchuk, Paul W. Frields, Piotr Drąg, Rob + Clark, Ryan Lortie, Simon McVittie, Simon Peeters, Steven + Hiscocks, Thomas Hindoe Paaboel Andersen, Tollef Fog Heen, Tom + Gundersen, Umut Tezduyar, William Giokas, Zbigniew + Jędrzejewski-Szmek, Zeeshan Ali (Khattak) + CHANGES WITH 197: * Timer units now support calendar time events in addition to -- cgit v1.2.1 From 40e21da873c120936faff0aa42a6533f6933edf7 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 7 Mar 2013 20:39:12 +0100 Subject: TODO: update --- NEWS | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/NEWS b/NEWS index 6f58020d5f..ea16a659d7 100644 --- a/NEWS +++ b/NEWS @@ -11,8 +11,8 @@ CHANGES WITH 198: will load all these snippets and apply them on top of the main unit configuration file, possibly extending or overriding its settings. Using these drop-in snippets is - generally nicer than the two earler options for changing - unit files locally: copying the files form + generally nicer than the two earlier options for changing + unit files locally: copying the files from /usr/lib/systemd/system/ to /etc/systemd/system/ and editing them there; or creating a new file in /etc/systemd/system/ that incorporates the original one via ".include". Drop-in @@ -34,7 +34,7 @@ CHANGES WITH 198: * systemctl gained a new "list-dependencies" command for listing the dependencies of a unit recursively. - * Inhibitors are now honoured and listed by "systemctl + * Inhibitors are now honored and listed by "systemctl suspend", "systemctl poweroff" (and similar) too, not only GNOME. These commands will also list active sessions by other users. @@ -70,9 +70,9 @@ CHANGES WITH 198: are now ignored, since systemd does not support early-boot LSB init scripts anymore, and these facilities are implied anyway for normal services. syslog.target has also been - removed hence. + removed. - * There ar new bus calls on PID1's Manager object for + * There are new bus calls on PID1's Manager object for canceling jobs, and removing snapshot units. Previously, both calls were only available on the Job and Snapshot objects themselves. @@ -103,8 +103,8 @@ CHANGES WITH 198: bind mount specific directories from the host into the container. - * nspawn will not mount its own devpts file system instance - into the container, in order not to leaker pty devices from + * nspawn will now mount its own devpts file system instance + into the container, in order not to leake pty devices from the host into the container. * systemd will now read the firmware boot time performance @@ -112,7 +112,7 @@ CHANGES WITH 198: this, and take it into account for boot performance analysis via "systemd-analyze". This is currently supported only in conjunction with Gummiboot, but could be supported by other - boot loaders too. For details, see: + boot loaders too. For details see: http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface @@ -129,8 +129,7 @@ CHANGES WITH 198: * "systemctl unlock-sessions" has been added, that allows unlocking the screens of all user sessions at once, similar how "systemctl lock-sessions" already locked all users - sessions. This is backed by a new D-Bus call - UnlockSessions(). + sessions. This is backed by a new D-Bus call UnlockSessions(). * "loginctl seat-status" will now show the master device of a seat. (i.e. the device of a seat that needs to be around for @@ -141,7 +140,7 @@ CHANGES WITH 198: configuration of files and directories (with wildcards) that shall be excluded from automatic cleanup ("aging"). - * udev permission rules are now only applied for "add" rules, + * udev permission rules are now only applied for "add" events, no longer for "change" events. * The log messages for lid events and power/sleep keypresses @@ -153,8 +152,8 @@ CHANGES WITH 198: * udevadm hwdb gained a new --root= parameter to change the root directory to operate relative to. - * logind will now issue a sync() request to the kernel early - at shutdown, so that dirty buffers are flushed to disk early + * logind will now issue a background sync() request to the kernel + early at shutdown, so that dirty buffers are flushed to disk early instead of at the last moment, in order to optimize shutdown times a little. @@ -238,7 +237,8 @@ CHANGES WITH 198: * systemd-detect-virt will now also detect xen PVs - * The pstore file system is now mounted by default, if it is available. + * The pstore file system is now mounted by default, if it is + available. Contributions from: Adel Gadllah, Aleksander Morgado, Auke Kok, Ayan George, Bastien Nocera, Colin Walters, Daniel Buch, -- cgit v1.2.1 From bf9335608821264163058a8b036a00775a8ffbe4 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 7 Mar 2013 20:44:26 +0100 Subject: NEWS: update --- NEWS | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index ea16a659d7..fbaf7bd471 100644 --- a/NEWS +++ b/NEWS @@ -140,8 +140,9 @@ CHANGES WITH 198: configuration of files and directories (with wildcards) that shall be excluded from automatic cleanup ("aging"). - * udev permission rules are now only applied for "add" events, - no longer for "change" events. + * udev default rules set the device node permissions now only + at "add" events, and do not change them any longer with a + later "change" event. * The log messages for lid events and power/sleep keypresses now carry a message ID. -- cgit v1.2.1 From 8f838d8aab0c5480664de04dce0171de4f4c7b00 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Thu, 7 Mar 2013 11:06:57 -0800 Subject: core: move mount_setup_early() to main.c move mount_setup_early() call to main.c, before security module setup, so there are no more repeat calls. --- src/core/ima-setup.c | 5 ----- src/core/main.c | 1 + src/core/selinux-setup.c | 3 --- 3 files changed, 1 insertion(+), 8 deletions(-) diff --git a/src/core/ima-setup.c b/src/core/ima-setup.c index e8cc1ba8b6..7f8ec23d58 100644 --- a/src/core/ima-setup.c +++ b/src/core/ima-setup.c @@ -50,11 +50,6 @@ int ima_setup(void) { int policyfd = -1, imafd = -1; int result = 0; -#ifndef HAVE_SELINUX - /* Mount the securityfs filesystem */ - mount_setup_early(); -#endif - if (stat(IMA_POLICY_PATH, &st) < 0) return 0; diff --git a/src/core/main.c b/src/core/main.c index 1c2453c9b1..24d8d3e982 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1357,6 +1357,7 @@ int main(int argc, char *argv[]) { } if (!skip_setup) { + mount_setup_early(); if (selinux_setup(&loaded_policy) < 0) goto finish; if (ima_setup() < 0) diff --git a/src/core/selinux-setup.c b/src/core/selinux-setup.c index e9c0de92f1..0723d7c8ba 100644 --- a/src/core/selinux-setup.c +++ b/src/core/selinux-setup.c @@ -58,9 +58,6 @@ int selinux_setup(bool *loaded_policy) { cb.func_log = null_log; selinux_set_callback(SELINUX_CB_LOG, cb); - /* Make sure getcon() works, which needs /proc and /sys */ - mount_setup_early(); - /* Already initialized by somebody else? */ r = getcon_raw(&con); if (r == 0) { -- cgit v1.2.1 From ffbd2c4d45787ba5ba85a32db6551efba66a1ee6 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Thu, 7 Mar 2013 11:06:58 -0800 Subject: core: mount and initialize Smack SMACK is the Simple Mandatory Access Control Kernel, a minimal approach to Access Control implemented as a kernel LSM. The kernel exposes the smackfs filesystem API through which access rules can be loaded. At boot time, we want to load the access rules as early as possible to ensure all early boot steps are checked by Smack. This patch mounts smackfs at the new location at /sys/fs/smackfs for kernels 3.8 and above. The /smack mountpoint is not supported. After mounting smackfs, rules are loaded from the usual location. For more information about Smack see: http://www.kernel.org/doc/Documentation/security/Smack.txt --- Makefile.am | 2 ++ README | 2 ++ src/core/main.c | 3 ++ src/core/mount-setup.c | 4 ++- src/core/smack-setup.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/core/smack-setup.h | 26 ++++++++++++++ 6 files changed, 134 insertions(+), 1 deletion(-) create mode 100644 src/core/smack-setup.c create mode 100644 src/core/smack-setup.h diff --git a/Makefile.am b/Makefile.am index 7e408798a6..3f64937732 100644 --- a/Makefile.am +++ b/Makefile.am @@ -842,6 +842,8 @@ libsystemd_core_la_SOURCES = \ src/core/selinux-access.h \ src/core/selinux-setup.c \ src/core/selinux-setup.h \ + src/core/smack-setup.c \ + src/core/smack-setup.h \ src/core/ima-setup.c \ src/core/ima-setup.h \ src/core/locale-setup.h \ diff --git a/README b/README index 5649a51689..9d7a54769d 100644 --- a/README +++ b/README @@ -44,6 +44,8 @@ REQUIREMENTS: CONFIG_NET CONFIG_SYSFS + Linux kernel >= 3.8 for Smack support + Udev will fail to work with the legacy layout: CONFIG_SYSFS_DEPRECATED=n diff --git a/src/core/main.c b/src/core/main.c index 24d8d3e982..727a410740 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -67,6 +67,7 @@ #include "selinux-setup.h" #include "ima-setup.h" #include "fileio.h" +#include "smack-setup.h" static enum { ACTION_RUN, @@ -1362,6 +1363,8 @@ int main(int argc, char *argv[]) { goto finish; if (ima_setup() < 0) goto finish; + if (smack_setup() < 0) + goto finish; } if (label_init(NULL) < 0) diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index dab3601467..42cdc6dc52 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -66,7 +66,7 @@ typedef struct MountPoint { /* The first three entries we might need before SELinux is up. The * fourth (securityfs) is needed by IMA to load a custom policy. The * other ones we can delay until SELinux and IMA are loaded. */ -#define N_EARLY_MOUNT 4 +#define N_EARLY_MOUNT 5 static const MountPoint mount_table[] = { { "proc", "/proc", "proc", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, @@ -77,6 +77,8 @@ static const MountPoint mount_table[] = { NULL, MNT_FATAL|MNT_IN_CONTAINER }, { "securityfs", "/sys/kernel/security", "securityfs", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_NONE }, + { "smackfs", "/sys/fs/smackfs", "smackfs", "smackfsdef=*", MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME, + NULL, MNT_NONE }, { "tmpfs", "/dev/shm", "tmpfs", "mode=1777", MS_NOSUID|MS_NODEV|MS_STRICTATIME, NULL, MNT_FATAL|MNT_IN_CONTAINER }, { "devpts", "/dev/pts", "devpts", "mode=620,gid=" STRINGIFY(TTY_GID), MS_NOSUID|MS_NOEXEC, diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c new file mode 100644 index 0000000000..88e6437445 --- /dev/null +++ b/src/core/smack-setup.c @@ -0,0 +1,98 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright (C) 2013 Intel Corporation + Authors: + Nathaniel Chen + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, + or (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "macro.h" +#include "smack-setup.h" +#include "util.h" +#include "log.h" +#include "label.h" + +#define ACCESSES_D_PATH "/etc/smack/accesses.d/" + +int smack_setup(void) { + _cleanup_fclose_ FILE *smack = NULL; + _cleanup_closedir_ DIR *dir = NULL; + struct dirent *entry; + char buf[NAME_MAX]; + int dfd = -1; + + smack = fopen("/sys/fs/smackfs/load2", "we"); + if (!smack) { + log_info("Smack is not enabled in the kernel, not loading access rules."); + return 0; + } + + /* write rules to load2 from every file in the directory */ + dir = opendir(ACCESSES_D_PATH); + if (!dir) { + log_info("Smack access rules directory not found: " ACCESSES_D_PATH); + return 0; + } + + dfd = dirfd(dir); + if (dfd < 0) { + log_error("Smack access rules directory " ACCESSES_D_PATH " not opened: %m"); + return 0; + } + + FOREACH_DIRENT(entry, dir, return 0) { + _cleanup_fclose_ FILE *policy = NULL; + _cleanup_close_ int pol = -1; + + pol = openat(dfd, entry->d_name, O_RDONLY|O_CLOEXEC); + if (pol < 0) { + log_error("Smack access rule file %s not opened: %m", entry->d_name); + continue; + } + + policy = fdopen(pol, "re"); + if (!policy) { + log_error("Smack access rule file %s not opened: %m", entry->d_name); + continue; + } + + pol = -1; + + /* load2 write rules in the kernel require a line buffered stream */ + FOREACH_LINE(buf, policy, log_error("Failed to read from Smack access rule file %s: %m", entry->d_name)) { + fputs(buf, smack); + fflush(smack); + } + } + + log_info("Successfully loaded Smack policies."); + + return 0; +} diff --git a/src/core/smack-setup.h b/src/core/smack-setup.h new file mode 100644 index 0000000000..ffe91843c3 --- /dev/null +++ b/src/core/smack-setup.h @@ -0,0 +1,26 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright (C) 2013 Intel Corporation + Authors: + Nathaniel Chen + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published + by the Free Software Foundation; either version 2.1 of the License, + or (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +int smack_setup(void); -- cgit v1.2.1 From 0ea9530d401827e299c6e04a433e69a7a2a89d80 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Thu, 7 Mar 2013 11:09:16 -0800 Subject: bootchart: use _cleanup_close_ use _cleanup_{close_,fclose_} to close streams and file descriptors --- src/bootchart/bootchart.c | 8 +++----- src/bootchart/svg.c | 5 +---- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 65f16c517c..0ad14dc37d 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -66,10 +66,10 @@ struct cpu_stat_struct cpustat[MAXCPUS]; int pscount; int cpus; double interval; -FILE *of = NULL; +FILE _cleanup_fclose_ *of = NULL; int overrun = 0; static int exiting = 0; -int sysfd=-1; +int _cleanup_close_ sysfd=-1; /* graph defaults */ bool entropy = false; @@ -106,7 +106,7 @@ int main(int argc, char *argv[]) char datestr[200]; time_t t = 0; const char *fn; - _cleanup_fclose_ FILE *f; + _cleanup_fclose_ FILE *f = NULL; int gind; int i, r; char *init = NULL, *output = NULL; @@ -378,10 +378,8 @@ int main(int argc, char *argv[]) svg_do(build); fprintf(stderr, "systemd-bootchart wrote %s\n", output_file); - fclose(of); closedir(proc); - close(sysfd); /* nitpic cleanups */ ps = ps_first; diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index 9fee810795..79476716a6 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -150,7 +150,7 @@ static void svg_title(const char *build) char date[256] = "Unknown"; char cpu[256] = "Unknown"; char *c; - FILE *f; + FILE _cleanup_fclose_ *f = NULL; time_t t; int fd; struct utsname uts; @@ -161,7 +161,6 @@ static void svg_title(const char *build) if (f) { if (!fgets(cmdline, 255, f)) sprintf(cmdline, "Unknown"); - fclose(f); } /* extract root fs so we can find disk model name in sysfs */ @@ -176,7 +175,6 @@ static void svg_title(const char *build) if (f) { if (!fgets(model, 255, f)) fprintf(stderr, "Error reading disk model for %s\n", rootbdev); - fclose(f); } } @@ -198,7 +196,6 @@ static void svg_title(const char *build) break; } } - fclose(f); } svg("Bootchart for %s - %s\n", -- cgit v1.2.1 From 1aed45907715ad4dce7dbc84a957cd5de8cca36e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 20:46:27 +0100 Subject: update NEWS --- NEWS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/NEWS b/NEWS index fbaf7bd471..99fb50fd2b 100644 --- a/NEWS +++ b/NEWS @@ -241,6 +241,9 @@ CHANGES WITH 198: * The pstore file system is now mounted by default, if it is available. + * In addition to the SELinux and IMA policies we will now also + load SMACK policies at early boot. + Contributions from: Adel Gadllah, Aleksander Morgado, Auke Kok, Ayan George, Bastien Nocera, Colin Walters, Daniel Buch, Daniel Wallace, Dave Reisner, David Herrmann, David Strauss, -- cgit v1.2.1 From 247c873b421291f711d8a57796011520a6b790af Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 20:46:35 +0100 Subject: update TODO --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index f4c0dd5fb6..1cc69b901a 100644 --- a/TODO +++ b/TODO @@ -48,6 +48,8 @@ Fedora 19: Features: +* safe_atod() is too naive, as it is vulnerable to locale parameters, should be locale independent. + * neither pkexec nor sudo initialize environ[] from the PAM environment? * rework specifier logic so that we can distuingish OOM errors from other errors -- cgit v1.2.1 From fd86897568f7a1aed7ffe4c54ace6c158ddbdf7d Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 7 Mar 2013 21:04:30 +0100 Subject: poettering: small typo in the NEWS file: directory systems looks for <- systemd the sentence reads a bit strange "looks for units in" " by assigning the empty strings to them" <- an empty string or the empty string "this allows resetting" <- I was told this is not correct English, too: "this allows one to reset" --- NEWS | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 99fb50fd2b..04a97d2c36 100644 --- a/NEWS +++ b/NEWS @@ -17,18 +17,18 @@ CHANGES WITH 198: them there; or creating a new file in /etc/systemd/system/ that incorporates the original one via ".include". Drop-in snippets into these .d/ directories can be placed in any - directory systems looks for units in, and the usual + directory systemd looks for units in, and the usual overriding semantics between /usr/lib, /etc and /run apply for them too. * Most unit file settings which take lists of items can now be - reset by assigning the empty strings to them. For example, + reset by assigning an empty strings to them. For example, normally, settings such as Environment=FOO=BAR append a new environment variable assignment to the environment block, each time they are used. By assigning Environment= the empty string the environment block can be reset to empty. This is particularly useful with the .d/*.conf drop-in snippets - mentioned above, since this allows resetting list settings + mentioned above, since this allows to reset list settings from vendor unit files via these drop-ins. * systemctl gained a new "list-dependencies" command for -- cgit v1.2.1 From 156f7d09add8fc93cae8a3f13adcb2564931fee4 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 7 Mar 2013 21:07:52 +0100 Subject: NEWS: update "this allows resetting" <- I was told this is not correct English, too: "this allows one to reset" "adds the ability to reset"? --- NEWS | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index 04a97d2c36..673db06f32 100644 --- a/NEWS +++ b/NEWS @@ -28,8 +28,8 @@ CHANGES WITH 198: each time they are used. By assigning Environment= the empty string the environment block can be reset to empty. This is particularly useful with the .d/*.conf drop-in snippets - mentioned above, since this allows to reset list settings - from vendor unit files via these drop-ins. + mentioned above, since this adds the ability to reset list + settings from vendor unit files via these drop-ins. * systemctl gained a new "list-dependencies" command for listing the dependencies of a unit recursively. -- cgit v1.2.1 From 6aa8d43ade72e24c9426e604f7fc4b7582b9db7c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 21:08:04 +0100 Subject: update NEWS --- NEWS | 56 ++++++++++++++++++++++++++++---------------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/NEWS b/NEWS index 673db06f32..23caab9db2 100644 --- a/NEWS +++ b/NEWS @@ -22,7 +22,7 @@ CHANGES WITH 198: for them too. * Most unit file settings which take lists of items can now be - reset by assigning an empty strings to them. For example, + reset by assigning the empty string to them. For example, normally, settings such as Environment=FOO=BAR append a new environment variable assignment to the environment block, each time they are used. By assigning Environment= the empty @@ -44,36 +44,36 @@ CHANGES WITH 198: for all units. More specifically, you can now use a command like "systemctl set-cgroup-attr foobar.service cpu.shares 2000" to alter the CPU shares a specific service gets. These - settings are stores persistently on disk, and thus allow the + settings are stored persistently on disk, and thus allow the administrator to easily adjust the resource usage of services with a few simple commands. This dynamic resource - management logic is also available to other services via the + management logic is also available to other programs via the bus. Almost any kernel cgroup attribute and controller is supported. * systemd-vconsole-setup will now copy all font settings to - all open VTs, where it previously applied them only to the - foreground VT. + all allocated VTs, where it previously applied them only to + the foreground VT. * libsystemd-login gained the new sd_session_get_tty() API call. - * This release drops support with a few - legacy/distribution-specific LSB facility names when parsing - init scripts: $x-display-manager, $mail-transfer-agent, + * This release drops support for a few legacy or + distribution-specific LSB facility names when parsing init + scripts: $x-display-manager, $mail-transfer-agent, $mail-transport-agent, $mail-transfer-agent, $smtp, $null. Also, the mail-transfer-agent.target unit backing this has been removed. Distributions which want to retain - compatibility with this should carry the burden for support - this themselves and patch support for these back in if they - really need to. Also, the facilities $syslog and $local_fs - are now ignored, since systemd does not support early-boot - LSB init scripts anymore, and these facilities are implied - anyway for normal services. syslog.target has also been - removed. + compatibility with this should carry the burden for + supporting this themselves and patch support for these back + in, if they really need to. Also, the facilities $syslog and + $local_fs are now ignored, since systemd does not support + early-boot LSB init scripts anymore, and these facilities + are implied anyway for normal services. syslog.target has + also been removed. * There are new bus calls on PID1's Manager object for - canceling jobs, and removing snapshot units. Previously, + cancelling jobs, and removing snapshot units. Previously, both calls were only available on the Job and Snapshot objects themselves. @@ -104,22 +104,22 @@ CHANGES WITH 198: container. * nspawn will now mount its own devpts file system instance - into the container, in order not to leake pty devices from + into the container, in order not to leak pty devices from the host into the container. * systemd will now read the firmware boot time performance - from the EFI variables, if the used boot loader supports - this, and take it into account for boot performance analysis - via "systemd-analyze". This is currently supported only in - conjunction with Gummiboot, but could be supported by other - boot loaders too. For details see: + information from the EFI variables, if the used boot loader + supports this, and takes it into account for boot performance + analysis via "systemd-analyze". This is currently supported + only in conjunction with Gummiboot, but could be supported + by other boot loaders too. For details see: http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface * A new generator has been added that automatically mounts the EFI System Partition (ESP) to /boot, if that directory - exists, is empty, and no other partition has been configured - to be mounted there. + exists, is empty, and no other file system has been + configured to be mounted there. * logind will now send out PrepareForSleep(false) out unconditionally, after coming back from suspend. This may be @@ -181,7 +181,7 @@ CHANGES WITH 198: * Operations such as "systemctl start" can now be executed with a new mode "--irreversible" which may be used to queue operations that cannot accidentally be reversed by a later - job queuing. This is by default use to make shutdown + job queuing. This is by default used to make shutdown requests more robust. * The Python API of systemd now gained a new module for @@ -193,7 +193,7 @@ CHANGES WITH 198: http://www.freedesktop.org/wiki/Specifications/BootLoaderSpec * Boot time console output has been improved to provide - animated boot time output. + animated boot time output for hanging jobs. * A new tool systemd-activate has been added which can be used to test socket activation with, directly from the command @@ -214,7 +214,7 @@ CHANGES WITH 198: * The journal files are now owned by a new group "systemd-journal", which exists specifically to allow access to the journal, and nothing else. Previously, we used the - "adm" group for that, which however possible covers more + "adm" group for that, which however possibly covers more than just journal/log file access. This new group is now already used by systemd-journal-gatewayd to ensure this daemon gets access to the journal files and as little else @@ -222,7 +222,7 @@ CHANGES WITH 198: up for /var/log/journal to give "adm" and "wheel" read access to it, in addition to "systemd-journal" which owns the journal files. We recommend that packaging scripts also - add read access to "adm", "wheel" to /var/log/journal, and + add read access to "adm" + "wheel" to /var/log/journal, and all existing/future journal files. To normal users and administrators little changes, however packagers need to ensure to create the "systemd-journal" system group at -- cgit v1.2.1 From 1b12a7b5896f94bdf33b3a6661ebabd761ea6adc Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 7 Mar 2013 20:44:35 +0100 Subject: pager: introduce "jump to end" option $ journalctl -be is what you want :) https://bugzilla.redhat.com/show_bug.cgi?id=867841 --- man/journalctl.xml | 14 ++++++++++++++ src/cgls/cgls.c | 2 +- src/delta/delta.c | 2 +- src/journal/coredumpctl.c | 2 +- src/journal/journalctl.c | 11 +++++++++-- src/locale/localectl.c | 2 +- src/login/loginctl.c | 2 +- src/shared/pager.c | 7 +++++-- src/shared/pager.h | 2 +- src/systemctl/systemctl.c | 2 +- src/timedate/timedatectl.c | 2 +- 11 files changed, 36 insertions(+), 12 deletions(-) diff --git a/man/journalctl.xml b/man/journalctl.xml index e2740e4213..201f66a3b5 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -162,6 +162,20 @@ the journal. + + + + + Immediately jump to + the end of the journal inside the + implied pager tool. Very useful in + combination with the + option. Note that + this is only supported for the + less1 + pager. + + diff --git a/src/cgls/cgls.c b/src/cgls/cgls.c index a05f9795be..e649b75df6 100644 --- a/src/cgls/cgls.c +++ b/src/cgls/cgls.c @@ -132,7 +132,7 @@ int main(int argc, char *argv[]) { } if (!arg_no_pager) { - r = pager_open(); + r = pager_open(false); if (r > 0) { if (arg_full == -1) arg_full = true; diff --git a/src/delta/delta.c b/src/delta/delta.c index 16b10021b7..aec3dc8995 100644 --- a/src/delta/delta.c +++ b/src/delta/delta.c @@ -454,7 +454,7 @@ int main(int argc, char *argv[]) { arg_flags |= SHOW_OVERRIDDEN; if (!arg_no_pager) - pager_open(); + pager_open(false); if (optind < argc) { int i; diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c index b6e558186d..8bfab0075f 100644 --- a/src/journal/coredumpctl.c +++ b/src/journal/coredumpctl.c @@ -560,7 +560,7 @@ int main(int argc, char *argv[]) { case ACTION_LIST: if (!arg_no_pager) - pager_open(); + pager_open(false); r = dump_list(j); break; diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index c90fecd239..5fb2db3ba5 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -56,6 +56,7 @@ #define DEFAULT_FSS_INTERVAL_USEC (15*USEC_PER_MINUTE) static OutputMode arg_output = OUTPUT_SHORT; +static bool arg_pager_end = false; static bool arg_follow = false; static bool arg_full = false; static bool arg_all = false; @@ -103,6 +104,7 @@ static int help(void) { " -u --unit=UNIT Show data only from the specified unit\n" " --user-unit=UNIT Show data only from the specified user session unit\n" " -p --priority=RANGE Show only messages within the specified priority range\n" + " -e --pager-end Immediately jump to end of the journal in the pager\n" " -f --follow Follow journal\n" " -n --lines[=INTEGER] Number of journal entries to show\n" " --no-tail Show all lines, even in follow mode\n" @@ -163,6 +165,7 @@ static int parse_argv(int argc, char *argv[]) { { "help", no_argument, NULL, 'h' }, { "version" , no_argument, NULL, ARG_VERSION }, { "no-pager", no_argument, NULL, ARG_NO_PAGER }, + { "pager-end", no_argument, NULL, 'e' }, { "follow", no_argument, NULL, 'f' }, { "output", required_argument, NULL, 'o' }, { "all", no_argument, NULL, 'a' }, @@ -199,7 +202,7 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); - while ((c = getopt_long(argc, argv, "hfo:an::qmbD:p:c:u:F:xr", options, NULL)) >= 0) { + while ((c = getopt_long(argc, argv, "hefo:an::qmbD:p:c:u:F:xr", options, NULL)) >= 0) { switch (c) { @@ -216,6 +219,10 @@ static int parse_argv(int argc, char *argv[]) { arg_no_pager = true; break; + case 'e': + arg_pager_end = true; + break; + case 'f': arg_follow = true; break; @@ -1075,7 +1082,7 @@ int main(int argc, char *argv[]) { } if (!arg_no_pager && !arg_follow) - pager_open(); + pager_open(arg_pager_end); if (!arg_quiet) { usec_t start, end; diff --git a/src/locale/localectl.c b/src/locale/localectl.c index ce31e1ffce..9f996dbc98 100644 --- a/src/locale/localectl.c +++ b/src/locale/localectl.c @@ -53,7 +53,7 @@ static void pager_open_if_enabled(void) { if (arg_no_pager) return; - pager_open(); + pager_open(false); } static void polkit_agent_open_if_enabled(void) { diff --git a/src/login/loginctl.c b/src/login/loginctl.c index 473c77b92d..fe27003a92 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -58,7 +58,7 @@ static void pager_open_if_enabled(void) { if (arg_no_pager) return; - pager_open(); + pager_open(false); } static void polkit_agent_open_if_enabled(void) { diff --git a/src/shared/pager.c b/src/shared/pager.c index 5165d2b1c8..4ffb530e93 100644 --- a/src/shared/pager.c +++ b/src/shared/pager.c @@ -44,7 +44,7 @@ _noreturn_ static void pager_fallback(void) { _exit(EXIT_SUCCESS); } -int pager_open(void) { +int pager_open(bool jump_to_end) { int fd[2]; const char *pager; pid_t parent_pid; @@ -85,7 +85,10 @@ int pager_open(void) { dup2(fd[0], STDIN_FILENO); close_pipe(fd); - setenv("LESS", "FRSXK", 0); + if (jump_to_end) + setenv("LESS", "FRSXK+G", 0); + else + setenv("LESS", "FRSXK", 0); /* Make sure the pager goes away when the parent dies */ if (prctl(PR_SET_PDEATHSIG, SIGTERM) < 0) diff --git a/src/shared/pager.h b/src/shared/pager.h index 5e7b5ab91e..325ca98f79 100644 --- a/src/shared/pager.h +++ b/src/shared/pager.h @@ -23,6 +23,6 @@ #include -int pager_open(void); +int pager_open(bool jump_to_end); void pager_close(void); bool pager_have(void); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 72e9c5539b..4a55c566ec 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -136,7 +136,7 @@ static void pager_open_if_enabled(void) { if (arg_no_pager) return; - pager_open(); + pager_open(false); } static void ask_password_agent_open_if_enabled(void) { diff --git a/src/timedate/timedatectl.c b/src/timedate/timedatectl.c index f5b5f0ca84..ef2ea08300 100644 --- a/src/timedate/timedatectl.c +++ b/src/timedate/timedatectl.c @@ -51,7 +51,7 @@ static void pager_open_if_enabled(void) { if (arg_no_pager) return; - pager_open(); + pager_open(false); } static void polkit_agent_open_if_enabled(void) { -- cgit v1.2.1 From 43447fb72693d62363a1a271dacc70d400ed685b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 21:28:05 +0100 Subject: Update NEWS --- NEWS | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/NEWS b/NEWS index 23caab9db2..00e0098878 100644 --- a/NEWS +++ b/NEWS @@ -203,6 +203,10 @@ CHANGES WITH 198: * journalctl gained a new "--reverse" (or -r) option to show journal output in reverse order (i.e. newest line first). + * journalctl gained a new "--pager-end" (or -e) option to jump + to immediately jump to the end of the journal in the + pager. This is only supported in conjunction with "less". + * journalctl gained a new "--user-unit=" option, that works similar to "--unit=" but filters for user units rather than system units. -- cgit v1.2.1 From a4c41bf3fa905c38e6e4d159c13eed890d53838b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 21:28:09 +0100 Subject: pager: always override LESS https://bugzilla.redhat.com/show_bug.cgi?id=868383 Primary reason to do this is to ensure "-e" works as intended, and is not ignored because the user set his own LESS variable. --- src/shared/pager.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shared/pager.c b/src/shared/pager.c index 4ffb530e93..e9aa022a73 100644 --- a/src/shared/pager.c +++ b/src/shared/pager.c @@ -86,9 +86,9 @@ int pager_open(bool jump_to_end) { close_pipe(fd); if (jump_to_end) - setenv("LESS", "FRSXK+G", 0); + setenv("LESS", "FRSXK+G", 1); else - setenv("LESS", "FRSXK", 0); + setenv("LESS", "FRSXK", 1); /* Make sure the pager goes away when the parent dies */ if (prctl(PR_SET_PDEATHSIG, SIGTERM) < 0) -- cgit v1.2.1 From e91fb201c7114f971b645c1f862e0ba890093704 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Mar 2013 14:42:27 -0500 Subject: build-sys: move sphinx output to docs/python-systemd And on fd.o it goes into a dir parallel to man/. --- Makefile.am | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index 3f64937732..c1c8cdbad7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3513,8 +3513,8 @@ PAPER = $(shell cat /etc/papersize 2>/dev/null || echo a4) SPHINXOPTS = -D latex_paper_size=$(PAPER) sphinx-%: $(AM_V_at)test -n "$(SPHINX_BUILD)" || { echo " *** sphinx-build is not available"; exit 1; } - $(AM_V_GEN)PYTHONPATH=$(DESTDIR)$(pyexecdir) LD_LIBRARY_PATH=$(DESTDIR)$(libdir) $(SPHINX_BUILD) -b $* $(SPHINXOPTS) $(top_srcdir)/src/python-systemd/docs $(top_builddir)/man/python-systemd/ - $(AM_V_at)echo Output has been generated in $(abs_top_builddir)/man/python-systemd/ + $(AM_V_GEN)PYTHONPATH=$(DESTDIR)$(pyexecdir) LD_LIBRARY_PATH=$(DESTDIR)$(libdir) $(SPHINX_BUILD) -b $* $(SPHINXOPTS) $(top_srcdir)/src/python-systemd/docs $(top_builddir)/docs/python-systemd/ + $(AM_V_at)echo Output has been generated in $(abs_top_builddir)/docs/python-systemd/ destdir-sphinx: all dir="$$(mktemp -d /tmp/systemd-install.XXXXXX)" && \ @@ -3850,7 +3850,7 @@ doc-sync: all destdir-sphinx gtkdoc-rebase --html-dir=docs/gudev/html --online rsync -av --delete docs/gudev/html/ --omit-dir-times $(www_target)/gudev/ rsync -av --delete-excluded --include="*.html" --exclude="*" --omit-dir-times man/ $(www_target)/man/ - rsync -av --delete --omit-dir-times man/python-systemd/ $(www_target)/man/python-systemd/ + rsync -av --delete --omit-dir-times docs/python-systemd/ $(www_target)/python-systemd/ git-tag: git tag "v$(VERSION)" -m "systemd $(VERSION)" -- cgit v1.2.1 From 2cc8d9731aff3e401bc6a5a243f20fec123d48e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Mar 2013 13:13:44 -0500 Subject: man/*.html: link to directives, python, guvev, libudev in headers Since the HTML files are in different directories during build and on fd.o, links are broken in the build directory. This could be fixed by moving stuff around, or by modifying the files during upload, but I think that people do not usually create HTML files for local browsing, and this is not necessary. --- man/custom-html.xsl | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/man/custom-html.xsl b/man/custom-html.xsl index 906ddc5572..c612baf4d8 100644 --- a/man/custom-html.xsl +++ b/man/custom-html.xsl @@ -40,6 +40,30 @@ index.html Index + · + + + systemd.directives.html + + Directives + · + + + ../python-systemd/index.html + + Python + · + + + ../libudev/index.html + + libudev + · + + + ../libudev/index.html + + gudev
-- cgit v1.2.1 From 516424a411925d8141e1f72422f85ffb1639d5ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Mar 2013 15:27:30 -0500 Subject: systemd-python: fix typos --- src/python-systemd/_reader.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 42029abd46..52e6b1c7a5 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -164,7 +164,7 @@ static PyObject* Reader_reliable_fd(Reader *self, PyObject *args) } PyDoc_STRVAR(Reader_close__doc__, - "reliable_fd() -> None\n\n" + "close() -> None\n\n" "Free resources allocated by this Reader object.\n" "This method invokes sd_journal_close().\n" "See man:sd_journal_close(3)."); @@ -428,7 +428,7 @@ static PyObject* Reader_seek_head(Reader *self, PyObject *args) PyDoc_STRVAR(Reader_seek_tail__doc__, "seek_tail() -> None\n\n" - "Jump to the beginning of the journal.\n" + "Jump to the end of the journal.\n" "This method invokes sd_journal_seek_tail().\n" "See man:sd_journal_seek_tail(3)."); static PyObject* Reader_seek_tail(Reader *self, PyObject *args) -- cgit v1.2.1 From db7f1dde30068bd980c78db77867b6956f5295e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Mar 2013 15:32:33 -0500 Subject: systemd-python: fix segfault on double close --- TODO | 2 ++ src/python-systemd/_reader.c | 1 + 2 files changed, 3 insertions(+) diff --git a/TODO b/TODO index 1cc69b901a..4419582e25 100644 --- a/TODO +++ b/TODO @@ -570,6 +570,8 @@ Features: - allow reading of only select fields in systemd.journal._reader.Reader - export sd_journal_test_cursor in systemd.journal._reader.Reader - export sd_journal_get_usage in systemd.journal._reader.Reader + - add systemd.journal._reader._Reader.closed attribute (it can + be just "return self->j != NULL") - figure out a simple way to wait for journal events in a way that works with ^C diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 52e6b1c7a5..160ab69a3c 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -171,6 +171,7 @@ PyDoc_STRVAR(Reader_close__doc__, static PyObject* Reader_close(Reader *self, PyObject *args) { sd_journal_close(self->j); + self->j = NULL; Py_RETURN_NONE; } -- cgit v1.2.1 From 1f3523baf7418adf3b2738b3917ef956a8414ab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Mar 2013 15:28:03 -0500 Subject: Revert "bootchart: use _cleanup_close_" This reverts commit 0ea9530d401827e299c6e04a433e69a7a2a89d80. attribute(cleanup) can only be used inside functions (*of, sysfd are leaked). Cleanup functions are only called once when exiting scope (*f is leaked twice). --- src/bootchart/bootchart.c | 8 +++++--- src/bootchart/svg.c | 5 ++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 0ad14dc37d..65f16c517c 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -66,10 +66,10 @@ struct cpu_stat_struct cpustat[MAXCPUS]; int pscount; int cpus; double interval; -FILE _cleanup_fclose_ *of = NULL; +FILE *of = NULL; int overrun = 0; static int exiting = 0; -int _cleanup_close_ sysfd=-1; +int sysfd=-1; /* graph defaults */ bool entropy = false; @@ -106,7 +106,7 @@ int main(int argc, char *argv[]) char datestr[200]; time_t t = 0; const char *fn; - _cleanup_fclose_ FILE *f = NULL; + _cleanup_fclose_ FILE *f; int gind; int i, r; char *init = NULL, *output = NULL; @@ -378,8 +378,10 @@ int main(int argc, char *argv[]) svg_do(build); fprintf(stderr, "systemd-bootchart wrote %s\n", output_file); + fclose(of); closedir(proc); + close(sysfd); /* nitpic cleanups */ ps = ps_first; diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index 79476716a6..9fee810795 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -150,7 +150,7 @@ static void svg_title(const char *build) char date[256] = "Unknown"; char cpu[256] = "Unknown"; char *c; - FILE _cleanup_fclose_ *f = NULL; + FILE *f; time_t t; int fd; struct utsname uts; @@ -161,6 +161,7 @@ static void svg_title(const char *build) if (f) { if (!fgets(cmdline, 255, f)) sprintf(cmdline, "Unknown"); + fclose(f); } /* extract root fs so we can find disk model name in sysfs */ @@ -175,6 +176,7 @@ static void svg_title(const char *build) if (f) { if (!fgets(model, 255, f)) fprintf(stderr, "Error reading disk model for %s\n", rootbdev); + fclose(f); } } @@ -196,6 +198,7 @@ static void svg_title(const char *build) break; } } + fclose(f); } svg("Bootchart for %s - %s\n", -- cgit v1.2.1 From b47ef6a085bf06a12116422bb023f48a9eaf3379 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 21:42:25 +0100 Subject: pager: add -M to $LESS to make the bottom line nicer --- src/shared/pager.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shared/pager.c b/src/shared/pager.c index e9aa022a73..8dddf24f4c 100644 --- a/src/shared/pager.c +++ b/src/shared/pager.c @@ -86,9 +86,9 @@ int pager_open(bool jump_to_end) { close_pipe(fd); if (jump_to_end) - setenv("LESS", "FRSXK+G", 1); + setenv("LESS", "FRSXMK+G", 1); else - setenv("LESS", "FRSXK", 1); + setenv("LESS", "FRSXMK", 1); /* Make sure the pager goes away when the parent dies */ if (prctl(PR_SET_PDEATHSIG, SIGTERM) < 0) -- cgit v1.2.1 From 2e4015f3e73173a4346c03a1ed7962f7d3423ed2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 21:48:17 +0100 Subject: update TODO --- TODO | 1 + 1 file changed, 1 insertion(+) diff --git a/TODO b/TODO index 4419582e25..47c91fdc58 100644 --- a/TODO +++ b/TODO @@ -196,6 +196,7 @@ Features: - journalctl: show multiline log messages sanely, expand tabs, and show all valid utf8 messages - journal: store euid in journal if it differs from uid - journal: sanely deal with entries which are larger than the individual file size, but where the components would fit + - journalctl: make journalctl smarter, and actually check groups that have access to /var/log/journal before printing message about recomming group membership for journal access * document: - document unit_name_mangle() -- cgit v1.2.1 From fe59e38bef69568c385d10761132458606cdd896 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 21:49:12 +0100 Subject: journalctl: imply -n1000 when -e is used Make sure the pager does not have to buffer an unbounded number of log messages, by default. --- man/journalctl.xml | 12 ++++++++---- src/journal/journalctl.c | 4 ++++ 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/man/journalctl.xml b/man/journalctl.xml index 201f66a3b5..3db5e5dab6 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -168,10 +168,14 @@ Immediately jump to the end of the journal inside the - implied pager tool. Very useful in - combination with the - option. Note that - this is only supported for the + implied pager tool. This implies + to guarantee + that the pager won't buffer logs of + unbounded size. This may be overriden + with an explicit + with some other numeric value on the + command line. Note that this option is + only supported for the less1 pager.
diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 5fb2db3ba5..3682329e46 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -221,6 +221,10 @@ static int parse_argv(int argc, char *argv[]) { case 'e': arg_pager_end = true; + + if (arg_lines < 0) + arg_lines = 1000; + break; case 'f': -- cgit v1.2.1 From 01ec23582dc0523831059fc05bedde16efd06576 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 21:53:53 +0100 Subject: build-sys: bump release and sonames --- Makefile.am | 8 ++++---- configure.ac | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile.am b/Makefile.am index c1c8cdbad7..05bf582e26 100644 --- a/Makefile.am +++ b/Makefile.am @@ -32,16 +32,16 @@ SUBDIRS = . po .SECONDARY: LIBUDEV_CURRENT=3 -LIBUDEV_REVISION=1 +LIBUDEV_REVISION=2 LIBUDEV_AGE=2 LIBGUDEV_CURRENT=1 LIBGUDEV_REVISION=3 LIBGUDEV_AGE=1 -LIBSYSTEMD_LOGIN_CURRENT=3 -LIBSYSTEMD_LOGIN_REVISION=11 -LIBSYSTEMD_LOGIN_AGE=3 +LIBSYSTEMD_LOGIN_CURRENT=4 +LIBSYSTEMD_LOGIN_REVISION=0 +LIBSYSTEMD_LOGIN_AGE=4 LIBSYSTEMD_DAEMON_CURRENT=0 LIBSYSTEMD_DAEMON_REVISION=7 diff --git a/configure.ac b/configure.ac index 43b8225285..28d7286c83 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ AC_PREREQ([2.64]) AC_INIT([systemd], - [197], + [198], [http://bugs.freedesktop.org/enter_bug.cgi?product=systemd], [systemd], [http://www.freedesktop.org/wiki/Software/systemd]) -- cgit v1.2.1 From ab17a050b778412b11c82f4fa974be9c491ead36 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 22:18:34 +0100 Subject: core: if we cannot JOB_ISOLATE the default target JOB_REPLACE it instead In order to maintain compatibility with older initrds which do not have AllowIsolate=yes set for their target units, fallback to JOB_REPLACE if JOB_ISOLATE doesn't work, but complain about it. --- src/core/main.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/core/main.c b/src/core/main.c index 727a410740..7b039835a8 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1736,11 +1736,22 @@ int main(int argc, char *argv[]) { } r = manager_add_job(m, JOB_START, target, JOB_ISOLATE, false, &error, &default_unit_job); - if (r < 0) { - log_error("Failed to start default target: %s", bus_error(&error, r)); + if (r == -EPERM) { + log_error("Default target could not be isolated, starting instead: %s", bus_error(&error, r)); + dbus_error_free(&error); + + r = manager_add_job(m, JOB_START, target, JOB_REPLACE, false, &error, &default_unit_job); + if (r < 0) { + log_error("Failed to start default target: %s", bus_error(&error, r)); + dbus_error_free(&error); + goto finish; + } + } else if (r < 0) { + log_error("Failed to isolate default target: %s", bus_error(&error, r)); dbus_error_free(&error); goto finish; } + m->default_unit_job_id = default_unit_job->id; after_startup = now(CLOCK_MONOTONIC); -- cgit v1.2.1 From dbd73f9eb41f992905def875ed64ae0cfd5cef47 Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Thu, 7 Mar 2013 22:45:22 +0100 Subject: test-util: add more tests Improve test coverage a bit with tests for close_many strappend (to cover all ways through strnappend) --- src/test/test-util.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/src/test/test-util.c b/src/test/test-util.c index 789fc089fe..cd017ef6fc 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -21,6 +21,8 @@ ***/ #include +#include +#include #include "util.h" @@ -43,6 +45,29 @@ static void test_first_word(void) { assert_se(!first_word("Hellooo", "Hello")); } +static void test_close_many(void) { + int fds[3]; + char name0[] = "/tmp/test-close-many.XXXXXX"; + char name1[] = "/tmp/test-close-many.XXXXXX"; + char name2[] = "/tmp/test-close-many.XXXXXX"; + + fds[0] = mkstemp(name0); + fds[1] = mkstemp(name1); + fds[2] = mkstemp(name2); + + close_many(fds, 2); + + assert_se(fcntl(fds[0], F_GETFD) == -1); + assert_se(fcntl(fds[1], F_GETFD) == -1); + assert_se(fcntl(fds[2], F_GETFD) >= 0); + + close_nointr_nofail(fds[2]); + + unlink(name0); + unlink(name1); + unlink(name2); +} + static void test_parse_boolean(void) { assert_se(parse_boolean("1") == 1); assert_se(parse_boolean("y") == 1); @@ -129,6 +154,22 @@ static void test_safe_atod(void) { assert_se(r == -EINVAL); } +static void test_strappend(void) { + _cleanup_free_ char *t1, *t2, *t3, *t4; + + t1 = strappend(NULL, NULL); + assert_se(streq(t1, "")); + + t2 = strappend(NULL, "suf"); + assert_se(streq(t2, "suf")); + + t3 = strappend("pre", NULL); + assert_se(streq(t3, "pre")); + + t4 = strappend("pre", "suf"); + assert_se(streq(t4, "presuf")); +} + static void test_strstrip(void) { char *r; char input[] = " hello, waldo. "; @@ -287,11 +328,13 @@ static void test_bus_path_escape(void) { int main(int argc, char *argv[]) { test_streq_ptr(); test_first_word(); + test_close_many(); test_parse_boolean(); test_parse_pid(); test_parse_uid(); test_safe_atolli(); test_safe_atod(); + test_strappend(); test_strstrip(); test_delete_chars(); test_in_charset(); -- cgit v1.2.1 From 0be8342c04bbf129b4a21e5073eacccbbce4e896 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 7 Mar 2013 13:39:57 +0100 Subject: update TODO --- TODO | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/TODO b/TODO index 47c91fdc58..b2428d2c94 100644 --- a/TODO +++ b/TODO @@ -50,6 +50,11 @@ Features: * safe_atod() is too naive, as it is vulnerable to locale parameters, should be locale independent. +* think about requeuing jobs when daemon-reload is issued? usecase: + the initrd issues a reload after fstab from the host is accessible + and we might want to requeue the mounts local-fs acquired through + that automatically. + * neither pkexec nor sudo initialize environ[] from the PAM environment? * rework specifier logic so that we can distuingish OOM errors from other errors -- cgit v1.2.1 From 5f1be48b264e4d556f688062cc6f4a1e03f9f455 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Wed, 6 Mar 2013 14:17:59 +0100 Subject: shared: remove pointless checks in auto-cleanup functions The argument given to the __attribute__((cleanup)) functions is the address of the variable that's going out of scope. It cannot be NULL. The "if (!s)" check in set_freep() is pointless. Perhaps "if (!*s)" was intented. But that's pointless too, because set_free()/set_free_free() are OK to call with a NULL argument (just like free()). Setting "*s = NULL" is pointless, because the variable that s points to is about to go out of scope. The same holds for strv_freep(). --- src/shared/set.c | 8 -------- src/shared/strv.c | 4 ---- 2 files changed, 12 deletions(-) diff --git a/src/shared/set.c b/src/shared/set.c index cd910d70ab..111d53bb36 100644 --- a/src/shared/set.c +++ b/src/shared/set.c @@ -38,11 +38,7 @@ void set_free(Set* s) { } void set_freep(Set **s) { - if (!s) - return; - set_free(*s); - *s = NULL; } void set_free_free(Set *s) { @@ -50,11 +46,7 @@ void set_free_free(Set *s) { } void set_free_freep(Set **s) { - if (!*s) - return; - set_free_free(*s); - *s = NULL; } int set_ensure_allocated(Set **s, hash_func_t hash_func, compare_func_t compare_func) { diff --git a/src/shared/strv.c b/src/shared/strv.c index 60c4762572..117382ed80 100644 --- a/src/shared/strv.c +++ b/src/shared/strv.c @@ -65,11 +65,7 @@ void strv_free(char **l) { } void strv_freep(char ***l) { - if (!l) - return; - strv_free(*l); - *l = NULL; } char **strv_copy(char **l) { -- cgit v1.2.1 From a740c14c59907f370a6b3a3ba5a86fada88cb07e Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Wed, 6 Mar 2013 14:44:51 +0100 Subject: shared: inline trivial auto-cleanup functions --- src/shared/set.c | 8 -------- src/shared/set.h | 10 ++++++++-- src/shared/strv.c | 4 ---- src/shared/strv.h | 5 ++++- src/shared/util.c | 8 -------- src/shared/util.h | 9 +++++++-- 6 files changed, 19 insertions(+), 25 deletions(-) diff --git a/src/shared/set.c b/src/shared/set.c index 111d53bb36..5f83c50839 100644 --- a/src/shared/set.c +++ b/src/shared/set.c @@ -37,18 +37,10 @@ void set_free(Set* s) { hashmap_free(MAKE_HASHMAP(s)); } -void set_freep(Set **s) { - set_free(*s); -} - void set_free_free(Set *s) { hashmap_free_free(MAKE_HASHMAP(s)); } -void set_free_freep(Set **s) { - set_free_free(*s); -} - int set_ensure_allocated(Set **s, hash_func_t hash_func, compare_func_t compare_func) { return hashmap_ensure_allocated((Hashmap**) s, hash_func, compare_func); } diff --git a/src/shared/set.h b/src/shared/set.h index 2f792585fa..38c4b58a80 100644 --- a/src/shared/set.h +++ b/src/shared/set.h @@ -33,9 +33,15 @@ typedef struct Set Set; Set *set_new(hash_func_t hash_func, compare_func_t compare_func); void set_free(Set* s); -void set_freep(Set **s); +static inline void set_freep(Set **s) { + set_free(*s); +} + void set_free_free(Set *s); -void set_free_freep(Set **s); +static inline void set_free_freep(Set **s) { + set_free_free(*s); +} + Set* set_copy(Set *s); int set_ensure_allocated(Set **s, hash_func_t hash_func, compare_func_t compare_func); diff --git a/src/shared/strv.c b/src/shared/strv.c index 117382ed80..7bcfabbf1a 100644 --- a/src/shared/strv.c +++ b/src/shared/strv.c @@ -64,10 +64,6 @@ void strv_free(char **l) { free(l); } -void strv_freep(char ***l) { - strv_free(*l); -} - char **strv_copy(char **l) { char **r, **k; diff --git a/src/shared/strv.h b/src/shared/strv.h index 623f10216d..da9fae6edb 100644 --- a/src/shared/strv.h +++ b/src/shared/strv.h @@ -30,7 +30,10 @@ char *strv_find(char **l, const char *name); char *strv_find_prefix(char **l, const char *name); void strv_free(char **l); -void strv_freep(char ***l); +static inline void strv_freep(char ***l) { + strv_free(*l); +} + char **strv_copy(char **l) _malloc_; unsigned strv_length(char **l); diff --git a/src/shared/util.c b/src/shared/util.c index c493a34877..594f8de755 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5237,10 +5237,6 @@ int get_shell(char **_sh) { return 0; } -void freep(void *p) { - free(*(void**) p); -} - void fclosep(FILE **f) { if (*f) fclose(*f); @@ -5261,10 +5257,6 @@ void closedirp(DIR **d) { closedir(*d); } -void umaskp(mode_t *u) { - umask(*u); -} - bool filename_is_safe(const char *p) { if (isempty(p)) diff --git a/src/shared/util.h b/src/shared/util.h index 27b21f97cc..04c9fcd71e 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -519,12 +519,17 @@ void warn_melody(void); int get_shell(char **ret); int get_home_dir(char **ret); -void freep(void *p); +static inline void freep(void *p) { + free(*(void**) p); +} + void fclosep(FILE **f); void pclosep(FILE **f); void closep(int *fd); void closedirp(DIR **d); -void umaskp(mode_t *u); +static inline void umaskp(mode_t *u) { + umask(*u); +} _malloc_ static inline void *malloc_multiply(size_t a, size_t b) { if (_unlikely_(b == 0 || a > ((size_t) -1) / b)) -- cgit v1.2.1 From 180d6802e585e8a2826b76872438641b73e3fa6f Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Wed, 6 Mar 2013 19:28:55 +0100 Subject: path: avoid an allocation in path_spec_watch No need for strdup. We can slice the path in place if we always undo it afterwards. --- src/core/path.c | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/src/core/path.c b/src/core/path.c index 01a2b0810e..295e5cdf0e 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -53,7 +53,6 @@ int path_spec_watch(PathSpec *s, Unit *u) { }; bool exists = false; - char _cleanup_free_ *path = NULL; char *slash, *oldslash = NULL; int r; @@ -62,10 +61,6 @@ int path_spec_watch(PathSpec *s, Unit *u) { path_spec_unwatch(s, u); - path = strdup(s->path); - if (!path) - return -ENOMEM; - s->inotify_fd = inotify_init1(IN_NONBLOCK|IN_CLOEXEC); if (s->inotify_fd < 0) { r = -errno; @@ -78,25 +73,32 @@ int path_spec_watch(PathSpec *s, Unit *u) { /* This assumes the path was passed through path_kill_slashes()! */ - for(slash = strchr(path, '/'); ; slash = strchr(slash+1, '/')) { + for (slash = strchr(s->path, '/'); ; slash = strchr(slash+1, '/')) { + char *cut = NULL; int flags; char tmp; if (slash) { - tmp = slash[slash == path]; - slash[slash == path] = '\0'; + cut = slash + (slash == s->path); + tmp = *cut; + *cut = '\0'; + flags = IN_MOVE_SELF | IN_DELETE_SELF | IN_ATTRIB | IN_CREATE | IN_MOVED_TO; - } else { + } else flags = flags_table[s->type]; - } - r = inotify_add_watch(s->inotify_fd, path, flags); + r = inotify_add_watch(s->inotify_fd, s->path, flags); if (r < 0) { - if (errno == EACCES || errno == ENOENT) + if (errno == EACCES || errno == ENOENT) { + if (cut) + *cut = tmp; break; + } - log_warning("Failed to add watch on %s: %m", path); + log_warning("Failed to add watch on %s: %m", s->path); r = -errno; + if (cut) + *cut = tmp; goto fail; } else { exists = true; @@ -104,29 +106,30 @@ int path_spec_watch(PathSpec *s, Unit *u) { /* Path exists, we don't need to watch parent too closely. */ if (oldslash) { - char tmp2 = oldslash[oldslash == path]; - oldslash[oldslash == path] = '\0'; + char *cut2 = oldslash + (oldslash == s->path); + char tmp2 = *cut2; + *cut2 = '\0'; - inotify_add_watch(s->inotify_fd, path, IN_MOVE_SELF); + inotify_add_watch(s->inotify_fd, s->path, IN_MOVE_SELF); /* Error is ignored, the worst can happen is we get spurious events. */ - oldslash[oldslash == path] = tmp2; + *cut2 = tmp2; } } - if (slash) { - slash[slash == path] = tmp; + if (cut) + *cut = tmp; + + if (slash) oldslash = slash; - } else { + else { /* whole path has been iterated over */ s->primary_wd = r; break; } } - assert(errno == EACCES || errno == ENOENT || streq(path, s->path)); - if (!exists) { log_error("Failed to add watch on any of the components of %s: %m", s->path); -- cgit v1.2.1 From f620dff8dd8822b837f314b8cd74c88bc74226a0 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 8 Mar 2013 10:46:26 +0100 Subject: util: fix printing of welcome message Commit 984a2be4 failed to adjust this caller of status_printf(). --- src/shared/util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/util.c b/src/shared/util.c index 594f8de755..dc2651f3f2 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -2963,7 +2963,7 @@ int status_welcome(void) { if (r < 0 && r != -ENOENT) log_warning("Failed to read /etc/os-release: %s", strerror(-r)); - return status_printf(NULL, false, + return status_printf(NULL, false, false, "\nWelcome to \x1B[%sm%s\x1B[0m!\n", isempty(ansi_color) ? "1" : ansi_color, isempty(pretty_name) ? "Linux" : pretty_name); -- cgit v1.2.1 From e14ddf1cac12f91685cbd5dac6c5127f8cf87863 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Fri, 8 Mar 2013 12:05:48 +0100 Subject: =?UTF-8?q?journal:=C2=A0allow=20priority=200=20in=20stdout=20stre?= =?UTF-8?q?am?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Priority 0 is acceptable (it's LOG_EMERG). BTW, I'm not sure why we allow priorities up to 999, but I'm leaving this be for now. http://lists.freedesktop.org/archives/systemd-devel/2013-March/009510.html --- src/journal/journald-stream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c index 7b88f747db..54a5b3621a 100644 --- a/src/journal/journald-stream.c +++ b/src/journal/journald-stream.c @@ -175,7 +175,7 @@ static int stdout_stream_line(StdoutStream *s, char *p) { case STDOUT_STREAM_PRIORITY: r = safe_atoi(p, &s->priority); - if (r < 0 || s->priority <= 0 || s->priority >= 999) { + if (r < 0 || s->priority < 0 || s->priority >= 999) { log_warning("Failed to parse log priority line."); return -EINVAL; } -- cgit v1.2.1 From cf4eeabb903b8afcf4f91f560a105c8dfd49bf9c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 8 Mar 2013 13:49:14 +0100 Subject: update TODO --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index b2428d2c94..fdf17d7722 100644 --- a/TODO +++ b/TODO @@ -48,6 +48,8 @@ Fedora 19: Features: +* timedatectl needs to show whether NTP is available at all + * safe_atod() is too naive, as it is vulnerable to locale parameters, should be locale independent. * think about requeuing jobs when daemon-reload is issued? usecase: -- cgit v1.2.1 From 5b3968b793d0a07e10df76b2fdb2081c34c22254 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 8 Mar 2013 14:01:06 +0100 Subject: update TODO --- TODO | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index fdf17d7722..08b7bc99ea 100644 --- a/TODO +++ b/TODO @@ -20,8 +20,6 @@ Fedora 19: * make anaconda write timeout=0 for encrypted devices -* create /var/log/journal/ - * external: maybe it is time to patch procps so that "ps" links to libsystemd-logind to print a pretty service name, seat name, session name in its output. Currently it only shows cgroup membership, but @@ -50,6 +48,8 @@ Features: * timedatectl needs to show whether NTP is available at all +* reduce caps of systemd-localed + * safe_atod() is too naive, as it is vulnerable to locale parameters, should be locale independent. * think about requeuing jobs when daemon-reload is issued? usecase: -- cgit v1.2.1 From c170f3a41bc69ad1eab2dba40cede865f2532bbc Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 8 Mar 2013 18:58:08 +0100 Subject: analyze: various cleanups Update systemd-analyze to follow the coding style of the other tools more closely. Also, update the CODING_STYLE to document this for future additions. Changes: - Always use usec_t for time units, so that we always use the same types everywhere, and format times the same way as everywhere else. - Add "static" to global variables - Make sure we can always distuingish OOM and other errors: ensure we always return useful error codes from all functions. - Always free unit_times array --- CODING_STYLE | 114 ++++++++++++-- src/analyze/systemd-analyze.c | 359 +++++++++++++++++++++++------------------- 2 files changed, 306 insertions(+), 167 deletions(-) diff --git a/CODING_STYLE b/CODING_STYLE index d93ccd8a98..4b84479d20 100644 --- a/CODING_STYLE +++ b/CODING_STYLE @@ -1,27 +1,123 @@ - 8ch indent, no tabs -- structs in MixedCase, variables, functions in lower_case +- Variables and functions *must* be static, unless they have a + protoype, and are supposed to be exported. -- the destructors always unregister the object from the next bigger +- structs in MixedCase, variables + functions in lower_case + +- The destructors always unregister the object from the next bigger object, not the other way around -- to minimize strict aliasing violations we prefer unions over casting +- To minimize strict aliasing violations we prefer unions over casting -- for robustness reasons destructors should be able to destruct +- For robustness reasons destructors should be able to destruct half-initialized objects, too -- error codes are returned as negative Exxx. i.e. return -EINVAL. There +- Error codes are returned as negative Exxx. i.e. return -EINVAL. There are some exceptions: for constructors its is OK to return NULL on - OOM. For lookup functions NULL is fine too for "not found" + OOM. For lookup functions NULL is fine too for "not found". + + Be strict with this. When you write a function that can fail due to + more than one cause, it *really* should have "int" as return value + for the error code. + +- Don't bother with error checking if writing to stdout/stderr worked. + +- Do not log errors from "library" code, only do so from "main + program" code. + +- Always check OOM. There's no excuse. In program code you can use + "log_oom()" for then printing a short message. - Do not issue NSS requests (that includes user name and host name lookups) from the main daemon as this might trigger deadlocks when those lookups involve synchronously talking to services that we would need to start up -- Do not access any directories outside of /etc, /dev, /lib from the - init daemon to avoid deadlocks with the automounter - - Don't synchronously talk to any other service, due to risk of deadlocks + +- Avoid fixed sized string buffers, unless you really know the maximum + size and that maximum size is small. They are a source of errors, + since they result in strings to be truncated. Often it is nicer to + use dynamic memory, or alloca(). If you do allocate fixed size + strings on the stack, then it's probably only OK if you either use a + maximum size such as LINE_MAX, or count in detail the maximum size a + string can have. Or in other words, if you use "char buf[256]" then + you are likely doing something wrong! + +- Stay uniform. For example, always use "usec_t" for time + values. Don't usec mix msec, and usec and whatnot. + +- Make use of _cleanup_free_ and friends. It makes your code much + nicer to read! + +- Be exceptionally careful when formatting and parsing floating point + numbers. Their syntax is locale dependent (i.e. "5.000" in en_US is + generally understood as 5, while on de_DE as 5000.). + +- Try to use this: + + void foo() { + } + + instead of this: + + void foo() + { + } + + But it's OK if you don't. + +- Don't write "foo ()", write "foo()". + +- Please use streq() and strneq() instead of strcmp(), strncmp() where applicable. + +- Please do not allocate variables on the stack in the middle of code, + even if C99 allows it. Wrong: + + { + a = 5; + int b; + b = a; + } + + Right: + + { + int b; + a = 5; + b = a; + } + +- Unless you allocate an array, "double" is always the better choice + than "float". Processors speak "double" natively anyway, so this is + no speed benefit, and on calls like printf() "float"s get upgraded + to "double"s anyway, so there is no point. + +- Don't invoke functions when you allocate variables on the stack. Wrong: + + { + int a = foobar(); + uint64_t x = 7; + } + + Right: + + { + int a; + uint64_t x = 7; + + a = foobar(); + } + +- Use "goto" for cleaning up, and only use it for that. i.e. you may + only jump to the end of a function, and little else. + +- Think about the types you use. If a value cannot sensibly be + negative don't use "int", but use "unsigned". + +- Don't use types like "short". They *never* make sense. Use ints, + longs, long longs, all in unsigned+signed fashion, and the fixed + size types uint32_t and so on, but nothing else. diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c index 7603cc0de4..762016d616 100644 --- a/src/analyze/systemd-analyze.c +++ b/src/analyze/systemd-analyze.c @@ -34,16 +34,20 @@ #include "fileio.h" #define compare(a, b) (((a) > (b))? 1 : (((b) > (a))? -1 : 0)) + #define svg(...) printf(__VA_ARGS__) -#define svg_bar(class, x1, x2, y) \ + +#define svg_bar(class, x1, x2, y) \ svg(" \n", \ - (class), \ - scale_x * (x1), scale_y * (y), \ - scale_x * ((x2) - (x1)), scale_y - 1.0) -#define svg_text(x, y, format, ...) do {\ - svg(" ", scale_x * (x) + 5.0, scale_y * (y) + 14.0); \ - svg(format, ## __VA_ARGS__); \ - svg("\n"); \ + (class), \ + scale_x * (x1), scale_y * (y), \ + scale_x * ((x2) - (x1)), scale_y - 1.0) + +#define svg_text(b, x, y, format, ...) \ + do { \ + svg(" ", (b) ? "left" : "right", scale_x * (x) + (b ? 5.0 : -5.0), scale_y * (y) + 14.0); \ + svg(format, ## __VA_ARGS__); \ + svg("\n"); \ } while(false) static UnitFileScope arg_scope = UNIT_FILE_SYSTEM; @@ -53,34 +57,33 @@ static enum dot { DEP_REQUIRE } arg_dot = DEP_ALL; -double scale_x = 0.1; // pixels per ms -double scale_y = 20.0; +static double scale_x = 0.1 / 1000.0; /* pixels per us */ +static double scale_y = 20.0; struct boot_times { - uint64_t firmware_time; - uint64_t loader_time; - uint64_t kernel_time; - uint64_t kernel_done_time; - uint64_t initrd_time; - uint64_t userspace_time; - uint64_t finish_time; + usec_t firmware_time; + usec_t loader_time; + usec_t kernel_time; + usec_t kernel_done_time; + usec_t initrd_time; + usec_t userspace_time; + usec_t finish_time; }; struct unit_times { char *name; - uint64_t ixt; - uint64_t iet; - uint64_t axt; - uint64_t aet; - uint64_t time; + usec_t ixt; + usec_t iet; + usec_t axt; + usec_t aet; + usec_t time; }; -static int bus_get_uint64_property (DBusConnection *bus, const char *path, const char *interface, const char *property, uint64_t *val) -{ +static int bus_get_uint64_property(DBusConnection *bus, const char *path, const char *interface, const char *property, uint64_t *val) { _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; - int r; DBusMessageIter iter, sub; + int r; - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", path, @@ -112,34 +115,47 @@ static int bus_get_uint64_property (DBusConnection *bus, const char *path, const return 0; } -static int compare_unit_time(const void *a, const void *b) -{ +static int compare_unit_time(const void *a, const void *b) { return compare(((struct unit_times *)b)->time, ((struct unit_times *)a)->time); } -static int compare_unit_start(const void *a, const void *b) -{ +static int compare_unit_start(const void *a, const void *b) { return compare(((struct unit_times *)a)->ixt, ((struct unit_times *)b)->ixt); } -static char *get_os_name(void) -{ +static int get_os_name(char **_n) { char *n = NULL; + int r; + + r = parse_env_file("/etc/os-release", NEWLINE, "PRETTY_NAME", &n, NULL); + if (r < 0) + return r; + + if (!n) + return -ENOENT; - parse_env_file("/etc/os-release", NEWLINE, "PRETTY_NAME", &n, NULL); - return n; + *_n = n; + return 0; } -static int acquire_time_data(DBusConnection *bus, struct unit_times **out) -{ +static void free_unit_times(struct unit_times *t, unsigned n) { + struct unit_times *p; + + for (p = t; p < t + n; p++) + free(p->name); + + free(t); +} + +static int acquire_time_data(DBusConnection *bus, struct unit_times **out) { _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; DBusMessageIter iter, sub; int r, c = 0, n_units = 0; struct unit_times *unit_times = NULL; - r = bus_method_call_with_reply ( + r = bus_method_call_with_reply( bus, "org.freedesktop.systemd1", "/org/freedesktop/systemd1", @@ -148,7 +164,7 @@ static int acquire_time_data(DBusConnection *bus, struct unit_times **out) &reply, NULL, DBUS_TYPE_INVALID); - if (r) + if (r < 0) goto fail; if (!dbus_message_iter_init(reply, &iter) || @@ -191,6 +207,8 @@ static int acquire_time_data(DBusConnection *bus, struct unit_times **out) if (r < 0) goto fail; + assert_cc(sizeof(usec_t) == sizeof(uint64_t)); + if (bus_get_uint64_property(bus, u.unit_path, "org.freedesktop.systemd1.Unit", "InactiveExitTimestampMonotonic", @@ -211,11 +229,6 @@ static int acquire_time_data(DBusConnection *bus, struct unit_times **out) goto fail; } - t->iet /= 1000; - t->ixt /= 1000; - t->aet /= 1000; - t->axt /= 1000; - if (t->aet >= t->ixt) t->time = t->aet - t->ixt; else if (t->iet >= t->ixt) @@ -236,21 +249,20 @@ static int acquire_time_data(DBusConnection *bus, struct unit_times **out) *out = unit_times; return c; + fail: - if (unit_times) { - for (; c >= 0; c--) - free(unit_times[c].name); - free(unit_times); - } + free_unit_times(unit_times, (unsigned) c); return r; } -static struct boot_times *acquire_boot_times(DBusConnection *bus) -{ +static int acquire_boot_times(DBusConnection *bus, struct boot_times **bt) { static struct boot_times times; static bool cached = false; + if (cached) - return × + goto finish; + + assert_cc(sizeof(usec_t) == sizeof(uint64_t)); if (bus_get_uint64_property(bus, "/org/freedesktop/systemd1", @@ -282,107 +294,109 @@ static struct boot_times *acquire_boot_times(DBusConnection *bus) "org.freedesktop.systemd1.Manager", "FinishTimestampMonotonic", ×.finish_time) < 0) - return NULL; + return -EIO; - if (!times.finish_time) { + if (times.finish_time <= 0) { log_error("Bootup is not yet finished. Please try again later."); - return NULL; + return -EAGAIN; } - times.firmware_time /= 1000; - times.loader_time /= 1000; - times.initrd_time /= 1000; - times.userspace_time /= 1000; - times.finish_time /= 1000; - if (times.initrd_time) times.kernel_done_time = times.initrd_time; else times.kernel_done_time = times.userspace_time; cached = true; - return × + +finish: + *bt = × + return 0; } -static char *pretty_boot_time(DBusConnection *bus) -{ +static int pretty_boot_time(DBusConnection *bus, char **_buf) { + char ts[FORMAT_TIMESPAN_MAX]; struct boot_times *t; - size_t size = 4096; static char buf[4096]; - char *ptr = buf; + size_t size; + char *ptr; + int r; + + r = acquire_boot_times(bus, &t); + if (r < 0) + return r; - t = acquire_boot_times(bus); - if (!t) - return NULL; + ptr = buf; + size = sizeof(buf); size = strpcpyf(&ptr, size, "Startup finished in "); if (t->firmware_time) - size = strpcpyf(&ptr, size, "%llums (firmware) + ", (unsigned long long)(t->firmware_time - t->loader_time)); + size = strpcpyf(&ptr, size, "%s (firmware) + ", format_timespan(ts, sizeof(ts), t->firmware_time - t->loader_time)); if (t->loader_time) - size = strpcpyf(&ptr, size, "%llums (loader) + ", (unsigned long long)t->loader_time); + size = strpcpyf(&ptr, size, "%s (loader) + ", format_timespan(ts, sizeof(ts), t->loader_time)); if (t->kernel_time) - size = strpcpyf(&ptr, size, "%llums (kernel) + ", (unsigned long long)t->kernel_done_time); + size = strpcpyf(&ptr, size, "%s (kernel) + ", format_timespan(ts, sizeof(ts), t->kernel_done_time)); if (t->initrd_time > 0) - size = strpcpyf(&ptr, size, "%llums (initrd) + ", (unsigned long long)(t->userspace_time - t->initrd_time)); + size = strpcpyf(&ptr, size, "%s (initrd) + ", format_timespan(ts, sizeof(ts), t->userspace_time - t->initrd_time)); - size = strpcpyf(&ptr, size, "%llums (userspace) ", (unsigned long long)(t->finish_time - t->userspace_time)); + size = strpcpyf(&ptr, size, "%s (userspace) ", format_timespan(ts, sizeof(ts), t->finish_time - t->userspace_time)); if (t->kernel_time > 0) - size = strpcpyf(&ptr, size, "= %llums", (unsigned long long)(t->firmware_time + t->finish_time)); + size = strpcpyf(&ptr, size, "= %s", format_timespan(ts, sizeof(ts), t->firmware_time + t->finish_time)); else - size = strpcpyf(&ptr, size, "= %llums", (unsigned long long)(t->finish_time - t->userspace_time)); + size = strpcpyf(&ptr, size, "= %s", format_timespan(ts, sizeof(ts), t->finish_time - t->userspace_time)); - return buf; + ptr = strdup(buf); + if (!ptr) + return log_oom(); + + *_buf = ptr; + return 0; } -static void svg_graph_box(int height, int64_t begin, int64_t end) -{ +static void svg_graph_box(double height, double begin, double end) { + long long i; + /* outside box, fill */ svg("\n", scale_x * (end - begin), scale_y * height); - for (int i = (begin / 100) * 100; i <= end; i+=100) { + for (i = ((long long) (begin / 100000)) * 100000; i <= end; i+=100000) { /* lines for each second */ - if (i % 5000 == 0) + if (i % 5000000 == 0) svg(" \n" " %.01fs\n", - scale_x * i, scale_x * i, scale_y * height, scale_x * i, -5.0, 0.001 * i); - else if (i % 1000 == 0) + scale_x * i, scale_x * i, scale_y * height, scale_x * i, -5.0, 0.000001 * i); + else if (i % 1000000 == 0) svg(" \n" " %.01fs\n", - scale_x * i, scale_x * i, scale_y * height, scale_x * i, -5.0, 0.001 * i); + scale_x * i, scale_x * i, scale_y * height, scale_x * i, -5.0, 0.000001 * i); else svg(" \n", scale_x * i, scale_x * i, scale_y * height); } } -static int analyze_plot(DBusConnection *bus) -{ +static int analyze_plot(DBusConnection *bus) { struct unit_times *times; struct boot_times *boot; struct utsname name; int n, m = 1, y=0; double width; - char *osname; - char *pretty_times; + _cleanup_free_ char *pretty_times = NULL, *osname = NULL; + struct unit_times *u; - boot = acquire_boot_times(bus); - if (!boot) - return -EIO; - pretty_times = pretty_boot_time(bus); - if (!pretty_times) - return -EIO; + n = acquire_boot_times(bus, &boot); + if (n < 0) + return n; - osname = get_os_name(); + n = pretty_boot_time(bus, &pretty_times); + if (n < 0) + return n; - n = uname(&name); - if (n < 0) { - log_error("Cannot get system name: %m"); - return -errno; - } + get_os_name(&osname); + assert_se(uname(&name) >= 0); n = acquire_time_data(bus, ×); - if (n<=0) + if (n <= 0) return n; qsort(times, n, sizeof(struct unit_times), compare_unit_start); @@ -403,8 +417,9 @@ static int analyze_plot(DBusConnection *bus) if (boot->kernel_time) m++; - for (struct unit_times *u = times; u < times + n; u++) { + for (u = times; u < times + n; u++) { double len; + if (u->ixt < boot->userspace_time || u->ixt > boot->finish_time) { free(u->name); @@ -461,12 +476,14 @@ static int analyze_plot(DBusConnection *bus) " line.sec5 { stroke-width: 2; }\n" " line.sec01 { stroke: rgb(224,224,224); stroke-width: 1; }\n" " text { font-family: Verdana, Helvetica; font-size: 10; }\n" + " text.left { font-family: Verdana, Helvetica; font-size: 10; text-anchor: start; }\n" + " text.right { font-family: Verdana, Helvetica; font-size: 10; text-anchor: end; }\n" " text.sec { font-size: 8; }\n" " ]]>\n \n\n\n"); svg("%s", pretty_times); svg("%s %s (%s %s) %s", - isempty(osname)? "Linux" : osname, + isempty(osname) ? "Linux" : osname, name.nodename, name.release, name.version, name.machine); svg("Legend: Red = Activating; Pink = Active; Dark Pink = Deactivating", 120.0 + (m *scale_y)); @@ -475,68 +492,85 @@ static int analyze_plot(DBusConnection *bus) svg_graph_box(m, -boot->firmware_time, boot->finish_time); if (boot->firmware_time) { - svg_bar("firmware", -(int64_t) boot->firmware_time, -(int64_t) boot->loader_time, y); - svg_text(-(int64_t) boot->firmware_time, y, "firmware"); + svg_bar("firmware", -(double) boot->firmware_time, -(double) boot->loader_time, y); + svg_text(true, -(double) boot->firmware_time, y, "firmware"); y++; } if (boot->loader_time) { - svg_bar("loader", -(int64_t) boot->loader_time, 0, y); - svg_text(-(int64_t) boot->loader_time, y, "loader"); + svg_bar("loader", -(double) boot->loader_time, 0, y); + svg_text(true, -(double) boot->loader_time, y, "loader"); y++; } if (boot->kernel_time) { svg_bar("kernel", 0, boot->kernel_done_time, y); - svg_text(0, y, "kernel"); + svg_text(true, 0, y, "kernel"); y++; } if (boot->initrd_time) { svg_bar("initrd", boot->initrd_time, boot->userspace_time, y); - svg_text(boot->initrd_time, y, "initrd"); + svg_text(true, boot->initrd_time, y, "initrd"); y++; } svg_bar("userspace", boot->userspace_time, boot->finish_time, y); - svg_text(boot->userspace_time, y, "userspace"); + svg_text("left", boot->userspace_time, y, "userspace"); y++; - for (struct unit_times *u = times; u < times + n; u++) { + for (u = times; u < times + n; u++) { + char ts[FORMAT_TIMESPAN_MAX]; + if (!u->name) continue; + svg_bar("activating", u->ixt, u->aet, y); svg_bar("active", u->aet, u->axt, y); svg_bar("deactivating", u->axt, u->iet, y); - svg_text(u->ixt, y, u->time? "%s (%llums)" : "%s", u->name, (unsigned long long)u->time); + + if (u->ixt * scale_x > width * 2 / 3) + svg_text(false, u->ixt, y, u->time? "%s (%s)" : "%s", u->name, format_timespan(ts, sizeof(ts), u->time)); + else + svg_text(true, u->ixt, y, u->time? "%s (%s)" : "%s", u->name, format_timespan(ts, sizeof(ts), u->time)); y++; } svg("\n\n"); svg(""); + + free_unit_times(times, (unsigned) n); + return 0; } -static int analyze_blame(DBusConnection *bus) -{ +static int analyze_blame(DBusConnection *bus) { struct unit_times *times; - int n = acquire_time_data(bus, ×); - if (n<=0) + unsigned i; + int n; + + n = acquire_time_data(bus, ×); + if (n <= 0) return n; qsort(times, n, sizeof(struct unit_times), compare_unit_time); - for (int i = 0; i < n; i++) { - if (times[i].time) - printf("%6llums %s\n", (unsigned long long)times[i].time, times[i].name); + for (i = 0; i < (unsigned) n; i++) { + char ts[FORMAT_TIMESPAN_MAX]; + + if (times[i].time > 0) + printf("%16s %s\n", format_timespan(ts, sizeof(ts), times[i].time), times[i].name); } + + free_unit_times(times, (unsigned) n); return 0; } -static int analyze_time(DBusConnection *bus) -{ - char *buf; - buf = pretty_boot_time(bus); - if (!buf) - return -EIO; - if (puts(buf) == EOF) - return -errno; +static int analyze_time(DBusConnection *bus) { + _cleanup_free_ char *buf = NULL; + int r; + + r = pretty_boot_time(bus, &buf); + if (r < 0) + return r; + + puts(buf); return 0; } @@ -741,32 +775,41 @@ static int parse_argv(int argc, char *argv[]) assert(argc >= 0); assert(argv); - while (true) { + for (;;) { switch (getopt_long(argc, argv, "h", options, NULL)) { - case 'h': - analyze_help(); - return 0; - case ARG_VERSION: - puts(PACKAGE_STRING "\n" SYSTEMD_FEATURES); - return 0; - case ARG_USER: - arg_scope = UNIT_FILE_USER; - break; - case ARG_SYSTEM: - arg_scope = UNIT_FILE_SYSTEM; - break; - case ARG_ORDER: - arg_dot = DEP_ORDER; - break; - case ARG_REQUIRE: - arg_dot = DEP_REQUIRE; - break; - case -1: - return 1; - case '?': - return -EINVAL; - default: - assert_not_reached("Unhandled option"); + + case 'h': + analyze_help(); + return 0; + + case ARG_VERSION: + puts(PACKAGE_STRING "\n" SYSTEMD_FEATURES); + return 0; + + case ARG_USER: + arg_scope = UNIT_FILE_USER; + break; + + case ARG_SYSTEM: + arg_scope = UNIT_FILE_SYSTEM; + break; + + case ARG_ORDER: + arg_dot = DEP_ORDER; + break; + + case ARG_REQUIRE: + arg_dot = DEP_REQUIRE; + break; + + case -1: + return 1; + + case '?': + return -EINVAL; + + default: + assert_not_reached("Unhandled option"); } } } @@ -776,18 +819,19 @@ int main(int argc, char *argv[]) { DBusConnection *bus = NULL; setlocale(LC_ALL, ""); + setlocale(LC_NUMERIC, "C"); /* we want to format/parse floats in C style */ log_parse_environment(); log_open(); r = parse_argv(argc, argv); - if (r == 0) - return 0; if (r < 0) - return 1; + return EXIT_FAILURE; + else if (r <= 0) + return EXIT_SUCCESS; bus = dbus_bus_get(arg_scope == UNIT_FILE_SYSTEM ? DBUS_BUS_SYSTEM : DBUS_BUS_SESSION, NULL); if (!bus) - return 1; + return EXIT_FAILURE; if (!argv[optind] || streq(argv[optind], "time")) r = analyze_time(bus); @@ -801,7 +845,6 @@ int main(int argc, char *argv[]) { log_error("Unknown operation '%s'.", argv[optind]); dbus_connection_unref(bus); - if (r) - return 1; - return 0; + + return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; } -- cgit v1.2.1 From ffaa0e2503ea20899f20a87bcd074637ba0811eb Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 8 Mar 2013 19:03:50 +0100 Subject: analyze: by now, systemd-analyze is hardly all my work --- src/analyze/systemd-analyze.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c index 762016d616..2dab158fcb 100644 --- a/src/analyze/systemd-analyze.c +++ b/src/analyze/systemd-analyze.c @@ -3,7 +3,8 @@ /*** This file is part of systemd. - Copyright 2010 Lennart Poettering + Copyright 2010-2013 Lennart Poettering + Copyright 2013 Simon Peeters systemd is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by -- cgit v1.2.1 From 2f6eb835ca05816142899188a3c9da30d3138efe Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 8 Mar 2013 19:10:24 +0100 Subject: analyze: use defines where we don't need static variables --- src/analyze/systemd-analyze.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c index 2dab158fcb..49484a83bc 100644 --- a/src/analyze/systemd-analyze.c +++ b/src/analyze/systemd-analyze.c @@ -34,6 +34,9 @@ #include "strxcpyx.h" #include "fileio.h" +#define SCALE_X (0.1 / 1000.0) /* pixels per us */ +#define SCALE_Y 20.0 + #define compare(a, b) (((a) > (b))? 1 : (((b) > (a))? -1 : 0)) #define svg(...) printf(__VA_ARGS__) @@ -41,12 +44,12 @@ #define svg_bar(class, x1, x2, y) \ svg(" \n", \ (class), \ - scale_x * (x1), scale_y * (y), \ - scale_x * ((x2) - (x1)), scale_y - 1.0) + SCALE_X * (x1), SCALE_Y * (y), \ + SCALE_X * ((x2) - (x1)), SCALE_Y - 1.0) #define svg_text(b, x, y, format, ...) \ do { \ - svg(" ", (b) ? "left" : "right", scale_x * (x) + (b ? 5.0 : -5.0), scale_y * (y) + 14.0); \ + svg(" ", (b) ? "left" : "right", SCALE_X * (x) + (b ? 5.0 : -5.0), SCALE_Y * (y) + 14.0); \ svg(format, ## __VA_ARGS__); \ svg("\n"); \ } while(false) @@ -58,9 +61,6 @@ static enum dot { DEP_REQUIRE } arg_dot = DEP_ALL; -static double scale_x = 0.1 / 1000.0; /* pixels per us */ -static double scale_y = 20.0; - struct boot_times { usec_t firmware_time; usec_t loader_time; @@ -358,21 +358,21 @@ static void svg_graph_box(double height, double begin, double end) { /* outside box, fill */ svg("\n", - scale_x * (end - begin), scale_y * height); + SCALE_X * (end - begin), SCALE_Y * height); for (i = ((long long) (begin / 100000)) * 100000; i <= end; i+=100000) { /* lines for each second */ if (i % 5000000 == 0) svg(" \n" " %.01fs\n", - scale_x * i, scale_x * i, scale_y * height, scale_x * i, -5.0, 0.000001 * i); + SCALE_X * i, SCALE_X * i, SCALE_Y * height, SCALE_X * i, -5.0, 0.000001 * i); else if (i % 1000000 == 0) svg(" \n" " %.01fs\n", - scale_x * i, scale_x * i, scale_y * height, scale_x * i, -5.0, 0.000001 * i); + SCALE_X * i, SCALE_X * i, SCALE_Y * height, SCALE_X * i, -5.0, 0.000001 * i); else svg(" \n", - scale_x * i, scale_x * i, scale_y * height); + SCALE_X * i, SCALE_X * i, SCALE_Y * height); } } @@ -402,7 +402,7 @@ static int analyze_plot(DBusConnection *bus) { qsort(times, n, sizeof(struct unit_times), compare_unit_start); - width = scale_x * (boot->firmware_time + boot->finish_time); + width = SCALE_X * (boot->firmware_time + boot->finish_time); if (width < 800.0) width = 800.0; @@ -427,7 +427,7 @@ static int analyze_plot(DBusConnection *bus) { u->name = NULL; continue; } - len = ((boot->firmware_time + u->ixt) * scale_x) + len = ((boot->firmware_time + u->ixt) * SCALE_X) + (10.0 * strlen(u->name)); if (len > width) width = len; @@ -450,7 +450,7 @@ static int analyze_plot(DBusConnection *bus) { svg("\n\n", - 80.0 + width, 150.0 + (m * scale_y)); + 80.0 + width, 150.0 + (m * SCALE_Y)); /* write some basic info as a comment, including some help */ svg("\n" @@ -487,9 +487,9 @@ static int analyze_plot(DBusConnection *bus) { isempty(osname) ? "Linux" : osname, name.nodename, name.release, name.version, name.machine); svg("Legend: Red = Activating; Pink = Active; Dark Pink = Deactivating", - 120.0 + (m *scale_y)); + 120.0 + (m *SCALE_Y)); - svg("\n", 20.0 + (scale_x * boot->firmware_time)); + svg("\n", 20.0 + (SCALE_X * boot->firmware_time)); svg_graph_box(m, -boot->firmware_time, boot->finish_time); if (boot->firmware_time) { @@ -526,7 +526,7 @@ static int analyze_plot(DBusConnection *bus) { svg_bar("active", u->aet, u->axt, y); svg_bar("deactivating", u->axt, u->iet, y); - if (u->ixt * scale_x > width * 2 / 3) + if (u->ixt * SCALE_X > width * 2 / 3) svg_text(false, u->ixt, y, u->time? "%s (%s)" : "%s", u->name, format_timespan(ts, sizeof(ts), u->time)); else svg_text(true, u->ixt, y, u->time? "%s (%s)" : "%s", u->name, format_timespan(ts, sizeof(ts), u->time)); -- cgit v1.2.1 From 7b40ce553f0ec9487077e53f5bdc46580025901c Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Sat, 9 Mar 2013 09:46:11 +0100 Subject: build-sys: don't hard-code binary paths in initrd-*.service Instead use @bindir@ for udevadm and @rootbindir@ for systemctl. --- Makefile.am | 16 ++++++++++------ units/initrd-cleanup.service | 18 ------------------ units/initrd-cleanup.service.in | 18 ++++++++++++++++++ units/initrd-parse-etc.service | 20 -------------------- units/initrd-parse-etc.service.in | 20 ++++++++++++++++++++ units/initrd-switch-root.service | 19 ------------------- units/initrd-switch-root.service.in | 19 +++++++++++++++++++ units/initrd-udevadm-cleanup-db.service | 18 ------------------ units/initrd-udevadm-cleanup-db.service.in | 18 ++++++++++++++++++ 9 files changed, 85 insertions(+), 81 deletions(-) delete mode 100644 units/initrd-cleanup.service create mode 100644 units/initrd-cleanup.service.in delete mode 100644 units/initrd-parse-etc.service create mode 100644 units/initrd-parse-etc.service.in delete mode 100644 units/initrd-switch-root.service create mode 100644 units/initrd-switch-root.service.in delete mode 100644 units/initrd-udevadm-cleanup-db.service create mode 100644 units/initrd-udevadm-cleanup-db.service.in diff --git a/Makefile.am b/Makefile.am index 05bf582e26..afd259a2e5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -382,11 +382,7 @@ dist_systemunit_DATA = \ units/systemd-udevd-control.socket \ units/systemd-udevd-kernel.socket \ units/system-update.target \ - units/initrd-parse-etc.service \ - units/initrd-cleanup.service \ - units/initrd-switch-root.target \ - units/initrd-udevadm-cleanup-db.service \ - units/initrd-switch-root.service + units/initrd-switch-root.target nodist_systemunit_DATA = \ units/getty@.service \ @@ -418,7 +414,11 @@ nodist_systemunit_DATA = \ units/systemd-udevd.service \ units/systemd-udev-trigger.service \ units/systemd-udev-settle.service \ - units/debug-shell.service + units/debug-shell.service \ + units/initrd-parse-etc.service \ + units/initrd-cleanup.service \ + units/initrd-udevadm-cleanup-db.service \ + units/initrd-switch-root.service dist_userunit_DATA = \ units/user/default.target \ @@ -460,6 +460,10 @@ EXTRA_DIST += \ units/systemd-hybrid-sleep.service.in \ units/systemd-suspend.service.in \ units/quotaon.service.in \ + units/initrd-parse-etc.service.in \ + units/initrd-cleanup.service.in \ + units/initrd-udevadm-cleanup-db.service.in \ + units/initrd-switch-root.service.in \ introspect.awk \ man/custom-html.xsl diff --git a/units/initrd-cleanup.service b/units/initrd-cleanup.service deleted file mode 100644 index 89986964ea..0000000000 --- a/units/initrd-cleanup.service +++ /dev/null @@ -1,18 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -[Unit] -Description=Cleaning Up and Shutting Down Daemons -DefaultDependencies=no -ConditionPathExists=/etc/initrd-release -OnFailure=emergency.target -Requires=local-fs.target swap.target -After=local-fs.target swap.target - -[Service] -Type=oneshot -ExecStart=/usr/bin/systemctl --no-block isolate initrd-switch-root.target diff --git a/units/initrd-cleanup.service.in b/units/initrd-cleanup.service.in new file mode 100644 index 0000000000..e926a1eec2 --- /dev/null +++ b/units/initrd-cleanup.service.in @@ -0,0 +1,18 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Cleaning Up and Shutting Down Daemons +DefaultDependencies=no +ConditionPathExists=/etc/initrd-release +OnFailure=emergency.target +Requires=local-fs.target swap.target +After=local-fs.target swap.target + +[Service] +Type=oneshot +ExecStart=@rootbindir@/systemctl --no-block isolate initrd-switch-root.target diff --git a/units/initrd-parse-etc.service b/units/initrd-parse-etc.service deleted file mode 100644 index 3a71a7ec56..0000000000 --- a/units/initrd-parse-etc.service +++ /dev/null @@ -1,20 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -[Unit] -Description=Reload Configuration from the Real Root -DefaultDependencies=no -Requires=local-fs.target swap.target -After=local-fs.target swap.target -OnFailure=emergency.target -ConditionPathExists=/etc/initrd-release - -[Service] -Type=oneshot -ExecStartPre=/usr/bin/systemctl daemon-reload -ExecStart=/usr/bin/systemctl start local-fs.target -ExecStart=/usr/bin/systemctl --no-block start initrd-cleanup.service diff --git a/units/initrd-parse-etc.service.in b/units/initrd-parse-etc.service.in new file mode 100644 index 0000000000..1a2711ac62 --- /dev/null +++ b/units/initrd-parse-etc.service.in @@ -0,0 +1,20 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Reload Configuration from the Real Root +DefaultDependencies=no +Requires=local-fs.target swap.target +After=local-fs.target swap.target +OnFailure=emergency.target +ConditionPathExists=/etc/initrd-release + +[Service] +Type=oneshot +ExecStartPre=@rootbindir@/systemctl daemon-reload +ExecStart=@rootbindir@/systemctl start local-fs.target +ExecStart=@rootbindir@/systemctl --no-block start initrd-cleanup.service diff --git a/units/initrd-switch-root.service b/units/initrd-switch-root.service deleted file mode 100644 index e076b391de..0000000000 --- a/units/initrd-switch-root.service +++ /dev/null @@ -1,19 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -[Unit] -Description=Switch Root -DefaultDependencies=no -ConditionPathExists=/etc/initrd-release -OnFailure=emergency.target -AllowIsolate=yes - -[Service] -Type=oneshot -# we have to use "--force" here, otherwise systemd would umount /run -ExecStart=/usr/bin/systemctl --no-block --force switch-root /sysroot -KillMode=none diff --git a/units/initrd-switch-root.service.in b/units/initrd-switch-root.service.in new file mode 100644 index 0000000000..6740264149 --- /dev/null +++ b/units/initrd-switch-root.service.in @@ -0,0 +1,19 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Switch Root +DefaultDependencies=no +ConditionPathExists=/etc/initrd-release +OnFailure=emergency.target +AllowIsolate=yes + +[Service] +Type=oneshot +# we have to use "--force" here, otherwise systemd would umount /run +ExecStart=@rootbindir@/systemctl --no-block --force switch-root /sysroot +KillMode=none diff --git a/units/initrd-udevadm-cleanup-db.service b/units/initrd-udevadm-cleanup-db.service deleted file mode 100644 index 983189e8b0..0000000000 --- a/units/initrd-udevadm-cleanup-db.service +++ /dev/null @@ -1,18 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -[Unit] -Description=Cleanup udevd DB -DefaultDependencies=no -ConditionPathExists=/etc/initrd-release -Conflicts=systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket -After=systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket -Before=initrd-switch-root.target - -[Service] -Type=oneshot -ExecStart=-/usr/bin/udevadm info --cleanup-db diff --git a/units/initrd-udevadm-cleanup-db.service.in b/units/initrd-udevadm-cleanup-db.service.in new file mode 100644 index 0000000000..b800c210db --- /dev/null +++ b/units/initrd-udevadm-cleanup-db.service.in @@ -0,0 +1,18 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Cleanup udevd DB +DefaultDependencies=no +ConditionPathExists=/etc/initrd-release +Conflicts=systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket +After=systemd-udevd.service systemd-udevd-control.socket systemd-udevd-kernel.socket +Before=initrd-switch-root.target + +[Service] +Type=oneshot +ExecStart=-@bindir@/udevadm info --cleanup-db -- cgit v1.2.1 From f6354e8c113e9e6e63f4c517b9a2dbccacb9af64 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 8 Mar 2013 23:06:55 -0500 Subject: build-sys: fix distcheck --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index afd259a2e5..d85eb702c6 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2572,7 +2572,7 @@ endif # "adm" and "wheel". libsystemd-journal-install-hook: libname=libsystemd-journal.so && $(move-to-rootlibdir) - $(MKDIR_P) $(DESTDIR)/var/log/journal + -$(MKDIR_P) $(DESTDIR)/var/log/journal -chown 0:0 $(DESTDIR)/var/log/journal -chmod 755 $(DESTDIR)/var/log/journal -setfacl -nm g:adm:rx,d:g:adm:rx $(DESTDIR)/var/log/journal/ -- cgit v1.2.1 From 86b4547712d5d8a67c269b3bd737393903c409e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 8 Mar 2013 09:58:29 -0500 Subject: build-sys: clean up make clean --- Makefile.am | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/Makefile.am b/Makefile.am index d85eb702c6..6634a8ca6b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -114,7 +114,6 @@ polkitpolicy_in_files = polkitpolicy_files = dist_udevrules_DATA = nodist_udevrules_DATA = -dist_man_MANS = dist_pkgsysconf_DATA = dist_pkgdata_DATA = dist_dbuspolicy_DATA = @@ -504,6 +503,8 @@ include Makefile-man.am XML_FILES = \ ${patsubst %.1,%.xml,${patsubst %.3,%.xml,${patsubst %.5,%.xml,${patsubst %.7,%.xml,${patsubst %.8,%.xml,$(MANPAGES)}}}}} +HTML_FILES = \ + ${XML_FILES:.xml=.html} if ENABLE_MANPAGES man_MANS = \ @@ -511,12 +512,11 @@ man_MANS = \ $(MANPAGES_ALIAS) noinst_DATA = \ - ${XML_FILES:.xml=.html} + $(HTML_FILES) CLEANFILES += \ - $(MANPAGES) \ - $(MANPAGES_ALIAS) \ - ${XML_FILES:.xml=.html} + $(man_MANS) \ + $(HTML_FILES) if HAVE_PYTHON noinst_DATA += \ @@ -549,15 +549,18 @@ EXTRA_DIST += \ man/index.html \ man/systemd.directives.xml +CLEANFILES += \ + man/systemd.index.xml \ + man/systemd.directives.xml + endif endif EXTRA_DIST += \ $(XML_FILES) \ - ${XML_FILES:.xml=.html} \ - $(MANPAGES) \ - $(MANPAGES_ALIAS) \ + $(HTML_FILES) \ + $(dist_MANS) \ make-man-index.py \ make-directive-index.py @@ -3624,7 +3627,6 @@ EXTRA_DIST += \ CLEANFILES += \ $(nodist_systemunit_DATA) \ $(nodist_userunit_DATA) \ - $(nodist_man_MANS) \ $(pkgconfigdata_DATA) \ $(pkgconfiglib_DATA) \ $(nodist_polkitpolicy_DATA) @@ -3664,10 +3666,6 @@ man/%.8: man/%.xml man/%.html: man/%.xml man/custom-html.xsl $(XSLTPROC_PROCESS_HTML) - -CLEANFILES += \ - $(dist_man_MANS) \ - ${XML_FILES:.xml=.html} endif # ------------------------------------------------------------------------------ -- cgit v1.2.1 From 9b2810721d63c6c5daedd4f86c963eb69f7ab120 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 8 Mar 2013 10:27:44 -0500 Subject: build-sys: assemble HTML in docs/html The goal is to be able to preview how the documenation will look when uploaded. Just point your browser at docs/html/man/index.html. --- Makefile.am | 38 +++++++++++++++++++++++++++++++++----- docs/.gitignore | 1 + 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/Makefile.am b/Makefile.am index 6634a8ca6b..bae73850bc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -104,6 +104,7 @@ UNINSTALL_EXEC_HOOKS = INSTALL_DATA_HOOKS = UNINSTALL_DATA_HOOKS = DISTCLEAN_LOCAL_HOOKS = +CLEAN_LOCAL_HOOKS = pkginclude_HEADERS = noinst_LTLIBRARIES = lib_LTLIBRARIES = @@ -518,16 +519,38 @@ CLEANFILES += \ $(man_MANS) \ $(HTML_FILES) +noinst_DATA += \ + docs/html/libudev \ + docs/html/gudev \ + docs/html/man + +DISTCLEAN_LOCAL_HOOKS += clean-html-links + +clean-html-links: + rm -f docs/html/libudev docs/html/gudev docs/html/man + if HAVE_PYTHON noinst_DATA += \ man/index.html CLEANFILES += \ - man/index.html + man/index.html -man/index.html: +man/index.html: man/systemd.index.html $(AM_V_GEN)$(LN_S) -f systemd.index.html $@ +docs/html/libudev: + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_LN)$(LN_S) -f ../libudev/html $@ + +docs/html/gudev: + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_LN)$(LN_S) -f ../gudev/html $@ + +docs/html/man: + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_LN)$(LN_S) -f ../../man $@ + NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES)) XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml $(top_srcdir)/man/*.xml.in $(top_builddir)/man/*.xml) @@ -3520,8 +3543,8 @@ PAPER = $(shell cat /etc/papersize 2>/dev/null || echo a4) SPHINXOPTS = -D latex_paper_size=$(PAPER) sphinx-%: $(AM_V_at)test -n "$(SPHINX_BUILD)" || { echo " *** sphinx-build is not available"; exit 1; } - $(AM_V_GEN)PYTHONPATH=$(DESTDIR)$(pyexecdir) LD_LIBRARY_PATH=$(DESTDIR)$(libdir) $(SPHINX_BUILD) -b $* $(SPHINXOPTS) $(top_srcdir)/src/python-systemd/docs $(top_builddir)/docs/python-systemd/ - $(AM_V_at)echo Output has been generated in $(abs_top_builddir)/docs/python-systemd/ + $(AM_V_GEN)PYTHONPATH=$(DESTDIR)$(pyexecdir) LD_LIBRARY_PATH=$(DESTDIR)$(libdir) $(SPHINX_BUILD) -b $* $(SPHINXOPTS) $(top_srcdir)/src/python-systemd/docs $(top_builddir)/docs/html/python-systemd/ + $(AM_V_at)echo Output has been generated in $(abs_top_builddir)/docs/html/python-systemd/ destdir-sphinx: all dir="$$(mktemp -d /tmp/systemd-install.XXXXXX)" && \ @@ -3529,6 +3552,11 @@ destdir-sphinx: all $(MAKE) DESTDIR="$$dir" sphinx-html && \ rm -rf "$$dir" +CLEAN_LOCAL_HOOKS += clean-sphinx + +clean-sphinx: + -rm -rf docs/html/python-systemd/ + # ------------------------------------------------------------------------------ SED_PROCESS = \ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ @@ -3802,7 +3830,7 @@ install-data-hook: $(INSTALL_DATA_HOOKS) distclean-local: $(DISTCLEAN_LOCAL_HOOKS) -clean-local: +clean-local: $(CLEAN_LOCAL_HOOKS) rm -rf $(abs_srcdir)/install-tree rm -f $(abs_srcdir)/hwdb/usb.ids $(abs_srcdir)/hwdb/pci.ids $(abs_srcdir)/hwdb/oui.txt \ $(abs_srcdir)/hwdb/iab.txt diff --git a/docs/.gitignore b/docs/.gitignore index e9fed442c2..f48033d321 100644 --- a/docs/.gitignore +++ b/docs/.gitignore @@ -1 +1,2 @@ /gtk-doc.make +/html/ -- cgit v1.2.1 From 87cfe600c7a5c0632f8dcc7713b0b1e3825b75cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 8 Mar 2013 11:03:50 -0500 Subject: build-sys: generate links for html alias pages --- Makefile-man.am | 403 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ Makefile.am | 70 ++++++---- make-man-rules.py | 9 ++ 3 files changed, 456 insertions(+), 26 deletions(-) diff --git a/Makefile-man.am b/Makefile-man.am index 8d48ee05ef..6e63135756 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -283,6 +283,288 @@ man/systemd-udevd.8: man/systemd-udevd.service.8 man/systemd-update-utmp-shutdown.service.8: man/systemd-update-utmp-runlevel.service.8 man/systemd-update-utmp.8: man/systemd-update-utmp-runlevel.service.8 man/systemd-user.conf.5: man/systemd-system.conf.5 +man/SD_ALERT.html: man/sd-daemon.html + $(html-alias) + +man/SD_CRIT.html: man/sd-daemon.html + $(html-alias) + +man/SD_DEBUG.html: man/sd-daemon.html + $(html-alias) + +man/SD_EMERG.html: man/sd-daemon.html + $(html-alias) + +man/SD_ERR.html: man/sd-daemon.html + $(html-alias) + +man/SD_ID128_CONST_STR.html: man/sd-id128.html + $(html-alias) + +man/SD_ID128_FORMAT_STR.html: man/sd-id128.html + $(html-alias) + +man/SD_ID128_FORMAT_VAL.html: man/sd-id128.html + $(html-alias) + +man/SD_ID128_MAKE.html: man/sd-id128.html + $(html-alias) + +man/SD_INFO.html: man/sd-daemon.html + $(html-alias) + +man/SD_JOURNAL_APPEND.html: man/sd_journal_get_fd.html + $(html-alias) + +man/SD_JOURNAL_FOREACH.html: man/sd_journal_next.html + $(html-alias) + +man/SD_JOURNAL_FOREACH_BACKWARDS.html: man/sd_journal_next.html + $(html-alias) + +man/SD_JOURNAL_FOREACH_DATA.html: man/sd_journal_get_data.html + $(html-alias) + +man/SD_JOURNAL_FOREACH_UNIQUE.html: man/sd_journal_query_unique.html + $(html-alias) + +man/SD_JOURNAL_INVALIDATE.html: man/sd_journal_get_fd.html + $(html-alias) + +man/SD_JOURNAL_LOCAL_ONLY.html: man/sd_journal_open.html + $(html-alias) + +man/SD_JOURNAL_NOP.html: man/sd_journal_get_fd.html + $(html-alias) + +man/SD_JOURNAL_RUNTIME_ONLY.html: man/sd_journal_open.html + $(html-alias) + +man/SD_JOURNAL_SUPPRESS_LOCATION.html: man/sd_journal_print.html + $(html-alias) + +man/SD_JOURNAL_SYSTEM_ONLY.html: man/sd_journal_open.html + $(html-alias) + +man/SD_LISTEN_FDS_START.html: man/sd_listen_fds.html + $(html-alias) + +man/SD_NOTICE.html: man/sd-daemon.html + $(html-alias) + +man/SD_WARNING.html: man/sd-daemon.html + $(html-alias) + +man/init.html: man/systemd.html + $(html-alias) + +man/poweroff.html: man/halt.html + $(html-alias) + +man/reboot.html: man/halt.html + $(html-alias) + +man/sd_id128_equal.html: man/sd-id128.html + $(html-alias) + +man/sd_id128_from_string.html: man/sd_id128_to_string.html + $(html-alias) + +man/sd_id128_get_boot.html: man/sd_id128_get_machine.html + $(html-alias) + +man/sd_id128_t.html: man/sd-id128.html + $(html-alias) + +man/sd_is_mq.html: man/sd_is_fifo.html + $(html-alias) + +man/sd_is_socket.html: man/sd_is_fifo.html + $(html-alias) + +man/sd_is_socket_inet.html: man/sd_is_fifo.html + $(html-alias) + +man/sd_is_socket_unix.html: man/sd_is_fifo.html + $(html-alias) + +man/sd_journal.html: man/sd_journal_open.html + $(html-alias) + +man/sd_journal_add_disjunction.html: man/sd_journal_add_match.html + $(html-alias) + +man/sd_journal_close.html: man/sd_journal_open.html + $(html-alias) + +man/sd_journal_enumerate_data.html: man/sd_journal_get_data.html + $(html-alias) + +man/sd_journal_enumerate_unique.html: man/sd_journal_query_unique.html + $(html-alias) + +man/sd_journal_flush_matches.html: man/sd_journal_add_match.html + $(html-alias) + +man/sd_journal_get_catalog_for_message_id.html: man/sd_journal_get_catalog.html + $(html-alias) + +man/sd_journal_get_cutoff_monotonic_usec.html: man/sd_journal_get_cutoff_realtime_usec.html + $(html-alias) + +man/sd_journal_get_data_threshold.html: man/sd_journal_get_data.html + $(html-alias) + +man/sd_journal_get_monotonic_usec.html: man/sd_journal_get_realtime_usec.html + $(html-alias) + +man/sd_journal_next_skip.html: man/sd_journal_next.html + $(html-alias) + +man/sd_journal_open_directory.html: man/sd_journal_open.html + $(html-alias) + +man/sd_journal_perror.html: man/sd_journal_print.html + $(html-alias) + +man/sd_journal_previous.html: man/sd_journal_next.html + $(html-alias) + +man/sd_journal_previous_skip.html: man/sd_journal_next.html + $(html-alias) + +man/sd_journal_printv.html: man/sd_journal_print.html + $(html-alias) + +man/sd_journal_process.html: man/sd_journal_get_fd.html + $(html-alias) + +man/sd_journal_reliable_fd.html: man/sd_journal_get_fd.html + $(html-alias) + +man/sd_journal_restart_data.html: man/sd_journal_get_data.html + $(html-alias) + +man/sd_journal_restart_unique.html: man/sd_journal_query_unique.html + $(html-alias) + +man/sd_journal_seek_cursor.html: man/sd_journal_seek_head.html + $(html-alias) + +man/sd_journal_seek_monotonic_usec.html: man/sd_journal_seek_head.html + $(html-alias) + +man/sd_journal_seek_realtime_usec.html: man/sd_journal_seek_head.html + $(html-alias) + +man/sd_journal_seek_tail.html: man/sd_journal_seek_head.html + $(html-alias) + +man/sd_journal_send.html: man/sd_journal_print.html + $(html-alias) + +man/sd_journal_sendv.html: man/sd_journal_print.html + $(html-alias) + +man/sd_journal_set_data_threshold.html: man/sd_journal_get_data.html + $(html-alias) + +man/sd_journal_test_cursor.html: man/sd_journal_get_cursor.html + $(html-alias) + +man/sd_journal_wait.html: man/sd_journal_get_fd.html + $(html-alias) + +man/sd_notifyf.html: man/sd_notify.html + $(html-alias) + +man/systemd-ask-password-console.path.html: man/systemd-ask-password-console.service.html + $(html-alias) + +man/systemd-ask-password-wall.path.html: man/systemd-ask-password-console.service.html + $(html-alias) + +man/systemd-ask-password-wall.service.html: man/systemd-ask-password-console.service.html + $(html-alias) + +man/systemd-fsck-root.service.html: man/systemd-fsck@.service.html + $(html-alias) + +man/systemd-fsck.html: man/systemd-fsck@.service.html + $(html-alias) + +man/systemd-hibernate.service.html: man/systemd-suspend.service.html + $(html-alias) + +man/systemd-hybrid-sleep.service.html: man/systemd-suspend.service.html + $(html-alias) + +man/systemd-initctl.html: man/systemd-initctl.service.html + $(html-alias) + +man/systemd-initctl.socket.html: man/systemd-initctl.service.html + $(html-alias) + +man/systemd-journald.html: man/systemd-journald.service.html + $(html-alias) + +man/systemd-journald.socket.html: man/systemd-journald.service.html + $(html-alias) + +man/systemd-kexec.service.html: man/systemd-halt.service.html + $(html-alias) + +man/systemd-poweroff.service.html: man/systemd-halt.service.html + $(html-alias) + +man/systemd-reboot.service.html: man/systemd-halt.service.html + $(html-alias) + +man/systemd-remount-fs.html: man/systemd-remount-fs.service.html + $(html-alias) + +man/systemd-shutdown.html: man/systemd-halt.service.html + $(html-alias) + +man/systemd-shutdownd.html: man/systemd-shutdownd.service.html + $(html-alias) + +man/systemd-shutdownd.socket.html: man/systemd-shutdownd.service.html + $(html-alias) + +man/systemd-sleep.html: man/systemd-suspend.service.html + $(html-alias) + +man/systemd-sysctl.html: man/systemd-sysctl.service.html + $(html-alias) + +man/systemd-tmpfiles-clean.service.html: man/systemd-tmpfiles.html + $(html-alias) + +man/systemd-tmpfiles-clean.timer.html: man/systemd-tmpfiles.html + $(html-alias) + +man/systemd-tmpfiles-setup.service.html: man/systemd-tmpfiles.html + $(html-alias) + +man/systemd-udevd-control.socket.html: man/systemd-udevd.service.html + $(html-alias) + +man/systemd-udevd-kernel.socket.html: man/systemd-udevd.service.html + $(html-alias) + +man/systemd-udevd.html: man/systemd-udevd.service.html + $(html-alias) + +man/systemd-update-utmp-shutdown.service.html: man/systemd-update-utmp-runlevel.service.html + $(html-alias) + +man/systemd-update-utmp.html: man/systemd-update-utmp-runlevel.service.html + $(html-alias) + +man/systemd-user.conf.html: man/systemd-system.conf.html + $(html-alias) + if ENABLE_BINFMT MANPAGES += \ @@ -291,6 +573,9 @@ MANPAGES += \ MANPAGES_ALIAS += \ man/systemd-binfmt.8 man/systemd-binfmt.8: man/systemd-binfmt.service.8 +man/systemd-binfmt.html: man/systemd-binfmt.service.html + $(html-alias) + endif if ENABLE_BOOTCHART @@ -300,6 +585,7 @@ MANPAGES += \ MANPAGES_ALIAS += \ # + endif if ENABLE_COREDUMP @@ -308,6 +594,7 @@ MANPAGES += \ MANPAGES_ALIAS += \ # + endif if ENABLE_HOSTNAMED @@ -317,6 +604,9 @@ MANPAGES += \ MANPAGES_ALIAS += \ man/systemd-hostnamed.8 man/systemd-hostnamed.8: man/systemd-hostnamed.service.8 +man/systemd-hostnamed.html: man/systemd-hostnamed.service.html + $(html-alias) + endif if ENABLE_LOCALED @@ -326,6 +616,9 @@ MANPAGES += \ MANPAGES_ALIAS += \ man/systemd-localed.8 man/systemd-localed.8: man/systemd-localed.service.8 +man/systemd-localed.html: man/systemd-localed.service.html + $(html-alias) + endif if ENABLE_LOGIND @@ -335,6 +628,9 @@ MANPAGES += \ MANPAGES_ALIAS += \ man/systemd-logind.8 man/systemd-logind.8: man/systemd-logind.service.8 +man/systemd-logind.html: man/systemd-logind.service.html + $(html-alias) + endif if ENABLE_QUOTACHECK @@ -343,6 +639,9 @@ MANPAGES += \ MANPAGES_ALIAS += \ man/systemd-quotacheck.8 man/systemd-quotacheck.8: man/systemd-quotacheck.service.8 +man/systemd-quotacheck.html: man/systemd-quotacheck.service.html + $(html-alias) + endif if ENABLE_RANDOMSEED @@ -353,6 +652,12 @@ MANPAGES_ALIAS += \ man/systemd-random-seed.8 man/systemd-random-seed-save.service.8: man/systemd-random-seed-load.service.8 man/systemd-random-seed.8: man/systemd-random-seed-load.service.8 +man/systemd-random-seed-save.service.html: man/systemd-random-seed-load.service.html + $(html-alias) + +man/systemd-random-seed.html: man/systemd-random-seed-load.service.html + $(html-alias) + endif if ENABLE_READAHEAD @@ -369,6 +674,18 @@ man/systemd-readahead-collect.service.8: man/systemd-readahead-replay.service.8 man/systemd-readahead-done.service.8: man/systemd-readahead-replay.service.8 man/systemd-readahead-done.timer.8: man/systemd-readahead-replay.service.8 man/systemd-readahead.8: man/systemd-readahead-replay.service.8 +man/systemd-readahead-collect.service.html: man/systemd-readahead-replay.service.html + $(html-alias) + +man/systemd-readahead-done.service.html: man/systemd-readahead-replay.service.html + $(html-alias) + +man/systemd-readahead-done.timer.html: man/systemd-readahead-replay.service.html + $(html-alias) + +man/systemd-readahead.html: man/systemd-readahead-replay.service.html + $(html-alias) + endif if ENABLE_TIMEDATED @@ -378,6 +695,9 @@ MANPAGES += \ MANPAGES_ALIAS += \ man/systemd-timedated.8 man/systemd-timedated.8: man/systemd-timedated.service.8 +man/systemd-timedated.html: man/systemd-timedated.service.html + $(html-alias) + endif if ENABLE_VCONSOLE @@ -387,6 +707,9 @@ MANPAGES += \ MANPAGES_ALIAS += \ man/systemd-vconsole-setup.8 man/systemd-vconsole-setup.8: man/systemd-vconsole-setup.service.8 +man/systemd-vconsole-setup.html: man/systemd-vconsole-setup.service.html + $(html-alias) + endif if HAVE_KMOD @@ -396,6 +719,9 @@ MANPAGES += \ MANPAGES_ALIAS += \ man/systemd-modules-load.8 man/systemd-modules-load.8: man/systemd-modules-load.service.8 +man/systemd-modules-load.html: man/systemd-modules-load.service.html + $(html-alias) + endif if HAVE_LIBCRYPTSETUP @@ -406,6 +732,9 @@ MANPAGES += \ MANPAGES_ALIAS += \ man/systemd-cryptsetup.8 man/systemd-cryptsetup.8: man/systemd-cryptsetup@.service.8 +man/systemd-cryptsetup.html: man/systemd-cryptsetup@.service.html + $(html-alias) + endif if HAVE_MICROHTTPD @@ -416,6 +745,12 @@ MANPAGES_ALIAS += \ man/systemd-journal-gatewayd.socket.8 man/systemd-journal-gatewayd.8: man/systemd-journal-gatewayd.service.8 man/systemd-journal-gatewayd.socket.8: man/systemd-journal-gatewayd.service.8 +man/systemd-journal-gatewayd.html: man/systemd-journal-gatewayd.service.html + $(html-alias) + +man/systemd-journal-gatewayd.socket.html: man/systemd-journal-gatewayd.service.html + $(html-alias) + endif if HAVE_MYHOSTNAME @@ -424,6 +759,7 @@ MANPAGES += \ MANPAGES_ALIAS += \ # + endif if HAVE_PAM @@ -483,6 +819,72 @@ man/sd_uid_get_seats.3: man/sd_uid_get_state.3 man/sd_uid_get_sessions.3: man/sd_uid_get_state.3 man/sd_uid_is_on_seat.3: man/sd_uid_get_state.3 man/systemd-user-sessions.8: man/systemd-user-sessions.service.8 +man/sd_get_sessions.html: man/sd_get_seats.html + $(html-alias) + +man/sd_get_uids.html: man/sd_get_seats.html + $(html-alias) + +man/sd_login_monitor.html: man/sd_login_monitor_new.html + $(html-alias) + +man/sd_login_monitor_flush.html: man/sd_login_monitor_new.html + $(html-alias) + +man/sd_login_monitor_get_fd.html: man/sd_login_monitor_new.html + $(html-alias) + +man/sd_login_monitor_unref.html: man/sd_login_monitor_new.html + $(html-alias) + +man/sd_pid_get_owner_uid.html: man/sd_pid_get_session.html + $(html-alias) + +man/sd_pid_get_unit.html: man/sd_pid_get_session.html + $(html-alias) + +man/sd_seat_can_multi_session.html: man/sd_seat_get_active.html + $(html-alias) + +man/sd_seat_get_sessions.html: man/sd_seat_get_active.html + $(html-alias) + +man/sd_session_get_class.html: man/sd_session_is_active.html + $(html-alias) + +man/sd_session_get_display.html: man/sd_session_is_active.html + $(html-alias) + +man/sd_session_get_seat.html: man/sd_session_is_active.html + $(html-alias) + +man/sd_session_get_service.html: man/sd_session_is_active.html + $(html-alias) + +man/sd_session_get_state.html: man/sd_session_is_active.html + $(html-alias) + +man/sd_session_get_tty.html: man/sd_session_is_active.html + $(html-alias) + +man/sd_session_get_type.html: man/sd_session_is_active.html + $(html-alias) + +man/sd_session_get_uid.html: man/sd_session_is_active.html + $(html-alias) + +man/sd_uid_get_seats.html: man/sd_uid_get_state.html + $(html-alias) + +man/sd_uid_get_sessions.html: man/sd_uid_get_state.html + $(html-alias) + +man/sd_uid_is_on_seat.html: man/sd_uid_get_state.html + $(html-alias) + +man/systemd-user-sessions.html: man/systemd-user-sessions.service.html + $(html-alias) + endif if HAVE_PYTHON @@ -492,6 +894,7 @@ MANPAGES += \ MANPAGES_ALIAS += \ # + endif CLEANFILES += \ diff --git a/Makefile.am b/Makefile.am index bae73850bc..bea545259d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -109,6 +109,7 @@ pkginclude_HEADERS = noinst_LTLIBRARIES = lib_LTLIBRARIES = include_HEADERS = +noinst_DATA = pkgconfiglib_DATA = polkitpolicy_in_in_files = polkitpolicy_in_files = @@ -260,6 +261,10 @@ AM_V_GPERF = $(AM_V_GPERF_$(V)) AM_V_GPERF_ = $(AM_V_GPERF_$(AM_DEFAULT_VERBOSITY)) AM_V_GPERF_0 = @echo " GPERF " $@; +AM_V_LN = $(AM_V_LN_$(V)) +AM_V_LN_ = $(AM_V_LN_$(AM_DEFAULT_VERBOSITY)) +AM_V_LN_0 = @echo " LN " $@; + # ------------------------------------------------------------------------------ rootbin_PROGRAMS = \ systemctl \ @@ -506,51 +511,43 @@ XML_FILES = \ ${patsubst %.1,%.xml,${patsubst %.3,%.xml,${patsubst %.5,%.xml,${patsubst %.7,%.xml,${patsubst %.8,%.xml,$(MANPAGES)}}}}} HTML_FILES = \ ${XML_FILES:.xml=.html} +HTML_ALIAS = \ + ${patsubst %.1,%.html,${patsubst %.3,%.html,${patsubst %.5,%.html,${patsubst %.7,%.html,${patsubst %.8,%.html,$(MANPAGES_ALIAS)}}}}} if ENABLE_MANPAGES man_MANS = \ $(MANPAGES) \ $(MANPAGES_ALIAS) -noinst_DATA = \ - $(HTML_FILES) +noinst_DATA += \ + $(HTML_FILES) \ + $(HTML_ALIAS) CLEANFILES += \ $(man_MANS) \ - $(HTML_FILES) + $(HTML_FILES) \ + $(HTML_ALIAS) + +docs/html/man: + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_LN)$(LN_S) -f ../../man $@ noinst_DATA += \ - docs/html/libudev \ - docs/html/gudev \ docs/html/man -DISTCLEAN_LOCAL_HOOKS += clean-html-links - -clean-html-links: - rm -f docs/html/libudev docs/html/gudev docs/html/man +CLEANFILES += \ + docs/html/man if HAVE_PYTHON +man/index.html: man/systemd.index.html + $(AM_V_LN)$(LN_S) -f systemd.index.html $@ + noinst_DATA += \ man/index.html CLEANFILES += \ man/index.html -man/index.html: man/systemd.index.html - $(AM_V_GEN)$(LN_S) -f systemd.index.html $@ - -docs/html/libudev: - $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_LN)$(LN_S) -f ../libudev/html $@ - -docs/html/gudev: - $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_LN)$(LN_S) -f ../gudev/html $@ - -docs/html/man: - $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_LN)$(LN_S) -f ../../man $@ - NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES)) XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml $(top_srcdir)/man/*.xml.in $(top_builddir)/man/*.xml) @@ -583,6 +580,7 @@ endif EXTRA_DIST += \ $(XML_FILES) \ $(HTML_FILES) \ + $(HTML_ALIAS) \ $(dist_MANS) \ make-man-index.py \ make-directive-index.py @@ -1640,6 +1638,10 @@ EXTRA_DIST += \ if ENABLE_GTK_DOC SUBDIRS += \ docs/libudev + +noinst_DATA += \ + docs/html/libudev \ + docs/html/gudev endif include_HEADERS += \ @@ -1682,7 +1684,17 @@ EXTRA_DIST += \ src/libudev/libudev.sym CLEANFILES += \ - src/libudev/libudev.pc + src/libudev/libudev.pc \ + docs/html/libudev \ + docs/html/gudev + +docs/html/libudev: + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_LN)$(LN_S) -f ../libudev/html $@ + +docs/html/gudev: + $(AM_V_at)$(MKDIR_P) $(dir $@) + $(AM_V_LN)$(LN_S) -f ../gudev/html $@ # move lib from $(libdir) to $(rootlibdir) and update devel link, if needed libudev-install-hook: @@ -3537,7 +3549,6 @@ src/python-systemd/id128-constants.h: src/systemd/sd-messages.h Makefile BUILT_SOURCES += \ src/python-systemd/id128-constants.h -endif PAPER = $(shell cat /etc/papersize 2>/dev/null || echo a4) SPHINXOPTS = -D latex_paper_size=$(PAPER) @@ -3552,6 +3563,8 @@ destdir-sphinx: all $(MAKE) DESTDIR="$$dir" sphinx-html && \ rm -rf "$$dir" +endif + CLEAN_LOCAL_HOOKS += clean-sphinx clean-sphinx: @@ -3694,6 +3707,11 @@ man/%.8: man/%.xml man/%.html: man/%.xml man/custom-html.xsl $(XSLTPROC_PROCESS_HTML) + +define html-alias + $(AM_V_LN)$(LN_S) $(notdir $<) $@ +endef + endif # ------------------------------------------------------------------------------ diff --git a/make-man-rules.py b/make-man-rules.py index 5415984d88..9f53b55bbd 100644 --- a/make-man-rules.py +++ b/make-man-rules.py @@ -29,6 +29,7 @@ MANPAGES += \\ MANPAGES_ALIAS += \\ {aliases} {rules} +{htmlrules} ''' CONDITIONAL = '''\ @@ -51,6 +52,11 @@ CLEANFILES += \\ {cleanfiles} ''' +HTML_ALIAS_RULE = '''\ +{}.html: {}.html + $(html-alias) +''' + def man(page, number): return 'man/{}.{}'.format(page, number) @@ -91,6 +97,9 @@ def make_makefile(rules, cleanfiles): rules='\n'.join('{}: {}'.format(k,v) for k,v in sorted(rulegroup.items()) if k != v), + htmlrules='\n'.join(HTML_ALIAS_RULE.format(k[:-2],v[:-2]) + for k,v in sorted(rulegroup.items()) + if k != v), conditional=conditional) for conditional,rulegroup in sorted(rules.items())) + \ CLEANFILES.format(cleanfiles=mjoin(cleanfiles)) -- cgit v1.2.1 From 80cb917e6248c15fd4a95d29954b3fd1e3d66b06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 7 Mar 2013 20:13:40 -0500 Subject: man: use lxml for faster generation and pretty printing --- README | 1 + make-directive-index.py | 9 +++++++-- make-man-index.py | 9 +++++++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/README b/README index 9d7a54769d..b8d1f42e25 100644 --- a/README +++ b/README @@ -116,6 +116,7 @@ REQUIREMENTS: gtkdocize (optional) python (optional) sphinx (optional) + python-lxml (entirely optional) When systemd-hostnamed is used it is strongly recommended to install nss-myhostname to ensure that in a world of diff --git a/make-directive-index.py b/make-directive-index.py index c61383b0a4..039efaa434 100755 --- a/make-directive-index.py +++ b/make-directive-index.py @@ -19,7 +19,12 @@ import sys import collections -import xml.etree.ElementTree as tree +try: + from lxml import etree as tree + PRETTY = dict(pretty_print=True) +except ImportError: + import xml.etree.ElementTree as tree + PRETTY = {} import re TEMPLATE = '''\ @@ -277,4 +282,4 @@ def make_page(*xml_files): return _make_page(template, directive_groups, formatting) if __name__ == '__main__': - tree.dump(make_page(*sys.argv[1:])) + tree.dump(make_page(*sys.argv[1:]), **PRETTY) diff --git a/make-man-index.py b/make-man-index.py index d38d5b63f6..d9ab5cc752 100755 --- a/make-man-index.py +++ b/make-man-index.py @@ -19,7 +19,12 @@ # along with systemd; If not, see . import collections -import xml.etree.ElementTree as tree +try: + from lxml import etree as tree + PRETTY = dict(pretty_print=True) +except ImportError: + import xml.etree.ElementTree as tree + PRETTY = {} import sys import re MDASH = ' — ' if sys.version_info.major >= 3 else ' -- ' @@ -130,4 +135,4 @@ def make_page(xml_files): return template if __name__ == '__main__': - tree.dump(make_page(sys.argv[1:])) + tree.dump(make_page(sys.argv[1:]), **PRETTY) -- cgit v1.2.1 From 9f06e912f6a0db45c80d41e94eea65caae7a7c90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 8 Mar 2013 11:45:37 -0500 Subject: systemd-python: provide version info to sphinx --- Makefile.am | 2 +- src/python-systemd/docs/conf.py | 9 --------- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/Makefile.am b/Makefile.am index bea545259d..7b1f17f65a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3551,7 +3551,7 @@ BUILT_SOURCES += \ src/python-systemd/id128-constants.h PAPER = $(shell cat /etc/papersize 2>/dev/null || echo a4) -SPHINXOPTS = -D latex_paper_size=$(PAPER) +SPHINXOPTS = -D latex_paper_size=$(PAPER) -D version=$(VERSION) -D release=$(VERSION) sphinx-%: $(AM_V_at)test -n "$(SPHINX_BUILD)" || { echo " *** sphinx-build is not available"; exit 1; } $(AM_V_GEN)PYTHONPATH=$(DESTDIR)$(pyexecdir) LD_LIBRARY_PATH=$(DESTDIR)$(libdir) $(SPHINX_BUILD) -b $* $(SPHINXOPTS) $(top_srcdir)/src/python-systemd/docs $(top_builddir)/docs/html/python-systemd/ diff --git a/src/python-systemd/docs/conf.py b/src/python-systemd/docs/conf.py index 4a55778b7d..ad3f0023c7 100644 --- a/src/python-systemd/docs/conf.py +++ b/src/python-systemd/docs/conf.py @@ -42,15 +42,6 @@ master_doc = 'index' # General information about the project. project = u'python-systemd' -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '197' -# The full version, including alpha/beta/rc tags. -release = '197' - # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. #language = None -- cgit v1.2.1 From fa28d83678ffe84efcabdb45bac6be39d4d91d98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 8 Mar 2013 13:46:21 -0500 Subject: html: make python docs look more like the rest The result is ugly enough, I hope, to motivate someone with design skills to fix it. --- src/python-systemd/docs/conf.py | 4 +- src/python-systemd/docs/default.css | 196 ++++++++++++++++++++++++++++++++++++ 2 files changed, 198 insertions(+), 2 deletions(-) create mode 100644 src/python-systemd/docs/default.css diff --git a/src/python-systemd/docs/conf.py b/src/python-systemd/docs/conf.py index ad3f0023c7..1919170bb1 100644 --- a/src/python-systemd/docs/conf.py +++ b/src/python-systemd/docs/conf.py @@ -28,7 +28,7 @@ import sys, os extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.coverage', 'sphinx.ext.viewcode'] # Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] +templates_path = ['.'] # The suffix of source filenames. source_suffix = '.rst' @@ -110,7 +110,7 @@ html_theme = 'default' # Add any paths that contain custom static files (such as style sheets) here, # relative to this directory. They are copied after the builtin static files, # so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = [] +html_static_path = ['.'] # If not '', a 'Last updated on:' timestamp is inserted at every page bottom, # using the given strftime format. diff --git a/src/python-systemd/docs/default.css b/src/python-systemd/docs/default.css new file mode 100644 index 0000000000..7c097d64a2 --- /dev/null +++ b/src/python-systemd/docs/default.css @@ -0,0 +1,196 @@ +@import url("basic.css"); + +/* -- page layout ----------------------------------------------------------- */ + +div.documentwrapper { + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 230px; +} + +div.body { + background-color: #ffffff; + color: #000000; + padding: 0 20px 30px 20px; +} + +div.footer { + color: #ffffff; + width: 100%; + padding: 9px 0 9px 0; + text-align: center; + font-size: 75%; +} + +div.footer a { + color: #ffffff; + text-decoration: underline; +} + +div.related { + background-color: #133f52; + line-height: 30px; + color: #ffffff; +} + +div.related a { + color: #ffffff; +} + +div.sphinxsidebar { + background-color: #dddddd; +} + +div.sphinxsidebar p.topless { + margin: 5px 10px 10px 10px; +} + +div.sphinxsidebar ul { + margin: 10px; + padding: 0; +} + +div.sphinxsidebar input { + border: 1px solid #000000; + font-family: sans-serif; + font-size: 1em; +} + + + +/* -- hyperlink styles ------------------------------------------------------ */ + +a { + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + + + +/* -- body styles ----------------------------------------------------------- */ + +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: 'Trebuchet MS', sans-serif; + background-color: #f2f2f2; + font-weight: normal; + color: #20435c; + border-bottom: 1px solid #ccc; + margin: 20px -20px 10px -20px; + padding: 3px 0 3px 10px; +} + +div.body h1 { margin-top: 0; font-size: 200%; } +div.body h2 { font-size: 160%; } +div.body h3 { font-size: 140%; } +div.body h4 { font-size: 120%; } +div.body h5 { font-size: 110%; } +div.body h6 { font-size: 100%; } + +a.headerlink { + color: #c60f0f; + font-size: 0.8em; + padding: 0 4px 0 4px; + text-decoration: none; +} + +a.headerlink:hover { + background-color: #c60f0f; + color: white; +} + +div.body p, div.body dd, div.body li { + text-align: justify; + line-height: 130%; +} + +div.admonition p.admonition-title + p { + display: inline; +} + +div.admonition p { + margin-bottom: 5px; +} + +div.admonition pre { + margin-bottom: 5px; +} + +div.admonition ul, div.admonition ol { + margin-bottom: 5px; +} + +div.note { + background-color: #eee; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #eee; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre { + padding: 5px; + background-color: #eeffcc; + color: #333333; + line-height: 120%; + border: 1px solid #ac9; + border-left: none; + border-right: none; +} + +tt { + background-color: #ecf0f3; + padding: 0 1px 0 1px; + font-size: 0.95em; +} + +th { + background-color: #ede; +} + +.warning tt { + background: #efc2c2; +} + +.note tt { + background: #d6d6d6; +} + +.viewcode-back { + font-family: sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} -- cgit v1.2.1 From 082cca735b831228a465e9c8e3af65d239b286af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 9 Mar 2013 09:55:03 -0500 Subject: python/docs: use the same links on top as in man pages I forgot to commit the layout file, because it was gitignored. Fixed now. --- Makefile.am | 2 +- src/python-systemd/docs/.gitignore | 1 + src/python-systemd/docs/layout.html | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 src/python-systemd/docs/.gitignore create mode 100644 src/python-systemd/docs/layout.html diff --git a/Makefile.am b/Makefile.am index 7b1f17f65a..89768e6c32 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3898,7 +3898,7 @@ doc-sync: all destdir-sphinx gtkdoc-rebase --html-dir=docs/gudev/html --online rsync -av --delete docs/gudev/html/ --omit-dir-times $(www_target)/gudev/ rsync -av --delete-excluded --include="*.html" --exclude="*" --omit-dir-times man/ $(www_target)/man/ - rsync -av --delete --omit-dir-times docs/python-systemd/ $(www_target)/python-systemd/ + rsync -av --delete --omit-dir-times docs/html/python-systemd/ $(www_target)/python-systemd/ git-tag: git tag "v$(VERSION)" -m "systemd $(VERSION)" diff --git a/src/python-systemd/docs/.gitignore b/src/python-systemd/docs/.gitignore new file mode 100644 index 0000000000..b06a965e6a --- /dev/null +++ b/src/python-systemd/docs/.gitignore @@ -0,0 +1 @@ +!layout.html diff --git a/src/python-systemd/docs/layout.html b/src/python-systemd/docs/layout.html new file mode 100644 index 0000000000..78989143ed --- /dev/null +++ b/src/python-systemd/docs/layout.html @@ -0,0 +1,17 @@ +{% extends "!layout.html" %} + +{% block relbar1 %} + Index · + Directives · + Python · + libudev · + gudev + systemd v. {{release}} +
+{% endblock %} + +{# remove the lower relbar #} +{% block relbar2 %} {% endblock %} + +{# remove the footer #} +{% block footer %} {% endblock %} -- cgit v1.2.1 From c33e2a7c460529cc058a84c47b0beb508d8f9c72 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 9 Mar 2013 18:14:54 +0100 Subject: TODO: update --- TODO | 2 -- 1 file changed, 2 deletions(-) diff --git a/TODO b/TODO index 08b7bc99ea..913cc6ce13 100644 --- a/TODO +++ b/TODO @@ -234,8 +234,6 @@ Features: freeze (http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git) and standby (https://bugs.freedesktop.org/show_bug.cgi?id=57793) as suspend modes -* When shutdown.target is queued begin with an asynchronous sync()? - * introduce ntp.service (or suchlike) as symlink that is used to arbitrate between various NTP implementations * deal with sendmail/postfix exclusivity -- cgit v1.2.1 From ad88e758d1b08a21d25971b074e119c167757109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 9 Mar 2013 18:55:31 -0500 Subject: Fix typos of /etc/systemd/systemd The 198 announcement mentions "/etc/systemd/systemd/foobar.service.d/*.conf", is that a typo? I only have a /etc/systemd/system/. Is there a manpage describing this new feature? --- NEWS | 2 +- src/test/test-unit-file.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NEWS b/NEWS index 00e0098878..9fc5085b03 100644 --- a/NEWS +++ b/NEWS @@ -7,7 +7,7 @@ CHANGES WITH 198: themselves. More specifically, if the administrator wants to change one value for a service file foobar.service he can now do so by dropping in a configuration snippet into - /etc/systemd/systemd/foobar.service.d/*.conf. The unit logic + /etc/systemd/system/foobar.service.d/*.conf. The unit logic will load all these snippets and apply them on top of the main unit configuration file, possibly extending or overriding its settings. Using these drop-in snippets is diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c index 8a71ee94bb..c1a2d4a7f3 100644 --- a/src/test/test-unit-file.c +++ b/src/test/test-unit-file.c @@ -256,12 +256,12 @@ static void test_load_env_file_3(void) { static void test_install_printf(void) { char name[] = "name.service", - path[] = "/run/systemd/systemd/name.service", + path[] = "/run/systemd/system/name.service", user[] = "xxxx-no-such-user"; InstallInfo i = {name, path, user}; InstallInfo i2 = {name, path, NULL}; char name3[] = "name@inst.service", - path3[] = "/run/systemd/systemd/name.service"; + path3[] = "/run/systemd/system/name.service"; InstallInfo i3 = {name3, path3, user}; InstallInfo i4 = {name3, path3, NULL}; -- cgit v1.2.1 From bc6f2e7c62bcd08177f879423188c54289694619 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sun, 10 Mar 2013 22:47:56 +0100 Subject: bootctl: print secure boot flags --- src/boot/boot-efi.c | 3 +++ src/boot/boot.h | 2 ++ src/boot/bootctl.c | 35 +++++++++++++++++++++++------------ src/shared/efivars.c | 30 ++++++++++++++++++++++++++++++ src/shared/efivars.h | 2 ++ 5 files changed, 60 insertions(+), 12 deletions(-) diff --git a/src/boot/boot-efi.c b/src/boot/boot-efi.c index 51f12c0c1a..9960c4d742 100644 --- a/src/boot/boot-efi.c +++ b/src/boot/boot-efi.c @@ -158,6 +158,9 @@ int boot_info_query(struct boot_info *info) { char buf[64]; char *loader_active = NULL; + info->fw_secure_boot = is_efi_secure_boot(); + info->fw_secure_boot_setup_mode = is_efi_secure_boot_setup_mode(); + efi_get_variable_string(EFI_VENDOR_LOADER, "LoaderInfo", &info->loader); get_boot_entries(info); diff --git a/src/boot/boot.h b/src/boot/boot.h index febee123d5..bd8dc69d3d 100644 --- a/src/boot/boot.h +++ b/src/boot/boot.h @@ -45,6 +45,8 @@ struct boot_info { sd_id128_t boot_id; char *fw_type; char *fw_info; + int fw_secure_boot; + int fw_secure_boot_setup_mode; struct boot_info_entry *fw_entries; size_t fw_entries_count; uint16_t *fw_entries_order; diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index 2a42898e39..35daad81c6 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -143,33 +143,44 @@ static int show_status(char **args, unsigned n) { err = boot_info_query(info); - printf(" Machine ID: %s\n", sd_id128_to_string(info->machine_id, buf)); - printf(" Boot ID: %s\n", sd_id128_to_string(info->boot_id, buf)); + printf("Machine:\n"); + printf(" ID: %s\n", sd_id128_to_string(info->machine_id, buf)); + printf(" Boot ID: %s\n", sd_id128_to_string(info->boot_id, buf)); + printf("\n"); + + printf("Firmware:\n"); if (info->fw_type) - printf(" Firmware: %s (%s)\n", info->fw_type, strna(info->fw_info)); + printf(" Type: %s (%s)\n", info->fw_type, strna(info->fw_info)); + + if (info->fw_secure_boot >= 0) + printf(" Secure Boot: %s\n", info->fw_secure_boot ? "enabled" : "disabled"); + if (info->fw_secure_boot_setup_mode >= 0) + printf(" Setup Mode: %s\n", info->fw_secure_boot_setup_mode ? "setup" : "user"); if (info->fw_entry_active >= 0) { - printf("Firmware entry: %s\n", strna(info->fw_entries[info->fw_entry_active].title)); + printf(" Title: %s\n", strna(info->fw_entries[info->fw_entry_active].title)); if (info->fw_entries[info->fw_entry_active].path) - printf(" %s\n", info->fw_entries[info->fw_entry_active].path); + printf(" Binary: %s\n", info->fw_entries[info->fw_entry_active].path); if (!sd_id128_equal(info->fw_entries[info->fw_entry_active].part_uuid, SD_ID128_NULL)) - printf(" /dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", + printf(" Partition: /dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", SD_ID128_FORMAT_VAL(info->fw_entries[info->fw_entry_active].part_uuid)); } + printf("\n"); if (info->loader) { - printf(" Loader: %s\n", info->loader); - printf(" %s\n", strna(info->loader_image_path)); + printf("Boot loader:\n"); + printf(" Type: %s\n", info->loader); + printf(" Binary: %s\n", strna(info->loader_image_path)); if (!sd_id128_equal(info->loader_part_uuid, SD_ID128_NULL)) - printf(" /dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", + printf(" Partition: /dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", SD_ID128_FORMAT_VAL(info->loader_part_uuid)); if (info->loader_entry_active >= 0) { - printf(" Loader entry: %s\n", strna(info->loader_entries[info->loader_entry_active].title)); - printf(" %s\n", info->loader_entries[info->loader_entry_active].path); + printf(" Title: %s\n", strna(info->loader_entries[info->loader_entry_active].title)); + printf(" Entry: %s\n", info->loader_entries[info->loader_entry_active].path); } - printf("Loader options: %s\n", strna(info->loader_options_added)); + printf(" Options: %s\n", strna(info->loader_options_added)); } else printf("No suitable data is provided by the boot manager. See:\n" " http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface\n" diff --git a/src/shared/efivars.c b/src/shared/efivars.c index c42956f84d..4fb77428f2 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -34,6 +34,36 @@ bool is_efi_boot(void) { return access("/sys/firmware/efi", F_OK) >= 0; } +static int read_flag(const char *varname) { + int r; + void *v; + size_t s; + uint8_t b; + + r = efi_get_variable(EFI_VENDOR_GLOBAL, varname, NULL, &v, &s); + if (r < 0) + return r; + + if (s != 1) { + r = -EINVAL; + goto finish; + } + + b = *(uint8_t *)v; + r = b > 0; +finish: + free(v); + return r; +} + +int is_efi_secure_boot(void) { + return read_flag("SecureBoot"); +} + +int is_efi_secure_boot_setup_mode(void) { + return read_flag("SetupMode"); +} + int efi_get_variable( sd_id128_t vendor, const char *name, diff --git a/src/shared/efivars.h b/src/shared/efivars.h index 380e038f69..2b88c6075c 100644 --- a/src/shared/efivars.h +++ b/src/shared/efivars.h @@ -32,6 +32,8 @@ #define EFI_VENDOR_GLOBAL SD_ID128_MAKE(8b,e4,df,61,93,ca,11,d2,aa,0d,00,e0,98,03,2b,8c) bool is_efi_boot(void); +int is_efi_secure_boot(void); +int is_efi_secure_boot_setup_mode(void); int efi_get_variable(sd_id128_t vendor, const char *name, uint32_t *attribute, void **value, size_t *size); int efi_get_variable_string(sd_id128_t vendor, const char *name, char **p); -- cgit v1.2.1 From 0876dc1c26b123c3f955e0a34da6ab0375786cea Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sun, 10 Mar 2013 23:18:50 +0100 Subject: bootctl: print Options only when found --- src/boot/bootctl.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index 35daad81c6..b916012b40 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -155,7 +155,7 @@ static int show_status(char **args, unsigned n) { if (info->fw_secure_boot >= 0) printf(" Secure Boot: %s\n", info->fw_secure_boot ? "enabled" : "disabled"); if (info->fw_secure_boot_setup_mode >= 0) - printf(" Setup Mode: %s\n", info->fw_secure_boot_setup_mode ? "setup" : "user"); + printf(" Setup Mode: %s\n", info->fw_secure_boot_setup_mode ? "setup" : "user"); if (info->fw_entry_active >= 0) { printf(" Title: %s\n", strna(info->fw_entries[info->fw_entry_active].title)); @@ -180,7 +180,8 @@ static int show_status(char **args, unsigned n) { printf(" Entry: %s\n", info->loader_entries[info->loader_entry_active].path); } - printf(" Options: %s\n", strna(info->loader_options_added)); + if (info->loader_options_added) + printf(" Options: %s\n", info->loader_options_added); } else printf("No suitable data is provided by the boot manager. See:\n" " http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface\n" -- cgit v1.2.1 From f432bb914499e2c28b43f592bb273f0a8664f352 Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Mon, 11 Mar 2013 07:17:39 +0100 Subject: Move udevadm to rootbindir The udevadm utility is needed during early boot, so move it to rootbindir to support split-/usr configurations. --- Makefile.am | 4 ++-- src/core/macros.systemd.in | 4 ++-- src/login/71-seat.rules.in | 2 +- units/initrd-udevadm-cleanup-db.service.in | 2 +- units/systemd-udev-settle.service.in | 2 +- units/systemd-udev-trigger.service.in | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Makefile.am b/Makefile.am index 89768e6c32..680dd6597e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1785,7 +1785,7 @@ SYSINIT_TARGET_WANTS += \ systemd-udevd.service \ systemd-udev-trigger.service -bin_PROGRAMS += \ +rootbin_PROGRAMS += \ udevadm rootlibexec_PROGRAMS += \ @@ -1871,7 +1871,7 @@ udevadm_LDADD = \ # Update hwdb on installation. Do not bother if installing # in DESTDIR, since this is likely for packaging purposes. hwdb-update-hook: - -test -n "$(DESTDIR)" || $(bindir)/udevadm hwdb --update + -test -n "$(DESTDIR)" || $(rootbindir)/udevadm hwdb --update INSTALL_DATA_HOOKS += \ hwdb-update-hook diff --git a/src/core/macros.systemd.in b/src/core/macros.systemd.in index 647cce6913..f77082c2db 100644 --- a/src/core/macros.systemd.in +++ b/src/core/macros.systemd.in @@ -61,11 +61,11 @@ fi \ %{nil} %udev_hwdb_update() \ -@bindir@/udevadm hwdb --update >/dev/null 2>&1 || : \ +@rootbindir@/udevadm hwdb --update >/dev/null 2>&1 || : \ %{nil} %udev_rules_update() \ -@bindir@/udevadm control --reload >/dev/null 2>&1 || : \ +@rootbindir@/udevadm control --reload >/dev/null 2>&1 || : \ %{nil} %journal_catalog_update() \ diff --git a/src/login/71-seat.rules.in b/src/login/71-seat.rules.in index a064de4b5e..ad26acbbb3 100644 --- a/src/login/71-seat.rules.in +++ b/src/login/71-seat.rules.in @@ -38,7 +38,7 @@ SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product} SUBSYSTEM=="usb", ATTR{idVendor}=="17e9", ATTR{idProduct}=="401a", ATTR{product}=="mimo inc", \ ATTR{../idVendor}=="058f", ATTR{../idProduct}=="6254", \ ENV{ID_AVOID_LOOP}=="", \ - RUN+="@bindir@/udevadm trigger --parent-match=%p/.." + RUN+="@rootbindir@/udevadm trigger --parent-match=%p/.." TAG=="seat", ENV{ID_PATH}=="", IMPORT{builtin}="path_id" TAG=="seat", ENV{ID_FOR_SEAT}=="", ENV{ID_PATH_TAG}!="", ENV{ID_FOR_SEAT}="$env{SUBSYSTEM}-$env{ID_PATH_TAG}" diff --git a/units/initrd-udevadm-cleanup-db.service.in b/units/initrd-udevadm-cleanup-db.service.in index b800c210db..5c6654efc4 100644 --- a/units/initrd-udevadm-cleanup-db.service.in +++ b/units/initrd-udevadm-cleanup-db.service.in @@ -15,4 +15,4 @@ Before=initrd-switch-root.target [Service] Type=oneshot -ExecStart=-@bindir@/udevadm info --cleanup-db +ExecStart=-@rootbindir@/udevadm info --cleanup-db diff --git a/units/systemd-udev-settle.service.in b/units/systemd-udev-settle.service.in index b631949648..8070559c18 100644 --- a/units/systemd-udev-settle.service.in +++ b/units/systemd-udev-settle.service.in @@ -27,4 +27,4 @@ ConditionCapability=CAP_MKNOD Type=oneshot TimeoutSec=180 RemainAfterExit=yes -ExecStart=@bindir@/udevadm settle +ExecStart=@rootbindir@/udevadm settle diff --git a/units/systemd-udev-trigger.service.in b/units/systemd-udev-trigger.service.in index 391f996930..bafea54573 100644 --- a/units/systemd-udev-trigger.service.in +++ b/units/systemd-udev-trigger.service.in @@ -16,4 +16,4 @@ ConditionCapability=CAP_MKNOD [Service] Type=oneshot RemainAfterExit=yes -ExecStart=@bindir@/udevadm trigger --type=subsystems --action=add ; @bindir@/udevadm trigger --type=devices --action=add +ExecStart=@rootbindir@/udevadm trigger --type=subsystems --action=add ; @rootbindir@/udevadm trigger --type=devices --action=add -- cgit v1.2.1 From 41891700e02daf0cab9e86908c76ac6f411bbd57 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Mar 2013 15:10:29 +0100 Subject: journald: allow priority of 999, too --- src/journal/journald-stream.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/journal/journald-stream.c b/src/journal/journald-stream.c index 54a5b3621a..bdc2f49ef4 100644 --- a/src/journal/journald-stream.c +++ b/src/journal/journald-stream.c @@ -175,7 +175,7 @@ static int stdout_stream_line(StdoutStream *s, char *p) { case STDOUT_STREAM_PRIORITY: r = safe_atoi(p, &s->priority); - if (r < 0 || s->priority < 0 || s->priority >= 999) { + if (r < 0 || s->priority < 0 || s->priority > 999) { log_warning("Failed to parse log priority line."); return -EINVAL; } -- cgit v1.2.1 From b39ad46de41ece6f49b6d9944283939493a09b9c Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Mon, 11 Mar 2013 17:07:01 +0100 Subject: Update .gitignore for the changes in 7b40ce553f0ec9487077e53f5bdc46580025901c --- units/.gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/units/.gitignore b/units/.gitignore index b1e81ab086..d310999d20 100644 --- a/units/.gitignore +++ b/units/.gitignore @@ -52,3 +52,7 @@ /systemd-udev-trigger.service /systemd-udevd.service /debug-shell.service +/initrd-cleanup.service +/initrd-parse-etc.service +/initrd-switch-root.service +/initrd-udevadm-cleanup-db.service -- cgit v1.2.1 From 795607b22308f5b92073b012e43be1892fdd97c0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Mar 2013 17:49:33 +0100 Subject: update TODO --- TODO | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/TODO b/TODO index 913cc6ce13..95a806be65 100644 --- a/TODO +++ b/TODO @@ -46,6 +46,17 @@ Fedora 19: Features: +* BootLoaderSpec: drop allowing ext234 for $BOOT. Clarify that the + kernel has to be in $BOOT. Clarify that the boot loader should be + installed to the ESP. Define a way how an installer can figure out + whether a BLS compliant boot loader is installed. + +* We currently have a dep loop between libsystemd-id128 and libsystemd-shared. + +* man: remove .include documentation, and instead push people to use .d/*.conf + +* disallow .include from included files + * timedatectl needs to show whether NTP is available at all * reduce caps of systemd-localed -- cgit v1.2.1 From e75dcf5737ea7c12522d31b55fe0ca193b9dcc21 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Mar 2013 19:18:50 +0100 Subject: bootchart: rename log.c to store.c to aovid confusion with src/shared/log.c --- Makefile.am | 2 +- src/bootchart/log.c | 464 -------------------------------------------------- src/bootchart/store.c | 464 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 465 insertions(+), 465 deletions(-) delete mode 100644 src/bootchart/log.c create mode 100644 src/bootchart/store.c diff --git a/Makefile.am b/Makefile.am index 680dd6597e..f0fe5872cd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2877,7 +2877,7 @@ if ENABLE_BOOTCHART systemd_bootchart_SOURCES = \ src/bootchart/bootchart.c \ src/bootchart/bootchart.h \ - src/bootchart/log.c \ + src/bootchart/store.c \ src/bootchart/svg.c systemd_bootchart_LDADD = \ diff --git a/src/bootchart/log.c b/src/bootchart/log.c deleted file mode 100644 index ccec03f12c..0000000000 --- a/src/bootchart/log.c +++ /dev/null @@ -1,464 +0,0 @@ -/*** - log.c - This file is part of systemd-bootchart - - Copyright (C) 2009-2013 Intel Coproration - - Authors: - Auke Kok - - systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - systemd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with systemd; If not, see . - ***/ - -#define _GNU_SOURCE 1 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -#include "bootchart.h" -#include "util.h" - -/* - * Alloc a static 4k buffer for stdio - primarily used to increase - * PSS buffering from the default 1k stdin buffer to reduce - * read() overhead. - */ -static char smaps_buf[4096]; -DIR *proc; -int procfd=-1; - -double gettime_ns(void) -{ - struct timespec n; - - clock_gettime(CLOCK_MONOTONIC, &n); - - return (n.tv_sec + (n.tv_nsec / 1000000000.0)); -} - - -void log_uptime(void) -{ - FILE _cleanup_fclose_ *f = NULL; - char str[32]; - double uptime; - - f = fopen("/proc/uptime", "r"); - - if (!f) - return; - if (!fscanf(f, "%s %*s", str)) - return; - - uptime = strtod(str, NULL); - - log_start = gettime_ns(); - - /* start graph at kernel boot time */ - if (relative) - graph_start = log_start; - else - graph_start = log_start - uptime; -} - - -static char *bufgetline(char *buf) -{ - char *c; - - if (!buf) - return NULL; - - c = strchr(buf, '\n'); - if (c) - c++; - return c; -} - -static int pid_cmdline_strncpy(char *buffer, int pid, size_t buf_len) { - char filename[PATH_MAX]; - int _cleanup_close_ fd=-1; - ssize_t n; - - sprintf(filename, "%d/cmdline", pid); - fd = openat(procfd, filename, O_RDONLY); - if (fd < 0) - return -errno; - - n = read(fd, buffer, buf_len-1); - if (n > 0) { - int i; - for (i = 0; i < n; i++) - if (buffer[i] == '\0') - buffer[i] = ' '; - buffer[n] = '\0'; - } - return 0; -} - -void log_sample(int sample) -{ - static int vmstat; - static int schedstat; - char buf[4095]; - char key[256]; - char val[256]; - char rt[256]; - char wt[256]; - char *m; - int c; - int p; - int mod; - static int e_fd; - ssize_t s; - ssize_t n; - struct dirent *ent; - int fd; - - /* all the per-process stuff goes here */ - if (!proc) { - /* find all processes */ - proc = opendir("/proc"); - if (!proc) - return; - procfd = dirfd(proc); - } else { - rewinddir(proc); - } - - if (!vmstat) { - /* block stuff */ - vmstat = openat(procfd, "vmstat", O_RDONLY); - if (vmstat == -1) { - perror("open /proc/vmstat"); - exit (EXIT_FAILURE); - } - } - - n = pread(vmstat, buf, sizeof(buf) - 1, 0); - if (n <= 0) { - close(vmstat); - return; - } - buf[n] = '\0'; - - m = buf; - while (m) { - if (sscanf(m, "%s %s", key, val) < 2) - goto vmstat_next; - if (streq(key, "pgpgin")) - blockstat[sample].bi = atoi(val); - if (streq(key, "pgpgout")) { - blockstat[sample].bo = atoi(val); - break; - } -vmstat_next: - m = bufgetline(m); - if (!m) - break; - } - - if (!schedstat) { - /* overall CPU utilization */ - schedstat = openat(procfd, "schedstat", O_RDONLY); - if (schedstat == -1) { - perror("open /proc/schedstat"); - exit (EXIT_FAILURE); - } - } - - n = pread(schedstat, buf, sizeof(buf) - 1, 0); - if (n <= 0) { - close(schedstat); - return; - } - buf[n] = '\0'; - - m = buf; - while (m) { - if (sscanf(m, "%s %*s %*s %*s %*s %*s %*s %s %s", key, rt, wt) < 3) - goto schedstat_next; - - if (strstr(key, "cpu")) { - c = atoi((const char*)(key+3)); - if (c > MAXCPUS) - /* Oops, we only have room for MAXCPUS data */ - break; - cpustat[c].sample[sample].runtime = atoll(rt); - cpustat[c].sample[sample].waittime = atoll(wt); - - if (c == cpus) - cpus = c + 1; - } -schedstat_next: - m = bufgetline(m); - if (!m) - break; - } - - if (entropy) { - if (!e_fd) { - e_fd = openat(procfd, "sys/kernel/random/entropy_avail", O_RDONLY); - } - - if (e_fd) { - n = pread(e_fd, buf, sizeof(buf) - 1, 0); - if (n > 0) { - buf[n] = '\0'; - entropy_avail[sample] = atoi(buf); - } - } - } - - while ((ent = readdir(proc)) != NULL) { - char filename[PATH_MAX]; - int pid; - struct ps_struct *ps; - - if ((ent->d_name[0] < '0') || (ent->d_name[0] > '9')) - continue; - - pid = atoi(ent->d_name); - - if (pid >= MAXPIDS) - continue; - - ps = ps_first; - while (ps->next_ps) { - ps = ps->next_ps; - if (ps->pid == pid) - break; - } - - /* end of our LL? then append a new record */ - if (ps->pid != pid) { - FILE _cleanup_fclose_ *st = NULL; - char t[32]; - struct ps_struct *parent; - - ps->next_ps = calloc(1, sizeof(struct ps_struct)); - if (!ps->next_ps) { - perror("calloc(ps_struct)"); - exit (EXIT_FAILURE); - } - ps = ps->next_ps; - ps->pid = pid; - - ps->sample = calloc(samples_len + 1, sizeof(struct ps_sched_struct)); - if (!ps->sample) { - perror("calloc(ps_struct)"); - exit (EXIT_FAILURE); - } - - pscount++; - - /* mark our first sample */ - ps->first = sample; - - /* get name, start time */ - if (!ps->sched) { - sprintf(filename, "%d/sched", pid); - ps->sched = openat(procfd, filename, O_RDONLY); - if (ps->sched == -1) - continue; - } - - s = pread(ps->sched, buf, sizeof(buf) - 1, 0); - if (s <= 0) { - close(ps->sched); - continue; - } - buf[s] = '\0'; - - if (!sscanf(buf, "%s %*s %*s", key)) - continue; - - strncpy(ps->name, key, 256); - - /* cmdline */ - if (show_cmdline) - pid_cmdline_strncpy(ps->name, pid, 256); - - /* discard line 2 */ - m = bufgetline(buf); - if (!m) - continue; - - m = bufgetline(m); - if (!m) - continue; - - if (!sscanf(m, "%*s %*s %s", t)) - continue; - - ps->starttime = strtod(t, NULL) / 1000.0; - - /* ppid */ - sprintf(filename, "%d/stat", pid); - fd = openat(procfd, filename, O_RDONLY); - st = fdopen(fd, "r"); - if (!st) - continue; - if (!fscanf(st, "%*s %*s %*s %i", &p)) { - continue; - } - ps->ppid = p; - - /* - * setup child pointers - * - * these are used to paint the tree coherently later - * each parent has a LL of children, and a LL of siblings - */ - if (pid == 1) - continue; /* nothing to do for init atm */ - - /* kthreadd has ppid=0, which breaks our tree ordering */ - if (ps->ppid == 0) - ps->ppid = 1; - - parent = ps_first; - while ((parent->next_ps && parent->pid != ps->ppid)) - parent = parent->next_ps; - - if ((!parent) || (parent->pid != ps->ppid)) { - /* orphan */ - ps->ppid = 1; - parent = ps_first->next_ps; - } - - ps->parent = parent; - - if (!parent->children) { - /* it's the first child */ - parent->children = ps; - } else { - /* walk all children and append */ - struct ps_struct *children; - children = parent->children; - while (children->next) - children = children->next; - children->next = ps; - } - } - - /* else -> found pid, append data in ps */ - - /* below here is all continuous logging parts - we get here on every - * iteration */ - - /* rt, wt */ - if (!ps->schedstat) { - sprintf(filename, "%d/schedstat", pid); - ps->schedstat = openat(procfd, filename, O_RDONLY); - if (ps->schedstat == -1) - continue; - } - s = pread(ps->schedstat, buf, sizeof(buf) - 1, 0); - if (s <= 0) { - /* clean up our file descriptors - assume that the process exited */ - close(ps->schedstat); - if (ps->sched) - close(ps->sched); - //if (ps->smaps) - // fclose(ps->smaps); - continue; - } - buf[s] = '\0'; - - if (!sscanf(buf, "%s %s %*s", rt, wt)) - continue; - - ps->last = sample; - ps->sample[sample].runtime = atoll(rt); - ps->sample[sample].waittime = atoll(wt); - - ps->total = (ps->sample[ps->last].runtime - - ps->sample[ps->first].runtime) - / 1000000000.0; - - if (!pss) - goto catch_rename; - /* Pss */ - if (!ps->smaps) { - sprintf(filename, "%d/smaps", pid); - fd = openat(procfd, filename, O_RDONLY); - ps->smaps = fdopen(fd, "r"); - if (!ps->smaps) - continue; - setvbuf(ps->smaps, smaps_buf, _IOFBF, sizeof(smaps_buf)); - } else { - rewind(ps->smaps); - } - - while (1) { - int pss_kb; - - /* skip one line, this contains the object mapped */ - if (fgets(buf, sizeof(buf), ps->smaps) == NULL) - break; - /* then there's a 28 char 14 line block */ - if (fread(buf, 1, 28 * 14, ps->smaps) != 28 * 14) - break; - - pss_kb = atoi(&buf[61]); - ps->sample[sample].pss += pss_kb; - } - - if (ps->sample[sample].pss > ps->pss_max) - ps->pss_max = ps->sample[sample].pss; - -catch_rename: - /* catch process rename, try to randomize time */ - mod = (hz < 4.0) ? 4.0 : (hz / 4.0); - if (((samples - ps->first) + pid) % (int)(mod) == 0) { - - /* re-fetch name */ - /* get name, start time */ - if (!ps->sched) { - sprintf(filename, "%d/sched", pid); - ps->sched = openat(procfd, filename, O_RDONLY); - if (ps->sched == -1) - continue; - } - s = pread(ps->sched, buf, sizeof(buf) - 1, 0); - if (s <= 0) { - /* clean up file descriptors */ - close(ps->sched); - if (ps->schedstat) - close(ps->schedstat); - //if (ps->smaps) - // fclose(ps->smaps); - continue; - } - buf[s] = '\0'; - - if (!sscanf(buf, "%s %*s %*s", key)) - continue; - - strncpy(ps->name, key, 256); - - /* cmdline */ - if (show_cmdline) - pid_cmdline_strncpy(ps->name, pid, 256); - } - } -} diff --git a/src/bootchart/store.c b/src/bootchart/store.c new file mode 100644 index 0000000000..ccec03f12c --- /dev/null +++ b/src/bootchart/store.c @@ -0,0 +1,464 @@ +/*** + log.c - This file is part of systemd-bootchart + + Copyright (C) 2009-2013 Intel Coproration + + Authors: + Auke Kok + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . + ***/ + +#define _GNU_SOURCE 1 +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + + +#include "bootchart.h" +#include "util.h" + +/* + * Alloc a static 4k buffer for stdio - primarily used to increase + * PSS buffering from the default 1k stdin buffer to reduce + * read() overhead. + */ +static char smaps_buf[4096]; +DIR *proc; +int procfd=-1; + +double gettime_ns(void) +{ + struct timespec n; + + clock_gettime(CLOCK_MONOTONIC, &n); + + return (n.tv_sec + (n.tv_nsec / 1000000000.0)); +} + + +void log_uptime(void) +{ + FILE _cleanup_fclose_ *f = NULL; + char str[32]; + double uptime; + + f = fopen("/proc/uptime", "r"); + + if (!f) + return; + if (!fscanf(f, "%s %*s", str)) + return; + + uptime = strtod(str, NULL); + + log_start = gettime_ns(); + + /* start graph at kernel boot time */ + if (relative) + graph_start = log_start; + else + graph_start = log_start - uptime; +} + + +static char *bufgetline(char *buf) +{ + char *c; + + if (!buf) + return NULL; + + c = strchr(buf, '\n'); + if (c) + c++; + return c; +} + +static int pid_cmdline_strncpy(char *buffer, int pid, size_t buf_len) { + char filename[PATH_MAX]; + int _cleanup_close_ fd=-1; + ssize_t n; + + sprintf(filename, "%d/cmdline", pid); + fd = openat(procfd, filename, O_RDONLY); + if (fd < 0) + return -errno; + + n = read(fd, buffer, buf_len-1); + if (n > 0) { + int i; + for (i = 0; i < n; i++) + if (buffer[i] == '\0') + buffer[i] = ' '; + buffer[n] = '\0'; + } + return 0; +} + +void log_sample(int sample) +{ + static int vmstat; + static int schedstat; + char buf[4095]; + char key[256]; + char val[256]; + char rt[256]; + char wt[256]; + char *m; + int c; + int p; + int mod; + static int e_fd; + ssize_t s; + ssize_t n; + struct dirent *ent; + int fd; + + /* all the per-process stuff goes here */ + if (!proc) { + /* find all processes */ + proc = opendir("/proc"); + if (!proc) + return; + procfd = dirfd(proc); + } else { + rewinddir(proc); + } + + if (!vmstat) { + /* block stuff */ + vmstat = openat(procfd, "vmstat", O_RDONLY); + if (vmstat == -1) { + perror("open /proc/vmstat"); + exit (EXIT_FAILURE); + } + } + + n = pread(vmstat, buf, sizeof(buf) - 1, 0); + if (n <= 0) { + close(vmstat); + return; + } + buf[n] = '\0'; + + m = buf; + while (m) { + if (sscanf(m, "%s %s", key, val) < 2) + goto vmstat_next; + if (streq(key, "pgpgin")) + blockstat[sample].bi = atoi(val); + if (streq(key, "pgpgout")) { + blockstat[sample].bo = atoi(val); + break; + } +vmstat_next: + m = bufgetline(m); + if (!m) + break; + } + + if (!schedstat) { + /* overall CPU utilization */ + schedstat = openat(procfd, "schedstat", O_RDONLY); + if (schedstat == -1) { + perror("open /proc/schedstat"); + exit (EXIT_FAILURE); + } + } + + n = pread(schedstat, buf, sizeof(buf) - 1, 0); + if (n <= 0) { + close(schedstat); + return; + } + buf[n] = '\0'; + + m = buf; + while (m) { + if (sscanf(m, "%s %*s %*s %*s %*s %*s %*s %s %s", key, rt, wt) < 3) + goto schedstat_next; + + if (strstr(key, "cpu")) { + c = atoi((const char*)(key+3)); + if (c > MAXCPUS) + /* Oops, we only have room for MAXCPUS data */ + break; + cpustat[c].sample[sample].runtime = atoll(rt); + cpustat[c].sample[sample].waittime = atoll(wt); + + if (c == cpus) + cpus = c + 1; + } +schedstat_next: + m = bufgetline(m); + if (!m) + break; + } + + if (entropy) { + if (!e_fd) { + e_fd = openat(procfd, "sys/kernel/random/entropy_avail", O_RDONLY); + } + + if (e_fd) { + n = pread(e_fd, buf, sizeof(buf) - 1, 0); + if (n > 0) { + buf[n] = '\0'; + entropy_avail[sample] = atoi(buf); + } + } + } + + while ((ent = readdir(proc)) != NULL) { + char filename[PATH_MAX]; + int pid; + struct ps_struct *ps; + + if ((ent->d_name[0] < '0') || (ent->d_name[0] > '9')) + continue; + + pid = atoi(ent->d_name); + + if (pid >= MAXPIDS) + continue; + + ps = ps_first; + while (ps->next_ps) { + ps = ps->next_ps; + if (ps->pid == pid) + break; + } + + /* end of our LL? then append a new record */ + if (ps->pid != pid) { + FILE _cleanup_fclose_ *st = NULL; + char t[32]; + struct ps_struct *parent; + + ps->next_ps = calloc(1, sizeof(struct ps_struct)); + if (!ps->next_ps) { + perror("calloc(ps_struct)"); + exit (EXIT_FAILURE); + } + ps = ps->next_ps; + ps->pid = pid; + + ps->sample = calloc(samples_len + 1, sizeof(struct ps_sched_struct)); + if (!ps->sample) { + perror("calloc(ps_struct)"); + exit (EXIT_FAILURE); + } + + pscount++; + + /* mark our first sample */ + ps->first = sample; + + /* get name, start time */ + if (!ps->sched) { + sprintf(filename, "%d/sched", pid); + ps->sched = openat(procfd, filename, O_RDONLY); + if (ps->sched == -1) + continue; + } + + s = pread(ps->sched, buf, sizeof(buf) - 1, 0); + if (s <= 0) { + close(ps->sched); + continue; + } + buf[s] = '\0'; + + if (!sscanf(buf, "%s %*s %*s", key)) + continue; + + strncpy(ps->name, key, 256); + + /* cmdline */ + if (show_cmdline) + pid_cmdline_strncpy(ps->name, pid, 256); + + /* discard line 2 */ + m = bufgetline(buf); + if (!m) + continue; + + m = bufgetline(m); + if (!m) + continue; + + if (!sscanf(m, "%*s %*s %s", t)) + continue; + + ps->starttime = strtod(t, NULL) / 1000.0; + + /* ppid */ + sprintf(filename, "%d/stat", pid); + fd = openat(procfd, filename, O_RDONLY); + st = fdopen(fd, "r"); + if (!st) + continue; + if (!fscanf(st, "%*s %*s %*s %i", &p)) { + continue; + } + ps->ppid = p; + + /* + * setup child pointers + * + * these are used to paint the tree coherently later + * each parent has a LL of children, and a LL of siblings + */ + if (pid == 1) + continue; /* nothing to do for init atm */ + + /* kthreadd has ppid=0, which breaks our tree ordering */ + if (ps->ppid == 0) + ps->ppid = 1; + + parent = ps_first; + while ((parent->next_ps && parent->pid != ps->ppid)) + parent = parent->next_ps; + + if ((!parent) || (parent->pid != ps->ppid)) { + /* orphan */ + ps->ppid = 1; + parent = ps_first->next_ps; + } + + ps->parent = parent; + + if (!parent->children) { + /* it's the first child */ + parent->children = ps; + } else { + /* walk all children and append */ + struct ps_struct *children; + children = parent->children; + while (children->next) + children = children->next; + children->next = ps; + } + } + + /* else -> found pid, append data in ps */ + + /* below here is all continuous logging parts - we get here on every + * iteration */ + + /* rt, wt */ + if (!ps->schedstat) { + sprintf(filename, "%d/schedstat", pid); + ps->schedstat = openat(procfd, filename, O_RDONLY); + if (ps->schedstat == -1) + continue; + } + s = pread(ps->schedstat, buf, sizeof(buf) - 1, 0); + if (s <= 0) { + /* clean up our file descriptors - assume that the process exited */ + close(ps->schedstat); + if (ps->sched) + close(ps->sched); + //if (ps->smaps) + // fclose(ps->smaps); + continue; + } + buf[s] = '\0'; + + if (!sscanf(buf, "%s %s %*s", rt, wt)) + continue; + + ps->last = sample; + ps->sample[sample].runtime = atoll(rt); + ps->sample[sample].waittime = atoll(wt); + + ps->total = (ps->sample[ps->last].runtime + - ps->sample[ps->first].runtime) + / 1000000000.0; + + if (!pss) + goto catch_rename; + /* Pss */ + if (!ps->smaps) { + sprintf(filename, "%d/smaps", pid); + fd = openat(procfd, filename, O_RDONLY); + ps->smaps = fdopen(fd, "r"); + if (!ps->smaps) + continue; + setvbuf(ps->smaps, smaps_buf, _IOFBF, sizeof(smaps_buf)); + } else { + rewind(ps->smaps); + } + + while (1) { + int pss_kb; + + /* skip one line, this contains the object mapped */ + if (fgets(buf, sizeof(buf), ps->smaps) == NULL) + break; + /* then there's a 28 char 14 line block */ + if (fread(buf, 1, 28 * 14, ps->smaps) != 28 * 14) + break; + + pss_kb = atoi(&buf[61]); + ps->sample[sample].pss += pss_kb; + } + + if (ps->sample[sample].pss > ps->pss_max) + ps->pss_max = ps->sample[sample].pss; + +catch_rename: + /* catch process rename, try to randomize time */ + mod = (hz < 4.0) ? 4.0 : (hz / 4.0); + if (((samples - ps->first) + pid) % (int)(mod) == 0) { + + /* re-fetch name */ + /* get name, start time */ + if (!ps->sched) { + sprintf(filename, "%d/sched", pid); + ps->sched = openat(procfd, filename, O_RDONLY); + if (ps->sched == -1) + continue; + } + s = pread(ps->sched, buf, sizeof(buf) - 1, 0); + if (s <= 0) { + /* clean up file descriptors */ + close(ps->sched); + if (ps->schedstat) + close(ps->schedstat); + //if (ps->smaps) + // fclose(ps->smaps); + continue; + } + buf[s] = '\0'; + + if (!sscanf(buf, "%s %*s %*s", key)) + continue; + + strncpy(ps->name, key, 256); + + /* cmdline */ + if (show_cmdline) + pid_cmdline_strncpy(ps->name, pid, 256); + } + } +} -- cgit v1.2.1 From 6d031c0b6037ac7308d31562c09fb8ac714e82b4 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Mar 2013 22:47:58 +0100 Subject: bootchart: various superficial cleanups Let's update bootchar to share the coding style a bit more with the rest of the package. - Some tabs/spaces fixes - add #pragma to header - split up header so that we have a 1:1 relation between .c and .h files like everywhere else - Prefix user command line arguments/configuration settings with "arg_". - other coding style fixes --- Makefile.am | 1 + src/bootchart/bootchart.c | 127 +++++++++++++++++----------------- src/bootchart/bootchart.h | 39 +++++------ src/bootchart/store.c | 57 +++++++-------- src/bootchart/store.h | 34 +++++++++ src/bootchart/svg.c | 173 ++++++++++++++++++++-------------------------- src/bootchart/svg.h | 27 ++++++++ 7 files changed, 243 insertions(+), 215 deletions(-) create mode 100644 src/bootchart/store.h create mode 100644 src/bootchart/svg.h diff --git a/Makefile.am b/Makefile.am index f0fe5872cd..c8f7b8e1df 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2878,6 +2878,7 @@ systemd_bootchart_SOURCES = \ src/bootchart/bootchart.c \ src/bootchart/bootchart.h \ src/bootchart/store.c \ + src/bootchart/store.h \ src/bootchart/svg.c systemd_bootchart_LDADD = \ diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 65f16c517c..a722b2aabf 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -1,5 +1,7 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + /*** - bootchart.c - This file is part of systemd-bootchart + This file is part of systemd. Copyright (C) 2009-2013 Intel Coproration @@ -47,14 +49,15 @@ #include #include - -#include "bootchart.h" #include "util.h" #include "fileio.h" #include "macro.h" #include "conf-parser.h" #include "strxcpyx.h" #include "path-util.h" +#include "store.h" +#include "svg.h" +#include "bootchart.h" double graph_start; double log_start; @@ -72,33 +75,30 @@ static int exiting = 0; int sysfd=-1; /* graph defaults */ -bool entropy = false; +bool arg_entropy = false; bool initcall = true; -bool relative = false; -bool filter = true; -bool show_cmdline = false; -bool pss = false; +bool arg_relative = false; +bool arg_filter = true; +bool arg_show_cmdline = false; +bool arg_pss = false; int samples; -int samples_len = 500; /* we record len+1 (1 start sample) */ -double hz = 25.0; /* 20 seconds log time */ -double scale_x = 100.0; /* 100px = 1sec */ -double scale_y = 20.0; /* 16px = 1 process bar */ +int arg_samples_len = 500; /* we record len+1 (1 start sample) */ +double arg_hz = 25.0; /* 20 seconds log time */ +double arg_scale_x = 100.0; /* 100px = 1sec */ +double arg_scale_y = 20.0; /* 16px = 1 process bar */ -char init_path[PATH_MAX] = "/sbin/init"; -char output_path[PATH_MAX] = "/run/log"; +char arg_init_path[PATH_MAX] = "/sbin/init"; +char arg_output_path[PATH_MAX] = "/run/log"; static struct rlimit rlim; -static void signal_handler(int sig) -{ +static void signal_handler(int sig) { if (sig++) sig--; exiting = 1; } - -int main(int argc, char *argv[]) -{ +int main(int argc, char *argv[]) { _cleanup_free_ char *build = NULL; struct sigaction sig; struct ps_struct *ps; @@ -112,16 +112,16 @@ int main(int argc, char *argv[]) char *init = NULL, *output = NULL; const ConfigTableItem items[] = { - { "Bootchart", "Samples", config_parse_int, 0, &samples_len }, - { "Bootchart", "Frequency", config_parse_double, 0, &hz }, - { "Bootchart", "Relative", config_parse_bool, 0, &relative }, - { "Bootchart", "Filter", config_parse_bool, 0, &filter }, - { "Bootchart", "Output", config_parse_path, 0, &output }, - { "Bootchart", "Init", config_parse_path, 0, &init }, - { "Bootchart", "PlotMemoryUsage", config_parse_bool, 0, &pss }, - { "Bootchart", "PlotEntropyGraph", config_parse_bool, 0, &entropy }, - { "Bootchart", "ScaleX", config_parse_double, 0, &scale_x }, - { "Bootchart", "ScaleY", config_parse_double, 0, &scale_y }, + { "Bootchart", "Samples", config_parse_int, 0, &arg_samples_len }, + { "Bootchart", "Frequency", config_parse_double, 0, &arg_hz }, + { "Bootchart", "Relative", config_parse_bool, 0, &arg_relative }, + { "Bootchart", "Filter", config_parse_bool, 0, &arg_filter }, + { "Bootchart", "Output", config_parse_path, 0, &output }, + { "Bootchart", "Init", config_parse_path, 0, &init }, + { "Bootchart", "PlotMemoryUsage", config_parse_bool, 0, &arg_pss }, + { "Bootchart", "PlotEntropyGraph", config_parse_bool, 0, &arg_entropy }, + { "Bootchart", "ScaleX", config_parse_double, 0, &arg_scale_x }, + { "Bootchart", "ScaleY", config_parse_double, 0, &arg_scale_y }, { NULL, NULL, NULL, 0, NULL } }; @@ -137,9 +137,9 @@ int main(int argc, char *argv[]) log_warning("Failed to parse configuration file: %s", strerror(-r)); if (init != NULL) - strscpy(init_path, sizeof(init_path), init); + strscpy(arg_init_path, sizeof(arg_init_path), init); if (output != NULL) - strscpy(output_path, sizeof(output_path), output); + strscpy(arg_output_path, sizeof(arg_output_path), output); } while (1) { @@ -166,63 +166,63 @@ int main(int argc, char *argv[]) break; switch (i) { case 'r': - relative = true; + arg_relative = true; break; case 'f': - r = safe_atod(optarg, &hz); + r = safe_atod(optarg, &arg_hz); if (r < 0) log_warning("failed to parse --freq/-f argument '%s': %s", optarg, strerror(-r)); break; case 'F': - filter = false; + arg_filter = false; break; case 'C': - show_cmdline = true; + arg_show_cmdline = true; break; case 'n': - r = safe_atoi(optarg, &samples_len); + r = safe_atoi(optarg, &arg_samples_len); if (r < 0) log_warning("failed to parse --samples/-n argument '%s': %s", optarg, strerror(-r)); break; case 'o': path_kill_slashes(optarg); - strscpy(output_path, sizeof(output_path), optarg); + strscpy(arg_output_path, sizeof(arg_output_path), optarg); break; case 'i': path_kill_slashes(optarg); - strscpy(init_path, sizeof(init_path), optarg); + strscpy(arg_init_path, sizeof(arg_init_path), optarg); break; case 'p': - pss = true; + arg_pss = true; break; case 'x': - r = safe_atod(optarg, &scale_x); + r = safe_atod(optarg, &arg_scale_x); if (r < 0) log_warning("failed to parse --scale-x/-x argument '%s': %s", optarg, strerror(-r)); break; case 'y': - r = safe_atod(optarg, &scale_y); + r = safe_atod(optarg, &arg_scale_y); if (r < 0) log_warning("failed to parse --scale-y/-y argument '%s': %s", optarg, strerror(-r)); break; case 'e': - entropy = true; + arg_entropy = true; break; case 'h': fprintf(stderr, "Usage: %s [OPTIONS]\n", argv[0]); fprintf(stderr, " --rel, -r Record time relative to recording\n"); - fprintf(stderr, " --freq, -f f Sample frequency [%f]\n", hz); - fprintf(stderr, " --samples, -n N Stop sampling at [%d] samples\n", samples_len); - fprintf(stderr, " --scale-x, -x N Scale the graph horizontally [%f] \n", scale_x); - fprintf(stderr, " --scale-y, -y N Scale the graph vertically [%f] \n", scale_y); + fprintf(stderr, " --freq, -f f Sample frequency [%f]\n", arg_hz); + fprintf(stderr, " --samples, -n N Stop sampling at [%d] samples\n", arg_samples_len); + fprintf(stderr, " --scale-x, -x N Scale the graph horizontally [%f] \n", arg_scale_x); + fprintf(stderr, " --scale-y, -y N Scale the graph vertically [%f] \n", arg_scale_y); fprintf(stderr, " --pss, -p Enable PSS graph (CPU intensive)\n"); fprintf(stderr, " --entropy, -e Enable the entropy_avail graph\n"); - fprintf(stderr, " --output, -o [PATH] Path to output files [%s]\n", output_path); - fprintf(stderr, " --init, -i [PATH] Path to init executable [%s]\n", init_path); + fprintf(stderr, " --output, -o [PATH] Path to output files [%s]\n", arg_output_path); + fprintf(stderr, " --init, -i [PATH] Path to init executable [%s]\n", arg_init_path); fprintf(stderr, " --no-filter, -F Disable filtering of processes from the graph\n"); fprintf(stderr, " that are of less importance or short-lived\n"); fprintf(stderr, " --cmdline, -C Display the full command line with arguments\n"); @@ -236,12 +236,12 @@ int main(int argc, char *argv[]) } } - if (samples_len > MAXSAMPLES) { + if (arg_samples_len > MAXSAMPLES) { fprintf(stderr, "Error: samples exceeds maximum\n"); exit(EXIT_FAILURE); } - if (hz <= 0.0) { + if (arg_hz <= 0.0) { fprintf(stderr, "Error: Frequency needs to be > 0\n"); exit(EXIT_FAILURE); } @@ -255,7 +255,7 @@ int main(int argc, char *argv[]) if (getpid() == 1) { if (fork()) { /* parent */ - execl(init_path, init_path, NULL); + execl(arg_init_path, arg_init_path, NULL); } } argv[0][0] = '@'; @@ -272,7 +272,7 @@ int main(int argc, char *argv[]) sig.sa_handler = signal_handler; sigaction(SIGHUP, &sig, NULL); - interval = (1.0 / hz) * 1000000000.0; + interval = (1.0 / arg_hz) * 1000000000.0; log_uptime(); @@ -288,22 +288,20 @@ int main(int argc, char *argv[]) sampletime[samples] = gettime_ns(); - if (!of && (access(output_path, R_OK|W_OK|X_OK) == 0)) { + if (!of && (access(arg_output_path, R_OK|W_OK|X_OK) == 0)) { t = time(NULL); strftime(datestr, sizeof(datestr), "%Y%m%d-%H%M", localtime(&t)); - snprintf(output_file, PATH_MAX, "%s/bootchart-%s.svg", output_path, datestr); + snprintf(output_file, PATH_MAX, "%s/bootchart-%s.svg", arg_output_path, datestr); of = fopen(output_file, "w"); } - if (sysfd < 0) { + if (sysfd < 0) sysfd = open("/sys", O_RDONLY); - } - if (!build) { + if (!build) parse_env_file("/etc/os-release", NEWLINE, "PRETTY_NAME", &build, NULL); - } /* wait for /proc to become available, discarding samples */ if (!(graph_start > 0.0)) @@ -341,12 +339,12 @@ int main(int argc, char *argv[]) } else { overrun++; /* calculate how many samples we lost and scrap them */ - samples_len = samples_len + ((int)(newint_ns / interval)); + arg_samples_len = arg_samples_len + ((int)(newint_ns / interval)); } samples++; - if (samples > samples_len) + if (samples > arg_samples_len) break; } @@ -366,7 +364,7 @@ int main(int argc, char *argv[]) if (!of) { t = time(NULL); strftime(datestr, sizeof(datestr), "%Y%m%d-%H%M", localtime(&t)); - snprintf(output_file, PATH_MAX, "%s/bootchart-%s.svg", output_path, datestr); + snprintf(output_file, PATH_MAX, "%s/bootchart-%s.svg", arg_output_path, datestr); of = fopen(output_file, "w"); } @@ -378,10 +376,13 @@ int main(int argc, char *argv[]) svg_do(build); fprintf(stderr, "systemd-bootchart wrote %s\n", output_file); - fclose(of); + + if (of) + fclose(of); closedir(proc); - close(sysfd); + if (sysfd >= 0) + close(sysfd); /* nitpic cleanups */ ps = ps_first; diff --git a/src/bootchart/bootchart.h b/src/bootchart/bootchart.h index 0fe4d2f4da..a9541caf4a 100644 --- a/src/bootchart/bootchart.h +++ b/src/bootchart/bootchart.h @@ -1,5 +1,9 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + /*** - bootchart.h - This file is part of systemd-bootchart + This file is part of systemd. Copyright (C) 2009-2013 Intel Coproration @@ -18,7 +22,7 @@ You should have received a copy of the GNU Lesser General Public License along with systemd; If not, see . - ***/ +***/ #include #include @@ -27,7 +31,6 @@ #define MAXPIDS 65535 #define MAXSAMPLES 8192 - struct block_stat_struct { /* /proc/vmstat pgpgin & pgpgout */ int bi; @@ -99,31 +102,23 @@ extern struct ps_struct *ps_first; extern struct block_stat_struct blockstat[]; extern struct cpu_stat_struct cpustat[]; extern int pscount; -extern bool relative; -extern bool filter; -extern bool show_cmdline; -extern bool pss; -extern bool entropy; +extern bool arg_relative; +extern bool arg_filter; +extern bool arg_show_cmdline; +extern bool arg_pss; +extern bool arg_entropy; extern bool initcall; extern int samples; extern int cpus; -extern int samples_len; -extern double hz; -extern double scale_x; -extern double scale_y; +extern int arg_samples_len; +extern double arg_hz; +extern double arg_scale_x; +extern double arg_scale_y; extern int overrun; extern double interval; -extern char output_path[PATH_MAX]; -extern char init_path[PATH_MAX]; +extern char arg_output_path[PATH_MAX]; +extern char arg_init_path[PATH_MAX]; extern FILE *of; -extern DIR *proc; -extern int procfd; extern int sysfd; - -extern double gettime_ns(void); -extern void log_uptime(void); -extern void log_sample(int sample); - -extern void svg_do(const char *build); diff --git a/src/bootchart/store.c b/src/bootchart/store.c index ccec03f12c..0253ebb5af 100644 --- a/src/bootchart/store.c +++ b/src/bootchart/store.c @@ -1,5 +1,7 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + /*** - log.c - This file is part of systemd-bootchart + This file is part of systemd. Copyright (C) 2009-2013 Intel Coproration @@ -20,7 +22,6 @@ along with systemd; If not, see . ***/ -#define _GNU_SOURCE 1 #include #include #include @@ -32,9 +33,9 @@ #include #include - -#include "bootchart.h" #include "util.h" +#include "store.h" +#include "bootchart.h" /* * Alloc a static 4k buffer for stdio - primarily used to increase @@ -43,10 +44,9 @@ */ static char smaps_buf[4096]; DIR *proc; -int procfd=-1; +int procfd = -1; -double gettime_ns(void) -{ +double gettime_ns(void) { struct timespec n; clock_gettime(CLOCK_MONOTONIC, &n); @@ -54,9 +54,7 @@ double gettime_ns(void) return (n.tv_sec + (n.tv_nsec / 1000000000.0)); } - -void log_uptime(void) -{ +void log_uptime(void) { FILE _cleanup_fclose_ *f = NULL; char str[32]; double uptime; @@ -73,15 +71,13 @@ void log_uptime(void) log_start = gettime_ns(); /* start graph at kernel boot time */ - if (relative) + if (arg_relative) graph_start = log_start; else graph_start = log_start - uptime; } - -static char *bufgetline(char *buf) -{ +static char *bufgetline(char *buf) { char *c; if (!buf) @@ -94,16 +90,16 @@ static char *bufgetline(char *buf) } static int pid_cmdline_strncpy(char *buffer, int pid, size_t buf_len) { - char filename[PATH_MAX]; - int _cleanup_close_ fd=-1; - ssize_t n; + char filename[PATH_MAX]; + int _cleanup_close_ fd=-1; + ssize_t n; - sprintf(filename, "%d/cmdline", pid); - fd = openat(procfd, filename, O_RDONLY); - if (fd < 0) - return -errno; + sprintf(filename, "%d/cmdline", pid); + fd = openat(procfd, filename, O_RDONLY); + if (fd < 0) + return -errno; - n = read(fd, buffer, buf_len-1); + n = read(fd, buffer, buf_len-1); if (n > 0) { int i; for (i = 0; i < n; i++) @@ -111,11 +107,10 @@ static int pid_cmdline_strncpy(char *buffer, int pid, size_t buf_len) { buffer[i] = ' '; buffer[n] = '\0'; } - return 0; + return 0; } -void log_sample(int sample) -{ +void log_sample(int sample) { static int vmstat; static int schedstat; char buf[4095]; @@ -214,7 +209,7 @@ schedstat_next: break; } - if (entropy) { + if (arg_entropy) { if (!e_fd) { e_fd = openat(procfd, "sys/kernel/random/entropy_avail", O_RDONLY); } @@ -262,7 +257,7 @@ schedstat_next: ps = ps->next_ps; ps->pid = pid; - ps->sample = calloc(samples_len + 1, sizeof(struct ps_sched_struct)); + ps->sample = calloc(arg_samples_len + 1, sizeof(struct ps_sched_struct)); if (!ps->sample) { perror("calloc(ps_struct)"); exit (EXIT_FAILURE); @@ -294,7 +289,7 @@ schedstat_next: strncpy(ps->name, key, 256); /* cmdline */ - if (show_cmdline) + if (arg_show_cmdline) pid_cmdline_strncpy(ps->name, pid, 256); /* discard line 2 */ @@ -395,7 +390,7 @@ schedstat_next: - ps->sample[ps->first].runtime) / 1000000000.0; - if (!pss) + if (!arg_pss) goto catch_rename; /* Pss */ if (!ps->smaps) { @@ -428,7 +423,7 @@ schedstat_next: catch_rename: /* catch process rename, try to randomize time */ - mod = (hz < 4.0) ? 4.0 : (hz / 4.0); + mod = (arg_hz < 4.0) ? 4.0 : (arg_hz / 4.0); if (((samples - ps->first) + pid) % (int)(mod) == 0) { /* re-fetch name */ @@ -457,7 +452,7 @@ catch_rename: strncpy(ps->name, key, 256); /* cmdline */ - if (show_cmdline) + if (arg_show_cmdline) pid_cmdline_strncpy(ps->name, pid, 256); } } diff --git a/src/bootchart/store.h b/src/bootchart/store.h new file mode 100644 index 0000000000..e8d013cde4 --- /dev/null +++ b/src/bootchart/store.h @@ -0,0 +1,34 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright (C) 2009-2013 Intel Coproration + + Authors: + Auke Kok + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include + +extern DIR *proc; +extern int procfd; + +double gettime_ns(void); +void log_uptime(void); +void log_sample(int sample); diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index 9fee810795..231d3daa80 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -1,5 +1,7 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + /*** - bootchart.c - This file is part of systemd-bootchart + This file is part of systemd. Copyright (C) 2009-2013 Intel Coproration @@ -31,14 +33,15 @@ #include #include -#include "bootchart.h" #include "util.h" #include "macro.h" +#include "store.h" +#include "svg.h" +#include "bootchart.h" - -#define time_to_graph(t) ((t) * scale_x) -#define ps_to_graph(n) ((n) * scale_y) -#define kb_to_graph(m) ((m) * scale_y * 0.0001) +#define time_to_graph(t) ((t) * arg_scale_x) +#define ps_to_graph(n) ((n) * arg_scale_y) +#define kb_to_graph(m) ((m) * arg_scale_y * 0.0001) #define to_color(n) (192.0 - ((n) * 192.0)) #define max(x, y) (((x) > (y)) ? (x) : (y)) @@ -48,7 +51,7 @@ static char str[8092]; #define svg(a...) do { snprintf(str, 8092, ## a); fputs(str, of); fflush(of); } while (0) -static const char *colorwheel[12] = { +static const char * const colorwheel[12] = { "rgb(255,32,32)", // red "rgb(32,192,192)", // cyan "rgb(255,128,32)", // orange @@ -71,9 +74,7 @@ static float psize = 0; static float ksize = 0; static float esize = 0; - -static void svg_header(void) -{ +static void svg_header(void) { float w; float h; @@ -82,8 +83,8 @@ static void svg_header(void) w = ((w < 1600.0) ? 1600.0 : w); /* height is variable based on pss, psize, ksize */ - h = 400.0 + (scale_y * 30.0) /* base graphs and title */ - + (pss ? (100.0 * scale_y) + (scale_y * 7.0) : 0.0) /* pss estimate */ + h = 400.0 + (arg_scale_y * 30.0) /* base graphs and title */ + + (arg_pss ? (100.0 * arg_scale_y) + (arg_scale_y * 7.0) : 0.0) /* pss estimate */ + psize + ksize + esize; svg("\n"); @@ -103,11 +104,11 @@ static void svg_header(void) svg("\n\n"); svg("\n", VERSION); - svg("\n", hz, samples_len); - svg("\n", scale_x, scale_y); - svg("\n", relative, filter); - svg("\n", pss, entropy); - svg("\n\n", output_path, init_path); + svg("\n", arg_hz, arg_samples_len); + svg("\n", arg_scale_x, arg_scale_y); + svg("\n", arg_relative, arg_filter); + svg("\n", arg_pss, arg_entropy); + svg("\n\n", arg_output_path, arg_init_path); /* style sheet */ svg("\n \n\n\n"); - } - -static void svg_title(const char *build) -{ +static void svg_title(const char *build) { char cmdline[256] = ""; char filename[PATH_MAX]; char buf[256]; @@ -222,12 +220,10 @@ static void svg_title(const char *build) svg("Not detected"); svg("
\n"); svg("Graph data: %.03f samples/sec, recorded %i total, dropped %i samples, %i processes, %i filtered\n", - hz, samples_len, overrun, pscount, pfiltered); + arg_hz, arg_samples_len, overrun, pscount, pfiltered); } - -static void svg_graph_box(int height) -{ +static void svg_graph_box(int height) { double d = 0.0; int i = 0; @@ -238,7 +234,7 @@ static void svg_graph_box(int height) ps_to_graph(height)); for (d = graph_start; d <= sampletime[samples-1]; - d += (scale_x < 2.0 ? 60.0 : scale_x < 10.0 ? 1.0 : 0.1)) { + d += (arg_scale_x < 2.0 ? 60.0 : arg_scale_x < 10.0 ? 1.0 : 0.1)) { /* lines for each second */ if (i % 50 == 0) svg(" \n", @@ -282,8 +278,7 @@ static char* xml_comment_encode(const char* name) { return enc_name; } -static void svg_pss_graph(void) -{ +static void svg_pss_graph(void) { struct ps_struct *ps; int i; @@ -320,7 +315,7 @@ static void svg_pss_graph(void) ps = ps->next_ps; if (!ps) continue; - if (ps->sample[i].pss <= (100 * scale_y)) + if (ps->sample[i].pss <= (100 * arg_scale_y)) top += ps->sample[i].pss; }; svg(" \n", @@ -339,7 +334,7 @@ static void svg_pss_graph(void) if (!ps) continue; /* don't draw anything smaller than 2mb */ - if (ps->sample[i].pss > (100 * scale_y)) { + if (ps->sample[i].pss > (100 * arg_scale_y)) { top = bottom + ps->sample[i].pss; svg(" \n", colorwheel[ps->pid % 12], @@ -366,7 +361,7 @@ static void svg_pss_graph(void) ps = ps->next_ps; if (!ps) continue; - if (ps->sample[i].pss <= (100 * scale_y)) + if (ps->sample[i].pss <= (100 * arg_scale_y)) top += ps->sample[i].pss; }; @@ -379,10 +374,10 @@ static void svg_pss_graph(void) if (!ps) continue; /* don't draw anything smaller than 2mb */ - if (ps->sample[i].pss > (100 * scale_y)) { + if (ps->sample[i].pss > (100 * arg_scale_y)) { top = bottom + ps->sample[i].pss; /* draw a label with the process / PID */ - if ((i == 1) || (ps->sample[i - 1].pss <= (100 * scale_y))) + if ((i == 1) || (ps->sample[i - 1].pss <= (100 * arg_scale_y))) svg(" [%i]\n", time_to_graph(sampletime[i] - graph_start), kb_to_graph(1000000.0 - bottom - ((top - bottom) / 2)), @@ -416,8 +411,7 @@ static void svg_pss_graph(void) } -static void svg_io_bi_bar(void) -{ +static void svg_io_bi_bar(void) { double max = 0.0; double range; int max_here = 0; @@ -434,7 +428,7 @@ static void svg_io_bi_bar(void) * each poll. Applying a smoothing function loses some burst data, * so keep the smoothing range short. */ - range = 0.25 / (1.0 / hz); + range = 0.25 / (1.0 / arg_hz); if (range < 2.0) range = 2.0; /* no smoothing */ @@ -479,22 +473,21 @@ static void svg_io_bi_bar(void) if (pbi > 0.001) svg("\n", time_to_graph(sampletime[i - 1] - graph_start), - (scale_y * 5) - (pbi * (scale_y * 5)), + (arg_scale_y * 5) - (pbi * (arg_scale_y * 5)), time_to_graph(sampletime[i] - sampletime[i - 1]), - pbi * (scale_y * 5)); + pbi * (arg_scale_y * 5)); /* labels around highest value */ if (i == max_here) { svg(" %0.2fmb/sec\n", time_to_graph(sampletime[i] - graph_start) + 5, - ((scale_y * 5) - (pbi * (scale_y * 5))) + 15, + ((arg_scale_y * 5) - (pbi * (arg_scale_y * 5))) + 15, max / 1024.0 / (interval / 1000000000.0)); } } } -static void svg_io_bo_bar(void) -{ +static void svg_io_bo_bar(void) { double max = 0.0; double range; int max_here = 0; @@ -511,7 +504,7 @@ static void svg_io_bo_bar(void) * each poll. Applying a smoothing function loses some burst data, * so keep the smoothing range short. */ - range = 0.25 / (1.0 / hz); + range = 0.25 / (1.0 / arg_hz); if (range < 2.0) range = 2.0; /* no smoothing */ @@ -556,23 +549,21 @@ static void svg_io_bo_bar(void) if (pbo > 0.001) svg("\n", time_to_graph(sampletime[i - 1] - graph_start), - (scale_y * 5) - (pbo * (scale_y * 5)), + (arg_scale_y * 5) - (pbo * (arg_scale_y * 5)), time_to_graph(sampletime[i] - sampletime[i - 1]), - pbo * (scale_y * 5)); + pbo * (arg_scale_y * 5)); /* labels around highest bo value */ if (i == max_here) { svg(" %0.2fmb/sec\n", time_to_graph(sampletime[i] - graph_start) + 5, - ((scale_y * 5) - (pbo * (scale_y * 5))), + ((arg_scale_y * 5) - (pbo * (arg_scale_y * 5))), max / 1024.0 / (interval / 1000000000.0)); } } } - -static void svg_cpu_bar(void) -{ +static void svg_cpu_bar(void) { int i; svg("\n"); @@ -605,15 +596,14 @@ static void svg_cpu_bar(void) if (ptrt > 0.001) { svg("\n", time_to_graph(sampletime[i - 1] - graph_start), - (scale_y * 5) - (ptrt * (scale_y * 5)), + (arg_scale_y * 5) - (ptrt * (arg_scale_y * 5)), time_to_graph(sampletime[i] - sampletime[i - 1]), - ptrt * (scale_y * 5)); + ptrt * (arg_scale_y * 5)); } } } -static void svg_wait_bar(void) -{ +static void svg_wait_bar(void) { int i; svg("\n"); @@ -647,16 +637,15 @@ static void svg_wait_bar(void) if (ptwt > 0.001) { svg("\n", time_to_graph(sampletime[i - 1] - graph_start), - ((scale_y * 5) - (ptwt * (scale_y * 5))), + ((arg_scale_y * 5) - (ptwt * (arg_scale_y * 5))), time_to_graph(sampletime[i] - sampletime[i - 1]), - ptwt * (scale_y * 5)); + ptwt * (arg_scale_y * 5)); } } } -static void svg_entropy_bar(void) -{ +static void svg_entropy_bar(void) { int i; svg("\n"); @@ -670,15 +659,13 @@ static void svg_entropy_bar(void) /* svg("\n", sampletime[i], entropy_avail[i]); */ svg("\n", time_to_graph(sampletime[i - 1] - graph_start), - ((scale_y * 5) - ((entropy_avail[i] / 4096.) * (scale_y * 5))), + ((arg_scale_y * 5) - ((entropy_avail[i] / 4096.) * (arg_scale_y * 5))), time_to_graph(sampletime[i] - sampletime[i - 1]), - (entropy_avail[i] / 4096.) * (scale_y * 5)); + (entropy_avail[i] / 4096.) * (arg_scale_y * 5)); } } - -static struct ps_struct *get_next_ps(struct ps_struct *ps) -{ +static struct ps_struct *get_next_ps(struct ps_struct *ps) { /* * walk the list of processes and return the next one to be * painted @@ -707,10 +694,8 @@ static struct ps_struct *get_next_ps(struct ps_struct *ps) return NULL; } - -static int ps_filter(struct ps_struct *ps) -{ - if (!filter) +static int ps_filter(struct ps_struct *ps) { + if (!arg_filter) return 0; /* can't draw data when there is only 1 sample (need start + stop) */ @@ -728,9 +713,7 @@ static int ps_filter(struct ps_struct *ps) return 0; } - -static void svg_do_initcall(int count_only) -{ +static void svg_do_initcall(int count_only) { FILE _cleanup_pclose_ *f = NULL; double t; char func[256]; @@ -738,7 +721,7 @@ static void svg_do_initcall(int count_only) int usecs; /* can't plot initcall when disabled or in relative mode */ - if (!initcall || relative) { + if (!initcall || arg_relative) { kcount = 0; return; } @@ -818,9 +801,7 @@ static void svg_do_initcall(int count_only) } } - -static void svg_ps_bars(void) -{ +static void svg_ps_bars(void) { struct ps_struct *ps; int i = 0; int j = 0; @@ -966,7 +947,7 @@ static void svg_ps_bars(void) break; } - for (i = ps->first; i < samples - (hz / 2); i++) { + for (i = ps->first; i < samples - (arg_hz / 2); i++) { double crt; double brt; int c; @@ -974,8 +955,8 @@ static void svg_ps_bars(void) /* subtract bootchart cpu utilization from total */ crt = 0.0; for (c = 0; c < cpus; c++) - crt += cpustat[c].sample[i + ((int)hz / 2)].runtime - cpustat[c].sample[i].runtime; - brt = ps->sample[i + ((int)hz / 2)].runtime - ps->sample[i].runtime; + crt += cpustat[c].sample[i + ((int)arg_hz / 2)].runtime - cpustat[c].sample[i].runtime; + brt = ps->sample[i + ((int)arg_hz / 2)].runtime - ps->sample[i].runtime; /* * our definition of "idle": @@ -989,21 +970,19 @@ static void svg_ps_bars(void) idletime); svg("\n", time_to_graph(idletime), - -scale_y, + -arg_scale_y, time_to_graph(idletime), - ps_to_graph(pcount) + scale_y); + ps_to_graph(pcount) + arg_scale_y); svg("%.01fs\n", time_to_graph(idletime) + 5.0, - ps_to_graph(pcount) + scale_y, + ps_to_graph(pcount) + arg_scale_y, idletime); break; } } } - -static void svg_top_ten_cpu(void) -{ +static void svg_top_ten_cpu(void) { struct ps_struct *top[10]; struct ps_struct emptyps; struct ps_struct *ps; @@ -1036,9 +1015,7 @@ static void svg_top_ten_cpu(void) top[n]->pid); } - -static void svg_top_ten_pss(void) -{ +static void svg_top_ten_pss(void) { struct ps_struct *top[10]; struct ps_struct emptyps; struct ps_struct *ps; @@ -1071,9 +1048,7 @@ static void svg_top_ten_pss(void) top[n]->pid); } - -void svg_do(const char *build) -{ +void svg_do(const char *build) { struct ps_struct *ps; memset(&str, 0, sizeof(str)); @@ -1082,7 +1057,7 @@ void svg_do(const char *build) /* count initcall thread count first */ svg_do_initcall(1); - ksize = (kcount ? ps_to_graph(kcount) + (scale_y * 2) : 0); + ksize = (kcount ? ps_to_graph(kcount) + (arg_scale_y * 2) : 0); /* then count processes */ while ((ps = get_next_ps(ps))) { @@ -1091,9 +1066,9 @@ void svg_do(const char *build) else pfiltered++; } - psize = ps_to_graph(pcount) + (scale_y * 2); + psize = ps_to_graph(pcount) + (arg_scale_y * 2); - esize = (entropy ? scale_y * 7 : 0); + esize = (arg_entropy ? arg_scale_y * 7 : 0); /* after this, we can draw the header with proper sizing */ svg_header(); @@ -1102,25 +1077,25 @@ void svg_do(const char *build) svg_io_bi_bar(); svg("\n\n"); - svg("\n", 400.0 + (scale_y * 7.0)); + svg("\n", 400.0 + (arg_scale_y * 7.0)); svg_io_bo_bar(); svg("\n\n"); - svg("\n", 400.0 + (scale_y * 14.0)); + svg("\n", 400.0 + (arg_scale_y * 14.0)); svg_cpu_bar(); svg("\n\n"); - svg("\n", 400.0 + (scale_y * 21.0)); + svg("\n", 400.0 + (arg_scale_y * 21.0)); svg_wait_bar(); svg("\n\n"); if (kcount) { - svg("\n", 400.0 + (scale_y * 28.0)); + svg("\n", 400.0 + (arg_scale_y * 28.0)); svg_do_initcall(0); svg("\n\n"); } - svg("\n", 400.0 + (scale_y * 28.0) + ksize); + svg("\n", 400.0 + (arg_scale_y * 28.0) + ksize); svg_ps_bars(); svg("\n\n"); @@ -1132,14 +1107,14 @@ void svg_do(const char *build) svg_top_ten_cpu(); svg("\n\n"); - if (entropy) { - svg("\n", 400.0 + (scale_y * 28.0) + ksize + psize); + if (arg_entropy) { + svg("\n", 400.0 + (arg_scale_y * 28.0) + ksize + psize); svg_entropy_bar(); svg("\n\n"); } - if (pss) { - svg("\n", 400.0 + (scale_y * 28.0) + ksize + psize + esize); + if (arg_pss) { + svg("\n", 400.0 + (arg_scale_y * 28.0) + ksize + psize + esize); svg_pss_graph(); svg("\n\n"); diff --git a/src/bootchart/svg.h b/src/bootchart/svg.h new file mode 100644 index 0000000000..e7369f5111 --- /dev/null +++ b/src/bootchart/svg.h @@ -0,0 +1,27 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright (C) 2009-2013 Intel Coproration + + Authors: + Auke Kok + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +void svg_do(const char *build); -- cgit v1.2.1 From 361514aca147f8826811c23cfac40c6ac995dfeb Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 11 Mar 2013 22:54:36 +0100 Subject: bootchart: bump RLIMIT_NOFILE only after we forked us off, so that the init system inherits the kernel default --- src/bootchart/bootchart.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index a722b2aabf..e608af2e3f 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -90,8 +90,6 @@ double arg_scale_y = 20.0; /* 16px = 1 process bar */ char arg_init_path[PATH_MAX] = "/sbin/init"; char arg_output_path[PATH_MAX] = "/run/log"; -static struct rlimit rlim; - static void signal_handler(int sig) { if (sig++) sig--; @@ -110,6 +108,7 @@ int main(int argc, char *argv[]) { int gind; int i, r; char *init = NULL, *output = NULL; + struct rlimit rlim; const ConfigTableItem items[] = { { "Bootchart", "Samples", config_parse_int, 0, &arg_samples_len }, @@ -125,10 +124,6 @@ int main(int argc, char *argv[]) { { NULL, NULL, NULL, 0, NULL } }; - rlim.rlim_cur = 4096; - rlim.rlim_max = 4096; - (void) setrlimit(RLIMIT_NOFILE, &rlim); - fn = "/etc/systemd/bootchart.conf"; f = fopen(fn, "re"); if (f) { @@ -260,6 +255,10 @@ int main(int argc, char *argv[]) { } argv[0][0] = '@'; + rlim.rlim_cur = 4096; + rlim.rlim_max = 4096; + (void) setrlimit(RLIMIT_NOFILE, &rlim); + /* start with empty ps LL */ ps_first = calloc(1, sizeof(struct ps_struct)); if (!ps_first) { -- cgit v1.2.1 From 24be98227483baf67094fa95b5633594446cd21a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 11 Mar 2013 18:03:13 -0400 Subject: Remove or indent #define GNU_SOURCE It is only needed in files designed to be usable in standalone compilation. In those files the #ifdefinery is indented. When compiling in-tree, GNU_SOURCE is always defined, so remove one definition. --- src/libsystemd-daemon/sd-daemon.c | 20 ++++++++++---------- src/readahead/sd-readahead.c | 14 +++++++------- src/udev/cdrom_id/cdrom_id.c | 4 ---- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/src/libsystemd-daemon/sd-daemon.c b/src/libsystemd-daemon/sd-daemon.c index 80aadf7adf..5b92e2e3db 100644 --- a/src/libsystemd-daemon/sd-daemon.c +++ b/src/libsystemd-daemon/sd-daemon.c @@ -25,7 +25,7 @@ ***/ #ifndef _GNU_SOURCE -#define _GNU_SOURCE +# define _GNU_SOURCE #endif #include @@ -33,9 +33,9 @@ #include #include #ifdef __BIONIC__ -#include +# include #else -#include +# include #endif #include #include @@ -48,21 +48,21 @@ #include #if defined(__linux__) -#include +# include #endif #include "sd-daemon.h" #if (__GNUC__ >= 4) -#ifdef SD_EXPORT_SYMBOLS +# ifdef SD_EXPORT_SYMBOLS /* Export symbols */ -#define _sd_export_ __attribute__ ((visibility("default"))) -#else +# define _sd_export_ __attribute__ ((visibility("default"))) +# else /* Don't export the symbols */ -#define _sd_export_ __attribute__ ((visibility("hidden"))) -#endif +# define _sd_export_ __attribute__ ((visibility("hidden"))) +# endif #else -#define _sd_export_ +# define _sd_export_ #endif _sd_export_ int sd_listen_fds(int unset_environment) { diff --git a/src/readahead/sd-readahead.c b/src/readahead/sd-readahead.c index d48cd76807..4a096eed42 100644 --- a/src/readahead/sd-readahead.c +++ b/src/readahead/sd-readahead.c @@ -25,7 +25,7 @@ ***/ #ifndef _GNU_SOURCE -#define _GNU_SOURCE +# define _GNU_SOURCE #endif #include @@ -38,15 +38,15 @@ #include "sd-readahead.h" #if (__GNUC__ >= 4) -#ifdef SD_EXPORT_SYMBOLS +# ifdef SD_EXPORT_SYMBOLS /* Export symbols */ -#define _sd_export_ __attribute__ ((visibility("default"))) -#else +# define _sd_export_ __attribute__ ((visibility("default"))) +# else /* Don't export the symbols */ -#define _sd_export_ __attribute__ ((visibility("hidden"))) -#endif +# define _sd_export_ __attribute__ ((visibility("hidden"))) +# endif #else -#define _sd_export_ +# define _sd_export_ #endif static int touch(const char *path) { diff --git a/src/udev/cdrom_id/cdrom_id.c b/src/udev/cdrom_id/cdrom_id.c index b659cc31ee..1ad0459236 100644 --- a/src/udev/cdrom_id/cdrom_id.c +++ b/src/udev/cdrom_id/cdrom_id.c @@ -17,10 +17,6 @@ * along with this program. If not, see . */ -#ifndef _GNU_SOURCE -#define _GNU_SOURCE 1 -#endif - #include #include #include -- cgit v1.2.1 From fea7838e7e0b2724f5e0bc028121a08b42995045 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 11 Mar 2013 18:03:13 -0400 Subject: core/smack: downgrade info to debug BogdanR> I think it's cool it supports SMACK and that it encourages them to use a propper mount point for smackfs but I don't think it's cool that it's printing on the screen even when I parse quiet to the kernel that "SMACK support is not enabled ...". --- src/core/smack-setup.c | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c index 88e6437445..d0f1ac0c92 100644 --- a/src/core/smack-setup.c +++ b/src/core/smack-setup.c @@ -50,22 +50,24 @@ int smack_setup(void) { smack = fopen("/sys/fs/smackfs/load2", "we"); if (!smack) { - log_info("Smack is not enabled in the kernel, not loading access rules."); + if (errno == ENOENT) + log_debug("Smack is not enabled in the kernel, not loading access rules."); + else + log_warning("Failed to open /sys/fs/smackfs/load2: %m"); return 0; } /* write rules to load2 from every file in the directory */ dir = opendir(ACCESSES_D_PATH); if (!dir) { - log_info("Smack access rules directory not found: " ACCESSES_D_PATH); + log_full(errno == ENOENT ? LOG_DEBUG : LOG_WARNING, + "Opening Smack access rules directory " + ACCESSES_D_PATH ": %m"); return 0; } dfd = dirfd(dir); - if (dfd < 0) { - log_error("Smack access rules directory " ACCESSES_D_PATH " not opened: %m"); - return 0; - } + assert(dfd >= 0); FOREACH_DIRENT(entry, dir, return 0) { _cleanup_fclose_ FILE *policy = NULL; @@ -73,20 +75,24 @@ int smack_setup(void) { pol = openat(dfd, entry->d_name, O_RDONLY|O_CLOEXEC); if (pol < 0) { - log_error("Smack access rule file %s not opened: %m", entry->d_name); + log_error("Smack access rule file %s not opened: %m", + entry->d_name); continue; } policy = fdopen(pol, "re"); if (!policy) { - log_error("Smack access rule file %s not opened: %m", entry->d_name); + log_error("Smack access rule file %s not opened: %m", + entry->d_name); continue; } pol = -1; /* load2 write rules in the kernel require a line buffered stream */ - FOREACH_LINE(buf, policy, log_error("Failed to read from Smack access rule file %s: %m", entry->d_name)) { + FOREACH_LINE(buf, policy, + log_error("Failed to read from Smack access rule file %s: %m", + entry->d_name)) { fputs(buf, smack); fflush(smack); } -- cgit v1.2.1 From 3bf3cd95abf815be091a5398b3796d5e325862b6 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 12 Mar 2013 15:35:17 +0100 Subject: udevd: sort into sysinit instead of basic target --- units/systemd-udev-settle.service.in | 12 +++--------- units/systemd-udevd.service.in | 2 +- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/units/systemd-udev-settle.service.in b/units/systemd-udev-settle.service.in index 8070559c18..107fd8d1cc 100644 --- a/units/systemd-udev-settle.service.in +++ b/units/systemd-udev-settle.service.in @@ -5,15 +5,9 @@ # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. -# This service is usually not enabled by default. If enabled, it -# acts as a barrier for basic.target -- so all later services will -# wait for udev completely finishing its coldplug run. -# -# If needed, to work around broken or non-hotplug-aware services, -# it might be enabled unconditionally, or pulled-in on-demand by -# the services that assume a fully populated /dev at startup. It -# should not be used or pulled-in ever on systems without such -# legacy services running. +# This service can dynamically be pulled-in by legacy services which +# cannot reliably cope with dynamic device configurations, and wrongfully +# expect a populated /dev during bootup. [Unit] Description=udev Wait for Complete Device Initialization diff --git a/units/systemd-udevd.service.in b/units/systemd-udevd.service.in index 2fe7822fe9..86c650c0db 100644 --- a/units/systemd-udevd.service.in +++ b/units/systemd-udevd.service.in @@ -10,7 +10,7 @@ Description=udev Kernel Device Manager Documentation=man:systemd-udevd.service(8) man:udev(7) Wants=systemd-udevd-control.socket systemd-udevd-kernel.socket After=systemd-udevd-control.socket systemd-udevd-kernel.socket -Before=basic.target +Before=sysinit.target DefaultDependencies=no ConditionCapability=CAP_MKNOD -- cgit v1.2.1 From 4d4fe926cb2ad1e624ddaea26f143fa93d867296 Mon Sep 17 00:00:00 2001 From: Michal Sekletar Date: Fri, 8 Mar 2013 15:13:43 +0100 Subject: core: fix getting information about mount unit We should not try to get information about mount unit from fragment if the unit was created because of /proc/self/mountinfo event. --- src/core/mount.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/mount.c b/src/core/mount.c index 419cf27a88..895aa25371 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -447,7 +447,8 @@ static int mount_add_default_dependencies(Mount *m) { if (UNIT(m)->manager->running_as != SYSTEMD_SYSTEM) return 0; - p = get_mount_parameters_fragment(m); + p = get_mount_parameters(m); + if (!p) return 0; -- cgit v1.2.1 From 6bde0b3220e95a08cefb70846f73b2cf24b7734a Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 12 Mar 2013 18:24:44 +0100 Subject: remote-fs.target: want remote-fs-pre.target This pulls in remote-fs-pre.target if remote-fs.target is needed. Previously remote-fs-pre.target was not active, if no remote fs was mounted from /etc/fstab. So, every manual remote fs mount was ordered against the inactive remote-fs-pre.target and umount.target. Because remote-fs-pre.target was not active, the remote fs was umounted at umount.target time, which was too late (network already down). Now remote-fs-pre.target is active, even if no remote fs is mounted. On shutdown it is deactivated in the correct order and all manual remote fs mounts also. --- units/remote-fs.target | 2 ++ 1 file changed, 2 insertions(+) diff --git a/units/remote-fs.target b/units/remote-fs.target index 9e68878ad8..b11074f8ac 100644 --- a/units/remote-fs.target +++ b/units/remote-fs.target @@ -8,6 +8,8 @@ [Unit] Description=Remote File Systems Documentation=man:systemd.special(7) +Wants=remote-fs-pre.target +After=remote-fs-pre.target [Install] WantedBy=multi-user.target -- cgit v1.2.1 From 5b176ee064d9737fd933dfeb660d015c19649794 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Tue, 12 Mar 2013 22:28:44 +0100 Subject: manager: push back animation timer whenever a job finishes The running jobs animation is supposed to hide itself when jobs are progressing sufficiently fast. --- src/core/manager.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/core/manager.c b/src/core/manager.c index c261b25fb6..77eaa468d9 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -148,6 +148,9 @@ static int manager_setup_notify(Manager *m) { static int manager_jobs_in_progress_mod_timer(Manager *m) { struct itimerspec its; + if (m->jobs_in_progress_watch.type != WATCH_JOBS_IN_PROGRESS) + return 0; + zero(its); its.it_value.tv_sec = JOBS_IN_PROGRESS_WAIT_SEC; @@ -2373,8 +2376,10 @@ void manager_check_finished(Manager *m) { if (m->n_running_jobs == 0) manager_unwatch_jobs_in_progress(m); - if (hashmap_size(m->jobs) > 0) + if (hashmap_size(m->jobs) > 0) { + manager_jobs_in_progress_mod_timer(m); return; + } /* Notify Type=idle units that we are done now */ close_pipe(m->idle_pipe); -- cgit v1.2.1 From a63c198cc0ac9113efca5450309b21011cadfe29 Mon Sep 17 00:00:00 2001 From: Michal Sekletar Date: Tue, 12 Mar 2013 18:32:52 +0100 Subject: shutdown: move attribute packed to the end of the declaration, so it is not ignored --- src/systemd/sd-shutdown.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/systemd/sd-shutdown.h b/src/systemd/sd-shutdown.h index cee4350173..b8f6a487ec 100644 --- a/src/systemd/sd-shutdown.h +++ b/src/systemd/sd-shutdown.h @@ -37,7 +37,7 @@ typedef enum sd_shutdown_mode { /* Calculate the size of the message as "offsetof(struct * sd_shutdown_command, wall_message) + * strlen(command.wall_message)" */ -__attribute__((packed)) struct sd_shutdown_command { +struct sd_shutdown_command { /* Microseconds after the epoch 1970 UTC */ uint64_t usec; @@ -55,7 +55,7 @@ __attribute__((packed)) struct sd_shutdown_command { /* The wall message to send around. Leave empty for the * default wall message */ char wall_message[]; -}; +} __attribute__((packed)); /* The scheme is very simple: * -- cgit v1.2.1 From ee465038ce86bd3a0f21d5e2723393ff9d78855d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 12 Mar 2013 23:05:20 -0400 Subject: build-sys: break dependency loop between libsystemd-id128.la and -shared.la The loop was added in d848b9cbfa0ba72 'Move generic specifier functions to shared'. --- Makefile.am | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index c8f7b8e1df..96262ec06c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -652,8 +652,6 @@ libsystemd_shared_la_SOURCES = \ src/shared/watchdog.h \ src/shared/spawn-ask-password-agent.c \ src/shared/spawn-ask-password-agent.h \ - src/shared/specifier.c \ - src/shared/specifier.h \ src/shared/replace-var.c \ src/shared/replace-var.h \ src/shared/spawn-polkit-agent.c \ @@ -697,7 +695,9 @@ libsystemd_units_la_SOURCES = \ src/shared/install-printf.c \ src/shared/install-printf.h \ src/shared/path-lookup.c \ - src/shared/path-lookup.h + src/shared/path-lookup.h \ + src/shared/specifier.c \ + src/shared/specifier.h libsystemd_units_la_CFLAGS = \ $(AM_CFLAGS) \ @@ -1235,6 +1235,7 @@ test_strv_SOURCES = \ test_strv_LDADD = \ libsystemd-shared.la \ + libsystemd-units.la \ libsystemd-id128-internal.la test_strxcpyx_SOURCES = \ -- cgit v1.2.1 From a0b8045be2206aec3558fdb11dad052cb590bf74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 12 Mar 2013 17:22:19 -0400 Subject: man: strip the comments in man page headers They contained the date, which creates a problem with multiarch packages, since the generated file would be different each time. --- Makefile.am | 12 ++++++------ man/custom-man.xsl | 31 +++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 6 deletions(-) create mode 100644 man/custom-man.xsl diff --git a/Makefile.am b/Makefile.am index 96262ec06c..25e0ab4307 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3686,25 +3686,25 @@ XSLTPROC_FLAGS = \ XSLTPROC_PROCESS_MAN = \ $(AM_V_XSLT)$(MKDIR_P) $(dir $@) && \ - $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $< + $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(srcdir)/man/custom-man.xsl $< XSLTPROC_PROCESS_HTML = \ $(AM_V_XSLT)$(MKDIR_P) $(dir $@) && \ $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(srcdir)/man/custom-html.xsl $< -man/%.1: man/%.xml +man/%.1: man/%.xml man/custom-man.xsl $(XSLTPROC_PROCESS_MAN) -man/%.3: man/%.xml +man/%.3: man/%.xml man/custom-man.xsl $(XSLTPROC_PROCESS_MAN) -man/%.5: man/%.xml +man/%.5: man/%.xml man/custom-man.xsl $(XSLTPROC_PROCESS_MAN) -man/%.7: man/%.xml +man/%.7: man/%.xml man/custom-man.xsl $(XSLTPROC_PROCESS_MAN) -man/%.8: man/%.xml +man/%.8: man/%.xml man/custom-man.xsl $(XSLTPROC_PROCESS_MAN) man/%.html: man/%.xml man/custom-html.xsl diff --git a/man/custom-man.xsl b/man/custom-man.xsl new file mode 100644 index 0000000000..4d9d08e004 --- /dev/null +++ b/man/custom-man.xsl @@ -0,0 +1,31 @@ + + + + + + + + + + + -- cgit v1.2.1 From 702f64b93cb215d43f673dd4b2f3646b879c566e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 12 Mar 2013 23:57:09 -0400 Subject: man,html: say 'systemd 198' in the header This should help readers of the man or HTML pages know if the documentation is out of date. An alternative to use a date generated from 'git log' was considered, but since we try to keep user visible documentation up to date, showing the project version should be enough. --- Makefile.am | 4 ++-- man/custom-html.xsl | 5 +++++ man/custom-man.xsl | 24 ++++++++++++++++++++++++ src/python-systemd/docs/layout.html | 2 +- 4 files changed, 32 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index 25e0ab4307..cfcca7c88b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3680,9 +3680,9 @@ XSLTPROC_FLAGS = \ --nonet \ --stringparam man.output.quietly 1 \ --stringparam funcsynopsis.style ansi \ - --stringparam man.th.extra1.suppress 1 \ --stringparam man.authors.section.enabled 0 \ - --stringparam man.copyright.section.enabled 0 + --stringparam man.copyright.section.enabled 0 \ + --stringparam systemd.version $(VERSION) XSLTPROC_PROCESS_MAN = \ $(AM_V_XSLT)$(MKDIR_P) $(dir $@) && \ diff --git a/man/custom-html.xsl b/man/custom-html.xsl index c612baf4d8..c4099b26ba 100644 --- a/man/custom-html.xsl +++ b/man/custom-html.xsl @@ -65,6 +65,11 @@ gudev + + + systemd + +
diff --git a/man/custom-man.xsl b/man/custom-man.xsl index 4d9d08e004..753e5715e3 100644 --- a/man/custom-man.xsl +++ b/man/custom-man.xsl @@ -28,4 +28,28 @@ + + + + + + + + + .TH " + + + + + + " " + + " "" "systemd + + " " + + " + + + diff --git a/src/python-systemd/docs/layout.html b/src/python-systemd/docs/layout.html index 78989143ed..be5ff980ef 100644 --- a/src/python-systemd/docs/layout.html +++ b/src/python-systemd/docs/layout.html @@ -6,7 +6,7 @@ Python · libudev · gudev - systemd v. {{release}} + systemd {{release}}
{% endblock %} -- cgit v1.2.1 From 3ae390ba020fd6c8bad9a6b384a6ff56c9fe5f5b Mon Sep 17 00:00:00 2001 From: Mathieu Bridon Date: Wed, 13 Mar 2013 12:43:40 +0800 Subject: man: Document the actual behaviour of ExecStopPost The documentation makes it sound like ExecStopPost is only run when stopping the service with `systemctl stop foo.service` However, that is not the case, as it also gets run when the service unexpectedly exists, crashes, or gets SIGKILLed. --- man/systemd.service.xml | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/man/systemd.service.xml b/man/systemd.service.xml index 8977873c1e..b8b19b386a 100644 --- a/man/systemd.service.xml +++ b/man/systemd.service.xml @@ -464,9 +464,12 @@ ExecStopPost= Additional commands that are executed after the service - was stopped using the commands - configured in - ExecStop=. This + was stopped. This includes cases where + the commands configured in + ExecStop= were used, + where the service doesn't have any + ExecStop= defined, or + where the service exited unexpectedly. This argument takes multiple command lines, following the same scheme as described for ExecStart. Use -- cgit v1.2.1 From 783162123dbac43d5b7a3fab9d4f11dcf86d06e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 13 Mar 2013 00:55:32 -0400 Subject: build-sys: use -f with ln -s Parallel builds would sometimes try to recreate the link, and fail since 'ln -s' would refuse to overwrite. --- Makefile.am | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index cfcca7c88b..b6d330696a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -177,7 +177,7 @@ define move-to-rootlibdir $(MKDIR_P) $(DESTDIR)$(rootlibdir) && \ so_img_name=$$(readlink $(DESTDIR)$(libdir)/$$libname) && \ so_img_rel_target_prefix=$$(echo $(libdir) | sed 's,\(^/\|\)[^/][^/]*,..,g') && \ - ln -sf $$so_img_rel_target_prefix$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/$$libname && \ + $(LN_S) -f $$so_img_rel_target_prefix$(rootlibdir)/$$so_img_name $(DESTDIR)$(libdir)/$$libname && \ mv $(DESTDIR)$(libdir)/$$libname.* $(DESTDIR)$(rootlibdir); \ fi endef @@ -3711,7 +3711,7 @@ man/%.html: man/%.xml man/custom-html.xsl $(XSLTPROC_PROCESS_HTML) define html-alias - $(AM_V_LN)$(LN_S) $(notdir $<) $@ + $(AM_V_LN)$(LN_S) -f $(notdir $<) $@ endef endif -- cgit v1.2.1 From 700e07ffd53083114e91bb4ba646ed26d0463f67 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Mon, 4 Mar 2013 19:01:05 +0100 Subject: add initrd-fs.target and root-fs.target Instead of using local-fs*.target in the initrd, use root-fs.target for sysroot.mount and initrd-fs.target for /sysroot/usr and friends. Using local-fs.target would mean to carry over the activated local-fs.target to the isolated initrd-switch-root.target and thus in the real root. Having local-fs.target already active after deserialization causes ordering problems with the real root services and targets. We better isolate to targets for initrd-switch-root.target, which are only available in the initrd. --- Makefile.am | 2 + man/systemd.special.xml | 30 +++++++++++++ src/core/special.h | 2 + src/fstab-generator/fstab-generator.c | 79 ++++++++++++++++++++--------------- units/initrd-cleanup.service.in | 4 +- units/initrd-fs.target | 13 ++++++ units/initrd-parse-etc.service.in | 6 +-- units/initrd-switch-root.target | 4 +- units/root-fs.target | 11 +++++ 9 files changed, 110 insertions(+), 41 deletions(-) create mode 100644 units/initrd-fs.target create mode 100644 units/root-fs.target diff --git a/Makefile.am b/Makefile.am index b6d330696a..2a010c7ed2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -347,6 +347,8 @@ dist_systemunit_DATA = \ units/kexec.target \ units/local-fs.target \ units/local-fs-pre.target \ + units/initrd-fs.target \ + units/root-fs.target \ units/remote-fs.target \ units/remote-fs-pre.target \ units/network.target \ diff --git a/man/systemd.special.xml b/man/systemd.special.xml index 0d1df8475a..7b780998fd 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -64,6 +64,7 @@ halt.target, hibernate.target, hybrid-sleep.target, + initrd-fs.target, kbrequest.target, kexec.target, local-fs.target, @@ -78,6 +79,7 @@ remote-fs.target, remote-fs-pre.target, rescue.target, + root-fs.target, rpcbind.target, runlevel2.target, runlevel3.target, @@ -295,6 +297,22 @@ this unit. + + initrd-fs.target + + systemd automatically + adds dependencies of type + Before to sysroot-usr.mount and + all mount points fround in + /etc/fstab + that have the + and + + mount options set. + See also systemd-fstab-generator. + + + kbrequest.target @@ -504,6 +522,17 @@ unit, for compatibility with SysV. + + root-fs.target + + systemd automatically + adds dependencies of type + Before to the sysroot.mount unit, + which is generated from the kernel command + line by the systemd-fstab-generator. + + + rpcbind.target @@ -760,6 +789,7 @@ systemd.socket5, systemd.target5, bootup7 + systemd-fstab-generator8 diff --git a/src/core/special.h b/src/core/special.h index 99c0e1222e..52e593b690 100644 --- a/src/core/special.h +++ b/src/core/special.h @@ -48,6 +48,8 @@ #define SPECIAL_SOCKETS_TARGET "sockets.target" #define SPECIAL_LOCAL_FS_TARGET "local-fs.target" #define SPECIAL_LOCAL_FS_PRE_TARGET "local-fs-pre.target" +#define SPECIAL_INITRD_FS_TARGET "initrd-fs.target" +#define SPECIAL_ROOT_FS_TARGET "root-fs.target" #define SPECIAL_REMOTE_FS_TARGET "remote-fs.target" /* LSB's $remote_fs */ #define SPECIAL_REMOTE_FS_PRE_TARGET "remote-fs-pre.target" #define SPECIAL_SWAP_TARGET "swap.target" diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 910bbc1df7..b4fb1344e6 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -200,14 +200,13 @@ static bool mount_in_initrd(struct mntent *me) { } static int add_mount(const char *what, const char *where, const char *type, const char *opts, - int passno, bool noauto, bool nofail, bool automount, bool isbind, bool isnetwork, - const char *source) { + int passno, bool noauto, bool nofail, bool automount, bool isbind, + const char *pre, const char *post, const char *source) { char _cleanup_free_ *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL, *automount_name = NULL, *automount_unit = NULL; FILE _cleanup_fclose_ *f = NULL; int r; - const char *post, *pre; assert(what); assert(where); @@ -227,14 +226,6 @@ static int add_mount(const char *what, const char *where, const char *type, cons mount_point_ignore(where)) return 0; - if (isnetwork) { - post = SPECIAL_REMOTE_FS_TARGET; - pre = SPECIAL_REMOTE_FS_PRE_TARGET; - } else { - post = SPECIAL_LOCAL_FS_TARGET; - pre = SPECIAL_LOCAL_FS_PRE_TARGET; - } - name = unit_name_from_path(where, ".mount"); if (!name) return log_oom(); @@ -259,17 +250,19 @@ static int add_mount(const char *what, const char *where, const char *type, cons "DefaultDependencies=no\n", source); - if (!path_equal(where, "/")) + if (!path_equal(where, "/")) { + if (pre) + fprintf(f, + "After=%s\n" + "Wants=%s\n", + pre, + pre); fprintf(f, - "After=%s\n" - "Wants=%s\n" "Conflicts=" SPECIAL_UMOUNT_TARGET "\n" - "Before=" SPECIAL_UMOUNT_TARGET "\n", - pre, - pre); - + "Before=" SPECIAL_UMOUNT_TARGET "\n"); + } - if (!noauto && !nofail && !automount) + if (post && !noauto && !nofail && !automount) fprintf(f, "Before=%s\n", post); @@ -299,14 +292,16 @@ static int add_mount(const char *what, const char *where, const char *type, cons } if (!noauto) { - lnk = strjoin(arg_dest, "/", post, nofail || automount ? ".wants/" : ".requires/", name, NULL); - if (!lnk) - return log_oom(); + if (post) { + lnk = strjoin(arg_dest, "/", post, nofail || automount ? ".wants/" : ".requires/", name, NULL); + if (!lnk) + return log_oom(); - mkdir_parents_label(lnk, 0755); - if (symlink(unit, lnk) < 0) { - log_error("Failed to create symlink %s: %m", lnk); - return -errno; + mkdir_parents_label(lnk, 0755); + if (symlink(unit, lnk) < 0) { + log_error("Failed to create symlink %s: %m", lnk); + return -errno; + } } if (!isbind && @@ -353,12 +348,17 @@ static int add_mount(const char *what, const char *where, const char *type, cons "SourcePath=%s\n" "DefaultDependencies=no\n" "Conflicts=" SPECIAL_UMOUNT_TARGET "\n" - "Before=" SPECIAL_UMOUNT_TARGET " %s\n" - "\n" + "Before=" SPECIAL_UMOUNT_TARGET "\n", + source); + + if (post) + fprintf(f, + "Before= %s\n", + post); + + fprintf(f, "[Automount]\n" "Where=%s\n", - source, - post, where); fflush(f); @@ -421,7 +421,8 @@ static int parse_fstab(const char *prefix, bool initrd) { if (streq(me->mnt_type, "swap")) k = add_swap(what, me); else { - bool noauto, nofail, automount, isbind, isnetwork; + bool noauto, nofail, automount, isbind; + const char *pre, *post; noauto = !!hasmntopt(me, "noauto"); nofail = !!hasmntopt(me, "nofail"); @@ -429,11 +430,21 @@ static int parse_fstab(const char *prefix, bool initrd) { hasmntopt(me, "comment=systemd.automount") || hasmntopt(me, "x-systemd.automount"); isbind = mount_is_bind(me); - isnetwork = mount_is_network(me); + + if (initrd) { + post = SPECIAL_INITRD_FS_TARGET; + pre = NULL; + } else if (mount_is_network(me)) { + post = SPECIAL_REMOTE_FS_TARGET; + pre = SPECIAL_REMOTE_FS_PRE_TARGET; + } else { + post = SPECIAL_LOCAL_FS_TARGET; + pre = SPECIAL_LOCAL_FS_PRE_TARGET; + } k = add_mount(what, where, me->mnt_type, me->mnt_opts, me->mnt_passno, noauto, nofail, automount, - isbind, isnetwork, fstab_path); + isbind, pre, post, fstab_path); } if (k < 0) @@ -514,7 +525,7 @@ static int parse_new_root_from_proc_cmdline(void) { log_debug("Found entry what=%s where=/sysroot type=%s", what, type); r = add_mount(what, "/sysroot", type, opts, 0, false, false, false, - false, false, "/proc/cmdline"); + false, NULL, SPECIAL_ROOT_FS_TARGET, "/proc/cmdline"); return (r < 0) ? r : 0; } diff --git a/units/initrd-cleanup.service.in b/units/initrd-cleanup.service.in index e926a1eec2..5bef090e08 100644 --- a/units/initrd-cleanup.service.in +++ b/units/initrd-cleanup.service.in @@ -10,8 +10,8 @@ Description=Cleaning Up and Shutting Down Daemons DefaultDependencies=no ConditionPathExists=/etc/initrd-release OnFailure=emergency.target -Requires=local-fs.target swap.target -After=local-fs.target swap.target +Wants=root-fs.target initrd-fs.target +After=root-fs.target initrd-fs.target [Service] Type=oneshot diff --git a/units/initrd-fs.target b/units/initrd-fs.target new file mode 100644 index 0000000000..6ba1758e45 --- /dev/null +++ b/units/initrd-fs.target @@ -0,0 +1,13 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Initrd File Systems +Documentation=man:systemd.special(7) +OnFailure=emergency.target +OnFailureIsolate=yes +ConditionPathExists=/etc/initrd-release diff --git a/units/initrd-parse-etc.service.in b/units/initrd-parse-etc.service.in index 1a2711ac62..44fee7bd34 100644 --- a/units/initrd-parse-etc.service.in +++ b/units/initrd-parse-etc.service.in @@ -8,13 +8,13 @@ [Unit] Description=Reload Configuration from the Real Root DefaultDependencies=no -Requires=local-fs.target swap.target -After=local-fs.target swap.target +Requires=root-fs.target +After=root-fs.target OnFailure=emergency.target ConditionPathExists=/etc/initrd-release [Service] Type=oneshot ExecStartPre=@rootbindir@/systemctl daemon-reload -ExecStart=@rootbindir@/systemctl start local-fs.target +ExecStart=@rootbindir@/systemctl start initrd-fs.target ExecStart=@rootbindir@/systemctl --no-block start initrd-cleanup.service diff --git a/units/initrd-switch-root.target b/units/initrd-switch-root.target index f706d29ba6..cf646c4ef9 100644 --- a/units/initrd-switch-root.target +++ b/units/initrd-switch-root.target @@ -12,5 +12,5 @@ DefaultDependencies=no Requires=initrd-switch-root.service Before=initrd-switch-root.service AllowIsolate=yes -Wants=initrd-udevadm-cleanup-db.service local-fs.target swap.target systemd-journald.service -After=initrd-udevadm-cleanup-db.service local-fs.target swap.target emergency.service emergency.target +Wants=initrd-udevadm-cleanup-db.service root-fs.target initrd-fs.target systemd-journald.service +After=initrd-udevadm-cleanup-db.service root-fs.target initrd-fs.target emergency.service emergency.target diff --git a/units/root-fs.target b/units/root-fs.target new file mode 100644 index 0000000000..13515341eb --- /dev/null +++ b/units/root-fs.target @@ -0,0 +1,11 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Initrd Root File System +Documentation=man:systemd.special(7) +ConditionPathExists=/etc/initrd-release -- cgit v1.2.1 From 24a988e9aa17a476cb5381e2334aaa2a9972ddd2 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Fri, 8 Mar 2013 10:50:33 +0100 Subject: cryptsetup-generator: use _cleanup_ where possible --- src/cryptsetup/cryptsetup-generator.c | 209 +++++++++++----------------------- 1 file changed, 65 insertions(+), 144 deletions(-) diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index 38a7cfa0b6..0a51db8939 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -34,7 +34,6 @@ static const char *arg_dest = "/tmp"; static bool arg_enabled = true; static bool arg_read_crypttab = true; -static char **arg_proc_cmdline_disks = NULL; static bool has_option(const char *haystack, const char *needle) { const char *f = haystack; @@ -71,9 +70,8 @@ static int create_disk( const char *password, const char *options) { - char *p = NULL, *n = NULL, *d = NULL, *u = NULL, *from = NULL, *to = NULL, *e = NULL; - int r; - FILE *f = NULL; + char _cleanup_free_ *p = NULL, *n = NULL, *d = NULL, *u = NULL, *from = NULL, *to = NULL, *e = NULL; + FILE _cleanup_fclose_ *f = NULL; bool noauto, nofail; assert(name); @@ -83,34 +81,25 @@ static int create_disk( nofail = has_option(options, "nofail"); n = unit_name_from_path_instance("systemd-cryptsetup", name, ".service"); - if (!n) { - r = log_oom(); - goto fail; - } + if (!n) + return log_oom(); p = strjoin(arg_dest, "/", n, NULL); - if (!p) { - r = log_oom(); - goto fail; - } + if (!p) + return log_oom(); u = fstab_node_to_udev_node(device); - if (!u) { - r = log_oom(); - goto fail; - } + if (!u) + return log_oom(); d = unit_name_from_path(u, ".device"); - if (!d) { - r = log_oom(); - goto fail; - } + if (!d) + return log_oom(); f = fopen(p, "wxe"); if (!f) { - r = -errno; log_error("Failed to create unit file %s: %m", p); - goto fail; + return -errno; } fprintf(f, @@ -160,47 +149,39 @@ static int create_disk( fflush(f); if (ferror(f)) { - r = -errno; log_error("Failed to write file %s: %m", p); - goto fail; + return -errno; } - if (asprintf(&from, "../%s", n) < 0) { - r = log_oom(); - goto fail; - } + if (asprintf(&from, "../%s", n) < 0) + return log_oom(); if (!noauto) { to = strjoin(arg_dest, "/", d, ".wants/", n, NULL); - if (!to) { - r = log_oom(); - goto fail; - } + if (!to) + return log_oom(); mkdir_parents_label(to, 0755); if (symlink(from, to) < 0) { log_error("Failed to create symlink '%s' to '%s': %m", from, to); - r = -errno; - goto fail; + return -errno; } free(to); + to = NULL; if (!nofail) to = strjoin(arg_dest, "/cryptsetup.target.requires/", n, NULL); else to = strjoin(arg_dest, "/cryptsetup.target.wants/", n, NULL); - if (!to) { - r = log_oom(); - goto fail; - } + if (!to) + return log_oom(); mkdir_parents_label(to, 0755); if (symlink(from, to) < 0) { log_error("Failed to create symlink '%s' to '%s': %m", from, to); - r = -errno; - goto fail; + return -errno; } free(to); @@ -209,37 +190,21 @@ static int create_disk( e = unit_name_escape(name); to = strjoin(arg_dest, "/dev-mapper-", e, ".device.requires/", n, NULL); - if (!to) { - r = log_oom(); - goto fail; - } + if (!to) + return log_oom(); mkdir_parents_label(to, 0755); if (symlink(from, to) < 0) { log_error("Failed to create symlink '%s' to '%s': %m", from, to); - r = -errno; - goto fail; + return -errno; } - r = 0; - -fail: - free(p); - free(n); - free(d); - free(e); - - free(from); - free(to); - - if (f) - fclose(f); - - return r; + return 0; } -static int parse_proc_cmdline(void) { - char *line, *w, *state; +static int parse_proc_cmdline(char ***arg_proc_cmdline_disks) { + char _cleanup_free_ *line = NULL; + char *w = NULL, *state = NULL; int r; size_t l; @@ -253,13 +218,11 @@ static int parse_proc_cmdline(void) { } FOREACH_WORD_QUOTED(w, l, line, state) { - char *word; + char _cleanup_free_ *word = NULL; word = strndup(w, l); - if (!word) { - r = log_oom(); - goto finish; - } + if (!word) + return log_oom(); if (startswith(word, "luks=")) { r = parse_boolean(word + 5); @@ -298,26 +261,24 @@ static int parse_proc_cmdline(void) { } else if (startswith(word, "luks.uuid=")) { char **t; - t = strv_append(arg_proc_cmdline_disks, word + 10); - if (!t) { - r = log_oom(); - goto finish; - } - strv_free(arg_proc_cmdline_disks); - arg_proc_cmdline_disks = t; + t = strv_append(*arg_proc_cmdline_disks, word + 10); + if (!t) + return log_oom(); + + strv_free(*arg_proc_cmdline_disks); + *arg_proc_cmdline_disks = t; } else if (startswith(word, "rd.luks.uuid=")) { if (in_initrd()) { char **t; - t = strv_append(arg_proc_cmdline_disks, word + 13); - if (!t) { - r = log_oom(); - goto finish; - } - strv_free(arg_proc_cmdline_disks); - arg_proc_cmdline_disks = t; + t = strv_append(*arg_proc_cmdline_disks, word + 13); + if (!t) + return log_oom(); + + strv_free(*arg_proc_cmdline_disks); + *arg_proc_cmdline_disks = t; } } else if (startswith(word, "luks.") || @@ -325,25 +286,20 @@ static int parse_proc_cmdline(void) { log_warning("Unknown kernel switch %s. Ignoring.", word); } - - free(word); } - strv_uniq(arg_proc_cmdline_disks); - - r = 0; + strv_uniq(*arg_proc_cmdline_disks); -finish: - free(line); - return r; + return 0; } int main(int argc, char *argv[]) { - FILE *f = NULL; - int r = EXIT_SUCCESS; + FILE _cleanup_fclose_ *f = NULL; unsigned n = 0; + int r = EXIT_SUCCESS; char **i; - char **arg_proc_cmdline_disks_done = NULL; + char _cleanup_strv_free_ **arg_proc_cmdline_disks_done = NULL; + char _cleanup_strv_free_ **arg_proc_cmdline_disks = NULL; if (argc > 1 && argc != 4) { log_error("This program takes three or no arguments."); @@ -359,13 +315,11 @@ int main(int argc, char *argv[]) { umask(0022); - if (parse_proc_cmdline() < 0) + if (parse_proc_cmdline(&arg_proc_cmdline_disks) < 0) return EXIT_FAILURE; - if (!arg_enabled) { - r = EXIT_SUCCESS; - goto finish; - } + if (!arg_enabled) + return EXIT_SUCCESS; if (arg_read_crypttab) { f = fopen("/etc/crypttab", "re"); @@ -377,13 +331,9 @@ int main(int argc, char *argv[]) { r = EXIT_FAILURE; log_error("Failed to open /etc/crypttab: %m"); } - - goto finish; - } - - for (;;) { + } else for (;;) { char line[LINE_MAX], *l; - char *name = NULL, *device = NULL, *password = NULL, *options = NULL; + char _cleanup_free_ *name = NULL, *device = NULL, *password = NULL, *options = NULL; int k; if (!fgets(line, sizeof(line), f)) @@ -399,7 +349,7 @@ int main(int argc, char *argv[]) { if (k < 2 || k > 4) { log_error("Failed to parse /etc/crypttab:%u, ignoring.", n); r = EXIT_FAILURE; - goto next; + continue; } if (arg_proc_cmdline_disks) { @@ -408,7 +358,7 @@ int main(int argc, char *argv[]) { for /etc/crypttab and only generate units for those. */ STRV_FOREACH(i, arg_proc_cmdline_disks) { - char *proc_device, *proc_name; + char _cleanup_free_ *proc_device = NULL, *proc_name = NULL; const char *p = *i; if (startswith(p, "luks-")) @@ -417,13 +367,9 @@ int main(int argc, char *argv[]) { proc_name = strappend("luks-", p); proc_device = strappend("UUID=", p); - if (!proc_name || !proc_device) { - log_oom(); - r = EXIT_FAILURE; - free(proc_name); - free(proc_device); - goto finish; - } + if (!proc_name || !proc_device) + return log_oom(); + if (streq(proc_device, device) || streq(proc_name, name)) { char **t; @@ -431,27 +377,17 @@ int main(int argc, char *argv[]) { r = EXIT_FAILURE; t = strv_append(arg_proc_cmdline_disks_done, p); - if (!t) { - r = log_oom(); - goto finish; - } + if (!t) + return log_oom(); + strv_free(arg_proc_cmdline_disks_done); arg_proc_cmdline_disks_done = t; } - - free(proc_device); - free(proc_name); } } else { if (create_disk(name, device, password, options) < 0) r = EXIT_FAILURE; } - - next: - free(name); - free(device); - free(password); - free(options); } } @@ -461,7 +397,7 @@ int main(int argc, char *argv[]) { on the kernel command line and not yet written. */ - char *name, *device; + char _cleanup_free_ *name = NULL, *device = NULL; const char *p = *i; if (startswith(p, "luks-")) @@ -473,27 +409,12 @@ int main(int argc, char *argv[]) { name = strappend("luks-", p); device = strappend("UUID=", p); - if (!name || !device) { - log_oom(); - r = EXIT_FAILURE; - free(name); - free(device); - goto finish; - } + if (!name || !device) + return log_oom(); if (create_disk(name, device, NULL, "timeout=0") < 0) r = EXIT_FAILURE; - - free(name); - free(device); } -finish: - if (f) - fclose(f); - - strv_free(arg_proc_cmdline_disks); - strv_free(arg_proc_cmdline_disks_done); - return r; } -- cgit v1.2.1 From 99d680acf192a7193c3de73b525ffbc24c25cca8 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 13 Mar 2013 13:12:36 +0100 Subject: tmpfiles: --clean -- check for bind mounts of the same filesystem and skip them --- TODO | 2 -- src/tmpfiles/tmpfiles.c | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index 95a806be65..f1a0bcf493 100644 --- a/TODO +++ b/TODO @@ -78,8 +78,6 @@ Features: * remove any syslog support from log.c -- we probably can't do this before split-off udev is gone for good -* tmpfiles: when traversing the tree, check for bind mount points with nametohandle() - * fedora: connect the timer units of a service to the service via Also= in [Install], and maybe introduce timers.target * fedora: F20: go timer units all the way, leave cron.daily for cron diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index b93d8988fc..4a76a2f778 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -213,6 +213,42 @@ static bool unix_socket_alive(const char *fn) { return true; } +static int dir_is_mount_point(DIR *d, const char *subdir) { + struct file_handle *h; + int mount_id_parent, mount_id; + int r_p, r; + + h = alloca(MAX_HANDLE_SZ); + + h->handle_bytes = MAX_HANDLE_SZ; + r_p = name_to_handle_at(dirfd(d), ".", h, &mount_id_parent, 0); + if (r_p < 0) + r_p = -errno; + + h->handle_bytes = MAX_HANDLE_SZ; + r = name_to_handle_at(dirfd(d), subdir, h, &mount_id, 0); + if (r < 0) + r = -errno; + + /* got no handle; make no assumptions, return error */ + if (r_p < 0 && r < 0) + return r_p; + + /* got both handles; if they differ, it is a mount point */ + if (r_p >= 0 && r >= 0) + return mount_id_parent != mount_id; + + /* got only one handle; assume different mount points if one + * of both queries was not supported by the filesystem */ + if (r_p == -ENOSYS || r_p == -ENOTSUP || r == -ENOSYS || r == -ENOTSUP) + return true; + + /* return error */ + if (r_p < 0) + return r_p; + return r; +} + static int dir_cleanup( Item *i, const char *p, @@ -252,6 +288,12 @@ static int dir_cleanup( if (s.st_dev != rootdev) continue; + /* Try to detect bind mounts of the same filesystem instance; they + * do not differ in device major/minors. This type of query is not + * supported on all kernels or filesystem types though. */ + if (S_ISDIR(s.st_mode) && dir_is_mount_point(d, dent->d_name) > 0) + continue; + /* Do not delete read-only files owned by root */ if (s.st_uid == 0 && !(s.st_mode & S_IWUSR)) continue; -- cgit v1.2.1 From 5052495bbaf318d132024e75295da2f5d721420c Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Tue, 5 Mar 2013 15:46:37 +0100 Subject: manager: use more stpcpy() --- src/core/manager.c | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/core/manager.c b/src/core/manager.c index 77eaa468d9..a3eeb4afc1 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -230,32 +230,26 @@ static void draw_cylon(char buffer[], size_t buflen, unsigned width, unsigned po memset(p, ' ', pos-2); p += pos-2; } - memcpy(p, ANSI_RED_ON, strlen(ANSI_RED_ON)); - p += strlen(ANSI_RED_ON); + p = stpcpy(p, ANSI_RED_ON); *p++ = '*'; } if (pos > 0 && pos <= width) { - memcpy(p, ANSI_HIGHLIGHT_RED_ON, strlen(ANSI_HIGHLIGHT_RED_ON)); - p += strlen(ANSI_HIGHLIGHT_RED_ON); + p = stpcpy(p, ANSI_HIGHLIGHT_RED_ON); *p++ = '*'; } - memcpy(p, ANSI_HIGHLIGHT_OFF, strlen(ANSI_HIGHLIGHT_OFF)); - p += strlen(ANSI_HIGHLIGHT_OFF); + p = stpcpy(p, ANSI_HIGHLIGHT_OFF); if (pos < width) { - memcpy(p, ANSI_RED_ON, strlen(ANSI_RED_ON)); - p += strlen(ANSI_RED_ON); + p = stpcpy(p, ANSI_RED_ON); *p++ = '*'; if (pos < width-1) { memset(p, ' ', width-1-pos); p += width-1-pos; } - memcpy(p, ANSI_HIGHLIGHT_OFF, strlen(ANSI_HIGHLIGHT_OFF)); - p += strlen(ANSI_HIGHLIGHT_OFF); + p = stpcpy(p, ANSI_HIGHLIGHT_OFF); } - *p = 0; } static void manager_print_jobs_in_progress(Manager *m) { -- cgit v1.2.1 From 6282c859bdc6463cb25734dcfd3cf8628d951088 Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Tue, 5 Mar 2013 15:52:44 +0100 Subject: util, manager: and mempset() and use it Just like mempcpy() is almost identical to memcpy() except the useful return value, so is the relation of mempset() to memset(). --- src/core/manager.c | 12 ++++-------- src/shared/util.h | 5 +++++ 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/core/manager.c b/src/core/manager.c index a3eeb4afc1..8e66732cd7 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -226,10 +226,8 @@ static void draw_cylon(char buffer[], size_t buflen, unsigned width, unsigned po assert(pos <= width+1); /* 0 or width+1 mean that the center light is behind the corner */ if (pos > 1) { - if (pos > 2) { - memset(p, ' ', pos-2); - p += pos-2; - } + if (pos > 2) + p = mempset(p, ' ', pos-2); p = stpcpy(p, ANSI_RED_ON); *p++ = '*'; } @@ -244,10 +242,8 @@ static void draw_cylon(char buffer[], size_t buflen, unsigned width, unsigned po if (pos < width) { p = stpcpy(p, ANSI_RED_ON); *p++ = '*'; - if (pos < width-1) { - memset(p, ' ', width-1-pos); - p += width-1-pos; - } + if (pos < width-1) + p = mempset(p, ' ', width-1-pos); p = stpcpy(p, ANSI_HIGHLIGHT_OFF); } } diff --git a/src/shared/util.h b/src/shared/util.h index 04c9fcd71e..f0dfe19ad4 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -594,3 +594,8 @@ int search_and_fopen_nulstr(const char *path, const char *mode, const char *sear } else if (ignore_file((de)->d_name)) \ continue; \ else + +static inline void *mempset(void *s, int c, size_t n) { + memset(s, c, n); + return (char*)s + n; +} -- cgit v1.2.1 From 814cc562121270e2d5de0630b773792c74990a9c Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Sat, 2 Mar 2013 22:31:09 +0100 Subject: core: single unit_kill implementation for all unit types There are very few differences in the implementations of the kill method in the unit types that have one. Let's unify them. This does not yet unify unit_kill() with unit_kill_context(). --- src/core/mount.c | 48 +------------------------------------------ src/core/service.c | 60 +----------------------------------------------------- src/core/socket.c | 48 +------------------------------------------ src/core/swap.c | 48 +------------------------------------------ src/core/unit.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/core/unit.h | 1 + 6 files changed, 64 insertions(+), 200 deletions(-) diff --git a/src/core/mount.c b/src/core/mount.c index 895aa25371..73a7832430 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -1781,53 +1781,7 @@ static void mount_reset_failed(Unit *u) { } static int mount_kill(Unit *u, KillWho who, int signo, DBusError *error) { - Mount *m = MOUNT(u); - int r = 0; - Set *pid_set = NULL; - - assert(m); - - if (who == KILL_MAIN) { - dbus_set_error(error, BUS_ERROR_NO_SUCH_PROCESS, "Mount units have no main processes"); - return -ESRCH; - } - - if (m->control_pid <= 0 && who == KILL_CONTROL) { - dbus_set_error(error, BUS_ERROR_NO_SUCH_PROCESS, "No control process to kill"); - return -ESRCH; - } - - if (who == KILL_CONTROL || who == KILL_ALL) - if (m->control_pid > 0) - if (kill(m->control_pid, signo) < 0) - r = -errno; - - if (who == KILL_ALL) { - int q; - - pid_set = set_new(trivial_hash_func, trivial_compare_func); - if (!pid_set) - return -ENOMEM; - - /* Exclude the control pid from being killed via the cgroup */ - if (m->control_pid > 0) { - q = set_put(pid_set, LONG_TO_PTR(m->control_pid)); - if (q < 0) { - r = q; - goto finish; - } - } - - q = cgroup_bonding_kill_list(UNIT(m)->cgroup_bondings, signo, false, false, pid_set, NULL); - if (q < 0 && q != -EAGAIN && q != -ESRCH && q != -ENOENT) - r = q; - } - -finish: - if (pid_set) - set_free(pid_set); - - return r; + return unit_kill_common(u, who, signo, -1, MOUNT(u)->control_pid, error); } static const char* const mount_state_table[_MOUNT_STATE_MAX] = { diff --git a/src/core/service.c b/src/core/service.c index 3fbb0a136d..fd90ceba05 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -3711,65 +3711,7 @@ static void service_reset_failed(Unit *u) { static int service_kill(Unit *u, KillWho who, int signo, DBusError *error) { Service *s = SERVICE(u); - int r = 0; - Set *pid_set = NULL; - - assert(s); - - if (s->main_pid <= 0 && who == KILL_MAIN) { - dbus_set_error(error, BUS_ERROR_NO_SUCH_PROCESS, "No main process to kill"); - return -ESRCH; - } - - if (s->control_pid <= 0 && who == KILL_CONTROL) { - dbus_set_error(error, BUS_ERROR_NO_SUCH_PROCESS, "No control process to kill"); - return -ESRCH; - } - - if (who == KILL_CONTROL || who == KILL_ALL) - if (s->control_pid > 0) - if (kill(s->control_pid, signo) < 0) - r = -errno; - - if (who == KILL_MAIN || who == KILL_ALL) - if (s->main_pid > 0) - if (kill(s->main_pid, signo) < 0) - r = -errno; - - if (who == KILL_ALL) { - int q; - - pid_set = set_new(trivial_hash_func, trivial_compare_func); - if (!pid_set) - return -ENOMEM; - - /* Exclude the control/main pid from being killed via the cgroup */ - if (s->control_pid > 0) { - q = set_put(pid_set, LONG_TO_PTR(s->control_pid)); - if (q < 0) { - r = q; - goto finish; - } - } - - if (s->main_pid > 0) { - q = set_put(pid_set, LONG_TO_PTR(s->main_pid)); - if (q < 0) { - r = q; - goto finish; - } - } - - q = cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, signo, false, false, pid_set, NULL); - if (q < 0 && q != -EAGAIN && q != -ESRCH && q != -ENOENT) - r = q; - } - -finish: - if (pid_set) - set_free(pid_set); - - return r; + return unit_kill_common(u, who, signo, s->main_pid, s->control_pid, error); } static const char* const service_state_table[_SERVICE_STATE_MAX] = { diff --git a/src/core/socket.c b/src/core/socket.c index 2105369018..ee9de4e14c 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -2265,53 +2265,7 @@ static void socket_reset_failed(Unit *u) { } static int socket_kill(Unit *u, KillWho who, int signo, DBusError *error) { - Socket *s = SOCKET(u); - int r = 0; - Set *pid_set = NULL; - - assert(s); - - if (who == KILL_MAIN) { - dbus_set_error(error, BUS_ERROR_NO_SUCH_PROCESS, "Socket units have no main processes"); - return -ESRCH; - } - - if (s->control_pid <= 0 && who == KILL_CONTROL) { - dbus_set_error(error, BUS_ERROR_NO_SUCH_PROCESS, "No control process to kill"); - return -ESRCH; - } - - if (who == KILL_CONTROL || who == KILL_ALL) - if (s->control_pid > 0) - if (kill(s->control_pid, signo) < 0) - r = -errno; - - if (who == KILL_ALL) { - int q; - - pid_set = set_new(trivial_hash_func, trivial_compare_func); - if (!pid_set) - return -ENOMEM; - - /* Exclude the control pid from being killed via the cgroup */ - if (s->control_pid > 0) { - q = set_put(pid_set, LONG_TO_PTR(s->control_pid)); - if (q < 0) { - r = q; - goto finish; - } - } - - q = cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, signo, false, false, pid_set, NULL); - if (q < 0 && q != -EAGAIN && q != -ESRCH && q != -ENOENT) - r = q; - } - -finish: - if (pid_set) - set_free(pid_set); - - return r; + return unit_kill_common(u, who, signo, -1, SOCKET(u)->control_pid, error); } static const char* const socket_state_table[_SOCKET_STATE_MAX] = { diff --git a/src/core/swap.c b/src/core/swap.c index 61ce8316c2..a0e55a0c03 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -1262,53 +1262,7 @@ static void swap_reset_failed(Unit *u) { } static int swap_kill(Unit *u, KillWho who, int signo, DBusError *error) { - Swap *s = SWAP(u); - int r = 0; - Set *pid_set = NULL; - - assert(s); - - if (who == KILL_MAIN) { - dbus_set_error(error, BUS_ERROR_NO_SUCH_PROCESS, "Swap units have no main processes"); - return -ESRCH; - } - - if (s->control_pid <= 0 && who == KILL_CONTROL) { - dbus_set_error(error, BUS_ERROR_NO_SUCH_PROCESS, "No control process to kill"); - return -ESRCH; - } - - if (who == KILL_CONTROL || who == KILL_ALL) - if (s->control_pid > 0) - if (kill(s->control_pid, signo) < 0) - r = -errno; - - if (who == KILL_ALL) { - int q; - - pid_set = set_new(trivial_hash_func, trivial_compare_func); - if (!pid_set) - return -ENOMEM; - - /* Exclude the control pid from being killed via the cgroup */ - if (s->control_pid > 0) { - q = set_put(pid_set, LONG_TO_PTR(s->control_pid)); - if (q < 0) { - r = q; - goto finish; - } - } - - q = cgroup_bonding_kill_list(UNIT(s)->cgroup_bondings, signo, false, false, pid_set, NULL); - if (q < 0 && q != -EAGAIN && q != -ESRCH && q != -ENOENT) - r = q; - } - -finish: - if (pid_set) - set_free(pid_set); - - return r; + return unit_kill_common(u, who, signo, -1, SWAP(u)->control_pid, error); } static const char* const swap_state_table[_SWAP_STATE_MAX] = { diff --git a/src/core/unit.c b/src/core/unit.c index a6cc3b6102..a1249dc093 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -48,6 +48,7 @@ #include "mkdir.h" #include "label.h" #include "fileio-label.h" +#include "bus-errors.h" const UnitVTable * const unit_vtable[_UNIT_TYPE_MAX] = { [UNIT_SERVICE] = &service_vtable, @@ -2644,6 +2645,64 @@ int unit_kill(Unit *u, KillWho w, int signo, DBusError *error) { return UNIT_VTABLE(u)->kill(u, w, signo, error); } +int unit_kill_common(Unit *u, KillWho who, int signo, pid_t main_pid, pid_t control_pid, DBusError *error) { + int r = 0; + + if (who == KILL_MAIN && main_pid <= 0) { + if (main_pid < 0) + dbus_set_error(error, BUS_ERROR_NO_SUCH_PROCESS, "%s units have no main processes", unit_type_to_string(u->type)); + else + dbus_set_error(error, BUS_ERROR_NO_SUCH_PROCESS, "No main process to kill"); + return -ESRCH; + } + + if (who == KILL_CONTROL && control_pid <= 0) { + if (control_pid < 0) + dbus_set_error(error, BUS_ERROR_NO_SUCH_PROCESS, "%s units have no control processes", unit_type_to_string(u->type)); + else + dbus_set_error(error, BUS_ERROR_NO_SUCH_PROCESS, "No control process to kill"); + return -ESRCH; + } + + if (who == KILL_CONTROL || who == KILL_ALL) + if (control_pid > 0) + if (kill(control_pid, signo) < 0) + r = -errno; + + if (who == KILL_MAIN || who == KILL_ALL) + if (main_pid > 0) + if (kill(main_pid, signo) < 0) + r = -errno; + + if (who == KILL_ALL) { + _cleanup_set_free_ Set *pid_set = NULL; + int q; + + pid_set = set_new(trivial_hash_func, trivial_compare_func); + if (!pid_set) + return -ENOMEM; + + /* Exclude the control/main pid from being killed via the cgroup */ + if (control_pid > 0) { + q = set_put(pid_set, LONG_TO_PTR(control_pid)); + if (q < 0) + return q; + } + + if (main_pid > 0) { + q = set_put(pid_set, LONG_TO_PTR(main_pid)); + if (q < 0) + return q; + } + + q = cgroup_bonding_kill_list(u->cgroup_bondings, signo, false, false, pid_set, NULL); + if (q < 0 && q != -EAGAIN && q != -ESRCH && q != -ENOENT) + r = q; + } + + return r; +} + int unit_following_set(Unit *u, Set **s) { assert(u); assert(s); diff --git a/src/core/unit.h b/src/core/unit.h index 9029d6225b..3da6a50da9 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -486,6 +486,7 @@ int unit_stop(Unit *u); int unit_reload(Unit *u); int unit_kill(Unit *u, KillWho w, int signo, DBusError *error); +int unit_kill_common(Unit *u, KillWho who, int signo, pid_t main_pid, pid_t control_pid, DBusError *error); void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_success); -- cgit v1.2.1 From 946f1825751919a176cd0039002a514de0c9c70f Mon Sep 17 00:00:00 2001 From: Hannes Reinecke Date: Mon, 11 Mar 2013 12:49:27 +0100 Subject: libudev: implement udev_device_set_attribute_value() --- Makefile.am | 6 +-- docs/libudev/libudev-sections.txt | 1 + src/libudev/libudev-device.c | 102 ++++++++++++++++++++++++++++++++++++++ src/libudev/libudev.h | 1 + src/libudev/libudev.sym | 4 ++ 5 files changed, 111 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index 2a010c7ed2..3073b0df84 100644 --- a/Makefile.am +++ b/Makefile.am @@ -31,9 +31,9 @@ SUBDIRS = . po # keep intermediate files .SECONDARY: -LIBUDEV_CURRENT=3 -LIBUDEV_REVISION=2 -LIBUDEV_AGE=2 +LIBUDEV_CURRENT=4 +LIBUDEV_REVISION=0 +LIBUDEV_AGE=3 LIBGUDEV_CURRENT=1 LIBGUDEV_REVISION=3 diff --git a/docs/libudev/libudev-sections.txt b/docs/libudev/libudev-sections.txt index 067a3f5b95..c1546458f4 100644 --- a/docs/libudev/libudev-sections.txt +++ b/docs/libudev/libudev-sections.txt @@ -53,6 +53,7 @@ udev_device_get_driver udev_device_get_devnum udev_device_get_action udev_device_get_sysattr_value +udev_device_set_sysattr_value udev_device_get_sysattr_list_entry udev_device_get_seqnum udev_device_get_usec_since_initialized diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c index 9fe3d633d4..05c5fbce98 100644 --- a/src/libudev/libudev-device.c +++ b/src/libudev/libudev-device.c @@ -1440,6 +1440,108 @@ out: return val; } +/** + * udev_device_set_sysattr_value: + * @udev_device: udev device + * @sysattr: attribute name + * @value: new value to be set + * + * Update the contents of the sys attribute and the cached value of the device. + * + * Returns: Negative error code on failure or 0 on success. + **/ +_public_ int udev_device_set_sysattr_value(struct udev_device *udev_device, const char *sysattr, char *value) +{ + struct udev_device *dev; + char path[UTIL_PATH_SIZE]; + struct stat statbuf; + int fd; + ssize_t size, value_len; + int ret = 0; + + if (udev_device == NULL) + return -EINVAL; + dev = udev_device; + if (sysattr == NULL) + return -EINVAL; + if (value == NULL) + value_len = 0; + else + value_len = strlen(value); +restart: + strscpyl(path, sizeof(path), udev_device_get_syspath(dev), "/", sysattr, NULL); + if (lstat(path, &statbuf) != 0) { + udev_list_entry_add(&dev->sysattr_value_list, sysattr, NULL); + ret = -ENXIO; + goto out; + } + + if (S_ISLNK(statbuf.st_mode)) { + /* + * Cannot modify core link values + */ + if (streq(sysattr, "driver") || + streq(sysattr, "subsystem") || + streq(sysattr, "module")) { + ret = -EPERM; + } else if (!streq(sysattr, "device")) { + /* resolve custom link to a device */ + strscpyl(path, sizeof(path), udev_device->syspath, "/", sysattr, NULL); + dev = udev_device_new_from_syspath(udev_device->udev, path); + if (dev != NULL) + goto restart; + ret = -ENXIO; + } else { + /* Unhandled, to not try to modify anything */ + ret = -EINVAL; + } + goto out; + } + + /* skip directories */ + if (S_ISDIR(statbuf.st_mode)) { + ret = -EISDIR; + goto out; + } + + /* skip non-readable files */ + if ((statbuf.st_mode & S_IRUSR) == 0) { + ret = -EACCES; + goto out; + } + + /* Value is limited to 4k */ + if (value_len > 4096) { + ret = -EINVAL; + goto out; + } + util_remove_trailing_chars(value, '\n'); + + /* write attribute value */ + fd = open(path, O_WRONLY|O_CLOEXEC); + if (fd < 0) { + ret = -errno; + goto out; + } + size = write(fd, value, value_len); + close(fd); + if (size < 0) { + ret = -errno; + goto out; + } + if (size < value_len) { + ret = -EIO; + goto out; + } + + /* wrote a valid value, store it in cache and return it */ + udev_list_entry_add(&dev->sysattr_value_list, sysattr, value); +out: + if (dev != udev_device) + udev_device_unref(dev); + return ret; +} + static int udev_device_sysattr_list_read(struct udev_device *udev_device) { struct dirent *dent; diff --git a/src/libudev/libudev.h b/src/libudev/libudev.h index bb41532a21..61567b1d67 100644 --- a/src/libudev/libudev.h +++ b/src/libudev/libudev.h @@ -107,6 +107,7 @@ const char *udev_device_get_action(struct udev_device *udev_device); unsigned long long int udev_device_get_seqnum(struct udev_device *udev_device); unsigned long long int udev_device_get_usec_since_initialized(struct udev_device *udev_device); const char *udev_device_get_sysattr_value(struct udev_device *udev_device, const char *sysattr); +int udev_device_set_sysattr_value(struct udev_device *udev_device, const char *sysattr, char *value); int udev_device_has_tag(struct udev_device *udev_device, const char *tag); /* diff --git a/src/libudev/libudev.sym b/src/libudev/libudev.sym index df6a1aeddf..c232fbfdd5 100644 --- a/src/libudev/libudev.sym +++ b/src/libudev/libudev.sym @@ -108,3 +108,7 @@ global: udev_hwdb_unref; udev_hwdb_get_properties_list_entry; } LIBUDEV_189; + +LIBUDEV_199 { + udev_device_set_sysattr_value; +} LIBUDEV_196; -- cgit v1.2.1 From 4afb5c73a2ccc43bf9515c815426d9e314d555ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 13 Mar 2013 13:24:06 -0400 Subject: build-sys: add two new files to EXTRA_DIST Also move custom-*.xsl EXTRA_DIST additions closer to where they are used. --- Makefile.am | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Makefile.am b/Makefile.am index 3073b0df84..a12e57ecd5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -471,8 +471,7 @@ EXTRA_DIST += \ units/initrd-cleanup.service.in \ units/initrd-udevadm-cleanup-db.service.in \ units/initrd-switch-root.service.in \ - introspect.awk \ - man/custom-html.xsl + introspect.awk CLEANFILES += \ units/console-shell.service.m4 \ @@ -2882,7 +2881,8 @@ systemd_bootchart_SOURCES = \ src/bootchart/bootchart.h \ src/bootchart/store.c \ src/bootchart/store.h \ - src/bootchart/svg.c + src/bootchart/svg.c \ + src/bootchart/svg.h systemd_bootchart_LDADD = \ libsystemd-shared.la @@ -3718,6 +3718,10 @@ endef endif +EXTRA_DIST += \ + man/custom-html.xsl \ + man/custom-man.xsl + # ------------------------------------------------------------------------------ DBUS_PREPROCESS = $(CPP) -P $(CFLAGS) $(DBUS_CFLAGS) -imacros dbus/dbus-protocol.h -- cgit v1.2.1 From 7d7681f70bc8c2140092029ccada9f75510a176b Mon Sep 17 00:00:00 2001 From: Thomas Hindoe Paaboel Andersen Date: Wed, 13 Mar 2013 23:09:49 +0100 Subject: man: fix some typos --- man/journalctl.xml | 2 +- man/journald.conf.xml | 2 +- man/kernel-install.xml | 6 +++--- man/logind.conf.xml | 2 +- man/machine-id.xml | 2 +- man/nss-myhostname.xml | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/man/journalctl.xml b/man/journalctl.xml index 3db5e5dab6..4bbc288b7a 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -171,7 +171,7 @@ implied pager tool. This implies to guarantee that the pager won't buffer logs of - unbounded size. This may be overriden + unbounded size. This may be overridden with an explicit with some other numeric value on the command line. Note that this option is diff --git a/man/journald.conf.xml b/man/journald.conf.xml index 6ba583b31d..0797deb115 100644 --- a/man/journald.conf.xml +++ b/man/journald.conf.xml @@ -183,7 +183,7 @@ messages is generated. This rate limiting is applied per-service, so that two services which log do not - interfere with each others' + interfere with each other's limits. Defaults to 200 messages in 10s. The time specification for RateLimitInterval= diff --git a/man/kernel-install.xml b/man/kernel-install.xml index 4634680b39..df3549dcb7 100644 --- a/man/kernel-install.xml +++ b/man/kernel-install.xml @@ -131,7 +131,7 @@ along with systemd; If not, see . /proc/cmdline - The contents of the file /etc/kernel/cmdline specifies the kernel command line to use. + The content of the file /etc/kernel/cmdline specifies the kernel command line to use. If that file does not exist, /proc/cmdline is used. @@ -140,7 +140,7 @@ along with systemd; If not, see . /etc/machine-id - The contents of the file specifies the machine identifaction <MACHINE-ID>. + The content of the file specifies the machine identification <MACHINE-ID>. @@ -148,7 +148,7 @@ along with systemd; If not, see . /etc/os-release - The contents of the file specifies the the operating system id <OS-ID>. + The content of the file specifies the operating system id <OS-ID>. diff --git a/man/logind.conf.xml b/man/logind.conf.xml index b0dd20f2a4..47ee0e73ff 100644 --- a/man/logind.conf.xml +++ b/man/logind.conf.xml @@ -163,7 +163,7 @@ will execute the action after all sessions reported that they are idle, and no idle inhibitor lock is active, - and subsquently the time configured + and subsequently the time configured with IdleActionSec= (see below) has passed. diff --git a/man/machine-id.xml b/man/machine-id.xml index 153ae4da2c..1e558a6178 100644 --- a/man/machine-id.xml +++ b/man/machine-id.xml @@ -75,7 +75,7 @@ logic as the D-Bus machine ID. Programs may use this ID to identify the host - with a globally unique ID in the network, that does + with a globally unique ID in the network, which does not change even if the local network configuration changes. Due to this and its greater length it is a more useful replacement for the diff --git a/man/nss-myhostname.xml b/man/nss-myhostname.xml index 3fc91ee792..c0e2b828be 100644 --- a/man/nss-myhostname.xml +++ b/man/nss-myhostname.xml @@ -68,7 +68,7 @@ /etc file system and is fragile because the file might be edited by the administrator at the same time. nss-myhostname simply returns all locally configure public IP addresses, or -- if none - are configured -- the IPv4 address 127.0.0.2 (wich is on the local + are configured -- the IPv4 address 127.0.0.2 (which is on the local loopback) and the IPv6 address ::1 (which is the local host) for whatever system hostname is configured locally. Patching /etc/hosts is thus no longer necessary. -- cgit v1.2.1 From 886a64fe6903bc1ccde5c7af0eac6786918c8e49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 13 Mar 2013 19:30:05 -0400 Subject: logs-show: export logic to add matches for units After that functions which add matches, show_journal_by_unit and show_journal_by_user_unit, become nearly identical, so I merged them into one function. --- src/shared/logs-show.c | 150 +++++++++++++++++----------------------------- src/shared/logs-show.h | 19 +++--- src/systemctl/systemctl.c | 26 +++----- 3 files changed, 75 insertions(+), 120 deletions(-) diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index b909c24e98..43386841ba 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -869,76 +869,68 @@ finish: return r; } -int show_journal_by_unit( - FILE *f, - const char *unit, - OutputMode mode, - unsigned n_columns, - usec_t not_before, - unsigned how_many, - OutputFlags flags) { - - _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL; - sd_journal *j = NULL; +int add_matches_for_unit(sd_journal *j, const char *unit) { int r; + _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL; - assert(mode >= 0); - assert(mode < _OUTPUT_MODE_MAX); + assert(j); assert(unit); - if (how_many <= 0) - return 0; - if (asprintf(&m1, "_SYSTEMD_UNIT=%s", unit) < 0 || asprintf(&m2, "COREDUMP_UNIT=%s", unit) < 0 || - asprintf(&m3, "UNIT=%s", unit) < 0) { - r = -ENOMEM; - goto finish; - } - - r = sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY|SD_JOURNAL_SYSTEM_ONLY); - if (r < 0) - goto finish; - - /* Look for messages from the service itself */ - r = sd_journal_add_match(j, m1, 0); - if (r < 0) - goto finish; + asprintf(&m3, "UNIT=%s", unit) < 0) + return -ENOMEM; - /* Look for coredumps of the service */ - r = sd_journal_add_disjunction(j); - if (r < 0) - goto finish; - r = sd_journal_add_match(j, "MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1", 0); - if (r < 0) - goto finish; - r = sd_journal_add_match(j, m2, 0); - if (r < 0) - goto finish; + (void)( + /* Look for messages from the service itself */ + (r = sd_journal_add_match(j, m1, 0)) || + + /* Look for coredumps of the service */ + (r = sd_journal_add_disjunction(j)) || + (r = sd_journal_add_match(j, + "MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1", 0)) || + (r = sd_journal_add_match(j, m2, 0)) || + + /* Look for messages from PID 1 about this service */ + (r = sd_journal_add_disjunction(j)) || + (r = sd_journal_add_match(j, "_PID=1", 0)) || + (r = sd_journal_add_match(j, m3, 0)) + ); + return r; +} - /* Look for messages from PID 1 about this service */ - r = sd_journal_add_disjunction(j); - if (r < 0) - goto finish; - r = sd_journal_add_match(j, "_PID=1", 0); - if (r < 0) - goto finish; - r = sd_journal_add_match(j, m3, 0); - if (r < 0) - goto finish; +int add_matches_for_user_unit(sd_journal *j, const char *unit, uid_t uid) { + int r; + _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL, *m4 = NULL; - r = show_journal(f, j, mode, n_columns, not_before, how_many, flags); - if (r < 0) - goto finish; + assert(j); + assert(unit); -finish: - if (j) - sd_journal_close(j); + if (asprintf(&m1, "_SYSTEMD_USER_UNIT=%s", unit) < 0 || + asprintf(&m2, "USER_UNIT=%s", unit) < 0 || + asprintf(&m3, "COREDUMP_USER_UNIT=%s", unit) < 0 || + asprintf(&m4, "_UID=%d", uid) < 0) + return -ENOMEM; + (void) ( + /* Look for messages from the user service itself */ + (r = sd_journal_add_match(j, m1, 0)) || + (r = sd_journal_add_match(j, m4, 0)) || + + /* Look for messages from systemd about this service */ + (r = sd_journal_add_disjunction(j)) || + (r = sd_journal_add_match(j, m2, 0)) || + (r = sd_journal_add_match(j, m4, 0)) || + + /* Look for coredumps of the service */ + (r = sd_journal_add_disjunction(j)) || + (r = sd_journal_add_match(j, m3, 0)) || + (r = sd_journal_add_match(j, m4, 0)) + ); return r; } -int show_journal_by_user_unit( +int show_journal_by_unit( FILE *f, const char *unit, OutputMode mode, @@ -946,11 +938,12 @@ int show_journal_by_user_unit( usec_t not_before, unsigned how_many, uid_t uid, - OutputFlags flags) { + OutputFlags flags, + bool system) { - _cleanup_free_ char *m1 = NULL, *m2 = NULL, *m3 = NULL, *m4 = NULL; sd_journal *j = NULL; int r; + int jflags = SD_JOURNAL_LOCAL_ONLY | system * SD_JOURNAL_SYSTEM_ONLY; assert(mode >= 0); assert(mode < _OUTPUT_MODE_MAX); @@ -959,45 +952,14 @@ int show_journal_by_user_unit( if (how_many <= 0) return 0; - if (asprintf(&m1, "_SYSTEMD_USER_UNIT=%s", unit) < 0 || - asprintf(&m2, "USER_UNIT=%s", unit) < 0 || - asprintf(&m3, "COREDUMP_USER_UNIT=%s", unit) < 0 || - asprintf(&m4, "_UID=%d", uid) < 0) { - r = -ENOMEM; - goto finish; - } - - r = sd_journal_open(&j, SD_JOURNAL_LOCAL_ONLY); - if (r < 0) - goto finish; - - /* Look for messages from the user service itself */ - r = sd_journal_add_match(j, m1, 0); - if (r < 0) - goto finish; - r = sd_journal_add_match(j, m4, 0); - if (r < 0) - goto finish; - - /* Look for messages from systemd about this service */ - r = sd_journal_add_disjunction(j); - if (r < 0) - goto finish; - r = sd_journal_add_match(j, m2, 0); - if (r < 0) - goto finish; - r = sd_journal_add_match(j, m4, 0); + r = sd_journal_open(&j, jflags); if (r < 0) goto finish; - /* Look for coredumps of the service */ - r = sd_journal_add_disjunction(j); - if (r < 0) - goto finish; - r = sd_journal_add_match(j, m3, 0); - if (r < 0) - goto finish; - r = sd_journal_add_match(j, m4, 0); + if (system) + r = add_matches_for_unit(j, unit); + else + r = add_matches_for_user_unit(j, unit, uid); if (r < 0) goto finish; diff --git a/src/shared/logs-show.h b/src/shared/logs-show.h index a835112c99..5a4c9f24d7 100644 --- a/src/shared/logs-show.h +++ b/src/shared/logs-show.h @@ -37,16 +37,16 @@ int output_journal( unsigned n_columns, OutputFlags flags); -int show_journal_by_unit( - FILE *f, +int add_matches_for_unit( + sd_journal *j, + const char *unit); + +int add_matches_for_user_unit( + sd_journal *j, const char *unit, - OutputMode mode, - unsigned n_columns, - usec_t not_before, - unsigned how_many, - OutputFlags flags); + uid_t uid); -int show_journal_by_user_unit( +int show_journal_by_unit( FILE *f, const char *unit, OutputMode mode, @@ -54,7 +54,8 @@ int show_journal_by_user_unit( usec_t not_before, unsigned how_many, uid_t uid, - OutputFlags flags); + OutputFlags flags, + bool system); void json_escape( FILE *f, diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 4a55c566ec..5902a3798d 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -2509,23 +2509,15 @@ static void print_status_info(UnitStatusInfo *i) { if (i->id && arg_transport != TRANSPORT_SSH) { printf("\n"); - if(arg_scope == UNIT_FILE_SYSTEM) - show_journal_by_unit(stdout, - i->id, - arg_output, - 0, - i->inactive_exit_timestamp_monotonic, - arg_lines, - flags); - else - show_journal_by_user_unit(stdout, - i->id, - arg_output, - 0, - i->inactive_exit_timestamp_monotonic, - arg_lines, - getuid(), - flags); + show_journal_by_unit(stdout, + i->id, + arg_output, + 0, + i->inactive_exit_timestamp_monotonic, + arg_lines, + getuid(), + flags, + arg_scope == UNIT_FILE_SYSTEM); } if (i->need_daemon_reload) -- cgit v1.2.1 From 7199aa96ce19468d9ce4cb21a13e32a3792fde41 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 13 Mar 2013 19:30:05 -0400 Subject: journalctl: show systemd messages about unit for -u journalctl -u unit is not very useful, because it doesn't show systemd messages about starting, stopping, coredumps, etc, like systemctl status unit does. Make it show the same information using the same rules. If somebody really want to see just messages from by the unit, it is easy enough to use _SYSTEMD_UNIT=... --- man/journalctl.xml | 26 ++++++++++++++++---------- src/journal/journalctl.c | 27 ++++++++++++--------------- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/man/journalctl.xml b/man/journalctl.xml index 4bbc288b7a..632a8134db 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -324,22 +324,28 @@ - Show data only of the - specified unit. This will add a match - for _SYSTEMD_UNIT= - for the specified - unit. + Show messages for the + specified systemd unit. This will add + a match for messages from the unit + (_SYSTEMD_UNIT=) + and additional matches for messages + from systemd and messages about + coredumps for the specified unit. + - Show data only of the + Show messages for the specified user session unit. This will - add a match for - _SYSTEMD_USER_UNIT= - for the specified - unit. + add a match for messages from the unit + (_SYSTEMD_USER_UNIT= + and _UID=) and + additional matches for messages from + session systemd and messages about + coredumps for the specified unit. + diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 3682329e46..65114b2ff8 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -38,6 +38,7 @@ #include #include "log.h" +#include "logs-show.h" #include "util.h" #include "path-util.h" #include "build.h" @@ -76,7 +77,7 @@ static usec_t arg_interval = DEFAULT_FSS_INTERVAL_USEC; static usec_t arg_since, arg_until; static bool arg_since_set = false, arg_until_set = false; static const char *arg_unit = NULL; -static const char *arg_unit_type = NULL; +static bool arg_unit_system; static const char *arg_field = NULL; static bool arg_catalog = false; static bool arg_reverse = false; @@ -187,8 +188,8 @@ static int parse_argv(int argc, char *argv[]) { { "cursor", required_argument, NULL, 'c' }, { "since", required_argument, NULL, ARG_SINCE }, { "until", required_argument, NULL, ARG_UNTIL }, - { "user-unit", required_argument, NULL, ARG_USER_UNIT }, { "unit", required_argument, NULL, 'u' }, + { "user-unit", required_argument, NULL, ARG_USER_UNIT }, { "field", required_argument, NULL, 'F' }, { "catalog", no_argument, NULL, 'x' }, { "list-catalog", no_argument, NULL, ARG_LIST_CATALOG }, @@ -419,14 +420,14 @@ static int parse_argv(int argc, char *argv[]) { arg_until_set = true; break; - case ARG_USER_UNIT: + case 'u': arg_unit = optarg; - arg_unit_type = "_SYSTEMD_USER_UNIT="; + arg_unit_system = true; break; - case 'u': + case ARG_USER_UNIT: arg_unit = optarg; - arg_unit_type = "_SYSTEMD_UNIT="; + arg_unit_system = false; break; case '?': @@ -604,16 +605,12 @@ static int add_unit(sd_journal *j) { if (!u) return log_oom(); - m = strappend(arg_unit_type, u); - - if (!m) - return log_oom(); - - r = sd_journal_add_match(j, m, strlen(m)); - if (r < 0) { - log_error("Failed to add match: %s", strerror(-r)); + if (arg_unit_system) + r = add_matches_for_unit(j, u); + else + r = add_matches_for_user_unit(j, u, getuid()); + if (r < 0) return r; - } return 0; } -- cgit v1.2.1 From 427b47c4abaf4b5820e3532bf6993c7abe66703c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 13 Mar 2013 19:40:01 -0400 Subject: initctl: catch write error, use _cleanup_ != operator always returns something nonnegative, so the error condition was not caught. --- src/systemctl/systemctl.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 5902a3798d..84b7c8ee2d 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -5041,21 +5041,22 @@ finish: } static int talk_initctl(void) { - struct init_request request; - int r, fd; + struct init_request request = {0}; + int r; + int _cleanup_close_ fd = -1; char rl; - if (!(rl = action_to_runlevel())) + rl = action_to_runlevel(); + if (!rl) return 0; - zero(request); request.magic = INIT_MAGIC; request.sleeptime = 0; request.cmd = INIT_CMD_RUNLVL; request.runlevel = rl; - if ((fd = open(INIT_FIFO, O_WRONLY|O_NDELAY|O_CLOEXEC|O_NOCTTY)) < 0) { - + fd = open(INIT_FIFO, O_WRONLY|O_NDELAY|O_CLOEXEC|O_NOCTTY); + if (fd < 0) { if (errno == ENOENT) return 0; @@ -5065,9 +5066,7 @@ static int talk_initctl(void) { errno = 0; r = loop_write(fd, &request, sizeof(request), false) != sizeof(request); - close_nointr_nofail(fd); - - if (r < 0) { + if (r) { log_error("Failed to write to "INIT_FIFO": %m"); return errno ? -errno : -EIO; } -- cgit v1.2.1 From d39efe744a050cf2231459262e04a87fb0da3d7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 13 Mar 2013 20:20:54 -0400 Subject: tmpfiles: add missing missing.h include MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mbiebl> src/tmpfiles/tmpfiles.c:221:13: error: ‘MAX_HANDLE_SZ’ undeclared (first use in this function) Fixup for 427b47c4abaf4b5. --- src/tmpfiles/tmpfiles.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index 4a76a2f778..614644a0ab 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -43,6 +43,7 @@ #include "log.h" #include "util.h" #include "macro.h" +#include "missing.h" #include "mkdir.h" #include "path-util.h" #include "strv.h" -- cgit v1.2.1 From 1609dcb137813e8215d9ecc1f79c7dd7a788d5e0 Mon Sep 17 00:00:00 2001 From: Michal Sekletar Date: Tue, 12 Mar 2013 18:22:57 +0100 Subject: systemctl: remove unused variable --- src/systemctl/systemctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 84b7c8ee2d..1ea0e4e7ec 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -2053,7 +2053,7 @@ static int set_cgroup_attr(DBusConnection *bus, char **args) { } static int get_cgroup_attr(DBusConnection *bus, char **args) { - _cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; _cleanup_free_ char *n = NULL; char **argument; int r; -- cgit v1.2.1 From d29dd033022b41794c7475a5ec4d9d683d18417e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 13 Mar 2013 21:59:11 -0400 Subject: build-sys: link libsystemd-login also against libsystemd-daemon-internal https://bugs.freedesktop.org/show_bug.cgi?id=62085 /usr/lib/gcc/x86_64-pc-linux-gnu/4.6.3/../../../../lib64/libsystemd-login.so: undefined reference to `sd_listen_fds' In ee465038ce8 'build-sys: break dependency loop between libsystemd-id128.la and -shared.la', a partial fix was applied, and the use of functions from libsystemd-id128 was removed from libsystemd-shared. Nevertheless, fdset.c was still using sd_listen_fds, so libsystemd-login should be linked against libysystemd-daemon or libsystemd-daemon-internal. Tested-by: Elias Probst --- Makefile.am | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index a12e57ecd5..175d14b3ae 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3356,7 +3356,8 @@ libsystemd_login_la_LDFLAGS = \ -Wl,--version-script=$(top_srcdir)/src/login/libsystemd-login.sym libsystemd_login_la_LIBADD = \ - libsystemd-shared.la + libsystemd-shared.la \ + libsystemd-daemon-internal.la libsystemd_login_internal_la_SOURCES = \ $(libsystemd_login_la_SOURCES) -- cgit v1.2.1 From 1c17cbed55376b13ed09ec91cd888cb810451026 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 13 Mar 2013 22:47:28 -0400 Subject: fileio: use _cleanup_ --- src/shared/fileio.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/src/shared/fileio.c b/src/shared/fileio.c index 4e6ff16045..0eca4416f8 100644 --- a/src/shared/fileio.c +++ b/src/shared/fileio.c @@ -187,7 +187,8 @@ int parse_env_file( assert(fname); assert(separator); - if ((r = read_full_file(fname, &contents, NULL)) < 0) + r = read_full_file(fname, &contents, NULL); + if (r < 0) return r; p = contents; @@ -343,8 +344,9 @@ int load_env_file(const char *fname, char ***rl) { } int write_env_file(const char *fname, char **l) { - char **i, *p; - FILE *f; + char **i; + char _cleanup_free_ *p = NULL; + FILE _cleanup_fclose_ *f = NULL; int r; r = fopen_temporary(fname, &f, &p); @@ -376,8 +378,5 @@ int write_env_file(const char *fname, char **l) { if (r < 0) unlink(p); - fclose(f); - free(p); - return r; } -- cgit v1.2.1 From c1dae1b3c9729fb8ab749dd4e2dad07e0fad7ed8 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 14 Mar 2013 21:36:38 +0100 Subject: main: don't mount /sys, /dev and friends when we run with PID != 1 Back from old times when we developed systemd on non-systemd hosts we still mounted the missing directories such as the cgroup stuff even when running with a PID != 1. There's no point for that anymore, so let's just do that if we are actually PID 1, and never otherwise. https://bugs.freedesktop.org/show_bug.cgi?id=62354 --- src/core/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/main.c b/src/core/main.c index 7b039835a8..01a6d41fb4 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1437,7 +1437,7 @@ int main(int argc, char *argv[]) { /* Mount /proc, /sys and friends, so that /proc/cmdline and * /proc/$PID/fd is available. */ - if (geteuid() == 0 && !getenv("SYSTEMD_SKIP_API_MOUNTS")) { + if (getpid() == 1) { r = mount_setup(loaded_policy); if (r < 0) goto finish; -- cgit v1.2.1 From 9e5f0f92915b777308797294c6e103e430957b5d Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 14 Mar 2013 13:12:10 +0100 Subject: Make initrd.target the default target in the initrd First, rename root-fs.target to initrd-root-fs.target to clarify its usage. Mount units with "x-initrd-rootfs.mount" are now ordered before initrd-root-fs.target. As we sometimes construct /sysroot mounts in /etc/fstab in the initrd, we want these to be mounted before the initrd-root-fs.target is active. initrd.target can be the default target in the initrd. (normal startup) : : v basic.target | ______________________/| / | | sysroot.mount | | | v | initrd-root-fs.target | | | v | initrd-parse-etc.service (custom initrd services) | | v | (sysroot-usr.mount and | various mounts marked | with fstab option | x-initrd.mount) | | | v | initrd-fs.target | | \______________________ | \| v initrd.target | v initrd-cleanup.service isolates to initrd-switch-root.target | v ______________________/| / | | initrd-udevadm-cleanup-db.service | | (custom initrd services) | | | \______________________ | \| v initrd-switch-root.target | v initrd-switch-root.service | v switch-root --- Makefile.am | 3 +- man/bootup.xml | 73 +++++++++++++++++++++++++++++++++++ man/systemd.special.xml | 4 +- src/core/special.h | 2 +- src/fstab-generator/fstab-generator.c | 11 +++++- units/initrd-cleanup.service.in | 3 +- units/initrd-fs.target | 1 + units/initrd-parse-etc.service.in | 7 ++-- units/initrd-root-fs.target | 13 +++++++ units/initrd-switch-root.target | 4 +- units/initrd.target | 17 ++++++++ units/root-fs.target | 11 ------ 12 files changed, 126 insertions(+), 23 deletions(-) create mode 100644 units/initrd-root-fs.target create mode 100644 units/initrd.target delete mode 100644 units/root-fs.target diff --git a/Makefile.am b/Makefile.am index 175d14b3ae..cf2154452a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -347,8 +347,9 @@ dist_systemunit_DATA = \ units/kexec.target \ units/local-fs.target \ units/local-fs-pre.target \ + units/initrd.target \ units/initrd-fs.target \ - units/root-fs.target \ + units/initrd-root-fs.target \ units/remote-fs.target \ units/remote-fs-pre.target \ units/network.target \ diff --git a/man/bootup.xml b/man/bootup.xml index f65abf5452..6bd22ef476 100644 --- a/man/bootup.xml +++ b/man/bootup.xml @@ -173,6 +173,79 @@ to them. + + Systemd in the Initrd + If the initrd creation tool used the services provided + by systemd, the default target in the initrd is the + initrd-fs.target. The process is the same as above until the basic.target is reached. + Systemd now continues to the initrd.target. If the root device could be mounted + on /sysroot, the sysroot.mount unit is active and the initrd-root-fs.target is reached. + initrd-parse-etc.service scans /sysroot/etc/fstab for the /usr mountpoint and for entries + marked with the x-initrd.mount option set. If these mountpoint are + mounted in /sysroot, the initrd-fs.target is reached. + The initrd-cleanup.service isolates to the initrd-switch-root.target, + where cleanup services can run. At the very last end + initrd-switch-root.service is activated, which will cause + the system to switch root to /sysroot. + + + + (same as above) + : + : + v + basic.target + | emergency.service + ______________________/| | + / | v + | sysroot.mount emergency.target + | | + | v + | initrd-root-fs.target + | | + | v + | initrd-parse-etc.service + (custom initrd services) | + | v + | (sysroot-usr.mount and + | various mounts marked + | with fstab option + | x-initrd.mount) + | | + | v + | initrd-fs.target + | | + \______________________ | + \| + v + initrd.target + | + v + initrd-cleanup.service + isolates to + initrd-switch-root.target + | + v + ______________________/| + / | + | initrd-udevadm-cleanup-db.service + | | + (custom initrd services) | + | | + \______________________ | + \| + v + initrd-switch-root.target + | + v + initrd-switch-root.service + | + v + switch-root + + + + System Manager Shutdown diff --git a/man/systemd.special.xml b/man/systemd.special.xml index 7b780998fd..67a81b639b 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -79,7 +79,7 @@ remote-fs.target, remote-fs-pre.target, rescue.target, - root-fs.target, + initrd-root-fs.target, rpcbind.target, runlevel2.target, runlevel3.target, @@ -523,7 +523,7 @@ - root-fs.target + initrd-root-fs.target systemd automatically adds dependencies of type diff --git a/src/core/special.h b/src/core/special.h index 52e593b690..c7b856e2bd 100644 --- a/src/core/special.h +++ b/src/core/special.h @@ -49,7 +49,7 @@ #define SPECIAL_LOCAL_FS_TARGET "local-fs.target" #define SPECIAL_LOCAL_FS_PRE_TARGET "local-fs-pre.target" #define SPECIAL_INITRD_FS_TARGET "initrd-fs.target" -#define SPECIAL_ROOT_FS_TARGET "root-fs.target" +#define SPECIAL_INITRD_ROOT_FS_TARGET "initrd-root-fs.target" #define SPECIAL_REMOTE_FS_TARGET "remote-fs.target" /* LSB's $remote_fs */ #define SPECIAL_REMOTE_FS_PRE_TARGET "remote-fs-pre.target" #define SPECIAL_SWAP_TARGET "swap.target" diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index b4fb1344e6..cf85d3189a 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -199,6 +199,12 @@ static bool mount_in_initrd(struct mntent *me) { streq(me->mnt_dir, "/usr"); } +static bool mount_is_rootfs(struct mntent *me) { + assert(me); + + return hasmntopt(me, "x-initrd-rootfs.mount"); +} + static int add_mount(const char *what, const char *where, const char *type, const char *opts, int passno, bool noauto, bool nofail, bool automount, bool isbind, const char *pre, const char *post, const char *source) { @@ -434,6 +440,9 @@ static int parse_fstab(const char *prefix, bool initrd) { if (initrd) { post = SPECIAL_INITRD_FS_TARGET; pre = NULL; + } else if (mount_is_rootfs(me)) { + post = SPECIAL_INITRD_ROOT_FS_TARGET; + pre = NULL; } else if (mount_is_network(me)) { post = SPECIAL_REMOTE_FS_TARGET; pre = SPECIAL_REMOTE_FS_PRE_TARGET; @@ -525,7 +534,7 @@ static int parse_new_root_from_proc_cmdline(void) { log_debug("Found entry what=%s where=/sysroot type=%s", what, type); r = add_mount(what, "/sysroot", type, opts, 0, false, false, false, - false, NULL, SPECIAL_ROOT_FS_TARGET, "/proc/cmdline"); + false, NULL, SPECIAL_INITRD_ROOT_FS_TARGET, "/proc/cmdline"); return (r < 0) ? r : 0; } diff --git a/units/initrd-cleanup.service.in b/units/initrd-cleanup.service.in index 5bef090e08..218ec807ff 100644 --- a/units/initrd-cleanup.service.in +++ b/units/initrd-cleanup.service.in @@ -10,8 +10,7 @@ Description=Cleaning Up and Shutting Down Daemons DefaultDependencies=no ConditionPathExists=/etc/initrd-release OnFailure=emergency.target -Wants=root-fs.target initrd-fs.target -After=root-fs.target initrd-fs.target +After=initrd-root-fs.target initrd-fs.target initrd.target [Service] Type=oneshot diff --git a/units/initrd-fs.target b/units/initrd-fs.target index 6ba1758e45..7578b8824b 100644 --- a/units/initrd-fs.target +++ b/units/initrd-fs.target @@ -11,3 +11,4 @@ Documentation=man:systemd.special(7) OnFailure=emergency.target OnFailureIsolate=yes ConditionPathExists=/etc/initrd-release +After=initrd-parse-etc.service diff --git a/units/initrd-parse-etc.service.in b/units/initrd-parse-etc.service.in index 44fee7bd34..07728e200f 100644 --- a/units/initrd-parse-etc.service.in +++ b/units/initrd-parse-etc.service.in @@ -8,13 +8,14 @@ [Unit] Description=Reload Configuration from the Real Root DefaultDependencies=no -Requires=root-fs.target -After=root-fs.target +Requires=initrd-root-fs.target +After=initrd-root-fs.target OnFailure=emergency.target ConditionPathExists=/etc/initrd-release [Service] Type=oneshot ExecStartPre=@rootbindir@/systemctl daemon-reload -ExecStart=@rootbindir@/systemctl start initrd-fs.target +# we have to retrigger initrd-fs.target after daemon-reload +ExecStart=-@rootbindir@/systemctl --no-block start initrd-fs.target ExecStart=@rootbindir@/systemctl --no-block start initrd-cleanup.service diff --git a/units/initrd-root-fs.target b/units/initrd-root-fs.target new file mode 100644 index 0000000000..cd189f0296 --- /dev/null +++ b/units/initrd-root-fs.target @@ -0,0 +1,13 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Initrd Root File System +Documentation=man:systemd.special(7) +ConditionPathExists=/etc/initrd-release +OnFailure=emergency.target +OnFailureIsolate=yes diff --git a/units/initrd-switch-root.target b/units/initrd-switch-root.target index cf646c4ef9..f34768790b 100644 --- a/units/initrd-switch-root.target +++ b/units/initrd-switch-root.target @@ -12,5 +12,5 @@ DefaultDependencies=no Requires=initrd-switch-root.service Before=initrd-switch-root.service AllowIsolate=yes -Wants=initrd-udevadm-cleanup-db.service root-fs.target initrd-fs.target systemd-journald.service -After=initrd-udevadm-cleanup-db.service root-fs.target initrd-fs.target emergency.service emergency.target +Wants=initrd-udevadm-cleanup-db.service initrd-root-fs.target initrd-fs.target systemd-journald.service +After=initrd-udevadm-cleanup-db.service initrd-root-fs.target initrd-fs.target emergency.service emergency.target diff --git a/units/initrd.target b/units/initrd.target new file mode 100644 index 0000000000..5622de477a --- /dev/null +++ b/units/initrd.target @@ -0,0 +1,17 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Initrd Target +Documentation=man:systemd.special(7) +OnFailure=emergency.target +OnFailureIsolate=yes +ConditionPathExists=/etc/initrd-release +Requires=basic.target +Wants=initrd-root-fs.target initrd-fs.target initrd-parse-etc.service +After=initrd-root-fs.target initrd-fs.target basic.target rescue.service rescue.target +AllowIsolate=yes diff --git a/units/root-fs.target b/units/root-fs.target deleted file mode 100644 index 13515341eb..0000000000 --- a/units/root-fs.target +++ /dev/null @@ -1,11 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -[Unit] -Description=Initrd Root File System -Documentation=man:systemd.special(7) -ConditionPathExists=/etc/initrd-release -- cgit v1.2.1 From d8a9ae897b512644e1b5cd45b7885713bbb96213 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 15 Mar 2013 12:34:50 +0100 Subject: man: bootup - "Systemd in the Initrd" -> "Initrd System Manager Bootup" --- man/bootup.xml | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/man/bootup.xml b/man/bootup.xml index 6bd22ef476..a1fe3d81cd 100644 --- a/man/bootup.xml +++ b/man/bootup.xml @@ -174,23 +174,22 @@ - Systemd in the Initrd - If the initrd creation tool used the services provided - by systemd, the default target in the initrd is the - initrd-fs.target. The process is the same as above until the basic.target is reached. - Systemd now continues to the initrd.target. If the root device could be mounted - on /sysroot, the sysroot.mount unit is active and the initrd-root-fs.target is reached. - initrd-parse-etc.service scans /sysroot/etc/fstab for the /usr mountpoint and for entries - marked with the x-initrd.mount option set. If these mountpoint are - mounted in /sysroot, the initrd-fs.target is reached. - The initrd-cleanup.service isolates to the initrd-switch-root.target, - where cleanup services can run. At the very last end - initrd-switch-root.service is activated, which will cause - the system to switch root to /sysroot. + Initrd System Manager Bootup + The default target in the initrd is the initrd-fs.target. The bootup process is + identical to the System Manager Bootup until it reaches basic.target. From there, + systemd approaches the special initrd.target. If the root device can be mounted at + /sysroot, the sysroot.mount unit becomes active and the initrd-root-fs.target is + reached. + The initrd-parse-etc.service scans /sysroot/etc/fstab for a possible /usr mountpoint + and additional entries marked with the x-initrd.mount option. + All entries found are mounted below /sysroot, and the initrd-fs.target is reached. + The initrd-cleanup.service isolates to the initrd-switch-root.target, where cleanup + services can run. As the very last step, the initrd-switch-root.service is activated, + which will cause the system to switch its root to /sysroot. - (same as above) + (identical to System Manager Bootup) : : v -- cgit v1.2.1 From 94c525f07605f45c925f1ba3521d00882328c4e6 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 15 Mar 2013 15:54:35 +0100 Subject: sysctl: coredump.conf -> 50-coredump.conf --- Makefile.am | 6 +++--- sysctl.d/50-coredump.conf.in | 10 ++++++++++ sysctl.d/coredump.conf.in | 10 ---------- 3 files changed, 13 insertions(+), 13 deletions(-) create mode 100644 sysctl.d/50-coredump.conf.in delete mode 100644 sysctl.d/coredump.conf.in diff --git a/Makefile.am b/Makefile.am index cf2154452a..6978bfb9e2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2776,14 +2776,14 @@ dist_bashcompletion_DATA += \ shell-completion/bash/systemd-coredumpctl sysctl_DATA = \ - sysctl.d/coredump.conf + sysctl.d/50-coredump.conf CLEANFILES += \ - sysctl.d/coredump.conf + sysctl.d/50-coredump.conf endif EXTRA_DIST += \ - sysctl.d/coredump.conf.in + sysctl.d/50-coredump.conf.in # ------------------------------------------------------------------------------ if ENABLE_BINFMT diff --git a/sysctl.d/50-coredump.conf.in b/sysctl.d/50-coredump.conf.in new file mode 100644 index 0000000000..d5795a37d5 --- /dev/null +++ b/sysctl.d/50-coredump.conf.in @@ -0,0 +1,10 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +# See sysctl.d(5) and core(5) for for details. + +kernel.core_pattern=|@rootlibexecdir@/systemd-coredump %p %u %g %s %t %e diff --git a/sysctl.d/coredump.conf.in b/sysctl.d/coredump.conf.in deleted file mode 100644 index d5795a37d5..0000000000 --- a/sysctl.d/coredump.conf.in +++ /dev/null @@ -1,10 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -# See sysctl.d(5) and core(5) for for details. - -kernel.core_pattern=|@rootlibexecdir@/systemd-coredump %p %u %g %s %t %e -- cgit v1.2.1 From 8f27a2212ee8d6311c88ef4358953ad0d7bfa851 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 15 Mar 2013 16:11:56 +0100 Subject: sysctl: add 50-default.conf --- Makefile.am | 3 +++ sysctl.d/.gitignore | 2 +- sysctl.d/50-default.conf | 21 +++++++++++++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 sysctl.d/50-default.conf diff --git a/Makefile.am b/Makefile.am index 6978bfb9e2..f687eca0cc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -330,6 +330,9 @@ dist_tmpfiles_DATA = \ tmpfiles.d/tmp.conf \ tmpfiles.d/x11.conf +dist_sysctl_DATA = \ + sysctl.d/50-default.conf + if HAVE_SYSV_COMPAT dist_tmpfiles_DATA += \ tmpfiles.d/legacy.conf diff --git a/sysctl.d/.gitignore b/sysctl.d/.gitignore index 7563539ab0..e326c180c3 100644 --- a/sysctl.d/.gitignore +++ b/sysctl.d/.gitignore @@ -1 +1 @@ -/coredump.conf +/50-coredump.conf diff --git a/sysctl.d/50-default.conf b/sysctl.d/50-default.conf new file mode 100644 index 0000000000..8d202a63e7 --- /dev/null +++ b/sysctl.d/50-default.conf @@ -0,0 +1,21 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +# See sysctl.d(5) and core(5) for for details. + +# Append the PID to the core filename +kernel.core_uses_pid = 1 + +# Source route verification +net.ipv4.conf.default.rp_filter = 1 + +# Do not accept source routing +net.ipv4.conf.default.accept_source_route = 0 + +# Enable hard and soft link protection +fs.protected_hardlinks = 1 +fs.protected_symlinks = 1 -- cgit v1.2.1 From 961e4526925b7b1e1d3582f2fc9fb38035e2b5fb Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 15 Mar 2013 16:41:13 +0100 Subject: strv: fix STRV_FOREACH_PAIR macro definition --- src/shared/strv.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/strv.h b/src/shared/strv.h index da9fae6edb..49058f8df8 100644 --- a/src/shared/strv.h +++ b/src/shared/strv.h @@ -77,7 +77,7 @@ bool strv_overlap(char **a, char **b); for (; (l) && ((s) >= (l)); (s)--) #define STRV_FOREACH_PAIR(x, y, l) \ - for ((x) = (l), (y) = (x+1); (x) && *(x) && *(y); (x) += 2) + for ((x) = (l), (y) = (x+1); (x) && *(x) && *(y); (x) += 2, (y) = (x + 1)) char **strv_sort(char **l); -- cgit v1.2.1 From 66e411811b8090d1bfd6620fc84472d83f723fa1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 15 Mar 2013 16:41:40 +0100 Subject: sd-booted: update sd_booted() check a bit Previously we were testing whether /sys/fs/cgroup/systemd/ was a mount point. This might be problematic however, when the cgroup trees are bind mounted into a container from the host (which should be absolutely valid), which might create the impression that the container was running systemd, but only the host actually is. Replace this by a check for the existance of the directory /run/systemd/system/, which should work unconditionally, since /run can never be a bind mount but *must* be a tmpfs on systemd systems, which is flushed at boots. This means that data in /run always reflects information about the current boot, and only of the local container, which makes it the perfect choice for a check like this. (As side effect this is nice to Ubuntu people who now use logind with the systemd cgroup hierarchy, where the old sd_booted() check misdetects systemd, even though they still run legacy Upstart.) --- man/sd_booted.xml | 9 ++++----- src/core/mount-setup.c | 6 +++++- src/libsystemd-daemon/sd-daemon.c | 15 ++++++--------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/man/sd_booted.xml b/man/sd_booted.xml index 34f2cbfbc8..ce5a34dc86 100644 --- a/man/sd_booted.xml +++ b/man/sd_booted.xml @@ -85,11 +85,10 @@ implementation. Internally, this function checks whether the - /sys/fs/cgroup/systemd virtual file - system is mounted, by comparing the st_dev value of - the stat() data of - /sys/fs/cgroup and - /sys/fs/cgroup/systemd. + directory /run/systemd/system/ + exists. A simple check like this can also be + implemented trivially in shell or any other + language. For details about the algorithm check the liberally licensed reference implementation sources: diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index 42cdc6dc52..ce10be944a 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -440,7 +440,11 @@ int mount_setup(bool loaded_policy) { if (mount(NULL, "/", NULL, MS_REC|MS_SHARED, NULL) < 0) log_warning("Failed to set up the root directory for shared mount propagation: %m"); - /* Create a few directories we always want around */ + /* Create a few directories we always want around, Note that + * sd_booted() checks for /run/systemd/system, so this mkdir + * really needs to stay for good, otherwise software that + * copied sd-daemon.c into their sources will misdetect + * systemd. */ mkdir_label("/run/systemd", 0755); mkdir_label("/run/systemd/system", 0755); diff --git a/src/libsystemd-daemon/sd-daemon.c b/src/libsystemd-daemon/sd-daemon.c index 5b92e2e3db..79d8ca3709 100644 --- a/src/libsystemd-daemon/sd-daemon.c +++ b/src/libsystemd-daemon/sd-daemon.c @@ -519,18 +519,15 @@ _sd_export_ int sd_booted(void) { #if defined(DISABLE_SYSTEMD) || !defined(__linux__) return 0; #else + struct stat st; - struct stat a, b; + /* We test whether the runtime unit file directory has been + * created. This takes place in mount-setup.c, so is + * guaranteed to happen very early during boot. */ - /* We simply test whether the systemd cgroup hierarchy is - * mounted */ - - if (lstat("/sys/fs/cgroup", &a) < 0) - return 0; - - if (lstat("/sys/fs/cgroup/systemd", &b) < 0) + if (lstat("/run/systemd/system/", &st) < 0) return 0; - return a.st_dev != b.st_dev; + return !!S_ISDIR(st.st_mode); #endif } -- cgit v1.2.1 From bb27ff6672573727488b5b4826e27ac9cb8a2c94 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 15 Mar 2013 16:46:35 +0100 Subject: logind: explicitly create state directories during early initialization Strictly speaking this isn't necessary for the /run/systemd/seats/ directory, since that is created anyway as the first seat is found, and seat0 is always found. But let's be explicit here, and also create the sessions/ and users/ directories, so that people can always install inotify watches from very early on, even when nobody logged in yet. --- src/login/logind.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/login/logind.c b/src/login/logind.c index bb34a7f362..f72aac5e61 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -37,6 +37,7 @@ #include "dbus-loop.h" #include "strv.h" #include "conf-parser.h" +#include "mkdir.h" Manager *manager_new(void) { Manager *m; @@ -1727,6 +1728,15 @@ int main(int argc, char *argv[]) { goto finish; } + /* Always create the directories people can create inotify + * watches in. Note that some applications might check for the + * existance of /run/systemd/seats/ to determine whether + * logind is available, so please always make sure this check + * stays in. */ + mkdir_label("/run/systemd/seats", 0755); + mkdir_label("/run/systemd/users", 0755); + mkdir_label("/run/systemd/sessions", 0755); + m = manager_new(); if (!m) { r = log_oom(); -- cgit v1.2.1 From 9d60cb63d6e38236b2853b7801bb7784762b13ab Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 15 Mar 2013 16:48:48 +0100 Subject: nspawn: don't make assumptions about the size of pid_t --- src/nspawn/nspawn.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 1a3e41f403..9268cbc246 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1589,7 +1589,7 @@ int main(int argc, char *argv[]) { _exit(EXIT_FAILURE); } - log_info("Init process in the container running as PID %d", pid); + log_info("Init process in the container running as PID %lu.", (unsigned long) pid); close_nointr_nofail(pipefd[0]); close_nointr_nofail(pipefd[1]); -- cgit v1.2.1 From 7aaec603d9e76182a28bb69be5a4fb8710a4788f Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 15 Mar 2013 17:48:12 +0100 Subject: TODO: update --- TODO | 2 -- 1 file changed, 2 deletions(-) diff --git a/TODO b/TODO index f1a0bcf493..fcafba0dfe 100644 --- a/TODO +++ b/TODO @@ -51,8 +51,6 @@ Features: installed to the ESP. Define a way how an installer can figure out whether a BLS compliant boot loader is installed. -* We currently have a dep loop between libsystemd-id128 and libsystemd-shared. - * man: remove .include documentation, and instead push people to use .d/*.conf * disallow .include from included files -- cgit v1.2.1 From 0f59fe5171b5564fc6fb58f3281fbc259c45f7d0 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Fri, 15 Mar 2013 19:30:53 +0100 Subject: sysctl: default - add safe sysrq options --- sysctl.d/50-default.conf | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sysctl.d/50-default.conf b/sysctl.d/50-default.conf index 8d202a63e7..46bae210c7 100644 --- a/sysctl.d/50-default.conf +++ b/sysctl.d/50-default.conf @@ -7,6 +7,9 @@ # See sysctl.d(5) and core(5) for for details. +# System Request functionality of the kernel (SYNC) +kernel.sysrq = 16 + # Append the PID to the core filename kernel.core_uses_pid = 1 -- cgit v1.2.1 From 5e65c93a433447b15180249166f7b3944c3e6156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 15 Mar 2013 18:57:44 -0400 Subject: systemd-activate: pass environment variables through I need this to test half-installed socket-activated python script, which requires PYTHONPATH and LD_LIBRARY_PATH set. I assume that other people might find it useful to. -E VAR passes through VAR from the environment, while -E VAR=value sets VAR=value. systemd-activate -E PYTHONPATH=/var/tmp/inst1/usr/lib64/python3.3/site-packages -E LD_LIBRARY_PATH=/var/tmp/inst1/usr/lib -l 2000 python3 -c 'from systemd.daemon import listen_fds; print(listen_fds())' --- man/systemd-activate.xml | 14 +++++++++++++- src/activate/activate.c | 33 ++++++++++++++++++++++++++++++--- 2 files changed, 43 insertions(+), 4 deletions(-) diff --git a/man/systemd-activate.xml b/man/systemd-activate.xml index a5cab8e3b7..b62cf44ec4 100644 --- a/man/systemd-activate.xml +++ b/man/systemd-activate.xml @@ -99,7 +99,7 @@ along with systemd; If not, see . - + Listen on this address. @@ -116,6 +116,18 @@ along with systemd; If not, see . connection and pass the connection socket as standard input and standard output. + + + + + + Add this variable to the environment of the + launched process. If VAR is + followed by = assume that it is a + variable–value pair. Otherwise obtain the value from the + environment of systemd-activate itself. + + diff --git a/src/activate/activate.c b/src/activate/activate.c index 7fcb0a97c4..be40be48a4 100644 --- a/src/activate/activate.c +++ b/src/activate/activate.c @@ -38,6 +38,7 @@ static char** arg_listen = NULL; static bool arg_accept = false; static char** arg_args = NULL; +static char** arg_environ = NULL; static int add_epoll(int epoll_fd, int fd) { int r; @@ -164,12 +165,29 @@ static int open_sockets(int *epoll_fd, bool accept) { } static int launch(char* name, char **argv, char **environ, int fds) { - unsigned n_env = 0; - char* envp[7] = {NULL}; /* PATH, TERM, HOME, USER, LISTEN_FDS, LISTEN_PID */ + unsigned n_env = 0, length; + char **envp = NULL, **s; static const char* tocopy[] = {"TERM=", "PATH=", "USER=", "HOME="}; char _cleanup_free_ *tmp = NULL; unsigned i; + length = strv_length(arg_environ); + /* PATH, TERM, HOME, USER, LISTEN_FDS, LISTEN_PID, NULL */ + envp = new(char *, length + 7); + + STRV_FOREACH(s, arg_environ) { + if (strchr(*s, '=')) + envp[n_env++] = *s; + else { + char _cleanup_free_ *p = strappend(*s, "="); + if (!p) + return log_oom(); + envp[n_env] = strv_find_prefix(environ, p); + if (envp[n_env]) + n_env ++; + } + } + for (i = 0; i < ELEMENTSOF(tocopy); i++) { envp[n_env] = strv_find_prefix(environ, tocopy[i]); if (envp[n_env]) @@ -312,6 +330,7 @@ static int parse_argv(int argc, char *argv[]) { { "version", no_argument, NULL, ARG_VERSION }, { "listen", required_argument, NULL, 'l' }, { "accept", no_argument, NULL, 'a' }, + { "environment", required_argument, NULL, 'E' }, { NULL, 0, NULL, 0 } }; @@ -320,7 +339,7 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); - while ((c = getopt_long(argc, argv, "+hl:sa", options, NULL)) >= 0) + while ((c = getopt_long(argc, argv, "+hl:saE:", options, NULL)) >= 0) switch(c) { case 'h': help(); @@ -343,6 +362,14 @@ static int parse_argv(int argc, char *argv[]) { arg_accept = true; break; + case 'E': { + int r = strv_extend(&arg_environ, optarg); + if (r < 0) + return r; + + break; + } + case '?': return -EINVAL; -- cgit v1.2.1 From b04c8c83e8d5670b0923c7cd7d6ea622b0187289 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 15 Mar 2013 19:01:10 -0400 Subject: systemd-python: add systemd.daemon wrapping sd-daemon Please see the documentation (e.g. pydoc3 systemd.daemon) for full description. As usual, systemd._daemon wraps the raw interface, while systemd.daemon provides the more pythonic API. sd_listen_fds, sd_booted, sd_is_fifo, sd_is_socket, sd_is_socket_unix, sd_is_socket_inet, sd_is_mq, and SD_LISTEN_FDS_START are currently wrapped. --- Makefile.am | 23 +++ TODO | 1 + src/python-systemd/_daemon.c | 323 +++++++++++++++++++++++++++++++++++++ src/python-systemd/_reader.c | 17 -- src/python-systemd/daemon.py | 53 ++++++ src/python-systemd/docs/daemon.rst | 16 ++ src/python-systemd/docs/index.rst | 1 + src/python-systemd/pyutil.h | 19 +++ 8 files changed, 436 insertions(+), 17 deletions(-) create mode 100644 src/python-systemd/_daemon.c create mode 100644 src/python-systemd/daemon.py create mode 100644 src/python-systemd/docs/daemon.rst diff --git a/Makefile.am b/Makefile.am index f687eca0cc..7e9cdfdb26 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3484,6 +3484,7 @@ if HAVE_PYTHON_DEVEL pkgpyexec_LTLIBRARIES = \ _journal.la \ id128.la \ + _daemon.la \ _reader.la _journal_la_SOURCES = \ @@ -3526,6 +3527,27 @@ id128_la_LIBADD = \ $(PYTHON_LIBS) \ libsystemd-id128.la +_daemon_la_SOURCES = \ + src/python-systemd/_daemon.c \ + src/python-systemd/pyutil.c \ + src/python-systemd/pyutil.h + +_daemon_la_CFLAGS = \ + $(AM_CFLAGS) \ + -fvisibility=default \ + $(PYTHON_CFLAGS) \ + -I$(top_builddir)/src/python-systemd + +_daemon_la_LDFLAGS = \ + $(AM_LDFLAGS) \ + -shared \ + -module \ + -avoid-version + +_daemon_la_LIBADD = \ + $(PYTHON_LIBS) \ + libsystemd-daemon.la + _reader_la_SOURCES = \ src/python-systemd/_reader.c \ src/python-systemd/pyutil.c \ @@ -3550,6 +3572,7 @@ _reader_la_LIBADD = \ dist_pkgpyexec_PYTHON = \ src/python-systemd/journal.py \ + src/python-systemd/daemon.py \ src/python-systemd/__init__.py src/python-systemd/id128-constants.h: src/systemd/sd-messages.h Makefile diff --git a/TODO b/TODO index fcafba0dfe..addf32e473 100644 --- a/TODO +++ b/TODO @@ -587,6 +587,7 @@ Features: be just "return self->j != NULL") - figure out a simple way to wait for journal events in a way that works with ^C + - add documentation to systemd.daemon External: diff --git a/src/python-systemd/_daemon.c b/src/python-systemd/_daemon.c new file mode 100644 index 0000000000..8f93d91b48 --- /dev/null +++ b/src/python-systemd/_daemon.c @@ -0,0 +1,323 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#define PY_SSIZE_T_CLEAN +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wredundant-decls" +#include +#pragma GCC diagnostic pop + +#include +#include +#include + +#include +#include "pyutil.h" + +PyDoc_STRVAR(module__doc__, + "Python interface to the libsystemd-daemon library.\n\n" + "Provides _listen_fds, notify, booted, and is_* functions\n" + "which wrap sd_listen_fds, sd_notify, sd_booted, sd_is_* and\n" + "useful for socket activation and checking if the system is\n" + "running under systemd." +); + +static PyObject* set_error(int r, const char* invalid_message) { + assert (r < 0); + + if (r == -EINVAL && invalid_message) + PyErr_SetString(PyExc_ValueError, invalid_message); + else if (r == -ENOMEM) + PyErr_SetString(PyExc_MemoryError, "Not enough memory"); + else { + errno = -r; + PyErr_SetFromErrno(PyExc_OSError); + } + + return NULL; +} + + +#if PY_MAJOR_VERSION >=3 && PY_MINOR_VERSION >= 1 +static int Unicode_FSConverter(PyObject* obj, void *_result) { + PyObject **result = _result; + + assert(result); + + if (!obj) + /* cleanup: we don't return Py_CLEANUP_SUPPORTED, so + * we can assume that it was PyUnicode_FSConverter. */ + return PyUnicode_FSConverter(obj, result); + + if (obj == Py_None) { + *result = NULL; + return 1; + } + + return PyUnicode_FSConverter(obj, result); +} +#endif + + +PyDoc_STRVAR(booted__doc__, + "booted() -> bool\n\n" + "Return True iff this system is running under systemd.\n" + "Wraps sd_daemon_booted(3)." +); + +static PyObject* booted(PyObject *self, PyObject *args) { + int r; + assert(args == NULL); + + r = sd_booted(); + if (r < 0) + return set_error(r, NULL); + + return PyBool_FromLong(r); +} + + +PyDoc_STRVAR(listen_fds__doc__, + "_listen_fds(unset_environment=True) -> int\n\n" + "Return the number of descriptors passed to this process by the init system\n" + "as part of the socket-based activation logic.\n" + "Wraps sd_listen_fds(3)." +); + +static PyObject* listen_fds(PyObject *self, PyObject *args) { + int r; + int unset = true; + +#if PY_MAJOR_VERSION >=3 && PY_MINOR_VERSION >= 3 + if (!PyArg_ParseTuple(args, "|p:_listen_fds", &unset)) + return NULL; +#else + PyObject *obj = NULL; + if (!PyArg_ParseTuple(args, "|O:_listen_fds", &obj)) + return NULL; + if (obj != NULL) + unset = PyObject_IsTrue(obj); + if (unset < 0) + return NULL; +#endif + + r = sd_listen_fds(unset); + if (r < 0) + return set_error(r, NULL); + + return long_FromLong(r); +} + +PyDoc_STRVAR(is_fifo__doc__, + "_is_fifo(fd, path) -> bool\n\n" + "Returns True iff the descriptor refers to a FIFO or a pipe.\n" + "Wraps sd_is_fifo(3)." +); + + +static PyObject* is_fifo(PyObject *self, PyObject *args) { + int r; + int fd; + const char *path = NULL; + +#if PY_MAJOR_VERSION >=3 && PY_MINOR_VERSION >= 1 + if (!PyArg_ParseTuple(args, "i|O&:_is_fifo", + &fd, Unicode_FSConverter, &path)) + return NULL; +#else + if (!PyArg_ParseTuple(args, "i|z:_is_fifo", &fd, &path)) + return NULL; +#endif + + r = sd_is_fifo(fd, path); + if (r < 0) + return set_error(r, NULL); + + return PyBool_FromLong(r); +} + + +PyDoc_STRVAR(is_mq__doc__, + "_is_mq(fd, path) -> bool\n\n" + "Returns True iff the descriptor refers to a POSIX message queue.\n" + "Wraps sd_is_mq(3)." +); + +static PyObject* is_mq(PyObject *self, PyObject *args) { + int r; + int fd; + const char *path = NULL; + +#if PY_MAJOR_VERSION >=3 && PY_MINOR_VERSION >= 1 + if (!PyArg_ParseTuple(args, "i|O&:_is_mq", + &fd, Unicode_FSConverter, &path)) + return NULL; +#else + if (!PyArg_ParseTuple(args, "i|z:_is_mq", &fd, &path)) + return NULL; +#endif + + r = sd_is_mq(fd, path); + if (r < 0) + return set_error(r, NULL); + + return PyBool_FromLong(r); +} + + + +PyDoc_STRVAR(is_socket__doc__, + "_is_socket(fd, family=AF_UNSPEC, type=0, listening=-1) -> bool\n\n" + "Returns True iff the descriptor refers to a socket.\n" + "Wraps sd_is_socket(3).\n\n" + "Constants for `family` are defined in the socket module." +); + +static PyObject* is_socket(PyObject *self, PyObject *args) { + int r; + int fd, family = AF_UNSPEC, type = 0, listening = -1; + + if (!PyArg_ParseTuple(args, "i|iii:_is_socket", + &fd, &family, &type, &listening)) + return NULL; + + r = sd_is_socket(fd, family, type, listening); + if (r < 0) + return set_error(r, NULL); + + return PyBool_FromLong(r); +} + + +PyDoc_STRVAR(is_socket_inet__doc__, + "_is_socket_inet(fd, family=AF_UNSPEC, type=0, listening=-1, port=0) -> bool\n\n" + "Wraps sd_is_socket_inet(3).\n\n" + "Constants for `family` are defined in the socket module." +); + +static PyObject* is_socket_inet(PyObject *self, PyObject *args) { + int r; + int fd, family = AF_UNSPEC, type = 0, listening = -1, port = 0; + + if (!PyArg_ParseTuple(args, "i|iiii:_is_socket_inet", + &fd, &family, &type, &listening, &port)) + return NULL; + + if (port < 0 || port > INT16_MAX) + return set_error(-EINVAL, "port must fit into uint16_t"); + + r = sd_is_socket_inet(fd, family, type, listening, (uint16_t) port); + if (r < 0) + return set_error(r, NULL); + + return PyBool_FromLong(r); +} + + +PyDoc_STRVAR(is_socket_unix__doc__, + "_is_socket_unix(fd, type, listening, path) -> bool\n\n" + "Wraps sd_is_socket_unix(3)." +); + +static PyObject* is_socket_unix(PyObject *self, PyObject *args) { + int r; + int fd, type = 0, listening = -1; + char* path = NULL; + Py_ssize_t length = 0; + +#if PY_MAJOR_VERSION >=3 && PY_MINOR_VERSION >= 1 + PyObject _cleanup_Py_DECREF_ *_path = NULL; + if (!PyArg_ParseTuple(args, "i|iiO&:_is_socket_unix", + &fd, &type, &listening, Unicode_FSConverter, &_path)) + return NULL; + if (_path) { + assert(PyBytes_Check(_path)); + if (PyBytes_AsStringAndSize(_path, &path, &length)) + return NULL; + } +#else + if (!PyArg_ParseTuple(args, "i|iiz#:_is_socket_unix", + &fd, &type, &listening, &path, &length)) + return NULL; +#endif + + r = sd_is_socket_unix(fd, type, listening, path, length); + if (r < 0) + return set_error(r, NULL); + + return PyBool_FromLong(r); +} + + +static PyMethodDef methods[] = { + { "booted", booted, METH_NOARGS, booted__doc__}, + { "_listen_fds", listen_fds, METH_VARARGS, listen_fds__doc__}, + { "_is_fifo", is_fifo, METH_VARARGS, is_fifo__doc__}, + { "_is_mq", is_mq, METH_VARARGS, is_mq__doc__}, + { "_is_socket", is_socket, METH_VARARGS, is_socket__doc__}, + { "_is_socket_inet", is_socket_inet, METH_VARARGS, is_socket_inet__doc__}, + { "_is_socket_unix", is_socket_unix, METH_VARARGS, is_socket_unix__doc__}, + { NULL, NULL, 0, NULL } /* Sentinel */ +}; + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-prototypes" + +#if PY_MAJOR_VERSION < 3 + +PyMODINIT_FUNC init_daemon(void) { + PyObject *m; + + m = Py_InitModule3("_daemon", methods, module__doc__); + if (m == NULL) + return; + + PyModule_AddIntConstant(m, "LISTEN_FDS_START", SD_LISTEN_FDS_START); +} + +#else + +static struct PyModuleDef module = { + PyModuleDef_HEAD_INIT, + "_daemon", /* name of module */ + module__doc__, /* module documentation, may be NULL */ + 0, /* size of per-interpreter state of the module */ + methods +}; + +PyMODINIT_FUNC PyInit__daemon(void) { + PyObject *m; + + m = PyModule_Create(&module); + if (m == NULL) + return NULL; + + if (PyModule_AddIntConstant(m, "LISTEN_FDS_START", SD_LISTEN_FDS_START)) { + Py_DECREF(m); + return NULL; + } + + return m; +} + +#endif + +#pragma GCC diagnostic pop diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 160ab69a3c..96634a19c3 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -30,23 +30,6 @@ #include "macro.h" #include "util.h" -#if PY_MAJOR_VERSION >=3 -# define unicode_FromStringAndSize PyUnicode_FromStringAndSize -# define unicode_FromString PyUnicode_FromString -# define long_FromLong PyLong_FromLong -# define long_FromSize_t PyLong_FromSize_t -# define long_Check PyLong_Check -# define long_AsLong PyLong_AsLong -#else -/* Python 3 type naming convention is used */ -# define unicode_FromStringAndSize PyString_FromStringAndSize -# define unicode_FromString PyString_FromString -# define long_FromLong PyInt_FromLong -# define long_FromSize_t PyInt_FromSize_t -# define long_Check PyInt_Check -# define long_AsLong PyInt_AsLong -#endif - typedef struct { PyObject_HEAD sd_journal *j; diff --git a/src/python-systemd/daemon.py b/src/python-systemd/daemon.py new file mode 100644 index 0000000000..4a02204433 --- /dev/null +++ b/src/python-systemd/daemon.py @@ -0,0 +1,53 @@ +from ._daemon import (booted, + _listen_fds, + _is_fifo, + _is_socket, + _is_socket_inet, + _is_socket_unix, + _is_mq, + LISTEN_FDS_START) +from socket import AF_UNSPEC as _AF_UNSPEC + +def _convert_fileobj(fileobj): + try: + return fileobj.fileno() + except AttributeError: + return fileobj + +def is_fifo(fileobj, path=None): + fd = _convert_fileobj(fileobj) + return _is_fifo(fd, path) + +def is_socket(fileobj, family=_AF_UNSPEC, type=0, listening=-1): + fd = _convert_fileobj(fileobj) + return _is_socket(fd, family, type, listening) + +def is_socket_inet(fileobj, family=_AF_UNSPEC, type=0, listening=-1, port=0): + fd = _convert_fileobj(fileobj) + return _is_socket_inet(fd, family, type, listening) + +def is_socket_unix(fileobj, type=0, listening=-1, path=None): + fd = _convert_fileobj(fileobj) + return _is_socket_unix(fd, type, listening, path) + +def is_mq(fileobj, path=None): + fd = _convert_fileobj(fileobj) + return _is_mq(fd, path) + +def listen_fds(unset_environment=True): + """Return a list of socket activated descriptors + + Example:: + + (in primary window) + $ systemd-activate -l 2000 python3 -c \\ + 'from systemd.daemon import listen_fds; print(listen_fds())' + (in another window) + $ telnet localhost 2000 + (in primary window) + ... + Execing python3 (...) + [3] + """ + num = _listen_fds(unset_environment) + return list(range(LISTEN_FDS_START, LISTEN_FDS_START + num)) diff --git a/src/python-systemd/docs/daemon.rst b/src/python-systemd/docs/daemon.rst new file mode 100644 index 0000000000..72280ca2f0 --- /dev/null +++ b/src/python-systemd/docs/daemon.rst @@ -0,0 +1,16 @@ +`systemd.daemon` module +======================= + +.. automodule:: systemd.daemon + :members: + :undoc-members: + :inherited-members: + + .. autoattribute:: systemd.daemon.LISTEN_FDS_START + + .. autofunction:: _listen_fds + .. autofunction:: _is_fifo + .. autofunction:: _is_socket + .. autofunction:: _is_socket_unix + .. autofunction:: _is_socket_inet + .. autofunction:: _is_mq diff --git a/src/python-systemd/docs/index.rst b/src/python-systemd/docs/index.rst index f04d5a181c..8a94d0750b 100644 --- a/src/python-systemd/docs/index.rst +++ b/src/python-systemd/docs/index.rst @@ -13,6 +13,7 @@ Contents: journal id128 + daemon Indices and tables ================== diff --git a/src/python-systemd/pyutil.h b/src/python-systemd/pyutil.h index 3b7bc580df..2163fda9ef 100644 --- a/src/python-systemd/pyutil.h +++ b/src/python-systemd/pyutil.h @@ -1,5 +1,7 @@ /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ +#pragma once + /*** This file is part of systemd. @@ -27,3 +29,20 @@ void cleanup_Py_DECREFp(PyObject **p); #define _cleanup_Py_DECREF_ __attribute__((cleanup(cleanup_Py_DECREFp))) + +#if PY_MAJOR_VERSION >=3 +# define unicode_FromStringAndSize PyUnicode_FromStringAndSize +# define unicode_FromString PyUnicode_FromString +# define long_FromLong PyLong_FromLong +# define long_FromSize_t PyLong_FromSize_t +# define long_Check PyLong_Check +# define long_AsLong PyLong_AsLong +#else +/* Python 3 type naming convention is used */ +# define unicode_FromStringAndSize PyString_FromStringAndSize +# define unicode_FromString PyString_FromString +# define long_FromLong PyInt_FromLong +# define long_FromSize_t PyInt_FromSize_t +# define long_Check PyInt_Check +# define long_AsLong PyInt_AsLong +#endif -- cgit v1.2.1 From df34f169b8961c6ef1429cdb940206b42c3f9041 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 14 Mar 2013 18:44:03 -0400 Subject: man: fix grammar --- man/systemd.service.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/systemd.service.xml b/man/systemd.service.xml index b8b19b386a..2dd3b19773 100644 --- a/man/systemd.service.xml +++ b/man/systemd.service.xml @@ -357,7 +357,7 @@ word on the command line, in which case it will be replaced by the value of the environment variable split up - at whitespace, resulting in no or more + at whitespace, resulting in zero or more arguments. Note that the first argument (i.e. the program to execute) may not be a variable, since it must -- cgit v1.2.1 From 89b1d5e0e49d3b3501e5f3aadcad712290bcd9bf Mon Sep 17 00:00:00 2001 From: Umut Tezduyar Date: Mon, 11 Mar 2013 16:30:10 +0100 Subject: core: keep mountinfo .mounts until late shutdown .mount units coming from /proc/self/mountinfo file are unmounted after local-fs.target is reached during shutdown. Problem: .mount units popping up in mountinfo file are added to systemd without any dependency. For that reason, they are the first one to be unmounted during shutdown. Whichever program mounted the file system deserves a chance to also unmount it. This patch ensures that /proc/self/mountinfo units will be unmounted after local-fs.target during shutdown (if they haven't been unmounted already) --- src/core/mount.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/core/mount.c b/src/core/mount.c index 73a7832430..7a1b411c7b 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -1501,6 +1501,14 @@ static int mount_add_one( goto fail; } + r = unit_add_dependency_by_name(u, UNIT_BEFORE, SPECIAL_LOCAL_FS_TARGET, NULL, true); + if (r < 0) + goto fail; + + r = unit_add_dependency_by_name(u, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true); + if (r < 0) + goto fail; + unit_add_to_load_queue(u); } else { delete = false; -- cgit v1.2.1 From faeffa73a81ab5b59acfadeb571431fb0e42af70 Mon Sep 17 00:00:00 2001 From: Umut Tezduyar Date: Wed, 13 Mar 2013 10:27:38 +0100 Subject: units: ignore systemd-sysctl on shutdown No need to try to stop systemd-sysctl on shutdown as this service doesn't have ExecStop= anyways. --- units/systemd-sysctl.service.in | 1 - 1 file changed, 1 deletion(-) diff --git a/units/systemd-sysctl.service.in b/units/systemd-sysctl.service.in index 45e1ceb25c..d914553d28 100644 --- a/units/systemd-sysctl.service.in +++ b/units/systemd-sysctl.service.in @@ -9,7 +9,6 @@ Description=Apply Kernel Variables Documentation=man:systemd-sysctl.service(8) man:sysctl.d(5) DefaultDependencies=no -Conflicts=shutdown.target After=systemd-readahead-collect.service systemd-readahead-replay.service Before=sysinit.target shutdown.target ConditionPathIsReadWrite=/proc/sys/ -- cgit v1.2.1 From a4783bd17ad96f55b0fe83a50959da13555292bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 13 Mar 2013 23:23:06 -0400 Subject: smack-setup: extract rule writing into a separate function Check all errors. --- src/core/smack-setup.c | 91 +++++++++++++++++++++++++++++++++----------------- 1 file changed, 60 insertions(+), 31 deletions(-) diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c index d0f1ac0c92..804678d6a6 100644 --- a/src/core/smack-setup.c +++ b/src/core/smack-setup.c @@ -39,66 +39,95 @@ #include "log.h" #include "label.h" -#define ACCESSES_D_PATH "/etc/smack/accesses.d/" +#define SMACK_CONFIG "/etc/smack/accesses.d/" -int smack_setup(void) { - _cleanup_fclose_ FILE *smack = NULL; +static int write_rules(const char* dstpath, const char* srcdir) { + _cleanup_fclose_ FILE *dst = NULL; _cleanup_closedir_ DIR *dir = NULL; struct dirent *entry; char buf[NAME_MAX]; int dfd = -1; + int r = 0; - smack = fopen("/sys/fs/smackfs/load2", "we"); - if (!smack) { - if (errno == ENOENT) - log_debug("Smack is not enabled in the kernel, not loading access rules."); - else - log_warning("Failed to open /sys/fs/smackfs/load2: %m"); - return 0; + dst = fopen(dstpath, "we"); + if (!dst) { + if (errno != ENOENT) + log_warning("Failed to open %s: %m", dstpath); + return -errno; /* negative error */ } - /* write rules to load2 from every file in the directory */ - dir = opendir(ACCESSES_D_PATH); + /* write rules to dst from every file in the directory */ + dir = opendir(srcdir); if (!dir) { - log_full(errno == ENOENT ? LOG_DEBUG : LOG_WARNING, - "Opening Smack access rules directory " - ACCESSES_D_PATH ": %m"); - return 0; + if (errno != ENOENT) + log_warning("Failed to opendir %s: %m", srcdir); + return errno; /* positive on purpose */ } dfd = dirfd(dir); assert(dfd >= 0); FOREACH_DIRENT(entry, dir, return 0) { + int fd; _cleanup_fclose_ FILE *policy = NULL; - _cleanup_close_ int pol = -1; - pol = openat(dfd, entry->d_name, O_RDONLY|O_CLOEXEC); - if (pol < 0) { - log_error("Smack access rule file %s not opened: %m", - entry->d_name); + fd = openat(dfd, entry->d_name, O_RDONLY|O_CLOEXEC); + if (fd < 0) { + if (r == 0) + r = -errno; + log_warning("Failed to open %s: %m", entry->d_name); continue; } - policy = fdopen(pol, "re"); + policy = fdopen(fd, "re"); if (!policy) { - log_error("Smack access rule file %s not opened: %m", - entry->d_name); + if (r == 0) + r = -errno; + close_nointr_nofail(fd); + log_error("Failed to open %s: %m", entry->d_name); continue; } - pol = -1; - /* load2 write rules in the kernel require a line buffered stream */ FOREACH_LINE(buf, policy, - log_error("Failed to read from Smack access rule file %s: %m", + log_error("Failed to read line from %s: %m", entry->d_name)) { - fputs(buf, smack); - fflush(smack); + if (!fputs(buf, dst)) { + if (r == 0) + r = -EINVAL; + log_error("Failed to write line to %s", dstpath); + break; + } + if (fflush(dst)) { + if (r == 0) + r = -errno; + log_error("Failed to flush writes to %s: %m", dstpath); + break; + } } } - log_info("Successfully loaded Smack policies."); + return r; +} + - return 0; +int smack_setup(void) { + int r; + + r = write_rules("/sys/fs/smackfs/load2", SMACK_CONFIG); + switch(r) { + case -ENOENT: + log_debug("Smack is not enabled in the kernel."); + return 0; + case ENOENT: + log_debug("Smack access rules directory " SMACK_CONFIG " not found"); + return 0; + case 0: + log_info("Successfully loaded Smack policies."); + return 0; + default: + log_warning("Failed to load smack access rules: %s, ignoring.", + strerror(abs(r))); + return 0; + } } -- cgit v1.2.1 From abbacb1defaaecb8d2477685f7bb3fabcf58585b Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Tue, 12 Mar 2013 16:16:44 -0700 Subject: smack-setup: enable Smack/CIPSO mapping CIPSO is the Common IP Security Option, an IETF standard for setting security levels for a process sending packets. In Smack kernels, CIPSO headers are mapped to Smack labels automatically, but can be changed. This patch writes label/category mappings from /etc/smack/cipso/ to /sys/fs/smackfs/cipso2. The mapping format is "%s%4d%4d"["%4d"]... For more information about Smack and CIPSO, see: https://kernel.org/doc/Documentation/security/Smack.txt --- src/core/smack-setup.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/core/smack-setup.c b/src/core/smack-setup.c index 804678d6a6..73eeb04190 100644 --- a/src/core/smack-setup.c +++ b/src/core/smack-setup.c @@ -40,6 +40,7 @@ #include "label.h" #define SMACK_CONFIG "/etc/smack/accesses.d/" +#define CIPSO_CONFIG "/etc/smack/cipso/" static int write_rules(const char* dstpath, const char* srcdir) { _cleanup_fclose_ FILE *dst = NULL; @@ -124,9 +125,26 @@ int smack_setup(void) { return 0; case 0: log_info("Successfully loaded Smack policies."); + break; + default: + log_warning("Failed to load Smack access rules: %s, ignoring.", + strerror(abs(r))); + return 0; + } + + r = write_rules("/sys/fs/smackfs/cipso2", CIPSO_CONFIG); + switch(r) { + case -ENOENT: + log_debug("Smack/CIPSO is not enabled in the kernel."); + return 0; + case ENOENT: + log_debug("Smack/CIPSO access rules directory " CIPSO_CONFIG " not found"); + return 0; + case 0: + log_info("Successfully loaded Smack/CIPSO policies."); return 0; default: - log_warning("Failed to load smack access rules: %s, ignoring.", + log_warning("Failed to load Smack/CIPSO access rules: %s, ignoring.", strerror(abs(r))); return 0; } -- cgit v1.2.1 From 3b953d68c628c6ae70adba871719ac0f16083b51 Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Fri, 15 Mar 2013 08:50:12 -0700 Subject: TODO: uses for SO_REUSEPORT The new socket option SO_REUSEPORT would enable some new functionality; add it to TODO. --- TODO | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/TODO b/TODO index addf32e473..fcc3471278 100644 --- a/TODO +++ b/TODO @@ -46,6 +46,11 @@ Fedora 19: Features: +* Support SO_REUSEPORT with socket activation: + - Let systemd maintain a pool of servers. + - Use for seamless upgrades, by running the new server before stopping the + old. + * BootLoaderSpec: drop allowing ext234 for $BOOT. Clarify that the kernel has to be in $BOOT. Clarify that the boot loader should be installed to the ESP. Define a way how an installer can figure out -- cgit v1.2.1 From c17ec25e4d9bd6c8e8617416f813e25b2ebbafc5 Mon Sep 17 00:00:00 2001 From: Michal Sekletar Date: Thu, 14 Mar 2013 18:12:27 +0100 Subject: core: reuse the same /tmp, /var/tmp and inaccessible dir All Execs within the service, will get mounted the same /tmp and /var/tmp directories, if service is configured with PrivateTmp=yes. Temporary directories are cleaned up by service itself in addition to systemd-tmpfiles. Directory which is mounted as inaccessible is created at runtime in /run/systemd. --- man/systemd.exec.xml | 4 +- src/core/execute.c | 43 +++++++++- src/core/execute.h | 10 ++- src/core/manager.c | 6 ++ src/core/manager.h | 3 + src/core/mount-setup.c | 1 + src/core/mount.c | 21 ++++- src/core/namespace.c | 226 ++++++++++++++++++++----------------------------- src/core/namespace.h | 16 ++-- src/core/service.c | 29 ++++++- src/core/socket.c | 20 ++++- src/core/swap.c | 20 ++++- src/shared/util.c | 44 ++++++++++ src/shared/util.h | 1 + src/test/test-ns.c | 14 ++- 15 files changed, 305 insertions(+), 153 deletions(-) diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml index 9c31baf793..b1cd685cc0 100644 --- a/man/systemd.exec.xml +++ b/man/systemd.exec.xml @@ -1107,7 +1107,9 @@ processes via /tmp or /var/tmp - impossible. Defaults to + impossible. All temporary data created + by service will be removed after service + is stopped. Defaults to false. diff --git a/src/core/execute.c b/src/core/execute.c index 92cf174641..18e25fa6e6 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -173,6 +173,18 @@ static bool is_terminal_output(ExecOutput o) { o == EXEC_OUTPUT_JOURNAL_AND_CONSOLE; } +void exec_context_serialize(const ExecContext *context, Unit *u, FILE *f) { + assert(context); + assert(u); + assert(f); + + if (context->tmp_dir) + unit_serialize_item(u, f, "tmp-dir", context->tmp_dir); + + if (context->var_tmp_dir) + unit_serialize_item(u, f, "var-tmp-dir", context->var_tmp_dir); +} + static int open_null_as(int flags, int nfd) { int fd, r; @@ -968,7 +980,7 @@ static int apply_seccomp(uint32_t *syscall_filter) { int exec_spawn(ExecCommand *command, char **argv, - const ExecContext *context, + ExecContext *context, int fds[], unsigned n_fds, char **environment, bool apply_permissions, @@ -1036,6 +1048,12 @@ int exec_spawn(ExecCommand *command, cgroup_attribute_apply_list(cgroup_attributes, cgroup_bondings); + if (context->private_tmp && !context->tmp_dir && !context->var_tmp_dir) { + r = setup_tmpdirs(&context->tmp_dir, &context->var_tmp_dir); + if (r < 0) + return r; + } + pid = fork(); if (pid < 0) return -errno; @@ -1302,6 +1320,8 @@ int exec_spawn(ExecCommand *command, err = setup_namespace(context->read_write_dirs, context->read_only_dirs, context->inaccessible_dirs, + context->tmp_dir, + context->var_tmp_dir, context->private_tmp, context->mount_flags); if (err < 0) { @@ -1530,7 +1550,23 @@ void exec_context_init(ExecContext *c) { c->timer_slack_nsec = (nsec_t) -1; } -void exec_context_done(ExecContext *c) { +void exec_context_tmp_dirs_done(ExecContext *c) { + assert(c); + + if (c->tmp_dir) { + rm_rf_dangerous(c->tmp_dir, false, true, false); + free(c->tmp_dir); + c->tmp_dir = NULL; + } + + if (c->var_tmp_dir) { + rm_rf_dangerous(c->var_tmp_dir, false, true, false); + free(c->var_tmp_dir); + c->var_tmp_dir = NULL; + } +} + +void exec_context_done(ExecContext *c, bool reloading_or_reexecuting) { unsigned l; assert(c); @@ -1594,6 +1630,9 @@ void exec_context_done(ExecContext *c) { free(c->syscall_filter); c->syscall_filter = NULL; + + if (!reloading_or_reexecuting) + exec_context_tmp_dirs_done(c); } void exec_command_done(ExecCommand *c) { diff --git a/src/core/execute.h b/src/core/execute.h index 001eb0e7cc..3ce9221ab1 100644 --- a/src/core/execute.h +++ b/src/core/execute.h @@ -36,6 +36,8 @@ typedef struct ExecContext ExecContext; struct CGroupBonding; struct CGroupAttribute; +typedef struct Unit Unit; + #include "list.h" #include "util.h" @@ -141,6 +143,8 @@ struct ExecContext { bool non_blocking; bool private_tmp; bool private_network; + char *tmp_dir; + char *var_tmp_dir; bool no_new_privileges; @@ -164,7 +168,7 @@ struct ExecContext { int exec_spawn(ExecCommand *command, char **argv, - const ExecContext *context, + ExecContext *context, int fds[], unsigned n_fds, char **environment, bool apply_permissions, @@ -192,13 +196,15 @@ void exec_command_append_list(ExecCommand **l, ExecCommand *e); int exec_command_set(ExecCommand *c, const char *path, ...); void exec_context_init(ExecContext *c); -void exec_context_done(ExecContext *c); +void exec_context_done(ExecContext *c, bool reloading_or_reexecuting); +void exec_context_tmp_dirs_done(ExecContext *c); void exec_context_dump(ExecContext *c, FILE* f, const char *prefix); void exec_context_tty_reset(const ExecContext *context); int exec_context_load_environment(const ExecContext *c, char ***l); bool exec_context_may_touch_console(ExecContext *c); +void exec_context_serialize(const ExecContext *c, Unit *u, FILE *f); void exec_status_start(ExecStatus *s, pid_t pid); void exec_status_exit(ExecStatus *s, ExecContext *context, pid_t pid, int code, int status); diff --git a/src/core/manager.c b/src/core/manager.c index 8e66732cd7..a01710f445 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -2333,6 +2333,12 @@ static bool manager_is_booting_or_shutting_down(Manager *m) { return false; } +bool manager_is_reloading_or_reexecuting(Manager *m) { + assert(m); + + return m->n_reloading != 0; +} + void manager_reset_failed(Manager *m) { Unit *u; Iterator i; diff --git a/src/core/manager.h b/src/core/manager.h index c486a16887..9d8d9439d2 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -85,6 +85,7 @@ struct Watch { #include "set.h" #include "dbus.h" #include "path-lookup.h" +#include "execute.h" struct Manager { /* Note that the set of units we know of is allowed to be @@ -283,6 +284,8 @@ int manager_distribute_fds(Manager *m, FDSet *fds); int manager_reload(Manager *m); +bool manager_is_reloading_or_reexecuting(Manager *m); + void manager_reset_failed(Manager *m); void manager_send_unit_audit(Manager *m, Unit *u, int type, bool success); diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index ce10be944a..6140f56d83 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -447,6 +447,7 @@ int mount_setup(bool loaded_policy) { * systemd. */ mkdir_label("/run/systemd", 0755); mkdir_label("/run/systemd/system", 0755); + mkdir_label("/run/systemd/inaccessible", 0000); return 0; } diff --git a/src/core/mount.c b/src/core/mount.c index 7a1b411c7b..0adf04e9bf 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -25,6 +25,7 @@ #include #include +#include "manager.h" #include "unit.h" #include "mount.h" #include "load-fragment.h" @@ -126,7 +127,7 @@ static void mount_done(Unit *u) { mount_parameters_done(&m->parameters_proc_self_mountinfo); mount_parameters_done(&m->parameters_fragment); - exec_context_done(&m->exec_context); + exec_context_done(&m->exec_context, manager_is_reloading_or_reexecuting(u->manager)); exec_command_done_array(m->exec_command, _MOUNT_EXEC_COMMAND_MAX); m->control_command = NULL; @@ -870,6 +871,7 @@ static void mount_enter_dead(Mount *m, MountResult f) { if (f != MOUNT_SUCCESS) m->result = f; + exec_context_tmp_dirs_done(&m->exec_context); mount_set_state(m, m->result != MOUNT_SUCCESS ? MOUNT_FAILED : MOUNT_DEAD); } @@ -1163,6 +1165,8 @@ static int mount_serialize(Unit *u, FILE *f, FDSet *fds) { if (m->control_command_id >= 0) unit_serialize_item(u, f, "control-command", mount_exec_command_to_string(m->control_command_id)); + exec_context_serialize(&m->exec_context, UNIT(m), f); + return 0; } @@ -1219,7 +1223,22 @@ static int mount_deserialize_item(Unit *u, const char *key, const char *value, F m->control_command_id = id; m->control_command = m->exec_command + id; } + } else if (streq(key, "tmp-dir")) { + char *t; + + t = strdup(value); + if (!t) + return log_oom(); + + m->exec_context.tmp_dir = t; + } else if (streq(key, "var-tmp-dir")) { + char *t; + + t = strdup(value); + if (!t) + return log_oom(); + m->exec_context.var_tmp_dir = t; } else log_debug_unit(UNIT(m)->id, "Unknown serialization key '%s'", key); diff --git a/src/core/namespace.c b/src/core/namespace.c index ba18ddc5b0..ceeed2e1ae 100644 --- a/src/core/namespace.c +++ b/src/core/namespace.c @@ -36,23 +36,24 @@ #include "path-util.h" #include "namespace.h" #include "missing.h" +#include "execute.h" -typedef enum PathMode { +typedef enum MountMode { /* This is ordered by priority! */ INACCESSIBLE, READONLY, PRIVATE_TMP, PRIVATE_VAR_TMP, READWRITE -} PathMode; +} MountMode; -typedef struct Path { +typedef struct BindMount { const char *path; - PathMode mode; + MountMode mode; bool done; -} Path; +} BindMount; -static int append_paths(Path **p, char **strv, PathMode mode) { +static int append_mounts(BindMount **p, char **strv, MountMode mode) { char **i; STRV_FOREACH(i, strv) { @@ -68,8 +69,8 @@ static int append_paths(Path **p, char **strv, PathMode mode) { return 0; } -static int path_compare(const void *a, const void *b) { - const Path *p = a, *q = b; +static int mount_path_compare(const void *a, const void *b) { + const BindMount *p = a, *q = b; if (path_equal(p->path, q->path)) { @@ -93,14 +94,13 @@ static int path_compare(const void *a, const void *b) { return 0; } -static void drop_duplicates(Path *p, unsigned *n, bool *need_inaccessible) { - Path *f, *t, *previous; +static void drop_duplicates(BindMount *m, unsigned *n) { + BindMount *f, *t, *previous; - assert(p); + assert(m); assert(n); - assert(need_inaccessible); - for (f = p, t = p, previous = NULL; f < p+*n; f++) { + for (f = m, t = m, previous = NULL; f < m+*n; f++) { /* The first one wins */ if (previous && path_equal(f->path, previous->path)) @@ -109,37 +109,33 @@ static void drop_duplicates(Path *p, unsigned *n, bool *need_inaccessible) { t->path = f->path; t->mode = f->mode; - if (t->mode == INACCESSIBLE) - *need_inaccessible = true; - previous = t; t++; } - *n = t - p; + *n = t - m; } static int apply_mount( - Path *p, + BindMount *m, const char *tmp_dir, - const char *var_tmp_dir, - const char *inaccessible_dir) { + const char *var_tmp_dir) { const char *what; int r; - assert(p); + assert(m); - switch (p->mode) { + switch (m->mode) { case INACCESSIBLE: - what = inaccessible_dir; + what = "/run/systemd/inaccessible"; break; case READONLY: case READWRITE: - what = p->path; + what = m->path; break; case PRIVATE_TMP: @@ -156,133 +152,99 @@ static int apply_mount( assert(what); - r = mount(what, p->path, NULL, MS_BIND|MS_REC, NULL); + r = mount(what, m->path, NULL, MS_BIND|MS_REC, NULL); if (r >= 0) - log_debug("Successfully mounted %s to %s", what, p->path); + log_debug("Successfully mounted %s to %s", what, m->path); return r; } -static int make_read_only(Path *p) { +static int make_read_only(BindMount *m) { int r; - assert(p); + assert(m); - if (p->mode != INACCESSIBLE && p->mode != READONLY) + if (m->mode != INACCESSIBLE && m->mode != READONLY) return 0; - r = mount(NULL, p->path, NULL, MS_BIND|MS_REMOUNT|MS_RDONLY|MS_REC, NULL); + r = mount(NULL, m->path, NULL, MS_BIND|MS_REMOUNT|MS_RDONLY|MS_REC, NULL); if (r < 0) return -errno; return 0; } -int setup_namespace( - char **writable, - char **readable, - char **inaccessible, - bool private_tmp, - unsigned long flags) { - - char - tmp_dir[] = "/tmp/systemd-private-XXXXXX", - var_tmp_dir[] = "/var/tmp/systemd-private-XXXXXX", - inaccessible_dir[] = "/tmp/systemd-inaccessible-XXXXXX"; - - Path *paths, *p; - unsigned n; - bool need_inaccessible = false; - bool remove_tmp = false, remove_var_tmp = false, remove_inaccessible = false; - int r; - - if (!flags) - flags = MS_SHARED; +int setup_tmpdirs(char **tmp_dir, + char **var_tmp_dir) { + int r = 0; + char tmp_dir_template[] = "/tmp/systemd-private-XXXXXX", + var_tmp_dir_template[] = "/var/tmp/systemd-private-XXXXXX"; - n = - strv_length(writable) + - strv_length(readable) + - strv_length(inaccessible) + - (private_tmp ? 2 : 0); + assert(tmp_dir); + assert(var_tmp_dir); - p = paths = alloca(sizeof(Path) * n); - if ((r = append_paths(&p, writable, READWRITE)) < 0 || - (r = append_paths(&p, readable, READONLY)) < 0 || - (r = append_paths(&p, inaccessible, INACCESSIBLE)) < 0) - goto fail; + r = create_tmp_dir(tmp_dir_template, 0000, true, tmp_dir); + if (r < 0) + goto fail2; - if (private_tmp) { - p->path = "/tmp"; - p->mode = PRIVATE_TMP; - p++; + r = create_tmp_dir(var_tmp_dir_template, 0000, true, var_tmp_dir); + if (r < 0) + goto fail1; - p->path = "/var/tmp"; - p->mode = PRIVATE_VAR_TMP; - p++; - } + return 0; - assert(paths + n == p); +fail1: + rmdir(*tmp_dir); + free(*tmp_dir); + *tmp_dir = NULL; - qsort(paths, n, sizeof(Path), path_compare); - drop_duplicates(paths, &n, &need_inaccessible); +fail2: + return r; +} - if (need_inaccessible) { - mode_t u; - char *d; +int setup_namespace(char** read_write_dirs, + char** read_only_dirs, + char** inaccessible_dirs, + char* tmp_dir, + char* var_tmp_dir, + bool private_tmp, + unsigned mount_flags) { - u = umask(0777); - d = mkdtemp(inaccessible_dir); - umask(u); + unsigned n = strv_length(read_write_dirs) + + strv_length(read_only_dirs) + + strv_length(inaccessible_dirs) + + (private_tmp ? 2 : 0); + BindMount *m, *mounts; + int r = 0; - if (!d) { - r = -errno; - goto fail; - } + if (!mount_flags) + mount_flags = MS_SHARED; - remove_inaccessible = true; + if (unshare(CLONE_NEWNS) < 0) { + r = -errno; + goto fail; } - if (private_tmp) { - mode_t u; - char *d; - - u = umask(0000); - d = mkdtemp(tmp_dir); - umask(u); - - if (!d) { - r = -errno; - goto fail; - } - - remove_tmp = true; - - u = umask(0000); - d = mkdtemp(var_tmp_dir); - umask(u); - - if (!d) { - r = -errno; - goto fail; - } - - remove_var_tmp = true; + m = mounts = (BindMount *) alloca(n * sizeof(BindMount)); + if ((r = append_mounts(&m, read_write_dirs, READWRITE)) < 0 || + (r = append_mounts(&m, read_only_dirs, READONLY)) < 0 || + (r = append_mounts(&m, inaccessible_dirs, INACCESSIBLE)) < 0) + goto fail; - if (chmod(tmp_dir, 0777 + S_ISVTX) < 0) { - r = -errno; - goto fail; - } + if (private_tmp) { + m->path = "/tmp"; + m->mode = PRIVATE_TMP; + m++; - if (chmod(var_tmp_dir, 0777 + S_ISVTX) < 0) { - r = -errno; - goto fail; - } + m->path = "/var/tmp"; + m->mode = PRIVATE_VAR_TMP; + m++; } - if (unshare(CLONE_NEWNS) < 0) { - r = -errno; - goto fail; - } + assert(mounts + n == m); + + qsort(mounts, n, sizeof(BindMount), mount_path_compare); + drop_duplicates(mounts, &n); /* Remount / as SLAVE so that nothing now mounted in the namespace shows up in the parent */ @@ -291,20 +253,20 @@ int setup_namespace( goto fail; } - for (p = paths; p < paths + n; p++) { - r = apply_mount(p, tmp_dir, var_tmp_dir, inaccessible_dir); + for (m = mounts; m < mounts + n; ++m) { + r = apply_mount(m, tmp_dir, var_tmp_dir); if (r < 0) goto undo_mounts; } - for (p = paths; p < paths + n; p++) { - r = make_read_only(p); + for (m = mounts; m < mounts + n; ++m) { + r = make_read_only(m); if (r < 0) goto undo_mounts; } /* Remount / as the desired mode */ - if (mount(NULL, "/", NULL, flags|MS_REC, NULL) < 0) { + if (mount(NULL, "/", NULL, mount_flags | MS_REC, NULL) < 0) { r = -errno; goto undo_mounts; } @@ -312,19 +274,11 @@ int setup_namespace( return 0; undo_mounts: - for (p = paths; p < paths + n; p++) - if (p->done) - umount2(p->path, MNT_DETACH); + for (m = mounts; m < mounts + n; ++m) { + if (m->done) + umount2(m->path, MNT_DETACH); + } fail: - if (remove_inaccessible) - rmdir(inaccessible_dir); - - if (remove_tmp) - rmdir(tmp_dir); - - if (remove_var_tmp) - rmdir(var_tmp_dir); - return r; } diff --git a/src/core/namespace.h b/src/core/namespace.h index 5d72ed91fb..7b886b8abf 100644 --- a/src/core/namespace.h +++ b/src/core/namespace.h @@ -23,9 +23,13 @@ #include -int setup_namespace( - char **writable, - char **readable, - char **inaccessible, - bool private_tmp, - unsigned long flags); +typedef struct ExecContext ExecContext; + +int setup_tmpdirs(char **tmp_dir, char **var_tmp_dir); +int setup_namespace(char **read_write_dirs, + char **read_only_dirs, + char **inaccessible_dirs, + char *tmp_dir, + char *var_tmp_dir, + bool private_tmp, + unsigned mount_flags); diff --git a/src/core/service.c b/src/core/service.c index fd90ceba05..080d583b69 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -283,7 +283,7 @@ static void service_done(Unit *u) { free(s->status_text); s->status_text = NULL; - exec_context_done(&s->exec_context); + exec_context_done(&s->exec_context, manager_is_reloading_or_reexecuting(u->manager)); exec_command_free_array(s->exec_command, _SERVICE_EXEC_COMMAND_MAX); s->control_command = NULL; s->main_command = NULL; @@ -1932,6 +1932,9 @@ static void service_enter_dead(Service *s, ServiceResult f, bool allow_restart) s->forbid_restart = false; + /* we want fresh tmpdirs in case service is started again immediately */ + exec_context_tmp_dirs_done(&s->exec_context); + return; fail: @@ -2638,6 +2641,12 @@ static int service_serialize(Unit *u, FILE *f, FDSet *fds) { dual_timestamp_serialize(f, "watchdog-timestamp", &s->watchdog_timestamp); + if (s->exec_context.tmp_dir) + unit_serialize_item(u, f, "tmp-dir", s->exec_context.tmp_dir); + + if (s->exec_context.var_tmp_dir) + unit_serialize_item(u, f, "var-tmp-dir", s->exec_context.var_tmp_dir); + return 0; } @@ -2756,7 +2765,23 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, dual_timestamp_deserialize(value, &s->main_exec_status.exit_timestamp); else if (streq(key, "watchdog-timestamp")) dual_timestamp_deserialize(value, &s->watchdog_timestamp); - else + else if (streq(key, "tmp-dir")) { + char *t; + + t = strdup(value); + if (!t) + return log_oom(); + + s->exec_context.tmp_dir = t; + } else if (streq(key, "var-tmp-dir")) { + char *t; + + t = strdup(value); + if (!t) + return log_oom(); + + s->exec_context.var_tmp_dir = t; + } else log_debug_unit(u->id, "Unknown serialization key '%s'", key); return 0; diff --git a/src/core/socket.c b/src/core/socket.c index ee9de4e14c..a3e3631dac 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -127,7 +127,7 @@ static void socket_done(Unit *u) { socket_free_ports(s); - exec_context_done(&s->exec_context); + exec_context_done(&s->exec_context, manager_is_reloading_or_reexecuting(u->manager)); exec_command_free_array(s->exec_command, _SOCKET_EXEC_COMMAND_MAX); s->control_command = NULL; @@ -1253,6 +1253,7 @@ static void socket_enter_dead(Socket *s, SocketResult f) { if (f != SOCKET_SUCCESS) s->result = f; + exec_context_tmp_dirs_done(&s->exec_context); socket_set_state(s, s->result != SOCKET_SUCCESS ? SOCKET_FAILED : SOCKET_DEAD); } @@ -1742,6 +1743,8 @@ static int socket_serialize(Unit *u, FILE *f, FDSet *fds) { } } + exec_context_serialize(&s->exec_context, UNIT(s), f); + return 0; } @@ -1901,7 +1904,22 @@ static int socket_deserialize_item(Unit *u, const char *key, const char *value, p->fd = fdset_remove(fds, fd); } } + } else if (streq(key, "tmp-dir")) { + char *t; + + t = strdup(value); + if (!t) + return log_oom(); + + s->exec_context.tmp_dir = t; + } else if (streq(key, "var-tmp-dir")) { + char *t; + + t = strdup(value); + if (!t) + return log_oom(); + s->exec_context.var_tmp_dir = t; } else log_debug_unit(UNIT(s)->id, "Unknown serialization key '%s'", key); diff --git a/src/core/swap.c b/src/core/swap.c index a0e55a0c03..dc98f47387 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -125,7 +125,7 @@ static void swap_done(Unit *u) { free(s->parameters_fragment.what); s->parameters_fragment.what = NULL; - exec_context_done(&s->exec_context); + exec_context_done(&s->exec_context, manager_is_reloading_or_reexecuting(u->manager)); exec_command_done_array(s->exec_command, _SWAP_EXEC_COMMAND_MAX); s->control_command = NULL; @@ -632,6 +632,7 @@ static void swap_enter_dead(Swap *s, SwapResult f) { if (f != SWAP_SUCCESS) s->result = f; + exec_context_tmp_dirs_done(&s->exec_context); swap_set_state(s, s->result != SWAP_SUCCESS ? SWAP_FAILED : SWAP_DEAD); } @@ -831,6 +832,8 @@ static int swap_serialize(Unit *u, FILE *f, FDSet *fds) { if (s->control_command_id >= 0) unit_serialize_item(u, f, "control-command", swap_exec_command_to_string(s->control_command_id)); + exec_context_serialize(&s->exec_context, UNIT(s), f); + return 0; } @@ -874,7 +877,22 @@ static int swap_deserialize_item(Unit *u, const char *key, const char *value, FD s->control_command_id = id; s->control_command = s->exec_command + id; } + } else if (streq(key, "tmp-dir")) { + char *t; + + t = strdup(value); + if (!t) + return log_oom(); + + s->exec_context.tmp_dir = t; + } else if (streq(key, "var-tmp-dir")) { + char *t; + + t = strdup(value); + if (!t) + return log_oom(); + s->exec_context.var_tmp_dir = t; } else log_debug_unit(u->id, "Unknown serialization key '%s'", key); diff --git a/src/shared/util.c b/src/shared/util.c index dc2651f3f2..34c5330838 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5682,3 +5682,47 @@ int search_and_fopen_nulstr(const char *path, const char *mode, const char *sear return search_and_fopen_internal(path, mode, s, _f); } + +int create_tmp_dir(char template[], mode_t mask, bool need_sticky, char** dir_name) { + int r = 0; + char *d = NULL; + bool remove = false; + mode_t _cleanup_umask_ u; + + assert(dir_name); + + u = umask(mask); + d = mkdtemp(template); + if (!d) { + r = -errno; + log_debug("Can't create directory"); + goto fail; + } + + remove = true; + + log_debug("Created temporary directory : %s", template); + + d = strdup(template); + if (!d) { + r = log_oom(); + goto fail; + } + + if (need_sticky) { + r = chmod(template, 0777 | S_ISVTX); + if (r < 0) { + r = -errno; + goto fail; + } + log_debug("Setting sticky bit on : %s", template); + } + + *dir_name = d; + + return 0; +fail: + if (remove) + rmdir(template); + return r; +} diff --git a/src/shared/util.h b/src/shared/util.h index f0dfe19ad4..8ac4bbc249 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -574,6 +574,7 @@ int on_ac_power(void); int search_and_fopen(const char *path, const char *mode, const char **search, FILE **_f); int search_and_fopen_nulstr(const char *path, const char *mode, const char *search, FILE **_f); +int create_tmp_dir(char template[], mode_t mask, bool need_sticky, char** dir_name); #define FOREACH_LINE(line, f, on_error) \ for (;;) \ diff --git a/src/test/test-ns.c b/src/test/test-ns.c index b1c759fc20..ad0d0419c4 100644 --- a/src/test/test-ns.c +++ b/src/test/test-ns.c @@ -26,6 +26,7 @@ #include #include "namespace.h" +#include "execute.h" #include "log.h" int main(int argc, char *argv[]) { @@ -47,8 +48,19 @@ int main(int argc, char *argv[]) { }; int r; + char tmp_dir[] = "/tmp/systemd-private-XXXXXX", + var_tmp_dir[] = "/var/tmp/systemd-private-XXXXXX"; - r = setup_namespace((char**) writable, (char**) readonly, (char**) inaccessible, true, 0); + assert_se(mkdtemp(tmp_dir)); + assert_se(mkdtemp(var_tmp_dir)); + + r = setup_namespace((char **) writable, + (char **) readonly, + (char **) inaccessible, + tmp_dir, + var_tmp_dir, + true, + 0); if (r < 0) { log_error("Failed to setup namespace: %s", strerror(-r)); return 1; -- cgit v1.2.1 From 1a512bf48cdc05d135c9b2770ca5d0bdd6310666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 15 Mar 2013 22:48:45 -0400 Subject: timer: fix grammar in message --- src/core/timer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/timer.c b/src/core/timer.c index 8061f79e3a..fd8e50e71c 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -328,7 +328,7 @@ static void timer_enter_waiting(Timer *t, bool initial) { if (found_monotonic) { char buf[FORMAT_TIMESPAN_MAX]; log_debug_unit(UNIT(t)->id, - "%s: Monotonic timer elapses in %s the next time.", + "%s: Monotonic timer elapses in %s.", UNIT(t)->id, format_timespan(buf, sizeof(buf), t->next_elapse_monotonic > ts.monotonic ? t->next_elapse_monotonic - ts.monotonic : 0)); @@ -341,7 +341,7 @@ static void timer_enter_waiting(Timer *t, bool initial) { if (found_realtime) { char buf[FORMAT_TIMESTAMP_MAX]; log_debug_unit(UNIT(t)->id, - "%s: Realtime timer elapses at %s the next time.", + "%s: Realtime timer elapses at %s.", UNIT(t)->id, format_timestamp(buf, sizeof(buf), t->next_elapse_realtime)); -- cgit v1.2.1 From 83d7d83bcc6c462ecbb4c8003e3a8b41f3b88d46 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 16 Mar 2013 16:10:22 +0100 Subject: journal: pass the *pid* to sd_pid_get_owner_uid() --- src/journal/journald-server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index ac565c7ece..364ab0f113 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -593,7 +593,7 @@ static void dispatch_message_real( IOVEC_SET_STRING(iovec[n++], session); } - if (sd_pid_get_owner_uid(ucred->uid, &owner) >= 0) { + if (sd_pid_get_owner_uid(ucred->pid, &owner) >= 0) { owner_valid = true; if (asprintf(&owner_uid, "_SYSTEMD_OWNER_UID=%lu", (unsigned long) owner) >= 0) IOVEC_SET_STRING(iovec[n++], owner_uid); -- cgit v1.2.1 From 0a2cdb3aee42ccb9594db1b98eefd37c3f358803 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 16 Mar 2013 16:21:47 +0100 Subject: man: bootup - intrd-fs.target --> initrd.target --- man/bootup.xml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/man/bootup.xml b/man/bootup.xml index a1fe3d81cd..65923528d4 100644 --- a/man/bootup.xml +++ b/man/bootup.xml @@ -175,7 +175,7 @@ Initrd System Manager Bootup - The default target in the initrd is the initrd-fs.target. The bootup process is + The default target in the initrd is the initrd.target. The bootup process is identical to the System Manager Bootup until it reaches basic.target. From there, systemd approaches the special initrd.target. If the root device can be mounted at /sysroot, the sysroot.mount unit becomes active and the initrd-root-fs.target is @@ -213,7 +213,6 @@ | | | v | initrd-fs.target - | | \______________________ | \| v -- cgit v1.2.1 From 93f04c80f680c9a186541bf99dc2a1107e3a887d Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 16 Mar 2013 16:29:29 +0100 Subject: units: initrd, multi-user - add a few more words to Description= --- units/initrd.target | 2 +- units/multi-user.target | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/units/initrd.target b/units/initrd.target index 5622de477a..bb9054fb89 100644 --- a/units/initrd.target +++ b/units/initrd.target @@ -6,7 +6,7 @@ # (at your option) any later version. [Unit] -Description=Initrd Target +Description=Initrd Default Target Documentation=man:systemd.special(7) OnFailure=emergency.target OnFailureIsolate=yes diff --git a/units/multi-user.target b/units/multi-user.target index 6e3f0b4f7a..998e04603e 100644 --- a/units/multi-user.target +++ b/units/multi-user.target @@ -6,7 +6,7 @@ # (at your option) any later version. [Unit] -Description=Multi-User +Description=Multi-User System Documentation=man:systemd.special(7) Requires=basic.target Conflicts=rescue.service rescue.target -- cgit v1.2.1 From 72c6cf8fa586a08b56a1b5d7ed6d7c7272dff3f4 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Mon, 18 Mar 2013 14:17:24 +0100 Subject: man: udev - document 'builtin' The new IMPORT{builtin} and RUN{builtin} were not documented. Also make it clear that RUN= is really an alias for RUN{program}=. --- man/udev.xml | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/man/udev.xml b/man/udev.xml index 415cf8e6a9..34b1e6fd60 100644 --- a/man/udev.xml +++ b/man/udev.xml @@ -392,14 +392,31 @@ - + Add a program to the list of programs to be executed for a specific - device. - If no absolute path is given, the program is expected to live in - /usr/lib/udev, otherwise the absolute path must be specified. The program - name and following arguments are separated by spaces. Single quotes can - be used to specify arguments with spaces. + device, depending on type: + + + program + + Execute an external program specified as the assigned + value. If no absolute path is given, the program is expected to live in + /usr/lib/udev, otherwise the absolute path must be specified. + This is the default if no type is + specified. + + + + builtin + + As , but use one of the built-in programs rather + than an external one. + + + + The program name and following arguments are separated by spaces. + Single quotes can be used to specify arguments with spaces. This can only be used for very short-running foreground tasks. Running an event process for a long period of time may block all further events for this or a dependent device. @@ -439,6 +456,13 @@ + builtin + + As , but use one of the built-in programs rather + than an external one. + + + file Import a text file specified as the assigned value, the content -- cgit v1.2.1 From a3bd8447be4ea2ce230eb8ae0e815c04d85fa15a Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Mon, 18 Mar 2013 15:12:18 +0100 Subject: udev: make firmware loading optional and disable by default Distros that whish to support old kernels should set --with-firmware-dirs="/usr/lib/firmware/updates:/usr/lib/firmware" to retain the old behaviour. --- Makefile.am | 16 ++++++++++++---- configure.ac | 7 ++++--- rules/50-firmware.rules | 3 +++ rules/50-udev-default.rules | 1 - shell-completion/bash/udevadm | 2 +- src/udev/udev-builtin.c | 2 ++ src/udev/udev.h | 4 ++++ 7 files changed, 26 insertions(+), 9 deletions(-) create mode 100644 rules/50-firmware.rules diff --git a/Makefile.am b/Makefile.am index 7e9cdfdb26..37eeb01d58 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1352,12 +1352,10 @@ rootlibexec_PROGRAMS += \ nodist_systemunit_DATA += \ units/systemd-modules-load.service + SYSINIT_TARGET_WANTS += \ systemd-modules-load.service -dist_udevrules_DATA += \ - rules/80-drivers.rules - endif EXTRA_DIST += \ @@ -1809,7 +1807,6 @@ libudev_core_la_SOURCES = \ src/udev/udev-ctrl.c \ src/udev/udev-builtin.c \ src/udev/udev-builtin-btrfs.c \ - src/udev/udev-builtin-firmware.c \ src/udev/udev-builtin-hwdb.c \ src/udev/udev-builtin-input_id.c \ src/udev/udev-builtin-net_id.c \ @@ -1833,9 +1830,20 @@ libudev_core_la_CPPFLAGS = \ $(AM_CPPFLAGS) \ -DFIRMWARE_PATH="$(FIRMWARE_PATH)" +if ENABLE_FIRMWARE +libudev_core_la_SOURCES += \ + src/udev/udev-builtin-firmware.c + +dist_udevrules_DATA += \ + rules/50-firmware.rules +endif + if HAVE_KMOD libudev_core_la_SOURCES += \ src/udev/udev-builtin-kmod.c + +dist_udevrules_DATA += \ + rules/80-drivers.rules endif if HAVE_BLKID diff --git a/configure.ac b/configure.ac index 28d7286c83..14411e3601 100644 --- a/configure.ac +++ b/configure.ac @@ -705,8 +705,8 @@ AM_CONDITIONAL(HAVE_MYHOSTNAME, [test "$have_myhostname" = "yes"]) # ------------------------------------------------------------------------------ AC_ARG_WITH(firmware-path, AS_HELP_STRING([--with-firmware-path=DIR[[[:DIR[...]]]]], - [Firmware search path (default=ROOTPREFIX/lib/firmware/updates:ROOTPREFIX/lib/firmware)]), - [], [with_firmware_path="$rootprefix/lib/firmware/updates:$rootprefix/lib/firmware"]) + [Firmware search path (default="")]), + [], [with_firmware_path=""]) OLD_IFS=$IFS IFS=: for i in $with_firmware_path; do @@ -717,7 +717,8 @@ for i in $with_firmware_path; do fi done IFS=$OLD_IFS -AC_SUBST([FIRMWARE_PATH], [$FIRMWARE_PATH]) +AC_SUBST(FIRMWARE_PATH) +AM_CONDITIONAL(ENABLE_FIRMWARE, [test "x${FIRMWARE_PATH}" != "x"]) # ------------------------------------------------------------------------------ AC_ARG_ENABLE([gudev], diff --git a/rules/50-firmware.rules b/rules/50-firmware.rules new file mode 100644 index 0000000000..f0ae684518 --- /dev/null +++ b/rules/50-firmware.rules @@ -0,0 +1,3 @@ +# do not edit this file, it will be overwritten on update + +SUBSYSTEM=="firmware", ACTION=="add", RUN{builtin}="firmware" diff --git a/rules/50-udev-default.rules b/rules/50-udev-default.rules index 5d8bde53c1..9d17cf71ab 100644 --- a/rules/50-udev-default.rules +++ b/rules/50-udev-default.rules @@ -64,5 +64,4 @@ SUBSYSTEM=="virtio-ports", KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio- SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" SUBSYSTEM=="input", ENV{ID_INPUT}=="", IMPORT{builtin}="input_id" -SUBSYSTEM=="firmware", ACTION=="add", IMPORT{builtin}="firmware" ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}" diff --git a/shell-completion/bash/udevadm b/shell-completion/bash/udevadm index a31d465d35..123fb51633 100644 --- a/shell-completion/bash/udevadm +++ b/shell-completion/bash/udevadm @@ -93,7 +93,7 @@ _udevadm() { fi elif __contains_word "$verb" ${VERBS[TESTBUILTIN]}; then - comps='blkid btrfs firmware hwdb input_id kmod net_id path_id usb_id uaccess' + comps='blkid btrfs hwdb input_id kmod net_id path_id usb_id uaccess' fi COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) diff --git a/src/udev/udev-builtin.c b/src/udev/udev-builtin.c index 57d75a13e4..13922d3ce3 100644 --- a/src/udev/udev-builtin.c +++ b/src/udev/udev-builtin.c @@ -34,7 +34,9 @@ static const struct udev_builtin *builtins[] = { [UDEV_BUILTIN_BLKID] = &udev_builtin_blkid, #endif [UDEV_BUILTIN_BTRFS] = &udev_builtin_btrfs, +#ifdef ENABLE_FIRMWARE [UDEV_BUILTIN_FIRMWARE] = &udev_builtin_firmware, +#endif [UDEV_BUILTIN_HWDB] = &udev_builtin_hwdb, [UDEV_BUILTIN_INPUT_ID] = &udev_builtin_input_id, #ifdef HAVE_KMOD diff --git a/src/udev/udev.h b/src/udev/udev.h index b54cb58fc3..aa2edbef6e 100644 --- a/src/udev/udev.h +++ b/src/udev/udev.h @@ -140,7 +140,9 @@ enum udev_builtin_cmd { UDEV_BUILTIN_BLKID, #endif UDEV_BUILTIN_BTRFS, +#ifdef ENABLE_FIRMWARE UDEV_BUILTIN_FIRMWARE, +#endif UDEV_BUILTIN_HWDB, UDEV_BUILTIN_INPUT_ID, #ifdef HAVE_KMOD @@ -167,7 +169,9 @@ struct udev_builtin { extern const struct udev_builtin udev_builtin_blkid; #endif extern const struct udev_builtin udev_builtin_btrfs; +#ifdef ENABLE_FIRMWARE extern const struct udev_builtin udev_builtin_firmware; +#endif extern const struct udev_builtin udev_builtin_hwdb; extern const struct udev_builtin udev_builtin_input_id; #ifdef HAVE_KMOD -- cgit v1.2.1 From 61e536e1b7f3a7448428a05bafe1ea64d7e51938 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 18 Mar 2013 15:22:32 +0100 Subject: udev: ifdef all firmware special handling --- src/udev/udevd.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 0a3ab687fd..834c7d9778 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -98,7 +98,9 @@ struct event { dev_t devnum; int ifindex; bool is_block; +#ifdef ENABLE_FIRMWARE bool nodelay; +#endif }; static inline struct event *node_to_event(struct udev_list_node *node) @@ -442,8 +444,10 @@ static int event_queue_insert(struct udev_device *dev) event->devnum = udev_device_get_devnum(dev); event->is_block = streq("block", udev_device_get_subsystem(dev)); event->ifindex = udev_device_get_ifindex(dev); +#ifdef ENABLE_FIRMWARE if (streq(udev_device_get_subsystem(dev), "firmware")) event->nodelay = true; +#endif udev_queue_export_device_queued(udev_queue_export, dev); log_debug("seq %llu queued, '%s' '%s'\n", udev_device_get_seqnum(dev), @@ -523,9 +527,11 @@ static bool is_devpath_busy(struct event *event) return true; } +#ifdef ENABLE_FIRMWARE /* allow to bypass the dependency tracking */ if (event->nodelay) continue; +#endif /* parent device event found */ if (event->devpath[common] == '/') { -- cgit v1.2.1 From 6ec0ac43bb1f9f8b8b435ba6e5d55dc7cc84c3c6 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Mon, 18 Mar 2013 15:58:37 +0100 Subject: man: udev - move documentation of configuration file Moved from udev(7) to systemd-udevd.service(8), where the rest of the documentation of the configuration of the daemon lives. --- man/systemd-udevd.service.xml | 17 +++++++++++++++++ man/udev.xml | 29 ++++------------------------- 2 files changed, 21 insertions(+), 25 deletions(-) diff --git a/man/systemd-udevd.service.xml b/man/systemd-udevd.service.xml index 2b9a29adcd..35e254384e 100644 --- a/man/systemd-udevd.service.xml +++ b/man/systemd-udevd.service.xml @@ -157,6 +157,23 @@ + Configuration file + udev expects its main configuration file at /etc/udev/udev.conf. + It consists of a set of variables allowing the user to override default udev values. All + empty lines or lines beginning with '#' are ignored. The following variables can be + set: + + + udev_log + + The logging priority. Valid values are the numerical syslog priorities + or their textual representations: , + and . + + + + + See Also diff --git a/man/udev.xml b/man/udev.xml index 34b1e6fd60..eab525f0f3 100644 --- a/man/udev.xml +++ b/man/udev.xml @@ -54,28 +54,7 @@ sources is provided by the library libudev. - Configuration - udev configuration files are placed in /etc/udev - and /usr/lib/udev. All empty lines or lines beginning with - '#' are ignored. - - Configuration file - udev expects its main configuration file at /etc/udev/udev.conf. - It consists of a set of variables allowing the user to override default udev values. - The following variables can be set: - - - udev_log - - The logging priority. Valid values are the numerical syslog priorities - or their textual representations: , - and . - - - - - - Rules files + Rules files The udev rules are read from the files located in the system rules directory /usr/lib/udev/rules.d, the volatile runtime directory /run/udev/rules.d @@ -94,9 +73,10 @@ extensions are ignored. Every line in the rules file contains at least one key-value pair. + Except for empty lines or lines beginning with '#', which are ignored. There are two kinds of keys: match and assignment. - If all match keys are matching against its value, the rule gets applied and the - assignment keys get the specified value assigned. + If all match keys match against their values, the rule gets applied and the + assignment keys get the specified values assigned. A matching rule may rename a network interface, add symlinks pointing to the device node, or run a specified program as part of @@ -714,7 +694,6 @@ - -- cgit v1.2.1 From 0cf2d0d023389957f57175c9cfb6aba56c0df343 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Sun, 17 Mar 2013 13:23:33 +0900 Subject: udev: net-name-slot - disable by kernel command line switch The properties will still be set in the udev database, but they will not be used for setting the interface names. As for the other kernel commandline switches, we allow it to be prefixed by 'rd.' to only apply in the initrd. --- TODO | 2 -- man/systemd-udevd.service.xml | 8 ++++++++ rules/80-net-name-slot.rules | 5 +++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index fcc3471278..c73e8dc980 100644 --- a/TODO +++ b/TODO @@ -28,8 +28,6 @@ Fedora 19: * cgroup attrs: - update dbus interface docs in wiki -* kernel cmdline switch to turn off predictable network interface names - * journal is not closed properly at shutdown when run in a container? * localed: diff --git a/man/systemd-udevd.service.xml b/man/systemd-udevd.service.xml index 35e254384e..18734eed1d 100644 --- a/man/systemd-udevd.service.xml +++ b/man/systemd-udevd.service.xml @@ -154,6 +154,14 @@ non-working kernel modules. + + net.predictable-names= + rd.net.predictable-names= + + Rename network interfaces to give them predictable names + when possible. Defaults to 1. + + diff --git a/rules/80-net-name-slot.rules b/rules/80-net-name-slot.rules index 2834e82dbf..e83eb3ff5f 100644 --- a/rules/80-net-name-slot.rules +++ b/rules/80-net-name-slot.rules @@ -4,6 +4,11 @@ ACTION=="remove", GOTO="net_name_slot_end" SUBSYSTEM!="net", GOTO="net_name_slot_end" NAME!="", GOTO="net_name_slot_end" +IMPORT{cmdline}="net.predictable-names" +ENV{net.predictable-names}=="0", GOTO="net_name_slot_end" +IMPORT{cmdline}="rd.net.predictable-names" +ENV{rd.net.predictable-names}=="0", TEST=="/etc/initrd-release", GOTO="net_name_slot_end" + NAME=="", ENV{ID_NET_NAME_ONBOARD}!="", NAME="$env{ID_NET_NAME_ONBOARD}" NAME=="", ENV{ID_NET_NAME_SLOT}!="", NAME="$env{ID_NET_NAME_SLOT}" NAME=="", ENV{ID_NET_NAME_PATH}!="", NAME="$env{ID_NET_NAME_PATH}" -- cgit v1.2.1 From f4fbb8be14051c0ea920cebcb011c965d95a7b86 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Sat, 16 Mar 2013 17:26:47 +0900 Subject: udev: builtin - use RUN rather than IMPORT for loading modules The 'kmod' builtin, like the 'firmware' and 'uaccess' builtins, does not set any variables, so don't use IMPORT. Notice that this changes the behaviour slightly: the processing of subsequent rules for the event that loads a module will no longer wait for the module loading to finish. This is not expected to cause any problems, but we should keep an eye on it. --- rules/80-drivers.rules | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/rules/80-drivers.rules b/rules/80-drivers.rules index a0615cc3b2..50523e4333 100644 --- a/rules/80-drivers.rules +++ b/rules/80-drivers.rules @@ -2,12 +2,12 @@ ACTION=="remove", GOTO="drivers_end" -DRIVER!="?*", ENV{MODALIAS}=="?*", IMPORT{builtin}="kmod load $env{MODALIAS}" -SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="SD", IMPORT{builtin}="kmod load tifm_sd" -SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="MS", IMPORT{builtin}="kmod load tifm_ms" -SUBSYSTEM=="memstick", IMPORT{builtin}="kmod load ms_block mspro_block" -SUBSYSTEM=="i2o", IMPORT{builtin}="kmod load i2o_block" +DRIVER!="?*", ENV{MODALIAS}=="?*", RUN{builtin}="kmod load $env{MODALIAS}" +SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="SD", RUN{builtin}="kmod load tifm_sd" +SUBSYSTEM=="tifm", ENV{TIFM_CARD_TYPE}=="MS", RUN{builtin}="kmod load tifm_ms" +SUBSYSTEM=="memstick", RUN{builtin}="kmod load ms_block mspro_block" +SUBSYSTEM=="i2o", RUN{builtin}="kmod load i2o_block" SUBSYSTEM=="module", KERNEL=="parport_pc", RUN{builtin}="kmod load ppdev" -KERNEL=="mtd*ro", ENV{MTD_FTL}=="smartmedia", IMPORT{builtin}="kmod load sm_ftl" +KERNEL=="mtd*ro", ENV{MTD_FTL}=="smartmedia", RUN{builtin}="kmod load sm_ftl" LABEL="drivers_end" -- cgit v1.2.1 From 08cbc57e87b19277568c6f7d038c460d9063775f Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Mon, 18 Mar 2013 18:09:46 +0100 Subject: man: udev - clarify when RUN is executed Unlike IMPORT and PROGRAM, RUN is not executed inline, but after all the rules of the given event have been processed. --- man/udev.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/udev.xml b/man/udev.xml index eab525f0f3..e253a0677a 100644 --- a/man/udev.xml +++ b/man/udev.xml @@ -374,8 +374,8 @@ - Add a program to the list of programs to be executed for a specific - device, depending on type: + Add a program to the list of programs to be executed after processing all the + rules for a specific event, depending on type: program -- cgit v1.2.1 From 5a33334b8ad49798510a2ce29e451194c6ecb618 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 18 Mar 2013 19:31:34 +0100 Subject: udev: rename kernel command line option to net.ifnames= --- man/systemd-udevd.service.xml | 7 +++---- rules/80-net-name-slot.rules | 6 ++---- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/man/systemd-udevd.service.xml b/man/systemd-udevd.service.xml index 18734eed1d..77b7374886 100644 --- a/man/systemd-udevd.service.xml +++ b/man/systemd-udevd.service.xml @@ -155,11 +155,10 @@ - net.predictable-names= - rd.net.predictable-names= + net.ifnames= - Rename network interfaces to give them predictable names - when possible. Defaults to 1. + Network interfaces are renamed to give them predictable names + when possible. It is enabled by default, specifying 0 disables it. diff --git a/rules/80-net-name-slot.rules b/rules/80-net-name-slot.rules index e83eb3ff5f..15b5bc4107 100644 --- a/rules/80-net-name-slot.rules +++ b/rules/80-net-name-slot.rules @@ -4,10 +4,8 @@ ACTION=="remove", GOTO="net_name_slot_end" SUBSYSTEM!="net", GOTO="net_name_slot_end" NAME!="", GOTO="net_name_slot_end" -IMPORT{cmdline}="net.predictable-names" -ENV{net.predictable-names}=="0", GOTO="net_name_slot_end" -IMPORT{cmdline}="rd.net.predictable-names" -ENV{rd.net.predictable-names}=="0", TEST=="/etc/initrd-release", GOTO="net_name_slot_end" +IMPORT{cmdline}="net.ifnames" +ENV{net.ifnames}=="0", GOTO="net_name_slot_end" NAME=="", ENV{ID_NET_NAME_ONBOARD}!="", NAME="$env{ID_NET_NAME_ONBOARD}" NAME=="", ENV{ID_NET_NAME_SLOT}!="", NAME="$env{ID_NET_NAME_SLOT}" -- cgit v1.2.1 From 4c325b2efe529379115ca853854062b29b669d11 Mon Sep 17 00:00:00 2001 From: Daniel Buch Date: Sat, 16 Mar 2013 10:00:03 +0100 Subject: test-strv.c: test STRV_FOREACH_PAIR macro --- src/test/test-strv.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/test/test-strv.c b/src/test/test-strv.c index 504415ac0c..2a1c0057ce 100644 --- a/src/test/test-strv.c +++ b/src/test/test-strv.c @@ -233,8 +233,23 @@ static void test_strv_append(void) { assert_se(streq(c[0], "test3")); } +static void test_strv_foreach_pair(void) { + _cleanup_strv_free_ char **a = NULL; + char **x, **y; + + a = strv_new("pair_one", "pair_one", + "pair_two", "pair_two", + "pair_three", "pair_three", + NULL); + + STRV_FOREACH_PAIR(x, y, a) { + assert_se(streq(*x, *y)); + } +} + int main(int argc, char *argv[]) { test_specifier_printf(); + test_strv_foreach_pair(); test_strv_find(); test_strv_find_prefix(); test_strv_join(); -- cgit v1.2.1 From 85b2850ba94a2a0c15239893c446b3db39b36638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 18 Mar 2013 01:12:25 -0400 Subject: systemd-python: allow Reader to be used as a context manager --- src/python-systemd/_reader.c | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 96634a19c3..6759555c12 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -153,6 +153,35 @@ PyDoc_STRVAR(Reader_close__doc__, "See man:sd_journal_close(3)."); static PyObject* Reader_close(Reader *self, PyObject *args) { + assert(self); + assert(!args); + + sd_journal_close(self->j); + self->j = NULL; + Py_RETURN_NONE; +} + +PyDoc_STRVAR(Reader___enter____doc__, + "__enter__() -> self\n\n" + "Part of the context manager protocol.\n" + "Returns self.\n"); +static PyObject* Reader___enter__(PyObject *self, PyObject *args) +{ + assert(self); + assert(!args); + + Py_INCREF(self); + return self; +} + +PyDoc_STRVAR(Reader___exit____doc__, + "__exit__(type, value, traceback) -> None\n\n" + "Part of the context manager protocol.\n" + "Closes the journal.\n"); +static PyObject* Reader___exit__(Reader *self, PyObject *args) +{ + assert(self); + sd_journal_close(self->j); self->j = NULL; Py_RETURN_NONE; @@ -650,6 +679,9 @@ static PyMethodDef Reader_methods[] = { {"fileno", (PyCFunction) Reader_fileno, METH_NOARGS, Reader_fileno__doc__}, {"reliable_fd", (PyCFunction) Reader_reliable_fd, METH_NOARGS, Reader_reliable_fd__doc__}, {"close", (PyCFunction) Reader_close, METH_NOARGS, Reader_close__doc__}, + {"__enter__", (PyCFunction) Reader___enter__, METH_NOARGS, Reader___enter____doc__}, + {"__exit__", (PyCFunction) Reader___exit__, METH_VARARGS, Reader___exit____doc__}, + {"close", (PyCFunction) Reader_close, METH_NOARGS, Reader_close__doc__}, {"get_next", (PyCFunction) Reader_get_next, METH_VARARGS, Reader_get_next__doc__}, {"get_previous", (PyCFunction) Reader_get_previous, METH_VARARGS, Reader_get_previous__doc__}, {"add_match", (PyCFunction) Reader_add_match, METH_VARARGS|METH_KEYWORDS, Reader_add_match__doc__}, -- cgit v1.2.1 From 6180fc611b415e2a26c64658d2ce700f457f4a67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 17 Mar 2013 21:52:57 -0400 Subject: journal: use sd_journal_close on error in sd_journal_new --- src/journal/sd-journal.c | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index fa04bfdfc8..2c5ee3f8f6 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -1568,37 +1568,21 @@ static sd_journal *journal_new(int flags, const char *path) { if (path) { j->path = strdup(path); - if (!j->path) { - free(j); - return NULL; - } + if (!j->path) + goto fail; } j->files = hashmap_new(string_hash_func, string_compare_func); - if (!j->files) { - free(j->path); - free(j); - return NULL; - } - j->directories_by_path = hashmap_new(string_hash_func, string_compare_func); - if (!j->directories_by_path) { - hashmap_free(j->files); - free(j->path); - free(j); - return NULL; - } - j->mmap = mmap_cache_new(); - if (!j->mmap) { - hashmap_free(j->files); - hashmap_free(j->directories_by_path); - free(j->path); - free(j); - return NULL; - } + if (!j->files || !j->directories_by_path || !j->mmap) + goto fail; return j; + +fail: + sd_journal_close(j); + return NULL; } _public_ int sd_journal_open(sd_journal **ret, int flags) { -- cgit v1.2.1 From a50d7d4389217c0d3b527ee260eabf89e4a76caa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 17 Mar 2013 22:00:01 -0400 Subject: journal: use _cleanup_ One log_debug() moved to match order in other functions. --- src/journal/sd-journal.c | 49 ++++++++++++------------------------------------ 1 file changed, 12 insertions(+), 37 deletions(-) diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 2c5ee3f8f6..7ffbaf7cbf 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -1215,7 +1215,7 @@ static void check_network(sd_journal *j, int fd) { } static int add_file(sd_journal *j, const char *prefix, const char *filename) { - char *path; + char _cleanup_free_ *path = NULL; int r; JournalFile *f; @@ -1234,20 +1234,15 @@ static int add_file(sd_journal *j, const char *prefix, const char *filename) { if (!path) return -ENOMEM; - if (hashmap_get(j->files, path)) { - free(path); + if (hashmap_get(j->files, path)) return 0; - } if (hashmap_size(j->files) >= JOURNAL_FILES_MAX) { log_debug("Too many open journal files, not adding %s, ignoring.", path); - free(path); return 0; } r = journal_file_open(path, O_RDONLY, 0, false, false, NULL, j->mmap, NULL, &f); - free(path); - if (r < 0) { if (errno == ENOENT) return 0; @@ -1263,12 +1258,12 @@ static int add_file(sd_journal *j, const char *prefix, const char *filename) { return r; } + log_debug("File %s got added.", f->path); + check_network(j, f->fd); j->current_invalidate_counter ++; - log_debug("File %s got added.", f->path); - return 0; } @@ -1311,9 +1306,9 @@ static int remove_file(sd_journal *j, const char *prefix, const char *filename) } static int add_directory(sd_journal *j, const char *prefix, const char *dirname) { - char *path; + char _cleanup_free_ *path = NULL; int r; - DIR *d; + DIR _cleanup_closedir_ *d = NULL; sd_id128_t id, mid; Directory *m; @@ -1336,8 +1331,6 @@ static int add_directory(sd_journal *j, const char *prefix, const char *dirname) d = opendir(path); if (!d) { log_debug("Failed to open %s: %m", path); - free(path); - if (errno == ENOENT) return 0; return -errno; @@ -1346,32 +1339,24 @@ static int add_directory(sd_journal *j, const char *prefix, const char *dirname) m = hashmap_get(j->directories_by_path, path); if (!m) { m = new0(Directory, 1); - if (!m) { - closedir(d); - free(path); + if (!m) return -ENOMEM; - } m->is_root = false; m->path = path; if (hashmap_put(j->directories_by_path, m->path, m) < 0) { - closedir(d); - free(m->path); free(m); return -ENOMEM; } + path = NULL; /* avoid freeing in cleanup */ j->current_invalidate_counter ++; log_debug("Directory %s got added.", m->path); - } else if (m->is_root) { - free (path); - closedir(d); + } else if (m->is_root) return 0; - } else - free(path); if (m->wd <= 0 && j->inotify_fd >= 0) { @@ -1402,13 +1387,11 @@ static int add_directory(sd_journal *j, const char *prefix, const char *dirname) check_network(j, dirfd(d)); - closedir(d); - return 0; } static int add_root_directory(sd_journal *j, const char *p) { - DIR *d; + DIR _cleanup_closedir_ *d = NULL; Directory *m; int r; @@ -1426,21 +1409,17 @@ static int add_root_directory(sd_journal *j, const char *p) { m = hashmap_get(j->directories_by_path, p); if (!m) { m = new0(Directory, 1); - if (!m) { - closedir(d); + if (!m) return -ENOMEM; - } m->is_root = true; m->path = strdup(p); if (!m->path) { - closedir(d); free(m); return -ENOMEM; } if (hashmap_put(j->directories_by_path, m->path, m) < 0) { - closedir(d); free(m->path); free(m); return -ENOMEM; @@ -1450,10 +1429,8 @@ static int add_root_directory(sd_journal *j, const char *p) { log_debug("Root directory %s got added.", m->path); - } else if (!m->is_root) { - closedir(d); + } else if (!m->is_root) return 0; - } if (m->wd <= 0 && j->inotify_fd >= 0) { @@ -1491,8 +1468,6 @@ static int add_root_directory(sd_journal *j, const char *p) { check_network(j, dirfd(d)); - closedir(d); - return 0; } -- cgit v1.2.1 From 763c7aa288485cf5ab627fe1d25ff58e76f9dacb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 17 Mar 2013 23:36:25 -0400 Subject: journal,shared: add _cleanup_journal_close_ --- src/journal/coredumpctl.c | 14 ++++------- src/journal/journalctl.c | 49 ++++++++++++++++++--------------------- src/journal/journald-server.c | 3 +-- src/journal/test-journal-enum.c | 5 ++-- src/journal/test-journal-match.c | 7 ++---- src/journal/test-journal-stream.c | 10 +++----- src/shared/logs-show.c | 14 ++++------- src/shared/macro.h | 1 + src/shared/util.h | 5 ++++ 9 files changed, 47 insertions(+), 61 deletions(-) diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c index 8bfab0075f..99ca269327 100644 --- a/src/journal/coredumpctl.c +++ b/src/journal/coredumpctl.c @@ -34,6 +34,7 @@ #include "log.h" #include "path-util.h" #include "pager.h" +#include "macro.h" static enum { ACTION_NONE, @@ -42,7 +43,6 @@ static enum { ACTION_GDB, } arg_action = ACTION_LIST; -static Set *matches = NULL; static FILE* output = NULL; static char* field = NULL; @@ -139,7 +139,7 @@ fail: return r; } -static int parse_argv(int argc, char *argv[]) { +static int parse_argv(int argc, char *argv[], Set *matches) { enum { ARG_VERSION = 0x100, ARG_NO_PAGER, @@ -519,10 +519,11 @@ finish: } int main(int argc, char *argv[]) { - sd_journal *j = NULL; + sd_journal _cleanup_journal_close_ *j = NULL; const char* match; Iterator it; int r = 0; + Set _cleanup_set_free_free_ *matches = NULL; setlocale(LC_ALL, ""); log_parse_environment(); @@ -534,7 +535,7 @@ int main(int argc, char *argv[]) { goto end; } - r = parse_argv(argc, argv); + r = parse_argv(argc, argv, matches); if (r < 0) goto end; @@ -578,11 +579,6 @@ int main(int argc, char *argv[]) { } end: - if (j) - sd_journal_close(j); - - set_free_free(matches); - pager_close(); if (output) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 65114b2ff8..a6ad055dc6 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -897,7 +897,7 @@ static int access_check(void) { int main(int argc, char *argv[]) { int r; - sd_journal *j = NULL; + sd_journal _cleanup_journal_close_ *j = NULL; bool need_seek = false; sd_id128_t previous_boot_id; bool previous_boot_id_valid = false, first_line = true; @@ -937,7 +937,7 @@ int main(int argc, char *argv[]) { r = access_check(); if (r < 0) - goto finish; + return EXIT_FAILURE; if (arg_directory) r = sd_journal_open_directory(&j, arg_directory, 0); @@ -945,7 +945,7 @@ int main(int argc, char *argv[]) { r = sd_journal_open(&j, arg_merge ? 0 : SD_JOURNAL_LOCAL_ONLY); if (r < 0) { log_error("Failed to open journal: %s", strerror(-r)); - goto finish; + return EXIT_FAILURE; } if (arg_action == ACTION_VERIFY) { @@ -955,8 +955,7 @@ int main(int argc, char *argv[]) { if (arg_action == ACTION_PRINT_HEADER) { journal_print_header(j); - r = 0; - goto finish; + return EXIT_SUCCESS; } if (arg_action == ACTION_DISK_USAGE) { @@ -965,33 +964,33 @@ int main(int argc, char *argv[]) { r = sd_journal_get_usage(j, &bytes); if (r < 0) - goto finish; + return EXIT_FAILURE; - printf("Journals take up %s on disk.\n", format_bytes(sbytes, sizeof(sbytes), bytes)); - r = 0; - goto finish; + printf("Journals take up %s on disk.\n", + format_bytes(sbytes, sizeof(sbytes), bytes)); + return EXIT_SUCCESS; } r = add_this_boot(j); if (r < 0) - goto finish; + return EXIT_FAILURE; r = add_unit(j); if (r < 0) - goto finish; + return EXIT_FAILURE; r = add_matches(j, argv + optind); if (r < 0) - goto finish; + return EXIT_FAILURE; r = add_priorities(j); if (r < 0) - goto finish; + return EXIT_FAILURE; /* Opening the fd now means the first sd_journal_wait() will actually wait */ r = sd_journal_get_fd(j); if (r < 0) - goto finish; + return EXIT_FAILURE; if (arg_field) { const void *data; @@ -1000,7 +999,7 @@ int main(int argc, char *argv[]) { r = sd_journal_query_unique(j, arg_field); if (r < 0) { log_error("Failed to query unique data objects: %s", strerror(-r)); - goto finish; + return EXIT_FAILURE; } SD_JOURNAL_FOREACH_UNIQUE(j, data, size) { @@ -1018,15 +1017,14 @@ int main(int argc, char *argv[]) { n_shown ++; } - r = 0; - goto finish; + return EXIT_SUCCESS; } if (arg_cursor) { r = sd_journal_seek_cursor(j, arg_cursor); if (r < 0) { log_error("Failed to seek to cursor: %s", strerror(-r)); - goto finish; + return EXIT_FAILURE; } if (!arg_reverse) r = sd_journal_next(j); @@ -1037,7 +1035,7 @@ int main(int argc, char *argv[]) { r = sd_journal_seek_realtime_usec(j, arg_since); if (r < 0) { log_error("Failed to seek to date: %s", strerror(-r)); - goto finish; + return EXIT_FAILURE; } r = sd_journal_next(j); @@ -1045,7 +1043,7 @@ int main(int argc, char *argv[]) { r = sd_journal_seek_realtime_usec(j, arg_until); if (r < 0) { log_error("Failed to seek to date: %s", strerror(-r)); - goto finish; + return EXIT_FAILURE; } r = sd_journal_previous(j); @@ -1053,7 +1051,7 @@ int main(int argc, char *argv[]) { r = sd_journal_seek_tail(j); if (r < 0) { log_error("Failed to seek to tail: %s", strerror(-r)); - goto finish; + return EXIT_FAILURE; } r = sd_journal_previous_skip(j, arg_lines); @@ -1062,7 +1060,7 @@ int main(int argc, char *argv[]) { r = sd_journal_seek_tail(j); if (r < 0) { log_error("Failed to seek to tail: %s", strerror(-r)); - goto finish; + return EXIT_FAILURE; } r = sd_journal_previous(j); @@ -1071,7 +1069,7 @@ int main(int argc, char *argv[]) { r = sd_journal_seek_head(j); if (r < 0) { log_error("Failed to seek to head: %s", strerror(-r)); - goto finish; + return EXIT_FAILURE; } r = sd_journal_next(j); @@ -1079,7 +1077,7 @@ int main(int argc, char *argv[]) { if (r < 0) { log_error("Failed to iterate through journal: %s", strerror(-r)); - goto finish; + return EXIT_FAILURE; } if (!arg_no_pager && !arg_follow) @@ -1189,9 +1187,6 @@ int main(int argc, char *argv[]) { } finish: - if (j) - sd_journal_close(j); - pager_close(); return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 364ab0f113..855430a6ba 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -960,8 +960,7 @@ finish: if (r >= 0) rm_rf("/run/log/journal", false, true, false); - if (j) - sd_journal_close(j); + sd_journal_close(j); return r; } diff --git a/src/journal/test-journal-enum.c b/src/journal/test-journal-enum.c index 8a843ecdda..88f583e6c7 100644 --- a/src/journal/test-journal-enum.c +++ b/src/journal/test-journal-enum.c @@ -23,10 +23,12 @@ #include "log.h" #include "sd-journal.h" +#include "macro.h" +#include "util.h" int main(int argc, char *argv[]) { unsigned n = 0; - sd_journal *j; + sd_journal _cleanup_journal_close_ *j = NULL; log_set_max_level(LOG_DEBUG); @@ -48,6 +50,5 @@ int main(int argc, char *argv[]) { break; } - sd_journal_close(j); return 0; } diff --git a/src/journal/test-journal-match.c b/src/journal/test-journal-match.c index fa228144f5..2ca2337c44 100644 --- a/src/journal/test-journal-match.c +++ b/src/journal/test-journal-match.c @@ -28,8 +28,8 @@ #include "log.h" int main(int argc, char *argv[]) { - sd_journal *j; - char *t; + sd_journal _cleanup_journal_close_ *j; + char _cleanup_free_ *t; log_set_max_level(LOG_DEBUG); @@ -59,9 +59,6 @@ int main(int argc, char *argv[]) { assert_se(streq(t, "((TWO=two AND (ONE=two OR ONE=one)) OR (PIFF=paff AND (QUUX=yyyyy OR QUUX=xxxxx OR QUUX=mmmm) AND (HALLO= OR HALLO=WALDO)))")); printf("resulting match expression is: %s\n", t); - free(t); - - sd_journal_close(j); return 0; } diff --git a/src/journal/test-journal-stream.c b/src/journal/test-journal-stream.c index b3e816db70..4b73ac7906 100644 --- a/src/journal/test-journal-stream.c +++ b/src/journal/test-journal-stream.c @@ -75,7 +75,7 @@ int main(int argc, char *argv[]) { JournalFile *one, *two, *three; char t[] = "/tmp/journal-stream-XXXXXX"; unsigned i; - sd_journal *j; + sd_journal _cleanup_journal_close_ *j = NULL; char *z; const void *data; size_t l; @@ -126,25 +126,23 @@ int main(int argc, char *argv[]) { assert_se(sd_journal_add_match(j, "MAGIC=quux", 0) >= 0); SD_JOURNAL_FOREACH_BACKWARDS(j) { - char *c; + char _cleanup_free_ *c; assert_se(sd_journal_get_data(j, "NUMBER", &data, &l) >= 0); printf("\t%.*s\n", (int) l, (const char*) data); assert_se(sd_journal_get_cursor(j, &c) >= 0); assert_se(sd_journal_test_cursor(j, c) > 0); - free(c); } SD_JOURNAL_FOREACH(j) { - char *c; + char _cleanup_free_ *c; assert_se(sd_journal_get_data(j, "NUMBER", &data, &l) >= 0); printf("\t%.*s\n", (int) l, (const char*) data); assert_se(sd_journal_get_cursor(j, &c) >= 0); assert_se(sd_journal_test_cursor(j, c) > 0); - free(c); } sd_journal_flush_matches(j); @@ -177,8 +175,6 @@ int main(int argc, char *argv[]) { SD_JOURNAL_FOREACH_UNIQUE(j, data, l) printf("%.*s\n", (int) l, (const char*) data); - sd_journal_close(j); - assert_se(rm_rf_dangerous(t, false, true, false) >= 0); return 0; diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 43386841ba..8897a10c2b 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -941,7 +941,7 @@ int show_journal_by_unit( OutputFlags flags, bool system) { - sd_journal *j = NULL; + sd_journal _cleanup_journal_close_ *j = NULL; int r; int jflags = SD_JOURNAL_LOCAL_ONLY | system * SD_JOURNAL_SYSTEM_ONLY; @@ -954,24 +954,20 @@ int show_journal_by_unit( r = sd_journal_open(&j, jflags); if (r < 0) - goto finish; + return r; if (system) r = add_matches_for_unit(j, unit); else r = add_matches_for_user_unit(j, unit, uid); if (r < 0) - goto finish; + return r; r = show_journal(f, j, mode, n_columns, not_before, how_many, flags); if (r < 0) - goto finish; - -finish: - if (j) - sd_journal_close(j); + return r; - return r; + return 0; } static const char *const output_mode_table[_OUTPUT_MODE_MAX] = { diff --git a/src/shared/macro.h b/src/shared/macro.h index 055919048c..90a663b9ce 100644 --- a/src/shared/macro.h +++ b/src/shared/macro.h @@ -203,6 +203,7 @@ static inline size_t IOVEC_INCREMENT(struct iovec *i, unsigned n, size_t k) { #define _cleanup_set_free_ __attribute__((cleanup(set_freep))) #define _cleanup_set_free_free_ __attribute__((cleanup(set_free_freep))) #define _cleanup_strv_free_ __attribute__((cleanup(strv_freep))) +#define _cleanup_journal_close_ __attribute__((cleanup(journal_closep))) #define VA_FORMAT_ADVANCE(format, ap) \ do { \ diff --git a/src/shared/util.h b/src/shared/util.h index 8ac4bbc249..4be0b61773 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -36,6 +36,7 @@ #include #include #include +#include #include "macro.h" #include "time-util.h" @@ -531,6 +532,10 @@ static inline void umaskp(mode_t *u) { umask(*u); } +static inline void journal_closep(sd_journal **j) { + sd_journal_close(*j); +} + _malloc_ static inline void *malloc_multiply(size_t a, size_t b) { if (_unlikely_(b == 0 || a > ((size_t) -1) / b)) return NULL; -- cgit v1.2.1 From 8cb17a6dc88cecfcee3189765031e9e8a1f4106b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 4 Nov 2012 16:19:04 +0100 Subject: sd-journal: do not require path to be absolute Seems natural to be able to specify relative directory, e.g. with journalctl -D. And even if, this should be checked in front-end code, not in the library. --- man/journalctl.xml | 2 +- src/journal/sd-journal.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/man/journalctl.xml b/man/journalctl.xml index 632a8134db..8883da278c 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -437,7 +437,7 @@ - Takes an absolute + Takes a directory path as argument. If specified journalctl will operate on the specified journal directory instead of diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 7ffbaf7cbf..ef4b9b2242 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -1596,7 +1596,7 @@ _public_ int sd_journal_open_directory(sd_journal **ret, const char *path, int f if (!ret) return -EINVAL; - if (!path || !path_is_absolute(path)) + if (!path) return -EINVAL; if (flags != 0) -- cgit v1.2.1 From c6a818c82035da91e7987920510f0dda61d8781a Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Mon, 18 Mar 2013 14:38:24 -0400 Subject: Use bus_maybe_send_reply() where applicable This is a followup to: commit 1a37b9b9043ef83e9900e460a9a1fccced3acf89 It will fix denial messages from dbus-daemon between gdm and systemd-logind on logging into GNOME due to this. See the previous commit for more details. --- src/core/dbus-job.c | 4 ++-- src/core/dbus-manager.c | 2 +- src/core/dbus-snapshot.c | 2 +- src/core/dbus-unit.c | 6 +++--- src/core/dbus.c | 2 +- src/hostname/hostnamed.c | 2 +- src/locale/localed.c | 2 +- src/login/logind-seat-dbus.c | 2 +- src/login/logind-session-dbus.c | 2 +- src/login/logind-user-dbus.c | 2 +- src/timedate/timedated.c | 2 +- 11 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/core/dbus-job.c b/src/core/dbus-job.c index 20c2a62338..096542be39 100644 --- a/src/core/dbus-job.c +++ b/src/core/dbus-job.c @@ -116,7 +116,7 @@ static DBusHandlerResult bus_job_message_dispatch(Job *j, DBusConnection *connec return bus_default_message_handler(connection, message, INTROSPECTION, INTERFACES_LIST, bps); } - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) return DBUS_HANDLER_RESULT_NEED_MEMORY; return DBUS_HANDLER_RESULT_HANDLED; @@ -185,7 +185,7 @@ static DBusHandlerResult bus_job_message_handler(DBusConnection *connection, DBu free(introspection); - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) goto oom; return DBUS_HANDLER_RESULT_HANDLED; diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 8f4bbc59b7..75a341fce1 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -1894,7 +1894,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, } if (reply) - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) goto oom; return DBUS_HANDLER_RESULT_HANDLED; diff --git a/src/core/dbus-snapshot.c b/src/core/dbus-snapshot.c index 02cfcb1829..2ae8574f59 100644 --- a/src/core/dbus-snapshot.c +++ b/src/core/dbus-snapshot.c @@ -77,7 +77,7 @@ DBusHandlerResult bus_snapshot_message_handler(Unit *u, DBusConnection *c, DBusM return bus_default_message_handler(c, message, INTROSPECTION, INTERFACES_LIST, bps); } - if (!dbus_connection_send(c, reply, NULL)) + if (!bus_maybe_send_reply(c, message, reply)) return DBUS_HANDLER_RESULT_NEED_MEMORY; return DBUS_HANDLER_RESULT_HANDLED; diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c index 7c23e1e616..dc7d1f13f0 100644 --- a/src/core/dbus-unit.c +++ b/src/core/dbus-unit.c @@ -582,7 +582,7 @@ static DBusHandlerResult bus_unit_message_dispatch(Unit *u, DBusConnection *conn } if (reply) - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) goto oom; return DBUS_HANDLER_RESULT_HANDLED; @@ -673,7 +673,7 @@ static DBusHandlerResult bus_unit_message_handler(DBusConnection *connection, DB free(introspection); - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) goto oom; return DBUS_HANDLER_RESULT_HANDLED; @@ -886,7 +886,7 @@ DBusHandlerResult bus_unit_queue_job( DBUS_TYPE_INVALID)) goto oom; - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) goto oom; return DBUS_HANDLER_RESULT_HANDLED; diff --git a/src/core/dbus.c b/src/core/dbus.c index 08aff1fd2b..236ebc99d9 100644 --- a/src/core/dbus.c +++ b/src/core/dbus.c @@ -406,7 +406,7 @@ static DBusHandlerResult api_bus_message_filter(DBusConnection *connection, DBus dbus_error_free(&error); if (reply) { - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) goto oom; dbus_message_unref(reply); diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index 979dcfdc7f..25e154b224 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -605,7 +605,7 @@ static DBusHandlerResult hostname_message_handler( if (!reply) goto oom; - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) goto oom; dbus_message_unref(reply); diff --git a/src/locale/localed.c b/src/locale/localed.c index 4f85b8b583..60083b7681 100644 --- a/src/locale/localed.c +++ b/src/locale/localed.c @@ -1277,7 +1277,7 @@ static DBusHandlerResult locale_message_handler( if (!(reply = dbus_message_new_method_return(message))) goto oom; - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) goto oom; dbus_message_unref(reply); diff --git a/src/login/logind-seat-dbus.c b/src/login/logind-seat-dbus.c index 7833d70a03..4da076e369 100644 --- a/src/login/logind-seat-dbus.c +++ b/src/login/logind-seat-dbus.c @@ -310,7 +310,7 @@ static DBusHandlerResult seat_message_dispatch( } if (reply) { - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) goto oom; dbus_message_unref(reply); diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c index ef73cd434a..c4db315530 100644 --- a/src/login/logind-session-dbus.c +++ b/src/login/logind-session-dbus.c @@ -412,7 +412,7 @@ static DBusHandlerResult session_message_dispatch( } if (reply) { - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) goto oom; dbus_message_unref(reply); diff --git a/src/login/logind-user-dbus.c b/src/login/logind-user-dbus.c index ddf9d9d5cf..5951c38cb7 100644 --- a/src/login/logind-user-dbus.c +++ b/src/login/logind-user-dbus.c @@ -304,7 +304,7 @@ static DBusHandlerResult user_message_dispatch( } if (reply) { - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) goto oom; dbus_message_unref(reply); diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index 77534933c3..85506f4fc6 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -889,7 +889,7 @@ static DBusHandlerResult timedate_message_handler( if (!(reply = dbus_message_new_method_return(message))) goto oom; - if (!dbus_connection_send(connection, reply, NULL)) + if (!bus_maybe_send_reply(connection, message, reply)) goto oom; dbus_message_unref(reply); -- cgit v1.2.1 From ce0fc5f5f6debc6e37ac3ab0a3ea1c9c35b3ed99 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Mon, 18 Mar 2013 14:38:48 -0400 Subject: logind: Make more use of cleanup macros --- src/login/inhibit.c | 9 ++------- src/login/loginctl.c | 23 ++++------------------- src/login/logind-dbus.c | 29 +++++++++-------------------- src/login/logind-seat-dbus.c | 22 +++++----------------- src/login/logind-session-dbus.c | 29 +++++++---------------------- src/login/logind-user-dbus.c | 22 +++++----------------- 6 files changed, 32 insertions(+), 102 deletions(-) diff --git a/src/login/inhibit.c b/src/login/inhibit.c index a812195cae..e94843be7f 100644 --- a/src/login/inhibit.c +++ b/src/login/inhibit.c @@ -42,7 +42,7 @@ static enum { } arg_action = ACTION_INHIBIT; static int inhibit(DBusConnection *bus, DBusError *error) { - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; int r; r = bus_method_call_with_reply( @@ -66,13 +66,11 @@ static int inhibit(DBusConnection *bus, DBusError *error) { DBUS_TYPE_INVALID)) r = -EIO; - dbus_message_unref(reply); - return r; } static int print_inhibitors(DBusConnection *bus, DBusError *error) { - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; unsigned n = 0; DBusMessageIter iter, sub, sub2; int r; @@ -139,9 +137,6 @@ static int print_inhibitors(DBusConnection *bus, DBusError *error) { r = 0; finish: - if (reply) - dbus_message_unref(reply); - return r; } diff --git a/src/login/loginctl.c b/src/login/loginctl.c index fe27003a92..387095361d 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -72,7 +72,7 @@ static void polkit_agent_open_if_enabled(void) { } static int list_sessions(DBusConnection *bus, char **args, unsigned n) { - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; int r; DBusMessageIter iter, sub, sub2; unsigned k = 0; @@ -139,14 +139,11 @@ static int list_sessions(DBusConnection *bus, char **args, unsigned n) { r = 0; finish: - if (reply) - dbus_message_unref(reply); - return r; } static int list_users(DBusConnection *bus, char **args, unsigned n) { - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; int r; DBusMessageIter iter, sub, sub2; unsigned k = 0; @@ -211,14 +208,11 @@ static int list_users(DBusConnection *bus, char **args, unsigned n) { r = 0; finish: - if (reply) - dbus_message_unref(reply); - return r; } static int list_seats(DBusConnection *bus, char **args, unsigned n) { - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; int r; DBusMessageIter iter, sub, sub2; unsigned k = 0; @@ -281,9 +275,6 @@ static int list_seats(DBusConnection *bus, char **args, unsigned n) { r = 0; finish: - if (reply) - dbus_message_unref(reply); - return r; } @@ -961,7 +952,7 @@ finish: } static int show(DBusConnection *bus, char **args, unsigned n) { - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; int r, ret = 0; DBusError error; unsigned i; @@ -1048,15 +1039,9 @@ static int show(DBusConnection *bus, char **args, unsigned n) { r = show_one(args[0], bus, path, show_properties, &new_line); if (r != 0) ret = r; - - dbus_message_unref(reply); - reply = NULL; } finish: - if (reply) - dbus_message_unref(reply); - dbus_error_free(&error); return ret; diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 1dcdf04b29..ed2ce97156 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -319,7 +319,7 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message, DBusMess int r; uint32_t vtnr = 0; _cleanup_close_ int fifo_fd = -1; - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; Session *session = NULL; User *user = NULL; Seat *seat = NULL; @@ -536,6 +536,7 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message, DBusMess } *_reply = reply; + reply = NULL; return 0; } @@ -681,6 +682,7 @@ static int bus_manager_create_session(Manager *m, DBusMessage *message, DBusMess } *_reply = reply; + reply = NULL; return 0; @@ -691,9 +693,6 @@ fail: if (user) user_add_to_gc_queue(user); - if (reply) - dbus_message_unref(reply); - return r; } @@ -712,7 +711,7 @@ static int bus_manager_inhibit( InhibitMode mm; unsigned long ul; int r, fifo_fd = -1; - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; assert(m); assert(connection); @@ -833,6 +832,7 @@ static int bus_manager_inhibit( close_nointr_nofail(fifo_fd); *_reply = reply; + reply = NULL; inhibitor_start(i); @@ -845,9 +845,6 @@ fail: if (fifo_fd >= 0) close_nointr_nofail(fifo_fd); - if (reply) - dbus_message_unref(reply); - return r; } @@ -1126,7 +1123,7 @@ static int bus_manager_can_shutdown_or_sleep( bool multiple_sessions, challenge, blocked, b; const char *result; - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; int r; unsigned long ul; @@ -1226,11 +1223,11 @@ finish: DBUS_TYPE_STRING, &result, DBUS_TYPE_INVALID); if (!b) { - dbus_message_unref(reply); return -ENOMEM; } *_reply = reply; + reply = NULL; return 0; } @@ -1430,7 +1427,7 @@ static DBusHandlerResult manager_message_handler( Manager *m = userdata; DBusError error; - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; int r; assert(connection); @@ -2338,16 +2335,11 @@ static DBusHandlerResult manager_message_handler( if (reply) { if (!bus_maybe_send_reply(connection, message, reply)) goto oom; - - dbus_message_unref(reply); } return DBUS_HANDLER_RESULT_HANDLED; oom: - if (reply) - dbus_message_unref(reply); - dbus_error_free(&error); return DBUS_HANDLER_RESULT_NEED_MEMORY; @@ -2413,7 +2405,7 @@ DBusHandlerResult bus_message_filter( } int manager_send_changed(Manager *manager, const char *properties) { - DBusMessage *m; + _cleanup_dbus_message_unref_ DBusMessage *m = NULL; int r = -ENOMEM; assert(manager); @@ -2428,9 +2420,6 @@ int manager_send_changed(Manager *manager, const char *properties) { r = 0; finish: - if (m) - dbus_message_unref(m); - return r; } diff --git a/src/login/logind-seat-dbus.c b/src/login/logind-seat-dbus.c index 4da076e369..585e0c15c3 100644 --- a/src/login/logind-seat-dbus.c +++ b/src/login/logind-seat-dbus.c @@ -260,7 +260,7 @@ static DBusHandlerResult seat_message_dispatch( DBusMessage *message) { DBusError error; - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; int r; assert(s); @@ -312,16 +312,11 @@ static DBusHandlerResult seat_message_dispatch( if (reply) { if (!bus_maybe_send_reply(connection, message, reply)) goto oom; - - dbus_message_unref(reply); } return DBUS_HANDLER_RESULT_HANDLED; oom: - if (reply) - dbus_message_unref(reply); - dbus_error_free(&error); return DBUS_HANDLER_RESULT_NEED_MEMORY; @@ -376,9 +371,9 @@ char *seat_bus_path(Seat *s) { } int seat_send_signal(Seat *s, bool new_seat) { - DBusMessage *m; + _cleanup_dbus_message_unref_ DBusMessage *m = NULL; int r = -ENOMEM; - char *p = NULL; + _cleanup_free_ char *p = NULL; assert(s); @@ -406,16 +401,13 @@ int seat_send_signal(Seat *s, bool new_seat) { r = 0; finish: - dbus_message_unref(m); - free(p); - return r; } int seat_send_changed(Seat *s, const char *properties) { - DBusMessage *m; + _cleanup_dbus_message_unref_ DBusMessage *m = NULL; int r = -ENOMEM; - char *p = NULL; + _cleanup_free_ char *p = NULL; assert(s); @@ -436,9 +428,5 @@ int seat_send_changed(Seat *s, const char *properties) { r = 0; finish: - if (m) - dbus_message_unref(m); - free(p); - return r; } diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c index c4db315530..1f64c44e2a 100644 --- a/src/login/logind-session-dbus.c +++ b/src/login/logind-session-dbus.c @@ -307,7 +307,7 @@ static DBusHandlerResult session_message_dispatch( DBusMessage *message) { DBusError error; - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; int r; assert(s); @@ -414,16 +414,11 @@ static DBusHandlerResult session_message_dispatch( if (reply) { if (!bus_maybe_send_reply(connection, message, reply)) goto oom; - - dbus_message_unref(reply); } return DBUS_HANDLER_RESULT_HANDLED; oom: - if (reply) - dbus_message_unref(reply); - dbus_error_free(&error); return DBUS_HANDLER_RESULT_NEED_MEMORY; @@ -478,9 +473,9 @@ char *session_bus_path(Session *s) { } int session_send_signal(Session *s, bool new_session) { - DBusMessage *m; + _cleanup_dbus_message_unref_ DBusMessage *m = NULL; int r = -ENOMEM; - char *p = NULL; + _cleanup_free_ char *p = NULL; assert(s); @@ -508,16 +503,13 @@ int session_send_signal(Session *s, bool new_session) { r = 0; finish: - dbus_message_unref(m); - free(p); - return r; } int session_send_changed(Session *s, const char *properties) { - DBusMessage *m; + _cleanup_dbus_message_unref_ DBusMessage *m = NULL; int r = -ENOMEM; - char *p = NULL; + _cleanup_free_ char *p = NULL; assert(s); @@ -538,17 +530,13 @@ int session_send_changed(Session *s, const char *properties) { r = 0; finish: - if (m) - dbus_message_unref(m); - free(p); - return r; } int session_send_lock(Session *s, bool lock) { - DBusMessage *m; + _cleanup_dbus_message_unref_ DBusMessage *m = NULL; bool b; - char *p; + _cleanup_free_ char *p = NULL; assert(s); @@ -557,14 +545,11 @@ int session_send_lock(Session *s, bool lock) { return -ENOMEM; m = dbus_message_new_signal(p, "org.freedesktop.login1.Session", lock ? "Lock" : "Unlock"); - free(p); if (!m) return -ENOMEM; b = dbus_connection_send(s->manager->bus, m, NULL); - dbus_message_unref(m); - if (!b) return -ENOMEM; diff --git a/src/login/logind-user-dbus.c b/src/login/logind-user-dbus.c index 5951c38cb7..32f4062ac5 100644 --- a/src/login/logind-user-dbus.c +++ b/src/login/logind-user-dbus.c @@ -257,7 +257,7 @@ static DBusHandlerResult user_message_dispatch( DBusMessage *message) { DBusError error; - DBusMessage *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; int r; assert(u); @@ -306,16 +306,11 @@ static DBusHandlerResult user_message_dispatch( if (reply) { if (!bus_maybe_send_reply(connection, message, reply)) goto oom; - - dbus_message_unref(reply); } return DBUS_HANDLER_RESULT_HANDLED; oom: - if (reply) - dbus_message_unref(reply); - dbus_error_free(&error); return DBUS_HANDLER_RESULT_NEED_MEMORY; @@ -366,9 +361,9 @@ char *user_bus_path(User *u) { } int user_send_signal(User *u, bool new_user) { - DBusMessage *m; + _cleanup_dbus_message_unref_ DBusMessage *m = NULL; int r = -ENOMEM; - char *p = NULL; + _cleanup_free_ char *p = NULL; uint32_t uid; assert(u); @@ -399,16 +394,13 @@ int user_send_signal(User *u, bool new_user) { r = 0; finish: - dbus_message_unref(m); - free(p); - return r; } int user_send_changed(User *u, const char *properties) { - DBusMessage *m; + _cleanup_dbus_message_unref_ DBusMessage *m = NULL; int r = -ENOMEM; - char *p = NULL; + _cleanup_free_ char *p = NULL; assert(u); @@ -429,9 +421,5 @@ int user_send_changed(User *u, const char *properties) { r = 0; finish: - if (m) - dbus_message_unref(m); - free(p); - return r; } -- cgit v1.2.1 From 4654e558a3c297a71f05c3b2db6a2744fcf3cdea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 18 Mar 2013 20:31:21 -0400 Subject: logind: exploit previous cleanups and simplify returns --- src/login/inhibit.c | 38 ++---- src/login/loginctl.c | 263 ++++++++++++++++++---------------------- src/login/logind-dbus.c | 26 ++-- src/login/logind-seat-dbus.c | 46 ++----- src/login/logind-session-dbus.c | 47 ++----- src/login/logind-user-dbus.c | 34 ++---- 6 files changed, 178 insertions(+), 276 deletions(-) diff --git a/src/login/inhibit.c b/src/login/inhibit.c index e94843be7f..9cb321fc8f 100644 --- a/src/login/inhibit.c +++ b/src/login/inhibit.c @@ -64,7 +64,7 @@ static int inhibit(DBusConnection *bus, DBusError *error) { if (!dbus_message_get_args(reply, error, DBUS_TYPE_UNIX_FD, &r, DBUS_TYPE_INVALID)) - r = -EIO; + return -EIO; return r; } @@ -85,27 +85,21 @@ static int print_inhibitors(DBusConnection *bus, DBusError *error) { NULL, DBUS_TYPE_INVALID); if (r < 0) - goto finish; + return r; - if (!dbus_message_iter_init(reply, &iter)) { - r = -ENOMEM; - goto finish; - } + if (!dbus_message_iter_init(reply, &iter)) + return -ENOMEM; - if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY) { - r = -EIO; - goto finish; - } + if (dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY) + return -EIO; dbus_message_iter_recurse(&iter, &sub); while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { const char *what, *who, *why, *mode; dbus_uint32_t uid, pid; - if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) { - r = -EIO; - goto finish; - } + if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) + return -EIO; dbus_message_iter_recurse(&sub, &sub2); @@ -114,10 +108,8 @@ static int print_inhibitors(DBusConnection *bus, DBusError *error) { bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &why, true) < 0 || bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &mode, true) < 0 || bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_UINT32, &uid, true) < 0 || - bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_UINT32, &pid, false) < 0) { - r = -EIO; - goto finish; - } + bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_UINT32, &pid, false) < 0) + return -EIO; printf(" Who: %s (UID %lu, PID %lu)\n" " What: %s\n" @@ -134,10 +126,7 @@ static int print_inhibitors(DBusConnection *bus, DBusError *error) { } printf("%u inhibitors listed.\n", n); - r = 0; - -finish: - return r; + return 0; } static int help(void) { @@ -240,7 +229,7 @@ int main(int argc, char *argv[]) { int r, exit_code = 0; DBusConnection *bus = NULL; DBusError error; - int fd = -1; + int _cleanup_close_ fd = -1; dbus_error_init(&error); @@ -313,8 +302,5 @@ finish: dbus_error_free(&error); - if (fd >= 0) - close_nointr_nofail(fd); - return r < 0 ? EXIT_FAILURE : exit_code; } diff --git a/src/login/loginctl.c b/src/login/loginctl.c index 387095361d..6c229c64e3 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -89,14 +89,13 @@ static int list_sessions(DBusConnection *bus, char **args, unsigned n) { NULL, DBUS_TYPE_INVALID); if (r) - goto finish; + return r; if (!dbus_message_iter_init(reply, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&iter, &sub); @@ -110,8 +109,7 @@ static int list_sessions(DBusConnection *bus, char **args, unsigned n) { if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&sub, &sub2); @@ -122,8 +120,7 @@ static int list_sessions(DBusConnection *bus, char **args, unsigned n) { bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &seat, true) < 0 || bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &object, false) < 0) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } printf("%10s %10u %-16s %-16s\n", id, (unsigned) uid, user, seat); @@ -136,10 +133,7 @@ static int list_sessions(DBusConnection *bus, char **args, unsigned n) { if (on_tty()) printf("\n%u sessions listed.\n", k); - r = 0; - -finish: - return r; + return 0; } static int list_users(DBusConnection *bus, char **args, unsigned n) { @@ -160,14 +154,13 @@ static int list_users(DBusConnection *bus, char **args, unsigned n) { NULL, DBUS_TYPE_INVALID); if (r) - goto finish; + return r; if (!dbus_message_iter_init(reply, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&iter, &sub); @@ -181,8 +174,7 @@ static int list_users(DBusConnection *bus, char **args, unsigned n) { if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&sub, &sub2); @@ -191,8 +183,7 @@ static int list_users(DBusConnection *bus, char **args, unsigned n) { bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &user, true) < 0 || bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &object, false) < 0) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } printf("%10u %-16s\n", (unsigned) uid, user); @@ -205,10 +196,7 @@ static int list_users(DBusConnection *bus, char **args, unsigned n) { if (on_tty()) printf("\n%u users listed.\n", k); - r = 0; - -finish: - return r; + return 0; } static int list_seats(DBusConnection *bus, char **args, unsigned n) { @@ -229,14 +217,13 @@ static int list_seats(DBusConnection *bus, char **args, unsigned n) { NULL, DBUS_TYPE_INVALID); if (r) - goto finish; + return r; if (!dbus_message_iter_init(reply, &iter) || dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&iter, &sub); @@ -249,8 +236,7 @@ static int list_seats(DBusConnection *bus, char **args, unsigned n) { if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } dbus_message_iter_recurse(&sub, &sub2); @@ -258,8 +244,7 @@ static int list_seats(DBusConnection *bus, char **args, unsigned n) { if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &seat, true) < 0 || bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_OBJECT_PATH, &object, false) < 0) { log_error("Failed to parse reply."); - r = -EIO; - goto finish; + return -EIO; } printf("%-16s\n", seat); @@ -272,10 +257,7 @@ static int list_seats(DBusConnection *bus, char **args, unsigned n) { if (on_tty()) printf("\n%u seats listed.\n", k); - r = 0; - -finish: - return r; + return 0; } typedef struct SessionStatusInfo { @@ -1077,7 +1059,6 @@ finish: } static int kill_session(DBusConnection *bus, char **args, unsigned n) { - int ret = 0; unsigned i; assert(args); @@ -1086,28 +1067,28 @@ static int kill_session(DBusConnection *bus, char **args, unsigned n) { arg_kill_who = "all"; for (i = 1; i < n; i++) { - ret = bus_method_call_with_reply ( - bus, - "org.freedesktop.login1", - "/org/freedesktop/login1", - "org.freedesktop.login1.Manager", - "KillSession", - NULL, - NULL, - DBUS_TYPE_STRING, &args[i], - DBUS_TYPE_STRING, &arg_kill_who, - DBUS_TYPE_INT32, &arg_signal, - DBUS_TYPE_INVALID); - if (ret) - goto finish; + int r; + + r = bus_method_call_with_reply ( + bus, + "org.freedesktop.login1", + "/org/freedesktop/login1", + "org.freedesktop.login1.Manager", + "KillSession", + NULL, + NULL, + DBUS_TYPE_STRING, &args[i], + DBUS_TYPE_STRING, &arg_kill_who, + DBUS_TYPE_INT32, &arg_signal, + DBUS_TYPE_INVALID); + if (r) + return r; } -finish: - return ret; + return 0; } static int enable_linger(DBusConnection *bus, char **args, unsigned n) { - int ret = 0; unsigned i; dbus_bool_t b, interactive = true; @@ -1120,36 +1101,35 @@ static int enable_linger(DBusConnection *bus, char **args, unsigned n) { for (i = 1; i < n; i++) { uint32_t u; uid_t uid; + int r; - ret = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL); - if (ret < 0) { - log_error("Failed to resolve user %s: %s", args[i], strerror(-ret)); - goto finish; + r = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL); + if (r < 0) { + log_error("Failed to resolve user %s: %s", args[i], strerror(-r)); + return r; } u = (uint32_t) uid; - ret = bus_method_call_with_reply ( - bus, - "org.freedesktop.login1", - "/org/freedesktop/login1", - "org.freedesktop.login1.Manager", - "SetUserLinger", - NULL, - NULL, - DBUS_TYPE_UINT32, &u, - DBUS_TYPE_BOOLEAN, &b, - DBUS_TYPE_BOOLEAN, &interactive, - DBUS_TYPE_INVALID); - if (ret) - goto finish; + r = bus_method_call_with_reply ( + bus, + "org.freedesktop.login1", + "/org/freedesktop/login1", + "org.freedesktop.login1.Manager", + "SetUserLinger", + NULL, + NULL, + DBUS_TYPE_UINT32, &u, + DBUS_TYPE_BOOLEAN, &b, + DBUS_TYPE_BOOLEAN, &interactive, + DBUS_TYPE_INVALID); + if (r) + return r; } -finish: - return ret; + return 0; } static int terminate_user(DBusConnection *bus, char **args, unsigned n) { - int ret = 0; unsigned i; assert(args); @@ -1157,34 +1137,33 @@ static int terminate_user(DBusConnection *bus, char **args, unsigned n) { for (i = 1; i < n; i++) { uint32_t u; uid_t uid; + int r; - ret = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL); - if (ret < 0) { - log_error("Failed to look up user %s: %s", args[i], strerror(-ret)); - goto finish; + r = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL); + if (r < 0) { + log_error("Failed to look up user %s: %s", args[i], strerror(-r)); + return r; } u = (uint32_t) uid; - ret = bus_method_call_with_reply ( - bus, - "org.freedesktop.login1", - "/org/freedesktop/login1", - "org.freedesktop.login1.Manager", - "TerminateUser", - NULL, - NULL, - DBUS_TYPE_UINT32, &u, - DBUS_TYPE_INVALID); - if (ret) - goto finish; + r = bus_method_call_with_reply ( + bus, + "org.freedesktop.login1", + "/org/freedesktop/login1", + "org.freedesktop.login1.Manager", + "TerminateUser", + NULL, + NULL, + DBUS_TYPE_UINT32, &u, + DBUS_TYPE_INVALID); + if (r) + return r; } -finish: - return ret; + return 0; } static int kill_user(DBusConnection *bus, char **args, unsigned n) { - int ret = 0; unsigned i; assert(args); @@ -1195,35 +1174,34 @@ static int kill_user(DBusConnection *bus, char **args, unsigned n) { for (i = 1; i < n; i++) { uid_t uid; uint32_t u; + int r; - ret = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL); - if (ret < 0) { - log_error("Failed to look up user %s: %s", args[i], strerror(-ret)); - goto finish; + r = get_user_creds((const char**) (args+i), &uid, NULL, NULL, NULL); + if (r < 0) { + log_error("Failed to look up user %s: %s", args[i], strerror(-r)); + return r; } u = (uint32_t) uid; - ret = bus_method_call_with_reply ( - bus, - "org.freedesktop.login1", - "/org/freedesktop/login1", - "org.freedesktop.login1.Manager", - "KillUser", - NULL, - NULL, - DBUS_TYPE_UINT32, &u, - DBUS_TYPE_INT32, &arg_signal, - DBUS_TYPE_INVALID); - if (ret) - goto finish; + r = bus_method_call_with_reply ( + bus, + "org.freedesktop.login1", + "/org/freedesktop/login1", + "org.freedesktop.login1.Manager", + "KillUser", + NULL, + NULL, + DBUS_TYPE_UINT32, &u, + DBUS_TYPE_INT32, &arg_signal, + DBUS_TYPE_INVALID); + if (r) + return r; } -finish: - return ret; + return 0; } static int attach(DBusConnection *bus, char **args, unsigned n) { - int ret = 0; unsigned i; dbus_bool_t interactive = true; @@ -1232,24 +1210,25 @@ static int attach(DBusConnection *bus, char **args, unsigned n) { polkit_agent_open_if_enabled(); for (i = 2; i < n; i++) { - ret = bus_method_call_with_reply ( - bus, - "org.freedesktop.login1", - "/org/freedesktop/login1", - "org.freedesktop.login1.Manager", - "AttachDevice", - NULL, - NULL, - DBUS_TYPE_STRING, &args[1], - DBUS_TYPE_STRING, &args[i], - DBUS_TYPE_BOOLEAN, &interactive, - DBUS_TYPE_INVALID); - if (ret) - goto finish; + int r; + + r = bus_method_call_with_reply ( + bus, + "org.freedesktop.login1", + "/org/freedesktop/login1", + "org.freedesktop.login1.Manager", + "AttachDevice", + NULL, + NULL, + DBUS_TYPE_STRING, &args[1], + DBUS_TYPE_STRING, &args[i], + DBUS_TYPE_BOOLEAN, &interactive, + DBUS_TYPE_INVALID); + if (r) + return r; } -finish: - return ret; + return 0; } static int flush_devices(DBusConnection *bus, char **args, unsigned n) { @@ -1288,28 +1267,28 @@ static int lock_sessions(DBusConnection *bus, char **args, unsigned n) { } static int terminate_seat(DBusConnection *bus, char **args, unsigned n) { - int ret = 0; unsigned i; assert(args); for (i = 1; i < n; i++) { - ret = bus_method_call_with_reply ( - bus, - "org.freedesktop.login1", - "/org/freedesktop/login1", - "org.freedesktop.login1.Manager", - "TerminateSeat", - NULL, - NULL, - DBUS_TYPE_STRING, &args[i], - DBUS_TYPE_INVALID); - if (ret) - goto finish; + int r; + + r = bus_method_call_with_reply ( + bus, + "org.freedesktop.login1", + "/org/freedesktop/login1", + "org.freedesktop.login1.Manager", + "TerminateSeat", + NULL, + NULL, + DBUS_TYPE_STRING, &args[i], + DBUS_TYPE_INVALID); + if (r) + return r; } -finish: - return ret; + return 0; } static int help(void) { diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index ed2ce97156..4ae8362211 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -901,7 +901,7 @@ finish: static int attach_device(Manager *m, const char *seat, const char *sysfs) { struct udev_device *d; - char *rule = NULL, *file = NULL; + char _cleanup_free_ *rule = NULL, *file = NULL; const char *id_for_seat; int r; @@ -943,9 +943,6 @@ static int attach_device(Manager *m, const char *seat, const char *sysfs) { r = trigger_device(m, d); finish: - free(rule); - free(file); - if (d) udev_device_unref(d); @@ -953,7 +950,7 @@ finish: } static int flush_devices(Manager *m) { - DIR *d; + DIR _cleanup_closedir_ *d; assert(m); @@ -978,8 +975,6 @@ static int flush_devices(Manager *m) { if (unlinkat(dirfd(d), de->d_name, 0) < 0) log_warning("Failed to unlink %s: %m", de->d_name); } - - closedir(d); } return trigger_device(m, NULL); @@ -1222,9 +1217,8 @@ finish: reply, DBUS_TYPE_STRING, &result, DBUS_TYPE_INVALID); - if (!b) { + if (!b) return -ENOMEM; - } *_reply = reply; reply = NULL; @@ -2406,21 +2400,19 @@ DBusHandlerResult bus_message_filter( int manager_send_changed(Manager *manager, const char *properties) { _cleanup_dbus_message_unref_ DBusMessage *m = NULL; - int r = -ENOMEM; assert(manager); - m = bus_properties_changed_new("/org/freedesktop/login1", "org.freedesktop.login1.Manager", properties); + m = bus_properties_changed_new("/org/freedesktop/login1", + "org.freedesktop.login1.Manager", + properties); if (!m) - goto finish; + return -ENOMEM; if (!dbus_connection_send(manager->bus, m, NULL)) - goto finish; - - r = 0; + return -ENOMEM; -finish: - return r; + return 0; } int manager_dispatch_delayed(Manager *manager) { diff --git a/src/login/logind-seat-dbus.c b/src/login/logind-seat-dbus.c index 585e0c15c3..82f25a0d1c 100644 --- a/src/login/logind-seat-dbus.c +++ b/src/login/logind-seat-dbus.c @@ -61,7 +61,7 @@ static int bus_seat_append_active(DBusMessageIter *i, const char *property, void DBusMessageIter sub; Seat *s = data; const char *id, *path; - char *p = NULL; + char _cleanup_free_ *p = NULL; assert(i); assert(property); @@ -82,12 +82,8 @@ static int bus_seat_append_active(DBusMessageIter *i, const char *property, void } if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &id) || - !dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &path)) { - free(p); + !dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &path)) return -ENOMEM; - } - - free(p); if (!dbus_message_iter_close_container(i, &sub)) return -ENOMEM; @@ -108,7 +104,7 @@ static int bus_seat_append_sessions(DBusMessageIter *i, const char *property, vo return -ENOMEM; LIST_FOREACH(sessions_by_seat, session, s->sessions) { - char *p; + char _cleanup_free_ *p = NULL; if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2)) return -ENOMEM; @@ -118,12 +114,8 @@ static int bus_seat_append_sessions(DBusMessageIter *i, const char *property, vo return -ENOMEM; if (!dbus_message_iter_append_basic(&sub2, DBUS_TYPE_STRING, &session->id) || - !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_OBJECT_PATH, &p)) { - free(p); + !dbus_message_iter_append_basic(&sub2, DBUS_TYPE_OBJECT_PATH, &p)) return -ENOMEM; - } - - free(p); if (!dbus_message_iter_close_container(&sub, &sub2)) return -ENOMEM; @@ -356,7 +348,7 @@ const DBusObjectPathVTable bus_seat_vtable = { }; char *seat_bus_path(Seat *s) { - char *t, *r; + char _cleanup_free_ *t; assert(s); @@ -364,15 +356,11 @@ char *seat_bus_path(Seat *s) { if (!t) return NULL; - r = strappend("/org/freedesktop/login1/seat/", t); - free(t); - - return r; + return strappend("/org/freedesktop/login1/seat/", t); } int seat_send_signal(Seat *s, bool new_seat) { _cleanup_dbus_message_unref_ DBusMessage *m = NULL; - int r = -ENOMEM; _cleanup_free_ char *p = NULL; assert(s); @@ -380,33 +368,28 @@ int seat_send_signal(Seat *s, bool new_seat) { m = dbus_message_new_signal("/org/freedesktop/login1", "org.freedesktop.login1.Manager", new_seat ? "SeatNew" : "SeatRemoved"); - if (!m) return -ENOMEM; p = seat_bus_path(s); if (!p) - goto finish; + return -ENOMEM; if (!dbus_message_append_args( m, DBUS_TYPE_STRING, &s->id, DBUS_TYPE_OBJECT_PATH, &p, DBUS_TYPE_INVALID)) - goto finish; + return -ENOMEM; if (!dbus_connection_send(s->manager->bus, m, NULL)) - goto finish; - - r = 0; + return -ENOMEM; -finish: - return r; + return 0; } int seat_send_changed(Seat *s, const char *properties) { _cleanup_dbus_message_unref_ DBusMessage *m = NULL; - int r = -ENOMEM; _cleanup_free_ char *p = NULL; assert(s); @@ -420,13 +403,10 @@ int seat_send_changed(Seat *s, const char *properties) { m = bus_properties_changed_new(p, "org.freedesktop.login1.Seat", properties); if (!m) - goto finish; + return -ENOMEM; if (!dbus_connection_send(s->manager->bus, m, NULL)) - goto finish; - - r = 0; + return -ENOMEM; -finish: - return r; + return 0; } diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c index 1f64c44e2a..0e425e48d3 100644 --- a/src/login/logind-session-dbus.c +++ b/src/login/logind-session-dbus.c @@ -108,12 +108,8 @@ static int bus_session_append_seat(DBusMessageIter *i, const char *property, voi } if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &id) || - !dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &path)) { - free(p); + !dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &path)) return -ENOMEM; - } - - free(p); if (!dbus_message_iter_close_container(i, &sub)) return -ENOMEM; @@ -124,7 +120,7 @@ static int bus_session_append_seat(DBusMessageIter *i, const char *property, voi static int bus_session_append_user(DBusMessageIter *i, const char *property, void *data) { DBusMessageIter sub; User *u = data; - char *p = NULL; + char _cleanup_free_ *p = NULL; assert(i); assert(property); @@ -138,12 +134,8 @@ static int bus_session_append_user(DBusMessageIter *i, const char *property, voi return -ENOMEM; if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_UINT32, &u->uid) || - !dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &p)) { - free(p); + !dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &p)) return -ENOMEM; - } - - free(p); if (!dbus_message_iter_close_container(i, &sub)) return -ENOMEM; @@ -205,7 +197,7 @@ static int bus_session_append_idle_hint_since(DBusMessageIter *i, const char *pr static int bus_session_append_default_cgroup(DBusMessageIter *i, const char *property, void *data) { Session *s = data; - char *t; + char _cleanup_free_ *t = NULL; int r; bool success; @@ -218,8 +210,6 @@ static int bus_session_append_default_cgroup(DBusMessageIter *i, const char *pro return r; success = dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &t); - free(t); - return success ? 0 : -ENOMEM; } @@ -458,7 +448,7 @@ const DBusObjectPathVTable bus_session_vtable = { }; char *session_bus_path(Session *s) { - char *t, *r; + char _cleanup_free_ *t; assert(s); @@ -466,15 +456,11 @@ char *session_bus_path(Session *s) { if (!t) return NULL; - r = strappend("/org/freedesktop/login1/session/", t); - free(t); - - return r; + return strappend("/org/freedesktop/login1/session/", t); } int session_send_signal(Session *s, bool new_session) { _cleanup_dbus_message_unref_ DBusMessage *m = NULL; - int r = -ENOMEM; _cleanup_free_ char *p = NULL; assert(s); @@ -488,27 +474,23 @@ int session_send_signal(Session *s, bool new_session) { p = session_bus_path(s); if (!p) - goto finish; + return -ENOMEM; if (!dbus_message_append_args( m, DBUS_TYPE_STRING, &s->id, DBUS_TYPE_OBJECT_PATH, &p, DBUS_TYPE_INVALID)) - goto finish; + return -ENOMEM; if (!dbus_connection_send(s->manager->bus, m, NULL)) - goto finish; - - r = 0; + return -ENOMEM; -finish: - return r; + return 0; } int session_send_changed(Session *s, const char *properties) { _cleanup_dbus_message_unref_ DBusMessage *m = NULL; - int r = -ENOMEM; _cleanup_free_ char *p = NULL; assert(s); @@ -522,15 +504,12 @@ int session_send_changed(Session *s, const char *properties) { m = bus_properties_changed_new(p, "org.freedesktop.login1.Session", properties); if (!m) - goto finish; + return -ENOMEM; if (!dbus_connection_send(s->manager->bus, m, NULL)) - goto finish; - - r = 0; + return -ENOMEM; -finish: - return r; + return 0; } int session_send_lock(Session *s, bool lock) { diff --git a/src/login/logind-user-dbus.c b/src/login/logind-user-dbus.c index 32f4062ac5..8cc1dd49fd 100644 --- a/src/login/logind-user-dbus.c +++ b/src/login/logind-user-dbus.c @@ -65,7 +65,7 @@ static int bus_user_append_display(DBusMessageIter *i, const char *property, voi DBusMessageIter sub; User *u = data; const char *id, *path; - char *p = NULL; + char _cleanup_free_ *p = NULL; assert(i); assert(property); @@ -86,12 +86,8 @@ static int bus_user_append_display(DBusMessageIter *i, const char *property, voi } if (!dbus_message_iter_append_basic(&sub, DBUS_TYPE_STRING, &id) || - !dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &path)) { - free(p); + !dbus_message_iter_append_basic(&sub, DBUS_TYPE_OBJECT_PATH, &path)) return -ENOMEM; - } - - free(p); if (!dbus_message_iter_close_container(i, &sub)) return -ENOMEM; @@ -191,7 +187,7 @@ static int bus_user_append_idle_hint_since(DBusMessageIter *i, const char *prope static int bus_user_append_default_cgroup(DBusMessageIter *i, const char *property, void *data) { User *u = data; - char *t; + char _cleanup_free_ *t = NULL; int r; bool success; @@ -204,8 +200,6 @@ static int bus_user_append_default_cgroup(DBusMessageIter *i, const char *proper return r; success = dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &t); - free(t); - return success ? 0 : -ENOMEM; } @@ -362,7 +356,6 @@ char *user_bus_path(User *u) { int user_send_signal(User *u, bool new_user) { _cleanup_dbus_message_unref_ DBusMessage *m = NULL; - int r = -ENOMEM; _cleanup_free_ char *p = NULL; uint32_t uid; @@ -377,7 +370,7 @@ int user_send_signal(User *u, bool new_user) { p = user_bus_path(u); if (!p) - goto finish; + return -ENOMEM; uid = u->uid; @@ -386,20 +379,16 @@ int user_send_signal(User *u, bool new_user) { DBUS_TYPE_UINT32, &uid, DBUS_TYPE_OBJECT_PATH, &p, DBUS_TYPE_INVALID)) - goto finish; + return -ENOMEM; if (!dbus_connection_send(u->manager->bus, m, NULL)) - goto finish; - - r = 0; + return -ENOMEM; -finish: - return r; + return 0; } int user_send_changed(User *u, const char *properties) { _cleanup_dbus_message_unref_ DBusMessage *m = NULL; - int r = -ENOMEM; _cleanup_free_ char *p = NULL; assert(u); @@ -413,13 +402,10 @@ int user_send_changed(User *u, const char *properties) { m = bus_properties_changed_new(p, "org.freedesktop.login1.User", properties); if (!m) - goto finish; + return -ENOMEM; if (!dbus_connection_send(u->manager->bus, m, NULL)) - goto finish; - - r = 0; + return -ENOMEM; -finish: - return r; + return 0; } -- cgit v1.2.1 From 785af213b6c94b7a66b2fd7de360c2b4a9b9de30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ozan=20=C3=87a=C4=9Flayan?= Date: Tue, 19 Mar 2013 11:34:57 +0200 Subject: keymap: Fix touchpad toggling on Lenovo IdeaPad U300s IdeaPad U300s needs mapping 0xf1 to f21 just like Lenovo V480. Signed-off-by: Martin Pitt --- src/udev/keymap/95-keymap.rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/udev/keymap/95-keymap.rules b/src/udev/keymap/95-keymap.rules index a13063e1b3..a52e25d760 100644 --- a/src/udev/keymap/95-keymap.rules +++ b/src/udev/keymap/95-keymap.rules @@ -85,7 +85,7 @@ ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="ThinkPad X2* Tablet* ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="*IdeaPad*", RUN+="keymap $name lenovo-ideapad" ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_name}=="S10-*", RUN+="keymap $name lenovo-ideapad" ENV{DMI_VENDOR}=="LENOVO", ATTR{[dmi/id]product_version}=="*IdeaPad Y550*", RUN+="keymap $name 0x95 media 0xA3 play" -ENV{DMI_VENDOR}=="LENOVO", ATTR{[dmi/id]product_version}=="*Lenovo V480*", RUN+="keymap $name 0xf1 f21" +ENV{DMI_VENDOR}=="LENOVO", ATTR{[dmi/id]product_version}=="*Lenovo V480*|*IdeaPad U300s*", RUN+="keymap $name 0xf1 f21" ENV{DMI_VENDOR}=="Hewlett-Packard*", RUN+="keymap $name hewlett-packard" ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*[tT][aA][bB][lL][eE][tT]*", RUN+="keymap $name hewlett-packard-tablet" -- cgit v1.2.1 From 1563c0c35a8005f5b71f04abe32c95d849efb420 Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Tue, 19 Mar 2013 13:10:29 +0100 Subject: keymaps: Use F20 for micmute keys to be friendly to X.org The "micmute" key code is outside of X.org's allowed range [1]. gnome-settings-daemon interprets F20 as "microphone mute" these days [2], so use this until X.org either gets fixed or obsoleted. [1] https://bugzilla.gnome.org/show_bug.cgi?id=692071 [2] https://mail.gnome.org/archives/commits-list/2013-January/msg05822.html --- keymaps/lenovo-thinkpad-usb-keyboard-trackpoint | 2 +- keymaps/module-lenovo | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keymaps/lenovo-thinkpad-usb-keyboard-trackpoint b/keymaps/lenovo-thinkpad-usb-keyboard-trackpoint index 47e8846a68..d87549e445 100644 --- a/keymaps/lenovo-thinkpad-usb-keyboard-trackpoint +++ b/keymaps/lenovo-thinkpad-usb-keyboard-trackpoint @@ -10,4 +10,4 @@ 0x90011 prog1 # Thinkvantage button 0x90015 camera # Fn+F6 headset/camera VoIP key ?? -0x90010 micmute # Microphone mute button +0x90010 f20 # Microphone mute button; should be micmute, but see https://mail.gnome.org/archives/commits-list/2013-January/msg05822.html diff --git a/keymaps/module-lenovo b/keymaps/module-lenovo index 8e38883091..573a6a774b 100644 --- a/keymaps/module-lenovo +++ b/keymaps/module-lenovo @@ -14,4 +14,4 @@ 0x15 volumedown 0x16 mute 0x17 prog1 # ThinkPad/ThinkVantage button (high keycode: "vendor") -0x1A micmute # Microphone mute +0x1A f20 # Microphone mute button; should be micmute, but see https://mail.gnome.org/archives/commits-list/2013-January/msg05822.html -- cgit v1.2.1 From 278e73d6b74f1db24d56576162850a0772fd25a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ozan=20=C3=87a=C4=9Flayan?= Date: Tue, 19 Mar 2013 15:49:30 +0200 Subject: keymap: Remap microphone mute and touchpad toggle for Lenovo U300s Separate out Ideapad U300s to its own line and add Microphone mute key. Signed-off-by: Martin Pitt --- src/udev/keymap/95-keymap.rules | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/udev/keymap/95-keymap.rules b/src/udev/keymap/95-keymap.rules index a52e25d760..f2a9130d36 100644 --- a/src/udev/keymap/95-keymap.rules +++ b/src/udev/keymap/95-keymap.rules @@ -85,7 +85,9 @@ ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="ThinkPad X2* Tablet* ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_version}=="*IdeaPad*", RUN+="keymap $name lenovo-ideapad" ENV{DMI_VENDOR}=="LENOVO*", ATTR{[dmi/id]product_name}=="S10-*", RUN+="keymap $name lenovo-ideapad" ENV{DMI_VENDOR}=="LENOVO", ATTR{[dmi/id]product_version}=="*IdeaPad Y550*", RUN+="keymap $name 0x95 media 0xA3 play" -ENV{DMI_VENDOR}=="LENOVO", ATTR{[dmi/id]product_version}=="*Lenovo V480*|*IdeaPad U300s*", RUN+="keymap $name 0xf1 f21" +ENV{DMI_VENDOR}=="LENOVO", ATTR{[dmi/id]product_version}=="*Lenovo V480*", RUN+="keymap $name 0xf1 f21" +# 0xf1 is touchpad toggle, 0xCE is microphone mute in Lenovo U300s +ENV{DMI_VENDOR}=="LENOVO", ATTR{[dmi/id]product_version}=="*IdeaPad U300s*", RUN+="keymap $name 0xf1 f21 0xCE f20" ENV{DMI_VENDOR}=="Hewlett-Packard*", RUN+="keymap $name hewlett-packard" ENV{DMI_VENDOR}=="Hewlett-Packard*", ATTR{[dmi/id]product_name}=="*[tT][aA][bB][lL][eE][tT]*", RUN+="keymap $name hewlett-packard-tablet" -- cgit v1.2.1 From 1535fb73799f1c6079e8329af5d710bf9d55cbaf Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 19 Mar 2013 14:55:50 +0100 Subject: shell-completion/bash/journalctl: suppress stderr --- shell-completion/bash/journalctl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/shell-completion/bash/journalctl b/shell-completion/bash/journalctl index 1fca5ad31b..19362ae77b 100644 --- a/shell-completion/bash/journalctl +++ b/shell-completion/bash/journalctl @@ -60,10 +60,10 @@ _journalctl() { comps=${__journal_fields[*]} ;; --unit|-u) - comps=$(journalctl -F '_SYSTEMD_UNIT') + comps=$(journalctl -F '_SYSTEMD_UNIT' 2>/dev/null) ;; --user-unit) - comps=$(journalctl -F '_SYSTEMD_USER_UNIT') + comps=$(journalctl -F '_SYSTEMD_USER_UNIT' 2>/dev/null) ;; *) return 0 -- cgit v1.2.1 From bbb7f2ae5035105575365750592caa87213d7072 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 20 Mar 2013 01:26:17 +0100 Subject: rules: move builtin calls before the permissions section kay: systemd commit 22582bb broke cups usb printing for me because the "lp" group isn't applied anymore SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ENV{ID_USB_INTERFACES}=="*:0701??:*", GROUP="lp" moving this line to the end of 50-udev-default.rules restores correct behavior, as it's after usb_id --- rules/50-udev-default.rules | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/rules/50-udev-default.rules b/rules/50-udev-default.rules index 9d17cf71ab..179065211a 100644 --- a/rules/50-udev-default.rules +++ b/rules/50-udev-default.rules @@ -1,5 +1,12 @@ # do not edit this file, it will be overwritten on update +SUBSYSTEM=="rtc", ATTR{hctosys}=="1", SYMLINK+="rtc" +SUBSYSTEM=="virtio-ports", KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}" + +SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" +SUBSYSTEM=="input", ENV{ID_INPUT}=="", IMPORT{builtin}="input_id" +ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}" + ACTION!="add", GOTO="default_permissions_end" SUBSYSTEM=="tty", KERNEL=="ptmx", GROUP="tty", MODE="0666" @@ -8,6 +15,8 @@ SUBSYSTEM=="tty", KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620" SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty" KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout" +SUBSYSTEM=="rtc", ATTR{hctosys}=="1", MODE="0644" + SUBSYSTEM=="mem", KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640" SUBSYSTEM=="input", KERNEL=="mouse*|mice|event*", MODE="0640" @@ -59,9 +68,3 @@ KERNEL=="tun", MODE="0666", OPTIONS+="static_node=net/tun" KERNEL=="fuse", MODE="0666", OPTIONS+="static_node=fuse" LABEL="default_permissions_end" -SUBSYSTEM=="rtc", ATTR{hctosys}=="1", MODE="0644", SYMLINK+="rtc" -SUBSYSTEM=="virtio-ports", KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}" - -SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" -SUBSYSTEM=="input", ENV{ID_INPUT}=="", IMPORT{builtin}="input_id" -ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}" -- cgit v1.2.1 From 52aeb63cffcdb3701cdc2ca41868208de2347318 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 15 Mar 2013 18:00:57 -0400 Subject: journalctl: use _cleanup_ in one function --- src/journal/journalctl.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index a6ad055dc6..8aef923bea 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -513,16 +513,16 @@ static int generate_new_id128(void) { static int add_matches(sd_journal *j, char **args) { char **i; - int r; assert(j); STRV_FOREACH(i, args) { + int r; if (streq(*i, "+")) r = sd_journal_add_disjunction(j); else if (path_is_absolute(*i)) { - char *p, *t = NULL; + char _cleanup_free_ *p, *t = NULL; const char *path; struct stat st; @@ -530,7 +530,6 @@ static int add_matches(sd_journal *j, char **args) { path = p ? p : *i; if (stat(path, &st) < 0) { - free(p); log_error("Couldn't stat file: %m"); return -errno; } @@ -542,18 +541,14 @@ static int add_matches(sd_journal *j, char **args) { else if (S_ISBLK(st.st_mode)) asprintf(&t, "_KERNEL_DEVICE=b%u:%u", major(st.st_rdev), minor(st.st_rdev)); else { - free(p); log_error("File is not a device node, regular file or is not executable: %s", *i); return -EINVAL; } - free(p); - if (!t) return log_oom(); r = sd_journal_add_match(j, t, 0); - free(t); } else r = sd_journal_add_match(j, *i, 0); -- cgit v1.2.1 From 6531dac67cc2e707e4a2b62f3ae11f7330f7c049 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 15 Mar 2013 18:10:51 -0400 Subject: systemd-python: add _Reader.closed attribute This should make the file interface of _Reader complete. --- TODO | 2 -- src/python-systemd/_reader.c | 16 ++++++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/TODO b/TODO index c73e8dc980..715dd9dbc8 100644 --- a/TODO +++ b/TODO @@ -586,8 +586,6 @@ Features: - allow reading of only select fields in systemd.journal._reader.Reader - export sd_journal_test_cursor in systemd.journal._reader.Reader - export sd_journal_get_usage in systemd.journal._reader.Reader - - add systemd.journal._reader._Reader.closed attribute (it can - be just "return self->j != NULL") - figure out a simple way to wait for journal events in a way that works with ^C - add documentation to systemd.daemon diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 6759555c12..67358e3061 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -666,12 +666,24 @@ static int Reader_set_data_threshold(Reader *self, PyObject *value, void *closur return set_error(r, NULL, NULL); } -static PyGetSetDef Reader_getseters[] = { +PyDoc_STRVAR(closed__doc__, + "True iff journal is closed"); +static PyObject* Reader_get_closed(Reader *self, void *closure) +{ + return PyBool_FromLong(self->j == NULL); +} + +static PyGetSetDef Reader_getsetters[] = { {(char*) "data_threshold", (getter) Reader_get_data_threshold, (setter) Reader_set_data_threshold, (char*) data_threshold__doc__, NULL}, + {(char*) "closed", + (getter) Reader_get_closed, + NULL, + (char*) closed__doc__, + NULL}, {NULL} }; @@ -727,7 +739,7 @@ static PyTypeObject ReaderType = { Reader_iternext, /* tp_iternext */ Reader_methods, /* tp_methods */ 0, /* tp_members */ - Reader_getseters, /* tp_getset */ + Reader_getsetters, /* tp_getset */ 0, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ -- cgit v1.2.1 From 0d1aaec2282ee8e82908f9f12d820dab397adc0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 15 Mar 2013 18:10:51 -0400 Subject: man/catalog: fix synopsis and remind to free --- man/sd_journal_get_catalog.xml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/man/sd_journal_get_catalog.xml b/man/sd_journal_get_catalog.xml index b3c7b58b07..719d77f723 100644 --- a/man/sd_journal_get_catalog.xml +++ b/man/sd_journal_get_catalog.xml @@ -55,13 +55,13 @@ int sd_journal_get_catalog sd_journal* j - const char** ret + char** ret int sd_journal_get_catalog_for_message_id sd_id128_t id - const char** ret + char** ret @@ -89,7 +89,7 @@ sd_journal_get_catalog() but the entry is looked up by the specified message ID (no open journal context is necessary for this), and no - field substitution is done. + field substitution is performed. For more information about the journal message catalog please refer to the + + On successful return, ret + points to a new string, which must be freed with + free3. + @@ -130,6 +135,7 @@ sd_journal_open3, sd_journal_next3, sd_journal_get_data3 + malloc3 -- cgit v1.2.1 From 6808412dad4a8c4379dda4453658ec756a0542b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 15 Mar 2013 18:10:51 -0400 Subject: systemd-python: add _Reader.get_catalog() This one wraps sd_journaal_get_catalog. --- TODO | 1 - src/python-systemd/_reader.c | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index 715dd9dbc8..750540fb12 100644 --- a/TODO +++ b/TODO @@ -581,7 +581,6 @@ Features: * drop cap bounding set in readahead and other services * systemd-python: - - export sd_journal_get_catalog (in systemd.journal._reader) - export sd_journal_get_catalog_for_message_id (in systemd.id128) - allow reading of only select fields in systemd.journal._reader.Reader - export sd_journal_test_cursor in systemd.journal._reader.Reader diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 67358e3061..a257757e12 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -634,6 +634,29 @@ static PyObject* Reader_query_unique(Reader *self, PyObject *args) return value_set; } + +PyDoc_STRVAR(Reader_get_catalog__doc__, + "get_catalog() -> str\n\n" + "Retrieve a message catalog entry for the current journal entry.\n" + "Wraps man:sd_journal_get_catalog(3)."); +static PyObject* Reader_get_catalog(Reader *self, PyObject *args) +{ + int r; + char _cleanup_free_ *msg = NULL; + + assert(self); + assert(!args); + + Py_BEGIN_ALLOW_THREADS + r = sd_journal_get_catalog(self->j, &msg); + Py_END_ALLOW_THREADS + if (set_error(r, NULL, NULL)) + return NULL; + + return unicode_FromString(msg); +} + + PyDoc_STRVAR(data_threshold__doc__, "Threshold for field size truncation in bytes.\n\n" "Fields longer than this will be truncated to the threshold size.\n" @@ -706,6 +729,7 @@ static PyMethodDef Reader_methods[] = { {"wait", (PyCFunction) Reader_wait, METH_VARARGS, Reader_wait__doc__}, {"seek_cursor", (PyCFunction) Reader_seek_cursor, METH_VARARGS, Reader_seek_cursor__doc__}, {"query_unique", (PyCFunction) Reader_query_unique, METH_VARARGS, Reader_query_unique__doc__}, + {"get_catalog", (PyCFunction) Reader_get_catalog, METH_NOARGS, Reader_get_catalog__doc__}, {NULL} /* Sentinel */ }; -- cgit v1.2.1 From 2b01924cda5257531867119e11ee950741af2ff6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 15 Mar 2013 18:10:51 -0400 Subject: systemd-python: add journal.get_catalog() This one wraps sd_journal_get_catalog_from_message_id. Thanks to Python namespacing, we can stick to a shorter name. --- TODO | 1 - src/python-systemd/_reader.c | 53 +++++++++++++++++++++++++++++++++++++------ src/python-systemd/journal.py | 3 ++- 3 files changed, 48 insertions(+), 9 deletions(-) diff --git a/TODO b/TODO index 750540fb12..b44170024b 100644 --- a/TODO +++ b/TODO @@ -581,7 +581,6 @@ Features: * drop cap bounding set in readahead and other services * systemd-python: - - export sd_journal_get_catalog_for_message_id (in systemd.id128) - allow reading of only select fields in systemd.journal._reader.Reader - export sd_journal_test_cursor in systemd.journal._reader.Reader - export sd_journal_get_usage in systemd.journal._reader.Reader diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index a257757e12..2feb091c26 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -50,6 +50,11 @@ static int set_error(int r, const char* path, const char* invalid_message) { return -1; } + +PyDoc_STRVAR(module__doc__, + "Class to reads the systemd journal similar to journalctl."); + + #if PY_MAJOR_VERSION >= 3 static PyTypeObject MonotonicType; @@ -657,6 +662,37 @@ static PyObject* Reader_get_catalog(Reader *self, PyObject *args) } +PyDoc_STRVAR(get_catalog__doc__, + "get_catalog(id128) -> str\n\n" + "Retrieve a message catalog entry for the given id.\n" + "Wraps man:sd_journal_get_catalog_for_message_id(3)."); +static PyObject* get_catalog(PyObject *self, PyObject *args) +{ + int r; + char *id_ = NULL; + sd_id128_t id; + char _cleanup_free_ *msg = NULL; + + assert(!self); + assert(args); + + if (!PyArg_ParseTuple(args, "z", &id_)) + return NULL; + + r = sd_id128_from_string(id_, &id); + if (set_error(r, NULL, "Invalid id128")) + return NULL; + + Py_BEGIN_ALLOW_THREADS + r = sd_journal_get_catalog_for_message_id(id, &msg); + Py_END_ALLOW_THREADS + if (set_error(r, NULL, NULL)) + return NULL; + + return unicode_FromString(msg); +} + + PyDoc_STRVAR(data_threshold__doc__, "Threshold for field size truncation in bytes.\n\n" "Fields longer than this will be truncated to the threshold size.\n" @@ -774,16 +810,19 @@ static PyTypeObject ReaderType = { PyType_GenericNew, /* tp_new */ }; -#define SUMMARY \ - "Module that reads the systemd journal similar to journalctl." +static PyMethodDef methods[] = { + { "get_catalog", get_catalog, METH_VARARGS, get_catalog__doc__}, + { NULL, NULL, 0, NULL } /* Sentinel */ +}; #if PY_MAJOR_VERSION >= 3 -static PyModuleDef _reader_module = { +static PyModuleDef module = { PyModuleDef_HEAD_INIT, "_reader", - SUMMARY, + module__doc__, -1, - NULL, NULL, NULL, NULL, NULL + methods, + NULL, NULL, NULL, NULL }; #endif @@ -813,7 +852,7 @@ init_reader(void) #endif #if PY_MAJOR_VERSION >= 3 - m = PyModule_Create(&_reader_module); + m = PyModule_Create(&module); if (m == NULL) return NULL; @@ -822,7 +861,7 @@ init_reader(void) initialized = true; } #else - m = Py_InitModule3("_reader", NULL, SUMMARY); + m = Py_InitModule3("_reader", methods, module__doc__); if (m == NULL) return; #endif diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 146f59f220..fee39c9e08 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -34,7 +34,8 @@ from syslog import (LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG) from ._journal import sendv, stream_fd from ._reader import (_Reader, NOP, APPEND, INVALIDATE, - LOCAL_ONLY, RUNTIME_ONLY, SYSTEM_ONLY) + LOCAL_ONLY, RUNTIME_ONLY, SYSTEM_ONLY, + get_catalog) from . import id128 as _id128 if _sys.version_info >= (3,): -- cgit v1.2.1 From ab3a162c0194fd92884798488eeafdcc5c4d7d57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 15 Mar 2013 18:10:51 -0400 Subject: systemd-python: small cleanups - separate methods with two empty lines for clarity - avoid malloc(0) by specyfing private data size as -1 - add method name in error messages --- src/python-systemd/_journal.c | 2 +- src/python-systemd/_reader.c | 38 +++++++++++++++++++++++++++++--------- src/python-systemd/id128.c | 2 +- 3 files changed, 31 insertions(+), 11 deletions(-) diff --git a/src/python-systemd/_journal.c b/src/python-systemd/_journal.c index ced52b2f52..2de0d4f91d 100644 --- a/src/python-systemd/_journal.c +++ b/src/python-systemd/_journal.c @@ -128,7 +128,7 @@ static struct PyModuleDef module = { PyModuleDef_HEAD_INIT, "_journal", /* name of module */ NULL, /* module documentation, may be NULL */ - 0, /* size of per-interpreter state of the module */ + -1, /* size of per-interpreter state of the module */ methods }; diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 2feb091c26..908d911298 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -75,6 +75,7 @@ static PyStructSequence_Desc Monotonic_desc = { }; #endif + static void Reader_dealloc(Reader* self) { sd_journal_close(self->j); @@ -121,6 +122,7 @@ static int Reader_init(Reader *self, PyObject *args, PyObject *keywds) return set_error(r, path, "Invalid flags or path"); } + PyDoc_STRVAR(Reader_fileno__doc__, "fileno() -> int\n\n" "Get a file descriptor to poll for changes in the journal.\n" @@ -136,6 +138,7 @@ static PyObject* Reader_fileno(Reader *self, PyObject *args) return long_FromLong(r); } + PyDoc_STRVAR(Reader_reliable_fd__doc__, "reliable_fd() -> bool\n\n" "Returns True iff the journal can be polled reliably.\n" @@ -151,6 +154,7 @@ static PyObject* Reader_reliable_fd(Reader *self, PyObject *args) return PyBool_FromLong(r); } + PyDoc_STRVAR(Reader_close__doc__, "close() -> None\n\n" "Free resources allocated by this Reader object.\n" @@ -166,6 +170,7 @@ static PyObject* Reader_close(Reader *self, PyObject *args) Py_RETURN_NONE; } + PyDoc_STRVAR(Reader___enter____doc__, "__enter__() -> self\n\n" "Part of the context manager protocol.\n" @@ -192,6 +197,7 @@ static PyObject* Reader___exit__(Reader *self, PyObject *args) Py_RETURN_NONE; } + PyDoc_STRVAR(Reader_get_next__doc__, "get_next([skip]) -> dict\n\n" "Return dictionary of the next log entry. Optional skip value will\n" @@ -204,7 +210,7 @@ static PyObject* Reader_get_next(Reader *self, PyObject *args) int64_t skip = 1LL; int r; - if (!PyArg_ParseTuple(args, "|L", &skip)) + if (!PyArg_ParseTuple(args, "|L:_Reader.get_next", &skip)) return NULL; if (skip == 0LL) { @@ -371,6 +377,7 @@ error: return NULL; } + PyDoc_STRVAR(Reader_get_previous__doc__, "get_previous([skip]) -> dict\n\n" "Return dictionary of the previous log entry. Optional skip value\n" @@ -378,13 +385,14 @@ PyDoc_STRVAR(Reader_get_previous__doc__, static PyObject* Reader_get_previous(Reader *self, PyObject *args) { int64_t skip = 1LL; - if (!PyArg_ParseTuple(args, "|L", &skip)) + if (!PyArg_ParseTuple(args, "|L:_Reader.get_previous", &skip)) return NULL; return PyObject_CallMethod((PyObject *)self, (char*) "get_next", (char*) "L", -skip); } + PyDoc_STRVAR(Reader_add_match__doc__, "add_match(match) -> None\n\n" "Add a match to filter journal log entries. All matches of different\n" @@ -395,7 +403,7 @@ static PyObject* Reader_add_match(Reader *self, PyObject *args, PyObject *keywds { char *match; int match_len, r; - if (!PyArg_ParseTuple(args, "s#", &match, &match_len)) + if (!PyArg_ParseTuple(args, "s#:_Reader.add_match", &match, &match_len)) return NULL; r = sd_journal_add_match(self->j, match, match_len); @@ -406,6 +414,7 @@ static PyObject* Reader_add_match(Reader *self, PyObject *args, PyObject *keywds Py_RETURN_NONE; } + PyDoc_STRVAR(Reader_add_disjunction__doc__, "add_disjunction() -> None\n\n" "Inserts a logical OR between matches added before and afterwards."); @@ -419,6 +428,7 @@ static PyObject* Reader_add_disjunction(Reader *self, PyObject *args) Py_RETURN_NONE; } + PyDoc_STRVAR(Reader_flush_matches__doc__, "flush_matches() -> None\n\n" "Clear all current match filters."); @@ -428,6 +438,7 @@ static PyObject* Reader_flush_matches(Reader *self, PyObject *args) Py_RETURN_NONE; } + PyDoc_STRVAR(Reader_seek_head__doc__, "seek_head() -> None\n\n" "Jump to the beginning of the journal.\n" @@ -444,6 +455,7 @@ static PyObject* Reader_seek_head(Reader *self, PyObject *args) Py_RETURN_NONE; } + PyDoc_STRVAR(Reader_seek_tail__doc__, "seek_tail() -> None\n\n" "Jump to the end of the journal.\n" @@ -460,6 +472,7 @@ static PyObject* Reader_seek_tail(Reader *self, PyObject *args) Py_RETURN_NONE; } + PyDoc_STRVAR(Reader_seek_realtime__doc__, "seek_realtime(realtime) -> None\n\n" "Seek to nearest matching journal entry to `realtime`. Argument\n" @@ -470,7 +483,7 @@ static PyObject* Reader_seek_realtime(Reader *self, PyObject *args) uint64_t timestamp; int r; - if (!PyArg_ParseTuple(args, "d", &timedouble)) + if (!PyArg_ParseTuple(args, "d:_Reader.seek_realtime", &timedouble)) return NULL; timestamp = (uint64_t) (timedouble * 1.0E6); @@ -487,6 +500,7 @@ static PyObject* Reader_seek_realtime(Reader *self, PyObject *args) Py_RETURN_NONE; } + PyDoc_STRVAR(Reader_seek_monotonic__doc__, "seek_monotonic(monotonic[, bootid]) -> None\n\n" "Seek to nearest matching journal entry to `monotonic`. Argument\n" @@ -501,7 +515,7 @@ static PyObject* Reader_seek_monotonic(Reader *self, PyObject *args) sd_id128_t id; int r; - if (!PyArg_ParseTuple(args, "d|z", &timedouble, &bootid)) + if (!PyArg_ParseTuple(args, "d|z:_Reader.seek_monotonic", &timedouble, &bootid)) return NULL; timestamp = (uint64_t) (timedouble * 1.0E6); @@ -531,6 +545,7 @@ static PyObject* Reader_seek_monotonic(Reader *self, PyObject *args) Py_RETURN_NONE; } + PyDoc_STRVAR(Reader_wait__doc__, "wait([timeout]) -> state change (integer)\n\n" "Wait for a change in the journal. Argument `timeout` specifies\n" @@ -545,7 +560,7 @@ static PyObject* Reader_wait(Reader *self, PyObject *args, PyObject *keywds) int r; int64_t timeout = 0LL; - if (!PyArg_ParseTuple(args, "|L", &timeout)) + if (!PyArg_ParseTuple(args, "|L:_Reader.wait", &timeout)) return NULL; Py_BEGIN_ALLOW_THREADS @@ -558,6 +573,7 @@ static PyObject* Reader_wait(Reader *self, PyObject *args, PyObject *keywds) return long_FromLong(r); } + PyDoc_STRVAR(Reader_seek_cursor__doc__, "seek_cursor(cursor) -> None\n\n" "Seek to journal entry by given unique reference `cursor`."); @@ -566,7 +582,7 @@ static PyObject* Reader_seek_cursor(Reader *self, PyObject *args) const char *cursor; int r; - if (!PyArg_ParseTuple(args, "s", &cursor)) + if (!PyArg_ParseTuple(args, "s:_Reader.seek_cursor", &cursor)) return NULL; Py_BEGIN_ALLOW_THREADS @@ -577,6 +593,7 @@ static PyObject* Reader_seek_cursor(Reader *self, PyObject *args) Py_RETURN_NONE; } + static PyObject* Reader_iter(PyObject *self) { Py_INCREF(self); @@ -601,6 +618,7 @@ static PyObject* Reader_iternext(PyObject *self) } } + PyDoc_STRVAR(Reader_query_unique__doc__, "query_unique(field) -> a set of values\n\n" "Return a set of unique values appearing in journal for the\n" @@ -613,7 +631,7 @@ static PyObject* Reader_query_unique(Reader *self, PyObject *args) size_t uniq_len; PyObject *value_set, *key, *value; - if (!PyArg_ParseTuple(args, "s", &query)) + if (!PyArg_ParseTuple(args, "s:_Reader.query_unique", &query)) return NULL; Py_BEGIN_ALLOW_THREADS @@ -676,7 +694,7 @@ static PyObject* get_catalog(PyObject *self, PyObject *args) assert(!self); assert(args); - if (!PyArg_ParseTuple(args, "z", &id_)) + if (!PyArg_ParseTuple(args, "z:get_catalog", &id_)) return NULL; r = sd_id128_from_string(id_, &id); @@ -725,6 +743,7 @@ static int Reader_set_data_threshold(Reader *self, PyObject *value, void *closur return set_error(r, NULL, NULL); } + PyDoc_STRVAR(closed__doc__, "True iff journal is closed"); static PyObject* Reader_get_closed(Reader *self, void *closure) @@ -732,6 +751,7 @@ static PyObject* Reader_get_closed(Reader *self, void *closure) return PyBool_FromLong(self->j == NULL); } + static PyGetSetDef Reader_getsetters[] = { {(char*) "data_threshold", (getter) Reader_get_data_threshold, diff --git a/src/python-systemd/id128.c b/src/python-systemd/id128.c index a6711a5bd5..865cc3ce22 100644 --- a/src/python-systemd/id128.c +++ b/src/python-systemd/id128.c @@ -134,7 +134,7 @@ static struct PyModuleDef module = { PyModuleDef_HEAD_INIT, "id128", /* name of module */ module__doc__, /* module documentation, may be NULL */ - 0, /* size of per-interpreter state of the module */ + -1, /* size of per-interpreter state of the module */ methods }; -- cgit v1.2.1 From 54b7254c1fa629937f92fd6fa34bdf127b696a00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 19 Mar 2013 20:54:04 -0400 Subject: journalct: beef up entry listing The ability to dump catalog entries in full and by id is added. --- man/journalctl.xml | 35 +++++++++++++++++++++++++--- src/journal/catalog.c | 58 +++++++++++++++++++++++++++++++++++++++++----- src/journal/catalog.h | 5 +++- src/journal/journalctl.c | 17 ++++++++++++-- src/journal/test-catalog.c | 4 +++- 5 files changed, 106 insertions(+), 13 deletions(-) diff --git a/man/journalctl.xml b/man/journalctl.xml index 8883da278c..6b4b7572f6 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -49,7 +49,9 @@ - journalctl OPTIONS MATCHES + journalctl + OPTIONS + MATCHES @@ -479,12 +481,39 @@ - + List the contents of the message catalog, as table of message IDs plus their short - description strings. + description strings. + + If any + ID128s are + specified, only those entries are shown. + + + + + + + + Show the contents of + the message catalog, with entries + separated by a line consisting of two + dashes and the id (the format is the + same as .catalog + files. + + If any + ID128s are + specified, only those entries are shown. + + diff --git a/src/journal/catalog.c b/src/journal/catalog.c index 32256f6263..dacf5c50a1 100644 --- a/src/journal/catalog.c +++ b/src/journal/catalog.c @@ -551,7 +551,23 @@ static char *find_header(const char *s, const char *header) { } } -int catalog_list(FILE *f) { +static void dump_catalog_entry(FILE *f, sd_id128_t id, const char *s, bool oneline) { + if (oneline) { + _cleanup_free_ char *subject = NULL, *defined_by = NULL; + + subject = find_header(s, "Subject:"); + defined_by = find_header(s, "Defined-By:"); + + fprintf(f, SD_ID128_FORMAT_STR " %s: %s\n", + SD_ID128_FORMAT_VAL(id), + strna(defined_by), strna(subject)); + } else + fprintf(f, "-- " SD_ID128_FORMAT_STR "\n%s\n", + SD_ID128_FORMAT_VAL(id), s); +} + + +int catalog_list(FILE *f, bool oneline) { _cleanup_close_ int fd = -1; void *p = NULL; struct stat st; @@ -571,17 +587,13 @@ int catalog_list(FILE *f) { for (n = 0; n < le64toh(h->n_items); n++) { const char *s; - _cleanup_free_ char *subject = NULL, *defined_by = NULL; if (last_id_set && sd_id128_equal(last_id, items[n].id)) continue; assert_se(s = find_id(p, items[n].id)); - subject = find_header(s, "Subject:"); - defined_by = find_header(s, "Defined-By:"); - - fprintf(f, SD_ID128_FORMAT_STR " %s: %s\n", SD_ID128_FORMAT_VAL(items[n].id), strna(defined_by), strna(subject)); + dump_catalog_entry(f, items[n].id, s, oneline); last_id_set = true; last_id = items[n].id; @@ -591,3 +603,37 @@ int catalog_list(FILE *f) { return 0; } + +int catalog_list_items(FILE *f, bool oneline, char **items) { + char **item; + int r = 0; + + STRV_FOREACH(item, items) { + sd_id128_t id; + int k; + char _cleanup_free_ *msg = NULL; + + k = sd_id128_from_string(*item, &id); + if (k < 0) { + log_error("Failed to parse id128 '%s': %s", + *item, strerror(-r)); + if (r < 0) + r = k; + continue; + } + + k = catalog_get(id, &msg); + if (k < 0) { + log_full(k == -ENOENT ? LOG_NOTICE : LOG_ERR, + "Failed to retrieve catalog entry for '%s': %s", + *item, strerror(-r)); + if (r < 0) + r = k; + continue; + } + + dump_catalog_entry(f, id, msg, oneline); + } + + return r; +} diff --git a/src/journal/catalog.h b/src/journal/catalog.h index 9add773c95..8ea2c41c2d 100644 --- a/src/journal/catalog.h +++ b/src/journal/catalog.h @@ -21,8 +21,11 @@ along with systemd; If not, see . ***/ +#include + #include "sd-id128.h" int catalog_update(void); int catalog_get(sd_id128_t id, char **data); -int catalog_list(FILE *f); +int catalog_list(FILE *f, bool oneline); +int catalog_list_items(FILE *f, bool oneline, char **items); diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 8aef923bea..975c44fa9b 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -90,6 +90,7 @@ static enum { ACTION_VERIFY, ACTION_DISK_USAGE, ACTION_LIST_CATALOG, + ACTION_DUMP_CATALOG, ACTION_UPDATE_CATALOG } arg_action = ACTION_SHOW; @@ -131,6 +132,7 @@ static int help(void) { " --disk-usage Show total disk usage\n" " -F --field=FIELD List all values a certain field takes\n" " --list-catalog Show message IDs of all entries in the message catalog\n" + " --dump-catalog Show entries in the message catalog\n" " --update-catalog Update the message catalog database\n" #ifdef HAVE_GCRYPT " --setup-keys Generate new FSS key pair\n" @@ -159,6 +161,7 @@ static int parse_argv(int argc, char *argv[]) { ARG_UNTIL, ARG_USER_UNIT, ARG_LIST_CATALOG, + ARG_DUMP_CATALOG, ARG_UPDATE_CATALOG }; @@ -193,6 +196,7 @@ static int parse_argv(int argc, char *argv[]) { { "field", required_argument, NULL, 'F' }, { "catalog", no_argument, NULL, 'x' }, { "list-catalog", no_argument, NULL, ARG_LIST_CATALOG }, + { "dump-catalog", no_argument, NULL, ARG_DUMP_CATALOG }, { "update-catalog",no_argument, NULL, ARG_UPDATE_CATALOG }, { "reverse", no_argument, NULL, 'r' }, { NULL, 0, NULL, 0 } @@ -445,6 +449,10 @@ static int parse_argv(int argc, char *argv[]) { arg_action = ACTION_LIST_CATALOG; break; + case ARG_DUMP_CATALOG: + arg_action = ACTION_DUMP_CATALOG; + break; + case ARG_UPDATE_CATALOG: arg_action = ACTION_UPDATE_CATALOG; break; @@ -918,8 +926,13 @@ int main(int argc, char *argv[]) { goto finish; } - if (arg_action == ACTION_LIST_CATALOG) { - r = catalog_list(stdout); + if (arg_action == ACTION_LIST_CATALOG || + arg_action == ACTION_DUMP_CATALOG) { + bool oneline = arg_action == ACTION_LIST_CATALOG; + if (optind < argc) + r = catalog_list_items(stdout, oneline, argv + optind); + else + r = catalog_list(stdout, oneline); if (r < 0) log_error("Failed to list catalog: %s", strerror(-r)); goto finish; diff --git a/src/journal/test-catalog.c b/src/journal/test-catalog.c index cec8a11c43..c75b1464fe 100644 --- a/src/journal/test-catalog.c +++ b/src/journal/test-catalog.c @@ -36,7 +36,9 @@ int main(int argc, char *argv[]) { assert_se(catalog_update() >= 0); - assert_se(catalog_list(stdout) >= 0); + assert_se(catalog_list(stdout, true) >= 0); + + assert_se(catalog_list(stdout, false) >= 0); assert_se(catalog_get(SD_MESSAGE_COREDUMP, &text) >= 0); -- cgit v1.2.1 From 9d83ad481beb9a1a7eaf68511a6f95f4a3a2bbf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 19 Mar 2013 20:57:25 -0400 Subject: catalog: remove broken links to wiki https://bugs.freedesktop.org/show_bug.cgi?id=58359 --- catalog/systemd.catalog | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/catalog/systemd.catalog b/catalog/systemd.catalog index 5dcbd4620a..62635c87b0 100644 --- a/catalog/systemd.catalog +++ b/catalog/systemd.catalog @@ -26,7 +26,6 @@ Subject: The Journal has been started Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ The system journal process has been starting up, opened the journal files for writing and is now ready to process requests. @@ -35,7 +34,6 @@ files for writing and is now ready to process requests. Subject: The Journal has been stopped Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ The system journal process has shut down and closed all currently active journal files. @@ -45,7 +43,6 @@ Subject: Messages from a service have been suppressed Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel Documentation: man:journald.conf(5) -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ A service has logged too many messages within a time period. Messages from the service have been dropped. @@ -61,7 +58,6 @@ RateLimitInterval= and RateLimitBurst= in Subject: Journal messages have been missed Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ Kernel messages have been lost as the journal system has been unable to process them quickly enough. @@ -71,7 +67,6 @@ Subject: Process @COREDUMP_PID@ (@COREDUMP_COMM@) dumped core Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel Documentation: man:core(5) -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ Process @COREDUMP_PID@ (@COREDUMP_COMM@) crashed and dumped core. @@ -83,7 +78,6 @@ Subject: Speicherabbild für Prozess @COREDUMP_PID@ (@COREDUMP_COMM) generiert Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel Documentation: man:core(5) -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ Prozess @COREDUMP_PID@ (@COREDUMP_COMM@) ist abgebrochen worden und ein Speicherabbild wurde generiert. @@ -96,7 +90,6 @@ Subject: A new session @SESSION_ID@ has been created for user @USER_ID@ Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ A new session with the ID @SESSION_ID@ has been created for the user @USER_ID@. @@ -107,7 +100,6 @@ Subject: A session @SESSION_ID@ has been terminated Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ A session with the ID @SESSION_ID@ has been terminated. @@ -116,7 +108,6 @@ Subject: A new seat @SEAT_ID@ is now available Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ A new seat @SEAT_ID@ has been configured and is now available. @@ -125,7 +116,6 @@ Subject: A seat @SEAT_ID@ has now been removed Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel Documentation: http://www.freedesktop.org/wiki/Software/systemd/multiseat -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ A seat @SEAT_ID@ has been removed and is no longer available. @@ -133,7 +123,6 @@ A seat @SEAT_ID@ has been removed and is no longer available. Subject: Time change Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ The system clock has been changed to @REALTIME@ microseconds after January 1st, 1970. @@ -141,7 +130,6 @@ The system clock has been changed to @REALTIME@ microseconds after January 1st, Subject: Zeitänderung Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ Die System-Zeit wurde geändert auf @REALTIME@ Mikrosekunden nach dem 1. Januar 1970. @@ -149,7 +137,6 @@ Die System-Zeit wurde geändert auf @REALTIME@ Mikrosekunden nach dem 1. Januar Subject: Time zone change to @TIMEZONE@ Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ The system time zone has been changed to @TIMEZONE@. @@ -157,7 +144,6 @@ The system time zone has been changed to @TIMEZONE@. Subject: System start-up is now complete Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ All system services necessary queued for starting at boot have been successfully started. Note that this does not mean that the machine is @@ -173,7 +159,6 @@ Userspace start-up required @USERSPACE_USEC@ microseconds. Subject: System sleep state @SLEEP@ entered Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ The system has now entered the @SLEEP@ sleep state. @@ -181,7 +166,6 @@ The system has now entered the @SLEEP@ sleep state. Subject: System sleep state @SLEEP@ left Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ The system has now left the @SLEEP@ sleep state. @@ -189,7 +173,6 @@ The system has now left the @SLEEP@ sleep state. Subject: System shutdown initiated Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ Systemd shutdown has been initiated. The shutdown has now begun and all system services are terminated and all file systems unmounted. @@ -198,7 +181,6 @@ all system services are terminated and all file systems unmounted. Subject: Unit @UNIT@ has begun with start-up Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ Unit @UNIT@ has begun starting up. @@ -206,7 +188,6 @@ Unit @UNIT@ has begun starting up. Subject: Unit @UNIT@ has finished start-up Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ Unit @UNIT@ has finished starting up. @@ -216,7 +197,6 @@ The start-up result is @RESULT@. Subject: Unit @UNIT@ has begun shutting down Defined-By: systemd Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -Documentation: http://www.freedesktop.org/wiki/Software/systemd/catalog/@MESSAGE_ID@ Unit @UNIT@ has begun shutting down. -- cgit v1.2.1 From 4c42e8e1618e2352cb628d459593233a86202ce6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 19 Mar 2013 22:13:48 -0400 Subject: man/service: document behaviour on failure https://bugs.freedesktop.org/show_bug.cgi?id=38355 --- man/systemd.service.xml | 59 ++++++++++++++++++++++++++++++------------------- 1 file changed, 36 insertions(+), 23 deletions(-) diff --git a/man/systemd.service.xml b/man/systemd.service.xml index 2dd3b19773..b82a5c1817 100644 --- a/man/systemd.service.xml +++ b/man/systemd.service.xml @@ -302,7 +302,9 @@ argument must be an absolute path name. - When + When Type is + not , only one + command may be given. When Type=oneshot is used, more than one command may be specified. Multiple command lines may @@ -316,19 +318,22 @@ for compatibility with parsers suitable for XDG .desktop files. - The commands are invoked one by one - sequentially in the order they appear - in the unit file. When - Type is not - , only one - command may be given. Lone semicolons - may be escaped as + Lone semicolons may be escaped as '\;'. If the empty string is assigned to this option the list of commands to start is reset, prior assignments of this option will have no effect. + If more than one command is + specified, the commands are invoked + one by one sequentially in the order + they appear in the unit file. If one + of the commands fails (and is not + prefixed with '-'), + other lines are not executed and the + unit is considered failed. + Unless Type=forking is set, the process started via this @@ -343,9 +348,8 @@ line (i.e. the program to execute) may not include specifiers. - On top of that basic environment - variable substitution is - supported. Use + Basic environment variable + substitution is supported. Use ${FOO} as part of a word, or as a word of its own on the command line, in which case it will be @@ -357,8 +361,8 @@ word on the command line, in which case it will be replaced by the value of the environment variable split up - at whitespace, resulting in zero or more - arguments. Note that the first + at whitespace, resulting in zero or + more arguments. Note that the first argument (i.e. the program to execute) may not be a variable, since it must be a literal and absolute path @@ -386,13 +390,14 @@ lines. If shell command lines are to be used they need to be passed explicitly to a shell implementation - of some kind. Example: - ExecStart=/bin/sh -c 'dmesg | tac' + of some kind. Example: + ExecStart=/bin/sh -c 'dmesg | tac' + For services run by a user instance of systemd the special environment variable - MANAGERPID is set + $MANAGERPID is set to the PID of the systemd instance. @@ -410,6 +415,11 @@ that multiple command lines are allowed and the commands are executed one after the other, serially. + + If any of those commands (not + prefixed with '-') + fail, the rest are not executed and + the unit is considered failed. @@ -425,14 +435,17 @@ optional. Specifier and environment variable substitution is supported here following the same scheme as for - ExecStart=. One - additional special environment - variables is set: if known - $MAINPID is set to + ExecStart=. + + One additional special + environment variables is set: if known + $MAINPID is set to the main process of the daemon, and may be used for command lines like the - following: /bin/kill -HUP - $MAINPID. + following: + + /bin/kill -HUP $MAINPID + @@ -456,7 +469,7 @@ service stop is requested. Specifier and environment variable substitution is supported (including - $MAINPID, see + $MAINPID, see above). -- cgit v1.2.1 From c4b5cf8763dbd0ef68f75f73b4236f5a43872d76 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Wed, 20 Mar 2013 13:09:58 +0100 Subject: zsh completion: udev - remove firmware builtin --- shell-completion/systemd-zsh-completion.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell-completion/systemd-zsh-completion.zsh b/shell-completion/systemd-zsh-completion.zsh index 77b26f6d26..ac36c4ed5d 100644 --- a/shell-completion/systemd-zsh-completion.zsh +++ b/shell-completion/systemd-zsh-completion.zsh @@ -978,7 +978,7 @@ _udevadm_test-builtin(){ if (( CURRENT == 2 )); then _arguments \ '--help[Print help text]' \ - '*::builtins:(blkid btrfs firmware hwdb input_id kmod path_id usb_id uaccess)' + '*::builtins:(blkid btrfs hwdb input_id kmod path_id usb_id uaccess)' elif (( CURRENT == 3 )); then _arguments \ '--help[Print help text]' \ -- cgit v1.2.1 From 53726349e1d7a85bdf572ce81f122e66e438c6ec Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 20 Mar 2013 15:57:13 +0100 Subject: libude: remove special handling of "device" link, it should not be used --- src/libudev/libudev-device.c | 34 ++-------------------------------- 1 file changed, 2 insertions(+), 32 deletions(-) diff --git a/src/libudev/libudev-device.c b/src/libudev/libudev-device.c index 05c5fbce98..6bb2e41510 100644 --- a/src/libudev/libudev-device.c +++ b/src/libudev/libudev-device.c @@ -1381,8 +1381,6 @@ _public_ const char *udev_device_get_sysattr_value(struct udev_device *udev_devi } if (S_ISLNK(statbuf.st_mode)) { - struct udev_device *dev; - /* * Some core links return only the last element of the target path, * these are just values, the paths should not be exposed. @@ -1398,17 +1396,6 @@ _public_ const char *udev_device_get_sysattr_value(struct udev_device *udev_devi goto out; } - /* resolve custom link to a device and return its syspath */ - if (!streq(sysattr, "device")) { - strscpyl(path, sizeof(path), udev_device->syspath, "/", sysattr, NULL); - dev = udev_device_new_from_syspath(udev_device->udev, path); - if (dev != NULL) { - list_entry = udev_list_entry_add(&udev_device->sysattr_value_list, sysattr, - udev_device_get_syspath(dev)); - val = udev_list_entry_get_value(list_entry); - udev_device_unref(dev); - } - } goto out; } @@ -1468,7 +1455,7 @@ _public_ int udev_device_set_sysattr_value(struct udev_device *udev_device, cons value_len = 0; else value_len = strlen(value); -restart: + strscpyl(path, sizeof(path), udev_device_get_syspath(dev), "/", sysattr, NULL); if (lstat(path, &statbuf) != 0) { udev_list_entry_add(&dev->sysattr_value_list, sysattr, NULL); @@ -1477,24 +1464,7 @@ restart: } if (S_ISLNK(statbuf.st_mode)) { - /* - * Cannot modify core link values - */ - if (streq(sysattr, "driver") || - streq(sysattr, "subsystem") || - streq(sysattr, "module")) { - ret = -EPERM; - } else if (!streq(sysattr, "device")) { - /* resolve custom link to a device */ - strscpyl(path, sizeof(path), udev_device->syspath, "/", sysattr, NULL); - dev = udev_device_new_from_syspath(udev_device->udev, path); - if (dev != NULL) - goto restart; - ret = -ENXIO; - } else { - /* Unhandled, to not try to modify anything */ - ret = -EINVAL; - } + ret = -EINVAL; goto out; } -- cgit v1.2.1 From acd42fae59096d84e78f1c17bfcc0d8f96486341 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Wed, 20 Mar 2013 15:23:32 +0100 Subject: libudev: avoid potential misaligned accesses clang reports: src/libudev/libudev-util.c:665:35: warning: cast from "const unsigned char *" to "unsigned int *" increases required alignment from 1 to 4 [-Wcast-align] --- src/libudev/libudev-util.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/libudev/libudev-util.c b/src/libudev/libudev-util.c index 62b7e56c05..44f6e4a863 100644 --- a/src/libudev/libudev-util.c +++ b/src/libudev/libudev-util.c @@ -568,7 +568,7 @@ err: * Murmurhash is under the MIT license. * */ -static unsigned int murmur_hash2(const char *key, int len, unsigned int seed) +static unsigned int murmur_hash2(const char *key, size_t len, unsigned int seed) { /* * 'm' and 'r' are mixing constants generated offline. @@ -583,17 +583,18 @@ static unsigned int murmur_hash2(const char *key, int len, unsigned int seed) /* mix 4 bytes at a time into the hash */ const unsigned char * data = (const unsigned char *)key; - while(len >= 4) { - unsigned int k = *(unsigned int *)data; + while(len >= sizeof(unsigned int)) { + unsigned int k; + memcpy(&k, data, sizeof(k)); k *= m; k ^= k >> r; k *= m; h *= m; h ^= k; - data += 4; - len -= 4; + data += sizeof(k); + len -= sizeof(k); } /* handle the last few bytes of the input array */ -- cgit v1.2.1 From 1f048a6b6bcc30d2e157711b3d231d7a944e6ffb Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Wed, 20 Mar 2013 15:23:30 +0100 Subject: build-sys: fix typo in human-readable output --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 14411e3601..5d1be3f851 100644 --- a/configure.ac +++ b/configure.ac @@ -940,7 +940,7 @@ AC_MSG_RESULT([ Extra stop script: ${RC_LOCAL_SCRIPT_PATH_STOP} CFLAGS: ${OUR_CFLAGS} ${CFLAGS} - CPPLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS} + CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS} LDFLAGS: ${OUR_LDFLAGS} ${LDFLAGS} PYTHON_CFLAGS: ${PYTHON_CFLAGS} PYTHON_LIBS: ${PYTHON_LIBS} -- cgit v1.2.1 From d34cd374905a40e65769351a2808b741b5418bf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 20 Mar 2013 01:38:28 -0400 Subject: Make PrivateTmp dirs also inaccessible from the outside Currently, PrivateTmp=yes means that the service cannot see the /tmp shared by rest of the system and is isolated from other services using PrivateTmp, but users can access and modify /tmp as seen by the service. Move the private /tmp and /var/tmp directories into a 0077-mode directory. This way unpriviledged users on the system cannot see (or modify) /tmp as seen by the service. --- src/core/execute.c | 24 ++++++++++++++---------- src/core/namespace.c | 16 +++++++--------- src/shared/util.c | 53 +++++++++++++++++++++++++++------------------------- src/shared/util.h | 2 +- tmpfiles.d/tmp.conf | 6 ++++-- 5 files changed, 54 insertions(+), 47 deletions(-) diff --git a/src/core/execute.c b/src/core/execute.c index 18e25fa6e6..bc876a3292 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -40,6 +40,7 @@ #include #include #include +#include #ifdef HAVE_PAM #include @@ -1551,19 +1552,22 @@ void exec_context_init(ExecContext *c) { } void exec_context_tmp_dirs_done(ExecContext *c) { - assert(c); + char* dirs[] = {c->tmp_dir ? c->tmp_dir : c->var_tmp_dir, + c->tmp_dir ? c->var_tmp_dir : NULL, + NULL}; + char **dirp; - if (c->tmp_dir) { - rm_rf_dangerous(c->tmp_dir, false, true, false); - free(c->tmp_dir); - c->tmp_dir = NULL; - } + for(dirp = dirs; *dirp; dirp++) { + char *dir; + rm_rf_dangerous(*dirp, false, true, false); - if (c->var_tmp_dir) { - rm_rf_dangerous(c->var_tmp_dir, false, true, false); - free(c->var_tmp_dir); - c->var_tmp_dir = NULL; + dir = dirname(*dirp); + rmdir(dir); + + free(*dirp); } + + c->tmp_dir = c->var_tmp_dir = NULL; } void exec_context_done(ExecContext *c, bool reloading_or_reexecuting) { diff --git a/src/core/namespace.c b/src/core/namespace.c index ceeed2e1ae..972380abc0 100644 --- a/src/core/namespace.c +++ b/src/core/namespace.c @@ -183,22 +183,20 @@ int setup_tmpdirs(char **tmp_dir, assert(tmp_dir); assert(var_tmp_dir); - r = create_tmp_dir(tmp_dir_template, 0000, true, tmp_dir); + r = create_tmp_dir(tmp_dir_template, tmp_dir); if (r < 0) - goto fail2; + return r; - r = create_tmp_dir(var_tmp_dir_template, 0000, true, var_tmp_dir); - if (r < 0) - goto fail1; - - return 0; + r = create_tmp_dir(var_tmp_dir_template, var_tmp_dir); + if (r == 0) + return 0; -fail1: + /* failure */ rmdir(*tmp_dir); + rmdir(tmp_dir_template); free(*tmp_dir); *tmp_dir = NULL; -fail2: return r; } diff --git a/src/shared/util.c b/src/shared/util.c index 34c5330838..bdef9f0431 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5683,46 +5683,49 @@ int search_and_fopen_nulstr(const char *path, const char *mode, const char *sear return search_and_fopen_internal(path, mode, s, _f); } -int create_tmp_dir(char template[], mode_t mask, bool need_sticky, char** dir_name) { +int create_tmp_dir(char template[], char** dir_name) { int r = 0; - char *d = NULL; - bool remove = false; + char *d, *dt; mode_t _cleanup_umask_ u; assert(dir_name); - u = umask(mask); + u = umask(0077); d = mkdtemp(template); if (!d) { - r = -errno; - log_debug("Can't create directory"); - goto fail; + log_error("Can't create directory %s: %m", template); + return -errno; } - remove = true; - - log_debug("Created temporary directory : %s", template); - - d = strdup(template); - if (!d) { + dt = strjoin(d, "/tmp", NULL); + if (!dt) { r = log_oom(); - goto fail; + goto fail2; } - if (need_sticky) { - r = chmod(template, 0777 | S_ISVTX); - if (r < 0) { - r = -errno; - goto fail; - } - log_debug("Setting sticky bit on : %s", template); + umask(0000); + r = mkdir(dt, 0777); + if (r) { + log_error("Can't create directory %s: %m", dt); + r = -errno; + goto fail1; + } + log_debug("Created temporary directory %s", dt); + + r = chmod(dt, 0777 | S_ISVTX); + if (r < 0) { + log_error("Failed to chmod %s: %m", dt); + r = -errno; + goto fail1; } + log_debug("Set sticky bit on %s", dt); - *dir_name = d; + *dir_name = dt; return 0; -fail: - if (remove) - rmdir(template); +fail1: + rmdir(dt); +fail2: + rmdir(template); return r; } diff --git a/src/shared/util.h b/src/shared/util.h index 4be0b61773..7c032b6b62 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -579,7 +579,7 @@ int on_ac_power(void); int search_and_fopen(const char *path, const char *mode, const char **search, FILE **_f); int search_and_fopen_nulstr(const char *path, const char *mode, const char *search, FILE **_f); -int create_tmp_dir(char template[], mode_t mask, bool need_sticky, char** dir_name); +int create_tmp_dir(char template[], char** dir_name); #define FOREACH_LINE(line, f, on_error) \ for (;;) \ diff --git a/tmpfiles.d/tmp.conf b/tmpfiles.d/tmp.conf index ef5a9f0f2c..3b534a1f75 100644 --- a/tmpfiles.d/tmp.conf +++ b/tmpfiles.d/tmp.conf @@ -12,5 +12,7 @@ d /tmp 1777 root root 10d d /var/tmp 1777 root root 30d # Exclude namespace mountpoints created with PrivateTmp=yes -X /tmp/systemd-private-* -X /var/tmp/systemd-private-* +x /tmp/systemd-private-* +x /var/tmp/systemd-private-* +X /tmp/systemd-private-*/tmp +X /var/tmp/systemd-private-*/tmp -- cgit v1.2.1 From 907809fc6a9867869b8a237663af2eda335d333e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 19 Mar 2013 20:00:29 +0100 Subject: macro: don't redefine CLAMP if it is already defined by glib or some other library --- src/journal/journal-gatewayd.c | 1 - src/shared/macro.h | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/journal/journal-gatewayd.c b/src/journal/journal-gatewayd.c index 7e29c905e2..8161b7e56b 100644 --- a/src/journal/journal-gatewayd.c +++ b/src/journal/journal-gatewayd.c @@ -110,7 +110,6 @@ static int open_journal(RequestMeta *m) { return sd_journal_open(&m->journal, SD_JOURNAL_LOCAL_ONLY|SD_JOURNAL_SYSTEM_ONLY); } - static int respond_oom_internal(struct MHD_Connection *connection) { struct MHD_Response *response; const char m[] = "Out of memory.\n"; diff --git a/src/shared/macro.h b/src/shared/macro.h index 90a663b9ce..e5c33ce561 100644 --- a/src/shared/macro.h +++ b/src/shared/macro.h @@ -92,6 +92,7 @@ static inline size_t ALIGN_TO(size_t l, size_t ali) { #define MIN3(a,b,c) \ MIN(MIN(a,b),c) +#ifndef CLAMP #define CLAMP(x, low, high) \ __extension__ ({ \ typeof(x) _x = (x); \ @@ -99,6 +100,7 @@ static inline size_t ALIGN_TO(size_t l, size_t ali) { typeof(high) _high = (high); \ ((_x > _high) ? _high : ((_x < _low) ? _low : _x)); \ }) +#endif #define assert_se(expr) \ do { \ -- cgit v1.2.1 From a9c55a882f021318fa728af78f398f4fb7ad7c85 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 19 Mar 2013 20:00:55 +0100 Subject: macro: add CHAR_TO_STR macro to make a one character string from a char --- src/shared/macro.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/shared/macro.h b/src/shared/macro.h index e5c33ce561..80cb2f0892 100644 --- a/src/shared/macro.h +++ b/src/shared/macro.h @@ -158,6 +158,8 @@ static inline size_t ALIGN_TO(size_t l, size_t ali) { #define memzero(x,l) (memset((x), 0, (l))) #define zero(x) (memzero(&(x), sizeof(x))) +#define CHAR_TO_STR(x) ((char[2]) { x, 0 }) + #define char_array_0(x) x[sizeof(x)-1] = 0; #define IOVEC_SET_STRING(i, s) \ -- cgit v1.2.1 From 66e35261ef51119189486e9a31e7b97e8e18e255 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 19 Mar 2013 20:01:18 +0100 Subject: util: add hexmem() and strextend() calls --- src/shared/util.c | 70 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- src/shared/util.h | 3 +++ 2 files changed, 72 insertions(+), 1 deletion(-) diff --git a/src/shared/util.c b/src/shared/util.c index bdef9f0431..f94abbcc02 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -1029,7 +1029,6 @@ int rmdir_parents(const char *path, const char *stop) { return 0; } - char hexchar(int x) { static const char table[16] = "0123456789abcdef"; @@ -1050,6 +1049,23 @@ int unhexchar(char c) { return -1; } +char *hexmem(const void *p, size_t l) { + char *r, *z; + const uint8_t *x; + + z = r = malloc(l * 2 + 1); + if (!r) + return NULL; + + for (x = p; x < (const uint8_t*) p + l; x++) { + *(z++) = hexchar(*x >> 4); + *(z++) = hexchar(*x & 15); + } + + *z = 0; + return r; +} + char octchar(int x) { return '0' + (x & 7); } @@ -5729,3 +5745,55 @@ fail2: rmdir(template); return r; } + +char *strextend(char **x, ...) { + va_list ap; + size_t f, l; + char *r, *p; + + assert(x); + + l = f = *x ? strlen(*x) : 0; + + va_start(ap, x); + for (;;) { + const char *t; + size_t n; + + t = va_arg(ap, const char *); + if (!t) + break; + + n = strlen(t); + if (n > ((size_t) -1) - l) { + va_end(ap); + return NULL; + } + + l += n; + } + va_end(ap); + + r = realloc(*x, l+1); + if (!r) + return NULL; + + p = r + f; + + va_start(ap, x); + for (;;) { + const char *t; + + t = va_arg(ap, const char *); + if (!t) + break; + + p = stpcpy(p, t); + } + va_end(ap); + + *p = 0; + *x = r; + + return r + l; +} diff --git a/src/shared/util.h b/src/shared/util.h index 7c032b6b62..25c00843ec 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -605,3 +605,6 @@ static inline void *mempset(void *s, int c, size_t n) { memset(s, c, n); return (char*)s + n; } + +char *hexmem(const void *p, size_t l); +char *strextend(char **x, ...); -- cgit v1.2.1 From 76f0199f2ce007c50b5a38f7ff6c51167c3a05a0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 19 Mar 2013 20:01:35 +0100 Subject: stdio-bridge: modernization --- src/stdio-bridge/stdio-bridge.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/stdio-bridge/stdio-bridge.c b/src/stdio-bridge/stdio-bridge.c index adc692f1eb..ea82c8f7c9 100644 --- a/src/stdio-bridge/stdio-bridge.c +++ b/src/stdio-bridge/stdio-bridge.c @@ -46,7 +46,7 @@ static void format_uid(char *buf, size_t l) { assert(l > 0); snprintf(text, sizeof(text)-1, "%llu", (unsigned long long) geteuid()); - text[sizeof(text)-1] = 0; + char_array_0(text); memset(buf, 0, l); -- cgit v1.2.1 From de1c301ed165eb4d04a0c9d4babe97912b5233bb Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 19 Mar 2013 20:03:16 +0100 Subject: bus: add basic implementation of a native bus client library --- .gitignore | 2 + Makefile.am | 44 + configure.ac | 4 +- src/libsystemd-bus/Makefile | 1 + src/libsystemd-bus/bus-control.c | 322 +++++++ src/libsystemd-bus/bus-error.c | 166 ++++ src/libsystemd-bus/bus-error.h | 27 + src/libsystemd-bus/bus-internal.c | 22 + src/libsystemd-bus/bus-internal.h | 101 +++ src/libsystemd-bus/bus-message.c | 1413 ++++++++++++++++++++++++++++++ src/libsystemd-bus/bus-message.h | 120 +++ src/libsystemd-bus/bus-signature.c | 141 +++ src/libsystemd-bus/bus-signature.h | 31 + src/libsystemd-bus/bus-type.c | 163 ++++ src/libsystemd-bus/bus-type.h | 34 + src/libsystemd-bus/busctl.c | 68 ++ src/libsystemd-bus/sd-bus-protocol.h | 96 +++ src/libsystemd-bus/sd-bus.c | 1437 +++++++++++++++++++++++++++++++ src/libsystemd-bus/sd-bus.h | 135 +++ src/libsystemd-bus/test-bus-marshal.c | 129 +++ src/libsystemd-bus/test-bus-signature.c | 74 ++ 21 files changed, 4529 insertions(+), 1 deletion(-) create mode 120000 src/libsystemd-bus/Makefile create mode 100644 src/libsystemd-bus/bus-control.c create mode 100644 src/libsystemd-bus/bus-error.c create mode 100644 src/libsystemd-bus/bus-error.h create mode 100644 src/libsystemd-bus/bus-internal.c create mode 100644 src/libsystemd-bus/bus-internal.h create mode 100644 src/libsystemd-bus/bus-message.c create mode 100644 src/libsystemd-bus/bus-message.h create mode 100644 src/libsystemd-bus/bus-signature.c create mode 100644 src/libsystemd-bus/bus-signature.h create mode 100644 src/libsystemd-bus/bus-type.c create mode 100644 src/libsystemd-bus/bus-type.h create mode 100644 src/libsystemd-bus/busctl.c create mode 100644 src/libsystemd-bus/sd-bus-protocol.h create mode 100644 src/libsystemd-bus/sd-bus.c create mode 100644 src/libsystemd-bus/sd-bus.h create mode 100644 src/libsystemd-bus/test-bus-marshal.c create mode 100644 src/libsystemd-bus/test-bus-signature.c diff --git a/.gitignore b/.gitignore index 7385107894..917b0663bf 100644 --- a/.gitignore +++ b/.gitignore @@ -80,6 +80,8 @@ /systemd-user-sessions /systemd-vconsole-setup /tags +/test-bus-marshal +/test-bus-signature /test-calendarspec /test-catalog /test-cgroup diff --git a/Makefile.am b/Makefile.am index 37eeb01d58..c94c192ce3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1638,6 +1638,50 @@ EXTRA_DIST += \ src/libsystemd-daemon/libsystemd-daemon.pc.in \ src/libsystemd-daemon/libsystemd-daemon.sym +# ------------------------------------------------------------------------------ +libsystemd_bus_la_SOURCES = \ + src/libsystemd-bus/sd-bus.c \ + src/libsystemd-bus/sd-bus.h \ + src/libsystemd-bus/sd-bus-protocol.h \ + src/libsystemd-bus/bus-control.c \ + src/libsystemd-bus/bus-error.c \ + src/libsystemd-bus/bus-error.h \ + src/libsystemd-bus/bus-internal.c \ + src/libsystemd-bus/bus-internal.h \ + src/libsystemd-bus/bus-message.c \ + src/libsystemd-bus/bus-message.h \ + src/libsystemd-bus/bus-signature.c \ + src/libsystemd-bus/bus-type.c \ + src/libsystemd-bus/bus-type.h + +noinst_LTLIBRARIES += \ + libsystemd-bus.la + +noinst_tests += \ + test-bus-marshal \ + test-bus-signature + +test_bus_marshal_SOURCES = \ + src/libsystemd-bus/test-bus-marshal.c + +test_bus_marshal_LDADD = \ + libsystemd-shared.la \ + libsystemd-bus.la \ + $(GLIB_LIBS) \ + $(DBUS_LIBS) + +test_bus_marshal_CFLAGS = \ + $(AM_CFLAGS) \ + $(GLIB_CFLAGS) \ + $(DBUS_CFLAGS) + +test_bus_signature_SOURCES = \ + src/libsystemd-bus/test-bus-signature.c + +test_bus_signature_LDADD = \ + libsystemd-shared.la \ + libsystemd-bus.la + # ------------------------------------------------------------------------------ if ENABLE_GTK_DOC SUBDIRS += \ diff --git a/configure.ac b/configure.ac index 5d1be3f851..ae492cfe62 100644 --- a/configure.ac +++ b/configure.ac @@ -724,9 +724,11 @@ AM_CONDITIONAL(ENABLE_FIRMWARE, [test "x${FIRMWARE_PATH}" != "x"]) AC_ARG_ENABLE([gudev], AS_HELP_STRING([--disable-gudev], [disable Gobject libudev support @<:@default=enabled@:>@]), [], [enable_gudev=yes]) -AS_IF([test "x$enable_gudev" = "xyes"], [ PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.22.0 gobject-2.0 >= 2.22.0]) ]) +AS_IF([test "x$enable_gudev" = "xyes"], [ PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.22.0 gobject-2.0 >= 2.22.0 gio-2.0]) ]) AM_CONDITIONAL([ENABLE_GUDEV], [test "x$enable_gudev" = "xyes"]) +AS_IF([test "x$enable_gudev" = "xyes"], [ AC_DEFINE(HAVE_GLIB, 1, [Define if glib is available]) ]) + # ------------------------------------------------------------------------------ AC_ARG_ENABLE([keymap], AS_HELP_STRING([--disable-keymap], [disable keymap fixup support @<:@default=enabled@:>@]), diff --git a/src/libsystemd-bus/Makefile b/src/libsystemd-bus/Makefile new file mode 120000 index 0000000000..d0b0e8e008 --- /dev/null +++ b/src/libsystemd-bus/Makefile @@ -0,0 +1 @@ +../Makefile \ No newline at end of file diff --git a/src/libsystemd-bus/bus-control.c b/src/libsystemd-bus/bus-control.c new file mode 100644 index 0000000000..e4cc251a4b --- /dev/null +++ b/src/libsystemd-bus/bus-control.c @@ -0,0 +1,322 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include + +#include "strv.h" + +#include "sd-bus.h" +#include "bus-internal.h" +#include "bus-message.h" + +const char *sd_bus_get_unique_name(sd_bus *bus) { + if (!bus) + return NULL; + + return bus->unique_name; +} + +int sd_bus_request_name(sd_bus *bus, const char *name, int flags) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; + uint32_t ret; + int r; + + if (!bus) + return -EINVAL; + if (!name) + return -EINVAL; + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.DBus", + "/", + "org.freedesktop.DBus", + "RequestName", + &m); + if (r < 0) + return r; + + r = sd_bus_message_append(m, "su", name, flags); + if (r < 0) + return r; + + r = sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, NULL, &reply); + if (r < 0) + return r; + + r = sd_bus_message_read(reply, "u", &ret); + if (r < 0) + return r; + + return ret; +} + +int sd_bus_release_name(sd_bus *bus, const char *name) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; + uint32_t ret; + int r; + + if (!bus) + return -EINVAL; + if (!name) + return -EINVAL; + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.DBus", + "/", + "org.freedesktop.DBus", + "ReleaseName", + &m); + if (r < 0) + return r; + + r = sd_bus_message_append(m, "s", name); + if (r < 0) + return r; + + r = sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, NULL, &reply); + if (r < 0) + return r; + + r = sd_bus_message_read(reply, "u", &ret); + if (r < 0) + return r; + + return ret; +} + +int sd_bus_list_names(sd_bus *bus, char ***l) { + _cleanup_bus_message_unref_ sd_bus_message *m1 = NULL, *reply1 = NULL, *m2 = NULL, *reply2 = NULL; + _cleanup_strv_free_ char **a = NULL, **b = NULL; + char **x = NULL; + int r; + + if (!bus) + return -EINVAL; + if (!l) + return -EINVAL; + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.DBus", + "/", + "org.freedesktop.DBus", + "ListNames", + &m1); + if (r < 0) + return r; + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.DBus", + "/", + "org.freedesktop.DBus", + "ListActivatableNames", + &m2); + if (r < 0) + return r; + + r = sd_bus_send_with_reply_and_block(bus, m1, (uint64_t) -1, NULL, &reply1); + if (r < 0) + return r; + + r = sd_bus_send_with_reply_and_block(bus, m2, (uint64_t) -1, NULL, &reply2); + if (r < 0) + return r; + + r = sd_bus_message_read(reply1, "as", &a); + if (r < 0) + return r; + + r = sd_bus_message_read(reply2, "as", &b); + if (r < 0) + return r; + + x = strv_merge(a, b); + if (!x) + return -ENOMEM; + + *l = strv_uniq(x); + return 0; +} + +int sd_bus_get_owner(sd_bus *bus, const char *name, char **owner) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; + int r; + + if (!bus) + return -EINVAL; + if (!name) + return -EINVAL; + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.DBus", + "/", + "org.freedesktop.DBus", + "GetNameOwner", + &m); + if (r < 0) + return r; + + r = sd_bus_message_append(m, "s", name); + if (r < 0) + return r; + + r = sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, NULL, &reply); + if (r < 0) + return r; + + return sd_bus_message_read(reply, "s", owner); +} + +int sd_bus_get_owner_uid(sd_bus *bus, const char *name, uid_t *uid) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; + uint32_t u; + int r; + + if (!bus) + return -EINVAL; + if (!name) + return -EINVAL; + if (!uid) + return -EINVAL; + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.DBus", + "/", + "org.freedesktop.DBus", + "GetConnectionUnixUser", + &m); + if (r < 0) + return r; + + r = sd_bus_message_append(m, "s", name); + if (r < 0) + return r; + + r = sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, NULL, &reply); + if (r < 0) + return r; + + r = sd_bus_message_read(reply, "u", &u); + if (r < 0) + return r; + + *uid = (uid_t) u; + return 0; +} + +int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; + uint32_t u; + int r; + + if (!bus) + return -EINVAL; + if (!name) + return -EINVAL; + if (!pid) + return -EINVAL; + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.DBus", + "/", + "org.freedesktop.DBus", + "GetConnectionUnixUser", + &m); + if (r < 0) + return r; + + r = sd_bus_message_append(m, "s", name); + if (r < 0) + return r; + + r = sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, NULL, &reply); + if (r < 0) + return r; + + r = sd_bus_message_read(reply, "u", &u); + if (r < 0) + return r; + + if (u == 0) + return -EIO; + + *pid = (uid_t) u; + return 0; +} + +int sd_bus_add_match(sd_bus *bus, const char *match) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; + int r; + + if (!bus) + return -EINVAL; + if (!match) + return -EINVAL; + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.DBus", + "/", + "org.freedesktop.DBus", + "AddMatch", + &m); + if (r < 0) + return r; + + r = sd_bus_message_append(m, "s", match); + if (r < 0) + return r; + + return sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, NULL, &reply); +} + +int sd_bus_remove_match(sd_bus *bus, const char *match) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; + int r; + + if (!bus) + return -EINVAL; + if (!match) + return -EINVAL; + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.DBus", + "/", + "org.freedesktop.DBus", + "RemoveMatch", + &m); + if (r < 0) + return r; + + r = sd_bus_message_append(m, "s", match); + if (r < 0) + return r; + + return sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, NULL, &reply); +} diff --git a/src/libsystemd-bus/bus-error.c b/src/libsystemd-bus/bus-error.c new file mode 100644 index 0000000000..0832022ee9 --- /dev/null +++ b/src/libsystemd-bus/bus-error.c @@ -0,0 +1,166 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include +#include +#include +#include +#include + +#include "util.h" + +#include "sd-bus.h" +#include "bus-error.h" + +void sd_bus_error_free(sd_bus_error *e) { + if (!e) + return; + + if (e->need_free) { + free((void*) e->name); + free((void*) e->message); + } + + e->name = e->message = NULL; + e->need_free = false; +} + +int sd_bus_error_set(sd_bus_error *e, const char *name, const char *format, ...) { + char *n, *m = NULL; + va_list ap; + int r; + + if (!e) + return 0; + if (sd_bus_error_is_set(e)) + return -EINVAL; + if (!name) + return -EINVAL; + + n = strdup(name); + if (!n) + return -ENOMEM; + + if (format) { + va_start(ap, format); + r = vasprintf(&m, format, ap); + va_end(ap); + + if (r < 0) { + free(n); + return -ENOMEM; + } + } + + e->name = n; + e->message = m; + e->need_free = true; + + return 0; +} + +int sd_bus_error_copy(sd_bus_error *dest, const sd_bus_error *e) { + if (!dest) + return 0; + if (sd_bus_error_is_set(dest)) + return -EINVAL; + if (!sd_bus_error_is_set(e)) + return 0; + + if (e->need_free) { + char *x, *y = NULL; + + x = strdup(e->name); + if (!x) + return -ENOMEM; + + if (e->message) { + y = strdup(e->message); + if (!y) { + free(x); + return -ENOMEM; + } + } + + dest->name = x; + dest->message = y; + dest->need_free = true; + } else + *dest = *e; + + return 0; +} + +void sd_bus_error_set_const(sd_bus_error *e, const char *name, const char *message) { + if (!e) + return; + if (sd_bus_error_is_set(e)) + return; + + e->name = name; + e->message = message; +} + +int sd_bus_error_is_set(const sd_bus_error *e) { + if (!e) + return 0; + + return e->name || e->message || e->need_free; +} + +int sd_bus_error_has_name(const sd_bus_error *e, const char *name) { + if (!e) + return 0; + + return streq_ptr(e->name, name); +} + +int bus_error_to_errno(const sd_bus_error* e) { + + /* Better replce this with a gperf table */ + + if (!e->name) + return -EIO; + + if (streq(e->name, "org.freedesktop.DBus.Error.NoMemory")) + return -ENOMEM; + + if (streq(e->name, "org.freedesktop.DBus.Error.AuthFailed") || + streq(e->name, "org.freedesktop.DBus.Error.AccessDenied")) + return -EPERM; + + return -EIO; +} + +int bus_error_from_errno(sd_bus_error *e, int error) { + if (!e) + return error; + + if (error == -ENOMEM) + sd_bus_error_set_const(e, "org.freedesktop.DBus.Error.NoMemory", strerror(-error)); + else if (error == -EPERM || error == EACCES) + sd_bus_error_set_const(e, "org.freedesktop.DBus.Error.AccessDenied", strerror(-error)); + else + sd_bus_error_set_const(e, "org.freedesktop.DBus.Error.Failed", "Operation failed"); + + return error; +} diff --git a/src/libsystemd-bus/bus-error.h b/src/libsystemd-bus/bus-error.h new file mode 100644 index 0000000000..f49e6c7398 --- /dev/null +++ b/src/libsystemd-bus/bus-error.h @@ -0,0 +1,27 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include "sd-bus.h" + +int bus_error_to_errno(const sd_bus_error *e); +int bus_error_from_errno(sd_bus_error *e, int error); diff --git a/src/libsystemd-bus/bus-internal.c b/src/libsystemd-bus/bus-internal.c new file mode 100644 index 0000000000..19398af6cb --- /dev/null +++ b/src/libsystemd-bus/bus-internal.c @@ -0,0 +1,22 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include "bus-internal.h" diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h new file mode 100644 index 0000000000..d8cdc48ce0 --- /dev/null +++ b/src/libsystemd-bus/bus-internal.h @@ -0,0 +1,101 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include +#include + +#include "hashmap.h" +#include "list.h" +#include "util.h" + +#include "sd-bus.h" +#include "bus-error.h" + +struct reply_callback { + sd_message_handler_t callback; + void *userdata; + usec_t timeout; + uint64_t serial; +}; + +struct filter_callback { + sd_message_handler_t callback; + void *userdata; + + LIST_FIELDS(struct filter_callback, callbacks); +}; + +enum bus_state { + BUS_OPENING, + BUS_AUTHENTICATING, + BUS_HELLO, + BUS_RUNNING, + BUS_CLOSED +}; + +struct sd_bus { + unsigned n_ref; + enum bus_state state; + int fd; + int message_version; + bool can_fds:1; + bool send_hello:1; + + void *rbuffer; + size_t rbuffer_size; + + sd_bus_message **rqueue; + unsigned rqueue_size; + + sd_bus_message **wqueue; + unsigned wqueue_size; + size_t windex; + + uint64_t serial; + + char *unique_name; + + Hashmap *reply_callbacks; + LIST_HEAD(struct filter_callback, filter_callbacks); + + union { + struct sockaddr sa; + struct sockaddr_un un; + struct sockaddr_in in; + struct sockaddr_in6 in6; + } sockaddr; + socklen_t sockaddr_size; + + sd_id128_t peer; + + char *address; + unsigned address_index; + + int last_connect_error; + + struct iovec auth_iovec[3]; + unsigned auth_index; + size_t auth_size; + char *auth_uid; +}; diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c new file mode 100644 index 0000000000..4c5588cf8a --- /dev/null +++ b/src/libsystemd-bus/bus-message.c @@ -0,0 +1,1413 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include + +#include "util.h" + +#include "bus-message.h" +#include "sd-bus.h" +#include "bus-internal.h" +#include "bus-type.h" +#include "bus-signature.h" + +int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored); + +static void message_free(sd_bus_message *m) { + unsigned i; + + assert(m); + + if (m->free_header) + free(m->header); + + if (m->free_fields) + free(m->fields); + + if (m->free_body) + free(m->body); + + for (i = 0; i < m->n_fds; i++) + close_nointr_nofail(m->fds[i]); + + for (i = 0; i < m->n_containers; i++) + free(m->sub_containers[i].signature); + + free(m->sub_containers); + free(m); +} + +static void* buffer_extend(void **p, uint32_t *sz, size_t align, size_t extend) { + size_t start, n; + void *k; + + assert(p); + assert(sz); + assert(align > 0); + + start = ALIGN_TO((size_t) *sz, align); + n = start + extend; + + if (n == *sz) + return (uint8_t*) *p + start; + + if (n > (size_t) ((uint32_t) -1)) + return NULL; + + k = realloc(*p, n); + if (!k) + return NULL; + + /* Zero out padding */ + if (start > *sz) + memset((uint8_t*) k + *sz, 0, start - *sz); + + *p = k; + *sz = n; + + return (uint8_t*) k + start; +} + +static void *message_extend_fields(sd_bus_message *m, size_t align, size_t sz) { + void *p, *o; + + assert(m); + + o = m->fields; + p = buffer_extend(&m->fields, &m->header->fields_size, align, sz); + if (!p) + return NULL; + + if (o != m->fields) { + /* Adjust quick access pointers */ + + if (m->path) + m->path = (const char*) m->fields + (m->path - (const char*) o); + if (m->interface) + m->interface = (const char*) m->fields + (m->interface - (const char*) o); + if (m->member) + m->member = (const char*) m->fields + (m->member - (const char*) o); + if (m->destination) + m->destination = (const char*) m->fields + (m->destination - (const char*) o); + if (m->sender) + m->sender = (const char*) m->fields + (m->sender - (const char*) o); + if (m->signature) + m->signature = (const char*) m->fields + (m->signature - (const char*) o); + if (m->error.name) + m->error.name = (const char*) m->fields + (m->error.name - (const char*) o); + } + + m->free_fields = true; + + return p; +} + +static int message_append_field_string( + sd_bus_message *m, + uint8_t h, + char type, + const char *s, + const char **ret) { + + size_t l; + uint8_t *p; + + assert(m); + + l = strlen(s); + if (l > (size_t) (uint32_t) -1) + return -EINVAL; + + /* field id byte + signature length + signature 's' + NUL + string length + string + NUL */ + p = message_extend_fields(m, 8, 4 + 4 + l + 1); + if (!p) + return -ENOMEM; + + p[0] = h; + p[1] = 1; + p[2] = type; + p[3] = 0; + + ((uint32_t*) p)[1] = l; + memcpy(p + 8, s, l + 1); + + if (ret) + *ret = (const char*) p + 8; + + return 0; +} + +static int message_append_field_signature( + sd_bus_message *m, + uint8_t h, + const char *s, + const char **ret) { + + size_t l; + uint8_t *p; + + assert(m); + + l = strlen(s); + if (l > 255) + return -EINVAL; + + /* field id byte + signature length + signature 'g' + NUL + string length + string + NUL */ + p = message_extend_fields(m, 8, 4 + 1 + l + 1); + if (!p) + return -ENOMEM; + + p[0] = h; + p[1] = 1; + p[2] = SD_BUS_TYPE_SIGNATURE; + p[3] = 0; + p[4] = l; + memcpy(p + 5, s, l + 1); + + if (ret) + *ret = (const char*) p + 5; + + return 0; +} + +static int message_append_field_uint32(sd_bus_message *m, uint8_t h, uint32_t x) { + uint8_t *p; + + assert(m); + + /* field id byte + signature length + signature 'u' + NUL + value */ + p = message_extend_fields(m, 8, 4 + 4); + if (!p) + return -ENOMEM; + + p[0] = h; + p[1] = 1; + p[2] = SD_BUS_TYPE_UINT32; + p[3] = 0; + + ((uint32_t*) p)[1] = x; + + return 0; +} + +static sd_bus_message *message_new(sd_bus *bus, uint8_t type) { + sd_bus_message *m; + + m = malloc0(ALIGN(sizeof(struct sd_bus_message)) + sizeof(struct bus_header)); + if (!m) + return NULL; + + m->n_ref = 1; + m->header = (struct bus_header*) ((uint8_t*) m + ALIGN(sizeof(struct sd_bus_message))); + +#if __BYTE_ORDER == __BIG_ENDIAN + m->header->endian = SD_BUS_BIG_ENDIAN; +#else + m->header->endian = SD_BUS_LITTLE_ENDIAN; +#endif + m->header->type = type; + m->header->version = bus ? bus->message_version : 1; + + return m; +} + +int sd_bus_message_new_signal( + sd_bus *bus, + const char *path, + const char *interface, + const char *member, + sd_bus_message **m) { + + sd_bus_message *t; + int r; + + if (!path) + return -EINVAL; + if (!interface) + return -EINVAL; + if (!member) + return -EINVAL; + + t = message_new(bus, SD_BUS_MESSAGE_TYPE_SIGNAL); + if (!t) + return -ENOMEM; + + r = message_append_field_string(t, SD_BUS_MESSAGE_HEADER_PATH, SD_BUS_TYPE_OBJECT_PATH, path, &t->path); + if (r < 0) + goto fail; + r = message_append_field_string(t, SD_BUS_MESSAGE_HEADER_INTERFACE, SD_BUS_TYPE_STRING, interface, &t->interface); + if (r < 0) + goto fail; + r = message_append_field_string(t, SD_BUS_MESSAGE_HEADER_MEMBER, SD_BUS_TYPE_STRING, member, &t->member); + if (r < 0) + goto fail; + + *m = t; + return 0; + +fail: + sd_bus_message_unref(t); + return r; +} + +int sd_bus_message_new_method_call( + sd_bus *bus, + const char *destination, + const char *path, + const char *interface, + const char *member, + sd_bus_message **m) { + + sd_bus_message *t; + int r; + + if (!path) + return -EINVAL; + if (!member) + return -EINVAL; + + t = message_new(bus, SD_BUS_MESSAGE_TYPE_METHOD_CALL); + if (!t) + return -ENOMEM; + + r = message_append_field_string(t, SD_BUS_MESSAGE_HEADER_PATH, SD_BUS_TYPE_OBJECT_PATH, path, &t->path); + if (r < 0) + goto fail; + r = message_append_field_string(t, SD_BUS_MESSAGE_HEADER_MEMBER, SD_BUS_TYPE_STRING, member, &t->member); + if (r < 0) + goto fail; + + if (interface) { + r = message_append_field_string(t, SD_BUS_MESSAGE_HEADER_INTERFACE, SD_BUS_TYPE_STRING, interface, &t->interface); + if (r < 0) + goto fail; + } + + if (destination) { + r = message_append_field_string(t, SD_BUS_MESSAGE_HEADER_DESTINATION, SD_BUS_TYPE_STRING, destination, &t->destination); + if (r < 0) + goto fail; + } + + *m = t; + return 0; + +fail: + message_free(t); + return r; +} + +int sd_bus_message_new_method_return( + sd_bus *bus, + sd_bus_message *call, + sd_bus_message **m) { + + sd_bus_message *t; + int r; + + if (!call) + return -EINVAL; + if (call->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) + return -EINVAL; + + t = message_new(bus, SD_BUS_MESSAGE_TYPE_METHOD_RETURN); + if (!t) + return -ENOMEM; + + t->reply_serial = BUS_MESSAGE_SERIAL(call); + r = message_append_field_uint32(t, SD_BUS_MESSAGE_HEADER_REPLY_SERIAL, t->reply_serial); + if (r < 0) + goto fail; + + if (call->sender) { + r = message_append_field_string(t, SD_BUS_MESSAGE_HEADER_DESTINATION, SD_BUS_TYPE_STRING, call->sender, &t->sender); + if (r < 0) + goto fail; + } + + *m = t; + return 0; + +fail: + message_free(t); + return r; +} + +int sd_bus_message_new_method_error( + sd_bus *bus, + sd_bus_message *call, + const sd_bus_error *e, + sd_bus_message **m) { + + sd_bus_message *t; + int r; + + if (!call) + return -EINVAL; + if (call->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) + return -EINVAL; + if (!e) + return -EINVAL; + if (!e->name) + return -EINVAL; + + t = message_new(bus, SD_BUS_MESSAGE_TYPE_METHOD_ERROR); + if (!t) + return -ENOMEM; + + t->reply_serial = BUS_MESSAGE_SERIAL(call); + r = message_append_field_uint32(t, SD_BUS_MESSAGE_HEADER_REPLY_SERIAL, t->reply_serial); + if (r < 0) + goto fail; + + if (call->sender) { + r = message_append_field_string(t, SD_BUS_MESSAGE_HEADER_DESTINATION, SD_BUS_TYPE_STRING, call->sender, &t->sender); + if (r < 0) + goto fail; + } + + r = message_append_field_string(t, SD_BUS_MESSAGE_HEADER_ERROR_NAME, SD_BUS_TYPE_STRING, e->name, &t->error.name); + if (r < 0) + goto fail; + + if (e->message) { + r = message_append_basic(t, SD_BUS_TYPE_STRING, e->message, (const void**) &t->error.message); + if (r < 0) + goto fail; + } + + *m = t; + return 0; + +fail: + message_free(t); + return r; +} + +sd_bus_message* sd_bus_message_ref(sd_bus_message *m) { + if (!m) + return NULL; + + assert(m->n_ref > 0); + m->n_ref++; + + return m; +} + +sd_bus_message* sd_bus_message_unref(sd_bus_message *m) { + if (!m) + return NULL; + + assert(m->n_ref > 0); + m->n_ref--; + + if (m->n_ref <= 0) + message_free(m); + + return NULL; +} + +int sd_bus_message_get_type(sd_bus_message *m, uint8_t *type) { + if (!m) + return -EINVAL; + if (!type) + return -EINVAL; + + *type = m->header->type; + return 0; +} + +int sd_bus_message_get_serial(sd_bus_message *m, uint64_t *serial) { + if (!m) + return -EINVAL; + if (!serial) + return -EINVAL; + if (m->header->serial == 0) + return -ENOENT; + + *serial = BUS_MESSAGE_SERIAL(m); + return 0; +} + +int sd_bus_message_get_reply_serial(sd_bus_message *m, uint64_t *serial) { + if (!m) + return -EINVAL; + if (!serial) + return -EINVAL; + if (m->reply_serial == 0) + return -ENOENT; + + *serial = m->reply_serial; + return 0; +} + +int sd_bus_message_get_no_reply(sd_bus_message *m) { + if (!m) + return -EINVAL; + + return m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_CALL ? !!(m->header->flags & SD_BUS_MESSAGE_NO_REPLY_EXPECTED) : 0; +} + +const char *sd_bus_message_get_path(sd_bus_message *m) { + if (!m) + return NULL; + + return m->path; +} + +const char *sd_bus_message_get_interface(sd_bus_message *m) { + if (!m) + return NULL; + + return m->interface; +} + +const char *sd_bus_message_get_member(sd_bus_message *m) { + if (!m) + return NULL; + + return m->member; +} +const char *sd_bus_message_get_destination(sd_bus_message *m) { + if (!m) + return NULL; + + return m->destination; +} + +const char *sd_bus_message_get_sender(sd_bus_message *m) { + if (!m) + return NULL; + + return m->sender; +} + +const sd_bus_error *sd_bus_message_get_error(sd_bus_message *m) { + if (!m) + return NULL; + + if (!sd_bus_error_is_set(&m->error)) + return NULL; + + return &m->error; +} + +int sd_bus_message_get_uid(sd_bus_message *m, uid_t *uid) { + if (!m) + return -EINVAL; + if (!m->uid_valid) + return -ENOENT; + + *uid = m->uid; + return 0; +} + +int sd_bus_message_get_gid(sd_bus_message *m, gid_t *gid) { + if (!m) + return -EINVAL; + if (!m->gid_valid) + return -ENOENT; + + *gid = m->gid; + return 0; +} + +int sd_bus_message_get_pid(sd_bus_message *m, pid_t *pid) { + if (!m) + return -EINVAL; + if (m->pid <= 0) + return -ENOENT; + + *pid = m->pid; + return 0; +} + +int sd_bus_message_get_tid(sd_bus_message *m, pid_t *tid) { + if (!m) + return -EINVAL; + if (m->tid <= 0) + return -ENOENT; + + *tid = m->tid; + return 0; +} + +int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, const char *member) { + if (!m) + return -EINVAL; + + if (m->header->type != SD_BUS_MESSAGE_TYPE_SIGNAL) + return 0; + + if (interface && (!m->interface || !streq(m->interface, interface))) + return 0; + + if (member && (!m->member || !streq(m->member, member))) + return 0; + + return 1; +} + +int sd_bus_message_is_method_call(sd_bus_message *m, const char *interface, const char *member) { + if (!m) + return -EINVAL; + + if (m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) + return 0; + + if (interface && (!m->interface || !streq(m->interface, interface))) + return 0; + + if (member && (!m->member || !streq(m->member, member))) + return 0; + + return 1; +} + +int sd_bus_message_is_method_error(sd_bus_message *m, const char *name) { + if (!m) + return -EINVAL; + + if (m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_ERROR) + return 0; + + if (name && (!m->error.name || !streq(m->error.name, name))) + return 0; + + return 1; +} + +int sd_bus_message_set_no_reply(sd_bus_message *m, int b) { + if (!m) + return -EINVAL; + if (m->sealed) + return -EPERM; + if (m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) + return -EPERM; + + if (b) + m->header->flags |= SD_BUS_MESSAGE_NO_REPLY_EXPECTED; + else + m->header->flags &= ~SD_BUS_MESSAGE_NO_REPLY_EXPECTED; + + return 0; +} + +static struct bus_container *message_get_container(sd_bus_message *m) { + assert(m); + + if (m->n_containers == 0) + return &m->root_container; + + assert(m->sub_containers); + return m->sub_containers + m->n_containers - 1; +} + +static void *message_extend_body(sd_bus_message *m, size_t align, size_t sz) { + void *p, *o; + size_t added; + struct bus_container *c; + + assert(m); + + o = m->body; + added = m->header->body_size; + + p = buffer_extend(&m->body, &m->header->body_size, align, sz); + if (!p) + return NULL; + + added = m->header->body_size - added; + + for (c = m->sub_containers; c < m->sub_containers + m->n_containers; c++) + if (c->array_size) { + c->array_size = (uint32_t*) ((uint8_t*) m->body + ((uint8_t*) c->array_size - (uint8_t*) o)); + *c->array_size += added; + } + + if (o != m->body) { + if (m->error.message) + m->error.message = (const char*) m->body + (m->error.message - (const char*) o); + } + + m->free_body = true; + + return p; +} + +int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored) { + struct bus_container *c; + size_t sz, align, nindex; + uint32_t k; + void *a; + char *e = NULL; + + if (!m) + return -EINVAL; + if (m->sealed) + return -EPERM; + if (!bus_type_is_basic(type)) + return -EINVAL; + + c = message_get_container(m); + + if (c->signature && c->signature[c->index]) { + /* Container signature is already set */ + + if (c->signature[c->index] != type) + return -EINVAL; + } else { + /* Maybe we can append to the signature? But only if this is the top-level container*/ + if (c->enclosing != 0) + return -EINVAL; + + e = strextend(&c->signature, CHAR_TO_STR(type), NULL); + if (!e) + return -ENOMEM; + } + + nindex = c->index + 1; + + switch (type) { + + case SD_BUS_TYPE_STRING: + case SD_BUS_TYPE_OBJECT_PATH: + align = 4; + sz = 4 + strlen(p) + 1; + break; + + case SD_BUS_TYPE_SIGNATURE: + align = 1; + sz = 1 + strlen(p) + 1; + break; + + case SD_BUS_TYPE_BOOLEAN: + align = sz = 4; + + assert_cc(sizeof(int) == sizeof(uint32_t)); + memcpy(&k, p, 4); + k = !!k; + p = &k; + break; + + default: + align = bus_type_get_alignment(type); + sz = bus_type_get_size(type); + break; + } + + assert(align > 0); + assert(sz > 0); + + a = message_extend_body(m, align, sz); + if (!a) { + /* Truncate extended signature again */ + if (e) + c->signature[c->index] = 0; + + return -ENOMEM; + } + + if (type == SD_BUS_TYPE_STRING || type == SD_BUS_TYPE_OBJECT_PATH) { + *(uint32_t*) a = sz - 5; + memcpy((uint8_t*) a + 4, p, sz - 4); + + if (stored) + *stored = (const uint8_t*) a + 4; + + } else if (type == SD_BUS_TYPE_SIGNATURE) { + *(uint8_t*) a = sz - 1; + memcpy((uint8_t*) a + 1, p, sz - 1); + + if (stored) + *stored = (const uint8_t*) a + 1; + + } else { + memcpy(a, p, sz); + + if (stored) + *stored = a; + } + + if (c->enclosing != SD_BUS_TYPE_ARRAY) + c->index = nindex; + + return 0; +} + +int sd_bus_message_append_basic(sd_bus_message *m, char type, const void *p) { + return message_append_basic(m, type, p, NULL); +} + +static int bus_message_open_array( + sd_bus_message *m, + struct bus_container *c, + const char *contents, + uint32_t **array_size) { + + char *e = NULL; + size_t nindex; + void *a, *b; + int alignment; + size_t saved; + + assert(m); + assert(c); + assert(contents); + assert(array_size); + + if (!signature_is_single(contents)) + return -EINVAL; + + alignment = bus_type_get_alignment(contents[0]); + if (alignment < 0) + return alignment; + + if (c->signature && c->signature[c->index]) { + + /* Verify the existing signature */ + + if (c->signature[c->index] != SD_BUS_TYPE_ARRAY) + return -EINVAL; + + if (!startswith(c->signature + c->index + 1, contents)) + return -EINVAL; + + nindex = c->index + 1 + strlen(contents); + } else { + if (c->enclosing != 0) + return -EINVAL; + + /* Extend the existing signature */ + + e = strextend(&c->signature, CHAR_TO_STR(SD_BUS_TYPE_ARRAY), contents, NULL); + if (!e) + return -ENOMEM; + + nindex = e - c->signature; + } + + saved = m->header->body_size; + a = message_extend_body(m, 4, 4); + if (!a) { + /* Truncate extended signature again */ + if (e) + c->signature[c->index] = 0; + + return -ENOMEM; + } + b = m->body; + + if (!message_extend_body(m, alignment, 0)) { + /* Add alignment between size and first element */ + if (e) + c->signature[c->index] = 0; + + m->header->body_size = saved; + return -ENOMEM; + } + + if (c->enclosing != SD_BUS_TYPE_ARRAY) + c->index = nindex; + + /* m->body might have changed so let's readjust a */ + a = (uint8_t*) m->body + ((uint8_t*) a - (uint8_t*) b); + *(uint32_t*) a = 0; + + *array_size = a; + return 0; +} + +static int bus_message_open_variant( + sd_bus_message *m, + struct bus_container *c, + const char *contents) { + + char *e = NULL; + size_t l, nindex; + void *a; + + assert(m); + assert(c); + assert(contents); + + if (!signature_is_single(contents)) + return -EINVAL; + + if (*contents == SD_BUS_TYPE_DICT_ENTRY_BEGIN) + return -EINVAL; + + if (c->signature && c->signature[c->index]) { + + if (c->signature[c->index] != SD_BUS_TYPE_VARIANT) + return -EINVAL; + + } else { + if (c->enclosing != 0) + return -EINVAL; + + e = strextend(&c->signature, CHAR_TO_STR(SD_BUS_TYPE_VARIANT), NULL); + if (!e) + return -ENOMEM; + } + + nindex = c->index + 1; + + l = strlen(contents); + a = message_extend_body(m, 1, 1 + l + 1); + if (!a) { + /* Truncate extended signature again */ + if (e) + c->signature[c->index] = 0; + + return -ENOMEM; + } + + *(uint8_t*) a = l; + memcpy((uint8_t*) a + 1, contents, l + 1); + + if (c->enclosing != SD_BUS_TYPE_ARRAY) + c->index = nindex; + + return 0; +} + +static int bus_message_open_struct( + sd_bus_message *m, + struct bus_container *c, + const char *contents) { + + size_t nindex; + char *e = NULL; + + assert(m); + assert(c); + assert(contents); + + if (!signature_is_valid(contents, false)) + return -EINVAL; + + if (c->signature && c->signature[c->index]) { + size_t l; + + l = strlen(contents); + + if (c->signature[c->index] != SD_BUS_TYPE_STRUCT_BEGIN || + !startswith(c->signature + c->index + 1, contents) || + c->signature[c->index + 1 + l] != SD_BUS_TYPE_STRUCT_END) + return -EINVAL; + + nindex = c->index + 1 + l + 1; + } else { + if (c->enclosing != 0) + return -EINVAL; + + e = strextend(&c->signature, CHAR_TO_STR(SD_BUS_TYPE_STRUCT_BEGIN), contents, CHAR_TO_STR(SD_BUS_TYPE_STRUCT_END), NULL); + if (!e) + return -ENOMEM; + + nindex = e - c->signature; + } + + /* Align contents to 8 byte boundary */ + if (!message_extend_body(m, 8, 0)) { + if (e) + c->signature[c->index] = 0; + + return -ENOMEM; + } + + if (c->enclosing != SD_BUS_TYPE_ARRAY) + c->index = nindex; + + return 0; +} + +static int bus_message_open_dict_entry( + sd_bus_message *m, + struct bus_container *c, + const char *contents) { + + size_t nindex; + + assert(m); + assert(c); + assert(contents); + + if (!signature_is_pair(contents)) + return -EINVAL; + + if (c->enclosing != SD_BUS_TYPE_ARRAY) + return -EINVAL; + + if (c->signature && c->signature[c->index]) { + size_t l; + + l = strlen(contents); + + if (c->signature[c->index] != SD_BUS_TYPE_DICT_ENTRY_BEGIN || + !startswith(c->signature + c->index + 1, contents) || + c->signature[c->index + 1 + l] != SD_BUS_TYPE_DICT_ENTRY_END) + return -EINVAL; + + nindex = c->index + 1 + l + 1; + } else + return -EINVAL; + + /* Align contents to 8 byte boundary */ + if (!message_extend_body(m, 8, 0)) + return -ENOMEM; + + if (c->enclosing != SD_BUS_TYPE_ARRAY) + c->index = nindex; + + return 0; +} + +int sd_bus_message_open_container( + sd_bus_message *m, + char type, + const char *contents) { + + struct bus_container *c, *sub; + char *signature; + uint32_t *array_size = NULL; + int r; + + if (!m) + return -EINVAL; + if (m->sealed) + return -EPERM; + if (!contents) + return -EINVAL; + + /* Make sure we have space for one more container */ + sub = realloc(m->sub_containers, sizeof(struct bus_container) * (m->n_containers + 1)); + if (!sub) + return -ENOMEM; + + m->sub_containers = sub; + + c = message_get_container(m); + + signature = strdup(contents); + if (!signature) + return -ENOMEM; + + if (type == SD_BUS_TYPE_ARRAY) + r = bus_message_open_array(m, c, contents, &array_size); + else if (type == SD_BUS_TYPE_VARIANT) + r = bus_message_open_variant(m, c, contents); + else if (type == SD_BUS_TYPE_STRUCT) + r = bus_message_open_struct(m, c, contents); + else if (type == SD_BUS_TYPE_DICT_ENTRY) + r = bus_message_open_dict_entry(m, c, contents); + else + r = -EINVAL; + + if (r < 0) { + free(signature); + return r; + } + + /* OK, let's fill it in */ + sub += m->n_containers++; + + sub->enclosing = type; + sub->signature = signature; + sub->index = 0; + sub->array_size = array_size; + + return 0; +} + +int sd_bus_message_close_container(sd_bus_message *m) { + struct bus_container *c; + + if (!m) + return -EINVAL; + if (m->sealed) + return -EPERM; + if (m->n_containers <= 0) + return -EINVAL; + + c = message_get_container(m); + + if (!c->signature) + return -EINVAL; + + if (c->enclosing != SD_BUS_TYPE_ARRAY) + if (c->signature[c->index] != 0) + return -EINVAL; + + free(c->signature); + m->n_containers--; + + return 0; +} + +static int message_append_ap( + sd_bus_message *m, + const char *types, + va_list ap) { + + const char *t; + int r; + + assert(m); + assert(types); + + for (t = types; *t; t++) { + switch (*t) { + + case SD_BUS_TYPE_BYTE: { + uint8_t x; + + x = (uint8_t) va_arg(ap, int); + r = sd_bus_message_append_basic(m, *t, &x); + break; + } + + case SD_BUS_TYPE_BOOLEAN: + case SD_BUS_TYPE_INT32: + case SD_BUS_TYPE_UINT32: { + uint32_t x; + + x = va_arg(ap, uint32_t); + r = sd_bus_message_append_basic(m, *t, &x); + break; + } + + case SD_BUS_TYPE_INT16: + case SD_BUS_TYPE_UINT16: { + uint16_t x; + + x = (uint16_t) va_arg(ap, int); + r = sd_bus_message_append_basic(m, *t, &x); + break; + } + + case SD_BUS_TYPE_INT64: + case SD_BUS_TYPE_UINT64: + case SD_BUS_TYPE_DOUBLE: { + uint64_t x; + + x = va_arg(ap, uint64_t); + r = sd_bus_message_append_basic(m, *t, &x); + break; + } + + case SD_BUS_TYPE_STRING: + case SD_BUS_TYPE_OBJECT_PATH: + case SD_BUS_TYPE_SIGNATURE: { + const char *x; + + x = va_arg(ap, const char*); + r = sd_bus_message_append_basic(m, *t, x); + break; + } + + case SD_BUS_TYPE_UNIX_FD: { + int x; + + x = va_arg(ap, int); + r = sd_bus_message_append_basic(m, *t, &x); + break; + } + + case SD_BUS_TYPE_ARRAY: { + unsigned i, n; + size_t k; + + r = signature_element_length(t + 1, &k); + if (r < 0) + return r; + + { + char s[k + 1]; + + memcpy(s, t + 1, k); + s[k] = 0; + t += k; + + r = sd_bus_message_open_container(m, SD_BUS_TYPE_ARRAY, s); + if (r < 0) + return r; + + n = va_arg(ap, unsigned); + + for (i = 0; i < n; i++) { + r = message_append_ap(m, s, ap); + if (r < 0) + return r; + } + + r = sd_bus_message_close_container(m); + } + + break; + } + + case SD_BUS_TYPE_VARIANT: { + const char *s; + + s = va_arg(ap, const char*); + if (!s) + return -EINVAL; + + r = sd_bus_message_open_container(m, SD_BUS_TYPE_VARIANT, s); + if (r < 0) + return r; + + r = message_append_ap(m, s, ap); + if (r < 0) + return r; + + r = sd_bus_message_close_container(m); + break; + } + + case SD_BUS_TYPE_STRUCT_BEGIN: + case SD_BUS_TYPE_DICT_ENTRY_BEGIN: { + size_t k; + + r = signature_element_length(t, &k); + if (r < 0) + return r; + + { + char s[k - 1]; + + memcpy(s, t + 1, k - 2); + s[k - 2] = 0; + + r = sd_bus_message_open_container(m, *t == SD_BUS_TYPE_STRUCT_BEGIN ? SD_BUS_TYPE_STRUCT : SD_BUS_TYPE_DICT_ENTRY, s); + if (r < 0) + return r; + + t += k - 1; + + r = message_append_ap(m, s, ap); + if (r < 0) + return r; + + r = sd_bus_message_close_container(m); + } + + break; + } + + default: + r = -EINVAL; + } + + if (r < 0) + return r; + } + + return 0; +} + +int sd_bus_message_append(sd_bus_message *m, const char *types, ...) { + va_list ap; + int r; + + if (!m) + return -EINVAL; + if (m->sealed) + return -EPERM; + if (!types) + return -EINVAL; + + va_start(ap, types); + r = message_append_ap(m, types, ap); + va_end(ap); + + return r; +} + +int sd_bus_message_read_type(sd_bus_message *m, char *type, char *element, size_t *length) { + return -ENOTSUP; +} + +int sd_bus_message_read_basic(sd_bus_message *m, char type, char element, const void **p, size_t *length) { + return -ENOTSUP; +} + +int sd_bus_message_read(sd_bus_message *m, const char *types, ...) { + return -ENOTSUP; +} + +int message_parse(sd_bus_message *m) { + assert(m); + + if (m->header->version != 1) + return -EIO; + + if (m->header->endian != SD_BUS_BIG_ENDIAN && + m->header->endian != SD_BUS_LITTLE_ENDIAN) + return -EIO; + + return 0; +} + +static void setup_iovec(sd_bus_message *m) { + assert(m); + assert(m->sealed); + + m->n_iovec = 0; + + m->iovec[m->n_iovec].iov_base = m->header; + m->iovec[m->n_iovec].iov_len = sizeof(*m->header); + m->n_iovec++; + + if (m->fields) { + m->iovec[m->n_iovec].iov_base = m->fields; + m->iovec[m->n_iovec].iov_len = m->header->fields_size; + m->n_iovec++; + + if (m->header->fields_size % 8 != 0) { + static const uint8_t padding[7] = { 0, 0, 0, 0, 0, 0, 0 }; + + m->iovec[m->n_iovec].iov_base = (void*) padding; + m->iovec[m->n_iovec].iov_len = 8 - m->header->fields_size % 8; + m->n_iovec++; + } + } + + if (m->body) { + m->iovec[m->n_iovec].iov_base = m->body; + m->iovec[m->n_iovec].iov_len = m->header->body_size; + m->n_iovec++; + } +} + +int message_seal(sd_bus_message *m, uint64_t serial) { + int r; + + assert(m); + + if (m->sealed) + return -EPERM; + + if (m->n_containers > 0) + return -EBADMSG; + + /* If there's a non-trivial signature set, then add it in here */ + if (!isempty(m->root_container.signature)) { + r = message_append_field_signature(m, SD_BUS_MESSAGE_HEADER_SIGNATURE, m->root_container.signature, &m->signature); + if (r < 0) + return r; + } + + if (m->n_fds > 0) { + r = message_append_field_uint32(m, SD_BUS_MESSAGE_HEADER_UNIX_FDS, m->n_fds); + if (r < 0) + return r; + } + + m->header->serial = serial; + m->sealed = true; + + setup_iovec(m); + + return 0; +} + +int sd_bus_message_set_destination(sd_bus_message *m, const char *destination) { + if (!m) + return -EINVAL; + if (!destination) + return -EINVAL; + if (m->sealed) + return -EPERM; + if (m->destination) + return -EEXIST; + + return message_append_field_string(m, SD_BUS_MESSAGE_HEADER_DESTINATION, SD_BUS_TYPE_STRING, destination, &m->destination); +} + +void message_dump(sd_bus_message *m) { + + log_info("Message %p\n" + "\tn_ref=%u\n" + "\tendian=%c\n" + "\ttype=%i\n" + "\tflags=%u\n" + "\tversion=%u\n" + "\tserial=%u\n" + "\tfields_size=%u\n" + "\tbody_size=%u\n" + "\tpath=%s\n" + "\tinterface=%s\n" + "\tmember=%s\n" + "\tdestination=%s\n" + "\tsender=%s\n" + "\tsignature=%s\n" + "\treply_serial=%u\n" + "\terror.name=%s\n" + "\terror.message=%s\n" + "\tsealed=%s\n", + m, + m->n_ref, + m->header->endian, + m->header->type, + m->header->flags, + m->header->version, + BUS_MESSAGE_SERIAL(m), + BUS_MESSAGE_FIELDS_SIZE(m), + BUS_MESSAGE_BODY_SIZE(m), + strna(m->path), + strna(m->interface), + strna(m->member), + strna(m->destination), + strna(m->sender), + strna(m->signature), + m->reply_serial, + strna(m->error.name), + strna(m->error.message), + yes_no(m->sealed)); +} + +int bus_message_get_blob(sd_bus_message *m, void **buffer, size_t *sz) { + size_t total; + unsigned i; + void *p, *e; + + assert(m); + assert(buffer); + assert(sz); + + for (i = 0, total = 0; i < m->n_iovec; i++) + total += m->iovec[i].iov_len; + + p = malloc(total); + if (!p) + return -ENOMEM; + + for (i = 0, e = p; i < m->n_iovec; i++) + e = mempcpy(e, m->iovec[i].iov_base, m->iovec[i].iov_len); + + *buffer = p; + *sz = total; + + return 0; +} diff --git a/src/libsystemd-bus/bus-message.h b/src/libsystemd-bus/bus-message.h new file mode 100644 index 0000000000..c62659e424 --- /dev/null +++ b/src/libsystemd-bus/bus-message.h @@ -0,0 +1,120 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include + +#include "macro.h" +#include "sd-bus.h" + +struct bus_container { + char enclosing; + + char *signature; + unsigned index; + + uint32_t *array_size; +}; + +_packed_ struct bus_header { + uint8_t endian; + uint8_t type; + uint8_t flags; + uint8_t version; + uint32_t body_size; + uint32_t serial; + uint32_t fields_size; +}; + +struct sd_bus_message { + unsigned n_ref; + + uint32_t reply_serial; + + const char *path; + const char *interface; + const char *member; + const char *destination; + const char *sender; + const char *signature; + + sd_bus_error error; + + uid_t uid; + gid_t gid; + pid_t pid; + pid_t tid; + + bool sealed:1; + bool uid_valid:1; + bool gid_valid:1; + bool free_header:1; + bool free_fields:1; + bool free_body:1; + + struct bus_header *header; + void *fields; + void *body; + + uint32_t n_fds; + int *fds; + + struct bus_container root_container, *sub_containers; + unsigned n_containers; + + struct iovec iovec[4]; + unsigned n_iovec; +}; + +#if __BYTE_ORDER == __BIG_ENDIAN +#define BUS_MESSAGE_NEED_BSWAP(m) ((m)->header->endian != SD_BUS_BIG_ENDIAN) +#else +#define BUS_MESSAGE_NEED_BSWAP(m) ((m)->header->endian != SD_BUS_LITTLE_ENDIAN) +#endif + +static inline uint32_t BUS_MESSAGE_BSWAP(sd_bus_message *m, uint32_t u) { + return BUS_MESSAGE_NEED_BSWAP(m) ? bswap_32(u) : u; +} + +static inline uint32_t BUS_MESSAGE_SERIAL(sd_bus_message *m) { + return BUS_MESSAGE_BSWAP(m, m->header->serial); +} + +static inline uint32_t BUS_MESSAGE_BODY_SIZE(sd_bus_message *m) { + return BUS_MESSAGE_BSWAP(m, m->header->body_size); +} + +static inline uint32_t BUS_MESSAGE_FIELDS_SIZE(sd_bus_message *m) { + return BUS_MESSAGE_BSWAP(m, m->header->fields_size); +} + +static inline void bus_message_unrefp(sd_bus_message **m) { + sd_bus_message_unref(*m); +} + +#define _cleanup_bus_message_unref_ __attribute__((cleanup(bus_message_unrefp))) + +int message_parse(sd_bus_message *m); +int message_seal(sd_bus_message *m, uint64_t serial); +void message_dump(sd_bus_message *m); +int bus_message_get_blob(sd_bus_message *m, void **buffer, size_t *sz); diff --git a/src/libsystemd-bus/bus-signature.c b/src/libsystemd-bus/bus-signature.c new file mode 100644 index 0000000000..db95c8870d --- /dev/null +++ b/src/libsystemd-bus/bus-signature.c @@ -0,0 +1,141 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include + +#include "bus-signature.h" +#include "bus-type.h" + +static int signature_element_length_internal( + const char *s, + bool allow_dict_entry, + size_t *l) { + + int r; + + assert(s); + + if (bus_type_is_basic(*s) || *s == SD_BUS_TYPE_VARIANT) { + *l = 1; + return 0; + } + + if (*s == SD_BUS_TYPE_ARRAY) { + size_t t; + + r = signature_element_length_internal(s + 1, true, &t); + if (r < 0) + return r; + + *l = t + 1; + return 0; + } + + if (*s == SD_BUS_TYPE_STRUCT_BEGIN) { + const char *p = s + 1; + + while (*p != SD_BUS_TYPE_STRUCT_END) { + size_t t; + + r = signature_element_length_internal(p, false, &t); + if (r < 0) + return r; + + p += t; + } + + *l = p - s + 1; + return 0; + } + + if (*s == SD_BUS_TYPE_DICT_ENTRY_BEGIN && allow_dict_entry) { + const char *p = s + 1; + unsigned n = 0; + + while (*p != SD_BUS_TYPE_DICT_ENTRY_END) { + size_t t; + + if (n == 0 && !bus_type_is_basic(*p)) + return -EINVAL; + + r = signature_element_length_internal(p, false, &t); + if (r < 0) + return r; + + p += t; + n++; + } + + if (n != 2) + return -EINVAL; + + *l = p - s + 1; + return 0; + } + + return -EINVAL; +} + +bool signature_is_single(const char *s) { + int r; + size_t t; + + assert(s); + + r = signature_element_length(s, &t); + if (r < 0) + return false; + + return s[t] == 0; +} + +bool signature_is_pair(const char *s) { + assert(s); + + if (!bus_type_is_basic(*s)) + return false; + + return signature_is_single(s + 1); +} + +bool signature_is_valid(const char *s, bool allow_dict_entry) { + const char *p; + int r; + + assert(s); + + p = s; + while (*p) { + size_t t; + + r = signature_element_length_internal(p, allow_dict_entry, &t); + if (r < 0) + return false; + + p += t; + } + + return p - s <= 255; +} + +int signature_element_length(const char *s, size_t *l) { + return signature_element_length_internal(s, true, l); +} diff --git a/src/libsystemd-bus/bus-signature.h b/src/libsystemd-bus/bus-signature.h new file mode 100644 index 0000000000..4000e0612a --- /dev/null +++ b/src/libsystemd-bus/bus-signature.h @@ -0,0 +1,31 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include + +bool signature_is_single(const char *s); +bool signature_is_pair(const char *s); +bool signature_is_valid(const char *s, bool allow_dict_entry); + +int signature_element_length(const char *s, size_t *l); diff --git a/src/libsystemd-bus/bus-type.c b/src/libsystemd-bus/bus-type.c new file mode 100644 index 0000000000..0557328085 --- /dev/null +++ b/src/libsystemd-bus/bus-type.c @@ -0,0 +1,163 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include "util.h" +#include "bus-type.h" + +bool bus_type_is_valid(char c) { + static const char valid[] = { + SD_BUS_TYPE_BYTE, + SD_BUS_TYPE_BOOLEAN, + SD_BUS_TYPE_INT16, + SD_BUS_TYPE_UINT16, + SD_BUS_TYPE_INT32, + SD_BUS_TYPE_UINT32, + SD_BUS_TYPE_INT64, + SD_BUS_TYPE_UINT64, + SD_BUS_TYPE_DOUBLE, + SD_BUS_TYPE_STRING, + SD_BUS_TYPE_OBJECT_PATH, + SD_BUS_TYPE_SIGNATURE, + SD_BUS_TYPE_ARRAY, + SD_BUS_TYPE_VARIANT, + SD_BUS_TYPE_STRUCT, + SD_BUS_TYPE_DICT_ENTRY, + SD_BUS_TYPE_UNIX_FD + }; + + return !!memchr(valid, c, sizeof(valid)); +} + +bool bus_type_is_valid_in_signature(char c) { + static const char valid[] = { + SD_BUS_TYPE_BYTE, + SD_BUS_TYPE_BOOLEAN, + SD_BUS_TYPE_INT16, + SD_BUS_TYPE_UINT16, + SD_BUS_TYPE_INT32, + SD_BUS_TYPE_UINT32, + SD_BUS_TYPE_INT64, + SD_BUS_TYPE_UINT64, + SD_BUS_TYPE_DOUBLE, + SD_BUS_TYPE_STRING, + SD_BUS_TYPE_OBJECT_PATH, + SD_BUS_TYPE_SIGNATURE, + SD_BUS_TYPE_ARRAY, + SD_BUS_TYPE_VARIANT, + SD_BUS_TYPE_STRUCT_BEGIN, + SD_BUS_TYPE_STRUCT_END, + SD_BUS_TYPE_DICT_ENTRY_BEGIN, + SD_BUS_TYPE_DICT_ENTRY_END, + SD_BUS_TYPE_UNIX_FD + }; + + return !!memchr(valid, c, sizeof(valid)); +} + +bool bus_type_is_basic(char c) { + static const char valid[] = { + SD_BUS_TYPE_BYTE, + SD_BUS_TYPE_BOOLEAN, + SD_BUS_TYPE_INT16, + SD_BUS_TYPE_UINT16, + SD_BUS_TYPE_INT32, + SD_BUS_TYPE_UINT32, + SD_BUS_TYPE_INT64, + SD_BUS_TYPE_UINT64, + SD_BUS_TYPE_DOUBLE, + SD_BUS_TYPE_STRING, + SD_BUS_TYPE_OBJECT_PATH, + SD_BUS_TYPE_SIGNATURE, + SD_BUS_TYPE_UNIX_FD + }; + + return !!memchr(valid, c, sizeof(valid)); +} + +bool bus_type_is_container(char c) { + static const char valid[] = { + SD_BUS_TYPE_ARRAY, + SD_BUS_TYPE_VARIANT, + SD_BUS_TYPE_STRUCT, + SD_BUS_TYPE_DICT_ENTRY + }; + + return !!memchr(valid, c, sizeof(valid)); +} + +int bus_type_get_alignment(char c) { + + switch (c) { + case SD_BUS_TYPE_BYTE: + case SD_BUS_TYPE_SIGNATURE: + case SD_BUS_TYPE_VARIANT: + return 1; + + case SD_BUS_TYPE_INT16: + case SD_BUS_TYPE_UINT16: + return 2; + + case SD_BUS_TYPE_BOOLEAN: + case SD_BUS_TYPE_INT32: + case SD_BUS_TYPE_UINT32: + case SD_BUS_TYPE_STRING: + case SD_BUS_TYPE_OBJECT_PATH: + case SD_BUS_TYPE_ARRAY: + case SD_BUS_TYPE_UNIX_FD: + return 4; + + case SD_BUS_TYPE_INT64: + case SD_BUS_TYPE_UINT64: + case SD_BUS_TYPE_DOUBLE: + case SD_BUS_TYPE_STRUCT: + case SD_BUS_TYPE_STRUCT_BEGIN: + case SD_BUS_TYPE_DICT_ENTRY: + case SD_BUS_TYPE_DICT_ENTRY_BEGIN: + return 8; + } + + return -EINVAL; +} + +int bus_type_get_size(char c) { + + switch (c) { + case SD_BUS_TYPE_BYTE: + return 1; + + case SD_BUS_TYPE_INT16: + case SD_BUS_TYPE_UINT16: + return 2; + + case SD_BUS_TYPE_BOOLEAN: + case SD_BUS_TYPE_INT32: + case SD_BUS_TYPE_UINT32: + case SD_BUS_TYPE_UNIX_FD: + return 4; + + case SD_BUS_TYPE_INT64: + case SD_BUS_TYPE_UINT64: + case SD_BUS_TYPE_DOUBLE: + return 8; + } + + return -EINVAL; +} diff --git a/src/libsystemd-bus/bus-type.h b/src/libsystemd-bus/bus-type.h new file mode 100644 index 0000000000..e261136084 --- /dev/null +++ b/src/libsystemd-bus/bus-type.h @@ -0,0 +1,34 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include + +#include "sd-bus.h" +#include "sd-bus-protocol.h" + +bool bus_type_is_valid(char c); +bool bus_type_is_valid_in_signature(char c); +bool bus_type_is_basic(char c); +bool bus_type_is_container(char c); +int bus_type_get_alignment(char c); +int bus_type_get_size(char c); diff --git a/src/libsystemd-bus/busctl.c b/src/libsystemd-bus/busctl.c new file mode 100644 index 0000000000..88446fcc7c --- /dev/null +++ b/src/libsystemd-bus/busctl.c @@ -0,0 +1,68 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include "sd-bus.h" + +int main(int argc, char *argv[]) { + _cleanup_bus_unref_ sd_bus *bus = NULL; + _cleanup_strv_free_ char **l = NULL; + char **i; + int r; + + r = bus_open_system(&bus); + if (r < 0) { + log_error("Failed to connect to bus: %s", strerror(-r)); + goto fail; + } + + r = sd_bus_list_names(bus, &l); + if (r < 0) { + log_error("Failed to list names: %s", strerror(-r)); + goto fail; + } + + STRV_FOREACH(i, l) { + _cleanup_free_ char *owner = NULL; + pid_t pid = 0; + uid_t uid; + bool uid_valid; + + r = sd_bus_get_owner(bus, *i, &owner); + if (r == -ENXIO) + continue; + + r = sd_get_owner_pid(bus, *i, &pid); + if (r == -ENXIO) + continue; + + r = sd_get_owner_uid(bus, *i, &pid); + if (r == -ENXIO) + continue; + uid_valid = r >= 0; + + printf("%s (%s) %llu %llu\n", *i, owner, (unsigned long long) pid, (unsigned long long) uid); + } + + r = 0; + +fail: + return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; +} diff --git a/src/libsystemd-bus/sd-bus-protocol.h b/src/libsystemd-bus/sd-bus-protocol.h new file mode 100644 index 0000000000..9d7615ff09 --- /dev/null +++ b/src/libsystemd-bus/sd-bus-protocol.h @@ -0,0 +1,96 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#ifndef foosdbusprotocolhfoo +#define foosdbusprotocolhfoo + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +/* Types of message */ + +#define SD_BUS_DEFAULT_TIMEOUT ((usec_t) (25 * USEC_PER_SEC)) + +enum { + _SD_BUS_MESSAGE_TYPE_INVALID = 0, + SD_BUS_MESSAGE_TYPE_METHOD_CALL, + SD_BUS_MESSAGE_TYPE_METHOD_RETURN, + SD_BUS_MESSAGE_TYPE_METHOD_ERROR, + SD_BUS_MESSAGE_TYPE_SIGNAL, + _SD_BUS_MESSAGE_TYPE_MAX +}; + +/* Primitive types */ + +enum { + _SD_BUS_TYPE_INVALID = 0, + SD_BUS_TYPE_BYTE = 'y', + SD_BUS_TYPE_BOOLEAN = 'b', + SD_BUS_TYPE_INT16 = 'n', + SD_BUS_TYPE_UINT16 = 'q', + SD_BUS_TYPE_INT32 = 'i', + SD_BUS_TYPE_UINT32 = 'u', + SD_BUS_TYPE_INT64 = 'x', + SD_BUS_TYPE_UINT64 = 't', + SD_BUS_TYPE_DOUBLE = 'd', + SD_BUS_TYPE_STRING = 's', + SD_BUS_TYPE_OBJECT_PATH = 'o', + SD_BUS_TYPE_SIGNATURE = 'g', + SD_BUS_TYPE_UNIX_FD = 'h', + SD_BUS_TYPE_ARRAY = 'a', + SD_BUS_TYPE_VARIANT = 'v', + SD_BUS_TYPE_STRUCT = 'r', /* not actually used in signatures */ + SD_BUS_TYPE_STRUCT_BEGIN = '(', + SD_BUS_TYPE_STRUCT_END = ')', + SD_BUS_TYPE_DICT_ENTRY = 'e', /* not actually used in signatures */ + SD_BUS_TYPE_DICT_ENTRY_BEGIN = '{', + SD_BUS_TYPE_DICT_ENTRY_END = '}', +}; + +/* Endianess */ + +enum { + _SD_BUS_INVALID_ENDIAN = 0, + SD_BUS_LITTLE_ENDIAN = 'l', + SD_BUS_BIG_ENDIAN = 'B' +}; + +/* Flags */ + +enum { + SD_BUS_MESSAGE_NO_REPLY_EXPECTED = 1, + SD_BUS_MESSAGE_NO_AUTO_START = 2 +}; + +/* Header fields */ + +enum { + _SD_BUS_MESSAGE_HEADER_INVALID = 0, + SD_BUS_MESSAGE_HEADER_PATH, + SD_BUS_MESSAGE_HEADER_INTERFACE, + SD_BUS_MESSAGE_HEADER_MEMBER, + SD_BUS_MESSAGE_HEADER_ERROR_NAME, + SD_BUS_MESSAGE_HEADER_REPLY_SERIAL, + SD_BUS_MESSAGE_HEADER_DESTINATION, + SD_BUS_MESSAGE_HEADER_SENDER, + SD_BUS_MESSAGE_HEADER_SIGNATURE, + SD_BUS_MESSAGE_HEADER_UNIX_FDS, + _SD_BUS_MESSAGE_HEADER_MAX +}; + +#endif diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c new file mode 100644 index 0000000000..d80f09793c --- /dev/null +++ b/src/libsystemd-bus/sd-bus.c @@ -0,0 +1,1437 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include +#include +#include +#include +#include +#include + +#include "util.h" +#include "macro.h" + +#include "sd-bus.h" +#include "bus-internal.h" +#include "bus-message.h" +#include "bus-type.h" + +#define WQUEUE_MAX 128 + +static void bus_free(sd_bus *b) { + struct filter_callback *f; + + assert(b); + + if (b->fd >= 0) + close_nointr_nofail(b->fd); + + free(b->rbuffer); + free(b->rqueue); + free(b->wqueue); + free(b->unique_name); + + hashmap_free_free(b->reply_callbacks); + + while ((f = b->filter_callbacks)) { + LIST_REMOVE(struct filter_callback, callbacks, b->filter_callbacks, f); + free(f); + } + + free(b); +} + +static sd_bus* bus_new(void) { + sd_bus *r; + + r = new0(sd_bus, 1); + if (!r) + return NULL; + + r->n_ref = 1; + r->fd = -1; + r->message_version = 1; + + /* We guarantee that wqueue always has space for at least one + * entry */ + r->wqueue = new(sd_bus_message*, 1); + if (!r->wqueue) { + free(r); + return NULL; + } + + return r; +}; + +static int hello_callback(sd_bus *bus, sd_bus_message *reply, void *userdata) { + const char *s; + int r; + + assert(bus); + assert(reply); + + bus->state = BUS_RUNNING; + + r = sd_bus_message_read(reply, "s", &s); + if (r < 0) + return r; + + bus->unique_name = strdup(s); + if (!bus->unique_name) + return -ENOMEM; + + return 1; +} + +static int bus_send_hello(sd_bus *bus) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL; + int r; + + assert(bus); + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.DBus", + "/", + "org.freedesktop.DBus", + "Hello", + &m); + if (r < 0) + return r; + + r = sd_bus_send_with_reply(bus, m, hello_callback, NULL, (uint64_t) -1, NULL); + if (r < 0) + return r; + + return 0; +} + +static int bus_start_running(sd_bus *bus) { + int r; + + assert(bus); + + if (bus->send_hello) { + bus->state = BUS_HELLO; + + r = bus_send_hello(bus); + if (r < 0) + return r; + } + + bus->state = BUS_RUNNING; + + return 0; +} + +static int parse_address_key(const char **p, const char *key, char **value) { + size_t l, n = 0; + const char *a; + char *r = NULL; + + assert(p); + assert(*p); + assert(key); + assert(value); + + l = strlen(key); + if (!strncmp(*p, key, l) != 0) + return 0; + + if ((*p)[l] != '=') + return 0; + + if (*value) + return -EINVAL; + + a = *p + l + 1; + while (*a != ';' && *a != 0) { + char c, *t; + + if (*a == '%') { + int x, y; + + x = unhexchar(a[1]); + if (x < 0) { + free(r); + return x; + } + + y = unhexchar(a[2]); + if (y < 0) { + free(r); + return y; + } + + a += 3; + c = (char) ((x << 4) | y); + } else + c = *a; + + t = realloc(r, n + 1); + if (!t) { + free(r); + return -ENOMEM; + } + + r = t; + r[n++] = c; + } + + *p = a; + *value = r; + return 1; +} + +static void skip_address_key(const char **p) { + assert(p); + assert(*p); + + *p += strcspn(*p, ";"); +} + +static int bus_parse_next_address(sd_bus *b) { + const char *a, *p; + _cleanup_free_ char *guid = NULL; + int r; + + assert(b); + + if (!b->address) + return 0; + if (b->address[b->address_index] == 0) + return 0; + + a = b->address + b->address_index; + + zero(b->sockaddr); + b->sockaddr_size = 0; + b->peer = SD_ID128_NULL; + + if (startswith(a, "unix:")) { + _cleanup_free_ char *path = NULL, *abstract = NULL; + + p = a + 5; + while (*p != 0 && *p != ';') { + r = parse_address_key(&p, "guid", &guid); + if (r < 0) + return r; + else if (r > 0) + continue; + + r = parse_address_key(&p, "path", &path); + if (r < 0) + return r; + else if (r > 0) + continue; + + r = parse_address_key(&p, "abstract", &abstract); + if (r < 0) + return r; + else if (r > 0) + continue; + + skip_address_key(&p); + } + + if (!path && !abstract) + return -EINVAL; + + if (path && abstract) + return -EINVAL; + + if (path) { + size_t l; + + l = strlen(path); + if (l > sizeof(b->sockaddr.un.sun_path)) + return -E2BIG; + + b->sockaddr.un.sun_family = AF_UNIX; + strncpy(b->sockaddr.un.sun_path, path, sizeof(b->sockaddr.un.sun_path)); + b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + l; + } else if (abstract) { + size_t l; + + l = strlen(path); + if (l > sizeof(b->sockaddr.un.sun_path) - 1) + return -E2BIG; + + b->sockaddr.un.sun_family = AF_UNIX; + b->sockaddr.un.sun_path[0] = 0; + strncpy(b->sockaddr.un.sun_path+1, path, sizeof(b->sockaddr.un.sun_path)-1); + b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + 1 + l; + } + + } else if (startswith(a, "tcp:")) { + _cleanup_free_ char *host = NULL, *port = NULL, *family = NULL; + struct addrinfo hints, *result; + + p = a + 4; + while (*p != 0 && *p != ';') { + r = parse_address_key(&p, "guid", &guid); + if (r < 0) + return r; + else if (r > 0) + continue; + + r = parse_address_key(&p, "host", &host); + if (r < 0) + return r; + else if (r > 0) + continue; + + r = parse_address_key(&p, "port", &port); + if (r < 0) + return r; + else if (r > 0) + continue; + + r = parse_address_key(&p, "family", &family); + if (r < 0) + return r; + else if (r > 0) + continue; + + skip_address_key(&p); + } + + if (!host || !port) + return -EINVAL; + + zero(hints); + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_ADDRCONFIG; + + if (family) { + if (streq(family, "ipv4")) + hints.ai_family = AF_INET; + else if (streq(family, "ipv6")) + hints.ai_family = AF_INET6; + else + return -EINVAL; + } + + r = getaddrinfo(host, port, &hints, &result); + if (r == EAI_SYSTEM) + return -errno; + else if (r != 0) + return -EADDRNOTAVAIL; + + memcpy(&b->sockaddr, result->ai_addr, result->ai_addrlen); + b->sockaddr_size = result->ai_addrlen; + + freeaddrinfo(result); + } + + if (guid) { + r = sd_id128_from_string(guid, &b->peer); + if (r < 0) + return r; + } + + b->address_index = p - b->address; + return 1; +} + +static void iovec_advance(struct iovec *iov, unsigned *idx, size_t size) { + + while (size > 0) { + struct iovec *i = iov + *idx; + + if (i->iov_len > size) { + i->iov_base = (uint8_t*) i->iov_base + size; + i->iov_len -= size; + return; + } + + size -= i->iov_len; + + i->iov_base = NULL; + i->iov_len = 0; + + (*idx) ++; + } +} + +static int bus_write_auth(sd_bus *b) { + struct msghdr mh; + ssize_t k; + + assert(b); + assert(b->state == BUS_AUTHENTICATING); + + if (b->auth_index >= ELEMENTSOF(b->auth_iovec)) + return 0; + + zero(mh); + mh.msg_iov = b->auth_iovec + b->auth_index; + mh.msg_iovlen = ELEMENTSOF(b->auth_iovec) - b->auth_index; + + k = sendmsg(b->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL); + if (k < 0) + return errno == EAGAIN ? 0 : -errno; + + iovec_advance(b->auth_iovec, &b->auth_index, (size_t) k); + + return 1; +} + +static int bus_auth_verify(sd_bus *b) { + char *e, *f; + sd_id128_t peer; + unsigned i; + int r; + + /* We expect two response lines: "OK", "AGREE_UNIX_FD", and + * that's it */ + + e = memmem(b->rbuffer, b->rbuffer_size, "\r\n", 2); + if (!e) + return 0; + + f = memmem(e, b->rbuffer_size - (e - (char*) b->rbuffer), "\r\n", 2); + if (!f) + return 0; + + if (e - (char*) b->rbuffer != 3 + 32) + return -EPERM; + + if (memcmp(b->rbuffer, "OK ", 3)) + return -EPERM; + + for (i = 0; i < 32; i += 2) { + int x, y; + + x = unhexchar(((char*) b->rbuffer)[3 + i]); + y = unhexchar(((char*) b->rbuffer)[3 + i + 2]); + + if (x < 0 || y < 0) + return -EINVAL; + + peer.bytes[i/2] = ((uint8_t) x << 4 | (uint8_t) y); + } + + if (!sd_id128_equal(b->peer, SD_ID128_NULL) && + !sd_id128_equal(b->peer, peer)) + return -EPERM; + + b->peer = peer; + + b->can_fds = + (f - e == sizeof("\r\nAGREE_UNIX_FD") - 1) && + memcmp(e + 2, "AGREE_UNIX_FD", sizeof("AGREE_UNIX_FD") - 1) == 0; + + if (f + 2 > (char*) b->rbuffer + b->rbuffer_size) { + b->rbuffer_size -= (f - (char*) b->rbuffer); + memmove(b->rbuffer, f + 2, b->rbuffer_size); + } + + r = bus_start_running(b); + if (r < 0) + return r; + + return 1; +} + +static int bus_read_auth(sd_bus *b) { + struct msghdr mh; + struct iovec iov; + size_t n; + ssize_t k; + int r; + + assert(b); + + r = bus_auth_verify(b); + if (r != 0) + return r; + + n = MAX(3 + 32 + 2 + sizeof("AGREE_UNIX_FD") - 1 + 2, b->rbuffer_size * 2); + + zero(iov); + iov.iov_base = (uint8_t*) b->rbuffer + b->rbuffer_size; + iov.iov_len = n - b->rbuffer_size; + + zero(mh); + mh.msg_iov = &iov; + mh.msg_iovlen = 1; + + k = recvmsg(b->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL); + if (k < 0) + return errno == EAGAIN ? 0 : -errno; + + b->rbuffer_size += k; + + r = bus_auth_verify(b); + if (r != 0) + return r; + + return 0; +} + +static int bus_start_auth(sd_bus *b) { + static const char auth_prefix[] = "\0AUTH_EXTERNAL "; + static const char auth_suffix[] = "\r\nNEGOTIATE_UNIX_FD\r\nBEGIN\r\n"; + + char text[20 + 1]; /* enough space for a 64bit integer plus NUL */ + size_t l; + + assert(b); + + b->state = BUS_AUTHENTICATING; + + snprintf(text, sizeof(text), "%llu", (unsigned long long) geteuid()); + char_array_0(text); + + l = strlen(text); + b->auth_uid = hexmem(text, l); + if (!b->auth_uid) + return -ENOMEM; + + b->auth_iovec[0].iov_base = (void*) auth_prefix; + b->auth_iovec[0].iov_len = sizeof(auth_prefix) -1; + b->auth_iovec[1].iov_base = (void*) b->auth_uid; + b->auth_iovec[1].iov_len = l * 2; + b->auth_iovec[2].iov_base = (void*) auth_suffix; + b->auth_iovec[2].iov_len = sizeof(auth_suffix) -1; + b->auth_size = sizeof(auth_prefix) - 1 + l * 2 + sizeof(auth_suffix) - 1; + + return bus_write_auth(b); +} + +static int bus_start_connect(sd_bus *b) { + int r; + + assert(b); + assert(b->fd < 0); + + for (;;) { + if (b->sockaddr.sa.sa_family == AF_UNSPEC) { + r = bus_parse_next_address(b); + if (r < 0) + return r; + if (r == 0) + return b->last_connect_error ? b->last_connect_error : -ECONNREFUSED; + } + + b->fd = socket(b->sockaddr.sa.sa_family, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); + if (b->fd < 0) { + b->last_connect_error = -errno; + zero(b->sockaddr); + continue; + } + + r = connect(b->fd, &b->sockaddr.sa, b->sockaddr_size); + if (r < 0) { + if (errno == EINPROGRESS) + return 0; + + b->last_connect_error = -errno; + close_nointr_nofail(b->fd); + b->fd = -1; + zero(b->sockaddr); + continue; + } + + return bus_start_auth(b); + } +} + +int sd_bus_open_system(sd_bus **ret) { + const char *e; + sd_bus *b; + int r; + + if (!ret) + return -EINVAL; + + e = getenv("DBUS_SYSTEM_BUS_ADDRESS"); + if (e) { + r = sd_bus_open_address(e, &b); + if (r < 0) + return r; + + b->send_hello = true; + *ret = b; + return r; + } + + b = bus_new(); + if (!b) + return -ENOMEM; + + b->send_hello = true; + + b->sockaddr.un.sun_family = AF_UNIX; + strncpy(b->sockaddr.un.sun_path, "/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path)); + b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + sizeof("/run/dbus/system_bus_socket") - 1; + + r = bus_start_connect(b); + if (r < 0) { + bus_free(b); + return r; + } + + *ret = b; + return 0; +} + +int sd_bus_open_user(sd_bus **ret) { + const char *e; + sd_bus *b; + size_t l; + int r; + + if (!ret) + return -EINVAL; + + e = getenv("DBUS_SESSION_BUS_ADDRESS"); + if (e) { + r = sd_bus_open_address(e, &b); + if (r < 0) + return r; + + b->send_hello = true; + *ret = b; + return r; + } + + e = getenv("XDG_RUNTIME_DIR"); + if (!e) + return -ENOENT; + + l = strlen(e); + if (l + 4 > sizeof(b->sockaddr.un.sun_path)) + return -E2BIG; + + b = bus_new(); + if (!b) + return -ENOMEM; + + b->send_hello = true; + + b->sockaddr.un.sun_family = AF_UNIX; + memcpy(mempcpy(b->sockaddr.un.sun_path, e, l), "/bus", 4); + b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + l + 4; + + r = bus_start_connect(b); + if (r < 0) { + bus_free(b); + return r; + } + + *ret = b; + return 0; +} + +int sd_bus_open_address(const char *address, sd_bus **ret) { + sd_bus *b; + int r; + + if (!address) + return -EINVAL; + if (!ret) + return -EINVAL; + + b = bus_new(); + if (!b) + return -ENOMEM; + + b->address = strdup(address); + if (!b->address) { + bus_free(b); + return -ENOMEM; + } + + r = bus_start_connect(b); + if (r < 0) { + bus_free(b); + return r; + } + + *ret = b; + return 0; +} + +int sd_bus_open_fd(int fd, sd_bus **ret) { + sd_bus *b; + int r; + + if (fd < 0) + return -EINVAL; + if (!ret) + return -EINVAL; + + b = bus_new(); + if (!b) + return -ENOMEM; + + b->fd = fd; + fd_nonblock(b->fd, true); + fd_cloexec(b->fd, true); + + r = bus_start_auth(b); + if (r < 0) { + bus_free(b); + return r; + } + + *ret = b; + return 0; +} + +void sd_bus_close(sd_bus *bus) { + if (!bus) + return; + if (bus->fd < 0) + return; + + close_nointr_nofail(bus->fd); + bus->fd = -1; +} + +sd_bus *sd_bus_ref(sd_bus *bus) { + if (!bus) + return NULL; + + assert(bus->n_ref > 0); + + bus->n_ref++; + return bus; +} + +sd_bus *sd_bus_unref(sd_bus *bus) { + if (!bus) + return NULL; + + assert(bus->n_ref > 0); + bus->n_ref--; + + if (bus->n_ref <= 0) + bus_free(bus); + + return NULL; +} + +int sd_bus_is_running(sd_bus *bus) { + if (!bus) + return -EINVAL; + + if (bus->fd < 0) + return -ENOTCONN; + + return bus->state == BUS_RUNNING; +} + +int sd_bus_can_send(sd_bus *bus, char type) { + + if (!bus) + return -EINVAL; + + if (type == SD_BUS_TYPE_UNIX_FD) + return bus->can_fds; + + return bus_type_is_valid(type); +} + +static int bus_seal_message(sd_bus *b, sd_bus_message *m) { + assert(m); + + if (m->sealed) + return 0; + + return message_seal(m, ++b->serial); +} + +static int message_write(sd_bus *bus, sd_bus_message *m, size_t *idx) { + struct msghdr mh; + struct iovec *iov; + ssize_t k; + size_t n; + unsigned j; + + assert(bus); + assert(m); + assert(idx); + + n = m->n_iovec * sizeof(struct iovec); + iov = alloca(n); + memcpy(iov, m->iovec, n); + + j = 0; + iovec_advance(iov, &j, *idx); + + zero(mh); + mh.msg_iov = iov; + mh.msg_iovlen = m->n_iovec; + + k = sendmsg(bus->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL); + if (k < 0) + return -errno; + + *idx += (size_t) k; + iovec_advance(iov, &j, *idx); + + return j > m->n_iovec; +} + +static int message_read_need(sd_bus *bus, size_t *need) { + uint32_t a, b; + uint8_t e; + + assert(bus); + assert(need); + + if (bus->rbuffer_size <= sizeof(struct bus_header)) { + *need = sizeof(struct bus_header); + return 0; + } + + a = ((const uint32_t*) bus->rbuffer)[1]; + b = ((const uint32_t*) bus->rbuffer)[3]; + + e = ((const uint8_t*) bus->rbuffer)[0]; + if (e == SD_BUS_LITTLE_ENDIAN) { + a = le32toh(a); + b = le32toh(b); + } else if (e == SD_BUS_BIG_ENDIAN) { + a = be32toh(a); + b = be32toh(b); + } else + return -EIO; + + *need = sizeof(struct bus_header) + ALIGN_TO(a, 8) + b; + return 0; +} + +static int message_make(sd_bus *bus, size_t size, sd_bus_message **m) { + sd_bus_message *t; + void *b = NULL; + int r; + + assert(bus); + assert(m); + assert(bus->rbuffer_size >= size); + + t = new0(sd_bus_message, 1); + if (!t) + return -ENOMEM; + + if (bus->rbuffer_size > size) { + b = memdup((const uint8_t*) bus->rbuffer + size, bus->rbuffer_size - size); + if (!b) { + free(t); + return -ENOMEM; + } + } + + t->n_ref = 1; + + t->header = bus->rbuffer; + t->free_header = true; + + t->fields = (uint8_t*) bus->rbuffer + sizeof(struct bus_header); + t->body = (uint8_t*) bus->rbuffer + sizeof(struct bus_header) + ALIGN_TO(BUS_MESSAGE_BODY_SIZE(t), 8); + + bus->rbuffer = b; + bus->rbuffer_size -= size; + + r = message_parse(t); + if (r < 0) { + sd_bus_message_unref(t); + return r; + } + + *m = t; + return 1; +} + +static int message_read(sd_bus *bus, sd_bus_message **m) { + struct msghdr mh; + struct iovec iov; + ssize_t k; + size_t need; + int r; + void *b; + + assert(bus); + assert(m); + + r = message_read_need(bus, &need); + if (r < 0) + return r; + + if (bus->rbuffer_size >= need) + return message_make(bus, need, m); + + b = realloc(bus->rbuffer, need); + if (!b) + return -ENOMEM; + + zero(iov); + iov.iov_base = (uint8_t*) bus->rbuffer + bus->rbuffer_size; + iov.iov_len = need - bus->rbuffer_size; + + zero(mh); + mh.msg_iov = &iov; + mh.msg_iovlen = 1; + + k = recvmsg(bus->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL); + if (k < 0) + return errno == EAGAIN ? 0 : -errno; + + bus->rbuffer_size += k; + + r = message_read_need(bus, &need); + if (r < 0) + return r; + + if (bus->rbuffer_size >= need) + return message_make(bus, need, m); + + return 0; +} + +static int dispatch_wqueue(sd_bus *bus) { + int r, c = 0; + + assert(bus); + + if (bus->fd < 0) + return -ENOTCONN; + + while (bus->wqueue_size > 0) { + + r = message_write(bus, bus->wqueue[0], &bus->windex); + if (r < 0) { + sd_bus_close(bus); + return r; + } else if (r == 0) + /* Wasn't fully written yet... */ + break; + else { + /* Fully written. Let's drop the entry from + * the queue. + * + * This isn't particularly optimized, but + * well, this is supposed to be our worst-case + * buffer only, and the socket buffer is + * supposed to be our primary buffer, and if + * it got full, then all bets are off + * anyway. */ + + sd_bus_message_unref(bus->wqueue[0]); + bus->wqueue_size --; + memmove(bus->wqueue, bus->wqueue + 1, sizeof(sd_bus_message*) * bus->wqueue_size); + bus->windex = 0; + + c++; + } + } + + return c; +} + +static int dispatch_rqueue(sd_bus *bus, sd_bus_message **m) { + int r; + + assert(bus); + assert(m); + + if (bus->fd < 0) + return -ENOTCONN; + + if (bus->rqueue_size > 0) { + /* Dispatch a queued message */ + + *m = bus->rqueue[0]; + bus->rqueue_size --; + memmove(bus->rqueue, bus->rqueue + 1, sizeof(sd_bus_message*) * bus->rqueue_size); + return 1; + } + + /* Try to read a new message */ + r = message_read(bus, m); + if (r < 0) { + sd_bus_close(bus); + return r; + } + + return r; +} + +int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) { + int r; + + if (!bus) + return -EINVAL; + if (bus->fd < 0) + return -ENOTCONN; + if (!m) + return -EINVAL; + if (m->header->version > bus->message_version) + return -EPERM; + + r = bus_seal_message(bus, m); + if (r < 0) + return r; + + if (bus->wqueue_size <= 0) { + size_t idx = 0; + + r = message_write(bus, m, &idx); + if (r < 0) { + sd_bus_close(bus); + return r; + } else if (r == 0) { + /* Wasn't fully written. So let's remember how + * much was written. Note that the first entry + * of the wqueue array is always allocated so + * that we always can remember how much was + * written. */ + bus->wqueue[0] = sd_bus_message_ref(m); + bus->wqueue_size = 1; + bus->windex = idx; + } + } else { + sd_bus_message **q; + + /* Just append it to the queue. */ + + if (bus->wqueue_size >= WQUEUE_MAX) + return -ENOBUFS; + + q = realloc(bus->wqueue, sizeof(sd_bus_message*) * (bus->wqueue_size + 1)); + if (!q) + return -ENOMEM; + + bus->wqueue = q; + q[bus->wqueue_size ++] = sd_bus_message_ref(m); + } + + if (serial) + *serial = BUS_MESSAGE_SERIAL(m); + + return 0; +} + +static usec_t calc_elapse(uint64_t usec) { + if (usec == (uint64_t) -1) + return 0; + + if (usec == 0) + usec = SD_BUS_DEFAULT_TIMEOUT; + + return now(CLOCK_MONOTONIC) + usec; +} + +int sd_bus_send_with_reply( + sd_bus *bus, + sd_bus_message *m, + sd_message_handler_t callback, + void *userdata, + uint64_t usec, + uint64_t *serial) { + + struct reply_callback *c; + int r; + + if (!bus) + return -EINVAL; + if (!bus->fd < 0) + return -ENOTCONN; + if (!m) + return -EINVAL; + if (!callback) + return -EINVAL; + if (!m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) + return -EINVAL; + + r = bus_seal_message(bus, m); + if (r < 0) + return r; + + c = new(struct reply_callback, 1); + if (!c) + return -ENOMEM; + + c->callback = callback; + c->userdata = userdata; + c->serial = BUS_MESSAGE_SERIAL(m); + c->timeout = calc_elapse(usec); + + r = hashmap_put(bus->reply_callbacks, &c->serial, c); + if (r < 0) { + free(c); + return r; + } + + r = sd_bus_send(bus, m, serial); + if (r < 0) { + hashmap_remove(bus->reply_callbacks, &c->serial); + free(c); + return r; + } + + return r; +} + +int sd_bus_send_with_reply_cancel(sd_bus *bus, uint64_t serial) { + struct reply_callbacks *c; + + if (!bus) + return -EINVAL; + if (serial == 0) + return -EINVAL; + + c = hashmap_remove(bus->reply_callbacks, &serial); + if (!c) + return 0; + + free(c); + return 1; +} + +int sd_bus_send_with_reply_and_block( + sd_bus *bus, + sd_bus_message *m, + uint64_t usec, + sd_bus_error *error, + sd_bus_message **reply) { + + int r; + usec_t timeout; + uint64_t serial; + bool room = false; + + if (!bus) + return -EINVAL; + if (!bus->fd < 0) + return -ENOTCONN; + if (!m) + return -EINVAL; + if (!m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) + return -EINVAL; + if (sd_bus_error_is_set(error)) + return -EINVAL; + + r = sd_bus_send(bus, m, &serial); + if (r < 0) + return r; + + timeout = calc_elapse(usec); + + for (;;) { + usec_t left; + sd_bus_message *incoming; + + if (!room) { + sd_bus_message **q; + + /* Make sure there's room for queuing this + * locally, before we read the message */ + + q = realloc(bus->rqueue, (bus->rqueue_size + 1) * sizeof(sd_bus_message*)); + if (!q) + return -ENOMEM; + + bus->rqueue = q; + room = true; + } + + r = message_read(bus, &incoming); + if (r < 0) + return r; + if (r > 0) { + if (incoming->reply_serial == serial) { + /* Found a match! */ + + if (incoming->header->type == SD_BUS_MESSAGE_TYPE_METHOD_RETURN) { + *reply = incoming; + return 0; + } + + if (incoming->header->type == SD_BUS_MESSAGE_TYPE_METHOD_ERROR) { + int k; + + r = sd_bus_error_copy(error, &incoming->error); + if (r < 0) { + sd_bus_message_unref(incoming); + return r; + } + + k = bus_error_to_errno(&incoming->error); + sd_bus_message_unref(incoming); + return k; + } + + sd_bus_message_unref(incoming); + return -EIO; + } + + /* There's already guaranteed to be room for + * this, so need to resize things here */ + bus->rqueue[bus->rqueue_size ++] = incoming; + room = false; + + /* Try to read more, right-away */ + continue; + } + + if (timeout > 0) { + usec_t n; + + n = now(CLOCK_MONOTONIC); + if (n >= timeout) + return -ETIMEDOUT; + + left = timeout - n; + } else + left = (uint64_t) -1; + + r = sd_bus_wait(bus, left); + if (r < 0) + return r; + + r = dispatch_wqueue(bus); + if (r < 0) + return r; + } +} + +int sd_bus_get_fd(sd_bus *bus) { + if (!bus) + return -EINVAL; + + if (bus->fd < 0) + return -EINVAL; + + return bus->fd; +} + +int sd_bus_get_events(sd_bus *bus) { + int flags = 0; + + if (!bus) + return -EINVAL; + + if (bus->fd < 0) + return -EINVAL; + + if (bus->state == BUS_OPENING) + flags |= POLLOUT; + else if (bus->state == BUS_RUNNING || bus->state == BUS_HELLO) { + if (bus->rqueue_size <= 0) + flags |= POLLIN; + if (bus->wqueue_size > 0) + flags |= POLLOUT; + } + + return flags; +} + +int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { + sd_bus_message *m; + int r; + + if (!bus) + return -EINVAL; + if (bus->fd < 0) + return -ENOTCONN; + + if (bus->state == BUS_OPENING) { + struct pollfd p; + + zero(p); + p.fd = bus->fd; + p.events = POLLOUT; + + r = poll(&p, 1, 0); + if (r < 0) + return -errno; + + if (p.revents & (POLLOUT|POLLERR|POLLHUP)) { + int error; + socklen_t slen = sizeof(error); + + r = getsockopt(bus->fd, SOL_SOCKET, SO_ERROR, &error, &slen); + if (r < 0) + return -errno; + + if (error != 0) + bus->last_connect_error = -error; + else if (p.revents & (POLLERR|POLLHUP)) + bus->last_connect_error = -ECONNREFUSED; + else + return bus_start_auth(bus); + + /* Try next address */ + return bus_start_connect(bus); + } + + return 0; + + } else if (bus->state == BUS_AUTHENTICATING) { + + r = bus_write_auth(bus); + if (r < 0) + return r; + + r = bus_read_auth(bus); + if (r <= 0) + return r; + + return bus_start_running(bus); + + } else if (bus->state == BUS_RUNNING || bus->state == BUS_HELLO) { + struct filter_callback *l; + + r = dispatch_wqueue(bus); + if (r < 0) + return r; + + r = dispatch_rqueue(bus, &m); + if (r <= 0) + return r; + + if (m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_CALL || m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_RETURN) { + struct reply_callback *c; + + c = hashmap_remove(bus->reply_callbacks, &m->reply_serial); + if (c) { + r = c->callback(bus, m, c->userdata); + free(c); + + if (r != 0) { + sd_bus_message_unref(m); + return r < 0 ? r : 0; + } + } + } + + LIST_FOREACH(callbacks, l, bus->filter_callbacks) { + r = l->callback(bus, m, l->userdata); + if (r != 0) { + sd_bus_message_unref(m); + return r < 0 ? r : 0; + } + } + + if (ret) { + *ret = m; + return 1; + } + + sd_bus_message_unref(m); + return 0; + } + + return -ENOTSUP; +} + +int sd_bus_wait(sd_bus *bus, uint64_t timeout_usec) { + struct pollfd p; + int r, e; + struct timespec ts; + + if (!bus) + return -EINVAL; + if (bus->fd < 0) + return -ECONNREFUSED; + + e = sd_bus_get_events(bus); + if (e < 0) + return e; + + zero(p); + p.fd = bus->fd; + p.events = e; + + r = ppoll(&p, 1, timeout_usec == (uint64_t) -1 ? NULL : timespec_store(&ts, timeout_usec), NULL); + if (r < 0) + return -EINVAL; + + return r; +} + +int sd_bus_flush(sd_bus *bus) { + int r; + + if (!bus) + return -EINVAL; + if (bus->fd < 0) + return -ENOTCONN; + + if (bus->state == BUS_RUNNING && bus->wqueue_size <= 0) + return 0; + + for (;;) { + r = dispatch_wqueue(bus); + if (r < 0) + return r; + + if (bus->state == BUS_RUNNING && bus->wqueue_size <= 0) + return 0; + + r = sd_bus_wait(bus, (uint64_t) -1); + if (r < 0) + return r; + } +} + +int sd_bus_add_filter(sd_bus *bus, sd_message_handler_t callback, void *userdata) { + struct filter_callback *f; + + if (!bus) + return -EINVAL; + if (!callback) + return -EINVAL; + + f = new(struct filter_callback, 1); + if (!f) + return -ENOMEM; + f->callback = callback; + f->userdata = userdata; + + LIST_PREPEND(struct filter_callback, callbacks, bus->filter_callbacks, f); + return 0; +} + +int sd_bus_remove_filter(sd_bus *bus, sd_message_handler_t callback, void *userdata) { + struct filter_callback *f; + + if (!bus) + return -EINVAL; + if (!callback) + return -EINVAL; + + LIST_FOREACH(callbacks, f, bus->filter_callbacks) { + if (f->callback == callback && f->userdata == userdata) { + LIST_REMOVE(struct filter_callback, callbacks, bus->filter_callbacks, f); + free(f); + return 1; + } + } + + return 0; +} diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h new file mode 100644 index 0000000000..6d53d5afd8 --- /dev/null +++ b/src/libsystemd-bus/sd-bus.h @@ -0,0 +1,135 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#ifndef foosdbushfoo +#define foosdbushfoo + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include + +#include "sd-bus-protocol.h" + +typedef struct sd_bus sd_bus; +typedef struct sd_bus_message sd_bus_message; + +typedef struct { + const char *name; + const char *message; + int need_free; +} sd_bus_error; + +typedef int (*sd_message_handler_t)(sd_bus *bus, sd_bus_message *m, void *userdata); + +/* Connections */ + +int sd_bus_open_system(sd_bus **ret); +int sd_bus_open_user(sd_bus **ret); +int sd_bus_open_address(const char *address, sd_bus **ret); +int sd_bus_open_fd(int fd, sd_bus **ret); +void sd_bus_close(sd_bus *bus); + +sd_bus *sd_bus_ref(sd_bus *bus); +sd_bus *sd_bus_unref(sd_bus *bus); + +int sd_bus_is_running(sd_bus *bus); +int sd_bus_can_send(sd_bus *bus, char type); + +int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial); +int sd_bus_send_with_reply(sd_bus *bus, sd_bus_message *m, sd_message_handler_t callback, void *userdata, uint64_t usec, uint64_t *serial); +int sd_bus_send_with_reply_cancel(sd_bus *bus, uint64_t serial); +int sd_bus_send_with_reply_and_block(sd_bus *bus, sd_bus_message *m, uint64_t usec, sd_bus_error *error, sd_bus_message **r); + +int sd_bus_get_fd(sd_bus *bus); +int sd_bus_get_events(sd_bus *bus); +int sd_bus_process(sd_bus *bus, sd_bus_message **r); +int sd_bus_wait(sd_bus *bus, uint64_t timeout_usec); +int sd_bus_flush(sd_bus *bus); + +int sd_bus_add_filter(sd_bus *bus, sd_message_handler_t callback, void *userdata); +int sd_bus_remove_filter(sd_bus *bus, sd_message_handler_t callback, void *userdata); + +/* Message object */ + +int sd_bus_message_new_signal(sd_bus *bus, const char *path, const char *interface, const char *member, sd_bus_message **m); +int sd_bus_message_new_method_call(sd_bus *bus, const char *destination, const char *path, const char *interface, const char *member, sd_bus_message **m); +int sd_bus_message_new_method_return(sd_bus *bus, sd_bus_message *call, sd_bus_message **m); +int sd_bus_message_new_method_error(sd_bus *bus, sd_bus_message *call, const sd_bus_error *e, sd_bus_message **m); + +sd_bus_message* sd_bus_message_ref(sd_bus_message *m); +sd_bus_message* sd_bus_message_unref(sd_bus_message *m); + +int sd_bus_message_get_type(sd_bus_message *m, uint8_t *type); +int sd_bus_message_get_serial(sd_bus_message *m, uint64_t *serial); +int sd_bus_message_get_reply_serial(sd_bus_message *m, uint64_t *serial); +int sd_bus_message_get_no_reply(sd_bus_message *m); + +const char *sd_bus_message_get_path(sd_bus_message *m); +const char *sd_bus_message_get_interface(sd_bus_message *m); +const char *sd_bus_message_get_member(sd_bus_message *m); +const char *sd_bus_message_get_destination(sd_bus_message *m); +const char *sd_bus_message_get_sender(sd_bus_message *m); +const sd_bus_error *sd_bus_message_get_error(sd_bus_message *m); + +int sd_bus_message_get_uid(sd_bus_message *m, uid_t *uid); +int sd_bus_message_get_gid(sd_bus_message *m, gid_t *gid); +int sd_bus_message_get_pid(sd_bus_message *m, pid_t *pid); +int sd_bus_message_get_tid(sd_bus_message *m, pid_t *tid); + +int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, const char *member); +int sd_bus_message_is_method_call(sd_bus_message *m, const char *interface, const char *member); +int sd_bus_message_is_method_error(sd_bus_message *m, const char *name); + +int sd_bus_message_set_no_reply(sd_bus_message *m, int b); +int sd_bus_message_set_destination(sd_bus_message *m, const char *destination); + +int sd_bus_message_append(sd_bus_message *m, const char *types, ...); +int sd_bus_message_append_basic(sd_bus_message *m, char type, const void *p); +int sd_bus_message_open_container(sd_bus_message *m, char type, const char *contents); +int sd_bus_message_close_container(sd_bus_message *m); + +int sd_bus_message_read_type(sd_bus_message *m, char *type, char *element, size_t *length); +int sd_bus_message_read_basic(sd_bus_message *m, char type, char element, const void **p, size_t *length); +int sd_bus_message_read(sd_bus_message *m, const char *types, ...); + +/* Bus management */ + +const char *sd_bus_get_unique_name(sd_bus *bus); +int sd_bus_request_name(sd_bus *bus, const char *name, int flags); +int sd_bus_release_name(sd_bus *bus, const char *name); +int sd_bus_list_names(sd_bus *bus, char ***l); +int sd_bus_get_owner(sd_bus *bus, const char *name, char **owner); +int sd_bus_get_owner_uid(sd_bus *bus, const char *name, uid_t *uid); +int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid); +int sd_bus_add_match(sd_bus *bus, const char *match); +int sd_bus_remove_match(sd_bus *bus, const char *match); + +/* Error objects */ + +#define SD_BUS_ERROR_INIT (NULL, NULL, false) + +void sd_bus_error_free(sd_bus_error *e); +int sd_bus_error_set(sd_bus_error *e, const char *name, const char *format, ...); +void sd_bus_error_set_const(sd_bus_error *e, const char *name, const char *message); +int sd_bus_error_copy(sd_bus_error *dest, const sd_bus_error *e); +int sd_bus_error_is_set(const sd_bus_error *e); +int sd_bus_error_has_name(const sd_bus_error *e, const char *name); + +#endif diff --git a/src/libsystemd-bus/test-bus-marshal.c b/src/libsystemd-bus/test-bus-marshal.c new file mode 100644 index 0000000000..08364ef48b --- /dev/null +++ b/src/libsystemd-bus/test-bus-marshal.c @@ -0,0 +1,129 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include +#include + +#ifdef HAVE_GLIB +#include +#endif + +#include + +#include "log.h" +#include "util.h" + +#include "sd-bus.h" +#include "bus-message.h" + +int main(int argc, char *argv[]) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL; + int r; + const char *x, *y, *z, *a, *b, *c; + uint8_t u, v; + void *buffer = NULL; + size_t sz; + char *h; + + r = sd_bus_message_new_method_call(NULL, "foobar.waldo", "/", "foobar.waldo", "Piep", &m); + assert_se(r >= 0); + + r = sd_bus_message_append(m, "s", "a string"); + assert_se(r >= 0); + + r = sd_bus_message_append(m, "as", 2, "string #1", "string #2"); + assert_se(r >= 0); + + r = sd_bus_message_append(m, "sass", "foobar", 5, "foo", "bar", "waldo", "piep", "pap", "after"); + assert_se(r >= 0); + + r = sd_bus_message_append(m, "a{yv}", 2, 3, "s", "foo", 5, "s", "waldo"); + assert_se(r >= 0); + + r = sd_bus_message_append(m, "ba(ss)", 255, 3, "aaa", "1", "bbb", "2", "ccc", "3"); + assert_se(r >= 0); + + r = sd_bus_message_open_container(m, 'a', "s"); + assert_se(r >= 0); + + r = sd_bus_message_append_basic(m, 's', "foobar"); + assert_se(r >= 0); + + r = sd_bus_message_append_basic(m, 's', "waldo"); + assert_se(r >= 0); + + r = sd_bus_message_close_container(m); + assert_se(r >= 0); + + r = message_seal(m, 4711); + assert_se(r >= 0); + + message_dump(m); + + r = bus_message_get_blob(m, &buffer, &sz); + assert_se(r >= 0); + + h = hexmem(buffer, sz); + assert_se(h); + + log_info("message size = %lu, contents =\n%s", (unsigned long) sz, h); + free(h); + +#ifdef HAVE_GLIB + { + GDBusMessage *g; + char *p; + + g_type_init(); + + g = g_dbus_message_new_from_blob(buffer, sz, 0, NULL); + p = g_dbus_message_print(g, 0); + log_info("%s", p); + g_free(p); + g_object_unref(g); + } +#endif + + { + DBusMessage *w; + DBusError error; + + dbus_error_init(&error); + + w = dbus_message_demarshal(buffer, sz, &error); + if (!w) { + log_error("%s", error.message); + } else + dbus_message_unref(w); + } + + free(buffer); + + /* r = sd_bus_message_read(m, "sas", &x, 5, &y, &z, &a, &b, &c); */ + /* assert_se(r >= 0); */ + + /* r = sd_bus_message_read(m, "a{yv}", 2, */ + /* &u, "s", &x, */ + /* &v, "s", &y); */ + + return 0; +} diff --git a/src/libsystemd-bus/test-bus-signature.c b/src/libsystemd-bus/test-bus-signature.c new file mode 100644 index 0000000000..4310d62e0a --- /dev/null +++ b/src/libsystemd-bus/test-bus-signature.c @@ -0,0 +1,74 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include + +#include "log.h" +#include "bus-signature.h" + +int main(int argc, char *argv[]) { + + assert_se(signature_is_single("y")); + assert_se(signature_is_single("u")); + assert_se(signature_is_single("v")); + assert_se(signature_is_single("as")); + assert_se(signature_is_single("(ss)")); + assert_se(signature_is_single("()")); + assert_se(signature_is_single("(()()()()())")); + assert_se(signature_is_single("(((())))")); + assert_se(signature_is_single("((((s))))")); + assert_se(signature_is_single("{ss}")); + assert_se(signature_is_single("a{ss}")); + assert_se(!signature_is_single("uu")); + assert_se(!signature_is_single("")); + assert_se(!signature_is_single("(")); + assert_se(!signature_is_single(")")); + assert_se(!signature_is_single("())")); + assert_se(!signature_is_single("((())")); + assert_se(!signature_is_single("{)")); + assert_se(!signature_is_single("{}")); + assert_se(!signature_is_single("{sss}")); + assert_se(!signature_is_single("{s}")); + assert_se(!signature_is_single("{ass}")); + assert_se(!signature_is_single("a}")); + + assert_se(signature_is_pair("yy")); + assert_se(signature_is_pair("ss")); + assert_se(signature_is_pair("sas")); + assert_se(signature_is_pair("sv")); + assert_se(signature_is_pair("sa(vs)")); + assert_se(!signature_is_pair("")); + assert_se(!signature_is_pair("va")); + assert_se(!signature_is_pair("sss")); + assert_se(!signature_is_pair("{s}ss")); + + assert_se(signature_is_valid("ssa{ss}sssub", true)); + assert_se(signature_is_valid("ssa{ss}sssub", false)); + assert_se(signature_is_valid("{ss}", true)); + assert_se(!signature_is_valid("{ss}", false)); + assert_se(signature_is_valid("", true)); + assert_se(signature_is_valid("", false)); + + assert_se(signature_is_valid("sssusa(uuubbba(uu)uuuu)a{u(uuuvas)}", false)); + + return 0; +} -- cgit v1.2.1 From 5407f2dea3efa5234140f1adb9c2be9916d77cdc Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 19 Mar 2013 20:16:27 +0100 Subject: bus: suppress reply messages to method calls with no_reply set --- src/libsystemd-bus/bus-message.c | 44 ++++++++++++++++++++++------------------ src/libsystemd-bus/bus-message.h | 1 + src/libsystemd-bus/sd-bus.c | 5 +++++ 3 files changed, 30 insertions(+), 20 deletions(-) diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index 4c5588cf8a..ccea12055d 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -245,6 +245,8 @@ int sd_bus_message_new_signal( return -EINVAL; if (!member) return -EINVAL; + if (!m) + return -EINVAL; t = message_new(bus, SD_BUS_MESSAGE_TYPE_SIGNAL); if (!t) @@ -283,6 +285,8 @@ int sd_bus_message_new_method_call( return -EINVAL; if (!member) return -EINVAL; + if (!m) + return -EINVAL; t = message_new(bus, SD_BUS_MESSAGE_TYPE_METHOD_CALL); if (!t) @@ -315,9 +319,10 @@ fail: return r; } -int sd_bus_message_new_method_return( +static int message_new_reply( sd_bus *bus, sd_bus_message *call, + uint8_t type, sd_bus_message **m) { sd_bus_message *t; @@ -327,12 +332,15 @@ int sd_bus_message_new_method_return( return -EINVAL; if (call->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) return -EINVAL; + if (!m) + return -EINVAL; - t = message_new(bus, SD_BUS_MESSAGE_TYPE_METHOD_RETURN); + t = message_new(bus, type); if (!t) return -ENOMEM; t->reply_serial = BUS_MESSAGE_SERIAL(call); + r = message_append_field_uint32(t, SD_BUS_MESSAGE_HEADER_REPLY_SERIAL, t->reply_serial); if (r < 0) goto fail; @@ -343,14 +351,23 @@ int sd_bus_message_new_method_return( goto fail; } + t->dont_send = !!(call->header->flags & SD_BUS_MESSAGE_NO_REPLY_EXPECTED); + *m = t; - return 0; fail: message_free(t); return r; } +int sd_bus_message_new_method_return( + sd_bus *bus, + sd_bus_message *call, + sd_bus_message **m) { + + return message_new_reply(bus, call, SD_BUS_MESSAGE_TYPE_METHOD_RETURN, m); +} + int sd_bus_message_new_method_error( sd_bus *bus, sd_bus_message *call, @@ -360,29 +377,16 @@ int sd_bus_message_new_method_error( sd_bus_message *t; int r; - if (!call) - return -EINVAL; - if (call->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) - return -EINVAL; if (!e) return -EINVAL; if (!e->name) return -EINVAL; + if (!m) + return -EINVAL; - t = message_new(bus, SD_BUS_MESSAGE_TYPE_METHOD_ERROR); - if (!t) - return -ENOMEM; - - t->reply_serial = BUS_MESSAGE_SERIAL(call); - r = message_append_field_uint32(t, SD_BUS_MESSAGE_HEADER_REPLY_SERIAL, t->reply_serial); + r = message_new_reply(bus, call, SD_BUS_MESSAGE_TYPE_METHOD_ERROR, &t); if (r < 0) - goto fail; - - if (call->sender) { - r = message_append_field_string(t, SD_BUS_MESSAGE_HEADER_DESTINATION, SD_BUS_TYPE_STRING, call->sender, &t->sender); - if (r < 0) - goto fail; - } + return r; r = message_append_field_string(t, SD_BUS_MESSAGE_HEADER_ERROR_NAME, SD_BUS_TYPE_STRING, e->name, &t->error.name); if (r < 0) diff --git a/src/libsystemd-bus/bus-message.h b/src/libsystemd-bus/bus-message.h index c62659e424..bfd2b12280 100644 --- a/src/libsystemd-bus/bus-message.h +++ b/src/libsystemd-bus/bus-message.h @@ -71,6 +71,7 @@ struct sd_bus_message { bool free_header:1; bool free_fields:1; bool free_body:1; + bool dont_send:1; struct bus_header *header; void *fields; diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index d80f09793c..f7d7644463 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -996,6 +996,11 @@ int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) { if (r < 0) return r; + /* If this is a reply and no reply was requested, then let's + * suppress this, if we can */ + if (m->dont_send && !serial) + return 0; + if (bus->wqueue_size <= 0) { size_t idx = 0; -- cgit v1.2.1 From 9a17484d986f6cb8828afdf911db425b574c63fd Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 20 Mar 2013 03:15:03 +0100 Subject: bus: implement demarshaller --- src/libsystemd-bus/bus-message.c | 1220 ++++++++++++++++++++++++++++----- src/libsystemd-bus/bus-message.h | 29 +- src/libsystemd-bus/sd-bus.c | 4 +- src/libsystemd-bus/sd-bus.h | 14 +- src/libsystemd-bus/test-bus-marshal.c | 56 +- src/shared/util.c | 19 + src/shared/util.h | 1 + 7 files changed, 1164 insertions(+), 179 deletions(-) diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index ccea12055d..3a74835674 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -22,15 +22,31 @@ #include #include "util.h" +#include "utf8.h" -#include "bus-message.h" #include "sd-bus.h" +#include "bus-message.h" #include "bus-internal.h" #include "bus-type.h" #include "bus-signature.h" int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored); +static void reset_containers(sd_bus_message *m) { + unsigned i; + + assert(m); + + for (i = 0; i < m->n_containers; i++) + free(m->containers[i].signature); + + free(m->containers); + m->containers = NULL; + + m->n_containers = 0; + m->root_container.index = 0; +} + static void message_free(sd_bus_message *m) { unsigned i; @@ -48,10 +64,10 @@ static void message_free(sd_bus_message *m) { for (i = 0; i < m->n_fds; i++) close_nointr_nofail(m->fds[i]); - for (i = 0; i < m->n_containers; i++) - free(m->sub_containers[i].signature); + reset_containers(m); + free(m->root_container.signature); - free(m->sub_containers); + free(m->peeked_signature); free(m); } @@ -621,8 +637,8 @@ static struct bus_container *message_get_container(sd_bus_message *m) { if (m->n_containers == 0) return &m->root_container; - assert(m->sub_containers); - return m->sub_containers + m->n_containers - 1; + assert(m->containers); + return m->containers + m->n_containers - 1; } static void *message_extend_body(sd_bus_message *m, size_t align, size_t sz) { @@ -631,6 +647,7 @@ static void *message_extend_body(sd_bus_message *m, size_t align, size_t sz) { struct bus_container *c; assert(m); + assert(align > 0); o = m->body; added = m->header->body_size; @@ -641,7 +658,7 @@ static void *message_extend_body(sd_bus_message *m, size_t align, size_t sz) { added = m->header->body_size - added; - for (c = m->sub_containers; c < m->sub_containers + m->n_containers; c++) + for (c = m->containers; c < m->containers + m->n_containers; c++) if (c->array_size) { c->array_size = (uint32_t*) ((uint8_t*) m->body + ((uint8_t*) c->array_size - (uint8_t*) o)); *c->array_size += added; @@ -659,7 +676,7 @@ static void *message_extend_body(sd_bus_message *m, size_t align, size_t sz) { int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored) { struct bus_container *c; - size_t sz, align, nindex; + size_t sz, align; uint32_t k; void *a; char *e = NULL; @@ -677,19 +694,17 @@ int message_append_basic(sd_bus_message *m, char type, const void *p, const void /* Container signature is already set */ if (c->signature[c->index] != type) - return -EINVAL; + return -ENXIO; } else { /* Maybe we can append to the signature? But only if this is the top-level container*/ if (c->enclosing != 0) - return -EINVAL; + return -ENXIO; e = strextend(&c->signature, CHAR_TO_STR(type), NULL); if (!e) return -ENOMEM; } - nindex = c->index + 1; - switch (type) { case SD_BUS_TYPE_STRING: @@ -752,7 +767,7 @@ int message_append_basic(sd_bus_message *m, char type, const void *p, const void } if (c->enclosing != SD_BUS_TYPE_ARRAY) - c->index = nindex; + c->index++; return 0; } @@ -767,8 +782,8 @@ static int bus_message_open_array( const char *contents, uint32_t **array_size) { + unsigned nindex; char *e = NULL; - size_t nindex; void *a, *b; int alignment; size_t saved; @@ -790,15 +805,15 @@ static int bus_message_open_array( /* Verify the existing signature */ if (c->signature[c->index] != SD_BUS_TYPE_ARRAY) - return -EINVAL; + return -ENXIO; if (!startswith(c->signature + c->index + 1, contents)) - return -EINVAL; + return -ENXIO; nindex = c->index + 1 + strlen(contents); } else { if (c->enclosing != 0) - return -EINVAL; + return -ENXIO; /* Extend the existing signature */ @@ -846,7 +861,7 @@ static int bus_message_open_variant( const char *contents) { char *e = NULL; - size_t l, nindex; + size_t l; void *a; assert(m); @@ -862,19 +877,17 @@ static int bus_message_open_variant( if (c->signature && c->signature[c->index]) { if (c->signature[c->index] != SD_BUS_TYPE_VARIANT) - return -EINVAL; + return -ENXIO; } else { if (c->enclosing != 0) - return -EINVAL; + return -ENXIO; e = strextend(&c->signature, CHAR_TO_STR(SD_BUS_TYPE_VARIANT), NULL); if (!e) return -ENOMEM; } - nindex = c->index + 1; - l = strlen(contents); a = message_extend_body(m, 1, 1 + l + 1); if (!a) { @@ -889,7 +902,7 @@ static int bus_message_open_variant( memcpy((uint8_t*) a + 1, contents, l + 1); if (c->enclosing != SD_BUS_TYPE_ARRAY) - c->index = nindex; + c->index++; return 0; } @@ -917,12 +930,12 @@ static int bus_message_open_struct( if (c->signature[c->index] != SD_BUS_TYPE_STRUCT_BEGIN || !startswith(c->signature + c->index + 1, contents) || c->signature[c->index + 1 + l] != SD_BUS_TYPE_STRUCT_END) - return -EINVAL; + return -ENXIO; nindex = c->index + 1 + l + 1; } else { if (c->enclosing != 0) - return -EINVAL; + return -ENXIO; e = strextend(&c->signature, CHAR_TO_STR(SD_BUS_TYPE_STRUCT_BEGIN), contents, CHAR_TO_STR(SD_BUS_TYPE_STRUCT_END), NULL); if (!e) @@ -960,7 +973,7 @@ static int bus_message_open_dict_entry( return -EINVAL; if (c->enclosing != SD_BUS_TYPE_ARRAY) - return -EINVAL; + return -ENXIO; if (c->signature && c->signature[c->index]) { size_t l; @@ -970,11 +983,11 @@ static int bus_message_open_dict_entry( if (c->signature[c->index] != SD_BUS_TYPE_DICT_ENTRY_BEGIN || !startswith(c->signature + c->index + 1, contents) || c->signature[c->index + 1 + l] != SD_BUS_TYPE_DICT_ENTRY_END) - return -EINVAL; + return -ENXIO; nindex = c->index + 1 + l + 1; } else - return -EINVAL; + return -ENXIO; /* Align contents to 8 byte boundary */ if (!message_extend_body(m, 8, 0)) @@ -991,9 +1004,9 @@ int sd_bus_message_open_container( char type, const char *contents) { - struct bus_container *c, *sub; - char *signature; + struct bus_container *c, *w; uint32_t *array_size = NULL; + char *signature; int r; if (!m) @@ -1004,11 +1017,10 @@ int sd_bus_message_open_container( return -EINVAL; /* Make sure we have space for one more container */ - sub = realloc(m->sub_containers, sizeof(struct bus_container) * (m->n_containers + 1)); - if (!sub) + w = realloc(m->containers, sizeof(struct bus_container) * (m->n_containers + 1)); + if (!w) return -ENOMEM; - - m->sub_containers = sub; + m->containers = w; c = message_get_container(m); @@ -1033,12 +1045,12 @@ int sd_bus_message_open_container( } /* OK, let's fill it in */ - sub += m->n_containers++; - - sub->enclosing = type; - sub->signature = signature; - sub->index = 0; - sub->array_size = array_size; + w += m->n_containers++; + w->enclosing = type; + w->signature = signature; + w->index = 0; + w->array_size = array_size; + w->begin = 0; return 0; } @@ -1054,12 +1066,8 @@ int sd_bus_message_close_container(sd_bus_message *m) { return -EINVAL; c = message_get_container(m); - - if (!c->signature) - return -EINVAL; - if (c->enclosing != SD_BUS_TYPE_ARRAY) - if (c->signature[c->index] != 0) + if (c->signature && c->signature[c->index] != 0) return -EINVAL; free(c->signature); @@ -1092,9 +1100,13 @@ static int message_append_ap( case SD_BUS_TYPE_BOOLEAN: case SD_BUS_TYPE_INT32: - case SD_BUS_TYPE_UINT32: { + case SD_BUS_TYPE_UINT32: + case SD_BUS_TYPE_UNIX_FD: { uint32_t x; + /* We assume a boolean is the same as int32_t */ + assert_cc(sizeof(int32_t) == sizeof(int)); + x = va_arg(ap, uint32_t); r = sd_bus_message_append_basic(m, *t, &x); break; @@ -1129,16 +1141,7 @@ static int message_append_ap( break; } - case SD_BUS_TYPE_UNIX_FD: { - int x; - - x = va_arg(ap, int); - r = sd_bus_message_append_basic(m, *t, &x); - break; - } - case SD_BUS_TYPE_ARRAY: { - unsigned i, n; size_t k; r = signature_element_length(t + 1, &k); @@ -1146,6 +1149,7 @@ static int message_append_ap( return r; { + unsigned i, n; char s[k + 1]; memcpy(s, t + 1, k); @@ -1157,7 +1161,6 @@ static int message_append_ap( return r; n = va_arg(ap, unsigned); - for (i = 0; i < n; i++) { r = message_append_ap(m, s, ap); if (r < 0) @@ -1248,147 +1251,1050 @@ int sd_bus_message_append(sd_bus_message *m, const char *types, ...) { return r; } -int sd_bus_message_read_type(sd_bus_message *m, char *type, char *element, size_t *length) { - return -ENOTSUP; -} +static int buffer_peek(const void *p, uint32_t sz, size_t *rindex, size_t align, size_t nbytes, void **r) { + size_t k, start, n; -int sd_bus_message_read_basic(sd_bus_message *m, char type, char element, const void **p, size_t *length) { - return -ENOTSUP; -} + assert(rindex); + assert(align > 0); -int sd_bus_message_read(sd_bus_message *m, const char *types, ...) { - return -ENOTSUP; + start = ALIGN_TO((size_t) *rindex, align); + n = start + nbytes; + + if (n > sz) + return -EBADMSG; + + /* Verify that padding is 0 */ + for (k = *rindex; k < start; k++) + if (((const uint8_t*) p)[k] != 0) + return -EBADMSG; + + if (r) + *r = (uint8_t*) p + start; + + *rindex = n; + + return 1; } -int message_parse(sd_bus_message *m) { - assert(m); +static bool message_end_of_array(sd_bus_message *m, size_t index) { + struct bus_container *c; - if (m->header->version != 1) - return -EIO; + assert(m); - if (m->header->endian != SD_BUS_BIG_ENDIAN && - m->header->endian != SD_BUS_LITTLE_ENDIAN) - return -EIO; + c = message_get_container(m); + if (!c->array_size) + return false; - return 0; + return index >= c->begin + BUS_MESSAGE_BSWAP32(m, *c->array_size); } -static void setup_iovec(sd_bus_message *m) { +static int message_peek_body(sd_bus_message *m, size_t *rindex, size_t align, size_t nbytes, void **ret) { assert(m); - assert(m->sealed); + assert(rindex); + assert(align > 0); - m->n_iovec = 0; + if (message_end_of_array(m, *rindex)) + return 0; - m->iovec[m->n_iovec].iov_base = m->header; - m->iovec[m->n_iovec].iov_len = sizeof(*m->header); - m->n_iovec++; + return buffer_peek(m->body, BUS_MESSAGE_BODY_SIZE(m), rindex, align, nbytes, ret); +} - if (m->fields) { - m->iovec[m->n_iovec].iov_base = m->fields; - m->iovec[m->n_iovec].iov_len = m->header->fields_size; - m->n_iovec++; +static bool validate_string(const char *s, size_t l) { + assert(s); - if (m->header->fields_size % 8 != 0) { - static const uint8_t padding[7] = { 0, 0, 0, 0, 0, 0, 0 }; + /* Check for NUL chars in the string */ + if (memchr(s, 0, l)) + return false; - m->iovec[m->n_iovec].iov_base = (void*) padding; - m->iovec[m->n_iovec].iov_len = 8 - m->header->fields_size % 8; - m->n_iovec++; - } - } + /* Check for NUL termination */ + if (s[l] != 0) + return false; - if (m->body) { - m->iovec[m->n_iovec].iov_base = m->body; - m->iovec[m->n_iovec].iov_len = m->header->body_size; - m->n_iovec++; - } + /* Check if valid UTF8 */ + if (!utf8_is_valid(s)) + return false; + + return true; } -int message_seal(sd_bus_message *m, uint64_t serial) { - int r; +static bool validate_signature(const char *s, size_t l) { + /* Check for NUL chars in the signature */ + if (memchr(s, 0, l)) + return false; - assert(m); + /* Check for NUL termination */ + if (s[l] != 0) + return false; - if (m->sealed) + /* Check if valid signature */ + if (!signature_is_valid(s, true)) + return false; + + return true; +} + +int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p) { + struct bus_container *c; + int r; + void *q; + + if (!m) + return -EINVAL; + if (!m->sealed) return -EPERM; + if (!bus_type_is_basic(type)) + return -EINVAL; - if (m->n_containers > 0) - return -EBADMSG; + c = message_get_container(m); - /* If there's a non-trivial signature set, then add it in here */ - if (!isempty(m->root_container.signature)) { - r = message_append_field_signature(m, SD_BUS_MESSAGE_HEADER_SIGNATURE, m->root_container.signature, &m->signature); + if (!c->signature || c->signature[c->index] == 0) + return 0; + + if (c->signature[c->index] != type) + return -ENXIO; + + switch (type) { + + case SD_BUS_TYPE_STRING: + case SD_BUS_TYPE_OBJECT_PATH: { + uint32_t l; + size_t rindex; + + rindex = m->rindex; + r = message_peek_body(m, &rindex, 4, 4, &q); + if (r <= 0) + return r; + + l = BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q); + r = message_peek_body(m, &rindex, 1, l+1, &q); if (r < 0) return r; + if (r == 0) + return -EBADMSG; + + if (!validate_string(q, l)) + return -EBADMSG; + + m->rindex = rindex; + *(const char**) p = q; + break; } - if (m->n_fds > 0) { - r = message_append_field_uint32(m, SD_BUS_MESSAGE_HEADER_UNIX_FDS, m->n_fds); + case SD_BUS_TYPE_SIGNATURE: { + uint8_t l; + size_t rindex; + + rindex = m->rindex; + r = message_peek_body(m, &rindex, 1, 1, &q); + if (r <= 0) + return r; + + l = *(uint8_t*) q; + r = message_peek_body(m, &rindex, 1, l+1, &q); if (r < 0) return r; + if (r == 0) + return -EBADMSG; + + if (!validate_signature(q, l)) + return -EBADMSG; + + m->rindex = rindex; + *(const char**) p = q; + break; } - m->header->serial = serial; - m->sealed = true; + default: { + size_t sz, align; - setup_iovec(m); + align = bus_type_get_alignment(type); + sz = bus_type_get_size(type); - return 0; + r = message_peek_body(m, &m->rindex, align, sz, &q); + if (r <= 0) + return r; + + switch (type) { + + case SD_BUS_TYPE_BYTE: + *(uint8_t*) p = *(uint8_t*) q; + break; + + case SD_BUS_TYPE_BOOLEAN: + *(int*) p = !!*(uint32_t*) q; + break; + + case SD_BUS_TYPE_INT16: + case SD_BUS_TYPE_UINT16: + *(uint16_t*) p = BUS_MESSAGE_BSWAP16(m, *(uint16_t*) q); + break; + + case SD_BUS_TYPE_INT32: + case SD_BUS_TYPE_UINT32: + *(uint32_t*) p = BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q); + break; + + case SD_BUS_TYPE_INT64: + case SD_BUS_TYPE_UINT64: + case SD_BUS_TYPE_DOUBLE: + *(uint64_t*) p = BUS_MESSAGE_BSWAP64(m, *(uint64_t*) q); + break; + + default: + assert_not_reached("Unknown basic type..."); + } + + break; + } + } + + if (c->enclosing != SD_BUS_TYPE_ARRAY) + c->index++; + + return 1; } -int sd_bus_message_set_destination(sd_bus_message *m, const char *destination) { - if (!m) +static int bus_message_enter_array( + sd_bus_message *m, + struct bus_container *c, + const char *contents, + uint32_t **array_size) { + + size_t rindex; + void *q; + int r, alignment; + + assert(m); + assert(c); + assert(contents); + assert(array_size); + + if (!signature_is_single(contents)) return -EINVAL; - if (!destination) + + alignment = bus_type_get_alignment(contents[0]); + if (alignment < 0) + return alignment; + + if (!c->signature || c->signature[c->index] == 0) + return 0; + + if (c->signature[c->index] != SD_BUS_TYPE_ARRAY) + return -ENXIO; + + if (!startswith(c->signature + c->index + 1, contents)) + return -ENXIO; + + rindex = m->rindex; + r = message_peek_body(m, &rindex, 4, 4, &q); + if (r <= 0) + return r; + + if (BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q) > 67108864) + return -E2BIG; + + r = message_peek_body(m, &rindex, alignment, 0, NULL); + if (r < 0) + return r; + if (r == 0) + return -EBADMSG; + + if (c->enclosing != SD_BUS_TYPE_ARRAY) + c->index += 1 + strlen(contents); + + m->rindex = rindex; + + *array_size = (uint32_t*) q; + + return 1; +} + +static int bus_message_enter_variant( + sd_bus_message *m, + struct bus_container *c, + const char *contents) { + + size_t rindex; + uint8_t l; + void *q; + int r; + + assert(m); + assert(c); + assert(contents); + + if (!signature_is_single(contents)) return -EINVAL; - if (m->sealed) - return -EPERM; - if (m->destination) - return -EEXIST; - return message_append_field_string(m, SD_BUS_MESSAGE_HEADER_DESTINATION, SD_BUS_TYPE_STRING, destination, &m->destination); + if (*contents == SD_BUS_TYPE_DICT_ENTRY_BEGIN) + return -EINVAL; + + if (!c->signature || c->signature[c->index] == 0) + return 0; + + if (c->signature[c->index] != SD_BUS_TYPE_VARIANT) + return -ENXIO; + + rindex = m->rindex; + r = message_peek_body(m, &rindex, 1, 1, &q); + if (r <= 0) + return r; + + l = *(uint8_t*) q; + r = message_peek_body(m, &rindex, 1, l+1, &q); + if (r < 0) + return r; + if (r == 0) + return -EBADMSG; + + if (!validate_signature(q, l)) + return -EBADMSG; + + if (!streq(q, contents)) + return -ENXIO; + + if (c->enclosing != SD_BUS_TYPE_ARRAY) + c->index++; + + m->rindex = rindex; + + return 1; } -void message_dump(sd_bus_message *m) { - - log_info("Message %p\n" - "\tn_ref=%u\n" - "\tendian=%c\n" - "\ttype=%i\n" - "\tflags=%u\n" - "\tversion=%u\n" - "\tserial=%u\n" - "\tfields_size=%u\n" - "\tbody_size=%u\n" - "\tpath=%s\n" - "\tinterface=%s\n" - "\tmember=%s\n" - "\tdestination=%s\n" - "\tsender=%s\n" - "\tsignature=%s\n" - "\treply_serial=%u\n" - "\terror.name=%s\n" - "\terror.message=%s\n" - "\tsealed=%s\n", - m, - m->n_ref, - m->header->endian, - m->header->type, - m->header->flags, - m->header->version, - BUS_MESSAGE_SERIAL(m), - BUS_MESSAGE_FIELDS_SIZE(m), - BUS_MESSAGE_BODY_SIZE(m), - strna(m->path), - strna(m->interface), - strna(m->member), - strna(m->destination), - strna(m->sender), - strna(m->signature), - m->reply_serial, - strna(m->error.name), - strna(m->error.message), - yes_no(m->sealed)); +static int bus_message_enter_struct( + sd_bus_message *m, + struct bus_container *c, + const char *contents) { + + size_t l; + int r; + + assert(m); + assert(c); + assert(contents); + + if (!signature_is_valid(contents, false)) + return -EINVAL; + + if (!c->signature || c->signature[c->index] == 0) + return 0; + + l = strlen(contents); + + if (c->signature[c->index] != SD_BUS_TYPE_STRUCT_BEGIN || + !startswith(c->signature + c->index + 1, contents) || + c->signature[c->index + 1 + l] != SD_BUS_TYPE_STRUCT_END) + return -ENXIO; + + r = message_peek_body(m, &m->rindex, 8, 0, NULL); + if (r <= 0) + return r; + + if (c->enclosing != SD_BUS_TYPE_ARRAY) + c->index += 1 + l + 1; + + return 1; +} + +static int bus_message_enter_dict_entry( + sd_bus_message *m, + struct bus_container *c, + const char *contents) { + + size_t l; + int r; + + assert(m); + assert(c); + assert(contents); + + if (!signature_is_pair(contents)) + return -EINVAL; + + if (c->enclosing != SD_BUS_TYPE_ARRAY) + return -ENXIO; + + if (!c->signature || c->signature[c->index] == 0) + return 0; + + l = strlen(contents); + + if (c->signature[c->index] != SD_BUS_TYPE_DICT_ENTRY_BEGIN || + !startswith(c->signature + c->index + 1, contents) || + c->signature[c->index + 1 + l] != SD_BUS_TYPE_DICT_ENTRY_END) + return -ENXIO; + + r = message_peek_body(m, &m->rindex, 8, 0, NULL); + if (r <= 0) + return r; + + if (c->enclosing != SD_BUS_TYPE_ARRAY) + c->index += 1 + l + 1; + + return 1; +} + +int sd_bus_message_enter_container(sd_bus_message *m, char type, const char *contents) { + struct bus_container *c, *w; + uint32_t *array_size = NULL; + char *signature; + int r; + + if (!m) + return -EINVAL; + if (!m->sealed) + return -EPERM; + if (!contents) + return -EINVAL; + + w = realloc(m->containers, sizeof(struct bus_container) * (m->n_containers + 1)); + if (!w) + return -ENOMEM; + m->containers = w; + + c = message_get_container(m); + + if (!c->signature || c->signature[c->index] == 0) + return 0; + + signature = strdup(contents); + if (!signature) + return -ENOMEM; + + if (type == SD_BUS_TYPE_ARRAY) + r = bus_message_enter_array(m, c, contents, &array_size); + else if (type == SD_BUS_TYPE_VARIANT) + r = bus_message_enter_variant(m, c, contents); + else if (type == SD_BUS_TYPE_STRUCT) + r = bus_message_enter_struct(m, c, contents); + else if (type == SD_BUS_TYPE_DICT_ENTRY) + r = bus_message_enter_dict_entry(m, c, contents); + else + r = -EINVAL; + + if (r <= 0) { + free(signature); + return r; + } + + /* OK, let's fill it in */ + w += m->n_containers++; + w->enclosing = type; + w->signature = signature; + w->index = 0; + w->array_size = array_size; + w->begin = m->rindex; + + return 1; +} + +int sd_bus_message_exit_container(sd_bus_message *m) { + struct bus_container *c; + + if (!m) + return -EINVAL; + if (!m->sealed) + return -EPERM; + if (m->n_containers <= 0) + return -EINVAL; + + c = message_get_container(m); + if (c->enclosing == SD_BUS_TYPE_ARRAY) { + uint32_t l; + + l = BUS_MESSAGE_BSWAP32(m, *c->array_size); + if (c->begin + l != m->rindex) + return -EBUSY; + + } else { + if (c->signature && c->signature[c->index] != 0) + return -EINVAL; + } + + free(c->signature); + m->n_containers--; + + return 1; +} + +int sd_bus_message_peek_type(sd_bus_message *m, char *type, const char **contents) { + struct bus_container *c; + int r; + + if (!m) + return -EINVAL; + if (!m->sealed) + return -EPERM; + + c = message_get_container(m); + + if (!c->signature || c->signature[c->index] == 0) + goto eof; + + if (message_end_of_array(m, m->rindex)) + goto eof; + + if (bus_type_is_basic(c->signature[c->index])) { + if (contents) + *contents = NULL; + if (type) + *type = c->signature[c->index]; + return 1; + } + + if (c->signature[c->index] == SD_BUS_TYPE_ARRAY) { + + if (contents) { + size_t l; + char *sig; + + r = signature_element_length(c->signature+c->index+1, &l); + if (r < 0) + return r; + + sig = strndup(c->signature + c->index + 1, l); + if (!sig) + return -ENOMEM; + + free(m->peeked_signature); + m->peeked_signature = sig; + + *contents = sig; + } + + if (type) + *type = SD_BUS_TYPE_ARRAY; + + return 1; + } + + if (c->signature[c->index] == SD_BUS_TYPE_STRUCT_BEGIN || + c->signature[c->index] == SD_BUS_TYPE_DICT_ENTRY_BEGIN) { + + if (contents) { + size_t l; + char *sig; + + r = signature_element_length(c->signature+c->index, &l); + if (r < 0) + return r; + + assert(l >= 2); + sig = strndup(c->signature + c->index + 1, l - 2); + if (!sig) + return -ENOMEM; + + free(m->peeked_signature); + m->peeked_signature = sig; + + *contents = sig; + } + + if (type) + *type = c->signature[c->index] == SD_BUS_TYPE_STRUCT_BEGIN ? SD_BUS_TYPE_STRUCT : SD_BUS_TYPE_DICT_ENTRY; + + return 1; + } + + if (c->signature[c->index] == SD_BUS_TYPE_VARIANT) { + if (contents) { + size_t rindex, l; + void *q; + + rindex = m->rindex; + r = message_peek_body(m, &rindex, 1, 1, &q); + if (r < 0) + return r; + if (r == 0) + goto eof; + + l = *(uint8_t*) q; + r = message_peek_body(m, &rindex, 1, l+1, &q); + if (r < 0) + return r; + if (r == 0) + return -EBADMSG; + + if (!validate_signature(q, l)) + return -EBADMSG; + + *contents = q; + } + + if (type) + *type = SD_BUS_TYPE_VARIANT; + + return 1; + } + + return -EINVAL; + +eof: + if (type) + *type = c->enclosing; + if (contents) + *contents = NULL; + return 0; +} + +int sd_bus_message_rewind(sd_bus_message *m, bool complete) { + struct bus_container *c; + + if (!m) + return -EINVAL; + if (!m->sealed) + return -EPERM; + + if (complete) { + reset_containers(m); + m->rindex = 0; + m->root_container.index = 0; + + c = message_get_container(m); + } else { + c = message_get_container(m); + + c->index = 0; + m->rindex = c->begin; + } + + return !isempty(c->signature); +} + +static int message_read_ap(sd_bus_message *m, const char *types, va_list ap) { + const char *t; + int r; + + assert(m); + assert(types); + + for (t = types; *t; t++) { + switch (*t) { + + case SD_BUS_TYPE_BYTE: + case SD_BUS_TYPE_BOOLEAN: + case SD_BUS_TYPE_INT16: + case SD_BUS_TYPE_UINT16: + case SD_BUS_TYPE_INT32: + case SD_BUS_TYPE_UINT32: + case SD_BUS_TYPE_INT64: + case SD_BUS_TYPE_UINT64: + case SD_BUS_TYPE_DOUBLE: + case SD_BUS_TYPE_STRING: + case SD_BUS_TYPE_OBJECT_PATH: + case SD_BUS_TYPE_SIGNATURE: { + void *p; + + p = va_arg(ap, void*); + r = sd_bus_message_read_basic(m, *t, p); + break; + } + + case SD_BUS_TYPE_ARRAY: { + size_t k; + + r = signature_element_length(t + 1, &k); + if (r < 0) + return r; + + { + unsigned i, n; + char s[k + 1]; + + memcpy(s, t + 1, k); + s[k] = 0; + t += k; + + r = sd_bus_message_enter_container(m, SD_BUS_TYPE_ARRAY, s); + if (r < 0) + return r; + if (r == 0) + return -ENXIO; + + n = va_arg(ap, unsigned); + for (i = 0; i < n; i++) { + r = message_read_ap(m, s, ap); + if (r < 0) + return r; + } + + r = sd_bus_message_exit_container(m); + } + + break; + } + + case SD_BUS_TYPE_VARIANT: { + const char *s; + + s = va_arg(ap, const char *); + if (!s) + return -EINVAL; + + r = sd_bus_message_enter_container(m, SD_BUS_TYPE_VARIANT, s); + if (r < 0) + return r; + if (r == 0) + return -ENXIO; + + r = message_read_ap(m, s, ap); + if (r < 0) + return r; + if (r == 0) + return -ENXIO; + + r = sd_bus_message_exit_container(m); + break; + } + + case SD_BUS_TYPE_STRUCT_BEGIN: + case SD_BUS_TYPE_DICT_ENTRY_BEGIN: { + size_t k; + + r = signature_element_length(t, &k); + if (r < 0) + return r; + + { + char s[k - 1]; + memcpy(s, t + 1, k - 2); + s[k - 2] = 0; + + r = sd_bus_message_enter_container(m, *t == SD_BUS_TYPE_STRUCT_BEGIN ? SD_BUS_TYPE_STRUCT : SD_BUS_TYPE_DICT_ENTRY, s); + if (r < 0) + return r; + if (r == 0) + return -ENXIO; + + t += k - 1; + + r = message_read_ap(m, s, ap); + if (r < 0) + return r; + if (r == 0) + return -ENXIO; + + r = sd_bus_message_exit_container(m); + } + + break; + } + + default: + r = -EINVAL; + } + + if (r < 0) + return r; + if (r == 0) + return -ENXIO; + } + + return 1; +} + +int sd_bus_message_read(sd_bus_message *m, const char *types, ...) { + va_list ap; + int r; + + if (!m) + return -EINVAL; + if (!m->sealed) + return -EPERM; + if (!types) + return -EINVAL; + + va_start(ap, types); + r = message_read_ap(m, types, ap); + va_end(ap); + + return r; +} + +int bus_message_parse(sd_bus_message *m) { + assert(m); + + if (m->header->version != 1) + return -EIO; + + if (m->header->endian != SD_BUS_BIG_ENDIAN && + m->header->endian != SD_BUS_LITTLE_ENDIAN) + return -EIO; + + return 0; +} + +static void setup_iovec(sd_bus_message *m) { + assert(m); + assert(m->sealed); + + m->n_iovec = 0; + + m->iovec[m->n_iovec].iov_base = m->header; + m->iovec[m->n_iovec].iov_len = sizeof(*m->header); + m->n_iovec++; + + if (m->fields) { + m->iovec[m->n_iovec].iov_base = m->fields; + m->iovec[m->n_iovec].iov_len = m->header->fields_size; + m->n_iovec++; + + if (m->header->fields_size % 8 != 0) { + static const uint8_t padding[7] = { 0, 0, 0, 0, 0, 0, 0 }; + + m->iovec[m->n_iovec].iov_base = (void*) padding; + m->iovec[m->n_iovec].iov_len = 8 - m->header->fields_size % 8; + m->n_iovec++; + } + } + + if (m->body) { + m->iovec[m->n_iovec].iov_base = m->body; + m->iovec[m->n_iovec].iov_len = m->header->body_size; + m->n_iovec++; + } +} + +int bus_message_seal(sd_bus_message *m, uint64_t serial) { + int r; + + assert(m); + + if (m->sealed) + return -EPERM; + + if (m->n_containers > 0) + return -EBADMSG; + + /* If there's a non-trivial signature set, then add it in here */ + if (!isempty(m->root_container.signature)) { + r = message_append_field_signature(m, SD_BUS_MESSAGE_HEADER_SIGNATURE, m->root_container.signature, &m->signature); + if (r < 0) + return r; + } + + if (m->n_fds > 0) { + r = message_append_field_uint32(m, SD_BUS_MESSAGE_HEADER_UNIX_FDS, m->n_fds); + if (r < 0) + return r; + } + + m->header->serial = serial; + m->sealed = true; + + setup_iovec(m); + + return 0; +} + +int sd_bus_message_set_destination(sd_bus_message *m, const char *destination) { + if (!m) + return -EINVAL; + if (!destination) + return -EINVAL; + if (m->sealed) + return -EPERM; + if (m->destination) + return -EEXIST; + + return message_append_field_string(m, SD_BUS_MESSAGE_HEADER_DESTINATION, SD_BUS_TYPE_STRING, destination, &m->destination); +} + +int bus_message_dump(sd_bus_message *m) { + unsigned level = 1; + int r; + + assert(m); + + printf("Message %p\n" + "\tn_ref=%u\n" + "\tendian=%c\n" + "\ttype=%i\n" + "\tflags=%u\n" + "\tversion=%u\n" + "\tserial=%u\n" + "\tfields_size=%u\n" + "\tbody_size=%u\n" + "\tpath=%s\n" + "\tinterface=%s\n" + "\tmember=%s\n" + "\tdestination=%s\n" + "\tsender=%s\n" + "\tsignature=%s\n" + "\treply_serial=%u\n" + "\terror.name=%s\n" + "\terror.message=%s\n" + "\tsealed=%s\n", + m, + m->n_ref, + m->header->endian, + m->header->type, + m->header->flags, + m->header->version, + BUS_MESSAGE_SERIAL(m), + BUS_MESSAGE_FIELDS_SIZE(m), + BUS_MESSAGE_BODY_SIZE(m), + strna(m->path), + strna(m->interface), + strna(m->member), + strna(m->destination), + strna(m->sender), + strna(m->signature), + m->reply_serial, + strna(m->error.name), + strna(m->error.message), + yes_no(m->sealed)); + + r = sd_bus_message_rewind(m, true); + if (r < 0) { + log_error("Failed to rewind: %s", strerror(-r)); + return r; + } + + printf("BEGIN_MESSAGE \"%s\" {\n", strempty(m->signature)); + + for(;;) { + _cleanup_free_ char *prefix = NULL; + const char *contents = NULL; + char type; + union { + uint8_t u8; + uint16_t u16; + int16_t s16; + uint32_t u32; + int32_t s32; + uint64_t u64; + int64_t s64; + double d64; + const char *string; + int i; + } basic; + + r = sd_bus_message_peek_type(m, &type, &contents); + if (r < 0) { + log_error("Failed to peek type: %s", strerror(-r)); + return r; + } + if (r == 0) { + if (level <= 1) + break; + + r = sd_bus_message_exit_container(m); + if (r < 0) { + log_error("Failed to exit container: %s", strerror(-r)); + return r; + } + + level--; + + prefix = strrep("\t", level); + if (!prefix) + return log_oom(); + + if (type == SD_BUS_TYPE_ARRAY) + printf("%s} END_ARRAY \n", prefix); + else if (type == SD_BUS_TYPE_VARIANT) + printf("%s} END_VARIANT\n", prefix); + else if (type == SD_BUS_TYPE_STRUCT) + printf("%s} END_STRUCT\n", prefix); + else if (type == SD_BUS_TYPE_DICT_ENTRY) + printf("%s} END_DICT_ENTRY\n", prefix); + + continue; + } + + prefix = strrep("\t", level); + if (!prefix) + return log_oom(); + + if (bus_type_is_container(type) > 0) { + r = sd_bus_message_enter_container(m, type, contents); + if (r < 0) { + log_error("Failed to enter container: %s", strerror(-r)); + return r; + } + + if (type == SD_BUS_TYPE_ARRAY) + printf("%sBEGIN_ARRAY \"%s\" {\n", prefix, contents); + else if (type == SD_BUS_TYPE_VARIANT) + printf("%sBEGIN_VARIANT \"%s\" {\n", prefix, contents); + else if (type == SD_BUS_TYPE_STRUCT) + printf("%sBEGIN_STRUCT \"%s\" {\n", prefix, contents); + else if (type == SD_BUS_TYPE_DICT_ENTRY) + printf("%sBEGIN_DICT_ENTRY \"%s\" {\n", prefix, contents); + + level ++; + + continue; + } + + r = sd_bus_message_read_basic(m, type, &basic); + if (r < 0) { + log_error("Failed to get basic: %s", strerror(-r)); + return r; + } + + switch (type) { + + case SD_BUS_TYPE_BYTE: + printf("%sBYTE: %u\n", prefix, basic.u8); + break; + + case SD_BUS_TYPE_BOOLEAN: + printf("%sBOOLEAN: %s\n", prefix, yes_no(basic.i)); + break; + + case SD_BUS_TYPE_INT16: + printf("%sINT16: %i\n", prefix, basic.s16); + break; + + case SD_BUS_TYPE_UINT16: + printf("%sUINT16: %u\n", prefix, basic.u16); + break; + + case SD_BUS_TYPE_INT32: + printf("%sINT32: %i\n", prefix, basic.s32); + break; + + case SD_BUS_TYPE_UINT32: + printf("%sUINT32: %u\n", prefix, basic.u32); + break; + + case SD_BUS_TYPE_INT64: + printf("%sINT64: %lli\n", prefix, (long long) basic.s64); + break; + + case SD_BUS_TYPE_UINT64: + printf("%sUINT64: %llu\n", prefix, (unsigned long long) basic.u64); + break; + + case SD_BUS_TYPE_DOUBLE: + printf("%sDOUBLE: %g\n", prefix, basic.d64); + break; + + case SD_BUS_TYPE_STRING: + printf("%sSTRING: \"%s\"\n", prefix, basic.string); + break; + + case SD_BUS_TYPE_OBJECT_PATH: + printf("%sOBJECT_PATH: \"%s\"\n", prefix, basic.string); + break; + + case SD_BUS_TYPE_SIGNATURE: + printf("%sSIGNATURE: \"%s\"\n", prefix, basic.string); + break; + + case SD_BUS_TYPE_UNIX_FD: + printf("%sUNIX_FD: %i\n", prefix, basic.i); + break; + + default: + assert_not_reached("Unknown basic type."); + } + } + + printf("} END_MESSAGE\n"); + return 0; } int bus_message_get_blob(sd_bus_message *m, void **buffer, size_t *sz) { diff --git a/src/libsystemd-bus/bus-message.h b/src/libsystemd-bus/bus-message.h index bfd2b12280..89cb3e1efe 100644 --- a/src/libsystemd-bus/bus-message.h +++ b/src/libsystemd-bus/bus-message.h @@ -34,6 +34,7 @@ struct bus_container { unsigned index; uint32_t *array_size; + size_t begin; }; _packed_ struct bus_header { @@ -77,14 +78,18 @@ struct sd_bus_message { void *fields; void *body; + size_t rindex; + uint32_t n_fds; int *fds; - struct bus_container root_container, *sub_containers; + struct bus_container root_container, *containers; unsigned n_containers; struct iovec iovec[4]; unsigned n_iovec; + + char *peeked_signature; }; #if __BYTE_ORDER == __BIG_ENDIAN @@ -93,20 +98,28 @@ struct sd_bus_message { #define BUS_MESSAGE_NEED_BSWAP(m) ((m)->header->endian != SD_BUS_LITTLE_ENDIAN) #endif -static inline uint32_t BUS_MESSAGE_BSWAP(sd_bus_message *m, uint32_t u) { +static inline uint16_t BUS_MESSAGE_BSWAP16(sd_bus_message *m, uint16_t u) { + return BUS_MESSAGE_NEED_BSWAP(m) ? bswap_16(u) : u; +} + +static inline uint32_t BUS_MESSAGE_BSWAP32(sd_bus_message *m, uint32_t u) { return BUS_MESSAGE_NEED_BSWAP(m) ? bswap_32(u) : u; } +static inline uint64_t BUS_MESSAGE_BSWAP64(sd_bus_message *m, uint64_t u) { + return BUS_MESSAGE_NEED_BSWAP(m) ? bswap_64(u) : u; +} + static inline uint32_t BUS_MESSAGE_SERIAL(sd_bus_message *m) { - return BUS_MESSAGE_BSWAP(m, m->header->serial); + return BUS_MESSAGE_BSWAP32(m, m->header->serial); } static inline uint32_t BUS_MESSAGE_BODY_SIZE(sd_bus_message *m) { - return BUS_MESSAGE_BSWAP(m, m->header->body_size); + return BUS_MESSAGE_BSWAP32(m, m->header->body_size); } static inline uint32_t BUS_MESSAGE_FIELDS_SIZE(sd_bus_message *m) { - return BUS_MESSAGE_BSWAP(m, m->header->fields_size); + return BUS_MESSAGE_BSWAP32(m, m->header->fields_size); } static inline void bus_message_unrefp(sd_bus_message **m) { @@ -115,7 +128,7 @@ static inline void bus_message_unrefp(sd_bus_message **m) { #define _cleanup_bus_message_unref_ __attribute__((cleanup(bus_message_unrefp))) -int message_parse(sd_bus_message *m); -int message_seal(sd_bus_message *m, uint64_t serial); -void message_dump(sd_bus_message *m); +int bus_message_parse(sd_bus_message *m); +int bus_message_seal(sd_bus_message *m, uint64_t serial); +int bus_message_dump(sd_bus_message *m); int bus_message_get_blob(sd_bus_message *m, void **buffer, size_t *sz); diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index f7d7644463..3f23da6ff5 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -760,7 +760,7 @@ static int bus_seal_message(sd_bus *b, sd_bus_message *m) { if (m->sealed) return 0; - return message_seal(m, ++b->serial); + return bus_message_seal(m, ++b->serial); } static int message_write(sd_bus *bus, sd_bus_message *m, size_t *idx) { @@ -856,7 +856,7 @@ static int message_make(sd_bus *bus, size_t size, sd_bus_message **m) { bus->rbuffer = b; bus->rbuffer_size -= size; - r = message_parse(t); + r = bus_message_parse(t); if (r < 0) { sd_bus_message_unref(t); return r; diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index 6d53d5afd8..d655f05dc3 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -27,6 +27,13 @@ #include "sd-bus-protocol.h" +/* TODO: + * + * - make unix fd passing work + * - add page donation logic + * - api for appending/reading fixed arrays + */ + typedef struct sd_bus sd_bus; typedef struct sd_bus_message sd_bus_message; @@ -105,9 +112,12 @@ int sd_bus_message_append_basic(sd_bus_message *m, char type, const void *p); int sd_bus_message_open_container(sd_bus_message *m, char type, const char *contents); int sd_bus_message_close_container(sd_bus_message *m); -int sd_bus_message_read_type(sd_bus_message *m, char *type, char *element, size_t *length); -int sd_bus_message_read_basic(sd_bus_message *m, char type, char element, const void **p, size_t *length); int sd_bus_message_read(sd_bus_message *m, const char *types, ...); +int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p); +int sd_bus_message_enter_container(sd_bus_message *m, char type, const char *contents); +int sd_bus_message_exit_container(sd_bus_message *m); +int sd_bus_message_peek_type(sd_bus_message *m, char *type, const char **contents); +int sd_bus_message_rewind(sd_bus_message *m, bool complete); /* Bus management */ diff --git a/src/libsystemd-bus/test-bus-marshal.c b/src/libsystemd-bus/test-bus-marshal.c index 08364ef48b..9138f11172 100644 --- a/src/libsystemd-bus/test-bus-marshal.c +++ b/src/libsystemd-bus/test-bus-marshal.c @@ -37,8 +37,8 @@ int main(int argc, char *argv[]) { _cleanup_bus_message_unref_ sd_bus_message *m = NULL; - int r; - const char *x, *y, *z, *a, *b, *c; + int r, boolean; + const char *x, *y, *z, *a, *b, *c, *d; uint8_t u, v; void *buffer = NULL; size_t sz; @@ -74,10 +74,10 @@ int main(int argc, char *argv[]) { r = sd_bus_message_close_container(m); assert_se(r >= 0); - r = message_seal(m, 4711); + r = bus_message_seal(m, 4711); assert_se(r >= 0); - message_dump(m); + bus_message_dump(m); r = bus_message_get_blob(m, &buffer, &sz); assert_se(r >= 0); @@ -118,12 +118,48 @@ int main(int argc, char *argv[]) { free(buffer); - /* r = sd_bus_message_read(m, "sas", &x, 5, &y, &z, &a, &b, &c); */ - /* assert_se(r >= 0); */ - - /* r = sd_bus_message_read(m, "a{yv}", 2, */ - /* &u, "s", &x, */ - /* &v, "s", &y); */ + assert_se(sd_bus_message_rewind(m, true) >= 0); + + r = sd_bus_message_read(m, "sas", &x, 2, &y, &z); + assert_se(r > 0); + assert_se(streq(x, "a string")); + assert_se(streq(y, "string #1")); + assert_se(streq(z, "string #2")); + + r = sd_bus_message_read(m, "sass", &x, 5, &y, &z, &a, &b, &c, &d); + assert_se(r > 0); + assert_se(streq(x, "foobar")); + assert_se(streq(y, "foo")); + assert_se(streq(z, "bar")); + assert_se(streq(a, "waldo")); + assert_se(streq(b, "piep")); + assert_se(streq(c, "pap")); + assert_se(streq(d, "after")); + + r = sd_bus_message_read(m, "a{yv}", 2, &u, "s", &x, &v, "s", &y); + assert_se(r > 0); + assert_se(u == 3); + assert_se(streq(x, "foo")); + assert_se(v == 5); + assert_se(streq(y, "waldo")); + + r = sd_bus_message_read(m, "ba(ss)", &boolean, 3, &x, &y, &a, &b, &c, &d); + assert_se(r > 0); + assert_se(boolean); + assert_se(streq(x, "aaa")); + assert_se(streq(y, "1")); + assert_se(streq(a, "bbb")); + assert_se(streq(b, "2")); + assert_se(streq(c, "ccc")); + assert_se(streq(d, "3")); + + r = sd_bus_message_read(m, "as", 2, &x, &y); + assert_se(r > 0); + assert_se(streq(x, "foobar")); + assert_se(streq(y, "waldo")); + + r = sd_bus_message_peek_type(m, NULL, NULL); + assert_se(r == 0); return 0; } diff --git a/src/shared/util.c b/src/shared/util.c index f94abbcc02..69f1b00934 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5797,3 +5797,22 @@ char *strextend(char **x, ...) { return r + l; } + +char *strrep(const char *s, unsigned n) { + size_t l; + char *r, *p; + unsigned i; + + assert(s); + + l = strlen(s); + p = r = malloc(l * n + 1); + if (!r) + return NULL; + + for (i = 0; i < n; i++) + p = stpcpy(p, s); + + *p = 0; + return r; +} diff --git a/src/shared/util.h b/src/shared/util.h index 25c00843ec..f75c66bb83 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -608,3 +608,4 @@ static inline void *mempset(void *s, int c, size_t n) { char *hexmem(const void *p, size_t l); char *strextend(char **x, ...); +char *strrep(const char *s, unsigned n); -- cgit v1.2.1 From 80a46c7313b8fc4682881cb3a2ca9e4d743fcb2b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 20 Mar 2013 05:29:20 +0100 Subject: bus: demarshal header fields properly --- src/libsystemd-bus/bus-message.c | 445 ++++++++++++++++++++++++++++++++-- src/libsystemd-bus/bus-message.h | 8 +- src/libsystemd-bus/sd-bus-protocol.h | 11 +- src/libsystemd-bus/sd-bus.c | 16 +- src/libsystemd-bus/test-bus-marshal.c | 7 +- 5 files changed, 448 insertions(+), 39 deletions(-) diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index 3a74835674..a1bae4d1a7 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -30,7 +30,8 @@ #include "bus-type.h" #include "bus-signature.h" -int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored); +static int message_parse_fields(sd_bus_message *m); +static int message_append_basic(sd_bus_message *m, char type, const void *p, const void **stored); static void reset_containers(sd_bus_message *m) { unsigned i; @@ -125,8 +126,6 @@ static void *message_extend_fields(sd_bus_message *m, size_t align, size_t sz) { m->destination = (const char*) m->fields + (m->destination - (const char*) o); if (m->sender) m->sender = (const char*) m->fields + (m->sender - (const char*) o); - if (m->signature) - m->signature = (const char*) m->fields + (m->signature - (const char*) o); if (m->error.name) m->error.name = (const char*) m->fields + (m->error.name - (const char*) o); } @@ -224,21 +223,76 @@ static int message_append_field_uint32(sd_bus_message *m, uint8_t h, uint32_t x) return 0; } +int bus_message_from_malloc(void *buffer, size_t length, sd_bus_message **ret) { + sd_bus_message *m; + struct bus_header *h; + size_t total, fs, bs; + int r; + + assert(buffer || length <= 0); + assert(ret); + + if (length < sizeof(struct bus_header)) + return -EBADMSG; + + h = buffer; + if (h->version != 1) + return -EBADMSG; + + if (h->serial == 0) + return -EBADMSG; + + if (h->type == _SD_BUS_MESSAGE_TYPE_INVALID) + return -EBADMSG; + + if (h->endian == SD_BUS_NATIVE_ENDIAN) { + fs = h->fields_size; + bs = h->body_size; + } else if (h->endian == SD_BUS_REVERSE_ENDIAN) { + fs = bswap_32(h->fields_size); + bs = bswap_32(h->body_size); + } else + return -EBADMSG; + + total = sizeof(struct bus_header) + ALIGN_TO(fs, 8) + bs; + if (length != total) + return -EBADMSG; + + m = new0(sd_bus_message, 1); + if (!m) + return -ENOMEM; + + m->n_ref = 1; + m->header = h; + m->free_header = true; + m->fields = (uint8_t*) buffer + sizeof(struct bus_header); + m->body = (uint8_t*) buffer + sizeof(struct bus_header) + ALIGN_TO(fs, 8); + m->sealed = true; + + m->n_iovec = 1; + m->iovec[0].iov_base = buffer; + m->iovec[0].iov_len = length; + + r = message_parse_fields(m); + if (r < 0) { + message_free(m); + return r; + } + + *ret = m; + return 0; +} + static sd_bus_message *message_new(sd_bus *bus, uint8_t type) { sd_bus_message *m; - m = malloc0(ALIGN(sizeof(struct sd_bus_message)) + sizeof(struct bus_header)); + m = malloc0(ALIGN(sizeof(sd_bus_message)) + sizeof(struct bus_header)); if (!m) return NULL; m->n_ref = 1; m->header = (struct bus_header*) ((uint8_t*) m + ALIGN(sizeof(struct sd_bus_message))); - -#if __BYTE_ORDER == __BIG_ENDIAN - m->header->endian = SD_BUS_BIG_ENDIAN; -#else - m->header->endian = SD_BUS_LITTLE_ENDIAN; -#endif + m->header->endian = SD_BUS_NATIVE_ENDIAN; m->header->type = type; m->header->version = bus ? bus->message_version : 1; @@ -1491,7 +1545,7 @@ static int bus_message_enter_array( return r; if (BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q) > 67108864) - return -E2BIG; + return -EBADMSG; r = message_peek_body(m, &rindex, alignment, 0, NULL); if (r < 0) @@ -1752,6 +1806,8 @@ int sd_bus_message_peek_type(sd_bus_message *m, char *type, const char **content if (r < 0) return r; + assert(l >= 1); + sig = strndup(c->signature + c->index + 1, l); if (!sig) return -ENOMEM; @@ -2011,15 +2067,364 @@ int sd_bus_message_read(sd_bus_message *m, const char *types, ...) { return r; } -int bus_message_parse(sd_bus_message *m) { +static int message_peek_fields( + sd_bus_message *m, + size_t *rindex, + size_t align, + size_t nbytes, + void **ret) { + + assert(m); + assert(rindex); + assert(align > 0); + + return buffer_peek(m->fields, BUS_MESSAGE_FIELDS_SIZE(m), rindex, align, nbytes, ret); +} + +static int message_peek_field_string( + sd_bus_message *m, + size_t *ri, + const char **ret) { + + size_t l; + int r; + void *q; + assert(m); + assert(ri); + + r = message_peek_fields(m, ri, 4, 4, &q); + if (r < 0) + return r; + + l = BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q); + r = message_peek_fields(m, ri, 1, l+1, &q); + if (r < 0) + return r; - if (m->header->version != 1) - return -EIO; + if (!validate_string(q, l)) + return -EBADMSG; + + if (ret) + *ret = q; + + return 0; +} + +static int message_peek_field_signature( + sd_bus_message *m, + size_t *ri, + const char **ret) { + + size_t l; + int r; + void *q; + + assert(m); + assert(ri); + + r = message_peek_fields(m, ri, 1, 1, &q); + if (r < 0) + return r; + + l = *(uint8_t*) q; + r = message_peek_fields(m, ri, 1, l+1, &q); + if (r < 0) + return r; + + if (!validate_signature(q, l)) + return -EBADMSG; + + if (ret) + *ret = q; + + return 0; +} + +static int message_peek_field_uint32( + sd_bus_message *m, + size_t *ri, + uint32_t *ret) { + + int r; + void *q; + + assert(m); + assert(ri); + + r = message_peek_fields(m, ri, 4, 4, &q); + if (r < 0) + return r; + + if (ret) + *ret = BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q); + + return 0; +} + +static int message_skip_fields( + sd_bus_message *m, + size_t *ri, + uint32_t array_size, + const char **signature) { + + size_t original_index; + int r; + + assert(m); + assert(ri); + assert(signature); + + original_index = *ri; + + for (;;) { + char t; + void *q; + size_t l; + + if (array_size != (uint32_t) -1 && + array_size <= *ri - original_index) + return 0; + + t = **signature; + if (!t) + return 0; + + if (t == SD_BUS_TYPE_STRING || + t == SD_BUS_TYPE_OBJECT_PATH) { + + r = message_peek_field_string(m, ri, NULL); + if (r < 0) + return r; + + (*signature)++; + + } else if (t == SD_BUS_TYPE_SIGNATURE) { + + r = message_peek_field_signature(m, ri, NULL); + if (r < 0) + return r; + + (*signature)++; + + } else if (bus_type_is_basic(t)) { + size_t align, k; + + align = bus_type_get_alignment(align); + k = bus_type_get_size(align); + + r = message_peek_fields(m, ri, align, k, NULL); + if (r < 0) + return r; - if (m->header->endian != SD_BUS_BIG_ENDIAN && - m->header->endian != SD_BUS_LITTLE_ENDIAN) - return -EIO; + (*signature)++; + + } else if (t == SD_BUS_TYPE_ARRAY) { + + r = signature_element_length(*signature+1, &l); + if (r < 0) + return r; + + assert(l >= 1); + { + char sig[l-1], *s; + size_t nas; + int alignment; + + strncpy(sig, *signature + 1, l-1); + s = sig; + + alignment = bus_type_get_alignment(sig[0]); + if (alignment < 0) + return alignment; + + r = message_peek_fields(m, ri, 4, 4, &q); + if (r < 0) + return r; + + nas = BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q); + if (nas > 67108864) + return -EBADMSG; + + r = message_peek_fields(m, ri, alignment, 0, NULL); + if (r < 0) + return r; + + r = message_skip_fields(m, ri, nas, (const char**) &s); + if (r < 0) + return r; + } + + (*signature) += 1 + l; + + } else if (t == SD_BUS_TYPE_VARIANT) { + const char *s; + + r = message_peek_field_signature(m, ri, &s); + if (r < 0) + return r; + + r = message_skip_fields(m, ri, (uint32_t) -1, (const char**) &s); + if (r < 0) + return r; + + (*signature)++; + + } else if (t == SD_BUS_TYPE_STRUCT || + t == SD_BUS_TYPE_DICT_ENTRY) { + + r = signature_element_length(*signature, &l); + if (r < 0) + return r; + + assert(l >= 2); + { + char sig[l-1], *s; + strncpy(sig, *signature + 1, l-1); + s = sig; + + r = message_skip_fields(m, ri, (uint32_t) -1, (const char**) &s); + if (r < 0) + return r; + } + + *signature += l; + } else + return -EINVAL; + } +} + +static int message_parse_fields(sd_bus_message *m) { + size_t ri; + int r; + + assert(m); + + for (ri = 0; ri < BUS_MESSAGE_FIELDS_SIZE(m); ) { + const char *signature; + uint8_t *header; + + r = message_peek_fields(m, &ri, 8, 1, (void**) &header); + if (r < 0) + return r; + + r = message_peek_field_signature(m, &ri, &signature); + if (r < 0) + return r; + + switch (*header) { + case _SD_BUS_MESSAGE_HEADER_INVALID: + return -EBADMSG; + + case SD_BUS_MESSAGE_HEADER_PATH: + if (!streq(signature, "o")) + return -EBADMSG; + + r = message_peek_field_string(m, &ri, &m->path); + break; + + case SD_BUS_MESSAGE_HEADER_INTERFACE: + if (!streq(signature, "s")) + return -EBADMSG; + + r = message_peek_field_string(m, &ri, &m->interface); + break; + + case SD_BUS_MESSAGE_HEADER_MEMBER: + if (!streq(signature, "s")) + return -EBADMSG; + + r = message_peek_field_string(m, &ri, &m->member); + break; + + case SD_BUS_MESSAGE_HEADER_ERROR_NAME: + if (!streq(signature, "s")) + return -EBADMSG; + + r = message_peek_field_string(m, &ri, &m->error.name); + break; + + case SD_BUS_MESSAGE_HEADER_DESTINATION: + if (!streq(signature, "s")) + return -EBADMSG; + + r = message_peek_field_string(m, &ri, &m->destination); + break; + + case SD_BUS_MESSAGE_HEADER_SENDER: + if (!streq(signature, "s")) + return -EBADMSG; + + r = message_peek_field_string(m, &ri, &m->sender); + break; + + + case SD_BUS_MESSAGE_HEADER_SIGNATURE: { + const char *s; + char *c; + + if (!streq(signature, "g")) + return -EBADMSG; + + r = message_peek_field_signature(m, &ri, &s); + if (r < 0) + return r; + + c = strdup(s); + if (!c) + return -ENOMEM; + + free(m->root_container.signature); + m->root_container.signature = c; + + r = 0; + break; + } + + case SD_BUS_MESSAGE_HEADER_REPLY_SERIAL: + if (!streq(signature, "u")) + return -EBADMSG; + + r = message_peek_field_uint32(m, &ri, &m->reply_serial); + break; + + default: + r = message_skip_fields(m, &ri, (uint32_t) -1, (const char **) &signature); + } + + if (r < 0) + return r; + } + + if (isempty(m->root_container.signature) != (BUS_MESSAGE_BODY_SIZE(m) == 0)) + return -EBADMSG; + + switch (m->header->type) { + + case SD_BUS_MESSAGE_TYPE_SIGNAL: + if (!m->path || !m->interface || !m->member) + return -EBADMSG; + break; + + case SD_BUS_MESSAGE_TYPE_METHOD_CALL: + + if (!m->path || !m->member) + return -EBADMSG; + + break; + + case SD_BUS_MESSAGE_TYPE_METHOD_RETURN: + + if (m->reply_serial == 0) + return -EBADMSG; + break; + + case SD_BUS_MESSAGE_TYPE_METHOD_ERROR: + + if (m->reply_serial == 0 || !m->error.name) + return -EBADMSG; + break; + } return 0; } @@ -2068,7 +2473,7 @@ int bus_message_seal(sd_bus_message *m, uint64_t serial) { /* If there's a non-trivial signature set, then add it in here */ if (!isempty(m->root_container.signature)) { - r = message_append_field_signature(m, SD_BUS_MESSAGE_HEADER_SIGNATURE, m->root_container.signature, &m->signature); + r = message_append_field_signature(m, SD_BUS_MESSAGE_HEADER_SIGNATURE, m->root_container.signature, NULL); if (r < 0) return r; } @@ -2139,7 +2544,7 @@ int bus_message_dump(sd_bus_message *m) { strna(m->member), strna(m->destination), strna(m->sender), - strna(m->signature), + strna(m->root_container.signature), m->reply_serial, strna(m->error.name), strna(m->error.message), @@ -2151,7 +2556,7 @@ int bus_message_dump(sd_bus_message *m) { return r; } - printf("BEGIN_MESSAGE \"%s\" {\n", strempty(m->signature)); + printf("BEGIN_MESSAGE \"%s\" {\n", strempty(m->root_container.signature)); for(;;) { _cleanup_free_ char *prefix = NULL; diff --git a/src/libsystemd-bus/bus-message.h b/src/libsystemd-bus/bus-message.h index 89cb3e1efe..3035efc8c2 100644 --- a/src/libsystemd-bus/bus-message.h +++ b/src/libsystemd-bus/bus-message.h @@ -57,7 +57,6 @@ struct sd_bus_message { const char *member; const char *destination; const char *sender; - const char *signature; sd_bus_error error; @@ -92,11 +91,7 @@ struct sd_bus_message { char *peeked_signature; }; -#if __BYTE_ORDER == __BIG_ENDIAN -#define BUS_MESSAGE_NEED_BSWAP(m) ((m)->header->endian != SD_BUS_BIG_ENDIAN) -#else -#define BUS_MESSAGE_NEED_BSWAP(m) ((m)->header->endian != SD_BUS_LITTLE_ENDIAN) -#endif +#define BUS_MESSAGE_NEED_BSWAP(m) ((m)->header->endian != SD_BUS_NATIVE_ENDIAN) static inline uint16_t BUS_MESSAGE_BSWAP16(sd_bus_message *m, uint16_t u) { return BUS_MESSAGE_NEED_BSWAP(m) ? bswap_16(u) : u; @@ -132,3 +127,4 @@ int bus_message_parse(sd_bus_message *m); int bus_message_seal(sd_bus_message *m, uint64_t serial); int bus_message_dump(sd_bus_message *m); int bus_message_get_blob(sd_bus_message *m, void **buffer, size_t *sz); +int bus_message_from_malloc(void *buffer, size_t length, sd_bus_message **ret); diff --git a/src/libsystemd-bus/sd-bus-protocol.h b/src/libsystemd-bus/sd-bus-protocol.h index 9d7615ff09..942422f008 100644 --- a/src/libsystemd-bus/sd-bus-protocol.h +++ b/src/libsystemd-bus/sd-bus-protocol.h @@ -22,6 +22,8 @@ along with systemd; If not, see . ***/ +#include + /* Types of message */ #define SD_BUS_DEFAULT_TIMEOUT ((usec_t) (25 * USEC_PER_SEC)) @@ -67,7 +69,14 @@ enum { enum { _SD_BUS_INVALID_ENDIAN = 0, SD_BUS_LITTLE_ENDIAN = 'l', - SD_BUS_BIG_ENDIAN = 'B' + SD_BUS_BIG_ENDIAN = 'B', +#if __BYTE_ORDER == __BIG_ENDIAN + SD_BUS_NATIVE_ENDIAN = SD_BUS_BIG_ENDIAN, + SD_BUS_REVERSE_ENDIAN = SD_BUS_LITTLE_ENDIAN +#else + SD_BUS_NATIVE_ENDIAN = SD_BUS_LITTLE_ENDIAN, + SD_BUS_REVERSE_ENDIAN = SD_BUS_BIG_ENDIAN +#endif }; /* Flags */ diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 3f23da6ff5..70288ee131 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -833,10 +833,6 @@ static int message_make(sd_bus *bus, size_t size, sd_bus_message **m) { assert(m); assert(bus->rbuffer_size >= size); - t = new0(sd_bus_message, 1); - if (!t) - return -ENOMEM; - if (bus->rbuffer_size > size) { b = memdup((const uint8_t*) bus->rbuffer + size, bus->rbuffer_size - size); if (!b) { @@ -845,13 +841,11 @@ static int message_make(sd_bus *bus, size_t size, sd_bus_message **m) { } } - t->n_ref = 1; - - t->header = bus->rbuffer; - t->free_header = true; - - t->fields = (uint8_t*) bus->rbuffer + sizeof(struct bus_header); - t->body = (uint8_t*) bus->rbuffer + sizeof(struct bus_header) + ALIGN_TO(BUS_MESSAGE_BODY_SIZE(t), 8); + r = bus_message_from_malloc(bus->rbuffer, size, &t); + if (r < 0) { + free(b); + return r; + } bus->rbuffer = b; bus->rbuffer_size -= size; diff --git a/src/libsystemd-bus/test-bus-marshal.c b/src/libsystemd-bus/test-bus-marshal.c index 9138f11172..15c472cca0 100644 --- a/src/libsystemd-bus/test-bus-marshal.c +++ b/src/libsystemd-bus/test-bus-marshal.c @@ -116,7 +116,12 @@ int main(int argc, char *argv[]) { dbus_message_unref(w); } - free(buffer); + m = sd_bus_message_unref(m); + + r = bus_message_from_malloc(buffer, sz, &m); + assert_se(r >= 0); + + bus_message_dump(m); assert_se(sd_bus_message_rewind(m, true) >= 0); -- cgit v1.2.1 From fbfa72b0a1276366d50dce223c06efe9db9d6585 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 20 Mar 2013 13:10:12 +0100 Subject: bus: introduce bus_error_is_dirty() independently of sd_bus_error_is_set() --- src/libsystemd-bus/bus-error.c | 16 ++++++++++++---- src/libsystemd-bus/bus-error.h | 2 ++ src/libsystemd-bus/bus-message.c | 4 +--- src/libsystemd-bus/sd-bus.c | 2 +- src/libsystemd-bus/sd-bus.h | 4 ++-- 5 files changed, 18 insertions(+), 10 deletions(-) diff --git a/src/libsystemd-bus/bus-error.c b/src/libsystemd-bus/bus-error.c index 0832022ee9..015fae70ad 100644 --- a/src/libsystemd-bus/bus-error.c +++ b/src/libsystemd-bus/bus-error.c @@ -31,6 +31,13 @@ #include "sd-bus.h" #include "bus-error.h" +bool bus_error_is_dirty(sd_bus_error *e) { + if (!e) + return 0; + + return e->name || e->message || e->need_free; +} + void sd_bus_error_free(sd_bus_error *e) { if (!e) return; @@ -51,7 +58,7 @@ int sd_bus_error_set(sd_bus_error *e, const char *name, const char *format, ...) if (!e) return 0; - if (sd_bus_error_is_set(e)) + if (bus_error_is_dirty(e)) return -EINVAL; if (!name) return -EINVAL; @@ -81,7 +88,7 @@ int sd_bus_error_set(sd_bus_error *e, const char *name, const char *format, ...) int sd_bus_error_copy(sd_bus_error *dest, const sd_bus_error *e) { if (!dest) return 0; - if (sd_bus_error_is_set(dest)) + if (bus_error_is_dirty(dest)) return -EINVAL; if (!sd_bus_error_is_set(e)) return 0; @@ -113,18 +120,19 @@ int sd_bus_error_copy(sd_bus_error *dest, const sd_bus_error *e) { void sd_bus_error_set_const(sd_bus_error *e, const char *name, const char *message) { if (!e) return; - if (sd_bus_error_is_set(e)) + if (bus_error_is_dirty(e)) return; e->name = name; e->message = message; + e->need_free = false; } int sd_bus_error_is_set(const sd_bus_error *e) { if (!e) return 0; - return e->name || e->message || e->need_free; + return !!e->name; } int sd_bus_error_has_name(const sd_bus_error *e, const char *name) { diff --git a/src/libsystemd-bus/bus-error.h b/src/libsystemd-bus/bus-error.h index f49e6c7398..c6e072eab4 100644 --- a/src/libsystemd-bus/bus-error.h +++ b/src/libsystemd-bus/bus-error.h @@ -25,3 +25,5 @@ int bus_error_to_errno(const sd_bus_error *e); int bus_error_from_errno(sd_bus_error *e, int error); + +bool bus_error_is_dirty(sd_bus_error *e); diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index a1bae4d1a7..5f3dbdb75d 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -447,9 +447,7 @@ int sd_bus_message_new_method_error( sd_bus_message *t; int r; - if (!e) - return -EINVAL; - if (!e->name) + if (!sd_bus_error_is_set(e)) return -EINVAL; if (!m) return -EINVAL; diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 70288ee131..c5cbb5682d 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -1131,7 +1131,7 @@ int sd_bus_send_with_reply_and_block( return -EINVAL; if (!m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) return -EINVAL; - if (sd_bus_error_is_set(error)) + if (sd_bus_error_is_dirty(error)) return -EINVAL; r = sd_bus_send(bus, m, &serial); diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index d655f05dc3..d892562b5f 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -131,9 +131,9 @@ int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid); int sd_bus_add_match(sd_bus *bus, const char *match); int sd_bus_remove_match(sd_bus *bus, const char *match); -/* Error objects */ +/* Error structures */ -#define SD_BUS_ERROR_INIT (NULL, NULL, false) +#define SD_BUS_ERROR_INIT (NULL, NULL, 0) void sd_bus_error_free(sd_bus_error *e); int sd_bus_error_set(sd_bus_error *e, const char *name, const char *format, ...); -- cgit v1.2.1 From 89ffcd2ad5bf87866314e96c4179ba622851cd6e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 20 Mar 2013 22:56:25 +0100 Subject: bus: hook up client with socket communication --- .gitignore | 2 + Makefile.am | 28 +++- src/libsystemd-bus/bus-control.c | 36 +++-- src/libsystemd-bus/bus-error.c | 30 ++-- src/libsystemd-bus/bus-internal.h | 11 +- src/libsystemd-bus/bus-message.c | 42 +++++- src/libsystemd-bus/bus-message.h | 2 +- src/libsystemd-bus/busctl.c | 66 +++++++-- src/libsystemd-bus/sd-bus.c | 287 ++++++++++++++++++++++++------------- src/libsystemd-bus/sd-bus.h | 11 +- src/libsystemd-bus/test-bus-chat.c | 242 +++++++++++++++++++++++++++++++ 11 files changed, 610 insertions(+), 147 deletions(-) create mode 100644 src/libsystemd-bus/test-bus-chat.c diff --git a/.gitignore b/.gitignore index 917b0663bf..2d95f149c0 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /ata_id /bootctl /build-aux +/busctl /cdrom_id /collect /gtk-doc.make @@ -82,6 +83,7 @@ /tags /test-bus-marshal /test-bus-signature +/test-bus-chat /test-calendarspec /test-catalog /test-cgroup diff --git a/Makefile.am b/Makefile.am index c94c192ce3..d8e9b16be0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1654,12 +1654,19 @@ libsystemd_bus_la_SOURCES = \ src/libsystemd-bus/bus-type.c \ src/libsystemd-bus/bus-type.h +libsystemd_bus_la_LIBADD = \ + libsystemd-id128-internal.la + noinst_LTLIBRARIES += \ libsystemd-bus.la noinst_tests += \ test-bus-marshal \ - test-bus-signature + test-bus-signature \ + test-bus-chat + +noinst_PROGRAMS += \ + busctl test_bus_marshal_SOURCES = \ src/libsystemd-bus/test-bus-marshal.c @@ -1682,6 +1689,25 @@ test_bus_signature_LDADD = \ libsystemd-shared.la \ libsystemd-bus.la +test_bus_chat_SOURCES = \ + src/libsystemd-bus/test-bus-chat.c + +test_bus_chat_CFLAGS = \ + $(AM_CFLAGS) \ + -pthread + +test_bus_chat_LDADD = \ + libsystemd-shared.la \ + libsystemd-bus.la \ + libsystemd-id128-internal.la + +busctl_SOURCES = \ + src/libsystemd-bus/busctl.c + +busctl_LDADD = \ + libsystemd-shared.la \ + libsystemd-bus.la + # ------------------------------------------------------------------------------ if ENABLE_GTK_DOC SUBDIRS += \ diff --git a/src/libsystemd-bus/bus-control.c b/src/libsystemd-bus/bus-control.c index e4cc251a4b..50e1a2c00a 100644 --- a/src/libsystemd-bus/bus-control.c +++ b/src/libsystemd-bus/bus-control.c @@ -107,7 +107,6 @@ int sd_bus_release_name(sd_bus *bus, const char *name) { int sd_bus_list_names(sd_bus *bus, char ***l) { _cleanup_bus_message_unref_ sd_bus_message *m1 = NULL, *reply1 = NULL, *m2 = NULL, *reply2 = NULL; - _cleanup_strv_free_ char **a = NULL, **b = NULL; char **x = NULL; int r; @@ -144,17 +143,17 @@ int sd_bus_list_names(sd_bus *bus, char ***l) { if (r < 0) return r; - r = sd_bus_message_read(reply1, "as", &a); - if (r < 0) + r = bus_message_read_strv_extend(reply1, &x); + if (r < 0) { + strv_free(x); return r; + } - r = sd_bus_message_read(reply2, "as", &b); - if (r < 0) + r = bus_message_read_strv_extend(reply2, &x); + if (r < 0) { + strv_free(x); return r; - - x = strv_merge(a, b); - if (!x) - return -ENOMEM; + } *l = strv_uniq(x); return 0; @@ -162,6 +161,7 @@ int sd_bus_list_names(sd_bus *bus, char ***l) { int sd_bus_get_owner(sd_bus *bus, const char *name, char **owner) { _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; + const char *found; int r; if (!bus) @@ -187,7 +187,21 @@ int sd_bus_get_owner(sd_bus *bus, const char *name, char **owner) { if (r < 0) return r; - return sd_bus_message_read(reply, "s", owner); + r = sd_bus_message_read(reply, "s", &found); + if (r < 0) + return r; + + if (owner) { + char *t; + + t = strdup(found); + if (!t) + return -ENOMEM; + + *owner = t; + } + + return 0; } int sd_bus_get_owner_uid(sd_bus *bus, const char *name, uid_t *uid) { @@ -245,7 +259,7 @@ int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid) { "org.freedesktop.DBus", "/", "org.freedesktop.DBus", - "GetConnectionUnixUser", + "GetConnectionUnixProcessID", &m); if (r < 0) return r; diff --git a/src/libsystemd-bus/bus-error.c b/src/libsystemd-bus/bus-error.c index 015fae70ad..f86da624fd 100644 --- a/src/libsystemd-bus/bus-error.c +++ b/src/libsystemd-bus/bus-error.c @@ -86,6 +86,8 @@ int sd_bus_error_set(sd_bus_error *e, const char *name, const char *format, ...) } int sd_bus_error_copy(sd_bus_error *dest, const sd_bus_error *e) { + char *x, *y = NULL; + if (!dest) return 0; if (bus_error_is_dirty(dest)) @@ -93,27 +95,21 @@ int sd_bus_error_copy(sd_bus_error *dest, const sd_bus_error *e) { if (!sd_bus_error_is_set(e)) return 0; - if (e->need_free) { - char *x, *y = NULL; + x = strdup(e->name); + if (!x) + return -ENOMEM; - x = strdup(e->name); - if (!x) + if (e->message) { + y = strdup(e->message); + if (!y) { + free(x); return -ENOMEM; - - if (e->message) { - y = strdup(e->message); - if (!y) { - free(x); - return -ENOMEM; - } } + } - dest->name = x; - dest->message = y; - dest->need_free = true; - } else - *dest = *e; - + dest->name = x; + dest->message = y; + dest->need_free = true; return 0; } diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index d8cdc48ce0..9a12d661e1 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -50,8 +50,7 @@ enum bus_state { BUS_OPENING, BUS_AUTHENTICATING, BUS_HELLO, - BUS_RUNNING, - BUS_CLOSED + BUS_RUNNING }; struct sd_bus { @@ -60,7 +59,7 @@ struct sd_bus { int fd; int message_version; bool can_fds:1; - bool send_hello:1; + bool sent_hello:1; void *rbuffer; size_t rbuffer_size; @@ -99,3 +98,9 @@ struct sd_bus { size_t auth_size; char *auth_uid; }; + +static inline void bus_unrefp(sd_bus **b) { + sd_bus_unref(*b); +} + +#define _cleanup_bus_unref_ __attribute__((cleanup(bus_unrefp))) diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index 5f3dbdb75d..c385ef5ed0 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -23,6 +23,7 @@ #include "util.h" #include "utf8.h" +#include "strv.h" #include "sd-bus.h" #include "bus-message.h" @@ -322,6 +323,8 @@ int sd_bus_message_new_signal( if (!t) return -ENOMEM; + t->header->flags |= SD_BUS_MESSAGE_NO_REPLY_EXPECTED; + r = message_append_field_string(t, SD_BUS_MESSAGE_HEADER_PATH, SD_BUS_TYPE_OBJECT_PATH, path, &t->path); if (r < 0) goto fail; @@ -409,6 +412,7 @@ static int message_new_reply( if (!t) return -ENOMEM; + t->header->flags |= SD_BUS_MESSAGE_NO_REPLY_EXPECTED; t->reply_serial = BUS_MESSAGE_SERIAL(call); r = message_append_field_uint32(t, SD_BUS_MESSAGE_HEADER_REPLY_SERIAL, t->reply_serial); @@ -424,6 +428,7 @@ static int message_new_reply( t->dont_send = !!(call->header->flags & SD_BUS_MESSAGE_NO_REPLY_EXPECTED); *m = t; + return 0; fail: message_free(t); @@ -1891,7 +1896,7 @@ eof: return 0; } -int sd_bus_message_rewind(sd_bus_message *m, bool complete) { +int sd_bus_message_rewind(sd_bus_message *m, int complete) { struct bus_container *c; if (!m) @@ -2424,6 +2429,10 @@ static int message_parse_fields(sd_bus_message *m) { break; } + /* Try to read the error message, but if we can't it's a non-issue */ + if (m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_ERROR) + sd_bus_message_read(m, "s", &m->error.message); + return 0; } @@ -2724,3 +2733,34 @@ int bus_message_get_blob(sd_bus_message *m, void **buffer, size_t *sz) { return 0; } + +int bus_message_read_strv_extend(sd_bus_message *m, char ***l) { + int r; + + assert(m); + assert(l); + + r = sd_bus_message_enter_container(m, 'a', "s"); + if (r < 0) + return r; + + for (;;) { + const char *s; + + r = sd_bus_message_read_basic(m, 's', &s); + if (r < 0) + return r; + if (r == 0) + break; + + r = strv_extend(l, s); + if (r < 0) + return r; + } + + r = sd_bus_message_exit_container(m); + if (r < 0) + return r; + + return 0; +} diff --git a/src/libsystemd-bus/bus-message.h b/src/libsystemd-bus/bus-message.h index 3035efc8c2..0184d18dd9 100644 --- a/src/libsystemd-bus/bus-message.h +++ b/src/libsystemd-bus/bus-message.h @@ -123,8 +123,8 @@ static inline void bus_message_unrefp(sd_bus_message **m) { #define _cleanup_bus_message_unref_ __attribute__((cleanup(bus_message_unrefp))) -int bus_message_parse(sd_bus_message *m); int bus_message_seal(sd_bus_message *m, uint64_t serial); int bus_message_dump(sd_bus_message *m); int bus_message_get_blob(sd_bus_message *m, void **buffer, size_t *sz); int bus_message_from_malloc(void *buffer, size_t length, sd_bus_message **ret); +int bus_message_read_strv_extend(sd_bus_message *m, char ***l); diff --git a/src/libsystemd-bus/busctl.c b/src/libsystemd-bus/busctl.c index 88446fcc7c..7348894c5b 100644 --- a/src/libsystemd-bus/busctl.c +++ b/src/libsystemd-bus/busctl.c @@ -19,15 +19,22 @@ along with systemd; If not, see . ***/ +#include "strv.h" +#include "util.h" +#include "log.h" + #include "sd-bus.h" +#include "bus-message.h" +#include "bus-internal.h" int main(int argc, char *argv[]) { _cleanup_bus_unref_ sd_bus *bus = NULL; _cleanup_strv_free_ char **l = NULL; char **i; int r; + size_t max_i = 0; - r = bus_open_system(&bus); + r = sd_bus_open_user(&bus); if (r < 0) { log_error("Failed to connect to bus: %s", strerror(-r)); goto fail; @@ -39,26 +46,57 @@ int main(int argc, char *argv[]) { goto fail; } + strv_sort(l); + + STRV_FOREACH(i, l) + max_i = MAX(max_i, strlen(*i)); + + printf("%-*s %*s %-*s %-*s CONNECTION\n", + (int) max_i, "NAME", 10, "PID", 15, "PROCESS", 16, "USER"); + STRV_FOREACH(i, l) { _cleanup_free_ char *owner = NULL; - pid_t pid = 0; + pid_t pid; uid_t uid; - bool uid_valid; - r = sd_bus_get_owner(bus, *i, &owner); - if (r == -ENXIO) - continue; + /* if ((*i)[0] == ':') */ + /* continue; */ + + printf("%-*s", (int) max_i, *i); - r = sd_get_owner_pid(bus, *i, &pid); - if (r == -ENXIO) - continue; + r = sd_bus_get_owner_pid(bus, *i, &pid); + if (r >= 0) { + _cleanup_free_ char *comm = NULL; - r = sd_get_owner_uid(bus, *i, &pid); - if (r == -ENXIO) - continue; - uid_valid = r >= 0; + printf(" %10lu", (unsigned long) pid); - printf("%s (%s) %llu %llu\n", *i, owner, (unsigned long long) pid, (unsigned long long) uid); + get_process_comm(pid, &comm); + printf(" %-15s", strna(comm)); + } else + printf(" - - "); + + r = sd_bus_get_owner_uid(bus, *i, &uid); + if (r >= 0) { + _cleanup_free_ char *u = NULL; + + u = uid_to_name(uid); + if (!u) { + log_oom(); + goto fail; + } + + if (strlen(u) > 16) + u[16] = 0; + + printf(" %-16s", u); + } else + printf(" - "); + + r = sd_bus_get_owner(bus, *i, &owner); + if (r >= 0) + printf(" %s\n", owner); + else + printf(" -\n"); } r = 0; diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index c5cbb5682d..f27d47cdea 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -39,6 +39,7 @@ static void bus_free(sd_bus *b) { struct filter_callback *f; + unsigned i; assert(b); @@ -46,9 +47,17 @@ static void bus_free(sd_bus *b) { close_nointr_nofail(b->fd); free(b->rbuffer); + free(b->unique_name); + free(b->auth_uid); + free(b->address); + + for (i = 0; i < b->rqueue_size; i++) + sd_bus_message_unref(b->rqueue[i]); free(b->rqueue); + + for (i = 0; i < b->wqueue_size; i++) + sd_bus_message_unref(b->wqueue[i]); free(b->wqueue); - free(b->unique_name); hashmap_free_free(b->reply_callbacks); @@ -122,24 +131,19 @@ static int bus_send_hello(sd_bus *bus) { if (r < 0) return r; - return 0; + bus->sent_hello = true; + return r; } static int bus_start_running(sd_bus *bus) { - int r; - assert(bus); - if (bus->send_hello) { + if (bus->sent_hello) { bus->state = BUS_HELLO; - - r = bus_send_hello(bus); - if (r < 0) - return r; + return 0; } bus->state = BUS_RUNNING; - return 0; } @@ -154,7 +158,7 @@ static int parse_address_key(const char **p, const char *key, char **value) { assert(value); l = strlen(key); - if (!strncmp(*p, key, l) != 0) + if (strncmp(*p, key, l) != 0) return 0; if ((*p)[l] != '=') @@ -164,7 +168,7 @@ static int parse_address_key(const char **p, const char *key, char **value) { return -EINVAL; a = *p + l + 1; - while (*a != ';' && *a != 0) { + while (*a != ',' && *a != 0) { char c, *t; if (*a == '%') { @@ -182,12 +186,14 @@ static int parse_address_key(const char **p, const char *key, char **value) { return y; } - a += 3; c = (char) ((x << 4) | y); - } else + a += 3; + } else { c = *a; + a++; + } - t = realloc(r, n + 1); + t = realloc(r, n + 2); if (!t) { free(r); return -ENOMEM; @@ -197,6 +203,16 @@ static int parse_address_key(const char **p, const char *key, char **value) { r[n++] = c; } + if (!r) { + r = strdup(""); + if (!r) + return -ENOMEM; + } else + r[n] = 0; + + if (*a == ',') + a++; + *p = a; *value = r; return 1; @@ -206,7 +222,10 @@ static void skip_address_key(const char **p) { assert(p); assert(*p); - *p += strcspn(*p, ";"); + *p += strcspn(*p, ","); + + if (**p == ',') + (*p) ++; } static int bus_parse_next_address(sd_bus *b) { @@ -231,7 +250,7 @@ static int bus_parse_next_address(sd_bus *b) { _cleanup_free_ char *path = NULL, *abstract = NULL; p = a + 5; - while (*p != 0 && *p != ';') { + while (*p != 0) { r = parse_address_key(&p, "guid", &guid); if (r < 0) return r; @@ -272,13 +291,13 @@ static int bus_parse_next_address(sd_bus *b) { } else if (abstract) { size_t l; - l = strlen(path); + l = strlen(abstract); if (l > sizeof(b->sockaddr.un.sun_path) - 1) return -E2BIG; b->sockaddr.un.sun_family = AF_UNIX; b->sockaddr.un.sun_path[0] = 0; - strncpy(b->sockaddr.un.sun_path+1, path, sizeof(b->sockaddr.un.sun_path)-1); + strncpy(b->sockaddr.un.sun_path+1, abstract, sizeof(b->sockaddr.un.sun_path)-1); b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + 1 + l; } @@ -287,7 +306,7 @@ static int bus_parse_next_address(sd_bus *b) { struct addrinfo hints, *result; p = a + 4; - while (*p != 0 && *p != ';') { + while (*p != 0) { r = parse_address_key(&p, "guid", &guid); if (r < 0) return r; @@ -409,7 +428,7 @@ static int bus_auth_verify(sd_bus *b) { if (!e) return 0; - f = memmem(e, b->rbuffer_size - (e - (char*) b->rbuffer), "\r\n", 2); + f = memmem(e + 2, b->rbuffer_size - (e - (char*) b->rbuffer) - 2, "\r\n", 2); if (!f) return 0; @@ -423,7 +442,7 @@ static int bus_auth_verify(sd_bus *b) { int x, y; x = unhexchar(((char*) b->rbuffer)[3 + i]); - y = unhexchar(((char*) b->rbuffer)[3 + i + 2]); + y = unhexchar(((char*) b->rbuffer)[3 + i + 1]); if (x < 0 || y < 0) return -EINVAL; @@ -446,6 +465,8 @@ static int bus_auth_verify(sd_bus *b) { memmove(b->rbuffer, f + 2, b->rbuffer_size); } + b->rbuffer_size = 0; + r = bus_start_running(b); if (r < 0) return r; @@ -459,6 +480,7 @@ static int bus_read_auth(sd_bus *b) { size_t n; ssize_t k; int r; + void *p; assert(b); @@ -467,6 +489,11 @@ static int bus_read_auth(sd_bus *b) { return r; n = MAX(3 + 32 + 2 + sizeof("AGREE_UNIX_FD") - 1 + 2, b->rbuffer_size * 2); + p = realloc(b->rbuffer, n); + if (!p) + return -ENOMEM; + + b->rbuffer = p; zero(iov); iov.iov_base = (uint8_t*) b->rbuffer + b->rbuffer_size; @@ -490,7 +517,7 @@ static int bus_read_auth(sd_bus *b) { } static int bus_start_auth(sd_bus *b) { - static const char auth_prefix[] = "\0AUTH_EXTERNAL "; + static const char auth_prefix[] = "\0AUTH EXTERNAL "; static const char auth_suffix[] = "\r\nNEGOTIATE_UNIX_FD\r\nBEGIN\r\n"; char text[20 + 1]; /* enough space for a 64bit integer plus NUL */ @@ -570,25 +597,25 @@ int sd_bus_open_system(sd_bus **ret) { r = sd_bus_open_address(e, &b); if (r < 0) return r; + } else { + b = bus_new(); + if (!b) + return -ENOMEM; - b->send_hello = true; - *ret = b; - return r; - } - - b = bus_new(); - if (!b) - return -ENOMEM; - - b->send_hello = true; + b->sockaddr.un.sun_family = AF_UNIX; + strncpy(b->sockaddr.un.sun_path, "/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path)); + b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + sizeof("/run/dbus/system_bus_socket") - 1; - b->sockaddr.un.sun_family = AF_UNIX; - strncpy(b->sockaddr.un.sun_path, "/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path)); - b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + sizeof("/run/dbus/system_bus_socket") - 1; + r = bus_start_connect(b); + if (r < 0) { + bus_free(b); + return r; + } + } - r = bus_start_connect(b); + r = bus_send_hello(b); if (r < 0) { - bus_free(b); + sd_bus_unref(b); return r; } @@ -610,33 +637,33 @@ int sd_bus_open_user(sd_bus **ret) { r = sd_bus_open_address(e, &b); if (r < 0) return r; + } else { + e = getenv("XDG_RUNTIME_DIR"); + if (!e) + return -ENOENT; - b->send_hello = true; - *ret = b; - return r; - } - - e = getenv("XDG_RUNTIME_DIR"); - if (!e) - return -ENOENT; - - l = strlen(e); - if (l + 4 > sizeof(b->sockaddr.un.sun_path)) - return -E2BIG; + l = strlen(e); + if (l + 4 > sizeof(b->sockaddr.un.sun_path)) + return -E2BIG; - b = bus_new(); - if (!b) - return -ENOMEM; + b = bus_new(); + if (!b) + return -ENOMEM; - b->send_hello = true; + b->sockaddr.un.sun_family = AF_UNIX; + memcpy(mempcpy(b->sockaddr.un.sun_path, e, l), "/bus", 4); + b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + l + 4; - b->sockaddr.un.sun_family = AF_UNIX; - memcpy(mempcpy(b->sockaddr.un.sun_path, e, l), "/bus", 4); - b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + l + 4; + r = bus_start_connect(b); + if (r < 0) { + bus_free(b); + return r; + } + } - r = bus_start_connect(b); + r = bus_send_hello(b); if (r < 0) { - bus_free(b); + sd_bus_unref(b); return r; } @@ -747,6 +774,8 @@ int sd_bus_can_send(sd_bus *bus, char type) { if (!bus) return -EINVAL; + if (bus->state != BUS_RUNNING && bus->state != BUS_HELLO) + return -EAGAIN; if (type == SD_BUS_TYPE_UNIX_FD) return bus->can_fds; @@ -757,6 +786,9 @@ int sd_bus_can_send(sd_bus *bus, char type) { static int bus_seal_message(sd_bus *b, sd_bus_message *m) { assert(m); + if (m->header->version > b->message_version) + return -EPERM; + if (m->sealed) return 0; @@ -773,6 +805,7 @@ static int message_write(sd_bus *bus, sd_bus_message *m, size_t *idx) { assert(bus); assert(m); assert(idx); + assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); n = m->n_iovec * sizeof(struct iovec); iov = alloca(n); @@ -792,7 +825,7 @@ static int message_write(sd_bus *bus, sd_bus_message *m, size_t *idx) { *idx += (size_t) k; iovec_advance(iov, &j, *idx); - return j > m->n_iovec; + return j >= m->n_iovec; } static int message_read_need(sd_bus *bus, size_t *need) { @@ -801,8 +834,9 @@ static int message_read_need(sd_bus *bus, size_t *need) { assert(bus); assert(need); + assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); - if (bus->rbuffer_size <= sizeof(struct bus_header)) { + if (bus->rbuffer_size < sizeof(struct bus_header)) { *need = sizeof(struct bus_header); return 0; } @@ -818,9 +852,9 @@ static int message_read_need(sd_bus *bus, size_t *need) { a = be32toh(a); b = be32toh(b); } else - return -EIO; + return -EBADMSG; - *need = sizeof(struct bus_header) + ALIGN_TO(a, 8) + b; + *need = sizeof(struct bus_header) + ALIGN_TO(b, 8) + a; return 0; } @@ -832,6 +866,7 @@ static int message_make(sd_bus *bus, size_t size, sd_bus_message **m) { assert(bus); assert(m); assert(bus->rbuffer_size >= size); + assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); if (bus->rbuffer_size > size) { b = memdup((const uint8_t*) bus->rbuffer + size, bus->rbuffer_size - size); @@ -850,12 +885,6 @@ static int message_make(sd_bus *bus, size_t size, sd_bus_message **m) { bus->rbuffer = b; bus->rbuffer_size -= size; - r = bus_message_parse(t); - if (r < 0) { - sd_bus_message_unref(t); - return r; - } - *m = t; return 1; } @@ -870,6 +899,7 @@ static int message_read(sd_bus *bus, sd_bus_message **m) { assert(bus); assert(m); + assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); r = message_read_need(bus, &need); if (r < 0) @@ -882,6 +912,8 @@ static int message_read(sd_bus *bus, sd_bus_message **m) { if (!b) return -ENOMEM; + bus->rbuffer = b; + zero(iov); iov.iov_base = (uint8_t*) bus->rbuffer + bus->rbuffer_size; iov.iov_len = need - bus->rbuffer_size; @@ -910,6 +942,7 @@ static int dispatch_wqueue(sd_bus *bus) { int r, c = 0; assert(bus); + assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); if (bus->fd < 0) return -ENOTCONN; @@ -951,6 +984,7 @@ static int dispatch_rqueue(sd_bus *bus, sd_bus_message **m) { assert(bus); assert(m); + assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); if (bus->fd < 0) return -ENOTCONN; @@ -983,8 +1017,6 @@ int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) { return -ENOTCONN; if (!m) return -EINVAL; - if (m->header->version > bus->message_version) - return -EPERM; r = bus_seal_message(bus, m); if (r < 0) @@ -995,7 +1027,7 @@ int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) { if (m->dont_send && !serial) return 0; - if (bus->wqueue_size <= 0) { + if ((bus->state == BUS_RUNNING || bus->state == BUS_HELLO) && bus->wqueue_size <= 0) { size_t idx = 0; r = message_write(bus, m, &idx); @@ -1057,14 +1089,20 @@ int sd_bus_send_with_reply( if (!bus) return -EINVAL; - if (!bus->fd < 0) + if (bus->fd < 0) return -ENOTCONN; if (!m) return -EINVAL; if (!callback) return -EINVAL; - if (!m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) + if (m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) return -EINVAL; + if (m->header->flags & SD_BUS_MESSAGE_NO_REPLY_EXPECTED) + return -EINVAL; + + r = hashmap_ensure_allocated(&bus->reply_callbacks, uint64_hash_func, uint64_compare_func); + if (r < 0) + return r; r = bus_seal_message(bus, m); if (r < 0) @@ -1111,6 +1149,30 @@ int sd_bus_send_with_reply_cancel(sd_bus *bus, uint64_t serial) { return 1; } +static int ensure_running(sd_bus *bus) { + int r; + + assert(bus); + + r = sd_bus_is_running(bus); + if (r != 0) + return r; + + for (;;) { + r = sd_bus_process(bus, NULL); + if (r < 0) + return r; + + r = sd_bus_is_running(bus); + if (r != 0) + return r; + + r = sd_bus_wait(bus, (uint64_t) -1); + if (r < 0) + return r; + } +} + int sd_bus_send_with_reply_and_block( sd_bus *bus, sd_bus_message *m, @@ -1125,14 +1187,20 @@ int sd_bus_send_with_reply_and_block( if (!bus) return -EINVAL; - if (!bus->fd < 0) + if (bus->fd < 0) return -ENOTCONN; if (!m) return -EINVAL; - if (!m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) + if (m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) return -EINVAL; - if (sd_bus_error_is_dirty(error)) + if (m->header->flags & SD_BUS_MESSAGE_NO_REPLY_EXPECTED) return -EINVAL; + if (bus_error_is_dirty(error)) + return -EINVAL; + + r = ensure_running(bus); + if (r < 0) + return r; r = sd_bus_send(bus, m, &serial); if (r < 0) @@ -1162,6 +1230,9 @@ int sd_bus_send_with_reply_and_block( if (r < 0) return r; if (r > 0) { + /* bus_message_dump(incoming); */ + /* sd_bus_message_rewind(incoming, true); */ + if (incoming->reply_serial == serial) { /* Found a match! */ @@ -1223,7 +1294,7 @@ int sd_bus_get_fd(sd_bus *bus) { return -EINVAL; if (bus->fd < 0) - return -EINVAL; + return -ENOTCONN; return bus->fd; } @@ -1233,13 +1304,19 @@ int sd_bus_get_events(sd_bus *bus) { if (!bus) return -EINVAL; - if (bus->fd < 0) - return -EINVAL; + return -ENOTCONN; if (bus->state == BUS_OPENING) flags |= POLLOUT; - else if (bus->state == BUS_RUNNING || bus->state == BUS_HELLO) { + else if (bus->state == BUS_AUTHENTICATING) { + + if (bus->auth_index < ELEMENTSOF(bus->auth_iovec)) + flags |= POLLOUT; + + flags |= POLLIN; + + } else if (bus->state == BUS_RUNNING || bus->state == BUS_HELLO) { if (bus->rqueue_size <= 0) flags |= POLLIN; if (bus->wqueue_size > 0) @@ -1250,7 +1327,6 @@ int sd_bus_get_events(sd_bus *bus) { } int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { - sd_bus_message *m; int r; if (!bus) @@ -1270,7 +1346,7 @@ int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { return -errno; if (p.revents & (POLLOUT|POLLERR|POLLHUP)) { - int error; + int error = 0; socklen_t slen = sizeof(error); r = getsockopt(bus->fd, SOL_SOCKET, SO_ERROR, &error, &slen); @@ -1297,13 +1373,14 @@ int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { return r; r = bus_read_auth(bus); - if (r <= 0) + if (r < 0) return r; - return bus_start_running(bus); + return 0; } else if (bus->state == BUS_RUNNING || bus->state == BUS_HELLO) { struct filter_callback *l; + _cleanup_bus_message_unref_ sd_bus_message *m = NULL; r = dispatch_wqueue(bus); if (r < 0) @@ -1321,31 +1398,40 @@ int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { r = c->callback(bus, m, c->userdata); free(c); - if (r != 0) { - sd_bus_message_unref(m); + if (r != 0) return r < 0 ? r : 0; - } } } LIST_FOREACH(callbacks, l, bus->filter_callbacks) { r = l->callback(bus, m, l->userdata); - if (r != 0) { - sd_bus_message_unref(m); + if (r != 0) return r < 0 ? r : 0; - } } if (ret) { *ret = m; + m = NULL; return 1; } - sd_bus_message_unref(m); + if (sd_bus_message_is_method_call(m, NULL, NULL)) { + const sd_bus_error e = SD_BUS_ERROR_INIT_CONST("org.freedesktop.DBus.Error.UnknownObject", "Unknown object."); + _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; + + r = sd_bus_message_new_method_error(bus, m, &e, &reply); + if (r < 0) + return r; + + r = sd_bus_send(bus, reply, NULL); + if (r < 0) + return r; + } + return 0; } - return -ENOTSUP; + assert_not_reached("Unknown state"); } int sd_bus_wait(sd_bus *bus, uint64_t timeout_usec) { @@ -1356,7 +1442,10 @@ int sd_bus_wait(sd_bus *bus, uint64_t timeout_usec) { if (!bus) return -EINVAL; if (bus->fd < 0) - return -ECONNREFUSED; + return -ENOTCONN; + + if (bus->rqueue_size > 0) + return 0; e = sd_bus_get_events(bus); if (e < 0) @@ -1368,7 +1457,7 @@ int sd_bus_wait(sd_bus *bus, uint64_t timeout_usec) { r = ppoll(&p, 1, timeout_usec == (uint64_t) -1 ? NULL : timespec_store(&ts, timeout_usec), NULL); if (r < 0) - return -EINVAL; + return -errno; return r; } @@ -1381,7 +1470,11 @@ int sd_bus_flush(sd_bus *bus) { if (bus->fd < 0) return -ENOTCONN; - if (bus->state == BUS_RUNNING && bus->wqueue_size <= 0) + r = ensure_running(bus); + if (r < 0) + return r; + + if (bus->wqueue_size <= 0) return 0; for (;;) { @@ -1389,7 +1482,7 @@ int sd_bus_flush(sd_bus *bus) { if (r < 0) return r; - if (bus->state == BUS_RUNNING && bus->wqueue_size <= 0) + if (bus->wqueue_size <= 0) return 0; r = sd_bus_wait(bus, (uint64_t) -1); diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index d892562b5f..03ea4b8848 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -32,6 +32,12 @@ * - make unix fd passing work * - add page donation logic * - api for appending/reading fixed arrays + * - always verify container depth + * - implement method timeout logic + * - implicitly set no_reply when a message-call is sent an the serial number ignored + * - reduce number of ppoll()s if we can avoid it + * - handle NULL strings nicer when appending + * - merge busctl into systemctl or so? */ typedef struct sd_bus sd_bus; @@ -117,7 +123,7 @@ int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p); int sd_bus_message_enter_container(sd_bus_message *m, char type, const char *contents); int sd_bus_message_exit_container(sd_bus_message *m); int sd_bus_message_peek_type(sd_bus_message *m, char *type, const char **contents); -int sd_bus_message_rewind(sd_bus_message *m, bool complete); +int sd_bus_message_rewind(sd_bus_message *m, int complete); /* Bus management */ @@ -133,7 +139,8 @@ int sd_bus_remove_match(sd_bus *bus, const char *match); /* Error structures */ -#define SD_BUS_ERROR_INIT (NULL, NULL, 0) +#define SD_BUS_ERROR_INIT {NULL, NULL, 0} +#define SD_BUS_ERROR_INIT_CONST(name, message) {(name), (message), 0} void sd_bus_error_free(sd_bus_error *e); int sd_bus_error_set(sd_bus_error *e, const char *name, const char *format, ...); diff --git a/src/libsystemd-bus/test-bus-chat.c b/src/libsystemd-bus/test-bus-chat.c new file mode 100644 index 0000000000..4260ca3bc0 --- /dev/null +++ b/src/libsystemd-bus/test-bus-chat.c @@ -0,0 +1,242 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include +#include + +#include "log.h" +#include "util.h" + +#include "sd-bus.h" +#include "bus-message.h" + +static int server_init(sd_bus **_bus) { + sd_bus *bus = NULL; + int r; + + assert(_bus); + + r = sd_bus_open_user(&bus); + if (r < 0) { + log_error("Failed to connect to user bus: %s", strerror(-r)); + goto fail; + } + + r = sd_bus_request_name(bus, "org.freedesktop.systemd.test", 0); + if (r < 0) { + log_error("Failed to acquire name: %s", strerror(-r)); + goto fail; + } + + *_bus = bus; + return 0; + +fail: + if (bus) + sd_bus_unref(bus); + + return r; +} + +static void* server(void *p) { + sd_bus *bus = p; + int r; + + for (;;) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; + + r = sd_bus_process(bus, &m); + if (r < 0) { + log_error("Failed to process requests: %s", strerror(-r)); + goto fail; + } + if (r == 0) { + r = sd_bus_wait(bus, (uint64_t) -1); + if (r < 0) { + log_error("Failed to wait: %s", strerror(-r)); + goto fail; + } + + continue; + } + + log_info("Got message! %s", strna(sd_bus_message_get_member(m))); + /* bus_message_dump(m); */ + /* sd_bus_message_rewind(m, true); */ + + if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "LowerCase")) { + const char *hello; + _cleanup_free_ char *lowercase = NULL; + + r = sd_bus_message_read(m, "s", &hello); + if (r < 0) { + log_error("Failed to get parameter: %s", strerror(-r)); + goto fail; + } + + r = sd_bus_message_new_method_return(bus, m, &reply); + if (r < 0) { + log_error("Failed to allocate return: %s", strerror(-r)); + goto fail; + } + + lowercase = strdup(hello); + if (!lowercase) { + r = log_oom(); + goto fail; + } + + ascii_strlower(lowercase); + + r = sd_bus_message_append(reply, "s", lowercase); + if (r < 0) { + log_error("Failed to append message: %s", strerror(-r)); + goto fail; + } + } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "Exit")) + break; + else if (sd_bus_message_is_method_call(m, NULL, NULL)) { + const sd_bus_error e = SD_BUS_ERROR_INIT_CONST("org.freedesktop.DBus.Error.UnknownMethod", "Unknown method."); + + r = sd_bus_message_new_method_error(bus, m, &e, &reply); + if (r < 0) { + log_error("Failed to allocate return: %s", strerror(-r)); + goto fail; + } + } + + if (reply) { + r = sd_bus_send(bus, reply, NULL); + if (r < 0) { + log_error("Failed to send reply: %s", strerror(-r)); + goto fail; + } + } + } + + r = 0; + +fail: + if (bus) + sd_bus_unref(bus); + + return INT_TO_PTR(r); +} + +static int client(void) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; + sd_bus *bus = NULL; + sd_bus_error error = SD_BUS_ERROR_INIT; + const char *hello; + int r; + + r = sd_bus_open_user(&bus); + if (r < 0) { + log_error("Failed to connect to user bus: %s", strerror(-r)); + goto finish; + } + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.systemd.test", + "/", + "org.freedesktop.systemd.test", + "LowerCase", + &m); + if (r < 0) { + log_error("Failed to allocate method call: %s", strerror(-r)); + goto finish; + } + + r = sd_bus_message_append(m, "s", "HELLO"); + if (r < 0) { + log_error("Failed to append string: %s", strerror(-r)); + goto finish; + } + + r = sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, &error, &reply); + if (r < 0) { + log_error("Failed to issue method call: %s", error.message); + goto finish; + } + + r = sd_bus_message_read(reply, "s", &hello); + if (r < 0) { + log_error("Failed to get string: %s", strerror(-r)); + goto finish; + } + + assert(streq(hello, "hello")); + + r = 0; + +finish: + if (bus) { + _cleanup_bus_message_unref_ sd_bus_message *q; + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.systemd.test", + "/", + "org.freedesktop.systemd.test", + "Exit", + &q); + if (r < 0) { + log_error("Failed to allocate method call: %s", strerror(-r)); + goto finish; + } + + sd_bus_send(bus, q, NULL); + sd_bus_flush(bus); + sd_bus_unref(bus); + } + + sd_bus_error_free(&error); + return r; +} + +int main(int argc, char *argv[]) { + pthread_t t; + sd_bus *bus; + void *p; + int q, r; + + r = server_init(&bus); + if (r < 0) + return EXIT_FAILURE; + + r = pthread_create(&t, NULL, server, bus); + if (r != 0) { + sd_bus_unref(bus); + return EXIT_FAILURE; + } + + r = client(); + + q = pthread_join(t, &p); + if (q != 0) + return EXIT_FAILURE; + if (r < 0) + return EXIT_FAILURE; + + return EXIT_SUCCESS; +} -- cgit v1.2.1 From 09f727eebd87661f263d3c2c1e0de7b7771acd40 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 20 Mar 2013 22:57:55 +0100 Subject: update TODO --- TODO | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TODO b/TODO index b44170024b..19154121c7 100644 --- a/TODO +++ b/TODO @@ -49,6 +49,9 @@ Features: - Use for seamless upgrades, by running the new server before stopping the old. +* after all byte-wise realloc() is slow, even on glibc, so i guess we + need manual exponential loops after all + * BootLoaderSpec: drop allowing ext234 for $BOOT. Clarify that the kernel has to be in $BOOT. Clarify that the boot loader should be installed to the ESP. Define a way how an installer can figure out -- cgit v1.2.1 From c66a2e0cf9e548349acbb59ff03d63095cefe229 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Thu, 21 Mar 2013 00:01:14 +0100 Subject: bus-message: fix typo --- src/libsystemd-bus/bus-message.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index c385ef5ed0..ec2dd07dba 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -2213,8 +2213,8 @@ static int message_skip_fields( } else if (bus_type_is_basic(t)) { size_t align, k; - align = bus_type_get_alignment(align); - k = bus_type_get_size(align); + align = bus_type_get_alignment(t); + k = bus_type_get_size(t); r = message_peek_fields(m, ri, align, k, NULL); if (r < 0) -- cgit v1.2.1 From d5a3f0eac7cd28ad28fb5239b0dca14c7ba11eeb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 20 Mar 2013 18:12:37 -0400 Subject: core: remove unnecessary goto in setup_namespace --- src/core/namespace.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/core/namespace.c b/src/core/namespace.c index 972380abc0..7e33d84156 100644 --- a/src/core/namespace.c +++ b/src/core/namespace.c @@ -218,16 +218,14 @@ int setup_namespace(char** read_write_dirs, if (!mount_flags) mount_flags = MS_SHARED; - if (unshare(CLONE_NEWNS) < 0) { - r = -errno; - goto fail; - } + if (unshare(CLONE_NEWNS) < 0) + return -errno; m = mounts = (BindMount *) alloca(n * sizeof(BindMount)); if ((r = append_mounts(&m, read_write_dirs, READWRITE)) < 0 || (r = append_mounts(&m, read_only_dirs, READONLY)) < 0 || (r = append_mounts(&m, inaccessible_dirs, INACCESSIBLE)) < 0) - goto fail; + return r; if (private_tmp) { m->path = "/tmp"; @@ -246,10 +244,8 @@ int setup_namespace(char** read_write_dirs, /* Remount / as SLAVE so that nothing now mounted in the namespace shows up in the parent */ - if (mount(NULL, "/", NULL, MS_SLAVE|MS_REC, NULL) < 0) { - r = -errno; - goto fail; - } + if (mount(NULL, "/", NULL, MS_SLAVE|MS_REC, NULL) < 0) + return -errno; for (m = mounts; m < mounts + n; ++m) { r = apply_mount(m, tmp_dir, var_tmp_dir); @@ -277,6 +273,5 @@ undo_mounts: umount2(m->path, MNT_DETACH); } -fail: return r; } -- cgit v1.2.1 From fd4a5ec6fa834eb299b8e0ba6ab3e348d00d61b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 20 Mar 2013 18:22:20 -0400 Subject: systemd-analyze: do not format timestamp when not printing it ../src/analyze/systemd-analyze.c:530:88: warning: data argument not used by format string [-Wformat-extra-args] ...svg_text(false, u->ixt, y, u->time? "%s (%s)" : "%s", u->name, format_timespan(ts, sizeof(ts), u->time)); ~~~~ ^ --- src/analyze/systemd-analyze.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c index 49484a83bc..01bf55eda5 100644 --- a/src/analyze/systemd-analyze.c +++ b/src/analyze/systemd-analyze.c @@ -518,6 +518,7 @@ static int analyze_plot(DBusConnection *bus) { for (u = times; u < times + n; u++) { char ts[FORMAT_TIMESPAN_MAX]; + bool b; if (!u->name) continue; @@ -526,10 +527,12 @@ static int analyze_plot(DBusConnection *bus) { svg_bar("active", u->aet, u->axt, y); svg_bar("deactivating", u->axt, u->iet, y); - if (u->ixt * SCALE_X > width * 2 / 3) - svg_text(false, u->ixt, y, u->time? "%s (%s)" : "%s", u->name, format_timespan(ts, sizeof(ts), u->time)); + b = u->ixt * SCALE_X > width * 2 / 3; + if (u->time) + svg_text(b, u->ixt, y, "%s (%s)", + u->name, format_timespan(ts, sizeof(ts), u->time)); else - svg_text(true, u->ixt, y, u->time? "%s (%s)" : "%s", u->name, format_timespan(ts, sizeof(ts), u->time)); + svg_text(b, u->ixt, y, "%s", u->name); y++; } svg("
\n\n"); -- cgit v1.2.1 From 4750fade135aed733aa7a5fda7c670e6b4391538 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 20 Mar 2013 18:25:35 -0400 Subject: Remove some unused variables --- src/journal/journalctl.c | 2 +- src/python-systemd/id128.c | 2 +- src/shared/util.c | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 975c44fa9b..ddadc21338 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -596,7 +596,7 @@ static int add_this_boot(sd_journal *j) { } static int add_unit(sd_journal *j) { - _cleanup_free_ char *m = NULL, *u = NULL; + _cleanup_free_ char *u = NULL; int r; assert(j); diff --git a/src/python-systemd/id128.c b/src/python-systemd/id128.c index 865cc3ce22..a9611c4802 100644 --- a/src/python-systemd/id128.c +++ b/src/python-systemd/id128.c @@ -54,7 +54,7 @@ PyDoc_STRVAR(get_boot__doc__, static PyObject* make_uuid(sd_id128_t id) { PyObject _cleanup_Py_DECREF_ *uuid = NULL, *UUID = NULL, *bytes = NULL, - *args = NULL, *kwargs = NULL, *obj = NULL; + *args = NULL, *kwargs = NULL; uuid = PyImport_ImportModule("uuid"); if (!uuid) diff --git a/src/shared/util.c b/src/shared/util.c index 69f1b00934..872f6f7371 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5553,7 +5553,6 @@ int on_ac_power(void) { for (;;) { struct dirent *de; union dirent_storage buf; - _cleanup_free_ char *p = NULL; _cleanup_close_ int fd = -1, device = -1; char contents[6]; ssize_t n; -- cgit v1.2.1 From 131c01dbe9b5f71f8c913d1ebb10c926a47ac6a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 20 Mar 2013 18:27:49 -0400 Subject: Make two functions static --- src/core/syscall-list.c | 3 ++- src/udev/keymap/keymap.c | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/core/syscall-list.c b/src/core/syscall-list.c index b608e8582f..35216b2a88 100644 --- a/src/core/syscall-list.c +++ b/src/core/syscall-list.c @@ -26,7 +26,8 @@ #include "syscall-list.h" -const struct syscall_name *lookup_syscall(register const char *str, register unsigned int len); +static const struct syscall_name* lookup_syscall(register const char *str, + register unsigned int len); #include "syscall-to-name.h" #include "syscall-from-name.h" diff --git a/src/udev/keymap/keymap.c b/src/udev/keymap/keymap.c index 27aaf6b670..ae0a19d3a3 100644 --- a/src/udev/keymap/keymap.c +++ b/src/udev/keymap/keymap.c @@ -36,7 +36,7 @@ #include #include -const struct key* lookup_key (const char *str, unsigned int len); +static const struct key* lookup_key (const char *str, unsigned int len); #include "keys-from-name.h" #include "keys-to-name.h" -- cgit v1.2.1 From 23ea3dab15181a3966ec45fa2ccbb81e59d2e0a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 20 Mar 2013 18:30:31 -0400 Subject: activate: avoid warning from -Wshadow src/activate/activate.c:167:51: warning: declaration shadows a variable in the global scope [-Wshadow] static int launch(char* name, char **argv, char **environ, int fds) { ^ /usr/include/unistd.h:546:15: note: previous declaration is here extern char **environ; ^ --- src/activate/activate.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/activate/activate.c b/src/activate/activate.c index be40be48a4..a6e7248574 100644 --- a/src/activate/activate.c +++ b/src/activate/activate.c @@ -164,7 +164,7 @@ static int open_sockets(int *epoll_fd, bool accept) { return count; } -static int launch(char* name, char **argv, char **environ, int fds) { +static int launch(char* name, char **argv, char **env, int fds) { unsigned n_env = 0, length; char **envp = NULL, **s; static const char* tocopy[] = {"TERM=", "PATH=", "USER=", "HOME="}; @@ -182,14 +182,14 @@ static int launch(char* name, char **argv, char **environ, int fds) { char _cleanup_free_ *p = strappend(*s, "="); if (!p) return log_oom(); - envp[n_env] = strv_find_prefix(environ, p); + envp[n_env] = strv_find_prefix(env, p); if (envp[n_env]) n_env ++; } } for (i = 0; i < ELEMENTSOF(tocopy); i++) { - envp[n_env] = strv_find_prefix(environ, tocopy[i]); + envp[n_env] = strv_find_prefix(env, tocopy[i]); if (envp[n_env]) n_env ++; } @@ -208,7 +208,7 @@ static int launch(char* name, char **argv, char **environ, int fds) { return -errno; } -static int launch1(const char* child, char** argv, char **environ, int fd) { +static int launch1(const char* child, char** argv, char **env, int fd) { pid_t parent_pid, child_pid; int r; -- cgit v1.2.1 From 11ea5a4a7f6530b970ab32f1b6215c74e7475979 Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Wed, 20 Mar 2013 19:25:37 -0400 Subject: bus: compare to negative errno --- src/libsystemd-bus/bus-error.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsystemd-bus/bus-error.c b/src/libsystemd-bus/bus-error.c index f86da624fd..55b418768a 100644 --- a/src/libsystemd-bus/bus-error.c +++ b/src/libsystemd-bus/bus-error.c @@ -161,7 +161,7 @@ int bus_error_from_errno(sd_bus_error *e, int error) { if (error == -ENOMEM) sd_bus_error_set_const(e, "org.freedesktop.DBus.Error.NoMemory", strerror(-error)); - else if (error == -EPERM || error == EACCES) + else if (error == -EPERM || error == -EACCES) sd_bus_error_set_const(e, "org.freedesktop.DBus.Error.AccessDenied", strerror(-error)); else sd_bus_error_set_const(e, "org.freedesktop.DBus.Error.Failed", "Operation failed"); -- cgit v1.2.1 From 30bdd695250eeecbf0b36c1e3c90d67ca03953ed Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 21 Mar 2013 02:42:28 +0100 Subject: shared: add simple priority queue implementation --- .gitignore | 1 + Makefile.am | 14 ++- src/shared/prioq.c | 281 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/shared/prioq.h | 39 +++++++ src/test/test-prioq.c | 166 +++++++++++++++++++++++++++++ 5 files changed, 500 insertions(+), 1 deletion(-) create mode 100644 src/shared/prioq.c create mode 100644 src/shared/prioq.h create mode 100644 src/test/test-prioq.c diff --git a/.gitignore b/.gitignore index 2d95f149c0..c3bb81b1f7 100644 --- a/.gitignore +++ b/.gitignore @@ -111,6 +111,7 @@ /test-loopback /test-mmap-cache /test-ns +/test-prioq /test-replace-var /test-sched-prio /test-sleep diff --git a/Makefile.am b/Makefile.am index d8e9b16be0..13eba27fed 100644 --- a/Makefile.am +++ b/Makefile.am @@ -620,6 +620,8 @@ libsystemd_shared_la_SOURCES = \ src/shared/set.h \ src/shared/fdset.c \ src/shared/fdset.h \ + src/shared/prioq.c \ + src/shared/prioq.h \ src/shared/strv.c \ src/shared/strv.h \ src/shared/env-util.c \ @@ -1075,7 +1077,8 @@ noinst_tests += \ test-sched-prio \ test-calendarspec \ test-strip-tab-ansi \ - test-cgroup-util + test-cgroup-util \ + test-prioq EXTRA_DIST += \ test/sched_idle_bad.service \ @@ -1166,6 +1169,15 @@ test_util_CFLAGS = \ test_util_LDADD = \ libsystemd-core.la +test_prioq_SOURCES = \ + src/test/test-prioq.c + +test_prioq_CFLAGS = \ + $(AM_CFLAGS) + +test_prioq_LDADD = \ + libsystemd-core.la + test_log_SOURCES = \ src/test/test-log.c diff --git a/src/shared/prioq.c b/src/shared/prioq.c new file mode 100644 index 0000000000..fe91324d9b --- /dev/null +++ b/src/shared/prioq.c @@ -0,0 +1,281 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include "util.h" +#include "prioq.h" + +struct prioq_item { + void *data; + unsigned *idx; +}; + +struct Prioq { + compare_func_t compare_func; + unsigned n_items, n_allocated; + + struct prioq_item *items; +}; + +Prioq *prioq_new(compare_func_t compare_func) { + Prioq *q; + + q = new0(Prioq, 1); + if (!q) + return q; + + q->compare_func = compare_func; + return q; +} + +void prioq_free(Prioq *q) { + if (!q) + return; + + free(q->items); + free(q); +} + +static void swap(Prioq *q, unsigned j, unsigned k) { + void *saved_data; + unsigned *saved_idx; + + assert(q); + assert(j < q->n_items); + assert(k < q->n_items); + + assert(!q->items[j].idx || *(q->items[j].idx) == j); + assert(!q->items[k].idx || *(q->items[k].idx) == k); + + saved_data = q->items[j].data; + saved_idx = q->items[j].idx; + q->items[j].data = q->items[k].data; + q->items[j].idx = q->items[k].idx; + q->items[k].data = saved_data; + q->items[k].idx = saved_idx; + + if (q->items[j].idx) + *q->items[j].idx = j; + + if (q->items[k].idx) + *q->items[k].idx = k; +} + +static unsigned shuffle_up(Prioq *q, unsigned idx) { + assert(q); + + while (idx > 0) { + unsigned k; + + k = (idx-1)/2; + + if (q->compare_func(q->items[k].data, q->items[idx].data) < 0) + break; + + swap(q, idx, k); + idx = k; + } + + return idx; +} + +static unsigned shuffle_down(Prioq *q, unsigned idx) { + assert(q); + + for (;;) { + unsigned j, k, s; + + k = (idx+1)*2; /* right child */ + j = k-1; /* left child */ + + if (j >= q->n_items) + break; + + if (q->compare_func(q->items[j].data, q->items[idx].data) < 0) + + /* So our left child is smaller than we are, let's + * remember this fact */ + s = j; + else + s = idx; + + if (k < q->n_items && + q->compare_func(q->items[k].data, q->items[s].data) < 0) + + /* So our right child is smaller than we are, let's + * remember this fact */ + s = k; + + /* s now points to the smallest of the three items */ + + if (s == idx) + /* No swap necessary, we're done */ + break; + + swap(q, idx, s); + idx = s; + } + + return idx; +} + +int prioq_put(Prioq *q, void *data, unsigned *idx) { + struct prioq_item *i; + unsigned k; + + assert(q); + + if (q->n_items >= q->n_allocated) { + unsigned n; + struct prioq_item *j; + + n = MAX((q->n_items+1) * 2, 16); + j = realloc(q->items, sizeof(struct prioq_item) * n); + if (!j) + return -ENOMEM; + + q->items = j; + q->n_allocated = n; + } + + k = q->n_items++; + i = q->items + k; + i->data = data; + i->idx = idx; + + if (idx) + *idx = k; + + shuffle_up(q, k); + + return 0; +} + +static void remove_item(Prioq *q, struct prioq_item *i) { + struct prioq_item *l; + + assert(q); + assert(i); + + l = q->items + q->n_items - 1; + + if (i == l) + /* Last entry, let's just remove it */ + q->n_items--; + else { + unsigned k; + + /* Not last entry, let's replace the last entry with + * this one, and reshuffle */ + + k = i - q->items; + + i->data = l->data; + i->idx = l->idx; + if (i->idx) + *i->idx = k; + q->n_items--; + + k = shuffle_down(q, k); + shuffle_up(q, k); + } +} + +static struct prioq_item* find_item(Prioq *q, void *data, unsigned *idx) { + struct prioq_item *i; + + assert(q); + + if (idx) { + assert(*idx < q->n_items); + i = q->items + *idx; + assert(i->data == data); + + return i; + } else { + for (i = q->items; i < q->items + q->n_items; i++) + if (i->data == data) + return i; + return NULL; + } +} + +int prioq_remove(Prioq *q, void *data, unsigned *idx) { + struct prioq_item *i; + + assert(q); + + i = find_item(q, data, idx); + if (!i) + return 0; + + remove_item(q, i); + return 1; +} + +int prioq_reshuffle(Prioq *q, void *data, unsigned *idx) { + struct prioq_item *i; + unsigned k; + + assert(q); + + i = find_item(q, data, idx); + if (!i) + return 0; + + k = i - q->items; + k = shuffle_down(q, k); + shuffle_up(q, k); + return 1; +} + +void *prioq_peek(Prioq *q) { + assert(q); + + if (q->n_items <= 0) + return NULL; + + return q->items[0].data; +} + +void *prioq_pop(Prioq *q) { + void *data; + + assert(q); + + if (q->n_items <= 0) + return NULL; + + data = q->items[0].data; + remove_item(q, q->items); + return data; +} + +unsigned prioq_size(Prioq *q) { + assert(q); + + return q->n_items; + +} +bool prioq_isempty(Prioq *q) { + assert(q); + + return q->n_items <= 0; +} diff --git a/src/shared/prioq.h b/src/shared/prioq.h new file mode 100644 index 0000000000..1b5b05e7c7 --- /dev/null +++ b/src/shared/prioq.h @@ -0,0 +1,39 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include "hashmap.h" + +typedef struct Prioq Prioq; + +Prioq *prioq_new(compare_func_t compare); +void prioq_free(Prioq *q); + +int prioq_put(Prioq *q, void *data, unsigned *idx); +int prioq_remove(Prioq *q, void *data, unsigned *idx); +int prioq_reshuffle(Prioq *q, void *data, unsigned *idx); + +void *prioq_peek(Prioq *q); +void *prioq_pop(Prioq *q); + +unsigned prioq_size(Prioq *q); +bool prioq_isempty(Prioq *q); diff --git a/src/test/test-prioq.c b/src/test/test-prioq.c new file mode 100644 index 0000000000..73c640840a --- /dev/null +++ b/src/test/test-prioq.c @@ -0,0 +1,166 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include + +#include "util.h" +#include "set.h" +#include "prioq.h" + +#define SET_SIZE 1024*4 + +static int unsigned_compare(const void *a, const void *b) { + const unsigned *x = a, *y = b; + + if (*x < *y) + return -1; + + if (*x > *y) + return 1; + + return 0; +} + +static void test_unsigned(void) { + unsigned buffer[SET_SIZE], i; + Prioq *q; + + srand(0); + + q = prioq_new(trivial_compare_func); + assert_se(q); + + for (i = 0; i < ELEMENTSOF(buffer); i++) { + unsigned u; + + u = (unsigned) rand(); + buffer[i] = u; + assert_se(prioq_put(q, UINT_TO_PTR(u), NULL) >= 0); + } + + qsort(buffer, ELEMENTSOF(buffer), sizeof(buffer[0]), unsigned_compare); + + for (i = 0; i < ELEMENTSOF(buffer); i++) { + unsigned u; + + assert_se(prioq_size(q) == ELEMENTSOF(buffer) - i); + + u = PTR_TO_UINT(prioq_pop(q)); + assert_se(buffer[i] == u); + } + + assert_se(prioq_isempty(q)); + prioq_free(q); +} + +struct test { + unsigned value; + unsigned idx; +}; + +static int test_compare(const void *a, const void *b) { + const struct test *x = a, *y = b; + + if (x->value < y->value) + return -1; + + if (x->value > y->value) + return 1; + + return 0; +} + +static unsigned test_hash(const void *a) { + const struct test *x = a; + + return x->value; +} + +static void test_struct(void) { + Prioq *q; + Set *s; + unsigned previous = 0, i; + int r; + + srand(0); + + q = prioq_new(test_compare); + assert_se(q); + + s = set_new(test_hash, test_compare); + assert_se(s); + + for (i = 0; i < SET_SIZE; i++) { + struct test *t; + + t = new0(struct test, 1); + assert_se(t); + t->value = (unsigned) rand(); + + r = prioq_put(q, t, &t->idx); + assert_se(r >= 0); + + if (i % 4 == 0) { + r = set_put(s, t); + assert_se(r >= 0); + } + } + + for (;;) { + struct test *t; + + t = set_steal_first(s); + if (!t) + break; + + r = prioq_remove(q, t, &t->idx); + assert_se(r > 0); + + free(t); + } + + for (i = 0; i < SET_SIZE * 3 / 4; i++) { + struct test *t; + + assert_se(prioq_size(q) == (SET_SIZE * 3 / 4) - i); + + t = prioq_pop(q); + assert_se(t); + + assert_se(previous <= t->value); + previous = t->value; + free(t); + } + + assert_se(prioq_isempty(q)); + prioq_free(q); + + assert_se(set_isempty(s)); + set_free(s); +} + +int main(int argc, char* argv[]) { + + test_unsigned(); + test_struct(); + + return 0; +} -- cgit v1.2.1 From b588b3c4568bfa093aea6f01b82c3edfe00de11e Mon Sep 17 00:00:00 2001 From: Michael Biebl Date: Thu, 21 Mar 2013 11:05:43 +0100 Subject: build-sys: include missing header in dist tarball --- Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.am b/Makefile.am index 13eba27fed..8ecfb74a6a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1663,6 +1663,7 @@ libsystemd_bus_la_SOURCES = \ src/libsystemd-bus/bus-message.c \ src/libsystemd-bus/bus-message.h \ src/libsystemd-bus/bus-signature.c \ + src/libsystemd-bus/bus-signature.h \ src/libsystemd-bus/bus-type.c \ src/libsystemd-bus/bus-type.h -- cgit v1.2.1 From bff9cfcc5c065e7ff0a6ccaf5d0b844c7ebc8081 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 21 Mar 2013 15:07:54 +0100 Subject: doc: disable gtk-doc test again - you are a really annoying piece of software make check-TESTS make[5]: Nothing to be done for `/usr/bin/gtkdoc-check.log'. fatal: making test-suite.log: failed to create /usr/bin/gtkdoc-check.trs fatal: making test-suite.log: failed to create /usr/bin/gtkdoc-check.log make[4]: *** [test-suite.log] Error 1 make[3]: *** [check-TESTS] Error 2 make[2]: *** [check-am] Error 2 make[1]: *** [check-recursive] Error 1 make: *** [check] Error 2 --- docs/gudev/Makefile.am | 4 ++-- docs/libudev/Makefile.am | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/gudev/Makefile.am b/docs/gudev/Makefile.am index 64e4361021..659330303b 100644 --- a/docs/gudev/Makefile.am +++ b/docs/gudev/Makefile.am @@ -109,7 +109,7 @@ EXTRA_DIST += version.xml.in # Comment this out if you want your docs-status tested during 'make check' if ENABLE_GTK_DOC if ENABLE_GTK_DOC_TESTS -TESTS_ENVIRONMENT = cd $(top_srcdir) -TESTS = $(GTKDOC_CHECK) +#TESTS_ENVIRONMENT = cd $(top_srcdir) +#TESTS = $(GTKDOC_CHECK) endif endif diff --git a/docs/libudev/Makefile.am b/docs/libudev/Makefile.am index cc236ad50a..cf9a452e78 100644 --- a/docs/libudev/Makefile.am +++ b/docs/libudev/Makefile.am @@ -103,7 +103,7 @@ EXTRA_DIST += version.xml.in # Comment this out if you want your docs-status tested during 'make check' if ENABLE_GTK_DOC if ENABLE_GTK_DOC_TESTS -TESTS_ENVIRONMENT = cd $(top_srcdir) -TESTS = $(GTKDOC_CHECK) +#TESTS_ENVIRONMENT = cd $(top_srcdir) +#TESTS = $(GTKDOC_CHECK) endif endif -- cgit v1.2.1 From f5944e0fd6cebfa0c5ba523ddf09b9d876eaa4d4 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 21 Mar 2013 22:16:55 +0100 Subject: MAkefile.am: whitespace cleanup --- Makefile.am | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/Makefile.am b/Makefile.am index 8ecfb74a6a..d9cc5f0f96 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1612,7 +1612,7 @@ libsystemd_daemon_la_SOURCES = \ src/libsystemd-daemon/sd-daemon.c libsystemd_daemon_internal_la_SOURCES = \ - $(libsystemd_daemon_la_SOURCES) + $(libsystemd_daemon_la_SOURCES) libsystemd_daemon_la_CFLAGS = \ $(AM_CFLAGS) \ @@ -1641,7 +1641,7 @@ lib_LTLIBRARIES += \ libsystemd-daemon.la noinst_LTLIBRARIES += \ - libsystemd-daemon-internal.la + libsystemd-daemon-internal.la pkgconfiglib_DATA += \ src/libsystemd-daemon/libsystemd-daemon.pc @@ -1671,7 +1671,7 @@ libsystemd_bus_la_LIBADD = \ libsystemd-id128-internal.la noinst_LTLIBRARIES += \ - libsystemd-bus.la + libsystemd-bus.la noinst_tests += \ test-bus-marshal \ @@ -3583,7 +3583,7 @@ _journal_la_SOURCES = \ _journal_la_CFLAGS = \ $(AM_CFLAGS) \ - -fvisibility=default \ + -fvisibility=default \ $(PYTHON_CFLAGS) _journal_la_LDFLAGS = \ @@ -3604,7 +3604,7 @@ id128_la_SOURCES = \ id128_la_CFLAGS = \ $(AM_CFLAGS) \ - -fvisibility=default \ + -fvisibility=default \ $(PYTHON_CFLAGS) \ -I$(top_builddir)/src/python-systemd @@ -3625,7 +3625,7 @@ _daemon_la_SOURCES = \ _daemon_la_CFLAGS = \ $(AM_CFLAGS) \ - -fvisibility=default \ + -fvisibility=default \ $(PYTHON_CFLAGS) \ -I$(top_builddir)/src/python-systemd @@ -3646,7 +3646,7 @@ _reader_la_SOURCES = \ _reader_la_CFLAGS = \ $(AM_CFLAGS) \ - -fvisibility=default \ + -fvisibility=default \ $(PYTHON_CFLAGS) _reader_la_LDFLAGS = \ @@ -3683,7 +3683,7 @@ sphinx-%: destdir-sphinx: all dir="$$(mktemp -d /tmp/systemd-install.XXXXXX)" && \ $(MAKE) DESTDIR="$$dir" install && \ - $(MAKE) DESTDIR="$$dir" sphinx-html && \ + $(MAKE) DESTDIR="$$dir" sphinx-html && \ rm -rf "$$dir" endif @@ -3978,7 +3978,7 @@ distclean-local: $(DISTCLEAN_LOCAL_HOOKS) clean-local: $(CLEAN_LOCAL_HOOKS) rm -rf $(abs_srcdir)/install-tree rm -f $(abs_srcdir)/hwdb/usb.ids $(abs_srcdir)/hwdb/pci.ids $(abs_srcdir)/hwdb/oui.txt \ - $(abs_srcdir)/hwdb/iab.txt + $(abs_srcdir)/hwdb/iab.txt DISTCHECK_CONFIGURE_FLAGS = \ --with-dbuspolicydir=$$dc_install_base/$(dbuspolicydir) \ @@ -4009,7 +4009,7 @@ hwdb-update: ( cd $(top_srcdir)/hwdb && \ wget -N http://www.linux-usb.org/usb.ids \ http://pci-ids.ucw.cz/v2.2/pci.ids \ - http://standards.ieee.org/develop/regauth/oui/oui.txt \ + http://standards.ieee.org/develop/regauth/oui/oui.txt \ http://standards.ieee.org/develop/regauth/iab/iab.txt && \ ./ids-update.pl ) -- cgit v1.2.1 From 43b4c9aaf56aefdc55c4b6c1df78e30cdcf3988f Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 21 Mar 2013 22:17:13 +0100 Subject: hwdb: update --- hwdb/20-OUI.hwdb | 303 +++++- hwdb/20-pci-vendor-product.hwdb | 2246 +++++++++++++++++++++++---------------- hwdb/20-usb-vendor-product.hwdb | 973 ++++++++++++++++- 3 files changed, 2547 insertions(+), 975 deletions(-) diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb index a5689b82bb..f7c6b2f5a6 100644 --- a/hwdb/20-OUI.hwdb +++ b/hwdb/20-OUI.hwdb @@ -3674,7 +3674,7 @@ OUI:0050C24D2* ID_OUI_FROM_DATABASE=Twoway CATV SERVICE INC. OUI:0050C24D3* - ID_OUI_FROM_DATABASE=SOFTIN sp. z o.o. + ID_OUI_FROM_DATABASE=ELPROC sp. z o.o. OUI:0050C24D4* ID_OUI_FROM_DATABASE=Herholdt Controls srl @@ -5648,7 +5648,7 @@ OUI:0050C2765* ID_OUI_FROM_DATABASE=Phytec Messtechnik GmbH OUI:0050C2766* - ID_OUI_FROM_DATABASE=EMTEC Elektronische Messtechnik GmbH + ID_OUI_FROM_DATABASE=Gutermann Technology GmbH OUI:0050C2767* ID_OUI_FROM_DATABASE=EID @@ -9149,7 +9149,7 @@ OUI:0050C2BFA* ID_OUI_FROM_DATABASE=Rohde & Schwarz Topex SA OUI:0050C2BFB* - ID_OUI_FROM_DATABASE=ecs srl + ID_OUI_FROM_DATABASE=ECS Srl OUI:0050C2BFC* ID_OUI_FROM_DATABASE=Altronix Corporation @@ -9632,7 +9632,7 @@ OUI:0050C2C9E* ID_OUI_FROM_DATABASE=Rohde & Schwarz Topex SA OUI:0050C2C9F* - ID_OUI_FROM_DATABASE=Etherhome + ID_OUI_FROM_DATABASE=xxter b.v. OUI:0050C2CA0* ID_OUI_FROM_DATABASE=Kiefer technic GmbH @@ -11537,7 +11537,7 @@ OUI:0050C2F22* ID_OUI_FROM_DATABASE=Harland Simon plc OUI:0050C2F23* - ID_OUI_FROM_DATABASE=Electro Motive Diesel + ID_OUI_FROM_DATABASE=Electro-Motive Diesel OUI:0050C2F24* ID_OUI_FROM_DATABASE=CT Company @@ -11996,7 +11996,7 @@ OUI:0050C2FBC* ID_OUI_FROM_DATABASE=Leroy Somer OUI:0050C2FBD* - ID_OUI_FROM_DATABASE=FHF Funke + Huster Fernsig GmbH + ID_OUI_FROM_DATABASE=FHF Funke+Huster Fernsig GmbH OUI:0050C2FBE* ID_OUI_FROM_DATABASE=senTec Elektronik GmbH @@ -12734,7 +12734,67 @@ OUI:40D8550B3* ID_OUI_FROM_DATABASE=T.W.S. srl OUI:40D8550B4* - ID_OUI_FROM_DATABASE=MITSUBIDHI ELECTRIC SYSTEM & SERVICE CO.,LTD. + ID_OUI_FROM_DATABASE=MITSUBISHI ELECTRIC SYSTEM & SERVICE CO.,LTD. + +OUI:40D8550B5* + ID_OUI_FROM_DATABASE=DATA SHARING CONSULTING + +OUI:40D8550B6* + ID_OUI_FROM_DATABASE=Telvent + +OUI:40D8550B7* + ID_OUI_FROM_DATABASE=ACD Elektronik GmbH + +OUI:40D8550B8* + ID_OUI_FROM_DATABASE=Ferlin Trading BV + +OUI:40D8550B9* + ID_OUI_FROM_DATABASE=WxBR Sistemas de Telecomunicacoes Ltda + +OUI:40D8550BA* + ID_OUI_FROM_DATABASE=PCH Engineering A/S + +OUI:40D8550BB* + ID_OUI_FROM_DATABASE=Whiptail + +OUI:40D8550BC* + ID_OUI_FROM_DATABASE=Aplex Technology Inc. + +OUI:40D8550BD* + ID_OUI_FROM_DATABASE=iCOGNIZE GmbH + +OUI:40D8550BE* + ID_OUI_FROM_DATABASE=Manufacturing System Insights Inc + +OUI:40D8550BF* + ID_OUI_FROM_DATABASE=Shenzhen SETEC Power Co.,Ltd + +OUI:40D8550C0* + ID_OUI_FROM_DATABASE=ACT + +OUI:40D8550C1* + ID_OUI_FROM_DATABASE=Xepto Computing Inc + +OUI:40D8550C2* + ID_OUI_FROM_DATABASE=SC Techswarm SRL + +OUI:40D8550C3* + ID_OUI_FROM_DATABASE=APG CASH DRAWER + +OUI:40D8550C4* + ID_OUI_FROM_DATABASE=Inspired Systems + +OUI:40D8550C5* + ID_OUI_FROM_DATABASE=M.M. Elektrolab + +OUI:40D8550C6* + ID_OUI_FROM_DATABASE=comtime GmbH + +OUI:40D8550C7* + ID_OUI_FROM_DATABASE=insensiv GmbH + +OUI:40D8550C8* + ID_OUI_FROM_DATABASE=Mettler Toledo Hispeed OUI:000000* ID_OUI_FROM_DATABASE=XEROX CORPORATION @@ -13577,7 +13637,7 @@ OUI:000119* ID_OUI_FROM_DATABASE=RTUnet (Australia) OUI:00011A* - ID_OUI_FROM_DATABASE=EEH DataLink GmbH + ID_OUI_FROM_DATABASE=Hoffmann und Burmeister GbR OUI:00011B* ID_OUI_FROM_DATABASE=Unizone Technologies, Inc. @@ -16952,7 +17012,7 @@ OUI:00057F* ID_OUI_FROM_DATABASE=Acqis Technology OUI:000580* - ID_OUI_FROM_DATABASE=Fibrolan Ltd. + ID_OUI_FROM_DATABASE=FibroLAN Ltd. OUI:000581* ID_OUI_FROM_DATABASE=Snell @@ -17792,7 +17852,7 @@ OUI:000697* ID_OUI_FROM_DATABASE=R & D Center OUI:000698* - ID_OUI_FROM_DATABASE=egnite Software GmbH + ID_OUI_FROM_DATABASE=egnite GmbH OUI:000699* ID_OUI_FROM_DATABASE=Vida Design Co. @@ -18395,7 +18455,7 @@ OUI:000760* ID_OUI_FROM_DATABASE=TOMIS Information & Telecom Corp. OUI:000761* - ID_OUI_FROM_DATABASE=Logitech SA + ID_OUI_FROM_DATABASE=Logitech Europe SA OUI:000762* ID_OUI_FROM_DATABASE=Group Sense Limited @@ -26459,7 +26519,7 @@ OUI:001209* ID_OUI_FROM_DATABASE=Fastrax Ltd OUI:00120A* - ID_OUI_FROM_DATABASE=Emerson Electric GmbH & Co. OHG + ID_OUI_FROM_DATABASE=Emerson Climate Technologies GmbH OUI:00120B* ID_OUI_FROM_DATABASE=Chinasys Technologies Limited @@ -27368,7 +27428,7 @@ OUI:001338* ID_OUI_FROM_DATABASE=FRESENIUS-VIAL OUI:001339* - ID_OUI_FROM_DATABASE=EL-ME AG + ID_OUI_FROM_DATABASE=CCV Deutschland GmbH OUI:00133A* ID_OUI_FROM_DATABASE=VadaTech Inc. @@ -31337,7 +31397,7 @@ OUI:001866* ID_OUI_FROM_DATABASE=Leutron Vision OUI:001867* - ID_OUI_FROM_DATABASE=Evolution Robotics Retail + ID_OUI_FROM_DATABASE=Datalogic ADC OUI:001868* ID_OUI_FROM_DATABASE=Scientific Atlanta, A Cisco Company @@ -34286,7 +34346,7 @@ OUI:001C3D* ID_OUI_FROM_DATABASE=WaveStorm OUI:001C3E* - ID_OUI_FROM_DATABASE=ECKey Limited + ID_OUI_FROM_DATABASE=ECKey Corporation OUI:001C3F* ID_OUI_FROM_DATABASE=International Police Technologies, Inc. @@ -36602,7 +36662,7 @@ OUI:001F41* ID_OUI_FROM_DATABASE=Ruckus Wireless OUI:001F42* - ID_OUI_FROM_DATABASE=Etherstack Pty Ltd + ID_OUI_FROM_DATABASE=Etherstack plc OUI:001F43* ID_OUI_FROM_DATABASE=ENTES ELEKTRONIK @@ -36668,7 +36728,7 @@ OUI:001F57* ID_OUI_FROM_DATABASE=Phonik Innovation Co.,LTD OUI:001F58* - ID_OUI_FROM_DATABASE=EMH Energiemesstechnik GmbH & co.KG + ID_OUI_FROM_DATABASE=EMH Energiemesstechnik GmbH OUI:001F59* ID_OUI_FROM_DATABASE=Kronback Tracers @@ -38516,7 +38576,7 @@ OUI:0021C0* ID_OUI_FROM_DATABASE=Mobile Appliance, Inc. OUI:0021C1* - ID_OUI_FROM_DATABASE=ABB Oy / Distribution Automation + ID_OUI_FROM_DATABASE=ABB Oy / Medium Voltage Products OUI:0021C2* ID_OUI_FROM_DATABASE=GL Communications Inc @@ -40391,7 +40451,7 @@ OUI:002438* ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc OUI:002439* - ID_OUI_FROM_DATABASE=Essential Viewing Systems Limited + ID_OUI_FROM_DATABASE=Digital Barriers Advanced Technologies OUI:00243A* ID_OUI_FROM_DATABASE=Ludl Electronic Products @@ -41324,7 +41384,7 @@ OUI:002574* ID_OUI_FROM_DATABASE=KUNIMI MEDIA DEVICE Co., Ltd. OUI:002575* - ID_OUI_FROM_DATABASE=FiberPlex Inc + ID_OUI_FROM_DATABASE=FiberPlex Technologies, LLC OUI:002576* ID_OUI_FROM_DATABASE=NELI TECHNOLOGIES @@ -42386,7 +42446,7 @@ OUI:0026DC* ID_OUI_FROM_DATABASE=Optical Systems Design OUI:0026DD* - ID_OUI_FROM_DATABASE=Fival Corporation + ID_OUI_FROM_DATABASE=Fival Science & Technology Co.,Ltd. OUI:0026DE* ID_OUI_FROM_DATABASE=FDI MATELEC @@ -51499,6 +51559,9 @@ OUI:087CBE* OUI:087D21* ID_OUI_FROM_DATABASE=Altasec technology corporation +OUI:088039* + ID_OUI_FROM_DATABASE=Cisco SPVTG + OUI:0881F4* ID_OUI_FROM_DATABASE=Juniper Networks @@ -51601,6 +51664,9 @@ OUI:08FC88* OUI:0C0400* ID_OUI_FROM_DATABASE=Jantar d.o.o. +OUI:0C0535* + ID_OUI_FROM_DATABASE=Juniper Systems + OUI:0C1105* ID_OUI_FROM_DATABASE=Ringslink (Xiamen) Network Communication Technologies Co., Ltd @@ -51622,6 +51688,9 @@ OUI:0C191F* OUI:0C1DC2* ID_OUI_FROM_DATABASE=SeAH Networks +OUI:0C2724* + ID_OUI_FROM_DATABASE=Cisco + OUI:0C2755* ID_OUI_FROM_DATABASE=Valuable Techologies Limited @@ -51631,6 +51700,9 @@ OUI:0C2A69* OUI:0C2AE7* ID_OUI_FROM_DATABASE=Beijing General Research Institute of Mining and Metallurgy +OUI:0C2D89* + ID_OUI_FROM_DATABASE=QiiQ Communications Inc. + OUI:0C37DC* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd @@ -51946,6 +52018,9 @@ OUI:104D77* OUI:1056CA* ID_OUI_FROM_DATABASE=Peplink International Ltd. +OUI:105C3B* + ID_OUI_FROM_DATABASE=Perma-Pipe, Inc. + OUI:105CBF* ID_OUI_FROM_DATABASE=DuroByte Inc @@ -52531,6 +52606,9 @@ OUI:18FA6F* OUI:18FC9F* ID_OUI_FROM_DATABASE=Changhe Electronics Co., Ltd. +OUI:18FE34* + ID_OUI_FROM_DATABASE=Espressif Inc. + OUI:1C0656* ID_OUI_FROM_DATABASE=IDY Corporation @@ -53119,6 +53197,9 @@ OUI:24C0B3* OUI:24C86E* ID_OUI_FROM_DATABASE=Chaney Instrument Co. +OUI:24C9A1* + ID_OUI_FROM_DATABASE=Ruckus Wireless + OUI:24C9DE* ID_OUI_FROM_DATABASE=Genoray @@ -53167,6 +53248,9 @@ OUI:24F0FF* OUI:24F2DD* ID_OUI_FROM_DATABASE=Radiant Zemax LLC +OUI:24FD52* + ID_OUI_FROM_DATABASE=Liteon Technology Corporation + OUI:2804E0* ID_OUI_FROM_DATABASE=FERMAX ELECTRONICA S.A.U. @@ -53269,6 +53353,9 @@ OUI:2872C5* OUI:2872F0* ID_OUI_FROM_DATABASE=ATHENA +OUI:287994* + ID_OUI_FROM_DATABASE=Realplay Digital Technology(Shenzhen) Co.,Ltd + OUI:28852D* ID_OUI_FROM_DATABASE=Touch Networks @@ -53479,6 +53566,9 @@ OUI:2C4401* OUI:2C441B* ID_OUI_FROM_DATABASE=Spectrum Medical Limited +OUI:2C44FD* + ID_OUI_FROM_DATABASE=Hewlett Packard + OUI:2C542D* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -53503,6 +53593,9 @@ OUI:2C69BA* OUI:2C6BF5* ID_OUI_FROM_DATABASE=Juniper networks +OUI:2C72C3* + ID_OUI_FROM_DATABASE=Soundmatters + OUI:2C750F* ID_OUI_FROM_DATABASE=Shanghai Dongzhou-Lawton Communication Technology Co. Ltd. @@ -53896,6 +53989,9 @@ OUI:3499D7* OUI:349A0D* ID_OUI_FROM_DATABASE=ZBD Displays Ltd +OUI:349D90* + ID_OUI_FROM_DATABASE=Heinzmann GmbH & CO. KG + OUI:34A183* ID_OUI_FROM_DATABASE=AWare, Inc @@ -53950,6 +54046,9 @@ OUI:34BDF9* OUI:34BDFA* ID_OUI_FROM_DATABASE=Cisco SPVTG +OUI:34BF90* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. + OUI:34C059* ID_OUI_FROM_DATABASE=Apple @@ -54025,6 +54124,9 @@ OUI:380A94* OUI:380DD4* ID_OUI_FROM_DATABASE=Primax Electronics LTD. +OUI:380F4A* + ID_OUI_FROM_DATABASE=Apple + OUI:380FE4* ID_OUI_FROM_DATABASE=Dedicated Network Partners Oy @@ -54128,7 +54230,7 @@ OUI:38A5B6* ID_OUI_FROM_DATABASE=SHENZHEN MEGMEET ELECTRICAL CO.,LTD OUI:38A851* - ID_OUI_FROM_DATABASE=Quickset International Inc + ID_OUI_FROM_DATABASE=Moog, Ing OUI:38A86B* ID_OUI_FROM_DATABASE=Orga BV @@ -54445,6 +54547,9 @@ OUI:4001C6* OUI:40040C* ID_OUI_FROM_DATABASE=A&T +OUI:4007C0* + ID_OUI_FROM_DATABASE=Railtec Systems GmbH + OUI:400E67* ID_OUI_FROM_DATABASE=Tremol Ltd. @@ -54628,6 +54733,9 @@ OUI:40B7F3* OUI:40BA61* ID_OUI_FROM_DATABASE=Arima Communications Corp. +OUI:40BC73* + ID_OUI_FROM_DATABASE=Cronoplast S.L. + OUI:40BC8B* ID_OUI_FROM_DATABASE=itelio GmbH @@ -54676,6 +54784,9 @@ OUI:40F14C* OUI:40F2E9* ID_OUI_FROM_DATABASE=IBM +OUI:40F308* + ID_OUI_FROM_DATABASE=Murata Manufactuaring Co.,Ltd. + OUI:40F407* ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. @@ -55165,6 +55276,9 @@ OUI:4C5499* OUI:4C5585* ID_OUI_FROM_DATABASE=Hamilton Systems +OUI:4C55B8* + ID_OUI_FROM_DATABASE=Turkcell Teknoloji + OUI:4C5DCD* ID_OUI_FROM_DATABASE=Oy Finnish Electric Vehicle Technologies Ltd @@ -55225,6 +55339,9 @@ OUI:4C8D79* OUI:4C8FA5* ID_OUI_FROM_DATABASE=Jastec +OUI:4C9614* + ID_OUI_FROM_DATABASE=Juniper Networks + OUI:4C98EF* ID_OUI_FROM_DATABASE=Zeo @@ -55513,6 +55630,9 @@ OUI:5404A6* OUI:54055F* ID_OUI_FROM_DATABASE=Alcatel Lucent +OUI:54112F* + ID_OUI_FROM_DATABASE=Sulzer Pump Solutions Finland Oy + OUI:54115F* ID_OUI_FROM_DATABASE=Atamo Pty Ltd @@ -55624,6 +55744,9 @@ OUI:54A04F* OUI:54A51B* ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd +OUI:54A619* + ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd + OUI:54A9D4* ID_OUI_FROM_DATABASE=Minibar Systems @@ -55732,6 +55855,9 @@ OUI:5850E6* OUI:5855CA* ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:5856E8* + ID_OUI_FROM_DATABASE=Motorola Mobility Inc + OUI:58570D* ID_OUI_FROM_DATABASE=Danfoss Solar Inverters @@ -56503,6 +56629,9 @@ OUI:648788* OUI:6487D7* ID_OUI_FROM_DATABASE=ADB Broadband Italia +OUI:6488FF* + ID_OUI_FROM_DATABASE=Sichuan Changhong Electric Ltd. + OUI:64995D* ID_OUI_FROM_DATABASE=LGE @@ -56773,6 +56902,9 @@ OUI:6897E8* OUI:689C5E* ID_OUI_FROM_DATABASE=AcSiP Technology Corp. +OUI:689C70* + ID_OUI_FROM_DATABASE=Apple + OUI:68A1B7* ID_OUI_FROM_DATABASE=Honghao Mingchuan Technology (Beijing) CO.,Ltd. @@ -56923,6 +57055,9 @@ OUI:6C3E9C* OUI:6C40C6* ID_OUI_FROM_DATABASE=Nimbus Data Systems, Inc. +OUI:6C416A* + ID_OUI_FROM_DATABASE=Cisco + OUI:6C504D* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -57055,6 +57190,9 @@ OUI:6CE907* OUI:6CE983* ID_OUI_FROM_DATABASE=Gastron Co., LTD. +OUI:6CECA1* + ID_OUI_FROM_DATABASE=SHENZHEN CLOU ELECTRONICS CO. LTD. + OUI:6CF049* ID_OUI_FROM_DATABASE=GIGA-BYTE TECHNOLOGY CO.,LTD. @@ -57265,6 +57403,9 @@ OUI:70B599* OUI:70B921* ID_OUI_FROM_DATABASE=FiberHome Telecommunication Technologies CO.,LTD +OUI:70C6AC* + ID_OUI_FROM_DATABASE=Bosch Automotive Aftermarket + OUI:70CA9B* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -57466,6 +57607,9 @@ OUI:74BE08* OUI:74BFA1* ID_OUI_FROM_DATABASE=HYUNTECK +OUI:74C99A* + ID_OUI_FROM_DATABASE=Ericsson AB + OUI:74CD0C* ID_OUI_FROM_DATABASE=Smith Myers Communications Ltd. @@ -57589,6 +57733,9 @@ OUI:782BCB* OUI:782EEF* ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:78303B* + ID_OUI_FROM_DATABASE=Stephen Technologies Co.,Limited + OUI:7830E1* ID_OUI_FROM_DATABASE=UltraClenz, LLC @@ -57616,6 +57763,9 @@ OUI:7846C4* OUI:78471D* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd +OUI:784B08* + ID_OUI_FROM_DATABASE=f.robotics acquisitions ltd + OUI:78510C* ID_OUI_FROM_DATABASE=LiveU Ltd. @@ -57670,6 +57820,9 @@ OUI:788973* OUI:788C54* ID_OUI_FROM_DATABASE=Enkom Technologies Ltd. +OUI:788DF7* + ID_OUI_FROM_DATABASE=Hitron Technologies. Inc + OUI:78929C* ID_OUI_FROM_DATABASE=Intel Corporate @@ -57796,6 +57949,9 @@ OUI:78EC22* OUI:78EF4C* ID_OUI_FROM_DATABASE=Unetconvergence Co., Ltd. +OUI:78F5E5* + ID_OUI_FROM_DATABASE=BEGA Gantenbrink-Leuchten KG + OUI:78F5FD* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd @@ -57904,6 +58060,9 @@ OUI:7C4FB5* OUI:7C55E7* ID_OUI_FROM_DATABASE=YSI, Inc. +OUI:7C6097* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + OUI:7C6193* ID_OUI_FROM_DATABASE=HTC Corporation @@ -58141,6 +58300,9 @@ OUI:804731* OUI:804971* ID_OUI_FROM_DATABASE=Apple Inc +OUI:804B20* + ID_OUI_FROM_DATABASE=Ventilation Control + OUI:804F58* ID_OUI_FROM_DATABASE=ThinkEco, Inc. @@ -58309,6 +58471,9 @@ OUI:841888* OUI:841B5E* ID_OUI_FROM_DATABASE=NETGEAR +OUI:841E26* + ID_OUI_FROM_DATABASE=KERNEL-I Co.,LTD + OUI:842141* ID_OUI_FROM_DATABASE=Shenzhen Ginwave Technologies Ltd. @@ -58399,6 +58564,9 @@ OUI:847E40* OUI:8482F4* ID_OUI_FROM_DATABASE=Beijing Huasun Unicreate Technology Co., Ltd +OUI:848371* + ID_OUI_FROM_DATABASE=Avaya, Inc + OUI:848506* ID_OUI_FROM_DATABASE=Apple Inc @@ -58471,6 +58639,9 @@ OUI:84DE3D* OUI:84DF0C* ID_OUI_FROM_DATABASE=NET2GRID BV +OUI:84E4D9* + ID_OUI_FROM_DATABASE=Shenzhen NEED technology Ltd. + OUI:84E714* ID_OUI_FROM_DATABASE=Liang Herng Enterprise,Co.Ltd. @@ -58501,6 +58672,9 @@ OUI:881544* OUI:8818AE* ID_OUI_FROM_DATABASE=Tamron Co., Ltd +OUI:881FA1* + ID_OUI_FROM_DATABASE=Apple + OUI:882012* ID_OUI_FROM_DATABASE=LMI Technologies @@ -58708,6 +58882,9 @@ OUI:8C2DAA* OUI:8C3330* ID_OUI_FROM_DATABASE=EmFirst Co., Ltd. +OUI:8C3C07* + ID_OUI_FROM_DATABASE=Skiva Technologies, Inc. + OUI:8C3C4A* ID_OUI_FROM_DATABASE=NAKAYO TELECOMMUNICATIONS,INC. @@ -59212,6 +59389,9 @@ OUI:944696* OUI:944A09* ID_OUI_FROM_DATABASE=BitWise Controls +OUI:945047* + ID_OUI_FROM_DATABASE=Rechnerbetriebsgruppe + OUI:945103* ID_OUI_FROM_DATABASE=Samsung Electronics @@ -59275,6 +59455,9 @@ OUI:94ACCA* OUI:94AE61* ID_OUI_FROM_DATABASE=Alcatel Lucent +OUI:94B8C5* + ID_OUI_FROM_DATABASE=RuggedCom Inc. + OUI:94BA31* ID_OUI_FROM_DATABASE=Visiontec da Amazônia Ltda. @@ -59674,6 +59857,9 @@ OUI:9C7514* OUI:9C77AA* ID_OUI_FROM_DATABASE=NADASNV +OUI:9C79AC* + ID_OUI_FROM_DATABASE=Suntec Software(Shanghai) Co., Ltd. + OUI:9C7BD2* ID_OUI_FROM_DATABASE=NEOLAB Convergence @@ -60421,6 +60607,9 @@ OUI:A8CE90* OUI:A8D0E5* ID_OUI_FROM_DATABASE=Juniper Networks +OUI:A8D236* + ID_OUI_FROM_DATABASE=Lightware Visual Engineering + OUI:A8D3C8* ID_OUI_FROM_DATABASE=Wachendorff Elektronik GmbH & Co. KG @@ -60544,6 +60733,9 @@ OUI:AC4AFE* OUI:AC4BC8* ID_OUI_FROM_DATABASE=Juniper Networks +OUI:AC4E91* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + OUI:AC4FFC* ID_OUI_FROM_DATABASE=SVS-VISTEK GmbH @@ -60775,6 +60967,9 @@ OUI:B046FC* OUI:B0487A* ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO., LTD. +OUI:B050BC* + ID_OUI_FROM_DATABASE=SHENZHEN BASICOM ELECTRONIC CO.,LTD. + OUI:B0518E* ID_OUI_FROM_DATABASE=Holl technology CO.Ltd. @@ -60811,6 +61006,9 @@ OUI:B07994* OUI:B07D62* ID_OUI_FROM_DATABASE=Dipl.-Ing. H. Horstmann GmbH +OUI:B0808C* + ID_OUI_FROM_DATABASE=Laser Light Engines + OUI:B081D8* ID_OUI_FROM_DATABASE=I-sys Corp @@ -61363,6 +61561,9 @@ OUI:B8C716* OUI:B8C75D* ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:B8C855* + ID_OUI_FROM_DATABASE=Shanghai GBCOM Communication Technology Co.,Ltd. + OUI:B8CA3A* ID_OUI_FROM_DATABASE=Dell PCBA Test @@ -61793,7 +61994,7 @@ OUI:C0B8B1* ID_OUI_FROM_DATABASE=BitBox Ltd OUI:C0BAE6* - ID_OUI_FROM_DATABASE=Application Solutions (Safety and Security) Ltd + ID_OUI_FROM_DATABASE=Application Solutions (Electronics and Vision) Ltd OUI:C0BD42* ID_OUI_FROM_DATABASE=ZPA Smart Energy a.s. @@ -61864,6 +62065,9 @@ OUI:C417FE* OUI:C4198B* ID_OUI_FROM_DATABASE=Dominion Voting Systems Corporation +OUI:C419EC* + ID_OUI_FROM_DATABASE=Qualisys AB + OUI:C41ECE* ID_OUI_FROM_DATABASE=HMI Sources Ltd. @@ -61903,8 +62107,11 @@ OUI:C44567* OUI:C44619* ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. +OUI:C44838* + ID_OUI_FROM_DATABASE=Satcom Direct, Inc. + OUI:C44AD0* - ID_OUI_FROM_DATABASE=FIREFLIES RTLS + ID_OUI_FROM_DATABASE=FIREFLIES SYSTEMS OUI:C44B44* ID_OUI_FROM_DATABASE=Omniprint Inc. @@ -61969,6 +62176,9 @@ OUI:C47D4F* OUI:C47DCC* ID_OUI_FROM_DATABASE=Motorola Solutions Inc. +OUI:C47DFE* + ID_OUI_FROM_DATABASE=A.N. Solutions GmbH + OUI:C4823F* ID_OUI_FROM_DATABASE=Fujian Newland Auto-ID Tech. Co,.Ltd. @@ -62005,6 +62215,9 @@ OUI:C4BA99* OUI:C4C19F* ID_OUI_FROM_DATABASE=National Oilwell Varco Instrumentation, Monitoring, and Optimization (NOV IMO) +OUI:C4C755* + ID_OUI_FROM_DATABASE=Beijing HuaqinWorld Technology Co.,Ltd + OUI:C4CAD9* ID_OUI_FROM_DATABASE=Hangzhou H3C Technologies Co., Limited @@ -62251,6 +62464,9 @@ OUI:C8CBB8* OUI:C8CD72* ID_OUI_FROM_DATABASE=SAGEMCOM +OUI:C8D10B* + ID_OUI_FROM_DATABASE=Nokia Corporation + OUI:C8D15E* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd @@ -62290,6 +62506,9 @@ OUI:C8EEA6* OUI:C8EF2E* ID_OUI_FROM_DATABASE=Beijing Gefei Tech. Co., Ltd +OUI:C8F386* + ID_OUI_FROM_DATABASE=Shenzhen Xiaoniao Technology Co.,Ltd + OUI:C8F406* ID_OUI_FROM_DATABASE=Avaya, Inc @@ -62479,6 +62698,9 @@ OUI:CCB888* OUI:CCB8F1* ID_OUI_FROM_DATABASE=EAGLE KINGDOM TECHNOLOGIES LIMITED +OUI:CCBD35* + ID_OUI_FROM_DATABASE=Steinel GmbH + OUI:CCBE71* ID_OUI_FROM_DATABASE=OptiLogix BV @@ -62560,6 +62782,9 @@ OUI:CCFE3C* OUI:D00790* ID_OUI_FROM_DATABASE=Texas Instruments +OUI:D00EA4* + ID_OUI_FROM_DATABASE=Porsche Cars North America + OUI:D0131E* ID_OUI_FROM_DATABASE=Sunrex Technology Corp @@ -62719,6 +62944,9 @@ OUI:D0D286* OUI:D0D3FC* ID_OUI_FROM_DATABASE=Mios, Ltd. +OUI:D0D412* + ID_OUI_FROM_DATABASE=ADB Broadband Italia + OUI:D0D471* ID_OUI_FROM_DATABASE=MVTECH co., Ltd @@ -62878,6 +63106,9 @@ OUI:D464F7* OUI:D466A8* ID_OUI_FROM_DATABASE=Riedo Networks GmbH +OUI:D467E7* + ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. + OUI:D46CBF* ID_OUI_FROM_DATABASE=Goodrich ISR @@ -63127,6 +63358,9 @@ OUI:D85D4C* OUI:D85D84* ID_OUI_FROM_DATABASE=CAx soft GmbH +OUI:D862DB* + ID_OUI_FROM_DATABASE=Eno Inc. + OUI:D867D9* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -63238,6 +63472,9 @@ OUI:D8D5B9* OUI:D8D67E* ID_OUI_FROM_DATABASE=GSK CNC EQUIPMENT CO.,LTD +OUI:D8DCE9* + ID_OUI_FROM_DATABASE=Kunshan Erlab ductless filtration system Co.,Ltd + OUI:D8DF0D* ID_OUI_FROM_DATABASE=beroNet GmbH @@ -63427,6 +63664,9 @@ OUI:DCD2FC* OUI:DCD321* ID_OUI_FROM_DATABASE=HUMAX co.,tld +OUI:DCD52A* + ID_OUI_FROM_DATABASE=Sunny Heart Limited + OUI:DCD87F* ID_OUI_FROM_DATABASE=Shenzhen JoinCyber Telecom Equipment Ltd @@ -63505,6 +63745,9 @@ OUI:E02F6D* OUI:E03005* ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd +OUI:E031D0* + ID_OUI_FROM_DATABASE=SZ Telstar CO., LTD + OUI:E039D7* ID_OUI_FROM_DATABASE=Plexxi, Inc. @@ -63667,6 +63910,9 @@ OUI:E0DADC* OUI:E0DB55* ID_OUI_FROM_DATABASE=Dell Inc +OUI:E0DCA0* + ID_OUI_FROM_DATABASE=Siemens Electrical Apparatus Ltd., Suzhou Chengdu Branch + OUI:E0E751* ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. @@ -63745,6 +63991,9 @@ OUI:E435FB* OUI:E437D7* ID_OUI_FROM_DATABASE=HENRI DEPAEPE S.A.S. +OUI:E438F2* + ID_OUI_FROM_DATABASE=Advantage Controls + OUI:E43FA2* ID_OUI_FROM_DATABASE=Wuxi DSP Technologies Inc. @@ -64081,6 +64330,9 @@ OUI:E8CC32* OUI:E8CD2D* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd +OUI:E8CE06* + ID_OUI_FROM_DATABASE=SkyHawke Technologies, LLC. + OUI:E8D0FA* ID_OUI_FROM_DATABASE=MKS Instruments Deutschland GmbH @@ -64357,6 +64609,9 @@ OUI:F013C3* OUI:F01C13* ID_OUI_FROM_DATABASE=LG Electronics +OUI:F01FAF* + ID_OUI_FROM_DATABASE=Dell Inc PCBA Test + OUI:F0219D* ID_OUI_FROM_DATABASE=Cal-Comp Electronics & Communications Company Ltd. diff --git a/hwdb/20-pci-vendor-product.hwdb b/hwdb/20-pci-vendor-product.hwdb index 90f280e00e..f9664a00ed 100644 --- a/hwdb/20-pci-vendor-product.hwdb +++ b/hwdb/20-pci-vendor-product.hwdb @@ -1592,6 +1592,18 @@ pci:v00001001d00009100* pci:v00001002* ID_VENDOR_FROM_DATABASE=Advanced Micro Devices [AMD] nee ATI +pci:v00001002d00001304* + ID_PRODUCT_FROM_DATABASE=Kaveri + +pci:v00001002d00001305* + ID_PRODUCT_FROM_DATABASE=Kaveri + +pci:v00001002d00001306* + ID_PRODUCT_FROM_DATABASE=Kaveri + +pci:v00001002d00001307* + ID_PRODUCT_FROM_DATABASE=Kaveri + pci:v00001002d00001314* ID_PRODUCT_FROM_DATABASE=Wrestler HDMI Audio [Radeon HD 6250/6310] @@ -1605,67 +1617,55 @@ pci:v00001002d00001714sv0000103Csd0000168B* ID_PRODUCT_FROM_DATABASE=ProBook 4535s pci:v00001002d00003150* - ID_PRODUCT_FROM_DATABASE=M24 1P [Radeon Mobility X600] + ID_PRODUCT_FROM_DATABASE=RV380/M24 [Mobility Radeon X600] pci:v00001002d00003150sv0000103Csd00000934* ID_PRODUCT_FROM_DATABASE=nx8220 pci:v00001002d00003151* - ID_PRODUCT_FROM_DATABASE=M24 [FireMV 2400] + ID_PRODUCT_FROM_DATABASE=RV380 [FireMV 2400] pci:v00001002d00003152* - ID_PRODUCT_FROM_DATABASE=RV370 [Mobility Radeon X300] + ID_PRODUCT_FROM_DATABASE=RV370/M22 [Mobility Radeon X300] pci:v00001002d00003154* - ID_PRODUCT_FROM_DATABASE=M24GL [Mobility FireGL V3200] + ID_PRODUCT_FROM_DATABASE=RV380/M24 GL [Mobility FireGL V3200] pci:v00001002d00003155* ID_PRODUCT_FROM_DATABASE=RV380 [FireMV 2400] pci:v00001002d00003171* - ID_PRODUCT_FROM_DATABASE=M24 [FireMV 2400] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV380 [FireMV 2400] (Secondary) pci:v00001002d00003E50* - ID_PRODUCT_FROM_DATABASE=RV380 0x3e50 [Radeon X600] + ID_PRODUCT_FROM_DATABASE=RV380 [Radeon X600] pci:v00001002d00003E54* - ID_PRODUCT_FROM_DATABASE=RV380 0x3e54 [FireGL V3200] + ID_PRODUCT_FROM_DATABASE=RV380 [FireGL V3200] pci:v00001002d00003E70* ID_PRODUCT_FROM_DATABASE=RV380 [Radeon X600] (Secondary) pci:v00001002d00004136* - ID_PRODUCT_FROM_DATABASE=RS100 [Radeon IGP320(M)] + ID_PRODUCT_FROM_DATABASE=RS100 [Mobility IGP 320M] pci:v00001002d00004137* - ID_PRODUCT_FROM_DATABASE=RS200 [Radeon IGP330/340/350] + ID_PRODUCT_FROM_DATABASE=RS200 [Radeon IGP 340] pci:v00001002d00004144* - ID_PRODUCT_FROM_DATABASE=R300 AD [Radeon 9500 Pro] - -pci:v00001002d00004145* - ID_PRODUCT_FROM_DATABASE=R300 AE [Radeon 9700 Pro] + ID_PRODUCT_FROM_DATABASE=R300 AD [Radeon 9500] pci:v00001002d00004146* - ID_PRODUCT_FROM_DATABASE=R300 AF [Radeon 9700 Pro] + ID_PRODUCT_FROM_DATABASE=R300 AF [Radeon 9700 PRO] pci:v00001002d00004147* - ID_PRODUCT_FROM_DATABASE=R300 AG [FireGL Z1/X1] + ID_PRODUCT_FROM_DATABASE=R300 AG [FireGL Z1] pci:v00001002d00004148* - ID_PRODUCT_FROM_DATABASE=R350 AH [Radeon 9800] - -pci:v00001002d00004149* - ID_PRODUCT_FROM_DATABASE=R350 AI [Radeon 9800] - -pci:v00001002d0000414A* - ID_PRODUCT_FROM_DATABASE=R350 AJ [Radeon 9800] - -pci:v00001002d0000414B* - ID_PRODUCT_FROM_DATABASE=R350 AK [FireGL X2] + ID_PRODUCT_FROM_DATABASE=R350 AH [Radeon 9800/9800 SE] pci:v00001002d00004150* - ID_PRODUCT_FROM_DATABASE=RV350 AP [Radeon 9600] + ID_PRODUCT_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] pci:v00001002d00004150sv00001002sd00000002* ID_PRODUCT_FROM_DATABASE=R9600 Pro primary (Asus OEM for HP) @@ -1698,13 +1698,13 @@ pci:v00001002d00004150sv000018BCsd00000101* ID_PRODUCT_FROM_DATABASE=GC-R9600PRO (Primary) pci:v00001002d00004151* - ID_PRODUCT_FROM_DATABASE=RV350 AQ [Radeon 9600] + ID_PRODUCT_FROM_DATABASE=RV350 [Radeon 9600 Series] pci:v00001002d00004151sv00001043sd0000C004* ID_PRODUCT_FROM_DATABASE=A9600SE pci:v00001002d00004152* - ID_PRODUCT_FROM_DATABASE=RV350 AR [Radeon 9600] + ID_PRODUCT_FROM_DATABASE=RV360 [Radeon 9600/X1050 Series] pci:v00001002d00004152sv00001002sd00000002* ID_PRODUCT_FROM_DATABASE=Radeon 9600XT @@ -1740,10 +1740,7 @@ pci:v00001002d00004154* ID_PRODUCT_FROM_DATABASE=RV350 AT [FireGL T2] pci:v00001002d00004155* - ID_PRODUCT_FROM_DATABASE=RV350 AU [FireGL T2] - -pci:v00001002d00004156* - ID_PRODUCT_FROM_DATABASE=RV350 AV [FireGL T2] + ID_PRODUCT_FROM_DATABASE=RV350 [Radeon 9600] pci:v00001002d00004157* ID_PRODUCT_FROM_DATABASE=RV350 AW [FireGL T2] @@ -1752,19 +1749,19 @@ pci:v00001002d00004158* ID_PRODUCT_FROM_DATABASE=68800AX [Mach32] pci:v00001002d00004164* - ID_PRODUCT_FROM_DATABASE=R300 AD [Radeon 9500 Pro] (Secondary) + ID_PRODUCT_FROM_DATABASE=R300 AD [Radeon 9500 PRO] (Secondary) pci:v00001002d00004165* - ID_PRODUCT_FROM_DATABASE=R300 AE [Radeon 9700 Pro] (Secondary) + ID_PRODUCT_FROM_DATABASE=R300 AE [Radeon 9700 PRO] (Secondary) pci:v00001002d00004166* - ID_PRODUCT_FROM_DATABASE=R300 AF [Radeon 9700 Pro] (Secondary) + ID_PRODUCT_FROM_DATABASE=R300 AF [Radeon 9700 PRO] (Secondary) pci:v00001002d00004168* - ID_PRODUCT_FROM_DATABASE=R350 [Radeon 9800] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV350 [Radeon 9800 SE] (Secondary) pci:v00001002d00004170* - ID_PRODUCT_FROM_DATABASE=RV350 AP [Radeon 9600] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (Secondary) pci:v00001002d00004170sv00001002sd00000003* ID_PRODUCT_FROM_DATABASE=R9600 Pro secondary (Asus OEM for HP) @@ -1794,7 +1791,7 @@ pci:v00001002d00004171sv00001043sd0000C005* ID_PRODUCT_FROM_DATABASE=A9600SE (Secondary) pci:v00001002d00004172* - ID_PRODUCT_FROM_DATABASE=RV350 AR [Radeon 9600] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV350 [Radeon 9600/X1050 Series] (Secondary) pci:v00001002d00004172sv00001002sd00000003* ID_PRODUCT_FROM_DATABASE=Radeon 9600XT (Secondary) @@ -1820,20 +1817,14 @@ pci:v00001002d00004173* pci:v00001002d00004173sv00001043sd0000010D* ID_PRODUCT_FROM_DATABASE=A9550GE/TD (Secondary) -pci:v00001002d00004237* - ID_PRODUCT_FROM_DATABASE=RS250 [Radeon Mobility 7000 IGP] - pci:v00001002d00004242* - ID_PRODUCT_FROM_DATABASE=R200 BB [Radeon All in Wonder 8500DV] + ID_PRODUCT_FROM_DATABASE=R200 [All-In-Wonder Radeon 8500 DV] pci:v00001002d00004242sv00001002sd000002AA* ID_PRODUCT_FROM_DATABASE=Radeon 8500 AIW DV Edition -pci:v00001002d00004243* - ID_PRODUCT_FROM_DATABASE=R200 BC [Radeon All in Wonder 8500] - pci:v00001002d00004336* - ID_PRODUCT_FROM_DATABASE=RS100 [Radeon IGP320M] + ID_PRODUCT_FROM_DATABASE=RS100 [Radeon IGP 320M] pci:v00001002d00004336sv00001002sd00004336* ID_PRODUCT_FROM_DATABASE=Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M) @@ -1845,7 +1836,7 @@ pci:v00001002d00004336sv0000161Fsd00002029* ID_PRODUCT_FROM_DATABASE=eMachines M5312 builtin Video pci:v00001002d00004337* - ID_PRODUCT_FROM_DATABASE=RS200 [Radeon IGP330M/340M/350M] + ID_PRODUCT_FROM_DATABASE=RS200M [Radeon IGP 330M/340M/345M/350M] pci:v00001002d00004337sv00001014sd0000053A* ID_PRODUCT_FROM_DATABASE=ThinkPad R40e @@ -1878,7 +1869,7 @@ pci:v00001002d00004353* ID_PRODUCT_FROM_DATABASE=SMBus pci:v00001002d00004354* - ID_PRODUCT_FROM_DATABASE=215CT [Mach64 CT] + ID_PRODUCT_FROM_DATABASE=215CT [Mach64 CT PCI] pci:v00001002d00004358* ID_PRODUCT_FROM_DATABASE=210888CX [Mach64 CX] @@ -2439,7 +2430,7 @@ pci:v00001002d000043A3* ID_PRODUCT_FROM_DATABASE=SB900 PCI to PCI bridge (PCIE port 3) pci:v00001002d00004437* - ID_PRODUCT_FROM_DATABASE=RS250 [Radeon Mobility 7000 IGP] + ID_PRODUCT_FROM_DATABASE=RS250 [Mobility Radeon 7000 IGP] pci:v00001002d00004554* ID_PRODUCT_FROM_DATABASE=210888ET [Mach64 ET] @@ -2448,7 +2439,7 @@ pci:v00001002d00004654* ID_PRODUCT_FROM_DATABASE=Mach64 VT pci:v00001002d00004742* - ID_PRODUCT_FROM_DATABASE=3D Rage Pro AGP 1X/2X + ID_PRODUCT_FROM_DATABASE=3D Rage PRO AGP 2X pci:v00001002d00004742sv00001002sd00000040* ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo AGP 2X @@ -2496,7 +2487,7 @@ pci:v00001002d00004742sv00008086sd0000464A* ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo AGP 2X pci:v00001002d00004744* - ID_PRODUCT_FROM_DATABASE=3D Rage Pro AGP 1X + ID_PRODUCT_FROM_DATABASE=3D Rage PRO AGP 1X pci:v00001002d00004744sv00001002sd00004744* ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo AGP @@ -2504,11 +2495,8 @@ pci:v00001002d00004744sv00001002sd00004744* pci:v00001002d00004744sv00008086sd00004D55* ID_PRODUCT_FROM_DATABASE=Rage 3D Pro AGP 1X [Intel MU440EX] -pci:v00001002d00004747* - ID_PRODUCT_FROM_DATABASE=3D Rage Pro - pci:v00001002d00004749* - ID_PRODUCT_FROM_DATABASE=3D Rage Pro + ID_PRODUCT_FROM_DATABASE=3D Rage PRO PCI pci:v00001002d00004749sv00001002sd00000061* ID_PRODUCT_FROM_DATABASE=Rage Pro AIW @@ -2516,9 +2504,6 @@ pci:v00001002d00004749sv00001002sd00000061* pci:v00001002d00004749sv00001002sd00000062* ID_PRODUCT_FROM_DATABASE=Rage Pro AIW -pci:v00001002d0000474C* - ID_PRODUCT_FROM_DATABASE=Rage XC - pci:v00001002d0000474D* ID_PRODUCT_FROM_DATABASE=Rage XL AGP 2X @@ -2556,7 +2541,7 @@ pci:v00001002d0000474Fsv00001002sd0000474F* ID_PRODUCT_FROM_DATABASE=Rage XL pci:v00001002d00004750* - ID_PRODUCT_FROM_DATABASE=3D Rage Pro 215GP + ID_PRODUCT_FROM_DATABASE=3D Rage Pro PCI pci:v00001002d00004750sv00001002sd00000040* ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo @@ -2573,11 +2558,8 @@ pci:v00001002d00004750sv00001002sd00000084* pci:v00001002d00004750sv00001002sd00004750* ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo -pci:v00001002d00004751* - ID_PRODUCT_FROM_DATABASE=3D Rage Pro 215GQ - pci:v00001002d00004752* - ID_PRODUCT_FROM_DATABASE=Rage XL + ID_PRODUCT_FROM_DATABASE=Rage XL PCI pci:v00001002d00004752sv00000E11sd0000001E* ID_PRODUCT_FROM_DATABASE=Proliant Rage XL @@ -2624,6 +2606,9 @@ pci:v00001002d00004752sv0000107Bsd00006400* pci:v00001002d00004752sv00001734sd0000007A* ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX series onboard VGA +pci:v00001002d00004752sv00001734sd00001073* + ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + pci:v00001002d00004752sv00008086sd00003411* ID_PRODUCT_FROM_DATABASE=SDS2 Mainboard @@ -2640,13 +2625,13 @@ pci:v00001002d00004753sv00001002sd00004753* ID_PRODUCT_FROM_DATABASE=Rage XC pci:v00001002d00004754* - ID_PRODUCT_FROM_DATABASE=3D Rage I/II 215GT [Mach64 GT] + ID_PRODUCT_FROM_DATABASE=3D Rage II/II+ PCI [Mach64 GT] pci:v00001002d00004755* - ID_PRODUCT_FROM_DATABASE=3D Rage II+ 215GTB [Mach64 GTB] + ID_PRODUCT_FROM_DATABASE=3D Rage II+ PCI [Mach64 GTB] pci:v00001002d00004756* - ID_PRODUCT_FROM_DATABASE=3D Rage IIC 215IIC [Mach64 GT IIC] + ID_PRODUCT_FROM_DATABASE=3D Rage IIC PCI [Mach64 GT IIC] pci:v00001002d00004756sv00001002sd00004756* ID_PRODUCT_FROM_DATABASE=Rage IIC @@ -2673,10 +2658,10 @@ pci:v00001002d00004757sv00001028sd0000C082* ID_PRODUCT_FROM_DATABASE=Rage 3D IIC pci:v00001002d00004758* - ID_PRODUCT_FROM_DATABASE=210888GX [Mach64 GX] + ID_PRODUCT_FROM_DATABASE=210888GX [Mach64 GX PCI] pci:v00001002d00004759* - ID_PRODUCT_FROM_DATABASE=3D Rage IIC + ID_PRODUCT_FROM_DATABASE=3D Rage IIC PCI pci:v00001002d0000475A* ID_PRODUCT_FROM_DATABASE=3D Rage IIC AGP @@ -2690,14 +2675,8 @@ pci:v00001002d0000475Asv00001002sd00000087* pci:v00001002d0000475Asv00001002sd0000475A* ID_PRODUCT_FROM_DATABASE=Rage IIC AGP -pci:v00001002d00004964* - ID_PRODUCT_FROM_DATABASE=RV250 Id [Radeon 9000] - -pci:v00001002d00004965* - ID_PRODUCT_FROM_DATABASE=RV250 Ie [Radeon 9000] - pci:v00001002d00004966* - ID_PRODUCT_FROM_DATABASE=R250 If [Radeon 9000] + ID_PRODUCT_FROM_DATABASE=RV250 [Radeon 9000 Series] pci:v00001002d00004966sv000010F1sd00000002* ID_PRODUCT_FROM_DATABASE=RV250 If [Tachyon G9000 PRO] @@ -2723,41 +2702,38 @@ pci:v00001002d00004966sv000017AFsd00002005* pci:v00001002d00004966sv000017AFsd00002006* ID_PRODUCT_FROM_DATABASE=RV250 If [Excalibur Radeon 9000] -pci:v00001002d00004967* - ID_PRODUCT_FROM_DATABASE=RV250 Ig [Radeon 9000] - pci:v00001002d0000496E* ID_PRODUCT_FROM_DATABASE=RV250 [Radeon 9000] (Secondary) -pci:v00001002d00004A48* - ID_PRODUCT_FROM_DATABASE=R420 JH [Radeon X800] - pci:v00001002d00004A49* - ID_PRODUCT_FROM_DATABASE=R420 JI [Radeon X800PRO] + ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 PRO/GTO AGP] + +pci:v00001002d00004A49sv0000174Bsd00002620* + ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 GTO AGP] pci:v00001002d00004A4A* - ID_PRODUCT_FROM_DATABASE=R420 JJ [Radeon X800SE] + ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 GT AGP] pci:v00001002d00004A4B* - ID_PRODUCT_FROM_DATABASE=R420 JK [Radeon X800] - -pci:v00001002d00004A4C* - ID_PRODUCT_FROM_DATABASE=R420 JL [Radeon X800] + ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 AGP Series] pci:v00001002d00004A4D* ID_PRODUCT_FROM_DATABASE=R420 JM [FireGL X3] pci:v00001002d00004A4E* - ID_PRODUCT_FROM_DATABASE=R420 JN [Mobility Radeon 9800] + ID_PRODUCT_FROM_DATABASE=RV420/M18 [Mobility Radeon 9800] pci:v00001002d00004A4F* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 AGP] + ID_PRODUCT_FROM_DATABASE=R420 [Radeon X850 AGP] pci:v00001002d00004A50* - ID_PRODUCT_FROM_DATABASE=R420 JP [Radeon X800XT] + ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 XT Platinum Edition AGP] pci:v00001002d00004A54* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 VE] + ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 VE AGP] + +pci:v00001002d00004A54sv00001002sd00004422* + ID_PRODUCT_FROM_DATABASE=All-In-Wonder X800 VE AGP pci:v00001002d00004A69* ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 PRO/GTO] (Secondary) @@ -2766,40 +2742,34 @@ pci:v00001002d00004A6A* ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800] (Secondary) pci:v00001002d00004A6B* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800] (Secondary) + ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 XT AGP] (Secondary) pci:v00001002d00004A70* - ID_PRODUCT_FROM_DATABASE=R420 [X800XT-PE] (Secondary) + ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 XT Platinum Edition AGP] (Secondary) pci:v00001002d00004A74* ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 VE] (Secondary) -pci:v00001002d00004B48* - ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850 PCIe] - pci:v00001002d00004B49* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850XT] - -pci:v00001002d00004B4A* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850SE AGP] + ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850 XT AGP] pci:v00001002d00004B4B* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850Pro] + ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850 PRO AGP] pci:v00001002d00004B4C* - ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850XT-PE] + ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850 XT Platinum Edition AGP] pci:v00001002d00004B69* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850XT] (Secondary) + ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850 XT AGP] (Secondary) pci:v00001002d00004B6B* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850Pro] (Secondary) + ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850 PRO AGP] (Secondary) pci:v00001002d00004B6C* - ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850XT-PE] (Secondary) + ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850 XT Platinum Edition AGP] (Secondary) pci:v00001002d00004C42* - ID_PRODUCT_FROM_DATABASE=3D Rage LT Pro AGP-133 + ID_PRODUCT_FROM_DATABASE=3D Rage LT PRO AGP 2X pci:v00001002d00004C42sv00000E11sd0000B0E7* ID_PRODUCT_FROM_DATABASE=Rage LT Pro (Compaq Presario 5240) @@ -2825,14 +2795,8 @@ pci:v00001002d00004C42sv00001002sd00008001* pci:v00001002d00004C42sv00001028sd00000085* ID_PRODUCT_FROM_DATABASE=Rage 3D LT Pro -pci:v00001002d00004C44* - ID_PRODUCT_FROM_DATABASE=3D Rage LT Pro AGP-66 - -pci:v00001002d00004C45* - ID_PRODUCT_FROM_DATABASE=Rage Mobility M3 AGP - pci:v00001002d00004C46* - ID_PRODUCT_FROM_DATABASE=Rage Mobility M3 AGP 2x + ID_PRODUCT_FROM_DATABASE=Rage Mobility 128 AGP 2X/Mobility M3 pci:v00001002d00004C46sv00001002sd00000155* ID_PRODUCT_FROM_DATABASE=IBM Thinkpad A22p @@ -2844,10 +2808,10 @@ pci:v00001002d00004C46sv00001028sd000000B1* ID_PRODUCT_FROM_DATABASE=Latitude C600 pci:v00001002d00004C47* - ID_PRODUCT_FROM_DATABASE=3D Rage LT-G 215LG + ID_PRODUCT_FROM_DATABASE=3D Rage IIC PCI/Mobility Radeon 7500/7500C pci:v00001002d00004C49* - ID_PRODUCT_FROM_DATABASE=3D Rage LT Pro + ID_PRODUCT_FROM_DATABASE=3D Rage LT PRO PCI pci:v00001002d00004C49sv00001002sd00000004* ID_PRODUCT_FROM_DATABASE=Rage LT Pro @@ -2862,7 +2826,7 @@ pci:v00001002d00004C49sv00001002sd00004C49* ID_PRODUCT_FROM_DATABASE=Rage LT Pro pci:v00001002d00004C4D* - ID_PRODUCT_FROM_DATABASE=Rage Mobility P/M AGP 2x + ID_PRODUCT_FROM_DATABASE=Rage Mobility AGP 2x Series pci:v00001002d00004C4Dsv00000E11sd0000B111* ID_PRODUCT_FROM_DATABASE=Armada M700 @@ -2888,32 +2852,23 @@ pci:v00001002d00004C4Dsv00001179sd0000FF00* pci:v00001002d00004C4Dsv000013BDsd00001019* ID_PRODUCT_FROM_DATABASE=PC-AR10 -pci:v00001002d00004C4E* - ID_PRODUCT_FROM_DATABASE=Rage Mobility L AGP 2x - pci:v00001002d00004C50* - ID_PRODUCT_FROM_DATABASE=3D Rage LT Pro + ID_PRODUCT_FROM_DATABASE=3D Rage LT PRO PCI pci:v00001002d00004C50sv00001002sd00004C50* ID_PRODUCT_FROM_DATABASE=Rage LT Pro -pci:v00001002d00004C51* - ID_PRODUCT_FROM_DATABASE=3D Rage LT Pro - pci:v00001002d00004C52* - ID_PRODUCT_FROM_DATABASE=Rage Mobility P/M + ID_PRODUCT_FROM_DATABASE=Rage Mobility-M1 PCI pci:v00001002d00004C52sv00001033sd00008112* ID_PRODUCT_FROM_DATABASE=Versa Note VXi -pci:v00001002d00004C53* - ID_PRODUCT_FROM_DATABASE=Rage Mobility L - pci:v00001002d00004C54* ID_PRODUCT_FROM_DATABASE=264LT [Mach64 LT] pci:v00001002d00004C57* - ID_PRODUCT_FROM_DATABASE=RV200 [Mobility Radeon 7500] + ID_PRODUCT_FROM_DATABASE=RV200/M7 [Mobility Radeon 7500] pci:v00001002d00004C57sv00001014sd00000517* ID_PRODUCT_FROM_DATABASE=ThinkPad T30 @@ -2934,10 +2889,10 @@ pci:v00001002d00004C57sv0000144Dsd0000C006* ID_PRODUCT_FROM_DATABASE=Radeon Mobility M7 LW in vpr Matrix 170B4 pci:v00001002d00004C58* - ID_PRODUCT_FROM_DATABASE=Radeon RV200 LX [Mobility FireGL 7800 M7] + ID_PRODUCT_FROM_DATABASE=RV200/M7 [Mobility FireGL 7800] pci:v00001002d00004C59* - ID_PRODUCT_FROM_DATABASE=RV100 LY [Mobility Radeon 7000] + ID_PRODUCT_FROM_DATABASE=RV100/M6 [Rage/Radeon Mobility Series] pci:v00001002d00004C59sv00000E11sd0000B111* ID_PRODUCT_FROM_DATABASE=Evo N600c @@ -2960,32 +2915,17 @@ pci:v00001002d00004C59sv0000104Dsd00008140* pci:v00001002d00004C59sv00001509sd00001930* ID_PRODUCT_FROM_DATABASE=Medion MD9703 -pci:v00001002d00004C5A* - ID_PRODUCT_FROM_DATABASE=RV100 LZ [Mobility Radeon 7000] - -pci:v00001002d00004C64* - ID_PRODUCT_FROM_DATABASE=Radeon RV250 Ld [Radeon Mobility 9000 M9] - -pci:v00001002d00004C65* - ID_PRODUCT_FROM_DATABASE=Radeon RV250 Le [Radeon Mobility 9000 M9] - pci:v00001002d00004C66* - ID_PRODUCT_FROM_DATABASE=Radeon RV250 [Mobility FireGL 9000] + ID_PRODUCT_FROM_DATABASE=RV250/M9 [Mobility FireGL 9000/Radeon 9000] pci:v00001002d00004C66sv00001014sd0000054D* ID_PRODUCT_FROM_DATABASE=ThinkPad T41 -pci:v00001002d00004C67* - ID_PRODUCT_FROM_DATABASE=Radeon RV250 Lg [Radeon Mobility 9000 M9] - pci:v00001002d00004C6E* - ID_PRODUCT_FROM_DATABASE=Radeon RV250 Ln [Radeon Mobility 9000 M9] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV250/M9 [Mobility Radeon 9000] (Secondary) pci:v00001002d00004D46* - ID_PRODUCT_FROM_DATABASE=Rage Mobility M4 AGP - -pci:v00001002d00004D4C* - ID_PRODUCT_FROM_DATABASE=Rage Mobility M4 AGP + ID_PRODUCT_FROM_DATABASE=Mobility 128 AGP 4X/Mobility M4 pci:v00001002d00004D52* ID_PRODUCT_FROM_DATABASE=Theater 550 PRO PCI [ATI TV Wonder 550] @@ -2994,7 +2934,7 @@ pci:v00001002d00004D53* ID_PRODUCT_FROM_DATABASE=Theater 550 PRO PCIe pci:v00001002d00004E44* - ID_PRODUCT_FROM_DATABASE=Radeon R300 ND [Radeon 9700 Pro] + ID_PRODUCT_FROM_DATABASE=R300 [Radeon 9700/9700 PRO] pci:v00001002d00004E44sv00001002sd0000515E* ID_PRODUCT_FROM_DATABASE=Radeon ES1000 @@ -3003,7 +2943,7 @@ pci:v00001002d00004E44sv00001002sd00005965* ID_PRODUCT_FROM_DATABASE=Radeon ES1000 pci:v00001002d00004E45* - ID_PRODUCT_FROM_DATABASE=Radeon R300 NE [Radeon 9500 Pro] + ID_PRODUCT_FROM_DATABASE=R300 [Radeon 9500 PRO/9700] pci:v00001002d00004E45sv00001002sd00000002* ID_PRODUCT_FROM_DATABASE=Radeon R300 NE [Radeon 9500 Pro] @@ -3015,25 +2955,25 @@ pci:v00001002d00004E46* ID_PRODUCT_FROM_DATABASE=R300 NF [Radeon 9600 TX] pci:v00001002d00004E47* - ID_PRODUCT_FROM_DATABASE=Radeon R300 NG [FireGL X1] + ID_PRODUCT_FROM_DATABASE=R300 [FireGL X1] pci:v00001002d00004E48* - ID_PRODUCT_FROM_DATABASE=Radeon R350 [Radeon 9800 Pro] + ID_PRODUCT_FROM_DATABASE=R350 [Radeon 9800 Series] pci:v00001002d00004E49* - ID_PRODUCT_FROM_DATABASE=Radeon R350 [Radeon 9800] + ID_PRODUCT_FROM_DATABASE=R350 [Radeon 9800] pci:v00001002d00004E4A* - ID_PRODUCT_FROM_DATABASE=R360 NJ [Radeon 9800 XT] + ID_PRODUCT_FROM_DATABASE=R360 [Radeon 9800 XXL/XT] pci:v00001002d00004E4Asv00001002sd00004E4A* ID_PRODUCT_FROM_DATABASE=R360 [Radeon 9800 XT] pci:v00001002d00004E4B* - ID_PRODUCT_FROM_DATABASE=R350 NK [FireGL X2] + ID_PRODUCT_FROM_DATABASE=R350 [FireGL X2 AGP Pro] pci:v00001002d00004E50* - ID_PRODUCT_FROM_DATABASE=RV350 [Mobility Radeon 9600 M10] + ID_PRODUCT_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600 PRO Turbo] pci:v00001002d00004E50sv00001025sd0000005A* ID_PRODUCT_FROM_DATABASE=TravelMate 290 @@ -3054,28 +2994,25 @@ pci:v00001002d00004E50sv00001734sd00001055* ID_PRODUCT_FROM_DATABASE=Amilo M1420W pci:v00001002d00004E51* - ID_PRODUCT_FROM_DATABASE=RV350 NQ [Mobility Radeon 9600] + ID_PRODUCT_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] pci:v00001002d00004E52* - ID_PRODUCT_FROM_DATABASE=RV350 [Mobility Radeon 9600 M10] + ID_PRODUCT_FROM_DATABASE=RV350/M10 [Mobility Radeon 9500/9700 SE] pci:v00001002d00004E52sv0000144Dsd0000C00C* ID_PRODUCT_FROM_DATABASE=P35 notebook -pci:v00001002d00004E53* - ID_PRODUCT_FROM_DATABASE=RV350 NS [Mobility Radeon 9600] - pci:v00001002d00004E54* - ID_PRODUCT_FROM_DATABASE=M10 NT [FireGL Mobility T2] + ID_PRODUCT_FROM_DATABASE=RV350/M10 [Mobility FireGL T2] pci:v00001002d00004E56* - ID_PRODUCT_FROM_DATABASE=M11 NV [FireGL Mobility T2e] + ID_PRODUCT_FROM_DATABASE=RV360/M12 [Mobility Radeon 9550] pci:v00001002d00004E64* - ID_PRODUCT_FROM_DATABASE=Radeon R300 [Radeon 9700 Pro] (Secondary) + ID_PRODUCT_FROM_DATABASE=R300 [Radeon 9700 PRO] (Secondary) pci:v00001002d00004E65* - ID_PRODUCT_FROM_DATABASE=Radeon R300 [Radeon 9500 Pro] (Secondary) + ID_PRODUCT_FROM_DATABASE=R300 [Radeon 9500 PRO] (Secondary) pci:v00001002d00004E65sv00001002sd00000003* ID_PRODUCT_FROM_DATABASE=Radeon R300 NE [Radeon 9500 Pro] @@ -3087,13 +3024,13 @@ pci:v00001002d00004E66* ID_PRODUCT_FROM_DATABASE=RV350 NF [Radeon 9600] (Secondary) pci:v00001002d00004E67* - ID_PRODUCT_FROM_DATABASE=Radeon R300 [FireGL X1] (Secondary) + ID_PRODUCT_FROM_DATABASE=R300 [FireGL X1] (Secondary) pci:v00001002d00004E68* - ID_PRODUCT_FROM_DATABASE=Radeon R350 [Radeon 9800 Pro] (Secondary) + ID_PRODUCT_FROM_DATABASE=R350 [Radeon 9800 PRO] (Secondary) pci:v00001002d00004E69* - ID_PRODUCT_FROM_DATABASE=Radeon R350 [Radeon 9800] (Secondary) + ID_PRODUCT_FROM_DATABASE=R350 [Radeon 9800] (Secondary) pci:v00001002d00004E6A* ID_PRODUCT_FROM_DATABASE=RV350 NJ [Radeon 9800 XT] (Secondary) @@ -3105,25 +3042,16 @@ pci:v00001002d00004E6Asv00001002sd00004E71* ID_PRODUCT_FROM_DATABASE=M10 NQ [Radeon Mobility 9600] pci:v00001002d00004E71* - ID_PRODUCT_FROM_DATABASE=M10 NQ [Radeon Mobility 9600] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600] (Secondary) pci:v00001002d00004F72* ID_PRODUCT_FROM_DATABASE=RV250 [Radeon 9000 Series] pci:v00001002d00004F73* - ID_PRODUCT_FROM_DATABASE=Radeon RV250 [Radeon 9000 Series] (Secondary) - -pci:v00001002d00005041* - ID_PRODUCT_FROM_DATABASE=Rage 128 PA/PRO - -pci:v00001002d00005042* - ID_PRODUCT_FROM_DATABASE=Rage 128 PB/PRO AGP 2x - -pci:v00001002d00005043* - ID_PRODUCT_FROM_DATABASE=Rage 128 PC/PRO AGP 4x + ID_PRODUCT_FROM_DATABASE=RV250 [Radeon 9000 Series] (Secondary) pci:v00001002d00005044* - ID_PRODUCT_FROM_DATABASE=Rage 128 PD/PRO TMDS + ID_PRODUCT_FROM_DATABASE=All-In-Wonder 128 PCI pci:v00001002d00005044sv00001002sd00000028* ID_PRODUCT_FROM_DATABASE=Rage 128 AIW @@ -3131,9 +3059,6 @@ pci:v00001002d00005044sv00001002sd00000028* pci:v00001002d00005044sv00001002sd00000029* ID_PRODUCT_FROM_DATABASE=Rage 128 AIW -pci:v00001002d00005045* - ID_PRODUCT_FROM_DATABASE=Rage 128 PE/PRO AGP 2x TMDS - pci:v00001002d00005046* ID_PRODUCT_FROM_DATABASE=Rage 128 PF/PRO AGP 4x TMDS @@ -3164,65 +3089,17 @@ pci:v00001002d00005046sv00001002sd00002000* pci:v00001002d00005046sv00001002sd00002001* ID_PRODUCT_FROM_DATABASE=Rage Fury MAXX AGP 4x (TMDS) (Extra device?!) -pci:v00001002d00005047* - ID_PRODUCT_FROM_DATABASE=Rage 128 PG/PRO - -pci:v00001002d00005048* - ID_PRODUCT_FROM_DATABASE=Rage 128 PH/PRO AGP 2x - -pci:v00001002d00005049* - ID_PRODUCT_FROM_DATABASE=Rage 128 PI/PRO AGP 4x - -pci:v00001002d0000504A* - ID_PRODUCT_FROM_DATABASE=Rage 128 PJ/PRO TMDS - -pci:v00001002d0000504B* - ID_PRODUCT_FROM_DATABASE=Rage 128 PK/PRO AGP 2x TMDS - -pci:v00001002d0000504C* - ID_PRODUCT_FROM_DATABASE=Rage 128 PL/PRO AGP 4x TMDS - -pci:v00001002d0000504D* - ID_PRODUCT_FROM_DATABASE=Rage 128 PM/PRO - -pci:v00001002d0000504E* - ID_PRODUCT_FROM_DATABASE=Rage 128 PN/PRO AGP 2x - -pci:v00001002d0000504F* - ID_PRODUCT_FROM_DATABASE=Rage 128 PO/PRO AGP 4x - pci:v00001002d00005050* - ID_PRODUCT_FROM_DATABASE=Rage 128 PP/PRO TMDS [Xpert 128] + ID_PRODUCT_FROM_DATABASE=Rage128 [Xpert 128 PCI] pci:v00001002d00005050sv00001002sd00000008* ID_PRODUCT_FROM_DATABASE=Xpert 128 -pci:v00001002d00005051* - ID_PRODUCT_FROM_DATABASE=Rage 128 PQ/PRO AGP 2x TMDS - pci:v00001002d00005052* - ID_PRODUCT_FROM_DATABASE=Rage 128 PR/PRO AGP 4x TMDS - -pci:v00001002d00005053* - ID_PRODUCT_FROM_DATABASE=Rage 128 PS/PRO - -pci:v00001002d00005054* - ID_PRODUCT_FROM_DATABASE=Rage 128 PT/PRO AGP 2x - -pci:v00001002d00005055* - ID_PRODUCT_FROM_DATABASE=Rage 128 PU/PRO AGP 4x - -pci:v00001002d00005056* - ID_PRODUCT_FROM_DATABASE=Rage 128 PV/PRO TMDS - -pci:v00001002d00005057* - ID_PRODUCT_FROM_DATABASE=Rage 128 PW/PRO AGP 2x TMDS - -pci:v00001002d00005058* - ID_PRODUCT_FROM_DATABASE=Rage 128 PX/PRO AGP 4x TMDS + ID_PRODUCT_FROM_DATABASE=Rage 128 PRO AGP 4X TMDS pci:v00001002d00005144* - ID_PRODUCT_FROM_DATABASE=Radeon R100 QD [Radeon 7200] + ID_PRODUCT_FROM_DATABASE=R100 QD [Radeon 7200] pci:v00001002d00005144sv00001002sd00000008* ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon VE @@ -3263,17 +3140,8 @@ pci:v00001002d00005144sv00001002sd000002AA* pci:v00001002d00005144sv00001002sd0000053A* ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon -pci:v00001002d00005145* - ID_PRODUCT_FROM_DATABASE=Radeon R100 QE - -pci:v00001002d00005146* - ID_PRODUCT_FROM_DATABASE=Radeon R100 QF - -pci:v00001002d00005147* - ID_PRODUCT_FROM_DATABASE=Radeon R100 QG - pci:v00001002d00005148* - ID_PRODUCT_FROM_DATABASE=Radeon R200 QH [Radeon 8500] + ID_PRODUCT_FROM_DATABASE=R200 QH [Radeon 8500] pci:v00001002d00005148sv00001002sd0000010A* ID_PRODUCT_FROM_DATABASE=FireGL 8800 64Mb @@ -3287,17 +3155,8 @@ pci:v00001002d00005148sv00001002sd00000162* pci:v00001002d00005148sv00001002sd00000172* ID_PRODUCT_FROM_DATABASE=FireGL 8700 64Mb -pci:v00001002d00005149* - ID_PRODUCT_FROM_DATABASE=Radeon R200 QI - -pci:v00001002d0000514A* - ID_PRODUCT_FROM_DATABASE=Radeon R200 QJ - -pci:v00001002d0000514B* - ID_PRODUCT_FROM_DATABASE=Radeon R200 QK - pci:v00001002d0000514C* - ID_PRODUCT_FROM_DATABASE=Radeon R200 QL [Radeon 8500 LE] + ID_PRODUCT_FROM_DATABASE=R200 QL [Radeon 8500/8500 LE] pci:v00001002d0000514Csv00001002sd0000003A* ID_PRODUCT_FROM_DATABASE=Radeon R200 QL [Radeon 8500 LE] @@ -3318,19 +3177,7 @@ pci:v00001002d0000514Csv00001787sd00000F08* ID_PRODUCT_FROM_DATABASE=Radeon R200 QL [PowerMagic Radeon 8500] pci:v00001002d0000514D* - ID_PRODUCT_FROM_DATABASE=Radeon R200 QM [Radeon 9100] - -pci:v00001002d0000514E* - ID_PRODUCT_FROM_DATABASE=Radeon R200 QN [Radeon 8500LE] - -pci:v00001002d0000514F* - ID_PRODUCT_FROM_DATABASE=Radeon R200 QO [Radeon 8500LE] - -pci:v00001002d00005154* - ID_PRODUCT_FROM_DATABASE=R200 QT [Radeon 8500] - -pci:v00001002d00005155* - ID_PRODUCT_FROM_DATABASE=R200 QU [Radeon 9100] + ID_PRODUCT_FROM_DATABASE=R200 QM [Radeon 9100] pci:v00001002d00005157* ID_PRODUCT_FROM_DATABASE=RV200 QW [Radeon 7500] @@ -3368,9 +3215,6 @@ pci:v00001002d00005157sv0000174Bsd00007161* pci:v00001002d00005157sv000017AFsd00000202* ID_PRODUCT_FROM_DATABASE=RV200 QW [Excalibur Radeon 7500LE] -pci:v00001002d00005158* - ID_PRODUCT_FROM_DATABASE=RV200 QX [Radeon 7500] - pci:v00001002d00005159* ID_PRODUCT_FROM_DATABASE=RV100 QY [Radeon 7000/VE] @@ -3443,9 +3287,6 @@ pci:v00001002d00005159sv00001787sd00000202* pci:v00001002d00005159sv000017EEsd00001001* ID_PRODUCT_FROM_DATABASE=Radeon 7000 64MB DDR + DVI -pci:v00001002d0000515A* - ID_PRODUCT_FROM_DATABASE=RV100 QZ [Radeon 7000/VE] - pci:v00001002d0000515E* ID_PRODUCT_FROM_DATABASE=ES1000 @@ -3497,26 +3338,8 @@ pci:v00001002d0000515Esv000015D9sd00009680* pci:v00001002d0000515Esv00008086sd00003476* ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board -pci:v00001002d0000515F* - ID_PRODUCT_FROM_DATABASE=ES1000 - -pci:v00001002d00005168* - ID_PRODUCT_FROM_DATABASE=Radeon R200 Qh - -pci:v00001002d00005169* - ID_PRODUCT_FROM_DATABASE=Radeon R200 Qi - -pci:v00001002d0000516A* - ID_PRODUCT_FROM_DATABASE=Radeon R200 Qj - -pci:v00001002d0000516B* - ID_PRODUCT_FROM_DATABASE=Radeon R200 Qk - -pci:v00001002d0000516C* - ID_PRODUCT_FROM_DATABASE=Radeon R200 Ql - pci:v00001002d00005245* - ID_PRODUCT_FROM_DATABASE=Rage 128 RE/SG + ID_PRODUCT_FROM_DATABASE=Rage 128 GL PCI pci:v00001002d00005245sv00001002sd00000008* ID_PRODUCT_FROM_DATABASE=Xpert 128 @@ -3531,7 +3354,7 @@ pci:v00001002d00005245sv00001002sd00000068* ID_PRODUCT_FROM_DATABASE=Rage 128 AIW pci:v00001002d00005246* - ID_PRODUCT_FROM_DATABASE=Rage 128 RF/SG AGP + ID_PRODUCT_FROM_DATABASE=Rage Fury/Xpert 128/Xpert 2000 AGP 2x pci:v00001002d00005246sv00001002sd00000004* ID_PRODUCT_FROM_DATABASE=Magnum/Xpert 128/Xpert 99 @@ -3551,14 +3374,11 @@ pci:v00001002d00005246sv00001002sd00000068* pci:v00001002d00005246sv00001002sd00000448* ID_PRODUCT_FROM_DATABASE=Rage Fury -pci:v00001002d00005247* - ID_PRODUCT_FROM_DATABASE=Rage 128 RG - pci:v00001002d0000524B* - ID_PRODUCT_FROM_DATABASE=Rage 128 RK/VR + ID_PRODUCT_FROM_DATABASE=Rage 128 VR PCI pci:v00001002d0000524C* - ID_PRODUCT_FROM_DATABASE=Rage 128 RL/VR AGP + ID_PRODUCT_FROM_DATABASE=Rage 128 VR AGP pci:v00001002d0000524Csv00001002sd00000008* ID_PRODUCT_FROM_DATABASE=Xpert 99/Xpert 2000 @@ -3566,29 +3386,14 @@ pci:v00001002d0000524Csv00001002sd00000008* pci:v00001002d0000524Csv00001002sd00000088* ID_PRODUCT_FROM_DATABASE=Xpert 99 -pci:v00001002d00005345* - ID_PRODUCT_FROM_DATABASE=Rage 128 SE/4x - pci:v00001002d00005346* ID_PRODUCT_FROM_DATABASE=Rage 128 SF/4x AGP 2x pci:v00001002d00005346sv00001002sd00000048* ID_PRODUCT_FROM_DATABASE=RAGE 128 16MB VGA TVOUT AMC PAL -pci:v00001002d00005347* - ID_PRODUCT_FROM_DATABASE=Rage 128 SG/4x AGP 4x - -pci:v00001002d00005348* - ID_PRODUCT_FROM_DATABASE=Rage 128 SH - -pci:v00001002d0000534B* - ID_PRODUCT_FROM_DATABASE=Rage 128 SK/4x - -pci:v00001002d0000534C* - ID_PRODUCT_FROM_DATABASE=Rage 128 SL/4x AGP 2x - pci:v00001002d0000534D* - ID_PRODUCT_FROM_DATABASE=Rage 128 SM/4x AGP 4x + ID_PRODUCT_FROM_DATABASE=Rage 128 4X AGP 4x pci:v00001002d0000534Dsv00001002sd00000008* ID_PRODUCT_FROM_DATABASE=Xpert 99/Xpert 2000 @@ -3596,9 +3401,6 @@ pci:v00001002d0000534Dsv00001002sd00000008* pci:v00001002d0000534Dsv00001002sd00000018* ID_PRODUCT_FROM_DATABASE=Xpert 2000 -pci:v00001002d0000534E* - ID_PRODUCT_FROM_DATABASE=Rage 128 4x - pci:v00001002d00005354* ID_PRODUCT_FROM_DATABASE=Mach 64 VT @@ -3606,7 +3408,7 @@ pci:v00001002d00005354sv00001002sd00005654* ID_PRODUCT_FROM_DATABASE=Mach 64 reference pci:v00001002d00005446* - ID_PRODUCT_FROM_DATABASE=Rage 128 Pro Ultra TF + ID_PRODUCT_FROM_DATABASE=Rage 128 PRO Ultra AGP 4x pci:v00001002d00005446sv00001002sd00000004* ID_PRODUCT_FROM_DATABASE=Rage Fury Pro @@ -3632,11 +3434,8 @@ pci:v00001002d00005446sv00001002sd0000002B* pci:v00001002d00005446sv00001002sd00000048* ID_PRODUCT_FROM_DATABASE=Xpert 2000 Pro -pci:v00001002d0000544C* - ID_PRODUCT_FROM_DATABASE=Rage 128 Pro Ultra TL - pci:v00001002d00005452* - ID_PRODUCT_FROM_DATABASE=Rage 128 Pro Ultra TR + ID_PRODUCT_FROM_DATABASE=Rage 128 PRO Ultra4XL VR-R AGP pci:v00001002d00005452sv00001002sd0000001C* ID_PRODUCT_FROM_DATABASE=Rage 128 Pro 4XL @@ -3644,104 +3443,83 @@ pci:v00001002d00005452sv00001002sd0000001C* pci:v00001002d00005452sv0000103Csd00001279* ID_PRODUCT_FROM_DATABASE=Rage 128 Pro 4XL -pci:v00001002d00005453* - ID_PRODUCT_FROM_DATABASE=Rage 128 Pro Ultra TS - -pci:v00001002d00005454* - ID_PRODUCT_FROM_DATABASE=Rage 128 Pro Ultra TT - -pci:v00001002d00005455* - ID_PRODUCT_FROM_DATABASE=Rage 128 Pro Ultra TU - pci:v00001002d00005460* - ID_PRODUCT_FROM_DATABASE=RV370 [Mobility Radeon X300] + ID_PRODUCT_FROM_DATABASE=RV370/M22 [Mobility Radeon X300] pci:v00001002d00005460sv00001775sd00001100* ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer pci:v00001002d00005461* - ID_PRODUCT_FROM_DATABASE=RV370 [Mobility Radeon X300] + ID_PRODUCT_FROM_DATABASE=RV370/M22 [Mobility Radeon X300] pci:v00001002d00005462* - ID_PRODUCT_FROM_DATABASE=RV380 [Mobility Radeon X600] + ID_PRODUCT_FROM_DATABASE=RV380/M24C [Mobility Radeon X600 SE] pci:v00001002d00005464* - ID_PRODUCT_FROM_DATABASE=RV370 [Mobility FireGL V3100] - -pci:v00001002d00005548* - ID_PRODUCT_FROM_DATABASE=R423 UH [Radeon X800 (PCIE)] + ID_PRODUCT_FROM_DATABASE=RV370/M22 GL [Mobility FireGL V3100] pci:v00001002d00005549* - ID_PRODUCT_FROM_DATABASE=R423 UI [Radeon X800PRO (PCIE)] + ID_PRODUCT_FROM_DATABASE=R423 UI [Radeon X800 GTO] pci:v00001002d0000554A* - ID_PRODUCT_FROM_DATABASE=R423 UJ [Radeon X800LE (PCIE)] + ID_PRODUCT_FROM_DATABASE=R423 [Radeon X800 XT Platinum Edition] pci:v00001002d0000554B* - ID_PRODUCT_FROM_DATABASE=R423 UK [Radeon X800SE (PCIE)] + ID_PRODUCT_FROM_DATABASE=R423 UK [Radeon X800 GT] -pci:v00001002d0000554C* - ID_PRODUCT_FROM_DATABASE=R430 [Radeon X800XTP PCIe] +pci:v00001002d0000554Bsv00001002sd00000302* + ID_PRODUCT_FROM_DATABASE=Radeon X800 SE pci:v00001002d0000554D* - ID_PRODUCT_FROM_DATABASE=R430 [Radeon X800 XL] (PCIe) + ID_PRODUCT_FROM_DATABASE=R430 [Radeon X800 XL] + +pci:v00001002d0000554Dsv00001002sd00000322* + ID_PRODUCT_FROM_DATABASE=All-In-Wonder X800 XL pci:v00001002d0000554Dsv00001458sd00002124* ID_PRODUCT_FROM_DATABASE=GV-R80L256V-B (AGP) pci:v00001002d0000554E* - ID_PRODUCT_FROM_DATABASE=R430 [Radeon X800 SE PCIe] + ID_PRODUCT_FROM_DATABASE=R430 [All-In-Wonder X800 GT] pci:v00001002d0000554F* - ID_PRODUCT_FROM_DATABASE=R430 [Radeon X800 (PCIE)] + ID_PRODUCT_FROM_DATABASE=R430 [Radeon X800] pci:v00001002d00005550* ID_PRODUCT_FROM_DATABASE=R423 [FireGL V7100] pci:v00001002d00005551* - ID_PRODUCT_FROM_DATABASE=R423 [FireGL V5100 (PCIE)] - -pci:v00001002d00005552* - ID_PRODUCT_FROM_DATABASE=R423 UR [FireGL V5100 (PCIE)] - -pci:v00001002d00005554* - ID_PRODUCT_FROM_DATABASE=R423 UT [FireGL V7100 (PCIE)] - -pci:v00001002d00005555* - ID_PRODUCT_FROM_DATABASE=R430 GL PRO + ID_PRODUCT_FROM_DATABASE=R423 [FireGL V5100] pci:v00001002d00005569* - ID_PRODUCT_FROM_DATABASE=R423 UI [Radeon X800PRO (PCIE)] (Secondary) + ID_PRODUCT_FROM_DATABASE=R423 UI [Radeon X800 PRO] (Secondary) pci:v00001002d0000556B* - ID_PRODUCT_FROM_DATABASE=Radeon R423 UK (PCIE) [X800 SE] (Secondary) + ID_PRODUCT_FROM_DATABASE=R423 [Radeon X800 GT] (Secondary) pci:v00001002d0000556D* - ID_PRODUCT_FROM_DATABASE=R430 [Radeon X800 XL] (PCIe) (Secondary) + ID_PRODUCT_FROM_DATABASE=R430 [Radeon X800 XL] (Secondary) pci:v00001002d0000556Dsv00001458sd00002125* ID_PRODUCT_FROM_DATABASE=GV-R80L256V-B (AGP) pci:v00001002d0000556F* - ID_PRODUCT_FROM_DATABASE=R430 [Radeon X800] (PCIE) (Secondary) + ID_PRODUCT_FROM_DATABASE=R430 [Radeon X800] (Secondary) pci:v00001002d00005571* - ID_PRODUCT_FROM_DATABASE=R423GL-SE [FireGL V5100 (PCIE)] (Secondary) - -pci:v00001002d0000564A* - ID_PRODUCT_FROM_DATABASE=M26 [Mobility FireGL V5000] + ID_PRODUCT_FROM_DATABASE=R423 GL [FireGL V5100] (Secondary) pci:v00001002d0000564B* - ID_PRODUCT_FROM_DATABASE=M26 [Mobility FireGL V5000] + ID_PRODUCT_FROM_DATABASE=RV410/M26 [Mobility FireGL V5000] pci:v00001002d0000564F* - ID_PRODUCT_FROM_DATABASE=M26 [Radeon Mobility X700 XL (PCIE)] + ID_PRODUCT_FROM_DATABASE=RV410/M26 [Mobility Radeon X700 XL] pci:v00001002d00005652* - ID_PRODUCT_FROM_DATABASE=M26 [Radeon Mobility X700] + ID_PRODUCT_FROM_DATABASE=RV410/M26 [Mobility Radeon X700] pci:v00001002d00005653* - ID_PRODUCT_FROM_DATABASE=Radeon Mobility X700 (PCIE) + ID_PRODUCT_FROM_DATABASE=RV410/M26 [Mobility Radeon X700] pci:v00001002d00005653sv00001025sd00000080* ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMi @@ -3762,7 +3540,7 @@ pci:v00001002d00005656* ID_PRODUCT_FROM_DATABASE=264VT4 [Mach64 VT4] pci:v00001002d00005657* - ID_PRODUCT_FROM_DATABASE=Radeon X550/X700 Series (RV410) + ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X550 XTX / X700] pci:v00001002d00005830* ID_PRODUCT_FROM_DATABASE=RS300 Host Bridge @@ -3780,16 +3558,16 @@ pci:v00001002d00005834* ID_PRODUCT_FROM_DATABASE=RS300 [Radeon 9100 IGP] pci:v00001002d00005835* - ID_PRODUCT_FROM_DATABASE=RS300M AGP [Radeon Mobility 9100IGP] + ID_PRODUCT_FROM_DATABASE=RS300M [Mobility Radeon 9100 IGP] pci:v00001002d00005838* ID_PRODUCT_FROM_DATABASE=Radeon 9100 IGP AGP Bridge pci:v00001002d00005854* - ID_PRODUCT_FROM_DATABASE=Radeon Xpress Series (RS480) + ID_PRODUCT_FROM_DATABASE=RS480 [Radeon Xpress 200 Series] (Secondary) pci:v00001002d00005874* - ID_PRODUCT_FROM_DATABASE=Radeon Xpress Series (RS482) + ID_PRODUCT_FROM_DATABASE=RS480 [Radeon Xpress 1150] (Secondary) pci:v00001002d00005940* ID_PRODUCT_FROM_DATABASE=RV280 [Radeon 9200 PRO] (Secondary) @@ -3813,7 +3591,7 @@ pci:v00001002d00005941sv000018BCsd00000050* ID_PRODUCT_FROM_DATABASE=GeXcube GC-R9200-C3 (Secondary) pci:v00001002d00005944* - ID_PRODUCT_FROM_DATABASE=RV280 [Radeon 9200 SE (PCI)] + ID_PRODUCT_FROM_DATABASE=RV280 [Radeon 9200 SE PCI] pci:v00001002d00005950* ID_PRODUCT_FROM_DATABASE=RS480 Host Bridge @@ -3843,13 +3621,13 @@ pci:v00001002d00005952* ID_PRODUCT_FROM_DATABASE=RD580 [CrossFire Xpress 3200] Chipset Host Bridge pci:v00001002d00005954* - ID_PRODUCT_FROM_DATABASE=RS480 [Radeon Xpress 200G Series] + ID_PRODUCT_FROM_DATABASE=RS480 [Radeon Xpress 200 Series] pci:v00001002d00005954sv00001002sd00005954* ID_PRODUCT_FROM_DATABASE=RV370 [Radeon Xpress 200G Series] pci:v00001002d00005955* - ID_PRODUCT_FROM_DATABASE=Radeon XPRESS 200M 5955 (PCIE) + ID_PRODUCT_FROM_DATABASE=RS480M [Mobility Radeon Xpress 200] pci:v00001002d00005955sv00001002sd00005955* ID_PRODUCT_FROM_DATABASE=RS480 0x5955 [Radeon XPRESS 200M 5955 (PCIE)] @@ -3950,11 +3728,8 @@ pci:v00001002d00005964sv000018BCsd00000173* pci:v00001002d00005965* ID_PRODUCT_FROM_DATABASE=RV280 [FireMV 2200 PCI] -pci:v00001002d00005969* - ID_PRODUCT_FROM_DATABASE=ES1000 - pci:v00001002d00005974* - ID_PRODUCT_FROM_DATABASE=RS482 [Radeon Xpress 200] + ID_PRODUCT_FROM_DATABASE=RS482 [Radeon Xpress 200/1150] pci:v00001002d00005974sv0000103Csd0000280A* ID_PRODUCT_FROM_DATABASE=DC5750 Microtower @@ -3963,7 +3738,7 @@ pci:v00001002d00005974sv00001462sd00007141* ID_PRODUCT_FROM_DATABASE=Aspire L250 pci:v00001002d00005975* - ID_PRODUCT_FROM_DATABASE=RS482 [Radeon Xpress 200M] + ID_PRODUCT_FROM_DATABASE=RS482M [Mobility Radeon Xpress 200] pci:v00001002d00005978* ID_PRODUCT_FROM_DATABASE=RD790 PCI to PCI bridge (external gfx0 port A) @@ -4098,22 +3873,16 @@ pci:v00001002d00005A41* ID_PRODUCT_FROM_DATABASE=RS400 [Radeon Xpress 200] pci:v00001002d00005A42* - ID_PRODUCT_FROM_DATABASE=RS400 [Radeon Xpress 200M] - -pci:v00001002d00005A43* - ID_PRODUCT_FROM_DATABASE=Radeon Xpress Series (RS400) + ID_PRODUCT_FROM_DATABASE=RS400M [Radeon Xpress 200M] pci:v00001002d00005A61* - ID_PRODUCT_FROM_DATABASE=RC410 [Radeon Xpress 200] + ID_PRODUCT_FROM_DATABASE=RC410 [Radeon Xpress 200/1100] pci:v00001002d00005A62* - ID_PRODUCT_FROM_DATABASE=RC410 [Radeon Xpress 200M] - -pci:v00001002d00005A63* - ID_PRODUCT_FROM_DATABASE=Radeon Xpress Series (RC410) + ID_PRODUCT_FROM_DATABASE=RC410M [Mobility Radeon Xpress 200M] pci:v00001002d00005B60* - ID_PRODUCT_FROM_DATABASE=RV370 5B60 [Radeon X300 (PCIE)] + ID_PRODUCT_FROM_DATABASE=RV370 [Radeon X300] pci:v00001002d00005B60sv00001043sd0000002A* ID_PRODUCT_FROM_DATABASE=Extreme AX300SE-X @@ -4137,22 +3906,22 @@ pci:v00001002d00005B60sv0000196Dsd00001086* ID_PRODUCT_FROM_DATABASE=X300SE HM pci:v00001002d00005B62* - ID_PRODUCT_FROM_DATABASE=RV380 [Radeon X600 (PCIE)] + ID_PRODUCT_FROM_DATABASE=RV370 [Radeon X600/X600 SE] pci:v00001002d00005B63* - ID_PRODUCT_FROM_DATABASE=RV370 [Radeon X550] + ID_PRODUCT_FROM_DATABASE=RV370 [Radeon X300/X550/X1050 Series] pci:v00001002d00005B64* - ID_PRODUCT_FROM_DATABASE=RV370 5B64 [FireGL V3100 (PCIE)] + ID_PRODUCT_FROM_DATABASE=RV370 [FireGL V3100] pci:v00001002d00005B65* - ID_PRODUCT_FROM_DATABASE=RV370 5B65 [FireGL D1100 (PCIE)] + ID_PRODUCT_FROM_DATABASE=RV370 [FireMV 2200] pci:v00001002d00005B66* ID_PRODUCT_FROM_DATABASE=RV370X pci:v00001002d00005B70* - ID_PRODUCT_FROM_DATABASE=RV370 [Radeon X300SE] + ID_PRODUCT_FROM_DATABASE=RV370 [Radeon X300 SE] pci:v00001002d00005B70sv00001462sd00000403* ID_PRODUCT_FROM_DATABASE=RX300SE-TD128E (MS-8940) (secondary display) @@ -4164,22 +3933,22 @@ pci:v00001002d00005B70sv0000196Dsd00001087* ID_PRODUCT_FROM_DATABASE=X300SE HM pci:v00001002d00005B72* - ID_PRODUCT_FROM_DATABASE=RV380 [Radeon X600] + ID_PRODUCT_FROM_DATABASE=RV380 [Radeon X300/X550/X1050 Series] (Secondary) pci:v00001002d00005B73* - ID_PRODUCT_FROM_DATABASE=RV370 secondary [Sapphire X550 Silent] + ID_PRODUCT_FROM_DATABASE=RV370 [Radeon X300/X550/X1050 Series] (Secondary) pci:v00001002d00005B74* - ID_PRODUCT_FROM_DATABASE=RV370 5B64 [FireGL V3100 (PCIE)] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV370 [FireGL V3100] (Secondary) pci:v00001002d00005B75* - ID_PRODUCT_FROM_DATABASE=RV370 5B75 [FireGL D1100 (PCIE)] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV370 [FireMV 2200] (Secondary) pci:v00001002d00005C61* - ID_PRODUCT_FROM_DATABASE=M9+ 5C61 [Radeon Mobility 9200 (AGP)] + ID_PRODUCT_FROM_DATABASE=RV280/M9+ [Mobility Radeon 9200 AGP] pci:v00001002d00005C63* - ID_PRODUCT_FROM_DATABASE=M9+ 5C63 [Radeon Mobility 9200 (AGP)] + ID_PRODUCT_FROM_DATABASE=RV280/M9+ [Mobility Radeon 9200 AGP] pci:v00001002d00005C63sv00001002sd00005C63* ID_PRODUCT_FROM_DATABASE=Apple iBook G4 2004 @@ -4215,37 +3984,31 @@ pci:v00001002d00005D44sv000018BCsd00000172* ID_PRODUCT_FROM_DATABASE=GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] pci:v00001002d00005D45* - ID_PRODUCT_FROM_DATABASE=RV280 [FireMV 2200 PCI] (secondary) + ID_PRODUCT_FROM_DATABASE=RV280 [FireMV 2200 PCI] (Secondary) pci:v00001002d00005D48* - ID_PRODUCT_FROM_DATABASE=M28 [Radeon Mobility X800XT] + ID_PRODUCT_FROM_DATABASE=R423/M28 [Mobility Radeon X800 XT] pci:v00001002d00005D49* - ID_PRODUCT_FROM_DATABASE=M28 [Mobility FireGL V5100] + ID_PRODUCT_FROM_DATABASE=R423/M28 [Mobility FireGL V5100] pci:v00001002d00005D4A* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon X800 - -pci:v00001002d00005D4C* - ID_PRODUCT_FROM_DATABASE=Radeon X850 (PCIE) + ID_PRODUCT_FROM_DATABASE=R423/M28 [Mobility Radeon X800] pci:v00001002d00005D4D* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850XT Platinum (PCIE)] + ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850 XT Platinum Edition] pci:v00001002d00005D4E* - ID_PRODUCT_FROM_DATABASE=Radeon X850 SE (R480) (PCIE) + ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850 SE] pci:v00001002d00005D4F* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X800 GTO (PCIE)] + ID_PRODUCT_FROM_DATABASE=R480 [Radeon X800 GTO] pci:v00001002d00005D50* - ID_PRODUCT_FROM_DATABASE=R480 [FireGL V7200 (PCIE)] - -pci:v00001002d00005D51* - ID_PRODUCT_FROM_DATABASE=R480 GL 12P + ID_PRODUCT_FROM_DATABASE=R480 [FireGL V7200] pci:v00001002d00005D52* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850XT (PCIE)] (Primary) + ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850 XT] pci:v00001002d00005D52sv00001002sd00000B12* ID_PRODUCT_FROM_DATABASE=PowerColor X850XT PCIe (Primary) @@ -4254,37 +4017,37 @@ pci:v00001002d00005D52sv00001002sd00000B13* ID_PRODUCT_FROM_DATABASE=PowerColor X850XT PCIe (Secondary) pci:v00001002d00005D57* - ID_PRODUCT_FROM_DATABASE=R423 5F57 [Radeon X800XT (PCIE)] + ID_PRODUCT_FROM_DATABASE=R423 [Radeon X800 XT] pci:v00001002d00005D6D* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850XT Platinum (PCIE)] (Secondary) + ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850 XT Platinum Edition] (Secondary) pci:v00001002d00005D6F* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X800 GTO (PCIE)] (Secondary) + ID_PRODUCT_FROM_DATABASE=R480 [Radeon X800 GTO] (Secondary) pci:v00001002d00005D72* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850XT (PCIE)] (Secondary) + ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850 XT] (Secondary) pci:v00001002d00005D77* - ID_PRODUCT_FROM_DATABASE=R423 5F57 [Radeon X800XT (PCIE)] (Secondary) + ID_PRODUCT_FROM_DATABASE=R423 [Radeon X800 XT] (Secondary) pci:v00001002d00005E48* ID_PRODUCT_FROM_DATABASE=RV410 [FireGL V5000] pci:v00001002d00005E49* - ID_PRODUCT_FROM_DATABASE=RV410 [FireGL V3300] + ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 Series] pci:v00001002d00005E4A* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700XT] + ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 XT] pci:v00001002d00005E4B* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 Pro (PCIE)] + ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 PRO] pci:v00001002d00005E4C* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700SE] + ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 SE] pci:v00001002d00005E4D* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 (PCIE)] + ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700] pci:v00001002d00005E4Dsv0000148Csd00002116* ID_PRODUCT_FROM_DATABASE=PowerColor Bravo X700 @@ -4296,19 +4059,19 @@ pci:v00001002d00005E4Fsv00001569sd00001E4F* ID_PRODUCT_FROM_DATABASE=Radeon X550 XT pci:v00001002d00005E6B* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 Pro (PCIE)] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 PRO] (Secondary) pci:v00001002d00005E6D* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 (PCIE)] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700] (Secondary) pci:v00001002d00005E6Dsv0000148Csd00002117* ID_PRODUCT_FROM_DATABASE=PowerColor Bravo X700 pci:v00001002d00005F57* - ID_PRODUCT_FROM_DATABASE=R423 [Radeon X800XT (PCIE)] + ID_PRODUCT_FROM_DATABASE=R423 [Radeon X800 XT] pci:v00001002d00006600* - ID_PRODUCT_FROM_DATABASE=Mars [Radeon HD 8600/8700M Series] + ID_PRODUCT_FROM_DATABASE=Mars [Radeon HD 8670A/8750M] pci:v00001002d00006601* ID_PRODUCT_FROM_DATABASE=Mars [Radeon HD 8500/8700M Series] @@ -4323,7 +4086,7 @@ pci:v00001002d00006606* ID_PRODUCT_FROM_DATABASE=Mars [Radeon HD 8790M] pci:v00001002d00006607* - ID_PRODUCT_FROM_DATABASE=Mars + ID_PRODUCT_FROM_DATABASE=Mars [Radeon HD 8530M] pci:v00001002d00006610* ID_PRODUCT_FROM_DATABASE=Oland [Radeon HD 8600 Series] @@ -4347,7 +4110,7 @@ pci:v00001002d00006631* ID_PRODUCT_FROM_DATABASE=Oland pci:v00001002d0000665C* - ID_PRODUCT_FROM_DATABASE=Bonaire [Radeon HD 7700 Series] + ID_PRODUCT_FROM_DATABASE=Bonaire XT [Radeon HD 7790] pci:v00001002d00006660* ID_PRODUCT_FROM_DATABASE=Sun [Radeon HD 8600M Series] @@ -4392,16 +4155,43 @@ pci:v00001002d0000671C* ID_PRODUCT_FROM_DATABASE=Antilles [Radeon HD 6990] pci:v00001002d0000671D* - ID_PRODUCT_FROM_DATABASE=Antilles [AMD Radeon HD 6990] + ID_PRODUCT_FROM_DATABASE=Antilles [Radeon HD 6990] pci:v00001002d0000671F* - ID_PRODUCT_FROM_DATABASE=Cayman [Radeon HD 6900 Series] + ID_PRODUCT_FROM_DATABASE=Cayman CE [Radeon HD 6930] pci:v00001002d00006720* - ID_PRODUCT_FROM_DATABASE=Blackcomb [Radeon HD 6900M series] + ID_PRODUCT_FROM_DATABASE=Blackcomb [Radeon HD 6970M/6990M] + +pci:v00001002d00006720sv00001028sd0000048F* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6990M + +pci:v00001002d00006720sv00001028sd00000490* + ID_PRODUCT_FROM_DATABASE=Alienware M17x R3 Radeon HD 6970M + +pci:v00001002d00006720sv00001028sd000004A4* + ID_PRODUCT_FROM_DATABASE=FirePro M8900 + +pci:v00001002d00006720sv00001028sd0000053F* + ID_PRODUCT_FROM_DATABASE=FirePro M8900 + +pci:v00001002d00006720sv0000106Bsd00000B00* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6970M + +pci:v00001002d00006720sv00001558sd00005102* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6970M + +pci:v00001002d00006720sv00001558sd00005104* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6990M + +pci:v00001002d00006720sv00001558sd00007201* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6990M + +pci:v00001002d00006720sv0000174Bsd0000E188* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6970M pci:v00001002d00006721* - ID_PRODUCT_FROM_DATABASE=Blackcomb [Mobility Radeon HD 6000 series] + ID_PRODUCT_FROM_DATABASE=Blackcomb [Radeon HD 6900M Series] pci:v00001002d00006722* ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] @@ -4413,7 +4203,7 @@ pci:v00001002d00006724* ID_PRODUCT_FROM_DATABASE=Blackcomb [Mobility Radeon HD 6000 series] pci:v00001002d00006725* - ID_PRODUCT_FROM_DATABASE=Blackcomb [Mobility Radeon HD 6000 series] + ID_PRODUCT_FROM_DATABASE=Blackcomb [Radeon HD 6900M Series] pci:v00001002d00006726* ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] @@ -4428,37 +4218,55 @@ pci:v00001002d00006729* ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] pci:v00001002d00006738* - ID_PRODUCT_FROM_DATABASE=Barts XT [Radeon HD 6800 Series] + ID_PRODUCT_FROM_DATABASE=Barts XT [Radeon HD 6870] + +pci:v00001002d00006738sv00001682sd00003103* + ID_PRODUCT_FROM_DATABASE=Radeon HD 8670 + +pci:v00001002d00006738sv00001787sd0000201A* + ID_PRODUCT_FROM_DATABASE=Barts XT [Radeon HD 6870 X2] + +pci:v00001002d00006738sv00001787sd0000201B* + ID_PRODUCT_FROM_DATABASE=Barts XT [Radeon HD 6870 X2] pci:v00001002d00006739* - ID_PRODUCT_FROM_DATABASE=Barts PRO [Radeon HD 6800 Series] + ID_PRODUCT_FROM_DATABASE=Barts PRO [Radeon HD 6850] pci:v00001002d00006739sv00001043sd000003B4* ID_PRODUCT_FROM_DATABASE=EAH6850 [Radeon HD 6850] pci:v00001002d0000673E* - ID_PRODUCT_FROM_DATABASE=Barts LE [AMD Radeon HD 6700 Series] + ID_PRODUCT_FROM_DATABASE=Barts LE [Radeon HD 6790] + +pci:v00001002d0000673Esv0000148Csd00007720* + ID_PRODUCT_FROM_DATABASE=Radeon HD 7720 OEM pci:v00001002d00006740* - ID_PRODUCT_FROM_DATABASE=Whistler XT [AMD Radeon HD 6700M Series] + ID_PRODUCT_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] pci:v00001002d00006740sv00001028sd000004A3* ID_PRODUCT_FROM_DATABASE=Precision M4600 pci:v00001002d00006741* - ID_PRODUCT_FROM_DATABASE=Whistler [AMD Radeon HD 6600M Series] + ID_PRODUCT_FROM_DATABASE=Whistler [Radeon HD 6600M/6700M/7600M Series] pci:v00001002d00006741sv0000106Bsd000000E2* ID_PRODUCT_FROM_DATABASE=MacBookPro8,2 [Core i7, 15", Late 2011] pci:v00001002d00006742* - ID_PRODUCT_FROM_DATABASE=Whistler LE [AMD Radeon HD 6625M Graphics] + ID_PRODUCT_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] + +pci:v00001002d00006742sv00001043sd00001D82* + ID_PRODUCT_FROM_DATABASE=K53SK Laptop Radeon HD 7610M + +pci:v00001002d00006742sv00008086sd00002111* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6625M pci:v00001002d00006743* ID_PRODUCT_FROM_DATABASE=Whistler [Radeon E6760] pci:v00001002d00006744* - ID_PRODUCT_FROM_DATABASE=Whistler [ATI Mobility Radeon HD 6000 series] + ID_PRODUCT_FROM_DATABASE=Whistler [Radeon HD 6000M Series] pci:v00001002d00006745* ID_PRODUCT_FROM_DATABASE=Whistler @@ -4473,35 +4281,59 @@ pci:v00001002d00006748* ID_PRODUCT_FROM_DATABASE=Turks GL [ATI FirePro V (FireGL V) Graphics Adapter] pci:v00001002d00006749* - ID_PRODUCT_FROM_DATABASE=Turks [FirePro V4900] + ID_PRODUCT_FROM_DATABASE=Turks GL [FirePro V4900] pci:v00001002d0000674A* - ID_PRODUCT_FROM_DATABASE=Turks [AMD FirePro V3900] + ID_PRODUCT_FROM_DATABASE=Turks GL [FirePro V3900] pci:v00001002d00006750* - ID_PRODUCT_FROM_DATABASE=Turks [AMD Radeon HD 6570] + ID_PRODUCT_FROM_DATABASE=Onega [Radeon HD 6650A / 7650A] pci:v00001002d00006751* - ID_PRODUCT_FROM_DATABASE=Turks [Radeon HD 7600A Series] + ID_PRODUCT_FROM_DATABASE=Turks XT [Radeon HD 7670A] pci:v00001002d00006758* - ID_PRODUCT_FROM_DATABASE=Turks [Radeon HD 6670] + ID_PRODUCT_FROM_DATABASE=Turks XT [Radeon HD 6670] pci:v00001002d00006759* - ID_PRODUCT_FROM_DATABASE=Turks [Radeon HD 6570] + ID_PRODUCT_FROM_DATABASE=Turks PRO [Radeon HD 6570] + +pci:v00001002d00006759sv0000148Csd00007570* + ID_PRODUCT_FROM_DATABASE=Radeon HD 7570 + +pci:v00001002d00006759sv0000174Bsd00007570* + ID_PRODUCT_FROM_DATABASE=Radeon HD 7570 pci:v00001002d0000675D* - ID_PRODUCT_FROM_DATABASE=Turks [Radeon HD 7500 Series] + ID_PRODUCT_FROM_DATABASE=Turks PRO [Radeon HD 7570] pci:v00001002d0000675F* - ID_PRODUCT_FROM_DATABASE=Turks LE [Radeon HD 5500/7510 Series] + ID_PRODUCT_FROM_DATABASE=Turks LE [Radeon HD 5570/6510/7510] + +pci:v00001002d0000675Fsv0000148Csd00006510* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6510 + +pci:v00001002d0000675Fsv0000174Bsd00006510* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6510 + +pci:v00001002d0000675Fsv0000174Bsd00007510* + ID_PRODUCT_FROM_DATABASE=Radeon HD 7510 + +pci:v00001002d0000675Fsv00001787sd00002012* + ID_PRODUCT_FROM_DATABASE=Radeon HD 5570 2GB GDDR3 + +pci:v00001002d0000675Fsv00001787sd00002314* + ID_PRODUCT_FROM_DATABASE=Radeon HD 5570 1GB DDR2/GDDR3 pci:v00001002d00006760* - ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 6400M/7400M Series] + ID_PRODUCT_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] pci:v00001002d00006760sv00001028sd000004CC* ID_PRODUCT_FROM_DATABASE=Vostro 3350 +pci:v00001002d00006760sv00001043sd000084A0* + ID_PRODUCT_FROM_DATABASE=Seymour XT [Radeon HD 6470M] + pci:v00001002d00006761* ID_PRODUCT_FROM_DATABASE=Seymour LP [Radeon HD 6430M] @@ -4512,10 +4344,10 @@ pci:v00001002d00006763* ID_PRODUCT_FROM_DATABASE=Seymour [Radeon E6460] pci:v00001002d00006764* - ID_PRODUCT_FROM_DATABASE=Seymour [Mobility Radeon HD 6000 series] + ID_PRODUCT_FROM_DATABASE=Seymour [Radeon HD 6400M Series] pci:v00001002d00006765* - ID_PRODUCT_FROM_DATABASE=Seymour [Mobility Radeon HD 6000 series] + ID_PRODUCT_FROM_DATABASE=Seymour [Radeon HD 6400M Series] pci:v00001002d00006766* ID_PRODUCT_FROM_DATABASE=Caicos @@ -4527,28 +4359,40 @@ pci:v00001002d00006768* ID_PRODUCT_FROM_DATABASE=Caicos pci:v00001002d00006770* - ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 6400 Series] + ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 6450A/7450A] pci:v00001002d00006771* - ID_PRODUCT_FROM_DATABASE=Caicos + ID_PRODUCT_FROM_DATABASE=Caicos XTX [Radeon HD 8490] pci:v00001002d00006772* - ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 7400A Series] + ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 7450A] pci:v00001002d00006778* - ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 7000 Series] + ID_PRODUCT_FROM_DATABASE=Caicos XT [Radeon HD 7470] + +pci:v00001002d00006778sv00001462sd0000B493* + ID_PRODUCT_FROM_DATABASE=Radeon HD 8470 OEM pci:v00001002d00006779* ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 6450] +pci:v00001002d00006779sv0000148Csd00008450* + ID_PRODUCT_FROM_DATABASE=Radeon HD 8450 OEM + +pci:v00001002d00006779sv0000174Bsd00007450* + ID_PRODUCT_FROM_DATABASE=Radeon HD 7450 + pci:v00001002d00006779sv0000174Bsd0000E164* ID_PRODUCT_FROM_DATABASE=Sapphire HD 6450 1GB DDR3 +pci:v00001002d00006779sv000017AFsd00008450* + ID_PRODUCT_FROM_DATABASE=Radeon HD 8450 OEM + pci:v00001002d0000677B* - ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 7400 Series] + ID_PRODUCT_FROM_DATABASE=Caicos PRO [Radeon HD 7450] pci:v00001002d00006780* - ID_PRODUCT_FROM_DATABASE=Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] + ID_PRODUCT_FROM_DATABASE=Tahiti XT [FirePro W9000] pci:v00001002d00006784* ID_PRODUCT_FROM_DATABASE=Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] @@ -4557,7 +4401,19 @@ pci:v00001002d00006788* ID_PRODUCT_FROM_DATABASE=Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] pci:v00001002d0000678A* - ID_PRODUCT_FROM_DATABASE=Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] + ID_PRODUCT_FROM_DATABASE=Tahiti PRO [FirePro Series] + +pci:v00001002d0000678Asv00001002sd0000030C* + ID_PRODUCT_FROM_DATABASE=FirePro W8000 + +pci:v00001002d0000678Asv00001002sd00000310* + ID_PRODUCT_FROM_DATABASE=FirePro S9000 + +pci:v00001002d0000678Asv00001002sd00000B2A* + ID_PRODUCT_FROM_DATABASE=FirePro S10000 + +pci:v00001002d0000678Asv00001028sd0000030C* + ID_PRODUCT_FROM_DATABASE=FirePro W8000 pci:v00001002d00006790* ID_PRODUCT_FROM_DATABASE=Tahiti @@ -4571,17 +4427,53 @@ pci:v00001002d00006792* pci:v00001002d00006798* ID_PRODUCT_FROM_DATABASE=Tahiti XT [Radeon HD 7970] +pci:v00001002d00006798sv00001002sd00003000* + ID_PRODUCT_FROM_DATABASE=Tahiti XT2 [Radeon HD 7970 GHz Edition] + +pci:v00001002d00006798sv00001043sd0000041C* + ID_PRODUCT_FROM_DATABASE=HD 7970 DirectCU II + +pci:v00001002d00006798sv00001043sd00000420* + ID_PRODUCT_FROM_DATABASE=HD 7970 DirectCU II TOP + +pci:v00001002d00006798sv00001043sd00000444* + ID_PRODUCT_FROM_DATABASE=HD 7970 DirectCU II TOP + +pci:v00001002d00006798sv00001043sd00009999* + ID_PRODUCT_FROM_DATABASE=ARES II + +pci:v00001002d00006798sv00001682sd00003211* + ID_PRODUCT_FROM_DATABASE=Double D HD 7970 Black Edition + +pci:v00001002d00006798sv00001682sd00003213* + ID_PRODUCT_FROM_DATABASE=HD 7970 Black Edition + +pci:v00001002d00006798sv00001787sd0000201C* + ID_PRODUCT_FROM_DATABASE=HD 7970 IceQ X² + +pci:v00001002d00006798sv00001787sd00002317* + ID_PRODUCT_FROM_DATABASE=Radeon HD 7990 + pci:v00001002d00006799* - ID_PRODUCT_FROM_DATABASE=New Zealand [Radeon HD 7990] + ID_PRODUCT_FROM_DATABASE=New Zealand [Radeon HD 7900 Series] pci:v00001002d0000679A* ID_PRODUCT_FROM_DATABASE=Tahiti PRO [Radeon HD 7950] +pci:v00001002d0000679Asv00001002sd00000B01* + ID_PRODUCT_FROM_DATABASE=Radeon HD 8950 OEM + +pci:v00001002d0000679Asv00001002sd00003000* + ID_PRODUCT_FROM_DATABASE=Radeon HD 7950 Boost Edition + +pci:v00001002d0000679Asv00001462sd00003000* + ID_PRODUCT_FROM_DATABASE=Radeon HD 8950 OEM + pci:v00001002d0000679B* - ID_PRODUCT_FROM_DATABASE=Tahiti [Radeon HD 7900 Series] + ID_PRODUCT_FROM_DATABASE=New Zealand [Radeon HD 7900 Series] pci:v00001002d0000679E* - ID_PRODUCT_FROM_DATABASE=Tahiti LE [Radeon HD 7800 Series] + ID_PRODUCT_FROM_DATABASE=Tahiti LE [Radeon HD 7870 XT] pci:v00001002d0000679F* ID_PRODUCT_FROM_DATABASE=Tahiti @@ -4589,8 +4481,26 @@ pci:v00001002d0000679F* pci:v00001002d00006800* ID_PRODUCT_FROM_DATABASE=Wimbledon XT [Radeon HD 7970M] +pci:v00001002d00006800sv00001002sd00000124* + ID_PRODUCT_FROM_DATABASE=Radeon HD 7970M + +pci:v00001002d00006800sv00008086sd00002110* + ID_PRODUCT_FROM_DATABASE=Radeon HD 7970M + +pci:v00001002d00006800sv00008086sd00002111* + ID_PRODUCT_FROM_DATABASE=Radeon HD 7970M + pci:v00001002d00006801* - ID_PRODUCT_FROM_DATABASE=Wimbledon + ID_PRODUCT_FROM_DATABASE=Pitcairn XT [Radeon HD 8970M] + +pci:v00001002d00006801sv00001002sd00000124* + ID_PRODUCT_FROM_DATABASE=Radeon HD 8970M + +pci:v00001002d00006801sv00008086sd00002110* + ID_PRODUCT_FROM_DATABASE=Radeon HD 8970M + +pci:v00001002d00006801sv00008086sd00002111* + ID_PRODUCT_FROM_DATABASE=Radeon HD 8970M pci:v00001002d00006802* ID_PRODUCT_FROM_DATABASE=Wimbledon @@ -4599,10 +4509,13 @@ pci:v00001002d00006806* ID_PRODUCT_FROM_DATABASE=Pitcairn pci:v00001002d00006808* - ID_PRODUCT_FROM_DATABASE=Pitcairn [ATI FirePro V(FireGL V) Graphics Adapter] + ID_PRODUCT_FROM_DATABASE=Pitcairn XT [FirePro W7000] + +pci:v00001002d00006808sv00001002sd00000310* + ID_PRODUCT_FROM_DATABASE=FirePro S7000 pci:v00001002d00006809* - ID_PRODUCT_FROM_DATABASE=Pitcairn [ATI FirePro V(FireGL V) Graphics Adapter] + ID_PRODUCT_FROM_DATABASE=Pitcairn LE [FirePro W5000] pci:v00001002d00006810* ID_PRODUCT_FROM_DATABASE=Pitcairn @@ -4617,46 +4530,52 @@ pci:v00001002d00006817* ID_PRODUCT_FROM_DATABASE=Pitcairn pci:v00001002d00006818* - ID_PRODUCT_FROM_DATABASE=Pitcairn [Radeon HD 7800] + ID_PRODUCT_FROM_DATABASE=Pitcairn XT [Radeon HD 7870 GHz Edition] + +pci:v00001002d00006818sv00001002sd00000B05* + ID_PRODUCT_FROM_DATABASE=Pitcairn XT [Radeon HD 8870 OEM] pci:v00001002d00006819* - ID_PRODUCT_FROM_DATABASE=Pitcairn PRO [Radeon HD 7800] + ID_PRODUCT_FROM_DATABASE=Pitcairn PRO [Radeon HD 7850] pci:v00001002d00006819sv0000174Bsd0000E221* ID_PRODUCT_FROM_DATABASE=Sapphire HD 7850 2G GDDR5 PCI-E DVI-I/DVI-D/HDMI/DP pci:v00001002d00006820* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8800M Series + ID_PRODUCT_FROM_DATABASE=Venus XTX [Radeon HD 8800M Series] pci:v00001002d00006821* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8800M Series + ID_PRODUCT_FROM_DATABASE=Venus XT [Radeon HD 8800M Series] pci:v00001002d00006823* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8800M Series + ID_PRODUCT_FROM_DATABASE=Venus PRO [Radeon HD 8800M Series] pci:v00001002d00006824* ID_PRODUCT_FROM_DATABASE=Chelsea [Radeon HD 7700M Series] pci:v00001002d00006825* - ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7800M Series] + ID_PRODUCT_FROM_DATABASE=Heathrow XT [Radeon HD 7870M] pci:v00001002d00006826* ID_PRODUCT_FROM_DATABASE=Chelsea [Radeon HD 7700M Series] pci:v00001002d00006827* - ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7800M Series] + ID_PRODUCT_FROM_DATABASE=Heathrow PRO [Radeon HD 7850M/8850M] pci:v00001002d00006828* - ID_PRODUCT_FROM_DATABASE=Cape Verde + ID_PRODUCT_FROM_DATABASE=Cape Verde PRO [FirePro W600] pci:v00001002d00006829* ID_PRODUCT_FROM_DATABASE=Cape Verde pci:v00001002d0000682B* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8800M Series + ID_PRODUCT_FROM_DATABASE=Venus LE [Radeon HD 8800M Series] + +pci:v00001002d0000682D* + ID_PRODUCT_FROM_DATABASE=Chelsea [AMD Radeon HD 7700M Series] pci:v00001002d0000682F* - ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7700M Series] + ID_PRODUCT_FROM_DATABASE=Chelsea LP [Radeon HD 7730M] pci:v00001002d00006830* ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7800M Series] @@ -4677,16 +4596,25 @@ pci:v00001002d0000683B* ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7700 Series] pci:v00001002d0000683D* - ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7700 Series] + ID_PRODUCT_FROM_DATABASE=Cape Verde XT [Radeon HD 7770 GHz Edition] + +pci:v00001002d0000683Dsv00001002sd00000030* + ID_PRODUCT_FROM_DATABASE=Cape Verde XT [Radeon HD 8760 OEM] + +pci:v00001002d0000683Dsv00001019sd00000030* + ID_PRODUCT_FROM_DATABASE=Radeon HD 8760 OEM + +pci:v00001002d0000683Dsv0000103Csd00006890* + ID_PRODUCT_FROM_DATABASE=Radeon HD 8760 OEM pci:v00001002d0000683F* - ID_PRODUCT_FROM_DATABASE=Cape Verde PRO [Radeon HD 7700 Series] + ID_PRODUCT_FROM_DATABASE=Cape Verde PRO [Radeon HD 7750] pci:v00001002d00006840* - ID_PRODUCT_FROM_DATABASE=Thames XT/GL [Radeon HD 7600M Series] + ID_PRODUCT_FROM_DATABASE=Thames XT [Radeon HD 7670M] pci:v00001002d00006841* - ID_PRODUCT_FROM_DATABASE=Thames [Radeon 7500M/7600M Series] + ID_PRODUCT_FROM_DATABASE=Thames [Radeon 7550M/7570M/7650M] pci:v00001002d00006842* ID_PRODUCT_FROM_DATABASE=Thames LE [Radeon HD 7000M Series] @@ -4700,9 +4628,6 @@ pci:v00001002d00006849* pci:v00001002d0000684C* ID_PRODUCT_FROM_DATABASE=Pitcairn [ATI FirePro V(FireGL V) Graphics Adapter] -pci:v00001002d00006850* - ID_PRODUCT_FROM_DATABASE=Lombok GL AIO [Radeon HD 7570] - pci:v00001002d00006858* ID_PRODUCT_FROM_DATABASE=Lombok [Radeon HD 7400 series] @@ -4710,76 +4635,115 @@ pci:v00001002d00006880* ID_PRODUCT_FROM_DATABASE=Cypress pci:v00001002d00006888* - ID_PRODUCT_FROM_DATABASE=Cypress [FirePro 3D V8800] + ID_PRODUCT_FROM_DATABASE=Cypress XT [FirePro V8800] pci:v00001002d00006889* - ID_PRODUCT_FROM_DATABASE=Cypress [FirePro V7800] + ID_PRODUCT_FROM_DATABASE=Cypress PRO [FirePro V7800] + +pci:v00001002d00006889sv00001002sd00000301* + ID_PRODUCT_FROM_DATABASE=FirePro V7800P pci:v00001002d0000688A* - ID_PRODUCT_FROM_DATABASE=Cypress XT [FirePro 3D V9800] + ID_PRODUCT_FROM_DATABASE=Cypress XT [FirePro V9800] + +pci:v00001002d0000688Asv00001002sd0000030C* + ID_PRODUCT_FROM_DATABASE=FirePro V9800P pci:v00001002d0000688C* - ID_PRODUCT_FROM_DATABASE=Cypress [AMD FireStream 9370] + ID_PRODUCT_FROM_DATABASE=Cypress XT GL [FireStream 9370] pci:v00001002d0000688D* - ID_PRODUCT_FROM_DATABASE=Cypress [AMD FireStream 9350] + ID_PRODUCT_FROM_DATABASE=Cypress PRO GL [FireStream 9350] pci:v00001002d00006898* ID_PRODUCT_FROM_DATABASE=Cypress XT [Radeon HD 5870] +pci:v00001002d00006898sv00001002sd00000B00* + ID_PRODUCT_FROM_DATABASE=Radeon HD 5870 Eyefinity⁶ Edition + +pci:v00001002d00006898sv0000106Bsd000000D0* + ID_PRODUCT_FROM_DATABASE=Radeon HD 5870 Mac Edition + pci:v00001002d00006898sv00001462sd00008032* ID_PRODUCT_FROM_DATABASE=R5870 PM2D1G +pci:v00001002d00006898sv0000174Bsd00006870* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6870 OEM + pci:v00001002d00006899* - ID_PRODUCT_FROM_DATABASE=Cypress PRO [Radeon HD 5800 Series] + ID_PRODUCT_FROM_DATABASE=Cypress PRO [Radeon HD 5850] pci:v00001002d00006899sv00001043sd00000330* ID_PRODUCT_FROM_DATABASE=EAH5850 [Radeon HD5850] +pci:v00001002d00006899sv0000174Bsd0000237B* + ID_PRODUCT_FROM_DATABASE=Radeon HD 5850 X2 + +pci:v00001002d00006899sv0000174Bsd00006850* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6850 OEM + pci:v00001002d0000689B* - ID_PRODUCT_FROM_DATABASE=Cypress [Radeon HD 6800 Series] + ID_PRODUCT_FROM_DATABASE=Cypress PRO [Radeon HD 6800 Series] pci:v00001002d0000689C* - ID_PRODUCT_FROM_DATABASE=Hemlock [Radeon HD 5900 Series] + ID_PRODUCT_FROM_DATABASE=Hemlock [Radeon HD 5970] + +pci:v00001002d0000689Csv00001043sd00000352* + ID_PRODUCT_FROM_DATABASE=ARES pci:v00001002d0000689D* - ID_PRODUCT_FROM_DATABASE=Hemlock [ATI Radeon HD 5900 Series] + ID_PRODUCT_FROM_DATABASE=Hemlock [Radeon HD 5970] pci:v00001002d0000689E* - ID_PRODUCT_FROM_DATABASE=Cypress LE [Radeon HD 5800 Series] + ID_PRODUCT_FROM_DATABASE=Cypress LE [Radeon HD 5830] pci:v00001002d000068A0* - ID_PRODUCT_FROM_DATABASE=Broadway XT [Mobility Radeon HD 5800 Series] + ID_PRODUCT_FROM_DATABASE=Broadway XT [Mobility Radeon HD 5870] + +pci:v00001002d000068A0sv00001028sd000012EF* + ID_PRODUCT_FROM_DATABASE=FirePro M7820 pci:v00001002d000068A0sv0000103Csd00001520* - ID_PRODUCT_FROM_DATABASE=Broadway XT [FirePro M7820] + ID_PRODUCT_FROM_DATABASE=FirePro M7820 pci:v00001002d000068A1* - ID_PRODUCT_FROM_DATABASE=Broadway PRO [Mobility Radeon HD 5800 Series] + ID_PRODUCT_FROM_DATABASE=Broadway PRO [Mobility Radeon HD 5850] + +pci:v00001002d000068A1sv0000106Bsd000000CC* + ID_PRODUCT_FROM_DATABASE=iMac MC511 Mobility Radeon HD 5850 MXM Module pci:v00001002d000068A8* - ID_PRODUCT_FROM_DATABASE=Broadway [ATI Mobility Radeon HD 6800 Series] + ID_PRODUCT_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] + +pci:v00001002d000068A8sv0000103Csd0000159B* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6850M pci:v00001002d000068A9* - ID_PRODUCT_FROM_DATABASE=Juniper XT [FirePro 3D V5800] + ID_PRODUCT_FROM_DATABASE=Juniper XT [FirePro V5800] pci:v00001002d000068B8* - ID_PRODUCT_FROM_DATABASE=Juniper [Radeon HD 5700 Series] + ID_PRODUCT_FROM_DATABASE=Juniper XT [Radeon HD 5770] pci:v00001002d000068B8sv0000106Bsd000000CF* ID_PRODUCT_FROM_DATABASE=MacPro5,1 [Mac Pro 2.8GHz DDR3] pci:v00001002d000068B9* - ID_PRODUCT_FROM_DATABASE=Juniper [Radeon HD 5600/5700] + ID_PRODUCT_FROM_DATABASE=Juniper LE [Radeon HD 5670 640SP Edition] pci:v00001002d000068BA* - ID_PRODUCT_FROM_DATABASE=Juniper XT [AMD Radeon HD 6000 Series] + ID_PRODUCT_FROM_DATABASE=Juniper XT [Radeon HD 6770] pci:v00001002d000068BE* - ID_PRODUCT_FROM_DATABASE=Juniper [Radeon HD 5700 Series] + ID_PRODUCT_FROM_DATABASE=Juniper PRO [Radeon HD 5750] + +pci:v00001002d000068BEsv0000148Csd00003000* + ID_PRODUCT_FROM_DATABASE=Powercolor HD 6750 pci:v00001002d000068BF* - ID_PRODUCT_FROM_DATABASE=Juniper LE [Radeon HD 6700 Series] + ID_PRODUCT_FROM_DATABASE=Juniper PRO [Radeon HD 6750] + +pci:v00001002d000068BFsv0000174Bsd00006750* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6750 pci:v00001002d000068C0* ID_PRODUCT_FROM_DATABASE=Madison [Mobility Radeon HD 5000 Series] @@ -4787,8 +4751,17 @@ pci:v00001002d000068C0* pci:v00001002d000068C0sv0000103Csd00001521* ID_PRODUCT_FROM_DATABASE=Madison XT [FirePro M5800] +pci:v00001002d000068C0sv0000103Csd00001593* + ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 6570 + +pci:v00001002d000068C0sv0000103Csd00001596* + ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 6570 + +pci:v00001002d000068C0sv0000103Csd00001599* + ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 6570 + pci:v00001002d000068C1* - ID_PRODUCT_FROM_DATABASE=Madison [Radeon HD 5000M Series] + ID_PRODUCT_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750/6550M] pci:v00001002d000068C1sv00001025sd0000033D* ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 5650 @@ -4800,40 +4773,76 @@ pci:v00001002d000068C1sv0000103Csd00001521* ID_PRODUCT_FROM_DATABASE=Madison Pro [FirePro M5800] pci:v00001002d000068C7* - ID_PRODUCT_FROM_DATABASE=Pinewood [Radeon HD 5570] + ID_PRODUCT_FROM_DATABASE=Madison [Mobility Radeon HD 5570/6550A] pci:v00001002d000068C8* - ID_PRODUCT_FROM_DATABASE=FirePro V4800 + ID_PRODUCT_FROM_DATABASE=Redwood XT [FirePro V4800] pci:v00001002d000068C9* - ID_PRODUCT_FROM_DATABASE=Redwood [FirePro 3800 (FireGL)] + ID_PRODUCT_FROM_DATABASE=Redwood PRO [FirePro V3800] pci:v00001002d000068D8* - ID_PRODUCT_FROM_DATABASE=Redwood [Radeon HD 5670] + ID_PRODUCT_FROM_DATABASE=Redwood XT [Radeon HD 5670] + +pci:v00001002d000068D8sv00001787sd00003000* + ID_PRODUCT_FROM_DATABASE=Radeon HD 5730 pci:v00001002d000068D9* - ID_PRODUCT_FROM_DATABASE=Redwood PRO [Radeon HD 5500 Series] + ID_PRODUCT_FROM_DATABASE=Redwood PRO [Radeon HD 5570] + +pci:v00001002d000068D9sv0000148Csd00003000* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6510 + +pci:v00001002d000068D9sv0000148Csd00003001* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6610 pci:v00001002d000068DA* - ID_PRODUCT_FROM_DATABASE=Redwood PRO [Radeon HD 5500 Series] + ID_PRODUCT_FROM_DATABASE=Redwood LE [Radeon HD 5550] + +pci:v00001002d000068DAsv0000148Csd00003000* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6390 + +pci:v00001002d000068DAsv0000148Csd00003001* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6490 pci:v00001002d000068DE* ID_PRODUCT_FROM_DATABASE=Redwood pci:v00001002d000068E0* - ID_PRODUCT_FROM_DATABASE=Manhattan [Mobility Radeon HD 5400 Series] + ID_PRODUCT_FROM_DATABASE=Park [Mobility Radeon HD 5400 Series] pci:v00001002d000068E0sv0000103Csd00001486* ID_PRODUCT_FROM_DATABASE=TouchSmart tm2-2050er discrete GPU (Mobility Radeon HD 5450) pci:v00001002d000068E1* - ID_PRODUCT_FROM_DATABASE=Manhattan [Mobility Radeon HD 5430 Series] + ID_PRODUCT_FROM_DATABASE=Park [Mobility Radeon HD 5430] + +pci:v00001002d000068E1sv0000148Csd00007350* + ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 7350] + +pci:v00001002d000068E1sv00001545sd00005450* + ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 5450] + +pci:v00001002d000068E1sv0000174Bsd00005470* + ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 5470] + +pci:v00001002d000068E1sv0000174Bsd00006350* + ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 6350] + +pci:v00001002d000068E1sv000017AFsd00003015* + ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 7350] + +pci:v00001002d000068E1sv000017AFsd00008350* + ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 8350 OEM] pci:v00001002d000068E4* - ID_PRODUCT_FROM_DATABASE=Robson CE [AMD Radeon HD 6300 Series] + ID_PRODUCT_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] pci:v00001002d000068E5* - ID_PRODUCT_FROM_DATABASE=Robson LE [AMD Radeon HD 6300M Series] + ID_PRODUCT_FROM_DATABASE=Robson LE [Radeon HD 6330M] + +pci:v00001002d000068E5sv0000148Csd00007350* + ID_PRODUCT_FROM_DATABASE=Radeon HD 7350 pci:v00001002d000068E8* ID_PRODUCT_FROM_DATABASE=Cedar @@ -4851,7 +4860,13 @@ pci:v00001002d000068F8* ID_PRODUCT_FROM_DATABASE=Cedar [Radeon HD 7300 Series] pci:v00001002d000068F9* - ID_PRODUCT_FROM_DATABASE=Cedar PRO [Radeon HD 5450/6350] + ID_PRODUCT_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350 Series] + +pci:v00001002d000068F9sv00001019sd00000001* + ID_PRODUCT_FROM_DATABASE=Radeon HD 5450 + +pci:v00001002d000068F9sv00001019sd00000019* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6350 pci:v00001002d000068F9sv00001028sd0000010E* ID_PRODUCT_FROM_DATABASE=XPS 8300 @@ -4859,8 +4874,38 @@ pci:v00001002d000068F9sv00001028sd0000010E* pci:v00001002d000068F9sv00001043sd000003C2* ID_PRODUCT_FROM_DATABASE=EAH5450 SILENT/DI/512MD2 (LP) +pci:v00001002d000068F9sv0000148Csd00003001* + ID_PRODUCT_FROM_DATABASE=Radeon HD 5530/6250 + +pci:v00001002d000068F9sv0000148Csd00003002* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6290 + +pci:v00001002d000068F9sv0000148Csd00003003* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6230 + +pci:v00001002d000068F9sv0000148Csd00003004* + ID_PRODUCT_FROM_DATABASE=Radeon HD 6350 + +pci:v00001002d000068F9sv0000148Csd00007350* + ID_PRODUCT_FROM_DATABASE=Radeon HD 7350 + +pci:v00001002d000068F9sv0000174Bsd00005470* + ID_PRODUCT_FROM_DATABASE=Radeon HD 5470 + +pci:v00001002d000068F9sv0000174Bsd00005490* + ID_PRODUCT_FROM_DATABASE=Radeon HD 5490 + +pci:v00001002d000068F9sv0000174Bsd00005530* + ID_PRODUCT_FROM_DATABASE=Radeon HD 5530 + +pci:v00001002d000068F9sv0000174Bsd00007350* + ID_PRODUCT_FROM_DATABASE=Radeon HD 7350 + pci:v00001002d000068FA* - ID_PRODUCT_FROM_DATABASE=EG Cedar [Radeon HD 7300 Series] + ID_PRODUCT_FROM_DATABASE=Cedar [Radeon HD 7350] + +pci:v00001002d000068FAsv000017AFsd00003015* + ID_PRODUCT_FROM_DATABASE=Radeon HD 7350 pci:v00001002d000068FE* ID_PRODUCT_FROM_DATABASE=Cedar LE @@ -4872,28 +4917,19 @@ pci:v00001002d00007010* ID_PRODUCT_FROM_DATABASE=PCI Bridge [IGP 340M] pci:v00001002d00007100* - ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800] + ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800 XT] -pci:v00001002d00007102* - ID_PRODUCT_FROM_DATABASE=M58 [Radeon Mobility X1800] +pci:v00001002d00007101* + ID_PRODUCT_FROM_DATABASE=R520/M58 [Mobility Radeon X1800 XT] -pci:v00001002d00007103* - ID_PRODUCT_FROM_DATABASE=M58 [Mobility FireGL V7200] +pci:v00001002d00007102* + ID_PRODUCT_FROM_DATABASE=R520/M58 [Mobility Radeon X1800] pci:v00001002d00007104* - ID_PRODUCT_FROM_DATABASE=R520GL [FireGL V7200] (Primary) - -pci:v00001002d00007105* - ID_PRODUCT_FROM_DATABASE=R520 [FireGL] - -pci:v00001002d00007106* - ID_PRODUCT_FROM_DATABASE=M58 [Mobility FireGL V7100] - -pci:v00001002d00007108* - ID_PRODUCT_FROM_DATABASE=M58 [Radeon Mobility X1800] + ID_PRODUCT_FROM_DATABASE=R520 GL [FireGL V7200] pci:v00001002d00007109* - ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800] + ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800 XL] pci:v00001002d00007109sv00001002sd00000322* ID_PRODUCT_FROM_DATABASE=All-in-Wonder X1800XL @@ -4902,31 +4938,31 @@ pci:v00001002d00007109sv00001002sd00000D02* ID_PRODUCT_FROM_DATABASE=Radeon X1800 CrossFire Edition pci:v00001002d0000710A* - ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800] + ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800 GTO] -pci:v00001002d0000710B* - ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800] +pci:v00001002d0000710Asv00001002sd00000B12* + ID_PRODUCT_FROM_DATABASE=Radeon X1800 GTO² -pci:v00001002d0000710C* - ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800] +pci:v00001002d0000710B* + ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800 GTO] pci:v00001002d00007120* ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800] (Secondary) pci:v00001002d00007124* - ID_PRODUCT_FROM_DATABASE=R520GL [FireGL V7200] (Secondary) + ID_PRODUCT_FROM_DATABASE=R520 GL [FireGL V7200] (Secondary) pci:v00001002d00007129* ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800] (Secondary) pci:v00001002d00007129sv00001002sd00000323* - ID_PRODUCT_FROM_DATABASE=All-in-Wonder X1800XL (Secondary) + ID_PRODUCT_FROM_DATABASE=All-In-Wonder X1800 XL (Secondary) pci:v00001002d00007129sv00001002sd00000D03* ID_PRODUCT_FROM_DATABASE=Radeon X1800 CrossFire Edition (Secondary) pci:v00001002d00007140* - ID_PRODUCT_FROM_DATABASE=RV515 [Radeon X1600] + ID_PRODUCT_FROM_DATABASE=RV515 [Radeon X1300/X1550/X1600 Series] pci:v00001002d00007142* ID_PRODUCT_FROM_DATABASE=RV515 PRO [Radeon X1300/X1550 Series] @@ -4938,16 +4974,16 @@ pci:v00001002d00007142sv00001043sd00000142* ID_PRODUCT_FROM_DATABASE=EAX1300PRO/TD/256M pci:v00001002d00007143* - ID_PRODUCT_FROM_DATABASE=RV505 [Radeon X1550 Series] + ID_PRODUCT_FROM_DATABASE=RV505 [Radeon X1300/X1550 Series] pci:v00001002d00007145* - ID_PRODUCT_FROM_DATABASE=Radeon Mobility X1400 + ID_PRODUCT_FROM_DATABASE=RV515/M54 [Mobility Radeon X1400] pci:v00001002d00007145sv000017AAsd00002006* ID_PRODUCT_FROM_DATABASE=Thinkpad T60 model 2007 pci:v00001002d00007146* - ID_PRODUCT_FROM_DATABASE=RV515 [Radeon X1300] + ID_PRODUCT_FROM_DATABASE=RV515 [Radeon X1300/X1550] pci:v00001002d00007146sv00001002sd00000322* ID_PRODUCT_FROM_DATABASE=All-in-Wonder 2006 PCI-E Edition @@ -4959,31 +4995,16 @@ pci:v00001002d00007147* ID_PRODUCT_FROM_DATABASE=RV505 [Radeon X1550 64-bit] pci:v00001002d00007149* - ID_PRODUCT_FROM_DATABASE=M52 [Mobility Radeon X1300] + ID_PRODUCT_FROM_DATABASE=RV515/M52 [Mobility Radeon X1300] pci:v00001002d0000714A* - ID_PRODUCT_FROM_DATABASE=M52 [Mobility Radeon X1300] - -pci:v00001002d0000714B* - ID_PRODUCT_FROM_DATABASE=M52 [Mobility Radeon X1300] - -pci:v00001002d0000714C* - ID_PRODUCT_FROM_DATABASE=M52 [Mobility Radeon X1300] - -pci:v00001002d0000714D* - ID_PRODUCT_FROM_DATABASE=RV515 [Radeon X1300] - -pci:v00001002d0000714E* - ID_PRODUCT_FROM_DATABASE=RV515LE [Radeon X1300] + ID_PRODUCT_FROM_DATABASE=RV515/M52 [Mobility Radeon X1300] pci:v00001002d00007152* - ID_PRODUCT_FROM_DATABASE=RV515GL [FireGL V3300] (Primary) + ID_PRODUCT_FROM_DATABASE=RV515 GL [FireGL V3300] pci:v00001002d00007153* - ID_PRODUCT_FROM_DATABASE=RV515GL [FireGL V3350] - -pci:v00001002d0000715E* - ID_PRODUCT_FROM_DATABASE=RV515 [Radeon X1300] + ID_PRODUCT_FROM_DATABASE=RV515 GL [FireGL V3350] pci:v00001002d0000715F* ID_PRODUCT_FROM_DATABASE=RV505 CE [Radeon X1550 64-bit] @@ -4998,7 +5019,7 @@ pci:v00001002d00007163* ID_PRODUCT_FROM_DATABASE=RV505 [Radeon X1550 Series] (Secondary) pci:v00001002d00007166* - ID_PRODUCT_FROM_DATABASE=RV515 [Radeon X1300] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV515 [Radeon X1300/X1550 Series] (Secondary) pci:v00001002d00007166sv00001002sd00000323* ID_PRODUCT_FROM_DATABASE=All-in-Wonder 2006 PCI-E Edition (Secondary) @@ -5009,89 +5030,95 @@ pci:v00001002d00007166sv00001545sd00001997* pci:v00001002d00007167* ID_PRODUCT_FROM_DATABASE=RV515 [Radeon X1550 64-bit] (Secondary) -pci:v00001002d0000716E* - ID_PRODUCT_FROM_DATABASE=RV515LE [Radeon X1300] Secondary - pci:v00001002d00007172* - ID_PRODUCT_FROM_DATABASE=RV515GL [FireGL V3300] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV515 GL [FireGL V3300] (Secondary) pci:v00001002d00007173* - ID_PRODUCT_FROM_DATABASE=RV515GL [FireGL V3350] (Secondary) - -pci:v00001002d00007180* - ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] + ID_PRODUCT_FROM_DATABASE=RV515 GL [FireGL V3350] (Secondary) pci:v00001002d00007181* - ID_PRODUCT_FROM_DATABASE=RV516 XT Radeon X1600 Series (Primary) + ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1600/X1650 Series] pci:v00001002d00007183* ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] pci:v00001002d00007186* - ID_PRODUCT_FROM_DATABASE=RV515 [Radeon Mobility X1450] + ID_PRODUCT_FROM_DATABASE=RV516/M64 [Mobility Radeon X1450] pci:v00001002d00007187* ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] pci:v00001002d00007188* - ID_PRODUCT_FROM_DATABASE=M64-S [Mobility Radeon X2300] + ID_PRODUCT_FROM_DATABASE=RV516/M64-S [Mobility Radeon X2300] pci:v00001002d00007188sv0000103Csd000030C1* ID_PRODUCT_FROM_DATABASE=6910p pci:v00001002d0000718A* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon X2300 + ID_PRODUCT_FROM_DATABASE=RV516/M64 [Mobility Radeon X2300] + +pci:v00001002d0000718B* + ID_PRODUCT_FROM_DATABASE=RV516/M62 [Mobility Radeon X1350] pci:v00001002d0000718C* - ID_PRODUCT_FROM_DATABASE=M62CSP64 [Mobility Radeon X1350] + ID_PRODUCT_FROM_DATABASE=RV516/M62-CSP64 [Mobility Radeon X1350] pci:v00001002d0000718D* - ID_PRODUCT_FROM_DATABASE=M64CSP128 [Mobility Radeon X1450] + ID_PRODUCT_FROM_DATABASE=RV516/M64-CSP128 [Mobility Radeon X1450] pci:v00001002d00007193* ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1550 Series] pci:v00001002d00007196* - ID_PRODUCT_FROM_DATABASE=RV516 [Mobility Radeon X1350] + ID_PRODUCT_FROM_DATABASE=RV516/M62-S [Mobility Radeon X1350] pci:v00001002d0000719B* - ID_PRODUCT_FROM_DATABASE=FireMV 2250 + ID_PRODUCT_FROM_DATABASE=RV516 [FireMV 2250] pci:v00001002d0000719F* - ID_PRODUCT_FROM_DATABASE=RV516LE [Radeon X1550 64-bit] + ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1550 Series] pci:v00001002d000071A0* ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] (Secondary) pci:v00001002d000071A1* - ID_PRODUCT_FROM_DATABASE=RV516 XT Radeon X1600 Series (Secondary) + ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1600/X1650 Series] (Secondary) pci:v00001002d000071A3* - ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1300 Pro] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] (Secondary) pci:v00001002d000071A7* ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] (Secondary) pci:v00001002d000071BB* - ID_PRODUCT_FROM_DATABASE=FireMV 2250 (Secondary) + ID_PRODUCT_FROM_DATABASE=RV516 [FireMV 2250] (Secondary) pci:v00001002d000071C0* - ID_PRODUCT_FROM_DATABASE=RV530 [Radeon X1600] + ID_PRODUCT_FROM_DATABASE=RV530 [Radeon X1600 XT/X1650 GTO] + +pci:v00001002d000071C0sv00001002sd0000E160* + ID_PRODUCT_FROM_DATABASE=Radeon X1650 GTO + +pci:v00001002d000071C0sv0000174Bsd0000E160* + ID_PRODUCT_FROM_DATABASE=Radeon X1650 GTO pci:v00001002d000071C1* - ID_PRODUCT_FROM_DATABASE=Radeon X1650 Pro + ID_PRODUCT_FROM_DATABASE=RV535 [Radeon X1650 PRO] + +pci:v00001002d000071C1sv0000174Bsd00000880* + ID_PRODUCT_FROM_DATABASE=Radeon X1700 FSC pci:v00001002d000071C2* - ID_PRODUCT_FROM_DATABASE=RV530 [Radeon X1600] + ID_PRODUCT_FROM_DATABASE=RV530 [Radeon X1600 PRO] pci:v00001002d000071C4* - ID_PRODUCT_FROM_DATABASE=M56GL [Mobility FireGL V5200] + ID_PRODUCT_FROM_DATABASE=RV530/M56GL [Mobility FireGL V5200] pci:v00001002d000071C4sv000017AAsd00002007* ID_PRODUCT_FROM_DATABASE=ThinkPad T60p pci:v00001002d000071C5* - ID_PRODUCT_FROM_DATABASE=M56P [Radeon Mobility X1600] + ID_PRODUCT_FROM_DATABASE=RV530/M56-P [Mobility Radeon X1600] pci:v00001002d000071C5sv0000103Csd0000309F* ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook @@ -5109,91 +5136,91 @@ pci:v00001002d000071C6* ID_PRODUCT_FROM_DATABASE=RV530LE [Radeon X1600/X1650 PRO] pci:v00001002d000071C7* - ID_PRODUCT_FROM_DATABASE=RV535 [Radeon X1650 Series] + ID_PRODUCT_FROM_DATABASE=RV535 [Radeon X1650 PRO] pci:v00001002d000071C7sv00001787sd00003000* ID_PRODUCT_FROM_DATABASE=PowerColor X1650 PRO AGP pci:v00001002d000071CE* - ID_PRODUCT_FROM_DATABASE=RV530LE [Radeon X1600] + ID_PRODUCT_FROM_DATABASE=RV530 [Radeon X1300 XT/X1600 PRO] pci:v00001002d000071D2* - ID_PRODUCT_FROM_DATABASE=RV530GL [FireGL V3400] + ID_PRODUCT_FROM_DATABASE=RV530 GL [FireGL V3400] pci:v00001002d000071D4* - ID_PRODUCT_FROM_DATABASE=M66GL [ATI Mobility FireGL V5250] + ID_PRODUCT_FROM_DATABASE=RV530/M66 GL [Mobility FireGL V5250] pci:v00001002d000071D5* - ID_PRODUCT_FROM_DATABASE=M66-P [Mobility Radeon X1700] + ID_PRODUCT_FROM_DATABASE=RV530/M66-P [Mobility Radeon X1700] pci:v00001002d000071D6* - ID_PRODUCT_FROM_DATABASE=M66-XT [Mobility Radeon X1700] + ID_PRODUCT_FROM_DATABASE=RV530/M66-XT [Mobility Radeon X1700] pci:v00001002d000071DE* - ID_PRODUCT_FROM_DATABASE=RV530LE [Radeon X1600] + ID_PRODUCT_FROM_DATABASE=RV530/M66 [Mobility Radeon X1700/X2500] pci:v00001002d000071E0* ID_PRODUCT_FROM_DATABASE=RV530 [Radeon X1600] (Secondary) +pci:v00001002d000071E0sv0000174Bsd0000E161* + ID_PRODUCT_FROM_DATABASE=Radeon X1600 GTO (Secondary) + pci:v00001002d000071E1* - ID_PRODUCT_FROM_DATABASE=Radeon X1650 Pro (Secondary) + ID_PRODUCT_FROM_DATABASE=RV535 [Radeon X1650 PRO] (Secondary) + +pci:v00001002d000071E1sv0000174Bsd00000881* + ID_PRODUCT_FROM_DATABASE=Radeon X1700 FSC (Secondary) pci:v00001002d000071E2* ID_PRODUCT_FROM_DATABASE=RV530 [Radeon X1600] (Secondary) pci:v00001002d000071E6* - ID_PRODUCT_FROM_DATABASE=RV530LE [Radeon X1650 PRO] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV530 [Radeon X1650] (Secondary) pci:v00001002d000071E7* - ID_PRODUCT_FROM_DATABASE=RV535 [Radeon X1650 Series] + ID_PRODUCT_FROM_DATABASE=RV535 [Radeon X1650 PRO] (Secondary) pci:v00001002d000071E7sv00001787sd00003001* - ID_PRODUCT_FROM_DATABASE=PowerColor X1650 PRO AGP + ID_PRODUCT_FROM_DATABASE=Radeon X1650 PRO AGP pci:v00001002d000071F2* - ID_PRODUCT_FROM_DATABASE=RV530GL [FireGL V3400 (Secondary)] + ID_PRODUCT_FROM_DATABASE=RV530 GL [FireGL V3400] (Secondary) pci:v00001002d00007210* - ID_PRODUCT_FROM_DATABASE=M71 [Mobility Radeon X2100] + ID_PRODUCT_FROM_DATABASE=RV550/M71 [Mobility Radeon HD 2300] pci:v00001002d00007211* - ID_PRODUCT_FROM_DATABASE=M71 [Mobility Radeon X2100] (Secondary) + ID_PRODUCT_FROM_DATABASE=RV550/M71 [Mobility Radeon X2300 HD] pci:v00001002d00007240* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900] - -pci:v00001002d00007241* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900] + ID_PRODUCT_FROM_DATABASE=R580+ [Radeon X1950 XTX] -pci:v00001002d00007242* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900] - -pci:v00001002d00007243* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900] +pci:v00001002d00007240sv00001002sd00000D02* + ID_PRODUCT_FROM_DATABASE=Radeon X1950 CrossFire Edition pci:v00001002d00007244* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900] + ID_PRODUCT_FROM_DATABASE=R580+ [Radeon X1950 XT] -pci:v00001002d00007245* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900] +pci:v00001002d00007248* + ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1950] -pci:v00001002d00007246* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900] +pci:v00001002d00007249* + ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900 XT] -pci:v00001002d00007247* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900] +pci:v00001002d00007249sv00001002sd00000412* + ID_PRODUCT_FROM_DATABASE=All-In-Wonder X1900 -pci:v00001002d00007248* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900] +pci:v00001002d00007249sv00001002sd00000B12* + ID_PRODUCT_FROM_DATABASE=Radeon X1900 XT/XTX -pci:v00001002d00007249* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900 XT] (Primary) +pci:v00001002d00007249sv00001002sd00000D02* + ID_PRODUCT_FROM_DATABASE=Radeon X1900 CrossFire Edition -pci:v00001002d0000724A* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900] +pci:v00001002d00007249sv00001043sd00000160* + ID_PRODUCT_FROM_DATABASE=Radeon X1900 XTX 512 MB GDDR3 pci:v00001002d0000724B* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900] + ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900 GT] pci:v00001002d0000724Bsv00001002sd00000B12* ID_PRODUCT_FROM_DATABASE=Radeon X1900 (Primary) @@ -5201,56 +5228,53 @@ pci:v00001002d0000724Bsv00001002sd00000B12* pci:v00001002d0000724Bsv00001002sd00000B13* ID_PRODUCT_FROM_DATABASE=Radeon X1900 (Secondary) -pci:v00001002d0000724C* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900] - -pci:v00001002d0000724D* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900] - pci:v00001002d0000724E* - ID_PRODUCT_FROM_DATABASE=R580 [AMD Stream Processor] + ID_PRODUCT_FROM_DATABASE=R580 [FireGL V7350] pci:v00001002d00007269* ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900 XT] (Secondary) pci:v00001002d0000726B* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900] + ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900 GT] (Secondary) pci:v00001002d0000726E* ID_PRODUCT_FROM_DATABASE=R580 [AMD Stream Processor] (Secondary) pci:v00001002d00007280* - ID_PRODUCT_FROM_DATABASE=RV570 [Radeon X1950 Pro] + ID_PRODUCT_FROM_DATABASE=RV570 [Radeon X1950 PRO] pci:v00001002d00007288* - ID_PRODUCT_FROM_DATABASE=Radeon X1950 GT + ID_PRODUCT_FROM_DATABASE=RV570 [Radeon X1950 GT] pci:v00001002d00007291* - ID_PRODUCT_FROM_DATABASE=Radeon X1650 XT (Primary) (PCIE) + ID_PRODUCT_FROM_DATABASE=RV560 [Radeon X1650 XT] + +pci:v00001002d00007291sv00001462sd00000810* + ID_PRODUCT_FROM_DATABASE=Radeon X1700 SE pci:v00001002d00007293* - ID_PRODUCT_FROM_DATABASE=Radeon X1650 Series + ID_PRODUCT_FROM_DATABASE=RV560 [Radeon X1650 GT] pci:v00001002d000072A0* - ID_PRODUCT_FROM_DATABASE=RV570 [Radeon X1950 Pro] (secondary) + ID_PRODUCT_FROM_DATABASE=RV570 [Radeon X1950 PRO] (Secondary) pci:v00001002d000072A8* - ID_PRODUCT_FROM_DATABASE=Radeon X1950 GT (Secondary) + ID_PRODUCT_FROM_DATABASE=RV570 [Radeon X1950 GT] (Secondary) pci:v00001002d000072B1* - ID_PRODUCT_FROM_DATABASE=Radeon X1650 XT (Secondary) (PCIE) + ID_PRODUCT_FROM_DATABASE=RV560 [Radeon X1650 XT] (Secondary) pci:v00001002d000072B3* - ID_PRODUCT_FROM_DATABASE=Radeon X1650 Series (Secondary) + ID_PRODUCT_FROM_DATABASE=RV560 [Radeon X1650 GT] (Secondary) pci:v00001002d00007833* ID_PRODUCT_FROM_DATABASE=Radeon 9100 IGP Host Bridge pci:v00001002d00007834* - ID_PRODUCT_FROM_DATABASE=Radeon 9100 PRO IGP + ID_PRODUCT_FROM_DATABASE=RS350 [Radeon 9100 PRO/XT IGP] pci:v00001002d00007835* - ID_PRODUCT_FROM_DATABASE=Radeon Mobility 9200 IGP + ID_PRODUCT_FROM_DATABASE=RS350M [Mobility Radeon 9000 IGP] pci:v00001002d00007838* ID_PRODUCT_FROM_DATABASE=Radeon 9100 IGP PCI/AGP Bridge @@ -5295,7 +5319,7 @@ pci:v00001002d00007919sv000017F2sd00005000* ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard pci:v00001002d0000791E* - ID_PRODUCT_FROM_DATABASE=RS690 [Radeon X1200 Series] + ID_PRODUCT_FROM_DATABASE=RS690 [Radeon X1200] pci:v00001002d0000791Esv00001462sd00007327* ID_PRODUCT_FROM_DATABASE=K9AG Neo2 @@ -5304,7 +5328,7 @@ pci:v00001002d0000791Esv000017F2sd00005000* ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard pci:v00001002d0000791F* - ID_PRODUCT_FROM_DATABASE=RS690M [Radeon X1200 Series] + ID_PRODUCT_FROM_DATABASE=RS690M [Radeon Xpress 1200/1250/1270] pci:v00001002d0000791Fsv00001179sd0000FF50* ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E @@ -5331,34 +5355,25 @@ pci:v00001002d0000793B* ID_PRODUCT_FROM_DATABASE=RS600 HDMI Audio [Radeon Xpress 1250] pci:v00001002d0000793F* - ID_PRODUCT_FROM_DATABASE=RS600 [Radeon Xpress 1250] + ID_PRODUCT_FROM_DATABASE=RS690M [Radeon Xpress 1200/1250/1270] (Secondary) pci:v00001002d00007941* ID_PRODUCT_FROM_DATABASE=RS600 [Radeon Xpress 1250] pci:v00001002d00007942* - ID_PRODUCT_FROM_DATABASE=RS600 [Radeon Xpress 1250] - -pci:v00001002d0000796C* - ID_PRODUCT_FROM_DATABASE=RS740 - -pci:v00001002d0000796D* - ID_PRODUCT_FROM_DATABASE=RS740 + ID_PRODUCT_FROM_DATABASE=RS600M [Radeon Xpress 1250] pci:v00001002d0000796E* ID_PRODUCT_FROM_DATABASE=RS740 [Radeon 2100] -pci:v00001002d0000796F* - ID_PRODUCT_FROM_DATABASE=RS740 - -pci:v00001002d00007C37* - ID_PRODUCT_FROM_DATABASE=RV350 AQ [Radeon 9600 SE] - pci:v00001002d00009400* ID_PRODUCT_FROM_DATABASE=R600 [Radeon HD 2900 Series] +pci:v00001002d00009400sv00001002sd00002552* + ID_PRODUCT_FROM_DATABASE=Radeon HD 2900 XT + pci:v00001002d00009400sv00001002sd00003000* - ID_PRODUCT_FROM_DATABASE=Sapphire Radeon HD 2900 XT + ID_PRODUCT_FROM_DATABASE=Radeon HD 2900 PRO pci:v00001002d00009400sv00001002sd00003142* ID_PRODUCT_FROM_DATABASE=HIS Radeon HD 2900XT 512MB GDDR3 VIVO PCIe @@ -5366,9 +5381,6 @@ pci:v00001002d00009400sv00001002sd00003142* pci:v00001002d00009401* ID_PRODUCT_FROM_DATABASE=R600 [Radeon HD 2900 XT] -pci:v00001002d00009402* - ID_PRODUCT_FROM_DATABASE=R600 [Radeon HD 2900 XT] - pci:v00001002d00009403* ID_PRODUCT_FROM_DATABASE=R600 [Radeon HD 2900 PRO] @@ -5376,13 +5388,13 @@ pci:v00001002d00009405* ID_PRODUCT_FROM_DATABASE=R600 [Radeon HD 2900 GT] pci:v00001002d0000940A* - ID_PRODUCT_FROM_DATABASE=R600GL [Fire GL V8650] + ID_PRODUCT_FROM_DATABASE=R600 GL [FireGL V8650] pci:v00001002d0000940B* - ID_PRODUCT_FROM_DATABASE=R600GL [Fire GL V8600] + ID_PRODUCT_FROM_DATABASE=R600 GL [FireGL V8600] pci:v00001002d0000940F* - ID_PRODUCT_FROM_DATABASE=R600 [FireGL V7600] + ID_PRODUCT_FROM_DATABASE=R600 GL [FireGL V7600] pci:v00001002d00009440* ID_PRODUCT_FROM_DATABASE=RV770 [Radeon HD 4870] @@ -5400,26 +5412,29 @@ pci:v00001002d00009442sv0000174Bsd0000E810* ID_PRODUCT_FROM_DATABASE=Sapphire HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink pci:v00001002d00009443* - ID_PRODUCT_FROM_DATABASE=R700 [Radeon HD 4850] + ID_PRODUCT_FROM_DATABASE=R700 [Radeon HD 4850 X2] pci:v00001002d00009444* - ID_PRODUCT_FROM_DATABASE=RV770 [FirePro V8750 (FireGL)] + ID_PRODUCT_FROM_DATABASE=RV770 [FirePro V8750] pci:v00001002d00009446* - ID_PRODUCT_FROM_DATABASE=RV770 [FirePro V7760 (FireGL)] + ID_PRODUCT_FROM_DATABASE=RV770 [FirePro V7760] pci:v00001002d0000944A* - ID_PRODUCT_FROM_DATABASE=M98L [Mobility Radeon HD 4850] + ID_PRODUCT_FROM_DATABASE=RV770/M98L [Mobility Radeon HD 4850] pci:v00001002d0000944B* - ID_PRODUCT_FROM_DATABASE=RV770 [Mobility Radeon HD 4850 X2] + ID_PRODUCT_FROM_DATABASE=RV770/M98 [Mobility Radeon HD 4850 X2] pci:v00001002d0000944C* - ID_PRODUCT_FROM_DATABASE=RV770 LE [Radeon HD 4800 Series] + ID_PRODUCT_FROM_DATABASE=RV770 LE [Radeon HD 4830] pci:v00001002d0000944E* ID_PRODUCT_FROM_DATABASE=RV770 CE [Radeon HD 4710] +pci:v00001002d0000944Esv0000174Bsd00003261* + ID_PRODUCT_FROM_DATABASE=Sapphire Radeon HD 4810 + pci:v00001002d00009450* ID_PRODUCT_FROM_DATABASE=RV770 [FireStream 9270] @@ -5427,70 +5442,43 @@ pci:v00001002d00009452* ID_PRODUCT_FROM_DATABASE=RV770 [FireStream 9250] pci:v00001002d00009456* - ID_PRODUCT_FROM_DATABASE=RV770 [FirePro 3D V8700] + ID_PRODUCT_FROM_DATABASE=RV770 [FirePro V8700] pci:v00001002d0000945A* - ID_PRODUCT_FROM_DATABASE=M98 XT [Mobility Radeon HD 4870] - -pci:v00001002d0000945B* - ID_PRODUCT_FROM_DATABASE=RV770 - -pci:v00001002d0000945E* - ID_PRODUCT_FROM_DATABASE=RV770 + ID_PRODUCT_FROM_DATABASE=RV770/M98-XT [Mobility Radeon HD 4870] pci:v00001002d00009460* ID_PRODUCT_FROM_DATABASE=RV790 [Radeon HD 4890] pci:v00001002d00009462* - ID_PRODUCT_FROM_DATABASE=RV790LE [Radeon HD 4800 Series] + ID_PRODUCT_FROM_DATABASE=RV790 [Radeon HD 4860] pci:v00001002d0000946A* ID_PRODUCT_FROM_DATABASE=RV770 [FirePro M7750] -pci:v00001002d0000946B* - ID_PRODUCT_FROM_DATABASE=RV770 - -pci:v00001002d0000947A* - ID_PRODUCT_FROM_DATABASE=RV770 - -pci:v00001002d0000947B* - ID_PRODUCT_FROM_DATABASE=RV770 - pci:v00001002d00009480* - ID_PRODUCT_FROM_DATABASE=M96 [Mobility Radeon HD 4650] + ID_PRODUCT_FROM_DATABASE=RV730/M96 [Mobility Radeon HD 4650/5165] pci:v00001002d00009480sv0000103Csd00003628* ID_PRODUCT_FROM_DATABASE=ATI Mobility Radeon HD 4650 [dv6-1190en] -pci:v00001002d00009485* - ID_PRODUCT_FROM_DATABASE=RV740 Pro [Radeon HD 4770] - -pci:v00001002d00009487* - ID_PRODUCT_FROM_DATABASE=RV730 - pci:v00001002d00009488* - ID_PRODUCT_FROM_DATABASE=RV730 XT [Mobility Radeon HD 4670] + ID_PRODUCT_FROM_DATABASE=RV730/M96-XT [Mobility Radeon HD 4670] pci:v00001002d00009489* - ID_PRODUCT_FROM_DATABASE=M96 XT [Mobility FireGL V5725] - -pci:v00001002d0000948A* - ID_PRODUCT_FROM_DATABASE=RV730 - -pci:v00001002d0000948F* - ID_PRODUCT_FROM_DATABASE=RV730 + ID_PRODUCT_FROM_DATABASE=RV730/M96-XT [Mobility FireGL V5725] pci:v00001002d00009490* - ID_PRODUCT_FROM_DATABASE=RV730XT [Radeon HD 4670] + ID_PRODUCT_FROM_DATABASE=RV730 XT [Radeon HD 4670] pci:v00001002d00009490sv0000174Bsd0000E880* ID_PRODUCT_FROM_DATABASE=Radeon HD 4670 512MB DDR3 pci:v00001002d00009491* - ID_PRODUCT_FROM_DATABASE=M96 CSP [ATI RADEON E4690] + ID_PRODUCT_FROM_DATABASE=RV730/M96-CSP [Radeon E4690] pci:v00001002d00009495* - ID_PRODUCT_FROM_DATABASE=RV730 Pro AGP [Radeon HD 4600 Series] + ID_PRODUCT_FROM_DATABASE=RV730 [Radeon HD 4600 AGP Series] pci:v00001002d00009495sv00001002sd00009495* ID_PRODUCT_FROM_DATABASE=RV730 XT [PowerColor Radeon HD4670 AGP 1GB DDR] @@ -5505,43 +5493,34 @@ pci:v00001002d00009498* ID_PRODUCT_FROM_DATABASE=RV730 PRO [Radeon HD 4650] pci:v00001002d0000949C* - ID_PRODUCT_FROM_DATABASE=RV730 + ID_PRODUCT_FROM_DATABASE=RV730 [FirePro V7750] pci:v00001002d0000949E* - ID_PRODUCT_FROM_DATABASE=RV370 [FirePro V5700] + ID_PRODUCT_FROM_DATABASE=RV730 [FirePro V5700] pci:v00001002d0000949F* - ID_PRODUCT_FROM_DATABASE=RV730 [FirePro V5700] + ID_PRODUCT_FROM_DATABASE=RV730 [FirePro V3750] pci:v00001002d000094A0* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 4830 [M97] + ID_PRODUCT_FROM_DATABASE=RV740/M97 [Mobility Radeon HD 4830] pci:v00001002d000094A1* - ID_PRODUCT_FROM_DATABASE=[M97 XT] Mobility Radeon HD 4860 + ID_PRODUCT_FROM_DATABASE=RV740/M97-XT [Mobility Radeon HD 4860] pci:v00001002d000094A3* - ID_PRODUCT_FROM_DATABASE=M97 GL [ATI FirePro M7740] - -pci:v00001002d000094B1* - ID_PRODUCT_FROM_DATABASE=RV740 + ID_PRODUCT_FROM_DATABASE=RV740/M97 GL [FirePro M7740] pci:v00001002d000094B3* - ID_PRODUCT_FROM_DATABASE=Radeon HD 4770 [RV740] + ID_PRODUCT_FROM_DATABASE=RV740 PRO [Radeon HD 4770] pci:v00001002d000094B4* - ID_PRODUCT_FROM_DATABASE=RV740 LE [ATI Radeon HD 4700 Series] + ID_PRODUCT_FROM_DATABASE=RV740 PRO [Radeon HD 4750] pci:v00001002d000094B5* ID_PRODUCT_FROM_DATABASE=RV740 [Radeon HD 4770] -pci:v00001002d000094B9* - ID_PRODUCT_FROM_DATABASE=RV740 - -pci:v00001002d000094C0* - ID_PRODUCT_FROM_DATABASE=RV610 - pci:v00001002d000094C1* - ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2400 XT] + ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2400 PRO/XT] pci:v00001002d000094C1sv00001028sd00000211* ID_PRODUCT_FROM_DATABASE=Optiplex 755 @@ -5550,7 +5529,7 @@ pci:v00001002d000094C1sv00001028sd00000D02* ID_PRODUCT_FROM_DATABASE=Optiplex 755 pci:v00001002d000094C3* - ID_PRODUCT_FROM_DATABASE=RV610 video device [Radeon HD 2400 PRO] + ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2400 PRO] pci:v00001002d000094C3sv00001002sd000094C3* ID_PRODUCT_FROM_DATABASE=Radeon HD 2400PRO @@ -5565,37 +5544,31 @@ pci:v00001002d000094C3sv000018BCsd00003550* ID_PRODUCT_FROM_DATABASE=GeCube Radeon HD2400 PRO pci:v00001002d000094C4* - ID_PRODUCT_FROM_DATABASE=RV610 LE AGP [Radeon HD 2400 PRO AGP] + ID_PRODUCT_FROM_DATABASE=RV610 LE [Radeon HD 2400 PRO AGP] pci:v00001002d000094C5* ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2400 LE] -pci:v00001002d000094C6* - ID_PRODUCT_FROM_DATABASE=RV610 - pci:v00001002d000094C7* ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2350] pci:v00001002d000094C8* - ID_PRODUCT_FROM_DATABASE=Radeon HD 2400 XT + ID_PRODUCT_FROM_DATABASE=RV610/M74 [Mobility Radeon HD 2400 XT] pci:v00001002d000094C9* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 2400 + ID_PRODUCT_FROM_DATABASE=RV610/M72-S [Mobility Radeon HD 2400] pci:v00001002d000094C9sv00001002sd000094C9* ID_PRODUCT_FROM_DATABASE=Radeon HD2400 pci:v00001002d000094CB* - ID_PRODUCT_FROM_DATABASE=Radeon E2400 + ID_PRODUCT_FROM_DATABASE=RV610 [Radeon E2400] pci:v00001002d000094CC* - ID_PRODUCT_FROM_DATABASE=RV610 LE [Radeon HD 2400 Pro PCI] - -pci:v00001002d000094CD* - ID_PRODUCT_FROM_DATABASE=RV610 + ID_PRODUCT_FROM_DATABASE=RV610 LE [Radeon HD 2400 PRO PCI] pci:v00001002d00009500* - ID_PRODUCT_FROM_DATABASE=RV670 + ID_PRODUCT_FROM_DATABASE=RV670 [Radeon HD 3850 X2] pci:v00001002d00009501* ID_PRODUCT_FROM_DATABASE=RV670 [Radeon HD 3870] @@ -5604,34 +5577,43 @@ pci:v00001002d00009501sv0000174Bsd0000E620* ID_PRODUCT_FROM_DATABASE=Sapphire Radeon HD 3870 PCIe 2.0 pci:v00001002d00009504* - ID_PRODUCT_FROM_DATABASE=RV670 [Mobility Radeon HD 3850] + ID_PRODUCT_FROM_DATABASE=RV670/M88 [Mobility Radeon HD 3850] pci:v00001002d00009505* - ID_PRODUCT_FROM_DATABASE=RV670PRO [Radeon HD 3850] + ID_PRODUCT_FROM_DATABASE=RV670 [Radeon HD 3690/3850] + +pci:v00001002d00009505sv0000148Csd00003000* + ID_PRODUCT_FROM_DATABASE=Radeon HD 3850 + +pci:v00001002d00009505sv0000174Bsd00003000* + ID_PRODUCT_FROM_DATABASE=Radeon HD 3690/3850 + +pci:v00001002d00009505sv00001787sd00003000* + ID_PRODUCT_FROM_DATABASE=Radeon HD 3690 pci:v00001002d00009506* - ID_PRODUCT_FROM_DATABASE=RV670 [Mobility Radeon HD 3850 X2] + ID_PRODUCT_FROM_DATABASE=RV670/M88 [Mobility Radeon HD 3850 X2] pci:v00001002d00009507* - ID_PRODUCT_FROM_DATABASE=RV670 [Radeon HD 3850] + ID_PRODUCT_FROM_DATABASE=RV670 [Radeon HD 3830] pci:v00001002d00009508* - ID_PRODUCT_FROM_DATABASE=M88 XT Mobility Radeon HD 3870] + ID_PRODUCT_FROM_DATABASE=RV670/M88-XT [Mobility Radeon HD 3870] pci:v00001002d00009509* - ID_PRODUCT_FROM_DATABASE=RV670 [Mobility Radeon HD 3870] + ID_PRODUCT_FROM_DATABASE=RV670/M88 [Mobility Radeon HD 3870 X2] pci:v00001002d0000950F* - ID_PRODUCT_FROM_DATABASE=R680 [Radeon HD 3870 x2] + ID_PRODUCT_FROM_DATABASE=R680 [Radeon HD 3870 X2] pci:v00001002d00009511* - ID_PRODUCT_FROM_DATABASE=RV670 [FireGL 7700] + ID_PRODUCT_FROM_DATABASE=RV670 GL [FireGL V7700] -pci:v00001002d00009515* - ID_PRODUCT_FROM_DATABASE=RV670 AGP [Radeon HD 3850] +pci:v00001002d00009513* + ID_PRODUCT_FROM_DATABASE=RV670 [Radeon HD 3850 X2] -pci:v00001002d00009517* - ID_PRODUCT_FROM_DATABASE=RV670 +pci:v00001002d00009515* + ID_PRODUCT_FROM_DATABASE=RV670 PRO [Radeon HD 3850 AGP] pci:v00001002d00009519* ID_PRODUCT_FROM_DATABASE=RV670 [FireStream 9170] @@ -5639,113 +5621,116 @@ pci:v00001002d00009519* pci:v00001002d00009540* ID_PRODUCT_FROM_DATABASE=RV710 [Radeon HD 4550] -pci:v00001002d00009541* - ID_PRODUCT_FROM_DATABASE=RV710 - -pci:v00001002d00009542* - ID_PRODUCT_FROM_DATABASE=RV710 - -pci:v00001002d0000954E* - ID_PRODUCT_FROM_DATABASE=RV710 - pci:v00001002d0000954F* - ID_PRODUCT_FROM_DATABASE=RV710 [Radeon HD 4350] + ID_PRODUCT_FROM_DATABASE=RV710 [Radeon HD 4350/4550] pci:v00001002d0000954Fsv00001462sd00001618* ID_PRODUCT_FROM_DATABASE=R4350 MD512H (MS-V161) pci:v00001002d00009552* - ID_PRODUCT_FROM_DATABASE=RV710 [Mobility Radeon HD 4300 Series] + ID_PRODUCT_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330/4350/4550] + +pci:v00001002d00009552sv00001028sd00001103* + ID_PRODUCT_FROM_DATABASE=M92 [Mobility Radeon HD 4330] + +pci:v00001002d00009552sv00001458sd000021AC* + ID_PRODUCT_FROM_DATABASE=Radeon HD 4350 + +pci:v00001002d00009552sv00001458sd000021ED* + ID_PRODUCT_FROM_DATABASE=Radeon HD 4550 + +pci:v00001002d00009552sv0000148Csd00003000* + ID_PRODUCT_FROM_DATABASE=Radeon HD 4350 Go! Green 512MB GDDR3 + +pci:v00001002d00009552sv0000174Bsd00003000* + ID_PRODUCT_FROM_DATABASE=Radeon HD 4350/4550 HyperMemory DDR2 pci:v00001002d00009553* - ID_PRODUCT_FROM_DATABASE=RV710 [Mobility Radeon HD 4500/5100 Series] + ID_PRODUCT_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] pci:v00001002d00009553sv00001179sd0000FF82* ID_PRODUCT_FROM_DATABASE=Satellite L505-13T GPU (Mobility Radeon HD 5145) pci:v00001002d00009555* - ID_PRODUCT_FROM_DATABASE=RV710 [Mobility Radeon HD 4300/4500 Series] + ID_PRODUCT_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4350/4550] pci:v00001002d00009555sv0000103Csd00001411* ID_PRODUCT_FROM_DATABASE=ProBook 4720s GPU (Mobility Radeon HD 4350) pci:v00001002d00009557* - ID_PRODUCT_FROM_DATABASE=RV710 - -pci:v00001002d00009559* - ID_PRODUCT_FROM_DATABASE=RV635 [Mobility Radeon HD 3600 Series] + ID_PRODUCT_FROM_DATABASE=RV711 [FirePro RG220] pci:v00001002d0000955F* - ID_PRODUCT_FROM_DATABASE=RV710 [Mobility Radeon HD 4330] + ID_PRODUCT_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330] pci:v00001002d00009580* - ID_PRODUCT_FROM_DATABASE=RV630 + ID_PRODUCT_FROM_DATABASE=RV630 [Radeon HD 2600 PRO] pci:v00001002d00009581* - ID_PRODUCT_FROM_DATABASE=RV630 [Mobility Radeon HD 2600] + ID_PRODUCT_FROM_DATABASE=RV630/M76 [Mobility Radeon HD 2600] pci:v00001002d00009583* - ID_PRODUCT_FROM_DATABASE=RV630 [Mobility Radeon HD 2600 XT] + ID_PRODUCT_FROM_DATABASE=RV630/M76 [Mobility Radeon HD 2600 XT/2700] + +pci:v00001002d00009583sv0000106Bsd00000083* + ID_PRODUCT_FROM_DATABASE=iMac 7,1 + +pci:v00001002d00009583sv00001734sd00001107* + ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 2700 pci:v00001002d00009586* - ID_PRODUCT_FROM_DATABASE=RV 630 XT AGP [Radeon HD 2600 XT AGP] + ID_PRODUCT_FROM_DATABASE=RV630 XT [Radeon HD 2600 XT AGP] pci:v00001002d00009587* - ID_PRODUCT_FROM_DATABASE=RV630 PRO AGP [Radeon HD 2600 PRO AGP] + ID_PRODUCT_FROM_DATABASE=RV630 PRO [Radeon HD 2600 PRO AGP] pci:v00001002d00009588* - ID_PRODUCT_FROM_DATABASE=RV630 [Radeon HD 2600XT] + ID_PRODUCT_FROM_DATABASE=RV630 XT [Radeon HD 2600 XT] pci:v00001002d00009588sv00001458sd0000216C* ID_PRODUCT_FROM_DATABASE=Radeon HD 2600 XT, 256MB GDDR3, 2x DVI, TV-out, PCIe (GV-RX26T256H) pci:v00001002d00009589* - ID_PRODUCT_FROM_DATABASE=RV630 [Radeon HD 2600 Series] + ID_PRODUCT_FROM_DATABASE=RV630 PRO [Radeon HD 2600 PRO] + +pci:v00001002d00009589sv00001787sd00003000* + ID_PRODUCT_FROM_DATABASE=Radeon HD 3610 pci:v00001002d0000958A* - ID_PRODUCT_FROM_DATABASE=RV630 + ID_PRODUCT_FROM_DATABASE=RV630 [Radeon HD 2600 X2] pci:v00001002d0000958B* - ID_PRODUCT_FROM_DATABASE=RV630 [Mobility Radeon HD 2600 XT] + ID_PRODUCT_FROM_DATABASE=RV630/M76 [Mobility Radeon HD 2600 XT] pci:v00001002d0000958C* - ID_PRODUCT_FROM_DATABASE=RV630GL [FireGL v5600] + ID_PRODUCT_FROM_DATABASE=RV630 GL [FireGL V5600] pci:v00001002d0000958D* - ID_PRODUCT_FROM_DATABASE=RV630 [FireGL V3600] - -pci:v00001002d0000958E* - ID_PRODUCT_FROM_DATABASE=RV630 - -pci:v00001002d0000958F* - ID_PRODUCT_FROM_DATABASE=RV630 - -pci:v00001002d00009590* - ID_PRODUCT_FROM_DATABASE=RV635 + ID_PRODUCT_FROM_DATABASE=RV630 GL [FireGL V3600] pci:v00001002d00009591* - ID_PRODUCT_FROM_DATABASE=RV635 [Mobility Radeon HD 3650] + ID_PRODUCT_FROM_DATABASE=RV635/M86 [Mobility Radeon HD 3650] pci:v00001002d00009591sv00001002sd00009591* ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 3650 pci:v00001002d00009593* - ID_PRODUCT_FROM_DATABASE=RV635 [Mobility Radeon HD 3670] + ID_PRODUCT_FROM_DATABASE=RV635/M86 [Mobility Radeon HD 3670] pci:v00001002d00009595* - ID_PRODUCT_FROM_DATABASE=M86GL [Mobility FireGL V5700] + ID_PRODUCT_FROM_DATABASE=RV635/M86 GL [Mobility FireGL V5700] pci:v00001002d00009596* - ID_PRODUCT_FROM_DATABASE=RV635 PRO AGP [Radeon HD 3650] + ID_PRODUCT_FROM_DATABASE=RV635 PRO [Radeon HD 3650 AGP] pci:v00001002d00009596sv00001043sd00000028* ID_PRODUCT_FROM_DATABASE=EAH3650 SILENT/HTDI/512M/A pci:v00001002d00009597* - ID_PRODUCT_FROM_DATABASE=RV635 [Radeon HD 2600 Series] + ID_PRODUCT_FROM_DATABASE=RV635 [Radeon HD 3600 Series] pci:v00001002d00009598* - ID_PRODUCT_FROM_DATABASE=RV630 [Radeon HD 3600 Series] + ID_PRODUCT_FROM_DATABASE=RV635 [Radeon HD 3600 Series] pci:v00001002d00009598sv00001002sd00009598* ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 3600 @@ -5753,11 +5738,17 @@ pci:v00001002d00009598sv00001002sd00009598* pci:v00001002d00009598sv00001043sd000001D6* ID_PRODUCT_FROM_DATABASE=EAH3650 Silent -pci:v00001002d00009599* - ID_PRODUCT_FROM_DATABASE=RV635 +pci:v00001002d00009598sv00001043sd00003001* + ID_PRODUCT_FROM_DATABASE=Radeon HD 4570 -pci:v00001002d0000959B* - ID_PRODUCT_FROM_DATABASE=RV635 +pci:v00001002d00009598sv0000174Bsd00003001* + ID_PRODUCT_FROM_DATABASE=Radeon HD 3750 + +pci:v00001002d00009598sv0000174Bsd00004580* + ID_PRODUCT_FROM_DATABASE=RV635 PRO [Radeon HD 4580] + +pci:v00001002d00009599* + ID_PRODUCT_FROM_DATABASE=RV635 [Radeon HD 3650 AGP] pci:v00001002d000095C0* ID_PRODUCT_FROM_DATABASE=RV620 PRO [Radeon HD 3470] @@ -5766,10 +5757,10 @@ pci:v00001002d000095C0sv00001002sd000095C0* ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 3470 pci:v00001002d000095C2* - ID_PRODUCT_FROM_DATABASE=RV620 + ID_PRODUCT_FROM_DATABASE=RV620/M82 [Mobility Radeon HD 3410/3430] pci:v00001002d000095C4* - ID_PRODUCT_FROM_DATABASE=RV620 [Mobility Radeon HD 3400 Series] + ID_PRODUCT_FROM_DATABASE=RV620/M82 [Mobility Radeon HD 3450/3470] pci:v00001002d000095C4sv00001002sd000095C4* ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 3400 @@ -5781,28 +5772,19 @@ pci:v00001002d000095C5sv00001028sd00000342* ID_PRODUCT_FROM_DATABASE=OptiPlex 980 pci:v00001002d000095C6* - ID_PRODUCT_FROM_DATABASE=RV620 LE AGP [Radeon HD 3450] - -pci:v00001002d000095C7* - ID_PRODUCT_FROM_DATABASE=RV620 CE [Radeon HD 3430] + ID_PRODUCT_FROM_DATABASE=RV620 LE [Radeon HD 3450 AGP] pci:v00001002d000095C9* - ID_PRODUCT_FROM_DATABASE=RV620 PCI [Radeon HD 3450] + ID_PRODUCT_FROM_DATABASE=RV620 LE [Radeon HD 3450 PCI] pci:v00001002d000095CC* - ID_PRODUCT_FROM_DATABASE=RV620 [ATI FireGL V3700] - -pci:v00001002d000095CD* - ID_PRODUCT_FROM_DATABASE=RV620 [FireMV 2450] - -pci:v00001002d000095CE* - ID_PRODUCT_FROM_DATABASE=RV620 [FirePro 2260] + ID_PRODUCT_FROM_DATABASE=RV620 [FirePro V3700] pci:v00001002d000095CF* ID_PRODUCT_FROM_DATABASE=RV620 [FirePro 2260] pci:v00001002d0000960F* - ID_PRODUCT_FROM_DATABASE=RS780 HDMI Audio [Radeon HD 3000-3300 Series] + ID_PRODUCT_FROM_DATABASE=RS780 HDMI Audio [Radeon (HD) 3000 Series] pci:v00001002d00009610* ID_PRODUCT_FROM_DATABASE=RS780 [Radeon HD 3200] @@ -5811,28 +5793,25 @@ pci:v00001002d00009610sv00001458sd0000D000* ID_PRODUCT_FROM_DATABASE=GA-MA78GM-S2H Motherboard pci:v00001002d00009611* - ID_PRODUCT_FROM_DATABASE=RS780C [Radeon HD 3100] + ID_PRODUCT_FROM_DATABASE=RS780C [Radeon 3100] pci:v00001002d00009612* - ID_PRODUCT_FROM_DATABASE=RS780M/RS780MN [Mobility Radeon HD 3200 Graphics] + ID_PRODUCT_FROM_DATABASE=RS780M [Mobility Radeon HD 3200] pci:v00001002d00009613* - ID_PRODUCT_FROM_DATABASE=RS780MC [Mobility Radeon HD 3100 Graphics] + ID_PRODUCT_FROM_DATABASE=RS780MC [Mobility Radeon HD 3100] pci:v00001002d00009614* ID_PRODUCT_FROM_DATABASE=RS780D [Radeon HD 3300] -pci:v00001002d00009615* - ID_PRODUCT_FROM_DATABASE=RS780E [Radeon HD 3200] - pci:v00001002d00009616* - ID_PRODUCT_FROM_DATABASE=RS780L [Radeon HD 3000] + ID_PRODUCT_FROM_DATABASE=RS780L [Radeon 3000] pci:v00001002d00009640* ID_PRODUCT_FROM_DATABASE=BeaverCreek [Radeon HD 6550D] pci:v00001002d00009641* - ID_PRODUCT_FROM_DATABASE=BeaverCreek [Mobility Radeon HD 6620G] + ID_PRODUCT_FROM_DATABASE=BeaverCreek [Radeon HD 6620G] pci:v00001002d00009642* ID_PRODUCT_FROM_DATABASE=Sumo [Radeon HD 6370D] @@ -5891,9 +5870,6 @@ pci:v00001002d00009710sv00001019sd00002120* pci:v00001002d00009710sv00001043sd000083A2* ID_PRODUCT_FROM_DATABASE=M4A785TD Motherboard -pci:v00001002d00009711* - ID_PRODUCT_FROM_DATABASE=RS880 [Radeon 4100] - pci:v00001002d00009712* ID_PRODUCT_FROM_DATABASE=RS880M [Mobility Radeon HD 4200 Series] @@ -5939,6 +5915,54 @@ pci:v00001002d00009809* pci:v00001002d0000980A* ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 7290] +pci:v00001002d00009830* + ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8400] + +pci:v00001002d00009831* + ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8400E] + +pci:v00001002d00009832* + ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8330] + +pci:v00001002d00009833* + ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8330E] + +pci:v00001002d00009834* + ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8210] + +pci:v00001002d00009835* + ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8310E] + +pci:v00001002d00009836* + ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8280] + +pci:v00001002d00009837* + ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8280E] + +pci:v00001002d00009838* + ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8240] + +pci:v00001002d00009839* + ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8180] + +pci:v00001002d0000983A* + ID_PRODUCT_FROM_DATABASE=Kabini + +pci:v00001002d0000983B* + ID_PRODUCT_FROM_DATABASE=Kabini + +pci:v00001002d0000983C* + ID_PRODUCT_FROM_DATABASE=Kabini + +pci:v00001002d0000983D* + ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8250] + +pci:v00001002d0000983E* + ID_PRODUCT_FROM_DATABASE=Kabini + +pci:v00001002d0000983F* + ID_PRODUCT_FROM_DATABASE=Kabini + pci:v00001002d00009901* ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7660D] @@ -5969,6 +5993,21 @@ pci:v00001002d00009909* pci:v00001002d0000990A* ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7500G] +pci:v00001002d0000990B* + ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8650G] + +pci:v00001002d0000990C* + ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8670D] + +pci:v00001002d0000990D* + ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8550G] + +pci:v00001002d0000990E* + ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8570D] + +pci:v00001002d0000990F* + ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8610G] + pci:v00001002d00009910* ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7660G] @@ -5999,6 +6038,33 @@ pci:v00001002d00009993* pci:v00001002d00009994* ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7400G] +pci:v00001002d00009995* + ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8450G] + +pci:v00001002d00009996* + ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8470D] + +pci:v00001002d00009997* + ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8350G] + +pci:v00001002d00009998* + ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8370D] + +pci:v00001002d00009999* + ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8510G] + +pci:v00001002d0000999A* + ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8410G] + +pci:v00001002d0000999B* + ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8310G] + +pci:v00001002d0000999C* + ID_PRODUCT_FROM_DATABASE=Richland + +pci:v00001002d0000999D* + ID_PRODUCT_FROM_DATABASE=Richland + pci:v00001002d000099A0* ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7520G] @@ -6009,10 +6075,10 @@ pci:v00001002d000099A4* ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7400G] pci:v00001002d0000AA00* - ID_PRODUCT_FROM_DATABASE=R600 Audio Device [Radeon HD 2900 Series] + ID_PRODUCT_FROM_DATABASE=R600 HDMI Audio [Radeon HD 2900 Series] pci:v00001002d0000AA08* - ID_PRODUCT_FROM_DATABASE=RV630 audio device [Radeon HD 2600 Series] + ID_PRODUCT_FROM_DATABASE=RV630 HDMI Audio [Radeon HD 2600 Series] pci:v00001002d0000AA10* ID_PRODUCT_FROM_DATABASE=RV610 HDMI Audio [Radeon HD 2350/2400 Series] @@ -12023,9 +12089,6 @@ pci:v0000104Dd0000808A* pci:v0000104Dd000081CE* ID_PRODUCT_FROM_DATABASE=SxS Pro memory card -pci:v0000104Dd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - pci:v0000104E* ID_VENDOR_FROM_DATABASE=Oak Technology, Inc @@ -12473,6 +12536,9 @@ pci:v0000105Ad00003318* pci:v0000105Ad00003319* ID_PRODUCT_FROM_DATABASE=PDC20319 (FastTrak S150 TX4) +pci:v0000105Ad00003319sv0000105Asd00003319* + ID_PRODUCT_FROM_DATABASE=FastTrak S150 TX4 4 port SATA PCI board + pci:v0000105Ad00003319sv00008086sd00003427* ID_PRODUCT_FROM_DATABASE=S875WP1-E mainboard @@ -13604,9 +13670,6 @@ pci:v0000107D* pci:v0000107Dd00000000* ID_PRODUCT_FROM_DATABASE=P86C850 -pci:v0000107Dd00006F34* - ID_PRODUCT_FROM_DATABASE=WinFast DVR3100 H - pci:v0000107E* ID_VENDOR_FROM_DATABASE=Interphase Corporation @@ -17837,6 +17900,9 @@ pci:v000010DEd00000093* pci:v000010DEd00000095* ID_PRODUCT_FROM_DATABASE=G70 [GeForce 7800 SLI] +pci:v000010DEd00000097* + ID_PRODUCT_FROM_DATABASE=G70 [GeForce GTS 250] + pci:v000010DEd00000098* ID_PRODUCT_FROM_DATABASE=G70 [GeForce Go 7800] @@ -18333,7 +18399,7 @@ pci:v000010DEd00000145* ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6610 XL] pci:v000010DEd00000146* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce Go 6600TE/6200TE] + ID_PRODUCT_FROM_DATABASE=NV43 [GeForce Go6200 TE / 6600 TE] pci:v000010DEd00000147* ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6700 XL] @@ -18587,9 +18653,15 @@ pci:v000010DEd0000018C* pci:v000010DEd0000018D* ID_PRODUCT_FROM_DATABASE=NV18M [GeForce4 448 Go] +pci:v000010DEd00000190* + ID_PRODUCT_FROM_DATABASE=G80 [GeForce 8800 GTS / 8800 GTX] + pci:v000010DEd00000191* ID_PRODUCT_FROM_DATABASE=G80 [GeForce 8800 GTX] +pci:v000010DEd00000192* + ID_PRODUCT_FROM_DATABASE=G80 [GeForce 8800 GTS] + pci:v000010DEd00000193* ID_PRODUCT_FROM_DATABASE=G80 [GeForce 8800 GTS] @@ -18672,7 +18744,7 @@ pci:v000010DEd000001D2* ID_PRODUCT_FROM_DATABASE=G72 [GeForce 7550 LE] pci:v000010DEd000001D3* - ID_PRODUCT_FROM_DATABASE=G72 [GeForce 7300 SE/7200 GS] + ID_PRODUCT_FROM_DATABASE=G72 [GeForce 7200 GS / 7300 SE] pci:v000010DEd000001D6* ID_PRODUCT_FROM_DATABASE=G72M [GeForce Go 7200] @@ -18759,7 +18831,7 @@ pci:v000010DEd000001EFsv0000A0A0sd000003B9* ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard pci:v000010DEd000001F0* - ID_PRODUCT_FROM_DATABASE=NV18 [GeForce4 MX - nForce GPU] + ID_PRODUCT_FROM_DATABASE=C17 [GeForce4 MX IGP] pci:v000010DEd000001F0sv0000A0A0sd000003B5* ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard @@ -19451,9 +19523,6 @@ pci:v000010DEd00000311* pci:v000010DEd00000312* ID_PRODUCT_FROM_DATABASE=NV31 [GeForce FX 5600] -pci:v000010DEd00000313* - ID_PRODUCT_FROM_DATABASE=NV31 - pci:v000010DEd00000314* ID_PRODUCT_FROM_DATABASE=NV31 [GeForce FX 5600XT] @@ -19463,8 +19532,8 @@ pci:v000010DEd00000314sv00001043sd0000814A* pci:v000010DEd00000316* ID_PRODUCT_FROM_DATABASE=NV31M -pci:v000010DEd00000317* - ID_PRODUCT_FROM_DATABASE=NV31M Pro +pci:v000010DEd00000318* + ID_PRODUCT_FROM_DATABASE=NV31GL pci:v000010DEd0000031A* ID_PRODUCT_FROM_DATABASE=NV31M [GeForce FX Go5600] @@ -19566,7 +19635,7 @@ pci:v000010DEd0000032D* ID_PRODUCT_FROM_DATABASE=NV34 [GeForce FX Go5100] pci:v000010DEd0000032F* - ID_PRODUCT_FROM_DATABASE=NV34GL + ID_PRODUCT_FROM_DATABASE=NV34 [GeForce FX 5200] pci:v000010DEd00000330* ID_PRODUCT_FROM_DATABASE=NV35 [GeForce FX 5900 Ultra] @@ -19613,9 +19682,6 @@ pci:v000010DEd00000343* pci:v000010DEd00000344* ID_PRODUCT_FROM_DATABASE=NV36.4 [GeForce FX 5700VE] -pci:v000010DEd00000345* - ID_PRODUCT_FROM_DATABASE=NV36.5 - pci:v000010DEd00000347* ID_PRODUCT_FROM_DATABASE=NV36 [GeForce FX Go5700] @@ -19628,18 +19694,12 @@ pci:v000010DEd00000348* pci:v000010DEd00000349* ID_PRODUCT_FROM_DATABASE=NV36M Pro -pci:v000010DEd0000034B* - ID_PRODUCT_FROM_DATABASE=NV36MAP - pci:v000010DEd0000034C* ID_PRODUCT_FROM_DATABASE=NV36 [Quadro FX Go1000] pci:v000010DEd0000034E* ID_PRODUCT_FROM_DATABASE=NV36GL [Quadro FX 1100] -pci:v000010DEd0000034F* - ID_PRODUCT_FROM_DATABASE=NV36GL - pci:v000010DEd00000360* ID_PRODUCT_FROM_DATABASE=MCP55 LPC Bridge @@ -20189,6 +20249,9 @@ pci:v000010DEd0000040F* pci:v000010DEd00000410* ID_PRODUCT_FROM_DATABASE=G92 [GeForce GT 330] +pci:v000010DEd00000414* + ID_PRODUCT_FROM_DATABASE=G92 [GeForce 9800 GT] + pci:v000010DEd00000420* ID_PRODUCT_FROM_DATABASE=G86 [GeForce 8400 SE] @@ -20601,7 +20664,7 @@ pci:v000010DEd000005E6* ID_PRODUCT_FROM_DATABASE=GT200b [GeForce GTX 275] pci:v000010DEd000005E7* - ID_PRODUCT_FROM_DATABASE=GT200 [Tesla C1060] + ID_PRODUCT_FROM_DATABASE=GT200 [Tesla C1060 / Tesla M1060] pci:v000010DEd000005EA* ID_PRODUCT_FROM_DATABASE=GT200 [GeForce GTX 260] @@ -20612,6 +20675,12 @@ pci:v000010DEd000005EB* pci:v000010DEd000005ED* ID_PRODUCT_FROM_DATABASE=GT200GL [Quadro Plex 2200 D2] +pci:v000010DEd000005F1* + ID_PRODUCT_FROM_DATABASE=GT200 [GeForce GTX 280] + +pci:v000010DEd000005F2* + ID_PRODUCT_FROM_DATABASE=GT200 [GeForce GTX 260] + pci:v000010DEd000005F8* ID_PRODUCT_FROM_DATABASE=GT200GL [Quadro Plex 2200 S4] @@ -20637,7 +20706,7 @@ pci:v000010DEd00000602* ID_PRODUCT_FROM_DATABASE=G92 [GeForce 8800 GT] pci:v000010DEd00000603* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce GT 230] + ID_PRODUCT_FROM_DATABASE=G92 [GeForce GT 230 OEM] pci:v000010DEd00000604* ID_PRODUCT_FROM_DATABASE=G92 [GeForce 9800 GX2] @@ -20741,6 +20810,12 @@ pci:v000010DEd0000061E* pci:v000010DEd0000061F* ID_PRODUCT_FROM_DATABASE=G92 [Quadro FX 3800M] +pci:v000010DEd00000620* + ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9800 GT] + +pci:v000010DEd00000621* + ID_PRODUCT_FROM_DATABASE=G94 [GeForce GT 230] + pci:v000010DEd00000622* ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GT] @@ -20783,12 +20858,21 @@ pci:v000010DEd0000062D* pci:v000010DEd0000062E* ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GT] +pci:v000010DEd0000062F* + ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9800 S] + +pci:v000010DEd00000630* + ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GT] + pci:v000010DEd00000631* ID_PRODUCT_FROM_DATABASE=G94M [GeForce GTS 160M] pci:v000010DEd00000632* ID_PRODUCT_FROM_DATABASE=G94M [GeForce GTS 150M] +pci:v000010DEd00000633* + ID_PRODUCT_FROM_DATABASE=G94 [GeForce GT 220] + pci:v000010DEd00000635* ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GSO] @@ -20801,6 +20885,9 @@ pci:v000010DEd00000638* pci:v000010DEd0000063A* ID_PRODUCT_FROM_DATABASE=G94M [Quadro FX 2700M] +pci:v000010DEd0000063F* + ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GE] + pci:v000010DEd00000640* ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9500 GT] @@ -20837,6 +20924,12 @@ pci:v000010DEd0000064B* pci:v000010DEd0000064C* ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9650M GT] +pci:v000010DEd0000064D* + ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9600 GT] + +pci:v000010DEd0000064E* + ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9600 GT / 9800 GT] + pci:v000010DEd00000651* ID_PRODUCT_FROM_DATABASE=G96 [GeForce G 110M] @@ -20847,7 +20940,10 @@ pci:v000010DEd00000653* ID_PRODUCT_FROM_DATABASE=G96M [GeForce GT 120M] pci:v000010DEd00000654* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce GT 220M] + ID_PRODUCT_FROM_DATABASE=G96M [GeForce GT 220M] + +pci:v000010DEd00000655* + ID_PRODUCT_FROM_DATABASE=G96 [GeForce GT 120] pci:v000010DEd00000656* ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9650 S] @@ -20867,32 +20963,101 @@ pci:v000010DEd0000065B* pci:v000010DEd0000065C* ID_PRODUCT_FROM_DATABASE=G96M [Quadro FX 770M] +pci:v000010DEd0000065D* + ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9500 GA / 9600 GT / GTS 250] + +pci:v000010DEd0000065F* + ID_PRODUCT_FROM_DATABASE=G96 [GeForce G210] + pci:v000010DEd000006C0* ID_PRODUCT_FROM_DATABASE=GF100 [GeForce GTX 480] +pci:v000010DEd000006C4* + ID_PRODUCT_FROM_DATABASE=GF100 [GeForce GTX 465] + +pci:v000010DEd000006CA* + ID_PRODUCT_FROM_DATABASE=GF100 [GeForce GTX 480M] + pci:v000010DEd000006CD* ID_PRODUCT_FROM_DATABASE=GF100 [GeForce GTX 470] pci:v000010DEd000006D1* ID_PRODUCT_FROM_DATABASE=GF100 [Tesla C2050 / C2070] +pci:v000010DEd000006D1sv000010DEsd00000771* + ID_PRODUCT_FROM_DATABASE=Tesla C2050 + +pci:v000010DEd000006D1sv000010DEsd00000772* + ID_PRODUCT_FROM_DATABASE=Tesla C2070 + pci:v000010DEd000006D2* ID_PRODUCT_FROM_DATABASE=GF100 [Tesla M2070] +pci:v000010DEd000006D2sv000010DEsd00000774* + ID_PRODUCT_FROM_DATABASE=Tesla M2070 + +pci:v000010DEd000006D2sv000010DEsd00000830* + ID_PRODUCT_FROM_DATABASE=Tesla M2070 + +pci:v000010DEd000006D2sv000010DEsd00000842* + ID_PRODUCT_FROM_DATABASE=Tesla M2070 + +pci:v000010DEd000006D2sv000010DEsd0000088F* + ID_PRODUCT_FROM_DATABASE=Tesla X2070 + +pci:v000010DEd000006D2sv000010DEsd00000908* + ID_PRODUCT_FROM_DATABASE=Tesla M2070 + pci:v000010DEd000006D8* ID_PRODUCT_FROM_DATABASE=GF100GL [Quadro 6000] pci:v000010DEd000006D9* ID_PRODUCT_FROM_DATABASE=GF100GL [Quadro 5000] +pci:v000010DEd000006DA* + ID_PRODUCT_FROM_DATABASE=GF100GLM [Quadro 5000M] + +pci:v000010DEd000006DC* + ID_PRODUCT_FROM_DATABASE=GF100GL [Quadro 6000] + pci:v000010DEd000006DD* ID_PRODUCT_FROM_DATABASE=GF100GL [Quadro 4000] pci:v000010DEd000006DE* - ID_PRODUCT_FROM_DATABASE=GF100 [Tesla S2050] + ID_PRODUCT_FROM_DATABASE=GF100 [Tesla T20 Processor] + +pci:v000010DEd000006DEsv000010DEsd00000773* + ID_PRODUCT_FROM_DATABASE=Tesla S2050 + +pci:v000010DEd000006DEsv000010DEsd0000082F* + ID_PRODUCT_FROM_DATABASE=Tesla M2050 + +pci:v000010DEd000006DEsv000010DEsd00000840* + ID_PRODUCT_FROM_DATABASE=Tesla X2070 + +pci:v000010DEd000006DEsv000010DEsd00000842* + ID_PRODUCT_FROM_DATABASE=Tesla M2050 + +pci:v000010DEd000006DEsv000010DEsd00000846* + ID_PRODUCT_FROM_DATABASE=Tesla M2050 + +pci:v000010DEd000006DEsv000010DEsd00000866* + ID_PRODUCT_FROM_DATABASE=Tesla M2050 + +pci:v000010DEd000006DEsv000010DEsd00000907* + ID_PRODUCT_FROM_DATABASE=Tesla M2050 + +pci:v000010DEd000006DEsv000010DEsd0000091E* + ID_PRODUCT_FROM_DATABASE=Tesla M2050 pci:v000010DEd000006DF* - ID_PRODUCT_FROM_DATABASE=GF100 [Tesla M2070Q] + ID_PRODUCT_FROM_DATABASE=GF100 [Tesla M2070-Q] + +pci:v000010DEd000006DFsv000010DEsd0000084D* + ID_PRODUCT_FROM_DATABASE=Tesla M2070-Q + +pci:v000010DEd000006DFsv000010DEsd0000087F* + ID_PRODUCT_FROM_DATABASE=Tesla M2070-Q pci:v000010DEd000006E0* ID_PRODUCT_FROM_DATABASE=G98 [GeForce 9300 GE] @@ -20907,7 +21072,7 @@ pci:v000010DEd000006E3* ID_PRODUCT_FROM_DATABASE=G98 [GeForce 8300 GS] pci:v000010DEd000006E4* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce 8400 GS] + ID_PRODUCT_FROM_DATABASE=G98 [GeForce 8400 GS Rev. 2] pci:v000010DEd000006E4sv00001458sd00003475* ID_PRODUCT_FROM_DATABASE=GV-NX84S256HE [GeForce 8400 GS] @@ -20939,6 +21104,12 @@ pci:v000010DEd000006EB* pci:v000010DEd000006EC* ID_PRODUCT_FROM_DATABASE=G98M [GeForce G 105M] +pci:v000010DEd000006ED* + ID_PRODUCT_FROM_DATABASE=G98 [GeForce 9600 GT / 9800 GT]] + +pci:v000010DEd000006EE* + ID_PRODUCT_FROM_DATABASE=G98 [GeForce 9600 GT / 9800 GT] + pci:v000010DEd000006EF* ID_PRODUCT_FROM_DATABASE=G98M [GeForce G 103M] @@ -20963,6 +21134,9 @@ pci:v000010DEd000006FD* pci:v000010DEd000006FF* ID_PRODUCT_FROM_DATABASE=G98 [HICx16 + Graphics] +pci:v000010DEd000006FFsv000010DEsd00000711* + ID_PRODUCT_FROM_DATABASE=HICx8 + Graphics + pci:v000010DEd00000751* ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller @@ -21447,7 +21621,7 @@ pci:v000010DEd0000084B* ID_PRODUCT_FROM_DATABASE=C77 [GeForce 8200] pci:v000010DEd0000084C* - ID_PRODUCT_FROM_DATABASE=C77 [nForce 780a SLI] + ID_PRODUCT_FROM_DATABASE=C77 [nForce 780a/980a SLI] pci:v000010DEd0000084D* ID_PRODUCT_FROM_DATABASE=C77 [nForce 750a SLI] @@ -21474,7 +21648,7 @@ pci:v000010DEd00000864* ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9300] pci:v000010DEd00000865* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9300] + ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9300/ION] pci:v000010DEd00000866* ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9400M G] @@ -21488,6 +21662,9 @@ pci:v000010DEd00000867sv0000106Bsd000000AD* pci:v000010DEd00000868* ID_PRODUCT_FROM_DATABASE=C79 [nForce 760i SLI] +pci:v000010DEd00000869* + ID_PRODUCT_FROM_DATABASE=MCP7A [GeForce 9400] + pci:v000010DEd0000086A* ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9400] @@ -21536,6 +21713,9 @@ pci:v000010DEd0000087E* pci:v000010DEd0000087F* ID_PRODUCT_FROM_DATABASE=ION LE VGA +pci:v000010DEd000008A2* + ID_PRODUCT_FROM_DATABASE=MCP89 [GeForce 320M] + pci:v000010DEd000008A3* ID_PRODUCT_FROM_DATABASE=MCP89 [GeForce 320M] @@ -21548,8 +21728,20 @@ pci:v000010DEd00000A20* pci:v000010DEd00000A20sv00001043sd00008311* ID_PRODUCT_FROM_DATABASE=ENGT220/DI/1GD3(LP)/V2 +pci:v000010DEd00000A21* + ID_PRODUCT_FROM_DATABASE=GT216M [GeForce GT 330M] + +pci:v000010DEd00000A22* + ID_PRODUCT_FROM_DATABASE=GT216 [GeForce 315] + pci:v000010DEd00000A23* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 210] + ID_PRODUCT_FROM_DATABASE=GT216 [GeForce 210] + +pci:v000010DEd00000A26* + ID_PRODUCT_FROM_DATABASE=GT216 [GeForce 405] + +pci:v000010DEd00000A27* + ID_PRODUCT_FROM_DATABASE=GT216 [GeForce 405] pci:v000010DEd00000A28* ID_PRODUCT_FROM_DATABASE=GT216 [GeForce GT 230M] @@ -21569,6 +21761,12 @@ pci:v000010DEd00000A2C* pci:v000010DEd00000A2D* ID_PRODUCT_FROM_DATABASE=GT216 [GeForce GT 320M] +pci:v000010DEd00000A30* + ID_PRODUCT_FROM_DATABASE=GT216 [GeForce 505] + +pci:v000010DEd00000A32* + ID_PRODUCT_FROM_DATABASE=GT216 [GeForce GT 415] + pci:v000010DEd00000A34* ID_PRODUCT_FROM_DATABASE=GT216 [GeForce GT 240M] @@ -21606,10 +21804,10 @@ pci:v000010DEd00000A67* ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 315] pci:v000010DEd00000A68* - ID_PRODUCT_FROM_DATABASE=G98M [GeForce G105M] + ID_PRODUCT_FROM_DATABASE=GT218M [GeForce G 105M] pci:v000010DEd00000A69* - ID_PRODUCT_FROM_DATABASE=G98M [GeForce G105M] + ID_PRODUCT_FROM_DATABASE=GT218M [GeForce G 105M] pci:v000010DEd00000A6A* ID_PRODUCT_FROM_DATABASE=GT218 [NVS 2100M] @@ -21653,6 +21851,12 @@ pci:v000010DEd00000A76* pci:v000010DEd00000A78* ID_PRODUCT_FROM_DATABASE=GT218GL [Quadro FX 380 LP] +pci:v000010DEd00000A7A* + ID_PRODUCT_FROM_DATABASE=GT218M [GeForce 315M] + +pci:v000010DEd00000A7B* + ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 505] + pci:v000010DEd00000A7C* ID_PRODUCT_FROM_DATABASE=GT218 [Quadro FX 380M] @@ -21981,7 +22185,7 @@ pci:v000010DEd00000CA9* ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GTS 250M] pci:v000010DEd00000CAC* - ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GT 220] + ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GT 220/315] pci:v000010DEd00000CAF* ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GT 335M] @@ -22044,13 +22248,13 @@ pci:v000010DEd00000D9D* ID_PRODUCT_FROM_DATABASE=MCP89 EHCI USB 2.0 Controller pci:v000010DEd00000DC0* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 440] + ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GT 440] pci:v000010DEd00000DC4* ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GTS 450] pci:v000010DEd00000DC5* - ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GTS 450] + ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GTS 450 OEM] pci:v000010DEd00000DC6* ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GTS 450] @@ -22070,9 +22274,18 @@ pci:v000010DEd00000DD1sv00001558sd00008687* pci:v000010DEd00000DD2* ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GT 445M] +pci:v000010DEd00000DD3* + ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GT 435M] + +pci:v000010DEd00000DD6* + ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GT 550M] + pci:v000010DEd00000DD8* ID_PRODUCT_FROM_DATABASE=GF106GL [Quadro 2000] +pci:v000010DEd00000DD8sv000010DEsd00000914* + ID_PRODUCT_FROM_DATABASE=Quadro 2000D + pci:v000010DEd00000DDA* ID_PRODUCT_FROM_DATABASE=GF106GLM [Quadro 2000M] @@ -22088,18 +22301,48 @@ pci:v000010DEd00000DE1sv00003842sd00001430* pci:v000010DEd00000DE2* ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 420] +pci:v000010DEd00000DE3* + ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 635M] + pci:v000010DEd00000DE4* ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 520] pci:v000010DEd00000DE5* ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 530] +pci:v000010DEd00000DE8* + ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 620M] + pci:v000010DEd00000DE9* ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 630M] +pci:v000010DEd00000DEA* + ID_PRODUCT_FROM_DATABASE=GF108 [GeForce 610M] + +pci:v000010DEd00000DEAsv000017AAsd0000365A* + ID_PRODUCT_FROM_DATABASE=GeForce 615 + +pci:v000010DEd00000DEAsv000017AAsd0000365B* + ID_PRODUCT_FROM_DATABASE=GeForce 615 + +pci:v000010DEd00000DEAsv000017AAsd0000365E* + ID_PRODUCT_FROM_DATABASE=GeForce 615 + +pci:v000010DEd00000DEAsv000017AAsd00003660* + ID_PRODUCT_FROM_DATABASE=GeForce 615 + +pci:v000010DEd00000DEAsv000017AAsd0000366C* + ID_PRODUCT_FROM_DATABASE=GeForce 615 + pci:v000010DEd00000DEB* ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 555M] +pci:v000010DEd00000DEC* + ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 525M] + +pci:v000010DEd00000DED* + ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 520M] + pci:v000010DEd00000DEE* ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 415M] @@ -22115,11 +22358,17 @@ pci:v000010DEd00000DF1* pci:v000010DEd00000DF2* ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 435M] +pci:v000010DEd00000DF3* + ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 420M] + pci:v000010DEd00000DF4* ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 540M] pci:v000010DEd00000DF5* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 540M] + ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 525M] + +pci:v000010DEd00000DF6* + ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 550M] pci:v000010DEd00000DF7* ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 520M] @@ -22133,6 +22382,9 @@ pci:v000010DEd00000DF9* pci:v000010DEd00000DFA* ID_PRODUCT_FROM_DATABASE=GF108GLM [Quadro 1000M] +pci:v000010DEd00000DFC* + ID_PRODUCT_FROM_DATABASE=GF108GLM [NVS 5200M] + pci:v000010DEd00000E08* ID_PRODUCT_FROM_DATABASE=GF119 HDMI Audio Controller @@ -22148,6 +22400,9 @@ pci:v000010DEd00000E0A* pci:v000010DEd00000E0C* ID_PRODUCT_FROM_DATABASE=GF114 HDMI Audio Controller +pci:v000010DEd00000E1A* + ID_PRODUCT_FROM_DATABASE=GK110 HDMI Audio [GeForce GTX Titan] + pci:v000010DEd00000E1B* ID_PRODUCT_FROM_DATABASE=GK107 HDMI Audio Controller @@ -22164,7 +22419,13 @@ pci:v000010DEd00000E23* ID_PRODUCT_FROM_DATABASE=GF104 [GeForce GTX 460 SE] pci:v000010DEd00000E24* - ID_PRODUCT_FROM_DATABASE=GF104 [GeForce GTX 460] + ID_PRODUCT_FROM_DATABASE=GF104 [GeForce GTX 460 OEM] + +pci:v000010DEd00000E30* + ID_PRODUCT_FROM_DATABASE=GF104 [GeForce GTX 470M] + +pci:v000010DEd00000E31* + ID_PRODUCT_FROM_DATABASE=GF104 [GeForce GTX 485M] pci:v000010DEd00000E3A* ID_PRODUCT_FROM_DATABASE=GF104 [Quadro 3000M] @@ -22173,17 +22434,20 @@ pci:v000010DEd00000E3B* ID_PRODUCT_FROM_DATABASE=GF104 [Quadro 4000M] pci:v000010DEd00000F00* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 630] + ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 630] pci:v000010DEd00000F01* - ID_PRODUCT_FROM_DATABASE=GeForce GT 620 + ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 620] pci:v000010DEd00000FC0* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 640] + ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 640 OEM] pci:v000010DEd00000FC1* ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 640] +pci:v000010DEd00000FC2* + ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 630 OEM] + pci:v000010DEd00000FC6* ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GTX 650] @@ -22199,9 +22463,33 @@ pci:v000010DEd00000FD1sv00001043sd00002103* pci:v000010DEd00000FD2* ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 640M] +pci:v000010DEd00000FD3* + ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 640M LE] + +pci:v000010DEd00000FD4* + ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GTX 660M] + +pci:v000010DEd00000FD5* + ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 650M Mac Edition] + +pci:v000010DEd00000FD8* + ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 640M Mac Edition] + +pci:v000010DEd00000FD9* + ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 645M] + +pci:v000010DEd00000FE1* + ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 730M] + +pci:v000010DEd00000FE4* + ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 750M] + pci:v000010DEd00000FF2* ID_PRODUCT_FROM_DATABASE=GK107 [GRID K1] +pci:v000010DEd00000FF9* + ID_PRODUCT_FROM_DATABASE=GK107 [Quadro K2000D] + pci:v000010DEd00000FFA* ID_PRODUCT_FROM_DATABASE=GK107 [Quadro K600] @@ -22220,11 +22508,38 @@ pci:v000010DEd00000FFE* pci:v000010DEd00000FFF* ID_PRODUCT_FROM_DATABASE=GK107 [Quadro 410] +pci:v000010DEd00001005* + ID_PRODUCT_FROM_DATABASE=GK110 [GeForce GTX Titan] + +pci:v000010DEd00001005sv00001043sd00008451* + ID_PRODUCT_FROM_DATABASE=GTXTITAN-6GD5 + +pci:v000010DEd00001005sv000010DEsd00001035* + ID_PRODUCT_FROM_DATABASE=GeForce GTX Titan + +pci:v000010DEd00001005sv00003842sd00002790* + ID_PRODUCT_FROM_DATABASE=GeForce GTX Titan + +pci:v000010DEd00001005sv00003842sd00002791* + ID_PRODUCT_FROM_DATABASE=GeForce GTX Titan SC + +pci:v000010DEd00001005sv00003842sd00002793* + ID_PRODUCT_FROM_DATABASE=GeForce GTX Titan SC Signature + +pci:v000010DEd00001005sv00003842sd00002794* + ID_PRODUCT_FROM_DATABASE=GeForce GTX Titan SC Hydro Copper + +pci:v000010DEd00001005sv00003842sd00002795* + ID_PRODUCT_FROM_DATABASE=GeForce GTX Titan SC Hydro Copper Signature + pci:v000010DEd00001021* ID_PRODUCT_FROM_DATABASE=GK110 [Tesla K20Xm] pci:v000010DEd00001022* - ID_PRODUCT_FROM_DATABASE=GK107 [Tesla K20c] + ID_PRODUCT_FROM_DATABASE=GK110 [Tesla K20c] + +pci:v000010DEd00001026* + ID_PRODUCT_FROM_DATABASE=GK110 [Tesla K20s] pci:v000010DEd00001028* ID_PRODUCT_FROM_DATABASE=GK110 [Tesla K20m] @@ -22239,7 +22554,7 @@ pci:v000010DEd00001048* ID_PRODUCT_FROM_DATABASE=GF119 [GeForce 605] pci:v000010DEd00001049* - ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 620] + ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 620 OEM] pci:v000010DEd0000104A* ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 610] @@ -22247,12 +22562,21 @@ pci:v000010DEd0000104A* pci:v000010DEd0000104Asv000010B0sd0000104A* ID_PRODUCT_FROM_DATABASE=Gainward GeForce GT 610 +pci:v000010DEd0000104B* + ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 625 OEM] + pci:v000010DEd00001050* ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 520M] pci:v000010DEd00001051* ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 520MX] +pci:v000010DEd00001052* + ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 520M] + +pci:v000010DEd00001054* + ID_PRODUCT_FROM_DATABASE=GF119 [GeForce 410M] + pci:v000010DEd00001055* ID_PRODUCT_FROM_DATABASE=GF119 [GeForce 410M] @@ -22262,11 +22586,14 @@ pci:v000010DEd00001056* pci:v000010DEd00001057* ID_PRODUCT_FROM_DATABASE=GF119 [Quadro NVS 4200M] +pci:v000010DEd00001058* + ID_PRODUCT_FROM_DATABASE=GF119 [GeForce 610M] + pci:v000010DEd0000105A* ID_PRODUCT_FROM_DATABASE=GF119 [GeForce 610M] pci:v000010DEd0000107D* - ID_PRODUCT_FROM_DATABASE=GF119 [Quadro NVS 310] + ID_PRODUCT_FROM_DATABASE=GF119 [NVS 310] pci:v000010DEd00001080* ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 580] @@ -22278,13 +22605,13 @@ pci:v000010DEd00001081sv000010DEsd0000087E* ID_PRODUCT_FROM_DATABASE=Leadtek WinFast GTX 570 pci:v000010DEd00001082* - ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 560 Ti] + ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 560 Ti OEM] pci:v000010DEd00001084* - ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 560] + ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 560 OEM] pci:v000010DEd00001086* - ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 570 HD] + ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 570 Rev. 2] pci:v000010DEd00001087* ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 560 Ti 448 Cores] @@ -22299,19 +22626,43 @@ pci:v000010DEd0000108B* ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 580] pci:v000010DEd00001091* - ID_PRODUCT_FROM_DATABASE=Tesla M2090 + ID_PRODUCT_FROM_DATABASE=GF110 [Tesla M2090] + +pci:v000010DEd00001091sv000010DEsd0000088E* + ID_PRODUCT_FROM_DATABASE=Tesla X2090 + +pci:v000010DEd00001091sv000010DEsd00000891* + ID_PRODUCT_FROM_DATABASE=Tesla X2090 pci:v000010DEd00001094* - ID_PRODUCT_FROM_DATABASE=Tesla M2075 Dual-Slot Computing Processor Module + ID_PRODUCT_FROM_DATABASE=GF110 [Tesla M2075] + +pci:v000010DEd00001094sv000010DEsd00000888* + ID_PRODUCT_FROM_DATABASE=Tesla M2075 pci:v000010DEd00001096* + ID_PRODUCT_FROM_DATABASE=GF110 [Tesla C2050 / C2075] + +pci:v000010DEd00001096sv000010DEsd00000910* ID_PRODUCT_FROM_DATABASE=Tesla C2075 +pci:v000010DEd00001096sv000010DEsd00000911* + ID_PRODUCT_FROM_DATABASE=Tesla C2050 + +pci:v000010DEd0000109A* + ID_PRODUCT_FROM_DATABASE=GF100GLM [Quadro 5010M] + pci:v000010DEd0000109B* ID_PRODUCT_FROM_DATABASE=GF100GL [Quadro 7000] +pci:v000010DEd0000109Bsv000010DEsd00000918* + ID_PRODUCT_FROM_DATABASE=Quadro 7000 + +pci:v000010DEd000010C0* + ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 9300 GS Rev. 2] + pci:v000010DEd000010C3* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 8400 GS] + ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 8400 GS Rev. 3] pci:v000010DEd000010C3sv000010DEsd0000066D* ID_PRODUCT_FROM_DATABASE=G98 [GeForce 8400GS] @@ -22320,7 +22671,10 @@ pci:v000010DEd000010C5* ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 405] pci:v000010DEd000010D8* - ID_PRODUCT_FROM_DATABASE=GT218 [Quadro NVS 300] + ID_PRODUCT_FROM_DATABASE=GT218 [NVS 300] + +pci:v000010DEd00001140* + ID_PRODUCT_FROM_DATABASE=GF117 [GeForce 610M/GT 620M/GT 625M/GT 630M/710M] pci:v000010DEd00001180* ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 680] @@ -22328,6 +22682,9 @@ pci:v000010DEd00001180* pci:v000010DEd00001183* ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 660 Ti] +pci:v000010DEd00001185* + ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 660 OEM] + pci:v000010DEd00001188* ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 690] @@ -22337,6 +22694,21 @@ pci:v000010DEd00001189* pci:v000010DEd0000118F* ID_PRODUCT_FROM_DATABASE=GK104 [Tesla K10] +pci:v000010DEd000011A0* + ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 680M] + +pci:v000010DEd000011A1* + ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 670MX] + +pci:v000010DEd000011A2* + ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 675MX] + +pci:v000010DEd000011A3* + ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 680MX] + +pci:v000010DEd000011A7* + ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 675MX] + pci:v000010DEd000011BA* ID_PRODUCT_FROM_DATABASE=GK104 [Quadro K5000] @@ -22352,8 +22724,17 @@ pci:v000010DEd000011BE* pci:v000010DEd000011BF* ID_PRODUCT_FROM_DATABASE=GK104GL [GRID K2] +pci:v000010DEd000011C0* + ID_PRODUCT_FROM_DATABASE=GK106 [GeForce GTX 660] + +pci:v000010DEd000011C3* + ID_PRODUCT_FROM_DATABASE=GK106 [GeForce GTX 650 Ti Boost Edition] + +pci:v000010DEd000011C6* + ID_PRODUCT_FROM_DATABASE=GK106 [GeForce GTX 650 Ti] + pci:v000010DEd000011FA* - ID_PRODUCT_FROM_DATABASE=GK104 [Quadro K4000] + ID_PRODUCT_FROM_DATABASE=GK106 [Quadro K4000] pci:v000010DEd00001200* ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 560 Ti] @@ -22361,6 +22742,9 @@ pci:v000010DEd00001200* pci:v000010DEd00001201* ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 560] +pci:v000010DEd00001203* + ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 460 SE v2] + pci:v000010DEd00001205* ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 460 v2] @@ -22376,8 +22760,17 @@ pci:v000010DEd00001208* pci:v000010DEd00001210* ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 570M] +pci:v000010DEd00001211* + ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 580M] + +pci:v000010DEd00001212* + ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 675M] + +pci:v000010DEd00001213* + ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 670M] + pci:v000010DEd00001241* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 545] + ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 545 OEM] pci:v000010DEd00001243* ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 545] @@ -22386,16 +22779,31 @@ pci:v000010DEd00001244* ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GTX 550 Ti] pci:v000010DEd00001245* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GTS 450] + ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GTS 450 Rev. 2] + +pci:v000010DEd00001246* + ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 550M] pci:v000010DEd00001247* + ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 555M/635M] + +pci:v000010DEd00001248* ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 555M] pci:v000010DEd00001249* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GTS 450] + ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GTS 450 Rev. 3] pci:v000010DEd0000124B* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 640] + ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 640 OEM] + +pci:v000010DEd0000124D* + ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 555M/635M] + +pci:v000010DEd00001251* + ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 560M] + +pci:v000010DEd00001280* + ID_PRODUCT_FROM_DATABASE=GK208 [GeForce GT 635] pci:v000010DF* ID_VENDOR_FROM_DATABASE=Emulex Corporation @@ -23858,6 +24266,9 @@ pci:v00001106d00000308* pci:v00001106d00000308sv00001043sd00008199* ID_PRODUCT_FROM_DATABASE=P4V800D-X Mainboard +pci:v00001106d00000308sv00001849sd00000308* + ID_PRODUCT_FROM_DATABASE=Motherboard + pci:v00001106d00000314* ID_PRODUCT_FROM_DATABASE=CN700/VN800/P4M800CE/Pro Host Bridge @@ -24602,6 +25013,9 @@ pci:v00001106d00003104sv00001043sd000080A1* pci:v00001106d00003104sv00001043sd000080ED* ID_PRODUCT_FROM_DATABASE=A7V600/K8V-X/A8V Deluxe motherboard +pci:v00001106d00003104sv00001106sd00003104* + ID_PRODUCT_FROM_DATABASE=USB 2.0 Controller + pci:v00001106d00003104sv00001297sd0000F641* ID_PRODUCT_FROM_DATABASE=FX41 motherboard @@ -27197,6 +27611,9 @@ pci:v00001137d00000045sv00001137sd0000004F* pci:v00001137d0000004E* ID_PRODUCT_FROM_DATABASE=VIC 82 PCIe Upstream Port +pci:v00001137d000000CF* + ID_PRODUCT_FROM_DATABASE=VIC Userspace NIC + pci:v00001138* ID_VENDOR_FROM_DATABASE=Ziatech Corporation @@ -32933,9 +33350,6 @@ pci:v000012AEd00000001sv00001014sd00000104* pci:v000012AEd00000001sv000012AEsd00000001* ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet-SX (Universal) -pci:v000012AEd00000001sv00001410sd00000104* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet-SX PCI Adapter - pci:v000012AEd00000002* ID_PRODUCT_FROM_DATABASE=AceNIC Gigabit Ethernet (Copper) @@ -38621,6 +39035,9 @@ pci:v000014E4d00001653* pci:v000014E4d00001653sv00000E11sd000000E3* ID_PRODUCT_FROM_DATABASE=NC7761 Gigabit Server Adapter +pci:v000014E4d00001653sv00001734sd00001073* + ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + pci:v000014E4d00001654* ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5705_2 Gigabit Ethernet @@ -40397,6 +40814,9 @@ pci:v000014F1d00005B7A* pci:v000014F1d00005B7Asv00000070sd00007444* ID_PRODUCT_FROM_DATABASE=WinTV HVR-1600 +pci:v000014F1d00005B7Asv0000107Dsd00006F34* + ID_PRODUCT_FROM_DATABASE=WinFast DVR3100 H + pci:v000014F1d00005B7Asv00005854sd00003343* ID_PRODUCT_FROM_DATABASE=GoTView PCI DVD3 Hybrid @@ -41687,6 +42107,9 @@ pci:v000015ADd00000770* pci:v000015ADd00000774* ID_PRODUCT_FROM_DATABASE=USB1.1 UHCI Controller +pci:v000015ADd00000778* + ID_PRODUCT_FROM_DATABASE=USB3 xHCI Controller + pci:v000015ADd00000790* ID_PRODUCT_FROM_DATABASE=PCI bridge @@ -41748,10 +42171,10 @@ pci:v000015B3d00001006* ID_PRODUCT_FROM_DATABASE=MT27511 Family pci:v000015B3d00001007* - ID_PRODUCT_FROM_DATABASE=MT27520 Family + ID_PRODUCT_FROM_DATABASE=MT27520 Family [ConnectX-3 Pro] pci:v000015B3d00001008* - ID_PRODUCT_FROM_DATABASE=MT27521 Family + ID_PRODUCT_FROM_DATABASE=MT27520 Family [ConnectX-3 Pro Virtual Function] pci:v000015B3d00001009* ID_PRODUCT_FROM_DATABASE=MT27530 Family @@ -44961,13 +45384,13 @@ pci:v000018F7d00000014* ID_PRODUCT_FROM_DATABASE=SuperFSCC Serial PCI Adapter [Fastcom] pci:v000018F7d00000015* - ID_PRODUCT_FROM_DATABASE=SuperFSCC-104 Serial PC/104+ Adapter [Fastcom] + ID_PRODUCT_FROM_DATABASE=SuperFSCC-104-LVDS Serial PC/104+ Adapter [Fastcom] pci:v000018F7d00000016* ID_PRODUCT_FROM_DATABASE=FSCC-232 RS-232 Serial PCI Adapter [Fastcom] pci:v000018F7d00000017* - ID_PRODUCT_FROM_DATABASE=SuperFSCC-104 Serial PC/104+ Adapter + ID_PRODUCT_FROM_DATABASE=SuperFSCC-104 Serial PC/104+ Adapter [Fastcom] pci:v000018F7d00000018* ID_PRODUCT_FROM_DATABASE=SuperFSCC/4 Serial PCI Adapter [Fastcom] @@ -44976,7 +45399,7 @@ pci:v000018F7d00000019* ID_PRODUCT_FROM_DATABASE=SuperFSCC Serial PCI Adapter [Fastcom] pci:v000018F7d0000001A* - ID_PRODUCT_FROM_DATABASE=SuperFSCC-104-LVDS Serial PC/104+ Adapter [Fastcom] + ID_PRODUCT_FROM_DATABASE=SuperFSCC-LVDS Serial PCI Adapter [Fastcom] pci:v000018F7d0000001B* ID_PRODUCT_FROM_DATABASE=FSCC/4 Serial PCI Adapter [Fastcom] @@ -53609,6 +54032,9 @@ pci:v00008086d00001F44* pci:v00008086d00001F45* ID_PRODUCT_FROM_DATABASE=Avoton GbE 2500base-KX +pci:v00008086d00002250* + ID_PRODUCT_FROM_DATABASE=Xeon Phi Coprocessor 5110P + pci:v00008086d00002310* ID_PRODUCT_FROM_DATABASE=DH89xxCC LPC Controller @@ -55745,6 +56171,9 @@ pci:v00008086d000025A1* pci:v00008086d000025A2* ID_PRODUCT_FROM_DATABASE=6300ESB PATA Storage Controller +pci:v00008086d000025A2sv00001734sd00001073* + ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + pci:v00008086d000025A2sv00001775sd000010D0* ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer IDE @@ -55763,6 +56192,9 @@ pci:v00008086d000025A2sv00004C53sd000010E0* pci:v00008086d000025A3* ID_PRODUCT_FROM_DATABASE=6300ESB SATA Storage Controller +pci:v00008086d000025A3sv00001734sd00001073* + ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + pci:v00008086d000025A3sv00001775sd00001100* ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer @@ -55781,6 +56213,9 @@ pci:v00008086d000025A3sv00004C53sd000010E0* pci:v00008086d000025A4* ID_PRODUCT_FROM_DATABASE=6300ESB SMBus Controller +pci:v00008086d000025A4sv00001734sd00001073* + ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + pci:v00008086d000025A4sv00001775sd000010D0* ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer @@ -55817,6 +56252,9 @@ pci:v00008086d000025A7* pci:v00008086d000025A9* ID_PRODUCT_FROM_DATABASE=6300ESB USB Universal Host Controller +pci:v00008086d000025A9sv00001734sd00001073* + ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + pci:v00008086d000025A9sv00001775sd000010D0* ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer USB @@ -55838,6 +56276,9 @@ pci:v00008086d000025A9sv00004C53sd000010E0* pci:v00008086d000025AA* ID_PRODUCT_FROM_DATABASE=6300ESB USB Universal Host Controller +pci:v00008086d000025AAsv00001734sd00001073* + ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + pci:v00008086d000025AAsv00001775sd00001100* ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer @@ -55856,6 +56297,9 @@ pci:v00008086d000025AAsv00004C53sd000010E0* pci:v00008086d000025AB* ID_PRODUCT_FROM_DATABASE=6300ESB Watchdog Timer +pci:v00008086d000025ABsv00001734sd00001073* + ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + pci:v00008086d000025ABsv00001775sd000010D0* ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer @@ -55877,6 +56321,9 @@ pci:v00008086d000025ABsv00004C53sd000010E0* pci:v00008086d000025AC* ID_PRODUCT_FROM_DATABASE=6300ESB I/O Advanced Programmable Interrupt Controller +pci:v00008086d000025ACsv00001734sd00001073* + ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + pci:v00008086d000025ACsv00001775sd000010D0* ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer @@ -55898,6 +56345,9 @@ pci:v00008086d000025ACsv00004C53sd000010E0* pci:v00008086d000025AD* ID_PRODUCT_FROM_DATABASE=6300ESB USB2 Enhanced Host Controller +pci:v00008086d000025ADsv00001734sd00001073* + ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + pci:v00008086d000025ADsv00001775sd000010D0* ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer USB 2.0 @@ -60989,9 +61439,15 @@ pci:v00008086d00003591sv00004C53sd000010D0* pci:v00008086d00003592* ID_PRODUCT_FROM_DATABASE=E7320 Memory Controller Hub +pci:v00008086d00003592sv00001734sd00001073* + ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + pci:v00008086d00003593* ID_PRODUCT_FROM_DATABASE=E7320 Error Reporting Registers +pci:v00008086d00003593sv00001734sd00001073* + ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + pci:v00008086d00003594* ID_PRODUCT_FROM_DATABASE=E7520 DMA Controller diff --git a/hwdb/20-usb-vendor-product.hwdb b/hwdb/20-usb-vendor-product.hwdb index 423c5fb747..ad29a762d9 100644 --- a/hwdb/20-usb-vendor-product.hwdb +++ b/hwdb/20-usb-vendor-product.hwdb @@ -47,6 +47,12 @@ usb:v0145* usb:v0145p0112* ID_PRODUCT_FROM_DATABASE=Card Reader +usb:v017C* + ID_VENDOR_FROM_DATABASE=MLK + +usb:v017Cp145F* + ID_PRODUCT_FROM_DATABASE=Trust Deskset + usb:v0204* ID_VENDOR_FROM_DATABASE=Chipsbank Microelectronics Co., Ltd @@ -92,6 +98,12 @@ usb:v0386* usb:v0386p0001* ID_PRODUCT_FROM_DATABASE=PSX for USB Converter +usb:v03D9* + ID_VENDOR_FROM_DATABASE=Shenzhen Sinote Tech-Electron Co., Ltd + +usb:v03D9p0499* + ID_PRODUCT_FROM_DATABASE=SE340D PC Remote Control + usb:v03DA* ID_VENDOR_FROM_DATABASE=Bernd Walter Computer Technology @@ -1181,6 +1193,9 @@ usb:v03F0p3A17* usb:v03F0p3B02* ID_PRODUCT_FROM_DATABASE=PhotoSmart 7150~ +usb:v03F0p3B05* + ID_PRODUCT_FROM_DATABASE=Scanjet N8460 + usb:v03F0p3B11* ID_PRODUCT_FROM_DATABASE=PSC 1300 series @@ -1271,6 +1286,9 @@ usb:v03F0p4502* usb:v03F0p4505* ID_PRODUCT_FROM_DATABASE=ScanJet G4010 +usb:v03F0p4507* + ID_PRODUCT_FROM_DATABASE=External HDD + usb:v03F0p4511* ID_PRODUCT_FROM_DATABASE=PhotoSmart 2600 @@ -1376,6 +1394,9 @@ usb:v03F0p5B11* usb:v03F0p5C11* ID_PRODUCT_FROM_DATABASE=PhotoSmart C4200 Printer series +usb:v03F0p5C12* + ID_PRODUCT_FROM_DATABASE=OfficeJet 6700 + usb:v03F0p5C17* ID_PRODUCT_FROM_DATABASE=LaserJet P2055 series @@ -1613,6 +1634,9 @@ usb:v03F0p8504* usb:v03F0p8604* ID_PRODUCT_FROM_DATABASE=DeskJet 5440 +usb:v03F0p8607* + ID_PRODUCT_FROM_DATABASE=Optical Mobile Mouse + usb:v03F0p8704* ID_PRODUCT_FROM_DATABASE=DeskJet 5940 @@ -1664,6 +1688,9 @@ usb:v03F0p9A02* usb:v03F0p9B02* ID_PRODUCT_FROM_DATABASE=PhotoSmart M540 series +usb:v03F0p9B07* + ID_PRODUCT_FROM_DATABASE=Portable Drive + usb:v03F0p9C02* ID_PRODUCT_FROM_DATABASE=PhotoSmart M440 series @@ -1878,7 +1905,7 @@ usb:v0400pA000* ID_PRODUCT_FROM_DATABASE=Smart Display Reference Device usb:v0400pC359* - ID_PRODUCT_FROM_DATABASE=Logitech Harmony (Boot loader mode) + ID_PRODUCT_FROM_DATABASE=Logitech Harmony usb:v0400pC35B* ID_PRODUCT_FROM_DATABASE=Printing Support @@ -1973,6 +2000,9 @@ usb:v0403p6014* usb:v0403p6015* ID_PRODUCT_FROM_DATABASE=Bridge(I2C/SPI/UART/FIFO) +usb:v0403p8028* + ID_PRODUCT_FROM_DATABASE=Dev board JTAG (FT232H based) + usb:v0403p8040* ID_PRODUCT_FROM_DATABASE=4 Port Hub @@ -2022,7 +2052,7 @@ usb:v0403pB9B0* ID_PRODUCT_FROM_DATABASE=Fujitsu SK-16FX-100PMC V1.1 usb:v0403pBAF8* - ID_PRODUCT_FROM_DATABASE=Amontec JTAGkey - Open On-Chip Debugger + ID_PRODUCT_FROM_DATABASE=Amontec JTAGkey usb:v0403pBCD8* ID_PRODUCT_FROM_DATABASE=Stellaris Development Board @@ -2100,7 +2130,7 @@ usb:v0403pCC4A* ID_PRODUCT_FROM_DATABASE=Tactrix OpenPort 1.3 Universal usb:v0403pCFF8* - ID_PRODUCT_FROM_DATABASE=Distortec JTAG-lock-pick + ID_PRODUCT_FROM_DATABASE=Amontec JTAGkey usb:v0403pD010* ID_PRODUCT_FROM_DATABASE=SCS PTC-IIusb @@ -2114,6 +2144,9 @@ usb:v0403pD012* usb:v0403pD013* ID_PRODUCT_FROM_DATABASE=SCS DRAGON 1 +usb:v0403pD491* + ID_PRODUCT_FROM_DATABASE=Zolix Omni 1509 monochromator + usb:v0403pD578* ID_PRODUCT_FROM_DATABASE=Accesio USB-COM-4SM @@ -2162,6 +2195,12 @@ usb:v0403pE88B* usb:v0403pE88C* ID_PRODUCT_FROM_DATABASE=Expert mouseCLOCK USB II HBG +usb:v0403pE8D8* + ID_PRODUCT_FROM_DATABASE=Aaronia AG Spectran Spectrum Analyzer + +usb:v0403pE8DC* + ID_PRODUCT_FROM_DATABASE=Aaronia AG UBBV Preamplifier + usb:v0403pEA90* ID_PRODUCT_FROM_DATABASE=Eclo 1-Wire Adapter @@ -2228,6 +2267,9 @@ usb:v0403pFA03* usb:v0403pFA04* ID_PRODUCT_FROM_DATABASE=Matrix Orbital VK/LK204 Family +usb:v0403pFA20* + ID_PRODUCT_FROM_DATABASE=Ross-Tech HEX-USB + usb:v0403pFC08* ID_PRODUCT_FROM_DATABASE=Crystalfontz CFA-632 USB LCD @@ -2882,6 +2924,9 @@ usb:v040Ap1001* usb:v040Ap4000* ID_PRODUCT_FROM_DATABASE=InkJet Color Printer +usb:v040Ap4022* + ID_PRODUCT_FROM_DATABASE=1400 Digital Photo Printer + usb:v040Ap4056* ID_PRODUCT_FROM_DATABASE=ESP 7200 Series AiO @@ -3065,6 +3110,9 @@ usb:v0411p00DB* usb:v0411p00E8* ID_PRODUCT_FROM_DATABASE=WLI-UC-G300N Wireless LAN Adapter [Ralink RT2870] +usb:v0411p0105* + ID_PRODUCT_FROM_DATABASE=External Hard Drive HD-CEU2 [Drive Station] + usb:v0411p012E* ID_PRODUCT_FROM_DATABASE=WLI-UC-AG300N Wireless LAN Adapter @@ -3263,6 +3311,9 @@ usb:v0416p3812* usb:v0416p3813* ID_PRODUCT_FROM_DATABASE=Panel Display +usb:v0416p5011* + ID_PRODUCT_FROM_DATABASE=Virtual Com Port + usb:v0416p5518* ID_PRODUCT_FROM_DATABASE=4-Port Hub @@ -3425,6 +3476,9 @@ usb:v041Ep30D3* usb:v041Ep3121* ID_PRODUCT_FROM_DATABASE=WoW tap chat +usb:v041Ep3220* + ID_PRODUCT_FROM_DATABASE=Sound Blaster Tactic(3D) Sigma sound card + usb:v041Ep3F00* ID_PRODUCT_FROM_DATABASE=E-Mu Xboard 25 MIDI Controller @@ -3693,7 +3747,7 @@ usb:v041Ep4130* ID_PRODUCT_FROM_DATABASE=Zen Micro (mtp) usb:v041Ep4131* - ID_PRODUCT_FROM_DATABASE=Zen Touch (mtp) + ID_PRODUCT_FROM_DATABASE=DAP-HD0014 [Zen Touch] (MTP) usb:v041Ep4133* ID_PRODUCT_FROM_DATABASE=Mass Storage Device @@ -4079,6 +4133,15 @@ usb:v0421p0485* usb:v0421p04B9* ID_PRODUCT_FROM_DATABASE=5300 +usb:v0421p04BC* + ID_PRODUCT_FROM_DATABASE=5200 (Nokia mode) + +usb:v0421p04BD* + ID_PRODUCT_FROM_DATABASE=5200 (Storage mode) + +usb:v0421p04BE* + ID_PRODUCT_FROM_DATABASE=5200 (MTP mode) + usb:v0421p04C3* ID_PRODUCT_FROM_DATABASE=N800 Internet Tablet @@ -4109,6 +4172,9 @@ usb:v0421p0600* usb:v0421p0610* ID_PRODUCT_FROM_DATABASE=CS-15 (Internet Stick 3G modem) +usb:v0421p0661* + ID_PRODUCT_FROM_DATABASE=Lumia 920 + usb:v0421p0800* ID_PRODUCT_FROM_DATABASE=Connectivity Cable DKU-5 @@ -4193,6 +4259,9 @@ usb:v0424p2503* usb:v0424p2504* ID_PRODUCT_FROM_DATABASE=USB 2.0 Hub +usb:v0424p2507* + ID_PRODUCT_FROM_DATABASE=hub + usb:v0424p2512* ID_PRODUCT_FROM_DATABASE=USB 2.0 Hub @@ -4220,12 +4289,18 @@ usb:v0424p4060* usb:v0424p4064* ID_PRODUCT_FROM_DATABASE=Ultra Fast Media Reader +usb:v0424p7500* + ID_PRODUCT_FROM_DATABASE=LAN7500 Ethernet 10/100/1000 Adapter + usb:v0424p9512* - ID_PRODUCT_FROM_DATABASE=LAN9500 Ethernet 10/100 Adapter + ID_PRODUCT_FROM_DATABASE=LAN9500 Ethernet 10/100 Adapter / SMSC9512/9514 Hub usb:v0424pA700* ID_PRODUCT_FROM_DATABASE=2 Port Hub +usb:v0424pEC00* + ID_PRODUCT_FROM_DATABASE=SMSC9512/9514 Fast Ethernet Adapter + usb:v0425* ID_VENDOR_FROM_DATABASE=Motorola Semiconductors HK, Ltd @@ -4952,6 +5027,9 @@ usb:v044F* usb:v044Fp0400* ID_PRODUCT_FROM_DATABASE=HOTAS Cougar +usb:v044Fp044F* + ID_PRODUCT_FROM_DATABASE=GP XID + usb:v044FpA003* ID_PRODUCT_FROM_DATABASE=Rage 3D Game Pad @@ -4970,6 +5048,9 @@ usb:v044FpA0A3* usb:v044FpA201* ID_PRODUCT_FROM_DATABASE=PK-GP201 PlayStick +usb:v044FpB108* + ID_PRODUCT_FROM_DATABASE=T-Flight Hotas X Flight Stick + usb:v044FpB10A* ID_PRODUCT_FROM_DATABASE=T.16000M Joystick @@ -5228,6 +5309,9 @@ usb:v0458p0083* usb:v0458p0087* ID_PRODUCT_FROM_DATABASE=Ergo 525V Laser Mouse +usb:v0458p00CA* + ID_PRODUCT_FROM_DATABASE=Pen Mouse + usb:v0458p0100* ID_PRODUCT_FROM_DATABASE=EasyPen Tablet @@ -6272,6 +6356,9 @@ usb:v045Ep0766* usb:v045Ep0768* ID_PRODUCT_FROM_DATABASE=Sidewinder X4 +usb:v045Ep076C* + ID_PRODUCT_FROM_DATABASE=Comfort Mouse 4500 + usb:v045Ep076D* ID_PRODUCT_FROM_DATABASE=LifeCam HD-5000 @@ -6467,6 +6554,9 @@ usb:v0461p4D2E* usb:v0461p4D51* ID_PRODUCT_FROM_DATABASE=0Y357C PMX-MMOCZUL (B) [Dell Laser Mouse] +usb:v0461p4D62* + ID_PRODUCT_FROM_DATABASE=HP Laser Mobile Mini Mouse + usb:v0461p4D75* ID_PRODUCT_FROM_DATABASE=Rocketfish RF-FLBTAD Bluetooth Adapter @@ -6950,6 +7040,9 @@ usb:v046Dp0A13* usb:v046Dp0A17* ID_PRODUCT_FROM_DATABASE=G330 Headset +usb:v046Dp0A1F* + ID_PRODUCT_FROM_DATABASE=G930 + usb:v046Dp0B02* ID_PRODUCT_FROM_DATABASE=C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode) @@ -7158,17 +7251,29 @@ usb:v046DpC101* ID_PRODUCT_FROM_DATABASE=UltraX Media Remote usb:v046DpC110* - ID_PRODUCT_FROM_DATABASE=Harmony 885 Remote + ID_PRODUCT_FROM_DATABASE=Harmony 785/885 Remote usb:v046DpC111* ID_PRODUCT_FROM_DATABASE=Harmony 525 Remote +usb:v046DpC112* + ID_PRODUCT_FROM_DATABASE=Harmony 890 Remote + usb:v046DpC11F* - ID_PRODUCT_FROM_DATABASE=Harmony 900 Remote + ID_PRODUCT_FROM_DATABASE=Harmony 900/1100 Remote + +usb:v046DpC121* + ID_PRODUCT_FROM_DATABASE=Harmony One Remote usb:v046DpC122* ID_PRODUCT_FROM_DATABASE=Harmony 700 Remote +usb:v046DpC124* + ID_PRODUCT_FROM_DATABASE=Harmony 300 Remote + +usb:v046DpC125* + ID_PRODUCT_FROM_DATABASE=Harmony 200 Remote + usb:v046DpC201* ID_PRODUCT_FROM_DATABASE=WingMan Extreme Joystick with Throttle @@ -7268,6 +7373,9 @@ usb:v046DpC22D* usb:v046DpC22E* ID_PRODUCT_FROM_DATABASE=G510 Gaming Keyboard onboard audio +usb:v046DpC245* + ID_PRODUCT_FROM_DATABASE=G400 Optical Mouse + usb:v046DpC246* ID_PRODUCT_FROM_DATABASE=Gaming Mouse G300 @@ -7365,7 +7473,7 @@ usb:v046DpC313* ID_PRODUCT_FROM_DATABASE=Internet 350 Keyboard usb:v046DpC315* - ID_PRODUCT_FROM_DATABASE=Classic New Touch Keyboard + ID_PRODUCT_FROM_DATABASE=Classic Keyboard 200 usb:v046DpC316* ID_PRODUCT_FROM_DATABASE=HID-Compliant Keyboard @@ -7479,13 +7587,16 @@ usb:v046DpC526* ID_PRODUCT_FROM_DATABASE=Nano Receiver usb:v046DpC529* - ID_PRODUCT_FROM_DATABASE=diNovo Keyboard for notebooks + ID_PRODUCT_FROM_DATABASE=Logitech Keyboard + Mice usb:v046DpC52B* ID_PRODUCT_FROM_DATABASE=Unifying Receiver usb:v046DpC52F* - ID_PRODUCT_FROM_DATABASE=Wireless Mouse M305 + ID_PRODUCT_FROM_DATABASE=Unifying Receiver + +usb:v046DpC532* + ID_PRODUCT_FROM_DATABASE=Unifying Receiver usb:v046DpC623* ID_PRODUCT_FROM_DATABASE=3Dconnexion Space Traveller 3D Mouse @@ -8367,7 +8478,7 @@ usb:v0482p0204* ID_PRODUCT_FROM_DATABASE=iBurst Terminal usb:v0483* - ID_VENDOR_FROM_DATABASE=SGS Thomson Microelectronics + ID_VENDOR_FROM_DATABASE=STMicroelectronics usb:v0483p0137* ID_PRODUCT_FROM_DATABASE=BeWAN ADSL USB ST (blue or green) @@ -8423,6 +8534,9 @@ usb:v0483p5710* usb:v0483p5721* ID_PRODUCT_FROM_DATABASE=Hantek DDS-3X25 Arbitrary Waveform Generator +usb:v0483p5740* + ID_PRODUCT_FROM_DATABASE=STM32F407 + usb:v0483p7270* ID_PRODUCT_FROM_DATABASE=ST Micro Serial Bridge @@ -9977,6 +10091,12 @@ usb:v04A9p26B4* usb:v04A9p26B5* ID_PRODUCT_FROM_DATABASE=MF4200 series +usb:v04A9p26DA* + ID_PRODUCT_FROM_DATABASE=LBP3010B printer + +usb:v04A9p26E6* + ID_PRODUCT_FROM_DATABASE=iR1024 + usb:v04A9p2737* ID_PRODUCT_FROM_DATABASE=MF4410 @@ -10131,7 +10251,7 @@ usb:v04A9p307B* ID_PRODUCT_FROM_DATABASE=MV630i Digital Video Camera usb:v04A9p307C* - ID_PRODUCT_FROM_DATABASE=MV630i (normal mode) + ID_PRODUCT_FROM_DATABASE=CP-200 usb:v04A9p307D* ID_PRODUCT_FROM_DATABASE=CP-300 @@ -10358,6 +10478,9 @@ usb:v04A9p3142* usb:v04A9p3143* ID_PRODUCT_FROM_DATABASE=SELPHY CP720 +usb:v04A9p3145* + ID_PRODUCT_FROM_DATABASE=EOS 450D + usb:v04A9p3147* ID_PRODUCT_FROM_DATABASE=EOS 1Ds Mark III @@ -10397,6 +10520,9 @@ usb:v04A9p3184* usb:v04A9p3185* ID_PRODUCT_FROM_DATABASE=SELPHY ES2 +usb:v04A9p3186* + ID_PRODUCT_FROM_DATABASE=SELPHY ES20 + usb:v04A9p3192* ID_PRODUCT_FROM_DATABASE=PowerShot SX110 IS @@ -10412,9 +10538,15 @@ usb:v04A9p31AB* usb:v04A9p31AD* ID_PRODUCT_FROM_DATABASE=PowerShot E1 +usb:v04A9p31AF* + ID_PRODUCT_FROM_DATABASE=SELPHY ES3 + usb:v04A9p31B0* ID_PRODUCT_FROM_DATABASE=SELPHY ES30 +usb:v04A9p31B1* + ID_PRODUCT_FROM_DATABASE=SELPHY CP530 + usb:v04A9p31BC* ID_PRODUCT_FROM_DATABASE=PowerShot D10 @@ -10494,7 +10626,7 @@ usb:v04A9p3228* ID_PRODUCT_FROM_DATABASE=PowerShot SX230 HS usb:v04A9p3229* - ID_PRODUCT_FROM_DATABASE=IXUS 220 HS + ID_PRODUCT_FROM_DATABASE=PowerShot ELPH 300 HS / IXUS 220 HS usb:v04A9p322A* ID_PRODUCT_FROM_DATABASE=PowerShot A2200 @@ -10511,12 +10643,27 @@ usb:v04A9p3234* usb:v04A9p3236* ID_PRODUCT_FROM_DATABASE=PowerShot S100 +usb:v04A9p3237* + ID_PRODUCT_FROM_DATABASE=PowerShot ELPH 310 HS / IXUS 230 HS + usb:v04A9p3238* ID_PRODUCT_FROM_DATABASE=PowerShot SX40 HS +usb:v04A9p323B* + ID_PRODUCT_FROM_DATABASE=EOS Rebel T4i + +usb:v04A9p323E* + ID_PRODUCT_FROM_DATABASE=PowerShot A1300 + usb:v04A9p323F* ID_PRODUCT_FROM_DATABASE=PowerShot A810 +usb:v04A9p3240* + ID_PRODUCT_FROM_DATABASE=PowerShot ELPH 320 HS / IXUS 240 HS + +usb:v04A9p3241* + ID_PRODUCT_FROM_DATABASE=PowerShot ELPH 110 HS / IXUS 125 HS + usb:v04A9p3243* ID_PRODUCT_FROM_DATABASE=PowerShot A4000 IS @@ -10527,7 +10674,7 @@ usb:v04A9p3245* ID_PRODUCT_FROM_DATABASE=PowerShot SX240 HS usb:v04A9p3247* - ID_PRODUCT_FROM_DATABASE=PowerShot ELPH 520 HS + ID_PRODUCT_FROM_DATABASE=PowerShot ELPH 520 HS / IXUS 500 HS usb:v04A9p3248* ID_PRODUCT_FROM_DATABASE=PowerShot A3400 IS @@ -10544,12 +10691,21 @@ usb:v04A9p3255* usb:v04A9p3256* ID_PRODUCT_FROM_DATABASE=SELPHY CP810 +usb:v04A9p3258* + ID_PRODUCT_FROM_DATABASE=PowerShot G15 + usb:v04A9p3259* ID_PRODUCT_FROM_DATABASE=PowerShot SX50 HS usb:v04A9p325A* ID_PRODUCT_FROM_DATABASE=PowerShot SX160 IS +usb:v04A9p325B* + ID_PRODUCT_FROM_DATABASE=PowerShot S110 + +usb:v04A9p325C* + ID_PRODUCT_FROM_DATABASE=PowerShot SX500 IS + usb:v04AA* ID_VENDOR_FROM_DATABASE=DaeWoo Telecom, Ltd @@ -10760,6 +10916,9 @@ usb:v04B0p041E* usb:v04B0p0422* ID_PRODUCT_FROM_DATABASE=D700 (ptp) +usb:v04B0p0424* + ID_PRODUCT_FROM_DATABASE=D3000 + usb:v04B0p0425* ID_PRODUCT_FROM_DATABASE=D300S @@ -10991,6 +11150,9 @@ usb:v04B4pF111* usb:v04B4pF115* ID_PRODUCT_FROM_DATABASE=PSoC FirstTouch Programmer +usb:v04B4pFD13* + ID_PRODUCT_FROM_DATABASE=Programmable power socket + usb:v04B5* ID_VENDOR_FROM_DATABASE=ROHM LSI Systems USA, LLC @@ -11027,6 +11189,9 @@ usb:v04B8p0006* usb:v04B8p0007* ID_PRODUCT_FROM_DATABASE=Printer +usb:v04B8p0015* + ID_PRODUCT_FROM_DATABASE=Stylus Photo R3000 + usb:v04B8p0101* ID_PRODUCT_FROM_DATABASE=GT-7000U [Perfection 636] @@ -11178,7 +11343,7 @@ usb:v04B8p0144* ID_PRODUCT_FROM_DATABASE=GT-S85 usb:v04B8p0202* - ID_PRODUCT_FROM_DATABASE=Receipt Printer M129C + ID_PRODUCT_FROM_DATABASE=Receipt Printer M129C/TM-T70 usb:v04B8p0401* ID_PRODUCT_FROM_DATABASE=CP 800 Digital Camera @@ -12170,6 +12335,9 @@ usb:v04CBp0240* usb:v04CBp0241* ID_PRODUCT_FROM_DATABASE=FinePix S3200 Digital Camera +usb:v04CBp0278* + ID_PRODUCT_FROM_DATABASE=FinePix JV300 + usb:v04CC* ID_VENDOR_FROM_DATABASE=ST-Ericsson @@ -12341,6 +12509,15 @@ usb:v04D8pC001* usb:v04D8pF8DA* ID_PRODUCT_FROM_DATABASE=Hughski Ltd. ColorHug +usb:v04D8pFAFF* + ID_PRODUCT_FROM_DATABASE=Dangerous Prototypes BusPirate v4 Bootloader mode + +usb:v04D8pFB00* + ID_PRODUCT_FROM_DATABASE=Dangerous Prototypes BusPirate v4 + +usb:v04D8pFBB2* + ID_PRODUCT_FROM_DATABASE=GCUSB-nStep stepper motor controller + usb:v04D8pFBBA* ID_PRODUCT_FROM_DATABASE=DiscFerret Magnetic Disc Analyser (bootloader mode) @@ -12383,6 +12560,12 @@ usb:v04D9p2013* usb:v04D9p2221* ID_PRODUCT_FROM_DATABASE=Keyboard +usb:v04D9p2323* + ID_PRODUCT_FROM_DATABASE=Keyboard + +usb:v04D9p2832* + ID_PRODUCT_FROM_DATABASE=1channel Telephone line recorder + usb:v04D9pA055* ID_PRODUCT_FROM_DATABASE=Keyboard @@ -12459,10 +12642,10 @@ usb:v04DAp231E* ID_PRODUCT_FROM_DATABASE=DVC DV Stream Device usb:v04DAp2372* - ID_PRODUCT_FROM_DATABASE=Lumix Camera + ID_PRODUCT_FROM_DATABASE=Lumix Camera (Storage mode) usb:v04DAp2374* - ID_PRODUCT_FROM_DATABASE=DMC-FZ18/FZ20 + ID_PRODUCT_FROM_DATABASE=Lumix Camera (PTP mode) usb:v04DAp2451* ID_PRODUCT_FROM_DATABASE=HDC-SD9 @@ -12914,6 +13097,9 @@ usb:v04E8p0110* usb:v04E8p0111* ID_PRODUCT_FROM_DATABASE=Connect3D Flash Drive +usb:v04E8p0300* + ID_PRODUCT_FROM_DATABASE=E2530 Phone (Mass storage mode) + usb:v04E8p1003* ID_PRODUCT_FROM_DATABASE=MP3 Player and Recorder @@ -13046,6 +13232,9 @@ usb:v04E8p3296* usb:v04E8p3297* ID_PRODUCT_FROM_DATABASE=ML-191x/ML-252x Laser Printer +usb:v04E8p329F* + ID_PRODUCT_FROM_DATABASE=CLP-325 Color Laser Printer + usb:v04E8p330C* ID_PRODUCT_FROM_DATABASE=ML-1865 @@ -13103,6 +13292,9 @@ usb:v04E8p3420* usb:v04E8p3426* ID_PRODUCT_FROM_DATABASE=SCX-4500 Laser Printer +usb:v04E8p344F* + ID_PRODUCT_FROM_DATABASE=SCX-3400 Series + usb:v04E8p3605* ID_PRODUCT_FROM_DATABASE=InkJet Color Printer @@ -13379,6 +13571,9 @@ usb:v04E8p663F* usb:v04E8p6640* ID_PRODUCT_FROM_DATABASE=Usb Modem Enumerator +usb:v04E8p6651* + ID_PRODUCT_FROM_DATABASE=i8510 Innov8 + usb:v04E8p6702* ID_PRODUCT_FROM_DATABASE=X830 @@ -13421,6 +13616,9 @@ usb:v04E8p681C* usb:v04E8p681D* ID_PRODUCT_FROM_DATABASE=Galaxy Portal/Spica Android Phone +usb:v04E8p6843* + ID_PRODUCT_FROM_DATABASE=E2530 Phone (Samsung Kies mode) + usb:v04E8p684E* ID_PRODUCT_FROM_DATABASE=Wave (GT-S8500) @@ -13430,6 +13628,9 @@ usb:v04E8p685B* usb:v04E8p685C* ID_PRODUCT_FROM_DATABASE=GT-I9250 Phone [Galaxy Nexus] +usb:v04E8p685D* + ID_PRODUCT_FROM_DATABASE=GT-I9100 Phone [Galaxy S II] (Download mode) + usb:v04E8p685E* ID_PRODUCT_FROM_DATABASE=GT-I9100 Phone [Galaxy S II] (USB Debugging mode) @@ -13493,6 +13694,9 @@ usb:v04E8pE021* usb:v04E8pE022* ID_PRODUCT_FROM_DATABASE=SERI E02 SCOM 6200 Flash Load Disk +usb:v04E8pF000* + ID_PRODUCT_FROM_DATABASE=Intensity 3 (Mass Storage Mode) + usb:v04E8pFF30* ID_PRODUCT_FROM_DATABASE=SG_iMON @@ -13718,6 +13922,9 @@ usb:v04F2pB107* usb:v04F2pB14C* ID_PRODUCT_FROM_DATABASE=CNF8050 Webcam +usb:v04F2pB15C* + ID_PRODUCT_FROM_DATABASE=Sony Vaio Integrated Camera + usb:v04F2pB175* ID_PRODUCT_FROM_DATABASE=4-Port Hub @@ -13736,6 +13943,9 @@ usb:v04F2pB1CF* usb:v04F2pB1D6* ID_PRODUCT_FROM_DATABASE=CNF9055 Toshiba Webcam +usb:v04F2pB213* + ID_PRODUCT_FROM_DATABASE=Fujitsu Integrated Camera + usb:v04F2pB217* ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Camera (0.3MP) @@ -13776,7 +13986,7 @@ usb:v04F3p01A4* ID_PRODUCT_FROM_DATABASE=Wireless Keyboard usb:v04F3p0210* - ID_PRODUCT_FROM_DATABASE=AM-400 Hama Optical Mouse + ID_PRODUCT_FROM_DATABASE=Optical Mouse usb:v04F3p0212* ID_PRODUCT_FROM_DATABASE=Laser Mouse @@ -13928,6 +14138,9 @@ usb:v04F9p002D* usb:v04F9p0039* ID_PRODUCT_FROM_DATABASE=HL-5340 series +usb:v04F9p0042* + ID_PRODUCT_FROM_DATABASE=HL-2270DW Laser Printer + usb:v04F9p0100* ID_PRODUCT_FROM_DATABASE=MFC8600/9650 series @@ -14447,6 +14660,9 @@ usb:v04FCp00D3* usb:v04FCp0171* ID_PRODUCT_FROM_DATABASE=SPCA1527A/SPCA1528 SD card camera (Mass Storage mode) +usb:v04FCp0201* + ID_PRODUCT_FROM_DATABASE=RS232C Adapter + usb:v04FCp0232* ID_PRODUCT_FROM_DATABASE=Fingerprint @@ -14775,7 +14991,7 @@ usb:v050Dp0551* ID_PRODUCT_FROM_DATABASE=F6C550-AVR UPS usb:v050Dp0706* - ID_PRODUCT_FROM_DATABASE=2-N-1 USB 2.0 7-Port Hub (Lower half) + ID_PRODUCT_FROM_DATABASE=2-N-1 7-Port Hub (Lower half) usb:v050Dp0802* ID_PRODUCT_FROM_DATABASE=Nostromo n40 Gamepad @@ -14816,6 +15032,9 @@ usb:v050Dp1203* usb:v050Dp2103* ID_PRODUCT_FROM_DATABASE=F7D2102 802.11n N300 Micro Wireless Adapter v3000 [Realtek RTL8192CU] +usb:v050Dp21F1* + ID_PRODUCT_FROM_DATABASE=N300 WLAN N Adapter [ISY] + usb:v050Dp258A* ID_PRODUCT_FROM_DATABASE=F5U258 Host to Host cable @@ -15977,6 +16196,9 @@ usb:v054Cp0387* usb:v054Cp03BC* ID_PRODUCT_FROM_DATABASE=Webbie HD - MHS-CM1 +usb:v054Cp03D1* + ID_PRODUCT_FROM_DATABASE=DPF-X95 + usb:v054Cp03D3* ID_PRODUCT_FROM_DATABASE=DR-BT100CX @@ -16059,7 +16281,7 @@ usb:v0553p0201* ID_PRODUCT_FROM_DATABASE=Dual-mode Camera1 usb:v0553p0202* - ID_PRODUCT_FROM_DATABASE=Aiptek PenCam 1 + ID_PRODUCT_FROM_DATABASE=STV0680 Camera usb:v0553p0674* ID_PRODUCT_FROM_DATABASE=Multi-mode Camera @@ -16832,6 +17054,9 @@ usb:v0572p8390* usb:v0572p8392* ID_PRODUCT_FROM_DATABASE=WinFast PalmTop/Novo TV Video +usb:v0572pCAFC* + ID_PRODUCT_FROM_DATABASE=CX861xx ROM Boot Loader + usb:v0572pCAFE* ID_PRODUCT_FROM_DATABASE=AccessRunner ADSL Modem @@ -17190,7 +17415,7 @@ usb:v0582* ID_VENDOR_FROM_DATABASE=Roland Corp. usb:v0582p0000* - ID_PRODUCT_FROM_DATABASE=UA-100 + ID_PRODUCT_FROM_DATABASE=UA-100(G) usb:v0582p0002* ID_PRODUCT_FROM_DATABASE=UM-4/MPU-64 MIDI Interface @@ -17202,7 +17427,7 @@ usb:v0582p0004* ID_PRODUCT_FROM_DATABASE=U-8 usb:v0582p0005* - ID_PRODUCT_FROM_DATABASE=Edirol UM-2 MIDI Adapter + ID_PRODUCT_FROM_DATABASE=UM-2(C/EX) usb:v0582p0007* ID_PRODUCT_FROM_DATABASE=SoundCanvas SC-8820 @@ -17211,7 +17436,7 @@ usb:v0582p0008* ID_PRODUCT_FROM_DATABASE=PC-300 usb:v0582p0009* - ID_PRODUCT_FROM_DATABASE=Edirol UM-1SX MIDI Adapter + ID_PRODUCT_FROM_DATABASE=UM-1(E/S/X) usb:v0582p000B* ID_PRODUCT_FROM_DATABASE=SK-500 @@ -17306,6 +17531,9 @@ usb:v0582p0033* usb:v0582p0034* ID_PRODUCT_FROM_DATABASE=EDIROL PCR +usb:v0582p0035* + ID_PRODUCT_FROM_DATABASE=M-1000 + usb:v0582p0037* ID_PRODUCT_FROM_DATABASE=Digital Piano @@ -17423,6 +17651,12 @@ usb:v0582p0080* usb:v0582p0081* ID_PRODUCT_FROM_DATABASE=G-70 +usb:v0582p0084* + ID_PRODUCT_FROM_DATABASE=V-SYNTH XT + +usb:v0582p0089* + ID_PRODUCT_FROM_DATABASE=BOSS GT-PRO + usb:v0582p008B* ID_PRODUCT_FROM_DATABASE=EDIROL PC-50 @@ -17447,6 +17681,9 @@ usb:v0582p009A* usb:v0582p009D* ID_PRODUCT_FROM_DATABASE=EDIROL UM-1 +usb:v0582p00A0* + ID_PRODUCT_FROM_DATABASE=MD-P1 + usb:v0582p00A2* ID_PRODUCT_FROM_DATABASE=Digital Piano @@ -17456,6 +17693,9 @@ usb:v0582p00A3* usb:v0582p00A6* ID_PRODUCT_FROM_DATABASE=Juno-G +usb:v0582p00A9* + ID_PRODUCT_FROM_DATABASE=MC-808 + usb:v0582p00AD* ID_PRODUCT_FROM_DATABASE=SH-201 @@ -17465,14 +17705,38 @@ usb:v0582p00B2* usb:v0582p00B3* ID_PRODUCT_FROM_DATABASE=VG-99 +usb:v0582p00B7* + ID_PRODUCT_FROM_DATABASE=BK-7m/VIMA JM-5/8 + +usb:v0582p00C2* + ID_PRODUCT_FROM_DATABASE=SonicCell + usb:v0582p00C4* ID_PRODUCT_FROM_DATABASE=EDIROL M-16DX +usb:v0582p00C5* + ID_PRODUCT_FROM_DATABASE=SP-555 + +usb:v0582p00C7* + ID_PRODUCT_FROM_DATABASE=V-Synth GT + +usb:v0582p00D1* + ID_PRODUCT_FROM_DATABASE=Music Atelier + +usb:v0582p00D3* + ID_PRODUCT_FROM_DATABASE=M-380/400 + +usb:v0582p00DA* + ID_PRODUCT_FROM_DATABASE=BOSS GT-10 + usb:v0582p00DB* ID_PRODUCT_FROM_DATABASE=BOSS GT-10 Guitar Effects Processor +usb:v0582p00DC* + ID_PRODUCT_FROM_DATABASE=BOSS GT-10B + usb:v0582p00DE* - ID_PRODUCT_FROM_DATABASE=Fantom-G7 + ID_PRODUCT_FROM_DATABASE=Fantom G usb:v0582p00E6* ID_PRODUCT_FROM_DATABASE=EDIROL UA-25EX (Advanced mode) @@ -17480,12 +17744,162 @@ usb:v0582p00E6* usb:v0582p00E7* ID_PRODUCT_FROM_DATABASE=EDIROL UA-25EX +usb:v0582p00E9* + ID_PRODUCT_FROM_DATABASE=UA-1G + +usb:v0582p00EB* + ID_PRODUCT_FROM_DATABASE=VS-100 + +usb:v0582p00F6* + ID_PRODUCT_FROM_DATABASE=GW-8/AX-Synth + +usb:v0582p00F8* + ID_PRODUCT_FROM_DATABASE=JUNO Series + +usb:v0582p00FC* + ID_PRODUCT_FROM_DATABASE=VS-700C + +usb:v0582p00FD* + ID_PRODUCT_FROM_DATABASE=VS-700 + +usb:v0582p00FE* + ID_PRODUCT_FROM_DATABASE=VS-700 M1 + +usb:v0582p00FF* + ID_PRODUCT_FROM_DATABASE=VS-700 M2 + +usb:v0582p0100* + ID_PRODUCT_FROM_DATABASE=VS-700 + +usb:v0582p0101* + ID_PRODUCT_FROM_DATABASE=VS-700 M2 + +usb:v0582p0102* + ID_PRODUCT_FROM_DATABASE=VB-99 + +usb:v0582p0104* + ID_PRODUCT_FROM_DATABASE=UM-1G + +usb:v0582p0106* + ID_PRODUCT_FROM_DATABASE=UM-2G + +usb:v0582p0108* + ID_PRODUCT_FROM_DATABASE=UM-3G + +usb:v0582p0109* + ID_PRODUCT_FROM_DATABASE=eBand JS-8 + +usb:v0582p010D* + ID_PRODUCT_FROM_DATABASE=A-500S + usb:v0582p010F* ID_PRODUCT_FROM_DATABASE=A-PRO usb:v0582p0110* ID_PRODUCT_FROM_DATABASE=A-PRO +usb:v0582p0111* + ID_PRODUCT_FROM_DATABASE=GAIA SH-01 + +usb:v0582p0113* + ID_PRODUCT_FROM_DATABASE=ME-25 + +usb:v0582p0114* + ID_PRODUCT_FROM_DATABASE=SD-50 + +usb:v0582p0116* + ID_PRODUCT_FROM_DATABASE=WAVE/MP3 RECORDER R-05 + +usb:v0582p0117* + ID_PRODUCT_FROM_DATABASE=VS-20 + +usb:v0582p0119* + ID_PRODUCT_FROM_DATABASE=OCTAPAD SPD-30 + +usb:v0582p011C* + ID_PRODUCT_FROM_DATABASE=Lucina AX-09 + +usb:v0582p011E* + ID_PRODUCT_FROM_DATABASE=BR-800 + +usb:v0582p0120* + ID_PRODUCT_FROM_DATABASE=OCTA-CAPTURE + +usb:v0582p0121* + ID_PRODUCT_FROM_DATABASE=OCTA-CAPTURE + +usb:v0582p0123* + ID_PRODUCT_FROM_DATABASE=JUNO-Gi + +usb:v0582p0124* + ID_PRODUCT_FROM_DATABASE=M-300 + +usb:v0582p0127* + ID_PRODUCT_FROM_DATABASE=GR-55 + +usb:v0582p012A* + ID_PRODUCT_FROM_DATABASE=UM-ONE + +usb:v0582p012B* + ID_PRODUCT_FROM_DATABASE=DUO-CAPTURE + +usb:v0582p012F* + ID_PRODUCT_FROM_DATABASE=QUAD-CAPTURE + +usb:v0582p0130* + ID_PRODUCT_FROM_DATABASE=MICRO BR BR-80 + +usb:v0582p0132* + ID_PRODUCT_FROM_DATABASE=TRI-CAPTURE + +usb:v0582p0134* + ID_PRODUCT_FROM_DATABASE=V-Mixer + +usb:v0582p0138* + ID_PRODUCT_FROM_DATABASE=Boss RC-300 (Audio mode) + +usb:v0582p0139* + ID_PRODUCT_FROM_DATABASE=Boss RC-300 (Storage mode) + +usb:v0582p013A* + ID_PRODUCT_FROM_DATABASE=JUPITER-80 + +usb:v0582p013E* + ID_PRODUCT_FROM_DATABASE=R-26 + +usb:v0582p0145* + ID_PRODUCT_FROM_DATABASE=SPD-SX + +usb:v0582p014B* + ID_PRODUCT_FROM_DATABASE=eBand JS-10 + +usb:v0582p014D* + ID_PRODUCT_FROM_DATABASE=GT-100 + +usb:v0582p0150* + ID_PRODUCT_FROM_DATABASE=TD-15 + +usb:v0582p0151* + ID_PRODUCT_FROM_DATABASE=TD-11 + +usb:v0582p0154* + ID_PRODUCT_FROM_DATABASE=JUPITER-50 + +usb:v0582p0156* + ID_PRODUCT_FROM_DATABASE=A-Series + +usb:v0582p0158* + ID_PRODUCT_FROM_DATABASE=TD-30 + +usb:v0582p0159* + ID_PRODUCT_FROM_DATABASE=DUO-CAPTURE EX + +usb:v0582p015B* + ID_PRODUCT_FROM_DATABASE=INTEGRA-7 + +usb:v0582p015D* + ID_PRODUCT_FROM_DATABASE=R-88 + usb:v0582p0505* ID_PRODUCT_FROM_DATABASE=EDIROL UA-101 @@ -18048,7 +18462,7 @@ usb:v0590p000B* ID_PRODUCT_FROM_DATABASE=MR56SVS usb:v0590p0028* - ID_PRODUCT_FROM_DATABASE=HJ-720IT Pedometer / Blood Pressure Monitor HEM-7080IT-E + ID_PRODUCT_FROM_DATABASE=HJ-720IT / HEM-7080IT-E / HEM-790IT usb:v0591* ID_VENDOR_FROM_DATABASE=Questra Consulting @@ -18335,6 +18749,9 @@ usb:v05A4p9731* usb:v05A4p9783* ID_PRODUCT_FROM_DATABASE=Wireless Keypad +usb:v05A4p9881* + ID_PRODUCT_FROM_DATABASE=IR receiver [VRC-1100 Vista MCE Remote Control] + usb:v05A5* ID_VENDOR_FROM_DATABASE=Sampo Technology Corp. @@ -18611,6 +19028,9 @@ usb:v05ACp0246* usb:v05ACp0247* ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) +usb:v05ACp024A* + ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Air) (ISO) + usb:v05ACp024D* ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Air) (ISO) @@ -18626,6 +19046,9 @@ usb:v05ACp0253* usb:v05ACp0254* ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) +usb:v05ACp0263* + ID_PRODUCT_FROM_DATABASE=Apple Internal Keyboard / Trackpad (MacBook Retina) + usb:v05ACp0301* ID_PRODUCT_FROM_DATABASE=USB Mouse [Mitsumi, M4848] @@ -18797,6 +19220,9 @@ usb:v05ACp12A0* usb:v05ACp12A2* ID_PRODUCT_FROM_DATABASE=iPad 2 (3G; 64GB) +usb:v05ACp12A6* + ID_PRODUCT_FROM_DATABASE=iPad 3 (3G, 16 GB) + usb:v05ACp12A9* ID_PRODUCT_FROM_DATABASE=iPad 2 @@ -18821,6 +19247,9 @@ usb:v05ACp1401* usb:v05ACp1402* ID_PRODUCT_FROM_DATABASE=Ethernet Adapter [A1277] +usb:v05ACp1500* + ID_PRODUCT_FROM_DATABASE=SuperDrive [A1379] + usb:v05ACp8202* ID_PRODUCT_FROM_DATABASE=HCF V.90 Data/Fax Modem @@ -18875,6 +19304,9 @@ usb:v05ACp8241* usb:v05ACp8242* ID_PRODUCT_FROM_DATABASE=Built-in IR Receiver +usb:v05ACp8286* + ID_PRODUCT_FROM_DATABASE=Bluetooth Host Controller + usb:v05ACp8300* ID_PRODUCT_FROM_DATABASE=Built-in iSight (no firmware loaded) @@ -18905,6 +19337,9 @@ usb:v05ACp8509* usb:v05ACp850A* ID_PRODUCT_FROM_DATABASE=FaceTime Camera +usb:v05ACp8510* + ID_PRODUCT_FROM_DATABASE=FaceTime HD Camera (Built-in) + usb:v05ACp911C* ID_PRODUCT_FROM_DATABASE=Hub in A1082 [Cinema HD Display 23"] @@ -20009,6 +20444,9 @@ usb:v05DCpB018* usb:v05DCpB047* ID_PRODUCT_FROM_DATABASE=SDHC Reader [RW047-7000] +usb:v05DCpC753* + ID_PRODUCT_FROM_DATABASE=JumpDrive TwistTurn + usb:v05DD* ID_VENDOR_FROM_DATABASE=Delta Electronics, Inc. @@ -20075,6 +20513,9 @@ usb:v05E1p0895* usb:v05E1p0896* ID_PRODUCT_FROM_DATABASE=STK017 Camera +usb:v05E1p2010* + ID_PRODUCT_FROM_DATABASE=ARCTIC Sound P261 Headphones + usb:v05E2* ID_VENDOR_FROM_DATABASE=ElecVision, Inc. @@ -20385,11 +20826,14 @@ usb:v05F9p1104* ID_PRODUCT_FROM_DATABASE=Magellan 2200VS usb:v05F9p2206* - ID_PRODUCT_FROM_DATABASE=Gryphon Barcode Scanner + ID_PRODUCT_FROM_DATABASE=Datalogic Gryphon GFS4170 usb:v05F9p2602* ID_PRODUCT_FROM_DATABASE=Datalogic Magellan 1100i Barcode Scanner +usb:v05F9p5204* + ID_PRODUCT_FROM_DATABASE=Datalogic Gryphon GFS4170 (config mode) + usb:v05FA* ID_VENDOR_FROM_DATABASE=Siemens Telecommunications Systems, Ltd @@ -20969,12 +21413,18 @@ usb:v064EpE201* usb:v064EpE203* ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Webcam +usb:v064EpE258* + ID_PRODUCT_FROM_DATABASE=HP TrueVision HD Integrated Webcam + usb:v064EpF102* ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Webcam [R5U877] usb:v064EpF103* ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Webcam [R5U877] +usb:v064EpF300* + ID_PRODUCT_FROM_DATABASE=UVC 0.3M Webcam + usb:v064F* ID_VENDOR_FROM_DATABASE=WIBU-Systems AG @@ -21039,7 +21489,10 @@ usb:v065A* ID_VENDOR_FROM_DATABASE=Optoelectronics Co., Ltd usb:v065Ap0001* - ID_PRODUCT_FROM_DATABASE=Barcode scanner + ID_PRODUCT_FROM_DATABASE=Barcode scanner / NLV-1001 (keyboard mode) + +usb:v065Ap0009* + ID_PRODUCT_FROM_DATABASE=NLV-1001 (serial mode) / OPN-2001 [Opticon] usb:v065B* ID_VENDOR_FROM_DATABASE=Tracewell Systems @@ -21563,6 +22016,9 @@ usb:v067Bp0307* usb:v067Bp04BB* ID_PRODUCT_FROM_DATABASE=PL2303 Serial (IODATA USB-RSAQ2) +usb:v067Bp0600* + ID_PRODUCT_FROM_DATABASE=IDE Bridge + usb:v067Bp0610* ID_PRODUCT_FROM_DATABASE=Onext EG210U MODEM @@ -23486,6 +23942,12 @@ usb:v0718p043C* usb:v0718p0582* ID_PRODUCT_FROM_DATABASE=Revo Flash Drive +usb:v0718p0622* + ID_PRODUCT_FROM_DATABASE=TDK Trans-It 4GB + +usb:v0718p0624* + ID_PRODUCT_FROM_DATABASE=TDK Trans-It 16GB + usb:v0718p1120* ID_PRODUCT_FROM_DATABASE=RDX External dock (redbud) @@ -24320,6 +24782,9 @@ usb:v0781p5567* usb:v0781p5571* ID_PRODUCT_FROM_DATABASE=Cruzer Fit +usb:v0781p5580* + ID_PRODUCT_FROM_DATABASE=SDCZ80 Flash Drive + usb:v0781p5E10* ID_PRODUCT_FROM_DATABASE=Encrypted @@ -25019,9 +25484,12 @@ usb:v07B3p0601* usb:v07B3p0800* ID_PRODUCT_FROM_DATABASE=OpticPro ST48 Scanner -usb:v07B3p0906* +usb:v07B3p0900* ID_PRODUCT_FROM_DATABASE=OpticBook 3600 Scanner +usb:v07B3p090C* + ID_PRODUCT_FROM_DATABASE=OpticBook 3600 Plus Scanner + usb:v07B3p0A06* ID_PRODUCT_FROM_DATABASE=TVcam VD100 @@ -25043,6 +25511,15 @@ usb:v07B3p0C26* usb:v07B3p0C2B* ID_PRODUCT_FROM_DATABASE=Mobile Office D428 Scanner +usb:v07B3p0E08* + ID_PRODUCT_FROM_DATABASE=Plustek OpticBook A300 Scanner + +usb:v07B3p1300* + ID_PRODUCT_FROM_DATABASE=OpticBook 3800 Scanner + +usb:v07B3p1301* + ID_PRODUCT_FROM_DATABASE=OpticBook 4800 Scanner + usb:v07B4* ID_VENDOR_FROM_DATABASE=Olympus Optical Co., Ltd @@ -25409,6 +25886,9 @@ usb:v07C4pB00A* usb:v07C4pB00B* ID_PRODUCT_FROM_DATABASE=USB to Memory Stick(LC1) +usb:v07C4pC010* + ID_PRODUCT_FROM_DATABASE=Kingston FCR-HS2/ATA Card Reader + usb:v07C5* ID_VENDOR_FROM_DATABASE=APG Cash Drawer @@ -25475,6 +25955,9 @@ usb:v07CApA801* usb:v07CApA815* ID_PRODUCT_FROM_DATABASE=AVerTV DVB-T Volar X (A815) +usb:v07CApA827* + ID_PRODUCT_FROM_DATABASE=AVerTV Hybrid Volar HX (A827) + usb:v07CApA867* ID_PRODUCT_FROM_DATABASE=AVerTV DVB-T (A867) @@ -27009,7 +27492,7 @@ usb:v087E* ID_VENDOR_FROM_DATABASE=Fujitsu Computer Products of America usb:v087F* - ID_VENDOR_FROM_DATABASE=Virtual IP Group, Inc. + ID_VENDOR_FROM_DATABASE=QualCore Logic Inc. usb:v0880* ID_VENDOR_FROM_DATABASE=APT Technologies, Inc. @@ -27029,6 +27512,12 @@ usb:v0886p0630* usb:v0887* ID_VENDOR_FROM_DATABASE=Hannstar Electronics Corp. +usb:v088A* + ID_VENDOR_FROM_DATABASE=TechTools + +usb:v088Ap1002* + ID_PRODUCT_FROM_DATABASE=DigiView DV3100 + usb:v088B* ID_VENDOR_FROM_DATABASE=MassWorks, Inc. @@ -27074,6 +27563,12 @@ usb:v089F* usb:v08A5* ID_VENDOR_FROM_DATABASE=e9, Inc. +usb:v08A6* + ID_VENDOR_FROM_DATABASE=Toshiba TEC + +usb:v08A6p0051* + ID_PRODUCT_FROM_DATABASE=B-SV4 + usb:v08A8* ID_VENDOR_FROM_DATABASE=Andrea Electronics @@ -27120,7 +27615,7 @@ usb:v08B9* ID_VENDOR_FROM_DATABASE=RadioShack Corp. (Tandy) usb:v08BB* - ID_VENDOR_FROM_DATABASE=Texas Instruments Japan + ID_VENDOR_FROM_DATABASE=Texas Instruments usb:v08BBp2702* ID_PRODUCT_FROM_DATABASE=Speakers @@ -27128,6 +27623,9 @@ usb:v08BBp2702* usb:v08BBp2704* ID_PRODUCT_FROM_DATABASE=Audio Codec +usb:v08BBp2706* + ID_PRODUCT_FROM_DATABASE=PCM2706 Audio Codec + usb:v08BBp2900* ID_PRODUCT_FROM_DATABASE=PCM2900 Audio Codec @@ -27479,6 +27977,9 @@ usb:v08E6p3438* usb:v08E6p3478* ID_PRODUCT_FROM_DATABASE=PinPad Smart Card Reader +usb:v08E6p34EC* + ID_PRODUCT_FROM_DATABASE=Compact Smart Card Reader Writer + usb:v08E6p4433* ID_PRODUCT_FROM_DATABASE=GemPC433-Swap @@ -27552,7 +28053,7 @@ usb:v08ECp0016* ID_PRODUCT_FROM_DATABASE=Kingston DataTraveler U3 usb:v08ECp0020* - ID_PRODUCT_FROM_DATABASE=TravelDrive + ID_PRODUCT_FROM_DATABASE=TravelDrive Intuix U3 2GB usb:v08ECp0021* ID_PRODUCT_FROM_DATABASE=TravelDrive @@ -28827,7 +29328,7 @@ usb:v0951p1621* ID_PRODUCT_FROM_DATABASE=DataTraveler 150 (32GB) usb:v0951p1624* - ID_PRODUCT_FROM_DATABASE=DataTraveler G2 4GB Pen Drive + ID_PRODUCT_FROM_DATABASE=DataTraveler G2 usb:v0951p1625* ID_PRODUCT_FROM_DATABASE=DataTraveler 101 II @@ -28845,7 +29346,7 @@ usb:v0951p1642* ID_PRODUCT_FROM_DATABASE=DT101 G2 usb:v0951p1643* - ID_PRODUCT_FROM_DATABASE=DataTraveler G3 4GB + ID_PRODUCT_FROM_DATABASE=DataTraveler G3 usb:v0951p1653* ID_PRODUCT_FROM_DATABASE=Data Traveler 100 G2 8 GiB @@ -28853,6 +29354,15 @@ usb:v0951p1653* usb:v0951p1656* ID_PRODUCT_FROM_DATABASE=DataTraveler Ultimate G2 +usb:v0951p1689* + ID_PRODUCT_FROM_DATABASE=DataTraveler SE9 + +usb:v0951p168A* + ID_PRODUCT_FROM_DATABASE=DataTraveler Micro + +usb:v0951p168C* + ID_PRODUCT_FROM_DATABASE=DT Elite 3.0 + usb:v0954* ID_VENDOR_FROM_DATABASE=RPM Systems Corp. @@ -28880,6 +29390,9 @@ usb:v0957p0202* usb:v0957p0518* ID_PRODUCT_FROM_DATABASE=82357B GPIB Interface +usb:v0957p0A07* + ID_PRODUCT_FROM_DATABASE=34411A Multimeter + usb:v0957p1745* ID_PRODUCT_FROM_DATABASE=Test and Measurement Device (IVI) @@ -29009,6 +29522,9 @@ usb:v0981* usb:v0984* ID_VENDOR_FROM_DATABASE=Apricorn +usb:v0984p0040* + ID_PRODUCT_FROM_DATABASE=SATA Wire (2.5") + usb:v0984p0200* ID_PRODUCT_FROM_DATABASE=Hard Drive Storage (TPP) @@ -29297,6 +29813,9 @@ usb:v09DAp032B* usb:v09DAp8090* ID_PRODUCT_FROM_DATABASE=X-718BK Oscar Optical Gaming Mouse +usb:v09DAp9033* + ID_PRODUCT_FROM_DATABASE=X-718BK Optical Mouse + usb:v09DAp9090* ID_PRODUCT_FROM_DATABASE=XL-750BK Laser Mouse @@ -29435,6 +29954,12 @@ usb:v0A00* usb:v0A01* ID_VENDOR_FROM_DATABASE=ViA, Inc. +usb:v0A05* + ID_VENDOR_FROM_DATABASE=Unknown Manufacturer + +usb:v0A05p7211* + ID_PRODUCT_FROM_DATABASE=hub + usb:v0A07* ID_VENDOR_FROM_DATABASE=Ontrak Control Systems Inc. @@ -29958,7 +30483,7 @@ usb:v0A5Cp2102* ID_PRODUCT_FROM_DATABASE=ANYCOM Blue USB-200/250 usb:v0A5Cp2110* - ID_PRODUCT_FROM_DATABASE=Bluetooth Controller + ID_PRODUCT_FROM_DATABASE=BCM2045B (BDC-2) [Bluetooth Controller] usb:v0A5Cp2111* ID_PRODUCT_FROM_DATABASE=ANYCOM Blue USB-UHE 200/250 @@ -29982,7 +30507,7 @@ usb:v0A5Cp2131* ID_PRODUCT_FROM_DATABASE=2045 Bluetooth 2.0 Device with trace filter usb:v0A5Cp2145* - ID_PRODUCT_FROM_DATABASE=Bluetooth with Enhanced Data Rate II + ID_PRODUCT_FROM_DATABASE=BCM2045B (BDC-2.1) [Bluetooth Controller] usb:v0A5Cp2148* ID_PRODUCT_FROM_DATABASE=BCM92046DG-CL1ROM Bluetooth 2.1 Adapter @@ -29993,11 +30518,14 @@ usb:v0A5Cp2150* usb:v0A5Cp2151* ID_PRODUCT_FROM_DATABASE=Bluetooth +usb:v0A5Cp2154* + ID_PRODUCT_FROM_DATABASE=BCM92046DG-CL1ROM Bluetooth 2.1 UHE Dongle + usb:v0A5Cp217D* ID_PRODUCT_FROM_DATABASE=HP Bluethunder usb:v0A5Cp217F* - ID_PRODUCT_FROM_DATABASE=Bluetooth Controller + ID_PRODUCT_FROM_DATABASE=BCM2045B (BDC-2.1) usb:v0A5Cp2198* ID_PRODUCT_FROM_DATABASE=Bluetooth 3.0 Device @@ -31079,6 +31607,9 @@ usb:v0B0E* usb:v0B0Ep1022* ID_PRODUCT_FROM_DATABASE=Jabra PRO 9450, Type 9400BS (DECT Headset) +usb:v0B0Ep620C* + ID_PRODUCT_FROM_DATABASE=Jabra BT620s + usb:v0B0F* ID_VENDOR_FROM_DATABASE=AVID Technology @@ -31388,6 +31919,9 @@ usb:v0B69* usb:v0B6A* ID_VENDOR_FROM_DATABASE=Maxim Integrated Products +usb:v0B6ApA132* + ID_PRODUCT_FROM_DATABASE=WUP-005 [Nintendo Wii U Pro Controller] + usb:v0B6F* ID_VENDOR_FROM_DATABASE=Nagano Japan Radio Co., Ltd @@ -32202,7 +32736,7 @@ usb:v0BB4p0FF8* ID_PRODUCT_FROM_DATABASE=Desire HD (Tethering Mode) usb:v0BB4p0FF9* - ID_PRODUCT_FROM_DATABASE=Desire / Desire HD / Hero (Charge Mode) + ID_PRODUCT_FROM_DATABASE=Desire / Desire HD / Hero / Thunderbolt (Charge Mode) usb:v0BB4p0FFE* ID_PRODUCT_FROM_DATABASE=Desire HD (modem mode) @@ -32264,6 +32798,9 @@ usb:v0BC2p2300* usb:v0BC2p2320* ID_PRODUCT_FROM_DATABASE=USB 3.0 bridge [Portable Expansion Drive] +usb:v0BC2p3320* + ID_PRODUCT_FROM_DATABASE=SRD00F2 [Expansion Desktop Drive] + usb:v0BC2p3332* ID_PRODUCT_FROM_DATABASE=Expansion @@ -32273,6 +32810,9 @@ usb:v0BC2p5021* usb:v0BC2p5031* ID_PRODUCT_FROM_DATABASE=FreeAgent GoFlex USB 3.0 +usb:v0BC2p50A1* + ID_PRODUCT_FROM_DATABASE=FreeAgent GoFlex Desk + usb:v0BC2p50A5* ID_PRODUCT_FROM_DATABASE=FreeAgent GoFlex Desk USB 3.0 @@ -32282,6 +32822,9 @@ usb:v0BC2p5121* usb:v0BC2p5161* ID_PRODUCT_FROM_DATABASE=FreeAgent GoFlex dock +usb:v0BC2pA003* + ID_PRODUCT_FROM_DATABASE=Backup Plus + usb:v0BC3* ID_VENDOR_FROM_DATABASE=IPWireless, Inc. @@ -32450,6 +32993,9 @@ usb:v0BDAp0176* usb:v0BDAp0178* ID_PRODUCT_FROM_DATABASE=Mass Storage Device +usb:v0BDAp0184* + ID_PRODUCT_FROM_DATABASE=RTS5182 Card Reader + usb:v0BDAp0186* ID_PRODUCT_FROM_DATABASE=Card Reader @@ -32504,6 +33050,9 @@ usb:v0BDAp8197* usb:v0BDAp8198* ID_PRODUCT_FROM_DATABASE=RTL8187B Wireless Adapter +usb:v0BDAp8199* + ID_PRODUCT_FROM_DATABASE=RTL8187SU 802.11g WLAN Adapter + usb:v0BDB* ID_VENDOR_FROM_DATABASE=Ericsson Business Mobile Networks BV @@ -32562,10 +33111,10 @@ usb:v0BE6* ID_VENDOR_FROM_DATABASE=Dong Guan Humen Wonderful Wire Cable Factory usb:v0BED* - ID_VENDOR_FROM_DATABASE=Silicon Labs + ID_VENDOR_FROM_DATABASE=MEI usb:v0BEDp1100* - ID_PRODUCT_FROM_DATABASE=MEI CASHFLOW SC + ID_PRODUCT_FROM_DATABASE=CASHFLOW SC usb:v0BEDp1101* ID_PRODUCT_FROM_DATABASE=Series 2000 Combo Acceptor @@ -32870,6 +33419,9 @@ usb:v0C2Ep0200* usb:v0C2Ep0204* ID_PRODUCT_FROM_DATABASE=Metrologic MS7120 Barcode Scanner (keyboard mode) +usb:v0C2Ep0206* + ID_PRODUCT_FROM_DATABASE=Metrologic MS4980 Barcode Scanner + usb:v0C2Ep0700* ID_PRODUCT_FROM_DATABASE=Metrologic MS7120 Barcode Scanner (uni-directional serial mode) @@ -32933,6 +33485,9 @@ usb:v0C45* usb:v0C45p0011* ID_PRODUCT_FROM_DATABASE=EBUDDY +usb:v0C45p1018* + ID_PRODUCT_FROM_DATABASE=Compact Flash storage memory card reader + usb:v0C45p1020* ID_PRODUCT_FROM_DATABASE=Mass Storage Reader @@ -33353,6 +33908,9 @@ usb:v0C4Bp0100* usb:v0C4Bp0300* ID_PRODUCT_FROM_DATABASE=cyberJack pinpad(a) +usb:v0C4Bp0501* + ID_PRODUCT_FROM_DATABASE=cyberJack RFID comfort dual interface smartcard reader + usb:v0C4Bp9102* ID_PRODUCT_FROM_DATABASE=cyberJack RFID basis contactless smartcard reader @@ -34107,7 +34665,7 @@ usb:v0CE9* ID_VENDOR_FROM_DATABASE=pico Technology usb:v0CE9p1001* - ID_PRODUCT_FROM_DATABASE=PicoScope3204 + ID_PRODUCT_FROM_DATABASE=PicoScope3000 series PC Oscilloscope usb:v0CF1* ID_VENDOR_FROM_DATABASE=e-Conn Electronic Co., Ltd @@ -34169,6 +34727,9 @@ usb:v0CF3p3002* usb:v0CF3p3005* ID_PRODUCT_FROM_DATABASE=AR3011 Bluetooth +usb:v0CF3p3008* + ID_PRODUCT_FROM_DATABASE=Bluetooth (AR3011) + usb:v0CF3p7015* ID_PRODUCT_FROM_DATABASE=TP-Link TL-WN821N v3 802.11n [Atheros AR7010+AR9287] @@ -35822,6 +36383,9 @@ usb:v0E41* usb:v0E41p4147* ID_PRODUCT_FROM_DATABASE=TonePort GX +usb:v0E41p414D* + ID_PRODUCT_FROM_DATABASE=Pod HD500 + usb:v0E41p4156* ID_PRODUCT_FROM_DATABASE=POD HD Desktop @@ -36014,6 +36578,9 @@ usb:v0E79p1416* usb:v0E79p1417* ID_PRODUCT_FROM_DATABASE=A43 IT +usb:v0E79p150E* + ID_PRODUCT_FROM_DATABASE=80 G9 + usb:v0E7B* ID_VENDOR_FROM_DATABASE=On-Tech Industry Co., Ltd @@ -36044,12 +36611,18 @@ usb:v0E8Dp0003* usb:v0E8Dp0004* ID_PRODUCT_FROM_DATABASE=MT6227 phone +usb:v0E8Dp0023* + ID_PRODUCT_FROM_DATABASE=S103 + usb:v0E8Dp1806* ID_PRODUCT_FROM_DATABASE=Samsung SE-208AB Slim Portable DVD Writer usb:v0E8Dp1836* ID_PRODUCT_FROM_DATABASE=Samsung SE-S084 Super WriteMaster Slim External DVD writer +usb:v0E8Dp3329* + ID_PRODUCT_FROM_DATABASE=Qstarz BT-Q1000XT + usb:v0E8F* ID_VENDOR_FROM_DATABASE=GreenAsia Inc. @@ -36188,6 +36761,12 @@ usb:v0EB3* usb:v0EB7* ID_VENDOR_FROM_DATABASE=Endor AG +usb:v0EB8* + ID_VENDOR_FROM_DATABASE=Mettler Toledo + +usb:v0EB8pF000* + ID_PRODUCT_FROM_DATABASE=PS60 Scale + usb:v0EBE* ID_VENDOR_FROM_DATABASE=VWeb Corp. @@ -36842,6 +37421,9 @@ usb:v0FCEp00D9* usb:v0FCEp0112* ID_PRODUCT_FROM_DATABASE=W995 Walkman Phone +usb:v0FCEp015A* + ID_PRODUCT_FROM_DATABASE=Xperia Pro [Media Transfer Protocol] + usb:v0FCEp0166* ID_PRODUCT_FROM_DATABASE=Xperia Mini Pro @@ -36851,6 +37433,12 @@ usb:v0FCEp0169* usb:v0FCEp0172* ID_PRODUCT_FROM_DATABASE=Xperia P +usb:v0FCEp0177* + ID_PRODUCT_FROM_DATABASE=Xperia Ion [Mass Storage] + +usb:v0FCEp0DDE* + ID_PRODUCT_FROM_DATABASE=Xperia Mini Pro Bootloader + usb:v0FCEp1010* ID_PRODUCT_FROM_DATABASE=WMC Modem @@ -36881,12 +37469,21 @@ usb:v0FCEp3138* usb:v0FCEp3149* ID_PRODUCT_FROM_DATABASE=Xperia X8 +usb:v0FCEp5177* + ID_PRODUCT_FROM_DATABASE=Xperia Ion [Debug Mode] + usb:v0FCEp614F* ID_PRODUCT_FROM_DATABASE=Xperia X12 (debug mode) usb:v0FCEp6166* ID_PRODUCT_FROM_DATABASE=Xperia Mini Pro +usb:v0FCEp715A* + ID_PRODUCT_FROM_DATABASE=Xperia Pro [Tethering] + +usb:v0FCEp7177* + ID_PRODUCT_FROM_DATABASE=Xperia Ion [Tethering] + usb:v0FCEp8004* ID_PRODUCT_FROM_DATABASE=9000 Phone [Mass Storage] @@ -37013,6 +37610,9 @@ usb:v0FCEpE133* usb:v0FCEpE14F* ID_PRODUCT_FROM_DATABASE=Xperia Arc/X12 +usb:v0FCEpE15A* + ID_PRODUCT_FROM_DATABASE=Xperia Pro [Mass Storage Class] + usb:v0FCEpE161* ID_PRODUCT_FROM_DATABASE=Xperia Ray @@ -37076,6 +37676,12 @@ usb:v0FD9p0033* usb:v0FD9p0037* ID_PRODUCT_FROM_DATABASE=Video Capture v2 +usb:v0FDA* + ID_VENDOR_FROM_DATABASE=Quantec Networks GmbH + +usb:v0FDAp0100* + ID_PRODUCT_FROM_DATABASE=quanton flight control + usb:v0FDC* ID_VENDOR_FROM_DATABASE=Micro Plus @@ -37185,7 +37791,7 @@ usb:v1004p1FAE* ID_PRODUCT_FROM_DATABASE=U8120 3G Cellphone usb:v1004p6000* - ID_PRODUCT_FROM_DATABASE=KU330/KU990/VX4400/VX6000 + ID_PRODUCT_FROM_DATABASE=Various Mobile Phones usb:v1004p6005* ID_PRODUCT_FROM_DATABASE=T5100 @@ -37593,7 +38199,7 @@ usb:v1058* ID_VENDOR_FROM_DATABASE=Western Digital Technologies, Inc. usb:v1058p0200* - ID_PRODUCT_FROM_DATABASE=Firewire USB Combo + ID_PRODUCT_FROM_DATABASE=FireWire USB Combo usb:v1058p0400* ID_PRODUCT_FROM_DATABASE=External HDD @@ -37614,7 +38220,7 @@ usb:v1058p071A* ID_PRODUCT_FROM_DATABASE=My Passport 1TB usb:v1058p0740* - ID_PRODUCT_FROM_DATABASE=My Passport 1TB + ID_PRODUCT_FROM_DATABASE=My Passport usb:v1058p0742* ID_PRODUCT_FROM_DATABASE=My Passport Essential SE @@ -38177,6 +38783,9 @@ usb:v10C4p8789* usb:v10C4p87BE* ID_PRODUCT_FROM_DATABASE=C8051F34x HDMI Audio Extractor [EMX-HD-AUD] +usb:v10C4p8863* + ID_PRODUCT_FROM_DATABASE=C8051F34x Bootloader + usb:v10C4pEA60* ID_PRODUCT_FROM_DATABASE=CP210x UART Bridge / myAVR mySmartUSB light @@ -38489,6 +39098,9 @@ usb:v1130p660C* usb:v1130p6806* ID_PRODUCT_FROM_DATABASE=Keychain photo frame +usb:v1130pC301* + ID_PRODUCT_FROM_DATABASE=Digital Photo viewer [Wallet Pix] + usb:v1130pF211* ID_PRODUCT_FROM_DATABASE=TP6911 Audio Headset @@ -38870,6 +39482,12 @@ usb:v11AAp1518* usb:v11AB* ID_VENDOR_FROM_DATABASE=Exito Electronics Co., Ltd +usb:v11AC* + ID_VENDOR_FROM_DATABASE=Nike + +usb:v11ACp6565* + ID_PRODUCT_FROM_DATABASE=FuelBand + usb:v11B0* ID_VENDOR_FROM_DATABASE=ATECH FLASH TECHNOLOGY @@ -39017,6 +39635,9 @@ usb:v1235p8006* usb:v1241* ID_VENDOR_FROM_DATABASE=Belkin +usb:v1241p0504* + ID_PRODUCT_FROM_DATABASE=Wireless Trackball Keyboard + usb:v1241p1111* ID_PRODUCT_FROM_DATABASE=Mouse @@ -39038,6 +39659,9 @@ usb:v1241p1503* usb:v1241p1603* ID_PRODUCT_FROM_DATABASE=Keyboard +usb:v1241pF767* + ID_PRODUCT_FROM_DATABASE=Keyboard + usb:v124A* ID_VENDOR_FROM_DATABASE=AirVast @@ -39320,9 +39944,15 @@ usb:v12AB* usb:v12B8* ID_VENDOR_FROM_DATABASE=Zhejiang Xinya Electronic Technology Co., Ltd. +usb:v12B9* + ID_VENDOR_FROM_DATABASE=E28 + usb:v12BA* ID_VENDOR_FROM_DATABASE=Licensed by Sony Computer Entertainment America +usb:v12BAp00FF* + ID_PRODUCT_FROM_DATABASE=Rocksmith Guitar Adapter + usb:v12BAp0100* ID_PRODUCT_FROM_DATABASE=RedOctane Guitar for PlayStation(R)3 @@ -39383,6 +40013,12 @@ usb:v12D1p1406* usb:v12D1p140B* ID_PRODUCT_FROM_DATABASE=EC1260 Wireless Data Modem HSD USB Card +usb:v12D1p140C* + ID_PRODUCT_FROM_DATABASE=E180v + +usb:v12D1p1412* + ID_PRODUCT_FROM_DATABASE=EC168c + usb:v12D1p1436* ID_PRODUCT_FROM_DATABASE=E173 3G Modem (modem-mode) @@ -39536,6 +40172,12 @@ usb:v1310p0001* usb:v1312* ID_VENDOR_FROM_DATABASE=ICS Electronics +usb:v1313* + ID_VENDOR_FROM_DATABASE=ThorLabs + +usb:v1313p8070* + ID_PRODUCT_FROM_DATABASE=PM100D + usb:v131D* ID_VENDOR_FROM_DATABASE=Natural Point @@ -39668,6 +40310,9 @@ usb:v1345* usb:v1345p001C* ID_PRODUCT_FROM_DATABASE=Xbox Controller Hub +usb:v1345p6006* + ID_PRODUCT_FROM_DATABASE=Defender Wireless Controller + usb:v1347* ID_VENDOR_FROM_DATABASE=Moravian Instruments @@ -39824,6 +40469,9 @@ usb:v138Ap0008* usb:v138Ap0011* ID_PRODUCT_FROM_DATABASE=VFS5011 Fingerprint Reader +usb:v138Ap0018* + ID_PRODUCT_FROM_DATABASE=Fingerprint scanner + usb:v138Ap003C* ID_PRODUCT_FROM_DATABASE=VFS471 Fingerprint Reader @@ -39956,6 +40604,9 @@ usb:v13B3* usb:v13BA* ID_VENDOR_FROM_DATABASE=PCPlay +usb:v13BAp0001* + ID_PRODUCT_FROM_DATABASE=König Electronic CMP-KEYPAD12 Numeric Keypad + usb:v13BAp0017* ID_PRODUCT_FROM_DATABASE=PS/2 Keyboard+Mouse Adapter @@ -40118,6 +40769,9 @@ usb:v13D3p3306* usb:v13D3p3315* ID_PRODUCT_FROM_DATABASE=Bluetooth module +usb:v13D3p3375* + ID_PRODUCT_FROM_DATABASE=Atheros AR3012 Bluetooth 4.0 Adapter + usb:v13D3p5070* ID_PRODUCT_FROM_DATABASE=Webcam @@ -40136,6 +40790,9 @@ usb:v13D3p5126* usb:v13D3p5702* ID_PRODUCT_FROM_DATABASE=UVC VGA Webcam +usb:v13D3p5710* + ID_PRODUCT_FROM_DATABASE=UVC VGA Webcam + usb:v13D3p5716* ID_PRODUCT_FROM_DATABASE=UVC VGA Webcam @@ -40200,7 +40857,7 @@ usb:v13FDp160F* ID_PRODUCT_FROM_DATABASE=RocketFish SATA Bridge [INIC-1611] usb:v13FDp1640* - ID_PRODUCT_FROM_DATABASE=ASUS SDRW-08D1S-U DVD-RW + ID_PRODUCT_FROM_DATABASE=INIC-1610L SATA Bridge usb:v13FDp1840* ID_PRODUCT_FROM_DATABASE=INIC-1608 SATA bridge @@ -40226,12 +40883,18 @@ usb:v13FEp1E50* usb:v13FEp1F00* ID_PRODUCT_FROM_DATABASE=DataTraveler 2.0 4GB Flash Drive / Patriot Xporter 32GB (PEF32GUSB) Flash Drive +usb:v13FEp1F23* + ID_PRODUCT_FROM_DATABASE=2Gb + usb:v13FEp2240* ID_PRODUCT_FROM_DATABASE=microSD card reader usb:v13FEp3100* ID_PRODUCT_FROM_DATABASE=2/4 GB stick +usb:v13FEp3123* + ID_PRODUCT_FROM_DATABASE=Verbatim STORE N GO 4GB + usb:v13FEp3800* ID_PRODUCT_FROM_DATABASE=Rage XT Flash Drive @@ -40301,12 +40964,18 @@ usb:v1410p4100* usb:v1410p4400* ID_PRODUCT_FROM_DATABASE=Ovation MC930D/MC950D +usb:v1410p9010* + ID_PRODUCT_FROM_DATABASE=Expedite E362 + usb:v1410pA001* ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem usb:v1410pA008* ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem (QDL mode) +usb:v1410pB001* + ID_PRODUCT_FROM_DATABASE=Ovation MC551 + usb:v1415* ID_VENDOR_FROM_DATABASE=Nam Tai E&E Products Ltd. or OmniVision Technologies, Inc. @@ -40392,7 +41061,7 @@ usb:v1443* ID_VENDOR_FROM_DATABASE=Digilent usb:v1443p0007* - ID_PRODUCT_FROM_DATABASE=CoolRunner-II CPLD Starter Kit + ID_PRODUCT_FROM_DATABASE=Development board JTAG usb:v1446* ID_VENDOR_FROM_DATABASE=X.J.GROUP @@ -40526,6 +41195,9 @@ usb:v147Ep1000* usb:v147Ep1001* ID_PRODUCT_FROM_DATABASE=TCS5B Fingerprint sensor +usb:v147Ep1002* + ID_PRODUCT_FROM_DATABASE=Biometric Touchchip/Touchstrip Fingerprint Sensor + usb:v147Ep2016* ID_PRODUCT_FROM_DATABASE=Biometric Touchchip/Touchstrip Fingerprint Sensor @@ -40611,7 +41283,7 @@ usb:v148Fp3572* ID_PRODUCT_FROM_DATABASE=RT3572 Wireless Adapter usb:v148Fp3573* - ID_PRODUCT_FROM_DATABASE=TEW-684UB / RT3573 Wireless Adapter + ID_PRODUCT_FROM_DATABASE=RT3573 Wireless Adapter usb:v148Fp5370* ID_PRODUCT_FROM_DATABASE=RT5370 Wireless Adapter @@ -40731,7 +41403,7 @@ usb:v14B2p3C28* ID_PRODUCT_FROM_DATABASE=Conceptronic C300RU v2 802.11bgn Wireless Adapter [Ralink RT2770] usb:v14B2p3C2B* - ID_PRODUCT_FROM_DATABASE=NEC NP02LM 802.11bgn Wireless Adapter [Ralink RT3070] + ID_PRODUCT_FROM_DATABASE=NEC NP02LM 802.11bgn Wireless Adapter [Ralink RT3072] usb:v14B2p3C2C* ID_PRODUCT_FROM_DATABASE=Keebox W150NU 802.11bgn Wireless Adapter [Ralink RT3070] @@ -40916,6 +41588,9 @@ usb:v152A* usb:v152D* ID_VENDOR_FROM_DATABASE=JMicron Technology Corp. / JMicron USA Technology Corp. +usb:v152Dp0539* + ID_PRODUCT_FROM_DATABASE=JMS539 SuperSpeed SATA II 3.0G Bridge + usb:v152Dp2329* ID_PRODUCT_FROM_DATABASE=JM20329 SATA Bridge @@ -40968,7 +41643,7 @@ usb:v1532p0016* ID_PRODUCT_FROM_DATABASE=DeathAdder Mouse usb:v1532p0017* - ID_PRODUCT_FROM_DATABASE=Imperator Mouse + ID_PRODUCT_FROM_DATABASE=RZ01-0035 Laser Gaming Mouse [Imperator] usb:v1532p001C* ID_PRODUCT_FROM_DATABASE=RZ01-0036 Optical Gaming Mouse [Abyssus] @@ -40976,6 +41651,9 @@ usb:v1532p001C* usb:v1532p0024* ID_PRODUCT_FROM_DATABASE=Razer Mamba +usb:v1532p0036* + ID_PRODUCT_FROM_DATABASE=RZ01-0075, Gaming Mouse [Naga Hex] + usb:v1532p0101* ID_PRODUCT_FROM_DATABASE=Copperhead Mouse @@ -40985,6 +41663,9 @@ usb:v1532p0102* usb:v1532p0109* ID_PRODUCT_FROM_DATABASE=Lycosa Keyboard +usb:v1532p0300* + ID_PRODUCT_FROM_DATABASE=RZ06-0063 Motion Sensing Controllers [Hydra] + usb:v1546* ID_VENDOR_FROM_DATABASE=U-Blox AG @@ -41009,6 +41690,9 @@ usb:v154Bp0010* usb:v154Bp004D* ID_PRODUCT_FROM_DATABASE=8 GB Flash Drive +usb:v154Bp0057* + ID_PRODUCT_FROM_DATABASE=32GB Micro Slide Attache Flash Drive + usb:v154Bp6545* ID_PRODUCT_FROM_DATABASE=FD Device @@ -41201,6 +41885,9 @@ usb:v15BAp0004* usb:v15BAp002A* ID_PRODUCT_FROM_DATABASE=ARM-USB-TINY-H JTAG interface +usb:v15BAp002B* + ID_PRODUCT_FROM_DATABASE=ARM-USB-OCD-H JTAG+RS232 + usb:v15C0* ID_VENDOR_FROM_DATABASE=XL Imaging @@ -41927,6 +42614,30 @@ usb:v1669* usb:v1669p1001* ID_PRODUCT_FROM_DATABASE=uLan2USB Converter - PS1 protocol +usb:v166A* + ID_VENDOR_FROM_DATABASE=Clipsal + +usb:v166Ap0101* + ID_PRODUCT_FROM_DATABASE=C-Bus Multi-room Audio Matrix Switcher + +usb:v166Ap0201* + ID_PRODUCT_FROM_DATABASE=C-Bus Pascal Automation Controller + +usb:v166Ap0301* + ID_PRODUCT_FROM_DATABASE=C-Bus Wireless PC Interface + +usb:v166Ap0303* + ID_PRODUCT_FROM_DATABASE=C-Bus interface + +usb:v166Ap0304* + ID_PRODUCT_FROM_DATABASE=C-Bus Black and White Touchscreen + +usb:v166Ap0305* + ID_PRODUCT_FROM_DATABASE=C-Bus Spectrum Colour Touchscreen + +usb:v166Ap0401* + ID_PRODUCT_FROM_DATABASE=C-Bus Architectural Dimmer + usb:v1677* ID_VENDOR_FROM_DATABASE=China Huada Integrated Circuit Design (Group) Co., Ltd. (CIDC Group) @@ -42005,6 +42716,9 @@ usb:v168Cp0002* usb:v1690* ID_VENDOR_FROM_DATABASE=Askey Computer Corp. [hex] +usb:v1690p0001* + ID_PRODUCT_FROM_DATABASE=Arcaze Gamepad + usb:v1690p0101* ID_PRODUCT_FROM_DATABASE=Creative Modem Blaster DE5670 @@ -42234,13 +42948,19 @@ usb:v16C0p05DD* ID_PRODUCT_FROM_DATABASE=BlackcatUSB2 usb:v16C0p05DF* - ID_PRODUCT_FROM_DATABASE=Masterkit MA901 radio + ID_PRODUCT_FROM_DATABASE=HID device except mice, keyboards, and joysticks usb:v16C0p05E1* - ID_PRODUCT_FROM_DATABASE=CDC-ACM class devices (modems) + ID_PRODUCT_FROM_DATABASE=Free shared USB VID/PID pair for CDC devices usb:v16C0p05E4* - ID_PRODUCT_FROM_DATABASE=MIDI class devices + ID_PRODUCT_FROM_DATABASE=Free shared USB VID/PID pair for MIDI devices + +usb:v16C0p06B4* + ID_PRODUCT_FROM_DATABASE=USB2LPT with 2 interfaces + +usb:v16C0p06B5* + ID_PRODUCT_FROM_DATABASE=USB2LPT with 3 interfaces (native, HID, printer) usb:v16C0p076B* ID_PRODUCT_FROM_DATABASE=OpenPCD 13.56MHz RFID Reader @@ -42266,6 +42986,12 @@ usb:v16C0p08CD* usb:v16C0p0A32* ID_PRODUCT_FROM_DATABASE=jbmedia Light-Manager Pro +usb:v16C0p27D8* + ID_PRODUCT_FROM_DATABASE=libusb-bound devices + +usb:v16C0p27D9* + ID_PRODUCT_FROM_DATABASE=HID device except mice, keyboards, and joysticks + usb:v16C0p27DA* ID_PRODUCT_FROM_DATABASE=Mouse @@ -42311,6 +43037,15 @@ usb:v16D0p054B* usb:v16D0p05BE* ID_PRODUCT_FROM_DATABASE=EasyLogic Board +usb:v16D0p0753* + ID_PRODUCT_FROM_DATABASE=Digistump DigiSpark + +usb:v16D0p075C* + ID_PRODUCT_FROM_DATABASE=AB-1.x UAC1 [Audio Widget] + +usb:v16D0p075D* + ID_PRODUCT_FROM_DATABASE=AB-1.x UAC2 [Audio Widget] + usb:v16D3* ID_VENDOR_FROM_DATABASE=Frontline Test Equipment, Inc. @@ -42704,6 +43439,9 @@ usb:v1784p0008* usb:v1784p000A* ID_PRODUCT_FROM_DATABASE=eHome Infrared Transceiver +usb:v1784p0011* + ID_PRODUCT_FROM_DATABASE=eHome Infrared Transceiver + usb:v1787* ID_VENDOR_FROM_DATABASE=ATI AIB @@ -42968,6 +43706,24 @@ usb:v17EFp6014* usb:v17EFp7423* ID_PRODUCT_FROM_DATABASE=IdeaPad A1 Tablet +usb:v17EFp7435* + ID_PRODUCT_FROM_DATABASE=A789 (Mass Storage mode, with debug) + +usb:v17EFp743A* + ID_PRODUCT_FROM_DATABASE=A789 (Mass Storage mode) + +usb:v17EFp7497* + ID_PRODUCT_FROM_DATABASE=A789 (MTP mode) + +usb:v17EFp7498* + ID_PRODUCT_FROM_DATABASE=A789 (MTP mode, with debug) + +usb:v17EFp749A* + ID_PRODUCT_FROM_DATABASE=A789 (PTP mode) + +usb:v17EFp749B* + ID_PRODUCT_FROM_DATABASE=A789 (PTP mode, with debug) + usb:v17F4* ID_VENDOR_FROM_DATABASE=WaveSense @@ -43148,6 +43904,9 @@ usb:v18A5p022B* usb:v18A5p0237* ID_PRODUCT_FROM_DATABASE=Portable Harddrive (500 GB) +usb:v18A5p0302* + ID_PRODUCT_FROM_DATABASE=32GB Flash Drive + usb:v18B1* ID_VENDOR_FROM_DATABASE=Petalynx @@ -43202,6 +43961,12 @@ usb:v18D1* usb:v18D1p0D02* ID_PRODUCT_FROM_DATABASE=Celkon A88 +usb:v18D1p2D00* + ID_PRODUCT_FROM_DATABASE=Android-powered device in accessory mode + +usb:v18D1p2D01* + ID_PRODUCT_FROM_DATABASE=Android-powered device in accessory mode with ADB support + usb:v18D1p4E11* ID_PRODUCT_FROM_DATABASE=Nexus One @@ -43223,6 +43988,30 @@ usb:v18D1p4E22* usb:v18D1p4E24* ID_PRODUCT_FROM_DATABASE=Nexus S (tether) +usb:v18D1p4E40* + ID_PRODUCT_FROM_DATABASE=Nexus 7 (fastboot) + +usb:v18D1p4E41* + ID_PRODUCT_FROM_DATABASE=ASUS Nexus 7 (MTP modus) + +usb:v18D1p4E42* + ID_PRODUCT_FROM_DATABASE=Nexus 7 (debug) + +usb:v18D1p4E43* + ID_PRODUCT_FROM_DATABASE=ASUS Nexus 7 (PTP modus) + +usb:v18D1p4EE1* + ID_PRODUCT_FROM_DATABASE=Nexus 4 + +usb:v18D1p4EE2* + ID_PRODUCT_FROM_DATABASE=Nexus 4 (debug) + +usb:v18D1p4EE3* + ID_PRODUCT_FROM_DATABASE=Nexus 4 (tether) + +usb:v18D1p4EE4* + ID_PRODUCT_FROM_DATABASE=Nexus 4 (debug + tether) + usb:v18D1p7102* ID_PRODUCT_FROM_DATABASE=Toshiba Thrive tablet @@ -43295,6 +44084,12 @@ usb:v18ECp3118* usb:v18ECp3188* ID_PRODUCT_FROM_DATABASE=ARK3188 UVC Webcam +usb:v18ECp3299* + ID_PRODUCT_FROM_DATABASE=Webcam Carrefour + +usb:v18ECp3366* + ID_PRODUCT_FROM_DATABASE=Bresser Biolux NV + usb:v18FD* ID_VENDOR_FROM_DATABASE=FineArch Inc. @@ -43476,11 +44271,14 @@ usb:v1949p0002* ID_PRODUCT_FROM_DATABASE=Amazon Kindle usb:v1949p0004* - ID_PRODUCT_FROM_DATABASE=Amazon Kindle 3/4 + ID_PRODUCT_FROM_DATABASE=Amazon Kindle 3/4/Paperwhite usb:v1949p0006* ID_PRODUCT_FROM_DATABASE=Kindle Fire +usb:v1949p0008* + ID_PRODUCT_FROM_DATABASE=Amazon Kindle Fire HD 8.9" + usb:v194F* ID_VENDOR_FROM_DATABASE=PreSonus Audio Electronics, Inc. @@ -43520,6 +44318,12 @@ usb:v195Dp7777* usb:v195Dp7779* ID_PRODUCT_FROM_DATABASE=Scorpius-P20MT +usb:v1965* + ID_VENDOR_FROM_DATABASE=Uniden Corporation + +usb:v1965p0016* + ID_PRODUCT_FROM_DATABASE=HomePatrol-1 + usb:v1967* ID_VENDOR_FROM_DATABASE=CASIO HITACHI Mobile Communications Co., Ltd. @@ -43529,6 +44333,9 @@ usb:v196B* usb:v1970* ID_VENDOR_FROM_DATABASE=Dane-Elec Corp. USA +usb:v1970p0000* + ID_PRODUCT_FROM_DATABASE=Z Mate 16GB + usb:v1975* ID_VENDOR_FROM_DATABASE=Dongguan Guneetal Wire & Cable Co., Ltd. @@ -43685,6 +44492,9 @@ usb:v19D2p0103* usb:v19D2p0104* ID_PRODUCT_FROM_DATABASE=K4505-Z +usb:v19D2p0146* + ID_PRODUCT_FROM_DATABASE=MF 195E (HSPA+ Modem) + usb:v19D2p0167* ID_PRODUCT_FROM_DATABASE=MF820 4G LTE @@ -43889,6 +44699,9 @@ usb:v1A81p2205* usb:v1A86* ID_VENDOR_FROM_DATABASE=QinHeng Electronics +usb:v1A86p5512* + ID_PRODUCT_FROM_DATABASE=CH341 in EPP/MEM/I2C mode, EPP/I2C adapter + usb:v1A86p5523* ID_PRODUCT_FROM_DATABASE=CH341 in serial mode, usb to serial port converter @@ -43974,7 +44787,13 @@ usb:v1AE7p0381* ID_PRODUCT_FROM_DATABASE=VS-DVB-T 380U (af9015 based) usb:v1AE7p2001* - ID_PRODUCT_FROM_DATABASE=SpeedLink SL-6825 + ID_PRODUCT_FROM_DATABASE=SpeedLink Snappy Mic webcam (SL-6825-SBK) + +usb:v1AE7p9003* + ID_PRODUCT_FROM_DATABASE=SpeedLink Vicious And Devine Laplace webcam, white (VD-1504-SWT) + +usb:v1AE7p9004* + ID_PRODUCT_FROM_DATABASE=SpeedLink Vicious And Devine Laplace webcam, black (VD-1504-SBK) usb:v1AED* ID_VENDOR_FROM_DATABASE=High Top Precision Electronic Co., Ltd. @@ -44537,6 +45356,9 @@ usb:v1BC7* usb:v1BC7p0020* ID_PRODUCT_FROM_DATABASE=HE863 +usb:v1BC7p0021* + ID_PRODUCT_FROM_DATABASE=HE910 + usb:v1BC7p1003* ID_PRODUCT_FROM_DATABASE=UC864-E @@ -44573,6 +45395,9 @@ usb:v1BCFp05CF* usb:v1BCFp0C31* ID_PRODUCT_FROM_DATABASE=SPIF30x Serial-ATA bridge +usb:v1BCFp2885* + ID_PRODUCT_FROM_DATABASE=ASUS Webcam + usb:v1BCFp2888* ID_PRODUCT_FROM_DATABASE=HP Universal Camera @@ -44717,9 +45542,15 @@ usb:v1C4Fp0003* usb:v1C4Fp000E* ID_PRODUCT_FROM_DATABASE=Genius KB-120 Keyboard +usb:v1C4Fp0026* + ID_PRODUCT_FROM_DATABASE=Keyboard + usb:v1C4Fp3000* ID_PRODUCT_FROM_DATABASE=Micro USB Web Camera +usb:v1C4Fp3002* + ID_PRODUCT_FROM_DATABASE=WebCam SiGma Micro + usb:v1C6B* ID_VENDOR_FROM_DATABASE=Philips & Lite-ON Digital Solutions Corporation @@ -44753,6 +45584,12 @@ usb:v1C7Ap0801* usb:v1C7B* ID_VENDOR_FROM_DATABASE=LUXSHARE PRECISION INDUSTRY (SHENZHEN) CO., LTD. +usb:v1C83* + ID_VENDOR_FROM_DATABASE=Schomäcker GmbH + +usb:v1C83p0001* + ID_PRODUCT_FROM_DATABASE=RS150 V2 + usb:v1C87* ID_VENDOR_FROM_DATABASE=2N TELEKOMUNIKACE a.s. @@ -44804,6 +45641,12 @@ usb:v1CB3* usb:v1CB4* ID_VENDOR_FROM_DATABASE=OPEX CORPORATION +usb:v1CB6* + ID_VENDOR_FROM_DATABASE=IdeaCom Technology Inc. + +usb:v1CB6p6681* + ID_PRODUCT_FROM_DATABASE=IDC6681 + usb:v1CBE* ID_VENDOR_FROM_DATABASE=Luminary Micro Inc. @@ -44954,6 +45797,9 @@ usb:v1D1F* usb:v1D20* ID_VENDOR_FROM_DATABASE=SAMTACK INC. +usb:v1D27* + ID_VENDOR_FROM_DATABASE=ASUS + usb:v1D34* ID_VENDOR_FROM_DATABASE=Dream Cheeky @@ -44993,6 +45839,9 @@ usb:v1D50* usb:v1D50p5119* ID_PRODUCT_FROM_DATABASE=GTA01/GTA02 U-Boot Bootloader +usb:v1D50p602B* + ID_PRODUCT_FROM_DATABASE=FPGALink + usb:v1D57* ID_VENDOR_FROM_DATABASE=Xenta @@ -45017,6 +45866,9 @@ usb:v1D57p83D0* usb:v1D57pAC01* ID_PRODUCT_FROM_DATABASE=Wireless Receiver (Keyboard and Mouse) +usb:v1D57pAD02* + ID_PRODUCT_FROM_DATABASE=SE340D PC Remote Control + usb:v1D57pAF01* ID_PRODUCT_FROM_DATABASE=AUVIO Universal Remote Receiver for PlayStation 3 @@ -45362,6 +46214,9 @@ usb:v1FBDp0001* usb:v1FC9* ID_VENDOR_FROM_DATABASE=NXP Semiconductors +usb:v1FC9p0003* + ID_PRODUCT_FROM_DATABASE=LPC1343 + usb:v1FC9p010B* ID_PRODUCT_FROM_DATABASE=PR533 @@ -45399,10 +46254,10 @@ usb:v2001p0201* ID_PRODUCT_FROM_DATABASE=DHN-120 10Mb Home Phoneline Adapter usb:v2001p1A00* - ID_PRODUCT_FROM_DATABASE=DUB-E100 10/100 Ethernet + ID_PRODUCT_FROM_DATABASE=DUB-E100 Fast Ethernet Adapter(rev.A) [ASIX AX88172] usb:v2001p1A02* - ID_PRODUCT_FROM_DATABASE=DUB-E100 Ethernet Adapter + ID_PRODUCT_FROM_DATABASE=DUB-E100 Fast Ethernet Adapter(rev.C1) [ASIX AX88772] usb:v2001p200C* ID_PRODUCT_FROM_DATABASE=10/100 Ethernet @@ -45495,7 +46350,7 @@ usb:v2001p3C02* ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter usb:v2001p3C05* - ID_PRODUCT_FROM_DATABASE=DUB-E100 Fast Ethernet [asix] + ID_PRODUCT_FROM_DATABASE=DUB-E100 Fast Ethernet Adapter(rev.B1) [ASIX AX88772] usb:v2001p3C15* ID_PRODUCT_FROM_DATABASE=DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT5372] @@ -46439,6 +47294,12 @@ usb:v2406* usb:v2406p6688* ID_PRODUCT_FROM_DATABASE=PD7X Portable Storage +usb:v2443* + ID_VENDOR_FROM_DATABASE=Aessent Technology Ltd + +usb:v2443p00DC* + ID_PRODUCT_FROM_DATABASE=aes220 FPGA Mini-Module + usb:v2478* ID_VENDOR_FROM_DATABASE=Tripp-Lite -- cgit v1.2.1 From e3017af97310da024ffb378ed155bc1676922ce7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 21 Mar 2013 22:50:25 +0100 Subject: bus: implement full method call timeout logic --- Makefile.am | 3 +- src/libsystemd-bus/bus-control.c | 18 +- src/libsystemd-bus/bus-error.c | 7 + src/libsystemd-bus/bus-error.h | 2 + src/libsystemd-bus/bus-internal.h | 6 + src/libsystemd-bus/bus-message.c | 7 + src/libsystemd-bus/bus-message.h | 1 + src/libsystemd-bus/sd-bus-protocol.h | 2 - src/libsystemd-bus/sd-bus.c | 385 ++++++++++++++++++++++++++--------- src/libsystemd-bus/sd-bus.h | 11 +- src/libsystemd-bus/test-bus-chat.c | 187 +++++++++++++++-- src/shared/prioq.c | 20 +- src/shared/prioq.h | 1 + 13 files changed, 520 insertions(+), 130 deletions(-) diff --git a/Makefile.am b/Makefile.am index d9cc5f0f96..969f85adfe 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1668,7 +1668,8 @@ libsystemd_bus_la_SOURCES = \ src/libsystemd-bus/bus-type.h libsystemd_bus_la_LIBADD = \ - libsystemd-id128-internal.la + libsystemd-id128-internal.la \ + libsystemd-shared.la noinst_LTLIBRARIES += \ libsystemd-bus.la diff --git a/src/libsystemd-bus/bus-control.c b/src/libsystemd-bus/bus-control.c index 50e1a2c00a..9d242dc413 100644 --- a/src/libsystemd-bus/bus-control.c +++ b/src/libsystemd-bus/bus-control.c @@ -59,7 +59,7 @@ int sd_bus_request_name(sd_bus *bus, const char *name, int flags) { if (r < 0) return r; - r = sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, NULL, &reply); + r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply); if (r < 0) return r; @@ -94,7 +94,7 @@ int sd_bus_release_name(sd_bus *bus, const char *name) { if (r < 0) return r; - r = sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, NULL, &reply); + r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply); if (r < 0) return r; @@ -135,11 +135,11 @@ int sd_bus_list_names(sd_bus *bus, char ***l) { if (r < 0) return r; - r = sd_bus_send_with_reply_and_block(bus, m1, (uint64_t) -1, NULL, &reply1); + r = sd_bus_send_with_reply_and_block(bus, m1, 0, NULL, &reply1); if (r < 0) return r; - r = sd_bus_send_with_reply_and_block(bus, m2, (uint64_t) -1, NULL, &reply2); + r = sd_bus_send_with_reply_and_block(bus, m2, 0, NULL, &reply2); if (r < 0) return r; @@ -183,7 +183,7 @@ int sd_bus_get_owner(sd_bus *bus, const char *name, char **owner) { if (r < 0) return r; - r = sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, NULL, &reply); + r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply); if (r < 0) return r; @@ -230,7 +230,7 @@ int sd_bus_get_owner_uid(sd_bus *bus, const char *name, uid_t *uid) { if (r < 0) return r; - r = sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, NULL, &reply); + r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply); if (r < 0) return r; @@ -268,7 +268,7 @@ int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid) { if (r < 0) return r; - r = sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, NULL, &reply); + r = sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply); if (r < 0) return r; @@ -306,7 +306,7 @@ int sd_bus_add_match(sd_bus *bus, const char *match) { if (r < 0) return r; - return sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, NULL, &reply); + return sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply); } int sd_bus_remove_match(sd_bus *bus, const char *match) { @@ -332,5 +332,5 @@ int sd_bus_remove_match(sd_bus *bus, const char *match) { if (r < 0) return r; - return sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, NULL, &reply); + return sd_bus_send_with_reply_and_block(bus, m, 0, NULL, &reply); } diff --git a/src/libsystemd-bus/bus-error.c b/src/libsystemd-bus/bus-error.c index 55b418768a..5faa17384e 100644 --- a/src/libsystemd-bus/bus-error.c +++ b/src/libsystemd-bus/bus-error.c @@ -168,3 +168,10 @@ int bus_error_from_errno(sd_bus_error *e, int error) { return error; } + +const char *bus_error_message(const sd_bus_error *e, int error) { + if (e && e->message) + return e->message; + + return strerror(error); +} diff --git a/src/libsystemd-bus/bus-error.h b/src/libsystemd-bus/bus-error.h index c6e072eab4..ceca7d678f 100644 --- a/src/libsystemd-bus/bus-error.h +++ b/src/libsystemd-bus/bus-error.h @@ -27,3 +27,5 @@ int bus_error_to_errno(const sd_bus_error *e); int bus_error_from_errno(sd_bus_error *e, int error); bool bus_error_is_dirty(sd_bus_error *e); + +const char *bus_error_message(const sd_bus_error *e, int error); diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index 9a12d661e1..9e4cf16b7f 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -26,6 +26,7 @@ #include #include "hashmap.h" +#include "prioq.h" #include "list.h" #include "util.h" @@ -37,6 +38,7 @@ struct reply_callback { void *userdata; usec_t timeout; uint64_t serial; + unsigned prioq_idx; }; struct filter_callback { @@ -75,6 +77,7 @@ struct sd_bus { char *unique_name; + Prioq *reply_callbacks_prioq; Hashmap *reply_callbacks; LIST_HEAD(struct filter_callback, filter_callbacks); @@ -97,6 +100,7 @@ struct sd_bus { unsigned auth_index; size_t auth_size; char *auth_uid; + usec_t auth_timeout; }; static inline void bus_unrefp(sd_bus **b) { @@ -104,3 +108,5 @@ static inline void bus_unrefp(sd_bus **b) { } #define _cleanup_bus_unref_ __attribute__((cleanup(bus_unrefp))) + +#define BUS_DEFAULT_TIMEOUT ((usec_t) (25 * USEC_PER_SEC)) diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index ec2dd07dba..c0a0242fd6 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -403,6 +403,8 @@ static int message_new_reply( if (!call) return -EINVAL; + if (!call->sealed) + return -EPERM; if (call->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) return -EINVAL; if (!m) @@ -2441,14 +2443,17 @@ static void setup_iovec(sd_bus_message *m) { assert(m->sealed); m->n_iovec = 0; + m->size = 0; m->iovec[m->n_iovec].iov_base = m->header; m->iovec[m->n_iovec].iov_len = sizeof(*m->header); + m->size += m->iovec[m->n_iovec].iov_len; m->n_iovec++; if (m->fields) { m->iovec[m->n_iovec].iov_base = m->fields; m->iovec[m->n_iovec].iov_len = m->header->fields_size; + m->size += m->iovec[m->n_iovec].iov_len; m->n_iovec++; if (m->header->fields_size % 8 != 0) { @@ -2456,6 +2461,7 @@ static void setup_iovec(sd_bus_message *m) { m->iovec[m->n_iovec].iov_base = (void*) padding; m->iovec[m->n_iovec].iov_len = 8 - m->header->fields_size % 8; + m->size += m->iovec[m->n_iovec].iov_len; m->n_iovec++; } } @@ -2463,6 +2469,7 @@ static void setup_iovec(sd_bus_message *m) { if (m->body) { m->iovec[m->n_iovec].iov_base = m->body; m->iovec[m->n_iovec].iov_len = m->header->body_size; + m->size += m->iovec[m->n_iovec].iov_len; m->n_iovec++; } } diff --git a/src/libsystemd-bus/bus-message.h b/src/libsystemd-bus/bus-message.h index 0184d18dd9..ed1a4b87b1 100644 --- a/src/libsystemd-bus/bus-message.h +++ b/src/libsystemd-bus/bus-message.h @@ -87,6 +87,7 @@ struct sd_bus_message { struct iovec iovec[4]; unsigned n_iovec; + size_t size; char *peeked_signature; }; diff --git a/src/libsystemd-bus/sd-bus-protocol.h b/src/libsystemd-bus/sd-bus-protocol.h index 942422f008..f9a5217dda 100644 --- a/src/libsystemd-bus/sd-bus-protocol.h +++ b/src/libsystemd-bus/sd-bus-protocol.h @@ -26,8 +26,6 @@ /* Types of message */ -#define SD_BUS_DEFAULT_TIMEOUT ((usec_t) (25 * USEC_PER_SEC)) - enum { _SD_BUS_MESSAGE_TYPE_INVALID = 0, SD_BUS_MESSAGE_TYPE_METHOD_CALL, diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index f27d47cdea..d0a36081bc 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -37,6 +37,8 @@ #define WQUEUE_MAX 128 +static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec); + static void bus_free(sd_bus *b) { struct filter_callback *f; unsigned i; @@ -60,6 +62,7 @@ static void bus_free(sd_bus *b) { free(b->wqueue); hashmap_free_free(b->reply_callbacks); + prioq_free(b->reply_callbacks_prioq); while ((f = b->filter_callbacks)) { LIST_REMOVE(struct filter_callback, callbacks, b->filter_callbacks, f); @@ -91,11 +94,15 @@ static sd_bus* bus_new(void) { return r; }; -static int hello_callback(sd_bus *bus, sd_bus_message *reply, void *userdata) { +static int hello_callback(sd_bus *bus, int error, sd_bus_message *reply, void *userdata) { const char *s; int r; assert(bus); + + if (error != 0) + return -error; + assert(reply); bus->state = BUS_RUNNING; @@ -127,7 +134,7 @@ static int bus_send_hello(sd_bus *bus) { if (r < 0) return r; - r = sd_bus_send_with_reply(bus, m, hello_callback, NULL, (uint64_t) -1, NULL); + r = sd_bus_send_with_reply(bus, m, hello_callback, NULL, 0, NULL); if (r < 0) return r; @@ -140,11 +147,11 @@ static int bus_start_running(sd_bus *bus) { if (bus->sent_hello) { bus->state = BUS_HELLO; - return 0; + return 1; } bus->state = BUS_RUNNING; - return 0; + return 1; } static int parse_address_key(const char **p, const char *key, char **value) { @@ -402,6 +409,9 @@ static int bus_write_auth(sd_bus *b) { if (b->auth_index >= ELEMENTSOF(b->auth_iovec)) return 0; + if (b->auth_timeout == 0) + b->auth_timeout = now(CLOCK_MONOTONIC) + BUS_DEFAULT_TIMEOUT; + zero(mh); mh.msg_iov = b->auth_iovec + b->auth_index; mh.msg_iovlen = ELEMENTSOF(b->auth_iovec) - b->auth_index; @@ -460,12 +470,8 @@ static int bus_auth_verify(sd_bus *b) { (f - e == sizeof("\r\nAGREE_UNIX_FD") - 1) && memcmp(e + 2, "AGREE_UNIX_FD", sizeof("AGREE_UNIX_FD") - 1) == 0; - if (f + 2 > (char*) b->rbuffer + b->rbuffer_size) { - b->rbuffer_size -= (f - (char*) b->rbuffer); - memmove(b->rbuffer, f + 2, b->rbuffer_size); - } - - b->rbuffer_size = 0; + b->rbuffer_size -= (f + 2 - (char*) b->rbuffer); + memmove(b->rbuffer, f + 2, b->rbuffer_size); r = bus_start_running(b); if (r < 0) @@ -513,7 +519,7 @@ static int bus_read_auth(sd_bus *b) { if (r != 0) return r; - return 0; + return 1; } static int bus_start_auth(sd_bus *b) { @@ -558,12 +564,12 @@ static int bus_start_connect(sd_bus *b) { if (r < 0) return r; if (r == 0) - return b->last_connect_error ? b->last_connect_error : -ECONNREFUSED; + return b->last_connect_error ? -b->last_connect_error : -ECONNREFUSED; } b->fd = socket(b->sockaddr.sa.sa_family, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); if (b->fd < 0) { - b->last_connect_error = -errno; + b->last_connect_error = errno; zero(b->sockaddr); continue; } @@ -571,9 +577,9 @@ static int bus_start_connect(sd_bus *b) { r = connect(b->fd, &b->sockaddr.sa, b->sockaddr_size); if (r < 0) { if (errno == EINPROGRESS) - return 0; + return 1; - b->last_connect_error = -errno; + b->last_connect_error = errno; close_nointr_nofail(b->fd); b->fd = -1; zero(b->sockaddr); @@ -760,6 +766,13 @@ sd_bus *sd_bus_unref(sd_bus *bus) { return NULL; } +int sd_bus_is_open(sd_bus *bus) { + if (!bus) + return -EINVAL; + + return bus->fd >= 0; +} + int sd_bus_is_running(sd_bus *bus) { if (!bus) return -EINVAL; @@ -807,6 +820,9 @@ static int message_write(sd_bus *bus, sd_bus_message *m, size_t *idx) { assert(idx); assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); + if (*idx >= m->size) + return 0; + n = m->n_iovec * sizeof(struct iovec); iov = alloca(n); memcpy(iov, m->iovec, n); @@ -820,12 +836,10 @@ static int message_write(sd_bus *bus, sd_bus_message *m, size_t *idx) { k = sendmsg(bus->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL); if (k < 0) - return -errno; + return errno == EAGAIN ? 0 : -errno; *idx += (size_t) k; - iovec_advance(iov, &j, *idx); - - return j >= m->n_iovec; + return 1; } static int message_read_need(sd_bus *bus, size_t *need) { @@ -837,7 +851,24 @@ static int message_read_need(sd_bus *bus, size_t *need) { assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); if (bus->rbuffer_size < sizeof(struct bus_header)) { - *need = sizeof(struct bus_header); + *need = sizeof(struct bus_header) + 8; + + /* Minimum message size: + * + * Header + + * + * Method Call: +2 string headers + * Signal: +3 string headers + * Method Error: +1 string headers + * +1 uint32 headers + * Method Reply: +1 uint32 headers + * + * A string header is at least 9 bytes + * A uint32 header is at least 8 bytes + * + * Hence the minimum message size of a valid message + * is header + 8 bytes */ + return 0; } @@ -935,11 +966,11 @@ static int message_read(sd_bus *bus, sd_bus_message **m) { if (bus->rbuffer_size >= need) return message_make(bus, need, m); - return 0; + return 1; } static int dispatch_wqueue(sd_bus *bus) { - int r, c = 0; + int r, ret = 0; assert(bus); assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); @@ -954,9 +985,9 @@ static int dispatch_wqueue(sd_bus *bus) { sd_bus_close(bus); return r; } else if (r == 0) - /* Wasn't fully written yet... */ - break; - else { + /* Didn't do anything this time */ + return ret; + else if (bus->windex >= bus->wqueue[0]->size) { /* Fully written. Let's drop the entry from * the queue. * @@ -972,15 +1003,16 @@ static int dispatch_wqueue(sd_bus *bus) { memmove(bus->wqueue, bus->wqueue + 1, sizeof(sd_bus_message*) * bus->wqueue_size); bus->windex = 0; - c++; + ret = 1; } } - return c; + return ret; } static int dispatch_rqueue(sd_bus *bus, sd_bus_message **m) { - int r; + sd_bus_message *z; + int r, ret = 0; assert(bus); assert(m); @@ -999,13 +1031,20 @@ static int dispatch_rqueue(sd_bus *bus, sd_bus_message **m) { } /* Try to read a new message */ - r = message_read(bus, m); - if (r < 0) { - sd_bus_close(bus); - return r; - } + do { + r = message_read(bus, &z); + if (r < 0) { + sd_bus_close(bus); + return r; + } + if (r == 0) + return ret; - return r; + r = 1; + } while (!z); + + *m = z; + return 1; } int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) { @@ -1034,7 +1073,7 @@ int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) { if (r < 0) { sd_bus_close(bus); return r; - } else if (r == 0) { + } else if (idx < m->size) { /* Wasn't fully written. So let's remember how * much was written. Note that the first entry * of the wqueue array is always allocated so @@ -1071,11 +1110,29 @@ static usec_t calc_elapse(uint64_t usec) { return 0; if (usec == 0) - usec = SD_BUS_DEFAULT_TIMEOUT; + usec = BUS_DEFAULT_TIMEOUT; return now(CLOCK_MONOTONIC) + usec; } +static int timeout_compare(const void *a, const void *b) { + const struct reply_callback *x = a, *y = b; + + if (x->timeout != 0 && y->timeout == 0) + return -1; + + if (x->timeout == 0 && y->timeout != 0) + return 1; + + if (x->timeout < y->timeout) + return -1; + + if (x->timeout > y->timeout) + return 1; + + return 0; +} + int sd_bus_send_with_reply( sd_bus *bus, sd_bus_message *m, @@ -1104,6 +1161,12 @@ int sd_bus_send_with_reply( if (r < 0) return r; + if (usec != (uint64_t) -1) { + r = prioq_ensure_allocated(&bus->reply_callbacks_prioq, timeout_compare); + if (r < 0) + return r; + } + r = bus_seal_message(bus, m); if (r < 0) return r; @@ -1123,10 +1186,18 @@ int sd_bus_send_with_reply( return r; } + if (c->timeout != 0) { + r = prioq_put(bus->reply_callbacks_prioq, c, &c->prioq_idx); + if (r < 0) { + c->timeout = 0; + sd_bus_send_with_reply_cancel(bus, c->serial); + return r; + } + } + r = sd_bus_send(bus, m, serial); if (r < 0) { - hashmap_remove(bus->reply_callbacks, &c->serial); - free(c); + sd_bus_send_with_reply_cancel(bus, c->serial); return r; } @@ -1134,7 +1205,7 @@ int sd_bus_send_with_reply( } int sd_bus_send_with_reply_cancel(sd_bus *bus, uint64_t serial) { - struct reply_callbacks *c; + struct reply_callback *c; if (!bus) return -EINVAL; @@ -1145,6 +1216,9 @@ int sd_bus_send_with_reply_cancel(sd_bus *bus, uint64_t serial) { if (!c) return 0; + if (c->timeout != 0) + prioq_remove(bus->reply_callbacks_prioq, c, &c->prioq_idx); + free(c); return 1; } @@ -1159,13 +1233,19 @@ static int ensure_running(sd_bus *bus) { return r; for (;;) { + int k; + r = sd_bus_process(bus, NULL); + if (r < 0) return r; - r = sd_bus_is_running(bus); - if (r != 0) - return r; + k = sd_bus_is_running(bus); + if (k != 0) + return k; + + if (r > 0) + continue; r = sd_bus_wait(bus, (uint64_t) -1); if (r < 0) @@ -1210,7 +1290,7 @@ int sd_bus_send_with_reply_and_block( for (;;) { usec_t left; - sd_bus_message *incoming; + sd_bus_message *incoming = NULL; if (!room) { sd_bus_message **q; @@ -1229,9 +1309,7 @@ int sd_bus_send_with_reply_and_block( r = message_read(bus, &incoming); if (r < 0) return r; - if (r > 0) { - /* bus_message_dump(incoming); */ - /* sd_bus_message_rewind(incoming, true); */ + if (incoming) { if (incoming->reply_serial == serial) { /* Found a match! */ @@ -1267,6 +1345,8 @@ int sd_bus_send_with_reply_and_block( /* Try to read more, right-away */ continue; } + if (r != 0) + continue; if (timeout > 0) { usec_t n; @@ -1279,7 +1359,7 @@ int sd_bus_send_with_reply_and_block( } else left = (uint64_t) -1; - r = sd_bus_wait(bus, left); + r = bus_poll(bus, true, left); if (r < 0) return r; @@ -1326,9 +1406,97 @@ int sd_bus_get_events(sd_bus *bus) { return flags; } +int sd_bus_get_timeout(sd_bus *bus, uint64_t *timeout_usec) { + struct reply_callback *c; + + if (!bus) + return -EINVAL; + if (!timeout_usec) + return -EINVAL; + if (bus->fd < 0) + return -ENOTCONN; + + if (bus->state == BUS_AUTHENTICATING) { + *timeout_usec = bus->auth_timeout; + return 1; + } + + if (bus->state != BUS_RUNNING && bus->state != BUS_HELLO) + return 0; + + c = prioq_peek(bus->reply_callbacks_prioq); + if (!c) + return 0; + + *timeout_usec = c->timeout; + return 1; +} + +static int process_timeout(sd_bus *bus) { + _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; + struct reply_callback *c; + usec_t n; + int r; + + assert(bus); + + c = prioq_peek(bus->reply_callbacks_prioq); + if (!c) + return 0; + + n = now(CLOCK_MONOTONIC); + if (c->timeout > n) + return 0; + + assert_se(prioq_pop(bus->reply_callbacks_prioq) == c); + hashmap_remove(bus->reply_callbacks, &c->serial); + + r = c->callback(bus, ETIMEDOUT, NULL, c->userdata); + free(c); + + return r < 0 ? r : 1; +} + +static int process_message(sd_bus *bus, sd_bus_message *m) { + struct filter_callback *l; + int r; + + assert(bus); + assert(m); + + if (m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_CALL || m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_RETURN) { + struct reply_callback *c; + + c = hashmap_remove(bus->reply_callbacks, &m->reply_serial); + if (c) { + if (c->timeout != 0) + prioq_remove(bus->reply_callbacks_prioq, c, &c->prioq_idx); + + r = c->callback(bus, 0, m, c->userdata); + free(c); + + if (r != 0) + return r; + } + } + + LIST_FOREACH(callbacks, l, bus->filter_callbacks) { + r = l->callback(bus, 0, m, l->userdata); + if (r != 0) + return r; + } + + return 0; +} + int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { int r; + /* Returns 0 when we didn't do anything. This should cause the + * caller to invoke sd_bus_wait() before returning the next + * time. Returns > 0 when we did something, which possibly + * means *ret is filled in with an unprocessed message. */ + if (!bus) return -EINVAL; if (bus->fd < 0) @@ -1351,63 +1519,61 @@ int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { r = getsockopt(bus->fd, SOL_SOCKET, SO_ERROR, &error, &slen); if (r < 0) - return -errno; - - if (error != 0) - bus->last_connect_error = -error; + bus->last_connect_error = errno; + else if (error != 0) + bus->last_connect_error = error; else if (p.revents & (POLLERR|POLLHUP)) - bus->last_connect_error = -ECONNREFUSED; - else - return bus_start_auth(bus); + bus->last_connect_error = ECONNREFUSED; + else { + r = bus_start_auth(bus); + goto null_message; + } /* Try next address */ - return bus_start_connect(bus); + r = bus_start_connect(bus); + goto null_message; } - return 0; + r = 0; + goto null_message; } else if (bus->state == BUS_AUTHENTICATING) { + if (now(CLOCK_MONOTONIC) >= bus->auth_timeout) + return -ETIMEDOUT; + r = bus_write_auth(bus); - if (r < 0) - return r; + if (r != 0) + goto null_message; r = bus_read_auth(bus); - if (r < 0) - return r; - - return 0; + goto null_message; } else if (bus->state == BUS_RUNNING || bus->state == BUS_HELLO) { - struct filter_callback *l; _cleanup_bus_message_unref_ sd_bus_message *m = NULL; + int k; + + r = process_timeout(bus); + if (r != 0) + goto null_message; r = dispatch_wqueue(bus); - if (r < 0) - return r; + if (r != 0) + goto null_message; + k = r; r = dispatch_rqueue(bus, &m); - if (r <= 0) + if (r < 0) return r; - - if (m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_CALL || m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_RETURN) { - struct reply_callback *c; - - c = hashmap_remove(bus->reply_callbacks, &m->reply_serial); - if (c) { - r = c->callback(bus, m, c->userdata); - free(c); - - if (r != 0) - return r < 0 ? r : 0; - } + if (!m) { + if (r == 0) + r = k; + goto null_message; } - LIST_FOREACH(callbacks, l, bus->filter_callbacks) { - r = l->callback(bus, m, l->userdata); - if (r != 0) - return r < 0 ? r : 0; - } + r = process_message(bus, m); + if (r != 0) + goto null_message; if (ret) { *ret = m; @@ -1428,38 +1594,71 @@ int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { return r; } - return 0; + return 1; } assert_not_reached("Unknown state"); + +null_message: + if (r >= 0 && ret) + *ret = NULL; + + return r; } -int sd_bus_wait(sd_bus *bus, uint64_t timeout_usec) { +static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec) { struct pollfd p; int r, e; struct timespec ts; + usec_t until, m; + + assert(bus); - if (!bus) - return -EINVAL; if (bus->fd < 0) return -ENOTCONN; - if (bus->rqueue_size > 0) - return 0; - e = sd_bus_get_events(bus); if (e < 0) return e; + if (need_more) + e |= POLLIN; + + r = sd_bus_get_timeout(bus, &until); + if (r < 0) + return r; + if (r == 0) + m = (uint64_t) -1; + else { + usec_t n; + n = now(CLOCK_MONOTONIC); + m = until > n ? until - n : 0; + } + + if (timeout_usec != (uint64_t) -1 && (m == (uint64_t) -1 || timeout_usec < m)) + m = timeout_usec; + zero(p); p.fd = bus->fd; p.events = e; - r = ppoll(&p, 1, timeout_usec == (uint64_t) -1 ? NULL : timespec_store(&ts, timeout_usec), NULL); + r = ppoll(&p, 1, m == (uint64_t) -1 ? NULL : timespec_store(&ts, m), NULL); if (r < 0) return -errno; - return r; + return r > 0 ? 1 : 0; +} + +int sd_bus_wait(sd_bus *bus, uint64_t timeout_usec) { + + if (!bus) + return -EINVAL; + if (bus->fd < 0) + return -ENOTCONN; + if (bus->rqueue_size > 0) + return 0; + + return bus_poll(bus, false, timeout_usec); } int sd_bus_flush(sd_bus *bus) { @@ -1485,7 +1684,7 @@ int sd_bus_flush(sd_bus *bus) { if (bus->wqueue_size <= 0) return 0; - r = sd_bus_wait(bus, (uint64_t) -1); + r = bus_poll(bus, false, (uint64_t) -1); if (r < 0) return r; } diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index 03ea4b8848..ce92ee7df6 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -33,11 +33,14 @@ * - add page donation logic * - api for appending/reading fixed arrays * - always verify container depth - * - implement method timeout logic * - implicitly set no_reply when a message-call is sent an the serial number ignored - * - reduce number of ppoll()s if we can avoid it * - handle NULL strings nicer when appending * - merge busctl into systemctl or so? + * - add object handlers + * - add peer message handlers + * - verify object paths + * - when reading a message, verify its size + * - add limits to wqueue and rqueue alike */ typedef struct sd_bus sd_bus; @@ -49,7 +52,7 @@ typedef struct { int need_free; } sd_bus_error; -typedef int (*sd_message_handler_t)(sd_bus *bus, sd_bus_message *m, void *userdata); +typedef int (*sd_message_handler_t)(sd_bus *bus, int ret, sd_bus_message *m, void *userdata); /* Connections */ @@ -62,6 +65,7 @@ void sd_bus_close(sd_bus *bus); sd_bus *sd_bus_ref(sd_bus *bus); sd_bus *sd_bus_unref(sd_bus *bus); +int sd_bus_is_open(sd_bus *bus); int sd_bus_is_running(sd_bus *bus); int sd_bus_can_send(sd_bus *bus, char type); @@ -72,6 +76,7 @@ int sd_bus_send_with_reply_and_block(sd_bus *bus, sd_bus_message *m, uint64_t us int sd_bus_get_fd(sd_bus *bus); int sd_bus_get_events(sd_bus *bus); +int sd_bus_get_timeout(sd_bus *bus, uint64_t *timeout_usec); int sd_bus_process(sd_bus *bus, sd_bus_message **r); int sd_bus_wait(sd_bus *bus, uint64_t timeout_usec); int sd_bus_flush(sd_bus *bus); diff --git a/src/libsystemd-bus/test-bus-chat.c b/src/libsystemd-bus/test-bus-chat.c index 4260ca3bc0..9e14824186 100644 --- a/src/libsystemd-bus/test-bus-chat.c +++ b/src/libsystemd-bus/test-bus-chat.c @@ -22,12 +22,14 @@ #include #include #include +#include #include "log.h" #include "util.h" #include "sd-bus.h" #include "bus-message.h" +#include "bus-error.h" static int server_init(sd_bus **_bus) { sd_bus *bus = NULL; @@ -57,11 +59,11 @@ fail: return r; } -static void* server(void *p) { - sd_bus *bus = p; +static int server(sd_bus *bus) { int r; + bool client1_gone = false, client2_gone = false; - for (;;) { + while (!client1_gone || !client2_gone) { _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; r = sd_bus_process(bus, &m); @@ -69,6 +71,7 @@ static void* server(void *p) { log_error("Failed to process requests: %s", strerror(-r)); goto fail; } + if (r == 0) { r = sd_bus_wait(bus, (uint64_t) -1); if (r < 0) { @@ -79,6 +82,9 @@ static void* server(void *p) { continue; } + if (!m) + continue; + log_info("Got message! %s", strna(sd_bus_message_get_member(m))); /* bus_message_dump(m); */ /* sd_bus_message_rewind(m, true); */ @@ -112,9 +118,34 @@ static void* server(void *p) { log_error("Failed to append message: %s", strerror(-r)); goto fail; } - } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "Exit")) - break; - else if (sd_bus_message_is_method_call(m, NULL, NULL)) { + } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "ExitClient1")) { + + r = sd_bus_message_new_method_return(bus, m, &reply); + if (r < 0) { + log_error("Failed to allocate return: %s", strerror(-r)); + goto fail; + } + + client1_gone = true; + } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "ExitClient2")) { + + r = sd_bus_message_new_method_return(bus, m, &reply); + if (r < 0) { + log_error("Failed to allocate return: %s", strerror(-r)); + goto fail; + } + + client2_gone = true; + } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "Slow")) { + + r = sd_bus_message_new_method_return(bus, m, &reply); + if (r < 0) { + log_error("Failed to allocate return: %s", strerror(-r)); + goto fail; + } + + sleep(1); + } else if (sd_bus_message_is_method_call(m, NULL, NULL)) { const sd_bus_error e = SD_BUS_ERROR_INIT_CONST("org.freedesktop.DBus.Error.UnknownMethod", "Unknown method."); r = sd_bus_message_new_method_error(bus, m, &e, &reply); @@ -130,19 +161,25 @@ static void* server(void *p) { log_error("Failed to send reply: %s", strerror(-r)); goto fail; } + + /* log_info("Sent"); */ + /* bus_message_dump(reply); */ + /* sd_bus_message_rewind(reply, true); */ } } r = 0; fail: - if (bus) + if (bus) { + sd_bus_flush(bus); sd_bus_unref(bus); + } - return INT_TO_PTR(r); + return r; } -static int client(void) { +static void* client1(void*p) { _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; sd_bus *bus = NULL; sd_bus_error error = SD_BUS_ERROR_INIT; @@ -173,9 +210,9 @@ static int client(void) { goto finish; } - r = sd_bus_send_with_reply_and_block(bus, m, (uint64_t) -1, &error, &reply); + r = sd_bus_send_with_reply_and_block(bus, m, 0, &error, &reply); if (r < 0) { - log_error("Failed to issue method call: %s", error.message); + log_error("Failed to issue method call: %s", bus_error_message(&error, -r)); goto finish; } @@ -198,7 +235,7 @@ finish: "org.freedesktop.systemd.test", "/", "org.freedesktop.systemd.test", - "Exit", + "ExitClient1", &q); if (r < 0) { log_error("Failed to allocate method call: %s", strerror(-r)); @@ -211,11 +248,114 @@ finish: } sd_bus_error_free(&error); - return r; + return INT_TO_PTR(r); +} + +static int quit_callback(sd_bus *b, int ret, sd_bus_message *m, void *userdata) { + bool *x = userdata; + + log_error("Quit callback: %s", strerror(ret)); + + *x = 1; + return 1; +} + +static void* client2(void*p) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; + sd_bus *bus = NULL; + sd_bus_error error = SD_BUS_ERROR_INIT; + int r; + bool quit = false; + + r = sd_bus_open_user(&bus); + if (r < 0) { + log_error("Failed to connect to user bus: %s", strerror(-r)); + goto finish; + } + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.systemd.test", + "/", + "org.freedesktop.systemd.test", + "Slow", + &m); + if (r < 0) { + log_error("Failed to allocate method call: %s", strerror(-r)); + goto finish; + } + + r = sd_bus_send_with_reply_and_block(bus, m, 200 * USEC_PER_MSEC, &error, &reply); + if (r < 0) + log_info("Failed to issue method call: %s", bus_error_message(&error, -r)); + else + log_info("Slow call succeed."); + + sd_bus_message_unref(m); + m = NULL; + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.systemd.test", + "/", + "org.freedesktop.systemd.test", + "Slow", + &m); + if (r < 0) { + log_error("Failed to allocate method call: %s", strerror(-r)); + goto finish; + } + + r = sd_bus_send_with_reply(bus, m, quit_callback, &quit, 200 * USEC_PER_MSEC, NULL); + if (r < 0) { + log_info("Failed to issue method call: %s", bus_error_message(&error, -r)); + goto finish; + } + + while (!quit) { + r = sd_bus_process(bus, NULL); + if (r < 0) { + log_error("Failed to process requests: %s", strerror(-r)); + goto finish; + } + if (r == 0) { + r = sd_bus_wait(bus, (uint64_t) -1); + if (r < 0) { + log_error("Failed to wait: %s", strerror(-r)); + goto finish; + } + } + } + + r = 0; + +finish: + if (bus) { + _cleanup_bus_message_unref_ sd_bus_message *q; + + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.systemd.test", + "/", + "org.freedesktop.systemd.test", + "ExitClient2", + &q); + if (r < 0) { + log_error("Failed to allocate method call: %s", strerror(-r)); + goto finish; + } + + sd_bus_send(bus, q, NULL); + sd_bus_flush(bus); + sd_bus_unref(bus); + } + + sd_bus_error_free(&error); + return INT_TO_PTR(r); } int main(int argc, char *argv[]) { - pthread_t t; + pthread_t c1, c2; sd_bus *bus; void *p; int q, r; @@ -224,15 +364,22 @@ int main(int argc, char *argv[]) { if (r < 0) return EXIT_FAILURE; - r = pthread_create(&t, NULL, server, bus); - if (r != 0) { - sd_bus_unref(bus); + log_info("Initialized..."); + + r = pthread_create(&c1, NULL, client1, bus); + if (r != 0) return EXIT_FAILURE; - } - r = client(); + r = pthread_create(&c2, NULL, client2, bus); + if (r != 0) + return EXIT_FAILURE; - q = pthread_join(t, &p); + r = server(bus); + + q = pthread_join(c1, &p); + if (q != 0) + return EXIT_FAILURE; + q = pthread_join(c2, &p); if (q != 0) return EXIT_FAILURE; if (r < 0) diff --git a/src/shared/prioq.c b/src/shared/prioq.c index fe91324d9b..b7d745990c 100644 --- a/src/shared/prioq.c +++ b/src/shared/prioq.c @@ -53,6 +53,19 @@ void prioq_free(Prioq *q) { free(q); } +int prioq_ensure_allocated(Prioq **q, compare_func_t compare_func) { + assert(q); + + if (*q) + return 0; + + *q = prioq_new(compare_func); + if (!*q) + return -ENOMEM; + + return 0; +} + static void swap(Prioq *q, unsigned j, unsigned k) { void *saved_data; unsigned *saved_idx; @@ -204,9 +217,12 @@ static struct prioq_item* find_item(Prioq *q, void *data, unsigned *idx) { assert(q); if (idx) { - assert(*idx < q->n_items); + if (*idx > q->n_items) + return NULL; + i = q->items + *idx; - assert(i->data == data); + if (i->data != data) + return NULL; return i; } else { diff --git a/src/shared/prioq.h b/src/shared/prioq.h index 1b5b05e7c7..17679b2aaf 100644 --- a/src/shared/prioq.h +++ b/src/shared/prioq.h @@ -27,6 +27,7 @@ typedef struct Prioq Prioq; Prioq *prioq_new(compare_func_t compare); void prioq_free(Prioq *q); +int prioq_ensure_allocated(Prioq **q, compare_func_t compare_func); int prioq_put(Prioq *q, void *data, unsigned *idx); int prioq_remove(Prioq *q, void *data, unsigned *idx); -- cgit v1.2.1 From 9a8ae49d91ae303c4f7c87f9c56fba3e8d646af7 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 21 Mar 2013 23:11:51 +0100 Subject: udev: always set selinux label at "add" events https://bugs.freedesktop.org/show_bug.cgi?id=62615 --- src/udev/udev-event.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/udev/udev-event.c b/src/udev/udev-event.c index efd9b6d71d..3db2cb7165 100644 --- a/src/udev/udev-event.c +++ b/src/udev/udev-event.c @@ -838,6 +838,8 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, } if (major(udev_device_get_devnum(dev)) > 0) { + bool apply; + /* remove/update possible left-over symlinks from old database entry */ if (event->dev_db != NULL) udev_node_update_old_links(dev, event->dev_db); @@ -861,8 +863,8 @@ int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, } } - udev_node_add(dev, event->owner_set || event->group_set || event->mode_set, - event->mode, event->uid, event->gid); + apply = streq(udev_device_get_action(dev), "add") || event->owner_set || event->group_set || event->mode_set; + udev_node_add(dev, apply, event->mode, event->uid, event->gid); } /* preserve old, or get new initialization timestamp */ -- cgit v1.2.1 From 29f6aadd5302320d5a7a3868b607eb83687bdfd0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 21 Mar 2013 23:01:59 +0100 Subject: bus: implicitly set no_reply flag on outgoing messages if the serial number is not kept If nobody keeps the serial number of an outgoing message we know that nobody expects an answer to it, so set the no_reply flag accordingly. --- src/libsystemd-bus/sd-bus.c | 5 +++++ src/libsystemd-bus/sd-bus.h | 1 - 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index d0a36081bc..ad840cc875 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -1057,6 +1057,11 @@ int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) { if (!m) return -EINVAL; + /* If the serial number isn't kept, then we know that no reply + * is expected */ + if (!serial && !m->sealed) + m->header->flags |= SD_BUS_MESSAGE_NO_REPLY_EXPECTED; + r = bus_seal_message(bus, m); if (r < 0) return r; diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index ce92ee7df6..a759f54f3e 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -33,7 +33,6 @@ * - add page donation logic * - api for appending/reading fixed arrays * - always verify container depth - * - implicitly set no_reply when a message-call is sent an the serial number ignored * - handle NULL strings nicer when appending * - merge busctl into systemctl or so? * - add object handlers -- cgit v1.2.1 From 25220239990c7859a65160d63277105d0c1de8a8 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 21 Mar 2013 23:20:25 +0100 Subject: bus: enforce limits on all client influenced data objects --- src/libsystemd-bus/bus-internal.h | 6 ++++++ src/libsystemd-bus/sd-bus.c | 21 +++++++++++++++++---- src/libsystemd-bus/sd-bus.h | 2 -- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index 9e4cf16b7f..b0e97915cc 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -110,3 +110,9 @@ static inline void bus_unrefp(sd_bus **b) { #define _cleanup_bus_unref_ __attribute__((cleanup(bus_unrefp))) #define BUS_DEFAULT_TIMEOUT ((usec_t) (25 * USEC_PER_SEC)) + +#define BUS_WQUEUE_MAX 128 +#define BUS_RQUEUE_MAX 128 + +#define BUS_MESSAGE_SIZE_MAX (64*1024*1024) +#define BUS_AUTH_SIZE_MAX (64*1024) diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index ad840cc875..1dd234d61b 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -35,8 +35,6 @@ #include "bus-message.h" #include "bus-type.h" -#define WQUEUE_MAX 128 - static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec); static void bus_free(sd_bus *b) { @@ -495,6 +493,13 @@ static int bus_read_auth(sd_bus *b) { return r; n = MAX(3 + 32 + 2 + sizeof("AGREE_UNIX_FD") - 1 + 2, b->rbuffer_size * 2); + + if (n > BUS_AUTH_SIZE_MAX) + n = BUS_AUTH_SIZE_MAX; + + if (b->rbuffer_size >= n) + return -ENOBUFS; + p = realloc(b->rbuffer, n); if (!p) return -ENOMEM; @@ -845,6 +850,7 @@ static int message_write(sd_bus *bus, sd_bus_message *m, size_t *idx) { static int message_read_need(sd_bus *bus, size_t *need) { uint32_t a, b; uint8_t e; + uint64_t sum; assert(bus); assert(need); @@ -885,7 +891,11 @@ static int message_read_need(sd_bus *bus, size_t *need) { } else return -EBADMSG; - *need = sizeof(struct bus_header) + ALIGN_TO(b, 8) + a; + sum = (uint64_t) sizeof(struct bus_header) + (uint64_t) ALIGN_TO(b, 8) + (uint64_t) a; + if (sum >= BUS_MESSAGE_SIZE_MAX) + return -ENOBUFS; + + *need = (size_t) sum; return 0; } @@ -1093,7 +1103,7 @@ int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) { /* Just append it to the queue. */ - if (bus->wqueue_size >= WQUEUE_MAX) + if (bus->wqueue_size >= BUS_WQUEUE_MAX) return -ENOBUFS; q = realloc(bus->wqueue, sizeof(sd_bus_message*) * (bus->wqueue_size + 1)); @@ -1300,6 +1310,9 @@ int sd_bus_send_with_reply_and_block( if (!room) { sd_bus_message **q; + if (bus->rqueue_size >= BUS_RQUEUE_MAX) + return -ENOBUFS; + /* Make sure there's room for queuing this * locally, before we read the message */ diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index a759f54f3e..1d7bfa86b8 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -38,8 +38,6 @@ * - add object handlers * - add peer message handlers * - verify object paths - * - when reading a message, verify its size - * - add limits to wqueue and rqueue alike */ typedef struct sd_bus sd_bus; -- cgit v1.2.1 From b9bf7e2be93fe25e0e96e06ad436d43a1e589ed5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 00:08:58 +0100 Subject: bus: implicitly handle peer commands Ping() and GetMachineId() --- src/libsystemd-bus/bus-internal.h | 1 + src/libsystemd-bus/sd-bus.c | 63 +++++++++++++++++++++++++++++++++++--- src/libsystemd-bus/sd-bus.h | 2 +- src/libsystemd-bus/test-bus-chat.c | 35 ++++++++++++++++++++- 4 files changed, 94 insertions(+), 7 deletions(-) diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index b0e97915cc..636e998c30 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -108,6 +108,7 @@ static inline void bus_unrefp(sd_bus **b) { } #define _cleanup_bus_unref_ __attribute__((cleanup(bus_unrefp))) +#define _cleanup_bus_error_free_ __attribute__((cleanup(sd_bus_error_free))) #define BUS_DEFAULT_TIMEOUT ((usec_t) (25 * USEC_PER_SEC)) diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 1dd234d61b..049bd356a0 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -1475,6 +1475,57 @@ static int process_timeout(sd_bus *bus) { return r < 0 ? r : 1; } +static int process_builtin(sd_bus *bus, sd_bus_message *m) { + _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; + int r; + + assert(bus); + assert(m); + + if (m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) + return 0; + + if (!streq_ptr(m->interface, "org.freedesktop.DBus.Peer")) + return 0; + + if (m->header->flags & SD_BUS_MESSAGE_NO_REPLY_EXPECTED) + return 1; + + if (streq_ptr(m->member, "Ping")) + r = sd_bus_message_new_method_return(bus, m, &reply); + else if (streq_ptr(m->member, "GetMachineId")) { + sd_id128_t id; + char sid[33]; + + r = sd_id128_get_machine(&id); + if (r < 0) + return r; + + r = sd_bus_message_new_method_return(bus, m, &reply); + if (r < 0) + return r; + + r = sd_bus_message_append(reply, "s", sd_id128_to_string(id, sid)); + } else { + _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_INIT; + + sd_bus_error_set(&error, + "org.freedesktop.DBus.Error.UnknownMethod", + "Unknown method '%s' on interface '%s'.", m->member, m->interface); + + r = sd_bus_message_new_method_error(bus, m, &error, &reply); + } + + if (r < 0) + return r; + + r = sd_bus_send(bus, reply, NULL); + if (r < 0) + return r; + + return 1; +} + static int process_message(sd_bus *bus, sd_bus_message *m) { struct filter_callback *l; int r; @@ -1482,7 +1533,7 @@ static int process_message(sd_bus *bus, sd_bus_message *m) { assert(bus); assert(m); - if (m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_CALL || m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_RETURN) { + if (m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_RETURN || m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_ERROR) { struct reply_callback *c; c = hashmap_remove(bus->reply_callbacks, &m->reply_serial); @@ -1504,7 +1555,7 @@ static int process_message(sd_bus *bus, sd_bus_message *m) { return r; } - return 0; + return process_builtin(bus, m); } int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { @@ -1599,11 +1650,13 @@ int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { return 1; } - if (sd_bus_message_is_method_call(m, NULL, NULL)) { - const sd_bus_error e = SD_BUS_ERROR_INIT_CONST("org.freedesktop.DBus.Error.UnknownObject", "Unknown object."); + if (m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_CALL) { _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; + _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_INIT; + + sd_bus_error_set(&error, "org.freedesktop.DBus.Error.UnknownObject", "Unknown object '%s'.", m->path); - r = sd_bus_message_new_method_error(bus, m, &e, &reply); + r = sd_bus_message_new_method_error(bus, m, &error, &reply); if (r < 0) return r; diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index 1d7bfa86b8..d5101c20d7 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -36,8 +36,8 @@ * - handle NULL strings nicer when appending * - merge busctl into systemctl or so? * - add object handlers - * - add peer message handlers * - verify object paths + * - implicitly add stub introspection calls */ typedef struct sd_bus sd_bus; diff --git a/src/libsystemd-bus/test-bus-chat.c b/src/libsystemd-bus/test-bus-chat.c index 9e14824186..d8677cc9e8 100644 --- a/src/libsystemd-bus/test-bus-chat.c +++ b/src/libsystemd-bus/test-bus-chat.c @@ -264,8 +264,9 @@ static void* client2(void*p) { _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; sd_bus *bus = NULL; sd_bus_error error = SD_BUS_ERROR_INIT; - int r; bool quit = false; + const char *mid; + int r; r = sd_bus_open_user(&bus); if (r < 0) { @@ -273,6 +274,35 @@ static void* client2(void*p) { goto finish; } + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.systemd.test", + "/", + "org.freedesktop.DBus.Peer", + "GetMachineId", + &m); + if (r < 0) { + log_error("Failed to allocate method call: %s", strerror(-r)); + goto finish; + } + + r = sd_bus_send_with_reply_and_block(bus, m, 0, &error, &reply); + if (r < 0) { + log_error("Failed to issue method call: %s", bus_error_message(&error, -r)); + goto finish; + } + + r = sd_bus_message_read(reply, "s", &mid); + if (r < 0) { + log_error("Failed to parse machine ID: %s", strerror(-r)); + goto finish; + } + + log_info("Machine ID is %s.", mid); + + sd_bus_message_unref(m); + m = NULL; + r = sd_bus_message_new_method_call( bus, "org.freedesktop.systemd.test", @@ -285,6 +315,9 @@ static void* client2(void*p) { goto finish; } + sd_bus_message_unref(reply); + reply = NULL; + r = sd_bus_send_with_reply_and_block(bus, m, 200 * USEC_PER_MSEC, &error, &reply); if (r < 0) log_info("Failed to issue method call: %s", bus_error_message(&error, -r)); -- cgit v1.2.1 From b8beb2781682738f3a59aab993bf2869447a77c9 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 00:24:21 +0100 Subject: bus: generate a nice error when attempting to add a NULL string --- src/libsystemd-bus/bus-message.c | 16 ++++++++++++++++ src/libsystemd-bus/sd-bus.h | 1 - src/libsystemd-bus/test-bus-marshal.c | 3 +++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index c0a0242fd6..524f17eb9f 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -768,11 +768,27 @@ int message_append_basic(sd_bus_message *m, char type, const void *p, const void case SD_BUS_TYPE_STRING: case SD_BUS_TYPE_OBJECT_PATH: + + if (!p) { + if (e) + c->signature[c->index] = 0; + + return -EINVAL; + } + align = 4; sz = 4 + strlen(p) + 1; break; case SD_BUS_TYPE_SIGNATURE: + + if (!p) { + if (e) + c->signature[c->index] = 0; + + return -EINVAL; + } + align = 1; sz = 1 + strlen(p) + 1; break; diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index d5101c20d7..3ea4acc76f 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -33,7 +33,6 @@ * - add page donation logic * - api for appending/reading fixed arrays * - always verify container depth - * - handle NULL strings nicer when appending * - merge busctl into systemctl or so? * - add object handlers * - verify object paths diff --git a/src/libsystemd-bus/test-bus-marshal.c b/src/libsystemd-bus/test-bus-marshal.c index 15c472cca0..d12c847f35 100644 --- a/src/libsystemd-bus/test-bus-marshal.c +++ b/src/libsystemd-bus/test-bus-marshal.c @@ -50,6 +50,9 @@ int main(int argc, char *argv[]) { r = sd_bus_message_append(m, "s", "a string"); assert_se(r >= 0); + r = sd_bus_message_append(m, "s", NULL); + assert_se(r < 0); + r = sd_bus_message_append(m, "as", 2, "string #1", "string #2"); assert_se(r >= 0); -- cgit v1.2.1 From ac89bf1d53268d39025a2a00c2effdb3fa447ead Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 00:42:53 +0100 Subject: bus: properly validate object path values --- src/libsystemd-bus/bus-internal.c | 40 ++++++++++++++++++++++++ src/libsystemd-bus/bus-internal.h | 6 ++++ src/libsystemd-bus/bus-message.c | 65 +++++++++++++++++++++++++++------------ 3 files changed, 91 insertions(+), 20 deletions(-) diff --git a/src/libsystemd-bus/bus-internal.c b/src/libsystemd-bus/bus-internal.c index 19398af6cb..e58a8b1da1 100644 --- a/src/libsystemd-bus/bus-internal.c +++ b/src/libsystemd-bus/bus-internal.c @@ -20,3 +20,43 @@ ***/ #include "bus-internal.h" + +bool object_path_is_valid(const char *p) { + const char *q; + bool slash; + + if (!p) + return false; + + if (p[0] != '/') + return false; + + if (p[1] == 0) + return true; + + for (slash = true, q = p+1; *q; q++) + if (*q == '/') { + if (slash) + return false; + + slash = true; + } else { + bool good; + + good = + (*q >= 'a' && *q <= 'z') || + (*q >= 'A' && *q <= 'Z') || + (*q >= '0' && *q <= '9') || + *q == '_'; + + if (!good) + return false; + + slash = false; + } + + if (slash) + return false; + + return true; +} diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index 636e998c30..809ad823fc 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -117,3 +117,9 @@ static inline void bus_unrefp(sd_bus **b) { #define BUS_MESSAGE_SIZE_MAX (64*1024*1024) #define BUS_AUTH_SIZE_MAX (64*1024) + +/* Defined by the specification as maximum size of an array in + * bytes */ +#define BUS_ARRAY_MAX_SIZE 67108864 + +bool object_path_is_valid(const char *p); diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index 524f17eb9f..f5b60f2728 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -1374,8 +1374,7 @@ static int message_peek_body(sd_bus_message *m, size_t *rindex, size_t align, si return buffer_peek(m->body, BUS_MESSAGE_BODY_SIZE(m), rindex, align, nbytes, ret); } -static bool validate_string(const char *s, size_t l) { - assert(s); +static bool validate_nul(const char *s, size_t l) { /* Check for NUL chars in the string */ if (memchr(s, 0, l)) @@ -1385,6 +1384,14 @@ static bool validate_string(const char *s, size_t l) { if (s[l] != 0) return false; + return true; +} + +static bool validate_string(const char *s, size_t l) { + + if (!validate_nul(s, l)) + return false; + /* Check if valid UTF8 */ if (!utf8_is_valid(s)) return false; @@ -1393,12 +1400,8 @@ static bool validate_string(const char *s, size_t l) { } static bool validate_signature(const char *s, size_t l) { - /* Check for NUL chars in the signature */ - if (memchr(s, 0, l)) - return false; - /* Check for NUL termination */ - if (s[l] != 0) + if (!validate_nul(s, l)) return false; /* Check if valid signature */ @@ -1408,6 +1411,17 @@ static bool validate_signature(const char *s, size_t l) { return true; } +static bool validate_object_path(const char *s, size_t l) { + + if (!validate_nul(s, l)) + return false; + + if (!object_path_is_valid(s)) + return false; + + return true; +} + int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p) { struct bus_container *c; int r; @@ -1447,8 +1461,13 @@ int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p) { if (r == 0) return -EBADMSG; - if (!validate_string(q, l)) - return -EBADMSG; + if (type == SD_BUS_TYPE_OBJECT_PATH) { + if (!validate_object_path(q, l)) + return -EBADMSG; + } else { + if (!validate_string(q, l)) + return -EBADMSG; + } m->rindex = rindex; *(const char**) p = q; @@ -1565,7 +1584,7 @@ static int bus_message_enter_array( if (r <= 0) return r; - if (BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q) > 67108864) + if (BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q) > BUS_ARRAY_MAX_SIZE) return -EBADMSG; r = message_peek_body(m, &rindex, alignment, 0, NULL); @@ -2104,6 +2123,7 @@ static int message_peek_fields( static int message_peek_field_string( sd_bus_message *m, + char type, size_t *ri, const char **ret) { @@ -2123,8 +2143,13 @@ static int message_peek_field_string( if (r < 0) return r; - if (!validate_string(q, l)) - return -EBADMSG; + if (type == SD_BUS_TYPE_OBJECT_PATH) { + if (!validate_object_path(q, l)) + return -EBADMSG; + } else { + if (!validate_string(q, l)) + return -EBADMSG; + } if (ret) *ret = q; @@ -2214,7 +2239,7 @@ static int message_skip_fields( if (t == SD_BUS_TYPE_STRING || t == SD_BUS_TYPE_OBJECT_PATH) { - r = message_peek_field_string(m, ri, NULL); + r = message_peek_field_string(m, t, ri, NULL); if (r < 0) return r; @@ -2264,7 +2289,7 @@ static int message_skip_fields( return r; nas = BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q); - if (nas > 67108864) + if (nas > BUS_ARRAY_MAX_SIZE) return -EBADMSG; r = message_peek_fields(m, ri, alignment, 0, NULL); @@ -2341,42 +2366,42 @@ static int message_parse_fields(sd_bus_message *m) { if (!streq(signature, "o")) return -EBADMSG; - r = message_peek_field_string(m, &ri, &m->path); + r = message_peek_field_string(m, 'o', &ri, &m->path); break; case SD_BUS_MESSAGE_HEADER_INTERFACE: if (!streq(signature, "s")) return -EBADMSG; - r = message_peek_field_string(m, &ri, &m->interface); + r = message_peek_field_string(m, 's', &ri, &m->interface); break; case SD_BUS_MESSAGE_HEADER_MEMBER: if (!streq(signature, "s")) return -EBADMSG; - r = message_peek_field_string(m, &ri, &m->member); + r = message_peek_field_string(m, 's', &ri, &m->member); break; case SD_BUS_MESSAGE_HEADER_ERROR_NAME: if (!streq(signature, "s")) return -EBADMSG; - r = message_peek_field_string(m, &ri, &m->error.name); + r = message_peek_field_string(m, 's', &ri, &m->error.name); break; case SD_BUS_MESSAGE_HEADER_DESTINATION: if (!streq(signature, "s")) return -EBADMSG; - r = message_peek_field_string(m, &ri, &m->destination); + r = message_peek_field_string(m, 's', &ri, &m->destination); break; case SD_BUS_MESSAGE_HEADER_SENDER: if (!streq(signature, "s")) return -EBADMSG; - r = message_peek_field_string(m, &ri, &m->sender); + r = message_peek_field_string(m, 's', &ri, &m->sender); break; -- cgit v1.2.1 From 6693860fab7e34ffc59a748d3064d553fba25f2c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 01:15:20 +0100 Subject: bus: validate the entire header more closely --- src/libsystemd-bus/bus-internal.c | 108 ++++++++++++++++++++++++++++++++++++++ src/libsystemd-bus/bus-internal.h | 5 ++ src/libsystemd-bus/bus-message.c | 40 +++++++++----- 3 files changed, 141 insertions(+), 12 deletions(-) diff --git a/src/libsystemd-bus/bus-internal.c b/src/libsystemd-bus/bus-internal.c index e58a8b1da1..d27b3f466b 100644 --- a/src/libsystemd-bus/bus-internal.c +++ b/src/libsystemd-bus/bus-internal.c @@ -60,3 +60,111 @@ bool object_path_is_valid(const char *p) { return true; } + +bool interface_name_is_valid(const char *p) { + const char *q; + bool dot, found_dot; + + if (isempty(p)) + return false; + + for (dot = true, q = p; *q; q++) + if (*q == '.') { + if (dot) + return false; + + found_dot = dot = true; + } else { + bool good; + + good = + (*q >= 'a' && *q <= 'z') || + (*q >= 'A' && *q <= 'Z') || + (!dot && *q >= '0' && *q <= '9') || + *q == '_'; + + if (!good) + return false; + + dot = false; + } + + if (q - p > 255) + return false; + + if (dot) + return false; + + if (!found_dot) + return false; + + return true; +} + +bool service_name_is_valid(const char *p) { + const char *q; + bool dot, found_dot, unique; + + if (isempty(p)) + return false; + + unique = p[0] == ':'; + + for (dot = true, q = unique ? p+1 : p; *q; q++) + if (*q == '.') { + if (dot) + return false; + + found_dot = dot = true; + } else { + bool good; + + good = + (*q >= 'a' && *q <= 'z') || + (*q >= 'A' && *q <= 'Z') || + ((!dot || unique) && *q >= '0' && *q <= '9') || + *q == '_' || *q == '-'; + + if (!good) + return false; + + dot = false; + } + + if (q - p > 255) + return false; + + if (dot) + return false; + + if (!found_dot) + return false; + + return true; + +} + +bool member_name_is_valid(const char *p) { + const char *q; + + if (isempty(p)) + return false; + + for (q = p; *q; q++) { + bool good; + + good = + (*q >= 'a' && *q <= 'z') || + (*q >= 'A' && *q <= 'Z') || + (*q >= '0' && *q <= '9') || + *q == '_'; + + if (!good) + return false; + } + + if (q - p > 255) + return false; + + return true; +} diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index 809ad823fc..3c2478e8fd 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -123,3 +123,8 @@ static inline void bus_unrefp(sd_bus **b) { #define BUS_ARRAY_MAX_SIZE 67108864 bool object_path_is_valid(const char *p); +bool interface_name_is_valid(const char *p); +bool service_name_is_valid(const char *p); +bool member_name_is_valid(const char *p); + +#define error_name_is_valid interface_name_is_valid diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index f5b60f2728..a22962559d 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -2123,7 +2123,7 @@ static int message_peek_fields( static int message_peek_field_string( sd_bus_message *m, - char type, + bool (*validate)(const char *p), size_t *ri, const char **ret) { @@ -2143,8 +2143,11 @@ static int message_peek_field_string( if (r < 0) return r; - if (type == SD_BUS_TYPE_OBJECT_PATH) { - if (!validate_object_path(q, l)) + if (validate) { + if (!validate_nul(q, l)) + return -EBADMSG; + + if (!validate(q)) return -EBADMSG; } else { if (!validate_string(q, l)) @@ -2236,10 +2239,17 @@ static int message_skip_fields( if (!t) return 0; - if (t == SD_BUS_TYPE_STRING || - t == SD_BUS_TYPE_OBJECT_PATH) { + if (t == SD_BUS_TYPE_STRING) { + + r = message_peek_field_string(m, NULL, ri, NULL); + if (r < 0) + return r; + + (*signature)++; + + } else if (t == SD_BUS_TYPE_OBJECT_PATH) { - r = message_peek_field_string(m, t, ri, NULL); + r = message_peek_field_string(m, object_path_is_valid, ri, NULL); if (r < 0) return r; @@ -2366,42 +2376,42 @@ static int message_parse_fields(sd_bus_message *m) { if (!streq(signature, "o")) return -EBADMSG; - r = message_peek_field_string(m, 'o', &ri, &m->path); + r = message_peek_field_string(m, object_path_is_valid, &ri, &m->path); break; case SD_BUS_MESSAGE_HEADER_INTERFACE: if (!streq(signature, "s")) return -EBADMSG; - r = message_peek_field_string(m, 's', &ri, &m->interface); + r = message_peek_field_string(m, interface_name_is_valid, &ri, &m->interface); break; case SD_BUS_MESSAGE_HEADER_MEMBER: if (!streq(signature, "s")) return -EBADMSG; - r = message_peek_field_string(m, 's', &ri, &m->member); + r = message_peek_field_string(m, member_name_is_valid, &ri, &m->member); break; case SD_BUS_MESSAGE_HEADER_ERROR_NAME: if (!streq(signature, "s")) return -EBADMSG; - r = message_peek_field_string(m, 's', &ri, &m->error.name); + r = message_peek_field_string(m, error_name_is_valid, &ri, &m->error.name); break; case SD_BUS_MESSAGE_HEADER_DESTINATION: if (!streq(signature, "s")) return -EBADMSG; - r = message_peek_field_string(m, 's', &ri, &m->destination); + r = message_peek_field_string(m, service_name_is_valid, &ri, &m->destination); break; case SD_BUS_MESSAGE_HEADER_SENDER: if (!streq(signature, "s")) return -EBADMSG; - r = message_peek_field_string(m, 's', &ri, &m->sender); + r = message_peek_field_string(m, service_name_is_valid, &ri, &m->sender); break; @@ -2432,6 +2442,12 @@ static int message_parse_fields(sd_bus_message *m) { return -EBADMSG; r = message_peek_field_uint32(m, &ri, &m->reply_serial); + if (r < 0) + return r; + + if (m->reply_serial == 0) + return -EBADMSG; + break; default: -- cgit v1.2.1 From 9f26c90cb50c45d4549c4dd569917b4ac143b94d Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 01:49:13 +0100 Subject: bus: reuse more code --- src/libsystemd-bus/bus-message.c | 56 ++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 31 deletions(-) diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index a22962559d..ec98de3132 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -2121,24 +2121,44 @@ static int message_peek_fields( return buffer_peek(m->fields, BUS_MESSAGE_FIELDS_SIZE(m), rindex, align, nbytes, ret); } +static int message_peek_field_uint32( + sd_bus_message *m, + size_t *ri, + uint32_t *ret) { + + int r; + void *q; + + assert(m); + assert(ri); + + r = message_peek_fields(m, ri, 4, 4, &q); + if (r < 0) + return r; + + if (ret) + *ret = BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q); + + return 0; +} + static int message_peek_field_string( sd_bus_message *m, bool (*validate)(const char *p), size_t *ri, const char **ret) { - size_t l; + uint32_t l; int r; void *q; assert(m); assert(ri); - r = message_peek_fields(m, ri, 4, 4, &q); + r = message_peek_field_uint32(m, ri, &l); if (r < 0) return r; - l = BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q); r = message_peek_fields(m, ri, 1, l+1, &q); if (r < 0) return r; @@ -2190,27 +2210,6 @@ static int message_peek_field_signature( return 0; } -static int message_peek_field_uint32( - sd_bus_message *m, - size_t *ri, - uint32_t *ret) { - - int r; - void *q; - - assert(m); - assert(ri); - - r = message_peek_fields(m, ri, 4, 4, &q); - if (r < 0) - return r; - - if (ret) - *ret = BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q); - - return 0; -} - static int message_skip_fields( sd_bus_message *m, size_t *ri, @@ -2228,7 +2227,6 @@ static int message_skip_fields( for (;;) { char t; - void *q; size_t l; if (array_size != (uint32_t) -1 && @@ -2284,7 +2282,7 @@ static int message_skip_fields( assert(l >= 1); { char sig[l-1], *s; - size_t nas; + uint32_t nas; int alignment; strncpy(sig, *signature + 1, l-1); @@ -2294,11 +2292,9 @@ static int message_skip_fields( if (alignment < 0) return alignment; - r = message_peek_fields(m, ri, 4, 4, &q); + r = message_peek_field_uint32(m, ri, &nas); if (r < 0) return r; - - nas = BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q); if (nas > BUS_ARRAY_MAX_SIZE) return -EBADMSG; @@ -2432,8 +2428,6 @@ static int message_parse_fields(sd_bus_message *m) { free(m->root_container.signature); m->root_container.signature = c; - - r = 0; break; } -- cgit v1.2.1 From d728d708c3ccfcb34f6d7673f7855fbf0c10aeec Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 01:49:56 +0100 Subject: bus: rework synchronization logic Instead of allowing certain actions fail during authentication and connection setup, implicitly synchronize on the connection to be set up completely before returning. --- src/libsystemd-bus/sd-bus.c | 46 +++++++++++++++++++++----------------- src/libsystemd-bus/sd-bus.h | 5 +++-- src/libsystemd-bus/test-bus-chat.c | 11 +++++++++ 3 files changed, 39 insertions(+), 23 deletions(-) diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 049bd356a0..6a6d43fac0 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -35,6 +35,7 @@ #include "bus-message.h" #include "bus-type.h" +static int ensure_running(sd_bus *bus); static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec); static void bus_free(sd_bus *b) { @@ -778,27 +779,37 @@ int sd_bus_is_open(sd_bus *bus) { return bus->fd >= 0; } -int sd_bus_is_running(sd_bus *bus) { +int sd_bus_can_send(sd_bus *bus, char type) { + int r; + if (!bus) return -EINVAL; - if (bus->fd < 0) - return -ENOTCONN; + if (type == SD_BUS_TYPE_UNIX_FD) { + r = ensure_running(bus); + if (r < 0) + return r; - return bus->state == BUS_RUNNING; + return bus->can_fds; + } + + return bus_type_is_valid(type); } -int sd_bus_can_send(sd_bus *bus, char type) { +int sd_bus_get_peer(sd_bus *bus, sd_id128_t *peer) { + int r; if (!bus) return -EINVAL; - if (bus->state != BUS_RUNNING && bus->state != BUS_HELLO) - return -EAGAIN; + if (!peer) + return -EINVAL; - if (type == SD_BUS_TYPE_UNIX_FD) - return bus->can_fds; + r = ensure_running(bus); + if (r < 0) + return r; - return bus_type_is_valid(type); + *peer = bus->peer; + return 0; } static int bus_seal_message(sd_bus *b, sd_bus_message *m) { @@ -1243,22 +1254,15 @@ static int ensure_running(sd_bus *bus) { assert(bus); - r = sd_bus_is_running(bus); - if (r != 0) - return r; + if (bus->state == BUS_RUNNING) + return 1; for (;;) { - int k; - r = sd_bus_process(bus, NULL); - if (r < 0) return r; - - k = sd_bus_is_running(bus); - if (k != 0) - return k; - + if (bus->state == BUS_RUNNING) + return 1; if (r > 0) continue; diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index 3ea4acc76f..adc7f8e2bd 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -35,8 +35,9 @@ * - always verify container depth * - merge busctl into systemctl or so? * - add object handlers - * - verify object paths * - implicitly add stub introspection calls + * - implement unix exec protocol + * - server side */ typedef struct sd_bus sd_bus; @@ -62,8 +63,8 @@ sd_bus *sd_bus_ref(sd_bus *bus); sd_bus *sd_bus_unref(sd_bus *bus); int sd_bus_is_open(sd_bus *bus); -int sd_bus_is_running(sd_bus *bus); int sd_bus_can_send(sd_bus *bus, char type); +int sd_bus_get_peer(sd_bus *bus, sd_id128_t *peer); int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial); int sd_bus_send_with_reply(sd_bus *bus, sd_bus_message *m, sd_message_handler_t callback, void *userdata, uint64_t usec, uint64_t *serial); diff --git a/src/libsystemd-bus/test-bus-chat.c b/src/libsystemd-bus/test-bus-chat.c index d8677cc9e8..5f533cc6d0 100644 --- a/src/libsystemd-bus/test-bus-chat.c +++ b/src/libsystemd-bus/test-bus-chat.c @@ -33,6 +33,7 @@ static int server_init(sd_bus **_bus) { sd_bus *bus = NULL; + sd_id128_t id; int r; assert(_bus); @@ -43,6 +44,16 @@ static int server_init(sd_bus **_bus) { goto fail; } + r = sd_bus_get_peer(bus, &id); + if (r < 0) { + log_error("Failed to get peer ID: %s", strerror(-r)); + goto fail; + } + + log_info("Peer ID is " SD_ID128_FORMAT_STR ".", SD_ID128_FORMAT_VAL(id)); + log_info("Can send file handles: %i", sd_bus_can_send(bus, 'h')); + log_info("Unique ID: %s", strna(sd_bus_get_unique_name(bus))); + r = sd_bus_request_name(bus, "org.freedesktop.systemd.test", 0); if (r < 0) { log_error("Failed to acquire name: %s", strerror(-r)); -- cgit v1.2.1 From 813a4f93750be40eff13f127dfef8364642a13bc Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 02:19:49 +0100 Subject: bus: properly verify recursion depth of signatures --- src/libsystemd-bus/bus-signature.c | 28 ++++++++++++++++++++-------- src/libsystemd-bus/test-bus-signature.c | 11 +++++++++++ 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/src/libsystemd-bus/bus-signature.c b/src/libsystemd-bus/bus-signature.c index db95c8870d..a92b7124c3 100644 --- a/src/libsystemd-bus/bus-signature.c +++ b/src/libsystemd-bus/bus-signature.c @@ -27,6 +27,8 @@ static int signature_element_length_internal( const char *s, bool allow_dict_entry, + unsigned array_depth, + unsigned struct_depth, size_t *l) { int r; @@ -41,7 +43,10 @@ static int signature_element_length_internal( if (*s == SD_BUS_TYPE_ARRAY) { size_t t; - r = signature_element_length_internal(s + 1, true, &t); + if (array_depth >= 32) + return -EINVAL; + + r = signature_element_length_internal(s + 1, true, array_depth+1, struct_depth, &t); if (r < 0) return r; @@ -52,10 +57,13 @@ static int signature_element_length_internal( if (*s == SD_BUS_TYPE_STRUCT_BEGIN) { const char *p = s + 1; + if (struct_depth >= 32) + return -EINVAL; + while (*p != SD_BUS_TYPE_STRUCT_END) { size_t t; - r = signature_element_length_internal(p, false, &t); + r = signature_element_length_internal(p, false, array_depth, struct_depth+1, &t); if (r < 0) return r; @@ -70,13 +78,16 @@ static int signature_element_length_internal( const char *p = s + 1; unsigned n = 0; + if (struct_depth >= 32) + return -EINVAL; + while (*p != SD_BUS_TYPE_DICT_ENTRY_END) { size_t t; if (n == 0 && !bus_type_is_basic(*p)) return -EINVAL; - r = signature_element_length_internal(p, false, &t); + r = signature_element_length_internal(p, false, array_depth, struct_depth+1, &t); if (r < 0) return r; @@ -94,6 +105,11 @@ static int signature_element_length_internal( return -EINVAL; } + +int signature_element_length(const char *s, size_t *l) { + return signature_element_length_internal(s, true, 0, 0, l); +} + bool signature_is_single(const char *s) { int r; size_t t; @@ -126,7 +142,7 @@ bool signature_is_valid(const char *s, bool allow_dict_entry) { while (*p) { size_t t; - r = signature_element_length_internal(p, allow_dict_entry, &t); + r = signature_element_length_internal(p, allow_dict_entry, 0, 0, &t); if (r < 0) return false; @@ -135,7 +151,3 @@ bool signature_is_valid(const char *s, bool allow_dict_entry) { return p - s <= 255; } - -int signature_element_length(const char *s, size_t *l) { - return signature_element_length_internal(s, true, l); -} diff --git a/src/libsystemd-bus/test-bus-signature.c b/src/libsystemd-bus/test-bus-signature.c index 4310d62e0a..5bc4310e7c 100644 --- a/src/libsystemd-bus/test-bus-signature.c +++ b/src/libsystemd-bus/test-bus-signature.c @@ -70,5 +70,16 @@ int main(int argc, char *argv[]) { assert_se(signature_is_valid("sssusa(uuubbba(uu)uuuu)a{u(uuuvas)}", false)); + assert_se(!signature_is_valid("a", false)); + assert_se(signature_is_valid("as", false)); + assert_se(signature_is_valid("aas", false)); + assert_se(signature_is_valid("aaas", false)); + assert_se(signature_is_valid("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaad", false)); + assert_se(signature_is_valid("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas", false)); + assert_se(!signature_is_valid("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaau", false)); + + assert_se(signature_is_valid("(((((((((((((((((((((((((((((((())))))))))))))))))))))))))))))))", false)); + assert_se(!signature_is_valid("((((((((((((((((((((((((((((((((()))))))))))))))))))))))))))))))))", false)); + return 0; } -- cgit v1.2.1 From dafb75912a65e72c3989143f79367a652323a69f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 02:20:21 +0100 Subject: bus: validate the hello response properly --- src/libsystemd-bus/sd-bus.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 6a6d43fac0..4bfbd4c651 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -104,16 +104,19 @@ static int hello_callback(sd_bus *bus, int error, sd_bus_message *reply, void *u assert(reply); - bus->state = BUS_RUNNING; - r = sd_bus_message_read(reply, "s", &s); if (r < 0) return r; + if (!service_name_is_valid(s) || s[0] != ':') + return -EBADMSG; + bus->unique_name = strdup(s); if (!bus->unique_name) return -ENOMEM; + bus->state = BUS_RUNNING; + return 1; } -- cgit v1.2.1 From 2bf938c1913b2ba9644cc113de8dc30dd10abbd4 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 02:20:39 +0100 Subject: bus: fix uninitialized variable --- src/libsystemd-bus/sd-bus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 4bfbd4c651..9408806a4e 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -1035,7 +1035,7 @@ static int dispatch_wqueue(sd_bus *bus) { } static int dispatch_rqueue(sd_bus *bus, sd_bus_message **m) { - sd_bus_message *z; + sd_bus_message *z = NULL; int r, ret = 0; assert(bus); -- cgit v1.2.1 From ed205a6bc53735392b46fde6820520a1d18d6ebd Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 02:32:34 +0100 Subject: bus: when parsing enforce maximum container depth --- src/libsystemd-bus/bus-internal.h | 2 ++ src/libsystemd-bus/bus-message.c | 19 +++++++++++++++++++ src/libsystemd-bus/sd-bus.h | 1 - 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index 3c2478e8fd..d0b7b5658d 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -118,6 +118,8 @@ static inline void bus_unrefp(sd_bus **b) { #define BUS_MESSAGE_SIZE_MAX (64*1024*1024) #define BUS_AUTH_SIZE_MAX (64*1024) +#define BUS_CONTAINER_DEPTH 128 + /* Defined by the specification as maximum size of an array in * bytes */ #define BUS_ARRAY_MAX_SIZE 67108864 diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index ec98de3132..74ea71ec0d 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -1741,6 +1741,25 @@ int sd_bus_message_enter_container(sd_bus_message *m, char type, const char *con if (!contents) return -EINVAL; + /* + * We enforce a global limit on container depth, that is much + * higher than the 32 structs and 32 arrays the specification + * mandates. This is simpler to implement for us, and we need + * this only to ensure our container array doesn't grow + * without bounds. We are happy to return any data from a + * message as long as the data itself is valid, even if the + * overall message might be not. + * + * Note that the message signature is validated when + * parsing the headers, and that validation does check the + * 32/32 limit. + * + * Note that the specification defines no limits on the depth + * of stacked variants, but we do. + */ + if (m->n_containers >= BUS_CONTAINER_DEPTH) + return -EBADMSG; + w = realloc(m->containers, sizeof(struct bus_container) * (m->n_containers + 1)); if (!w) return -ENOMEM; diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index adc7f8e2bd..8af1e85aae 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -32,7 +32,6 @@ * - make unix fd passing work * - add page donation logic * - api for appending/reading fixed arrays - * - always verify container depth * - merge busctl into systemctl or so? * - add object handlers * - implicitly add stub introspection calls -- cgit v1.2.1 From 20902f3ec8b9d3f8949b15dbd961d3eeb37e9b7b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 03:34:29 +0100 Subject: bus: also finish connection before returning from sd_bus_get_unique_name() --- src/libsystemd-bus/bus-control.c | 15 ++++++++++++--- src/libsystemd-bus/bus-internal.h | 2 ++ src/libsystemd-bus/sd-bus.c | 11 +++++------ src/libsystemd-bus/sd-bus.h | 2 +- src/libsystemd-bus/test-bus-chat.c | 9 ++++++++- 5 files changed, 28 insertions(+), 11 deletions(-) diff --git a/src/libsystemd-bus/bus-control.c b/src/libsystemd-bus/bus-control.c index 9d242dc413..06afaf3c76 100644 --- a/src/libsystemd-bus/bus-control.c +++ b/src/libsystemd-bus/bus-control.c @@ -28,11 +28,20 @@ #include "bus-internal.h" #include "bus-message.h" -const char *sd_bus_get_unique_name(sd_bus *bus) { +int sd_bus_get_unique_name(sd_bus *bus, const char **unique) { + int r; + if (!bus) - return NULL; + return -EINVAL; + if (!unique) + return -EINVAL; - return bus->unique_name; + r = bus_ensure_running(bus); + if (r < 0) + return r; + + *unique = bus->unique_name; + return 0; } int sd_bus_request_name(sd_bus *bus, const char *name, int flags) { diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index d0b7b5658d..c5bd3788b4 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -130,3 +130,5 @@ bool service_name_is_valid(const char *p); bool member_name_is_valid(const char *p); #define error_name_is_valid interface_name_is_valid + +int bus_ensure_running(sd_bus *bus); diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 9408806a4e..09ea01b951 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -35,7 +35,6 @@ #include "bus-message.h" #include "bus-type.h" -static int ensure_running(sd_bus *bus); static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec); static void bus_free(sd_bus *b) { @@ -789,7 +788,7 @@ int sd_bus_can_send(sd_bus *bus, char type) { return -EINVAL; if (type == SD_BUS_TYPE_UNIX_FD) { - r = ensure_running(bus); + r = bus_ensure_running(bus); if (r < 0) return r; @@ -807,7 +806,7 @@ int sd_bus_get_peer(sd_bus *bus, sd_id128_t *peer) { if (!peer) return -EINVAL; - r = ensure_running(bus); + r = bus_ensure_running(bus); if (r < 0) return r; @@ -1252,7 +1251,7 @@ int sd_bus_send_with_reply_cancel(sd_bus *bus, uint64_t serial) { return 1; } -static int ensure_running(sd_bus *bus) { +int bus_ensure_running(sd_bus *bus) { int r; assert(bus); @@ -1300,7 +1299,7 @@ int sd_bus_send_with_reply_and_block( if (bus_error_is_dirty(error)) return -EINVAL; - r = ensure_running(bus); + r = bus_ensure_running(bus); if (r < 0) return r; @@ -1747,7 +1746,7 @@ int sd_bus_flush(sd_bus *bus) { if (bus->fd < 0) return -ENOTCONN; - r = ensure_running(bus); + r = bus_ensure_running(bus); if (r < 0) return r; diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index 8af1e85aae..60f2913d69 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -128,7 +128,7 @@ int sd_bus_message_rewind(sd_bus_message *m, int complete); /* Bus management */ -const char *sd_bus_get_unique_name(sd_bus *bus); +int sd_bus_get_unique_name(sd_bus *bus, const char **unique); int sd_bus_request_name(sd_bus *bus, const char *name, int flags); int sd_bus_release_name(sd_bus *bus, const char *name); int sd_bus_list_names(sd_bus *bus, char ***l); diff --git a/src/libsystemd-bus/test-bus-chat.c b/src/libsystemd-bus/test-bus-chat.c index 5f533cc6d0..24a194327e 100644 --- a/src/libsystemd-bus/test-bus-chat.c +++ b/src/libsystemd-bus/test-bus-chat.c @@ -35,6 +35,7 @@ static int server_init(sd_bus **_bus) { sd_bus *bus = NULL; sd_id128_t id; int r; + const char *unique; assert(_bus); @@ -50,9 +51,15 @@ static int server_init(sd_bus **_bus) { goto fail; } + r = sd_bus_get_unique_name(bus, &unique); + if (r < 0) { + log_error("Failed to get unique name: %s", strerror(-r)); + goto fail; + } + log_info("Peer ID is " SD_ID128_FORMAT_STR ".", SD_ID128_FORMAT_VAL(id)); + log_info("Unique ID: %s", unique); log_info("Can send file handles: %i", sd_bus_can_send(bus, 'h')); - log_info("Unique ID: %s", strna(sd_bus_get_unique_name(bus))); r = sd_bus_request_name(bus, "org.freedesktop.systemd.test", 0); if (r < 0) { -- cgit v1.2.1 From 2571ead1a6d2747f85ecbc980285a22421e76e21 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 03:36:58 +0100 Subject: bus: implicitly collect ucred/label information --- src/libsystemd-bus/bus-internal.h | 4 ++ src/libsystemd-bus/bus-message.c | 37 +++++++++++-- src/libsystemd-bus/bus-message.h | 5 +- src/libsystemd-bus/sd-bus.c | 97 ++++++++++++++++++++++++++++++----- src/libsystemd-bus/sd-bus.h | 1 + src/libsystemd-bus/test-bus-chat.c | 4 +- src/libsystemd-bus/test-bus-marshal.c | 2 +- 7 files changed, 131 insertions(+), 19 deletions(-) diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index c5bd3788b4..56514aebbc 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -62,6 +62,7 @@ struct sd_bus { int message_version; bool can_fds:1; bool sent_hello:1; + bool ucred_valid:1; void *rbuffer; size_t rbuffer_size; @@ -101,6 +102,9 @@ struct sd_bus { size_t auth_size; char *auth_uid; usec_t auth_timeout; + + struct ucred ucred; + char label[NAME_MAX]; }; static inline void bus_unrefp(sd_bus **b) { diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index 74ea71ec0d..01213e31ad 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -224,10 +224,16 @@ static int message_append_field_uint32(sd_bus_message *m, uint8_t h, uint32_t x) return 0; } -int bus_message_from_malloc(void *buffer, size_t length, sd_bus_message **ret) { +int bus_message_from_malloc( + void *buffer, + size_t length, + struct ucred *ucred, + const char *label, + sd_bus_message **ret) { + sd_bus_message *m; struct bus_header *h; - size_t total, fs, bs; + size_t total, fs, bs, label_sz, a; int r; assert(buffer || length <= 0); @@ -259,7 +265,13 @@ int bus_message_from_malloc(void *buffer, size_t length, sd_bus_message **ret) { if (length != total) return -EBADMSG; - m = new0(sd_bus_message, 1); + if (label) { + label_sz = strlen(label); + a = ALIGN(sizeof(sd_bus_message)) + label_sz + 1; + } else + a = sizeof(sd_bus_message); + + m = malloc0(a); if (!m) return -ENOMEM; @@ -270,6 +282,18 @@ int bus_message_from_malloc(void *buffer, size_t length, sd_bus_message **ret) { m->body = (uint8_t*) buffer + sizeof(struct bus_header) + ALIGN_TO(fs, 8); m->sealed = true; + if (ucred) { + m->uid = ucred->uid; + m->pid = ucred->pid; + m->gid = ucred->gid; + m->uid_valid = m->gid_valid = true; + } + + if (label) { + m->label = (char*) m + ALIGN(sizeof(sd_bus_message)); + memcpy(m->label, label, label_sz + 1); + } + m->n_iovec = 1; m->iovec[0].iov_base = buffer; m->iovec[0].iov_len = length; @@ -629,6 +653,13 @@ int sd_bus_message_get_tid(sd_bus_message *m, pid_t *tid) { return 0; } +const char *sd_bus_message_get_label(sd_bus_message *m) { + if (!m) + return NULL; + + return m->label; +} + int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, const char *member) { if (!m) return -EINVAL; diff --git a/src/libsystemd-bus/bus-message.h b/src/libsystemd-bus/bus-message.h index ed1a4b87b1..b21fdf0ada 100644 --- a/src/libsystemd-bus/bus-message.h +++ b/src/libsystemd-bus/bus-message.h @@ -23,6 +23,7 @@ #include #include +#include #include "macro.h" #include "sd-bus.h" @@ -77,6 +78,8 @@ struct sd_bus_message { void *fields; void *body; + char *label; + size_t rindex; uint32_t n_fds; @@ -127,5 +130,5 @@ static inline void bus_message_unrefp(sd_bus_message **m) { int bus_message_seal(sd_bus_message *m, uint64_t serial); int bus_message_dump(sd_bus_message *m); int bus_message_get_blob(sd_bus_message *m, void **buffer, size_t *sz); -int bus_message_from_malloc(void *buffer, size_t length, sd_bus_message **ret); +int bus_message_from_malloc(void *buffer, size_t length, struct ucred *ucred, const char *label, sd_bus_message **ret); int bus_message_read_strv_extend(sd_bus_message *m, char ***l); diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 09ea01b951..73774ba308 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -29,6 +29,7 @@ #include "util.h" #include "macro.h" +#include "missing.h" #include "sd-bus.h" #include "bus-internal.h" @@ -530,6 +531,24 @@ static int bus_read_auth(sd_bus *b) { return 1; } +static int bus_setup_fd(sd_bus *b) { + int one; + + assert(b); + + /* Enable SO_PASSCRED + SO_PASSEC. We try this on any socket, + * just in case. This is actually irrelavant for */ + one = 1; + setsockopt(b->fd, SOL_SOCKET, SO_PASSCRED, &one, sizeof(one)); + setsockopt(b->fd, SOL_SOCKET, SO_PASSSEC, &one, sizeof(one)); + + /* Increase the buffers to a MB */ + fd_inc_rcvbuf(b->fd, 1024*1024); + fd_inc_sndbuf(b->fd, 1024*1024); + + return 0; +} + static int bus_start_auth(sd_bus *b) { static const char auth_prefix[] = "\0AUTH EXTERNAL "; static const char auth_suffix[] = "\r\nNEGOTIATE_UNIX_FD\r\nBEGIN\r\n"; @@ -578,8 +597,13 @@ static int bus_start_connect(sd_bus *b) { b->fd = socket(b->sockaddr.sa.sa_family, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); if (b->fd < 0) { b->last_connect_error = errno; - zero(b->sockaddr); - continue; + goto try_again; + } + + r = bus_setup_fd(b); + if (r < 0) { + b->last_connect_error = errno; + goto try_again; } r = connect(b->fd, &b->sockaddr.sa, b->sockaddr_size); @@ -588,13 +612,18 @@ static int bus_start_connect(sd_bus *b) { return 1; b->last_connect_error = errno; - close_nointr_nofail(b->fd); - b->fd = -1; - zero(b->sockaddr); - continue; + goto try_again; } return bus_start_auth(b); + + try_again: + zero(b->sockaddr); + + if (b->fd >= 0) { + close_nointr_nofail(b->fd); + b->fd = -1; + } } } @@ -728,17 +757,29 @@ int sd_bus_open_fd(int fd, sd_bus **ret) { return -ENOMEM; b->fd = fd; - fd_nonblock(b->fd, true); + + r = fd_nonblock(b->fd, true); + if (r < 0) + goto fail; + fd_cloexec(b->fd, true); + if (r < 0) + goto fail; + + r = bus_setup_fd(b); + if (r < 0) + goto fail; r = bus_start_auth(b); - if (r < 0) { - bus_free(b); - return r; - } + if (r < 0) + goto fail; *ret = b; return 0; + +fail: + bus_free(b); + return r; } void sd_bus_close(sd_bus *bus) { @@ -930,7 +971,9 @@ static int message_make(sd_bus *bus, size_t size, sd_bus_message **m) { } } - r = bus_message_from_malloc(bus->rbuffer, size, &t); + r = bus_message_from_malloc(bus->rbuffer, size, + bus->ucred_valid ? &bus->ucred : NULL, + bus->label[0] ? bus->label : NULL, &t); if (r < 0) { free(b); return r; @@ -950,6 +993,12 @@ static int message_read(sd_bus *bus, sd_bus_message **m) { size_t need; int r; void *b; + union { + struct cmsghdr cmsghdr; + uint8_t buf[CMSG_SPACE(sizeof(struct ucred)) + + CMSG_SPACE(NAME_MAX)]; /*selinux label */ + } control; + struct cmsghdr *cmsg; assert(bus); assert(m); @@ -975,12 +1024,34 @@ static int message_read(sd_bus *bus, sd_bus_message **m) { zero(mh); mh.msg_iov = &iov; mh.msg_iovlen = 1; + mh.msg_control = &control; + mh.msg_controllen = sizeof(control); - k = recvmsg(bus->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL); + k = recvmsg(bus->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC); if (k < 0) return errno == EAGAIN ? 0 : -errno; bus->rbuffer_size += k; + bus->ucred_valid = false; + bus->label[0] = 0; + + for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) { + if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_CREDENTIALS && + cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) { + + memcpy(&bus->ucred, CMSG_DATA(cmsg), sizeof(struct ucred)); + bus->ucred_valid = true; + + } else if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_SECURITY) { + + size_t l; + l = cmsg->cmsg_len - CMSG_LEN(0); + memcpy(&bus->label, CMSG_DATA(cmsg), l); + bus->label[l] = 0; + } + } r = message_read_need(bus, &need); if (r < 0) diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index 60f2913d69..73710d1511 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -106,6 +106,7 @@ int sd_bus_message_get_uid(sd_bus_message *m, uid_t *uid); int sd_bus_message_get_gid(sd_bus_message *m, gid_t *gid); int sd_bus_message_get_pid(sd_bus_message *m, pid_t *pid); int sd_bus_message_get_tid(sd_bus_message *m, pid_t *tid); +const char *sd_bus_message_get_label(sd_bus_message *m); int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, const char *member); int sd_bus_message_is_method_call(sd_bus_message *m, const char *interface, const char *member); diff --git a/src/libsystemd-bus/test-bus-chat.c b/src/libsystemd-bus/test-bus-chat.c index 24a194327e..23b00c7201 100644 --- a/src/libsystemd-bus/test-bus-chat.c +++ b/src/libsystemd-bus/test-bus-chat.c @@ -83,6 +83,7 @@ static int server(sd_bus *bus) { while (!client1_gone || !client2_gone) { _cleanup_bus_message_unref_ sd_bus_message *m = NULL, *reply = NULL; + pid_t pid = 0; r = sd_bus_process(bus, &m); if (r < 0) { @@ -103,7 +104,8 @@ static int server(sd_bus *bus) { if (!m) continue; - log_info("Got message! %s", strna(sd_bus_message_get_member(m))); + sd_bus_message_get_pid(m, &pid); + log_info("Got message! member=%s pid=%lu label=%s", strna(sd_bus_message_get_member(m)), (unsigned long) pid, strna(sd_bus_message_get_label(m))); /* bus_message_dump(m); */ /* sd_bus_message_rewind(m, true); */ diff --git a/src/libsystemd-bus/test-bus-marshal.c b/src/libsystemd-bus/test-bus-marshal.c index d12c847f35..32bf44fffe 100644 --- a/src/libsystemd-bus/test-bus-marshal.c +++ b/src/libsystemd-bus/test-bus-marshal.c @@ -121,7 +121,7 @@ int main(int argc, char *argv[]) { m = sd_bus_message_unref(m); - r = bus_message_from_malloc(buffer, sz, &m); + r = bus_message_from_malloc(buffer, sz, NULL, NULL, &m); assert_se(r >= 0); bus_message_dump(m); -- cgit v1.2.1 From 7cb2086695fdeed33b2fb148492a224dd951fa7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 21 Mar 2013 18:53:12 +0000 Subject: build-sys: use _FORTIFY_SOURCE with new gcc level -Og --- configure.ac | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index ae492cfe62..79a4ec4521 100644 --- a/configure.ac +++ b/configure.ac @@ -135,7 +135,7 @@ CC_CHECK_FLAGS_APPEND([with_cflags], [CFLAGS], [\ --param=ssp-buffer-size=4]) AC_SUBST([OUR_CFLAGS], $with_cflags) -AS_CASE([$CFLAGS], [*-O[[12345\ ]]*], [ +AS_CASE([$CFLAGS], [*-O[[12345g\ ]]*], [ CC_CHECK_FLAGS_APPEND([with_cppflags], [CPPFLAGS], [\ -Wp,-D_FORTIFY_SOURCE=2])], [ python_extra_cflags=-Wp,-U_FORTIFY_SOURCE -- cgit v1.2.1 From 3143987f93120da696c2d363c34cacf9a82aea93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 21 Mar 2013 19:06:55 -0400 Subject: initctl: fix return from unitialized memory in error path src/initctl/initctl.c: In function 'server_init': src/initctl/initctl.c:282:13: warning: 'r' may be used uninitialized in this function [-Wmaybe-uninitialized] int r; ^ --- src/initctl/initctl.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/src/initctl/initctl.c b/src/initctl/initctl.c index 0eb008d9e6..735f1e1450 100644 --- a/src/initctl/initctl.c +++ b/src/initctl/initctl.c @@ -290,7 +290,8 @@ static int server_init(Server *s, unsigned n_sockets) { zero(*s); - if ((s->epoll_fd = epoll_create1(EPOLL_CLOEXEC)) < 0) { + s->epoll_fd = epoll_create1(EPOLL_CLOEXEC); + if (s->epoll_fd < 0) { r = -errno; log_error("Failed to create epoll object: %s", strerror(errno)); goto fail; @@ -303,8 +304,10 @@ static int server_init(Server *s, unsigned n_sockets) { fd = SD_LISTEN_FDS_START+i; - if ((r = sd_is_fifo(fd, NULL)) < 0) { - log_error("Failed to determine file descriptor type: %s", strerror(-r)); + r = sd_is_fifo(fd, NULL); + if (r < 0) { + log_error("Failed to determine file descriptor type: %s", + strerror(-r)); goto fail; } @@ -314,9 +317,11 @@ static int server_init(Server *s, unsigned n_sockets) { goto fail; } - if (!(f = new0(Fifo, 1))) { + f = new0(Fifo, 1); + if (!f) { r = -ENOMEM; - log_error("Failed to create fifo object: %s", strerror(errno)); + log_error("Failed to create fifo object: %s", + strerror(errno)); goto fail; } @@ -328,7 +333,8 @@ static int server_init(Server *s, unsigned n_sockets) { if (epoll_ctl(s->epoll_fd, EPOLL_CTL_ADD, fd, &ev) < 0) { r = -errno; fifo_free(f); - log_error("Failed to add fifo fd to epoll object: %s", strerror(errno)); + log_error("Failed to add fifo fd to epoll object: %s", + strerror(errno)); goto fail; } @@ -339,7 +345,9 @@ static int server_init(Server *s, unsigned n_sockets) { } if (bus_connect(DBUS_BUS_SYSTEM, &s->bus, NULL, &error) < 0) { - log_error("Failed to get D-Bus connection: %s", bus_error_message(&error)); + log_error("Failed to get D-Bus connection: %s", + bus_error_message(&error)); + r = -EIO; goto fail; } -- cgit v1.2.1 From 40c2cce772ed74e7c6d302a6143ad818e9a2720d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 21 Mar 2013 19:10:50 -0400 Subject: bootchart: fix two unitialized memory frees The new gcc isn't bad! In file included from src/bootchart/svg.c:36:0: src/bootchart/svg.c: In function 'svg_ps_bars': ./src/shared/util.h:524:13: warning: 'enc_name' may be used uninitialized in this function [-Wmaybe-uninitialized] free(*(void**) p); ^ src/bootchart/svg.c:821:37: note: 'enc_name' was declared here char _cleanup_free_*enc_name; ^ CC src/udev/mtd_probe/mtd_probe-probe_smartmedia.o XSLT man/systemd.unit.5 In file included from src/bootchart/svg.c:36:0: src/bootchart/svg.c: In function 'svg_pss_graph': ./src/shared/util.h:524:13: warning: 'enc_name' may be used uninitialized in this function [-Wmaybe-uninitialized] free(*(void**) p); ^ src/bootchart/svg.c:395:37: note: 'enc_name' was declared here char _cleanup_free_*enc_name; ^ --- src/bootchart/svg.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index 231d3daa80..cd896895c9 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -392,7 +392,7 @@ static void svg_pss_graph(void) { svg("\n\n\n"); ps = ps_first; while (ps->next_ps) { - char _cleanup_free_*enc_name; + char _cleanup_free_ *enc_name = NULL; ps = ps->next_ps; if (!ps) continue; @@ -818,7 +818,7 @@ static void svg_ps_bars(void) { /* pass 2 - ps boxes */ ps = ps_first; while ((ps = get_next_ps(ps))) { - char _cleanup_free_*enc_name; + char _cleanup_free_ *enc_name = NULL; double starttime; int t; -- cgit v1.2.1 From 7a4b2eab6d1d0e4b67cbcb87b84588edd34aabb5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 21 Mar 2013 19:20:41 -0400 Subject: shutdownd: shut up bogus gcc warning This one is fake. But let's kill it, avoiding two condition checks in the process. src/shutdownd/shutdownd.c: In function 'when_wall': src/shutdownd/shutdownd.c:182:44: warning: 'sub' may be used uninitialized in this function [-Wmaybe-uninitialized] return elapse > sub ? elapse - sub : 1; ^ --- src/shutdownd/shutdownd.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/src/shutdownd/shutdownd.c b/src/shutdownd/shutdownd.c index 0464c89187..119385d67f 100644 --- a/src/shutdownd/shutdownd.c +++ b/src/shutdownd/shutdownd.c @@ -157,29 +157,26 @@ static usec_t when_wall(usec_t n, usec_t elapse) { usec_t delay; usec_t interval; } table[] = { - { 10 * USEC_PER_MINUTE, USEC_PER_MINUTE }, - { USEC_PER_HOUR, 15 * USEC_PER_MINUTE }, - { 3 * USEC_PER_HOUR, 30 * USEC_PER_MINUTE } + { 0, USEC_PER_MINUTE }, + { 10 * USEC_PER_MINUTE, 15 * USEC_PER_MINUTE }, + { USEC_PER_HOUR, 30 * USEC_PER_MINUTE }, + { 3 * USEC_PER_HOUR, USEC_PER_HOUR }, }; usec_t left, sub; - unsigned i; + unsigned i = ELEMENTSOF(table) - 1; /* If the time is already passed, then don't announce */ if (n >= elapse) return 0; left = elapse - n; - for (i = 0; i < ELEMENTSOF(table); i++) - if (n + table[i].delay >= elapse) { - sub = ((left / table[i].interval) * table[i].interval); - break; - } - - if (i >= ELEMENTSOF(table)) - sub = ((left / USEC_PER_HOUR) * USEC_PER_HOUR); + while (left < table[i].delay) + i--; + sub = (left / table[i].interval) * table[i].interval; - return elapse > sub ? elapse - sub : 1; + assert(sub < elapse); + return elapse - sub; } static usec_t when_nologin(usec_t elapse) { -- cgit v1.2.1 From 742af54adce09e019b37093af66b2f22b4ae9330 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 21 Mar 2013 20:55:17 -0400 Subject: efivars: fix return code Was returning 1 on read error. --- src/shared/efivars.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/efivars.c b/src/shared/efivars.c index 4fb77428f2..06cf127de1 100644 --- a/src/shared/efivars.c +++ b/src/shared/efivars.c @@ -111,7 +111,7 @@ int efi_get_variable( n = read(fd, r, (size_t) st.st_size - 4); if (n < 0) { free(r); - return (int) -n; + return -errno; } if (n != (ssize_t) st.st_size - 4) { free(r); -- cgit v1.2.1 From 50a279f85783375416dacae7dafbcbbcd2765962 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 20 Mar 2013 18:30:10 -0400 Subject: systemd-python: export sd_journal_get_usage --- TODO | 1 - man/sd_journal_get_usage.xml | 12 ++++++------ src/python-systemd/_reader.c | 35 +++++++++++++++++++++++++++++------ 3 files changed, 35 insertions(+), 13 deletions(-) diff --git a/TODO b/TODO index 19154121c7..2be45038bb 100644 --- a/TODO +++ b/TODO @@ -586,7 +586,6 @@ Features: * systemd-python: - allow reading of only select fields in systemd.journal._reader.Reader - export sd_journal_test_cursor in systemd.journal._reader.Reader - - export sd_journal_get_usage in systemd.journal._reader.Reader - figure out a simple way to wait for journal events in a way that works with ^C - add documentation to systemd.daemon diff --git a/man/sd_journal_get_usage.xml b/man/sd_journal_get_usage.xml index 14eb1e2b79..a2b868f218 100644 --- a/man/sd_journal_get_usage.xml +++ b/man/sd_journal_get_usage.xml @@ -64,12 +64,12 @@ Description sd_journal_get_usage() - determines the total disk space currently used up by - journal files. If - SD_JOURNAL_LOCAL_ONLY has been - passed when opening the journal files this value will - only reflect the size of journal files of the local - host, otherwise of all hosts. + determines the total disk space currently used by + journal files (in bytes). If + SD_JOURNAL_LOCAL_ONLY was passed + when opening the journal this value will only reflect + the size of journal files of the local host, otherwise + of all hosts. diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 908d911298..17c001530f 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -130,12 +130,12 @@ PyDoc_STRVAR(Reader_fileno__doc__, "See man:sd_journal_get_fd(3)."); static PyObject* Reader_fileno(Reader *self, PyObject *args) { - int r; - r = sd_journal_get_fd(self->j); - set_error(r, NULL, NULL); - if (r < 0) + int fd; + fd = sd_journal_get_fd(self->j); + set_error(fd, NULL, NULL); + if (fd < 0) return NULL; - return long_FromLong(r); + return long_FromLong(fd); } @@ -171,6 +171,29 @@ static PyObject* Reader_close(Reader *self, PyObject *args) } +PyDoc_STRVAR(Reader_get_usage__doc__, + "get_usage() -> int\n\n" + "Returns the total disk space currently used by journal" + "files (in bytes). If `SD_JOURNAL_LOCAL_ONLY` was" + "passed when opening the journal this value will only reflect" + "the size of journal files of the local host, otherwise" + "of all hosts.\n\n" + "This method invokes sd_journal_get_usage().\n" + "See man:sd_journal_get_usage(3)."); +static PyObject* Reader_get_usage(Reader *self, PyObject *args) +{ + int r; + uint64_t bytes; + + r = sd_journal_get_usage(self->j, &bytes); + if (set_error(r, NULL, NULL)) + return NULL; + + assert_cc(sizeof(unsigned long long) == sizeof(bytes)); + return PyLong_FromUnsignedLongLong(bytes); +} + + PyDoc_STRVAR(Reader___enter____doc__, "__enter__() -> self\n\n" "Part of the context manager protocol.\n" @@ -770,9 +793,9 @@ static PyMethodDef Reader_methods[] = { {"fileno", (PyCFunction) Reader_fileno, METH_NOARGS, Reader_fileno__doc__}, {"reliable_fd", (PyCFunction) Reader_reliable_fd, METH_NOARGS, Reader_reliable_fd__doc__}, {"close", (PyCFunction) Reader_close, METH_NOARGS, Reader_close__doc__}, + {"get_usage", (PyCFunction) Reader_get_usage, METH_NOARGS, Reader_get_usage__doc__}, {"__enter__", (PyCFunction) Reader___enter__, METH_NOARGS, Reader___enter____doc__}, {"__exit__", (PyCFunction) Reader___exit__, METH_VARARGS, Reader___exit____doc__}, - {"close", (PyCFunction) Reader_close, METH_NOARGS, Reader_close__doc__}, {"get_next", (PyCFunction) Reader_get_next, METH_VARARGS, Reader_get_next__doc__}, {"get_previous", (PyCFunction) Reader_get_previous, METH_VARARGS, Reader_get_previous__doc__}, {"add_match", (PyCFunction) Reader_add_match, METH_VARARGS|METH_KEYWORDS, Reader_add_match__doc__}, -- cgit v1.2.1 From 806bc1cb610b1795d62f59878703361c8b576b12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 20 Mar 2013 18:40:05 -0400 Subject: systemd-python: cleanup up usec_t handling The behaviour wrt. seconds vs. microseconds was inconsistent. Now _Reader always uses native units (us), while Reader always uses seconds and accepts both floats and ints. This way the conversion is always done in the Python layer, and the lower level API allows access to the journal API without the potentially lossy conversion between double and uint64_t. --- src/python-systemd/_reader.c | 39 ++++++++++++--------------------------- src/python-systemd/journal.py | 20 ++++++++++++++++---- 2 files changed, 28 insertions(+), 31 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 17c001530f..4fe7847616 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -499,22 +499,15 @@ static PyObject* Reader_seek_tail(Reader *self, PyObject *args) PyDoc_STRVAR(Reader_seek_realtime__doc__, "seek_realtime(realtime) -> None\n\n" "Seek to nearest matching journal entry to `realtime`. Argument\n" - "`realtime` can must be an integer unix timestamp."); + "`realtime` in specified in seconds."); static PyObject* Reader_seek_realtime(Reader *self, PyObject *args) { - double timedouble; uint64_t timestamp; int r; - if (!PyArg_ParseTuple(args, "d:_Reader.seek_realtime", &timedouble)) + if (!PyArg_ParseTuple(args, "K:seek_realtime", ×tamp)) return NULL; - timestamp = (uint64_t) (timedouble * 1.0E6); - if ((int64_t) timestamp < 0LL) { - PyErr_SetString(PyExc_ValueError, "Time must be a positive integer"); - return NULL; - } - Py_BEGIN_ALLOW_THREADS r = sd_journal_seek_realtime_usec(self->j, timestamp); Py_END_ALLOW_THREADS @@ -527,26 +520,18 @@ static PyObject* Reader_seek_realtime(Reader *self, PyObject *args) PyDoc_STRVAR(Reader_seek_monotonic__doc__, "seek_monotonic(monotonic[, bootid]) -> None\n\n" "Seek to nearest matching journal entry to `monotonic`. Argument\n" - "`monotonic` is an timestamp from boot in seconds.\n" + "`monotonic` is an timestamp from boot in microseconds.\n" "Argument `bootid` is a string representing which boot the\n" "monotonic time is reference to. Defaults to current bootid."); static PyObject* Reader_seek_monotonic(Reader *self, PyObject *args) { - double timedouble; char *bootid = NULL; uint64_t timestamp; sd_id128_t id; int r; - if (!PyArg_ParseTuple(args, "d|z:_Reader.seek_monotonic", &timedouble, &bootid)) - return NULL; - - timestamp = (uint64_t) (timedouble * 1.0E6); - - if ((int64_t) timestamp < 0LL) { - PyErr_SetString(PyExc_ValueError, "Time must be positive number"); + if (!PyArg_ParseTuple(args, "K|z:seek_monotonic", ×tamp, &bootid)) return NULL; - } if (bootid) { r = sd_id128_from_string(bootid, &id); @@ -565,6 +550,7 @@ static PyObject* Reader_seek_monotonic(Reader *self, PyObject *args) Py_END_ALLOW_THREADS if (set_error(r, NULL, NULL)) return NULL; + Py_RETURN_NONE; } @@ -572,23 +558,22 @@ static PyObject* Reader_seek_monotonic(Reader *self, PyObject *args) PyDoc_STRVAR(Reader_wait__doc__, "wait([timeout]) -> state change (integer)\n\n" "Wait for a change in the journal. Argument `timeout` specifies\n" - "the maximum number of seconds to wait before returning\n" - "regardless of wheter the journal has changed. If `timeout` is not given\n" - "or is 0, then block forever.\n" + "the maximum number of microseconds to wait before returning\n" + "regardless of wheter the journal has changed. If `timeout` is -1,\n" + "then block forever.\n\n" "Will return constants: NOP if no change; APPEND if new\n" "entries have been added to the end of the journal; and\n" "INVALIDATE if journal files have been added or removed."); -static PyObject* Reader_wait(Reader *self, PyObject *args, PyObject *keywds) +static PyObject* Reader_wait(Reader *self, PyObject *args) { int r; - int64_t timeout = 0LL; + int64_t timeout; - if (!PyArg_ParseTuple(args, "|L:_Reader.wait", &timeout)) + if (!PyArg_ParseTuple(args, "|L:wait", &timeout)) return NULL; Py_BEGIN_ALLOW_THREADS - r = sd_journal_wait(self->j, - timeout == 0 ? (uint64_t) -1 : timeout * 1E6); + r = sd_journal_wait(self->j, timeout); Py_END_ALLOW_THREADS if (set_error(r, NULL, NULL) < 0) return NULL; diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index fee39c9e08..a522aecc70 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -51,10 +51,10 @@ def _convert_source_monotonic(s): return _datetime.timedelta(microseconds=int(s)) def _convert_realtime(t): - return _datetime.datetime.fromtimestamp(t / 1E6) + return _datetime.datetime.fromtimestamp(t / 1000000) def _convert_timestamp(s): - return _datetime.datetime.fromtimestamp(int(s) / 1E6) + return _datetime.datetime.fromtimestamp(int(s) / 1000000) if _sys.version_info >= (3,): def _convert_uuid(s): @@ -209,6 +209,17 @@ class Reader(_Reader): return set(self._convert_field(field, value) for value in super(Reader, self).query_unique(field)) + def wait(self, timeout=None): + """Wait for a change in the journal. `timeout` is the maximum + time in seconds to wait, or None, to wait forever. + + Returns one of NOP (no change), APPEND (new entries have been + added to the end of the journal), or INVALIDATE (journal files + have been added or removed). + """ + us = -1 if timeout is None else int(timeout * 1000000) + return super(Reader, self).wait(timeout) + def seek_realtime(self, realtime): """Seek to a matching journal entry nearest to `realtime` time. @@ -216,8 +227,8 @@ class Reader(_Reader): or datetime.datetime instance. """ if isinstance(realtime, _datetime.datetime): - realtime = float(realtime.strftime("%s.%f")) - return super(Reader, self).seek_realtime(realtime) + realtime = float(realtime.strftime("%s.%f")) * 1000000 + return super(Reader, self).seek_realtime(int(realtime)) def seek_monotonic(self, monotonic, bootid=None): """Seek to a matching journal entry nearest to `monotonic` time. @@ -229,6 +240,7 @@ class Reader(_Reader): """ if isinstance(monotonic, _datetime.timedelta): monotonic = monotonic.totalseconds() + monotonic = int(monotonic * 1000000) if isinstance(bootid, _uuid.UUID): bootid = bootid.get_hex() return super(Reader, self).seek_monotonic(monotonic, bootid) -- cgit v1.2.1 From 1cdcd71be06a7f51012766d6b2f9e828b715f5e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 20 Mar 2013 19:00:37 -0400 Subject: systemd-python: implement _Reader.test_cursor Getting the cursor is split out from .get_next() into .get_cursor(). This mirrors the C API more closely, and also makes things a bit faster if the cursor is not needed. --- TODO | 1 - src/python-systemd/_reader.c | 66 ++++++++++++++++++++++++++++++-------------- 2 files changed, 46 insertions(+), 21 deletions(-) diff --git a/TODO b/TODO index 2be45038bb..8c99afcd74 100644 --- a/TODO +++ b/TODO @@ -585,7 +585,6 @@ Features: * systemd-python: - allow reading of only select fields in systemd.journal._reader.Reader - - export sd_journal_test_cursor in systemd.journal._reader.Reader - figure out a simple way to wait for journal events in a way that works with ^C - add documentation to systemd.daemon diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 4fe7847616..b74d2beab9 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -374,26 +374,6 @@ static PyObject* Reader_get_next(Reader *self, PyObject *args) goto error; } - { - PyObject _cleanup_Py_DECREF_ *key = NULL, *value = NULL; - char _cleanup_free_ *cursor = NULL; - - r = sd_journal_get_cursor(self->j, &cursor); - if (set_error(r, NULL, NULL)) - goto error; - - key = unicode_FromString("__CURSOR"); - if (!key) - goto error; - - value = PyBytes_FromString(cursor); - if (!value) - goto error; - - if (PyDict_SetItem(dict, key, value)) - goto error; - } - return dict; error: Py_DECREF(dict); @@ -602,6 +582,50 @@ static PyObject* Reader_seek_cursor(Reader *self, PyObject *args) } +PyDoc_STRVAR(Reader_get_cursor__doc__, + "get_cursor() -> str\n\n" + "Return a cursor string for the current journal entry.\n\n" + "Wraps sd_journal_get_cursor(). See man:sd_journal_get_cursor(3)."); +static PyObject* Reader_get_cursor(Reader *self, PyObject *args) +{ + char _cleanup_free_ *cursor = NULL; + int r; + + assert(self); + assert(!args); + + r = sd_journal_get_cursor(self->j, &cursor); + if (set_error(r, NULL, NULL)) + return NULL; + + return unicode_FromString(cursor); +} + + +PyDoc_STRVAR(Reader_test_cursor__doc__, + "test_cursor(str) -> bool\n\n" + "Test whether the cursor string matches current journal entry.\n\n" + "Wraps sd_journal_test_cursor(). See man:sd_journal_test_cursor(3)."); +static PyObject* Reader_test_cursor(Reader *self, PyObject *args) +{ + const char *cursor; + int r; + + assert(self); + assert(args); + + if (!PyArg_ParseTuple(args, "s:_Reader.get_cursor", &cursor)) + return NULL; + + r = sd_journal_test_cursor(self->j, cursor); + set_error(r, NULL, NULL); + if (r < 0) + return NULL; + + return PyBool_FromLong(r); +} + + static PyObject* Reader_iter(PyObject *self) { Py_INCREF(self); @@ -792,6 +816,8 @@ static PyMethodDef Reader_methods[] = { {"seek_monotonic", (PyCFunction) Reader_seek_monotonic, METH_VARARGS, Reader_seek_monotonic__doc__}, {"wait", (PyCFunction) Reader_wait, METH_VARARGS, Reader_wait__doc__}, {"seek_cursor", (PyCFunction) Reader_seek_cursor, METH_VARARGS, Reader_seek_cursor__doc__}, + {"get_cursor", (PyCFunction) Reader_get_cursor, METH_NOARGS, Reader_get_cursor__doc__}, + {"test_cursor", (PyCFunction) Reader_test_cursor, METH_VARARGS, Reader_test_cursor__doc__}, {"query_unique", (PyCFunction) Reader_query_unique, METH_VARARGS, Reader_query_unique__doc__}, {"get_catalog", (PyCFunction) Reader_get_catalog, METH_NOARGS, Reader_get_catalog__doc__}, {NULL} /* Sentinel */ -- cgit v1.2.1 From 5e8ba1a4601bcff83e45d1f4f26081611c3c6f2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 20 Mar 2013 19:12:27 -0400 Subject: systemd-python: split out realtime and monotonic into separate functions This matches the C API more closely, and also enables the user to get just partial information, should she desire to do so. Functions names in error messages are modified to not include the class name, because Python uses just the function name into functions declared as METH_NOARGS, and error messages were inconsistent. --- src/python-systemd/_reader.c | 164 ++++++++++++++++++++++++++----------------- 1 file changed, 99 insertions(+), 65 deletions(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index b74d2beab9..c128cf3c14 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -83,8 +83,8 @@ static void Reader_dealloc(Reader* self) } PyDoc_STRVAR(Reader__doc__, - "Reader([flags | path]) -> ...\n\n" - "Reader allows filtering and retrieval of Journal entries.\n" + "_Reader([flags | path]) -> ...\n\n" + "_Reader allows filtering and retrieval of Journal entries.\n" "Note: this is a low-level interface, and probably not what you\n" "want, use systemd.journal.Reader instead.\n\n" "Argument `flags` sets open flags of the journal, which can be one\n" @@ -93,7 +93,9 @@ PyDoc_STRVAR(Reader__doc__, "volatile journal files; and SYSTEM_ONLY opens only\n" "journal files of system services and the kernel.\n\n" "Argument `path` is the directory of journal files. Note that\n" - "`flags` and `path` are exclusive.\n"); + "`flags` and `path` are exclusive.\n\n" + "_Reader implements the context manager protocol: the journal\n" + "will be closed when exiting the block."); static int Reader_init(Reader *self, PyObject *args, PyObject *keywds) { int flags = 0, r; @@ -221,19 +223,17 @@ static PyObject* Reader___exit__(Reader *self, PyObject *args) } -PyDoc_STRVAR(Reader_get_next__doc__, - "get_next([skip]) -> dict\n\n" - "Return dictionary of the next log entry. Optional skip value will\n" - "return the `skip`\\-th log entry."); -static PyObject* Reader_get_next(Reader *self, PyObject *args) +PyDoc_STRVAR(Reader_next__doc__, + "next([skip]) -> bool\n\n" + "Go to the next log entry. Optional skip value means to go to\n" + "the `skip`\\-th log entry.\n" + "Returns False if at end of file, True otherwise."); +static PyObject* Reader_next(Reader *self, PyObject *args) { - PyObject *dict; - const void *msg; - size_t msg_len; int64_t skip = 1LL; int r; - if (!PyArg_ParseTuple(args, "|L:_Reader.get_next", &skip)) + if (!PyArg_ParseTuple(args, "|L:next", &skip)) return NULL; if (skip == 0LL) { @@ -257,7 +257,26 @@ static PyObject* Reader_get_next(Reader *self, PyObject *args) set_error(r, NULL, NULL); if (r < 0) return NULL; - else if (r == 0) /* EOF */ + return PyBool_FromLong(r); +} + + +PyDoc_STRVAR(Reader_get_next__doc__, + "get_next([skip]) -> dict\n\n" + "Return dictionary of the next log entry. Optional skip value will\n" + "return the `skip`\\-th log entry. Returns an empty dict on EOF."); +static PyObject* Reader_get_next(Reader *self, PyObject *args) +{ + PyObject _cleanup_Py_DECREF_ *tmp = NULL; + PyObject *dict; + const void *msg; + size_t msg_len; + int r; + + tmp = Reader_next(self, args); + if (!tmp) + return NULL; + if (tmp == Py_False) /* EOF */ return PyDict_New(); dict = PyDict_New(); @@ -316,68 +335,80 @@ static PyObject* Reader_get_next(Reader *self, PyObject *args) } } - { - PyObject _cleanup_Py_DECREF_ *key = NULL, *value = NULL; - uint64_t realtime; + return dict; +error: + Py_DECREF(dict); + return NULL; +} - r = sd_journal_get_realtime_usec(self->j, &realtime); - if (set_error(r, NULL, NULL)) - goto error; - key = unicode_FromString("__REALTIME_TIMESTAMP"); - if (!key) - goto error; +PyDoc_STRVAR(Reader_get_realtime__doc__, + "get_realtime() -> int\n\n" + "Return the realtime timestamp for the current journal entry\n" + "in microseconds.\n\n" + "Wraps sd_journal_get_realtime_usec().\n" + "See man:sd_journal_get_realtime_usec(3)."); +static PyObject* Reader_get_realtime(Reader *self, PyObject *args) +{ + uint64_t timestamp; + int r; - assert_cc(sizeof(unsigned long long) == sizeof(realtime)); - value = PyLong_FromUnsignedLongLong(realtime); - if (!value) - goto error; + assert(self); + assert(!args); - if (PyDict_SetItem(dict, key, value)) - goto error; - } + r = sd_journal_get_realtime_usec(self->j, ×tamp); + if (set_error(r, NULL, NULL)) + return NULL; - { - PyObject _cleanup_Py_DECREF_ - *key = NULL, *timestamp = NULL, *bytes = NULL, *value = NULL; - sd_id128_t id; - uint64_t monotonic; + assert_cc(sizeof(unsigned long long) == sizeof(timestamp)); + return PyLong_FromUnsignedLongLong(timestamp); +} - r = sd_journal_get_monotonic_usec(self->j, &monotonic, &id); - if (set_error(r, NULL, NULL)) - goto error; - assert_cc(sizeof(unsigned long long) == sizeof(monotonic)); - key = unicode_FromString("__MONOTONIC_TIMESTAMP"); - timestamp = PyLong_FromUnsignedLongLong(monotonic); - bytes = PyBytes_FromStringAndSize((const char*) &id.bytes, sizeof(id.bytes)); +PyDoc_STRVAR(Reader_get_monotonic__doc__, + "get_monotonic() -> (timestamp, bootid)\n\n" + "Return the monotonic timestamp for the current journal entry\n" + "as a tuple of time in microseconds and bootid.\n\n" + "Wraps sd_journal_get_monotonic_usec().\n" + "See man:sd_journal_get_monotonic_usec(3)."); +static PyObject* Reader_get_monotonic(Reader *self, PyObject *args) +{ + uint64_t timestamp; + sd_id128_t id; + PyObject *monotonic, *bootid, *tuple; + int r; + + assert(self); + assert(!args); + + r = sd_journal_get_monotonic_usec(self->j, ×tamp, &id); + if (set_error(r, NULL, NULL)) + return NULL; + + assert_cc(sizeof(unsigned long long) == sizeof(timestamp)); + monotonic = PyLong_FromUnsignedLongLong(timestamp); + bootid = PyBytes_FromStringAndSize((const char*) &id.bytes, sizeof(id.bytes)); #if PY_MAJOR_VERSION >= 3 - value = PyStructSequence_New(&MonotonicType); + tuple = PyStructSequence_New(&MonotonicType); #else - value = PyTuple_New(2); + tuple = PyTuple_New(2); #endif - if (!key || !timestamp || !bytes || !value) - goto error; - - Py_INCREF(timestamp); - Py_INCREF(bytes); + if (!monotonic || !bootid || !tuple) { + Py_XDECREF(monotonic); + Py_XDECREF(bootid); + Py_XDECREF(tuple); + return NULL; + } #if PY_MAJOR_VERSION >= 3 - PyStructSequence_SET_ITEM(value, 0, timestamp); - PyStructSequence_SET_ITEM(value, 1, bytes); + PyStructSequence_SET_ITEM(tuple, 0, monotonic); + PyStructSequence_SET_ITEM(tuple, 1, bootid); #else - PyTuple_SET_ITEM(value, 0, timestamp); - PyTuple_SET_ITEM(value, 1, bytes); + PyTuple_SET_ITEM(tuple, 0, monotonic); + PyTuple_SET_ITEM(tuple, 1, bootid); #endif - if (PyDict_SetItem(dict, key, value)) - goto error; - } - - return dict; -error: - Py_DECREF(dict); - return NULL; + return tuple; } @@ -388,7 +419,7 @@ PyDoc_STRVAR(Reader_get_previous__doc__, static PyObject* Reader_get_previous(Reader *self, PyObject *args) { int64_t skip = 1LL; - if (!PyArg_ParseTuple(args, "|L:_Reader.get_previous", &skip)) + if (!PyArg_ParseTuple(args, "|L:get_previous", &skip)) return NULL; return PyObject_CallMethod((PyObject *)self, (char*) "get_next", @@ -406,7 +437,7 @@ static PyObject* Reader_add_match(Reader *self, PyObject *args, PyObject *keywds { char *match; int match_len, r; - if (!PyArg_ParseTuple(args, "s#:_Reader.add_match", &match, &match_len)) + if (!PyArg_ParseTuple(args, "s#:add_match", &match, &match_len)) return NULL; r = sd_journal_add_match(self->j, match, match_len); @@ -570,7 +601,7 @@ static PyObject* Reader_seek_cursor(Reader *self, PyObject *args) const char *cursor; int r; - if (!PyArg_ParseTuple(args, "s:_Reader.seek_cursor", &cursor)) + if (!PyArg_ParseTuple(args, "s:seek_cursor", &cursor)) return NULL; Py_BEGIN_ALLOW_THREADS @@ -614,7 +645,7 @@ static PyObject* Reader_test_cursor(Reader *self, PyObject *args) assert(self); assert(args); - if (!PyArg_ParseTuple(args, "s:_Reader.get_cursor", &cursor)) + if (!PyArg_ParseTuple(args, "s:test_cursor", &cursor)) return NULL; r = sd_journal_test_cursor(self->j, cursor); @@ -663,7 +694,7 @@ static PyObject* Reader_query_unique(Reader *self, PyObject *args) size_t uniq_len; PyObject *value_set, *key, *value; - if (!PyArg_ParseTuple(args, "s:_Reader.query_unique", &query)) + if (!PyArg_ParseTuple(args, "s:query_unique", &query)) return NULL; Py_BEGIN_ALLOW_THREADS @@ -805,8 +836,11 @@ static PyMethodDef Reader_methods[] = { {"get_usage", (PyCFunction) Reader_get_usage, METH_NOARGS, Reader_get_usage__doc__}, {"__enter__", (PyCFunction) Reader___enter__, METH_NOARGS, Reader___enter____doc__}, {"__exit__", (PyCFunction) Reader___exit__, METH_VARARGS, Reader___exit____doc__}, + {"next", (PyCFunction) Reader_next, METH_VARARGS, Reader_next__doc__}, {"get_next", (PyCFunction) Reader_get_next, METH_VARARGS, Reader_get_next__doc__}, {"get_previous", (PyCFunction) Reader_get_previous, METH_VARARGS, Reader_get_previous__doc__}, + {"get_realtime", (PyCFunction) Reader_get_realtime, METH_NOARGS, Reader_get_realtime__doc__}, + {"get_monotonic", (PyCFunction) Reader_get_monotonic, METH_NOARGS, Reader_get_monotonic__doc__}, {"add_match", (PyCFunction) Reader_add_match, METH_VARARGS|METH_KEYWORDS, Reader_add_match__doc__}, {"add_disjunction", (PyCFunction) Reader_add_disjunction, METH_NOARGS, Reader_add_disjunction__doc__}, {"flush_matches", (PyCFunction) Reader_flush_matches, METH_NOARGS, Reader_flush_matches__doc__}, -- cgit v1.2.1 From 811de196b3c5e08fc1fc3bef7cb062efad784303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 20 Mar 2013 23:01:32 -0400 Subject: systemd-python: allow retrieval of single fields This can give huge efficiency gains, e.g. if only MESSAGE is required and all other fields can be ignored. --- TODO | 1 - src/python-systemd/_reader.c | 109 ++++++++++++++++++++++++++++++------ src/python-systemd/docs/journal.rst | 3 + src/python-systemd/journal.py | 10 +++- 4 files changed, 103 insertions(+), 20 deletions(-) diff --git a/TODO b/TODO index 8c99afcd74..c0779d4377 100644 --- a/TODO +++ b/TODO @@ -584,7 +584,6 @@ Features: * drop cap bounding set in readahead and other services * systemd-python: - - allow reading of only select fields in systemd.journal._reader.Reader - figure out a simple way to wait for journal events in a way that works with ^C - add documentation to systemd.daemon diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index c128cf3c14..d1188a147a 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -261,6 +261,73 @@ static PyObject* Reader_next(Reader *self, PyObject *args) } +static int extract(const char* msg, size_t msg_len, + PyObject **key, PyObject **value) { + PyObject *k = NULL, *v; + const char *delim_ptr; + + delim_ptr = memchr(msg, '=', msg_len); + if (!delim_ptr) { + PyErr_SetString(PyExc_OSError, + "journal gave us a field without '='"); + return -1; + } + + if (key) { + k = unicode_FromStringAndSize(msg, delim_ptr - (const char*) msg); + if (!k) + return -1; + } + + if (value) { + v = PyBytes_FromStringAndSize(delim_ptr + 1, + (const char*) msg + msg_len - (delim_ptr + 1)); + if (!v) { + Py_XDECREF(k); + return -1; + } + + *value = v; + } + + if (key) + *key = k; + + return 0; +} + +PyDoc_STRVAR(Reader_get__doc__, + "get(str) -> str\n\n" + "Return data associated with this key in current log entry.\n" + "Throws KeyError is the data is not available."); +static PyObject* Reader_get(Reader *self, PyObject *args) +{ + const char* field; + const void* msg; + size_t msg_len; + PyObject *value; + int r; + + assert(self); + assert(args); + + if (!PyArg_ParseTuple(args, "s:get", &field)) + return NULL; + + r = sd_journal_get_data(self->j, field, &msg, &msg_len); + if (r == -ENOENT) { + PyErr_SetString(PyExc_KeyError, field); + return NULL; + } else if (set_error(r, NULL, "field name is not valid")) + return NULL; + + r = extract(msg, msg_len, NULL, &value); + if (r < 0) + return NULL; + return value; +} + + PyDoc_STRVAR(Reader_get_next__doc__, "get_next([skip]) -> dict\n\n" "Return dictionary of the next log entry. Optional skip value will\n" @@ -285,23 +352,9 @@ static PyObject* Reader_get_next(Reader *self, PyObject *args) SD_JOURNAL_FOREACH_DATA(self->j, msg, msg_len) { PyObject _cleanup_Py_DECREF_ *key = NULL, *value = NULL; - const char *delim_ptr; - - delim_ptr = memchr(msg, '=', msg_len); - if (!delim_ptr) { - PyErr_SetString(PyExc_OSError, - "journal gave us a field without '='"); - goto error; - } - - key = unicode_FromStringAndSize(msg, delim_ptr - (const char*) msg); - if (!key) - goto error; - value = PyBytes_FromStringAndSize( - delim_ptr + 1, - (const char*) msg + msg_len - (delim_ptr + 1) ); - if (!value) + r = extract(msg, msg_len, &key, &value); + if (r < 0) goto error; if (PyDict_Contains(dict, key)) { @@ -336,6 +389,7 @@ static PyObject* Reader_get_next(Reader *self, PyObject *args) } return dict; + error: Py_DECREF(dict); return NULL; @@ -724,6 +778,9 @@ static PyObject* Reader_query_unique(Reader *self, PyObject *args) PyDoc_STRVAR(Reader_get_catalog__doc__, "get_catalog() -> str\n\n" "Retrieve a message catalog entry for the current journal entry.\n" + "Will throw IndexError if the entry has no MESSAGE_ID\n" + "and KeyError is the id is specified, but hasn't been found\n" + "in the catalog.\n\n" "Wraps man:sd_journal_get_catalog(3)."); static PyObject* Reader_get_catalog(Reader *self, PyObject *args) { @@ -736,7 +793,22 @@ static PyObject* Reader_get_catalog(Reader *self, PyObject *args) Py_BEGIN_ALLOW_THREADS r = sd_journal_get_catalog(self->j, &msg); Py_END_ALLOW_THREADS - if (set_error(r, NULL, NULL)) + if (r == -ENOENT) { + const void* mid; + size_t mid_len; + + r = sd_journal_get_data(self->j, "MESSAGE_ID", &mid, &mid_len); + if (r == 0) { + const int l = sizeof("MESSAGE_ID"); + assert(mid_len > l); + PyErr_Format(PyExc_KeyError, "%.*s", (int) mid_len - l, + (const char*) mid + l); + } else if (r == -ENOENT) + PyErr_SetString(PyExc_IndexError, "no MESSAGE_ID field"); + else + set_error(r, NULL, NULL); + return NULL; + } else if (set_error(r, NULL, NULL)) return NULL; return unicode_FromString(msg); @@ -837,6 +909,7 @@ static PyMethodDef Reader_methods[] = { {"__enter__", (PyCFunction) Reader___enter__, METH_NOARGS, Reader___enter____doc__}, {"__exit__", (PyCFunction) Reader___exit__, METH_VARARGS, Reader___exit____doc__}, {"next", (PyCFunction) Reader_next, METH_VARARGS, Reader_next__doc__}, + {"get", (PyCFunction) Reader_get, METH_VARARGS, Reader_get__doc__}, {"get_next", (PyCFunction) Reader_get_next, METH_VARARGS, Reader_get_next__doc__}, {"get_previous", (PyCFunction) Reader_get_previous, METH_VARARGS, Reader_get_previous__doc__}, {"get_realtime", (PyCFunction) Reader_get_realtime, METH_NOARGS, Reader_get_realtime__doc__}, @@ -899,7 +972,7 @@ static PyTypeObject ReaderType = { }; static PyMethodDef methods[] = { - { "get_catalog", get_catalog, METH_VARARGS, get_catalog__doc__}, + { "_get_catalog", get_catalog, METH_VARARGS, get_catalog__doc__}, { NULL, NULL, 0, NULL } /* Sentinel */ }; diff --git a/src/python-systemd/docs/journal.rst b/src/python-systemd/docs/journal.rst index 9dc495ffdb..08756b99be 100644 --- a/src/python-systemd/docs/journal.rst +++ b/src/python-systemd/docs/journal.rst @@ -23,6 +23,9 @@ Accessing the Journal .. automethod:: __init__ +.. autofunction:: _get_catalog +.. autofunction:: get_catalog + .. autoclass:: Monotonic .. autoattribute:: systemd.journal.DEFAULT_CONVERTERS diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index a522aecc70..c918c439b5 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -35,7 +35,7 @@ from syslog import (LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, from ._journal import sendv, stream_fd from ._reader import (_Reader, NOP, APPEND, INVALIDATE, LOCAL_ONLY, RUNTIME_ONLY, SYSTEM_ONLY, - get_catalog) + _get_catalog) from . import id128 as _id128 if _sys.version_info >= (3,): @@ -137,6 +137,9 @@ class Reader(_Reader): the conversion fails with a ValueError, unconverted bytes object will be returned. (Note that ValueEror is a superclass of UnicodeDecodeError). + + Reader implements the context manager protocol: the journal + will be closed when exiting the block. """ super(Reader, self).__init__(flags, path) if _sys.version_info >= (3,3): @@ -293,6 +296,11 @@ class Reader(_Reader): self.add_match(_MACHINE_ID=machineid) +def get_catalog(mid): + if isinstance(mid, _uuid.UUID): + mid = mid.get_hex() + return _get_catalog(mid) + def _make_line(field, value): if isinstance(value, bytes): return field.encode('utf-8') + b'=' + value -- cgit v1.2.1 From 72536eb73674883f0c8522a241ecd86c032665db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 21 Mar 2013 22:47:32 -0400 Subject: man/shutdown: /etc/nologin is called /run/nologin now --- man/shutdown.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/man/shutdown.xml b/man/shutdown.xml index d54fcb25ab..570383319b 100644 --- a/man/shutdown.xml +++ b/man/shutdown.xml @@ -80,7 +80,7 @@ If the time argument is used, 5 minutes before the system goes down the - /etc/nologin file is created to + /run/nologin file is created to ensure that further logins shall not be allowed. -- cgit v1.2.1 From 6c142648aaced56ab681fcc97a71b06d588122a9 Mon Sep 17 00:00:00 2001 From: "Jan Alexander Steffens (heftig)" Date: Wed, 20 Mar 2013 21:32:05 +0100 Subject: Fix vacuum logic error The vacuum code used to stop vacuuming after one deletion, even when max_use was still exceeded. Also make usage a uint64_t, as the code already pretends it is one. Signed-off-by: Jan Alexander Steffens (heftig) --- src/journal/journal-vacuum.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/journal/journal-vacuum.c b/src/journal/journal-vacuum.c index 731f6c770f..4a3a5a9e63 100644 --- a/src/journal/journal-vacuum.c +++ b/src/journal/journal-vacuum.c @@ -36,7 +36,7 @@ #include "util.h" struct vacuum_info { - off_t usage; + uint64_t usage; char *filename; uint64_t realtime; @@ -293,7 +293,7 @@ int journal_directory_vacuum( if (unlinkat(dirfd(d), list[i].filename, 0) >= 0) { log_debug("Deleted archived journal %s/%s.", directory, list[i].filename); - if ((uint64_t) list[i].usage > sum) + if (list[i].usage < sum) sum -= list[i].usage; else sum = 0; -- cgit v1.2.1 From e2b1eb2661e95c8e3d03c5f7183a234fea990b68 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 04:40:05 +0100 Subject: main: don't mount cgroup controller unless PID == 1 This completes c1dae1b3c9729fb8ab749dd4e2dad07e0fad7ed8 in a way. --- src/core/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/main.c b/src/core/main.c index 01a6d41fb4..21c0d274c6 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1582,7 +1582,7 @@ int main(int argc, char *argv[]) { if (getpid() == 1) install_crash_handler(); - if (geteuid() == 0 && !getenv("SYSTEMD_SKIP_API_MOUNTS")) { + if (getpid() == 1) { r = mount_cgroup_controllers(arg_join_controllers); if (r < 0) goto finish; -- cgit v1.2.1 From db813c2a9199d694f8e97618889425a2401524d6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 04:42:26 +0100 Subject: main: use strv_find() where we can --- src/core/main.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/core/main.c b/src/core/main.c index 21c0d274c6..05f0803b8b 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1310,19 +1310,13 @@ int main(int argc, char *argv[]) { /* Determine if this is a reexecution or normal bootup. We do * the full command line parsing much later, so let's just * have a quick peek here. */ - for (j = 1; j < argc; j++) - if (streq(argv[j], "--deserialize")) { - skip_setup = true; - break; - } + if (strv_find(argv+1, "--deserialize")) + skip_setup = true; /* If we have switched root, do all the special setup * things */ - for (j = 1; j < argc; j++) - if (streq(argv[j], "--switched-root")) { - skip_setup = false; - break; - } + if (strv_find(argv+1, "--switched-root")) + skip_setup = false; /* If we get started via the /sbin/init symlink then we are called 'init'. After a subsequent reexecution we are then -- cgit v1.2.1 From 3cbb76ee3469998771b4e9c7ee85d8d7407a2f5a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 04:42:48 +0100 Subject: mount: mount all cgroup controllers in containers, too --- src/core/mount-setup.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index 6140f56d83..fe50fb19da 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -315,6 +315,7 @@ int mount_cgroup_controllers(char ***join_controllers) { p.type = "cgroup"; p.options = options; p.flags = MS_NOSUID|MS_NOEXEC|MS_NODEV; + p.mode = MNT_IN_CONTAINER; r = mount_one(&p, true); free(controller); -- cgit v1.2.1 From a652755d2e8c2ddb31eb281f4585a3edbb333338 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 05:58:47 +0100 Subject: bus: implement object handler registry --- src/libsystemd-bus/bus-internal.h | 9 ++ src/libsystemd-bus/sd-bus.c | 223 ++++++++++++++++++++++++++++++++++--- src/libsystemd-bus/sd-bus.h | 16 ++- src/libsystemd-bus/test-bus-chat.c | 58 ++++++++++ 4 files changed, 285 insertions(+), 21 deletions(-) diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index 56514aebbc..82f60849d5 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -48,6 +48,14 @@ struct filter_callback { LIST_FIELDS(struct filter_callback, callbacks); }; +struct object_callback { + sd_message_handler_t callback; + void *userdata; + + char *path; + bool is_fallback; +}; + enum bus_state { BUS_OPENING, BUS_AUTHENTICATING, @@ -81,6 +89,7 @@ struct sd_bus { Prioq *reply_callbacks_prioq; Hashmap *reply_callbacks; LIST_HEAD(struct filter_callback, filter_callbacks); + Hashmap *object_callbacks; union { struct sockaddr sa; diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 73774ba308..88f17a2600 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -40,6 +40,7 @@ static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec); static void bus_free(sd_bus *b) { struct filter_callback *f; + struct object_callback *c; unsigned i; assert(b); @@ -68,6 +69,13 @@ static void bus_free(sd_bus *b) { free(f); } + while ((c = hashmap_steal_first(b->object_callbacks))) { + free(c->path); + free(c); + } + + hashmap_free(b->object_callbacks); + free(b); } @@ -1552,6 +1560,43 @@ static int process_timeout(sd_bus *bus) { return r < 0 ? r : 1; } +static int process_reply(sd_bus *bus, sd_bus_message *m) { + struct reply_callback *c; + int r; + + assert(bus); + assert(m); + + if (m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_RETURN && + m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_ERROR) + return 0; + + c = hashmap_remove(bus->reply_callbacks, &m->reply_serial); + if (!c) + return 0; + + if (c->timeout != 0) + prioq_remove(bus->reply_callbacks_prioq, c, &c->prioq_idx); + + r = c->callback(bus, 0, m, c->userdata); + free(c); + + return r; +} + +static int process_filter(sd_bus *bus, sd_bus_message *m) { + struct filter_callback *l; + int r; + + LIST_FOREACH(callbacks, l, bus->filter_callbacks) { + r = l->callback(bus, 0, m, l->userdata); + if (r != 0) + return r; + } + + return 0; +} + static int process_builtin(sd_bus *bus, sd_bus_message *m) { _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; int r; @@ -1603,36 +1648,90 @@ static int process_builtin(sd_bus *bus, sd_bus_message *m) { return 1; } -static int process_message(sd_bus *bus, sd_bus_message *m) { - struct filter_callback *l; +static int process_object(sd_bus *bus, sd_bus_message *m) { + _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_INIT; + _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; + struct object_callback *c; + char *p; int r; + bool found = false; assert(bus); assert(m); - if (m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_RETURN || m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_ERROR) { - struct reply_callback *c; + if (m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) + return 0; - c = hashmap_remove(bus->reply_callbacks, &m->reply_serial); - if (c) { - if (c->timeout != 0) - prioq_remove(bus->reply_callbacks_prioq, c, &c->prioq_idx); + if (hashmap_isempty(bus->object_callbacks)) + return 0; - r = c->callback(bus, 0, m, c->userdata); - free(c); + c = hashmap_get(bus->object_callbacks, m->path); + if (c) { + r = c->callback(bus, 0, m, c->userdata); + if (r != 0) + return r; + + found = true; + } + /* Look for fallback prefixes */ + p = strdupa(m->path); + for (;;) { + char *e; + + e = strrchr(p, '/'); + if (e == p || !e) + break; + + *e = 0; + + c = hashmap_get(bus->object_callbacks, p); + if (c && c->is_fallback) { + r = c->callback(bus, 0, m, c->userdata); if (r != 0) return r; + + found = true; } } - LIST_FOREACH(callbacks, l, bus->filter_callbacks) { - r = l->callback(bus, 0, m, l->userdata); - if (r != 0) - return r; - } + if (!found) + return 0; + + sd_bus_error_set(&error, + "org.freedesktop.DBus.Error.UnknownMethod", + "Unknown method '%s' or interface '%s'.", m->member, m->interface); + + r = sd_bus_message_new_method_error(bus, m, &error, &reply); + if (r < 0) + return r; + + r = sd_bus_send(bus, reply, NULL); + if (r < 0) + return r; - return process_builtin(bus, m); + return 1; +} + +static int process_message(sd_bus *bus, sd_bus_message *m) { + int r; + + assert(bus); + assert(m); + + r = process_reply(bus, m); + if (r != 0) + return r; + + r = process_filter(bus, m); + if (r != 0) + return r; + + r = process_builtin(bus, m); + if (r != 0) + return r; + + return process_object(bus, m); } int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { @@ -1874,3 +1973,95 @@ int sd_bus_remove_filter(sd_bus *bus, sd_message_handler_t callback, void *userd return 0; } + +static int bus_add_object( + sd_bus *bus, + bool fallback, + const char *path, + sd_message_handler_t callback, + void *userdata) { + + struct object_callback *c; + int r; + + if (!bus) + return -EINVAL; + if (!path) + return -EINVAL; + if (!callback) + return -EINVAL; + + r = hashmap_ensure_allocated(&bus->object_callbacks, string_hash_func, string_compare_func); + if (r < 0) + return r; + + c = new(struct object_callback, 1); + if (!c) + return -ENOMEM; + + c->path = strdup(path); + if (!path) { + free(c); + return -ENOMEM; + } + + c->callback = callback; + c->userdata = userdata; + c->is_fallback = fallback; + + r = hashmap_put(bus->object_callbacks, c->path, c); + if (r < 0) { + free(c->path); + free(c); + return r; + } + + return 0; +} + +static int bus_remove_object( + sd_bus *bus, + bool fallback, + const char *path, + sd_message_handler_t callback, + void *userdata) { + + struct object_callback *c; + + if (!bus) + return -EINVAL; + if (!path) + return -EINVAL; + if (!callback) + return -EINVAL; + + c = hashmap_get(bus->object_callbacks, path); + if (!c) + return 0; + + if (c->callback != callback || c->userdata != userdata || c->is_fallback != fallback) + return 0; + + assert_se(c == hashmap_remove(bus->object_callbacks, c->path)); + + free(c->path); + free(c); + + return 1; +} + +int sd_bus_add_object(sd_bus *bus, const char *path, sd_message_handler_t callback, void *userdata) { + return bus_add_object(bus, false, path, callback, userdata); +} + +int sd_bus_remove_object(sd_bus *bus, const char *path, sd_message_handler_t callback, void *userdata) { + return bus_remove_object(bus, false, path, callback, userdata); +} + +int sd_bus_add_fallback(sd_bus *bus, const char *prefix, sd_message_handler_t callback, void *userdata) { + return bus_add_object(bus, true, prefix, callback, userdata); +} + +int sd_bus_remove_fallback(sd_bus *bus, const char *prefix, sd_message_handler_t callback, void *userdata) { + return bus_remove_object(bus, true, prefix, callback, userdata); +} diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index 73710d1511..b82caec5f6 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -28,15 +28,15 @@ #include "sd-bus-protocol.h" /* TODO: - * * - make unix fd passing work - * - add page donation logic - * - api for appending/reading fixed arrays - * - merge busctl into systemctl or so? - * - add object handlers * - implicitly add stub introspection calls * - implement unix exec protocol * - server side + * + * Later: + * - add page donation logic + * - api for appending/reading fixed arrays + * - merge busctl into systemctl or so? */ typedef struct sd_bus sd_bus; @@ -80,6 +80,12 @@ int sd_bus_flush(sd_bus *bus); int sd_bus_add_filter(sd_bus *bus, sd_message_handler_t callback, void *userdata); int sd_bus_remove_filter(sd_bus *bus, sd_message_handler_t callback, void *userdata); +int sd_bus_add_object(sd_bus *bus, const char *path, sd_message_handler_t callback, void *userdata); +int sd_bus_remove_object(sd_bus *bus, const char *path, sd_message_handler_t callback, void *userdata); + +int sd_bus_add_fallback(sd_bus *bus, const char *prefix, sd_message_handler_t callback, void *userdata); +int sd_bus_remove_fallback(sd_bus *bus, const char *prefix, sd_message_handler_t callback, void *userdata); + /* Message object */ int sd_bus_message_new_signal(sd_bus *bus, const char *path, const char *interface, const char *member, sd_bus_message **m); diff --git a/src/libsystemd-bus/test-bus-chat.c b/src/libsystemd-bus/test-bus-chat.c index 23b00c7201..92fdd13faf 100644 --- a/src/libsystemd-bus/test-bus-chat.c +++ b/src/libsystemd-bus/test-bus-chat.c @@ -31,6 +31,37 @@ #include "bus-message.h" #include "bus-error.h" +static int object_callback(sd_bus *bus, int error, sd_bus_message *m, void *userdata) { + int r; + + assert(bus); + + if (error != 0) + return 0; + + if (sd_bus_message_is_method_call(m, "org.object.test", "Foobar")) { + _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; + + log_info("Invoked Foobar() on %s", sd_bus_message_get_path(m)); + + r = sd_bus_message_new_method_return(bus, m, &reply); + if (r < 0) { + log_error("Failed to allocate return: %s", strerror(-r)); + return r; + } + + r = sd_bus_send(bus, reply, NULL); + if (r < 0) { + log_error("Failed to send reply: %s", strerror(-r)); + return r; + } + + return 1; + } + + return 0; +} + static int server_init(sd_bus **_bus) { sd_bus *bus = NULL; sd_id128_t id; @@ -67,6 +98,12 @@ static int server_init(sd_bus **_bus) { goto fail; } + r = sd_bus_add_fallback(bus, "/foo/bar", object_callback, NULL); + if (r < 0) { + log_error("Failed to add object: %s", strerror(-r)); + goto fail; + } + *_bus = bus; return 0; @@ -294,6 +331,27 @@ static void* client2(void*p) { goto finish; } + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.systemd.test", + "/foo/bar/waldo/piep", + "org.object.test", + "Foobar", + &m); + if (r < 0) { + log_error("Failed to allocate method call: %s", strerror(-r)); + goto finish; + } + + r = sd_bus_send(bus, m, NULL); + if (r < 0) { + log_error("Failed to issue method call: %s", bus_error_message(&error, -r)); + goto finish; + } + + sd_bus_message_unref(m); + m = NULL; + r = sd_bus_message_new_method_call( bus, "org.freedesktop.systemd.test", -- cgit v1.2.1 From 8e70580bb07ae46dc0b0bf377de6333540668acc Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 06:01:04 +0100 Subject: cgroup: minor optimization --- src/core/cgroup.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/core/cgroup.c b/src/core/cgroup.c index 4790a09ff2..8fb2952c16 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -438,7 +438,7 @@ int cgroup_bonding_get(Manager *m, const char *cgroup, CGroupBonding **bonding) return 1; } - p = strdup(cgroup); + p = strdupa(cgroup); if (!p) return -ENOMEM; @@ -446,8 +446,7 @@ int cgroup_bonding_get(Manager *m, const char *cgroup, CGroupBonding **bonding) char *e; e = strrchr(p, '/'); - if (!e || e == p) { - free(p); + if (e == p || !e) { *bonding = NULL; return 0; } @@ -456,7 +455,6 @@ int cgroup_bonding_get(Manager *m, const char *cgroup, CGroupBonding **bonding) b = hashmap_get(m->cgroup_bondings, p); if (b) { - free(p); *bonding = b; return 1; } -- cgit v1.2.1 From 4468addca6d01a0d2d154371dd72f54307a9c786 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 17:44:15 +0100 Subject: journalctl: give a nice hint about group membership based on ACLs of /var/log/journal If we notice that we unprivileged and not in any of the groups which have access to /var/log/journal, print a nice message about which groups do. This checks and prints all groups that are in the default ACL for /var/log/journal, which is not necessarily correct for all journal files, but pretty close. --- src/journal/journalctl.c | 91 ++++++++++++++++++++++++++++++++++++++++++++++-- src/shared/strv.c | 31 +++++++++++------ src/shared/strv.h | 1 + src/shared/util.c | 36 +++++++++++++++---- src/shared/util.h | 2 ++ 5 files changed, 143 insertions(+), 18 deletions(-) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index ddadc21338..4c288f3334 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -35,6 +35,10 @@ #include #include +#ifdef HAVE_ACL +#include +#endif + #include #include "log.h" @@ -881,13 +885,96 @@ static int verify(sd_journal *j) { static int access_check(void) { #ifdef HAVE_ACL + /* If /var/log/journal doesn't even exist, unprivileged users have no access at all */ if (access("/var/log/journal", F_OK) < 0 && geteuid() != 0 && in_group("systemd-journal") <= 0) { log_error("Unprivileged users can't see messages unless persistent log storage is enabled. Users in the group 'systemd-journal' can always see messages."); return -EACCES; } - if (!arg_quiet && geteuid() != 0 && in_group("systemd-journal") <= 0) - log_warning("Showing user generated messages only. Users in the group 'systemd-journal' can see all messages. Pass -q to turn this notice off."); + /* If /var/log/journal exists, try to pring a nice notice if the user lacks access to it */ + if (!arg_quiet && geteuid() != 0) { + _cleanup_strv_free_ char **g = NULL; + bool have_access; + acl_t acl; + int r; + + have_access = in_group("systemd-journal") > 0; + if (!have_access) { + + /* Let's enumerate all groups from the default + * ACL of the directory, which generally + * should allow access to most journal + * files too */ + + acl = acl_get_file("/var/log/journal/", ACL_TYPE_DEFAULT); + if (acl) { + acl_entry_t entry; + + r = acl_get_entry(acl, ACL_FIRST_ENTRY, &entry); + while (r > 0) { + acl_tag_t tag; + gid_t *gid; + char *name; + + r = acl_get_tag_type(entry, &tag); + if (r < 0) + break; + + if (tag != ACL_GROUP) + goto next; + + gid = acl_get_qualifier(entry); + if (!gid) + break; + + if (in_gid(*gid) > 0) { + have_access = true; + break; + } + + name = gid_to_name(*gid); + if (!name) { + acl_free(acl); + return log_oom(); + } + + r = strv_push(&g, name); + if (r < 0) { + free(name); + acl_free(acl); + return log_oom(); + } + + next: + r = acl_get_entry(acl, ACL_NEXT_ENTRY, &entry); + } + + acl_free(acl); + } + } + + if (!have_access) { + + if (strv_isempty(g)) + log_notice("Hint: You are currently not seeing messages from other users and the system. Users in the group 'systemd-journal' can see all messages. Pass -q to turn this notice off."); + else { + _cleanup_free_ char *s = NULL; + + r = strv_extend(&g, "systemd-journal"); + if (r < 0) + return log_oom(); + + strv_sort(g); + strv_uniq(g); + + s = strv_join(g, "', '"); + if (!s) + return log_oom(); + + log_notice("Hint: You are currently not seeing messages from other users and the system. Users in the groups '%s' can see all messages. Pass -q to turn this notice off.", s); + } + } + } #else if (geteuid() != 0 && in_group("systemd-journal") <= 0) { log_error("No access to messages. Only users in the group 'systemd-journal' can see messages."); diff --git a/src/shared/strv.c b/src/shared/strv.c index 7bcfabbf1a..e57e0ee7bf 100644 --- a/src/shared/strv.c +++ b/src/shared/strv.c @@ -387,32 +387,43 @@ fail: return NULL; } -int strv_extend(char ***l, const char *value) { +int strv_push(char ***l, char *value) { char **c; - char *v; unsigned n; if (!value) return 0; - v = strdup(value); - if (!v) - return -ENOMEM; - n = strv_length(*l); c = realloc(*l, sizeof(char*) * (n + 2)); - if (!c) { - free(v); + if (!c) return -ENOMEM; - } - c[n] = v; + c[n] = value; c[n+1] = NULL; *l = c; return 0; } +int strv_extend(char ***l, const char *value) { + char *v; + int r; + + if (!value) + return 0; + + v = strdup(value); + if (!v) + return -ENOMEM; + + r = strv_push(l, v); + if (r < 0) + free(v); + + return r; +} + char **strv_uniq(char **l) { char **i; diff --git a/src/shared/strv.h b/src/shared/strv.h index 49058f8df8..910d15337f 100644 --- a/src/shared/strv.h +++ b/src/shared/strv.h @@ -41,6 +41,7 @@ char **strv_merge(char **a, char **b); char **strv_merge_concat(char **a, char **b, const char *suffix); char **strv_append(char **l, const char *s); int strv_extend(char ***l, const char *value); +int strv_push(char ***l, char *value); char **strv_remove(char **l, const char *s); char **strv_remove_prefix(char **l, const char *s); diff --git a/src/shared/util.c b/src/shared/util.c index 872f6f7371..020b75d0f2 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -4190,6 +4190,23 @@ char* uid_to_name(uid_t uid) { return r; } +char* gid_to_name(gid_t gid) { + struct group *p; + char *r; + + if (gid == 0) + return strdup("root"); + + p = getgrgid(gid); + if (p) + return strdup(p->gr_name); + + if (asprintf(&r, "%lu", (unsigned long) gid) < 0) + return NULL; + + return r; +} + int get_group_creds(const char **groupname, gid_t *gid) { struct group *g; gid_t id; @@ -4228,14 +4245,10 @@ int get_group_creds(const char **groupname, gid_t *gid) { return 0; } -int in_group(const char *name) { - gid_t gid, *gids; +int in_gid(gid_t gid) { + gid_t *gids; int ngroups_max, r, i; - r = get_group_creds(&name, &gid); - if (r < 0) - return r; - if (getgid() == gid) return 1; @@ -4258,6 +4271,17 @@ int in_group(const char *name) { return 0; } +int in_group(const char *name) { + int r; + gid_t gid; + + r = get_group_creds(&name, &gid); + if (r < 0) + return r; + + return in_gid(gid); +} + int glob_exists(const char *path) { glob_t g; int r, k; diff --git a/src/shared/util.h b/src/shared/util.h index f75c66bb83..7a38421007 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -429,9 +429,11 @@ int socket_from_display(const char *display, char **path); int get_user_creds(const char **username, uid_t *uid, gid_t *gid, const char **home, const char **shell); int get_group_creds(const char **groupname, gid_t *gid); +int in_gid(gid_t gid); int in_group(const char *name); char* uid_to_name(uid_t uid); +char* gid_to_name(gid_t gid); int glob_exists(const char *path); -- cgit v1.2.1 From aa3c5cf8eefa36a3ae727fe136587381e590d333 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 17:59:49 +0100 Subject: util: be more picky when validating hostnames No longer allow dots at the beginning or end of host names, Or double dots. https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1152187/comments/14 --- src/shared/util.c | 20 +++++++++++++++++--- src/test/test-util.c | 14 ++++++++++++++ 2 files changed, 31 insertions(+), 3 deletions(-) diff --git a/src/shared/util.c b/src/shared/util.c index 020b75d0f2..bc6e035c60 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -3773,13 +3773,27 @@ static bool hostname_valid_char(char c) { bool hostname_is_valid(const char *s) { const char *p; + bool dot; if (isempty(s)) return false; - for (p = s; *p; p++) - if (!hostname_valid_char(*p)) - return false; + for (p = s, dot = true; *p; p++) { + if (*p == '.') { + if (dot) + return false; + + dot = true; + } else { + if (!hostname_valid_char(*p)) + return false; + + dot = false; + } + } + + if (dot) + return false; if (p-s > HOST_NAME_MAX) return false; diff --git a/src/test/test-util.c b/src/test/test-util.c index cd017ef6fc..08310c83ca 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -325,6 +325,19 @@ static void test_bus_path_escape(void) { test_bus_path_escape_one(":1", "_3a1"); } +static void test_hostname_is_valid(void) { + assert(hostname_is_valid("foobar")); + assert(hostname_is_valid("foobar.com")); + assert(!hostname_is_valid("fööbar")); + assert(!hostname_is_valid("")); + assert(!hostname_is_valid(".")); + assert(!hostname_is_valid("..")); + assert(!hostname_is_valid("foobar.")); + assert(!hostname_is_valid(".foobar")); + assert(!hostname_is_valid("foo..bar")); + assert(!hostname_is_valid("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")); +} + int main(int argc, char *argv[]) { test_streq_ptr(); test_first_word(); @@ -349,6 +362,7 @@ int main(int argc, char *argv[]) { test_default_term_for_tty(); test_memdup_multiply(); test_bus_path_escape(); + test_hostname_is_valid(); return 0; } -- cgit v1.2.1 From 737732a41e5702540f51c760bebd3b8152c04727 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 18:01:26 +0100 Subject: hostnamed: pretty_string_is_safe() already exists in string_has_cc(), so use that --- src/hostname/hostnamed.c | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/src/hostname/hostnamed.c b/src/hostname/hostnamed.c index 25e154b224..859b5a0784 100644 --- a/src/hostname/hostnamed.c +++ b/src/hostname/hostnamed.c @@ -159,19 +159,6 @@ static bool valid_chassis(const char *chassis) { chassis); } -static bool pretty_string_is_safe(const char *p) { - const char *t; - - assert(p); - - for (t = p; *t; t++) { - if (*t >= '\0' && *t < ' ') - return false; - } - - return true; -} - static const char* fallback_chassis(void) { int r; char *type; @@ -566,7 +553,7 @@ static DBusHandlerResult hostname_message_handler( * safe than sorry */ if (k == PROP_ICON_NAME && !filename_is_safe(name)) return bus_send_error_reply(connection, message, NULL, -EINVAL); - if (k == PROP_PRETTY_HOSTNAME && !pretty_string_is_safe(name)) + if (k == PROP_PRETTY_HOSTNAME && string_has_cc(name)) return bus_send_error_reply(connection, message, NULL, -EINVAL); if (k == PROP_CHASSIS && !valid_chassis(name)) return bus_send_error_reply(connection, message, NULL, -EINVAL); -- cgit v1.2.1 From 478c82693c386e7a6e8e4b37cc99fb19b12e7186 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 22 Mar 2013 14:35:26 +0000 Subject: build-sys: move acl searching code into libsystemd-acl This loop over acls is a bit too much to keep inside of another loop. --- Makefile.am | 8 ++++++- src/journal/journalctl.c | 53 ++++-------------------------------------- src/shared/acl-util.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++- src/shared/acl-util.h | 3 +++ 4 files changed, 74 insertions(+), 50 deletions(-) diff --git a/Makefile.am b/Makefile.am index 969f85adfe..93583a686a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -793,7 +793,8 @@ libsystemd_acl_la_CFLAGS = \ $(ACL_CFLAGS) libsystemd_acl_la_LIBADD = \ - $(ACL_LIBS) + $(ACL_LIBS) \ + libsystemd-shared.la endif # ------------------------------------------------------------------------------ @@ -2503,6 +2504,11 @@ journalctl_LDADD = \ libsystemd-id128-internal.la \ libsystemd-logs.la +if HAVE_ACL +journalctl_LDADD += \ + libsystemd-acl.la +endif + if HAVE_QRENCODE journalctl_SOURCES += \ src/journal/journal-qrcode.c \ diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 4c288f3334..8543adfb8a 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -37,6 +37,7 @@ #ifdef HAVE_ACL #include +#include "acl-util.h" #endif #include @@ -895,62 +896,18 @@ static int access_check(void) { if (!arg_quiet && geteuid() != 0) { _cleanup_strv_free_ char **g = NULL; bool have_access; - acl_t acl; int r; have_access = in_group("systemd-journal") > 0; - if (!have_access) { + if (!have_access) { /* Let's enumerate all groups from the default * ACL of the directory, which generally * should allow access to most journal * files too */ - - acl = acl_get_file("/var/log/journal/", ACL_TYPE_DEFAULT); - if (acl) { - acl_entry_t entry; - - r = acl_get_entry(acl, ACL_FIRST_ENTRY, &entry); - while (r > 0) { - acl_tag_t tag; - gid_t *gid; - char *name; - - r = acl_get_tag_type(entry, &tag); - if (r < 0) - break; - - if (tag != ACL_GROUP) - goto next; - - gid = acl_get_qualifier(entry); - if (!gid) - break; - - if (in_gid(*gid) > 0) { - have_access = true; - break; - } - - name = gid_to_name(*gid); - if (!name) { - acl_free(acl); - return log_oom(); - } - - r = strv_push(&g, name); - if (r < 0) { - free(name); - acl_free(acl); - return log_oom(); - } - - next: - r = acl_get_entry(acl, ACL_NEXT_ENTRY, &entry); - } - - acl_free(acl); - } + r = search_acl_groups(&g, "/var/log/journal/", &have_access); + if (r < 0) + return r; } if (!have_access) { diff --git a/src/shared/acl-util.c b/src/shared/acl-util.c index d1eb6f2268..48bb12f46b 100644 --- a/src/shared/acl-util.c +++ b/src/shared/acl-util.c @@ -3,7 +3,7 @@ /*** This file is part of systemd. - Copyright 2011 Lennart Poettering + Copyright 2011,2013 Lennart Poettering systemd is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -26,6 +26,8 @@ #include #include "acl-util.h" +#include "util.h" +#include "strv.h" int acl_find_uid(acl_t acl, uid_t uid, acl_entry_t *entry) { acl_entry_t i; @@ -66,3 +68,59 @@ int acl_find_uid(acl_t acl, uid_t uid, acl_entry_t *entry) { return 0; } + +int search_acl_groups(char*** dst, const char* path, bool* belong) { + acl_t acl; + + assert(path); + assert(belong); + + acl = acl_get_file(path, ACL_TYPE_DEFAULT); + if (acl) { + acl_entry_t entry; + int r; + + r = acl_get_entry(acl, ACL_FIRST_ENTRY, &entry); + while (r > 0) { + acl_tag_t tag; + gid_t *gid; + char *name; + + r = acl_get_tag_type(entry, &tag); + if (r < 0) + break; + + if (tag != ACL_GROUP) + goto next; + + gid = acl_get_qualifier(entry); + if (!gid) + break; + + if (in_gid(*gid) > 0) { + *belong = true; + break; + } + + name = gid_to_name(*gid); + if (!name) { + acl_free(acl); + return log_oom(); + } + + r = strv_push(dst, name); + if (r < 0) { + free(name); + acl_free(acl); + return log_oom(); + } + + next: + r = acl_get_entry(acl, ACL_NEXT_ENTRY, &entry); + } + + acl_free(acl); + } + + return 0; +} diff --git a/src/shared/acl-util.h b/src/shared/acl-util.h index 31fbbcd510..23090d9984 100644 --- a/src/shared/acl-util.h +++ b/src/shared/acl-util.h @@ -21,4 +21,7 @@ along with systemd; If not, see . ***/ +#include + int acl_find_uid(acl_t acl, uid_t uid, acl_entry_t *entry); +int search_acl_groups(char*** dst, const char* path, bool* belong); -- cgit v1.2.1 From 6fe391c56d3f4231576ccc9d62d2000f37640a92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 11 Mar 2013 18:03:13 -0400 Subject: journalctl: be smarter about journal error checks There are many ways in which we can get those checks wrong, so it is better to warn and then error out on a real access failure. The error messages are wrapped to <80 lines, because their primary use is to be displayed in the terminal, and it is easier to read them this way. Reading them in the journal can be a bit trickier, but this is a bug in logs-show.c. --- src/journal/journal-internal.h | 3 + src/journal/journalctl.c | 136 ++++++++++++++++++++++++++++------------- src/journal/sd-journal.c | 54 ++++++++++++---- 3 files changed, 136 insertions(+), 57 deletions(-) diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h index 97de0e75ff..bc9e44d42d 100644 --- a/src/journal/journal-internal.h +++ b/src/journal/journal-internal.h @@ -30,6 +30,7 @@ #include "journal-def.h" #include "list.h" #include "hashmap.h" +#include "set.h" #include "journal-file.h" typedef struct Match Match; @@ -123,6 +124,8 @@ struct sd_journal { bool on_network; size_t data_threshold; + + Set *errors; }; char *journal_make_match_string(sd_journal *j); diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 8543adfb8a..91dbde3ba1 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -883,63 +883,111 @@ static int verify(sd_journal *j) { return r; } -static int access_check(void) { - #ifdef HAVE_ACL - /* If /var/log/journal doesn't even exist, unprivileged users have no access at all */ - if (access("/var/log/journal", F_OK) < 0 && geteuid() != 0 && in_group("systemd-journal") <= 0) { - log_error("Unprivileged users can't see messages unless persistent log storage is enabled. Users in the group 'systemd-journal' can always see messages."); - return -EACCES; +static int access_check_var_log_journal(sd_journal *j) { + _cleanup_strv_free_ char **g = NULL; + bool have_access; + int r; + + assert(j); + + have_access = in_group("systemd-journal") > 0; + + if (!have_access) { + /* Let's enumerate all groups from the default ACL of + * the directory, which generally should allow access + * to most journal files too */ + r = search_acl_groups(&g, "/var/log/journal/", &have_access); + if (r < 0) + return r; } - /* If /var/log/journal exists, try to pring a nice notice if the user lacks access to it */ - if (!arg_quiet && geteuid() != 0) { - _cleanup_strv_free_ char **g = NULL; - bool have_access; - int r; + if (!have_access) { - have_access = in_group("systemd-journal") > 0; + if (strv_isempty(g)) + log_notice("Hint: You are currently not seeing messages from other users and\n" + "the system. Users in the group 'systemd-journal' can see all messages.\n" + "Pass -q to turn this notice off."); + else { + _cleanup_free_ char *s = NULL; - if (!have_access) { - /* Let's enumerate all groups from the default - * ACL of the directory, which generally - * should allow access to most journal - * files too */ - r = search_acl_groups(&g, "/var/log/journal/", &have_access); + r = strv_extend(&g, "systemd-journal"); if (r < 0) - return r; + return log_oom(); + + strv_sort(g); + strv_uniq(g); + + s = strv_join(g, "', '"); + if (!s) + return log_oom(); + + log_notice("Hint: You are currently not seeing messages from other users and the system.\n" + "Users in the groups '%s' can see all messages.\n" + "Pass -q to turn this notice off.", s); } + } - if (!have_access) { + return 0; +} +#endif - if (strv_isempty(g)) - log_notice("Hint: You are currently not seeing messages from other users and the system. Users in the group 'systemd-journal' can see all messages. Pass -q to turn this notice off."); - else { - _cleanup_free_ char *s = NULL; +static int access_check(sd_journal *j) { + uint64_t eacces = EACCES, *code; + Iterator it; + int r = 0; - r = strv_extend(&g, "systemd-journal"); - if (r < 0) - return log_oom(); + assert(j); + assert(j->errors); + assert(j->files); - strv_sort(g); - strv_uniq(g); + if (set_isempty(j->errors)) { + if (hashmap_isempty(j->files)) + log_info("No journal files were found."); + return 0; + } - s = strv_join(g, "', '"); - if (!s) - return log_oom(); + if (!set_contains(j->errors, &eacces)) { +#ifdef HAVE_ACL + /* If /var/log/journal doesn't even exist, + unprivileged users have no access at all */ + if (access("/var/log/journal", F_OK) < 0 && + geteuid() != 0 && + in_group("systemd-journal") <= 0) { + log_error("Unprivileged users can't see messages unless persistent log storage\n" + "is enabled. Users in the group 'systemd-journal' can always see messages."); + return -EACCES; + } - log_notice("Hint: You are currently not seeing messages from other users and the system. Users in the groups '%s' can see all messages. Pass -q to turn this notice off.", s); - } + /* If /var/log/journal exists, try to pring a nice + notice if the user lacks access to it */ + if (!arg_quiet && geteuid() != 0) { + r = access_check_var_log_journal(j); + if (r < 0) + return r; } - } #else - if (geteuid() != 0 && in_group("systemd-journal") <= 0) { - log_error("No access to messages. Only users in the group 'systemd-journal' can see messages."); - return -EACCES; - } + if (geteuid() != 0 && in_group("systemd-journal") <= 0) + log_error("No access to messages.\n" + "Users in the group 'systemd-journal' can see messages."); #endif + if (hashmap_isempty(j->files)) { + log_error("No journal files were opened, due to insufficient permissions."); + r = -EACCES; + } + } - return 0; + SET_FOREACH(code, j->errors, it) { + int err = -PTR_TO_INT(code); + assert(err > 0); + if (err != EACCES) + log_warning("Error was encountered while opening journal files: %s", + strerror(err)); + } + + log_notice("Hint: run journalctl in debug mode: SYSTEMD_LOG_LEVEL=debug journalct ..."); + + return r; } int main(int argc, char *argv[]) { @@ -987,10 +1035,6 @@ int main(int argc, char *argv[]) { goto finish; } - r = access_check(); - if (r < 0) - return EXIT_FAILURE; - if (arg_directory) r = sd_journal_open_directory(&j, arg_directory, 0); else @@ -1000,6 +1044,10 @@ int main(int argc, char *argv[]) { return EXIT_FAILURE; } + r = access_check(j); + if (r < 0) + return EXIT_FAILURE; + if (arg_action == ACTION_VERIFY) { r = verify(j); goto finish; diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index ef4b9b2242..c62ad811dc 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -49,6 +49,15 @@ #define DEFAULT_DATA_THRESHOLD (64*1024) +/* We return an error here only if we didn't manage to + memorize the real error. */ +static int set_put_error(Set* errors, int r) { + if (r >= 0) + return r; + + return set_put(errors, INT_TO_PTR(r)); +} + static void detach_location(sd_journal *j) { Iterator i; JournalFile *f; @@ -1239,7 +1248,7 @@ static int add_file(sd_journal *j, const char *prefix, const char *filename) { if (hashmap_size(j->files) >= JOURNAL_FILES_MAX) { log_debug("Too many open journal files, not adding %s, ignoring.", path); - return 0; + return set_put_error(j->errors, -ETOOMANYREFS); } r = journal_file_open(path, O_RDONLY, 0, false, false, NULL, j->mmap, NULL, &f); @@ -1380,8 +1389,13 @@ static int add_directory(sd_journal *j, const char *prefix, const char *dirname) if (dirent_is_file_with_suffix(de, ".journal") || dirent_is_file_with_suffix(de, ".journal~")) { r = add_file(j, m->path, de->d_name); - if (r < 0) - log_debug("Failed to add file %s/%s: %s", m->path, de->d_name, strerror(-r)); + if (r < 0) { + log_debug("Failed to add file %s/%s: %s", + m->path, de->d_name, strerror(-r)); + r = set_put_error(j->errors, r); + if (r < 0) + return r; + } } } @@ -1454,9 +1468,13 @@ static int add_root_directory(sd_journal *j, const char *p) { if (dirent_is_file_with_suffix(de, ".journal") || dirent_is_file_with_suffix(de, ".journal~")) { r = add_file(j, m->path, de->d_name); - if (r < 0) - log_debug("Failed to add file %s/%s: %s", m->path, de->d_name, strerror(-r)); - + if (r < 0) { + log_debug("Failed to add file %s/%s: %s", + m->path, de->d_name, strerror(-r)); + r = set_put_error(j->errors, r); + if (r < 0) + return r; + } } else if ((de->d_type == DT_DIR || de->d_type == DT_LNK || de->d_type == DT_UNKNOWN) && sd_id128_from_string(de->d_name, &id) >= 0) { @@ -1495,7 +1513,7 @@ static int remove_directory(sd_journal *j, Directory *d) { } static int add_search_paths(sd_journal *j) { - + int r; const char search_paths[] = "/run/log/journal\0" "/var/log/journal\0"; @@ -1506,8 +1524,11 @@ static int add_search_paths(sd_journal *j) { /* We ignore most errors here, since the idea is to only open * what's actually accessible, and ignore the rest. */ - NULSTR_FOREACH(p, search_paths) - add_root_directory(j, p); + NULSTR_FOREACH(p, search_paths) { + r = add_root_directory(j, p); + if (r < 0) + return set_put_error(j->errors, r); + } return 0; } @@ -1550,7 +1571,8 @@ static sd_journal *journal_new(int flags, const char *path) { j->files = hashmap_new(string_hash_func, string_compare_func); j->directories_by_path = hashmap_new(string_hash_func, string_compare_func); j->mmap = mmap_cache_new(); - if (!j->files || !j->directories_by_path || !j->mmap) + j->errors = set_new(trivial_hash_func, trivial_compare_func); + if (!j->files || !j->directories_by_path || !j->mmap || !j->errors) goto fail; return j; @@ -1607,8 +1629,10 @@ _public_ int sd_journal_open_directory(sd_journal **ret, const char *path, int f return -ENOMEM; r = add_root_directory(j, path); - if (r < 0) + if (r < 0) { + set_put_error(j->errors, r); goto fail; + } *ret = j; return 0; @@ -1650,6 +1674,7 @@ _public_ void sd_journal_close(sd_journal *j) { free(j->path); free(j->unique_field); + set_free(j->errors); free(j); } @@ -1968,8 +1993,11 @@ static void process_inotify_event(sd_journal *j, struct inotify_event *e) { if (e->mask & (IN_CREATE|IN_MOVED_TO|IN_MODIFY|IN_ATTRIB)) { r = add_file(j, d->path, e->name); - if (r < 0) - log_debug("Failed to add file %s/%s: %s", d->path, e->name, strerror(-r)); + if (r < 0) { + log_debug("Failed to add file %s/%s: %s", + d->path, e->name, strerror(-r)); + set_put_error(j->errors, r); + } } else if (e->mask & (IN_DELETE|IN_MOVED_FROM|IN_UNMOUNT)) { -- cgit v1.2.1 From 48deb058b62b7245d59344134a126a3d5bdb5b58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 21 Mar 2013 23:24:30 -0400 Subject: util: workaround two gcc warnings gcc does not know that errno cannot be negative, and warns about unitialized variables later on. Kill the warnings by returning -errno only after checking that errno is positive. --- src/shared/util.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shared/util.c b/src/shared/util.c index bc6e035c60..260c100868 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -290,7 +290,7 @@ int safe_atou(const char *s, unsigned *ret_u) { l = strtoul(s, &x, 0); if (!x || x == s || *x || errno) - return errno ? -errno : -EINVAL; + return errno > 0 ? -errno : -EINVAL; if ((unsigned long) (unsigned) l != l) return -ERANGE; @@ -310,7 +310,7 @@ int safe_atoi(const char *s, int *ret_i) { l = strtol(s, &x, 0); if (!x || x == s || *x || errno) - return errno ? -errno : -EINVAL; + return errno > 0 ? -errno : -EINVAL; if ((long) (int) l != l) return -ERANGE; -- cgit v1.2.1 From 7d566799022b24fef2bb8ca6d671bf8ad14d9e26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 21 Mar 2013 20:05:42 -0400 Subject: udev/collect: avoid initalizing memory twice --- src/udev/collect/collect.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/udev/collect/collect.c b/src/udev/collect/collect.c index 7850cfa418..6580a091e0 100644 --- a/src/udev/collect/collect.c +++ b/src/udev/collect/collect.c @@ -139,12 +139,14 @@ static int checkout(int fd) restart: len = bufsize >> 1; - buf = calloc(1,bufsize + 1); + buf = malloc(bufsize + 1); if (!buf) { fprintf(stderr, "Out of memory.\n"); return log_oom(); } memset(buf, ' ', bufsize); + buf[bufsize] = '\0'; + ptr = buf + len; while ((read(fd, buf + len, len)) > 0) { while (ptr && *ptr) { -- cgit v1.2.1 From ab4224458bf32d0e733f8e74b34414635389acc1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 15:05:51 +0100 Subject: main: minor simplification --- src/core/main.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/core/main.c b/src/core/main.c index 05f0803b8b..25f55fced2 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1573,10 +1573,9 @@ int main(int argc, char *argv[]) { /* Make sure we leave a core dump without panicing the * kernel. */ - if (getpid() == 1) + if (getpid() == 1) { install_crash_handler(); - if (getpid() == 1) { r = mount_cgroup_controllers(arg_join_controllers); if (r < 0) goto finish; -- cgit v1.2.1 From 2852ae213402930b868d366b38c717991c97785c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 21:05:42 +0100 Subject: udev: no need to output OOM, if we call log_oom() anyway --- src/udev/collect/collect.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/udev/collect/collect.c b/src/udev/collect/collect.c index 6580a091e0..f95ee23b75 100644 --- a/src/udev/collect/collect.c +++ b/src/udev/collect/collect.c @@ -35,8 +35,8 @@ #include "libudev-private.h" #include "macro.h" -#define BUFSIZE 16 -#define UDEV_ALARM_TIMEOUT 180 +#define BUFSIZE 16 +#define UDEV_ALARM_TIMEOUT 180 enum collect_state { STATE_NONE, @@ -140,10 +140,8 @@ static int checkout(int fd) restart: len = bufsize >> 1; buf = malloc(bufsize + 1); - if (!buf) { - fprintf(stderr, "Out of memory.\n"); + if (!buf) return log_oom(); - } memset(buf, ' ', bufsize); buf[bufsize] = '\0'; -- cgit v1.2.1 From 1a5613266a93ddb197bbae137cd61fae25600718 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 21:17:45 +0100 Subject: timedatectl: show CanNTP field --- src/timedate/timedatectl.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/timedate/timedatectl.c b/src/timedate/timedatectl.c index ef2ea08300..bcd935a6c0 100644 --- a/src/timedate/timedatectl.c +++ b/src/timedate/timedatectl.c @@ -68,6 +68,7 @@ typedef struct StatusInfo { const char *timezone; bool local_rtc; bool ntp; + bool can_ntp; } StatusInfo; static bool ntp_synced(void) { @@ -153,7 +154,7 @@ static void print_status_info(StatusInfo *i) { " RTC in local TZ: %s\n", strna(i->timezone), a, - yes_no(i->ntp), + i->can_ntp ? yes_no(i->ntp) : "n/a", yes_no(ntp_synced()), yes_no(i->local_rtc)); @@ -228,6 +229,8 @@ static int status_property(const char *name, DBusMessageIter *iter, StatusInfo * i->local_rtc = b; else if (streq(name, "NTP")) i->ntp = b; + else if (streq(name, "CanNTP")) + i->can_ntp = b; } } -- cgit v1.2.1 From bfa00bc6c05d0f896e9632eccd47d442fea556b9 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 21:17:53 +0100 Subject: update TODO --- TODO | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TODO b/TODO index c0779d4377..7f973d4b34 100644 --- a/TODO +++ b/TODO @@ -44,6 +44,10 @@ Fedora 19: Features: +* hostnamectl: when a passed pretty hostname also qualifies as low-level name, then only set low-level name, and unset the pretty hostname + +* we should log capabilities too + * Support SO_REUSEPORT with socket activation: - Let systemd maintain a pool of servers. - Use for seamless upgrades, by running the new server before stopping the -- cgit v1.2.1 From 86e7b6e3f61e2a0d2395d7f2cc28e8f9199710e7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 21:35:53 +0100 Subject: timedated: extra overflow safety check when doing relative time changes Ensure clients don't overflow usec_t when doing relative time changes. This is mostly just paranoia and protection against accidents, after all clients are already authenticated, and they can se the time to any value they wish anyway, but better be safe than sorry. https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1152187/comments/14 --- src/timedate/timedated.c | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index 85506f4fc6..16fffd0844 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -816,15 +816,24 @@ static DBusHandlerResult timedate_message_handler( struct timespec ts; struct tm* tm; + if (relative) { + usec_t n, x; + + n = now(CLOCK_REALTIME); + x = n + utc; + + if ((utc > 0 && x < n) || + (utc < 0 && x > n)) + return bus_send_error_reply(connection, message, NULL, -EOVERFLOW); + + timespec_store(&ts, x); + } else + timespec_store(&ts, (usec_t) utc); + r = verify_polkit(connection, message, "org.freedesktop.timedate1.set-time", interactive, NULL, &error); if (r < 0) return bus_send_error_reply(connection, message, &error, r); - if (relative) - timespec_store(&ts, now(CLOCK_REALTIME) + utc); - else - timespec_store(&ts, utc); - /* Set system clock */ if (clock_settime(CLOCK_REALTIME, &ts) < 0) { log_error("Failed to set local time: %m"); -- cgit v1.2.1 From 6af274272a917710f606acb3589f0430e9092631 Mon Sep 17 00:00:00 2001 From: Tollef Fog Heen Date: Fri, 22 Mar 2013 22:51:52 +0100 Subject: Drop trailing whitespace --- rules/42-usb-hid-pm.rules | 2 +- shell-completion/systemd-zsh-completion.zsh | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/rules/42-usb-hid-pm.rules b/rules/42-usb-hid-pm.rules index 2b56b1134f..3fd6e8ab4c 100644 --- a/rules/42-usb-hid-pm.rules +++ b/rules/42-usb-hid-pm.rules @@ -32,7 +32,7 @@ ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="14dd", ATTR{idProduct}=="0002" # USB HID devices that are internal to the machine should also be safe to autosuspend ACTION=="add", SUBSYSTEM=="usb", SUBSYSTEMS=="usb", ATTRS{removable}=="removable", GOTO="usb_hid_pm_end" -ACTION=="add", SUBSYSTEM=="usb", SUBSYSTEMS=="usb", ATTRS{removable}=="unknown", GOTO="usb_hid_pm_end" +ACTION=="add", SUBSYSTEM=="usb", SUBSYSTEMS=="usb", ATTRS{removable}=="unknown", GOTO="usb_hid_pm_end" ACTION=="add", SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="03", ATTRS{removable}=="fixed", TEST=="../power/control", ATTR{../power/control}="auto" diff --git a/shell-completion/systemd-zsh-completion.zsh b/shell-completion/systemd-zsh-completion.zsh index ac36c4ed5d..a8f7081459 100644 --- a/shell-completion/systemd-zsh-completion.zsh +++ b/shell-completion/systemd-zsh-completion.zsh @@ -273,7 +273,7 @@ _systemd-nspawn(){ } _systemd_inhibit_command(){ - if (( CURRENT == 1 )); then + if (( CURRENT == 1 )); then compset -q _normal else @@ -317,7 +317,7 @@ _outputmodes() { _output_opts=(short short-monotonic verbose export json json-pretty json-see cat) _describe -t output 'output mode' _output_opts || compadd "$@" } - + (( $+functions[_systemctl_command] )) || _systemctl_command() { @@ -630,7 +630,7 @@ _journal_none() { _journal_fields() { local -a _fields cmd cmd=("journalctl" "-F ${@[-1]}" "2>/dev/null" ) - _fields=( ${(f)"$(_call_program fields $cmd[@])"} ) + _fields=( ${(f)"$(_call_program fields $cmd[@])"} ) typeset -U _fields _describe 'possible values' _fields } @@ -787,8 +787,8 @@ _localectl_set-x11-keymap() { #_model=( ${(f)"$(echo $_file[2] | awk '/^ / {print $1}')"} ) #_variant=( ${(f)"$(echo $_file[3] | awk '/^ / {print $1}')"} ) #_options=( ${(f)"$(echo ${_file[4]//:/\\:} | awk '/^ / {print $1}')"} ) - - case $CURRENT in + + case $CURRENT in 2) _describe layouts _layout ;; 3) _describe models _model;; 4) _describe variants _variant;; @@ -955,7 +955,7 @@ _udevadm_control(){ '--timeout=[The maximum number of seconds to wait for a reply from systemd-udevd.]' \ '--help[Print help text.]' } - + _udevadm_monitor(){ _arguments \ '--kernel[Print the kernel uevents.]' \ -- cgit v1.2.1 From d91c34f21ff7445dcee3efe2368aebe2d6c266db Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 23:25:54 +0100 Subject: exec: Assigning the empty string to CapabilityBoundSet= should drop all caps Previously, it would set all caps, but it should drop them all, anything else makes little sense. Also, document that this works as it does, and what to do in order to assign all caps to the bounding set. https://bugzilla.redhat.com/show_bug.cgi?id=914705 --- man/systemd.exec.xml | 37 +++++++++++++++++++++++-------------- src/core/load-fragment.c | 6 ------ src/core/unit.c | 9 ++++++++- 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml index b1cd685cc0..69ee4fc5e8 100644 --- a/man/systemd.exec.xml +++ b/man/systemd.exec.xml @@ -719,29 +719,38 @@ for details. Takes a whitespace separated list of capability names as read by - cap_from_name3. + cap_from_name3, + e.g. CAP_SYS_ADMIN + CAP_DAC_OVERRIDE + CAP_SYS_PTRACE. Capabilities listed will be included in the bounding set, all others are removed. If the list of capabilities - is prefixed with ~ all but the listed - capabilities will be included, the - effect of the assignment - inverted. Note that this option also - effects the respective capabilities in - the effective, permitted and - inheritable capability sets, on top of - what Capabilities= + is prefixed with ~ + all but the listed capabilities will + be included, the effect of the + assignment inverted. Note that this + option also affects the respective + capabilities in the effective, + permitted and inheritable capability + sets, on top of what + Capabilities= does. If this option is not used the capability bounding set is not modified on process execution, hence no limits on the capabilities of the process are enforced. This option may appear more than once in which case - the bounding sets are merged. If the empty - string is assigned to this option the - bounding set is reset, and all prior - settings have no - effect. + the bounding sets are merged. If the + empty string is assigned to this + option the bounding set is reset to + the empty capability set, and all + prior settings have no effect. If set + to ~ (without any + further argument) the bounding set is + reset to the full set of available + capabilities, also undoing any + previous settings. diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 2204c67a4b..6d90428af0 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -889,12 +889,6 @@ int config_parse_bounding_set( assert(rvalue); assert(data); - if (isempty(rvalue)) { - /* An empty assignment resets */ - *capability_bounding_set_drop = 0; - return 0; - } - if (rvalue[0] == '~') { invert = true; rvalue++; diff --git a/src/core/unit.c b/src/core/unit.c index a1249dc093..d43558e6df 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -2645,7 +2645,14 @@ int unit_kill(Unit *u, KillWho w, int signo, DBusError *error) { return UNIT_VTABLE(u)->kill(u, w, signo, error); } -int unit_kill_common(Unit *u, KillWho who, int signo, pid_t main_pid, pid_t control_pid, DBusError *error) { +int unit_kill_common( + Unit *u, + KillWho who, + int signo, + pid_t main_pid, + pid_t control_pid, + DBusError *error) { + int r = 0; if (who == KILL_MAIN && main_pid <= 0) { -- cgit v1.2.1 From 356ce9915ab1a4a1e6dc26954df34936a69e7c12 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 22 Mar 2013 23:28:36 +0100 Subject: update TODO --- TODO | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/TODO b/TODO index 7f973d4b34..d48123806d 100644 --- a/TODO +++ b/TODO @@ -44,6 +44,10 @@ Fedora 19: Features: +* add ConditionArchitecture= or so + +* teach ConditionKernelCommandLine= globs or regexes (in order to match foobar={no,0,off}) + * hostnamectl: when a passed pretty hostname also qualifies as low-level name, then only set low-level name, and unset the pretty hostname * we should log capabilities too @@ -65,10 +69,6 @@ Features: * disallow .include from included files -* timedatectl needs to show whether NTP is available at all - -* reduce caps of systemd-localed - * safe_atod() is too naive, as it is vulnerable to locale parameters, should be locale independent. * think about requeuing jobs when daemon-reload is issued? usecase: @@ -127,8 +127,6 @@ Features: * use "log level" rather than "log priority" everywhere -* unit_name_mangle() is currently not used on "systemctl enable" and friends, only on "systemctl start" - * ensure sd_journal_seek_monotonic actually works properly. * timedate: have global on/off switches for auto-time (NTP), and auto-timezone that connman can subscribe to. @@ -143,7 +141,7 @@ Features: so that libudev reports them as present, and systemd's .device units will be activated. -* merge service_kill() logic into unit_kill_context() and unify the code paths +* merge unit_kill_common() and unit_kill_context() * introduce ExecCondition= in services @@ -174,7 +172,6 @@ Features: - logind: spawn user@..service on login - logind: non-local X11 server handling - logind: add equivalent to sd_pid_get_owner_uid() to the D-Bus API - - pam_systemd: try to get old session id from cgroup, if audit sessionid cannot be determined - pam: when leaving a session explicitly exclude the ReleaseSession() caller process from the killing spree - logind: GetSessionByPID() should accept 0 as PID value @@ -298,7 +295,6 @@ Features: * fedup: generator * timedated: - - timedated: export boolean that clarifies whether NTP is even available - timedated: refuse time changes when NTP is on * clean up date formatting and parsing so that all absolute/relative timestamps we format can also be parsed @@ -409,8 +405,6 @@ Features: - syscall filter: port to libseccomp - system-wide seccomp filter -* systemd-analyze: data collection tools should be lightweight (few dependencies); data analysis tools can be heavyweight - * .device aliases need to be implemented with the "following" logic, probably. * load-fragment: when loading a unit file via a chain of symlinks -- cgit v1.2.1 From a5a5ade34c142c42e584aa19ee92de6d3e1994c3 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Fri, 22 Mar 2013 09:36:22 -0400 Subject: dbus: Do send out "replies" to signals MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some parts of systemd (at least the DBus activation codepath) "reply" to signals, which of course have the no-reply flag set. We will be defensive here and still send out a reply if we're passed a signal. Regression introduced by: c6a818c82035da91e Reported-by: Mantas Mikulėnas Tested-by: Mantas Mikulėnas --- src/shared/dbus-common.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/shared/dbus-common.c b/src/shared/dbus-common.c index 2769b2c882..0e38933d8a 100644 --- a/src/shared/dbus-common.c +++ b/src/shared/dbus-common.c @@ -717,9 +717,14 @@ dbus_bool_t bus_maybe_send_reply (DBusConnection *c, DBusMessage *message, DBusMessage *reply) { - if (dbus_message_get_no_reply (message)) + /* Some parts of systemd "reply" to signals, which of course + * have the no-reply flag set. We will be defensive here and + * still send out a reply if we're passed a signal. + */ + if (dbus_message_get_type(message) == DBUS_MESSAGE_TYPE_METHOD_CALL && + dbus_message_get_no_reply(message)) return TRUE; - return dbus_connection_send (c, reply, NULL); + return dbus_connection_send(c, reply, NULL); } DBusHandlerResult bus_send_error_reply(DBusConnection *c, DBusMessage *message, DBusError *berror, int error) { -- cgit v1.2.1 From 3ac251b81a41295a90c89c164f0d72ce6de651aa Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 23 Mar 2013 01:12:22 +0100 Subject: journalctl: various fixes to the access check logic - Reword messages a bit - Correct check whether EACCES is in the set of errors - Don't complain if no journal files are found - allocate Set object for errors lazily since in the best case we don't need it at all. - don't consider it an error if /run/log/journal doesn't exist (because that's the usual case actually, if storage is enabled) --- src/journal/journalctl.c | 42 ++++++++++++++++++++++-------------------- src/journal/sd-journal.c | 30 +++++++++++++++++++----------- 2 files changed, 41 insertions(+), 31 deletions(-) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 91dbde3ba1..0a82a1cf15 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -905,9 +905,9 @@ static int access_check_var_log_journal(sd_journal *j) { if (!have_access) { if (strv_isempty(g)) - log_notice("Hint: You are currently not seeing messages from other users and\n" - "the system. Users in the group 'systemd-journal' can see all messages.\n" - "Pass -q to turn this notice off."); + log_notice("Hint: You are currently not seeing messages from other users and the system.\n" + " Users in the 'systemd-journal' group can see all messages. Pass -q to\n" + " turn off this notice."); else { _cleanup_free_ char *s = NULL; @@ -923,8 +923,8 @@ static int access_check_var_log_journal(sd_journal *j) { return log_oom(); log_notice("Hint: You are currently not seeing messages from other users and the system.\n" - "Users in the groups '%s' can see all messages.\n" - "Pass -q to turn this notice off.", s); + " Users in the groups '%s' can see all messages.\n" + " Pass -q to turn off this notice.", s); } } @@ -933,29 +933,27 @@ static int access_check_var_log_journal(sd_journal *j) { #endif static int access_check(sd_journal *j) { - uint64_t eacces = EACCES, *code; Iterator it; + void *code; int r = 0; assert(j); - assert(j->errors); - assert(j->files); if (set_isempty(j->errors)) { if (hashmap_isempty(j->files)) - log_info("No journal files were found."); + log_notice("No journal files were found."); return 0; } - if (!set_contains(j->errors, &eacces)) { + if (set_contains(j->errors, INT_TO_PTR(-EACCES))) { #ifdef HAVE_ACL /* If /var/log/journal doesn't even exist, - unprivileged users have no access at all */ + * unprivileged users have no access at all */ if (access("/var/log/journal", F_OK) < 0 && geteuid() != 0 && in_group("systemd-journal") <= 0) { - log_error("Unprivileged users can't see messages unless persistent log storage\n" - "is enabled. Users in the group 'systemd-journal' can always see messages."); + log_error("Unprivileged users cannot access messages, unless persistent log storage is\n" + "enabled. Users in the 'systemd-journal' group may always access messages."); return -EACCES; } @@ -967,26 +965,30 @@ static int access_check(sd_journal *j) { return r; } #else - if (geteuid() != 0 && in_group("systemd-journal") <= 0) - log_error("No access to messages.\n" - "Users in the group 'systemd-journal' can see messages."); + if (geteuid() != 0 && in_group("systemd-journal") <= 0) { + log_error("Unprivileged users cannot access messages. Users in the 'systemd-journal' group\n" + "group may access messages."); + return -EACCES; + } #endif + if (hashmap_isempty(j->files)) { - log_error("No journal files were opened, due to insufficient permissions."); + log_error("No journal files were opened due to insufficient permissions."); r = -EACCES; } } SET_FOREACH(code, j->errors, it) { - int err = -PTR_TO_INT(code); + int err; + + err = -PTR_TO_INT(code); assert(err > 0); + if (err != EACCES) log_warning("Error was encountered while opening journal files: %s", strerror(err)); } - log_notice("Hint: run journalctl in debug mode: SYSTEMD_LOG_LEVEL=debug journalct ..."); - return r; } diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index c62ad811dc..f7f1777fef 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -51,11 +51,17 @@ /* We return an error here only if we didn't manage to memorize the real error. */ -static int set_put_error(Set* errors, int r) { +static int set_put_error(sd_journal *j, int r) { + int k; + if (r >= 0) return r; - return set_put(errors, INT_TO_PTR(r)); + k = set_ensure_allocated(&j->errors, trivial_hash_func, trivial_compare_func); + if (k < 0) + return k; + + return set_put(j->errors, INT_TO_PTR(r)); } static void detach_location(sd_journal *j) { @@ -1248,7 +1254,7 @@ static int add_file(sd_journal *j, const char *prefix, const char *filename) { if (hashmap_size(j->files) >= JOURNAL_FILES_MAX) { log_debug("Too many open journal files, not adding %s, ignoring.", path); - return set_put_error(j->errors, -ETOOMANYREFS); + return set_put_error(j, -ETOOMANYREFS); } r = journal_file_open(path, O_RDONLY, 0, false, false, NULL, j->mmap, NULL, &f); @@ -1392,7 +1398,7 @@ static int add_directory(sd_journal *j, const char *prefix, const char *dirname) if (r < 0) { log_debug("Failed to add file %s/%s: %s", m->path, de->d_name, strerror(-r)); - r = set_put_error(j->errors, r); + r = set_put_error(j, r); if (r < 0) return r; } @@ -1471,7 +1477,7 @@ static int add_root_directory(sd_journal *j, const char *p) { if (r < 0) { log_debug("Failed to add file %s/%s: %s", m->path, de->d_name, strerror(-r)); - r = set_put_error(j->errors, r); + r = set_put_error(j, r); if (r < 0) return r; } @@ -1526,8 +1532,11 @@ static int add_search_paths(sd_journal *j) { NULSTR_FOREACH(p, search_paths) { r = add_root_directory(j, p); - if (r < 0) - return set_put_error(j->errors, r); + if (r < 0 && r != -ENOENT) { + r = set_put_error(j, r); + if (r < 0) + return r; + } } return 0; @@ -1571,8 +1580,7 @@ static sd_journal *journal_new(int flags, const char *path) { j->files = hashmap_new(string_hash_func, string_compare_func); j->directories_by_path = hashmap_new(string_hash_func, string_compare_func); j->mmap = mmap_cache_new(); - j->errors = set_new(trivial_hash_func, trivial_compare_func); - if (!j->files || !j->directories_by_path || !j->mmap || !j->errors) + if (!j->files || !j->directories_by_path || !j->mmap) goto fail; return j; @@ -1630,7 +1638,7 @@ _public_ int sd_journal_open_directory(sd_journal **ret, const char *path, int f r = add_root_directory(j, path); if (r < 0) { - set_put_error(j->errors, r); + set_put_error(j, r); goto fail; } @@ -1996,7 +2004,7 @@ static void process_inotify_event(sd_journal *j, struct inotify_event *e) { if (r < 0) { log_debug("Failed to add file %s/%s: %s", d->path, e->name, strerror(-r)); - set_put_error(j->errors, r); + set_put_error(j, r); } } else if (e->mask & (IN_DELETE|IN_MOVED_FROM|IN_UNMOUNT)) { -- cgit v1.2.1 From 4ad61fd1806dde23d2c99043b4bed91a196d2c82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= Date: Fri, 22 Mar 2013 21:04:53 -0300 Subject: add --with-telinit=PATH configure option Distributions that never shipped upstart do not have "telinit" in /lib/upstart/.. Defaults to /lib/upstart/telinit so there is no change for systems existing installs. --- configure.ac | 10 ++++++++++ src/systemctl/systemctl.c | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/configure.ac b/configure.ac index 79a4ec4521..f1bf7582fd 100644 --- a/configure.ac +++ b/configure.ac @@ -683,6 +683,16 @@ AC_DEFINE_UNQUOTED(KBD_SETFONT, ["$KBD_SETFONT"], [Path of setfont]) AC_SUBST(KBD_LOADKEYS) AC_SUBST(KBD_SETFONT) +AC_ARG_WITH(telinit, + AS_HELP_STRING([--with-telinit=PATH], + [Path to telinit]), + [TELINIT="$withval"], + [TELINIT="/lib/upstart/telinit"]) + +AC_DEFINE_UNQUOTED(TELINIT, ["$TELINIT"], [Path to telinit]) + +AC_SUBST(TELINIT) + # ------------------------------------------------------------------------------ have_myhostname=no AC_ARG_ENABLE(myhostname, AS_HELP_STRING([--disable-myhostname], [disable nss-myhostname support])) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 1ea0e4e7ec..edd136addd 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -4918,7 +4918,7 @@ static int parse_argv(int argc, char *argv[]) { * request to it. For now we simply * guess that it is Upstart. */ - execv("/lib/upstart/telinit", argv); + execv(TELINIT, argv); log_error("Couldn't find an alternative telinit implementation to spawn."); return -EIO; -- cgit v1.2.1 From 0debd2bf2f92d4e8f7a3e520c6c1d522e5058929 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 23 Mar 2013 03:10:41 +0100 Subject: Revert "units: ignore systemd-sysctl on shutdown" This reverts commit faeffa73a81ab5b59acfadeb571431fb0e42af70. There isn't really much point in dropping the Conflicts= since shutting down this service is basically free as it doesn't have anything running. Also, the patch was incomplete, because shutdown.target was still listed in Before=. --- units/systemd-sysctl.service.in | 1 + 1 file changed, 1 insertion(+) diff --git a/units/systemd-sysctl.service.in b/units/systemd-sysctl.service.in index d914553d28..45e1ceb25c 100644 --- a/units/systemd-sysctl.service.in +++ b/units/systemd-sysctl.service.in @@ -9,6 +9,7 @@ Description=Apply Kernel Variables Documentation=man:systemd-sysctl.service(8) man:sysctl.d(5) DefaultDependencies=no +Conflicts=shutdown.target After=systemd-readahead-collect.service systemd-readahead-replay.service Before=sysinit.target shutdown.target ConditionPathIsReadWrite=/proc/sys/ -- cgit v1.2.1 From 335b5240ae584ed184afc683519bf19d6e1e1145 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 23 Mar 2013 03:16:17 +0100 Subject: unit: never retroactively start requisites Requesites are not supposed to be auto-started afterall, they are just checks, so don't try to be smarter here than appropriate. Based on a patch from Michal Schmidt. --- src/core/unit.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/core/unit.c b/src/core/unit.c index d43558e6df..711167994a 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1241,11 +1241,6 @@ static void retroactively_start_dependencies(Unit *u) { !UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other))) manager_add_job(u->manager, JOB_START, other, JOB_FAIL, false, NULL, NULL); - SET_FOREACH(other, u->dependencies[UNIT_REQUISITE], i) - if (!set_get(u->dependencies[UNIT_AFTER], other) && - !UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other))) - manager_add_job(u->manager, JOB_START, other, JOB_REPLACE, true, NULL, NULL); - SET_FOREACH(other, u->dependencies[UNIT_WANTS], i) if (!set_get(u->dependencies[UNIT_AFTER], other) && !UNIT_IS_ACTIVE_OR_ACTIVATING(unit_active_state(other))) -- cgit v1.2.1 From 64e30145fce09b87a0b0a7e08c84a100818a5d5a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 23 Mar 2013 03:19:50 +0100 Subject: update TODO --- TODO | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TODO b/TODO index d48123806d..bdceeffcbc 100644 --- a/TODO +++ b/TODO @@ -44,6 +44,10 @@ Fedora 19: Features: +* matching against units is currently broken in journalctl. We really + need another AND level in the expressions, + i.e. sd_journal_add_conjunction(). + * add ConditionArchitecture= or so * teach ConditionKernelCommandLine= globs or regexes (in order to match foobar={no,0,off}) -- cgit v1.2.1 From 67c67c8f193003870ea7182e62099957ce59d0f5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 23 Mar 2013 04:03:32 +0100 Subject: update TODO --- TODO | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/TODO b/TODO index bdceeffcbc..473775eebc 100644 --- a/TODO +++ b/TODO @@ -44,6 +44,14 @@ Fedora 19: Features: +* clean up early boot services, and put them all before sysinit.target + and leave basic.target alone. + +* introduce timers.target and paths.target and automatucally order all + timers and paths before it and after sysinit.target. + +* x-initrd-rootfs.mount in fstab-generator needs to go or get a saner name + * matching against units is currently broken in journalctl. We really need another AND level in the expressions, i.e. sd_journal_add_conjunction(). -- cgit v1.2.1 From cb695f05c5bb7d188090b570c22a8231f8e02afe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 22 Mar 2013 21:58:43 -0400 Subject: bus: move attribute to end of structure, so it is not ignored src/libsystemd-bus/bus-message.h:41:1: warning: attribute 'packed' is ignored, place it after "struct" to apply attribute to type declaration [-Wignored-attributes] --- src/libsystemd-bus/bus-message.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libsystemd-bus/bus-message.h b/src/libsystemd-bus/bus-message.h index b21fdf0ada..1a6c614611 100644 --- a/src/libsystemd-bus/bus-message.h +++ b/src/libsystemd-bus/bus-message.h @@ -38,7 +38,7 @@ struct bus_container { size_t begin; }; -_packed_ struct bus_header { +struct bus_header { uint8_t endian; uint8_t type; uint8_t flags; @@ -46,7 +46,7 @@ _packed_ struct bus_header { uint32_t body_size; uint32_t serial; uint32_t fields_size; -}; +} _packed_; struct sd_bus_message { unsigned n_ref; -- cgit v1.2.1 From 9e1fe7c3db6f335a9e1c2fac2fe2b7443076b29b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 22 Mar 2013 22:00:49 -0400 Subject: bus: don't free an unallocated var Also remove unused variable. --- src/libsystemd-bus/sd-bus.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 88f17a2600..0acc6b2d1e 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -972,11 +972,10 @@ static int message_make(sd_bus *bus, size_t size, sd_bus_message **m) { assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); if (bus->rbuffer_size > size) { - b = memdup((const uint8_t*) bus->rbuffer + size, bus->rbuffer_size - size); - if (!b) { - free(t); + b = memdup((const uint8_t*) bus->rbuffer + size, + bus->rbuffer_size - size); + if (!b) return -ENOMEM; - } } r = bus_message_from_malloc(bus->rbuffer, size, @@ -1536,7 +1535,6 @@ int sd_bus_get_timeout(sd_bus *bus, uint64_t *timeout_usec) { } static int process_timeout(sd_bus *bus) { - _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; struct reply_callback *c; usec_t n; int r; -- cgit v1.2.1 From 46512cd959f0a2bbeef3d9a08aa5be408cbf3521 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 22 Mar 2013 22:55:05 -0400 Subject: udevadm: place const in the right place Otherwise clang at least thinks that both consts apply to char. --- src/udev/udevadm-info.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/udev/udevadm-info.c b/src/udev/udevadm-info.c index c47821401a..002876594f 100644 --- a/src/udev/udevadm-info.c +++ b/src/udev/udevadm-info.c @@ -33,7 +33,7 @@ static bool skip_attribute(const char *name) { - static const char const *skip[] = { + static const char* const skip[] = { "uevent", "dev", "modalias", -- cgit v1.2.1 From 54b1da83ed8cadde4a53b541a48ce303ade862f7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 23 Mar 2013 04:11:23 +0100 Subject: journal: don't access j->files after use https://bugs.freedesktop.org/show_bug.cgi?id=62605 --- src/journal/sd-journal.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index f7f1777fef..82cacf3674 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -1658,6 +1658,8 @@ _public_ void sd_journal_close(sd_journal *j) { if (!j) return; + sd_journal_flush_matches(j); + while ((f = hashmap_steal_first(j->files))) journal_file_close(f); @@ -1675,8 +1677,6 @@ _public_ void sd_journal_close(sd_journal *j) { if (j->inotify_fd >= 0) close_nointr_nofail(j->inotify_fd); - sd_journal_flush_matches(j); - if (j->mmap) mmap_cache_unref(j->mmap); -- cgit v1.2.1 From 4589f5bb0a973e9a41be93de06c87072cea4dfb9 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sat, 23 Mar 2013 04:32:43 +0100 Subject: conf-parser: when we parse a string list, always fill in something Some code really wants to know whether there was a string list parsed, so don't take the shortcut here, and always allocate a string list, even if it is an empty one. https://bugs.freedesktop.org/show_bug.cgi?id=62558 --- src/shared/conf-parser.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index b09e90ae8b..c2cf5a6a19 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -705,9 +705,18 @@ int config_parse_strv( assert(data); if (isempty(rvalue)) { - /* Empty assignment resets the list */ + char **empty; + + /* Empty assignment resets the list. As a special rule + * we actually fill in a real empty array here rather + * than NULL, since some code wants to know if + * something was set at all... */ + empty = strv_new(NULL, NULL); + if (!empty) + return log_oom(); + strv_free(*sv); - *sv = NULL; + *sv = empty; return 0; } -- cgit v1.2.1 From 3abcb6acedb588ca17f6374c1836f8a58396e520 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Fri, 22 Mar 2013 21:43:31 -0700 Subject: Update user session unit template. While most folks will be using the derivative from user-session-units, I'm updating this one to reflect some of the fixes and things to note about user sessions: - cgroup should be set with "%u" - username instead of %I - set dbus path with %U explicitly too - hint to folks that wish to use MEM_CG features in user sessions - allow unit to be enabled for instances with systemctl enable --- units/user@.service.in | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/units/user@.service.in b/units/user@.service.in index 2c154953b1..901a334ef6 100644 --- a/units/user@.service.in +++ b/units/user@.service.in @@ -6,14 +6,18 @@ # (at your option) any later version. [Unit] -Description=User Manager for %I +Description=User Manager for %u After=systemd-user-sessions.service [Service] User=%I PAMName=systemd-shared -ControlGroup=%R/user/%I/shared cpu:/ +# in order to allow MEM_CG features to work, add "memory:/" here +ControlGroup=%R/user/%u/shared cpu:/ ControlGroupModify=yes Type=notify ExecStart=-@rootlibexecdir@/systemd --user -Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%I/dbus/user_bus_socket +Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/%U/dbus/user_bus_socket + +[Install] +Alias=user@%i.service -- cgit v1.2.1 From b87b8b2b5205c0584da220f73322ea4732d44013 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 23 Mar 2013 13:34:13 +0100 Subject: TODO: update --- TODO | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TODO b/TODO index 473775eebc..781edfb381 100644 --- a/TODO +++ b/TODO @@ -194,6 +194,9 @@ Features: * service: watchdog logic: for testing purposes allow ping, but do not require pong * journal: + - do not use magic msync() in src/journal/journal-file.c, just call fsync() + poettering: looks like msync just calls vfs_fsync + http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/mm/msync.c#n18 - import and delete pstore filesystem content at startup - journald: also get thread ID from client, plus thread name - journal: when waiting for journal additions in the client always sleep at least 1s or so, in order to minimize wakeups -- cgit v1.2.1 From d325d9bcfa8846a65767087f958a2dd11139d0e7 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 23 Mar 2013 14:01:44 +0100 Subject: TODO: add "dead" device node ACL handling --- TODO | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TODO b/TODO index 781edfb381..132aeaccbe 100644 --- a/TODO +++ b/TODO @@ -43,6 +43,9 @@ Fedora 19: http://lists.freedesktop.org/archives/systemd-devel/2013-February/009021.html Features: +* teach udev + logind's uaccess to somehow handle the "dead" device nodes from: + /lib/modules/$(uname -r)/modules.devname + and apply ACLs to them if they have TAG=="uaccess" in udev rules. * clean up early boot services, and put them all before sysinit.target and leave basic.target alone. -- cgit v1.2.1 From 89d09e1b5c65a2d97840f682e0932c8bb499f166 Mon Sep 17 00:00:00 2001 From: Frederic Crozat Date: Thu, 21 Mar 2013 17:28:13 +0100 Subject: udevd: ensure static nodes are created before local-fs mount static nodes (like /dev/loop-control) are created when systemd-udevd is started and needed to mount loopback devices. Therefore, local-fs-pre.target should be only started after systemd-udevd is started. --- units/systemd-udevd.service.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/units/systemd-udevd.service.in b/units/systemd-udevd.service.in index 86c650c0db..97fb2f3ac5 100644 --- a/units/systemd-udevd.service.in +++ b/units/systemd-udevd.service.in @@ -10,7 +10,7 @@ Description=udev Kernel Device Manager Documentation=man:systemd-udevd.service(8) man:udev(7) Wants=systemd-udevd-control.socket systemd-udevd-kernel.socket After=systemd-udevd-control.socket systemd-udevd-kernel.socket -Before=sysinit.target +Before=sysinit.target local-fs-pre.target DefaultDependencies=no ConditionCapability=CAP_MKNOD -- cgit v1.2.1 From bb06e0f85cf337dfaea92dc1c24d7c84249b1433 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 23 Mar 2013 16:26:49 +0100 Subject: uaccess: remove needless usb_id call from udev rules --- src/login/70-uaccess.rules | 1 - 1 file changed, 1 deletion(-) diff --git a/src/login/70-uaccess.rules b/src/login/70-uaccess.rules index d1275f2ca9..a118f8e887 100644 --- a/src/login/70-uaccess.rules +++ b/src/login/70-uaccess.rules @@ -9,7 +9,6 @@ ACTION=="remove", GOTO="uaccess_end" ENV{MAJOR}=="", GOTO="uaccess_end" # PTP/MTP protocol devices, cameras, portable media players -SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id" SUBSYSTEM=="usb", ENV{ID_USB_INTERFACES}=="*:060101:*", TAG+="uaccess" # Digicams with proprietary protocol -- cgit v1.2.1 From 1d09582ab9d8bc619de3a01f01d614eab44d31c0 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 23 Mar 2013 16:27:28 +0100 Subject: hwdb: ID_PRODUCT_FROM_DATABASE --> ID_MODEL_FROM_DATABASE With the conversion from pci-db + usb-db to hwdb, the property got accitentially renamed. Move the name back to the long established identifier *MODEL* instead of *PRODUCT*. $ git grep -l ID_MODEL_FROM_DATABASE hwdb/20-pci-vendor-model.hwdb hwdb/20-usb-vendor-model.hwdb hwdb/ids-update.pl man/systemd.device.xml rules/78-sound-card.rules src/core/device.c src/cryptsetup/cryptsetup.c --- Makefile.am | 4 +- hwdb/20-OUI.hwdb | 48 + hwdb/20-pci-vendor-model.hwdb | 66354 ++++++++++++++++++++++++++++++++++++++ hwdb/20-pci-vendor-product.hwdb | 66327 ------------------------------------- hwdb/20-usb-vendor-model.hwdb | 49014 ++++++++++++++++++++++++++++ hwdb/20-usb-vendor-product.hwdb | 49014 ---------------------------- hwdb/ids-update.pl | 14 +- 7 files changed, 115425 insertions(+), 115350 deletions(-) create mode 100644 hwdb/20-pci-vendor-model.hwdb delete mode 100644 hwdb/20-pci-vendor-product.hwdb create mode 100644 hwdb/20-usb-vendor-model.hwdb delete mode 100644 hwdb/20-usb-vendor-product.hwdb diff --git a/Makefile.am b/Makefile.am index 93583a686a..d81a305441 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1833,9 +1833,9 @@ dist_udevrules_DATA += \ rules/95-udev-late.rules dist_udevhwdb_DATA = \ - hwdb/20-pci-vendor-product.hwdb \ + hwdb/20-pci-vendor-model.hwdb \ hwdb/20-pci-classes.hwdb \ - hwdb/20-usb-vendor-product.hwdb \ + hwdb/20-usb-vendor-model.hwdb \ hwdb/20-usb-classes.hwdb \ hwdb/20-bluetooth-vendor-product.hwdb \ hwdb/20-acpi-vendor.hwdb \ diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb index f7c6b2f5a6..5690a9d212 100644 --- a/hwdb/20-OUI.hwdb +++ b/hwdb/20-OUI.hwdb @@ -50785,6 +50785,9 @@ OUI:04180F* OUI:0418D6* ID_OUI_FROM_DATABASE=Ubiquiti Networks +OUI:041BBA* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:041D10* ID_OUI_FROM_DATABASE=Dream Ware Inc. @@ -50884,6 +50887,9 @@ OUI:0481AE* OUI:04888C* ID_OUI_FROM_DATABASE=Eifelwerk Butler Systeme GmbH +OUI:0488E2* + ID_OUI_FROM_DATABASE=Beats Electronics LLC + OUI:048A15* ID_OUI_FROM_DATABASE=Avaya, Inc @@ -52405,6 +52411,9 @@ OUI:181725* OUI:18193F* ID_OUI_FROM_DATABASE=Tamtron Oy +OUI:181EB0* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:182032* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -52429,6 +52438,9 @@ OUI:18339D* OUI:183451* ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:1836FC* + ID_OUI_FROM_DATABASE=Elecsys International Corporation + OUI:183825* ID_OUI_FROM_DATABASE=Wuhan Lingjiu High-tech Co.,Ltd. @@ -52510,6 +52522,9 @@ OUI:1886AC* OUI:188796* ID_OUI_FROM_DATABASE=HTC Corporation +OUI:188857* + ID_OUI_FROM_DATABASE=Beijing Jinhong Xi-Dian Information Technology Corp. + OUI:188ED5* ID_OUI_FROM_DATABASE=Philips Innovative Application NV @@ -53620,6 +53635,9 @@ OUI:2C8BF2* OUI:2C9127* ID_OUI_FROM_DATABASE=Eintechno Corporation +OUI:2C9464* + ID_OUI_FROM_DATABASE=Cincoze Co., Ltd. + OUI:2C9717* ID_OUI_FROM_DATABASE=I.C.Y. B.V. @@ -56053,6 +56071,9 @@ OUI:5C35DA* OUI:5C38E0* ID_OUI_FROM_DATABASE=Shanghai Super Electronics Technology Co.,LTD +OUI:5C3C27* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:5C4058* ID_OUI_FROM_DATABASE=Jefferson Audio Video Systems, Inc. @@ -56461,6 +56482,9 @@ OUI:60FACD* OUI:60FB42* ID_OUI_FROM_DATABASE=Apple, Inc +OUI:60FE1E* + ID_OUI_FROM_DATABASE=China Palms Telecom.Ltd + OUI:60FEC5* ID_OUI_FROM_DATABASE=Apple @@ -57565,6 +57589,9 @@ OUI:74867A* OUI:74888B* ID_OUI_FROM_DATABASE=ADB Broadband Italia +OUI:748E08* + ID_OUI_FROM_DATABASE=Bestek Corp. + OUI:748EF8* ID_OUI_FROM_DATABASE=Brocade Communications Systems, Inc. @@ -58771,6 +58798,9 @@ OUI:8897DF* OUI:889821* ID_OUI_FROM_DATABASE=TERAON +OUI:889B39* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:889FFA* ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. @@ -60397,6 +60427,9 @@ OUI:A4C0E1* OUI:A4C2AB* ID_OUI_FROM_DATABASE=Hangzhou LEAD-IT Information & Technology Co.,Ltd +OUI:A4D094* + ID_OUI_FROM_DATABASE=Erwin Peters Systemtechnik GmbH + OUI:A4D18F* ID_OUI_FROM_DATABASE=Shenzhen Skyee Optical Fiber Communication Technology Ltd. @@ -63007,6 +63040,9 @@ OUI:D4016D* OUI:D4024A* ID_OUI_FROM_DATABASE=Delphian Systems LLC +OUI:D40BB9* + ID_OUI_FROM_DATABASE=Solid Semecs bv. + OUI:D40FB2* ID_OUI_FROM_DATABASE=Applied Micro Electronics AME bv @@ -63361,6 +63397,9 @@ OUI:D85D84* OUI:D862DB* ID_OUI_FROM_DATABASE=Eno Inc. +OUI:D866C6* + ID_OUI_FROM_DATABASE=Shenzhen Daystar Technology Co.,ltd + OUI:D867D9* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -63982,6 +64021,9 @@ OUI:E42F26* OUI:E42FF6* ID_OUI_FROM_DATABASE=Unicore communication Inc. +OUI:E432CB* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd + OUI:E43593* ID_OUI_FROM_DATABASE=Hangzhou GoTo technology Co.Ltd @@ -64846,6 +64888,9 @@ OUI:F40B93* OUI:F40F9B* ID_OUI_FROM_DATABASE=WAVELINK +OUI:F415FD* + ID_OUI_FROM_DATABASE=Shanghai Pateo Electronic Equipment Manufacturing Co., Ltd. + OUI:F41BA1* ID_OUI_FROM_DATABASE=Apple @@ -64945,6 +64990,9 @@ OUI:F47B5E* OUI:F47F35* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. +OUI:F48139* + ID_OUI_FROM_DATABASE=CANON INC. + OUI:F48771* ID_OUI_FROM_DATABASE=Infoblox diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb new file mode 100644 index 0000000000..add5156be6 --- /dev/null +++ b/hwdb/20-pci-vendor-model.hwdb @@ -0,0 +1,66354 @@ +# This file is part of systemd. +# +# Data imported from: http://pci-ids.ucw.cz/v2.2/pci.ids + +pci:v00000010* + ID_VENDOR_FROM_DATABASE=Allied Telesis, Inc (Wrong ID) + +pci:v00000010d00008139* + ID_MODEL_FROM_DATABASE=AT-2500TX V3 Ethernet + +pci:v0000001C* + ID_VENDOR_FROM_DATABASE=PEAK-System Technik GmbH + +pci:v0000001Cd00000001* + ID_MODEL_FROM_DATABASE=PCAN-PCI CAN-Bus controller + +pci:v0000001Cd00000001sv0000001Csd00000004* + ID_MODEL_FROM_DATABASE=2 Channel CAN Bus SJC1000 + +pci:v0000001Cd00000001sv0000001Csd00000005* + ID_MODEL_FROM_DATABASE=2 Channel CAN Bus SJC1000 (Optically Isolated) + +pci:v0000003D* + ID_VENDOR_FROM_DATABASE=Lockheed Martin-Marietta Corp + +pci:v00000059* + ID_VENDOR_FROM_DATABASE=Tiger Jet Network Inc. (Wrong ID) + +pci:v00000070* + ID_VENDOR_FROM_DATABASE=Hauppauge computer works Inc. + +pci:v00000070d00007801* + ID_MODEL_FROM_DATABASE=WinTV HVR-1800 MCE + +pci:v00000071* + ID_VENDOR_FROM_DATABASE=Nebula Electronics Ltd. + +pci:v00000095* + ID_VENDOR_FROM_DATABASE=Silicon Image, Inc. (Wrong ID) + +pci:v00000095d00000680* + ID_MODEL_FROM_DATABASE=Ultra ATA/133 IDE RAID CONTROLLER CARD + +pci:v000000A7* + ID_VENDOR_FROM_DATABASE=Teles AG (Wrong ID) + +pci:v00000100* + ID_VENDOR_FROM_DATABASE=Ncipher Corp Ltd + +pci:v00000123* + ID_VENDOR_FROM_DATABASE=General Dynamics + +pci:v0000018A* + ID_VENDOR_FROM_DATABASE=LevelOne + +pci:v0000018Ad00000106* + ID_MODEL_FROM_DATABASE=FPC-0106TX misprogrammed [RTL81xx] + +pci:v0000021B* + ID_VENDOR_FROM_DATABASE=Compaq Computer Corporation + +pci:v0000021Bd00008139* + ID_MODEL_FROM_DATABASE=HNE-300 (RealTek RTL8139c) [iPaq Networking] + +pci:v00000270* + ID_VENDOR_FROM_DATABASE=Hauppauge computer works Inc. (Wrong ID) + +pci:v000002AC* + ID_VENDOR_FROM_DATABASE=SpeedStream + +pci:v000002ACd00001012* + ID_MODEL_FROM_DATABASE=1012 PCMCIA 10/100 Ethernet Card [RTL81xx] + +pci:v00000303* + ID_VENDOR_FROM_DATABASE=Hewlett-Packard Company (Wrong ID) + +pci:v00000308* + ID_VENDOR_FROM_DATABASE=ZyXEL Communications Corporation (Wrong ID) + +pci:v00000315* + ID_VENDOR_FROM_DATABASE=SK-Electronics Co., Ltd. + +pci:v00000357* + ID_VENDOR_FROM_DATABASE=TTTech Computertechnik AG (Wrong ID) + +pci:v00000357d0000000A* + ID_MODEL_FROM_DATABASE=TTP-Monitoring Card V2.0 + +pci:v00000432* + ID_VENDOR_FROM_DATABASE=SCM Microsystems, Inc. + +pci:v00000432d00000001* + ID_MODEL_FROM_DATABASE=Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet] + +pci:v00000675* + ID_VENDOR_FROM_DATABASE=Dynalink + +pci:v00000675d00001700* + ID_MODEL_FROM_DATABASE=IS64PH ISDN Adapter + +pci:v00000675d00001702* + ID_MODEL_FROM_DATABASE=IS64PH ISDN Adapter + +pci:v00000675d00001703* + ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) + +pci:v00000675d00001704* + ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, D, C) + +pci:v00000721* + ID_VENDOR_FROM_DATABASE=Sapphire, Inc. + +pci:v00000777* + ID_VENDOR_FROM_DATABASE=Ubiquiti Networks, Inc. + +pci:v00000795* + ID_VENDOR_FROM_DATABASE=Wired Inc. + +pci:v00000795d00006663* + ID_MODEL_FROM_DATABASE=Butane II (MPEG2 encoder board) + +pci:v00000795d00006666* + ID_MODEL_FROM_DATABASE=MediaPress (MPEG2 encoder board) + +pci:v000007D1* + ID_VENDOR_FROM_DATABASE=D-Link System Inc + +pci:v00000925* + ID_VENDOR_FROM_DATABASE=VIA Technologies, Inc. (Wrong ID) + +pci:v00000A89* + ID_VENDOR_FROM_DATABASE=BREA Technologies Inc + +pci:v00000B0B* + ID_VENDOR_FROM_DATABASE=Rhino Equipment Corp. + +pci:v00000B0Bd00000105* + ID_MODEL_FROM_DATABASE=Rhino R1T1 + +pci:v00000B0Bd00000205* + ID_MODEL_FROM_DATABASE=Rhino R4FXO + +pci:v00000B0Bd00000206* + ID_MODEL_FROM_DATABASE=RCB4FXO 4-channel FXO analog telphony card + +pci:v00000B0Bd00000305* + ID_MODEL_FROM_DATABASE=Rhino R4T1 + +pci:v00000B0Bd00000405* + ID_MODEL_FROM_DATABASE=Rhino R8FXX + +pci:v00000B0Bd00000406* + ID_MODEL_FROM_DATABASE=RCB8FXX 8-channel modular analog telphony card + +pci:v00000B0Bd00000505* + ID_MODEL_FROM_DATABASE=Rhino R24FXX + +pci:v00000B0Bd00000506* + ID_MODEL_FROM_DATABASE=RCB24FXS 24-Channel FXS analog telphony card + +pci:v00000B0Bd00000605* + ID_MODEL_FROM_DATABASE=Rhino R2T1 + +pci:v00000B0Bd00000705* + ID_MODEL_FROM_DATABASE=Rhino R24FXS + +pci:v00000B0Bd00000706* + ID_MODEL_FROM_DATABASE=RCB24FXO 24-Channel FXO analog telphony card + +pci:v00000B0Bd00000905* + ID_MODEL_FROM_DATABASE=R1T3 Single T3 Digital Telephony Card + +pci:v00000B0Bd00000906* + ID_MODEL_FROM_DATABASE=RCB24FXX 24-channel modular analog telphony card + +pci:v00000B0Bd00000A06* + ID_MODEL_FROM_DATABASE=RCB672FXX 672-channel modular analog telphony card + +pci:v00000E11* + ID_VENDOR_FROM_DATABASE=Compaq Computer Corporation + +pci:v00000E11d00000001* + ID_MODEL_FROM_DATABASE=PCI to EISA Bridge + +pci:v00000E11d00000002* + ID_MODEL_FROM_DATABASE=PCI to ISA Bridge + +pci:v00000E11d00000046* + ID_MODEL_FROM_DATABASE=Smart Array 64xx + +pci:v00000E11d00000046sv00000E11sd00004091* + ID_MODEL_FROM_DATABASE=Smart Array 6i + +pci:v00000E11d00000046sv00000E11sd0000409A* + ID_MODEL_FROM_DATABASE=Smart Array 641 + +pci:v00000E11d00000046sv00000E11sd0000409B* + ID_MODEL_FROM_DATABASE=Smart Array 642 + +pci:v00000E11d00000046sv00000E11sd0000409C* + ID_MODEL_FROM_DATABASE=Smart Array 6400 + +pci:v00000E11d00000046sv00000E11sd0000409D* + ID_MODEL_FROM_DATABASE=Smart Array 6400 EM + +pci:v00000E11d00000049* + ID_MODEL_FROM_DATABASE=NC7132 Gigabit Upgrade Module + +pci:v00000E11d0000004A* + ID_MODEL_FROM_DATABASE=NC6136 Gigabit Server Adapter + +pci:v00000E11d0000005A* + ID_MODEL_FROM_DATABASE=Remote Insight II board - Lights-Out + +pci:v00000E11d0000007C* + ID_MODEL_FROM_DATABASE=NC7770 1000BaseTX + +pci:v00000E11d0000007D* + ID_MODEL_FROM_DATABASE=NC6770 1000BaseTX + +pci:v00000E11d00000085* + ID_MODEL_FROM_DATABASE=NC7780 1000BaseTX + +pci:v00000E11d000000B1* + ID_MODEL_FROM_DATABASE=Remote Insight II board - PCI device + +pci:v00000E11d000000BB* + ID_MODEL_FROM_DATABASE=NC7760 + +pci:v00000E11d000000CA* + ID_MODEL_FROM_DATABASE=NC7771 + +pci:v00000E11d000000CB* + ID_MODEL_FROM_DATABASE=NC7781 + +pci:v00000E11d000000CF* + ID_MODEL_FROM_DATABASE=NC7772 + +pci:v00000E11d000000D0* + ID_MODEL_FROM_DATABASE=NC7782 + +pci:v00000E11d000000D1* + ID_MODEL_FROM_DATABASE=NC7783 + +pci:v00000E11d000000E3* + ID_MODEL_FROM_DATABASE=NC7761 + +pci:v00000E11d00000508* + ID_MODEL_FROM_DATABASE=Netelligent 4/16 Token Ring + +pci:v00000E11d00001000* + ID_MODEL_FROM_DATABASE=Triflex/Pentium Bridge, Model 1000 + +pci:v00000E11d00002000* + ID_MODEL_FROM_DATABASE=Triflex/Pentium Bridge, Model 2000 + +pci:v00000E11d00003032* + ID_MODEL_FROM_DATABASE=QVision 1280/p + +pci:v00000E11d00003033* + ID_MODEL_FROM_DATABASE=QVision 1280/p + +pci:v00000E11d00003034* + ID_MODEL_FROM_DATABASE=QVision 1280/p + +pci:v00000E11d00004000* + ID_MODEL_FROM_DATABASE=4000 [Triflex] + +pci:v00000E11d00004040* + ID_MODEL_FROM_DATABASE=Integrated Array + +pci:v00000E11d00004048* + ID_MODEL_FROM_DATABASE=Compaq Raid LC2 + +pci:v00000E11d00004050* + ID_MODEL_FROM_DATABASE=Smart Array 4200 + +pci:v00000E11d00004051* + ID_MODEL_FROM_DATABASE=Smart Array 4250ES + +pci:v00000E11d00004058* + ID_MODEL_FROM_DATABASE=Smart Array 431 + +pci:v00000E11d00004070* + ID_MODEL_FROM_DATABASE=Smart Array 5300 + +pci:v00000E11d00004080* + ID_MODEL_FROM_DATABASE=Smart Array 5i + +pci:v00000E11d00004082* + ID_MODEL_FROM_DATABASE=Smart Array 532 + +pci:v00000E11d00004083* + ID_MODEL_FROM_DATABASE=Smart Array 5312 + +pci:v00000E11d00004091* + ID_MODEL_FROM_DATABASE=Smart Array 6i + +pci:v00000E11d0000409A* + ID_MODEL_FROM_DATABASE=Smart Array 641 + +pci:v00000E11d0000409B* + ID_MODEL_FROM_DATABASE=Smart Array 642 + +pci:v00000E11d0000409C* + ID_MODEL_FROM_DATABASE=Smart Array 6400 + +pci:v00000E11d0000409D* + ID_MODEL_FROM_DATABASE=Smart Array 6400 EM + +pci:v00000E11d00006010* + ID_MODEL_FROM_DATABASE=HotPlug PCI Bridge 6010 + +pci:v00000E11d00007020* + ID_MODEL_FROM_DATABASE=USB Controller + +pci:v00000E11d0000A0EC* + ID_MODEL_FROM_DATABASE=Fibre Channel Host Controller + +pci:v00000E11d0000A0F0* + ID_MODEL_FROM_DATABASE=Advanced System Management Controller + +pci:v00000E11d0000A0F0sv00000E11sd0000B0F3* + ID_MODEL_FROM_DATABASE=ProLiant DL360 + +pci:v00000E11d0000A0F3* + ID_MODEL_FROM_DATABASE=Triflex PCI to ISA Bridge + +pci:v00000E11d0000A0F7* + ID_MODEL_FROM_DATABASE=PCI Hotplug Controller + +pci:v00000E11d0000A0F7sv00008086sd0000002A* + ID_MODEL_FROM_DATABASE=PCI Hotplug Controller A + +pci:v00000E11d0000A0F7sv00008086sd0000002B* + ID_MODEL_FROM_DATABASE=PCI Hotplug Controller B + +pci:v00000E11d0000A0F8* + ID_MODEL_FROM_DATABASE=ZFMicro Chipset USB + +pci:v00000E11d0000A0FC* + ID_MODEL_FROM_DATABASE=FibreChannel HBA Tachyon + +pci:v00000E11d0000AE10* + ID_MODEL_FROM_DATABASE=Smart-2/P RAID Controller + +pci:v00000E11d0000AE10sv00000E11sd00004030* + ID_MODEL_FROM_DATABASE=Smart-2/P Array Controller + +pci:v00000E11d0000AE10sv00000E11sd00004031* + ID_MODEL_FROM_DATABASE=Smart-2SL Array Controller + +pci:v00000E11d0000AE10sv00000E11sd00004032* + ID_MODEL_FROM_DATABASE=Smart Array 3200 Controller + +pci:v00000E11d0000AE10sv00000E11sd00004033* + ID_MODEL_FROM_DATABASE=Smart Array 3100ES Controller + +pci:v00000E11d0000AE10sv00000E11sd00004034* + ID_MODEL_FROM_DATABASE=Smart Array 221 Controller + +pci:v00000E11d0000AE29* + ID_MODEL_FROM_DATABASE=MIS-L + +pci:v00000E11d0000AE2A* + ID_MODEL_FROM_DATABASE=MPC + +pci:v00000E11d0000AE2B* + ID_MODEL_FROM_DATABASE=MIS-E + +pci:v00000E11d0000AE31* + ID_MODEL_FROM_DATABASE=System Management Controller + +pci:v00000E11d0000AE32* + ID_MODEL_FROM_DATABASE=Netelligent 10/100 TX PCI UTP + +pci:v00000E11d0000AE33* + ID_MODEL_FROM_DATABASE=Triflex Dual EIDE Controller + +pci:v00000E11d0000AE34* + ID_MODEL_FROM_DATABASE=Netelligent 10 T PCI UTP + +pci:v00000E11d0000AE35* + ID_MODEL_FROM_DATABASE=Integrated NetFlex-3/P + +pci:v00000E11d0000AE40* + ID_MODEL_FROM_DATABASE=Netelligent Dual 10/100 TX PCI UTP + +pci:v00000E11d0000AE43* + ID_MODEL_FROM_DATABASE=Netelligent Integrated 10/100 TX UTP + +pci:v00000E11d0000AE69* + ID_MODEL_FROM_DATABASE=CETUS-L + +pci:v00000E11d0000AE6C* + ID_MODEL_FROM_DATABASE=Northstar + +pci:v00000E11d0000AE6D* + ID_MODEL_FROM_DATABASE=NorthStar CPU to PCI Bridge + +pci:v00000E11d0000B011* + ID_MODEL_FROM_DATABASE=Netelligent 10/100 TX Embedded UTP + +pci:v00000E11d0000B012* + ID_MODEL_FROM_DATABASE=Netelligent 10 T/2 PCI UTP/Coax + +pci:v00000E11d0000B01E* + ID_MODEL_FROM_DATABASE=NC3120 Fast Ethernet NIC + +pci:v00000E11d0000B01F* + ID_MODEL_FROM_DATABASE=NC3122 Fast Ethernet NIC + +pci:v00000E11d0000B02F* + ID_MODEL_FROM_DATABASE=NC1120 Ethernet NIC + +pci:v00000E11d0000B030* + ID_MODEL_FROM_DATABASE=Netelligent 10/100 TX UTP + +pci:v00000E11d0000B04A* + ID_MODEL_FROM_DATABASE=10/100 TX PCI Intel WOL UTP Controller + +pci:v00000E11d0000B060* + ID_MODEL_FROM_DATABASE=Smart Array 5300 Controller + +pci:v00000E11d0000B0C6* + ID_MODEL_FROM_DATABASE=NC3161 Fast Ethernet NIC + +pci:v00000E11d0000B0C7* + ID_MODEL_FROM_DATABASE=NC3160 Fast Ethernet NIC + +pci:v00000E11d0000B0D7* + ID_MODEL_FROM_DATABASE=NC3121 Fast Ethernet NIC + +pci:v00000E11d0000B0DD* + ID_MODEL_FROM_DATABASE=NC3131 Fast Ethernet NIC + +pci:v00000E11d0000B0DE* + ID_MODEL_FROM_DATABASE=NC3132 Fast Ethernet Module + +pci:v00000E11d0000B0DF* + ID_MODEL_FROM_DATABASE=NC6132 Gigabit Module + +pci:v00000E11d0000B0E0* + ID_MODEL_FROM_DATABASE=NC6133 Gigabit Module + +pci:v00000E11d0000B0E1* + ID_MODEL_FROM_DATABASE=NC3133 Fast Ethernet Module + +pci:v00000E11d0000B123* + ID_MODEL_FROM_DATABASE=NC6134 Gigabit NIC + +pci:v00000E11d0000B134* + ID_MODEL_FROM_DATABASE=NC3163 Fast Ethernet NIC + +pci:v00000E11d0000B13C* + ID_MODEL_FROM_DATABASE=NC3162 Fast Ethernet NIC + +pci:v00000E11d0000B144* + ID_MODEL_FROM_DATABASE=NC3123 Fast Ethernet NIC + +pci:v00000E11d0000B163* + ID_MODEL_FROM_DATABASE=NC3134 Fast Ethernet NIC + +pci:v00000E11d0000B164* + ID_MODEL_FROM_DATABASE=NC3165 Fast Ethernet Upgrade Module + +pci:v00000E11d0000B178* + ID_MODEL_FROM_DATABASE=Smart Array 5i/532 + +pci:v00000E11d0000B178sv00000E11sd00004080* + ID_MODEL_FROM_DATABASE=Smart Array 5i + +pci:v00000E11d0000B178sv00000E11sd00004082* + ID_MODEL_FROM_DATABASE=Smart Array 532 + +pci:v00000E11d0000B178sv00000E11sd00004083* + ID_MODEL_FROM_DATABASE=Smart Array 5312 + +pci:v00000E11d0000B1A4* + ID_MODEL_FROM_DATABASE=NC7131 Gigabit Server Adapter + +pci:v00000E11d0000B200* + ID_MODEL_FROM_DATABASE=Memory Hot-Plug Controller + +pci:v00000E11d0000B203* + ID_MODEL_FROM_DATABASE=Integrated Lights Out Controller + +pci:v00000E11d0000B204* + ID_MODEL_FROM_DATABASE=Integrated Lights Out Processor + +pci:v00000E11d0000C000* + ID_MODEL_FROM_DATABASE=Remote Insight Lights-Out Edition + +pci:v00000E11d0000F130* + ID_MODEL_FROM_DATABASE=NetFlex-3/P ThunderLAN 1.0 + +pci:v00000E11d0000F150* + ID_MODEL_FROM_DATABASE=NetFlex-3/P ThunderLAN 2.3 + +pci:v00000EAC* + ID_VENDOR_FROM_DATABASE=SHF Communication Technologies AG + +pci:v00000EACd00000008* + ID_MODEL_FROM_DATABASE=Ethernet Powerlink Managing Node 01 + +pci:v00000F62* + ID_VENDOR_FROM_DATABASE=Acrox Technologies Co., Ltd. + +pci:v00001000* + ID_VENDOR_FROM_DATABASE=LSI Logic / Symbios Logic + +pci:v00001000d00000001* + ID_MODEL_FROM_DATABASE=53c810 + +pci:v00001000d00000001sv00001000sd00001000* + ID_MODEL_FROM_DATABASE=LSI53C810AE PCI to SCSI I/O Processor + +pci:v00001000d00000002* + ID_MODEL_FROM_DATABASE=53c820 + +pci:v00001000d00000003* + ID_MODEL_FROM_DATABASE=53c825 + +pci:v00001000d00000003sv00001000sd00001000* + ID_MODEL_FROM_DATABASE=LSI53C825AE PCI to SCSI I/O Processor (Ultra Wide) + +pci:v00001000d00000004* + ID_MODEL_FROM_DATABASE=53c815 + +pci:v00001000d00000005* + ID_MODEL_FROM_DATABASE=53c810AP + +pci:v00001000d00000006* + ID_MODEL_FROM_DATABASE=53c860 + +pci:v00001000d00000006sv00001000sd00001000* + ID_MODEL_FROM_DATABASE=LSI53C860E PCI to Ultra SCSI I/O Processor + +pci:v00001000d0000000A* + ID_MODEL_FROM_DATABASE=53c1510 + +pci:v00001000d0000000Asv00000E11sd0000B143* + ID_MODEL_FROM_DATABASE=Integrated Dual Channel Wide Ultra2 SCSI Controller + +pci:v00001000d0000000Asv00001000sd00001000* + ID_MODEL_FROM_DATABASE=LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode) + +pci:v00001000d0000000B* + ID_MODEL_FROM_DATABASE=53C896/897 + +pci:v00001000d0000000Bsv00000E11sd00006004* + ID_MODEL_FROM_DATABASE=EOB003 Series SCSI host adapter + +pci:v00001000d0000000Bsv00001000sd00001000* + ID_MODEL_FROM_DATABASE=LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller + +pci:v00001000d0000000Bsv00001000sd00001010* + ID_MODEL_FROM_DATABASE=LSI22910 PCI to Dual Channel Ultra2 SCSI host adapter + +pci:v00001000d0000000Bsv00001000sd00001020* + ID_MODEL_FROM_DATABASE=LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter + +pci:v00001000d0000000Bsv000013E9sd00001000* + ID_MODEL_FROM_DATABASE=6221L-4U (Dual U2W SCSI, dual 10/100TX, graphics) + +pci:v00001000d0000000C* + ID_MODEL_FROM_DATABASE=53c895 + +pci:v00001000d0000000Csv00001000sd00001010* + ID_MODEL_FROM_DATABASE=LSI8951U PCI to Ultra2 SCSI host adapter + +pci:v00001000d0000000Csv00001000sd00001020* + ID_MODEL_FROM_DATABASE=LSI8952U PCI to Ultra2 SCSI host adapter + +pci:v00001000d0000000Csv00001DE1sd00003906* + ID_MODEL_FROM_DATABASE=DC-390U2B SCSI adapter + +pci:v00001000d0000000Csv00001DE1sd00003907* + ID_MODEL_FROM_DATABASE=DC-390U2W + +pci:v00001000d0000000D* + ID_MODEL_FROM_DATABASE=53c885 + +pci:v00001000d0000000F* + ID_MODEL_FROM_DATABASE=53c875 + +pci:v00001000d0000000Fsv00000E11sd00007004* + ID_MODEL_FROM_DATABASE=Embedded Ultra Wide SCSI Controller + +pci:v00001000d0000000Fsv00001000sd00001000* + ID_MODEL_FROM_DATABASE=LSI53C876/E PCI to Dual Channel SCSI Controller + +pci:v00001000d0000000Fsv00001000sd00001010* + ID_MODEL_FROM_DATABASE=LSI22801 PCI to Dual Channel Ultra SCSI host adapter + +pci:v00001000d0000000Fsv00001000sd00001020* + ID_MODEL_FROM_DATABASE=LSI22802 PCI to Dual Channel Ultra SCSI host adapter + +pci:v00001000d0000000Fsv00001092sd00008760* + ID_MODEL_FROM_DATABASE=FirePort 40 Dual SCSI Controller + +pci:v00001000d0000000Fsv00001775sd000010D0* + ID_MODEL_FROM_DATABASE=V5D Single Board Computer Wide Ultra SCSI + +pci:v00001000d0000000Fsv00001775sd000010D1* + ID_MODEL_FROM_DATABASE=V5D Single Board Computer Ultra SCSI + +pci:v00001000d0000000Fsv00001DE1sd00003904* + ID_MODEL_FROM_DATABASE=DC390F/U Ultra Wide SCSI Adapter + +pci:v00001000d0000000Fsv00004C53sd00001000* + ID_MODEL_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard + +pci:v00001000d0000000Fsv00004C53sd00001050* + ID_MODEL_FROM_DATABASE=CT7 mainboard + +pci:v00001000d00000010* + ID_MODEL_FROM_DATABASE=53C1510 + +pci:v00001000d00000010sv00000E11sd00004040* + ID_MODEL_FROM_DATABASE=Integrated Smart Array Controller + +pci:v00001000d00000010sv00000E11sd00004048* + ID_MODEL_FROM_DATABASE=RAID LC2 Controller + +pci:v00001000d00000010sv00001000sd00001000* + ID_MODEL_FROM_DATABASE=53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Intelligent mode) + +pci:v00001000d00000012* + ID_MODEL_FROM_DATABASE=53c895a + +pci:v00001000d00000012sv00001000sd00001000* + ID_MODEL_FROM_DATABASE=LSI53C895A PCI to Ultra2 SCSI Controller + +pci:v00001000d00000013* + ID_MODEL_FROM_DATABASE=53c875a + +pci:v00001000d00000013sv00001000sd00001000* + ID_MODEL_FROM_DATABASE=LSI53C875A PCI to Ultra SCSI Controller + +pci:v00001000d00000020* + ID_MODEL_FROM_DATABASE=53c1010 Ultra3 SCSI Adapter + +pci:v00001000d00000020sv00001000sd00001000* + ID_MODEL_FROM_DATABASE=LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller + +pci:v00001000d00000020sv0000107Bsd00001040* + ID_MODEL_FROM_DATABASE=Server Onboard 53C1010-33 + +pci:v00001000d00000020sv00001DE1sd00001020* + ID_MODEL_FROM_DATABASE=DC-390U3W + +pci:v00001000d00000021* + ID_MODEL_FROM_DATABASE=53c1010 66MHz Ultra3 SCSI Adapter + +pci:v00001000d00000021sv00001000sd00001000* + ID_MODEL_FROM_DATABASE=LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller + +pci:v00001000d00000021sv00001000sd00001010* + ID_MODEL_FROM_DATABASE=Asus TR-DLS onboard 53C1010-66 + +pci:v00001000d00000021sv0000103Csd00001300* + ID_MODEL_FROM_DATABASE=Ultra160 SCSI [AB306A] + +pci:v00001000d00000021sv0000103Csd00001310* + ID_MODEL_FROM_DATABASE=Ultra160 SCSI [A9918A] + +pci:v00001000d00000021sv0000103Csd00001330* + ID_MODEL_FROM_DATABASE=Ultra160 SCSI [A7059A] + +pci:v00001000d00000021sv0000103Csd00001340* + ID_MODEL_FROM_DATABASE=Ultra160 SCSI [A7060A] + +pci:v00001000d00000021sv0000124Bsd00001070* + ID_MODEL_FROM_DATABASE=PMC-USCSI3 + +pci:v00001000d00000021sv00004C53sd00001080* + ID_MODEL_FROM_DATABASE=CT8 mainboard + +pci:v00001000d00000021sv00004C53sd00001300* + ID_MODEL_FROM_DATABASE=P017 mezzanine (32-bit PMC) + +pci:v00001000d00000021sv00004C53sd00001310* + ID_MODEL_FROM_DATABASE=P017 mezzanine (64-bit PMC) + +pci:v00001000d0000002F* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 IOV [Thunderbolt] + +pci:v00001000d0000002Fsv00001028sd00001F3E* + ID_MODEL_FROM_DATABASE=SPERC 8 + +pci:v00001000d00000030* + ID_MODEL_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI + +pci:v00001000d00000030sv00000E11sd000000DA* + ID_MODEL_FROM_DATABASE=ProLiant ML 350 + +pci:v00001000d00000030sv00001028sd00000123* + ID_MODEL_FROM_DATABASE=LSI Logic 1020/1030 + +pci:v00001000d00000030sv00001028sd0000014A* + ID_MODEL_FROM_DATABASE=LSI Logic 1020/1030 + +pci:v00001000d00000030sv00001028sd0000016C* + ID_MODEL_FROM_DATABASE=PowerEdge 1850 MPT Fusion SCSI/RAID (Perc 4) + +pci:v00001000d00000030sv00001028sd00000183* + ID_MODEL_FROM_DATABASE=LSI Logic 1020/1030 + +pci:v00001000d00000030sv00001028sd0000018A* + ID_MODEL_FROM_DATABASE=PERC 4/IM + +pci:v00001000d00000030sv00001028sd00001010* + ID_MODEL_FROM_DATABASE=LSI U320 SCSI Controller + +pci:v00001000d00000030sv0000103Csd000012C5* + ID_MODEL_FROM_DATABASE=Ultra320 SCSI [A7173A] + +pci:v00001000d00000030sv0000103Csd00001323* + ID_MODEL_FROM_DATABASE=Core I/O LAN/SCSI Combo [AB314A] + +pci:v00001000d00000030sv0000103Csd00003108* + ID_MODEL_FROM_DATABASE=Single Channel Ultra320 SCSI HBA G2 + +pci:v00001000d00000030sv0000124Bsd00001170* + ID_MODEL_FROM_DATABASE=PMC-USCSI320 + +pci:v00001000d00000030sv000015ADsd00001976* + ID_MODEL_FROM_DATABASE=LSI Logic Parallel SCSI Controller + +pci:v00001000d00000030sv00001734sd00001052* + ID_MODEL_FROM_DATABASE=PRIMERGY BX/RX/TX S2 series onboard SCSI(IME) + +pci:v00001000d00000031* + ID_MODEL_FROM_DATABASE=53c1030ZC PCI-X Fusion-MPT Dual Ultra320 SCSI + +pci:v00001000d00000032* + ID_MODEL_FROM_DATABASE=53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI + +pci:v00001000d00000032sv00001000sd00001000* + ID_MODEL_FROM_DATABASE=LSI53C1020/1030 PCI-X to Ultra320 SCSI Controller + +pci:v00001000d00000033* + ID_MODEL_FROM_DATABASE=1030ZC_53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI + +pci:v00001000d00000040* + ID_MODEL_FROM_DATABASE=53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI + +pci:v00001000d00000040sv00001000sd00000033* + ID_MODEL_FROM_DATABASE=MegaRAID SCSI 320-2XR + +pci:v00001000d00000040sv00001000sd00000066* + ID_MODEL_FROM_DATABASE=MegaRAID SCSI 320-2XRWS + +pci:v00001000d00000041* + ID_MODEL_FROM_DATABASE=53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI + +pci:v00001000d00000050* + ID_MODEL_FROM_DATABASE=SAS1064 PCI-X Fusion-MPT SAS + +pci:v00001000d00000050sv00001028sd00001F04* + ID_MODEL_FROM_DATABASE=SAS 5/E + +pci:v00001000d00000050sv00001028sd00001F09* + ID_MODEL_FROM_DATABASE=SAS 5i/R + +pci:v00001000d00000054* + ID_MODEL_FROM_DATABASE=SAS1068 PCI-X Fusion-MPT SAS + +pci:v00001000d00000054sv00001028sd00001F04* + ID_MODEL_FROM_DATABASE=SAS 5/E Adapter Controller + +pci:v00001000d00000054sv00001028sd00001F05* + ID_MODEL_FROM_DATABASE=SAS 5/i Adapter Controller + +pci:v00001000d00000054sv00001028sd00001F06* + ID_MODEL_FROM_DATABASE=SAS 5/i Integrated Controller + +pci:v00001000d00000054sv00001028sd00001F07* + ID_MODEL_FROM_DATABASE=SAS 5/iR Integrated RAID Controller + +pci:v00001000d00000054sv00001028sd00001F08* + ID_MODEL_FROM_DATABASE=SAS 5/iR Integrated RAID Controller + +pci:v00001000d00000054sv00001028sd00001F09* + ID_MODEL_FROM_DATABASE=SAS 5/iR Adapter RAID Controller + +pci:v00001000d00000054sv000015ADsd00001976* + ID_MODEL_FROM_DATABASE=SAS Controller + +pci:v00001000d00000055* + ID_MODEL_FROM_DATABASE=SAS1068 PCI-X Fusion-MPT SAS + +pci:v00001000d00000055sv00001033sd00008336* + ID_MODEL_FROM_DATABASE=SAS1068 + +pci:v00001000d00000056* + ID_MODEL_FROM_DATABASE=SAS1064ET PCI-Express Fusion-MPT SAS + +pci:v00001000d00000056sv00001014sd000003BB* + ID_MODEL_FROM_DATABASE=ServeRAID BR10il SAS/SATA Controller v2 + +pci:v00001000d00000057* + ID_MODEL_FROM_DATABASE=M1064E MegaRAID SAS + +pci:v00001000d00000057sv00008086sd0000346C* + ID_MODEL_FROM_DATABASE=Embedded Software RAID Technology II (ESTRII) + +pci:v00001000d00000058* + ID_MODEL_FROM_DATABASE=SAS1068E PCI-Express Fusion-MPT SAS + +pci:v00001000d00000058sv00001000sd00003140* + ID_MODEL_FROM_DATABASE=SAS3081E-R 8-Port SAS/SATA Host Bus Adapter + +pci:v00001000d00000058sv00001028sd0000021D* + ID_MODEL_FROM_DATABASE=SAS 6/iR Integrated Workstations RAID Controller + +pci:v00001000d00000058sv00001028sd00001F0E* + ID_MODEL_FROM_DATABASE=SAS 6/iR Adapter RAID Controller + +pci:v00001000d00000058sv00001028sd00001F0F* + ID_MODEL_FROM_DATABASE=SAS 6/iR Integrated Blades RAID Controller + +pci:v00001000d00000058sv00001028sd00001F10* + ID_MODEL_FROM_DATABASE=SAS 6/iR Integrated RAID Controller + +pci:v00001000d00000058sv0000103Csd00003229* + ID_MODEL_FROM_DATABASE=SC44Ge Host Bus Adapter + +pci:v00001000d00000059* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 8208ELP/8208ELP + +pci:v00001000d0000005A* + ID_MODEL_FROM_DATABASE=SAS1066E PCI-Express Fusion-MPT SAS + +pci:v00001000d0000005B* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] + +pci:v00001000d0000005Bsv00001000sd00009265* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9265-8i + +pci:v00001000d0000005Bsv00001000sd00009266* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9266-8i + +pci:v00001000d0000005Bsv00001000sd00009267* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9267-8i + +pci:v00001000d0000005Bsv00001000sd00009268* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9265CV-8i / 9270CV-8i + +pci:v00001000d0000005Bsv00001000sd00009269* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9266-4i + +pci:v00001000d0000005Bsv00001000sd00009270* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9270-8i + +pci:v00001000d0000005Bsv00001000sd00009271* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9271-8i + +pci:v00001000d0000005Bsv00001000sd00009272* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9272-8i + +pci:v00001000d0000005Bsv00001000sd00009273* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9270CV-8i + +pci:v00001000d0000005Bsv00001000sd00009274* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9270-4i + +pci:v00001000d0000005Bsv00001000sd00009275* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9271-8iCC + +pci:v00001000d0000005Bsv00001000sd00009276* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9271-4i + +pci:v00001000d0000005Bsv00001000sd00009285* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9285-8e + +pci:v00001000d0000005Bsv00001000sd00009288* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9285CV-8e + +pci:v00001000d0000005Bsv00001000sd00009290* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9286-8e + +pci:v00001000d0000005Bsv00001000sd00009291* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9286CV-8e + +pci:v00001000d0000005Bsv00001000sd00009295* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9286CV-8eCC + +pci:v00001000d0000005Bsv00001014sd0000040B* + ID_MODEL_FROM_DATABASE=ServeRAID M5110 SAS/SATA Controller + +pci:v00001000d0000005Bsv00001014sd00000412* + ID_MODEL_FROM_DATABASE=ServeRAID M5110e SAS/SATA Controller + +pci:v00001000d0000005Bsv00001028sd00001F2D* + ID_MODEL_FROM_DATABASE=PERC H810 Adapter + +pci:v00001000d0000005Bsv00001028sd00001F30* + ID_MODEL_FROM_DATABASE=PERC H710 Embedded + +pci:v00001000d0000005Bsv00001028sd00001F31* + ID_MODEL_FROM_DATABASE=PERC H710P Adapter + +pci:v00001000d0000005Bsv00001028sd00001F33* + ID_MODEL_FROM_DATABASE=PERC H710P Mini (for blades) + +pci:v00001000d0000005Bsv00001028sd00001F34* + ID_MODEL_FROM_DATABASE=PERC H710P Mini (for monolithics) + +pci:v00001000d0000005Bsv00001028sd00001F35* + ID_MODEL_FROM_DATABASE=PERC H710 Adapter + +pci:v00001000d0000005Bsv00001028sd00001F37* + ID_MODEL_FROM_DATABASE=PERC H710 Mini (for blades) + +pci:v00001000d0000005Bsv00001028sd00001F38* + ID_MODEL_FROM_DATABASE=PERC H710 Mini (for monolithics) + +pci:v00001000d0000005Bsv00008086sd00003513* + ID_MODEL_FROM_DATABASE=RMS25CB080 RAID Controller + +pci:v00001000d0000005C* + ID_MODEL_FROM_DATABASE=SAS1064A PCI-X Fusion-MPT SAS + +pci:v00001000d0000005D* + ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] + +pci:v00001000d0000005E* + ID_MODEL_FROM_DATABASE=SAS1066 PCI-X Fusion-MPT SAS + +pci:v00001000d0000005F* + ID_MODEL_FROM_DATABASE=MegaRAID SAS-3 3008 [Fury] + +pci:v00001000d00000060* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078 + +pci:v00001000d00000060sv00001000sd00001006* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 8888ELP + +pci:v00001000d00000060sv00001000sd0000100A* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 8708ELP + +pci:v00001000d00000060sv00001000sd0000100E* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 8884E + +pci:v00001000d00000060sv00001000sd0000100F* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 8708E + +pci:v00001000d00000060sv00001000sd00001010* + ID_MODEL_FROM_DATABASE=MegaRAID SATA 350-8ELP + +pci:v00001000d00000060sv00001000sd00001011* + ID_MODEL_FROM_DATABASE=MegaRAID SATA 350-4ELP + +pci:v00001000d00000060sv00001000sd00001012* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 8704ELP + +pci:v00001000d00000060sv00001000sd00001016* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 8880EM2 + +pci:v00001000d00000060sv00001014sd00000363* + ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB + +pci:v00001000d00000060sv00001014sd00000364* + ID_MODEL_FROM_DATABASE=SystemX MegaRAID SAS 8808E + +pci:v00001000d00000060sv00001014sd00000365* + ID_MODEL_FROM_DATABASE=SystemX MegaRAID SAS 8884E + +pci:v00001000d00000060sv00001014sd00000379* + ID_MODEL_FROM_DATABASE=SystemX MegaRAID SAS 8880EM2 + +pci:v00001000d00000060sv00001028sd00001F0A* + ID_MODEL_FROM_DATABASE=PERC 6/E Adapter RAID Controller + +pci:v00001000d00000060sv00001028sd00001F0B* + ID_MODEL_FROM_DATABASE=PERC 6/i Adapter RAID Controller + +pci:v00001000d00000060sv00001028sd00001F0C* + ID_MODEL_FROM_DATABASE=PERC 6/i Integrated RAID Controller + +pci:v00001000d00000060sv00001028sd00001F0D* + ID_MODEL_FROM_DATABASE=PERC 6/i Integrated RAID Controller + +pci:v00001000d00000060sv00001028sd00001F11* + ID_MODEL_FROM_DATABASE=CERC 6/i Integrated RAID Controller + +pci:v00001000d00000060sv00001033sd0000835A* + ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB + +pci:v00001000d00000060sv00001043sd0000824D* + ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB + +pci:v00001000d00000060sv00001170sd0000002F* + ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB + +pci:v00001000d00000060sv00001170sd00000036* + ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB + +pci:v00001000d00000060sv000015D9sd0000C080* + ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB + +pci:v00001000d00000060sv000017AAsd00006B7C* + ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB + +pci:v00001000d00000060sv000018A1sd00000003* + ID_MODEL_FROM_DATABASE=LSI MegaRAID SAS PCI Express ROMB + +pci:v00001000d00000060sv00008086sd00001006* + ID_MODEL_FROM_DATABASE=RAID Controller SRCSAS28EP + +pci:v00001000d00000060sv00008086sd0000100A* + ID_MODEL_FROM_DATABASE=RAID Controller SRCSAS28EV + +pci:v00001000d00000060sv00008086sd00001010* + ID_MODEL_FROM_DATABASE=RAID Controller SRCSATA28E + +pci:v00001000d00000060sv00008086sd000034CC* + ID_MODEL_FROM_DATABASE=Integrated RAID Controller SROMBSAS28E + +pci:v00001000d00000060sv00008086sd000034CD* + ID_MODEL_FROM_DATABASE=Integrated RAID Controller SROMBSAS28E + +pci:v00001000d00000060sv00008086sd00003505* + ID_MODEL_FROM_DATABASE=Integrated RAID Controller SROMBSASMP2 + +pci:v00001000d00000062* + ID_MODEL_FROM_DATABASE=SAS1078 PCI-Express Fusion-MPT SAS + +pci:v00001000d00000062sv00001000sd00000062* + ID_MODEL_FROM_DATABASE=SAS1078 PCI-Express Fusion-MPT SAS + +pci:v00001000d00000064* + ID_MODEL_FROM_DATABASE=SAS2116 PCI-Express Fusion-MPT SAS-2 [Meteor] + +pci:v00001000d00000065* + ID_MODEL_FROM_DATABASE=SAS2116 PCI-Express Fusion-MPT SAS-2 [Meteor] + +pci:v00001000d0000006E* + ID_MODEL_FROM_DATABASE=SAS2308 PCI-Express Fusion-MPT SAS-2 + +pci:v00001000d00000070* + ID_MODEL_FROM_DATABASE=SAS2004 PCI-Express Fusion-MPT SAS-2 [Spitfire] + +pci:v00001000d00000071* + ID_MODEL_FROM_DATABASE=MR SAS HBA 2004 + +pci:v00001000d00000072* + ID_MODEL_FROM_DATABASE=SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] + +pci:v00001000d00000072sv00001028sd00001F1C* + ID_MODEL_FROM_DATABASE=6Gbps SAS HBA Adapter + +pci:v00001000d00000072sv00001028sd00001F1D* + ID_MODEL_FROM_DATABASE=PERC H200 Adapter + +pci:v00001000d00000072sv00001028sd00001F1E* + ID_MODEL_FROM_DATABASE=PERC H200 Integrated + +pci:v00001000d00000072sv00001028sd00001F1F* + ID_MODEL_FROM_DATABASE=PERC H200 Modular + +pci:v00001000d00000072sv00001028sd00001F20* + ID_MODEL_FROM_DATABASE=PERC H200 Embedded + +pci:v00001000d00000072sv00001028sd00001F22* + ID_MODEL_FROM_DATABASE=Internal Tape Adapter + +pci:v00001000d00000072sv00008086sd0000350F* + ID_MODEL_FROM_DATABASE=RMS2LL040 RAID Controller + +pci:v00001000d00000073* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] + +pci:v00001000d00000073sv00001000sd00009240* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9240-8i + +pci:v00001000d00000073sv00001000sd00009241* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9240-4i + +pci:v00001000d00000073sv00001000sd000092A0* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9220-8i + +pci:v00001000d00000073sv00001014sd000003B1* + ID_MODEL_FROM_DATABASE=ServeRAID M1015 SAS/SATA Controller + +pci:v00001000d00000073sv00001028sd00001F4E* + ID_MODEL_FROM_DATABASE=PERC H310 Adapter + +pci:v00001000d00000073sv00001028sd00001F4F* + ID_MODEL_FROM_DATABASE=PERC H310 Integrated + +pci:v00001000d00000073sv00001028sd00001F50* + ID_MODEL_FROM_DATABASE=PERC H310 Mini Blades + +pci:v00001000d00000073sv00001028sd00001F51* + ID_MODEL_FROM_DATABASE=PERC H310 Mini Monolithics + +pci:v00001000d00000073sv00001028sd00001F52* + ID_MODEL_FROM_DATABASE=PERC H310 Embedded1 + +pci:v00001000d00000073sv00001028sd00001F53* + ID_MODEL_FROM_DATABASE=PERC H310 Embedded2 + +pci:v00001000d00000073sv00001028sd00001F54* + ID_MODEL_FROM_DATABASE=PERC H310 Reserved + +pci:v00001000d00000073sv00001054sd00003035* + ID_MODEL_FROM_DATABASE=LSI MegaRAID SAS 9240-8i + +pci:v00001000d00000073sv00001137sd00000072* + ID_MODEL_FROM_DATABASE=2004 iMR ROMB + +pci:v00001000d00000073sv00001137sd00000073* + ID_MODEL_FROM_DATABASE=2008 ROMB + +pci:v00001000d00000073sv00001137sd000000B0* + ID_MODEL_FROM_DATABASE=UCSC RAID SAS 2008M-8i + +pci:v00001000d00000073sv00001137sd000000B1* + ID_MODEL_FROM_DATABASE=UCSC RAID SAS 2008M-8i + +pci:v00001000d00000073sv000015D9sd00000400* + ID_MODEL_FROM_DATABASE=Supermicro SMC2008-iMR + +pci:v00001000d00000073sv00001734sd00001177* + ID_MODEL_FROM_DATABASE=RAID Ctrl SAS 6G 0/1 (D2607) + +pci:v00001000d00000073sv00008086sd0000350D* + ID_MODEL_FROM_DATABASE=RMS2AF040 RAID Controller + +pci:v00001000d00000073sv00008086sd00009240* + ID_MODEL_FROM_DATABASE=RAID Controller RS2WC080 + +pci:v00001000d00000073sv00008086sd00009241* + ID_MODEL_FROM_DATABASE=RAID Controller RS2WC040 + +pci:v00001000d00000074* + ID_MODEL_FROM_DATABASE=SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] + +pci:v00001000d00000076* + ID_MODEL_FROM_DATABASE=SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] + +pci:v00001000d00000077* + ID_MODEL_FROM_DATABASE=SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] + +pci:v00001000d00000079* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] + +pci:v00001000d00000079sv00001000sd00009251* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9260-4ix + +pci:v00001000d00000079sv00001000sd00009256* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9260-8ix + +pci:v00001000d00000079sv00001000sd00009260* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9260-4i + +pci:v00001000d00000079sv00001000sd00009261* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9260-8i + +pci:v00001000d00000079sv00001000sd00009262* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9262-8i + +pci:v00001000d00000079sv00001000sd00009263* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9261-8i + +pci:v00001000d00000079sv00001000sd00009264* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9264-8i + +pci:v00001000d00000079sv00001000sd00009267* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9260CV-4i + +pci:v00001000d00000079sv00001000sd00009268* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9260CV-8i + +pci:v00001000d00000079sv00001000sd00009275* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9280-8ex + +pci:v00001000d00000079sv00001000sd00009276* + ID_MODEL_FROM_DATABASE=MR9260-16i + +pci:v00001000d00000079sv00001000sd00009280* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9280-8e + +pci:v00001000d00000079sv00001000sd00009281* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9281-8E + +pci:v00001000d00000079sv00001000sd00009282* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9280-4i4e + +pci:v00001000d00000079sv00001000sd00009290* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9280DE-24i4e + +pci:v00001000d00000079sv00001014sd000003B2* + ID_MODEL_FROM_DATABASE=ServeRAID M5015 SAS/SATA Controller + +pci:v00001000d00000079sv00001014sd000003B3* + ID_MODEL_FROM_DATABASE=ServeRAID M5025 SAS/SATA Controller + +pci:v00001000d00000079sv00001028sd00001F15* + ID_MODEL_FROM_DATABASE=PERC H800 Adapter + +pci:v00001000d00000079sv00001028sd00001F16* + ID_MODEL_FROM_DATABASE=PERC H700 Adapter + +pci:v00001000d00000079sv00001028sd00001F17* + ID_MODEL_FROM_DATABASE=PERC H700 Integrated + +pci:v00001000d00000079sv00001028sd00001F18* + ID_MODEL_FROM_DATABASE=PERC H700 Modular + +pci:v00001000d00000079sv00001028sd00001F1A* + ID_MODEL_FROM_DATABASE=PERC H800 Proto Adapter + +pci:v00001000d00000079sv00001028sd00001F1B* + ID_MODEL_FROM_DATABASE=PERC H700 Integrated + +pci:v00001000d00000079sv00001043sd00008480* + ID_MODEL_FROM_DATABASE=PIKE-2108 16PD + +pci:v00001000d00000079sv00001734sd00001176* + ID_MODEL_FROM_DATABASE=RAID Ctrl SAS 6G 5/6 512MB (D2616) + +pci:v00001000d00000079sv00001734sd00001177* + ID_MODEL_FROM_DATABASE=RAID Ctrl SAS 6G 0/1 (D2607) + +pci:v00001000d00000079sv00008086sd00009256* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 9260DE-8i + +pci:v00001000d00000079sv00008086sd00009260* + ID_MODEL_FROM_DATABASE=RAID Controller RS2BL040 + +pci:v00001000d00000079sv00008086sd00009261* + ID_MODEL_FROM_DATABASE=RAID Controller RS2BL080 + +pci:v00001000d00000079sv00008086sd00009264* + ID_MODEL_FROM_DATABASE=Warm Beach (Caster Lite) + +pci:v00001000d00000079sv00008086sd00009267* + ID_MODEL_FROM_DATABASE=RAID Controller RS2VB040 + +pci:v00001000d00000079sv00008086sd00009268* + ID_MODEL_FROM_DATABASE=RAID Controller RS2VB080 + +pci:v00001000d0000007C* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 1078DE + +pci:v00001000d0000007Csv00001014sd00000395* + ID_MODEL_FROM_DATABASE=ServeRAID-AR10is SAS/SATA Controller + +pci:v00001000d0000007E* + ID_MODEL_FROM_DATABASE=SSS6200 PCI-Express Flash SSD + +pci:v00001000d00000080* + ID_MODEL_FROM_DATABASE=SAS2208 PCI-Express Fusion-MPT SAS-2 + +pci:v00001000d00000081* + ID_MODEL_FROM_DATABASE=SAS2208 PCI-Express Fusion-MPT SAS-2 + +pci:v00001000d00000082* + ID_MODEL_FROM_DATABASE=SAS2208 PCI-Express Fusion-MPT SAS-2 + +pci:v00001000d00000083* + ID_MODEL_FROM_DATABASE=SAS2208 PCI-Express Fusion-MPT SAS-2 + +pci:v00001000d00000084* + ID_MODEL_FROM_DATABASE=SAS2208 PCI-Express Fusion-MPT SAS-2 + +pci:v00001000d00000085* + ID_MODEL_FROM_DATABASE=SAS2208 PCI-Express Fusion-MPT SAS-2 + +pci:v00001000d00000086* + ID_MODEL_FROM_DATABASE=SAS2308 PCI-Express Fusion-MPT SAS-2 + +pci:v00001000d00000087* + ID_MODEL_FROM_DATABASE=SAS2308 PCI-Express Fusion-MPT SAS-2 + +pci:v00001000d00000087sv00001590sd00000044* + ID_MODEL_FROM_DATABASE=H220i + +pci:v00001000d0000008F* + ID_MODEL_FROM_DATABASE=53c875J + +pci:v00001000d0000008Fsv00001092sd00008000* + ID_MODEL_FROM_DATABASE=FirePort 40 SCSI Controller + +pci:v00001000d0000008Fsv00001092sd00008760* + ID_MODEL_FROM_DATABASE=FirePort 40 Dual SCSI Host Adapter + +pci:v00001000d00000090* + ID_MODEL_FROM_DATABASE=SAS3108 PCI-Express Fusion-MPT SAS-3 + +pci:v00001000d00000091* + ID_MODEL_FROM_DATABASE=SAS3108 PCI-Express Fusion-MPT SAS-3 + +pci:v00001000d00000094* + ID_MODEL_FROM_DATABASE=SAS3108 PCI-Express Fusion-MPT SAS-3 + +pci:v00001000d00000095* + ID_MODEL_FROM_DATABASE=SAS3108 PCI-Express Fusion-MPT SAS-3 + +pci:v00001000d00000096* + ID_MODEL_FROM_DATABASE=SAS3004 PCI-Express Fusion-MPT SAS-3 + +pci:v00001000d00000097* + ID_MODEL_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 + +pci:v00001000d00000407* + ID_MODEL_FROM_DATABASE=MegaRAID + +pci:v00001000d00000407sv00001000sd00000530* + ID_MODEL_FROM_DATABASE=MegaRAID 530 SCSI 320-0X RAID Controller + +pci:v00001000d00000407sv00001000sd00000531* + ID_MODEL_FROM_DATABASE=MegaRAID 531 SCSI 320-4X RAID Controller + +pci:v00001000d00000407sv00001000sd00000532* + ID_MODEL_FROM_DATABASE=MegaRAID 532 SCSI 320-2X RAID Controller + +pci:v00001000d00000407sv00001028sd00000531* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4/QC + +pci:v00001000d00000407sv00001028sd00000533* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4/QC + +pci:v00001000d00000407sv00008086sd00000530* + ID_MODEL_FROM_DATABASE=MegaRAID Intel RAID Controller SRCZCRX + +pci:v00001000d00000407sv00008086sd00000532* + ID_MODEL_FROM_DATABASE=MegaRAID Intel RAID Controller SRCU42X + +pci:v00001000d00000408* + ID_MODEL_FROM_DATABASE=MegaRAID + +pci:v00001000d00000408sv00001000sd00000001* + ID_MODEL_FROM_DATABASE=MegaRAID SCSI 320-1E RAID Controller + +pci:v00001000d00000408sv00001000sd00000002* + ID_MODEL_FROM_DATABASE=MegaRAID SCSI 320-2E RAID Controller + +pci:v00001000d00000408sv00001025sd0000004D* + ID_MODEL_FROM_DATABASE=MegaRAID ACER ROMB-2E RAID Controller + +pci:v00001000d00000408sv00001028sd00000001* + ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller PERC4e/SC + +pci:v00001000d00000408sv00001028sd00000002* + ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller PERC4e/DC + +pci:v00001000d00000408sv00001028sd00000012* + ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller RAC4 + +pci:v00001000d00000408sv00001028sd00000015* + ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller PERC5 + +pci:v00001000d00000408sv00001028sd00001F03* + ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller PERC5 + +pci:v00001000d00000408sv00001734sd00001065* + ID_MODEL_FROM_DATABASE=FSC MegaRAID PCI Express ROMB + +pci:v00001000d00000408sv00008086sd00000002* + ID_MODEL_FROM_DATABASE=MegaRAID Intel RAID Controller SRCU42E + +pci:v00001000d00000408sv00008086sd00003449* + ID_MODEL_FROM_DATABASE=MegaRAID Intel RAID Controller SROMBU + +pci:v00001000d00000409* + ID_MODEL_FROM_DATABASE=MegaRAID + +pci:v00001000d00000409sv00001000sd00003004* + ID_MODEL_FROM_DATABASE=MegaRAID SATA 300-4X RAID Controller + +pci:v00001000d00000409sv00001000sd00003008* + ID_MODEL_FROM_DATABASE=MegaRAID SATA 300-8X RAID Controller + +pci:v00001000d00000409sv00008086sd00003008* + ID_MODEL_FROM_DATABASE=MegaRAID RAID Controller SRCS28X + +pci:v00001000d00000409sv00008086sd00003431* + ID_MODEL_FROM_DATABASE=MegaRAID RAID Controller Alief SROMBU42E + +pci:v00001000d00000409sv00008086sd00003499* + ID_MODEL_FROM_DATABASE=MegaRAID RAID Controller Harwich SROMBU42E + +pci:v00001000d00000411* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 + +pci:v00001000d00000411sv00001000sd00001001* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 8408E + +pci:v00001000d00000411sv00001000sd00001002* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 8480E + +pci:v00001000d00000411sv00001000sd00001003* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 8344ELP + +pci:v00001000d00000411sv00001000sd00001004* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 8308ELP + +pci:v00001000d00000411sv00001000sd00001008* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 84016E + +pci:v00001000d00000411sv00001000sd0000100C* + ID_MODEL_FROM_DATABASE=MegaRAID SATA 300-12E + +pci:v00001000d00000411sv00001000sd0000100D* + ID_MODEL_FROM_DATABASE=MegaRAID SATA 300-16E + +pci:v00001000d00000411sv00001000sd00002004* + ID_MODEL_FROM_DATABASE=MegaRAID SATA 300-8ELP + +pci:v00001000d00000411sv00001000sd00002005* + ID_MODEL_FROM_DATABASE=MegaRAID SATA 300-4ELP + +pci:v00001000d00000411sv00001033sd00008287* + ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB + +pci:v00001000d00000411sv00001054sd00003016* + ID_MODEL_FROM_DATABASE=MegaRAID SAS RoMB Server + +pci:v00001000d00000411sv00001734sd00001081* + ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB + +pci:v00001000d00000411sv00001734sd000010A3* + ID_MODEL_FROM_DATABASE=MegaRAID SAS PCI Express ROMB + +pci:v00001000d00000411sv00008086sd00001001* + ID_MODEL_FROM_DATABASE=RAID Controller SRCSAS18E + +pci:v00001000d00000411sv00008086sd00001003* + ID_MODEL_FROM_DATABASE=RAID Controller SRCSAS144E + +pci:v00001000d00000411sv00008086sd00003500* + ID_MODEL_FROM_DATABASE=SROMBSAS18E RAID Controller + +pci:v00001000d00000411sv00008086sd00003501* + ID_MODEL_FROM_DATABASE=SROMBSAS18E RAID Controller + +pci:v00001000d00000411sv00008086sd00003504* + ID_MODEL_FROM_DATABASE=SROMBSAS18E RAID Controller + +pci:v00001000d00000413* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 1068 [Verde ZCR] + +pci:v00001000d00000413sv00001000sd00001005* + ID_MODEL_FROM_DATABASE=MegaRAID SAS 8300XLP + +pci:v00001000d00000621* + ID_MODEL_FROM_DATABASE=FC909 Fibre Channel Adapter + +pci:v00001000d00000622* + ID_MODEL_FROM_DATABASE=FC929 Fibre Channel Adapter + +pci:v00001000d00000622sv00001000sd00001020* + ID_MODEL_FROM_DATABASE=44929 O Dual Fibre Channel card + +pci:v00001000d00000623* + ID_MODEL_FROM_DATABASE=FC929 LAN + +pci:v00001000d00000624* + ID_MODEL_FROM_DATABASE=FC919 Fibre Channel Adapter + +pci:v00001000d00000625* + ID_MODEL_FROM_DATABASE=FC919 LAN + +pci:v00001000d00000626* + ID_MODEL_FROM_DATABASE=FC929X Fibre Channel Adapter + +pci:v00001000d00000626sv00001000sd00001010* + ID_MODEL_FROM_DATABASE=7202-XP-LC Dual Fibre Channel card + +pci:v00001000d00000627* + ID_MODEL_FROM_DATABASE=FC929X LAN + +pci:v00001000d00000628* + ID_MODEL_FROM_DATABASE=FC919X Fibre Channel Adapter + +pci:v00001000d00000629* + ID_MODEL_FROM_DATABASE=FC919X LAN + +pci:v00001000d00000640* + ID_MODEL_FROM_DATABASE=FC949X Fibre Channel Adapter + +pci:v00001000d00000642* + ID_MODEL_FROM_DATABASE=FC939X Fibre Channel Adapter + +pci:v00001000d00000646* + ID_MODEL_FROM_DATABASE=FC949ES Fibre Channel Adapter + +pci:v00001000d00000701* + ID_MODEL_FROM_DATABASE=83C885 NT50 DigitalScape Fast Ethernet + +pci:v00001000d00000702* + ID_MODEL_FROM_DATABASE=Yellowfin G-NIC gigabit ethernet + +pci:v00001000d00000702sv00001318sd00000000* + ID_MODEL_FROM_DATABASE=PEI100X + +pci:v00001000d00000804* + ID_MODEL_FROM_DATABASE=SA2010 + +pci:v00001000d00000805* + ID_MODEL_FROM_DATABASE=SA2010ZC + +pci:v00001000d00000806* + ID_MODEL_FROM_DATABASE=SA2020 + +pci:v00001000d00000807* + ID_MODEL_FROM_DATABASE=SA2020ZC + +pci:v00001000d00000901* + ID_MODEL_FROM_DATABASE=61C102 + +pci:v00001000d00001000* + ID_MODEL_FROM_DATABASE=63C815 + +pci:v00001000d00001960* + ID_MODEL_FROM_DATABASE=MegaRAID + +pci:v00001000d00001960sv00001000sd00000518* + ID_MODEL_FROM_DATABASE=MegaRAID 518 SCSI 320-2 Controller + +pci:v00001000d00001960sv00001000sd00000520* + ID_MODEL_FROM_DATABASE=MegaRAID 520 SCSI 320-1 Controller + +pci:v00001000d00001960sv00001000sd00000522* + ID_MODEL_FROM_DATABASE=MegaRAID 522 i4 133 RAID Controller + +pci:v00001000d00001960sv00001000sd00000523* + ID_MODEL_FROM_DATABASE=MegaRAID SATA 150-6 RAID Controller + +pci:v00001000d00001960sv00001000sd00004523* + ID_MODEL_FROM_DATABASE=MegaRAID SATA 150-4 RAID Controller + +pci:v00001000d00001960sv00001000sd0000A520* + ID_MODEL_FROM_DATABASE=MegaRAID ZCR SCSI 320-0 Controller + +pci:v00001000d00001960sv00001028sd00000518* + ID_MODEL_FROM_DATABASE=MegaRAID 518 DELL PERC 4/DC RAID Controller + +pci:v00001000d00001960sv00001028sd00000520* + ID_MODEL_FROM_DATABASE=MegaRAID 520 DELL PERC 4/SC RAID Controller + +pci:v00001000d00001960sv00001028sd00000531* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4/QC + +pci:v00001000d00001960sv00001028sd00000533* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4/QC + +pci:v00001000d00001960sv00008086sd00000520* + ID_MODEL_FROM_DATABASE=MegaRAID RAID Controller SRCU41L + +pci:v00001000d00001960sv00008086sd00000523* + ID_MODEL_FROM_DATABASE=MegaRAID RAID Controller SRCS16 + +pci:v00001000d00006001* + ID_MODEL_FROM_DATABASE=DX1 Multiformat Broadcast HD/SD Encoder/Decoder + +pci:v00001001* + ID_VENDOR_FROM_DATABASE=Kolter Electronic + +pci:v00001001d00000010* + ID_MODEL_FROM_DATABASE=PCI 1616 Measurement card with 32 digital I/O lines + +pci:v00001001d00000011* + ID_MODEL_FROM_DATABASE=OPTO-PCI Opto-Isolated digital I/O board + +pci:v00001001d00000012* + ID_MODEL_FROM_DATABASE=PCI-AD/DA Analogue I/O board + +pci:v00001001d00000013* + ID_MODEL_FROM_DATABASE=PCI-OPTO-RELAIS Digital I/O board with relay outputs + +pci:v00001001d00000014* + ID_MODEL_FROM_DATABASE=PCI-Counter/Timer Counter Timer board + +pci:v00001001d00000015* + ID_MODEL_FROM_DATABASE=PCI-DAC416 Analogue output board + +pci:v00001001d00000016* + ID_MODEL_FROM_DATABASE=PCI-MFB Analogue I/O board + +pci:v00001001d00000017* + ID_MODEL_FROM_DATABASE=PROTO-3 PCI Prototyping board + +pci:v00001001d00009100* + ID_MODEL_FROM_DATABASE=INI-9100/9100W SCSI Host + +pci:v00001002* + ID_VENDOR_FROM_DATABASE=Advanced Micro Devices [AMD] nee ATI + +pci:v00001002d00001304* + ID_MODEL_FROM_DATABASE=Kaveri + +pci:v00001002d00001305* + ID_MODEL_FROM_DATABASE=Kaveri + +pci:v00001002d00001306* + ID_MODEL_FROM_DATABASE=Kaveri + +pci:v00001002d00001307* + ID_MODEL_FROM_DATABASE=Kaveri + +pci:v00001002d00001314* + ID_MODEL_FROM_DATABASE=Wrestler HDMI Audio [Radeon HD 6250/6310] + +pci:v00001002d00001314sv0000174Bsd00001001* + ID_MODEL_FROM_DATABASE=Sapphire PURE Fusion Mini + +pci:v00001002d00001714* + ID_MODEL_FROM_DATABASE=BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series] + +pci:v00001002d00001714sv0000103Csd0000168B* + ID_MODEL_FROM_DATABASE=ProBook 4535s + +pci:v00001002d00003150* + ID_MODEL_FROM_DATABASE=RV380/M24 [Mobility Radeon X600] + +pci:v00001002d00003150sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=nx8220 + +pci:v00001002d00003151* + ID_MODEL_FROM_DATABASE=RV380 [FireMV 2400] + +pci:v00001002d00003152* + ID_MODEL_FROM_DATABASE=RV370/M22 [Mobility Radeon X300] + +pci:v00001002d00003154* + ID_MODEL_FROM_DATABASE=RV380/M24 GL [Mobility FireGL V3200] + +pci:v00001002d00003155* + ID_MODEL_FROM_DATABASE=RV380 [FireMV 2400] + +pci:v00001002d00003171* + ID_MODEL_FROM_DATABASE=RV380 [FireMV 2400] (Secondary) + +pci:v00001002d00003E50* + ID_MODEL_FROM_DATABASE=RV380 [Radeon X600] + +pci:v00001002d00003E54* + ID_MODEL_FROM_DATABASE=RV380 [FireGL V3200] + +pci:v00001002d00003E70* + ID_MODEL_FROM_DATABASE=RV380 [Radeon X600] (Secondary) + +pci:v00001002d00004136* + ID_MODEL_FROM_DATABASE=RS100 [Mobility IGP 320M] + +pci:v00001002d00004137* + ID_MODEL_FROM_DATABASE=RS200 [Radeon IGP 340] + +pci:v00001002d00004144* + ID_MODEL_FROM_DATABASE=R300 AD [Radeon 9500] + +pci:v00001002d00004146* + ID_MODEL_FROM_DATABASE=R300 AF [Radeon 9700 PRO] + +pci:v00001002d00004147* + ID_MODEL_FROM_DATABASE=R300 AG [FireGL Z1] + +pci:v00001002d00004148* + ID_MODEL_FROM_DATABASE=R350 AH [Radeon 9800/9800 SE] + +pci:v00001002d00004150* + ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] + +pci:v00001002d00004150sv00001002sd00000002* + ID_MODEL_FROM_DATABASE=R9600 Pro primary (Asus OEM for HP) + +pci:v00001002d00004150sv00001002sd00000003* + ID_MODEL_FROM_DATABASE=R9600 Pro secondary (Asus OEM for HP) + +pci:v00001002d00004150sv00001002sd00004722* + ID_MODEL_FROM_DATABASE=All-in-Wonder 2006 AGP Edition + +pci:v00001002d00004150sv00001458sd00004024* + ID_MODEL_FROM_DATABASE=Giga-Byte GV-R96128D (Primary) + +pci:v00001002d00004150sv0000148Csd00002064* + ID_MODEL_FROM_DATABASE=PowerColor R96A-C3N + +pci:v00001002d00004150sv0000148Csd00002066* + ID_MODEL_FROM_DATABASE=PowerColor R96A-C3N + +pci:v00001002d00004150sv0000174Bsd00007C19* + ID_MODEL_FROM_DATABASE=Sapphire Atlantis Radeon 9600 Pro + +pci:v00001002d00004150sv0000174Bsd00007C29* + ID_MODEL_FROM_DATABASE=GC-R9600PRO [Sapphire] (Primary) + +pci:v00001002d00004150sv000017EEsd00002002* + ID_MODEL_FROM_DATABASE=Radeon 9600 256Mb Primary + +pci:v00001002d00004150sv000018BCsd00000101* + ID_MODEL_FROM_DATABASE=GC-R9600PRO (Primary) + +pci:v00001002d00004151* + ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600 Series] + +pci:v00001002d00004151sv00001043sd0000C004* + ID_MODEL_FROM_DATABASE=A9600SE + +pci:v00001002d00004152* + ID_MODEL_FROM_DATABASE=RV360 [Radeon 9600/X1050 Series] + +pci:v00001002d00004152sv00001002sd00000002* + ID_MODEL_FROM_DATABASE=Radeon 9600XT + +pci:v00001002d00004152sv00001002sd00004772* + ID_MODEL_FROM_DATABASE=All-in-Wonder 9600 XT + +pci:v00001002d00004152sv00001043sd0000C002* + ID_MODEL_FROM_DATABASE=Radeon 9600 XT TVD + +pci:v00001002d00004152sv00001043sd0000C01A* + ID_MODEL_FROM_DATABASE=A9600XT/TD + +pci:v00001002d00004152sv00001462sd00009510* + ID_MODEL_FROM_DATABASE=RX9600XT (MS-8951) + +pci:v00001002d00004152sv0000174Bsd00007C29* + ID_MODEL_FROM_DATABASE=Sapphire Radeon 9600XT + +pci:v00001002d00004152sv00001787sd00004002* + ID_MODEL_FROM_DATABASE=Radeon 9600 XT + +pci:v00001002d00004153* + ID_MODEL_FROM_DATABASE=RV350 AS [Radeon 9550] + +pci:v00001002d00004153sv00001043sd0000010C* + ID_MODEL_FROM_DATABASE=A9550GE/TD + +pci:v00001002d00004153sv00001462sd0000932C* + ID_MODEL_FROM_DATABASE=RX9550SE-TD128 (MS-8932) + +pci:v00001002d00004154* + ID_MODEL_FROM_DATABASE=RV350 AT [FireGL T2] + +pci:v00001002d00004155* + ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600] + +pci:v00001002d00004157* + ID_MODEL_FROM_DATABASE=RV350 AW [FireGL T2] + +pci:v00001002d00004158* + ID_MODEL_FROM_DATABASE=68800AX [Mach32] + +pci:v00001002d00004164* + ID_MODEL_FROM_DATABASE=R300 AD [Radeon 9500 PRO] (Secondary) + +pci:v00001002d00004165* + ID_MODEL_FROM_DATABASE=R300 AE [Radeon 9700 PRO] (Secondary) + +pci:v00001002d00004166* + ID_MODEL_FROM_DATABASE=R300 AF [Radeon 9700 PRO] (Secondary) + +pci:v00001002d00004168* + ID_MODEL_FROM_DATABASE=RV350 [Radeon 9800 SE] (Secondary) + +pci:v00001002d00004170* + ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (Secondary) + +pci:v00001002d00004170sv00001002sd00000003* + ID_MODEL_FROM_DATABASE=R9600 Pro secondary (Asus OEM for HP) + +pci:v00001002d00004170sv00001002sd00004723* + ID_MODEL_FROM_DATABASE=All-in-Wonder 2006 AGP Edition (Secondary) + +pci:v00001002d00004170sv00001458sd00004025* + ID_MODEL_FROM_DATABASE=Giga-Byte GV-R96128D (Secondary) + +pci:v00001002d00004170sv0000148Csd00002067* + ID_MODEL_FROM_DATABASE=PowerColor R96A-C3N (Secondary) + +pci:v00001002d00004170sv0000174Bsd00007C28* + ID_MODEL_FROM_DATABASE=GC-R9600PRO [Sapphire] (Secondary) + +pci:v00001002d00004170sv000017EEsd00002003* + ID_MODEL_FROM_DATABASE=Radeon 9600 256Mb (Secondary) + +pci:v00001002d00004170sv000018BCsd00000100* + ID_MODEL_FROM_DATABASE=GC-R9600PRO (Secondary) + +pci:v00001002d00004171* + ID_MODEL_FROM_DATABASE=RV350 AQ [Radeon 9600] (Secondary) + +pci:v00001002d00004171sv00001043sd0000C005* + ID_MODEL_FROM_DATABASE=A9600SE (Secondary) + +pci:v00001002d00004172* + ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600/X1050 Series] (Secondary) + +pci:v00001002d00004172sv00001002sd00000003* + ID_MODEL_FROM_DATABASE=Radeon 9600XT (Secondary) + +pci:v00001002d00004172sv00001002sd00004773* + ID_MODEL_FROM_DATABASE=All-in-Wonder 9600 XT (Secondary) + +pci:v00001002d00004172sv00001043sd0000C003* + ID_MODEL_FROM_DATABASE=A9600XT (Secondary) + +pci:v00001002d00004172sv00001043sd0000C01B* + ID_MODEL_FROM_DATABASE=A9600XT/TD (Secondary) + +pci:v00001002d00004172sv0000174Bsd00007C28* + ID_MODEL_FROM_DATABASE=Sapphire Radeon 9600XT (Secondary) + +pci:v00001002d00004172sv00001787sd00004003* + ID_MODEL_FROM_DATABASE=Radeon 9600 XT (Secondary) + +pci:v00001002d00004173* + ID_MODEL_FROM_DATABASE=RV350 AS [Radeon 9550] (Secondary) + +pci:v00001002d00004173sv00001043sd0000010D* + ID_MODEL_FROM_DATABASE=A9550GE/TD (Secondary) + +pci:v00001002d00004242* + ID_MODEL_FROM_DATABASE=R200 [All-In-Wonder Radeon 8500 DV] + +pci:v00001002d00004242sv00001002sd000002AA* + ID_MODEL_FROM_DATABASE=Radeon 8500 AIW DV Edition + +pci:v00001002d00004336* + ID_MODEL_FROM_DATABASE=RS100 [Radeon IGP 320M] + +pci:v00001002d00004336sv00001002sd00004336* + ID_MODEL_FROM_DATABASE=Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M) + +pci:v00001002d00004336sv0000103Csd00000024* + ID_MODEL_FROM_DATABASE=Pavilion ze4400 builtin Video + +pci:v00001002d00004336sv0000161Fsd00002029* + ID_MODEL_FROM_DATABASE=eMachines M5312 builtin Video + +pci:v00001002d00004337* + ID_MODEL_FROM_DATABASE=RS200M [Radeon IGP 330M/340M/345M/350M] + +pci:v00001002d00004337sv00001014sd0000053A* + ID_MODEL_FROM_DATABASE=ThinkPad R40e + +pci:v00001002d00004337sv0000103Csd00000850* + ID_MODEL_FROM_DATABASE=Radeon IGP 345M + +pci:v00001002d00004341* + ID_MODEL_FROM_DATABASE=IXP150 AC'97 Audio Controller + +pci:v00001002d00004342* + ID_MODEL_FROM_DATABASE=IXP200 3COM 3C920B Ethernet Controller + +pci:v00001002d00004345* + ID_MODEL_FROM_DATABASE=EHCI USB Controller + +pci:v00001002d00004347* + ID_MODEL_FROM_DATABASE=OHCI USB Controller #1 + +pci:v00001002d00004348* + ID_MODEL_FROM_DATABASE=OHCI USB Controller #2 + +pci:v00001002d00004349* + ID_MODEL_FROM_DATABASE=Dual Channel Bus Master PCI IDE Controller + +pci:v00001002d0000434D* + ID_MODEL_FROM_DATABASE=IXP AC'97 Modem + +pci:v00001002d00004353* + ID_MODEL_FROM_DATABASE=SMBus + +pci:v00001002d00004354* + ID_MODEL_FROM_DATABASE=215CT [Mach64 CT PCI] + +pci:v00001002d00004358* + ID_MODEL_FROM_DATABASE=210888CX [Mach64 CX] + +pci:v00001002d00004361* + ID_MODEL_FROM_DATABASE=IXP SB300 AC'97 Audio Controller + +pci:v00001002d00004363* + ID_MODEL_FROM_DATABASE=SMBus + +pci:v00001002d0000436E* + ID_MODEL_FROM_DATABASE=436E Serial ATA Controller + +pci:v00001002d00004370* + ID_MODEL_FROM_DATABASE=IXP SB400 AC'97 Audio Controller + +pci:v00001002d00004370sv00001025sd00000079* + ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi + +pci:v00001002d00004370sv00001025sd00000091* + ID_MODEL_FROM_DATABASE=Aspire 5032WXMi + +pci:v00001002d00004370sv0000103Csd00002A05* + ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC + +pci:v00001002d00004370sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v00001002d00004370sv0000105Bsd00000C81* + ID_MODEL_FROM_DATABASE=Realtek ALC 653 + +pci:v00001002d00004370sv0000107Bsd00000300* + ID_MODEL_FROM_DATABASE=MX6421 + +pci:v00001002d00004370sv00001462sd00000131* + ID_MODEL_FROM_DATABASE=MS-1013 Notebook + +pci:v00001002d00004371* + ID_MODEL_FROM_DATABASE=IXP SB400 PCI-PCI Bridge + +pci:v00001002d00004371sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v00001002d00004371sv00001462sd00007217* + ID_MODEL_FROM_DATABASE=Aspire L250 + +pci:v00001002d00004372* + ID_MODEL_FROM_DATABASE=IXP SB400 SMBus Controller + +pci:v00001002d00004372sv00001025sd00000080* + ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi + +pci:v00001002d00004372sv0000103Csd00002A20* + ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC + +pci:v00001002d00004372sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v00001002d00004372sv00001462sd00000131* + ID_MODEL_FROM_DATABASE=MS-1013 Notebook + +pci:v00001002d00004372sv00001462sd00007217* + ID_MODEL_FROM_DATABASE=Aspire L250 + +pci:v00001002d00004373* + ID_MODEL_FROM_DATABASE=IXP SB400 USB2 Host Controller + +pci:v00001002d00004373sv00001025sd00000080* + ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi + +pci:v00001002d00004373sv0000103Csd00002A20* + ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC + +pci:v00001002d00004373sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v00001002d00004373sv00001462sd00007217* + ID_MODEL_FROM_DATABASE=Aspire L250 + +pci:v00001002d00004374* + ID_MODEL_FROM_DATABASE=IXP SB400 USB Host Controller + +pci:v00001002d00004374sv0000103Csd00002A20* + ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC + +pci:v00001002d00004374sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v00001002d00004374sv00001462sd00007217* + ID_MODEL_FROM_DATABASE=Aspire L250 + +pci:v00001002d00004375* + ID_MODEL_FROM_DATABASE=IXP SB400 USB Host Controller + +pci:v00001002d00004375sv00001025sd00000080* + ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi + +pci:v00001002d00004375sv0000103Csd00002A20* + ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC + +pci:v00001002d00004375sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v00001002d00004375sv00001462sd00007217* + ID_MODEL_FROM_DATABASE=Aspire L250 + +pci:v00001002d00004376* + ID_MODEL_FROM_DATABASE=IXP SB400 IDE Controller + +pci:v00001002d00004376sv00001025sd00000080* + ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi + +pci:v00001002d00004376sv0000103Csd00002A20* + ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC + +pci:v00001002d00004376sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v00001002d00004376sv00001462sd00000131* + ID_MODEL_FROM_DATABASE=MS-1013 Notebook + +pci:v00001002d00004376sv00001462sd00007217* + ID_MODEL_FROM_DATABASE=Aspire L250 + +pci:v00001002d00004377* + ID_MODEL_FROM_DATABASE=IXP SB400 PCI-ISA Bridge + +pci:v00001002d00004377sv00001025sd00000080* + ID_MODEL_FROM_DATABASE=Aspire 5024WLMi + +pci:v00001002d00004377sv0000103Csd00002A20* + ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC + +pci:v00001002d00004377sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v00001002d00004377sv00001462sd00007217* + ID_MODEL_FROM_DATABASE=Aspire L250 + +pci:v00001002d00004378* + ID_MODEL_FROM_DATABASE=IXP SB400 AC'97 Modem Controller + +pci:v00001002d00004378sv00001025sd00000080* + ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi + +pci:v00001002d00004378sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v00001002d00004378sv00001462sd00000131* + ID_MODEL_FROM_DATABASE=MS-1013 Notebook + +pci:v00001002d00004379* + ID_MODEL_FROM_DATABASE=IXP SB400 Serial ATA Controller + +pci:v00001002d00004379sv00001462sd00007141* + ID_MODEL_FROM_DATABASE=Aspire L250 + +pci:v00001002d0000437A* + ID_MODEL_FROM_DATABASE=IXP SB400 Serial ATA Controller + +pci:v00001002d0000437Asv00001002sd00004379* + ID_MODEL_FROM_DATABASE=4379 Serial ATA Controller + +pci:v00001002d0000437Asv00001002sd0000437A* + ID_MODEL_FROM_DATABASE=437A Serial ATA Controller + +pci:v00001002d0000437Asv00001462sd00007141* + ID_MODEL_FROM_DATABASE=Aspire L250 + +pci:v00001002d0000437Asv000014F1sd00008800* + ID_MODEL_FROM_DATABASE=Leadtek WinFast TV2000XP Expert + +pci:v00001002d0000437B* + ID_MODEL_FROM_DATABASE=IXP SB4x0 High Definition Audio Controller + +pci:v00001002d0000437Bsv00001002sd0000437B* + ID_MODEL_FROM_DATABASE=IXP SB4x0 High Definition Audio Controller + +pci:v00001002d0000437Bsv000010CFsd00001326* + ID_MODEL_FROM_DATABASE=Fujitsu Lifebook A3040 + +pci:v00001002d0000437Bsv00001734sd000010B8* + ID_MODEL_FROM_DATABASE=Realtek High Definition Audio + +pci:v00001002d00004380* + ID_MODEL_FROM_DATABASE=SB600 Non-Raid-5 SATA + +pci:v00001002d00004380sv0000103Csd00002813* + ID_MODEL_FROM_DATABASE=DC5750 Microtower + +pci:v00001002d00004380sv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001002d00004380sv00001458sd0000B003* + ID_MODEL_FROM_DATABASE=GA-MA790FX-DS5 (rev. 1.0) + +pci:v00001002d00004380sv00001458sd0000B005* + ID_MODEL_FROM_DATABASE=Gigabyte GA-MA69G-S3H Motherboard + +pci:v00001002d00004380sv00001462sd00007327* + ID_MODEL_FROM_DATABASE=K9AG Neo2 + +pci:v00001002d00004380sv000017F2sd00005999* + ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard + +pci:v00001002d00004381* + ID_MODEL_FROM_DATABASE=SB400 SATA Controller (RAID 5 mode) + +pci:v00001002d00004382* + ID_MODEL_FROM_DATABASE=SB600 AC97 Audio + +pci:v00001002d00004383* + ID_MODEL_FROM_DATABASE=SBx00 Azalia (Intel HDA) + +pci:v00001002d00004383sv00001019sd00002120* + ID_MODEL_FROM_DATABASE=A785GM-M + +pci:v00001002d00004383sv0000103Csd00001611* + ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000 + +pci:v00001002d00004383sv0000103Csd0000280A* + ID_MODEL_FROM_DATABASE=DC5750 Microtower + +pci:v00001002d00004383sv00001043sd00008230* + ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard + +pci:v00001002d00004383sv00001043sd0000836C* + ID_MODEL_FROM_DATABASE=M4A785TD Motherboard + +pci:v00001002d00004383sv00001043sd00008410* + ID_MODEL_FROM_DATABASE=M4A89GTD PRO/USB3 Motherboard + +pci:v00001002d00004383sv00001043sd0000841B* + ID_MODEL_FROM_DATABASE=M5A88-V EVO + +pci:v00001002d00004383sv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001002d00004383sv00001458sd0000A022* + ID_MODEL_FROM_DATABASE=GA-MA770-DS3rev2.0 Motherboard + +pci:v00001002d00004383sv000017F2sd00005000* + ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard + +pci:v00001002d00004384* + ID_MODEL_FROM_DATABASE=SBx00 PCI to PCI Bridge + +pci:v00001002d00004385* + ID_MODEL_FROM_DATABASE=SBx00 SMBus Controller + +pci:v00001002d00004385sv00001019sd00002120* + ID_MODEL_FROM_DATABASE=A785GM-M + +pci:v00001002d00004385sv0000103Csd00001611* + ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000 + +pci:v00001002d00004385sv0000103Csd0000280A* + ID_MODEL_FROM_DATABASE=DC5750 Microtower + +pci:v00001002d00004385sv00001043sd000082EF* + ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard + +pci:v00001002d00004385sv00001043sd00008389* + ID_MODEL_FROM_DATABASE=M4A785TD Motherboard + +pci:v00001002d00004385sv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001002d00004385sv00001458sd00004385* + ID_MODEL_FROM_DATABASE=GA-MA770-DS3rev2.0 Motherboard + +pci:v00001002d00004385sv00001462sd00007368* + ID_MODEL_FROM_DATABASE=K9AG Neo2 + +pci:v00001002d00004385sv000015D9sd0000A811* + ID_MODEL_FROM_DATABASE=H8DGU + +pci:v00001002d00004385sv0000174Bsd00001001* + ID_MODEL_FROM_DATABASE=Sapphire PURE Fusion Mini + +pci:v00001002d00004385sv000017F2sd00005000* + ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard + +pci:v00001002d00004386* + ID_MODEL_FROM_DATABASE=SB600 USB Controller (EHCI) + +pci:v00001002d00004386sv0000103Csd0000280A* + ID_MODEL_FROM_DATABASE=DC5750 Microtower + +pci:v00001002d00004386sv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001002d00004386sv00001462sd00007368* + ID_MODEL_FROM_DATABASE=K9AG Neo2 + +pci:v00001002d00004386sv000017F2sd00005000* + ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard + +pci:v00001002d00004387* + ID_MODEL_FROM_DATABASE=SB600 USB (OHCI0) + +pci:v00001002d00004387sv0000103Csd0000280A* + ID_MODEL_FROM_DATABASE=DC5750 Microtower + +pci:v00001002d00004387sv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001002d00004387sv00001462sd00007368* + ID_MODEL_FROM_DATABASE=K9AG Neo2 + +pci:v00001002d00004387sv000017F2sd00005000* + ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard + +pci:v00001002d00004388* + ID_MODEL_FROM_DATABASE=SB600 USB (OHCI1) + +pci:v00001002d00004388sv0000103Csd0000280A* + ID_MODEL_FROM_DATABASE=DC5750 Microtower + +pci:v00001002d00004388sv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001002d00004388sv00001462sd00007368* + ID_MODEL_FROM_DATABASE=K9AG Neo2 + +pci:v00001002d00004388sv000017F2sd00005000* + ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard + +pci:v00001002d00004389* + ID_MODEL_FROM_DATABASE=SB600 USB (OHCI2) + +pci:v00001002d00004389sv0000103Csd0000280A* + ID_MODEL_FROM_DATABASE=DC5750 Microtower + +pci:v00001002d00004389sv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001002d00004389sv00001462sd00007368* + ID_MODEL_FROM_DATABASE=K9AG Neo2 + +pci:v00001002d00004389sv000017F2sd00005000* + ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard + +pci:v00001002d0000438A* + ID_MODEL_FROM_DATABASE=SB600 USB (OHCI3) + +pci:v00001002d0000438Asv0000103Csd0000280A* + ID_MODEL_FROM_DATABASE=DC5750 Microtower + +pci:v00001002d0000438Asv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001002d0000438Asv00001462sd00007368* + ID_MODEL_FROM_DATABASE=K9AG Neo2 + +pci:v00001002d0000438Asv000017F2sd00005000* + ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard + +pci:v00001002d0000438B* + ID_MODEL_FROM_DATABASE=SB600 USB (OHCI4) + +pci:v00001002d0000438Bsv0000103Csd0000280A* + ID_MODEL_FROM_DATABASE=DC5750 Microtower + +pci:v00001002d0000438Bsv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001002d0000438Bsv00001462sd00007368* + ID_MODEL_FROM_DATABASE=K9AG Neo2 + +pci:v00001002d0000438Bsv000017F2sd00005000* + ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard + +pci:v00001002d0000438C* + ID_MODEL_FROM_DATABASE=SB600 IDE + +pci:v00001002d0000438Csv0000103Csd0000280A* + ID_MODEL_FROM_DATABASE=DC5750 Microtower + +pci:v00001002d0000438Csv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001002d0000438Csv00001458sd00005002* + ID_MODEL_FROM_DATABASE=Gigabyte GA-MA69G-S3H Motherboard + +pci:v00001002d0000438Csv00001462sd00007368* + ID_MODEL_FROM_DATABASE=K9AG Neo2 + +pci:v00001002d0000438Csv000017F2sd00005000* + ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard + +pci:v00001002d0000438D* + ID_MODEL_FROM_DATABASE=SB600 PCI to LPC Bridge + +pci:v00001002d0000438Dsv0000103Csd0000280A* + ID_MODEL_FROM_DATABASE=DC5750 Microtower + +pci:v00001002d0000438Dsv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001002d0000438Dsv00001462sd00007368* + ID_MODEL_FROM_DATABASE=K9AG Neo2 + +pci:v00001002d0000438Dsv000017F2sd00005000* + ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard + +pci:v00001002d0000438E* + ID_MODEL_FROM_DATABASE=SB600 AC97 Modem + +pci:v00001002d00004390* + ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] + +pci:v00001002d00004390sv00001043sd000082EF* + ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard + +pci:v00001002d00004390sv00001043sd00008389* + ID_MODEL_FROM_DATABASE=M4A785TD Motherboard + +pci:v00001002d00004390sv00001458sd0000B002* + ID_MODEL_FROM_DATABASE=GA-MA770-DS3rev2.0 Motherboard + +pci:v00001002d00004390sv00001849sd00004390* + ID_MODEL_FROM_DATABASE=Motherboard (one of many) + +pci:v00001002d00004391* + ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] + +pci:v00001002d00004391sv0000103Csd00001611* + ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000 + +pci:v00001002d00004391sv00001043sd000082EF* + ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard + +pci:v00001002d00004391sv00001043sd00008443* + ID_MODEL_FROM_DATABASE=M5A88-V EVO + +pci:v00001002d00004391sv0000174Bsd00001001* + ID_MODEL_FROM_DATABASE=Sapphire PURE Fusion Mini + +pci:v00001002d00004392* + ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [Non-RAID5 mode] + +pci:v00001002d00004393* + ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [RAID5 mode] + +pci:v00001002d00004394* + ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] + +pci:v00001002d00004395* + ID_MODEL_FROM_DATABASE=SB8x0/SB9x0 SATA Controller [Storage mode] + +pci:v00001002d00004396* + ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB EHCI Controller + +pci:v00001002d00004396sv00001019sd00002120* + ID_MODEL_FROM_DATABASE=A785GM-M + +pci:v00001002d00004396sv0000103Csd00001611* + ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000 + +pci:v00001002d00004396sv00001043sd000082EF* + ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard + +pci:v00001002d00004396sv00001043sd00008443* + ID_MODEL_FROM_DATABASE=M5A88-V EVO + +pci:v00001002d00004396sv000015D9sd0000A811* + ID_MODEL_FROM_DATABASE=H8DGU + +pci:v00001002d00004396sv0000174Bsd00001001* + ID_MODEL_FROM_DATABASE=Sapphire PURE Fusion Mini + +pci:v00001002d00004397* + ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI0 Controller + +pci:v00001002d00004397sv00001019sd00002120* + ID_MODEL_FROM_DATABASE=A785GM-M + +pci:v00001002d00004397sv0000103Csd00001611* + ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000 + +pci:v00001002d00004397sv00001043sd000082EF* + ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard + +pci:v00001002d00004397sv00001043sd00008443* + ID_MODEL_FROM_DATABASE=M5A88-V EVO + +pci:v00001002d00004397sv000015D9sd0000A811* + ID_MODEL_FROM_DATABASE=H8DGU + +pci:v00001002d00004397sv0000174Bsd00001001* + ID_MODEL_FROM_DATABASE=Sapphire PURE Fusion Mini + +pci:v00001002d00004398* + ID_MODEL_FROM_DATABASE=SB7x0 USB OHCI1 Controller + +pci:v00001002d00004398sv00001019sd00002120* + ID_MODEL_FROM_DATABASE=A785GM-M + +pci:v00001002d00004398sv00001043sd000082EF* + ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard + +pci:v00001002d00004398sv000015D9sd0000A811* + ID_MODEL_FROM_DATABASE=H8DGU + +pci:v00001002d00004399* + ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI2 Controller + +pci:v00001002d00004399sv00001019sd00002120* + ID_MODEL_FROM_DATABASE=A785GM-M + +pci:v00001002d00004399sv00001043sd000082EF* + ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard + +pci:v00001002d00004399sv00001043sd00008443* + ID_MODEL_FROM_DATABASE=M5A88-V EVO + +pci:v00001002d00004399sv0000174Bsd00001001* + ID_MODEL_FROM_DATABASE=Sapphire PURE Fusion Mini + +pci:v00001002d0000439C* + ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 IDE Controller + +pci:v00001002d0000439Csv00001019sd00002120* + ID_MODEL_FROM_DATABASE=A785GM-M + +pci:v00001002d0000439Csv00001043sd000082EF* + ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard + +pci:v00001002d0000439D* + ID_MODEL_FROM_DATABASE=SB7x0/SB8x0/SB9x0 LPC host controller + +pci:v00001002d0000439Dsv00001019sd00002120* + ID_MODEL_FROM_DATABASE=A785GM-M + +pci:v00001002d0000439Dsv0000103Csd00001611* + ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000 + +pci:v00001002d0000439Dsv00001043sd000082EF* + ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard + +pci:v00001002d0000439Dsv00001043sd00008443* + ID_MODEL_FROM_DATABASE=M5A88-V EVO + +pci:v00001002d0000439Dsv0000174Bsd00001001* + ID_MODEL_FROM_DATABASE=Sapphire PURE Fusion Mini + +pci:v00001002d000043A0* + ID_MODEL_FROM_DATABASE=SB700/SB800/SB900 PCI to PCI bridge (PCIE port 0) + +pci:v00001002d000043A1* + ID_MODEL_FROM_DATABASE=SB700/SB800/SB900 PCI to PCI bridge (PCIE port 1) + +pci:v00001002d000043A2* + ID_MODEL_FROM_DATABASE=SB900 PCI to PCI bridge (PCIE port 2) + +pci:v00001002d000043A3* + ID_MODEL_FROM_DATABASE=SB900 PCI to PCI bridge (PCIE port 3) + +pci:v00001002d00004437* + ID_MODEL_FROM_DATABASE=RS250 [Mobility Radeon 7000 IGP] + +pci:v00001002d00004554* + ID_MODEL_FROM_DATABASE=210888ET [Mach64 ET] + +pci:v00001002d00004654* + ID_MODEL_FROM_DATABASE=Mach64 VT + +pci:v00001002d00004742* + ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 2X + +pci:v00001002d00004742sv00001002sd00000040* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X + +pci:v00001002d00004742sv00001002sd00000044* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X + +pci:v00001002d00004742sv00001002sd00000061* + ID_MODEL_FROM_DATABASE=Rage Pro AIW AGP 2X + +pci:v00001002d00004742sv00001002sd00000062* + ID_MODEL_FROM_DATABASE=Rage Pro AIW AGP 2X + +pci:v00001002d00004742sv00001002sd00000063* + ID_MODEL_FROM_DATABASE=Rage Pro AIW AGP 2X + +pci:v00001002d00004742sv00001002sd00000080* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X + +pci:v00001002d00004742sv00001002sd00000084* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X + +pci:v00001002d00004742sv00001002sd00004742* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X + +pci:v00001002d00004742sv00001002sd00008001* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X + +pci:v00001002d00004742sv00001028sd00000082* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X + +pci:v00001002d00004742sv00001028sd00004082* + ID_MODEL_FROM_DATABASE=Optiplex GX1 Onboard Display Adapter + +pci:v00001002d00004742sv00001028sd00008082* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X + +pci:v00001002d00004742sv00001028sd0000C082* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X + +pci:v00001002d00004742sv00008086sd00004152* + ID_MODEL_FROM_DATABASE=Xpert 98D AGP 2X + +pci:v00001002d00004742sv00008086sd0000464A* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP 2X + +pci:v00001002d00004744* + ID_MODEL_FROM_DATABASE=3D Rage PRO AGP 1X + +pci:v00001002d00004744sv00001002sd00004744* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo AGP + +pci:v00001002d00004744sv00008086sd00004D55* + ID_MODEL_FROM_DATABASE=Rage 3D Pro AGP 1X [Intel MU440EX] + +pci:v00001002d00004749* + ID_MODEL_FROM_DATABASE=3D Rage PRO PCI + +pci:v00001002d00004749sv00001002sd00000061* + ID_MODEL_FROM_DATABASE=Rage Pro AIW + +pci:v00001002d00004749sv00001002sd00000062* + ID_MODEL_FROM_DATABASE=Rage Pro AIW + +pci:v00001002d0000474D* + ID_MODEL_FROM_DATABASE=Rage XL AGP 2X + +pci:v00001002d0000474Dsv00001002sd00000004* + ID_MODEL_FROM_DATABASE=Xpert 98 RXL AGP 2X + +pci:v00001002d0000474Dsv00001002sd00000008* + ID_MODEL_FROM_DATABASE=Xpert 98 RXL AGP 2X + +pci:v00001002d0000474Dsv00001002sd00000080* + ID_MODEL_FROM_DATABASE=Rage XL AGP 2X + +pci:v00001002d0000474Dsv00001002sd00000084* + ID_MODEL_FROM_DATABASE=Xpert 98 AGP 2X + +pci:v00001002d0000474Dsv00001002sd0000474D* + ID_MODEL_FROM_DATABASE=Rage XL AGP + +pci:v00001002d0000474Dsv00001033sd0000806A* + ID_MODEL_FROM_DATABASE=Rage XL AGP + +pci:v00001002d0000474E* + ID_MODEL_FROM_DATABASE=Rage XC AGP + +pci:v00001002d0000474Esv00001002sd0000474E* + ID_MODEL_FROM_DATABASE=Rage XC AGP + +pci:v00001002d0000474F* + ID_MODEL_FROM_DATABASE=Rage XL + +pci:v00001002d0000474Fsv00001002sd00000008* + ID_MODEL_FROM_DATABASE=Rage XL + +pci:v00001002d0000474Fsv00001002sd0000474F* + ID_MODEL_FROM_DATABASE=Rage XL + +pci:v00001002d00004750* + ID_MODEL_FROM_DATABASE=3D Rage Pro PCI + +pci:v00001002d00004750sv00001002sd00000040* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo + +pci:v00001002d00004750sv00001002sd00000044* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo + +pci:v00001002d00004750sv00001002sd00000080* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo + +pci:v00001002d00004750sv00001002sd00000084* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo + +pci:v00001002d00004750sv00001002sd00004750* + ID_MODEL_FROM_DATABASE=Rage Pro Turbo + +pci:v00001002d00004752* + ID_MODEL_FROM_DATABASE=Rage XL PCI + +pci:v00001002d00004752sv00000E11sd0000001E* + ID_MODEL_FROM_DATABASE=Proliant Rage XL + +pci:v00001002d00004752sv00001002sd00000008* + ID_MODEL_FROM_DATABASE=Rage XL + +pci:v00001002d00004752sv00001002sd00004752* + ID_MODEL_FROM_DATABASE=Proliant Rage XL + +pci:v00001002d00004752sv00001002sd00008008* + ID_MODEL_FROM_DATABASE=Rage XL + +pci:v00001002d00004752sv00001014sd00000240* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00001002d00004752sv00001028sd000000CE* + ID_MODEL_FROM_DATABASE=PowerEdge 1400 + +pci:v00001002d00004752sv00001028sd000000D1* + ID_MODEL_FROM_DATABASE=PowerEdge 2550 + +pci:v00001002d00004752sv00001028sd000000D9* + ID_MODEL_FROM_DATABASE=PowerEdge 2500 + +pci:v00001002d00004752sv00001028sd00000134* + ID_MODEL_FROM_DATABASE=PowerEdge 600SC + +pci:v00001002d00004752sv00001028sd0000014A* + ID_MODEL_FROM_DATABASE=PowerEdge 1750 + +pci:v00001002d00004752sv00001028sd00000165* + ID_MODEL_FROM_DATABASE=PowerEdge 750 + +pci:v00001002d00004752sv0000103Csd000010E1* + ID_MODEL_FROM_DATABASE=NetServer Rage XL + +pci:v00001002d00004752sv0000103Csd00003208* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G2 + +pci:v00001002d00004752sv0000107Bsd00006400* + ID_MODEL_FROM_DATABASE=6400 Server + +pci:v00001002d00004752sv00001734sd0000007A* + ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX series onboard VGA + +pci:v00001002d00004752sv00001734sd00001073* + ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + +pci:v00001002d00004752sv00008086sd00003411* + ID_MODEL_FROM_DATABASE=SDS2 Mainboard + +pci:v00001002d00004752sv00008086sd00003427* + ID_MODEL_FROM_DATABASE=S875WP1-E mainboard + +pci:v00001002d00004752sv00008086sd00005744* + ID_MODEL_FROM_DATABASE=S845WD1-E mainboard + +pci:v00001002d00004753* + ID_MODEL_FROM_DATABASE=Rage XC + +pci:v00001002d00004753sv00001002sd00004753* + ID_MODEL_FROM_DATABASE=Rage XC + +pci:v00001002d00004754* + ID_MODEL_FROM_DATABASE=3D Rage II/II+ PCI [Mach64 GT] + +pci:v00001002d00004755* + ID_MODEL_FROM_DATABASE=3D Rage II+ PCI [Mach64 GTB] + +pci:v00001002d00004756* + ID_MODEL_FROM_DATABASE=3D Rage IIC PCI [Mach64 GT IIC] + +pci:v00001002d00004756sv00001002sd00004756* + ID_MODEL_FROM_DATABASE=Rage IIC + +pci:v00001002d00004757* + ID_MODEL_FROM_DATABASE=3D Rage IIC AGP + +pci:v00001002d00004757sv00001002sd00004757* + ID_MODEL_FROM_DATABASE=Rage IIC AGP + +pci:v00001002d00004757sv00001028sd00000089* + ID_MODEL_FROM_DATABASE=Rage 3D IIC + +pci:v00001002d00004757sv00001028sd0000008E* + ID_MODEL_FROM_DATABASE=PowerEdge 1300 onboard video + +pci:v00001002d00004757sv00001028sd00004082* + ID_MODEL_FROM_DATABASE=Rage 3D IIC + +pci:v00001002d00004757sv00001028sd00008082* + ID_MODEL_FROM_DATABASE=Rage 3D IIC + +pci:v00001002d00004757sv00001028sd0000C082* + ID_MODEL_FROM_DATABASE=Rage 3D IIC + +pci:v00001002d00004758* + ID_MODEL_FROM_DATABASE=210888GX [Mach64 GX PCI] + +pci:v00001002d00004759* + ID_MODEL_FROM_DATABASE=3D Rage IIC PCI + +pci:v00001002d0000475A* + ID_MODEL_FROM_DATABASE=3D Rage IIC AGP + +pci:v00001002d0000475Asv00001002sd00000084* + ID_MODEL_FROM_DATABASE=Rage 3D Pro AGP 2x XPERT 98 + +pci:v00001002d0000475Asv00001002sd00000087* + ID_MODEL_FROM_DATABASE=Rage 3D IIC + +pci:v00001002d0000475Asv00001002sd0000475A* + ID_MODEL_FROM_DATABASE=Rage IIC AGP + +pci:v00001002d00004966* + ID_MODEL_FROM_DATABASE=RV250 [Radeon 9000 Series] + +pci:v00001002d00004966sv000010F1sd00000002* + ID_MODEL_FROM_DATABASE=RV250 If [Tachyon G9000 PRO] + +pci:v00001002d00004966sv0000148Csd00002039* + ID_MODEL_FROM_DATABASE=RV250 If [Radeon 9000 Pro "Evil Commando"] + +pci:v00001002d00004966sv00001509sd00009A00* + ID_MODEL_FROM_DATABASE=RV250 If [Radeon 9000 "AT009"] + +pci:v00001002d00004966sv00001681sd00000040* + ID_MODEL_FROM_DATABASE=RV250 If [3D prophet 9000] + +pci:v00001002d00004966sv0000174Bsd00007176* + ID_MODEL_FROM_DATABASE=RV250 If [Sapphire Radeon 9000 Pro] + +pci:v00001002d00004966sv0000174Bsd00007192* + ID_MODEL_FROM_DATABASE=RV250 If [Radeon 9000 "Atlantis"] + +pci:v00001002d00004966sv000017AFsd00002005* + ID_MODEL_FROM_DATABASE=RV250 If [Excalibur Radeon 9000 Pro] + +pci:v00001002d00004966sv000017AFsd00002006* + ID_MODEL_FROM_DATABASE=RV250 If [Excalibur Radeon 9000] + +pci:v00001002d0000496E* + ID_MODEL_FROM_DATABASE=RV250 [Radeon 9000] (Secondary) + +pci:v00001002d00004A49* + ID_MODEL_FROM_DATABASE=R420 [Radeon X800 PRO/GTO AGP] + +pci:v00001002d00004A49sv0000174Bsd00002620* + ID_MODEL_FROM_DATABASE=R420 [Radeon X800 GTO AGP] + +pci:v00001002d00004A4A* + ID_MODEL_FROM_DATABASE=R420 [Radeon X800 GT AGP] + +pci:v00001002d00004A4B* + ID_MODEL_FROM_DATABASE=R420 [Radeon X800 AGP Series] + +pci:v00001002d00004A4D* + ID_MODEL_FROM_DATABASE=R420 JM [FireGL X3] + +pci:v00001002d00004A4E* + ID_MODEL_FROM_DATABASE=RV420/M18 [Mobility Radeon 9800] + +pci:v00001002d00004A4F* + ID_MODEL_FROM_DATABASE=R420 [Radeon X850 AGP] + +pci:v00001002d00004A50* + ID_MODEL_FROM_DATABASE=R420 [Radeon X800 XT Platinum Edition AGP] + +pci:v00001002d00004A54* + ID_MODEL_FROM_DATABASE=R420 [Radeon X800 VE AGP] + +pci:v00001002d00004A54sv00001002sd00004422* + ID_MODEL_FROM_DATABASE=All-In-Wonder X800 VE AGP + +pci:v00001002d00004A69* + ID_MODEL_FROM_DATABASE=R420 [Radeon X800 PRO/GTO] (Secondary) + +pci:v00001002d00004A6A* + ID_MODEL_FROM_DATABASE=R420 [Radeon X800] (Secondary) + +pci:v00001002d00004A6B* + ID_MODEL_FROM_DATABASE=R420 [Radeon X800 XT AGP] (Secondary) + +pci:v00001002d00004A70* + ID_MODEL_FROM_DATABASE=R420 [Radeon X800 XT Platinum Edition AGP] (Secondary) + +pci:v00001002d00004A74* + ID_MODEL_FROM_DATABASE=R420 [Radeon X800 VE] (Secondary) + +pci:v00001002d00004B49* + ID_MODEL_FROM_DATABASE=R481 [Radeon X850 XT AGP] + +pci:v00001002d00004B4B* + ID_MODEL_FROM_DATABASE=R481 [Radeon X850 PRO AGP] + +pci:v00001002d00004B4C* + ID_MODEL_FROM_DATABASE=R481 [Radeon X850 XT Platinum Edition AGP] + +pci:v00001002d00004B69* + ID_MODEL_FROM_DATABASE=R481 [Radeon X850 XT AGP] (Secondary) + +pci:v00001002d00004B6B* + ID_MODEL_FROM_DATABASE=R481 [Radeon X850 PRO AGP] (Secondary) + +pci:v00001002d00004B6C* + ID_MODEL_FROM_DATABASE=R481 [Radeon X850 XT Platinum Edition AGP] (Secondary) + +pci:v00001002d00004C42* + ID_MODEL_FROM_DATABASE=3D Rage LT PRO AGP 2X + +pci:v00001002d00004C42sv00000E11sd0000B0E7* + ID_MODEL_FROM_DATABASE=Rage LT Pro (Compaq Presario 5240) + +pci:v00001002d00004C42sv00000E11sd0000B0E8* + ID_MODEL_FROM_DATABASE=Rage 3D LT Pro + +pci:v00001002d00004C42sv00000E11sd0000B10E* + ID_MODEL_FROM_DATABASE=3D Rage LT Pro (Compaq Armada 1750) + +pci:v00001002d00004C42sv00001002sd00000040* + ID_MODEL_FROM_DATABASE=Rage LT Pro AGP 2X + +pci:v00001002d00004C42sv00001002sd00000044* + ID_MODEL_FROM_DATABASE=Rage LT Pro AGP 2X + +pci:v00001002d00004C42sv00001002sd00004C42* + ID_MODEL_FROM_DATABASE=Rage LT Pro AGP 2X + +pci:v00001002d00004C42sv00001002sd00008001* + ID_MODEL_FROM_DATABASE=Rage LT Pro AGP 2X + +pci:v00001002d00004C42sv00001028sd00000085* + ID_MODEL_FROM_DATABASE=Rage 3D LT Pro + +pci:v00001002d00004C46* + ID_MODEL_FROM_DATABASE=Rage Mobility 128 AGP 2X/Mobility M3 + +pci:v00001002d00004C46sv00001002sd00000155* + ID_MODEL_FROM_DATABASE=IBM Thinkpad A22p + +pci:v00001002d00004C46sv00001014sd00000155* + ID_MODEL_FROM_DATABASE=IBM Thinkpad A22p + +pci:v00001002d00004C46sv00001028sd000000B1* + ID_MODEL_FROM_DATABASE=Latitude C600 + +pci:v00001002d00004C47* + ID_MODEL_FROM_DATABASE=3D Rage IIC PCI/Mobility Radeon 7500/7500C + +pci:v00001002d00004C49* + ID_MODEL_FROM_DATABASE=3D Rage LT PRO PCI + +pci:v00001002d00004C49sv00001002sd00000004* + ID_MODEL_FROM_DATABASE=Rage LT Pro + +pci:v00001002d00004C49sv00001002sd00000040* + ID_MODEL_FROM_DATABASE=Rage LT Pro + +pci:v00001002d00004C49sv00001002sd00000044* + ID_MODEL_FROM_DATABASE=Rage LT Pro + +pci:v00001002d00004C49sv00001002sd00004C49* + ID_MODEL_FROM_DATABASE=Rage LT Pro + +pci:v00001002d00004C4D* + ID_MODEL_FROM_DATABASE=Rage Mobility AGP 2x Series + +pci:v00001002d00004C4Dsv00000E11sd0000B111* + ID_MODEL_FROM_DATABASE=Armada M700 + +pci:v00001002d00004C4Dsv00000E11sd0000B160* + ID_MODEL_FROM_DATABASE=Armada E500 + +pci:v00001002d00004C4Dsv00001002sd00000084* + ID_MODEL_FROM_DATABASE=Xpert 98 AGP 2X (Mobility) + +pci:v00001002d00004C4Dsv00001014sd00000154* + ID_MODEL_FROM_DATABASE=ThinkPad A20m/A21m + +pci:v00001002d00004C4Dsv00001028sd000000AA* + ID_MODEL_FROM_DATABASE=Latitude CPt + +pci:v00001002d00004C4Dsv00001028sd000000BB* + ID_MODEL_FROM_DATABASE=Latitude CPx + +pci:v00001002d00004C4Dsv00001179sd0000FF00* + ID_MODEL_FROM_DATABASE=Satellite 1715XCDS laptop + +pci:v00001002d00004C4Dsv000013BDsd00001019* + ID_MODEL_FROM_DATABASE=PC-AR10 + +pci:v00001002d00004C50* + ID_MODEL_FROM_DATABASE=3D Rage LT PRO PCI + +pci:v00001002d00004C50sv00001002sd00004C50* + ID_MODEL_FROM_DATABASE=Rage LT Pro + +pci:v00001002d00004C52* + ID_MODEL_FROM_DATABASE=Rage Mobility-M1 PCI + +pci:v00001002d00004C52sv00001033sd00008112* + ID_MODEL_FROM_DATABASE=Versa Note VXi + +pci:v00001002d00004C54* + ID_MODEL_FROM_DATABASE=264LT [Mach64 LT] + +pci:v00001002d00004C57* + ID_MODEL_FROM_DATABASE=RV200/M7 [Mobility Radeon 7500] + +pci:v00001002d00004C57sv00001014sd00000517* + ID_MODEL_FROM_DATABASE=ThinkPad T30 + +pci:v00001002d00004C57sv00001014sd00000530* + ID_MODEL_FROM_DATABASE=ThinkPad T42 2373-4WU + +pci:v00001002d00004C57sv00001028sd000000E6* + ID_MODEL_FROM_DATABASE=Radeon Mobility M7 LW (Dell Inspiron 8100) + +pci:v00001002d00004C57sv00001028sd0000012A* + ID_MODEL_FROM_DATABASE=Latitude C640 + +pci:v00001002d00004C57sv00001043sd00001622* + ID_MODEL_FROM_DATABASE=Mobility Radeon M7 (L3C/S) + +pci:v00001002d00004C57sv0000144Dsd0000C006* + ID_MODEL_FROM_DATABASE=Radeon Mobility M7 LW in vpr Matrix 170B4 + +pci:v00001002d00004C58* + ID_MODEL_FROM_DATABASE=RV200/M7 [Mobility FireGL 7800] + +pci:v00001002d00004C59* + ID_MODEL_FROM_DATABASE=RV100/M6 [Rage/Radeon Mobility Series] + +pci:v00001002d00004C59sv00000E11sd0000B111* + ID_MODEL_FROM_DATABASE=Evo N600c + +pci:v00001002d00004C59sv00001014sd00000235* + ID_MODEL_FROM_DATABASE=ThinkPad A30/A30p (2652/2653) + +pci:v00001002d00004C59sv00001014sd00000239* + ID_MODEL_FROM_DATABASE=ThinkPad X22/X23/X24 + +pci:v00001002d00004C59sv0000103Csd00000025* + ID_MODEL_FROM_DATABASE=XE4500 Notebook + +pci:v00001002d00004C59sv0000104Dsd000080E7* + ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + +pci:v00001002d00004C59sv0000104Dsd00008140* + ID_MODEL_FROM_DATABASE=PCG-Z1SP laptop + +pci:v00001002d00004C59sv00001509sd00001930* + ID_MODEL_FROM_DATABASE=Medion MD9703 + +pci:v00001002d00004C66* + ID_MODEL_FROM_DATABASE=RV250/M9 [Mobility FireGL 9000/Radeon 9000] + +pci:v00001002d00004C66sv00001014sd0000054D* + ID_MODEL_FROM_DATABASE=ThinkPad T41 + +pci:v00001002d00004C6E* + ID_MODEL_FROM_DATABASE=RV250/M9 [Mobility Radeon 9000] (Secondary) + +pci:v00001002d00004D46* + ID_MODEL_FROM_DATABASE=Mobility 128 AGP 4X/Mobility M4 + +pci:v00001002d00004D52* + ID_MODEL_FROM_DATABASE=Theater 550 PRO PCI [ATI TV Wonder 550] + +pci:v00001002d00004D53* + ID_MODEL_FROM_DATABASE=Theater 550 PRO PCIe + +pci:v00001002d00004E44* + ID_MODEL_FROM_DATABASE=R300 [Radeon 9700/9700 PRO] + +pci:v00001002d00004E44sv00001002sd0000515E* + ID_MODEL_FROM_DATABASE=Radeon ES1000 + +pci:v00001002d00004E44sv00001002sd00005965* + ID_MODEL_FROM_DATABASE=Radeon ES1000 + +pci:v00001002d00004E45* + ID_MODEL_FROM_DATABASE=R300 [Radeon 9500 PRO/9700] + +pci:v00001002d00004E45sv00001002sd00000002* + ID_MODEL_FROM_DATABASE=Radeon R300 NE [Radeon 9500 Pro] + +pci:v00001002d00004E45sv00001681sd00000002* + ID_MODEL_FROM_DATABASE=Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] + +pci:v00001002d00004E46* + ID_MODEL_FROM_DATABASE=R300 NF [Radeon 9600 TX] + +pci:v00001002d00004E47* + ID_MODEL_FROM_DATABASE=R300 [FireGL X1] + +pci:v00001002d00004E48* + ID_MODEL_FROM_DATABASE=R350 [Radeon 9800 Series] + +pci:v00001002d00004E49* + ID_MODEL_FROM_DATABASE=R350 [Radeon 9800] + +pci:v00001002d00004E4A* + ID_MODEL_FROM_DATABASE=R360 [Radeon 9800 XXL/XT] + +pci:v00001002d00004E4Asv00001002sd00004E4A* + ID_MODEL_FROM_DATABASE=R360 [Radeon 9800 XT] + +pci:v00001002d00004E4B* + ID_MODEL_FROM_DATABASE=R350 [FireGL X2 AGP Pro] + +pci:v00001002d00004E50* + ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600 PRO Turbo] + +pci:v00001002d00004E50sv00001025sd0000005A* + ID_MODEL_FROM_DATABASE=TravelMate 290 + +pci:v00001002d00004E50sv0000103Csd0000088C* + ID_MODEL_FROM_DATABASE=NC8000 laptop + +pci:v00001002d00004E50sv0000103Csd00000890* + ID_MODEL_FROM_DATABASE=NC6000 laptop + +pci:v00001002d00004E50sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P35 notebook + +pci:v00001002d00004E50sv00001462sd00000311* + ID_MODEL_FROM_DATABASE=MSI M510A + +pci:v00001002d00004E50sv00001734sd00001055* + ID_MODEL_FROM_DATABASE=Amilo M1420W + +pci:v00001002d00004E51* + ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] + +pci:v00001002d00004E52* + ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility Radeon 9500/9700 SE] + +pci:v00001002d00004E52sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P35 notebook + +pci:v00001002d00004E54* + ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility FireGL T2] + +pci:v00001002d00004E56* + ID_MODEL_FROM_DATABASE=RV360/M12 [Mobility Radeon 9550] + +pci:v00001002d00004E64* + ID_MODEL_FROM_DATABASE=R300 [Radeon 9700 PRO] (Secondary) + +pci:v00001002d00004E65* + ID_MODEL_FROM_DATABASE=R300 [Radeon 9500 PRO] (Secondary) + +pci:v00001002d00004E65sv00001002sd00000003* + ID_MODEL_FROM_DATABASE=Radeon R300 NE [Radeon 9500 Pro] + +pci:v00001002d00004E65sv00001681sd00000003* + ID_MODEL_FROM_DATABASE=Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary) + +pci:v00001002d00004E66* + ID_MODEL_FROM_DATABASE=RV350 NF [Radeon 9600] (Secondary) + +pci:v00001002d00004E67* + ID_MODEL_FROM_DATABASE=R300 [FireGL X1] (Secondary) + +pci:v00001002d00004E68* + ID_MODEL_FROM_DATABASE=R350 [Radeon 9800 PRO] (Secondary) + +pci:v00001002d00004E69* + ID_MODEL_FROM_DATABASE=R350 [Radeon 9800] (Secondary) + +pci:v00001002d00004E6A* + ID_MODEL_FROM_DATABASE=RV350 NJ [Radeon 9800 XT] (Secondary) + +pci:v00001002d00004E6Asv00001002sd00004E6A* + ID_MODEL_FROM_DATABASE=R360 [Radeon 9800 XT] (Secondary) + +pci:v00001002d00004E6Asv00001002sd00004E71* + ID_MODEL_FROM_DATABASE=M10 NQ [Radeon Mobility 9600] + +pci:v00001002d00004E71* + ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600] (Secondary) + +pci:v00001002d00004F72* + ID_MODEL_FROM_DATABASE=RV250 [Radeon 9000 Series] + +pci:v00001002d00004F73* + ID_MODEL_FROM_DATABASE=RV250 [Radeon 9000 Series] (Secondary) + +pci:v00001002d00005044* + ID_MODEL_FROM_DATABASE=All-In-Wonder 128 PCI + +pci:v00001002d00005044sv00001002sd00000028* + ID_MODEL_FROM_DATABASE=Rage 128 AIW + +pci:v00001002d00005044sv00001002sd00000029* + ID_MODEL_FROM_DATABASE=Rage 128 AIW + +pci:v00001002d00005046* + ID_MODEL_FROM_DATABASE=Rage 128 PF/PRO AGP 4x TMDS + +pci:v00001002d00005046sv00001002sd00000004* + ID_MODEL_FROM_DATABASE=Rage Fury Pro + +pci:v00001002d00005046sv00001002sd00000008* + ID_MODEL_FROM_DATABASE=Rage Fury Pro/Xpert 2000 Pro + +pci:v00001002d00005046sv00001002sd00000014* + ID_MODEL_FROM_DATABASE=Rage Fury Pro + +pci:v00001002d00005046sv00001002sd00000018* + ID_MODEL_FROM_DATABASE=Rage Fury Pro/Xpert 2000 Pro + +pci:v00001002d00005046sv00001002sd00000028* + ID_MODEL_FROM_DATABASE=Rage 128 Pro AIW AGP + +pci:v00001002d00005046sv00001002sd0000002A* + ID_MODEL_FROM_DATABASE=Rage 128 Pro AIW AGP + +pci:v00001002d00005046sv00001002sd00000048* + ID_MODEL_FROM_DATABASE=Rage Fury Pro + +pci:v00001002d00005046sv00001002sd00002000* + ID_MODEL_FROM_DATABASE=Rage Fury MAXX AGP 4x (TMDS) (VGA device) + +pci:v00001002d00005046sv00001002sd00002001* + ID_MODEL_FROM_DATABASE=Rage Fury MAXX AGP 4x (TMDS) (Extra device?!) + +pci:v00001002d00005050* + ID_MODEL_FROM_DATABASE=Rage128 [Xpert 128 PCI] + +pci:v00001002d00005050sv00001002sd00000008* + ID_MODEL_FROM_DATABASE=Xpert 128 + +pci:v00001002d00005052* + ID_MODEL_FROM_DATABASE=Rage 128 PRO AGP 4X TMDS + +pci:v00001002d00005144* + ID_MODEL_FROM_DATABASE=R100 QD [Radeon 7200] + +pci:v00001002d00005144sv00001002sd00000008* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon VE + +pci:v00001002d00005144sv00001002sd00000009* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon + +pci:v00001002d00005144sv00001002sd0000000A* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon + +pci:v00001002d00005144sv00001002sd0000001A* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon + +pci:v00001002d00005144sv00001002sd00000029* + ID_MODEL_FROM_DATABASE=Radeon AIW + +pci:v00001002d00005144sv00001002sd00000038* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon + +pci:v00001002d00005144sv00001002sd00000039* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon + +pci:v00001002d00005144sv00001002sd0000008A* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon + +pci:v00001002d00005144sv00001002sd000000BA* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon + +pci:v00001002d00005144sv00001002sd00000139* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon + +pci:v00001002d00005144sv00001002sd0000028A* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon + +pci:v00001002d00005144sv00001002sd000002AA* + ID_MODEL_FROM_DATABASE=Radeon AIW + +pci:v00001002d00005144sv00001002sd0000053A* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon + +pci:v00001002d00005148* + ID_MODEL_FROM_DATABASE=R200 QH [Radeon 8500] + +pci:v00001002d00005148sv00001002sd0000010A* + ID_MODEL_FROM_DATABASE=FireGL 8800 64Mb + +pci:v00001002d00005148sv00001002sd00000152* + ID_MODEL_FROM_DATABASE=FireGL 8800 128Mb + +pci:v00001002d00005148sv00001002sd00000162* + ID_MODEL_FROM_DATABASE=FireGL 8700 32Mb + +pci:v00001002d00005148sv00001002sd00000172* + ID_MODEL_FROM_DATABASE=FireGL 8700 64Mb + +pci:v00001002d0000514C* + ID_MODEL_FROM_DATABASE=R200 QL [Radeon 8500/8500 LE] + +pci:v00001002d0000514Csv00001002sd0000003A* + ID_MODEL_FROM_DATABASE=Radeon R200 QL [Radeon 8500 LE] + +pci:v00001002d0000514Csv00001002sd0000013A* + ID_MODEL_FROM_DATABASE=Radeon 8500 + +pci:v00001002d0000514Csv0000148Csd00002026* + ID_MODEL_FROM_DATABASE=R200 QL [Radeon 8500 Evil Master II Multi Display Edition] + +pci:v00001002d0000514Csv00001681sd00000010* + ID_MODEL_FROM_DATABASE=Radeon 8500 [3D Prophet 8500 128Mb] + +pci:v00001002d0000514Csv0000174Bsd00007149* + ID_MODEL_FROM_DATABASE=Radeon R200 QL [Sapphire Radeon 8500 LE] + +pci:v00001002d0000514Csv00001787sd00000F08* + ID_MODEL_FROM_DATABASE=Radeon R200 QL [PowerMagic Radeon 8500] + +pci:v00001002d0000514D* + ID_MODEL_FROM_DATABASE=R200 QM [Radeon 9100] + +pci:v00001002d00005157* + ID_MODEL_FROM_DATABASE=RV200 QW [Radeon 7500] + +pci:v00001002d00005157sv00001002sd0000013A* + ID_MODEL_FROM_DATABASE=Radeon 7500 + +pci:v00001002d00005157sv00001002sd00000F2B* + ID_MODEL_FROM_DATABASE=ALL-IN-WONDER VE PCI + +pci:v00001002d00005157sv00001002sd0000103A* + ID_MODEL_FROM_DATABASE=Dell Optiplex GX260 + +pci:v00001002d00005157sv00001458sd00004000* + ID_MODEL_FROM_DATABASE=RV200 QW [RADEON 7500 PRO MAYA AR] + +pci:v00001002d00005157sv0000148Csd00002024* + ID_MODEL_FROM_DATABASE=RV200 QW [Radeon 7500LE Dual Display] + +pci:v00001002d00005157sv0000148Csd00002025* + ID_MODEL_FROM_DATABASE=RV200 QW [Radeon 7500 Evil Master Multi Display Edition] + +pci:v00001002d00005157sv0000148Csd00002036* + ID_MODEL_FROM_DATABASE=RV200 QW [Radeon 7500 PCI Dual Display] + +pci:v00001002d00005157sv0000174Bsd00007146* + ID_MODEL_FROM_DATABASE=RV200 QW [Radeon 7500 LE] + +pci:v00001002d00005157sv0000174Bsd00007147* + ID_MODEL_FROM_DATABASE=RV200 QW [Sapphire Radeon 7500LE] + +pci:v00001002d00005157sv0000174Bsd00007161* + ID_MODEL_FROM_DATABASE=Radeon RV200 QW [Radeon 7500 LE] + +pci:v00001002d00005157sv000017AFsd00000202* + ID_MODEL_FROM_DATABASE=RV200 QW [Excalibur Radeon 7500LE] + +pci:v00001002d00005159* + ID_MODEL_FROM_DATABASE=RV100 QY [Radeon 7000/VE] + +pci:v00001002d00005159sv00001002sd0000000A* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon VE + +pci:v00001002d00005159sv00001002sd0000000B* + ID_MODEL_FROM_DATABASE=Radeon 7000 + +pci:v00001002d00005159sv00001002sd00000038* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon VE + +pci:v00001002d00005159sv00001002sd0000003A* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon VE + +pci:v00001002d00005159sv00001002sd000000BA* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon VE + +pci:v00001002d00005159sv00001002sd0000013A* + ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon VE + +pci:v00001002d00005159sv00001002sd00000908* + ID_MODEL_FROM_DATABASE=XVR-100 (supplied by Sun) + +pci:v00001002d00005159sv00001014sd0000029A* + ID_MODEL_FROM_DATABASE=Remote Supervisor Adapter II (RSA2) + +pci:v00001002d00005159sv00001014sd000002C8* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00001002d00005159sv00001028sd0000016C* + ID_MODEL_FROM_DATABASE=PowerEdge 1850 Embedded Radeon 7000/VE + +pci:v00001002d00005159sv00001028sd0000016D* + ID_MODEL_FROM_DATABASE=PowerEdge 2850 Embedded Radeon 7000-M + +pci:v00001002d00005159sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 Embedded Radeon 7000/VE + +pci:v00001002d00005159sv00001028sd0000019A* + ID_MODEL_FROM_DATABASE=PowerEdge SC1425 + +pci:v00001002d00005159sv0000103Csd00001292* + ID_MODEL_FROM_DATABASE=Radeon 7000 + +pci:v00001002d00005159sv00001043sd0000C00A* + ID_MODEL_FROM_DATABASE=A7000/T/64M + +pci:v00001002d00005159sv00001458sd00004002* + ID_MODEL_FROM_DATABASE=RV100 QY [RADEON 7000 PRO MAYA AV Series] + +pci:v00001002d00005159sv0000148Csd00002003* + ID_MODEL_FROM_DATABASE=RV100 QY [Radeon 7000 Multi-Display Edition] + +pci:v00001002d00005159sv0000148Csd00002023* + ID_MODEL_FROM_DATABASE=RV100 QY [Radeon 7000 Evil Master Multi-Display] + +pci:v00001002d00005159sv0000174Bsd00000280* + ID_MODEL_FROM_DATABASE=Radeon RV100 QY [Radeon 7000/VE] + +pci:v00001002d00005159sv0000174Bsd00007112* + ID_MODEL_FROM_DATABASE=RV100 QY [Sapphire Radeon VE 7000] + +pci:v00001002d00005159sv0000174Bsd00007C28* + ID_MODEL_FROM_DATABASE=Sapphire Radeon VE 7000 DDR + +pci:v00001002d00005159sv00001787sd00000202* + ID_MODEL_FROM_DATABASE=RV100 QY [Excalibur Radeon 7000] + +pci:v00001002d00005159sv000017EEsd00001001* + ID_MODEL_FROM_DATABASE=Radeon 7000 64MB DDR + DVI + +pci:v00001002d0000515E* + ID_MODEL_FROM_DATABASE=ES1000 + +pci:v00001002d0000515Esv00001028sd000001BB* + ID_MODEL_FROM_DATABASE=PowerEdge 1955 Embedded ATI ES1000 + +pci:v00001002d0000515Esv00001028sd000001DF* + ID_MODEL_FROM_DATABASE=PowerEdge SC440 + +pci:v00001002d0000515Esv00001028sd000001E6* + ID_MODEL_FROM_DATABASE=PowerEdge 860 + +pci:v00001002d0000515Esv00001028sd000001F0* + ID_MODEL_FROM_DATABASE=PowerEdge R900 Embedded ATI ES1000 + +pci:v00001002d0000515Esv00001028sd00000205* + ID_MODEL_FROM_DATABASE=PowerEdge 2970 Embedded ATI ES1000 + +pci:v00001002d0000515Esv00001028sd0000020B* + ID_MODEL_FROM_DATABASE=PowerEdge T605 Embedded ATI ES1000 + +pci:v00001002d0000515Esv00001028sd0000020F* + ID_MODEL_FROM_DATABASE=PowerEdge R300 Embedded ATI ES1000 + +pci:v00001002d0000515Esv00001028sd00000210* + ID_MODEL_FROM_DATABASE=PowerEdge T300 Embedded ATI ES1000 + +pci:v00001002d0000515Esv00001028sd00000221* + ID_MODEL_FROM_DATABASE=PowerEdge R805 Embedded ATI ES1000 + +pci:v00001002d0000515Esv00001028sd00000223* + ID_MODEL_FROM_DATABASE=PowerEdge R905 Embedded ATI ES1000 + +pci:v00001002d0000515Esv00001028sd00000225* + ID_MODEL_FROM_DATABASE=PowerEdge T105 Embedded ATI ES1000 + +pci:v00001002d0000515Esv00001028sd0000023C* + ID_MODEL_FROM_DATABASE=PowerEdge R200 Embedded ATI ES1000 + +pci:v00001002d0000515Esv0000103Csd00001304* + ID_MODEL_FROM_DATABASE=Integrity iLO2 Advanced KVM VGA [AD307A] + +pci:v00001002d0000515Esv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00001002d0000515Esv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00001002d0000515Esv00008086sd00003476* + ID_MODEL_FROM_DATABASE=S5000PSLSATA Server Board + +pci:v00001002d00005245* + ID_MODEL_FROM_DATABASE=Rage 128 GL PCI + +pci:v00001002d00005245sv00001002sd00000008* + ID_MODEL_FROM_DATABASE=Xpert 128 + +pci:v00001002d00005245sv00001002sd00000028* + ID_MODEL_FROM_DATABASE=Rage 128 AIW + +pci:v00001002d00005245sv00001002sd00000029* + ID_MODEL_FROM_DATABASE=Rage 128 AIW + +pci:v00001002d00005245sv00001002sd00000068* + ID_MODEL_FROM_DATABASE=Rage 128 AIW + +pci:v00001002d00005246* + ID_MODEL_FROM_DATABASE=Rage Fury/Xpert 128/Xpert 2000 AGP 2x + +pci:v00001002d00005246sv00001002sd00000004* + ID_MODEL_FROM_DATABASE=Magnum/Xpert 128/Xpert 99 + +pci:v00001002d00005246sv00001002sd00000008* + ID_MODEL_FROM_DATABASE=Magnum/Xpert128/X99/Xpert2000 + +pci:v00001002d00005246sv00001002sd00000028* + ID_MODEL_FROM_DATABASE=Rage 128 AIW AGP + +pci:v00001002d00005246sv00001002sd00000044* + ID_MODEL_FROM_DATABASE=Rage Fury/Xpert 128/Xpert 2000 + +pci:v00001002d00005246sv00001002sd00000068* + ID_MODEL_FROM_DATABASE=Rage 128 AIW AGP + +pci:v00001002d00005246sv00001002sd00000448* + ID_MODEL_FROM_DATABASE=Rage Fury + +pci:v00001002d0000524B* + ID_MODEL_FROM_DATABASE=Rage 128 VR PCI + +pci:v00001002d0000524C* + ID_MODEL_FROM_DATABASE=Rage 128 VR AGP + +pci:v00001002d0000524Csv00001002sd00000008* + ID_MODEL_FROM_DATABASE=Xpert 99/Xpert 2000 + +pci:v00001002d0000524Csv00001002sd00000088* + ID_MODEL_FROM_DATABASE=Xpert 99 + +pci:v00001002d00005346* + ID_MODEL_FROM_DATABASE=Rage 128 SF/4x AGP 2x + +pci:v00001002d00005346sv00001002sd00000048* + ID_MODEL_FROM_DATABASE=RAGE 128 16MB VGA TVOUT AMC PAL + +pci:v00001002d0000534D* + ID_MODEL_FROM_DATABASE=Rage 128 4X AGP 4x + +pci:v00001002d0000534Dsv00001002sd00000008* + ID_MODEL_FROM_DATABASE=Xpert 99/Xpert 2000 + +pci:v00001002d0000534Dsv00001002sd00000018* + ID_MODEL_FROM_DATABASE=Xpert 2000 + +pci:v00001002d00005354* + ID_MODEL_FROM_DATABASE=Mach 64 VT + +pci:v00001002d00005354sv00001002sd00005654* + ID_MODEL_FROM_DATABASE=Mach 64 reference + +pci:v00001002d00005446* + ID_MODEL_FROM_DATABASE=Rage 128 PRO Ultra AGP 4x + +pci:v00001002d00005446sv00001002sd00000004* + ID_MODEL_FROM_DATABASE=Rage Fury Pro + +pci:v00001002d00005446sv00001002sd00000008* + ID_MODEL_FROM_DATABASE=Rage Fury Pro/Xpert 2000 Pro + +pci:v00001002d00005446sv00001002sd00000018* + ID_MODEL_FROM_DATABASE=Rage Fury Pro/Xpert 2000 Pro + +pci:v00001002d00005446sv00001002sd00000028* + ID_MODEL_FROM_DATABASE=Rage 128 AIW Pro AGP + +pci:v00001002d00005446sv00001002sd00000029* + ID_MODEL_FROM_DATABASE=Rage 128 AIW + +pci:v00001002d00005446sv00001002sd0000002A* + ID_MODEL_FROM_DATABASE=Rage 128 AIW Pro AGP + +pci:v00001002d00005446sv00001002sd0000002B* + ID_MODEL_FROM_DATABASE=Rage 128 AIW + +pci:v00001002d00005446sv00001002sd00000048* + ID_MODEL_FROM_DATABASE=Xpert 2000 Pro + +pci:v00001002d00005452* + ID_MODEL_FROM_DATABASE=Rage 128 PRO Ultra4XL VR-R AGP + +pci:v00001002d00005452sv00001002sd0000001C* + ID_MODEL_FROM_DATABASE=Rage 128 Pro 4XL + +pci:v00001002d00005452sv0000103Csd00001279* + ID_MODEL_FROM_DATABASE=Rage 128 Pro 4XL + +pci:v00001002d00005460* + ID_MODEL_FROM_DATABASE=RV370/M22 [Mobility Radeon X300] + +pci:v00001002d00005460sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00001002d00005461* + ID_MODEL_FROM_DATABASE=RV370/M22 [Mobility Radeon X300] + +pci:v00001002d00005462* + ID_MODEL_FROM_DATABASE=RV380/M24C [Mobility Radeon X600 SE] + +pci:v00001002d00005464* + ID_MODEL_FROM_DATABASE=RV370/M22 GL [Mobility FireGL V3100] + +pci:v00001002d00005549* + ID_MODEL_FROM_DATABASE=R423 UI [Radeon X800 GTO] + +pci:v00001002d0000554A* + ID_MODEL_FROM_DATABASE=R423 [Radeon X800 XT Platinum Edition] + +pci:v00001002d0000554B* + ID_MODEL_FROM_DATABASE=R423 UK [Radeon X800 GT] + +pci:v00001002d0000554Bsv00001002sd00000302* + ID_MODEL_FROM_DATABASE=Radeon X800 SE + +pci:v00001002d0000554D* + ID_MODEL_FROM_DATABASE=R430 [Radeon X800 XL] + +pci:v00001002d0000554Dsv00001002sd00000322* + ID_MODEL_FROM_DATABASE=All-In-Wonder X800 XL + +pci:v00001002d0000554Dsv00001458sd00002124* + ID_MODEL_FROM_DATABASE=GV-R80L256V-B (AGP) + +pci:v00001002d0000554E* + ID_MODEL_FROM_DATABASE=R430 [All-In-Wonder X800 GT] + +pci:v00001002d0000554F* + ID_MODEL_FROM_DATABASE=R430 [Radeon X800] + +pci:v00001002d00005550* + ID_MODEL_FROM_DATABASE=R423 [FireGL V7100] + +pci:v00001002d00005551* + ID_MODEL_FROM_DATABASE=R423 [FireGL V5100] + +pci:v00001002d00005569* + ID_MODEL_FROM_DATABASE=R423 UI [Radeon X800 PRO] (Secondary) + +pci:v00001002d0000556B* + ID_MODEL_FROM_DATABASE=R423 [Radeon X800 GT] (Secondary) + +pci:v00001002d0000556D* + ID_MODEL_FROM_DATABASE=R430 [Radeon X800 XL] (Secondary) + +pci:v00001002d0000556Dsv00001458sd00002125* + ID_MODEL_FROM_DATABASE=GV-R80L256V-B (AGP) + +pci:v00001002d0000556F* + ID_MODEL_FROM_DATABASE=R430 [Radeon X800] (Secondary) + +pci:v00001002d00005571* + ID_MODEL_FROM_DATABASE=R423 GL [FireGL V5100] (Secondary) + +pci:v00001002d0000564B* + ID_MODEL_FROM_DATABASE=RV410/M26 [Mobility FireGL V5000] + +pci:v00001002d0000564F* + ID_MODEL_FROM_DATABASE=RV410/M26 [Mobility Radeon X700 XL] + +pci:v00001002d00005652* + ID_MODEL_FROM_DATABASE=RV410/M26 [Mobility Radeon X700] + +pci:v00001002d00005653* + ID_MODEL_FROM_DATABASE=RV410/M26 [Mobility Radeon X700] + +pci:v00001002d00005653sv00001025sd00000080* + ID_MODEL_FROM_DATABASE=Aspire 5024WLMi + +pci:v00001002d00005653sv0000103Csd00000940* + ID_MODEL_FROM_DATABASE=HP Compaq NW8240 Mobile Workstation + +pci:v00001002d00005654* + ID_MODEL_FROM_DATABASE=264VT [Mach64 VT] + +pci:v00001002d00005654sv00001002sd00005654* + ID_MODEL_FROM_DATABASE=Mach64VT Reference + +pci:v00001002d00005655* + ID_MODEL_FROM_DATABASE=264VT3 [Mach64 VT3] + +pci:v00001002d00005656* + ID_MODEL_FROM_DATABASE=264VT4 [Mach64 VT4] + +pci:v00001002d00005657* + ID_MODEL_FROM_DATABASE=RV410 [Radeon X550 XTX / X700] + +pci:v00001002d00005830* + ID_MODEL_FROM_DATABASE=RS300 Host Bridge + +pci:v00001002d00005831* + ID_MODEL_FROM_DATABASE=RS300 Host Bridge + +pci:v00001002d00005832* + ID_MODEL_FROM_DATABASE=RS300 Host Bridge + +pci:v00001002d00005833* + ID_MODEL_FROM_DATABASE=Radeon 9100 IGP Host Bridge + +pci:v00001002d00005834* + ID_MODEL_FROM_DATABASE=RS300 [Radeon 9100 IGP] + +pci:v00001002d00005835* + ID_MODEL_FROM_DATABASE=RS300M [Mobility Radeon 9100 IGP] + +pci:v00001002d00005838* + ID_MODEL_FROM_DATABASE=Radeon 9100 IGP AGP Bridge + +pci:v00001002d00005854* + ID_MODEL_FROM_DATABASE=RS480 [Radeon Xpress 200 Series] (Secondary) + +pci:v00001002d00005874* + ID_MODEL_FROM_DATABASE=RS480 [Radeon Xpress 1150] (Secondary) + +pci:v00001002d00005940* + ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 PRO] (Secondary) + +pci:v00001002d00005940sv000017AFsd00002021* + ID_MODEL_FROM_DATABASE=Excalibur Radeon 9250 (Secondary) + +pci:v00001002d00005941* + ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] (Secondary) + +pci:v00001002d00005941sv00001458sd00004019* + ID_MODEL_FROM_DATABASE=Gigabyte Radeon 9200 + +pci:v00001002d00005941sv0000174Bsd00007C12* + ID_MODEL_FROM_DATABASE=Sapphire Radeon 9200 + +pci:v00001002d00005941sv000017AFsd0000200D* + ID_MODEL_FROM_DATABASE=Excalibur Radeon 9200 + +pci:v00001002d00005941sv000018BCsd00000050* + ID_MODEL_FROM_DATABASE=GeXcube GC-R9200-C3 (Secondary) + +pci:v00001002d00005944* + ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE PCI] + +pci:v00001002d00005950* + ID_MODEL_FROM_DATABASE=RS480 Host Bridge + +pci:v00001002d00005950sv00001025sd00000080* + ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi + +pci:v00001002d00005950sv0000103Csd0000280A* + ID_MODEL_FROM_DATABASE=DC5750 Microtower + +pci:v00001002d00005950sv0000103Csd00002A20* + ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC + +pci:v00001002d00005950sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v00001002d00005950sv00001462sd00000131* + ID_MODEL_FROM_DATABASE=MS-1013 Notebook + +pci:v00001002d00005950sv00001462sd00007217* + ID_MODEL_FROM_DATABASE=Aspire L250 + +pci:v00001002d00005951* + ID_MODEL_FROM_DATABASE=Radeon Xpress 200 (RS480/RS482/RX480/RX482) Chipset - Host bridge + +pci:v00001002d00005952* + ID_MODEL_FROM_DATABASE=RD580 [CrossFire Xpress 3200] Chipset Host Bridge + +pci:v00001002d00005954* + ID_MODEL_FROM_DATABASE=RS480 [Radeon Xpress 200 Series] + +pci:v00001002d00005954sv00001002sd00005954* + ID_MODEL_FROM_DATABASE=RV370 [Radeon Xpress 200G Series] + +pci:v00001002d00005955* + ID_MODEL_FROM_DATABASE=RS480M [Mobility Radeon Xpress 200] + +pci:v00001002d00005955sv00001002sd00005955* + ID_MODEL_FROM_DATABASE=RS480 0x5955 [Radeon XPRESS 200M 5955 (PCIE)] + +pci:v00001002d00005955sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v00001002d00005955sv00001462sd00000131* + ID_MODEL_FROM_DATABASE=MS-1013 Notebook + +pci:v00001002d00005956* + ID_MODEL_FROM_DATABASE=RD790 Northbridge only dual slot PCI-e_GFX and HT3 K8 part + +pci:v00001002d00005957* + ID_MODEL_FROM_DATABASE=RX780/RX790 Chipset Host Bridge + +pci:v00001002d00005957sv00001849sd00005957* + ID_MODEL_FROM_DATABASE=A770CrossFire Motherboard + +pci:v00001002d00005958* + ID_MODEL_FROM_DATABASE=RD780 Northbridge only dual slot PCI-e_GFX and HT1 K8 part + +pci:v00001002d00005960* + ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 PRO] + +pci:v00001002d00005960sv000017AFsd00002020* + ID_MODEL_FROM_DATABASE=Excalibur Radeon 9250 + +pci:v00001002d00005961* + ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] + +pci:v00001002d00005961sv00001002sd00002F72* + ID_MODEL_FROM_DATABASE=All-in-Wonder 9200 Series + +pci:v00001002d00005961sv00001019sd00004C30* + ID_MODEL_FROM_DATABASE=Radeon 9200 VIVO + +pci:v00001002d00005961sv000012ABsd00005961* + ID_MODEL_FROM_DATABASE=YUAN SMARTVGA Radeon 9200 + +pci:v00001002d00005961sv00001458sd00004018* + ID_MODEL_FROM_DATABASE=Gigabyte Radeon 9200 + +pci:v00001002d00005961sv0000174Bsd00007C13* + ID_MODEL_FROM_DATABASE=Sapphire Radeon 9200 + +pci:v00001002d00005961sv000017AFsd0000200C* + ID_MODEL_FROM_DATABASE=Excalibur Radeon 9200 + +pci:v00001002d00005961sv000018BCsd00000050* + ID_MODEL_FROM_DATABASE=Radeon 9200 Game Buster + +pci:v00001002d00005961sv000018BCsd00000051* + ID_MODEL_FROM_DATABASE=GeXcube GC-R9200-C3 + +pci:v00001002d00005961sv000018BCsd00000053* + ID_MODEL_FROM_DATABASE=Radeon 9200 Game Buster VIVO + +pci:v00001002d00005962* + ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200] + +pci:v00001002d00005964* + ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] + +pci:v00001002d00005964sv00001002sd00005964* + ID_MODEL_FROM_DATABASE=Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz + +pci:v00001002d00005964sv00001043sd0000C006* + ID_MODEL_FROM_DATABASE=ASUS Radeon 9200 SE / TD / 128M + +pci:v00001002d00005964sv00001458sd00004018* + ID_MODEL_FROM_DATABASE=Radeon 9200 SE + +pci:v00001002d00005964sv00001458sd00004032* + ID_MODEL_FROM_DATABASE=Radeon 9200 SE 128MB + +pci:v00001002d00005964sv0000147Bsd00006191* + ID_MODEL_FROM_DATABASE=R9200SE-DT + +pci:v00001002d00005964sv0000148Csd00002073* + ID_MODEL_FROM_DATABASE=CN-AG92E + +pci:v00001002d00005964sv0000174Bsd00007C13* + ID_MODEL_FROM_DATABASE=Sapphire Radeon 9200 SE + +pci:v00001002d00005964sv00001787sd00005964* + ID_MODEL_FROM_DATABASE=Excalibur 9200SE VIVO 128M + +pci:v00001002d00005964sv000017AFsd00002012* + ID_MODEL_FROM_DATABASE=Radeon 9200 SE Excalibur + +pci:v00001002d00005964sv000018BCsd00000170* + ID_MODEL_FROM_DATABASE=Sapphire Radeon 9200 SE 128MB Game Buster + +pci:v00001002d00005964sv000018BCsd00000173* + ID_MODEL_FROM_DATABASE=GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] + +pci:v00001002d00005965* + ID_MODEL_FROM_DATABASE=RV280 [FireMV 2200 PCI] + +pci:v00001002d00005974* + ID_MODEL_FROM_DATABASE=RS482 [Radeon Xpress 200/1150] + +pci:v00001002d00005974sv0000103Csd0000280A* + ID_MODEL_FROM_DATABASE=DC5750 Microtower + +pci:v00001002d00005974sv00001462sd00007141* + ID_MODEL_FROM_DATABASE=Aspire L250 + +pci:v00001002d00005975* + ID_MODEL_FROM_DATABASE=RS482M [Mobility Radeon Xpress 200] + +pci:v00001002d00005978* + ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (external gfx0 port A) + +pci:v00001002d00005978sv00001849sd00005957* + ID_MODEL_FROM_DATABASE=A770CrossFire Motherboard + +pci:v00001002d00005979* + ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (external gfx0 port B) + +pci:v00001002d0000597A* + ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port A) + +pci:v00001002d0000597B* + ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port B) + +pci:v00001002d0000597C* + ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port C) + +pci:v00001002d0000597D* + ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port D) + +pci:v00001002d0000597E* + ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port E) + +pci:v00001002d0000597Esv00001849sd00005957* + ID_MODEL_FROM_DATABASE=A770CrossFire Motherboard + +pci:v00001002d0000597F* + ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port F) + +pci:v00001002d0000597Fsv00001849sd00005957* + ID_MODEL_FROM_DATABASE=A770CrossFire Motherboard + +pci:v00001002d00005980* + ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (external gfx1 port A) + +pci:v00001002d00005981* + ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (external gfx1 port B) + +pci:v00001002d00005982* + ID_MODEL_FROM_DATABASE=RD790 PCI to PCI bridge (NB-SB link) + +pci:v00001002d00005A10* + ID_MODEL_FROM_DATABASE=RD890 Northbridge only dual slot (2x16) PCI-e GFX Hydra part + +pci:v00001002d00005A11* + ID_MODEL_FROM_DATABASE=RD890 Northbridge only single slot PCI-e GFX Hydra part + +pci:v00001002d00005A12* + ID_MODEL_FROM_DATABASE=RD890 Northbridge only dual slot (2x8) PCI-e GFX Hydra part + +pci:v00001002d00005A12sv000015D9sd0000A811* + ID_MODEL_FROM_DATABASE=H8DGU + +pci:v00001002d00005A13* + ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (external gfx0 port A) + +pci:v00001002d00005A14* + ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (external gfx0 port B) + +pci:v00001002d00005A15* + ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port A) + +pci:v00001002d00005A16* + ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port B) + +pci:v00001002d00005A17* + ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port C) + +pci:v00001002d00005A18* + ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port D) + +pci:v00001002d00005A18sv000015D9sd0000A811* + ID_MODEL_FROM_DATABASE=H8DGU + +pci:v00001002d00005A19* + ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port E) + +pci:v00001002d00005A1A* + ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port F) + +pci:v00001002d00005A1B* + ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port G) + +pci:v00001002d00005A1C* + ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port H) + +pci:v00001002d00005A1D* + ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (external gfx1 port A) + +pci:v00001002d00005A1E* + ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (external gfx1 port B) + +pci:v00001002d00005A1F* + ID_MODEL_FROM_DATABASE=RD890 PCI to PCI bridge (NB-SB link) + +pci:v00001002d00005A1Fsv000015D9sd0000A811* + ID_MODEL_FROM_DATABASE=H8DGU + +pci:v00001002d00005A20* + ID_MODEL_FROM_DATABASE=RD890S PCI Express bridge for GPP2 port 1 + +pci:v00001002d00005A23* + ID_MODEL_FROM_DATABASE=RD990 I/O Memory Management Unit (IOMMU) + +pci:v00001002d00005A33* + ID_MODEL_FROM_DATABASE=Radeon Xpress 200 Host Bridge + +pci:v00001002d00005A34* + ID_MODEL_FROM_DATABASE=RS480 PCI-X Root Port + +pci:v00001002d00005A36* + ID_MODEL_FROM_DATABASE=RS480 PCI Bridge + +pci:v00001002d00005A37* + ID_MODEL_FROM_DATABASE=RS480 PCI Bridge + +pci:v00001002d00005A38* + ID_MODEL_FROM_DATABASE=RS480 PCI Bridge + +pci:v00001002d00005A39* + ID_MODEL_FROM_DATABASE=RS480 PCI Bridge + +pci:v00001002d00005A3F* + ID_MODEL_FROM_DATABASE=RS480 PCI Bridge + +pci:v00001002d00005A3Fsv00001462sd00007217* + ID_MODEL_FROM_DATABASE=Aspire L250 + +pci:v00001002d00005A41* + ID_MODEL_FROM_DATABASE=RS400 [Radeon Xpress 200] + +pci:v00001002d00005A42* + ID_MODEL_FROM_DATABASE=RS400M [Radeon Xpress 200M] + +pci:v00001002d00005A61* + ID_MODEL_FROM_DATABASE=RC410 [Radeon Xpress 200/1100] + +pci:v00001002d00005A62* + ID_MODEL_FROM_DATABASE=RC410M [Mobility Radeon Xpress 200M] + +pci:v00001002d00005B60* + ID_MODEL_FROM_DATABASE=RV370 [Radeon X300] + +pci:v00001002d00005B60sv00001043sd0000002A* + ID_MODEL_FROM_DATABASE=Extreme AX300SE-X + +pci:v00001002d00005B60sv00001043sd0000032E* + ID_MODEL_FROM_DATABASE=Extreme AX300/TD + +pci:v00001002d00005B60sv00001458sd00002102* + ID_MODEL_FROM_DATABASE=GV-RX30S128D (X300SE) + +pci:v00001002d00005B60sv00001462sd00000400* + ID_MODEL_FROM_DATABASE=RX300SE-TD128E (MS-8940 REV:200) + +pci:v00001002d00005B60sv00001462sd00000402* + ID_MODEL_FROM_DATABASE=RX300SE-TD128E (MS-8940) + +pci:v00001002d00005B60sv0000174Bsd00000500* + ID_MODEL_FROM_DATABASE=Radeon X300 (PCIE) + +pci:v00001002d00005B60sv0000196Dsd00001086* + ID_MODEL_FROM_DATABASE=X300SE HM + +pci:v00001002d00005B62* + ID_MODEL_FROM_DATABASE=RV370 [Radeon X600/X600 SE] + +pci:v00001002d00005B63* + ID_MODEL_FROM_DATABASE=RV370 [Radeon X300/X550/X1050 Series] + +pci:v00001002d00005B64* + ID_MODEL_FROM_DATABASE=RV370 [FireGL V3100] + +pci:v00001002d00005B65* + ID_MODEL_FROM_DATABASE=RV370 [FireMV 2200] + +pci:v00001002d00005B66* + ID_MODEL_FROM_DATABASE=RV370X + +pci:v00001002d00005B70* + ID_MODEL_FROM_DATABASE=RV370 [Radeon X300 SE] + +pci:v00001002d00005B70sv00001462sd00000403* + ID_MODEL_FROM_DATABASE=RX300SE-TD128E (MS-8940) (secondary display) + +pci:v00001002d00005B70sv0000174Bsd00000501* + ID_MODEL_FROM_DATABASE=Radeon X300SE + +pci:v00001002d00005B70sv0000196Dsd00001087* + ID_MODEL_FROM_DATABASE=X300SE HM + +pci:v00001002d00005B72* + ID_MODEL_FROM_DATABASE=RV380 [Radeon X300/X550/X1050 Series] (Secondary) + +pci:v00001002d00005B73* + ID_MODEL_FROM_DATABASE=RV370 [Radeon X300/X550/X1050 Series] (Secondary) + +pci:v00001002d00005B74* + ID_MODEL_FROM_DATABASE=RV370 [FireGL V3100] (Secondary) + +pci:v00001002d00005B75* + ID_MODEL_FROM_DATABASE=RV370 [FireMV 2200] (Secondary) + +pci:v00001002d00005C61* + ID_MODEL_FROM_DATABASE=RV280/M9+ [Mobility Radeon 9200 AGP] + +pci:v00001002d00005C63* + ID_MODEL_FROM_DATABASE=RV280/M9+ [Mobility Radeon 9200 AGP] + +pci:v00001002d00005C63sv00001002sd00005C63* + ID_MODEL_FROM_DATABASE=Apple iBook G4 2004 + +pci:v00001002d00005C63sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30 notebook + +pci:v00001002d00005D44* + ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary) + +pci:v00001002d00005D44sv00001458sd00004019* + ID_MODEL_FROM_DATABASE=Radeon 9200 SE (Secondary) + +pci:v00001002d00005D44sv00001458sd00004032* + ID_MODEL_FROM_DATABASE=Radeon 9200 SE 128MB + +pci:v00001002d00005D44sv0000147Bsd00006190* + ID_MODEL_FROM_DATABASE=R9200SE-DT (Secondary) + +pci:v00001002d00005D44sv0000174Bsd00007C12* + ID_MODEL_FROM_DATABASE=Sapphire Radeon 9200 SE (Secondary) + +pci:v00001002d00005D44sv00001787sd00005965* + ID_MODEL_FROM_DATABASE=Excalibur 9200SE VIVO 128M (Secondary) + +pci:v00001002d00005D44sv000017AFsd00002013* + ID_MODEL_FROM_DATABASE=Radeon 9200 SE Excalibur (Secondary) + +pci:v00001002d00005D44sv000018BCsd00000171* + ID_MODEL_FROM_DATABASE=Radeon 9200 SE 128MB Game Buster (Secondary) + +pci:v00001002d00005D44sv000018BCsd00000172* + ID_MODEL_FROM_DATABASE=GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] + +pci:v00001002d00005D45* + ID_MODEL_FROM_DATABASE=RV280 [FireMV 2200 PCI] (Secondary) + +pci:v00001002d00005D48* + ID_MODEL_FROM_DATABASE=R423/M28 [Mobility Radeon X800 XT] + +pci:v00001002d00005D49* + ID_MODEL_FROM_DATABASE=R423/M28 [Mobility FireGL V5100] + +pci:v00001002d00005D4A* + ID_MODEL_FROM_DATABASE=R423/M28 [Mobility Radeon X800] + +pci:v00001002d00005D4D* + ID_MODEL_FROM_DATABASE=R480 [Radeon X850 XT Platinum Edition] + +pci:v00001002d00005D4E* + ID_MODEL_FROM_DATABASE=R480 [Radeon X850 SE] + +pci:v00001002d00005D4F* + ID_MODEL_FROM_DATABASE=R480 [Radeon X800 GTO] + +pci:v00001002d00005D50* + ID_MODEL_FROM_DATABASE=R480 [FireGL V7200] + +pci:v00001002d00005D52* + ID_MODEL_FROM_DATABASE=R480 [Radeon X850 XT] + +pci:v00001002d00005D52sv00001002sd00000B12* + ID_MODEL_FROM_DATABASE=PowerColor X850XT PCIe (Primary) + +pci:v00001002d00005D52sv00001002sd00000B13* + ID_MODEL_FROM_DATABASE=PowerColor X850XT PCIe (Secondary) + +pci:v00001002d00005D57* + ID_MODEL_FROM_DATABASE=R423 [Radeon X800 XT] + +pci:v00001002d00005D6D* + ID_MODEL_FROM_DATABASE=R480 [Radeon X850 XT Platinum Edition] (Secondary) + +pci:v00001002d00005D6F* + ID_MODEL_FROM_DATABASE=R480 [Radeon X800 GTO] (Secondary) + +pci:v00001002d00005D72* + ID_MODEL_FROM_DATABASE=R480 [Radeon X850 XT] (Secondary) + +pci:v00001002d00005D77* + ID_MODEL_FROM_DATABASE=R423 [Radeon X800 XT] (Secondary) + +pci:v00001002d00005E48* + ID_MODEL_FROM_DATABASE=RV410 [FireGL V5000] + +pci:v00001002d00005E49* + ID_MODEL_FROM_DATABASE=RV410 [Radeon X700 Series] + +pci:v00001002d00005E4A* + ID_MODEL_FROM_DATABASE=RV410 [Radeon X700 XT] + +pci:v00001002d00005E4B* + ID_MODEL_FROM_DATABASE=RV410 [Radeon X700 PRO] + +pci:v00001002d00005E4C* + ID_MODEL_FROM_DATABASE=RV410 [Radeon X700 SE] + +pci:v00001002d00005E4D* + ID_MODEL_FROM_DATABASE=RV410 [Radeon X700] + +pci:v00001002d00005E4Dsv0000148Csd00002116* + ID_MODEL_FROM_DATABASE=PowerColor Bravo X700 + +pci:v00001002d00005E4F* + ID_MODEL_FROM_DATABASE=RV410 [Radeon X700] + +pci:v00001002d00005E4Fsv00001569sd00001E4F* + ID_MODEL_FROM_DATABASE=Radeon X550 XT + +pci:v00001002d00005E6B* + ID_MODEL_FROM_DATABASE=RV410 [Radeon X700 PRO] (Secondary) + +pci:v00001002d00005E6D* + ID_MODEL_FROM_DATABASE=RV410 [Radeon X700] (Secondary) + +pci:v00001002d00005E6Dsv0000148Csd00002117* + ID_MODEL_FROM_DATABASE=PowerColor Bravo X700 + +pci:v00001002d00005F57* + ID_MODEL_FROM_DATABASE=R423 [Radeon X800 XT] + +pci:v00001002d00006600* + ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8670A/8750M] + +pci:v00001002d00006601* + ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8500/8700M Series] + +pci:v00001002d00006602* + ID_MODEL_FROM_DATABASE=Mars + +pci:v00001002d00006603* + ID_MODEL_FROM_DATABASE=Mars + +pci:v00001002d00006606* + ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8790M] + +pci:v00001002d00006607* + ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8530M] + +pci:v00001002d00006610* + ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8600 Series] + +pci:v00001002d00006611* + ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8500 Series] + +pci:v00001002d00006613* + ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8500 Series] + +pci:v00001002d00006620* + ID_MODEL_FROM_DATABASE=Mars + +pci:v00001002d00006621* + ID_MODEL_FROM_DATABASE=Mars + +pci:v00001002d00006623* + ID_MODEL_FROM_DATABASE=Mars + +pci:v00001002d00006631* + ID_MODEL_FROM_DATABASE=Oland + +pci:v00001002d0000665C* + ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790] + +pci:v00001002d00006660* + ID_MODEL_FROM_DATABASE=Sun [Radeon HD 8600M Series] + +pci:v00001002d00006700* + ID_MODEL_FROM_DATABASE=Cayman GL XT [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006701* + ID_MODEL_FROM_DATABASE=Cayman GL XT [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006702* + ID_MODEL_FROM_DATABASE=Cayman GL XT [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006703* + ID_MODEL_FROM_DATABASE=Cayman GL XT [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006704* + ID_MODEL_FROM_DATABASE=Cayman PRO GL [FirePro V7900] + +pci:v00001002d00006705* + ID_MODEL_FROM_DATABASE=Cayman GL PRO [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006706* + ID_MODEL_FROM_DATABASE=Cayman GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006707* + ID_MODEL_FROM_DATABASE=Cayman LE GL [FirePro V5900] + +pci:v00001002d00006708* + ID_MODEL_FROM_DATABASE=Cayman GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006709* + ID_MODEL_FROM_DATABASE=Cayman GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006718* + ID_MODEL_FROM_DATABASE=Cayman XT [Radeon HD 6970] + +pci:v00001002d00006719* + ID_MODEL_FROM_DATABASE=Cayman PRO [Radeon HD 6950] + +pci:v00001002d0000671C* + ID_MODEL_FROM_DATABASE=Antilles [Radeon HD 6990] + +pci:v00001002d0000671D* + ID_MODEL_FROM_DATABASE=Antilles [Radeon HD 6990] + +pci:v00001002d0000671F* + ID_MODEL_FROM_DATABASE=Cayman CE [Radeon HD 6930] + +pci:v00001002d00006720* + ID_MODEL_FROM_DATABASE=Blackcomb [Radeon HD 6970M/6990M] + +pci:v00001002d00006720sv00001028sd0000048F* + ID_MODEL_FROM_DATABASE=Radeon HD 6990M + +pci:v00001002d00006720sv00001028sd00000490* + ID_MODEL_FROM_DATABASE=Alienware M17x R3 Radeon HD 6970M + +pci:v00001002d00006720sv00001028sd000004A4* + ID_MODEL_FROM_DATABASE=FirePro M8900 + +pci:v00001002d00006720sv00001028sd0000053F* + ID_MODEL_FROM_DATABASE=FirePro M8900 + +pci:v00001002d00006720sv0000106Bsd00000B00* + ID_MODEL_FROM_DATABASE=Radeon HD 6970M + +pci:v00001002d00006720sv00001558sd00005102* + ID_MODEL_FROM_DATABASE=Radeon HD 6970M + +pci:v00001002d00006720sv00001558sd00005104* + ID_MODEL_FROM_DATABASE=Radeon HD 6990M + +pci:v00001002d00006720sv00001558sd00007201* + ID_MODEL_FROM_DATABASE=Radeon HD 6990M + +pci:v00001002d00006720sv0000174Bsd0000E188* + ID_MODEL_FROM_DATABASE=Radeon HD 6970M + +pci:v00001002d00006721* + ID_MODEL_FROM_DATABASE=Blackcomb [Radeon HD 6900M Series] + +pci:v00001002d00006722* + ID_MODEL_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006723* + ID_MODEL_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006724* + ID_MODEL_FROM_DATABASE=Blackcomb [Mobility Radeon HD 6000 series] + +pci:v00001002d00006725* + ID_MODEL_FROM_DATABASE=Blackcomb [Radeon HD 6900M Series] + +pci:v00001002d00006726* + ID_MODEL_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006727* + ID_MODEL_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006728* + ID_MODEL_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006729* + ID_MODEL_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006738* + ID_MODEL_FROM_DATABASE=Barts XT [Radeon HD 6870] + +pci:v00001002d00006738sv00001682sd00003103* + ID_MODEL_FROM_DATABASE=Radeon HD 8670 + +pci:v00001002d00006738sv00001787sd0000201A* + ID_MODEL_FROM_DATABASE=Barts XT [Radeon HD 6870 X2] + +pci:v00001002d00006738sv00001787sd0000201B* + ID_MODEL_FROM_DATABASE=Barts XT [Radeon HD 6870 X2] + +pci:v00001002d00006739* + ID_MODEL_FROM_DATABASE=Barts PRO [Radeon HD 6850] + +pci:v00001002d00006739sv00001043sd000003B4* + ID_MODEL_FROM_DATABASE=EAH6850 [Radeon HD 6850] + +pci:v00001002d0000673E* + ID_MODEL_FROM_DATABASE=Barts LE [Radeon HD 6790] + +pci:v00001002d0000673Esv0000148Csd00007720* + ID_MODEL_FROM_DATABASE=Radeon HD 7720 OEM + +pci:v00001002d00006740* + ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] + +pci:v00001002d00006740sv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00001002d00006741* + ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6600M/6700M/7600M Series] + +pci:v00001002d00006741sv0000106Bsd000000E2* + ID_MODEL_FROM_DATABASE=MacBookPro8,2 [Core i7, 15", Late 2011] + +pci:v00001002d00006742* + ID_MODEL_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] + +pci:v00001002d00006742sv00001043sd00001D82* + ID_MODEL_FROM_DATABASE=K53SK Laptop Radeon HD 7610M + +pci:v00001002d00006742sv00008086sd00002111* + ID_MODEL_FROM_DATABASE=Radeon HD 6625M + +pci:v00001002d00006743* + ID_MODEL_FROM_DATABASE=Whistler [Radeon E6760] + +pci:v00001002d00006744* + ID_MODEL_FROM_DATABASE=Whistler [Radeon HD 6000M Series] + +pci:v00001002d00006745* + ID_MODEL_FROM_DATABASE=Whistler + +pci:v00001002d00006746* + ID_MODEL_FROM_DATABASE=Turks GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006747* + ID_MODEL_FROM_DATABASE=Turks GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006748* + ID_MODEL_FROM_DATABASE=Turks GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006749* + ID_MODEL_FROM_DATABASE=Turks GL [FirePro V4900] + +pci:v00001002d0000674A* + ID_MODEL_FROM_DATABASE=Turks GL [FirePro V3900] + +pci:v00001002d00006750* + ID_MODEL_FROM_DATABASE=Onega [Radeon HD 6650A / 7650A] + +pci:v00001002d00006751* + ID_MODEL_FROM_DATABASE=Turks XT [Radeon HD 7670A] + +pci:v00001002d00006758* + ID_MODEL_FROM_DATABASE=Turks XT [Radeon HD 6670] + +pci:v00001002d00006759* + ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 6570] + +pci:v00001002d00006759sv0000148Csd00007570* + ID_MODEL_FROM_DATABASE=Radeon HD 7570 + +pci:v00001002d00006759sv0000174Bsd00007570* + ID_MODEL_FROM_DATABASE=Radeon HD 7570 + +pci:v00001002d0000675D* + ID_MODEL_FROM_DATABASE=Turks PRO [Radeon HD 7570] + +pci:v00001002d0000675F* + ID_MODEL_FROM_DATABASE=Turks LE [Radeon HD 5570/6510/7510] + +pci:v00001002d0000675Fsv0000148Csd00006510* + ID_MODEL_FROM_DATABASE=Radeon HD 6510 + +pci:v00001002d0000675Fsv0000174Bsd00006510* + ID_MODEL_FROM_DATABASE=Radeon HD 6510 + +pci:v00001002d0000675Fsv0000174Bsd00007510* + ID_MODEL_FROM_DATABASE=Radeon HD 7510 + +pci:v00001002d0000675Fsv00001787sd00002012* + ID_MODEL_FROM_DATABASE=Radeon HD 5570 2GB GDDR3 + +pci:v00001002d0000675Fsv00001787sd00002314* + ID_MODEL_FROM_DATABASE=Radeon HD 5570 1GB DDR2/GDDR3 + +pci:v00001002d00006760* + ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] + +pci:v00001002d00006760sv00001028sd000004CC* + ID_MODEL_FROM_DATABASE=Vostro 3350 + +pci:v00001002d00006760sv00001043sd000084A0* + ID_MODEL_FROM_DATABASE=Seymour XT [Radeon HD 6470M] + +pci:v00001002d00006761* + ID_MODEL_FROM_DATABASE=Seymour LP [Radeon HD 6430M] + +pci:v00001002d00006762* + ID_MODEL_FROM_DATABASE=Caicos GL [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006763* + ID_MODEL_FROM_DATABASE=Seymour [Radeon E6460] + +pci:v00001002d00006764* + ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M Series] + +pci:v00001002d00006765* + ID_MODEL_FROM_DATABASE=Seymour [Radeon HD 6400M Series] + +pci:v00001002d00006766* + ID_MODEL_FROM_DATABASE=Caicos + +pci:v00001002d00006767* + ID_MODEL_FROM_DATABASE=Caicos + +pci:v00001002d00006768* + ID_MODEL_FROM_DATABASE=Caicos + +pci:v00001002d00006770* + ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450A/7450A] + +pci:v00001002d00006771* + ID_MODEL_FROM_DATABASE=Caicos XTX [Radeon HD 8490] + +pci:v00001002d00006772* + ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 7450A] + +pci:v00001002d00006778* + ID_MODEL_FROM_DATABASE=Caicos XT [Radeon HD 7470] + +pci:v00001002d00006778sv00001462sd0000B493* + ID_MODEL_FROM_DATABASE=Radeon HD 8470 OEM + +pci:v00001002d00006779* + ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6450] + +pci:v00001002d00006779sv0000148Csd00008450* + ID_MODEL_FROM_DATABASE=Radeon HD 8450 OEM + +pci:v00001002d00006779sv0000174Bsd00007450* + ID_MODEL_FROM_DATABASE=Radeon HD 7450 + +pci:v00001002d00006779sv0000174Bsd0000E164* + ID_MODEL_FROM_DATABASE=Sapphire HD 6450 1GB DDR3 + +pci:v00001002d00006779sv000017AFsd00008450* + ID_MODEL_FROM_DATABASE=Radeon HD 8450 OEM + +pci:v00001002d0000677B* + ID_MODEL_FROM_DATABASE=Caicos PRO [Radeon HD 7450] + +pci:v00001002d00006780* + ID_MODEL_FROM_DATABASE=Tahiti XT [FirePro W9000] + +pci:v00001002d00006784* + ID_MODEL_FROM_DATABASE=Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d00006788* + ID_MODEL_FROM_DATABASE=Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] + +pci:v00001002d0000678A* + ID_MODEL_FROM_DATABASE=Tahiti PRO [FirePro Series] + +pci:v00001002d0000678Asv00001002sd0000030C* + ID_MODEL_FROM_DATABASE=FirePro W8000 + +pci:v00001002d0000678Asv00001002sd00000310* + ID_MODEL_FROM_DATABASE=FirePro S9000 + +pci:v00001002d0000678Asv00001002sd00000B2A* + ID_MODEL_FROM_DATABASE=FirePro S10000 + +pci:v00001002d0000678Asv00001028sd0000030C* + ID_MODEL_FROM_DATABASE=FirePro W8000 + +pci:v00001002d00006790* + ID_MODEL_FROM_DATABASE=Tahiti + +pci:v00001002d00006791* + ID_MODEL_FROM_DATABASE=Tahiti + +pci:v00001002d00006792* + ID_MODEL_FROM_DATABASE=Tahiti + +pci:v00001002d00006798* + ID_MODEL_FROM_DATABASE=Tahiti XT [Radeon HD 7970] + +pci:v00001002d00006798sv00001002sd00003000* + ID_MODEL_FROM_DATABASE=Tahiti XT2 [Radeon HD 7970 GHz Edition] + +pci:v00001002d00006798sv00001043sd0000041C* + ID_MODEL_FROM_DATABASE=HD 7970 DirectCU II + +pci:v00001002d00006798sv00001043sd00000420* + ID_MODEL_FROM_DATABASE=HD 7970 DirectCU II TOP + +pci:v00001002d00006798sv00001043sd00000444* + ID_MODEL_FROM_DATABASE=HD 7970 DirectCU II TOP + +pci:v00001002d00006798sv00001043sd00009999* + ID_MODEL_FROM_DATABASE=ARES II + +pci:v00001002d00006798sv00001682sd00003211* + ID_MODEL_FROM_DATABASE=Double D HD 7970 Black Edition + +pci:v00001002d00006798sv00001682sd00003213* + ID_MODEL_FROM_DATABASE=HD 7970 Black Edition + +pci:v00001002d00006798sv00001787sd0000201C* + ID_MODEL_FROM_DATABASE=HD 7970 IceQ X² + +pci:v00001002d00006798sv00001787sd00002317* + ID_MODEL_FROM_DATABASE=Radeon HD 7990 + +pci:v00001002d00006799* + ID_MODEL_FROM_DATABASE=New Zealand [Radeon HD 7900 Series] + +pci:v00001002d0000679A* + ID_MODEL_FROM_DATABASE=Tahiti PRO [Radeon HD 7950] + +pci:v00001002d0000679Asv00001002sd00000B01* + ID_MODEL_FROM_DATABASE=Radeon HD 8950 OEM + +pci:v00001002d0000679Asv00001002sd00003000* + ID_MODEL_FROM_DATABASE=Radeon HD 7950 Boost Edition + +pci:v00001002d0000679Asv00001462sd00003000* + ID_MODEL_FROM_DATABASE=Radeon HD 8950 OEM + +pci:v00001002d0000679B* + ID_MODEL_FROM_DATABASE=New Zealand [Radeon HD 7900 Series] + +pci:v00001002d0000679E* + ID_MODEL_FROM_DATABASE=Tahiti LE [Radeon HD 7870 XT] + +pci:v00001002d0000679F* + ID_MODEL_FROM_DATABASE=Tahiti + +pci:v00001002d00006800* + ID_MODEL_FROM_DATABASE=Wimbledon XT [Radeon HD 7970M] + +pci:v00001002d00006800sv00001002sd00000124* + ID_MODEL_FROM_DATABASE=Radeon HD 7970M + +pci:v00001002d00006800sv00008086sd00002110* + ID_MODEL_FROM_DATABASE=Radeon HD 7970M + +pci:v00001002d00006800sv00008086sd00002111* + ID_MODEL_FROM_DATABASE=Radeon HD 7970M + +pci:v00001002d00006801* + ID_MODEL_FROM_DATABASE=Pitcairn XT [Radeon HD 8970M] + +pci:v00001002d00006801sv00001002sd00000124* + ID_MODEL_FROM_DATABASE=Radeon HD 8970M + +pci:v00001002d00006801sv00008086sd00002110* + ID_MODEL_FROM_DATABASE=Radeon HD 8970M + +pci:v00001002d00006801sv00008086sd00002111* + ID_MODEL_FROM_DATABASE=Radeon HD 8970M + +pci:v00001002d00006802* + ID_MODEL_FROM_DATABASE=Wimbledon + +pci:v00001002d00006806* + ID_MODEL_FROM_DATABASE=Pitcairn + +pci:v00001002d00006808* + ID_MODEL_FROM_DATABASE=Pitcairn XT [FirePro W7000] + +pci:v00001002d00006808sv00001002sd00000310* + ID_MODEL_FROM_DATABASE=FirePro S7000 + +pci:v00001002d00006809* + ID_MODEL_FROM_DATABASE=Pitcairn LE [FirePro W5000] + +pci:v00001002d00006810* + ID_MODEL_FROM_DATABASE=Pitcairn + +pci:v00001002d00006811* + ID_MODEL_FROM_DATABASE=Pitcairn + +pci:v00001002d00006816* + ID_MODEL_FROM_DATABASE=Pitcairn + +pci:v00001002d00006817* + ID_MODEL_FROM_DATABASE=Pitcairn + +pci:v00001002d00006818* + ID_MODEL_FROM_DATABASE=Pitcairn XT [Radeon HD 7870 GHz Edition] + +pci:v00001002d00006818sv00001002sd00000B05* + ID_MODEL_FROM_DATABASE=Pitcairn XT [Radeon HD 8870 OEM] + +pci:v00001002d00006819* + ID_MODEL_FROM_DATABASE=Pitcairn PRO [Radeon HD 7850] + +pci:v00001002d00006819sv0000174Bsd0000E221* + ID_MODEL_FROM_DATABASE=Sapphire HD 7850 2G GDDR5 PCI-E DVI-I/DVI-D/HDMI/DP + +pci:v00001002d00006820* + ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8800M Series] + +pci:v00001002d00006821* + ID_MODEL_FROM_DATABASE=Venus XT [Radeon HD 8800M Series] + +pci:v00001002d00006823* + ID_MODEL_FROM_DATABASE=Venus PRO [Radeon HD 8800M Series] + +pci:v00001002d00006824* + ID_MODEL_FROM_DATABASE=Chelsea [Radeon HD 7700M Series] + +pci:v00001002d00006825* + ID_MODEL_FROM_DATABASE=Heathrow XT [Radeon HD 7870M] + +pci:v00001002d00006826* + ID_MODEL_FROM_DATABASE=Chelsea [Radeon HD 7700M Series] + +pci:v00001002d00006827* + ID_MODEL_FROM_DATABASE=Heathrow PRO [Radeon HD 7850M/8850M] + +pci:v00001002d00006828* + ID_MODEL_FROM_DATABASE=Cape Verde PRO [FirePro W600] + +pci:v00001002d00006829* + ID_MODEL_FROM_DATABASE=Cape Verde + +pci:v00001002d0000682B* + ID_MODEL_FROM_DATABASE=Venus LE [Radeon HD 8800M Series] + +pci:v00001002d0000682D* + ID_MODEL_FROM_DATABASE=Chelsea [AMD Radeon HD 7700M Series] + +pci:v00001002d0000682F* + ID_MODEL_FROM_DATABASE=Chelsea LP [Radeon HD 7730M] + +pci:v00001002d00006830* + ID_MODEL_FROM_DATABASE=Cape Verde [Radeon HD 7800M Series] + +pci:v00001002d00006831* + ID_MODEL_FROM_DATABASE=Cape Verde [AMD Radeon HD 7700M Series] + +pci:v00001002d00006837* + ID_MODEL_FROM_DATABASE=Cape Verde LE [Radeon HD 7700 Series] + +pci:v00001002d00006838* + ID_MODEL_FROM_DATABASE=Cape Verde + +pci:v00001002d00006839* + ID_MODEL_FROM_DATABASE=Cape Verde + +pci:v00001002d0000683B* + ID_MODEL_FROM_DATABASE=Cape Verde [Radeon HD 7700 Series] + +pci:v00001002d0000683D* + ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 7770 GHz Edition] + +pci:v00001002d0000683Dsv00001002sd00000030* + ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 8760 OEM] + +pci:v00001002d0000683Dsv00001019sd00000030* + ID_MODEL_FROM_DATABASE=Radeon HD 8760 OEM + +pci:v00001002d0000683Dsv0000103Csd00006890* + ID_MODEL_FROM_DATABASE=Radeon HD 8760 OEM + +pci:v00001002d0000683F* + ID_MODEL_FROM_DATABASE=Cape Verde PRO [Radeon HD 7750] + +pci:v00001002d00006840* + ID_MODEL_FROM_DATABASE=Thames XT [Radeon HD 7670M] + +pci:v00001002d00006841* + ID_MODEL_FROM_DATABASE=Thames [Radeon 7550M/7570M/7650M] + +pci:v00001002d00006842* + ID_MODEL_FROM_DATABASE=Thames LE [Radeon HD 7000M Series] + +pci:v00001002d00006843* + ID_MODEL_FROM_DATABASE=Thames [Radeon HD 7670M] + +pci:v00001002d00006849* + ID_MODEL_FROM_DATABASE=Lombok [AMD Radeon HD 7400 Series] + +pci:v00001002d0000684C* + ID_MODEL_FROM_DATABASE=Pitcairn [ATI FirePro V(FireGL V) Graphics Adapter] + +pci:v00001002d00006858* + ID_MODEL_FROM_DATABASE=Lombok [Radeon HD 7400 series] + +pci:v00001002d00006880* + ID_MODEL_FROM_DATABASE=Cypress + +pci:v00001002d00006888* + ID_MODEL_FROM_DATABASE=Cypress XT [FirePro V8800] + +pci:v00001002d00006889* + ID_MODEL_FROM_DATABASE=Cypress PRO [FirePro V7800] + +pci:v00001002d00006889sv00001002sd00000301* + ID_MODEL_FROM_DATABASE=FirePro V7800P + +pci:v00001002d0000688A* + ID_MODEL_FROM_DATABASE=Cypress XT [FirePro V9800] + +pci:v00001002d0000688Asv00001002sd0000030C* + ID_MODEL_FROM_DATABASE=FirePro V9800P + +pci:v00001002d0000688C* + ID_MODEL_FROM_DATABASE=Cypress XT GL [FireStream 9370] + +pci:v00001002d0000688D* + ID_MODEL_FROM_DATABASE=Cypress PRO GL [FireStream 9350] + +pci:v00001002d00006898* + ID_MODEL_FROM_DATABASE=Cypress XT [Radeon HD 5870] + +pci:v00001002d00006898sv00001002sd00000B00* + ID_MODEL_FROM_DATABASE=Radeon HD 5870 Eyefinity⁶ Edition + +pci:v00001002d00006898sv0000106Bsd000000D0* + ID_MODEL_FROM_DATABASE=Radeon HD 5870 Mac Edition + +pci:v00001002d00006898sv00001462sd00008032* + ID_MODEL_FROM_DATABASE=R5870 PM2D1G + +pci:v00001002d00006898sv0000174Bsd00006870* + ID_MODEL_FROM_DATABASE=Radeon HD 6870 OEM + +pci:v00001002d00006899* + ID_MODEL_FROM_DATABASE=Cypress PRO [Radeon HD 5850] + +pci:v00001002d00006899sv00001043sd00000330* + ID_MODEL_FROM_DATABASE=EAH5850 [Radeon HD5850] + +pci:v00001002d00006899sv0000174Bsd0000237B* + ID_MODEL_FROM_DATABASE=Radeon HD 5850 X2 + +pci:v00001002d00006899sv0000174Bsd00006850* + ID_MODEL_FROM_DATABASE=Radeon HD 6850 OEM + +pci:v00001002d0000689B* + ID_MODEL_FROM_DATABASE=Cypress PRO [Radeon HD 6800 Series] + +pci:v00001002d0000689C* + ID_MODEL_FROM_DATABASE=Hemlock [Radeon HD 5970] + +pci:v00001002d0000689Csv00001043sd00000352* + ID_MODEL_FROM_DATABASE=ARES + +pci:v00001002d0000689D* + ID_MODEL_FROM_DATABASE=Hemlock [Radeon HD 5970] + +pci:v00001002d0000689E* + ID_MODEL_FROM_DATABASE=Cypress LE [Radeon HD 5830] + +pci:v00001002d000068A0* + ID_MODEL_FROM_DATABASE=Broadway XT [Mobility Radeon HD 5870] + +pci:v00001002d000068A0sv00001028sd000012EF* + ID_MODEL_FROM_DATABASE=FirePro M7820 + +pci:v00001002d000068A0sv0000103Csd00001520* + ID_MODEL_FROM_DATABASE=FirePro M7820 + +pci:v00001002d000068A1* + ID_MODEL_FROM_DATABASE=Broadway PRO [Mobility Radeon HD 5850] + +pci:v00001002d000068A1sv0000106Bsd000000CC* + ID_MODEL_FROM_DATABASE=iMac MC511 Mobility Radeon HD 5850 MXM Module + +pci:v00001002d000068A8* + ID_MODEL_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] + +pci:v00001002d000068A8sv0000103Csd0000159B* + ID_MODEL_FROM_DATABASE=Radeon HD 6850M + +pci:v00001002d000068A9* + ID_MODEL_FROM_DATABASE=Juniper XT [FirePro V5800] + +pci:v00001002d000068B8* + ID_MODEL_FROM_DATABASE=Juniper XT [Radeon HD 5770] + +pci:v00001002d000068B8sv0000106Bsd000000CF* + ID_MODEL_FROM_DATABASE=MacPro5,1 [Mac Pro 2.8GHz DDR3] + +pci:v00001002d000068B9* + ID_MODEL_FROM_DATABASE=Juniper LE [Radeon HD 5670 640SP Edition] + +pci:v00001002d000068BA* + ID_MODEL_FROM_DATABASE=Juniper XT [Radeon HD 6770] + +pci:v00001002d000068BE* + ID_MODEL_FROM_DATABASE=Juniper PRO [Radeon HD 5750] + +pci:v00001002d000068BEsv0000148Csd00003000* + ID_MODEL_FROM_DATABASE=Powercolor HD 6750 + +pci:v00001002d000068BF* + ID_MODEL_FROM_DATABASE=Juniper PRO [Radeon HD 6750] + +pci:v00001002d000068BFsv0000174Bsd00006750* + ID_MODEL_FROM_DATABASE=Radeon HD 6750 + +pci:v00001002d000068C0* + ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5000 Series] + +pci:v00001002d000068C0sv0000103Csd00001521* + ID_MODEL_FROM_DATABASE=Madison XT [FirePro M5800] + +pci:v00001002d000068C0sv0000103Csd00001593* + ID_MODEL_FROM_DATABASE=Mobility Radeon HD 6570 + +pci:v00001002d000068C0sv0000103Csd00001596* + ID_MODEL_FROM_DATABASE=Mobility Radeon HD 6570 + +pci:v00001002d000068C0sv0000103Csd00001599* + ID_MODEL_FROM_DATABASE=Mobility Radeon HD 6570 + +pci:v00001002d000068C1* + ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750/6550M] + +pci:v00001002d000068C1sv00001025sd0000033D* + ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650 + +pci:v00001002d000068C1sv00001025sd00000347* + ID_MODEL_FROM_DATABASE=Aspire 7740G + +pci:v00001002d000068C1sv0000103Csd00001521* + ID_MODEL_FROM_DATABASE=Madison Pro [FirePro M5800] + +pci:v00001002d000068C7* + ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5570/6550A] + +pci:v00001002d000068C8* + ID_MODEL_FROM_DATABASE=Redwood XT [FirePro V4800] + +pci:v00001002d000068C9* + ID_MODEL_FROM_DATABASE=Redwood PRO [FirePro V3800] + +pci:v00001002d000068D8* + ID_MODEL_FROM_DATABASE=Redwood XT [Radeon HD 5670] + +pci:v00001002d000068D8sv00001787sd00003000* + ID_MODEL_FROM_DATABASE=Radeon HD 5730 + +pci:v00001002d000068D9* + ID_MODEL_FROM_DATABASE=Redwood PRO [Radeon HD 5570] + +pci:v00001002d000068D9sv0000148Csd00003000* + ID_MODEL_FROM_DATABASE=Radeon HD 6510 + +pci:v00001002d000068D9sv0000148Csd00003001* + ID_MODEL_FROM_DATABASE=Radeon HD 6610 + +pci:v00001002d000068DA* + ID_MODEL_FROM_DATABASE=Redwood LE [Radeon HD 5550] + +pci:v00001002d000068DAsv0000148Csd00003000* + ID_MODEL_FROM_DATABASE=Radeon HD 6390 + +pci:v00001002d000068DAsv0000148Csd00003001* + ID_MODEL_FROM_DATABASE=Radeon HD 6490 + +pci:v00001002d000068DE* + ID_MODEL_FROM_DATABASE=Redwood + +pci:v00001002d000068E0* + ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5400 Series] + +pci:v00001002d000068E0sv0000103Csd00001486* + ID_MODEL_FROM_DATABASE=TouchSmart tm2-2050er discrete GPU (Mobility Radeon HD 5450) + +pci:v00001002d000068E1* + ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430] + +pci:v00001002d000068E1sv0000148Csd00007350* + ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 7350] + +pci:v00001002d000068E1sv00001545sd00005450* + ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 5450] + +pci:v00001002d000068E1sv0000174Bsd00005470* + ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 5470] + +pci:v00001002d000068E1sv0000174Bsd00006350* + ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 6350] + +pci:v00001002d000068E1sv000017AFsd00003015* + ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 7350] + +pci:v00001002d000068E1sv000017AFsd00008350* + ID_MODEL_FROM_DATABASE=Caicos [Radeon HD 8350 OEM] + +pci:v00001002d000068E4* + ID_MODEL_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] + +pci:v00001002d000068E5* + ID_MODEL_FROM_DATABASE=Robson LE [Radeon HD 6330M] + +pci:v00001002d000068E5sv0000148Csd00007350* + ID_MODEL_FROM_DATABASE=Radeon HD 7350 + +pci:v00001002d000068E8* + ID_MODEL_FROM_DATABASE=Cedar + +pci:v00001002d000068E9* + ID_MODEL_FROM_DATABASE=Cedar [ATI FirePro (FireGL) Graphics Adapter] + +pci:v00001002d000068F1* + ID_MODEL_FROM_DATABASE=Cedar [FirePro 2460] + +pci:v00001002d000068F2* + ID_MODEL_FROM_DATABASE=Cedar [FirePro 2270] + +pci:v00001002d000068F8* + ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7300 Series] + +pci:v00001002d000068F9* + ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350 Series] + +pci:v00001002d000068F9sv00001019sd00000001* + ID_MODEL_FROM_DATABASE=Radeon HD 5450 + +pci:v00001002d000068F9sv00001019sd00000019* + ID_MODEL_FROM_DATABASE=Radeon HD 6350 + +pci:v00001002d000068F9sv00001028sd0000010E* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v00001002d000068F9sv00001043sd000003C2* + ID_MODEL_FROM_DATABASE=EAH5450 SILENT/DI/512MD2 (LP) + +pci:v00001002d000068F9sv0000148Csd00003001* + ID_MODEL_FROM_DATABASE=Radeon HD 5530/6250 + +pci:v00001002d000068F9sv0000148Csd00003002* + ID_MODEL_FROM_DATABASE=Radeon HD 6290 + +pci:v00001002d000068F9sv0000148Csd00003003* + ID_MODEL_FROM_DATABASE=Radeon HD 6230 + +pci:v00001002d000068F9sv0000148Csd00003004* + ID_MODEL_FROM_DATABASE=Radeon HD 6350 + +pci:v00001002d000068F9sv0000148Csd00007350* + ID_MODEL_FROM_DATABASE=Radeon HD 7350 + +pci:v00001002d000068F9sv0000174Bsd00005470* + ID_MODEL_FROM_DATABASE=Radeon HD 5470 + +pci:v00001002d000068F9sv0000174Bsd00005490* + ID_MODEL_FROM_DATABASE=Radeon HD 5490 + +pci:v00001002d000068F9sv0000174Bsd00005530* + ID_MODEL_FROM_DATABASE=Radeon HD 5530 + +pci:v00001002d000068F9sv0000174Bsd00007350* + ID_MODEL_FROM_DATABASE=Radeon HD 7350 + +pci:v00001002d000068FA* + ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7350] + +pci:v00001002d000068FAsv000017AFsd00003015* + ID_MODEL_FROM_DATABASE=Radeon HD 7350 + +pci:v00001002d000068FE* + ID_MODEL_FROM_DATABASE=Cedar LE + +pci:v00001002d0000700F* + ID_MODEL_FROM_DATABASE=PCI Bridge [IGP 320M] + +pci:v00001002d00007010* + ID_MODEL_FROM_DATABASE=PCI Bridge [IGP 340M] + +pci:v00001002d00007100* + ID_MODEL_FROM_DATABASE=R520 [Radeon X1800 XT] + +pci:v00001002d00007101* + ID_MODEL_FROM_DATABASE=R520/M58 [Mobility Radeon X1800 XT] + +pci:v00001002d00007102* + ID_MODEL_FROM_DATABASE=R520/M58 [Mobility Radeon X1800] + +pci:v00001002d00007104* + ID_MODEL_FROM_DATABASE=R520 GL [FireGL V7200] + +pci:v00001002d00007109* + ID_MODEL_FROM_DATABASE=R520 [Radeon X1800 XL] + +pci:v00001002d00007109sv00001002sd00000322* + ID_MODEL_FROM_DATABASE=All-in-Wonder X1800XL + +pci:v00001002d00007109sv00001002sd00000D02* + ID_MODEL_FROM_DATABASE=Radeon X1800 CrossFire Edition + +pci:v00001002d0000710A* + ID_MODEL_FROM_DATABASE=R520 [Radeon X1800 GTO] + +pci:v00001002d0000710Asv00001002sd00000B12* + ID_MODEL_FROM_DATABASE=Radeon X1800 GTO² + +pci:v00001002d0000710B* + ID_MODEL_FROM_DATABASE=R520 [Radeon X1800 GTO] + +pci:v00001002d00007120* + ID_MODEL_FROM_DATABASE=R520 [Radeon X1800] (Secondary) + +pci:v00001002d00007124* + ID_MODEL_FROM_DATABASE=R520 GL [FireGL V7200] (Secondary) + +pci:v00001002d00007129* + ID_MODEL_FROM_DATABASE=R520 [Radeon X1800] (Secondary) + +pci:v00001002d00007129sv00001002sd00000323* + ID_MODEL_FROM_DATABASE=All-In-Wonder X1800 XL (Secondary) + +pci:v00001002d00007129sv00001002sd00000D03* + ID_MODEL_FROM_DATABASE=Radeon X1800 CrossFire Edition (Secondary) + +pci:v00001002d00007140* + ID_MODEL_FROM_DATABASE=RV515 [Radeon X1300/X1550/X1600 Series] + +pci:v00001002d00007142* + ID_MODEL_FROM_DATABASE=RV515 PRO [Radeon X1300/X1550 Series] + +pci:v00001002d00007142sv00001002sd00000322* + ID_MODEL_FROM_DATABASE=All-in-Wonder 2006 PCI-E Edition + +pci:v00001002d00007142sv00001043sd00000142* + ID_MODEL_FROM_DATABASE=EAX1300PRO/TD/256M + +pci:v00001002d00007143* + ID_MODEL_FROM_DATABASE=RV505 [Radeon X1300/X1550 Series] + +pci:v00001002d00007145* + ID_MODEL_FROM_DATABASE=RV515/M54 [Mobility Radeon X1400] + +pci:v00001002d00007145sv000017AAsd00002006* + ID_MODEL_FROM_DATABASE=Thinkpad T60 model 2007 + +pci:v00001002d00007146* + ID_MODEL_FROM_DATABASE=RV515 [Radeon X1300/X1550] + +pci:v00001002d00007146sv00001002sd00000322* + ID_MODEL_FROM_DATABASE=All-in-Wonder 2006 PCI-E Edition + +pci:v00001002d00007146sv00001545sd00001996* + ID_MODEL_FROM_DATABASE=Radeon X1300 512MB PCI-e + +pci:v00001002d00007147* + ID_MODEL_FROM_DATABASE=RV505 [Radeon X1550 64-bit] + +pci:v00001002d00007149* + ID_MODEL_FROM_DATABASE=RV515/M52 [Mobility Radeon X1300] + +pci:v00001002d0000714A* + ID_MODEL_FROM_DATABASE=RV515/M52 [Mobility Radeon X1300] + +pci:v00001002d00007152* + ID_MODEL_FROM_DATABASE=RV515 GL [FireGL V3300] + +pci:v00001002d00007153* + ID_MODEL_FROM_DATABASE=RV515 GL [FireGL V3350] + +pci:v00001002d0000715F* + ID_MODEL_FROM_DATABASE=RV505 CE [Radeon X1550 64-bit] + +pci:v00001002d00007162* + ID_MODEL_FROM_DATABASE=RV515 PRO [Radeon X1300/X1550 Series] (Secondary) + +pci:v00001002d00007162sv00001002sd00000323* + ID_MODEL_FROM_DATABASE=All-in-Wonder 2006 PCI-E Edition (Secondary) + +pci:v00001002d00007163* + ID_MODEL_FROM_DATABASE=RV505 [Radeon X1550 Series] (Secondary) + +pci:v00001002d00007166* + ID_MODEL_FROM_DATABASE=RV515 [Radeon X1300/X1550 Series] (Secondary) + +pci:v00001002d00007166sv00001002sd00000323* + ID_MODEL_FROM_DATABASE=All-in-Wonder 2006 PCI-E Edition (Secondary) + +pci:v00001002d00007166sv00001545sd00001997* + ID_MODEL_FROM_DATABASE=Radeon X1300 512MB PCI-e (Secondary) + +pci:v00001002d00007167* + ID_MODEL_FROM_DATABASE=RV515 [Radeon X1550 64-bit] (Secondary) + +pci:v00001002d00007172* + ID_MODEL_FROM_DATABASE=RV515 GL [FireGL V3300] (Secondary) + +pci:v00001002d00007173* + ID_MODEL_FROM_DATABASE=RV515 GL [FireGL V3350] (Secondary) + +pci:v00001002d00007181* + ID_MODEL_FROM_DATABASE=RV516 [Radeon X1600/X1650 Series] + +pci:v00001002d00007183* + ID_MODEL_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] + +pci:v00001002d00007186* + ID_MODEL_FROM_DATABASE=RV516/M64 [Mobility Radeon X1450] + +pci:v00001002d00007187* + ID_MODEL_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] + +pci:v00001002d00007188* + ID_MODEL_FROM_DATABASE=RV516/M64-S [Mobility Radeon X2300] + +pci:v00001002d00007188sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=6910p + +pci:v00001002d0000718A* + ID_MODEL_FROM_DATABASE=RV516/M64 [Mobility Radeon X2300] + +pci:v00001002d0000718B* + ID_MODEL_FROM_DATABASE=RV516/M62 [Mobility Radeon X1350] + +pci:v00001002d0000718C* + ID_MODEL_FROM_DATABASE=RV516/M62-CSP64 [Mobility Radeon X1350] + +pci:v00001002d0000718D* + ID_MODEL_FROM_DATABASE=RV516/M64-CSP128 [Mobility Radeon X1450] + +pci:v00001002d00007193* + ID_MODEL_FROM_DATABASE=RV516 [Radeon X1550 Series] + +pci:v00001002d00007196* + ID_MODEL_FROM_DATABASE=RV516/M62-S [Mobility Radeon X1350] + +pci:v00001002d0000719B* + ID_MODEL_FROM_DATABASE=RV516 [FireMV 2250] + +pci:v00001002d0000719F* + ID_MODEL_FROM_DATABASE=RV516 [Radeon X1550 Series] + +pci:v00001002d000071A0* + ID_MODEL_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] (Secondary) + +pci:v00001002d000071A1* + ID_MODEL_FROM_DATABASE=RV516 [Radeon X1600/X1650 Series] (Secondary) + +pci:v00001002d000071A3* + ID_MODEL_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] (Secondary) + +pci:v00001002d000071A7* + ID_MODEL_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] (Secondary) + +pci:v00001002d000071BB* + ID_MODEL_FROM_DATABASE=RV516 [FireMV 2250] (Secondary) + +pci:v00001002d000071C0* + ID_MODEL_FROM_DATABASE=RV530 [Radeon X1600 XT/X1650 GTO] + +pci:v00001002d000071C0sv00001002sd0000E160* + ID_MODEL_FROM_DATABASE=Radeon X1650 GTO + +pci:v00001002d000071C0sv0000174Bsd0000E160* + ID_MODEL_FROM_DATABASE=Radeon X1650 GTO + +pci:v00001002d000071C1* + ID_MODEL_FROM_DATABASE=RV535 [Radeon X1650 PRO] + +pci:v00001002d000071C1sv0000174Bsd00000880* + ID_MODEL_FROM_DATABASE=Radeon X1700 FSC + +pci:v00001002d000071C2* + ID_MODEL_FROM_DATABASE=RV530 [Radeon X1600 PRO] + +pci:v00001002d000071C4* + ID_MODEL_FROM_DATABASE=RV530/M56 GL [Mobility FireGL V5200] + +pci:v00001002d000071C4sv000017AAsd00002007* + ID_MODEL_FROM_DATABASE=ThinkPad T60p + +pci:v00001002d000071C5* + ID_MODEL_FROM_DATABASE=RV530/M56-P [Mobility Radeon X1600] + +pci:v00001002d000071C5sv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00001002d000071C5sv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq NW8440 + +pci:v00001002d000071C5sv00001043sd000010B2* + ID_MODEL_FROM_DATABASE=A6J-Q008 + +pci:v00001002d000071C5sv0000106Bsd00000080* + ID_MODEL_FROM_DATABASE=MacBook Pro + +pci:v00001002d000071C6* + ID_MODEL_FROM_DATABASE=RV530LE [Radeon X1600/X1650 PRO] + +pci:v00001002d000071C7* + ID_MODEL_FROM_DATABASE=RV535 [Radeon X1650 PRO] + +pci:v00001002d000071C7sv00001787sd00003000* + ID_MODEL_FROM_DATABASE=PowerColor X1650 PRO AGP + +pci:v00001002d000071CE* + ID_MODEL_FROM_DATABASE=RV530 [Radeon X1300 XT/X1600 PRO] + +pci:v00001002d000071D2* + ID_MODEL_FROM_DATABASE=RV530 GL [FireGL V3400] + +pci:v00001002d000071D4* + ID_MODEL_FROM_DATABASE=RV530/M66 GL [Mobility FireGL V5250] + +pci:v00001002d000071D5* + ID_MODEL_FROM_DATABASE=RV530/M66-P [Mobility Radeon X1700] + +pci:v00001002d000071D6* + ID_MODEL_FROM_DATABASE=RV530/M66-XT [Mobility Radeon X1700] + +pci:v00001002d000071DE* + ID_MODEL_FROM_DATABASE=RV530/M66 [Mobility Radeon X1700/X2500] + +pci:v00001002d000071E0* + ID_MODEL_FROM_DATABASE=RV530 [Radeon X1600] (Secondary) + +pci:v00001002d000071E0sv0000174Bsd0000E161* + ID_MODEL_FROM_DATABASE=Radeon X1600 GTO (Secondary) + +pci:v00001002d000071E1* + ID_MODEL_FROM_DATABASE=RV535 [Radeon X1650 PRO] (Secondary) + +pci:v00001002d000071E1sv0000174Bsd00000881* + ID_MODEL_FROM_DATABASE=Radeon X1700 FSC (Secondary) + +pci:v00001002d000071E2* + ID_MODEL_FROM_DATABASE=RV530 [Radeon X1600] (Secondary) + +pci:v00001002d000071E6* + ID_MODEL_FROM_DATABASE=RV530 [Radeon X1650] (Secondary) + +pci:v00001002d000071E7* + ID_MODEL_FROM_DATABASE=RV535 [Radeon X1650 PRO] (Secondary) + +pci:v00001002d000071E7sv00001787sd00003001* + ID_MODEL_FROM_DATABASE=Radeon X1650 PRO AGP + +pci:v00001002d000071F2* + ID_MODEL_FROM_DATABASE=RV530 GL [FireGL V3400] (Secondary) + +pci:v00001002d00007210* + ID_MODEL_FROM_DATABASE=RV550/M71 [Mobility Radeon HD 2300] + +pci:v00001002d00007211* + ID_MODEL_FROM_DATABASE=RV550/M71 [Mobility Radeon X2300 HD] + +pci:v00001002d00007240* + ID_MODEL_FROM_DATABASE=R580+ [Radeon X1950 XTX] + +pci:v00001002d00007240sv00001002sd00000D02* + ID_MODEL_FROM_DATABASE=Radeon X1950 CrossFire Edition + +pci:v00001002d00007244* + ID_MODEL_FROM_DATABASE=R580+ [Radeon X1950 XT] + +pci:v00001002d00007248* + ID_MODEL_FROM_DATABASE=R580 [Radeon X1950] + +pci:v00001002d00007249* + ID_MODEL_FROM_DATABASE=R580 [Radeon X1900 XT] + +pci:v00001002d00007249sv00001002sd00000412* + ID_MODEL_FROM_DATABASE=All-In-Wonder X1900 + +pci:v00001002d00007249sv00001002sd00000B12* + ID_MODEL_FROM_DATABASE=Radeon X1900 XT/XTX + +pci:v00001002d00007249sv00001002sd00000D02* + ID_MODEL_FROM_DATABASE=Radeon X1900 CrossFire Edition + +pci:v00001002d00007249sv00001043sd00000160* + ID_MODEL_FROM_DATABASE=Radeon X1900 XTX 512 MB GDDR3 + +pci:v00001002d0000724B* + ID_MODEL_FROM_DATABASE=R580 [Radeon X1900 GT] + +pci:v00001002d0000724Bsv00001002sd00000B12* + ID_MODEL_FROM_DATABASE=Radeon X1900 (Primary) + +pci:v00001002d0000724Bsv00001002sd00000B13* + ID_MODEL_FROM_DATABASE=Radeon X1900 (Secondary) + +pci:v00001002d0000724E* + ID_MODEL_FROM_DATABASE=R580 [FireGL V7350] + +pci:v00001002d00007269* + ID_MODEL_FROM_DATABASE=R580 [Radeon X1900 XT] (Secondary) + +pci:v00001002d0000726B* + ID_MODEL_FROM_DATABASE=R580 [Radeon X1900 GT] (Secondary) + +pci:v00001002d0000726E* + ID_MODEL_FROM_DATABASE=R580 [AMD Stream Processor] (Secondary) + +pci:v00001002d00007280* + ID_MODEL_FROM_DATABASE=RV570 [Radeon X1950 PRO] + +pci:v00001002d00007288* + ID_MODEL_FROM_DATABASE=RV570 [Radeon X1950 GT] + +pci:v00001002d00007291* + ID_MODEL_FROM_DATABASE=RV560 [Radeon X1650 XT] + +pci:v00001002d00007291sv00001462sd00000810* + ID_MODEL_FROM_DATABASE=Radeon X1700 SE + +pci:v00001002d00007293* + ID_MODEL_FROM_DATABASE=RV560 [Radeon X1650 GT] + +pci:v00001002d000072A0* + ID_MODEL_FROM_DATABASE=RV570 [Radeon X1950 PRO] (Secondary) + +pci:v00001002d000072A8* + ID_MODEL_FROM_DATABASE=RV570 [Radeon X1950 GT] (Secondary) + +pci:v00001002d000072B1* + ID_MODEL_FROM_DATABASE=RV560 [Radeon X1650 XT] (Secondary) + +pci:v00001002d000072B3* + ID_MODEL_FROM_DATABASE=RV560 [Radeon X1650 GT] (Secondary) + +pci:v00001002d00007833* + ID_MODEL_FROM_DATABASE=Radeon 9100 IGP Host Bridge + +pci:v00001002d00007834* + ID_MODEL_FROM_DATABASE=RS350 [Radeon 9100 PRO/XT IGP] + +pci:v00001002d00007835* + ID_MODEL_FROM_DATABASE=RS350M [Mobility Radeon 9000 IGP] + +pci:v00001002d00007838* + ID_MODEL_FROM_DATABASE=Radeon 9100 IGP PCI/AGP Bridge + +pci:v00001002d00007910* + ID_MODEL_FROM_DATABASE=RS690 Host Bridge + +pci:v00001002d00007910sv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001002d00007910sv000017F2sd00005000* + ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard + +pci:v00001002d00007911* + ID_MODEL_FROM_DATABASE=RS690 Host Bridge + +pci:v00001002d00007912* + ID_MODEL_FROM_DATABASE=RS690 PCI to PCI Bridge (Internal gfx) + +pci:v00001002d00007913* + ID_MODEL_FROM_DATABASE=RS690 PCI to PCI Bridge (PCI Express Graphics Port 0) + +pci:v00001002d00007915* + ID_MODEL_FROM_DATABASE=RS690 PCI to PCI Bridge (PCI Express Port 1) + +pci:v00001002d00007916* + ID_MODEL_FROM_DATABASE=RS690 PCI to PCI Bridge (PCI Express Port 2) + +pci:v00001002d00007917* + ID_MODEL_FROM_DATABASE=RS690 PCI to PCI Bridge (PCI Express Port 3) + +pci:v00001002d00007917sv00001002sd00007910* + ID_MODEL_FROM_DATABASE=RS690 PCI to PCI Bridge + +pci:v00001002d00007919* + ID_MODEL_FROM_DATABASE=Radeon X1200 Series Audio Controller + +pci:v00001002d00007919sv00001179sd00007919* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001002d00007919sv000017F2sd00005000* + ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard + +pci:v00001002d0000791E* + ID_MODEL_FROM_DATABASE=RS690 [Radeon X1200] + +pci:v00001002d0000791Esv00001462sd00007327* + ID_MODEL_FROM_DATABASE=K9AG Neo2 + +pci:v00001002d0000791Esv000017F2sd00005000* + ID_MODEL_FROM_DATABASE=KI690-AM2 Motherboard + +pci:v00001002d0000791F* + ID_MODEL_FROM_DATABASE=RS690M [Radeon Xpress 1200/1250/1270] + +pci:v00001002d0000791Fsv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001002d00007930* + ID_MODEL_FROM_DATABASE=RS600 Host Bridge + +pci:v00001002d00007932* + ID_MODEL_FROM_DATABASE=RS600 PCI to PCI Bridge (Internal gfx) + +pci:v00001002d00007933* + ID_MODEL_FROM_DATABASE=RS600 PCI to PCI Bridge (PCI Express Graphics Port 0) + +pci:v00001002d00007935* + ID_MODEL_FROM_DATABASE=RS600 PCI to PCI Bridge (PCI Express Port 1) + +pci:v00001002d00007936* + ID_MODEL_FROM_DATABASE=RS600 PCI to PCI Bridge (PCI Express Port 2) + +pci:v00001002d00007937* + ID_MODEL_FROM_DATABASE=RS690 PCI to PCI Bridge (PCI Express Port 3) + +pci:v00001002d0000793B* + ID_MODEL_FROM_DATABASE=RS600 HDMI Audio [Radeon Xpress 1250] + +pci:v00001002d0000793F* + ID_MODEL_FROM_DATABASE=RS690M [Radeon Xpress 1200/1250/1270] (Secondary) + +pci:v00001002d00007941* + ID_MODEL_FROM_DATABASE=RS600 [Radeon Xpress 1250] + +pci:v00001002d00007942* + ID_MODEL_FROM_DATABASE=RS600M [Radeon Xpress 1250] + +pci:v00001002d0000796E* + ID_MODEL_FROM_DATABASE=RS740 [Radeon 2100] + +pci:v00001002d00009400* + ID_MODEL_FROM_DATABASE=R600 [Radeon HD 2900 PRO/XT] + +pci:v00001002d00009400sv00001002sd00002552* + ID_MODEL_FROM_DATABASE=Radeon HD 2900 XT + +pci:v00001002d00009400sv00001002sd00003000* + ID_MODEL_FROM_DATABASE=Radeon HD 2900 PRO + +pci:v00001002d00009400sv00001002sd00003142* + ID_MODEL_FROM_DATABASE=HIS Radeon HD 2900XT 512MB GDDR3 VIVO PCIe + +pci:v00001002d00009401* + ID_MODEL_FROM_DATABASE=R600 [Radeon HD 2900 XT] + +pci:v00001002d00009403* + ID_MODEL_FROM_DATABASE=R600 [Radeon HD 2900 PRO] + +pci:v00001002d00009405* + ID_MODEL_FROM_DATABASE=R600 [Radeon HD 2900 GT] + +pci:v00001002d0000940A* + ID_MODEL_FROM_DATABASE=R600 GL [FireGL V8650] + +pci:v00001002d0000940B* + ID_MODEL_FROM_DATABASE=R600 GL [FireGL V8600] + +pci:v00001002d0000940F* + ID_MODEL_FROM_DATABASE=R600 GL [FireGL V7600] + +pci:v00001002d00009440* + ID_MODEL_FROM_DATABASE=RV770 [Radeon HD 4870] + +pci:v00001002d00009441* + ID_MODEL_FROM_DATABASE=R700 [Radeon HD 4870 X2] + +pci:v00001002d00009442* + ID_MODEL_FROM_DATABASE=RV770 [Radeon HD 4850] + +pci:v00001002d00009442sv00001002sd00000502* + ID_MODEL_FROM_DATABASE=MSI R4850-T2D512 + +pci:v00001002d00009442sv0000174Bsd0000E810* + ID_MODEL_FROM_DATABASE=Sapphire HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink + +pci:v00001002d00009443* + ID_MODEL_FROM_DATABASE=R700 [Radeon HD 4850 X2] + +pci:v00001002d00009444* + ID_MODEL_FROM_DATABASE=RV770 [FirePro V8750] + +pci:v00001002d00009446* + ID_MODEL_FROM_DATABASE=RV770 [FirePro V7760] + +pci:v00001002d0000944A* + ID_MODEL_FROM_DATABASE=RV770/M98L [Mobility Radeon HD 4850] + +pci:v00001002d0000944B* + ID_MODEL_FROM_DATABASE=RV770/M98 [Mobility Radeon HD 4850 X2] + +pci:v00001002d0000944C* + ID_MODEL_FROM_DATABASE=RV770 LE [Radeon HD 4830] + +pci:v00001002d0000944E* + ID_MODEL_FROM_DATABASE=RV770 CE [Radeon HD 4710] + +pci:v00001002d0000944Esv0000174Bsd00003261* + ID_MODEL_FROM_DATABASE=Sapphire Radeon HD 4810 + +pci:v00001002d00009450* + ID_MODEL_FROM_DATABASE=RV770 [FireStream 9270] + +pci:v00001002d00009452* + ID_MODEL_FROM_DATABASE=RV770 [FireStream 9250] + +pci:v00001002d00009456* + ID_MODEL_FROM_DATABASE=RV770 [FirePro V8700] + +pci:v00001002d0000945A* + ID_MODEL_FROM_DATABASE=RV770/M98-XT [Mobility Radeon HD 4870] + +pci:v00001002d00009460* + ID_MODEL_FROM_DATABASE=RV790 [Radeon HD 4890] + +pci:v00001002d00009462* + ID_MODEL_FROM_DATABASE=RV790 [Radeon HD 4860] + +pci:v00001002d0000946A* + ID_MODEL_FROM_DATABASE=RV770 [FirePro M7750] + +pci:v00001002d00009480* + ID_MODEL_FROM_DATABASE=RV730/M96 [Mobility Radeon HD 4650/5165] + +pci:v00001002d00009480sv0000103Csd00003628* + ID_MODEL_FROM_DATABASE=ATI Mobility Radeon HD 4650 [dv6-1190en] + +pci:v00001002d00009488* + ID_MODEL_FROM_DATABASE=RV730/M96-XT [Mobility Radeon HD 4670] + +pci:v00001002d00009489* + ID_MODEL_FROM_DATABASE=RV730/M96-XT [Mobility FireGL V5725] + +pci:v00001002d00009490* + ID_MODEL_FROM_DATABASE=RV730 XT [Radeon HD 4670] + +pci:v00001002d00009490sv0000174Bsd0000E880* + ID_MODEL_FROM_DATABASE=Radeon HD 4670 512MB DDR3 + +pci:v00001002d00009491* + ID_MODEL_FROM_DATABASE=RV730/M96-CSP [Radeon E4690] + +pci:v00001002d00009495* + ID_MODEL_FROM_DATABASE=RV730 [Radeon HD 4600 AGP Series] + +pci:v00001002d00009495sv00001002sd00009495* + ID_MODEL_FROM_DATABASE=RV730 XT [PowerColor Radeon HD4670 AGP 1GB DDR] + +pci:v00001002d00009495sv00001458sd00000028* + ID_MODEL_FROM_DATABASE=HD4650 + +pci:v00001002d00009495sv00001682sd00000028* + ID_MODEL_FROM_DATABASE=HD465X + +pci:v00001002d00009498* + ID_MODEL_FROM_DATABASE=RV730 PRO [Radeon HD 4650] + +pci:v00001002d0000949C* + ID_MODEL_FROM_DATABASE=RV730 [FirePro V7750] + +pci:v00001002d0000949E* + ID_MODEL_FROM_DATABASE=RV730 [FirePro V5700] + +pci:v00001002d0000949F* + ID_MODEL_FROM_DATABASE=RV730 [FirePro V3750] + +pci:v00001002d000094A0* + ID_MODEL_FROM_DATABASE=RV740/M97 [Mobility Radeon HD 4830] + +pci:v00001002d000094A1* + ID_MODEL_FROM_DATABASE=RV740/M97-XT [Mobility Radeon HD 4860] + +pci:v00001002d000094A3* + ID_MODEL_FROM_DATABASE=RV740/M97 GL [FirePro M7740] + +pci:v00001002d000094B3* + ID_MODEL_FROM_DATABASE=RV740 PRO [Radeon HD 4770] + +pci:v00001002d000094B4* + ID_MODEL_FROM_DATABASE=RV740 PRO [Radeon HD 4750] + +pci:v00001002d000094B5* + ID_MODEL_FROM_DATABASE=RV740 [Radeon HD 4770] + +pci:v00001002d000094C1* + ID_MODEL_FROM_DATABASE=RV610 [Radeon HD 2400 PRO/XT] + +pci:v00001002d000094C1sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00001002d000094C1sv00001028sd00000D02* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00001002d000094C3* + ID_MODEL_FROM_DATABASE=RV610 [Radeon HD 2400 PRO] + +pci:v00001002d000094C3sv00001002sd000094C3* + ID_MODEL_FROM_DATABASE=Radeon HD 2400PRO + +pci:v00001002d000094C3sv00001028sd00000302* + ID_MODEL_FROM_DATABASE=Radeon HD 2400 Pro + +pci:v00001002d000094C3sv0000174Bsd0000E400* + ID_MODEL_FROM_DATABASE=Sapphire HD 2400 PRO video device + +pci:v00001002d000094C3sv000018BCsd00003550* + ID_MODEL_FROM_DATABASE=GeCube Radeon HD2400 PRO + +pci:v00001002d000094C4* + ID_MODEL_FROM_DATABASE=RV610 LE [Radeon HD 2400 PRO AGP] + +pci:v00001002d000094C5* + ID_MODEL_FROM_DATABASE=RV610 [Radeon HD 2400 LE] + +pci:v00001002d000094C7* + ID_MODEL_FROM_DATABASE=RV610 [Radeon HD 2350] + +pci:v00001002d000094C8* + ID_MODEL_FROM_DATABASE=RV610/M74 [Mobility Radeon HD 2400 XT] + +pci:v00001002d000094C9* + ID_MODEL_FROM_DATABASE=RV610/M72-S [Mobility Radeon HD 2400] + +pci:v00001002d000094C9sv00001002sd000094C9* + ID_MODEL_FROM_DATABASE=Radeon HD2400 + +pci:v00001002d000094CB* + ID_MODEL_FROM_DATABASE=RV610 [Radeon E2400] + +pci:v00001002d000094CC* + ID_MODEL_FROM_DATABASE=RV610 LE [Radeon HD 2400 PRO PCI] + +pci:v00001002d00009500* + ID_MODEL_FROM_DATABASE=RV670 [Radeon HD 3850 X2] + +pci:v00001002d00009501* + ID_MODEL_FROM_DATABASE=RV670 [Radeon HD 3870] + +pci:v00001002d00009501sv0000174Bsd0000E620* + ID_MODEL_FROM_DATABASE=Sapphire Radeon HD 3870 PCIe 2.0 + +pci:v00001002d00009504* + ID_MODEL_FROM_DATABASE=RV670/M88 [Mobility Radeon HD 3850] + +pci:v00001002d00009505* + ID_MODEL_FROM_DATABASE=RV670 [Radeon HD 3690/3850] + +pci:v00001002d00009505sv0000148Csd00003000* + ID_MODEL_FROM_DATABASE=Radeon HD 3850 + +pci:v00001002d00009505sv0000174Bsd00003000* + ID_MODEL_FROM_DATABASE=Radeon HD 3690/3850 + +pci:v00001002d00009505sv00001787sd00003000* + ID_MODEL_FROM_DATABASE=Radeon HD 3690 + +pci:v00001002d00009506* + ID_MODEL_FROM_DATABASE=RV670/M88 [Mobility Radeon HD 3850 X2] + +pci:v00001002d00009507* + ID_MODEL_FROM_DATABASE=RV670 [Radeon HD 3830] + +pci:v00001002d00009508* + ID_MODEL_FROM_DATABASE=RV670/M88-XT [Mobility Radeon HD 3870] + +pci:v00001002d00009509* + ID_MODEL_FROM_DATABASE=RV670/M88 [Mobility Radeon HD 3870 X2] + +pci:v00001002d0000950F* + ID_MODEL_FROM_DATABASE=R680 [Radeon HD 3870 X2] + +pci:v00001002d00009511* + ID_MODEL_FROM_DATABASE=RV670 GL [FireGL V7700] + +pci:v00001002d00009513* + ID_MODEL_FROM_DATABASE=RV670 [Radeon HD 3850 X2] + +pci:v00001002d00009515* + ID_MODEL_FROM_DATABASE=RV670 PRO [Radeon HD 3850 AGP] + +pci:v00001002d00009519* + ID_MODEL_FROM_DATABASE=RV670 [FireStream 9170] + +pci:v00001002d00009540* + ID_MODEL_FROM_DATABASE=RV710 [Radeon HD 4550] + +pci:v00001002d0000954F* + ID_MODEL_FROM_DATABASE=RV710 [Radeon HD 4350/4550] + +pci:v00001002d0000954Fsv00001462sd00001618* + ID_MODEL_FROM_DATABASE=R4350 MD512H (MS-V161) + +pci:v00001002d00009552* + ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330/4350/4550] + +pci:v00001002d00009552sv00001028sd00001103* + ID_MODEL_FROM_DATABASE=M92 [Mobility Radeon HD 4330] + +pci:v00001002d00009552sv00001458sd000021AC* + ID_MODEL_FROM_DATABASE=Radeon HD 4350 + +pci:v00001002d00009552sv00001458sd000021ED* + ID_MODEL_FROM_DATABASE=Radeon HD 4550 + +pci:v00001002d00009552sv0000148Csd00003000* + ID_MODEL_FROM_DATABASE=Radeon HD 4350 Go! Green 512MB GDDR3 + +pci:v00001002d00009552sv0000174Bsd00003000* + ID_MODEL_FROM_DATABASE=Radeon HD 4350/4550 HyperMemory DDR2 + +pci:v00001002d00009553* + ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] + +pci:v00001002d00009553sv00001179sd0000FF82* + ID_MODEL_FROM_DATABASE=Satellite L505-13T GPU (Mobility Radeon HD 5145) + +pci:v00001002d00009555* + ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4350/4550] + +pci:v00001002d00009555sv0000103Csd00001411* + ID_MODEL_FROM_DATABASE=ProBook 4720s GPU (Mobility Radeon HD 4350) + +pci:v00001002d00009557* + ID_MODEL_FROM_DATABASE=RV711 [FirePro RG220] + +pci:v00001002d0000955F* + ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330] + +pci:v00001002d00009580* + ID_MODEL_FROM_DATABASE=RV630 [Radeon HD 2600 PRO] + +pci:v00001002d00009581* + ID_MODEL_FROM_DATABASE=RV630/M76 [Mobility Radeon HD 2600] + +pci:v00001002d00009583* + ID_MODEL_FROM_DATABASE=RV630/M76 [Mobility Radeon HD 2600 XT/2700] + +pci:v00001002d00009583sv0000106Bsd00000083* + ID_MODEL_FROM_DATABASE=iMac 7,1 + +pci:v00001002d00009583sv00001734sd00001107* + ID_MODEL_FROM_DATABASE=Mobility Radeon HD 2700 + +pci:v00001002d00009586* + ID_MODEL_FROM_DATABASE=RV630 XT [Radeon HD 2600 XT AGP] + +pci:v00001002d00009587* + ID_MODEL_FROM_DATABASE=RV630 PRO [Radeon HD 2600 PRO AGP] + +pci:v00001002d00009588* + ID_MODEL_FROM_DATABASE=RV630 XT [Radeon HD 2600 XT] + +pci:v00001002d00009588sv00001458sd0000216C* + ID_MODEL_FROM_DATABASE=Radeon HD 2600 XT, 256MB GDDR3, 2x DVI, TV-out, PCIe (GV-RX26T256H) + +pci:v00001002d00009589* + ID_MODEL_FROM_DATABASE=RV630 PRO [Radeon HD 2600 PRO] + +pci:v00001002d00009589sv00001787sd00003000* + ID_MODEL_FROM_DATABASE=Radeon HD 3610 + +pci:v00001002d0000958A* + ID_MODEL_FROM_DATABASE=RV630 [Radeon HD 2600 X2] + +pci:v00001002d0000958B* + ID_MODEL_FROM_DATABASE=RV630/M76 [Mobility Radeon HD 2600 XT] + +pci:v00001002d0000958C* + ID_MODEL_FROM_DATABASE=RV630 GL [FireGL V5600] + +pci:v00001002d0000958D* + ID_MODEL_FROM_DATABASE=RV630 GL [FireGL V3600] + +pci:v00001002d00009591* + ID_MODEL_FROM_DATABASE=RV635/M86 [Mobility Radeon HD 3650] + +pci:v00001002d00009591sv00001002sd00009591* + ID_MODEL_FROM_DATABASE=Mobility Radeon HD 3650 + +pci:v00001002d00009593* + ID_MODEL_FROM_DATABASE=RV635/M86 [Mobility Radeon HD 3670] + +pci:v00001002d00009595* + ID_MODEL_FROM_DATABASE=RV635/M86 GL [Mobility FireGL V5700] + +pci:v00001002d00009596* + ID_MODEL_FROM_DATABASE=RV635 PRO [Radeon HD 3650 AGP] + +pci:v00001002d00009596sv00001043sd00000028* + ID_MODEL_FROM_DATABASE=EAH3650 SILENT/HTDI/512M/A + +pci:v00001002d00009597* + ID_MODEL_FROM_DATABASE=RV635 [Radeon HD 3600 Series] + +pci:v00001002d00009598* + ID_MODEL_FROM_DATABASE=RV635 [Radeon HD 3600 Series] + +pci:v00001002d00009598sv00001002sd00009598* + ID_MODEL_FROM_DATABASE=Mobility Radeon HD 3600 + +pci:v00001002d00009598sv00001043sd000001D6* + ID_MODEL_FROM_DATABASE=EAH3650 Silent + +pci:v00001002d00009598sv00001043sd00003001* + ID_MODEL_FROM_DATABASE=Radeon HD 4570 + +pci:v00001002d00009598sv0000174Bsd00003001* + ID_MODEL_FROM_DATABASE=Radeon HD 3750 + +pci:v00001002d00009598sv0000174Bsd00004580* + ID_MODEL_FROM_DATABASE=RV635 PRO [Radeon HD 4580] + +pci:v00001002d00009599* + ID_MODEL_FROM_DATABASE=RV635 [Radeon HD 3650 AGP] + +pci:v00001002d000095C0* + ID_MODEL_FROM_DATABASE=RV620 PRO [Radeon HD 3470] + +pci:v00001002d000095C0sv00001002sd000095C0* + ID_MODEL_FROM_DATABASE=Mobility Radeon HD 3470 + +pci:v00001002d000095C2* + ID_MODEL_FROM_DATABASE=RV620/M82 [Mobility Radeon HD 3410/3430] + +pci:v00001002d000095C4* + ID_MODEL_FROM_DATABASE=RV620/M82 [Mobility Radeon HD 3450/3470] + +pci:v00001002d000095C4sv00001002sd000095C4* + ID_MODEL_FROM_DATABASE=Mobility Radeon HD 3400 + +pci:v00001002d000095C5* + ID_MODEL_FROM_DATABASE=RV620 LE [Radeon HD 3450] + +pci:v00001002d000095C5sv00001028sd00000342* + ID_MODEL_FROM_DATABASE=OptiPlex 980 + +pci:v00001002d000095C6* + ID_MODEL_FROM_DATABASE=RV620 LE [Radeon HD 3450 AGP] + +pci:v00001002d000095C9* + ID_MODEL_FROM_DATABASE=RV620 LE [Radeon HD 3450 PCI] + +pci:v00001002d000095CC* + ID_MODEL_FROM_DATABASE=RV620 [FirePro V3700] + +pci:v00001002d000095CF* + ID_MODEL_FROM_DATABASE=RV620 [FirePro 2260] + +pci:v00001002d0000960F* + ID_MODEL_FROM_DATABASE=RS780 HDMI Audio [Radeon (HD) 3000 Series] + +pci:v00001002d00009610* + ID_MODEL_FROM_DATABASE=RS780 [Radeon HD 3200] + +pci:v00001002d00009610sv00001458sd0000D000* + ID_MODEL_FROM_DATABASE=GA-MA78GM-S2H Motherboard + +pci:v00001002d00009611* + ID_MODEL_FROM_DATABASE=RS780C [Radeon 3100] + +pci:v00001002d00009612* + ID_MODEL_FROM_DATABASE=RS780M [Mobility Radeon HD 3200] + +pci:v00001002d00009613* + ID_MODEL_FROM_DATABASE=RS780MC [Mobility Radeon HD 3100] + +pci:v00001002d00009614* + ID_MODEL_FROM_DATABASE=RS780D [Radeon HD 3300] + +pci:v00001002d00009616* + ID_MODEL_FROM_DATABASE=RS780L [Radeon 3000] + +pci:v00001002d00009640* + ID_MODEL_FROM_DATABASE=BeaverCreek [Radeon HD 6550D] + +pci:v00001002d00009641* + ID_MODEL_FROM_DATABASE=BeaverCreek [Radeon HD 6620G] + +pci:v00001002d00009642* + ID_MODEL_FROM_DATABASE=Sumo [Radeon HD 6370D] + +pci:v00001002d00009643* + ID_MODEL_FROM_DATABASE=Sumo [Radeon HD 6380G] + +pci:v00001002d00009644* + ID_MODEL_FROM_DATABASE=Sumo [Radeon HD 6410D] + +pci:v00001002d00009645* + ID_MODEL_FROM_DATABASE=Sumo [Radeon HD 6410D] + +pci:v00001002d00009647* + ID_MODEL_FROM_DATABASE=BeaverCreek [Radeon HD 6520G] + +pci:v00001002d00009648* + ID_MODEL_FROM_DATABASE=Sumo [Radeon HD 6480G] + +pci:v00001002d00009649* + ID_MODEL_FROM_DATABASE=Sumo [Radeon HD 6480G] + +pci:v00001002d0000964A* + ID_MODEL_FROM_DATABASE=BeaverCreek [Radeon HD 6530D] + +pci:v00001002d0000964B* + ID_MODEL_FROM_DATABASE=Sumo + +pci:v00001002d0000964C* + ID_MODEL_FROM_DATABASE=Sumo + +pci:v00001002d0000964E* + ID_MODEL_FROM_DATABASE=Sumo + +pci:v00001002d0000964F* + ID_MODEL_FROM_DATABASE=Sumo + +pci:v00001002d0000970F* + ID_MODEL_FROM_DATABASE=RS880 HDMI Audio [Radeon HD 4200 Series] + +pci:v00001002d0000970Fsv00001019sd00002120* + ID_MODEL_FROM_DATABASE=A785GM-M + +pci:v00001002d0000970Fsv00001043sd000083A2* + ID_MODEL_FROM_DATABASE=M4A785TD Motherboard + +pci:v00001002d0000970Fsv00001043sd0000843E* + ID_MODEL_FROM_DATABASE=M5A88-V EVO + +pci:v00001002d00009710* + ID_MODEL_FROM_DATABASE=RS880 [Radeon HD 4200] + +pci:v00001002d00009710sv00001019sd00002120* + ID_MODEL_FROM_DATABASE=A785GM-M + +pci:v00001002d00009710sv00001043sd000083A2* + ID_MODEL_FROM_DATABASE=M4A785TD Motherboard + +pci:v00001002d00009712* + ID_MODEL_FROM_DATABASE=RS880M [Mobility Radeon HD 4200 Series] + +pci:v00001002d00009713* + ID_MODEL_FROM_DATABASE=RS880M [Mobility Radeon HD 4100] + +pci:v00001002d00009714* + ID_MODEL_FROM_DATABASE=RS880 [Radeon HD 4290] + +pci:v00001002d00009715* + ID_MODEL_FROM_DATABASE=RS880 [Radeon HD 4250] + +pci:v00001002d00009715sv00001043sd0000843E* + ID_MODEL_FROM_DATABASE=M5A88-V EVO + +pci:v00001002d00009802* + ID_MODEL_FROM_DATABASE=Wrestler [Radeon HD 6310] + +pci:v00001002d00009802sv0000174Bsd00001001* + ID_MODEL_FROM_DATABASE=Sapphire PURE Fusion Mini + +pci:v00001002d00009803* + ID_MODEL_FROM_DATABASE=Wrestler [Radeon HD 6310] + +pci:v00001002d00009804* + ID_MODEL_FROM_DATABASE=Wrestler [Radeon HD 6250] + +pci:v00001002d00009805* + ID_MODEL_FROM_DATABASE=Wrestler [Radeon HD 6250] + +pci:v00001002d00009806* + ID_MODEL_FROM_DATABASE=Wrestler [Radeon HD 6320] + +pci:v00001002d00009807* + ID_MODEL_FROM_DATABASE=Wrestler [Radeon HD 6290] + +pci:v00001002d00009808* + ID_MODEL_FROM_DATABASE=Wrestler [Radeon HD 7340] + +pci:v00001002d00009809* + ID_MODEL_FROM_DATABASE=Wrestler [Radeon HD 7310] + +pci:v00001002d0000980A* + ID_MODEL_FROM_DATABASE=Wrestler [Radeon HD 7290] + +pci:v00001002d00009830* + ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8400] + +pci:v00001002d00009831* + ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8400E] + +pci:v00001002d00009832* + ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8330] + +pci:v00001002d00009833* + ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8330E] + +pci:v00001002d00009834* + ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8210] + +pci:v00001002d00009835* + ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8310E] + +pci:v00001002d00009836* + ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8280] + +pci:v00001002d00009837* + ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8280E] + +pci:v00001002d00009838* + ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8240] + +pci:v00001002d00009839* + ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8180] + +pci:v00001002d0000983A* + ID_MODEL_FROM_DATABASE=Kabini + +pci:v00001002d0000983B* + ID_MODEL_FROM_DATABASE=Kabini + +pci:v00001002d0000983C* + ID_MODEL_FROM_DATABASE=Kabini + +pci:v00001002d0000983D* + ID_MODEL_FROM_DATABASE=Kabini [Radeon HD 8250] + +pci:v00001002d0000983E* + ID_MODEL_FROM_DATABASE=Kabini + +pci:v00001002d0000983F* + ID_MODEL_FROM_DATABASE=Kabini + +pci:v00001002d00009901* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7660D] + +pci:v00001002d00009902* + ID_MODEL_FROM_DATABASE=Trinity HDMI Audio Controller + +pci:v00001002d00009903* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7640G] + +pci:v00001002d00009904* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7560D] + +pci:v00001002d00009905* + ID_MODEL_FROM_DATABASE=Trinity [FirePro A300 Series Graphics] + +pci:v00001002d00009906* + ID_MODEL_FROM_DATABASE=Trinity [FirePro A300 Series Graphics] + +pci:v00001002d00009907* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7620G] + +pci:v00001002d00009908* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7600G] + +pci:v00001002d00009909* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7500G] + +pci:v00001002d0000990A* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7500G] + +pci:v00001002d0000990B* + ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8650G] + +pci:v00001002d0000990C* + ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8670D] + +pci:v00001002d0000990D* + ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8550G] + +pci:v00001002d0000990E* + ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8570D] + +pci:v00001002d0000990F* + ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8610G] + +pci:v00001002d00009910* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7660G] + +pci:v00001002d00009913* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7640G] + +pci:v00001002d00009917* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7620G] + +pci:v00001002d00009918* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7600G] + +pci:v00001002d00009919* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7500G] + +pci:v00001002d00009990* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7520G] + +pci:v00001002d00009991* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7540D] + +pci:v00001002d00009992* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7420G] + +pci:v00001002d00009993* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7480D] + +pci:v00001002d00009994* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7400G] + +pci:v00001002d00009995* + ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8450G] + +pci:v00001002d00009996* + ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8470D] + +pci:v00001002d00009997* + ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8350G] + +pci:v00001002d00009998* + ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8370D] + +pci:v00001002d00009999* + ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8510G] + +pci:v00001002d0000999A* + ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8410G] + +pci:v00001002d0000999B* + ID_MODEL_FROM_DATABASE=Richland [Radeon HD 8310G] + +pci:v00001002d0000999C* + ID_MODEL_FROM_DATABASE=Richland + +pci:v00001002d0000999D* + ID_MODEL_FROM_DATABASE=Richland + +pci:v00001002d000099A0* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7520G] + +pci:v00001002d000099A2* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7420G] + +pci:v00001002d000099A4* + ID_MODEL_FROM_DATABASE=Trinity [Radeon HD 7400G] + +pci:v00001002d0000AA00* + ID_MODEL_FROM_DATABASE=R600 HDMI Audio [Radeon HD 2900 Series] + +pci:v00001002d0000AA08* + ID_MODEL_FROM_DATABASE=RV630 HDMI Audio [Radeon HD 2600 Series] + +pci:v00001002d0000AA10* + ID_MODEL_FROM_DATABASE=RV610 HDMI Audio [Radeon HD 2350/2400 Series] + +pci:v00001002d0000AA10sv0000174Bsd0000AA10* + ID_MODEL_FROM_DATABASE=Sapphire HD 2400 PRO audio device + +pci:v00001002d0000AA10sv000018BCsd0000AA10* + ID_MODEL_FROM_DATABASE=GeCube Radeon HD 2400 PRO HDCP-capable digital-only audio device + +pci:v00001002d0000AA18* + ID_MODEL_FROM_DATABASE=RV670/680 HDMI Audio [Radeon HD 3690/3800 Series] + +pci:v00001002d0000AA20* + ID_MODEL_FROM_DATABASE=RV635 HDMI Audio [Radeon HD 3600 Series] + +pci:v00001002d0000AA28* + ID_MODEL_FROM_DATABASE=RV620 HDMI Audio [Radeon HD 3400 Series] + +pci:v00001002d0000AA30* + ID_MODEL_FROM_DATABASE=RV770 HDMI Audio [Radeon HD 4850/4870] + +pci:v00001002d0000AA30sv0000174Bsd0000AA30* + ID_MODEL_FROM_DATABASE=Sapphire HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink + +pci:v00001002d0000AA38* + ID_MODEL_FROM_DATABASE=RV710/730 HDMI Audio [Radeon HD 4000 series] + +pci:v00001002d0000AA38sv0000103Csd00003628* + ID_MODEL_FROM_DATABASE=ATI RV710/730 [dv6-1190en] + +pci:v00001002d0000AA38sv0000174Bsd0000AA38* + ID_MODEL_FROM_DATABASE=R700 Audio Device [Radeon HD 4000 Series] + +pci:v00001002d0000AA50* + ID_MODEL_FROM_DATABASE=Cypress HDMI Audio [Radeon HD 5800 Series] + +pci:v00001002d0000AA58* + ID_MODEL_FROM_DATABASE=Juniper HDMI Audio [Radeon HD 5700 Series] + +pci:v00001002d0000AA60* + ID_MODEL_FROM_DATABASE=Redwood HDMI Audio [Radeon HD 5000 Series] + +pci:v00001002d0000AA60sv00001025sd0000033D* + ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650 + +pci:v00001002d0000AA60sv00001025sd00000347* + ID_MODEL_FROM_DATABASE=Aspire 7740G + +pci:v00001002d0000AA68* + ID_MODEL_FROM_DATABASE=Cedar HDMI Audio [Radeon HD 5400/6300 Series] + +pci:v00001002d0000AA68sv00001028sd0000AA68* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v00001002d0000AA80* + ID_MODEL_FROM_DATABASE=Cayman/Antilles HDMI Audio [Radeon HD 6900 Series] + +pci:v00001002d0000AA88* + ID_MODEL_FROM_DATABASE=Barts HDMI Audio [Radeon HD 6800 Series] + +pci:v00001002d0000AA90* + ID_MODEL_FROM_DATABASE=Turks/Whistler HDMI Audio [Radeon HD 6000 Series] + +pci:v00001002d0000AA90sv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00001002d0000AA98* + ID_MODEL_FROM_DATABASE=Caicos HDMI Audio [Radeon HD 6400 Series] + +pci:v00001002d0000AA98sv0000174Bsd0000AA98* + ID_MODEL_FROM_DATABASE=Sapphire HD 6450 1GB DDR3 + +pci:v00001002d0000AAA0* + ID_MODEL_FROM_DATABASE=Tahiti XT HDMI Audio [Radeon HD 7970 Series] + +pci:v00001002d0000AAB0* + ID_MODEL_FROM_DATABASE=Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] + +pci:v00001002d0000AC00* + ID_MODEL_FROM_DATABASE=Theater 600 Pro + +pci:v00001002d0000AC02* + ID_MODEL_FROM_DATABASE=TV Wonder HD 600 PCIe + +pci:v00001002d0000AC12* + ID_MODEL_FROM_DATABASE=Theater HD T507 (DVB-T) TV tuner/capture device + +pci:v00001002d0000CAB0* + ID_MODEL_FROM_DATABASE=RS100 AGP Bridge [IGP 320M] + +pci:v00001002d0000CAB2* + ID_MODEL_FROM_DATABASE=RS200/RS200M AGP Bridge [IGP 340M] + +pci:v00001002d0000CAB3* + ID_MODEL_FROM_DATABASE=R200 AGP Bridge [Mobility Radeon 7000 IGP] + +pci:v00001002d0000CBB2* + ID_MODEL_FROM_DATABASE=RS200/RS200M AGP Bridge [IGP 340M] + +pci:v00001003* + ID_VENDOR_FROM_DATABASE=ULSI Systems + +pci:v00001003d00000201* + ID_MODEL_FROM_DATABASE=US201 + +pci:v00001004* + ID_VENDOR_FROM_DATABASE=VLSI Technology Inc + +pci:v00001004d00000005* + ID_MODEL_FROM_DATABASE=82C592-FC1 + +pci:v00001004d00000006* + ID_MODEL_FROM_DATABASE=82C593-FC1 + +pci:v00001004d00000007* + ID_MODEL_FROM_DATABASE=82C594-AFC2 + +pci:v00001004d00000008* + ID_MODEL_FROM_DATABASE=82C596/7 [Wildcat] + +pci:v00001004d00000009* + ID_MODEL_FROM_DATABASE=82C597-AFC2 + +pci:v00001004d0000000C* + ID_MODEL_FROM_DATABASE=82C541 [Lynx] + +pci:v00001004d0000000D* + ID_MODEL_FROM_DATABASE=82C543 [Lynx] + +pci:v00001004d00000101* + ID_MODEL_FROM_DATABASE=82C532 + +pci:v00001004d00000102* + ID_MODEL_FROM_DATABASE=82C534 [Eagle] + +pci:v00001004d00000103* + ID_MODEL_FROM_DATABASE=82C538 + +pci:v00001004d00000104* + ID_MODEL_FROM_DATABASE=82C535 + +pci:v00001004d00000105* + ID_MODEL_FROM_DATABASE=82C147 + +pci:v00001004d00000200* + ID_MODEL_FROM_DATABASE=82C975 + +pci:v00001004d00000280* + ID_MODEL_FROM_DATABASE=82C925 + +pci:v00001004d00000304* + ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio + +pci:v00001004d00000304sv00001004sd00000304* + ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio + +pci:v00001004d00000304sv0000122Dsd00001206* + ID_MODEL_FROM_DATABASE=DSP368 Audio + +pci:v00001004d00000304sv00001483sd00005020* + ID_MODEL_FROM_DATABASE=XWave Thunder 3D Audio + +pci:v00001004d00000305* + ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio Gameport + +pci:v00001004d00000305sv00001004sd00000305* + ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio Gameport + +pci:v00001004d00000305sv0000122Dsd00001207* + ID_MODEL_FROM_DATABASE=DSP368 Audio Gameport + +pci:v00001004d00000305sv00001483sd00005021* + ID_MODEL_FROM_DATABASE=XWave Thunder 3D Audio Gameport + +pci:v00001004d00000306* + ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio Support Registers + +pci:v00001004d00000306sv00001004sd00000306* + ID_MODEL_FROM_DATABASE=QSound ThunderBird PCI Audio Support Registers + +pci:v00001004d00000306sv0000122Dsd00001208* + ID_MODEL_FROM_DATABASE=DSP368 Audio Support Registers + +pci:v00001004d00000306sv00001483sd00005022* + ID_MODEL_FROM_DATABASE=XWave Thunder 3D Audio Support Registers + +pci:v00001004d00000307* + ID_MODEL_FROM_DATABASE=SAA7785 ThunderBird PCI Audio + +pci:v00001004d00000307sv00001004sd00000703* + ID_MODEL_FROM_DATABASE=Philips Rhythmic Edge PSC703 + +pci:v00001004d00000307sv00001004sd00000705* + ID_MODEL_FROM_DATABASE=Philips Seismic Edge PSC705 + +pci:v00001004d00000307sv00001004sd00000706* + ID_MODEL_FROM_DATABASE=Philips Acoustic Edge PSC706 + +pci:v00001004d00000308* + ID_MODEL_FROM_DATABASE=SAA7785 ThunderBird PCI Audio Gameport + +pci:v00001004d00000702* + ID_MODEL_FROM_DATABASE=VAS96011 [Golden Gate II] + +pci:v00001004d00000703* + ID_MODEL_FROM_DATABASE=Tollgate + +pci:v00001005* + ID_VENDOR_FROM_DATABASE=Avance Logic Inc. [ALI] + +pci:v00001005d00002064* + ID_MODEL_FROM_DATABASE=ALG2032/2064 + +pci:v00001005d00002128* + ID_MODEL_FROM_DATABASE=ALG2364A + +pci:v00001005d00002301* + ID_MODEL_FROM_DATABASE=ALG2301 + +pci:v00001005d00002302* + ID_MODEL_FROM_DATABASE=ALG2302 + +pci:v00001005d00002364* + ID_MODEL_FROM_DATABASE=ALG2364 + +pci:v00001005d00002464* + ID_MODEL_FROM_DATABASE=ALG2364A + +pci:v00001005d00002501* + ID_MODEL_FROM_DATABASE=ALG2564A/25128A + +pci:v00001006* + ID_VENDOR_FROM_DATABASE=Reply Group + +pci:v00001007* + ID_VENDOR_FROM_DATABASE=NetFrame Systems Inc + +pci:v00001008* + ID_VENDOR_FROM_DATABASE=Epson + +pci:v0000100A* + ID_VENDOR_FROM_DATABASE=Phoenix Technologies + +pci:v0000100B* + ID_VENDOR_FROM_DATABASE=National Semiconductor Corporation + +pci:v0000100Bd00000001* + ID_MODEL_FROM_DATABASE=DP83810 + +pci:v0000100Bd00000002* + ID_MODEL_FROM_DATABASE=87415/87560 IDE + +pci:v0000100Bd0000000E* + ID_MODEL_FROM_DATABASE=87560 Legacy I/O + +pci:v0000100Bd0000000F* + ID_MODEL_FROM_DATABASE=FireWire Controller + +pci:v0000100Bd00000011* + ID_MODEL_FROM_DATABASE=NS87560 National PCI System I/O + +pci:v0000100Bd00000012* + ID_MODEL_FROM_DATABASE=USB Controller + +pci:v0000100Bd00000020* + ID_MODEL_FROM_DATABASE=DP83815 (MacPhyter) Ethernet Controller + +pci:v0000100Bd00000020sv0000103Csd00000024* + ID_MODEL_FROM_DATABASE=Pavilion ze4400 builtin Network + +pci:v0000100Bd00000020sv000012D9sd0000000C* + ID_MODEL_FROM_DATABASE=Aculab E1/T1 PMXc cPCI carrier card + +pci:v0000100Bd00000020sv00001385sd0000F311* + ID_MODEL_FROM_DATABASE=FA311 / FA312 (FA311 with WoL HW) + +pci:v0000100Bd00000020sv00001385sd0000F312* + ID_MODEL_FROM_DATABASE=FA312 (rev. A1) Fast Ethernet PCI Adapter + +pci:v0000100Bd00000021* + ID_MODEL_FROM_DATABASE=PC87200 PCI to ISA Bridge + +pci:v0000100Bd00000022* + ID_MODEL_FROM_DATABASE=DP83820 10/100/1000 Ethernet Controller + +pci:v0000100Bd00000022sv00001186sd00004900* + ID_MODEL_FROM_DATABASE=DGE-500T + +pci:v0000100Bd00000022sv00001385sd0000621A* + ID_MODEL_FROM_DATABASE=GA621 + +pci:v0000100Bd00000022sv00001385sd0000622A* + ID_MODEL_FROM_DATABASE=GA622T + +pci:v0000100Bd00000028* + ID_MODEL_FROM_DATABASE=Geode GX2 Host Bridge + +pci:v0000100Bd0000002A* + ID_MODEL_FROM_DATABASE=CS5535 South Bridge + +pci:v0000100Bd0000002B* + ID_MODEL_FROM_DATABASE=CS5535 ISA bridge + +pci:v0000100Bd0000002D* + ID_MODEL_FROM_DATABASE=CS5535 IDE + +pci:v0000100Bd0000002E* + ID_MODEL_FROM_DATABASE=CS5535 Audio + +pci:v0000100Bd0000002F* + ID_MODEL_FROM_DATABASE=CS5535 USB + +pci:v0000100Bd00000030* + ID_MODEL_FROM_DATABASE=Geode GX2 Graphics Processor + +pci:v0000100Bd00000035* + ID_MODEL_FROM_DATABASE=DP83065 [Saturn] 10/100/1000 Ethernet Controller + +pci:v0000100Bd00000500* + ID_MODEL_FROM_DATABASE=SCx200 Bridge + +pci:v0000100Bd00000501* + ID_MODEL_FROM_DATABASE=SCx200 SMI + +pci:v0000100Bd00000502* + ID_MODEL_FROM_DATABASE=SCx200, SC1100 IDE controller + +pci:v0000100Bd00000502sv0000100Bsd00000502* + ID_MODEL_FROM_DATABASE=IDE Controller + +pci:v0000100Bd00000503* + ID_MODEL_FROM_DATABASE=SCx200, SC1100 Audio Controller + +pci:v0000100Bd00000503sv0000100Bsd00000503* + ID_MODEL_FROM_DATABASE=XpressAudio controller + +pci:v0000100Bd00000504* + ID_MODEL_FROM_DATABASE=SCx200 Video + +pci:v0000100Bd00000505* + ID_MODEL_FROM_DATABASE=SCx200 XBus + +pci:v0000100Bd00000510* + ID_MODEL_FROM_DATABASE=SC1100 Bridge + +pci:v0000100Bd00000510sv0000100Bsd00000500* + ID_MODEL_FROM_DATABASE=GPIO and LPC support bridge + +pci:v0000100Bd00000511* + ID_MODEL_FROM_DATABASE=SC1100 SMI & ACPI + +pci:v0000100Bd00000511sv0000100Bsd00000501* + ID_MODEL_FROM_DATABASE=SC1100 SMI & ACPI bridge + +pci:v0000100Bd00000515* + ID_MODEL_FROM_DATABASE=SC1100 XBus + +pci:v0000100Bd00000515sv0000100Bsd00000505* + ID_MODEL_FROM_DATABASE=SC1100 PCI to XBus bridge + +pci:v0000100Bd0000D001* + ID_MODEL_FROM_DATABASE=87410 IDE + +pci:v0000100C* + ID_VENDOR_FROM_DATABASE=Tseng Labs Inc + +pci:v0000100Cd00003202* + ID_MODEL_FROM_DATABASE=ET4000/W32p rev A + +pci:v0000100Cd00003205* + ID_MODEL_FROM_DATABASE=ET4000/W32p rev B + +pci:v0000100Cd00003206* + ID_MODEL_FROM_DATABASE=ET4000/W32p rev C + +pci:v0000100Cd00003207* + ID_MODEL_FROM_DATABASE=ET4000/W32p rev D + +pci:v0000100Cd00003208* + ID_MODEL_FROM_DATABASE=ET6000 + +pci:v0000100Cd00004702* + ID_MODEL_FROM_DATABASE=ET6300 + +pci:v0000100D* + ID_VENDOR_FROM_DATABASE=AST Research Inc + +pci:v0000100E* + ID_VENDOR_FROM_DATABASE=Weitek + +pci:v0000100Ed00009000* + ID_MODEL_FROM_DATABASE=P9000 Viper + +pci:v0000100Ed00009001* + ID_MODEL_FROM_DATABASE=P9000 Viper + +pci:v0000100Ed00009002* + ID_MODEL_FROM_DATABASE=P9000 Viper + +pci:v0000100Ed00009100* + ID_MODEL_FROM_DATABASE=P9100 Viper Pro/SE + +pci:v00001010* + ID_VENDOR_FROM_DATABASE=Video Logic, Ltd. + +pci:v00001011* + ID_VENDOR_FROM_DATABASE=Digital Equipment Corporation + +pci:v00001011d00000001* + ID_MODEL_FROM_DATABASE=DECchip 21050 + +pci:v00001011d00000002* + ID_MODEL_FROM_DATABASE=DECchip 21040 [Tulip] + +pci:v00001011d00000004* + ID_MODEL_FROM_DATABASE=DECchip 21030 [TGA] + +pci:v00001011d00000007* + ID_MODEL_FROM_DATABASE=NVRAM [Zephyr NVRAM] + +pci:v00001011d00000008* + ID_MODEL_FROM_DATABASE=KZPSA [KZPSA] + +pci:v00001011d00000009* + ID_MODEL_FROM_DATABASE=DECchip 21140 [FasterNet] + +pci:v00001011d00000009sv00001025sd00000310* + ID_MODEL_FROM_DATABASE=21140 Fast Ethernet + +pci:v00001011d00000009sv000010B8sd00002001* + ID_MODEL_FROM_DATABASE=SMC9332BDT EtherPower 10/100 + +pci:v00001011d00000009sv000010B8sd00002002* + ID_MODEL_FROM_DATABASE=SMC9332BVT EtherPower T4 10/100 + +pci:v00001011d00000009sv000010B8sd00002003* + ID_MODEL_FROM_DATABASE=SMC9334BDT EtherPower 10/100 (1-port) + +pci:v00001011d00000009sv00001109sd00002400* + ID_MODEL_FROM_DATABASE=ANA-6944A/TX Fast Ethernet + +pci:v00001011d00000009sv00001112sd00002300* + ID_MODEL_FROM_DATABASE=RNS2300 Fast Ethernet + +pci:v00001011d00000009sv00001112sd00002320* + ID_MODEL_FROM_DATABASE=RNS2320 Fast Ethernet + +pci:v00001011d00000009sv00001112sd00002340* + ID_MODEL_FROM_DATABASE=RNS2340 Fast Ethernet + +pci:v00001011d00000009sv00001113sd00001207* + ID_MODEL_FROM_DATABASE=EN-1207-TX Fast Ethernet + +pci:v00001011d00000009sv00001186sd00001100* + ID_MODEL_FROM_DATABASE=DFE-500TX Fast Ethernet + +pci:v00001011d00000009sv00001186sd00001112* + ID_MODEL_FROM_DATABASE=DFE-570TX Fast Ethernet + +pci:v00001011d00000009sv00001186sd00001140* + ID_MODEL_FROM_DATABASE=DFE-660 Cardbus Ethernet 10/100 + +pci:v00001011d00000009sv00001186sd00001142* + ID_MODEL_FROM_DATABASE=DFE-660 Cardbus Ethernet 10/100 + +pci:v00001011d00000009sv000011F6sd00000503* + ID_MODEL_FROM_DATABASE=Freedomline Fast Ethernet + +pci:v00001011d00000009sv00001282sd00009100* + ID_MODEL_FROM_DATABASE=AEF-380TXD Fast Ethernet + +pci:v00001011d00000009sv00001385sd00001100* + ID_MODEL_FROM_DATABASE=FA310TX Fast Ethernet + +pci:v00001011d00000009sv00002646sd00000001* + ID_MODEL_FROM_DATABASE=KNE100TX Fast Ethernet + +pci:v00001011d0000000A* + ID_MODEL_FROM_DATABASE=21230 Video Codec + +pci:v00001011d0000000D* + ID_MODEL_FROM_DATABASE=PBXGB [TGA2] + +pci:v00001011d0000000F* + ID_MODEL_FROM_DATABASE=PCI-to-PDQ Interface Chip [PFI] + +pci:v00001011d0000000Fsv00001011sd0000DEF1* + ID_MODEL_FROM_DATABASE=FDDI controller (DEFPA) + +pci:v00001011d0000000Fsv0000103Csd0000DEF1* + ID_MODEL_FROM_DATABASE=FDDI controller (3X-DEFPA) + +pci:v00001011d00000014* + ID_MODEL_FROM_DATABASE=DECchip 21041 [Tulip Pass 3] + +pci:v00001011d00000014sv00001186sd00000100* + ID_MODEL_FROM_DATABASE=DE-530+ + +pci:v00001011d00000016* + ID_MODEL_FROM_DATABASE=DGLPB [OPPO] + +pci:v00001011d00000017* + ID_MODEL_FROM_DATABASE=PV-PCI Graphics Controller (ZLXp-L) + +pci:v00001011d00000018* + ID_MODEL_FROM_DATABASE=Memory Channel interface + +pci:v00001011d00000019* + ID_MODEL_FROM_DATABASE=DECchip 21142/43 + +pci:v00001011d00000019sv00001011sd0000500A* + ID_MODEL_FROM_DATABASE=DE500A Fast Ethernet + +pci:v00001011d00000019sv00001011sd0000500B* + ID_MODEL_FROM_DATABASE=DE500B Fast Ethernet + +pci:v00001011d00000019sv00001014sd00000001* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus + +pci:v00001011d00000019sv00001025sd00000315* + ID_MODEL_FROM_DATABASE=ALN315 Fast Ethernet + +pci:v00001011d00000019sv00001033sd0000800C* + ID_MODEL_FROM_DATABASE=PC-9821-CS01 100BASE-TX Interface Card + +pci:v00001011d00000019sv00001033sd0000800D* + ID_MODEL_FROM_DATABASE=PC-9821NR-B06 100BASE-TX Interface Card + +pci:v00001011d00000019sv0000103Csd0000125A* + ID_MODEL_FROM_DATABASE=10/100Base-TX (PCI) [A5506B] + +pci:v00001011d00000019sv0000108Dsd00000016* + ID_MODEL_FROM_DATABASE=Rapidfire 2327 10/100 Ethernet + +pci:v00001011d00000019sv0000108Dsd00000017* + ID_MODEL_FROM_DATABASE=GoCard 2250 Ethernet 10/100 Cardbus + +pci:v00001011d00000019sv000010B8sd00002005* + ID_MODEL_FROM_DATABASE=SMC8032DT Extreme Ethernet 10/100 + +pci:v00001011d00000019sv000010B8sd00008034* + ID_MODEL_FROM_DATABASE=SMC8034 Extreme Ethernet 10/100 + +pci:v00001011d00000019sv000010EFsd00008169* + ID_MODEL_FROM_DATABASE=Cardbus Fast Ethernet + +pci:v00001011d00000019sv00001109sd00002A00* + ID_MODEL_FROM_DATABASE=ANA-6911A/TX Fast Ethernet + +pci:v00001011d00000019sv00001109sd00002B00* + ID_MODEL_FROM_DATABASE=ANA-6911A/TXC Fast Ethernet + +pci:v00001011d00000019sv00001109sd00003000* + ID_MODEL_FROM_DATABASE=ANA-6922/TX Fast Ethernet + +pci:v00001011d00000019sv00001113sd00001207* + ID_MODEL_FROM_DATABASE=Cheetah Fast Ethernet + +pci:v00001011d00000019sv00001113sd00002220* + ID_MODEL_FROM_DATABASE=Cardbus Fast Ethernet + +pci:v00001011d00000019sv0000115Dsd00000002* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v00001011d00000019sv00001179sd00000203* + ID_MODEL_FROM_DATABASE=Fast Ethernet + +pci:v00001011d00000019sv00001179sd00000204* + ID_MODEL_FROM_DATABASE=Cardbus Fast Ethernet + +pci:v00001011d00000019sv00001186sd00001100* + ID_MODEL_FROM_DATABASE=DFE-500TX Fast Ethernet + +pci:v00001011d00000019sv00001186sd00001101* + ID_MODEL_FROM_DATABASE=DFE-500TX Fast Ethernet + +pci:v00001011d00000019sv00001186sd00001102* + ID_MODEL_FROM_DATABASE=DFE-500TX Fast Ethernet + +pci:v00001011d00000019sv00001186sd00001112* + ID_MODEL_FROM_DATABASE=DFE-570TX Quad Fast Ethernet + +pci:v00001011d00000019sv00001259sd00002800* + ID_MODEL_FROM_DATABASE=AT-2800Tx Fast Ethernet + +pci:v00001011d00000019sv00001266sd00000004* + ID_MODEL_FROM_DATABASE=Eagle Fast EtherMAX + +pci:v00001011d00000019sv000012AFsd00000019* + ID_MODEL_FROM_DATABASE=NetFlyer Cardbus Fast Ethernet + +pci:v00001011d00000019sv00001374sd00000001* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet Card 10/100 + +pci:v00001011d00000019sv00001374sd00000002* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet Card 10/100 + +pci:v00001011d00000019sv00001374sd00000007* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet Card 10/100 + +pci:v00001011d00000019sv00001374sd00000008* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet Card 10/100 + +pci:v00001011d00000019sv00001385sd00002100* + ID_MODEL_FROM_DATABASE=FA510 + +pci:v00001011d00000019sv00001395sd00000001* + ID_MODEL_FROM_DATABASE=10/100 Ethernet CardBus PC Card + +pci:v00001011d00000019sv000013D1sd0000AB01* + ID_MODEL_FROM_DATABASE=EtherFast 10/100 Cardbus (PCMPC200) + +pci:v00001011d00000019sv00001498sd0000000A* + ID_MODEL_FROM_DATABASE=TPMC880-10 10/100Base-T and 10Base2 PMC Ethernet Adapter + +pci:v00001011d00000019sv00001498sd0000000B* + ID_MODEL_FROM_DATABASE=TPMC880-11 Single 10/100Base-T PMC Ethernet Adapter + +pci:v00001011d00000019sv00001498sd0000000C* + ID_MODEL_FROM_DATABASE=TPMC880-12 Single 10Base2 PMC Ethernet Adapter + +pci:v00001011d00000019sv000014CBsd00000100* + ID_MODEL_FROM_DATABASE=LNDL-100N 100Base-TX Ethernet PC Card + +pci:v00001011d00000019sv00001668sd00002000* + ID_MODEL_FROM_DATABASE=FastNet Pro (PE2000) + +pci:v00001011d00000019sv00002646sd00000001* + ID_MODEL_FROM_DATABASE=KNE100TX + +pci:v00001011d00000019sv00002646sd00000002* + ID_MODEL_FROM_DATABASE=KNE-CB4TX + +pci:v00001011d00000019sv00008086sd00000001* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Mobile CardBus 32 + +pci:v00001011d0000001A* + ID_MODEL_FROM_DATABASE=Farallon PN9000SX Gigabit Ethernet + +pci:v00001011d00000021* + ID_MODEL_FROM_DATABASE=DECchip 21052 + +pci:v00001011d00000022* + ID_MODEL_FROM_DATABASE=DECchip 21150 + +pci:v00001011d00000023* + ID_MODEL_FROM_DATABASE=DECchip 21150 + +pci:v00001011d00000024* + ID_MODEL_FROM_DATABASE=DECchip 21152 + +pci:v00001011d00000025* + ID_MODEL_FROM_DATABASE=DECchip 21153 + +pci:v00001011d00000026* + ID_MODEL_FROM_DATABASE=DECchip 21154 + +pci:v00001011d00000034* + ID_MODEL_FROM_DATABASE=56k Modem Cardbus + +pci:v00001011d00000034sv00001374sd00000003* + ID_MODEL_FROM_DATABASE=56k Modem Cardbus + +pci:v00001011d00000045* + ID_MODEL_FROM_DATABASE=DECchip 21553 + +pci:v00001011d00000046* + ID_MODEL_FROM_DATABASE=DECchip 21554 + +pci:v00001011d00000046sv00000E11sd00004050* + ID_MODEL_FROM_DATABASE=Smart Array 4200 Controller + +pci:v00001011d00000046sv00000E11sd00004051* + ID_MODEL_FROM_DATABASE=Smart Array 4250ES Controller + +pci:v00001011d00000046sv00000E11sd00004058* + ID_MODEL_FROM_DATABASE=Smart Array 431 Controller + +pci:v00001011d00000046sv0000103Csd000010C2* + ID_MODEL_FROM_DATABASE=NetRAID-4M + +pci:v00001011d00000046sv000012D9sd0000000A* + ID_MODEL_FROM_DATABASE=IP Telephony card + +pci:v00001011d00000046sv00004C53sd00001050* + ID_MODEL_FROM_DATABASE=CT7 mainboard + +pci:v00001011d00000046sv00004C53sd00001051* + ID_MODEL_FROM_DATABASE=CE7 mainboard + +pci:v00001011d00000046sv00009005sd00000364* + ID_MODEL_FROM_DATABASE=5400S (Mustang) + +pci:v00001011d00000046sv00009005sd00000365* + ID_MODEL_FROM_DATABASE=5400S (Mustang) + +pci:v00001011d00000046sv00009005sd00001364* + ID_MODEL_FROM_DATABASE=Dell PowerEdge RAID Controller 2 + +pci:v00001011d00000046sv00009005sd00001365* + ID_MODEL_FROM_DATABASE=Dell PowerEdge RAID Controller 2 + +pci:v00001011d00000046sv0000E4BFsd00001000* + ID_MODEL_FROM_DATABASE=CC8-1-BLUES + +pci:v00001011d00001065* + ID_MODEL_FROM_DATABASE=StrongARM DC21285 + +pci:v00001011d00001065sv00001069sd00000020* + ID_MODEL_FROM_DATABASE=DAC960P / DAC1164P + +pci:v00001012* + ID_VENDOR_FROM_DATABASE=Micronics Computers Inc + +pci:v00001013* + ID_VENDOR_FROM_DATABASE=Cirrus Logic + +pci:v00001013d00000038* + ID_MODEL_FROM_DATABASE=GD 7548 + +pci:v00001013d00000040* + ID_MODEL_FROM_DATABASE=GD 7555 Flat Panel GUI Accelerator + +pci:v00001013d0000004C* + ID_MODEL_FROM_DATABASE=GD 7556 Video/Graphics LCD/CRT Ctrlr + +pci:v00001013d000000A0* + ID_MODEL_FROM_DATABASE=GD 5430/40 [Alpine] + +pci:v00001013d000000A2* + ID_MODEL_FROM_DATABASE=GD 5432 [Alpine] + +pci:v00001013d000000A4* + ID_MODEL_FROM_DATABASE=GD 5434-4 [Alpine] + +pci:v00001013d000000A8* + ID_MODEL_FROM_DATABASE=GD 5434-8 [Alpine] + +pci:v00001013d000000AC* + ID_MODEL_FROM_DATABASE=GD 5436 [Alpine] + +pci:v00001013d000000B0* + ID_MODEL_FROM_DATABASE=GD 5440 + +pci:v00001013d000000B8* + ID_MODEL_FROM_DATABASE=GD 5446 + +pci:v00001013d000000BC* + ID_MODEL_FROM_DATABASE=GD 5480 + +pci:v00001013d000000BCsv00001013sd000000BC* + ID_MODEL_FROM_DATABASE=CL-GD5480 + +pci:v00001013d000000D0* + ID_MODEL_FROM_DATABASE=GD 5462 + +pci:v00001013d000000D2* + ID_MODEL_FROM_DATABASE=GD 5462 [Laguna I] + +pci:v00001013d000000D4* + ID_MODEL_FROM_DATABASE=GD 5464 [Laguna] + +pci:v00001013d000000D5* + ID_MODEL_FROM_DATABASE=GD 5464 BD [Laguna] + +pci:v00001013d000000D6* + ID_MODEL_FROM_DATABASE=GD 5465 [Laguna] + +pci:v00001013d000000D6sv000013CEsd00008031* + ID_MODEL_FROM_DATABASE=Barco Metheus 2 Megapixel, Dual Head + +pci:v00001013d000000D6sv000013CFsd00008031* + ID_MODEL_FROM_DATABASE=Barco Metheus 2 Megapixel, Dual Head + +pci:v00001013d000000E8* + ID_MODEL_FROM_DATABASE=GD 5436U + +pci:v00001013d00001100* + ID_MODEL_FROM_DATABASE=CL 6729 + +pci:v00001013d00001110* + ID_MODEL_FROM_DATABASE=PD 6832 PCMCIA/CardBus Ctrlr + +pci:v00001013d00001112* + ID_MODEL_FROM_DATABASE=PD 6834 PCMCIA/CardBus Ctrlr + +pci:v00001013d00001113* + ID_MODEL_FROM_DATABASE=PD 6833 PCMCIA/CardBus Ctrlr + +pci:v00001013d00001200* + ID_MODEL_FROM_DATABASE=GD 7542 [Nordic] + +pci:v00001013d00001202* + ID_MODEL_FROM_DATABASE=GD 7543 [Viking] + +pci:v00001013d00001204* + ID_MODEL_FROM_DATABASE=GD 7541 [Nordic Light] + +pci:v00001013d00004000* + ID_MODEL_FROM_DATABASE=MD 5620 [CLM Data Fax Voice] + +pci:v00001013d00004400* + ID_MODEL_FROM_DATABASE=CD 4400 + +pci:v00001013d00006001* + ID_MODEL_FROM_DATABASE=CS 4610/11 [CrystalClear SoundFusion Audio Accelerator] + +pci:v00001013d00006001sv00001014sd00001010* + ID_MODEL_FROM_DATABASE=CS4610 SoundFusion Audio Accelerator + +pci:v00001013d00006003* + ID_MODEL_FROM_DATABASE=CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator] + +pci:v00001013d00006003sv00001013sd00004280* + ID_MODEL_FROM_DATABASE=Crystal SoundFusion PCI Audio Accelerator + +pci:v00001013d00006003sv00001014sd00000153* + ID_MODEL_FROM_DATABASE=ThinkPad 600X/A20m + +pci:v00001013d00006003sv0000153Bsd0000112E* + ID_MODEL_FROM_DATABASE=DMX XFire 1024 + +pci:v00001013d00006003sv0000153Bsd00001136* + ID_MODEL_FROM_DATABASE=SiXPack 5.1+ + +pci:v00001013d00006003sv00001681sd00000050* + ID_MODEL_FROM_DATABASE=Game Theater XP + +pci:v00001013d00006003sv00001681sd0000A010* + ID_MODEL_FROM_DATABASE=Gamesurround Fortissimo II + +pci:v00001013d00006003sv00001681sd0000A011* + ID_MODEL_FROM_DATABASE=Gamesurround Fortissimo III 7.1 + +pci:v00001013d00006003sv00005053sd00003357* + ID_MODEL_FROM_DATABASE=Santa Cruz + +pci:v00001013d00006004* + ID_MODEL_FROM_DATABASE=CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] + +pci:v00001013d00006005* + ID_MODEL_FROM_DATABASE=Crystal CS4281 PCI Audio + +pci:v00001013d00006005sv00001013sd00004281* + ID_MODEL_FROM_DATABASE=Crystal CS4281 PCI Audio + +pci:v00001013d00006005sv000010CFsd000010A8* + ID_MODEL_FROM_DATABASE=Crystal CS4281 PCI Audio + +pci:v00001013d00006005sv000010CFsd000010A9* + ID_MODEL_FROM_DATABASE=Crystal CS4281 PCI Audio + +pci:v00001013d00006005sv000010CFsd000010AA* + ID_MODEL_FROM_DATABASE=Crystal CS4281 PCI Audio + +pci:v00001013d00006005sv000010CFsd000010AB* + ID_MODEL_FROM_DATABASE=Crystal CS4281 PCI Audio + +pci:v00001013d00006005sv000010CFsd000010AC* + ID_MODEL_FROM_DATABASE=Crystal CS4281 PCI Audio + +pci:v00001013d00006005sv000010CFsd000010AD* + ID_MODEL_FROM_DATABASE=Crystal CS4281 PCI Audio + +pci:v00001013d00006005sv000010CFsd000010B4* + ID_MODEL_FROM_DATABASE=Crystal CS4281 PCI Audio + +pci:v00001013d00006005sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Crystal CS4281 PCI Audio + +pci:v00001013d00006005sv000014C0sd0000000C* + ID_MODEL_FROM_DATABASE=Crystal CS4281 PCI Audio + +pci:v00001014* + ID_VENDOR_FROM_DATABASE=IBM + +pci:v00001014d00000002* + ID_MODEL_FROM_DATABASE=PCI to MCA Bridge + +pci:v00001014d00000005* + ID_MODEL_FROM_DATABASE=Processor to I/O Controller [Alta Lite] + +pci:v00001014d00000007* + ID_MODEL_FROM_DATABASE=Processor to I/O Controller [Alta MP] + +pci:v00001014d0000000A* + ID_MODEL_FROM_DATABASE=PCI to ISA Bridge (IBM27-82376) [Fire Coral] + +pci:v00001014d00000017* + ID_MODEL_FROM_DATABASE=CPU to PCI Bridge + +pci:v00001014d00000018* + ID_MODEL_FROM_DATABASE=TR Auto LANstreamer + +pci:v00001014d0000001B* + ID_MODEL_FROM_DATABASE=GXT-150P + +pci:v00001014d0000001C* + ID_MODEL_FROM_DATABASE=Carrera + +pci:v00001014d0000001D* + ID_MODEL_FROM_DATABASE=SCSI-2 FAST PCI Adapter (82G2675) + +pci:v00001014d00000020* + ID_MODEL_FROM_DATABASE=GXT1000 Graphics Adapter + +pci:v00001014d00000022* + ID_MODEL_FROM_DATABASE=PCI to PCI Bridge (IBM27-82351) + +pci:v00001014d0000002D* + ID_MODEL_FROM_DATABASE=Processor to I/O Controller [Python] + +pci:v00001014d0000002E* + ID_MODEL_FROM_DATABASE=SCSI RAID Adapter [ServeRAID] + +pci:v00001014d0000002Esv00001014sd0000002E* + ID_MODEL_FROM_DATABASE=ServeRAID-3x + +pci:v00001014d0000002Esv00001014sd0000022E* + ID_MODEL_FROM_DATABASE=ServeRAID-4H + +pci:v00001014d00000031* + ID_MODEL_FROM_DATABASE=2 Port Serial Adapter + +pci:v00001014d00000031sv00001014sd00000031* + ID_MODEL_FROM_DATABASE=2721 WAN IOA - 2 Port Sync Serial Adapter + +pci:v00001014d00000036* + ID_MODEL_FROM_DATABASE=PCI to 32-bit LocalBus Bridge [Miami] + +pci:v00001014d00000037* + ID_MODEL_FROM_DATABASE=PowerPC to PCI Bridge (IBM27-82660) + +pci:v00001014d0000003A* + ID_MODEL_FROM_DATABASE=CPU to PCI Bridge + +pci:v00001014d0000003C* + ID_MODEL_FROM_DATABASE=GXT250P/GXT255P Graphics Adapter + +pci:v00001014d0000003E* + ID_MODEL_FROM_DATABASE=16/4 Token ring UTP/STP controller + +pci:v00001014d0000003Esv00001014sd0000003E* + ID_MODEL_FROM_DATABASE=Token-Ring Adapter + +pci:v00001014d0000003Esv00001014sd000000CD* + ID_MODEL_FROM_DATABASE=Token-Ring Adapter + Wake-On-LAN + +pci:v00001014d0000003Esv00001014sd000000CE* + ID_MODEL_FROM_DATABASE=16/4 Token-Ring Adapter 2 + +pci:v00001014d0000003Esv00001014sd000000CF* + ID_MODEL_FROM_DATABASE=16/4 Token-Ring Adapter Special + +pci:v00001014d0000003Esv00001014sd000000E4* + ID_MODEL_FROM_DATABASE=High-Speed 100/16/4 Token-Ring Adapter + +pci:v00001014d0000003Esv00001014sd000000E5* + ID_MODEL_FROM_DATABASE=16/4 Token-Ring Adapter 2 + Wake-On-LAN + +pci:v00001014d0000003Esv00001014sd0000016D* + ID_MODEL_FROM_DATABASE=iSeries 2744 Card + +pci:v00001014d00000045* + ID_MODEL_FROM_DATABASE=SSA Adapter + +pci:v00001014d00000046* + ID_MODEL_FROM_DATABASE=MPIC interrupt controller + +pci:v00001014d00000047* + ID_MODEL_FROM_DATABASE=PCI to PCI Bridge + +pci:v00001014d00000048* + ID_MODEL_FROM_DATABASE=PCI to PCI Bridge + +pci:v00001014d00000049* + ID_MODEL_FROM_DATABASE=Warhead SCSI Controller + +pci:v00001014d0000004E* + ID_MODEL_FROM_DATABASE=ATM Controller (14104e00) + +pci:v00001014d0000004F* + ID_MODEL_FROM_DATABASE=ATM Controller (14104f00) + +pci:v00001014d00000050* + ID_MODEL_FROM_DATABASE=ATM Controller (14105000) + +pci:v00001014d00000053* + ID_MODEL_FROM_DATABASE=25 MBit ATM Controller + +pci:v00001014d00000054* + ID_MODEL_FROM_DATABASE=GXT500P/GXT550P Graphics Adapter + +pci:v00001014d00000057* + ID_MODEL_FROM_DATABASE=MPEG PCI Bridge + +pci:v00001014d00000058* + ID_MODEL_FROM_DATABASE=SSA Adapter [Advanced SerialRAID/X] + +pci:v00001014d0000005E* + ID_MODEL_FROM_DATABASE=GXT800P Graphics Adapter + +pci:v00001014d0000007C* + ID_MODEL_FROM_DATABASE=ATM Controller (14107c00) + +pci:v00001014d0000007D* + ID_MODEL_FROM_DATABASE=3780IDSP [MWave] + +pci:v00001014d0000008B* + ID_MODEL_FROM_DATABASE=EADS PCI to PCI Bridge + +pci:v00001014d0000008E* + ID_MODEL_FROM_DATABASE=GXT3000P Graphics Adapter + +pci:v00001014d00000090* + ID_MODEL_FROM_DATABASE=GXT 3000P + +pci:v00001014d00000090sv00001014sd0000008E* + ID_MODEL_FROM_DATABASE=GXT-3000P + +pci:v00001014d00000091* + ID_MODEL_FROM_DATABASE=SSA Adapter + +pci:v00001014d00000095* + ID_MODEL_FROM_DATABASE=20H2999 PCI Docking Bridge + +pci:v00001014d00000096* + ID_MODEL_FROM_DATABASE=Chukar chipset SCSI controller + +pci:v00001014d00000096sv00001014sd00000097* + ID_MODEL_FROM_DATABASE=iSeries 2778 DASD IOA + +pci:v00001014d00000096sv00001014sd00000098* + ID_MODEL_FROM_DATABASE=iSeries 2763 DASD IOA + +pci:v00001014d00000096sv00001014sd00000099* + ID_MODEL_FROM_DATABASE=iSeries 2748 DASD IOA + +pci:v00001014d0000009F* + ID_MODEL_FROM_DATABASE=PCI 4758 Cryptographic Accelerator + +pci:v00001014d000000A5* + ID_MODEL_FROM_DATABASE=ATM Controller (1410a500) + +pci:v00001014d000000A6* + ID_MODEL_FROM_DATABASE=ATM 155MBPS MM Controller (1410a600) + +pci:v00001014d000000B7* + ID_MODEL_FROM_DATABASE=256-bit Graphics Rasterizer [FireGL1] + +pci:v00001014d000000B7sv00001092sd000000B8* + ID_MODEL_FROM_DATABASE=FireGL1 AGP 32Mb + +pci:v00001014d000000B8* + ID_MODEL_FROM_DATABASE=GXT2000P Graphics Adapter + +pci:v00001014d000000BE* + ID_MODEL_FROM_DATABASE=ATM 622MBPS Controller (1410be00) + +pci:v00001014d000000DC* + ID_MODEL_FROM_DATABASE=Advanced Systems Management Adapter (ASMA) + +pci:v00001014d000000FC* + ID_MODEL_FROM_DATABASE=CPC710 Dual Bridge and Memory Controller (PCI-64) + +pci:v00001014d00000105* + ID_MODEL_FROM_DATABASE=CPC710 Dual Bridge and Memory Controller (PCI-32) + +pci:v00001014d0000010F* + ID_MODEL_FROM_DATABASE=Remote Supervisor Adapter (RSA) + +pci:v00001014d00000142* + ID_MODEL_FROM_DATABASE=Yotta Video Compositor Input + +pci:v00001014d00000142sv00001014sd00000143* + ID_MODEL_FROM_DATABASE=Yotta Input Controller (ytin) + +pci:v00001014d00000144* + ID_MODEL_FROM_DATABASE=Yotta Video Compositor Output + +pci:v00001014d00000144sv00001014sd00000145* + ID_MODEL_FROM_DATABASE=Yotta Output Controller (ytout) + +pci:v00001014d00000156* + ID_MODEL_FROM_DATABASE=405GP PLB to PCI Bridge + +pci:v00001014d0000015E* + ID_MODEL_FROM_DATABASE=622Mbps ATM PCI Adapter + +pci:v00001014d00000160* + ID_MODEL_FROM_DATABASE=64bit/66MHz PCI ATM 155 MMF + +pci:v00001014d0000016E* + ID_MODEL_FROM_DATABASE=GXT4000P Graphics Adapter + +pci:v00001014d00000170* + ID_MODEL_FROM_DATABASE=GXT6000P Graphics Adapter + +pci:v00001014d0000017D* + ID_MODEL_FROM_DATABASE=GXT300P Graphics Adapter + +pci:v00001014d00000180* + ID_MODEL_FROM_DATABASE=Snipe chipset SCSI controller + +pci:v00001014d00000180sv00001014sd00000241* + ID_MODEL_FROM_DATABASE=iSeries 2757 DASD IOA + +pci:v00001014d00000180sv00001014sd00000264* + ID_MODEL_FROM_DATABASE=Quad Channel PCI-X U320 SCSI RAID Adapter (2780) + +pci:v00001014d00000188* + ID_MODEL_FROM_DATABASE=EADS-X PCI-X to PCI-X Bridge + +pci:v00001014d000001A7* + ID_MODEL_FROM_DATABASE=PCI-X to PCI-X Bridge + +pci:v00001014d000001BD* + ID_MODEL_FROM_DATABASE=ServeRAID Controller + +pci:v00001014d000001BDsv00001014sd000001BD* + ID_MODEL_FROM_DATABASE=ServeRAID 4Lx + +pci:v00001014d000001BDsv00001014sd000001BE* + ID_MODEL_FROM_DATABASE=ServeRAID-4M + +pci:v00001014d000001BDsv00001014sd000001BF* + ID_MODEL_FROM_DATABASE=ServeRAID-4L + +pci:v00001014d000001BDsv00001014sd00000208* + ID_MODEL_FROM_DATABASE=ServeRAID-4Mx + +pci:v00001014d000001BDsv00001014sd0000020E* + ID_MODEL_FROM_DATABASE=ServeRAID-4Lx + +pci:v00001014d000001BDsv00001014sd0000022E* + ID_MODEL_FROM_DATABASE=ServeRAID-4H + +pci:v00001014d000001BDsv00001014sd00000258* + ID_MODEL_FROM_DATABASE=ServeRAID-5i + +pci:v00001014d000001BDsv00001014sd00000259* + ID_MODEL_FROM_DATABASE=ServeRAID-5i + +pci:v00001014d000001C1* + ID_MODEL_FROM_DATABASE=64bit/66MHz PCI ATM 155 UTP + +pci:v00001014d000001E6* + ID_MODEL_FROM_DATABASE=Cryptographic Accelerator + +pci:v00001014d000001EF* + ID_MODEL_FROM_DATABASE=PowerPC 440GP PCI Bridge + +pci:v00001014d000001EFsv00001734sd0000102B* + ID_MODEL_FROM_DATABASE=PCEAS PCI-X Dual Port ESCON Adapter + +pci:v00001014d000001EFsv00001734sd000010F8* + ID_MODEL_FROM_DATABASE=PCEAT PCI-Express Dual Port ESCON Adapter + +pci:v00001014d000001FF* + ID_MODEL_FROM_DATABASE=10/100 Mbps Ethernet + +pci:v00001014d00000219* + ID_MODEL_FROM_DATABASE=Multiport Serial Adapter + +pci:v00001014d00000219sv00001014sd0000021A* + ID_MODEL_FROM_DATABASE=Dual RVX + +pci:v00001014d00000219sv00001014sd00000251* + ID_MODEL_FROM_DATABASE=Internal Modem/RVX + +pci:v00001014d00000219sv00001014sd00000252* + ID_MODEL_FROM_DATABASE=Quad Internal Modem + +pci:v00001014d0000021B* + ID_MODEL_FROM_DATABASE=GXT6500P Graphics Adapter + +pci:v00001014d0000021C* + ID_MODEL_FROM_DATABASE=GXT4500P Graphics Adapter + +pci:v00001014d00000233* + ID_MODEL_FROM_DATABASE=GXT135P Graphics Adapter + +pci:v00001014d0000028C* + ID_MODEL_FROM_DATABASE=Citrine chipset SCSI controller + +pci:v00001014d0000028Csv00001014sd0000028D* + ID_MODEL_FROM_DATABASE=Dual Channel PCI-X DDR SAS RAID Adapter (572E) + +pci:v00001014d0000028Csv00001014sd000002BE* + ID_MODEL_FROM_DATABASE=Dual Channel PCI-X DDR U320 SCSI RAID Adapter (571B) + +pci:v00001014d0000028Csv00001014sd000002C0* + ID_MODEL_FROM_DATABASE=Dual Channel PCI-X DDR U320 SCSI Adapter (571A) + +pci:v00001014d0000028Csv00001014sd0000030D* + ID_MODEL_FROM_DATABASE=PCI-X DDR Auxiliary Cache Adapter (575B) + +pci:v00001014d000002A1* + ID_MODEL_FROM_DATABASE=Calgary PCI-X Host Bridge + +pci:v00001014d000002BD* + ID_MODEL_FROM_DATABASE=Obsidian chipset SCSI controller + +pci:v00001014d000002BDsv00001014sd000002C1* + ID_MODEL_FROM_DATABASE=PCI-X DDR 3Gb SAS Adapter (572A/572C) + +pci:v00001014d000002BDsv00001014sd000002C2* + ID_MODEL_FROM_DATABASE=PCI-X DDR 3Gb SAS RAID Adapter (572B/571D) + +pci:v00001014d000002BDsv00001014sd00000338* + ID_MODEL_FROM_DATABASE=PCI-X DDR Auxiliary Cache Adapter (575C) + +pci:v00001014d00000302* + ID_MODEL_FROM_DATABASE=Winnipeg PCI-X Host Bridge + +pci:v00001014d00000308* + ID_MODEL_FROM_DATABASE=CalIOC2 PCI-E Root Port + +pci:v00001014d00000314* + ID_MODEL_FROM_DATABASE=ZISC 036 Neural accelerator card + +pci:v00001014d0000032D* + ID_MODEL_FROM_DATABASE=Axon - Cell Companion Chip + +pci:v00001014d0000032Dsv00001014sd000003A1* + ID_MODEL_FROM_DATABASE=PCIe PowerXCell 8i Cell Accelerator Board + +pci:v00001014d00000339* + ID_MODEL_FROM_DATABASE=Obsidian-E PCI-E SCSI controller + +pci:v00001014d00000339sv00001014sd0000030A* + ID_MODEL_FROM_DATABASE=PCIe 3Gb SAS RAID Adapter (574E) + +pci:v00001014d00000339sv00001014sd0000033A* + ID_MODEL_FROM_DATABASE=PCIe 3Gb SAS Adapter (57B3) + +pci:v00001014d00000339sv00001014sd0000035C* + ID_MODEL_FROM_DATABASE=PCIe x8 Internal 3Gb SAS adapter (57CC) + +pci:v00001014d00000339sv00001014sd00000360* + ID_MODEL_FROM_DATABASE=PCI-E Auxiliary Cache Adapter (57B7) + +pci:v00001014d0000033D* + ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (FPGA) + +pci:v00001014d0000033Dsv00001014sd0000033C* + ID_MODEL_FROM_DATABASE=PCIe2 1.8GB Cache 6Gb SAS RAID Adapter Tri-port (57B5) + +pci:v00001014d0000033Dsv00001014sd00000353* + ID_MODEL_FROM_DATABASE=PCIe2 3.1GB Cache 6Gb SAS RAID Enclosure (57C3) + +pci:v00001014d0000033Dsv00001014sd00000354* + ID_MODEL_FROM_DATABASE=PCIe2 6Gb SAS Adapter Dual-port (57C4) + +pci:v00001014d0000033Dsv00001014sd00000356* + ID_MODEL_FROM_DATABASE=PCIe2 1.8GB Cache 6Gb SAS RAID & SSD Adapter (574D) + +pci:v00001014d0000033Dsv00001014sd0000035F* + ID_MODEL_FROM_DATABASE=PCIe2 6Gb SAS Adapter Quad-port (57B2) + +pci:v00001014d0000034A* + ID_MODEL_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) + +pci:v00001014d0000034Asv00001014sd0000033B* + ID_MODEL_FROM_DATABASE=PCIe2 6Gb SAS RAID Adapter Quad-port (57B4) + +pci:v00001014d0000034Asv00001014sd00000355* + ID_MODEL_FROM_DATABASE=PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57B1) + +pci:v00001014d0000034Asv00001014sd00000357* + ID_MODEL_FROM_DATABASE=PCIe2 6Gb SAS Adapter Quad-port (57C6) + +pci:v00001014d0000034Asv00001014sd0000035D* + ID_MODEL_FROM_DATABASE=PCIe3 1.8GB Cache RAID SAS Adapter Quad-port 6GB (57C8) + +pci:v00001014d0000034Asv00001014sd0000035E* + ID_MODEL_FROM_DATABASE=PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57CE) + +pci:v00001014d0000034Asv00001014sd000003FB* + ID_MODEL_FROM_DATABASE=PCIe3 28GB Cache RAID SAS Enclosure 6Gb x 16 (57D5) + +pci:v00001014d00003022* + ID_MODEL_FROM_DATABASE=QLA3022 Network Adapter + +pci:v00001014d00004022* + ID_MODEL_FROM_DATABASE=QLA3022 Network Adapter + +pci:v00001014d0000FFFF* + ID_MODEL_FROM_DATABASE=MPIC-2 interrupt controller + +pci:v00001015* + ID_VENDOR_FROM_DATABASE=LSI Logic Corp of Canada + +pci:v00001016* + ID_VENDOR_FROM_DATABASE=ICL Personal Systems + +pci:v00001017* + ID_VENDOR_FROM_DATABASE=SPEA Software AG + +pci:v00001017d00005343* + ID_MODEL_FROM_DATABASE=SPEA 3D Accelerator + +pci:v00001018* + ID_VENDOR_FROM_DATABASE=Unisys Systems + +pci:v00001019* + ID_VENDOR_FROM_DATABASE=Elitegroup Computer Systems + +pci:v0000101A* + ID_VENDOR_FROM_DATABASE=AT&T GIS (NCR) + +pci:v0000101Ad00000005* + ID_MODEL_FROM_DATABASE=100VG ethernet + +pci:v0000101Ad00000007* + ID_MODEL_FROM_DATABASE=BYNET BIC4G/2C/2G + +pci:v0000101Ad00000007sv0000101Asd00000019* + ID_MODEL_FROM_DATABASE=BYNET BIC2C + +pci:v0000101Ad00000007sv0000101Asd0000001C* + ID_MODEL_FROM_DATABASE=BYNET BIC2G + +pci:v0000101Ad00000007sv0000101Asd0000001F* + ID_MODEL_FROM_DATABASE=BYNET BIC4G + +pci:v0000101Ad00000009* + ID_MODEL_FROM_DATABASE=PQS Memory Controller + +pci:v0000101Ad0000000A* + ID_MODEL_FROM_DATABASE=BYNET BPCI Adapter + +pci:v0000101Ad0000000B* + ID_MODEL_FROM_DATABASE=BYNET 4 Port BYA Switch (BYA4P) + +pci:v0000101Ad0000000C* + ID_MODEL_FROM_DATABASE=BYNET 4 Port BYA Switch (BYA4G) + +pci:v0000101Ad00000010* + ID_MODEL_FROM_DATABASE=NCR AMC Memory Controller + +pci:v0000101Ad00001DC1* + ID_MODEL_FROM_DATABASE=BYNET BIC2M/BIC4M/BYA4M + +pci:v0000101Ad00001DC1sv0000101Asd00000019* + ID_MODEL_FROM_DATABASE=BIC2M + +pci:v0000101Ad00001DC1sv0000101Asd0000001F* + ID_MODEL_FROM_DATABASE=BIC4M + +pci:v0000101Ad00001DC1sv0000101Asd00000ECE* + ID_MODEL_FROM_DATABASE=BYA4M + +pci:v0000101Ad00001FA8* + ID_MODEL_FROM_DATABASE=BYNET Multi-port BIC Adapter (XBIC Based) + +pci:v0000101Ad00001FA8sv0000101Asd000000C3* + ID_MODEL_FROM_DATABASE=BYNET BIC2SE + +pci:v0000101B* + ID_VENDOR_FROM_DATABASE=Vitesse Semiconductor + +pci:v0000101Bd00000452* + ID_MODEL_FROM_DATABASE=VSC452 [SuperBMC] + +pci:v0000101C* + ID_VENDOR_FROM_DATABASE=Western Digital + +pci:v0000101Cd00000193* + ID_MODEL_FROM_DATABASE=33C193A + +pci:v0000101Cd00000196* + ID_MODEL_FROM_DATABASE=33C196A + +pci:v0000101Cd00000197* + ID_MODEL_FROM_DATABASE=33C197A + +pci:v0000101Cd00000296* + ID_MODEL_FROM_DATABASE=33C296A + +pci:v0000101Cd00003193* + ID_MODEL_FROM_DATABASE=7193 + +pci:v0000101Cd00003197* + ID_MODEL_FROM_DATABASE=7197 + +pci:v0000101Cd00003296* + ID_MODEL_FROM_DATABASE=33C296A + +pci:v0000101Cd00004296* + ID_MODEL_FROM_DATABASE=34C296 + +pci:v0000101Cd00009710* + ID_MODEL_FROM_DATABASE=Pipeline 9710 + +pci:v0000101Cd00009712* + ID_MODEL_FROM_DATABASE=Pipeline 9712 + +pci:v0000101Cd0000C24A* + ID_MODEL_FROM_DATABASE=90C + +pci:v0000101D* + ID_VENDOR_FROM_DATABASE=Maxim Integrated Products + +pci:v0000101E* + ID_VENDOR_FROM_DATABASE=American Megatrends Inc. + +pci:v0000101Ed00000009* + ID_MODEL_FROM_DATABASE=MegaRAID 428 Ultra RAID Controller (rev 03) + +pci:v0000101Ed00001960* + ID_MODEL_FROM_DATABASE=MegaRAID + +pci:v0000101Ed00001960sv0000101Esd00000471* + ID_MODEL_FROM_DATABASE=MegaRAID 471 Enterprise 1600 RAID Controller + +pci:v0000101Ed00001960sv0000101Esd00000475* + ID_MODEL_FROM_DATABASE=MegaRAID 475 Express 500/500LC RAID Controller + +pci:v0000101Ed00001960sv0000101Esd00000477* + ID_MODEL_FROM_DATABASE=MegaRAID 477 Elite 3100 RAID Controller + +pci:v0000101Ed00001960sv0000101Esd00000493* + ID_MODEL_FROM_DATABASE=MegaRAID 493 Elite 1600 RAID Controller + +pci:v0000101Ed00001960sv0000101Esd00000494* + ID_MODEL_FROM_DATABASE=MegaRAID 494 Elite 1650 RAID Controller + +pci:v0000101Ed00001960sv0000101Esd00000503* + ID_MODEL_FROM_DATABASE=MegaRAID 503 Enterprise 1650 RAID Controller + +pci:v0000101Ed00001960sv0000101Esd00000511* + ID_MODEL_FROM_DATABASE=MegaRAID 511 i4 IDE RAID Controller + +pci:v0000101Ed00001960sv0000101Esd00000522* + ID_MODEL_FROM_DATABASE=MegaRAID 522 i4133 RAID Controller + +pci:v0000101Ed00001960sv00001028sd00000471* + ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller 3/QC + +pci:v0000101Ed00001960sv00001028sd00000475* + ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller 3/SC + +pci:v0000101Ed00001960sv00001028sd00000493* + ID_MODEL_FROM_DATABASE=PowerEdge RAID Controller 3/DC + +pci:v0000101Ed00001960sv00001028sd00000511* + ID_MODEL_FROM_DATABASE=PowerEdge Cost Effective RAID Controller ATA100/4Ch + +pci:v0000101Ed00001960sv0000103Csd000060E7* + ID_MODEL_FROM_DATABASE=NetRAID-1M + +pci:v0000101Ed00009010* + ID_MODEL_FROM_DATABASE=MegaRAID 428 Ultra RAID Controller + +pci:v0000101Ed00009030* + ID_MODEL_FROM_DATABASE=EIDE Controller + +pci:v0000101Ed00009031* + ID_MODEL_FROM_DATABASE=EIDE Controller + +pci:v0000101Ed00009032* + ID_MODEL_FROM_DATABASE=EIDE & SCSI Controller + +pci:v0000101Ed00009033* + ID_MODEL_FROM_DATABASE=SCSI Controller + +pci:v0000101Ed00009040* + ID_MODEL_FROM_DATABASE=Multimedia card + +pci:v0000101Ed00009060* + ID_MODEL_FROM_DATABASE=MegaRAID 434 Ultra GT RAID Controller + +pci:v0000101Ed00009063* + ID_MODEL_FROM_DATABASE=MegaRAC + +pci:v0000101Ed00009063sv0000101Esd00000767* + ID_MODEL_FROM_DATABASE=Dell Remote Assistant Card 2 + +pci:v0000101F* + ID_VENDOR_FROM_DATABASE=PictureTel + +pci:v00001020* + ID_VENDOR_FROM_DATABASE=Hitachi Computer Products + +pci:v00001021* + ID_VENDOR_FROM_DATABASE=OKI Electric Industry Co. Ltd. + +pci:v00001022* + ID_VENDOR_FROM_DATABASE=Advanced Micro Devices [AMD] + +pci:v00001022d00001100* + ID_MODEL_FROM_DATABASE=K8 [Athlon64/Opteron] HyperTransport Technology Configuration + +pci:v00001022d00001101* + ID_MODEL_FROM_DATABASE=K8 [Athlon64/Opteron] Address Map + +pci:v00001022d00001102* + ID_MODEL_FROM_DATABASE=K8 [Athlon64/Opteron] DRAM Controller + +pci:v00001022d00001103* + ID_MODEL_FROM_DATABASE=K8 [Athlon64/Opteron] Miscellaneous Control + +pci:v00001022d00001200* + ID_MODEL_FROM_DATABASE=Family 10h Processor HyperTransport Configuration + +pci:v00001022d00001201* + ID_MODEL_FROM_DATABASE=Family 10h Processor Address Map + +pci:v00001022d00001202* + ID_MODEL_FROM_DATABASE=Family 10h Processor DRAM Controller + +pci:v00001022d00001203* + ID_MODEL_FROM_DATABASE=Family 10h Processor Miscellaneous Control + +pci:v00001022d00001204* + ID_MODEL_FROM_DATABASE=Family 10h Processor Link Control + +pci:v00001022d00001300* + ID_MODEL_FROM_DATABASE=Family 11h Processor HyperTransport Configuration + +pci:v00001022d00001301* + ID_MODEL_FROM_DATABASE=Family 11h Processor Address Map + +pci:v00001022d00001302* + ID_MODEL_FROM_DATABASE=Family 11h Processor DRAM Controller + +pci:v00001022d00001303* + ID_MODEL_FROM_DATABASE=Family 11h Processor Miscellaneous Control + +pci:v00001022d00001304* + ID_MODEL_FROM_DATABASE=Family 11h Processor Link Control + +pci:v00001022d00001400* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Function 0 + +pci:v00001022d00001401* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Function 1 + +pci:v00001022d00001402* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Function 2 + +pci:v00001022d00001403* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Function 3 + +pci:v00001022d00001404* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Function 4 + +pci:v00001022d00001405* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Function 5 + +pci:v00001022d00001410* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Complex + +pci:v00001022d00001412* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Port + +pci:v00001022d00001413* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Port + +pci:v00001022d00001414* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Port + +pci:v00001022d00001415* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Port + +pci:v00001022d00001416* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Port + +pci:v00001022d00001417* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Port + +pci:v00001022d00001418* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Port + +pci:v00001022d00001419* + ID_MODEL_FROM_DATABASE=Family 15h (Models 10h-1fh) I/O Memory Management Unit + +pci:v00001022d00001439* + ID_MODEL_FROM_DATABASE=Family 16h Processor Functions 5:1 + +pci:v00001022d00001510* + ID_MODEL_FROM_DATABASE=Family 14h Processor Root Complex + +pci:v00001022d00001510sv0000174Bsd00001001* + ID_MODEL_FROM_DATABASE=Sapphire PURE Fusion Mini + +pci:v00001022d00001512* + ID_MODEL_FROM_DATABASE=Family 14h Processor Root Port + +pci:v00001022d00001512sv0000174Bsd00001001* + ID_MODEL_FROM_DATABASE=Sapphire PURE Fusion Mini + +pci:v00001022d00001513* + ID_MODEL_FROM_DATABASE=Family 14h Processor Root Port + +pci:v00001022d00001514* + ID_MODEL_FROM_DATABASE=Family 14h Processor Root Port + +pci:v00001022d00001515* + ID_MODEL_FROM_DATABASE=Family 14h Processor Root Port + +pci:v00001022d00001516* + ID_MODEL_FROM_DATABASE=Family 14h Processor Root Port + +pci:v00001022d00001530* + ID_MODEL_FROM_DATABASE=Family 16h Processor Function 0 + +pci:v00001022d00001531* + ID_MODEL_FROM_DATABASE=Family 16h Processor Function 1 + +pci:v00001022d00001532* + ID_MODEL_FROM_DATABASE=Family 16h Processor Function 2 + +pci:v00001022d00001533* + ID_MODEL_FROM_DATABASE=Family 16h Processor Function 3 + +pci:v00001022d00001534* + ID_MODEL_FROM_DATABASE=Family 16h Processor Function 4 + +pci:v00001022d00001535* + ID_MODEL_FROM_DATABASE=Family 16h Processor Function 5 + +pci:v00001022d00001536* + ID_MODEL_FROM_DATABASE=Family 16h Processor Root Complex + +pci:v00001022d00001538* + ID_MODEL_FROM_DATABASE=Family 16h Processor Function 0 + +pci:v00001022d00001600* + ID_MODEL_FROM_DATABASE=Family 15h Processor Function 0 + +pci:v00001022d00001601* + ID_MODEL_FROM_DATABASE=Family 15h Processor Function 1 + +pci:v00001022d00001602* + ID_MODEL_FROM_DATABASE=Family 15h Processor Function 2 + +pci:v00001022d00001603* + ID_MODEL_FROM_DATABASE=Family 15h Processor Function 3 + +pci:v00001022d00001604* + ID_MODEL_FROM_DATABASE=Family 15h Processor Function 4 + +pci:v00001022d00001605* + ID_MODEL_FROM_DATABASE=Family 15h Processor Function 5 + +pci:v00001022d00001700* + ID_MODEL_FROM_DATABASE=Family 12h/14h Processor Function 0 + +pci:v00001022d00001701* + ID_MODEL_FROM_DATABASE=Family 12h/14h Processor Function 1 + +pci:v00001022d00001702* + ID_MODEL_FROM_DATABASE=Family 12h/14h Processor Function 2 + +pci:v00001022d00001703* + ID_MODEL_FROM_DATABASE=Family 12h/14h Processor Function 3 + +pci:v00001022d00001704* + ID_MODEL_FROM_DATABASE=Family 12h/14h Processor Function 4 + +pci:v00001022d00001705* + ID_MODEL_FROM_DATABASE=Family 12h Processor Root Complex + +pci:v00001022d00001707* + ID_MODEL_FROM_DATABASE=Family 12h Processor Root Port + +pci:v00001022d00001708* + ID_MODEL_FROM_DATABASE=Family 12h Processor Root Port + +pci:v00001022d00001709* + ID_MODEL_FROM_DATABASE=Family 12h Processor Root Port + +pci:v00001022d0000170A* + ID_MODEL_FROM_DATABASE=Family 12h Processor Root Port + +pci:v00001022d0000170B* + ID_MODEL_FROM_DATABASE=Family 12h Processor Root Port + +pci:v00001022d0000170C* + ID_MODEL_FROM_DATABASE=Family 12h Processor Root Port + +pci:v00001022d0000170D* + ID_MODEL_FROM_DATABASE=Family 12h Processor Root Port + +pci:v00001022d00001716* + ID_MODEL_FROM_DATABASE=Family 12h/14h Processor Function 5 + +pci:v00001022d00001718* + ID_MODEL_FROM_DATABASE=Family 12h/14h Processor Function 6 + +pci:v00001022d00001719* + ID_MODEL_FROM_DATABASE=Family 12h/14h Processor Function 7 + +pci:v00001022d00002000* + ID_MODEL_FROM_DATABASE=79c970 [PCnet32 LANCE] + +pci:v00001022d00002000sv00001014sd00002000* + ID_MODEL_FROM_DATABASE=NetFinity 10/100 Fast Ethernet + +pci:v00001022d00002000sv00001022sd00002000* + ID_MODEL_FROM_DATABASE=PCnet - Fast 79C971 + +pci:v00001022d00002000sv0000103Csd0000104C* + ID_MODEL_FROM_DATABASE=Ethernet with LAN remote power Adapter + +pci:v00001022d00002000sv0000103Csd00001064* + ID_MODEL_FROM_DATABASE=Ethernet with LAN remote power Adapter + +pci:v00001022d00002000sv0000103Csd00001065* + ID_MODEL_FROM_DATABASE=Ethernet with LAN remote power Adapter + +pci:v00001022d00002000sv0000103Csd0000106C* + ID_MODEL_FROM_DATABASE=Ethernet with LAN remote power Adapter + +pci:v00001022d00002000sv0000103Csd0000106E* + ID_MODEL_FROM_DATABASE=Ethernet with LAN remote power Adapter + +pci:v00001022d00002000sv0000103Csd000010EA* + ID_MODEL_FROM_DATABASE=Ethernet with LAN remote power Adapter + +pci:v00001022d00002000sv00001113sd00001220* + ID_MODEL_FROM_DATABASE=EN1220 10/100 Fast Ethernet + +pci:v00001022d00002000sv00001259sd00002450* + ID_MODEL_FROM_DATABASE=AT-2450 10/100 Fast Ethernet + +pci:v00001022d00002000sv00001259sd00002454* + ID_MODEL_FROM_DATABASE=AT-2450v4 10Mb Ethernet Adapter + +pci:v00001022d00002000sv00001259sd00002700* + ID_MODEL_FROM_DATABASE=AT-2700TX 10/100 Fast Ethernet + +pci:v00001022d00002000sv00001259sd00002701* + ID_MODEL_FROM_DATABASE=AT-2700FX 100Mb Ethernet + +pci:v00001022d00002000sv00001259sd00002702* + ID_MODEL_FROM_DATABASE=AT-2700FTX 10/100 Mb Fiber/Copper Fast Ethernet + +pci:v00001022d00002000sv00001259sd00002703* + ID_MODEL_FROM_DATABASE=AT-2701FX + +pci:v00001022d00002000sv00001259sd00002704* + ID_MODEL_FROM_DATABASE=AT-2701FTX 10/100 Mb Fiber/Copper Fast Ethernet + +pci:v00001022d00002000sv00004C53sd00001000* + ID_MODEL_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard + +pci:v00001022d00002000sv00004C53sd00001010* + ID_MODEL_FROM_DATABASE=CP5/CR6 mainboard + +pci:v00001022d00002000sv00004C53sd00001020* + ID_MODEL_FROM_DATABASE=VR6 mainboard + +pci:v00001022d00002000sv00004C53sd00001030* + ID_MODEL_FROM_DATABASE=PC5 mainboard + +pci:v00001022d00002000sv00004C53sd00001040* + ID_MODEL_FROM_DATABASE=CL7 mainboard + +pci:v00001022d00002000sv00004C53sd00001060* + ID_MODEL_FROM_DATABASE=PC7 mainboard + +pci:v00001022d00002001* + ID_MODEL_FROM_DATABASE=79c978 [HomePNA] + +pci:v00001022d00002001sv00001092sd00000A78* + ID_MODEL_FROM_DATABASE=Multimedia Home Network Adapter + +pci:v00001022d00002001sv00001668sd00000299* + ID_MODEL_FROM_DATABASE=ActionLink Home Network Adapter + +pci:v00001022d00002003* + ID_MODEL_FROM_DATABASE=Am 1771 MBW [Alchemy] + +pci:v00001022d00002020* + ID_MODEL_FROM_DATABASE=53c974 [PCscsi] + +pci:v00001022d00002040* + ID_MODEL_FROM_DATABASE=79c974 + +pci:v00001022d00002080* + ID_MODEL_FROM_DATABASE=CS5536 [Geode companion] Host Bridge + +pci:v00001022d00002081* + ID_MODEL_FROM_DATABASE=Geode LX Video + +pci:v00001022d00002082* + ID_MODEL_FROM_DATABASE=Geode LX AES Security Block + +pci:v00001022d0000208F* + ID_MODEL_FROM_DATABASE=CS5536 GeodeLink PCI South Bridge + +pci:v00001022d00002090* + ID_MODEL_FROM_DATABASE=CS5536 [Geode companion] ISA + +pci:v00001022d00002091* + ID_MODEL_FROM_DATABASE=CS5536 [Geode companion] FLASH + +pci:v00001022d00002093* + ID_MODEL_FROM_DATABASE=CS5536 [Geode companion] Audio + +pci:v00001022d00002094* + ID_MODEL_FROM_DATABASE=CS5536 [Geode companion] OHC + +pci:v00001022d00002095* + ID_MODEL_FROM_DATABASE=CS5536 [Geode companion] EHC + +pci:v00001022d00002096* + ID_MODEL_FROM_DATABASE=CS5536 [Geode companion] UDC + +pci:v00001022d00002097* + ID_MODEL_FROM_DATABASE=CS5536 [Geode companion] UOC + +pci:v00001022d0000209A* + ID_MODEL_FROM_DATABASE=CS5536 [Geode companion] IDE + +pci:v00001022d00003000* + ID_MODEL_FROM_DATABASE=ELanSC520 Microcontroller + +pci:v00001022d000043A0* + ID_MODEL_FROM_DATABASE=Hudson PCI to PCI bridge (PCIE port 0) + +pci:v00001022d000043A1* + ID_MODEL_FROM_DATABASE=Hudson PCI to PCI bridge (PCIE port 1) + +pci:v00001022d000043A2* + ID_MODEL_FROM_DATABASE=Hudson PCI to PCI bridge (PCIE port 2) + +pci:v00001022d000043A3* + ID_MODEL_FROM_DATABASE=Hudson PCI to PCI bridge (PCIE port 3) + +pci:v00001022d00007006* + ID_MODEL_FROM_DATABASE=AMD-751 [Irongate] System Controller + +pci:v00001022d00007007* + ID_MODEL_FROM_DATABASE=AMD-751 [Irongate] AGP Bridge + +pci:v00001022d0000700A* + ID_MODEL_FROM_DATABASE=AMD-IGR4 AGP Host to PCI Bridge + +pci:v00001022d0000700B* + ID_MODEL_FROM_DATABASE=AMD-IGR4 PCI to PCI Bridge + +pci:v00001022d0000700C* + ID_MODEL_FROM_DATABASE=AMD-760 MP [IGD4-2P] System Controller + +pci:v00001022d0000700D* + ID_MODEL_FROM_DATABASE=AMD-760 MP [IGD4-2P] AGP Bridge + +pci:v00001022d0000700E* + ID_MODEL_FROM_DATABASE=AMD-760 [IGD4-1P] System Controller + +pci:v00001022d0000700F* + ID_MODEL_FROM_DATABASE=AMD-760 [IGD4-1P] AGP Bridge + +pci:v00001022d00007400* + ID_MODEL_FROM_DATABASE=AMD-755 [Cobra] ISA + +pci:v00001022d00007401* + ID_MODEL_FROM_DATABASE=AMD-755 [Cobra] IDE + +pci:v00001022d00007403* + ID_MODEL_FROM_DATABASE=AMD-755 [Cobra] ACPI + +pci:v00001022d00007404* + ID_MODEL_FROM_DATABASE=AMD-755 [Cobra] USB + +pci:v00001022d00007408* + ID_MODEL_FROM_DATABASE=AMD-756 [Viper] ISA + +pci:v00001022d00007409* + ID_MODEL_FROM_DATABASE=AMD-756 [Viper] IDE + +pci:v00001022d0000740B* + ID_MODEL_FROM_DATABASE=AMD-756 [Viper] ACPI + +pci:v00001022d0000740C* + ID_MODEL_FROM_DATABASE=AMD-756 [Viper] USB + +pci:v00001022d00007410* + ID_MODEL_FROM_DATABASE=AMD-766 [ViperPlus] ISA + +pci:v00001022d00007411* + ID_MODEL_FROM_DATABASE=AMD-766 [ViperPlus] IDE + +pci:v00001022d00007413* + ID_MODEL_FROM_DATABASE=AMD-766 [ViperPlus] ACPI + +pci:v00001022d00007414* + ID_MODEL_FROM_DATABASE=AMD-766 [ViperPlus] USB + +pci:v00001022d00007440* + ID_MODEL_FROM_DATABASE=AMD-768 [Opus] ISA + +pci:v00001022d00007440sv00001043sd00008044* + ID_MODEL_FROM_DATABASE=A7M-D Mainboard + +pci:v00001022d00007441* + ID_MODEL_FROM_DATABASE=AMD-768 [Opus] IDE + +pci:v00001022d00007443* + ID_MODEL_FROM_DATABASE=AMD-768 [Opus] ACPI + +pci:v00001022d00007443sv00001043sd00008044* + ID_MODEL_FROM_DATABASE=A7M-D Mainboard + +pci:v00001022d00007445* + ID_MODEL_FROM_DATABASE=AMD-768 [Opus] Audio + +pci:v00001022d00007446* + ID_MODEL_FROM_DATABASE=AMD-768 [Opus] MC97 Modem + +pci:v00001022d00007448* + ID_MODEL_FROM_DATABASE=AMD-768 [Opus] PCI + +pci:v00001022d00007449* + ID_MODEL_FROM_DATABASE=AMD-768 [Opus] USB + +pci:v00001022d00007450* + ID_MODEL_FROM_DATABASE=AMD-8131 PCI-X Bridge + +pci:v00001022d00007451* + ID_MODEL_FROM_DATABASE=AMD-8131 PCI-X IOAPIC + +pci:v00001022d00007454* + ID_MODEL_FROM_DATABASE=AMD-8151 System Controller + +pci:v00001022d00007455* + ID_MODEL_FROM_DATABASE=AMD-8151 AGP Bridge + +pci:v00001022d00007458* + ID_MODEL_FROM_DATABASE=AMD-8132 PCI-X Bridge + +pci:v00001022d00007459* + ID_MODEL_FROM_DATABASE=AMD-8132 PCI-X IOAPIC + +pci:v00001022d00007460* + ID_MODEL_FROM_DATABASE=AMD-8111 PCI + +pci:v00001022d00007460sv0000161Fsd00003017* + ID_MODEL_FROM_DATABASE=HDAMB + +pci:v00001022d00007461* + ID_MODEL_FROM_DATABASE=AMD-8111 USB + +pci:v00001022d00007462* + ID_MODEL_FROM_DATABASE=AMD-8111 Ethernet + +pci:v00001022d00007463* + ID_MODEL_FROM_DATABASE=AMD-8111 USB EHCI + +pci:v00001022d00007464* + ID_MODEL_FROM_DATABASE=AMD-8111 USB OHCI + +pci:v00001022d00007464sv0000161Fsd00003017* + ID_MODEL_FROM_DATABASE=HDAMB + +pci:v00001022d00007468* + ID_MODEL_FROM_DATABASE=AMD-8111 LPC + +pci:v00001022d00007468sv0000161Fsd00003017* + ID_MODEL_FROM_DATABASE=HDAMB + +pci:v00001022d00007469* + ID_MODEL_FROM_DATABASE=AMD-8111 IDE + +pci:v00001022d00007469sv00001022sd00002B80* + ID_MODEL_FROM_DATABASE=AMD-8111 IDE [Quartet] + +pci:v00001022d00007469sv0000161Fsd00003017* + ID_MODEL_FROM_DATABASE=HDAMB + +pci:v00001022d0000746A* + ID_MODEL_FROM_DATABASE=AMD-8111 SMBus 2.0 + +pci:v00001022d0000746B* + ID_MODEL_FROM_DATABASE=AMD-8111 ACPI + +pci:v00001022d0000746Bsv0000161Fsd00003017* + ID_MODEL_FROM_DATABASE=HDAMB + +pci:v00001022d0000746D* + ID_MODEL_FROM_DATABASE=AMD-8111 AC97 Audio + +pci:v00001022d0000746Dsv0000161Fsd00003017* + ID_MODEL_FROM_DATABASE=HDAMB + +pci:v00001022d0000746E* + ID_MODEL_FROM_DATABASE=AMD-8111 MC97 Modem + +pci:v00001022d0000756B* + ID_MODEL_FROM_DATABASE=AMD-8111 ACPI + +pci:v00001022d00007800* + ID_MODEL_FROM_DATABASE=FCH SATA Controller [IDE mode] + +pci:v00001022d00007801* + ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode] + +pci:v00001022d00007801sv0000103Csd0000168B* + ID_MODEL_FROM_DATABASE=ProBook 4535s Notebook + +pci:v00001022d00007802* + ID_MODEL_FROM_DATABASE=FCH SATA Controller [RAID mode] + +pci:v00001022d00007803* + ID_MODEL_FROM_DATABASE=FCH SATA Controller [RAID mode] + +pci:v00001022d00007804* + ID_MODEL_FROM_DATABASE=FCH SATA Controller [AHCI mode] + +pci:v00001022d00007805* + ID_MODEL_FROM_DATABASE=FCH SATA Controller [RAID mode] + +pci:v00001022d00007806* + ID_MODEL_FROM_DATABASE=FCH SD Flash Controller + +pci:v00001022d00007807* + ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller + +pci:v00001022d00007808* + ID_MODEL_FROM_DATABASE=FCH USB EHCI Controller + +pci:v00001022d00007809* + ID_MODEL_FROM_DATABASE=FCH USB OHCI Controller + +pci:v00001022d0000780B* + ID_MODEL_FROM_DATABASE=FCH SMBus Controller + +pci:v00001022d0000780C* + ID_MODEL_FROM_DATABASE=FCH IDE Controller + +pci:v00001022d0000780D* + ID_MODEL_FROM_DATABASE=FCH Azalia Controller + +pci:v00001022d0000780E* + ID_MODEL_FROM_DATABASE=FCH LPC Bridge + +pci:v00001022d0000780F* + ID_MODEL_FROM_DATABASE=FCH PCI Bridge + +pci:v00001022d00007812* + ID_MODEL_FROM_DATABASE=FCH USB XHCI Controller + +pci:v00001022d00007813* + ID_MODEL_FROM_DATABASE=FCH SD Flash Controller + +pci:v00001022d00007814* + ID_MODEL_FROM_DATABASE=FCH USB XHCI Controller + +pci:v00001022d00009600* + ID_MODEL_FROM_DATABASE=RS780 Host Bridge + +pci:v00001022d00009600sv00001043sd000082F1* + ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard + +pci:v00001022d00009601* + ID_MODEL_FROM_DATABASE=RS880 Host Bridge + +pci:v00001022d00009601sv00001019sd00002120* + ID_MODEL_FROM_DATABASE=A785GM-M + +pci:v00001022d00009601sv00001043sd0000843E* + ID_MODEL_FROM_DATABASE=M5A88-V EVO + +pci:v00001022d00009602* + ID_MODEL_FROM_DATABASE=RS780/RS880 PCI to PCI bridge (int gfx) + +pci:v00001022d00009603* + ID_MODEL_FROM_DATABASE=RS780 PCI to PCI bridge (ext gfx port 0) + +pci:v00001022d00009604* + ID_MODEL_FROM_DATABASE=RS780/RS880 PCI to PCI bridge (PCIE port 0) + +pci:v00001022d00009605* + ID_MODEL_FROM_DATABASE=RS780/RS880 PCI to PCI bridge (PCIE port 1) + +pci:v00001022d00009606* + ID_MODEL_FROM_DATABASE=RS780 PCI to PCI bridge (PCIE port 2) + +pci:v00001022d00009607* + ID_MODEL_FROM_DATABASE=RS780 PCI to PCI bridge (PCIE port 3) + +pci:v00001022d00009608* + ID_MODEL_FROM_DATABASE=RS780/RS880 PCI to PCI bridge (PCIE port 4) + +pci:v00001022d00009609* + ID_MODEL_FROM_DATABASE=RS780/RS880 PCI to PCI bridge (PCIE port 5) + +pci:v00001022d0000960A* + ID_MODEL_FROM_DATABASE=RS780 PCI to PCI bridge (NB-SB link) + +pci:v00001022d0000960B* + ID_MODEL_FROM_DATABASE=RS780 PCI to PCI bridge (ext gfx port 1) + +pci:v00001023* + ID_VENDOR_FROM_DATABASE=Trident Microsystems + +pci:v00001023d00000194* + ID_MODEL_FROM_DATABASE=82C194 + +pci:v00001023d00002000* + ID_MODEL_FROM_DATABASE=4DWave DX + +pci:v00001023d00002001* + ID_MODEL_FROM_DATABASE=4DWave NX + +pci:v00001023d00002001sv0000122Dsd00001400* + ID_MODEL_FROM_DATABASE=Trident PCI288-Q3DII (NX) + +pci:v00001023d00002100* + ID_MODEL_FROM_DATABASE=CyberBlade XP4m32 + +pci:v00001023d00002200* + ID_MODEL_FROM_DATABASE=XGI Volari XP5 + +pci:v00001023d00008400* + ID_MODEL_FROM_DATABASE=CyberBlade/i7 + +pci:v00001023d00008400sv00001023sd00008400* + ID_MODEL_FROM_DATABASE=CyberBlade i7 AGP + +pci:v00001023d00008420* + ID_MODEL_FROM_DATABASE=CyberBlade/i7d + +pci:v00001023d00008420sv00000E11sd0000B15A* + ID_MODEL_FROM_DATABASE=CyberBlade i7 AGP + +pci:v00001023d00008500* + ID_MODEL_FROM_DATABASE=CyberBlade/i1 + +pci:v00001023d00008520* + ID_MODEL_FROM_DATABASE=CyberBlade i1 + +pci:v00001023d00008520sv00000E11sd0000B16E* + ID_MODEL_FROM_DATABASE=CyberBlade i1 AGP + +pci:v00001023d00008520sv00001023sd00008520* + ID_MODEL_FROM_DATABASE=CyberBlade i1 AGP + +pci:v00001023d00008620* + ID_MODEL_FROM_DATABASE=CyberBlade/i1 + +pci:v00001023d00008620sv00001014sd00000502* + ID_MODEL_FROM_DATABASE=ThinkPad R30/T30 + +pci:v00001023d00008620sv00001014sd00001025* + ID_MODEL_FROM_DATABASE=Travelmate 352TE + +pci:v00001023d00008820* + ID_MODEL_FROM_DATABASE=CyberBlade XPAi1 + +pci:v00001023d00009320* + ID_MODEL_FROM_DATABASE=TGUI 9320 + +pci:v00001023d00009350* + ID_MODEL_FROM_DATABASE=GUI Accelerator + +pci:v00001023d00009360* + ID_MODEL_FROM_DATABASE=Flat panel GUI Accelerator + +pci:v00001023d00009382* + ID_MODEL_FROM_DATABASE=Cyber 9382 [Reference design] + +pci:v00001023d00009383* + ID_MODEL_FROM_DATABASE=Cyber 9383 [Reference design] + +pci:v00001023d00009385* + ID_MODEL_FROM_DATABASE=Cyber 9385 [Reference design] + +pci:v00001023d00009386* + ID_MODEL_FROM_DATABASE=Cyber 9386 + +pci:v00001023d00009388* + ID_MODEL_FROM_DATABASE=Cyber 9388 + +pci:v00001023d00009397* + ID_MODEL_FROM_DATABASE=Cyber 9397 + +pci:v00001023d0000939A* + ID_MODEL_FROM_DATABASE=Cyber 9397DVD + +pci:v00001023d00009420* + ID_MODEL_FROM_DATABASE=TGUI 9420 + +pci:v00001023d00009430* + ID_MODEL_FROM_DATABASE=TGUI 9430 + +pci:v00001023d00009440* + ID_MODEL_FROM_DATABASE=TGUI 9440 + +pci:v00001023d00009460* + ID_MODEL_FROM_DATABASE=TGUI 9460 + +pci:v00001023d00009470* + ID_MODEL_FROM_DATABASE=TGUI 9470 + +pci:v00001023d00009520* + ID_MODEL_FROM_DATABASE=Cyber 9520 + +pci:v00001023d00009525* + ID_MODEL_FROM_DATABASE=Cyber 9525 + +pci:v00001023d00009540* + ID_MODEL_FROM_DATABASE=Cyber 9540 + +pci:v00001023d00009660* + ID_MODEL_FROM_DATABASE=TGUI 9660/938x/968x + +pci:v00001023d00009680* + ID_MODEL_FROM_DATABASE=TGUI 9680 + +pci:v00001023d00009682* + ID_MODEL_FROM_DATABASE=TGUI 9682 + +pci:v00001023d00009683* + ID_MODEL_FROM_DATABASE=TGUI 9683 + +pci:v00001023d00009685* + ID_MODEL_FROM_DATABASE=ProVIDIA 9685 + +pci:v00001023d00009750* + ID_MODEL_FROM_DATABASE=3DImage 9750 + +pci:v00001023d00009750sv00001014sd00009750* + ID_MODEL_FROM_DATABASE=3DImage 9750 + +pci:v00001023d00009750sv00001023sd00009750* + ID_MODEL_FROM_DATABASE=3DImage 9750 + +pci:v00001023d00009753* + ID_MODEL_FROM_DATABASE=TGUI 9753 + +pci:v00001023d00009754* + ID_MODEL_FROM_DATABASE=TGUI 9754 + +pci:v00001023d00009759* + ID_MODEL_FROM_DATABASE=TGUI 975 + +pci:v00001023d00009783* + ID_MODEL_FROM_DATABASE=TGUI 9783 + +pci:v00001023d00009785* + ID_MODEL_FROM_DATABASE=TGUI 9785 + +pci:v00001023d00009850* + ID_MODEL_FROM_DATABASE=3DImage 9850 + +pci:v00001023d00009880* + ID_MODEL_FROM_DATABASE=Blade 3D PCI/AGP + +pci:v00001023d00009880sv00001023sd00009880* + ID_MODEL_FROM_DATABASE=Blade 3D + +pci:v00001023d00009910* + ID_MODEL_FROM_DATABASE=CyberBlade/XP + +pci:v00001023d00009930* + ID_MODEL_FROM_DATABASE=CyberBlade/XPm + +pci:v00001023d00009960* + ID_MODEL_FROM_DATABASE=CyberBlade XP2 + +pci:v00001024* + ID_VENDOR_FROM_DATABASE=Zenith Data Systems + +pci:v00001025* + ID_VENDOR_FROM_DATABASE=Acer Incorporated [ALI] + +pci:v00001025d00001435* + ID_MODEL_FROM_DATABASE=M1435 + +pci:v00001025d00001445* + ID_MODEL_FROM_DATABASE=M1445 + +pci:v00001025d00001449* + ID_MODEL_FROM_DATABASE=M1449 + +pci:v00001025d00001451* + ID_MODEL_FROM_DATABASE=M1451 + +pci:v00001025d00001461* + ID_MODEL_FROM_DATABASE=M1461 + +pci:v00001025d00001489* + ID_MODEL_FROM_DATABASE=M1489 + +pci:v00001025d00001511* + ID_MODEL_FROM_DATABASE=M1511 + +pci:v00001025d00001512* + ID_MODEL_FROM_DATABASE=ALI M1512 Aladdin + +pci:v00001025d00001513* + ID_MODEL_FROM_DATABASE=M1513 + +pci:v00001025d00001521* + ID_MODEL_FROM_DATABASE=ALI M1521 Aladdin III CPU Bridge + +pci:v00001025d00001521sv000010B9sd00001521* + ID_MODEL_FROM_DATABASE=ALI M1521 Aladdin III CPU Bridge + +pci:v00001025d00001523* + ID_MODEL_FROM_DATABASE=ALI M1523 ISA Bridge + +pci:v00001025d00001523sv000010B9sd00001523* + ID_MODEL_FROM_DATABASE=ALI M1523 ISA Bridge + +pci:v00001025d00001531* + ID_MODEL_FROM_DATABASE=M1531 Northbridge [Aladdin IV/IV+] + +pci:v00001025d00001533* + ID_MODEL_FROM_DATABASE=M1533 PCI-to-ISA Bridge + +pci:v00001025d00001533sv000010B9sd00001533* + ID_MODEL_FROM_DATABASE=ALI M1533 Aladdin IV/V ISA South Bridge + +pci:v00001025d00001535* + ID_MODEL_FROM_DATABASE=M1535 PCI Bridge + Super I/O + FIR + +pci:v00001025d00001541* + ID_MODEL_FROM_DATABASE=M1541 Northbridge [Aladdin V] + +pci:v00001025d00001541sv000010B9sd00001541* + ID_MODEL_FROM_DATABASE=ALI M1541 Aladdin V/V+ AGP+PCI North Bridge + +pci:v00001025d00001542* + ID_MODEL_FROM_DATABASE=M1542 Northbridge [Aladdin V] + +pci:v00001025d00001543* + ID_MODEL_FROM_DATABASE=M1543 PCI-to-ISA Bridge + Super I/O + FIR + +pci:v00001025d00001561* + ID_MODEL_FROM_DATABASE=M1561 Northbridge [Aladdin 7] + +pci:v00001025d00001621* + ID_MODEL_FROM_DATABASE=M1621 Northbridge [Aladdin-Pro II] + +pci:v00001025d00001631* + ID_MODEL_FROM_DATABASE=M1631 Northbridge+3D Graphics [Aladdin TNT2] + +pci:v00001025d00001641* + ID_MODEL_FROM_DATABASE=M1641 Northbridge [Aladdin-Pro IV] + +pci:v00001025d00001647* + ID_MODEL_FROM_DATABASE=M1647 [MaGiK1] PCI North Bridge + +pci:v00001025d00001671* + ID_MODEL_FROM_DATABASE=M1671 Northbridge [ALADDiN-P4] + +pci:v00001025d00001672* + ID_MODEL_FROM_DATABASE=Northbridge [CyberALADDiN-P4] + +pci:v00001025d00003141* + ID_MODEL_FROM_DATABASE=M3141 + +pci:v00001025d00003143* + ID_MODEL_FROM_DATABASE=M3143 + +pci:v00001025d00003145* + ID_MODEL_FROM_DATABASE=M3145 + +pci:v00001025d00003147* + ID_MODEL_FROM_DATABASE=M3147 + +pci:v00001025d00003149* + ID_MODEL_FROM_DATABASE=M3149 + +pci:v00001025d00003151* + ID_MODEL_FROM_DATABASE=M3151 + +pci:v00001025d00003307* + ID_MODEL_FROM_DATABASE=M3307 MPEG-I Video Controller + +pci:v00001025d00003309* + ID_MODEL_FROM_DATABASE=M3309 MPEG-II Video w/ Software Audio Decoder + +pci:v00001025d00003321* + ID_MODEL_FROM_DATABASE=M3321 MPEG-II Audio/Video Decoder + +pci:v00001025d00005212* + ID_MODEL_FROM_DATABASE=M4803 + +pci:v00001025d00005215* + ID_MODEL_FROM_DATABASE=ALI PCI EIDE Controller + +pci:v00001025d00005217* + ID_MODEL_FROM_DATABASE=M5217H + +pci:v00001025d00005219* + ID_MODEL_FROM_DATABASE=M5219 + +pci:v00001025d00005225* + ID_MODEL_FROM_DATABASE=M5225 + +pci:v00001025d00005229* + ID_MODEL_FROM_DATABASE=M5229 + +pci:v00001025d00005235* + ID_MODEL_FROM_DATABASE=M5235 + +pci:v00001025d00005237* + ID_MODEL_FROM_DATABASE=M5237 PCI USB Host Controller + +pci:v00001025d00005240* + ID_MODEL_FROM_DATABASE=EIDE Controller + +pci:v00001025d00005241* + ID_MODEL_FROM_DATABASE=PCMCIA Bridge + +pci:v00001025d00005242* + ID_MODEL_FROM_DATABASE=General Purpose Controller + +pci:v00001025d00005243* + ID_MODEL_FROM_DATABASE=PCI to PCI Bridge Controller + +pci:v00001025d00005244* + ID_MODEL_FROM_DATABASE=Floppy Disk Controller + +pci:v00001025d00005247* + ID_MODEL_FROM_DATABASE=M1541 PCI to PCI Bridge + +pci:v00001025d00005251* + ID_MODEL_FROM_DATABASE=M5251 P1394 Controller + +pci:v00001025d00005427* + ID_MODEL_FROM_DATABASE=PCI to AGP Bridge + +pci:v00001025d00005451* + ID_MODEL_FROM_DATABASE=M5451 PCI AC-Link Controller Audio Device + +pci:v00001025d00005453* + ID_MODEL_FROM_DATABASE=M5453 PCI AC-Link Controller Modem Device + +pci:v00001025d00007101* + ID_MODEL_FROM_DATABASE=M7101 PCI PMU Power Management Controller + +pci:v00001025d00007101sv000010B9sd00007101* + ID_MODEL_FROM_DATABASE=M7101 PCI PMU Power Management Controller + +pci:v00001025d00009602* + ID_MODEL_FROM_DATABASE=AMD RS780/RS880 PCI to PCI bridge (int gfx) + +pci:v00001028* + ID_VENDOR_FROM_DATABASE=Dell + +pci:v00001028d00000001* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/Si + +pci:v00001028d00000001sv00001028sd00000001* + ID_MODEL_FROM_DATABASE=PowerEdge 2400 + +pci:v00001028d00000002* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di + +pci:v00001028d00000002sv00001028sd00000002* + ID_MODEL_FROM_DATABASE=PowerEdge 4400 + +pci:v00001028d00000002sv00001028sd000000D1* + ID_MODEL_FROM_DATABASE=PERC 3/DiV [Viper] + +pci:v00001028d00000002sv00001028sd000000D9* + ID_MODEL_FROM_DATABASE=PERC 3/DiL [Lexus] + +pci:v00001028d00000003* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Si + +pci:v00001028d00000003sv00001028sd00000003* + ID_MODEL_FROM_DATABASE=PowerEdge 2450 + +pci:v00001028d00000004* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di [Iguana] + +pci:v00001028d00000004sv00001028sd00000004* + ID_MODEL_FROM_DATABASE=PERC 3/DiF [Iguana] + +pci:v00001028d00000006* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di + +pci:v00001028d00000007* + ID_MODEL_FROM_DATABASE=Remote Access Card III + +pci:v00001028d00000008* + ID_MODEL_FROM_DATABASE=Remote Access Card III + +pci:v00001028d00000009* + ID_MODEL_FROM_DATABASE=Remote Access Card III: BMC/SMIC device not present + +pci:v00001028d0000000A* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di + +pci:v00001028d0000000Asv00001028sd00000106* + ID_MODEL_FROM_DATABASE=PERC 3/DiJ [Jaguar] + +pci:v00001028d0000000Asv00001028sd0000011B* + ID_MODEL_FROM_DATABASE=PERC 3/DiD [Dagger] + +pci:v00001028d0000000Asv00001028sd00000121* + ID_MODEL_FROM_DATABASE=PERC 3/DiB [Boxster] + +pci:v00001028d0000000C* + ID_MODEL_FROM_DATABASE=Embedded Remote Access or ERA/O + +pci:v00001028d0000000D* + ID_MODEL_FROM_DATABASE=Embedded Remote Access: BMC/SMIC device + +pci:v00001028d0000000E* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 4/Di + +pci:v00001028d0000000F* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 4/Di + +pci:v00001028d0000000Fsv00001028sd0000014A* + ID_MODEL_FROM_DATABASE=PowerEdge 1750 + +pci:v00001028d00000010* + ID_MODEL_FROM_DATABASE=Remote Access Card 4 + +pci:v00001028d00000011* + ID_MODEL_FROM_DATABASE=Remote Access Card 4 Daughter Card + +pci:v00001028d00000012* + ID_MODEL_FROM_DATABASE=Remote Access Card 4 Daughter Card Virtual UART + +pci:v00001028d00000013* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 4 + +pci:v00001028d00000013sv00001028sd0000016C* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Si + +pci:v00001028d00000013sv00001028sd0000016D* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Di + +pci:v00001028d00000013sv00001028sd0000016E* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Di + +pci:v00001028d00000013sv00001028sd0000016F* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Di + +pci:v00001028d00000013sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Di + +pci:v00001028d00000014* + ID_MODEL_FROM_DATABASE=Remote Access Card 4 Daughter Card SMIC interface + +pci:v00001028d00000015* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller 5 + +pci:v00001028d00000015sv00001028sd00001F01* + ID_MODEL_FROM_DATABASE=PERC 5/E Adapter RAID Controller + +pci:v00001028d00000015sv00001028sd00001F02* + ID_MODEL_FROM_DATABASE=PERC 5/i Adapter RAID Controller + +pci:v00001028d00000015sv00001028sd00001F03* + ID_MODEL_FROM_DATABASE=PERC 5/i Integrated RAID Controller + +pci:v00001028d00000016* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID controller S300 + +pci:v00001028d00000016sv00001028sd00001F24* + ID_MODEL_FROM_DATABASE=PERC S300 Controller + +pci:v00001029* + ID_VENDOR_FROM_DATABASE=Siemens Nixdorf IS + +pci:v0000102A* + ID_VENDOR_FROM_DATABASE=LSI Logic + +pci:v0000102Ad00000000* + ID_MODEL_FROM_DATABASE=HYDRA + +pci:v0000102Ad00000010* + ID_MODEL_FROM_DATABASE=ASPEN + +pci:v0000102Ad0000001F* + ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W /7890/7891 SCSI Controllers + +pci:v0000102Ad0000001Fsv00009005sd0000000F* + ID_MODEL_FROM_DATABASE=2940U2W SCSI Controller + +pci:v0000102Ad0000001Fsv00009005sd00000106* + ID_MODEL_FROM_DATABASE=2940U2W SCSI Controller + +pci:v0000102Ad0000001Fsv00009005sd0000A180* + ID_MODEL_FROM_DATABASE=2940U2W SCSI Controller + +pci:v0000102Ad000000C5* + ID_MODEL_FROM_DATABASE=AIC-7899 U160/m SCSI Controller + +pci:v0000102Ad000000C5sv00001028sd000000C5* + ID_MODEL_FROM_DATABASE=PowerEdge 2550/2650/4600 + +pci:v0000102Ad000000CF* + ID_MODEL_FROM_DATABASE=AIC-7899P U160/m + +pci:v0000102Ad000000CFsv00001028sd00000106* + ID_MODEL_FROM_DATABASE=PowerEdge 4600 + +pci:v0000102Ad000000CFsv00001028sd00000121* + ID_MODEL_FROM_DATABASE=PowerEdge 2650 + +pci:v0000102B* + ID_VENDOR_FROM_DATABASE=Matrox Electronics Systems Ltd. + +pci:v0000102Bd00000010* + ID_MODEL_FROM_DATABASE=MGA-I [Impression?] + +pci:v0000102Bd00000100* + ID_MODEL_FROM_DATABASE=MGA 1064SG [Mystique] + +pci:v0000102Bd00000518* + ID_MODEL_FROM_DATABASE=MGA-II [Athena] + +pci:v0000102Bd00000519* + ID_MODEL_FROM_DATABASE=MGA 2064W [Millennium] + +pci:v0000102Bd0000051A* + ID_MODEL_FROM_DATABASE=MGA 1064SG [Mystique] + +pci:v0000102Bd0000051Asv0000102Bsd00000100* + ID_MODEL_FROM_DATABASE=MGA-1064SG Mystique + +pci:v0000102Bd0000051Asv0000102Bsd00001100* + ID_MODEL_FROM_DATABASE=MGA-1084SG Mystique + +pci:v0000102Bd0000051Asv0000102Bsd00001200* + ID_MODEL_FROM_DATABASE=MGA-1084SG Mystique + +pci:v0000102Bd0000051Asv00001100sd0000102B* + ID_MODEL_FROM_DATABASE=MGA-1084SG Mystique + +pci:v0000102Bd0000051Asv0000110Asd00000018* + ID_MODEL_FROM_DATABASE=Scenic Pro C5 (D1025) + +pci:v0000102Bd0000051B* + ID_MODEL_FROM_DATABASE=MGA 2164W [Millennium II] + +pci:v0000102Bd0000051Bsv0000102Bsd0000051B* + ID_MODEL_FROM_DATABASE=MGA-2164W Millennium II + +pci:v0000102Bd0000051Bsv0000102Bsd00001100* + ID_MODEL_FROM_DATABASE=MGA-2164W Millennium II + +pci:v0000102Bd0000051Bsv0000102Bsd00001200* + ID_MODEL_FROM_DATABASE=MGA-2164W Millennium II + +pci:v0000102Bd0000051Bsv0000102Bsd00002100* + ID_MODEL_FROM_DATABASE=MGA-2164W Millennium II + +pci:v0000102Bd0000051E* + ID_MODEL_FROM_DATABASE=MGA 1064SG [Mystique] AGP + +pci:v0000102Bd0000051F* + ID_MODEL_FROM_DATABASE=MGA 2164W [Millennium II] AGP + +pci:v0000102Bd00000520* + ID_MODEL_FROM_DATABASE=MGA G200 + +pci:v0000102Bd00000520sv0000102Bsd0000DBC2* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000520sv0000102Bsd0000DBC8* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000520sv0000102Bsd0000DBE2* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000520sv0000102Bsd0000DBE8* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000520sv0000102Bsd0000FF03* + ID_MODEL_FROM_DATABASE=Millennium G200 SD + +pci:v0000102Bd00000520sv0000102Bsd0000FF04* + ID_MODEL_FROM_DATABASE=Marvel G200 + +pci:v0000102Bd00000521* + ID_MODEL_FROM_DATABASE=MGA G200 AGP + +pci:v0000102Bd00000521sv00001014sd0000FF03* + ID_MODEL_FROM_DATABASE=Millennium G200 AGP + +pci:v0000102Bd00000521sv0000102Bsd000048E9* + ID_MODEL_FROM_DATABASE=Mystique G200 AGP + +pci:v0000102Bd00000521sv0000102Bsd000048F8* + ID_MODEL_FROM_DATABASE=Millennium G200 SD AGP + +pci:v0000102Bd00000521sv0000102Bsd00004A60* + ID_MODEL_FROM_DATABASE=Millennium G200 LE AGP + +pci:v0000102Bd00000521sv0000102Bsd00004A64* + ID_MODEL_FROM_DATABASE=Millennium G200 AGP + +pci:v0000102Bd00000521sv0000102Bsd0000C93C* + ID_MODEL_FROM_DATABASE=Millennium G200 AGP + +pci:v0000102Bd00000521sv0000102Bsd0000C9B0* + ID_MODEL_FROM_DATABASE=Millennium G200 AGP + +pci:v0000102Bd00000521sv0000102Bsd0000C9BC* + ID_MODEL_FROM_DATABASE=Millennium G200 AGP + +pci:v0000102Bd00000521sv0000102Bsd0000CA60* + ID_MODEL_FROM_DATABASE=Millennium G250 LE AGP + +pci:v0000102Bd00000521sv0000102Bsd0000CA6C* + ID_MODEL_FROM_DATABASE=Millennium G250 AGP + +pci:v0000102Bd00000521sv0000102Bsd0000DBBC* + ID_MODEL_FROM_DATABASE=Millennium G200 AGP + +pci:v0000102Bd00000521sv0000102Bsd0000DBC2* + ID_MODEL_FROM_DATABASE=Millennium G200 MMS (Dual G200) + +pci:v0000102Bd00000521sv0000102Bsd0000DBC3* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000521sv0000102Bsd0000DBC8* + ID_MODEL_FROM_DATABASE=Millennium G200 MMS (Dual G200) + +pci:v0000102Bd00000521sv0000102Bsd0000DBD2* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000521sv0000102Bsd0000DBD3* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000521sv0000102Bsd0000DBD4* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000521sv0000102Bsd0000DBD5* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000521sv0000102Bsd0000DBD8* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000521sv0000102Bsd0000DBD9* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000521sv0000102Bsd0000DBE2* + ID_MODEL_FROM_DATABASE=Millennium G200 MMS (Quad G200) + +pci:v0000102Bd00000521sv0000102Bsd0000DBE3* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000521sv0000102Bsd0000DBE8* + ID_MODEL_FROM_DATABASE=Millennium G200 MMS (Quad G200) + +pci:v0000102Bd00000521sv0000102Bsd0000DBF2* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000521sv0000102Bsd0000DBF3* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000521sv0000102Bsd0000DBF4* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000521sv0000102Bsd0000DBF5* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000521sv0000102Bsd0000DBF8* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000521sv0000102Bsd0000DBF9* + ID_MODEL_FROM_DATABASE=G200 Multi-Monitor + +pci:v0000102Bd00000521sv0000102Bsd0000F806* + ID_MODEL_FROM_DATABASE=Mystique G200 Video AGP + +pci:v0000102Bd00000521sv0000102Bsd0000FF00* + ID_MODEL_FROM_DATABASE=MGA-G200 AGP + +pci:v0000102Bd00000521sv0000102Bsd0000FF02* + ID_MODEL_FROM_DATABASE=Mystique G200 AGP + +pci:v0000102Bd00000521sv0000102Bsd0000FF03* + ID_MODEL_FROM_DATABASE=Millennium G200 AGP + +pci:v0000102Bd00000521sv0000102Bsd0000FF04* + ID_MODEL_FROM_DATABASE=Marvel G200 AGP + +pci:v0000102Bd00000521sv0000110Asd00000032* + ID_MODEL_FROM_DATABASE=MGA-G200 AGP + +pci:v0000102Bd00000522* + ID_MODEL_FROM_DATABASE=MGA G200e [Pilot] ServerEngines (SEP1) + +pci:v0000102Bd00000522sv0000103Csd000031FA* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v0000102Bd00000525* + ID_MODEL_FROM_DATABASE=MGA G400/G450 + +pci:v0000102Bd00000525sv00000E11sd0000B16F* + ID_MODEL_FROM_DATABASE=MGA-G400 AGP + +pci:v0000102Bd00000525sv0000102Bsd00000328* + ID_MODEL_FROM_DATABASE=Millennium G400 16Mb SDRAM + +pci:v0000102Bd00000525sv0000102Bsd00000338* + ID_MODEL_FROM_DATABASE=Millennium G400 16Mb SDRAM + +pci:v0000102Bd00000525sv0000102Bsd00000378* + ID_MODEL_FROM_DATABASE=Millennium G400 32Mb SDRAM + +pci:v0000102Bd00000525sv0000102Bsd00000541* + ID_MODEL_FROM_DATABASE=Millennium G450 Dual Head + +pci:v0000102Bd00000525sv0000102Bsd00000542* + ID_MODEL_FROM_DATABASE=Millennium G450 Dual Head LX + +pci:v0000102Bd00000525sv0000102Bsd00000543* + ID_MODEL_FROM_DATABASE=Millennium G450 Single Head LX + +pci:v0000102Bd00000525sv0000102Bsd00000641* + ID_MODEL_FROM_DATABASE=Millennium G450 32Mb SDRAM Dual Head + +pci:v0000102Bd00000525sv0000102Bsd00000642* + ID_MODEL_FROM_DATABASE=Millennium G450 32Mb SDRAM Dual Head LX + +pci:v0000102Bd00000525sv0000102Bsd00000643* + ID_MODEL_FROM_DATABASE=Millennium G450 32Mb SDRAM Single Head LX + +pci:v0000102Bd00000525sv0000102Bsd000007C0* + ID_MODEL_FROM_DATABASE=Millennium G450 Dual Head LE + +pci:v0000102Bd00000525sv0000102Bsd000007C1* + ID_MODEL_FROM_DATABASE=Millennium G450 SDR Dual Head LE + +pci:v0000102Bd00000525sv0000102Bsd00000D41* + ID_MODEL_FROM_DATABASE=Millennium G450 Dual Head PCI + +pci:v0000102Bd00000525sv0000102Bsd00000D42* + ID_MODEL_FROM_DATABASE=Millennium G450 Dual Head LX PCI + +pci:v0000102Bd00000525sv0000102Bsd00000D43* + ID_MODEL_FROM_DATABASE=Millennium G450 32Mb Dual Head PCI + +pci:v0000102Bd00000525sv0000102Bsd00000E00* + ID_MODEL_FROM_DATABASE=Marvel G450 eTV + +pci:v0000102Bd00000525sv0000102Bsd00000E01* + ID_MODEL_FROM_DATABASE=Marvel G450 eTV + +pci:v0000102Bd00000525sv0000102Bsd00000E02* + ID_MODEL_FROM_DATABASE=Marvel G450 eTV + +pci:v0000102Bd00000525sv0000102Bsd00000E03* + ID_MODEL_FROM_DATABASE=Marvel G450 eTV + +pci:v0000102Bd00000525sv0000102Bsd00000F80* + ID_MODEL_FROM_DATABASE=Millennium G450 Low Profile + +pci:v0000102Bd00000525sv0000102Bsd00000F81* + ID_MODEL_FROM_DATABASE=Millennium G450 Low Profile + +pci:v0000102Bd00000525sv0000102Bsd00000F82* + ID_MODEL_FROM_DATABASE=Millennium G450 Low Profile DVI + +pci:v0000102Bd00000525sv0000102Bsd00000F83* + ID_MODEL_FROM_DATABASE=Millennium G450 Low Profile DVI + +pci:v0000102Bd00000525sv0000102Bsd000019D8* + ID_MODEL_FROM_DATABASE=Millennium G400 16Mb SGRAM + +pci:v0000102Bd00000525sv0000102Bsd000019F8* + ID_MODEL_FROM_DATABASE=Millennium G400 32Mb SGRAM + +pci:v0000102Bd00000525sv0000102Bsd00002159* + ID_MODEL_FROM_DATABASE=Millennium G400 Dual Head 16Mb + +pci:v0000102Bd00000525sv0000102Bsd00002179* + ID_MODEL_FROM_DATABASE=Millennium G400 MAX/Dual Head 32Mb + +pci:v0000102Bd00000525sv0000102Bsd0000217D* + ID_MODEL_FROM_DATABASE=Millennium G400 Dual Head Max + +pci:v0000102Bd00000525sv0000102Bsd000023C0* + ID_MODEL_FROM_DATABASE=Millennium G450 + +pci:v0000102Bd00000525sv0000102Bsd000023C1* + ID_MODEL_FROM_DATABASE=Millennium G450 + +pci:v0000102Bd00000525sv0000102Bsd000023C2* + ID_MODEL_FROM_DATABASE=Millennium G450 DVI + +pci:v0000102Bd00000525sv0000102Bsd000023C3* + ID_MODEL_FROM_DATABASE=Millennium G450 DVI + +pci:v0000102Bd00000525sv0000102Bsd00002F58* + ID_MODEL_FROM_DATABASE=Millennium G400 + +pci:v0000102Bd00000525sv0000102Bsd00002F78* + ID_MODEL_FROM_DATABASE=Millennium G400 + +pci:v0000102Bd00000525sv0000102Bsd00003693* + ID_MODEL_FROM_DATABASE=Marvel G400 AGP + +pci:v0000102Bd00000525sv0000102Bsd00005DD0* + ID_MODEL_FROM_DATABASE=4Sight II + +pci:v0000102Bd00000525sv0000102Bsd00005F50* + ID_MODEL_FROM_DATABASE=4Sight II + +pci:v0000102Bd00000525sv0000102Bsd00005F51* + ID_MODEL_FROM_DATABASE=4Sight II + +pci:v0000102Bd00000525sv0000102Bsd00005F52* + ID_MODEL_FROM_DATABASE=4Sight II + +pci:v0000102Bd00000525sv0000102Bsd00009010* + ID_MODEL_FROM_DATABASE=Millennium G400 Dual Head + +pci:v0000102Bd00000525sv00001458sd00000400* + ID_MODEL_FROM_DATABASE=GA-G400 + +pci:v0000102Bd00000525sv00001705sd00000001* + ID_MODEL_FROM_DATABASE=Millennium G450 32MB SGRAM + +pci:v0000102Bd00000525sv00001705sd00000002* + ID_MODEL_FROM_DATABASE=Millennium G450 16MB SGRAM + +pci:v0000102Bd00000525sv00001705sd00000003* + ID_MODEL_FROM_DATABASE=Millennium G450 32MB + +pci:v0000102Bd00000525sv00001705sd00000004* + ID_MODEL_FROM_DATABASE=Millennium G450 16MB + +pci:v0000102Bd00000527* + ID_MODEL_FROM_DATABASE=Parhelia + +pci:v0000102Bd00000527sv0000102Bsd00000840* + ID_MODEL_FROM_DATABASE=Parhelia 128Mb + +pci:v0000102Bd00000527sv0000102Bsd00000850* + ID_MODEL_FROM_DATABASE=Parhelia 256MB + +pci:v0000102Bd00000527sv0000102Bsd00000870* + ID_MODEL_FROM_DATABASE=MED2mp-DVI + +pci:v0000102Bd00000527sv0000102Bsd00000880* + ID_MODEL_FROM_DATABASE=P-256 Edge Overlap Controller + +pci:v0000102Bd00000528* + ID_MODEL_FROM_DATABASE=Parhelia + +pci:v0000102Bd00000528sv0000102Bsd00001020* + ID_MODEL_FROM_DATABASE=Parhelia 128MB + +pci:v0000102Bd00000528sv0000102Bsd00001030* + ID_MODEL_FROM_DATABASE=Parhelia 256 MB Dual DVI + +pci:v0000102Bd00000528sv0000102Bsd00001040* + ID_MODEL_FROM_DATABASE=MED2mp-DVI + +pci:v0000102Bd00000528sv0000102Bsd00001050* + ID_MODEL_FROM_DATABASE=Sono S20 + +pci:v0000102Bd00000528sv0000102Bsd00001060* + ID_MODEL_FROM_DATABASE=PJ-30L + +pci:v0000102Bd00000528sv0000102Bsd00001070* + ID_MODEL_FROM_DATABASE=PJ-40L + +pci:v0000102Bd00000528sv0000102Bsd00001421* + ID_MODEL_FROM_DATABASE=MED5mp + +pci:v0000102Bd00000528sv0000102Bsd00001431* + ID_MODEL_FROM_DATABASE=MED3mp-DVI + +pci:v0000102Bd00000528sv0000102Bsd00001451* + ID_MODEL_FROM_DATABASE=MED5mp-DVI + +pci:v0000102Bd00000528sv0000102Bsd00001491* + ID_MODEL_FROM_DATABASE=MED2mp-DVI + +pci:v0000102Bd00000528sv0000102Bsd000014B1* + ID_MODEL_FROM_DATABASE=MED3mp-DVI + +pci:v0000102Bd00000528sv0000102Bsd000014C1* + ID_MODEL_FROM_DATABASE=MED5mp-DVI + +pci:v0000102Bd00000528sv0000102Bsd000014E1* + ID_MODEL_FROM_DATABASE=Parhelia PCI 256MB + +pci:v0000102Bd00000528sv0000102Bsd000014F1* + ID_MODEL_FROM_DATABASE=Parhelia Precision SGT + +pci:v0000102Bd00000528sv0000102Bsd00001501* + ID_MODEL_FROM_DATABASE=ATC-4MP + +pci:v0000102Bd00000528sv0000102Bsd00001511* + ID_MODEL_FROM_DATABASE=ATC-4MP + +pci:v0000102Bd00000528sv0000102Bsd00001521* + ID_MODEL_FROM_DATABASE=TheatreVUE T30 + +pci:v0000102Bd00000528sv0000102Bsd00001531* + ID_MODEL_FROM_DATABASE=TheatreVUE T20 + +pci:v0000102Bd00000528sv0000102Bsd00001541* + ID_MODEL_FROM_DATABASE=MED2mp-DVI + +pci:v0000102Bd00000528sv0000102Bsd00001551* + ID_MODEL_FROM_DATABASE=MED3mp-DVI + +pci:v0000102Bd00000528sv0000102Bsd00001561* + ID_MODEL_FROM_DATABASE=MED5mp-DVI + +pci:v0000102Bd00000528sv0000102Bsd00001571* + ID_MODEL_FROM_DATABASE=Parhelia DL256 PCI + +pci:v0000102Bd00000528sv0000102Bsd00001591* + ID_MODEL_FROM_DATABASE=Parhelia Precision SDT + +pci:v0000102Bd00000528sv0000102Bsd000015A1* + ID_MODEL_FROM_DATABASE=MED4mp-DVI + +pci:v0000102Bd00000528sv0000102Bsd00002011* + ID_MODEL_FROM_DATABASE=Parhelia HR256 + +pci:v0000102Bd00000528sv0000102Bsd00002021* + ID_MODEL_FROM_DATABASE=QID Pro + +pci:v0000102Bd00000528sv0000102Bsd00002061* + ID_MODEL_FROM_DATABASE=PJ-40LP + +pci:v0000102Bd00000528sv0000102Bsd00002081* + ID_MODEL_FROM_DATABASE=EWS Quad + +pci:v0000102Bd00000528sv0000102Bsd00002411* + ID_MODEL_FROM_DATABASE=PPX-OUT8 + +pci:v0000102Bd00000528sv0000102Bsd00002421* + ID_MODEL_FROM_DATABASE=VPX-OUT8 + +pci:v0000102Bd00000528sv0000102Bsd00002441* + ID_MODEL_FROM_DATABASE=PPX-OUT4 + +pci:v0000102Bd00000528sv0000102Bsd00002451* + ID_MODEL_FROM_DATABASE=VPX-OUT4 + +pci:v0000102Bd00000528sv0000102Bsd00002491* + ID_MODEL_FROM_DATABASE=LPX-OUT4 + +pci:v0000102Bd00000530* + ID_MODEL_FROM_DATABASE=MGA G200EV + +pci:v0000102Bd00000532* + ID_MODEL_FROM_DATABASE=MGA G200eW WPCM450 + +pci:v0000102Bd00000532sv00001028sd00000235* + ID_MODEL_FROM_DATABASE=PowerEdge R710 MGA G200eW WPCM450 + +pci:v0000102Bd00000532sv00001028sd00000236* + ID_MODEL_FROM_DATABASE=PowerEdge R610 MGA G200eW WPCM450 + +pci:v0000102Bd00000532sv00001028sd00000237* + ID_MODEL_FROM_DATABASE=PowerEdge T610 MGA G200eW WPCM450 + +pci:v0000102Bd00000532sv00001028sd00000287* + ID_MODEL_FROM_DATABASE=PowerEdge M610 MGA G200eW WPCM450 + +pci:v0000102Bd00000532sv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 MGA G200eW WPCM450 + +pci:v0000102Bd00000532sv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 MGA G200eW WPCM450 + +pci:v0000102Bd00000532sv00001028sd0000029C* + ID_MODEL_FROM_DATABASE=PowerEdge M710 MGA G200eW WPCM450 + +pci:v0000102Bd00000532sv00001028sd000002A4* + ID_MODEL_FROM_DATABASE=PowerEdge T310 MGA G200eW WPCM450 + +pci:v0000102Bd00000532sv000015D9sd0000A811* + ID_MODEL_FROM_DATABASE=H8DGU + +pci:v0000102Bd00000533* + ID_MODEL_FROM_DATABASE=MGA G200EH + +pci:v0000102Bd00000533sv0000103Csd00003381* + ID_MODEL_FROM_DATABASE=iLO4 + +pci:v0000102Bd00000534* + ID_MODEL_FROM_DATABASE=G200eR2 + +pci:v0000102Bd00000540* + ID_MODEL_FROM_DATABASE=M91XX + +pci:v0000102Bd00000540sv0000102Bsd00002080* + ID_MODEL_FROM_DATABASE=M9140 LP PCIe x16 + +pci:v0000102Bd00000540sv0000102Bsd000020C0* + ID_MODEL_FROM_DATABASE=Xenia + +pci:v0000102Bd00000540sv0000102Bsd000020C1* + ID_MODEL_FROM_DATABASE=Xenia Pro + +pci:v0000102Bd00000540sv0000102Bsd00002100* + ID_MODEL_FROM_DATABASE=M9120 PCIe x16 + +pci:v0000102Bd00000540sv0000102Bsd00002140* + ID_MODEL_FROM_DATABASE=M9125 PCIe x16 + +pci:v0000102Bd00000540sv0000102Bsd00002180* + ID_MODEL_FROM_DATABASE=M9120 Plus LP PCIe x16 + +pci:v0000102Bd00000540sv0000102Bsd000021C0* + ID_MODEL_FROM_DATABASE=M9120 Plus LP PCIe x1 + +pci:v0000102Bd00000540sv0000102Bsd00002200* + ID_MODEL_FROM_DATABASE=VDA1164 Output Board + +pci:v0000102Bd00000540sv0000102Bsd00002240* + ID_MODEL_FROM_DATABASE=M9148 LP PCIe x16 + +pci:v0000102Bd00000540sv0000102Bsd00002241* + ID_MODEL_FROM_DATABASE=M9138 LP PCIe x16 + +pci:v0000102Bd00000540sv0000102Bsd00002280* + ID_MODEL_FROM_DATABASE=M9188 ATX PCIe x16 + +pci:v0000102Bd00000540sv0000102Bsd000022C0* + ID_MODEL_FROM_DATABASE=M9128 LP PCIe x16 + +pci:v0000102Bd00000D10* + ID_MODEL_FROM_DATABASE=MGA Ultima/Impression + +pci:v0000102Bd00001000* + ID_MODEL_FROM_DATABASE=MGA G100 [Productiva] + +pci:v0000102Bd00001000sv0000102Bsd0000FF01* + ID_MODEL_FROM_DATABASE=Productiva G100 + +pci:v0000102Bd00001000sv0000102Bsd0000FF05* + ID_MODEL_FROM_DATABASE=Productiva G100 Multi-Monitor + +pci:v0000102Bd00001001* + ID_MODEL_FROM_DATABASE=MGA G100 [Productiva] AGP + +pci:v0000102Bd00001001sv0000102Bsd00001001* + ID_MODEL_FROM_DATABASE=MGA-G100 AGP + +pci:v0000102Bd00001001sv0000102Bsd0000FF00* + ID_MODEL_FROM_DATABASE=MGA-G100 AGP + +pci:v0000102Bd00001001sv0000102Bsd0000FF01* + ID_MODEL_FROM_DATABASE=MGA-G100 Productiva AGP + +pci:v0000102Bd00001001sv0000102Bsd0000FF03* + ID_MODEL_FROM_DATABASE=Millennium G100 AGP + +pci:v0000102Bd00001001sv0000102Bsd0000FF04* + ID_MODEL_FROM_DATABASE=MGA-G100 AGP + +pci:v0000102Bd00001001sv0000102Bsd0000FF05* + ID_MODEL_FROM_DATABASE=MGA-G100 Productiva AGP Multi-Monitor + +pci:v0000102Bd00001001sv0000110Asd0000001E* + ID_MODEL_FROM_DATABASE=MGA-G100 AGP + +pci:v0000102Bd00002007* + ID_MODEL_FROM_DATABASE=MGA Mistral + +pci:v0000102Bd00002527* + ID_MODEL_FROM_DATABASE=Millennium G550 + +pci:v0000102Bd00002527sv0000102Bsd00000F83* + ID_MODEL_FROM_DATABASE=Millennium G550 + +pci:v0000102Bd00002527sv0000102Bsd00000F84* + ID_MODEL_FROM_DATABASE=Millennium G550 Dual Head DDR 32Mb + +pci:v0000102Bd00002527sv0000102Bsd00001E41* + ID_MODEL_FROM_DATABASE=Millennium G550 + +pci:v0000102Bd00002527sv0000102Bsd00002300* + ID_MODEL_FROM_DATABASE=Millennium G550 LP PCIE + +pci:v0000102Bd00002537* + ID_MODEL_FROM_DATABASE=Millenium P650/P750 + +pci:v0000102Bd00002537sv0000102Bsd00001820* + ID_MODEL_FROM_DATABASE=Millennium P750 64MB + +pci:v0000102Bd00002537sv0000102Bsd00001830* + ID_MODEL_FROM_DATABASE=Millennium P650 64MB + +pci:v0000102Bd00002537sv0000102Bsd00001850* + ID_MODEL_FROM_DATABASE=RAD2mp + +pci:v0000102Bd00002537sv0000102Bsd00001860* + ID_MODEL_FROM_DATABASE=RAD3mp + +pci:v0000102Bd00002537sv0000102Bsd00001880* + ID_MODEL_FROM_DATABASE=Sono S10 + +pci:v0000102Bd00002537sv0000102Bsd00001C10* + ID_MODEL_FROM_DATABASE=QID 128MB + +pci:v0000102Bd00002537sv0000102Bsd00002811* + ID_MODEL_FROM_DATABASE=Millennium P650 Low-profile PCI 64MB + +pci:v0000102Bd00002537sv0000102Bsd00002821* + ID_MODEL_FROM_DATABASE=Millenium P650 Low-profile PCI + +pci:v0000102Bd00002537sv0000102Bsd00002841* + ID_MODEL_FROM_DATABASE=RAD PCI + +pci:v0000102Bd00002537sv0000102Bsd00002851* + ID_MODEL_FROM_DATABASE=Spectrum PCI + +pci:v0000102Bd00002537sv0000102Bsd00002871* + ID_MODEL_FROM_DATABASE=EpicA TC2 + +pci:v0000102Bd00002537sv0000102Bsd00002C11* + ID_MODEL_FROM_DATABASE=QID Low-profile PCI + +pci:v0000102Bd00002537sv0000102Bsd00002C21* + ID_MODEL_FROM_DATABASE=QID LP PCI LW + +pci:v0000102Bd00002537sv0000102Bsd00002C31* + ID_MODEL_FROM_DATABASE=QID LP PCI + +pci:v0000102Bd00002537sv0000102Bsd00002C41* + ID_MODEL_FROM_DATABASE=EpicA TC4 + +pci:v0000102Bd00002537sv0000102Bsd00003001* + ID_MODEL_FROM_DATABASE=Extio F1400 + +pci:v0000102Bd00002537sv0000102Bsd00003011* + ID_MODEL_FROM_DATABASE=Extio F1220 + +pci:v0000102Bd00002537sv0000102Bsd00003041* + ID_MODEL_FROM_DATABASE=RG-200DL + +pci:v0000102Bd00002537sv0000102Bsd00003051* + ID_MODEL_FROM_DATABASE=RG-400SL + +pci:v0000102Bd00002537sv0000102Bsd00003061* + ID_MODEL_FROM_DATABASE=Extio F1420 + +pci:v0000102Bd00002537sv0000102Bsd00003081* + ID_MODEL_FROM_DATABASE=Extio F1240 + +pci:v0000102Bd00002538* + ID_MODEL_FROM_DATABASE=Millenium P650 PCIe + +pci:v0000102Bd00002538sv0000102Bsd00000847* + ID_MODEL_FROM_DATABASE=RAD PCIe + +pci:v0000102Bd00002538sv0000102Bsd000008C7* + ID_MODEL_FROM_DATABASE=Millennium P650 PCIe 128MB + +pci:v0000102Bd00002538sv0000102Bsd00000907* + ID_MODEL_FROM_DATABASE=Millennium P650 PCIe 64MB + +pci:v0000102Bd00002538sv0000102Bsd00000947* + ID_MODEL_FROM_DATABASE=Parhelia APVe + +pci:v0000102Bd00002538sv0000102Bsd00000987* + ID_MODEL_FROM_DATABASE=ATC PCIe 4MP + +pci:v0000102Bd00002538sv0000102Bsd00001047* + ID_MODEL_FROM_DATABASE=Millennium P650 LP PCIe 128MB + +pci:v0000102Bd00002538sv0000102Bsd00001087* + ID_MODEL_FROM_DATABASE=Millennium P650 LP PCIe 64MB + +pci:v0000102Bd00002538sv0000102Bsd00001801* + ID_MODEL_FROM_DATABASE=Millenium P650 PCIe x1 + +pci:v0000102Bd00002538sv0000102Bsd00002538* + ID_MODEL_FROM_DATABASE=Parhelia APVe + +pci:v0000102Bd00002538sv0000102Bsd00003007* + ID_MODEL_FROM_DATABASE=QID Low-profile PCIe + +pci:v0000102Bd00002538sv0000102Bsd00003087* + ID_MODEL_FROM_DATABASE=Aurora VX3mp + +pci:v0000102Bd00002538sv0000102Bsd000030C7* + ID_MODEL_FROM_DATABASE=QID LP PCIe + +pci:v0000102Bd00002539* + ID_MODEL_FROM_DATABASE=Millennium P690 + +pci:v0000102Bd00002539sv0000102Bsd00000040* + ID_MODEL_FROM_DATABASE=Millenium P690 PCIe x16 + +pci:v0000102Bd00002539sv0000102Bsd00000042* + ID_MODEL_FROM_DATABASE=ONYX + +pci:v0000102Bd00002539sv0000102Bsd00000043* + ID_MODEL_FROM_DATABASE=SPECTRA + +pci:v0000102Bd00002539sv0000102Bsd00000080* + ID_MODEL_FROM_DATABASE=Millenium P690 Plus LP PCIe x16 + +pci:v0000102Bd00002539sv0000102Bsd00000081* + ID_MODEL_FROM_DATABASE=Millenium P690 LP PCIe x16 + +pci:v0000102Bd00002539sv0000102Bsd00000082* + ID_MODEL_FROM_DATABASE=RAD LPX PCIe x16 + +pci:v0000102Bd00002539sv0000102Bsd000000C0* + ID_MODEL_FROM_DATABASE=Millenium P690 Plus LP PCI + +pci:v0000102Bd00002539sv0000102Bsd000000C2* + ID_MODEL_FROM_DATABASE=Millenium P690 LP PCI + +pci:v0000102Bd00002539sv0000102Bsd000000C3* + ID_MODEL_FROM_DATABASE=RAD LPX PCI + +pci:v0000102Bd00002539sv0000102Bsd00000101* + ID_MODEL_FROM_DATABASE=Millenium P690 PCI + +pci:v0000102Bd00002539sv0000102Bsd00000140* + ID_MODEL_FROM_DATABASE=Millenium P690 LP PCIe x1 + +pci:v0000102Bd00002539sv0000102Bsd00000180* + ID_MODEL_FROM_DATABASE=Display Wall IP Decode 128 MB + +pci:v0000102Bd00004164* + ID_MODEL_FROM_DATABASE=Morphis QxT frame grabber + +pci:v0000102Bd000043B4* + ID_MODEL_FROM_DATABASE=Morphis Qxt encoding engine + +pci:v0000102Bd00004510* + ID_MODEL_FROM_DATABASE=Morphis COM port + +pci:v0000102Bd00004536* + ID_MODEL_FROM_DATABASE=VIA Framegrabber + +pci:v0000102Bd00004686* + ID_MODEL_FROM_DATABASE=Concord GX (customized Intel 82541) + +pci:v0000102Bd0000475B* + ID_MODEL_FROM_DATABASE=Solios eCL/XCL-B frame grabber + +pci:v0000102Bd0000475D* + ID_MODEL_FROM_DATABASE=Vio frame grabber family + +pci:v0000102Bd0000475Dsv0000102Bsd00004B90* + ID_MODEL_FROM_DATABASE=Vio Duo frame grabber (single channel) + +pci:v0000102Bd0000475Dsv0000102Bsd00004B91* + ID_MODEL_FROM_DATABASE=Vio Duo frame grabber + +pci:v0000102Bd0000475Dsv0000102Bsd00004B92* + ID_MODEL_FROM_DATABASE=Vio Analog frame grabber + +pci:v0000102Bd0000475Dsv0000102Bsd00004B93* + ID_MODEL_FROM_DATABASE=Vio SDI Frame Grabber + +pci:v0000102Bd0000475Dsv0000102Bsd00004B94* + ID_MODEL_FROM_DATABASE=Vio DVI-A frame grabber + +pci:v0000102Bd0000475F* + ID_MODEL_FROM_DATABASE=Solios (single-Full) CL frame grabber + +pci:v0000102Bd0000475Fsv0000102Bsd0000475F* + ID_MODEL_FROM_DATABASE=Solios eCL/XCL-F frame grabber + +pci:v0000102Bd0000475Fsv0000102Bsd00004D5F* + ID_MODEL_FROM_DATABASE=Solios eV-CL (single-Full) frame grabber + +pci:v0000102Bd0000475Fsv0000102Bsd00004E5F* + ID_MODEL_FROM_DATABASE=Solios eM-CL (single-Full) frame grabber + +pci:v0000102Bd000047A1* + ID_MODEL_FROM_DATABASE=Solios eA/XA frame grabber + +pci:v0000102Bd000047A1sv0000102Bsd00004BE0* + ID_MODEL_FROM_DATABASE=Solios eA/XA (single) frame grabber + +pci:v0000102Bd000047A1sv0000102Bsd00004BE1* + ID_MODEL_FROM_DATABASE=Solios eA/XA (dual) frame grabber + +pci:v0000102Bd000047A1sv0000102Bsd00004BE2* + ID_MODEL_FROM_DATABASE=Solios eA/XA (quad) frame grabber + +pci:v0000102Bd000047A2* + ID_MODEL_FROM_DATABASE=Solios COM port + +pci:v0000102Bd000047C1* + ID_MODEL_FROM_DATABASE=Solios (dual-Base/single-Medium) CL frame grabber + +pci:v0000102Bd000047C1sv0000102Bsd00000000* + ID_MODEL_FROM_DATABASE=Solios frame grabber + +pci:v0000102Bd000047C1sv0000102Bsd00004B80* + ID_MODEL_FROM_DATABASE=Solios eCL/XCL (single-Medium) frame grabber + +pci:v0000102Bd000047C1sv0000102Bsd00004B81* + ID_MODEL_FROM_DATABASE=Solios eCL/XCL (dual-Base) frame grabber + +pci:v0000102Bd000047C1sv0000102Bsd00004D80* + ID_MODEL_FROM_DATABASE=Solios eV-CL (single-Medium) frame grabber + +pci:v0000102Bd000047C1sv0000102Bsd00004D81* + ID_MODEL_FROM_DATABASE=Solios eV-CL (dual-Base) frame grabber + +pci:v0000102Bd000047C1sv0000102Bsd00004E80* + ID_MODEL_FROM_DATABASE=Solios eM-CL (single-Medium) frame grabber + +pci:v0000102Bd000047C1sv0000102Bsd00004E81* + ID_MODEL_FROM_DATABASE=Solios eM-CL (dual-Base) frame grabber + +pci:v0000102Bd000047C2* + ID_MODEL_FROM_DATABASE=Solios COM port + +pci:v0000102Bd00004949* + ID_MODEL_FROM_DATABASE=Radient frame grabber family + +pci:v0000102Bd00004949sv0000102Bsd00000010* + ID_MODEL_FROM_DATABASE=Radient eCL (Single-full) frame grabber + +pci:v0000102Bd00004949sv0000102Bsd00000020* + ID_MODEL_FROM_DATABASE=Radient eCL (Dual-base) frame grabber + +pci:v0000102Bd00004949sv0000102Bsd00000030* + ID_MODEL_FROM_DATABASE=Radient eCL (Dual-full) frame grabber + +pci:v0000102Bd00004949sv0000102Bsd00000040* + ID_MODEL_FROM_DATABASE=Radient eCL (Quad-base) frame grabber + +pci:v0000102Bd00004949sv0000102Bsd00000050* + ID_MODEL_FROM_DATABASE=Radient eCL (Golden) frame grabber + +pci:v0000102Bd00004CDC* + ID_MODEL_FROM_DATABASE=Morphis JPEG2000 accelerator + +pci:v0000102Bd00004F54* + ID_MODEL_FROM_DATABASE=Morphis (e)Quad frame grabber + +pci:v0000102Bd00004FC5* + ID_MODEL_FROM_DATABASE=Morphis (e)Dual frame grabber + +pci:v0000102Bd00005E10* + ID_MODEL_FROM_DATABASE=Morphis aux I/O + +pci:v0000102Bd00006573* + ID_MODEL_FROM_DATABASE=Shark 10/100 Multiport SwitchNIC + +pci:v0000102C* + ID_VENDOR_FROM_DATABASE=Chips and Technologies + +pci:v0000102Cd000000B8* + ID_MODEL_FROM_DATABASE=F64310 + +pci:v0000102Cd000000C0* + ID_MODEL_FROM_DATABASE=F69000 HiQVideo + +pci:v0000102Cd000000C0sv0000102Csd000000C0* + ID_MODEL_FROM_DATABASE=F69000 HiQVideo + +pci:v0000102Cd000000C0sv00004C53sd00001000* + ID_MODEL_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard + +pci:v0000102Cd000000C0sv00004C53sd00001010* + ID_MODEL_FROM_DATABASE=CP5/CR6 mainboard + +pci:v0000102Cd000000C0sv00004C53sd00001020* + ID_MODEL_FROM_DATABASE=VR6 mainboard + +pci:v0000102Cd000000C0sv00004C53sd00001030* + ID_MODEL_FROM_DATABASE=PC5 mainboard + +pci:v0000102Cd000000C0sv00004C53sd00001050* + ID_MODEL_FROM_DATABASE=CT7 mainboard + +pci:v0000102Cd000000C0sv00004C53sd00001051* + ID_MODEL_FROM_DATABASE=CE7 mainboard + +pci:v0000102Cd000000D0* + ID_MODEL_FROM_DATABASE=F65545 + +pci:v0000102Cd000000D8* + ID_MODEL_FROM_DATABASE=F65545 + +pci:v0000102Cd000000DC* + ID_MODEL_FROM_DATABASE=F65548 + +pci:v0000102Cd000000E0* + ID_MODEL_FROM_DATABASE=F65550 + +pci:v0000102Cd000000E4* + ID_MODEL_FROM_DATABASE=F65554 + +pci:v0000102Cd000000E5* + ID_MODEL_FROM_DATABASE=F65555 HiQVPro + +pci:v0000102Cd000000E5sv00000E11sd0000B049* + ID_MODEL_FROM_DATABASE=Armada 1700 Laptop Display Controller + +pci:v0000102Cd000000E5sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Satellite Pro/Satellite + +pci:v0000102Cd000000F0* + ID_MODEL_FROM_DATABASE=F68554 + +pci:v0000102Cd000000F4* + ID_MODEL_FROM_DATABASE=F68554 HiQVision + +pci:v0000102Cd000000F5* + ID_MODEL_FROM_DATABASE=F68555 + +pci:v0000102Cd00000C30* + ID_MODEL_FROM_DATABASE=F69030 + +pci:v0000102Cd00000C30sv00004C53sd00001000* + ID_MODEL_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard + +pci:v0000102Cd00000C30sv00004C53sd00001050* + ID_MODEL_FROM_DATABASE=CT7 mainboard + +pci:v0000102Cd00000C30sv00004C53sd00001051* + ID_MODEL_FROM_DATABASE=CE7 mainboard + +pci:v0000102Cd00000C30sv00004C53sd00001080* + ID_MODEL_FROM_DATABASE=CT8 mainboard + +pci:v0000102D* + ID_VENDOR_FROM_DATABASE=Wyse Technology Inc. + +pci:v0000102Dd000050DC* + ID_MODEL_FROM_DATABASE=3328 Audio + +pci:v0000102E* + ID_VENDOR_FROM_DATABASE=Olivetti Advanced Technology + +pci:v0000102F* + ID_VENDOR_FROM_DATABASE=Toshiba America + +pci:v0000102Fd00000009* + ID_MODEL_FROM_DATABASE=r4x00 + +pci:v0000102Fd0000000A* + ID_MODEL_FROM_DATABASE=TX3927 MIPS RISC PCI Controller + +pci:v0000102Fd00000020* + ID_MODEL_FROM_DATABASE=ATM Meteor 155 + +pci:v0000102Fd00000020sv0000102Fsd000000F8* + ID_MODEL_FROM_DATABASE=ATM Meteor 155 + +pci:v0000102Fd00000030* + ID_MODEL_FROM_DATABASE=TC35815CF PCI 10/100 Mbit Ethernet Controller + +pci:v0000102Fd00000031* + ID_MODEL_FROM_DATABASE=TC35815CF PCI 10/100 Mbit Ethernet Controller with WOL + +pci:v0000102Fd00000032* + ID_MODEL_FROM_DATABASE=TC35815CF PCI 10/100 Mbit Ethernet Controller on TX4939 + +pci:v0000102Fd00000105* + ID_MODEL_FROM_DATABASE=TC86C001 [goku-s] IDE + +pci:v0000102Fd00000106* + ID_MODEL_FROM_DATABASE=TC86C001 [goku-s] USB 1.1 Host + +pci:v0000102Fd00000107* + ID_MODEL_FROM_DATABASE=TC86C001 [goku-s] USB Device Controller + +pci:v0000102Fd00000108* + ID_MODEL_FROM_DATABASE=TC86C001 [goku-s] I2C/SIO/GPIO Controller + +pci:v0000102Fd00000180* + ID_MODEL_FROM_DATABASE=TX4927/38 MIPS RISC PCI Controller + +pci:v0000102Fd00000181* + ID_MODEL_FROM_DATABASE=TX4925 MIPS RISC PCI Controller + +pci:v0000102Fd00000182* + ID_MODEL_FROM_DATABASE=TX4937 MIPS RISC PCI Controller + +pci:v0000102Fd000001B4* + ID_MODEL_FROM_DATABASE=Celleb platform IDE interface + +pci:v0000102Fd000001B5* + ID_MODEL_FROM_DATABASE=SCC USB 2.0 EHCI controller + +pci:v0000102Fd000001B6* + ID_MODEL_FROM_DATABASE=SCC USB 1.1 OHCI controller + +pci:v00001030* + ID_VENDOR_FROM_DATABASE=TMC Research + +pci:v00001031* + ID_VENDOR_FROM_DATABASE=Miro Computer Products AG + +pci:v00001031d00005601* + ID_MODEL_FROM_DATABASE=DC20 ASIC + +pci:v00001031d00005607* + ID_MODEL_FROM_DATABASE=Video I/O & motion JPEG compressor + +pci:v00001031d00005631* + ID_MODEL_FROM_DATABASE=Media 3D + +pci:v00001031d00006057* + ID_MODEL_FROM_DATABASE=MiroVideo DC10/DC30+ + +pci:v00001032* + ID_VENDOR_FROM_DATABASE=Compaq + +pci:v00001033* + ID_VENDOR_FROM_DATABASE=NEC Corporation + +pci:v00001033d00000000* + ID_MODEL_FROM_DATABASE=Vr4181A USB Host or Function Control Unit + +pci:v00001033d00000001* + ID_MODEL_FROM_DATABASE=PCI to 486-like bus Bridge + +pci:v00001033d00000002* + ID_MODEL_FROM_DATABASE=PCI to VL98 Bridge + +pci:v00001033d00000003* + ID_MODEL_FROM_DATABASE=ATM Controller + +pci:v00001033d00000004* + ID_MODEL_FROM_DATABASE=R4000 PCI Bridge + +pci:v00001033d00000005* + ID_MODEL_FROM_DATABASE=PCI to 486-like bus Bridge + +pci:v00001033d00000006* + ID_MODEL_FROM_DATABASE=PC-9800 Graphic Accelerator + +pci:v00001033d00000007* + ID_MODEL_FROM_DATABASE=PCI to UX-Bus Bridge + +pci:v00001033d00000008* + ID_MODEL_FROM_DATABASE=PC-9800 Graphic Accelerator + +pci:v00001033d00000009* + ID_MODEL_FROM_DATABASE=PCI to PC9800 Core-Graph Bridge + +pci:v00001033d00000016* + ID_MODEL_FROM_DATABASE=PCI to VL Bridge + +pci:v00001033d0000001A* + ID_MODEL_FROM_DATABASE=[Nile II] + +pci:v00001033d00000021* + ID_MODEL_FROM_DATABASE=Vrc4373 [Nile I] + +pci:v00001033d00000029* + ID_MODEL_FROM_DATABASE=PowerVR PCX1 + +pci:v00001033d0000002A* + ID_MODEL_FROM_DATABASE=PowerVR 3D + +pci:v00001033d0000002C* + ID_MODEL_FROM_DATABASE=Star Alpha 2 + +pci:v00001033d0000002D* + ID_MODEL_FROM_DATABASE=PCI to C-bus Bridge + +pci:v00001033d00000035* + ID_MODEL_FROM_DATABASE=OHCI USB Controller + +pci:v00001033d00000035sv00001033sd00000035* + ID_MODEL_FROM_DATABASE=USB Controller + +pci:v00001033d00000035sv0000103Csd00001293* + ID_MODEL_FROM_DATABASE=USB add-in card + +pci:v00001033d00000035sv0000103Csd00001294* + ID_MODEL_FROM_DATABASE=USB 2.0 add-in card + +pci:v00001033d00000035sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=USB + +pci:v00001033d00000035sv000012EEsd00007000* + ID_MODEL_FROM_DATABASE=Root Hub + +pci:v00001033d00000035sv000014C2sd00000105* + ID_MODEL_FROM_DATABASE=PTI-205N USB 2.0 Host Controller + +pci:v00001033d00000035sv00001799sd00000001* + ID_MODEL_FROM_DATABASE=Root Hub + +pci:v00001033d00000035sv00001931sd0000000A* + ID_MODEL_FROM_DATABASE=GlobeTrotter Fusion Quad Lite (PPP data) + +pci:v00001033d00000035sv00001931sd0000000B* + ID_MODEL_FROM_DATABASE=GlobeTrotter Fusion Quad Lite (GSM data) + +pci:v00001033d00000035sv0000807Dsd00000035* + ID_MODEL_FROM_DATABASE=PCI-USB2 (OHCI subsystem) + +pci:v00001033d0000003B* + ID_MODEL_FROM_DATABASE=PCI to C-bus Bridge + +pci:v00001033d0000003E* + ID_MODEL_FROM_DATABASE=NAPCCARD Cardbus Controller + +pci:v00001033d00000046* + ID_MODEL_FROM_DATABASE=PowerVR PCX2 [midas] + +pci:v00001033d0000005A* + ID_MODEL_FROM_DATABASE=Vrc5074 [Nile 4] + +pci:v00001033d00000063* + ID_MODEL_FROM_DATABASE=uPD72862 [Firewarden] IEEE1394 OHCI 1.0 Link Controller + +pci:v00001033d00000067* + ID_MODEL_FROM_DATABASE=PowerVR Neon 250 Chipset + +pci:v00001033d00000067sv00001010sd00000020* + ID_MODEL_FROM_DATABASE=PowerVR Neon 250 AGP 32Mb + +pci:v00001033d00000067sv00001010sd00000080* + ID_MODEL_FROM_DATABASE=PowerVR Neon 250 AGP 16Mb + +pci:v00001033d00000067sv00001010sd00000088* + ID_MODEL_FROM_DATABASE=PowerVR Neon 250 16Mb + +pci:v00001033d00000067sv00001010sd00000090* + ID_MODEL_FROM_DATABASE=PowerVR Neon 250 AGP 16Mb + +pci:v00001033d00000067sv00001010sd00000098* + ID_MODEL_FROM_DATABASE=PowerVR Neon 250 16Mb + +pci:v00001033d00000067sv00001010sd000000A0* + ID_MODEL_FROM_DATABASE=PowerVR Neon 250 AGP 32Mb + +pci:v00001033d00000067sv00001010sd000000A8* + ID_MODEL_FROM_DATABASE=PowerVR Neon 250 32Mb + +pci:v00001033d00000067sv00001010sd00000120* + ID_MODEL_FROM_DATABASE=PowerVR Neon 250 AGP 32Mb + +pci:v00001033d00000072* + ID_MODEL_FROM_DATABASE=uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr + +pci:v00001033d00000074* + ID_MODEL_FROM_DATABASE=56k Voice Modem + +pci:v00001033d00000074sv00001033sd00008014* + ID_MODEL_FROM_DATABASE=RCV56ACF 56k Voice Modem + +pci:v00001033d0000009B* + ID_MODEL_FROM_DATABASE=Vrc5476 + +pci:v00001033d000000A5* + ID_MODEL_FROM_DATABASE=VRC4173 + +pci:v00001033d000000A6* + ID_MODEL_FROM_DATABASE=VRC5477 AC97 + +pci:v00001033d000000CD* + ID_MODEL_FROM_DATABASE=uPD72870 [Firewarden] IEEE1394a OHCI 1.0 Link/3-port PHY Controller + +pci:v00001033d000000CDsv000012EEsd00008011* + ID_MODEL_FROM_DATABASE=Root hub + +pci:v00001033d000000CE* + ID_MODEL_FROM_DATABASE=uPD72871 [Firewarden] IEEE1394a OHCI 1.0 Link/1-port PHY Controller + +pci:v00001033d000000DF* + ID_MODEL_FROM_DATABASE=Vr4131 + +pci:v00001033d000000E0* + ID_MODEL_FROM_DATABASE=uPD72010x USB 2.0 Controller + +pci:v00001033d000000E0sv000012EEsd00007001* + ID_MODEL_FROM_DATABASE=Root hub + +pci:v00001033d000000E0sv000014C2sd00000205* + ID_MODEL_FROM_DATABASE=PTI-205N USB 2.0 Host Controller + +pci:v00001033d000000E0sv00001799sd00000002* + ID_MODEL_FROM_DATABASE=Root Hub + +pci:v00001033d000000E0sv0000807Dsd00001043* + ID_MODEL_FROM_DATABASE=PCI-USB2 (EHCI subsystem) + +pci:v00001033d000000E7* + ID_MODEL_FROM_DATABASE=uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller + +pci:v00001033d000000F2* + ID_MODEL_FROM_DATABASE=uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller + +pci:v00001033d000000F3* + ID_MODEL_FROM_DATABASE=uPD6113x Multimedia Decoder/Processor [EMMA2] + +pci:v00001033d0000010C* + ID_MODEL_FROM_DATABASE=VR7701 + +pci:v00001033d00000125* + ID_MODEL_FROM_DATABASE=uPD720400 PCI Express - PCI/PCI-X Bridge + +pci:v00001033d0000013A* + ID_MODEL_FROM_DATABASE=Dual Tuner/MPEG Encoder + +pci:v00001033d00000194* + ID_MODEL_FROM_DATABASE=uPD720200 USB 3.0 Host Controller + +pci:v00001033d00000194sv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00001033d00000194sv00001028sd000004B2* + ID_MODEL_FROM_DATABASE=Vostro 3350 + +pci:v00001033d00000194sv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v00001033d00000194sv00001043sd00008413* + ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard + +pci:v00001033d00000194sv00001B96sd00000001* + ID_MODEL_FROM_DATABASE=USB 3.0 PCIe Card + +pci:v00001033d000001E7* + ID_MODEL_FROM_DATABASE=uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller + +pci:v00001033d000001F2* + ID_MODEL_FROM_DATABASE=uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller + +pci:v00001034* + ID_VENDOR_FROM_DATABASE=Framatome Connectors USA Inc. + +pci:v00001035* + ID_VENDOR_FROM_DATABASE=Comp. & Comm. Research Lab + +pci:v00001036* + ID_VENDOR_FROM_DATABASE=Future Domain Corp. + +pci:v00001036d00000000* + ID_MODEL_FROM_DATABASE=TMC-18C30 [36C70] + +pci:v00001037* + ID_VENDOR_FROM_DATABASE=Hitachi Micro Systems + +pci:v00001038* + ID_VENDOR_FROM_DATABASE=AMP, Inc + +pci:v00001039* + ID_VENDOR_FROM_DATABASE=Silicon Integrated Systems [SiS] + +pci:v00001039d00000001* + ID_MODEL_FROM_DATABASE=AGP Port (virtual PCI-to-PCI bridge) + +pci:v00001039d00000002* + ID_MODEL_FROM_DATABASE=AGP Port (virtual PCI-to-PCI bridge) + +pci:v00001039d00000003* + ID_MODEL_FROM_DATABASE=AGP Port (virtual PCI-to-PCI bridge) + +pci:v00001039d00000004* + ID_MODEL_FROM_DATABASE=PCI-to-PCI bridge + +pci:v00001039d00000006* + ID_MODEL_FROM_DATABASE=85C501/2/3 + +pci:v00001039d00000008* + ID_MODEL_FROM_DATABASE=SiS85C503/5513 (LPC Bridge) + +pci:v00001039d00000009* + ID_MODEL_FROM_DATABASE=5595 Power Management Controller + +pci:v00001039d0000000A* + ID_MODEL_FROM_DATABASE=PCI-to-PCI bridge + +pci:v00001039d00000016* + ID_MODEL_FROM_DATABASE=SiS961/2/3 SMBus controller + +pci:v00001039d00000018* + ID_MODEL_FROM_DATABASE=SiS85C503/5513 (LPC Bridge) + +pci:v00001039d00000180* + ID_MODEL_FROM_DATABASE=RAID bus controller 180 SATA/PATA [SiS] + +pci:v00001039d00000181* + ID_MODEL_FROM_DATABASE=SATA + +pci:v00001039d00000182* + ID_MODEL_FROM_DATABASE=182 SATA/RAID Controller + +pci:v00001039d00000182sv00001734sd00001095* + ID_MODEL_FROM_DATABASE=D2030-A1 + +pci:v00001039d00000186* + ID_MODEL_FROM_DATABASE=AHCI Controller (0106) + +pci:v00001039d00000190* + ID_MODEL_FROM_DATABASE=190 Ethernet Adapter + +pci:v00001039d00000191* + ID_MODEL_FROM_DATABASE=191 Gigabit Ethernet Adapter + +pci:v00001039d00000200* + ID_MODEL_FROM_DATABASE=5597/5598/6326 VGA + +pci:v00001039d00000200sv00001039sd00000000* + ID_MODEL_FROM_DATABASE=SiS5597 SVGA (Shared RAM) + +pci:v00001039d00000204* + ID_MODEL_FROM_DATABASE=82C204 + +pci:v00001039d00000205* + ID_MODEL_FROM_DATABASE=SG86C205 + +pci:v00001039d00000300* + ID_MODEL_FROM_DATABASE=300/305 PCI/AGP VGA Display Adapter + +pci:v00001039d00000300sv0000107Dsd00002720* + ID_MODEL_FROM_DATABASE=Leadtek WinFast VR300 + +pci:v00001039d00000310* + ID_MODEL_FROM_DATABASE=315H PCI/AGP VGA Display Adapter + +pci:v00001039d00000315* + ID_MODEL_FROM_DATABASE=315 PCI/AGP VGA Display Adapter + +pci:v00001039d00000325* + ID_MODEL_FROM_DATABASE=315PRO PCI/AGP VGA Display Adapter + +pci:v00001039d00000330* + ID_MODEL_FROM_DATABASE=330 [Xabre] PCI/AGP VGA Display Adapter + +pci:v00001039d00000406* + ID_MODEL_FROM_DATABASE=85C501/2 + +pci:v00001039d00000496* + ID_MODEL_FROM_DATABASE=85C496 + +pci:v00001039d00000530* + ID_MODEL_FROM_DATABASE=530 Host + +pci:v00001039d00000540* + ID_MODEL_FROM_DATABASE=540 Host + +pci:v00001039d00000550* + ID_MODEL_FROM_DATABASE=550 Host + +pci:v00001039d00000597* + ID_MODEL_FROM_DATABASE=5513C + +pci:v00001039d00000601* + ID_MODEL_FROM_DATABASE=85C601 + +pci:v00001039d00000620* + ID_MODEL_FROM_DATABASE=620 Host + +pci:v00001039d00000630* + ID_MODEL_FROM_DATABASE=630 Host + +pci:v00001039d00000633* + ID_MODEL_FROM_DATABASE=633 Host + +pci:v00001039d00000635* + ID_MODEL_FROM_DATABASE=635 Host + +pci:v00001039d00000645* + ID_MODEL_FROM_DATABASE=SiS645 Host & Memory & AGP Controller + +pci:v00001039d00000646* + ID_MODEL_FROM_DATABASE=SiS645DX Host & Memory & AGP Controller + +pci:v00001039d00000648* + ID_MODEL_FROM_DATABASE=645xx + +pci:v00001039d00000649* + ID_MODEL_FROM_DATABASE=SiS649 Host + +pci:v00001039d00000650* + ID_MODEL_FROM_DATABASE=650/M650 Host + +pci:v00001039d00000651* + ID_MODEL_FROM_DATABASE=651 Host + +pci:v00001039d00000655* + ID_MODEL_FROM_DATABASE=655 Host + +pci:v00001039d00000660* + ID_MODEL_FROM_DATABASE=660 Host + +pci:v00001039d00000661* + ID_MODEL_FROM_DATABASE=661FX/M661FX/M661MX Host + +pci:v00001039d00000662* + ID_MODEL_FROM_DATABASE=662 Host + +pci:v00001039d00000671* + ID_MODEL_FROM_DATABASE=671MX + +pci:v00001039d00000730* + ID_MODEL_FROM_DATABASE=730 Host + +pci:v00001039d00000733* + ID_MODEL_FROM_DATABASE=733 Host + +pci:v00001039d00000735* + ID_MODEL_FROM_DATABASE=735 Host + +pci:v00001039d00000740* + ID_MODEL_FROM_DATABASE=740 Host + +pci:v00001039d00000741* + ID_MODEL_FROM_DATABASE=741/741GX/M741 Host + +pci:v00001039d00000741sv00001849sd00000741* + ID_MODEL_FROM_DATABASE=K7S41/K7S41GX motherboard + +pci:v00001039d00000745* + ID_MODEL_FROM_DATABASE=745 Host + +pci:v00001039d00000746* + ID_MODEL_FROM_DATABASE=746 Host + +pci:v00001039d00000755* + ID_MODEL_FROM_DATABASE=755 Host + +pci:v00001039d00000760* + ID_MODEL_FROM_DATABASE=760/M760 Host + +pci:v00001039d00000761* + ID_MODEL_FROM_DATABASE=761/M761 Host + +pci:v00001039d00000761sv00001734sd00001099* + ID_MODEL_FROM_DATABASE=D2030-A1 Motherboard + +pci:v00001039d00000900* + ID_MODEL_FROM_DATABASE=SiS900 PCI Fast Ethernet + +pci:v00001039d00000900sv00001019sd00000A14* + ID_MODEL_FROM_DATABASE=K7S5A motherboard + +pci:v00001039d00000900sv00001039sd00000900* + ID_MODEL_FROM_DATABASE=SiS900 10/100 Ethernet Adapter onboard [Asus P4SC-EA] + +pci:v00001039d00000900sv00001043sd00008035* + ID_MODEL_FROM_DATABASE=CUSI-FX motherboard + +pci:v00001039d00000900sv00001043sd000080A7* + ID_MODEL_FROM_DATABASE=Motherboard P4S800D-X + +pci:v00001039d00000900sv00001462sd00000900* + ID_MODEL_FROM_DATABASE=MS-6701 motherboard + +pci:v00001039d00000961* + ID_MODEL_FROM_DATABASE=SiS961 [MuTIOL Media IO] + +pci:v00001039d00000962* + ID_MODEL_FROM_DATABASE=SiS962 [MuTIOL Media IO] LPC Controller + +pci:v00001039d00000963* + ID_MODEL_FROM_DATABASE=SiS963 [MuTIOL Media IO] LPC Controller + +pci:v00001039d00000964* + ID_MODEL_FROM_DATABASE=SiS964 [MuTIOL Media IO] LPC Controller + +pci:v00001039d00000965* + ID_MODEL_FROM_DATABASE=SiS965 [MuTIOL Media IO] + +pci:v00001039d00000966* + ID_MODEL_FROM_DATABASE=SiS966 [MuTIOL Media IO] + +pci:v00001039d00000968* + ID_MODEL_FROM_DATABASE=SiS968 [MuTIOL Media IO] + +pci:v00001039d00001180* + ID_MODEL_FROM_DATABASE=SATA Controller / IDE mode + +pci:v00001039d00001182* + ID_MODEL_FROM_DATABASE=SATA Controller / RAID mode + +pci:v00001039d00001183* + ID_MODEL_FROM_DATABASE=SATA Controller / IDE mode + +pci:v00001039d00001184* + ID_MODEL_FROM_DATABASE=AHCI Controller / RAID mode + +pci:v00001039d00001185* + ID_MODEL_FROM_DATABASE=AHCI IDE Controller (0106) + +pci:v00001039d00003602* + ID_MODEL_FROM_DATABASE=83C602 + +pci:v00001039d00005107* + ID_MODEL_FROM_DATABASE=5107 + +pci:v00001039d00005300* + ID_MODEL_FROM_DATABASE=SiS540 PCI Display Adapter + +pci:v00001039d00005315* + ID_MODEL_FROM_DATABASE=550 PCI/AGP VGA Display Adapter + +pci:v00001039d00005401* + ID_MODEL_FROM_DATABASE=486 PCI Chipset + +pci:v00001039d00005511* + ID_MODEL_FROM_DATABASE=5511/5512 + +pci:v00001039d00005513* + ID_MODEL_FROM_DATABASE=5513 IDE Controller + +pci:v00001039d00005513sv00001019sd00000970* + ID_MODEL_FROM_DATABASE=P6STP-FL motherboard + +pci:v00001039d00005513sv00001039sd00005513* + ID_MODEL_FROM_DATABASE=SiS5513 EIDE Controller (A,B step) + +pci:v00001039d00005513sv00001043sd00008035* + ID_MODEL_FROM_DATABASE=CUSI-FX motherboard + +pci:v00001039d00005513sv00001462sd00007010* + ID_MODEL_FROM_DATABASE=MS-6701 motherboard + +pci:v00001039d00005513sv00001631sd00005513* + ID_MODEL_FROM_DATABASE=GA-8SIML Rev1.0 Motherboard + +pci:v00001039d00005513sv00001734sd00001095* + ID_MODEL_FROM_DATABASE=D2030-A1 Motherboard + +pci:v00001039d00005517* + ID_MODEL_FROM_DATABASE=5517 + +pci:v00001039d00005571* + ID_MODEL_FROM_DATABASE=5571 + +pci:v00001039d00005581* + ID_MODEL_FROM_DATABASE=5581 Pentium Chipset + +pci:v00001039d00005582* + ID_MODEL_FROM_DATABASE=5582 + +pci:v00001039d00005591* + ID_MODEL_FROM_DATABASE=5591/5592 Host + +pci:v00001039d00005596* + ID_MODEL_FROM_DATABASE=5596 Pentium Chipset + +pci:v00001039d00005597* + ID_MODEL_FROM_DATABASE=5597 [SiS5582] + +pci:v00001039d00005600* + ID_MODEL_FROM_DATABASE=5600 Host + +pci:v00001039d00006204* + ID_MODEL_FROM_DATABASE=Video decoder & MPEG interface + +pci:v00001039d00006205* + ID_MODEL_FROM_DATABASE=VGA Controller + +pci:v00001039d00006236* + ID_MODEL_FROM_DATABASE=6236 3D-AGP + +pci:v00001039d00006300* + ID_MODEL_FROM_DATABASE=630/730 PCI/AGP VGA Display Adapter + +pci:v00001039d00006300sv00001019sd00000970* + ID_MODEL_FROM_DATABASE=P6STP-FL motherboard + +pci:v00001039d00006300sv00001043sd00008035* + ID_MODEL_FROM_DATABASE=CUSI-FX motherboard + +pci:v00001039d00006300sv0000104Dsd000080E2* + ID_MODEL_FROM_DATABASE=VAIO PCV-J200 + +pci:v00001039d00006306* + ID_MODEL_FROM_DATABASE=530/620 PCI/AGP VGA Display Adapter + +pci:v00001039d00006325* + ID_MODEL_FROM_DATABASE=65x/M650/740 PCI/AGP VGA Display Adapter + +pci:v00001039d00006325sv00001039sd00006325* + ID_MODEL_FROM_DATABASE=SiS 651 onboard [Asus P4SC-EA] + +pci:v00001039d00006325sv00001631sd00001004* + ID_MODEL_FROM_DATABASE=SiS 651C onboard [Gigabyte GA-8SIML Rev1.0] + +pci:v00001039d00006326* + ID_MODEL_FROM_DATABASE=86C326 5598/6326 + +pci:v00001039d00006326sv00001039sd00006326* + ID_MODEL_FROM_DATABASE=SiS6326 GUI Accelerator + +pci:v00001039d00006326sv00001092sd00000A50* + ID_MODEL_FROM_DATABASE=SpeedStar A50 + +pci:v00001039d00006326sv00001092sd00000A70* + ID_MODEL_FROM_DATABASE=SpeedStar A70 + +pci:v00001039d00006326sv00001092sd00004910* + ID_MODEL_FROM_DATABASE=SpeedStar A70 + +pci:v00001039d00006326sv00001092sd00004920* + ID_MODEL_FROM_DATABASE=SpeedStar A70 + +pci:v00001039d00006326sv000010B0sd00006326* + ID_MODEL_FROM_DATABASE=S6110-B (AGP) + +pci:v00001039d00006326sv00001569sd00006326* + ID_MODEL_FROM_DATABASE=SiS6326 GUI Accelerator + +pci:v00001039d00006330* + ID_MODEL_FROM_DATABASE=661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter + +pci:v00001039d00006330sv00001039sd00006330* + ID_MODEL_FROM_DATABASE=[M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter + +pci:v00001039d00006330sv00001043sd00008113* + ID_MODEL_FROM_DATABASE=SiS Real 256E (ASUS P5S800-VM motherboard) + +pci:v00001039d00006330sv00001458sd0000D000* + ID_MODEL_FROM_DATABASE=SiS661FX GUI 2D/3D Accelerator + +pci:v00001039d00006330sv00001734sd00001099* + ID_MODEL_FROM_DATABASE=D2030-A1 + +pci:v00001039d00006350* + ID_MODEL_FROM_DATABASE=770/670 PCIE VGA Display Adapter + +pci:v00001039d00006351* + ID_MODEL_FROM_DATABASE=771/671 PCIE VGA Display Adapter + +pci:v00001039d00007001* + ID_MODEL_FROM_DATABASE=USB 1.1 Controller + +pci:v00001039d00007001sv00001019sd00000A14* + ID_MODEL_FROM_DATABASE=K7S5A motherboard + +pci:v00001039d00007001sv00001039sd00007000* + ID_MODEL_FROM_DATABASE=Onboard USB Controller + +pci:v00001039d00007001sv00001462sd00005470* + ID_MODEL_FROM_DATABASE=ECS K7SOM+ motherboard + +pci:v00001039d00007001sv00001462sd00007010* + ID_MODEL_FROM_DATABASE=MS-6701 motherboard + +pci:v00001039d00007001sv00001734sd00001095* + ID_MODEL_FROM_DATABASE=D2030-A1 Motherboard + +pci:v00001039d00007002* + ID_MODEL_FROM_DATABASE=USB 2.0 Controller + +pci:v00001039d00007002sv00001462sd00005470* + ID_MODEL_FROM_DATABASE=K7SOM+ 5.2C Motherboard + +pci:v00001039d00007002sv00001462sd00007010* + ID_MODEL_FROM_DATABASE=MS-6701 motherboard + +pci:v00001039d00007002sv00001509sd00007002* + ID_MODEL_FROM_DATABASE=Onboard USB Controller + +pci:v00001039d00007002sv00001734sd00001095* + ID_MODEL_FROM_DATABASE=D2030-A1 + +pci:v00001039d00007007* + ID_MODEL_FROM_DATABASE=FireWire Controller + +pci:v00001039d00007007sv00001462sd0000701D* + ID_MODEL_FROM_DATABASE=MS-6701 + +pci:v00001039d00007012* + ID_MODEL_FROM_DATABASE=SiS7012 AC'97 Sound Controller + +pci:v00001039d00007012sv00001019sd00000F05* + ID_MODEL_FROM_DATABASE=A928 (i-Buddie) + +pci:v00001039d00007012sv00001039sd00007012* + ID_MODEL_FROM_DATABASE=SiS 7012 onboard [Asus P4SC-EA] AC'97 Sound Controller + +pci:v00001039d00007012sv00001043sd0000818F* + ID_MODEL_FROM_DATABASE=A8S-X Motherboard + +pci:v00001039d00007012sv000013F6sd00000300* + ID_MODEL_FROM_DATABASE=CMI9739(A) on ECS K7SOM+ motherboard + +pci:v00001039d00007012sv00001462sd00005850* + ID_MODEL_FROM_DATABASE=MSI 648 Max (MS-6585) + +pci:v00001039d00007012sv00001462sd00007010* + ID_MODEL_FROM_DATABASE=MS-6701 motherboard + +pci:v00001039d00007012sv000015BDsd00001001* + ID_MODEL_FROM_DATABASE=DFI 661FX motherboard + +pci:v00001039d00007012sv00001734sd0000109F* + ID_MODEL_FROM_DATABASE=D2030-A1 Motherboard + +pci:v00001039d00007012sv00001849sd00007012* + ID_MODEL_FROM_DATABASE=K7S41GX motherboard + +pci:v00001039d00007013* + ID_MODEL_FROM_DATABASE=AC'97 Modem Controller + +pci:v00001039d00007016* + ID_MODEL_FROM_DATABASE=SiS7016 PCI Fast Ethernet Adapter + +pci:v00001039d00007016sv00001039sd00007016* + ID_MODEL_FROM_DATABASE=SiS7016 10/100 Ethernet Adapter + +pci:v00001039d00007018* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv00001014sd000001B6* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv00001014sd000001B7* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv00001019sd00007018* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv00001025sd0000000E* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv00001025sd00000018* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv00001039sd00007018* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv00001043sd00001453* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv00001043sd0000800B* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv0000104Dsd000080E2* + ID_MODEL_FROM_DATABASE=VAIO PCV-J200 + +pci:v00001039d00007018sv00001054sd00007018* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv0000107Dsd00005330* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv0000107Dsd00005350* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv00001170sd00003209* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv00001462sd0000400A* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv000014A4sd00002089* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv000014CDsd00002194* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv000014FFsd00001100* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv0000152Dsd00008808* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv00001558sd00001103* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv00001558sd00002200* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv00001563sd00007018* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv000015C5sd00000111* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv0000270Fsd0000A171* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007018sv0000A0A0sd00000022* + ID_MODEL_FROM_DATABASE=SiS PCI Audio Accelerator + +pci:v00001039d00007019* + ID_MODEL_FROM_DATABASE=SiS7019 Audio Accelerator + +pci:v00001039d00007502* + ID_MODEL_FROM_DATABASE=Azalia Audio Controller + +pci:v0000103A* + ID_VENDOR_FROM_DATABASE=Seiko Epson Corporation + +pci:v0000103B* + ID_VENDOR_FROM_DATABASE=Tatung Corp. Of America + +pci:v0000103C* + ID_VENDOR_FROM_DATABASE=Hewlett-Packard Company + +pci:v0000103Cd00001005* + ID_MODEL_FROM_DATABASE=A4977A Visualize EG + +pci:v0000103Cd00001008* + ID_MODEL_FROM_DATABASE=Visualize FX + +pci:v0000103Cd00001028* + ID_MODEL_FROM_DATABASE=Tach TL Fibre Channel Host Adapter + +pci:v0000103Cd00001029* + ID_MODEL_FROM_DATABASE=Tach XL2 Fibre Channel Host Adapter + +pci:v0000103Cd00001029sv0000107Esd0000000F* + ID_MODEL_FROM_DATABASE=Interphase 5560 Fibre Channel Adapter + +pci:v0000103Cd00001029sv00009004sd00009210* + ID_MODEL_FROM_DATABASE=1Gb/2Gb Family Fibre Channel Controller + +pci:v0000103Cd00001029sv00009004sd00009211* + ID_MODEL_FROM_DATABASE=1Gb/2Gb Family Fibre Channel Controller + +pci:v0000103Cd0000102A* + ID_MODEL_FROM_DATABASE=Tach TS Fibre Channel Host Adapter + +pci:v0000103Cd0000102Asv0000107Esd0000000E* + ID_MODEL_FROM_DATABASE=Interphase 5540/5541 Fibre Channel Adapter + +pci:v0000103Cd0000102Asv00009004sd00009110* + ID_MODEL_FROM_DATABASE=1Gb/2Gb Family Fibre Channel Controller + +pci:v0000103Cd0000102Asv00009004sd00009111* + ID_MODEL_FROM_DATABASE=1Gb/2Gb Family Fibre Channel Controller + +pci:v0000103Cd00001030* + ID_MODEL_FROM_DATABASE=J2585A DeskDirect 10/100VG NIC + +pci:v0000103Cd00001031* + ID_MODEL_FROM_DATABASE=J2585B HP 10/100VG PCI LAN Adapter + +pci:v0000103Cd00001031sv0000103Csd00001040* + ID_MODEL_FROM_DATABASE=J2973A DeskDirect 10BaseT NIC + +pci:v0000103Cd00001031sv0000103Csd00001041* + ID_MODEL_FROM_DATABASE=J2585B DeskDirect 10/100VG NIC + +pci:v0000103Cd00001031sv0000103Csd00001042* + ID_MODEL_FROM_DATABASE=J2970A DeskDirect 10BaseT/2 NIC + +pci:v0000103Cd00001040* + ID_MODEL_FROM_DATABASE=J2973A DeskDirect 10BaseT NIC + +pci:v0000103Cd00001041* + ID_MODEL_FROM_DATABASE=J2585B DeskDirect 10/100 NIC + +pci:v0000103Cd00001042* + ID_MODEL_FROM_DATABASE=J2970A DeskDirect 10BaseT/2 NIC + +pci:v0000103Cd00001048* + ID_MODEL_FROM_DATABASE=Diva Serial [GSP] Multiport UART + +pci:v0000103Cd00001048sv0000103Csd00001049* + ID_MODEL_FROM_DATABASE=Tosca Console + +pci:v0000103Cd00001048sv0000103Csd0000104A* + ID_MODEL_FROM_DATABASE=Tosca Secondary + +pci:v0000103Cd00001048sv0000103Csd0000104B* + ID_MODEL_FROM_DATABASE=Maestro SP2 + +pci:v0000103Cd00001048sv0000103Csd00001223* + ID_MODEL_FROM_DATABASE=Superdome Console + +pci:v0000103Cd00001048sv0000103Csd00001226* + ID_MODEL_FROM_DATABASE=Keystone SP2 + +pci:v0000103Cd00001048sv0000103Csd00001227* + ID_MODEL_FROM_DATABASE=Powerbar SP2 + +pci:v0000103Cd00001048sv0000103Csd00001282* + ID_MODEL_FROM_DATABASE=Everest SP2 + +pci:v0000103Cd00001048sv0000103Csd00001301* + ID_MODEL_FROM_DATABASE=Diva RMP3 + +pci:v0000103Cd00001054* + ID_MODEL_FROM_DATABASE=PCI Local Bus Adapter + +pci:v0000103Cd00001064* + ID_MODEL_FROM_DATABASE=79C970 PCnet Ethernet Controller + +pci:v0000103Cd0000108B* + ID_MODEL_FROM_DATABASE=Visualize FXe + +pci:v0000103Cd000010C1* + ID_MODEL_FROM_DATABASE=NetServer Smart IRQ Router + +pci:v0000103Cd000010ED* + ID_MODEL_FROM_DATABASE=TopTools Remote Control + +pci:v0000103Cd000010F0* + ID_MODEL_FROM_DATABASE=rio System Bus Adapter + +pci:v0000103Cd000010F1* + ID_MODEL_FROM_DATABASE=rio I/O Controller + +pci:v0000103Cd00001219* + ID_MODEL_FROM_DATABASE=NetServer PCI Hot-Plug Controller + +pci:v0000103Cd0000121A* + ID_MODEL_FROM_DATABASE=NetServer SMIC Controller + +pci:v0000103Cd0000121B* + ID_MODEL_FROM_DATABASE=NetServer Legacy COM Port Decoder + +pci:v0000103Cd0000121C* + ID_MODEL_FROM_DATABASE=NetServer PCI COM Port Decoder + +pci:v0000103Cd00001229* + ID_MODEL_FROM_DATABASE=zx1 System Bus Adapter + +pci:v0000103Cd0000122A* + ID_MODEL_FROM_DATABASE=zx1 I/O Controller + +pci:v0000103Cd0000122E* + ID_MODEL_FROM_DATABASE=PCI-X Local Bus Adapter + +pci:v0000103Cd0000127B* + ID_MODEL_FROM_DATABASE=sx1000 System Bus Adapter + +pci:v0000103Cd0000127C* + ID_MODEL_FROM_DATABASE=sx1000 I/O Controller + +pci:v0000103Cd00001290* + ID_MODEL_FROM_DATABASE=Auxiliary Diva Serial Port + +pci:v0000103Cd00001290sv0000103Csd00001291* + ID_MODEL_FROM_DATABASE=Diva SP2 + +pci:v0000103Cd00001291* + ID_MODEL_FROM_DATABASE=Auxiliary Diva Serial Port + +pci:v0000103Cd000012B4* + ID_MODEL_FROM_DATABASE=zx1 QuickSilver AGP8x Local Bus Adapter + +pci:v0000103Cd000012EB* + ID_MODEL_FROM_DATABASE=sx2000 System Bus Adapter + +pci:v0000103Cd000012EC* + ID_MODEL_FROM_DATABASE=sx2000 I/O Controller + +pci:v0000103Cd000012EE* + ID_MODEL_FROM_DATABASE=PCI-X 2.0 Local Bus Adapter + +pci:v0000103Cd00001302* + ID_MODEL_FROM_DATABASE=RMP-3 Shared Memory Driver + +pci:v0000103Cd00001303* + ID_MODEL_FROM_DATABASE=RMP-3 (Remote Management Processor) + +pci:v0000103Cd00002910* + ID_MODEL_FROM_DATABASE=E2910A PCIBus Exerciser + +pci:v0000103Cd00002925* + ID_MODEL_FROM_DATABASE=E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer + +pci:v0000103Cd00003206* + ID_MODEL_FROM_DATABASE=Adaptec Embedded Serial ATA HostRAID + +pci:v0000103Cd00003220* + ID_MODEL_FROM_DATABASE=Smart Array P600 + +pci:v0000103Cd00003220sv0000103Csd00003225* + ID_MODEL_FROM_DATABASE=3 Gb/s SAS RAID + +pci:v0000103Cd00003230* + ID_MODEL_FROM_DATABASE=Smart Array Controller + +pci:v0000103Cd00003230sv0000103Csd00003223* + ID_MODEL_FROM_DATABASE=Smart Array P800 + +pci:v0000103Cd00003230sv0000103Csd00003234* + ID_MODEL_FROM_DATABASE=P400 SAS Controller + +pci:v0000103Cd00003230sv0000103Csd00003235* + ID_MODEL_FROM_DATABASE=P400i SAS Controller + +pci:v0000103Cd00003230sv0000103Csd00003237* + ID_MODEL_FROM_DATABASE=E500 SAS Controller + +pci:v0000103Cd00003230sv0000103Csd0000323D* + ID_MODEL_FROM_DATABASE=P700m SAS Controller + +pci:v0000103Cd00003238* + ID_MODEL_FROM_DATABASE=Smart Array E200i (SAS Controller) + +pci:v0000103Cd00003238sv0000103Csd00003211* + ID_MODEL_FROM_DATABASE=Smart Array E200i + +pci:v0000103Cd00003238sv0000103Csd00003212* + ID_MODEL_FROM_DATABASE=Smart Array E200 + +pci:v0000103Cd0000323A* + ID_MODEL_FROM_DATABASE=Smart Array G6 controllers + +pci:v0000103Cd0000323Asv0000103Csd00003241* + ID_MODEL_FROM_DATABASE=Smart Array P212 + +pci:v0000103Cd0000323Asv0000103Csd00003243* + ID_MODEL_FROM_DATABASE=Smart Array P410 + +pci:v0000103Cd0000323Asv0000103Csd00003245* + ID_MODEL_FROM_DATABASE=Smart Array P410i + +pci:v0000103Cd0000323Asv0000103Csd00003247* + ID_MODEL_FROM_DATABASE=Smart Array P411 + +pci:v0000103Cd0000323Asv0000103Csd00003249* + ID_MODEL_FROM_DATABASE=Smart Array P812 + +pci:v0000103Cd0000323Asv0000103Csd0000324A* + ID_MODEL_FROM_DATABASE=HP Smart Array 712m (Mezzanine RAID controller) + +pci:v0000103Cd0000323Asv0000103Csd0000324B* + ID_MODEL_FROM_DATABASE=Smart Array P711m (Mezzanine RAID controller) + +pci:v0000103Cd0000323B* + ID_MODEL_FROM_DATABASE=Smart Array Gen8 Controllers + +pci:v0000103Cd0000323Bsv0000103Csd00003350* + ID_MODEL_FROM_DATABASE=P222 + +pci:v0000103Cd0000323Bsv0000103Csd00003351* + ID_MODEL_FROM_DATABASE=P420 + +pci:v0000103Cd0000323Bsv0000103Csd00003352* + ID_MODEL_FROM_DATABASE=P421 + +pci:v0000103Cd0000323Bsv0000103Csd00003354* + ID_MODEL_FROM_DATABASE=P420i + +pci:v0000103Cd0000323Bsv0000103Csd00003355* + ID_MODEL_FROM_DATABASE=P220i + +pci:v0000103Cd0000323C* + ID_MODEL_FROM_DATABASE=Smart Array Gen8+ Controllers + +pci:v0000103Cd0000323Csv0000103Csd00001920* + ID_MODEL_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001921* + ID_MODEL_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001922* + ID_MODEL_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001923* + ID_MODEL_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001924* + ID_MODEL_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001925* + ID_MODEL_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001926* + ID_MODEL_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001927* + ID_MODEL_FROM_DATABASE=Smart Array + +pci:v0000103Cd0000323Csv0000103Csd00001928* + ID_MODEL_FROM_DATABASE=Smart Array + +pci:v0000103Cd00003300* + ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Virtual USB Controller + +pci:v0000103Cd00003300sv0000103Csd00003304* + ID_MODEL_FROM_DATABASE=iLO2 + +pci:v0000103Cd00003300sv0000103Csd00003305* + ID_MODEL_FROM_DATABASE=iLO2 + +pci:v0000103Cd00003300sv0000103Csd00003309* + ID_MODEL_FROM_DATABASE=iLO2 GXL/iLO3 GXE + +pci:v0000103Cd00003300sv0000103Csd0000330E* + ID_MODEL_FROM_DATABASE=iLO3 + +pci:v0000103Cd00003300sv0000103Csd00003381* + ID_MODEL_FROM_DATABASE=iLO4 + +pci:v0000103Cd00003301* + ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Serial Port + +pci:v0000103Cd00003301sv0000103Csd00003304* + ID_MODEL_FROM_DATABASE=iLO2 + +pci:v0000103Cd00003301sv0000103Csd00003305* + ID_MODEL_FROM_DATABASE=iLO2 + +pci:v0000103Cd00003301sv0000103Csd0000330E* + ID_MODEL_FROM_DATABASE=iLO3 + +pci:v0000103Cd00003301sv0000103Csd00003381* + ID_MODEL_FROM_DATABASE=iLO4 + +pci:v0000103Cd00003302* + ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard KCS Interface + +pci:v0000103Cd00003302sv0000103Csd00003304* + ID_MODEL_FROM_DATABASE=iLO2 + +pci:v0000103Cd00003302sv0000103Csd00003305* + ID_MODEL_FROM_DATABASE=iLO2 + +pci:v0000103Cd00003302sv0000103Csd0000330E* + ID_MODEL_FROM_DATABASE=iLO3 + +pci:v0000103Cd00003302sv0000103Csd00003381* + ID_MODEL_FROM_DATABASE=iLO4 + +pci:v0000103Cd00003305* + ID_MODEL_FROM_DATABASE=Integrated Lights-Out (iLO2) Controller + +pci:v0000103Cd00003306* + ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Slave Instrumentation & System Support + +pci:v0000103Cd00003306sv0000103Csd0000330E* + ID_MODEL_FROM_DATABASE=iLO3 + +pci:v0000103Cd00003306sv0000103Csd00003381* + ID_MODEL_FROM_DATABASE=iLO4 + +pci:v0000103Cd00003307* + ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard Management Processor Support and Messaging + +pci:v0000103Cd00003307sv0000103Csd00003309* + ID_MODEL_FROM_DATABASE=iLO 2 + +pci:v0000103Cd00003307sv0000103Csd0000330E* + ID_MODEL_FROM_DATABASE=iLO3 + +pci:v0000103Cd00003307sv0000103Csd00003381* + ID_MODEL_FROM_DATABASE=iLO4 + +pci:v0000103Cd00003308* + ID_MODEL_FROM_DATABASE=Integrated Lights-Out Standard MS Watchdog Timer + +pci:v0000103Cd00003308sv0000103Csd0000330E* + ID_MODEL_FROM_DATABASE=iLO3 + +pci:v0000103Cd00003308sv0000103Csd00003381* + ID_MODEL_FROM_DATABASE=iLO4 + +pci:v0000103Cd0000402F* + ID_MODEL_FROM_DATABASE=PCIe Root Port + +pci:v0000103Cd00004030* + ID_MODEL_FROM_DATABASE=zx2 System Bus Adapter + +pci:v0000103Cd00004031* + ID_MODEL_FROM_DATABASE=zx2 I/O Controller + +pci:v0000103Cd00004037* + ID_MODEL_FROM_DATABASE=PCIe Local Bus Adapter + +pci:v0000103Cd0000403B* + ID_MODEL_FROM_DATABASE=PCIe Root Port + +pci:v0000103Cd000060E8* + ID_MODEL_FROM_DATABASE=NetRAID-2M : ZX1/M (OEM AMI MegaRAID 493) + +pci:v0000103E* + ID_VENDOR_FROM_DATABASE=Solliday Engineering + +pci:v0000103F* + ID_VENDOR_FROM_DATABASE=Synopsys/Logic Modeling Group + +pci:v00001040* + ID_VENDOR_FROM_DATABASE=Accelgraphics Inc. + +pci:v00001041* + ID_VENDOR_FROM_DATABASE=Computrend + +pci:v00001042* + ID_VENDOR_FROM_DATABASE=Micron + +pci:v00001042d00001000* + ID_MODEL_FROM_DATABASE=PC Tech RZ1000 + +pci:v00001042d00001001* + ID_MODEL_FROM_DATABASE=PC Tech RZ1001 + +pci:v00001042d00003000* + ID_MODEL_FROM_DATABASE=Samurai_0 + +pci:v00001042d00003010* + ID_MODEL_FROM_DATABASE=Samurai_1 + +pci:v00001042d00003020* + ID_MODEL_FROM_DATABASE=Samurai_IDE + +pci:v00001043* + ID_VENDOR_FROM_DATABASE=ASUSTeK Computer Inc. + +pci:v00001043d00000675* + ID_MODEL_FROM_DATABASE=ISDNLink P-IN100-ST-D + +pci:v00001043d00000675sv00000675sd00001704* + ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, D, C) + +pci:v00001043d00000675sv00000675sd00001707* + ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) + +pci:v00001043d00000675sv000010CFsd0000105E* + ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) + +pci:v00001043d00009602* + ID_MODEL_FROM_DATABASE=AMD RS780/RS880 PCI to PCI bridge (int gfx) + +pci:v00001043d00009602sv00001043sd000083A2* + ID_MODEL_FROM_DATABASE=M4A785TD Motherboard + +pci:v00001044* + ID_VENDOR_FROM_DATABASE=Adaptec (formerly DPT) + +pci:v00001044d00001012* + ID_MODEL_FROM_DATABASE=Domino RAID Engine + +pci:v00001044d0000A400* + ID_MODEL_FROM_DATABASE=SmartCache/Raid I-IV Controller + +pci:v00001044d0000A500* + ID_MODEL_FROM_DATABASE=PCI Bridge + +pci:v00001044d0000A501* + ID_MODEL_FROM_DATABASE=SmartRAID V Controller + +pci:v00001044d0000A501sv00001044sd0000C001* + ID_MODEL_FROM_DATABASE=PM1554U2 Ultra2 Single Channel + +pci:v00001044d0000A501sv00001044sd0000C002* + ID_MODEL_FROM_DATABASE=PM1654U2 Ultra2 Single Channel + +pci:v00001044d0000A501sv00001044sd0000C003* + ID_MODEL_FROM_DATABASE=PM1564U3 Ultra3 Single Channel + +pci:v00001044d0000A501sv00001044sd0000C004* + ID_MODEL_FROM_DATABASE=PM1564U3 Ultra3 Dual Channel + +pci:v00001044d0000A501sv00001044sd0000C005* + ID_MODEL_FROM_DATABASE=PM1554U2 Ultra2 Single Channel (NON ACPI) + +pci:v00001044d0000A501sv00001044sd0000C00A* + ID_MODEL_FROM_DATABASE=PM2554U2 Ultra2 Single Channel + +pci:v00001044d0000A501sv00001044sd0000C00B* + ID_MODEL_FROM_DATABASE=PM2654U2 Ultra2 Single Channel + +pci:v00001044d0000A501sv00001044sd0000C00C* + ID_MODEL_FROM_DATABASE=PM2664U3 Ultra3 Single Channel + +pci:v00001044d0000A501sv00001044sd0000C00D* + ID_MODEL_FROM_DATABASE=PM2664U3 Ultra3 Dual Channel + +pci:v00001044d0000A501sv00001044sd0000C00E* + ID_MODEL_FROM_DATABASE=PM2554U2 Ultra2 Single Channel (NON ACPI) + +pci:v00001044d0000A501sv00001044sd0000C00F* + ID_MODEL_FROM_DATABASE=PM2654U2 Ultra2 Single Channel (NON ACPI) + +pci:v00001044d0000A501sv00001044sd0000C014* + ID_MODEL_FROM_DATABASE=PM3754U2 Ultra2 Single Channel (NON ACPI) + +pci:v00001044d0000A501sv00001044sd0000C015* + ID_MODEL_FROM_DATABASE=PM3755U2B Ultra2 Single Channel (NON ACPI) + +pci:v00001044d0000A501sv00001044sd0000C016* + ID_MODEL_FROM_DATABASE=PM3755F Fibre Channel (NON ACPI) + +pci:v00001044d0000A501sv00001044sd0000C01E* + ID_MODEL_FROM_DATABASE=PM3757U2 Ultra2 Single Channel + +pci:v00001044d0000A501sv00001044sd0000C01F* + ID_MODEL_FROM_DATABASE=PM3757U2 Ultra2 Dual Channel + +pci:v00001044d0000A501sv00001044sd0000C020* + ID_MODEL_FROM_DATABASE=PM3767U3 Ultra3 Dual Channel + +pci:v00001044d0000A501sv00001044sd0000C021* + ID_MODEL_FROM_DATABASE=PM3767U3 Ultra3 Quad Channel + +pci:v00001044d0000A501sv00001044sd0000C028* + ID_MODEL_FROM_DATABASE=PM2865U3 Ultra3 Single Channel + +pci:v00001044d0000A501sv00001044sd0000C029* + ID_MODEL_FROM_DATABASE=PM2865U3 Ultra3 Dual Channel + +pci:v00001044d0000A501sv00001044sd0000C02A* + ID_MODEL_FROM_DATABASE=PM2865F Fibre Channel + +pci:v00001044d0000A501sv00001044sd0000C03C* + ID_MODEL_FROM_DATABASE=2000S Ultra3 Single Channel + +pci:v00001044d0000A501sv00001044sd0000C03D* + ID_MODEL_FROM_DATABASE=2000S Ultra3 Dual Channel + +pci:v00001044d0000A501sv00001044sd0000C03E* + ID_MODEL_FROM_DATABASE=2000F Fibre Channel + +pci:v00001044d0000A501sv00001044sd0000C046* + ID_MODEL_FROM_DATABASE=3000S Ultra3 Single Channel + +pci:v00001044d0000A501sv00001044sd0000C047* + ID_MODEL_FROM_DATABASE=3000S Ultra3 Dual Channel + +pci:v00001044d0000A501sv00001044sd0000C048* + ID_MODEL_FROM_DATABASE=3000F Fibre Channel + +pci:v00001044d0000A501sv00001044sd0000C050* + ID_MODEL_FROM_DATABASE=5000S Ultra3 Single Channel + +pci:v00001044d0000A501sv00001044sd0000C051* + ID_MODEL_FROM_DATABASE=5000S Ultra3 Dual Channel + +pci:v00001044d0000A501sv00001044sd0000C052* + ID_MODEL_FROM_DATABASE=5000F Fibre Channel + +pci:v00001044d0000A501sv00001044sd0000C05A* + ID_MODEL_FROM_DATABASE=2400A UDMA Four Channel + +pci:v00001044d0000A501sv00001044sd0000C05B* + ID_MODEL_FROM_DATABASE=2400A UDMA Four Channel DAC + +pci:v00001044d0000A501sv00001044sd0000C064* + ID_MODEL_FROM_DATABASE=3010S Ultra3 Dual Channel + +pci:v00001044d0000A501sv00001044sd0000C065* + ID_MODEL_FROM_DATABASE=3410S Ultra160 Four Channel + +pci:v00001044d0000A501sv00001044sd0000C066* + ID_MODEL_FROM_DATABASE=3010S Fibre Channel + +pci:v00001044d0000A511* + ID_MODEL_FROM_DATABASE=SmartRAID V Controller + +pci:v00001044d0000A511sv00001044sd0000C032* + ID_MODEL_FROM_DATABASE=ASR-2005S I2O Zero Channel + +pci:v00001044d0000A511sv00001044sd0000C035* + ID_MODEL_FROM_DATABASE=ASR-2010S I2O Zero Channel + +pci:v00001044d0000C066* + ID_MODEL_FROM_DATABASE=3010S Ultra3 Dual Channel + +pci:v00001045* + ID_VENDOR_FROM_DATABASE=OPTi Inc. + +pci:v00001045d0000A0F8* + ID_MODEL_FROM_DATABASE=82C750 [Vendetta] USB Controller + +pci:v00001045d0000C101* + ID_MODEL_FROM_DATABASE=92C264 + +pci:v00001045d0000C178* + ID_MODEL_FROM_DATABASE=92C178 + +pci:v00001045d0000C556* + ID_MODEL_FROM_DATABASE=82X556 [Viper] + +pci:v00001045d0000C557* + ID_MODEL_FROM_DATABASE=82C557 [Viper-M] + +pci:v00001045d0000C558* + ID_MODEL_FROM_DATABASE=82C558 [Viper-M ISA+IDE] + +pci:v00001045d0000C567* + ID_MODEL_FROM_DATABASE=82C750 [Vendetta], device 0 + +pci:v00001045d0000C568* + ID_MODEL_FROM_DATABASE=82C750 [Vendetta], device 1 + +pci:v00001045d0000C569* + ID_MODEL_FROM_DATABASE=82C579 [Viper XPress+ Chipset] + +pci:v00001045d0000C621* + ID_MODEL_FROM_DATABASE=82C621 [Viper-M/N+] + +pci:v00001045d0000C700* + ID_MODEL_FROM_DATABASE=82C700 [FireStar] + +pci:v00001045d0000C701* + ID_MODEL_FROM_DATABASE=82C701 [FireStar Plus] + +pci:v00001045d0000C814* + ID_MODEL_FROM_DATABASE=82C814 [Firebridge 1] + +pci:v00001045d0000C822* + ID_MODEL_FROM_DATABASE=82C822 + +pci:v00001045d0000C824* + ID_MODEL_FROM_DATABASE=82C824 + +pci:v00001045d0000C825* + ID_MODEL_FROM_DATABASE=82C825 [Firebridge 2] + +pci:v00001045d0000C832* + ID_MODEL_FROM_DATABASE=82C832 + +pci:v00001045d0000C861* + ID_MODEL_FROM_DATABASE=82C861 + +pci:v00001045d0000C881* + ID_MODEL_FROM_DATABASE=82C881 [FireLink] 1394 OHCI Link Controller + +pci:v00001045d0000C895* + ID_MODEL_FROM_DATABASE=82C895 + +pci:v00001045d0000C935* + ID_MODEL_FROM_DATABASE=EV1935 ECTIVA MachOne PCIAudio + +pci:v00001045d0000D568* + ID_MODEL_FROM_DATABASE=82C825 [Firebridge 2] + +pci:v00001045d0000D721* + ID_MODEL_FROM_DATABASE=IDE [FireStar] + +pci:v00001046* + ID_VENDOR_FROM_DATABASE=IPC Corporation, Ltd. + +pci:v00001047* + ID_VENDOR_FROM_DATABASE=Genoa Systems Corp + +pci:v00001048* + ID_VENDOR_FROM_DATABASE=Elsa AG + +pci:v00001048d00000C60* + ID_MODEL_FROM_DATABASE=Gladiac MX + +pci:v00001048d00000D22* + ID_MODEL_FROM_DATABASE=Quadro4 900XGL [ELSA GLoria4 900XGL] + +pci:v00001048d00001000* + ID_MODEL_FROM_DATABASE=QuickStep 1000 + +pci:v00001048d00003000* + ID_MODEL_FROM_DATABASE=QuickStep 3000 + +pci:v00001048d00008901* + ID_MODEL_FROM_DATABASE=Gloria XL + +pci:v00001048d00008901sv00001048sd00000935* + ID_MODEL_FROM_DATABASE=GLoria XL (Virge) + +pci:v00001049* + ID_VENDOR_FROM_DATABASE=Fountain Technologies, Inc. + +pci:v0000104A* + ID_VENDOR_FROM_DATABASE=STMicroelectronics + +pci:v0000104Ad00000000* + ID_MODEL_FROM_DATABASE=STLS2F Host Bridge + +pci:v0000104Ad00000008* + ID_MODEL_FROM_DATABASE=STG 2000X + +pci:v0000104Ad00000009* + ID_MODEL_FROM_DATABASE=STG 1764X + +pci:v0000104Ad00000010* + ID_MODEL_FROM_DATABASE=STG4000 [3D Prophet Kyro Series] + +pci:v0000104Ad00000010sv0000104Asd00004018* + ID_MODEL_FROM_DATABASE=ST PowerVR Kyro (64MB AGP TVO) + +pci:v0000104Ad00000010sv00001681sd00000028* + ID_MODEL_FROM_DATABASE=3D Prophet 4000XT + +pci:v0000104Ad00000010sv00001681sd0000C010* + ID_MODEL_FROM_DATABASE=3D Prophet 4500 TV-Out + +pci:v0000104Ad00000010sv00001681sd0000C069* + ID_MODEL_FROM_DATABASE=3D Prophet 4000XT + +pci:v0000104Ad00000201* + ID_MODEL_FROM_DATABASE=STPC Vega Northbridge + +pci:v0000104Ad00000209* + ID_MODEL_FROM_DATABASE=STPC Consumer/Industrial North- and Southbridge + +pci:v0000104Ad0000020A* + ID_MODEL_FROM_DATABASE=STPC Atlas/ConsumerS/Consumer IIA Northbridge + +pci:v0000104Ad0000020B* + ID_MODEL_FROM_DATABASE=STPC Consumer II ISA Bridge + +pci:v0000104Ad00000210* + ID_MODEL_FROM_DATABASE=STPC Atlas ISA Bridge + +pci:v0000104Ad0000021A* + ID_MODEL_FROM_DATABASE=STPC Consumer S Southbridge + +pci:v0000104Ad0000021B* + ID_MODEL_FROM_DATABASE=STPC Consumer IIA Southbridge + +pci:v0000104Ad00000220* + ID_MODEL_FROM_DATABASE=STPC Industrial PCI to PCCard bridge + +pci:v0000104Ad00000228* + ID_MODEL_FROM_DATABASE=STPC Atlas IDE + +pci:v0000104Ad00000229* + ID_MODEL_FROM_DATABASE=STPC Vega IDE + +pci:v0000104Ad00000230* + ID_MODEL_FROM_DATABASE=STPC Atlas/Vega OHCI USB Controller + +pci:v0000104Ad00000238* + ID_MODEL_FROM_DATABASE=STPC Vega LAN + +pci:v0000104Ad00000500* + ID_MODEL_FROM_DATABASE=ST70137 [Unicorn] ADSL DMT Transceiver + +pci:v0000104Ad00000500sv0000104Asd00000500* + ID_MODEL_FROM_DATABASE=BeWAN ADSL PCI st + +pci:v0000104Ad00000564* + ID_MODEL_FROM_DATABASE=STPC Client Northbridge + +pci:v0000104Ad00000981* + ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet + +pci:v0000104Ad00001746* + ID_MODEL_FROM_DATABASE=STG 1764X + +pci:v0000104Ad00002774* + ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet + +pci:v0000104Ad00003520* + ID_MODEL_FROM_DATABASE=MPEG-II decoder card + +pci:v0000104Ad000055CC* + ID_MODEL_FROM_DATABASE=STPC Client Southbridge + +pci:v0000104B* + ID_VENDOR_FROM_DATABASE=BusLogic + +pci:v0000104Bd00000140* + ID_MODEL_FROM_DATABASE=BT-946C (old) [multimaster 01] + +pci:v0000104Bd00001040* + ID_MODEL_FROM_DATABASE=BT-946C (BA80C30) [MultiMaster 10] + +pci:v0000104Bd00008130* + ID_MODEL_FROM_DATABASE=Flashpoint LT + +pci:v0000104C* + ID_VENDOR_FROM_DATABASE=Texas Instruments + +pci:v0000104Cd00000500* + ID_MODEL_FROM_DATABASE=100 MBit LAN Controller + +pci:v0000104Cd00000508* + ID_MODEL_FROM_DATABASE=TMS380C2X Compressor Interface + +pci:v0000104Cd00001000* + ID_MODEL_FROM_DATABASE=Eagle i/f AS + +pci:v0000104Cd0000104C* + ID_MODEL_FROM_DATABASE=PCI1510 PC card Cardbus Controller + +pci:v0000104Cd00003D04* + ID_MODEL_FROM_DATABASE=TVP4010 [Permedia] + +pci:v0000104Cd00003D07* + ID_MODEL_FROM_DATABASE=TVP4020 [Permedia 2] + +pci:v0000104Cd00003D07sv00001011sd00004D10* + ID_MODEL_FROM_DATABASE=Comet + +pci:v0000104Cd00003D07sv00001040sd0000000F* + ID_MODEL_FROM_DATABASE=AccelStar II + +pci:v0000104Cd00003D07sv00001040sd00000011* + ID_MODEL_FROM_DATABASE=AccelStar II + +pci:v0000104Cd00003D07sv00001048sd00000A31* + ID_MODEL_FROM_DATABASE=WINNER 2000 + +pci:v0000104Cd00003D07sv00001048sd00000A32* + ID_MODEL_FROM_DATABASE=GLoria Synergy + +pci:v0000104Cd00003D07sv00001048sd00000A34* + ID_MODEL_FROM_DATABASE=GLoria Synergy + +pci:v0000104Cd00003D07sv00001048sd00000A35* + ID_MODEL_FROM_DATABASE=GLoria Synergy + +pci:v0000104Cd00003D07sv00001048sd00000A36* + ID_MODEL_FROM_DATABASE=GLoria Synergy + +pci:v0000104Cd00003D07sv00001048sd00000A43* + ID_MODEL_FROM_DATABASE=GLoria Synergy + +pci:v0000104Cd00003D07sv00001048sd00000A44* + ID_MODEL_FROM_DATABASE=GLoria Synergy + +pci:v0000104Cd00003D07sv0000107Dsd00002633* + ID_MODEL_FROM_DATABASE=WinFast 3D L2300 + +pci:v0000104Cd00003D07sv00001092sd00000126* + ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO + +pci:v0000104Cd00003D07sv00001092sd00000127* + ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO + +pci:v0000104Cd00003D07sv00001092sd00000136* + ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO + +pci:v0000104Cd00003D07sv00001092sd00000141* + ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO + +pci:v0000104Cd00003D07sv00001092sd00000146* + ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO + +pci:v0000104Cd00003D07sv00001092sd00000148* + ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO + +pci:v0000104Cd00003D07sv00001092sd00000149* + ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO + +pci:v0000104Cd00003D07sv00001092sd00000152* + ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO + +pci:v0000104Cd00003D07sv00001092sd00000154* + ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO + +pci:v0000104Cd00003D07sv00001092sd00000155* + ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO + +pci:v0000104Cd00003D07sv00001092sd00000156* + ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO + +pci:v0000104Cd00003D07sv00001092sd00000157* + ID_MODEL_FROM_DATABASE=FIRE GL 1000 PRO + +pci:v0000104Cd00003D07sv00001097sd00003D01* + ID_MODEL_FROM_DATABASE=Jeronimo Pro + +pci:v0000104Cd00003D07sv00001102sd0000100F* + ID_MODEL_FROM_DATABASE=Graphics Blaster Extreme + +pci:v0000104Cd00003D07sv00003D3Dsd00000100* + ID_MODEL_FROM_DATABASE=Reference Permedia 2 3D + +pci:v0000104Cd00008000* + ID_MODEL_FROM_DATABASE=PCILynx/PCILynx2 IEEE 1394 Link Layer Controller + +pci:v0000104Cd00008000sv0000105Esd00008003* + ID_MODEL_FROM_DATABASE=FireBoard200 + +pci:v0000104Cd00008000sv00001443sd00008003* + ID_MODEL_FROM_DATABASE=FireBoard200 + +pci:v0000104Cd00008000sv00001443sd00008005* + ID_MODEL_FROM_DATABASE=FireBoard400 + +pci:v0000104Cd00008000sv00001443sd00008006* + ID_MODEL_FROM_DATABASE=FireBoard400 + +pci:v0000104Cd00008000sv0000E4BFsd00001010* + ID_MODEL_FROM_DATABASE=CF1-1-SNARE + +pci:v0000104Cd00008000sv0000E4BFsd00001020* + ID_MODEL_FROM_DATABASE=CF1-2-SNARE + +pci:v0000104Cd00008000sv0000E4BFsd00001040* + ID_MODEL_FROM_DATABASE=FireCompact400 + +pci:v0000104Cd00008009* + ID_MODEL_FROM_DATABASE=TSB12LV22 IEEE-1394 Controller + +pci:v0000104Cd00008009sv0000104Dsd00008032* + ID_MODEL_FROM_DATABASE=8032 OHCI i.LINK (IEEE 1394) Controller + +pci:v0000104Cd00008009sv00001443sd00008010* + ID_MODEL_FROM_DATABASE=FireBoard400-OHCI + +pci:v0000104Cd00008017* + ID_MODEL_FROM_DATABASE=PCI4410 FireWire Controller + +pci:v0000104Cd00008019* + ID_MODEL_FROM_DATABASE=TSB12LV23 IEEE-1394 Controller + +pci:v0000104Cd00008019sv000011BDsd0000000A* + ID_MODEL_FROM_DATABASE=Studio DV500-1394 + +pci:v0000104Cd00008019sv000011BDsd0000000E* + ID_MODEL_FROM_DATABASE=Studio DV + +pci:v0000104Cd00008019sv00001443sd00008010* + ID_MODEL_FROM_DATABASE=FireBoard400-OHCI + +pci:v0000104Cd00008019sv0000E4BFsd00001010* + ID_MODEL_FROM_DATABASE=CF2-1-CYMBAL + +pci:v0000104Cd00008020* + ID_MODEL_FROM_DATABASE=TSB12LV26 IEEE-1394 Controller (Link) + +pci:v0000104Cd00008020sv00001028sd000000D8* + ID_MODEL_FROM_DATABASE=Precision 530 + +pci:v0000104Cd00008020sv0000104Dsd000080E2* + ID_MODEL_FROM_DATABASE=VAIO PCV-J200 + +pci:v0000104Cd00008020sv000011BDsd0000000F* + ID_MODEL_FROM_DATABASE=Studio DV500-1394 + +pci:v0000104Cd00008020sv000011BDsd0000001C* + ID_MODEL_FROM_DATABASE=Excalibur 4.1 + +pci:v0000104Cd00008020sv00001443sd00008010* + ID_MODEL_FROM_DATABASE=FireBoard400-OHCI + +pci:v0000104Cd00008021* + ID_MODEL_FROM_DATABASE=TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated) + +pci:v0000104Cd00008021sv0000104Dsd000080DF* + ID_MODEL_FROM_DATABASE=Vaio PCG-FX403 + +pci:v0000104Cd00008021sv0000104Dsd000080E7* + ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + +pci:v0000104Cd00008022* + ID_MODEL_FROM_DATABASE=TSB43AB22 IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] + +pci:v0000104Cd00008022sv0000104Csd00008023* + ID_MODEL_FROM_DATABASE=TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link) + +pci:v0000104Cd00008023* + ID_MODEL_FROM_DATABASE=TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] + +pci:v0000104Cd00008023sv0000103Csd0000088C* + ID_MODEL_FROM_DATABASE=NC8000 laptop + +pci:v0000104Cd00008023sv00001043sd0000808B* + ID_MODEL_FROM_DATABASE=K8N4-E Mainboard + +pci:v0000104Cd00008023sv00001043sd0000815B* + ID_MODEL_FROM_DATABASE=P5W DH Deluxe Motherboard + +pci:v0000104Cd00008023sv00001443sd00008023* + ID_MODEL_FROM_DATABASE=FireCard400 + +pci:v0000104Cd00008023sv00008086sd00005044* + ID_MODEL_FROM_DATABASE=Desktop Board DP35DP + +pci:v0000104Cd00008024* + ID_MODEL_FROM_DATABASE=TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) + +pci:v0000104Cd00008024sv0000107Dsd00006620* + ID_MODEL_FROM_DATABASE=Winfast DV2000 FireWire Controller + +pci:v0000104Cd00008024sv00001443sd00008024* + ID_MODEL_FROM_DATABASE=FireBoard Blue + +pci:v0000104Cd00008024sv00001458sd00001000* + ID_MODEL_FROM_DATABASE=Motherboard + +pci:v0000104Cd00008025* + ID_MODEL_FROM_DATABASE=TSB82AA2 IEEE-1394b Link Layer Controller + +pci:v0000104Cd00008025sv00001043sd0000813C* + ID_MODEL_FROM_DATABASE=P5P series mainboard + +pci:v0000104Cd00008025sv00001443sd00008025* + ID_MODEL_FROM_DATABASE=FireBoard800 + +pci:v0000104Cd00008025sv00001458sd00001000* + ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard + +pci:v0000104Cd00008025sv00001546sd00008025* + ID_MODEL_FROM_DATABASE=FWB-PCI01 + +pci:v0000104Cd00008025sv000017FCsd00008025* + ID_MODEL_FROM_DATABASE=GIC3800 + +pci:v0000104Cd00008026* + ID_MODEL_FROM_DATABASE=TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link) + +pci:v0000104Cd00008026sv00001025sd00000035* + ID_MODEL_FROM_DATABASE=TravelMate 660 + +pci:v0000104Cd00008026sv00001025sd0000003C* + ID_MODEL_FROM_DATABASE=Aspire 2001WLCi (Compaq CL50 motherboard) + +pci:v0000104Cd00008026sv0000103Csd00000025* + ID_MODEL_FROM_DATABASE=XE4500 Notebook + +pci:v0000104Cd00008026sv0000103Csd0000006A* + ID_MODEL_FROM_DATABASE=NX9500 + +pci:v0000104Cd00008026sv00001043sd0000808D* + ID_MODEL_FROM_DATABASE=A7V333 mainboard. + +pci:v0000104Cd00008027* + ID_MODEL_FROM_DATABASE=PCI4451 IEEE-1394 Controller + +pci:v0000104Cd00008027sv00001028sd000000E5* + ID_MODEL_FROM_DATABASE=Latitude C810 + +pci:v0000104Cd00008027sv00001028sd000000E6* + ID_MODEL_FROM_DATABASE=PCI4451 IEEE-1394 Controller (Dell Inspiron 8100) + +pci:v0000104Cd00008029* + ID_MODEL_FROM_DATABASE=PCI4510 IEEE-1394 Controller + +pci:v0000104Cd00008029sv00001028sd00000163* + ID_MODEL_FROM_DATABASE=Latitude D505 + +pci:v0000104Cd00008029sv00001028sd00000196* + ID_MODEL_FROM_DATABASE=Inspiron 5160 + +pci:v0000104Cd00008029sv00001071sd00008160* + ID_MODEL_FROM_DATABASE=MIM2900 + +pci:v0000104Cd0000802B* + ID_MODEL_FROM_DATABASE=PCI7410,7510,7610 OHCI-Lynx Controller + +pci:v0000104Cd0000802Bsv00001028sd00000139* + ID_MODEL_FROM_DATABASE=Latitude D400 + +pci:v0000104Cd0000802Bsv00001028sd0000014E* + ID_MODEL_FROM_DATABASE=PCI7410,7510,7610 OHCI-Lynx Controller (Latitude D800) + +pci:v0000104Cd0000802E* + ID_MODEL_FROM_DATABASE=PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller + +pci:v0000104Cd0000802Esv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m + +pci:v0000104Cd00008031* + ID_MODEL_FROM_DATABASE=PCIxx21/x515 Cardbus Controller + +pci:v0000104Cd00008031sv00001025sd00000080* + ID_MODEL_FROM_DATABASE=Aspire 5024WLMi + +pci:v0000104Cd00008031sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v0000104Cd00008031sv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v0000104Cd00008031sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v0000104Cd00008032* + ID_MODEL_FROM_DATABASE=OHCI Compliant IEEE 1394 Host Controller + +pci:v0000104Cd00008032sv00001025sd00000080* + ID_MODEL_FROM_DATABASE=Aspire 5024WLMi + +pci:v0000104Cd00008032sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v0000104Cd00008032sv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v0000104Cd00008032sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v0000104Cd00008033* + ID_MODEL_FROM_DATABASE=PCIxx21 Integrated FlashMedia Controller + +pci:v0000104Cd00008033sv00001025sd00000080* + ID_MODEL_FROM_DATABASE=Aspire 5024WLMi + +pci:v0000104Cd00008033sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v0000104Cd00008033sv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v0000104Cd00008033sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v0000104Cd00008034* + ID_MODEL_FROM_DATABASE=PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller + +pci:v0000104Cd00008034sv00001025sd00000080* + ID_MODEL_FROM_DATABASE=Aspire 5024WLMi + +pci:v0000104Cd00008034sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v0000104Cd00008034sv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v0000104Cd00008034sv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v0000104Cd00008035* + ID_MODEL_FROM_DATABASE=PCI6411/6421/6611/6621/7411/7421/7611/7621 Smart Card Controller + +pci:v0000104Cd00008035sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v0000104Cd00008035sv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v0000104Cd00008036* + ID_MODEL_FROM_DATABASE=PCI6515 Cardbus Controller + +pci:v0000104Cd00008038* + ID_MODEL_FROM_DATABASE=PCI6515 SmartCard Controller + +pci:v0000104Cd00008039* + ID_MODEL_FROM_DATABASE=PCIxx12 Cardbus Controller + +pci:v0000104Cd00008039sv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v0000104Cd00008039sv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v0000104Cd00008039sv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v0000104Cd00008039sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v0000104Cd0000803A* + ID_MODEL_FROM_DATABASE=PCIxx12 OHCI Compliant IEEE 1394 Host Controller + +pci:v0000104Cd0000803Asv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=nx9420 + +pci:v0000104Cd0000803Asv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v0000104Cd0000803Asv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v0000104Cd0000803Asv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v0000104Cd0000803B* + ID_MODEL_FROM_DATABASE=5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) + +pci:v0000104Cd0000803Bsv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=nx9420 + +pci:v0000104Cd0000803Bsv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v0000104Cd0000803Bsv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v0000104Cd0000803C* + ID_MODEL_FROM_DATABASE=PCIxx12 SDA Standard Compliant SD Host Controller + +pci:v0000104Cd0000803Csv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=nx9420 + +pci:v0000104Cd0000803Csv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v0000104Cd0000803D* + ID_MODEL_FROM_DATABASE=PCIxx12 GemCore based SmartCard controller + +pci:v0000104Cd0000803Dsv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v0000104Cd0000803Dsv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v0000104Cd0000803Dsv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=nc8430 + +pci:v0000104Cd0000803Dsv0000103Csd000030AA* + ID_MODEL_FROM_DATABASE=nc6310 + +pci:v0000104Cd00008101* + ID_MODEL_FROM_DATABASE=TSB43DB42 IEEE-1394a-2000 Controller (PHY/Link) + +pci:v0000104Cd00008201* + ID_MODEL_FROM_DATABASE=PCI1620 Firmware Loading Function + +pci:v0000104Cd00008204* + ID_MODEL_FROM_DATABASE=PCI7410,7510,7610 PCI Firmware Loading Function + +pci:v0000104Cd00008204sv00001028sd00000139* + ID_MODEL_FROM_DATABASE=Latitude D400 + +pci:v0000104Cd00008204sv00001028sd0000014E* + ID_MODEL_FROM_DATABASE=Latitude D800 + +pci:v0000104Cd00008231* + ID_MODEL_FROM_DATABASE=XIO2000(A)/XIO2200A PCI Express-to-PCI Bridge + +pci:v0000104Cd00008231sv00005678sd00001234* + ID_MODEL_FROM_DATABASE=DC-1394 PCIe + +pci:v0000104Cd00008232* + ID_MODEL_FROM_DATABASE=XIO3130 PCI Express Switch (Upstream) + +pci:v0000104Cd00008233* + ID_MODEL_FROM_DATABASE=XIO3130 PCI Express Switch (Downstream) + +pci:v0000104Cd00008235* + ID_MODEL_FROM_DATABASE=XIO2200A IEEE-1394a-2000 Controller (PHY/Link) + +pci:v0000104Cd00008235sv00005678sd00001234* + ID_MODEL_FROM_DATABASE=DC-1394 PCIe + +pci:v0000104Cd0000823E* + ID_MODEL_FROM_DATABASE=XIO2213A/B/XIO2221 PCI Express to PCI Bridge [Cheetah Express] + +pci:v0000104Cd0000823F* + ID_MODEL_FROM_DATABASE=XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express] + +pci:v0000104Cd0000823Fsv00001546sd0000803C* + ID_MODEL_FROM_DATABASE=FWB-PCIE1X11B + +pci:v0000104Cd00008240* + ID_MODEL_FROM_DATABASE=XIO2001 PCI Express-to-PCI Bridge + +pci:v0000104Cd00008241* + ID_MODEL_FROM_DATABASE=TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller + +pci:v0000104Cd00008400* + ID_MODEL_FROM_DATABASE=ACX 100 22Mbps Wireless Interface + +pci:v0000104Cd00008400sv00001186sd00003B00* + ID_MODEL_FROM_DATABASE=DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus] + +pci:v0000104Cd00008400sv00001186sd00003B01* + ID_MODEL_FROM_DATABASE=DWL-520+ 22Mbps PCI Wireless Adapter + +pci:v0000104Cd00008400sv00001395sd00002201* + ID_MODEL_FROM_DATABASE=WL22-PC + +pci:v0000104Cd00008400sv000016ABsd00008501* + ID_MODEL_FROM_DATABASE=WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter + +pci:v0000104Cd00008401* + ID_MODEL_FROM_DATABASE=ACX 100 22Mbps Wireless Interface + +pci:v0000104Cd00009000* + ID_MODEL_FROM_DATABASE=Wireless Interface (of unknown type) + +pci:v0000104Cd00009065* + ID_MODEL_FROM_DATABASE=TMS320DM642 + +pci:v0000104Cd00009066* + ID_MODEL_FROM_DATABASE=ACX 111 54Mbps Wireless Interface + +pci:v0000104Cd00009066sv00000308sd00003404* + ID_MODEL_FROM_DATABASE=G-102 v1 802.11g Wireless Cardbus Adapter + +pci:v0000104Cd00009066sv00000308sd00003406* + ID_MODEL_FROM_DATABASE=G-162 v2 802.11g Wireless Cardbus Adapter + +pci:v0000104Cd00009066sv0000104Csd00009066* + ID_MODEL_FROM_DATABASE=WL212 Sitecom Wireless Network PCI-Card 100M (Version 1) + +pci:v0000104Cd00009066sv0000104Csd00009067* + ID_MODEL_FROM_DATABASE=TNETW1130GVF + +pci:v0000104Cd00009066sv0000104Csd00009096* + ID_MODEL_FROM_DATABASE=Trendnet TEW-412PC Wireless PCI Adapter (Version A) + +pci:v0000104Cd00009066sv00001186sd00003B04* + ID_MODEL_FROM_DATABASE=DWL-G520+ Wireless PCI Adapter + +pci:v0000104Cd00009066sv00001186sd00003B05* + ID_MODEL_FROM_DATABASE=DWL-G650+ AirPlusG+ CardBus Wireless LAN + +pci:v0000104Cd00009066sv00001186sd00003B08* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.B1) + +pci:v0000104Cd00009066sv00001385sd00004C00* + ID_MODEL_FROM_DATABASE=WG311v2 802.11g Wireless PCI Adapter + +pci:v0000104Cd00009066sv000013D1sd0000ABA0* + ID_MODEL_FROM_DATABASE=SWLMP-54108 108Mbps Wireless mini PCI card 802.11g+ + +pci:v0000104Cd00009066sv000014EAsd0000AB07* + ID_MODEL_FROM_DATABASE=GW-NS54GM Wireless Cardbus Adapter + +pci:v0000104Cd00009066sv000016ECsd0000010D* + ID_MODEL_FROM_DATABASE=USR5416 802.11g Wireless Turbo PCI Adapter + +pci:v0000104Cd00009066sv000016ECsd0000010E* + ID_MODEL_FROM_DATABASE=USR5410 802.11g Wireless Cardbus Adapter + +pci:v0000104Cd00009066sv00001737sd00000033* + ID_MODEL_FROM_DATABASE=WPC54G v2 802.11g Wireless-G Notebook Adapter + +pci:v0000104Cd00009066sv000017CFsd00000032* + ID_MODEL_FROM_DATABASE=G-162 v1 802.11g Wireless Cardbus Adapter + +pci:v0000104Cd00009066sv000017CFsd00000033* + ID_MODEL_FROM_DATABASE=Z-Com XG650 Wireless miniPCI 802.11b/g + +pci:v0000104Cd00009066sv0000187Esd0000340B* + ID_MODEL_FROM_DATABASE=G-302 v2 802.11g Wireless PCI Adapter + +pci:v0000104Cd00009066sv0000187Esd0000340C* + ID_MODEL_FROM_DATABASE=G-360 v2 802.11g Wireless PCI Adapter + +pci:v0000104Cd0000A001* + ID_MODEL_FROM_DATABASE=TDC1570 + +pci:v0000104Cd0000A100* + ID_MODEL_FROM_DATABASE=TDC1561 + +pci:v0000104Cd0000A102* + ID_MODEL_FROM_DATABASE=TNETA1575 HyperSAR Plus w/PCI Host i/f & UTOPIA i/f + +pci:v0000104Cd0000A106* + ID_MODEL_FROM_DATABASE=TMS320C6414 TMS320C6415 TMS320C6416 + +pci:v0000104Cd0000A106sv0000175Csd00005000* + ID_MODEL_FROM_DATABASE=ASI50xx Audio Adapter + +pci:v0000104Cd0000A106sv0000175Csd00006400* + ID_MODEL_FROM_DATABASE=ASI6400 Cobranet series + +pci:v0000104Cd0000A106sv0000175Csd00008700* + ID_MODEL_FROM_DATABASE=ASI87xx Radio Tuner card + +pci:v0000104Cd0000AC10* + ID_MODEL_FROM_DATABASE=PCI1050 + +pci:v0000104Cd0000AC11* + ID_MODEL_FROM_DATABASE=PCI1053 + +pci:v0000104Cd0000AC12* + ID_MODEL_FROM_DATABASE=PCI1130 + +pci:v0000104Cd0000AC13* + ID_MODEL_FROM_DATABASE=PCI1031 + +pci:v0000104Cd0000AC15* + ID_MODEL_FROM_DATABASE=PCI1131 + +pci:v0000104Cd0000AC16* + ID_MODEL_FROM_DATABASE=PCI1250 + +pci:v0000104Cd0000AC16sv00001014sd00000092* + ID_MODEL_FROM_DATABASE=ThinkPad 600 + +pci:v0000104Cd0000AC17* + ID_MODEL_FROM_DATABASE=PCI1220 + +pci:v0000104Cd0000AC18* + ID_MODEL_FROM_DATABASE=PCI1260 + +pci:v0000104Cd0000AC19* + ID_MODEL_FROM_DATABASE=PCI1221 + +pci:v0000104Cd0000AC1A* + ID_MODEL_FROM_DATABASE=PCI1210 + +pci:v0000104Cd0000AC1B* + ID_MODEL_FROM_DATABASE=PCI1450 + +pci:v0000104Cd0000AC1Bsv00000E11sd0000B113* + ID_MODEL_FROM_DATABASE=Armada M700 + +pci:v0000104Cd0000AC1Bsv00001014sd00000130* + ID_MODEL_FROM_DATABASE=ThinkPad 600X/A21m/T20/T22 + +pci:v0000104Cd0000AC1C* + ID_MODEL_FROM_DATABASE=PCI1225 + +pci:v0000104Cd0000AC1Csv00000E11sd0000B121* + ID_MODEL_FROM_DATABASE=Armada E500 + +pci:v0000104Cd0000AC1Csv00001028sd00000088* + ID_MODEL_FROM_DATABASE=Latitude CPi A400XT + +pci:v0000104Cd0000AC1D* + ID_MODEL_FROM_DATABASE=PCI1251A + +pci:v0000104Cd0000AC1E* + ID_MODEL_FROM_DATABASE=PCI1211 + +pci:v0000104Cd0000AC1F* + ID_MODEL_FROM_DATABASE=PCI1251B + +pci:v0000104Cd0000AC20* + ID_MODEL_FROM_DATABASE=TI 2030 + +pci:v0000104Cd0000AC21* + ID_MODEL_FROM_DATABASE=PCI2031 + +pci:v0000104Cd0000AC22* + ID_MODEL_FROM_DATABASE=PCI2032 PCI Docking Bridge + +pci:v0000104Cd0000AC23* + ID_MODEL_FROM_DATABASE=PCI2250 PCI-to-PCI Bridge + +pci:v0000104Cd0000AC28* + ID_MODEL_FROM_DATABASE=PCI2050 PCI-to-PCI Bridge + +pci:v0000104Cd0000AC2C* + ID_MODEL_FROM_DATABASE=PCI2060 PCI-to-PCI Bridge + +pci:v0000104Cd0000AC30* + ID_MODEL_FROM_DATABASE=PCI1260 PC card Cardbus Controller + +pci:v0000104Cd0000AC40* + ID_MODEL_FROM_DATABASE=PCI4450 PC card Cardbus Controller + +pci:v0000104Cd0000AC41* + ID_MODEL_FROM_DATABASE=PCI4410 PC card Cardbus Controller + +pci:v0000104Cd0000AC42* + ID_MODEL_FROM_DATABASE=PCI4451 PC card Cardbus Controller + +pci:v0000104Cd0000AC42sv00001028sd000000E6* + ID_MODEL_FROM_DATABASE=PCI4451 PC card CardBus Controller (Inspiron 8100) + +pci:v0000104Cd0000AC44* + ID_MODEL_FROM_DATABASE=PCI4510 PC card Cardbus Controller + +pci:v0000104Cd0000AC44sv00001028sd00000149* + ID_MODEL_FROM_DATABASE=Inspiron 5100 + +pci:v0000104Cd0000AC44sv00001028sd00000163* + ID_MODEL_FROM_DATABASE=Latitude D505 + +pci:v0000104Cd0000AC44sv00001028sd00000196* + ID_MODEL_FROM_DATABASE=Inspiron 5160 + +pci:v0000104Cd0000AC44sv00001071sd00008160* + ID_MODEL_FROM_DATABASE=MIM2000 + +pci:v0000104Cd0000AC46* + ID_MODEL_FROM_DATABASE=PCI4520 PC card Cardbus Controller + +pci:v0000104Cd0000AC46sv00001014sd00000552* + ID_MODEL_FROM_DATABASE=ThinkPad + +pci:v0000104Cd0000AC47* + ID_MODEL_FROM_DATABASE=PCI7510 PC card Cardbus Controller + +pci:v0000104Cd0000AC47sv00001028sd00000139* + ID_MODEL_FROM_DATABASE=Latitude D400 + +pci:v0000104Cd0000AC47sv00001028sd0000013F* + ID_MODEL_FROM_DATABASE=Precision M60 + +pci:v0000104Cd0000AC47sv00001028sd0000014E* + ID_MODEL_FROM_DATABASE=Latitude D800 + +pci:v0000104Cd0000AC48* + ID_MODEL_FROM_DATABASE=PCI7610 PC Card Cardbus Controller + +pci:v0000104Cd0000AC49* + ID_MODEL_FROM_DATABASE=PCI7410 PC Card Cardbus Controller + +pci:v0000104Cd0000AC4A* + ID_MODEL_FROM_DATABASE=PCI7510,7610 PC card Cardbus Controller + +pci:v0000104Cd0000AC4Asv00001028sd00000139* + ID_MODEL_FROM_DATABASE=Latitude D400 + +pci:v0000104Cd0000AC4Asv00001028sd0000014E* + ID_MODEL_FROM_DATABASE=Latitude D800 + +pci:v0000104Cd0000AC4B* + ID_MODEL_FROM_DATABASE=PCI7610 SD/MMC controller + +pci:v0000104Cd0000AC4C* + ID_MODEL_FROM_DATABASE=PCI7610 Memory Stick controller + +pci:v0000104Cd0000AC50* + ID_MODEL_FROM_DATABASE=PCI1410 PC card Cardbus Controller + +pci:v0000104Cd0000AC51* + ID_MODEL_FROM_DATABASE=PCI1420 PC card Cardbus Controller + +pci:v0000104Cd0000AC51sv00000E11sd0000004E* + ID_MODEL_FROM_DATABASE=Evo N600c + +pci:v0000104Cd0000AC51sv00001014sd00000148* + ID_MODEL_FROM_DATABASE=ThinkPad A20m + +pci:v0000104Cd0000AC51sv00001014sd0000023B* + ID_MODEL_FROM_DATABASE=ThinkPad T23 + +pci:v0000104Cd0000AC51sv00001028sd000000B1* + ID_MODEL_FROM_DATABASE=Latitude C600 + +pci:v0000104Cd0000AC51sv00001028sd0000012A* + ID_MODEL_FROM_DATABASE=Latitude C640 + +pci:v0000104Cd0000AC51sv00001033sd000080CD* + ID_MODEL_FROM_DATABASE=Versa Note VXi + +pci:v0000104Cd0000AC51sv000010CFsd00001095* + ID_MODEL_FROM_DATABASE=Lifebook S-4510/C6155 + +pci:v0000104Cd0000AC51sv0000E4BFsd00001000* + ID_MODEL_FROM_DATABASE=CP2-2-HIPHOP + +pci:v0000104Cd0000AC52* + ID_MODEL_FROM_DATABASE=PCI1451 PC card Cardbus Controller + +pci:v0000104Cd0000AC53* + ID_MODEL_FROM_DATABASE=PCI1421 PC card Cardbus Controller + +pci:v0000104Cd0000AC54* + ID_MODEL_FROM_DATABASE=PCI1620 PC Card Controller + +pci:v0000104Cd0000AC54sv0000103Csd000008B0* + ID_MODEL_FROM_DATABASE=tc1100 tablet + +pci:v0000104Cd0000AC55* + ID_MODEL_FROM_DATABASE=PCI1520 PC card Cardbus Controller + +pci:v0000104Cd0000AC55sv00001014sd00000512* + ID_MODEL_FROM_DATABASE=ThinkPad T30/T40 + +pci:v0000104Cd0000AC55sv0000103Csd00000025* + ID_MODEL_FROM_DATABASE=XE4500 Notebook + +pci:v0000104Cd0000AC56* + ID_MODEL_FROM_DATABASE=PCI1510 PC card Cardbus Controller + +pci:v0000104Cd0000AC56sv00001014sd00000512* + ID_MODEL_FROM_DATABASE=ThinkPad R50e + +pci:v0000104Cd0000AC56sv00001014sd00000528* + ID_MODEL_FROM_DATABASE=ThinkPad R40e + +pci:v0000104Cd0000AC56sv000017AAsd00002012* + ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series + +pci:v0000104Cd0000AC60* + ID_MODEL_FROM_DATABASE=PCI2040 PCI to DSP Bridge Controller + +pci:v0000104Cd0000AC60sv0000175Csd00005100* + ID_MODEL_FROM_DATABASE=ASI51xx Audio Adapter + +pci:v0000104Cd0000AC60sv0000175Csd00006100* + ID_MODEL_FROM_DATABASE=ASI61xx Audio Adapter + +pci:v0000104Cd0000AC60sv0000175Csd00006200* + ID_MODEL_FROM_DATABASE=ASI62xx Audio Adapter + +pci:v0000104Cd0000AC60sv0000175Csd00008800* + ID_MODEL_FROM_DATABASE=ASI88xx Audio Adapter + +pci:v0000104Cd0000AC60sv0000186Fsd00003001* + ID_MODEL_FROM_DATABASE=WR-G303 PCI radio receiver + +pci:v0000104Cd0000AC60sv0000186Fsd00003005* + ID_MODEL_FROM_DATABASE=WR-G305 PCI radio receiver + +pci:v0000104Cd0000AC60sv0000186Fsd00003101* + ID_MODEL_FROM_DATABASE=WR-G313 PCI radio receiver + +pci:v0000104Cd0000AC60sv0000186Fsd00003105* + ID_MODEL_FROM_DATABASE=WR-G315 PCI radio receiver + +pci:v0000104Cd0000AC8D* + ID_MODEL_FROM_DATABASE=PCI 7620 + +pci:v0000104Cd0000AC8E* + ID_MODEL_FROM_DATABASE=PCI7420 CardBus Controller + +pci:v0000104Cd0000AC8Esv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m + +pci:v0000104Cd0000AC8F* + ID_MODEL_FROM_DATABASE=PCI7420/7620 Combo CardBus, 1394a-2000 OHCI and SD/MS-Pro Controller + +pci:v0000104Cd0000AC8Fsv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m + +pci:v0000104Cd0000B001* + ID_MODEL_FROM_DATABASE=TMS320C6424 + +pci:v0000104Cd0000FE00* + ID_MODEL_FROM_DATABASE=FireWire Host Controller + +pci:v0000104Cd0000FE03* + ID_MODEL_FROM_DATABASE=12C01A FireWire Host Controller + +pci:v0000104D* + ID_VENDOR_FROM_DATABASE=Sony Corporation + +pci:v0000104Dd00008004* + ID_MODEL_FROM_DATABASE=DTL-H2500 [Playstation development board] + +pci:v0000104Dd00008009* + ID_MODEL_FROM_DATABASE=CXD1947Q i.LINK Controller + +pci:v0000104Dd00008039* + ID_MODEL_FROM_DATABASE=CXD3222 i.LINK Controller + +pci:v0000104Dd00008056* + ID_MODEL_FROM_DATABASE=Rockwell HCF 56K modem + +pci:v0000104Dd0000808A* + ID_MODEL_FROM_DATABASE=Memory Stick Controller + +pci:v0000104Dd000081CE* + ID_MODEL_FROM_DATABASE=SxS Pro memory card + +pci:v0000104E* + ID_VENDOR_FROM_DATABASE=Oak Technology, Inc + +pci:v0000104Ed00000017* + ID_MODEL_FROM_DATABASE=OTI-64017 + +pci:v0000104Ed00000107* + ID_MODEL_FROM_DATABASE=OTI-107 [Spitfire] + +pci:v0000104Ed00000109* + ID_MODEL_FROM_DATABASE=Video Adapter + +pci:v0000104Ed00000111* + ID_MODEL_FROM_DATABASE=OTI-64111 [Spitfire] + +pci:v0000104Ed00000217* + ID_MODEL_FROM_DATABASE=OTI-64217 + +pci:v0000104Ed00000317* + ID_MODEL_FROM_DATABASE=OTI-64317 + +pci:v0000104F* + ID_VENDOR_FROM_DATABASE=Co-time Computer Ltd + +pci:v00001050* + ID_VENDOR_FROM_DATABASE=Winbond Electronics Corp + +pci:v00001050d00000000* + ID_MODEL_FROM_DATABASE=NE2000 + +pci:v00001050d00000001* + ID_MODEL_FROM_DATABASE=W83769F + +pci:v00001050d00000033* + ID_MODEL_FROM_DATABASE=W89C33D 802.11 a/b/g BB/MAC + +pci:v00001050d00000105* + ID_MODEL_FROM_DATABASE=W82C105 + +pci:v00001050d00000840* + ID_MODEL_FROM_DATABASE=W89C840 + +pci:v00001050d00000840sv00001050sd00000001* + ID_MODEL_FROM_DATABASE=W89C840 Ethernet Adapter + +pci:v00001050d00000840sv00001050sd00000840* + ID_MODEL_FROM_DATABASE=W89C840 Ethernet Adapter + +pci:v00001050d00000940* + ID_MODEL_FROM_DATABASE=W89C940 + +pci:v00001050d00005A5A* + ID_MODEL_FROM_DATABASE=W89C940F + +pci:v00001050d00006692* + ID_MODEL_FROM_DATABASE=W6692 + +pci:v00001050d00006692sv00001043sd00001702* + ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, D, W) + +pci:v00001050d00006692sv00001043sd00001703* + ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) + +pci:v00001050d00006692sv00001043sd00001707* + ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) + +pci:v00001050d00006692sv0000144Fsd00001702* + ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, D, W) + +pci:v00001050d00006692sv0000144Fsd00001703* + ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) + +pci:v00001050d00006692sv0000144Fsd00001707* + ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) + +pci:v00001050d00009921* + ID_MODEL_FROM_DATABASE=W99200F MPEG-1 Video Encoder + +pci:v00001050d00009922* + ID_MODEL_FROM_DATABASE=W99200F/W9922PF MPEG-1/2 Video Encoder + +pci:v00001050d00009970* + ID_MODEL_FROM_DATABASE=W9970CF + +pci:v00001051* + ID_VENDOR_FROM_DATABASE=Anigma, Inc. + +pci:v00001052* + ID_VENDOR_FROM_DATABASE=?Young Micro Systems + +pci:v00001053* + ID_VENDOR_FROM_DATABASE=Young Micro Systems + +pci:v00001054* + ID_VENDOR_FROM_DATABASE=Hitachi, Ltd + +pci:v00001054d00003009* + ID_MODEL_FROM_DATABASE=2Gbps Fibre Channel to PCI HBA 3009 + +pci:v00001054d0000300A* + ID_MODEL_FROM_DATABASE=4Gbps Fibre Channel to PCI-X HBA 300a + +pci:v00001054d0000300B* + ID_MODEL_FROM_DATABASE=4Gbps Fibre Channel to PCI-X HBA 300b + +pci:v00001054d0000300F* + ID_MODEL_FROM_DATABASE=ColdFusion 3 Chipset Processor to I/O Controller + +pci:v00001054d00003010* + ID_MODEL_FROM_DATABASE=ColdFusion 3 Chipset Memory Controller Hub + +pci:v00001054d00003011* + ID_MODEL_FROM_DATABASE=ColdFusion 3e Chipset Processor to I/O Controller + +pci:v00001054d00003012* + ID_MODEL_FROM_DATABASE=ColdFusion 3e Chipset Memory Controller Hub + +pci:v00001054d00003017* + ID_MODEL_FROM_DATABASE=Unassigned Hitachi Shared FC Device 3017 + +pci:v00001054d0000301B* + ID_MODEL_FROM_DATABASE=Virtual VGA Device + +pci:v00001054d0000301D* + ID_MODEL_FROM_DATABASE=PCIe-to-PCIe Bridge with Virtualization IO Assist Feature + +pci:v00001054d00003020* + ID_MODEL_FROM_DATABASE=FIVE-EX based Fibre Channel to PCIe HBA + +pci:v00001054d0000302C* + ID_MODEL_FROM_DATABASE=M001 PCI Express Switch Upstream Port + +pci:v00001054d0000302D* + ID_MODEL_FROM_DATABASE=M001 PCI Express Switch Downstream Port + +pci:v00001054d00003505* + ID_MODEL_FROM_DATABASE=SH7751 PCI Controller (PCIC) + +pci:v00001054d0000350E* + ID_MODEL_FROM_DATABASE=SH7751R PCI Controller (PCIC) + +pci:v00001055* + ID_VENDOR_FROM_DATABASE=Efar Microsystems + +pci:v00001055d00009130* + ID_MODEL_FROM_DATABASE=SLC90E66 [Victory66] IDE + +pci:v00001055d00009460* + ID_MODEL_FROM_DATABASE=SLC90E66 [Victory66] ISA + +pci:v00001055d00009462* + ID_MODEL_FROM_DATABASE=SLC90E66 [Victory66] USB + +pci:v00001055d00009463* + ID_MODEL_FROM_DATABASE=SLC90E66 [Victory66] ACPI + +pci:v00001055d0000E420* + ID_MODEL_FROM_DATABASE=LAN9420/LAN9420i + +pci:v00001056* + ID_VENDOR_FROM_DATABASE=ICL + +pci:v00001057* + ID_VENDOR_FROM_DATABASE=Motorola + +pci:v00001057d00000001* + ID_MODEL_FROM_DATABASE=MPC105 [Eagle] + +pci:v00001057d00000002* + ID_MODEL_FROM_DATABASE=MPC106 [Grackle] + +pci:v00001057d00000003* + ID_MODEL_FROM_DATABASE=MPC8240 [Kahlua] + +pci:v00001057d00000004* + ID_MODEL_FROM_DATABASE=MPC107 + +pci:v00001057d00000006* + ID_MODEL_FROM_DATABASE=MPC8245 [Unity] + +pci:v00001057d00000008* + ID_MODEL_FROM_DATABASE=MPC8540 + +pci:v00001057d00000009* + ID_MODEL_FROM_DATABASE=MPC8560 + +pci:v00001057d00000012* + ID_MODEL_FROM_DATABASE=MPC8548 [PowerQUICC III] + +pci:v00001057d00000100* + ID_MODEL_FROM_DATABASE=MC145575 [HFC-PCI] + +pci:v00001057d00000431* + ID_MODEL_FROM_DATABASE=KTI829c 100VG + +pci:v00001057d00001073* + ID_MODEL_FROM_DATABASE=Nokia N770 + +pci:v00001057d00001219* + ID_MODEL_FROM_DATABASE=Nokia N800 + +pci:v00001057d00001801* + ID_MODEL_FROM_DATABASE=DSP56301 Digital Signal Processor + +pci:v00001057d00001801sv000014FBsd00000101* + ID_MODEL_FROM_DATABASE=Transas Radar Imitator Board [RIM] + +pci:v00001057d00001801sv000014FBsd00000102* + ID_MODEL_FROM_DATABASE=Transas Radar Imitator Board [RIM-2] + +pci:v00001057d00001801sv000014FBsd00000202* + ID_MODEL_FROM_DATABASE=Transas Radar Integrator Board [RIB-2] + +pci:v00001057d00001801sv000014FBsd00000611* + ID_MODEL_FROM_DATABASE=1 channel CAN bus Controller [CanPci-1] + +pci:v00001057d00001801sv000014FBsd00000612* + ID_MODEL_FROM_DATABASE=2 channels CAN bus Controller [CanPci-2] + +pci:v00001057d00001801sv000014FBsd00000613* + ID_MODEL_FROM_DATABASE=3 channels CAN bus Controller [CanPci-3] + +pci:v00001057d00001801sv000014FBsd00000614* + ID_MODEL_FROM_DATABASE=4 channels CAN bus Controller [CanPci-4] + +pci:v00001057d00001801sv000014FBsd00000621* + ID_MODEL_FROM_DATABASE=1 channel CAN bus Controller [CanPci2-1] + +pci:v00001057d00001801sv000014FBsd00000622* + ID_MODEL_FROM_DATABASE=2 channels CAN bus Controller [CanPci2-2] + +pci:v00001057d00001801sv000014FBsd00000810* + ID_MODEL_FROM_DATABASE=Transas VTS Radar Integrator Board [RIB-4] + +pci:v00001057d00001801sv0000175Csd00004200* + ID_MODEL_FROM_DATABASE=ASI4215 Audio Adapter + +pci:v00001057d00001801sv0000175Csd00004300* + ID_MODEL_FROM_DATABASE=ASI43xx Audio Adapter + +pci:v00001057d00001801sv0000175Csd00004400* + ID_MODEL_FROM_DATABASE=ASI4401 Audio Adapter + +pci:v00001057d00001801sv0000ECC0sd00000010* + ID_MODEL_FROM_DATABASE=Darla + +pci:v00001057d00001801sv0000ECC0sd00000020* + ID_MODEL_FROM_DATABASE=Gina + +pci:v00001057d00001801sv0000ECC0sd00000030* + ID_MODEL_FROM_DATABASE=Layla rev.0 + +pci:v00001057d00001801sv0000ECC0sd00000031* + ID_MODEL_FROM_DATABASE=Layla rev.1 + +pci:v00001057d00001801sv0000ECC0sd00000040* + ID_MODEL_FROM_DATABASE=Darla24 rev.0 + +pci:v00001057d00001801sv0000ECC0sd00000041* + ID_MODEL_FROM_DATABASE=Darla24 rev.1 + +pci:v00001057d00001801sv0000ECC0sd00000050* + ID_MODEL_FROM_DATABASE=Gina24 rev.0 + +pci:v00001057d00001801sv0000ECC0sd00000051* + ID_MODEL_FROM_DATABASE=Gina24 rev.1 + +pci:v00001057d00001801sv0000ECC0sd00000070* + ID_MODEL_FROM_DATABASE=Mona rev.0 + +pci:v00001057d00001801sv0000ECC0sd00000071* + ID_MODEL_FROM_DATABASE=Mona rev.1 + +pci:v00001057d00001801sv0000ECC0sd00000072* + ID_MODEL_FROM_DATABASE=Mona rev.2 + +pci:v00001057d000018C0* + ID_MODEL_FROM_DATABASE=MPC8265A/8266/8272 + +pci:v00001057d000018C1* + ID_MODEL_FROM_DATABASE=MPC8271/MPC8272 + +pci:v00001057d00003052* + ID_MODEL_FROM_DATABASE=SM56 Data Fax Modem + +pci:v00001057d00003410* + ID_MODEL_FROM_DATABASE=DSP56361 Digital Signal Processor + +pci:v00001057d00003410sv0000ECC0sd00000050* + ID_MODEL_FROM_DATABASE=Gina24 rev.0 + +pci:v00001057d00003410sv0000ECC0sd00000051* + ID_MODEL_FROM_DATABASE=Gina24 rev.1 + +pci:v00001057d00003410sv0000ECC0sd00000060* + ID_MODEL_FROM_DATABASE=Layla24 + +pci:v00001057d00003410sv0000ECC0sd00000070* + ID_MODEL_FROM_DATABASE=Mona rev.0 + +pci:v00001057d00003410sv0000ECC0sd00000071* + ID_MODEL_FROM_DATABASE=Mona rev.1 + +pci:v00001057d00003410sv0000ECC0sd00000072* + ID_MODEL_FROM_DATABASE=Mona rev.2 + +pci:v00001057d00003410sv0000ECC0sd00000080* + ID_MODEL_FROM_DATABASE=Mia rev.0 + +pci:v00001057d00003410sv0000ECC0sd00000081* + ID_MODEL_FROM_DATABASE=Mia rev.1 + +pci:v00001057d00003410sv0000ECC0sd00000090* + ID_MODEL_FROM_DATABASE=Indigo + +pci:v00001057d00003410sv0000ECC0sd000000A0* + ID_MODEL_FROM_DATABASE=Indigo IO + +pci:v00001057d00003410sv0000ECC0sd000000B0* + ID_MODEL_FROM_DATABASE=Indigo DJ + +pci:v00001057d00003410sv0000ECC0sd00000100* + ID_MODEL_FROM_DATABASE=3G + +pci:v00001057d00004801* + ID_MODEL_FROM_DATABASE=Raven + +pci:v00001057d00004802* + ID_MODEL_FROM_DATABASE=Falcon + +pci:v00001057d00004803* + ID_MODEL_FROM_DATABASE=Hawk + +pci:v00001057d00004806* + ID_MODEL_FROM_DATABASE=CPX8216 + +pci:v00001057d00004D68* + ID_MODEL_FROM_DATABASE=20268 + +pci:v00001057d00005600* + ID_MODEL_FROM_DATABASE=SM56 PCI Modem + +pci:v00001057d00005600sv00001057sd00000300* + ID_MODEL_FROM_DATABASE=SM56 PCI Speakerphone Modem + +pci:v00001057d00005600sv00001057sd00000301* + ID_MODEL_FROM_DATABASE=SM56 PCI Voice Modem + +pci:v00001057d00005600sv00001057sd00000302* + ID_MODEL_FROM_DATABASE=SM56 PCI Fax Modem + +pci:v00001057d00005600sv00001057sd00005600* + ID_MODEL_FROM_DATABASE=SM56 PCI Voice modem + +pci:v00001057d00005600sv000013D2sd00000300* + ID_MODEL_FROM_DATABASE=SM56 PCI Speakerphone Modem + +pci:v00001057d00005600sv000013D2sd00000301* + ID_MODEL_FROM_DATABASE=SM56 PCI Voice modem + +pci:v00001057d00005600sv000013D2sd00000302* + ID_MODEL_FROM_DATABASE=SM56 PCI Fax Modem + +pci:v00001057d00005600sv00001436sd00000300* + ID_MODEL_FROM_DATABASE=SM56 PCI Speakerphone Modem + +pci:v00001057d00005600sv00001436sd00000301* + ID_MODEL_FROM_DATABASE=SM56 PCI Voice modem + +pci:v00001057d00005600sv00001436sd00000302* + ID_MODEL_FROM_DATABASE=SM56 PCI Fax Modem + +pci:v00001057d00005600sv0000144Fsd0000100C* + ID_MODEL_FROM_DATABASE=SM56 PCI Fax Modem + +pci:v00001057d00005600sv00001494sd00000300* + ID_MODEL_FROM_DATABASE=SM56 PCI Speakerphone Modem + +pci:v00001057d00005600sv00001494sd00000301* + ID_MODEL_FROM_DATABASE=SM56 PCI Voice modem + +pci:v00001057d00005600sv000014C8sd00000300* + ID_MODEL_FROM_DATABASE=SM56 PCI Speakerphone Modem + +pci:v00001057d00005600sv000014C8sd00000302* + ID_MODEL_FROM_DATABASE=SM56 PCI Fax Modem + +pci:v00001057d00005600sv00001668sd00000300* + ID_MODEL_FROM_DATABASE=SM56 PCI Speakerphone Modem + +pci:v00001057d00005600sv00001668sd00000302* + ID_MODEL_FROM_DATABASE=SM56 PCI Fax Modem + +pci:v00001057d00005608* + ID_MODEL_FROM_DATABASE=Wildcard X100P + +pci:v00001057d00005803* + ID_MODEL_FROM_DATABASE=MPC5200 + +pci:v00001057d00005806* + ID_MODEL_FROM_DATABASE=MCF54 Coldfire + +pci:v00001057d00005808* + ID_MODEL_FROM_DATABASE=MPC8220 + +pci:v00001057d00005809* + ID_MODEL_FROM_DATABASE=MPC5200B + +pci:v00001057d00006400* + ID_MODEL_FROM_DATABASE=MPC190 Security Processor (S1 family, encryption) + +pci:v00001057d00006405* + ID_MODEL_FROM_DATABASE=MPC184 Security Processor (S1 family) + +pci:v00001058* + ID_VENDOR_FROM_DATABASE=Electronics & Telecommunications RSH + +pci:v00001059* + ID_VENDOR_FROM_DATABASE=Kontron + +pci:v0000105A* + ID_VENDOR_FROM_DATABASE=Promise Technology, Inc. + +pci:v0000105Ad00000D30* + ID_MODEL_FROM_DATABASE=PDC20265 (FastTrak100 Lite/Ultra100) + +pci:v0000105Ad00000D30sv00001043sd00008042* + ID_MODEL_FROM_DATABASE=AV7266-E South Bridge Promise RAID + +pci:v0000105Ad00000D30sv0000105Asd00004D33* + ID_MODEL_FROM_DATABASE=Ultra100 + +pci:v0000105Ad00000D38* + ID_MODEL_FROM_DATABASE=20263 + +pci:v0000105Ad00000D38sv0000105Asd00004D39* + ID_MODEL_FROM_DATABASE=Fasttrak66 + +pci:v0000105Ad00001275* + ID_MODEL_FROM_DATABASE=20275 + +pci:v0000105Ad00003318* + ID_MODEL_FROM_DATABASE=PDC20318 (SATA150 TX4) + +pci:v0000105Ad00003319* + ID_MODEL_FROM_DATABASE=PDC20319 (FastTrak S150 TX4) + +pci:v0000105Ad00003319sv0000105Asd00003319* + ID_MODEL_FROM_DATABASE=FastTrak S150 TX4 4 port SATA PCI board + +pci:v0000105Ad00003319sv00008086sd00003427* + ID_MODEL_FROM_DATABASE=S875WP1-E mainboard + +pci:v0000105Ad00003371* + ID_MODEL_FROM_DATABASE=PDC20371 (FastTrak S150 TX2plus) + +pci:v0000105Ad00003373* + ID_MODEL_FROM_DATABASE=PDC20378 (FastTrak 378/SATA 378) + +pci:v0000105Ad00003373sv00001043sd000080F5* + ID_MODEL_FROM_DATABASE=K8V Deluxe/PC-DL Deluxe motherboard + +pci:v0000105Ad00003373sv00001462sd0000590D* + ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) + +pci:v0000105Ad00003373sv00001462sd0000702E* + ID_MODEL_FROM_DATABASE=K8T NEO FIS2R motherboard + +pci:v0000105Ad00003375* + ID_MODEL_FROM_DATABASE=PDC20375 (SATA150 TX2plus) + +pci:v0000105Ad00003376* + ID_MODEL_FROM_DATABASE=PDC20376 (FastTrak 376) + +pci:v0000105Ad00003376sv00001043sd0000809E* + ID_MODEL_FROM_DATABASE=A7V8X motherboard + +pci:v0000105Ad00003515* + ID_MODEL_FROM_DATABASE=PDC40719 [FastTrak TX4300/TX4310] + +pci:v0000105Ad00003519* + ID_MODEL_FROM_DATABASE=PDC40519 (FastTrak TX4200) + +pci:v0000105Ad00003570* + ID_MODEL_FROM_DATABASE=PDC20771 [FastTrak TX2300] + +pci:v0000105Ad00003571* + ID_MODEL_FROM_DATABASE=PDC20571 (FastTrak TX2200) + +pci:v0000105Ad00003574* + ID_MODEL_FROM_DATABASE=PDC20579 SATAII 150 IDE Controller + +pci:v0000105Ad00003577* + ID_MODEL_FROM_DATABASE=PDC40779 (SATA 300 779) + +pci:v0000105Ad00003D17* + ID_MODEL_FROM_DATABASE=PDC40718 (SATA 300 TX4) + +pci:v0000105Ad00003D18* + ID_MODEL_FROM_DATABASE=PDC20518/PDC40518 (SATAII 150 TX4) + +pci:v0000105Ad00003D73* + ID_MODEL_FROM_DATABASE=PDC40775 (SATA 300 TX2plus) + +pci:v0000105Ad00003D75* + ID_MODEL_FROM_DATABASE=PDC20575 (SATAII150 TX2plus) + +pci:v0000105Ad00003F20* + ID_MODEL_FROM_DATABASE=PDC42819 [FastTrak TX2650/TX4650] + +pci:v0000105Ad00004302* + ID_MODEL_FROM_DATABASE=80333 [SuperTrak EX4350] + +pci:v0000105Ad00004D30* + ID_MODEL_FROM_DATABASE=PDC20267 (FastTrak100/Ultra100) + +pci:v0000105Ad00004D30sv0000105Asd00004D33* + ID_MODEL_FROM_DATABASE=Ultra100 + +pci:v0000105Ad00004D30sv0000105Asd00004D39* + ID_MODEL_FROM_DATABASE=FastTrak100 + +pci:v0000105Ad00004D30sv00008086sd00005744* + ID_MODEL_FROM_DATABASE=S845WD1-E mainboard + +pci:v0000105Ad00004D33* + ID_MODEL_FROM_DATABASE=20246 + +pci:v0000105Ad00004D33sv0000105Asd00004D33* + ID_MODEL_FROM_DATABASE=20246 IDE Controller + +pci:v0000105Ad00004D38* + ID_MODEL_FROM_DATABASE=PDC20262 (FastTrak66/Ultra66) + +pci:v0000105Ad00004D38sv0000105Asd00004D30* + ID_MODEL_FROM_DATABASE=Ultra Device on SuperTrak + +pci:v0000105Ad00004D38sv0000105Asd00004D33* + ID_MODEL_FROM_DATABASE=Ultra66 + +pci:v0000105Ad00004D38sv0000105Asd00004D39* + ID_MODEL_FROM_DATABASE=FastTrak66 + +pci:v0000105Ad00004D68* + ID_MODEL_FROM_DATABASE=PDC20268 [Ultra100 TX2] + +pci:v0000105Ad00004D68sv0000105Asd00004D68* + ID_MODEL_FROM_DATABASE=Ultra100 TX2 + +pci:v0000105Ad00004D69* + ID_MODEL_FROM_DATABASE=20269 + +pci:v0000105Ad00004D69sv0000105Asd00004D68* + ID_MODEL_FROM_DATABASE=Ultra133TX2 + +pci:v0000105Ad00005275* + ID_MODEL_FROM_DATABASE=PDC20276 (MBFastTrak133 Lite) + +pci:v0000105Ad00005275sv00001043sd0000807E* + ID_MODEL_FROM_DATABASE=A7V333 motherboard. + +pci:v0000105Ad00005275sv0000105Asd00000275* + ID_MODEL_FROM_DATABASE=SuperTrak SX6000 IDE + +pci:v0000105Ad00005275sv0000105Asd00001275* + ID_MODEL_FROM_DATABASE=MBFastTrak133 Lite (tm) Controller (RAID mode) + +pci:v0000105Ad00005275sv00001458sd0000B001* + ID_MODEL_FROM_DATABASE=MBUltra 133 + +pci:v0000105Ad00005300* + ID_MODEL_FROM_DATABASE=DC5300 + +pci:v0000105Ad00006268* + ID_MODEL_FROM_DATABASE=PDC20270 (FastTrak100 LP/TX2/TX4) + +pci:v0000105Ad00006268sv0000105Asd00004D68* + ID_MODEL_FROM_DATABASE=FastTrak100 TX2 + +pci:v0000105Ad00006269* + ID_MODEL_FROM_DATABASE=PDC20271 (FastTrak TX2000) + +pci:v0000105Ad00006269sv0000105Asd00006269* + ID_MODEL_FROM_DATABASE=FastTrak TX2/TX2000 + +pci:v0000105Ad00006300* + ID_MODEL_FROM_DATABASE=PDC81731 [FastTrak SX8300] + +pci:v0000105Ad00006621* + ID_MODEL_FROM_DATABASE=PDC20621 (FastTrak S150 SX4/FastTrak SX4000 lite) + +pci:v0000105Ad00006622* + ID_MODEL_FROM_DATABASE=PDC20621 [SATA150 SX4] 4 Channel IDE RAID Controller + +pci:v0000105Ad00006624* + ID_MODEL_FROM_DATABASE=PDC20621 [FastTrak SX4100] + +pci:v0000105Ad00006626* + ID_MODEL_FROM_DATABASE=PDC20618 (Ultra 618) + +pci:v0000105Ad00006629* + ID_MODEL_FROM_DATABASE=PDC20619 (FastTrak TX4000) + +pci:v0000105Ad00007275* + ID_MODEL_FROM_DATABASE=PDC20277 (SBFastTrak133 Lite) + +pci:v0000105Ad00008002* + ID_MODEL_FROM_DATABASE=SATAII150 SX8 + +pci:v0000105Ad00008350* + ID_MODEL_FROM_DATABASE=80333 [SuperTrak EX8350/EX16350], 80331 [SuperTrak EX8300/EX16300] + +pci:v0000105Ad00008650* + ID_MODEL_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] + +pci:v0000105Ad00008650sv0000105Asd00004600* + ID_MODEL_FROM_DATABASE=SuperTrak EX4650A + +pci:v0000105Ad00008650sv0000105Asd00004601* + ID_MODEL_FROM_DATABASE=SuperTrak EX4650 + +pci:v0000105Ad00008650sv0000105Asd00004610* + ID_MODEL_FROM_DATABASE=SuperTrak EX4650EL + +pci:v0000105Ad00008650sv0000105Asd00008600* + ID_MODEL_FROM_DATABASE=SuperTrak EX8650EL + +pci:v0000105Ad00008650sv0000105Asd00008601* + ID_MODEL_FROM_DATABASE=SuperTrak EX8650A + +pci:v0000105Ad00008650sv0000105Asd00008602* + ID_MODEL_FROM_DATABASE=SuperTrak EX8654 + +pci:v0000105Ad00008650sv0000105Asd00008603* + ID_MODEL_FROM_DATABASE=SuperTrak EX8658 + +pci:v0000105Ad00008650sv0000105Asd00008604* + ID_MODEL_FROM_DATABASE=SuperTrak EX8650 + +pci:v0000105Ad00008650sv0000105Asd00008610* + ID_MODEL_FROM_DATABASE=SuperTrak EX8650M + +pci:v0000105Ad00008650sv0000105Asd0000A600* + ID_MODEL_FROM_DATABASE=SuperTrak EX12650 + +pci:v0000105Ad00008650sv0000105Asd0000B600* + ID_MODEL_FROM_DATABASE=SuperTrak EX16650 + +pci:v0000105Ad00008650sv0000105Asd0000B601* + ID_MODEL_FROM_DATABASE=SuperTrak EX16654 + +pci:v0000105Ad00008650sv0000105Asd0000B602* + ID_MODEL_FROM_DATABASE=SuperTrak EX16658 + +pci:v0000105Ad00008760* + ID_MODEL_FROM_DATABASE=PM8010 [SuperTrak EX SAS and SATA 6G RAID Controller] + +pci:v0000105Ad0000C350* + ID_MODEL_FROM_DATABASE=80333 [SuperTrak EX12350] + +pci:v0000105Ad0000E350* + ID_MODEL_FROM_DATABASE=80333 [SuperTrak EX24350] + +pci:v0000105B* + ID_VENDOR_FROM_DATABASE=Foxconn International, Inc. + +pci:v0000105C* + ID_VENDOR_FROM_DATABASE=Wipro Infotech Limited + +pci:v0000105D* + ID_VENDOR_FROM_DATABASE=Number 9 Computer Company + +pci:v0000105Dd00002309* + ID_MODEL_FROM_DATABASE=Imagine 128 + +pci:v0000105Dd00002339* + ID_MODEL_FROM_DATABASE=Imagine 128-II + +pci:v0000105Dd00002339sv0000105Dsd00000000* + ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM + +pci:v0000105Dd00002339sv0000105Dsd00000001* + ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM + +pci:v0000105Dd00002339sv0000105Dsd00000002* + ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM + +pci:v0000105Dd00002339sv0000105Dsd00000003* + ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM + +pci:v0000105Dd00002339sv0000105Dsd00000004* + ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM + +pci:v0000105Dd00002339sv0000105Dsd00000005* + ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM + +pci:v0000105Dd00002339sv0000105Dsd00000006* + ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM + +pci:v0000105Dd00002339sv0000105Dsd00000007* + ID_MODEL_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM + +pci:v0000105Dd00002339sv0000105Dsd00000008* + ID_MODEL_FROM_DATABASE=Imagine 128 series 2e 4Mb DRAM + +pci:v0000105Dd00002339sv0000105Dsd00000009* + ID_MODEL_FROM_DATABASE=Imagine 128 series 2e 4Mb DRAM + +pci:v0000105Dd00002339sv0000105Dsd0000000A* + ID_MODEL_FROM_DATABASE=Imagine 128 series 2 8Mb VRAM + +pci:v0000105Dd00002339sv0000105Dsd0000000B* + ID_MODEL_FROM_DATABASE=Imagine 128 series 2 8Mb H-VRAM + +pci:v0000105Dd00002339sv000011A4sd0000000A* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel + +pci:v0000105Dd00002339sv000013CCsd00000000* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel + +pci:v0000105Dd00002339sv000013CCsd00000004* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel + +pci:v0000105Dd00002339sv000013CCsd00000005* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel + +pci:v0000105Dd00002339sv000013CCsd00000006* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel + +pci:v0000105Dd00002339sv000013CCsd00000008* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel + +pci:v0000105Dd00002339sv000013CCsd00000009* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel + +pci:v0000105Dd00002339sv000013CCsd0000000A* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel + +pci:v0000105Dd00002339sv000013CCsd0000000C* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel + +pci:v0000105Dd0000493D* + ID_MODEL_FROM_DATABASE=Imagine 128 T2R [Ticket to Ride] + +pci:v0000105Dd0000493Dsv000011A4sd0000000A* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head + +pci:v0000105Dd0000493Dsv000011A4sd0000000B* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head + +pci:v0000105Dd0000493Dsv000013CCsd00000002* + ID_MODEL_FROM_DATABASE=Barco Metheus 4 Megapixel, Dual Head + +pci:v0000105Dd0000493Dsv000013CCsd00000003* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head + +pci:v0000105Dd0000493Dsv000013CCsd00000007* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head + +pci:v0000105Dd0000493Dsv000013CCsd00000008* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head + +pci:v0000105Dd0000493Dsv000013CCsd00000009* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head + +pci:v0000105Dd0000493Dsv000013CCsd0000000A* + ID_MODEL_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head + +pci:v0000105Dd00005348* + ID_MODEL_FROM_DATABASE=Revolution 4 + +pci:v0000105Dd00005348sv0000105Dsd00000037* + ID_MODEL_FROM_DATABASE=Revolution IV-FP AGP (For SGI 1600SW) + +pci:v0000105Dd00005348sv000011A4sd00000028* + ID_MODEL_FROM_DATABASE=PVS5600M + +pci:v0000105Dd00005348sv000011A4sd00000038* + ID_MODEL_FROM_DATABASE=PVS5600D + +pci:v0000105E* + ID_VENDOR_FROM_DATABASE=Vtech Computers Ltd + +pci:v0000105F* + ID_VENDOR_FROM_DATABASE=Infotronic America Inc + +pci:v00001060* + ID_VENDOR_FROM_DATABASE=United Microelectronics [UMC] + +pci:v00001060d00000001* + ID_MODEL_FROM_DATABASE=UM82C881 + +pci:v00001060d00000002* + ID_MODEL_FROM_DATABASE=UM82C886 + +pci:v00001060d00000101* + ID_MODEL_FROM_DATABASE=UM8673F + +pci:v00001060d00000881* + ID_MODEL_FROM_DATABASE=UM8881 + +pci:v00001060d00000886* + ID_MODEL_FROM_DATABASE=UM8886F + +pci:v00001060d00000891* + ID_MODEL_FROM_DATABASE=UM8891A + +pci:v00001060d00001001* + ID_MODEL_FROM_DATABASE=UM886A + +pci:v00001060d0000673A* + ID_MODEL_FROM_DATABASE=UM8886BF + +pci:v00001060d0000673B* + ID_MODEL_FROM_DATABASE=EIDE Master/DMA + +pci:v00001060d00008710* + ID_MODEL_FROM_DATABASE=UM8710 + +pci:v00001060d0000886A* + ID_MODEL_FROM_DATABASE=UM8886A + +pci:v00001060d00008881* + ID_MODEL_FROM_DATABASE=UM8881F + +pci:v00001060d00008886* + ID_MODEL_FROM_DATABASE=UM8886F + +pci:v00001060d0000888A* + ID_MODEL_FROM_DATABASE=UM8886A + +pci:v00001060d00008891* + ID_MODEL_FROM_DATABASE=UM8891A + +pci:v00001060d00009017* + ID_MODEL_FROM_DATABASE=UM9017F + +pci:v00001060d00009018* + ID_MODEL_FROM_DATABASE=UM9018 + +pci:v00001060d00009026* + ID_MODEL_FROM_DATABASE=UM9026 + +pci:v00001060d0000E881* + ID_MODEL_FROM_DATABASE=UM8881N + +pci:v00001060d0000E886* + ID_MODEL_FROM_DATABASE=UM8886N + +pci:v00001060d0000E88A* + ID_MODEL_FROM_DATABASE=UM8886N + +pci:v00001060d0000E891* + ID_MODEL_FROM_DATABASE=UM8891N + +pci:v00001061* + ID_VENDOR_FROM_DATABASE=I.I.T. + +pci:v00001061d00000001* + ID_MODEL_FROM_DATABASE=AGX016 + +pci:v00001061d00000002* + ID_MODEL_FROM_DATABASE=IIT3204/3501 + +pci:v00001062* + ID_VENDOR_FROM_DATABASE=Maspar Computer Corp + +pci:v00001063* + ID_VENDOR_FROM_DATABASE=Ocean Office Automation + +pci:v00001064* + ID_VENDOR_FROM_DATABASE=Alcatel + +pci:v00001064d00001102* + ID_MODEL_FROM_DATABASE=Dynamite 2840 (ADSL PCI modem) + +pci:v00001065* + ID_VENDOR_FROM_DATABASE=Texas Microsystems + +pci:v00001066* + ID_VENDOR_FROM_DATABASE=PicoPower Technology + +pci:v00001066d00000000* + ID_MODEL_FROM_DATABASE=PT80C826 + +pci:v00001066d00000001* + ID_MODEL_FROM_DATABASE=PT86C521 [Vesuvius v1] Host Bridge + +pci:v00001066d00000002* + ID_MODEL_FROM_DATABASE=PT86C523 [Vesuvius v3] PCI-ISA Bridge Master + +pci:v00001066d00000003* + ID_MODEL_FROM_DATABASE=PT86C524 [Nile] PCI-to-PCI Bridge + +pci:v00001066d00000004* + ID_MODEL_FROM_DATABASE=PT86C525 [Nile-II] PCI-to-PCI Bridge + +pci:v00001066d00000005* + ID_MODEL_FROM_DATABASE=National PC87550 System Controller + +pci:v00001066d00008002* + ID_MODEL_FROM_DATABASE=PT86C523 [Vesuvius v3] PCI-ISA Bridge Slave + +pci:v00001067* + ID_VENDOR_FROM_DATABASE=Mitsubishi Electric + +pci:v00001067d00000301* + ID_MODEL_FROM_DATABASE=AccelGraphics AccelECLIPSE + +pci:v00001067d00000304* + ID_MODEL_FROM_DATABASE=AccelGALAXY A2100 [OEM Evans & Sutherland] + +pci:v00001067d00000308* + ID_MODEL_FROM_DATABASE=Tornado 3000 [OEM Evans & Sutherland] + +pci:v00001067d00001002* + ID_MODEL_FROM_DATABASE=VG500 [VolumePro Volume Rendering Accelerator] + +pci:v00001068* + ID_VENDOR_FROM_DATABASE=Diversified Technology + +pci:v00001069* + ID_VENDOR_FROM_DATABASE=Mylex Corporation + +pci:v00001069d00000001* + ID_MODEL_FROM_DATABASE=DAC960P + +pci:v00001069d00000002* + ID_MODEL_FROM_DATABASE=DAC960PD + +pci:v00001069d00000010* + ID_MODEL_FROM_DATABASE=DAC960PG + +pci:v00001069d00000020* + ID_MODEL_FROM_DATABASE=DAC960LA + +pci:v00001069d00000050* + ID_MODEL_FROM_DATABASE=AcceleRAID 352/170/160 support Device + +pci:v00001069d00000050sv00001069sd00000050* + ID_MODEL_FROM_DATABASE=AcceleRAID 352 support Device + +pci:v00001069d00000050sv00001069sd00000052* + ID_MODEL_FROM_DATABASE=AcceleRAID 170 support Device + +pci:v00001069d00000050sv00001069sd00000054* + ID_MODEL_FROM_DATABASE=AcceleRAID 160 support Device + +pci:v00001069d0000B166* + ID_MODEL_FROM_DATABASE=AcceleRAID 600/500/400/Sapphire support Device + +pci:v00001069d0000B166sv00001014sd00000242* + ID_MODEL_FROM_DATABASE=iSeries 2872 DASD IOA + +pci:v00001069d0000B166sv00001014sd00000266* + ID_MODEL_FROM_DATABASE=Dual Channel PCI-X U320 SCSI Adapter + +pci:v00001069d0000B166sv00001014sd00000278* + ID_MODEL_FROM_DATABASE=Dual Channel PCI-X U320 SCSI RAID Adapter + +pci:v00001069d0000B166sv00001014sd000002D3* + ID_MODEL_FROM_DATABASE=Dual Channel PCI-X U320 SCSI Adapter + +pci:v00001069d0000B166sv00001014sd000002D4* + ID_MODEL_FROM_DATABASE=Dual Channel PCI-X U320 SCSI RAID Adapter + +pci:v00001069d0000B166sv00001069sd00000200* + ID_MODEL_FROM_DATABASE=AcceleRAID 400, Single Channel, PCI-X, U320, SCSI RAID + +pci:v00001069d0000B166sv00001069sd00000202* + ID_MODEL_FROM_DATABASE=AcceleRAID Sapphire, Dual Channel, PCI-X, U320, SCSI RAID + +pci:v00001069d0000B166sv00001069sd00000204* + ID_MODEL_FROM_DATABASE=AcceleRAID 500, Dual Channel, Low-Profile, PCI-X, U320, SCSI RAID + +pci:v00001069d0000B166sv00001069sd00000206* + ID_MODEL_FROM_DATABASE=AcceleRAID 600, Dual Channel, PCI-X, U320, SCSI RAID + +pci:v00001069d0000BA55* + ID_MODEL_FROM_DATABASE=eXtremeRAID 1100 support Device + +pci:v00001069d0000BA56* + ID_MODEL_FROM_DATABASE=eXtremeRAID 2000/3000 support Device + +pci:v00001069d0000BA56sv00001069sd00000030* + ID_MODEL_FROM_DATABASE=eXtremeRAID 3000 support Device + +pci:v00001069d0000BA56sv00001069sd00000040* + ID_MODEL_FROM_DATABASE=eXtremeRAID 2000 support Device + +pci:v00001069d0000BA57* + ID_MODEL_FROM_DATABASE=eXtremeRAID 4000/5000 support Device + +pci:v00001069d0000BA57sv00001069sd00000072* + ID_MODEL_FROM_DATABASE=eXtremeRAID 5000 support Device + +pci:v0000106A* + ID_VENDOR_FROM_DATABASE=Aten Research Inc + +pci:v0000106B* + ID_VENDOR_FROM_DATABASE=Apple Inc. + +pci:v0000106Bd00000001* + ID_MODEL_FROM_DATABASE=Bandit PowerPC host bridge + +pci:v0000106Bd00000002* + ID_MODEL_FROM_DATABASE=Grand Central I/O + +pci:v0000106Bd00000003* + ID_MODEL_FROM_DATABASE=Control Video + +pci:v0000106Bd00000004* + ID_MODEL_FROM_DATABASE=PlanB Video-In + +pci:v0000106Bd00000007* + ID_MODEL_FROM_DATABASE=O'Hare I/O + +pci:v0000106Bd0000000C* + ID_MODEL_FROM_DATABASE=DOS on Mac + +pci:v0000106Bd0000000E* + ID_MODEL_FROM_DATABASE=Hydra Mac I/O + +pci:v0000106Bd00000010* + ID_MODEL_FROM_DATABASE=Heathrow Mac I/O + +pci:v0000106Bd00000017* + ID_MODEL_FROM_DATABASE=Paddington Mac I/O + +pci:v0000106Bd00000018* + ID_MODEL_FROM_DATABASE=UniNorth FireWire + +pci:v0000106Bd00000019* + ID_MODEL_FROM_DATABASE=KeyLargo USB + +pci:v0000106Bd0000001E* + ID_MODEL_FROM_DATABASE=UniNorth Internal PCI + +pci:v0000106Bd0000001F* + ID_MODEL_FROM_DATABASE=UniNorth PCI + +pci:v0000106Bd00000020* + ID_MODEL_FROM_DATABASE=UniNorth AGP + +pci:v0000106Bd00000021* + ID_MODEL_FROM_DATABASE=UniNorth GMAC (Sun GEM) + +pci:v0000106Bd00000022* + ID_MODEL_FROM_DATABASE=KeyLargo Mac I/O + +pci:v0000106Bd00000024* + ID_MODEL_FROM_DATABASE=UniNorth/Pangea GMAC (Sun GEM) + +pci:v0000106Bd00000025* + ID_MODEL_FROM_DATABASE=KeyLargo/Pangea Mac I/O + +pci:v0000106Bd00000026* + ID_MODEL_FROM_DATABASE=KeyLargo/Pangea USB + +pci:v0000106Bd00000027* + ID_MODEL_FROM_DATABASE=UniNorth/Pangea AGP + +pci:v0000106Bd00000028* + ID_MODEL_FROM_DATABASE=UniNorth/Pangea PCI + +pci:v0000106Bd00000029* + ID_MODEL_FROM_DATABASE=UniNorth/Pangea Internal PCI + +pci:v0000106Bd0000002D* + ID_MODEL_FROM_DATABASE=UniNorth 1.5 AGP + +pci:v0000106Bd0000002E* + ID_MODEL_FROM_DATABASE=UniNorth 1.5 PCI + +pci:v0000106Bd0000002F* + ID_MODEL_FROM_DATABASE=UniNorth 1.5 Internal PCI + +pci:v0000106Bd00000030* + ID_MODEL_FROM_DATABASE=UniNorth/Pangea FireWire + +pci:v0000106Bd00000031* + ID_MODEL_FROM_DATABASE=UniNorth 2 FireWire + +pci:v0000106Bd00000031sv0000106Bsd00005811* + ID_MODEL_FROM_DATABASE=iBook G4 2004 + +pci:v0000106Bd00000032* + ID_MODEL_FROM_DATABASE=UniNorth 2 GMAC (Sun GEM) + +pci:v0000106Bd00000033* + ID_MODEL_FROM_DATABASE=UniNorth 2 ATA/100 + +pci:v0000106Bd00000034* + ID_MODEL_FROM_DATABASE=UniNorth 2 AGP + +pci:v0000106Bd00000035* + ID_MODEL_FROM_DATABASE=UniNorth 2 PCI + +pci:v0000106Bd00000036* + ID_MODEL_FROM_DATABASE=UniNorth 2 Internal PCI + +pci:v0000106Bd0000003B* + ID_MODEL_FROM_DATABASE=UniNorth/Intrepid ATA/100 + +pci:v0000106Bd0000003E* + ID_MODEL_FROM_DATABASE=KeyLargo/Intrepid Mac I/O + +pci:v0000106Bd0000003F* + ID_MODEL_FROM_DATABASE=KeyLargo/Intrepid USB + +pci:v0000106Bd00000040* + ID_MODEL_FROM_DATABASE=K2 KeyLargo USB + +pci:v0000106Bd00000041* + ID_MODEL_FROM_DATABASE=K2 KeyLargo Mac/IO + +pci:v0000106Bd00000042* + ID_MODEL_FROM_DATABASE=K2 FireWire + +pci:v0000106Bd00000043* + ID_MODEL_FROM_DATABASE=K2 ATA/100 + +pci:v0000106Bd00000045* + ID_MODEL_FROM_DATABASE=K2 HT-PCI Bridge + +pci:v0000106Bd00000046* + ID_MODEL_FROM_DATABASE=K2 HT-PCI Bridge + +pci:v0000106Bd00000047* + ID_MODEL_FROM_DATABASE=K2 HT-PCI Bridge + +pci:v0000106Bd00000048* + ID_MODEL_FROM_DATABASE=K2 HT-PCI Bridge + +pci:v0000106Bd00000049* + ID_MODEL_FROM_DATABASE=K2 HT-PCI Bridge + +pci:v0000106Bd0000004A* + ID_MODEL_FROM_DATABASE=CPC945 HT Bridge + +pci:v0000106Bd0000004B* + ID_MODEL_FROM_DATABASE=U3 AGP + +pci:v0000106Bd0000004C* + ID_MODEL_FROM_DATABASE=K2 GMAC (Sun GEM) + +pci:v0000106Bd0000004F* + ID_MODEL_FROM_DATABASE=Shasta Mac I/O + +pci:v0000106Bd00000050* + ID_MODEL_FROM_DATABASE=Shasta IDE + +pci:v0000106Bd00000051* + ID_MODEL_FROM_DATABASE=Shasta (Sun GEM) + +pci:v0000106Bd00000052* + ID_MODEL_FROM_DATABASE=Shasta Firewire + +pci:v0000106Bd00000053* + ID_MODEL_FROM_DATABASE=Shasta PCI Bridge + +pci:v0000106Bd00000054* + ID_MODEL_FROM_DATABASE=Shasta PCI Bridge + +pci:v0000106Bd00000055* + ID_MODEL_FROM_DATABASE=Shasta PCI Bridge + +pci:v0000106Bd00000056* + ID_MODEL_FROM_DATABASE=U4 PCIe + +pci:v0000106Bd00000057* + ID_MODEL_FROM_DATABASE=U3 HT Bridge + +pci:v0000106Bd00000058* + ID_MODEL_FROM_DATABASE=U3L AGP Bridge + +pci:v0000106Bd00000059* + ID_MODEL_FROM_DATABASE=U3H AGP Bridge + +pci:v0000106Bd0000005B* + ID_MODEL_FROM_DATABASE=CPC945 PCIe Bridge + +pci:v0000106Bd00000066* + ID_MODEL_FROM_DATABASE=Intrepid2 AGP Bridge + +pci:v0000106Bd00000067* + ID_MODEL_FROM_DATABASE=Intrepid2 PCI Bridge + +pci:v0000106Bd00000068* + ID_MODEL_FROM_DATABASE=Intrepid2 PCI Bridge + +pci:v0000106Bd00000069* + ID_MODEL_FROM_DATABASE=Intrepid2 ATA/100 + +pci:v0000106Bd0000006A* + ID_MODEL_FROM_DATABASE=Intrepid2 Firewire + +pci:v0000106Bd0000006B* + ID_MODEL_FROM_DATABASE=Intrepid2 GMAC (Sun GEM) + +pci:v0000106Bd00000074* + ID_MODEL_FROM_DATABASE=U4 HT Bridge + +pci:v0000106Bd00001645* + ID_MODEL_FROM_DATABASE=Broadcom NetXtreme BCM5701 Gigabit Ethernet + +pci:v0000106C* + ID_VENDOR_FROM_DATABASE=Hynix Semiconductor + +pci:v0000106Cd00008139* + ID_MODEL_FROM_DATABASE=8139c 100BaseTX Ethernet Controller + +pci:v0000106Cd00008801* + ID_MODEL_FROM_DATABASE=Dual Pentium ISA/PCI Motherboard + +pci:v0000106Cd00008802* + ID_MODEL_FROM_DATABASE=PowerPC ISA/PCI Motherboard + +pci:v0000106Cd00008803* + ID_MODEL_FROM_DATABASE=Dual Window Graphics Accelerator + +pci:v0000106Cd00008804* + ID_MODEL_FROM_DATABASE=LAN Controller + +pci:v0000106Cd00008805* + ID_MODEL_FROM_DATABASE=100-BaseT LAN + +pci:v0000106D* + ID_VENDOR_FROM_DATABASE=Sequent Computer Systems + +pci:v0000106E* + ID_VENDOR_FROM_DATABASE=DFI, Inc + +pci:v0000106F* + ID_VENDOR_FROM_DATABASE=City Gate Development Ltd + +pci:v00001070* + ID_VENDOR_FROM_DATABASE=Daewoo Telecom Ltd + +pci:v00001071* + ID_VENDOR_FROM_DATABASE=Mitac + +pci:v00001071d00008160* + ID_MODEL_FROM_DATABASE=Mitac 8060B Mobile Platform + +pci:v00001072* + ID_VENDOR_FROM_DATABASE=GIT Co Ltd + +pci:v00001073* + ID_VENDOR_FROM_DATABASE=Yamaha Corporation + +pci:v00001073d00000001* + ID_MODEL_FROM_DATABASE=3D GUI Accelerator + +pci:v00001073d00000002* + ID_MODEL_FROM_DATABASE=YGV615 [RPA3 3D-Graphics Controller] + +pci:v00001073d00000003* + ID_MODEL_FROM_DATABASE=YMF-740 + +pci:v00001073d00000004* + ID_MODEL_FROM_DATABASE=YMF-724 + +pci:v00001073d00000004sv00001073sd00000004* + ID_MODEL_FROM_DATABASE=YMF724-Based PCI Audio Adapter + +pci:v00001073d00000005* + ID_MODEL_FROM_DATABASE=DS1 Audio + +pci:v00001073d00000005sv00001073sd00000005* + ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC + +pci:v00001073d00000006* + ID_MODEL_FROM_DATABASE=DS1 Audio + +pci:v00001073d00000008* + ID_MODEL_FROM_DATABASE=DS1 Audio + +pci:v00001073d00000008sv00001073sd00000008* + ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC + +pci:v00001073d0000000A* + ID_MODEL_FROM_DATABASE=DS1L Audio + +pci:v00001073d0000000Asv00001073sd00000004* + ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC + +pci:v00001073d0000000Asv00001073sd0000000A* + ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC + +pci:v00001073d0000000Asv00008086sd00004D55* + ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC [Intel MU440EX] + +pci:v00001073d0000000C* + ID_MODEL_FROM_DATABASE=YMF-740C [DS-1L Audio Controller] + +pci:v00001073d0000000Csv0000107Asd0000000C* + ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC + +pci:v00001073d0000000D* + ID_MODEL_FROM_DATABASE=YMF-724F [DS-1 Audio Controller] + +pci:v00001073d0000000Dsv00001073sd0000000D* + ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC + +pci:v00001073d00000010* + ID_MODEL_FROM_DATABASE=YMF-744B [DS-1S Audio Controller] + +pci:v00001073d00000010sv00001073sd00000006* + ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC + +pci:v00001073d00000010sv00001073sd00000010* + ID_MODEL_FROM_DATABASE=DS-XG PCI Audio CODEC + +pci:v00001073d00000012* + ID_MODEL_FROM_DATABASE=YMF-754 [DS-1E Audio Controller] + +pci:v00001073d00000012sv00001073sd00000012* + ID_MODEL_FROM_DATABASE=DS-XG PCI Audio Codec + +pci:v00001073d00000020* + ID_MODEL_FROM_DATABASE=DS-1 Audio + +pci:v00001073d00001000* + ID_MODEL_FROM_DATABASE=SW1000XG [XG Factory] + +pci:v00001073d00002000* + ID_MODEL_FROM_DATABASE=DS2416 Digital Mixing Card + +pci:v00001073d00002000sv00001073sd00002000* + ID_MODEL_FROM_DATABASE=DS2416 Digital Mixing Card + +pci:v00001074* + ID_VENDOR_FROM_DATABASE=NexGen Microsystems + +pci:v00001074d00004E78* + ID_MODEL_FROM_DATABASE=82c500/1 + +pci:v00001075* + ID_VENDOR_FROM_DATABASE=Advanced Integrations Research + +pci:v00001076* + ID_VENDOR_FROM_DATABASE=Chaintech Computer Co. Ltd + +pci:v00001077* + ID_VENDOR_FROM_DATABASE=QLogic Corp. + +pci:v00001077d00001016* + ID_MODEL_FROM_DATABASE=ISP10160 Single Channel Ultra3 SCSI Processor + +pci:v00001077d00001020* + ID_MODEL_FROM_DATABASE=ISP1020 Fast-wide SCSI + +pci:v00001077d00001022* + ID_MODEL_FROM_DATABASE=ISP1022 Fast-wide SCSI + +pci:v00001077d00001080* + ID_MODEL_FROM_DATABASE=ISP1080 SCSI Host Adapter + +pci:v00001077d00001216* + ID_MODEL_FROM_DATABASE=ISP12160 Dual Channel Ultra3 SCSI Processor + +pci:v00001077d00001216sv0000101Esd00008471* + ID_MODEL_FROM_DATABASE=QLA12160 on AMI MegaRAID + +pci:v00001077d00001216sv0000101Esd00008493* + ID_MODEL_FROM_DATABASE=QLA12160 on AMI MegaRAID + +pci:v00001077d00001240* + ID_MODEL_FROM_DATABASE=ISP1240 SCSI Host Adapter + +pci:v00001077d00001280* + ID_MODEL_FROM_DATABASE=ISP1280 SCSI Host Adapter + +pci:v00001077d00002020* + ID_MODEL_FROM_DATABASE=ISP2020A Fast!SCSI Basic Adapter + +pci:v00001077d00002031* + ID_MODEL_FROM_DATABASE=ISP8324-based 16Gb Fibre Channel to PCI Express Adapter + +pci:v00001077d00002100* + ID_MODEL_FROM_DATABASE=QLA2100 64-bit Fibre Channel Adapter + +pci:v00001077d00002100sv00001077sd00000001* + ID_MODEL_FROM_DATABASE=QLA2100 64-bit Fibre Channel Adapter + +pci:v00001077d00002200* + ID_MODEL_FROM_DATABASE=QLA2200 64-bit Fibre Channel Adapter + +pci:v00001077d00002200sv00001077sd00000002* + ID_MODEL_FROM_DATABASE=QLA2200 + +pci:v00001077d00002300* + ID_MODEL_FROM_DATABASE=QLA2300 64-bit Fibre Channel Adapter + +pci:v00001077d00002312* + ID_MODEL_FROM_DATABASE=ISP2312-based 2Gb Fibre Channel to PCI-X HBA + +pci:v00001077d00002312sv0000103Csd00000131* + ID_MODEL_FROM_DATABASE=2Gb Fibre Channel - Single port [A7538A] + +pci:v00001077d00002312sv0000103Csd000012BA* + ID_MODEL_FROM_DATABASE=2Gb Fibre Channel - Dual port [A6826A] + +pci:v00001077d00002322* + ID_MODEL_FROM_DATABASE=ISP2322-based 2Gb Fibre Channel to PCI-X HBA + +pci:v00001077d00002422* + ID_MODEL_FROM_DATABASE=ISP2422-based 4Gb Fibre Channel to PCI-X HBA + +pci:v00001077d00002422sv0000103Csd000012D7* + ID_MODEL_FROM_DATABASE=4Gb Fibre Channel [AB379A] + +pci:v00001077d00002422sv0000103Csd000012DD* + ID_MODEL_FROM_DATABASE=4Gb Fibre Channel [AB429A] + +pci:v00001077d00002432* + ID_MODEL_FROM_DATABASE=ISP2432-based 4Gb Fibre Channel to PCI Express HBA + +pci:v00001077d00002532* + ID_MODEL_FROM_DATABASE=ISP2532-based 8Gb Fibre Channel to PCI Express HBA + +pci:v00001077d00002532sv00001077sd00000167* + ID_MODEL_FROM_DATABASE=QME2572 Dual Port FC8 HBA Mezzanine + +pci:v00001077d00003022* + ID_MODEL_FROM_DATABASE=ISP4022-based Ethernet NIC + +pci:v00001077d00003032* + ID_MODEL_FROM_DATABASE=ISP4032-based Ethernet IPv6 NIC + +pci:v00001077d00004010* + ID_MODEL_FROM_DATABASE=ISP4010-based iSCSI TOE HBA + +pci:v00001077d00004022* + ID_MODEL_FROM_DATABASE=ISP4022-based iSCSI TOE HBA + +pci:v00001077d00004032* + ID_MODEL_FROM_DATABASE=ISP4032-based iSCSI TOE IPv6 HBA + +pci:v00001077d00005432* + ID_MODEL_FROM_DATABASE=SP232-based 4Gb Fibre Channel to PCI Express HBA + +pci:v00001077d00006312* + ID_MODEL_FROM_DATABASE=SP202-based 2Gb Fibre Channel to PCI-X HBA + +pci:v00001077d00006322* + ID_MODEL_FROM_DATABASE=SP212-based 2Gb Fibre Channel to PCI-X HBA + +pci:v00001077d00007220* + ID_MODEL_FROM_DATABASE=IBA7220 InfiniBand HCA + +pci:v00001077d00007322* + ID_MODEL_FROM_DATABASE=IBA7322 QDR InfiniBand HCA + +pci:v00001077d00008000* + ID_MODEL_FROM_DATABASE=10GbE Converged Network Adapter (TCP/IP Networking) + +pci:v00001077d00008001* + ID_MODEL_FROM_DATABASE=10GbE Converged Network Adapter (FCoE) + +pci:v00001077d00008020* + ID_MODEL_FROM_DATABASE=cLOM8214 1/10GbE Controller + +pci:v00001077d00008020sv0000103Csd00003346* + ID_MODEL_FROM_DATABASE=CN1000Q Dual Port Converged Network Adapter + +pci:v00001077d00008020sv0000103Csd00003733* + ID_MODEL_FROM_DATABASE=NC523SFP 10Gb 2-port Server Adapter + +pci:v00001077d00008020sv00001077sd00000203* + ID_MODEL_FROM_DATABASE=8200 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking) + +pci:v00001077d00008020sv00001077sd00000207* + ID_MODEL_FROM_DATABASE=8200 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking) + +pci:v00001077d00008020sv00001077sd0000020B* + ID_MODEL_FROM_DATABASE=3200 Series Dual Port 10Gb Intelligent Ethernet Adapter + +pci:v00001077d00008020sv00001077sd0000020C* + ID_MODEL_FROM_DATABASE=3200 Series Quad Port 1Gb Intelligent Ethernet Adapter + +pci:v00001077d00008020sv00001077sd0000020F* + ID_MODEL_FROM_DATABASE=3200 Series Single Port 10Gb Intelligent Ethernet Adapter + +pci:v00001077d00008020sv00001077sd00000210* + ID_MODEL_FROM_DATABASE=QME8242-k 10GbE Dual Port Mezzanine Card + +pci:v00001077d00008021* + ID_MODEL_FROM_DATABASE=8200 Series 10GbE Converged Network Adapter (FCoE) + +pci:v00001077d00008021sv0000103Csd00003348* + ID_MODEL_FROM_DATABASE=CN1000Q Dual Port Converged Network Adapter + +pci:v00001077d00008021sv00001077sd00000211* + ID_MODEL_FROM_DATABASE=QME8242-k 10GbE Dual Port Mezzanine Card, FCoE + +pci:v00001077d00008022* + ID_MODEL_FROM_DATABASE=8200 Series 10GbE Converged Network Adapter (iSCSI) + +pci:v00001077d00008022sv0000103Csd00003347* + ID_MODEL_FROM_DATABASE=CN1000Q Dual Port Converged Network Adapter + +pci:v00001077d00008022sv00001077sd00000212* + ID_MODEL_FROM_DATABASE=QME8242-k 10GbE Dual Port Mezzanine Card, iSCSI + +pci:v00001077d00008030* + ID_MODEL_FROM_DATABASE=ISP8324 1/10GbE Converged Network Controller + +pci:v00001077d00008030sv00001077sd00000243* + ID_MODEL_FROM_DATABASE=8300 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking) + +pci:v00001077d00008030sv00001077sd00000246* + ID_MODEL_FROM_DATABASE=8300 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking) + +pci:v00001077d00008031* + ID_MODEL_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (FCoE) + +pci:v00001077d00008032* + ID_MODEL_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (iSCSI) + +pci:v00001077d00008432* + ID_MODEL_FROM_DATABASE=ISP2432M-based 10GbE Converged Network Adapter (CNA) + +pci:v00001078* + ID_VENDOR_FROM_DATABASE=Cyrix Corporation + +pci:v00001078d00000000* + ID_MODEL_FROM_DATABASE=5510 [Grappa] + +pci:v00001078d00000001* + ID_MODEL_FROM_DATABASE=PCI Master + +pci:v00001078d00000002* + ID_MODEL_FROM_DATABASE=5520 [Cognac] + +pci:v00001078d00000100* + ID_MODEL_FROM_DATABASE=5530 Legacy [Kahlua] + +pci:v00001078d00000101* + ID_MODEL_FROM_DATABASE=5530 SMI [Kahlua] + +pci:v00001078d00000102* + ID_MODEL_FROM_DATABASE=5530 IDE [Kahlua] + +pci:v00001078d00000103* + ID_MODEL_FROM_DATABASE=5530 Audio [Kahlua] + +pci:v00001078d00000104* + ID_MODEL_FROM_DATABASE=5530 Video [Kahlua] + +pci:v00001078d00000400* + ID_MODEL_FROM_DATABASE=ZFMicro PCI Bridge + +pci:v00001078d00000401* + ID_MODEL_FROM_DATABASE=ZFMicro Chipset SMI + +pci:v00001078d00000402* + ID_MODEL_FROM_DATABASE=ZFMicro Chipset IDE + +pci:v00001078d00000403* + ID_MODEL_FROM_DATABASE=ZFMicro Expansion Bus + +pci:v00001079* + ID_VENDOR_FROM_DATABASE=I-Bus + +pci:v0000107A* + ID_VENDOR_FROM_DATABASE=NetWorth + +pci:v0000107B* + ID_VENDOR_FROM_DATABASE=Gateway, Inc. + +pci:v0000107C* + ID_VENDOR_FROM_DATABASE=LG Electronics [Lucky Goldstar Co. Ltd] + +pci:v0000107D* + ID_VENDOR_FROM_DATABASE=LeadTek Research Inc. + +pci:v0000107Dd00000000* + ID_MODEL_FROM_DATABASE=P86C850 + +pci:v0000107E* + ID_VENDOR_FROM_DATABASE=Interphase Corporation + +pci:v0000107Ed00000001* + ID_MODEL_FROM_DATABASE=5515 ATM Adapter [Flipper] + +pci:v0000107Ed00000002* + ID_MODEL_FROM_DATABASE=100 VG AnyLan Controller + +pci:v0000107Ed00000004* + ID_MODEL_FROM_DATABASE=5526 Fibre Channel Host Adapter + +pci:v0000107Ed00000005* + ID_MODEL_FROM_DATABASE=x526 Fibre Channel Host Adapter + +pci:v0000107Ed00000008* + ID_MODEL_FROM_DATABASE=5525/5575 ATM Adapter (155 Mbit) [Atlantic] + +pci:v0000107Ed00009003* + ID_MODEL_FROM_DATABASE=5535-4P-BRI-ST + +pci:v0000107Ed00009007* + ID_MODEL_FROM_DATABASE=5535-4P-BRI-U + +pci:v0000107Ed00009008* + ID_MODEL_FROM_DATABASE=5535-1P-SR + +pci:v0000107Ed0000900C* + ID_MODEL_FROM_DATABASE=5535-1P-SR-ST + +pci:v0000107Ed0000900E* + ID_MODEL_FROM_DATABASE=5535-1P-SR-U + +pci:v0000107Ed00009011* + ID_MODEL_FROM_DATABASE=5535-1P-PRI + +pci:v0000107Ed00009013* + ID_MODEL_FROM_DATABASE=5535-2P-PRI + +pci:v0000107Ed00009023* + ID_MODEL_FROM_DATABASE=5536-4P-BRI-ST + +pci:v0000107Ed00009027* + ID_MODEL_FROM_DATABASE=5536-4P-BRI-U + +pci:v0000107Ed00009031* + ID_MODEL_FROM_DATABASE=5536-1P-PRI + +pci:v0000107Ed00009033* + ID_MODEL_FROM_DATABASE=5536-2P-PRI + +pci:v0000107F* + ID_VENDOR_FROM_DATABASE=Data Technology Corporation + +pci:v0000107Fd00000802* + ID_MODEL_FROM_DATABASE=SL82C105 + +pci:v00001080* + ID_VENDOR_FROM_DATABASE=Contaq Microsystems + +pci:v00001080d00000600* + ID_MODEL_FROM_DATABASE=82C599 + +pci:v00001080d0000C691* + ID_MODEL_FROM_DATABASE=Cypress CY82C691 + +pci:v00001080d0000C693* + ID_MODEL_FROM_DATABASE=82c693 + +pci:v00001081* + ID_VENDOR_FROM_DATABASE=Supermac Technology + +pci:v00001081d00000D47* + ID_MODEL_FROM_DATABASE=Radius PCI to NuBUS Bridge + +pci:v00001082* + ID_VENDOR_FROM_DATABASE=EFA Corporation of America + +pci:v00001083* + ID_VENDOR_FROM_DATABASE=Forex Computer Corporation + +pci:v00001083d00000001* + ID_MODEL_FROM_DATABASE=FR710 + +pci:v00001084* + ID_VENDOR_FROM_DATABASE=Parador + +pci:v00001085* + ID_VENDOR_FROM_DATABASE=Tulip Computers Int.B.V. + +pci:v00001086* + ID_VENDOR_FROM_DATABASE=J. Bond Computer Systems + +pci:v00001087* + ID_VENDOR_FROM_DATABASE=Cache Computer + +pci:v00001088* + ID_VENDOR_FROM_DATABASE=Microcomputer Systems (M) Son + +pci:v00001089* + ID_VENDOR_FROM_DATABASE=Data General Corporation + +pci:v0000108A* + ID_VENDOR_FROM_DATABASE=SBS Technologies + +pci:v0000108Ad00000001* + ID_MODEL_FROM_DATABASE=VME Bridge Model 617 + +pci:v0000108Ad00000010* + ID_MODEL_FROM_DATABASE=VME Bridge Model 618 + +pci:v0000108Ad00000040* + ID_MODEL_FROM_DATABASE=dataBLIZZARD + +pci:v0000108Ad00003000* + ID_MODEL_FROM_DATABASE=VME Bridge Model 2706 + +pci:v0000108C* + ID_VENDOR_FROM_DATABASE=Oakleigh Systems Inc. + +pci:v0000108D* + ID_VENDOR_FROM_DATABASE=Olicom + +pci:v0000108Dd00000001* + ID_MODEL_FROM_DATABASE=Token-Ring 16/4 PCI Adapter (3136/3137) + +pci:v0000108Dd00000002* + ID_MODEL_FROM_DATABASE=16/4 Token Ring + +pci:v0000108Dd00000004* + ID_MODEL_FROM_DATABASE=RapidFire 3139 Token-Ring 16/4 PCI Adapter + +pci:v0000108Dd00000004sv0000108Dsd00000004* + ID_MODEL_FROM_DATABASE=OC-3139/3140 RapidFire Token-Ring 16/4 Adapter + +pci:v0000108Dd00000005* + ID_MODEL_FROM_DATABASE=GoCard 3250 Token-Ring 16/4 CardBus PC Card + +pci:v0000108Dd00000006* + ID_MODEL_FROM_DATABASE=OC-3530 RapidFire Token-Ring 100 + +pci:v0000108Dd00000007* + ID_MODEL_FROM_DATABASE=RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter + +pci:v0000108Dd00000007sv0000108Dsd00000007* + ID_MODEL_FROM_DATABASE=OC-3141 RapidFire Token-Ring 16/4 Adapter + +pci:v0000108Dd00000008* + ID_MODEL_FROM_DATABASE=RapidFire 3540 HSTR 100/16/4 PCI Adapter + +pci:v0000108Dd00000008sv0000108Dsd00000008* + ID_MODEL_FROM_DATABASE=OC-3540 RapidFire HSTR 100/16/4 Adapter + +pci:v0000108Dd00000011* + ID_MODEL_FROM_DATABASE=OC-2315 + +pci:v0000108Dd00000012* + ID_MODEL_FROM_DATABASE=OC-2325 + +pci:v0000108Dd00000013* + ID_MODEL_FROM_DATABASE=OC-2183/2185 + +pci:v0000108Dd00000014* + ID_MODEL_FROM_DATABASE=OC-2326 + +pci:v0000108Dd00000019* + ID_MODEL_FROM_DATABASE=OC-2327/2250 10/100 Ethernet Adapter + +pci:v0000108Dd00000019sv0000108Dsd00000016* + ID_MODEL_FROM_DATABASE=OC-2327 Rapidfire 10/100 Ethernet Adapter + +pci:v0000108Dd00000019sv0000108Dsd00000017* + ID_MODEL_FROM_DATABASE=OC-2250 GoCard 10/100 Ethernet Adapter + +pci:v0000108Dd00000021* + ID_MODEL_FROM_DATABASE=OC-6151/6152 [RapidFire ATM 155] + +pci:v0000108Dd00000022* + ID_MODEL_FROM_DATABASE=ATM Adapter + +pci:v0000108E* + ID_VENDOR_FROM_DATABASE=Oracle/SUN + +pci:v0000108Ed00000001* + ID_MODEL_FROM_DATABASE=EBUS + +pci:v0000108Ed00001000* + ID_MODEL_FROM_DATABASE=EBUS + +pci:v0000108Ed00001001* + ID_MODEL_FROM_DATABASE=Happy Meal 10/100 Ethernet [hme] + +pci:v0000108Ed00001100* + ID_MODEL_FROM_DATABASE=RIO EBUS + +pci:v0000108Ed00001100sv0000108Esd00001100* + ID_MODEL_FROM_DATABASE=RIO EBUS on Blade 100 motherboard + +pci:v0000108Ed00001101* + ID_MODEL_FROM_DATABASE=RIO 10/100 Ethernet [eri] + +pci:v0000108Ed00001101sv0000108Esd00001101* + ID_MODEL_FROM_DATABASE=RIO GEM on Blade 100 motherboard + +pci:v0000108Ed00001102* + ID_MODEL_FROM_DATABASE=RIO 1394 + +pci:v0000108Ed00001102sv0000108Esd00001102* + ID_MODEL_FROM_DATABASE=RIO 1394 on Blade 100 motherboard + +pci:v0000108Ed00001103* + ID_MODEL_FROM_DATABASE=RIO USB + +pci:v0000108Ed00001103sv0000108Esd00001103* + ID_MODEL_FROM_DATABASE=RIO USB on Blade 100 motherboard + +pci:v0000108Ed00001647* + ID_MODEL_FROM_DATABASE=Broadcom 570x 10/100/1000 Ethernet [bge] + +pci:v0000108Ed00001648* + ID_MODEL_FROM_DATABASE=Broadcom 570x 10/100/1000 Ethernet [bge] + +pci:v0000108Ed000016A7* + ID_MODEL_FROM_DATABASE=Broadcom 570x 10/100/1000 Ethernet [bge] + +pci:v0000108Ed000016A8* + ID_MODEL_FROM_DATABASE=Broadcom 570x 10/100/1000 Ethernet [bge] + +pci:v0000108Ed00002BAD* + ID_MODEL_FROM_DATABASE=GEM 10/100/1000 Ethernet [ge] + +pci:v0000108Ed00005000* + ID_MODEL_FROM_DATABASE=Simba Advanced PCI Bridge + +pci:v0000108Ed00005000sv0000108Esd00005000* + ID_MODEL_FROM_DATABASE=Netra AX1105-500 + +pci:v0000108Ed00005043* + ID_MODEL_FROM_DATABASE=SunPCI Co-processor + +pci:v0000108Ed00005CA0* + ID_MODEL_FROM_DATABASE=Crypto Accelerator 6000 [mca] + +pci:v0000108Ed00006300* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006301* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006302* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006303* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006310* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006311* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006312* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006313* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006320* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006323* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006330* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006331* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006332* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006333* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006340* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006343* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006350* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006353* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed00006722* + ID_MODEL_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] + +pci:v0000108Ed0000676E* + ID_MODEL_FROM_DATABASE=SunPCiIII + +pci:v0000108Ed00007063* + ID_MODEL_FROM_DATABASE=SunPCiII / SunPCiIIpro + +pci:v0000108Ed00008000* + ID_MODEL_FROM_DATABASE=Psycho PCI Bus Module + +pci:v0000108Ed00008001* + ID_MODEL_FROM_DATABASE=Schizo PCI Bus Module + +pci:v0000108Ed00008002* + ID_MODEL_FROM_DATABASE=Schizo+ PCI Bus Module + +pci:v0000108Ed000080F0* + ID_MODEL_FROM_DATABASE=PCIe switch [px] + +pci:v0000108Ed000080F8* + ID_MODEL_FROM_DATABASE=PCIe switch [px] + +pci:v0000108Ed00009010* + ID_MODEL_FROM_DATABASE=PCIe/PCI bridge switch [pxb_plx] + +pci:v0000108Ed00009020* + ID_MODEL_FROM_DATABASE=PCIe/PCI bridge switch [pxb_plx] + +pci:v0000108Ed00009102* + ID_MODEL_FROM_DATABASE=Davicom Fast Ethernet driver for Davicom DM9102A [dmfe] + +pci:v0000108Ed0000A000* + ID_MODEL_FROM_DATABASE=Psycho UPA-PCI Bus Module [pcipsy] + +pci:v0000108Ed0000A001* + ID_MODEL_FROM_DATABASE=Psycho UPA-PCI Bus Module [pcipsy] + +pci:v0000108Ed0000A001sv0000108Esd0000A001* + ID_MODEL_FROM_DATABASE=Ultra IIe on Blade 100 motherboard + +pci:v0000108Ed0000A801* + ID_MODEL_FROM_DATABASE=Schizo Fireplane-PCI bus bridge module [pcisch] + +pci:v0000108Ed0000AAAA* + ID_MODEL_FROM_DATABASE=Multithreaded Shared 10GbE Ethernet Network Controller + +pci:v0000108Ed0000ABBA* + ID_MODEL_FROM_DATABASE=Cassini 10/100/1000 + +pci:v0000108Ed0000ABCD* + ID_MODEL_FROM_DATABASE=Multithreaded 10-Gigabit Ethernet Network Controller + +pci:v0000108Ed0000C416* + ID_MODEL_FROM_DATABASE=Sun Fire System/System Controller Interface chip [sbbc] + +pci:v0000108F* + ID_VENDOR_FROM_DATABASE=Systemsoft + +pci:v00001090* + ID_VENDOR_FROM_DATABASE=Compro Computer Services, Inc. + +pci:v00001090d00004610* + ID_MODEL_FROM_DATABASE=PCI RTOM + +pci:v00001090d00004620* + ID_MODEL_FROM_DATABASE=GPIO HSD + +pci:v00001091* + ID_VENDOR_FROM_DATABASE=Intergraph Corporation + +pci:v00001091d00000020* + ID_MODEL_FROM_DATABASE=3D graphics processor + +pci:v00001091d00000021* + ID_MODEL_FROM_DATABASE=3D graphics processor w/Texturing + +pci:v00001091d00000040* + ID_MODEL_FROM_DATABASE=3D graphics frame buffer + +pci:v00001091d00000041* + ID_MODEL_FROM_DATABASE=3D graphics frame buffer + +pci:v00001091d00000060* + ID_MODEL_FROM_DATABASE=Proprietary bus bridge + +pci:v00001091d000000E4* + ID_MODEL_FROM_DATABASE=Powerstorm 4D50T + +pci:v00001091d00000720* + ID_MODEL_FROM_DATABASE=Motion JPEG codec + +pci:v00001091d00000780* + ID_MODEL_FROM_DATABASE=Intense3D Wildcat 3410 (MSMT496) + +pci:v00001091d000007A0* + ID_MODEL_FROM_DATABASE=Sun Expert3D-Lite Graphics Accelerator + +pci:v00001091d00001091* + ID_MODEL_FROM_DATABASE=Sun Expert3D Graphics Accelerator + +pci:v00001092* + ID_VENDOR_FROM_DATABASE=Diamond Multimedia Systems + +pci:v00001092d00000028* + ID_MODEL_FROM_DATABASE=Viper V770 + +pci:v00001092d00000028sv00001092sd00004A00* + ID_MODEL_FROM_DATABASE=Viper V770 32MB + +pci:v00001092d000000A0* + ID_MODEL_FROM_DATABASE=Speedstar Pro SE + +pci:v00001092d000000A8* + ID_MODEL_FROM_DATABASE=Speedstar 64 + +pci:v00001092d00000550* + ID_MODEL_FROM_DATABASE=Viper V550 + +pci:v00001092d000008D4* + ID_MODEL_FROM_DATABASE=Supra 2260 Modem + +pci:v00001092d0000094C* + ID_MODEL_FROM_DATABASE=SupraExpress 56i Pro + +pci:v00001092d00001001* + ID_MODEL_FROM_DATABASE=Video Crunch It 1001 capture card + +pci:v00001092d00001092* + ID_MODEL_FROM_DATABASE=Viper V330 + +pci:v00001092d00006120* + ID_MODEL_FROM_DATABASE=Maximum DVD + +pci:v00001092d00008810* + ID_MODEL_FROM_DATABASE=Stealth SE + +pci:v00001092d00008811* + ID_MODEL_FROM_DATABASE=Stealth 64/SE + +pci:v00001092d00008880* + ID_MODEL_FROM_DATABASE=Stealth + +pci:v00001092d00008881* + ID_MODEL_FROM_DATABASE=Stealth + +pci:v00001092d000088B0* + ID_MODEL_FROM_DATABASE=Stealth 64 + +pci:v00001092d000088B1* + ID_MODEL_FROM_DATABASE=Stealth 64 + +pci:v00001092d000088C0* + ID_MODEL_FROM_DATABASE=Stealth 64 + +pci:v00001092d000088C1* + ID_MODEL_FROM_DATABASE=Stealth 64 + +pci:v00001092d000088D0* + ID_MODEL_FROM_DATABASE=Stealth 64 + +pci:v00001092d000088D1* + ID_MODEL_FROM_DATABASE=Stealth 64 + +pci:v00001092d000088F0* + ID_MODEL_FROM_DATABASE=Stealth 64 + +pci:v00001092d000088F1* + ID_MODEL_FROM_DATABASE=Stealth 64 + +pci:v00001092d00009999* + ID_MODEL_FROM_DATABASE=DMD-I0928-1 "Monster sound" sound chip + +pci:v00001093* + ID_VENDOR_FROM_DATABASE=National Instruments + +pci:v00001093d00000160* + ID_MODEL_FROM_DATABASE=PCI-DIO-96 + +pci:v00001093d00000162* + ID_MODEL_FROM_DATABASE=PCI-MIO-16XE-50 + +pci:v00001093d00001150* + ID_MODEL_FROM_DATABASE=PCI-DIO-32HS High Speed Digital I/O Board + +pci:v00001093d00001170* + ID_MODEL_FROM_DATABASE=PCI-MIO-16XE-10 + +pci:v00001093d00001180* + ID_MODEL_FROM_DATABASE=PCI-MIO-16E-1 + +pci:v00001093d00001190* + ID_MODEL_FROM_DATABASE=PCI-MIO-16E-4 + +pci:v00001093d000011B0* + ID_MODEL_FROM_DATABASE=PXI-6070E + +pci:v00001093d000011C0* + ID_MODEL_FROM_DATABASE=PXI-6040e + +pci:v00001093d000011D0* + ID_MODEL_FROM_DATABASE=PXI-6030e + +pci:v00001093d00001270* + ID_MODEL_FROM_DATABASE=PCI-6032e + +pci:v00001093d00001310* + ID_MODEL_FROM_DATABASE=PCI-6602 + +pci:v00001093d00001330* + ID_MODEL_FROM_DATABASE=PCI-6031E + +pci:v00001093d00001340* + ID_MODEL_FROM_DATABASE=PCI-6033e + +pci:v00001093d00001350* + ID_MODEL_FROM_DATABASE=PCI-6071E + +pci:v00001093d00001360* + ID_MODEL_FROM_DATABASE=PXI-6602 + +pci:v00001093d000014E0* + ID_MODEL_FROM_DATABASE=PCI-6110 + +pci:v00001093d000014F0* + ID_MODEL_FROM_DATABASE=PCI-6111 + +pci:v00001093d00001580* + ID_MODEL_FROM_DATABASE=PXI-6031E + +pci:v00001093d000015B0* + ID_MODEL_FROM_DATABASE=PXI-6071E + +pci:v00001093d00001710* + ID_MODEL_FROM_DATABASE=PXI-6509 + +pci:v00001093d000017D0* + ID_MODEL_FROM_DATABASE=PCI-6503 + +pci:v00001093d00001870* + ID_MODEL_FROM_DATABASE=PCI-6713 + +pci:v00001093d00001880* + ID_MODEL_FROM_DATABASE=PCI-6711 + +pci:v00001093d000018B0* + ID_MODEL_FROM_DATABASE=PCI-6052E + +pci:v00001093d000018C0* + ID_MODEL_FROM_DATABASE=PXI-6052E + +pci:v00001093d00002410* + ID_MODEL_FROM_DATABASE=PCI-6733 + +pci:v00001093d00002420* + ID_MODEL_FROM_DATABASE=PXI-6733 + +pci:v00001093d00002430* + ID_MODEL_FROM_DATABASE=PCI-6731 + +pci:v00001093d00002880* + ID_MODEL_FROM_DATABASE=DAQCard-6601 + +pci:v00001093d00002890* + ID_MODEL_FROM_DATABASE=PCI-6036E + +pci:v00001093d000028C0* + ID_MODEL_FROM_DATABASE=PCI-6014 + +pci:v00001093d00002A60* + ID_MODEL_FROM_DATABASE=PCI-6023E + +pci:v00001093d00002A70* + ID_MODEL_FROM_DATABASE=PCI-6024E + +pci:v00001093d00002A80* + ID_MODEL_FROM_DATABASE=PCI-6025E + +pci:v00001093d00002AB0* + ID_MODEL_FROM_DATABASE=PXI-6025e + +pci:v00001093d00002B80* + ID_MODEL_FROM_DATABASE=PXI-6713 + +pci:v00001093d00002B90* + ID_MODEL_FROM_DATABASE=PXI-6711 + +pci:v00001093d00002C60* + ID_MODEL_FROM_DATABASE=PCI-6601 + +pci:v00001093d00002C70* + ID_MODEL_FROM_DATABASE=PXI-6601 + +pci:v00001093d00002C80* + ID_MODEL_FROM_DATABASE=PCI-6035E + +pci:v00001093d00002CA0* + ID_MODEL_FROM_DATABASE=PCI-6034E + +pci:v00001093d00002CC0* + ID_MODEL_FROM_DATABASE=PXI-6608 + +pci:v00001093d00002DB0* + ID_MODEL_FROM_DATABASE=PCI-6608 + +pci:v00001093d00007085* + ID_MODEL_FROM_DATABASE=PCI-6509 + +pci:v00001093d000070A9* + ID_MODEL_FROM_DATABASE=PCI-6528 (Digital I/O at 60V) + +pci:v00001093d000070AA* + ID_MODEL_FROM_DATABASE=PCI-6229 + +pci:v00001093d000070AB* + ID_MODEL_FROM_DATABASE=PCI-6259 + +pci:v00001093d000070AC* + ID_MODEL_FROM_DATABASE=PCI-6289 + +pci:v00001093d000070AE* + ID_MODEL_FROM_DATABASE=PXI-6220 + +pci:v00001093d000070AF* + ID_MODEL_FROM_DATABASE=PCI-6221 + +pci:v00001093d000070B0* + ID_MODEL_FROM_DATABASE=PCI-6220 + +pci:v00001093d000070B4* + ID_MODEL_FROM_DATABASE=PCI-6250 + +pci:v00001093d000070B6* + ID_MODEL_FROM_DATABASE=PCI-6280 + +pci:v00001093d000070B7* + ID_MODEL_FROM_DATABASE=PCI-6254 + +pci:v00001093d000070B8* + ID_MODEL_FROM_DATABASE=PCI-6251 [M Series - High Speed Multifunction DAQ] + +pci:v00001093d000070BC* + ID_MODEL_FROM_DATABASE=PCI-6284 + +pci:v00001093d000070BD* + ID_MODEL_FROM_DATABASE=PCI-6281 + +pci:v00001093d000070BF* + ID_MODEL_FROM_DATABASE=PXI-6281 + +pci:v00001093d000070C0* + ID_MODEL_FROM_DATABASE=PCI-6143 + +pci:v00001093d000070F2* + ID_MODEL_FROM_DATABASE=PCI-6224 + +pci:v00001093d00007144* + ID_MODEL_FROM_DATABASE=PXI-5124 (12-bit 200 MS/s Digitizer) + +pci:v00001093d0000716C* + ID_MODEL_FROM_DATABASE=PCI-6225 + +pci:v00001093d0000717D* + ID_MODEL_FROM_DATABASE=PCIE-6251 + +pci:v00001093d0000717F* + ID_MODEL_FROM_DATABASE=PCIe-6259 + +pci:v00001093d000071BC* + ID_MODEL_FROM_DATABASE=PCI-6221 (37pin) + +pci:v00001093d000071D0* + ID_MODEL_FROM_DATABASE=PXI-6143 + +pci:v00001093d0000B001* + ID_MODEL_FROM_DATABASE=IMAQ-PCI-1408 + +pci:v00001093d0000B011* + ID_MODEL_FROM_DATABASE=IMAQ-PXI-1408 + +pci:v00001093d0000B021* + ID_MODEL_FROM_DATABASE=IMAQ-PCI-1424 + +pci:v00001093d0000B031* + ID_MODEL_FROM_DATABASE=IMAQ-PCI-1413 + +pci:v00001093d0000B041* + ID_MODEL_FROM_DATABASE=IMAQ-PCI-1407 + +pci:v00001093d0000B051* + ID_MODEL_FROM_DATABASE=IMAQ-PXI-1407 + +pci:v00001093d0000B061* + ID_MODEL_FROM_DATABASE=IMAQ-PCI-1411 + +pci:v00001093d0000B071* + ID_MODEL_FROM_DATABASE=IMAQ-PCI-1422 + +pci:v00001093d0000B081* + ID_MODEL_FROM_DATABASE=IMAQ-PXI-1422 + +pci:v00001093d0000B091* + ID_MODEL_FROM_DATABASE=IMAQ-PXI-1411 + +pci:v00001093d0000C4C4* + ID_MODEL_FROM_DATABASE=PXIe-4353 + +pci:v00001093d0000C801* + ID_MODEL_FROM_DATABASE=PCI-GPIB + +pci:v00001093d0000C831* + ID_MODEL_FROM_DATABASE=PCI-GPIB bridge + +pci:v00001094* + ID_VENDOR_FROM_DATABASE=First International Computers [FIC] + +pci:v00001095* + ID_VENDOR_FROM_DATABASE=Silicon Image, Inc. + +pci:v00001095d00000240* + ID_MODEL_FROM_DATABASE=Adaptec AAR-1210SA SATA HostRAID Controller + +pci:v00001095d00000640* + ID_MODEL_FROM_DATABASE=PCI0640 + +pci:v00001095d00000643* + ID_MODEL_FROM_DATABASE=PCI0643 + +pci:v00001095d00000646* + ID_MODEL_FROM_DATABASE=PCI0646 + +pci:v00001095d00000647* + ID_MODEL_FROM_DATABASE=PCI0647 + +pci:v00001095d00000648* + ID_MODEL_FROM_DATABASE=PCI0648 + +pci:v00001095d00000648sv00001043sd00008025* + ID_MODEL_FROM_DATABASE=CUBX motherboard + +pci:v00001095d00000649* + ID_MODEL_FROM_DATABASE=SiI 0649 Ultra ATA/100 PCI to ATA Host Controller + +pci:v00001095d00000649sv00000E11sd0000005D* + ID_MODEL_FROM_DATABASE=Integrated Ultra ATA-100 Dual Channel Controller + +pci:v00001095d00000649sv00000E11sd0000007E* + ID_MODEL_FROM_DATABASE=Integrated Ultra ATA-100 IDE RAID Controller + +pci:v00001095d00000649sv0000101Esd00000649* + ID_MODEL_FROM_DATABASE=AMI MegaRAID IDE 100 Controller + +pci:v00001095d00000650* + ID_MODEL_FROM_DATABASE=PBC0650A + +pci:v00001095d00000670* + ID_MODEL_FROM_DATABASE=USB0670 + +pci:v00001095d00000670sv00001095sd00000670* + ID_MODEL_FROM_DATABASE=USB0670 + +pci:v00001095d00000673* + ID_MODEL_FROM_DATABASE=USB0673 + +pci:v00001095d00000680* + ID_MODEL_FROM_DATABASE=PCI0680 Ultra ATA-133 Host Controller + +pci:v00001095d00000680sv00001095sd00000680* + ID_MODEL_FROM_DATABASE=SiI 0680 ATA/133 Controller + +pci:v00001095d00000680sv00001095sd00003680* + ID_MODEL_FROM_DATABASE=Winic W-680 (Silicon Image 680 based) + +pci:v00001095d00003112* + ID_MODEL_FROM_DATABASE=SiI 3112 [SATALink/SATARaid] Serial ATA Controller + +pci:v00001095d00003112sv00001095sd00003112* + ID_MODEL_FROM_DATABASE=SiI 3112 SATALink Controller + +pci:v00001095d00003112sv00001095sd00006112* + ID_MODEL_FROM_DATABASE=SiI 3112 SATARaid Controller + +pci:v00001095d00003112sv00009005sd00000250* + ID_MODEL_FROM_DATABASE=SATAConnect 1205SA Host Controller + +pci:v00001095d00003114* + ID_MODEL_FROM_DATABASE=SiI 3114 [SATALink/SATARaid] Serial ATA Controller + +pci:v00001095d00003114sv00001095sd00003114* + ID_MODEL_FROM_DATABASE=SiI 3114 SATALink Controller + +pci:v00001095d00003114sv00001095sd00006114* + ID_MODEL_FROM_DATABASE=SiI 3114 SATARaid Controller + +pci:v00001095d00003124* + ID_MODEL_FROM_DATABASE=SiI 3124 PCI-X Serial ATA Controller + +pci:v00001095d00003124sv00001095sd00003124* + ID_MODEL_FROM_DATABASE=SiI 3124 PCI-X Serial ATA Controller + +pci:v00001095d00003132* + ID_MODEL_FROM_DATABASE=SiI 3132 Serial ATA Raid II Controller + +pci:v00001095d00003512* + ID_MODEL_FROM_DATABASE=SiI 3512 [SATALink/SATARaid] Serial ATA Controller + +pci:v00001095d00003512sv00001095sd00003512* + ID_MODEL_FROM_DATABASE=SiI 3512 SATALink Controller + +pci:v00001095d00003512sv00001095sd00006512* + ID_MODEL_FROM_DATABASE=SiI 3512 SATARaid Controller + +pci:v00001095d00003531* + ID_MODEL_FROM_DATABASE=SiI 3531 [SATALink/SATARaid] Serial ATA Controller + +pci:v00001096* + ID_VENDOR_FROM_DATABASE=Alacron + +pci:v00001097* + ID_VENDOR_FROM_DATABASE=Appian Technology + +pci:v00001098* + ID_VENDOR_FROM_DATABASE=Quantum Designs (H.K.) Ltd + +pci:v00001098d00000001* + ID_MODEL_FROM_DATABASE=QD-8500 + +pci:v00001098d00000002* + ID_MODEL_FROM_DATABASE=QD-8580 + +pci:v00001099* + ID_VENDOR_FROM_DATABASE=Samsung Electronics Co., Ltd + +pci:v0000109A* + ID_VENDOR_FROM_DATABASE=Packard Bell + +pci:v0000109B* + ID_VENDOR_FROM_DATABASE=Gemlight Computer Ltd. + +pci:v0000109C* + ID_VENDOR_FROM_DATABASE=Megachips Corporation + +pci:v0000109D* + ID_VENDOR_FROM_DATABASE=Zida Technologies Ltd. + +pci:v0000109E* + ID_VENDOR_FROM_DATABASE=Brooktree Corporation + +pci:v0000109Ed00000310* + ID_MODEL_FROM_DATABASE=Bt848 Video Capture + +pci:v0000109Ed0000032E* + ID_MODEL_FROM_DATABASE=Bt878 Video Capture + +pci:v0000109Ed00000350* + ID_MODEL_FROM_DATABASE=Bt848 Video Capture + +pci:v0000109Ed00000351* + ID_MODEL_FROM_DATABASE=Bt849A Video capture + +pci:v0000109Ed00000369* + ID_MODEL_FROM_DATABASE=Bt878 Video Capture + +pci:v0000109Ed00000369sv00001002sd00000001* + ID_MODEL_FROM_DATABASE=TV-Wonder + +pci:v0000109Ed00000369sv00001002sd00000003* + ID_MODEL_FROM_DATABASE=TV-Wonder/VE + +pci:v0000109Ed0000036C* + ID_MODEL_FROM_DATABASE=Bt879(??) Video Capture + +pci:v0000109Ed0000036Csv000013E9sd00000070* + ID_MODEL_FROM_DATABASE=Win/TV (Video Section) + +pci:v0000109Ed0000036E* + ID_MODEL_FROM_DATABASE=Bt878 Video Capture + +pci:v0000109Ed0000036Esv00000070sd000013EB* + ID_MODEL_FROM_DATABASE=WinTV Series + +pci:v0000109Ed0000036Esv00000070sd0000FF01* + ID_MODEL_FROM_DATABASE=Viewcast Osprey 200 + +pci:v0000109Ed0000036Esv00000071sd00000101* + ID_MODEL_FROM_DATABASE=DigiTV PCI + +pci:v0000109Ed0000036Esv0000107Dsd00006606* + ID_MODEL_FROM_DATABASE=WinFast TV 2000 + +pci:v0000109Ed0000036Esv000011BDsd00000012* + ID_MODEL_FROM_DATABASE=PCTV pro (TV + FM stereo receiver) + +pci:v0000109Ed0000036Esv000011BDsd0000001C* + ID_MODEL_FROM_DATABASE=PCTV Sat (DBC receiver) + +pci:v0000109Ed0000036Esv0000127Asd00000001* + ID_MODEL_FROM_DATABASE=Bt878 Mediastream Controller NTSC + +pci:v0000109Ed0000036Esv0000127Asd00000002* + ID_MODEL_FROM_DATABASE=Bt878 Mediastream Controller PAL BG + +pci:v0000109Ed0000036Esv0000127Asd00000003* + ID_MODEL_FROM_DATABASE=Bt878a Mediastream Controller PAL BG + +pci:v0000109Ed0000036Esv0000127Asd00000048* + ID_MODEL_FROM_DATABASE=Bt878/832 Mediastream Controller + +pci:v0000109Ed0000036Esv0000144Fsd00003000* + ID_MODEL_FROM_DATABASE=MagicTView CPH060 - Video + +pci:v0000109Ed0000036Esv00001461sd00000002* + ID_MODEL_FROM_DATABASE=TV98 Series (TV/No FM/Remote) + +pci:v0000109Ed0000036Esv00001461sd00000003* + ID_MODEL_FROM_DATABASE=AverMedia UltraTV PCI 350 + +pci:v0000109Ed0000036Esv00001461sd00000004* + ID_MODEL_FROM_DATABASE=AVerTV WDM Video Capture + +pci:v0000109Ed0000036Esv00001461sd00000761* + ID_MODEL_FROM_DATABASE=AverTV DVB-T + +pci:v0000109Ed0000036Esv00001461sd00000771* + ID_MODEL_FROM_DATABASE=AverMedia AVerTV DVB-T 771 + +pci:v0000109Ed0000036Esv000014F1sd00000001* + ID_MODEL_FROM_DATABASE=Bt878 Mediastream Controller NTSC + +pci:v0000109Ed0000036Esv000014F1sd00000002* + ID_MODEL_FROM_DATABASE=Bt878 Mediastream Controller PAL BG + +pci:v0000109Ed0000036Esv000014F1sd00000003* + ID_MODEL_FROM_DATABASE=Bt878a Mediastream Controller PAL BG + +pci:v0000109Ed0000036Esv000014F1sd00000048* + ID_MODEL_FROM_DATABASE=Bt878/832 Mediastream Controller + +pci:v0000109Ed0000036Esv00001822sd00000001* + ID_MODEL_FROM_DATABASE=VisionPlus DVB card + +pci:v0000109Ed0000036Esv00001851sd00001850* + ID_MODEL_FROM_DATABASE=FlyVideo'98 - Video + +pci:v0000109Ed0000036Esv00001851sd00001851* + ID_MODEL_FROM_DATABASE=FlyVideo II + +pci:v0000109Ed0000036Esv00001852sd00001852* + ID_MODEL_FROM_DATABASE=FlyVideo'98 - Video (with FM Tuner) + +pci:v0000109Ed0000036Esv000018ACsd0000D500* + ID_MODEL_FROM_DATABASE=DViCO FusionHDTV5 Lite + +pci:v0000109Ed0000036Esv0000270Fsd0000FC00* + ID_MODEL_FROM_DATABASE=Digitop DTT-1000 + +pci:v0000109Ed0000036Esv0000BD11sd00001200* + ID_MODEL_FROM_DATABASE=PCTV pro (TV + FM stereo receiver) + +pci:v0000109Ed0000036F* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture + +pci:v0000109Ed0000036Fsv0000127Asd00000044* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC + +pci:v0000109Ed0000036Fsv0000127Asd00000122* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL I + +pci:v0000109Ed0000036Fsv0000127Asd00000144* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC + +pci:v0000109Ed0000036Fsv0000127Asd00000222* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL BG + +pci:v0000109Ed0000036Fsv0000127Asd00000244* + ID_MODEL_FROM_DATABASE=Bt879a Video Capture NTSC + +pci:v0000109Ed0000036Fsv0000127Asd00000322* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC + +pci:v0000109Ed0000036Fsv0000127Asd00000422* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC + +pci:v0000109Ed0000036Fsv0000127Asd00001122* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL I + +pci:v0000109Ed0000036Fsv0000127Asd00001222* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL BG + +pci:v0000109Ed0000036Fsv0000127Asd00001322* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC + +pci:v0000109Ed0000036Fsv0000127Asd00001522* + ID_MODEL_FROM_DATABASE=Bt879a Video Capture PAL I + +pci:v0000109Ed0000036Fsv0000127Asd00001622* + ID_MODEL_FROM_DATABASE=Bt879a Video Capture PAL BG + +pci:v0000109Ed0000036Fsv0000127Asd00001722* + ID_MODEL_FROM_DATABASE=Bt879a Video Capture NTSC + +pci:v0000109Ed0000036Fsv000014F1sd00000044* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC + +pci:v0000109Ed0000036Fsv000014F1sd00000122* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL I + +pci:v0000109Ed0000036Fsv000014F1sd00000144* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC + +pci:v0000109Ed0000036Fsv000014F1sd00000222* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL BG + +pci:v0000109Ed0000036Fsv000014F1sd00000244* + ID_MODEL_FROM_DATABASE=Bt879a Video Capture NTSC + +pci:v0000109Ed0000036Fsv000014F1sd00000322* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC + +pci:v0000109Ed0000036Fsv000014F1sd00000422* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC + +pci:v0000109Ed0000036Fsv000014F1sd00001122* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL I + +pci:v0000109Ed0000036Fsv000014F1sd00001222* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture PAL BG + +pci:v0000109Ed0000036Fsv000014F1sd00001322* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture NTSC + +pci:v0000109Ed0000036Fsv000014F1sd00001522* + ID_MODEL_FROM_DATABASE=Bt879a Video Capture PAL I + +pci:v0000109Ed0000036Fsv000014F1sd00001622* + ID_MODEL_FROM_DATABASE=Bt879a Video Capture PAL BG + +pci:v0000109Ed0000036Fsv000014F1sd00001722* + ID_MODEL_FROM_DATABASE=Bt879a Video Capture NTSC + +pci:v0000109Ed0000036Fsv00001851sd00001850* + ID_MODEL_FROM_DATABASE=FlyVideo'98 - Video + +pci:v0000109Ed0000036Fsv00001851sd00001851* + ID_MODEL_FROM_DATABASE=FlyVideo II + +pci:v0000109Ed0000036Fsv00001852sd00001852* + ID_MODEL_FROM_DATABASE=FlyVideo'98 - Video (with FM Tuner) + +pci:v0000109Ed00000370* + ID_MODEL_FROM_DATABASE=Bt880 Video Capture + +pci:v0000109Ed00000370sv00001851sd00001850* + ID_MODEL_FROM_DATABASE=FlyVideo'98 + +pci:v0000109Ed00000370sv00001851sd00001851* + ID_MODEL_FROM_DATABASE=FlyVideo'98 EZ - video + +pci:v0000109Ed00000370sv00001852sd00001852* + ID_MODEL_FROM_DATABASE=FlyVideo'98 (with FM Tuner) + +pci:v0000109Ed00000878* + ID_MODEL_FROM_DATABASE=Bt878 Audio Capture + +pci:v0000109Ed00000878sv00000070sd000013EB* + ID_MODEL_FROM_DATABASE=WinTV Series + +pci:v0000109Ed00000878sv00000070sd0000FF01* + ID_MODEL_FROM_DATABASE=Viewcast Osprey 200 + +pci:v0000109Ed00000878sv00000071sd00000101* + ID_MODEL_FROM_DATABASE=DigiTV PCI + +pci:v0000109Ed00000878sv00001002sd00000001* + ID_MODEL_FROM_DATABASE=TV-Wonder + +pci:v0000109Ed00000878sv00001002sd00000003* + ID_MODEL_FROM_DATABASE=TV-Wonder/VE + +pci:v0000109Ed00000878sv000011BDsd00000012* + ID_MODEL_FROM_DATABASE=PCTV pro (TV + FM stereo receiver, audio section) + +pci:v0000109Ed00000878sv000011BDsd0000001C* + ID_MODEL_FROM_DATABASE=PCTV Sat (DBC receiver) + +pci:v0000109Ed00000878sv0000127Asd00000001* + ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section) + +pci:v0000109Ed00000878sv0000127Asd00000002* + ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section) + +pci:v0000109Ed00000878sv0000127Asd00000003* + ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section) + +pci:v0000109Ed00000878sv0000127Asd00000048* + ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section) + +pci:v0000109Ed00000878sv000013E9sd00000070* + ID_MODEL_FROM_DATABASE=Win/TV (Audio Section) + +pci:v0000109Ed00000878sv0000144Fsd00003000* + ID_MODEL_FROM_DATABASE=MagicTView CPH060 - Audio + +pci:v0000109Ed00000878sv00001461sd00000002* + ID_MODEL_FROM_DATABASE=Avermedia PCTV98 Audio Capture + +pci:v0000109Ed00000878sv00001461sd00000003* + ID_MODEL_FROM_DATABASE=UltraTV PCI 350 + +pci:v0000109Ed00000878sv00001461sd00000004* + ID_MODEL_FROM_DATABASE=AVerTV WDM Audio Capture + +pci:v0000109Ed00000878sv00001461sd00000761* + ID_MODEL_FROM_DATABASE=AVerTV DVB-T + +pci:v0000109Ed00000878sv00001461sd00000771* + ID_MODEL_FROM_DATABASE=AverMedia AVerTV DVB-T 771 + +pci:v0000109Ed00000878sv000014F1sd00000001* + ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section) + +pci:v0000109Ed00000878sv000014F1sd00000002* + ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section) + +pci:v0000109Ed00000878sv000014F1sd00000003* + ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section) + +pci:v0000109Ed00000878sv000014F1sd00000048* + ID_MODEL_FROM_DATABASE=Bt878 Video Capture (Audio Section) + +pci:v0000109Ed00000878sv00001822sd00000001* + ID_MODEL_FROM_DATABASE=VisionPlus DVB Card + +pci:v0000109Ed00000878sv000018ACsd0000D500* + ID_MODEL_FROM_DATABASE=DViCO FusionHDTV5 Lite + +pci:v0000109Ed00000878sv0000270Fsd0000FC00* + ID_MODEL_FROM_DATABASE=Digitop DTT-1000 + +pci:v0000109Ed00000878sv0000BD11sd00001200* + ID_MODEL_FROM_DATABASE=PCTV pro (TV + FM stereo receiver, audio section) + +pci:v0000109Ed00000879* + ID_MODEL_FROM_DATABASE=Bt879 Audio Capture + +pci:v0000109Ed00000879sv0000127Asd00000044* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv0000127Asd00000122* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv0000127Asd00000144* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv0000127Asd00000222* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv0000127Asd00000244* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv0000127Asd00000322* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv0000127Asd00000422* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv0000127Asd00001122* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv0000127Asd00001222* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv0000127Asd00001322* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv0000127Asd00001522* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv0000127Asd00001622* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv0000127Asd00001722* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv000014F1sd00000044* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv000014F1sd00000122* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv000014F1sd00000144* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv000014F1sd00000222* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv000014F1sd00000244* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv000014F1sd00000322* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv000014F1sd00000422* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv000014F1sd00001122* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv000014F1sd00001222* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv000014F1sd00001322* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv000014F1sd00001522* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv000014F1sd00001622* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000879sv000014F1sd00001722* + ID_MODEL_FROM_DATABASE=Bt879 Video Capture (Audio Section) + +pci:v0000109Ed00000880* + ID_MODEL_FROM_DATABASE=Bt880 Audio Capture + +pci:v0000109Ed00002115* + ID_MODEL_FROM_DATABASE=BtV 2115 Mediastream controller + +pci:v0000109Ed00002125* + ID_MODEL_FROM_DATABASE=BtV 2125 Mediastream controller + +pci:v0000109Ed00002164* + ID_MODEL_FROM_DATABASE=BtV 2164 + +pci:v0000109Ed00002165* + ID_MODEL_FROM_DATABASE=BtV 2165 + +pci:v0000109Ed00008230* + ID_MODEL_FROM_DATABASE=Bt8230 ATM Segment/Reassembly Ctrlr (SRC) + +pci:v0000109Ed00008472* + ID_MODEL_FROM_DATABASE=Bt8472 + +pci:v0000109Ed00008474* + ID_MODEL_FROM_DATABASE=Bt8474 + +pci:v0000109F* + ID_VENDOR_FROM_DATABASE=Trigem Computer Inc. + +pci:v000010A0* + ID_VENDOR_FROM_DATABASE=Meidensha Corporation + +pci:v000010A1* + ID_VENDOR_FROM_DATABASE=Juko Electronics Ind. Co. Ltd + +pci:v000010A2* + ID_VENDOR_FROM_DATABASE=Quantum Corporation + +pci:v000010A3* + ID_VENDOR_FROM_DATABASE=Everex Systems Inc + +pci:v000010A4* + ID_VENDOR_FROM_DATABASE=Globe Manufacturing Sales + +pci:v000010A5* + ID_VENDOR_FROM_DATABASE=Smart Link Ltd. + +pci:v000010A5d00003052* + ID_MODEL_FROM_DATABASE=SmartPCI562 56K Modem + +pci:v000010A5d00005449* + ID_MODEL_FROM_DATABASE=SmartPCI561 modem + +pci:v000010A6* + ID_VENDOR_FROM_DATABASE=Informtech Industrial Ltd. + +pci:v000010A7* + ID_VENDOR_FROM_DATABASE=Benchmarq Microelectronics + +pci:v000010A8* + ID_VENDOR_FROM_DATABASE=Sierra Semiconductor + +pci:v000010A8d00000000* + ID_MODEL_FROM_DATABASE=STB Horizon 64 + +pci:v000010A9* + ID_VENDOR_FROM_DATABASE=Silicon Graphics Intl. Corp. + +pci:v000010A9d00000001* + ID_MODEL_FROM_DATABASE=Crosstalk to PCI Bridge + +pci:v000010A9d00000002* + ID_MODEL_FROM_DATABASE=Linc I/O controller + +pci:v000010A9d00000003* + ID_MODEL_FROM_DATABASE=IOC3 I/O controller + +pci:v000010A9d00000004* + ID_MODEL_FROM_DATABASE=O2 MACE + +pci:v000010A9d00000005* + ID_MODEL_FROM_DATABASE=RAD Audio + +pci:v000010A9d00000006* + ID_MODEL_FROM_DATABASE=HPCEX + +pci:v000010A9d00000007* + ID_MODEL_FROM_DATABASE=RPCEX + +pci:v000010A9d00000008* + ID_MODEL_FROM_DATABASE=DiVO VIP + +pci:v000010A9d00000009* + ID_MODEL_FROM_DATABASE=AceNIC Gigabit Ethernet + +pci:v000010A9d00000009sv000010A9sd00008002* + ID_MODEL_FROM_DATABASE=AceNIC Gigabit Ethernet + +pci:v000010A9d00000010* + ID_MODEL_FROM_DATABASE=AMP Video I/O + +pci:v000010A9d00000011* + ID_MODEL_FROM_DATABASE=GRIP + +pci:v000010A9d00000012* + ID_MODEL_FROM_DATABASE=SGH PSHAC GSN + +pci:v000010A9d00000208* + ID_MODEL_FROM_DATABASE=SSIM1 SAS Adapter + +pci:v000010A9d00001001* + ID_MODEL_FROM_DATABASE=Magic Carpet + +pci:v000010A9d00001002* + ID_MODEL_FROM_DATABASE=Lithium + +pci:v000010A9d00001003* + ID_MODEL_FROM_DATABASE=Dual JPEG 1 + +pci:v000010A9d00001004* + ID_MODEL_FROM_DATABASE=Dual JPEG 2 + +pci:v000010A9d00001005* + ID_MODEL_FROM_DATABASE=Dual JPEG 3 + +pci:v000010A9d00001006* + ID_MODEL_FROM_DATABASE=Dual JPEG 4 + +pci:v000010A9d00001007* + ID_MODEL_FROM_DATABASE=Dual JPEG 5 + +pci:v000010A9d00001008* + ID_MODEL_FROM_DATABASE=Cesium + +pci:v000010A9d0000100A* + ID_MODEL_FROM_DATABASE=IOC4 I/O controller + +pci:v000010A9d00001504* + ID_MODEL_FROM_DATABASE=SSIM1 Fibre Channel Adapter + +pci:v000010A9d00002001* + ID_MODEL_FROM_DATABASE=Fibre Channel + +pci:v000010A9d00002002* + ID_MODEL_FROM_DATABASE=ASDE + +pci:v000010A9d00004001* + ID_MODEL_FROM_DATABASE=TIO-CE PCI Express Bridge + +pci:v000010A9d00004002* + ID_MODEL_FROM_DATABASE=TIO-CE PCI Express Port + +pci:v000010A9d00008001* + ID_MODEL_FROM_DATABASE=O2 1394 + +pci:v000010A9d00008002* + ID_MODEL_FROM_DATABASE=G-net NT + +pci:v000010AA* + ID_VENDOR_FROM_DATABASE=ACC Microelectronics + +pci:v000010AAd00000000* + ID_MODEL_FROM_DATABASE=ACCM 2188 + +pci:v000010AAd00002051* + ID_MODEL_FROM_DATABASE=2051 CPU bridge + +pci:v000010AAd00005842* + ID_MODEL_FROM_DATABASE=2051 ISA bridge + +pci:v000010AB* + ID_VENDOR_FROM_DATABASE=Digicom + +pci:v000010AC* + ID_VENDOR_FROM_DATABASE=Honeywell IAC + +pci:v000010AD* + ID_VENDOR_FROM_DATABASE=Symphony Labs + +pci:v000010ADd00000001* + ID_MODEL_FROM_DATABASE=W83769F + +pci:v000010ADd00000003* + ID_MODEL_FROM_DATABASE=SL82C103 + +pci:v000010ADd00000005* + ID_MODEL_FROM_DATABASE=SL82C105 + +pci:v000010ADd00000103* + ID_MODEL_FROM_DATABASE=SL82c103 + +pci:v000010ADd00000105* + ID_MODEL_FROM_DATABASE=SL82c105 + +pci:v000010ADd00000565* + ID_MODEL_FROM_DATABASE=W83C553F/W83C554F + +pci:v000010AE* + ID_VENDOR_FROM_DATABASE=Cornerstone Technology + +pci:v000010AF* + ID_VENDOR_FROM_DATABASE=Micro Computer Systems Inc + +pci:v000010B0* + ID_VENDOR_FROM_DATABASE=CardExpert Technology + +pci:v000010B1* + ID_VENDOR_FROM_DATABASE=Cabletron Systems Inc + +pci:v000010B2* + ID_VENDOR_FROM_DATABASE=Raytheon Company + +pci:v000010B3* + ID_VENDOR_FROM_DATABASE=Databook Inc + +pci:v000010B3d00003106* + ID_MODEL_FROM_DATABASE=DB87144 + +pci:v000010B3d0000B106* + ID_MODEL_FROM_DATABASE=DB87144 + +pci:v000010B4* + ID_VENDOR_FROM_DATABASE=STB Systems Inc + +pci:v000010B4d00001B1D* + ID_MODEL_FROM_DATABASE=Velocity 128 3D + +pci:v000010B4d00001B1Dsv000010B4sd0000237E* + ID_MODEL_FROM_DATABASE=Velocity 4400 + +pci:v000010B5* + ID_VENDOR_FROM_DATABASE=PLX Technology, Inc. + +pci:v000010B5d00000001* + ID_MODEL_FROM_DATABASE=i960 PCI bus interface + +pci:v000010B5d00000557* + ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + +pci:v000010B5d00000557sv000010B5sd00009030* + ID_MODEL_FROM_DATABASE=Digium Tormenta 2 T400P-SS7 or E400P-SS7 Quad T1 or E1 PCI card + +pci:v000010B5d00001000* + ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + +pci:v000010B5d00001000sv000010B5sd00009030* + ID_MODEL_FROM_DATABASE=ATCOM AT400P Quad T1 PCI card + +pci:v000010B5d00001024* + ID_MODEL_FROM_DATABASE=Acromag, Inc. IndustryPack Carrier Card + +pci:v000010B5d00001042* + ID_MODEL_FROM_DATABASE=Brandywine / jxi2, Inc. - PMC-SyncClock32, IRIG A & B, Nasa 36 + +pci:v000010B5d0000106A* + ID_MODEL_FROM_DATABASE=Dual OX16C952 4 port serial adapter [Megawolf Romulus/4] + +pci:v000010B5d00001076* + ID_MODEL_FROM_DATABASE=VScom 800 8 port serial adaptor + +pci:v000010B5d00001077* + ID_MODEL_FROM_DATABASE=VScom 400 4 port serial adaptor + +pci:v000010B5d00001078* + ID_MODEL_FROM_DATABASE=VScom 210 2 port serial and 1 port parallel adaptor + +pci:v000010B5d00001103* + ID_MODEL_FROM_DATABASE=VScom 200 2 port serial adaptor + +pci:v000010B5d00001146* + ID_MODEL_FROM_DATABASE=VScom 010 1 port parallel adaptor + +pci:v000010B5d00001147* + ID_MODEL_FROM_DATABASE=VScom 020 2 port parallel adaptor + +pci:v000010B5d00002000* + ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + +pci:v000010B5d00002000sv000010B5sd00009030* + ID_MODEL_FROM_DATABASE=ATCOM AE400P Quad E1 PCI card + +pci:v000010B5d00002540* + ID_MODEL_FROM_DATABASE=IXXAT CAN-Interface PC-I 04/PCI + +pci:v000010B5d00002724* + ID_MODEL_FROM_DATABASE=Thales PCSM Security Card + +pci:v000010B5d00003376* + ID_MODEL_FROM_DATABASE=Cosateq 4 Port CAN Card + +pci:v000010B5d00004000* + ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + +pci:v000010B5d00004000sv000010B5sd00009030* + ID_MODEL_FROM_DATABASE=Tormenta 3 Varion V400P/ATCOM TE400P Quad E1/T1/J1 PCI card + +pci:v000010B5d00004001* + ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + +pci:v000010B5d00004001sv000010B5sd00009030* + ID_MODEL_FROM_DATABASE=ATCOM A400PE Quad E1 PCI card + +pci:v000010B5d00004002* + ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + +pci:v000010B5d00004002sv000010B5sd00009030* + ID_MODEL_FROM_DATABASE=ATCOM A400PT Quad T1 PCI card + +pci:v000010B5d00006140* + ID_MODEL_FROM_DATABASE=PCI6140 32-bit 33MHz PCI-to-PCI Bridge + +pci:v000010B5d00006150* + ID_MODEL_FROM_DATABASE=PCI6150 32-bit 33MHz PCI-to-PCI Bridge + +pci:v000010B5d00006152* + ID_MODEL_FROM_DATABASE=PCI6152 32-bit 66MHz PCI-to-PCI Bridge + +pci:v000010B5d00006154* + ID_MODEL_FROM_DATABASE=PCI6154 64-bit 66MHz PCI-to-PCI Bridge + +pci:v000010B5d00006254* + ID_MODEL_FROM_DATABASE=PCI6254 64-bit 66MHz PCI-to-PCI Bridge + +pci:v000010B5d00006466* + ID_MODEL_FROM_DATABASE=PCI6466 64-bit 66MHz PCI-to-PCI Bridge + +pci:v000010B5d00006520* + ID_MODEL_FROM_DATABASE=PCI6520 64-bit 133MHz PCI-X-to-PCI-X Bridge + +pci:v000010B5d00006540* + ID_MODEL_FROM_DATABASE=PCI6540 64-bit 133MHz PCI-X-to-PCI-X Bridge + +pci:v000010B5d00006540sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11 Single Board Computer + +pci:v000010B5d00006540sv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v000010B5d00006541* + ID_MODEL_FROM_DATABASE=PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side) + +pci:v000010B5d00006541sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11 Single Board Computer + +pci:v000010B5d00006541sv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v000010B5d00006542* + ID_MODEL_FROM_DATABASE=PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side) + +pci:v000010B5d00006542sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11 Single Board Computer + +pci:v000010B5d00006542sv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v000010B5d00008111* + ID_MODEL_FROM_DATABASE=PEX 8111 PCI Express-to-PCI Bridge + +pci:v000010B5d00008112* + ID_MODEL_FROM_DATABASE=PEX8112 x1 Lane PCI Express-to-PCI Bridge + +pci:v000010B5d00008114* + ID_MODEL_FROM_DATABASE=PEX 8114 PCI Express-to-PCI/PCI-X Bridge + +pci:v000010B5d00008311* + ID_MODEL_FROM_DATABASE=PEX8311 x1 Lane PCI Express-to-Generic Local Bus Bridge + +pci:v000010B5d00008505* + ID_MODEL_FROM_DATABASE=PEX 8505 5-lane, 5-port PCI Express Switch + +pci:v000010B5d00008508* + ID_MODEL_FROM_DATABASE=PEX 8508 8-lane, 5-port PCI Express Switch + +pci:v000010B5d00008509* + ID_MODEL_FROM_DATABASE=PEX 8509 8-lane, 8-port PCI Express Switch + +pci:v000010B5d00008512* + ID_MODEL_FROM_DATABASE=PEX 8512 12-lane, 5-port PCI Express Switch + +pci:v000010B5d00008516* + ID_MODEL_FROM_DATABASE=PEX 8516 Versatile PCI Express Switch + +pci:v000010B5d00008517* + ID_MODEL_FROM_DATABASE=PEX 8517 16-lane, 5-port PCI Express Switch + +pci:v000010B5d00008518* + ID_MODEL_FROM_DATABASE=PEX 8518 16-lane, 5-port PCI Express Switch + +pci:v000010B5d00008524* + ID_MODEL_FROM_DATABASE=PEX 8524 24-lane, 6-port PCI Express Switch + +pci:v000010B5d00008525* + ID_MODEL_FROM_DATABASE=PEX 8525 24-lane, 5-port PCI Express Switch + +pci:v000010B5d00008532* + ID_MODEL_FROM_DATABASE=PEX 8532 Versatile PCI Express Switch + +pci:v000010B5d00008533* + ID_MODEL_FROM_DATABASE=PEX 8533 32-lane, 6-port PCI Express Switch + +pci:v000010B5d00008547* + ID_MODEL_FROM_DATABASE=PEX 8547 48-lane, 3-port PCI Express Switch + +pci:v000010B5d00008548* + ID_MODEL_FROM_DATABASE=PEX 8548 48-lane, 9-port PCI Express Switch + +pci:v000010B5d00008604* + ID_MODEL_FROM_DATABASE=PEX 8604 4-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008605* + ID_MODEL_FROM_DATABASE=PEX 8605 PCI Express 4-port Gen2 Switch + +pci:v000010B5d00008606* + ID_MODEL_FROM_DATABASE=PEX 8606 6 Lane, 6 Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008608* + ID_MODEL_FROM_DATABASE=PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008609* + ID_MODEL_FROM_DATABASE=PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA + +pci:v000010B5d00008612* + ID_MODEL_FROM_DATABASE=PEX 8612 12-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008613* + ID_MODEL_FROM_DATABASE=PEX 8613 12-lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008614* + ID_MODEL_FROM_DATABASE=PEX 8614 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008615* + ID_MODEL_FROM_DATABASE=PEX 8615 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA + +pci:v000010B5d00008616* + ID_MODEL_FROM_DATABASE=PEX 8616 16-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008617* + ID_MODEL_FROM_DATABASE=PEX 8617 16-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch with P2P + +pci:v000010B5d00008618* + ID_MODEL_FROM_DATABASE=PEX 8618 16-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008619* + ID_MODEL_FROM_DATABASE=PEX 8619 16-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA + +pci:v000010B5d00008624* + ID_MODEL_FROM_DATABASE=PEX 8624 24-lane, 6-Port PCI Express Gen 2 (5.0 GT/s) Switch [ExpressLane] + +pci:v000010B5d00008624sv000013A3sd00001845* + ID_MODEL_FROM_DATABASE=DX1845 Acceleration Card + +pci:v000010B5d00008625* + ID_MODEL_FROM_DATABASE=PEX 8625 24-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008632* + ID_MODEL_FROM_DATABASE=PEX 8632 32-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008636* + ID_MODEL_FROM_DATABASE=PEX 8636 36-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008647* + ID_MODEL_FROM_DATABASE=PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008648* + ID_MODEL_FROM_DATABASE=PEX 8648 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008649* + ID_MODEL_FROM_DATABASE=PEX 8649 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008664* + ID_MODEL_FROM_DATABASE=PEX 8664 64-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch + +pci:v000010B5d00008680* + ID_MODEL_FROM_DATABASE=PEX 8680 80-lane, 20-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch + +pci:v000010B5d00008696* + ID_MODEL_FROM_DATABASE=PEX 8696 96-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch + +pci:v000010B5d00008717* + ID_MODEL_FROM_DATABASE=PEX 8717 16-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch with DMA + +pci:v000010B5d00008718* + ID_MODEL_FROM_DATABASE=PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch + +pci:v000010B5d00008732* + ID_MODEL_FROM_DATABASE=PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch + +pci:v000010B5d00008734* + ID_MODEL_FROM_DATABASE=PEX 8734 32-lane, 8-Port PCI Express Gen 3 (8.0GT/s) Switch + +pci:v000010B5d000087B0* + ID_MODEL_FROM_DATABASE=PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch + +pci:v000010B5d00009016* + ID_MODEL_FROM_DATABASE=PLX 9016 8-port serial controller + +pci:v000010B5d00009030* + ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + +pci:v000010B5d00009030sv000010B5sd00002695* + ID_MODEL_FROM_DATABASE=Hilscher CIF50-PB/DPS Profibus + +pci:v000010B5d00009030sv000010B5sd00002862* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCI LV (3V/5V): Timecode Reader Board + +pci:v000010B5d00009030sv000010B5sd00002906* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCI TS (3V/5V): Time Synchronisation Board + +pci:v000010B5d00009030sv000010B5sd00002940* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCI D (3V/5V): Timecode Reader Board + +pci:v000010B5d00009030sv000010B5sd00002977* + ID_MODEL_FROM_DATABASE=IXXAT iPC-I XC16/PCI CAN Board + +pci:v000010B5d00009030sv000010B5sd00002978* + ID_MODEL_FROM_DATABASE=SH ARC-PCIu/SH ARC-PCI104/SH ARC-PCIe SOHARD ARCNET card + +pci:v000010B5d00009030sv000010B5sd00003025* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board + +pci:v000010B5d00009030sv000010B5sd00003068* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board + +pci:v000010B5d00009030sv000010B5sd00003463* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCI D (v2) (3V/5V): Timecode Reader Board + +pci:v000010B5d00009030sv000012FEsd00000111* + ID_MODEL_FROM_DATABASE=CPCI-ASIO4 (ESD 4-port Serial Interface Board) + +pci:v000010B5d00009030sv00001369sd00009C01* + ID_MODEL_FROM_DATABASE=VX222v2 + +pci:v000010B5d00009030sv00001369sd00009D01* + ID_MODEL_FROM_DATABASE=VX222-Mic + +pci:v000010B5d00009030sv00001369sd00009D02* + ID_MODEL_FROM_DATABASE=VX222-Mic + +pci:v000010B5d00009030sv00001369sd00009E01* + ID_MODEL_FROM_DATABASE=PCX924v2 + +pci:v000010B5d00009030sv00001369sd00009F01* + ID_MODEL_FROM_DATABASE=PCX924-Mic + +pci:v000010B5d00009030sv00001369sd00009F02* + ID_MODEL_FROM_DATABASE=PCX924-Mic + +pci:v000010B5d00009030sv00001369sd0000A001* + ID_MODEL_FROM_DATABASE=PCX22v2 + +pci:v000010B5d00009030sv00001369sd0000A701* + ID_MODEL_FROM_DATABASE=LCM220v2 + +pci:v000010B5d00009030sv00001369sd0000A801* + ID_MODEL_FROM_DATABASE=LCM200 + +pci:v000010B5d00009030sv00001397sd00003136* + ID_MODEL_FROM_DATABASE=4xS0-ISDN PCI Adapter + +pci:v000010B5d00009030sv00001397sd00003137* + ID_MODEL_FROM_DATABASE=S2M-E1-ISDN PCI Adapter + +pci:v000010B5d00009030sv00001518sd00000200* + ID_MODEL_FROM_DATABASE=Kontron ThinkIO-C + +pci:v000010B5d00009030sv000015EDsd00001002* + ID_MODEL_FROM_DATABASE=MCCS 8-port Serial Hot Swap + +pci:v000010B5d00009030sv000015EDsd00001003* + ID_MODEL_FROM_DATABASE=MCCS 16-port Serial Hot Swap + +pci:v000010B5d00009030sv0000E1C5sd00000001* + ID_MODEL_FROM_DATABASE=TE1-PCI + +pci:v000010B5d00009030sv0000E1C5sd00000005* + ID_MODEL_FROM_DATABASE=TA1-PCI + +pci:v000010B5d00009030sv0000E1C5sd00000006* + ID_MODEL_FROM_DATABASE=TA1-PCI4 + +pci:v000010B5d00009036* + ID_MODEL_FROM_DATABASE=9036 + +pci:v000010B5d00009050* + ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge + +pci:v000010B5d00009050sv000010B5sd00001067* + ID_MODEL_FROM_DATABASE=IXXAT CAN i165 + +pci:v000010B5d00009050sv000010B5sd0000114E* + ID_MODEL_FROM_DATABASE=Wasco WITIO PCI168extended + +pci:v000010B5d00009050sv000010B5sd00001169* + ID_MODEL_FROM_DATABASE=Wasco OPTOIO32standard 32 digital in, 32 digital out + +pci:v000010B5d00009050sv000010B5sd00001172* + ID_MODEL_FROM_DATABASE=IK220 (Heidenhain) + +pci:v000010B5d00009050sv000010B5sd00002036* + ID_MODEL_FROM_DATABASE=SatPak GPS + +pci:v000010B5d00009050sv000010B5sd00002221* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCI LV: Timecode Reader Board + +pci:v000010B5d00009050sv000010B5sd00002273* + ID_MODEL_FROM_DATABASE=SH ARC-PCI SOHARD ARCNET card + +pci:v000010B5d00009050sv000010B5sd00002431* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCI D: Timecode Reader Board + +pci:v000010B5d00009050sv000010B5sd00002905* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCI TS: Time Synchronisation Board + +pci:v000010B5d00009050sv000010B5sd00003196* + ID_MODEL_FROM_DATABASE=Goramo PLX200SYN sync serial card + +pci:v000010B5d00009050sv000010B5sd00009050* + ID_MODEL_FROM_DATABASE=PCI-I04 PCI Passive PC/CAN Interface + +pci:v000010B5d00009050sv00001369sd00008901* + ID_MODEL_FROM_DATABASE=PCX11+ PCI + +pci:v000010B5d00009050sv00001369sd00008F01* + ID_MODEL_FROM_DATABASE=VX222 + +pci:v000010B5d00009050sv00001369sd00009401* + ID_MODEL_FROM_DATABASE=PCX924 + +pci:v000010B5d00009050sv00001369sd00009501* + ID_MODEL_FROM_DATABASE=PCX22 + +pci:v000010B5d00009050sv00001498sd00000362* + ID_MODEL_FROM_DATABASE=TPMC866 8 Channel Serial Card + +pci:v000010B5d00009050sv00001522sd00000001* + ID_MODEL_FROM_DATABASE=RockForce 4 Port V.90 Data/Fax/Voice Modem + +pci:v000010B5d00009050sv00001522sd00000002* + ID_MODEL_FROM_DATABASE=RockForce 2 Port V.90 Data/Fax/Voice Modem + +pci:v000010B5d00009050sv00001522sd00000003* + ID_MODEL_FROM_DATABASE=RockForce 6 Port V.90 Data/Fax/Voice Modem + +pci:v000010B5d00009050sv00001522sd00000004* + ID_MODEL_FROM_DATABASE=RockForce 8 Port V.90 Data/Fax/Voice Modem + +pci:v000010B5d00009050sv00001522sd00000010* + ID_MODEL_FROM_DATABASE=RockForce2000 4 Port V.90 Data/Fax/Voice Modem + +pci:v000010B5d00009050sv00001522sd00000020* + ID_MODEL_FROM_DATABASE=RockForce2000 2 Port V.90 Data/Fax/Voice Modem + +pci:v000010B5d00009050sv000015EDsd00001000* + ID_MODEL_FROM_DATABASE=Macrolink MCCS 8-port Serial + +pci:v000010B5d00009050sv000015EDsd00001001* + ID_MODEL_FROM_DATABASE=Macrolink MCCS 16-port Serial + +pci:v000010B5d00009050sv000015EDsd00001002* + ID_MODEL_FROM_DATABASE=Macrolink MCCS 8-port Serial Hot Swap + +pci:v000010B5d00009050sv000015EDsd00001003* + ID_MODEL_FROM_DATABASE=Macrolink MCCS 16-port Serial Hot Swap + +pci:v000010B5d00009050sv00005654sd00002036* + ID_MODEL_FROM_DATABASE=OpenSwitch 6 Telephony card + +pci:v000010B5d00009050sv00005654sd00003132* + ID_MODEL_FROM_DATABASE=OpenSwitch 12 Telephony card + +pci:v000010B5d00009050sv00005654sd00005634* + ID_MODEL_FROM_DATABASE=OpenLine4 Telephony Card + +pci:v000010B5d00009050sv0000D531sd0000C002* + ID_MODEL_FROM_DATABASE=PCIntelliCAN 2xSJA1000 CAN bus + +pci:v000010B5d00009050sv0000D84Dsd00004006* + ID_MODEL_FROM_DATABASE=EX-4006 1P + +pci:v000010B5d00009050sv0000D84Dsd00004008* + ID_MODEL_FROM_DATABASE=EX-4008 1P EPP/ECP + +pci:v000010B5d00009050sv0000D84Dsd00004014* + ID_MODEL_FROM_DATABASE=EX-4014 2P + +pci:v000010B5d00009050sv0000D84Dsd00004018* + ID_MODEL_FROM_DATABASE=EX-4018 3P EPP/ECP + +pci:v000010B5d00009050sv0000D84Dsd00004025* + ID_MODEL_FROM_DATABASE=EX-4025 1S(16C550) RS-232 + +pci:v000010B5d00009050sv0000D84Dsd00004027* + ID_MODEL_FROM_DATABASE=EX-4027 1S(16C650) RS-232 + +pci:v000010B5d00009050sv0000D84Dsd00004028* + ID_MODEL_FROM_DATABASE=EX-4028 1S(16C850) RS-232 + +pci:v000010B5d00009050sv0000D84Dsd00004036* + ID_MODEL_FROM_DATABASE=EX-4036 2S(16C650) RS-232 + +pci:v000010B5d00009050sv0000D84Dsd00004037* + ID_MODEL_FROM_DATABASE=EX-4037 2S(16C650) RS-232 + +pci:v000010B5d00009050sv0000D84Dsd00004038* + ID_MODEL_FROM_DATABASE=EX-4038 2S(16C850) RS-232 + +pci:v000010B5d00009050sv0000D84Dsd00004052* + ID_MODEL_FROM_DATABASE=EX-4052 1S(16C550) RS-422/485 + +pci:v000010B5d00009050sv0000D84Dsd00004053* + ID_MODEL_FROM_DATABASE=EX-4053 2S(16C550) RS-422/485 + +pci:v000010B5d00009050sv0000D84Dsd00004055* + ID_MODEL_FROM_DATABASE=EX-4055 4S(16C550) RS-232 + +pci:v000010B5d00009050sv0000D84Dsd00004058* + ID_MODEL_FROM_DATABASE=EX-4055 4S(16C650) RS-232 + +pci:v000010B5d00009050sv0000D84Dsd00004065* + ID_MODEL_FROM_DATABASE=EX-4065 8S(16C550) RS-232 + +pci:v000010B5d00009050sv0000D84Dsd00004068* + ID_MODEL_FROM_DATABASE=EX-4068 8S(16C650) RS-232 + +pci:v000010B5d00009050sv0000D84Dsd00004078* + ID_MODEL_FROM_DATABASE=EX-4078 2S(16C552) RS-232+1P + +pci:v000010B5d00009052* + ID_MODEL_FROM_DATABASE=PCI9052 PCI <-> IOBus Bridge + +pci:v000010B5d00009054* + ID_MODEL_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge + +pci:v000010B5d00009054sv000010B5sd00002455* + ID_MODEL_FROM_DATABASE=Wessex Techology PHIL-PCI + +pci:v000010B5d00009054sv000010B5sd00002696* + ID_MODEL_FROM_DATABASE=Innes Corp AM Radcap card + +pci:v000010B5d00009054sv000010B5sd00002717* + ID_MODEL_FROM_DATABASE=Innes Corp Auricon card + +pci:v000010B5d00009054sv000010B5sd00002844* + ID_MODEL_FROM_DATABASE=Innes Corp TVS Encoder card + +pci:v000010B5d00009054sv000012C7sd00004001* + ID_MODEL_FROM_DATABASE=Intel Dialogic DM/V960-4T1 PCI + +pci:v000010B5d00009054sv000012D9sd00000002* + ID_MODEL_FROM_DATABASE=PCI Prosody Card rev 1.5 + +pci:v000010B5d00009054sv000014B4sd0000D100* + ID_MODEL_FROM_DATABASE=Dektec DTA-100 + +pci:v000010B5d00009054sv000014B4sd0000D114* + ID_MODEL_FROM_DATABASE=Dektec DTA-120 + +pci:v000010B5d00009054sv000016DFsd00000011* + ID_MODEL_FROM_DATABASE=PIKA PrimeNet MM PCI + +pci:v000010B5d00009054sv000016DFsd00000012* + ID_MODEL_FROM_DATABASE=PIKA PrimeNet MM cPCI 8 + +pci:v000010B5d00009054sv000016DFsd00000013* + ID_MODEL_FROM_DATABASE=PIKA PrimeNet MM cPCI 8 (without CAS Signaling) + +pci:v000010B5d00009054sv000016DFsd00000014* + ID_MODEL_FROM_DATABASE=PIKA PrimeNet MM cPCI 4 + +pci:v000010B5d00009054sv000016DFsd00000015* + ID_MODEL_FROM_DATABASE=PIKA Daytona MM + +pci:v000010B5d00009054sv000016DFsd00000016* + ID_MODEL_FROM_DATABASE=PIKA InLine MM + +pci:v000010B5d00009056* + ID_MODEL_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge + +pci:v000010B5d00009056sv000010B5sd00002979* + ID_MODEL_FROM_DATABASE=CellinkBlade 11 - CPCI board VoATM AAL1 + +pci:v000010B5d00009056sv000010B5sd00003268* + ID_MODEL_FROM_DATABASE=IXXAT iPC-I XC16/PCIe CAN Board + +pci:v000010B5d00009056sv000010B5sd00003352* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCIe HD: Timecode Reader Board + +pci:v000010B5d00009056sv000010B5sd00003353* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCIe D: Timecode Reader Board + +pci:v000010B5d00009056sv000010B5sd00003354* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCIe LV: Timecode Reader Board + +pci:v000010B5d00009056sv000010B5sd00003355* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCIe L: Timecode Reader Board + +pci:v000010B5d00009056sv000010B5sd00003415* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCIe TS: Time Synchronisation Board + +pci:v000010B5d00009056sv000010B5sd00003493* + ID_MODEL_FROM_DATABASE=Alpermann+Velte PCL PCIe 3G: Timecode Reader Board + +pci:v000010B5d00009056sv00001369sd0000C001* + ID_MODEL_FROM_DATABASE=LX6464ES + +pci:v000010B5d00009056sv00001369sd0000C201* + ID_MODEL_FROM_DATABASE=LX1616ES + +pci:v000010B5d00009056sv000014B4sd0000D10A* + ID_MODEL_FROM_DATABASE=DekTec DTA-110T + +pci:v000010B5d00009056sv000014B4sd0000D140* + ID_MODEL_FROM_DATABASE=Dektec DTA-140 + +pci:v000010B5d00009056sv00001A0Esd0000006F* + ID_MODEL_FROM_DATABASE=Dektec DTA-111 + +pci:v000010B5d00009060* + ID_MODEL_FROM_DATABASE=PCI9060 32-bit 33MHz PCI <-> IOBus Bridge + +pci:v000010B5d0000906D* + ID_MODEL_FROM_DATABASE=9060SD + +pci:v000010B5d0000906Dsv0000125Csd00000640* + ID_MODEL_FROM_DATABASE=Aries 16000P + +pci:v000010B5d0000906E* + ID_MODEL_FROM_DATABASE=9060ES + +pci:v000010B5d00009080* + ID_MODEL_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge + +pci:v000010B5d00009080sv0000103Csd000010EB* + ID_MODEL_FROM_DATABASE=(Agilent) E2777B 83K Series Optical Communication Interface + +pci:v000010B5d00009080sv0000103Csd000010EC* + ID_MODEL_FROM_DATABASE=(Agilent) E6978-66442 PCI CIC + +pci:v000010B5d00009080sv000010B5sd00001123* + ID_MODEL_FROM_DATABASE=Sectra KK631 encryption board + +pci:v000010B5d00009080sv000010B5sd00009080* + ID_MODEL_FROM_DATABASE=9080 [real subsystem ID not set] + +pci:v000010B5d00009080sv000012D9sd00000002* + ID_MODEL_FROM_DATABASE=PCI Prosody Card + +pci:v000010B5d00009080sv000012DFsd00004422* + ID_MODEL_FROM_DATABASE=4422PCI ["Do-All" Telemetry Data Aquisition System] + +pci:v000010B5d00009080sv00001369sd00009601* + ID_MODEL_FROM_DATABASE=PCX822np + +pci:v000010B5d00009080sv00001369sd0000A102* + ID_MODEL_FROM_DATABASE=PCX822v2 + +pci:v000010B5d00009080sv00001369sd0000A201* + ID_MODEL_FROM_DATABASE=PCX442 + +pci:v000010B5d00009080sv00001369sd0000A301* + ID_MODEL_FROM_DATABASE=LCM440v2 + +pci:v000010B5d00009080sv00001369sd0000A401* + ID_MODEL_FROM_DATABASE=VX822 + +pci:v000010B5d00009080sv00001369sd0000A402* + ID_MODEL_FROM_DATABASE=VX822v2 + +pci:v000010B5d00009080sv00001369sd0000A901* + ID_MODEL_FROM_DATABASE=LCM420 + +pci:v000010B5d00009080sv00001369sd0000AA01* + ID_MODEL_FROM_DATABASE=VX820v2 + +pci:v000010B5d00009080sv00001517sd0000000B* + ID_MODEL_FROM_DATABASE=ECSG-1R3ADC-PMC Clock synthesizer + +pci:v000010B5d00009656* + ID_MODEL_FROM_DATABASE=PCI9656 PCI <-> IOBus Bridge + +pci:v000010B5d00009656sv00001517sd0000000F* + ID_MODEL_FROM_DATABASE=ECDR-GC314-PMC Receiver + +pci:v000010B5d00009656sv00001885sd00000700* + ID_MODEL_FROM_DATABASE=Tsunami FPGA PMC with Altera Stratix S40 + +pci:v000010B5d00009656sv00001885sd00000701* + ID_MODEL_FROM_DATABASE=Tsunami FPGA PMC with Altera Stratix S30 + +pci:v000010B5d0000A100* + ID_MODEL_FROM_DATABASE=Blackmagic Design DeckLink + +pci:v000010B5d0000BB04* + ID_MODEL_FROM_DATABASE=B&B 3PCIOSD1A Isolated PCI Serial + +pci:v000010B5d0000C001* + ID_MODEL_FROM_DATABASE=CronyxOmega-PCI (8-port RS232) + +pci:v000010B5d0000D00D* + ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + +pci:v000010B5d0000D00Dsv000010B5sd00009030* + ID_MODEL_FROM_DATABASE=Digium Tormenta 2 T400P or E400P Quad T1 or E1 PCI card + +pci:v000010B5d0000D33D* + ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + +pci:v000010B5d0000D33Dsv000010B5sd00009030* + ID_MODEL_FROM_DATABASE=Tormenta 3 Varion V401PT Quad T1/J1 PCI card + +pci:v000010B5d0000D44D* + ID_MODEL_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge + +pci:v000010B5d0000D44Dsv000010B5sd000017F6* + ID_MODEL_FROM_DATABASE=Allo CP100P/E 1-port E1/T1/J1 PCI/PCIe card + +pci:v000010B5d0000D44Dsv000010B5sd000017F7* + ID_MODEL_FROM_DATABASE=Allo CP400P/E 4-port E1/T1/J1 PCI/PCIe card + +pci:v000010B5d0000D44Dsv000010B5sd000017F8* + ID_MODEL_FROM_DATABASE=Allo CP200P/E 2-port E1/T1/J1 PCI/PCIe card + +pci:v000010B5d0000D44Dsv000010B5sd00009030* + ID_MODEL_FROM_DATABASE=Tormenta 3 Varion V401PE Quad E1 PCI card + +pci:v000010B6* + ID_VENDOR_FROM_DATABASE=Madge Networks + +pci:v000010B6d00000001* + ID_MODEL_FROM_DATABASE=Smart 16/4 PCI Ringnode + +pci:v000010B6d00000002* + ID_MODEL_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk2 + +pci:v000010B6d00000002sv000010B6sd00000002* + ID_MODEL_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk2 + +pci:v000010B6d00000002sv000010B6sd00000006* + ID_MODEL_FROM_DATABASE=16/4 CardBus Adapter + +pci:v000010B6d00000003* + ID_MODEL_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk3 + +pci:v000010B6d00000003sv00000E11sd0000B0FD* + ID_MODEL_FROM_DATABASE=Compaq NC4621 PCI, 4/16, WOL + +pci:v000010B6d00000003sv000010B6sd00000003* + ID_MODEL_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk3 + +pci:v000010B6d00000003sv000010B6sd00000007* + ID_MODEL_FROM_DATABASE=Presto PCI Plus Adapter + +pci:v000010B6d00000004* + ID_MODEL_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk1 + +pci:v000010B6d00000006* + ID_MODEL_FROM_DATABASE=16/4 Cardbus Adapter + +pci:v000010B6d00000006sv000010B6sd00000006* + ID_MODEL_FROM_DATABASE=16/4 CardBus Adapter + +pci:v000010B6d00000007* + ID_MODEL_FROM_DATABASE=Presto PCI Adapter + +pci:v000010B6d00000007sv000010B6sd00000007* + ID_MODEL_FROM_DATABASE=Presto PCI + +pci:v000010B6d00000009* + ID_MODEL_FROM_DATABASE=Smart 100/16/4 PCI-HS Ringnode + +pci:v000010B6d00000009sv000010B6sd00000009* + ID_MODEL_FROM_DATABASE=Smart 100/16/4 PCI-HS Ringnode + +pci:v000010B6d0000000A* + ID_MODEL_FROM_DATABASE=Smart 100/16/4 PCI Ringnode + +pci:v000010B6d0000000Asv000010B6sd0000000A* + ID_MODEL_FROM_DATABASE=Smart 100/16/4 PCI Ringnode + +pci:v000010B6d0000000B* + ID_MODEL_FROM_DATABASE=16/4 CardBus Adapter Mk2 + +pci:v000010B6d0000000Bsv000010B6sd00000008* + ID_MODEL_FROM_DATABASE=16/4 CardBus Adapter Mk2 + +pci:v000010B6d0000000Bsv000010B6sd0000000B* + ID_MODEL_FROM_DATABASE=16/4 Cardbus Adapter Mk2 + +pci:v000010B6d0000000C* + ID_MODEL_FROM_DATABASE=RapidFire 3140V2 16/4 TR Adapter + +pci:v000010B6d0000000Csv000010B6sd0000000C* + ID_MODEL_FROM_DATABASE=RapidFire 3140V2 16/4 TR Adapter + +pci:v000010B6d00001000* + ID_MODEL_FROM_DATABASE=Collage 25/155 ATM Client Adapter + +pci:v000010B6d00001001* + ID_MODEL_FROM_DATABASE=Collage 155 ATM Server Adapter + +pci:v000010B7* + ID_VENDOR_FROM_DATABASE=3Com Corporation + +pci:v000010B7d00000001* + ID_MODEL_FROM_DATABASE=3c985 1000BaseSX (SX/TX) + +pci:v000010B7d00000013* + ID_MODEL_FROM_DATABASE=AR5212 802.11abg NIC (3CRDAG675) + +pci:v000010B7d00000013sv000010B7sd00002031* + ID_MODEL_FROM_DATABASE=3CRDAG675 11a/b/g Wireless PCI Adapter + +pci:v000010B7d00000910* + ID_MODEL_FROM_DATABASE=3C910-A01 + +pci:v000010B7d00001006* + ID_MODEL_FROM_DATABASE=MINI PCI type 3B Data Fax Modem + +pci:v000010B7d00001007* + ID_MODEL_FROM_DATABASE=Mini PCI 56k Winmodem + +pci:v000010B7d00001007sv000010B7sd0000615B* + ID_MODEL_FROM_DATABASE=Mini PCI 56K Modem + +pci:v000010B7d00001007sv000010B7sd0000615C* + ID_MODEL_FROM_DATABASE=Mini PCI 56K Modem + +pci:v000010B7d00001201* + ID_MODEL_FROM_DATABASE=3c982-TXM 10/100baseTX Dual Port A [Hydra] + +pci:v000010B7d00001202* + ID_MODEL_FROM_DATABASE=3c982-TXM 10/100baseTX Dual Port B [Hydra] + +pci:v000010B7d00001700* + ID_MODEL_FROM_DATABASE=3c940 10/100/1000Base-T [Marvell] + +pci:v000010B7d00001700sv00001043sd000080EB* + ID_MODEL_FROM_DATABASE=A7V600/P4P800/K8V motherboard + +pci:v000010B7d00001700sv000010B7sd00000010* + ID_MODEL_FROM_DATABASE=3C940 Gigabit LOM Ethernet Adapter + +pci:v000010B7d00001700sv000010B7sd00000020* + ID_MODEL_FROM_DATABASE=3C941 Gigabit LOM Ethernet Adapter + +pci:v000010B7d00001700sv0000147Bsd00001407* + ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard + +pci:v000010B7d00003390* + ID_MODEL_FROM_DATABASE=3c339 TokenLink Velocity + +pci:v000010B7d00003590* + ID_MODEL_FROM_DATABASE=3c359 TokenLink Velocity XL + +pci:v000010B7d00003590sv000010B7sd00003590* + ID_MODEL_FROM_DATABASE=TokenLink Velocity XL Adapter (3C359/359B) + +pci:v000010B7d00004500* + ID_MODEL_FROM_DATABASE=3c450 HomePNA [Tornado] + +pci:v000010B7d00005055* + ID_MODEL_FROM_DATABASE=3c555 Laptop Hurricane + +pci:v000010B7d00005057* + ID_MODEL_FROM_DATABASE=3c575 Megahertz 10/100 LAN CardBus [Boomerang] + +pci:v000010B7d00005057sv000010B7sd00005A57* + ID_MODEL_FROM_DATABASE=3C575 Megahertz 10/100 LAN Cardbus PC Card + +pci:v000010B7d00005157* + ID_MODEL_FROM_DATABASE=3cCFE575BT Megahertz 10/100 LAN CardBus [Cyclone] + +pci:v000010B7d00005157sv000010B7sd00005B57* + ID_MODEL_FROM_DATABASE=3C575 Megahertz 10/100 LAN Cardbus PC Card + +pci:v000010B7d00005257* + ID_MODEL_FROM_DATABASE=3cCFE575CT CardBus [Cyclone] + +pci:v000010B7d00005257sv000010B7sd00005C57* + ID_MODEL_FROM_DATABASE=FE575C-3Com 10/100 LAN CardBus-Fast Ethernet + +pci:v000010B7d00005900* + ID_MODEL_FROM_DATABASE=3c590 10BaseT [Vortex] + +pci:v000010B7d00005920* + ID_MODEL_FROM_DATABASE=3c592 EISA 10mbps Demon/Vortex + +pci:v000010B7d00005950* + ID_MODEL_FROM_DATABASE=3c595 100BaseTX [Vortex] + +pci:v000010B7d00005951* + ID_MODEL_FROM_DATABASE=3c595 100BaseT4 [Vortex] + +pci:v000010B7d00005952* + ID_MODEL_FROM_DATABASE=3c595 100Base-MII [Vortex] + +pci:v000010B7d00005970* + ID_MODEL_FROM_DATABASE=3c597 EISA Fast Demon/Vortex + +pci:v000010B7d00005B57* + ID_MODEL_FROM_DATABASE=3c595 Megahertz 10/100 LAN CardBus [Boomerang] + +pci:v000010B7d00005B57sv000010B7sd00005B57* + ID_MODEL_FROM_DATABASE=3C575 Megahertz 10/100 LAN Cardbus PC Card + +pci:v000010B7d00006000* + ID_MODEL_FROM_DATABASE=3CRSHPW796 [OfficeConnect Wireless CardBus] + +pci:v000010B7d00006001* + ID_MODEL_FROM_DATABASE=3com 3CRWE154G72 [Office Connect Wireless LAN Adapter] + +pci:v000010B7d00006055* + ID_MODEL_FROM_DATABASE=3c556 Hurricane CardBus [Cyclone] + +pci:v000010B7d00006056* + ID_MODEL_FROM_DATABASE=3c556B CardBus [Tornado] + +pci:v000010B7d00006056sv000010B7sd00006556* + ID_MODEL_FROM_DATABASE=10/100 Mini PCI Ethernet Adapter + +pci:v000010B7d00006560* + ID_MODEL_FROM_DATABASE=3cCFE656 CardBus [Cyclone] + +pci:v000010B7d00006560sv000010B7sd0000656A* + ID_MODEL_FROM_DATABASE=3CCFEM656 10/100 LAN+56K Modem CardBus + +pci:v000010B7d00006561* + ID_MODEL_FROM_DATABASE=3cCFEM656 10/100 LAN+56K Modem CardBus + +pci:v000010B7d00006561sv000010B7sd0000656B* + ID_MODEL_FROM_DATABASE=3CCFEM656 10/100 LAN+56K Modem CardBus + +pci:v000010B7d00006562* + ID_MODEL_FROM_DATABASE=3cCFEM656B 10/100 LAN+Winmodem CardBus [Cyclone] + +pci:v000010B7d00006562sv000010B7sd0000656B* + ID_MODEL_FROM_DATABASE=3CCFEM656B 10/100 LAN+56K Modem CardBus + +pci:v000010B7d00006563* + ID_MODEL_FROM_DATABASE=3cCFEM656B 10/100 LAN+56K Modem CardBus + +pci:v000010B7d00006563sv000010B7sd0000656B* + ID_MODEL_FROM_DATABASE=3CCFEM656 10/100 LAN+56K Modem CardBus + +pci:v000010B7d00006564* + ID_MODEL_FROM_DATABASE=3cXFEM656C 10/100 LAN+Winmodem CardBus [Tornado] + +pci:v000010B7d00007646* + ID_MODEL_FROM_DATABASE=3cSOHO100-TX Hurricane + +pci:v000010B7d00007770* + ID_MODEL_FROM_DATABASE=3CRWE777 PCI Wireless Adapter [Airconnect] + +pci:v000010B7d00007940* + ID_MODEL_FROM_DATABASE=3c803 FDDILink UTP Controller + +pci:v000010B7d00007980* + ID_MODEL_FROM_DATABASE=3c804 FDDILink SAS Controller + +pci:v000010B7d00007990* + ID_MODEL_FROM_DATABASE=3c805 FDDILink DAS Controller + +pci:v000010B7d000080EB* + ID_MODEL_FROM_DATABASE=3c940B 10/100/1000Base-T + +pci:v000010B7d00008811* + ID_MODEL_FROM_DATABASE=Token ring + +pci:v000010B7d00009000* + ID_MODEL_FROM_DATABASE=3c900 10BaseT [Boomerang] + +pci:v000010B7d00009001* + ID_MODEL_FROM_DATABASE=3c900 10Mbps Combo [Boomerang] + +pci:v000010B7d00009004* + ID_MODEL_FROM_DATABASE=3c900B-TPO Etherlink XL [Cyclone] + +pci:v000010B7d00009004sv000010B7sd00009004* + ID_MODEL_FROM_DATABASE=3C900B-TPO Etherlink XL TPO 10Mb + +pci:v000010B7d00009005* + ID_MODEL_FROM_DATABASE=3c900B-Combo Etherlink XL [Cyclone] + +pci:v000010B7d00009005sv000010B7sd00009005* + ID_MODEL_FROM_DATABASE=3C900B-Combo Etherlink XL Combo + +pci:v000010B7d00009006* + ID_MODEL_FROM_DATABASE=3c900B-TPC Etherlink XL [Cyclone] + +pci:v000010B7d0000900A* + ID_MODEL_FROM_DATABASE=3c900B-FL 10base-FL [Cyclone] + +pci:v000010B7d00009050* + ID_MODEL_FROM_DATABASE=3c905 100BaseTX [Boomerang] + +pci:v000010B7d00009051* + ID_MODEL_FROM_DATABASE=3c905 100BaseT4 [Boomerang] + +pci:v000010B7d00009054* + ID_MODEL_FROM_DATABASE=3C905B-TX Fast Etherlink XL PCI + +pci:v000010B7d00009054sv000010B7sd00009054* + ID_MODEL_FROM_DATABASE=3C905B-TX Fast Etherlink XL PCI + +pci:v000010B7d00009055* + ID_MODEL_FROM_DATABASE=3c905B 100BaseTX [Cyclone] + +pci:v000010B7d00009055sv00001028sd00000080* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000081* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000082* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000083* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000084* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000085* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000086* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000087* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000088* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000089* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000090* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000091* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000092* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000093* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000094* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000095* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000096* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000097* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000098* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv00001028sd00000099* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009055sv000010B7sd00009055* + ID_MODEL_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 + +pci:v000010B7d00009056* + ID_MODEL_FROM_DATABASE=3c905B-T4 Fast EtherLink XL [Cyclone] + +pci:v000010B7d00009058* + ID_MODEL_FROM_DATABASE=3c905B Deluxe Etherlink 10/100/BNC [Cyclone] + +pci:v000010B7d0000905A* + ID_MODEL_FROM_DATABASE=3c905B-FX Fast Etherlink XL FX 100baseFx [Cyclone] + +pci:v000010B7d00009200* + ID_MODEL_FROM_DATABASE=3c905C-TX/TX-M [Tornado] + +pci:v000010B7d00009200sv00001028sd00000095* + ID_MODEL_FROM_DATABASE=3C920 Integrated Fast Ethernet Controller + +pci:v000010B7d00009200sv00001028sd00000097* + ID_MODEL_FROM_DATABASE=3C920 Integrated Fast Ethernet Controller + +pci:v000010B7d00009200sv00001028sd000000B4* + ID_MODEL_FROM_DATABASE=OptiPlex GX110 + +pci:v000010B7d00009200sv00001028sd000000D8* + ID_MODEL_FROM_DATABASE=Precision 530 + +pci:v000010B7d00009200sv00001028sd000000FE* + ID_MODEL_FROM_DATABASE=Optiplex GX240 + +pci:v000010B7d00009200sv00001028sd0000012A* + ID_MODEL_FROM_DATABASE=3C920 Integrated Fast Ethernet Controller [Latitude C640] + +pci:v000010B7d00009200sv000010B7sd00001000* + ID_MODEL_FROM_DATABASE=3C905CX-TX/TX-M Fast Etherlink for PC Management NIC + +pci:v000010B7d00009200sv000010B7sd00007000* + ID_MODEL_FROM_DATABASE=10/100 Mini PCI Ethernet Adapter + +pci:v000010B7d00009200sv000010F1sd00002466* + ID_MODEL_FROM_DATABASE=Tiger MPX S2466 (3C920 Integrated Fast Ethernet Controller) + +pci:v000010B7d00009200sv0000144Dsd0000C005* + ID_MODEL_FROM_DATABASE=X10 Laptop + +pci:v000010B7d00009201* + ID_MODEL_FROM_DATABASE=3C920B-EMB Integrated Fast Ethernet Controller [Tornado] + +pci:v000010B7d00009201sv00001043sd000080AB* + ID_MODEL_FROM_DATABASE=A7N8X Deluxe onboard 3C920B-EMB Integrated Fast Ethernet Controller + +pci:v000010B7d00009202* + ID_MODEL_FROM_DATABASE=3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller + +pci:v000010B7d00009210* + ID_MODEL_FROM_DATABASE=3C920B-EMB-WNM Integrated Fast Ethernet Controller + +pci:v000010B7d00009300* + ID_MODEL_FROM_DATABASE=3CSOHO100B-TX 910-A01 [tulip] + +pci:v000010B7d00009800* + ID_MODEL_FROM_DATABASE=3c980-TX Fast Etherlink XL Server Adapter [Cyclone] + +pci:v000010B7d00009800sv000010B7sd00009800* + ID_MODEL_FROM_DATABASE=3c980-TX Fast Etherlink XL Server Adapter + +pci:v000010B7d00009805* + ID_MODEL_FROM_DATABASE=3c980-C 10/100baseTX NIC [Python-T] + +pci:v000010B7d00009805sv000010B7sd00001201* + ID_MODEL_FROM_DATABASE=EtherLink Server 10/100 Dual Port A + +pci:v000010B7d00009805sv000010B7sd00001202* + ID_MODEL_FROM_DATABASE=EtherLink Server 10/100 Dual Port B + +pci:v000010B7d00009805sv000010B7sd00009805* + ID_MODEL_FROM_DATABASE=3c980 10/100baseTX NIC [Python-T] + +pci:v000010B7d00009805sv000010F1sd00002462* + ID_MODEL_FROM_DATABASE=Thunder K7 S2462 + +pci:v000010B7d00009900* + ID_MODEL_FROM_DATABASE=3C990-TX [Typhoon] + +pci:v000010B7d00009902* + ID_MODEL_FROM_DATABASE=3CR990-TX-95 [Typhoon 56-bit] + +pci:v000010B7d00009903* + ID_MODEL_FROM_DATABASE=3CR990-TX-97 [Typhoon 168-bit] + +pci:v000010B7d00009904* + ID_MODEL_FROM_DATABASE=3C990B-TX-M/3C990BSVR [Typhoon2] + +pci:v000010B7d00009904sv000010B7sd00001000* + ID_MODEL_FROM_DATABASE=3CR990B-TX-M [Typhoon2] + +pci:v000010B7d00009904sv000010B7sd00002000* + ID_MODEL_FROM_DATABASE=3CR990BSVR [Typhoon2 Server] + +pci:v000010B7d00009905* + ID_MODEL_FROM_DATABASE=3CR990-FX-95/97/95 [Typhon Fiber] + +pci:v000010B7d00009905sv000010B7sd00001101* + ID_MODEL_FROM_DATABASE=3CR990-FX-95 [Typhoon Fiber 56-bit] + +pci:v000010B7d00009905sv000010B7sd00001102* + ID_MODEL_FROM_DATABASE=3CR990-FX-97 [Typhoon Fiber 168-bit] + +pci:v000010B7d00009905sv000010B7sd00002101* + ID_MODEL_FROM_DATABASE=3CR990-FX-95 Server [Typhoon Fiber 56-bit] + +pci:v000010B7d00009905sv000010B7sd00002102* + ID_MODEL_FROM_DATABASE=3CR990-FX-97 Server [Typhoon Fiber 168-bit] + +pci:v000010B7d00009908* + ID_MODEL_FROM_DATABASE=3CR990SVR95 [Typhoon Server 56-bit] + +pci:v000010B7d00009909* + ID_MODEL_FROM_DATABASE=3CR990SVR97 [Typhoon Server 168-bit] + +pci:v000010B7d0000990A* + ID_MODEL_FROM_DATABASE=3C990SVR [Typhoon Server] + +pci:v000010B7d0000990B* + ID_MODEL_FROM_DATABASE=3C990SVR [Typhoon Server] + +pci:v000010B8* + ID_VENDOR_FROM_DATABASE=Standard Microsystems Corp [SMC] + +pci:v000010B8d00000005* + ID_MODEL_FROM_DATABASE=83c170 EPIC/100 Fast Ethernet Adapter + +pci:v000010B8d00000005sv00001055sd0000E000* + ID_MODEL_FROM_DATABASE=LANEPIC 10/100 [EVB171Q-PCI] + +pci:v000010B8d00000005sv00001055sd0000E002* + ID_MODEL_FROM_DATABASE=LANEPIC 10/100 [EVB171G-PCI] + +pci:v000010B8d00000005sv000010B8sd0000A011* + ID_MODEL_FROM_DATABASE=EtherPower II 10/100 + +pci:v000010B8d00000005sv000010B8sd0000A014* + ID_MODEL_FROM_DATABASE=EtherPower II 10/100 + +pci:v000010B8d00000005sv000010B8sd0000A015* + ID_MODEL_FROM_DATABASE=EtherPower II 10/100 + +pci:v000010B8d00000005sv000010B8sd0000A016* + ID_MODEL_FROM_DATABASE=EtherPower II 10/100 + +pci:v000010B8d00000005sv000010B8sd0000A017* + ID_MODEL_FROM_DATABASE=EtherPower II 10/100 + +pci:v000010B8d00000006* + ID_MODEL_FROM_DATABASE=83c175 EPIC/100 Fast Ethernet Adapter + +pci:v000010B8d00000006sv00001055sd0000E100* + ID_MODEL_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter + +pci:v000010B8d00000006sv00001055sd0000E102* + ID_MODEL_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter + +pci:v000010B8d00000006sv00001055sd0000E300* + ID_MODEL_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter + +pci:v000010B8d00000006sv00001055sd0000E302* + ID_MODEL_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter + +pci:v000010B8d00000006sv000010B8sd0000A012* + ID_MODEL_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter + +pci:v000010B8d00000006sv000013A2sd00008002* + ID_MODEL_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter + +pci:v000010B8d00000006sv000013A2sd00008006* + ID_MODEL_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter + +pci:v000010B8d00001000* + ID_MODEL_FROM_DATABASE=FDC 37c665 + +pci:v000010B8d00001001* + ID_MODEL_FROM_DATABASE=FDC 37C922 + +pci:v000010B8d0000A011* + ID_MODEL_FROM_DATABASE=83C170QF + +pci:v000010B8d0000B106* + ID_MODEL_FROM_DATABASE=SMC34C90 + +pci:v000010B9* + ID_VENDOR_FROM_DATABASE=ULi Electronics Inc. + +pci:v000010B9d00000101* + ID_MODEL_FROM_DATABASE=CMI8338/C3DX PCI Audio Device + +pci:v000010B9d00000111* + ID_MODEL_FROM_DATABASE=C-Media CMI8738/C3DX Audio Device (OEM) + +pci:v000010B9d00000111sv000010B9sd00000111* + ID_MODEL_FROM_DATABASE=C-Media CMI8738/C3DX Audio Device (OEM) + +pci:v000010B9d00000780* + ID_MODEL_FROM_DATABASE=Multi-IO Card + +pci:v000010B9d00000782* + ID_MODEL_FROM_DATABASE=Multi-IO Card + +pci:v000010B9d00001435* + ID_MODEL_FROM_DATABASE=M1435 + +pci:v000010B9d00001445* + ID_MODEL_FROM_DATABASE=M1445 + +pci:v000010B9d00001449* + ID_MODEL_FROM_DATABASE=M1449 + +pci:v000010B9d00001451* + ID_MODEL_FROM_DATABASE=M1451 + +pci:v000010B9d00001461* + ID_MODEL_FROM_DATABASE=M1461 + +pci:v000010B9d00001489* + ID_MODEL_FROM_DATABASE=M1489 + +pci:v000010B9d00001511* + ID_MODEL_FROM_DATABASE=M1511 [Aladdin] + +pci:v000010B9d00001512* + ID_MODEL_FROM_DATABASE=M1512 [Aladdin] + +pci:v000010B9d00001513* + ID_MODEL_FROM_DATABASE=M1513 [Aladdin] + +pci:v000010B9d00001521* + ID_MODEL_FROM_DATABASE=M1521 [Aladdin III] + +pci:v000010B9d00001521sv000010B9sd00001521* + ID_MODEL_FROM_DATABASE=ALI M1521 Aladdin III CPU Bridge + +pci:v000010B9d00001523* + ID_MODEL_FROM_DATABASE=M1523 + +pci:v000010B9d00001523sv000010B9sd00001523* + ID_MODEL_FROM_DATABASE=ALI M1523 ISA Bridge + +pci:v000010B9d00001531* + ID_MODEL_FROM_DATABASE=M1531 [Aladdin IV] + +pci:v000010B9d00001533* + ID_MODEL_FROM_DATABASE=M1533/M1535/M1543 PCI to ISA Bridge [Aladdin IV/V/V+] + +pci:v000010B9d00001533sv00001014sd0000053B* + ID_MODEL_FROM_DATABASE=ThinkPad R40e + +pci:v000010B9d00001533sv000010B9sd00001533* + ID_MODEL_FROM_DATABASE=ALi M1533 Aladdin IV/V ISA Bridge + +pci:v000010B9d00001541* + ID_MODEL_FROM_DATABASE=M1541 + +pci:v000010B9d00001541sv000010B9sd00001541* + ID_MODEL_FROM_DATABASE=ALI M1541 Aladdin V/V+ AGP System Controller + +pci:v000010B9d00001543* + ID_MODEL_FROM_DATABASE=M1543 + +pci:v000010B9d00001563* + ID_MODEL_FROM_DATABASE=M1563 HyperTransport South Bridge + +pci:v000010B9d00001563sv000010B9sd00001563* + ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard + +pci:v000010B9d00001563sv00001849sd00001563* + ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard + +pci:v000010B9d00001573* + ID_MODEL_FROM_DATABASE=PCI to LPC Controller + +pci:v000010B9d00001575* + ID_MODEL_FROM_DATABASE=M1575 South Bridge + +pci:v000010B9d00001621* + ID_MODEL_FROM_DATABASE=M1621 + +pci:v000010B9d00001631* + ID_MODEL_FROM_DATABASE=ALI M1631 PCI North Bridge Aladdin Pro III + +pci:v000010B9d00001632* + ID_MODEL_FROM_DATABASE=M1632M Northbridge+Trident + +pci:v000010B9d00001641* + ID_MODEL_FROM_DATABASE=ALI M1641 PCI North Bridge Aladdin Pro IV + +pci:v000010B9d00001644* + ID_MODEL_FROM_DATABASE=M1644/M1644T Northbridge+Trident + +pci:v000010B9d00001646* + ID_MODEL_FROM_DATABASE=M1646 Northbridge+Trident + +pci:v000010B9d00001647* + ID_MODEL_FROM_DATABASE=M1647 Northbridge [MAGiK 1 / MobileMAGiK 1] + +pci:v000010B9d00001651* + ID_MODEL_FROM_DATABASE=M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM] + +pci:v000010B9d00001671* + ID_MODEL_FROM_DATABASE=M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR] + +pci:v000010B9d00001672* + ID_MODEL_FROM_DATABASE=M1672 Northbridge [CyberALADDiN-P4] + +pci:v000010B9d00001681* + ID_MODEL_FROM_DATABASE=M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR] + +pci:v000010B9d00001687* + ID_MODEL_FROM_DATABASE=M1687 K8 Northbridge [AGP8X and HyperTransport] + +pci:v000010B9d00001689* + ID_MODEL_FROM_DATABASE=M1689 K8 Northbridge [Super K8 Single Chip] + +pci:v000010B9d00001695* + ID_MODEL_FROM_DATABASE=M1695 K8 Northbridge [PCI Express and HyperTransport] + +pci:v000010B9d00001697* + ID_MODEL_FROM_DATABASE=M1697 HTT Host Bridge + +pci:v000010B9d00003141* + ID_MODEL_FROM_DATABASE=M3141 + +pci:v000010B9d00003143* + ID_MODEL_FROM_DATABASE=M3143 + +pci:v000010B9d00003145* + ID_MODEL_FROM_DATABASE=M3145 + +pci:v000010B9d00003147* + ID_MODEL_FROM_DATABASE=M3147 + +pci:v000010B9d00003149* + ID_MODEL_FROM_DATABASE=M3149 + +pci:v000010B9d00003151* + ID_MODEL_FROM_DATABASE=M3151 + +pci:v000010B9d00003307* + ID_MODEL_FROM_DATABASE=M3307 + +pci:v000010B9d00003309* + ID_MODEL_FROM_DATABASE=M3309 + +pci:v000010B9d00003323* + ID_MODEL_FROM_DATABASE=M3325 Video/Audio Decoder + +pci:v000010B9d00005212* + ID_MODEL_FROM_DATABASE=M4803 + +pci:v000010B9d00005215* + ID_MODEL_FROM_DATABASE=MS4803 + +pci:v000010B9d00005217* + ID_MODEL_FROM_DATABASE=M5217H + +pci:v000010B9d00005219* + ID_MODEL_FROM_DATABASE=M5219 + +pci:v000010B9d00005225* + ID_MODEL_FROM_DATABASE=M5225 + +pci:v000010B9d00005228* + ID_MODEL_FROM_DATABASE=M5228 ALi ATA/RAID Controller + +pci:v000010B9d00005229* + ID_MODEL_FROM_DATABASE=M5229 IDE + +pci:v000010B9d00005229sv00001014sd0000050F* + ID_MODEL_FROM_DATABASE=ThinkPad R30 + +pci:v000010B9d00005229sv00001014sd0000053D* + ID_MODEL_FROM_DATABASE=ThinkPad R40e + +pci:v000010B9d00005229sv0000103Csd00000024* + ID_MODEL_FROM_DATABASE=Pavilion ze4400 builtin IDE + +pci:v000010B9d00005229sv0000103Csd00000025* + ID_MODEL_FROM_DATABASE=XE4500 Notebook + +pci:v000010B9d00005229sv00001043sd00008053* + ID_MODEL_FROM_DATABASE=A7A266 Motherboard IDE + +pci:v000010B9d00005229sv00001849sd00005229* + ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard IDE (PATA) + +pci:v000010B9d00005235* + ID_MODEL_FROM_DATABASE=M5225 + +pci:v000010B9d00005237* + ID_MODEL_FROM_DATABASE=USB 1.1 Controller + +pci:v000010B9d00005237sv00001014sd00000540* + ID_MODEL_FROM_DATABASE=ThinkPad R40e + +pci:v000010B9d00005237sv0000103Csd00000024* + ID_MODEL_FROM_DATABASE=Pavilion ze4400 builtin USB + +pci:v000010B9d00005237sv0000103Csd00000025* + ID_MODEL_FROM_DATABASE=XE4500 Notebook + +pci:v000010B9d00005237sv0000104Dsd0000810F* + ID_MODEL_FROM_DATABASE=VAIO PCG-U1 USB/OHCI Revision 1.0 + +pci:v000010B9d00005237sv000010B9sd00005237* + ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard + +pci:v000010B9d00005237sv00001849sd00005237* + ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard + +pci:v000010B9d00005239* + ID_MODEL_FROM_DATABASE=USB 2.0 Controller + +pci:v000010B9d00005239sv000010B9sd00005239* + ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard + +pci:v000010B9d00005239sv00001849sd00005239* + ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard + +pci:v000010B9d00005243* + ID_MODEL_FROM_DATABASE=M1541 PCI to AGP Controller + +pci:v000010B9d00005246* + ID_MODEL_FROM_DATABASE=AGP8X Controller + +pci:v000010B9d00005247* + ID_MODEL_FROM_DATABASE=PCI to AGP Controller + +pci:v000010B9d00005249* + ID_MODEL_FROM_DATABASE=M5249 HTT to PCI Bridge + +pci:v000010B9d0000524B* + ID_MODEL_FROM_DATABASE=PCI Express Root Port + +pci:v000010B9d0000524C* + ID_MODEL_FROM_DATABASE=PCI Express Root Port + +pci:v000010B9d0000524D* + ID_MODEL_FROM_DATABASE=PCI Express Root Port + +pci:v000010B9d0000524E* + ID_MODEL_FROM_DATABASE=PCI Express Root Port + +pci:v000010B9d00005251* + ID_MODEL_FROM_DATABASE=M5251 P1394 OHCI 1.0 Controller + +pci:v000010B9d00005253* + ID_MODEL_FROM_DATABASE=M5253 P1394 OHCI 1.1 Controller + +pci:v000010B9d00005261* + ID_MODEL_FROM_DATABASE=M5261 Ethernet Controller + +pci:v000010B9d00005263* + ID_MODEL_FROM_DATABASE=ULi 1689,1573 integrated ethernet. + +pci:v000010B9d00005281* + ID_MODEL_FROM_DATABASE=ALi M5281 Serial ATA / RAID Host Controller + +pci:v000010B9d00005287* + ID_MODEL_FROM_DATABASE=ULi 5287 SATA + +pci:v000010B9d00005288* + ID_MODEL_FROM_DATABASE=ULi M5288 SATA + +pci:v000010B9d00005288sv00001043sd00008056* + ID_MODEL_FROM_DATABASE=A8R-MVP Mainboard + +pci:v000010B9d00005289* + ID_MODEL_FROM_DATABASE=ULi 5289 SATA + +pci:v000010B9d00005450* + ID_MODEL_FROM_DATABASE=Lucent Technologies Soft Modem AMR + +pci:v000010B9d00005451* + ID_MODEL_FROM_DATABASE=M5451 PCI AC-Link Controller Audio Device + +pci:v000010B9d00005451sv00001014sd00000506* + ID_MODEL_FROM_DATABASE=ThinkPad R30 + +pci:v000010B9d00005451sv00001014sd0000053E* + ID_MODEL_FROM_DATABASE=ThinkPad R40e + +pci:v000010B9d00005451sv0000103Csd00000024* + ID_MODEL_FROM_DATABASE=Pavilion ze4400 builtin Audio + +pci:v000010B9d00005451sv0000103Csd00000025* + ID_MODEL_FROM_DATABASE=XE4500 Notebook + +pci:v000010B9d00005453* + ID_MODEL_FROM_DATABASE=M5453 PCI AC-Link Controller Modem Device + +pci:v000010B9d00005455* + ID_MODEL_FROM_DATABASE=M5455 PCI AC-Link Controller Audio Device + +pci:v000010B9d00005455sv000010B9sd00005455* + ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard + +pci:v000010B9d00005455sv00001849sd00000850* + ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard + +pci:v000010B9d00005457* + ID_MODEL_FROM_DATABASE=M5457 AC'97 Modem Controller + +pci:v000010B9d00005457sv00001014sd00000535* + ID_MODEL_FROM_DATABASE=ThinkPad R40e + +pci:v000010B9d00005457sv0000103Csd00000024* + ID_MODEL_FROM_DATABASE=Pavilion ze4400 builtin Modem Device + +pci:v000010B9d00005457sv0000103Csd00000025* + ID_MODEL_FROM_DATABASE=XE4500 Notebook + +pci:v000010B9d00005459* + ID_MODEL_FROM_DATABASE=SmartLink SmartPCI561 56K Modem + +pci:v000010B9d0000545A* + ID_MODEL_FROM_DATABASE=SmartLink SmartPCI563 56K Modem + +pci:v000010B9d00005461* + ID_MODEL_FROM_DATABASE=HD Audio Controller + +pci:v000010B9d00005471* + ID_MODEL_FROM_DATABASE=M5471 Memory Stick Controller + +pci:v000010B9d00005473* + ID_MODEL_FROM_DATABASE=M5473 SD-MMC Controller + +pci:v000010B9d00007101* + ID_MODEL_FROM_DATABASE=M7101 Power Management Controller [PMU] + +pci:v000010B9d00007101sv00001014sd00000510* + ID_MODEL_FROM_DATABASE=ThinkPad R30 + +pci:v000010B9d00007101sv00001014sd0000053C* + ID_MODEL_FROM_DATABASE=ThinkPad R40e + +pci:v000010B9d00007101sv0000103Csd00000024* + ID_MODEL_FROM_DATABASE=Pavilion ze4400 + +pci:v000010B9d00007101sv0000103Csd00000025* + ID_MODEL_FROM_DATABASE=XE4500 Notebook + +pci:v000010B9d00007101sv00001849sd00007101* + ID_MODEL_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard + +pci:v000010BA* + ID_VENDOR_FROM_DATABASE=Mitsubishi Electric Corp. + +pci:v000010BAd00000301* + ID_MODEL_FROM_DATABASE=AccelGraphics AccelECLIPSE + +pci:v000010BAd00000304* + ID_MODEL_FROM_DATABASE=AccelGALAXY A2100 [OEM Evans & Sutherland] + +pci:v000010BAd00000308* + ID_MODEL_FROM_DATABASE=Tornado 3000 [OEM Evans & Sutherland] + +pci:v000010BAd00000308sv000010DDsd00000024* + ID_MODEL_FROM_DATABASE=Tornado 3000 + +pci:v000010BAd00001002* + ID_MODEL_FROM_DATABASE=VG500 [VolumePro Volume Rendering Accelerator] + +pci:v000010BB* + ID_VENDOR_FROM_DATABASE=Dapha Electronics Corporation + +pci:v000010BC* + ID_VENDOR_FROM_DATABASE=Advanced Logic Research + +pci:v000010BD* + ID_VENDOR_FROM_DATABASE=Surecom Technology + +pci:v000010BDd00000E34* + ID_MODEL_FROM_DATABASE=NE-34 + +pci:v000010BE* + ID_VENDOR_FROM_DATABASE=Tseng Labs International Co. + +pci:v000010BF* + ID_VENDOR_FROM_DATABASE=Most Inc + +pci:v000010C0* + ID_VENDOR_FROM_DATABASE=Boca Research Inc. + +pci:v000010C1* + ID_VENDOR_FROM_DATABASE=ICM Co., Ltd. + +pci:v000010C2* + ID_VENDOR_FROM_DATABASE=Auspex Systems Inc. + +pci:v000010C3* + ID_VENDOR_FROM_DATABASE=Samsung Semiconductors, Inc. + +pci:v000010C4* + ID_VENDOR_FROM_DATABASE=Award Software International Inc. + +pci:v000010C5* + ID_VENDOR_FROM_DATABASE=Xerox Corporation + +pci:v000010C6* + ID_VENDOR_FROM_DATABASE=Rambus Inc. + +pci:v000010C7* + ID_VENDOR_FROM_DATABASE=Media Vision + +pci:v000010C8* + ID_VENDOR_FROM_DATABASE=Neomagic Corporation + +pci:v000010C8d00000001* + ID_MODEL_FROM_DATABASE=NM2070 [MagicGraph 128] + +pci:v000010C8d00000002* + ID_MODEL_FROM_DATABASE=NM2090 [MagicGraph 128V] + +pci:v000010C8d00000003* + ID_MODEL_FROM_DATABASE=NM2093 [MagicGraph 128ZV] + +pci:v000010C8d00000004* + ID_MODEL_FROM_DATABASE=NM2160 [MagicGraph 128XD] + +pci:v000010C8d00000004sv00001014sd000000BA* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv00001025sd00001007* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv00001028sd00000074* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv00001028sd00000075* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv00001028sd0000007D* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv00001028sd0000007E* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv00001033sd0000802F* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv0000104Dsd0000801B* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv0000104Dsd0000802F* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv0000104Dsd0000830B* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv000010BAsd00000E00* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv000010C8sd00000004* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv000010CFsd00001029* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv000010F7sd00008308* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv000010F7sd00008309* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv000010F7sd0000830B* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv000010F7sd0000830D* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000004sv000010F7sd00008312* + ID_MODEL_FROM_DATABASE=MagicGraph 128XD + +pci:v000010C8d00000005* + ID_MODEL_FROM_DATABASE=NM2200 [MagicGraph 256AV] + +pci:v000010C8d00000005sv00001014sd000000DD* + ID_MODEL_FROM_DATABASE=ThinkPad 570 + +pci:v000010C8d00000005sv00001028sd00000088* + ID_MODEL_FROM_DATABASE=Latitude CPi A + +pci:v000010C8d00000006* + ID_MODEL_FROM_DATABASE=NM2360 [MagicMedia 256ZX] + +pci:v000010C8d00000006sv00001014sd00000152* + ID_MODEL_FROM_DATABASE=ThinkPad 600X + +pci:v000010C8d00000016* + ID_MODEL_FROM_DATABASE=NM2380 [MagicMedia 256XL+] + +pci:v000010C8d00000016sv000010C8sd00000016* + ID_MODEL_FROM_DATABASE=MagicMedia 256XL+ + +pci:v000010C8d00000025* + ID_MODEL_FROM_DATABASE=NM2230 [MagicGraph 256AV+] + +pci:v000010C8d00000083* + ID_MODEL_FROM_DATABASE=NM2093 [MagicGraph 128ZV+] + +pci:v000010C8d00008005* + ID_MODEL_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio] + +pci:v000010C8d00008005sv00000E11sd0000B0D1* + ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on Discovery + +pci:v000010C8d00008005sv00000E11sd0000B126* + ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on Durango + +pci:v000010C8d00008005sv00001014sd000000DD* + ID_MODEL_FROM_DATABASE=ThinkPad 390/i1720/i1721 + +pci:v000010C8d00008005sv00001025sd00001003* + ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on TravelMate 720 + +pci:v000010C8d00008005sv00001028sd00000088* + ID_MODEL_FROM_DATABASE=Latitude CPi A + +pci:v000010C8d00008005sv00001028sd0000008F* + ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on Colorado Inspiron + +pci:v000010C8d00008005sv0000103Csd00000007* + ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on Voyager II + +pci:v000010C8d00008005sv0000103Csd00000008* + ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on Voyager III + +pci:v000010C8d00008005sv0000103Csd0000000D* + ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on Omnibook 900 + +pci:v000010C8d00008005sv000010C8sd00008005* + ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device on FireAnt + +pci:v000010C8d00008005sv0000110Asd00008005* + ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device + +pci:v000010C8d00008005sv000014C0sd00000004* + ID_MODEL_FROM_DATABASE=MagicMedia 256AV Audio Device + +pci:v000010C8d00008006* + ID_MODEL_FROM_DATABASE=NM2360 [MagicMedia 256ZX Audio] + +pci:v000010C8d00008016* + ID_MODEL_FROM_DATABASE=NM2380 [MagicMedia 256XL+ Audio] + +pci:v000010C9* + ID_VENDOR_FROM_DATABASE=Dataexpert Corporation + +pci:v000010CA* + ID_VENDOR_FROM_DATABASE=Fujitsu Microelectr., Inc. + +pci:v000010CB* + ID_VENDOR_FROM_DATABASE=Omron Corporation + +pci:v000010CC* + ID_VENDOR_FROM_DATABASE=Mai Logic Incorporated + +pci:v000010CCd00000660* + ID_MODEL_FROM_DATABASE=Articia S Host Bridge + +pci:v000010CCd00000661* + ID_MODEL_FROM_DATABASE=Articia S PCI Bridge + +pci:v000010CD* + ID_VENDOR_FROM_DATABASE=Advanced System Products, Inc + +pci:v000010CDd00001100* + ID_MODEL_FROM_DATABASE=ASC1100 + +pci:v000010CDd00001200* + ID_MODEL_FROM_DATABASE=ASC1200 [(abp940) Fast SCSI-II] + +pci:v000010CDd00001300* + ID_MODEL_FROM_DATABASE=ABP940-U / ABP960-U + +pci:v000010CDd00001300sv000010CDsd00001310* + ID_MODEL_FROM_DATABASE=ASC1300 SCSI Adapter + +pci:v000010CDd00001300sv00001195sd00001320* + ID_MODEL_FROM_DATABASE=Ultra-SCSI CardBus PC Card REX CB31 + +pci:v000010CDd00002300* + ID_MODEL_FROM_DATABASE=ABP940-UW + +pci:v000010CDd00002500* + ID_MODEL_FROM_DATABASE=ABP940-U2W + +pci:v000010CDd00002700* + ID_MODEL_FROM_DATABASE=ABP3950-U3W + +pci:v000010CE* + ID_VENDOR_FROM_DATABASE=Radius + +pci:v000010CF* + ID_VENDOR_FROM_DATABASE=Fujitsu Limited. + +pci:v000010CFd000001EF* + ID_MODEL_FROM_DATABASE=PCEA4 PCI-Express Dual Port ESCON Adapter + +pci:v000010CFd00001414* + ID_MODEL_FROM_DATABASE=On-board USB 1.1 companion controller + +pci:v000010CFd00001415* + ID_MODEL_FROM_DATABASE=On-board USB 2.0 EHCI controller + +pci:v000010CFd00001422* + ID_MODEL_FROM_DATABASE=E8410 nVidia graphics adapter + +pci:v000010CFd0000142D* + ID_MODEL_FROM_DATABASE=HD audio (Realtek ALC262) + +pci:v000010CFd00001430* + ID_MODEL_FROM_DATABASE=82566MM Intel 1Gb copper LAN interface + +pci:v000010CFd00001623* + ID_MODEL_FROM_DATABASE=PCEA4 PCI-Express Dual Port ESCON Adapter + +pci:v000010CFd00002001* + ID_MODEL_FROM_DATABASE=mb86605 + +pci:v000010CFd0000200C* + ID_MODEL_FROM_DATABASE=MB86613L IEEE1394 OHCI 1.0 Controller + +pci:v000010CFd00002010* + ID_MODEL_FROM_DATABASE=MB86613S IEEE1394 OHCI 1.1 Controller + +pci:v000010CFd00002019* + ID_MODEL_FROM_DATABASE=MB86295S [CORAL P] + +pci:v000010CFd0000201E* + ID_MODEL_FROM_DATABASE=MB86296S [CORAL PA] + +pci:v000010CFd0000202B* + ID_MODEL_FROM_DATABASE=MB86297A [Carmine Graphics Controller] + +pci:v000010D1* + ID_VENDOR_FROM_DATABASE=FuturePlus Systems Corp. + +pci:v000010D2* + ID_VENDOR_FROM_DATABASE=Molex Incorporated + +pci:v000010D3* + ID_VENDOR_FROM_DATABASE=Jabil Circuit Inc + +pci:v000010D4* + ID_VENDOR_FROM_DATABASE=Hualon Microelectronics + +pci:v000010D5* + ID_VENDOR_FROM_DATABASE=Autologic Inc. + +pci:v000010D6* + ID_VENDOR_FROM_DATABASE=Cetia + +pci:v000010D7* + ID_VENDOR_FROM_DATABASE=BCM Advanced Research + +pci:v000010D8* + ID_VENDOR_FROM_DATABASE=Advanced Peripherals Labs + +pci:v000010D9* + ID_VENDOR_FROM_DATABASE=Macronix, Inc. [MXIC] + +pci:v000010D9d00000431* + ID_MODEL_FROM_DATABASE=MX98715 + +pci:v000010D9d00000512* + ID_MODEL_FROM_DATABASE=MX98713 + +pci:v000010D9d00000531* + ID_MODEL_FROM_DATABASE=MX987x5 + +pci:v000010D9d00000531sv00001186sd00001200* + ID_MODEL_FROM_DATABASE=DFE-540TX ProFAST 10/100 Adapter + +pci:v000010D9d00008625* + ID_MODEL_FROM_DATABASE=MX86250 + +pci:v000010D9d00008626* + ID_MODEL_FROM_DATABASE=Macronix MX86251 + 3Dfx Voodoo Rush + +pci:v000010D9d00008888* + ID_MODEL_FROM_DATABASE=MX86200 + +pci:v000010DA* + ID_VENDOR_FROM_DATABASE=Compaq IPG-Austin + +pci:v000010DAd00000508* + ID_MODEL_FROM_DATABASE=TC4048 Token Ring 4/16 + +pci:v000010DAd00003390* + ID_MODEL_FROM_DATABASE=Tl3c3x9 + +pci:v000010DB* + ID_VENDOR_FROM_DATABASE=Rohm LSI Systems, Inc. + +pci:v000010DC* + ID_VENDOR_FROM_DATABASE=CERN/ECP/EDU + +pci:v000010DCd00000001* + ID_MODEL_FROM_DATABASE=STAR/RD24 SCI-PCI (PMC) + +pci:v000010DCd00000002* + ID_MODEL_FROM_DATABASE=TAR/RD24 SCI-PCI (PMC) + +pci:v000010DCd00000021* + ID_MODEL_FROM_DATABASE=HIPPI destination + +pci:v000010DCd00000022* + ID_MODEL_FROM_DATABASE=HIPPI source + +pci:v000010DCd000010DC* + ID_MODEL_FROM_DATABASE=ATT2C15-3 FPGA + +pci:v000010DD* + ID_VENDOR_FROM_DATABASE=Evans & Sutherland + +pci:v000010DDd00000100* + ID_MODEL_FROM_DATABASE=Lightning 1200 + +pci:v000010DDd00000100sv000010DDsd00000023* + ID_MODEL_FROM_DATABASE=Lightning 1200 15+16M + +pci:v000010DE* + ID_VENDOR_FROM_DATABASE=NVIDIA Corporation + +pci:v000010DEd00000008* + ID_MODEL_FROM_DATABASE=NV1 [EDGE 3D] + +pci:v000010DEd00000009* + ID_MODEL_FROM_DATABASE=NV1 [EDGE 3D] + +pci:v000010DEd00000020* + ID_MODEL_FROM_DATABASE=NV4 [Riva TNT] + +pci:v000010DEd00000020sv00001043sd00000200* + ID_MODEL_FROM_DATABASE=V3400 TNT + +pci:v000010DEd00000020sv00001048sd00000C18* + ID_MODEL_FROM_DATABASE=Erazor II SGRAM + +pci:v000010DEd00000020sv00001048sd00000C19* + ID_MODEL_FROM_DATABASE=Erazor II + +pci:v000010DEd00000020sv00001048sd00000C1B* + ID_MODEL_FROM_DATABASE=Erazor II + +pci:v000010DEd00000020sv00001048sd00000C1C* + ID_MODEL_FROM_DATABASE=Erazor II + +pci:v000010DEd00000020sv00001092sd00000550* + ID_MODEL_FROM_DATABASE=Viper V550 + +pci:v000010DEd00000020sv00001092sd00000552* + ID_MODEL_FROM_DATABASE=Viper V550 + +pci:v000010DEd00000020sv00001092sd00004804* + ID_MODEL_FROM_DATABASE=Viper V550 + +pci:v000010DEd00000020sv00001092sd00004808* + ID_MODEL_FROM_DATABASE=Viper V550 + +pci:v000010DEd00000020sv00001092sd00004810* + ID_MODEL_FROM_DATABASE=Viper V550 + +pci:v000010DEd00000020sv00001092sd00004812* + ID_MODEL_FROM_DATABASE=Viper V550 + +pci:v000010DEd00000020sv00001092sd00004815* + ID_MODEL_FROM_DATABASE=Viper V550 + +pci:v000010DEd00000020sv00001092sd00004820* + ID_MODEL_FROM_DATABASE=Viper V550 with TV out + +pci:v000010DEd00000020sv00001092sd00004822* + ID_MODEL_FROM_DATABASE=Viper V550 + +pci:v000010DEd00000020sv00001092sd00004904* + ID_MODEL_FROM_DATABASE=Viper V550 + +pci:v000010DEd00000020sv00001092sd00004914* + ID_MODEL_FROM_DATABASE=Viper V550 + +pci:v000010DEd00000020sv00001092sd00008225* + ID_MODEL_FROM_DATABASE=Viper V550 + +pci:v000010DEd00000020sv000010B4sd0000273D* + ID_MODEL_FROM_DATABASE=Velocity 4400 + +pci:v000010DEd00000020sv000010B4sd0000273E* + ID_MODEL_FROM_DATABASE=Velocity 4400 + +pci:v000010DEd00000020sv000010B4sd00002740* + ID_MODEL_FROM_DATABASE=Velocity 4400 + +pci:v000010DEd00000020sv000010DEsd00000020* + ID_MODEL_FROM_DATABASE=Riva TNT + +pci:v000010DEd00000020sv00001102sd00001015* + ID_MODEL_FROM_DATABASE=Graphics Blaster CT6710 + +pci:v000010DEd00000020sv00001102sd00001016* + ID_MODEL_FROM_DATABASE=Graphics Blaster RIVA TNT + +pci:v000010DEd00000028* + ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 / TNT2 Pro] + +pci:v000010DEd00000028sv00001043sd00000200* + ID_MODEL_FROM_DATABASE=AGP-V3800 SGRAM + +pci:v000010DEd00000028sv00001043sd00000201* + ID_MODEL_FROM_DATABASE=AGP-V3800 SDRAM + +pci:v000010DEd00000028sv00001043sd00000205* + ID_MODEL_FROM_DATABASE=PCI-V3800 + +pci:v000010DEd00000028sv00001043sd00004000* + ID_MODEL_FROM_DATABASE=AGP-V3800PRO + +pci:v000010DEd00000028sv00001048sd00000C21* + ID_MODEL_FROM_DATABASE=Synergy II + +pci:v000010DEd00000028sv00001048sd00000C28* + ID_MODEL_FROM_DATABASE=Erazor III + +pci:v000010DEd00000028sv00001048sd00000C29* + ID_MODEL_FROM_DATABASE=Erazor III + +pci:v000010DEd00000028sv00001048sd00000C2A* + ID_MODEL_FROM_DATABASE=Erazor III + +pci:v000010DEd00000028sv00001048sd00000C2B* + ID_MODEL_FROM_DATABASE=Erazor III + +pci:v000010DEd00000028sv00001048sd00000C31* + ID_MODEL_FROM_DATABASE=Erazor III Pro + +pci:v000010DEd00000028sv00001048sd00000C32* + ID_MODEL_FROM_DATABASE=Erazor III Pro + +pci:v000010DEd00000028sv00001048sd00000C33* + ID_MODEL_FROM_DATABASE=Erazor III Pro + +pci:v000010DEd00000028sv00001048sd00000C34* + ID_MODEL_FROM_DATABASE=Erazor III Pro + +pci:v000010DEd00000028sv0000107Dsd00002134* + ID_MODEL_FROM_DATABASE=WinFast 3D S320 II + TV-Out + +pci:v000010DEd00000028sv00001092sd00004804* + ID_MODEL_FROM_DATABASE=Viper V770 + +pci:v000010DEd00000028sv00001092sd00004A00* + ID_MODEL_FROM_DATABASE=Viper V770 + +pci:v000010DEd00000028sv00001092sd00004A02* + ID_MODEL_FROM_DATABASE=Viper V770 Ultra + +pci:v000010DEd00000028sv00001092sd00005A00* + ID_MODEL_FROM_DATABASE=RIVA TNT2/TNT2 Pro + +pci:v000010DEd00000028sv00001092sd00005A40* + ID_MODEL_FROM_DATABASE=Viper V770D AGP + +pci:v000010DEd00000028sv00001092sd00006A02* + ID_MODEL_FROM_DATABASE=Viper V770 Ultra + +pci:v000010DEd00000028sv00001092sd00007A02* + ID_MODEL_FROM_DATABASE=Viper V770 Ultra + +pci:v000010DEd00000028sv000010DEsd00000005* + ID_MODEL_FROM_DATABASE=RIVA TNT2 Pro + +pci:v000010DEd00000028sv000010DEsd0000000F* + ID_MODEL_FROM_DATABASE=Compaq NVIDIA TNT2 Pro + +pci:v000010DEd00000028sv00001102sd00001020* + ID_MODEL_FROM_DATABASE=3D Blaster RIVA TNT2 + +pci:v000010DEd00000028sv00001102sd00001026* + ID_MODEL_FROM_DATABASE=3D Blaster RIVA TNT2 Digital + +pci:v000010DEd00000028sv00001462sd00008806* + ID_MODEL_FROM_DATABASE=MS-8806 AGPhantom Graphics Card + +pci:v000010DEd00000028sv000014AFsd00005810* + ID_MODEL_FROM_DATABASE=Maxi Gamer Xentor + +pci:v000010DEd00000029* + ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Ultra] + +pci:v000010DEd00000029sv00001043sd00000200* + ID_MODEL_FROM_DATABASE=AGP-V3800 Deluxe + +pci:v000010DEd00000029sv00001043sd00000201* + ID_MODEL_FROM_DATABASE=AGP-V3800 Ultra SDRAM + +pci:v000010DEd00000029sv00001043sd00000205* + ID_MODEL_FROM_DATABASE=PCI-V3800 Ultra + +pci:v000010DEd00000029sv00001048sd00000C2E* + ID_MODEL_FROM_DATABASE=Erazor III Ultra + +pci:v000010DEd00000029sv00001048sd00000C2F* + ID_MODEL_FROM_DATABASE=Erazor III Ultra + +pci:v000010DEd00000029sv00001048sd00000C30* + ID_MODEL_FROM_DATABASE=Erazor III Ultra + +pci:v000010DEd00000029sv00001102sd00001021* + ID_MODEL_FROM_DATABASE=3D Blaster RIVA TNT2 Ultra + +pci:v000010DEd00000029sv00001102sd00001029* + ID_MODEL_FROM_DATABASE=3D Blaster RIVA TNT2 Ultra + +pci:v000010DEd00000029sv00001102sd0000102F* + ID_MODEL_FROM_DATABASE=3D Blaster RIVA TNT2 Ultra + +pci:v000010DEd00000029sv000014AFsd00005820* + ID_MODEL_FROM_DATABASE=Maxi Gamer Xentor 32 + +pci:v000010DEd00000029sv00004843sd00004F34* + ID_MODEL_FROM_DATABASE=Dynamite + +pci:v000010DEd0000002A* + ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2] + +pci:v000010DEd0000002B* + ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2] + +pci:v000010DEd0000002C* + ID_MODEL_FROM_DATABASE=NV5 [Vanta / Vanta LT] + +pci:v000010DEd0000002Csv00001043sd00000200* + ID_MODEL_FROM_DATABASE=AGP-V3800 Combat SDRAM + +pci:v000010DEd0000002Csv00001043sd00000201* + ID_MODEL_FROM_DATABASE=AGP-V3800 Combat + +pci:v000010DEd0000002Csv00001048sd00000C20* + ID_MODEL_FROM_DATABASE=TNT2 Vanta + +pci:v000010DEd0000002Csv00001048sd00000C21* + ID_MODEL_FROM_DATABASE=TNT2 Vanta + +pci:v000010DEd0000002Csv00001048sd00000C25* + ID_MODEL_FROM_DATABASE=TNT2 Vanta 16MB + +pci:v000010DEd0000002Csv00001092sd00006820* + ID_MODEL_FROM_DATABASE=Viper V730 + +pci:v000010DEd0000002Csv00001102sd00001031* + ID_MODEL_FROM_DATABASE=CT6938 VANTA 8MB + +pci:v000010DEd0000002Csv00001102sd00001034* + ID_MODEL_FROM_DATABASE=CT6894 VANTA 16MB + +pci:v000010DEd0000002Csv000014AFsd00005008* + ID_MODEL_FROM_DATABASE=Maxi Gamer Phoenix 2 + +pci:v000010DEd0000002D* + ID_MODEL_FROM_DATABASE=NV5 [Riva TNT2 Model 64 / Model 64 Pro] + +pci:v000010DEd0000002Dsv00001043sd00000200* + ID_MODEL_FROM_DATABASE=AGP-V3800M + +pci:v000010DEd0000002Dsv00001043sd00000201* + ID_MODEL_FROM_DATABASE=AGP-V3800M + +pci:v000010DEd0000002Dsv00001048sd00000C3A* + ID_MODEL_FROM_DATABASE=Erazor III LT + +pci:v000010DEd0000002Dsv00001048sd00000C3B* + ID_MODEL_FROM_DATABASE=Erazor III LT + +pci:v000010DEd0000002Dsv0000107Dsd00002137* + ID_MODEL_FROM_DATABASE=WinFast 3D S325 + +pci:v000010DEd0000002Dsv000010DEsd00000006* + ID_MODEL_FROM_DATABASE=RIVA TNT2 Model 64/Model 64 Pro + +pci:v000010DEd0000002Dsv000010DEsd0000001E* + ID_MODEL_FROM_DATABASE=M64 AGP4x + +pci:v000010DEd0000002Dsv00001102sd00001023* + ID_MODEL_FROM_DATABASE=CT6892 RIVA TNT2 Value + +pci:v000010DEd0000002Dsv00001102sd00001024* + ID_MODEL_FROM_DATABASE=CT6932 RIVA TNT2 Value 32Mb + +pci:v000010DEd0000002Dsv00001102sd0000102C* + ID_MODEL_FROM_DATABASE=CT6931 RIVA TNT2 Value [Jumper] + +pci:v000010DEd0000002Dsv00001102sd00001030* + ID_MODEL_FROM_DATABASE=CT6931 RIVA TNT2 Value + +pci:v000010DEd0000002Dsv0000110Asd0000006F* + ID_MODEL_FROM_DATABASE=GM1000-16 + +pci:v000010DEd0000002Dsv0000110Asd00000081* + ID_MODEL_FROM_DATABASE=GM1000-16 + +pci:v000010DEd0000002Dsv00001462sd00008808* + ID_MODEL_FROM_DATABASE=MSI-8808 + +pci:v000010DEd0000002Dsv000014AFsd00005620* + ID_MODEL_FROM_DATABASE=Gamer Cougar Video Edition + +pci:v000010DEd0000002Dsv00001554sd00001041* + ID_MODEL_FROM_DATABASE=Pixelview RIVA TNT2 M64 + +pci:v000010DEd0000002Dsv00001569sd0000002D* + ID_MODEL_FROM_DATABASE=Palit Microsystems Daytona TNT2 M64 + +pci:v000010DEd00000034* + ID_MODEL_FROM_DATABASE=MCP04 SMBus + +pci:v000010DEd00000035* + ID_MODEL_FROM_DATABASE=MCP04 IDE + +pci:v000010DEd00000036* + ID_MODEL_FROM_DATABASE=MCP04 Serial ATA Controller + +pci:v000010DEd00000037* + ID_MODEL_FROM_DATABASE=MCP04 Ethernet Controller + +pci:v000010DEd00000038* + ID_MODEL_FROM_DATABASE=MCP04 Ethernet Controller + +pci:v000010DEd0000003A* + ID_MODEL_FROM_DATABASE=MCP04 AC'97 Audio Controller + +pci:v000010DEd0000003B* + ID_MODEL_FROM_DATABASE=MCP04 USB Controller + +pci:v000010DEd0000003C* + ID_MODEL_FROM_DATABASE=MCP04 USB Controller + +pci:v000010DEd0000003D* + ID_MODEL_FROM_DATABASE=MCP04 PCI Bridge + +pci:v000010DEd0000003E* + ID_MODEL_FROM_DATABASE=MCP04 Serial ATA Controller + +pci:v000010DEd00000040* + ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 Ultra] + +pci:v000010DEd00000041* + ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800] + +pci:v000010DEd00000041sv00001043sd0000817B* + ID_MODEL_FROM_DATABASE=V9999 Gamer Edition + +pci:v000010DEd00000041sv0000107Dsd00002992* + ID_MODEL_FROM_DATABASE=WinFast A400 + +pci:v000010DEd00000041sv00001458sd0000310F* + ID_MODEL_FROM_DATABASE=Geforce 6800 GV-N6812 + +pci:v000010DEd00000042* + ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 LE] + +pci:v000010DEd00000042sv0000107Dsd0000299B* + ID_MODEL_FROM_DATABASE=WinFast A400 LE + +pci:v000010DEd00000043* + ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 XE] + +pci:v000010DEd00000044* + ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 XT] + +pci:v000010DEd00000045* + ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 GT] + +pci:v000010DEd00000045sv00001458sd00003140* + ID_MODEL_FROM_DATABASE=GV-N68T256D + +pci:v000010DEd00000047* + ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 GS] + +pci:v000010DEd00000047sv00001682sd00002109* + ID_MODEL_FROM_DATABASE=GeForce 6800 GS + +pci:v000010DEd00000048* + ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 XT] + +pci:v000010DEd00000049* + ID_MODEL_FROM_DATABASE=NV40GL + +pci:v000010DEd0000004D* + ID_MODEL_FROM_DATABASE=NV40GL [Quadro FX 4000] + +pci:v000010DEd0000004E* + ID_MODEL_FROM_DATABASE=NV40GL [Quadro FX 4000] + +pci:v000010DEd00000050* + ID_MODEL_FROM_DATABASE=CK804 ISA Bridge + +pci:v000010DEd00000050sv00001043sd0000815A* + ID_MODEL_FROM_DATABASE=K8N4-E or A8N-E Mainboard + +pci:v000010DEd00000050sv000010F1sd00002865* + ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865) + +pci:v000010DEd00000050sv00001458sd00000C11* + ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard + +pci:v000010DEd00000050sv00001462sd00007100* + ID_MODEL_FROM_DATABASE=MSI K8N Diamond + +pci:v000010DEd00000050sv00001462sd00007125* + ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard + +pci:v000010DEd00000050sv0000147Bsd00001C1A* + ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard + +pci:v000010DEd00000050sv00001565sd00003402* + ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard + +pci:v000010DEd00000051* + ID_MODEL_FROM_DATABASE=CK804 ISA Bridge + +pci:v000010DEd00000051sv00001028sd00000225* + ID_MODEL_FROM_DATABASE=PowerEdge T105 ISA Bridge + +pci:v000010DEd00000052* + ID_MODEL_FROM_DATABASE=CK804 SMBus + +pci:v000010DEd00000052sv00001028sd00000225* + ID_MODEL_FROM_DATABASE=PowerEdge T105 SMBus + +pci:v000010DEd00000052sv00001043sd0000815A* + ID_MODEL_FROM_DATABASE=K8N4-E or A8N-E Mainboard + +pci:v000010DEd00000052sv000010F1sd00002865* + ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865) + +pci:v000010DEd00000052sv00001458sd00000C11* + ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard + +pci:v000010DEd00000052sv00001462sd00007100* + ID_MODEL_FROM_DATABASE=MSI K8N Diamond + +pci:v000010DEd00000052sv00001462sd00007125* + ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard + +pci:v000010DEd00000052sv0000147Bsd00001C1A* + ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard + +pci:v000010DEd00000052sv00001565sd00003402* + ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard + +pci:v000010DEd00000053* + ID_MODEL_FROM_DATABASE=CK804 IDE + +pci:v000010DEd00000053sv00001043sd0000815A* + ID_MODEL_FROM_DATABASE=K8N4-E or A8N-E Mainboard + +pci:v000010DEd00000053sv000010F1sd00002865* + ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865) + +pci:v000010DEd00000053sv00001458sd00005002* + ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard + +pci:v000010DEd00000053sv00001462sd00007100* + ID_MODEL_FROM_DATABASE=MSI K8N Diamond + +pci:v000010DEd00000053sv00001462sd00007125* + ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard + +pci:v000010DEd00000053sv0000147Bsd00001C1A* + ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard + +pci:v000010DEd00000053sv00001565sd00003402* + ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard + +pci:v000010DEd00000054* + ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller + +pci:v000010DEd00000054sv00001028sd00000225* + ID_MODEL_FROM_DATABASE=PowerEdge T105 Serial ATA + +pci:v000010DEd00000054sv00001043sd0000815A* + ID_MODEL_FROM_DATABASE=A8N-E Mainboard + +pci:v000010DEd00000054sv000010F1sd00002865* + ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865) + +pci:v000010DEd00000054sv00001458sd0000B003* + ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard + +pci:v000010DEd00000054sv00001462sd00007100* + ID_MODEL_FROM_DATABASE=MSI K8N Diamond + +pci:v000010DEd00000054sv00001462sd00007125* + ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard + +pci:v000010DEd00000054sv0000147Bsd00001C1A* + ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard + +pci:v000010DEd00000054sv00001565sd00005401* + ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard + +pci:v000010DEd00000055* + ID_MODEL_FROM_DATABASE=CK804 Serial ATA Controller + +pci:v000010DEd00000055sv00001028sd00000225* + ID_MODEL_FROM_DATABASE=PowerEdge T105 Serial ATA + +pci:v000010DEd00000055sv00001043sd0000815A* + ID_MODEL_FROM_DATABASE=K8N4-E or A8N-E Mainboard + +pci:v000010DEd00000055sv000010F1sd00002865* + ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865) + +pci:v000010DEd00000055sv00001458sd0000B003* + ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard + +pci:v000010DEd00000055sv00001462sd00007125* + ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard + +pci:v000010DEd00000055sv0000147Bsd00001C1A* + ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard + +pci:v000010DEd00000055sv00001565sd00005401* + ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard + +pci:v000010DEd00000056* + ID_MODEL_FROM_DATABASE=CK804 Ethernet Controller + +pci:v000010DEd00000057* + ID_MODEL_FROM_DATABASE=CK804 Ethernet Controller + +pci:v000010DEd00000057sv00001043sd00008141* + ID_MODEL_FROM_DATABASE=K8N4-E or A8N-E Mainboard + +pci:v000010DEd00000057sv000010DEsd0000CB84* + ID_MODEL_FROM_DATABASE=NF4 Lanparty + +pci:v000010DEd00000057sv000010F1sd00002865* + ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865) + +pci:v000010DEd00000057sv00001458sd0000E000* + ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard + +pci:v000010DEd00000057sv00001462sd00007100* + ID_MODEL_FROM_DATABASE=MSI K8N Diamond + +pci:v000010DEd00000057sv00001462sd00007125* + ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard + +pci:v000010DEd00000057sv0000147Bsd00001C1A* + ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard + +pci:v000010DEd00000057sv00001565sd00002501* + ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard + +pci:v000010DEd00000058* + ID_MODEL_FROM_DATABASE=CK804 AC'97 Modem + +pci:v000010DEd00000059* + ID_MODEL_FROM_DATABASE=CK804 AC'97 Audio Controller + +pci:v000010DEd00000059sv00001043sd0000812A* + ID_MODEL_FROM_DATABASE=K8N4-E or A8N-E Mainboard + +pci:v000010DEd00000059sv000010F1sd00002865* + ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865) + +pci:v000010DEd00000059sv00001462sd00007585* + ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard + +pci:v000010DEd00000059sv0000147Bsd00001C1A* + ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard + +pci:v000010DEd00000059sv00001565sd00008211* + ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard + +pci:v000010DEd0000005A* + ID_MODEL_FROM_DATABASE=CK804 USB Controller + +pci:v000010DEd0000005Asv00001028sd00000225* + ID_MODEL_FROM_DATABASE=PowerEdge T105 onboard USB + +pci:v000010DEd0000005Asv00001043sd0000815A* + ID_MODEL_FROM_DATABASE=K8N4-E or A8N-E Mainboard + +pci:v000010DEd0000005Asv000010F1sd00002865* + ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865) + +pci:v000010DEd0000005Asv00001458sd00005004* + ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard + +pci:v000010DEd0000005Asv00001462sd00007100* + ID_MODEL_FROM_DATABASE=MSI K8N Diamond + +pci:v000010DEd0000005Asv00001462sd00007125* + ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard + +pci:v000010DEd0000005Asv0000147Bsd00001C1A* + ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard + +pci:v000010DEd0000005Asv00001565sd00003402* + ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard + +pci:v000010DEd0000005B* + ID_MODEL_FROM_DATABASE=CK804 USB Controller + +pci:v000010DEd0000005Bsv00001028sd00000225* + ID_MODEL_FROM_DATABASE=PowerEdge T105 onboard USB + +pci:v000010DEd0000005Bsv00001043sd0000815A* + ID_MODEL_FROM_DATABASE=K8N4-E or A8N-E Mainboard + +pci:v000010DEd0000005Bsv000010F1sd00002865* + ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865) + +pci:v000010DEd0000005Bsv00001458sd00005004* + ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard + +pci:v000010DEd0000005Bsv00001462sd00007100* + ID_MODEL_FROM_DATABASE=MSI K8N Diamond + +pci:v000010DEd0000005Bsv00001462sd00007125* + ID_MODEL_FROM_DATABASE=K8N Neo4-F mainboard + +pci:v000010DEd0000005Bsv0000147Bsd00001C1A* + ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard + +pci:v000010DEd0000005Bsv00001565sd00003402* + ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard + +pci:v000010DEd0000005C* + ID_MODEL_FROM_DATABASE=CK804 PCI Bridge + +pci:v000010DEd0000005D* + ID_MODEL_FROM_DATABASE=CK804 PCIE Bridge + +pci:v000010DEd0000005E* + ID_MODEL_FROM_DATABASE=CK804 Memory Controller + +pci:v000010DEd0000005Esv00001028sd00000225* + ID_MODEL_FROM_DATABASE=PowerEdge T105 Memory Controller + +pci:v000010DEd0000005Esv00001043sd0000815A* + ID_MODEL_FROM_DATABASE=A8N-E Mainboard + +pci:v000010DEd0000005Esv000010DEsd0000005E* + ID_MODEL_FROM_DATABASE=ECS Elitegroup NFORCE3-A939 motherboard. + +pci:v000010DEd0000005Esv000010F1sd00002865* + ID_MODEL_FROM_DATABASE=Tomcat K8E (S2865) + +pci:v000010DEd0000005Esv000010F1sd00002891* + ID_MODEL_FROM_DATABASE=Thunder K8SRE Mainboard + +pci:v000010DEd0000005Esv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-K8N Ultra-9 Mainboard + +pci:v000010DEd0000005Esv00001462sd00007100* + ID_MODEL_FROM_DATABASE=K8N Diamond Mainboard + +pci:v000010DEd0000005Esv00001462sd00007125* + ID_MODEL_FROM_DATABASE=K8N Neo4-F Mainboard + +pci:v000010DEd0000005Esv0000147Bsd00001C1A* + ID_MODEL_FROM_DATABASE=KN8-Ultra Mainboard + +pci:v000010DEd0000005Esv00001565sd00003402* + ID_MODEL_FROM_DATABASE=NF4 AM2L Mainboard + +pci:v000010DEd0000005F* + ID_MODEL_FROM_DATABASE=CK804 Memory Controller + +pci:v000010DEd00000060* + ID_MODEL_FROM_DATABASE=nForce2 ISA Bridge + +pci:v000010DEd00000060sv00001043sd000080AD* + ID_MODEL_FROM_DATABASE=A7N8X Mainboard + +pci:v000010DEd00000060sv0000147Bsd00001C02* + ID_MODEL_FROM_DATABASE=NF7-S/NF7 (nVidia-nForce2) 2.X + +pci:v000010DEd00000060sv0000A0A0sd000003BA* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd00000064* + ID_MODEL_FROM_DATABASE=nForce2 SMBus (MCP) + +pci:v000010DEd00000064sv0000147Bsd00001C02* + ID_MODEL_FROM_DATABASE=NF7-S/NF7 (nVidia-nForce2) 2.X + +pci:v000010DEd00000064sv0000A0A0sd000003BB* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd00000065* + ID_MODEL_FROM_DATABASE=nForce2 IDE + +pci:v000010DEd00000065sv000010DEsd00000C11* + ID_MODEL_FROM_DATABASE=nForce 2 EIDE Controller + +pci:v000010DEd00000065sv0000A0A0sd000003B2* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd00000066* + ID_MODEL_FROM_DATABASE=nForce2 Ethernet Controller + +pci:v000010DEd00000066sv00001043sd000080A7* + ID_MODEL_FROM_DATABASE=A7N8X Mainboard onboard nForce2 Ethernet + +pci:v000010DEd00000066sv000010DEsd00000C11* + ID_MODEL_FROM_DATABASE=nForce MCP-T Networking Adapter + +pci:v000010DEd00000066sv0000A0A0sd000003B3* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd00000067* + ID_MODEL_FROM_DATABASE=nForce2 USB Controller + +pci:v000010DEd00000067sv00001043sd00000C11* + ID_MODEL_FROM_DATABASE=A7N8X Mainboard + +pci:v000010DEd00000067sv0000A0A0sd000003B4* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd00000068* + ID_MODEL_FROM_DATABASE=nForce2 USB Controller + +pci:v000010DEd00000068sv00001043sd00000C11* + ID_MODEL_FROM_DATABASE=A7N8X Mainboard + +pci:v000010DEd00000068sv0000A0A0sd000003B4* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd0000006A* + ID_MODEL_FROM_DATABASE=nForce2 AC97 Audio Controler (MCP) + +pci:v000010DEd0000006Asv00001043sd00008095* + ID_MODEL_FROM_DATABASE=nForce2 AC97 Audio Controler (MCP) + +pci:v000010DEd0000006Asv0000A0A0sd00000304* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd0000006B* + ID_MODEL_FROM_DATABASE=nForce Audio Processing Unit + +pci:v000010DEd0000006Bsv000010DEsd0000006B* + ID_MODEL_FROM_DATABASE=nForce2 MCP Audio Processing Unit + +pci:v000010DEd0000006Bsv0000A0A0sd00000304* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd0000006C* + ID_MODEL_FROM_DATABASE=nForce2 External PCI Bridge + +pci:v000010DEd0000006D* + ID_MODEL_FROM_DATABASE=nForce2 PCI Bridge + +pci:v000010DEd0000006E* + ID_MODEL_FROM_DATABASE=nForce2 FireWire (IEEE 1394) Controller + +pci:v000010DEd0000006Esv0000A0A0sd00000306* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd00000080* + ID_MODEL_FROM_DATABASE=MCP2A ISA bridge + +pci:v000010DEd00000080sv0000147Bsd00001C09* + ID_MODEL_FROM_DATABASE=NV7 Motherboard + +pci:v000010DEd00000084* + ID_MODEL_FROM_DATABASE=MCP2A SMBus + +pci:v000010DEd00000084sv0000147Bsd00001C09* + ID_MODEL_FROM_DATABASE=NV7 Motherboard + +pci:v000010DEd00000085* + ID_MODEL_FROM_DATABASE=MCP2A IDE + +pci:v000010DEd00000085sv0000147Bsd00001C09* + ID_MODEL_FROM_DATABASE=NV7 Motherboard + +pci:v000010DEd00000086* + ID_MODEL_FROM_DATABASE=MCP2A Ethernet Controller + +pci:v000010DEd00000087* + ID_MODEL_FROM_DATABASE=MCP2A USB Controller + +pci:v000010DEd00000087sv0000147Bsd00001C09* + ID_MODEL_FROM_DATABASE=NV7 Motherboard + +pci:v000010DEd00000088* + ID_MODEL_FROM_DATABASE=MCP2A USB Controller + +pci:v000010DEd00000088sv0000147Bsd00001C09* + ID_MODEL_FROM_DATABASE=NV7 Motherboard + +pci:v000010DEd0000008A* + ID_MODEL_FROM_DATABASE=MCP2S AC'97 Audio Controller + +pci:v000010DEd0000008Asv0000147Bsd00001C09* + ID_MODEL_FROM_DATABASE=NV7 Motherboard + +pci:v000010DEd0000008B* + ID_MODEL_FROM_DATABASE=MCP2A PCI Bridge + +pci:v000010DEd0000008C* + ID_MODEL_FROM_DATABASE=MCP2A Ethernet Controller + +pci:v000010DEd0000008E* + ID_MODEL_FROM_DATABASE=nForce2 Serial ATA Controller + +pci:v000010DEd00000090* + ID_MODEL_FROM_DATABASE=G70 [GeForce 7800 GTX] + +pci:v000010DEd00000091* + ID_MODEL_FROM_DATABASE=G70 [GeForce 7800 GTX] + +pci:v000010DEd00000092* + ID_MODEL_FROM_DATABASE=G70 [GeForce 7800 GT] + +pci:v000010DEd00000093* + ID_MODEL_FROM_DATABASE=G70 [GeForce 7800 GS] + +pci:v000010DEd00000095* + ID_MODEL_FROM_DATABASE=G70 [GeForce 7800 SLI] + +pci:v000010DEd00000097* + ID_MODEL_FROM_DATABASE=G70 [GeForce GTS 250] + +pci:v000010DEd00000098* + ID_MODEL_FROM_DATABASE=G70M [GeForce Go 7800] + +pci:v000010DEd00000099* + ID_MODEL_FROM_DATABASE=G70M [GeForce Go 7800 GTX] + +pci:v000010DEd0000009D* + ID_MODEL_FROM_DATABASE=G70GL [Quadro FX 4500] + +pci:v000010DEd000000A0* + ID_MODEL_FROM_DATABASE=NV5 [Aladdin TNT2] + +pci:v000010DEd000000A0sv000014AFsd00005810* + ID_MODEL_FROM_DATABASE=Maxi Gamer Xentor + +pci:v000010DEd000000C0* + ID_MODEL_FROM_DATABASE=NV41 [GeForce 6800 GS] + +pci:v000010DEd000000C1* + ID_MODEL_FROM_DATABASE=NV41 [GeForce 6800] + +pci:v000010DEd000000C2* + ID_MODEL_FROM_DATABASE=NV41 [GeForce 6800 LE] + +pci:v000010DEd000000C3* + ID_MODEL_FROM_DATABASE=NV41 [GeForce 6800 XT] + +pci:v000010DEd000000C5* + ID_MODEL_FROM_DATABASE=NV41 + +pci:v000010DEd000000C6* + ID_MODEL_FROM_DATABASE=NV41 + +pci:v000010DEd000000C7* + ID_MODEL_FROM_DATABASE=NV41 + +pci:v000010DEd000000C8* + ID_MODEL_FROM_DATABASE=NV41M [GeForce Go 6800] + +pci:v000010DEd000000C9* + ID_MODEL_FROM_DATABASE=NV41M [GeForce Go 6800 Ultra] + +pci:v000010DEd000000CC* + ID_MODEL_FROM_DATABASE=NV41GLM [Quadro FX Go1400] + +pci:v000010DEd000000CD* + ID_MODEL_FROM_DATABASE=NV41GL [Quadro FX 3450/4000 SDI] + +pci:v000010DEd000000CDsv000010DEsd0000029B* + ID_MODEL_FROM_DATABASE=wx4300 Workstation + +pci:v000010DEd000000CE* + ID_MODEL_FROM_DATABASE=NV41GL [Quadro FX 1400] + +pci:v000010DEd000000CF* + ID_MODEL_FROM_DATABASE=NV41 + +pci:v000010DEd000000D0* + ID_MODEL_FROM_DATABASE=nForce3 LPC Bridge + +pci:v000010DEd000000D1* + ID_MODEL_FROM_DATABASE=nForce3 Host Bridge + +pci:v000010DEd000000D2* + ID_MODEL_FROM_DATABASE=nForce3 AGP Bridge + +pci:v000010DEd000000D3* + ID_MODEL_FROM_DATABASE=CK804 Memory Controller + +pci:v000010DEd000000D4* + ID_MODEL_FROM_DATABASE=nForce3 SMBus + +pci:v000010DEd000000D5* + ID_MODEL_FROM_DATABASE=nForce3 IDE + +pci:v000010DEd000000D6* + ID_MODEL_FROM_DATABASE=nForce3 Ethernet + +pci:v000010DEd000000D7* + ID_MODEL_FROM_DATABASE=nForce3 USB 1.1 + +pci:v000010DEd000000D8* + ID_MODEL_FROM_DATABASE=nForce3 USB 2.0 + +pci:v000010DEd000000D9* + ID_MODEL_FROM_DATABASE=nForce3 Audio + +pci:v000010DEd000000DA* + ID_MODEL_FROM_DATABASE=nForce3 Audio + +pci:v000010DEd000000DD* + ID_MODEL_FROM_DATABASE=nForce3 PCI Bridge + +pci:v000010DEd000000DF* + ID_MODEL_FROM_DATABASE=CK8S Ethernet Controller + +pci:v000010DEd000000DFsv00001043sd000080A7* + ID_MODEL_FROM_DATABASE=K8N-E + +pci:v000010DEd000000DFsv0000105Bsd00000C43* + ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA + +pci:v000010DEd000000DFsv0000147Bsd00001C0B* + ID_MODEL_FROM_DATABASE=NF8 Mainboard + +pci:v000010DEd000000E0* + ID_MODEL_FROM_DATABASE=nForce3 250Gb LPC Bridge + +pci:v000010DEd000000E0sv00001043sd0000813F* + ID_MODEL_FROM_DATABASE=K8N-E + +pci:v000010DEd000000E0sv000010DEsd00000C11* + ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA + +pci:v000010DEd000000E0sv00001462sd00007030* + ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0 + +pci:v000010DEd000000E0sv0000147Bsd00001C0B* + ID_MODEL_FROM_DATABASE=NF8 Mainboard + +pci:v000010DEd000000E0sv00001849sd000000E0* + ID_MODEL_FROM_DATABASE=Motherboard (one of many) + +pci:v000010DEd000000E1* + ID_MODEL_FROM_DATABASE=nForce3 250Gb Host Bridge + +pci:v000010DEd000000E1sv00001043sd0000813F* + ID_MODEL_FROM_DATABASE=K8N-E + +pci:v000010DEd000000E1sv00001462sd00007030* + ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0 + +pci:v000010DEd000000E1sv0000147Bsd00001C0B* + ID_MODEL_FROM_DATABASE=NF8 Mainboard + +pci:v000010DEd000000E1sv00001849sd000000E1* + ID_MODEL_FROM_DATABASE=Motherboard (one of many) + +pci:v000010DEd000000E2* + ID_MODEL_FROM_DATABASE=nForce3 250Gb AGP Host to PCI Bridge + +pci:v000010DEd000000E3* + ID_MODEL_FROM_DATABASE=nForce3 Serial ATA Controller + +pci:v000010DEd000000E3sv00001043sd0000813F* + ID_MODEL_FROM_DATABASE=K8N-E + +pci:v000010DEd000000E3sv0000105Bsd00000C43* + ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA + +pci:v000010DEd000000E3sv0000147Bsd00001C0B* + ID_MODEL_FROM_DATABASE=NF8 Mainboard + +pci:v000010DEd000000E3sv00001849sd000000E3* + ID_MODEL_FROM_DATABASE=Motherboard (one of many) + +pci:v000010DEd000000E4* + ID_MODEL_FROM_DATABASE=nForce 250Gb PCI System Management + +pci:v000010DEd000000E4sv00001043sd0000813F* + ID_MODEL_FROM_DATABASE=K8N-E + +pci:v000010DEd000000E4sv0000105Bsd00000C43* + ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA + +pci:v000010DEd000000E4sv00001462sd00007030* + ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0 + +pci:v000010DEd000000E4sv0000147Bsd00001C0B* + ID_MODEL_FROM_DATABASE=NF8 Mainboard + +pci:v000010DEd000000E4sv00001849sd000000E4* + ID_MODEL_FROM_DATABASE=Motherboard (one of many) + +pci:v000010DEd000000E5* + ID_MODEL_FROM_DATABASE=CK8S Parallel ATA Controller (v2.5) + +pci:v000010DEd000000E5sv00001043sd0000813F* + ID_MODEL_FROM_DATABASE=K8N-E + +pci:v000010DEd000000E5sv0000105Bsd00000C43* + ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA + +pci:v000010DEd000000E5sv00001462sd00007030* + ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0 + +pci:v000010DEd000000E5sv0000147Bsd00001C0B* + ID_MODEL_FROM_DATABASE=NF8 Mainboard + +pci:v000010DEd000000E5sv00001849sd000000E5* + ID_MODEL_FROM_DATABASE=Motherboard (one of many) + +pci:v000010DEd000000E5sv0000F849sd000000E5* + ID_MODEL_FROM_DATABASE=Motherboard (one of many) + +pci:v000010DEd000000E6* + ID_MODEL_FROM_DATABASE=CK8S Ethernet Controller + +pci:v000010DEd000000E7* + ID_MODEL_FROM_DATABASE=CK8S USB Controller + +pci:v000010DEd000000E7sv00001043sd0000813F* + ID_MODEL_FROM_DATABASE=K8N-E + +pci:v000010DEd000000E7sv0000105Bsd00000C43* + ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA + +pci:v000010DEd000000E7sv00001462sd00007030* + ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0 + +pci:v000010DEd000000E7sv0000147Bsd00001C0B* + ID_MODEL_FROM_DATABASE=NF8 Mainboard + +pci:v000010DEd000000E7sv00001849sd000000E7* + ID_MODEL_FROM_DATABASE=Motherboard (one of many) + +pci:v000010DEd000000E8* + ID_MODEL_FROM_DATABASE=nForce3 EHCI USB 2.0 Controller + +pci:v000010DEd000000E8sv00001043sd0000813F* + ID_MODEL_FROM_DATABASE=K8N-E + +pci:v000010DEd000000E8sv0000105Bsd00000C43* + ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA + +pci:v000010DEd000000E8sv00001462sd00007030* + ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0 + +pci:v000010DEd000000E8sv0000147Bsd00001C0B* + ID_MODEL_FROM_DATABASE=NF8 Mainboard + +pci:v000010DEd000000E8sv00001849sd000000E8* + ID_MODEL_FROM_DATABASE=Motherboard (one of many) + +pci:v000010DEd000000EA* + ID_MODEL_FROM_DATABASE=nForce3 250Gb AC'97 Audio Controller + +pci:v000010DEd000000EAsv00001043sd0000819D* + ID_MODEL_FROM_DATABASE=K8N-E + +pci:v000010DEd000000EAsv0000105Bsd00000C43* + ID_MODEL_FROM_DATABASE=Winfast NF3250K8AA + +pci:v000010DEd000000EAsv00001462sd0000B010* + ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0 + +pci:v000010DEd000000EAsv0000147Bsd00001C0B* + ID_MODEL_FROM_DATABASE=NF8 Mainboard + +pci:v000010DEd000000ED* + ID_MODEL_FROM_DATABASE=nForce3 250Gb PCI-to-PCI Bridge + +pci:v000010DEd000000EE* + ID_MODEL_FROM_DATABASE=nForce3 Serial ATA Controller 2 + +pci:v000010DEd000000F1* + ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 GT] + +pci:v000010DEd000000F1sv00001043sd000081A6* + ID_MODEL_FROM_DATABASE=N6600GT TD 128M AGP + +pci:v000010DEd000000F1sv00001043sd000081C6* + ID_MODEL_FROM_DATABASE=N6600GT TD 128M AGP + +pci:v000010DEd000000F1sv00001458sd00003150* + ID_MODEL_FROM_DATABASE=GV-N66T128VP + +pci:v000010DEd000000F1sv00001554sd00001191* + ID_MODEL_FROM_DATABASE=PixelView PV-N43UA (128KD) + +pci:v000010DEd000000F1sv00001682sd00002119* + ID_MODEL_FROM_DATABASE=GeForce 6600 GT AGP + +pci:v000010DEd000000F2* + ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600] + +pci:v000010DEd000000F2sv00001554sd00001194* + ID_MODEL_FROM_DATABASE=PixelView PV-N43AT (256KD) + +pci:v000010DEd000000F2sv00001682sd0000211C* + ID_MODEL_FROM_DATABASE=GeForce 6600 256MB DDR DUAL DVI TV + +pci:v000010DEd000000F3* + ID_MODEL_FROM_DATABASE=NV43 [GeForce 6200] + +pci:v000010DEd000000F4* + ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 LE] + +pci:v000010DEd000000F5* + ID_MODEL_FROM_DATABASE=G71 [GeForce 7800 GS] + +pci:v000010DEd000000F6* + ID_MODEL_FROM_DATABASE=NV43 [GeForce 6800 GS/XT] + +pci:v000010DEd000000F6sv00001682sd0000217E* + ID_MODEL_FROM_DATABASE=XFX GeForce 6800 XTreme 256MB DDR3 AGP + +pci:v000010DEd000000F8* + ID_MODEL_FROM_DATABASE=NV45GL [Quadro FX 3400/4400] + +pci:v000010DEd000000F9* + ID_MODEL_FROM_DATABASE=NV45 [GeForce 6800 GTO] + +pci:v000010DEd000000F9sv000010DEsd000000F9* + ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 GT] + +pci:v000010DEd000000F9sv00001682sd00002120* + ID_MODEL_FROM_DATABASE=GEFORCE 6800 GT PCI-E + +pci:v000010DEd000000FA* + ID_MODEL_FROM_DATABASE=NV36 [GeForce PCX 5750] + +pci:v000010DEd000000FB* + ID_MODEL_FROM_DATABASE=NV35 [GeForce PCX 5900] + +pci:v000010DEd000000FC* + ID_MODEL_FROM_DATABASE=NV37GL [Quadro FX 330/GeForce PCX 5300] + +pci:v000010DEd000000FD* + ID_MODEL_FROM_DATABASE=NV37GL [Quadro PCI-E Series] + +pci:v000010DEd000000FE* + ID_MODEL_FROM_DATABASE=NV38GL [Quadro FX 1300] + +pci:v000010DEd000000FF* + ID_MODEL_FROM_DATABASE=NV18 [GeForce PCX 4300] + +pci:v000010DEd00000100* + ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 SDR] + +pci:v000010DEd00000100sv00001043sd00000200* + ID_MODEL_FROM_DATABASE=AGP-V6600 SGRAM + +pci:v000010DEd00000100sv00001043sd00000201* + ID_MODEL_FROM_DATABASE=AGP-V6600 SDRAM + +pci:v000010DEd00000100sv00001043sd00004008* + ID_MODEL_FROM_DATABASE=AGP-V6600 SGRAM + +pci:v000010DEd00000100sv00001043sd00004009* + ID_MODEL_FROM_DATABASE=AGP-V6600 SDRAM + +pci:v000010DEd00000100sv00001048sd00000C41* + ID_MODEL_FROM_DATABASE=Erazor X + +pci:v000010DEd00000100sv00001048sd00000C43* + ID_MODEL_FROM_DATABASE=ERAZOR X PCI + +pci:v000010DEd00000100sv00001048sd00000C48* + ID_MODEL_FROM_DATABASE=Synergy Force + +pci:v000010DEd00000100sv00001102sd0000102D* + ID_MODEL_FROM_DATABASE=CT6941 GeForce 256 + +pci:v000010DEd00000100sv000014AFsd00005022* + ID_MODEL_FROM_DATABASE=3D Prophet SE + +pci:v000010DEd00000101* + ID_MODEL_FROM_DATABASE=NV10 [GeForce 256 DDR] + +pci:v000010DEd00000101sv00001043sd00000202* + ID_MODEL_FROM_DATABASE=AGP-V6800 DDR + +pci:v000010DEd00000101sv00001043sd0000400A* + ID_MODEL_FROM_DATABASE=AGP-V6800 DDR SGRAM + +pci:v000010DEd00000101sv00001043sd0000400B* + ID_MODEL_FROM_DATABASE=AGP-V6800 DDR SDRAM + +pci:v000010DEd00000101sv00001048sd00000C42* + ID_MODEL_FROM_DATABASE=Erazor X + +pci:v000010DEd00000101sv0000107Dsd00002822* + ID_MODEL_FROM_DATABASE=WinFast GeForce 256 + +pci:v000010DEd00000101sv00001102sd0000102E* + ID_MODEL_FROM_DATABASE=CT6970/CT6971 + +pci:v000010DEd00000101sv000014AFsd00005021* + ID_MODEL_FROM_DATABASE=3D Prophet DDR-DVI + +pci:v000010DEd00000103* + ID_MODEL_FROM_DATABASE=NV10GL [Quadro] + +pci:v000010DEd00000103sv00001048sd00000C40* + ID_MODEL_FROM_DATABASE=GLoria II-64 + +pci:v000010DEd00000103sv00001048sd00000C44* + ID_MODEL_FROM_DATABASE=GLoria II + +pci:v000010DEd00000103sv00001048sd00000C45* + ID_MODEL_FROM_DATABASE=GLoria II + +pci:v000010DEd00000103sv00001048sd00000C4A* + ID_MODEL_FROM_DATABASE=GLoria II-64 Pro + +pci:v000010DEd00000103sv00001048sd00000C4B* + ID_MODEL_FROM_DATABASE=GLoria II-64 Pro DVII + +pci:v000010DEd00000110* + ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] + +pci:v000010DEd00000110sv00001043sd00004015* + ID_MODEL_FROM_DATABASE=AGP-V7100 Pro + +pci:v000010DEd00000110sv00001043sd00004021* + ID_MODEL_FROM_DATABASE=V7100 Deluxe Combo + +pci:v000010DEd00000110sv00001043sd00004031* + ID_MODEL_FROM_DATABASE=V7100 Pro with TV output + +pci:v000010DEd00000110sv00001048sd00000C60* + ID_MODEL_FROM_DATABASE=Gladiac MX + +pci:v000010DEd00000110sv00001048sd00000C61* + ID_MODEL_FROM_DATABASE=Gladiac 511PCI + +pci:v000010DEd00000110sv00001048sd00000C63* + ID_MODEL_FROM_DATABASE=Gladiac 511TV-OUT 32MB + +pci:v000010DEd00000110sv00001048sd00000C64* + ID_MODEL_FROM_DATABASE=Gladiac 511TV-OUT 64MB + +pci:v000010DEd00000110sv00001048sd00000C65* + ID_MODEL_FROM_DATABASE=Gladiac 511TWIN + +pci:v000010DEd00000110sv00001048sd00000C66* + ID_MODEL_FROM_DATABASE=Gladiac 311 + +pci:v000010DEd00000110sv000010B0sd00000001* + ID_MODEL_FROM_DATABASE=GeForce2 MX Jumbo TV + +pci:v000010DEd00000110sv000010DEsd00000091* + ID_MODEL_FROM_DATABASE=Dell OEM GeForce 2 MX 400 + +pci:v000010DEd00000110sv000010DEsd000000A1* + ID_MODEL_FROM_DATABASE=Apple OEM GeForce2 MX + +pci:v000010DEd00000110sv00001462sd00008523* + ID_MODEL_FROM_DATABASE=MS-8852 + +pci:v000010DEd00000110sv00001462sd00008817* + ID_MODEL_FROM_DATABASE=MSI GeForce2 MX400 Pro32S [MS-8817] + +pci:v000010DEd00000110sv000014AFsd00007102* + ID_MODEL_FROM_DATABASE=3D Prophet II MX + +pci:v000010DEd00000110sv000014AFsd00007103* + ID_MODEL_FROM_DATABASE=3D Prophet II MX Dual-Display + +pci:v000010DEd00000110sv00001545sd00000023* + ID_MODEL_FROM_DATABASE=Xtasy Rev. B2 + +pci:v000010DEd00000110sv00001554sd00001081* + ID_MODEL_FROM_DATABASE=MVGA-NVG11AM(400) + +pci:v000010DEd00000111* + ID_MODEL_FROM_DATABASE=NV11 [GeForce2 MX200] + +pci:v000010DEd00000112* + ID_MODEL_FROM_DATABASE=NV11M [GeForce2 Go] + +pci:v000010DEd00000113* + ID_MODEL_FROM_DATABASE=NV11GL [Quadro2 MXR/EX/Go] + +pci:v000010DEd00000140* + ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 GT] + +pci:v000010DEd00000140sv00001458sd00003125* + ID_MODEL_FROM_DATABASE=GV-NX66T128D + +pci:v000010DEd00000140sv00001458sd00003126* + ID_MODEL_FROM_DATABASE=GV-NX66T256DE + +pci:v000010DEd00000140sv00001462sd00008939* + ID_MODEL_FROM_DATABASE=MS-8983 + +pci:v000010DEd00000141* + ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600] + +pci:v000010DEd00000141sv00001043sd000081B0* + ID_MODEL_FROM_DATABASE=EN6600 Silencer + +pci:v000010DEd00000141sv0000107Dsd0000593A* + ID_MODEL_FROM_DATABASE=LR2A22 128MB TV OUT + +pci:v000010DEd00000141sv0000107Dsd0000597B* + ID_MODEL_FROM_DATABASE=WINFAST PX6600 + +pci:v000010DEd00000141sv00001458sd00003124* + ID_MODEL_FROM_DATABASE=GV-NX66128DP Turbo Force Edition + +pci:v000010DEd00000142* + ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 LE] + +pci:v000010DEd00000143* + ID_MODEL_FROM_DATABASE=NV43 [GeForce 6600 VE] + +pci:v000010DEd00000144* + ID_MODEL_FROM_DATABASE=NV43M [GeForce Go 6600] + +pci:v000010DEd00000145* + ID_MODEL_FROM_DATABASE=NV43 [GeForce 6610 XL] + +pci:v000010DEd00000146* + ID_MODEL_FROM_DATABASE=NV43M [GeForce Go6200 TE / 6600 TE] + +pci:v000010DEd00000147* + ID_MODEL_FROM_DATABASE=NV43 [GeForce 6700 XL] + +pci:v000010DEd00000148* + ID_MODEL_FROM_DATABASE=NV43M [GeForce Go 6600] + +pci:v000010DEd00000149* + ID_MODEL_FROM_DATABASE=NV43M [GeForce Go 6600 GT] + +pci:v000010DEd0000014A* + ID_MODEL_FROM_DATABASE=NV43 [Quadro NVS 440] + +pci:v000010DEd0000014B* + ID_MODEL_FROM_DATABASE=NV43 + +pci:v000010DEd0000014D* + ID_MODEL_FROM_DATABASE=NV43GL [Quadro FX 550] + +pci:v000010DEd0000014E* + ID_MODEL_FROM_DATABASE=NV43GL [Quadro FX 540] + +pci:v000010DEd0000014F* + ID_MODEL_FROM_DATABASE=NV43 [GeForce 6200] + +pci:v000010DEd00000150* + ID_MODEL_FROM_DATABASE=NV15 [GeForce2 GTS/Pro] + +pci:v000010DEd00000150sv00001043sd00004016* + ID_MODEL_FROM_DATABASE=V7700 AGP Video Card + +pci:v000010DEd00000150sv00001043sd0000402A* + ID_MODEL_FROM_DATABASE=AGP-V7700 + +pci:v000010DEd00000150sv00001048sd00000C50* + ID_MODEL_FROM_DATABASE=Gladiac + +pci:v000010DEd00000150sv00001048sd00000C52* + ID_MODEL_FROM_DATABASE=Gladiac-64 + +pci:v000010DEd00000150sv0000107Dsd00002840* + ID_MODEL_FROM_DATABASE=WinFast GeForce2 GTS with TV output + +pci:v000010DEd00000150sv0000107Dsd00002842* + ID_MODEL_FROM_DATABASE=WinFast GeForce 2 Pro + +pci:v000010DEd00000150sv000010DEsd0000002E* + ID_MODEL_FROM_DATABASE=GeForce2 GTS + +pci:v000010DEd00000150sv00001462sd0000815A* + ID_MODEL_FROM_DATABASE=MS-8815 + +pci:v000010DEd00000150sv00001462sd00008831* + ID_MODEL_FROM_DATABASE=Creative GeForce2 Pro + +pci:v000010DEd00000151* + ID_MODEL_FROM_DATABASE=NV15 [GeForce2 Ti] + +pci:v000010DEd00000151sv00001043sd0000405F* + ID_MODEL_FROM_DATABASE=V7700Ti + +pci:v000010DEd00000151sv00001462sd00005506* + ID_MODEL_FROM_DATABASE=Creative 3D Blaster GeForce2 Titanium + +pci:v000010DEd00000151sv00001462sd00008364* + ID_MODEL_FROM_DATABASE=MS-8836 + +pci:v000010DEd00000152* + ID_MODEL_FROM_DATABASE=NV15 [GeForce2 Ultra] + +pci:v000010DEd00000152sv00001048sd00000C56* + ID_MODEL_FROM_DATABASE=GLADIAC Ultra + +pci:v000010DEd00000153* + ID_MODEL_FROM_DATABASE=NV15GL [Quadro2 Pro] + +pci:v000010DEd00000160* + ID_MODEL_FROM_DATABASE=NV44 [GeForce 6500] + +pci:v000010DEd00000161* + ID_MODEL_FROM_DATABASE=NV44 [GeForce 6200 TurboCache] + +pci:v000010DEd00000162* + ID_MODEL_FROM_DATABASE=NV44 [GeForce 6200 SE TurboCache] + +pci:v000010DEd00000163* + ID_MODEL_FROM_DATABASE=NV44 [GeForce 6200 LE] + +pci:v000010DEd00000164* + ID_MODEL_FROM_DATABASE=NV44M [GeForce Go 6200] + +pci:v000010DEd00000165* + ID_MODEL_FROM_DATABASE=NV44 [Quadro NVS 285] + +pci:v000010DEd00000166* + ID_MODEL_FROM_DATABASE=NV44M [GeForce Go 6400] + +pci:v000010DEd00000167* + ID_MODEL_FROM_DATABASE=NV44M [GeForce Go 6200] + +pci:v000010DEd00000168* + ID_MODEL_FROM_DATABASE=NV44M [GeForce Go 6400] + +pci:v000010DEd00000169* + ID_MODEL_FROM_DATABASE=NV44 [GeForce 6250] + +pci:v000010DEd0000016A* + ID_MODEL_FROM_DATABASE=NV44 [GeForce 7100 GS] + +pci:v000010DEd0000016D* + ID_MODEL_FROM_DATABASE=NV44 + +pci:v000010DEd0000016E* + ID_MODEL_FROM_DATABASE=NV44 + +pci:v000010DEd0000016F* + ID_MODEL_FROM_DATABASE=NV44 + +pci:v000010DEd00000170* + ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 460] + +pci:v000010DEd00000170sv00001462sd00008630* + ID_MODEL_FROM_DATABASE=MS-8863 + +pci:v000010DEd00000171* + ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 440] + +pci:v000010DEd00000171sv000010B0sd00000002* + ID_MODEL_FROM_DATABASE=Gainward Pro/600 TV + +pci:v000010DEd00000171sv000010DEsd00000008* + ID_MODEL_FROM_DATABASE=Apple OEM GeForce4 MX 440 + +pci:v000010DEd00000171sv00001462sd00008661* + ID_MODEL_FROM_DATABASE=G4MX440-VTP + +pci:v000010DEd00000171sv00001462sd00008730* + ID_MODEL_FROM_DATABASE=MX440SES-T (MS-8873) + +pci:v000010DEd00000171sv00001462sd00008743* + ID_MODEL_FROM_DATABASE=MS-8874 + +pci:v000010DEd00000171sv00001462sd00008852* + ID_MODEL_FROM_DATABASE=GeForce4 MX440 PCI + +pci:v000010DEd00000171sv0000147Bsd00008F00* + ID_MODEL_FROM_DATABASE=Abit Siluro GeForce4MX440 + +pci:v000010DEd00000172* + ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 420] + +pci:v000010DEd00000172sv00001462sd00008730* + ID_MODEL_FROM_DATABASE=MS-8873 + +pci:v000010DEd00000172sv00001462sd00008784* + ID_MODEL_FROM_DATABASE=MS-8878 + +pci:v000010DEd00000173* + ID_MODEL_FROM_DATABASE=NV17 [GeForce4 MX 440-SE] + +pci:v000010DEd00000174* + ID_MODEL_FROM_DATABASE=NV17M [GeForce4 440 Go] + +pci:v000010DEd00000175* + ID_MODEL_FROM_DATABASE=NV17M [GeForce4 420 Go] + +pci:v000010DEd00000176* + ID_MODEL_FROM_DATABASE=NV17M [GeForce4 420 Go 32M] + +pci:v000010DEd00000176sv0000103Csd000008B0* + ID_MODEL_FROM_DATABASE=tc1100 tablet + +pci:v000010DEd00000176sv0000144Dsd0000C005* + ID_MODEL_FROM_DATABASE=X10 Laptop + +pci:v000010DEd00000176sv00004C53sd00001090* + ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard + +pci:v000010DEd00000177* + ID_MODEL_FROM_DATABASE=NV17M [GeForce4 460 Go] + +pci:v000010DEd00000178* + ID_MODEL_FROM_DATABASE=NV17GL [Quadro4 550 XGL] + +pci:v000010DEd00000179* + ID_MODEL_FROM_DATABASE=NV17M [GeForce4 440 Go 64M] + +pci:v000010DEd00000179sv000010DEsd00000179* + ID_MODEL_FROM_DATABASE=GeForce4 MX (Mac) + +pci:v000010DEd0000017A* + ID_MODEL_FROM_DATABASE=NV17GL [Quadro NVS] + +pci:v000010DEd0000017B* + ID_MODEL_FROM_DATABASE=NV17GL [Quadro4 550 XGL] + +pci:v000010DEd0000017C* + ID_MODEL_FROM_DATABASE=NV17GL [Quadro4 500 GoGL] + +pci:v000010DEd0000017F* + ID_MODEL_FROM_DATABASE=NV17 + +pci:v000010DEd00000181* + ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX 440 AGP 8x] + +pci:v000010DEd00000181sv00001043sd00008063* + ID_MODEL_FROM_DATABASE=GeForce4 MX 440 AGP 8X + +pci:v000010DEd00000181sv00001043sd0000806F* + ID_MODEL_FROM_DATABASE=V9180 Magic + +pci:v000010DEd00000181sv00001462sd00008880* + ID_MODEL_FROM_DATABASE=MS-StarForce GeForce4 MX 440 with AGP8X + +pci:v000010DEd00000181sv00001462sd00008900* + ID_MODEL_FROM_DATABASE=MS-8890 GeForce 4 MX440 AGP8X + +pci:v000010DEd00000181sv00001462sd00009350* + ID_MODEL_FROM_DATABASE=MSI GeForce4 MX T8X with AGP8X + +pci:v000010DEd00000181sv0000147Bsd00008F0D* + ID_MODEL_FROM_DATABASE=Siluro GF4 MX-8X + +pci:v000010DEd00000181sv00001554sd00001111* + ID_MODEL_FROM_DATABASE=PixelView MVGA-NVG18A + +pci:v000010DEd00000182* + ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX 440SE AGP 8x] + +pci:v000010DEd00000183* + ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX 420 AGP 8x] + +pci:v000010DEd00000184* + ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX] + +pci:v000010DEd00000185* + ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX 4000] + +pci:v000010DEd00000186* + ID_MODEL_FROM_DATABASE=NV18M [GeForce4 448 Go] + +pci:v000010DEd00000187* + ID_MODEL_FROM_DATABASE=NV18M [GeForce4 488 Go] + +pci:v000010DEd00000188* + ID_MODEL_FROM_DATABASE=NV18GL [Quadro4 580 XGL] + +pci:v000010DEd00000189* + ID_MODEL_FROM_DATABASE=NV18 [GeForce4 MX with AGP8X (Mac)] + +pci:v000010DEd0000018A* + ID_MODEL_FROM_DATABASE=NV18GL [Quadro NVS 280 SD] + +pci:v000010DEd0000018B* + ID_MODEL_FROM_DATABASE=NV18GL [Quadro4 380 XGL] + +pci:v000010DEd0000018C* + ID_MODEL_FROM_DATABASE=NV18GL [Quadro NVS 50 PCI] + +pci:v000010DEd0000018D* + ID_MODEL_FROM_DATABASE=NV18M [GeForce4 448 Go] + +pci:v000010DEd0000018F* + ID_MODEL_FROM_DATABASE=NV18 + +pci:v000010DEd00000190* + ID_MODEL_FROM_DATABASE=G80 [GeForce 8800 GTS / 8800 GTX] + +pci:v000010DEd00000191* + ID_MODEL_FROM_DATABASE=G80 [GeForce 8800 GTX] + +pci:v000010DEd00000192* + ID_MODEL_FROM_DATABASE=G80 [GeForce 8800 GTS] + +pci:v000010DEd00000193* + ID_MODEL_FROM_DATABASE=G80 [GeForce 8800 GTS] + +pci:v000010DEd00000193sv0000107Dsd000020BD* + ID_MODEL_FROM_DATABASE=WinFast PX 8800 GTS TDH + +pci:v000010DEd00000194* + ID_MODEL_FROM_DATABASE=G80 [GeForce 8800 Ultra] + +pci:v000010DEd00000197* + ID_MODEL_FROM_DATABASE=G80GL [Tesla C870] + +pci:v000010DEd0000019D* + ID_MODEL_FROM_DATABASE=G80GL [Quadro FX 5600] + +pci:v000010DEd0000019E* + ID_MODEL_FROM_DATABASE=G80GL [Quadro FX 4600] + +pci:v000010DEd000001A0* + ID_MODEL_FROM_DATABASE=nForce 220/420 NV11 [GeForce2 MX] + +pci:v000010DEd000001A4* + ID_MODEL_FROM_DATABASE=nForce CPU bridge + +pci:v000010DEd000001AB* + ID_MODEL_FROM_DATABASE=nForce 420 Memory Controller (DDR) + +pci:v000010DEd000001AC* + ID_MODEL_FROM_DATABASE=nForce 220/420 Memory Controller + +pci:v000010DEd000001AD* + ID_MODEL_FROM_DATABASE=nForce 220/420 Memory Controller + +pci:v000010DEd000001B0* + ID_MODEL_FROM_DATABASE=nForce Audio Processing Unit + +pci:v000010DEd000001B1* + ID_MODEL_FROM_DATABASE=nForce AC'97 Audio Controller + +pci:v000010DEd000001B2* + ID_MODEL_FROM_DATABASE=nForce ISA Bridge + +pci:v000010DEd000001B4* + ID_MODEL_FROM_DATABASE=nForce PCI System Management + +pci:v000010DEd000001B7* + ID_MODEL_FROM_DATABASE=nForce AGP to PCI Bridge + +pci:v000010DEd000001B8* + ID_MODEL_FROM_DATABASE=nForce PCI-to-PCI bridge + +pci:v000010DEd000001BC* + ID_MODEL_FROM_DATABASE=nForce IDE + +pci:v000010DEd000001C1* + ID_MODEL_FROM_DATABASE=nForce AC'97 Modem Controller + +pci:v000010DEd000001C2* + ID_MODEL_FROM_DATABASE=nForce USB Controller + +pci:v000010DEd000001C3* + ID_MODEL_FROM_DATABASE=nForce Ethernet Controller + +pci:v000010DEd000001D0* + ID_MODEL_FROM_DATABASE=G72 [GeForce 7350 LE] + +pci:v000010DEd000001D1* + ID_MODEL_FROM_DATABASE=G72 [GeForce 7300 LE] + +pci:v000010DEd000001D1sv0000107Dsd00005EFA* + ID_MODEL_FROM_DATABASE=WinFast PX7300LE-TD128 + +pci:v000010DEd000001D1sv0000107Dsd00005EFB* + ID_MODEL_FROM_DATABASE=WinFast PX7300LE-TD256 + +pci:v000010DEd000001D1sv00001462sd00000345* + ID_MODEL_FROM_DATABASE=7300LE PCI Express Graphics Adapter + +pci:v000010DEd000001D2* + ID_MODEL_FROM_DATABASE=G72 [GeForce 7550 LE] + +pci:v000010DEd000001D3* + ID_MODEL_FROM_DATABASE=G72 [GeForce 7200 GS / 7300 SE] + +pci:v000010DEd000001D5* + ID_MODEL_FROM_DATABASE=G72 + +pci:v000010DEd000001D6* + ID_MODEL_FROM_DATABASE=G72M [GeForce Go 7200] + +pci:v000010DEd000001D7* + ID_MODEL_FROM_DATABASE=G72M [Quadro NVS 110M/GeForce Go 7300] + +pci:v000010DEd000001D8* + ID_MODEL_FROM_DATABASE=G72M [GeForce Go 7400] + +pci:v000010DEd000001D8sv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v000010DEd000001D9* + ID_MODEL_FROM_DATABASE=G72M [GeForce Go 7450] + +pci:v000010DEd000001DA* + ID_MODEL_FROM_DATABASE=G72M [Quadro NVS 110M] + +pci:v000010DEd000001DB* + ID_MODEL_FROM_DATABASE=G72M [Quadro NVS 120M] + +pci:v000010DEd000001DC* + ID_MODEL_FROM_DATABASE=G72GLM [Quadro FX 350M] + +pci:v000010DEd000001DD* + ID_MODEL_FROM_DATABASE=G72 [GeForce 7500 LE] + +pci:v000010DEd000001DE* + ID_MODEL_FROM_DATABASE=G72GL [Quadro FX 350] + +pci:v000010DEd000001DEsv000010DEsd000001DC* + ID_MODEL_FROM_DATABASE=Quadro FX Go350M + +pci:v000010DEd000001DF* + ID_MODEL_FROM_DATABASE=G72 [GeForce 7300 GS] + +pci:v000010DEd000001E0* + ID_MODEL_FROM_DATABASE=nForce2 IGP2 + +pci:v000010DEd000001E0sv0000147Bsd00001C09* + ID_MODEL_FROM_DATABASE=NV7 Motherboard + +pci:v000010DEd000001E8* + ID_MODEL_FROM_DATABASE=nForce2 AGP + +pci:v000010DEd000001EA* + ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 0 + +pci:v000010DEd000001EAsv0000A0A0sd000003B9* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd000001EB* + ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 1 + +pci:v000010DEd000001EBsv0000A0A0sd000003B9* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd000001EC* + ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 2 + +pci:v000010DEd000001ECsv0000A0A0sd000003B9* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd000001ED* + ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 3 + +pci:v000010DEd000001EDsv0000A0A0sd000003B9* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd000001EE* + ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 4 + +pci:v000010DEd000001EEsv000010DEsd000001EE* + ID_MODEL_FROM_DATABASE=MSI Delta-L nForce2 memory controller + +pci:v000010DEd000001EEsv0000A0A0sd000003B9* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd000001EF* + ID_MODEL_FROM_DATABASE=nForce2 Memory Controller 5 + +pci:v000010DEd000001EFsv0000A0A0sd000003B9* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd000001F0* + ID_MODEL_FROM_DATABASE=C17 [GeForce4 MX IGP] + +pci:v000010DEd000001F0sv0000A0A0sd000003B5* + ID_MODEL_FROM_DATABASE=UK79G-1394 motherboard + +pci:v000010DEd00000200* + ID_MODEL_FROM_DATABASE=NV20 [GeForce3] + +pci:v000010DEd00000200sv00001043sd0000402F* + ID_MODEL_FROM_DATABASE=AGP-V8200 DDR + +pci:v000010DEd00000200sv00001048sd00000C70* + ID_MODEL_FROM_DATABASE=GLADIAC 920 + +pci:v000010DEd00000201* + ID_MODEL_FROM_DATABASE=NV20 [GeForce3 Ti 200] + +pci:v000010DEd00000202* + ID_MODEL_FROM_DATABASE=NV20 [GeForce3 Ti 500] + +pci:v000010DEd00000202sv00001043sd0000405B* + ID_MODEL_FROM_DATABASE=V8200 T5 + +pci:v000010DEd00000202sv00001545sd0000002F* + ID_MODEL_FROM_DATABASE=Xtasy 6964 + +pci:v000010DEd00000203* + ID_MODEL_FROM_DATABASE=NV20GL [Quadro DCC] + +pci:v000010DEd00000211* + ID_MODEL_FROM_DATABASE=NV48 [GeForce 6800] + +pci:v000010DEd00000212* + ID_MODEL_FROM_DATABASE=NV48 [GeForce 6800 LE] + +pci:v000010DEd00000215* + ID_MODEL_FROM_DATABASE=NV48 [GeForce 6800 GT] + +pci:v000010DEd00000218* + ID_MODEL_FROM_DATABASE=NV48 [GeForce 6800 XT] + +pci:v000010DEd00000221* + ID_MODEL_FROM_DATABASE=NV44A [GeForce 6200] + +pci:v000010DEd00000221sv00001043sd000081E1* + ID_MODEL_FROM_DATABASE=N6200/TD/256M/A + +pci:v000010DEd00000221sv00003842sd0000A341* + ID_MODEL_FROM_DATABASE=256A8N341DX + +pci:v000010DEd00000222* + ID_MODEL_FROM_DATABASE=NV44 [GeForce 6200 A-LE] + +pci:v000010DEd00000224* + ID_MODEL_FROM_DATABASE=NV44 + +pci:v000010DEd00000240* + ID_MODEL_FROM_DATABASE=C51PV [GeForce 6150] + +pci:v000010DEd00000240sv00001043sd000081CD* + ID_MODEL_FROM_DATABASE=A8N-VM CSM + +pci:v000010DEd00000240sv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd00000241* + ID_MODEL_FROM_DATABASE=C51 [GeForce 6150 LE] + +pci:v000010DEd00000242* + ID_MODEL_FROM_DATABASE=C51G [GeForce 6100] + +pci:v000010DEd00000242sv0000105Bsd00000CAD* + ID_MODEL_FROM_DATABASE=Winfast 6100K8MB + +pci:v000010DEd00000243* + ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge + +pci:v000010DEd00000244* + ID_MODEL_FROM_DATABASE=C51 [GeForce Go 6150] + +pci:v000010DEd00000244sv0000103Csd000030B5* + ID_MODEL_FROM_DATABASE=Presario V3242AU + +pci:v000010DEd00000244sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd00000244sv000010DEsd00000244* + ID_MODEL_FROM_DATABASE=GeForce Go 6150 + +pci:v000010DEd00000245* + ID_MODEL_FROM_DATABASE=C51 [Quadro NVS 210S/GeForce 6150LE] + +pci:v000010DEd00000246* + ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge + +pci:v000010DEd00000247* + ID_MODEL_FROM_DATABASE=C51 [GeForce Go 6100] + +pci:v000010DEd00000247sv00001043sd00001382* + ID_MODEL_FROM_DATABASE=MCP51 PCI-X GeForce Go 6100 + +pci:v000010DEd00000248* + ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge + +pci:v000010DEd00000249* + ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge + +pci:v000010DEd0000024A* + ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge + +pci:v000010DEd0000024B* + ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge + +pci:v000010DEd0000024C* + ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge + +pci:v000010DEd0000024D* + ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge + +pci:v000010DEd0000024E* + ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge + +pci:v000010DEd0000024F* + ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge + +pci:v000010DEd00000250* + ID_MODEL_FROM_DATABASE=NV25 [GeForce4 Ti 4600] + +pci:v000010DEd00000251* + ID_MODEL_FROM_DATABASE=NV25 [GeForce4 Ti 4400] + +pci:v000010DEd00000251sv00001043sd00008023* + ID_MODEL_FROM_DATABASE=v8440 GeForce 4 Ti4400 + +pci:v000010DEd00000251sv000010DEsd00000251* + ID_MODEL_FROM_DATABASE=PNY GeForce4 Ti 4400 + +pci:v000010DEd00000251sv00001462sd00008710* + ID_MODEL_FROM_DATABASE=PNY GeForce4 Ti 4400 + +pci:v000010DEd00000252* + ID_MODEL_FROM_DATABASE=NV25 [GeForce4 Ti] + +pci:v000010DEd00000253* + ID_MODEL_FROM_DATABASE=NV25 [GeForce4 Ti 4200] + +pci:v000010DEd00000253sv0000107Dsd00002896* + ID_MODEL_FROM_DATABASE=WinFast A250 LE TD (Dual VGA/TV-out/DVI) + +pci:v000010DEd00000253sv0000147Bsd00008F09* + ID_MODEL_FROM_DATABASE=Siluro (Dual VGA/TV-out/DVI) + +pci:v000010DEd00000258* + ID_MODEL_FROM_DATABASE=NV25GL [Quadro4 900 XGL] + +pci:v000010DEd00000259* + ID_MODEL_FROM_DATABASE=NV25GL [Quadro4 750 XGL] + +pci:v000010DEd0000025B* + ID_MODEL_FROM_DATABASE=NV25GL [Quadro4 700 XGL] + +pci:v000010DEd00000260* + ID_MODEL_FROM_DATABASE=MCP51 LPC Bridge + +pci:v000010DEd00000260sv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd00000260sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd00000260sv00001043sd000081BC* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd00000260sv00001458sd00005001* + ID_MODEL_FROM_DATABASE=GA-M55plus-S3G + +pci:v000010DEd00000260sv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd00000261* + ID_MODEL_FROM_DATABASE=MCP51 LPC Bridge + +pci:v000010DEd00000261sv0000105Bsd00000CAD* + ID_MODEL_FROM_DATABASE=Winfast 6100K8MB + +pci:v000010DEd00000262* + ID_MODEL_FROM_DATABASE=MCP51 LPC Bridge + +pci:v000010DEd00000263* + ID_MODEL_FROM_DATABASE=MCP51 LPC Bridge + +pci:v000010DEd00000264* + ID_MODEL_FROM_DATABASE=MCP51 SMBus + +pci:v000010DEd00000264sv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd00000264sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd00000264sv00001043sd000081BC* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd00000264sv0000105Bsd00000CAD* + ID_MODEL_FROM_DATABASE=Winfast 6100K8MB + +pci:v000010DEd00000264sv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd00000265* + ID_MODEL_FROM_DATABASE=MCP51 IDE + +pci:v000010DEd00000265sv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd00000265sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd00000265sv00001043sd000081BC* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd00000265sv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd00000265sv0000F05Bsd00000CAD* + ID_MODEL_FROM_DATABASE=Winfast 6100K8MB + +pci:v000010DEd00000266* + ID_MODEL_FROM_DATABASE=MCP51 Serial ATA Controller + +pci:v000010DEd00000266sv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd00000266sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd00000266sv00001043sd000081BC* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd00000266sv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd00000267* + ID_MODEL_FROM_DATABASE=MCP51 Serial ATA Controller + +pci:v000010DEd00000267sv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd00000267sv00001043sd000081BC* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd00000267sv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd00000268* + ID_MODEL_FROM_DATABASE=MCP51 Ethernet Controller + +pci:v000010DEd00000269* + ID_MODEL_FROM_DATABASE=MCP51 Ethernet Controller + +pci:v000010DEd00000269sv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd00000269sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd00000269sv00001043sd00008141* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd00000269sv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd0000026A* + ID_MODEL_FROM_DATABASE=MCP51 MCI + +pci:v000010DEd0000026B* + ID_MODEL_FROM_DATABASE=MCP51 AC97 Audio Controller + +pci:v000010DEd0000026Bsv0000105Bsd00000CAD* + ID_MODEL_FROM_DATABASE=Winfast 6100K8MB + +pci:v000010DEd0000026C* + ID_MODEL_FROM_DATABASE=MCP51 High Definition Audio + +pci:v000010DEd0000026Csv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd0000026Csv0000103Csd000030B5* + ID_MODEL_FROM_DATABASE=Presario V3242AU + +pci:v000010DEd0000026Csv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd0000026Csv000010DEsd0000CB84* + ID_MODEL_FROM_DATABASE=ASUSTeK Computer Inc. A8N-VM CSM Mainboard + +pci:v000010DEd0000026Csv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd0000026D* + ID_MODEL_FROM_DATABASE=MCP51 USB Controller + +pci:v000010DEd0000026Dsv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd0000026Dsv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd0000026Dsv00001043sd000081BC* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd0000026Dsv0000105Bsd00000CAD* + ID_MODEL_FROM_DATABASE=Winfast 6100K8MB + +pci:v000010DEd0000026Dsv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd0000026E* + ID_MODEL_FROM_DATABASE=MCP51 USB Controller + +pci:v000010DEd0000026Esv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd0000026Esv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd0000026Esv00001043sd000081BC* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd0000026Esv0000105Bsd00000CAD* + ID_MODEL_FROM_DATABASE=Winfast 6100K8MB + +pci:v000010DEd0000026Esv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd0000026F* + ID_MODEL_FROM_DATABASE=MCP51 PCI Bridge + +pci:v000010DEd0000026Fsv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd00000270* + ID_MODEL_FROM_DATABASE=MCP51 Host Bridge + +pci:v000010DEd00000270sv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd00000270sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd00000270sv00001043sd000081BC* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd00000270sv0000105Bsd00000CAD* + ID_MODEL_FROM_DATABASE=Winfast 6100K8MB + +pci:v000010DEd00000270sv00001458sd00005001* + ID_MODEL_FROM_DATABASE=GA-M55plus-S3G + +pci:v000010DEd00000270sv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd00000271* + ID_MODEL_FROM_DATABASE=MCP51 PMU + +pci:v000010DEd00000271sv0000103Csd000030B5* + ID_MODEL_FROM_DATABASE=Presario V3242AU + +pci:v000010DEd00000271sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd00000272* + ID_MODEL_FROM_DATABASE=MCP51 Memory Controller 0 + +pci:v000010DEd00000272sv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd00000272sv0000105Bsd00000CAD* + ID_MODEL_FROM_DATABASE=Winfast 6100K8MB + +pci:v000010DEd0000027E* + ID_MODEL_FROM_DATABASE=C51 Memory Controller 2 + +pci:v000010DEd0000027Esv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd0000027Esv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd0000027Esv00001043sd000081CD* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd0000027Esv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-M55plus-S3G + +pci:v000010DEd0000027Esv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd0000027F* + ID_MODEL_FROM_DATABASE=C51 Memory Controller 3 + +pci:v000010DEd0000027Fsv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd0000027Fsv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd0000027Fsv00001043sd000081CD* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd0000027Fsv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-M55plus-S3G + +pci:v000010DEd0000027Fsv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd00000280* + ID_MODEL_FROM_DATABASE=NV28 [GeForce4 Ti 4800] + +pci:v000010DEd00000281* + ID_MODEL_FROM_DATABASE=NV28 [GeForce4 Ti 4200 AGP 8x] + +pci:v000010DEd00000282* + ID_MODEL_FROM_DATABASE=NV28 [GeForce4 Ti 4800 SE] + +pci:v000010DEd00000286* + ID_MODEL_FROM_DATABASE=NV28M [GeForce4 Ti 4200 Go AGP 8x] + +pci:v000010DEd00000288* + ID_MODEL_FROM_DATABASE=NV28GL [Quadro4 980 XGL] + +pci:v000010DEd00000289* + ID_MODEL_FROM_DATABASE=NV28GL [Quadro4 780 XGL] + +pci:v000010DEd0000028C* + ID_MODEL_FROM_DATABASE=NV28GLM [Quadro4 Go700] + +pci:v000010DEd00000290* + ID_MODEL_FROM_DATABASE=G71 [GeForce 7900 GTX] + +pci:v000010DEd00000291* + ID_MODEL_FROM_DATABASE=G71 [GeForce 7900 GT/GTO] + +pci:v000010DEd00000291sv000010DEsd0000042B* + ID_MODEL_FROM_DATABASE=NX7900GTO-T2D512E [7900 GTO] + +pci:v000010DEd00000292* + ID_MODEL_FROM_DATABASE=G71 [GeForce 7900 GS] + +pci:v000010DEd00000293* + ID_MODEL_FROM_DATABASE=G71 [GeForce 7900 GX2] + +pci:v000010DEd00000294* + ID_MODEL_FROM_DATABASE=G71 [GeForce 7950 GX2] + +pci:v000010DEd00000295* + ID_MODEL_FROM_DATABASE=G71 [GeForce 7950 GT] + +pci:v000010DEd00000295sv00001043sd00008225* + ID_MODEL_FROM_DATABASE=GeForce 7950 GT + +pci:v000010DEd00000295sv0000107Dsd00002A68* + ID_MODEL_FROM_DATABASE=WinFast PX7950GT TDH + +pci:v000010DEd00000295sv00001462sd00000663* + ID_MODEL_FROM_DATABASE=NX7950GT-VT2D512EZ-HD + +pci:v000010DEd00000297* + ID_MODEL_FROM_DATABASE=G71M [GeForce Go 7950 GTX] + +pci:v000010DEd00000298* + ID_MODEL_FROM_DATABASE=G71M [GeForce Go 7900 GS] + +pci:v000010DEd00000299* + ID_MODEL_FROM_DATABASE=G71M [GeForce Go 7900 GTX] + +pci:v000010DEd0000029A* + ID_MODEL_FROM_DATABASE=G71GLM [Quadro FX 2500M] + +pci:v000010DEd0000029B* + ID_MODEL_FROM_DATABASE=G71GLM [Quadro FX 1500M] + +pci:v000010DEd0000029C* + ID_MODEL_FROM_DATABASE=G71GL [Quadro FX 5500] + +pci:v000010DEd0000029D* + ID_MODEL_FROM_DATABASE=G71GL [Quadro FX 3500] + +pci:v000010DEd0000029E* + ID_MODEL_FROM_DATABASE=G71GL [Quadro FX 1500] + +pci:v000010DEd0000029F* + ID_MODEL_FROM_DATABASE=G71GL [Quadro FX 4500 X2] + +pci:v000010DEd000002A0* + ID_MODEL_FROM_DATABASE=NV2A [XGPU] + +pci:v000010DEd000002A5* + ID_MODEL_FROM_DATABASE=MCPX CPU Bridge + +pci:v000010DEd000002A6* + ID_MODEL_FROM_DATABASE=MCPX Memory Controller + +pci:v000010DEd000002E0* + ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 GT] + +pci:v000010DEd000002E0sv000002E0sd00002249* + ID_MODEL_FROM_DATABASE=GF 7600GT 560M 256MB DDR3 DUAL DVI TV + +pci:v000010DEd000002E1* + ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 GS] + +pci:v000010DEd000002E1sv00001682sd0000222B* + ID_MODEL_FROM_DATABASE=PV-T73K-UAL3 (256MB) + +pci:v000010DEd000002E1sv00001682sd00002247* + ID_MODEL_FROM_DATABASE=GF 7600GS 512MB DDR2 + +pci:v000010DEd000002E2* + ID_MODEL_FROM_DATABASE=G73 [GeForce 7300 GT] + +pci:v000010DEd000002E3* + ID_MODEL_FROM_DATABASE=G71 [GeForce 7900 GS] + +pci:v000010DEd000002E4* + ID_MODEL_FROM_DATABASE=G71 [GeForce 7950 GT] + +pci:v000010DEd000002E4sv00001682sd00002271* + ID_MODEL_FROM_DATABASE=PV-T71A-YDF7 (512MB) + +pci:v000010DEd000002F0* + ID_MODEL_FROM_DATABASE=C51 Host Bridge + +pci:v000010DEd000002F0sv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd000002F0sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd000002F0sv00001043sd000081CD* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd000002F0sv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd000002F1* + ID_MODEL_FROM_DATABASE=C51 Host Bridge + +pci:v000010DEd000002F1sv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-M55plus-S3G + +pci:v000010DEd000002F2* + ID_MODEL_FROM_DATABASE=C51 Host Bridge + +pci:v000010DEd000002F3* + ID_MODEL_FROM_DATABASE=C51 Host Bridge + +pci:v000010DEd000002F4* + ID_MODEL_FROM_DATABASE=C51 Host Bridge + +pci:v000010DEd000002F5* + ID_MODEL_FROM_DATABASE=C51 Host Bridge + +pci:v000010DEd000002F6* + ID_MODEL_FROM_DATABASE=C51 Host Bridge + +pci:v000010DEd000002F7* + ID_MODEL_FROM_DATABASE=C51 Host Bridge + +pci:v000010DEd000002F8* + ID_MODEL_FROM_DATABASE=C51 Memory Controller 5 + +pci:v000010DEd000002F8sv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd000002F8sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd000002F8sv00001043sd000081CD* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd000002F8sv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-M55plus-S3G + +pci:v000010DEd000002F8sv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd000002F9* + ID_MODEL_FROM_DATABASE=C51 Memory Controller 4 + +pci:v000010DEd000002F9sv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd000002F9sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd000002F9sv00001043sd000081CD* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd000002F9sv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-M55plus-S3G + +pci:v000010DEd000002F9sv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd000002FA* + ID_MODEL_FROM_DATABASE=C51 Memory Controller 0 + +pci:v000010DEd000002FAsv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd000002FAsv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd000002FAsv00001043sd000081CD* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd000002FAsv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-M55plus-S3G + +pci:v000010DEd000002FAsv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd000002FB* + ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge + +pci:v000010DEd000002FC* + ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge + +pci:v000010DEd000002FCsv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd000002FD* + ID_MODEL_FROM_DATABASE=C51 PCI Express Bridge + +pci:v000010DEd000002FDsv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd000002FE* + ID_MODEL_FROM_DATABASE=C51 Memory Controller 1 + +pci:v000010DEd000002FEsv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd000002FEsv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd000002FEsv00001043sd000081CD* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd000002FEsv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-M55plus-S3G + +pci:v000010DEd000002FEsv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd000002FF* + ID_MODEL_FROM_DATABASE=C51 Host Bridge + +pci:v000010DEd000002FFsv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000010DEd000002FFsv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v000010DEd000002FFsv00001043sd000081CD* + ID_MODEL_FROM_DATABASE=A8N-VM CSM Mainboard + +pci:v000010DEd000002FFsv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-M55plus-S3G + +pci:v000010DEd000002FFsv00001462sd00007207* + ID_MODEL_FROM_DATABASE=K8NGM2 series + +pci:v000010DEd00000300* + ID_MODEL_FROM_DATABASE=NV30 [GeForce FX] + +pci:v000010DEd00000301* + ID_MODEL_FROM_DATABASE=NV30 [GeForce FX 5800 Ultra] + +pci:v000010DEd00000302* + ID_MODEL_FROM_DATABASE=NV30 [GeForce FX 5800] + +pci:v000010DEd00000308* + ID_MODEL_FROM_DATABASE=NV30GL [Quadro FX 2000] + +pci:v000010DEd00000309* + ID_MODEL_FROM_DATABASE=NV30GL [Quadro FX 1000] + +pci:v000010DEd00000311* + ID_MODEL_FROM_DATABASE=NV31 [GeForce FX 5600 Ultra] + +pci:v000010DEd00000312* + ID_MODEL_FROM_DATABASE=NV31 [GeForce FX 5600] + +pci:v000010DEd00000314* + ID_MODEL_FROM_DATABASE=NV31 [GeForce FX 5600XT] + +pci:v000010DEd00000314sv00001043sd0000814A* + ID_MODEL_FROM_DATABASE=V9560XT/TD + +pci:v000010DEd00000316* + ID_MODEL_FROM_DATABASE=NV31M + +pci:v000010DEd00000318* + ID_MODEL_FROM_DATABASE=NV31GL + +pci:v000010DEd0000031A* + ID_MODEL_FROM_DATABASE=NV31M [GeForce FX Go5600] + +pci:v000010DEd0000031B* + ID_MODEL_FROM_DATABASE=NV31M [GeForce FX Go5650] + +pci:v000010DEd0000031C* + ID_MODEL_FROM_DATABASE=NV31GLM [Quadro FX Go700] + +pci:v000010DEd00000320* + ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5200] + +pci:v000010DEd00000321* + ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5200 Ultra] + +pci:v000010DEd00000322* + ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5200] + +pci:v000010DEd00000322sv00001043sd000002FB* + ID_MODEL_FROM_DATABASE=V9250 Magic + +pci:v000010DEd00000322sv00001043sd00008180* + ID_MODEL_FROM_DATABASE=V9520-X/TD/128M + +pci:v000010DEd00000322sv0000107Dsd00002967* + ID_MODEL_FROM_DATABASE=WinFast A340T 128MB + +pci:v000010DEd00000322sv00001462sd00009110* + ID_MODEL_FROM_DATABASE=MS-8911 (FX5200-TD128) + +pci:v000010DEd00000322sv00001462sd00009171* + ID_MODEL_FROM_DATABASE=MS-8917 (FX5200-T128) + +pci:v000010DEd00000322sv00001462sd00009360* + ID_MODEL_FROM_DATABASE=MS-8936 (FX5200-T128) + +pci:v000010DEd00000322sv00001682sd00001351* + ID_MODEL_FROM_DATABASE=GeForce FX 5200 + +pci:v000010DEd00000323* + ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5200LE] + +pci:v000010DEd00000324* + ID_MODEL_FROM_DATABASE=NV34M [GeForce FX Go5200 64M] + +pci:v000010DEd00000324sv00001028sd00000196* + ID_MODEL_FROM_DATABASE=Inspiron 5160 + +pci:v000010DEd00000324sv0000103Csd0000006A* + ID_MODEL_FROM_DATABASE=Pavilion ZD7000 laptop + +pci:v000010DEd00000324sv00001071sd00008160* + ID_MODEL_FROM_DATABASE=MIM2000 + +pci:v000010DEd00000325* + ID_MODEL_FROM_DATABASE=NV34M [GeForce FX Go5250] + +pci:v000010DEd00000326* + ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5500] + +pci:v000010DEd00000326sv00001458sd0000310D* + ID_MODEL_FROM_DATABASE=GeForce FX 5500 128 MB + +pci:v000010DEd00000326sv00001682sd00002034* + ID_MODEL_FROM_DATABASE=GeForce 5500 256 MB + +pci:v000010DEd00000327* + ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5100] + +pci:v000010DEd00000328* + ID_MODEL_FROM_DATABASE=NV34M [GeForce FX Go5200 32M/64M] + +pci:v000010DEd00000329* + ID_MODEL_FROM_DATABASE=NV34M [GeForce FX Go5200] + +pci:v000010DEd00000329sv000010DEsd00000010* + ID_MODEL_FROM_DATABASE=Powerbook G4 + +pci:v000010DEd0000032A* + ID_MODEL_FROM_DATABASE=NV34GL [Quadro NVS 280 PCI] + +pci:v000010DEd0000032B* + ID_MODEL_FROM_DATABASE=NV34GL [Quadro FX 500/600 PCI] + +pci:v000010DEd0000032C* + ID_MODEL_FROM_DATABASE=NV34M [GeForce FX Go5300 / Go5350] + +pci:v000010DEd0000032D* + ID_MODEL_FROM_DATABASE=NV34M [GeForce FX Go5100] + +pci:v000010DEd0000032E* + ID_MODEL_FROM_DATABASE=NV34 + +pci:v000010DEd0000032F* + ID_MODEL_FROM_DATABASE=NV34 [GeForce FX 5200] + +pci:v000010DEd00000330* + ID_MODEL_FROM_DATABASE=NV35 [GeForce FX 5900 Ultra] + +pci:v000010DEd00000330sv00001043sd00008137* + ID_MODEL_FROM_DATABASE=V9950 Ultra / 256 MB + +pci:v000010DEd00000331* + ID_MODEL_FROM_DATABASE=NV35 [GeForce FX 5900] + +pci:v000010DEd00000331sv00001043sd00008145* + ID_MODEL_FROM_DATABASE=V9950GE + +pci:v000010DEd00000332* + ID_MODEL_FROM_DATABASE=NV35 [GeForce FX 5900XT] + +pci:v000010DEd00000333* + ID_MODEL_FROM_DATABASE=NV38 [GeForce FX 5950 Ultra] + +pci:v000010DEd00000334* + ID_MODEL_FROM_DATABASE=NV35 [GeForce FX 5900ZT] + +pci:v000010DEd00000334sv00001462sd00009373* + ID_MODEL_FROM_DATABASE=FX5900ZT-VTD128 (MS-8937) + +pci:v000010DEd00000338* + ID_MODEL_FROM_DATABASE=NV35GL [Quadro FX 3000] + +pci:v000010DEd0000033F* + ID_MODEL_FROM_DATABASE=NV35GL [Quadro FX 700] + +pci:v000010DEd00000341* + ID_MODEL_FROM_DATABASE=NV36 [GeForce FX 5700 Ultra] + +pci:v000010DEd00000341sv00001462sd00009380* + ID_MODEL_FROM_DATABASE=MS-8938 (FX5700U-TD128) + +pci:v000010DEd00000342* + ID_MODEL_FROM_DATABASE=NV36 [GeForce FX 5700] + +pci:v000010DEd00000343* + ID_MODEL_FROM_DATABASE=NV36 [GeForce FX 5700LE] + +pci:v000010DEd00000344* + ID_MODEL_FROM_DATABASE=NV36 [GeForce FX 5700VE] + +pci:v000010DEd00000347* + ID_MODEL_FROM_DATABASE=NV36M [GeForce FX Go5700] + +pci:v000010DEd00000347sv0000103Csd0000006A* + ID_MODEL_FROM_DATABASE=NX9500 + +pci:v000010DEd00000348* + ID_MODEL_FROM_DATABASE=NV36M [GeForce FX Go5700] + +pci:v000010DEd0000034C* + ID_MODEL_FROM_DATABASE=NV36 [Quadro FX Go1000] + +pci:v000010DEd0000034D* + ID_MODEL_FROM_DATABASE=NV36 + +pci:v000010DEd0000034E* + ID_MODEL_FROM_DATABASE=NV36GL [Quadro FX 1100] + +pci:v000010DEd00000360* + ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge + +pci:v000010DEd00000361* + ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge + +pci:v000010DEd00000361sv00001028sd00000221* + ID_MODEL_FROM_DATABASE=PowerEdge R805 MCP55 LPC Bridge + +pci:v000010DEd00000362* + ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge + +pci:v000010DEd00000362sv0000147Bsd00001C24* + ID_MODEL_FROM_DATABASE=KN9 series mainboard + +pci:v000010DEd00000363* + ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge + +pci:v000010DEd00000364* + ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge + +pci:v000010DEd00000364sv00001028sd00000221* + ID_MODEL_FROM_DATABASE=PowerEdge R805 MCP55 LPC Bridge + +pci:v000010DEd00000365* + ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge + +pci:v000010DEd00000366* + ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge + +pci:v000010DEd00000367* + ID_MODEL_FROM_DATABASE=MCP55 LPC Bridge + +pci:v000010DEd00000368* + ID_MODEL_FROM_DATABASE=MCP55 SMBus + +pci:v000010DEd00000368sv00001028sd0000020C* + ID_MODEL_FROM_DATABASE=PowerEdge M605 MCP55 SMBus + +pci:v000010DEd00000368sv00001028sd00000221* + ID_MODEL_FROM_DATABASE=PowerEdge R805 MCP55 SMBus + +pci:v000010DEd00000368sv0000147Bsd00001C24* + ID_MODEL_FROM_DATABASE=KN9 series mainboard + +pci:v000010DEd00000369* + ID_MODEL_FROM_DATABASE=MCP55 Memory Controller + +pci:v000010DEd00000369sv0000147Bsd00001C24* + ID_MODEL_FROM_DATABASE=KN9 series mainboard + +pci:v000010DEd0000036A* + ID_MODEL_FROM_DATABASE=MCP55 Memory Controller + +pci:v000010DEd0000036B* + ID_MODEL_FROM_DATABASE=MCP55 SMU + +pci:v000010DEd0000036C* + ID_MODEL_FROM_DATABASE=MCP55 USB Controller + +pci:v000010DEd0000036Csv00001028sd0000020C* + ID_MODEL_FROM_DATABASE=PowerEdge M605 MCP55 USB Controller + +pci:v000010DEd0000036Csv00001028sd00000221* + ID_MODEL_FROM_DATABASE=PowerEdge R805 MCP55 USB Controller + +pci:v000010DEd0000036Csv0000147Bsd00001C24* + ID_MODEL_FROM_DATABASE=KN9 series mainboard + +pci:v000010DEd0000036D* + ID_MODEL_FROM_DATABASE=MCP55 USB Controller + +pci:v000010DEd0000036Dsv00001028sd0000020C* + ID_MODEL_FROM_DATABASE=PowerEdge M605 MCP55 USB Controller + +pci:v000010DEd0000036Dsv00001028sd00000221* + ID_MODEL_FROM_DATABASE=PowerEdge R805 MCP55 USB Controller + +pci:v000010DEd0000036Dsv0000147Bsd00001C24* + ID_MODEL_FROM_DATABASE=KN9 series mainboard + +pci:v000010DEd0000036E* + ID_MODEL_FROM_DATABASE=MCP55 IDE + +pci:v000010DEd0000036Esv0000147Bsd00001C24* + ID_MODEL_FROM_DATABASE=KN9 series mainboard + +pci:v000010DEd00000370* + ID_MODEL_FROM_DATABASE=MCP55 PCI bridge + +pci:v000010DEd00000371* + ID_MODEL_FROM_DATABASE=MCP55 High Definition Audio + +pci:v000010DEd00000371sv0000147Bsd00001C24* + ID_MODEL_FROM_DATABASE=KN9 series mainboard + +pci:v000010DEd00000372* + ID_MODEL_FROM_DATABASE=MCP55 Ethernet + +pci:v000010DEd00000373* + ID_MODEL_FROM_DATABASE=MCP55 Ethernet + +pci:v000010DEd00000373sv0000147Bsd00001C24* + ID_MODEL_FROM_DATABASE=KN9 series mainboard + +pci:v000010DEd00000374* + ID_MODEL_FROM_DATABASE=MCP55 PCI Express bridge + +pci:v000010DEd00000375* + ID_MODEL_FROM_DATABASE=MCP55 PCI Express bridge + +pci:v000010DEd00000376* + ID_MODEL_FROM_DATABASE=MCP55 PCI Express bridge + +pci:v000010DEd00000377* + ID_MODEL_FROM_DATABASE=MCP55 PCI Express bridge + +pci:v000010DEd00000378* + ID_MODEL_FROM_DATABASE=MCP55 PCI Express bridge + +pci:v000010DEd0000037A* + ID_MODEL_FROM_DATABASE=MCP55 Memory Controller + +pci:v000010DEd0000037E* + ID_MODEL_FROM_DATABASE=MCP55 SATA Controller + +pci:v000010DEd0000037F* + ID_MODEL_FROM_DATABASE=MCP55 SATA Controller + +pci:v000010DEd0000037Fsv00001028sd00000221* + ID_MODEL_FROM_DATABASE=PowerEdge R805 MCP55 SATA Controller + +pci:v000010DEd0000037Fsv0000147Bsd00001C24* + ID_MODEL_FROM_DATABASE=KN9 series mainboard + +pci:v000010DEd0000038B* + ID_MODEL_FROM_DATABASE=G73 [GeForce 7650 GS] + +pci:v000010DEd00000390* + ID_MODEL_FROM_DATABASE=G73 [GeForce 7650 GS] + +pci:v000010DEd00000391* + ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 GT] + +pci:v000010DEd00000391sv00001458sd00003427* + ID_MODEL_FROM_DATABASE=GV-NX76T128D-RH + +pci:v000010DEd00000392* + ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 GS] + +pci:v000010DEd00000392sv00001462sd00000622* + ID_MODEL_FROM_DATABASE=NX7600GS-T2D256EH + +pci:v000010DEd00000393* + ID_MODEL_FROM_DATABASE=G73 [GeForce 7300 GT] + +pci:v000010DEd00000393sv000010DEsd00000412* + ID_MODEL_FROM_DATABASE=NX7300GT-TD256EH + +pci:v000010DEd00000393sv00001462sd00000412* + ID_MODEL_FROM_DATABASE=NX7300GT-TD256EH + +pci:v000010DEd00000394* + ID_MODEL_FROM_DATABASE=G73 [GeForce 7600 LE] + +pci:v000010DEd00000395* + ID_MODEL_FROM_DATABASE=G73 [GeForce 7300 GT] + +pci:v000010DEd00000396* + ID_MODEL_FROM_DATABASE=G73 + +pci:v000010DEd00000397* + ID_MODEL_FROM_DATABASE=G73M [GeForce Go 7700] + +pci:v000010DEd00000398* + ID_MODEL_FROM_DATABASE=G73M [GeForce Go 7600] + +pci:v000010DEd00000398sv00001025sd0000006C* + ID_MODEL_FROM_DATABASE=Acer 9814 WKMI + +pci:v000010DEd00000399* + ID_MODEL_FROM_DATABASE=G73M [GeForce Go 7600 GT] + +pci:v000010DEd0000039A* + ID_MODEL_FROM_DATABASE=G73M [Quadro NVS 300M] + +pci:v000010DEd0000039B* + ID_MODEL_FROM_DATABASE=G73M [GeForce Go 7900 SE] + +pci:v000010DEd0000039C* + ID_MODEL_FROM_DATABASE=G73GLM [Quadro FX 550M] + +pci:v000010DEd0000039Csv000010DEsd0000039C* + ID_MODEL_FROM_DATABASE=Quadro FX 560M + +pci:v000010DEd0000039D* + ID_MODEL_FROM_DATABASE=G73 + +pci:v000010DEd0000039E* + ID_MODEL_FROM_DATABASE=G73GL [Quadro FX 560] + +pci:v000010DEd0000039F* + ID_MODEL_FROM_DATABASE=G73 + +pci:v000010DEd000003A0* + ID_MODEL_FROM_DATABASE=C55 Host Bridge + +pci:v000010DEd000003A1* + ID_MODEL_FROM_DATABASE=C55 Host Bridge + +pci:v000010DEd000003A2* + ID_MODEL_FROM_DATABASE=C55 Host Bridge + +pci:v000010DEd000003A3* + ID_MODEL_FROM_DATABASE=C55 Host Bridge + +pci:v000010DEd000003A4* + ID_MODEL_FROM_DATABASE=C55 Host Bridge + +pci:v000010DEd000003A5* + ID_MODEL_FROM_DATABASE=C55 Host Bridge + +pci:v000010DEd000003A6* + ID_MODEL_FROM_DATABASE=C55 Host Bridge + +pci:v000010DEd000003A7* + ID_MODEL_FROM_DATABASE=C55 Host Bridge + +pci:v000010DEd000003A8* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003A9* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003AA* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003AB* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003AC* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003AD* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003AE* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003AF* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003B0* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003B1* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003B2* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003B3* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003B4* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003B5* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003B6* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003B7* + ID_MODEL_FROM_DATABASE=C55 PCI Express bridge + +pci:v000010DEd000003B8* + ID_MODEL_FROM_DATABASE=C55 PCI Express bridge + +pci:v000010DEd000003B9* + ID_MODEL_FROM_DATABASE=C55 PCI Express bridge + +pci:v000010DEd000003BA* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003BB* + ID_MODEL_FROM_DATABASE=C55 PCI Express bridge + +pci:v000010DEd000003BC* + ID_MODEL_FROM_DATABASE=C55 Memory Controller + +pci:v000010DEd000003D0* + ID_MODEL_FROM_DATABASE=C61 [GeForce 6150SE nForce 430] + +pci:v000010DEd000003D0sv00001028sd0000020E* + ID_MODEL_FROM_DATABASE=Inspiron 531 + +pci:v000010DEd000003D1* + ID_MODEL_FROM_DATABASE=C61 [GeForce 6100 nForce 405] + +pci:v000010DEd000003D2* + ID_MODEL_FROM_DATABASE=C61 [GeForce 6100 nForce 400] + +pci:v000010DEd000003D5* + ID_MODEL_FROM_DATABASE=C61 [GeForce 6100 nForce 420] + +pci:v000010DEd000003D6* + ID_MODEL_FROM_DATABASE=C61 [GeForce 7025 / nForce 630a] + +pci:v000010DEd000003E0* + ID_MODEL_FROM_DATABASE=MCP61 LPC Bridge + +pci:v000010DEd000003E0sv00001028sd0000020E* + ID_MODEL_FROM_DATABASE=Inspiron 531 + +pci:v000010DEd000003E0sv00001849sd000003E0* + ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board + +pci:v000010DEd000003E1* + ID_MODEL_FROM_DATABASE=MCP61 LPC Bridge + +pci:v000010DEd000003E1sv00001043sd000083A4* + ID_MODEL_FROM_DATABASE=M4N68T series motherboard + +pci:v000010DEd000003E2* + ID_MODEL_FROM_DATABASE=MCP61 Host Bridge + +pci:v000010DEd000003E2sv00001043sd000083A4* + ID_MODEL_FROM_DATABASE=M4N68T series motherboard + +pci:v000010DEd000003E3* + ID_MODEL_FROM_DATABASE=MCP61 LPC Bridge + +pci:v000010DEd000003E4* + ID_MODEL_FROM_DATABASE=MCP61 High Definition Audio + +pci:v000010DEd000003E5* + ID_MODEL_FROM_DATABASE=MCP61 Ethernet + +pci:v000010DEd000003E6* + ID_MODEL_FROM_DATABASE=MCP61 Ethernet + +pci:v000010DEd000003E7* + ID_MODEL_FROM_DATABASE=MCP61 SATA Controller + +pci:v000010DEd000003E8* + ID_MODEL_FROM_DATABASE=MCP61 PCI Express bridge + +pci:v000010DEd000003E8sv00001028sd0000020E* + ID_MODEL_FROM_DATABASE=Inspiron 531 + +pci:v000010DEd000003E8sv00001849sd000003E8* + ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board + +pci:v000010DEd000003E9* + ID_MODEL_FROM_DATABASE=MCP61 PCI Express bridge + +pci:v000010DEd000003E9sv00001028sd0000020E* + ID_MODEL_FROM_DATABASE=Inspiron 531 + +pci:v000010DEd000003E9sv00001849sd000003E9* + ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board + +pci:v000010DEd000003EA* + ID_MODEL_FROM_DATABASE=MCP61 Memory Controller + +pci:v000010DEd000003EAsv00001028sd0000020E* + ID_MODEL_FROM_DATABASE=Inspiron 531 + +pci:v000010DEd000003EAsv00001849sd000003EA* + ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board + +pci:v000010DEd000003EB* + ID_MODEL_FROM_DATABASE=MCP61 SMBus + +pci:v000010DEd000003EBsv00001028sd0000020E* + ID_MODEL_FROM_DATABASE=Inspiron 531 + +pci:v000010DEd000003EBsv00001043sd000083A4* + ID_MODEL_FROM_DATABASE=M4N68T series motherboard + +pci:v000010DEd000003EBsv00001849sd000003EB* + ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board + +pci:v000010DEd000003EC* + ID_MODEL_FROM_DATABASE=MCP61 IDE + +pci:v000010DEd000003ECsv00001025sd00000392* + ID_MODEL_FROM_DATABASE=ET1350 + +pci:v000010DEd000003ECsv00001028sd0000020E* + ID_MODEL_FROM_DATABASE=Inspiron 531 + +pci:v000010DEd000003ECsv00001043sd000083A4* + ID_MODEL_FROM_DATABASE=M4N68T series motherboard + +pci:v000010DEd000003ECsv00001849sd000003EC* + ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board + +pci:v000010DEd000003EE* + ID_MODEL_FROM_DATABASE=MCP61 Ethernet + +pci:v000010DEd000003EF* + ID_MODEL_FROM_DATABASE=MCP61 Ethernet + +pci:v000010DEd000003EFsv00001025sd00008000* + ID_MODEL_FROM_DATABASE=ET1350 + +pci:v000010DEd000003EFsv00001028sd0000020E* + ID_MODEL_FROM_DATABASE=Inspiron 531 + +pci:v000010DEd000003EFsv00001043sd000083A4* + ID_MODEL_FROM_DATABASE=M4N68T series motherboard + +pci:v000010DEd000003EFsv00001849sd000003EF* + ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board + +pci:v000010DEd000003F0* + ID_MODEL_FROM_DATABASE=MCP61 High Definition Audio + +pci:v000010DEd000003F0sv00001028sd0000020E* + ID_MODEL_FROM_DATABASE=Inspiron 531 + +pci:v000010DEd000003F0sv00001043sd00008415* + ID_MODEL_FROM_DATABASE=M4N68T series motherboard + +pci:v000010DEd000003F0sv00001849sd00000888* + ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board + +pci:v000010DEd000003F1* + ID_MODEL_FROM_DATABASE=MCP61 USB 1.1 Controller + +pci:v000010DEd000003F1sv00001028sd0000020E* + ID_MODEL_FROM_DATABASE=Inspiron 531 + +pci:v000010DEd000003F1sv00001043sd000083A4* + ID_MODEL_FROM_DATABASE=M4N68T series motherboard + +pci:v000010DEd000003F1sv00001849sd000003F1* + ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board + +pci:v000010DEd000003F2* + ID_MODEL_FROM_DATABASE=MCP61 USB 2.0 Controller + +pci:v000010DEd000003F2sv00001028sd0000020E* + ID_MODEL_FROM_DATABASE=Inspiron 531 + +pci:v000010DEd000003F2sv00001043sd000083A4* + ID_MODEL_FROM_DATABASE=M4N68T series motherboard + +pci:v000010DEd000003F2sv00001849sd000003F2* + ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board + +pci:v000010DEd000003F3* + ID_MODEL_FROM_DATABASE=MCP61 PCI bridge + +pci:v000010DEd000003F3sv00001028sd0000020E* + ID_MODEL_FROM_DATABASE=Inspiron 531 + +pci:v000010DEd000003F3sv00001849sd000003F3* + ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board + +pci:v000010DEd000003F4* + ID_MODEL_FROM_DATABASE=MCP61 SMU + +pci:v000010DEd000003F5* + ID_MODEL_FROM_DATABASE=MCP61 Memory Controller + +pci:v000010DEd000003F5sv00001028sd0000020E* + ID_MODEL_FROM_DATABASE=Inspiron 531 + +pci:v000010DEd000003F5sv00001043sd000083A4* + ID_MODEL_FROM_DATABASE=M4N68T series motherboard + +pci:v000010DEd000003F5sv00001849sd000003EB* + ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board + +pci:v000010DEd000003F6* + ID_MODEL_FROM_DATABASE=MCP61 SATA Controller + +pci:v000010DEd000003F6sv00001028sd0000020E* + ID_MODEL_FROM_DATABASE=Inspiron 531 + +pci:v000010DEd000003F6sv00001043sd000083A4* + ID_MODEL_FROM_DATABASE=M4N68T series motherboard + +pci:v000010DEd000003F6sv00001849sd000003F6* + ID_MODEL_FROM_DATABASE=939NF6G-VSTA Board + +pci:v000010DEd000003F7* + ID_MODEL_FROM_DATABASE=MCP61 SATA Controller + +pci:v000010DEd00000400* + ID_MODEL_FROM_DATABASE=G84 [GeForce 8600 GTS] + +pci:v000010DEd00000400sv00001043sd00008241* + ID_MODEL_FROM_DATABASE=EN8600GTS + +pci:v000010DEd00000401* + ID_MODEL_FROM_DATABASE=G84 [GeForce 8600 GT] + +pci:v000010DEd00000402* + ID_MODEL_FROM_DATABASE=G84 [GeForce 8600 GT] + +pci:v000010DEd00000402sv00001458sd00003455* + ID_MODEL_FROM_DATABASE=GV-NX86T512H + +pci:v000010DEd00000402sv00001462sd00000910* + ID_MODEL_FROM_DATABASE=NX8600GT-T2D256EZ + +pci:v000010DEd00000403* + ID_MODEL_FROM_DATABASE=G84 [GeForce 8600 GS] + +pci:v000010DEd00000404* + ID_MODEL_FROM_DATABASE=G84 [GeForce 8400 GS] + +pci:v000010DEd00000404sv00001462sd00001230* + ID_MODEL_FROM_DATABASE=NX8400GS-TD256E + +pci:v000010DEd00000405* + ID_MODEL_FROM_DATABASE=G84M [GeForce 9500M GS] + +pci:v000010DEd00000406* + ID_MODEL_FROM_DATABASE=G84 [GeForce 8300 GS] + +pci:v000010DEd00000407* + ID_MODEL_FROM_DATABASE=G84M [GeForce 8600M GT] + +pci:v000010DEd00000408* + ID_MODEL_FROM_DATABASE=G84M [GeForce 9650M GS] + +pci:v000010DEd00000409* + ID_MODEL_FROM_DATABASE=G84M [GeForce 8700M GT] + +pci:v000010DEd0000040A* + ID_MODEL_FROM_DATABASE=G84GL [Quadro FX 370] + +pci:v000010DEd0000040B* + ID_MODEL_FROM_DATABASE=G84GLM [Quadro NVS 320M] + +pci:v000010DEd0000040C* + ID_MODEL_FROM_DATABASE=G84GLM [Quadro FX 570M] + +pci:v000010DEd0000040Csv000017AAsd000020D9* + ID_MODEL_FROM_DATABASE=ThinkPad T61p + +pci:v000010DEd0000040D* + ID_MODEL_FROM_DATABASE=G84GLM [Quadro FX 1600M] + +pci:v000010DEd0000040E* + ID_MODEL_FROM_DATABASE=G84GL [Quadro FX 570] + +pci:v000010DEd0000040F* + ID_MODEL_FROM_DATABASE=G84GL [Quadro FX 1700] + +pci:v000010DEd00000410* + ID_MODEL_FROM_DATABASE=G92 [GeForce GT 330] + +pci:v000010DEd00000414* + ID_MODEL_FROM_DATABASE=G92 [GeForce 9800 GT] + +pci:v000010DEd00000420* + ID_MODEL_FROM_DATABASE=G86 [GeForce 8400 SE] + +pci:v000010DEd00000421* + ID_MODEL_FROM_DATABASE=G86 [GeForce 8500 GT] + +pci:v000010DEd00000421sv00001462sd00000960* + ID_MODEL_FROM_DATABASE=NX8500GT-TD512EH/M2 + +pci:v000010DEd00000422* + ID_MODEL_FROM_DATABASE=G86 [GeForce 8400 GS] + +pci:v000010DEd00000423* + ID_MODEL_FROM_DATABASE=G86 [GeForce 8300 GS] + +pci:v000010DEd00000424* + ID_MODEL_FROM_DATABASE=G86 [GeForce 8400 GS] + +pci:v000010DEd00000425* + ID_MODEL_FROM_DATABASE=G86M [GeForce 8600M GS] + +pci:v000010DEd00000425sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v000010DEd00000426* + ID_MODEL_FROM_DATABASE=G86M [GeForce 8400M GT] + +pci:v000010DEd00000427* + ID_MODEL_FROM_DATABASE=G86M [GeForce 8400M GS] + +pci:v000010DEd00000427sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v000010DEd00000427sv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v000010DEd00000428* + ID_MODEL_FROM_DATABASE=G86M [GeForce 8400M G] + +pci:v000010DEd00000429* + ID_MODEL_FROM_DATABASE=G86M [Quadro NVS 140M] + +pci:v000010DEd00000429sv000017AAsd000020D8* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v000010DEd0000042A* + ID_MODEL_FROM_DATABASE=G86M [Quadro NVS 130M] + +pci:v000010DEd0000042B* + ID_MODEL_FROM_DATABASE=G86M [Quadro NVS 135M] + +pci:v000010DEd0000042C* + ID_MODEL_FROM_DATABASE=G86 [GeForce 9400 GT] + +pci:v000010DEd0000042D* + ID_MODEL_FROM_DATABASE=G86GLM [Quadro FX 360M] + +pci:v000010DEd0000042E* + ID_MODEL_FROM_DATABASE=G86M [GeForce 9300M G] + +pci:v000010DEd0000042F* + ID_MODEL_FROM_DATABASE=G86 [Quadro NVS 290] + +pci:v000010DEd00000440* + ID_MODEL_FROM_DATABASE=MCP65 LPC Bridge + +pci:v000010DEd00000441* + ID_MODEL_FROM_DATABASE=MCP65 LPC Bridge + +pci:v000010DEd00000442* + ID_MODEL_FROM_DATABASE=MCP65 LPC Bridge + +pci:v000010DEd00000442sv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v000010DEd00000443* + ID_MODEL_FROM_DATABASE=MCP65 LPC Bridge + +pci:v000010DEd00000444* + ID_MODEL_FROM_DATABASE=MCP65 Memory Controller + +pci:v000010DEd00000444sv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v000010DEd00000445* + ID_MODEL_FROM_DATABASE=MCP65 Memory Controller + +pci:v000010DEd00000446* + ID_MODEL_FROM_DATABASE=MCP65 SMBus + +pci:v000010DEd00000446sv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v000010DEd00000447* + ID_MODEL_FROM_DATABASE=MCP65 SMU + +pci:v000010DEd00000447sv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v000010DEd00000448* + ID_MODEL_FROM_DATABASE=MCP65 IDE + +pci:v000010DEd00000448sv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v000010DEd00000449* + ID_MODEL_FROM_DATABASE=MCP65 PCI bridge + +pci:v000010DEd00000449sv000010DEsd0000CB84* + ID_MODEL_FROM_DATABASE=HP Pavilion dv9668eg Laptop + +pci:v000010DEd0000044A* + ID_MODEL_FROM_DATABASE=MCP65 High Definition Audio + +pci:v000010DEd0000044Asv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v000010DEd0000044B* + ID_MODEL_FROM_DATABASE=MCP65 High Definition Audio + +pci:v000010DEd0000044C* + ID_MODEL_FROM_DATABASE=MCP65 AHCI Controller + +pci:v000010DEd0000044D* + ID_MODEL_FROM_DATABASE=MCP65 AHCI Controller + +pci:v000010DEd0000044E* + ID_MODEL_FROM_DATABASE=MCP65 AHCI Controller + +pci:v000010DEd0000044F* + ID_MODEL_FROM_DATABASE=MCP65 AHCI Controller + +pci:v000010DEd00000450* + ID_MODEL_FROM_DATABASE=MCP65 Ethernet + +pci:v000010DEd00000450sv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v000010DEd00000451* + ID_MODEL_FROM_DATABASE=MCP65 Ethernet + +pci:v000010DEd00000452* + ID_MODEL_FROM_DATABASE=MCP65 Ethernet + +pci:v000010DEd00000453* + ID_MODEL_FROM_DATABASE=MCP65 Ethernet + +pci:v000010DEd00000454* + ID_MODEL_FROM_DATABASE=MCP65 USB 1.1 OHCI Controller + +pci:v000010DEd00000454sv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v000010DEd00000455* + ID_MODEL_FROM_DATABASE=MCP65 USB 2.0 EHCI Controller + +pci:v000010DEd00000455sv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v000010DEd00000456* + ID_MODEL_FROM_DATABASE=MCP65 USB Controller + +pci:v000010DEd00000457* + ID_MODEL_FROM_DATABASE=MCP65 USB Controller + +pci:v000010DEd00000458* + ID_MODEL_FROM_DATABASE=MCP65 PCI Express bridge + +pci:v000010DEd00000458sv000010DEsd00000000* + ID_MODEL_FROM_DATABASE=MCP65 PCI Express bridge + +pci:v000010DEd00000459* + ID_MODEL_FROM_DATABASE=MCP65 PCI Express bridge + +pci:v000010DEd00000459sv000010DEsd00000000* + ID_MODEL_FROM_DATABASE=MCP65 PCI Express bridge + +pci:v000010DEd0000045A* + ID_MODEL_FROM_DATABASE=MCP65 PCI Express bridge + +pci:v000010DEd0000045Asv000010DEsd00000000* + ID_MODEL_FROM_DATABASE=MCP65 PCI Express bridge + +pci:v000010DEd0000045B* + ID_MODEL_FROM_DATABASE=MCP65 PCI Express bridge + +pci:v000010DEd0000045Bsv000010DEsd00000000* + ID_MODEL_FROM_DATABASE=MCP65 PCI Express bridge + +pci:v000010DEd0000045C* + ID_MODEL_FROM_DATABASE=MCP65 SATA Controller + +pci:v000010DEd0000045D* + ID_MODEL_FROM_DATABASE=MCP65 SATA Controller + +pci:v000010DEd0000045Dsv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v000010DEd0000045E* + ID_MODEL_FROM_DATABASE=MCP65 SATA Controller + +pci:v000010DEd0000045F* + ID_MODEL_FROM_DATABASE=MCP65 SATA Controller + +pci:v000010DEd00000531* + ID_MODEL_FROM_DATABASE=C67 [GeForce 7150M / nForce 630M] + +pci:v000010DEd00000533* + ID_MODEL_FROM_DATABASE=C67 [GeForce 7000M / nForce 610M] + +pci:v000010DEd0000053A* + ID_MODEL_FROM_DATABASE=C68 [GeForce 7050 PV / nForce 630a] + +pci:v000010DEd0000053B* + ID_MODEL_FROM_DATABASE=C68 [GeForce 7050 PV / nForce 630a] + +pci:v000010DEd0000053Bsv00001043sd00008308* + ID_MODEL_FROM_DATABASE=M2N68-AM Motherbord + +pci:v000010DEd0000053E* + ID_MODEL_FROM_DATABASE=C68 [GeForce 7025 / nForce 630a] + +pci:v000010DEd00000541* + ID_MODEL_FROM_DATABASE=MCP67 Memory Controller + +pci:v000010DEd00000542* + ID_MODEL_FROM_DATABASE=MCP67 SMBus + +pci:v000010DEd00000542sv00001043sd00008308* + ID_MODEL_FROM_DATABASE=M2N68-AM Motherbord + +pci:v000010DEd00000543* + ID_MODEL_FROM_DATABASE=MCP67 Co-processor + +pci:v000010DEd00000547* + ID_MODEL_FROM_DATABASE=MCP67 Memory Controller + +pci:v000010DEd00000547sv00001043sd00008308* + ID_MODEL_FROM_DATABASE=M2N68-AM Motherbord + +pci:v000010DEd00000547sv00001849sd00000547* + ID_MODEL_FROM_DATABASE=ALiveNF7G-HDready + +pci:v000010DEd00000548* + ID_MODEL_FROM_DATABASE=MCP67 ISA Bridge + +pci:v000010DEd00000548sv00001043sd00008308* + ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard + +pci:v000010DEd0000054C* + ID_MODEL_FROM_DATABASE=MCP67 Ethernet + +pci:v000010DEd0000054Csv00001043sd00008308* + ID_MODEL_FROM_DATABASE=M2N68-AM Motherbord + +pci:v000010DEd0000054Csv00001849sd0000054C* + ID_MODEL_FROM_DATABASE=ALiveNF7G-HDready, MCP67 Gigabit Ethernet + +pci:v000010DEd0000054D* + ID_MODEL_FROM_DATABASE=MCP67 Ethernet + +pci:v000010DEd0000054E* + ID_MODEL_FROM_DATABASE=MCP67 Ethernet + +pci:v000010DEd0000054F* + ID_MODEL_FROM_DATABASE=MCP67 Ethernet + +pci:v000010DEd00000550* + ID_MODEL_FROM_DATABASE=MCP67 AHCI Controller + +pci:v000010DEd00000550sv00001043sd00008308* + ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard + +pci:v000010DEd00000554* + ID_MODEL_FROM_DATABASE=MCP67 AHCI Controller + +pci:v000010DEd00000554sv00001043sd00008308* + ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard + +pci:v000010DEd00000555* + ID_MODEL_FROM_DATABASE=MCP67 SATA Controller + +pci:v000010DEd00000555sv00001043sd00008308* + ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard + +pci:v000010DEd0000055C* + ID_MODEL_FROM_DATABASE=MCP67 High Definition Audio + +pci:v000010DEd0000055Csv00001043sd00008290* + ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard + +pci:v000010DEd0000055D* + ID_MODEL_FROM_DATABASE=MCP67 High Definition Audio + +pci:v000010DEd0000055E* + ID_MODEL_FROM_DATABASE=MCP67 OHCI USB 1.1 Controller + +pci:v000010DEd0000055Esv00001043sd00008308* + ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard + +pci:v000010DEd0000055F* + ID_MODEL_FROM_DATABASE=MCP67 EHCI USB 2.0 Controller + +pci:v000010DEd0000055Fsv00001043sd00008308* + ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard + +pci:v000010DEd00000560* + ID_MODEL_FROM_DATABASE=MCP67 IDE Controller + +pci:v000010DEd00000560sv0000F043sd00008308* + ID_MODEL_FROM_DATABASE=M2N68-AM Motherboard + +pci:v000010DEd00000561* + ID_MODEL_FROM_DATABASE=MCP67 PCI Bridge + +pci:v000010DEd00000562* + ID_MODEL_FROM_DATABASE=MCP67 PCI Express Bridge + +pci:v000010DEd00000562sv00001849sd00000562* + ID_MODEL_FROM_DATABASE=ALiveNF7G-HDready + +pci:v000010DEd00000563* + ID_MODEL_FROM_DATABASE=MCP67 PCI Express Bridge + +pci:v000010DEd00000568* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller + +pci:v000010DEd00000568sv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd00000568sv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd00000568sv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd00000568sv00001849sd00000568* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Memory Controller + +pci:v000010DEd00000569* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge + +pci:v000010DEd00000569sv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd00000569sv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd00000569sv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd00000569sv00001849sd00000569* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Express Bridge + +pci:v000010DEd0000056A* + ID_MODEL_FROM_DATABASE=MCP73 [nForce 630i] USB 2.0 Controller (EHCI) + +pci:v000010DEd0000056Asv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd0000056C* + ID_MODEL_FROM_DATABASE=MCP73 IDE + +pci:v000010DEd0000056Csv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd0000056Csv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd0000056D* + ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge + +pci:v000010DEd0000056Dsv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd0000056E* + ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge + +pci:v000010DEd0000056Esv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd0000056F* + ID_MODEL_FROM_DATABASE=MCP73 PCI Express bridge + +pci:v000010DEd0000056Fsv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000005B1* + ID_MODEL_FROM_DATABASE=NF200 PCIe 2.0 switch + +pci:v000010DEd000005B8* + ID_MODEL_FROM_DATABASE=NF200 PCIe 2.0 switch for GTX 295 + +pci:v000010DEd000005BE* + ID_MODEL_FROM_DATABASE=NF200 PCIe 2.0 switch for Quadro Plex S4 / Tesla S870 / Tesla S1070 / Tesla S2050 + +pci:v000010DEd000005E0* + ID_MODEL_FROM_DATABASE=GT200b [GeForce GTX 295] + +pci:v000010DEd000005E1* + ID_MODEL_FROM_DATABASE=GT200 [GeForce GTX 280] + +pci:v000010DEd000005E2* + ID_MODEL_FROM_DATABASE=GT200 [GeForce GTX 260] + +pci:v000010DEd000005E3* + ID_MODEL_FROM_DATABASE=GT200b [GeForce GTX 285] + +pci:v000010DEd000005E6* + ID_MODEL_FROM_DATABASE=GT200b [GeForce GTX 275] + +pci:v000010DEd000005E7* + ID_MODEL_FROM_DATABASE=GT200GL [Tesla C1060 / M1060] + +pci:v000010DEd000005EA* + ID_MODEL_FROM_DATABASE=GT200 [GeForce GTX 260] + +pci:v000010DEd000005EB* + ID_MODEL_FROM_DATABASE=GT200 [GeForce GTX 295] + +pci:v000010DEd000005ED* + ID_MODEL_FROM_DATABASE=GT200GL [Quadro Plex 2200 D2] + +pci:v000010DEd000005F1* + ID_MODEL_FROM_DATABASE=GT200 [GeForce GTX 280] + +pci:v000010DEd000005F2* + ID_MODEL_FROM_DATABASE=GT200 [GeForce GTX 260] + +pci:v000010DEd000005F8* + ID_MODEL_FROM_DATABASE=GT200GL [Quadro Plex 2200 S4] + +pci:v000010DEd000005F9* + ID_MODEL_FROM_DATABASE=GT200GL [Quadro CX] + +pci:v000010DEd000005FD* + ID_MODEL_FROM_DATABASE=GT200GL [Quadro FX 5800] + +pci:v000010DEd000005FE* + ID_MODEL_FROM_DATABASE=GT200GL [Quadro FX 4800] + +pci:v000010DEd000005FF* + ID_MODEL_FROM_DATABASE=GT200GL [Quadro FX 3800] + +pci:v000010DEd00000600* + ID_MODEL_FROM_DATABASE=G92 [GeForce 8800 GTS 512] + +pci:v000010DEd00000601* + ID_MODEL_FROM_DATABASE=G92 [GeForce 9800 GT] + +pci:v000010DEd00000602* + ID_MODEL_FROM_DATABASE=G92 [GeForce 8800 GT] + +pci:v000010DEd00000603* + ID_MODEL_FROM_DATABASE=G92 [GeForce GT 230 OEM] + +pci:v000010DEd00000604* + ID_MODEL_FROM_DATABASE=G92 [GeForce 9800 GX2] + +pci:v000010DEd00000605* + ID_MODEL_FROM_DATABASE=G92 [GeForce 9800 GT] + +pci:v000010DEd00000606* + ID_MODEL_FROM_DATABASE=G92 [GeForce 8800 GS] + +pci:v000010DEd00000607* + ID_MODEL_FROM_DATABASE=G92 [GeForce GTS 240] + +pci:v000010DEd00000608* + ID_MODEL_FROM_DATABASE=G92M [GeForce 9800M GTX] + +pci:v000010DEd00000609* + ID_MODEL_FROM_DATABASE=G92M [GeForce 8800M GTS] + +pci:v000010DEd0000060A* + ID_MODEL_FROM_DATABASE=G92M [GeForce GTX 280M] + +pci:v000010DEd0000060B* + ID_MODEL_FROM_DATABASE=G92M [GeForce 9800M GT] + +pci:v000010DEd0000060C* + ID_MODEL_FROM_DATABASE=G92M [GeForce 8800M GTX] + +pci:v000010DEd0000060D* + ID_MODEL_FROM_DATABASE=G92 [GeForce 8800 GS] + +pci:v000010DEd0000060F* + ID_MODEL_FROM_DATABASE=G92M [GeForce GTX 285M] + +pci:v000010DEd00000610* + ID_MODEL_FROM_DATABASE=G92 [GeForce 9600 GSO] + +pci:v000010DEd00000610sv00001682sd00002385* + ID_MODEL_FROM_DATABASE=GeForce 9600 GSO 768mb + +pci:v000010DEd00000611* + ID_MODEL_FROM_DATABASE=G92 [GeForce 8800 GT] + +pci:v000010DEd00000611sv0000107Dsd00002AB0* + ID_MODEL_FROM_DATABASE=Winfast PX8800 GT PCI-E + +pci:v000010DEd00000611sv000019DAsd00001040* + ID_MODEL_FROM_DATABASE=ZT-88TES2P-FSP + +pci:v000010DEd00000612* + ID_MODEL_FROM_DATABASE=G92 [GeForce 9800 GTX / 9800 GTX+] + +pci:v000010DEd00000613* + ID_MODEL_FROM_DATABASE=G92 [GeForce 9800 GTX+] + +pci:v000010DEd00000614* + ID_MODEL_FROM_DATABASE=G92 [GeForce 9800 GT] + +pci:v000010DEd00000614sv0000107Dsd00002AB3* + ID_MODEL_FROM_DATABASE=WinFast PX9800 GT (S-Fanpipe) + +pci:v000010DEd00000615* + ID_MODEL_FROM_DATABASE=G92 [GeForce GTS 250] + +pci:v000010DEd00000615sv00003842sd00001150* + ID_MODEL_FROM_DATABASE=GeForce GTS 250 P/N 512-P3-1150-TR + +pci:v000010DEd00000615sv00003842sd00001151* + ID_MODEL_FROM_DATABASE=GeForce GTS 250 P/N 512-P3-1151-TR + +pci:v000010DEd00000615sv00003842sd00001155* + ID_MODEL_FROM_DATABASE=GeForce GTS 250 P/N 01G-P3-1155-TR + +pci:v000010DEd00000615sv00003842sd00001156* + ID_MODEL_FROM_DATABASE=GeForce GTS 250 P/N 01G-P3-1156-TR + +pci:v000010DEd00000617* + ID_MODEL_FROM_DATABASE=G92M [GeForce 9800M GTX] + +pci:v000010DEd00000618* + ID_MODEL_FROM_DATABASE=G92M [GeForce GTX 260M] + +pci:v000010DEd00000619* + ID_MODEL_FROM_DATABASE=G92GL [Quadro FX 4700 X2] + +pci:v000010DEd0000061A* + ID_MODEL_FROM_DATABASE=G92GL [Quadro FX 3700] + +pci:v000010DEd0000061B* + ID_MODEL_FROM_DATABASE=G92GL [Quadro VX 200] + +pci:v000010DEd0000061C* + ID_MODEL_FROM_DATABASE=G92GLM [Quadro FX 3600M] + +pci:v000010DEd0000061D* + ID_MODEL_FROM_DATABASE=G92GLM [Quadro FX 2800M] + +pci:v000010DEd0000061E* + ID_MODEL_FROM_DATABASE=G92GLM [Quadro FX 3700M] + +pci:v000010DEd0000061F* + ID_MODEL_FROM_DATABASE=G92GLM [Quadro FX 3800M] + +pci:v000010DEd00000620* + ID_MODEL_FROM_DATABASE=G94 [GeForce 9800 GT] + +pci:v000010DEd00000621* + ID_MODEL_FROM_DATABASE=G94 [GeForce GT 230] + +pci:v000010DEd00000622* + ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GT] + +pci:v000010DEd00000622sv0000107Dsd00002AC1* + ID_MODEL_FROM_DATABASE=WinFast PX9600GT 1024MB + +pci:v000010DEd00000622sv00001458sd00003481* + ID_MODEL_FROM_DATABASE=GV-NX96T512HP + +pci:v000010DEd00000623* + ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GS] + +pci:v000010DEd00000624* + ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GT Green Edition] + +pci:v000010DEd00000625* + ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GSO 512] + +pci:v000010DEd00000626* + ID_MODEL_FROM_DATABASE=G94 [GeForce GT 130] + +pci:v000010DEd00000627* + ID_MODEL_FROM_DATABASE=G94 [GeForce GT 140] + +pci:v000010DEd00000628* + ID_MODEL_FROM_DATABASE=G94M [GeForce 9800M GTS] + +pci:v000010DEd0000062A* + ID_MODEL_FROM_DATABASE=G94M [GeForce 9700M GTS] + +pci:v000010DEd0000062B* + ID_MODEL_FROM_DATABASE=G94M [GeForce 9800M GS] + +pci:v000010DEd0000062C* + ID_MODEL_FROM_DATABASE=G94M [GeForce 9800M GTS] + +pci:v000010DEd0000062D* + ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GT] + +pci:v000010DEd0000062E* + ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GT] + +pci:v000010DEd0000062F* + ID_MODEL_FROM_DATABASE=G94 [GeForce 9800 S] + +pci:v000010DEd00000630* + ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GT] + +pci:v000010DEd00000631* + ID_MODEL_FROM_DATABASE=G94M [GeForce GTS 160M] + +pci:v000010DEd00000632* + ID_MODEL_FROM_DATABASE=G94M [GeForce GTS 150M] + +pci:v000010DEd00000633* + ID_MODEL_FROM_DATABASE=G94 [GeForce GT 220] + +pci:v000010DEd00000635* + ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GSO] + +pci:v000010DEd00000637* + ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GT] + +pci:v000010DEd00000638* + ID_MODEL_FROM_DATABASE=G94GL [Quadro FX 1800] + +pci:v000010DEd0000063A* + ID_MODEL_FROM_DATABASE=G94GLM [Quadro FX 2700M] + +pci:v000010DEd0000063F* + ID_MODEL_FROM_DATABASE=G94 [GeForce 9600 GE] + +pci:v000010DEd00000640* + ID_MODEL_FROM_DATABASE=G96 [GeForce 9500 GT] + +pci:v000010DEd00000641* + ID_MODEL_FROM_DATABASE=G96 [GeForce 9400 GT] + +pci:v000010DEd00000643* + ID_MODEL_FROM_DATABASE=G96 [GeForce 9500 GT] + +pci:v000010DEd00000644* + ID_MODEL_FROM_DATABASE=G96 [GeForce 9500 GS] + +pci:v000010DEd00000645* + ID_MODEL_FROM_DATABASE=G96 [GeForce 9500 GS] + +pci:v000010DEd00000646* + ID_MODEL_FROM_DATABASE=G96 [GeForce GT 120] + +pci:v000010DEd00000647* + ID_MODEL_FROM_DATABASE=G96M [GeForce 9600M GT] + +pci:v000010DEd00000648* + ID_MODEL_FROM_DATABASE=G96M [GeForce 9600M GS] + +pci:v000010DEd00000649* + ID_MODEL_FROM_DATABASE=G96M [GeForce 9600M GT] + +pci:v000010DEd0000064A* + ID_MODEL_FROM_DATABASE=G96M [GeForce 9700M GT] + +pci:v000010DEd0000064B* + ID_MODEL_FROM_DATABASE=G96M [GeForce 9500M G] + +pci:v000010DEd0000064C* + ID_MODEL_FROM_DATABASE=G96M [GeForce 9650M GT] + +pci:v000010DEd0000064D* + ID_MODEL_FROM_DATABASE=G96 [GeForce 9600 GT] + +pci:v000010DEd0000064E* + ID_MODEL_FROM_DATABASE=G96 [GeForce 9600 GT / 9800 GT] + +pci:v000010DEd00000651* + ID_MODEL_FROM_DATABASE=G96M [GeForce G 110M] + +pci:v000010DEd00000652* + ID_MODEL_FROM_DATABASE=G96M [GeForce GT 130M] + +pci:v000010DEd00000653* + ID_MODEL_FROM_DATABASE=G96M [GeForce GT 120M] + +pci:v000010DEd00000654* + ID_MODEL_FROM_DATABASE=G96M [GeForce GT 220M] + +pci:v000010DEd00000655* + ID_MODEL_FROM_DATABASE=G96 [GeForce GT 120] + +pci:v000010DEd00000656* + ID_MODEL_FROM_DATABASE=G96 [GeForce 9650 S] + +pci:v000010DEd00000658* + ID_MODEL_FROM_DATABASE=G96GL [Quadro FX 380] + +pci:v000010DEd00000659* + ID_MODEL_FROM_DATABASE=G96GL [Quadro FX 580] + +pci:v000010DEd0000065A* + ID_MODEL_FROM_DATABASE=G96GLM [Quadro FX 1700M] + +pci:v000010DEd0000065B* + ID_MODEL_FROM_DATABASE=G96 [GeForce 9400 GT] + +pci:v000010DEd0000065C* + ID_MODEL_FROM_DATABASE=G96GLM [Quadro FX 770M] + +pci:v000010DEd0000065D* + ID_MODEL_FROM_DATABASE=G96 [GeForce 9500 GA / 9600 GT / GTS 250] + +pci:v000010DEd0000065F* + ID_MODEL_FROM_DATABASE=G96 [GeForce G210] + +pci:v000010DEd000006C0* + ID_MODEL_FROM_DATABASE=GF100 [GeForce GTX 480] + +pci:v000010DEd000006C4* + ID_MODEL_FROM_DATABASE=GF100 [GeForce GTX 465] + +pci:v000010DEd000006CA* + ID_MODEL_FROM_DATABASE=GF100 [GeForce GTX 480M] + +pci:v000010DEd000006CD* + ID_MODEL_FROM_DATABASE=GF100 [GeForce GTX 470] + +pci:v000010DEd000006D1* + ID_MODEL_FROM_DATABASE=GF100GL [Tesla C2050 / C2070] + +pci:v000010DEd000006D1sv000010DEsd00000771* + ID_MODEL_FROM_DATABASE=Tesla C2050 + +pci:v000010DEd000006D1sv000010DEsd00000772* + ID_MODEL_FROM_DATABASE=Tesla C2070 + +pci:v000010DEd000006D2* + ID_MODEL_FROM_DATABASE=GF100GL [Tesla M2070] + +pci:v000010DEd000006D2sv000010DEsd00000774* + ID_MODEL_FROM_DATABASE=Tesla M2070 + +pci:v000010DEd000006D2sv000010DEsd00000830* + ID_MODEL_FROM_DATABASE=Tesla M2070 + +pci:v000010DEd000006D2sv000010DEsd00000842* + ID_MODEL_FROM_DATABASE=Tesla M2070 + +pci:v000010DEd000006D2sv000010DEsd0000088F* + ID_MODEL_FROM_DATABASE=Tesla X2070 + +pci:v000010DEd000006D2sv000010DEsd00000908* + ID_MODEL_FROM_DATABASE=Tesla M2070 + +pci:v000010DEd000006D8* + ID_MODEL_FROM_DATABASE=GF100GL [Quadro 6000] + +pci:v000010DEd000006D9* + ID_MODEL_FROM_DATABASE=GF100GL [Quadro 5000] + +pci:v000010DEd000006DA* + ID_MODEL_FROM_DATABASE=GF100GLM [Quadro 5000M] + +pci:v000010DEd000006DC* + ID_MODEL_FROM_DATABASE=GF100GL [Quadro 6000] + +pci:v000010DEd000006DD* + ID_MODEL_FROM_DATABASE=GF100GL [Quadro 4000] + +pci:v000010DEd000006DE* + ID_MODEL_FROM_DATABASE=GF100GL [Tesla T20 Processor] + +pci:v000010DEd000006DEsv000010DEsd00000773* + ID_MODEL_FROM_DATABASE=Tesla S2050 + +pci:v000010DEd000006DEsv000010DEsd0000082F* + ID_MODEL_FROM_DATABASE=Tesla M2050 + +pci:v000010DEd000006DEsv000010DEsd00000840* + ID_MODEL_FROM_DATABASE=Tesla X2070 + +pci:v000010DEd000006DEsv000010DEsd00000842* + ID_MODEL_FROM_DATABASE=Tesla M2050 + +pci:v000010DEd000006DEsv000010DEsd00000846* + ID_MODEL_FROM_DATABASE=Tesla M2050 + +pci:v000010DEd000006DEsv000010DEsd00000866* + ID_MODEL_FROM_DATABASE=Tesla M2050 + +pci:v000010DEd000006DEsv000010DEsd00000907* + ID_MODEL_FROM_DATABASE=Tesla M2050 + +pci:v000010DEd000006DEsv000010DEsd0000091E* + ID_MODEL_FROM_DATABASE=Tesla M2050 + +pci:v000010DEd000006DF* + ID_MODEL_FROM_DATABASE=GF100GL [Tesla M2070-Q] + +pci:v000010DEd000006DFsv000010DEsd0000084D* + ID_MODEL_FROM_DATABASE=Tesla M2070-Q + +pci:v000010DEd000006DFsv000010DEsd0000087F* + ID_MODEL_FROM_DATABASE=Tesla M2070-Q + +pci:v000010DEd000006E0* + ID_MODEL_FROM_DATABASE=G98 [GeForce 9300 GE] + +pci:v000010DEd000006E1* + ID_MODEL_FROM_DATABASE=G98 [GeForce 9300 GS] + +pci:v000010DEd000006E2* + ID_MODEL_FROM_DATABASE=G98 [GeForce 8400] + +pci:v000010DEd000006E3* + ID_MODEL_FROM_DATABASE=G98 [GeForce 8300 GS] + +pci:v000010DEd000006E4* + ID_MODEL_FROM_DATABASE=G98 [GeForce 8400 GS Rev. 2] + +pci:v000010DEd000006E4sv00001458sd00003475* + ID_MODEL_FROM_DATABASE=GV-NX84S256HE [GeForce 8400 GS] + +pci:v000010DEd000006E5* + ID_MODEL_FROM_DATABASE=G98M [GeForce 9300M GS] + +pci:v000010DEd000006E6* + ID_MODEL_FROM_DATABASE=G98 [GeForce G 100] + +pci:v000010DEd000006E7* + ID_MODEL_FROM_DATABASE=G98 [GeForce 9300 SE] + +pci:v000010DEd000006E8* + ID_MODEL_FROM_DATABASE=G98M [GeForce 9200M GS] + +pci:v000010DEd000006E9* + ID_MODEL_FROM_DATABASE=G98M [GeForce 9300M GS] + +pci:v000010DEd000006E9sv00001043sd000019B2* + ID_MODEL_FROM_DATABASE=U6V laptop + +pci:v000010DEd000006EA* + ID_MODEL_FROM_DATABASE=G86M [Quadro NVS 150M] + +pci:v000010DEd000006EB* + ID_MODEL_FROM_DATABASE=G98M [Quadro NVS 160M] + +pci:v000010DEd000006EC* + ID_MODEL_FROM_DATABASE=G98M [GeForce G 105M] + +pci:v000010DEd000006ED* + ID_MODEL_FROM_DATABASE=G98 [GeForce 9600 GT / 9800 GT] + +pci:v000010DEd000006EE* + ID_MODEL_FROM_DATABASE=G98 [GeForce 9600 GT / 9800 GT] + +pci:v000010DEd000006EF* + ID_MODEL_FROM_DATABASE=G98M [GeForce G 103M] + +pci:v000010DEd000006F1* + ID_MODEL_FROM_DATABASE=G98M [GeForce G 105M] + +pci:v000010DEd000006F8* + ID_MODEL_FROM_DATABASE=G98 [Quadro NVS 420] + +pci:v000010DEd000006F9* + ID_MODEL_FROM_DATABASE=G98GL [Quadro FX 370 LP] + +pci:v000010DEd000006FA* + ID_MODEL_FROM_DATABASE=G98 [Quadro NVS 450] + +pci:v000010DEd000006FB* + ID_MODEL_FROM_DATABASE=G98GLM [Quadro FX 370M] + +pci:v000010DEd000006FD* + ID_MODEL_FROM_DATABASE=G98 [Quadro NVS 295] + +pci:v000010DEd000006FF* + ID_MODEL_FROM_DATABASE=G98 [HICx16 + Graphics] + +pci:v000010DEd000006FFsv000010DEsd00000711* + ID_MODEL_FROM_DATABASE=HICx8 + Graphics + +pci:v000010DEd00000751* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller + +pci:v000010DEd00000751sv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd00000751sv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd00000751sv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd00000751sv00001849sd00000751* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Memory Controller + +pci:v000010DEd00000752* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SMBus + +pci:v000010DEd00000752sv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd00000752sv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd00000752sv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd00000752sv00001849sd00000752* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 SMBus + +pci:v000010DEd00000753* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Co-Processor + +pci:v000010DEd00000753sv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd00000753sv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd00000753sv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd00000753sv00001849sd00000753* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Co-Processor + +pci:v000010DEd00000754* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller + +pci:v000010DEd00000754sv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd00000754sv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd00000754sv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd00000754sv00001849sd00000754* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Memory Controller + +pci:v000010DEd00000759* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] IDE + +pci:v000010DEd00000759sv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd00000759sv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd00000759sv00001849sd00000759* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 IDE + +pci:v000010DEd0000075A* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Bridge + +pci:v000010DEd0000075Asv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd0000075Asv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd0000075Asv00001849sd0000075A* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Bridge + +pci:v000010DEd0000075B* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge + +pci:v000010DEd0000075Bsv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd0000075Bsv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd0000075Bsv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd0000075Bsv00001849sd0000075B* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Express Bridge + +pci:v000010DEd0000075C* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] LPC Bridge + +pci:v000010DEd0000075Csv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd0000075Csv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd0000075Csv00001849sd0000075C* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 LPC Bridge + +pci:v000010DEd0000075D* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] LPC Bridge + +pci:v000010DEd0000075Dsv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd00000760* + ID_MODEL_FROM_DATABASE=MCP77 Ethernet + +pci:v000010DEd00000760sv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd00000760sv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd00000760sv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd00000760sv00001849sd00000760* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Ethernet + +pci:v000010DEd00000761* + ID_MODEL_FROM_DATABASE=MCP77 Ethernet + +pci:v000010DEd00000762* + ID_MODEL_FROM_DATABASE=MCP77 Ethernet + +pci:v000010DEd00000763* + ID_MODEL_FROM_DATABASE=MCP77 Ethernet + +pci:v000010DEd00000774* + ID_MODEL_FROM_DATABASE=MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio + +pci:v000010DEd00000774sv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd00000774sv00001043sd000082FE* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd00000774sv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd00000774sv00001849sd00003662* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 High Definition Audio + +pci:v000010DEd00000778* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge + +pci:v000010DEd00000778sv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd00000778sv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd00000778sv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd00000778sv00001849sd00000778* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Express Bridge + +pci:v000010DEd0000077A* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] PCI Bridge + +pci:v000010DEd0000077Asv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd0000077Asv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd0000077Asv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd0000077Asv00001849sd0000077A* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Bridge + +pci:v000010DEd0000077B* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] OHCI USB 1.1 Controller + +pci:v000010DEd0000077Bsv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd0000077Bsv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd0000077Bsv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd0000077Bsv00001849sd0000077B* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller + +pci:v000010DEd0000077C* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] EHCI USB 2.0 Controller + +pci:v000010DEd0000077Csv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd0000077Csv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd0000077Csv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd0000077Csv00001849sd0000077C* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller + +pci:v000010DEd0000077D* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] OHCI USB 1.1 Controller + +pci:v000010DEd0000077Dsv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd0000077Dsv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd0000077Dsv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd0000077Dsv00001849sd0000077D* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller + +pci:v000010DEd0000077E* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] EHCI USB 2.0 Controller + +pci:v000010DEd0000077Esv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd0000077Esv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd0000077Esv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd0000077Esv00001849sd0000077E* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller + +pci:v000010DEd000007C0* + ID_MODEL_FROM_DATABASE=MCP73 Host Bridge + +pci:v000010DEd000007C0sv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007C1* + ID_MODEL_FROM_DATABASE=MCP73 Host Bridge + +pci:v000010DEd000007C1sv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007C2* + ID_MODEL_FROM_DATABASE=MCP73 Host Bridge + +pci:v000010DEd000007C5* + ID_MODEL_FROM_DATABASE=MCP73 Host Bridge + +pci:v000010DEd000007C8* + ID_MODEL_FROM_DATABASE=MCP73 Memory Controller + +pci:v000010DEd000007C8sv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007C8sv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007CB* + ID_MODEL_FROM_DATABASE=nForce 630i memory controller + +pci:v000010DEd000007CBsv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007CBsv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007CD* + ID_MODEL_FROM_DATABASE=nForce 630i memory controller + +pci:v000010DEd000007CDsv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007CDsv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007CE* + ID_MODEL_FROM_DATABASE=nForce 630i memory controller + +pci:v000010DEd000007CEsv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007CEsv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007CF* + ID_MODEL_FROM_DATABASE=nForce 630i memory controller + +pci:v000010DEd000007CFsv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007CFsv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007D0* + ID_MODEL_FROM_DATABASE=nForce 630i memory controller + +pci:v000010DEd000007D0sv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007D0sv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007D1* + ID_MODEL_FROM_DATABASE=nForce 630i memory controller + +pci:v000010DEd000007D1sv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007D1sv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007D2* + ID_MODEL_FROM_DATABASE=nForce 630i memory controller + +pci:v000010DEd000007D2sv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007D2sv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007D3* + ID_MODEL_FROM_DATABASE=nForce 630i memory controller + +pci:v000010DEd000007D3sv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007D3sv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007D6* + ID_MODEL_FROM_DATABASE=nForce 630i memory controller + +pci:v000010DEd000007D6sv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007D6sv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007D7* + ID_MODEL_FROM_DATABASE=MCP73 LPC Bridge + +pci:v000010DEd000007D7sv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007D7sv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007D8* + ID_MODEL_FROM_DATABASE=MCP73 SMBus + +pci:v000010DEd000007D8sv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007D8sv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007D9* + ID_MODEL_FROM_DATABASE=MCP73 Memory Controller + +pci:v000010DEd000007D9sv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007D9sv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007DA* + ID_MODEL_FROM_DATABASE=MCP73 Co-processor + +pci:v000010DEd000007DAsv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007DC* + ID_MODEL_FROM_DATABASE=MCP73 Ethernet + +pci:v000010DEd000007DD* + ID_MODEL_FROM_DATABASE=MCP73 Ethernet + +pci:v000010DEd000007DE* + ID_MODEL_FROM_DATABASE=MCP73 Ethernet + +pci:v000010DEd000007DF* + ID_MODEL_FROM_DATABASE=MCP73 Ethernet + +pci:v000010DEd000007E0* + ID_MODEL_FROM_DATABASE=C73 [GeForce 7150 / nForce 630i] + +pci:v000010DEd000007E0sv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd000007E1* + ID_MODEL_FROM_DATABASE=C73 [GeForce 7100 / nForce 630i] + +pci:v000010DEd000007E1sv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007E2* + ID_MODEL_FROM_DATABASE=C73 [GeForce 7050 / nForce 630i] + +pci:v000010DEd000007E3* + ID_MODEL_FROM_DATABASE=C73 [GeForce 7050 / nForce 610i] + +pci:v000010DEd000007E5* + ID_MODEL_FROM_DATABASE=C73 [GeForce 7100 / nForce 620i] + +pci:v000010DEd000007F0* + ID_MODEL_FROM_DATABASE=MCP73 IDE + +pci:v000010DEd000007F4* + ID_MODEL_FROM_DATABASE=GeForce 7100/nForce 630i SATA + +pci:v000010DEd000007F4sv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007F8* + ID_MODEL_FROM_DATABASE=MCP73 SATA RAID Controller + +pci:v000010DEd000007FC* + ID_MODEL_FROM_DATABASE=MCP73 High Definition Audio + +pci:v000010DEd000007FCsv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007FCsv000010DEsd000007FC* + ID_MODEL_FROM_DATABASE=MCP73 High Definition Audio + +pci:v000010DEd000007FE* + ID_MODEL_FROM_DATABASE=GeForce 7100/nForce 630i USB + +pci:v000010DEd000007FEsv00001019sd0000297A* + ID_MODEL_FROM_DATABASE=MCP73PVT-SM + +pci:v000010DEd000007FEsv00001AFAsd00007150* + ID_MODEL_FROM_DATABASE=JW-IN7150-HD + +pci:v000010DEd00000844* + ID_MODEL_FROM_DATABASE=C77 [GeForce 9100M G] + +pci:v000010DEd00000845* + ID_MODEL_FROM_DATABASE=C77 [GeForce 8200M G] + +pci:v000010DEd00000846* + ID_MODEL_FROM_DATABASE=C77 [GeForce 9200] + +pci:v000010DEd00000847* + ID_MODEL_FROM_DATABASE=C78 [GeForce 9100] + +pci:v000010DEd00000847sv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd00000848* + ID_MODEL_FROM_DATABASE=C77 [GeForce 8300] + +pci:v000010DEd00000849* + ID_MODEL_FROM_DATABASE=C77 [GeForce 8200] + +pci:v000010DEd00000849sv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd00000849sv00001849sd00000849* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 GeForce 8200 + +pci:v000010DEd0000084A* + ID_MODEL_FROM_DATABASE=C77 [nForce 730a] + +pci:v000010DEd0000084B* + ID_MODEL_FROM_DATABASE=C77 [GeForce 8200] + +pci:v000010DEd0000084C* + ID_MODEL_FROM_DATABASE=C77 [nForce 780a/980a SLI] + +pci:v000010DEd0000084D* + ID_MODEL_FROM_DATABASE=C77 [nForce 750a SLI] + +pci:v000010DEd0000084Dsv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D mGPU + +pci:v000010DEd0000084F* + ID_MODEL_FROM_DATABASE=C77 [GeForce 8100 / nForce 720a] + +pci:v000010DEd00000860* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9300] + +pci:v000010DEd00000861* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9400] + +pci:v000010DEd00000862* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9400M G] + +pci:v000010DEd00000863* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9400M] + +pci:v000010DEd00000864* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9300] + +pci:v000010DEd00000865* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9300/ION] + +pci:v000010DEd00000866* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9400M G] + +pci:v000010DEd00000867* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9400] + +pci:v000010DEd00000867sv0000106Bsd000000AD* + ID_MODEL_FROM_DATABASE=iMac 9,1 + +pci:v000010DEd00000868* + ID_MODEL_FROM_DATABASE=C79 [nForce 760i SLI] + +pci:v000010DEd00000869* + ID_MODEL_FROM_DATABASE=MCP7A [GeForce 9400] + +pci:v000010DEd0000086A* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9400] + +pci:v000010DEd0000086C* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9300 / nForce 730i] + +pci:v000010DEd0000086D* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9200] + +pci:v000010DEd0000086E* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9100M G] + +pci:v000010DEd0000086F* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9200M G] + +pci:v000010DEd00000870* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9400M] + +pci:v000010DEd00000871* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9200] + +pci:v000010DEd00000872* + ID_MODEL_FROM_DATABASE=C79 [GeForce G102M] + +pci:v000010DEd00000873* + ID_MODEL_FROM_DATABASE=C79 [GeForce G102M] + +pci:v000010DEd00000874* + ID_MODEL_FROM_DATABASE=C79 [ION] + +pci:v000010DEd00000876* + ID_MODEL_FROM_DATABASE=ION VGA [GeForce 9400M] + +pci:v000010DEd0000087A* + ID_MODEL_FROM_DATABASE=C79 [GeForce 9400] + +pci:v000010DEd0000087D* + ID_MODEL_FROM_DATABASE=ION VGA + +pci:v000010DEd0000087Dsv000019DAsd0000A123* + ID_MODEL_FROM_DATABASE=IONITX-F-E + +pci:v000010DEd0000087E* + ID_MODEL_FROM_DATABASE=ION LE VGA + +pci:v000010DEd0000087F* + ID_MODEL_FROM_DATABASE=ION LE VGA + +pci:v000010DEd000008A2* + ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M] + +pci:v000010DEd000008A3* + ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M] + +pci:v000010DEd000008A4* + ID_MODEL_FROM_DATABASE=MCP89 [GeForce 320M] + +pci:v000010DEd00000A20* + ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 220] + +pci:v000010DEd00000A20sv00001043sd00008311* + ID_MODEL_FROM_DATABASE=ENGT220/DI/1GD3(LP)/V2 + +pci:v000010DEd00000A21* + ID_MODEL_FROM_DATABASE=GT216M [GeForce GT 330M] + +pci:v000010DEd00000A22* + ID_MODEL_FROM_DATABASE=GT216 [GeForce 315] + +pci:v000010DEd00000A23* + ID_MODEL_FROM_DATABASE=GT216 [GeForce 210] + +pci:v000010DEd00000A26* + ID_MODEL_FROM_DATABASE=GT216 [GeForce 405] + +pci:v000010DEd00000A27* + ID_MODEL_FROM_DATABASE=GT216 [GeForce 405] + +pci:v000010DEd00000A28* + ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 230M] + +pci:v000010DEd00000A29* + ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 330M] + +pci:v000010DEd00000A2A* + ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 230M] + +pci:v000010DEd00000A2B* + ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 330M] + +pci:v000010DEd00000A2C* + ID_MODEL_FROM_DATABASE=GT216 [NVS 5100M] + +pci:v000010DEd00000A2D* + ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 320M] + +pci:v000010DEd00000A30* + ID_MODEL_FROM_DATABASE=GT216 [GeForce 505] + +pci:v000010DEd00000A32* + ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 415] + +pci:v000010DEd00000A34* + ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 240M] + +pci:v000010DEd00000A35* + ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 325M] + +pci:v000010DEd00000A38* + ID_MODEL_FROM_DATABASE=GT216GL [Quadro 400] + +pci:v000010DEd00000A3C* + ID_MODEL_FROM_DATABASE=GT216GLM [Quadro FX 880M] + +pci:v000010DEd00000A60* + ID_MODEL_FROM_DATABASE=GT218 [GeForce G210] + +pci:v000010DEd00000A62* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 205] + +pci:v000010DEd00000A63* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 310] + +pci:v000010DEd00000A64* + ID_MODEL_FROM_DATABASE=GT218 [ION] + +pci:v000010DEd00000A65* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 210] + +pci:v000010DEd00000A65sv00001043sd00008334* + ID_MODEL_FROM_DATABASE=EN210 SILENT + +pci:v000010DEd00000A66* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 310] + +pci:v000010DEd00000A67* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 315] + +pci:v000010DEd00000A68* + ID_MODEL_FROM_DATABASE=GT218M [GeForce G 105M] + +pci:v000010DEd00000A69* + ID_MODEL_FROM_DATABASE=GT218M [GeForce G 105M] + +pci:v000010DEd00000A6A* + ID_MODEL_FROM_DATABASE=GT218 [NVS 2100M] + +pci:v000010DEd00000A6C* + ID_MODEL_FROM_DATABASE=GT218 [NVS 3100M] + +pci:v000010DEd00000A6Csv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v000010DEd00000A6Csv000017AAsd00002142* + ID_MODEL_FROM_DATABASE=ThinkPad T410 + +pci:v000010DEd00000A6E* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 305M] + +pci:v000010DEd00000A6F* + ID_MODEL_FROM_DATABASE=GT218 [ION] + +pci:v000010DEd00000A70* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 310M] + +pci:v000010DEd00000A71* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 305M] + +pci:v000010DEd00000A72* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 310M] + +pci:v000010DEd00000A73* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 305M] + +pci:v000010DEd00000A74* + ID_MODEL_FROM_DATABASE=GT218 [GeForce G210M] + +pci:v000010DEd00000A75* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 310M] + +pci:v000010DEd00000A76* + ID_MODEL_FROM_DATABASE=GT218 [ION 2] + +pci:v000010DEd00000A78* + ID_MODEL_FROM_DATABASE=GT218GL [Quadro FX 380 LP] + +pci:v000010DEd00000A7A* + ID_MODEL_FROM_DATABASE=GT218M [GeForce 315M] + +pci:v000010DEd00000A7B* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 505] + +pci:v000010DEd00000A7C* + ID_MODEL_FROM_DATABASE=GT218GLM [Quadro FX 380M] + +pci:v000010DEd00000A80* + ID_MODEL_FROM_DATABASE=MCP79 Host Bridge + +pci:v000010DEd00000A81* + ID_MODEL_FROM_DATABASE=MCP79 Host Bridge + +pci:v000010DEd00000A82* + ID_MODEL_FROM_DATABASE=MCP79 Host Bridge + +pci:v000010DEd00000A83* + ID_MODEL_FROM_DATABASE=MCP79 Host Bridge + +pci:v000010DEd00000A84* + ID_MODEL_FROM_DATABASE=MCP79 Host Bridge + +pci:v000010DEd00000A85* + ID_MODEL_FROM_DATABASE=MCP79 Host Bridge + +pci:v000010DEd00000A86* + ID_MODEL_FROM_DATABASE=MCP79 Host Bridge + +pci:v000010DEd00000A87* + ID_MODEL_FROM_DATABASE=MCP79 Host Bridge + +pci:v000010DEd00000A88* + ID_MODEL_FROM_DATABASE=MCP79 Memory Controller + +pci:v000010DEd00000A89* + ID_MODEL_FROM_DATABASE=MCP79 Memory Controller + +pci:v000010DEd00000A98* + ID_MODEL_FROM_DATABASE=MCP79 Memory Controller + +pci:v000010DEd00000A98sv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=iMac 9,1 + +pci:v000010DEd00000AA0* + ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge + +pci:v000010DEd00000AA0sv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000AA2* + ID_MODEL_FROM_DATABASE=MCP79 SMBus + +pci:v000010DEd00000AA2sv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000AA2sv000019DAsd0000A123* + ID_MODEL_FROM_DATABASE=IONITX-F-E + +pci:v000010DEd00000AA3* + ID_MODEL_FROM_DATABASE=MCP79 Co-processor + +pci:v000010DEd00000AA3sv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000AA3sv000019DAsd0000A123* + ID_MODEL_FROM_DATABASE=IONITX-F-E + +pci:v000010DEd00000AA4* + ID_MODEL_FROM_DATABASE=MCP79 Memory Controller + +pci:v000010DEd00000AA4sv000019DAsd0000A123* + ID_MODEL_FROM_DATABASE=IONITX-F-E + +pci:v000010DEd00000AA5* + ID_MODEL_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller + +pci:v000010DEd00000AA5sv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000AA5sv000019DAsd0000A123* + ID_MODEL_FROM_DATABASE=IONITX-F-E + +pci:v000010DEd00000AA6* + ID_MODEL_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller + +pci:v000010DEd00000AA6sv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000AA6sv000019DAsd0000A123* + ID_MODEL_FROM_DATABASE=IONITX-F-E + +pci:v000010DEd00000AA7* + ID_MODEL_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller + +pci:v000010DEd00000AA7sv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000AA7sv000019DAsd0000A123* + ID_MODEL_FROM_DATABASE=IONITX-F-E + +pci:v000010DEd00000AA8* + ID_MODEL_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller + +pci:v000010DEd00000AA9* + ID_MODEL_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller + +pci:v000010DEd00000AA9sv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000AA9sv000019DAsd0000A123* + ID_MODEL_FROM_DATABASE=IONITX-F-E + +pci:v000010DEd00000AAA* + ID_MODEL_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller + +pci:v000010DEd00000AAB* + ID_MODEL_FROM_DATABASE=MCP79 PCI Bridge + +pci:v000010DEd00000AABsv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000AAC* + ID_MODEL_FROM_DATABASE=MCP79 LPC Bridge + +pci:v000010DEd00000AAD* + ID_MODEL_FROM_DATABASE=MCP79 LPC Bridge + +pci:v000010DEd00000AADsv000019DAsd0000A123* + ID_MODEL_FROM_DATABASE=IONITX-F-E + +pci:v000010DEd00000AAE* + ID_MODEL_FROM_DATABASE=MCP79 LPC Bridge + +pci:v000010DEd00000AAEsv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000AAF* + ID_MODEL_FROM_DATABASE=MCP79 LPC Bridge + +pci:v000010DEd00000AB0* + ID_MODEL_FROM_DATABASE=MCP79 Ethernet + +pci:v000010DEd00000AB0sv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000AB0sv000019DAsd0000A123* + ID_MODEL_FROM_DATABASE=IONITX-F-E + +pci:v000010DEd00000AB1* + ID_MODEL_FROM_DATABASE=MCP79 Ethernet + +pci:v000010DEd00000AB2* + ID_MODEL_FROM_DATABASE=MCP79 Ethernet + +pci:v000010DEd00000AB3* + ID_MODEL_FROM_DATABASE=MCP79 Ethernet + +pci:v000010DEd00000AB4* + ID_MODEL_FROM_DATABASE=MCP79 SATA Controller + +pci:v000010DEd00000AB4sv000019DAsd0000A123* + ID_MODEL_FROM_DATABASE=IONITX-F-E + +pci:v000010DEd00000AB5* + ID_MODEL_FROM_DATABASE=MCP79 SATA Controller + +pci:v000010DEd00000AB6* + ID_MODEL_FROM_DATABASE=MCP79 SATA Controller + +pci:v000010DEd00000AB7* + ID_MODEL_FROM_DATABASE=MCP79 SATA Controller + +pci:v000010DEd00000AB8* + ID_MODEL_FROM_DATABASE=MCP79 AHCI Controller + +pci:v000010DEd00000AB9* + ID_MODEL_FROM_DATABASE=MCP79 AHCI Controller + +pci:v000010DEd00000AB9sv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000ABA* + ID_MODEL_FROM_DATABASE=MCP79 AHCI Controller + +pci:v000010DEd00000ABB* + ID_MODEL_FROM_DATABASE=MCP79 AHCI Controller + +pci:v000010DEd00000ABC* + ID_MODEL_FROM_DATABASE=MCP79 RAID Controller + +pci:v000010DEd00000ABD* + ID_MODEL_FROM_DATABASE=MCP79 RAID Controller + +pci:v000010DEd00000ABE* + ID_MODEL_FROM_DATABASE=MCP79 RAID Controller + +pci:v000010DEd00000ABF* + ID_MODEL_FROM_DATABASE=MCP79 RAID Controller + +pci:v000010DEd00000AC0* + ID_MODEL_FROM_DATABASE=MCP79 High Definition Audio + +pci:v000010DEd00000AC0sv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000AC1* + ID_MODEL_FROM_DATABASE=MCP79 High Definition Audio + +pci:v000010DEd00000AC2* + ID_MODEL_FROM_DATABASE=MCP79 High Definition Audio + +pci:v000010DEd00000AC3* + ID_MODEL_FROM_DATABASE=MCP79 High Definition Audio + +pci:v000010DEd00000AC4* + ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge + +pci:v000010DEd00000AC4sv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000AC5* + ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge + +pci:v000010DEd00000AC6* + ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge + +pci:v000010DEd00000AC6sv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000AC7* + ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge + +pci:v000010DEd00000AC7sv000010DEsd0000CB79* + ID_MODEL_FROM_DATABASE=Apple iMac 9,1 + +pci:v000010DEd00000AC8* + ID_MODEL_FROM_DATABASE=MCP79 PCI Express Bridge + +pci:v000010DEd00000AD0* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SATA Controller (non-AHCI mode) + +pci:v000010DEd00000AD0sv00001462sd00007508* + ID_MODEL_FROM_DATABASE=K9N2GM-FIH + +pci:v000010DEd00000AD0sv00001849sd00000AD0* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 IDE + +pci:v000010DEd00000AD4* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] AHCI Controller + +pci:v000010DEd00000AD4sv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000010DEd00000AD4sv00001043sd000082E8* + ID_MODEL_FROM_DATABASE=M3N72-D + +pci:v000010DEd00000AD4sv00001849sd00000AD4* + ID_MODEL_FROM_DATABASE=K10N78FullHD-hSLI R3.0 AHCI Controller + +pci:v000010DEd00000AD8* + ID_MODEL_FROM_DATABASE=MCP78S [GeForce 8200] SATA Controller (RAID mode) + +pci:v000010DEd00000BE2* + ID_MODEL_FROM_DATABASE=High Definition Audio Controller + +pci:v000010DEd00000BE2sv00001043sd00008311* + ID_MODEL_FROM_DATABASE=ENGT220/DI/1GD3(LP)/V2 + +pci:v000010DEd00000BE3* + ID_MODEL_FROM_DATABASE=High Definition Audio Controller + +pci:v000010DEd00000BE3sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v000010DEd00000BE3sv000010DEsd0000066D* + ID_MODEL_FROM_DATABASE=G98 [GeForce 8400GS] + +pci:v000010DEd00000BE4* + ID_MODEL_FROM_DATABASE=High Definition Audio Controller + +pci:v000010DEd00000BE5* + ID_MODEL_FROM_DATABASE=GF100 High Definition Audio Controller + +pci:v000010DEd00000BE9* + ID_MODEL_FROM_DATABASE=GF106 High Definition Audio Controller + +pci:v000010DEd00000BE9sv00001558sd00008687* + ID_MODEL_FROM_DATABASE=CLEVO/KAPOK W860CU + +pci:v000010DEd00000BE9sv00003842sd00001452* + ID_MODEL_FROM_DATABASE=GeForce GTS 450 + +pci:v000010DEd00000BEA* + ID_MODEL_FROM_DATABASE=GF108 High Definition Audio Controller + +pci:v000010DEd00000BEAsv00003842sd00001430* + ID_MODEL_FROM_DATABASE=GeForce GT 430 + +pci:v000010DEd00000BEB* + ID_MODEL_FROM_DATABASE=GF104 High Definition Audio Controller + +pci:v000010DEd00000BEBsv00001462sd00002322* + ID_MODEL_FROM_DATABASE=N460GTX Cyclone 1GD5/OC + +pci:v000010DEd00000BEE* + ID_MODEL_FROM_DATABASE=GF116 High Definition Audio Controller + +pci:v000010DEd00000CA0* + ID_MODEL_FROM_DATABASE=GT215 [GeForce GT 330] + +pci:v000010DEd00000CA2* + ID_MODEL_FROM_DATABASE=GT215 [GeForce GT 320] + +pci:v000010DEd00000CA3* + ID_MODEL_FROM_DATABASE=GT215 [GeForce GT 240] + +pci:v000010DEd00000CA4* + ID_MODEL_FROM_DATABASE=GT215 [GeForce GT 340] + +pci:v000010DEd00000CA5* + ID_MODEL_FROM_DATABASE=GT215 [GeForce GT 220] + +pci:v000010DEd00000CA7* + ID_MODEL_FROM_DATABASE=GT215 [GeForce GT 330] + +pci:v000010DEd00000CA8* + ID_MODEL_FROM_DATABASE=GT215 [GeForce GTS 260M] + +pci:v000010DEd00000CA9* + ID_MODEL_FROM_DATABASE=GT215 [GeForce GTS 250M] + +pci:v000010DEd00000CAC* + ID_MODEL_FROM_DATABASE=GT215 [GeForce GT 220/315] + +pci:v000010DEd00000CAF* + ID_MODEL_FROM_DATABASE=GT215 [GeForce GT 335M] + +pci:v000010DEd00000CB0* + ID_MODEL_FROM_DATABASE=GT215 [GeForce GTS 350M] + +pci:v000010DEd00000CB1* + ID_MODEL_FROM_DATABASE=GT215 [GeForce GTS 360M] + +pci:v000010DEd00000CBC* + ID_MODEL_FROM_DATABASE=GT215GLM [Quadro FX 1800M] + +pci:v000010DEd00000D60* + ID_MODEL_FROM_DATABASE=MCP89 HOST Bridge + +pci:v000010DEd00000D68* + ID_MODEL_FROM_DATABASE=MCP89 Memory Controller + +pci:v000010DEd00000D69* + ID_MODEL_FROM_DATABASE=MCP89 Memory Controller + +pci:v000010DEd00000D76* + ID_MODEL_FROM_DATABASE=MCP89 PCI Express Bridge + +pci:v000010DEd00000D79* + ID_MODEL_FROM_DATABASE=MCP89 SMBus + +pci:v000010DEd00000D7A* + ID_MODEL_FROM_DATABASE=MCP89 Co-Processor + +pci:v000010DEd00000D7B* + ID_MODEL_FROM_DATABASE=MCP89 Memory Controller + +pci:v000010DEd00000D7D* + ID_MODEL_FROM_DATABASE=MCP89 Ethernet + +pci:v000010DEd00000D80* + ID_MODEL_FROM_DATABASE=MCP89 LPC Bridge + +pci:v000010DEd00000D85* + ID_MODEL_FROM_DATABASE=MCP89 SATA Controller + +pci:v000010DEd00000D88* + ID_MODEL_FROM_DATABASE=MCP89 SATA Controller (AHCI mode) + +pci:v000010DEd00000D89* + ID_MODEL_FROM_DATABASE=MCP89 SATA Controller (AHCI mode) + +pci:v000010DEd00000D8D* + ID_MODEL_FROM_DATABASE=MCP89 SATA Controller (RAID mode) + +pci:v000010DEd00000D94* + ID_MODEL_FROM_DATABASE=MCP89 High Definition Audio + +pci:v000010DEd00000D9C* + ID_MODEL_FROM_DATABASE=MCP89 OHCI USB 1.1 Controller + +pci:v000010DEd00000D9D* + ID_MODEL_FROM_DATABASE=MCP89 EHCI USB 2.0 Controller + +pci:v000010DEd00000DC0* + ID_MODEL_FROM_DATABASE=GF106 [GeForce GT 440] + +pci:v000010DEd00000DC4* + ID_MODEL_FROM_DATABASE=GF106 [GeForce GTS 450] + +pci:v000010DEd00000DC5* + ID_MODEL_FROM_DATABASE=GF106 [GeForce GTS 450 OEM] + +pci:v000010DEd00000DC6* + ID_MODEL_FROM_DATABASE=GF106 [GeForce GTS 450] + +pci:v000010DEd00000DCD* + ID_MODEL_FROM_DATABASE=GF106M [GeForce GT 555M] + +pci:v000010DEd00000DCE* + ID_MODEL_FROM_DATABASE=GF106M [GeForce GT 555M] + +pci:v000010DEd00000DD1* + ID_MODEL_FROM_DATABASE=GF106M [GeForce GTX 460M] + +pci:v000010DEd00000DD1sv00001558sd00008687* + ID_MODEL_FROM_DATABASE=CLEVO/KAPOK W860CU + +pci:v000010DEd00000DD2* + ID_MODEL_FROM_DATABASE=GF106M [GeForce GT 445M] + +pci:v000010DEd00000DD3* + ID_MODEL_FROM_DATABASE=GF106M [GeForce GT 435M] + +pci:v000010DEd00000DD6* + ID_MODEL_FROM_DATABASE=GF106M [GeForce GT 550M] + +pci:v000010DEd00000DD8* + ID_MODEL_FROM_DATABASE=GF106GL [Quadro 2000] + +pci:v000010DEd00000DD8sv000010DEsd00000914* + ID_MODEL_FROM_DATABASE=Quadro 2000D + +pci:v000010DEd00000DDA* + ID_MODEL_FROM_DATABASE=GF106GLM [Quadro 2000M] + +pci:v000010DEd00000DE0* + ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 440] + +pci:v000010DEd00000DE1* + ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 430] + +pci:v000010DEd00000DE1sv00003842sd00001430* + ID_MODEL_FROM_DATABASE=GeForce GT 430 + +pci:v000010DEd00000DE2* + ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 420] + +pci:v000010DEd00000DE3* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 635M] + +pci:v000010DEd00000DE4* + ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 520] + +pci:v000010DEd00000DE5* + ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 530] + +pci:v000010DEd00000DE8* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 620M] + +pci:v000010DEd00000DE9* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 630M] + +pci:v000010DEd00000DEA* + ID_MODEL_FROM_DATABASE=GF108M [GeForce 610M] + +pci:v000010DEd00000DEAsv000017AAsd0000365A* + ID_MODEL_FROM_DATABASE=GeForce 615 + +pci:v000010DEd00000DEAsv000017AAsd0000365B* + ID_MODEL_FROM_DATABASE=GeForce 615 + +pci:v000010DEd00000DEAsv000017AAsd0000365E* + ID_MODEL_FROM_DATABASE=GeForce 615 + +pci:v000010DEd00000DEAsv000017AAsd00003660* + ID_MODEL_FROM_DATABASE=GeForce 615 + +pci:v000010DEd00000DEAsv000017AAsd0000366C* + ID_MODEL_FROM_DATABASE=GeForce 615 + +pci:v000010DEd00000DEB* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 555M] + +pci:v000010DEd00000DEC* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 525M] + +pci:v000010DEd00000DED* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 520M] + +pci:v000010DEd00000DEE* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 415M] + +pci:v000010DEd00000DEF* + ID_MODEL_FROM_DATABASE=GF108M [NVS 5400M] + +pci:v000010DEd00000DF0* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 425M] + +pci:v000010DEd00000DF1* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 420M] + +pci:v000010DEd00000DF2* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 435M] + +pci:v000010DEd00000DF3* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 420M] + +pci:v000010DEd00000DF4* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 540M] + +pci:v000010DEd00000DF5* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 525M] + +pci:v000010DEd00000DF6* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 550M] + +pci:v000010DEd00000DF7* + ID_MODEL_FROM_DATABASE=GF108M [GeForce GT 520M] + +pci:v000010DEd00000DF8* + ID_MODEL_FROM_DATABASE=GF108GL [Quadro 600] + +pci:v000010DEd00000DF9* + ID_MODEL_FROM_DATABASE=GF108GLM [Quadro 500M] + +pci:v000010DEd00000DFA* + ID_MODEL_FROM_DATABASE=GF108GLM [Quadro 1000M] + +pci:v000010DEd00000DFC* + ID_MODEL_FROM_DATABASE=GF108GLM [NVS 5200M] + +pci:v000010DEd00000E08* + ID_MODEL_FROM_DATABASE=GF119 HDMI Audio Controller + +pci:v000010DEd00000E08sv000010B0sd0000104A* + ID_MODEL_FROM_DATABASE=Gainward GeForce GT 610 + +pci:v000010DEd00000E09* + ID_MODEL_FROM_DATABASE=GF110 High Definition Audio Controller + +pci:v000010DEd00000E0A* + ID_MODEL_FROM_DATABASE=GK104 HDMI Audio Controller + +pci:v000010DEd00000E0C* + ID_MODEL_FROM_DATABASE=GF114 HDMI Audio Controller + +pci:v000010DEd00000E1A* + ID_MODEL_FROM_DATABASE=GK110 HDMI Audio [GeForce GTX Titan] + +pci:v000010DEd00000E1B* + ID_MODEL_FROM_DATABASE=GK107 HDMI Audio Controller + +pci:v000010DEd00000E1Bsv00001043sd00008428* + ID_MODEL_FROM_DATABASE=GTX650-DC-1GD5 + +pci:v000010DEd00000E22* + ID_MODEL_FROM_DATABASE=GF104 [GeForce GTX 460] + +pci:v000010DEd00000E22sv00001462sd00002322* + ID_MODEL_FROM_DATABASE=N460GTX Cyclone 1GD5/OC + +pci:v000010DEd00000E23* + ID_MODEL_FROM_DATABASE=GF104 [GeForce GTX 460 SE] + +pci:v000010DEd00000E24* + ID_MODEL_FROM_DATABASE=GF104 [GeForce GTX 460 OEM] + +pci:v000010DEd00000E30* + ID_MODEL_FROM_DATABASE=GF104 [GeForce GTX 470M] + +pci:v000010DEd00000E31* + ID_MODEL_FROM_DATABASE=GF104 [GeForce GTX 485M] + +pci:v000010DEd00000E3A* + ID_MODEL_FROM_DATABASE=GF104GLM [Quadro 3000M] + +pci:v000010DEd00000E3B* + ID_MODEL_FROM_DATABASE=GF104GLM [Quadro 4000M] + +pci:v000010DEd00000F00* + ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 630] + +pci:v000010DEd00000F01* + ID_MODEL_FROM_DATABASE=GF108 [GeForce GT 620] + +pci:v000010DEd00000FC0* + ID_MODEL_FROM_DATABASE=GK107 [GeForce GT 640 OEM] + +pci:v000010DEd00000FC1* + ID_MODEL_FROM_DATABASE=GK107 [GeForce GT 640] + +pci:v000010DEd00000FC2* + ID_MODEL_FROM_DATABASE=GK107 [GeForce GT 630 OEM] + +pci:v000010DEd00000FC6* + ID_MODEL_FROM_DATABASE=GK107 [GeForce GTX 650] + +pci:v000010DEd00000FC6sv00001043sd00008428* + ID_MODEL_FROM_DATABASE=GTX650-DC-1GD5 + +pci:v000010DEd00000FD1* + ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 650M / GTX 660M LE] + +pci:v000010DEd00000FD1sv00001043sd00002103* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v000010DEd00000FD2* + ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 640M] + +pci:v000010DEd00000FD3* + ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 640M LE] + +pci:v000010DEd00000FD4* + ID_MODEL_FROM_DATABASE=GK107M [GeForce GTX 660M] + +pci:v000010DEd00000FD5* + ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 650M Mac Edition] + +pci:v000010DEd00000FD8* + ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 640M Mac Edition] + +pci:v000010DEd00000FD9* + ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 645M] + +pci:v000010DEd00000FE1* + ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 730M] + +pci:v000010DEd00000FE4* + ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 750M] + +pci:v000010DEd00000FF2* + ID_MODEL_FROM_DATABASE=GK107GL [GRID K1] + +pci:v000010DEd00000FF9* + ID_MODEL_FROM_DATABASE=GK107GL [Quadro K2000D] + +pci:v000010DEd00000FFA* + ID_MODEL_FROM_DATABASE=GK107GL [Quadro K600] + +pci:v000010DEd00000FFB* + ID_MODEL_FROM_DATABASE=GK107GLM [Quadro K2000M] + +pci:v000010DEd00000FFC* + ID_MODEL_FROM_DATABASE=GK107GLM [Quadro K1000M] + +pci:v000010DEd00000FFD* + ID_MODEL_FROM_DATABASE=GK107 [NVS 510] + +pci:v000010DEd00000FFE* + ID_MODEL_FROM_DATABASE=GK107GL [Quadro K2000] + +pci:v000010DEd00000FFF* + ID_MODEL_FROM_DATABASE=GK107GL [Quadro 410] + +pci:v000010DEd00001005* + ID_MODEL_FROM_DATABASE=GK110 [GeForce GTX Titan] + +pci:v000010DEd00001005sv00001043sd00008451* + ID_MODEL_FROM_DATABASE=GTXTITAN-6GD5 + +pci:v000010DEd00001005sv000010DEsd00001035* + ID_MODEL_FROM_DATABASE=GeForce GTX Titan + +pci:v000010DEd00001005sv00003842sd00002790* + ID_MODEL_FROM_DATABASE=GeForce GTX Titan + +pci:v000010DEd00001005sv00003842sd00002791* + ID_MODEL_FROM_DATABASE=GeForce GTX Titan SC + +pci:v000010DEd00001005sv00003842sd00002793* + ID_MODEL_FROM_DATABASE=GeForce GTX Titan SC Signature + +pci:v000010DEd00001005sv00003842sd00002794* + ID_MODEL_FROM_DATABASE=GeForce GTX Titan SC Hydro Copper + +pci:v000010DEd00001005sv00003842sd00002795* + ID_MODEL_FROM_DATABASE=GeForce GTX Titan SC Hydro Copper Signature + +pci:v000010DEd00001021* + ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20Xm] + +pci:v000010DEd00001022* + ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20c] + +pci:v000010DEd00001026* + ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20s] + +pci:v000010DEd00001028* + ID_MODEL_FROM_DATABASE=GK110GL [Tesla K20m] + +pci:v000010DEd00001040* + ID_MODEL_FROM_DATABASE=GF119 [GeForce GT 520] + +pci:v000010DEd00001042* + ID_MODEL_FROM_DATABASE=GF119 [GeForce 510] + +pci:v000010DEd00001048* + ID_MODEL_FROM_DATABASE=GF119 [GeForce 605] + +pci:v000010DEd00001049* + ID_MODEL_FROM_DATABASE=GF119 [GeForce GT 620 OEM] + +pci:v000010DEd0000104A* + ID_MODEL_FROM_DATABASE=GF119 [GeForce GT 610] + +pci:v000010DEd0000104Asv000010B0sd0000104A* + ID_MODEL_FROM_DATABASE=Gainward GeForce GT 610 + +pci:v000010DEd0000104B* + ID_MODEL_FROM_DATABASE=GF119 [GeForce GT 625 OEM] + +pci:v000010DEd00001050* + ID_MODEL_FROM_DATABASE=GF119M [GeForce GT 520M] + +pci:v000010DEd00001051* + ID_MODEL_FROM_DATABASE=GF119M [GeForce GT 520MX] + +pci:v000010DEd00001052* + ID_MODEL_FROM_DATABASE=GF119M [GeForce GT 520M] + +pci:v000010DEd00001054* + ID_MODEL_FROM_DATABASE=GF119M [GeForce 410M] + +pci:v000010DEd00001055* + ID_MODEL_FROM_DATABASE=GF119M [GeForce 410M] + +pci:v000010DEd00001056* + ID_MODEL_FROM_DATABASE=GF119M [Quadro NVS 4200M] + +pci:v000010DEd00001057* + ID_MODEL_FROM_DATABASE=GF119M [Quadro NVS 4200M] + +pci:v000010DEd00001058* + ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] + +pci:v000010DEd0000105A* + ID_MODEL_FROM_DATABASE=GF119M [GeForce 610M] + +pci:v000010DEd0000107C* + ID_MODEL_FROM_DATABASE=GF119 [NVS 315] + +pci:v000010DEd0000107D* + ID_MODEL_FROM_DATABASE=GF119 [NVS 310] + +pci:v000010DEd00001080* + ID_MODEL_FROM_DATABASE=GF110 [GeForce GTX 580] + +pci:v000010DEd00001081* + ID_MODEL_FROM_DATABASE=GF110 [GeForce GTX 570] + +pci:v000010DEd00001081sv000010DEsd0000087E* + ID_MODEL_FROM_DATABASE=Leadtek WinFast GTX 570 + +pci:v000010DEd00001082* + ID_MODEL_FROM_DATABASE=GF110 [GeForce GTX 560 Ti OEM] + +pci:v000010DEd00001084* + ID_MODEL_FROM_DATABASE=GF110 [GeForce GTX 560 OEM] + +pci:v000010DEd00001086* + ID_MODEL_FROM_DATABASE=GF110 [GeForce GTX 570 Rev. 2] + +pci:v000010DEd00001087* + ID_MODEL_FROM_DATABASE=GF110 [GeForce GTX 560 Ti 448 Cores] + +pci:v000010DEd00001088* + ID_MODEL_FROM_DATABASE=GF110 [GeForce GTX 590] + +pci:v000010DEd00001089* + ID_MODEL_FROM_DATABASE=GF110 [GeForce GTX 580] + +pci:v000010DEd0000108B* + ID_MODEL_FROM_DATABASE=GF110 [GeForce GTX 580] + +pci:v000010DEd00001091* + ID_MODEL_FROM_DATABASE=GF110GL [Tesla M2090] + +pci:v000010DEd00001091sv000010DEsd0000088E* + ID_MODEL_FROM_DATABASE=Tesla X2090 + +pci:v000010DEd00001091sv000010DEsd00000891* + ID_MODEL_FROM_DATABASE=Tesla X2090 + +pci:v000010DEd00001094* + ID_MODEL_FROM_DATABASE=GF110GL [Tesla M2075] + +pci:v000010DEd00001094sv000010DEsd00000888* + ID_MODEL_FROM_DATABASE=Tesla M2075 + +pci:v000010DEd00001096* + ID_MODEL_FROM_DATABASE=GF110GL [Tesla C2050 / C2075] + +pci:v000010DEd00001096sv000010DEsd00000910* + ID_MODEL_FROM_DATABASE=Tesla C2075 + +pci:v000010DEd00001096sv000010DEsd00000911* + ID_MODEL_FROM_DATABASE=Tesla C2050 + +pci:v000010DEd0000109A* + ID_MODEL_FROM_DATABASE=GF100GLM [Quadro 5010M] + +pci:v000010DEd0000109B* + ID_MODEL_FROM_DATABASE=GF100GL [Quadro 7000] + +pci:v000010DEd0000109Bsv000010DEsd00000918* + ID_MODEL_FROM_DATABASE=Quadro 7000 + +pci:v000010DEd000010C0* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 9300 GS Rev. 2] + +pci:v000010DEd000010C3* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 8400 GS Rev. 3] + +pci:v000010DEd000010C3sv000010DEsd0000066D* + ID_MODEL_FROM_DATABASE=G98 [GeForce 8400GS] + +pci:v000010DEd000010C5* + ID_MODEL_FROM_DATABASE=GT218 [GeForce 405] + +pci:v000010DEd000010D8* + ID_MODEL_FROM_DATABASE=GT218 [NVS 300] + +pci:v000010DEd00001140* + ID_MODEL_FROM_DATABASE=GF117M [GeForce 610M/710M / GT 620M/625M/630M] + +pci:v000010DEd00001180* + ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 680] + +pci:v000010DEd00001183* + ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 660 Ti] + +pci:v000010DEd00001185* + ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 660 OEM] + +pci:v000010DEd00001188* + ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 690] + +pci:v000010DEd00001189* + ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 670] + +pci:v000010DEd0000118F* + ID_MODEL_FROM_DATABASE=GK104GL [Tesla K10] + +pci:v000010DEd000011A0* + ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 680M] + +pci:v000010DEd000011A1* + ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 670MX] + +pci:v000010DEd000011A2* + ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 675MX] + +pci:v000010DEd000011A3* + ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 680MX] + +pci:v000010DEd000011A7* + ID_MODEL_FROM_DATABASE=GK104M [GeForce GTX 675MX] + +pci:v000010DEd000011BA* + ID_MODEL_FROM_DATABASE=GK104GL [Quadro K5000] + +pci:v000010DEd000011BC* + ID_MODEL_FROM_DATABASE=GK104GLM [Quadro K5000M] + +pci:v000010DEd000011BD* + ID_MODEL_FROM_DATABASE=GK104GLM [Quadro K4000M] + +pci:v000010DEd000011BE* + ID_MODEL_FROM_DATABASE=GK104GLM [Quadro K3000M] + +pci:v000010DEd000011BF* + ID_MODEL_FROM_DATABASE=GK104GL [GRID K2] + +pci:v000010DEd000011C0* + ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 660] + +pci:v000010DEd000011C2* + ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti Boost] + +pci:v000010DEd000011C3* + ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti OEM] + +pci:v000010DEd000011C6* + ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti] + +pci:v000010DEd000011FA* + ID_MODEL_FROM_DATABASE=GK106GL [Quadro K4000] + +pci:v000010DEd00001200* + ID_MODEL_FROM_DATABASE=GF114 [GeForce GTX 560 Ti] + +pci:v000010DEd00001201* + ID_MODEL_FROM_DATABASE=GF114 [GeForce GTX 560] + +pci:v000010DEd00001203* + ID_MODEL_FROM_DATABASE=GF114 [GeForce GTX 460 SE v2] + +pci:v000010DEd00001205* + ID_MODEL_FROM_DATABASE=GF114 [GeForce GTX 460 v2] + +pci:v000010DEd00001206* + ID_MODEL_FROM_DATABASE=GF114 [GeForce GTX 555] + +pci:v000010DEd00001207* + ID_MODEL_FROM_DATABASE=GF114 [GeForce GTX 645] + +pci:v000010DEd00001208* + ID_MODEL_FROM_DATABASE=GF114 [GeForce GTX 560 SE] + +pci:v000010DEd00001210* + ID_MODEL_FROM_DATABASE=GF114M [GeForce GTX 570M] + +pci:v000010DEd00001211* + ID_MODEL_FROM_DATABASE=GF114M [GeForce GTX 580M] + +pci:v000010DEd00001212* + ID_MODEL_FROM_DATABASE=GF114M [GeForce GTX 675M] + +pci:v000010DEd00001213* + ID_MODEL_FROM_DATABASE=GF114M [GeForce GTX 670M] + +pci:v000010DEd00001241* + ID_MODEL_FROM_DATABASE=GF116 [GeForce GT 545 OEM] + +pci:v000010DEd00001243* + ID_MODEL_FROM_DATABASE=GF116 [GeForce GT 545] + +pci:v000010DEd00001244* + ID_MODEL_FROM_DATABASE=GF116 [GeForce GTX 550 Ti] + +pci:v000010DEd00001245* + ID_MODEL_FROM_DATABASE=GF116 [GeForce GTS 450 Rev. 2] + +pci:v000010DEd00001246* + ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 550M] + +pci:v000010DEd00001247* + ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] + +pci:v000010DEd00001248* + ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M] + +pci:v000010DEd00001249* + ID_MODEL_FROM_DATABASE=GF116 [GeForce GTS 450 Rev. 3] + +pci:v000010DEd0000124B* + ID_MODEL_FROM_DATABASE=GF116 [GeForce GT 640 OEM] + +pci:v000010DEd0000124D* + ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 555M/635M] + +pci:v000010DEd00001251* + ID_MODEL_FROM_DATABASE=GF116M [GeForce GT 560M] + +pci:v000010DEd00001280* + ID_MODEL_FROM_DATABASE=GK208 [GeForce GT 635] + +pci:v000010DF* + ID_VENDOR_FROM_DATABASE=Emulex Corporation + +pci:v000010DFd00000720* + ID_MODEL_FROM_DATABASE=OneConnect NIC (Skyhawk) + +pci:v000010DFd00000722* + ID_MODEL_FROM_DATABASE=OneConnect iSCSI Initiator (Skyhawk) + +pci:v000010DFd00000723* + ID_MODEL_FROM_DATABASE=OneConnect iSCSI Initiator + Target (Skyhawk) + +pci:v000010DFd00000724* + ID_MODEL_FROM_DATABASE=OneConnect FCoE Initiator (Skyhawk) + +pci:v000010DFd00000728* + ID_MODEL_FROM_DATABASE=OneConnect NIC (Skyhawk-VF) + +pci:v000010DFd0000072A* + ID_MODEL_FROM_DATABASE=OneConnect iSCSI Initiator (Skyhawk-VF) + +pci:v000010DFd0000072B* + ID_MODEL_FROM_DATABASE=OneConnect iSCSI Initiator + Target (Skyhawk-VF) + +pci:v000010DFd0000072C* + ID_MODEL_FROM_DATABASE=OneConnect FCoE Initiator (Skyhawk-VF) + +pci:v000010DFd00001AE5* + ID_MODEL_FROM_DATABASE=LP6000 Fibre Channel Host Adapter + +pci:v000010DFd0000E100* + ID_MODEL_FROM_DATABASE=Proteus-X: LightPulse IOV Fibre Channel Host Adapter + +pci:v000010DFd0000E131* + ID_MODEL_FROM_DATABASE=LightPulse 8Gb/s PCIe Shared I/O Fibre Channel Adapter + +pci:v000010DFd0000E180* + ID_MODEL_FROM_DATABASE=Proteus-X: LightPulse IOV Fibre Channel Host Adapter + +pci:v000010DFd0000E200* + ID_MODEL_FROM_DATABASE=Lancer-X: LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000E208* + ID_MODEL_FROM_DATABASE=LightPulse 16Gb Fibre Channel Host Adapter (Lancer-VF) + +pci:v000010DFd0000E220* + ID_MODEL_FROM_DATABASE=OneConnect NIC (Lancer) + +pci:v000010DFd0000E240* + ID_MODEL_FROM_DATABASE=OneConnect iSCSI Initiator (Lancer) + +pci:v000010DFd0000E260* + ID_MODEL_FROM_DATABASE=OneConnect FCoE Initiator (Lancer) + +pci:v000010DFd0000E268* + ID_MODEL_FROM_DATABASE=OneConnect 10Gb FCoE Converged Network Adapter (Lancer-VF) + +pci:v000010DFd0000F011* + ID_MODEL_FROM_DATABASE=Saturn: LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000F015* + ID_MODEL_FROM_DATABASE=Saturn: LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000F085* + ID_MODEL_FROM_DATABASE=LP850 Fibre Channel Host Adapter + +pci:v000010DFd0000F095* + ID_MODEL_FROM_DATABASE=LP952 Fibre Channel Host Adapter + +pci:v000010DFd0000F098* + ID_MODEL_FROM_DATABASE=LP982 Fibre Channel Host Adapter + +pci:v000010DFd0000F0A1* + ID_MODEL_FROM_DATABASE=Thor LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000F0A5* + ID_MODEL_FROM_DATABASE=Thor LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000F0B5* + ID_MODEL_FROM_DATABASE=Viper LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000F0D1* + ID_MODEL_FROM_DATABASE=Helios LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000F0D5* + ID_MODEL_FROM_DATABASE=Helios LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000F0E1* + ID_MODEL_FROM_DATABASE=Zephyr LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000F0E5* + ID_MODEL_FROM_DATABASE=Zephyr LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000F0F5* + ID_MODEL_FROM_DATABASE=Neptune LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000F100* + ID_MODEL_FROM_DATABASE=Saturn-X: LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000F111* + ID_MODEL_FROM_DATABASE=Saturn-X LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000F112* + ID_MODEL_FROM_DATABASE=Saturn-X LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000F180* + ID_MODEL_FROM_DATABASE=LPSe12002 EmulexSecure Fibre Channel Adapter + +pci:v000010DFd0000F700* + ID_MODEL_FROM_DATABASE=LP7000 Fibre Channel Host Adapter + +pci:v000010DFd0000F701* + ID_MODEL_FROM_DATABASE=LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) + +pci:v000010DFd0000F800* + ID_MODEL_FROM_DATABASE=LP8000 Fibre Channel Host Adapter + +pci:v000010DFd0000F801* + ID_MODEL_FROM_DATABASE=LP8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) + +pci:v000010DFd0000F900* + ID_MODEL_FROM_DATABASE=LP9000 Fibre Channel Host Adapter + +pci:v000010DFd0000F901* + ID_MODEL_FROM_DATABASE=LP9000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) + +pci:v000010DFd0000F980* + ID_MODEL_FROM_DATABASE=LP9802 Fibre Channel Host Adapter + +pci:v000010DFd0000F981* + ID_MODEL_FROM_DATABASE=LP9802 Fibre Channel Host Adapter Alternate ID + +pci:v000010DFd0000F982* + ID_MODEL_FROM_DATABASE=LP9802 Fibre Channel Host Adapter Alternate ID + +pci:v000010DFd0000FA00* + ID_MODEL_FROM_DATABASE=Thor-X LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000FB00* + ID_MODEL_FROM_DATABASE=Viper LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000FC00* + ID_MODEL_FROM_DATABASE=Thor-X LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000FC00sv000010DFsd0000FC00* + ID_MODEL_FROM_DATABASE=LP10000 LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000FC10* + ID_MODEL_FROM_DATABASE=Helios-X LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000FC20* + ID_MODEL_FROM_DATABASE=Zephyr-X LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000FC40* + ID_MODEL_FROM_DATABASE=Saturn-X: LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000FC50* + ID_MODEL_FROM_DATABASE=Proteus-X: LightPulse IOV Fibre Channel Host Adapter + +pci:v000010DFd0000FD00* + ID_MODEL_FROM_DATABASE=Helios-X LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000FD11* + ID_MODEL_FROM_DATABASE=Helios-X LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000FD12* + ID_MODEL_FROM_DATABASE=Helios-X LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000FE00* + ID_MODEL_FROM_DATABASE=Zephyr-X LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000FE05* + ID_MODEL_FROM_DATABASE=Zephyr-X: LightPulse FCoE Adapter + +pci:v000010DFd0000FE11* + ID_MODEL_FROM_DATABASE=Zephyr-X LightPulse Fibre Channel Host Adapter + +pci:v000010DFd0000FE12* + ID_MODEL_FROM_DATABASE=Zephyr-X LightPulse FCoE Adapter + +pci:v000010DFd0000FF00* + ID_MODEL_FROM_DATABASE=Neptune LightPulse Fibre Channel Host Adapter + +pci:v000010E0* + ID_VENDOR_FROM_DATABASE=Integrated Micro Solutions Inc. + +pci:v000010E0d00005026* + ID_MODEL_FROM_DATABASE=IMS5026/27/28 + +pci:v000010E0d00005027* + ID_MODEL_FROM_DATABASE=IMS5027 + +pci:v000010E0d00005028* + ID_MODEL_FROM_DATABASE=IMS5028 + +pci:v000010E0d00008849* + ID_MODEL_FROM_DATABASE=IMS8849 + +pci:v000010E0d00008853* + ID_MODEL_FROM_DATABASE=IMS8853 + +pci:v000010E0d00009128* + ID_MODEL_FROM_DATABASE=IMS9128 [Twin turbo 128] + +pci:v000010E1* + ID_VENDOR_FROM_DATABASE=Tekram Technology Co.,Ltd. + +pci:v000010E1d00000391* + ID_MODEL_FROM_DATABASE=TRM-S1040 + +pci:v000010E1d00000391sv000010E1sd00000391* + ID_MODEL_FROM_DATABASE=DC-315U SCSI-3 Host Adapter + +pci:v000010E1d0000690C* + ID_MODEL_FROM_DATABASE=DC-690c + +pci:v000010E1d0000DC29* + ID_MODEL_FROM_DATABASE=DC-290 + +pci:v000010E2* + ID_VENDOR_FROM_DATABASE=Aptix Corporation + +pci:v000010E3* + ID_VENDOR_FROM_DATABASE=Tundra Semiconductor Corp. + +pci:v000010E3d00000000* + ID_MODEL_FROM_DATABASE=CA91C042 [Universe] + +pci:v000010E3d00000108* + ID_MODEL_FROM_DATABASE=Tsi108 Host Bridge for Single PowerPC + +pci:v000010E3d00000148* + ID_MODEL_FROM_DATABASE=Tsi148 [Tempe] + +pci:v000010E3d00000148sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=VR11 Single Board Computer + +pci:v000010E3d00000860* + ID_MODEL_FROM_DATABASE=CA91C860 [QSpan] + +pci:v000010E3d00000862* + ID_MODEL_FROM_DATABASE=CA91C862A [QSpan-II] + +pci:v000010E3d00008260* + ID_MODEL_FROM_DATABASE=CA91L8200B [Dual PCI PowerSpan II] + +pci:v000010E3d00008261* + ID_MODEL_FROM_DATABASE=CA91L8260B [Single PCI PowerSpan II] + +pci:v000010E3d0000A108* + ID_MODEL_FROM_DATABASE=Tsi109 Host Bridge for Dual PowerPC + +pci:v000010E4* + ID_VENDOR_FROM_DATABASE=Tandem Computers + +pci:v000010E4d00008029* + ID_MODEL_FROM_DATABASE=Realtek 8029 Network Card + +pci:v000010E5* + ID_VENDOR_FROM_DATABASE=Micro Industries Corporation + +pci:v000010E6* + ID_VENDOR_FROM_DATABASE=Gainbery Computer Products Inc. + +pci:v000010E7* + ID_VENDOR_FROM_DATABASE=Vadem + +pci:v000010E8* + ID_VENDOR_FROM_DATABASE=Applied Micro Circuits Corp. + +pci:v000010E8d00001072* + ID_MODEL_FROM_DATABASE=INES GPIB-PCI (AMCC5920 based) + +pci:v000010E8d00002011* + ID_MODEL_FROM_DATABASE=Q-Motion Video Capture/Edit board + +pci:v000010E8d00004750* + ID_MODEL_FROM_DATABASE=S5930 [Matchmaker] + +pci:v000010E8d00005920* + ID_MODEL_FROM_DATABASE=S5920 + +pci:v000010E8d00008043* + ID_MODEL_FROM_DATABASE=LANai4.x [Myrinet LANai interface chip] + +pci:v000010E8d00008062* + ID_MODEL_FROM_DATABASE=S5933_PARASTATION + +pci:v000010E8d0000807D* + ID_MODEL_FROM_DATABASE=S5933 [Matchmaker] + +pci:v000010E8d00008088* + ID_MODEL_FROM_DATABASE=Kongsberg Spacetec Format Synchronizer + +pci:v000010E8d00008089* + ID_MODEL_FROM_DATABASE=Kongsberg Spacetec Serial Output Board + +pci:v000010E8d0000809C* + ID_MODEL_FROM_DATABASE=S5933_HEPC3 + +pci:v000010E8d000080B9* + ID_MODEL_FROM_DATABASE=Harmonix Hi-Card P8 (4x active ISDN BRI) + +pci:v000010E8d000080D7* + ID_MODEL_FROM_DATABASE=PCI-9112 + +pci:v000010E8d000080D8* + ID_MODEL_FROM_DATABASE=PCI-7200 + +pci:v000010E8d000080D9* + ID_MODEL_FROM_DATABASE=PCI-9118 + +pci:v000010E8d000080DA* + ID_MODEL_FROM_DATABASE=PCI-9812 + +pci:v000010E8d000080FC* + ID_MODEL_FROM_DATABASE=APCI1500 Signal processing controller (16 dig. inputs + 16 dig. outputs) + +pci:v000010E8d0000811A* + ID_MODEL_FROM_DATABASE=PCI-IEEE1355-DS-DE Interface + +pci:v000010E8d0000814C* + ID_MODEL_FROM_DATABASE=Fastcom ESCC-PCI (Commtech, Inc.) + +pci:v000010E8d00008170* + ID_MODEL_FROM_DATABASE=S5933 [Matchmaker] (Chipset Development Tool) + +pci:v000010E8d000081E6* + ID_MODEL_FROM_DATABASE=Multimedia video controller + +pci:v000010E8d0000828D* + ID_MODEL_FROM_DATABASE=APCI3001 Signal processing controller (up to 16 analog inputs) + +pci:v000010E8d00008291* + ID_MODEL_FROM_DATABASE=Fastcom 232/8-PCI (Commtech, Inc.) + +pci:v000010E8d000082C4* + ID_MODEL_FROM_DATABASE=Fastcom 422/4-PCI (Commtech, Inc.) + +pci:v000010E8d000082C5* + ID_MODEL_FROM_DATABASE=Fastcom 422/2-PCI (Commtech, Inc.) + +pci:v000010E8d000082C6* + ID_MODEL_FROM_DATABASE=Fastcom IG422/1-PCI (Commtech, Inc.) + +pci:v000010E8d000082C7* + ID_MODEL_FROM_DATABASE=Fastcom IG232/2-PCI (Commtech, Inc.) + +pci:v000010E8d000082CA* + ID_MODEL_FROM_DATABASE=Fastcom 232/4-PCI (Commtech, Inc.) + +pci:v000010E8d000082DB* + ID_MODEL_FROM_DATABASE=AJA HDNTV HD SDI Framestore + +pci:v000010E8d000082E2* + ID_MODEL_FROM_DATABASE=Fastcom DIO24H-PCI (Commtech, Inc.) + +pci:v000010E8d00008406* + ID_MODEL_FROM_DATABASE=PCIcanx/PCIcan CAN interface [Kvaser AB] + +pci:v000010E8d00008407* + ID_MODEL_FROM_DATABASE=PCIcan II CAN interface (A1021, PCB-07, PCB-08) [Kvaser AB] + +pci:v000010E8d00008851* + ID_MODEL_FROM_DATABASE=S5933 on Innes Corp FM Radio Capture card + +pci:v000010E9* + ID_VENDOR_FROM_DATABASE=Alps Electric Co., Ltd. + +pci:v000010EA* + ID_VENDOR_FROM_DATABASE=Integraphics + +pci:v000010EAd00001680* + ID_MODEL_FROM_DATABASE=IGA-1680 + +pci:v000010EAd00001682* + ID_MODEL_FROM_DATABASE=IGA-1682 + +pci:v000010EAd00001683* + ID_MODEL_FROM_DATABASE=IGA-1683 + +pci:v000010EAd00002000* + ID_MODEL_FROM_DATABASE=CyberPro 2000 + +pci:v000010EAd00002010* + ID_MODEL_FROM_DATABASE=CyberPro 2000A + +pci:v000010EAd00005000* + ID_MODEL_FROM_DATABASE=CyberPro 5000 + +pci:v000010EAd00005050* + ID_MODEL_FROM_DATABASE=CyberPro 5050 + +pci:v000010EAd00005202* + ID_MODEL_FROM_DATABASE=CyberPro 5202 + +pci:v000010EAd00005252* + ID_MODEL_FROM_DATABASE=CyberPro5252 + +pci:v000010EB* + ID_VENDOR_FROM_DATABASE=Artists Graphics + +pci:v000010EBd00000101* + ID_MODEL_FROM_DATABASE=3GA + +pci:v000010EBd00008111* + ID_MODEL_FROM_DATABASE=Twist3 Frame Grabber + +pci:v000010EC* + ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd. + +pci:v000010ECd00000139* + ID_MODEL_FROM_DATABASE=Zonet Zen3200 + +pci:v000010ECd00000880* + ID_MODEL_FROM_DATABASE=Realtek 880 High Definition Audio + +pci:v000010ECd00000883* + ID_MODEL_FROM_DATABASE=Realtek 883 High Definition Audio + +pci:v000010ECd00000885* + ID_MODEL_FROM_DATABASE=Realtek 885 High Definition Audio + +pci:v000010ECd00000888* + ID_MODEL_FROM_DATABASE=Realtek 888 High Definition Audio + +pci:v000010ECd00000892* + ID_MODEL_FROM_DATABASE=Realtek 892 High Definition Audio + +pci:v000010ECd00005209* + ID_MODEL_FROM_DATABASE=RTS5209 PCI Express Card Reader + +pci:v000010ECd00005229* + ID_MODEL_FROM_DATABASE=RTS5229 PCI Express Card Reader + +pci:v000010ECd00005288* + ID_MODEL_FROM_DATABASE=Barossa PCI Express Card Reader + +pci:v000010ECd00008029* + ID_MODEL_FROM_DATABASE=RTL-8029(AS) + +pci:v000010ECd00008029sv000010B8sd00002011* + ID_MODEL_FROM_DATABASE=EZ-Card (SMC1208) + +pci:v000010ECd00008029sv000010ECsd00008029* + ID_MODEL_FROM_DATABASE=RTL-8029(AS) + +pci:v000010ECd00008029sv00001113sd00001208* + ID_MODEL_FROM_DATABASE=EN1208 + +pci:v000010ECd00008029sv00001186sd00000300* + ID_MODEL_FROM_DATABASE=DE-528 + +pci:v000010ECd00008029sv00001259sd00002400* + ID_MODEL_FROM_DATABASE=AT-2400 + +pci:v000010ECd00008029sv00001AF4sd00001100* + ID_MODEL_FROM_DATABASE=Qemu virtual machine + +pci:v000010ECd00008129* + ID_MODEL_FROM_DATABASE=RTL-8129 + +pci:v000010ECd00008129sv000010ECsd00008129* + ID_MODEL_FROM_DATABASE=RT8129 Fast Ethernet Adapter + +pci:v000010ECd00008129sv000011ECsd00008129* + ID_MODEL_FROM_DATABASE=RT8129 Fast Ethernet Adapter + +pci:v000010ECd00008136* + ID_MODEL_FROM_DATABASE=RTL8101E/RTL8102E PCI Express Fast Ethernet controller + +pci:v000010ECd00008136sv0000103Csd00002AB1* + ID_MODEL_FROM_DATABASE=Pavillion p6774 + +pci:v000010ECd00008136sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v000010ECd00008136sv00001179sd0000FF64* + ID_MODEL_FROM_DATABASE=RTL8102E PCI-E Fast Ethernet NIC + +pci:v000010ECd00008138* + ID_MODEL_FROM_DATABASE=RT8139 (B/C) Cardbus Fast Ethernet Adapter + +pci:v000010ECd00008138sv000010ECsd00008138* + ID_MODEL_FROM_DATABASE=RT8139 (B/C) Fast Ethernet Adapter + +pci:v000010ECd00008139* + ID_MODEL_FROM_DATABASE=RTL-8139/8139C/8139C+ + +pci:v000010ECd00008139sv00000357sd0000000A* + ID_MODEL_FROM_DATABASE=TTP-Monitoring Card V2.0 + +pci:v000010ECd00008139sv00001025sd0000005A* + ID_MODEL_FROM_DATABASE=TravelMate 290 + +pci:v000010ECd00008139sv00001025sd00008920* + ID_MODEL_FROM_DATABASE=ALN-325 + +pci:v000010ECd00008139sv00001025sd00008921* + ID_MODEL_FROM_DATABASE=ALN-325 + +pci:v000010ECd00008139sv0000103Csd0000006A* + ID_MODEL_FROM_DATABASE=NX9500 + +pci:v000010ECd00008139sv0000103Csd00002A20* + ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC + +pci:v000010ECd00008139sv0000103Csd000030D9* + ID_MODEL_FROM_DATABASE=Presario C700 + +pci:v000010ECd00008139sv00001043sd00001045* + ID_MODEL_FROM_DATABASE=L8400B or L3C/S notebook + +pci:v000010ECd00008139sv00001043sd00008109* + ID_MODEL_FROM_DATABASE=P5P800-MX Mainboard + +pci:v000010ECd00008139sv00001071sd00008160* + ID_MODEL_FROM_DATABASE=MIM2000 + +pci:v000010ECd00008139sv000010BDsd00000320* + ID_MODEL_FROM_DATABASE=EP-320X-R + +pci:v000010ECd00008139sv000010F7sd00008338* + ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop + +pci:v000010ECd00008139sv00001113sd0000EC01* + ID_MODEL_FROM_DATABASE=FNC-0107TX + +pci:v000010ECd00008139sv00001186sd00001300* + ID_MODEL_FROM_DATABASE=DFE-538TX + +pci:v000010ECd00008139sv00001186sd00001320* + ID_MODEL_FROM_DATABASE=SN5200 + +pci:v000010ECd00008139sv00001186sd00008139* + ID_MODEL_FROM_DATABASE=DRN-32TX + +pci:v000010ECd00008139sv000011F6sd00008139* + ID_MODEL_FROM_DATABASE=FN22-3(A) LinxPRO Ethernet Adapter + +pci:v000010ECd00008139sv00001259sd00002500* + ID_MODEL_FROM_DATABASE=AT-2500TX + +pci:v000010ECd00008139sv00001259sd00002503* + ID_MODEL_FROM_DATABASE=AT-2500TX/ACPI + +pci:v000010ECd00008139sv00001385sd0000F31D* + ID_MODEL_FROM_DATABASE=FA311 v2 + +pci:v000010ECd00008139sv00001395sd00002100* + ID_MODEL_FROM_DATABASE=AMB2100 + +pci:v000010ECd00008139sv00001429sd0000D010* + ID_MODEL_FROM_DATABASE=ND010/ND012 + +pci:v000010ECd00008139sv00001432sd00009130* + ID_MODEL_FROM_DATABASE=EN-9130TX + +pci:v000010ECd00008139sv00001436sd00008139* + ID_MODEL_FROM_DATABASE=RT8139 + +pci:v000010ECd00008139sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30/P35 notebook + +pci:v000010ECd00008139sv00001458sd0000E000* + ID_MODEL_FROM_DATABASE=GA-7VM400M/7VT600 Motherboard + +pci:v000010ECd00008139sv00001462sd00000131* + ID_MODEL_FROM_DATABASE=MS-1013 Notebook + +pci:v000010ECd00008139sv00001462sd0000217C* + ID_MODEL_FROM_DATABASE=Aspire L250 + +pci:v000010ECd00008139sv00001462sd0000788C* + ID_MODEL_FROM_DATABASE=865PE Neo2-V Mainboard + +pci:v000010ECd00008139sv0000146Csd00001439* + ID_MODEL_FROM_DATABASE=FE-1439TX + +pci:v000010ECd00008139sv00001489sd00006001* + ID_MODEL_FROM_DATABASE=GF100TXRII + +pci:v000010ECd00008139sv00001489sd00006002* + ID_MODEL_FROM_DATABASE=GF100TXRA + +pci:v000010ECd00008139sv0000149Csd0000139A* + ID_MODEL_FROM_DATABASE=LFE-8139ATX + +pci:v000010ECd00008139sv0000149Csd00008139* + ID_MODEL_FROM_DATABASE=LFE-8139TX + +pci:v000010ECd00008139sv000014CBsd00000200* + ID_MODEL_FROM_DATABASE=LNR-100 Family 10/100 Base-TX Ethernet + +pci:v000010ECd00008139sv00001565sd00002300* + ID_MODEL_FROM_DATABASE=P4TSV Onboard LAN (RTL8100B) + +pci:v000010ECd00008139sv00001631sd00007003* + ID_MODEL_FROM_DATABASE=Onboard RTL8111 on GA-8SIML Rev1.0 Mainboard + +pci:v000010ECd00008139sv00001695sd00009001* + ID_MODEL_FROM_DATABASE=Onboard RTL8101L 10/100 MBit + +pci:v000010ECd00008139sv000016ECsd000000FF* + ID_MODEL_FROM_DATABASE=USR997900A + +pci:v000010ECd00008139sv00001799sd00005000* + ID_MODEL_FROM_DATABASE=F5D5000 PCI Card/Desktop Network PCI Card + +pci:v000010ECd00008139sv00001799sd00005010* + ID_MODEL_FROM_DATABASE=F5D5010 CardBus Notebook Network Card + +pci:v000010ECd00008139sv0000187Esd00003303* + ID_MODEL_FROM_DATABASE=FN312 + +pci:v000010ECd00008139sv00001904sd00008139* + ID_MODEL_FROM_DATABASE=RTL8139D Fast Ethernet Adapter + +pci:v000010ECd00008139sv00002646sd00000001* + ID_MODEL_FROM_DATABASE=KNE120TX + +pci:v000010ECd00008139sv00008E2Esd00007000* + ID_MODEL_FROM_DATABASE=KF-230TX + +pci:v000010ECd00008139sv00008E2Esd00007100* + ID_MODEL_FROM_DATABASE=KF-230TX/2 + +pci:v000010ECd00008139sv0000A0A0sd00000007* + ID_MODEL_FROM_DATABASE=ALN-325C + +pci:v000010ECd00008167* + ID_MODEL_FROM_DATABASE=RTL-8110SC/8169SC Gigabit Ethernet + +pci:v000010ECd00008167sv00001458sd0000E000* + ID_MODEL_FROM_DATABASE=GA-MA69G-S3H Motherboard + +pci:v000010ECd00008167sv00001462sd0000235C* + ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard + +pci:v000010ECd00008167sv00001462sd0000236C* + ID_MODEL_FROM_DATABASE=945P Neo3-F motherboard + +pci:v000010ECd00008168* + ID_MODEL_FROM_DATABASE=RTL8111/8168 PCI Express Gigabit Ethernet controller + +pci:v000010ECd00008168sv00001019sd00008168* + ID_MODEL_FROM_DATABASE=RTL8111/8168 PCI Express Gigabit Ethernet controller + +pci:v000010ECd00008168sv00001028sd000004B2* + ID_MODEL_FROM_DATABASE=Vostro 3350 + +pci:v000010ECd00008168sv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v000010ECd00008168sv0000103Csd00001611* + ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000 + +pci:v000010ECd00008168sv00001043sd000011F5* + ID_MODEL_FROM_DATABASE=A6J-Q008 + +pci:v000010ECd00008168sv00001043sd000016D5* + ID_MODEL_FROM_DATABASE=U6V/U31J laptop + +pci:v000010ECd00008168sv00001043sd000081AA* + ID_MODEL_FROM_DATABASE=P5B + +pci:v000010ECd00008168sv00001043sd000082C6* + ID_MODEL_FROM_DATABASE=M3A78-EH Motherboard + +pci:v000010ECd00008168sv00001043sd000083A3* + ID_MODEL_FROM_DATABASE=M4A785TD Motherboard + +pci:v000010ECd00008168sv00001043sd00008432* + ID_MODEL_FROM_DATABASE=P8P67 and other motherboards + +pci:v000010ECd00008168sv00001043sd00008505* + ID_MODEL_FROM_DATABASE=P8H77-I Motherboard + +pci:v000010ECd00008168sv0000105Bsd00000D7C* + ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard + +pci:v000010ECd00008168sv000010ECsd00008168* + ID_MODEL_FROM_DATABASE=RTL8111/8168 PCI Express Gigabit Ethernet controller + +pci:v000010ECd00008168sv00001458sd0000E000* + ID_MODEL_FROM_DATABASE=Motherboard + +pci:v000010ECd00008168sv00001462sd0000238C* + ID_MODEL_FROM_DATABASE=Onboard RTL8111b on MSI P965 Platinum Mainboard + +pci:v000010ECd00008168sv00001462sd0000368C* + ID_MODEL_FROM_DATABASE=K9AG Neo2 + +pci:v000010ECd00008168sv00001462sd00007522* + ID_MODEL_FROM_DATABASE=X58 Pro-E + +pci:v000010ECd00008168sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v000010ECd00008168sv00001849sd00008168* + ID_MODEL_FROM_DATABASE=Motherboard (one of many) + +pci:v000010ECd00008168sv00008086sd0000D615* + ID_MODEL_FROM_DATABASE=Desktop Board D510MO/D525MW + +pci:v000010ECd00008169* + ID_MODEL_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller + +pci:v000010ECd00008169sv00001025sd00000079* + ID_MODEL_FROM_DATABASE=Aspire 5024WLMi + +pci:v000010ECd00008169sv000010BDsd00003202* + ID_MODEL_FROM_DATABASE=EP-320G-TX1 32-bit PCI Gigabit Ethernet Adapter + +pci:v000010ECd00008169sv000010ECsd00008169* + ID_MODEL_FROM_DATABASE=RTL8169/8110 Family PCI Gigabit Ethernet NIC + +pci:v000010ECd00008169sv00001259sd0000C107* + ID_MODEL_FROM_DATABASE=CG-LAPCIGT + +pci:v000010ECd00008169sv00001371sd0000434E* + ID_MODEL_FROM_DATABASE=ProG-2000L + +pci:v000010ECd00008169sv00001385sd0000311A* + ID_MODEL_FROM_DATABASE=GA311 + +pci:v000010ECd00008169sv00001385sd00005200* + ID_MODEL_FROM_DATABASE=GA511 Gigabit PC Card + +pci:v000010ECd00008169sv00001458sd0000E000* + ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard + +pci:v000010ECd00008169sv00001462sd0000030C* + ID_MODEL_FROM_DATABASE=K8N Neo-FSR v2.0 mainboard + +pci:v000010ECd00008169sv00001462sd0000065C* + ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065) + +pci:v000010ECd00008169sv00001462sd0000702C* + ID_MODEL_FROM_DATABASE=K8T NEO 2 motherboard + +pci:v000010ECd00008169sv00001462sd00007094* + ID_MODEL_FROM_DATABASE=K8T Neo2-F V2.0 + +pci:v000010ECd00008169sv000016ECsd0000011F* + ID_MODEL_FROM_DATABASE=USR997903 + +pci:v000010ECd00008169sv00001734sd00001091* + ID_MODEL_FROM_DATABASE=D2030-A1 + +pci:v000010ECd00008169sv0000A0A0sd00000449* + ID_MODEL_FROM_DATABASE=AK86-L motherboard + +pci:v000010ECd00008171* + ID_MODEL_FROM_DATABASE=RTL8191SEvA Wireless LAN Controller + +pci:v000010ECd00008172* + ID_MODEL_FROM_DATABASE=RTL8191SEvB Wireless LAN Controller + +pci:v000010ECd00008173* + ID_MODEL_FROM_DATABASE=RTL8192SE Wireless LAN Controller + +pci:v000010ECd00008174* + ID_MODEL_FROM_DATABASE=RTL8192SE Wireless LAN Controller + +pci:v000010ECd00008176* + ID_MODEL_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter + +pci:v000010ECd00008176sv00001A3Bsd00001139* + ID_MODEL_FROM_DATABASE=AW-NE139H Half-size Mini PCIe Card + +pci:v000010ECd00008177* + ID_MODEL_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter + +pci:v000010ECd00008178* + ID_MODEL_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter + +pci:v000010ECd00008180* + ID_MODEL_FROM_DATABASE=RTL8180L 802.11b MAC + +pci:v000010ECd00008180sv00001385sd00004700* + ID_MODEL_FROM_DATABASE=MA521 802.11b Wireless PC Card + +pci:v000010ECd00008180sv00001737sd00000019* + ID_MODEL_FROM_DATABASE=WPC11v4 802.11b Wireless-B Notebook Adapter + +pci:v000010ECd00008185* + ID_MODEL_FROM_DATABASE=RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller + +pci:v000010ECd00008190* + ID_MODEL_FROM_DATABASE=RTL8190 802.11n Wireless LAN + +pci:v000010ECd00008191* + ID_MODEL_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter + +pci:v000010ECd00008192* + ID_MODEL_FROM_DATABASE=RTL8192E/RTL8192SE Wireless LAN Controller + +pci:v000010ECd00008193* + ID_MODEL_FROM_DATABASE=RTL8192DE Wireless LAN Controller + +pci:v000010ECd00008197* + ID_MODEL_FROM_DATABASE=SmartLAN56 56K Modem + +pci:v000010ECd00008199* + ID_MODEL_FROM_DATABASE=RTL8187SE Wireless LAN Controller + +pci:v000010ECd00008199sv00001462sd00006894* + ID_MODEL_FROM_DATABASE=MN54G2 / MS-6894 Wireless Mini PCIe Card + +pci:v000010ECd00008723* + ID_MODEL_FROM_DATABASE=RTL8723AE PCIe Wireless Network Adapter + +pci:v000010ED* + ID_VENDOR_FROM_DATABASE=Ascii Corporation + +pci:v000010EDd00007310* + ID_MODEL_FROM_DATABASE=V7310 + +pci:v000010EE* + ID_VENDOR_FROM_DATABASE=Xilinx Corporation + +pci:v000010EEd00000001* + ID_MODEL_FROM_DATABASE=EUROCOM for PCI (ECOMP) + +pci:v000010EEd00000002* + ID_MODEL_FROM_DATABASE=Octal E1/T1 for PCI ETP Card + +pci:v000010EEd00000007* + ID_MODEL_FROM_DATABASE=Default PCIe endpoint ID + +pci:v000010EEd00000205* + ID_MODEL_FROM_DATABASE=Wildcard TE205P + +pci:v000010EEd00000210* + ID_MODEL_FROM_DATABASE=Wildcard TE210P + +pci:v000010EEd00000300* + ID_MODEL_FROM_DATABASE=Spartan 3 Designs (Xilinx IP) + +pci:v000010EEd00000314* + ID_MODEL_FROM_DATABASE=Wildcard TE405P/TE410P (1st Gen) + +pci:v000010EEd00000405* + ID_MODEL_FROM_DATABASE=Wildcard TE405P (2nd Gen) + +pci:v000010EEd00000410* + ID_MODEL_FROM_DATABASE=Wildcard TE410P (2nd Gen) + +pci:v000010EEd00000600* + ID_MODEL_FROM_DATABASE=Xilinx 6 Designs (Xilinx IP) + +pci:v000010EEd00002B00* + ID_MODEL_FROM_DATABASE=Zomojo Zcard + +pci:v000010EEd00003FC0* + ID_MODEL_FROM_DATABASE=RME Digi96 + +pci:v000010EEd00003FC1* + ID_MODEL_FROM_DATABASE=RME Digi96/8 + +pci:v000010EEd00003FC2* + ID_MODEL_FROM_DATABASE=RME Digi96/8 Pro + +pci:v000010EEd00003FC3* + ID_MODEL_FROM_DATABASE=RME Digi96/8 Pad + +pci:v000010EEd00003FC4* + ID_MODEL_FROM_DATABASE=RME Digi9652 (Hammerfall) + +pci:v000010EEd00003FC5* + ID_MODEL_FROM_DATABASE=RME Hammerfall DSP + +pci:v000010EEd00003FC6* + ID_MODEL_FROM_DATABASE=RME Hammerfall DSP MADI + +pci:v000010EEd00008380* + ID_MODEL_FROM_DATABASE=Ellips ProfiXpress Profibus Master + +pci:v000010EEd00008381* + ID_MODEL_FROM_DATABASE=Ellips Santos Frame Grabber + +pci:v000010EEd0000D154* + ID_MODEL_FROM_DATABASE=Copley Controls CAN card (PCI-CAN-02) + +pci:v000010EEd0000EBF0* + ID_MODEL_FROM_DATABASE=SED Systems Modulator/Demodulator + +pci:v000010EEd0000EBF1* + ID_MODEL_FROM_DATABASE=SED Systems Audio Interface Card + +pci:v000010EEd0000EBF2* + ID_MODEL_FROM_DATABASE=SED Systems Common PCI Interface + +pci:v000010EF* + ID_VENDOR_FROM_DATABASE=Racore Computer Products, Inc. + +pci:v000010EFd00008154* + ID_MODEL_FROM_DATABASE=M815x Token Ring Adapter + +pci:v000010F0* + ID_VENDOR_FROM_DATABASE=Peritek Corporation + +pci:v000010F1* + ID_VENDOR_FROM_DATABASE=Tyan Computer + +pci:v000010F1d00002865* + ID_MODEL_FROM_DATABASE=Tyan Thunder K8E S2865 + +pci:v000010F1d00005300* + ID_MODEL_FROM_DATABASE=Tyan S5380 Mainboard + +pci:v000010F2* + ID_VENDOR_FROM_DATABASE=Achme Computer, Inc. + +pci:v000010F3* + ID_VENDOR_FROM_DATABASE=Alaris, Inc. + +pci:v000010F4* + ID_VENDOR_FROM_DATABASE=S-MOS Systems, Inc. + +pci:v000010F5* + ID_VENDOR_FROM_DATABASE=NKK Corporation + +pci:v000010F5d0000A001* + ID_MODEL_FROM_DATABASE=NDR4000 [NR4600 Bridge] + +pci:v000010F6* + ID_VENDOR_FROM_DATABASE=Creative Electronic Systems SA + +pci:v000010F7* + ID_VENDOR_FROM_DATABASE=Matsushita Electric Industrial Co., Ltd. + +pci:v000010F8* + ID_VENDOR_FROM_DATABASE=Altos India Ltd + +pci:v000010F9* + ID_VENDOR_FROM_DATABASE=PC Direct + +pci:v000010FA* + ID_VENDOR_FROM_DATABASE=Truevision + +pci:v000010FAd0000000C* + ID_MODEL_FROM_DATABASE=TARGA 1000 + +pci:v000010FB* + ID_VENDOR_FROM_DATABASE=Thesys Gesellschaft fuer Mikroelektronik mbH + +pci:v000010FBd0000186F* + ID_MODEL_FROM_DATABASE=TH 6255 + +pci:v000010FC* + ID_VENDOR_FROM_DATABASE=I-O Data Device, Inc. + +pci:v000010FCd00000003* + ID_MODEL_FROM_DATABASE=Cardbus IDE Controller + +pci:v000010FCd00000005* + ID_MODEL_FROM_DATABASE=Cardbus SCSI CBSC II + +pci:v000010FD* + ID_VENDOR_FROM_DATABASE=Soyo Computer, Inc + +pci:v000010FE* + ID_VENDOR_FROM_DATABASE=Fast Multimedia AG + +pci:v000010FF* + ID_VENDOR_FROM_DATABASE=NCube + +pci:v00001100* + ID_VENDOR_FROM_DATABASE=Jazz Multimedia + +pci:v00001101* + ID_VENDOR_FROM_DATABASE=Initio Corporation + +pci:v00001101d00000002* + ID_MODEL_FROM_DATABASE=INI-920 Ultra SCSI Adapter + +pci:v00001101d00001060* + ID_MODEL_FROM_DATABASE=INI-A100U2W + +pci:v00001101d00001622* + ID_MODEL_FROM_DATABASE=INI-1623 PCI SATA-II Controller + +pci:v00001101d00009100* + ID_MODEL_FROM_DATABASE=INI-9100/9100W + +pci:v00001101d00009400* + ID_MODEL_FROM_DATABASE=INI-940 Fast Wide SCSI Adapter + +pci:v00001101d00009401* + ID_MODEL_FROM_DATABASE=INI-935 Fast Wide SCSI Adapter + +pci:v00001101d00009500* + ID_MODEL_FROM_DATABASE=INI-950 SCSI Adapter + +pci:v00001101d00009502* + ID_MODEL_FROM_DATABASE=INI-950P Ultra Wide SCSI Adapter + +pci:v00001102* + ID_VENDOR_FROM_DATABASE=Creative Labs + +pci:v00001102d00000002* + ID_MODEL_FROM_DATABASE=SB Live! EMU10k1 + +pci:v00001102d00000002sv0000100Asd00001102* + ID_MODEL_FROM_DATABASE=SB Live! 5.1 Digital OEM SB0220 EMU10K1-JFF + +pci:v00001102d00000002sv00001102sd00000020* + ID_MODEL_FROM_DATABASE=CT4850 SBLive! Value + +pci:v00001102d00000002sv00001102sd00000021* + ID_MODEL_FROM_DATABASE=CT4620 SBLive! + +pci:v00001102d00000002sv00001102sd0000002F* + ID_MODEL_FROM_DATABASE=SBLive! mainboard implementation + +pci:v00001102d00000002sv00001102sd0000100A* + ID_MODEL_FROM_DATABASE=SB Live! 5.1 Digital OEM [SB0220] + +pci:v00001102d00000002sv00001102sd00004001* + ID_MODEL_FROM_DATABASE=E-mu APS + +pci:v00001102d00000002sv00001102sd00008022* + ID_MODEL_FROM_DATABASE=CT4780 SBLive! Value + +pci:v00001102d00000002sv00001102sd00008023* + ID_MODEL_FROM_DATABASE=CT4790 SoundBlaster PCI512 + +pci:v00001102d00000002sv00001102sd00008024* + ID_MODEL_FROM_DATABASE=CT4760 SBLive! + +pci:v00001102d00000002sv00001102sd00008025* + ID_MODEL_FROM_DATABASE=SBLive! Mainboard Implementation + +pci:v00001102d00000002sv00001102sd00008026* + ID_MODEL_FROM_DATABASE=CT4830 SBLive! Value + +pci:v00001102d00000002sv00001102sd00008027* + ID_MODEL_FROM_DATABASE=CT4832 SBLive! Value + +pci:v00001102d00000002sv00001102sd00008028* + ID_MODEL_FROM_DATABASE=CT4760 SBLive! OEM version + +pci:v00001102d00000002sv00001102sd00008031* + ID_MODEL_FROM_DATABASE=CT4831 SBLive! Value + +pci:v00001102d00000002sv00001102sd00008040* + ID_MODEL_FROM_DATABASE=CT4760 SBLive! + +pci:v00001102d00000002sv00001102sd00008051* + ID_MODEL_FROM_DATABASE=CT4850 SBLive! Value + +pci:v00001102d00000002sv00001102sd00008061* + ID_MODEL_FROM_DATABASE=SBLive! Player 5.1 + +pci:v00001102d00000002sv00001102sd00008064* + ID_MODEL_FROM_DATABASE=SBLive! 5.1 Model SB0100 + +pci:v00001102d00000002sv00001102sd00008065* + ID_MODEL_FROM_DATABASE=SBLive! 5.1 Digital Model SB0220 + +pci:v00001102d00000002sv00001102sd00008066* + ID_MODEL_FROM_DATABASE=Live! 5.1 Digital [SB0228] + +pci:v00001102d00000002sv00001102sd00008067* + ID_MODEL_FROM_DATABASE=SBLive! 5.1 eMicro 28028 + +pci:v00001102d00000004* + ID_MODEL_FROM_DATABASE=SB Audigy + +pci:v00001102d00000004sv00001102sd00000051* + ID_MODEL_FROM_DATABASE=SB0090 Audigy Player + +pci:v00001102d00000004sv00001102sd00000053* + ID_MODEL_FROM_DATABASE=SB0090 Audigy Player/OEM + +pci:v00001102d00000004sv00001102sd00000058* + ID_MODEL_FROM_DATABASE=SB0090 Audigy Player/OEM + +pci:v00001102d00000004sv00001102sd00001002* + ID_MODEL_FROM_DATABASE=SB Audigy2 Platinum + +pci:v00001102d00000004sv00001102sd00001007* + ID_MODEL_FROM_DATABASE=SB0240 Audigy 2 Platinum 6.1 + +pci:v00001102d00000004sv00001102sd00001009* + ID_MODEL_FROM_DATABASE=SB Audigy2 OEM HP + +pci:v00001102d00000004sv00001102sd00002002* + ID_MODEL_FROM_DATABASE=SB Audigy 2 ZS (SB0350) + +pci:v00001102d00000004sv00001102sd00004001* + ID_MODEL_FROM_DATABASE=E-MU 1010 + +pci:v00001102d00000004sv00001102sd00004002* + ID_MODEL_FROM_DATABASE=E-MU 0404 + +pci:v00001102d00000005* + ID_MODEL_FROM_DATABASE=SB X-Fi + +pci:v00001102d00000005sv00001102sd00000021* + ID_MODEL_FROM_DATABASE=X-Fi Platinum + +pci:v00001102d00000005sv00001102sd0000002C* + ID_MODEL_FROM_DATABASE=X-Fi XtremeGamer FATAL1TY PRO + +pci:v00001102d00000005sv00001102sd00001003* + ID_MODEL_FROM_DATABASE=X-Fi XtremeMusic + +pci:v00001102d00000006* + ID_MODEL_FROM_DATABASE=[SB Live! Value] EMU10k1X + +pci:v00001102d00000007* + ID_MODEL_FROM_DATABASE=CA0106 Soundblaster + +pci:v00001102d00000007sv00001102sd00000007* + ID_MODEL_FROM_DATABASE=SBLive! 24bit + +pci:v00001102d00000007sv00001102sd00001001* + ID_MODEL_FROM_DATABASE=SB0310 Audigy LS + +pci:v00001102d00000007sv00001102sd00001002* + ID_MODEL_FROM_DATABASE=SB0312 Audigy LS + +pci:v00001102d00000007sv00001102sd00001006* + ID_MODEL_FROM_DATABASE=SB0410 SBLive! 24-bit + +pci:v00001102d00000007sv00001102sd0000100A* + ID_MODEL_FROM_DATABASE=SB0570 [SB Audigy SE] + +pci:v00001102d00000007sv00001102sd00001012* + ID_MODEL_FROM_DATABASE=SB0790 X-Fi XA + +pci:v00001102d00000007sv00001102sd00001013* + ID_MODEL_FROM_DATABASE=Soundblaster X-Fi Xtreme Audio + +pci:v00001102d00000007sv00001462sd00001009* + ID_MODEL_FROM_DATABASE=K8N Diamond + +pci:v00001102d00000008* + ID_MODEL_FROM_DATABASE=SB0400 Audigy2 Value + +pci:v00001102d00000008sv00001102sd00000008* + ID_MODEL_FROM_DATABASE=EMU0404 Digital Audio System + +pci:v00001102d00000008sv00001102sd00004004* + ID_MODEL_FROM_DATABASE=EMU1010 Digital Audio System [MAEM8960] + +pci:v00001102d00000009* + ID_MODEL_FROM_DATABASE=[SB X-Fi Xtreme Audio] CA0110-IBG + +pci:v00001102d00000009sv00001102sd00000010* + ID_MODEL_FROM_DATABASE=[SB X-Fi Xtreme Audio] CA0110-IBG + +pci:v00001102d00000009sv00001102sd00000018* + ID_MODEL_FROM_DATABASE=SB1040 + +pci:v00001102d0000000B* + ID_MODEL_FROM_DATABASE=EMU20k2 [X-Fi Titanium Series] + +pci:v00001102d0000000Bsv00001102sd00000041* + ID_MODEL_FROM_DATABASE=SB0880 [SoundBlaster X-Fi Titanium PCI-e] + +pci:v00001102d00004001* + ID_MODEL_FROM_DATABASE=SB Audigy FireWire Port + +pci:v00001102d00004001sv00001102sd00000010* + ID_MODEL_FROM_DATABASE=SB Audigy FireWire Port + +pci:v00001102d00007002* + ID_MODEL_FROM_DATABASE=SB Live! Game Port + +pci:v00001102d00007002sv00001102sd00000020* + ID_MODEL_FROM_DATABASE=Gameport Joystick + +pci:v00001102d00007003* + ID_MODEL_FROM_DATABASE=SB Audigy Game Port + +pci:v00001102d00007003sv00001102sd00000040* + ID_MODEL_FROM_DATABASE=SB Audigy Game Port + +pci:v00001102d00007003sv00001102sd00000060* + ID_MODEL_FROM_DATABASE=SB Audigy2 MIDI/Game Port + +pci:v00001102d00007004* + ID_MODEL_FROM_DATABASE=[SB Live! Value] Input device controller + +pci:v00001102d00007005* + ID_MODEL_FROM_DATABASE=SB Audigy LS Game Port + +pci:v00001102d00007005sv00001102sd00001001* + ID_MODEL_FROM_DATABASE=SB0310 Audigy LS MIDI/Game port + +pci:v00001102d00007005sv00001102sd00001002* + ID_MODEL_FROM_DATABASE=SB0312 Audigy LS MIDI/Game port + +pci:v00001102d00007006* + ID_MODEL_FROM_DATABASE=[SB X-Fi Xtreme Audio] CA0110-IBG PCI to PCIe Bridge + +pci:v00001102d00008938* + ID_MODEL_FROM_DATABASE=Ectiva EV1938 + +pci:v00001102d00008938sv00001033sd000080E5* + ID_MODEL_FROM_DATABASE=SlimTower-Jim (NEC) + +pci:v00001102d00008938sv00001071sd00007150* + ID_MODEL_FROM_DATABASE=Mitac 7150 + +pci:v00001102d00008938sv0000110Asd00005938* + ID_MODEL_FROM_DATABASE=Siemens Scenic Mobile 510PIII + +pci:v00001102d00008938sv000013BDsd0000100C* + ID_MODEL_FROM_DATABASE=Ceres-C (Sharp, Intel BX) + +pci:v00001102d00008938sv000013BDsd0000100D* + ID_MODEL_FROM_DATABASE=Sharp, Intel Banister + +pci:v00001102d00008938sv000013BDsd0000100E* + ID_MODEL_FROM_DATABASE=TwinHead P09S/P09S3 (Sharp) + +pci:v00001102d00008938sv000013BDsd0000F6F1* + ID_MODEL_FROM_DATABASE=Marlin (Sharp) + +pci:v00001102d00008938sv000014FFsd00000E70* + ID_MODEL_FROM_DATABASE=P88TE (TWINHEAD INTERNATIONAL Corp) + +pci:v00001102d00008938sv000014FFsd0000C401* + ID_MODEL_FROM_DATABASE=Notebook 9100/9200/2000 (TWINHEAD INTERNATIONAL Corp) + +pci:v00001102d00008938sv0000156Dsd0000B400* + ID_MODEL_FROM_DATABASE=G400 - Geo (AlphaTop (Taiwan)) + +pci:v00001102d00008938sv0000156Dsd0000B550* + ID_MODEL_FROM_DATABASE=G560 (AlphaTop (Taiwan)) + +pci:v00001102d00008938sv0000156Dsd0000B560* + ID_MODEL_FROM_DATABASE=G560 (AlphaTop (Taiwan)) + +pci:v00001102d00008938sv0000156Dsd0000B700* + ID_MODEL_FROM_DATABASE=G700/U700 (AlphaTop (Taiwan)) + +pci:v00001102d00008938sv0000156Dsd0000B795* + ID_MODEL_FROM_DATABASE=G795 (AlphaTop (Taiwan)) + +pci:v00001102d00008938sv0000156Dsd0000B797* + ID_MODEL_FROM_DATABASE=G797 (AlphaTop (Taiwan)) + +pci:v00001103* + ID_VENDOR_FROM_DATABASE=HighPoint Technologies, Inc. + +pci:v00001103d00000003* + ID_MODEL_FROM_DATABASE=HPT343/345/346/363 + +pci:v00001103d00000004* + ID_MODEL_FROM_DATABASE=HPT366/368/370/370A/372/372N + +pci:v00001103d00000004sv00001103sd00000001* + ID_MODEL_FROM_DATABASE=HPT370A + +pci:v00001103d00000004sv00001103sd00000004* + ID_MODEL_FROM_DATABASE=HPT366 UDMA66 (r1) / HPT368 UDMA66 (r2) / HPT370 UDMA100 (r3) / HPT370 UDMA100 RAID (r4) + +pci:v00001103d00000004sv00001103sd00000005* + ID_MODEL_FROM_DATABASE=HPT370 UDMA100 + +pci:v00001103d00000004sv00001103sd00000006* + ID_MODEL_FROM_DATABASE=HPT302/302N + +pci:v00001103d00000005* + ID_MODEL_FROM_DATABASE=HPT372A/372N + +pci:v00001103d00000006* + ID_MODEL_FROM_DATABASE=HPT302/302N + +pci:v00001103d00000007* + ID_MODEL_FROM_DATABASE=HPT371/371N + +pci:v00001103d00000008* + ID_MODEL_FROM_DATABASE=HPT374 + +pci:v00001103d00000009* + ID_MODEL_FROM_DATABASE=HPT372N + +pci:v00001103d00000620* + ID_MODEL_FROM_DATABASE=RocketRAID 620 2 Port SATA-III Controller + +pci:v00001103d00000622* + ID_MODEL_FROM_DATABASE=RocketRAID 622 2 Port SATA-III Controller + +pci:v00001103d00000640* + ID_MODEL_FROM_DATABASE=RocketRAID 640 4 Port SATA-III Controller + +pci:v00001103d00001720* + ID_MODEL_FROM_DATABASE=RocketRAID 1720 (2x SATA II RAID Controller) + +pci:v00001103d00001740* + ID_MODEL_FROM_DATABASE=RocketRAID 1740 + +pci:v00001103d00001742* + ID_MODEL_FROM_DATABASE=RocketRAID 1742 + +pci:v00001103d00002210* + ID_MODEL_FROM_DATABASE=RocketRAID 2210 SATA-II Controller + +pci:v00001103d00002300* + ID_MODEL_FROM_DATABASE=RocketRAID 230x 4 Port SATA-II Controller + +pci:v00001103d00002310* + ID_MODEL_FROM_DATABASE=RocketRAID 2310 4 Port SATA-II Controller + +pci:v00001103d00002320* + ID_MODEL_FROM_DATABASE=RocketRAID 2320 SATA-II Controller + +pci:v00001103d00002322* + ID_MODEL_FROM_DATABASE=RocketRAID 2322 SATA-II Controller + +pci:v00001103d00002340* + ID_MODEL_FROM_DATABASE=RocketRAID 2340 16 Port SATA-II Controller + +pci:v00001103d00002640* + ID_MODEL_FROM_DATABASE=RocketRAID 2640 SAS/SATA Controller + +pci:v00001103d00002722* + ID_MODEL_FROM_DATABASE=RocketRAID 2722 + +pci:v00001103d00002740* + ID_MODEL_FROM_DATABASE=RocketRAID 2740 + +pci:v00001103d00002744* + ID_MODEL_FROM_DATABASE=RocketRaid 2744 + +pci:v00001103d00002782* + ID_MODEL_FROM_DATABASE=RocketRAID 2782 + +pci:v00001103d00003120* + ID_MODEL_FROM_DATABASE=RocketRAID 3120 + +pci:v00001103d00003220* + ID_MODEL_FROM_DATABASE=RocketRAID 3220 + +pci:v00001103d00003320* + ID_MODEL_FROM_DATABASE=RocketRAID 3320 + +pci:v00001103d00004310* + ID_MODEL_FROM_DATABASE=RocketRaid 4310 + +pci:v00001104* + ID_VENDOR_FROM_DATABASE=RasterOps Corp. + +pci:v00001105* + ID_VENDOR_FROM_DATABASE=Sigma Designs, Inc. + +pci:v00001105d00001105* + ID_MODEL_FROM_DATABASE=REALmagic Xcard MPEG 1/2/3/4 DVD Decoder + +pci:v00001105d00008300* + ID_MODEL_FROM_DATABASE=REALmagic Hollywood Plus DVD Decoder + +pci:v00001105d00008400* + ID_MODEL_FROM_DATABASE=EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder + +pci:v00001105d00008401* + ID_MODEL_FROM_DATABASE=EM8401 REALmagic DVD/MPEG-2 A/V Decoder + +pci:v00001105d00008470* + ID_MODEL_FROM_DATABASE=EM8470 REALmagic DVD/MPEG-4 A/V Decoder + +pci:v00001105d00008471* + ID_MODEL_FROM_DATABASE=EM8471 REALmagic DVD/MPEG-4 A/V Decoder + +pci:v00001105d00008475* + ID_MODEL_FROM_DATABASE=EM8475 REALmagic DVD/MPEG-4 A/V Decoder + +pci:v00001105d00008475sv00001105sd00000001* + ID_MODEL_FROM_DATABASE=REALmagic X-Card + +pci:v00001105d00008476* + ID_MODEL_FROM_DATABASE=EM8476 REALmagic DVD/MPEG-4 A/V Decoder + +pci:v00001105d00008476sv0000127Dsd00000000* + ID_MODEL_FROM_DATABASE=CineView II + +pci:v00001105d00008485* + ID_MODEL_FROM_DATABASE=EM8485 REALmagic DVD/MPEG-4 A/V Decoder + +pci:v00001105d00008486* + ID_MODEL_FROM_DATABASE=EM8486 REALmagic DVD/MPEG-4 A/V Decoder + +pci:v00001105d0000C622* + ID_MODEL_FROM_DATABASE=EM8622L MPEG-4.10 (H.264) and SMPTE 421M (VC-1) A/V Decoder + +pci:v00001106* + ID_VENDOR_FROM_DATABASE=VIA Technologies, Inc. + +pci:v00001106d00000102* + ID_MODEL_FROM_DATABASE=Embedded VIA Ethernet Controller + +pci:v00001106d00000130* + ID_MODEL_FROM_DATABASE=VT6305 1394.A Controller + +pci:v00001106d00000198* + ID_MODEL_FROM_DATABASE=P4X600 Host Bridge + +pci:v00001106d00000204* + ID_MODEL_FROM_DATABASE=K8M800 Host Bridge + +pci:v00001106d00000208* + ID_MODEL_FROM_DATABASE=PT890 Host Bridge + +pci:v00001106d00000238* + ID_MODEL_FROM_DATABASE=K8T890 Host Bridge + +pci:v00001106d00000258* + ID_MODEL_FROM_DATABASE=PT880 Host Bridge + +pci:v00001106d00000259* + ID_MODEL_FROM_DATABASE=CN333/CN400/PM880 Host Bridge + +pci:v00001106d00000269* + ID_MODEL_FROM_DATABASE=KT880 Host Bridge + +pci:v00001106d00000282* + ID_MODEL_FROM_DATABASE=K8T800Pro Host Bridge + +pci:v00001106d00000282sv00001043sd000080A3* + ID_MODEL_FROM_DATABASE=A8V Deluxe + +pci:v00001106d00000290* + ID_MODEL_FROM_DATABASE=K8M890 Host Bridge + +pci:v00001106d00000293* + ID_MODEL_FROM_DATABASE=PM896 Host Bridge + +pci:v00001106d00000296* + ID_MODEL_FROM_DATABASE=P4M800 Host Bridge + +pci:v00001106d00000305* + ID_MODEL_FROM_DATABASE=VT8363/8365 [KT133/KM133] + +pci:v00001106d00000305sv00001019sd00000987* + ID_MODEL_FROM_DATABASE=K7VZA Mainboard + +pci:v00001106d00000305sv00001043sd00008033* + ID_MODEL_FROM_DATABASE=A7V Mainboard + +pci:v00001106d00000305sv00001043sd0000803E* + ID_MODEL_FROM_DATABASE=A7V-E Mainboard + +pci:v00001106d00000305sv00001043sd00008042* + ID_MODEL_FROM_DATABASE=A7V133/A7V133-C Mainboard + +pci:v00001106d00000305sv0000147Bsd0000A401* + ID_MODEL_FROM_DATABASE=KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard + +pci:v00001106d00000308* + ID_MODEL_FROM_DATABASE=PT880 Ultra/PT894 Host Bridge + +pci:v00001106d00000308sv00001043sd00008199* + ID_MODEL_FROM_DATABASE=P4V800D-X Mainboard + +pci:v00001106d00000308sv00001849sd00000308* + ID_MODEL_FROM_DATABASE=Motherboard + +pci:v00001106d00000314* + ID_MODEL_FROM_DATABASE=CN700/VN800/P4M800CE/Pro Host Bridge + +pci:v00001106d00000324* + ID_MODEL_FROM_DATABASE=CX700/VX700 Host Bridge + +pci:v00001106d00000327* + ID_MODEL_FROM_DATABASE=P4M890 Host Bridge + +pci:v00001106d00000336* + ID_MODEL_FROM_DATABASE=K8M890CE Host Bridge + +pci:v00001106d00000340* + ID_MODEL_FROM_DATABASE=PT900 Host Bridge + +pci:v00001106d00000351* + ID_MODEL_FROM_DATABASE=K8T890CF Host Bridge + +pci:v00001106d00000353* + ID_MODEL_FROM_DATABASE=VX800 Host Bridge + +pci:v00001106d00000364* + ID_MODEL_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge + +pci:v00001106d00000364sv00001043sd000081CE* + ID_MODEL_FROM_DATABASE=P5VD2-VM mothervoard + +pci:v00001106d00000391* + ID_MODEL_FROM_DATABASE=VT8371 [KX133] + +pci:v00001106d00000409* + ID_MODEL_FROM_DATABASE=VX855/VX875 Host Bridge: Host Control + +pci:v00001106d00000410* + ID_MODEL_FROM_DATABASE=VX900 Host Bridge: Host Control + +pci:v00001106d00000415* + ID_MODEL_FROM_DATABASE=VT6415 PATA IDE Host Controller + +pci:v00001106d00000415sv00001043sd0000838F* + ID_MODEL_FROM_DATABASE=M5A88-V EVO + +pci:v00001106d00000501* + ID_MODEL_FROM_DATABASE=VT8501 [Apollo MVP4] + +pci:v00001106d00000505* + ID_MODEL_FROM_DATABASE=VT82C505 + +pci:v00001106d00000561* + ID_MODEL_FROM_DATABASE=VT82C576MV + +pci:v00001106d00000571* + ID_MODEL_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE + +pci:v00001106d00000571sv00001019sd00000985* + ID_MODEL_FROM_DATABASE=P6VXA Motherboard + +pci:v00001106d00000571sv00001019sd00000A81* + ID_MODEL_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235) + +pci:v00001106d00000571sv00001043sd00008052* + ID_MODEL_FROM_DATABASE=VT8233A Bus Master ATA100/66/33 IDE + +pci:v00001106d00000571sv00001043sd0000808C* + ID_MODEL_FROM_DATABASE=A7V8X / A7V333 motherboard + +pci:v00001106d00000571sv00001043sd000080A1* + ID_MODEL_FROM_DATABASE=A7V8X-X motherboard rev. 1.01 + +pci:v00001106d00000571sv00001043sd000080ED* + ID_MODEL_FROM_DATABASE=A7V600/K8V-X/A8V Deluxe motherboard + +pci:v00001106d00000571sv00001106sd00000571* + ID_MODEL_FROM_DATABASE=VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE + +pci:v00001106d00000571sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Magnia Z310 + +pci:v00001106d00000571sv00001297sd0000F641* + ID_MODEL_FROM_DATABASE=FX41 motherboard + +pci:v00001106d00000571sv00001458sd00005002* + ID_MODEL_FROM_DATABASE=GA-7VAX Mainboard + +pci:v00001106d00000571sv00001462sd00005901* + ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) + +pci:v00001106d00000571sv00001462sd00007020* + ID_MODEL_FROM_DATABASE=K8T NEO 2 motherboard + +pci:v00001106d00000571sv00001462sd00007094* + ID_MODEL_FROM_DATABASE=K8T Neo2-F V2.0 + +pci:v00001106d00000571sv00001462sd00007120* + ID_MODEL_FROM_DATABASE=KT4AV motherboard + +pci:v00001106d00000571sv00001462sd00007181* + ID_MODEL_FROM_DATABASE=K8MM3-V mainboard + +pci:v00001106d00000571sv0000147Bsd00001407* + ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard + +pci:v00001106d00000571sv00001849sd00000571* + ID_MODEL_FROM_DATABASE=K7VT series Motherboards + +pci:v00001106d00000576* + ID_MODEL_FROM_DATABASE=VT82C576 3V [Apollo Master] + +pci:v00001106d00000581* + ID_MODEL_FROM_DATABASE=CX700/VX700 RAID Controller + +pci:v00001106d00000581sv00001106sd00000581* + ID_MODEL_FROM_DATABASE=Wrong IDE ID + +pci:v00001106d00000585* + ID_MODEL_FROM_DATABASE=VT82C585VP [Apollo VP1/VPX] + +pci:v00001106d00000586* + ID_MODEL_FROM_DATABASE=VT82C586/A/B PCI-to-ISA [Apollo VP] + +pci:v00001106d00000586sv00001106sd00000000* + ID_MODEL_FROM_DATABASE=MVP3 ISA Bridge + +pci:v00001106d00000591* + ID_MODEL_FROM_DATABASE=VT8237A SATA 2-Port Controller + +pci:v00001106d00000595* + ID_MODEL_FROM_DATABASE=VT82C595 [Apollo VP2] + +pci:v00001106d00000596* + ID_MODEL_FROM_DATABASE=VT82C596 ISA [Mobile South] + +pci:v00001106d00000596sv00001106sd00000000* + ID_MODEL_FROM_DATABASE=VT82C596/A/B PCI to ISA Bridge + +pci:v00001106d00000596sv00001458sd00000596* + ID_MODEL_FROM_DATABASE=VT82C596/A/B PCI to ISA Bridge + +pci:v00001106d00000597* + ID_MODEL_FROM_DATABASE=VT82C597 [Apollo VP3] + +pci:v00001106d00000598* + ID_MODEL_FROM_DATABASE=VT82C598 [Apollo MVP3] + +pci:v00001106d00000601* + ID_MODEL_FROM_DATABASE=VT8601 [Apollo ProMedia] + +pci:v00001106d00000605* + ID_MODEL_FROM_DATABASE=VT8605 [ProSavage PM133] + +pci:v00001106d00000605sv0000103Csd00001254* + ID_MODEL_FROM_DATABASE=D9840-60001 [Brio BA410 Motherboard] + +pci:v00001106d00000605sv00001043sd0000802C* + ID_MODEL_FROM_DATABASE=CUV4X mainboard + +pci:v00001106d00000680* + ID_MODEL_FROM_DATABASE=VT82C680 [Apollo P6] + +pci:v00001106d00000686* + ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super South] + +pci:v00001106d00000686sv00001019sd00000985* + ID_MODEL_FROM_DATABASE=P6VXA Motherboard + +pci:v00001106d00000686sv0000103Csd00001256* + ID_MODEL_FROM_DATABASE=D9840-60001 [Brio BA410 Motherboard] + +pci:v00001106d00000686sv00001043sd0000802C* + ID_MODEL_FROM_DATABASE=CUV4X mainboard + +pci:v00001106d00000686sv00001043sd00008033* + ID_MODEL_FROM_DATABASE=A7V Mainboard + +pci:v00001106d00000686sv00001043sd0000803E* + ID_MODEL_FROM_DATABASE=A7V-E Mainboard + +pci:v00001106d00000686sv00001043sd00008040* + ID_MODEL_FROM_DATABASE=A7M266 Mainboard + +pci:v00001106d00000686sv00001043sd00008042* + ID_MODEL_FROM_DATABASE=A7V133/A7V133-C Mainboard + +pci:v00001106d00000686sv00001106sd00000000* + ID_MODEL_FROM_DATABASE=VT82C686/A PCI to ISA Bridge + +pci:v00001106d00000686sv00001106sd00000686* + ID_MODEL_FROM_DATABASE=VT82C686/A PCI to ISA Bridge + +pci:v00001106d00000686sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Magnia Z310 + +pci:v00001106d00000686sv0000147Bsd0000A702* + ID_MODEL_FROM_DATABASE=KG7-Lite Mainboard + +pci:v00001106d00000691* + ID_MODEL_FROM_DATABASE=VT82C693A/694x [Apollo PRO133x] + +pci:v00001106d00000691sv00001019sd00000985* + ID_MODEL_FROM_DATABASE=P6VXA Motherboard + +pci:v00001106d00000691sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Magnia Z310 + +pci:v00001106d00000691sv00001458sd00000691* + ID_MODEL_FROM_DATABASE=VT82C691 Apollo Pro System Controller + +pci:v00001106d00000693* + ID_MODEL_FROM_DATABASE=VT82C693 [Apollo Pro Plus] + +pci:v00001106d00000698* + ID_MODEL_FROM_DATABASE=VT82C693A [Apollo Pro133 AGP] + +pci:v00001106d00000926* + ID_MODEL_FROM_DATABASE=VT82C926 [Amazon] + +pci:v00001106d00001000* + ID_MODEL_FROM_DATABASE=VT82C570MV + +pci:v00001106d00001106* + ID_MODEL_FROM_DATABASE=VT82C570MV + +pci:v00001106d00001122* + ID_MODEL_FROM_DATABASE=VX800/VX820 Chrome 9 HC3 Integrated Graphics + +pci:v00001106d00001204* + ID_MODEL_FROM_DATABASE=K8M800 Host Bridge + +pci:v00001106d00001208* + ID_MODEL_FROM_DATABASE=PT890 Host Bridge + +pci:v00001106d00001238* + ID_MODEL_FROM_DATABASE=K8T890 Host Bridge + +pci:v00001106d00001258* + ID_MODEL_FROM_DATABASE=PT880 Host Bridge + +pci:v00001106d00001259* + ID_MODEL_FROM_DATABASE=CN333/CN400/PM880 Host Bridge + +pci:v00001106d00001269* + ID_MODEL_FROM_DATABASE=KT880 Host Bridge + +pci:v00001106d00001282* + ID_MODEL_FROM_DATABASE=K8T800Pro Host Bridge + +pci:v00001106d00001290* + ID_MODEL_FROM_DATABASE=K8M890 Host Bridge + +pci:v00001106d00001293* + ID_MODEL_FROM_DATABASE=PM896 Host Bridge + +pci:v00001106d00001296* + ID_MODEL_FROM_DATABASE=P4M800 Host Bridge + +pci:v00001106d00001308* + ID_MODEL_FROM_DATABASE=PT894 Host Bridge + +pci:v00001106d00001314* + ID_MODEL_FROM_DATABASE=CN700/VN800/P4M800CE/Pro Host Bridge + +pci:v00001106d00001324* + ID_MODEL_FROM_DATABASE=CX700/VX700 Host Bridge + +pci:v00001106d00001327* + ID_MODEL_FROM_DATABASE=P4M890 Host Bridge + +pci:v00001106d00001336* + ID_MODEL_FROM_DATABASE=K8M890CE Host Bridge + +pci:v00001106d00001340* + ID_MODEL_FROM_DATABASE=PT900 Host Bridge + +pci:v00001106d00001351* + ID_MODEL_FROM_DATABASE=VT3351 Host Bridge + +pci:v00001106d00001353* + ID_MODEL_FROM_DATABASE=VX800/VX820 Error Reporting + +pci:v00001106d00001364* + ID_MODEL_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge + +pci:v00001106d00001409* + ID_MODEL_FROM_DATABASE=VX855/VX875 Error Reporting + +pci:v00001106d00001410* + ID_MODEL_FROM_DATABASE=VX900 Error Reporting + +pci:v00001106d00001571* + ID_MODEL_FROM_DATABASE=VT82C576M/VT82C586 + +pci:v00001106d00001595* + ID_MODEL_FROM_DATABASE=VT82C595/97 [Apollo VP2/97] + +pci:v00001106d00001732* + ID_MODEL_FROM_DATABASE=VT1732 [Envy24 II] PCI Multi-Channel Audio Controller + +pci:v00001106d00002106* + ID_MODEL_FROM_DATABASE=VIA Rhine Family Fast Ethernet Adapter (VT6105) + +pci:v00001106d00002204* + ID_MODEL_FROM_DATABASE=K8M800 Host Bridge + +pci:v00001106d00002208* + ID_MODEL_FROM_DATABASE=PT890 Host Bridge + +pci:v00001106d00002238* + ID_MODEL_FROM_DATABASE=K8T890 Host Bridge + +pci:v00001106d00002258* + ID_MODEL_FROM_DATABASE=PT880 Host Bridge + +pci:v00001106d00002259* + ID_MODEL_FROM_DATABASE=CN333/CN400/PM880 CPU Host Bridge + +pci:v00001106d00002269* + ID_MODEL_FROM_DATABASE=KT880 Host Bridge + +pci:v00001106d00002282* + ID_MODEL_FROM_DATABASE=K8T800Pro Host Bridge + +pci:v00001106d00002290* + ID_MODEL_FROM_DATABASE=K8M890 Host Bridge + +pci:v00001106d00002293* + ID_MODEL_FROM_DATABASE=PM896 Host Bridge + +pci:v00001106d00002296* + ID_MODEL_FROM_DATABASE=P4M800 Host Bridge + +pci:v00001106d00002308* + ID_MODEL_FROM_DATABASE=PT894 Host Bridge + +pci:v00001106d00002314* + ID_MODEL_FROM_DATABASE=CN700/VN800/P4M800CE/Pro Host Bridge + +pci:v00001106d00002324* + ID_MODEL_FROM_DATABASE=CX700/VX700 Host Bridge + +pci:v00001106d00002327* + ID_MODEL_FROM_DATABASE=P4M890 Host Bridge + +pci:v00001106d00002336* + ID_MODEL_FROM_DATABASE=K8M890CE Host Bridge + +pci:v00001106d00002340* + ID_MODEL_FROM_DATABASE=PT900 Host Bridge + +pci:v00001106d00002351* + ID_MODEL_FROM_DATABASE=VT3351 Host Bridge + +pci:v00001106d00002353* + ID_MODEL_FROM_DATABASE=VX800/VX820 Host Bus Control + +pci:v00001106d00002364* + ID_MODEL_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge + +pci:v00001106d00002409* + ID_MODEL_FROM_DATABASE=VX855/VX875 Host Bus Control + +pci:v00001106d00002410* + ID_MODEL_FROM_DATABASE=VX900 CPU Bus Controller + +pci:v00001106d0000287A* + ID_MODEL_FROM_DATABASE=VT8251 PCI to PCI Bridge + +pci:v00001106d0000287B* + ID_MODEL_FROM_DATABASE=VT8251 Host Bridge + +pci:v00001106d0000287C* + ID_MODEL_FROM_DATABASE=VT8251 PCIE Root Port + +pci:v00001106d0000287D* + ID_MODEL_FROM_DATABASE=VT8251 PCIE Root Port + +pci:v00001106d0000287E* + ID_MODEL_FROM_DATABASE=VT8237/8251 Ultra VLINK Controller + +pci:v00001106d00003022* + ID_MODEL_FROM_DATABASE=CLE266 + +pci:v00001106d00003038* + ID_MODEL_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller + +pci:v00001106d00003038sv00000925sd00001234* + ID_MODEL_FROM_DATABASE=VA-502 Mainboard + +pci:v00001106d00003038sv00001019sd00000985* + ID_MODEL_FROM_DATABASE=P6VXA Motherboard + +pci:v00001106d00003038sv00001019sd00000A81* + ID_MODEL_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235) + +pci:v00001106d00003038sv00001043sd00008080* + ID_MODEL_FROM_DATABASE=A7V333 motherboard + +pci:v00001106d00003038sv00001043sd0000808C* + ID_MODEL_FROM_DATABASE=VT6202 USB2.0 4 port controller + +pci:v00001106d00003038sv00001043sd000080A1* + ID_MODEL_FROM_DATABASE=A7V8X-X motherboard + +pci:v00001106d00003038sv00001043sd000080ED* + ID_MODEL_FROM_DATABASE=A7V600/K8V-X/A8V Deluxe motherboard + +pci:v00001106d00003038sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Magnia Z310 + +pci:v00001106d00003038sv00001458sd00005004* + ID_MODEL_FROM_DATABASE=GA-7VAX Mainboard + +pci:v00001106d00003038sv00001462sd00005901* + ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) + +pci:v00001106d00003038sv00001462sd00007020* + ID_MODEL_FROM_DATABASE=K8T NEO 2 motherboard + +pci:v00001106d00003038sv00001462sd00007094* + ID_MODEL_FROM_DATABASE=K8T Neo2-F V2.0 + +pci:v00001106d00003038sv00001462sd00007120* + ID_MODEL_FROM_DATABASE=KT4AV motherboard + +pci:v00001106d00003038sv00001462sd00007181* + ID_MODEL_FROM_DATABASE=K8MM3-V mainboard + +pci:v00001106d00003038sv0000147Bsd00001407* + ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard + +pci:v00001106d00003038sv0000182Dsd0000201D* + ID_MODEL_FROM_DATABASE=CN-029 USB2.0 4 port PCI Card + +pci:v00001106d00003038sv00001849sd00003038* + ID_MODEL_FROM_DATABASE=K7VT series Motherboards + +pci:v00001106d00003038sv000019DAsd0000A179* + ID_MODEL_FROM_DATABASE=ZBOX nano VD01 + +pci:v00001106d00003040* + ID_MODEL_FROM_DATABASE=VT82C586B ACPI + +pci:v00001106d00003043* + ID_MODEL_FROM_DATABASE=VT86C100A [Rhine] + +pci:v00001106d00003043sv000010BDsd00000000* + ID_MODEL_FROM_DATABASE=VT86C100A Fast Ethernet Adapter + +pci:v00001106d00003043sv00001106sd00000100* + ID_MODEL_FROM_DATABASE=VT86C100A Fast Ethernet Adapter + +pci:v00001106d00003043sv00001186sd00001400* + ID_MODEL_FROM_DATABASE=DFE-530TX rev A + +pci:v00001106d00003044* + ID_MODEL_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller + +pci:v00001106d00003044sv00000010sd00000001* + ID_MODEL_FROM_DATABASE=IEEE 1394 4port DCST 1394-3+1B + +pci:v00001106d00003044sv00001025sd0000005A* + ID_MODEL_FROM_DATABASE=TravelMate 290 + +pci:v00001106d00003044sv0000103Csd00002A20* + ID_MODEL_FROM_DATABASE=Pavilion t3030.de Desktop PC + +pci:v00001106d00003044sv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Media Center PC m7590n + +pci:v00001106d00003044sv00001043sd0000808A* + ID_MODEL_FROM_DATABASE=A8V/A8N/P4P800 series motherboard + +pci:v00001106d00003044sv00001043sd000081FE* + ID_MODEL_FROM_DATABASE=Motherboard + +pci:v00001106d00003044sv00001458sd00001000* + ID_MODEL_FROM_DATABASE=GA-7VT600-1394 Motherboard + +pci:v00001106d00003044sv00001462sd0000207D* + ID_MODEL_FROM_DATABASE=K8NGM2 series motherboard + +pci:v00001106d00003044sv00001462sd0000217D* + ID_MODEL_FROM_DATABASE=Aspire L250 + +pci:v00001106d00003044sv00001462sd0000590D* + ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) + +pci:v00001106d00003044sv00001462sd0000702D* + ID_MODEL_FROM_DATABASE=K8T NEO 2 motherboard + +pci:v00001106d00003044sv00001462sd0000971D* + ID_MODEL_FROM_DATABASE=MS-6917 + +pci:v00001106d00003050* + ID_MODEL_FROM_DATABASE=VT82C596 Power Management + +pci:v00001106d00003051* + ID_MODEL_FROM_DATABASE=VT82C596 Power Management + +pci:v00001106d00003053* + ID_MODEL_FROM_DATABASE=VT6105M [Rhine-III] + +pci:v00001106d00003057* + ID_MODEL_FROM_DATABASE=VT82C686 [Apollo Super ACPI] + +pci:v00001106d00003057sv00001019sd00000985* + ID_MODEL_FROM_DATABASE=P6VXA Motherboard + +pci:v00001106d00003057sv00001019sd00000987* + ID_MODEL_FROM_DATABASE=K7VZA Motherboard + +pci:v00001106d00003057sv00001043sd00008033* + ID_MODEL_FROM_DATABASE=A7V Mainboard + +pci:v00001106d00003057sv00001043sd0000803E* + ID_MODEL_FROM_DATABASE=A7V-E Mainboard + +pci:v00001106d00003057sv00001043sd00008040* + ID_MODEL_FROM_DATABASE=A7M266 Mainboard + +pci:v00001106d00003057sv00001043sd00008042* + ID_MODEL_FROM_DATABASE=A7V133/A7V133-C Mainboard + +pci:v00001106d00003057sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Magnia Z310 + +pci:v00001106d00003058* + ID_MODEL_FROM_DATABASE=VT82C686 AC97 Audio Controller + +pci:v00001106d00003058sv00000E11sd00000097* + ID_MODEL_FROM_DATABASE=SoundMax Digital Integrated Audio + +pci:v00001106d00003058sv00000E11sd0000B194* + ID_MODEL_FROM_DATABASE=Soundmax integrated digital audio + +pci:v00001106d00003058sv00001019sd00000985* + ID_MODEL_FROM_DATABASE=P6VXA Motherboard + +pci:v00001106d00003058sv00001019sd00000987* + ID_MODEL_FROM_DATABASE=K7VZA Motherboard + +pci:v00001106d00003058sv0000103Csd00001251* + ID_MODEL_FROM_DATABASE=D9840-60001 [Brio BA410 Motherboard] + +pci:v00001106d00003058sv00001043sd00001106* + ID_MODEL_FROM_DATABASE=A7V133/A7V133-C Mainboard + +pci:v00001106d00003058sv00001106sd00004511* + ID_MODEL_FROM_DATABASE=Onboard Audio on EP7KXA + +pci:v00001106d00003058sv00001106sd0000AA03* + ID_MODEL_FROM_DATABASE=VT1612A AC'97 Audio Controller + +pci:v00001106d00003058sv000011D4sd00005348* + ID_MODEL_FROM_DATABASE=AD1881A audio + +pci:v00001106d00003058sv00001458sd00007600* + ID_MODEL_FROM_DATABASE=Onboard Audio + +pci:v00001106d00003058sv00001462sd00003091* + ID_MODEL_FROM_DATABASE=MS-6309 Onboard Audio + +pci:v00001106d00003058sv00001462sd00003092* + ID_MODEL_FROM_DATABASE=MS-6309 v2.x Mainboard (VIA VT1611A codec) + +pci:v00001106d00003058sv00001462sd00003300* + ID_MODEL_FROM_DATABASE=MS-6330 Onboard Audio + +pci:v00001106d00003058sv000015DDsd00007609* + ID_MODEL_FROM_DATABASE=Onboard Audio + +pci:v00001106d00003059* + ID_MODEL_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller + +pci:v00001106d00003059sv00001019sd00000A81* + ID_MODEL_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235) + +pci:v00001106d00003059sv00001019sd00001877* + ID_MODEL_FROM_DATABASE=K8M800-M2 (V2.0) onboard audio + +pci:v00001106d00003059sv00001043sd00008095* + ID_MODEL_FROM_DATABASE=A7V8X Motherboard (Realtek ALC650 codec) + +pci:v00001106d00003059sv00001043sd000080A1* + ID_MODEL_FROM_DATABASE=A7V8X-X Motherboard + +pci:v00001106d00003059sv00001043sd000080B0* + ID_MODEL_FROM_DATABASE=A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX]) + +pci:v00001106d00003059sv00001043sd0000810D* + ID_MODEL_FROM_DATABASE=Asus P5VD1-X (AD1888 codec [SoundMax]) + +pci:v00001106d00003059sv00001043sd0000812A* + ID_MODEL_FROM_DATABASE=A8V Deluxe motherboard (Realtek ALC850 codec) + +pci:v00001106d00003059sv000010ECsd00008168* + ID_MODEL_FROM_DATABASE=High Definition Audio + +pci:v00001106d00003059sv00001106sd00003059* + ID_MODEL_FROM_DATABASE=L7VMM2 Motherboard + +pci:v00001106d00003059sv00001106sd00004161* + ID_MODEL_FROM_DATABASE=K7VT2 motherboard + +pci:v00001106d00003059sv00001106sd00004170* + ID_MODEL_FROM_DATABASE=PCPartner P4M800-8237R Motherboard + +pci:v00001106d00003059sv00001106sd00004552* + ID_MODEL_FROM_DATABASE=Soyo KT-600 Dragon Plus (Realtek ALC 650) + +pci:v00001106d00003059sv00001297sd0000C160* + ID_MODEL_FROM_DATABASE=FX41 motherboard (Realtek ALC650 codec) + +pci:v00001106d00003059sv00001413sd0000147B* + ID_MODEL_FROM_DATABASE=KV8 Pro motherboard onboard audio + +pci:v00001106d00003059sv00001458sd0000A002* + ID_MODEL_FROM_DATABASE=GA-7VAX Onboard Audio (Realtek ALC650) + +pci:v00001106d00003059sv00001462sd00000080* + ID_MODEL_FROM_DATABASE=K8T NEO 2 motherboard + +pci:v00001106d00003059sv00001462sd00003800* + ID_MODEL_FROM_DATABASE=KT266 onboard audio + +pci:v00001106d00003059sv00001462sd00005901* + ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) + +pci:v00001106d00003059sv00001462sd00007181* + ID_MODEL_FROM_DATABASE=K8MM3-V mainboard + +pci:v00001106d00003059sv0000147Bsd00001407* + ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard + +pci:v00001106d00003059sv00001695sd0000300C* + ID_MODEL_FROM_DATABASE=EP-8KRA2+ Mainboard + +pci:v00001106d00003059sv00001849sd00000850* + ID_MODEL_FROM_DATABASE=ASRock 775Dual-880 Pro onboard audio (Realtek ALC850) + +pci:v00001106d00003059sv00001849sd00009739* + ID_MODEL_FROM_DATABASE=P4VT8 Mainboard (C-Media CMI9739A codec) + +pci:v00001106d00003059sv00001849sd00009761* + ID_MODEL_FROM_DATABASE=K7VT series Motherboards + +pci:v00001106d00003059sv00004005sd00004710* + ID_MODEL_FROM_DATABASE=MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P) + +pci:v00001106d00003059sv0000A0A0sd000001B6* + ID_MODEL_FROM_DATABASE=AK77-8XN onboard audio + +pci:v00001106d00003059sv0000A0A0sd00000342* + ID_MODEL_FROM_DATABASE=AK86-L motherboard + +pci:v00001106d00003065* + ID_MODEL_FROM_DATABASE=VT6102 [Rhine-II] + +pci:v00001106d00003065sv00001043sd000080A1* + ID_MODEL_FROM_DATABASE=A7V8X-X Motherboard + +pci:v00001106d00003065sv00001043sd000080ED* + ID_MODEL_FROM_DATABASE=A7V600-X Motherboard + +pci:v00001106d00003065sv00001106sd00000102* + ID_MODEL_FROM_DATABASE=VT6102 [Rhine II] Embeded Ethernet Controller on VT8235 + +pci:v00001106d00003065sv00001186sd00001400* + ID_MODEL_FROM_DATABASE=DFE-530TX rev A + +pci:v00001106d00003065sv00001186sd00001401* + ID_MODEL_FROM_DATABASE=DFE-530TX rev B + +pci:v00001106d00003065sv000013B9sd00001421* + ID_MODEL_FROM_DATABASE=LD-10/100AL PCI Fast Ethernet Adapter (rev.B) + +pci:v00001106d00003065sv00001462sd00007061* + ID_MODEL_FROM_DATABASE=MS-7061 + +pci:v00001106d00003065sv00001462sd00007181* + ID_MODEL_FROM_DATABASE=K8MM3-V mainboard + +pci:v00001106d00003065sv0000147Bsd00001C09* + ID_MODEL_FROM_DATABASE=NV7 Motherboard + +pci:v00001106d00003065sv00001695sd00003005* + ID_MODEL_FROM_DATABASE=VT6103 + +pci:v00001106d00003065sv00001695sd0000300C* + ID_MODEL_FROM_DATABASE=Realtek ALC655 sound chip + +pci:v00001106d00003065sv00001849sd00003065* + ID_MODEL_FROM_DATABASE=K7VT series Motherboards + +pci:v00001106d00003068* + ID_MODEL_FROM_DATABASE=AC'97 Modem Controller + +pci:v00001106d00003068sv00001462sd0000309E* + ID_MODEL_FROM_DATABASE=MS-6309 Saturn Motherboard + +pci:v00001106d00003074* + ID_MODEL_FROM_DATABASE=VT8233 PCI to ISA Bridge + +pci:v00001106d00003074sv00001043sd00008052* + ID_MODEL_FROM_DATABASE=VT8233A + +pci:v00001106d00003091* + ID_MODEL_FROM_DATABASE=VT8633 [Apollo Pro266] + +pci:v00001106d00003099* + ID_MODEL_FROM_DATABASE=VT8366/A/7 [Apollo KT266/A/333] + +pci:v00001106d00003099sv00001043sd00008064* + ID_MODEL_FROM_DATABASE=A7V266-E Mainboard + +pci:v00001106d00003099sv00001043sd0000807F* + ID_MODEL_FROM_DATABASE=A7V333 Mainboard + +pci:v00001106d00003099sv00001849sd00003099* + ID_MODEL_FROM_DATABASE=K7VT2 motherboard + +pci:v00001106d00003101* + ID_MODEL_FROM_DATABASE=VT8653 Host Bridge + +pci:v00001106d00003102* + ID_MODEL_FROM_DATABASE=VT8662 Host Bridge + +pci:v00001106d00003103* + ID_MODEL_FROM_DATABASE=VT8615 Host Bridge + +pci:v00001106d00003104* + ID_MODEL_FROM_DATABASE=USB 2.0 + +pci:v00001106d00003104sv00001019sd00000A81* + ID_MODEL_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235) + +pci:v00001106d00003104sv00001043sd0000808C* + ID_MODEL_FROM_DATABASE=A7V8X motherboard + +pci:v00001106d00003104sv00001043sd000080A1* + ID_MODEL_FROM_DATABASE=A7V8X-X motherboard rev 1.01 + +pci:v00001106d00003104sv00001043sd000080ED* + ID_MODEL_FROM_DATABASE=A7V600/K8V-X/A8V Deluxe motherboard + +pci:v00001106d00003104sv00001106sd00003104* + ID_MODEL_FROM_DATABASE=USB 2.0 Controller + +pci:v00001106d00003104sv00001297sd0000F641* + ID_MODEL_FROM_DATABASE=FX41 motherboard + +pci:v00001106d00003104sv00001458sd00005004* + ID_MODEL_FROM_DATABASE=GA-7VAX Mainboard + +pci:v00001106d00003104sv00001462sd00005901* + ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) + +pci:v00001106d00003104sv00001462sd00007020* + ID_MODEL_FROM_DATABASE=K8T NEO 2 motherboard + +pci:v00001106d00003104sv00001462sd00007094* + ID_MODEL_FROM_DATABASE=K8T Neo2-F V2.0 + +pci:v00001106d00003104sv00001462sd00007120* + ID_MODEL_FROM_DATABASE=KT4AV motherboard + +pci:v00001106d00003104sv00001462sd00007181* + ID_MODEL_FROM_DATABASE=K8MM3-V mainboard + +pci:v00001106d00003104sv0000147Bsd00001407* + ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard + +pci:v00001106d00003104sv0000182Dsd0000201D* + ID_MODEL_FROM_DATABASE=CN-029 USB 2.0 4 port PCI Card + +pci:v00001106d00003104sv00001849sd00003104* + ID_MODEL_FROM_DATABASE=K7VT series Motherboards + +pci:v00001106d00003104sv000019DAsd0000A179* + ID_MODEL_FROM_DATABASE=ZBOX nano VD01 + +pci:v00001106d00003106* + ID_MODEL_FROM_DATABASE=VT6105/VT6106S [Rhine-III] + +pci:v00001106d00003106sv00001106sd00000105* + ID_MODEL_FROM_DATABASE=VT6106S [Rhine-III] + +pci:v00001106d00003106sv00001186sd00001403* + ID_MODEL_FROM_DATABASE=DFE-530TX rev C + +pci:v00001106d00003106sv00001186sd00001405* + ID_MODEL_FROM_DATABASE=DFE-520TX Fast Ethernet PCI Adapter + +pci:v00001106d00003106sv00001186sd00001406* + ID_MODEL_FROM_DATABASE=DFE-530TX+ rev F2 + +pci:v00001106d00003106sv00001186sd00001407* + ID_MODEL_FROM_DATABASE=DFE-538TX + +pci:v00001106d00003108* + ID_MODEL_FROM_DATABASE=K8M800/K8N800/K8N800A [S3 UniChrome Pro] + +pci:v00001106d00003109* + ID_MODEL_FROM_DATABASE=VT8233C PCI to ISA Bridge + +pci:v00001106d00003112* + ID_MODEL_FROM_DATABASE=VT8361 [KLE133] Host Bridge + +pci:v00001106d00003113* + ID_MODEL_FROM_DATABASE=VPX/VPX2 PCI to PCI Bridge Controller + +pci:v00001106d00003116* + ID_MODEL_FROM_DATABASE=VT8375 [KM266/KL266] Host Bridge + +pci:v00001106d00003116sv00001297sd0000F641* + ID_MODEL_FROM_DATABASE=FX41 motherboard + +pci:v00001106d00003118* + ID_MODEL_FROM_DATABASE=CN400/PM800/PM880/PN800/PN880 [S3 UniChrome Pro] + +pci:v00001106d00003119* + ID_MODEL_FROM_DATABASE=VT6120/VT6121/VT6122 Gigabit Ethernet Adapter + +pci:v00001106d00003122* + ID_MODEL_FROM_DATABASE=VT8623 [Apollo CLE266] integrated CastleRock graphics + +pci:v00001106d00003123* + ID_MODEL_FROM_DATABASE=VT8623 [Apollo CLE266] + +pci:v00001106d00003128* + ID_MODEL_FROM_DATABASE=VT8753 [P4X266 AGP] + +pci:v00001106d00003133* + ID_MODEL_FROM_DATABASE=VT3133 Host Bridge + +pci:v00001106d00003142* + ID_MODEL_FROM_DATABASE=VT6651 WiFi Adapter, 802.11b + +pci:v00001106d00003147* + ID_MODEL_FROM_DATABASE=VT8233A ISA Bridge + +pci:v00001106d00003147sv00001043sd0000808C* + ID_MODEL_FROM_DATABASE=A7V333 motherboard + +pci:v00001106d00003148* + ID_MODEL_FROM_DATABASE=P4M266 Host Bridge + +pci:v00001106d00003149* + ID_MODEL_FROM_DATABASE=VIA VT6420 SATA RAID Controller + +pci:v00001106d00003149sv00001043sd000080ED* + ID_MODEL_FROM_DATABASE=A7V600/K8V Deluxe/K8V-X/A8V Deluxe motherboard + +pci:v00001106d00003149sv00001458sd0000B003* + ID_MODEL_FROM_DATABASE=GA-7VM400AM(F) Motherboard + +pci:v00001106d00003149sv00001462sd00005901* + ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) + +pci:v00001106d00003149sv00001462sd00007020* + ID_MODEL_FROM_DATABASE=K8T Neo 2 Motherboard + +pci:v00001106d00003149sv00001462sd00007094* + ID_MODEL_FROM_DATABASE=K8T Neo2-F V2.0 + +pci:v00001106d00003149sv00001462sd00007181* + ID_MODEL_FROM_DATABASE=K8MM3-V mainboard + +pci:v00001106d00003149sv0000147Bsd00001407* + ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard + +pci:v00001106d00003149sv0000147Bsd00001408* + ID_MODEL_FROM_DATABASE=KV7 + +pci:v00001106d00003149sv00001849sd00003149* + ID_MODEL_FROM_DATABASE=K7VT6 motherboard + +pci:v00001106d00003149sv0000A0A0sd000004AD* + ID_MODEL_FROM_DATABASE=AK86-L motherboard + +pci:v00001106d00003156* + ID_MODEL_FROM_DATABASE=P/KN266 Host Bridge + +pci:v00001106d00003157* + ID_MODEL_FROM_DATABASE=CX700/VX700 [S3 UniChrome Pro] + +pci:v00001106d00003164* + ID_MODEL_FROM_DATABASE=VT6410 ATA133 RAID controller + +pci:v00001106d00003164sv00001043sd000080F4* + ID_MODEL_FROM_DATABASE=P4P800 Mainboard Deluxe ATX + +pci:v00001106d00003164sv00001462sd00007028* + ID_MODEL_FROM_DATABASE=915P/G Neo2 + +pci:v00001106d00003168* + ID_MODEL_FROM_DATABASE=P4X333/P4X400/PT800 AGP Bridge + +pci:v00001106d00003168sv00001849sd00003168* + ID_MODEL_FROM_DATABASE=P4VT8 Mainboard + +pci:v00001106d00003177* + ID_MODEL_FROM_DATABASE=VT8235 ISA Bridge + +pci:v00001106d00003177sv00001019sd00000A81* + ID_MODEL_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235) + +pci:v00001106d00003177sv00001043sd0000808C* + ID_MODEL_FROM_DATABASE=A7V8X motherboard + +pci:v00001106d00003177sv00001043sd000080A1* + ID_MODEL_FROM_DATABASE=A7V8X-X motherboard + +pci:v00001106d00003177sv00001106sd00000000* + ID_MODEL_FROM_DATABASE=KT4AV motherboard + +pci:v00001106d00003177sv00001297sd0000F641* + ID_MODEL_FROM_DATABASE=FX41 motherboard + +pci:v00001106d00003177sv00001458sd00005001* + ID_MODEL_FROM_DATABASE=GA-7VAX Mainboard + +pci:v00001106d00003177sv00001849sd00003177* + ID_MODEL_FROM_DATABASE=K7VT series Motherboards + +pci:v00001106d00003178* + ID_MODEL_FROM_DATABASE=ProSavageDDR P4N333 Host Bridge + +pci:v00001106d00003188* + ID_MODEL_FROM_DATABASE=VT8385 [K8T800 AGP] Host Bridge + +pci:v00001106d00003188sv00001043sd000080A3* + ID_MODEL_FROM_DATABASE=K8V Deluxe/K8V-X motherboard + +pci:v00001106d00003188sv0000147Bsd00001407* + ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard + +pci:v00001106d00003189* + ID_MODEL_FROM_DATABASE=VT8377 [KT400/KT600 AGP] Host Bridge + +pci:v00001106d00003189sv00001043sd0000807F* + ID_MODEL_FROM_DATABASE=A7V8X motherboard + +pci:v00001106d00003189sv00001106sd00000000* + ID_MODEL_FROM_DATABASE=KT4AV motherboard (KT400A) + +pci:v00001106d00003189sv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-7VAX Mainboard + +pci:v00001106d00003189sv00001849sd00003189* + ID_MODEL_FROM_DATABASE=K7VT series Motherboards + +pci:v00001106d00003204* + ID_MODEL_FROM_DATABASE=K8M800 Host Bridge + +pci:v00001106d00003205* + ID_MODEL_FROM_DATABASE=VT8378 [KM400/A] Chipset Host Bridge + +pci:v00001106d00003205sv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-7VM400M Motherboard + +pci:v00001106d00003208* + ID_MODEL_FROM_DATABASE=PT890 Host Bridge + +pci:v00001106d00003213* + ID_MODEL_FROM_DATABASE=VPX/VPX2 PCI to PCI Bridge Controller + +pci:v00001106d00003218* + ID_MODEL_FROM_DATABASE=K8T800M Host Bridge + +pci:v00001106d00003227* + ID_MODEL_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] + +pci:v00001106d00003227sv00001043sd000080ED* + ID_MODEL_FROM_DATABASE=A7V600/K8V-X/A8V Deluxe motherboard + +pci:v00001106d00003227sv00001106sd00003227* + ID_MODEL_FROM_DATABASE=DFI KT600-AL / Soltek SL-B9D-FGR Motherboard + +pci:v00001106d00003227sv00001458sd00005001* + ID_MODEL_FROM_DATABASE=GA-7VT600 Motherboard + +pci:v00001106d00003227sv0000147Bsd00001407* + ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard + +pci:v00001106d00003227sv00001849sd00003227* + ID_MODEL_FROM_DATABASE=K7VT4 motherboard + +pci:v00001106d00003230* + ID_MODEL_FROM_DATABASE=K8M890CE/K8N890CE [Chrome 9] + +pci:v00001106d00003238* + ID_MODEL_FROM_DATABASE=K8T890 Host Bridge + +pci:v00001106d00003249* + ID_MODEL_FROM_DATABASE=VT6421 IDE/SATA Controller + +pci:v00001106d0000324A* + ID_MODEL_FROM_DATABASE=CX700/VX700 PCI to PCI Bridge + +pci:v00001106d0000324B* + ID_MODEL_FROM_DATABASE=CX700/VX700 Host Bridge + +pci:v00001106d0000324E* + ID_MODEL_FROM_DATABASE=CX700/VX700 Internal Module Bus + +pci:v00001106d00003253* + ID_MODEL_FROM_DATABASE=VT6655 WiFi Adapter, 802.11a/b/g + +pci:v00001106d00003258* + ID_MODEL_FROM_DATABASE=PT880 Host Bridge + +pci:v00001106d00003259* + ID_MODEL_FROM_DATABASE=CN333/CN400/PM880 Host Bridge + +pci:v00001106d00003260* + ID_MODEL_FROM_DATABASE=VIA Chrome9 HC IGP + +pci:v00001106d00003269* + ID_MODEL_FROM_DATABASE=KT880 Host Bridge + +pci:v00001106d00003282* + ID_MODEL_FROM_DATABASE=K8T800Pro Host Bridge + +pci:v00001106d00003287* + ID_MODEL_FROM_DATABASE=VT8251 PCI to ISA Bridge + +pci:v00001106d00003288* + ID_MODEL_FROM_DATABASE=VT8237A/VT8251 HDA Controller + +pci:v00001106d00003288sv000019DAsd0000A179* + ID_MODEL_FROM_DATABASE=ZBOX VD01 + +pci:v00001106d00003290* + ID_MODEL_FROM_DATABASE=K8M890 Host Bridge + +pci:v00001106d00003296* + ID_MODEL_FROM_DATABASE=P4M800 Host Bridge + +pci:v00001106d00003324* + ID_MODEL_FROM_DATABASE=CX700/VX700 Host Bridge + +pci:v00001106d00003327* + ID_MODEL_FROM_DATABASE=P4M890 Host Bridge + +pci:v00001106d00003336* + ID_MODEL_FROM_DATABASE=K8M890CE Host Bridge + +pci:v00001106d00003337* + ID_MODEL_FROM_DATABASE=VT8237A PCI to ISA Bridge + +pci:v00001106d00003340* + ID_MODEL_FROM_DATABASE=PT900 Host Bridge + +pci:v00001106d00003343* + ID_MODEL_FROM_DATABASE=P4M890 [S3 UniChrome Pro] + +pci:v00001106d00003344* + ID_MODEL_FROM_DATABASE=CN700/P4M800 Pro/P4M800 CE/VN800 Graphics [S3 UniChrome Pro] + +pci:v00001106d00003349* + ID_MODEL_FROM_DATABASE=VT8251 AHCI/SATA 4-Port Controller + +pci:v00001106d00003351* + ID_MODEL_FROM_DATABASE=VT3351 Host Bridge + +pci:v00001106d00003353* + ID_MODEL_FROM_DATABASE=VX800 PCI to PCI Bridge + +pci:v00001106d00003364* + ID_MODEL_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge + +pci:v00001106d00003371* + ID_MODEL_FROM_DATABASE=CN896/VN896/P4M900 [Chrome 9 HC] + +pci:v00001106d00003372* + ID_MODEL_FROM_DATABASE=VT8237S PCI to ISA Bridge + +pci:v00001106d0000337A* + ID_MODEL_FROM_DATABASE=VT8237A PCI to PCI Bridge + +pci:v00001106d0000337B* + ID_MODEL_FROM_DATABASE=VT8237A Host Bridge + +pci:v00001106d00003403* + ID_MODEL_FROM_DATABASE=VT6315 Series Firewire Controller + +pci:v00001106d00003403sv00001043sd00008374* + ID_MODEL_FROM_DATABASE=M5A88-V EVO + +pci:v00001106d00003403sv00001043sd00008384* + ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard + +pci:v00001106d00003409* + ID_MODEL_FROM_DATABASE=VX855/VX875 DRAM Bus Control + +pci:v00001106d00003410* + ID_MODEL_FROM_DATABASE=VX900 DRAM Bus Control + +pci:v00001106d00003410sv000019DAsd0000A179* + ID_MODEL_FROM_DATABASE=ZBOX nano VD01 + +pci:v00001106d00003432* + ID_MODEL_FROM_DATABASE=VL80x xHCI USB 3.0 Controller + +pci:v00001106d00004149* + ID_MODEL_FROM_DATABASE=VIA VT6420 (ATA133) Controller + +pci:v00001106d00004204* + ID_MODEL_FROM_DATABASE=K8M800 Host Bridge + +pci:v00001106d00004208* + ID_MODEL_FROM_DATABASE=PT890 Host Bridge + +pci:v00001106d00004238* + ID_MODEL_FROM_DATABASE=K8T890 Host Bridge + +pci:v00001106d00004258* + ID_MODEL_FROM_DATABASE=PT880 Host Bridge + +pci:v00001106d00004259* + ID_MODEL_FROM_DATABASE=CN333/CN400/PM880 Host Bridge + +pci:v00001106d00004269* + ID_MODEL_FROM_DATABASE=KT880 Host Bridge + +pci:v00001106d00004282* + ID_MODEL_FROM_DATABASE=K8T800Pro Host Bridge + +pci:v00001106d00004290* + ID_MODEL_FROM_DATABASE=K8M890 Host Bridge + +pci:v00001106d00004293* + ID_MODEL_FROM_DATABASE=PM896 Host Bridge + +pci:v00001106d00004296* + ID_MODEL_FROM_DATABASE=P4M800 Host Bridge + +pci:v00001106d00004308* + ID_MODEL_FROM_DATABASE=PT894 Host Bridge + +pci:v00001106d00004314* + ID_MODEL_FROM_DATABASE=CN700/VN800/P4M800CE/Pro Host Bridge + +pci:v00001106d00004324* + ID_MODEL_FROM_DATABASE=CX700/VX700 Host Bridge + +pci:v00001106d00004327* + ID_MODEL_FROM_DATABASE=P4M890 Host Bridge + +pci:v00001106d00004336* + ID_MODEL_FROM_DATABASE=K8M890CE Host Bridge + +pci:v00001106d00004340* + ID_MODEL_FROM_DATABASE=PT900 Host Bridge + +pci:v00001106d00004351* + ID_MODEL_FROM_DATABASE=VT3351 Host Bridge + +pci:v00001106d00004353* + ID_MODEL_FROM_DATABASE=VX800/VX820 Power Management Control + +pci:v00001106d00004364* + ID_MODEL_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge + +pci:v00001106d00004409* + ID_MODEL_FROM_DATABASE=VX855/VX875 Power Management Control + +pci:v00001106d00004410* + ID_MODEL_FROM_DATABASE=VX900 Power Management and Chip Testing Control + +pci:v00001106d00004410sv000019DAsd0000A179* + ID_MODEL_FROM_DATABASE=ZBOX nano VD01 + +pci:v00001106d00005030* + ID_MODEL_FROM_DATABASE=VT82C596 ACPI [Apollo PRO] + +pci:v00001106d00005122* + ID_MODEL_FROM_DATABASE=VX855/VX875 Chrome 9 HCM Integrated Graphics + +pci:v00001106d00005208* + ID_MODEL_FROM_DATABASE=PT890 I/O APIC Interrupt Controller + +pci:v00001106d00005238* + ID_MODEL_FROM_DATABASE=K8T890 I/O APIC Interrupt Controller + +pci:v00001106d00005287* + ID_MODEL_FROM_DATABASE=VT8251 Serial ATA Controller + +pci:v00001106d00005290* + ID_MODEL_FROM_DATABASE=K8M890 I/O APIC Interrupt Controller + +pci:v00001106d00005308* + ID_MODEL_FROM_DATABASE=PT894 I/O APIC Interrupt Controller + +pci:v00001106d00005324* + ID_MODEL_FROM_DATABASE=VX800 Serial ATA and EIDE Controller + +pci:v00001106d00005327* + ID_MODEL_FROM_DATABASE=P4M890 I/O APIC Interrupt Controller + +pci:v00001106d00005336* + ID_MODEL_FROM_DATABASE=K8M890CE I/O APIC Interrupt Controller + +pci:v00001106d00005340* + ID_MODEL_FROM_DATABASE=PT900 I/O APIC Interrupt Controller + +pci:v00001106d00005351* + ID_MODEL_FROM_DATABASE=VT3351 I/O APIC Interrupt Controller + +pci:v00001106d00005353* + ID_MODEL_FROM_DATABASE=VX800/VX820 APIC and Central Traffic Control + +pci:v00001106d00005364* + ID_MODEL_FROM_DATABASE=CN896/VN896/P4M900 I/O APIC Interrupt Controller + +pci:v00001106d00005372* + ID_MODEL_FROM_DATABASE=VT8237/8251 Serial ATA Controller + +pci:v00001106d00005409* + ID_MODEL_FROM_DATABASE=VX855/VX875 APIC and Central Traffic Control + +pci:v00001106d00005410* + ID_MODEL_FROM_DATABASE=VX900 APIC and Central Traffic Control + +pci:v00001106d00006100* + ID_MODEL_FROM_DATABASE=VT85C100A [Rhine II] + +pci:v00001106d00006287* + ID_MODEL_FROM_DATABASE=SATA RAID Controller + +pci:v00001106d00006290* + ID_MODEL_FROM_DATABASE=K8M890CE Host Bridge + +pci:v00001106d00006327* + ID_MODEL_FROM_DATABASE=P4M890 Security Device + +pci:v00001106d00006353* + ID_MODEL_FROM_DATABASE=VX800/VX820 Scratch Registers + +pci:v00001106d00006364* + ID_MODEL_FROM_DATABASE=CN896/VN896/P4M900 Security Device + +pci:v00001106d00006409* + ID_MODEL_FROM_DATABASE=VX855/VX875 Scratch Registers + +pci:v00001106d00006410* + ID_MODEL_FROM_DATABASE=VX900 Scratch Registers + +pci:v00001106d00006410sv000019DAsd0000A179* + ID_MODEL_FROM_DATABASE=ZBOX nano VD01 + +pci:v00001106d00007122* + ID_MODEL_FROM_DATABASE=VX900 Graphics [Chrome9 HD] + +pci:v00001106d00007204* + ID_MODEL_FROM_DATABASE=K8M800 Host Bridge + +pci:v00001106d00007205* + ID_MODEL_FROM_DATABASE=KM400/KN400/P4M800 [S3 UniChrome] + +pci:v00001106d00007205sv00001458sd0000D000* + ID_MODEL_FROM_DATABASE=Gigabyte GA-7VM400(A)M(F) Motherboard + +pci:v00001106d00007205sv00001462sd00007061* + ID_MODEL_FROM_DATABASE=MS-7061 + +pci:v00001106d00007208* + ID_MODEL_FROM_DATABASE=PT890 Host Bridge + +pci:v00001106d00007238* + ID_MODEL_FROM_DATABASE=K8T890 Host Bridge + +pci:v00001106d00007258* + ID_MODEL_FROM_DATABASE=PT880 Host Bridge + +pci:v00001106d00007259* + ID_MODEL_FROM_DATABASE=CN333/CN400/PM880 Host Bridge + +pci:v00001106d00007269* + ID_MODEL_FROM_DATABASE=KT880 Host Bridge + +pci:v00001106d00007282* + ID_MODEL_FROM_DATABASE=K8T800Pro Host Bridge + +pci:v00001106d00007290* + ID_MODEL_FROM_DATABASE=K8M890 Host Bridge + +pci:v00001106d00007293* + ID_MODEL_FROM_DATABASE=PM896 Host Bridge + +pci:v00001106d00007296* + ID_MODEL_FROM_DATABASE=P4M800 Host Bridge + +pci:v00001106d00007308* + ID_MODEL_FROM_DATABASE=PT894 Host Bridge + +pci:v00001106d00007314* + ID_MODEL_FROM_DATABASE=CN700/VN800/P4M800CE/Pro Host Bridge + +pci:v00001106d00007324* + ID_MODEL_FROM_DATABASE=CX700/VX700 Host Bridge + +pci:v00001106d00007327* + ID_MODEL_FROM_DATABASE=P4M890 Host Bridge + +pci:v00001106d00007336* + ID_MODEL_FROM_DATABASE=K8M890CE Host Bridge + +pci:v00001106d00007340* + ID_MODEL_FROM_DATABASE=PT900 Host Bridge + +pci:v00001106d00007351* + ID_MODEL_FROM_DATABASE=VT3351 Host Bridge + +pci:v00001106d00007353* + ID_MODEL_FROM_DATABASE=VX800/VX820 North-South Module Interface Control + +pci:v00001106d00007364* + ID_MODEL_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge + +pci:v00001106d00007409* + ID_MODEL_FROM_DATABASE=VX855/VX875 North-South Module Interface Control + +pci:v00001106d00007410* + ID_MODEL_FROM_DATABASE=VX900 North-South Module Interface Control + +pci:v00001106d00007410sv000019DAsd0000A179* + ID_MODEL_FROM_DATABASE=ZBOX nano VD01 + +pci:v00001106d00008231* + ID_MODEL_FROM_DATABASE=VT8231 [PCI-to-ISA Bridge] + +pci:v00001106d00008235* + ID_MODEL_FROM_DATABASE=VT8235 ACPI + +pci:v00001106d00008305* + ID_MODEL_FROM_DATABASE=VT8363/8365 [KT133/KM133 AGP] + +pci:v00001106d00008324* + ID_MODEL_FROM_DATABASE=CX700/VX700 PCI to ISA Bridge + +pci:v00001106d00008353* + ID_MODEL_FROM_DATABASE=VX800/VX820 Bus Control and Power Management + +pci:v00001106d00008391* + ID_MODEL_FROM_DATABASE=VT8371 [KX133 AGP] + +pci:v00001106d00008400* + ID_MODEL_FROM_DATABASE=MVP4 + +pci:v00001106d00008409* + ID_MODEL_FROM_DATABASE=VX855/VX875 Bus Control and Power Management + +pci:v00001106d00008410* + ID_MODEL_FROM_DATABASE=VX900 Bus Control and Power Management + +pci:v00001106d00008410sv000019DAsd0000A179* + ID_MODEL_FROM_DATABASE=ZBOX VD01 + +pci:v00001106d00008500* + ID_MODEL_FROM_DATABASE=KLE133/PLE133/PLE133T + +pci:v00001106d00008501* + ID_MODEL_FROM_DATABASE=VT8501 [Apollo MVP4 AGP] + +pci:v00001106d00008596* + ID_MODEL_FROM_DATABASE=VT82C596 [Apollo PRO AGP] + +pci:v00001106d00008597* + ID_MODEL_FROM_DATABASE=VT82C597 [Apollo VP3 AGP] + +pci:v00001106d00008598* + ID_MODEL_FROM_DATABASE=VT82C598/694x [Apollo MVP3/Pro133x AGP] + +pci:v00001106d00008598sv00001019sd00000985* + ID_MODEL_FROM_DATABASE=P6VXA Motherboard + +pci:v00001106d00008601* + ID_MODEL_FROM_DATABASE=VT8601 [Apollo ProMedia AGP] + +pci:v00001106d00008605* + ID_MODEL_FROM_DATABASE=VT8605 [PM133 AGP] + +pci:v00001106d00008691* + ID_MODEL_FROM_DATABASE=VT82C691 [Apollo Pro] + +pci:v00001106d00008693* + ID_MODEL_FROM_DATABASE=VT82C693 [Apollo Pro Plus] PCI Bridge + +pci:v00001106d00008A25* + ID_MODEL_FROM_DATABASE=PL133/PL133T [S3 ProSavage] + +pci:v00001106d00008A26* + ID_MODEL_FROM_DATABASE=KL133/KL133A/KM133/KM133A [S3 ProSavage] + +pci:v00001106d00008D01* + ID_MODEL_FROM_DATABASE=PN133/PN133T [S3 Twister] + +pci:v00001106d00008D04* + ID_MODEL_FROM_DATABASE=KM266/P4M266/P4M266A/P4N266 [S3 ProSavageDDR] + +pci:v00001106d00009001* + ID_MODEL_FROM_DATABASE=VX900 Serial ATA Controller + +pci:v00001106d00009530* + ID_MODEL_FROM_DATABASE=Secure Digital Memory Card Controller + +pci:v00001106d000095D0* + ID_MODEL_FROM_DATABASE=SDIO Host Controller + +pci:v00001106d0000A208* + ID_MODEL_FROM_DATABASE=PT890 PCI to PCI Bridge Controller + +pci:v00001106d0000A238* + ID_MODEL_FROM_DATABASE=K8T890 PCI to PCI Bridge Controller + +pci:v00001106d0000A327* + ID_MODEL_FROM_DATABASE=P4M890 PCI to PCI Bridge Controller + +pci:v00001106d0000A353* + ID_MODEL_FROM_DATABASE=VX8xx South-North Module Interface Control + +pci:v00001106d0000A364* + ID_MODEL_FROM_DATABASE=CN896/VN896/P4M900 PCI to PCI Bridge Controller + +pci:v00001106d0000A409* + ID_MODEL_FROM_DATABASE=VX855/VX875 USB Device Controller + +pci:v00001106d0000A410* + ID_MODEL_FROM_DATABASE=VX900 PCI Express Root Port 0 + +pci:v00001106d0000B091* + ID_MODEL_FROM_DATABASE=VT8633 [Apollo Pro266 AGP] + +pci:v00001106d0000B099* + ID_MODEL_FROM_DATABASE=VT8366/A/7 [Apollo KT266/A/333 AGP] + +pci:v00001106d0000B101* + ID_MODEL_FROM_DATABASE=VT8653 AGP Bridge + +pci:v00001106d0000B102* + ID_MODEL_FROM_DATABASE=VT8362 AGP Bridge + +pci:v00001106d0000B103* + ID_MODEL_FROM_DATABASE=VT8615 AGP Bridge + +pci:v00001106d0000B112* + ID_MODEL_FROM_DATABASE=VT8361 [KLE133] AGP Bridge + +pci:v00001106d0000B113* + ID_MODEL_FROM_DATABASE=VPX/VPX2 I/O APIC Interrupt Controller + +pci:v00001106d0000B115* + ID_MODEL_FROM_DATABASE=VT8363/8365 [KT133/KM133] PCI Bridge + +pci:v00001106d0000B168* + ID_MODEL_FROM_DATABASE=VT8235 PCI Bridge + +pci:v00001106d0000B188* + ID_MODEL_FROM_DATABASE=VT8237/8251 PCI bridge [K8M890/K8T800/K8T890 South] + +pci:v00001106d0000B188sv0000147Bsd00001407* + ID_MODEL_FROM_DATABASE=KV8-MAX3 motherboard + +pci:v00001106d0000B198* + ID_MODEL_FROM_DATABASE=VT8237/VX700 PCI Bridge + +pci:v00001106d0000B213* + ID_MODEL_FROM_DATABASE=VPX/VPX2 I/O APIC Interrupt Controller + +pci:v00001106d0000B353* + ID_MODEL_FROM_DATABASE=VX855/VX875/VX900 PCI to PCI Bridge + +pci:v00001106d0000B410* + ID_MODEL_FROM_DATABASE=VX900 PCI Express Root Port 1 + +pci:v00001106d0000B999* + ID_MODEL_FROM_DATABASE=[K8T890 North / VT8237 South] PCI Bridge + +pci:v00001106d0000C208* + ID_MODEL_FROM_DATABASE=PT890 PCI to PCI Bridge Controller + +pci:v00001106d0000C238* + ID_MODEL_FROM_DATABASE=K8T890 PCI to PCI Bridge Controller + +pci:v00001106d0000C327* + ID_MODEL_FROM_DATABASE=P4M890 PCI to PCI Bridge Controller + +pci:v00001106d0000C340* + ID_MODEL_FROM_DATABASE=PT900 PCI to PCI Bridge Controller + +pci:v00001106d0000C353* + ID_MODEL_FROM_DATABASE=VX800/VX820 PCI Express Root Port + +pci:v00001106d0000C364* + ID_MODEL_FROM_DATABASE=CN896/VN896/P4M900 PCI to PCI Bridge Controller + +pci:v00001106d0000C409* + ID_MODEL_FROM_DATABASE=VX855/VX875 EIDE Controller + +pci:v00001106d0000C410* + ID_MODEL_FROM_DATABASE=VX900 PCI Express Root Port 2 + +pci:v00001106d0000D104* + ID_MODEL_FROM_DATABASE=VT8237R USB UDCI Controller + +pci:v00001106d0000D208* + ID_MODEL_FROM_DATABASE=PT890 PCI to PCI Bridge Controller + +pci:v00001106d0000D213* + ID_MODEL_FROM_DATABASE=VPX/VPX2 PCI to PCI Bridge Controller + +pci:v00001106d0000D238* + ID_MODEL_FROM_DATABASE=K8T890 PCI to PCI Bridge Controller + +pci:v00001106d0000D340* + ID_MODEL_FROM_DATABASE=PT900 PCI to PCI Bridge Controller + +pci:v00001106d0000D410* + ID_MODEL_FROM_DATABASE=VX900 PCI Express Root Port 3 + +pci:v00001106d0000E208* + ID_MODEL_FROM_DATABASE=PT890 PCI to PCI Bridge Controller + +pci:v00001106d0000E238* + ID_MODEL_FROM_DATABASE=K8T890 PCI to PCI Bridge Controller + +pci:v00001106d0000E340* + ID_MODEL_FROM_DATABASE=PT900 PCI to PCI Bridge Controller + +pci:v00001106d0000E353* + ID_MODEL_FROM_DATABASE=VX800/VX820 PCI Express Root Port + +pci:v00001106d0000F208* + ID_MODEL_FROM_DATABASE=PT890 PCI to PCI Bridge Controller + +pci:v00001106d0000F238* + ID_MODEL_FROM_DATABASE=K8T890 PCI to PCI Bridge Controller + +pci:v00001106d0000F340* + ID_MODEL_FROM_DATABASE=PT900 PCI to PCI Bridge Controller + +pci:v00001106d0000F353* + ID_MODEL_FROM_DATABASE=VX800/VX820 PCI Express Root Port + +pci:v00001107* + ID_VENDOR_FROM_DATABASE=Stratus Computers + +pci:v00001107d00000576* + ID_MODEL_FROM_DATABASE=VIA VT82C570MV [Apollo] (Wrong vendor ID!) + +pci:v00001108* + ID_VENDOR_FROM_DATABASE=Proteon, Inc. + +pci:v00001108d00000100* + ID_MODEL_FROM_DATABASE=p1690plus_AA + +pci:v00001108d00000101* + ID_MODEL_FROM_DATABASE=p1690plus_AB + +pci:v00001108d00000105* + ID_MODEL_FROM_DATABASE=P1690Plus + +pci:v00001108d00000108* + ID_MODEL_FROM_DATABASE=P1690Plus + +pci:v00001108d00000138* + ID_MODEL_FROM_DATABASE=P1690Plus + +pci:v00001108d00000139* + ID_MODEL_FROM_DATABASE=P1690Plus + +pci:v00001108d0000013C* + ID_MODEL_FROM_DATABASE=P1690Plus + +pci:v00001108d0000013D* + ID_MODEL_FROM_DATABASE=P1690Plus + +pci:v00001109* + ID_VENDOR_FROM_DATABASE=Cogent Data Technologies, Inc. + +pci:v00001109d00001400* + ID_MODEL_FROM_DATABASE=EM110TX [EX110TX] + +pci:v0000110A* + ID_VENDOR_FROM_DATABASE=Siemens Nixdorf AG + +pci:v0000110Ad00000002* + ID_MODEL_FROM_DATABASE=Pirahna 2-port + +pci:v0000110Ad00000005* + ID_MODEL_FROM_DATABASE=Tulip controller, power management, switch extender + +pci:v0000110Ad00000006* + ID_MODEL_FROM_DATABASE=FSC PINC (I/O-APIC) + +pci:v0000110Ad00000015* + ID_MODEL_FROM_DATABASE=FSC Multiprocessor Interrupt Controller + +pci:v0000110Ad0000001D* + ID_MODEL_FROM_DATABASE=FSC Copernicus Management Controller + +pci:v0000110Ad0000007B* + ID_MODEL_FROM_DATABASE=FSC Remote Service Controller, mailbox device + +pci:v0000110Ad0000007C* + ID_MODEL_FROM_DATABASE=FSC Remote Service Controller, shared memory device + +pci:v0000110Ad0000007D* + ID_MODEL_FROM_DATABASE=FSC Remote Service Controller, SMIC device + +pci:v0000110Ad00002101* + ID_MODEL_FROM_DATABASE=HST SAPHIR V Primary PCI (ISDN/PMx) + +pci:v0000110Ad00002102* + ID_MODEL_FROM_DATABASE=DSCC4 PEB/PEF 20534 DMA Supported Serial Communication Controller with 4 Channels + +pci:v0000110Ad00002104* + ID_MODEL_FROM_DATABASE=Eicon Diva 2.02 compatible passive ISDN card + +pci:v0000110Ad00003141* + ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5611 (Profibus Adapter) + +pci:v0000110Ad00003142* + ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5613A1 (Profibus Adapter) + +pci:v0000110Ad00004021* + ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter) + +pci:v0000110Ad00004029* + ID_MODEL_FROM_DATABASE=SIMATIC NET CP 5613A2 (Profibus Adapter) + +pci:v0000110Ad00004035* + ID_MODEL_FROM_DATABASE=SIMATIC NET CP 1613 A2 + +pci:v0000110Ad00004942* + ID_MODEL_FROM_DATABASE=FPGA I-Bus Tracer for MBD + +pci:v0000110Ad00006120* + ID_MODEL_FROM_DATABASE=SZB6120 + +pci:v0000110B* + ID_VENDOR_FROM_DATABASE=Chromatic Research Inc. + +pci:v0000110Bd00000001* + ID_MODEL_FROM_DATABASE=Mpact Media Processor + +pci:v0000110Bd00000004* + ID_MODEL_FROM_DATABASE=Mpact 2 + +pci:v0000110C* + ID_VENDOR_FROM_DATABASE=Mini-Max Technology, Inc. + +pci:v0000110D* + ID_VENDOR_FROM_DATABASE=Znyx Advanced Systems + +pci:v0000110E* + ID_VENDOR_FROM_DATABASE=CPU Technology + +pci:v0000110F* + ID_VENDOR_FROM_DATABASE=Ross Technology + +pci:v00001110* + ID_VENDOR_FROM_DATABASE=Powerhouse Systems + +pci:v00001110d00006037* + ID_MODEL_FROM_DATABASE=Firepower Powerized SMP I/O ASIC + +pci:v00001110d00006073* + ID_MODEL_FROM_DATABASE=Firepower Powerized SMP I/O ASIC + +pci:v00001111* + ID_VENDOR_FROM_DATABASE=Santa Cruz Operation + +pci:v00001112* + ID_VENDOR_FROM_DATABASE=Osicom Technologies Inc + +pci:v00001112d00002200* + ID_MODEL_FROM_DATABASE=FDDI Adapter + +pci:v00001112d00002300* + ID_MODEL_FROM_DATABASE=Fast Ethernet Adapter + +pci:v00001112d00002340* + ID_MODEL_FROM_DATABASE=4 Port Fast Ethernet Adapter + +pci:v00001112d00002400* + ID_MODEL_FROM_DATABASE=ATM Adapter + +pci:v00001113* + ID_VENDOR_FROM_DATABASE=Accton Technology Corporation + +pci:v00001113d00001211* + ID_MODEL_FROM_DATABASE=SMC2-1211TX + +pci:v00001113d00001211sv0000103Csd00001207* + ID_MODEL_FROM_DATABASE=EN-1207D Fast Ethernet Adapter + +pci:v00001113d00001211sv00001113sd00001211* + ID_MODEL_FROM_DATABASE=EN-1207D Fast Ethernet Adapter + +pci:v00001113d00001216* + ID_MODEL_FROM_DATABASE=EN-1216 Ethernet Adapter + +pci:v00001113d00001216sv00001113sd00001216* + ID_MODEL_FROM_DATABASE=EN1207F series PCI Fast Ethernet Adapter + +pci:v00001113d00001216sv00001113sd00002220* + ID_MODEL_FROM_DATABASE=EN2220A Cardbus Fast Ethernet Adapter + +pci:v00001113d00001216sv00001113sd00002242* + ID_MODEL_FROM_DATABASE=EN2242 10/100 Ethernet Mini-PCI Card + +pci:v00001113d00001216sv0000111Asd00001020* + ID_MODEL_FROM_DATABASE=SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?] + +pci:v00001113d00001217* + ID_MODEL_FROM_DATABASE=EN-1217 Ethernet Adapter + +pci:v00001113d00005105* + ID_MODEL_FROM_DATABASE=10Mbps Network card + +pci:v00001113d00009211* + ID_MODEL_FROM_DATABASE=EN-1207D Fast Ethernet Adapter + +pci:v00001113d00009211sv00001113sd00009211* + ID_MODEL_FROM_DATABASE=EN-1207D Fast Ethernet Adapter + +pci:v00001113d00009511* + ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible Fast Ethernet + +pci:v00001113d0000D301* + ID_MODEL_FROM_DATABASE=CPWNA100 (Philips wireless PCMCIA) + +pci:v00001113d0000EC02* + ID_MODEL_FROM_DATABASE=SMC 1244TX v3 + +pci:v00001113d0000EE23* + ID_MODEL_FROM_DATABASE=SMCWPCIT-G 108Mbps Wireless PCI adapter + +pci:v00001114* + ID_VENDOR_FROM_DATABASE=Atmel Corporation + +pci:v00001114d00000506* + ID_MODEL_FROM_DATABASE=at76c506 802.11b Wireless Network Adaptor + +pci:v00001115* + ID_VENDOR_FROM_DATABASE=3D Labs + +pci:v00001116* + ID_VENDOR_FROM_DATABASE=Data Translation + +pci:v00001116d00000022* + ID_MODEL_FROM_DATABASE=DT3001 + +pci:v00001116d00000023* + ID_MODEL_FROM_DATABASE=DT3002 + +pci:v00001116d00000024* + ID_MODEL_FROM_DATABASE=DT3003 + +pci:v00001116d00000025* + ID_MODEL_FROM_DATABASE=DT3004 + +pci:v00001116d00000026* + ID_MODEL_FROM_DATABASE=DT3005 + +pci:v00001116d00000027* + ID_MODEL_FROM_DATABASE=DT3001-PGL + +pci:v00001116d00000028* + ID_MODEL_FROM_DATABASE=DT3003-PGL + +pci:v00001116d00000051* + ID_MODEL_FROM_DATABASE=DT322 + +pci:v00001116d00000060* + ID_MODEL_FROM_DATABASE=DT340 + +pci:v00001116d00000069* + ID_MODEL_FROM_DATABASE=DT332 + +pci:v00001116d000080C2* + ID_MODEL_FROM_DATABASE=DT3162 + +pci:v00001117* + ID_VENDOR_FROM_DATABASE=Datacube, Inc + +pci:v00001117d00009500* + ID_MODEL_FROM_DATABASE=Max-1C SVGA card + +pci:v00001117d00009501* + ID_MODEL_FROM_DATABASE=Max-1C image processing + +pci:v00001118* + ID_VENDOR_FROM_DATABASE=Berg Electronics + +pci:v00001119* + ID_VENDOR_FROM_DATABASE=ICP Vortex Computersysteme GmbH + +pci:v00001119d00000000* + ID_MODEL_FROM_DATABASE=GDT 6000/6020/6050 + +pci:v00001119d00000001* + ID_MODEL_FROM_DATABASE=GDT 6000B/6010 + +pci:v00001119d00000002* + ID_MODEL_FROM_DATABASE=GDT 6110/6510 + +pci:v00001119d00000003* + ID_MODEL_FROM_DATABASE=GDT 6120/6520 + +pci:v00001119d00000004* + ID_MODEL_FROM_DATABASE=GDT 6530 + +pci:v00001119d00000005* + ID_MODEL_FROM_DATABASE=GDT 6550 + +pci:v00001119d00000006* + ID_MODEL_FROM_DATABASE=GDT 6117/6517 + +pci:v00001119d00000007* + ID_MODEL_FROM_DATABASE=GDT 6127/6527 + +pci:v00001119d00000008* + ID_MODEL_FROM_DATABASE=GDT 6537 + +pci:v00001119d00000009* + ID_MODEL_FROM_DATABASE=GDT 6557/6557-ECC + +pci:v00001119d0000000A* + ID_MODEL_FROM_DATABASE=GDT 6115/6515 + +pci:v00001119d0000000B* + ID_MODEL_FROM_DATABASE=GDT 6125/6525 + +pci:v00001119d0000000C* + ID_MODEL_FROM_DATABASE=GDT 6535 + +pci:v00001119d0000000D* + ID_MODEL_FROM_DATABASE=GDT 6555/6555-ECC + +pci:v00001119d00000100* + ID_MODEL_FROM_DATABASE=GDT 6117RP/6517RP + +pci:v00001119d00000101* + ID_MODEL_FROM_DATABASE=GDT 6127RP/6527RP + +pci:v00001119d00000102* + ID_MODEL_FROM_DATABASE=GDT 6537RP + +pci:v00001119d00000103* + ID_MODEL_FROM_DATABASE=GDT 6557RP + +pci:v00001119d00000104* + ID_MODEL_FROM_DATABASE=GDT 6111RP/6511RP + +pci:v00001119d00000105* + ID_MODEL_FROM_DATABASE=GDT 6121RP/6521RP + +pci:v00001119d00000110* + ID_MODEL_FROM_DATABASE=GDT 6117RD/6517RD + +pci:v00001119d00000111* + ID_MODEL_FROM_DATABASE=GDT 6127RD/6527RD + +pci:v00001119d00000112* + ID_MODEL_FROM_DATABASE=GDT 6537RD + +pci:v00001119d00000113* + ID_MODEL_FROM_DATABASE=GDT 6557RD + +pci:v00001119d00000114* + ID_MODEL_FROM_DATABASE=GDT 6111RD/6511RD + +pci:v00001119d00000115* + ID_MODEL_FROM_DATABASE=GDT 6121RD/6521RD + +pci:v00001119d00000118* + ID_MODEL_FROM_DATABASE=GDT 6118RD/6518RD/6618RD + +pci:v00001119d00000119* + ID_MODEL_FROM_DATABASE=GDT 6128RD/6528RD/6628RD + +pci:v00001119d0000011A* + ID_MODEL_FROM_DATABASE=GDT 6538RD/6638RD + +pci:v00001119d0000011B* + ID_MODEL_FROM_DATABASE=GDT 6558RD/6658RD + +pci:v00001119d00000120* + ID_MODEL_FROM_DATABASE=GDT 6117RP2/6517RP2 + +pci:v00001119d00000121* + ID_MODEL_FROM_DATABASE=GDT 6127RP2/6527RP2 + +pci:v00001119d00000122* + ID_MODEL_FROM_DATABASE=GDT 6537RP2 + +pci:v00001119d00000123* + ID_MODEL_FROM_DATABASE=GDT 6557RP2 + +pci:v00001119d00000124* + ID_MODEL_FROM_DATABASE=GDT 6111RP2/6511RP2 + +pci:v00001119d00000125* + ID_MODEL_FROM_DATABASE=GDT 6121RP2/6521RP2 + +pci:v00001119d00000136* + ID_MODEL_FROM_DATABASE=GDT 6113RS/6513RS + +pci:v00001119d00000137* + ID_MODEL_FROM_DATABASE=GDT 6123RS/6523RS + +pci:v00001119d00000138* + ID_MODEL_FROM_DATABASE=GDT 6118RS/6518RS/6618RS + +pci:v00001119d00000139* + ID_MODEL_FROM_DATABASE=GDT 6128RS/6528RS/6628RS + +pci:v00001119d0000013A* + ID_MODEL_FROM_DATABASE=GDT 6538RS/6638RS + +pci:v00001119d0000013B* + ID_MODEL_FROM_DATABASE=GDT 6558RS/6658RS + +pci:v00001119d0000013C* + ID_MODEL_FROM_DATABASE=GDT 6533RS/6633RS + +pci:v00001119d0000013D* + ID_MODEL_FROM_DATABASE=GDT 6543RS/6643RS + +pci:v00001119d0000013E* + ID_MODEL_FROM_DATABASE=GDT 6553RS/6653RS + +pci:v00001119d0000013F* + ID_MODEL_FROM_DATABASE=GDT 6563RS/6663RS + +pci:v00001119d00000166* + ID_MODEL_FROM_DATABASE=GDT 7113RN/7513RN/7613RN + +pci:v00001119d00000167* + ID_MODEL_FROM_DATABASE=GDT 7123RN/7523RN/7623RN + +pci:v00001119d00000168* + ID_MODEL_FROM_DATABASE=GDT 7118RN/7518RN/7518RN + +pci:v00001119d00000169* + ID_MODEL_FROM_DATABASE=GDT 7128RN/7528RN/7628RN + +pci:v00001119d0000016A* + ID_MODEL_FROM_DATABASE=GDT 7538RN/7638RN + +pci:v00001119d0000016B* + ID_MODEL_FROM_DATABASE=GDT 7558RN/7658RN + +pci:v00001119d0000016C* + ID_MODEL_FROM_DATABASE=GDT 7533RN/7633RN + +pci:v00001119d0000016D* + ID_MODEL_FROM_DATABASE=GDT 7543RN/7643RN + +pci:v00001119d0000016E* + ID_MODEL_FROM_DATABASE=GDT 7553RN/7653RN + +pci:v00001119d0000016F* + ID_MODEL_FROM_DATABASE=GDT 7563RN/7663RN + +pci:v00001119d000001D6* + ID_MODEL_FROM_DATABASE=GDT 4x13RZ + +pci:v00001119d000001D7* + ID_MODEL_FROM_DATABASE=GDT 4x23RZ + +pci:v00001119d000001F6* + ID_MODEL_FROM_DATABASE=GDT 8x13RZ + +pci:v00001119d000001F7* + ID_MODEL_FROM_DATABASE=GDT 8x23RZ + +pci:v00001119d000001FC* + ID_MODEL_FROM_DATABASE=GDT 8x33RZ + +pci:v00001119d000001FD* + ID_MODEL_FROM_DATABASE=GDT 8x43RZ + +pci:v00001119d000001FE* + ID_MODEL_FROM_DATABASE=GDT 8x53RZ + +pci:v00001119d000001FF* + ID_MODEL_FROM_DATABASE=GDT 8x63RZ + +pci:v00001119d00000210* + ID_MODEL_FROM_DATABASE=GDT 6519RD/6619RD + +pci:v00001119d00000211* + ID_MODEL_FROM_DATABASE=GDT 6529RD/6629RD + +pci:v00001119d00000260* + ID_MODEL_FROM_DATABASE=GDT 7519RN/7619RN + +pci:v00001119d00000261* + ID_MODEL_FROM_DATABASE=GDT 7529RN/7629RN + +pci:v00001119d000002FF* + ID_MODEL_FROM_DATABASE=GDT MAXRP + +pci:v00001119d00000300* + ID_MODEL_FROM_DATABASE=GDT NEWRX + +pci:v00001119d00000301* + ID_MODEL_FROM_DATABASE=GDT NEWRX2 + +pci:v0000111A* + ID_VENDOR_FROM_DATABASE=Efficient Networks, Inc + +pci:v0000111Ad00000000* + ID_MODEL_FROM_DATABASE=155P-MF1 (FPGA) + +pci:v0000111Ad00000002* + ID_MODEL_FROM_DATABASE=155P-MF1 (ASIC) + +pci:v0000111Ad00000003* + ID_MODEL_FROM_DATABASE=ENI-25P ATM + +pci:v0000111Ad00000003sv0000111Asd00000000* + ID_MODEL_FROM_DATABASE=ENI-25p Miniport ATM Adapter + +pci:v0000111Ad00000005* + ID_MODEL_FROM_DATABASE=SpeedStream (LANAI) + +pci:v0000111Ad00000005sv0000111Asd00000001* + ID_MODEL_FROM_DATABASE=ENI-3010 ATM + +pci:v0000111Ad00000005sv0000111Asd00000009* + ID_MODEL_FROM_DATABASE=ENI-3060 ADSL (VPI=0) + +pci:v0000111Ad00000005sv0000111Asd00000101* + ID_MODEL_FROM_DATABASE=ENI-3010 ATM + +pci:v0000111Ad00000005sv0000111Asd00000109* + ID_MODEL_FROM_DATABASE=ENI-3060CO ADSL (VPI=0) + +pci:v0000111Ad00000005sv0000111Asd00000809* + ID_MODEL_FROM_DATABASE=ENI-3060 ADSL (VPI=0 or 8) + +pci:v0000111Ad00000005sv0000111Asd00000909* + ID_MODEL_FROM_DATABASE=ENI-3060CO ADSL (VPI=0 or 8) + +pci:v0000111Ad00000005sv0000111Asd00000A09* + ID_MODEL_FROM_DATABASE=ENI-3060 ADSL (VPI=<0..15>) + +pci:v0000111Ad00000007* + ID_MODEL_FROM_DATABASE=SpeedStream ADSL + +pci:v0000111Ad00000007sv0000111Asd00001001* + ID_MODEL_FROM_DATABASE=ENI-3061 ADSL [ASIC] + +pci:v0000111Ad00001020* + ID_MODEL_FROM_DATABASE=SpeedStream PCI 10/100 Network Card + +pci:v0000111Ad00001203* + ID_MODEL_FROM_DATABASE=SpeedStream 1023 Wireless PCI Adapter + +pci:v0000111B* + ID_VENDOR_FROM_DATABASE=Teledyne Electronic Systems + +pci:v0000111C* + ID_VENDOR_FROM_DATABASE=Tricord Systems Inc. + +pci:v0000111Cd00000001* + ID_MODEL_FROM_DATABASE=Powerbis Bridge + +pci:v0000111D* + ID_VENDOR_FROM_DATABASE=Integrated Device Technology, Inc. [IDT] + +pci:v0000111Dd00000001* + ID_MODEL_FROM_DATABASE=IDT77201/77211 155Mbps ATM SAR Controller [NICStAR] + +pci:v0000111Dd00000003* + ID_MODEL_FROM_DATABASE=IDT77222/77252 155Mbps ATM MICRO ABR SAR Controller + +pci:v0000111Dd00000004* + ID_MODEL_FROM_DATABASE=IDT77V252 155Mbps ATM MICRO ABR SAR Controller + +pci:v0000111Dd00000005* + ID_MODEL_FROM_DATABASE=IDT77V222 155Mbps ATM MICRO ABR SAR Controller + +pci:v0000111Dd00008018* + ID_MODEL_FROM_DATABASE=PES12N3A PCI Express Switch + +pci:v0000111Dd0000801C* + ID_MODEL_FROM_DATABASE=PES24N3A PCI Express Switch + +pci:v0000111Dd00008028* + ID_MODEL_FROM_DATABASE=PES4T4 PCI Express Switch + +pci:v0000111Dd0000802B* + ID_MODEL_FROM_DATABASE=PES8T5A PCI Express Switch + +pci:v0000111Dd0000802C* + ID_MODEL_FROM_DATABASE=PES16T4 PCI Express Switch + +pci:v0000111Dd0000802D* + ID_MODEL_FROM_DATABASE=PES16T7 PCI Express Switch + +pci:v0000111Dd0000802E* + ID_MODEL_FROM_DATABASE=PES24T6 PCI Express Switch + +pci:v0000111Dd0000802F* + ID_MODEL_FROM_DATABASE=PES32T8 PCI Express Switch + +pci:v0000111Dd00008032* + ID_MODEL_FROM_DATABASE=PES48T12 PCI Express Switch + +pci:v0000111Dd00008034* + ID_MODEL_FROM_DATABASE=PES16/22/34H16 PCI Express Switch + +pci:v0000111Dd00008035* + ID_MODEL_FROM_DATABASE=PES32H8 PCI Express Switch + +pci:v0000111Dd00008036* + ID_MODEL_FROM_DATABASE=PES48H12 PCI Express Switch + +pci:v0000111Dd00008037* + ID_MODEL_FROM_DATABASE=PES64H16 PCI Express Switch + +pci:v0000111Dd00008039* + ID_MODEL_FROM_DATABASE=PES3T3 PCI Express Switch + +pci:v0000111Dd0000803A* + ID_MODEL_FROM_DATABASE=PES4T4 PCI Express Switch + +pci:v0000111Dd0000803C* + ID_MODEL_FROM_DATABASE=PES5T5 PCI Express Switch + +pci:v0000111Dd0000803D* + ID_MODEL_FROM_DATABASE=PES6T5 PCI Express Switch + +pci:v0000111Dd00008048* + ID_MODEL_FROM_DATABASE=PES8NT2 PCI Express Switch + +pci:v0000111Dd00008049* + ID_MODEL_FROM_DATABASE=PES8NT2 PCI Express Switch + +pci:v0000111Dd0000804A* + ID_MODEL_FROM_DATABASE=PES8NT2 PCI Express Internal NTB + +pci:v0000111Dd0000804B* + ID_MODEL_FROM_DATABASE=PES8NT2 PCI Express External NTB + +pci:v0000111Dd0000804C* + ID_MODEL_FROM_DATABASE=PES16NT2 PCI Express Switch + +pci:v0000111Dd0000804D* + ID_MODEL_FROM_DATABASE=PES16NT2 PCI Express Switch + +pci:v0000111Dd0000804E* + ID_MODEL_FROM_DATABASE=PES16NT2 PCI Express Internal NTB + +pci:v0000111Dd0000804F* + ID_MODEL_FROM_DATABASE=PES16NT2 PCI Express External NTB + +pci:v0000111Dd00008058* + ID_MODEL_FROM_DATABASE=PES12NT3 PCI Express Switch + +pci:v0000111Dd00008059* + ID_MODEL_FROM_DATABASE=PES12NT3 PCI Express Switch + +pci:v0000111Dd0000805A* + ID_MODEL_FROM_DATABASE=PES12NT3 PCI Express Internal NTB + +pci:v0000111Dd0000805B* + ID_MODEL_FROM_DATABASE=PES12NT3 PCI Express External NTB + +pci:v0000111Dd0000805C* + ID_MODEL_FROM_DATABASE=PES24NT3 PCI Express Switch + +pci:v0000111Dd0000805D* + ID_MODEL_FROM_DATABASE=PES24NT3 PCI Express Switch + +pci:v0000111Dd0000805E* + ID_MODEL_FROM_DATABASE=PES24NT3 PCI Express Internal NTB + +pci:v0000111Dd0000805F* + ID_MODEL_FROM_DATABASE=PES24NT3 PCI Express External NTB + +pci:v0000111Dd00008060* + ID_MODEL_FROM_DATABASE=PES16T4G2 PCI Express Gen2 Switch + +pci:v0000111Dd00008061* + ID_MODEL_FROM_DATABASE=PES12T3G2 PCI Express Gen2 Switch + +pci:v0000111Dd00008068* + ID_MODEL_FROM_DATABASE=PES6T6G2 PCI Express Gen2 Switch + +pci:v0000111Dd0000806A* + ID_MODEL_FROM_DATABASE=PES24T3G2 PCI Express Gen2 Switch + +pci:v0000111Dd0000806Asv000014C1sd0000000C* + ID_MODEL_FROM_DATABASE=10G-PCIE2-8B2 + +pci:v0000111Dd0000806C* + ID_MODEL_FROM_DATABASE=PES16T4A/4T4G2 PCI Express Gen2 Switch + +pci:v0000111Dd0000806E* + ID_MODEL_FROM_DATABASE=PES24T6G2 PCI Express Gen2 Switch + +pci:v0000111Dd0000806F* + ID_MODEL_FROM_DATABASE=HIO524G2 PCI Express Gen2 Switch + +pci:v0000111E* + ID_VENDOR_FROM_DATABASE=Eldec + +pci:v0000111F* + ID_VENDOR_FROM_DATABASE=Precision Digital Images + +pci:v0000111Fd00004A47* + ID_MODEL_FROM_DATABASE=Precision MX Video engine interface + +pci:v0000111Fd00005243* + ID_MODEL_FROM_DATABASE=Frame capture bus interface + +pci:v00001120* + ID_VENDOR_FROM_DATABASE=EMC Corporation + +pci:v00001121* + ID_VENDOR_FROM_DATABASE=Zilog + +pci:v00001122* + ID_VENDOR_FROM_DATABASE=Multi-tech Systems, Inc. + +pci:v00001123* + ID_VENDOR_FROM_DATABASE=Excellent Design, Inc. + +pci:v00001124* + ID_VENDOR_FROM_DATABASE=Leutron Vision AG + +pci:v00001124d00002581* + ID_MODEL_FROM_DATABASE=Picport Monochrome + +pci:v00001125* + ID_VENDOR_FROM_DATABASE=Eurocore + +pci:v00001126* + ID_VENDOR_FROM_DATABASE=Vigra + +pci:v00001127* + ID_VENDOR_FROM_DATABASE=FORE Systems Inc + +pci:v00001127d00000200* + ID_MODEL_FROM_DATABASE=ForeRunner PCA-200 ATM + +pci:v00001127d00000210* + ID_MODEL_FROM_DATABASE=PCA-200PC + +pci:v00001127d00000250* + ID_MODEL_FROM_DATABASE=ATM + +pci:v00001127d00000300* + ID_MODEL_FROM_DATABASE=ForeRunner PCA-200EPC ATM + +pci:v00001127d00000310* + ID_MODEL_FROM_DATABASE=ATM + +pci:v00001127d00000400* + ID_MODEL_FROM_DATABASE=ForeRunnerHE ATM Adapter + +pci:v00001127d00000400sv00001127sd00000400* + ID_MODEL_FROM_DATABASE=ForeRunnerHE ATM + +pci:v00001129* + ID_VENDOR_FROM_DATABASE=Firmworks + +pci:v0000112A* + ID_VENDOR_FROM_DATABASE=Hermes Electronics Company, Ltd. + +pci:v0000112B* + ID_VENDOR_FROM_DATABASE=Linotype - Hell AG + +pci:v0000112C* + ID_VENDOR_FROM_DATABASE=Zenith Data Systems + +pci:v0000112D* + ID_VENDOR_FROM_DATABASE=Ravicad + +pci:v0000112E* + ID_VENDOR_FROM_DATABASE=Infomedia Microelectronics Inc. + +pci:v0000112F* + ID_VENDOR_FROM_DATABASE=Dalsa Inc. + +pci:v0000112Fd00000000* + ID_MODEL_FROM_DATABASE=MVC IC-PCI + +pci:v0000112Fd00000001* + ID_MODEL_FROM_DATABASE=MVC IM-PCI Video frame grabber/processor + +pci:v0000112Fd00000008* + ID_MODEL_FROM_DATABASE=PC-CamLink PCI framegrabber + +pci:v00001130* + ID_VENDOR_FROM_DATABASE=Computervision + +pci:v00001131* + ID_VENDOR_FROM_DATABASE=Philips Semiconductors + +pci:v00001131d00001561* + ID_MODEL_FROM_DATABASE=USB 1.1 Host Controller + +pci:v00001131d00001561sv00001775sd0000C200* + ID_MODEL_FROM_DATABASE=C2K onboard USB 1.1 host controller + +pci:v00001131d00001562* + ID_MODEL_FROM_DATABASE=USB 2.0 Host Controller + +pci:v00001131d00001562sv00001775sd0000C200* + ID_MODEL_FROM_DATABASE=C2K onboard USB 2.0 host controller + +pci:v00001131d00003400* + ID_MODEL_FROM_DATABASE=SmartPCI56(UCB1500) 56K Modem + +pci:v00001131d00005400* + ID_MODEL_FROM_DATABASE=TriMedia TM1000/1100 + +pci:v00001131d00005400sv000012CAsd00000000* + ID_MODEL_FROM_DATABASE=BlueICE + +pci:v00001131d00005402* + ID_MODEL_FROM_DATABASE=TriMedia TM1300 + +pci:v00001131d00005402sv00001244sd00000F00* + ID_MODEL_FROM_DATABASE=Fritz!Card DSL + +pci:v00001131d00005402sv000015EBsd00001300* + ID_MODEL_FROM_DATABASE=DT1300 + +pci:v00001131d00005402sv000015EBsd00001302* + ID_MODEL_FROM_DATABASE=DT1302 + +pci:v00001131d00005402sv000015EBsd00001304* + ID_MODEL_FROM_DATABASE=DT1304 + +pci:v00001131d00005402sv000015EBsd00001305* + ID_MODEL_FROM_DATABASE=DT1305 + +pci:v00001131d00005402sv000015EBsd00001306* + ID_MODEL_FROM_DATABASE=PMCDT1306 + +pci:v00001131d00005402sv000015EBsd00001308* + ID_MODEL_FROM_DATABASE=DT1308 + +pci:v00001131d00005402sv000015EBsd00001331* + ID_MODEL_FROM_DATABASE=DT1301 with SAA7121 + +pci:v00001131d00005402sv000015EBsd00001337* + ID_MODEL_FROM_DATABASE=DT1301 with SAA7127 + +pci:v00001131d00005402sv000015EBsd00002D3D* + ID_MODEL_FROM_DATABASE=X3D + +pci:v00001131d00005402sv000015EBsd00007022* + ID_MODEL_FROM_DATABASE=PTM1300 + +pci:v00001131d00005405* + ID_MODEL_FROM_DATABASE=TriMedia TM1500 + +pci:v00001131d00005405sv00001136sd00000005* + ID_MODEL_FROM_DATABASE=LCP-1500 + +pci:v00001131d00005406* + ID_MODEL_FROM_DATABASE=TriMedia TM1700 + +pci:v00001131d0000540B* + ID_MODEL_FROM_DATABASE=PNX1005 Media Processor + +pci:v00001131d0000540Bsv00001131sd00000020* + ID_MODEL_FROM_DATABASE=PNXLite PCI Demo Board + +pci:v00001131d00007130* + ID_MODEL_FROM_DATABASE=SAA7130 Video Broadcast Decoder + +pci:v00001131d00007130sv00000000sd00004016* + ID_MODEL_FROM_DATABASE=Behold TV 401 + +pci:v00001131d00007130sv00000000sd00004051* + ID_MODEL_FROM_DATABASE=Behold TV 405 FM + +pci:v00001131d00007130sv00000000sd00005051* + ID_MODEL_FROM_DATABASE=Behold TV 505 RDS + +pci:v00001131d00007130sv00000000sd0000505B* + ID_MODEL_FROM_DATABASE=Behold TV 505 RDS + +pci:v00001131d00007130sv0000102Bsd000048D0* + ID_MODEL_FROM_DATABASE=Matrox CronosPlus + +pci:v00001131d00007130sv00001048sd0000226B* + ID_MODEL_FROM_DATABASE=ELSA EX-VISION 300TV + +pci:v00001131d00007130sv0000107Dsd00006655* + ID_MODEL_FROM_DATABASE=WinFast DTV1000S + +pci:v00001131d00007130sv00001131sd00000000* + ID_MODEL_FROM_DATABASE=SAA7130-based TV tuner card + +pci:v00001131d00007130sv00001131sd00002001* + ID_MODEL_FROM_DATABASE=10MOONS PCI TV CAPTURE CARD + +pci:v00001131d00007130sv00001131sd00002005* + ID_MODEL_FROM_DATABASE=Techcom (India) TV Tuner Card (SSD-TV-670) + +pci:v00001131d00007130sv00001458sd00009006* + ID_MODEL_FROM_DATABASE=GT-PS700 DVB-S tuner + +pci:v00001131d00007130sv00001461sd0000050C* + ID_MODEL_FROM_DATABASE=Nagase Sangyo TransGear 3000TV + +pci:v00001131d00007130sv00001461sd000010FF* + ID_MODEL_FROM_DATABASE=AVerMedia DVD EZMaker + +pci:v00001131d00007130sv00001461sd00002108* + ID_MODEL_FROM_DATABASE=AverMedia AverTV/305 + +pci:v00001131d00007130sv00001461sd00002115* + ID_MODEL_FROM_DATABASE=AverMedia AverTV Studio 305 + +pci:v00001131d00007130sv0000153Bsd00001152* + ID_MODEL_FROM_DATABASE=Terratec Cinergy 200 TV + +pci:v00001131d00007130sv0000185Bsd0000C100* + ID_MODEL_FROM_DATABASE=Compro VideoMate TV PVR/FM + +pci:v00001131d00007130sv0000185Bsd0000C901* + ID_MODEL_FROM_DATABASE=Videomate DVB-T200 + +pci:v00001131d00007130sv00005168sd00000138* + ID_MODEL_FROM_DATABASE=LifeView FlyVIDEO2000 + +pci:v00001131d00007130sv00005ACEsd00005010* + ID_MODEL_FROM_DATABASE=Behold TV 501 + +pci:v00001131d00007130sv00005ACEsd00005050* + ID_MODEL_FROM_DATABASE=Behold TV 505 FM + +pci:v00001131d00007133* + ID_MODEL_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder + +pci:v00001131d00007133sv00000000sd00004091* + ID_MODEL_FROM_DATABASE=Beholder BeholdTV 409 FM + +pci:v00001131d00007133sv00000000sd00005071* + ID_MODEL_FROM_DATABASE=Behold TV 507 RDS + +pci:v00001131d00007133sv00000000sd0000507B* + ID_MODEL_FROM_DATABASE=Behold TV 507 RDS + +pci:v00001131d00007133sv00000000sd00005201* + ID_MODEL_FROM_DATABASE=Behold TV Columbus + +pci:v00001131d00007133sv00000070sd00006701* + ID_MODEL_FROM_DATABASE=WinTV HVR-1110 + +pci:v00001131d00007133sv00001019sd00004CB5* + ID_MODEL_FROM_DATABASE=Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM) + +pci:v00001131d00007133sv00001043sd00000210* + ID_MODEL_FROM_DATABASE=FlyTV mini Asus Digimatrix + +pci:v00001131d00007133sv00001043sd00004843* + ID_MODEL_FROM_DATABASE=ASUS TV-FM 7133 + +pci:v00001131d00007133sv00001043sd00004845* + ID_MODEL_FROM_DATABASE=TV-FM 7135 + +pci:v00001131d00007133sv00001043sd00004862* + ID_MODEL_FROM_DATABASE=P7131 Dual + +pci:v00001131d00007133sv00001043sd00004876* + ID_MODEL_FROM_DATABASE=My Cinema-P7131 Hybrid + +pci:v00001131d00007133sv00001131sd00000000* + ID_MODEL_FROM_DATABASE=SAA713x-based TV tuner card + +pci:v00001131d00007133sv00001131sd00002001* + ID_MODEL_FROM_DATABASE=Proteus Pro [philips reference design] + +pci:v00001131d00007133sv00001131sd00002018* + ID_MODEL_FROM_DATABASE=Tiger reference design + +pci:v00001131d00007133sv00001131sd00004EE9* + ID_MODEL_FROM_DATABASE=MonsterTV Mobile + +pci:v00001131d00007133sv00001131sd00007133* + ID_MODEL_FROM_DATABASE=Pinnacle PCTV 301i + +pci:v00001131d00007133sv000011BDsd0000002B* + ID_MODEL_FROM_DATABASE=PCTV Stereo + +pci:v00001131d00007133sv000011BDsd0000002E* + ID_MODEL_FROM_DATABASE=PCTV 110i (saa7133) + +pci:v00001131d00007133sv000012ABsd00000800* + ID_MODEL_FROM_DATABASE=PURPLE TV + +pci:v00001131d00007133sv000013C2sd00002804* + ID_MODEL_FROM_DATABASE=Technotrend Budget T-3000 Hybrid + +pci:v00001131d00007133sv00001421sd00000335* + ID_MODEL_FROM_DATABASE=Instant TV DVB-T Cardbus + +pci:v00001131d00007133sv00001421sd00001370* + ID_MODEL_FROM_DATABASE=Instant TV (saa7135) + +pci:v00001131d00007133sv00001435sd00007330* + ID_MODEL_FROM_DATABASE=VFG7330 + +pci:v00001131d00007133sv00001435sd00007350* + ID_MODEL_FROM_DATABASE=VFG7350 + +pci:v00001131d00007133sv00001458sd00009001* + ID_MODEL_FROM_DATABASE=GC-PTV-TAF Hybrid TV card + +pci:v00001131d00007133sv00001458sd00009002* + ID_MODEL_FROM_DATABASE=GT-PTV-TAF-RH DVB-T/Analog TV/FM tuner + +pci:v00001131d00007133sv00001458sd00009003* + ID_MODEL_FROM_DATABASE=GT-PTV-AF-RH Analog TV/FM tuner + +pci:v00001131d00007133sv00001458sd00009004* + ID_MODEL_FROM_DATABASE=GT-P8000 DVB-T/Analog TV/FM tuner + +pci:v00001131d00007133sv00001458sd00009005* + ID_MODEL_FROM_DATABASE=GT-P6000 Analog TV/FM tuner + +pci:v00001131d00007133sv00001458sd00009008* + ID_MODEL_FROM_DATABASE=GT-P5100 Analog TV tuner + +pci:v00001131d00007133sv00001461sd00001044* + ID_MODEL_FROM_DATABASE=AVerTVHD MCE A180 + +pci:v00001131d00007133sv00001461sd00004836* + ID_MODEL_FROM_DATABASE=M10D Hybrid DVBT + +pci:v00001131d00007133sv00001461sd0000861E* + ID_MODEL_FROM_DATABASE=M105 PAL/SECAM/NTSC/FM Tuner + +pci:v00001131d00007133sv00001461sd0000A14B* + ID_MODEL_FROM_DATABASE=AVerTV Studio 509 + +pci:v00001131d00007133sv00001461sd0000A836* + ID_MODEL_FROM_DATABASE=M115 DVB-T, PAL/SECAM/NTSC Tuner + +pci:v00001131d00007133sv00001461sd0000F01D* + ID_MODEL_FROM_DATABASE=DVB-T Super 007 + +pci:v00001131d00007133sv00001461sd0000F31F* + ID_MODEL_FROM_DATABASE=Avermedia AVerTV GO 007 FM + +pci:v00001131d00007133sv00001461sd0000F936* + ID_MODEL_FROM_DATABASE=Hybrid+FM PCI (rev A16D) + +pci:v00001131d00007133sv00001462sd00006231* + ID_MODEL_FROM_DATABASE=TV@nywhere Plus + +pci:v00001131d00007133sv00001489sd00000214* + ID_MODEL_FROM_DATABASE=LifeView FlyTV Platinum FM + +pci:v00001131d00007133sv000014C0sd00001212* + ID_MODEL_FROM_DATABASE=LifeView FlyTV Platinum Mini2 + +pci:v00001131d00007133sv0000153Bsd00001160* + ID_MODEL_FROM_DATABASE=Cinergy 250 PCI TV + +pci:v00001131d00007133sv0000153Bsd00001162* + ID_MODEL_FROM_DATABASE=Terratec Cinergy 400 mobile + +pci:v00001131d00007133sv000017DEsd00007350* + ID_MODEL_FROM_DATABASE=ATSC 110 Digital / Analog HDTV Tuner + +pci:v00001131d00007133sv000017DEsd00007352* + ID_MODEL_FROM_DATABASE=ATSC 115 Digital / Analog HDTV Tuner + +pci:v00001131d00007133sv0000185Bsd0000C100* + ID_MODEL_FROM_DATABASE=VideoMate TV + +pci:v00001131d00007133sv0000185Bsd0000C900* + ID_MODEL_FROM_DATABASE=VideoMate T750 + +pci:v00001131d00007133sv00005168sd00000306* + ID_MODEL_FROM_DATABASE=LifeView FlyDVB-T DUO + +pci:v00001131d00007133sv00005168sd00000319* + ID_MODEL_FROM_DATABASE=LifeView FlyDVB Trio + +pci:v00001131d00007133sv00005168sd00000502* + ID_MODEL_FROM_DATABASE=LifeView FlyDVB-T Duo CardBus + +pci:v00001131d00007133sv00005168sd00000520* + ID_MODEL_FROM_DATABASE=LifeView FlyDVB Trio CardBus + +pci:v00001131d00007133sv00005168sd00001502* + ID_MODEL_FROM_DATABASE=LifeView FlyTV CardBus + +pci:v00001131d00007133sv00005168sd00002502* + ID_MODEL_FROM_DATABASE=LifeView FlyDVB-T CardBus + +pci:v00001131d00007133sv00005168sd00002520* + ID_MODEL_FROM_DATABASE=LifeView FlyDVB-S Duo CardBus + +pci:v00001131d00007133sv00005168sd00003502* + ID_MODEL_FROM_DATABASE=LifeView FlyDVB-T Hybrid CardBus + +pci:v00001131d00007133sv00005168sd00003520* + ID_MODEL_FROM_DATABASE=LifeView FlyDVB Trio N CardBus + +pci:v00001131d00007133sv00005ACEsd00005030* + ID_MODEL_FROM_DATABASE=Behold TV 503 FM + +pci:v00001131d00007133sv00005ACEsd00005090* + ID_MODEL_FROM_DATABASE=Behold TV 509 FM + +pci:v00001131d00007133sv00005ACEsd00006090* + ID_MODEL_FROM_DATABASE=Behold TV 609 FM + +pci:v00001131d00007133sv00005ACEsd00006091* + ID_MODEL_FROM_DATABASE=Behold TV 609 FM + +pci:v00001131d00007133sv00005ACEsd00006092* + ID_MODEL_FROM_DATABASE=Behold TV 609 RDS + +pci:v00001131d00007133sv00005ACEsd00006093* + ID_MODEL_FROM_DATABASE=Behold TV 609 RDS + +pci:v00001131d00007133sv00005ACEsd00006190* + ID_MODEL_FROM_DATABASE=Behold TV M6 + +pci:v00001131d00007133sv00005ACEsd00006191* + ID_MODEL_FROM_DATABASE=Behold TV M63 + +pci:v00001131d00007133sv00005ACEsd00006193* + ID_MODEL_FROM_DATABASE=Behold TV M6 Extra + +pci:v00001131d00007133sv00005ACEsd00006290* + ID_MODEL_FROM_DATABASE=Behold TV H6 + +pci:v00001131d00007133sv00005ACEsd00007090* + ID_MODEL_FROM_DATABASE=Behold TV A7 + +pci:v00001131d00007133sv00005ACEsd00007190* + ID_MODEL_FROM_DATABASE=Behold TV H7 + +pci:v00001131d00007133sv00005ACEsd00007595* + ID_MODEL_FROM_DATABASE=Behold TV X7 + +pci:v00001131d00007134* + ID_MODEL_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder + +pci:v00001131d00007134sv00000000sd00004036* + ID_MODEL_FROM_DATABASE=Behold TV 403 + +pci:v00001131d00007134sv00000000sd00004037* + ID_MODEL_FROM_DATABASE=Behold TV 403 FM + +pci:v00001131d00007134sv00000000sd00004071* + ID_MODEL_FROM_DATABASE=Behold TV 407 FM + +pci:v00001131d00007134sv00001019sd00004CB4* + ID_MODEL_FROM_DATABASE=Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) + +pci:v00001131d00007134sv00001043sd00000210* + ID_MODEL_FROM_DATABASE=Digimatrix TV + +pci:v00001131d00007134sv00001043sd00004840* + ID_MODEL_FROM_DATABASE=ASUS TV-FM 7134 + +pci:v00001131d00007134sv00001043sd00004842* + ID_MODEL_FROM_DATABASE=TV-FM 7134 + +pci:v00001131d00007134sv00001131sd00000000* + ID_MODEL_FROM_DATABASE=SAA713x-based TV tuner card + +pci:v00001131d00007134sv00001131sd00002004* + ID_MODEL_FROM_DATABASE=EUROPA V3 reference design + +pci:v00001131d00007134sv00001131sd00004E85* + ID_MODEL_FROM_DATABASE=SKNet Monster TV + +pci:v00001131d00007134sv00001131sd00006752* + ID_MODEL_FROM_DATABASE=EMPRESS + +pci:v00001131d00007134sv000011BDsd0000002B* + ID_MODEL_FROM_DATABASE=PCTV Stereo + +pci:v00001131d00007134sv000011BDsd0000002D* + ID_MODEL_FROM_DATABASE=PCTV 300i DVB-T + PAL + +pci:v00001131d00007134sv00001461sd00002C00* + ID_MODEL_FROM_DATABASE=AverTV Hybrid+FM PCI + +pci:v00001131d00007134sv00001461sd00009715* + ID_MODEL_FROM_DATABASE=AVerTV Studio 307 + +pci:v00001131d00007134sv00001461sd0000A70A* + ID_MODEL_FROM_DATABASE=Avermedia AVerTV 307 + +pci:v00001131d00007134sv00001461sd0000A70B* + ID_MODEL_FROM_DATABASE=AverMedia M156 / Medion 2819 + +pci:v00001131d00007134sv00001461sd0000D6EE* + ID_MODEL_FROM_DATABASE=Cardbus TV/Radio (E500) + +pci:v00001131d00007134sv00001471sd0000B7E9* + ID_MODEL_FROM_DATABASE=AVerTV Cardbus plus + +pci:v00001131d00007134sv0000153Bsd00001142* + ID_MODEL_FROM_DATABASE=Terratec Cinergy 400 TV + +pci:v00001131d00007134sv0000153Bsd00001143* + ID_MODEL_FROM_DATABASE=Terratec Cinergy 600 TV + +pci:v00001131d00007134sv0000153Bsd00001158* + ID_MODEL_FROM_DATABASE=Terratec Cinergy 600 TV MK3 + +pci:v00001131d00007134sv00001540sd00009524* + ID_MODEL_FROM_DATABASE=ProVideo PV952 + +pci:v00001131d00007134sv000016BEsd00000003* + ID_MODEL_FROM_DATABASE=Medion 7134 + +pci:v00001131d00007134sv0000185Bsd0000C200* + ID_MODEL_FROM_DATABASE=Compro VideoMate Gold+ Pal + +pci:v00001131d00007134sv0000185Bsd0000C900* + ID_MODEL_FROM_DATABASE=Videomate DVB-T300 + +pci:v00001131d00007134sv00001894sd0000A006* + ID_MODEL_FROM_DATABASE=KNC One TV-Station DVR + +pci:v00001131d00007134sv00001894sd0000FE01* + ID_MODEL_FROM_DATABASE=KNC One TV-Station RDS / Typhoon TV Tuner RDS + +pci:v00001131d00007134sv00005168sd00000138* + ID_MODEL_FROM_DATABASE=FLY TV PRIME 34FM + +pci:v00001131d00007134sv00005168sd00000300* + ID_MODEL_FROM_DATABASE=FlyDVB-S + +pci:v00001131d00007134sv00005ACEsd00005070* + ID_MODEL_FROM_DATABASE=Behold TV 507 FM + +pci:v00001131d00007134sv00005ACEsd00006070* + ID_MODEL_FROM_DATABASE=Behold TV 607 FM + +pci:v00001131d00007134sv00005ACEsd00006071* + ID_MODEL_FROM_DATABASE=Behold TV 607 FM + +pci:v00001131d00007134sv00005ACEsd00006072* + ID_MODEL_FROM_DATABASE=Behold TV 607 RDS + +pci:v00001131d00007134sv00005ACEsd00006073* + ID_MODEL_FROM_DATABASE=Behold TV 607 RDS + +pci:v00001131d00007145* + ID_MODEL_FROM_DATABASE=SAA7145 + +pci:v00001131d00007146* + ID_MODEL_FROM_DATABASE=SAA7146 + +pci:v00001131d00007146sv0000110Asd00000000* + ID_MODEL_FROM_DATABASE=Fujitsu/Siemens DVB-C card rev1.5 + +pci:v00001131d00007146sv0000110Asd0000FFFF* + ID_MODEL_FROM_DATABASE=Fujitsu/Siemens DVB-C card rev1.5 + +pci:v00001131d00007146sv00001124sd00002581* + ID_MODEL_FROM_DATABASE=Leutron Vision PicPort + +pci:v00001131d00007146sv00001131sd00004F56* + ID_MODEL_FROM_DATABASE=KNC1 DVB-S Budget + +pci:v00001131d00007146sv00001131sd00004F60* + ID_MODEL_FROM_DATABASE=Fujitsu-Siemens Activy DVB-S Budget Rev AL + +pci:v00001131d00007146sv00001131sd00004F61* + ID_MODEL_FROM_DATABASE=Activy DVB-S Budget Rev GR + +pci:v00001131d00007146sv00001131sd00005F61* + ID_MODEL_FROM_DATABASE=Activy DVB-T Budget + +pci:v00001131d00007146sv0000114Bsd00002003* + ID_MODEL_FROM_DATABASE=DVRaptor Video Edit/Capture Card + +pci:v00001131d00007146sv000011BDsd00000006* + ID_MODEL_FROM_DATABASE=DV500 Overlay + +pci:v00001131d00007146sv000011BDsd0000000A* + ID_MODEL_FROM_DATABASE=DV500 Overlay + +pci:v00001131d00007146sv000011BDsd0000000F* + ID_MODEL_FROM_DATABASE=DV500 Overlay + +pci:v00001131d00007146sv000013C2sd00000000* + ID_MODEL_FROM_DATABASE=Siemens/Technotrend/Hauppauge DVB card rev1.3 or rev1.5 + +pci:v00001131d00007146sv000013C2sd00000001* + ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev1.3 or rev1.6 + +pci:v00001131d00007146sv000013C2sd00000002* + ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.1 + +pci:v00001131d00007146sv000013C2sd00000003* + ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.1 + +pci:v00001131d00007146sv000013C2sd00000004* + ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.1 + +pci:v00001131d00007146sv000013C2sd00000006* + ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev1.3 or rev1.6 + +pci:v00001131d00007146sv000013C2sd00000008* + ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB-T + +pci:v00001131d00007146sv000013C2sd0000000A* + ID_MODEL_FROM_DATABASE=Octal/Technotrend DVB-C for iTV + +pci:v00001131d00007146sv000013C2sd0000000E* + ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.3 + +pci:v00001131d00007146sv000013C2sd00001003* + ID_MODEL_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-S DVB card + +pci:v00001131d00007146sv000013C2sd00001004* + ID_MODEL_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-C DVB card + +pci:v00001131d00007146sv000013C2sd00001005* + ID_MODEL_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card + +pci:v00001131d00007146sv000013C2sd0000100C* + ID_MODEL_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card + +pci:v00001131d00007146sv000013C2sd0000100F* + ID_MODEL_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card + +pci:v00001131d00007146sv000013C2sd00001010* + ID_MODEL_FROM_DATABASE=DVB C-1500 + +pci:v00001131d00007146sv000013C2sd00001011* + ID_MODEL_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card + +pci:v00001131d00007146sv000013C2sd00001012* + ID_MODEL_FROM_DATABASE=DVB T-1500 + +pci:v00001131d00007146sv000013C2sd00001013* + ID_MODEL_FROM_DATABASE=SATELCO Multimedia DVB + +pci:v00001131d00007146sv000013C2sd00001016* + ID_MODEL_FROM_DATABASE=WinTV-NOVA-SE DVB card + +pci:v00001131d00007146sv000013C2sd00001018* + ID_MODEL_FROM_DATABASE=DVB S-1401 + +pci:v00001131d00007146sv000013C2sd00001019* + ID_MODEL_FROM_DATABASE=S2-3200 + +pci:v00001131d00007146sv000013C2sd00001102* + ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.1 + +pci:v00001131d00007146sv0000153Bsd00001155* + ID_MODEL_FROM_DATABASE=Cinergy 1200 DVB-S + +pci:v00001131d00007146sv0000153Bsd00001156* + ID_MODEL_FROM_DATABASE=Terratec Cynergy 1200C + +pci:v00001131d00007146sv0000153Bsd00001157* + ID_MODEL_FROM_DATABASE=Cinergy 1200 DVB-T + +pci:v00001131d00007146sv00001894sd00000020* + ID_MODEL_FROM_DATABASE=KNC One DVB-C V1.0 + +pci:v00001131d00007146sv00001894sd00000023* + ID_MODEL_FROM_DATABASE=TVStation DVB-C plus + +pci:v00001131d00007160* + ID_MODEL_FROM_DATABASE=SAA7160 + +pci:v00001131d00007160sv00001458sd00009009* + ID_MODEL_FROM_DATABASE=E8000 DVB-T/Analog TV/FM tuner + +pci:v00001131d00007162* + ID_MODEL_FROM_DATABASE=SAA7162 + +pci:v00001131d00007162sv000011BDsd00000101* + ID_MODEL_FROM_DATABASE=Pinnacle PCTV 7010iX TV Card + +pci:v00001131d00007164* + ID_MODEL_FROM_DATABASE=SAA7164 + +pci:v00001131d00007164sv00000070sd00008800* + ID_MODEL_FROM_DATABASE=WinTV HVR-2250 + +pci:v00001131d00007164sv00000070sd00008810* + ID_MODEL_FROM_DATABASE=WinTV HVR-2250 + +pci:v00001131d00007164sv00000070sd00008851* + ID_MODEL_FROM_DATABASE=WinTV HVR-2250 + +pci:v00001131d00007164sv00000070sd00008853* + ID_MODEL_FROM_DATABASE=WinTV HVR-2250 + +pci:v00001131d00007164sv00000070sd00008880* + ID_MODEL_FROM_DATABASE=WinTV HVR-2250 + +pci:v00001131d00007164sv00000070sd00008891* + ID_MODEL_FROM_DATABASE=WinTV HVR-2250 + +pci:v00001131d00007164sv00000070sd000088A0* + ID_MODEL_FROM_DATABASE=WinTV HVR-2250 + +pci:v00001131d00007164sv00000070sd000088A1* + ID_MODEL_FROM_DATABASE=WinTV HVR-2250 + +pci:v00001131d00007164sv00000070sd00008900* + ID_MODEL_FROM_DATABASE=WinTV HVR-2200 + +pci:v00001131d00007164sv00000070sd00008901* + ID_MODEL_FROM_DATABASE=WinTV HVR-2200 + +pci:v00001131d00007164sv00000070sd00008940* + ID_MODEL_FROM_DATABASE=WinTV HVR-2200 (submodel 89619) + +pci:v00001131d00007164sv00000070sd00008951* + ID_MODEL_FROM_DATABASE=WinTV HVR-2200 + +pci:v00001131d00007164sv00000070sd00008953* + ID_MODEL_FROM_DATABASE=WinTV HVR-2200 + +pci:v00001131d00007164sv00000070sd00008980* + ID_MODEL_FROM_DATABASE=WinTV HVR-2200 + +pci:v00001131d00007164sv00000070sd00008991* + ID_MODEL_FROM_DATABASE=WinTV HVR-2200 + +pci:v00001131d00007164sv00000070sd00008993* + ID_MODEL_FROM_DATABASE=WinTV HVR-2200 + +pci:v00001131d00007164sv00000070sd000089A0* + ID_MODEL_FROM_DATABASE=WinTV HVR-2200 + +pci:v00001131d00007164sv00000070sd000089A1* + ID_MODEL_FROM_DATABASE=WinTV HVR-2200 + +pci:v00001131d00007231* + ID_MODEL_FROM_DATABASE=SAA7231 + +pci:v00001131d00007231sv00005ACEsd00008000* + ID_MODEL_FROM_DATABASE=Behold TV H8 + +pci:v00001131d00007231sv00005ACEsd00008100* + ID_MODEL_FROM_DATABASE=Behold TV A8 + +pci:v00001131d00009730* + ID_MODEL_FROM_DATABASE=SAA9730 Integrated Multimedia and Peripheral Controller + +pci:v00001131d00009730sv00001131sd00000000* + ID_MODEL_FROM_DATABASE=Integrated Multimedia and Peripheral Controller + +pci:v00001132* + ID_VENDOR_FROM_DATABASE=Mitel Corp. + +pci:v00001133* + ID_VENDOR_FROM_DATABASE=Dialogic Corporation + +pci:v00001133d00007701* + ID_MODEL_FROM_DATABASE=Eiconcard C90 + +pci:v00001133d00007711* + ID_MODEL_FROM_DATABASE=Eiconcard C91 + +pci:v00001133d00007901* + ID_MODEL_FROM_DATABASE=EiconCard S90 + +pci:v00001133d00007902* + ID_MODEL_FROM_DATABASE=EiconCard S90 + +pci:v00001133d00007911* + ID_MODEL_FROM_DATABASE=EiconCard S91 + +pci:v00001133d00007912* + ID_MODEL_FROM_DATABASE=EiconCard S91 + +pci:v00001133d00007921* + ID_MODEL_FROM_DATABASE=Eiconcard S92 + +pci:v00001133d00007941* + ID_MODEL_FROM_DATABASE=EiconCard S94 + +pci:v00001133d00007942* + ID_MODEL_FROM_DATABASE=EiconCard S94 + +pci:v00001133d00007943* + ID_MODEL_FROM_DATABASE=EiconCard S94 + +pci:v00001133d00007944* + ID_MODEL_FROM_DATABASE=EiconCard S94 + +pci:v00001133d00007945* + ID_MODEL_FROM_DATABASE=Eiconcard S94 + +pci:v00001133d00007948* + ID_MODEL_FROM_DATABASE=Eiconcard S94 64bit/66MHz + +pci:v00001133d00009711* + ID_MODEL_FROM_DATABASE=Eiconcard S91 V2 + +pci:v00001133d00009911* + ID_MODEL_FROM_DATABASE=Eiconcard S91 V2 + +pci:v00001133d00009941* + ID_MODEL_FROM_DATABASE=Eiconcard S94 V2 + +pci:v00001133d00009A41* + ID_MODEL_FROM_DATABASE=Eiconcard S94 PCIe + +pci:v00001133d0000B921* + ID_MODEL_FROM_DATABASE=EiconCard P92 + +pci:v00001133d0000B922* + ID_MODEL_FROM_DATABASE=EiconCard P92 + +pci:v00001133d0000B923* + ID_MODEL_FROM_DATABASE=EiconCard P92 + +pci:v00001133d0000E001* + ID_MODEL_FROM_DATABASE=Diva Pro 2.0 S/T + +pci:v00001133d0000E002* + ID_MODEL_FROM_DATABASE=Diva 2.0 S/T PCI + +pci:v00001133d0000E003* + ID_MODEL_FROM_DATABASE=Diva Pro 2.0 U + +pci:v00001133d0000E004* + ID_MODEL_FROM_DATABASE=Diva 2.0 U PCI + +pci:v00001133d0000E005* + ID_MODEL_FROM_DATABASE=Diva 2.01 S/T PCI + +pci:v00001133d0000E006* + ID_MODEL_FROM_DATABASE=Diva CT S/T PCI + +pci:v00001133d0000E007* + ID_MODEL_FROM_DATABASE=Diva CT U PCI + +pci:v00001133d0000E008* + ID_MODEL_FROM_DATABASE=Diva CT Lite S/T PCI + +pci:v00001133d0000E009* + ID_MODEL_FROM_DATABASE=Diva CT Lite U PCI + +pci:v00001133d0000E00A* + ID_MODEL_FROM_DATABASE=Diva ISDN+V.90 PCI + +pci:v00001133d0000E00B* + ID_MODEL_FROM_DATABASE=Diva ISDN PCI 2.02 + +pci:v00001133d0000E00C* + ID_MODEL_FROM_DATABASE=Diva 2.02 PCI U + +pci:v00001133d0000E00D* + ID_MODEL_FROM_DATABASE=Diva Pro 3.0 PCI + +pci:v00001133d0000E00E* + ID_MODEL_FROM_DATABASE=Diva ISDN+CT S/T PCI Rev 2 + +pci:v00001133d0000E010* + ID_MODEL_FROM_DATABASE=Diva Server BRI-2M PCI + +pci:v00001133d0000E010sv0000110Asd00000021* + ID_MODEL_FROM_DATABASE=Fujitsu Siemens ISDN S0 + +pci:v00001133d0000E011* + ID_MODEL_FROM_DATABASE=Diva Server BRI S/T Rev 2 + +pci:v00001133d0000E012* + ID_MODEL_FROM_DATABASE=Diva Server 4BRI-8M PCI + +pci:v00001133d0000E013* + ID_MODEL_FROM_DATABASE=4BRI + +pci:v00001133d0000E013sv00001133sd00001300* + ID_MODEL_FROM_DATABASE=Diva V-4BRI-8 PCI v2 + +pci:v00001133d0000E013sv00001133sd0000E013* + ID_MODEL_FROM_DATABASE=Diva 4BRI-8 PCI v2 + +pci:v00001133d0000E014* + ID_MODEL_FROM_DATABASE=Diva Server PRI-30M PCI + +pci:v00001133d0000E015* + ID_MODEL_FROM_DATABASE=Diva PRI PCI v2 + +pci:v00001133d0000E016* + ID_MODEL_FROM_DATABASE=Diva Server Voice 4BRI PCI + +pci:v00001133d0000E017* + ID_MODEL_FROM_DATABASE=Diva Server Voice 4BRI Rev 2 + +pci:v00001133d0000E017sv00001133sd0000E017* + ID_MODEL_FROM_DATABASE=Diva Server Voice 4BRI-8M 2.0 PCI + +pci:v00001133d0000E018* + ID_MODEL_FROM_DATABASE=BRI + +pci:v00001133d0000E018sv00001133sd00001800* + ID_MODEL_FROM_DATABASE=Diva V-BRI-2 PCI v2 + +pci:v00001133d0000E018sv00001133sd0000E018* + ID_MODEL_FROM_DATABASE=Diva BRI-2 PCI v2 + +pci:v00001133d0000E019* + ID_MODEL_FROM_DATABASE=Diva Server Voice PRI Rev 2 + +pci:v00001133d0000E019sv00001133sd0000E019* + ID_MODEL_FROM_DATABASE=Diva Server Voice PRI 2.0 PCI + +pci:v00001133d0000E01A* + ID_MODEL_FROM_DATABASE=Diva BRI-2FX PCI v2 + +pci:v00001133d0000E01B* + ID_MODEL_FROM_DATABASE=Diva Server Voice BRI-2M 2.0 PCI + +pci:v00001133d0000E01Bsv00001133sd0000E01B* + ID_MODEL_FROM_DATABASE=Diva Server Voice BRI-2M 2.0 PCI + +pci:v00001133d0000E01C* + ID_MODEL_FROM_DATABASE=PRI + +pci:v00001133d0000E01Csv00001133sd00001C01* + ID_MODEL_FROM_DATABASE=Diva PRI/E1/T1-8 PCI v3 + +pci:v00001133d0000E01Csv00001133sd00001C02* + ID_MODEL_FROM_DATABASE=Diva PRI/T1-24 PCI(e) v3 + +pci:v00001133d0000E01Csv00001133sd00001C03* + ID_MODEL_FROM_DATABASE=Diva PRI/E1-30 PCI(e) v3 + +pci:v00001133d0000E01Csv00001133sd00001C04* + ID_MODEL_FROM_DATABASE=Diva PRI/E1/T1-CTI PCI(e) v3 + +pci:v00001133d0000E01Csv00001133sd00001C05* + ID_MODEL_FROM_DATABASE=Diva V-PRI/T1-24 PCI(e) v3 + +pci:v00001133d0000E01Csv00001133sd00001C06* + ID_MODEL_FROM_DATABASE=Diva V-PRI/E1-30 PCI(e) v3 + +pci:v00001133d0000E01Csv00001133sd00001C07* + ID_MODEL_FROM_DATABASE=Diva Server PRI/E1/T1-8 Cornet NQ + +pci:v00001133d0000E01Csv00001133sd00001C08* + ID_MODEL_FROM_DATABASE=Diva Server PRI/T1-24 Cornet NQ + +pci:v00001133d0000E01Csv00001133sd00001C09* + ID_MODEL_FROM_DATABASE=Diva Server PRI/E1-30 Cornet NQ + +pci:v00001133d0000E01Csv00001133sd00001C0A* + ID_MODEL_FROM_DATABASE=Diva Server PRI/E1/T1 Cornet NQ + +pci:v00001133d0000E01Csv00001133sd00001C0B* + ID_MODEL_FROM_DATABASE=Diva Server V-PRI/T1-24 Cornet NQ + +pci:v00001133d0000E01Csv00001133sd00001C0C* + ID_MODEL_FROM_DATABASE=Diva Server V-PRI/E1-30 Cornet NQ + +pci:v00001133d0000E01E* + ID_MODEL_FROM_DATABASE=2PRI + +pci:v00001133d0000E01Esv00001133sd00001E01* + ID_MODEL_FROM_DATABASE=Diva 2PRI/E1/T1-60 PCI v1 + +pci:v00001133d0000E01Esv00001133sd0000E01E* + ID_MODEL_FROM_DATABASE=Diva V-2PRI/E1/T1-60 PCI v1 + +pci:v00001133d0000E020* + ID_MODEL_FROM_DATABASE=4PRI + +pci:v00001133d0000E020sv00001133sd00002001* + ID_MODEL_FROM_DATABASE=Diva 4PRI/E1/T1-120 PCI v1 + +pci:v00001133d0000E020sv00001133sd0000E020* + ID_MODEL_FROM_DATABASE=Diva V-4PRI/E1/T1-120 PCI v1 + +pci:v00001133d0000E022* + ID_MODEL_FROM_DATABASE=Analog-2 + +pci:v00001133d0000E022sv00001133sd00002200* + ID_MODEL_FROM_DATABASE=Diva V-Analog-2 PCI v1 + +pci:v00001133d0000E022sv00001133sd0000E022* + ID_MODEL_FROM_DATABASE=Diva Analog-2 PCI v1 + +pci:v00001133d0000E024* + ID_MODEL_FROM_DATABASE=Analog-4 + +pci:v00001133d0000E024sv00001133sd00002400* + ID_MODEL_FROM_DATABASE=Diva V-Analog-4 PCI v1 + +pci:v00001133d0000E024sv00001133sd0000E024* + ID_MODEL_FROM_DATABASE=Diva Analog-4 PCI v1 + +pci:v00001133d0000E028* + ID_MODEL_FROM_DATABASE=Analog-8 + +pci:v00001133d0000E028sv00001133sd00002800* + ID_MODEL_FROM_DATABASE=Diva V-Analog-8 PCI v1 + +pci:v00001133d0000E028sv00001133sd0000E028* + ID_MODEL_FROM_DATABASE=Diva Analog-8 PCI v1 + +pci:v00001133d0000E02A* + ID_MODEL_FROM_DATABASE=Diva IPM-300 PCI v1 + +pci:v00001133d0000E02C* + ID_MODEL_FROM_DATABASE=Diva IPM-600 PCI v1 + +pci:v00001133d0000E02E* + ID_MODEL_FROM_DATABASE=4BRI + +pci:v00001133d0000E02Esv00001133sd00002E01* + ID_MODEL_FROM_DATABASE=Diva V-4BRI-8 PCIe v2 + +pci:v00001133d0000E02Esv00001133sd0000E02E* + ID_MODEL_FROM_DATABASE=Diva 4BRI-8 PCIe v2 + +pci:v00001133d0000E032* + ID_MODEL_FROM_DATABASE=BRI + +pci:v00001133d0000E032sv00001133sd00003201* + ID_MODEL_FROM_DATABASE=Diva V-BRI-2 PCIe v2 + +pci:v00001133d0000E032sv00001133sd0000E032* + ID_MODEL_FROM_DATABASE=Diva BRI-2 PCIe v2 + +pci:v00001133d0000E034* + ID_MODEL_FROM_DATABASE=Diva BRI-CTI PCI v2 + +pci:v00001134* + ID_VENDOR_FROM_DATABASE=Mercury Computer Systems + +pci:v00001134d00000001* + ID_MODEL_FROM_DATABASE=Raceway Bridge + +pci:v00001134d00000002* + ID_MODEL_FROM_DATABASE=Dual PCI to RapidIO Bridge + +pci:v00001134d0000000B* + ID_MODEL_FROM_DATABASE=POET Serial RapidIO Bridge + +pci:v00001134d0000000D* + ID_MODEL_FROM_DATABASE=POET PSDMS Device + +pci:v00001135* + ID_VENDOR_FROM_DATABASE=Fuji Xerox Co Ltd + +pci:v00001135d00000001* + ID_MODEL_FROM_DATABASE=Printer controller + +pci:v00001136* + ID_VENDOR_FROM_DATABASE=Momentum Data Systems + +pci:v00001136d00000002* + ID_MODEL_FROM_DATABASE=PCI-JTAG + +pci:v00001137* + ID_VENDOR_FROM_DATABASE=Cisco Systems Inc + +pci:v00001137d00000023* + ID_MODEL_FROM_DATABASE=VIC 81 PCIe Upstream Port + +pci:v00001137d00000040* + ID_MODEL_FROM_DATABASE=VIC PCIe Upstream Port + +pci:v00001137d00000041* + ID_MODEL_FROM_DATABASE=VIC PCIe Downstream Port + +pci:v00001137d00000042* + ID_MODEL_FROM_DATABASE=VIC Management Controller + +pci:v00001137d00000042sv00001137sd00000047* + ID_MODEL_FROM_DATABASE=VIC P81E PCIe Management Controller + +pci:v00001137d00000043* + ID_MODEL_FROM_DATABASE=VIC Ethernet NIC + +pci:v00001137d00000043sv00001137sd00000047* + ID_MODEL_FROM_DATABASE=VIC P81E PCIe Ethernet NIC + +pci:v00001137d00000043sv00001137sd00000048* + ID_MODEL_FROM_DATABASE=VIC M81KR Mezzanine Ethernet NIC + +pci:v00001137d00000043sv00001137sd0000004F* + ID_MODEL_FROM_DATABASE=VIC 1280 Mezzanine Ethernet NIC + +pci:v00001137d00000043sv00001137sd00000084* + ID_MODEL_FROM_DATABASE=VIC 1240 MLOM Ethernet NIC + +pci:v00001137d00000043sv00001137sd00000085* + ID_MODEL_FROM_DATABASE=VIC 1225 PCIe Ethernet NIC + +pci:v00001137d00000044* + ID_MODEL_FROM_DATABASE=VIC Ethernet NIC Dynamic + +pci:v00001137d00000044sv00001137sd00000047* + ID_MODEL_FROM_DATABASE=VIC P81E PCIe Ethernet NIC Dynamic + +pci:v00001137d00000044sv00001137sd00000048* + ID_MODEL_FROM_DATABASE=VIC M81KR Mezzanine Ethernet NIC Dynamic + +pci:v00001137d00000044sv00001137sd0000004F* + ID_MODEL_FROM_DATABASE=VIC 1280 Mezzanine Ethernet NIC Dynamic + +pci:v00001137d00000044sv00001137sd00000084* + ID_MODEL_FROM_DATABASE=VIC 1240 MLOM Ethernet NIC Dynamic + +pci:v00001137d00000044sv00001137sd00000085* + ID_MODEL_FROM_DATABASE=VIC 1225 PCIe Ethernet NIC Dynamic + +pci:v00001137d00000045* + ID_MODEL_FROM_DATABASE=VIC FCoE HBA + +pci:v00001137d00000045sv00001137sd00000047* + ID_MODEL_FROM_DATABASE=VIC P81E PCIe FCoE HBA + +pci:v00001137d00000045sv00001137sd00000048* + ID_MODEL_FROM_DATABASE=VIC M81KR Mezzanine FCoE HBA + +pci:v00001137d00000045sv00001137sd0000004F* + ID_MODEL_FROM_DATABASE=VIC 1280 Mezzanine FCoE HBA + +pci:v00001137d0000004E* + ID_MODEL_FROM_DATABASE=VIC 82 PCIe Upstream Port + +pci:v00001137d000000CF* + ID_MODEL_FROM_DATABASE=VIC Userspace NIC + +pci:v00001138* + ID_VENDOR_FROM_DATABASE=Ziatech Corporation + +pci:v00001138d00008905* + ID_MODEL_FROM_DATABASE=8905 [STD 32 Bridge] + +pci:v00001139* + ID_VENDOR_FROM_DATABASE=Dynamic Pictures, Inc + +pci:v00001139d00000001* + ID_MODEL_FROM_DATABASE=VGA Compatable 3D Graphics + +pci:v0000113A* + ID_VENDOR_FROM_DATABASE=FWB Inc + +pci:v0000113B* + ID_VENDOR_FROM_DATABASE=Network Computing Devices + +pci:v0000113C* + ID_VENDOR_FROM_DATABASE=Cyclone Microsystems, Inc. + +pci:v0000113Cd00000000* + ID_MODEL_FROM_DATABASE=PCI-9060 i960 Bridge + +pci:v0000113Cd00000001* + ID_MODEL_FROM_DATABASE=PCI-SDK [PCI i960 Evaluation Platform] + +pci:v0000113Cd00000911* + ID_MODEL_FROM_DATABASE=PCI-911 [i960Jx-based Intelligent I/O Controller] + +pci:v0000113Cd00000912* + ID_MODEL_FROM_DATABASE=PCI-912 [i960CF-based Intelligent I/O Controller] + +pci:v0000113Cd00000913* + ID_MODEL_FROM_DATABASE=PCI-913 + +pci:v0000113Cd00000914* + ID_MODEL_FROM_DATABASE=PCI-914 [I/O Controller w/ secondary PCI bus] + +pci:v0000113D* + ID_VENDOR_FROM_DATABASE=Leading Edge Products Inc + +pci:v0000113E* + ID_VENDOR_FROM_DATABASE=Sanyo Electric Co - Computer Engineering Dept + +pci:v0000113F* + ID_VENDOR_FROM_DATABASE=Equinox Systems, Inc. + +pci:v0000113Fd00000808* + ID_MODEL_FROM_DATABASE=SST-64P Adapter + +pci:v0000113Fd00001010* + ID_MODEL_FROM_DATABASE=SST-128P Adapter + +pci:v0000113Fd000080C0* + ID_MODEL_FROM_DATABASE=SST-16P DB Adapter + +pci:v0000113Fd000080C4* + ID_MODEL_FROM_DATABASE=SST-16P RJ Adapter + +pci:v0000113Fd000080C8* + ID_MODEL_FROM_DATABASE=SST-16P Adapter + +pci:v0000113Fd00008888* + ID_MODEL_FROM_DATABASE=SST-4P Adapter + +pci:v0000113Fd00009090* + ID_MODEL_FROM_DATABASE=SST-8P Adapter + +pci:v00001140* + ID_VENDOR_FROM_DATABASE=Intervoice Inc + +pci:v00001141* + ID_VENDOR_FROM_DATABASE=Crest Microsystem Inc + +pci:v00001142* + ID_VENDOR_FROM_DATABASE=Alliance Semiconductor Corporation + +pci:v00001142d00003210* + ID_MODEL_FROM_DATABASE=AP6410 + +pci:v00001142d00006422* + ID_MODEL_FROM_DATABASE=ProVideo 6422 + +pci:v00001142d00006424* + ID_MODEL_FROM_DATABASE=ProVideo 6424 + +pci:v00001142d00006425* + ID_MODEL_FROM_DATABASE=ProMotion AT25 + +pci:v00001142d0000643D* + ID_MODEL_FROM_DATABASE=ProMotion AT3D + +pci:v00001143* + ID_VENDOR_FROM_DATABASE=NetPower, Inc + +pci:v00001144* + ID_VENDOR_FROM_DATABASE=Cincinnati Milacron + +pci:v00001144d00000001* + ID_MODEL_FROM_DATABASE=Noservo controller + +pci:v00001145* + ID_VENDOR_FROM_DATABASE=Workbit Corporation + +pci:v00001145d00008007* + ID_MODEL_FROM_DATABASE=NinjaSCSI-32 Workbit + +pci:v00001145d0000F007* + ID_MODEL_FROM_DATABASE=NinjaSCSI-32 KME + +pci:v00001145d0000F010* + ID_MODEL_FROM_DATABASE=NinjaSCSI-32 Workbit + +pci:v00001145d0000F012* + ID_MODEL_FROM_DATABASE=NinjaSCSI-32 Logitec + +pci:v00001145d0000F013* + ID_MODEL_FROM_DATABASE=NinjaSCSI-32 Logitec + +pci:v00001145d0000F015* + ID_MODEL_FROM_DATABASE=NinjaSCSI-32 Melco + +pci:v00001145d0000F020* + ID_MODEL_FROM_DATABASE=NinjaSCSI-32 Sony PCGA-DVD51 + +pci:v00001145d0000F021* + ID_MODEL_FROM_DATABASE=NinjaPATA-32 Delkin Cardbus UDMA + +pci:v00001145d0000F024* + ID_MODEL_FROM_DATABASE=NinjaPATA-32 Delkin Cardbus UDMA + +pci:v00001145d0000F103* + ID_MODEL_FROM_DATABASE=NinjaPATA-32 Delkin Cardbus UDMA + +pci:v00001146* + ID_VENDOR_FROM_DATABASE=Force Computers + +pci:v00001147* + ID_VENDOR_FROM_DATABASE=Interface Corp + +pci:v00001148* + ID_VENDOR_FROM_DATABASE=SysKonnect + +pci:v00001148d00004000* + ID_MODEL_FROM_DATABASE=FDDI Adapter + +pci:v00001148d00004000sv00000E11sd0000B03B* + ID_MODEL_FROM_DATABASE=Netelligent 100 FDDI DAS Fibre SC + +pci:v00001148d00004000sv00000E11sd0000B03C* + ID_MODEL_FROM_DATABASE=Netelligent 100 FDDI SAS Fibre SC + +pci:v00001148d00004000sv00000E11sd0000B03D* + ID_MODEL_FROM_DATABASE=Netelligent 100 FDDI DAS UTP + +pci:v00001148d00004000sv00000E11sd0000B03E* + ID_MODEL_FROM_DATABASE=Netelligent 100 FDDI SAS UTP + +pci:v00001148d00004000sv00000E11sd0000B03F* + ID_MODEL_FROM_DATABASE=Netelligent 100 FDDI SAS Fibre MIC + +pci:v00001148d00004000sv00001148sd00005521* + ID_MODEL_FROM_DATABASE=FDDI SK-5521 (SK-NET FDDI-UP) + +pci:v00001148d00004000sv00001148sd00005522* + ID_MODEL_FROM_DATABASE=FDDI SK-5522 (SK-NET FDDI-UP DAS) + +pci:v00001148d00004000sv00001148sd00005541* + ID_MODEL_FROM_DATABASE=FDDI SK-5541 (SK-NET FDDI-FP) + +pci:v00001148d00004000sv00001148sd00005543* + ID_MODEL_FROM_DATABASE=FDDI SK-5543 (SK-NET FDDI-LP) + +pci:v00001148d00004000sv00001148sd00005544* + ID_MODEL_FROM_DATABASE=FDDI SK-5544 (SK-NET FDDI-LP DAS) + +pci:v00001148d00004000sv00001148sd00005821* + ID_MODEL_FROM_DATABASE=FDDI SK-5821 (SK-NET FDDI-UP64) + +pci:v00001148d00004000sv00001148sd00005822* + ID_MODEL_FROM_DATABASE=FDDI SK-5822 (SK-NET FDDI-UP64 DAS) + +pci:v00001148d00004000sv00001148sd00005841* + ID_MODEL_FROM_DATABASE=FDDI SK-5841 (SK-NET FDDI-FP64) + +pci:v00001148d00004000sv00001148sd00005843* + ID_MODEL_FROM_DATABASE=FDDI SK-5843 (SK-NET FDDI-LP64) + +pci:v00001148d00004000sv00001148sd00005844* + ID_MODEL_FROM_DATABASE=FDDI SK-5844 (SK-NET FDDI-LP64 DAS) + +pci:v00001148d00004200* + ID_MODEL_FROM_DATABASE=Token Ring adapter + +pci:v00001148d00004300* + ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) + +pci:v00001148d00004300sv00001148sd00009821* + ID_MODEL_FROM_DATABASE=SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T) + +pci:v00001148d00004300sv00001148sd00009822* + ID_MODEL_FROM_DATABASE=SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link) + +pci:v00001148d00004300sv00001148sd00009841* + ID_MODEL_FROM_DATABASE=SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX) + +pci:v00001148d00004300sv00001148sd00009842* + ID_MODEL_FROM_DATABASE=SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link) + +pci:v00001148d00004300sv00001148sd00009843* + ID_MODEL_FROM_DATABASE=SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX) + +pci:v00001148d00004300sv00001148sd00009844* + ID_MODEL_FROM_DATABASE=SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link) + +pci:v00001148d00004300sv00001148sd00009861* + ID_MODEL_FROM_DATABASE=SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition) + +pci:v00001148d00004300sv00001148sd00009862* + ID_MODEL_FROM_DATABASE=SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link) + +pci:v00001148d00004300sv00001148sd00009871* + ID_MODEL_FROM_DATABASE=SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX) + +pci:v00001148d00004300sv00001148sd00009872* + ID_MODEL_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) + +pci:v00001148d00004300sv00001259sd00002970* + ID_MODEL_FROM_DATABASE=AT-2970SX Gigabit Ethernet Adapter + +pci:v00001148d00004300sv00001259sd00002971* + ID_MODEL_FROM_DATABASE=AT-2970LX Gigabit Ethernet Adapter + +pci:v00001148d00004300sv00001259sd00002972* + ID_MODEL_FROM_DATABASE=AT-2970TX Gigabit Ethernet Adapter + +pci:v00001148d00004300sv00001259sd00002973* + ID_MODEL_FROM_DATABASE=AT-2971SX Gigabit Ethernet Adapter + +pci:v00001148d00004300sv00001259sd00002974* + ID_MODEL_FROM_DATABASE=AT-2971T Gigabit Ethernet Adapter + +pci:v00001148d00004300sv00001259sd00002975* + ID_MODEL_FROM_DATABASE=AT-2970SX/2SC Gigabit Ethernet Adapter + +pci:v00001148d00004300sv00001259sd00002976* + ID_MODEL_FROM_DATABASE=AT-2970LX/2SC Gigabit Ethernet Adapter + +pci:v00001148d00004300sv00001259sd00002977* + ID_MODEL_FROM_DATABASE=AT-2970TX/2TX Gigabit Ethernet Adapter + +pci:v00001148d00004320* + ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC + +pci:v00001148d00004320sv00001148sd00000121* + ID_MODEL_FROM_DATABASE=Marvell RDK-8001 Adapter + +pci:v00001148d00004320sv00001148sd00000221* + ID_MODEL_FROM_DATABASE=Marvell RDK-8002 Adapter + +pci:v00001148d00004320sv00001148sd00000321* + ID_MODEL_FROM_DATABASE=Marvell RDK-8003 Adapter + +pci:v00001148d00004320sv00001148sd00000421* + ID_MODEL_FROM_DATABASE=Marvell RDK-8004 Adapter + +pci:v00001148d00004320sv00001148sd00000621* + ID_MODEL_FROM_DATABASE=Marvell RDK-8006 Adapter + +pci:v00001148d00004320sv00001148sd00000721* + ID_MODEL_FROM_DATABASE=Marvell RDK-8007 Adapter + +pci:v00001148d00004320sv00001148sd00000821* + ID_MODEL_FROM_DATABASE=Marvell RDK-8008 Adapter + +pci:v00001148d00004320sv00001148sd00000921* + ID_MODEL_FROM_DATABASE=Marvell RDK-8009 Adapter + +pci:v00001148d00004320sv00001148sd00001121* + ID_MODEL_FROM_DATABASE=Marvell RDK-8011 Adapter + +pci:v00001148d00004320sv00001148sd00001221* + ID_MODEL_FROM_DATABASE=Marvell RDK-8012 Adapter + +pci:v00001148d00004320sv00001148sd00003221* + ID_MODEL_FROM_DATABASE=SK-9521 V2.0 10/100/1000Base-T Adapter + +pci:v00001148d00004320sv00001148sd00005021* + ID_MODEL_FROM_DATABASE=SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter + +pci:v00001148d00004320sv00001148sd00005041* + ID_MODEL_FROM_DATABASE=SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter + +pci:v00001148d00004320sv00001148sd00005043* + ID_MODEL_FROM_DATABASE=SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter + +pci:v00001148d00004320sv00001148sd00005051* + ID_MODEL_FROM_DATABASE=SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter + +pci:v00001148d00004320sv00001148sd00005061* + ID_MODEL_FROM_DATABASE=SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter + +pci:v00001148d00004320sv00001148sd00005071* + ID_MODEL_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter + +pci:v00001148d00004320sv00001148sd00009521* + ID_MODEL_FROM_DATABASE=SK-9521 10/100/1000Base-T Adapter + +pci:v00001148d00004400* + ID_MODEL_FROM_DATABASE=SK-9Dxx Gigabit Ethernet Adapter + +pci:v00001148d00004500* + ID_MODEL_FROM_DATABASE=SK-9Mxx Gigabit Ethernet Adapter + +pci:v00001148d00009000* + ID_MODEL_FROM_DATABASE=SK-9S21 10/100/1000Base-T Server Adapter, PCI-X, Copper RJ-45 + +pci:v00001148d00009843* + ID_MODEL_FROM_DATABASE=[Fujitsu] Gigabit Ethernet + +pci:v00001148d00009E00* + ID_MODEL_FROM_DATABASE=SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45 + +pci:v00001148d00009E00sv00001148sd00002100* + ID_MODEL_FROM_DATABASE=SK-9E21 Server Adapter + +pci:v00001148d00009E00sv00001148sd000021D0* + ID_MODEL_FROM_DATABASE=SK-9E21D 10/100/1000Base-T Adapter + +pci:v00001148d00009E00sv00001148sd00002200* + ID_MODEL_FROM_DATABASE=SK-9E22 Server Adapter + +pci:v00001148d00009E00sv00001148sd00008100* + ID_MODEL_FROM_DATABASE=SK-9E81 Server Adapter + +pci:v00001148d00009E00sv00001148sd00008200* + ID_MODEL_FROM_DATABASE=SK-9E82 Server Adapter + +pci:v00001148d00009E00sv00001148sd00009100* + ID_MODEL_FROM_DATABASE=SK-9E91 Server Adapter + +pci:v00001148d00009E00sv00001148sd00009200* + ID_MODEL_FROM_DATABASE=SK-9E92 Server Adapter + +pci:v00001148d00009E01* + ID_MODEL_FROM_DATABASE=SK-9E21M 10/100/1000Base-T Adapter + +pci:v00001149* + ID_VENDOR_FROM_DATABASE=Win System Corporation + +pci:v0000114A* + ID_VENDOR_FROM_DATABASE=VMIC + +pci:v0000114Ad00005565* + ID_MODEL_FROM_DATABASE=GE-IP PCI5565,PMC5565 Reflective Memory Node + +pci:v0000114Ad00005579* + ID_MODEL_FROM_DATABASE=VMIPCI-5579 (Reflective Memory Card) + +pci:v0000114Ad00005587* + ID_MODEL_FROM_DATABASE=VMIPCI-5587 (Reflective Memory Card) + +pci:v0000114Ad00006504* + ID_MODEL_FROM_DATABASE=VMIC PCI 7755 FPGA + +pci:v0000114Ad00007587* + ID_MODEL_FROM_DATABASE=VMIVME-7587 + +pci:v0000114B* + ID_VENDOR_FROM_DATABASE=Canopus Co., Ltd + +pci:v0000114C* + ID_VENDOR_FROM_DATABASE=Annabooks + +pci:v0000114D* + ID_VENDOR_FROM_DATABASE=IC Corporation + +pci:v0000114E* + ID_VENDOR_FROM_DATABASE=Nikon Systems Inc + +pci:v0000114F* + ID_VENDOR_FROM_DATABASE=Digi International + +pci:v0000114Fd00000002* + ID_MODEL_FROM_DATABASE=AccelePort EPC + +pci:v0000114Fd00000003* + ID_MODEL_FROM_DATABASE=RightSwitch SE-6 + +pci:v0000114Fd00000004* + ID_MODEL_FROM_DATABASE=AccelePort Xem + +pci:v0000114Fd00000005* + ID_MODEL_FROM_DATABASE=AccelePort Xr + +pci:v0000114Fd00000006* + ID_MODEL_FROM_DATABASE=AccelePort Xr,C/X + +pci:v0000114Fd00000009* + ID_MODEL_FROM_DATABASE=AccelePort Xr/J + +pci:v0000114Fd0000000A* + ID_MODEL_FROM_DATABASE=AccelePort EPC/J + +pci:v0000114Fd0000000C* + ID_MODEL_FROM_DATABASE=DataFirePRIme T1 (1-port) + +pci:v0000114Fd0000000D* + ID_MODEL_FROM_DATABASE=SyncPort 2-Port (x.25/FR) + +pci:v0000114Fd00000011* + ID_MODEL_FROM_DATABASE=AccelePort 8r EIA-232 (IBM) + +pci:v0000114Fd00000012* + ID_MODEL_FROM_DATABASE=AccelePort 8r EIA-422 + +pci:v0000114Fd00000013* + ID_MODEL_FROM_DATABASE=AccelePort Xr + +pci:v0000114Fd00000014* + ID_MODEL_FROM_DATABASE=AccelePort 8r EIA-422 + +pci:v0000114Fd00000015* + ID_MODEL_FROM_DATABASE=AccelePort Xem + +pci:v0000114Fd00000016* + ID_MODEL_FROM_DATABASE=AccelePort EPC/X + +pci:v0000114Fd00000017* + ID_MODEL_FROM_DATABASE=AccelePort C/X + +pci:v0000114Fd0000001A* + ID_MODEL_FROM_DATABASE=DataFirePRIme E1 (1-port) + +pci:v0000114Fd0000001B* + ID_MODEL_FROM_DATABASE=AccelePort C/X (IBM) + +pci:v0000114Fd0000001C* + ID_MODEL_FROM_DATABASE=AccelePort Xr (SAIP) + +pci:v0000114Fd0000001D* + ID_MODEL_FROM_DATABASE=DataFire RAS T1/E1/PRI + +pci:v0000114Fd0000001Dsv0000114Fsd00000050* + ID_MODEL_FROM_DATABASE=DataFire RAS E1 Adapter + +pci:v0000114Fd0000001Dsv0000114Fsd00000051* + ID_MODEL_FROM_DATABASE=DataFire RAS Dual E1 Adapter + +pci:v0000114Fd0000001Dsv0000114Fsd00000052* + ID_MODEL_FROM_DATABASE=DataFire RAS T1 Adapter + +pci:v0000114Fd0000001Dsv0000114Fsd00000053* + ID_MODEL_FROM_DATABASE=DataFire RAS Dual T1 Adapter + +pci:v0000114Fd00000023* + ID_MODEL_FROM_DATABASE=AccelePort RAS + +pci:v0000114Fd00000024* + ID_MODEL_FROM_DATABASE=DataFire RAS B4 ST/U + +pci:v0000114Fd00000024sv0000114Fsd00000030* + ID_MODEL_FROM_DATABASE=DataFire RAS BRI U Adapter + +pci:v0000114Fd00000024sv0000114Fsd00000031* + ID_MODEL_FROM_DATABASE=DataFire RAS BRI S/T Adapter + +pci:v0000114Fd00000026* + ID_MODEL_FROM_DATABASE=AccelePort 4r 920 + +pci:v0000114Fd00000027* + ID_MODEL_FROM_DATABASE=AccelePort Xr 920 + +pci:v0000114Fd00000028* + ID_MODEL_FROM_DATABASE=ClassicBoard 4 + +pci:v0000114Fd00000029* + ID_MODEL_FROM_DATABASE=ClassicBoard 8 + +pci:v0000114Fd00000034* + ID_MODEL_FROM_DATABASE=AccelePort 2r 920 + +pci:v0000114Fd00000035* + ID_MODEL_FROM_DATABASE=DataFire DSP T1/E1/PRI cPCI + +pci:v0000114Fd00000040* + ID_MODEL_FROM_DATABASE=AccelePort Xp + +pci:v0000114Fd00000040sv0000114Fsd00000042* + ID_MODEL_FROM_DATABASE=AccelePort 2p PCI + +pci:v0000114Fd00000040sv0000114Fsd00000043* + ID_MODEL_FROM_DATABASE=AccelePort 4p PCI + +pci:v0000114Fd00000040sv0000114Fsd00000044* + ID_MODEL_FROM_DATABASE=AccelePort 8p PCI + +pci:v0000114Fd00000040sv0000114Fsd00000045* + ID_MODEL_FROM_DATABASE=AccelePort 16p PCI + +pci:v0000114Fd00000040sv0000114Fsd0000004E* + ID_MODEL_FROM_DATABASE=AccelePort 32p PCI + +pci:v0000114Fd00000042* + ID_MODEL_FROM_DATABASE=AccelePort 2p + +pci:v0000114Fd00000043* + ID_MODEL_FROM_DATABASE=AccelePort 4p + +pci:v0000114Fd00000044* + ID_MODEL_FROM_DATABASE=AccelePort 8p + +pci:v0000114Fd00000045* + ID_MODEL_FROM_DATABASE=AccelePort 16p + +pci:v0000114Fd0000004E* + ID_MODEL_FROM_DATABASE=AccelePort 32p + +pci:v0000114Fd00000070* + ID_MODEL_FROM_DATABASE=Datafire Micro V IOM2 (Europe) + +pci:v0000114Fd00000071* + ID_MODEL_FROM_DATABASE=Datafire Micro V (Europe) + +pci:v0000114Fd00000072* + ID_MODEL_FROM_DATABASE=Datafire Micro V IOM2 (North America) + +pci:v0000114Fd00000073* + ID_MODEL_FROM_DATABASE=Datafire Micro V (North America) + +pci:v0000114Fd000000B0* + ID_MODEL_FROM_DATABASE=Digi Neo 4 + +pci:v0000114Fd000000B1* + ID_MODEL_FROM_DATABASE=Digi Neo 8 + +pci:v0000114Fd000000C8* + ID_MODEL_FROM_DATABASE=Digi Neo 2 DB9 + +pci:v0000114Fd000000C9* + ID_MODEL_FROM_DATABASE=Digi Neo 2 DB9 PRI + +pci:v0000114Fd000000CA* + ID_MODEL_FROM_DATABASE=Digi Neo 2 RJ45 + +pci:v0000114Fd000000CB* + ID_MODEL_FROM_DATABASE=Digi Neo 2 RJ45 PRI + +pci:v0000114Fd000000CC* + ID_MODEL_FROM_DATABASE=Digi Neo 1 422 + +pci:v0000114Fd000000CD* + ID_MODEL_FROM_DATABASE=Digi Neo 1 422 485 + +pci:v0000114Fd000000CE* + ID_MODEL_FROM_DATABASE=Digi Neo 2 422 485 + +pci:v0000114Fd000000D0* + ID_MODEL_FROM_DATABASE=ClassicBoard 4 422 + +pci:v0000114Fd000000D1* + ID_MODEL_FROM_DATABASE=ClassicBoard 8 422 + +pci:v0000114Fd000000F1* + ID_MODEL_FROM_DATABASE=Digi Neo PCI-E 4 port + +pci:v0000114Fd000000F4* + ID_MODEL_FROM_DATABASE=Digi Neo 4 (IBM version) + +pci:v0000114Fd00006001* + ID_MODEL_FROM_DATABASE=Avanstar + +pci:v00001150* + ID_VENDOR_FROM_DATABASE=Thinking Machines Corp + +pci:v00001151* + ID_VENDOR_FROM_DATABASE=JAE Electronics Inc. + +pci:v00001152* + ID_VENDOR_FROM_DATABASE=Megatek + +pci:v00001153* + ID_VENDOR_FROM_DATABASE=Land Win Electronic Corp + +pci:v00001154* + ID_VENDOR_FROM_DATABASE=Melco Inc + +pci:v00001155* + ID_VENDOR_FROM_DATABASE=Pine Technology Ltd + +pci:v00001156* + ID_VENDOR_FROM_DATABASE=Periscope Engineering + +pci:v00001157* + ID_VENDOR_FROM_DATABASE=Avsys Corporation + +pci:v00001158* + ID_VENDOR_FROM_DATABASE=Voarx R & D Inc + +pci:v00001158d00003011* + ID_MODEL_FROM_DATABASE=Tokenet/vg 1001/10m anylan + +pci:v00001158d00009050* + ID_MODEL_FROM_DATABASE=Lanfleet/Truevalue + +pci:v00001158d00009051* + ID_MODEL_FROM_DATABASE=Lanfleet/Truevalue + +pci:v00001159* + ID_VENDOR_FROM_DATABASE=Mutech Corp + +pci:v00001159d00000001* + ID_MODEL_FROM_DATABASE=MV-1000 + +pci:v00001159d00000002* + ID_MODEL_FROM_DATABASE=MV-1500 + +pci:v0000115A* + ID_VENDOR_FROM_DATABASE=Harlequin Ltd + +pci:v0000115B* + ID_VENDOR_FROM_DATABASE=Parallax Graphics + +pci:v0000115C* + ID_VENDOR_FROM_DATABASE=Photron Ltd. + +pci:v0000115D* + ID_VENDOR_FROM_DATABASE=Xircom + +pci:v0000115Dd00000003* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v0000115Dd00000003sv00001014sd00000181* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter + +pci:v0000115Dd00000003sv00001014sd00001181* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter + +pci:v0000115Dd00000003sv00001014sd00008181* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter + +pci:v0000115Dd00000003sv00001014sd00009181* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter + +pci:v0000115Dd00000003sv0000115Dsd00000181* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v0000115Dd00000003sv0000115Dsd00000182* + ID_MODEL_FROM_DATABASE=RealPort2 CardBus Ethernet 10/100 (R2BE-100) + +pci:v0000115Dd00000003sv0000115Dsd00001181* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v0000115Dd00000003sv00001179sd00000181* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v0000115Dd00000003sv00008086sd00008181* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Mobile CardBus 32 Adapter + +pci:v0000115Dd00000003sv00008086sd00009181* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Mobile CardBus 32 Adapter + +pci:v0000115Dd00000005* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v0000115Dd00000005sv00001014sd00000182* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter + +pci:v0000115Dd00000005sv00001014sd00001182* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter + +pci:v0000115Dd00000005sv0000115Dsd00000182* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v0000115Dd00000005sv0000115Dsd00001182* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v0000115Dd00000007* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v0000115Dd00000007sv00001014sd00000182* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter + +pci:v0000115Dd00000007sv00001014sd00001182* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter + +pci:v0000115Dd00000007sv0000115Dsd00000182* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v0000115Dd00000007sv0000115Dsd00001182* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v0000115Dd0000000B* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v0000115Dd0000000Bsv00001014sd00000183* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter + +pci:v0000115Dd0000000Bsv0000115Dsd00000183* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v0000115Dd0000000C* + ID_MODEL_FROM_DATABASE=Mini-PCI V.90 56k Modem + +pci:v0000115Dd0000000F* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v0000115Dd0000000Fsv00001014sd00000183* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Cardbus Adapter + +pci:v0000115Dd0000000Fsv0000115Dsd00000183* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 10/100 + +pci:v0000115Dd000000D4* + ID_MODEL_FROM_DATABASE=Mini-PCI K56Flex Modem + +pci:v0000115Dd00000101* + ID_MODEL_FROM_DATABASE=Cardbus 56k modem + +pci:v0000115Dd00000101sv0000115Dsd00001081* + ID_MODEL_FROM_DATABASE=Cardbus 56k Modem + +pci:v0000115Dd00000103* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet + 56k Modem + +pci:v0000115Dd00000103sv00001014sd00009181* + ID_MODEL_FROM_DATABASE=Cardbus 56k Modem + +pci:v0000115Dd00000103sv00001115sd00001181* + ID_MODEL_FROM_DATABASE=Cardbus Ethernet 100 + 56k Modem + +pci:v0000115Dd00000103sv0000115Dsd00001181* + ID_MODEL_FROM_DATABASE=CBEM56G-100 Ethernet + 56k Modem + +pci:v0000115Dd00000103sv00008086sd00009181* + ID_MODEL_FROM_DATABASE=PRO/100 LAN + Modem56 CardBus + +pci:v0000115E* + ID_VENDOR_FROM_DATABASE=Peer Protocols Inc + +pci:v0000115F* + ID_VENDOR_FROM_DATABASE=Maxtor Corporation + +pci:v00001160* + ID_VENDOR_FROM_DATABASE=Megasoft Inc + +pci:v00001161* + ID_VENDOR_FROM_DATABASE=PFU Limited + +pci:v00001162* + ID_VENDOR_FROM_DATABASE=OA Laboratory Co Ltd + +pci:v00001163* + ID_VENDOR_FROM_DATABASE=Rendition + +pci:v00001163d00000001* + ID_MODEL_FROM_DATABASE=Verite 1000 + +pci:v00001163d00002000* + ID_MODEL_FROM_DATABASE=Verite V2000/V2100/V2200 + +pci:v00001163d00002000sv00001092sd00002000* + ID_MODEL_FROM_DATABASE=Stealth II S220 + +pci:v00001164* + ID_VENDOR_FROM_DATABASE=Advanced Peripherals Technologies + +pci:v00001165* + ID_VENDOR_FROM_DATABASE=Imagraph Corporation + +pci:v00001165d00000001* + ID_MODEL_FROM_DATABASE=Motion TPEG Recorder/Player with audio + +pci:v00001166* + ID_VENDOR_FROM_DATABASE=Broadcom + +pci:v00001166d00000000* + ID_MODEL_FROM_DATABASE=CMIC-LE + +pci:v00001166d00000005* + ID_MODEL_FROM_DATABASE=CNB20-LE Host Bridge + +pci:v00001166d00000006* + ID_MODEL_FROM_DATABASE=CNB20HE Host Bridge + +pci:v00001166d00000007* + ID_MODEL_FROM_DATABASE=CNB20-LE Host Bridge + +pci:v00001166d00000008* + ID_MODEL_FROM_DATABASE=CNB20HE Host Bridge + +pci:v00001166d00000009* + ID_MODEL_FROM_DATABASE=CNB20LE Host Bridge + +pci:v00001166d00000010* + ID_MODEL_FROM_DATABASE=CIOB30 + +pci:v00001166d00000011* + ID_MODEL_FROM_DATABASE=CMIC-HE + +pci:v00001166d00000012* + ID_MODEL_FROM_DATABASE=CMIC-WS Host Bridge (GC-LE chipset) + +pci:v00001166d00000013* + ID_MODEL_FROM_DATABASE=CNB20-HE Host Bridge + +pci:v00001166d00000014* + ID_MODEL_FROM_DATABASE=CMIC-LE Host Bridge (GC-LE chipset) + +pci:v00001166d00000015* + ID_MODEL_FROM_DATABASE=CMIC-GC Host Bridge + +pci:v00001166d00000016* + ID_MODEL_FROM_DATABASE=CMIC-GC Host Bridge + +pci:v00001166d00000017* + ID_MODEL_FROM_DATABASE=GCNB-LE Host Bridge + +pci:v00001166d00000031* + ID_MODEL_FROM_DATABASE=HT1100 HPX0 HT Host Bridge + +pci:v00001166d00000036* + ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] PCI/PCI-X Bridge + +pci:v00001166d00000101* + ID_MODEL_FROM_DATABASE=CIOB-X2 PCI-X I/O Bridge + +pci:v00001166d00000103* + ID_MODEL_FROM_DATABASE=EPB PCI-Express to PCI-X Bridge + +pci:v00001166d00000104* + ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] PCI/PCI-X Bridge + +pci:v00001166d00000110* + ID_MODEL_FROM_DATABASE=CIOB-E I/O Bridge with Gigabit Ethernet + +pci:v00001166d00000130* + ID_MODEL_FROM_DATABASE=BCM5780 [HT2000] PCI-X bridge + +pci:v00001166d00000132* + ID_MODEL_FROM_DATABASE=BCM5780 [HT2000] PCI-Express Bridge + +pci:v00001166d00000132sv00001166sd00000132* + ID_MODEL_FROM_DATABASE=HT2000 PCI-Express bridge + +pci:v00001166d00000140* + ID_MODEL_FROM_DATABASE=HT2100 PCI-Express Bridge + +pci:v00001166d00000141* + ID_MODEL_FROM_DATABASE=HT2100 PCI-Express Bridge + +pci:v00001166d00000142* + ID_MODEL_FROM_DATABASE=HT2100 PCI-Express Bridge + +pci:v00001166d00000144* + ID_MODEL_FROM_DATABASE=HT2100 PCI-Express Bridge + +pci:v00001166d00000200* + ID_MODEL_FROM_DATABASE=OSB4 South Bridge + +pci:v00001166d00000201* + ID_MODEL_FROM_DATABASE=CSB5 South Bridge + +pci:v00001166d00000201sv00004C53sd00001080* + ID_MODEL_FROM_DATABASE=CT8 mainboard + +pci:v00001166d00000203* + ID_MODEL_FROM_DATABASE=CSB6 South Bridge + +pci:v00001166d00000203sv00001734sd00001012* + ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX series + +pci:v00001166d00000205* + ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] Legacy South Bridge + +pci:v00001166d00000211* + ID_MODEL_FROM_DATABASE=OSB4 IDE Controller + +pci:v00001166d00000212* + ID_MODEL_FROM_DATABASE=CSB5 IDE Controller + +pci:v00001166d00000212sv00001028sd0000014A* + ID_MODEL_FROM_DATABASE=PowerEdge 1750 + +pci:v00001166d00000212sv00001028sd0000810B* + ID_MODEL_FROM_DATABASE=PowerEdge 1650/2550 + +pci:v00001166d00000212sv00004C53sd00001080* + ID_MODEL_FROM_DATABASE=CT8 mainboard + +pci:v00001166d00000213* + ID_MODEL_FROM_DATABASE=CSB6 RAID/IDE Controller + +pci:v00001166d00000213sv00001028sd00004134* + ID_MODEL_FROM_DATABASE=PowerEdge 600SC + +pci:v00001166d00000213sv00001028sd0000C134* + ID_MODEL_FROM_DATABASE=Poweredge SC600 + +pci:v00001166d00000213sv00001734sd00001012* + ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX series onboard IDE + +pci:v00001166d00000214* + ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] IDE + +pci:v00001166d00000214sv00001028sd00000205* + ID_MODEL_FROM_DATABASE=PowerEdge 2970 HT1000 IDE + +pci:v00001166d00000217* + ID_MODEL_FROM_DATABASE=CSB6 IDE Controller + +pci:v00001166d00000217sv00001028sd00004134* + ID_MODEL_FROM_DATABASE=Poweredge SC600 + +pci:v00001166d0000021B* + ID_MODEL_FROM_DATABASE=HT1100 HD Audio + +pci:v00001166d00000220* + ID_MODEL_FROM_DATABASE=OSB4/CSB5 OHCI USB Controller + +pci:v00001166d00000220sv00004C53sd00001080* + ID_MODEL_FROM_DATABASE=CT8 mainboard + +pci:v00001166d00000221* + ID_MODEL_FROM_DATABASE=CSB6 OHCI USB Controller + +pci:v00001166d00000221sv00001734sd00001012* + ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX series onboard OHCI + +pci:v00001166d00000223* + ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] USB + +pci:v00001166d00000223sv00001028sd00000205* + ID_MODEL_FROM_DATABASE=PowerEdge 2970 HT1000 USB Controller + +pci:v00001166d00000223sv00001028sd0000020B* + ID_MODEL_FROM_DATABASE=PowerEdge T605 HT1000 USB Controller + +pci:v00001166d00000225* + ID_MODEL_FROM_DATABASE=CSB5 LPC bridge + +pci:v00001166d00000227* + ID_MODEL_FROM_DATABASE=GCLE-2 Host Bridge + +pci:v00001166d00000227sv00001734sd00001012* + ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX series + +pci:v00001166d00000230* + ID_MODEL_FROM_DATABASE=CSB5 LPC bridge + +pci:v00001166d00000230sv00004C53sd00001080* + ID_MODEL_FROM_DATABASE=CT8 mainboard + +pci:v00001166d00000234* + ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] LPC + +pci:v00001166d00000234sv00001028sd00000205* + ID_MODEL_FROM_DATABASE=PowerEdge 2970 HT1000 LPC + +pci:v00001166d00000234sv00001028sd0000020B* + ID_MODEL_FROM_DATABASE=PowerEdge T605 HT1000 LPC + +pci:v00001166d00000235* + ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] XIOAPIC0-2 + +pci:v00001166d00000238* + ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] WDTimer + +pci:v00001166d00000240* + ID_MODEL_FROM_DATABASE=K2 SATA + +pci:v00001166d00000241* + ID_MODEL_FROM_DATABASE=RAIDCore RC4000 + +pci:v00001166d00000242* + ID_MODEL_FROM_DATABASE=RAIDCore BC4000 + +pci:v00001166d0000024A* + ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] SATA (Native SATA Mode) + +pci:v00001166d0000024Asv00001028sd0000020B* + ID_MODEL_FROM_DATABASE=PowerEdge T605 onboard SATA Controller + +pci:v00001166d0000024B* + ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] SATA (PATA/IDE Mode) + +pci:v00001166d0000024Bsv00001028sd00000205* + ID_MODEL_FROM_DATABASE=PowerEdge 2970 HT1000 SATA controller + +pci:v00001166d00000406* + ID_MODEL_FROM_DATABASE=HT1100 PCI-X Bridge + +pci:v00001166d00000408* + ID_MODEL_FROM_DATABASE=HT1100 Legacy Device + +pci:v00001166d0000040A* + ID_MODEL_FROM_DATABASE=HT1100 ISA-LPC Bridge + +pci:v00001166d0000040Asv00001028sd00000223* + ID_MODEL_FROM_DATABASE=PowerEdge R905 HT1100 ISA-LPC Bridge + +pci:v00001166d00000410* + ID_MODEL_FROM_DATABASE=HT1100 SATA Controller (Native SATA Mode) + +pci:v00001166d00000411* + ID_MODEL_FROM_DATABASE=HT1100 SATA Controller (PATA / IDE Mode) + +pci:v00001166d00000412* + ID_MODEL_FROM_DATABASE=HT1100 USB OHCI Controller + +pci:v00001166d00000414* + ID_MODEL_FROM_DATABASE=HT1100 USB EHCI Controller + +pci:v00001166d00000416* + ID_MODEL_FROM_DATABASE=HT1100 USB EHCI Controller (with Debug Port) + +pci:v00001166d00000420* + ID_MODEL_FROM_DATABASE=HT1100 PCI-Express Bridge + +pci:v00001166d00000421* + ID_MODEL_FROM_DATABASE=HT1100 SAS/SATA Controller + +pci:v00001166d00000422* + ID_MODEL_FROM_DATABASE=HT1100 PCI-Express Bridge + +pci:v00001167* + ID_VENDOR_FROM_DATABASE=Mutoh Industries Inc + +pci:v00001168* + ID_VENDOR_FROM_DATABASE=Thine Electronics Inc + +pci:v00001169* + ID_VENDOR_FROM_DATABASE=Centre for Development of Advanced Computing + +pci:v0000116A* + ID_VENDOR_FROM_DATABASE=Luminex Software, Inc. + +pci:v0000116Ad00006100* + ID_MODEL_FROM_DATABASE=Bus/Tag Channel + +pci:v0000116Ad00006800* + ID_MODEL_FROM_DATABASE=Escon Channel + +pci:v0000116Ad00007100* + ID_MODEL_FROM_DATABASE=Bus/Tag Channel + +pci:v0000116Ad00007800* + ID_MODEL_FROM_DATABASE=Escon Channel + +pci:v0000116B* + ID_VENDOR_FROM_DATABASE=Connectware Inc + +pci:v0000116C* + ID_VENDOR_FROM_DATABASE=Intelligent Resources Integrated Systems + +pci:v0000116D* + ID_VENDOR_FROM_DATABASE=Martin-Marietta + +pci:v0000116E* + ID_VENDOR_FROM_DATABASE=Electronics for Imaging + +pci:v0000116F* + ID_VENDOR_FROM_DATABASE=Workstation Technology + +pci:v00001170* + ID_VENDOR_FROM_DATABASE=Inventec Corporation + +pci:v00001171* + ID_VENDOR_FROM_DATABASE=Loughborough Sound Images Plc + +pci:v00001172* + ID_VENDOR_FROM_DATABASE=Altera Corporation + +pci:v00001173* + ID_VENDOR_FROM_DATABASE=Adobe Systems, Inc + +pci:v00001174* + ID_VENDOR_FROM_DATABASE=Bridgeport Machines + +pci:v00001175* + ID_VENDOR_FROM_DATABASE=Mitron Computer Inc. + +pci:v00001176* + ID_VENDOR_FROM_DATABASE=SBE Incorporated + +pci:v00001177* + ID_VENDOR_FROM_DATABASE=Silicon Engineering + +pci:v00001178* + ID_VENDOR_FROM_DATABASE=Alfa, Inc. + +pci:v00001178d0000AFA1* + ID_MODEL_FROM_DATABASE=Fast Ethernet Adapter + +pci:v00001179* + ID_VENDOR_FROM_DATABASE=Toshiba America Info Systems + +pci:v00001179d00000102* + ID_MODEL_FROM_DATABASE=Extended IDE Controller + +pci:v00001179d00000103* + ID_MODEL_FROM_DATABASE=EX-IDE Type-B + +pci:v00001179d00000404* + ID_MODEL_FROM_DATABASE=DVD Decoder card + +pci:v00001179d00000406* + ID_MODEL_FROM_DATABASE=Tecra Video Capture device + +pci:v00001179d00000407* + ID_MODEL_FROM_DATABASE=DVD Decoder card (Version 2) + +pci:v00001179d00000601* + ID_MODEL_FROM_DATABASE=CPU to PCI bridge + +pci:v00001179d00000601sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Satellite Pro + +pci:v00001179d00000602* + ID_MODEL_FROM_DATABASE=PCI to ISA bridge + +pci:v00001179d00000603* + ID_MODEL_FROM_DATABASE=ToPIC95 PCI to CardBus Bridge for Notebooks + +pci:v00001179d00000604* + ID_MODEL_FROM_DATABASE=PCI-Docking Host bridge + +pci:v00001179d0000060A* + ID_MODEL_FROM_DATABASE=ToPIC95 + +pci:v00001179d0000060Asv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Satellite Pro + +pci:v00001179d0000060F* + ID_MODEL_FROM_DATABASE=ToPIC97 + +pci:v00001179d0000060Fsv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Satellite 4010 + +pci:v00001179d00000617* + ID_MODEL_FROM_DATABASE=ToPIC100 PCI to Cardbus Bridge with ZV Support + +pci:v00001179d00000618* + ID_MODEL_FROM_DATABASE=CPU to PCI and PCI to ISA bridge + +pci:v00001179d00000701* + ID_MODEL_FROM_DATABASE=FIR Port Type-O + +pci:v00001179d00000804* + ID_MODEL_FROM_DATABASE=TC6371AF SmartMedia Controller + +pci:v00001179d00000805* + ID_MODEL_FROM_DATABASE=SD TypA Controller + +pci:v00001179d00000D01* + ID_MODEL_FROM_DATABASE=FIR Port Type-DO + +pci:v00001179d00000D01sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=FIR Port Type-DO + +pci:v0000117A* + ID_VENDOR_FROM_DATABASE=A-Trend Technology + +pci:v0000117B* + ID_VENDOR_FROM_DATABASE=L G Electronics, Inc. + +pci:v0000117C* + ID_VENDOR_FROM_DATABASE=ATTO Technology, Inc. + +pci:v0000117Cd0000002C* + ID_MODEL_FROM_DATABASE=SAS RAID Adapter + +pci:v0000117Cd00000030* + ID_MODEL_FROM_DATABASE=Ultra320 SCSI Host Adapter + +pci:v0000117Cd00000030sv0000117Csd00008013* + ID_MODEL_FROM_DATABASE=ExpressPCI UL4D + +pci:v0000117Cd00000030sv0000117Csd00008014* + ID_MODEL_FROM_DATABASE=ExpressPCI UL4S + +pci:v0000117Cd00000030sv0000117Csd00008027* + ID_MODEL_FROM_DATABASE=ExpressPCI UL5D + +pci:v0000117Cd00000030sv0000117Csd0000802F* + ID_MODEL_FROM_DATABASE=ExpressPCI UL5D Low Profile + +pci:v0000117Cd00000033* + ID_MODEL_FROM_DATABASE=SAS Adapter + +pci:v0000117D* + ID_VENDOR_FROM_DATABASE=Becton & Dickinson + +pci:v0000117E* + ID_VENDOR_FROM_DATABASE=T/R Systems + +pci:v0000117F* + ID_VENDOR_FROM_DATABASE=Integrated Circuit Systems + +pci:v00001180* + ID_VENDOR_FROM_DATABASE=Ricoh Co Ltd + +pci:v00001180d00000465* + ID_MODEL_FROM_DATABASE=RL5c465 + +pci:v00001180d00000466* + ID_MODEL_FROM_DATABASE=RL5c466 + +pci:v00001180d00000475* + ID_MODEL_FROM_DATABASE=RL5c475 + +pci:v00001180d00000475sv0000144Dsd0000C006* + ID_MODEL_FROM_DATABASE=vpr Matrix 170B4 CardBus bridge + +pci:v00001180d00000476* + ID_MODEL_FROM_DATABASE=RL5c476 II + +pci:v00001180d00000476sv00001014sd00000185* + ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series + +pci:v00001180d00000476sv00001014sd0000056C* + ID_MODEL_FROM_DATABASE=ThinkPad Z60t + +pci:v00001180d00000476sv00001028sd0000014F* + ID_MODEL_FROM_DATABASE=Latitude X300 laptop + +pci:v00001180d00000476sv00001028sd00000188* + ID_MODEL_FROM_DATABASE=Inspiron 6000 laptop + +pci:v00001180d00000476sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00001180d00000476sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00001180d00000476sv00001043sd00001237* + ID_MODEL_FROM_DATABASE=A6J-Q008 + +pci:v00001180d00000476sv00001043sd00001967* + ID_MODEL_FROM_DATABASE=V6800V + +pci:v00001180d00000476sv00001043sd00001987* + ID_MODEL_FROM_DATABASE=Asus A4K and Z81K notebooks, possibly others ( mid-2005 machines ) + +pci:v00001180d00000476sv0000104Dsd000080DF* + ID_MODEL_FROM_DATABASE=Vaio PCG-FX403 + +pci:v00001180d00000476sv0000104Dsd000080E7* + ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + +pci:v00001180d00000476sv0000104Dsd0000814E* + ID_MODEL_FROM_DATABASE=VAIO GRZ390Z + +pci:v00001180d00000476sv000010F7sd00008338* + ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop + +pci:v00001180d00000476sv0000144Dsd0000C005* + ID_MODEL_FROM_DATABASE=X10 Laptop + +pci:v00001180d00000476sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30/P35 notebook + +pci:v00001180d00000476sv000014EFsd00000220* + ID_MODEL_FROM_DATABASE=PCD-RP-220S + +pci:v00001180d00000476sv000017AAsd0000201C* + ID_MODEL_FROM_DATABASE=ThinkPad X60s + +pci:v00001180d00000476sv000017AAsd000020C4* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00001180d00000477* + ID_MODEL_FROM_DATABASE=RL5c477 + +pci:v00001180d00000478* + ID_MODEL_FROM_DATABASE=RL5c478 + +pci:v00001180d00000478sv00001014sd00000184* + ID_MODEL_FROM_DATABASE=ThinkPad A30p + +pci:v00001180d00000511* + ID_MODEL_FROM_DATABASE=R5C511 + +pci:v00001180d00000522* + ID_MODEL_FROM_DATABASE=R5C522 IEEE 1394 Controller + +pci:v00001180d00000522sv00001014sd000001CF* + ID_MODEL_FROM_DATABASE=ThinkPad A30p + +pci:v00001180d00000522sv00001043sd00001967* + ID_MODEL_FROM_DATABASE=V6800V + +pci:v00001180d00000551* + ID_MODEL_FROM_DATABASE=R5C551 IEEE 1394 Controller + +pci:v00001180d00000551sv0000144Dsd0000C006* + ID_MODEL_FROM_DATABASE=vpr Matrix 170B4 + +pci:v00001180d00000552* + ID_MODEL_FROM_DATABASE=R5C552 IEEE 1394 Controller + +pci:v00001180d00000552sv00001014sd00000511* + ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series + +pci:v00001180d00000552sv00001028sd0000014F* + ID_MODEL_FROM_DATABASE=Latitude X300 laptop + +pci:v00001180d00000552sv00001028sd00000188* + ID_MODEL_FROM_DATABASE=Inspiron 6000 laptop + +pci:v00001180d00000552sv00001043sd00001237* + ID_MODEL_FROM_DATABASE=A6J-Q008 + +pci:v00001180d00000552sv00001043sd00001757* + ID_MODEL_FROM_DATABASE=M2400N laptop + +pci:v00001180d00000552sv0000144Dsd0000C005* + ID_MODEL_FROM_DATABASE=X10 Laptop + +pci:v00001180d00000552sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30/P35 notebook + +pci:v00001180d00000552sv000017AAsd0000201E* + ID_MODEL_FROM_DATABASE=ThinkPad X60s + +pci:v00001180d00000554* + ID_MODEL_FROM_DATABASE=R5C554 + +pci:v00001180d00000575* + ID_MODEL_FROM_DATABASE=R5C575 SD Bus Host Adapter + +pci:v00001180d00000576* + ID_MODEL_FROM_DATABASE=R5C576 SD Bus Host Adapter + +pci:v00001180d00000592* + ID_MODEL_FROM_DATABASE=R5C592 Memory Stick Bus Host Adapter + +pci:v00001180d00000592sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v00001180d00000592sv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v00001180d00000592sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00001180d00000592sv0000103Csd000030B5* + ID_MODEL_FROM_DATABASE=Presario V3242AU + +pci:v00001180d00000592sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v00001180d00000592sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00001180d00000592sv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v00001180d00000592sv00001043sd00001237* + ID_MODEL_FROM_DATABASE=A6J-Q008 + +pci:v00001180d00000592sv00001043sd00001967* + ID_MODEL_FROM_DATABASE=V6800V + +pci:v00001180d00000592sv0000144Dsd0000C018* + ID_MODEL_FROM_DATABASE=X20 IV + +pci:v00001180d00000592sv000017AAsd000020CA* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00001180d00000811* + ID_MODEL_FROM_DATABASE=R5C811 + +pci:v00001180d00000822* + ID_MODEL_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter + +pci:v00001180d00000822sv00001014sd00000556* + ID_MODEL_FROM_DATABASE=ThinkPad X60s / Z60t + +pci:v00001180d00000822sv00001014sd00000598* + ID_MODEL_FROM_DATABASE=ThinkPad Z60m + +pci:v00001180d00000822sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v00001180d00000822sv00001028sd00000188* + ID_MODEL_FROM_DATABASE=Inspiron 6000 laptop + +pci:v00001180d00000822sv00001028sd000001A2* + ID_MODEL_FROM_DATABASE=Inspiron 9200 + +pci:v00001180d00000822sv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v00001180d00000822sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00001180d00000822sv0000103Csd000003B5* + ID_MODEL_FROM_DATABASE=Presario V3242AU + +pci:v00001180d00000822sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v00001180d00000822sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00001180d00000822sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00001180d00000822sv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v00001180d00000822sv00001043sd00001237* + ID_MODEL_FROM_DATABASE=A6J-Q008 + +pci:v00001180d00000822sv00001043sd00001967* + ID_MODEL_FROM_DATABASE=ASUS V6800V + +pci:v00001180d00000822sv000010F7sd00008338* + ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop + +pci:v00001180d00000822sv0000144Dsd0000C018* + ID_MODEL_FROM_DATABASE=X20 IV + +pci:v00001180d00000822sv000017AAsd0000201D* + ID_MODEL_FROM_DATABASE=ThinkPad X60s + +pci:v00001180d00000822sv000017AAsd000020C7* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00001180d00000822sv000017AAsd000020C8* + ID_MODEL_FROM_DATABASE=ThinkPad W500 + +pci:v00001180d00000832* + ID_MODEL_FROM_DATABASE=R5C832 IEEE 1394 Controller + +pci:v00001180d00000832sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v00001180d00000832sv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v00001180d00000832sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00001180d00000832sv0000103Csd000030B5* + ID_MODEL_FROM_DATABASE=Presario V3242AU + +pci:v00001180d00000832sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v00001180d00000832sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00001180d00000832sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00001180d00000832sv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v00001180d00000841* + ID_MODEL_FROM_DATABASE=R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394 + +pci:v00001180d00000843* + ID_MODEL_FROM_DATABASE=R5C843 MMC Host Controller + +pci:v00001180d00000843sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v00001180d00000843sv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v00001180d00000843sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00001180d00000843sv00001028sd000001F5* + ID_MODEL_FROM_DATABASE=Dell Inspiron 1501 + +pci:v00001180d00000843sv00001028sd0000024F* + ID_MODEL_FROM_DATABASE=Dell Latitude e6500 + +pci:v00001180d00000843sv0000103Csd000003B5* + ID_MODEL_FROM_DATABASE=Presario V3242AU + +pci:v00001180d00000843sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v00001180d00000843sv00001183sd00000843* + ID_MODEL_FROM_DATABASE=Alienware Aurora m9700 + +pci:v00001180d00000852* + ID_MODEL_FROM_DATABASE=xD-Picture Card Controller + +pci:v00001180d00000852sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v00001180d00000852sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00001180d00000852sv0000103Csd000030B5* + ID_MODEL_FROM_DATABASE=Presario V3242AU + +pci:v00001180d00000852sv0000103Csd000030B7* + ID_MODEL_FROM_DATABASE=Presario V6133CL + +pci:v00001180d00000852sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00001180d00000852sv0000103Csd000030CF* + ID_MODEL_FROM_DATABASE=Pavilion dv9668eg Laptop + +pci:v00001180d00000852sv00001043sd00001967* + ID_MODEL_FROM_DATABASE=V6800V + +pci:v00001180d00000852sv00001180sd00000852* + ID_MODEL_FROM_DATABASE=Pavilion 2410us + +pci:v00001180d00000852sv00001324sd000010CF* + ID_MODEL_FROM_DATABASE=P7120 + +pci:v00001180d0000E230* + ID_MODEL_FROM_DATABASE=R5U2xx (R5U230 / R5U231 / R5U241) [Memory Stick Host Controller] + +pci:v00001180d0000E476* + ID_MODEL_FROM_DATABASE=CardBus bridge + +pci:v00001180d0000E476sv00001028sd0000040A* + ID_MODEL_FROM_DATABASE=Latitude E6410 + +pci:v00001180d0000E476sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00001180d0000E822* + ID_MODEL_FROM_DATABASE=MMC/SD Host Controller + +pci:v00001180d0000E822sv00001028sd0000040A* + ID_MODEL_FROM_DATABASE=Latitude E6410 + +pci:v00001180d0000E822sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00001180d0000E823* + ID_MODEL_FROM_DATABASE=PCIe SDXC/MMC Host Controller + +pci:v00001180d0000E832* + ID_MODEL_FROM_DATABASE=R5C832 PCIe IEEE 1394 Controller + +pci:v00001180d0000E832sv00001028sd0000040A* + ID_MODEL_FROM_DATABASE=Latitude E6410 + +pci:v00001180d0000E832sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00001180d0000E852* + ID_MODEL_FROM_DATABASE=PCIe xD-Picture Card Controller + +pci:v00001181* + ID_VENDOR_FROM_DATABASE=Telmatics International + +pci:v00001183* + ID_VENDOR_FROM_DATABASE=Fujikura Ltd + +pci:v00001184* + ID_VENDOR_FROM_DATABASE=Forks Inc + +pci:v00001185* + ID_VENDOR_FROM_DATABASE=Dataworld International Ltd + +pci:v00001186* + ID_VENDOR_FROM_DATABASE=D-Link System Inc + +pci:v00001186d00001002* + ID_MODEL_FROM_DATABASE=DL10050 Sundance Ethernet + +pci:v00001186d00001002sv00001186sd00001002* + ID_MODEL_FROM_DATABASE=DFE-550TX/FX + +pci:v00001186d00001002sv00001186sd00001012* + ID_MODEL_FROM_DATABASE=DFE-580TX + +pci:v00001186d00001025* + ID_MODEL_FROM_DATABASE=AirPlus Xtreme G DWL-G650 Adapter + +pci:v00001186d00001026* + ID_MODEL_FROM_DATABASE=AirXpert DWL-AG650 Wireless Cardbus Adapter + +pci:v00001186d00001043* + ID_MODEL_FROM_DATABASE=AirXpert DWL-AG650 Wireless Cardbus Adapter + +pci:v00001186d00001300* + ID_MODEL_FROM_DATABASE=RTL8139 Ethernet + +pci:v00001186d00001300sv00001186sd00001300* + ID_MODEL_FROM_DATABASE=DFE-538TX 10/100 Ethernet Adapter + +pci:v00001186d00001300sv00001186sd00001301* + ID_MODEL_FROM_DATABASE=DFE-530TX+ 10/100 Ethernet Adapter + +pci:v00001186d00001300sv00001186sd00001303* + ID_MODEL_FROM_DATABASE=DFE-528TX 10/100 Fast Ethernet PCI Adapter + +pci:v00001186d00001340* + ID_MODEL_FROM_DATABASE=DFE-690TXD CardBus PC Card + +pci:v00001186d00001540* + ID_MODEL_FROM_DATABASE=DFE-680TX + +pci:v00001186d00001541* + ID_MODEL_FROM_DATABASE=DFE-680TXD CardBus PC Card + +pci:v00001186d00001561* + ID_MODEL_FROM_DATABASE=DRP-32TXD Cardbus PC Card + +pci:v00001186d00003300* + ID_MODEL_FROM_DATABASE=DWL-510 / DWL-610 802.11b [Realtek RTL8180L] + +pci:v00001186d00003300sv00001186sd00003300* + ID_MODEL_FROM_DATABASE=DWL-610 Wireless Cardbus Adapter + +pci:v00001186d00003300sv00001186sd00003301* + ID_MODEL_FROM_DATABASE=DWL-510 Wireless PCI Adapter + +pci:v00001186d00003A10* + ID_MODEL_FROM_DATABASE=AirXpert DWL-AG650 Wireless Cardbus Adapter(rev.B) + +pci:v00001186d00003A11* + ID_MODEL_FROM_DATABASE=AirXpert DWL-AG520 Wireless PCI Adapter(rev.B) + +pci:v00001186d00004000* + ID_MODEL_FROM_DATABASE=DL2000-based Gigabit Ethernet + +pci:v00001186d00004001* + ID_MODEL_FROM_DATABASE=DGE-550SX PCI-X Gigabit Ethernet Adapter + +pci:v00001186d00004300* + ID_MODEL_FROM_DATABASE=DGE-528T Gigabit Ethernet Adapter + +pci:v00001186d00004300sv00001186sd00004B10* + ID_MODEL_FROM_DATABASE=DGE-560T PCI Express (x1) Gigabit Ethernet Adapter + +pci:v00001186d00004302* + ID_MODEL_FROM_DATABASE=DGE-530T Gigabit Ethernet Adapter (rev.C1) [Realtek RTL8169] + +pci:v00001186d00004B00* + ID_MODEL_FROM_DATABASE=DGE-560T PCI Express Gigabit Ethernet Adapter + +pci:v00001186d00004B01* + ID_MODEL_FROM_DATABASE=DGE-530T Gigabit Ethernet Adapter (rev 11) + +pci:v00001186d00004B02* + ID_MODEL_FROM_DATABASE=DGE-560SX PCI Express Gigabit Ethernet Adapter + +pci:v00001186d00004B03* + ID_MODEL_FROM_DATABASE=DGE-550T Gigabit Ethernet Adapter V.B1 + +pci:v00001186d00004C00* + ID_MODEL_FROM_DATABASE=Gigabit Ethernet Adapter + +pci:v00001186d00004C00sv00001186sd00004C00* + ID_MODEL_FROM_DATABASE=DGE-530T Gigabit Ethernet Adapter + +pci:v00001186d00008400* + ID_MODEL_FROM_DATABASE=D-Link DWL-650+ CardBus PC Card + +pci:v00001187* + ID_VENDOR_FROM_DATABASE=Advanced Technology Laboratories, Inc. + +pci:v00001188* + ID_VENDOR_FROM_DATABASE=Shima Seiki Manufacturing Ltd. + +pci:v00001189* + ID_VENDOR_FROM_DATABASE=Matsushita Electronics Co Ltd + +pci:v0000118A* + ID_VENDOR_FROM_DATABASE=Hilevel Technology + +pci:v0000118B* + ID_VENDOR_FROM_DATABASE=Hypertec Pty Limited + +pci:v0000118C* + ID_VENDOR_FROM_DATABASE=Corollary, Inc + +pci:v0000118Cd00000014* + ID_MODEL_FROM_DATABASE=PCIB [C-bus II to PCI bus host bridge chip] + +pci:v0000118Cd00001117* + ID_MODEL_FROM_DATABASE=Intel 8-way XEON Profusion Chipset [Cache Coherency Filter] + +pci:v0000118D* + ID_VENDOR_FROM_DATABASE=BitFlow Inc + +pci:v0000118Dd00000001* + ID_MODEL_FROM_DATABASE=Raptor-PCI framegrabber + +pci:v0000118Dd00000012* + ID_MODEL_FROM_DATABASE=Model 12 Road Runner Frame Grabber + +pci:v0000118Dd00000014* + ID_MODEL_FROM_DATABASE=Model 14 Road Runner Frame Grabber + +pci:v0000118Dd00000024* + ID_MODEL_FROM_DATABASE=Model 24 Road Runner Frame Grabber + +pci:v0000118Dd00000044* + ID_MODEL_FROM_DATABASE=Model 44 Road Runner Frame Grabber + +pci:v0000118Dd00000112* + ID_MODEL_FROM_DATABASE=Model 12 Road Runner Frame Grabber + +pci:v0000118Dd00000114* + ID_MODEL_FROM_DATABASE=Model 14 Road Runner Frame Grabber + +pci:v0000118Dd00000124* + ID_MODEL_FROM_DATABASE=Model 24 Road Runner Frame Grabber + +pci:v0000118Dd00000144* + ID_MODEL_FROM_DATABASE=Model 44 Road Runner Frame Grabber + +pci:v0000118Dd00000212* + ID_MODEL_FROM_DATABASE=Model 12 Road Runner Frame Grabber + +pci:v0000118Dd00000214* + ID_MODEL_FROM_DATABASE=Model 14 Road Runner Frame Grabber + +pci:v0000118Dd00000224* + ID_MODEL_FROM_DATABASE=Model 24 Road Runner Frame Grabber + +pci:v0000118Dd00000244* + ID_MODEL_FROM_DATABASE=Model 44 Road Runner Frame Grabber + +pci:v0000118Dd00000312* + ID_MODEL_FROM_DATABASE=Model 12 Road Runner Frame Grabber + +pci:v0000118Dd00000314* + ID_MODEL_FROM_DATABASE=Model 14 Road Runner Frame Grabber + +pci:v0000118Dd00000324* + ID_MODEL_FROM_DATABASE=Model 24 Road Runner Frame Grabber + +pci:v0000118Dd00000344* + ID_MODEL_FROM_DATABASE=Model 44 Road Runner Frame Grabber + +pci:v0000118E* + ID_VENDOR_FROM_DATABASE=Hermstedt GmbH + +pci:v0000118F* + ID_VENDOR_FROM_DATABASE=Green Logic + +pci:v00001190* + ID_VENDOR_FROM_DATABASE=Tripace + +pci:v00001190d0000C731* + ID_MODEL_FROM_DATABASE=TP-910/920/940 PCI Ultra(Wide) SCSI Adapter + +pci:v00001191* + ID_VENDOR_FROM_DATABASE=Artop Electronic Corp + +pci:v00001191d00000003* + ID_MODEL_FROM_DATABASE=SCSI Cache Host Adapter + +pci:v00001191d00000004* + ID_MODEL_FROM_DATABASE=ATP8400 + +pci:v00001191d00000005* + ID_MODEL_FROM_DATABASE=ATP850UF + +pci:v00001191d00000006* + ID_MODEL_FROM_DATABASE=ATP860 NO-BIOS + +pci:v00001191d00000007* + ID_MODEL_FROM_DATABASE=ATP860 + +pci:v00001191d00000008* + ID_MODEL_FROM_DATABASE=ATP865 NO-ROM + +pci:v00001191d00000009* + ID_MODEL_FROM_DATABASE=ATP865 + +pci:v00001191d0000000A* + ID_MODEL_FROM_DATABASE=ATP867-A + +pci:v00001191d0000000B* + ID_MODEL_FROM_DATABASE=ATP867-B + +pci:v00001191d0000000D* + ID_MODEL_FROM_DATABASE=ATP8620 + +pci:v00001191d0000000E* + ID_MODEL_FROM_DATABASE=ATP8620 + +pci:v00001191d00008002* + ID_MODEL_FROM_DATABASE=AEC6710 SCSI-2 Host Adapter + +pci:v00001191d00008010* + ID_MODEL_FROM_DATABASE=AEC6712UW SCSI + +pci:v00001191d00008020* + ID_MODEL_FROM_DATABASE=AEC6712U SCSI + +pci:v00001191d00008030* + ID_MODEL_FROM_DATABASE=AEC6712S SCSI + +pci:v00001191d00008040* + ID_MODEL_FROM_DATABASE=AEC6712D SCSI + +pci:v00001191d00008050* + ID_MODEL_FROM_DATABASE=AEC6712SUW SCSI + +pci:v00001191d00008060* + ID_MODEL_FROM_DATABASE=AEC6712 SCSI + +pci:v00001191d00008080* + ID_MODEL_FROM_DATABASE=AEC67160 SCSI + +pci:v00001191d00008081* + ID_MODEL_FROM_DATABASE=AEC67160S SCSI + +pci:v00001191d0000808A* + ID_MODEL_FROM_DATABASE=AEC67162 2-ch. LVD SCSI + +pci:v00001192* + ID_VENDOR_FROM_DATABASE=Densan Company Ltd + +pci:v00001193* + ID_VENDOR_FROM_DATABASE=Zeitnet Inc. + +pci:v00001193d00000001* + ID_MODEL_FROM_DATABASE=1221 + +pci:v00001193d00000002* + ID_MODEL_FROM_DATABASE=1225 + +pci:v00001194* + ID_VENDOR_FROM_DATABASE=Toucan Technology + +pci:v00001195* + ID_VENDOR_FROM_DATABASE=Ratoc System Inc + +pci:v00001196* + ID_VENDOR_FROM_DATABASE=Hytec Electronics Ltd + +pci:v00001197* + ID_VENDOR_FROM_DATABASE=Gage Applied Sciences, Inc. + +pci:v00001197d0000010C* + ID_MODEL_FROM_DATABASE=CompuScope 82G 8bit 2GS/s Analog Input Card + +pci:v00001198* + ID_VENDOR_FROM_DATABASE=Lambda Systems Inc + +pci:v00001199* + ID_VENDOR_FROM_DATABASE=Attachmate Corporation + +pci:v00001199d00000101* + ID_MODEL_FROM_DATABASE=Advanced ISCA/PCI Adapter + +pci:v00001199d00006832* + ID_MODEL_FROM_DATABASE=Sierra Wireless MC8780 Device + +pci:v0000119A* + ID_VENDOR_FROM_DATABASE=Mind Share, Inc. + +pci:v0000119B* + ID_VENDOR_FROM_DATABASE=Omega Micro Inc. + +pci:v0000119Bd00001221* + ID_MODEL_FROM_DATABASE=82C092G + +pci:v0000119C* + ID_VENDOR_FROM_DATABASE=Information Technology Inst. + +pci:v0000119D* + ID_VENDOR_FROM_DATABASE=Bug, Inc. Sapporo Japan + +pci:v0000119E* + ID_VENDOR_FROM_DATABASE=Fujitsu Microelectronics Ltd. + +pci:v0000119Ed00000001* + ID_MODEL_FROM_DATABASE=FireStream 155 + +pci:v0000119Ed00000003* + ID_MODEL_FROM_DATABASE=FireStream 50 + +pci:v0000119F* + ID_VENDOR_FROM_DATABASE=Bull HN Information Systems + +pci:v000011A0* + ID_VENDOR_FROM_DATABASE=Convex Computer Corporation + +pci:v000011A1* + ID_VENDOR_FROM_DATABASE=Hamamatsu Photonics K.K. + +pci:v000011A2* + ID_VENDOR_FROM_DATABASE=Sierra Research and Technology + +pci:v000011A3* + ID_VENDOR_FROM_DATABASE=Deuretzbacher GmbH & Co. Eng. KG + +pci:v000011A4* + ID_VENDOR_FROM_DATABASE=Barco Graphics NV + +pci:v000011A5* + ID_VENDOR_FROM_DATABASE=Microunity Systems Eng. Inc + +pci:v000011A6* + ID_VENDOR_FROM_DATABASE=Pure Data Ltd. + +pci:v000011A7* + ID_VENDOR_FROM_DATABASE=Power Computing Corp. + +pci:v000011A8* + ID_VENDOR_FROM_DATABASE=Systech Corp. + +pci:v000011A9* + ID_VENDOR_FROM_DATABASE=InnoSys Inc. + +pci:v000011A9d00004240* + ID_MODEL_FROM_DATABASE=AMCC S933Q Intelligent Serial Card + +pci:v000011AA* + ID_VENDOR_FROM_DATABASE=Actel + +pci:v000011AB* + ID_VENDOR_FROM_DATABASE=Marvell Technology Group Ltd. + +pci:v000011ABd00000146* + ID_MODEL_FROM_DATABASE=GT-64010/64010A System Controller + +pci:v000011ABd00000F53* + ID_MODEL_FROM_DATABASE=88E6318 Link Street network controller + +pci:v000011ABd000011AB* + ID_MODEL_FROM_DATABASE=MV88SE614x SATA II PCI-E controller + +pci:v000011ABd0000138F* + ID_MODEL_FROM_DATABASE=W8300 802.11 Adapter (rev 07) + +pci:v000011ABd00001FA6* + ID_MODEL_FROM_DATABASE=Marvell W8300 802.11 Adapter + +pci:v000011ABd00001FA6sv00001186sd00003B08* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.A1) + +pci:v000011ABd00001FA7* + ID_MODEL_FROM_DATABASE=88W8310 and 88W8000G [Libertas] 802.11g client chipset + +pci:v000011ABd00001FAA* + ID_MODEL_FROM_DATABASE=88w8335 [Libertas] 802.11b/g Wireless + +pci:v000011ABd00001FAAsv00001385sd00004E00* + ID_MODEL_FROM_DATABASE=WG511v2 54 Mbps Wireless PC Card + +pci:v000011ABd00001FAAsv00001385sd00006B00* + ID_MODEL_FROM_DATABASE=WG311v3 802.11g Wireless PCI Adapter + +pci:v000011ABd00001FAAsv00001737sd00000040* + ID_MODEL_FROM_DATABASE=WPC54G v5 802.11g Wireless-G Notebook Adapter + +pci:v000011ABd00002211* + ID_MODEL_FROM_DATABASE=88SB2211 PCI Express to PCI Bridge + +pci:v000011ABd00002A01* + ID_MODEL_FROM_DATABASE=88W8335 [Libertas] 802.11b/g Wireless + +pci:v000011ABd00002A02* + ID_MODEL_FROM_DATABASE=88W8361 [TopDog] 802.11n Wireless + +pci:v000011ABd00002A02sv000007D1sd00003B02* + ID_MODEL_FROM_DATABASE=DIR-615 rev. A1 Mini PCI Wireless Module + +pci:v000011ABd00002A02sv00001385sd00007C00* + ID_MODEL_FROM_DATABASE=WN511T RangeMax Next 300 Mbps Wireless PC Card + +pci:v000011ABd00002A02sv00001385sd00007C01* + ID_MODEL_FROM_DATABASE=WN511T RangeMax Next 300 Mbps Wireless Notebook Adapter + +pci:v000011ABd00002A02sv00001385sd00007E00* + ID_MODEL_FROM_DATABASE=WN311T RangeMax Next 300 Mbps Wireless PCI Adapter + +pci:v000011ABd00002A02sv00001799sd0000801B* + ID_MODEL_FROM_DATABASE=F5D8011 v2 802.11n N1 Wireless Notebook Card + +pci:v000011ABd00002A08* + ID_MODEL_FROM_DATABASE=88W8362e [TopDog] 802.11a/b/g/n Wireless + +pci:v000011ABd00002A0A* + ID_MODEL_FROM_DATABASE=88W8363 [TopDog] 802.11n Wireless + +pci:v000011ABd00002A0C* + ID_MODEL_FROM_DATABASE=88W8363 [TopDog] 802.11n Wireless + +pci:v000011ABd00002A24* + ID_MODEL_FROM_DATABASE=88W8363 [TopDog] 802.11n Wireless + +pci:v000011ABd00002A2B* + ID_MODEL_FROM_DATABASE=88W8687 [TopDog] 802.11b/g Wireless + +pci:v000011ABd00002A30* + ID_MODEL_FROM_DATABASE=88W8687 [TopDog] 802.11b/g Wireless + +pci:v000011ABd00002A40* + ID_MODEL_FROM_DATABASE=88W8366 [TopDog] 802.11n Wireless + +pci:v000011ABd00002A43* + ID_MODEL_FROM_DATABASE=88W8366 [TopDog] 802.11n Wireless + +pci:v000011ABd00004101* + ID_MODEL_FROM_DATABASE=OLPC Cafe Controller Secure Digital Controller + +pci:v000011ABd00004320* + ID_MODEL_FROM_DATABASE=88E8001 Gigabit Ethernet Controller + +pci:v000011ABd00004320sv00001019sd00000F38* + ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (ECS) + +pci:v000011ABd00004320sv00001019sd00008001* + ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (ECS) + +pci:v000011ABd00004320sv00001043sd0000173C* + ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Asus) + +pci:v000011ABd00004320sv00001043sd0000811A* + ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Asus) + +pci:v000011ABd00004320sv0000105Bsd00000C19* + ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Foxconn) + +pci:v000011ABd00004320sv000010B8sd0000B452* + ID_MODEL_FROM_DATABASE=EZ Card 1000 (SMC9452TXV.2) + +pci:v000011ABd00004320sv000011ABsd00000121* + ID_MODEL_FROM_DATABASE=Marvell RDK-8001 + +pci:v000011ABd00004320sv000011ABsd00000321* + ID_MODEL_FROM_DATABASE=Marvell RDK-8003 + +pci:v000011ABd00004320sv000011ABsd00001021* + ID_MODEL_FROM_DATABASE=Marvell RDK-8010 + +pci:v000011ABd00004320sv000011ABsd00004320* + ID_MODEL_FROM_DATABASE=Marvell Yukon Gigabit Ethernet 10/100/1000Baset-T Constroller (Asus) + +pci:v000011ABd00004320sv000011ABsd00005021* + ID_MODEL_FROM_DATABASE=Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit) + +pci:v000011ABd00004320sv000011ABsd00009521* + ID_MODEL_FROM_DATABASE=Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit) + +pci:v000011ABd00004320sv00001458sd0000E000* + ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte) + +pci:v000011ABd00004320sv0000147Bsd00001406* + ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Abit) + +pci:v000011ABd00004320sv000015D4sd00000047* + ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Iwill) + +pci:v000011ABd00004320sv00001695sd00009025* + ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Epox) + +pci:v000011ABd00004320sv000017F2sd00001C03* + ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Albatron) + +pci:v000011ABd00004320sv0000270Fsd00002803* + ID_MODEL_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Chaintech) + +pci:v000011ABd00004340* + ID_MODEL_FROM_DATABASE=88E8021 PCI-X IPMI Gigabit Ethernet Controller + +pci:v000011ABd00004341* + ID_MODEL_FROM_DATABASE=88E8022 PCI-X IPMI Gigabit Ethernet Controller + +pci:v000011ABd00004342* + ID_MODEL_FROM_DATABASE=88E8061 PCI-E IPMI Gigabit Ethernet Controller + +pci:v000011ABd00004343* + ID_MODEL_FROM_DATABASE=88E8062 PCI-E IPMI Gigabit Ethernet Controller + +pci:v000011ABd00004344* + ID_MODEL_FROM_DATABASE=88E8021 PCI-X IPMI Gigabit Ethernet Controller + +pci:v000011ABd00004345* + ID_MODEL_FROM_DATABASE=88E8022 PCI-X IPMI Gigabit Ethernet Controller + +pci:v000011ABd00004346* + ID_MODEL_FROM_DATABASE=88E8061 PCI-E IPMI Gigabit Ethernet Controller + +pci:v000011ABd00004347* + ID_MODEL_FROM_DATABASE=88E8062 PCI-E IPMI Gigabit Ethernet Controller + +pci:v000011ABd00004347sv00004C53sd000010D0* + ID_MODEL_FROM_DATABASE=Telum ASLP10 PrAMC Gigabit Ethernet + +pci:v000011ABd00004350* + ID_MODEL_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller + +pci:v000011ABd00004350sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (Toshiba) + +pci:v000011ABd00004350sv000011ABsd00003521* + ID_MODEL_FROM_DATABASE=Marvell RDK-8035 + +pci:v000011ABd00004350sv00001854sd0000000D* + ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004350sv00001854sd0000000E* + ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004350sv00001854sd0000000F* + ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004350sv00001854sd00000011* + ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004350sv00001854sd00000012* + ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004350sv00001854sd00000016* + ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004350sv00001854sd00000017* + ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004350sv00001854sd00000018* + ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004350sv00001854sd00000019* + ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004350sv00001854sd0000001C* + ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004350sv00001854sd0000001E* + ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004350sv00001854sd00000020* + ID_MODEL_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004351* + ID_MODEL_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller + +pci:v000011ABd00004351sv0000107Bsd00004009* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Wistron) + +pci:v000011ABd00004351sv000010F7sd00008338* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Panasonic) + +pci:v000011ABd00004351sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Toshiba) + +pci:v000011ABd00004351sv00001179sd0000FF00* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Compal) + +pci:v000011ABd00004351sv00001179sd0000FF10* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Inventec) + +pci:v000011ABd00004351sv000011ABsd00003621* + ID_MODEL_FROM_DATABASE=Marvell RDK-8036 + +pci:v000011ABd00004351sv000013D1sd0000AC12* + ID_MODEL_FROM_DATABASE=Abocom EFE3K - 10/100 Ethernet Expresscard + +pci:v000011ABd00004351sv0000161Fsd0000203D* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Arima) + +pci:v000011ABd00004351sv00001854sd0000000D* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004351sv00001854sd0000000E* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004351sv00001854sd0000000F* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004351sv00001854sd00000011* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004351sv00001854sd00000012* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004351sv00001854sd00000016* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004351sv00001854sd00000017* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004351sv00001854sd00000018* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004351sv00001854sd00000019* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004351sv00001854sd0000001C* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004351sv00001854sd0000001E* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004351sv00001854sd00000020* + ID_MODEL_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) + +pci:v000011ABd00004352* + ID_MODEL_FROM_DATABASE=88E8038 PCI-E Fast Ethernet Controller + +pci:v000011ABd00004353* + ID_MODEL_FROM_DATABASE=88E8039 PCI-E Fast Ethernet Controller + +pci:v000011ABd00004353sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v000011ABd00004354* + ID_MODEL_FROM_DATABASE=88E8040 PCI-E Fast Ethernet Controller + +pci:v000011ABd00004354sv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v000011ABd00004355* + ID_MODEL_FROM_DATABASE=88E8040T PCI-E Fast Ethernet Controller + +pci:v000011ABd00004355sv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v000011ABd00004356* + ID_MODEL_FROM_DATABASE=88EC033 PCI-E Fast Ethernet Controller + +pci:v000011ABd00004357* + ID_MODEL_FROM_DATABASE=88E8042 PCI-E Fast Ethernet Controller + +pci:v000011ABd0000435A* + ID_MODEL_FROM_DATABASE=88E8048 PCI-E Fast Ethernet Controller + +pci:v000011ABd00004360* + ID_MODEL_FROM_DATABASE=88E8052 PCI-E ASF Gigabit Ethernet Controller + +pci:v000011ABd00004360sv00001043sd00008134* + ID_MODEL_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (Asus) + +pci:v000011ABd00004360sv0000107Bsd00004009* + ID_MODEL_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (Wistron) + +pci:v000011ABd00004360sv000011ABsd00005221* + ID_MODEL_FROM_DATABASE=Marvell RDK-8052 + +pci:v000011ABd00004360sv00001458sd0000E000* + ID_MODEL_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte) + +pci:v000011ABd00004360sv00001462sd0000052C* + ID_MODEL_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (MSI) + +pci:v000011ABd00004360sv00001849sd00008052* + ID_MODEL_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (ASRock) + +pci:v000011ABd00004360sv0000A0A0sd00000509* + ID_MODEL_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (Aopen) + +pci:v000011ABd00004361* + ID_MODEL_FROM_DATABASE=88E8050 PCI-E ASF Gigabit Ethernet Controller + +pci:v000011ABd00004361sv0000107Bsd00003015* + ID_MODEL_FROM_DATABASE=Marvell 88E8050 Gigabit Ethernet Controller (Gateway) + +pci:v000011ABd00004361sv000011ABsd00005021* + ID_MODEL_FROM_DATABASE=Marvell 88E8050 Gigabit Ethernet Controller (Intel) + +pci:v000011ABd00004361sv00008086sd00003063* + ID_MODEL_FROM_DATABASE=D925XCVLK mainboard + +pci:v000011ABd00004361sv00008086sd00003439* + ID_MODEL_FROM_DATABASE=Marvell 88E8050 Gigabit Ethernet Controller (Intel) + +pci:v000011ABd00004362* + ID_MODEL_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller + +pci:v000011ABd00004362sv0000103Csd00002A0D* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Asus) + +pci:v000011ABd00004362sv00001043sd00008142* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet controller PCIe (Asus) + +pci:v000011ABd00004362sv0000109Fsd00003197* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Trigem) + +pci:v000011ABd00004362sv000010F7sd00008338* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Panasonic) + +pci:v000011ABd00004362sv000010FDsd0000A430* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (SOYO) + +pci:v000011ABd00004362sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Toshiba) + +pci:v000011ABd00004362sv00001179sd0000FF00* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Compal) + +pci:v000011ABd00004362sv00001179sd0000FF10* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Inventec) + +pci:v000011ABd00004362sv000011ABsd00005321* + ID_MODEL_FROM_DATABASE=Marvell RDK-8053 + +pci:v000011ABd00004362sv00001297sd0000C240* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) + +pci:v000011ABd00004362sv00001297sd0000C241* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) + +pci:v000011ABd00004362sv00001297sd0000C242* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) + +pci:v000011ABd00004362sv00001297sd0000C243* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) + +pci:v000011ABd00004362sv00001297sd0000C244* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) + +pci:v000011ABd00004362sv000013D1sd0000AC11* + ID_MODEL_FROM_DATABASE=EGE5K - Giga Ethernet Expresscard + +pci:v000011ABd00004362sv00001458sd0000E000* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte) + +pci:v000011ABd00004362sv00001462sd0000058C* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (MSI) + +pci:v000011ABd00004362sv000014C0sd00000012* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Compal) + +pci:v000011ABd00004362sv00001558sd000004A0* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Clevo) + +pci:v000011ABd00004362sv000015BDsd00001003* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (DFI) + +pci:v000011ABd00004362sv0000161Fsd0000203C* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Arima) + +pci:v000011ABd00004362sv0000161Fsd0000203D* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Arima) + +pci:v000011ABd00004362sv00001695sd00009029* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Epox) + +pci:v000011ABd00004362sv000017F2sd00002C08* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Albatron) + +pci:v000011ABd00004362sv000017FFsd00000585* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Quanta) + +pci:v000011ABd00004362sv00001849sd00008053* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (ASRock) + +pci:v000011ABd00004362sv00001854sd0000000B* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) + +pci:v000011ABd00004362sv00001854sd0000000C* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) + +pci:v000011ABd00004362sv00001854sd00000010* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) + +pci:v000011ABd00004362sv00001854sd00000013* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) + +pci:v000011ABd00004362sv00001854sd00000014* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) + +pci:v000011ABd00004362sv00001854sd00000015* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) + +pci:v000011ABd00004362sv00001854sd0000001A* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) + +pci:v000011ABd00004362sv00001854sd0000001B* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) + +pci:v000011ABd00004362sv00001854sd0000001D* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) + +pci:v000011ABd00004362sv00001854sd0000001F* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) + +pci:v000011ABd00004362sv00001854sd00000021* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) + +pci:v000011ABd00004362sv00001854sd00000022* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) + +pci:v000011ABd00004362sv0000270Fsd00002801* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Chaintech) + +pci:v000011ABd00004362sv0000A0A0sd00000506* + ID_MODEL_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Aopen) + +pci:v000011ABd00004363* + ID_MODEL_FROM_DATABASE=88E8055 PCI-E Gigabit Ethernet Controller + +pci:v000011ABd00004364* + ID_MODEL_FROM_DATABASE=88E8056 PCI-E Gigabit Ethernet Controller + +pci:v000011ABd00004364sv00001043sd000081F8* + ID_MODEL_FROM_DATABASE=Motherboard + +pci:v000011ABd00004364sv000011BAsd000000BA* + ID_MODEL_FROM_DATABASE=8056 Gigabit Ethernet Controller + +pci:v000011ABd00004365* + ID_MODEL_FROM_DATABASE=88E8070 based Ethernet Controller + +pci:v000011ABd00004366* + ID_MODEL_FROM_DATABASE=88EC036 PCI-E Gigabit Ethernet Controller + +pci:v000011ABd00004367* + ID_MODEL_FROM_DATABASE=88EC032 Ethernet Controller + +pci:v000011ABd00004368* + ID_MODEL_FROM_DATABASE=88EC034 Ethernet Controller + +pci:v000011ABd00004369* + ID_MODEL_FROM_DATABASE=88EC042 Ethernet Controller + +pci:v000011ABd0000436A* + ID_MODEL_FROM_DATABASE=88E8058 PCI-E Gigabit Ethernet Controller + +pci:v000011ABd0000436Asv000011ABsd000000BA* + ID_MODEL_FROM_DATABASE=Imac 8,1 Wired Ethernet Adapter + +pci:v000011ABd0000436B* + ID_MODEL_FROM_DATABASE=88E8071 PCI-E Gigabit Ethernet Controller + +pci:v000011ABd0000436C* + ID_MODEL_FROM_DATABASE=88E8072 PCI-E Gigabit Ethernet Controller + +pci:v000011ABd0000436D* + ID_MODEL_FROM_DATABASE=88E8055 PCI-E Gigabit Ethernet Controller + +pci:v000011ABd00004370* + ID_MODEL_FROM_DATABASE=88E8075 PCI-E Gigabit Ethernet Controller + +pci:v000011ABd00004380* + ID_MODEL_FROM_DATABASE=88E8057 PCI-E Gigabit Ethernet Controller + +pci:v000011ABd00004381* + ID_MODEL_FROM_DATABASE=Yukon Optima 88E8059 [PCIe Gigabit Ethernet Controller with AVB] + +pci:v000011ABd00004611* + ID_MODEL_FROM_DATABASE=GT-64115 System Controller + +pci:v000011ABd00004620* + ID_MODEL_FROM_DATABASE=GT-64120/64120A/64121A System Controller + +pci:v000011ABd00004801* + ID_MODEL_FROM_DATABASE=GT-48001 + +pci:v000011ABd00005005* + ID_MODEL_FROM_DATABASE=Belkin F5D5005 Gigabit Desktop Network PCI Card + +pci:v000011ABd00005040* + ID_MODEL_FROM_DATABASE=MV88SX5040 4-port SATA I PCI-X Controller + +pci:v000011ABd00005041* + ID_MODEL_FROM_DATABASE=MV88SX5041 4-port SATA I PCI-X Controller + +pci:v000011ABd00005080* + ID_MODEL_FROM_DATABASE=MV88SX5080 8-port SATA I PCI-X Controller + +pci:v000011ABd00005081* + ID_MODEL_FROM_DATABASE=MV88SX5081 8-port SATA I PCI-X Controller + +pci:v000011ABd00005181* + ID_MODEL_FROM_DATABASE=88f5181 [Orion-1] ARM SoC + +pci:v000011ABd00005182* + ID_MODEL_FROM_DATABASE=88f5182 [Orion-NAS] ARM SoC + +pci:v000011ABd00005281* + ID_MODEL_FROM_DATABASE=88f5281 [Orion-2] ARM SoC + +pci:v000011ABd00006041* + ID_MODEL_FROM_DATABASE=MV88SX6041 4-port SATA II PCI-X Controller + +pci:v000011ABd00006042* + ID_MODEL_FROM_DATABASE=88SX6042 PCI-X 4-Port SATA-II + +pci:v000011ABd00006081* + ID_MODEL_FROM_DATABASE=MV88SX6081 8-port SATA II PCI-X Controller + +pci:v000011ABd00006101* + ID_MODEL_FROM_DATABASE=88SE6101/6102 single-port PATA133 interface + +pci:v000011ABd00006101sv00001043sd000082E0* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v000011ABd00006111* + ID_MODEL_FROM_DATABASE=88SE6111 1-port PATA133(IDE) and 1-port SATA II Controllers + +pci:v000011ABd00006121* + ID_MODEL_FROM_DATABASE=88SE6121 SATA II / PATA Controller + +pci:v000011ABd00006141* + ID_MODEL_FROM_DATABASE=88SE614x SATA II PCI-E controller + +pci:v000011ABd00006145* + ID_MODEL_FROM_DATABASE=88SE6145 SATA II PCI-E controller + +pci:v000011ABd00006180* + ID_MODEL_FROM_DATABASE=88F6180 [Kirkwood] ARM SoC + +pci:v000011ABd00006192* + ID_MODEL_FROM_DATABASE=88F6190/6192 [Kirkwood] ARM SoC + +pci:v000011ABd00006281* + ID_MODEL_FROM_DATABASE=88F6281 [Kirkwood] ARM SoC + +pci:v000011ABd00006381* + ID_MODEL_FROM_DATABASE=MV78xx0 [Discovery Innovation] ARM SoC + +pci:v000011ABd00006440* + ID_MODEL_FROM_DATABASE=88SE6440 SAS/SATA PCIe controller + +pci:v000011ABd00006450* + ID_MODEL_FROM_DATABASE=64560 System Controller + +pci:v000011ABd00006460* + ID_MODEL_FROM_DATABASE=MV64360/64361/64362 System Controller + +pci:v000011ABd00006480* + ID_MODEL_FROM_DATABASE=MV64460/64461/64462 System Controller + +pci:v000011ABd00006480sv00001775sd0000C200* + ID_MODEL_FROM_DATABASE=C2K CompactPCI single board computer + +pci:v000011ABd00006485* + ID_MODEL_FROM_DATABASE=MV64460/64461/64462 System Controller, Revision B + +pci:v000011ABd00007042* + ID_MODEL_FROM_DATABASE=88SX7042 PCI-e 4-port SATA-II + +pci:v000011ABd00007042sv000016B8sd0000434B* + ID_MODEL_FROM_DATABASE=Tempo SATA E4P + +pci:v000011ABd00007810* + ID_MODEL_FROM_DATABASE=MV78100 [Discovery Innovation] ARM SoC + +pci:v000011ABd00007820* + ID_MODEL_FROM_DATABASE=MV78200 [Discovery Innovation] ARM SoC + +pci:v000011ABd0000F003* + ID_MODEL_FROM_DATABASE=GT-64010 Primary Image Piranha Image Generator + +pci:v000011AC* + ID_VENDOR_FROM_DATABASE=Canon Information Systems Research Aust. + +pci:v000011AD* + ID_VENDOR_FROM_DATABASE=Lite-On Communications Inc + +pci:v000011ADd00000002* + ID_MODEL_FROM_DATABASE=LNE100TX + +pci:v000011ADd00000002sv000011ADsd00000002* + ID_MODEL_FROM_DATABASE=LNE100TX + +pci:v000011ADd00000002sv000011ADsd00000003* + ID_MODEL_FROM_DATABASE=LNE100TX + +pci:v000011ADd00000002sv000011ADsd0000F003* + ID_MODEL_FROM_DATABASE=LNE100TX + +pci:v000011ADd00000002sv000011ADsd0000FFFF* + ID_MODEL_FROM_DATABASE=LNE100TX + +pci:v000011ADd00000002sv00001385sd0000F004* + ID_MODEL_FROM_DATABASE=FA310TX + +pci:v000011ADd00000002sv00002646sd0000F002* + ID_MODEL_FROM_DATABASE=KNE110TX EtheRx Fast Ethernet + +pci:v000011ADd0000C115* + ID_MODEL_FROM_DATABASE=LNE100TX [Linksys EtherFast 10/100] + +pci:v000011ADd0000C115sv000011ADsd0000C001* + ID_MODEL_FROM_DATABASE=LNE100TX [ver 2.0] + +pci:v000011ADd0000C115sv00002646sd0000000B* + ID_MODEL_FROM_DATABASE=KNE111TX + +pci:v000011AE* + ID_VENDOR_FROM_DATABASE=Aztech System Ltd + +pci:v000011AF* + ID_VENDOR_FROM_DATABASE=Avid Technology Inc. + +pci:v000011AFd00000001* + ID_MODEL_FROM_DATABASE=Cinema + +pci:v000011AFd0000EE40* + ID_MODEL_FROM_DATABASE=Digidesign Audiomedia III + +pci:v000011B0* + ID_VENDOR_FROM_DATABASE=V3 Semiconductor Inc. + +pci:v000011B0d00000002* + ID_MODEL_FROM_DATABASE=V300PSC + +pci:v000011B0d00000292* + ID_MODEL_FROM_DATABASE=V292PBC [Am29030/40 Bridge] + +pci:v000011B0d00000960* + ID_MODEL_FROM_DATABASE=V96xPBC + +pci:v000011B0d0000C960* + ID_MODEL_FROM_DATABASE=V96DPC + +pci:v000011B1* + ID_VENDOR_FROM_DATABASE=Apricot Computers + +pci:v000011B2* + ID_VENDOR_FROM_DATABASE=Eastman Kodak + +pci:v000011B3* + ID_VENDOR_FROM_DATABASE=Barr Systems Inc. + +pci:v000011B4* + ID_VENDOR_FROM_DATABASE=Leitch Technology International + +pci:v000011B5* + ID_VENDOR_FROM_DATABASE=Radstone Technology Plc + +pci:v000011B6* + ID_VENDOR_FROM_DATABASE=United Video Corp + +pci:v000011B7* + ID_VENDOR_FROM_DATABASE=Motorola + +pci:v000011B8* + ID_VENDOR_FROM_DATABASE=XPoint Technologies, Inc + +pci:v000011B8d00000001* + ID_MODEL_FROM_DATABASE=Quad PeerMaster + +pci:v000011B9* + ID_VENDOR_FROM_DATABASE=Pathlight Technology Inc. + +pci:v000011B9d0000C0ED* + ID_MODEL_FROM_DATABASE=SSA Controller + +pci:v000011BA* + ID_VENDOR_FROM_DATABASE=Videotron Corp + +pci:v000011BB* + ID_VENDOR_FROM_DATABASE=Pyramid Technology + +pci:v000011BC* + ID_VENDOR_FROM_DATABASE=Network Peripherals Inc + +pci:v000011BCd00000001* + ID_MODEL_FROM_DATABASE=NP-PCI + +pci:v000011BD* + ID_VENDOR_FROM_DATABASE=Pinnacle Systems Inc. + +pci:v000011BDd0000002E* + ID_MODEL_FROM_DATABASE=PCTV 40i + +pci:v000011BDd00000040* + ID_MODEL_FROM_DATABASE=Royal TS Function 1 + +pci:v000011BDd00000040sv000011BDsd00000044* + ID_MODEL_FROM_DATABASE=PCTV 2000i Dual DVB-T Pro PCI Tuner 1 + +pci:v000011BDd00000040sv000011BDsd00000045* + ID_MODEL_FROM_DATABASE=PCTV Dual Sat Pro PCI 4000i Tuner 1 + +pci:v000011BDd00000041* + ID_MODEL_FROM_DATABASE=RoyalTS Function 2 + +pci:v000011BDd00000041sv000011BDsd00000044* + ID_MODEL_FROM_DATABASE=PCTV 2000i Dual DVB-T Pro PCI Tuner 2 + +pci:v000011BDd00000041sv000011BDsd00000045* + ID_MODEL_FROM_DATABASE=PCTV Dual Sat Pro PCI 4000i Tuner 2 + +pci:v000011BDd00000042* + ID_MODEL_FROM_DATABASE=Royal TS Function 3 + +pci:v000011BDd00000042sv000011BDsd00000044* + ID_MODEL_FROM_DATABASE=PCTV 2000i Dual DVB-T Pro PCI Common + +pci:v000011BDd00000042sv000011BDsd00000045* + ID_MODEL_FROM_DATABASE=PCTV Dual Sat Pro PCI 4000i Common + +pci:v000011BDd00000051* + ID_MODEL_FROM_DATABASE=PCTV HD 800i + +pci:v000011BDd0000BEDE* + ID_MODEL_FROM_DATABASE=AV/DV Studio Capture Card + +pci:v000011BE* + ID_VENDOR_FROM_DATABASE=International Microcircuits Inc + +pci:v000011BF* + ID_VENDOR_FROM_DATABASE=Astrodesign, Inc. + +pci:v000011C0* + ID_VENDOR_FROM_DATABASE=Hewlett Packard + +pci:v000011C1* + ID_VENDOR_FROM_DATABASE=LSI Corporation + +pci:v000011C1d00000440* + ID_MODEL_FROM_DATABASE=56k WinModem + +pci:v000011C1d00000440sv00001033sd00008015* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd + +pci:v000011C1d00000440sv00001033sd00008047* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd + +pci:v000011C1d00000440sv00001033sd0000804F* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd + +pci:v000011C1d00000440sv000010CFsd0000102C* + ID_MODEL_FROM_DATABASE=LB LT Modem V.90 56k + +pci:v000011C1d00000440sv000010CFsd0000104A* + ID_MODEL_FROM_DATABASE=BIBLO LT Modem 56k + +pci:v000011C1d00000440sv000010CFsd0000105F* + ID_MODEL_FROM_DATABASE=LB2 LT Modem V.90 56k + +pci:v000011C1d00000440sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Internal V.90 Modem + +pci:v000011C1d00000440sv000011C1sd00000440* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd + +pci:v000011C1d00000440sv0000122Dsd00004101* + ID_MODEL_FROM_DATABASE=MDP7800-U Modem + +pci:v000011C1d00000440sv0000122Dsd00004102* + ID_MODEL_FROM_DATABASE=MDP7800SP-U Modem + +pci:v000011C1d00000440sv000013E0sd00000040* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd + +pci:v000011C1d00000440sv000013E0sd00000440* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd + +pci:v000011C1d00000440sv000013E0sd00000441* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd + +pci:v000011C1d00000440sv000013E0sd00000450* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd + +pci:v000011C1d00000440sv000013E0sd0000F100* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd + +pci:v000011C1d00000440sv000013E0sd0000F101* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd + +pci:v000011C1d00000440sv0000144Dsd00002101* + ID_MODEL_FROM_DATABASE=LT56PV Modem + +pci:v000011C1d00000440sv0000149Fsd00000440* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd + +pci:v000011C1d00000441* + ID_MODEL_FROM_DATABASE=56k WinModem + +pci:v000011C1d00000441sv00001033sd0000804D* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax + +pci:v000011C1d00000441sv00001033sd00008065* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax + +pci:v000011C1d00000441sv00001092sd00000440* + ID_MODEL_FROM_DATABASE=Supra 56i + +pci:v000011C1d00000441sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Internal V.90 Modem + +pci:v000011C1d00000441sv000011C1sd00000440* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax + +pci:v000011C1d00000441sv000011C1sd00000441* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax + +pci:v000011C1d00000441sv0000122Dsd00004100* + ID_MODEL_FROM_DATABASE=MDP7800-U Modem + +pci:v000011C1d00000441sv000013E0sd00000040* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax + +pci:v000011C1d00000441sv000013E0sd00000100* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax + +pci:v000011C1d00000441sv000013E0sd00000410* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax + +pci:v000011C1d00000441sv000013E0sd00000420* + ID_MODEL_FROM_DATABASE=TelePath Internet 56k WinModem + +pci:v000011C1d00000441sv000013E0sd00000440* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax + +pci:v000011C1d00000441sv000013E0sd00000443* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax + +pci:v000011C1d00000441sv000013E0sd0000F102* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax + +pci:v000011C1d00000441sv00001416sd00009804* + ID_MODEL_FROM_DATABASE=CommWave 56k Modem + +pci:v000011C1d00000441sv0000141Dsd00000440* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax + +pci:v000011C1d00000441sv0000144Fsd00000441* + ID_MODEL_FROM_DATABASE=Lucent 56k V.90 DF Modem + +pci:v000011C1d00000441sv0000144Fsd00000449* + ID_MODEL_FROM_DATABASE=Lucent 56k V.90 DF Modem + +pci:v000011C1d00000441sv0000144Fsd0000110D* + ID_MODEL_FROM_DATABASE=Lucent Win Modem + +pci:v000011C1d00000441sv00001468sd00000441* + ID_MODEL_FROM_DATABASE=Presario 56k V.90 DF Modem + +pci:v000011C1d00000441sv00001668sd00000440* + ID_MODEL_FROM_DATABASE=Lucent Win Modem + +pci:v000011C1d00000442* + ID_MODEL_FROM_DATABASE=56k WinModem + +pci:v000011C1d00000442sv000011C1sd00000440* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + +pci:v000011C1d00000442sv000011C1sd00000442* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + +pci:v000011C1d00000442sv000013E0sd00000412* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + +pci:v000011C1d00000442sv000013E0sd00000442* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + +pci:v000011C1d00000442sv000013FCsd00002471* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + +pci:v000011C1d00000442sv0000144Dsd00002104* + ID_MODEL_FROM_DATABASE=LT56PT Modem + +pci:v000011C1d00000442sv0000144Fsd00001104* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + +pci:v000011C1d00000442sv0000149Fsd00000440* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + +pci:v000011C1d00000442sv00001668sd00000440* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + +pci:v000011C1d00000443* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000444* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000445* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000445sv00008086sd00002203* + ID_MODEL_FROM_DATABASE=PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card) + +pci:v000011C1d00000445sv00008086sd00002204* + ID_MODEL_FROM_DATABASE=PRO/100+ MiniPCI on Armada E500 + +pci:v000011C1d00000446* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000447* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000448* + ID_MODEL_FROM_DATABASE=WinModem 56k + +pci:v000011C1d00000448sv00001014sd00000131* + ID_MODEL_FROM_DATABASE=Lucent Win Modem + +pci:v000011C1d00000448sv00001033sd00008066* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd + +pci:v000011C1d00000448sv000013E0sd00000030* + ID_MODEL_FROM_DATABASE=56k Voice Modem + +pci:v000011C1d00000448sv000013E0sd00000040* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd + +pci:v000011C1d00000448sv00001668sd00002400* + ID_MODEL_FROM_DATABASE=LT WinModem 56k (MiniPCI Ethernet+Modem) + +pci:v000011C1d00000449* + ID_MODEL_FROM_DATABASE=L56xM+S [Mars-2] WinModem 56k + +pci:v000011C1d00000449sv00000E11sd0000B14D* + ID_MODEL_FROM_DATABASE=56k V.90 Modem + +pci:v000011C1d00000449sv00001014sd0000018C* + ID_MODEL_FROM_DATABASE=ThinkPad 600X + +pci:v000011C1d00000449sv000013E0sd00000020* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax + +pci:v000011C1d00000449sv000013E0sd00000041* + ID_MODEL_FROM_DATABASE=TelePath Internet 56k WinModem + +pci:v000011C1d00000449sv00001436sd00000440* + ID_MODEL_FROM_DATABASE=Lucent Win Modem + +pci:v000011C1d00000449sv0000144Fsd00000449* + ID_MODEL_FROM_DATABASE=Lucent 56k V.90 DFi Modem + +pci:v000011C1d00000449sv00001468sd00000410* + ID_MODEL_FROM_DATABASE=IBM ThinkPad T23 + +pci:v000011C1d00000449sv00001468sd00000440* + ID_MODEL_FROM_DATABASE=Lucent Win Modem + +pci:v000011C1d00000449sv00001468sd00000449* + ID_MODEL_FROM_DATABASE=Presario 56k V.90 DFi Modem + +pci:v000011C1d0000044A* + ID_MODEL_FROM_DATABASE=F-1156IV WinModem (V90, 56KFlex) + +pci:v000011C1d0000044Asv000010CFsd00001072* + ID_MODEL_FROM_DATABASE=LB Global LT Modem + +pci:v000011C1d0000044Asv000013E0sd00000012* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + +pci:v000011C1d0000044Asv000013E0sd00000042* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + +pci:v000011C1d0000044Asv0000144Fsd00001005* + ID_MODEL_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd + +pci:v000011C1d0000044B* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d0000044C* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d0000044D* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d0000044E* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d0000044F* + ID_MODEL_FROM_DATABASE=V90 WildWire Modem + +pci:v000011C1d00000450* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000450sv00001033sd000080A8* + ID_MODEL_FROM_DATABASE=Versa Note Vxi + +pci:v000011C1d00000450sv0000144Fsd00004005* + ID_MODEL_FROM_DATABASE=Magnia SG20 + +pci:v000011C1d00000450sv00001468sd00000450* + ID_MODEL_FROM_DATABASE=Evo N600c + +pci:v000011C1d00000451* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000452* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000453* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000454* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000455* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000456* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000457* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000458* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000459* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d0000045A* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d0000045C* + ID_MODEL_FROM_DATABASE=LT WinModem + +pci:v000011C1d00000461* + ID_MODEL_FROM_DATABASE=V90 WildWire Modem + +pci:v000011C1d00000462* + ID_MODEL_FROM_DATABASE=V90 WildWire Modem + +pci:v000011C1d00000480* + ID_MODEL_FROM_DATABASE=Venus Modem (V90, 56KFlex) + +pci:v000011C1d0000048C* + ID_MODEL_FROM_DATABASE=V.92 56K WinModem + +pci:v000011C1d0000048F* + ID_MODEL_FROM_DATABASE=V.92 56k WinModem + +pci:v000011C1d00000620* + ID_MODEL_FROM_DATABASE=Lucent V.92 Data/Fax Modem + +pci:v000011C1d00002600* + ID_MODEL_FROM_DATABASE=StarPro26XX family (SP2601, SP2603, SP2612) DSP + +pci:v000011C1d00005400* + ID_MODEL_FROM_DATABASE=OR3TP12 FPSC + +pci:v000011C1d00005656* + ID_MODEL_FROM_DATABASE=Venus Modem + +pci:v000011C1d00005801* + ID_MODEL_FROM_DATABASE=USB + +pci:v000011C1d00005802* + ID_MODEL_FROM_DATABASE=USS-312 USB Controller + +pci:v000011C1d00005803* + ID_MODEL_FROM_DATABASE=USS-344S USB Controller + +pci:v000011C1d00005811* + ID_MODEL_FROM_DATABASE=FW322/323 [TrueFire] 1394a Controller + +pci:v000011C1d00005811sv0000103Csd00002A34* + ID_MODEL_FROM_DATABASE=Pavilion a1677c + +pci:v000011C1d00005811sv0000103Csd00002A9E* + ID_MODEL_FROM_DATABASE=Pavilion p6310f + +pci:v000011C1d00005811sv00001043sd00008294* + ID_MODEL_FROM_DATABASE=LSI FW322/323 IEEE 1394a FireWire Controller + +pci:v000011C1d00005811sv00008086sd0000524C* + ID_MODEL_FROM_DATABASE=D865PERL mainboard + +pci:v000011C1d00005811sv0000DEADsd00000800* + ID_MODEL_FROM_DATABASE=FireWire Host Bus Adapter + +pci:v000011C1d00005901* + ID_MODEL_FROM_DATABASE=FW643 [TrueFire] PCIe 1394b Controller + +pci:v000011C1d00005901sv000011C1sd00005900* + ID_MODEL_FROM_DATABASE=FW643 [TrueFire] PCIe 1394b Controller + +pci:v000011C1d00005901sv00001443sd00000643* + ID_MODEL_FROM_DATABASE=FireBoard800-e V.2 + +pci:v000011C1d00005901sv00001546sd00000643* + ID_MODEL_FROM_DATABASE=FWB-PCIE1X2x + +pci:v000011C1d00005903* + ID_MODEL_FROM_DATABASE=FW533 [TrueFire] PCIe 1394a Controller + +pci:v000011C1d00008110* + ID_MODEL_FROM_DATABASE=T8110 H.100/H.110 TDM switch + +pci:v000011C1d00008110sv000012D9sd0000000C* + ID_MODEL_FROM_DATABASE=E1/T1 PMXc cPCI carrier card + +pci:v000011C1d0000AB10* + ID_MODEL_FROM_DATABASE=WL60010 Wireless LAN MAC + +pci:v000011C1d0000AB11* + ID_MODEL_FROM_DATABASE=WL60040 Multimode Wireles LAN MAC + +pci:v000011C1d0000AB11sv000011C1sd0000AB12* + ID_MODEL_FROM_DATABASE=WaveLAN 11abg Cardbus card (Model 1102) + +pci:v000011C1d0000AB11sv000011C1sd0000AB13* + ID_MODEL_FROM_DATABASE=WaveLAN 11abg MiniPCI card (Model 0512) + +pci:v000011C1d0000AB11sv000011C1sd0000AB15* + ID_MODEL_FROM_DATABASE=WaveLAN 11abg Cardbus card (Model 1106) + +pci:v000011C1d0000AB11sv000011C1sd0000AB16* + ID_MODEL_FROM_DATABASE=WaveLAN 11abg MiniPCI card (Model 0516) + +pci:v000011C1d0000AB20* + ID_MODEL_FROM_DATABASE=ORiNOCO PCI Adapter + +pci:v000011C1d0000AB21* + ID_MODEL_FROM_DATABASE=Agere Wireless PCI Adapter + +pci:v000011C1d0000AB30* + ID_MODEL_FROM_DATABASE=Hermes2 Mini-PCI WaveLAN a/b/g + +pci:v000011C1d0000AB30sv000014CDsd00002012* + ID_MODEL_FROM_DATABASE=Hermes2 Mini-PCI WaveLAN a/b/g + +pci:v000011C1d0000ED00* + ID_MODEL_FROM_DATABASE=ET-131x PCI-E Ethernet Controller + +pci:v000011C1d0000ED01* + ID_MODEL_FROM_DATABASE=ET-131x PCI-E Ethernet Controller + +pci:v000011C2* + ID_VENDOR_FROM_DATABASE=Sand Microelectronics + +pci:v000011C3* + ID_VENDOR_FROM_DATABASE=NEC Corporation + +pci:v000011C4* + ID_VENDOR_FROM_DATABASE=Document Technologies, Inc + +pci:v000011C5* + ID_VENDOR_FROM_DATABASE=Shiva Corporation + +pci:v000011C6* + ID_VENDOR_FROM_DATABASE=Dainippon Screen Mfg. Co. Ltd + +pci:v000011C7* + ID_VENDOR_FROM_DATABASE=D.C.M. Data Systems + +pci:v000011C8* + ID_VENDOR_FROM_DATABASE=Dolphin Interconnect Solutions AS + +pci:v000011C8d00000658* + ID_MODEL_FROM_DATABASE=PSB32 SCI-Adapter D31x + +pci:v000011C8d0000D665* + ID_MODEL_FROM_DATABASE=PSB64 SCI-Adapter D32x + +pci:v000011C8d0000D667* + ID_MODEL_FROM_DATABASE=PSB66 SCI-Adapter D33x + +pci:v000011C9* + ID_VENDOR_FROM_DATABASE=Magma + +pci:v000011C9d00000010* + ID_MODEL_FROM_DATABASE=16-line serial port w/- DMA + +pci:v000011C9d00000011* + ID_MODEL_FROM_DATABASE=4-line serial port w/- DMA + +pci:v000011CA* + ID_VENDOR_FROM_DATABASE=LSI Systems, Inc + +pci:v000011CB* + ID_VENDOR_FROM_DATABASE=Specialix Research Ltd. + +pci:v000011CBd00002000* + ID_MODEL_FROM_DATABASE=PCI_9050 + +pci:v000011CBd00002000sv000011CBsd00000200* + ID_MODEL_FROM_DATABASE=SX + +pci:v000011CBd00002000sv000011CBsd0000B008* + ID_MODEL_FROM_DATABASE=I/O8+ + +pci:v000011CBd00004000* + ID_MODEL_FROM_DATABASE=SUPI_1 + +pci:v000011CBd00008000* + ID_MODEL_FROM_DATABASE=T225 + +pci:v000011CC* + ID_VENDOR_FROM_DATABASE=Michels & Kleberhoff Computer GmbH + +pci:v000011CD* + ID_VENDOR_FROM_DATABASE=HAL Computer Systems, Inc. + +pci:v000011CE* + ID_VENDOR_FROM_DATABASE=Netaccess + +pci:v000011CF* + ID_VENDOR_FROM_DATABASE=Pioneer Electronic Corporation + +pci:v000011D0* + ID_VENDOR_FROM_DATABASE=Lockheed Martin Federal Systems-Manassas + +pci:v000011D1* + ID_VENDOR_FROM_DATABASE=Auravision + +pci:v000011D1d000001F7* + ID_MODEL_FROM_DATABASE=VxP524 + +pci:v000011D1d000001F9* + ID_MODEL_FROM_DATABASE=VxP951 + +pci:v000011D2* + ID_VENDOR_FROM_DATABASE=Intercom Inc. + +pci:v000011D3* + ID_VENDOR_FROM_DATABASE=Trancell Systems Inc + +pci:v000011D4* + ID_VENDOR_FROM_DATABASE=Analog Devices + +pci:v000011D4d00001535* + ID_MODEL_FROM_DATABASE=Blackfin BF535 processor + +pci:v000011D4d00001805* + ID_MODEL_FROM_DATABASE=SM56 PCI modem + +pci:v000011D5* + ID_VENDOR_FROM_DATABASE=Ikon Corporation + +pci:v000011D5d00000115* + ID_MODEL_FROM_DATABASE=10115 + +pci:v000011D5d00000117* + ID_MODEL_FROM_DATABASE=10117 + +pci:v000011D6* + ID_VENDOR_FROM_DATABASE=Tekelec Telecom + +pci:v000011D7* + ID_VENDOR_FROM_DATABASE=Trenton Technology, Inc. + +pci:v000011D8* + ID_VENDOR_FROM_DATABASE=Image Technologies Development + +pci:v000011D9* + ID_VENDOR_FROM_DATABASE=TEC Corporation + +pci:v000011DA* + ID_VENDOR_FROM_DATABASE=Novell + +pci:v000011DB* + ID_VENDOR_FROM_DATABASE=Sega Enterprises Ltd + +pci:v000011DC* + ID_VENDOR_FROM_DATABASE=Questra Corporation + +pci:v000011DD* + ID_VENDOR_FROM_DATABASE=Crosfield Electronics Limited + +pci:v000011DE* + ID_VENDOR_FROM_DATABASE=Zoran Corporation + +pci:v000011DEd00006017* + ID_MODEL_FROM_DATABASE=miroVIDEO DC30 + +pci:v000011DEd00006057* + ID_MODEL_FROM_DATABASE=ZR36057PQC Video cutting chipset + +pci:v000011DEd00006057sv00001031sd00007EFE* + ID_MODEL_FROM_DATABASE=DC10 Plus + +pci:v000011DEd00006057sv00001031sd0000FC00* + ID_MODEL_FROM_DATABASE=MiroVIDEO DC50, Motion JPEG Capture/CODEC Board + +pci:v000011DEd00006057sv000012F8sd00008A02* + ID_MODEL_FROM_DATABASE=Tekram Video Kit + +pci:v000011DEd00006057sv000013CAsd00004231* + ID_MODEL_FROM_DATABASE=JPEG/TV Card + +pci:v000011DEd00006120* + ID_MODEL_FROM_DATABASE=ZR36120 + +pci:v000011DEd00006120sv00001328sd0000F001* + ID_MODEL_FROM_DATABASE=Cinemaster C DVD Decoder + +pci:v000011DEd00006120sv000013C2sd00000000* + ID_MODEL_FROM_DATABASE=MediaFocus Satellite TV Card + +pci:v000011DEd00006120sv00001DE1sd00009FFF* + ID_MODEL_FROM_DATABASE=Video Kit C210 + +pci:v000011DF* + ID_VENDOR_FROM_DATABASE=New Wave PDG + +pci:v000011E0* + ID_VENDOR_FROM_DATABASE=Cray Communications A/S + +pci:v000011E1* + ID_VENDOR_FROM_DATABASE=GEC Plessey Semi Inc. + +pci:v000011E2* + ID_VENDOR_FROM_DATABASE=Samsung Information Systems America + +pci:v000011E3* + ID_VENDOR_FROM_DATABASE=Quicklogic Corporation + +pci:v000011E3d00000001* + ID_MODEL_FROM_DATABASE=COM-ON-AIR Dosch&Amand DECT + +pci:v000011E3d00000560* + ID_MODEL_FROM_DATABASE=QL5064 Companion Design Demo Board + +pci:v000011E3d00005030* + ID_MODEL_FROM_DATABASE=PC Watchdog + +pci:v000011E3d00008417* + ID_MODEL_FROM_DATABASE=QL5064 [QuickPCI] PCI v2.2 bridge for SMT417 Dual TMS320C6416T PMC Module + +pci:v000011E4* + ID_VENDOR_FROM_DATABASE=Second Wave Inc + +pci:v000011E5* + ID_VENDOR_FROM_DATABASE=IIX Consulting + +pci:v000011E6* + ID_VENDOR_FROM_DATABASE=Mitsui-Zosen System Research + +pci:v000011E7* + ID_VENDOR_FROM_DATABASE=Toshiba America, Elec. Company + +pci:v000011E8* + ID_VENDOR_FROM_DATABASE=Digital Processing Systems Inc. + +pci:v000011E9* + ID_VENDOR_FROM_DATABASE=Highwater Designs Ltd. + +pci:v000011EA* + ID_VENDOR_FROM_DATABASE=Elsag Bailey + +pci:v000011EB* + ID_VENDOR_FROM_DATABASE=Formation Inc. + +pci:v000011EC* + ID_VENDOR_FROM_DATABASE=Coreco Inc + +pci:v000011ECd0000000D* + ID_MODEL_FROM_DATABASE=Oculus-F/64P + +pci:v000011ECd00001800* + ID_MODEL_FROM_DATABASE=Cobra/C6 + +pci:v000011ED* + ID_VENDOR_FROM_DATABASE=Mediamatics + +pci:v000011EE* + ID_VENDOR_FROM_DATABASE=Dome Imaging Systems Inc + +pci:v000011EF* + ID_VENDOR_FROM_DATABASE=Nicolet Technologies B.V. + +pci:v000011F0* + ID_VENDOR_FROM_DATABASE=Compu-Shack + +pci:v000011F0d00004231* + ID_MODEL_FROM_DATABASE=FDDI + +pci:v000011F0d00004232* + ID_MODEL_FROM_DATABASE=FASTline UTP Quattro + +pci:v000011F0d00004233* + ID_MODEL_FROM_DATABASE=FASTline FO + +pci:v000011F0d00004234* + ID_MODEL_FROM_DATABASE=FASTline UTP + +pci:v000011F0d00004235* + ID_MODEL_FROM_DATABASE=FASTline-II UTP + +pci:v000011F0d00004236* + ID_MODEL_FROM_DATABASE=FASTline-II FO + +pci:v000011F0d00004731* + ID_MODEL_FROM_DATABASE=GIGAline + +pci:v000011F1* + ID_VENDOR_FROM_DATABASE=Symbios Logic Inc + +pci:v000011F2* + ID_VENDOR_FROM_DATABASE=Picture Tel Japan K.K. + +pci:v000011F3* + ID_VENDOR_FROM_DATABASE=Keithley Metrabyte + +pci:v000011F3d00000011* + ID_MODEL_FROM_DATABASE=KPCI-PIO24 + +pci:v000011F4* + ID_VENDOR_FROM_DATABASE=Kinetic Systems Corporation + +pci:v000011F4d00002915* + ID_MODEL_FROM_DATABASE=CAMAC controller + +pci:v000011F5* + ID_VENDOR_FROM_DATABASE=Computing Devices International + +pci:v000011F6* + ID_VENDOR_FROM_DATABASE=Compex + +pci:v000011F6d00000112* + ID_MODEL_FROM_DATABASE=ENet100VG4 + +pci:v000011F6d00000113* + ID_MODEL_FROM_DATABASE=FreedomLine 100 + +pci:v000011F6d00001401* + ID_MODEL_FROM_DATABASE=ReadyLink 2000 + +pci:v000011F6d00002011* + ID_MODEL_FROM_DATABASE=RL100-ATX 10/100 + +pci:v000011F6d00002011sv000011F6sd00002011* + ID_MODEL_FROM_DATABASE=RL100-ATX + +pci:v000011F6d00002201* + ID_MODEL_FROM_DATABASE=ReadyLink 100TX (Winbond W89C840) + +pci:v000011F6d00002201sv000011F6sd00002011* + ID_MODEL_FROM_DATABASE=ReadyLink 100TX + +pci:v000011F6d00009881* + ID_MODEL_FROM_DATABASE=RL100TX Fast Ethernet + +pci:v000011F7* + ID_VENDOR_FROM_DATABASE=Scientific Atlanta + +pci:v000011F8* + ID_VENDOR_FROM_DATABASE=PMC-Sierra Inc. + +pci:v000011F8d00005220* + ID_MODEL_FROM_DATABASE=BR522x [PMC-Sierra maxRAID SAS Controller] + +pci:v000011F8d00007364* + ID_MODEL_FROM_DATABASE=PM7364 [FREEDM - 32 Frame Engine & Datalink Mgr] + +pci:v000011F8d00007375* + ID_MODEL_FROM_DATABASE=PM7375 [LASAR-155 ATM SAR] + +pci:v000011F8d00007384* + ID_MODEL_FROM_DATABASE=PM7384 [FREEDM - 84P672 Frm Engine & Datalink Mgr] + +pci:v000011F8d00008000* + ID_MODEL_FROM_DATABASE=PM8000 [SPC - SAS Protocol Controller] + +pci:v000011F9* + ID_VENDOR_FROM_DATABASE=I-Cube Inc + +pci:v000011FA* + ID_VENDOR_FROM_DATABASE=Kasan Electronics Company, Ltd. + +pci:v000011FB* + ID_VENDOR_FROM_DATABASE=Datel Inc + +pci:v000011FC* + ID_VENDOR_FROM_DATABASE=Silicon Magic + +pci:v000011FD* + ID_VENDOR_FROM_DATABASE=High Street Consultants + +pci:v000011FE* + ID_VENDOR_FROM_DATABASE=Comtrol Corporation + +pci:v000011FEd00000001* + ID_MODEL_FROM_DATABASE=RocketPort 32 port w/external I/F + +pci:v000011FEd00000002* + ID_MODEL_FROM_DATABASE=RocketPort 8 port w/external I/F + +pci:v000011FEd00000003* + ID_MODEL_FROM_DATABASE=RocketPort 16 port w/external I/F + +pci:v000011FEd00000004* + ID_MODEL_FROM_DATABASE=RocketPort 4 port w/quad cable + +pci:v000011FEd00000005* + ID_MODEL_FROM_DATABASE=RocketPort 8 port w/octa cable + +pci:v000011FEd00000006* + ID_MODEL_FROM_DATABASE=RocketPort 8 port w/RJ11 connectors + +pci:v000011FEd00000007* + ID_MODEL_FROM_DATABASE=RocketPort 4 port w/RJ11 connectors + +pci:v000011FEd00000008* + ID_MODEL_FROM_DATABASE=RocketPort 8 port w/ DB78 SNI (Siemens) connector + +pci:v000011FEd00000009* + ID_MODEL_FROM_DATABASE=RocketPort 16 port w/ DB78 SNI (Siemens) connector + +pci:v000011FEd0000000A* + ID_MODEL_FROM_DATABASE=RocketPort Plus 4 port + +pci:v000011FEd0000000B* + ID_MODEL_FROM_DATABASE=RocketPort Plus 8 port + +pci:v000011FEd0000000C* + ID_MODEL_FROM_DATABASE=RocketModem 6 port + +pci:v000011FEd0000000D* + ID_MODEL_FROM_DATABASE=RocketModem 4-port + +pci:v000011FEd0000000E* + ID_MODEL_FROM_DATABASE=RocketPort Plus 2 port RS232 + +pci:v000011FEd0000000F* + ID_MODEL_FROM_DATABASE=RocketPort Plus 2 port RS422 + +pci:v000011FEd00000040* + ID_MODEL_FROM_DATABASE=RocketPort Infinity Octa, 8port, RJ45 + +pci:v000011FEd00000041* + ID_MODEL_FROM_DATABASE=RocketPort Infinity 32port, External Interface + +pci:v000011FEd00000042* + ID_MODEL_FROM_DATABASE=RocketPort Infinity 8port, External Interface + +pci:v000011FEd00000043* + ID_MODEL_FROM_DATABASE=RocketPort Infinity 16port, External Interface + +pci:v000011FEd00000044* + ID_MODEL_FROM_DATABASE=RocketPort Infinity Quad, 4port, DB + +pci:v000011FEd00000045* + ID_MODEL_FROM_DATABASE=RocketPort Infinity Octa, 8port, DB + +pci:v000011FEd00000047* + ID_MODEL_FROM_DATABASE=RocketPort Infinity 4port, RJ45 + +pci:v000011FEd0000004F* + ID_MODEL_FROM_DATABASE=RocketPort Infinity 2port, SMPTE + +pci:v000011FEd00000052* + ID_MODEL_FROM_DATABASE=RocketPort Infinity Octa, 8port, SMPTE + +pci:v000011FEd00000801* + ID_MODEL_FROM_DATABASE=RocketPort UPCI 32 port w/external I/F + +pci:v000011FEd00000802* + ID_MODEL_FROM_DATABASE=RocketPort UPCI 8 port w/external I/F + +pci:v000011FEd00000803* + ID_MODEL_FROM_DATABASE=RocketPort UPCI 16 port w/external I/F + +pci:v000011FEd00000805* + ID_MODEL_FROM_DATABASE=RocketPort UPCI 8 port w/octa cable + +pci:v000011FEd0000080C* + ID_MODEL_FROM_DATABASE=RocketModem III 8 port + +pci:v000011FEd0000080D* + ID_MODEL_FROM_DATABASE=RocketModem III 4 port + +pci:v000011FEd00000810* + ID_MODEL_FROM_DATABASE=RocketPort UPCI Plus 4 port RS232 + +pci:v000011FEd00000811* + ID_MODEL_FROM_DATABASE=RocketPort UPCI Plus 8 port RS232 + +pci:v000011FEd00000812* + ID_MODEL_FROM_DATABASE=RocketPort UPCI Plus 8 port RS422 + +pci:v000011FEd00000903* + ID_MODEL_FROM_DATABASE=RocketPort Compact PCI 16 port w/external I/F + +pci:v000011FEd00008015* + ID_MODEL_FROM_DATABASE=RocketPort 4-port UART 16954 + +pci:v000011FF* + ID_VENDOR_FROM_DATABASE=Scion Corporation + +pci:v000011FFd00000003* + ID_MODEL_FROM_DATABASE=AG-5 + +pci:v00001200* + ID_VENDOR_FROM_DATABASE=CSS Corporation + +pci:v00001201* + ID_VENDOR_FROM_DATABASE=Vista Controls Corp + +pci:v00001202* + ID_VENDOR_FROM_DATABASE=Network General Corp. + +pci:v00001202d00004300* + ID_MODEL_FROM_DATABASE=Gigabit Ethernet Adapter + +pci:v00001202d00004300sv00001202sd00009841* + ID_MODEL_FROM_DATABASE=SK-9841 LX + +pci:v00001202d00004300sv00001202sd00009842* + ID_MODEL_FROM_DATABASE=SK-9841 LX dual link + +pci:v00001202d00004300sv00001202sd00009843* + ID_MODEL_FROM_DATABASE=SK-9843 SX + +pci:v00001202d00004300sv00001202sd00009844* + ID_MODEL_FROM_DATABASE=SK-9843 SX dual link + +pci:v00001203* + ID_VENDOR_FROM_DATABASE=Bayer Corporation, Agfa Division + +pci:v00001204* + ID_VENDOR_FROM_DATABASE=Lattice Semiconductor Corporation + +pci:v00001205* + ID_VENDOR_FROM_DATABASE=Array Corporation + +pci:v00001206* + ID_VENDOR_FROM_DATABASE=Amdahl Corporation + +pci:v00001208* + ID_VENDOR_FROM_DATABASE=Parsytec GmbH + +pci:v00001208d00004853* + ID_MODEL_FROM_DATABASE=HS-Link Device + +pci:v00001209* + ID_VENDOR_FROM_DATABASE=SCI Systems Inc + +pci:v0000120A* + ID_VENDOR_FROM_DATABASE=Synaptel + +pci:v0000120B* + ID_VENDOR_FROM_DATABASE=Adaptive Solutions + +pci:v0000120C* + ID_VENDOR_FROM_DATABASE=Technical Corp. + +pci:v0000120D* + ID_VENDOR_FROM_DATABASE=Compression Labs, Inc. + +pci:v0000120E* + ID_VENDOR_FROM_DATABASE=Cyclades Corporation + +pci:v0000120Ed00000100* + ID_MODEL_FROM_DATABASE=Cyclom-Y below first megabyte + +pci:v0000120Ed00000101* + ID_MODEL_FROM_DATABASE=Cyclom-Y above first megabyte + +pci:v0000120Ed00000102* + ID_MODEL_FROM_DATABASE=Cyclom-4Y below first megabyte + +pci:v0000120Ed00000103* + ID_MODEL_FROM_DATABASE=Cyclom-4Y above first megabyte + +pci:v0000120Ed00000104* + ID_MODEL_FROM_DATABASE=Cyclom-8Y below first megabyte + +pci:v0000120Ed00000105* + ID_MODEL_FROM_DATABASE=Cyclom-8Y above first megabyte + +pci:v0000120Ed00000200* + ID_MODEL_FROM_DATABASE=Cyclades-Z below first megabyte + +pci:v0000120Ed00000201* + ID_MODEL_FROM_DATABASE=Cyclades-Z above first megabyte + +pci:v0000120Ed00000300* + ID_MODEL_FROM_DATABASE=PC300/RSV or /X21 (2 ports) + +pci:v0000120Ed00000301* + ID_MODEL_FROM_DATABASE=PC300/RSV or /X21 (1 port) + +pci:v0000120Ed00000310* + ID_MODEL_FROM_DATABASE=PC300/TE (2 ports) + +pci:v0000120Ed00000311* + ID_MODEL_FROM_DATABASE=PC300/TE (1 port) + +pci:v0000120Ed00000320* + ID_MODEL_FROM_DATABASE=PC300/TE-M (2 ports) + +pci:v0000120Ed00000321* + ID_MODEL_FROM_DATABASE=PC300/TE-M (1 port) + +pci:v0000120Ed00000400* + ID_MODEL_FROM_DATABASE=PC400 + +pci:v0000120F* + ID_VENDOR_FROM_DATABASE=Essential Communications + +pci:v0000120Fd00000001* + ID_MODEL_FROM_DATABASE=Roadrunner serial HIPPI + +pci:v00001210* + ID_VENDOR_FROM_DATABASE=Hyperparallel Technologies + +pci:v00001211* + ID_VENDOR_FROM_DATABASE=Braintech Inc + +pci:v00001212* + ID_VENDOR_FROM_DATABASE=Kingston Technology Corp. + +pci:v00001213* + ID_VENDOR_FROM_DATABASE=Applied Intelligent Systems, Inc. + +pci:v00001214* + ID_VENDOR_FROM_DATABASE=Performance Technologies, Inc. + +pci:v00001215* + ID_VENDOR_FROM_DATABASE=Interware Co., Ltd + +pci:v00001216* + ID_VENDOR_FROM_DATABASE=Purup Prepress A/S + +pci:v00001217* + ID_VENDOR_FROM_DATABASE=O2 Micro, Inc. + +pci:v00001217d000000F7* + ID_MODEL_FROM_DATABASE=Firewire (IEEE 1394) + +pci:v00001217d000000F7sv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001217d000010F7* + ID_MODEL_FROM_DATABASE=1394 OHCI Compliant Host Controller + +pci:v00001217d000011F7* + ID_MODEL_FROM_DATABASE=OZ600 1394a-2000 Controller + +pci:v00001217d000011F7sv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00001217d000013F7* + ID_MODEL_FROM_DATABASE=1394 OHCI Compliant Host Controller + +pci:v00001217d00006729* + ID_MODEL_FROM_DATABASE=OZ6729 + +pci:v00001217d0000673A* + ID_MODEL_FROM_DATABASE=OZ6730 + +pci:v00001217d00006832* + ID_MODEL_FROM_DATABASE=OZ6832/6833 CardBus Controller + +pci:v00001217d00006836* + ID_MODEL_FROM_DATABASE=OZ6836/6860 CardBus Controller + +pci:v00001217d00006872* + ID_MODEL_FROM_DATABASE=OZ6812 CardBus Controller + +pci:v00001217d00006925* + ID_MODEL_FROM_DATABASE=OZ6922 CardBus Controller + +pci:v00001217d00006933* + ID_MODEL_FROM_DATABASE=OZ6933/711E1 CardBus/SmartCardBus Controller + +pci:v00001217d00006933sv00001025sd00001016* + ID_MODEL_FROM_DATABASE=Travelmate 612 TX + +pci:v00001217d00006972* + ID_MODEL_FROM_DATABASE=OZ601/6912/711E0 CardBus/SmartCardBus Controller + +pci:v00001217d00006972sv00001014sd0000020C* + ID_MODEL_FROM_DATABASE=ThinkPad R30 + +pci:v00001217d00006972sv00001028sd00000152* + ID_MODEL_FROM_DATABASE=Latitude D500 + +pci:v00001217d00006972sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Magnia Z310 + +pci:v00001217d00007110* + ID_MODEL_FROM_DATABASE=OZ711Mx 4-in-1 MemoryCardBus Accelerator + +pci:v00001217d00007110sv0000103Csd0000088C* + ID_MODEL_FROM_DATABASE=NC8000 laptop + +pci:v00001217d00007110sv0000103Csd00000890* + ID_MODEL_FROM_DATABASE=NC6000 laptop + +pci:v00001217d00007110sv00001734sd0000106C* + ID_MODEL_FROM_DATABASE=Amilo A1645 + +pci:v00001217d00007112* + ID_MODEL_FROM_DATABASE=OZ711EC1/M1 SmartCardBus/MemoryCardBus Controller + +pci:v00001217d00007113* + ID_MODEL_FROM_DATABASE=OZ711EC1 SmartCardBus Controller + +pci:v00001217d00007113sv00001025sd00000035* + ID_MODEL_FROM_DATABASE=TravelMate 660 + +pci:v00001217d00007114* + ID_MODEL_FROM_DATABASE=OZ711M1/MC1 4-in-1 MemoryCardBus Controller + +pci:v00001217d00007120* + ID_MODEL_FROM_DATABASE=Integrated MMC/SD Controller + +pci:v00001217d00007120sv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001217d00007130* + ID_MODEL_FROM_DATABASE=Integrated MS/xD Controller + +pci:v00001217d00007130sv00001179sd0000FF50* + ID_MODEL_FROM_DATABASE=Satellite P305D-S8995E + +pci:v00001217d00007134* + ID_MODEL_FROM_DATABASE=OZ711MP1/MS1 MemoryCardBus Controller + +pci:v00001217d00007135* + ID_MODEL_FROM_DATABASE=Cardbus bridge + +pci:v00001217d00007136* + ID_MODEL_FROM_DATABASE=OZ711SP1 Memory CardBus Controller + +pci:v00001217d000071E2* + ID_MODEL_FROM_DATABASE=OZ711E2 SmartCardBus Controller + +pci:v00001217d00007212* + ID_MODEL_FROM_DATABASE=OZ711M2 4-in-1 MemoryCardBus Controller + +pci:v00001217d00007213* + ID_MODEL_FROM_DATABASE=OZ6933E CardBus Controller + +pci:v00001217d00007223* + ID_MODEL_FROM_DATABASE=OZ711M3/MC3 4-in-1 MemoryCardBus Controller + +pci:v00001217d00007223sv0000103Csd0000088C* + ID_MODEL_FROM_DATABASE=NC8000 laptop + +pci:v00001217d00007223sv0000103Csd00000890* + ID_MODEL_FROM_DATABASE=NC6000 laptop + +pci:v00001217d00007223sv000010CFsd000011C4* + ID_MODEL_FROM_DATABASE=Lifebook P5020D Laptop + +pci:v00001217d00007233* + ID_MODEL_FROM_DATABASE=OZ711MP3/MS3 4-in-1 MemoryCardBus Controller + +pci:v00001217d00008120* + ID_MODEL_FROM_DATABASE=Integrated MMC/SD Controller + +pci:v00001217d00008130* + ID_MODEL_FROM_DATABASE=Integrated MS/MSPRO/xD Controller + +pci:v00001217d00008320* + ID_MODEL_FROM_DATABASE=OZ600 MMC/SD Controller + +pci:v00001217d00008320sv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00001217d00008321* + ID_MODEL_FROM_DATABASE=Integrated MMC/SD controller + +pci:v00001217d00008330* + ID_MODEL_FROM_DATABASE=OZ600 MS/xD Controller + +pci:v00001217d00008330sv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00001217d00008331* + ID_MODEL_FROM_DATABASE=O2 Flash Memory Card + +pci:v00001218* + ID_VENDOR_FROM_DATABASE=Hybricon Corp. + +pci:v00001219* + ID_VENDOR_FROM_DATABASE=First Virtual Corporation + +pci:v0000121A* + ID_VENDOR_FROM_DATABASE=3Dfx Interactive, Inc. + +pci:v0000121Ad00000001* + ID_MODEL_FROM_DATABASE=Voodoo + +pci:v0000121Ad00000002* + ID_MODEL_FROM_DATABASE=Voodoo 2 + +pci:v0000121Ad00000003* + ID_MODEL_FROM_DATABASE=Voodoo Banshee + +pci:v0000121Ad00000003sv00001092sd00000003* + ID_MODEL_FROM_DATABASE=Monster Fusion + +pci:v0000121Ad00000003sv00001092sd00004000* + ID_MODEL_FROM_DATABASE=Monster Fusion + +pci:v0000121Ad00000003sv00001092sd00004002* + ID_MODEL_FROM_DATABASE=Monster Fusion + +pci:v0000121Ad00000003sv00001092sd00004801* + ID_MODEL_FROM_DATABASE=Monster Fusion AGP + +pci:v0000121Ad00000003sv00001092sd00004803* + ID_MODEL_FROM_DATABASE=Monster Fusion AGP + +pci:v0000121Ad00000003sv00001092sd00008030* + ID_MODEL_FROM_DATABASE=Monster Fusion + +pci:v0000121Ad00000003sv00001092sd00008035* + ID_MODEL_FROM_DATABASE=Monster Fusion AGP + +pci:v0000121Ad00000003sv000010B0sd00000001* + ID_MODEL_FROM_DATABASE=Dragon 4000 + +pci:v0000121Ad00000003sv00001102sd00001017* + ID_MODEL_FROM_DATABASE=3D Blaster Banshee PCI (CT6760) + +pci:v0000121Ad00000003sv00001102sd00001018* + ID_MODEL_FROM_DATABASE=3D Blaster Banshee VE + +pci:v0000121Ad00000003sv0000121Asd00000001* + ID_MODEL_FROM_DATABASE=Voodoo Banshee AGP + +pci:v0000121Ad00000003sv0000121Asd00000003* + ID_MODEL_FROM_DATABASE=Voodoo Banshee AGP SGRAM + +pci:v0000121Ad00000003sv0000121Asd00000004* + ID_MODEL_FROM_DATABASE=Voodoo Banshee + +pci:v0000121Ad00000003sv0000139Csd00000016* + ID_MODEL_FROM_DATABASE=Raven + +pci:v0000121Ad00000003sv0000139Csd00000017* + ID_MODEL_FROM_DATABASE=Raven + +pci:v0000121Ad00000003sv000014AFsd00000002* + ID_MODEL_FROM_DATABASE=Maxi Gamer Phoenix + +pci:v0000121Ad00000004* + ID_MODEL_FROM_DATABASE=Voodoo Banshee [Velocity 100] + +pci:v0000121Ad00000005* + ID_MODEL_FROM_DATABASE=Voodoo 3 + +pci:v0000121Ad00000005sv0000121Asd00000004* + ID_MODEL_FROM_DATABASE=Voodoo3 AGP + +pci:v0000121Ad00000005sv0000121Asd00000030* + ID_MODEL_FROM_DATABASE=Voodoo3 AGP + +pci:v0000121Ad00000005sv0000121Asd00000031* + ID_MODEL_FROM_DATABASE=Voodoo3 AGP + +pci:v0000121Ad00000005sv0000121Asd00000034* + ID_MODEL_FROM_DATABASE=Voodoo3 AGP + +pci:v0000121Ad00000005sv0000121Asd00000036* + ID_MODEL_FROM_DATABASE=Voodoo3 2000 PCI + +pci:v0000121Ad00000005sv0000121Asd00000037* + ID_MODEL_FROM_DATABASE=Voodoo3 AGP + +pci:v0000121Ad00000005sv0000121Asd00000038* + ID_MODEL_FROM_DATABASE=Voodoo3 AGP + +pci:v0000121Ad00000005sv0000121Asd0000003A* + ID_MODEL_FROM_DATABASE=Voodoo3 AGP + +pci:v0000121Ad00000005sv0000121Asd00000044* + ID_MODEL_FROM_DATABASE=Voodoo3 + +pci:v0000121Ad00000005sv0000121Asd0000004B* + ID_MODEL_FROM_DATABASE=Velocity 100 + +pci:v0000121Ad00000005sv0000121Asd0000004C* + ID_MODEL_FROM_DATABASE=Velocity 200 + +pci:v0000121Ad00000005sv0000121Asd0000004D* + ID_MODEL_FROM_DATABASE=Voodoo3 AGP + +pci:v0000121Ad00000005sv0000121Asd0000004E* + ID_MODEL_FROM_DATABASE=Voodoo3 AGP + +pci:v0000121Ad00000005sv0000121Asd00000051* + ID_MODEL_FROM_DATABASE=Voodoo3 AGP + +pci:v0000121Ad00000005sv0000121Asd00000052* + ID_MODEL_FROM_DATABASE=Voodoo3 AGP + +pci:v0000121Ad00000005sv0000121Asd00000057* + ID_MODEL_FROM_DATABASE=Voodoo3 3000 PCI + +pci:v0000121Ad00000005sv0000121Asd00000060* + ID_MODEL_FROM_DATABASE=Voodoo3 3500 TV (NTSC) + +pci:v0000121Ad00000005sv0000121Asd00000061* + ID_MODEL_FROM_DATABASE=Voodoo3 3500 TV (PAL) + +pci:v0000121Ad00000005sv0000121Asd00000062* + ID_MODEL_FROM_DATABASE=Voodoo3 3500 TV (SECAM) + +pci:v0000121Ad00000009* + ID_MODEL_FROM_DATABASE=Voodoo 4 / Voodoo 5 + +pci:v0000121Ad00000009sv0000121Asd00000003* + ID_MODEL_FROM_DATABASE=Voodoo5 PCI 5500 + +pci:v0000121Ad00000009sv0000121Asd00000009* + ID_MODEL_FROM_DATABASE=Voodoo5 AGP 5500/6000 + +pci:v0000121Ad00000057* + ID_MODEL_FROM_DATABASE=Voodoo 3/3000 [Avenger] + +pci:v0000121B* + ID_VENDOR_FROM_DATABASE=Advanced Telecommunications Modules + +pci:v0000121C* + ID_VENDOR_FROM_DATABASE=Nippon Texaco., Ltd + +pci:v0000121D* + ID_VENDOR_FROM_DATABASE=LiPPERT ADLINK Technology GmbH + +pci:v0000121E* + ID_VENDOR_FROM_DATABASE=CSPI + +pci:v0000121Ed00000201* + ID_MODEL_FROM_DATABASE=Myrinet 2000 Scalable Cluster Interconnect + +pci:v0000121F* + ID_VENDOR_FROM_DATABASE=Arcus Technology, Inc. + +pci:v00001220* + ID_VENDOR_FROM_DATABASE=Ariel Corporation + +pci:v00001220d00001220* + ID_MODEL_FROM_DATABASE=AMCC 5933 TMS320C80 DSP/Imaging board + +pci:v00001221* + ID_VENDOR_FROM_DATABASE=Contec Co., Ltd + +pci:v00001221d00009172* + ID_MODEL_FROM_DATABASE=PO-64L(PCI)H [Isolated Digital Output Board for PCI] + +pci:v00001221d000091A2* + ID_MODEL_FROM_DATABASE=PO-32L(PCI)H [Isolated Digital Output Board for PCI] + +pci:v00001221d000091C3* + ID_MODEL_FROM_DATABASE=DA16-16(LPCI)L [Un-insulated highly precise analog output board for Low Profile PCI] + +pci:v00001221d0000B152* + ID_MODEL_FROM_DATABASE=DIO-96D2-LPCI + +pci:v00001221d0000C103* + ID_MODEL_FROM_DATABASE=ADA16-32/2(PCI)F [High-Speed Analog I/O Board for PCI] + +pci:v00001222* + ID_VENDOR_FROM_DATABASE=Ancor Communications, Inc. + +pci:v00001223* + ID_VENDOR_FROM_DATABASE=Artesyn Communication Products + +pci:v00001223d00000003* + ID_MODEL_FROM_DATABASE=PM/Link + +pci:v00001223d00000004* + ID_MODEL_FROM_DATABASE=PM/T1 + +pci:v00001223d00000005* + ID_MODEL_FROM_DATABASE=PM/E1 + +pci:v00001223d00000008* + ID_MODEL_FROM_DATABASE=PM/SLS + +pci:v00001223d00000009* + ID_MODEL_FROM_DATABASE=BajaSpan Resource Target + +pci:v00001223d0000000A* + ID_MODEL_FROM_DATABASE=BajaSpan Section 0 + +pci:v00001223d0000000B* + ID_MODEL_FROM_DATABASE=BajaSpan Section 1 + +pci:v00001223d0000000C* + ID_MODEL_FROM_DATABASE=BajaSpan Section 2 + +pci:v00001223d0000000D* + ID_MODEL_FROM_DATABASE=BajaSpan Section 3 + +pci:v00001223d0000000E* + ID_MODEL_FROM_DATABASE=PM/PPC + +pci:v00001224* + ID_VENDOR_FROM_DATABASE=Interactive Images + +pci:v00001225* + ID_VENDOR_FROM_DATABASE=Power I/O, Inc. + +pci:v00001227* + ID_VENDOR_FROM_DATABASE=Tech-Source + +pci:v00001227d00000006* + ID_MODEL_FROM_DATABASE=Raptor GFX 8P + +pci:v00001227d00000023* + ID_MODEL_FROM_DATABASE=Raptor GFX [1100T] + +pci:v00001227d00000045* + ID_MODEL_FROM_DATABASE=Raptor 4000-L [Linux version] + +pci:v00001227d0000004A* + ID_MODEL_FROM_DATABASE=Raptor 4000-LR-L [Linux version] + +pci:v00001228* + ID_VENDOR_FROM_DATABASE=Norsk Elektro Optikk A/S + +pci:v00001229* + ID_VENDOR_FROM_DATABASE=Data Kinesis Inc. + +pci:v0000122A* + ID_VENDOR_FROM_DATABASE=Integrated Telecom + +pci:v0000122B* + ID_VENDOR_FROM_DATABASE=LG Industrial Systems Co., Ltd + +pci:v0000122C* + ID_VENDOR_FROM_DATABASE=Sican GmbH + +pci:v0000122D* + ID_VENDOR_FROM_DATABASE=Aztech System Ltd + +pci:v0000122Dd00001206* + ID_MODEL_FROM_DATABASE=368DSP + +pci:v0000122Dd00001400* + ID_MODEL_FROM_DATABASE=Trident PCI288-Q3DII (NX) + +pci:v0000122Dd000050DC* + ID_MODEL_FROM_DATABASE=3328 Audio + +pci:v0000122Dd000050DCsv0000122Dsd00000001* + ID_MODEL_FROM_DATABASE=3328 Audio + +pci:v0000122Dd000080DA* + ID_MODEL_FROM_DATABASE=3328 Audio + +pci:v0000122Dd000080DAsv0000122Dsd00000001* + ID_MODEL_FROM_DATABASE=3328 Audio + +pci:v0000122E* + ID_VENDOR_FROM_DATABASE=Xyratex + +pci:v0000122Ed00007722* + ID_MODEL_FROM_DATABASE=Napatech XL1 + +pci:v0000122Ed00007724* + ID_MODEL_FROM_DATABASE=Napatech XL2/XA + +pci:v0000122Ed00007729* + ID_MODEL_FROM_DATABASE=Napatech XD + +pci:v0000122F* + ID_VENDOR_FROM_DATABASE=Andrew Corporation + +pci:v00001230* + ID_VENDOR_FROM_DATABASE=Fishcamp Engineering + +pci:v00001231* + ID_VENDOR_FROM_DATABASE=Woodward McCoach, Inc. + +pci:v00001231d000004E1* + ID_MODEL_FROM_DATABASE=Desktop PCI Telephony 4 + +pci:v00001231d000005E1* + ID_MODEL_FROM_DATABASE=Desktop PCI Telephony 5/6 + +pci:v00001231d00000D00* + ID_MODEL_FROM_DATABASE=LightParser + +pci:v00001231d00000D02* + ID_MODEL_FROM_DATABASE=LightParser 2 + +pci:v00001231d00000D13* + ID_MODEL_FROM_DATABASE=Desktop PCI L1/L3 Telephony + +pci:v00001232* + ID_VENDOR_FROM_DATABASE=GPT Limited + +pci:v00001233* + ID_VENDOR_FROM_DATABASE=Bus-Tech, Inc. + +pci:v00001235* + ID_VENDOR_FROM_DATABASE=Risq Modular Systems, Inc. + +pci:v00001236* + ID_VENDOR_FROM_DATABASE=Sigma Designs Corporation + +pci:v00001236d00000000* + ID_MODEL_FROM_DATABASE=RealMagic64/GX + +pci:v00001236d00006401* + ID_MODEL_FROM_DATABASE=REALmagic 64/GX (SD 6425) + +pci:v00001237* + ID_VENDOR_FROM_DATABASE=Alta Technology Corporation + +pci:v00001238* + ID_VENDOR_FROM_DATABASE=Adtran + +pci:v00001239* + ID_VENDOR_FROM_DATABASE=3DO Company + +pci:v0000123A* + ID_VENDOR_FROM_DATABASE=Visicom Laboratories, Inc. + +pci:v0000123B* + ID_VENDOR_FROM_DATABASE=Seeq Technology, Inc. + +pci:v0000123C* + ID_VENDOR_FROM_DATABASE=Century Systems, Inc. + +pci:v0000123D* + ID_VENDOR_FROM_DATABASE=Engineering Design Team, Inc. + +pci:v0000123Dd00000000* + ID_MODEL_FROM_DATABASE=EasyConnect 8/32 + +pci:v0000123Dd00000002* + ID_MODEL_FROM_DATABASE=EasyConnect 8/64 + +pci:v0000123Dd00000003* + ID_MODEL_FROM_DATABASE=EasyIO + +pci:v0000123E* + ID_VENDOR_FROM_DATABASE=Simutech, Inc. + +pci:v0000123F* + ID_VENDOR_FROM_DATABASE=C-Cube Microsystems + +pci:v0000123Fd000000E4* + ID_MODEL_FROM_DATABASE=MPEG + +pci:v0000123Fd00008120* + ID_MODEL_FROM_DATABASE=E4? + +pci:v0000123Fd00008120sv000011BDsd00000006* + ID_MODEL_FROM_DATABASE=DV500 E4 + +pci:v0000123Fd00008120sv000011BDsd0000000A* + ID_MODEL_FROM_DATABASE=DV500 E4 + +pci:v0000123Fd00008120sv000011BDsd0000000F* + ID_MODEL_FROM_DATABASE=DV500 E4 + +pci:v0000123Fd00008120sv00001809sd00000016* + ID_MODEL_FROM_DATABASE=Emuzed MAUI-III PCI PVR FM TV + +pci:v0000123Fd00008888* + ID_MODEL_FROM_DATABASE=Cinemaster C 3.0 DVD Decoder + +pci:v0000123Fd00008888sv00001002sd00000001* + ID_MODEL_FROM_DATABASE=Cinemaster C 3.0 DVD Decoder + +pci:v0000123Fd00008888sv00001002sd00000002* + ID_MODEL_FROM_DATABASE=Cinemaster C 3.0 DVD Decoder + +pci:v0000123Fd00008888sv00001328sd00000001* + ID_MODEL_FROM_DATABASE=Cinemaster C 3.0 DVD Decoder + +pci:v00001240* + ID_VENDOR_FROM_DATABASE=Marathon Technologies Corp. + +pci:v00001241* + ID_VENDOR_FROM_DATABASE=DSC Communications + +pci:v00001242* + ID_VENDOR_FROM_DATABASE=JNI Corporation + +pci:v00001242d00001560* + ID_MODEL_FROM_DATABASE=JNIC-1560 PCI-X Fibre Channel Controller + +pci:v00001242d00001560sv00001242sd00006562* + ID_MODEL_FROM_DATABASE=FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter + +pci:v00001242d00001560sv00001242sd0000656A* + ID_MODEL_FROM_DATABASE=FCX-6562 PCI-X Fibre Channel Adapter + +pci:v00001242d00004643* + ID_MODEL_FROM_DATABASE=FCI-1063 Fibre Channel Adapter + +pci:v00001242d00006562* + ID_MODEL_FROM_DATABASE=FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter + +pci:v00001242d0000656A* + ID_MODEL_FROM_DATABASE=FCX-6562 PCI-X Fibre Channel Adapter + +pci:v00001243* + ID_VENDOR_FROM_DATABASE=Delphax + +pci:v00001244* + ID_VENDOR_FROM_DATABASE=AVM GmbH + +pci:v00001244d00000700* + ID_MODEL_FROM_DATABASE=B1 ISDN + +pci:v00001244d00000800* + ID_MODEL_FROM_DATABASE=C4 ISDN + +pci:v00001244d00000A00* + ID_MODEL_FROM_DATABASE=A1 ISDN [Fritz] + +pci:v00001244d00000A00sv00001244sd00000A00* + ID_MODEL_FROM_DATABASE=FRITZ!Card ISDN Controller + +pci:v00001244d00000E00* + ID_MODEL_FROM_DATABASE=Fritz!PCI v2.0 ISDN + +pci:v00001244d00001100* + ID_MODEL_FROM_DATABASE=C2 ISDN + +pci:v00001244d00001200* + ID_MODEL_FROM_DATABASE=T1 ISDN + +pci:v00001244d00002700* + ID_MODEL_FROM_DATABASE=Fritz!Card DSL SL + +pci:v00001244d00002900* + ID_MODEL_FROM_DATABASE=Fritz!Card DSL v2.0 + +pci:v00001245* + ID_VENDOR_FROM_DATABASE=A.P.D., S.A. + +pci:v00001246* + ID_VENDOR_FROM_DATABASE=Dipix Technologies, Inc. + +pci:v00001247* + ID_VENDOR_FROM_DATABASE=Xylon Research, Inc. + +pci:v00001248* + ID_VENDOR_FROM_DATABASE=Central Data Corporation + +pci:v00001249* + ID_VENDOR_FROM_DATABASE=Samsung Electronics Co., Ltd. + +pci:v0000124A* + ID_VENDOR_FROM_DATABASE=AEG Electrocom GmbH + +pci:v0000124B* + ID_VENDOR_FROM_DATABASE=SBS/Greenspring Modular I/O + +pci:v0000124Bd00000040* + ID_MODEL_FROM_DATABASE=PCI-40A or cPCI-200 Quad IndustryPack carrier + +pci:v0000124Bd00000040sv0000124Bsd00009080* + ID_MODEL_FROM_DATABASE=PCI9080 Bridge + +pci:v0000124C* + ID_VENDOR_FROM_DATABASE=Solitron Technologies, Inc. + +pci:v0000124D* + ID_VENDOR_FROM_DATABASE=Stallion Technologies, Inc. + +pci:v0000124Dd00000000* + ID_MODEL_FROM_DATABASE=EasyConnection 8/32 + +pci:v0000124Dd00000002* + ID_MODEL_FROM_DATABASE=EasyConnection 8/64 + +pci:v0000124Dd00000003* + ID_MODEL_FROM_DATABASE=EasyIO + +pci:v0000124Dd00000004* + ID_MODEL_FROM_DATABASE=EasyConnection/RA + +pci:v0000124E* + ID_VENDOR_FROM_DATABASE=Cylink + +pci:v0000124F* + ID_VENDOR_FROM_DATABASE=Infortrend Technology, Inc. + +pci:v0000124Fd00000041* + ID_MODEL_FROM_DATABASE=IFT-2000 Series RAID Controller + +pci:v00001250* + ID_VENDOR_FROM_DATABASE=Hitachi Microcomputer System Ltd + +pci:v00001251* + ID_VENDOR_FROM_DATABASE=VLSI Solutions Oy + +pci:v00001253* + ID_VENDOR_FROM_DATABASE=Guzik Technical Enterprises + +pci:v00001254* + ID_VENDOR_FROM_DATABASE=Linear Systems Ltd. + +pci:v00001254d00000065* + ID_MODEL_FROM_DATABASE=DVB Master FD + +pci:v00001254d0000007C* + ID_MODEL_FROM_DATABASE=DVB Master Quad/o + +pci:v00001255* + ID_VENDOR_FROM_DATABASE=Optibase Ltd + +pci:v00001255d00001110* + ID_MODEL_FROM_DATABASE=MPEG Forge + +pci:v00001255d00001210* + ID_MODEL_FROM_DATABASE=MPEG Fusion + +pci:v00001255d00002110* + ID_MODEL_FROM_DATABASE=VideoPlex + +pci:v00001255d00002120* + ID_MODEL_FROM_DATABASE=VideoPlex CC + +pci:v00001255d00002130* + ID_MODEL_FROM_DATABASE=VideoQuest + +pci:v00001256* + ID_VENDOR_FROM_DATABASE=Perceptive Solutions, Inc. + +pci:v00001256d00004201* + ID_MODEL_FROM_DATABASE=PCI-2220I + +pci:v00001256d00004401* + ID_MODEL_FROM_DATABASE=PCI-2240I + +pci:v00001256d00005201* + ID_MODEL_FROM_DATABASE=PCI-2000 + +pci:v00001257* + ID_VENDOR_FROM_DATABASE=Vertex Networks, Inc. + +pci:v00001258* + ID_VENDOR_FROM_DATABASE=Gilbarco, Inc. + +pci:v00001259* + ID_VENDOR_FROM_DATABASE=Allied Telesis + +pci:v00001259d00002560* + ID_MODEL_FROM_DATABASE=AT-2560 Fast Ethernet Adapter (i82557B) + +pci:v00001259d00002801* + ID_MODEL_FROM_DATABASE=AT-2801FX (RTL-8139) + +pci:v00001259d0000A117* + ID_MODEL_FROM_DATABASE=RTL81xx Fast Ethernet + +pci:v00001259d0000A11E* + ID_MODEL_FROM_DATABASE=RTL81xx Fast Ethernet + +pci:v00001259d0000A120* + ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet + +pci:v0000125A* + ID_VENDOR_FROM_DATABASE=ABB Power Systems + +pci:v0000125B* + ID_VENDOR_FROM_DATABASE=Asix Electronics Corporation + +pci:v0000125Bd00001400* + ID_MODEL_FROM_DATABASE=AX88141 Fast Ethernet Controller + +pci:v0000125Bd00001400sv00001186sd00001100* + ID_MODEL_FROM_DATABASE=AX8814X Based PCI Fast Ethernet Adapter + +pci:v0000125C* + ID_VENDOR_FROM_DATABASE=Aurora Technologies, Inc. + +pci:v0000125Cd00000101* + ID_MODEL_FROM_DATABASE=Saturn 4520P + +pci:v0000125Cd00000640* + ID_MODEL_FROM_DATABASE=Aries 16000P + +pci:v0000125D* + ID_VENDOR_FROM_DATABASE=ESS Technology + +pci:v0000125Dd00000000* + ID_MODEL_FROM_DATABASE=ES336H Fax Modem (Early Model) + +pci:v0000125Dd00001948* + ID_MODEL_FROM_DATABASE=ES1948 Maestro-1 + +pci:v0000125Dd00001968* + ID_MODEL_FROM_DATABASE=ES1968 Maestro 2 + +pci:v0000125Dd00001968sv00001028sd00000085* + ID_MODEL_FROM_DATABASE=ES1968 Maestro-2 PCI + +pci:v0000125Dd00001968sv00001033sd00008051* + ID_MODEL_FROM_DATABASE=ES1968 Maestro-2 Audiodrive + +pci:v0000125Dd00001969* + ID_MODEL_FROM_DATABASE=ES1938/ES1946/ES1969 Solo-1 Audiodrive + +pci:v0000125Dd00001969sv00001014sd00000166* + ID_MODEL_FROM_DATABASE=ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard + +pci:v0000125Dd00001969sv0000125Dsd00008888* + ID_MODEL_FROM_DATABASE=Solo-1 Audio Adapter + +pci:v0000125Dd00001969sv0000153Bsd0000111B* + ID_MODEL_FROM_DATABASE=Terratec 128i PCI + +pci:v0000125Dd00001978* + ID_MODEL_FROM_DATABASE=ES1978 Maestro 2E + +pci:v0000125Dd00001978sv00000E11sd0000B112* + ID_MODEL_FROM_DATABASE=Armada M700/E500 + +pci:v0000125Dd00001978sv00001033sd0000803C* + ID_MODEL_FROM_DATABASE=ES1978 Maestro-2E Audiodrive + +pci:v0000125Dd00001978sv00001033sd00008058* + ID_MODEL_FROM_DATABASE=ES1978 Maestro-2E Audiodrive + +pci:v0000125Dd00001978sv00001092sd00004000* + ID_MODEL_FROM_DATABASE=Monster Sound MX400 + +pci:v0000125Dd00001978sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=ES1978 Maestro-2E Audiodrive + +pci:v0000125Dd00001988* + ID_MODEL_FROM_DATABASE=ES1988 Allegro-1 + +pci:v0000125Dd00001988sv00000E11sd00000098* + ID_MODEL_FROM_DATABASE=Evo N600c + +pci:v0000125Dd00001988sv00001092sd00004100* + ID_MODEL_FROM_DATABASE=Sonic Impact S100 + +pci:v0000125Dd00001988sv0000125Dsd00000431* + ID_MODEL_FROM_DATABASE=Allegro AudioDrive + +pci:v0000125Dd00001988sv0000125Dsd00001988* + ID_MODEL_FROM_DATABASE=ESS Allegro-1 Audiodrive + +pci:v0000125Dd00001988sv0000125Dsd00001998* + ID_MODEL_FROM_DATABASE=Allegro AudioDrive + +pci:v0000125Dd00001988sv0000125Dsd00001999* + ID_MODEL_FROM_DATABASE=Allegro-1 AudioDrive + +pci:v0000125Dd00001989* + ID_MODEL_FROM_DATABASE=ESS Modem + +pci:v0000125Dd00001989sv0000125Dsd00001989* + ID_MODEL_FROM_DATABASE=ESS Modem + +pci:v0000125Dd00001998* + ID_MODEL_FROM_DATABASE=ES1983S Maestro-3i PCI Audio Accelerator + +pci:v0000125Dd00001998sv00001028sd000000B1* + ID_MODEL_FROM_DATABASE=Latitude C600 + +pci:v0000125Dd00001998sv00001028sd000000E5* + ID_MODEL_FROM_DATABASE=Latitude C810 + +pci:v0000125Dd00001998sv00001028sd000000E6* + ID_MODEL_FROM_DATABASE=ES1983S Maestro-3i (Dell Inspiron 8100) + +pci:v0000125Dd00001999* + ID_MODEL_FROM_DATABASE=ES1983S Maestro-3i PCI Modem Accelerator + +pci:v0000125Dd0000199A* + ID_MODEL_FROM_DATABASE=ES1983S Maestro-3i PCI Audio Accelerator + +pci:v0000125Dd0000199B* + ID_MODEL_FROM_DATABASE=ES1983S Maestro-3i PCI Modem Accelerator + +pci:v0000125Dd00002808* + ID_MODEL_FROM_DATABASE=ES336H Fax Modem (Later Model) + +pci:v0000125Dd00002838* + ID_MODEL_FROM_DATABASE=ES2838/2839 SuperLink Modem + +pci:v0000125Dd00002898* + ID_MODEL_FROM_DATABASE=ES2898 Modem + +pci:v0000125Dd00002898sv0000125Dsd00000424* + ID_MODEL_FROM_DATABASE=ES56-PI Data Fax Modem + +pci:v0000125Dd00002898sv0000125Dsd00000425* + ID_MODEL_FROM_DATABASE=ES56T-PI Data Fax Modem + +pci:v0000125Dd00002898sv0000125Dsd00000426* + ID_MODEL_FROM_DATABASE=ES56V-PI Data Fax Modem + +pci:v0000125Dd00002898sv0000125Dsd00000427* + ID_MODEL_FROM_DATABASE=VW-PI Data Fax Modem + +pci:v0000125Dd00002898sv0000125Dsd00000428* + ID_MODEL_FROM_DATABASE=ES56ST-PI Data Fax Modem + +pci:v0000125Dd00002898sv0000125Dsd00000429* + ID_MODEL_FROM_DATABASE=ES56SV-PI Data Fax Modem + +pci:v0000125Dd00002898sv0000147Asd0000C001* + ID_MODEL_FROM_DATABASE=ES56-PI Data Fax Modem + +pci:v0000125Dd00002898sv0000148Dsd00001030* + ID_MODEL_FROM_DATABASE=HCF WV-PI56 [ESS ES56-PI Data Fax Modem] + +pci:v0000125Dd00002898sv000014FEsd00000428* + ID_MODEL_FROM_DATABASE=ES56-PI Data Fax Modem + +pci:v0000125Dd00002898sv000014FEsd00000429* + ID_MODEL_FROM_DATABASE=ES56-PI Data Fax Modem + +pci:v0000125E* + ID_VENDOR_FROM_DATABASE=Specialvideo Engineering SRL + +pci:v0000125F* + ID_VENDOR_FROM_DATABASE=Concurrent Technologies, Inc. + +pci:v00001260* + ID_VENDOR_FROM_DATABASE=Intersil Corporation + +pci:v00001260d00003872* + ID_MODEL_FROM_DATABASE=ISL3872 [Prism 3] + +pci:v00001260d00003872sv00001468sd00000202* + ID_MODEL_FROM_DATABASE=LAN-Express IEEE 802.11b Wireless LAN + +pci:v00001260d00003873* + ID_MODEL_FROM_DATABASE=ISL3874 [Prism 2.5]/ISL3872 [Prism 3] + +pci:v00001260d00003873sv000010CFsd00001169* + ID_MODEL_FROM_DATABASE=MBH7WM01-8734 802.11b Wireless Mini PCI Card [ISL3874] + +pci:v00001260d00003873sv00001186sd00003501* + ID_MODEL_FROM_DATABASE=DWL-520 Wireless PCI Adapter (rev A or B) [ISL3874] + +pci:v00001260d00003873sv00001186sd00003700* + ID_MODEL_FROM_DATABASE=DWL-520 Wireless PCI Adapter (rev E1) [ISL3872] + +pci:v00001260d00003873sv00001385sd00004105* + ID_MODEL_FROM_DATABASE=MA311 802.11b wireless adapter [ISL3874] + +pci:v00001260d00003873sv00001668sd00000414* + ID_MODEL_FROM_DATABASE=HWP01170-01 802.11b PCI Wireless Adapter + +pci:v00001260d00003873sv000016A5sd00001601* + ID_MODEL_FROM_DATABASE=AIR.mate PC-400 PCI Wireless LAN Adapter + +pci:v00001260d00003873sv00001737sd00003874* + ID_MODEL_FROM_DATABASE=WMP11 v1 802.11b Wireless-B PCI Adapter [ISL3874] + +pci:v00001260d00003873sv00004033sd00007033* + ID_MODEL_FROM_DATABASE=PCW200 802.11b Wireless PCI Adapter [ISL3874] + +pci:v00001260d00003873sv00008086sd00002510* + ID_MODEL_FROM_DATABASE=M3AWEB Wireless 802.11b MiniPCI Adapter + +pci:v00001260d00003873sv00008086sd00002513* + ID_MODEL_FROM_DATABASE=Wireless 802.11b MiniPCI Adapter + +pci:v00001260d00003877* + ID_MODEL_FROM_DATABASE=ISL3877 [Prism Indigo] + +pci:v00001260d00003886* + ID_MODEL_FROM_DATABASE=ISL3886 [Prism Javelin/Prism Xbow] + +pci:v00001260d00003886sv000017CFsd00000037* + ID_MODEL_FROM_DATABASE=XG-901 and clones Wireless Adapter + +pci:v00001260d00003890* + ID_MODEL_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] + +pci:v00001260d00003890sv000010B8sd00002802* + ID_MODEL_FROM_DATABASE=SMC2802W V1 Wireless PCI Adapter [ISL3890] + +pci:v00001260d00003890sv000010B8sd00002835* + ID_MODEL_FROM_DATABASE=SMC2835W Wireless Cardbus Adapter + +pci:v00001260d00003890sv000010B8sd0000A835* + ID_MODEL_FROM_DATABASE=SMC2835W V2 Wireless Cardbus Adapter + +pci:v00001260d00003890sv00001113sd00004203* + ID_MODEL_FROM_DATABASE=WN4201B + +pci:v00001260d00003890sv00001113sd00008201* + ID_MODEL_FROM_DATABASE=T-Com T-Sinus 154pcicard Wireless PCI Adapter + +pci:v00001260d00003890sv00001113sd0000B301* + ID_MODEL_FROM_DATABASE=T-Sinus 154card Cardbus + +pci:v00001260d00003890sv00001113sd0000EE03* + ID_MODEL_FROM_DATABASE=SMC2802W V2 Wireless PCI Adapter [ISL3886] + +pci:v00001260d00003890sv00001113sd0000EE08* + ID_MODEL_FROM_DATABASE=SMC2835W V3 EU Wireless Cardbus Adapter + +pci:v00001260d00003890sv00001186sd00003202* + ID_MODEL_FROM_DATABASE=DWL-G650 A1 Wireless Adapter + +pci:v00001260d00003890sv00001259sd0000C104* + ID_MODEL_FROM_DATABASE=CG-WLCB54GT Wireless Adapter + +pci:v00001260d00003890sv00001260sd00000000* + ID_MODEL_FROM_DATABASE=WG511 v1 54 Mbps Wireless PC Card + +pci:v00001260d00003890sv00001385sd00004800* + ID_MODEL_FROM_DATABASE=WG511 v2/v3 54 Mbps Wireless PC Card + +pci:v00001260d00003890sv000016A5sd00001605* + ID_MODEL_FROM_DATABASE=ALLNET ALL0271 Wireless PCI Adapter + +pci:v00001260d00003890sv000017CFsd00000014* + ID_MODEL_FROM_DATABASE=XG-600 and clones Wireless Adapter + +pci:v00001260d00003890sv000017CFsd00000020* + ID_MODEL_FROM_DATABASE=XG-900 and clones Wireless Adapter + +pci:v00001260d00003890sv0000187Esd00003403* + ID_MODEL_FROM_DATABASE=G-110 802.11g Wireless Cardbus Adapter + +pci:v00001260d00008130* + ID_MODEL_FROM_DATABASE=HMP8130 NTSC/PAL Video Decoder + +pci:v00001260d00008131* + ID_MODEL_FROM_DATABASE=HMP8131 NTSC/PAL Video Decoder + +pci:v00001260d0000FFFF* + ID_MODEL_FROM_DATABASE=ISL3886IK + +pci:v00001260d0000FFFFsv00001260sd00000000* + ID_MODEL_FROM_DATABASE=Senao 3054MP+ (J) mini-PCI WLAN 802.11g adapter + +pci:v00001261* + ID_VENDOR_FROM_DATABASE=Matsushita-Kotobuki Electronics Industries, Ltd. + +pci:v00001262* + ID_VENDOR_FROM_DATABASE=ES Computer Company, Ltd. + +pci:v00001263* + ID_VENDOR_FROM_DATABASE=Sonic Solutions + +pci:v00001264* + ID_VENDOR_FROM_DATABASE=Aval Nagasaki Corporation + +pci:v00001265* + ID_VENDOR_FROM_DATABASE=Casio Computer Co., Ltd. + +pci:v00001266* + ID_VENDOR_FROM_DATABASE=Microdyne Corporation + +pci:v00001266d00000001* + ID_MODEL_FROM_DATABASE=NE10/100 Adapter (i82557B) + +pci:v00001266d00001910* + ID_MODEL_FROM_DATABASE=NE2000Plus (RT8029) Ethernet Adapter + +pci:v00001266d00001910sv00001266sd00001910* + ID_MODEL_FROM_DATABASE=NE2000Plus Ethernet Adapter + +pci:v00001267* + ID_VENDOR_FROM_DATABASE=S. A. Telecommunications + +pci:v00001267d00005352* + ID_MODEL_FROM_DATABASE=PCR2101 + +pci:v00001267d00005A4B* + ID_MODEL_FROM_DATABASE=Telsat Turbo + +pci:v00001268* + ID_VENDOR_FROM_DATABASE=Tektronix + +pci:v00001269* + ID_VENDOR_FROM_DATABASE=Thomson-CSF/TTM + +pci:v0000126A* + ID_VENDOR_FROM_DATABASE=Lexmark International, Inc. + +pci:v0000126B* + ID_VENDOR_FROM_DATABASE=Adax, Inc. + +pci:v0000126C* + ID_VENDOR_FROM_DATABASE=Northern Telecom + +pci:v0000126Cd00001211* + ID_MODEL_FROM_DATABASE=10/100BaseTX [RTL81xx] + +pci:v0000126Cd0000126C* + ID_MODEL_FROM_DATABASE=802.11b Wireless Ethernet Adapter + +pci:v0000126D* + ID_VENDOR_FROM_DATABASE=Splash Technology, Inc. + +pci:v0000126E* + ID_VENDOR_FROM_DATABASE=Sumitomo Metal Industries, Ltd. + +pci:v0000126F* + ID_VENDOR_FROM_DATABASE=Silicon Motion, Inc. + +pci:v0000126Fd00000501* + ID_MODEL_FROM_DATABASE=SM501 VoyagerGX Rev. AA + +pci:v0000126Fd00000510* + ID_MODEL_FROM_DATABASE=SM501 VoyagerGX Rev. B + +pci:v0000126Fd00000710* + ID_MODEL_FROM_DATABASE=SM710 LynxEM + +pci:v0000126Fd00000712* + ID_MODEL_FROM_DATABASE=SM712 LynxEM+ + +pci:v0000126Fd00000720* + ID_MODEL_FROM_DATABASE=SM720 Lynx3DM + +pci:v0000126Fd00000730* + ID_MODEL_FROM_DATABASE=SM731 Cougar3DR + +pci:v0000126Fd00000810* + ID_MODEL_FROM_DATABASE=SM810 LynxE + +pci:v0000126Fd00000811* + ID_MODEL_FROM_DATABASE=SM811 LynxE + +pci:v0000126Fd00000820* + ID_MODEL_FROM_DATABASE=SM820 Lynx3D + +pci:v0000126Fd00000910* + ID_MODEL_FROM_DATABASE=SM910 + +pci:v00001270* + ID_VENDOR_FROM_DATABASE=Olympus Optical Co., Ltd. + +pci:v00001271* + ID_VENDOR_FROM_DATABASE=GW Instruments + +pci:v00001272* + ID_VENDOR_FROM_DATABASE=Telematics International + +pci:v00001273* + ID_VENDOR_FROM_DATABASE=Hughes Network Systems + +pci:v00001273d00000002* + ID_MODEL_FROM_DATABASE=DirecPC + +pci:v00001274* + ID_VENDOR_FROM_DATABASE=Ensoniq + +pci:v00001274d00001171* + ID_MODEL_FROM_DATABASE=ES1373 [AudioPCI] (also Creative Labs CT5803) + +pci:v00001274d00001371* + ID_MODEL_FROM_DATABASE=ES1371 [AudioPCI-97] + +pci:v00001274d00001371sv00000E11sd00000024* + ID_MODEL_FROM_DATABASE=AudioPCI on Motherboard Compaq Deskpro + +pci:v00001274d00001371sv00000E11sd0000B1A7* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI + +pci:v00001274d00001371sv00001033sd000080AC* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI + +pci:v00001274d00001371sv00001042sd00001854* + ID_MODEL_FROM_DATABASE=Tazer + +pci:v00001274d00001371sv0000107Bsd00008054* + ID_MODEL_FROM_DATABASE=Tabor2 + +pci:v00001274d00001371sv00001274sd00001371* + ID_MODEL_FROM_DATABASE=Creative Sound Blaster AudioPCI64V, AudioPCI128 + +pci:v00001274d00001371sv00001274sd00008001* + ID_MODEL_FROM_DATABASE=CT4751 board + +pci:v00001274d00001371sv00001462sd00006470* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A + +pci:v00001274d00001371sv00001462sd00006560* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10 + +pci:v00001274d00001371sv00001462sd00006630* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 1.0A + +pci:v00001274d00001371sv00001462sd00006631* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 1.0A + +pci:v00001274d00001371sv00001462sd00006632* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 2.0A + +pci:v00001274d00001371sv00001462sd00006633* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 2.0A + +pci:v00001274d00001371sv00001462sd00006820* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00 + +pci:v00001274d00001371sv00001462sd00006822* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00A + +pci:v00001274d00001371sv00001462sd00006830* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6183 1.00 + +pci:v00001274d00001371sv00001462sd00006880* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6188 1.00 + +pci:v00001274d00001371sv00001462sd00006900* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6190 1.00 + +pci:v00001274d00001371sv00001462sd00006910* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6191 + +pci:v00001274d00001371sv00001462sd00006930* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6193 + +pci:v00001274d00001371sv00001462sd00006990* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6199BX 2.0A + +pci:v00001274d00001371sv00001462sd00006991* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6199VIA 2.0A + +pci:v00001274d00001371sv000014A4sd00002077* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KR639 + +pci:v00001274d00001371sv000014A4sd00002105* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MR800 + +pci:v00001274d00001371sv000014A4sd00002107* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MR801 + +pci:v00001274d00001371sv000014A4sd00002172* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard DR739 + +pci:v00001274d00001371sv00001509sd00009902* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KW11 + +pci:v00001274d00001371sv00001509sd00009903* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KW31 + +pci:v00001274d00001371sv00001509sd00009904* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KA11 + +pci:v00001274d00001371sv00001509sd00009905* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KC13 + +pci:v00001274d00001371sv0000152Dsd00008801* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard CP810E + +pci:v00001274d00001371sv0000152Dsd00008802* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard CP810 + +pci:v00001274d00001371sv0000152Dsd00008803* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard P3810E + +pci:v00001274d00001371sv0000152Dsd00008804* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard P3810-S + +pci:v00001274d00001371sv0000152Dsd00008805* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard P3820-S + +pci:v00001274d00001371sv0000270Fsd00002001* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6CTR + +pci:v00001274d00001371sv0000270Fsd00002200* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6WTX + +pci:v00001274d00001371sv0000270Fsd00003000* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6WSV + +pci:v00001274d00001371sv0000270Fsd00003100* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6WIV2 + +pci:v00001274d00001371sv0000270Fsd00003102* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6WIV + +pci:v00001274d00001371sv0000270Fsd00007060* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6ASA2 + +pci:v00001274d00001371sv00008086sd00004249* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard BI440ZX + +pci:v00001274d00001371sv00008086sd0000424C* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard BL440ZX + +pci:v00001274d00001371sv00008086sd0000425A* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard BZ440ZX + +pci:v00001274d00001371sv00008086sd00004341* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Cayman + +pci:v00001274d00001371sv00008086sd00004343* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Cape Cod + +pci:v00001274d00001371sv00008086sd00004541* + ID_MODEL_FROM_DATABASE=D815EEA Motherboard + +pci:v00001274d00001371sv00008086sd00004649* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Fire Island + +pci:v00001274d00001371sv00008086sd0000464A* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard FJ440ZX + +pci:v00001274d00001371sv00008086sd00004D4F* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Montreal + +pci:v00001274d00001371sv00008086sd00004F43* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard OC440LX + +pci:v00001274d00001371sv00008086sd00005243* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard RC440BX + +pci:v00001274d00001371sv00008086sd00005352* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard SunRiver + +pci:v00001274d00001371sv00008086sd00005643* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Vancouver + +pci:v00001274d00001371sv00008086sd00005753* + ID_MODEL_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard WS440BX + +pci:v00001274d00005000* + ID_MODEL_FROM_DATABASE=ES1370 [AudioPCI] + +pci:v00001274d00005880* + ID_MODEL_FROM_DATABASE=5880B [AudioPCI] + +pci:v00001274d00005880sv00001274sd00002000* + ID_MODEL_FROM_DATABASE=Creative Sound Blaster AudioPCI128 + +pci:v00001274d00005880sv00001274sd00002003* + ID_MODEL_FROM_DATABASE=Creative SoundBlaster AudioPCI 128 + +pci:v00001274d00005880sv00001274sd00005880* + ID_MODEL_FROM_DATABASE=Creative Sound Blaster AudioPCI128 + +pci:v00001274d00005880sv00001274sd00008001* + ID_MODEL_FROM_DATABASE=Sound Blaster 16PCI 4.1ch + +pci:v00001274d00005880sv00001458sd0000A000* + ID_MODEL_FROM_DATABASE=5880 AudioPCI On Motherboard 6OXET + +pci:v00001274d00005880sv00001462sd00006880* + ID_MODEL_FROM_DATABASE=5880 AudioPCI On Motherboard MS-6188 1.00 + +pci:v00001274d00005880sv0000270Fsd00002001* + ID_MODEL_FROM_DATABASE=5880 AudioPCI On Motherboard 6CTR + +pci:v00001274d00005880sv0000270Fsd00002200* + ID_MODEL_FROM_DATABASE=5880 AudioPCI On Motherboard 6WTX + +pci:v00001274d00005880sv0000270Fsd00007040* + ID_MODEL_FROM_DATABASE=5880 AudioPCI On Motherboard 6ATA4 + +pci:v00001274d00008001* + ID_MODEL_FROM_DATABASE=CT5880 [AudioPCI] + +pci:v00001274d00008002* + ID_MODEL_FROM_DATABASE=5880A [AudioPCI] + +pci:v00001275* + ID_VENDOR_FROM_DATABASE=Network Appliance Corporation + +pci:v00001276* + ID_VENDOR_FROM_DATABASE=Switched Network Technologies, Inc. + +pci:v00001277* + ID_VENDOR_FROM_DATABASE=Comstream + +pci:v00001278* + ID_VENDOR_FROM_DATABASE=Transtech Parallel Systems Ltd. + +pci:v00001278d00000701* + ID_MODEL_FROM_DATABASE=TPE3/TM3 PowerPC Node + +pci:v00001278d00000710* + ID_MODEL_FROM_DATABASE=TPE5 PowerPC PCI board + +pci:v00001278d00001100* + ID_MODEL_FROM_DATABASE=PMC-FPGA02 + +pci:v00001278d00001101* + ID_MODEL_FROM_DATABASE=TS-C43 card with 4 ADSP-TS101 processors + +pci:v00001279* + ID_VENDOR_FROM_DATABASE=Transmeta Corporation + +pci:v00001279d00000060* + ID_MODEL_FROM_DATABASE=TM8000 Northbridge + +pci:v00001279d00000061* + ID_MODEL_FROM_DATABASE=TM8000 AGP bridge + +pci:v00001279d00000295* + ID_MODEL_FROM_DATABASE=Northbridge + +pci:v00001279d00000395* + ID_MODEL_FROM_DATABASE=LongRun Northbridge + +pci:v00001279d00000396* + ID_MODEL_FROM_DATABASE=SDRAM controller + +pci:v00001279d00000397* + ID_MODEL_FROM_DATABASE=BIOS scratchpad + +pci:v0000127A* + ID_VENDOR_FROM_DATABASE=Rockwell International + +pci:v0000127Ad00001002* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem + +pci:v0000127Ad00001002sv00001092sd0000094C* + ID_MODEL_FROM_DATABASE=SupraExpress 56i PRO [Diamond SUP2380] + +pci:v0000127Ad00001002sv0000122Dsd00004002* + ID_MODEL_FROM_DATABASE=HPG / MDP3858-U + +pci:v0000127Ad00001002sv0000122Dsd00004005* + ID_MODEL_FROM_DATABASE=MDP3858-E + +pci:v0000127Ad00001002sv0000122Dsd00004007* + ID_MODEL_FROM_DATABASE=MDP3858-A/-NZ + +pci:v0000127Ad00001002sv0000122Dsd00004012* + ID_MODEL_FROM_DATABASE=MDP3858-SA + +pci:v0000127Ad00001002sv0000122Dsd00004017* + ID_MODEL_FROM_DATABASE=MDP3858-W + +pci:v0000127Ad00001002sv0000122Dsd00004018* + ID_MODEL_FROM_DATABASE=MDP3858-W + +pci:v0000127Ad00001002sv0000127Asd00001002* + ID_MODEL_FROM_DATABASE=Rockwell 56K D/F HCF Modem + +pci:v0000127Ad00001003* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem + +pci:v0000127Ad00001003sv00000E11sd0000B0BC* + ID_MODEL_FROM_DATABASE=229-DF Zephyr + +pci:v0000127Ad00001003sv00000E11sd0000B114* + ID_MODEL_FROM_DATABASE=229-DF Cheetah + +pci:v0000127Ad00001003sv00001033sd0000802B* + ID_MODEL_FROM_DATABASE=229-DF + +pci:v0000127Ad00001003sv000013DFsd00001003* + ID_MODEL_FROM_DATABASE=PCI56RX Modem + +pci:v0000127Ad00001003sv000013E0sd00000117* + ID_MODEL_FROM_DATABASE=IBM + +pci:v0000127Ad00001003sv000013E0sd00000147* + ID_MODEL_FROM_DATABASE=IBM F-1156IV+/R3 Spain V.90 Modem + +pci:v0000127Ad00001003sv000013E0sd00000197* + ID_MODEL_FROM_DATABASE=IBM + +pci:v0000127Ad00001003sv000013E0sd000001C7* + ID_MODEL_FROM_DATABASE=IBM F-1156IV+/R3 WW V.90 Modem + +pci:v0000127Ad00001003sv000013E0sd000001F7* + ID_MODEL_FROM_DATABASE=IBM + +pci:v0000127Ad00001003sv00001436sd00001003* + ID_MODEL_FROM_DATABASE=IBM + +pci:v0000127Ad00001003sv00001436sd00001103* + ID_MODEL_FROM_DATABASE=IBM 5614PM3G V.90 Modem + +pci:v0000127Ad00001003sv00001436sd00001602* + ID_MODEL_FROM_DATABASE=Compaq 229-DF Ducati + +pci:v0000127Ad00001004* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem + +pci:v0000127Ad00001004sv00001048sd00001500* + ID_MODEL_FROM_DATABASE=MicroLink 56k Modem + +pci:v0000127Ad00001004sv000010CFsd00001059* + ID_MODEL_FROM_DATABASE=Fujitsu 229-DFRT + +pci:v0000127Ad00001005* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + +pci:v0000127Ad00001005sv00001005sd0000127A* + ID_MODEL_FROM_DATABASE=AOpen FM56-P + +pci:v0000127Ad00001005sv00001033sd00008029* + ID_MODEL_FROM_DATABASE=229-DFSV + +pci:v0000127Ad00001005sv00001033sd00008054* + ID_MODEL_FROM_DATABASE=Modem + +pci:v0000127Ad00001005sv000010CFsd0000103C* + ID_MODEL_FROM_DATABASE=Fujitsu + +pci:v0000127Ad00001005sv000010CFsd00001055* + ID_MODEL_FROM_DATABASE=Fujitsu 229-DFSV + +pci:v0000127Ad00001005sv000010CFsd00001056* + ID_MODEL_FROM_DATABASE=Fujitsu 229-DFSV + +pci:v0000127Ad00001005sv0000122Dsd00004003* + ID_MODEL_FROM_DATABASE=MDP3858SP-U + +pci:v0000127Ad00001005sv0000122Dsd00004006* + ID_MODEL_FROM_DATABASE=Packard Bell MDP3858V-E + +pci:v0000127Ad00001005sv0000122Dsd00004008* + ID_MODEL_FROM_DATABASE=MDP3858SP-A/SP-NZ + +pci:v0000127Ad00001005sv0000122Dsd00004009* + ID_MODEL_FROM_DATABASE=MDP3858SP-E + +pci:v0000127Ad00001005sv0000122Dsd00004010* + ID_MODEL_FROM_DATABASE=MDP3858V-U + +pci:v0000127Ad00001005sv0000122Dsd00004011* + ID_MODEL_FROM_DATABASE=MDP3858SP-SA + +pci:v0000127Ad00001005sv0000122Dsd00004013* + ID_MODEL_FROM_DATABASE=MDP3858V-A/V-NZ + +pci:v0000127Ad00001005sv0000122Dsd00004015* + ID_MODEL_FROM_DATABASE=MDP3858SP-W + +pci:v0000127Ad00001005sv0000122Dsd00004016* + ID_MODEL_FROM_DATABASE=MDP3858V-W + +pci:v0000127Ad00001005sv0000122Dsd00004019* + ID_MODEL_FROM_DATABASE=MDP3858V-SA + +pci:v0000127Ad00001005sv000013DFsd00001005* + ID_MODEL_FROM_DATABASE=PCI56RVP Modem + +pci:v0000127Ad00001005sv000013E0sd00000187* + ID_MODEL_FROM_DATABASE=IBM + +pci:v0000127Ad00001005sv000013E0sd000001A7* + ID_MODEL_FROM_DATABASE=IBM + +pci:v0000127Ad00001005sv000013E0sd000001B7* + ID_MODEL_FROM_DATABASE=IBM DF-1156IV+/R3 Spain V.90 Modem + +pci:v0000127Ad00001005sv000013E0sd000001D7* + ID_MODEL_FROM_DATABASE=IBM DF-1156IV+/R3 WW V.90 Modem + +pci:v0000127Ad00001005sv00001436sd00001005* + ID_MODEL_FROM_DATABASE=IBM + +pci:v0000127Ad00001005sv00001436sd00001105* + ID_MODEL_FROM_DATABASE=IBM + +pci:v0000127Ad00001005sv00001437sd00001105* + ID_MODEL_FROM_DATABASE=IBM 5614PS3G V.90 Modem + +pci:v0000127Ad00001022* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v0000127Ad00001022sv00001436sd00001303* + ID_MODEL_FROM_DATABASE=M3-5614PM3G V.90 Modem + +pci:v0000127Ad00001023* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem + +pci:v0000127Ad00001023sv0000122Dsd00004020* + ID_MODEL_FROM_DATABASE=Packard Bell MDP3858-WE + +pci:v0000127Ad00001023sv0000122Dsd00004023* + ID_MODEL_FROM_DATABASE=MDP3858-UE + +pci:v0000127Ad00001023sv000013E0sd00000247* + ID_MODEL_FROM_DATABASE=IBM F-1156IV+/R6 Spain V.90 Modem + +pci:v0000127Ad00001023sv000013E0sd00000297* + ID_MODEL_FROM_DATABASE=IBM + +pci:v0000127Ad00001023sv000013E0sd000002C7* + ID_MODEL_FROM_DATABASE=IBM F-1156IV+/R6 WW V.90 Modem + +pci:v0000127Ad00001023sv00001436sd00001203* + ID_MODEL_FROM_DATABASE=IBM + +pci:v0000127Ad00001023sv00001436sd00001303* + ID_MODEL_FROM_DATABASE=IBM + +pci:v0000127Ad00001024* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem + +pci:v0000127Ad00001025* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + +pci:v0000127Ad00001025sv000010CFsd0000106A* + ID_MODEL_FROM_DATABASE=Fujitsu 235-DFSV + +pci:v0000127Ad00001025sv0000122Dsd00004021* + ID_MODEL_FROM_DATABASE=Packard Bell MDP3858V-WE + +pci:v0000127Ad00001025sv0000122Dsd00004022* + ID_MODEL_FROM_DATABASE=MDP3858SP-WE + +pci:v0000127Ad00001025sv0000122Dsd00004024* + ID_MODEL_FROM_DATABASE=MDP3858V-UE + +pci:v0000127Ad00001025sv0000122Dsd00004025* + ID_MODEL_FROM_DATABASE=MDP3858SP-UE + +pci:v0000127Ad00001026* + ID_MODEL_FROM_DATABASE=HCF 56k PCI Speakerphone Modem + +pci:v0000127Ad00001032* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v0000127Ad00001033* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v0000127Ad00001034* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v0000127Ad00001035* + ID_MODEL_FROM_DATABASE=HCF 56k PCI Speakerphone Modem + +pci:v0000127Ad00001036* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v0000127Ad00001085* + ID_MODEL_FROM_DATABASE=HCF 56k Volcano PCI Modem + +pci:v0000127Ad00002004* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + +pci:v0000127Ad00002005* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem + +pci:v0000127Ad00002005sv0000104Dsd00008044* + ID_MODEL_FROM_DATABASE=229-DFSV + +pci:v0000127Ad00002005sv0000104Dsd00008045* + ID_MODEL_FROM_DATABASE=229-DFSV + +pci:v0000127Ad00002005sv0000104Dsd00008055* + ID_MODEL_FROM_DATABASE=PBE/Aztech 235W-DFSV + +pci:v0000127Ad00002005sv0000104Dsd00008056* + ID_MODEL_FROM_DATABASE=235-DFSV + +pci:v0000127Ad00002005sv0000104Dsd0000805A* + ID_MODEL_FROM_DATABASE=Modem + +pci:v0000127Ad00002005sv0000104Dsd0000805F* + ID_MODEL_FROM_DATABASE=Modem + +pci:v0000127Ad00002005sv0000104Dsd00008074* + ID_MODEL_FROM_DATABASE=Modem + +pci:v0000127Ad00002013* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem + +pci:v0000127Ad00002013sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Modem + +pci:v0000127Ad00002013sv00001179sd0000FF00* + ID_MODEL_FROM_DATABASE=Modem + +pci:v0000127Ad00002014* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem + +pci:v0000127Ad00002014sv000010CFsd00001057* + ID_MODEL_FROM_DATABASE=Fujitsu Citicorp III + +pci:v0000127Ad00002014sv0000122Dsd00004050* + ID_MODEL_FROM_DATABASE=MSP3880-U + +pci:v0000127Ad00002014sv0000122Dsd00004055* + ID_MODEL_FROM_DATABASE=MSP3880-W + +pci:v0000127Ad00002015* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + +pci:v0000127Ad00002015sv000010CFsd00001063* + ID_MODEL_FROM_DATABASE=Fujitsu + +pci:v0000127Ad00002015sv000010CFsd00001064* + ID_MODEL_FROM_DATABASE=Fujitsu + +pci:v0000127Ad00002015sv00001468sd00002015* + ID_MODEL_FROM_DATABASE=Fujitsu + +pci:v0000127Ad00002016* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem + +pci:v0000127Ad00002016sv0000122Dsd00004051* + ID_MODEL_FROM_DATABASE=MSP3880V-W + +pci:v0000127Ad00002016sv0000122Dsd00004052* + ID_MODEL_FROM_DATABASE=MSP3880SP-W + +pci:v0000127Ad00002016sv0000122Dsd00004054* + ID_MODEL_FROM_DATABASE=MSP3880V-U + +pci:v0000127Ad00002016sv0000122Dsd00004056* + ID_MODEL_FROM_DATABASE=MSP3880SP-U + +pci:v0000127Ad00002016sv0000122Dsd00004057* + ID_MODEL_FROM_DATABASE=MSP3880SP-A + +pci:v0000127Ad00004311* + ID_MODEL_FROM_DATABASE=Riptide HSF 56k PCI Modem + +pci:v0000127Ad00004311sv0000127Asd00004311* + ID_MODEL_FROM_DATABASE=Ring Modular? Riptide HSF RT HP Dom + +pci:v0000127Ad00004311sv000013E0sd00000210* + ID_MODEL_FROM_DATABASE=HP-GVC + +pci:v0000127Ad00004320* + ID_MODEL_FROM_DATABASE=Riptide PCI Audio Controller + +pci:v0000127Ad00004320sv00001235sd00004320* + ID_MODEL_FROM_DATABASE=Riptide PCI Audio Controller + +pci:v0000127Ad00004321* + ID_MODEL_FROM_DATABASE=Riptide HCF 56k PCI Modem + +pci:v0000127Ad00004321sv00001235sd00004321* + ID_MODEL_FROM_DATABASE=Hewlett Packard DF + +pci:v0000127Ad00004321sv00001235sd00004324* + ID_MODEL_FROM_DATABASE=Hewlett Packard DF + +pci:v0000127Ad00004321sv000013E0sd00000210* + ID_MODEL_FROM_DATABASE=Hewlett Packard DF + +pci:v0000127Ad00004321sv0000144Dsd00002321* + ID_MODEL_FROM_DATABASE=Riptide + +pci:v0000127Ad00004322* + ID_MODEL_FROM_DATABASE=Riptide PCI Game Controller + +pci:v0000127Ad00004322sv00001235sd00004322* + ID_MODEL_FROM_DATABASE=Riptide PCI Game Controller + +pci:v0000127Ad00008234* + ID_MODEL_FROM_DATABASE=RapidFire 616X ATM155 Adapter + +pci:v0000127Ad00008234sv0000108Dsd00000022* + ID_MODEL_FROM_DATABASE=RapidFire 616X ATM155 Adapter + +pci:v0000127Ad00008234sv0000108Dsd00000027* + ID_MODEL_FROM_DATABASE=RapidFire 616X ATM155 Adapter + +pci:v0000127B* + ID_VENDOR_FROM_DATABASE=Pixera Corporation + +pci:v0000127C* + ID_VENDOR_FROM_DATABASE=Crosspoint Solutions, Inc. + +pci:v0000127D* + ID_VENDOR_FROM_DATABASE=Vela Research + +pci:v0000127E* + ID_VENDOR_FROM_DATABASE=Winnov, L.P. + +pci:v0000127Ed00000010* + ID_MODEL_FROM_DATABASE=Videum 1000 Plus + +pci:v0000127F* + ID_VENDOR_FROM_DATABASE=Fujifilm + +pci:v00001280* + ID_VENDOR_FROM_DATABASE=Photoscript Group Ltd. + +pci:v00001281* + ID_VENDOR_FROM_DATABASE=Yokogawa Electric Corporation + +pci:v00001282* + ID_VENDOR_FROM_DATABASE=Davicom Semiconductor, Inc. + +pci:v00001282d00006585* + ID_MODEL_FROM_DATABASE=DM562P V90 Modem + +pci:v00001282d00009009* + ID_MODEL_FROM_DATABASE=Ethernet 100/10 MBit + +pci:v00001282d00009100* + ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet + +pci:v00001282d00009102* + ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet + +pci:v00001282d00009102sv00000291sd00008212* + ID_MODEL_FROM_DATABASE=DM9102A (DM9102AE, SM9102AF) Ethernet 100/10 MBit + +pci:v00001282d00009132* + ID_MODEL_FROM_DATABASE=Ethernet 100/10 MBit + +pci:v00001283* + ID_VENDOR_FROM_DATABASE=Integrated Technology Express, Inc. + +pci:v00001283d0000673A* + ID_MODEL_FROM_DATABASE=IT8330G + +pci:v00001283d00008152* + ID_MODEL_FROM_DATABASE=IT8152F/G Advanced RISC-to-PCI Companion Chip + +pci:v00001283d00008211* + ID_MODEL_FROM_DATABASE=ITE 8211F Single Channel UDMA 133 + +pci:v00001283d00008211sv00001043sd00008138* + ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard + +pci:v00001283d00008212* + ID_MODEL_FROM_DATABASE=IT8212 Dual channel ATA RAID controller + +pci:v00001283d00008212sv00001283sd00000001* + ID_MODEL_FROM_DATABASE=IT/ITE8212 Dual channel ATA RAID controller + +pci:v00001283d00008213* + ID_MODEL_FROM_DATABASE=IT8213 IDE Controller + +pci:v00001283d00008213sv00001458sd0000B000* + ID_MODEL_FROM_DATABASE=GA-EG45M-DS2H Mainboard + +pci:v00001283d00008330* + ID_MODEL_FROM_DATABASE=IT8330G + +pci:v00001283d00008872* + ID_MODEL_FROM_DATABASE=IT8874F PCI Dual Serial Port Controller + +pci:v00001283d00008888* + ID_MODEL_FROM_DATABASE=IT8888F/G PCI to ISA Bridge with SMB [Golden Gate] + +pci:v00001283d00008889* + ID_MODEL_FROM_DATABASE=IT8889F PCI to ISA Bridge + +pci:v00001283d0000E886* + ID_MODEL_FROM_DATABASE=IT8330G + +pci:v00001284* + ID_VENDOR_FROM_DATABASE=Sahara Networks, Inc. + +pci:v00001285* + ID_VENDOR_FROM_DATABASE=Platform Technologies, Inc. + +pci:v00001285d00000100* + ID_MODEL_FROM_DATABASE=AGOGO sound chip (aka ESS Maestro 1) + +pci:v00001286* + ID_VENDOR_FROM_DATABASE=Mazet GmbH + +pci:v00001287* + ID_VENDOR_FROM_DATABASE=M-Pact, Inc. + +pci:v00001287d0000001E* + ID_MODEL_FROM_DATABASE=LS220D DVD Decoder + +pci:v00001287d0000001F* + ID_MODEL_FROM_DATABASE=LS220C DVD Decoder + +pci:v00001288* + ID_VENDOR_FROM_DATABASE=Timestep Corporation + +pci:v00001289* + ID_VENDOR_FROM_DATABASE=AVC Technology, Inc. + +pci:v0000128A* + ID_VENDOR_FROM_DATABASE=Asante Technologies, Inc. + +pci:v0000128B* + ID_VENDOR_FROM_DATABASE=Transwitch Corporation + +pci:v0000128C* + ID_VENDOR_FROM_DATABASE=Retix Corporation + +pci:v0000128D* + ID_VENDOR_FROM_DATABASE=G2 Networks, Inc. + +pci:v0000128Dd00000021* + ID_MODEL_FROM_DATABASE=ATM155 Adapter + +pci:v0000128E* + ID_VENDOR_FROM_DATABASE=Hoontech Corporation/Samho Multi Tech Ltd. + +pci:v0000128Ed00000008* + ID_MODEL_FROM_DATABASE=ST128 WSS/SB + +pci:v0000128Ed00000009* + ID_MODEL_FROM_DATABASE=ST128 SAM9407 + +pci:v0000128Ed0000000A* + ID_MODEL_FROM_DATABASE=ST128 Game Port + +pci:v0000128Ed0000000B* + ID_MODEL_FROM_DATABASE=ST128 MPU Port + +pci:v0000128Ed0000000C* + ID_MODEL_FROM_DATABASE=ST128 Ctrl Port + +pci:v0000128F* + ID_VENDOR_FROM_DATABASE=Tateno Dennou, Inc. + +pci:v00001290* + ID_VENDOR_FROM_DATABASE=Sord Computer Corporation + +pci:v00001291* + ID_VENDOR_FROM_DATABASE=NCS Computer Italia + +pci:v00001292* + ID_VENDOR_FROM_DATABASE=Tritech Microelectronics Inc + +pci:v00001292d0000FC02* + ID_MODEL_FROM_DATABASE=Pyramid3D TR25202 + +pci:v00001293* + ID_VENDOR_FROM_DATABASE=Media Reality Technology + +pci:v00001294* + ID_VENDOR_FROM_DATABASE=Rhetorex, Inc. + +pci:v00001295* + ID_VENDOR_FROM_DATABASE=Imagenation Corporation + +pci:v00001295d00000800* + ID_MODEL_FROM_DATABASE=PXR800 + +pci:v00001295d00001000* + ID_MODEL_FROM_DATABASE=PXD1000 + +pci:v00001296* + ID_VENDOR_FROM_DATABASE=Kofax Image Products + +pci:v00001297* + ID_VENDOR_FROM_DATABASE=Holco Enterprise Co, Ltd/Shuttle Computer + +pci:v00001298* + ID_VENDOR_FROM_DATABASE=Spellcaster Telecommunications Inc. + +pci:v00001299* + ID_VENDOR_FROM_DATABASE=Knowledge Technology Lab. + +pci:v0000129A* + ID_VENDOR_FROM_DATABASE=VMetro, inc. + +pci:v0000129Ad00000615* + ID_MODEL_FROM_DATABASE=PBT-615 PCI-X Bus Analyzer + +pci:v0000129Ad00001100* + ID_MODEL_FROM_DATABASE=PMC-FPGA05 + +pci:v0000129Ad00001106* + ID_MODEL_FROM_DATABASE=XMC-FPGA05F, PCI interface + +pci:v0000129Ad00001107* + ID_MODEL_FROM_DATABASE=XMC-FPGA05F, PCIe interface + +pci:v0000129Ad00001108* + ID_MODEL_FROM_DATABASE=XMC-FPGA05D, PCI interface + +pci:v0000129Ad00001109* + ID_MODEL_FROM_DATABASE=XMC-FPGA05D, PCIe interface + +pci:v0000129B* + ID_VENDOR_FROM_DATABASE=Image Access + +pci:v0000129C* + ID_VENDOR_FROM_DATABASE=Jaycor + +pci:v0000129D* + ID_VENDOR_FROM_DATABASE=Compcore Multimedia, Inc. + +pci:v0000129E* + ID_VENDOR_FROM_DATABASE=Victor Company of Japan, Ltd. + +pci:v0000129F* + ID_VENDOR_FROM_DATABASE=OEC Medical Systems, Inc. + +pci:v000012A0* + ID_VENDOR_FROM_DATABASE=Allen-Bradley Company + +pci:v000012A1* + ID_VENDOR_FROM_DATABASE=Simpact Associates, Inc. + +pci:v000012A2* + ID_VENDOR_FROM_DATABASE=Newgen Systems Corporation + +pci:v000012A3* + ID_VENDOR_FROM_DATABASE=Lucent Technologies + +pci:v000012A3d00008105* + ID_MODEL_FROM_DATABASE=T8105 H100 Digital Switch + +pci:v000012A4* + ID_VENDOR_FROM_DATABASE=NTT Electronics Technology Company + +pci:v000012A5* + ID_VENDOR_FROM_DATABASE=Vision Dynamics Ltd. + +pci:v000012A6* + ID_VENDOR_FROM_DATABASE=Scalable Networks, Inc. + +pci:v000012A7* + ID_VENDOR_FROM_DATABASE=AMO GmbH + +pci:v000012A8* + ID_VENDOR_FROM_DATABASE=News Datacom + +pci:v000012A9* + ID_VENDOR_FROM_DATABASE=Xiotech Corporation + +pci:v000012AA* + ID_VENDOR_FROM_DATABASE=SDL Communications, Inc. + +pci:v000012AB* + ID_VENDOR_FROM_DATABASE=Yuan Yuan Enterprise Co., Ltd. + +pci:v000012ABd00000000* + ID_MODEL_FROM_DATABASE=MPG160/Kuroutoshikou ITVC15-STVLP + +pci:v000012ABd00000002* + ID_MODEL_FROM_DATABASE=AU8830 [Vortex2] Based Sound Card With A3D Support + +pci:v000012ABd00000003* + ID_MODEL_FROM_DATABASE=T507 (DVB-T) TV tuner/capture device + +pci:v000012ABd00002300* + ID_MODEL_FROM_DATABASE=Club-3D Zap TV2100 + +pci:v000012ABd00003000* + ID_MODEL_FROM_DATABASE=MPG-200C PCI DVD Decoder Card + +pci:v000012ABd00004789* + ID_MODEL_FROM_DATABASE=MPC788 MiniPCI Hybrid TV Tuner + +pci:v000012ABd0000FFF3* + ID_MODEL_FROM_DATABASE=MPG600/Kuroutoshikou ITVC16-STVLP + +pci:v000012ABd0000FFFF* + ID_MODEL_FROM_DATABASE=MPG600/Kuroutoshikou ITVC16-STVLP + +pci:v000012AC* + ID_VENDOR_FROM_DATABASE=Measurex Corporation + +pci:v000012AD* + ID_VENDOR_FROM_DATABASE=Multidata GmbH + +pci:v000012AE* + ID_VENDOR_FROM_DATABASE=Alteon Networks Inc. + +pci:v000012AEd00000001* + ID_MODEL_FROM_DATABASE=AceNIC Gigabit Ethernet + +pci:v000012AEd00000001sv00001014sd00000104* + ID_MODEL_FROM_DATABASE=Gigabit Ethernet-SX PCI Adapter + +pci:v000012AEd00000001sv000012AEsd00000001* + ID_MODEL_FROM_DATABASE=Gigabit Ethernet-SX (Universal) + +pci:v000012AEd00000002* + ID_MODEL_FROM_DATABASE=AceNIC Gigabit Ethernet (Copper) + +pci:v000012AEd00000002sv000010A9sd00008002* + ID_MODEL_FROM_DATABASE=Acenic Gigabit Ethernet + +pci:v000012AEd00000002sv000012AEsd00000002* + ID_MODEL_FROM_DATABASE=Gigabit Ethernet-T (3C986-T) + +pci:v000012AEd000000FA* + ID_MODEL_FROM_DATABASE=Farallon PN9100-T Gigabit Ethernet + +pci:v000012AF* + ID_VENDOR_FROM_DATABASE=TDK USA Corp + +pci:v000012B0* + ID_VENDOR_FROM_DATABASE=Jorge Scientific Corp + +pci:v000012B1* + ID_VENDOR_FROM_DATABASE=GammaLink + +pci:v000012B2* + ID_VENDOR_FROM_DATABASE=General Signal Networks + +pci:v000012B3* + ID_VENDOR_FROM_DATABASE=Inter-Face Co Ltd + +pci:v000012B4* + ID_VENDOR_FROM_DATABASE=FutureTel Inc + +pci:v000012B5* + ID_VENDOR_FROM_DATABASE=Granite Systems Inc. + +pci:v000012B6* + ID_VENDOR_FROM_DATABASE=Natural Microsystems + +pci:v000012B7* + ID_VENDOR_FROM_DATABASE=Cognex Modular Vision Systems Div. - Acumen Inc. + +pci:v000012B8* + ID_VENDOR_FROM_DATABASE=Korg + +pci:v000012B9* + ID_VENDOR_FROM_DATABASE=3Com Corp, Modem Division + +pci:v000012B9d00001006* + ID_MODEL_FROM_DATABASE=WinModem + +pci:v000012B9d00001006sv000012B9sd0000005C* + ID_MODEL_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 3472) + +pci:v000012B9d00001006sv000012B9sd0000005E* + ID_MODEL_FROM_DATABASE=USR 56k Internal WinModem (Models 662975) + +pci:v000012B9d00001006sv000012B9sd00000062* + ID_MODEL_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 662978) + +pci:v000012B9d00001006sv000012B9sd00000068* + ID_MODEL_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 5690) + +pci:v000012B9d00001006sv000012B9sd0000007A* + ID_MODEL_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 662974) + +pci:v000012B9d00001006sv000012B9sd0000007F* + ID_MODEL_FROM_DATABASE=USR 56k Internal WinModem (Models 5698, 5699) + +pci:v000012B9d00001006sv000012B9sd00000080* + ID_MODEL_FROM_DATABASE=USR 56k Internal WinModem (Models 2975, 3528) + +pci:v000012B9d00001006sv000012B9sd00000081* + ID_MODEL_FROM_DATABASE=USR 56k Internal Voice WinModem (Models 2974, 3529) + +pci:v000012B9d00001006sv000012B9sd00000091* + ID_MODEL_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 2978) + +pci:v000012B9d00001007* + ID_MODEL_FROM_DATABASE=USR 56k Internal WinModem + +pci:v000012B9d00001007sv000012B9sd000000A3* + ID_MODEL_FROM_DATABASE=USR 56k Internal WinModem (Model 3595) + +pci:v000012B9d00001007sv000012B9sd000000C4* + ID_MODEL_FROM_DATABASE=U.S. Robotics V.92 Voice Faxmodem (2884A/B/C) + +pci:v000012B9d00001008* + ID_MODEL_FROM_DATABASE=56K FaxModem Model 5610 + +pci:v000012B9d00001008sv000012B9sd000000A2* + ID_MODEL_FROM_DATABASE=USR 56k Internal FAX Modem (Model 2977) + +pci:v000012B9d00001008sv000012B9sd000000AA* + ID_MODEL_FROM_DATABASE=USR 56k Internal Voice Modem (Model 2976) + +pci:v000012B9d00001008sv000012B9sd000000AB* + ID_MODEL_FROM_DATABASE=USR 56k Internal Voice Modem (Model 5609) + +pci:v000012B9d00001008sv000012B9sd000000AC* + ID_MODEL_FROM_DATABASE=USR 56k Internal Voice Modem (Model 3298) + +pci:v000012B9d00001008sv000012B9sd000000AD* + ID_MODEL_FROM_DATABASE=USR 56k Internal FAX Modem (Model 5610) + +pci:v000012B9d00001008sv000012B9sd000000D3* + ID_MODEL_FROM_DATABASE=USR 56K Internal V92 FAX Modem (Model 5610) + +pci:v000012B9d00001008sv000012B9sd0000BABA* + ID_MODEL_FROM_DATABASE=USR 56K Internal Voice Modem 3CP3298-DEL (Model 5601) [Hawk] + +pci:v000012BA* + ID_VENDOR_FROM_DATABASE=BittWare, Inc. + +pci:v000012BB* + ID_VENDOR_FROM_DATABASE=Nippon Unisoft Corporation + +pci:v000012BC* + ID_VENDOR_FROM_DATABASE=Array Microsystems + +pci:v000012BD* + ID_VENDOR_FROM_DATABASE=Computerm Corp. + +pci:v000012BE* + ID_VENDOR_FROM_DATABASE=Anchor Chips Inc. + +pci:v000012BEd00003041* + ID_MODEL_FROM_DATABASE=AN3041Q CO-MEM + +pci:v000012BEd00003042* + ID_MODEL_FROM_DATABASE=AN3042Q CO-MEM Lite + +pci:v000012BEd00003042sv000012BEsd00003042* + ID_MODEL_FROM_DATABASE=Anchor Chips Lite Evaluation Board + +pci:v000012BF* + ID_VENDOR_FROM_DATABASE=Fujifilm Microdevices + +pci:v000012C0* + ID_VENDOR_FROM_DATABASE=Infimed + +pci:v000012C1* + ID_VENDOR_FROM_DATABASE=GMM Research Corp + +pci:v000012C2* + ID_VENDOR_FROM_DATABASE=Mentec Limited + +pci:v000012C3* + ID_VENDOR_FROM_DATABASE=Holtek Microelectronics Inc + +pci:v000012C3d00000058* + ID_MODEL_FROM_DATABASE=PCI NE2K Ethernet + +pci:v000012C3d00005598* + ID_MODEL_FROM_DATABASE=PCI NE2K Ethernet + +pci:v000012C4* + ID_VENDOR_FROM_DATABASE=Connect Tech Inc + +pci:v000012C4d00000001* + ID_MODEL_FROM_DATABASE=Blue HEAT/PCI 8 (RS232/CL/RJ11) + +pci:v000012C4d00000002* + ID_MODEL_FROM_DATABASE=Blue HEAT/PCI 4 (RS232) + +pci:v000012C4d00000003* + ID_MODEL_FROM_DATABASE=Blue HEAT/PCI 2 (RS232) + +pci:v000012C4d00000004* + ID_MODEL_FROM_DATABASE=Blue HEAT/PCI 8 (UNIV, RS485) + +pci:v000012C4d00000005* + ID_MODEL_FROM_DATABASE=Blue HEAT/PCI 4+4/6+2 (UNIV, RS232/485) + +pci:v000012C4d00000006* + ID_MODEL_FROM_DATABASE=Blue HEAT/PCI 4 (OPTO, RS485) + +pci:v000012C4d00000007* + ID_MODEL_FROM_DATABASE=Blue HEAT/PCI 2+2 (RS232/485) + +pci:v000012C4d00000008* + ID_MODEL_FROM_DATABASE=Blue HEAT/PCI 2 (OPTO, Tx, RS485) + +pci:v000012C4d00000009* + ID_MODEL_FROM_DATABASE=Blue HEAT/PCI 2+6 (RS232/485) + +pci:v000012C4d0000000A* + ID_MODEL_FROM_DATABASE=Blue HEAT/PCI 8 (Tx, RS485) + +pci:v000012C4d0000000B* + ID_MODEL_FROM_DATABASE=Blue HEAT/PCI 4 (Tx, RS485) + +pci:v000012C4d0000000C* + ID_MODEL_FROM_DATABASE=Blue HEAT/PCI 2 (20 MHz, RS485) + +pci:v000012C4d0000000D* + ID_MODEL_FROM_DATABASE=Blue HEAT/PCI 2 PTM + +pci:v000012C4d00000100* + ID_MODEL_FROM_DATABASE=NT960/PCI + +pci:v000012C4d00000201* + ID_MODEL_FROM_DATABASE=cPCI Titan - 2 Port + +pci:v000012C4d00000202* + ID_MODEL_FROM_DATABASE=cPCI Titan - 4 Port + +pci:v000012C4d00000300* + ID_MODEL_FROM_DATABASE=CTI PCI UART 2 (RS232) + +pci:v000012C4d00000301* + ID_MODEL_FROM_DATABASE=CTI PCI UART 4 (RS232) + +pci:v000012C4d00000302* + ID_MODEL_FROM_DATABASE=CTI PCI UART 8 (RS232) + +pci:v000012C4d00000310* + ID_MODEL_FROM_DATABASE=CTI PCI UART 1+1 (RS232/485) + +pci:v000012C4d00000311* + ID_MODEL_FROM_DATABASE=CTI PCI UART 2+2 (RS232/485) + +pci:v000012C4d00000312* + ID_MODEL_FROM_DATABASE=CTI PCI UART 4+4 (RS232/485) + +pci:v000012C4d00000320* + ID_MODEL_FROM_DATABASE=CTI PCI UART 2 + +pci:v000012C4d00000321* + ID_MODEL_FROM_DATABASE=CTI PCI UART 4 + +pci:v000012C4d00000322* + ID_MODEL_FROM_DATABASE=CTI PCI UART 8 + +pci:v000012C4d00000330* + ID_MODEL_FROM_DATABASE=CTI PCI UART 2 (RS485) + +pci:v000012C4d00000331* + ID_MODEL_FROM_DATABASE=CTI PCI UART 4 (RS485) + +pci:v000012C4d00000332* + ID_MODEL_FROM_DATABASE=CTI PCI UART 8 (RS485) + +pci:v000012C5* + ID_VENDOR_FROM_DATABASE=Picture Elements Incorporated + +pci:v000012C5d0000007E* + ID_MODEL_FROM_DATABASE=Imaging/Scanning Subsystem Engine + +pci:v000012C5d0000007F* + ID_MODEL_FROM_DATABASE=Imaging/Scanning Subsystem Engine + +pci:v000012C5d00000081* + ID_MODEL_FROM_DATABASE=PCIVST [Grayscale Thresholding Engine] + +pci:v000012C5d00000085* + ID_MODEL_FROM_DATABASE=Video Simulator/Sender + +pci:v000012C5d00000086* + ID_MODEL_FROM_DATABASE=THR2 Multi-scale Thresholder + +pci:v000012C6* + ID_VENDOR_FROM_DATABASE=Mitani Corporation + +pci:v000012C7* + ID_VENDOR_FROM_DATABASE=Dialogic Corp + +pci:v000012C7d00000546* + ID_MODEL_FROM_DATABASE=Springware D/120JCT-LS + +pci:v000012C7d00000647* + ID_MODEL_FROM_DATABASE=Springware D/240JCT-T1 + +pci:v000012C7d00000676* + ID_MODEL_FROM_DATABASE=Springware D/41JCT-LS + +pci:v000012C7d00000685* + ID_MODEL_FROM_DATABASE=Springware D/480JCT-2T1 + +pci:v000012C8* + ID_VENDOR_FROM_DATABASE=G Force Co, Ltd + +pci:v000012C9* + ID_VENDOR_FROM_DATABASE=Gigi Operations + +pci:v000012CA* + ID_VENDOR_FROM_DATABASE=Integrated Computing Engines + +pci:v000012CB* + ID_VENDOR_FROM_DATABASE=Antex Electronics Corporation + +pci:v000012CBd00000027* + ID_MODEL_FROM_DATABASE=SC4 (StudioCard) + +pci:v000012CBd0000002E* + ID_MODEL_FROM_DATABASE=StudioCard 2000 + +pci:v000012CC* + ID_VENDOR_FROM_DATABASE=Pluto Technologies International + +pci:v000012CD* + ID_VENDOR_FROM_DATABASE=Aims Lab + +pci:v000012CE* + ID_VENDOR_FROM_DATABASE=Netspeed Inc. + +pci:v000012CF* + ID_VENDOR_FROM_DATABASE=Prophet Systems, Inc. + +pci:v000012D0* + ID_VENDOR_FROM_DATABASE=GDE Systems, Inc. + +pci:v000012D1* + ID_VENDOR_FROM_DATABASE=PSITech + +pci:v000012D2* + ID_VENDOR_FROM_DATABASE=NVidia / SGS Thomson (Joint Venture) + +pci:v000012D2d00000008* + ID_MODEL_FROM_DATABASE=NV1 + +pci:v000012D2d00000009* + ID_MODEL_FROM_DATABASE=DAC64 + +pci:v000012D2d00000018* + ID_MODEL_FROM_DATABASE=Riva128 + +pci:v000012D2d00000018sv00001048sd00000C10* + ID_MODEL_FROM_DATABASE=VICTORY Erazor + +pci:v000012D2d00000018sv0000107Bsd00008030* + ID_MODEL_FROM_DATABASE=STB Velocity 128 + +pci:v000012D2d00000018sv00001092sd00000350* + ID_MODEL_FROM_DATABASE=Viper V330 + +pci:v000012D2d00000018sv00001092sd00001092* + ID_MODEL_FROM_DATABASE=Viper V330 + +pci:v000012D2d00000018sv000010B4sd00001B1B* + ID_MODEL_FROM_DATABASE=STB Velocity 128 + +pci:v000012D2d00000018sv000010B4sd00001B1D* + ID_MODEL_FROM_DATABASE=STB Velocity 128 + +pci:v000012D2d00000018sv000010B4sd00001B1E* + ID_MODEL_FROM_DATABASE=STB Velocity 128, PAL TV-Out + +pci:v000012D2d00000018sv000010B4sd00001B20* + ID_MODEL_FROM_DATABASE=STB Velocity 128 Sapphire + +pci:v000012D2d00000018sv000010B4sd00001B21* + ID_MODEL_FROM_DATABASE=STB Velocity 128 + +pci:v000012D2d00000018sv000010B4sd00001B22* + ID_MODEL_FROM_DATABASE=STB Velocity 128 AGP, NTSC TV-Out + +pci:v000012D2d00000018sv000010B4sd00001B23* + ID_MODEL_FROM_DATABASE=STB Velocity 128 AGP, PAL TV-Out + +pci:v000012D2d00000018sv000010B4sd00001B27* + ID_MODEL_FROM_DATABASE=STB Velocity 128 DVD + +pci:v000012D2d00000018sv000010B4sd00001B88* + ID_MODEL_FROM_DATABASE=MVP Pro 128 + +pci:v000012D2d00000018sv000010B4sd0000222A* + ID_MODEL_FROM_DATABASE=STB Velocity 128 AGP + +pci:v000012D2d00000018sv000010B4sd00002230* + ID_MODEL_FROM_DATABASE=STB Velocity 128 + +pci:v000012D2d00000018sv000010B4sd00002232* + ID_MODEL_FROM_DATABASE=STB Velocity 128 + +pci:v000012D2d00000018sv000010B4sd00002235* + ID_MODEL_FROM_DATABASE=STB Velocity 128 AGP + +pci:v000012D2d00000018sv00002A15sd000054A3* + ID_MODEL_FROM_DATABASE=3DVision-SAGP / 3DexPlorer 3000 + +pci:v000012D2d00000019* + ID_MODEL_FROM_DATABASE=Riva128ZX + +pci:v000012D2d00000020* + ID_MODEL_FROM_DATABASE=TNT + +pci:v000012D2d00000028* + ID_MODEL_FROM_DATABASE=TNT2 + +pci:v000012D2d00000029* + ID_MODEL_FROM_DATABASE=UTNT2 + +pci:v000012D2d0000002C* + ID_MODEL_FROM_DATABASE=VTNT2 + +pci:v000012D2d000000A0* + ID_MODEL_FROM_DATABASE=ITNT2 + +pci:v000012D3* + ID_VENDOR_FROM_DATABASE=Vingmed Sound A/S + +pci:v000012D4* + ID_VENDOR_FROM_DATABASE=Ulticom (Formerly DGM&S) + +pci:v000012D4d00000200* + ID_MODEL_FROM_DATABASE=T1 Card + +pci:v000012D5* + ID_VENDOR_FROM_DATABASE=Equator Technologies Inc + +pci:v000012D5d00000003* + ID_MODEL_FROM_DATABASE=BSP16 + +pci:v000012D5d00001000* + ID_MODEL_FROM_DATABASE=BSP15 + +pci:v000012D6* + ID_VENDOR_FROM_DATABASE=Analogic Corp + +pci:v000012D7* + ID_VENDOR_FROM_DATABASE=Biotronic SRL + +pci:v000012D8* + ID_VENDOR_FROM_DATABASE=Pericom Semiconductor + +pci:v000012D8d000001A7* + ID_MODEL_FROM_DATABASE=PI7C21P100 PCI to PCI Bridge + +pci:v000012D8d0000400A* + ID_MODEL_FROM_DATABASE=PI7C9X442SL PCI Express Bridge Port + +pci:v000012D8d0000400E* + ID_MODEL_FROM_DATABASE=PI7C9X442SL USB OHCI Controller + +pci:v000012D8d0000400F* + ID_MODEL_FROM_DATABASE=PI7C9X442SL USB EHCI Controller + +pci:v000012D8d000071E2* + ID_MODEL_FROM_DATABASE=PI7C7300A/PI7C7300D PCI-to-PCI Bridge + +pci:v000012D8d000071E3* + ID_MODEL_FROM_DATABASE=PI7C7300A/PI7C7300D PCI-to-PCI Bridge (Secondary Bus 2) + +pci:v000012D8d00008140* + ID_MODEL_FROM_DATABASE=PI7C8140A PCI-to-PCI Bridge + +pci:v000012D8d00008148* + ID_MODEL_FROM_DATABASE=PI7C8148A/PI7C8148B PCI-to-PCI Bridge + +pci:v000012D8d00008150* + ID_MODEL_FROM_DATABASE=PCI to PCI Bridge + +pci:v000012D8d00008152* + ID_MODEL_FROM_DATABASE=PI7C8152A/PI7C8152B/PI7C8152BI PCI-to-PCI Bridge + +pci:v000012D8d00008154* + ID_MODEL_FROM_DATABASE=PI7C8154A/PI7C8154B/PI7C8154BI PCI-to-PCI Bridge + +pci:v000012D8d0000E110* + ID_MODEL_FROM_DATABASE=PI7C9X110 PCI Express to PCI bridge + +pci:v000012D8d0000E110sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 CompactPCI Bridge + +pci:v000012D8d0000E130* + ID_MODEL_FROM_DATABASE=PCI Express to PCI-XPI7C9X130 PCI-X Bridge + +pci:v000012D9* + ID_VENDOR_FROM_DATABASE=Aculab PLC + +pci:v000012D9d00000002* + ID_MODEL_FROM_DATABASE=PCI Prosody + +pci:v000012D9d00000004* + ID_MODEL_FROM_DATABASE=cPCI Prosody + +pci:v000012D9d00000005* + ID_MODEL_FROM_DATABASE=Aculab E1/T1 PCI card + +pci:v000012D9d00001078* + ID_MODEL_FROM_DATABASE=Prosody X class e1000 device + +pci:v000012D9d00001078sv000012D9sd0000000D* + ID_MODEL_FROM_DATABASE=Prosody X PCI + +pci:v000012D9d00001078sv000012D9sd0000000E* + ID_MODEL_FROM_DATABASE=Prosody X cPCI + +pci:v000012DA* + ID_VENDOR_FROM_DATABASE=True Time Inc. + +pci:v000012DB* + ID_VENDOR_FROM_DATABASE=Annapolis Micro Systems, Inc + +pci:v000012DC* + ID_VENDOR_FROM_DATABASE=Symicron Computer Communication Ltd. + +pci:v000012DD* + ID_VENDOR_FROM_DATABASE=Management Graphics + +pci:v000012DE* + ID_VENDOR_FROM_DATABASE=Rainbow Technologies + +pci:v000012DEd00000200* + ID_MODEL_FROM_DATABASE=CryptoSwift CS200 + +pci:v000012DF* + ID_VENDOR_FROM_DATABASE=SBS Technologies Inc + +pci:v000012E0* + ID_VENDOR_FROM_DATABASE=Chase Research + +pci:v000012E0d00000010* + ID_MODEL_FROM_DATABASE=ST16C654 Quad UART + +pci:v000012E0d00000020* + ID_MODEL_FROM_DATABASE=ST16C654 Quad UART + +pci:v000012E0d00000030* + ID_MODEL_FROM_DATABASE=ST16C654 Quad UART + +pci:v000012E1* + ID_VENDOR_FROM_DATABASE=Nintendo Co, Ltd + +pci:v000012E2* + ID_VENDOR_FROM_DATABASE=Datum Inc. Bancomm-Timing Division + +pci:v000012E3* + ID_VENDOR_FROM_DATABASE=Imation Corp - Medical Imaging Systems + +pci:v000012E4* + ID_VENDOR_FROM_DATABASE=Brooktrout Technology Inc + +pci:v000012E5* + ID_VENDOR_FROM_DATABASE=Apex Semiconductor Inc + +pci:v000012E6* + ID_VENDOR_FROM_DATABASE=Cirel Systems + +pci:v000012E7* + ID_VENDOR_FROM_DATABASE=Sunsgroup Corporation + +pci:v000012E8* + ID_VENDOR_FROM_DATABASE=Crisc Corp + +pci:v000012E9* + ID_VENDOR_FROM_DATABASE=GE Spacenet + +pci:v000012EA* + ID_VENDOR_FROM_DATABASE=Zuken + +pci:v000012EB* + ID_VENDOR_FROM_DATABASE=Aureal Semiconductor + +pci:v000012EBd00000001* + ID_MODEL_FROM_DATABASE=Vortex 1 + +pci:v000012EBd00000001sv0000104Dsd00008036* + ID_MODEL_FROM_DATABASE=AU8820 Vortex Digital Audio Processor + +pci:v000012EBd00000001sv00001092sd00002000* + ID_MODEL_FROM_DATABASE=Sonic Impact A3D + +pci:v000012EBd00000001sv00001092sd00002100* + ID_MODEL_FROM_DATABASE=Sonic Impact A3D + +pci:v000012EBd00000001sv00001092sd00002110* + ID_MODEL_FROM_DATABASE=Sonic Impact A3D + +pci:v000012EBd00000001sv00001092sd00002200* + ID_MODEL_FROM_DATABASE=Sonic Impact A3D + +pci:v000012EBd00000001sv0000122Dsd00001002* + ID_MODEL_FROM_DATABASE=AU8820 Vortex Digital Audio Processor + +pci:v000012EBd00000001sv000012EBsd00000001* + ID_MODEL_FROM_DATABASE=AU8820 Vortex Digital Audio Processor + +pci:v000012EBd00000001sv00005053sd00003355* + ID_MODEL_FROM_DATABASE=Montego + +pci:v000012EBd00000002* + ID_MODEL_FROM_DATABASE=Vortex 2 + +pci:v000012EBd00000002sv0000104Dsd00008049* + ID_MODEL_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor + +pci:v000012EBd00000002sv0000104Dsd0000807B* + ID_MODEL_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor + +pci:v000012EBd00000002sv00001092sd00003000* + ID_MODEL_FROM_DATABASE=Monster Sound II + +pci:v000012EBd00000002sv00001092sd00003001* + ID_MODEL_FROM_DATABASE=Monster Sound II + +pci:v000012EBd00000002sv00001092sd00003002* + ID_MODEL_FROM_DATABASE=Monster Sound II + +pci:v000012EBd00000002sv00001092sd00003003* + ID_MODEL_FROM_DATABASE=Monster Sound II + +pci:v000012EBd00000002sv00001092sd00003004* + ID_MODEL_FROM_DATABASE=Monster Sound II + +pci:v000012EBd00000002sv000012EBsd00000002* + ID_MODEL_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor + +pci:v000012EBd00000002sv000012EBsd00000088* + ID_MODEL_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor + +pci:v000012EBd00000002sv0000144Dsd00003510* + ID_MODEL_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor + +pci:v000012EBd00000002sv00005053sd00003356* + ID_MODEL_FROM_DATABASE=Montego II + +pci:v000012EBd00000003* + ID_MODEL_FROM_DATABASE=AU8810 Vortex Digital Audio Processor + +pci:v000012EBd00000003sv0000104Dsd00008049* + ID_MODEL_FROM_DATABASE=AU8810 Vortex Digital Audio Processor + +pci:v000012EBd00000003sv0000104Dsd00008077* + ID_MODEL_FROM_DATABASE=AU8810 Vortex Digital Audio Processor + +pci:v000012EBd00000003sv0000109Fsd00001000* + ID_MODEL_FROM_DATABASE=AU8810 Vortex Digital Audio Processor + +pci:v000012EBd00000003sv000012EBsd00000003* + ID_MODEL_FROM_DATABASE=AU8810 Vortex Digital Audio Processor + +pci:v000012EBd00000003sv00001462sd00006780* + ID_MODEL_FROM_DATABASE=AU8810 Vortex Digital Audio Processor + +pci:v000012EBd00000003sv000014A4sd00002073* + ID_MODEL_FROM_DATABASE=AU8810 Vortex Digital Audio Processor + +pci:v000012EBd00000003sv000014A4sd00002091* + ID_MODEL_FROM_DATABASE=AU8810 Vortex Digital Audio Processor + +pci:v000012EBd00000003sv000014A4sd00002104* + ID_MODEL_FROM_DATABASE=AU8810 Vortex Digital Audio Processor + +pci:v000012EBd00000003sv000014A4sd00002106* + ID_MODEL_FROM_DATABASE=AU8810 Vortex Digital Audio Processor + +pci:v000012EBd00008803* + ID_MODEL_FROM_DATABASE=Vortex 56k Software Modem + +pci:v000012EBd00008803sv000012EBsd00008803* + ID_MODEL_FROM_DATABASE=Vortex 56k Software Modem + +pci:v000012EC* + ID_VENDOR_FROM_DATABASE=3A International, Inc. + +pci:v000012ED* + ID_VENDOR_FROM_DATABASE=Optivision Inc. + +pci:v000012EE* + ID_VENDOR_FROM_DATABASE=Orange Micro + +pci:v000012EF* + ID_VENDOR_FROM_DATABASE=Vienna Systems + +pci:v000012F0* + ID_VENDOR_FROM_DATABASE=Pentek + +pci:v000012F1* + ID_VENDOR_FROM_DATABASE=Sorenson Vision Inc + +pci:v000012F2* + ID_VENDOR_FROM_DATABASE=Gammagraphx, Inc. + +pci:v000012F3* + ID_VENDOR_FROM_DATABASE=Radstone Technology + +pci:v000012F4* + ID_VENDOR_FROM_DATABASE=Megatel + +pci:v000012F5* + ID_VENDOR_FROM_DATABASE=Forks + +pci:v000012F6* + ID_VENDOR_FROM_DATABASE=Dawson France + +pci:v000012F7* + ID_VENDOR_FROM_DATABASE=Cognex + +pci:v000012F8* + ID_VENDOR_FROM_DATABASE=Electronic Design GmbH + +pci:v000012F8d00000002* + ID_MODEL_FROM_DATABASE=VideoMaker + +pci:v000012F9* + ID_VENDOR_FROM_DATABASE=Four Fold Ltd + +pci:v000012FB* + ID_VENDOR_FROM_DATABASE=Spectrum Signal Processing + +pci:v000012FBd00000001* + ID_MODEL_FROM_DATABASE=PMC-MAI + +pci:v000012FBd000000F5* + ID_MODEL_FROM_DATABASE=F5 Dakar + +pci:v000012FBd000002AD* + ID_MODEL_FROM_DATABASE=PMC-2MAI + +pci:v000012FBd00002ADC* + ID_MODEL_FROM_DATABASE=ePMC-2ADC + +pci:v000012FBd00003100* + ID_MODEL_FROM_DATABASE=PRO-3100 + +pci:v000012FBd00003500* + ID_MODEL_FROM_DATABASE=PRO-3500 + +pci:v000012FBd00004D4F* + ID_MODEL_FROM_DATABASE=Modena + +pci:v000012FBd00008120* + ID_MODEL_FROM_DATABASE=ePMC-8120 + +pci:v000012FBd0000DA62* + ID_MODEL_FROM_DATABASE=Daytona C6201 PCI (Hurricane) + +pci:v000012FBd0000DB62* + ID_MODEL_FROM_DATABASE=Ingliston XBIF + +pci:v000012FBd0000DC62* + ID_MODEL_FROM_DATABASE=Ingliston PLX9054 + +pci:v000012FBd0000DD62* + ID_MODEL_FROM_DATABASE=Ingliston JTAG/ISP + +pci:v000012FBd0000EDDC* + ID_MODEL_FROM_DATABASE=ePMC-MSDDC + +pci:v000012FBd0000FA01* + ID_MODEL_FROM_DATABASE=ePMC-FPGA + +pci:v000012FC* + ID_VENDOR_FROM_DATABASE=Capital Equipment Corp + +pci:v000012FD* + ID_VENDOR_FROM_DATABASE=I2S + +pci:v000012FE* + ID_VENDOR_FROM_DATABASE=ESD Electronic System Design GmbH + +pci:v000012FF* + ID_VENDOR_FROM_DATABASE=Lexicon + +pci:v00001300* + ID_VENDOR_FROM_DATABASE=Harman International Industries Inc + +pci:v00001302* + ID_VENDOR_FROM_DATABASE=Computer Sciences Corp + +pci:v00001303* + ID_VENDOR_FROM_DATABASE=Innovative Integration + +pci:v00001303d00000030* + ID_MODEL_FROM_DATABASE=X3-SDF 4-channel XMC acquisition board + +pci:v00001304* + ID_VENDOR_FROM_DATABASE=Juniper Networks + +pci:v00001305* + ID_VENDOR_FROM_DATABASE=Netphone, Inc + +pci:v00001306* + ID_VENDOR_FROM_DATABASE=Duet Technologies + +pci:v00001307* + ID_VENDOR_FROM_DATABASE=Measurement Computing + +pci:v00001307d00000001* + ID_MODEL_FROM_DATABASE=PCI-DAS1602/16 + +pci:v00001307d0000000B* + ID_MODEL_FROM_DATABASE=PCI-DIO48H + +pci:v00001307d0000000C* + ID_MODEL_FROM_DATABASE=PCI-PDISO8 + +pci:v00001307d0000000D* + ID_MODEL_FROM_DATABASE=PCI-PDISO16 + +pci:v00001307d0000000F* + ID_MODEL_FROM_DATABASE=PCI-DAS1200 + +pci:v00001307d00000010* + ID_MODEL_FROM_DATABASE=PCI-DAS1602/12 + +pci:v00001307d00000014* + ID_MODEL_FROM_DATABASE=PCI-DIO24H + +pci:v00001307d00000015* + ID_MODEL_FROM_DATABASE=PCI-DIO24H/CTR3 + +pci:v00001307d00000016* + ID_MODEL_FROM_DATABASE=PCI-DIO48H/CTR15 + +pci:v00001307d00000017* + ID_MODEL_FROM_DATABASE=PCI-DIO96H + +pci:v00001307d00000018* + ID_MODEL_FROM_DATABASE=PCI-CTR05 + +pci:v00001307d00000019* + ID_MODEL_FROM_DATABASE=PCI-DAS1200/JR + +pci:v00001307d0000001A* + ID_MODEL_FROM_DATABASE=PCI-DAS1001 + +pci:v00001307d0000001B* + ID_MODEL_FROM_DATABASE=PCI-DAS1002 + +pci:v00001307d0000001C* + ID_MODEL_FROM_DATABASE=PCI-DAS1602JR/16 + +pci:v00001307d0000001D* + ID_MODEL_FROM_DATABASE=PCI-DAS6402/16 + +pci:v00001307d0000001E* + ID_MODEL_FROM_DATABASE=PCI-DAS6402/12 + +pci:v00001307d0000001F* + ID_MODEL_FROM_DATABASE=PCI-DAS16/M1 + +pci:v00001307d00000020* + ID_MODEL_FROM_DATABASE=PCI-DDA02/12 + +pci:v00001307d00000021* + ID_MODEL_FROM_DATABASE=PCI-DDA04/12 + +pci:v00001307d00000022* + ID_MODEL_FROM_DATABASE=PCI-DDA08/12 + +pci:v00001307d00000023* + ID_MODEL_FROM_DATABASE=PCI-DDA02/16 + +pci:v00001307d00000024* + ID_MODEL_FROM_DATABASE=PCI-DDA04/16 + +pci:v00001307d00000025* + ID_MODEL_FROM_DATABASE=PCI-DDA08/16 + +pci:v00001307d00000026* + ID_MODEL_FROM_DATABASE=PCI-DAC04/12-HS + +pci:v00001307d00000027* + ID_MODEL_FROM_DATABASE=PCI-DAC04/16-HS + +pci:v00001307d00000028* + ID_MODEL_FROM_DATABASE=PCI-DIO24 + +pci:v00001307d00000029* + ID_MODEL_FROM_DATABASE=PCI-DAS08 + +pci:v00001307d0000002C* + ID_MODEL_FROM_DATABASE=PCI-INT32 + +pci:v00001307d00000033* + ID_MODEL_FROM_DATABASE=PCI-DUAL-AC5 + +pci:v00001307d00000034* + ID_MODEL_FROM_DATABASE=PCI-DAS-TC + +pci:v00001307d00000035* + ID_MODEL_FROM_DATABASE=PCI-DAS64/M1/16 + +pci:v00001307d00000036* + ID_MODEL_FROM_DATABASE=PCI-DAS64/M2/16 + +pci:v00001307d00000037* + ID_MODEL_FROM_DATABASE=PCI-DAS64/M3/16 + +pci:v00001307d0000004C* + ID_MODEL_FROM_DATABASE=PCI-DAS1000 + +pci:v00001307d0000004D* + ID_MODEL_FROM_DATABASE=PCI-QUAD04 + +pci:v00001307d00000052* + ID_MODEL_FROM_DATABASE=PCI-DAS4020/12 + +pci:v00001307d00000053* + ID_MODEL_FROM_DATABASE=PCIM-DDA06/16 + +pci:v00001307d00000054* + ID_MODEL_FROM_DATABASE=PCI-DIO96 + +pci:v00001307d0000005D* + ID_MODEL_FROM_DATABASE=PCI-DAS6023 + +pci:v00001307d0000005E* + ID_MODEL_FROM_DATABASE=PCI-DAS6025 + +pci:v00001307d0000005F* + ID_MODEL_FROM_DATABASE=PCI-DAS6030 + +pci:v00001307d00000060* + ID_MODEL_FROM_DATABASE=PCI-DAS6031 + +pci:v00001307d00000061* + ID_MODEL_FROM_DATABASE=PCI-DAS6032 + +pci:v00001307d00000062* + ID_MODEL_FROM_DATABASE=PCI-DAS6033 + +pci:v00001307d00000063* + ID_MODEL_FROM_DATABASE=PCI-DAS6034 + +pci:v00001307d00000064* + ID_MODEL_FROM_DATABASE=PCI-DAS6035 + +pci:v00001307d00000065* + ID_MODEL_FROM_DATABASE=PCI-DAS6040 + +pci:v00001307d00000066* + ID_MODEL_FROM_DATABASE=PCI-DAS6052 + +pci:v00001307d00000067* + ID_MODEL_FROM_DATABASE=PCI-DAS6070 + +pci:v00001307d00000068* + ID_MODEL_FROM_DATABASE=PCI-DAS6071 + +pci:v00001307d0000006F* + ID_MODEL_FROM_DATABASE=PCI-DAS6036 + +pci:v00001307d00000070* + ID_MODEL_FROM_DATABASE=PCI-DAC6702 + +pci:v00001307d00000078* + ID_MODEL_FROM_DATABASE=PCI-DAS6013 + +pci:v00001307d00000079* + ID_MODEL_FROM_DATABASE=PCI-DAS6014 + +pci:v00001307d00000115* + ID_MODEL_FROM_DATABASE=PCIe-DAS1602/16 + +pci:v00001308* + ID_VENDOR_FROM_DATABASE=Jato Technologies Inc. + +pci:v00001308d00000001* + ID_MODEL_FROM_DATABASE=NetCelerator Adapter + +pci:v00001308d00000001sv00001308sd00000001* + ID_MODEL_FROM_DATABASE=NetCelerator Adapter + +pci:v00001309* + ID_VENDOR_FROM_DATABASE=AB Semiconductor Ltd + +pci:v0000130A* + ID_VENDOR_FROM_DATABASE=Mitsubishi Electric Microcomputer + +pci:v0000130B* + ID_VENDOR_FROM_DATABASE=Colorgraphic Communications Corp + +pci:v0000130C* + ID_VENDOR_FROM_DATABASE=Ambex Technologies, Inc + +pci:v0000130D* + ID_VENDOR_FROM_DATABASE=Accelerix Inc + +pci:v0000130E* + ID_VENDOR_FROM_DATABASE=Yamatake-Honeywell Co. Ltd + +pci:v0000130F* + ID_VENDOR_FROM_DATABASE=Advanet Inc + +pci:v00001310* + ID_VENDOR_FROM_DATABASE=Gespac + +pci:v00001311* + ID_VENDOR_FROM_DATABASE=Videoserver, Inc + +pci:v00001312* + ID_VENDOR_FROM_DATABASE=Acuity Imaging, Inc + +pci:v00001313* + ID_VENDOR_FROM_DATABASE=Yaskawa Electric Co. + +pci:v00001315* + ID_VENDOR_FROM_DATABASE=Wavesat + +pci:v00001316* + ID_VENDOR_FROM_DATABASE=Teradyne Inc + +pci:v00001317* + ID_VENDOR_FROM_DATABASE=ADMtek + +pci:v00001317d00000981* + ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet + +pci:v00001317d00000985* + ID_MODEL_FROM_DATABASE=NC100 Network Everywhere Fast Ethernet 10/100 + +pci:v00001317d00000985sv00001734sd0000100C* + ID_MODEL_FROM_DATABASE=Scenic N300 ADMtek AN983 10/100 Mbps PCI Adapter + +pci:v00001317d00001985* + ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet + +pci:v00001317d00001985sv00001385sd0000511A* + ID_MODEL_FROM_DATABASE=FA511 + +pci:v00001317d00001985sv00001395sd00002103* + ID_MODEL_FROM_DATABASE=CB100-EZ (4-LED version) + +pci:v00001317d00002850* + ID_MODEL_FROM_DATABASE=HSP MicroModem 56 + +pci:v00001317d00005120* + ID_MODEL_FROM_DATABASE=ADM5120 OpenGate System-on-Chip + +pci:v00001317d00008201* + ID_MODEL_FROM_DATABASE=ADM8211 802.11b Wireless Interface + +pci:v00001317d00008201sv000010B8sd00002635* + ID_MODEL_FROM_DATABASE=SMC2635W v1 802.11b Wireless Cardbus Adapter + +pci:v00001317d00008201sv00001317sd00008201* + ID_MODEL_FROM_DATABASE=SMC2635W v2 802.11b Wireless Cardbus Adapter + +pci:v00001317d00008211* + ID_MODEL_FROM_DATABASE=ADM8211 802.11b Wireless Interface + +pci:v00001317d00009511* + ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet + +pci:v00001318* + ID_VENDOR_FROM_DATABASE=Packet Engines Inc. + +pci:v00001318d00000911* + ID_MODEL_FROM_DATABASE=GNIC-II PCI Gigabit Ethernet [Hamachi] + +pci:v00001319* + ID_VENDOR_FROM_DATABASE=Fortemedia, Inc + +pci:v00001319d00000801* + ID_MODEL_FROM_DATABASE=Xwave QS3000A [FM801] + +pci:v00001319d00000801sv00001319sd00001319* + ID_MODEL_FROM_DATABASE=FM801 PCI Audio + +pci:v00001319d00000802* + ID_MODEL_FROM_DATABASE=Xwave QS3000A [FM801 game port] + +pci:v00001319d00000802sv00001319sd00001319* + ID_MODEL_FROM_DATABASE=FM801 PCI Joystick + +pci:v00001319d00001000* + ID_MODEL_FROM_DATABASE=FM801 PCI Audio + +pci:v00001319d00001001* + ID_MODEL_FROM_DATABASE=FM801 PCI Joystick + +pci:v0000131A* + ID_VENDOR_FROM_DATABASE=Finisar Corp. + +pci:v0000131C* + ID_VENDOR_FROM_DATABASE=Nippon Electro-Sensory Devices Corp + +pci:v0000131D* + ID_VENDOR_FROM_DATABASE=Sysmic, Inc. + +pci:v0000131E* + ID_VENDOR_FROM_DATABASE=Xinex Networks Inc + +pci:v0000131F* + ID_VENDOR_FROM_DATABASE=Siig Inc + +pci:v0000131Fd00001000* + ID_MODEL_FROM_DATABASE=CyberSerial (1-port) 16550 + +pci:v0000131Fd00001001* + ID_MODEL_FROM_DATABASE=CyberSerial (1-port) 16650 + +pci:v0000131Fd00001002* + ID_MODEL_FROM_DATABASE=CyberSerial (1-port) 16850 + +pci:v0000131Fd00001010* + ID_MODEL_FROM_DATABASE=Duet 1S(16550)+1P + +pci:v0000131Fd00001011* + ID_MODEL_FROM_DATABASE=Duet 1S(16650)+1P + +pci:v0000131Fd00001012* + ID_MODEL_FROM_DATABASE=Duet 1S(16850)+1P + +pci:v0000131Fd00001020* + ID_MODEL_FROM_DATABASE=CyberParallel (1-port) + +pci:v0000131Fd00001021* + ID_MODEL_FROM_DATABASE=CyberParallel (2-port) + +pci:v0000131Fd00001030* + ID_MODEL_FROM_DATABASE=CyberSerial (2-port) 16550 + +pci:v0000131Fd00001031* + ID_MODEL_FROM_DATABASE=CyberSerial (2-port) 16650 + +pci:v0000131Fd00001032* + ID_MODEL_FROM_DATABASE=CyberSerial (2-port) 16850 + +pci:v0000131Fd00001034* + ID_MODEL_FROM_DATABASE=Trio 2S(16550)+1P + +pci:v0000131Fd00001035* + ID_MODEL_FROM_DATABASE=Trio 2S(16650)+1P + +pci:v0000131Fd00001036* + ID_MODEL_FROM_DATABASE=Trio 2S(16850)+1P + +pci:v0000131Fd00001050* + ID_MODEL_FROM_DATABASE=CyberSerial (4-port) 16550 + +pci:v0000131Fd00001051* + ID_MODEL_FROM_DATABASE=CyberSerial (4-port) 16650 + +pci:v0000131Fd00001052* + ID_MODEL_FROM_DATABASE=CyberSerial (4-port) 16850 + +pci:v0000131Fd00002000* + ID_MODEL_FROM_DATABASE=CyberSerial (1-port) 16550 + +pci:v0000131Fd00002001* + ID_MODEL_FROM_DATABASE=CyberSerial (1-port) 16650 + +pci:v0000131Fd00002002* + ID_MODEL_FROM_DATABASE=CyberSerial (1-port) 16850 + +pci:v0000131Fd00002010* + ID_MODEL_FROM_DATABASE=Duet 1S(16550)+1P + +pci:v0000131Fd00002011* + ID_MODEL_FROM_DATABASE=Duet 1S(16650)+1P + +pci:v0000131Fd00002012* + ID_MODEL_FROM_DATABASE=Duet 1S(16850)+1P + +pci:v0000131Fd00002020* + ID_MODEL_FROM_DATABASE=CyberParallel (1-port) + +pci:v0000131Fd00002021* + ID_MODEL_FROM_DATABASE=CyberParallel (2-port) + +pci:v0000131Fd00002030* + ID_MODEL_FROM_DATABASE=CyberSerial (2-port) 16550 + +pci:v0000131Fd00002030sv0000131Fsd00002030* + ID_MODEL_FROM_DATABASE=PCI Serial Card + +pci:v0000131Fd00002031* + ID_MODEL_FROM_DATABASE=CyberSerial (2-port) 16650 + +pci:v0000131Fd00002032* + ID_MODEL_FROM_DATABASE=CyberSerial (2-port) 16850 + +pci:v0000131Fd00002040* + ID_MODEL_FROM_DATABASE=Trio 1S(16550)+2P + +pci:v0000131Fd00002041* + ID_MODEL_FROM_DATABASE=Trio 1S(16650)+2P + +pci:v0000131Fd00002042* + ID_MODEL_FROM_DATABASE=Trio 1S(16850)+2P + +pci:v0000131Fd00002050* + ID_MODEL_FROM_DATABASE=CyberSerial (4-port) 16550 + +pci:v0000131Fd00002051* + ID_MODEL_FROM_DATABASE=CyberSerial (4-port) 16650 + +pci:v0000131Fd00002052* + ID_MODEL_FROM_DATABASE=CyberSerial (4-port) 16850 + +pci:v0000131Fd00002060* + ID_MODEL_FROM_DATABASE=Trio 2S(16550)+1P + +pci:v0000131Fd00002061* + ID_MODEL_FROM_DATABASE=Trio 2S(16650)+1P + +pci:v0000131Fd00002062* + ID_MODEL_FROM_DATABASE=Trio 2S(16850)+1P + +pci:v0000131Fd00002081* + ID_MODEL_FROM_DATABASE=CyberSerial (8-port) ST16654 + +pci:v00001320* + ID_VENDOR_FROM_DATABASE=Crypto AG + +pci:v00001321* + ID_VENDOR_FROM_DATABASE=Arcobel Graphics BV + +pci:v00001322* + ID_VENDOR_FROM_DATABASE=MTT Co., Ltd + +pci:v00001323* + ID_VENDOR_FROM_DATABASE=Dome Inc + +pci:v00001324* + ID_VENDOR_FROM_DATABASE=Sphere Communications + +pci:v00001325* + ID_VENDOR_FROM_DATABASE=Salix Technologies, Inc + +pci:v00001326* + ID_VENDOR_FROM_DATABASE=Seachange international + +pci:v00001327* + ID_VENDOR_FROM_DATABASE=Voss scientific + +pci:v00001328* + ID_VENDOR_FROM_DATABASE=quadrant international + +pci:v00001329* + ID_VENDOR_FROM_DATABASE=Productivity Enhancement + +pci:v0000132A* + ID_VENDOR_FROM_DATABASE=Microcom Inc. + +pci:v0000132B* + ID_VENDOR_FROM_DATABASE=Broadband Technologies + +pci:v0000132C* + ID_VENDOR_FROM_DATABASE=Micrel Inc + +pci:v0000132D* + ID_VENDOR_FROM_DATABASE=Integrated Silicon Solution, Inc. + +pci:v00001330* + ID_VENDOR_FROM_DATABASE=MMC Networks + +pci:v00001331* + ID_VENDOR_FROM_DATABASE=RadiSys Corporation + +pci:v00001331d00000030* + ID_MODEL_FROM_DATABASE=ENP-2611 + +pci:v00001331d00008200* + ID_MODEL_FROM_DATABASE=82600 Host Bridge + +pci:v00001331d00008201* + ID_MODEL_FROM_DATABASE=82600 IDE + +pci:v00001331d00008202* + ID_MODEL_FROM_DATABASE=82600 USB + +pci:v00001331d00008210* + ID_MODEL_FROM_DATABASE=82600 PCI Bridge + +pci:v00001332* + ID_VENDOR_FROM_DATABASE=Micro Memory + +pci:v00001332d00005415* + ID_MODEL_FROM_DATABASE=MM-5415CN PCI Memory Module with Battery Backup + +pci:v00001332d00005425* + ID_MODEL_FROM_DATABASE=MM-5425CN PCI 64/66 Memory Module with Battery Backup + +pci:v00001332d00006140* + ID_MODEL_FROM_DATABASE=MM-6140D + +pci:v00001334* + ID_VENDOR_FROM_DATABASE=Redcreek Communications, Inc + +pci:v00001335* + ID_VENDOR_FROM_DATABASE=Videomail, Inc + +pci:v00001337* + ID_VENDOR_FROM_DATABASE=Third Planet Publishing + +pci:v00001338* + ID_VENDOR_FROM_DATABASE=BT Electronics + +pci:v0000133A* + ID_VENDOR_FROM_DATABASE=Vtel Corp + +pci:v0000133B* + ID_VENDOR_FROM_DATABASE=Softcom Microsystems + +pci:v0000133C* + ID_VENDOR_FROM_DATABASE=Holontech Corp + +pci:v0000133D* + ID_VENDOR_FROM_DATABASE=SS Technologies + +pci:v0000133E* + ID_VENDOR_FROM_DATABASE=Virtual Computer Corp + +pci:v0000133F* + ID_VENDOR_FROM_DATABASE=SCM Microsystems + +pci:v00001340* + ID_VENDOR_FROM_DATABASE=Atalla Corp + +pci:v00001341* + ID_VENDOR_FROM_DATABASE=Kyoto Microcomputer Co + +pci:v00001342* + ID_VENDOR_FROM_DATABASE=Promax Systems Inc + +pci:v00001343* + ID_VENDOR_FROM_DATABASE=Phylon Communications Inc + +pci:v00001344* + ID_VENDOR_FROM_DATABASE=Micron Technology Inc + +pci:v00001344d00005150* + ID_MODEL_FROM_DATABASE=RealSSD P320h + +pci:v00001344d00005151* + ID_MODEL_FROM_DATABASE=RealSSD P320m + +pci:v00001344d00005152* + ID_MODEL_FROM_DATABASE=RealSSD P320s + +pci:v00001344d00005153* + ID_MODEL_FROM_DATABASE=RealSSD P325m + +pci:v00001344d00005160* + ID_MODEL_FROM_DATABASE=RealSSD P420h + +pci:v00001344d00005161* + ID_MODEL_FROM_DATABASE=RealSSD P420m + +pci:v00001344d00005163* + ID_MODEL_FROM_DATABASE=RealSSD P425m + +pci:v00001345* + ID_VENDOR_FROM_DATABASE=Arescom Inc + +pci:v00001347* + ID_VENDOR_FROM_DATABASE=Odetics + +pci:v00001349* + ID_VENDOR_FROM_DATABASE=Sumitomo Electric Industries, Ltd. + +pci:v0000134A* + ID_VENDOR_FROM_DATABASE=DTC Technology Corp. + +pci:v0000134Ad00000001* + ID_MODEL_FROM_DATABASE=Domex 536 + +pci:v0000134Ad00000002* + ID_MODEL_FROM_DATABASE=Domex DMX3194UP SCSI Adapter + +pci:v0000134B* + ID_VENDOR_FROM_DATABASE=ARK Research Corp. + +pci:v0000134C* + ID_VENDOR_FROM_DATABASE=Chori Joho System Co. Ltd + +pci:v0000134D* + ID_VENDOR_FROM_DATABASE=PCTel Inc + +pci:v0000134Dd00002189* + ID_MODEL_FROM_DATABASE=HSP56 MicroModem + +pci:v0000134Dd00002486* + ID_MODEL_FROM_DATABASE=2304WT V.92 MDC Modem + +pci:v0000134Dd00007890* + ID_MODEL_FROM_DATABASE=HSP MicroModem 56 + +pci:v0000134Dd00007890sv0000134Dsd00000001* + ID_MODEL_FROM_DATABASE=PCT789 adapter + +pci:v0000134Dd00007891* + ID_MODEL_FROM_DATABASE=HSP MicroModem 56 + +pci:v0000134Dd00007891sv0000134Dsd00000001* + ID_MODEL_FROM_DATABASE=HSP MicroModem 56 + +pci:v0000134Dd00007892* + ID_MODEL_FROM_DATABASE=HSP MicroModem 56 + +pci:v0000134Dd00007893* + ID_MODEL_FROM_DATABASE=HSP MicroModem 56 + +pci:v0000134Dd00007894* + ID_MODEL_FROM_DATABASE=HSP MicroModem 56 + +pci:v0000134Dd00007895* + ID_MODEL_FROM_DATABASE=HSP MicroModem 56 + +pci:v0000134Dd00007896* + ID_MODEL_FROM_DATABASE=HSP MicroModem 56 + +pci:v0000134Dd00007897* + ID_MODEL_FROM_DATABASE=HSP MicroModem 56 + +pci:v0000134E* + ID_VENDOR_FROM_DATABASE=CSTI + +pci:v0000134F* + ID_VENDOR_FROM_DATABASE=Algo System Co Ltd + +pci:v00001350* + ID_VENDOR_FROM_DATABASE=Systec Co. Ltd + +pci:v00001351* + ID_VENDOR_FROM_DATABASE=Sonix Inc + +pci:v00001353* + ID_VENDOR_FROM_DATABASE=Vierling Communication SAS + +pci:v00001353d00000002* + ID_MODEL_FROM_DATABASE=Proserver + +pci:v00001353d00000003* + ID_MODEL_FROM_DATABASE=PCI-FUT + +pci:v00001353d00000004* + ID_MODEL_FROM_DATABASE=PCI-S0 + +pci:v00001353d00000005* + ID_MODEL_FROM_DATABASE=PCI-FUT-S0 + +pci:v00001354* + ID_VENDOR_FROM_DATABASE=Dwave System Inc + +pci:v00001355* + ID_VENDOR_FROM_DATABASE=Kratos Analytical Ltd + +pci:v00001356* + ID_VENDOR_FROM_DATABASE=The Logical Co + +pci:v00001359* + ID_VENDOR_FROM_DATABASE=Prisa Networks + +pci:v0000135A* + ID_VENDOR_FROM_DATABASE=Brain Boxes + +pci:v0000135Ad00000A61* + ID_MODEL_FROM_DATABASE=UC-324 [VELOCITY RS422/485] + +pci:v0000135B* + ID_VENDOR_FROM_DATABASE=Giganet Inc + +pci:v0000135C* + ID_VENDOR_FROM_DATABASE=Quatech Inc + +pci:v0000135Cd00000010* + ID_MODEL_FROM_DATABASE=QSC-100 + +pci:v0000135Cd00000020* + ID_MODEL_FROM_DATABASE=DSC-100 + +pci:v0000135Cd00000030* + ID_MODEL_FROM_DATABASE=DSC-200/300 + +pci:v0000135Cd00000040* + ID_MODEL_FROM_DATABASE=QSC-200/300 + +pci:v0000135Cd00000050* + ID_MODEL_FROM_DATABASE=ESC-100D + +pci:v0000135Cd00000060* + ID_MODEL_FROM_DATABASE=ESC-100M + +pci:v0000135Cd000000F0* + ID_MODEL_FROM_DATABASE=MPAC-100 Syncronous Serial Card (Zilog 85230) + +pci:v0000135Cd00000170* + ID_MODEL_FROM_DATABASE=QSCLP-100 + +pci:v0000135Cd00000180* + ID_MODEL_FROM_DATABASE=DSCLP-100 + +pci:v0000135Cd00000190* + ID_MODEL_FROM_DATABASE=SSCLP-100 + +pci:v0000135Cd000001A0* + ID_MODEL_FROM_DATABASE=QSCLP-200/300 + +pci:v0000135Cd000001B0* + ID_MODEL_FROM_DATABASE=DSCLP-200/300 + +pci:v0000135Cd000001C0* + ID_MODEL_FROM_DATABASE=SSCLP-200/300 + +pci:v0000135Cd00000258* + ID_MODEL_FROM_DATABASE=DSPSX-200/300 + +pci:v0000135D* + ID_VENDOR_FROM_DATABASE=ABB Network Partner AB + +pci:v0000135E* + ID_VENDOR_FROM_DATABASE=Sealevel Systems Inc + +pci:v0000135Ed00005101* + ID_MODEL_FROM_DATABASE=Route 56.PCI - Multi-Protocol Serial Interface (Zilog Z16C32) + +pci:v0000135Ed00007101* + ID_MODEL_FROM_DATABASE=Single Port RS-232/422/485/530 + +pci:v0000135Ed00007201* + ID_MODEL_FROM_DATABASE=Dual Port RS-232/422/485 Interface + +pci:v0000135Ed00007202* + ID_MODEL_FROM_DATABASE=Dual Port RS-232 Interface + +pci:v0000135Ed00007401* + ID_MODEL_FROM_DATABASE=Four Port RS-232 Interface + +pci:v0000135Ed00007402* + ID_MODEL_FROM_DATABASE=Four Port RS-422/485 Interface + +pci:v0000135Ed00007801* + ID_MODEL_FROM_DATABASE=Eight Port RS-232 Interface + +pci:v0000135Ed00007804* + ID_MODEL_FROM_DATABASE=Eight Port RS-232/422/485 Interface + +pci:v0000135Ed00008001* + ID_MODEL_FROM_DATABASE=8001 Digital I/O Adapter + +pci:v0000135F* + ID_VENDOR_FROM_DATABASE=I-Data International A-S + +pci:v00001360* + ID_VENDOR_FROM_DATABASE=Meinberg Funkuhren + +pci:v00001360d00000101* + ID_MODEL_FROM_DATABASE=PCI32 DCF77 Radio Clock + +pci:v00001360d00000102* + ID_MODEL_FROM_DATABASE=PCI509 DCF77 Radio Clock + +pci:v00001360d00000103* + ID_MODEL_FROM_DATABASE=PCI510 DCF77 Radio Clock + +pci:v00001360d00000104* + ID_MODEL_FROM_DATABASE=PCI511 DCF77 Radio Clock + +pci:v00001360d00000105* + ID_MODEL_FROM_DATABASE=PEX511 DCF77 Radio Clock (PCI Express) + +pci:v00001360d00000106* + ID_MODEL_FROM_DATABASE=PZF180PEX High Precision DCF77 Radio Clock (PCI Express) + +pci:v00001360d00000201* + ID_MODEL_FROM_DATABASE=GPS167PCI GPS Receiver + +pci:v00001360d00000202* + ID_MODEL_FROM_DATABASE=GPS168PCI GPS Receiver + +pci:v00001360d00000203* + ID_MODEL_FROM_DATABASE=GPS169PCI GPS Receiver + +pci:v00001360d00000204* + ID_MODEL_FROM_DATABASE=GPS170PCI GPS Receiver + +pci:v00001360d00000205* + ID_MODEL_FROM_DATABASE=GPS170PEX GPS Receiver (PCI Express) + +pci:v00001360d00000206* + ID_MODEL_FROM_DATABASE=GPS180PEX GPS Receiver (PCI Express) + +pci:v00001360d00000301* + ID_MODEL_FROM_DATABASE=TCR510PCI IRIG Timecode Reader + +pci:v00001360d00000302* + ID_MODEL_FROM_DATABASE=TCR167PCI IRIG Timecode Reader + +pci:v00001360d00000303* + ID_MODEL_FROM_DATABASE=TCR511PCI IRIG Timecode Reader + +pci:v00001360d00000304* + ID_MODEL_FROM_DATABASE=TCR511PEX IRIG Timecode Reader (PCI Express) + +pci:v00001360d00000305* + ID_MODEL_FROM_DATABASE=TCR170PEX IRIG Timecode Reader (PCI Express) + +pci:v00001360d00000306* + ID_MODEL_FROM_DATABASE=TCR180PEX IRIG Timecode Reader (PCI Express) + +pci:v00001360d00000501* + ID_MODEL_FROM_DATABASE=PTP270PEX PTP/IEEE1588 slave card (PCI Express) + +pci:v00001360d00000601* + ID_MODEL_FROM_DATABASE=FRC511PEX Free Running Clock (PCI Express) + +pci:v00001361* + ID_VENDOR_FROM_DATABASE=Soliton Systems K.K. + +pci:v00001362* + ID_VENDOR_FROM_DATABASE=Fujifacom Corporation + +pci:v00001363* + ID_VENDOR_FROM_DATABASE=Phoenix Technology Ltd + +pci:v00001364* + ID_VENDOR_FROM_DATABASE=ATM Communications Inc + +pci:v00001365* + ID_VENDOR_FROM_DATABASE=Hypercope GmbH + +pci:v00001366* + ID_VENDOR_FROM_DATABASE=Teijin Seiki Co. Ltd + +pci:v00001367* + ID_VENDOR_FROM_DATABASE=Hitachi Zosen Corporation + +pci:v00001368* + ID_VENDOR_FROM_DATABASE=Skyware Corporation + +pci:v00001369* + ID_VENDOR_FROM_DATABASE=Digigram + +pci:v0000136A* + ID_VENDOR_FROM_DATABASE=High Soft Tech + +pci:v0000136Ad00000004* + ID_MODEL_FROM_DATABASE=HST Saphir VII mini PCI + +pci:v0000136Ad00000007* + ID_MODEL_FROM_DATABASE=HST Saphir III E MultiLink 4 + +pci:v0000136Ad00000008* + ID_MODEL_FROM_DATABASE=HST Saphir III E MultiLink 8 + +pci:v0000136Ad0000000A* + ID_MODEL_FROM_DATABASE=HST Saphir III E MultiLink 2 + +pci:v0000136B* + ID_VENDOR_FROM_DATABASE=Kawasaki Steel Corporation + +pci:v0000136Bd0000FF01* + ID_MODEL_FROM_DATABASE=KL5A72002 Motion JPEG + +pci:v0000136C* + ID_VENDOR_FROM_DATABASE=Adtek System Science Co Ltd + +pci:v0000136D* + ID_VENDOR_FROM_DATABASE=Gigalabs Inc + +pci:v0000136F* + ID_VENDOR_FROM_DATABASE=Applied Magic Inc + +pci:v00001370* + ID_VENDOR_FROM_DATABASE=ATL Products + +pci:v00001371* + ID_VENDOR_FROM_DATABASE=CNet Technology Inc + +pci:v00001371d0000434E* + ID_MODEL_FROM_DATABASE=GigaCard Network Adapter + +pci:v00001371d0000434Esv00001371sd0000434E* + ID_MODEL_FROM_DATABASE=N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L) + +pci:v00001373* + ID_VENDOR_FROM_DATABASE=Silicon Vision Inc + +pci:v00001374* + ID_VENDOR_FROM_DATABASE=Silicom Ltd. + +pci:v00001374d00000024* + ID_MODEL_FROM_DATABASE=Silicom Dual port Giga Ethernet BGE Bypass Server Adapter + +pci:v00001374d00000025* + ID_MODEL_FROM_DATABASE=Silicom Quad port Giga Ethernet BGE Bypass Server Adapter + +pci:v00001374d00000026* + ID_MODEL_FROM_DATABASE=Silicom Dual port Fiber Giga Ethernet 546 Bypass Server Adapter + +pci:v00001374d00000027* + ID_MODEL_FROM_DATABASE=Silicom Dual port Fiber LX Giga Ethernet 546 Bypass Server Adapter + +pci:v00001374d00000029* + ID_MODEL_FROM_DATABASE=Silicom Dual port Copper Giga Ethernet 546GB Bypass Server Adapter + +pci:v00001374d0000002A* + ID_MODEL_FROM_DATABASE=Silicom Dual port Fiber Giga Ethernet 546 TAP/Bypass Server Adapter + +pci:v00001374d0000002B* + ID_MODEL_FROM_DATABASE=Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter (PXE2TBI) + +pci:v00001374d0000002C* + ID_MODEL_FROM_DATABASE=Silicom Quad port Copper Giga Ethernet 546GB Bypass Server Adapter (PXG4BPI) + +pci:v00001374d0000002D* + ID_MODEL_FROM_DATABASE=Silicom Quad port Fiber-SX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI) + +pci:v00001374d0000002E* + ID_MODEL_FROM_DATABASE=Silicom Quad port Fiber-LX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI-LX) + +pci:v00001374d0000002F* + ID_MODEL_FROM_DATABASE=Silicom Dual port Fiber-SX Giga Ethernet 546GB Low profile Bypass Server Adapter (PXG2BPFIL) + +pci:v00001374d00000030* + ID_MODEL_FROM_DATABASE=Silicom Dual port Fiber-LX Giga Ethernet 546GB Low profile Bypass Server Adapter + +pci:v00001374d00000031* + ID_MODEL_FROM_DATABASE=Silicom Quad port Copper Giga Ethernet PCI-E Bypass Server Adapter + +pci:v00001374d00000032* + ID_MODEL_FROM_DATABASE=Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter + +pci:v00001374d00000034* + ID_MODEL_FROM_DATABASE=Silicom Dual port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter + +pci:v00001374d00000035* + ID_MODEL_FROM_DATABASE=Silicom Quad port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter + +pci:v00001374d00000036* + ID_MODEL_FROM_DATABASE=Silicom Dual port Fiber Giga Ethernet PCI-E BGE Bypass Server Adapter + +pci:v00001374d00000037* + ID_MODEL_FROM_DATABASE=Silicom Dual port Copper Ethernet PCI-E Intel based Bypass Server Adapter + +pci:v00001374d00000038* + ID_MODEL_FROM_DATABASE=Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter + +pci:v00001374d00000039* + ID_MODEL_FROM_DATABASE=Silicom Dual port Fiber-SX Ethernet PCI-E Intel based Bypass Server Adapter + +pci:v00001374d0000003A* + ID_MODEL_FROM_DATABASE=Silicom Dual port Fiber-LX Ethernet PCI-E Intel based Bypass Server Adapter + +pci:v00001374d0000003B* + ID_MODEL_FROM_DATABASE=Silicom Dual port Fiber Ethernet PMC Intel based Bypass Server Adapter (PMCX2BPFI) + +pci:v00001374d0000003C* + ID_MODEL_FROM_DATABASE=Silicom Dual port Copper Ethernet PCI-X BGE based Bypass Server Adapter (PXG2BPRB) + +pci:v00001374d0000003D* + ID_MODEL_FROM_DATABASE=2-port Copper GBE Bypass with Caviume 1010 PCI-X + +pci:v00001374d0000003E* + ID_MODEL_FROM_DATABASE=Silicom Dual port Fiber Giga Ethernet PCI-E 571 TAP/Bypass Server Adapter (PEG2TBFI) + +pci:v00001374d0000003F* + ID_MODEL_FROM_DATABASE=Silicom Dual port Copper Giga Ethernet PCI-X 546 TAP/Bypass Server Adapter (PXG2TBI) + +pci:v00001374d00000040* + ID_MODEL_FROM_DATABASE=Silicom Quad port Fiber-SX Giga Ethernet 571 Bypass Server Adapter (PEG4BPFI) + +pci:v00001374d00000042* + ID_MODEL_FROM_DATABASE=4-port Copper GBE PMC-X Bypass + +pci:v00001374d00000043* + ID_MODEL_FROM_DATABASE=Silicom Quad port Fiber-SX Giga Ethernet 546 Bypass Server Adapter (PXG4BPFID) + +pci:v00001374d00000045* + ID_MODEL_FROM_DATABASE=Silicom 6 port Copper Giga Ethernet 546 Bypass Server Adapter (PXG6BPI) + +pci:v00001374d00000046* + ID_MODEL_FROM_DATABASE=4-port bypass PCI-E w disconnect low profile + +pci:v00001374d00000047* + ID_MODEL_FROM_DATABASE=Silicom Dual port Fiber-SX Giga Ethernet 571 Bypass Disconnect Server Adapter (PEG2BPFID) + +pci:v00001374d0000004A* + ID_MODEL_FROM_DATABASE=Silicom Quad port Fiber-LX Giga Ethernet 571 Bypass Server Adapter (PEG4BPFI-LX) + +pci:v00001374d0000004D* + ID_MODEL_FROM_DATABASE=Dual port Copper Giga Ethernet PCI-E Bypass Server Adapter + +pci:v00001374d00000401* + ID_MODEL_FROM_DATABASE=Gigabit Ethernet ExpressModule Bypass Server Adapter + +pci:v00001374d00000420* + ID_MODEL_FROM_DATABASE=Gigabit Ethernet ExpressModule Bypass Server Adapter + +pci:v00001374d00000460* + ID_MODEL_FROM_DATABASE=Gigabit Ethernet Express Module Bypass Server Adapter + +pci:v00001374d00000461* + ID_MODEL_FROM_DATABASE=Gigabit Ethernet ExpressModule Bypass Server Adapter + +pci:v00001374d00000462* + ID_MODEL_FROM_DATABASE=Gigabit Ethernet ExpressModule Bypass Server Adapter + +pci:v00001374d00000470* + ID_MODEL_FROM_DATABASE=Octal-port Copper Gigabit Ethernet Express Module Bypass Server Adapter + +pci:v00001374d00000482* + ID_MODEL_FROM_DATABASE=Dual-port Fiber (SR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter + +pci:v00001374d00000483* + ID_MODEL_FROM_DATABASE=Dual-port Fiber (LR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter + +pci:v00001375* + ID_VENDOR_FROM_DATABASE=Argosystems Inc + +pci:v00001376* + ID_VENDOR_FROM_DATABASE=LMC + +pci:v00001377* + ID_VENDOR_FROM_DATABASE=Electronic Equipment Production & Distribution GmbH + +pci:v00001378* + ID_VENDOR_FROM_DATABASE=Telemann Co. Ltd + +pci:v00001379* + ID_VENDOR_FROM_DATABASE=Asahi Kasei Microsystems Co Ltd + +pci:v0000137A* + ID_VENDOR_FROM_DATABASE=Mark of the Unicorn Inc + +pci:v0000137Ad00000001* + ID_MODEL_FROM_DATABASE=PCI-324 Audiowire Interface + +pci:v0000137B* + ID_VENDOR_FROM_DATABASE=PPT Vision + +pci:v0000137C* + ID_VENDOR_FROM_DATABASE=Iwatsu Electric Co Ltd + +pci:v0000137D* + ID_VENDOR_FROM_DATABASE=Dynachip Corporation + +pci:v0000137E* + ID_VENDOR_FROM_DATABASE=Patriot Scientific Corporation + +pci:v0000137F* + ID_VENDOR_FROM_DATABASE=Japan Satellite Systems Inc + +pci:v00001380* + ID_VENDOR_FROM_DATABASE=Sanritz Automation Co Ltd + +pci:v00001381* + ID_VENDOR_FROM_DATABASE=Brains Co. Ltd + +pci:v00001382* + ID_VENDOR_FROM_DATABASE=Marian - Electronic & Software + +pci:v00001382d00000001* + ID_MODEL_FROM_DATABASE=ARC88 audio recording card + +pci:v00001382d00002008* + ID_MODEL_FROM_DATABASE=Prodif 96 Pro sound system + +pci:v00001382d00002048* + ID_MODEL_FROM_DATABASE=Prodif Plus sound system + +pci:v00001382d00002088* + ID_MODEL_FROM_DATABASE=Marc 8 Midi sound system + +pci:v00001382d000020C8* + ID_MODEL_FROM_DATABASE=Marc A sound system + +pci:v00001382d00004008* + ID_MODEL_FROM_DATABASE=Marc 2 sound system + +pci:v00001382d00004010* + ID_MODEL_FROM_DATABASE=Marc 2 Pro sound system + +pci:v00001382d00004048* + ID_MODEL_FROM_DATABASE=Marc 4 MIDI sound system + +pci:v00001382d00004088* + ID_MODEL_FROM_DATABASE=Marc 4 Digi sound system + +pci:v00001382d00004248* + ID_MODEL_FROM_DATABASE=Marc X sound system + +pci:v00001382d00004424* + ID_MODEL_FROM_DATABASE=TRACE D4 Sound System + +pci:v00001383* + ID_VENDOR_FROM_DATABASE=Controlnet Inc + +pci:v00001384* + ID_VENDOR_FROM_DATABASE=Reality Simulation Systems Inc + +pci:v00001385* + ID_VENDOR_FROM_DATABASE=Netgear + +pci:v00001385d0000006B* + ID_MODEL_FROM_DATABASE=WA301 802.11b Wireless PCI Adapter + +pci:v00001385d00004100* + ID_MODEL_FROM_DATABASE=MA301 802.11b Wireless PCI Adapter + +pci:v00001385d00004601* + ID_MODEL_FROM_DATABASE=WAG511 802.11a/b/g Dual Band Wireless PC Card + +pci:v00001385d0000620A* + ID_MODEL_FROM_DATABASE=GA620 Gigabit Ethernet + +pci:v00001385d0000630A* + ID_MODEL_FROM_DATABASE=GA630 Gigabit Ethernet + +pci:v00001386* + ID_VENDOR_FROM_DATABASE=Video Domain Technologies + +pci:v00001387* + ID_VENDOR_FROM_DATABASE=Systran Corp + +pci:v00001388* + ID_VENDOR_FROM_DATABASE=Hitachi Information Technology Co Ltd + +pci:v00001389* + ID_VENDOR_FROM_DATABASE=Applicom International + +pci:v00001389d00000001* + ID_MODEL_FROM_DATABASE=PCI1500PFB [Intelligent fieldbus adaptor] + +pci:v0000138A* + ID_VENDOR_FROM_DATABASE=Fusion Micromedia Corp + +pci:v0000138Ad0000003D* + ID_MODEL_FROM_DATABASE=VFS491 Validity Sensor + +pci:v0000138B* + ID_VENDOR_FROM_DATABASE=Tokimec Inc + +pci:v0000138C* + ID_VENDOR_FROM_DATABASE=Silicon Reality + +pci:v0000138D* + ID_VENDOR_FROM_DATABASE=Future Techno Designs pte Ltd + +pci:v0000138E* + ID_VENDOR_FROM_DATABASE=Basler GmbH + +pci:v0000138F* + ID_VENDOR_FROM_DATABASE=Patapsco Designs Inc + +pci:v00001390* + ID_VENDOR_FROM_DATABASE=Concept Development Inc + +pci:v00001391* + ID_VENDOR_FROM_DATABASE=Development Concepts Inc + +pci:v00001392* + ID_VENDOR_FROM_DATABASE=Medialight Inc + +pci:v00001393* + ID_VENDOR_FROM_DATABASE=Moxa Technologies Co Ltd + +pci:v00001393d00000001* + ID_MODEL_FROM_DATABASE=UC7000 Serial + +pci:v00001393d00001020* + ID_MODEL_FROM_DATABASE=CP102 (2-port RS-232 PCI) + +pci:v00001393d00001021* + ID_MODEL_FROM_DATABASE=CP102UL (2-port RS-232 Universal PCI) + +pci:v00001393d00001022* + ID_MODEL_FROM_DATABASE=CP102U (2-port RS-232 Universal PCI) + +pci:v00001393d00001023* + ID_MODEL_FROM_DATABASE=CP-102UF + +pci:v00001393d00001024* + ID_MODEL_FROM_DATABASE=CP-102E (2-port RS-232 Smart PCI Express Serial Board) + +pci:v00001393d00001025* + ID_MODEL_FROM_DATABASE=CP-102EL (2-port RS-232 Smart PCI Express Serial Board) + +pci:v00001393d00001040* + ID_MODEL_FROM_DATABASE=Smartio C104H/PCI + +pci:v00001393d00001041* + ID_MODEL_FROM_DATABASE=CP104U (4-port RS-232 Universal PCI) + +pci:v00001393d00001042* + ID_MODEL_FROM_DATABASE=CP104JU (4-port RS-232 Universal PCI) + +pci:v00001393d00001043* + ID_MODEL_FROM_DATABASE=CP104EL (4-port RS-232 Smart PCI Express) + +pci:v00001393d00001044* + ID_MODEL_FROM_DATABASE=POS104UL (4-port RS-232 Universal PCI) + +pci:v00001393d00001045* + ID_MODEL_FROM_DATABASE=CP-104EL-A (4-port RS-232 PCI Express Serial Board) + +pci:v00001393d00001080* + ID_MODEL_FROM_DATABASE=CB108 (8-port RS-232 PC/104-plus Module) + +pci:v00001393d00001140* + ID_MODEL_FROM_DATABASE=CT-114 series + +pci:v00001393d00001141* + ID_MODEL_FROM_DATABASE=Industrio CP-114 + +pci:v00001393d00001142* + ID_MODEL_FROM_DATABASE=CB114 (4-port RS-232/422/485 PC/104-plus Module) + +pci:v00001393d00001143* + ID_MODEL_FROM_DATABASE=CP-114UL (4-port RS-232/422/485 Smart Universal PCI Serial Board) + +pci:v00001393d00001144* + ID_MODEL_FROM_DATABASE=CP-114EL (4-port RS-232/422/485 Smart PCI Express Serial Board) + +pci:v00001393d00001180* + ID_MODEL_FROM_DATABASE=CP118U (8-port RS-232/422/485 Smart Universal PCI) + +pci:v00001393d00001181* + ID_MODEL_FROM_DATABASE=CP118EL (8-port RS-232/422/485 Smart PCI Express) + +pci:v00001393d00001182* + ID_MODEL_FROM_DATABASE=CP-118EL-A (8-port RS-232/422/485 PCI Express Serial Board) + +pci:v00001393d00001320* + ID_MODEL_FROM_DATABASE=CP132 (2-port RS-422/485 PCI) + +pci:v00001393d00001321* + ID_MODEL_FROM_DATABASE=CP132U (2-Port RS-422/485 Universal PCI) + +pci:v00001393d00001322* + ID_MODEL_FROM_DATABASE=CP-132EL (2-port RS-422/485 Smart PCI Express Serial Board) + +pci:v00001393d00001340* + ID_MODEL_FROM_DATABASE=CP134U (4-Port RS-422/485 Universal PCI) + +pci:v00001393d00001341* + ID_MODEL_FROM_DATABASE=CB134I (4-port RS-422/485 PC/104-plus Module) + +pci:v00001393d00001380* + ID_MODEL_FROM_DATABASE=CP138U (8-port RS-232/422/485 Smart Universal PCI) + +pci:v00001393d00001680* + ID_MODEL_FROM_DATABASE=Smartio C168H/PCI + +pci:v00001393d00001681* + ID_MODEL_FROM_DATABASE=CP-168U V2 Smart Serial Board (8-port RS-232) + +pci:v00001393d00001682* + ID_MODEL_FROM_DATABASE=CP168EL (8-port RS-232 Smart PCI Express) + +pci:v00001393d00001683* + ID_MODEL_FROM_DATABASE=CP-168EL-A (8-port RS-232 PCI Express Serial Board) + +pci:v00001393d00002040* + ID_MODEL_FROM_DATABASE=Intellio CP-204J + +pci:v00001393d00002180* + ID_MODEL_FROM_DATABASE=Intellio C218 Turbo PCI + +pci:v00001393d00003200* + ID_MODEL_FROM_DATABASE=Intellio C320 Turbo PCI + +pci:v00001394* + ID_VENDOR_FROM_DATABASE=Level One Communications + +pci:v00001394d00000001* + ID_MODEL_FROM_DATABASE=LXT1001 Gigabit Ethernet + +pci:v00001394d00000001sv00001186sd00004800* + ID_MODEL_FROM_DATABASE=DGE-500SX + +pci:v00001394d00000001sv00001394sd00000001* + ID_MODEL_FROM_DATABASE=NetCelerator Adapter + +pci:v00001395* + ID_VENDOR_FROM_DATABASE=Ambicom Inc + +pci:v00001396* + ID_VENDOR_FROM_DATABASE=Cipher Systems Inc + +pci:v00001397* + ID_VENDOR_FROM_DATABASE=Cologne Chip Designs GmbH + +pci:v00001397d000008B4* + ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-4S] + +pci:v00001397d000008B4sv00001397sd0000B520* + ID_MODEL_FROM_DATABASE=HFC-4S [IOB4ST] + +pci:v00001397d000008B4sv00001397sd0000B540* + ID_MODEL_FROM_DATABASE=HFC-4S [Swyx 4xS0 SX2 QuadBri] + +pci:v00001397d000008B4sv00001397sd0000B550* + ID_MODEL_FROM_DATABASE=HFC-4S [Junghanns quadBRI] + +pci:v00001397d000008B4sv00001397sd0000B556* + ID_MODEL_FROM_DATABASE=HFC-4S [Junghanns DuoDBRI] + +pci:v00001397d000008B4sv00001397sd0000E888* + ID_MODEL_FROM_DATABASE=HFC-4S [OpenVox B200P / B400P] + +pci:v00001397d000016B8* + ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-8S] + +pci:v00001397d000016B8sv00001397sd0000B562* + ID_MODEL_FROM_DATABASE=HFC-8S [IOB8ST] + +pci:v00001397d00002BD0* + ID_MODEL_FROM_DATABASE=ISDN network controller [HFC-PCI] + +pci:v00001397d00002BD0sv00000675sd00001704* + ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, D, C) + +pci:v00001397d00002BD0sv00000675sd00001708* + ID_MODEL_FROM_DATABASE=ISDN Adapter (PCI Bus, D, C, ACPI) + +pci:v00001397d00002BD0sv00001397sd00002BD0* + ID_MODEL_FROM_DATABASE=ISDN Board + +pci:v00001397d00002BD0sv0000E4BFsd00001000* + ID_MODEL_FROM_DATABASE=CI1-1-Harp + +pci:v00001397d000030B1* + ID_MODEL_FROM_DATABASE=ISDN network Controller [HFC-E1] + +pci:v00001397d0000B700* + ID_MODEL_FROM_DATABASE=ISDN network controller PrimuX S0 [HFC-PCI] + +pci:v00001397d0000F001* + ID_MODEL_FROM_DATABASE=GSM Network Controller [HFC-4GSM] + +pci:v00001398* + ID_VENDOR_FROM_DATABASE=Clarion co. Ltd + +pci:v00001399* + ID_VENDOR_FROM_DATABASE=Rios systems Co Ltd + +pci:v0000139A* + ID_VENDOR_FROM_DATABASE=Alacritech Inc + +pci:v0000139Ad00000001* + ID_MODEL_FROM_DATABASE=Quad Port 10/100 Server Accelerator + +pci:v0000139Ad00000003* + ID_MODEL_FROM_DATABASE=Single Port 10/100 Server Accelerator + +pci:v0000139Ad00000005* + ID_MODEL_FROM_DATABASE=Single Port Gigabit Server Accelerator + +pci:v0000139B* + ID_VENDOR_FROM_DATABASE=Mediasonic Multimedia Systems Ltd + +pci:v0000139C* + ID_VENDOR_FROM_DATABASE=Quantum 3d Inc + +pci:v0000139D* + ID_VENDOR_FROM_DATABASE=EPL limited + +pci:v0000139E* + ID_VENDOR_FROM_DATABASE=Media4 + +pci:v0000139F* + ID_VENDOR_FROM_DATABASE=Aethra s.r.l. + +pci:v000013A0* + ID_VENDOR_FROM_DATABASE=Crystal Group Inc + +pci:v000013A1* + ID_VENDOR_FROM_DATABASE=Kawasaki Heavy Industries Ltd + +pci:v000013A2* + ID_VENDOR_FROM_DATABASE=Ositech Communications Inc + +pci:v000013A3* + ID_VENDOR_FROM_DATABASE=Hifn Inc. + +pci:v000013A3d00000005* + ID_MODEL_FROM_DATABASE=7751 Security Processor + +pci:v000013A3d00000006* + ID_MODEL_FROM_DATABASE=6500 Public Key Processor + +pci:v000013A3d00000007* + ID_MODEL_FROM_DATABASE=7811 Security Processor + +pci:v000013A3d00000012* + ID_MODEL_FROM_DATABASE=7951 Security Processor + +pci:v000013A3d00000014* + ID_MODEL_FROM_DATABASE=78XX Security Processor + +pci:v000013A3d00000016* + ID_MODEL_FROM_DATABASE=8065 Security Processor + +pci:v000013A3d00000017* + ID_MODEL_FROM_DATABASE=8165 Security Processor + +pci:v000013A3d00000018* + ID_MODEL_FROM_DATABASE=8154 Security Processor + +pci:v000013A3d0000001D* + ID_MODEL_FROM_DATABASE=7956 Security Processor + +pci:v000013A3d0000001F* + ID_MODEL_FROM_DATABASE=7855 Security Processor + +pci:v000013A3d00000020* + ID_MODEL_FROM_DATABASE=7955 Security Processor + +pci:v000013A3d00000026* + ID_MODEL_FROM_DATABASE=8155 Security Processor + +pci:v000013A3d0000002E* + ID_MODEL_FROM_DATABASE=9630 Compression Processor + +pci:v000013A3d0000002F* + ID_MODEL_FROM_DATABASE=9725 Compression and Security Processor + +pci:v000013A3d0000002Fsv000013A3sd00001600* + ID_MODEL_FROM_DATABASE=DR1600 Acceleration Card + +pci:v000013A3d0000002Fsv000013A3sd00001605* + ID_MODEL_FROM_DATABASE=DR1605 Acceleration Card + +pci:v000013A3d0000002Fsv000013A3sd00001610* + ID_MODEL_FROM_DATABASE=DR1610 Acceleration Card + +pci:v000013A3d0000002Fsv000013A3sd00001615* + ID_MODEL_FROM_DATABASE=DR1615 Acceleration Card + +pci:v000013A3d0000002Fsv000013A3sd00001620* + ID_MODEL_FROM_DATABASE=DR1620 Acceleration Card + +pci:v000013A3d0000002Fsv000013A3sd00001625* + ID_MODEL_FROM_DATABASE=DR1625 Acceleration Card + +pci:v000013A3d00000033* + ID_MODEL_FROM_DATABASE=8201 Acceleration Processor + +pci:v000013A3d00000033sv000013A3sd00000036* + ID_MODEL_FROM_DATABASE=DX1710 Acceleration Card + +pci:v000013A3d00000034* + ID_MODEL_FROM_DATABASE=8202 Acceleration Processor + +pci:v000013A3d00000034sv000013A3sd00000036* + ID_MODEL_FROM_DATABASE=DX1720 Acceleration Card + +pci:v000013A3d00000035* + ID_MODEL_FROM_DATABASE=8203 Acceleration Processor + +pci:v000013A3d00000035sv000013A3sd00000036* + ID_MODEL_FROM_DATABASE=DX1730 Acceleration Card + +pci:v000013A3d00000037* + ID_MODEL_FROM_DATABASE=8204 Acceleration Processor + +pci:v000013A3d00000037sv000013A3sd00000036* + ID_MODEL_FROM_DATABASE=DX1740 Acceleration Card + +pci:v000013A4* + ID_VENDOR_FROM_DATABASE=Rascom Inc + +pci:v000013A5* + ID_VENDOR_FROM_DATABASE=Audio Digital Imaging Inc + +pci:v000013A6* + ID_VENDOR_FROM_DATABASE=Videonics Inc + +pci:v000013A7* + ID_VENDOR_FROM_DATABASE=Teles AG + +pci:v000013A8* + ID_VENDOR_FROM_DATABASE=Exar Corp. + +pci:v000013A8d00000152* + ID_MODEL_FROM_DATABASE=XR17C/D152 Dual PCI UART + +pci:v000013A8d00000154* + ID_MODEL_FROM_DATABASE=XR17C154 Quad UART + +pci:v000013A8d00000158* + ID_MODEL_FROM_DATABASE=XR17C158 Octal UART + +pci:v000013A8d00000252* + ID_MODEL_FROM_DATABASE=XR17V252 Dual UART PCI controller + +pci:v000013A8d00000254* + ID_MODEL_FROM_DATABASE=XR17V254 Quad UART PCI controller + +pci:v000013A8d00000258* + ID_MODEL_FROM_DATABASE=XR17V258 Octal UART PCI controller + +pci:v000013A9* + ID_VENDOR_FROM_DATABASE=Siemens Medical Systems, Ultrasound Group + +pci:v000013AA* + ID_VENDOR_FROM_DATABASE=Broadband Networks Inc + +pci:v000013AB* + ID_VENDOR_FROM_DATABASE=Arcom Control Systems Ltd + +pci:v000013AC* + ID_VENDOR_FROM_DATABASE=Motion Media Technology Ltd + +pci:v000013AD* + ID_VENDOR_FROM_DATABASE=Nexus Inc + +pci:v000013AE* + ID_VENDOR_FROM_DATABASE=ALD Technology Ltd + +pci:v000013AF* + ID_VENDOR_FROM_DATABASE=T.Sqware + +pci:v000013B0* + ID_VENDOR_FROM_DATABASE=Maxspeed Corp + +pci:v000013B1* + ID_VENDOR_FROM_DATABASE=Tamura corporation + +pci:v000013B2* + ID_VENDOR_FROM_DATABASE=Techno Chips Co. Ltd + +pci:v000013B3* + ID_VENDOR_FROM_DATABASE=Lanart Corporation + +pci:v000013B4* + ID_VENDOR_FROM_DATABASE=Wellbean Co Inc + +pci:v000013B5* + ID_VENDOR_FROM_DATABASE=ARM + +pci:v000013B6* + ID_VENDOR_FROM_DATABASE=Dlog GmbH + +pci:v000013B7* + ID_VENDOR_FROM_DATABASE=Logic Devices Inc + +pci:v000013B8* + ID_VENDOR_FROM_DATABASE=Nokia Telecommunications oy + +pci:v000013B9* + ID_VENDOR_FROM_DATABASE=Elecom Co Ltd + +pci:v000013BA* + ID_VENDOR_FROM_DATABASE=Oxford Instruments + +pci:v000013BB* + ID_VENDOR_FROM_DATABASE=Sanyo Technosound Co Ltd + +pci:v000013BC* + ID_VENDOR_FROM_DATABASE=Bitran Corporation + +pci:v000013BD* + ID_VENDOR_FROM_DATABASE=Sharp corporation + +pci:v000013BE* + ID_VENDOR_FROM_DATABASE=Miroku Jyoho Service Co. Ltd + +pci:v000013BF* + ID_VENDOR_FROM_DATABASE=Sharewave Inc + +pci:v000013C0* + ID_VENDOR_FROM_DATABASE=Microgate Corporation + +pci:v000013C0d00000010* + ID_MODEL_FROM_DATABASE=SyncLink Adapter v1 + +pci:v000013C0d00000020* + ID_MODEL_FROM_DATABASE=SyncLink SCC Adapter + +pci:v000013C0d00000030* + ID_MODEL_FROM_DATABASE=SyncLink Multiport Adapter + +pci:v000013C0d00000070* + ID_MODEL_FROM_DATABASE=SyncLink GT Adapter + +pci:v000013C0d00000080* + ID_MODEL_FROM_DATABASE=SyncLink GT4 Adapter + +pci:v000013C0d000000A0* + ID_MODEL_FROM_DATABASE=SyncLink GT2 Adapter + +pci:v000013C0d00000210* + ID_MODEL_FROM_DATABASE=SyncLink Adapter v2 + +pci:v000013C1* + ID_VENDOR_FROM_DATABASE=3ware Inc + +pci:v000013C1d00001000* + ID_MODEL_FROM_DATABASE=5xxx/6xxx-series PATA-RAID + +pci:v000013C1d00001001* + ID_MODEL_FROM_DATABASE=7xxx/8xxx-series PATA/SATA-RAID + +pci:v000013C1d00001001sv000013C1sd00001001* + ID_MODEL_FROM_DATABASE=7xxx/8xxx-series PATA/SATA-RAID + +pci:v000013C1d00001002* + ID_MODEL_FROM_DATABASE=9xxx-series SATA-RAID + +pci:v000013C1d00001003* + ID_MODEL_FROM_DATABASE=9550SX SATA-II RAID PCI-X + +pci:v000013C1d00001004* + ID_MODEL_FROM_DATABASE=9650SE SATA-II RAID PCIe + +pci:v000013C1d00001005* + ID_MODEL_FROM_DATABASE=9690SA SAS/SATA-II RAID PCIe + +pci:v000013C1d00001010* + ID_MODEL_FROM_DATABASE=9750 SAS2/SATA-II RAID PCIe + +pci:v000013C2* + ID_VENDOR_FROM_DATABASE=Technotrend Systemtechnik GmbH + +pci:v000013C2d0000000E* + ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.3 + +pci:v000013C2d00001019* + ID_MODEL_FROM_DATABASE=TTechnoTrend-budget DVB S2-3200 + +pci:v000013C3* + ID_VENDOR_FROM_DATABASE=Janz Computer AG + +pci:v000013C4* + ID_VENDOR_FROM_DATABASE=Phase Metrics + +pci:v000013C5* + ID_VENDOR_FROM_DATABASE=Alphi Technology Corp + +pci:v000013C6* + ID_VENDOR_FROM_DATABASE=Condor Engineering Inc + +pci:v000013C6d00000520* + ID_MODEL_FROM_DATABASE=CEI-520 A429 Card + +pci:v000013C6d00000620* + ID_MODEL_FROM_DATABASE=CEI-620 A429 Card + +pci:v000013C6d00000820* + ID_MODEL_FROM_DATABASE=CEI-820 A429 Card + +pci:v000013C6d00000830* + ID_MODEL_FROM_DATABASE=CEI-830 A429 Card + +pci:v000013C6d00001004* + ID_MODEL_FROM_DATABASE=P-SER Multi-channel PMC to RS-485/422/232 adapter + +pci:v000013C7* + ID_VENDOR_FROM_DATABASE=Blue Chip Technology Ltd + +pci:v000013C7d00000ADC* + ID_MODEL_FROM_DATABASE=PCI-ADC + +pci:v000013C7d00000B10* + ID_MODEL_FROM_DATABASE=PCI-PIO + +pci:v000013C7d00000D10* + ID_MODEL_FROM_DATABASE=PCI-DIO + +pci:v000013C7d0000524C* + ID_MODEL_FROM_DATABASE=PCI-RLY + +pci:v000013C7d00005744* + ID_MODEL_FROM_DATABASE=PCI-WDT + +pci:v000013C8* + ID_VENDOR_FROM_DATABASE=Apptech Inc + +pci:v000013C9* + ID_VENDOR_FROM_DATABASE=Eaton Corporation + +pci:v000013CA* + ID_VENDOR_FROM_DATABASE=Iomega Corporation + +pci:v000013CB* + ID_VENDOR_FROM_DATABASE=Yano Electric Co Ltd + +pci:v000013CC* + ID_VENDOR_FROM_DATABASE=Metheus Corporation + +pci:v000013CD* + ID_VENDOR_FROM_DATABASE=Compatible Systems Corporation + +pci:v000013CE* + ID_VENDOR_FROM_DATABASE=Cocom A/S + +pci:v000013CF* + ID_VENDOR_FROM_DATABASE=Studio Audio & Video Ltd + +pci:v000013D0* + ID_VENDOR_FROM_DATABASE=Techsan Electronics Co Ltd + +pci:v000013D0d00002103* + ID_MODEL_FROM_DATABASE=B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card + +pci:v000013D0d00002104* + ID_MODEL_FROM_DATABASE=B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card (rev 01) + +pci:v000013D0d00002200* + ID_MODEL_FROM_DATABASE=B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card + +pci:v000013D1* + ID_VENDOR_FROM_DATABASE=Abocom Systems Inc + +pci:v000013D1d0000AB02* + ID_MODEL_FROM_DATABASE=ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter + +pci:v000013D1d0000AB03* + ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet + +pci:v000013D1d0000AB06* + ID_MODEL_FROM_DATABASE=RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter + +pci:v000013D1d0000AB08* + ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet + +pci:v000013D2* + ID_VENDOR_FROM_DATABASE=Shark Multimedia Inc + +pci:v000013D4* + ID_VENDOR_FROM_DATABASE=Graphics Microsystems Inc + +pci:v000013D5* + ID_VENDOR_FROM_DATABASE=Media 100 Inc + +pci:v000013D6* + ID_VENDOR_FROM_DATABASE=K.I. Technology Co Ltd + +pci:v000013D7* + ID_VENDOR_FROM_DATABASE=Toshiba Engineering Corporation + +pci:v000013D8* + ID_VENDOR_FROM_DATABASE=Phobos corporation + +pci:v000013D9* + ID_VENDOR_FROM_DATABASE=Apex PC Solutions Inc + +pci:v000013DA* + ID_VENDOR_FROM_DATABASE=Intresource Systems pte Ltd + +pci:v000013DB* + ID_VENDOR_FROM_DATABASE=Janich & Klass Computertechnik GmbH + +pci:v000013DC* + ID_VENDOR_FROM_DATABASE=Netboost Corporation + +pci:v000013DD* + ID_VENDOR_FROM_DATABASE=Multimedia Bundle Inc + +pci:v000013DE* + ID_VENDOR_FROM_DATABASE=ABB Robotics Products AB + +pci:v000013DF* + ID_VENDOR_FROM_DATABASE=E-Tech Inc + +pci:v000013DFd00000001* + ID_MODEL_FROM_DATABASE=PCI56RVP Modem + +pci:v000013DFd00000001sv000013DFsd00000001* + ID_MODEL_FROM_DATABASE=PCI56RVP Modem + +pci:v000013E0* + ID_VENDOR_FROM_DATABASE=GVC Corporation + +pci:v000013E1* + ID_VENDOR_FROM_DATABASE=Silicom Multimedia Systems Inc + +pci:v000013E2* + ID_VENDOR_FROM_DATABASE=Dynamics Research Corporation + +pci:v000013E3* + ID_VENDOR_FROM_DATABASE=Nest Inc + +pci:v000013E4* + ID_VENDOR_FROM_DATABASE=Calculex Inc + +pci:v000013E5* + ID_VENDOR_FROM_DATABASE=Telesoft Design Ltd + +pci:v000013E6* + ID_VENDOR_FROM_DATABASE=Argosy research Inc + +pci:v000013E7* + ID_VENDOR_FROM_DATABASE=NAC Incorporated + +pci:v000013E8* + ID_VENDOR_FROM_DATABASE=Chip Express Corporation + +pci:v000013E9* + ID_VENDOR_FROM_DATABASE=Intraserver Technology Inc + +pci:v000013EA* + ID_VENDOR_FROM_DATABASE=Dallas Semiconductor + +pci:v000013EB* + ID_VENDOR_FROM_DATABASE=Hauppauge Computer Works Inc + +pci:v000013EC* + ID_VENDOR_FROM_DATABASE=Zydacron Inc + +pci:v000013ECd0000000A* + ID_MODEL_FROM_DATABASE=NPC-RC01 Remote control receiver + +pci:v000013ED* + ID_VENDOR_FROM_DATABASE=Raytheion E-Systems + +pci:v000013EE* + ID_VENDOR_FROM_DATABASE=Hayes Microcomputer Products Inc + +pci:v000013EF* + ID_VENDOR_FROM_DATABASE=Coppercom Inc + +pci:v000013F0* + ID_VENDOR_FROM_DATABASE=Sundance Technology Inc / IC Plus Corp + +pci:v000013F0d00000200* + ID_MODEL_FROM_DATABASE=IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY + +pci:v000013F0d00000200sv00001043sd00008213* + ID_MODEL_FROM_DATABASE=NX1001 + +pci:v000013F0d00000201* + ID_MODEL_FROM_DATABASE=ST201 Sundance Ethernet + +pci:v000013F0d00001021* + ID_MODEL_FROM_DATABASE=TC902x Gigabit Ethernet + +pci:v000013F0d00001023* + ID_MODEL_FROM_DATABASE=IP1000 Family Gigabit Ethernet + +pci:v000013F0d00001023sv00001043sd00008180* + ID_MODEL_FROM_DATABASE=NX1101 + +pci:v000013F1* + ID_VENDOR_FROM_DATABASE=Oce' - Technologies B.V. + +pci:v000013F2* + ID_VENDOR_FROM_DATABASE=Ford Microelectronics Inc + +pci:v000013F3* + ID_VENDOR_FROM_DATABASE=Mcdata Corporation + +pci:v000013F4* + ID_VENDOR_FROM_DATABASE=Troika Networks, Inc. + +pci:v000013F4d00001401* + ID_MODEL_FROM_DATABASE=Zentai Fibre Channel Adapter + +pci:v000013F5* + ID_VENDOR_FROM_DATABASE=Kansai Electric Co. Ltd + +pci:v000013F6* + ID_VENDOR_FROM_DATABASE=C-Media Electronics Inc + +pci:v000013F6d00000011* + ID_MODEL_FROM_DATABASE=CMI8738 + +pci:v000013F6d00000100* + ID_MODEL_FROM_DATABASE=CM8338A + +pci:v000013F6d00000100sv000013F6sd0000FFFF* + ID_MODEL_FROM_DATABASE=CMI8338/C3DX PCI Audio Device + +pci:v000013F6d00000101* + ID_MODEL_FROM_DATABASE=CM8338B + +pci:v000013F6d00000101sv000013F6sd00000101* + ID_MODEL_FROM_DATABASE=CMI8338-031 PCI Audio Device + +pci:v000013F6d00000111* + ID_MODEL_FROM_DATABASE=CMI8738/CMI8768 PCI Audio + +pci:v000013F6d00000111sv00001019sd00000970* + ID_MODEL_FROM_DATABASE=P6STP-FL motherboard + +pci:v000013F6d00000111sv00001043sd00008035* + ID_MODEL_FROM_DATABASE=CUSI-FX motherboard + +pci:v000013F6d00000111sv00001043sd00008077* + ID_MODEL_FROM_DATABASE=CMI8738 6-channel audio controller + +pci:v000013F6d00000111sv00001043sd000080E2* + ID_MODEL_FROM_DATABASE=CMI8738 6ch-MX + +pci:v000013F6d00000111sv000013F6sd00000111* + ID_MODEL_FROM_DATABASE=CMI8738/C3DX PCI Audio Device + +pci:v000013F6d00000111sv000013F6sd00009761* + ID_MODEL_FROM_DATABASE=Theatron Agrippa + +pci:v000013F6d00000111sv0000153Bsd00001144* + ID_MODEL_FROM_DATABASE=Aureon 5.1 + +pci:v000013F6d00000111sv0000153Bsd00001170* + ID_MODEL_FROM_DATABASE=Aureon 7.1 + +pci:v000013F6d00000111sv00001681sd0000A000* + ID_MODEL_FROM_DATABASE=Gamesurround MUSE XL + +pci:v000013F6d00000111sv000017ABsd00000604* + ID_MODEL_FROM_DATABASE=PSC604 Dynamic Edge + +pci:v000013F6d00000111sv000017ABsd00000605* + ID_MODEL_FROM_DATABASE=PSC605 Sonic Edge + +pci:v000013F6d00000111sv000017ABsd00007777* + ID_MODEL_FROM_DATABASE=PSC605 Sonic Edge + +pci:v000013F6d00000111sv0000270Fsd00001103* + ID_MODEL_FROM_DATABASE=CT-7NJS Ultra motherboard + +pci:v000013F6d00000111sv0000270Fsd0000F462* + ID_MODEL_FROM_DATABASE=7NJL1 motherboard + +pci:v000013F6d00000111sv0000584Dsd00003731* + ID_MODEL_FROM_DATABASE=Digital X-Mystique + +pci:v000013F6d00000111sv0000584Dsd00003741* + ID_MODEL_FROM_DATABASE=X-Plosion 7.1 + +pci:v000013F6d00000111sv0000584Dsd00003751* + ID_MODEL_FROM_DATABASE=X-Raider 7.1 + +pci:v000013F6d00000111sv0000584Dsd00003761* + ID_MODEL_FROM_DATABASE=X-Mystique 7.1 LP + +pci:v000013F6d00000111sv0000584Dsd00003771* + ID_MODEL_FROM_DATABASE=X-Mystique 7.1 LP Value + +pci:v000013F6d00000111sv00007284sd00008384* + ID_MODEL_FROM_DATABASE=Striker 7.1 + +pci:v000013F6d00000211* + ID_MODEL_FROM_DATABASE=CM8738 + +pci:v000013F6d00005011* + ID_MODEL_FROM_DATABASE=CM8888 [Oxygen Express] + +pci:v000013F6d00005011sv000013F6sd00005011* + ID_MODEL_FROM_DATABASE=HDA Controller + +pci:v000013F6d00008788* + ID_MODEL_FROM_DATABASE=CMI8788 [Oxygen HD Audio] + +pci:v000013F6d00008788sv00001043sd00008269* + ID_MODEL_FROM_DATABASE=Virtuoso 200 (Xonar D2) + +pci:v000013F6d00008788sv00001043sd00008275* + ID_MODEL_FROM_DATABASE=Virtuoso 100 (Xonar DX) + +pci:v000013F6d00008788sv00001043sd000082B7* + ID_MODEL_FROM_DATABASE=Virtuoso 200 (Xonar D2X) + +pci:v000013F6d00008788sv00001043sd00008314* + ID_MODEL_FROM_DATABASE=Virtuoso 200 (Xonar HDAV1.3) + +pci:v000013F6d00008788sv00001043sd00008327* + ID_MODEL_FROM_DATABASE=Virtuoso 100 (Xonar DX) + +pci:v000013F6d00008788sv00001043sd0000834F* + ID_MODEL_FROM_DATABASE=Virtuoso 100 (Xonar D1) + +pci:v000013F6d00008788sv00001043sd0000835C* + ID_MODEL_FROM_DATABASE=Virtuoso 100 (Xonar Essence STX) + +pci:v000013F6d00008788sv00001043sd0000835D* + ID_MODEL_FROM_DATABASE=Virtuoso 100 (Xonar ST) + +pci:v000013F6d00008788sv00001043sd0000835E* + ID_MODEL_FROM_DATABASE=Virtuoso 200 (Xonar HDAV1.3 Slim) + +pci:v000013F6d00008788sv00001043sd0000838E* + ID_MODEL_FROM_DATABASE=Virtuoso 66 (Xonar DS) + +pci:v000013F6d00008788sv00001043sd00008428* + ID_MODEL_FROM_DATABASE=Virtuoso 100 (Xonar Xense) + +pci:v000013F6d00008788sv00001043sd00008467* + ID_MODEL_FROM_DATABASE=CMI8786 (Xonar DG) + +pci:v000013F6d00008788sv000013F6sd00008782* + ID_MODEL_FROM_DATABASE=PCI 2.0 HD Audio + +pci:v000013F6d00008788sv000013F6sd0000FFFF* + ID_MODEL_FROM_DATABASE=CMI8787-HG2PCI + +pci:v000013F6d00008788sv000014C3sd00001710* + ID_MODEL_FROM_DATABASE=HiFier Fantasia + +pci:v000013F6d00008788sv000014C3sd00001711* + ID_MODEL_FROM_DATABASE=HiFier Serenade + +pci:v000013F6d00008788sv00001A58sd00000910* + ID_MODEL_FROM_DATABASE=Barracuda AC-1 + +pci:v000013F6d00008788sv0000415Asd00005431* + ID_MODEL_FROM_DATABASE=X-Meridian 7.1 + +pci:v000013F6d00008788sv00005431sd0000017A* + ID_MODEL_FROM_DATABASE=X-Meridian 7.1 2G + +pci:v000013F6d00008788sv0000584Dsd00003781* + ID_MODEL_FROM_DATABASE=HDA X-Purity 7.1 Platinum + +pci:v000013F6d00008788sv00007284sd00009761* + ID_MODEL_FROM_DATABASE=CLARO + +pci:v000013F6d00008788sv00007284sd00009781* + ID_MODEL_FROM_DATABASE=CLARO halo + +pci:v000013F6d00008788sv00007284sd00009783* + ID_MODEL_FROM_DATABASE=eCLARO + +pci:v000013F6d00008788sv00007284sd00009787* + ID_MODEL_FROM_DATABASE=CLARO II + +pci:v000013F7* + ID_VENDOR_FROM_DATABASE=Wildfire Communications + +pci:v000013F8* + ID_VENDOR_FROM_DATABASE=Ad Lib Multimedia Inc + +pci:v000013F9* + ID_VENDOR_FROM_DATABASE=NTT Advanced Technology Corp. + +pci:v000013FA* + ID_VENDOR_FROM_DATABASE=Pentland Systems Ltd + +pci:v000013FB* + ID_VENDOR_FROM_DATABASE=Aydin Corp + +pci:v000013FC* + ID_VENDOR_FROM_DATABASE=Computer Peripherals International + +pci:v000013FD* + ID_VENDOR_FROM_DATABASE=Micro Science Inc + +pci:v000013FE* + ID_VENDOR_FROM_DATABASE=Advantech Co. Ltd + +pci:v000013FEd00001240* + ID_MODEL_FROM_DATABASE=PCI-1240 4-channel stepper motor controller card + +pci:v000013FEd00001600* + ID_MODEL_FROM_DATABASE=PCI-16xx series PCI multiport serial board (function 0) + +pci:v000013FEd00001600sv00001601sd00000002* + ID_MODEL_FROM_DATABASE=PCI-1601 2-port unisolated RS-422/485 + +pci:v000013FEd00001600sv00001602sd00000002* + ID_MODEL_FROM_DATABASE=PCI-1602 2-port isolated RS-422/485 + +pci:v000013FEd00001600sv00001612sd00000004* + ID_MODEL_FROM_DATABASE=PCI-1612 4-port RS-232/422/485 + +pci:v000013FEd00001603* + ID_MODEL_FROM_DATABASE=PCI-1603 2-port isolated RS-232/current loop + +pci:v000013FEd00001604* + ID_MODEL_FROM_DATABASE=PCI-1604 2-port RS-232 + +pci:v000013FEd000016FF* + ID_MODEL_FROM_DATABASE=PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD) + +pci:v000013FEd000016FFsv00001601sd00000000* + ID_MODEL_FROM_DATABASE=PCI-1601 2-port unisolated RS-422/485 PCI communications card + +pci:v000013FEd000016FFsv00001602sd00000000* + ID_MODEL_FROM_DATABASE=PCI-1602 2-port isolated RS-422/485 + +pci:v000013FEd000016FFsv00001612sd00000000* + ID_MODEL_FROM_DATABASE=PCI-1612 4-port RS-232/422/485 + +pci:v000013FEd00001711* + ID_MODEL_FROM_DATABASE=PCI-1711 16-channel data acquisition card 12-bit, 100kS/s + +pci:v000013FEd00001733* + ID_MODEL_FROM_DATABASE=PCI-1733 32-channel isolated digital input card + +pci:v000013FEd00001752* + ID_MODEL_FROM_DATABASE=PCI-1752 + +pci:v000013FEd00001754* + ID_MODEL_FROM_DATABASE=PCI-1754 + +pci:v000013FEd00001756* + ID_MODEL_FROM_DATABASE=PCI-1756 + +pci:v000013FF* + ID_VENDOR_FROM_DATABASE=Silicon Spice Inc + +pci:v00001400* + ID_VENDOR_FROM_DATABASE=Artx Inc + +pci:v00001400d00001401* + ID_MODEL_FROM_DATABASE=9432 TX + +pci:v00001401* + ID_VENDOR_FROM_DATABASE=CR-Systems A/S + +pci:v00001402* + ID_VENDOR_FROM_DATABASE=Meilhaus Electronic GmbH + +pci:v00001402d00000630* + ID_MODEL_FROM_DATABASE=ME-630 + +pci:v00001402d00000940* + ID_MODEL_FROM_DATABASE=ME-94 + +pci:v00001402d00000950* + ID_MODEL_FROM_DATABASE=ME-95 + +pci:v00001402d00000960* + ID_MODEL_FROM_DATABASE=ME-96 + +pci:v00001402d00001000* + ID_MODEL_FROM_DATABASE=ME-1000 + +pci:v00001402d0000100A* + ID_MODEL_FROM_DATABASE=ME-1000 + +pci:v00001402d0000100B* + ID_MODEL_FROM_DATABASE=ME-1000 + +pci:v00001402d00001400* + ID_MODEL_FROM_DATABASE=ME-1400 + +pci:v00001402d0000140A* + ID_MODEL_FROM_DATABASE=ME-1400A + +pci:v00001402d0000140B* + ID_MODEL_FROM_DATABASE=ME-1400B + +pci:v00001402d0000140C* + ID_MODEL_FROM_DATABASE=ME-1400C + +pci:v00001402d0000140D* + ID_MODEL_FROM_DATABASE=ME-1400D + +pci:v00001402d0000140E* + ID_MODEL_FROM_DATABASE=ME-1400E + +pci:v00001402d000014EA* + ID_MODEL_FROM_DATABASE=ME-1400EA + +pci:v00001402d000014EB* + ID_MODEL_FROM_DATABASE=ME-1400EB + +pci:v00001402d00001604* + ID_MODEL_FROM_DATABASE=ME-1600/4U + +pci:v00001402d00001608* + ID_MODEL_FROM_DATABASE=ME-1600/8U + +pci:v00001402d0000160C* + ID_MODEL_FROM_DATABASE=ME-1600/12U + +pci:v00001402d0000160F* + ID_MODEL_FROM_DATABASE=ME-1600/16U + +pci:v00001402d0000168F* + ID_MODEL_FROM_DATABASE=ME-1600/16U8I + +pci:v00001402d00004610* + ID_MODEL_FROM_DATABASE=ME-4610 + +pci:v00001402d00004650* + ID_MODEL_FROM_DATABASE=ME-4650 + +pci:v00001402d00004660* + ID_MODEL_FROM_DATABASE=ME-4660 + +pci:v00001402d00004661* + ID_MODEL_FROM_DATABASE=ME-4660I + +pci:v00001402d00004662* + ID_MODEL_FROM_DATABASE=ME-4660 + +pci:v00001402d00004663* + ID_MODEL_FROM_DATABASE=ME-4660I + +pci:v00001402d00004670* + ID_MODEL_FROM_DATABASE=ME-4670 + +pci:v00001402d00004671* + ID_MODEL_FROM_DATABASE=ME-4670I + +pci:v00001402d00004672* + ID_MODEL_FROM_DATABASE=ME-4670S + +pci:v00001402d00004673* + ID_MODEL_FROM_DATABASE=ME-4670IS + +pci:v00001402d00004680* + ID_MODEL_FROM_DATABASE=ME-4680 + +pci:v00001402d00004681* + ID_MODEL_FROM_DATABASE=ME-4680I + +pci:v00001402d00004682* + ID_MODEL_FROM_DATABASE=ME-4680S + +pci:v00001402d00004683* + ID_MODEL_FROM_DATABASE=ME-4680IS + +pci:v00001402d00006004* + ID_MODEL_FROM_DATABASE=ME-6000/4 + +pci:v00001402d00006008* + ID_MODEL_FROM_DATABASE=ME-6000/8 + +pci:v00001402d0000600F* + ID_MODEL_FROM_DATABASE=ME-6000/16 + +pci:v00001402d00006014* + ID_MODEL_FROM_DATABASE=ME-6000I/4 + +pci:v00001402d00006018* + ID_MODEL_FROM_DATABASE=ME-6000I/8 + +pci:v00001402d0000601F* + ID_MODEL_FROM_DATABASE=ME-6000I/16 + +pci:v00001402d00006034* + ID_MODEL_FROM_DATABASE=ME-6000ISLE/4 + +pci:v00001402d00006038* + ID_MODEL_FROM_DATABASE=ME-6000ISLE/8 + +pci:v00001402d0000603F* + ID_MODEL_FROM_DATABASE=ME-6000ISLE/16 + +pci:v00001402d00006044* + ID_MODEL_FROM_DATABASE=ME-6000/4/DIO + +pci:v00001402d00006048* + ID_MODEL_FROM_DATABASE=ME-6000/8/DIO + +pci:v00001402d0000604F* + ID_MODEL_FROM_DATABASE=ME-6000/16/DIO + +pci:v00001402d00006054* + ID_MODEL_FROM_DATABASE=ME-6000I/4/DIO + +pci:v00001402d00006058* + ID_MODEL_FROM_DATABASE=ME-6000I/8/DIO + +pci:v00001402d0000605F* + ID_MODEL_FROM_DATABASE=ME-6000I/16/DIO + +pci:v00001402d00006074* + ID_MODEL_FROM_DATABASE=ME-6000ISLE/4/DIO + +pci:v00001402d00006078* + ID_MODEL_FROM_DATABASE=ME-6000ISLE/8/DIO + +pci:v00001402d0000607F* + ID_MODEL_FROM_DATABASE=ME-6000ISLE/16/DIO + +pci:v00001402d00006104* + ID_MODEL_FROM_DATABASE=ME-6100/4 + +pci:v00001402d00006108* + ID_MODEL_FROM_DATABASE=ME-6100/8 + +pci:v00001402d0000610F* + ID_MODEL_FROM_DATABASE=ME-6100/16 + +pci:v00001402d00006114* + ID_MODEL_FROM_DATABASE=ME-6100I/4 + +pci:v00001402d00006118* + ID_MODEL_FROM_DATABASE=ME-6100I/8 + +pci:v00001402d0000611F* + ID_MODEL_FROM_DATABASE=ME-6100I/16 + +pci:v00001402d00006134* + ID_MODEL_FROM_DATABASE=ME-6100ISLE/4 + +pci:v00001402d00006138* + ID_MODEL_FROM_DATABASE=ME-6100ISLE/8 + +pci:v00001402d0000613F* + ID_MODEL_FROM_DATABASE=ME-6100ISLE/16 + +pci:v00001402d00006144* + ID_MODEL_FROM_DATABASE=ME-6100/4/DIO + +pci:v00001402d00006148* + ID_MODEL_FROM_DATABASE=ME-6100/8/DIO + +pci:v00001402d0000614F* + ID_MODEL_FROM_DATABASE=ME-6100/16/DIO + +pci:v00001402d00006154* + ID_MODEL_FROM_DATABASE=ME-6100I/4/DIO + +pci:v00001402d00006158* + ID_MODEL_FROM_DATABASE=ME-6100I/8/DIO + +pci:v00001402d0000615F* + ID_MODEL_FROM_DATABASE=ME-6100I/16/DIO + +pci:v00001402d00006174* + ID_MODEL_FROM_DATABASE=ME-6100ISLE/4/DIO + +pci:v00001402d00006178* + ID_MODEL_FROM_DATABASE=ME-6100ISLE/8/DIO + +pci:v00001402d0000617F* + ID_MODEL_FROM_DATABASE=ME-6100ISLE/16/DIO + +pci:v00001402d00006259* + ID_MODEL_FROM_DATABASE=ME-6200I/9/DIO + +pci:v00001402d00006359* + ID_MODEL_FROM_DATABASE=ME-6300I/9/DIO + +pci:v00001402d0000810A* + ID_MODEL_FROM_DATABASE=ME-8100A + +pci:v00001402d0000810B* + ID_MODEL_FROM_DATABASE=ME-8100B + +pci:v00001402d0000820A* + ID_MODEL_FROM_DATABASE=ME-8200A + +pci:v00001402d0000820B* + ID_MODEL_FROM_DATABASE=ME-8200B + +pci:v00001403* + ID_VENDOR_FROM_DATABASE=Ascor Inc + +pci:v00001404* + ID_VENDOR_FROM_DATABASE=Fundamental Software Inc + +pci:v00001405* + ID_VENDOR_FROM_DATABASE=Excalibur Systems Inc + +pci:v00001406* + ID_VENDOR_FROM_DATABASE=Oce' Printing Systems GmbH + +pci:v00001407* + ID_VENDOR_FROM_DATABASE=Lava Computer mfg Inc + +pci:v00001407d00000100* + ID_MODEL_FROM_DATABASE=Lava Dual Serial + +pci:v00001407d00000101* + ID_MODEL_FROM_DATABASE=Lava Quatro A + +pci:v00001407d00000102* + ID_MODEL_FROM_DATABASE=Lava Quatro B + +pci:v00001407d00000110* + ID_MODEL_FROM_DATABASE=Lava DSerial-PCI Port A + +pci:v00001407d00000111* + ID_MODEL_FROM_DATABASE=Lava DSerial-PCI Port B + +pci:v00001407d00000120* + ID_MODEL_FROM_DATABASE=Quattro-PCI A + +pci:v00001407d00000121* + ID_MODEL_FROM_DATABASE=Quattro-PCI B + +pci:v00001407d00000180* + ID_MODEL_FROM_DATABASE=Lava Octo A + +pci:v00001407d00000181* + ID_MODEL_FROM_DATABASE=Lava Octo B + +pci:v00001407d00000200* + ID_MODEL_FROM_DATABASE=Lava Port Plus + +pci:v00001407d00000201* + ID_MODEL_FROM_DATABASE=Lava Quad A + +pci:v00001407d00000202* + ID_MODEL_FROM_DATABASE=Lava Quad B + +pci:v00001407d00000220* + ID_MODEL_FROM_DATABASE=Lava Quattro PCI Ports A/B + +pci:v00001407d00000221* + ID_MODEL_FROM_DATABASE=Lava Quattro PCI Ports C/D + +pci:v00001407d00000400* + ID_MODEL_FROM_DATABASE=Lava 8255-PIO-PCI + +pci:v00001407d00000500* + ID_MODEL_FROM_DATABASE=Lava Single Serial + +pci:v00001407d00000520* + ID_MODEL_FROM_DATABASE=Lava RS422-SS-PCI + +pci:v00001407d00000600* + ID_MODEL_FROM_DATABASE=Lava Port 650 + +pci:v00001407d00008000* + ID_MODEL_FROM_DATABASE=Lava Parallel + +pci:v00001407d00008001* + ID_MODEL_FROM_DATABASE=Dual parallel port controller A + +pci:v00001407d00008002* + ID_MODEL_FROM_DATABASE=Lava Dual Parallel port A + +pci:v00001407d00008003* + ID_MODEL_FROM_DATABASE=Lava Dual Parallel port B + +pci:v00001407d00008800* + ID_MODEL_FROM_DATABASE=BOCA Research IOPPAR + +pci:v00001408* + ID_VENDOR_FROM_DATABASE=Aloka Co. Ltd + +pci:v00001409* + ID_VENDOR_FROM_DATABASE=Timedia Technology Co Ltd + +pci:v00001409d00007168* + ID_MODEL_FROM_DATABASE=PCI2S550 (Dual 16550 UART) + +pci:v00001409d00007168sv00001409sd00000002* + ID_MODEL_FROM_DATABASE=SER4036A3V (2x RS232 port) + +pci:v00001409d00007168sv00001409sd00004027* + ID_MODEL_FROM_DATABASE=SER4027A (1x RS232 port) + +pci:v00001409d00007168sv00001409sd00004037* + ID_MODEL_FROM_DATABASE=SER4037A (2x RS232 port) + +pci:v00001409d00007168sv00001409sd00004056* + ID_MODEL_FROM_DATABASE=SER4056A (4x RS232) + +pci:v00001409d00007168sv00001409sd00005027* + ID_MODEL_FROM_DATABASE=SER4027D + +pci:v00001409d00007168sv00001409sd00005037* + ID_MODEL_FROM_DATABASE=SER4037D (2x RS232 port) + +pci:v00001409d00007168sv00001409sd00005066* + ID_MODEL_FROM_DATABASE=SER4066R (8x RS232) + +pci:v00001409d00007168sv00001409sd00006056* + ID_MODEL_FROM_DATABASE=SER4056D (4x RS232 port) + +pci:v00001409d00007268* + ID_MODEL_FROM_DATABASE=SUN1888 (Dual IEEE1284 parallel port) + +pci:v00001409d00007268sv00001409sd00000103* + ID_MODEL_FROM_DATABASE=PAR4008A + +pci:v00001409d00007268sv00001409sd00000104* + ID_MODEL_FROM_DATABASE=PAR4018A + +pci:v0000140A* + ID_VENDOR_FROM_DATABASE=DSP Research Inc + +pci:v0000140B* + ID_VENDOR_FROM_DATABASE=GE Intelligent Platforms + +pci:v0000140C* + ID_VENDOR_FROM_DATABASE=Elmic Systems Inc + +pci:v0000140D* + ID_VENDOR_FROM_DATABASE=Matsushita Electric Works Ltd + +pci:v0000140E* + ID_VENDOR_FROM_DATABASE=Goepel Electronic GmbH + +pci:v0000140F* + ID_VENDOR_FROM_DATABASE=Salient Systems Corp + +pci:v00001410* + ID_VENDOR_FROM_DATABASE=Midas lab Inc + +pci:v00001411* + ID_VENDOR_FROM_DATABASE=Ikos Systems Inc + +pci:v00001412* + ID_VENDOR_FROM_DATABASE=VIA Technologies Inc. + +pci:v00001412d00001712* + ID_MODEL_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller + +pci:v00001412d00001712sv00001412sd00001712* + ID_MODEL_FROM_DATABASE=Hoontech ST Audio DSP 24 + +pci:v00001412d00001712sv00001412sd00003632* + ID_MODEL_FROM_DATABASE=M-Audio Delta Audiophile 192 + +pci:v00001412d00001712sv00001412sd0000D630* + ID_MODEL_FROM_DATABASE=M-Audio Delta 1010 + +pci:v00001412d00001712sv00001412sd0000D631* + ID_MODEL_FROM_DATABASE=M-Audio Delta DiO + +pci:v00001412d00001712sv00001412sd0000D632* + ID_MODEL_FROM_DATABASE=M-Audio Delta 66 + +pci:v00001412d00001712sv00001412sd0000D633* + ID_MODEL_FROM_DATABASE=M-Audio Delta 44 + +pci:v00001412d00001712sv00001412sd0000D634* + ID_MODEL_FROM_DATABASE=M-Audio Delta Audiophile 2496 + +pci:v00001412d00001712sv00001412sd0000D635* + ID_MODEL_FROM_DATABASE=M-Audio Delta TDIF + +pci:v00001412d00001712sv00001412sd0000D637* + ID_MODEL_FROM_DATABASE=M-Audio Delta RBUS + +pci:v00001412d00001712sv00001412sd0000D638* + ID_MODEL_FROM_DATABASE=M-Audio Delta 410 + +pci:v00001412d00001712sv00001412sd0000D63B* + ID_MODEL_FROM_DATABASE=M-Audio Delta 1010LT + +pci:v00001412d00001712sv00001412sd0000D63C* + ID_MODEL_FROM_DATABASE=Digigram VX442 + +pci:v00001412d00001712sv00001416sd00001712* + ID_MODEL_FROM_DATABASE=Hoontech ST Audio DSP 24 Media 7.1 + +pci:v00001412d00001712sv0000153Bsd00001115* + ID_MODEL_FROM_DATABASE=EWS88 MT + +pci:v00001412d00001712sv0000153Bsd00001125* + ID_MODEL_FROM_DATABASE=EWS88 MT (Master) + +pci:v00001412d00001712sv0000153Bsd0000112B* + ID_MODEL_FROM_DATABASE=EWS88 D + +pci:v00001412d00001712sv0000153Bsd0000112C* + ID_MODEL_FROM_DATABASE=EWS88 D (Master) + +pci:v00001412d00001712sv0000153Bsd00001130* + ID_MODEL_FROM_DATABASE=EWX 24/96 + +pci:v00001412d00001712sv0000153Bsd00001138* + ID_MODEL_FROM_DATABASE=DMX 6fire 24/96 + +pci:v00001412d00001712sv0000153Bsd00001151* + ID_MODEL_FROM_DATABASE=PHASE88 + +pci:v00001412d00001712sv000016CEsd00001040* + ID_MODEL_FROM_DATABASE=Edirol DA-2496 + +pci:v00001412d00001724* + ID_MODEL_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller + +pci:v00001412d00001724sv000010B0sd00000200* + ID_MODEL_FROM_DATABASE=Hollywood@Home 7.1 + +pci:v00001412d00001724sv00001412sd00001724* + ID_MODEL_FROM_DATABASE=Albatron PX865PE 7.1 + +pci:v00001412d00001724sv00001412sd00003630* + ID_MODEL_FROM_DATABASE=M-Audio Revolution 7.1 + +pci:v00001412d00001724sv00001412sd00003631* + ID_MODEL_FROM_DATABASE=M-Audio Revolution 5.1 + +pci:v00001412d00001724sv0000153Bsd00001145* + ID_MODEL_FROM_DATABASE=Aureon 7.1 Space + +pci:v00001412d00001724sv0000153Bsd00001147* + ID_MODEL_FROM_DATABASE=Aureon 5.1 Sky + +pci:v00001412d00001724sv0000153Bsd00001150* + ID_MODEL_FROM_DATABASE=PHASE 22 + +pci:v00001412d00001724sv0000153Bsd00001153* + ID_MODEL_FROM_DATABASE=Aureon 7.1 Universe + +pci:v00001412d00001724sv000017ABsd00001906* + ID_MODEL_FROM_DATABASE=PSC 724 [Ultimate Edge] + +pci:v00001412d00001724sv0000270Fsd0000F641* + ID_MODEL_FROM_DATABASE=ZNF3-150 + +pci:v00001412d00001724sv0000270Fsd0000F645* + ID_MODEL_FROM_DATABASE=ZNF3-250 + +pci:v00001412d00001724sv00003130sd00004154* + ID_MODEL_FROM_DATABASE=MAYA 44 MKII + +pci:v00001413* + ID_VENDOR_FROM_DATABASE=Addonics + +pci:v00001414* + ID_VENDOR_FROM_DATABASE=Microsoft Corporation + +pci:v00001414d00000001* + ID_MODEL_FROM_DATABASE=MN-120 (ADMtek Centaur-C based) + +pci:v00001414d00000002* + ID_MODEL_FROM_DATABASE=MN-130 (ADMtek Centaur-P based) + +pci:v00001414d00005353* + ID_MODEL_FROM_DATABASE=Hyper-V virtual VGA + +pci:v00001414d00005801* + ID_MODEL_FROM_DATABASE=XMA Decoder (Xenon) + +pci:v00001414d00005802* + ID_MODEL_FROM_DATABASE=SATA Controller - CdRom (Xenon) + +pci:v00001414d00005803* + ID_MODEL_FROM_DATABASE=SATA Controller - Disk (Xenon) + +pci:v00001414d00005804* + ID_MODEL_FROM_DATABASE=OHCI Controller 0 (Xenon) + +pci:v00001414d00005805* + ID_MODEL_FROM_DATABASE=EHCI Controller 0 (Xenon) + +pci:v00001414d00005806* + ID_MODEL_FROM_DATABASE=OHCI Controller 1 (Xenon) + +pci:v00001414d00005807* + ID_MODEL_FROM_DATABASE=EHCI Controller 1 (Xenon) + +pci:v00001414d0000580A* + ID_MODEL_FROM_DATABASE=Fast Ethernet Adapter (Xenon) + +pci:v00001414d0000580B* + ID_MODEL_FROM_DATABASE=Secure Flash Controller (Xenon) + +pci:v00001414d0000580D* + ID_MODEL_FROM_DATABASE=System Management Controller (Xenon) + +pci:v00001414d00005811* + ID_MODEL_FROM_DATABASE=Xenos GPU (Xenon) + +pci:v00001415* + ID_VENDOR_FROM_DATABASE=Oxford Semiconductor Ltd + +pci:v00001415d00008401* + ID_MODEL_FROM_DATABASE=OX9162 Mode 1 (8-bit bus) + +pci:v00001415d00008403* + ID_MODEL_FROM_DATABASE=OX9162 Mode 0 (parallel port) + +pci:v00001415d00009500* + ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 0 (Disabled) + +pci:v00001415d00009501* + ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 0 (Uart) + +pci:v00001415d00009501sv000012C4sd00000201* + ID_MODEL_FROM_DATABASE=Titan/cPCI (2 port) + +pci:v00001415d00009501sv000012C4sd00000202* + ID_MODEL_FROM_DATABASE=Titan/cPCI (4 port) + +pci:v00001415d00009501sv000012C4sd00000203* + ID_MODEL_FROM_DATABASE=Titan/cPCI (8 port) + +pci:v00001415d00009501sv000012C4sd00000210* + ID_MODEL_FROM_DATABASE=Titan/104-Plus (8 port, p1-4) + +pci:v00001415d00009501sv0000131Fsd00002050* + ID_MODEL_FROM_DATABASE=CyberPro (4-port) + +pci:v00001415d00009501sv0000131Fsd00002051* + ID_MODEL_FROM_DATABASE=CyberSerial 4S Plus + +pci:v00001415d00009501sv000015EDsd00002000* + ID_MODEL_FROM_DATABASE=MCCR Serial p0-3 of 8 + +pci:v00001415d00009501sv000015EDsd00002001* + ID_MODEL_FROM_DATABASE=MCCR Serial p0-3 of 16 + +pci:v00001415d00009505* + ID_MODEL_FROM_DATABASE=OXuPCI952 (Dual 16C950 UART) + +pci:v00001415d0000950A* + ID_MODEL_FROM_DATABASE=EXSYS EX-41092 Dual 16950 Serial adapter + +pci:v00001415d0000950B* + ID_MODEL_FROM_DATABASE=OXCB950 Cardbus 16950 UART + +pci:v00001415d00009510* + ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (Disabled) + +pci:v00001415d00009510sv000012C4sd00000200* + ID_MODEL_FROM_DATABASE=Titan/cPCI (Unused) + +pci:v00001415d00009511* + ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (8bit bus) + +pci:v00001415d00009511sv000012C4sd00000211* + ID_MODEL_FROM_DATABASE=Titan/104-Plus (8 port, p5-8) + +pci:v00001415d00009511sv000015EDsd00002000* + ID_MODEL_FROM_DATABASE=MCCR Serial p4-7 of 8 + +pci:v00001415d00009511sv000015EDsd00002001* + ID_MODEL_FROM_DATABASE=MCCR Serial p4-15 of 16 + +pci:v00001415d00009512* + ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (32bit bus) + +pci:v00001415d00009513* + ID_MODEL_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (parallel port) + +pci:v00001415d00009521* + ID_MODEL_FROM_DATABASE=OX16PCI952 (Dual 16950 UART) + +pci:v00001415d00009523* + ID_MODEL_FROM_DATABASE=OX16PCI952 Integrated Parallel Port + +pci:v00001415d0000C158* + ID_MODEL_FROM_DATABASE=OXPCIe952 Dual 16C950 UART + +pci:v00001415d0000C158sv0000E4BFsd0000C504* + ID_MODEL_FROM_DATABASE=CP4-SCAT Wireless Technologies Carrier Board + +pci:v00001415d0000C158sv0000E4BFsd0000D551* + ID_MODEL_FROM_DATABASE=DU1-MUSTANG Dual-Port RS-485 Interface + +pci:v00001415d0000C308* + ID_MODEL_FROM_DATABASE=EX-44016 16-port serial + +pci:v00001416* + ID_VENDOR_FROM_DATABASE=Multiwave Innovation pte Ltd + +pci:v00001417* + ID_VENDOR_FROM_DATABASE=Convergenet Technologies Inc + +pci:v00001418* + ID_VENDOR_FROM_DATABASE=Kyushu electronics systems Inc + +pci:v00001419* + ID_VENDOR_FROM_DATABASE=Excel Switching Corp + +pci:v0000141A* + ID_VENDOR_FROM_DATABASE=Apache Micro Peripherals Inc + +pci:v0000141B* + ID_VENDOR_FROM_DATABASE=Zoom Telephonics Inc + +pci:v0000141D* + ID_VENDOR_FROM_DATABASE=Digitan Systems Inc + +pci:v0000141E* + ID_VENDOR_FROM_DATABASE=Fanuc Ltd + +pci:v0000141F* + ID_VENDOR_FROM_DATABASE=Visiontech Ltd + +pci:v00001420* + ID_VENDOR_FROM_DATABASE=Psion Dacom plc + +pci:v00001420d00008002* + ID_MODEL_FROM_DATABASE=Gold Card NetGlobal 56k+10/100Mb CardBus (Ethernet part) + +pci:v00001420d00008003* + ID_MODEL_FROM_DATABASE=Gold Card NetGlobal 56k+10/100Mb CardBus (Modem part) + +pci:v00001421* + ID_VENDOR_FROM_DATABASE=Ads Technologies Inc + +pci:v00001422* + ID_VENDOR_FROM_DATABASE=Ygrec Systems Co Ltd + +pci:v00001423* + ID_VENDOR_FROM_DATABASE=Custom Technology Corp. + +pci:v00001424* + ID_VENDOR_FROM_DATABASE=Videoserver Connections + +pci:v00001425* + ID_VENDOR_FROM_DATABASE=Chelsio Communications Inc + +pci:v00001425d0000000B* + ID_MODEL_FROM_DATABASE=T210 Protocol Engine + +pci:v00001425d0000000C* + ID_MODEL_FROM_DATABASE=T204 Protocol Engine + +pci:v00001425d00000022* + ID_MODEL_FROM_DATABASE=10GbE Ethernet Adapter + +pci:v00001425d00000030* + ID_MODEL_FROM_DATABASE=T310 10GbE Single Port Adapter + +pci:v00001425d00000030sv0000103Csd0000705E* + ID_MODEL_FROM_DATABASE=PCIe 10GBase-SR [AD386A] + +pci:v00001425d00000031* + ID_MODEL_FROM_DATABASE=T320 10GbE Dual Port Adapter + +pci:v00001425d00000032* + ID_MODEL_FROM_DATABASE=T302 1GbE Dual Port Adapter + +pci:v00001425d00000033* + ID_MODEL_FROM_DATABASE=T304 1GbE Quad Port Adapter + +pci:v00001425d00000034* + ID_MODEL_FROM_DATABASE=B320 10GbE Dual Port Adapter + +pci:v00001425d00000035* + ID_MODEL_FROM_DATABASE=S310-CR 10GbE Single Port Adapter + +pci:v00001425d00000036* + ID_MODEL_FROM_DATABASE=S320-LP-CR 10GbE Dual Port Adapter + +pci:v00001425d00000037* + ID_MODEL_FROM_DATABASE=N320-G2-CR 10GbE Dual Port Adapter + +pci:v00001425d00004001* + ID_MODEL_FROM_DATABASE=T420-CR Unified Wire Ethernet Controller + +pci:v00001425d00004002* + ID_MODEL_FROM_DATABASE=T422-CR Unified Wire Ethernet Controller + +pci:v00001425d00004003* + ID_MODEL_FROM_DATABASE=T440-CR Unified Wire Ethernet Controller + +pci:v00001425d00004004* + ID_MODEL_FROM_DATABASE=T420-BCH Unified Wire Ethernet Controller + +pci:v00001425d00004005* + ID_MODEL_FROM_DATABASE=T440-BCH Unified Wire Ethernet Controller + +pci:v00001425d00004006* + ID_MODEL_FROM_DATABASE=T440-CH Unified Wire Ethernet Controller + +pci:v00001425d00004007* + ID_MODEL_FROM_DATABASE=T420-SO Unified Wire Ethernet Controller + +pci:v00001425d00004008* + ID_MODEL_FROM_DATABASE=T420-CX Unified Wire Ethernet Controller + +pci:v00001425d00004009* + ID_MODEL_FROM_DATABASE=T420-BT Unified Wire Ethernet Controller + +pci:v00001425d0000400A* + ID_MODEL_FROM_DATABASE=T404-BT Unified Wire Ethernet Controller + +pci:v00001425d0000400B* + ID_MODEL_FROM_DATABASE=B420-SR Unified Wire Ethernet Controller + +pci:v00001425d0000400C* + ID_MODEL_FROM_DATABASE=B404-BT Unified Wire Ethernet Controller + +pci:v00001425d0000400D* + ID_MODEL_FROM_DATABASE=T480 Unified Wire Ethernet Controller + +pci:v00001425d0000400E* + ID_MODEL_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d0000400F* + ID_MODEL_FROM_DATABASE=T440 [Amsterdam] Unified Wire Ethernet Controller + +pci:v00001425d00004080* + ID_MODEL_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller + +pci:v00001425d00004081* + ID_MODEL_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Ethernet Controller + +pci:v00001425d00004082* + ID_MODEL_FROM_DATABASE=T420-4082 Unified Wire Ethernet Controller + +pci:v00001425d00004083* + ID_MODEL_FROM_DATABASE=T420X-4083 Unified Wire Ethernet Controller + +pci:v00001425d00004084* + ID_MODEL_FROM_DATABASE=T420-4084 Unified Wire Ethernet Controller + +pci:v00001425d00004085* + ID_MODEL_FROM_DATABASE=T420-4085 SFP+ Unified Wire Ethernet Controller + +pci:v00001425d00004086* + ID_MODEL_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Ethernet Controller + +pci:v00001425d00004087* + ID_MODEL_FROM_DATABASE=T440T-4087 Unified Wire Ethernet Controller + +pci:v00001425d00004401* + ID_MODEL_FROM_DATABASE=T420-CR Unified Wire Ethernet Controller + +pci:v00001425d00004402* + ID_MODEL_FROM_DATABASE=T422-CR Unified Wire Ethernet Controller + +pci:v00001425d00004403* + ID_MODEL_FROM_DATABASE=T440-CR Unified Wire Ethernet Controller + +pci:v00001425d00004404* + ID_MODEL_FROM_DATABASE=T420-BCH Unified Wire Ethernet Controller + +pci:v00001425d00004405* + ID_MODEL_FROM_DATABASE=T440-BCH Unified Wire Ethernet Controller + +pci:v00001425d00004406* + ID_MODEL_FROM_DATABASE=T440-CH Unified Wire Ethernet Controller + +pci:v00001425d00004407* + ID_MODEL_FROM_DATABASE=T420-SO Unified Wire Ethernet Controller + +pci:v00001425d00004408* + ID_MODEL_FROM_DATABASE=T420-CX Unified Wire Ethernet Controller + +pci:v00001425d00004409* + ID_MODEL_FROM_DATABASE=T420-BT Unified Wire Ethernet Controller + +pci:v00001425d0000440A* + ID_MODEL_FROM_DATABASE=T404-BT Unified Wire Ethernet Controller + +pci:v00001425d0000440B* + ID_MODEL_FROM_DATABASE=B420-SR Unified Wire Ethernet Controller + +pci:v00001425d0000440C* + ID_MODEL_FROM_DATABASE=B404-BT Unified Wire Ethernet Controller + +pci:v00001425d0000440D* + ID_MODEL_FROM_DATABASE=T480 Unified Wire Ethernet Controller + +pci:v00001425d0000440E* + ID_MODEL_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d0000440F* + ID_MODEL_FROM_DATABASE=T440 [Amsterdam] Unified Wire Ethernet Controller + +pci:v00001425d00004480* + ID_MODEL_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller + +pci:v00001425d00004481* + ID_MODEL_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Ethernet Controller + +pci:v00001425d00004482* + ID_MODEL_FROM_DATABASE=T420-4082 Unified Wire Ethernet Controller + +pci:v00001425d00004483* + ID_MODEL_FROM_DATABASE=T420X-4083 Unified Wire Ethernet Controller + +pci:v00001425d00004484* + ID_MODEL_FROM_DATABASE=T420-4084 Unified Wire Ethernet Controller + +pci:v00001425d00004485* + ID_MODEL_FROM_DATABASE=T420-4085 SFP+ Unified Wire Ethernet Controller + +pci:v00001425d00004486* + ID_MODEL_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Ethernet Controller + +pci:v00001425d00004487* + ID_MODEL_FROM_DATABASE=T440T-4087 Unified Wire Ethernet Controller + +pci:v00001425d00004501* + ID_MODEL_FROM_DATABASE=T420-CR Unified Wire Storage Controller + +pci:v00001425d00004502* + ID_MODEL_FROM_DATABASE=T422-CR Unified Wire Storage Controller + +pci:v00001425d00004503* + ID_MODEL_FROM_DATABASE=T440-CR Unified Wire Storage Controller + +pci:v00001425d00004504* + ID_MODEL_FROM_DATABASE=T420-BCH Unified Wire Storage Controller + +pci:v00001425d00004505* + ID_MODEL_FROM_DATABASE=T440-BCH Unified Wire Storage Controller + +pci:v00001425d00004506* + ID_MODEL_FROM_DATABASE=T440-CH Unified Wire Storage Controller + +pci:v00001425d00004507* + ID_MODEL_FROM_DATABASE=T420-SO Unified Wire Storage Controller + +pci:v00001425d00004508* + ID_MODEL_FROM_DATABASE=T420-CX Unified Wire Storage Controller + +pci:v00001425d00004509* + ID_MODEL_FROM_DATABASE=T420-BT Unified Wire Storage Controller + +pci:v00001425d0000450A* + ID_MODEL_FROM_DATABASE=T404-BT Unified Wire Storage Controller + +pci:v00001425d0000450B* + ID_MODEL_FROM_DATABASE=B420-SR Unified Wire Storage Controller + +pci:v00001425d0000450C* + ID_MODEL_FROM_DATABASE=B404-BT Unified Wire Storage Controller + +pci:v00001425d0000450D* + ID_MODEL_FROM_DATABASE=T480 Unified Wire Storage Controller + +pci:v00001425d0000450E* + ID_MODEL_FROM_DATABASE=T440-LP-CR Unified Wire Storage Controller + +pci:v00001425d0000450F* + ID_MODEL_FROM_DATABASE=T440 [Amsterdam] Unified Wire Storage Controller + +pci:v00001425d00004580* + ID_MODEL_FROM_DATABASE=T480-4080 T480 Unified Wire Storage Controller + +pci:v00001425d00004581* + ID_MODEL_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Storage Controller + +pci:v00001425d00004582* + ID_MODEL_FROM_DATABASE=T420-4082 Unified Wire Storage Controller + +pci:v00001425d00004583* + ID_MODEL_FROM_DATABASE=T420X-4083 Unified Wire Storage Controller + +pci:v00001425d00004584* + ID_MODEL_FROM_DATABASE=T420-4084 Unified Wire Storage Controller + +pci:v00001425d00004585* + ID_MODEL_FROM_DATABASE=T420-4085 SFP+ Unified Wire Storage Controller + +pci:v00001425d00004586* + ID_MODEL_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Storage Controller + +pci:v00001425d00004587* + ID_MODEL_FROM_DATABASE=T440T-4087 Unified Wire Storage Controller + +pci:v00001425d00004601* + ID_MODEL_FROM_DATABASE=T420-CR Unified Wire Storage Controller + +pci:v00001425d00004602* + ID_MODEL_FROM_DATABASE=T422-CR Unified Wire Storage Controller + +pci:v00001425d00004603* + ID_MODEL_FROM_DATABASE=T440-CR Unified Wire Storage Controller + +pci:v00001425d00004604* + ID_MODEL_FROM_DATABASE=T420-BCH Unified Wire Storage Controller + +pci:v00001425d00004605* + ID_MODEL_FROM_DATABASE=T440-BCH Unified Wire Storage Controller + +pci:v00001425d00004606* + ID_MODEL_FROM_DATABASE=T440-CH Unified Wire Storage Controller + +pci:v00001425d00004607* + ID_MODEL_FROM_DATABASE=T420-SO Unified Wire Storage Controller + +pci:v00001425d00004608* + ID_MODEL_FROM_DATABASE=T420-CX Unified Wire Storage Controller + +pci:v00001425d00004609* + ID_MODEL_FROM_DATABASE=T420-BT Unified Wire Storage Controller + +pci:v00001425d0000460A* + ID_MODEL_FROM_DATABASE=T404-BT Unified Wire Storage Controller + +pci:v00001425d0000460B* + ID_MODEL_FROM_DATABASE=B420-SR Unified Wire Storage Controller + +pci:v00001425d0000460C* + ID_MODEL_FROM_DATABASE=B404-BT Unified Wire Storage Controller + +pci:v00001425d0000460D* + ID_MODEL_FROM_DATABASE=T480 Unified Wire Storage Controller + +pci:v00001425d0000460E* + ID_MODEL_FROM_DATABASE=T440-LP-CR Unified Wire Storage Controller + +pci:v00001425d0000460F* + ID_MODEL_FROM_DATABASE=T440 [Amsterdam] Unified Wire Storage Controller + +pci:v00001425d00004680* + ID_MODEL_FROM_DATABASE=T480-4080 T480 Unified Wire Storage Controller + +pci:v00001425d00004681* + ID_MODEL_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Storage Controller + +pci:v00001425d00004682* + ID_MODEL_FROM_DATABASE=T420-4082 Unified Wire Storage Controller + +pci:v00001425d00004683* + ID_MODEL_FROM_DATABASE=T420X-4083 Unified Wire Storage Controller + +pci:v00001425d00004684* + ID_MODEL_FROM_DATABASE=T420-4084 Unified Wire Storage Controller + +pci:v00001425d00004685* + ID_MODEL_FROM_DATABASE=T420-4085 SFP+ Unified Wire Storage Controller + +pci:v00001425d00004686* + ID_MODEL_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Storage Controller + +pci:v00001425d00004687* + ID_MODEL_FROM_DATABASE=T440T-4087 Unified Wire Storage Controller + +pci:v00001425d00004701* + ID_MODEL_FROM_DATABASE=T420-CR Unified Wire Ethernet Controller + +pci:v00001425d00004702* + ID_MODEL_FROM_DATABASE=T422-CR Unified Wire Ethernet Controller + +pci:v00001425d00004703* + ID_MODEL_FROM_DATABASE=T440-CR Unified Wire Ethernet Controller + +pci:v00001425d00004704* + ID_MODEL_FROM_DATABASE=T420-BCH Unified Wire Ethernet Controller + +pci:v00001425d00004705* + ID_MODEL_FROM_DATABASE=T440-BCH Unified Wire Ethernet Controller + +pci:v00001425d00004706* + ID_MODEL_FROM_DATABASE=T440-CH Unified Wire Ethernet Controller + +pci:v00001425d00004707* + ID_MODEL_FROM_DATABASE=T420-SO Unified Wire Ethernet Controller + +pci:v00001425d00004708* + ID_MODEL_FROM_DATABASE=T420-CX Unified Wire Ethernet Controller + +pci:v00001425d00004709* + ID_MODEL_FROM_DATABASE=T420-BT Unified Wire Ethernet Controller + +pci:v00001425d0000470A* + ID_MODEL_FROM_DATABASE=T404-BT Unified Wire Ethernet Controller + +pci:v00001425d0000470B* + ID_MODEL_FROM_DATABASE=B420-SR Unified Wire Ethernet Controller + +pci:v00001425d0000470C* + ID_MODEL_FROM_DATABASE=B404-BT Unified Wire Ethernet Controller + +pci:v00001425d0000470D* + ID_MODEL_FROM_DATABASE=T480 Unified Wire Ethernet Controller + +pci:v00001425d0000470E* + ID_MODEL_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d0000470F* + ID_MODEL_FROM_DATABASE=T440 [Amsterdam] Unified Wire Ethernet Controller + +pci:v00001425d00004780* + ID_MODEL_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller + +pci:v00001425d00004781* + ID_MODEL_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Ethernet Controller + +pci:v00001425d00004782* + ID_MODEL_FROM_DATABASE=T420-4082 Unified Wire Ethernet Controller + +pci:v00001425d00004783* + ID_MODEL_FROM_DATABASE=T420X-4083 Unified Wire Ethernet Controller + +pci:v00001425d00004784* + ID_MODEL_FROM_DATABASE=T420-4084 Unified Wire Ethernet Controller + +pci:v00001425d00004785* + ID_MODEL_FROM_DATABASE=T420-4085 SFP+ Unified Wire Ethernet Controller + +pci:v00001425d00004786* + ID_MODEL_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Ethernet Controller + +pci:v00001425d00004787* + ID_MODEL_FROM_DATABASE=T440T-4087 Unified Wire Ethernet Controller + +pci:v00001425d00004801* + ID_MODEL_FROM_DATABASE=T420-CR Unified Wire Ethernet Controller + +pci:v00001425d00004802* + ID_MODEL_FROM_DATABASE=T422-CR Unified Wire Ethernet Controller + +pci:v00001425d00004803* + ID_MODEL_FROM_DATABASE=T440-CR Unified Wire Ethernet Controller + +pci:v00001425d00004804* + ID_MODEL_FROM_DATABASE=T420-BCH Unified Wire Ethernet Controller + +pci:v00001425d00004805* + ID_MODEL_FROM_DATABASE=T440-BCH Unified Wire Ethernet Controller + +pci:v00001425d00004806* + ID_MODEL_FROM_DATABASE=T440-CH Unified Wire Ethernet Controller + +pci:v00001425d00004807* + ID_MODEL_FROM_DATABASE=T420-SO Unified Wire Ethernet Controller + +pci:v00001425d00004808* + ID_MODEL_FROM_DATABASE=T420-CX Unified Wire Ethernet Controller + +pci:v00001425d00004809* + ID_MODEL_FROM_DATABASE=T420-BT Unified Wire Ethernet Controller + +pci:v00001425d0000480A* + ID_MODEL_FROM_DATABASE=T404-BT Unified Wire Ethernet Controller + +pci:v00001425d0000480B* + ID_MODEL_FROM_DATABASE=B420-SR Unified Wire Ethernet Controller + +pci:v00001425d0000480C* + ID_MODEL_FROM_DATABASE=B404-BT Unified Wire Ethernet Controller + +pci:v00001425d0000480D* + ID_MODEL_FROM_DATABASE=T480 Unified Wire Ethernet Controller + +pci:v00001425d0000480E* + ID_MODEL_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d0000480F* + ID_MODEL_FROM_DATABASE=T440 [Amsterdam] Unified Wire Ethernet Controller + +pci:v00001425d00004880* + ID_MODEL_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller + +pci:v00001425d00004881* + ID_MODEL_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Ethernet Controller + +pci:v00001425d00004882* + ID_MODEL_FROM_DATABASE=T420-4082 Unified Wire Ethernet Controller + +pci:v00001425d00004883* + ID_MODEL_FROM_DATABASE=T420X-4083 Unified Wire Ethernet Controller + +pci:v00001425d00004884* + ID_MODEL_FROM_DATABASE=T420-4084 Unified Wire Ethernet Controller + +pci:v00001425d00004885* + ID_MODEL_FROM_DATABASE=T420-4085 SFP+ Unified Wire Ethernet Controller + +pci:v00001425d00004886* + ID_MODEL_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Ethernet Controller + +pci:v00001425d00004887* + ID_MODEL_FROM_DATABASE=T440T-4087 Unified Wire Ethernet Controller + +pci:v00001425d00005001* + ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller + +pci:v00001425d00005002* + ID_MODEL_FROM_DATABASE=T522-CR Unified Wire Ethernet Controller + +pci:v00001425d00005003* + ID_MODEL_FROM_DATABASE=T540-CR Unified Wire Ethernet Controller + +pci:v00001425d00005004* + ID_MODEL_FROM_DATABASE=T520-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005005* + ID_MODEL_FROM_DATABASE=T540-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005006* + ID_MODEL_FROM_DATABASE=T540-CH Unified Wire Ethernet Controller + +pci:v00001425d00005007* + ID_MODEL_FROM_DATABASE=T520-SO Unified Wire Ethernet Controller + +pci:v00001425d00005008* + ID_MODEL_FROM_DATABASE=T520-CX Unified Wire Ethernet Controller + +pci:v00001425d00005009* + ID_MODEL_FROM_DATABASE=T520-BT Unified Wire Ethernet Controller + +pci:v00001425d0000500A* + ID_MODEL_FROM_DATABASE=T504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000500B* + ID_MODEL_FROM_DATABASE=B520-SR Unified Wire Ethernet Controller + +pci:v00001425d0000500C* + ID_MODEL_FROM_DATABASE=B504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000500D* + ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d0000500E* + ID_MODEL_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d0000500F* + ID_MODEL_FROM_DATABASE=T540 [Amsterdam] Unified Wire Ethernet Controller + +pci:v00001425d00005010* + ID_MODEL_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d00005011* + ID_MODEL_FROM_DATABASE=T520-LL-CR Unified Wire Ethernet Controller + +pci:v00001425d00005012* + ID_MODEL_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller + +pci:v00001425d00005013* + ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d00005401* + ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller + +pci:v00001425d00005402* + ID_MODEL_FROM_DATABASE=T522-CR Unified Wire Ethernet Controller + +pci:v00001425d00005403* + ID_MODEL_FROM_DATABASE=T540-CR Unified Wire Ethernet Controller + +pci:v00001425d00005404* + ID_MODEL_FROM_DATABASE=T520-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005405* + ID_MODEL_FROM_DATABASE=T540-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005406* + ID_MODEL_FROM_DATABASE=T540-CH Unified Wire Ethernet Controller + +pci:v00001425d00005407* + ID_MODEL_FROM_DATABASE=T520-SO Unified Wire Ethernet Controller + +pci:v00001425d00005408* + ID_MODEL_FROM_DATABASE=T520-CX Unified Wire Ethernet Controller + +pci:v00001425d00005409* + ID_MODEL_FROM_DATABASE=T520-BT Unified Wire Ethernet Controller + +pci:v00001425d0000540A* + ID_MODEL_FROM_DATABASE=T504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000540B* + ID_MODEL_FROM_DATABASE=B520-SR Unified Wire Ethernet Controller + +pci:v00001425d0000540C* + ID_MODEL_FROM_DATABASE=B504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000540D* + ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d0000540E* + ID_MODEL_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d0000540F* + ID_MODEL_FROM_DATABASE=T540 [Amsterdam] Unified Wire Ethernet Controller + +pci:v00001425d00005410* + ID_MODEL_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d00005411* + ID_MODEL_FROM_DATABASE=T520-LL-CR Unified Wire Ethernet Controller + +pci:v00001425d00005412* + ID_MODEL_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller + +pci:v00001425d00005413* + ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d00005501* + ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller + +pci:v00001425d00005502* + ID_MODEL_FROM_DATABASE=T522-CR Unified Wire Storage Controller + +pci:v00001425d00005503* + ID_MODEL_FROM_DATABASE=T540-CR Unified Wire Storage Controller + +pci:v00001425d00005504* + ID_MODEL_FROM_DATABASE=T520-BCH Unified Wire Storage Controller + +pci:v00001425d00005505* + ID_MODEL_FROM_DATABASE=T540-BCH Unified Wire Storage Controller + +pci:v00001425d00005506* + ID_MODEL_FROM_DATABASE=T540-CH Unified Wire Storage Controller + +pci:v00001425d00005507* + ID_MODEL_FROM_DATABASE=T520-SO Unified Wire Storage Controller + +pci:v00001425d00005508* + ID_MODEL_FROM_DATABASE=T520-CX Unified Wire Storage Controller + +pci:v00001425d00005509* + ID_MODEL_FROM_DATABASE=T520-BT Unified Wire Storage Controller + +pci:v00001425d0000550A* + ID_MODEL_FROM_DATABASE=T504-BT Unified Wire Storage Controller + +pci:v00001425d0000550B* + ID_MODEL_FROM_DATABASE=B520-SR Unified Wire Storage Controller + +pci:v00001425d0000550C* + ID_MODEL_FROM_DATABASE=B504-BT Unified Wire Storage Controller + +pci:v00001425d0000550D* + ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Storage Controller + +pci:v00001425d0000550E* + ID_MODEL_FROM_DATABASE=T540-LP-CR Unified Wire Storage Controller + +pci:v00001425d0000550F* + ID_MODEL_FROM_DATABASE=T540 [Amsterdam] Unified Wire Storage Controller + +pci:v00001425d00005510* + ID_MODEL_FROM_DATABASE=T580-LP-CR Unified Wire Storage Controller + +pci:v00001425d00005511* + ID_MODEL_FROM_DATABASE=T520-LL-CR Unified Wire Storage Controller + +pci:v00001425d00005512* + ID_MODEL_FROM_DATABASE=T560-CR Unified Wire Storage Controller + +pci:v00001425d00005513* + ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Storage Controller + +pci:v00001425d00005601* + ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Storage Controller + +pci:v00001425d00005602* + ID_MODEL_FROM_DATABASE=T522-CR Unified Wire Storage Controller + +pci:v00001425d00005603* + ID_MODEL_FROM_DATABASE=T540-CR Unified Wire Storage Controller + +pci:v00001425d00005604* + ID_MODEL_FROM_DATABASE=T520-BCH Unified Wire Storage Controller + +pci:v00001425d00005605* + ID_MODEL_FROM_DATABASE=T540-BCH Unified Wire Storage Controller + +pci:v00001425d00005606* + ID_MODEL_FROM_DATABASE=T540-CH Unified Wire Storage Controller + +pci:v00001425d00005607* + ID_MODEL_FROM_DATABASE=T520-SO Unified Wire Storage Controller + +pci:v00001425d00005608* + ID_MODEL_FROM_DATABASE=T520-CX Unified Wire Storage Controller + +pci:v00001425d00005609* + ID_MODEL_FROM_DATABASE=T520-BT Unified Wire Storage Controller + +pci:v00001425d0000560A* + ID_MODEL_FROM_DATABASE=T504-BT Unified Wire Storage Controller + +pci:v00001425d0000560B* + ID_MODEL_FROM_DATABASE=B520-SR Unified Wire Storage Controller + +pci:v00001425d0000560C* + ID_MODEL_FROM_DATABASE=B504-BT Unified Wire Storage Controller + +pci:v00001425d0000560D* + ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Storage Controller + +pci:v00001425d0000560E* + ID_MODEL_FROM_DATABASE=T540-LP-CR Unified Wire Storage Controller + +pci:v00001425d0000560F* + ID_MODEL_FROM_DATABASE=T540 [Amsterdam] Unified Wire Storage Controller + +pci:v00001425d00005610* + ID_MODEL_FROM_DATABASE=T580-LP-CR Unified Wire Storage Controller + +pci:v00001425d00005611* + ID_MODEL_FROM_DATABASE=T520-LL-CR Unified Wire Storage Controller + +pci:v00001425d00005612* + ID_MODEL_FROM_DATABASE=T560-CR Unified Wire Storage Controller + +pci:v00001425d00005613* + ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Storage Controller + +pci:v00001425d00005701* + ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller + +pci:v00001425d00005702* + ID_MODEL_FROM_DATABASE=T522-CR Unified Wire Ethernet Controller + +pci:v00001425d00005703* + ID_MODEL_FROM_DATABASE=T540-CR Unified Wire Ethernet Controller + +pci:v00001425d00005704* + ID_MODEL_FROM_DATABASE=T520-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005705* + ID_MODEL_FROM_DATABASE=T540-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005706* + ID_MODEL_FROM_DATABASE=T540-CH Unified Wire Ethernet Controller + +pci:v00001425d00005707* + ID_MODEL_FROM_DATABASE=T520-SO Unified Wire Ethernet Controller + +pci:v00001425d00005708* + ID_MODEL_FROM_DATABASE=T520-CX Unified Wire Ethernet Controller + +pci:v00001425d00005709* + ID_MODEL_FROM_DATABASE=T520-BT Unified Wire Ethernet Controller + +pci:v00001425d0000570A* + ID_MODEL_FROM_DATABASE=T504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000570B* + ID_MODEL_FROM_DATABASE=B520-SR Unified Wire Ethernet Controller + +pci:v00001425d0000570C* + ID_MODEL_FROM_DATABASE=B504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000570D* + ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d0000570E* + ID_MODEL_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d0000570F* + ID_MODEL_FROM_DATABASE=T540 [Amsterdam] Unified Wire Ethernet Controller + +pci:v00001425d00005710* + ID_MODEL_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d00005711* + ID_MODEL_FROM_DATABASE=T520-LL-CR Unified Wire Ethernet Controller + +pci:v00001425d00005712* + ID_MODEL_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller + +pci:v00001425d00005713* + ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d00005801* + ID_MODEL_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller + +pci:v00001425d00005802* + ID_MODEL_FROM_DATABASE=T522-CR Unified Wire Ethernet Controller + +pci:v00001425d00005803* + ID_MODEL_FROM_DATABASE=T540-CR Unified Wire Ethernet Controller + +pci:v00001425d00005804* + ID_MODEL_FROM_DATABASE=T520-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005805* + ID_MODEL_FROM_DATABASE=T540-BCH Unified Wire Ethernet Controller + +pci:v00001425d00005806* + ID_MODEL_FROM_DATABASE=T540-CH Unified Wire Ethernet Controller + +pci:v00001425d00005807* + ID_MODEL_FROM_DATABASE=T520-SO Unified Wire Ethernet Controller + +pci:v00001425d00005808* + ID_MODEL_FROM_DATABASE=T520-CX Unified Wire Ethernet Controller + +pci:v00001425d00005809* + ID_MODEL_FROM_DATABASE=T520-BT Unified Wire Ethernet Controller + +pci:v00001425d0000580A* + ID_MODEL_FROM_DATABASE=T504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000580B* + ID_MODEL_FROM_DATABASE=B520-SR Unified Wire Ethernet Controller + +pci:v00001425d0000580C* + ID_MODEL_FROM_DATABASE=B504-BT Unified Wire Ethernet Controller + +pci:v00001425d0000580D* + ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d0000580E* + ID_MODEL_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d0000580F* + ID_MODEL_FROM_DATABASE=T540 [Amsterdam] Unified Wire Ethernet Controller + +pci:v00001425d00005810* + ID_MODEL_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller + +pci:v00001425d00005811* + ID_MODEL_FROM_DATABASE=T520-LL-CR Unified Wire Ethernet Controller + +pci:v00001425d00005812* + ID_MODEL_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller + +pci:v00001425d00005813* + ID_MODEL_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller + +pci:v00001425d0000A000* + ID_MODEL_FROM_DATABASE=PE10K Unified Wire Ethernet Controller + +pci:v00001426* + ID_VENDOR_FROM_DATABASE=Storage Technology Corp. + +pci:v00001427* + ID_VENDOR_FROM_DATABASE=Better On-Line Solutions + +pci:v00001428* + ID_VENDOR_FROM_DATABASE=Edec Co Ltd + +pci:v00001429* + ID_VENDOR_FROM_DATABASE=Unex Technology Corp. + +pci:v0000142A* + ID_VENDOR_FROM_DATABASE=Kingmax Technology Inc + +pci:v0000142B* + ID_VENDOR_FROM_DATABASE=Radiolan + +pci:v0000142C* + ID_VENDOR_FROM_DATABASE=Minton Optic Industry Co Ltd + +pci:v0000142D* + ID_VENDOR_FROM_DATABASE=Pix stream Inc + +pci:v0000142E* + ID_VENDOR_FROM_DATABASE=Vitec Multimedia + +pci:v0000142Ed00004020* + ID_MODEL_FROM_DATABASE=VM2-2 [Video Maker 2] MPEG1/2 Encoder + +pci:v0000142Ed00004337* + ID_MODEL_FROM_DATABASE=VM2-2-C7 [Video Maker 2 rev. C7] MPEG1/2 Encoder + +pci:v0000142F* + ID_VENDOR_FROM_DATABASE=Radicom Research Inc + +pci:v00001430* + ID_VENDOR_FROM_DATABASE=ITT Aerospace/Communications Division + +pci:v00001431* + ID_VENDOR_FROM_DATABASE=Gilat Satellite Networks + +pci:v00001432* + ID_VENDOR_FROM_DATABASE=Edimax Computer Co. + +pci:v00001432d00009130* + ID_MODEL_FROM_DATABASE=RTL81xx Fast Ethernet + +pci:v00001433* + ID_VENDOR_FROM_DATABASE=Eltec Elektronik GmbH + +pci:v00001435* + ID_VENDOR_FROM_DATABASE=RTD Embedded Technologies, Inc. + +pci:v00001435d00004520* + ID_MODEL_FROM_DATABASE=PCI4520 + +pci:v00001435d00006020* + ID_MODEL_FROM_DATABASE=SPM6020 + +pci:v00001435d00006030* + ID_MODEL_FROM_DATABASE=SPM6030 + +pci:v00001435d00006420* + ID_MODEL_FROM_DATABASE=SPM186420 + +pci:v00001435d00006430* + ID_MODEL_FROM_DATABASE=SPM176430 + +pci:v00001435d00006431* + ID_MODEL_FROM_DATABASE=SPM176431 + +pci:v00001435d00007520* + ID_MODEL_FROM_DATABASE=DM7520 + +pci:v00001435d00007540* + ID_MODEL_FROM_DATABASE=SDM7540 + +pci:v00001435d00007820* + ID_MODEL_FROM_DATABASE=DM7820 + +pci:v00001436* + ID_VENDOR_FROM_DATABASE=CIS Technology Inc + +pci:v00001437* + ID_VENDOR_FROM_DATABASE=Nissin Inc Co + +pci:v00001438* + ID_VENDOR_FROM_DATABASE=Atmel-dream + +pci:v00001439* + ID_VENDOR_FROM_DATABASE=Outsource Engineering & Mfg. Inc + +pci:v0000143A* + ID_VENDOR_FROM_DATABASE=Stargate Solutions Inc + +pci:v0000143B* + ID_VENDOR_FROM_DATABASE=Canon Research Center, America + +pci:v0000143C* + ID_VENDOR_FROM_DATABASE=Amlogic Inc + +pci:v0000143D* + ID_VENDOR_FROM_DATABASE=Tamarack Microelectronics Inc + +pci:v0000143E* + ID_VENDOR_FROM_DATABASE=Jones Futurex Inc + +pci:v0000143F* + ID_VENDOR_FROM_DATABASE=Lightwell Co Ltd - Zax Division + +pci:v00001440* + ID_VENDOR_FROM_DATABASE=ALGOL Corp. + +pci:v00001441* + ID_VENDOR_FROM_DATABASE=AGIE Ltd + +pci:v00001442* + ID_VENDOR_FROM_DATABASE=Phoenix Contact GmbH & Co. + +pci:v00001443* + ID_VENDOR_FROM_DATABASE=Unibrain S.A. + +pci:v00001444* + ID_VENDOR_FROM_DATABASE=TRW + +pci:v00001445* + ID_VENDOR_FROM_DATABASE=Logical DO Ltd + +pci:v00001446* + ID_VENDOR_FROM_DATABASE=Graphin Co Ltd + +pci:v00001447* + ID_VENDOR_FROM_DATABASE=AIM GmBH + +pci:v00001448* + ID_VENDOR_FROM_DATABASE=Alesis Studio Electronics + +pci:v00001449* + ID_VENDOR_FROM_DATABASE=TUT Systems Inc + +pci:v0000144A* + ID_VENDOR_FROM_DATABASE=Adlink Technology + +pci:v0000144Ad00006208* + ID_MODEL_FROM_DATABASE=PCI-6208V + +pci:v0000144Ad00007250* + ID_MODEL_FROM_DATABASE=PCI-7250 + +pci:v0000144Ad00007296* + ID_MODEL_FROM_DATABASE=PCI-7296 + +pci:v0000144Ad00007432* + ID_MODEL_FROM_DATABASE=PCI-7432 + +pci:v0000144Ad00007433* + ID_MODEL_FROM_DATABASE=PCI-7433 + +pci:v0000144Ad00007434* + ID_MODEL_FROM_DATABASE=PCI-7434 + +pci:v0000144Ad00007841* + ID_MODEL_FROM_DATABASE=PCI-7841 + +pci:v0000144Ad00008133* + ID_MODEL_FROM_DATABASE=PCI-8133 + +pci:v0000144Ad00008164* + ID_MODEL_FROM_DATABASE=PCI-8164 + +pci:v0000144Ad00008554* + ID_MODEL_FROM_DATABASE=PCI-8554 + +pci:v0000144Ad00009111* + ID_MODEL_FROM_DATABASE=PCI-9111 + +pci:v0000144Ad00009113* + ID_MODEL_FROM_DATABASE=PCI-9113 + +pci:v0000144Ad00009114* + ID_MODEL_FROM_DATABASE=PCI-9114 + +pci:v0000144B* + ID_VENDOR_FROM_DATABASE=Verint Systems Inc. + +pci:v0000144C* + ID_VENDOR_FROM_DATABASE=Catalina Research Inc + +pci:v0000144D* + ID_VENDOR_FROM_DATABASE=Samsung Electronics Co Ltd + +pci:v0000144E* + ID_VENDOR_FROM_DATABASE=OLITEC + +pci:v0000144F* + ID_VENDOR_FROM_DATABASE=Askey Computer Corp. + +pci:v00001450* + ID_VENDOR_FROM_DATABASE=Octave Communications Ind. + +pci:v00001451* + ID_VENDOR_FROM_DATABASE=SP3D Chip Design GmBH + +pci:v00001453* + ID_VENDOR_FROM_DATABASE=MYCOM Inc + +pci:v00001454* + ID_VENDOR_FROM_DATABASE=Altiga Networks + +pci:v00001455* + ID_VENDOR_FROM_DATABASE=Logic Plus Plus Inc + +pci:v00001456* + ID_VENDOR_FROM_DATABASE=Advanced Hardware Architectures + +pci:v00001457* + ID_VENDOR_FROM_DATABASE=Nuera Communications Inc + +pci:v00001458* + ID_VENDOR_FROM_DATABASE=Giga-byte Technology + +pci:v00001459* + ID_VENDOR_FROM_DATABASE=DOOIN Electronics + +pci:v0000145A* + ID_VENDOR_FROM_DATABASE=Escalate Networks Inc + +pci:v0000145B* + ID_VENDOR_FROM_DATABASE=PRAIM SRL + +pci:v0000145C* + ID_VENDOR_FROM_DATABASE=Cryptek + +pci:v0000145D* + ID_VENDOR_FROM_DATABASE=Gallant Computer Inc + +pci:v0000145E* + ID_VENDOR_FROM_DATABASE=Aashima Technology B.V. + +pci:v0000145F* + ID_VENDOR_FROM_DATABASE=Baldor Electric Company + +pci:v0000145Fd00000001* + ID_MODEL_FROM_DATABASE=NextMove PCI + +pci:v00001460* + ID_VENDOR_FROM_DATABASE=DYNARC INC + +pci:v00001461* + ID_VENDOR_FROM_DATABASE=Avermedia Technologies Inc + +pci:v00001461d0000A3CE* + ID_MODEL_FROM_DATABASE=M179 + +pci:v00001461d0000A3CF* + ID_MODEL_FROM_DATABASE=M179 + +pci:v00001461d0000A836* + ID_MODEL_FROM_DATABASE=M115 DVB-T, PAL/SECAM/NTSC Tuner + +pci:v00001461d0000E836* + ID_MODEL_FROM_DATABASE=M115S Hybrid Analog/DVB PAL/SECAM/NTSC Tuner + +pci:v00001461d0000F436* + ID_MODEL_FROM_DATABASE=AVerTV Hybrid+FM + +pci:v00001462* + ID_VENDOR_FROM_DATABASE=Micro-Star International Co., Ltd. + +pci:v00001463* + ID_VENDOR_FROM_DATABASE=Fast Corporation + +pci:v00001464* + ID_VENDOR_FROM_DATABASE=Interactive Circuits & Systems Ltd + +pci:v00001465* + ID_VENDOR_FROM_DATABASE=GN NETTEST Telecom DIV. + +pci:v00001466* + ID_VENDOR_FROM_DATABASE=Designpro Inc. + +pci:v00001467* + ID_VENDOR_FROM_DATABASE=DIGICOM SPA + +pci:v00001468* + ID_VENDOR_FROM_DATABASE=AMBIT Microsystem Corp. + +pci:v00001469* + ID_VENDOR_FROM_DATABASE=Cleveland Motion Controls + +pci:v0000146A* + ID_VENDOR_FROM_DATABASE=IFR + +pci:v0000146B* + ID_VENDOR_FROM_DATABASE=Parascan Technologies Ltd + +pci:v0000146C* + ID_VENDOR_FROM_DATABASE=Ruby Tech Corp. + +pci:v0000146Cd00001430* + ID_MODEL_FROM_DATABASE=FE-1430TX Fast Ethernet PCI Adapter + +pci:v0000146D* + ID_VENDOR_FROM_DATABASE=Tachyon, INC. + +pci:v0000146E* + ID_VENDOR_FROM_DATABASE=Williams Electronics Games, Inc. + +pci:v0000146F* + ID_VENDOR_FROM_DATABASE=Multi Dimensional Consulting Inc + +pci:v00001470* + ID_VENDOR_FROM_DATABASE=Bay Networks + +pci:v00001471* + ID_VENDOR_FROM_DATABASE=Integrated Telecom Express Inc + +pci:v00001472* + ID_VENDOR_FROM_DATABASE=DAIKIN Industries, Ltd + +pci:v00001473* + ID_VENDOR_FROM_DATABASE=ZAPEX Technologies Inc + +pci:v00001474* + ID_VENDOR_FROM_DATABASE=Doug Carson & Associates + +pci:v00001475* + ID_VENDOR_FROM_DATABASE=PICAZO Communications + +pci:v00001476* + ID_VENDOR_FROM_DATABASE=MORTARA Instrument Inc + +pci:v00001477* + ID_VENDOR_FROM_DATABASE=Net Insight + +pci:v00001478* + ID_VENDOR_FROM_DATABASE=DIATREND Corporation + +pci:v00001479* + ID_VENDOR_FROM_DATABASE=TORAY Industries Inc + +pci:v0000147A* + ID_VENDOR_FROM_DATABASE=FORMOSA Industrial Computing + +pci:v0000147B* + ID_VENDOR_FROM_DATABASE=ABIT Computer Corp. + +pci:v0000147Bd00001084* + ID_MODEL_FROM_DATABASE=IP35 [Dark Raider] + +pci:v0000147C* + ID_VENDOR_FROM_DATABASE=AWARE, Inc. + +pci:v0000147D* + ID_VENDOR_FROM_DATABASE=Interworks Computer Products + +pci:v0000147E* + ID_VENDOR_FROM_DATABASE=Matsushita Graphic Communication Systems, Inc. + +pci:v0000147F* + ID_VENDOR_FROM_DATABASE=NIHON UNISYS, Ltd. + +pci:v00001480* + ID_VENDOR_FROM_DATABASE=SCII Telecom + +pci:v00001481* + ID_VENDOR_FROM_DATABASE=BIOPAC Systems Inc + +pci:v00001482* + ID_VENDOR_FROM_DATABASE=ISYTEC - Integrierte Systemtechnik GmBH + +pci:v00001482d00000001* + ID_MODEL_FROM_DATABASE=PCI-16 Host Interface for ITC-16 + +pci:v00001483* + ID_VENDOR_FROM_DATABASE=LABWAY Corporation + +pci:v00001484* + ID_VENDOR_FROM_DATABASE=Logic Corporation + +pci:v00001485* + ID_VENDOR_FROM_DATABASE=ERMA - Electronic GmBH + +pci:v00001486* + ID_VENDOR_FROM_DATABASE=L3 Communications Telemetry & Instrumentation + +pci:v00001487* + ID_VENDOR_FROM_DATABASE=MARQUETTE Medical Systems + +pci:v00001488* + ID_VENDOR_FROM_DATABASE=KONTRON Electronik GmBH + +pci:v00001489* + ID_VENDOR_FROM_DATABASE=KYE Systems Corporation + +pci:v0000148A* + ID_VENDOR_FROM_DATABASE=OPTO + +pci:v0000148B* + ID_VENDOR_FROM_DATABASE=INNOMEDIALOGIC Inc. + +pci:v0000148C* + ID_VENDOR_FROM_DATABASE=C.P. Technology Co. Ltd + +pci:v0000148D* + ID_VENDOR_FROM_DATABASE=DIGICOM Systems, Inc. + +pci:v0000148Dd00001003* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem + +pci:v0000148E* + ID_VENDOR_FROM_DATABASE=OSI Plus Corporation + +pci:v0000148F* + ID_VENDOR_FROM_DATABASE=Plant Equipment, Inc. + +pci:v00001490* + ID_VENDOR_FROM_DATABASE=Stone Microsystems PTY Ltd. + +pci:v00001491* + ID_VENDOR_FROM_DATABASE=ZEAL Corporation + +pci:v00001492* + ID_VENDOR_FROM_DATABASE=Time Logic Corporation + +pci:v00001493* + ID_VENDOR_FROM_DATABASE=MAKER Communications + +pci:v00001494* + ID_VENDOR_FROM_DATABASE=WINTOP Technology, Inc. + +pci:v00001495* + ID_VENDOR_FROM_DATABASE=TOKAI Communications Industry Co. Ltd + +pci:v00001496* + ID_VENDOR_FROM_DATABASE=JOYTECH Computer Co., Ltd. + +pci:v00001497* + ID_VENDOR_FROM_DATABASE=SMA Regelsysteme GmBH + +pci:v00001497d00001497* + ID_MODEL_FROM_DATABASE=SMA Technologie AG + +pci:v00001498* + ID_VENDOR_FROM_DATABASE=TEWS Technologies GmbH + +pci:v00001498d00000330* + ID_MODEL_FROM_DATABASE=TPMC816 2 Channel CAN bus controller. + +pci:v00001498d0000035D* + ID_MODEL_FROM_DATABASE=TPMC861 4-Channel Isolated Serial Interface RS422/RS485 + +pci:v00001498d00000385* + ID_MODEL_FROM_DATABASE=TPMC901 Extended CAN bus with 2/4/6 CAN controller + +pci:v00001498d000021CC* + ID_MODEL_FROM_DATABASE=TCP460 CompactPCI 16 Channel Serial Interface RS232/RS422 + +pci:v00001498d000021CD* + ID_MODEL_FROM_DATABASE=TCP461 CompactPCI 8 Channel Serial Interface RS232/RS422 + +pci:v00001498d00003064* + ID_MODEL_FROM_DATABASE=TPCI100 (2 Slot IndustryPack PCI Carrier) + +pci:v00001498d000030C8* + ID_MODEL_FROM_DATABASE=TPCI200 + +pci:v00001499* + ID_VENDOR_FROM_DATABASE=EMTEC CO., Ltd + +pci:v0000149A* + ID_VENDOR_FROM_DATABASE=ANDOR Technology Ltd + +pci:v0000149B* + ID_VENDOR_FROM_DATABASE=SEIKO Instruments Inc + +pci:v0000149C* + ID_VENDOR_FROM_DATABASE=OVISLINK Corp. + +pci:v0000149D* + ID_VENDOR_FROM_DATABASE=NEWTEK Inc + +pci:v0000149Dd00000001* + ID_MODEL_FROM_DATABASE=Video Toaster for PC + +pci:v0000149E* + ID_VENDOR_FROM_DATABASE=Mapletree Networks Inc. + +pci:v0000149F* + ID_VENDOR_FROM_DATABASE=LECTRON Co Ltd + +pci:v000014A0* + ID_VENDOR_FROM_DATABASE=SOFTING GmBH + +pci:v000014A1* + ID_VENDOR_FROM_DATABASE=Systembase Co Ltd + +pci:v000014A2* + ID_VENDOR_FROM_DATABASE=Millennium Engineering Inc + +pci:v000014A3* + ID_VENDOR_FROM_DATABASE=Maverick Networks + +pci:v000014A4* + ID_VENDOR_FROM_DATABASE=Broadcom Corporation (Wrong ID) + +pci:v000014A4d00004318* + ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller + +pci:v000014A5* + ID_VENDOR_FROM_DATABASE=XIONICS Document Technologies Inc + +pci:v000014A6* + ID_VENDOR_FROM_DATABASE=INOVA Computers GmBH & Co KG + +pci:v000014A7* + ID_VENDOR_FROM_DATABASE=MYTHOS Systems Inc + +pci:v000014A8* + ID_VENDOR_FROM_DATABASE=FEATRON Technologies Corporation + +pci:v000014A9* + ID_VENDOR_FROM_DATABASE=HIVERTEC Inc + +pci:v000014AA* + ID_VENDOR_FROM_DATABASE=Advanced MOS Technology Inc + +pci:v000014AB* + ID_VENDOR_FROM_DATABASE=Mentor Graphics Corp. + +pci:v000014AC* + ID_VENDOR_FROM_DATABASE=Novaweb Technologies Inc + +pci:v000014AD* + ID_VENDOR_FROM_DATABASE=Time Space Radio AB + +pci:v000014AE* + ID_VENDOR_FROM_DATABASE=CTI, Inc + +pci:v000014AF* + ID_VENDOR_FROM_DATABASE=Guillemot Corporation + +pci:v000014AFd00007102* + ID_MODEL_FROM_DATABASE=3D Prophet II MX + +pci:v000014B0* + ID_VENDOR_FROM_DATABASE=BST Communication Technology Ltd + +pci:v000014B1* + ID_VENDOR_FROM_DATABASE=Nextcom K.K. + +pci:v000014B2* + ID_VENDOR_FROM_DATABASE=ENNOVATE Networks Inc + +pci:v000014B3* + ID_VENDOR_FROM_DATABASE=XPEED Inc + +pci:v000014B3d00000000* + ID_MODEL_FROM_DATABASE=DSL NIC + +pci:v000014B4* + ID_VENDOR_FROM_DATABASE=PHILIPS Business Electronics B.V. + +pci:v000014B5* + ID_VENDOR_FROM_DATABASE=Creamware GmBH + +pci:v000014B5d00000200* + ID_MODEL_FROM_DATABASE=Scope + +pci:v000014B5d00000300* + ID_MODEL_FROM_DATABASE=Pulsar + +pci:v000014B5d00000400* + ID_MODEL_FROM_DATABASE=PulsarSRB + +pci:v000014B5d00000600* + ID_MODEL_FROM_DATABASE=Pulsar2 + +pci:v000014B5d00000800* + ID_MODEL_FROM_DATABASE=DSP-Board + +pci:v000014B5d00000900* + ID_MODEL_FROM_DATABASE=DSP-Board + +pci:v000014B5d00000A00* + ID_MODEL_FROM_DATABASE=DSP-Board + +pci:v000014B5d00000B00* + ID_MODEL_FROM_DATABASE=DSP-Board + +pci:v000014B6* + ID_VENDOR_FROM_DATABASE=Quantum Data Corp. + +pci:v000014B7* + ID_VENDOR_FROM_DATABASE=PROXIM Inc + +pci:v000014B7d00000001* + ID_MODEL_FROM_DATABASE=Symphony 4110 + +pci:v000014B8* + ID_VENDOR_FROM_DATABASE=Techsoft Technology Co Ltd + +pci:v000014B9* + ID_VENDOR_FROM_DATABASE=Cisco Aironet Wireless Communications + +pci:v000014B9d00000001* + ID_MODEL_FROM_DATABASE=PC4800 + +pci:v000014B9d00000340* + ID_MODEL_FROM_DATABASE=PC4800 + +pci:v000014B9d00000350* + ID_MODEL_FROM_DATABASE=350 series 802.11b Wireless LAN Adapter + +pci:v000014B9d00004500* + ID_MODEL_FROM_DATABASE=PC4500 + +pci:v000014B9d00004800* + ID_MODEL_FROM_DATABASE=Cisco Aironet 340 802.11b Wireless LAN Adapter/Aironet PC4800 + +pci:v000014B9d0000A504* + ID_MODEL_FROM_DATABASE=Cisco Aironet Wireless 802.11b + +pci:v000014B9d0000A505* + ID_MODEL_FROM_DATABASE=Cisco Aironet CB20a 802.11a Wireless LAN Adapter + +pci:v000014B9d0000A506* + ID_MODEL_FROM_DATABASE=Cisco Aironet Mini PCI b/g + +pci:v000014BA* + ID_VENDOR_FROM_DATABASE=INTERNIX Inc. + +pci:v000014BAd00000600* + ID_MODEL_FROM_DATABASE=ARC-PCI/22 + +pci:v000014BB* + ID_VENDOR_FROM_DATABASE=SEMTECH Corporation + +pci:v000014BC* + ID_VENDOR_FROM_DATABASE=Globespan Semiconductor Inc. + +pci:v000014BCd0000D002* + ID_MODEL_FROM_DATABASE=Pulsar [PCI ADSL Card] + +pci:v000014BCd0000D00F* + ID_MODEL_FROM_DATABASE=Pulsar [PCI ADSL Card] + +pci:v000014BD* + ID_VENDOR_FROM_DATABASE=CARDIO Control N.V. + +pci:v000014BE* + ID_VENDOR_FROM_DATABASE=L3 Communications + +pci:v000014BF* + ID_VENDOR_FROM_DATABASE=SPIDER Communications Inc. + +pci:v000014C0* + ID_VENDOR_FROM_DATABASE=COMPAL Electronics Inc + +pci:v000014C1* + ID_VENDOR_FROM_DATABASE=MYRICOM Inc. + +pci:v000014C1d00000008* + ID_MODEL_FROM_DATABASE=Myri-10G Dual-Protocol NIC + +pci:v000014C1d00000008sv000014C1sd00000008* + ID_MODEL_FROM_DATABASE=10G-PCIE-8A + +pci:v000014C1d00000008sv000014C1sd00000009* + ID_MODEL_FROM_DATABASE=10G-PCIE-8A (MSI-X firmware) + +pci:v000014C1d00000008sv000014C1sd0000000A* + ID_MODEL_FROM_DATABASE=10G-PCIE-8B + +pci:v000014C1d00008043* + ID_MODEL_FROM_DATABASE=Myrinet 2000 Scalable Cluster Interconnect + +pci:v000014C1d00008043sv0000103Csd00001240* + ID_MODEL_FROM_DATABASE=Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM) + +pci:v000014C2* + ID_VENDOR_FROM_DATABASE=DTK Computer + +pci:v000014C3* + ID_VENDOR_FROM_DATABASE=MEDIATEK Corp. + +pci:v000014C4* + ID_VENDOR_FROM_DATABASE=IWASAKI Information Systems Co Ltd + +pci:v000014C5* + ID_VENDOR_FROM_DATABASE=Automation Products AB + +pci:v000014C6* + ID_VENDOR_FROM_DATABASE=Data Race Inc + +pci:v000014C7* + ID_VENDOR_FROM_DATABASE=Modular Technology Holdings Ltd + +pci:v000014C8* + ID_VENDOR_FROM_DATABASE=Turbocomm Tech. Inc. + +pci:v000014C9* + ID_VENDOR_FROM_DATABASE=ODIN Telesystems Inc + +pci:v000014CA* + ID_VENDOR_FROM_DATABASE=PE Logic Corp. + +pci:v000014CB* + ID_VENDOR_FROM_DATABASE=Billionton Systems Inc + +pci:v000014CC* + ID_VENDOR_FROM_DATABASE=NAKAYO Telecommunications Inc + +pci:v000014CD* + ID_VENDOR_FROM_DATABASE=Universal Scientific Ind. + +pci:v000014CE* + ID_VENDOR_FROM_DATABASE=Whistle Communications + +pci:v000014CF* + ID_VENDOR_FROM_DATABASE=TEK Microsystems Inc. + +pci:v000014D0* + ID_VENDOR_FROM_DATABASE=Ericsson Axe R & D + +pci:v000014D1* + ID_VENDOR_FROM_DATABASE=Computer Hi-Tech Co Ltd + +pci:v000014D2* + ID_VENDOR_FROM_DATABASE=Titan Electronics Inc + +pci:v000014D2d00008001* + ID_MODEL_FROM_DATABASE=VScom 010L 1 port parallel adaptor + +pci:v000014D2d00008002* + ID_MODEL_FROM_DATABASE=VScom 020L 2 port parallel adaptor + +pci:v000014D2d00008010* + ID_MODEL_FROM_DATABASE=VScom 100L 1 port serial adaptor + +pci:v000014D2d00008011* + ID_MODEL_FROM_DATABASE=VScom 110L 1 port serial and 1 port parallel adaptor + +pci:v000014D2d00008020* + ID_MODEL_FROM_DATABASE=VScom 200L 1 or 2 port serial adaptor + +pci:v000014D2d00008021* + ID_MODEL_FROM_DATABASE=VScom 210L 2 port serial and 1 port parallel adaptor + +pci:v000014D2d00008028* + ID_MODEL_FROM_DATABASE=VScom 200I/200I-SI 2-port serial adapter + +pci:v000014D2d00008040* + ID_MODEL_FROM_DATABASE=VScom 400L 4 port serial adaptor + +pci:v000014D2d00008043* + ID_MODEL_FROM_DATABASE=VScom 430L 4-port serial and 3-port parallel adapter + +pci:v000014D2d00008048* + ID_MODEL_FROM_DATABASE=VScom 400I 4-port serial adapter + +pci:v000014D2d00008080* + ID_MODEL_FROM_DATABASE=VScom 800L 8 port serial adaptor + +pci:v000014D2d00008088* + ID_MODEL_FROM_DATABASE=VScom 800I 8-port serial adapter + +pci:v000014D2d0000A000* + ID_MODEL_FROM_DATABASE=VScom 010H 1 port parallel adaptor + +pci:v000014D2d0000A001* + ID_MODEL_FROM_DATABASE=VScom 100H 1 port serial adaptor + +pci:v000014D2d0000A003* + ID_MODEL_FROM_DATABASE=VScom 400H 4 port serial adaptor + +pci:v000014D2d0000A004* + ID_MODEL_FROM_DATABASE=VScom 400HF1 4 port serial adaptor + +pci:v000014D2d0000A005* + ID_MODEL_FROM_DATABASE=VScom 200H 2 port serial adaptor + +pci:v000014D2d0000A007* + ID_MODEL_FROM_DATABASE=VScom PCI800EH (PCIe) 8-port serial adapter Port 1-4 + +pci:v000014D2d0000A008* + ID_MODEL_FROM_DATABASE=VScom PCI800EH (PCIe) 8-port serial adapter Port 5-8 + +pci:v000014D2d0000A009* + ID_MODEL_FROM_DATABASE=VScom PCI400EH (PCIe) 4-port serial adapter + +pci:v000014D2d0000E001* + ID_MODEL_FROM_DATABASE=VScom 010HV2 1 port parallel adaptor + +pci:v000014D2d0000E010* + ID_MODEL_FROM_DATABASE=VScom 100HV2 1 port serial adaptor + +pci:v000014D2d0000E020* + ID_MODEL_FROM_DATABASE=VScom 200HV2 2 port serial adaptor + +pci:v000014D3* + ID_VENDOR_FROM_DATABASE=CIRTECH (UK) Ltd + +pci:v000014D4* + ID_VENDOR_FROM_DATABASE=Panacom Technology Corp + +pci:v000014D5* + ID_VENDOR_FROM_DATABASE=Nitsuko Corporation + +pci:v000014D6* + ID_VENDOR_FROM_DATABASE=Accusys Inc + +pci:v000014D6d00006101* + ID_MODEL_FROM_DATABASE=ACS-61xxx, PCIe to SAS/SATA RAID HBA + +pci:v000014D6d00006201* + ID_MODEL_FROM_DATABASE=ACS-62xxx, External PCIe to SAS/SATA RAID controller + +pci:v000014D7* + ID_VENDOR_FROM_DATABASE=Hirakawa Hewtech Corp + +pci:v000014D8* + ID_VENDOR_FROM_DATABASE=HOPF Elektronik GmBH + +pci:v000014D9* + ID_VENDOR_FROM_DATABASE=Alliance Semiconductor Corporation + +pci:v000014D9d00000010* + ID_MODEL_FROM_DATABASE=AP1011/SP1011 HyperTransport-PCI Bridge [Sturgeon] + +pci:v000014D9d00009000* + ID_MODEL_FROM_DATABASE=AS90L10204/10208 HyperTransport to PCI-X Bridge + +pci:v000014DA* + ID_VENDOR_FROM_DATABASE=National Aerospace Laboratories + +pci:v000014DB* + ID_VENDOR_FROM_DATABASE=AFAVLAB Technology Inc + +pci:v000014DBd00002120* + ID_MODEL_FROM_DATABASE=TK9902 + +pci:v000014DBd00002182* + ID_MODEL_FROM_DATABASE=AFAVLAB Technology Inc. 8-port serial card + +pci:v000014DC* + ID_VENDOR_FROM_DATABASE=Amplicon Liveline Ltd + +pci:v000014DCd00000000* + ID_MODEL_FROM_DATABASE=PCI230 + +pci:v000014DCd00000001* + ID_MODEL_FROM_DATABASE=PCI242 + +pci:v000014DCd00000002* + ID_MODEL_FROM_DATABASE=PCI244 + +pci:v000014DCd00000003* + ID_MODEL_FROM_DATABASE=PCI247 + +pci:v000014DCd00000004* + ID_MODEL_FROM_DATABASE=PCI248 + +pci:v000014DCd00000005* + ID_MODEL_FROM_DATABASE=PCI249 + +pci:v000014DCd00000006* + ID_MODEL_FROM_DATABASE=PCI260 + +pci:v000014DCd00000007* + ID_MODEL_FROM_DATABASE=PCI224 + +pci:v000014DCd00000008* + ID_MODEL_FROM_DATABASE=PCI234 + +pci:v000014DCd00000009* + ID_MODEL_FROM_DATABASE=PCI236 + +pci:v000014DCd0000000A* + ID_MODEL_FROM_DATABASE=PCI272 + +pci:v000014DCd0000000B* + ID_MODEL_FROM_DATABASE=PCI215 + +pci:v000014DD* + ID_VENDOR_FROM_DATABASE=Boulder Design Labs Inc + +pci:v000014DE* + ID_VENDOR_FROM_DATABASE=Applied Integration Corporation + +pci:v000014DF* + ID_VENDOR_FROM_DATABASE=ASIC Communications Corp + +pci:v000014E1* + ID_VENDOR_FROM_DATABASE=INVERTEX + +pci:v000014E2* + ID_VENDOR_FROM_DATABASE=INFOLIBRIA + +pci:v000014E3* + ID_VENDOR_FROM_DATABASE=AMTELCO + +pci:v000014E4* + ID_VENDOR_FROM_DATABASE=Broadcom Corporation + +pci:v000014E4d00000576* + ID_MODEL_FROM_DATABASE=BCM43224 802.11a/b/g/n + +pci:v000014E4d00000800* + ID_MODEL_FROM_DATABASE=Sentry5 Chipcommon I/O Controller + +pci:v000014E4d00000804* + ID_MODEL_FROM_DATABASE=Sentry5 PCI Bridge + +pci:v000014E4d00000805* + ID_MODEL_FROM_DATABASE=Sentry5 MIPS32 CPU + +pci:v000014E4d00000806* + ID_MODEL_FROM_DATABASE=Sentry5 Ethernet Controller + +pci:v000014E4d0000080B* + ID_MODEL_FROM_DATABASE=Sentry5 Crypto Accelerator + +pci:v000014E4d0000080F* + ID_MODEL_FROM_DATABASE=Sentry5 DDR/SDR RAM Controller + +pci:v000014E4d00000811* + ID_MODEL_FROM_DATABASE=Sentry5 External Interface Core + +pci:v000014E4d00000816* + ID_MODEL_FROM_DATABASE=BCM3302 Sentry5 MIPS32 CPU + +pci:v000014E4d00001600* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5752 Gigabit Ethernet PCI Express + +pci:v000014E4d00001600sv00001028sd000001C1* + ID_MODEL_FROM_DATABASE=Precision 490 + +pci:v000014E4d00001600sv00001028sd000001C2* + ID_MODEL_FROM_DATABASE=Latitude D620 + +pci:v000014E4d00001600sv0000103Csd00003015* + ID_MODEL_FROM_DATABASE=PCIe LAN on Motherboard + +pci:v000014E4d00001600sv0000107Bsd00005048* + ID_MODEL_FROM_DATABASE=E4500 Onboard + +pci:v000014E4d00001600sv00001259sd00002705* + ID_MODEL_FROM_DATABASE=AT-2711FX + +pci:v000014E4d00001601* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5752M Gigabit Ethernet PCI Express + +pci:v000014E4d00001612* + ID_MODEL_FROM_DATABASE=BCM70012 Video Decoder [Crystal HD] + +pci:v000014E4d00001615* + ID_MODEL_FROM_DATABASE=BCM70015 Video Decoder [Crystal HD] + +pci:v000014E4d00001639* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709 Gigabit Ethernet + +pci:v000014E4d00001639sv00001028sd00000235* + ID_MODEL_FROM_DATABASE=PowerEdge R710 BCM5709 Gigabit Ethernet + +pci:v000014E4d00001639sv00001028sd00000236* + ID_MODEL_FROM_DATABASE=PowerEdge R610 BCM5709 Gigabit Ethernet + +pci:v000014E4d00001639sv00001028sd00000237* + ID_MODEL_FROM_DATABASE=PowerEdge T610 BCM5709 Gigabit Ethernet + +pci:v000014E4d00001639sv0000103Csd00007055* + ID_MODEL_FROM_DATABASE=NC382i Integrated Multi-port PCI Express Gigabit Server Adapter + +pci:v000014E4d00001639sv0000103Csd00007059* + ID_MODEL_FROM_DATABASE=NC382T PCI Express Dual Port Multifunction Gigabit Server Adapter + +pci:v000014E4d00001639sv000010A9sd00008027* + ID_MODEL_FROM_DATABASE=Quad port Gigabit Ethernet Controller + +pci:v000014E4d0000163A* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM5709S Gigabit Ethernet + +pci:v000014E4d0000163Asv00001028sd0000027B* + ID_MODEL_FROM_DATABASE=PowerEdge M805 Broadcom NetXtreme II BCM5709S + +pci:v000014E4d0000163Asv00001028sd0000029C* + ID_MODEL_FROM_DATABASE=PowerEdge M710 BCM5709S Gigabit Ethernet + +pci:v000014E4d0000163Asv0000103Csd0000171D* + ID_MODEL_FROM_DATABASE=NC382m Dual Port 1GbE Multifunction BL-c Adapter + +pci:v000014E4d0000163Asv0000103Csd00007056* + ID_MODEL_FROM_DATABASE=NC382i Integrated Quad Port PCI Express Gigabit Server Adapter + +pci:v000014E4d0000163B* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM5716 Gigabit Ethernet + +pci:v000014E4d0000163Bsv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 BCM5716 Gigabit Ethernet + +pci:v000014E4d0000163Bsv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 BCM5716 Gigabit Ethernet + +pci:v000014E4d0000163Bsv00001028sd000002F1* + ID_MODEL_FROM_DATABASE=PowerEdge R510 BCM5716 Gigabit Ethernet + +pci:v000014E4d0000163C* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM5716S Gigabit Ethernet + +pci:v000014E4d0000163D* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57811 10-Gigabit Ethernet + +pci:v000014E4d0000163E* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57811 10 Gigabit Ethernet Multi Function + +pci:v000014E4d0000163F* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57811 10-Gigabit Ethernet Virtual Function + +pci:v000014E4d00001641* + ID_MODEL_FROM_DATABASE=NetXtreme BCM57787 Gigabit Ethernet PCIe + +pci:v000014E4d00001642* + ID_MODEL_FROM_DATABASE=NetXtreme BCM57764 Gigabit Ethernet PCIe + +pci:v000014E4d00001643* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5725 Gigabit Ethernet PCIe + +pci:v000014E4d00001644* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet + +pci:v000014E4d00001644sv00001014sd00000277* + ID_MODEL_FROM_DATABASE=Broadcom Vigil B5700 1000Base-T + +pci:v000014E4d00001644sv00001028sd000000D1* + ID_MODEL_FROM_DATABASE=Broadcom BCM5700 + +pci:v000014E4d00001644sv00001028sd00000106* + ID_MODEL_FROM_DATABASE=Broadcom BCM5700 + +pci:v000014E4d00001644sv00001028sd00000109* + ID_MODEL_FROM_DATABASE=Broadcom BCM5700 1000Base-T + +pci:v000014E4d00001644sv00001028sd0000010A* + ID_MODEL_FROM_DATABASE=Broadcom BCM5700 1000BaseTX + +pci:v000014E4d00001644sv000010B7sd00001000* + ID_MODEL_FROM_DATABASE=3C996-T 1000Base-T + +pci:v000014E4d00001644sv000010B7sd00001001* + ID_MODEL_FROM_DATABASE=3C996B-T 1000Base-T + +pci:v000014E4d00001644sv000010B7sd00001002* + ID_MODEL_FROM_DATABASE=3C996C-T 1000Base-T + +pci:v000014E4d00001644sv000010B7sd00001003* + ID_MODEL_FROM_DATABASE=3C997-T 1000Base-T Dual Port + +pci:v000014E4d00001644sv000010B7sd00001004* + ID_MODEL_FROM_DATABASE=3C996-SX 1000Base-SX + +pci:v000014E4d00001644sv000010B7sd00001005* + ID_MODEL_FROM_DATABASE=3C997-SX 1000Base-SX Dual Port + +pci:v000014E4d00001644sv000010B7sd00001008* + ID_MODEL_FROM_DATABASE=3C942 Gigabit LOM (31X31) + +pci:v000014E4d00001644sv000014E4sd00000002* + ID_MODEL_FROM_DATABASE=NetXtreme 1000Base-SX + +pci:v000014E4d00001644sv000014E4sd00000003* + ID_MODEL_FROM_DATABASE=NetXtreme 1000Base-SX + +pci:v000014E4d00001644sv000014E4sd00000004* + ID_MODEL_FROM_DATABASE=NetXtreme 1000Base-T + +pci:v000014E4d00001644sv000014E4sd00001028* + ID_MODEL_FROM_DATABASE=NetXtreme 1000BaseTX + +pci:v000014E4d00001644sv000014E4sd00001644* + ID_MODEL_FROM_DATABASE=BCM5700 1000Base-T + +pci:v000014E4d00001645* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet + +pci:v000014E4d00001645sv00000E11sd0000007C* + ID_MODEL_FROM_DATABASE=NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) + +pci:v000014E4d00001645sv00000E11sd0000007D* + ID_MODEL_FROM_DATABASE=NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) + +pci:v000014E4d00001645sv00000E11sd00000085* + ID_MODEL_FROM_DATABASE=NC7780 Gigabit Server Adapter (embedded, WOL) + +pci:v000014E4d00001645sv00000E11sd00000099* + ID_MODEL_FROM_DATABASE=NC7780 Gigabit Server Adapter (embedded, WOL) + +pci:v000014E4d00001645sv00000E11sd0000009A* + ID_MODEL_FROM_DATABASE=NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) + +pci:v000014E4d00001645sv00000E11sd000000C1* + ID_MODEL_FROM_DATABASE=NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) + +pci:v000014E4d00001645sv00001028sd00000121* + ID_MODEL_FROM_DATABASE=Broadcom BCM5701 1000Base-T + +pci:v000014E4d00001645sv0000103Csd0000128A* + ID_MODEL_FROM_DATABASE=BCM5701 1000Base-T (HP, OEM 3COM) + +pci:v000014E4d00001645sv0000103Csd0000128B* + ID_MODEL_FROM_DATABASE=1000Base-SX (PCI) [A7073A] + +pci:v000014E4d00001645sv0000103Csd000012A4* + ID_MODEL_FROM_DATABASE=Core Lan 1000Base-T + +pci:v000014E4d00001645sv0000103Csd000012C1* + ID_MODEL_FROM_DATABASE=IOX Core Lan 1000Base-T [A7109AX] + +pci:v000014E4d00001645sv0000103Csd00001300* + ID_MODEL_FROM_DATABASE=Core LAN/SCSI Combo [A6794A] + +pci:v000014E4d00001645sv000010A9sd00008010* + ID_MODEL_FROM_DATABASE=IO9/IO10 Gigabit Ethernet (Copper) + +pci:v000014E4d00001645sv000010A9sd00008011* + ID_MODEL_FROM_DATABASE=Gigabit Ethernet (Copper) + +pci:v000014E4d00001645sv000010A9sd00008012* + ID_MODEL_FROM_DATABASE=Gigabit Ethernet (Fiber) + +pci:v000014E4d00001645sv000010B7sd00001004* + ID_MODEL_FROM_DATABASE=3C996-SX 1000Base-SX + +pci:v000014E4d00001645sv000010B7sd00001006* + ID_MODEL_FROM_DATABASE=3C996B-T 1000Base-T + +pci:v000014E4d00001645sv000010B7sd00001007* + ID_MODEL_FROM_DATABASE=3C1000-T 1000Base-T + +pci:v000014E4d00001645sv000010B7sd00001008* + ID_MODEL_FROM_DATABASE=3C940-BR01 1000Base-T + +pci:v000014E4d00001645sv000014E4sd00000001* + ID_MODEL_FROM_DATABASE=BCM5701 1000Base-T + +pci:v000014E4d00001645sv000014E4sd00000005* + ID_MODEL_FROM_DATABASE=BCM5701 1000Base-T + +pci:v000014E4d00001645sv000014E4sd00000006* + ID_MODEL_FROM_DATABASE=BCM5701 1000Base-T + +pci:v000014E4d00001645sv000014E4sd00000007* + ID_MODEL_FROM_DATABASE=BCM5701 1000Base-SX + +pci:v000014E4d00001645sv000014E4sd00000008* + ID_MODEL_FROM_DATABASE=BCM5701 1000Base-T + +pci:v000014E4d00001645sv000014E4sd00001645* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet + +pci:v000014E4d00001645sv000014E4sd00008008* + ID_MODEL_FROM_DATABASE=BCM5701 1000Base-T + +pci:v000014E4d00001646* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5702 Gigabit Ethernet + +pci:v000014E4d00001646sv00000E11sd000000BB* + ID_MODEL_FROM_DATABASE=NC7760 1000BaseTX + +pci:v000014E4d00001646sv00001028sd00000126* + ID_MODEL_FROM_DATABASE=Broadcom BCM5702 1000BaseTX + +pci:v000014E4d00001646sv000014E4sd00008009* + ID_MODEL_FROM_DATABASE=BCM5702 1000BaseTX + +pci:v000014E4d00001647* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet + +pci:v000014E4d00001647sv00000E11sd00000099* + ID_MODEL_FROM_DATABASE=NC7780 1000BaseTX + +pci:v000014E4d00001647sv00000E11sd0000009A* + ID_MODEL_FROM_DATABASE=NC7770 1000BaseTX + +pci:v000014E4d00001647sv000010A9sd00008010* + ID_MODEL_FROM_DATABASE=SGI IO9 Gigabit Ethernet (Copper) + +pci:v000014E4d00001647sv000014E4sd00000009* + ID_MODEL_FROM_DATABASE=BCM5703 1000BaseTX + +pci:v000014E4d00001647sv000014E4sd0000000A* + ID_MODEL_FROM_DATABASE=BCM5703 1000BaseSX + +pci:v000014E4d00001647sv000014E4sd0000000B* + ID_MODEL_FROM_DATABASE=BCM5703 1000BaseTX + +pci:v000014E4d00001647sv000014E4sd00008009* + ID_MODEL_FROM_DATABASE=BCM5703 1000BaseTX + +pci:v000014E4d00001647sv000014E4sd0000800A* + ID_MODEL_FROM_DATABASE=BCM5703 1000BaseTX + +pci:v000014E4d00001648* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet + +pci:v000014E4d00001648sv00000E11sd000000CF* + ID_MODEL_FROM_DATABASE=NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + +pci:v000014E4d00001648sv00000E11sd000000D0* + ID_MODEL_FROM_DATABASE=NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + +pci:v000014E4d00001648sv00000E11sd000000D1* + ID_MODEL_FROM_DATABASE=NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + +pci:v000014E4d00001648sv00001028sd0000014A* + ID_MODEL_FROM_DATABASE=PowerEdge 1750 + +pci:v000014E4d00001648sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 Broadcom NetXtreme BCM5704 + +pci:v000014E4d00001648sv0000103Csd0000310F* + ID_MODEL_FROM_DATABASE=NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + +pci:v000014E4d00001648sv000010A9sd00008013* + ID_MODEL_FROM_DATABASE=Dual Port Gigabit Ethernet (PCI-X,Copper) + +pci:v000014E4d00001648sv000010A9sd00008018* + ID_MODEL_FROM_DATABASE=Dual Port Gigabit Ethernet (A330) + +pci:v000014E4d00001648sv000010A9sd0000801A* + ID_MODEL_FROM_DATABASE=Dual Port Gigabit Ethernet (IA-blade) + +pci:v000014E4d00001648sv000010A9sd0000801B* + ID_MODEL_FROM_DATABASE=Quad Port Gigabit Ethernet (PCI-E,Copper) + +pci:v000014E4d00001648sv000010B7sd00002000* + ID_MODEL_FROM_DATABASE=3C998-T Dual Port 10/100/1000 PCI-X + +pci:v000014E4d00001648sv000010B7sd00003000* + ID_MODEL_FROM_DATABASE=3C999-T Quad Port 10/100/1000 PCI-X + +pci:v000014E4d00001648sv00001166sd00001648* + ID_MODEL_FROM_DATABASE=NetXtreme CIOB-E 1000Base-T + +pci:v000014E4d00001648sv00001734sd0000100B* + ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX series onboard LAN + +pci:v000014E4d00001649* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5704S_2 Gigabit Ethernet + +pci:v000014E4d0000164A* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM5706 Gigabit Ethernet + +pci:v000014E4d0000164Asv0000103Csd00001709* + ID_MODEL_FROM_DATABASE=NC371i Integrated PCI-X Multifunction Gigabit Server Adapter + +pci:v000014E4d0000164Asv0000103Csd00003070* + ID_MODEL_FROM_DATABASE=NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter + +pci:v000014E4d0000164Asv0000103Csd00003101* + ID_MODEL_FROM_DATABASE=NC370T MultifuNCtion Gigabit Server Adapter + +pci:v000014E4d0000164Asv0000103Csd00003106* + ID_MODEL_FROM_DATABASE=NC370i Multifunction Gigabit Server Adapter + +pci:v000014E4d0000164C* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708 Gigabit Ethernet + +pci:v000014E4d0000164Csv00001028sd000001F0* + ID_MODEL_FROM_DATABASE=PowerEdge R900 Broadcom NetXtreme II BCM5708 + +pci:v000014E4d0000164Csv00001028sd00000205* + ID_MODEL_FROM_DATABASE=PowerEdge 2970 Broadcom NetXtreme II BCM5708 + +pci:v000014E4d0000164Csv00001028sd0000020B* + ID_MODEL_FROM_DATABASE=PowerEdge T605 Broadcom NetXtreme II BCM5708 + +pci:v000014E4d0000164Csv00001028sd00000221* + ID_MODEL_FROM_DATABASE=PowerEdge R805 Broadcom NetXtreme II BCM5708 + +pci:v000014E4d0000164Csv00001028sd00000223* + ID_MODEL_FROM_DATABASE=PowerEdge R905 Broadcom NetXtreme II BCM5708 + +pci:v000014E4d0000164Csv00001028sd00001F12* + ID_MODEL_FROM_DATABASE=PowerEdge R805/R905 Broadcom NetXtreme II BCM5708 + +pci:v000014E4d0000164Csv0000103Csd00007037* + ID_MODEL_FROM_DATABASE=NC373T PCI Express Multifunction Gigabit Server Adapter + +pci:v000014E4d0000164Csv0000103Csd00007038* + ID_MODEL_FROM_DATABASE=NC373i Integrated Multifunction Gigabit Server Adapter + +pci:v000014E4d0000164Csv0000103Csd00007045* + ID_MODEL_FROM_DATABASE=NC374m PCI Express Dual Port Multifunction Gigabit Server Adapter + +pci:v000014E4d0000164D* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5702FE Gigabit Ethernet + +pci:v000014E4d0000164E* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57710 10-Gigabit PCIe [Everest] + +pci:v000014E4d0000164Esv0000103Csd0000171C* + ID_MODEL_FROM_DATABASE=NC532m Dual Port 10GbE Multifunction BL-C Adapter + +pci:v000014E4d0000164Esv0000103Csd00007058* + ID_MODEL_FROM_DATABASE=NC532i Dual Port 10GbE Multifunction BL-C Adapter + +pci:v000014E4d0000164F* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57711 10-Gigabit PCIe + +pci:v000014E4d00001650* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57711E 10-Gigabit PCIe + +pci:v000014E4d00001650sv0000103Csd0000171C* + ID_MODEL_FROM_DATABASE=NC532m Dual Port 10GbE Multifunction BL-C Adapter + +pci:v000014E4d00001650sv0000103Csd00007058* + ID_MODEL_FROM_DATABASE=NC532i Dual Port 10GbE Multifunction BL-C Adapter + +pci:v000014E4d00001653* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5705 Gigabit Ethernet + +pci:v000014E4d00001653sv00000E11sd000000E3* + ID_MODEL_FROM_DATABASE=NC7761 Gigabit Server Adapter + +pci:v000014E4d00001653sv00001734sd00001073* + ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + +pci:v000014E4d00001654* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5705_2 Gigabit Ethernet + +pci:v000014E4d00001654sv00000E11sd000000E3* + ID_MODEL_FROM_DATABASE=NC7761 Gigabit Server Adapter + +pci:v000014E4d00001654sv0000103Csd00003100* + ID_MODEL_FROM_DATABASE=NC1020 ProLiant Gigabit Server Adapter 32 PCI + +pci:v000014E4d00001654sv0000103Csd00003226* + ID_MODEL_FROM_DATABASE=NC150T 4-port Gigabit Combo Switch & Adapter + +pci:v000014E4d00001655* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5717 Gigabit Ethernet PCIe + +pci:v000014E4d00001656* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5718 Gigabit Ethernet PCIe + +pci:v000014E4d00001657* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5719 Gigabit Ethernet PCIe + +pci:v000014E4d00001659* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5721 Gigabit Ethernet PCI Express + +pci:v000014E4d00001659sv00001014sd000002C6* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v000014E4d00001659sv00001028sd000001E6* + ID_MODEL_FROM_DATABASE=PowerEdge 860 + +pci:v000014E4d00001659sv00001028sd0000023C* + ID_MODEL_FROM_DATABASE=PowerEdge R200 Broadcom NetXtreme BCM5721 + +pci:v000014E4d00001659sv0000103Csd0000170B* + ID_MODEL_FROM_DATABASE=NC320m PCI Express Dual Port Gigabit Server Adapter + +pci:v000014E4d00001659sv0000103Csd00007031* + ID_MODEL_FROM_DATABASE=NC320T PCIe Gigabit Server Adapter + +pci:v000014E4d00001659sv0000103Csd00007032* + ID_MODEL_FROM_DATABASE=NC320i PCIe Gigabit Server Adapter + +pci:v000014E4d00001659sv00001734sd00001061* + ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard LAN + +pci:v000014E4d0000165A* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5722 Gigabit Ethernet PCI Express + +pci:v000014E4d0000165Asv00001014sd00000378* + ID_MODEL_FROM_DATABASE=IBM System x3350 (Machine type 4192) + +pci:v000014E4d0000165Asv00001028sd0000020F* + ID_MODEL_FROM_DATABASE=PowerEdge R300 Broadcom NetXtreme 5722 + +pci:v000014E4d0000165Asv00001028sd00000210* + ID_MODEL_FROM_DATABASE=PowerEdge T300 Broadcom NetXtreme 5722 + +pci:v000014E4d0000165Asv00001028sd00000225* + ID_MODEL_FROM_DATABASE=PowerEdge T105 Broadcom NetXtreme 5722 + +pci:v000014E4d0000165Asv0000103Csd00007051* + ID_MODEL_FROM_DATABASE=NC105i PCIe Gigabit Server Adapter + +pci:v000014E4d0000165Asv0000103Csd00007052* + ID_MODEL_FROM_DATABASE=NC105T PCIe Gigabit Server Adapter + +pci:v000014E4d0000165B* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5723 Gigabit Ethernet PCIe + +pci:v000014E4d0000165Bsv0000103Csd0000705D* + ID_MODEL_FROM_DATABASE=NC107i Integrated PCI Express Gigabit Server Adapter + +pci:v000014E4d0000165C* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5724 Gigabit Ethernet PCIe + +pci:v000014E4d0000165D* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5705M Gigabit Ethernet + +pci:v000014E4d0000165Dsv00001028sd0000865D* + ID_MODEL_FROM_DATABASE=Latitude D400 + +pci:v000014E4d0000165Dsv000014E4sd0000165D* + ID_MODEL_FROM_DATABASE=Dell Latitude D600 + +pci:v000014E4d0000165E* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5705M_2 Gigabit Ethernet + +pci:v000014E4d0000165Esv0000103Csd0000088C* + ID_MODEL_FROM_DATABASE=NC8000 laptop + +pci:v000014E4d0000165Esv0000103Csd00000890* + ID_MODEL_FROM_DATABASE=NC6000 laptop + +pci:v000014E4d0000165Esv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v000014E4d0000165Esv000010CFsd00001279* + ID_MODEL_FROM_DATABASE=LifeBook E8010D + +pci:v000014E4d0000165F* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5720 Gigabit Ethernet PCIe + +pci:v000014E4d00001662* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57712 10 Gigabit Ethernet + +pci:v000014E4d00001663* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57712 10 Gigabit Ethernet Multi Function + +pci:v000014E4d00001665* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5717 Gigabit Ethernet PCIe + +pci:v000014E4d00001668* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5714 Gigabit Ethernet + +pci:v000014E4d00001668sv0000103Csd00007039* + ID_MODEL_FROM_DATABASE=NC324i PCIe Dual Port Gigabit Server Adapter + +pci:v000014E4d00001669* + ID_MODEL_FROM_DATABASE=NetXtreme 5714S Gigabit Ethernet + +pci:v000014E4d0000166A* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5780 Gigabit Ethernet + +pci:v000014E4d0000166Asv0000103Csd00007035* + ID_MODEL_FROM_DATABASE=NC325i Integrated Dual port PCIe Express Gigabit Server Adapter + +pci:v000014E4d0000166B* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5780S Gigabit Ethernet + +pci:v000014E4d0000166E* + ID_MODEL_FROM_DATABASE=570x 10/100 Integrated Controller + +pci:v000014E4d0000166F* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57712 10 Gigabit Ethernet Virtual Function + +pci:v000014E4d00001672* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5754M Gigabit Ethernet PCI Express + +pci:v000014E4d00001673* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5755M Gigabit Ethernet PCI Express + +pci:v000014E4d00001674* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5756ME Gigabit Ethernet PCI Express + +pci:v000014E4d00001677* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5751 Gigabit Ethernet PCI Express + +pci:v000014E4d00001677sv00001028sd00000176* + ID_MODEL_FROM_DATABASE=Dimension XPS Gen 4 + +pci:v000014E4d00001677sv00001028sd00000177* + ID_MODEL_FROM_DATABASE=Dimension 8400 + +pci:v000014E4d00001677sv00001028sd00000179* + ID_MODEL_FROM_DATABASE=Optiplex GX280 + +pci:v000014E4d00001677sv00001028sd00000182* + ID_MODEL_FROM_DATABASE=Latitude D610 + +pci:v000014E4d00001677sv00001028sd00000187* + ID_MODEL_FROM_DATABASE=Precision M70 + +pci:v000014E4d00001677sv00001028sd000001A8* + ID_MODEL_FROM_DATABASE=Precision 380 + +pci:v000014E4d00001677sv00001028sd000001AD* + ID_MODEL_FROM_DATABASE=OptiPlex GX620 + +pci:v000014E4d00001677sv0000103Csd00003006* + ID_MODEL_FROM_DATABASE=DC7100 SFF(DX878AV) + +pci:v000014E4d00001677sv00001462sd0000028C* + ID_MODEL_FROM_DATABASE=915P/G Neo2 + +pci:v000014E4d00001677sv00001734sd0000105D* + ID_MODEL_FROM_DATABASE=Scenic W620 + +pci:v000014E4d00001678* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5715 Gigabit Ethernet + +pci:v000014E4d00001678sv0000103Csd0000703E* + ID_MODEL_FROM_DATABASE=NC326i PCIe Dual Port Gigabit Server Adapter + +pci:v000014E4d00001679* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5715S Gigabit Ethernet + +pci:v000014E4d00001679sv0000103Csd00001707* + ID_MODEL_FROM_DATABASE=NC326m PCIe Dual Port Adapter + +pci:v000014E4d00001679sv0000103Csd0000170C* + ID_MODEL_FROM_DATABASE=NC325m PCIe Quad Port Adapter + +pci:v000014E4d00001679sv0000103Csd0000703C* + ID_MODEL_FROM_DATABASE=NC326i PCIe Dual Port Gigabit Server Adapter + +pci:v000014E4d0000167A* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5754 Gigabit Ethernet PCI Express + +pci:v000014E4d0000167Asv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v000014E4d0000167Asv00001028sd000001DE* + ID_MODEL_FROM_DATABASE=Precision 390 + +pci:v000014E4d0000167Asv00001028sd000001DF* + ID_MODEL_FROM_DATABASE=PowerEdge SC440 + +pci:v000014E4d0000167Asv00001028sd00000214* + ID_MODEL_FROM_DATABASE=Precision T3400 + +pci:v000014E4d0000167Asv00001028sd0000021E* + ID_MODEL_FROM_DATABASE=Precision T5400 + +pci:v000014E4d0000167B* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5755 Gigabit Ethernet PCI Express + +pci:v000014E4d0000167Bsv0000103Csd0000280A* + ID_MODEL_FROM_DATABASE=DC5750 Microtower + +pci:v000014E4d0000167D* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5751M Gigabit Ethernet PCI Express + +pci:v000014E4d0000167Dsv00001014sd00000577* + ID_MODEL_FROM_DATABASE=ThinkPad Z60t + +pci:v000014E4d0000167Dsv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=HP nx8220 + +pci:v000014E4d0000167Dsv0000103Csd00000940* + ID_MODEL_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation + +pci:v000014E4d0000167Dsv000017AAsd00002081* + ID_MODEL_FROM_DATABASE=ThinkPad R60e + +pci:v000014E4d0000167E* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5751F Fast Ethernet PCI Express + +pci:v000014E4d0000167F* + ID_MODEL_FROM_DATABASE=NetLink BCM5787F Fast Ethernet PCI Express + +pci:v000014E4d00001680* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5761e Gigabit Ethernet PCIe + +pci:v000014E4d00001681* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5761 Gigabit Ethernet PCIe + +pci:v000014E4d00001682* + ID_MODEL_FROM_DATABASE=NetXtreme BCM57762 Gigabit Ethernet PCIe + +pci:v000014E4d00001683* + ID_MODEL_FROM_DATABASE=NetXtreme BCM57767 Gigabit Ethernet PCIe + +pci:v000014E4d00001684* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5764M Gigabit Ethernet PCIe + +pci:v000014E4d00001685* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57500S Gigabit Ethernet + +pci:v000014E4d00001686* + ID_MODEL_FROM_DATABASE=NetXtreme BCM57766 Gigabit Ethernet PCIe + +pci:v000014E4d00001687* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5762 Gigabit Ethernet PCIe + +pci:v000014E4d00001688* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5761 10/100/1000BASE-T Ethernet + +pci:v000014E4d00001688sv00001259sd00002708* + ID_MODEL_FROM_DATABASE=AT-2712 FX + +pci:v000014E4d0000168A* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet + +pci:v000014E4d0000168Asv00001028sd00001F5C* + ID_MODEL_FROM_DATABASE=BCM57800 10-Gigabit Ethernet + +pci:v000014E4d0000168Asv00001028sd00001F5D* + ID_MODEL_FROM_DATABASE=BCM57800 10-Gigabit Ethernet + +pci:v000014E4d0000168Asv00001028sd00001F67* + ID_MODEL_FROM_DATABASE=BCM57800 1-Gigabit Ethernet + +pci:v000014E4d0000168Asv00001028sd00001F68* + ID_MODEL_FROM_DATABASE=BCM57800 1-Gigabit Ethernet + +pci:v000014E4d0000168D* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet + +pci:v000014E4d0000168E* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet + +pci:v000014E4d0000168Esv0000103Csd00001798* + ID_MODEL_FROM_DATABASE=Flex-10 10Gb 2-port 530FLB Adapter [Meru] + +pci:v000014E4d00001690* + ID_MODEL_FROM_DATABASE=NetXtreme BCM57760 Gigabit Ethernet PCIe + +pci:v000014E4d00001691* + ID_MODEL_FROM_DATABASE=NetLink BCM57788 Gigabit Ethernet PCIe + +pci:v000014E4d00001691sv00001028sd000004AA* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v000014E4d00001692* + ID_MODEL_FROM_DATABASE=NetLink BCM57780 Gigabit Ethernet PCIe + +pci:v000014E4d00001692sv00001025sd0000033D* + ID_MODEL_FROM_DATABASE=Aspire 7740G + +pci:v000014E4d00001693* + ID_MODEL_FROM_DATABASE=NetLink BCM5787M Gigabit Ethernet PCI Express + +pci:v000014E4d00001693sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v000014E4d00001693sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=6710b + +pci:v000014E4d00001694* + ID_MODEL_FROM_DATABASE=NetLink BCM57790 Gigabit Ethernet PCIe + +pci:v000014E4d00001696* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5782 Gigabit Ethernet + +pci:v000014E4d00001696sv0000103Csd000012BC* + ID_MODEL_FROM_DATABASE=d530 CMT (DG746A) + +pci:v000014E4d00001696sv000014E4sd0000000D* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5782 1000Base-T + +pci:v000014E4d00001698* + ID_MODEL_FROM_DATABASE=NetLink BCM5784M Gigabit Ethernet PCIe + +pci:v000014E4d00001699* + ID_MODEL_FROM_DATABASE=NetLink BCM5785 Gigabit Ethernet + +pci:v000014E4d0000169A* + ID_MODEL_FROM_DATABASE=NetLink BCM5786 Gigabit Ethernet PCI Express + +pci:v000014E4d0000169B* + ID_MODEL_FROM_DATABASE=NetLink BCM5787 Gigabit Ethernet PCI Express + +pci:v000014E4d0000169C* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5788 Gigabit Ethernet + +pci:v000014E4d0000169Csv0000103Csd0000308B* + ID_MODEL_FROM_DATABASE=MX6125 + +pci:v000014E4d0000169Csv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v000014E4d0000169Csv0000144Dsd0000C018* + ID_MODEL_FROM_DATABASE=X20 + +pci:v000014E4d0000169Csv00001462sd0000590C* + ID_MODEL_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) + +pci:v000014E4d0000169D* + ID_MODEL_FROM_DATABASE=NetLink BCM5789 Gigabit Ethernet PCI Express + +pci:v000014E4d000016A0* + ID_MODEL_FROM_DATABASE=NetLink BCM5785 Fast Ethernet + +pci:v000014E4d000016A1* + ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10 Gigabit Ethernet + +pci:v000014E4d000016A2* + ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II 10/20-Gigabit Ethernet + +pci:v000014E4d000016A4* + ID_MODEL_FROM_DATABASE=BCM57840 NetXtreme II Ethernet Multi Function + +pci:v000014E4d000016A5* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function + +pci:v000014E4d000016A5sv00001028sd00001F5C* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function + +pci:v000014E4d000016A5sv00001028sd00001F5D* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function + +pci:v000014E4d000016A5sv00001028sd00001F67* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function + +pci:v000014E4d000016A5sv00001028sd00001F68* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function + +pci:v000014E4d000016A6* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5702X Gigabit Ethernet + +pci:v000014E4d000016A6sv00000E11sd000000BB* + ID_MODEL_FROM_DATABASE=NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T) + +pci:v000014E4d000016A6sv00001028sd00000126* + ID_MODEL_FROM_DATABASE=BCM5702 1000Base-T + +pci:v000014E4d000016A6sv000014E4sd0000000C* + ID_MODEL_FROM_DATABASE=BCM5702 1000Base-T + +pci:v000014E4d000016A6sv000014E4sd00008009* + ID_MODEL_FROM_DATABASE=BCM5702 1000Base-T + +pci:v000014E4d000016A7* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5703X Gigabit Ethernet + +pci:v000014E4d000016A7sv00000E11sd000000CA* + ID_MODEL_FROM_DATABASE=NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + +pci:v000014E4d000016A7sv00000E11sd000000CB* + ID_MODEL_FROM_DATABASE=NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + +pci:v000014E4d000016A7sv00001014sd0000026F* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v000014E4d000016A7sv000014E4sd00000009* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 1000Base-T + +pci:v000014E4d000016A7sv000014E4sd0000000A* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 1000Base-SX + +pci:v000014E4d000016A7sv000014E4sd0000000B* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 1000Base-T + +pci:v000014E4d000016A7sv000014E4sd0000800A* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 1000Base-T + +pci:v000014E4d000016A8* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5704S Gigabit Ethernet + +pci:v000014E4d000016A8sv0000103Csd0000132B* + ID_MODEL_FROM_DATABASE=PCI-X 1000Mbps Dual-port Built-in + +pci:v000014E4d000016A8sv000010A9sd00008014* + ID_MODEL_FROM_DATABASE=Dual Port Gigabit Ethernet (PCI-X,Fiber) + +pci:v000014E4d000016A8sv000010A9sd0000801C* + ID_MODEL_FROM_DATABASE=Quad Port Gigabit Ethernet (PCI-E,Fiber) + +pci:v000014E4d000016A8sv000010B7sd00002001* + ID_MODEL_FROM_DATABASE=3C998-SX Dual Port 1000-SX PCI-X + +pci:v000014E4d000016A9* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Virtual Function + +pci:v000014E4d000016A9sv00001028sd00001F5C* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function + +pci:v000014E4d000016A9sv00001028sd00001F5D* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function + +pci:v000014E4d000016A9sv00001028sd00001F67* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function + +pci:v000014E4d000016A9sv00001028sd00001F68* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function + +pci:v000014E4d000016AA* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM5706S Gigabit Ethernet + +pci:v000014E4d000016AAsv0000103Csd00003102* + ID_MODEL_FROM_DATABASE=NC370F MultifuNCtion Gigabit Server Adapter + +pci:v000014E4d000016AAsv0000103Csd0000310C* + ID_MODEL_FROM_DATABASE=NC370i Multifunction Gigabit Server Adapter + +pci:v000014E4d000016AB* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Multi Function + +pci:v000014E4d000016AC* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708S Gigabit Ethernet + +pci:v000014E4d000016ACsv00001014sd00000304* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM5708S Gigabit Ethernet + +pci:v000014E4d000016ACsv00001028sd000001BB* + ID_MODEL_FROM_DATABASE=PowerEdge 1955 Broadcom NetXtreme II BCM5708S + +pci:v000014E4d000016ACsv00001028sd0000020C* + ID_MODEL_FROM_DATABASE=PowerEdge M605 Broadcom NetXtreme II BCM5708S + +pci:v000014E4d000016ACsv0000103Csd00001706* + ID_MODEL_FROM_DATABASE=NC373m Multifunction Gigabit Server Adapter + +pci:v000014E4d000016ACsv0000103Csd00007038* + ID_MODEL_FROM_DATABASE=NC373i PCI Express Multifunction Gigabit Server Adapter + +pci:v000014E4d000016ACsv0000103Csd0000703B* + ID_MODEL_FROM_DATABASE=NC373i Integrated Multifunction Gigabit Server Adapter + +pci:v000014E4d000016ACsv0000103Csd0000703D* + ID_MODEL_FROM_DATABASE=NC373F PCI Express Multifunction Gigabit Server Adapter + +pci:v000014E4d000016AD* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function + +pci:v000014E4d000016AE* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function + +pci:v000014E4d000016AF* + ID_MODEL_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function + +pci:v000014E4d000016B0* + ID_MODEL_FROM_DATABASE=NetXtreme BCM57761 Gigabit Ethernet PCIe + +pci:v000014E4d000016B1* + ID_MODEL_FROM_DATABASE=NetLink BCM57781 Gigabit Ethernet PCIe + +pci:v000014E4d000016B2* + ID_MODEL_FROM_DATABASE=NetLink BCM57791 Gigabit Ethernet PCIe + +pci:v000014E4d000016B3* + ID_MODEL_FROM_DATABASE=NetXtreme BCM57786 Gigabit Ethernet PCIe + +pci:v000014E4d000016B4* + ID_MODEL_FROM_DATABASE=NetXtreme BCM57765 Gigabit Ethernet PCIe + +pci:v000014E4d000016B5* + ID_MODEL_FROM_DATABASE=NetLink BCM57785 Gigabit Ethernet PCIe + +pci:v000014E4d000016B6* + ID_MODEL_FROM_DATABASE=NetLink BCM57795 Gigabit Ethernet PCIe + +pci:v000014E4d000016B7* + ID_MODEL_FROM_DATABASE=NetXtreme BCM57782 Gigabit Ethernet PCIe + +pci:v000014E4d000016BC* + ID_MODEL_FROM_DATABASE=NetXtreme BCM57765 Memory Card Reader + +pci:v000014E4d000016C6* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5702A3 Gigabit Ethernet + +pci:v000014E4d000016C6sv000010B7sd00001100* + ID_MODEL_FROM_DATABASE=3C1000B-T 10/100/1000 PCI + +pci:v000014E4d000016C6sv000014E4sd0000000C* + ID_MODEL_FROM_DATABASE=BCM5702 1000Base-T + +pci:v000014E4d000016C6sv000014E4sd00008009* + ID_MODEL_FROM_DATABASE=BCM5702 1000Base-T + +pci:v000014E4d000016C7* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet + +pci:v000014E4d000016C7sv00000E11sd000000CA* + ID_MODEL_FROM_DATABASE=NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + +pci:v000014E4d000016C7sv00000E11sd000000CB* + ID_MODEL_FROM_DATABASE=NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) + +pci:v000014E4d000016C7sv0000103Csd000012C3* + ID_MODEL_FROM_DATABASE=Combo FC/GigE-SX [A9782A] + +pci:v000014E4d000016C7sv0000103Csd000012CA* + ID_MODEL_FROM_DATABASE=Combo FC/GigE-T [A9784A] + +pci:v000014E4d000016C7sv0000103Csd00001321* + ID_MODEL_FROM_DATABASE=Core I/O LAN/SCSI Combo [AB314A] + +pci:v000014E4d000016C7sv000014E4sd00000009* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 1000Base-T + +pci:v000014E4d000016C7sv000014E4sd0000000A* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5703 1000Base-SX + +pci:v000014E4d000016DD* + ID_MODEL_FROM_DATABASE=NetLink BCM5781 Gigabit Ethernet PCI Express + +pci:v000014E4d000016F3* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5727 Gigabit Ethernet PCIe + +pci:v000014E4d000016F7* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5753 Gigabit Ethernet PCI Express + +pci:v000014E4d000016FD* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5753M Gigabit Ethernet PCI Express + +pci:v000014E4d000016FDsv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v000014E4d000016FDsv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v000014E4d000016FE* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5753F Fast Ethernet PCI Express + +pci:v000014E4d0000170C* + ID_MODEL_FROM_DATABASE=BCM4401-B0 100Base-TX + +pci:v000014E4d0000170Csv00001028sd00000188* + ID_MODEL_FROM_DATABASE=Inspiron 6000 laptop + +pci:v000014E4d0000170Csv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m + +pci:v000014E4d0000170Csv00001028sd00000196* + ID_MODEL_FROM_DATABASE=Inspiron 5160 + +pci:v000014E4d0000170Csv00001028sd000001AF* + ID_MODEL_FROM_DATABASE=Inspiron 6400 + +pci:v000014E4d0000170Csv00001028sd000001CD* + ID_MODEL_FROM_DATABASE=Inspiron 9400 Laptop + +pci:v000014E4d0000170Csv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v000014E4d0000170Csv00001028sd000001D8* + ID_MODEL_FROM_DATABASE=Inspiron E1405 + +pci:v000014E4d0000170Csv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v000014E4d0000170Csv0000103Csd000030A2* + ID_MODEL_FROM_DATABASE=NX7300 laptop + +pci:v000014E4d0000170Csv000014E4sd0000170C* + ID_MODEL_FROM_DATABASE=HP Compaq 6720t Mobile Thin Client + +pci:v000014E4d0000170D* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5901 100Base-TX + +pci:v000014E4d0000170Dsv00001014sd00000545* + ID_MODEL_FROM_DATABASE=ThinkPad R40e + +pci:v000014E4d0000170E* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5901 100Base-TX + +pci:v000014E4d00001712* + ID_MODEL_FROM_DATABASE=NetLink BCM5906 Fast Ethernet PCI Express + +pci:v000014E4d00001713* + ID_MODEL_FROM_DATABASE=NetLink BCM5906M Fast Ethernet PCI Express + +pci:v000014E4d00001713sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v000014E4d00001713sv00001028sd00000209* + ID_MODEL_FROM_DATABASE=XPS M1330 + +pci:v000014E4d00001713sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v000014E4d00001713sv000017AAsd00003A23* + ID_MODEL_FROM_DATABASE=IdeaPad S10e + +pci:v000014E4d00003352* + ID_MODEL_FROM_DATABASE=BCM3352 + +pci:v000014E4d00003360* + ID_MODEL_FROM_DATABASE=BCM3360 + +pci:v000014E4d00004210* + ID_MODEL_FROM_DATABASE=BCM4210 iLine10 HomePNA 2.0 + +pci:v000014E4d00004211* + ID_MODEL_FROM_DATABASE=BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem + +pci:v000014E4d00004212* + ID_MODEL_FROM_DATABASE=BCM4212 v.90 56k modem + +pci:v000014E4d00004220* + ID_MODEL_FROM_DATABASE=802-11b/g Wireless PCI controller, packaged as a Linksys WPC54G ver 1.2 PCMCIA card + +pci:v000014E4d00004222* + ID_MODEL_FROM_DATABASE=NetXtreme BCM5753M Gigabit Ethernet PCI Express + +pci:v000014E4d00004301* + ID_MODEL_FROM_DATABASE=BCM4301 802.11b Wireless LAN Controller + +pci:v000014E4d00004301sv00001028sd00000407* + ID_MODEL_FROM_DATABASE=TrueMobile 1180 Onboard WLAN + +pci:v000014E4d00004301sv00001043sd00000120* + ID_MODEL_FROM_DATABASE=WL-103b Wireless LAN PC Card + +pci:v000014E4d00004301sv000016A5sd00001602* + ID_MODEL_FROM_DATABASE=B-300 802.11b Wireless CardBus Adapter + +pci:v000014E4d00004301sv00001737sd00004301* + ID_MODEL_FROM_DATABASE=WMP11 v2.7 802.11b Wireless-B PCI Adapter + +pci:v000014E4d00004305* + ID_MODEL_FROM_DATABASE=BCM4307 V.90 56k Modem + +pci:v000014E4d00004306* + ID_MODEL_FROM_DATABASE=BCM4306 802.11bg Wireless LAN controller + +pci:v000014E4d00004307* + ID_MODEL_FROM_DATABASE=BCM4306 802.11bg Wireless LAN Controller + +pci:v000014E4d00004310* + ID_MODEL_FROM_DATABASE=BCM4310 Chipcommon I/OController + +pci:v000014E4d00004311* + ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g WLAN + +pci:v000014E4d00004311sv00001028sd00000007* + ID_MODEL_FROM_DATABASE=Wireless 1390 WLAN Mini-Card + +pci:v000014E4d00004311sv00001028sd00000008* + ID_MODEL_FROM_DATABASE=Wireless 1390 WLAN ExpressCard + +pci:v000014E4d00004311sv0000103Csd00001363* + ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller + +pci:v000014E4d00004311sv0000103Csd00001364* + ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller + +pci:v000014E4d00004311sv0000103Csd00001365* + ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller + +pci:v000014E4d00004311sv0000103Csd00001374* + ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller + +pci:v000014E4d00004311sv0000103Csd00001375* + ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller + +pci:v000014E4d00004311sv0000103Csd00001376* + ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller + +pci:v000014E4d00004311sv0000103Csd00001377* + ID_MODEL_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller + +pci:v000014E4d00004311sv0000103Csd0000137F* + ID_MODEL_FROM_DATABASE=BCM4322 802.11a/b/g/n Wireless LAN Controller + +pci:v000014E4d00004311sv0000103Csd00001380* + ID_MODEL_FROM_DATABASE=BCM4322 802.11a/b/g/n Wireless LAN Controller + +pci:v000014E4d00004311sv000014E4sd00004311* + ID_MODEL_FROM_DATABASE=BCM94311MCG + +pci:v000014E4d00004312* + ID_MODEL_FROM_DATABASE=BCM4311 802.11a/b/g + +pci:v000014E4d00004312sv00001028sd00000007* + ID_MODEL_FROM_DATABASE=Wireless 1490 Dual Band WLAN Mini-Card + +pci:v000014E4d00004312sv00001028sd00000008* + ID_MODEL_FROM_DATABASE=Wireless 1490 Dual Band WLAN ExpressCard + +pci:v000014E4d00004312sv0000103Csd0000135A* + ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN + +pci:v000014E4d00004312sv0000103Csd0000135F* + ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN + +pci:v000014E4d00004312sv0000103Csd00001360* + ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN + +pci:v000014E4d00004312sv0000103Csd00001361* + ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN + +pci:v000014E4d00004312sv0000103Csd00001362* + ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN + +pci:v000014E4d00004312sv0000103Csd00001370* + ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN + +pci:v000014E4d00004312sv0000103Csd00001371* + ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN + +pci:v000014E4d00004312sv0000103Csd00001372* + ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN + +pci:v000014E4d00004312sv0000103Csd00001373* + ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN + +pci:v000014E4d00004312sv0000103Csd000030B5* + ID_MODEL_FROM_DATABASE=Presario V3242AU + +pci:v000014E4d00004312sv00001371sd0000103C* + ID_MODEL_FROM_DATABASE=Broadcom 802.11 Multiband-netwerkadapter(6715s) + +pci:v000014E4d00004313* + ID_MODEL_FROM_DATABASE=BCM4311 802.11a + +pci:v000014E4d00004315* + ID_MODEL_FROM_DATABASE=BCM4312 802.11b/g LP-PHY + +pci:v000014E4d00004315sv00001028sd0000000B* + ID_MODEL_FROM_DATABASE=Wireless 1395 WLAN Mini-Card + +pci:v000014E4d00004315sv00001028sd0000000C* + ID_MODEL_FROM_DATABASE=Wireless 1397 WLAN Mini-Card + +pci:v000014E4d00004315sv0000103Csd0000137C* + ID_MODEL_FROM_DATABASE=BCM4312 802.11b/g Wireless LAN Controller + +pci:v000014E4d00004315sv0000103Csd0000137D* + ID_MODEL_FROM_DATABASE=BCM4312 802.11b/g Wireless LAN Controller + +pci:v000014E4d00004315sv0000103Csd00001507* + ID_MODEL_FROM_DATABASE=U98Z049.00 Wireless Mini PCIe Card + +pci:v000014E4d00004315sv0000105Bsd0000E003* + ID_MODEL_FROM_DATABASE=T77H030.00 Wireless Mini PCIe Card + +pci:v000014E4d00004315sv0000105Bsd0000E01B* + ID_MODEL_FROM_DATABASE=T77H106.00 Wireless Half-size Mini PCIe Card + +pci:v000014E4d00004318* + ID_MODEL_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller + +pci:v000014E4d00004318sv00001028sd00000005* + ID_MODEL_FROM_DATABASE=Wireless 1370 WLAN Mini-PCI Card + +pci:v000014E4d00004318sv00001028sd00000006* + ID_MODEL_FROM_DATABASE=Wireless 1370 WLAN PC Card + +pci:v000014E4d00004318sv0000103Csd00001355* + ID_MODEL_FROM_DATABASE=Broadcom 802.11b/g WLAN + +pci:v000014E4d00004318sv0000103Csd00001356* + ID_MODEL_FROM_DATABASE=Broadcom 802.11b/g WLAN + +pci:v000014E4d00004318sv0000103Csd00001357* + ID_MODEL_FROM_DATABASE=Broadcom 802.11b/g WLAN + +pci:v000014E4d00004318sv00001043sd0000100F* + ID_MODEL_FROM_DATABASE=WL-138G v2 / WL-138gE / WL-100gE + +pci:v000014E4d00004318sv00001043sd0000120F* + ID_MODEL_FROM_DATABASE=A6U notebook embedded card + +pci:v000014E4d00004318sv00001154sd00000355* + ID_MODEL_FROM_DATABASE=Buffalo WLI2-PCI-G54S High Speed Mode Wireless Adapter + +pci:v000014E4d00004318sv00001468sd00000311* + ID_MODEL_FROM_DATABASE=Aspire 3022WLMi, 5024WLMi, 5020 + +pci:v000014E4d00004318sv00001468sd00000312* + ID_MODEL_FROM_DATABASE=TravelMate 2410 + +pci:v000014E4d00004318sv000014E4sd00000449* + ID_MODEL_FROM_DATABASE=Gateway 7510GX + +pci:v000014E4d00004318sv000016ECsd00000119* + ID_MODEL_FROM_DATABASE=U.S.Robotics Wireless MAXg PC Card + +pci:v000014E4d00004318sv00001737sd00000042* + ID_MODEL_FROM_DATABASE=WMP54GS v1.1 802.11g Wireless-G PCI Adapter with SpeedBooster + +pci:v000014E4d00004318sv00001737sd00000048* + ID_MODEL_FROM_DATABASE=WPC54G v3 802.11g Wireless-G Notebook Adapter + +pci:v000014E4d00004318sv00001737sd00000049* + ID_MODEL_FROM_DATABASE=WPC54GS v2 802.11g Wireless-G Notebook Adapter with SpeedBooster + +pci:v000014E4d00004318sv00001799sd00007000* + ID_MODEL_FROM_DATABASE=F5D7000 v4000 Wireless G Desktop Card + +pci:v000014E4d00004318sv00001799sd00007001* + ID_MODEL_FROM_DATABASE=F5D7001 v2000 Wireless G Plus Desktop Card + +pci:v000014E4d00004318sv00001799sd00007010* + ID_MODEL_FROM_DATABASE=F5D7010 v4000 Wireless G Notebook Card + +pci:v000014E4d00004318sv00001799sd00007011* + ID_MODEL_FROM_DATABASE=F5D7011 v2000 High-Speed Mode Wireless G Notebook Card + +pci:v000014E4d00004319* + ID_MODEL_FROM_DATABASE=BCM4318 [AirForce 54g] 802.11a/b/g PCI Express Transceiver + +pci:v000014E4d00004319sv00001028sd00000005* + ID_MODEL_FROM_DATABASE=Wireless 1470 Dual Band WLAN Mini-PCI Card + +pci:v000014E4d00004319sv00001028sd00000006* + ID_MODEL_FROM_DATABASE=Wireless 1470 Dual Band WLAN PC Card + +pci:v000014E4d00004319sv0000103Csd00001358* + ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN + +pci:v000014E4d00004319sv0000103Csd00001359* + ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN + +pci:v000014E4d00004319sv0000103Csd0000135A* + ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN + +pci:v000014E4d00004320* + ID_MODEL_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller + +pci:v000014E4d00004320sv00001028sd00000001* + ID_MODEL_FROM_DATABASE=TrueMobile 1300 WLAN Mini-PCI Card + +pci:v000014E4d00004320sv00001028sd00000002* + ID_MODEL_FROM_DATABASE=TrueMobile 1300 WLAN PC Card + +pci:v000014E4d00004320sv00001028sd00000003* + ID_MODEL_FROM_DATABASE=Wireless 1350 WLAN Mini-PCI Card + +pci:v000014E4d00004320sv00001028sd00000004* + ID_MODEL_FROM_DATABASE=Wireless 1350 WLAN PC Card + +pci:v000014E4d00004320sv0000103Csd000012F4* + ID_MODEL_FROM_DATABASE=Broadcom 802.11b/g WLAN + +pci:v000014E4d00004320sv0000103Csd000012F8* + ID_MODEL_FROM_DATABASE=Broadcom 802.11b/g WLAN + +pci:v000014E4d00004320sv0000103Csd000012FA* + ID_MODEL_FROM_DATABASE=Broadcom 802.11b/g WLAN + +pci:v000014E4d00004320sv0000103Csd000012FB* + ID_MODEL_FROM_DATABASE=Broadcom 802.11b/g WLAN + +pci:v000014E4d00004320sv00001043sd0000100F* + ID_MODEL_FROM_DATABASE=WL-100G + +pci:v000014E4d00004320sv00001057sd00007025* + ID_MODEL_FROM_DATABASE=WN825G + +pci:v000014E4d00004320sv0000106Bsd0000004E* + ID_MODEL_FROM_DATABASE=AirPort Extreme + +pci:v000014E4d00004320sv00001154sd00000330* + ID_MODEL_FROM_DATABASE=Buffalo WLI2-PCI-G54S High Speed Mode Wireless Desktop Adapter + +pci:v000014E4d00004320sv0000144Fsd00007050* + ID_MODEL_FROM_DATABASE=eMachines M6805 802.11g Built-in Wireless + +pci:v000014E4d00004320sv0000144Fsd00007051* + ID_MODEL_FROM_DATABASE=Sonnet Aria Extreme PCI + +pci:v000014E4d00004320sv00001737sd00000013* + ID_MODEL_FROM_DATABASE=WMP54G v1 802.11g PCI Adapter + +pci:v000014E4d00004320sv00001737sd00000014* + ID_MODEL_FROM_DATABASE=WMP54G v2 802.11g PCI Adapter + +pci:v000014E4d00004320sv00001737sd00000015* + ID_MODEL_FROM_DATABASE=WMP54GS v1.0 802.11g Wireless-G PCI Adapter with SpeedBooster + +pci:v000014E4d00004320sv00001737sd00004320* + ID_MODEL_FROM_DATABASE=WPC54G v1 / WPC54GS v1 802.11g Wireless-G Notebook Adapter + +pci:v000014E4d00004320sv00001799sd00007000* + ID_MODEL_FROM_DATABASE=F5D7000 v1000 Wireless G Desktop Card + +pci:v000014E4d00004320sv00001799sd00007001* + ID_MODEL_FROM_DATABASE=F5D7001 v1000 Wireless G Plus Desktop Card + +pci:v000014E4d00004320sv00001799sd00007010* + ID_MODEL_FROM_DATABASE=F5D7010 v1000 Wireless G Notebook Card + +pci:v000014E4d00004320sv00001799sd00007011* + ID_MODEL_FROM_DATABASE=F5D7011 v1000 High-Speed Mode Wireless G Notebook Card + +pci:v000014E4d00004320sv0000185Fsd00001220* + ID_MODEL_FROM_DATABASE=TravelMate 290E WLAN Mini-PCI Card + +pci:v000014E4d00004321* + ID_MODEL_FROM_DATABASE=BCM4321 802.11a Wireless Network Controller + +pci:v000014E4d00004322* + ID_MODEL_FROM_DATABASE=BCM4322 802.11bgn Wireless Network Controller + +pci:v000014E4d00004324* + ID_MODEL_FROM_DATABASE=BCM4306 802.11a/b/g + +pci:v000014E4d00004324sv00001028sd00000001* + ID_MODEL_FROM_DATABASE=Truemobile 1400 + +pci:v000014E4d00004324sv00001028sd00000002* + ID_MODEL_FROM_DATABASE=TrueMobile 1400 Dual Band WLAN PC Card + +pci:v000014E4d00004324sv00001028sd00000003* + ID_MODEL_FROM_DATABASE=Truemobile 1450 MiniPCI + +pci:v000014E4d00004324sv00001028sd00000004* + ID_MODEL_FROM_DATABASE=Wireless 1450 Dual Band WLAN PC Card + +pci:v000014E4d00004324sv0000103Csd000012F9* + ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN + +pci:v000014E4d00004324sv0000103Csd000012FC* + ID_MODEL_FROM_DATABASE=Broadcom 802.11a/b/g WLAN + +pci:v000014E4d00004325* + ID_MODEL_FROM_DATABASE=BCM4306 802.11bg Wireless Network Controller + +pci:v000014E4d00004325sv00001414sd00000003* + ID_MODEL_FROM_DATABASE=Wireless Notebook Adapter MN-720 + +pci:v000014E4d00004325sv00001414sd00000004* + ID_MODEL_FROM_DATABASE=Wireless PCI Adapter MN-730 + +pci:v000014E4d00004326* + ID_MODEL_FROM_DATABASE=BCM4307 Chipcommon I/O Controller? + +pci:v000014E4d00004328* + ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n + +pci:v000014E4d00004328sv00001028sd00000009* + ID_MODEL_FROM_DATABASE=Wireless 1500 Draft 802.11n WLAN Mini-Card + +pci:v000014E4d00004328sv00001028sd0000000A* + ID_MODEL_FROM_DATABASE=Wireless 1500 Draft 802.11n WLAN Mini-card + +pci:v000014E4d00004328sv0000103Csd00001366* + ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n Wireless LAN Controller + +pci:v000014E4d00004328sv0000103Csd00001367* + ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n Wireless LAN Controller + +pci:v000014E4d00004328sv0000103Csd00001368* + ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n Wireless LAN Controller + +pci:v000014E4d00004328sv0000103Csd00001369* + ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n Wireless LAN Controller + +pci:v000014E4d00004328sv000014E4sd00004328* + ID_MODEL_FROM_DATABASE=BCM4328 802.11a/b/g/n + +pci:v000014E4d00004328sv00001737sd00000066* + ID_MODEL_FROM_DATABASE=WPC600N v1 802.11a/b/g/n Wireless-N CardBus Adapter + +pci:v000014E4d00004328sv00001737sd00000068* + ID_MODEL_FROM_DATABASE=WEC600N v1 802.11a/b/g/n Wireless-N ExpressCard + +pci:v000014E4d00004329* + ID_MODEL_FROM_DATABASE=BCM4321 802.11b/g/n + +pci:v000014E4d00004329sv00001385sd00007B00* + ID_MODEL_FROM_DATABASE=WN511B RangeMax NEXT Wireless Notebook Adapter + +pci:v000014E4d00004329sv00001385sd00007D00* + ID_MODEL_FROM_DATABASE=WN311B RangeMax Next 270 Mbps Wireless PCI Adapter + +pci:v000014E4d00004329sv00001737sd00000058* + ID_MODEL_FROM_DATABASE=WPC300N v1 Wireless-N Notebook Adapter + +pci:v000014E4d0000432A* + ID_MODEL_FROM_DATABASE=BCM4321 802.11an Wireless Network Controller + +pci:v000014E4d0000432B* + ID_MODEL_FROM_DATABASE=BCM4322 802.11a/b/g/n Wireless LAN Controller + +pci:v000014E4d0000432Bsv00001028sd0000000D* + ID_MODEL_FROM_DATABASE=Wireless 1510 Wireless-N WLAN Mini-Card + +pci:v000014E4d0000432Bsv0000106Bsd0000008E* + ID_MODEL_FROM_DATABASE=AirPort Extreme + +pci:v000014E4d0000432C* + ID_MODEL_FROM_DATABASE=BCM4322 802.11b/g/n + +pci:v000014E4d0000432Csv00001799sd0000D311* + ID_MODEL_FROM_DATABASE=Dynex DX-NNBX 802.11n WLAN Cardbus Card + +pci:v000014E4d0000432D* + ID_MODEL_FROM_DATABASE=BCM4322 802.11an Wireless Network Controller + +pci:v000014E4d00004331* + ID_MODEL_FROM_DATABASE=BCM4331 802.11a/b/g/n + +pci:v000014E4d00004331sv0000106Bsd000000D6* + ID_MODEL_FROM_DATABASE=AirPort Extreme + +pci:v000014E4d00004333* + ID_MODEL_FROM_DATABASE=Serial (EDGE/GPRS modem part of Option GT Combo Edge) + +pci:v000014E4d00004344* + ID_MODEL_FROM_DATABASE=EDGE/GPRS data and 802.11b/g combo cardbus [GC89] + +pci:v000014E4d00004353* + ID_MODEL_FROM_DATABASE=BCM43224 802.11a/b/g/n + +pci:v000014E4d00004353sv00001028sd0000000E* + ID_MODEL_FROM_DATABASE=Wireless 1520 Half-size Mini PCIe Card + +pci:v000014E4d00004353sv0000103Csd00001509* + ID_MODEL_FROM_DATABASE=WMIB-275N Half-size Mini PCIe Card + +pci:v000014E4d00004357* + ID_MODEL_FROM_DATABASE=BCM43225 802.11b/g/n + +pci:v000014E4d00004357sv0000105Bsd0000E021* + ID_MODEL_FROM_DATABASE=T77H103.00 Wireless Half-size Mini PCIe Card + +pci:v000014E4d00004358* + ID_MODEL_FROM_DATABASE=BCM43227 802.11b/g/n + +pci:v000014E4d00004359* + ID_MODEL_FROM_DATABASE=BCM43228 802.11a/b/g/n + +pci:v000014E4d00004359sv00001028sd00000011* + ID_MODEL_FROM_DATABASE=Wireless 1530 Half-size Mini PCIe Card + +pci:v000014E4d00004359sv0000103Csd0000182C* + ID_MODEL_FROM_DATABASE=BCM943228HM4L 802.11a/b/g/n 2x2 Wi-Fi Adapter + +pci:v000014E4d00004365* + ID_MODEL_FROM_DATABASE=BCM43142 802.11b/g/n + +pci:v000014E4d00004365sv00001028sd00000016* + ID_MODEL_FROM_DATABASE=Wireless 1704 802.11n + BT 4.0 + +pci:v000014E4d00004401* + ID_MODEL_FROM_DATABASE=BCM4401 100Base-T + +pci:v000014E4d00004401sv00001025sd00000035* + ID_MODEL_FROM_DATABASE=TravelMate 660 + +pci:v000014E4d00004401sv0000103Csd000008B0* + ID_MODEL_FROM_DATABASE=tc1100 tablet + +pci:v000014E4d00004401sv00001043sd000080A8* + ID_MODEL_FROM_DATABASE=A7V8X motherboard + +pci:v000014E4d00004402* + ID_MODEL_FROM_DATABASE=BCM4402 Integrated 10/100BaseT + +pci:v000014E4d00004403* + ID_MODEL_FROM_DATABASE=BCM4402 V.90 56k Modem + +pci:v000014E4d00004410* + ID_MODEL_FROM_DATABASE=BCM4413 iLine32 HomePNA 2.0 + +pci:v000014E4d00004411* + ID_MODEL_FROM_DATABASE=BCM4413 V.90 56k modem + +pci:v000014E4d00004412* + ID_MODEL_FROM_DATABASE=BCM4412 10/100BaseT + +pci:v000014E4d00004430* + ID_MODEL_FROM_DATABASE=BCM44xx CardBus iLine32 HomePNA 2.0 + +pci:v000014E4d00004432* + ID_MODEL_FROM_DATABASE=BCM4432 CardBus 10/100BaseT + +pci:v000014E4d00004610* + ID_MODEL_FROM_DATABASE=BCM4610 Sentry5 PCI to SB Bridge + +pci:v000014E4d00004611* + ID_MODEL_FROM_DATABASE=BCM4610 Sentry5 iLine32 HomePNA 1.0 + +pci:v000014E4d00004612* + ID_MODEL_FROM_DATABASE=BCM4610 Sentry5 V.90 56k Modem + +pci:v000014E4d00004613* + ID_MODEL_FROM_DATABASE=BCM4610 Sentry5 Ethernet Controller + +pci:v000014E4d00004614* + ID_MODEL_FROM_DATABASE=BCM4610 Sentry5 External Interface + +pci:v000014E4d00004615* + ID_MODEL_FROM_DATABASE=BCM4610 Sentry5 USB Controller + +pci:v000014E4d00004704* + ID_MODEL_FROM_DATABASE=BCM4704 PCI to SB Bridge + +pci:v000014E4d00004705* + ID_MODEL_FROM_DATABASE=BCM4704 Sentry5 802.11b Wireless LAN Controller + +pci:v000014E4d00004706* + ID_MODEL_FROM_DATABASE=BCM4704 Sentry5 Ethernet Controller + +pci:v000014E4d00004707* + ID_MODEL_FROM_DATABASE=BCM4704 Sentry5 USB Controller + +pci:v000014E4d00004708* + ID_MODEL_FROM_DATABASE=BCM4704 Crypto Accelerator + +pci:v000014E4d00004710* + ID_MODEL_FROM_DATABASE=BCM4710 Sentry5 PCI to SB Bridge + +pci:v000014E4d00004711* + ID_MODEL_FROM_DATABASE=BCM47xx Sentry5 iLine32 HomePNA 2.0 + +pci:v000014E4d00004712* + ID_MODEL_FROM_DATABASE=BCM47xx V.92 56k modem + +pci:v000014E4d00004713* + ID_MODEL_FROM_DATABASE=Sentry5 Ethernet Controller + +pci:v000014E4d00004714* + ID_MODEL_FROM_DATABASE=BCM47xx Sentry5 External Interface + +pci:v000014E4d00004715* + ID_MODEL_FROM_DATABASE=Sentry5 USB Controller + +pci:v000014E4d00004716* + ID_MODEL_FROM_DATABASE=BCM47xx Sentry5 USB Host Controller + +pci:v000014E4d00004717* + ID_MODEL_FROM_DATABASE=BCM47xx Sentry5 USB Device Controller + +pci:v000014E4d00004718* + ID_MODEL_FROM_DATABASE=Sentry5 Crypto Accelerator + +pci:v000014E4d00004719* + ID_MODEL_FROM_DATABASE=BCM47xx/53xx RoboSwitch Core + +pci:v000014E4d00004720* + ID_MODEL_FROM_DATABASE=BCM4712 MIPS CPU + +pci:v000014E4d00004727* + ID_MODEL_FROM_DATABASE=BCM4313 802.11b/g/n Wireless LAN Controller + +pci:v000014E4d00004727sv00001028sd00000010* + ID_MODEL_FROM_DATABASE=Inspiron M5010 / XPS 8300 + +pci:v000014E4d00005365* + ID_MODEL_FROM_DATABASE=BCM5365P Sentry5 Host Bridge + +pci:v000014E4d00005600* + ID_MODEL_FROM_DATABASE=BCM5600 StrataSwitch 24+2 Ethernet Switch Controller + +pci:v000014E4d00005605* + ID_MODEL_FROM_DATABASE=BCM5605 StrataSwitch 24+2 Ethernet Switch Controller + +pci:v000014E4d00005615* + ID_MODEL_FROM_DATABASE=BCM5615 StrataSwitch 24+2 Ethernet Switch Controller + +pci:v000014E4d00005625* + ID_MODEL_FROM_DATABASE=BCM5625 StrataSwitch 24+2 Ethernet Switch Controller + +pci:v000014E4d00005645* + ID_MODEL_FROM_DATABASE=BCM5645 StrataSwitch 24+2 Ethernet Switch Controller + +pci:v000014E4d00005670* + ID_MODEL_FROM_DATABASE=BCM5670 8-Port 10GE Ethernet Switch Fabric + +pci:v000014E4d00005680* + ID_MODEL_FROM_DATABASE=BCM5680 G-Switch 8 Port Gigabit Ethernet Switch Controller + +pci:v000014E4d00005690* + ID_MODEL_FROM_DATABASE=BCM5690 12-port Multi-Layer Gigabit Ethernet Switch + +pci:v000014E4d00005691* + ID_MODEL_FROM_DATABASE=BCM5691 GE/10GE 8+2 Gigabit Ethernet Switch Controller + +pci:v000014E4d00005692* + ID_MODEL_FROM_DATABASE=BCM5692 12-port Multi-Layer Gigabit Ethernet Switch + +pci:v000014E4d00005695* + ID_MODEL_FROM_DATABASE=BCM5695 12-port + HiGig Multi-Layer Gigabit Ethernet Switch + +pci:v000014E4d00005698* + ID_MODEL_FROM_DATABASE=BCM5698 12-port Multi-Layer Gigabit Ethernet Switch + +pci:v000014E4d00005820* + ID_MODEL_FROM_DATABASE=BCM5820 Crypto Accelerator + +pci:v000014E4d00005821* + ID_MODEL_FROM_DATABASE=BCM5821 Crypto Accelerator + +pci:v000014E4d00005822* + ID_MODEL_FROM_DATABASE=BCM5822 Crypto Accelerator + +pci:v000014E4d00005823* + ID_MODEL_FROM_DATABASE=BCM5823 Crypto Accelerator + +pci:v000014E4d00005824* + ID_MODEL_FROM_DATABASE=BCM5824 Crypto Accelerator + +pci:v000014E4d00005840* + ID_MODEL_FROM_DATABASE=BCM5840 Crypto Accelerator + +pci:v000014E4d00005841* + ID_MODEL_FROM_DATABASE=BCM5841 Crypto Accelerator + +pci:v000014E4d00005850* + ID_MODEL_FROM_DATABASE=BCM5850 Crypto Accelerator + +pci:v000014E4d00008602* + ID_MODEL_FROM_DATABASE=BCM7400/BCM7405 Serial ATA Controller + +pci:v000014E4d0000B302* + ID_MODEL_FROM_DATABASE=BCM56302 StrataXGS 24x1GE 2x10GE Switch Controller + +pci:v000014E4d0000B334* + ID_MODEL_FROM_DATABASE=BCM56334 StrataXGS 24x1GE 4x10GE Switch Controller + +pci:v000014E4d0000B800* + ID_MODEL_FROM_DATABASE=BCM56800 StrataXGS 10GE Switch Controller + +pci:v000014E4d0000B842* + ID_MODEL_FROM_DATABASE=BCM56842 Trident 10GE Switch Controller + +pci:v000014E5* + ID_VENDOR_FROM_DATABASE=Pixelfusion Ltd + +pci:v000014E6* + ID_VENDOR_FROM_DATABASE=SHINING Technology Inc + +pci:v000014E7* + ID_VENDOR_FROM_DATABASE=3CX + +pci:v000014E8* + ID_VENDOR_FROM_DATABASE=RAYCER Inc + +pci:v000014E9* + ID_VENDOR_FROM_DATABASE=GARNETS System CO Ltd + +pci:v000014EA* + ID_VENDOR_FROM_DATABASE=Planex Communications, Inc + +pci:v000014EAd0000AB06* + ID_MODEL_FROM_DATABASE=FNW-3603-TX CardBus Fast Ethernet + +pci:v000014EAd0000AB07* + ID_MODEL_FROM_DATABASE=RTL81xx RealTek Ethernet + +pci:v000014EAd0000AB08* + ID_MODEL_FROM_DATABASE=FNW-3602-TX CardBus Fast Ethernet + +pci:v000014EB* + ID_VENDOR_FROM_DATABASE=SEIKO EPSON Corp + +pci:v000014EC* + ID_VENDOR_FROM_DATABASE=Agilent Technologies + +pci:v000014ECd00000000* + ID_MODEL_FROM_DATABASE=Aciris Digitizer (malformed ID) + +pci:v000014ED* + ID_VENDOR_FROM_DATABASE=DATAKINETICS Ltd + +pci:v000014EE* + ID_VENDOR_FROM_DATABASE=MASPRO KENKOH Corp + +pci:v000014EF* + ID_VENDOR_FROM_DATABASE=CARRY Computer ENG. CO Ltd + +pci:v000014F0* + ID_VENDOR_FROM_DATABASE=CANON RESEACH CENTRE FRANCE + +pci:v000014F1* + ID_VENDOR_FROM_DATABASE=Conexant Systems, Inc. + +pci:v000014F1d00001002* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v000014F1d00001003* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v000014F1d00001004* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v000014F1d00001005* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v000014F1d00001006* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v000014F1d00001022* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v000014F1d00001023* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v000014F1d00001024* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v000014F1d00001025* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v000014F1d00001026* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v000014F1d00001032* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v000014F1d00001033* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem + +pci:v000014F1d00001033sv00001033sd00008077* + ID_MODEL_FROM_DATABASE=NEC + +pci:v000014F1d00001033sv0000122Dsd00004027* + ID_MODEL_FROM_DATABASE=Dell Zeus - MDP3880-W(B) Data Fax Modem + +pci:v000014F1d00001033sv0000122Dsd00004030* + ID_MODEL_FROM_DATABASE=Dell Mercury - MDP3880-U(B) Data Fax Modem + +pci:v000014F1d00001033sv0000122Dsd00004034* + ID_MODEL_FROM_DATABASE=Dell Thor - MDP3880-W(U) Data Fax Modem + +pci:v000014F1d00001033sv000013E0sd0000020D* + ID_MODEL_FROM_DATABASE=Dell Copper + +pci:v000014F1d00001033sv000013E0sd0000020E* + ID_MODEL_FROM_DATABASE=Dell Silver + +pci:v000014F1d00001033sv000013E0sd00000261* + ID_MODEL_FROM_DATABASE=IBM + +pci:v000014F1d00001033sv000013E0sd00000290* + ID_MODEL_FROM_DATABASE=Compaq Goldwing + +pci:v000014F1d00001033sv000013E0sd000002A0* + ID_MODEL_FROM_DATABASE=IBM + +pci:v000014F1d00001033sv000013E0sd000002B0* + ID_MODEL_FROM_DATABASE=IBM + +pci:v000014F1d00001033sv000013E0sd000002C0* + ID_MODEL_FROM_DATABASE=Compaq Scooter + +pci:v000014F1d00001033sv000013E0sd000002D0* + ID_MODEL_FROM_DATABASE=IBM + +pci:v000014F1d00001033sv0000144Fsd00001500* + ID_MODEL_FROM_DATABASE=IBM P85-DF (1) + +pci:v000014F1d00001033sv0000144Fsd00001501* + ID_MODEL_FROM_DATABASE=IBM P85-DF (2) + +pci:v000014F1d00001033sv0000144Fsd0000150A* + ID_MODEL_FROM_DATABASE=IBM P85-DF (3) + +pci:v000014F1d00001033sv0000144Fsd0000150B* + ID_MODEL_FROM_DATABASE=IBM P85-DF Low Profile (1) + +pci:v000014F1d00001033sv0000144Fsd00001510* + ID_MODEL_FROM_DATABASE=IBM P85-DF Low Profile (2) + +pci:v000014F1d00001034* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem + +pci:v000014F1d00001035* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + +pci:v000014F1d00001035sv000010CFsd00001098* + ID_MODEL_FROM_DATABASE=Fujitsu P85-DFSV + +pci:v000014F1d00001036* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem + +pci:v000014F1d00001036sv0000104Dsd00008067* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v000014F1d00001036sv0000122Dsd00004029* + ID_MODEL_FROM_DATABASE=MDP3880SP-W + +pci:v000014F1d00001036sv0000122Dsd00004031* + ID_MODEL_FROM_DATABASE=MDP3880SP-U + +pci:v000014F1d00001036sv000013E0sd00000209* + ID_MODEL_FROM_DATABASE=Dell Titanium + +pci:v000014F1d00001036sv000013E0sd0000020A* + ID_MODEL_FROM_DATABASE=Dell Graphite + +pci:v000014F1d00001036sv000013E0sd00000260* + ID_MODEL_FROM_DATABASE=Gateway Red Owl + +pci:v000014F1d00001036sv000013E0sd00000270* + ID_MODEL_FROM_DATABASE=Gateway White Horse + +pci:v000014F1d00001052* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Worldwide) + +pci:v000014F1d00001053* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem (Worldwide) + +pci:v000014F1d00001054* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem (Worldwide) + +pci:v000014F1d00001055* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Worldwide) + +pci:v000014F1d00001056* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) + +pci:v000014F1d00001057* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) + +pci:v000014F1d00001059* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem (Worldwide) + +pci:v000014F1d00001063* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem + +pci:v000014F1d00001064* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem + +pci:v000014F1d00001065* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + +pci:v000014F1d00001066* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem + +pci:v000014F1d00001066sv0000122Dsd00004033* + ID_MODEL_FROM_DATABASE=Dell Athena - MDP3900V-U + +pci:v000014F1d00001085* + ID_MODEL_FROM_DATABASE=HCF V90 56k Data/Fax/Voice/Spkp PCI Modem + +pci:v000014F1d000010B6* + ID_MODEL_FROM_DATABASE=CX06834-11 HCF V.92 56k Data/Fax/Voice/Spkp Modem + +pci:v000014F1d00001433* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem + +pci:v000014F1d00001434* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem + +pci:v000014F1d00001435* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + +pci:v000014F1d00001436* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem + +pci:v000014F1d00001453* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax Modem + +pci:v000014F1d00001453sv000013E0sd00000240* + ID_MODEL_FROM_DATABASE=IBM + +pci:v000014F1d00001453sv000013E0sd00000250* + ID_MODEL_FROM_DATABASE=IBM + +pci:v000014F1d00001453sv0000144Fsd00001502* + ID_MODEL_FROM_DATABASE=IBM P95-DF (1) + +pci:v000014F1d00001453sv0000144Fsd00001503* + ID_MODEL_FROM_DATABASE=IBM P95-DF (2) + +pci:v000014F1d00001454* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem + +pci:v000014F1d00001455* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + +pci:v000014F1d00001456* + ID_MODEL_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem + +pci:v000014F1d00001456sv0000122Dsd00004035* + ID_MODEL_FROM_DATABASE=Dell Europa - MDP3900V-W + +pci:v000014F1d00001456sv0000122Dsd00004302* + ID_MODEL_FROM_DATABASE=Dell MP3930V-W(C) MiniPCI + +pci:v000014F1d00001610* + ID_MODEL_FROM_DATABASE=ADSL AccessRunner PCI Arbitration Device + +pci:v000014F1d00001611* + ID_MODEL_FROM_DATABASE=AccessRunner PCI ADSL Interface Device + +pci:v000014F1d00001620* + ID_MODEL_FROM_DATABASE=AccessRunner V2 PCI ADSL Arbitration Device + +pci:v000014F1d00001621* + ID_MODEL_FROM_DATABASE=AccessRunner V2 PCI ADSL Interface Device + +pci:v000014F1d00001622* + ID_MODEL_FROM_DATABASE=AccessRunner V2 PCI ADSL Yukon WAN Adapter + +pci:v000014F1d00001803* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v000014F1d00001803sv00000E11sd00000023* + ID_MODEL_FROM_DATABASE=623-LAN Grizzly + +pci:v000014F1d00001803sv00000E11sd00000043* + ID_MODEL_FROM_DATABASE=623-LAN Yogi + +pci:v000014F1d00001811* + ID_MODEL_FROM_DATABASE=MiniPCI Network Adapter + +pci:v000014F1d00001815* + ID_MODEL_FROM_DATABASE=HCF 56k Modem + +pci:v000014F1d00001815sv00000E11sd00000022* + ID_MODEL_FROM_DATABASE=Grizzly + +pci:v000014F1d00001815sv00000E11sd00000042* + ID_MODEL_FROM_DATABASE=Yogi + +pci:v000014F1d00002003* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem + +pci:v000014F1d00002004* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem + +pci:v000014F1d00002005* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + +pci:v000014F1d00002006* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem + +pci:v000014F1d00002013* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem + +pci:v000014F1d00002013sv00000E11sd0000B195* + ID_MODEL_FROM_DATABASE=Bear + +pci:v000014F1d00002013sv00000E11sd0000B196* + ID_MODEL_FROM_DATABASE=Seminole 1 + +pci:v000014F1d00002013sv00000E11sd0000B1BE* + ID_MODEL_FROM_DATABASE=Seminole 2 + +pci:v000014F1d00002013sv00001025sd00008013* + ID_MODEL_FROM_DATABASE=Acer + +pci:v000014F1d00002013sv00001033sd0000809D* + ID_MODEL_FROM_DATABASE=NEC + +pci:v000014F1d00002013sv00001033sd000080BC* + ID_MODEL_FROM_DATABASE=NEC + +pci:v000014F1d00002013sv0000155Dsd00006793* + ID_MODEL_FROM_DATABASE=HP + +pci:v000014F1d00002013sv0000155Dsd00008850* + ID_MODEL_FROM_DATABASE=E Machines + +pci:v000014F1d00002014* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem + +pci:v000014F1d00002015* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem + +pci:v000014F1d00002016* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem + +pci:v000014F1d00002043* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (WorldW SmartDAA) + +pci:v000014F1d00002044* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem (WorldW SmartDAA) + +pci:v000014F1d00002045* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA) + +pci:v000014F1d00002045sv000014F1sd00002045* + ID_MODEL_FROM_DATABASE=Generic SoftK56 + +pci:v000014F1d00002046* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (WorldW SmartDAA) + +pci:v000014F1d00002063* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (SmartDAA) + +pci:v000014F1d00002064* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem (SmartDAA) + +pci:v000014F1d00002065* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (SmartDAA) + +pci:v000014F1d00002066* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (SmartDAA) + +pci:v000014F1d00002093* + ID_MODEL_FROM_DATABASE=HSF 56k Modem + +pci:v000014F1d00002093sv0000155Dsd00002F07* + ID_MODEL_FROM_DATABASE=Legend + +pci:v000014F1d00002143* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Cell Modem (Mob WorldW SmartDAA) + +pci:v000014F1d00002144* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Cell Modem (Mob WorldW SmartDAA) + +pci:v000014F1d00002145* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob WorldW SmartDAA) + +pci:v000014F1d00002146* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob WorldW SmartDAA) + +pci:v000014F1d00002163* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Cell Modem (Mob SmartDAA) + +pci:v000014F1d00002164* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Cell Modem (Mob SmartDAA) + +pci:v000014F1d00002165* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob SmartDAA) + +pci:v000014F1d00002166* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob SmartDAA) + +pci:v000014F1d00002343* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax CardBus Modem (Mob WorldW SmartDAA) + +pci:v000014F1d00002344* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice CardBus Modem (Mob WorldW SmartDAA) + +pci:v000014F1d00002345* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob WorldW SmartDAA) + +pci:v000014F1d00002346* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob WorldW SmartDAA) + +pci:v000014F1d00002363* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax CardBus Modem (Mob SmartDAA) + +pci:v000014F1d00002364* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice CardBus Modem (Mob SmartDAA) + +pci:v000014F1d00002365* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob SmartDAA) + +pci:v000014F1d00002366* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob SmartDAA) + +pci:v000014F1d00002443* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (Mob WorldW SmartDAA) + +pci:v000014F1d00002443sv0000104Dsd00008075* + ID_MODEL_FROM_DATABASE=Modem + +pci:v000014F1d00002443sv0000104Dsd00008083* + ID_MODEL_FROM_DATABASE=Modem + +pci:v000014F1d00002443sv0000104Dsd00008097* + ID_MODEL_FROM_DATABASE=Modem + +pci:v000014F1d00002444* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem (Mob WorldW SmartDAA) + +pci:v000014F1d00002445* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob WorldW SmartDAA) + +pci:v000014F1d00002446* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (Mob WorldW SmartDAA) + +pci:v000014F1d00002463* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem (Mob SmartDAA) + +pci:v000014F1d00002464* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem (Mob SmartDAA) + +pci:v000014F1d00002465* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob SmartDAA) + +pci:v000014F1d00002466* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (Mob SmartDAA) + +pci:v000014F1d00002F00* + ID_MODEL_FROM_DATABASE=HSF 56k HSFi Modem + +pci:v000014F1d00002F00sv000013E0sd00008D84* + ID_MODEL_FROM_DATABASE=IBM HSFi V.90 + +pci:v000014F1d00002F00sv000013E0sd00008D85* + ID_MODEL_FROM_DATABASE=Compaq Stinger + +pci:v000014F1d00002F00sv000014F1sd00002004* + ID_MODEL_FROM_DATABASE=Dynalink 56PMi + +pci:v000014F1d00002F02* + ID_MODEL_FROM_DATABASE=HSF 56k HSFi Data/Fax + +pci:v000014F1d00002F11* + ID_MODEL_FROM_DATABASE=HSF 56k HSFi Modem + +pci:v000014F1d00002F20* + ID_MODEL_FROM_DATABASE=HSF 56k Data/Fax Modem + +pci:v000014F1d00002F20sv000014F1sd0000200C* + ID_MODEL_FROM_DATABASE=Soft Data Fax Modem with SmartCP + +pci:v000014F1d00002F20sv000014F1sd0000200F* + ID_MODEL_FROM_DATABASE=Dimension 3000 + +pci:v000014F1d00002F30* + ID_MODEL_FROM_DATABASE=SoftV92 SpeakerPhone SoftRing Modem with SmartSP + +pci:v000014F1d00002F30sv000014F1sd00002014* + ID_MODEL_FROM_DATABASE=Devolo MikroLink 56K Modem PCI + +pci:v000014F1d00002F50* + ID_MODEL_FROM_DATABASE=Conexant SoftK56 Data/Fax Modem + +pci:v000014F1d00005B7A* + ID_MODEL_FROM_DATABASE=CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder + +pci:v000014F1d00005B7Asv00000070sd00007444* + ID_MODEL_FROM_DATABASE=WinTV HVR-1600 + +pci:v000014F1d00005B7Asv0000107Dsd00006F34* + ID_MODEL_FROM_DATABASE=WinFast DVR3100 H + +pci:v000014F1d00005B7Asv00005854sd00003343* + ID_MODEL_FROM_DATABASE=GoTView PCI DVD3 Hybrid + +pci:v000014F1d00008200* + ID_MODEL_FROM_DATABASE=CX25850 + +pci:v000014F1d00008234* + ID_MODEL_FROM_DATABASE=RS8234 ATM SAR Controller [ServiceSAR Plus] + +pci:v000014F1d00008800* + ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder + +pci:v000014F1d00008800sv00000070sd00002801* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV 28xxx (Roslyn) models + +pci:v000014F1d00008800sv00000070sd00003400* + ID_MODEL_FROM_DATABASE=WinTV 34604 + +pci:v000014F1d00008800sv00000070sd00003401* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV 34xxx models + +pci:v000014F1d00008800sv00000070sd00006902* + ID_MODEL_FROM_DATABASE=WinTV HVR-4000-HD + +pci:v000014F1d00008800sv00000070sd00007801* + ID_MODEL_FROM_DATABASE=WinTV HVR-1800 MCE + +pci:v000014F1d00008800sv00000070sd00009001* + ID_MODEL_FROM_DATABASE=Nova-T DVB-T + +pci:v000014F1d00008800sv00000070sd00009200* + ID_MODEL_FROM_DATABASE=Nova-SE2 DVB-S + +pci:v000014F1d00008800sv00000070sd00009202* + ID_MODEL_FROM_DATABASE=Nova-S-Plus DVB-S + +pci:v000014F1d00008800sv00000070sd00009402* + ID_MODEL_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid + +pci:v000014F1d00008800sv00000070sd00009600* + ID_MODEL_FROM_DATABASE=WinTV 88x Video + +pci:v000014F1d00008800sv00000070sd00009802* + ID_MODEL_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid (Low Profile) + +pci:v000014F1d00008800sv00001002sd000000F8* + ID_MODEL_FROM_DATABASE=ATI TV Wonder Pro + +pci:v000014F1d00008800sv00001002sd0000A101* + ID_MODEL_FROM_DATABASE=HDTV Wonder + +pci:v000014F1d00008800sv00001043sd00004823* + ID_MODEL_FROM_DATABASE=ASUS PVR-416 + +pci:v000014F1d00008800sv0000107Dsd00006611* + ID_MODEL_FROM_DATABASE=Winfast TV 2000XP Expert + +pci:v000014F1d00008800sv0000107Dsd00006613* + ID_MODEL_FROM_DATABASE=Leadtek Winfast 2000XP Expert + +pci:v000014F1d00008800sv0000107Dsd00006620* + ID_MODEL_FROM_DATABASE=Leadtek Winfast DV2000 + +pci:v000014F1d00008800sv0000107Dsd0000663C* + ID_MODEL_FROM_DATABASE=Leadtek PVR 2000 + +pci:v000014F1d00008800sv0000107Dsd0000665F* + ID_MODEL_FROM_DATABASE=WinFast DTV1000-T + +pci:v000014F1d00008800sv000010FCsd0000D003* + ID_MODEL_FROM_DATABASE=IODATA GV-VCP3/PCI + +pci:v000014F1d00008800sv000010FCsd0000D035* + ID_MODEL_FROM_DATABASE=IODATA GV/BCTV7E + +pci:v000014F1d00008800sv00001421sd00000334* + ID_MODEL_FROM_DATABASE=Instant TV DVB-T PCI + +pci:v000014F1d00008800sv00001461sd0000000A* + ID_MODEL_FROM_DATABASE=AVerTV 303 (M126) + +pci:v000014F1d00008800sv00001461sd0000000B* + ID_MODEL_FROM_DATABASE=AverTV Studio 303 (M126) + +pci:v000014F1d00008800sv00001461sd00008011* + ID_MODEL_FROM_DATABASE=UltraTV Media Center PCI 550 + +pci:v000014F1d00008800sv00001462sd00008606* + ID_MODEL_FROM_DATABASE=MSI TV-@nywhere Master + +pci:v000014F1d00008800sv000014C7sd00000107* + ID_MODEL_FROM_DATABASE=GDI Black Gold + +pci:v000014F1d00008800sv000014F1sd00000187* + ID_MODEL_FROM_DATABASE=Conexant DVB-T reference design + +pci:v000014F1d00008800sv000014F1sd00000342* + ID_MODEL_FROM_DATABASE=Digital-Logic MICROSPACE Entertainment Center (MEC) + +pci:v000014F1d00008800sv0000153Bsd00001166* + ID_MODEL_FROM_DATABASE=Cinergy 1400 DVB-T + +pci:v000014F1d00008800sv00001540sd00002580* + ID_MODEL_FROM_DATABASE=Provideo PV259 + +pci:v000014F1d00008800sv00001554sd00004811* + ID_MODEL_FROM_DATABASE=PixelView + +pci:v000014F1d00008800sv00001554sd00004813* + ID_MODEL_FROM_DATABASE=Club 3D ZAP1000 MCE Edition + +pci:v000014F1d00008800sv000017DEsd000008A1* + ID_MODEL_FROM_DATABASE=KWorld/VStream XPert DVB-T with cx22702 + +pci:v000014F1d00008800sv000017DEsd000008A6* + ID_MODEL_FROM_DATABASE=KWorld/VStream XPert DVB-T + +pci:v000014F1d00008800sv000017DEsd000008B2* + ID_MODEL_FROM_DATABASE=KWorld DVB-S 100 + +pci:v000014F1d00008800sv000017DEsd0000A8A6* + ID_MODEL_FROM_DATABASE=digitalnow DNTV Live! DVB-T + +pci:v000014F1d00008800sv00001822sd00000025* + ID_MODEL_FROM_DATABASE=digitalnow DNTV Live! DVB-T Pro + +pci:v000014F1d00008800sv0000185Bsd0000E000* + ID_MODEL_FROM_DATABASE=VideoMate X500 + +pci:v000014F1d00008800sv000018ACsd0000D500* + ID_MODEL_FROM_DATABASE=FusionHDTV 5 Gold + +pci:v000014F1d00008800sv000018ACsd0000D810* + ID_MODEL_FROM_DATABASE=FusionHDTV 3 Gold-Q + +pci:v000014F1d00008800sv000018ACsd0000D820* + ID_MODEL_FROM_DATABASE=FusionHDTV 3 Gold-T + +pci:v000014F1d00008800sv000018ACsd0000DB00* + ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T1 + +pci:v000014F1d00008800sv000018ACsd0000DB11* + ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T Plus + +pci:v000014F1d00008800sv000018ACsd0000DB50* + ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T Dual Digital + +pci:v000014F1d00008800sv00005654sd00002388* + ID_MODEL_FROM_DATABASE=GoTView PCI Hybrid TV Tuner Card + +pci:v000014F1d00008800sv00007063sd00003000* + ID_MODEL_FROM_DATABASE=pcHDTV HD3000 HDTV + +pci:v000014F1d00008800sv00007063sd00005500* + ID_MODEL_FROM_DATABASE=pcHDTV HD-5500 + +pci:v000014F1d00008801* + ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] + +pci:v000014F1d00008801sv00000070sd00002801* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV 28xxx (Roslyn) models + +pci:v000014F1d00008801sv0000185Bsd0000E000* + ID_MODEL_FROM_DATABASE=VideoMate X500 + +pci:v000014F1d00008801sv00005654sd00002388* + ID_MODEL_FROM_DATABASE=GoTView PCI Hybrid Audio AVStream Device + +pci:v000014F1d00008801sv00007063sd00005500* + ID_MODEL_FROM_DATABASE=pcHDTV HD-5500 + +pci:v000014F1d00008802* + ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] + +pci:v000014F1d00008802sv00000070sd00002801* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV 28xxx (Roslyn) models + +pci:v000014F1d00008802sv00000070sd00006902* + ID_MODEL_FROM_DATABASE=WinTV HVR-4000-HD + +pci:v000014F1d00008802sv00000070sd00009002* + ID_MODEL_FROM_DATABASE=Nova-T DVB-T Model 909 + +pci:v000014F1d00008802sv00000070sd00009402* + ID_MODEL_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid + +pci:v000014F1d00008802sv00000070sd00009600* + ID_MODEL_FROM_DATABASE=WinTV 88x MPEG Encoder + +pci:v000014F1d00008802sv00001043sd00004823* + ID_MODEL_FROM_DATABASE=ASUS PVR-416 + +pci:v000014F1d00008802sv0000107Dsd0000663C* + ID_MODEL_FROM_DATABASE=Leadtek PVR 2000 + +pci:v000014F1d00008802sv0000107Dsd0000665F* + ID_MODEL_FROM_DATABASE=WinFast DTV1000-T + +pci:v000014F1d00008802sv000014F1sd00000187* + ID_MODEL_FROM_DATABASE=Conexant DVB-T reference design + +pci:v000014F1d00008802sv000017DEsd000008A1* + ID_MODEL_FROM_DATABASE=XPert DVB-T PCI BDA DVBT 23880 Transport Stream Capture + +pci:v000014F1d00008802sv000017DEsd000008A6* + ID_MODEL_FROM_DATABASE=KWorld/VStream XPert DVB-T + +pci:v000014F1d00008802sv000018ACsd0000D500* + ID_MODEL_FROM_DATABASE=DViCO FusionHDTV5 Gold + +pci:v000014F1d00008802sv000018ACsd0000D810* + ID_MODEL_FROM_DATABASE=DViCO FusionHDTV3 Gold-Q + +pci:v000014F1d00008802sv000018ACsd0000D820* + ID_MODEL_FROM_DATABASE=DViCO FusionHDTV3 Gold-T + +pci:v000014F1d00008802sv000018ACsd0000DB00* + ID_MODEL_FROM_DATABASE=DVICO FusionHDTV DVB-T1 + +pci:v000014F1d00008802sv000018ACsd0000DB10* + ID_MODEL_FROM_DATABASE=DVICO FusionHDTV DVB-T Plus + +pci:v000014F1d00008802sv00005654sd00002388* + ID_MODEL_FROM_DATABASE=GoTView PCI Hybrid TS Capture Device + +pci:v000014F1d00008802sv00007063sd00003000* + ID_MODEL_FROM_DATABASE=pcHDTV HD3000 HDTV + +pci:v000014F1d00008802sv00007063sd00005500* + ID_MODEL_FROM_DATABASE=pcHDTV HD-5500 + +pci:v000014F1d00008804* + ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [IR Port] + +pci:v000014F1d00008804sv00000070sd00006902* + ID_MODEL_FROM_DATABASE=WinTV HVR-4000-HD + +pci:v000014F1d00008804sv00000070sd00009002* + ID_MODEL_FROM_DATABASE=Nova-T DVB-T Model 909 + +pci:v000014F1d00008804sv00000070sd00009402* + ID_MODEL_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid + +pci:v000014F1d00008804sv00007063sd00005500* + ID_MODEL_FROM_DATABASE=pcHDTV HD-5500 + +pci:v000014F1d00008811* + ID_MODEL_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] + +pci:v000014F1d00008811sv00000070sd00003400* + ID_MODEL_FROM_DATABASE=WinTV 34604 + +pci:v000014F1d00008811sv00000070sd00003401* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV 34xxx models + +pci:v000014F1d00008811sv00000070sd00006902* + ID_MODEL_FROM_DATABASE=WinTV HVR-4000-HD + +pci:v000014F1d00008811sv00000070sd00009402* + ID_MODEL_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid + +pci:v000014F1d00008811sv00000070sd00009600* + ID_MODEL_FROM_DATABASE=WinTV 88x Audio + +pci:v000014F1d00008811sv00001462sd00008606* + ID_MODEL_FROM_DATABASE=MSI TV-@nywhere Master + +pci:v000014F1d00008811sv000018ACsd0000D500* + ID_MODEL_FROM_DATABASE=DViCO FusionHDTV5 Gold + +pci:v000014F1d00008811sv000018ACsd0000D810* + ID_MODEL_FROM_DATABASE=DViCO FusionHDTV3 Gold-Q + +pci:v000014F1d00008811sv000018ACsd0000D820* + ID_MODEL_FROM_DATABASE=DViCO FusionHDTV3 Gold-T + +pci:v000014F1d00008811sv000018ACsd0000DB00* + ID_MODEL_FROM_DATABASE=DVICO FusionHDTV DVB-T1 + +pci:v000014F1d00008811sv00005654sd00002388* + ID_MODEL_FROM_DATABASE=GoTView PCI Hybrid Audio Capture Device + +pci:v000014F1d00008852* + ID_MODEL_FROM_DATABASE=CX23885 PCI Video and Audio Decoder + +pci:v000014F1d00008852sv00000070sd00008010* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV HVR-1400 ExpressCard + +pci:v000014F1d00008852sv0000107Dsd00006F22* + ID_MODEL_FROM_DATABASE=WinFast PxTV1200 + +pci:v000014F1d00008852sv00001461sd0000C039* + ID_MODEL_FROM_DATABASE=AVerTV Hybrid Express (A577) + +pci:v000014F1d00008852sv0000153Bsd0000117E* + ID_MODEL_FROM_DATABASE=Cinergy T PCIe Dual + +pci:v000014F1d00008852sv000018ACsd0000DB78* + ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T Dual Express + +pci:v000014F1d00008880* + ID_MODEL_FROM_DATABASE=CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb + +pci:v000014F1d00008880sv00000070sd0000C108* + ID_MODEL_FROM_DATABASE=WinTV-HVR-4400-HD model 1278 + +pci:v000014F1d00008880sv00005654sd00002389* + ID_MODEL_FROM_DATABASE=GoTView X5 DVD Hybrid PCI-E + +pci:v000014F1d00008880sv00005654sd00002390* + ID_MODEL_FROM_DATABASE=GoTView X5 3D HYBRID PCI-E + +pci:v000014F2* + ID_VENDOR_FROM_DATABASE=MOBILITY Electronics + +pci:v000014F2d00000120* + ID_MODEL_FROM_DATABASE=EV1000 bridge + +pci:v000014F2d00000121* + ID_MODEL_FROM_DATABASE=EV1000 Parallel port + +pci:v000014F2d00000122* + ID_MODEL_FROM_DATABASE=EV1000 Serial port + +pci:v000014F2d00000123* + ID_MODEL_FROM_DATABASE=EV1000 Keyboard controller + +pci:v000014F2d00000124* + ID_MODEL_FROM_DATABASE=EV1000 Mouse controller + +pci:v000014F3* + ID_VENDOR_FROM_DATABASE=BroadLogic + +pci:v000014F3d00002030* + ID_MODEL_FROM_DATABASE=2030 DVB-S Satellite Receiver + +pci:v000014F3d00002035* + ID_MODEL_FROM_DATABASE=2035 DVB-S Satellite Receiver + +pci:v000014F3d00002050* + ID_MODEL_FROM_DATABASE=2050 DVB-T Terrestrial (Cable) Receiver + +pci:v000014F3d00002060* + ID_MODEL_FROM_DATABASE=2060 ATSC Terrestrial (Cable) Receiver + +pci:v000014F4* + ID_VENDOR_FROM_DATABASE=TOKYO Electronic Industry CO Ltd + +pci:v000014F5* + ID_VENDOR_FROM_DATABASE=SOPAC Ltd + +pci:v000014F6* + ID_VENDOR_FROM_DATABASE=COYOTE Technologies LLC + +pci:v000014F7* + ID_VENDOR_FROM_DATABASE=WOLF Technology Inc + +pci:v000014F8* + ID_VENDOR_FROM_DATABASE=AUDIOCODES Inc + +pci:v000014F8d00002077* + ID_MODEL_FROM_DATABASE=TP-240 dual span E1 VoIP PCI card + +pci:v000014F9* + ID_VENDOR_FROM_DATABASE=AG COMMUNICATIONS + +pci:v000014FA* + ID_VENDOR_FROM_DATABASE=WANDEL & GOLTERMANN + +pci:v000014FB* + ID_VENDOR_FROM_DATABASE=TRANSAS MARINE (UK) Ltd + +pci:v000014FC* + ID_VENDOR_FROM_DATABASE=Quadrics Ltd + +pci:v000014FCd00000000* + ID_MODEL_FROM_DATABASE=QsNet Elan3 Network Adapter + +pci:v000014FCd00000001* + ID_MODEL_FROM_DATABASE=QsNetII Elan4 Network Adapter + +pci:v000014FCd00000002* + ID_MODEL_FROM_DATABASE=QsNetIII Elan5 Network Adapter + +pci:v000014FD* + ID_VENDOR_FROM_DATABASE=JAPAN Computer Industry Inc + +pci:v000014FE* + ID_VENDOR_FROM_DATABASE=ARCHTEK TELECOM Corp + +pci:v000014FF* + ID_VENDOR_FROM_DATABASE=TWINHEAD INTERNATIONAL Corp + +pci:v00001500* + ID_VENDOR_FROM_DATABASE=DELTA Electronics, Inc + +pci:v00001500d00001360* + ID_MODEL_FROM_DATABASE=RTL81xx RealTek Ethernet + +pci:v00001501* + ID_VENDOR_FROM_DATABASE=BANKSOFT CANADA Ltd + +pci:v00001502* + ID_VENDOR_FROM_DATABASE=MITSUBISHI ELECTRIC LOGISTICS SUPPORT Co Ltd + +pci:v00001503* + ID_VENDOR_FROM_DATABASE=KAWASAKI LSI USA Inc + +pci:v00001504* + ID_VENDOR_FROM_DATABASE=KAISER Electronics + +pci:v00001505* + ID_VENDOR_FROM_DATABASE=ITA INGENIEURBURO FUR TESTAUFGABEN GmbH + +pci:v00001506* + ID_VENDOR_FROM_DATABASE=CHAMELEON Systems Inc + +pci:v00001507* + ID_VENDOR_FROM_DATABASE=Motorola ?? / HTEC + +pci:v00001507d00000001* + ID_MODEL_FROM_DATABASE=MPC105 [Eagle] + +pci:v00001507d00000002* + ID_MODEL_FROM_DATABASE=MPC106 [Grackle] + +pci:v00001507d00000003* + ID_MODEL_FROM_DATABASE=MPC8240 [Kahlua] + +pci:v00001507d00000100* + ID_MODEL_FROM_DATABASE=MC145575 [HFC-PCI] + +pci:v00001507d00000431* + ID_MODEL_FROM_DATABASE=KTI829c 100VG + +pci:v00001507d00004801* + ID_MODEL_FROM_DATABASE=Raven + +pci:v00001507d00004802* + ID_MODEL_FROM_DATABASE=Falcon + +pci:v00001507d00004803* + ID_MODEL_FROM_DATABASE=Hawk + +pci:v00001507d00004806* + ID_MODEL_FROM_DATABASE=CPX8216 + +pci:v00001508* + ID_VENDOR_FROM_DATABASE=HONDA CONNECTORS/MHOTRONICS Inc + +pci:v00001509* + ID_VENDOR_FROM_DATABASE=FIRST INTERNATIONAL Computer Inc + +pci:v0000150A* + ID_VENDOR_FROM_DATABASE=FORVUS RESEARCH Inc + +pci:v0000150B* + ID_VENDOR_FROM_DATABASE=YAMASHITA Systems Corp + +pci:v0000150C* + ID_VENDOR_FROM_DATABASE=KYOPAL CO Ltd + +pci:v0000150D* + ID_VENDOR_FROM_DATABASE=WARPSPPED Inc + +pci:v0000150E* + ID_VENDOR_FROM_DATABASE=C-PORT Corp + +pci:v0000150F* + ID_VENDOR_FROM_DATABASE=INTEC GmbH + +pci:v00001510* + ID_VENDOR_FROM_DATABASE=BEHAVIOR TECH Computer Corp + +pci:v00001511* + ID_VENDOR_FROM_DATABASE=CENTILLIUM Technology Corp + +pci:v00001512* + ID_VENDOR_FROM_DATABASE=ROSUN Technologies Inc + +pci:v00001513* + ID_VENDOR_FROM_DATABASE=Raychem + +pci:v00001514* + ID_VENDOR_FROM_DATABASE=TFL LAN Inc + +pci:v00001515* + ID_VENDOR_FROM_DATABASE=Advent design + +pci:v00001516* + ID_VENDOR_FROM_DATABASE=MYSON Technology Inc + +pci:v00001516d00000800* + ID_MODEL_FROM_DATABASE=MTD-8xx 100/10M Ethernet PCI Adapter + +pci:v00001516d00000803* + ID_MODEL_FROM_DATABASE=SURECOM EP-320X-S 100/10M Ethernet PCI Adapter + +pci:v00001516d00000803sv00001320sd000010BD* + ID_MODEL_FROM_DATABASE=SURECOM EP-320X-S 100/10M Ethernet PCI Adapter + +pci:v00001516d00000891* + ID_MODEL_FROM_DATABASE=MTD-8xx 100/10M Ethernet PCI Adapter + +pci:v00001517* + ID_VENDOR_FROM_DATABASE=ECHOTEK Corp + +pci:v00001518* + ID_VENDOR_FROM_DATABASE=Kontron Modular Computers GmbH + +pci:v00001519* + ID_VENDOR_FROM_DATABASE=TELEFON AKTIEBOLAGET LM Ericsson + +pci:v0000151A* + ID_VENDOR_FROM_DATABASE=Globetek + +pci:v0000151Ad00001002* + ID_MODEL_FROM_DATABASE=PCI-1002 + +pci:v0000151Ad00001004* + ID_MODEL_FROM_DATABASE=PCI-1004 + +pci:v0000151Ad00001008* + ID_MODEL_FROM_DATABASE=PCI-1008 + +pci:v0000151B* + ID_VENDOR_FROM_DATABASE=COMBOX Ltd + +pci:v0000151C* + ID_VENDOR_FROM_DATABASE=DIGITAL AUDIO LABS Inc + +pci:v0000151Cd00000003* + ID_MODEL_FROM_DATABASE=Prodif T 2496 + +pci:v0000151Cd00004000* + ID_MODEL_FROM_DATABASE=Prodif 88 + +pci:v0000151D* + ID_VENDOR_FROM_DATABASE=Fujitsu Computer Products Of America + +pci:v0000151E* + ID_VENDOR_FROM_DATABASE=MATRIX Corp + +pci:v0000151F* + ID_VENDOR_FROM_DATABASE=TOPIC SEMICONDUCTOR Corp + +pci:v0000151Fd00000000* + ID_MODEL_FROM_DATABASE=TP560 Data/Fax/Voice 56k modem + +pci:v00001520* + ID_VENDOR_FROM_DATABASE=CHAPLET System Inc + +pci:v00001521* + ID_VENDOR_FROM_DATABASE=BELL Corp + +pci:v00001522* + ID_VENDOR_FROM_DATABASE=MainPine Ltd + +pci:v00001522d00000100* + ID_MODEL_FROM_DATABASE=PCI <-> IOBus Bridge + +pci:v00001522d00000100sv00001522sd00000200* + ID_MODEL_FROM_DATABASE=RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem + +pci:v00001522d00000100sv00001522sd00000300* + ID_MODEL_FROM_DATABASE=RockForceQUATRO 4 Port V.92/V.44 Data/Fax/Voice Modem + +pci:v00001522d00000100sv00001522sd00000400* + ID_MODEL_FROM_DATABASE=RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem + +pci:v00001522d00000100sv00001522sd00000500* + ID_MODEL_FROM_DATABASE=RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem + +pci:v00001522d00000100sv00001522sd00000600* + ID_MODEL_FROM_DATABASE=RockForce+ 2 Port V.90 Data/Fax/Voice Modem + +pci:v00001522d00000100sv00001522sd00000700* + ID_MODEL_FROM_DATABASE=RockForce+ 4 Port V.90 Data/Fax/Voice Modem + +pci:v00001522d00000100sv00001522sd00000800* + ID_MODEL_FROM_DATABASE=RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem + +pci:v00001522d00000100sv00001522sd00000C00* + ID_MODEL_FROM_DATABASE=RockForceDUO+ 2 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem + +pci:v00001522d00000100sv00001522sd00000D00* + ID_MODEL_FROM_DATABASE=RockForceQUATRO+ 4 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem + +pci:v00001522d00000100sv00001522sd00001D00* + ID_MODEL_FROM_DATABASE=RockForceOCTO+ 8 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem + +pci:v00001522d00000100sv00001522sd00002000* + ID_MODEL_FROM_DATABASE=RockForceD1 1 Port V.90 Data Modem + +pci:v00001522d00000100sv00001522sd00002100* + ID_MODEL_FROM_DATABASE=RockForceF1 1 Port V.34 Super-G3 Fax Modem + +pci:v00001522d00000100sv00001522sd00002200* + ID_MODEL_FROM_DATABASE=RockForceD2 2 Port V.90 Data Modem + +pci:v00001522d00000100sv00001522sd00002300* + ID_MODEL_FROM_DATABASE=RockForceF2 2 Port V.34 Super-G3 Fax Modem + +pci:v00001522d00000100sv00001522sd00002400* + ID_MODEL_FROM_DATABASE=RockForceD4 4 Port V.90 Data Modem + +pci:v00001522d00000100sv00001522sd00002500* + ID_MODEL_FROM_DATABASE=RockForceF4 4 Port V.34 Super-G3 Fax Modem + +pci:v00001522d00000100sv00001522sd00002600* + ID_MODEL_FROM_DATABASE=RockForceD8 8 Port V.90 Data Modem + +pci:v00001522d00000100sv00001522sd00002700* + ID_MODEL_FROM_DATABASE=RockForceF8 8 Port V.34 Super-G3 Fax Modem + +pci:v00001522d00000100sv00001522sd00003000* + ID_MODEL_FROM_DATABASE=IQ Express D1 - 1 Port V.92 Data Modem + +pci:v00001522d00000100sv00001522sd00003100* + ID_MODEL_FROM_DATABASE=IQ Express F1 - 1 Port V.34 Super-G3 Fax Modem + +pci:v00001522d00000100sv00001522sd00003200* + ID_MODEL_FROM_DATABASE=IQ Express D2 - 2 Port V.92 Data Modem + +pci:v00001522d00000100sv00001522sd00003300* + ID_MODEL_FROM_DATABASE=IQ Express F2 - 2 Port V.34 Super-G3 Fax Modem + +pci:v00001522d00000100sv00001522sd00003400* + ID_MODEL_FROM_DATABASE=IQ Express D4 - 4 Port V.92 Data Modem + +pci:v00001522d00000100sv00001522sd00003500* + ID_MODEL_FROM_DATABASE=IQ Express F4 - 4 Port V.34 Super-G3 Fax Modem + +pci:v00001522d00000100sv00001522sd00003C00* + ID_MODEL_FROM_DATABASE=IQ Express D8 - 8 Port V.92 Data Modem + +pci:v00001522d00000100sv00001522sd00003D00* + ID_MODEL_FROM_DATABASE=IQ Express F8 - 8 Port V.34 Super-G3 Fax Modem + +pci:v00001522d00004000* + ID_MODEL_FROM_DATABASE=PCI Express UART + +pci:v00001522d00004000sv00001522sd00004001* + ID_MODEL_FROM_DATABASE=IQ Express 1-port V.34 Super-G3 Fax + +pci:v00001522d00004000sv00001522sd00004002* + ID_MODEL_FROM_DATABASE=IQ Express 2-port V.34 Super-G3 Fax + +pci:v00001522d00004000sv00001522sd00004004* + ID_MODEL_FROM_DATABASE=IQ Express 4-port V.34 Super-G3 Fax + +pci:v00001522d00004000sv00001522sd00004008* + ID_MODEL_FROM_DATABASE=IQ Express 8-port V.34 Super-G3 Fax + +pci:v00001522d00004000sv00001522sd00004100* + ID_MODEL_FROM_DATABASE=IQ Express SideBand + +pci:v00001523* + ID_VENDOR_FROM_DATABASE=MUSIC Semiconductors + +pci:v00001524* + ID_VENDOR_FROM_DATABASE=ENE Technology Inc + +pci:v00001524d00000510* + ID_MODEL_FROM_DATABASE=CB710 Memory Card Reader Controller + +pci:v00001524d00000510sv0000103Csd0000006A* + ID_MODEL_FROM_DATABASE=NX9500 + +pci:v00001524d00000520* + ID_MODEL_FROM_DATABASE=FLASH memory: ENE Technology Inc: + +pci:v00001524d00000530* + ID_MODEL_FROM_DATABASE=ENE PCI Memory Stick Card Reader Controller + +pci:v00001524d00000550* + ID_MODEL_FROM_DATABASE=ENE PCI Secure Digital Card Reader Controller + +pci:v00001524d00000551* + ID_MODEL_FROM_DATABASE=SD/MMC Card Reader Controller + +pci:v00001524d00000610* + ID_MODEL_FROM_DATABASE=PCI Smart Card Reader Controller + +pci:v00001524d00000720* + ID_MODEL_FROM_DATABASE=Memory Stick Card Reader Controller + +pci:v00001524d00000730* + ID_MODEL_FROM_DATABASE=ENE PCI Memory Stick Card Reader Controller + +pci:v00001524d00000750* + ID_MODEL_FROM_DATABASE=ENE PCI SmartMedia / xD Card Reader Controller + +pci:v00001524d00000751* + ID_MODEL_FROM_DATABASE=ENE PCI Secure Digital / MMC Card Reader Controller + +pci:v00001524d00001211* + ID_MODEL_FROM_DATABASE=CB1211 Cardbus Controller + +pci:v00001524d00001225* + ID_MODEL_FROM_DATABASE=CB1225 Cardbus Controller + +pci:v00001524d00001410* + ID_MODEL_FROM_DATABASE=CB1410 Cardbus Controller + +pci:v00001524d00001410sv00001025sd0000003C* + ID_MODEL_FROM_DATABASE=CL50 motherboard + +pci:v00001524d00001410sv00001025sd0000005A* + ID_MODEL_FROM_DATABASE=TravelMate 290 + +pci:v00001524d00001411* + ID_MODEL_FROM_DATABASE=CB-710/2/4 Cardbus Controller + +pci:v00001524d00001411sv0000103Csd0000006A* + ID_MODEL_FROM_DATABASE=NX9500 + +pci:v00001524d00001412* + ID_MODEL_FROM_DATABASE=CB-712/4 Cardbus Controller + +pci:v00001524d00001420* + ID_MODEL_FROM_DATABASE=CB1420 Cardbus Controller + +pci:v00001524d00001421* + ID_MODEL_FROM_DATABASE=CB-720/2/4 Cardbus Controller + +pci:v00001524d00001422* + ID_MODEL_FROM_DATABASE=CB-722/4 Cardbus Controller + +pci:v00001525* + ID_VENDOR_FROM_DATABASE=IMPACT Technologies + +pci:v00001526* + ID_VENDOR_FROM_DATABASE=ISS, Inc + +pci:v00001527* + ID_VENDOR_FROM_DATABASE=SOLECTRON + +pci:v00001528* + ID_VENDOR_FROM_DATABASE=ACKSYS + +pci:v00001529* + ID_VENDOR_FROM_DATABASE=AMERICAN MICROSystems Inc + +pci:v0000152A* + ID_VENDOR_FROM_DATABASE=QUICKTURN DESIGN Systems + +pci:v0000152B* + ID_VENDOR_FROM_DATABASE=FLYTECH Technology CO Ltd + +pci:v0000152C* + ID_VENDOR_FROM_DATABASE=MACRAIGOR Systems LLC + +pci:v0000152D* + ID_VENDOR_FROM_DATABASE=QUANTA Computer Inc + +pci:v0000152E* + ID_VENDOR_FROM_DATABASE=MELEC Inc + +pci:v0000152F* + ID_VENDOR_FROM_DATABASE=PHILIPS - CRYPTO + +pci:v00001530* + ID_VENDOR_FROM_DATABASE=ACQIS Technology Inc + +pci:v00001531* + ID_VENDOR_FROM_DATABASE=CHRYON Corp + +pci:v00001532* + ID_VENDOR_FROM_DATABASE=ECHELON Corp + +pci:v00001532d00000020* + ID_MODEL_FROM_DATABASE=LonWorks PCLTA-20 PCI LonTalk Adapter + +pci:v00001533* + ID_VENDOR_FROM_DATABASE=BALTIMORE + +pci:v00001534* + ID_VENDOR_FROM_DATABASE=ROAD Corp + +pci:v00001535* + ID_VENDOR_FROM_DATABASE=EVERGREEN Technologies Inc + +pci:v00001536* + ID_VENDOR_FROM_DATABASE=ACTIS Computer + +pci:v00001537* + ID_VENDOR_FROM_DATABASE=DATALEX COMMUNCATIONS + +pci:v00001538* + ID_VENDOR_FROM_DATABASE=ARALION Inc + +pci:v00001538d00000303* + ID_MODEL_FROM_DATABASE=ARS106S Ultra ATA 133/100/66 Host Controller + +pci:v00001539* + ID_VENDOR_FROM_DATABASE=ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A. + +pci:v0000153A* + ID_VENDOR_FROM_DATABASE=ONO SOKKI + +pci:v0000153B* + ID_VENDOR_FROM_DATABASE=TERRATEC Electronic GmbH + +pci:v0000153Bd00001144* + ID_MODEL_FROM_DATABASE=Aureon 5.1 + +pci:v0000153Bd00001147* + ID_MODEL_FROM_DATABASE=Aureon 5.1 Sky + +pci:v0000153Bd00001158* + ID_MODEL_FROM_DATABASE=Philips Semiconductors SAA7134 (rev 01) [Terratec Cinergy 600 TV] + +pci:v0000153C* + ID_VENDOR_FROM_DATABASE=ANTAL Electronic + +pci:v0000153D* + ID_VENDOR_FROM_DATABASE=FILANET Corp + +pci:v0000153E* + ID_VENDOR_FROM_DATABASE=TECHWELL Inc + +pci:v0000153F* + ID_VENDOR_FROM_DATABASE=MIPS Technologies, Inc. + +pci:v0000153Fd00000001* + ID_MODEL_FROM_DATABASE=SOC-it 101 System Controller + +pci:v00001540* + ID_VENDOR_FROM_DATABASE=PROVIDEO MULTIMEDIA Co Ltd + +pci:v00001541* + ID_VENDOR_FROM_DATABASE=MACHONE Communications + +pci:v00001542* + ID_VENDOR_FROM_DATABASE=Concurrent Computer Corporation + +pci:v00001542d00009260* + ID_MODEL_FROM_DATABASE=RCIM-II Real-Time Clock & Interrupt Module + +pci:v00001543* + ID_VENDOR_FROM_DATABASE=SILICON Laboratories + +pci:v00001543d00003052* + ID_MODEL_FROM_DATABASE=Intel 537 [Winmodem] + +pci:v00001543d00004C22* + ID_MODEL_FROM_DATABASE=Si3036 MC'97 DAA + +pci:v00001544* + ID_VENDOR_FROM_DATABASE=DCM DATA Systems + +pci:v00001545* + ID_VENDOR_FROM_DATABASE=VISIONTEK + +pci:v00001546* + ID_VENDOR_FROM_DATABASE=IOI Technology Corp + +pci:v00001547* + ID_VENDOR_FROM_DATABASE=MITUTOYO Corp + +pci:v00001548* + ID_VENDOR_FROM_DATABASE=JET PROPULSION Laboratory + +pci:v00001549* + ID_VENDOR_FROM_DATABASE=INTERCONNECT Systems Solutions + +pci:v0000154A* + ID_VENDOR_FROM_DATABASE=MAX Technologies Inc + +pci:v0000154B* + ID_VENDOR_FROM_DATABASE=COMPUTEX Co Ltd + +pci:v0000154C* + ID_VENDOR_FROM_DATABASE=VISUAL Technology Inc + +pci:v0000154D* + ID_VENDOR_FROM_DATABASE=PAN INTERNATIONAL Industrial Corp + +pci:v0000154E* + ID_VENDOR_FROM_DATABASE=SERVOTEST Ltd + +pci:v0000154F* + ID_VENDOR_FROM_DATABASE=STRATABEAM Technology + +pci:v00001550* + ID_VENDOR_FROM_DATABASE=OPEN NETWORK Co Ltd + +pci:v00001551* + ID_VENDOR_FROM_DATABASE=SMART Electronic DEVELOPMENT GmBH + +pci:v00001552* + ID_VENDOR_FROM_DATABASE=RACAL AIRTECH Ltd + +pci:v00001553* + ID_VENDOR_FROM_DATABASE=CHICONY Electronics Co Ltd + +pci:v00001554* + ID_VENDOR_FROM_DATABASE=PROLINK Microsystems Corp + +pci:v00001555* + ID_VENDOR_FROM_DATABASE=GESYTEC GmBH + +pci:v00001556* + ID_VENDOR_FROM_DATABASE=PLD APPLICATIONS + +pci:v00001557* + ID_VENDOR_FROM_DATABASE=MEDIASTAR Co Ltd + +pci:v00001558* + ID_VENDOR_FROM_DATABASE=CLEVO/KAPOK Computer + +pci:v00001559* + ID_VENDOR_FROM_DATABASE=SI LOGIC Ltd + +pci:v0000155A* + ID_VENDOR_FROM_DATABASE=INNOMEDIA Inc + +pci:v0000155B* + ID_VENDOR_FROM_DATABASE=PROTAC INTERNATIONAL Corp + +pci:v0000155C* + ID_VENDOR_FROM_DATABASE=Cemax-Icon Inc + +pci:v0000155D* + ID_VENDOR_FROM_DATABASE=Mac System Co Ltd + +pci:v0000155E* + ID_VENDOR_FROM_DATABASE=LP Elektronik GmbH + +pci:v0000155F* + ID_VENDOR_FROM_DATABASE=Perle Systems Ltd + +pci:v00001560* + ID_VENDOR_FROM_DATABASE=Terayon Communications Systems + +pci:v00001561* + ID_VENDOR_FROM_DATABASE=Viewgraphics Inc + +pci:v00001562* + ID_VENDOR_FROM_DATABASE=Symbol Technologies + +pci:v00001563* + ID_VENDOR_FROM_DATABASE=A-Trend Technology Co Ltd + +pci:v00001564* + ID_VENDOR_FROM_DATABASE=Yamakatsu Electronics Industry Co Ltd + +pci:v00001565* + ID_VENDOR_FROM_DATABASE=Biostar Microtech Int'l Corp + +pci:v00001566* + ID_VENDOR_FROM_DATABASE=Ardent Technologies Inc + +pci:v00001567* + ID_VENDOR_FROM_DATABASE=Jungsoft + +pci:v00001568* + ID_VENDOR_FROM_DATABASE=DDK Electronics Inc + +pci:v00001569* + ID_VENDOR_FROM_DATABASE=Palit Microsystems Inc. + +pci:v0000156A* + ID_VENDOR_FROM_DATABASE=Avtec Systems + +pci:v0000156B* + ID_VENDOR_FROM_DATABASE=2wire Inc + +pci:v0000156C* + ID_VENDOR_FROM_DATABASE=Vidac Electronics GmbH + +pci:v0000156D* + ID_VENDOR_FROM_DATABASE=Alpha-Top Corp + +pci:v0000156E* + ID_VENDOR_FROM_DATABASE=Alfa Inc + +pci:v0000156F* + ID_VENDOR_FROM_DATABASE=M-Systems Flash Disk Pioneers Ltd + +pci:v00001570* + ID_VENDOR_FROM_DATABASE=Lecroy Corp + +pci:v00001571* + ID_VENDOR_FROM_DATABASE=Contemporary Controls + +pci:v00001571d0000A001* + ID_MODEL_FROM_DATABASE=CCSI PCI20-485 ARCnet + +pci:v00001571d0000A002* + ID_MODEL_FROM_DATABASE=CCSI PCI20-485D ARCnet + +pci:v00001571d0000A003* + ID_MODEL_FROM_DATABASE=CCSI PCI20-485X ARCnet + +pci:v00001571d0000A004* + ID_MODEL_FROM_DATABASE=CCSI PCI20-CXB ARCnet + +pci:v00001571d0000A005* + ID_MODEL_FROM_DATABASE=CCSI PCI20-CXS ARCnet + +pci:v00001571d0000A006* + ID_MODEL_FROM_DATABASE=CCSI PCI20-FOG-SMA ARCnet + +pci:v00001571d0000A007* + ID_MODEL_FROM_DATABASE=CCSI PCI20-FOG-ST ARCnet + +pci:v00001571d0000A008* + ID_MODEL_FROM_DATABASE=CCSI PCI20-TB5 ARCnet + +pci:v00001571d0000A009* + ID_MODEL_FROM_DATABASE=CCSI PCI20-5-485 5Mbit ARCnet + +pci:v00001571d0000A00A* + ID_MODEL_FROM_DATABASE=CCSI PCI20-5-485D 5Mbit ARCnet + +pci:v00001571d0000A00B* + ID_MODEL_FROM_DATABASE=CCSI PCI20-5-485X 5Mbit ARCnet + +pci:v00001571d0000A00C* + ID_MODEL_FROM_DATABASE=CCSI PCI20-5-FOG-ST 5Mbit ARCnet + +pci:v00001571d0000A00D* + ID_MODEL_FROM_DATABASE=CCSI PCI20-5-FOG-SMA 5Mbit ARCnet + +pci:v00001571d0000A201* + ID_MODEL_FROM_DATABASE=CCSI PCI22-485 10Mbit ARCnet + +pci:v00001571d0000A202* + ID_MODEL_FROM_DATABASE=CCSI PCI22-485D 10Mbit ARCnet + +pci:v00001571d0000A203* + ID_MODEL_FROM_DATABASE=CCSI PCI22-485X 10Mbit ARCnet + +pci:v00001571d0000A204* + ID_MODEL_FROM_DATABASE=CCSI PCI22-CHB 10Mbit ARCnet + +pci:v00001571d0000A205* + ID_MODEL_FROM_DATABASE=CCSI PCI22-FOG_ST 10Mbit ARCnet + +pci:v00001571d0000A206* + ID_MODEL_FROM_DATABASE=CCSI PCI22-THB 10Mbit ARCnet + +pci:v00001572* + ID_VENDOR_FROM_DATABASE=Otis Elevator Company + +pci:v00001573* + ID_VENDOR_FROM_DATABASE=Lattice - Vantis + +pci:v00001574* + ID_VENDOR_FROM_DATABASE=Fairchild Semiconductor + +pci:v00001575* + ID_VENDOR_FROM_DATABASE=Voltaire Advanced Data Security Ltd + +pci:v00001576* + ID_VENDOR_FROM_DATABASE=Viewcast COM + +pci:v00001578* + ID_VENDOR_FROM_DATABASE=HITT + +pci:v00001578d00004D34* + ID_MODEL_FROM_DATABASE=VPMK4 [Video Processor Mk IV] + +pci:v00001578d00005615* + ID_MODEL_FROM_DATABASE=VPMK3 [Video Processor Mk III] + +pci:v00001579* + ID_VENDOR_FROM_DATABASE=Dual Technology Corp + +pci:v0000157A* + ID_VENDOR_FROM_DATABASE=Japan Elecronics Ind Inc + +pci:v0000157B* + ID_VENDOR_FROM_DATABASE=Star Multimedia Corp + +pci:v0000157C* + ID_VENDOR_FROM_DATABASE=Eurosoft (UK) + +pci:v0000157Cd00008001* + ID_MODEL_FROM_DATABASE=Fix2000 PCI Y2K Compliance Card + +pci:v0000157D* + ID_VENDOR_FROM_DATABASE=Gemflex Networks + +pci:v0000157E* + ID_VENDOR_FROM_DATABASE=Transition Networks + +pci:v0000157F* + ID_VENDOR_FROM_DATABASE=PX Instruments Technology Ltd + +pci:v00001580* + ID_VENDOR_FROM_DATABASE=Primex Aerospace Co + +pci:v00001581* + ID_VENDOR_FROM_DATABASE=SEH Computertechnik GmbH + +pci:v00001582* + ID_VENDOR_FROM_DATABASE=Cytec Corp + +pci:v00001583* + ID_VENDOR_FROM_DATABASE=Inet Technologies Inc + +pci:v00001584* + ID_VENDOR_FROM_DATABASE=Uniwill Computer Corp + +pci:v00001585* + ID_VENDOR_FROM_DATABASE=Logitron + +pci:v00001586* + ID_VENDOR_FROM_DATABASE=Lancast Inc + +pci:v00001587* + ID_VENDOR_FROM_DATABASE=Konica Corp + +pci:v00001588* + ID_VENDOR_FROM_DATABASE=Solidum Systems Corp + +pci:v00001589* + ID_VENDOR_FROM_DATABASE=Atlantek Microsystems Pty Ltd + +pci:v00001589d00000008* + ID_MODEL_FROM_DATABASE=Leutron Vision PicPortExpress CL + +pci:v00001589d00000009* + ID_MODEL_FROM_DATABASE=Leutron Vision PicPortExpress CL Stereo + +pci:v0000158A* + ID_VENDOR_FROM_DATABASE=Digalog Systems Inc + +pci:v0000158B* + ID_VENDOR_FROM_DATABASE=Allied Data Technologies + +pci:v0000158C* + ID_VENDOR_FROM_DATABASE=Hitachi Semiconductor & Devices Sales Co Ltd + +pci:v0000158D* + ID_VENDOR_FROM_DATABASE=Point Multimedia Systems + +pci:v0000158E* + ID_VENDOR_FROM_DATABASE=Lara Technology Inc + +pci:v0000158F* + ID_VENDOR_FROM_DATABASE=Ditect Coop + +pci:v00001590* + ID_VENDOR_FROM_DATABASE=Hewlett-Packard Company + +pci:v00001590d00000001* + ID_MODEL_FROM_DATABASE=Eagle Cluster Manager + +pci:v00001590d00000002* + ID_MODEL_FROM_DATABASE=Osprey Cluster Manager + +pci:v00001590d00000003* + ID_MODEL_FROM_DATABASE=Harrier Cluster Manager + +pci:v00001590d0000A01D* + ID_MODEL_FROM_DATABASE=FC044X Fibre Channel HBA + +pci:v00001591* + ID_VENDOR_FROM_DATABASE=ARN + +pci:v00001592* + ID_VENDOR_FROM_DATABASE=Syba Tech Ltd + +pci:v00001592d00000781* + ID_MODEL_FROM_DATABASE=Multi-IO Card + +pci:v00001592d00000782* + ID_MODEL_FROM_DATABASE=Parallel Port Card 2xEPP + +pci:v00001592d00000783* + ID_MODEL_FROM_DATABASE=Multi-IO Card + +pci:v00001592d00000785* + ID_MODEL_FROM_DATABASE=Multi-IO Card + +pci:v00001592d00000786* + ID_MODEL_FROM_DATABASE=Multi-IO Card + +pci:v00001592d00000787* + ID_MODEL_FROM_DATABASE=Multi-IO Card + +pci:v00001592d00000788* + ID_MODEL_FROM_DATABASE=Multi-IO Card + +pci:v00001592d0000078A* + ID_MODEL_FROM_DATABASE=Multi-IO Card + +pci:v00001593* + ID_VENDOR_FROM_DATABASE=Bops Inc + +pci:v00001594* + ID_VENDOR_FROM_DATABASE=Netgame Ltd + +pci:v00001595* + ID_VENDOR_FROM_DATABASE=Diva Systems Corp + +pci:v00001596* + ID_VENDOR_FROM_DATABASE=Folsom Research Inc + +pci:v00001597* + ID_VENDOR_FROM_DATABASE=Memec Design Services + +pci:v00001598* + ID_VENDOR_FROM_DATABASE=Granite Microsystems + +pci:v00001599* + ID_VENDOR_FROM_DATABASE=Delta Electronics Inc + +pci:v0000159A* + ID_VENDOR_FROM_DATABASE=General Instrument + +pci:v0000159B* + ID_VENDOR_FROM_DATABASE=Faraday Technology Corp + +pci:v0000159C* + ID_VENDOR_FROM_DATABASE=Stratus Computer Systems + +pci:v0000159D* + ID_VENDOR_FROM_DATABASE=Ningbo Harrison Electronics Co Ltd + +pci:v0000159E* + ID_VENDOR_FROM_DATABASE=A-Max Technology Co Ltd + +pci:v0000159F* + ID_VENDOR_FROM_DATABASE=Galea Network Security + +pci:v000015A0* + ID_VENDOR_FROM_DATABASE=Compumaster SRL + +pci:v000015A1* + ID_VENDOR_FROM_DATABASE=Geocast Network Systems + +pci:v000015A2* + ID_VENDOR_FROM_DATABASE=Catalyst Enterprises Inc + +pci:v000015A2d00000001* + ID_MODEL_FROM_DATABASE=TA700 PCI Bus Analyzer/Exerciser + +pci:v000015A3* + ID_VENDOR_FROM_DATABASE=Italtel + +pci:v000015A4* + ID_VENDOR_FROM_DATABASE=X-Net OY + +pci:v000015A5* + ID_VENDOR_FROM_DATABASE=Toyota Macs Inc + +pci:v000015A6* + ID_VENDOR_FROM_DATABASE=Sunlight Ultrasound Technologies Ltd + +pci:v000015A7* + ID_VENDOR_FROM_DATABASE=SSE Telecom Inc + +pci:v000015A8* + ID_VENDOR_FROM_DATABASE=Shanghai Communications Technologies Center + +pci:v000015AA* + ID_VENDOR_FROM_DATABASE=Moreton Bay + +pci:v000015AB* + ID_VENDOR_FROM_DATABASE=Bluesteel Networks Inc + +pci:v000015AC* + ID_VENDOR_FROM_DATABASE=North Atlantic Instruments + +pci:v000015AD* + ID_VENDOR_FROM_DATABASE=VMware + +pci:v000015ADd00000405* + ID_MODEL_FROM_DATABASE=SVGA II Adapter + +pci:v000015ADd00000710* + ID_MODEL_FROM_DATABASE=SVGA Adapter + +pci:v000015ADd00000720* + ID_MODEL_FROM_DATABASE=VMXNET Ethernet Controller + +pci:v000015ADd00000740* + ID_MODEL_FROM_DATABASE=Virtual Machine Communication Interface + +pci:v000015ADd00000770* + ID_MODEL_FROM_DATABASE=USB2 EHCI Controller + +pci:v000015ADd00000774* + ID_MODEL_FROM_DATABASE=USB1.1 UHCI Controller + +pci:v000015ADd00000778* + ID_MODEL_FROM_DATABASE=USB3 xHCI Controller + +pci:v000015ADd00000790* + ID_MODEL_FROM_DATABASE=PCI bridge + +pci:v000015ADd000007A0* + ID_MODEL_FROM_DATABASE=PCI Express Root Port + +pci:v000015ADd000007B0* + ID_MODEL_FROM_DATABASE=VMXNET3 Ethernet Controller + +pci:v000015ADd000007C0* + ID_MODEL_FROM_DATABASE=PVSCSI SCSI Controller + +pci:v000015ADd00000801* + ID_MODEL_FROM_DATABASE=Virtual Machine Interface + +pci:v000015ADd00000801sv000015ADsd00000800* + ID_MODEL_FROM_DATABASE=Hypervisor ROM Interface + +pci:v000015ADd00001977* + ID_MODEL_FROM_DATABASE=HD Audio Controller + +pci:v000015AE* + ID_VENDOR_FROM_DATABASE=Amersham Pharmacia Biotech + +pci:v000015B0* + ID_VENDOR_FROM_DATABASE=Zoltrix International Ltd + +pci:v000015B1* + ID_VENDOR_FROM_DATABASE=Source Technology Inc + +pci:v000015B2* + ID_VENDOR_FROM_DATABASE=Mosaid Technologies Inc + +pci:v000015B3* + ID_VENDOR_FROM_DATABASE=Mellanox Technologies + +pci:v000015B3d00000191* + ID_MODEL_FROM_DATABASE=MT25408 [ConnectX IB Flash Recovery] + +pci:v000015B3d000001F6* + ID_MODEL_FROM_DATABASE=MT27500 Family [ConnectX-3 Flash Recovery] + +pci:v000015B3d000001FF* + ID_MODEL_FROM_DATABASE=MT27600 Family [Connect-IB Flash Recovery] + +pci:v000015B3d00001002* + ID_MODEL_FROM_DATABASE=MT25400 Family [ConnectX-2 Virtual Function] + +pci:v000015B3d00001003* + ID_MODEL_FROM_DATABASE=MT27500 Family [ConnectX-3] + +pci:v000015B3d00001004* + ID_MODEL_FROM_DATABASE=MT27500 Family [ConnectX-3 Virtual Function] + +pci:v000015B3d00001005* + ID_MODEL_FROM_DATABASE=MT27510 Family + +pci:v000015B3d00001006* + ID_MODEL_FROM_DATABASE=MT27511 Family + +pci:v000015B3d00001007* + ID_MODEL_FROM_DATABASE=MT27520 Family [ConnectX-3 Pro] + +pci:v000015B3d00001008* + ID_MODEL_FROM_DATABASE=MT27520 Family [ConnectX-3 Pro Virtual Function] + +pci:v000015B3d00001009* + ID_MODEL_FROM_DATABASE=MT27530 Family + +pci:v000015B3d0000100A* + ID_MODEL_FROM_DATABASE=MT27531 Family + +pci:v000015B3d0000100B* + ID_MODEL_FROM_DATABASE=MT27540 Family + +pci:v000015B3d0000100C* + ID_MODEL_FROM_DATABASE=MT27541 Family + +pci:v000015B3d0000100D* + ID_MODEL_FROM_DATABASE=MT27550 Family + +pci:v000015B3d0000100E* + ID_MODEL_FROM_DATABASE=MT27551 Family + +pci:v000015B3d0000100F* + ID_MODEL_FROM_DATABASE=MT27560 Family + +pci:v000015B3d00001010* + ID_MODEL_FROM_DATABASE=MT27561 Family + +pci:v000015B3d00001011* + ID_MODEL_FROM_DATABASE=MT27600 [Connect-IB] + +pci:v000015B3d00001012* + ID_MODEL_FROM_DATABASE=MT27600 Family [Connect-IB Virtual Function] + +pci:v000015B3d00001013* + ID_MODEL_FROM_DATABASE=MT27620 Family + +pci:v000015B3d00001014* + ID_MODEL_FROM_DATABASE=MT27621 Family + +pci:v000015B3d00001015* + ID_MODEL_FROM_DATABASE=MT27630 Family + +pci:v000015B3d00001016* + ID_MODEL_FROM_DATABASE=MT27631 Family + +pci:v000015B3d00005274* + ID_MODEL_FROM_DATABASE=MT21108 InfiniBridge + +pci:v000015B3d00005A44* + ID_MODEL_FROM_DATABASE=MT23108 InfiniHost + +pci:v000015B3d00005A45* + ID_MODEL_FROM_DATABASE=MT23108 [Infinihost HCA Flash Recovery] + +pci:v000015B3d00005A46* + ID_MODEL_FROM_DATABASE=MT23108 PCI Bridge + +pci:v000015B3d00005E8C* + ID_MODEL_FROM_DATABASE=MT24204 [InfiniHost III Lx HCA] + +pci:v000015B3d00005E8D* + ID_MODEL_FROM_DATABASE=MT25204 [InfiniHost III Lx HCA Flash Recovery] + +pci:v000015B3d00006274* + ID_MODEL_FROM_DATABASE=MT25204 [InfiniHost III Lx HCA] + +pci:v000015B3d00006278* + ID_MODEL_FROM_DATABASE=MT25208 InfiniHost III Ex (Tavor compatibility mode) + +pci:v000015B3d00006279* + ID_MODEL_FROM_DATABASE=MT25208 [InfiniHost III Ex HCA Flash Recovery] + +pci:v000015B3d00006282* + ID_MODEL_FROM_DATABASE=MT25208 [InfiniHost III Ex] + +pci:v000015B3d00006340* + ID_MODEL_FROM_DATABASE=MT25408 [ConnectX VPI - IB SDR / 10GigE] + +pci:v000015B3d0000634A* + ID_MODEL_FROM_DATABASE=MT25418 [ConnectX VPI PCIe 2.0 2.5GT/s - IB DDR / 10GigE] + +pci:v000015B3d00006368* + ID_MODEL_FROM_DATABASE=MT25448 [ConnectX EN 10GigE, PCIe 2.0 2.5GT/s] + +pci:v000015B3d00006372* + ID_MODEL_FROM_DATABASE=MT25408 [ConnectX EN 10GigE 10GBaseT, PCIe 2.0 2.5GT/s] + +pci:v000015B3d00006732* + ID_MODEL_FROM_DATABASE=MT26418 [ConnectX VPI PCIe 2.0 5GT/s - IB DDR / 10GigE] + +pci:v000015B3d0000673C* + ID_MODEL_FROM_DATABASE=MT26428 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE] + +pci:v000015B3d00006746* + ID_MODEL_FROM_DATABASE=MT26438 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE Virtualization+] + +pci:v000015B3d00006746sv0000103Csd00001781* + ID_MODEL_FROM_DATABASE=NC543i 1-port 4x QDR IB/Flex-10 10Gb Adapter + +pci:v000015B3d00006746sv0000103Csd00003349* + ID_MODEL_FROM_DATABASE=NC543i 2-port 4xQDR IB/10Gb Adapter + +pci:v000015B3d00006750* + ID_MODEL_FROM_DATABASE=MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] + +pci:v000015B3d0000675A* + ID_MODEL_FROM_DATABASE=MT25408 [ConnectX EN 10GigE 10GBaseT, PCIe Gen2 5GT/s] + +pci:v000015B3d00006764* + ID_MODEL_FROM_DATABASE=MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s Virtualization+] + +pci:v000015B3d00006764sv0000103Csd00003313* + ID_MODEL_FROM_DATABASE=HP NC542m Dual Port Flex-10 10GbE BLc Adapter + +pci:v000015B3d0000676E* + ID_MODEL_FROM_DATABASE=MT26478 [ConnectX EN 40GigE, PCIe 2.0 5GT/s] + +pci:v000015B3d00006778* + ID_MODEL_FROM_DATABASE=MT26488 [ConnectX VPI PCIe 2.0 5GT/s - IB DDR / 10GigE Virtualization+] + +pci:v000015B4* + ID_VENDOR_FROM_DATABASE=CCI/TRIAD + +pci:v000015B5* + ID_VENDOR_FROM_DATABASE=Cimetrics Inc + +pci:v000015B6* + ID_VENDOR_FROM_DATABASE=Texas Memory Systems Inc + +pci:v000015B6d00000001* + ID_MODEL_FROM_DATABASE=XP15 DSP Accelerator + +pci:v000015B6d00000002* + ID_MODEL_FROM_DATABASE=XP30 DSP Accelerator + +pci:v000015B6d00000003* + ID_MODEL_FROM_DATABASE=XP00 Data Acquisition Device + +pci:v000015B6d00000004* + ID_MODEL_FROM_DATABASE=XP35 DSP Accelerator + +pci:v000015B6d00000007* + ID_MODEL_FROM_DATABASE=XP100 DSP Accelerator [XP100-T0] + +pci:v000015B6d00000008* + ID_MODEL_FROM_DATABASE=XP100 DSP Accelerator [XP100-T1] + +pci:v000015B6d00000009* + ID_MODEL_FROM_DATABASE=XP100 DSP Accelerator [XP100-E0] + +pci:v000015B6d0000000A* + ID_MODEL_FROM_DATABASE=XP100 DSP Accelerator [XP100-E1] + +pci:v000015B6d0000000E* + ID_MODEL_FROM_DATABASE=XP100 DSP Accelerator [XP100-0] + +pci:v000015B6d0000000F* + ID_MODEL_FROM_DATABASE=XP100 DSP Accelerator [XP100-1] + +pci:v000015B6d00000010* + ID_MODEL_FROM_DATABASE=XP100 DSP Accelerator [XP100-P0] + +pci:v000015B6d00000011* + ID_MODEL_FROM_DATABASE=XP100 DSP Accelerator [XP100-P1] + +pci:v000015B6d00000012* + ID_MODEL_FROM_DATABASE=XP100 DSP Accelerator [XP100-P2] + +pci:v000015B6d00000013* + ID_MODEL_FROM_DATABASE=XP100 DSP Accelerator [XP100-P3] + +pci:v000015B6d00000014* + ID_MODEL_FROM_DATABASE=RamSan Flash SSD + +pci:v000015B6d00000015* + ID_MODEL_FROM_DATABASE=ZBox + +pci:v000015B7* + ID_VENDOR_FROM_DATABASE=Sandisk Corp + +pci:v000015B8* + ID_VENDOR_FROM_DATABASE=ADDI-DATA GmbH + +pci:v000015B8d00001001* + ID_MODEL_FROM_DATABASE=APCI1516 SP controller (16 digi outputs) + +pci:v000015B8d00001003* + ID_MODEL_FROM_DATABASE=APCI1032 SP controller (32 digi inputs w/ opto coupler) + +pci:v000015B8d00001004* + ID_MODEL_FROM_DATABASE=APCI2032 SP controller (32 digi outputs) + +pci:v000015B8d00001005* + ID_MODEL_FROM_DATABASE=APCI2200 SP controller (8/16 digi outputs (relay)) + +pci:v000015B8d00001006* + ID_MODEL_FROM_DATABASE=APCI1564 SP controller (32 digi ins, 32 digi outs) + +pci:v000015B8d0000100A* + ID_MODEL_FROM_DATABASE=APCI1696 SP controller (96 TTL I/Os) + +pci:v000015B8d00003001* + ID_MODEL_FROM_DATABASE=APCI3501 SP controller (analog output board) + +pci:v000015B8d0000300F* + ID_MODEL_FROM_DATABASE=APCI3600 Noise and vibration measurement board + +pci:v000015B8d00007001* + ID_MODEL_FROM_DATABASE=APCI7420 2-port Serial Controller + +pci:v000015B8d00007002* + ID_MODEL_FROM_DATABASE=APCI7300 Serial Controller + +pci:v000015B9* + ID_VENDOR_FROM_DATABASE=Maestro Digital Communications + +pci:v000015BA* + ID_VENDOR_FROM_DATABASE=Impacct Technology Corp + +pci:v000015BB* + ID_VENDOR_FROM_DATABASE=Portwell Inc + +pci:v000015BC* + ID_VENDOR_FROM_DATABASE=Agilent Technologies + +pci:v000015BCd00000100* + ID_MODEL_FROM_DATABASE=HPFC-5600 Tachyon DX2+ FC + +pci:v000015BCd00000103* + ID_MODEL_FROM_DATABASE=QX4 PCI Express quad 4-gigabit Fibre Channel controller + +pci:v000015BCd00000105* + ID_MODEL_FROM_DATABASE=Celerity FC-42XS Fibre Channel Adapter + +pci:v000015BCd00000105sv0000117Csd00000022* + ID_MODEL_FROM_DATABASE=Celerity FC-42XS Fibre Channel Adapter + +pci:v000015BCd00001100* + ID_MODEL_FROM_DATABASE=E8001-66442 PCI Express CIC + +pci:v000015BCd00002922* + ID_MODEL_FROM_DATABASE=64 Bit, 133MHz PCI-X Exerciser & Protocol Checker + +pci:v000015BCd00002928* + ID_MODEL_FROM_DATABASE=64 Bit, 66MHz PCI Exerciser & Analyzer + +pci:v000015BCd00002929* + ID_MODEL_FROM_DATABASE=64 Bit, 133MHz PCI-X Analyzer & Exerciser + +pci:v000015BD* + ID_VENDOR_FROM_DATABASE=DFI Inc + +pci:v000015BE* + ID_VENDOR_FROM_DATABASE=Sola Electronics + +pci:v000015BF* + ID_VENDOR_FROM_DATABASE=High Tech Computer Corp (HTC) + +pci:v000015C0* + ID_VENDOR_FROM_DATABASE=BVM Ltd + +pci:v000015C1* + ID_VENDOR_FROM_DATABASE=Quantel + +pci:v000015C2* + ID_VENDOR_FROM_DATABASE=Newer Technology Inc + +pci:v000015C3* + ID_VENDOR_FROM_DATABASE=Taiwan Mycomp Co Ltd + +pci:v000015C4* + ID_VENDOR_FROM_DATABASE=EVSX Inc + +pci:v000015C5* + ID_VENDOR_FROM_DATABASE=Procomp Informatics Ltd + +pci:v000015C5d00008010* + ID_MODEL_FROM_DATABASE=1394b - 1394 Firewire 3-Port Host Adapter Card + +pci:v000015C6* + ID_VENDOR_FROM_DATABASE=Technical University of Budapest + +pci:v000015C7* + ID_VENDOR_FROM_DATABASE=Tateyama System Laboratory Co Ltd + +pci:v000015C7d00000349* + ID_MODEL_FROM_DATABASE=Tateyama C-PCI PLC/NC card Rev.01A + +pci:v000015C8* + ID_VENDOR_FROM_DATABASE=Penta Media Co Ltd + +pci:v000015C9* + ID_VENDOR_FROM_DATABASE=Serome Technology Inc + +pci:v000015CA* + ID_VENDOR_FROM_DATABASE=Bitboys OY + +pci:v000015CB* + ID_VENDOR_FROM_DATABASE=AG Electronics Ltd + +pci:v000015CC* + ID_VENDOR_FROM_DATABASE=Hotrail Inc + +pci:v000015CD* + ID_VENDOR_FROM_DATABASE=Dreamtech Co Ltd + +pci:v000015CE* + ID_VENDOR_FROM_DATABASE=Genrad Inc + +pci:v000015CF* + ID_VENDOR_FROM_DATABASE=Hilscher GmbH + +pci:v000015CFd00000000* + ID_MODEL_FROM_DATABASE=CIFX 50E-DP(M/S) + +pci:v000015D1* + ID_VENDOR_FROM_DATABASE=Infineon Technologies AG + +pci:v000015D2* + ID_VENDOR_FROM_DATABASE=FIC (First International Computer Inc) + +pci:v000015D3* + ID_VENDOR_FROM_DATABASE=NDS Technologies Israel Ltd + +pci:v000015D4* + ID_VENDOR_FROM_DATABASE=Iwill Corp + +pci:v000015D5* + ID_VENDOR_FROM_DATABASE=Tatung Co + +pci:v000015D6* + ID_VENDOR_FROM_DATABASE=Entridia Corp + +pci:v000015D7* + ID_VENDOR_FROM_DATABASE=Rockwell-Collins Inc + +pci:v000015D8* + ID_VENDOR_FROM_DATABASE=Cybernetics Technology Co Ltd + +pci:v000015D9* + ID_VENDOR_FROM_DATABASE=Super Micro Computer Inc + +pci:v000015DA* + ID_VENDOR_FROM_DATABASE=Cyberfirm Inc + +pci:v000015DB* + ID_VENDOR_FROM_DATABASE=Applied Computing Systems Inc + +pci:v000015DC* + ID_VENDOR_FROM_DATABASE=Litronic Inc + +pci:v000015DCd00000001* + ID_MODEL_FROM_DATABASE=Argus 300 PCI Cryptography Module + +pci:v000015DD* + ID_VENDOR_FROM_DATABASE=Sigmatel Inc + +pci:v000015DE* + ID_VENDOR_FROM_DATABASE=Malleable Technologies Inc + +pci:v000015DF* + ID_VENDOR_FROM_DATABASE=Infinilink Corp + +pci:v000015E0* + ID_VENDOR_FROM_DATABASE=Cacheflow Inc + +pci:v000015E1* + ID_VENDOR_FROM_DATABASE=Voice Technologies Group Inc + +pci:v000015E2* + ID_VENDOR_FROM_DATABASE=Quicknet Technologies Inc + +pci:v000015E2d00000500* + ID_MODEL_FROM_DATABASE=PhoneJack-PCI + +pci:v000015E3* + ID_VENDOR_FROM_DATABASE=Networth Technologies Inc + +pci:v000015E4* + ID_VENDOR_FROM_DATABASE=VSN Systemen BV + +pci:v000015E5* + ID_VENDOR_FROM_DATABASE=Valley technologies Inc + +pci:v000015E6* + ID_VENDOR_FROM_DATABASE=Agere Inc + +pci:v000015E7* + ID_VENDOR_FROM_DATABASE=Get Engineering Corp + +pci:v000015E8* + ID_VENDOR_FROM_DATABASE=National Datacomm Corp + +pci:v000015E8d00000130* + ID_MODEL_FROM_DATABASE=Wireless PCI Card + +pci:v000015E8d00000131* + ID_MODEL_FROM_DATABASE=NCP130A2 Wireless NIC + +pci:v000015E9* + ID_VENDOR_FROM_DATABASE=Pacific Digital Corp + +pci:v000015E9d00001841* + ID_MODEL_FROM_DATABASE=ADMA-100 DiscStaQ ATA Controller + +pci:v000015EA* + ID_VENDOR_FROM_DATABASE=Tokyo Denshi Sekei K.K. + +pci:v000015EB* + ID_VENDOR_FROM_DATABASE=DResearch Digital Media Systems GmbH + +pci:v000015EC* + ID_VENDOR_FROM_DATABASE=Beckhoff GmbH + +pci:v000015ECd00003101* + ID_MODEL_FROM_DATABASE=FC3101 Profibus DP 1 Channel PCI + +pci:v000015ECd00005102* + ID_MODEL_FROM_DATABASE=FC5102 + +pci:v000015ED* + ID_VENDOR_FROM_DATABASE=Macrolink Inc + +pci:v000015EE* + ID_VENDOR_FROM_DATABASE=In Win Development Inc + +pci:v000015EF* + ID_VENDOR_FROM_DATABASE=Intelligent Paradigm Inc + +pci:v000015F0* + ID_VENDOR_FROM_DATABASE=B-Tree Systems Inc + +pci:v000015F1* + ID_VENDOR_FROM_DATABASE=Times N Systems Inc + +pci:v000015F2* + ID_VENDOR_FROM_DATABASE=Diagnostic Instruments Inc + +pci:v000015F3* + ID_VENDOR_FROM_DATABASE=Digitmedia Corp + +pci:v000015F4* + ID_VENDOR_FROM_DATABASE=Valuesoft + +pci:v000015F5* + ID_VENDOR_FROM_DATABASE=Power Micro Research + +pci:v000015F6* + ID_VENDOR_FROM_DATABASE=Extreme Packet Device Inc + +pci:v000015F7* + ID_VENDOR_FROM_DATABASE=Banctec + +pci:v000015F8* + ID_VENDOR_FROM_DATABASE=Koga Electronics Co + +pci:v000015F9* + ID_VENDOR_FROM_DATABASE=Zenith Electronics Corp + +pci:v000015FA* + ID_VENDOR_FROM_DATABASE=J.P. Axzam Corp + +pci:v000015FB* + ID_VENDOR_FROM_DATABASE=Zilog Inc + +pci:v000015FC* + ID_VENDOR_FROM_DATABASE=Techsan Electronics Co Ltd + +pci:v000015FD* + ID_VENDOR_FROM_DATABASE=N-CUBED.NET + +pci:v000015FE* + ID_VENDOR_FROM_DATABASE=Kinpo Electronics Inc + +pci:v000015FF* + ID_VENDOR_FROM_DATABASE=Fastpoint Technologies Inc + +pci:v00001600* + ID_VENDOR_FROM_DATABASE=Northrop Grumman - Canada Ltd + +pci:v00001601* + ID_VENDOR_FROM_DATABASE=Tenta Technology + +pci:v00001602* + ID_VENDOR_FROM_DATABASE=Prosys-tec Inc + +pci:v00001603* + ID_VENDOR_FROM_DATABASE=Nokia Wireless Communications + +pci:v00001604* + ID_VENDOR_FROM_DATABASE=Central System Research Co Ltd + +pci:v00001605* + ID_VENDOR_FROM_DATABASE=Pairgain Technologies + +pci:v00001606* + ID_VENDOR_FROM_DATABASE=Europop AG + +pci:v00001607* + ID_VENDOR_FROM_DATABASE=Lava Semiconductor Manufacturing Inc + +pci:v00001608* + ID_VENDOR_FROM_DATABASE=Automated Wagering International + +pci:v00001609* + ID_VENDOR_FROM_DATABASE=Scimetric Instruments Inc + +pci:v00001612* + ID_VENDOR_FROM_DATABASE=Telesynergy Research Inc. + +pci:v00001618* + ID_VENDOR_FROM_DATABASE=Stone Ridge Technology + +pci:v00001618d00000001* + ID_MODEL_FROM_DATABASE=RDX 11 + +pci:v00001618d00000002* + ID_MODEL_FROM_DATABASE=HFT-01 + +pci:v00001618d00000400* + ID_MODEL_FROM_DATABASE=FarSync T2P (2 port X.21/V.35/V.24) + +pci:v00001618d00000440* + ID_MODEL_FROM_DATABASE=FarSync T4P (4 port X.21/V.35/V.24) + +pci:v00001618d00000610* + ID_MODEL_FROM_DATABASE=FarSync T1U (1 port X.21/V.35/V.24) + +pci:v00001618d00000620* + ID_MODEL_FROM_DATABASE=FarSync T2U (2 port X.21/V.35/V.24) + +pci:v00001618d00000640* + ID_MODEL_FROM_DATABASE=FarSync T4U (4 port X.21/V.35/V.24) + +pci:v00001618d00001610* + ID_MODEL_FROM_DATABASE=FarSync TE1 (T1,E1) + +pci:v00001618d00002610* + ID_MODEL_FROM_DATABASE=FarSync DSL-S1 (SHDSL) + +pci:v00001618d00003640* + ID_MODEL_FROM_DATABASE=FarSync T4E (4-port X.21/V.35/V.24) + +pci:v00001618d00004620* + ID_MODEL_FROM_DATABASE=FarSync T2Ue PCI Express (2-port X.21/V.35/V.24) + +pci:v00001618d00004640* + ID_MODEL_FROM_DATABASE=FarSync T4Ue PCI Express (4-port X.21/V.35/V.24) + +pci:v00001619* + ID_VENDOR_FROM_DATABASE=FarSite Communications Ltd + +pci:v00001619d00000400* + ID_MODEL_FROM_DATABASE=FarSync T2P (2 port X.21/V.35/V.24) + +pci:v00001619d00000440* + ID_MODEL_FROM_DATABASE=FarSync T4P (4 port X.21/V.35/V.24) + +pci:v00001619d00000610* + ID_MODEL_FROM_DATABASE=FarSync T1U (1 port X.21/V.35/V.24) + +pci:v00001619d00000620* + ID_MODEL_FROM_DATABASE=FarSync T2U (2 port X.21/V.35/V.24) + +pci:v00001619d00000640* + ID_MODEL_FROM_DATABASE=FarSync T4U (4 port X.21/V.35/V.24) + +pci:v00001619d00001610* + ID_MODEL_FROM_DATABASE=FarSync TE1 (T1,E1) + +pci:v00001619d00002610* + ID_MODEL_FROM_DATABASE=FarSync DSL-S1 (SHDSL) + +pci:v00001619d00003640* + ID_MODEL_FROM_DATABASE=FarSync T4E (4-port X.21/V.35/V.24) + +pci:v00001619d00004620* + ID_MODEL_FROM_DATABASE=FarSync T2Ue PCI Express (2-port X.21/V.35/V.24) + +pci:v00001619d00004640* + ID_MODEL_FROM_DATABASE=FarSync T4Ue PCI Express (4-port X.21/V.35/V.24) + +pci:v0000161F* + ID_VENDOR_FROM_DATABASE=Rioworks + +pci:v00001626* + ID_VENDOR_FROM_DATABASE=TDK Semiconductor Corp. + +pci:v00001626d00008410* + ID_MODEL_FROM_DATABASE=RTL81xx Fast Ethernet + +pci:v00001629* + ID_VENDOR_FROM_DATABASE=Kongsberg Spacetec AS + +pci:v00001629d00001003* + ID_MODEL_FROM_DATABASE=Format synchronizer v3.0 + +pci:v00001629d00001006* + ID_MODEL_FROM_DATABASE=Format synchronizer, model 10500 + +pci:v00001629d00001007* + ID_MODEL_FROM_DATABASE=Format synchronizer, model 21000 + +pci:v00001629d00002002* + ID_MODEL_FROM_DATABASE=Fast Universal Data Output + +pci:v00001631* + ID_VENDOR_FROM_DATABASE=Packard Bell B.V. + +pci:v00001638* + ID_VENDOR_FROM_DATABASE=Standard Microsystems Corp [SMC] + +pci:v00001638d00001100* + ID_MODEL_FROM_DATABASE=SMC2602W EZConnect / Addtron AWA-100 / Eumitcom PCI WL11000 + +pci:v0000163C* + ID_VENDOR_FROM_DATABASE=Smart Link Ltd. + +pci:v0000163Cd00003052* + ID_MODEL_FROM_DATABASE=SmartLink SmartPCI562 56K Modem + +pci:v0000163Cd00005449* + ID_MODEL_FROM_DATABASE=SmartPCI561 Modem + +pci:v00001641* + ID_VENDOR_FROM_DATABASE=MKNet Corp. + +pci:v00001657* + ID_VENDOR_FROM_DATABASE=Brocade Communications Systems, Inc. + +pci:v00001657d00000013* + ID_MODEL_FROM_DATABASE=425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA + +pci:v00001657d00000013sv0000103Csd00001742* + ID_MODEL_FROM_DATABASE=HP 82B 8Gbps dual port FC HBA + +pci:v00001657d00000013sv0000103Csd00001744* + ID_MODEL_FROM_DATABASE=HP 42B 4Gbps dual port FC HBA + +pci:v00001657d00000013sv00001657sd00000014* + ID_MODEL_FROM_DATABASE=425/825 4Gbps/8Gbps PCIe dual port FC HBA + +pci:v00001657d00000014* + ID_MODEL_FROM_DATABASE=1010/1020/1007/1741 10Gbps CNA + +pci:v00001657d00000014sv00001657sd00000014* + ID_MODEL_FROM_DATABASE=1010/1020/1007/1741 10Gbps CNA - FCOE + +pci:v00001657d00000014sv00001657sd00000015* + ID_MODEL_FROM_DATABASE=1010/1020/1007/1741 10Gbps CNA - LL + +pci:v00001657d00000017* + ID_MODEL_FROM_DATABASE=415/815/41B/81B 4Gbps/8Gbps PCIe single port FC HBA + +pci:v00001657d00000017sv0000103Csd00001741* + ID_MODEL_FROM_DATABASE=HP 41B 4Gbps single port FC HBA + +pci:v00001657d00000017sv0000103Csd00001743* + ID_MODEL_FROM_DATABASE=HP 81B 8Gbps single port FC HBA + +pci:v00001657d00000017sv00001657sd00000014* + ID_MODEL_FROM_DATABASE=415/815 4Gbps/8Gbps single port PCIe FC HBA + +pci:v00001657d00000021* + ID_MODEL_FROM_DATABASE=804 8Gbps FC HBA for HP Bladesystem c-class + +pci:v00001657d00000022* + ID_MODEL_FROM_DATABASE=1867/1860: 16Gbps/10Gbps Fabric Adapter + +pci:v00001657d00000022sv00001657sd00000022* + ID_MODEL_FROM_DATABASE=10Gbps CNA - FCOE + +pci:v00001657d00000022sv00001657sd00000023* + ID_MODEL_FROM_DATABASE=10Gbps CNA - LL + +pci:v00001657d00000022sv00001657sd00000024* + ID_MODEL_FROM_DATABASE=16Gbps FC HBA + +pci:v00001657d00000646* + ID_MODEL_FROM_DATABASE=400 4Gbps PCIe FC HBA + +pci:v0000165A* + ID_VENDOR_FROM_DATABASE=Epix Inc + +pci:v0000165Ad0000C100* + ID_MODEL_FROM_DATABASE=PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232] + +pci:v0000165Ad0000D200* + ID_MODEL_FROM_DATABASE=PIXCI(R) D2X Digital Video Capture Board [custom QL5232] + +pci:v0000165Ad0000D300* + ID_MODEL_FROM_DATABASE=PIXCI(R) D3X Digital Video Capture Board [custom QL5232] + +pci:v0000165D* + ID_VENDOR_FROM_DATABASE=Hsing Tech. Enterprise Co., Ltd. + +pci:v0000165F* + ID_VENDOR_FROM_DATABASE=Linux Media Labs, LLC + +pci:v0000165Fd00001020* + ID_MODEL_FROM_DATABASE=LMLM4 MPEG-4 encoder + +pci:v00001661* + ID_VENDOR_FROM_DATABASE=Worldspace Corp. + +pci:v00001668* + ID_VENDOR_FROM_DATABASE=Actiontec Electronics Inc + +pci:v00001668d00000100* + ID_MODEL_FROM_DATABASE=Mini-PCI bridge + +pci:v0000166D* + ID_VENDOR_FROM_DATABASE=Broadcom Corporation + +pci:v0000166Dd00000001* + ID_MODEL_FROM_DATABASE=SiByte BCM1125/1125H/1250 System-on-a-Chip PCI + +pci:v0000166Dd00000002* + ID_MODEL_FROM_DATABASE=SiByte BCM1125H/1250 System-on-a-Chip HyperTransport + +pci:v0000166Dd00000012* + ID_MODEL_FROM_DATABASE=SiByte BCM1280/BCM1480 System-on-a-Chip PCI-X + +pci:v0000166Dd00000014* + ID_MODEL_FROM_DATABASE=Sibyte BCM1280/BCM1480 System-on-a-Chip HyperTransport + +pci:v00001677* + ID_VENDOR_FROM_DATABASE=Bernecker + Rainer + +pci:v00001677d0000104E* + ID_MODEL_FROM_DATABASE=5LS172.6 B&R Dual CAN Interface Card + +pci:v00001677d000012D7* + ID_MODEL_FROM_DATABASE=5LS172.61 B&R Dual CAN Interface Card + +pci:v00001677d000020AD* + ID_MODEL_FROM_DATABASE=5ACPCI.MFIO-K01 Profibus DP / K-Feldbus / COM + +pci:v00001678* + ID_VENDOR_FROM_DATABASE=NetEffect + +pci:v00001678d00000100* + ID_MODEL_FROM_DATABASE=NE020 10Gb Accelerated Ethernet Adapter (iWARP RNIC) + +pci:v00001679* + ID_VENDOR_FROM_DATABASE=Tokyo Electron Device Ltd. + +pci:v00001679d00003000* + ID_MODEL_FROM_DATABASE=SD Standard host controller [Ellen] + +pci:v0000167B* + ID_VENDOR_FROM_DATABASE=ZyDAS Technology Corp. + +pci:v0000167Bd00002102* + ID_MODEL_FROM_DATABASE=ZyDAS ZD1202 + +pci:v0000167Bd00002102sv0000187Esd00003406* + ID_MODEL_FROM_DATABASE=ZyAIR B-122 CardBus 11Mbs Wireless LAN Card + +pci:v0000167Bd00002102sv0000187Esd00003407* + ID_MODEL_FROM_DATABASE=ZyAIR B-320 802.11b Wireless PCI Adapter + +pci:v0000167Bd00002116* + ID_MODEL_FROM_DATABASE=ZD1212B Wireless Adapter + +pci:v0000167D* + ID_VENDOR_FROM_DATABASE=Samsung Electro-Mechanics Co., Ltd. + +pci:v0000167Dd0000A000* + ID_MODEL_FROM_DATABASE=MagicLAN SWL-2210P 802.11b [Intersil ISL3874] + +pci:v0000167E* + ID_VENDOR_FROM_DATABASE=ONNTO Corp. + +pci:v00001681* + ID_VENDOR_FROM_DATABASE=Hercules + +pci:v00001682* + ID_VENDOR_FROM_DATABASE=XFX Pine Group Inc. + +pci:v00001688* + ID_VENDOR_FROM_DATABASE=CastleNet Technology Inc. + +pci:v00001688d00001170* + ID_MODEL_FROM_DATABASE=WLAN 802.11b card + +pci:v0000168C* + ID_VENDOR_FROM_DATABASE=Atheros Communications Inc. + +pci:v0000168Cd00000007* + ID_MODEL_FROM_DATABASE=AR5210 Wireless Network Adapter [AR5000 802.11a] + +pci:v0000168Cd00000007sv00001737sd00000007* + ID_MODEL_FROM_DATABASE=WPC54A Wireless PC Card + +pci:v0000168Cd00000007sv00001B47sd00000100* + ID_MODEL_FROM_DATABASE=Harmony 8450CN Wireless CardBus Module + +pci:v0000168Cd00000007sv00001B47sd00000110* + ID_MODEL_FROM_DATABASE=Skyline 4030 / Harmony 8450 802.11a Wireless CardBus Adapter + +pci:v0000168Cd00000007sv00008086sd00002501* + ID_MODEL_FROM_DATABASE=PRO/Wireless 5000 LAN PCI Adapter Module + +pci:v0000168Cd00000011* + ID_MODEL_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001A 802.11a] + +pci:v0000168Cd00000012* + ID_MODEL_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001X 802.11ab] + +pci:v0000168Cd00000012sv00001186sd00003A03* + ID_MODEL_FROM_DATABASE=AirPro DWL-A650 Wireless Cardbus Adapter (rev.B) + +pci:v0000168Cd00000012sv00001186sd00003A04* + ID_MODEL_FROM_DATABASE=AirPro DWL-AB650 Multimode Wireless Cardbus Adapter + +pci:v0000168Cd00000012sv00001186sd00003A05* + ID_MODEL_FROM_DATABASE=AirPro DWL-AB520 Multimode Wireless PCI Adapter + +pci:v0000168Cd00000012sv0000126Csd00008031* + ID_MODEL_FROM_DATABASE=2201 Mobile Adapter + +pci:v0000168Cd00000012sv00001385sd00004400* + ID_MODEL_FROM_DATABASE=WAB501 802.11ab Wireless CardBus Card + +pci:v0000168Cd00000012sv00001B47sd0000AA00* + ID_MODEL_FROM_DATABASE=8460 802.11ab Wireless CardBus Adapter + +pci:v0000168Cd00000013* + ID_MODEL_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter + +pci:v0000168Cd00000013sv00000308sd00003402* + ID_MODEL_FROM_DATABASE=AG-100 802.11ag Wireless Cardbus Adapter + +pci:v0000168Cd00000013sv00000308sd00003405* + ID_MODEL_FROM_DATABASE=G-102 v2 802.11g Wireless Cardbus Adapter + +pci:v0000168Cd00000013sv00000308sd00003408* + ID_MODEL_FROM_DATABASE=G-170S 802.11g Wireless CardBus Adapter + +pci:v0000168Cd00000013sv00000E11sd000000E5* + ID_MODEL_FROM_DATABASE=NC6000/NC8000 laptop + +pci:v0000168Cd00000013sv000010B7sd00006002* + ID_MODEL_FROM_DATABASE=3CRWE154A72 802.11abg Cardbus Adapter + +pci:v0000168Cd00000013sv00001113sd0000D301* + ID_MODEL_FROM_DATABASE=Philips CPWNA100 Wireless CardBus adapter + +pci:v0000168Cd00000013sv00001113sd0000EE23* + ID_MODEL_FROM_DATABASE=SMCWPCIT-G 108Mbps Wireless PCI adapter + +pci:v0000168Cd00000013sv00001154sd0000033B* + ID_MODEL_FROM_DATABASE=Buffalo WLI-CB-AMG54 + +pci:v0000168Cd00000013sv00001154sd0000034E* + ID_MODEL_FROM_DATABASE=Buffalo WLI-CB-AG108HP 802.11abg Cardbus Adapter + +pci:v0000168Cd00000013sv00001186sd00003202* + ID_MODEL_FROM_DATABASE=DWL-G650 (Rev B3,B5) Wireless cardbus adapter + +pci:v0000168Cd00000013sv00001186sd00003203* + ID_MODEL_FROM_DATABASE=AirPlus DWL-G520 Wireless PCI Adapter (rev. A) + +pci:v0000168Cd00000013sv00001186sd00003A07* + ID_MODEL_FROM_DATABASE=AirXpert DWL-AG650 Wireless Cardbus Adapter + +pci:v0000168Cd00000013sv00001186sd00003A08* + ID_MODEL_FROM_DATABASE=AirXpert DWL-AG520 Wireless PCI Adapter + +pci:v0000168Cd00000013sv00001186sd00003A12* + ID_MODEL_FROM_DATABASE=D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C) + +pci:v0000168Cd00000013sv00001186sd00003A13* + ID_MODEL_FROM_DATABASE=AirPlus DWL-G520 Wireless PCI Adapter (rev. B) + +pci:v0000168Cd00000013sv00001186sd00003A14* + ID_MODEL_FROM_DATABASE=AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.A) + +pci:v0000168Cd00000013sv00001186sd00003A17* + ID_MODEL_FROM_DATABASE=D-Link AirPremier DWL-G680 Wireless Cardbus Adapter + +pci:v0000168Cd00000013sv00001186sd00003A18* + ID_MODEL_FROM_DATABASE=D-Link AirPremier DWL-G550 Wireless PCI Adapter + +pci:v0000168Cd00000013sv00001186sd00003A1A* + ID_MODEL_FROM_DATABASE=WNA-2330 802.11bg Wireless CardBus Adapter + +pci:v0000168Cd00000013sv00001186sd00003A63* + ID_MODEL_FROM_DATABASE=D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter + +pci:v0000168Cd00000013sv00001186sd00003A93* + ID_MODEL_FROM_DATABASE=Conceptronic C54I Wireless 801.11g PCI card + +pci:v0000168Cd00000013sv00001186sd00003A94* + ID_MODEL_FROM_DATABASE=Conceptronic C54C 802.11g Wireless Cardbus Adapter + +pci:v0000168Cd00000013sv00001186sd00003AB0* + ID_MODEL_FROM_DATABASE=Allnet ALL0281 Wireless PCI Card + +pci:v0000168Cd00000013sv00001385sd00004600* + ID_MODEL_FROM_DATABASE=WAG511 802.11a/b/g Dual Band Wireless PC Card + +pci:v0000168Cd00000013sv00001385sd00004610* + ID_MODEL_FROM_DATABASE=WAG511 802.11a/b/g Dual Band Wireless PC Card + +pci:v0000168Cd00000013sv00001385sd00004900* + ID_MODEL_FROM_DATABASE=WG311v1 802.11g Wireless PCI Adapter + +pci:v0000168Cd00000013sv00001385sd00004A00* + ID_MODEL_FROM_DATABASE=WAG311 802.11a/g Wireless PCI Adapter + +pci:v0000168Cd00000013sv00001385sd00004B00* + ID_MODEL_FROM_DATABASE=WG511T 108 Mbps Wireless PC Card (rev.A/B) + +pci:v0000168Cd00000013sv00001385sd00004D00* + ID_MODEL_FROM_DATABASE=WG311T 108 Mbps Wireless PCI Adapter (rev.A2) + +pci:v0000168Cd00000013sv00001385sd00004F00* + ID_MODEL_FROM_DATABASE=WG511U Double 108 Mbps Wireless PC Card + +pci:v0000168Cd00000013sv00001385sd00005A00* + ID_MODEL_FROM_DATABASE=WG311T 108 Mbps Wireless PCI Adapter (rev.A3) + +pci:v0000168Cd00000013sv00001385sd00005B00* + ID_MODEL_FROM_DATABASE=WG511T 108 Mbps Wireless PC Card (rev.C) + +pci:v0000168Cd00000013sv00001385sd00005D00* + ID_MODEL_FROM_DATABASE=WPN511 RangeMax Wireless PC Card + +pci:v0000168Cd00000013sv00001458sd0000E911* + ID_MODEL_FROM_DATABASE=GN-WIAG02 + +pci:v0000168Cd00000013sv00001468sd00000403* + ID_MODEL_FROM_DATABASE=U10H014 802.11g Cardbus Adapter + +pci:v0000168Cd00000013sv00001468sd00000408* + ID_MODEL_FROM_DATABASE=ThinkPad 11b/g Wireless LAN Mini PCI Adapter + +pci:v0000168Cd00000013sv000014B7sd00000A10* + ID_MODEL_FROM_DATABASE=8480-WD 802.11abg Cardbus Adapter + +pci:v0000168Cd00000013sv000014B7sd00000A60* + ID_MODEL_FROM_DATABASE=8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter + +pci:v0000168Cd00000013sv000014B7sd0000AA30* + ID_MODEL_FROM_DATABASE=8800-FC 802.11bg Cardbus Adapter + +pci:v0000168Cd00000013sv000014B7sd0000AA40* + ID_MODEL_FROM_DATABASE=8470-WD 802.11bg Cardbus Adapter + +pci:v0000168Cd00000013sv000014B9sd0000CB21* + ID_MODEL_FROM_DATABASE=CB21 802.11a/b/g Cardbus Adapter + +pci:v0000168Cd00000013sv00001668sd00001026* + ID_MODEL_FROM_DATABASE=IBM HighRate 11 a/b/g Wireless CardBus Adapter + +pci:v0000168Cd00000013sv0000168Csd00000013* + ID_MODEL_FROM_DATABASE=AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter + +pci:v0000168Cd00000013sv0000168Csd00001025* + ID_MODEL_FROM_DATABASE=DWL-G650B2 Wireless CardBus Adapter + +pci:v0000168Cd00000013sv0000168Csd00001027* + ID_MODEL_FROM_DATABASE=Engenius NL-3054CB ARIES b/g CardBus Adapter + +pci:v0000168Cd00000013sv0000168Csd00001042* + ID_MODEL_FROM_DATABASE=Ubiquiti Networks SuperRange a/b/g Cardbus Adapter + +pci:v0000168Cd00000013sv0000168Csd00001051* + ID_MODEL_FROM_DATABASE=EZ Connect g 802.11g 108Mbps Wireless PCI Adapter + +pci:v0000168Cd00000013sv0000168Csd00002026* + ID_MODEL_FROM_DATABASE=Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter + +pci:v0000168Cd00000013sv0000168Csd00002027* + ID_MODEL_FROM_DATABASE=D-Link AirPlus DWL-G520 Wireless PCI Adapter (rev. A) + +pci:v0000168Cd00000013sv0000168Csd00002041* + ID_MODEL_FROM_DATABASE=Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter + +pci:v0000168Cd00000013sv0000168Csd00002042* + ID_MODEL_FROM_DATABASE=Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter + +pci:v0000168Cd00000013sv0000168Csd00002051* + ID_MODEL_FROM_DATABASE=TRENDnet TEW-443PI Wireless PCI Adapter + +pci:v0000168Cd00000013sv000016A5sd0000160A* + ID_MODEL_FROM_DATABASE=BWP712 802.11bg Wireless CardBus Adapter + +pci:v0000168Cd00000013sv000016ABsd00007302* + ID_MODEL_FROM_DATABASE=Trust Speedshare Turbo Pro Wireless PCI Adapter + +pci:v0000168Cd00000013sv00001737sd00000017* + ID_MODEL_FROM_DATABASE=WPC55AG + +pci:v0000168Cd00000013sv00001737sd00000026* + ID_MODEL_FROM_DATABASE=WMP55AG v1.1 + +pci:v0000168Cd00000013sv00001737sd00000035* + ID_MODEL_FROM_DATABASE=WPC55AG v1.2 802.11abg Cardbus Adapter + +pci:v0000168Cd00000013sv00001737sd00000036* + ID_MODEL_FROM_DATABASE=WMP55AG v1.2 802.11abg PCI Adapter + +pci:v0000168Cd00000013sv00001799sd00003000* + ID_MODEL_FROM_DATABASE=F6D3000 Dual-Band Wireless A+G Desktop Card + +pci:v0000168Cd00000013sv00001799sd00003010* + ID_MODEL_FROM_DATABASE=F6D3010 Dual-Band Wireless A+G Notebook Card + +pci:v0000168Cd00000013sv000017CFsd00000042* + ID_MODEL_FROM_DATABASE=Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter + +pci:v0000168Cd00000013sv0000185Fsd00001012* + ID_MODEL_FROM_DATABASE=CM9 Wireless a/b/g MiniPCI Adapter + +pci:v0000168Cd00000013sv0000185Fsd00002012* + ID_MODEL_FROM_DATABASE=Wistron NeWeb WLAN a+b+g model CB9 + +pci:v0000168Cd00000013sv0000A727sd00006801* + ID_MODEL_FROM_DATABASE=3CRXJK10075 OfficeConnect Wireless 108Mbps 11g XJACK PC Card + +pci:v0000168Cd0000001A* + ID_MODEL_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] + +pci:v0000168Cd0000001Asv00001052sd0000168C* + ID_MODEL_FROM_DATABASE=Sweex Wireless Lan PC Card 54Mbps + +pci:v0000168Cd0000001Asv00001113sd0000EE20* + ID_MODEL_FROM_DATABASE=SMC Wireless CardBus Adapter 802.11g (SMCWCB-G EU) + +pci:v0000168Cd0000001Asv00001113sd0000EE24* + ID_MODEL_FROM_DATABASE=SMC Wireless PCI Card WPCI-G + +pci:v0000168Cd0000001Asv00001186sd00003A15* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.D1) + +pci:v0000168Cd0000001Asv00001186sd00003A16* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G510 Wireless PCI Adapter(rev.B) + +pci:v0000168Cd0000001Asv00001186sd00003A1C* + ID_MODEL_FROM_DATABASE=WNA-1330 Notebook Adapter + +pci:v0000168Cd0000001Asv00001186sd00003A1D* + ID_MODEL_FROM_DATABASE=WDA-1320 Desktop Adapter + +pci:v0000168Cd0000001Asv00001186sd00003A23* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G520+A Wireless PCI Adapter + +pci:v0000168Cd0000001Asv00001186sd00003A24* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G650+A Wireless Cardbus Adapter + +pci:v0000168Cd0000001Asv00001186sd00003B08* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.C1) + +pci:v0000168Cd0000001Asv0000168Csd0000001A* + ID_MODEL_FROM_DATABASE=Belkin FD7000 + +pci:v0000168Cd0000001Asv0000168Csd00001052* + ID_MODEL_FROM_DATABASE=TP-Link TL-WN510G Wireless CardBus Adapter + +pci:v0000168Cd0000001Asv0000168Csd00002052* + ID_MODEL_FROM_DATABASE=Compex Wireless 802.11 b/g MiniPCI Adapter, Rev A1 [WLM54G] + +pci:v0000168Cd0000001Asv000016ECsd00000122* + ID_MODEL_FROM_DATABASE=Wireless PCI Adapter Model 5418 + +pci:v0000168Cd0000001Asv00001737sd00000053* + ID_MODEL_FROM_DATABASE=WPC54G v7 802.11g Wireless-G Notebook Adapter + +pci:v0000168Cd0000001Asv00001799sd0000700C* + ID_MODEL_FROM_DATABASE=F5D7000 v5000 Wireless G Desktop Card + +pci:v0000168Cd0000001Asv00001799sd0000701D* + ID_MODEL_FROM_DATABASE=F5D7010 v5000 Wireless G Notebook Card + +pci:v0000168Cd0000001Asv000017F9sd00000008* + ID_MODEL_FROM_DATABASE=DX-WGNBC 802.11bg Wireless CardBus Adapter + +pci:v0000168Cd0000001Asv000017F9sd00000018* + ID_MODEL_FROM_DATABASE=DX-WGDTC 802.11bg Wireless PCI Adapter + +pci:v0000168Cd0000001B* + ID_MODEL_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] + +pci:v0000168Cd0000001Bsv00000777sd00001107* + ID_MODEL_FROM_DATABASE=UB5 802.11a Wireless Mini PCI Adapter + +pci:v0000168Cd0000001Bsv00000777sd00003002* + ID_MODEL_FROM_DATABASE=XR2 802.11g Wireless Mini PCI Adapter + +pci:v0000168Cd0000001Bsv00000777sd00003005* + ID_MODEL_FROM_DATABASE=XR5 802.11a Wireless Mini PCI Adapter + +pci:v0000168Cd0000001Bsv00000777sd00003009* + ID_MODEL_FROM_DATABASE=XR9 900MHz Wireless Mini PCI Adapter + +pci:v0000168Cd0000001Bsv00001154sd0000034E* + ID_MODEL_FROM_DATABASE=WLI-CB-AG108HP 802.11abg Wireless CardBus Adapter + +pci:v0000168Cd0000001Bsv00001186sd00003A19* + ID_MODEL_FROM_DATABASE=D-Link AirPremier AG DWL-AG660 Wireless Cardbus Adapter + +pci:v0000168Cd0000001Bsv00001186sd00003A22* + ID_MODEL_FROM_DATABASE=AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.B) + +pci:v0000168Cd0000001Bsv000011ADsd00005001* + ID_MODEL_FROM_DATABASE=WN5301A 802.11bg Wireless PCI Adapter + +pci:v0000168Cd0000001Bsv00001458sd0000E901* + ID_MODEL_FROM_DATABASE=GN-WI01HT Wireless a/b/g MiniPCI Adapter + +pci:v0000168Cd0000001Bsv0000168Csd0000001B* + ID_MODEL_FROM_DATABASE=Wireless LAN PCI LiteOn + +pci:v0000168Cd0000001Bsv0000168Csd00001062* + ID_MODEL_FROM_DATABASE=IPN-W100CB 802.11abg Wireless CardBus Adapter + +pci:v0000168Cd0000001Bsv0000168Csd00002062* + ID_MODEL_FROM_DATABASE=EnGenius EMP-8602 (400mw) or Compex WLM54AG (SuperAG) + +pci:v0000168Cd0000001Bsv0000168Csd00002063* + ID_MODEL_FROM_DATABASE=EnGenius EMP-8602 (400mw) or Compex WLM54AG + +pci:v0000168Cd0000001Bsv000017F9sd0000000B* + ID_MODEL_FROM_DATABASE=WL-711A 802.11abg Wireless CardBus Adapter + +pci:v0000168Cd0000001Bsv000017F9sd0000000C* + ID_MODEL_FROM_DATABASE=WPIA-112AG 802.11abg Wireless PCI Adapter + +pci:v0000168Cd0000001Bsv000017F9sd0000000D* + ID_MODEL_FROM_DATABASE=PC-686X 802.11abg Wireless Mini PCI Adapter + +pci:v0000168Cd0000001Bsv0000185Fsd00001600* + ID_MODEL_FROM_DATABASE=DCMA-82 High Power WLAN 802.11a/b/g mini-PCI Module (Super A/G, eXtended Range, 400mW) + +pci:v0000168Cd0000001Bsv00001948sd00003ABA* + ID_MODEL_FROM_DATABASE=RBTBJ-AW 802.11abg Wireless Cardbus Adapter + +pci:v0000168Cd0000001Bsv0000A727sd00006804* + ID_MODEL_FROM_DATABASE=Wireless 11a/b/g PC Card with XJACK(r) Antenna + +pci:v0000168Cd0000001C* + ID_MODEL_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) + +pci:v0000168Cd0000001Csv00000777sd00003006* + ID_MODEL_FROM_DATABASE=SRX 802.11abg Wireless ExpressCard Adapter + +pci:v0000168Cd0000001Csv0000103Csd0000137A* + ID_MODEL_FROM_DATABASE=AR5BXB63 (Foxconn) 802.11bg Mini PCIe NIC + +pci:v0000168Cd0000001Csv0000106Bsd00000086* + ID_MODEL_FROM_DATABASE=AR5BXB6 802.11abg Wireless Mini PCIe Card + +pci:v0000168Cd0000001Csv0000144Fsd00007106* + ID_MODEL_FROM_DATABASE=WLL3140 (Toshiba PA3501U-1MPC) 802.11bg Wireless Mini PCIe Card + +pci:v0000168Cd0000001Csv0000144Fsd00007128* + ID_MODEL_FROM_DATABASE=WLL3141 (Toshiba PA3613U-1MPC) 802.11bg Wireless Mini PCIe Card + +pci:v0000168Cd0000001Csv00001468sd00000428* + ID_MODEL_FROM_DATABASE=AR5BXB63 802.11bg NIC + +pci:v0000168Cd0000001Csv00001468sd0000042A* + ID_MODEL_FROM_DATABASE=AR5007EG 802.11bg NIC + +pci:v0000168Cd0000001Csv0000147Bsd00001033* + ID_MODEL_FROM_DATABASE=AirPace Wi-Fi + +pci:v0000168Cd0000001Csv0000168Csd0000001C* + ID_MODEL_FROM_DATABASE=AR242x 802.11abg NIC (PCI Express) + +pci:v0000168Cd0000001Csv0000168Csd00003061* + ID_MODEL_FROM_DATABASE=AR5006EGS 802.11bg NIC (2.4GHz, PCI Express) + +pci:v0000168Cd0000001Csv0000168Csd00003062* + ID_MODEL_FROM_DATABASE=AR5006EXS 802.11abg NIC (2.4/5.0GHz, PCI Express) + +pci:v0000168Cd0000001Csv0000168Csd00003063* + ID_MODEL_FROM_DATABASE=AR5006EX 802.11abg NIC (2.4/5.0GHz, PCI Express) + +pci:v0000168Cd0000001Csv0000168Csd00003065* + ID_MODEL_FROM_DATABASE=AR5006EG 802.11bg NIC (2.4GHz, PCI Express) + +pci:v0000168Cd0000001Csv0000168Csd00003067* + ID_MODEL_FROM_DATABASE=AR242x 802.11abg Wireless PCI Express Adapter (rev 01) + +pci:v0000168Cd0000001Csv00001A3Bsd00001026* + ID_MODEL_FROM_DATABASE=AW-GE780 802.11bg Wireless Mini PCIe Card + +pci:v0000168Cd0000001D* + ID_MODEL_FROM_DATABASE=AR2417 Wireless Network Adapter [AR5007G 802.11bg] + +pci:v0000168Cd0000001Dsv00001799sd0000720B* + ID_MODEL_FROM_DATABASE=F5D7000 v8000 Wireless G Desktop Card + +pci:v0000168Cd0000001Dsv00001799sd0000721B* + ID_MODEL_FROM_DATABASE=F5D7010 v8000 Wireless G Notebook Card + +pci:v0000168Cd00000020* + ID_MODEL_FROM_DATABASE=AR5513 802.11abg Wireless NIC + +pci:v0000168Cd00000020sv00000308sd00003407* + ID_MODEL_FROM_DATABASE=M-102 802.11g Wireless Cardbus Adapter + +pci:v0000168Cd00000020sv00001186sd00003A67* + ID_MODEL_FROM_DATABASE=DWL-G650M Super G MIMO Wireless Notebook Adapter + +pci:v0000168Cd00000020sv00001186sd00003A68* + ID_MODEL_FROM_DATABASE=DWL-G520M Wireless 108G MIMO Desktop Adapter + +pci:v0000168Cd00000020sv0000187Esd0000340E* + ID_MODEL_FROM_DATABASE=M-302 802.11g Wireless PCI Adapter + +pci:v0000168Cd00000020sv00001976sd00002003* + ID_MODEL_FROM_DATABASE=TEW-601PC 802.11g Wireless CardBus Adapter + +pci:v0000168Cd00000023* + ID_MODEL_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] + +pci:v0000168Cd00000023sv00000308sd0000340B* + ID_MODEL_FROM_DATABASE=NWD-170N 802.11bgn Wireless CardBus Adapter + +pci:v0000168Cd00000023sv00001154sd00000365* + ID_MODEL_FROM_DATABASE=Buffalo WLP-CB-AG300 802.11abgn Cardbus Adapter + +pci:v0000168Cd00000023sv00001154sd00000367* + ID_MODEL_FROM_DATABASE=WLI-CB-AG301N 802.11abgn Wireless CardBus Adapter + +pci:v0000168Cd00000023sv00001186sd00003A6A* + ID_MODEL_FROM_DATABASE=DWA-642 802.11n RangeBooster N CardBus Adapter + +pci:v0000168Cd00000023sv00001186sd00003A6B* + ID_MODEL_FROM_DATABASE=DWA-547 802.11n RangeBooster N 650 DeskTop Adapter + +pci:v0000168Cd00000023sv00001186sd00003A6D* + ID_MODEL_FROM_DATABASE=DWA-552 802.11n Xtreme N Desktop Adapter (rev A1) + +pci:v0000168Cd00000023sv00001186sd00003A76* + ID_MODEL_FROM_DATABASE=DWA-645 802.11n RangeBooster N 650 Notebook Adapter (rev A1) + +pci:v0000168Cd00000023sv00001737sd00000059* + ID_MODEL_FROM_DATABASE=WPC300N v2 Wireless-N Notebook Adapter + +pci:v0000168Cd00000023sv00001737sd00000069* + ID_MODEL_FROM_DATABASE=WPC100 v1 802.11n RangePlus Wireless Notebook Adapter + +pci:v0000168Cd00000023sv00001737sd00000072* + ID_MODEL_FROM_DATABASE=WMP110 v1 802.11n RangePlus Wireless PCI Adapter + +pci:v0000168Cd00000023sv00001799sd00008011* + ID_MODEL_FROM_DATABASE=F5D8011 v1 802.11n N1 Wireless Notebook Card + +pci:v0000168Cd00000023sv0000187Esd00003411* + ID_MODEL_FROM_DATABASE=NWD-370N 802.11n Wireless PCI Adapter + +pci:v0000168Cd00000023sv00001976sd00002008* + ID_MODEL_FROM_DATABASE=TEW-621PC 802.11bgn Wireless CardBus Adapter + +pci:v0000168Cd00000024* + ID_MODEL_FROM_DATABASE=AR5418 Wireless Network Adapter [AR5008E 802.11(a)bgn] (PCI-Express) + +pci:v0000168Cd00000024sv0000106Bsd00000087* + ID_MODEL_FROM_DATABASE=AR5BXB72 802.11abgn Mini PCIe Card [AR5008E-3NX] + +pci:v0000168Cd00000024sv00001186sd00003A70* + ID_MODEL_FROM_DATABASE=DWA-556 Xtreme N PCI Express Desktop Adapter + +pci:v0000168Cd00000027* + ID_MODEL_FROM_DATABASE=AR9160 Wireless Network Adapter [AR9001 802.11(a)bgn] + +pci:v0000168Cd00000027sv00000777sd00004082* + ID_MODEL_FROM_DATABASE=SR71-A 802.11abgn Wireless Mini PCI Adapter + +pci:v0000168Cd00000029* + ID_MODEL_FROM_DATABASE=AR922X Wireless Network Adapter + +pci:v0000168Cd00000029sv00000777sd00004005* + ID_MODEL_FROM_DATABASE=SR71-15 802.11an Mini PCI Adapter + +pci:v0000168Cd00000029sv00001186sd00003A7A* + ID_MODEL_FROM_DATABASE=DWA-552 802.11n Xtreme N Desktop Adapter (rev A2) + +pci:v0000168Cd00000029sv00001186sd00003A7D* + ID_MODEL_FROM_DATABASE=DWA-552 802.11n Xtreme N Desktop Adapter (rev A3) + +pci:v0000168Cd0000002A* + ID_MODEL_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) + +pci:v0000168Cd0000002Asv00000777sd00004F05* + ID_MODEL_FROM_DATABASE=SR71-X 802.11abgn Wireless ExpressCard Adapter [AR9280] + +pci:v0000168Cd0000002Asv0000103Csd00003041* + ID_MODEL_FROM_DATABASE=AR5BHB92-H 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] + +pci:v0000168Cd0000002Asv0000105Bsd0000E006* + ID_MODEL_FROM_DATABASE=T77H053.00 802.11bgn Wireless Mini PCIe Card [AR9281] + +pci:v0000168Cd0000002Asv0000105Bsd0000E01F* + ID_MODEL_FROM_DATABASE=T77H047.31 802.11bgn Wireless Half-size Mini PCIe Card [AR9283] + +pci:v0000168Cd0000002Asv000011ADsd00006600* + ID_MODEL_FROM_DATABASE=WN6600A 802.11bgn Wireless Mini PCIe Card [AR9281] + +pci:v0000168Cd0000002Asv0000144Fsd00007141* + ID_MODEL_FROM_DATABASE=WLL6080 802.11bgn Wireless Mini PCIe Card [AR9281] + +pci:v0000168Cd0000002Asv0000168Csd00000203* + ID_MODEL_FROM_DATABASE=DW1525 802.11abgn WLAN PCIe Card [AR9280] + +pci:v0000168Cd0000002Asv00001A32sd00000303* + ID_MODEL_FROM_DATABASE=EM303 802.11bgn Wireless Mini PCIe Card [AR9281] + +pci:v0000168Cd0000002Asv00001A32sd00000306* + ID_MODEL_FROM_DATABASE=EM306 802.11bgn Wireless Half-size Mini PCIe Card [AR9283] + +pci:v0000168Cd0000002Asv00001A3Bsd00001067* + ID_MODEL_FROM_DATABASE=AW-NE771 802.11bgn Wireless Mini PCIe Card [AR9281] + +pci:v0000168Cd0000002Asv00001A3Bsd00001081* + ID_MODEL_FROM_DATABASE=AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] + +pci:v0000168Cd0000002B* + ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) + +pci:v0000168Cd0000002Bsv00001028sd00000204* + ID_MODEL_FROM_DATABASE=Wireless 1502 802.11bgn Half-size Mini PCIe Card + +pci:v0000168Cd0000002Bsv00001028sd00000205* + ID_MODEL_FROM_DATABASE=Wireless 1702 802.11bgn Half-size Mini PCIe Card [AR9002WB-1NGCD] + +pci:v0000168Cd0000002Bsv0000103Csd0000303F* + ID_MODEL_FROM_DATABASE=U98Z062.10 802.11bgn Wireless Half-size Mini PCIe Card + +pci:v0000168Cd0000002Bsv0000103Csd00003040* + ID_MODEL_FROM_DATABASE=U98Z062.12 802.11bgn Wireless Half-size Mini PCIe Card + +pci:v0000168Cd0000002Bsv0000105Bsd0000E017* + ID_MODEL_FROM_DATABASE=T77H126.00 802.11bgn Wireless Half-size Mini PCIe Card + +pci:v0000168Cd0000002Bsv0000105Bsd0000E023* + ID_MODEL_FROM_DATABASE=T77H121.04 802.11bgn Wireless Half-size Mini PCIe Card + +pci:v0000168Cd0000002Bsv00001113sd0000E811* + ID_MODEL_FROM_DATABASE=WN7811A (Toshiba PA3722U-1MPC) 802.11bgn Wireless Half-size Mini PCIe Card + +pci:v0000168Cd0000002Bsv0000185Fsd000030AF* + ID_MODEL_FROM_DATABASE=DNXA-95 802.11bgn Wireless Half-size Mini PCIe Card + +pci:v0000168Cd0000002Bsv00001931sd00000023* + ID_MODEL_FROM_DATABASE=Option GTM67x PCIe WiFi Adapter + +pci:v0000168Cd0000002Bsv00001A3Bsd00001089* + ID_MODEL_FROM_DATABASE=AW-NE785 / AW-NE785H 802.11bgn Wireless Full or Half-size Mini PCIe Card + +pci:v0000168Cd0000002Bsv00001A3Bsd00002C37* + ID_MODEL_FROM_DATABASE=AW-NB037H 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD] + +pci:v0000168Cd0000002Bsv00001B9Asd00000401* + ID_MODEL_FROM_DATABASE=XW204E 802.11bgn Wireless Half-size Mini PCIe Card + +pci:v0000168Cd0000002Bsv00001B9Asd00000C03* + ID_MODEL_FROM_DATABASE=WB214E 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD] + +pci:v0000168Cd0000002C* + ID_MODEL_FROM_DATABASE=AR2427 802.11bg Wireless Network Adapter (PCI-Express) + +pci:v0000168Cd0000002D* + ID_MODEL_FROM_DATABASE=AR9227 Wireless Network Adapter + +pci:v0000168Cd0000002E* + ID_MODEL_FROM_DATABASE=AR9287 Wireless Network Adapter (PCI-Express) + +pci:v0000168Cd00000030* + ID_MODEL_FROM_DATABASE=AR9300 Wireless LAN adaptor + +pci:v0000168Cd00000030sv0000103Csd00001627* + ID_MODEL_FROM_DATABASE=AR9380/HB112 802.11abgn 3×3 Wi-Fi Adapter + +pci:v0000168Cd00000030sv00001186sd00003A7E* + ID_MODEL_FROM_DATABASE=DWA-566 Wireless N 300 Dual Band PCIe Desktop Adapter + +pci:v0000168Cd00000030sv00001A56sd00002000* + ID_MODEL_FROM_DATABASE=Killer Wireless-N 1102 Half-size Mini PCIe Card [AR9382] + +pci:v0000168Cd00000030sv00001A56sd00002001* + ID_MODEL_FROM_DATABASE=Killer Wireless-N 1103 Half-size Mini PCIe Card [AR9380] + +pci:v0000168Cd00000032* + ID_MODEL_FROM_DATABASE=AR9485 Wireless Network Adapter + +pci:v0000168Cd00000032sv0000103Csd00001838* + ID_MODEL_FROM_DATABASE=AR9485/HB125 802.11bgn 1×1 Wi-Fi Adapter + +pci:v0000168Cd00000033* + ID_MODEL_FROM_DATABASE=AR9580 Wireless Network Adapter + +pci:v0000168Cd00000034* + ID_MODEL_FROM_DATABASE=AR9462 Wireless Network Adapter + +pci:v0000168Cd00000036* + ID_MODEL_FROM_DATABASE=AR9565 Wireless Network Adapter + +pci:v0000168Cd00000207* + ID_MODEL_FROM_DATABASE=AR5210 Wireless Network Adapter [AR5000 802.11a] + +pci:v0000168Cd00001014* + ID_MODEL_FROM_DATABASE=AR5212 802.11abg NIC + +pci:v0000168Cd00001014sv00001014sd0000058A* + ID_MODEL_FROM_DATABASE=ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5BXB6) + +pci:v0000168Cd00009013* + ID_MODEL_FROM_DATABASE=AR5002X Wireless Network Adapter + +pci:v0000168Cd0000FF19* + ID_MODEL_FROM_DATABASE=AR5006X Wireless Network Adapter + +pci:v0000168Cd0000FF1C* + ID_MODEL_FROM_DATABASE=AR5008 Wireless Network Adapter + +pci:v0000168Cd0000FF1D* + ID_MODEL_FROM_DATABASE=AR922x Wireless Network Adapter + +pci:v0000168Cd0000FF1Dsv0000168Csd0000EE1C* + ID_MODEL_FROM_DATABASE=AR9220-AC1A [AVM Fritz!Box FON WLAN 7270 v3] + +pci:v00001695* + ID_VENDOR_FROM_DATABASE=EPoX Computer Co., Ltd. + +pci:v0000169C* + ID_VENDOR_FROM_DATABASE=Netcell Corporation + +pci:v0000169Cd00000044* + ID_MODEL_FROM_DATABASE=Revolution Storage Processing Card + +pci:v0000169D* + ID_VENDOR_FROM_DATABASE=Club-3D VB (Wrong ID) + +pci:v000016A5* + ID_VENDOR_FROM_DATABASE=Tekram Technology Co.,Ltd. + +pci:v000016AB* + ID_VENDOR_FROM_DATABASE=Global Sun Technology Inc + +pci:v000016ABd00001100* + ID_MODEL_FROM_DATABASE=GL24110P + +pci:v000016ABd00001101* + ID_MODEL_FROM_DATABASE=PLX9052 PCMCIA-to-PCI Wireless LAN + +pci:v000016ABd00001102* + ID_MODEL_FROM_DATABASE=PCMCIA-to-PCI Wireless Network Bridge + +pci:v000016ABd00008501* + ID_MODEL_FROM_DATABASE=WL-8305 Wireless LAN PCI Adapter + +pci:v000016AE* + ID_VENDOR_FROM_DATABASE=SafeNet Inc + +pci:v000016AEd00000001* + ID_MODEL_FROM_DATABASE=SafeXcel 1140 + +pci:v000016AEd0000000A* + ID_MODEL_FROM_DATABASE=SafeXcel 1841 + +pci:v000016AEd00001141* + ID_MODEL_FROM_DATABASE=SafeXcel 1141 + +pci:v000016AEd00001841* + ID_MODEL_FROM_DATABASE=SafeXcel 1842 + +pci:v000016AF* + ID_VENDOR_FROM_DATABASE=SparkLAN Communications, Inc. + +pci:v000016B4* + ID_VENDOR_FROM_DATABASE=Aspex Semiconductor Ltd + +pci:v000016B8* + ID_VENDOR_FROM_DATABASE=Sonnet Technologies, Inc. + +pci:v000016BE* + ID_VENDOR_FROM_DATABASE=Creatix Polymedia GmbH + +pci:v000016C6* + ID_VENDOR_FROM_DATABASE=Micrel-Kendin + +pci:v000016C6d00008695* + ID_MODEL_FROM_DATABASE=Centaur KS8695 ARM processor + +pci:v000016C6d00008842* + ID_MODEL_FROM_DATABASE=KSZ8842-PMQL 2-Port Ethernet Switch + +pci:v000016C8* + ID_VENDOR_FROM_DATABASE=Octasic Inc. + +pci:v000016C9* + ID_VENDOR_FROM_DATABASE=EONIC B.V. The Netherlands + +pci:v000016CA* + ID_VENDOR_FROM_DATABASE=CENATEK Inc + +pci:v000016CAd00000001* + ID_MODEL_FROM_DATABASE=Rocket Drive DL + +pci:v000016CD* + ID_VENDOR_FROM_DATABASE=Advantech Co. Ltd + +pci:v000016CDd00000101* + ID_MODEL_FROM_DATABASE=DirectPCI SRAM for DPX-11x series + +pci:v000016CDd00000102* + ID_MODEL_FROM_DATABASE=DirectPCI SRAM for DPX-S/C/E-series + +pci:v000016CDd00000103* + ID_MODEL_FROM_DATABASE=DirectPCI ROM for DPX-11x series + +pci:v000016CDd00000104* + ID_MODEL_FROM_DATABASE=DirectPCI ROM for DPX-S/C/E-series + +pci:v000016CDd00000105* + ID_MODEL_FROM_DATABASE=DirectPCI I/O for DPX-114/DPX-115 + +pci:v000016CDd00000106* + ID_MODEL_FROM_DATABASE=DirectPCI I/O for DPX-116 + +pci:v000016CDd00000107* + ID_MODEL_FROM_DATABASE=DirectPCI I/O for DPX-116U + +pci:v000016CDd00000108* + ID_MODEL_FROM_DATABASE=DirectPCI I/O for DPX-117 + +pci:v000016CDd00000109* + ID_MODEL_FROM_DATABASE=DirectPCI I/O for DPX-112 + +pci:v000016CDd0000010A* + ID_MODEL_FROM_DATABASE=DirectPCI I/O for DPX-C/E-series + +pci:v000016CDd0000010B* + ID_MODEL_FROM_DATABASE=DirectPCI I/O for DPX-S series + +pci:v000016CE* + ID_VENDOR_FROM_DATABASE=Roland Corp. + +pci:v000016D5* + ID_VENDOR_FROM_DATABASE=Acromag, Inc. + +pci:v000016D5d00000504* + ID_MODEL_FROM_DATABASE=PMC-DX504 Reconfigurable FPGA with LVDS I/O + +pci:v000016D5d00000520* + ID_MODEL_FROM_DATABASE=PMC520 Serial Communication, 232 Octal + +pci:v000016D5d00000521* + ID_MODEL_FROM_DATABASE=PMC521 Serial Communication, 422/485 Octal + +pci:v000016D5d00001020* + ID_MODEL_FROM_DATABASE=PMC-AX1020 Reconfigurable FPGA with A/D & D/A + +pci:v000016D5d00001065* + ID_MODEL_FROM_DATABASE=PMC-AX1065 Reconfigurable FPGA with A/D & D/A + +pci:v000016D5d00002004* + ID_MODEL_FROM_DATABASE=PMC-DX2004 Reconfigurable FPGA with LVDS I/O + +pci:v000016D5d00002020* + ID_MODEL_FROM_DATABASE=PMC-AX2020 Reconfigurable FPGA with A/D & D/A + +pci:v000016D5d00002065* + ID_MODEL_FROM_DATABASE=PMC-AX2065 Reconfigurable FPGA with A/D & D/A + +pci:v000016D5d00003020* + ID_MODEL_FROM_DATABASE=PMC-AX3020 Reconfigurable FPGA with A/D & D/A + +pci:v000016D5d00003065* + ID_MODEL_FROM_DATABASE=PMC-AX3065 Reconfigurable FPGA with A/D & D/A + +pci:v000016D5d00004243* + ID_MODEL_FROM_DATABASE=PMC424, APC424, AcPC424 Digital I/O and Counter Timer Module + +pci:v000016D5d00004248* + ID_MODEL_FROM_DATABASE=PMC464, APC464, AcPC464 Digital I/O and Counter Timer Module + +pci:v000016D5d0000424B* + ID_MODEL_FROM_DATABASE=PMC-DX2002 Reconfigurable FPGA with Differential I/O + +pci:v000016D5d00004253* + ID_MODEL_FROM_DATABASE=PMC-DX503 Reconfigurable FPGA with TTL and Differential I/O + +pci:v000016D5d00004312* + ID_MODEL_FROM_DATABASE=PMC-CX1002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O + +pci:v000016D5d00004313* + ID_MODEL_FROM_DATABASE=PMC-CX1003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O + +pci:v000016D5d00004322* + ID_MODEL_FROM_DATABASE=PMC-CX2002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O + +pci:v000016D5d00004323* + ID_MODEL_FROM_DATABASE=PMC-CX2003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O + +pci:v000016D5d00004350* + ID_MODEL_FROM_DATABASE=PMC-DX501 Reconfigurable Digital I/O Module + +pci:v000016D5d00004353* + ID_MODEL_FROM_DATABASE=PMC-DX2003 Reconfigurable FPGA with TTL and Differential I/O + +pci:v000016D5d00004357* + ID_MODEL_FROM_DATABASE=PMC-DX502 Reconfigurable Differential I/O Module + +pci:v000016D5d00004457* + ID_MODEL_FROM_DATABASE=PMC730, APC730, AcPC730 Multifunction Module + +pci:v000016D5d0000464D* + ID_MODEL_FROM_DATABASE=PMC408 32-Channel Digital Input/Output Module + +pci:v000016D5d00004850* + ID_MODEL_FROM_DATABASE=PMC220-16 12-Bit Analog Output Module + +pci:v000016D5d00004A42* + ID_MODEL_FROM_DATABASE=PMC483, APC483, AcPC483 Counter Timer Module + +pci:v000016D5d00004A50* + ID_MODEL_FROM_DATABASE=PMC484, APC484, AcPC484 Counter Timer Module + +pci:v000016D5d00004A56* + ID_MODEL_FROM_DATABASE=PMC230 16-Bit Analog Output Module + +pci:v000016D5d00004B47* + ID_MODEL_FROM_DATABASE=PMC330, APC330, AcPC330 Analog Input Module, 16-bit A/D + +pci:v000016D5d00004C40* + ID_MODEL_FROM_DATABASE=PMC-LX40 Reconfigurable Virtex-4 FPGA with plug-in I/O + +pci:v000016D5d00004C60* + ID_MODEL_FROM_DATABASE=PMC-LX60 Reconfigurable Virtex-4 FPGA with plug-in I/O + +pci:v000016D5d00004D4D* + ID_MODEL_FROM_DATABASE=PMC341, APC341, AcPC341 Analog Input Module, Simultaneous Sample & Hold + +pci:v000016D5d00004D4E* + ID_MODEL_FROM_DATABASE=PMC482, APC482, AcPC482 Counter Timer Board + +pci:v000016D5d0000524D* + ID_MODEL_FROM_DATABASE=PMC-DX2001 Reconfigurable FPGA with TTL I/O + +pci:v000016D5d00005335* + ID_MODEL_FROM_DATABASE=PMC-SX35 Reconfigurable Virtex-4 FPGA with plug-in I/O + +pci:v000016D5d00005456* + ID_MODEL_FROM_DATABASE=PMC470 48-Channel Digital Input/Output Module + +pci:v000016D5d00005601* + ID_MODEL_FROM_DATABASE=PMC-VLX85 Reconfigurable Virtex-5 FPGA with plug-in I/O + +pci:v000016D5d00005602* + ID_MODEL_FROM_DATABASE=PMC-VLX110 Reconfigurable Virtex-5 FPGA with plug-in I/O + +pci:v000016D5d00005603* + ID_MODEL_FROM_DATABASE=PMC-VSX95 Reconfigurable Virtex-5 FPGA with plug-in I/O + +pci:v000016D5d00005604* + ID_MODEL_FROM_DATABASE=PMC-VLX155 Reconfigurable Virtex-5 FPGA with plug-in I/O + +pci:v000016D5d00005605* + ID_MODEL_FROM_DATABASE=PMC-VFX70 Reconfigurable Virtex-5 FPGA with plug-in I/O + +pci:v000016D5d00005606* + ID_MODEL_FROM_DATABASE=PMC-VLX155-1M Reconfigurable Virtex-5 FPGA with plug-in I/O + +pci:v000016D5d00005701* + ID_MODEL_FROM_DATABASE=PMC-SLX150: Reconfigurable Spartan-6 FPGA with plug-in I/O + +pci:v000016D5d00005702* + ID_MODEL_FROM_DATABASE=PMC-SLX150-1M: Reconfigurable Spartan-6 FPGA with plug-in I/O + +pci:v000016D5d00005801* + ID_MODEL_FROM_DATABASE=XMC-VLX85 Reconfigurable Virtex-5 FPGA with plug-in I/O + +pci:v000016D5d00005802* + ID_MODEL_FROM_DATABASE=XMC-VLX110 Reconfigurable Virtex-5 FPGA with plug-in I/O + +pci:v000016D5d00005803* + ID_MODEL_FROM_DATABASE=XMC-VSX95 Reconfigurable Virtex-5 FPGA with plug-in I/O + +pci:v000016D5d00005804* + ID_MODEL_FROM_DATABASE=XMC-VLX155 Reconfigurable Virtex-5 FPGA with plug-in I/O + +pci:v000016D5d00005807* + ID_MODEL_FROM_DATABASE=XMC-SLX150: Reconfigurable Spartan-6 FPGA with plug-in I/O + +pci:v000016D5d00005808* + ID_MODEL_FROM_DATABASE=XMC-SLX150-1M: Reconfigurable Spartan-6 FPGA with plug-in I/O + +pci:v000016D5d00005901* + ID_MODEL_FROM_DATABASE=APCe8650 PCI Express IndustryPack Carrier Card + +pci:v000016D5d00006301* + ID_MODEL_FROM_DATABASE=XMC Module with user-configurable Virtex-6 FPGA, 240k logic cells, SFP front I/O + +pci:v000016D5d00006302* + ID_MODEL_FROM_DATABASE=XMC Module with user-configurable Virtex-6 FPGA, 365k logic cells, SFP front I/O + +pci:v000016D5d00006303* + ID_MODEL_FROM_DATABASE=XMC Module with user-configurable Virtex-6 FPGA, 240k logic cells, no front I/O + +pci:v000016D5d00006304* + ID_MODEL_FROM_DATABASE=XMC Module with user-configurable Virtex-6 FPGA, 365k logic cells, no front I/O + +pci:v000016DA* + ID_VENDOR_FROM_DATABASE=Advantech Co., Ltd. + +pci:v000016DAd00000011* + ID_MODEL_FROM_DATABASE=INES GPIB-PCI + +pci:v000016DF* + ID_VENDOR_FROM_DATABASE=PIKA Technologies Inc. + +pci:v000016E2* + ID_VENDOR_FROM_DATABASE=Geotest-MTS + +pci:v000016E3* + ID_VENDOR_FROM_DATABASE=European Space Agency + +pci:v000016E3d00001E0F* + ID_MODEL_FROM_DATABASE=LEON2FT Processor + +pci:v000016E5* + ID_VENDOR_FROM_DATABASE=Intellon Corp. + +pci:v000016E5d00006000* + ID_MODEL_FROM_DATABASE=INT6000 Ethernet-to-Powerline Bridge [HomePlug AV] + +pci:v000016E5d00006300* + ID_MODEL_FROM_DATABASE=INT6300 Ethernet-to-Powerline Bridge [HomePlug AV] + +pci:v000016EC* + ID_VENDOR_FROM_DATABASE=U.S. Robotics + +pci:v000016ECd000000ED* + ID_MODEL_FROM_DATABASE=USR997900 + +pci:v000016ECd00000116* + ID_MODEL_FROM_DATABASE=USR997902 10/100/1000 Mbps PCI Network Card + +pci:v000016ECd00002F00* + ID_MODEL_FROM_DATABASE=USR5660A (USR265660A, USR5660A-BP) 56K PCI Faxmodem + +pci:v000016ECd00003685* + ID_MODEL_FROM_DATABASE=Wireless Access PCI Adapter Model 022415 + +pci:v000016ECd00004320* + ID_MODEL_FROM_DATABASE=USR997904 10/100/1000 64-bit NIC (Marvell Yukon) + +pci:v000016ECd0000AB06* + ID_MODEL_FROM_DATABASE=USR997901A 10/100 Cardbus NIC + +pci:v000016ED* + ID_VENDOR_FROM_DATABASE=Sycron N. V. + +pci:v000016EDd00001001* + ID_MODEL_FROM_DATABASE=UMIO communication card + +pci:v000016F3* + ID_VENDOR_FROM_DATABASE=Jetway Information Co., Ltd. + +pci:v000016F4* + ID_VENDOR_FROM_DATABASE=Vweb Corp + +pci:v000016F4d00008000* + ID_MODEL_FROM_DATABASE=VW2010 + +pci:v000016F6* + ID_VENDOR_FROM_DATABASE=VideoTele.com, Inc. + +pci:v00001702* + ID_VENDOR_FROM_DATABASE=Internet Machines Corporation (IMC) + +pci:v00001705* + ID_VENDOR_FROM_DATABASE=Digital First, Inc. + +pci:v0000170B* + ID_VENDOR_FROM_DATABASE=NetOctave + +pci:v0000170Bd00000100* + ID_MODEL_FROM_DATABASE=NSP2000-SSL crypto accelerator + +pci:v0000170C* + ID_VENDOR_FROM_DATABASE=YottaYotta Inc. + +pci:v00001719* + ID_VENDOR_FROM_DATABASE=EZChip Technologies + +pci:v00001725* + ID_VENDOR_FROM_DATABASE=Vitesse Semiconductor + +pci:v00001725d00007174* + ID_MODEL_FROM_DATABASE=VSC7174 PCI/PCI-X Serial ATA Host Bus Controller + +pci:v0000172A* + ID_VENDOR_FROM_DATABASE=Accelerated Encryption + +pci:v0000172Ad000013C8* + ID_MODEL_FROM_DATABASE=AEP SureWare Runner 1000V3 + +pci:v00001734* + ID_VENDOR_FROM_DATABASE=Fujitsu Technology Solutions + +pci:v00001735* + ID_VENDOR_FROM_DATABASE=Aten International Co. Ltd. + +pci:v00001737* + ID_VENDOR_FROM_DATABASE=Linksys + +pci:v00001737d00000029* + ID_MODEL_FROM_DATABASE=WPG54G ver. 4 PCI Card + +pci:v00001737d00001032* + ID_MODEL_FROM_DATABASE=Gigabit Network Adapter + +pci:v00001737d00001032sv00001737sd00000015* + ID_MODEL_FROM_DATABASE=EG1032 v2 Instant Gigabit Network Adapter + +pci:v00001737d00001032sv00001737sd00000024* + ID_MODEL_FROM_DATABASE=EG1032 v3 Instant Gigabit Network Adapter + +pci:v00001737d00001064* + ID_MODEL_FROM_DATABASE=Gigabit Network Adapter + +pci:v00001737d00001064sv00001737sd00000016* + ID_MODEL_FROM_DATABASE=EG1064 v2 Instant Gigabit Network Adapter + +pci:v00001737d0000AB08* + ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet + +pci:v00001737d0000AB09* + ID_MODEL_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet + +pci:v0000173B* + ID_VENDOR_FROM_DATABASE=Altima (nee Broadcom) + +pci:v0000173Bd000003E8* + ID_MODEL_FROM_DATABASE=AC1000 Gigabit Ethernet + +pci:v0000173Bd000003E9* + ID_MODEL_FROM_DATABASE=AC1001 Gigabit Ethernet + +pci:v0000173Bd000003EA* + ID_MODEL_FROM_DATABASE=AC9100 Gigabit Ethernet + +pci:v0000173Bd000003EAsv0000173Bsd00000001* + ID_MODEL_FROM_DATABASE=AC1002 + +pci:v0000173Bd000003EB* + ID_MODEL_FROM_DATABASE=AC1003 Gigabit Ethernet + +pci:v00001743* + ID_VENDOR_FROM_DATABASE=Peppercon AG + +pci:v00001743d00008139* + ID_MODEL_FROM_DATABASE=ROL/F-100 Fast Ethernet Adapter with ROL + +pci:v00001745* + ID_VENDOR_FROM_DATABASE=ViXS Systems, Inc. + +pci:v00001745d00002020* + ID_MODEL_FROM_DATABASE=XCode II Series + +pci:v00001745d00002100* + ID_MODEL_FROM_DATABASE=XCode 2100 Series + +pci:v00001749* + ID_VENDOR_FROM_DATABASE=RLX Technologies + +pci:v0000174B* + ID_VENDOR_FROM_DATABASE=PC Partner Limited + +pci:v0000174D* + ID_VENDOR_FROM_DATABASE=WellX Telecom SA + +pci:v0000175C* + ID_VENDOR_FROM_DATABASE=AudioScience Inc + +pci:v0000175E* + ID_VENDOR_FROM_DATABASE=Sanera Systems, Inc. + +pci:v00001760* + ID_VENDOR_FROM_DATABASE=TEDIA spol. s r. o. + +pci:v00001771* + ID_VENDOR_FROM_DATABASE=InnoVISION Multimedia Ltd. + +pci:v00001775* + ID_VENDOR_FROM_DATABASE=GE Intelligent Platforms + +pci:v0000177D* + ID_VENDOR_FROM_DATABASE=Cavium Networks + +pci:v0000177Dd00000001* + ID_MODEL_FROM_DATABASE=Nitrox XL N1 + +pci:v0000177Dd00000003* + ID_MODEL_FROM_DATABASE=Nitrox XL N1 Lite + +pci:v0000177Dd00000004* + ID_MODEL_FROM_DATABASE=Octeon (and older) FIPS + +pci:v0000177Dd00000005* + ID_MODEL_FROM_DATABASE=Octeon CN38XX Network Processor Pass 3.x + +pci:v0000177Dd00000006* + ID_MODEL_FROM_DATABASE=RoHS + +pci:v0000177Dd00000010* + ID_MODEL_FROM_DATABASE=Nitrox XL NPX + +pci:v0000177Dd00000020* + ID_MODEL_FROM_DATABASE=Octeon CN31XX Network Processor + +pci:v0000177Dd00000030* + ID_MODEL_FROM_DATABASE=Octeon CN30XX Network Processor + +pci:v0000177Dd00000040* + ID_MODEL_FROM_DATABASE=Octeon CN58XX Network Processor + +pci:v0000177Dd00000050* + ID_MODEL_FROM_DATABASE=Octeon CN57XX Network Processor (CN54XX/CN55XX/CN56XX) + +pci:v0000177Dd00000070* + ID_MODEL_FROM_DATABASE=Octeon CN50XX Network Processor + +pci:v0000177Dd00000080* + ID_MODEL_FROM_DATABASE=Octeon CN52XX Network Processor + +pci:v0000177Dd00000090* + ID_MODEL_FROM_DATABASE=Octeon II CN63XX Network Processor + +pci:v0000177Dd00000091* + ID_MODEL_FROM_DATABASE=Octeon II CN68XX Network Processor + +pci:v0000177Dd00000092* + ID_MODEL_FROM_DATABASE=Octeon II CN65XX Network Processor + +pci:v0000177Dd00000093* + ID_MODEL_FROM_DATABASE=Octeon II CN61XX Network Processor + +pci:v0000177Dd00000094* + ID_MODEL_FROM_DATABASE=Octeon Fusion CNF71XX Cell processor + +pci:v0000177Dd00000095* + ID_MODEL_FROM_DATABASE=Octeon III CN78XX Network Processor + +pci:v0000177Dd00000096* + ID_MODEL_FROM_DATABASE=Octeon III CN70XX Network Processor + +pci:v00001787* + ID_VENDOR_FROM_DATABASE=Hightech Information System Ltd. + +pci:v00001789* + ID_VENDOR_FROM_DATABASE=Ennyah Technologies Corp. + +pci:v00001796* + ID_VENDOR_FROM_DATABASE=Research Centre Juelich + +pci:v00001796d00000001* + ID_MODEL_FROM_DATABASE=SIS1100 [Gigabit link] + +pci:v00001796d00000002* + ID_MODEL_FROM_DATABASE=HOTlink + +pci:v00001796d00000003* + ID_MODEL_FROM_DATABASE=Counter Timer + +pci:v00001796d00000004* + ID_MODEL_FROM_DATABASE=CAMAC Controller + +pci:v00001796d00000005* + ID_MODEL_FROM_DATABASE=PROFIBUS + +pci:v00001796d00000006* + ID_MODEL_FROM_DATABASE=AMCC HOTlink + +pci:v00001796d0000000D* + ID_MODEL_FROM_DATABASE=Synchronisation Slave + +pci:v00001796d0000000E* + ID_MODEL_FROM_DATABASE=SIS1100-eCMC + +pci:v00001796d0000000F* + ID_MODEL_FROM_DATABASE=TDC (GPX) + +pci:v00001796d00000010* + ID_MODEL_FROM_DATABASE=PCIe Counter Timer + +pci:v00001796d00000011* + ID_MODEL_FROM_DATABASE=SIS1100-e single link + +pci:v00001796d00000012* + ID_MODEL_FROM_DATABASE=SIS1100-e quad link + +pci:v00001797* + ID_VENDOR_FROM_DATABASE=Techwell Inc. + +pci:v00001797d00006801* + ID_MODEL_FROM_DATABASE=TW6802 multimedia video card + +pci:v00001797d00006802* + ID_MODEL_FROM_DATABASE=TW6802 multimedia other device + +pci:v00001797d00006810* + ID_MODEL_FROM_DATABASE=TW6816 multimedia video controller + +pci:v00001797d00006811* + ID_MODEL_FROM_DATABASE=TW6816 multimedia video controller + +pci:v00001797d00006812* + ID_MODEL_FROM_DATABASE=TW6816 multimedia video controller + +pci:v00001797d00006813* + ID_MODEL_FROM_DATABASE=TW6816 multimedia video controller + +pci:v00001799* + ID_VENDOR_FROM_DATABASE=Belkin + +pci:v00001799d00006001* + ID_MODEL_FROM_DATABASE=F5D6001 Wireless PCI Card [Realtek RTL8180] + +pci:v00001799d00006020* + ID_MODEL_FROM_DATABASE=F5D6020 v3000 Wireless PCMCIA Card [Realtek RTL8180] + +pci:v00001799d00006060* + ID_MODEL_FROM_DATABASE=F5D6060 Wireless PDA Card + +pci:v00001799d0000700F* + ID_MODEL_FROM_DATABASE=F5D7000 v7000 Wireless G Desktop Card [Realtek RTL8185] + +pci:v00001799d0000701F* + ID_MODEL_FROM_DATABASE=F5D7010 v7000 Wireless G Notebook Card [Realtek RTL8185] + +pci:v0000179A* + ID_VENDOR_FROM_DATABASE=id Quantique + +pci:v0000179Ad00000001* + ID_MODEL_FROM_DATABASE=Quantis PCI 16Mbps + +pci:v0000179C* + ID_VENDOR_FROM_DATABASE=Data Patterns + +pci:v0000179Cd00000557* + ID_MODEL_FROM_DATABASE=DP-PCI-557 [PCI 1553B] + +pci:v0000179Cd00000566* + ID_MODEL_FROM_DATABASE=DP-PCI-566 [Intelligent PCI 1553B] + +pci:v0000179Cd00001152* + ID_MODEL_FROM_DATABASE=DP-cPCI-1152 (8-channel Isolated ADC Module) + +pci:v0000179Cd00005031* + ID_MODEL_FROM_DATABASE=DP-CPCI-5031-Synchro Module + +pci:v0000179Cd00005112* + ID_MODEL_FROM_DATABASE=DP-cPCI-5112 [MM-Carrier] + +pci:v0000179Cd00005121* + ID_MODEL_FROM_DATABASE=DP-CPCI-5121-IP Carrier + +pci:v0000179Cd00005211* + ID_MODEL_FROM_DATABASE=DP-CPCI-5211-IP Carrier + +pci:v0000179Cd00005679* + ID_MODEL_FROM_DATABASE=AGE Display Module + +pci:v000017A0* + ID_VENDOR_FROM_DATABASE=Genesys Logic, Inc + +pci:v000017A0d00007163* + ID_MODEL_FROM_DATABASE=GL9701 PCIe to PCI Bridge + +pci:v000017A0d00008083* + ID_MODEL_FROM_DATABASE=GL880 USB 1.1 UHCI controller + +pci:v000017A0d00008084* + ID_MODEL_FROM_DATABASE=GL880 USB 2.0 EHCI controller + +pci:v000017AA* + ID_VENDOR_FROM_DATABASE=Lenovo + +pci:v000017AB* + ID_VENDOR_FROM_DATABASE=Phillips Components + +pci:v000017AF* + ID_VENDOR_FROM_DATABASE=Hightech Information System Ltd. + +pci:v000017B3* + ID_VENDOR_FROM_DATABASE=Hawking Technologies + +pci:v000017B3d0000AB08* + ID_MODEL_FROM_DATABASE=PN672TX 10/100 Ethernet + +pci:v000017B4* + ID_VENDOR_FROM_DATABASE=Indra Networks, Inc. + +pci:v000017B4d00000011* + ID_MODEL_FROM_DATABASE=WebEnhance 100 GZIP Compression Card + +pci:v000017B4d00000012* + ID_MODEL_FROM_DATABASE=WebEnhance 200 GZIP Compression Card + +pci:v000017B4d00000015* + ID_MODEL_FROM_DATABASE=WebEnhance 300 GZIP Compression Card + +pci:v000017B4d00000016* + ID_MODEL_FROM_DATABASE=StorCompress 300 GZIP Compression Card + +pci:v000017B4d00000017* + ID_MODEL_FROM_DATABASE=StorSecure 300 GZIP Compression and AES Encryption Card + +pci:v000017C0* + ID_VENDOR_FROM_DATABASE=Wistron Corp. + +pci:v000017C2* + ID_VENDOR_FROM_DATABASE=Newisys, Inc. + +pci:v000017CB* + ID_VENDOR_FROM_DATABASE=Airgo Networks, Inc. + +pci:v000017CBd00000001* + ID_MODEL_FROM_DATABASE=AGN100 802.11 a/b/g True MIMO Wireless Card + +pci:v000017CBd00000001sv00001385sd00005C00* + ID_MODEL_FROM_DATABASE=WGM511 Pre-N 802.11g Wireless CardBus Adapter + +pci:v000017CBd00000001sv00001737sd00000045* + ID_MODEL_FROM_DATABASE=WMP54GX v1 802.11g Wireless-G PCI Adapter with SRX + +pci:v000017CBd00000002* + ID_MODEL_FROM_DATABASE=AGN300 802.11 a/b/g True MIMO Wireless Card + +pci:v000017CBd00000002sv00001385sd00006D00* + ID_MODEL_FROM_DATABASE=WPNT511 RangeMax 240 Mbps Wireless CardBus Adapter + +pci:v000017CBd00000002sv00001737sd00000054* + ID_MODEL_FROM_DATABASE=WPC54GX4 v1 802.11g Wireless-G Notebook Adapter with SRX400 + +pci:v000017CC* + ID_VENDOR_FROM_DATABASE=NetChip Technology, Inc + +pci:v000017CCd00002280* + ID_MODEL_FROM_DATABASE=USB 2.0 + +pci:v000017CF* + ID_VENDOR_FROM_DATABASE=Z-Com, Inc. + +pci:v000017D3* + ID_VENDOR_FROM_DATABASE=Areca Technology Corp. + +pci:v000017D3d00001110* + ID_MODEL_FROM_DATABASE=ARC-1110 4-Port PCI-X to SATA RAID Controller + +pci:v000017D3d00001120* + ID_MODEL_FROM_DATABASE=ARC-1120 8-Port PCI-X to SATA RAID Controller + +pci:v000017D3d00001130* + ID_MODEL_FROM_DATABASE=ARC-1130 12-Port PCI-X to SATA RAID Controller + +pci:v000017D3d00001160* + ID_MODEL_FROM_DATABASE=ARC-1160 16-Port PCI-X to SATA RAID Controller + +pci:v000017D3d00001170* + ID_MODEL_FROM_DATABASE=ARC-1170 24-Port PCI-X to SATA RAID Controller + +pci:v000017D3d00001201* + ID_MODEL_FROM_DATABASE=ARC-1200 2-Port PCI-Express to SATA II RAID Controller + +pci:v000017D3d00001210* + ID_MODEL_FROM_DATABASE=ARC-1210 4-Port PCI-Express to SATA RAID Controller + +pci:v000017D3d00001220* + ID_MODEL_FROM_DATABASE=ARC-1220 8-Port PCI-Express to SATA RAID Controller + +pci:v000017D3d00001222* + ID_MODEL_FROM_DATABASE=ARC-1222 8-Port PCI-Express to SAS/SATA II RAID Controller + +pci:v000017D3d00001230* + ID_MODEL_FROM_DATABASE=ARC-1230 12-Port PCI-Express to SATA RAID Controller + +pci:v000017D3d00001260* + ID_MODEL_FROM_DATABASE=ARC-1260 16-Port PCI-Express to SATA RAID Controller + +pci:v000017D3d00001280* + ID_MODEL_FROM_DATABASE=ARC-1280/1280ML 24-Port PCI-Express to SATA II RAID Controller + +pci:v000017D3d00001280sv000017D3sd00001221* + ID_MODEL_FROM_DATABASE=ARC-1221 8-Port PCI-Express to SATA RAID Controller + +pci:v000017D3d00001300* + ID_MODEL_FROM_DATABASE=ARC-1300ix-16 16-Port PCI-Express to SAS Non-RAID Host Adapter + +pci:v000017D3d00001680* + ID_MODEL_FROM_DATABASE=ARC-1680 8 port PCIe/PCI-X to SAS/SATA II RAID Controller + +pci:v000017D3d00001680sv000017D3sd00001212* + ID_MODEL_FROM_DATABASE=ARC-1212 4-Port PCIe to SAS/SATA II RAID Controller + +pci:v000017D3d00001880* + ID_MODEL_FROM_DATABASE=ARC-1880 8/12 port PCIe/PCI-X to SAS/SATA II RAID Controller + +pci:v000017D5* + ID_VENDOR_FROM_DATABASE=Exar Corp. + +pci:v000017D5d00005731* + ID_MODEL_FROM_DATABASE=Xframe 10-Gigabit Ethernet PCI-X + +pci:v000017D5d00005732* + ID_MODEL_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 + +pci:v000017D5d00005831* + ID_MODEL_FROM_DATABASE=Xframe 10-Gigabit Ethernet PCI-X + +pci:v000017D5d00005831sv0000103Csd000012D5* + ID_MODEL_FROM_DATABASE=PCI-X 133MHz 10GbE SR Fiber + +pci:v000017D5d00005831sv000010A9sd00008020* + ID_MODEL_FROM_DATABASE=Single Port 10-Gigabit Ethernet (PCI-X, Fiber) + +pci:v000017D5d00005831sv000010A9sd00008024* + ID_MODEL_FROM_DATABASE=Single Port 10-Gigabit Ethernet (PCI-X, Fiber) + +pci:v000017D5d00005832* + ID_MODEL_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 + +pci:v000017D5d00005832sv0000103Csd00001337* + ID_MODEL_FROM_DATABASE=PCI-X 266MHz 10GigE SR [AD385A] + +pci:v000017D5d00005832sv000010A9sd00008021* + ID_MODEL_FROM_DATABASE=Single Port 10-Gigabit Ethernet II (PCI-X, Fiber) + +pci:v000017D5d00005832sv000017D5sd00006020* + ID_MODEL_FROM_DATABASE=Xframe II SR + +pci:v000017D5d00005832sv000017D5sd00006021* + ID_MODEL_FROM_DATABASE=Xframe II SR, Low Profile + +pci:v000017D5d00005832sv000017D5sd00006022* + ID_MODEL_FROM_DATABASE=Xframe E SR + +pci:v000017D5d00005832sv000017D5sd00006420* + ID_MODEL_FROM_DATABASE=Xframe II LR + +pci:v000017D5d00005832sv000017D5sd00006421* + ID_MODEL_FROM_DATABASE=Xframe II LR, Low Profile + +pci:v000017D5d00005832sv000017D5sd00006422* + ID_MODEL_FROM_DATABASE=Xframe E LR + +pci:v000017D5d00005832sv000017D5sd00006C20* + ID_MODEL_FROM_DATABASE=Xframe II CX4 + +pci:v000017D5d00005832sv000017D5sd00006C21* + ID_MODEL_FROM_DATABASE=Xframe II CX4, Low Profile + +pci:v000017D5d00005832sv000017D5sd00006C22* + ID_MODEL_FROM_DATABASE=Xframe E CX4 + +pci:v000017D5d00005833* + ID_MODEL_FROM_DATABASE=X3100 Series 10 Gigabit Ethernet PCIe + +pci:v000017D5d00005833sv000017D5sd00006030* + ID_MODEL_FROM_DATABASE=X3110 Single Port SR + +pci:v000017D5d00005833sv000017D5sd00006031* + ID_MODEL_FROM_DATABASE=X3120 Dual Port SR + +pci:v000017D5d00005833sv000017D5sd00006430* + ID_MODEL_FROM_DATABASE=X3110 Single Port LR + +pci:v000017D5d00005833sv000017D5sd00006431* + ID_MODEL_FROM_DATABASE=X3120 Dual Port LR + +pci:v000017D5d00005833sv000017D5sd00007030* + ID_MODEL_FROM_DATABASE=X3110 Single Port LRM + +pci:v000017D5d00005833sv000017D5sd00007031* + ID_MODEL_FROM_DATABASE=X3120 Dual Port LRM + +pci:v000017D5d00005833sv000017D5sd00007430* + ID_MODEL_FROM_DATABASE=X3110 Single Port 10GBase-T + +pci:v000017D5d00005833sv000017D5sd00007431* + ID_MODEL_FROM_DATABASE=X3120 Dual Port 10GBase-T + +pci:v000017D5d00005833sv000017D5sd00007830* + ID_MODEL_FROM_DATABASE=X3110 Single Port 10GBase-CR + +pci:v000017D5d00005833sv000017D5sd00007831* + ID_MODEL_FROM_DATABASE=X3120 Dual Port 10GBase-CR + +pci:v000017DB* + ID_VENDOR_FROM_DATABASE=Cray Inc + +pci:v000017DBd00000101* + ID_MODEL_FROM_DATABASE=XT Series [Seastar] 3D Toroidal Router + +pci:v000017DE* + ID_VENDOR_FROM_DATABASE=KWorld Computer Co. Ltd. + +pci:v000017E4* + ID_VENDOR_FROM_DATABASE=Sectra AB + +pci:v000017E4d00000001* + ID_MODEL_FROM_DATABASE=KK671 Cardbus encryption board + +pci:v000017E4d00000002* + ID_MODEL_FROM_DATABASE=KK672 Cardbus encryption board + +pci:v000017E6* + ID_VENDOR_FROM_DATABASE=Entropic Communications Inc. + +pci:v000017E6d00000010* + ID_MODEL_FROM_DATABASE=EN2010 [c.Link] MoCA Network Controller (Coax, PCI interface) + +pci:v000017E6d00000011* + ID_MODEL_FROM_DATABASE=EN2010 [c.Link] MoCA Network Controller (Coax, MPEG interface) + +pci:v000017E6d00000021* + ID_MODEL_FROM_DATABASE=EN2210 [c.Link] MoCA Network Controller (Coax) + +pci:v000017E6d00000025* + ID_MODEL_FROM_DATABASE=EN2510 [c.Link] MoCA Network Controller (Coax, PCIe interface) + +pci:v000017E6d00000027* + ID_MODEL_FROM_DATABASE=EN2710 [c.Link] MoCA 2.0 Network Controller (Coax, PCIe interface) + +pci:v000017EE* + ID_VENDOR_FROM_DATABASE=Connect Components Ltd + +pci:v000017F2* + ID_VENDOR_FROM_DATABASE=Albatron Corp. + +pci:v000017F3* + ID_VENDOR_FROM_DATABASE=RDC Semiconductor, Inc. + +pci:v000017F3d00001010* + ID_MODEL_FROM_DATABASE=R1010 IDE Controller + +pci:v000017F3d00006020* + ID_MODEL_FROM_DATABASE=R6020 North Bridge + +pci:v000017F3d00006021* + ID_MODEL_FROM_DATABASE=R6021 Host Bridge + +pci:v000017F3d00006030* + ID_MODEL_FROM_DATABASE=R6030 ISA Bridge + +pci:v000017F3d00006031* + ID_MODEL_FROM_DATABASE=R6031 ISA Bridge + +pci:v000017F3d00006040* + ID_MODEL_FROM_DATABASE=R6040 MAC Controller + +pci:v000017F3d00006060* + ID_MODEL_FROM_DATABASE=R6060 USB 1.1 Controller + +pci:v000017F3d00006061* + ID_MODEL_FROM_DATABASE=R6061 USB 2.0 Controller + +pci:v000017F7* + ID_VENDOR_FROM_DATABASE=Topdek Semiconductor Inc. + +pci:v000017F9* + ID_VENDOR_FROM_DATABASE=Gemtek Technology Co., Ltd + +pci:v000017FC* + ID_VENDOR_FROM_DATABASE=IOGEAR, Inc. + +pci:v000017FE* + ID_VENDOR_FROM_DATABASE=InProComm Inc. + +pci:v000017FEd00002120* + ID_MODEL_FROM_DATABASE=IPN 2120 802.11b + +pci:v000017FEd00002120sv00001737sd00000020* + ID_MODEL_FROM_DATABASE=WMP11 v4 802.11b Wireless-B PCI Adapter + +pci:v000017FEd00002220* + ID_MODEL_FROM_DATABASE=IPN 2220 802.11g + +pci:v000017FEd00002220sv00001468sd00000305* + ID_MODEL_FROM_DATABASE=T60N871 802.11g Mini PCI Wireless Adapter + +pci:v000017FEd00002220sv00001737sd00000029* + ID_MODEL_FROM_DATABASE=WPC54G v4 802.11g Wireless-G Notebook Adapter + +pci:v000017FF* + ID_VENDOR_FROM_DATABASE=Benq Corporation + +pci:v00001803* + ID_VENDOR_FROM_DATABASE=ProdaSafe GmbH + +pci:v00001805* + ID_VENDOR_FROM_DATABASE=Euresys S.A. + +pci:v00001809* + ID_VENDOR_FROM_DATABASE=Lumanate, Inc. + +pci:v00001813* + ID_VENDOR_FROM_DATABASE=Ambient Technologies Inc + +pci:v00001813d00004000* + ID_MODEL_FROM_DATABASE=HaM controllerless modem + +pci:v00001813d00004000sv000016BEsd00000001* + ID_MODEL_FROM_DATABASE=V9x HAM Data Fax Modem + +pci:v00001813d00004100* + ID_MODEL_FROM_DATABASE=HaM plus Data Fax Modem + +pci:v00001813d00004100sv000016BEsd00000002* + ID_MODEL_FROM_DATABASE=V9x HAM 1394 + +pci:v00001814* + ID_VENDOR_FROM_DATABASE=Ralink corp. + +pci:v00001814d00000101* + ID_MODEL_FROM_DATABASE=Wireless PCI Adapter RT2400 / RT2460 + +pci:v00001814d00000101sv00001043sd00000127* + ID_MODEL_FROM_DATABASE=WiFi-b add-on Card + +pci:v00001814d00000101sv00001371sd00000010* + ID_MODEL_FROM_DATABASE=Minitar MNW2BPCI Wireless PCI Card + +pci:v00001814d00000101sv00001462sd00006828* + ID_MODEL_FROM_DATABASE=PC11B2 (MS-6828) Wireless 11b PCI Card + +pci:v00001814d00000200* + ID_MODEL_FROM_DATABASE=RT2500 802.11g PCI [PC54G2] + +pci:v00001814d00000201* + ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg + +pci:v00001814d00000201sv00001043sd0000130F* + ID_MODEL_FROM_DATABASE=WL-130g + +pci:v00001814d00000201sv00001186sd00003C00* + ID_MODEL_FROM_DATABASE=DWL-G650X Wireless 11g CardBus Adapter + +pci:v00001814d00000201sv00001371sd0000001E* + ID_MODEL_FROM_DATABASE=CWC-854 Wireless-G CardBus Adapter + +pci:v00001814d00000201sv00001371sd0000001F* + ID_MODEL_FROM_DATABASE=CWM-854 Wireless-G Mini PCI Adapter + +pci:v00001814d00000201sv00001371sd00000020* + ID_MODEL_FROM_DATABASE=CWP-854 Wireless-G PCI Adapter + +pci:v00001814d00000201sv00001458sd0000E381* + ID_MODEL_FROM_DATABASE=GN-WMKG 802.11b/g Wireless CardBus Adapter + +pci:v00001814d00000201sv00001458sd0000E931* + ID_MODEL_FROM_DATABASE=GN-WIKG 802.11b/g mini-PCI Adapter + +pci:v00001814d00000201sv00001462sd00006833* + ID_MODEL_FROM_DATABASE=Unknown 802.11g mini-PCI Adapter + +pci:v00001814d00000201sv00001462sd00006835* + ID_MODEL_FROM_DATABASE=Wireless 11G CardBus CB54G2 + +pci:v00001814d00000201sv00001737sd00000032* + ID_MODEL_FROM_DATABASE=WMP54G v4.0 PCI Adapter + +pci:v00001814d00000201sv00001799sd0000700A* + ID_MODEL_FROM_DATABASE=F5D7000 v2000/v3000 Wireless G Desktop Card + +pci:v00001814d00000201sv00001799sd0000701A* + ID_MODEL_FROM_DATABASE=F5D7010 v2000/v3000 Wireless G Notebook Card + +pci:v00001814d00000201sv00001814sd00002560* + ID_MODEL_FROM_DATABASE=RT2500 Wireless 802.11bg + +pci:v00001814d00000201sv0000182Dsd00009073* + ID_MODEL_FROM_DATABASE=WL-115 Wireless Network PCI Adapter + +pci:v00001814d00000201sv0000185Fsd000022A0* + ID_MODEL_FROM_DATABASE=CN-WF513 Wireless Cardbus Adapter + +pci:v00001814d00000201sv000018EBsd00005312* + ID_MODEL_FROM_DATABASE=WL531P IEEE 802.11g PCI Card-EU + +pci:v00001814d00000201sv00001948sd00003C00* + ID_MODEL_FROM_DATABASE=C54RC v1 Wireless 11g CardBus Adapter + +pci:v00001814d00000201sv00001948sd00003C01* + ID_MODEL_FROM_DATABASE=C54Ri v1 Wireless 11g PCI Adapter + +pci:v00001814d00000300* + ID_MODEL_FROM_DATABASE=Wireless Adapter Canyon CN-WF511 + +pci:v00001814d00000301* + ID_MODEL_FROM_DATABASE=RT2561/RT61 802.11g PCI + +pci:v00001814d00000301sv00001186sd00003C08* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E1) + +pci:v00001814d00000301sv00001186sd00003C09* + ID_MODEL_FROM_DATABASE=DWL-G510 Rev C + +pci:v00001814d00000301sv000013D1sd0000ABE3* + ID_MODEL_FROM_DATABASE=miniPCI Pluscom 802.11 a/b/g + +pci:v00001814d00000301sv00001458sd0000E933* + ID_MODEL_FROM_DATABASE=GN-WI01GS + +pci:v00001814d00000301sv00001458sd0000E934* + ID_MODEL_FROM_DATABASE=GN-WP01GS + +pci:v00001814d00000301sv00001737sd00000055* + ID_MODEL_FROM_DATABASE=WMP54G v4.1 + +pci:v00001814d00000301sv00001799sd0000700E* + ID_MODEL_FROM_DATABASE=F5D7000 v6000 Wireless G Desktop Card + +pci:v00001814d00000301sv00001799sd0000701E* + ID_MODEL_FROM_DATABASE=F5D7010 v6000 Wireless G Notebook Card + +pci:v00001814d00000301sv000017F9sd00000012* + ID_MODEL_FROM_DATABASE=AWLC3026T 802.11g Wireless CardBus Adapter + +pci:v00001814d00000301sv00001814sd00002561* + ID_MODEL_FROM_DATABASE=EW-7108PCg/EW-7128g + +pci:v00001814d00000302* + ID_MODEL_FROM_DATABASE=RT2561/RT61 rev B 802.11g + +pci:v00001814d00000302sv00001186sd00003A71* + ID_MODEL_FROM_DATABASE=DWA-510 Wireless G Desktop Adapter + +pci:v00001814d00000302sv00001186sd00003C08* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E2) + +pci:v00001814d00000302sv00001186sd00003C09* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G510 Wireless Network Adapter (Rev.C) + +pci:v00001814d00000302sv00001462sd0000B834* + ID_MODEL_FROM_DATABASE=PC54G3 Wireless 11g PCI Card + +pci:v00001814d00000302sv00001948sd00003C23* + ID_MODEL_FROM_DATABASE=C54RC v2 Wireless 11g CardBus Adapter + +pci:v00001814d00000302sv00001948sd00003C24* + ID_MODEL_FROM_DATABASE=C54Ri v2 Wireless 11g PCI Adapter + +pci:v00001814d00000401* + ID_MODEL_FROM_DATABASE=RT2600 802.11 MIMO + +pci:v00001814d00000401sv00001737sd00000052* + ID_MODEL_FROM_DATABASE=WPC54GR v1 802.11g Wireless-G Notebook Adapter with RangeBooster + +pci:v00001814d00000401sv000017F9sd00000011* + ID_MODEL_FROM_DATABASE=WPCR-137G 802.11bg Wireless CardBus Adapter + +pci:v00001814d00000401sv000017F9sd00000016* + ID_MODEL_FROM_DATABASE=WPIR-119GH 802.11bg Wireless Desktop Adapter + +pci:v00001814d00000601* + ID_MODEL_FROM_DATABASE=RT2800 802.11n PCI + +pci:v00001814d00000601sv00001799sd0000801C* + ID_MODEL_FROM_DATABASE=F5D8011 v3 802.11n N1 Wireless Notebook Card + +pci:v00001814d00000601sv0000187Esd00003412* + ID_MODEL_FROM_DATABASE=NWD-310N 802.11n Wireless PCI Adapter + +pci:v00001814d00000681* + ID_MODEL_FROM_DATABASE=RT2890 Wireless 802.11n PCIe + +pci:v00001814d00000681sv00001458sd0000E939* + ID_MODEL_FROM_DATABASE=GN-WS30N-RH 802.11bgn Mini PCIe Card + +pci:v00001814d00000701* + ID_MODEL_FROM_DATABASE=RT2760 Wireless 802.11n 1T/2R + +pci:v00001814d00000701sv00001737sd00000074* + ID_MODEL_FROM_DATABASE=WMP110 v2 802.11n RangePlus Wireless PCI Adapter + +pci:v00001814d00000781* + ID_MODEL_FROM_DATABASE=RT2790 Wireless 802.11n 1T/2R PCIe + +pci:v00001814d00003060* + ID_MODEL_FROM_DATABASE=RT3060 Wireless 802.11n 1T/1R + +pci:v00001814d00003060sv00001186sd00003C04* + ID_MODEL_FROM_DATABASE=DWA-525 Wireless N 150 Desktop Adapter (rev.A1) + +pci:v00001814d00003062* + ID_MODEL_FROM_DATABASE=RT3062 Wireless 802.11n 2T/2R + +pci:v00001814d00003090* + ID_MODEL_FROM_DATABASE=RT3090 Wireless 802.11n 1T/1R PCIe + +pci:v00001814d00003090sv000013BDsd00001057* + ID_MODEL_FROM_DATABASE=GN-WS32L-RH Half-size Mini PCIe Card + +pci:v00001814d00003091* + ID_MODEL_FROM_DATABASE=RT3091 Wireless 802.11n 1T/2R PCIe + +pci:v00001814d00003092* + ID_MODEL_FROM_DATABASE=RT3092 Wireless 802.11n 2T/2R PCIe + +pci:v00001814d00003290* + ID_MODEL_FROM_DATABASE=RT3290 Wireless 802.11n 1T/1R PCIe + +pci:v00001814d00003298* + ID_MODEL_FROM_DATABASE=RT3290 Bluetooth + +pci:v00001814d00003592* + ID_MODEL_FROM_DATABASE=RT3592 Wireless 802.11abgn 2T/2R PCIe + +pci:v00001814d00005360* + ID_MODEL_FROM_DATABASE=RT5360 Wireless 802.11n 1T/1R + +pci:v00001814d00005360sv00001186sd00003C05* + ID_MODEL_FROM_DATABASE=DWA-525 Wireless N 150 Desktop Adapter (rev.A2) + +pci:v00001814d00005360sv000020F4sd0000703A* + ID_MODEL_FROM_DATABASE=TEW-703PI N150 Wireless PCI Adapter + +pci:v00001814d00005390* + ID_MODEL_FROM_DATABASE=RT5390 Wireless 802.11n 1T/1R PCIe + +pci:v00001814d00005390sv0000103Csd00001636* + ID_MODEL_FROM_DATABASE=U98Z077.00 Half-size Mini PCIe Card + +pci:v00001814d0000539F* + ID_MODEL_FROM_DATABASE=RT5390 [802.11 b/g/n 1T1R G-band PCI Express Single Chip] + +pci:v00001814d0000539Fsv0000103Csd00001637* + ID_MODEL_FROM_DATABASE=Pavilion DM1Z-3000 PCIe wireless card + +pci:v00001814d0000E932* + ID_MODEL_FROM_DATABASE=RT2560F 802.11 b/g PCI + +pci:v00001815* + ID_VENDOR_FROM_DATABASE=Devolo AG + +pci:v00001820* + ID_VENDOR_FROM_DATABASE=InfiniCon Systems Inc. + +pci:v00001822* + ID_VENDOR_FROM_DATABASE=Twinhan Technology Co. Ltd + +pci:v00001822d00004E35* + ID_MODEL_FROM_DATABASE=Mantis DTV PCI Bridge Controller [Ver 1.0] + +pci:v0000182D* + ID_VENDOR_FROM_DATABASE=SiteCom Europe BV + +pci:v0000182Dd00003069* + ID_MODEL_FROM_DATABASE=ISDN PCI DC-105V2 + +pci:v0000182Dd00009790* + ID_MODEL_FROM_DATABASE=WL-121 Wireless Network Adapter 100g+ [Ver.3] + +pci:v0000182E* + ID_VENDOR_FROM_DATABASE=Raza Microelectronics, Inc. + +pci:v0000182Ed00000008* + ID_MODEL_FROM_DATABASE=XLR516 Processor + +pci:v0000182F* + ID_VENDOR_FROM_DATABASE=Broadcom + +pci:v0000182Fd0000000B* + ID_MODEL_FROM_DATABASE=BCM5785 [HT1000] SATA (RAID Mode) + +pci:v00001830* + ID_VENDOR_FROM_DATABASE=Credence Systems Corporation + +pci:v0000183B* + ID_VENDOR_FROM_DATABASE=MikroM GmbH + +pci:v0000183Bd000008A7* + ID_MODEL_FROM_DATABASE=MVC100 DVI + +pci:v0000183Bd000008A8* + ID_MODEL_FROM_DATABASE=MVC101 SDI + +pci:v0000183Bd000008A9* + ID_MODEL_FROM_DATABASE=MVC102 DVI+Audio + +pci:v0000183Bd000008B0* + ID_MODEL_FROM_DATABASE=MVC200-DC + +pci:v00001846* + ID_VENDOR_FROM_DATABASE=Alcatel-Lucent + +pci:v00001849* + ID_VENDOR_FROM_DATABASE=ASRock Incorporation + +pci:v0000184A* + ID_VENDOR_FROM_DATABASE=Thales Computers + +pci:v0000184Ad00001100* + ID_MODEL_FROM_DATABASE=MAX II cPLD + +pci:v00001851* + ID_VENDOR_FROM_DATABASE=Microtune, Inc. + +pci:v00001852* + ID_VENDOR_FROM_DATABASE=Anritsu Corp. + +pci:v00001853* + ID_VENDOR_FROM_DATABASE=SMSC Automotive Infotainment System Group + +pci:v00001854* + ID_VENDOR_FROM_DATABASE=LG Electronics, Inc. + +pci:v0000185B* + ID_VENDOR_FROM_DATABASE=Compro Technology, Inc. + +pci:v0000185Bd00001489* + ID_MODEL_FROM_DATABASE=VideoMate Vista T100 + +pci:v0000185F* + ID_VENDOR_FROM_DATABASE=Wistron NeWeb Corp. + +pci:v00001864* + ID_VENDOR_FROM_DATABASE=SilverBack + +pci:v00001864d00002110* + ID_MODEL_FROM_DATABASE=ISNAP 2110 + +pci:v00001867* + ID_VENDOR_FROM_DATABASE=Topspin Communications + +pci:v00001867d00005A44* + ID_MODEL_FROM_DATABASE=MT23108 InfiniHost HCA + +pci:v00001867d00005A45* + ID_MODEL_FROM_DATABASE=MT23108 InfiniHost HCA flash recovery + +pci:v00001867d00005A46* + ID_MODEL_FROM_DATABASE=MT23108 InfiniHost HCA bridge + +pci:v00001867d00006278* + ID_MODEL_FROM_DATABASE=MT25208 InfiniHost III Ex (Tavor compatibility mode) + +pci:v00001867d00006282* + ID_MODEL_FROM_DATABASE=MT25208 InfiniHost III Ex + +pci:v0000186C* + ID_VENDOR_FROM_DATABASE=Humusoft, s.r.o. + +pci:v0000186Cd00000612* + ID_MODEL_FROM_DATABASE=AD612 Data Acquisition Device + +pci:v0000186Cd00000614* + ID_MODEL_FROM_DATABASE=MF614 Multifunction I/O Card + +pci:v0000186Cd00000622* + ID_MODEL_FROM_DATABASE=AD622 Data Acquisition Device + +pci:v0000186Cd00000624* + ID_MODEL_FROM_DATABASE=MF624 Multifunction I/O Card + +pci:v0000186Cd00000625* + ID_MODEL_FROM_DATABASE=MF625 3-phase Motor Driver + +pci:v0000186F* + ID_VENDOR_FROM_DATABASE=WiNRADiO Communications + +pci:v00001876* + ID_VENDOR_FROM_DATABASE=L-3 Communications + +pci:v00001876d0000A101* + ID_MODEL_FROM_DATABASE=VigraWATCH PCI + +pci:v00001876d0000A102* + ID_MODEL_FROM_DATABASE=VigraWATCH PMC + +pci:v00001876d0000A103* + ID_MODEL_FROM_DATABASE=Vigra I/O + +pci:v0000187E* + ID_VENDOR_FROM_DATABASE=ZyXEL Communications Corporation + +pci:v0000187Ed00003403* + ID_MODEL_FROM_DATABASE=ZyAir G-110 802.11g + +pci:v0000187Ed0000340E* + ID_MODEL_FROM_DATABASE=M-302 802.11g XtremeMIMO + +pci:v00001885* + ID_VENDOR_FROM_DATABASE=Avvida Systems Inc. + +pci:v00001888* + ID_VENDOR_FROM_DATABASE=Varisys Ltd + +pci:v00001888d00000301* + ID_MODEL_FROM_DATABASE=VMFX1 FPGA PMC module + +pci:v00001888d00000601* + ID_MODEL_FROM_DATABASE=VSM2 dual PMC carrier + +pci:v00001888d00000710* + ID_MODEL_FROM_DATABASE=VS14x series PowerPC PCI board + +pci:v00001888d00000720* + ID_MODEL_FROM_DATABASE=VS24x series PowerPC PCI board + +pci:v0000188A* + ID_VENDOR_FROM_DATABASE=Ample Communications, Inc + +pci:v00001890* + ID_VENDOR_FROM_DATABASE=Egenera, Inc. + +pci:v00001894* + ID_VENDOR_FROM_DATABASE=KNC One + +pci:v00001896* + ID_VENDOR_FROM_DATABASE=B&B Electronics Manufacturing Company, Inc. + +pci:v00001896d00004202* + ID_MODEL_FROM_DATABASE=MIport 3PCIU2 2-port Serial + +pci:v00001896d00004204* + ID_MODEL_FROM_DATABASE=MIport 3PCIU4 4-port Serial + +pci:v00001896d00004208* + ID_MODEL_FROM_DATABASE=MIport 3PCIU8 8-port Serial + +pci:v00001896d00004211* + ID_MODEL_FROM_DATABASE=MIport 3PCIOU1 1-port Isolated Serial + +pci:v00001896d00004212* + ID_MODEL_FROM_DATABASE=MIport 3PCIOU2 2-port Isolated Serial + +pci:v00001896d00004214* + ID_MODEL_FROM_DATABASE=MIport 3PCIOU4 4-port Isolated Serial + +pci:v00001896d0000BB10* + ID_MODEL_FROM_DATABASE=3PCI2 2-Port Serial + +pci:v00001896d0000BB11* + ID_MODEL_FROM_DATABASE=3PCIO1 1-Port Isolated Serial + +pci:v00001897* + ID_VENDOR_FROM_DATABASE=AMtek + +pci:v000018A1* + ID_VENDOR_FROM_DATABASE=Astute Networks Inc. + +pci:v000018A2* + ID_VENDOR_FROM_DATABASE=Stretch Inc. + +pci:v000018A2d00000002* + ID_MODEL_FROM_DATABASE=VRC6016 16-Channel PCIe DVR Card + +pci:v000018A3* + ID_VENDOR_FROM_DATABASE=AT&T + +pci:v000018AC* + ID_VENDOR_FROM_DATABASE=DViCO Corporation + +pci:v000018ACd0000D500* + ID_MODEL_FROM_DATABASE=FusionHDTV 5 + +pci:v000018ACd0000D800* + ID_MODEL_FROM_DATABASE=FusionHDTV 3 Gold + +pci:v000018ACd0000D810* + ID_MODEL_FROM_DATABASE=FusionHDTV 3 Gold-Q + +pci:v000018ACd0000D820* + ID_MODEL_FROM_DATABASE=FusionHDTV 3 Gold-T + +pci:v000018ACd0000DB30* + ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T Pro + +pci:v000018ACd0000DB40* + ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T Hybrid + +pci:v000018ACd0000DB78* + ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T Dual Express + +pci:v000018B8* + ID_VENDOR_FROM_DATABASE=Ammasso + +pci:v000018B8d0000B001* + ID_MODEL_FROM_DATABASE=AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor + +pci:v000018BC* + ID_VENDOR_FROM_DATABASE=Info-Tek Corp. + +pci:v000018C3* + ID_VENDOR_FROM_DATABASE=Micronas Semiconductor Holding AG + +pci:v000018C3d00000720* + ID_MODEL_FROM_DATABASE=nGene PCI-Express Multimedia Controller + +pci:v000018C3d00000720sv000007CAsd0000032E* + ID_MODEL_FROM_DATABASE=Hybrid M779 PCI-E + +pci:v000018C8* + ID_VENDOR_FROM_DATABASE=Cray Inc + +pci:v000018C9* + ID_VENDOR_FROM_DATABASE=ARVOO Engineering BV + +pci:v000018CA* + ID_VENDOR_FROM_DATABASE=XGI Technology Inc. (eXtreme Graphics Innovation) + +pci:v000018CAd00000020* + ID_MODEL_FROM_DATABASE=Z7/Z9 (XG20 core) + +pci:v000018CAd00000021* + ID_MODEL_FROM_DATABASE=Z9s/Z9m (XG21 core) + +pci:v000018CAd00000027* + ID_MODEL_FROM_DATABASE=Z11/Z11M + +pci:v000018CAd00000040* + ID_MODEL_FROM_DATABASE=Volari V3XT/V5/V8 + +pci:v000018CAd00000047* + ID_MODEL_FROM_DATABASE=Volari 8300 (chip: XP10, codename: XG47) + +pci:v000018D2* + ID_VENDOR_FROM_DATABASE=Sitecom Europe BV (Wrong ID) + +pci:v000018D2d00003069* + ID_MODEL_FROM_DATABASE=DC-105v2 ISDN controller + +pci:v000018D8* + ID_VENDOR_FROM_DATABASE=Dialogue Technology Corp. + +pci:v000018DD* + ID_VENDOR_FROM_DATABASE=Artimi Inc + +pci:v000018DDd00004C6F* + ID_MODEL_FROM_DATABASE=Artimi RTMI-100 UWB adapter + +pci:v000018E6* + ID_VENDOR_FROM_DATABASE=MPL AG + +pci:v000018E6d00000001* + ID_MODEL_FROM_DATABASE=OSCI [Octal Serial Communication Interface] + +pci:v000018EB* + ID_VENDOR_FROM_DATABASE=Advance Multimedia Internet Technology, Inc. + +pci:v000018EC* + ID_VENDOR_FROM_DATABASE=Cesnet, z.s.p.o. + +pci:v000018ECd00006D05* + ID_MODEL_FROM_DATABASE=ML555 + +pci:v000018ECd00006D05sv000018ECsd00000100* + ID_MODEL_FROM_DATABASE=NIC (ethernet interfaces) + +pci:v000018ECd00006D05sv000018ECsd00000200* + ID_MODEL_FROM_DATABASE=NIC (szedata2) 4x1G + +pci:v000018ECd00006D05sv000018ECsd00000201* + ID_MODEL_FROM_DATABASE=NIC (szedata2) 2x10G + +pci:v000018ECd00006D05sv000018ECsd00000300* + ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 4x1G + +pci:v000018ECd00006D05sv000018ECsd00000302* + ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 2x10G + +pci:v000018ECd00006D05sv000018ECsd00004200* + ID_MODEL_FROM_DATABASE=Flexible FlowMon (szedata2) 1x10G + +pci:v000018ECd00006D05sv000018ECsd0000FF00* + ID_MODEL_FROM_DATABASE=Testing design + +pci:v000018ECd00006D05sv000018ECsd0000FF01* + ID_MODEL_FROM_DATABASE=Boot design + +pci:v000018ECd0000C006* + ID_MODEL_FROM_DATABASE=COMBO6 + +pci:v000018ECd0000C006sv000018ECsd0000D001* + ID_MODEL_FROM_DATABASE=COMBO-4MTX + +pci:v000018ECd0000C006sv000018ECsd0000D002* + ID_MODEL_FROM_DATABASE=COMBO-4SFP + +pci:v000018ECd0000C006sv000018ECsd0000D003* + ID_MODEL_FROM_DATABASE=COMBO-4SFPRO + +pci:v000018ECd0000C006sv000018ECsd0000D004* + ID_MODEL_FROM_DATABASE=COMBO-2XFP + +pci:v000018ECd0000C032* + ID_MODEL_FROM_DATABASE=COMBO-LXT110 + +pci:v000018ECd0000C032sv000018ECsd00000100* + ID_MODEL_FROM_DATABASE=NIC (ethernet interfaces) + +pci:v000018ECd0000C032sv000018ECsd00000200* + ID_MODEL_FROM_DATABASE=NIC (szedata2) 4x1G + +pci:v000018ECd0000C032sv000018ECsd00000201* + ID_MODEL_FROM_DATABASE=NIC (szedata2) 2x10G + +pci:v000018ECd0000C032sv000018ECsd00000300* + ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 4x1G + +pci:v000018ECd0000C032sv000018ECsd00000302* + ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 2x10G + +pci:v000018ECd0000C032sv000018ECsd00004200* + ID_MODEL_FROM_DATABASE=Flexible FlowMon (szedata2) 1x10G + +pci:v000018ECd0000C032sv000018ECsd0000FF00* + ID_MODEL_FROM_DATABASE=Testing design + +pci:v000018ECd0000C032sv000018ECsd0000FF01* + ID_MODEL_FROM_DATABASE=Boot design + +pci:v000018ECd0000C045* + ID_MODEL_FROM_DATABASE=COMBO6E + +pci:v000018ECd0000C050* + ID_MODEL_FROM_DATABASE=COMBO-PTM + +pci:v000018ECd0000C058* + ID_MODEL_FROM_DATABASE=COMBO6X + +pci:v000018ECd0000C058sv000018ECsd0000D001* + ID_MODEL_FROM_DATABASE=COMBO-4MTX + +pci:v000018ECd0000C058sv000018ECsd0000D002* + ID_MODEL_FROM_DATABASE=COMBO-4SFP + +pci:v000018ECd0000C058sv000018ECsd0000D003* + ID_MODEL_FROM_DATABASE=COMBO-4SFPRO + +pci:v000018ECd0000C058sv000018ECsd0000D004* + ID_MODEL_FROM_DATABASE=COMBO-2XFP + +pci:v000018ECd0000C132* + ID_MODEL_FROM_DATABASE=COMBO-LXT155 + +pci:v000018ECd0000C132sv000018ECsd00000100* + ID_MODEL_FROM_DATABASE=NIC (ethernet interfaces) + +pci:v000018ECd0000C132sv000018ECsd00000200* + ID_MODEL_FROM_DATABASE=NIC (szedata2) 4x1G + +pci:v000018ECd0000C132sv000018ECsd00000201* + ID_MODEL_FROM_DATABASE=NIC (szedata2) 2x10G + +pci:v000018ECd0000C132sv000018ECsd00000300* + ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 4x1G + +pci:v000018ECd0000C132sv000018ECsd00000302* + ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 2x10G + +pci:v000018ECd0000C132sv000018ECsd00004200* + ID_MODEL_FROM_DATABASE=Flexible FlowMon (szedata2) 1x10G + +pci:v000018ECd0000C132sv000018ECsd0000FF00* + ID_MODEL_FROM_DATABASE=Testing design + +pci:v000018ECd0000C132sv000018ECsd0000FF01* + ID_MODEL_FROM_DATABASE=Boot design + +pci:v000018ECd0000C232* + ID_MODEL_FROM_DATABASE=COMBO-FXT100 + +pci:v000018ECd0000C232sv000018ECsd00000100* + ID_MODEL_FROM_DATABASE=NIC (ethernet interfaces) + +pci:v000018ECd0000C232sv000018ECsd00000200* + ID_MODEL_FROM_DATABASE=NIC (szedata2) 4x1G + +pci:v000018ECd0000C232sv000018ECsd00000201* + ID_MODEL_FROM_DATABASE=NIC (szedata2) 2x10G + +pci:v000018ECd0000C232sv000018ECsd00000300* + ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 4x1G + +pci:v000018ECd0000C232sv000018ECsd00000302* + ID_MODEL_FROM_DATABASE=NIFIC (szedata2) 2x10G + +pci:v000018ECd0000C232sv000018ECsd00004200* + ID_MODEL_FROM_DATABASE=Flexible FlowMon (szedata2) 1x10G + +pci:v000018ECd0000C232sv000018ECsd0000FF00* + ID_MODEL_FROM_DATABASE=Testing design + +pci:v000018ECd0000C232sv000018ECsd0000FF01* + ID_MODEL_FROM_DATABASE=Boot design + +pci:v000018EE* + ID_VENDOR_FROM_DATABASE=Chenming Mold Ind. Corp. + +pci:v000018F1* + ID_VENDOR_FROM_DATABASE=Spectrum GmbH + +pci:v000018F4* + ID_VENDOR_FROM_DATABASE=Napatech A/S + +pci:v000018F4d00000031* + ID_MODEL_FROM_DATABASE=NT20X Network Adapter + +pci:v000018F4d00000051* + ID_MODEL_FROM_DATABASE=NT20X Capture Card + +pci:v000018F4d00000061* + ID_MODEL_FROM_DATABASE=NT20E Capture Card + +pci:v000018F4d00000064* + ID_MODEL_FROM_DATABASE=NT20E Inline Card + +pci:v000018F4d00000071* + ID_MODEL_FROM_DATABASE=NT4E Capture Card + +pci:v000018F4d00000074* + ID_MODEL_FROM_DATABASE=NT4E Inline Card + +pci:v000018F4d00000081* + ID_MODEL_FROM_DATABASE=NT4E 4-port Expansion Card + +pci:v000018F4d00000091* + ID_MODEL_FROM_DATABASE=NT20X Capture Card [New Rev] + +pci:v000018F4d000000A1* + ID_MODEL_FROM_DATABASE=NT4E-STD Capture Card + +pci:v000018F4d000000A4* + ID_MODEL_FROM_DATABASE=NT4E-STD Inline Card + +pci:v000018F4d000000B1* + ID_MODEL_FROM_DATABASE=NTBPE Optical Bypass Adapter + +pci:v000018F4d000000C5* + ID_MODEL_FROM_DATABASE=NT20E2 Network Adapter 2x10Gb + +pci:v000018F4d000000D5* + ID_MODEL_FROM_DATABASE=NT40E2-4 Network Adapter 4x10Gb + +pci:v000018F4d000000E5* + ID_MODEL_FROM_DATABASE=NT40E2-1 Network Adapter 1x40Gb + +pci:v000018F4d000000F5* + ID_MODEL_FROM_DATABASE=NT4E2-4T-BP Network Adapter 4x1Gb with Electrical Bypass + +pci:v000018F6* + ID_VENDOR_FROM_DATABASE=NextIO + +pci:v000018F6d00001000* + ID_MODEL_FROM_DATABASE=[Nexsis] Switch Virtual P2P PCIe Bridge + +pci:v000018F6d00001001* + ID_MODEL_FROM_DATABASE=[Texsis] Switch Virtual P2P PCIe Bridge + +pci:v000018F6d00001050* + ID_MODEL_FROM_DATABASE=[Nexsis] Switch Virtual P2P PCI Bridge + +pci:v000018F6d00001051* + ID_MODEL_FROM_DATABASE=[Texsis] Switch Virtual P2P PCI Bridge + +pci:v000018F6d00002000* + ID_MODEL_FROM_DATABASE=[Nexsis] Switch Integrated Mgmt. Endpoint + +pci:v000018F6d00002001* + ID_MODEL_FROM_DATABASE=[Texsis] Switch Integrated Mgmt. Endpoint + +pci:v000018F7* + ID_VENDOR_FROM_DATABASE=Commtech, Inc. + +pci:v000018F7d00000001* + ID_MODEL_FROM_DATABASE=ESCC-PCI-335 Serial PCI Adapter [Fastcom] + +pci:v000018F7d00000002* + ID_MODEL_FROM_DATABASE=422/4-PCI-335 Serial PCI Adapter [Fastcom] + +pci:v000018F7d00000003* + ID_MODEL_FROM_DATABASE=232/4-1M-PCI Serial PCI Adapter [Fastcom] + +pci:v000018F7d00000004* + ID_MODEL_FROM_DATABASE=422/2-PCI-335 Serial PCI Adapter [Fastcom] + +pci:v000018F7d00000005* + ID_MODEL_FROM_DATABASE=IGESCC-PCI-ISO/1 Serial PCI Adapter [Fastcom] + +pci:v000018F7d0000000A* + ID_MODEL_FROM_DATABASE=232/4-PCI-335 Serial PCI Adapter [Fastcom] + +pci:v000018F7d0000000B* + ID_MODEL_FROM_DATABASE=232/8-PCI-335 Serial PCI Adapter [Fastcom] + +pci:v000018F7d0000000F* + ID_MODEL_FROM_DATABASE=FSCC Serial PCI Adapter [Fastcom] + +pci:v000018F7d00000010* + ID_MODEL_FROM_DATABASE=GSCC Serial PCI Adapter [Fastcom] + +pci:v000018F7d00000011* + ID_MODEL_FROM_DATABASE=QSSB Serial PCI Adapter [Fastcom] + +pci:v000018F7d00000014* + ID_MODEL_FROM_DATABASE=SuperFSCC Serial PCI Adapter [Fastcom] + +pci:v000018F7d00000015* + ID_MODEL_FROM_DATABASE=SuperFSCC-104-LVDS Serial PC/104+ Adapter [Fastcom] + +pci:v000018F7d00000016* + ID_MODEL_FROM_DATABASE=FSCC-232 RS-232 Serial PCI Adapter [Fastcom] + +pci:v000018F7d00000017* + ID_MODEL_FROM_DATABASE=SuperFSCC-104 Serial PC/104+ Adapter [Fastcom] + +pci:v000018F7d00000018* + ID_MODEL_FROM_DATABASE=SuperFSCC/4 Serial PCI Adapter [Fastcom] + +pci:v000018F7d00000019* + ID_MODEL_FROM_DATABASE=SuperFSCC Serial PCI Adapter [Fastcom] + +pci:v000018F7d0000001A* + ID_MODEL_FROM_DATABASE=SuperFSCC-LVDS Serial PCI Adapter [Fastcom] + +pci:v000018F7d0000001B* + ID_MODEL_FROM_DATABASE=FSCC/4 Serial PCI Adapter [Fastcom] + +pci:v000018F7d0000001C* + ID_MODEL_FROM_DATABASE=SuperFSCC/4-LVDS Serial PCI Adapter [Fastcom] + +pci:v000018F7d0000001D* + ID_MODEL_FROM_DATABASE=FSCC Serial PCI Adapter [Fastcom] + +pci:v000018F7d0000001E* + ID_MODEL_FROM_DATABASE=SuperFSCC/4 Serial PCIe Adapter [Fastcom] + +pci:v000018F7d0000001F* + ID_MODEL_FROM_DATABASE=SuperFSCC/4 Serial cPCI Adapter [Fastcom] + +pci:v000018F7d00000020* + ID_MODEL_FROM_DATABASE=422/4-PCIe Serial PCIe Adapter [Fastcom] + +pci:v000018F7d00000021* + ID_MODEL_FROM_DATABASE=422/8-PCIe Serial PCIe Adapter [Fastcom] + +pci:v000018FB* + ID_VENDOR_FROM_DATABASE=Resilience Corporation + +pci:v00001904* + ID_VENDOR_FROM_DATABASE=Hangzhou Silan Microelectronics Co., Ltd. + +pci:v00001904d00002031* + ID_MODEL_FROM_DATABASE=SC92031 PCI Fast Ethernet Adapter + +pci:v00001904d00008139* + ID_MODEL_FROM_DATABASE=RTL8139D [Realtek] PCI 10/100BaseTX ethernet adaptor + +pci:v00001905* + ID_VENDOR_FROM_DATABASE=Micronas USA, Inc. + +pci:v00001912* + ID_VENDOR_FROM_DATABASE=Renesas Technology Corp. + +pci:v00001912d00000002* + ID_MODEL_FROM_DATABASE=SH7780 PCI Controller (PCIC) + +pci:v00001912d00000011* + ID_MODEL_FROM_DATABASE=SH7757 PCIe End-Point [PBI] + +pci:v00001912d00000012* + ID_MODEL_FROM_DATABASE=SH7757 PCIe-PCI Bridge [PPB] + +pci:v00001912d00000013* + ID_MODEL_FROM_DATABASE=SH7757 PCIe Switch [PS] + +pci:v00001912d00000014* + ID_MODEL_FROM_DATABASE=uPD720201 USB 3.0 Host Controller + +pci:v00001919* + ID_VENDOR_FROM_DATABASE=Soltek Computer Inc. + +pci:v00001923* + ID_VENDOR_FROM_DATABASE=Sangoma Technologies Corp. + +pci:v00001923d00000040* + ID_MODEL_FROM_DATABASE=A200/Remora FXO/FXS Analog AFT card + +pci:v00001923d00000100* + ID_MODEL_FROM_DATABASE=A104d QUAD T1/E1 AFT card + +pci:v00001923d00000300* + ID_MODEL_FROM_DATABASE=A101 single-port T1/E1 + +pci:v00001923d00000400* + ID_MODEL_FROM_DATABASE=A104u Quad T1/E1 AFT + +pci:v00001924* + ID_VENDOR_FROM_DATABASE=Solarflare Communications + +pci:v00001924d00000703* + ID_MODEL_FROM_DATABASE=SFC4000 rev A net [Solarstorm] + +pci:v00001924d00000703sv000010B8sd00000102* + ID_MODEL_FROM_DATABASE=SMC10GPCIe-10BT (A2) [TigerCard] + +pci:v00001924d00000703sv000010B8sd00000103* + ID_MODEL_FROM_DATABASE=SMC10GPCIe-10BT (A3) [TigerCard] + +pci:v00001924d00000703sv000010B8sd00000201* + ID_MODEL_FROM_DATABASE=SMC10GPCIe-XFP (A1) [TigerCard] + +pci:v00001924d00000703sv00001924sd00000101* + ID_MODEL_FROM_DATABASE=SFE4001-A1 + +pci:v00001924d00000703sv00001924sd00000102* + ID_MODEL_FROM_DATABASE=SFE4001-A2 + +pci:v00001924d00000703sv00001924sd00000103* + ID_MODEL_FROM_DATABASE=SFE4001-A3 + +pci:v00001924d00000703sv00001924sd00000201* + ID_MODEL_FROM_DATABASE=SFE4002-A1 + +pci:v00001924d00000703sv00001924sd00000301* + ID_MODEL_FROM_DATABASE=SFE4003-A1 + +pci:v00001924d00000703sv00001924sd00000302* + ID_MODEL_FROM_DATABASE=SFE4003-A2 + +pci:v00001924d00000703sv00001924sd00000303* + ID_MODEL_FROM_DATABASE=SFE4003-A3 + +pci:v00001924d00000703sv00001924sd00000304* + ID_MODEL_FROM_DATABASE=SFE4003-A4 + +pci:v00001924d00000703sv00001924sd00000500* + ID_MODEL_FROM_DATABASE=SFE4005-A0 + +pci:v00001924d00000710* + ID_MODEL_FROM_DATABASE=SFC4000 rev B [Solarstorm] + +pci:v00001924d00000710sv000010B8sd00000103* + ID_MODEL_FROM_DATABASE=SMC10GPCIe-10BT (A3) [TigerCard] + +pci:v00001924d00000710sv000010B8sd00000201* + ID_MODEL_FROM_DATABASE=SMC10GPCIe-XFP (A1) [TigerCard] + +pci:v00001924d00000710sv00001924sd00000102* + ID_MODEL_FROM_DATABASE=SFE4001-A2 + +pci:v00001924d00000710sv00001924sd00000103* + ID_MODEL_FROM_DATABASE=SFE4001-A3 + +pci:v00001924d00000710sv00001924sd00000201* + ID_MODEL_FROM_DATABASE=SFE4002-A1 + +pci:v00001924d00000710sv00001924sd00000302* + ID_MODEL_FROM_DATABASE=SFE4003-A2 + +pci:v00001924d00000710sv00001924sd00000303* + ID_MODEL_FROM_DATABASE=SFE4003-A3 + +pci:v00001924d00000710sv00001924sd00000304* + ID_MODEL_FROM_DATABASE=SFE4003-A4 + +pci:v00001924d00000710sv00001924sd00000500* + ID_MODEL_FROM_DATABASE=SFE4005-A0 + +pci:v00001924d00000710sv00001924sd00005102* + ID_MODEL_FROM_DATABASE=SFN4111T-A2 + +pci:v00001924d00000710sv00001924sd00005103* + ID_MODEL_FROM_DATABASE=SFN4111T-R3 + +pci:v00001924d00000710sv00001924sd00005104* + ID_MODEL_FROM_DATABASE=SFN4111T-R4 + +pci:v00001924d00000710sv00001924sd00005105* + ID_MODEL_FROM_DATABASE=SFN4111T-R5 + +pci:v00001924d00000710sv00001924sd00005201* + ID_MODEL_FROM_DATABASE=SFN4112F-R1 + +pci:v00001924d00000710sv00001924sd00005202* + ID_MODEL_FROM_DATABASE=SFN4112F-R2 + +pci:v00001924d00000803* + ID_MODEL_FROM_DATABASE=SFC9020 [Solarstorm] + +pci:v00001924d00000803sv00001924sd00001201* + ID_MODEL_FROM_DATABASE=SFA6902F-R1 SFP+ AOE Adapter + +pci:v00001924d00000803sv00001924sd00006200* + ID_MODEL_FROM_DATABASE=SFN5122F-R0 SFP+ Server Adapter + +pci:v00001924d00000803sv00001924sd00006201* + ID_MODEL_FROM_DATABASE=SFN5122F-R1 SFP+ Server Adapter + +pci:v00001924d00000803sv00001924sd00006202* + ID_MODEL_FROM_DATABASE=SFN5122F-R2 SFP+ Server Adapter + +pci:v00001924d00000803sv00001924sd00006204* + ID_MODEL_FROM_DATABASE=SFN5122F-R4 SFP+ Server Adapter + +pci:v00001924d00000803sv00001924sd00006205* + ID_MODEL_FROM_DATABASE=SFN5122F-R5 SFP+ Server Adapter + +pci:v00001924d00000803sv00001924sd00006206* + ID_MODEL_FROM_DATABASE=SFN5122F-R6 SFP+ Server Adapter + +pci:v00001924d00000803sv00001924sd00006207* + ID_MODEL_FROM_DATABASE=SFN5122F-R7 SFP+ Server Adapter + +pci:v00001924d00000803sv00001924sd00006210* + ID_MODEL_FROM_DATABASE=SFN5322F-R0 SFP+ Precision Time Synchronization Server Adapter + +pci:v00001924d00000803sv00001924sd00006211* + ID_MODEL_FROM_DATABASE=SFN5322F-R1 SFP+ Precision Time Synchronization Server Adapter + +pci:v00001924d00000803sv00001924sd00006217* + ID_MODEL_FROM_DATABASE=SFN5322F-R7 SFP+ Precision Time Synchronization Server Adapter + +pci:v00001924d00000803sv00001924sd00006227* + ID_MODEL_FROM_DATABASE=SFN6122F-R7 SFP+ Server Adapter + +pci:v00001924d00000803sv00001924sd00006237* + ID_MODEL_FROM_DATABASE=SFN6322F-R7 SFP+ Precision Time Synchronization Server Adapter + +pci:v00001924d00000803sv00001924sd00006501* + ID_MODEL_FROM_DATABASE=SFN5802K-R1 Mezzanine Adapter + +pci:v00001924d00000803sv00001924sd00006511* + ID_MODEL_FROM_DATABASE=SFN5814H-R1 Mezzanine Adapter + +pci:v00001924d00000803sv00001924sd00006521* + ID_MODEL_FROM_DATABASE=SFN5812H-R1 Mezzanine Adapter + +pci:v00001924d00000803sv00001924sd00006562* + ID_MODEL_FROM_DATABASE=SFN6832F-R2 SFP+ Mezzanine Adapter + +pci:v00001924d00000803sv00001924sd00006A05* + ID_MODEL_FROM_DATABASE=SFN5112F-R5 SFP+ Server Adapter + +pci:v00001924d00000803sv00001924sd00006A06* + ID_MODEL_FROM_DATABASE=SFN5112F-R6 SFP+ Server Adapter + +pci:v00001924d00000803sv00001924sd00007206* + ID_MODEL_FROM_DATABASE=SFN5162F-R6 SFP+ Server Adapter + +pci:v00001924d00000803sv00001924sd00007207* + ID_MODEL_FROM_DATABASE=SFN5162F-R7 SFP+ Server Adapter + +pci:v00001924d00000803sv00001924sd00007A06* + ID_MODEL_FROM_DATABASE=SFN5152F-R6 SFP+ Server Adapter + +pci:v00001924d00000803sv00001924sd00007A07* + ID_MODEL_FROM_DATABASE=SFN5152F-R7 SFP+ Server Adapter + +pci:v00001924d00000813* + ID_MODEL_FROM_DATABASE=SFL9021 [Solarstorm] + +pci:v00001924d00000813sv00001924sd00006100* + ID_MODEL_FROM_DATABASE=SFN5121T-R0 10GBASE-T Server Adapter + +pci:v00001924d00000813sv00001924sd00006102* + ID_MODEL_FROM_DATABASE=SFN5121T-R2 10GBASE-T Server Adapter + +pci:v00001924d00000813sv00001924sd00006103* + ID_MODEL_FROM_DATABASE=SFN5121T-R3 10GBASE-T Server Adapter + +pci:v00001924d00000813sv00001924sd00006104* + ID_MODEL_FROM_DATABASE=SFN5121T-R4 10GBASE-T Server Adapter + +pci:v00001924d00000813sv00001924sd00006902* + ID_MODEL_FROM_DATABASE=SFN5111T-R2 10GBASE-T Server Adapter + +pci:v00001924d00000813sv00001924sd00006904* + ID_MODEL_FROM_DATABASE=SFN5111T-R4 10GBASE-T Server Adapter + +pci:v00001924d00000813sv00001924sd00007104* + ID_MODEL_FROM_DATABASE=SFN5161T-R4 10GBASE-T Server Adapter + +pci:v00001924d00000813sv00001924sd00007904* + ID_MODEL_FROM_DATABASE=SFN5151T-R4 10GBASE-T Server Adapter + +pci:v00001924d00001803* + ID_MODEL_FROM_DATABASE=SFC9020 Virtual Function [Solarstorm] + +pci:v00001924d00001813* + ID_MODEL_FROM_DATABASE=SFL9021 Virtual Function [Solarstorm] + +pci:v00001924d00006703* + ID_MODEL_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] + +pci:v00001924d00006703sv000010B8sd00000102* + ID_MODEL_FROM_DATABASE=SMC10GPCIe-10BT (A2) [TigerCard] + +pci:v00001924d00006703sv000010B8sd00000103* + ID_MODEL_FROM_DATABASE=SMC10GPCIe-10BT (A3) [TigerCard] + +pci:v00001924d00006703sv000010B8sd00000201* + ID_MODEL_FROM_DATABASE=SMC10GPCIe-XFP (A1) [TigerCard] + +pci:v00001924d00006703sv00001924sd00000101* + ID_MODEL_FROM_DATABASE=SFE4001-A1 + +pci:v00001924d00006703sv00001924sd00000102* + ID_MODEL_FROM_DATABASE=SFE4001-A2 + +pci:v00001924d00006703sv00001924sd00000103* + ID_MODEL_FROM_DATABASE=SFE4001-A3 + +pci:v00001924d00006703sv00001924sd00000201* + ID_MODEL_FROM_DATABASE=SFE4002-A1 + +pci:v00001924d00006703sv00001924sd00000301* + ID_MODEL_FROM_DATABASE=SFE4003-A1 + +pci:v00001924d00006703sv00001924sd00000302* + ID_MODEL_FROM_DATABASE=SFE4003-A2 + +pci:v00001924d00006703sv00001924sd00000303* + ID_MODEL_FROM_DATABASE=SFE4003-A3 + +pci:v00001924d00006703sv00001924sd00000304* + ID_MODEL_FROM_DATABASE=SFE4003-A4 + +pci:v00001924d00006703sv00001924sd00000500* + ID_MODEL_FROM_DATABASE=SFE4005-A0 + +pci:v00001924d0000C101* + ID_MODEL_FROM_DATABASE=EF1-21022T [EtherFabric] + +pci:v0000192A* + ID_VENDOR_FROM_DATABASE=BiTMICRO Networks Inc. + +pci:v0000192E* + ID_VENDOR_FROM_DATABASE=TransDimension + +pci:v00001931* + ID_VENDOR_FROM_DATABASE=Option N.V. + +pci:v00001931d0000000C* + ID_MODEL_FROM_DATABASE=Qualcomm MSM6275 UMTS chip + +pci:v00001932* + ID_VENDOR_FROM_DATABASE=DiBcom + +pci:v0000193C* + ID_VENDOR_FROM_DATABASE=MAXIM Integrated Products + +pci:v0000193F* + ID_VENDOR_FROM_DATABASE=Comtech AHA Corp. + +pci:v0000193Fd00000001* + ID_MODEL_FROM_DATABASE=AHA36x-PCIX + +pci:v0000193Fd00000360* + ID_MODEL_FROM_DATABASE=AHA360-PCIe + +pci:v0000193Fd00000363* + ID_MODEL_FROM_DATABASE=AHA363-PCIe + +pci:v0000193Fd00000364* + ID_MODEL_FROM_DATABASE=AHA364-PCIe + +pci:v0000193Fd00000367* + ID_MODEL_FROM_DATABASE=AHA367-PCIe + +pci:v0000193Fd00000370* + ID_MODEL_FROM_DATABASE=AHA370-PCIe + +pci:v00001942* + ID_VENDOR_FROM_DATABASE=ClearSpeed Technology plc + +pci:v00001942d0000E511* + ID_MODEL_FROM_DATABASE=Advance X620 accelerator card + +pci:v00001942d0000E521* + ID_MODEL_FROM_DATABASE=Advance e620 accelerator card + +pci:v00001947* + ID_VENDOR_FROM_DATABASE=C-guys, Inc. + +pci:v00001947d00004743* + ID_MODEL_FROM_DATABASE=CG200 Dual SD/SDIO Host controller device + +pci:v00001948* + ID_VENDOR_FROM_DATABASE=Alpha Networks Inc. + +pci:v0000194A* + ID_VENDOR_FROM_DATABASE=DapTechnology B.V. + +pci:v0000194Ad00001111* + ID_MODEL_FROM_DATABASE=FireSpy3850 + +pci:v0000194Ad00001112* + ID_MODEL_FROM_DATABASE=FireSpy450b + +pci:v0000194Ad00001113* + ID_MODEL_FROM_DATABASE=FireSpy450bT + +pci:v0000194Ad00001114* + ID_MODEL_FROM_DATABASE=FireSpy850 + +pci:v0000194Ad00001115* + ID_MODEL_FROM_DATABASE=FireSpy850bT + +pci:v0000194Ad00001200* + ID_MODEL_FROM_DATABASE=FireTrac 3460bT + +pci:v0000194Ad00001201* + ID_MODEL_FROM_DATABASE=FireTrac 3460bT (fallback firmware) + +pci:v0000194Ad00001202* + ID_MODEL_FROM_DATABASE=FireTrac 3460bT + +pci:v0000194Ad00001203* + ID_MODEL_FROM_DATABASE=FireTrac 3460bT (fallback firmware) + +pci:v00001954* + ID_VENDOR_FROM_DATABASE=One Stop Systems, Inc. + +pci:v00001957* + ID_VENDOR_FROM_DATABASE=Freescale Semiconductor Inc + +pci:v00001957d00000012* + ID_MODEL_FROM_DATABASE=MPC8548E + +pci:v00001957d00000013* + ID_MODEL_FROM_DATABASE=MPC8548 + +pci:v00001957d00000014* + ID_MODEL_FROM_DATABASE=MPC8543E + +pci:v00001957d00000015* + ID_MODEL_FROM_DATABASE=MPC8543 + +pci:v00001957d00000018* + ID_MODEL_FROM_DATABASE=MPC8547E + +pci:v00001957d00000019* + ID_MODEL_FROM_DATABASE=MPC8545E + +pci:v00001957d0000001A* + ID_MODEL_FROM_DATABASE=MPC8545 + +pci:v00001957d00000020* + ID_MODEL_FROM_DATABASE=MPC8568E + +pci:v00001957d00000021* + ID_MODEL_FROM_DATABASE=MPC8568 + +pci:v00001957d00000022* + ID_MODEL_FROM_DATABASE=MPC8567E + +pci:v00001957d00000023* + ID_MODEL_FROM_DATABASE=MPC8567 + +pci:v00001957d00000030* + ID_MODEL_FROM_DATABASE=MPC8533E + +pci:v00001957d00000031* + ID_MODEL_FROM_DATABASE=MPC8533 + +pci:v00001957d00000032* + ID_MODEL_FROM_DATABASE=MPC8544E + +pci:v00001957d00000033* + ID_MODEL_FROM_DATABASE=MPC8544 + +pci:v00001957d00000040* + ID_MODEL_FROM_DATABASE=MPC8572E + +pci:v00001957d00000041* + ID_MODEL_FROM_DATABASE=MPC8572 + +pci:v00001957d00000050* + ID_MODEL_FROM_DATABASE=MPC8536E + +pci:v00001957d00000051* + ID_MODEL_FROM_DATABASE=MPC8536 + +pci:v00001957d00000052* + ID_MODEL_FROM_DATABASE=MPC8535E + +pci:v00001957d00000053* + ID_MODEL_FROM_DATABASE=MPC8535 + +pci:v00001957d00000060* + ID_MODEL_FROM_DATABASE=MPC8569 + +pci:v00001957d00000061* + ID_MODEL_FROM_DATABASE=MPC8569E + +pci:v00001957d00000070* + ID_MODEL_FROM_DATABASE=P2020E + +pci:v00001957d00000071* + ID_MODEL_FROM_DATABASE=P2020 + +pci:v00001957d00000078* + ID_MODEL_FROM_DATABASE=P2010E + +pci:v00001957d00000079* + ID_MODEL_FROM_DATABASE=P2010 + +pci:v00001957d00000080* + ID_MODEL_FROM_DATABASE=MPC8349E + +pci:v00001957d00000081* + ID_MODEL_FROM_DATABASE=MPC8349 + +pci:v00001957d00000082* + ID_MODEL_FROM_DATABASE=MPC8347E TBGA + +pci:v00001957d00000083* + ID_MODEL_FROM_DATABASE=MPC8347 TBGA + +pci:v00001957d00000084* + ID_MODEL_FROM_DATABASE=MPC8347E PBGA + +pci:v00001957d00000085* + ID_MODEL_FROM_DATABASE=MPC8347 PBGA + +pci:v00001957d00000086* + ID_MODEL_FROM_DATABASE=MPC8343E + +pci:v00001957d00000087* + ID_MODEL_FROM_DATABASE=MPC8343 + +pci:v00001957d000000B4* + ID_MODEL_FROM_DATABASE=MPC8315E + +pci:v00001957d000000C2* + ID_MODEL_FROM_DATABASE=MPC8379E + +pci:v00001957d000000C3* + ID_MODEL_FROM_DATABASE=MPC8379 + +pci:v00001957d000000C4* + ID_MODEL_FROM_DATABASE=MPC8378E + +pci:v00001957d000000C5* + ID_MODEL_FROM_DATABASE=MPC8378 + +pci:v00001957d000000C6* + ID_MODEL_FROM_DATABASE=MPC8377E + +pci:v00001957d000000C7* + ID_MODEL_FROM_DATABASE=MPC8377 + +pci:v00001957d00000100* + ID_MODEL_FROM_DATABASE=P1020E + +pci:v00001957d00000101* + ID_MODEL_FROM_DATABASE=P1020 + +pci:v00001957d00000102* + ID_MODEL_FROM_DATABASE=P1021E + +pci:v00001957d00000103* + ID_MODEL_FROM_DATABASE=P1021 + +pci:v00001957d00000108* + ID_MODEL_FROM_DATABASE=P1011E + +pci:v00001957d00000109* + ID_MODEL_FROM_DATABASE=P1011 + +pci:v00001957d0000010A* + ID_MODEL_FROM_DATABASE=P1012E + +pci:v00001957d0000010B* + ID_MODEL_FROM_DATABASE=P1012 + +pci:v00001957d00000110* + ID_MODEL_FROM_DATABASE=P1022E + +pci:v00001957d00000111* + ID_MODEL_FROM_DATABASE=P1022 + +pci:v00001957d00000111sv00001C7Fsd00005200* + ID_MODEL_FROM_DATABASE=EB5200 + +pci:v00001957d00000118* + ID_MODEL_FROM_DATABASE=P1013E + +pci:v00001957d00000119* + ID_MODEL_FROM_DATABASE=P1013 + +pci:v00001957d00000128* + ID_MODEL_FROM_DATABASE=P1010 + +pci:v00001957d00000400* + ID_MODEL_FROM_DATABASE=P4080E + +pci:v00001957d00000401* + ID_MODEL_FROM_DATABASE=P4080 + +pci:v00001957d00000408* + ID_MODEL_FROM_DATABASE=P4040E + +pci:v00001957d00000409* + ID_MODEL_FROM_DATABASE=P4040 + +pci:v00001957d0000580C* + ID_MODEL_FROM_DATABASE=MPC5121e + +pci:v00001957d00007010* + ID_MODEL_FROM_DATABASE=MPC8641 PCI Host Bridge + +pci:v00001957d00007011* + ID_MODEL_FROM_DATABASE=MPC8641D PCI Host Bridge + +pci:v00001957d00007018* + ID_MODEL_FROM_DATABASE=MPC8610 + +pci:v00001958* + ID_VENDOR_FROM_DATABASE=Faster Technology, LLC. + +pci:v00001959* + ID_VENDOR_FROM_DATABASE=PA Semi, Inc + +pci:v00001959d0000A000* + ID_MODEL_FROM_DATABASE=PA6T Core + +pci:v00001959d0000A001* + ID_MODEL_FROM_DATABASE=PWRficient Host Bridge + +pci:v00001959d0000A002* + ID_MODEL_FROM_DATABASE=PWRficient PCI-Express Port + +pci:v00001959d0000A003* + ID_MODEL_FROM_DATABASE=PWRficient SMBus Controller + +pci:v00001959d0000A004* + ID_MODEL_FROM_DATABASE=PWRficient 16550 UART + +pci:v00001959d0000A005* + ID_MODEL_FROM_DATABASE=PWRficient Gigabit Ethernet + +pci:v00001959d0000A006* + ID_MODEL_FROM_DATABASE=PWRficient 10-Gigabit Ethernet + +pci:v00001959d0000A007* + ID_MODEL_FROM_DATABASE=PWRficient DMA Controller + +pci:v00001959d0000A008* + ID_MODEL_FROM_DATABASE=PWRficient LPC/Localbus Interface + +pci:v00001959d0000A009* + ID_MODEL_FROM_DATABASE=PWRficient L2 Cache + +pci:v00001959d0000A00A* + ID_MODEL_FROM_DATABASE=PWRficient DDR2 Memory Controller + +pci:v00001959d0000A00B* + ID_MODEL_FROM_DATABASE=PWRficient SERDES + +pci:v00001959d0000A00C* + ID_MODEL_FROM_DATABASE=PWRficient System/Debug Controller + +pci:v00001959d0000A00D* + ID_MODEL_FROM_DATABASE=PWRficient PCI-Express Internal Endpoint + +pci:v00001966* + ID_VENDOR_FROM_DATABASE=Orad Hi-Tec Systems + +pci:v00001966d00001975* + ID_MODEL_FROM_DATABASE=DVG64 family + +pci:v00001966d00001977* + ID_MODEL_FROM_DATABASE=DVG128 family + +pci:v00001969* + ID_VENDOR_FROM_DATABASE=Qualcomm Atheros + +pci:v00001969d00001026* + ID_MODEL_FROM_DATABASE=AR8121/AR8113/AR8114 Gigabit or Fast Ethernet + +pci:v00001969d00001026sv00001043sd00008304* + ID_MODEL_FROM_DATABASE=P5KPL-CM Motherboard + +pci:v00001969d00001048* + ID_MODEL_FROM_DATABASE=Attansic L1 Gigabit Ethernet + +pci:v00001969d00001048sv00001043sd00008226* + ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard + +pci:v00001969d00001062* + ID_MODEL_FROM_DATABASE=AR8132 Fast Ethernet + +pci:v00001969d00001063* + ID_MODEL_FROM_DATABASE=AR8131 Gigabit Ethernet + +pci:v00001969d00001063sv00001458sd0000E000* + ID_MODEL_FROM_DATABASE=GA-G31M-ES2L Motherboard + +pci:v00001969d00001066* + ID_MODEL_FROM_DATABASE=Attansic L2c Gigabit Ethernet + +pci:v00001969d00001067* + ID_MODEL_FROM_DATABASE=Attansic L1c Gigabit Ethernet + +pci:v00001969d00001073* + ID_MODEL_FROM_DATABASE=AR8151 v1.0 Gigabit Ethernet + +pci:v00001969d00001083* + ID_MODEL_FROM_DATABASE=AR8151 v2.0 Gigabit Ethernet + +pci:v00001969d00001090* + ID_MODEL_FROM_DATABASE=AR8162 Fast Ethernet + +pci:v00001969d00001091* + ID_MODEL_FROM_DATABASE=AR8161 Gigabit Ethernet + +pci:v00001969d00001091sv00001043sd00001477* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00001969d000010A0* + ID_MODEL_FROM_DATABASE=QCA8172 Fast Ethernet + +pci:v00001969d000010A1* + ID_MODEL_FROM_DATABASE=QCA8171 Gigabit Ethernet + +pci:v00001969d00002048* + ID_MODEL_FROM_DATABASE=Attansic L2 Fast Ethernet + +pci:v00001969d00002060* + ID_MODEL_FROM_DATABASE=AR8152 v1.1 Fast Ethernet + +pci:v00001969d00002062* + ID_MODEL_FROM_DATABASE=AR8152 v2.0 Fast Ethernet + +pci:v00001969d0000E091* + ID_MODEL_FROM_DATABASE=Killer E2200 Gigabit Ethernet Controller + +pci:v0000196A* + ID_VENDOR_FROM_DATABASE=Sensory Networks Inc. + +pci:v0000196Ad00000101* + ID_MODEL_FROM_DATABASE=NodalCore C-1000 Content Classification Accelerator + +pci:v0000196Ad00000102* + ID_MODEL_FROM_DATABASE=NodalCore C-2000 Content Classification Accelerator + +pci:v0000196Ad00000105* + ID_MODEL_FROM_DATABASE=NodalCore C-3000 Content Classification Accelerator + +pci:v0000196D* + ID_VENDOR_FROM_DATABASE=Club-3D BV + +pci:v00001971* + ID_VENDOR_FROM_DATABASE=AGEIA Technologies, Inc. + +pci:v00001971d00001011* + ID_MODEL_FROM_DATABASE=Physics Processing Unit [PhysX] + +pci:v00001971d00001011sv00001043sd00000001* + ID_MODEL_FROM_DATABASE=PhysX P1 + +pci:v00001974* + ID_VENDOR_FROM_DATABASE=Eberspaecher Electronics + +pci:v00001976* + ID_VENDOR_FROM_DATABASE=TRENDnet + +pci:v00001977* + ID_VENDOR_FROM_DATABASE=Parsec + +pci:v0000197B* + ID_VENDOR_FROM_DATABASE=JMicron Technology Corp. + +pci:v0000197Bd00000250* + ID_MODEL_FROM_DATABASE=JMC250 PCI Express Gigabit Ethernet Controller + +pci:v0000197Bd00000260* + ID_MODEL_FROM_DATABASE=JMC260 PCI Express Fast Ethernet Controller + +pci:v0000197Bd00000368* + ID_MODEL_FROM_DATABASE=JMB368 IDE controller + +pci:v0000197Bd00002360* + ID_MODEL_FROM_DATABASE=JMB360 AHCI Controller + +pci:v0000197Bd00002361* + ID_MODEL_FROM_DATABASE=JMB361 AHCI/IDE + +pci:v0000197Bd00002361sv00001462sd00007235* + ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard + +pci:v0000197Bd00002362* + ID_MODEL_FROM_DATABASE=JMB362 SATA Controller + +pci:v0000197Bd00002362sv00001043sd00008460* + ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard + +pci:v0000197Bd00002363* + ID_MODEL_FROM_DATABASE=JMB363 SATA/IDE Controller + +pci:v0000197Bd00002363sv00001043sd000081E4* + ID_MODEL_FROM_DATABASE=P5B [JMB363] + +pci:v0000197Bd00002363sv00001458sd0000B000* + ID_MODEL_FROM_DATABASE=Motherboard + +pci:v0000197Bd00002363sv00001849sd00002363* + ID_MODEL_FROM_DATABASE=Motherboard (one of many) + +pci:v0000197Bd00002364* + ID_MODEL_FROM_DATABASE=JMB364 AHCI Controller + +pci:v0000197Bd00002365* + ID_MODEL_FROM_DATABASE=JMB365 AHCI/IDE + +pci:v0000197Bd00002366* + ID_MODEL_FROM_DATABASE=JMB366 AHCI/IDE + +pci:v0000197Bd00002368* + ID_MODEL_FROM_DATABASE=JMB368 IDE controller + +pci:v0000197Bd00002369* + ID_MODEL_FROM_DATABASE=JMB369 Serial ATA Controller + +pci:v0000197Bd00002380* + ID_MODEL_FROM_DATABASE=IEEE 1394 Host Controller + +pci:v0000197Bd00002381* + ID_MODEL_FROM_DATABASE=Standard SD Host Controller + +pci:v0000197Bd00002382* + ID_MODEL_FROM_DATABASE=SD/MMC Host Controller + +pci:v0000197Bd00002383* + ID_MODEL_FROM_DATABASE=MS Host Controller + +pci:v0000197Bd00002384* + ID_MODEL_FROM_DATABASE=xD Host Controller + +pci:v0000197Bd00002386* + ID_MODEL_FROM_DATABASE=Standard SD Host Controller + +pci:v0000197Bd00002387* + ID_MODEL_FROM_DATABASE=SD/MMC Host Controller + +pci:v0000197Bd00002388* + ID_MODEL_FROM_DATABASE=MS Host Controller + +pci:v0000197Bd00002389* + ID_MODEL_FROM_DATABASE=xD Host Controller + +pci:v0000197Bd00002391* + ID_MODEL_FROM_DATABASE=Standard SD Host Controller + +pci:v0000197Bd00002392* + ID_MODEL_FROM_DATABASE=SD/MMC Host Controller + +pci:v0000197Bd00002393* + ID_MODEL_FROM_DATABASE=MS Host Controller + +pci:v0000197Bd00002394* + ID_MODEL_FROM_DATABASE=xD Host Controller + +pci:v00001982* + ID_VENDOR_FROM_DATABASE=Distant Early Warning Communications Inc + +pci:v00001982d00001600* + ID_MODEL_FROM_DATABASE=OX16C954 HOST-A + +pci:v00001982d000016FF* + ID_MODEL_FROM_DATABASE=OX16C954 HOST-B + +pci:v00001989* + ID_VENDOR_FROM_DATABASE=Montilio Inc. + +pci:v00001989d00000001* + ID_MODEL_FROM_DATABASE=RapidFile Bridge + +pci:v00001989d00008001* + ID_MODEL_FROM_DATABASE=RapidFile + +pci:v0000198A* + ID_VENDOR_FROM_DATABASE=Nallatech Ltd. + +pci:v00001993* + ID_VENDOR_FROM_DATABASE=Innominate Security Technologies AG + +pci:v00001999* + ID_VENDOR_FROM_DATABASE=A-Logics + +pci:v00001999d0000A900* + ID_MODEL_FROM_DATABASE=AM-7209 Video Processor + +pci:v0000199A* + ID_VENDOR_FROM_DATABASE=Pulse-LINK, Inc. + +pci:v0000199D* + ID_VENDOR_FROM_DATABASE=Xsigo Systems + +pci:v0000199Dd00008209* + ID_MODEL_FROM_DATABASE=Virtual NIC Device + +pci:v0000199Dd0000890A* + ID_MODEL_FROM_DATABASE=Virtual HBA Device + +pci:v0000199F* + ID_VENDOR_FROM_DATABASE=Auvitek + +pci:v0000199Fd00008501* + ID_MODEL_FROM_DATABASE=AU85X1 PCI REV1.1 + +pci:v0000199Fd00008521* + ID_MODEL_FROM_DATABASE=AU8521 TV card + +pci:v000019A2* + ID_VENDOR_FROM_DATABASE=Emulex Corporation + +pci:v000019A2d00000200* + ID_MODEL_FROM_DATABASE=BladeEngine 10Gb PCI-E iSCSI adapter + +pci:v000019A2d00000201* + ID_MODEL_FROM_DATABASE=BladeEngine 10Gb PCIe Network Adapter + +pci:v000019A2d00000211* + ID_MODEL_FROM_DATABASE=BladeEngine2 10Gb Gen2 PCIe Network Adapter + +pci:v000019A2d00000212* + ID_MODEL_FROM_DATABASE=BladeEngine2 10Gb Gen2 PCIe iSCSI Adapter + +pci:v000019A2d00000221* + ID_MODEL_FROM_DATABASE=BladeEngine3 10Gb Gen2 PCIe Network Adapter + +pci:v000019A2d00000222* + ID_MODEL_FROM_DATABASE=BladeEngine3 10Gb Gen2 PCIe iSCSI Adapter + +pci:v000019A2d00000700* + ID_MODEL_FROM_DATABASE=OneConnect 10Gb NIC + +pci:v000019A2d00000700sv0000103Csd00001747* + ID_MODEL_FROM_DATABASE=NC550SFP DualPort 10GbE Server Adapter + +pci:v000019A2d00000700sv0000103Csd00001749* + ID_MODEL_FROM_DATABASE=NC550SFP Dual Port Server Adapter + +pci:v000019A2d00000700sv0000103Csd0000174A* + ID_MODEL_FROM_DATABASE=NC551m Dual Port FlexFabric 10Gb Adapter + +pci:v000019A2d00000700sv0000103Csd0000174B* + ID_MODEL_FROM_DATABASE=StorageWorks NC550 DualPort Converged Network Adapter + +pci:v000019A2d00000700sv0000103Csd00003314* + ID_MODEL_FROM_DATABASE=NC551i Dual Port FlexFabric 10Gb Adapter + +pci:v000019A2d00000702* + ID_MODEL_FROM_DATABASE=OneConnect 10Gb iSCSI Initiator + +pci:v000019A2d00000704* + ID_MODEL_FROM_DATABASE=OneConnect 10Gb FCoE Initiator + +pci:v000019A2d00000710* + ID_MODEL_FROM_DATABASE=OneConnect 10Gb NIC (be3) + +pci:v000019A2d00000710sv0000103Csd00003315* + ID_MODEL_FROM_DATABASE=NC553i 10Gb 2-port FlexFabric Converged Network Adapter + +pci:v000019A2d00000710sv0000103Csd00003340* + ID_MODEL_FROM_DATABASE=NC552SFP 2-port 10Gb Server Adapter + +pci:v000019A2d00000710sv0000103Csd00003341* + ID_MODEL_FROM_DATABASE=NC552m 10Gb 2-port FlexFabric Converged Network Adapter + +pci:v000019A2d00000710sv0000103Csd00003345* + ID_MODEL_FROM_DATABASE=NC553m 10Gb 2-port FlexFabric Converged Network Adapter + +pci:v000019A2d00000712* + ID_MODEL_FROM_DATABASE=OneConnect 10Gb iSCSI Initiator (be3) + +pci:v000019A2d00000714* + ID_MODEL_FROM_DATABASE=OneConnect 10Gb FCoE Initiator (be3) + +pci:v000019A2d00000714sv0000103Csd00003315* + ID_MODEL_FROM_DATABASE=NC553i 10Gb 2-port FlexFabric Converged Network Adapter + +pci:v000019A8* + ID_VENDOR_FROM_DATABASE=DAQDATA GmbH + +pci:v000019AC* + ID_VENDOR_FROM_DATABASE=Kasten Chase Applied Research + +pci:v000019ACd00000001* + ID_MODEL_FROM_DATABASE=ACA2400 Crypto Accelerator + +pci:v000019AE* + ID_VENDOR_FROM_DATABASE=Progeny Systems Corporation + +pci:v000019AEd00000520* + ID_MODEL_FROM_DATABASE=4135 HFT Interface Controller + +pci:v000019AEd00000521* + ID_MODEL_FROM_DATABASE=Decimator + +pci:v000019C1* + ID_VENDOR_FROM_DATABASE=Exegy Inc. + +pci:v000019D1* + ID_VENDOR_FROM_DATABASE=Motorola Expedience + +pci:v000019D4* + ID_VENDOR_FROM_DATABASE=Quixant Limited + +pci:v000019DA* + ID_VENDOR_FROM_DATABASE=ZOTAC International (MCO) Ltd. + +pci:v000019DE* + ID_VENDOR_FROM_DATABASE=Pico Computing + +pci:v000019E2* + ID_VENDOR_FROM_DATABASE=Vector Informatik GmbH + +pci:v000019E3* + ID_VENDOR_FROM_DATABASE=DDRdrive LLC + +pci:v000019E3d00005801* + ID_MODEL_FROM_DATABASE=DDRdrive X1 + +pci:v000019E3d00005808* + ID_MODEL_FROM_DATABASE=DDRdrive X8 + +pci:v000019E3d0000DD52* + ID_MODEL_FROM_DATABASE=DDRdrive X1-30 + +pci:v000019E7* + ID_VENDOR_FROM_DATABASE=NET (Network Equipment Technologies) + +pci:v000019E7d00001001* + ID_MODEL_FROM_DATABASE=STIX DSP Card + +pci:v000019E7d00001002* + ID_MODEL_FROM_DATABASE=STIX - 1 Port T1/E1 Card + +pci:v000019E7d00001003* + ID_MODEL_FROM_DATABASE=STIX - 2 Port T1/E1 Card + +pci:v000019E7d00001004* + ID_MODEL_FROM_DATABASE=STIX - 4 Port T1/E1 Card + +pci:v000019E7d00001005* + ID_MODEL_FROM_DATABASE=STIX - 4 Port FXS Card + +pci:v000019EE* + ID_VENDOR_FROM_DATABASE=Netronome Systems, Inc. + +pci:v000019F1* + ID_VENDOR_FROM_DATABASE=BFG Tech + +pci:v000019FF* + ID_VENDOR_FROM_DATABASE=Eclipse Electronic Systems, Inc. + +pci:v00001A03* + ID_VENDOR_FROM_DATABASE=ASPEED Technology, Inc. + +pci:v00001A03d00001150* + ID_MODEL_FROM_DATABASE=AST1150 PCI-to-PCI Bridge + +pci:v00001A03d00002000* + ID_MODEL_FROM_DATABASE=ASPEED Graphics Family + +pci:v00001A07* + ID_VENDOR_FROM_DATABASE=Kvaser AB + +pci:v00001A07d00000006* + ID_MODEL_FROM_DATABASE=CAN interface PC104+ HS/HS + +pci:v00001A07d00000007* + ID_MODEL_FROM_DATABASE=CAN interface PCIcanx II HS or HS/HS + +pci:v00001A07d00000008* + ID_MODEL_FROM_DATABASE=CAN interface PCIEcan HS or HS/HS + +pci:v00001A07d00000009* + ID_MODEL_FROM_DATABASE=CAN interface PCI104 HS/HS + +pci:v00001A08* + ID_VENDOR_FROM_DATABASE=Sierra semiconductor + +pci:v00001A08d00000000* + ID_MODEL_FROM_DATABASE=SC15064 + +pci:v00001A0E* + ID_VENDOR_FROM_DATABASE=DekTec Digital Video B.V. + +pci:v00001A0Ed0000083F* + ID_MODEL_FROM_DATABASE=DTA-2111 VHF/UHF Modulator + +pci:v00001A17* + ID_VENDOR_FROM_DATABASE=Force10 Networks, Inc. + +pci:v00001A17d00008002* + ID_MODEL_FROM_DATABASE=PB-10GE-2P 10GbE Security Card + +pci:v00001A1D* + ID_VENDOR_FROM_DATABASE=GFaI e.V. + +pci:v00001A1Dd00001A17* + ID_MODEL_FROM_DATABASE=Meta Networks MTP-1G IDPS NIC + +pci:v00001A1E* + ID_VENDOR_FROM_DATABASE=3Leaf Systems, Inc. + +pci:v00001A22* + ID_VENDOR_FROM_DATABASE=Ambric Inc. + +pci:v00001A29* + ID_VENDOR_FROM_DATABASE=Fortinet, Inc. + +pci:v00001A2B* + ID_VENDOR_FROM_DATABASE=Ascom AG + +pci:v00001A2Bd00000000* + ID_MODEL_FROM_DATABASE=GESP v1.2 + +pci:v00001A2Bd00000001* + ID_MODEL_FROM_DATABASE=GESP v1.3 + +pci:v00001A2Bd00000002* + ID_MODEL_FROM_DATABASE=ECOMP v1.3 + +pci:v00001A2Bd00000005* + ID_MODEL_FROM_DATABASE=ETP v1.4 + +pci:v00001A2Bd0000000A* + ID_MODEL_FROM_DATABASE=ETP-104 v1.1 + +pci:v00001A2Bd0000000E* + ID_MODEL_FROM_DATABASE=DSLP-104 v1.1 + +pci:v00001A32* + ID_VENDOR_FROM_DATABASE=Quanta Microsystems, Inc + +pci:v00001A3B* + ID_VENDOR_FROM_DATABASE=AzureWave + +pci:v00001A3Bd00001112* + ID_MODEL_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) + +pci:v00001A41* + ID_VENDOR_FROM_DATABASE=Tilera Corp. + +pci:v00001A41d00000001* + ID_MODEL_FROM_DATABASE=TILE64 processor + +pci:v00001A41d00000002* + ID_MODEL_FROM_DATABASE=TILEPro processor + +pci:v00001A41d00000200* + ID_MODEL_FROM_DATABASE=TILE-Gx36 processor + +pci:v00001A4A* + ID_VENDOR_FROM_DATABASE=SLAC National Accelerator Lab PPA-REG + +pci:v00001A4Ad00001000* + ID_MODEL_FROM_DATABASE=MCOR Power Supply Controller + +pci:v00001A4Ad00001010* + ID_MODEL_FROM_DATABASE=AMC EVR - Stockholm Timing Board + +pci:v00001A4Ad00002000* + ID_MODEL_FROM_DATABASE=PGPCard - 4 Lane + +pci:v00001A4Ad00002010* + ID_MODEL_FROM_DATABASE=PCI-Express EVR + +pci:v00001A51* + ID_VENDOR_FROM_DATABASE=Hectronic AB + +pci:v00001A55* + ID_VENDOR_FROM_DATABASE=Rohde & Schwarz DVS GmbH + +pci:v00001A55d00000010* + ID_MODEL_FROM_DATABASE=SDStationOEM + +pci:v00001A55d00000011* + ID_MODEL_FROM_DATABASE=SDStationOEM II + +pci:v00001A55d00000020* + ID_MODEL_FROM_DATABASE=Centaurus + +pci:v00001A55d00000021* + ID_MODEL_FROM_DATABASE=Centaurus II + +pci:v00001A55d00000022* + ID_MODEL_FROM_DATABASE=Centaurus II LT + +pci:v00001A55d00000030* + ID_MODEL_FROM_DATABASE=CLIPSTER-VPU 1.x (Hugo) + +pci:v00001A55d00000040* + ID_MODEL_FROM_DATABASE=Hydra Cinema (JPEG) + +pci:v00001A55d00000050* + ID_MODEL_FROM_DATABASE=CLIPSTER-VPU 2.x (DigiLab) + +pci:v00001A55d00000060* + ID_MODEL_FROM_DATABASE=CLIPSTER-DCI 2.x (HydraX) + +pci:v00001A55d00000061* + ID_MODEL_FROM_DATABASE=Atomix + +pci:v00001A55d00000062* + ID_MODEL_FROM_DATABASE=Atomix LT + +pci:v00001A55d00000063* + ID_MODEL_FROM_DATABASE=Atomix HDMI + +pci:v00001A55d00000064* + ID_MODEL_FROM_DATABASE=Atomix STAN + +pci:v00001A55d00000065* + ID_MODEL_FROM_DATABASE=Atomix HDMI STAN + +pci:v00001A55d00000070* + ID_MODEL_FROM_DATABASE=RED Rocket + +pci:v00001A55d00000090* + ID_MODEL_FROM_DATABASE=CinePlay + +pci:v00001A56* + ID_VENDOR_FROM_DATABASE=Bigfoot Networks, Inc. + +pci:v00001A57* + ID_VENDOR_FROM_DATABASE=Highly Reliable Systems + +pci:v00001A58* + ID_VENDOR_FROM_DATABASE=Razer USA Ltd. + +pci:v00001A5D* + ID_VENDOR_FROM_DATABASE=Celoxica + +pci:v00001A5E* + ID_VENDOR_FROM_DATABASE=Aprius Inc. + +pci:v00001A5F* + ID_VENDOR_FROM_DATABASE=System TALKS Inc. + +pci:v00001A68* + ID_VENDOR_FROM_DATABASE=VirtenSys Limited + +pci:v00001A71* + ID_VENDOR_FROM_DATABASE=XenSource, Inc. + +pci:v00001A73* + ID_VENDOR_FROM_DATABASE=Violin Memory, Inc + +pci:v00001A73d00000001* + ID_MODEL_FROM_DATABASE=Mozart [Memory Appliance 1010] + +pci:v00001A76* + ID_VENDOR_FROM_DATABASE=Wavesat + +pci:v00001A77* + ID_VENDOR_FROM_DATABASE=Lightfleet Corporation + +pci:v00001A78* + ID_VENDOR_FROM_DATABASE=Virident Systems Inc. + +pci:v00001A78d00000031* + ID_MODEL_FROM_DATABASE=Virident FlashMAX Drive + +pci:v00001A78d00000031sv00001A78sd00000034* + ID_MODEL_FROM_DATABASE=FlashMAX PCIe SSD [rev 3] + +pci:v00001A78d00000031sv00001A78sd00000037* + ID_MODEL_FROM_DATABASE=FlashMAX PCIe SSD [rev 3D] + +pci:v00001A78d00000031sv00001A78sd00000038* + ID_MODEL_FROM_DATABASE=FlashMAX PCIe SSD [rev 4] + +pci:v00001A78d00000031sv00001A78sd00000039* + ID_MODEL_FROM_DATABASE=FlashMAX PCIe SSD [rev 4D] + +pci:v00001A78d00000040* + ID_MODEL_FROM_DATABASE=FlashMAX II + +pci:v00001A84* + ID_VENDOR_FROM_DATABASE=Commex Technologies + +pci:v00001A84d00000001* + ID_MODEL_FROM_DATABASE=Vulcan SP HT6210 10-Gigabit Ethernet (rev 02) + +pci:v00001A88* + ID_VENDOR_FROM_DATABASE=MEN Mikro Elektronik + +pci:v00001A88d00004D45* + ID_MODEL_FROM_DATABASE=Multifunction IP core + +pci:v00001A8C* + ID_VENDOR_FROM_DATABASE=Verigy Pte. Ltd. + +pci:v00001A8Cd00001100* + ID_MODEL_FROM_DATABASE=E8001-66443 PCI Express CIC + +pci:v00001A8E* + ID_VENDOR_FROM_DATABASE=DRS Technologies + +pci:v00001A8Ed00002090* + ID_MODEL_FROM_DATABASE=Model 2090 PCI Express + +pci:v00001AA8* + ID_VENDOR_FROM_DATABASE=Ciprico, Inc. + +pci:v00001AA8d00000009* + ID_MODEL_FROM_DATABASE=RAIDCore Controller + +pci:v00001AA8d0000000A* + ID_MODEL_FROM_DATABASE=RAIDCore Controller + +pci:v00001AAE* + ID_VENDOR_FROM_DATABASE=Global Velocity, Inc. + +pci:v00001AB6* + ID_VENDOR_FROM_DATABASE=CalDigit, Inc. + +pci:v00001AB6d00006201* + ID_MODEL_FROM_DATABASE=RAID Card + +pci:v00001AB8* + ID_VENDOR_FROM_DATABASE=Parallels, Inc. + +pci:v00001AB8d00004000* + ID_MODEL_FROM_DATABASE=Virtual Machine Communication Interface + +pci:v00001AB8d00004005* + ID_MODEL_FROM_DATABASE=Accelerated Virtual Video Adapter + +pci:v00001AB8d00004006* + ID_MODEL_FROM_DATABASE=Memory Ballooning Controller + +pci:v00001AB9* + ID_VENDOR_FROM_DATABASE=Espia Srl + +pci:v00001ACC* + ID_VENDOR_FROM_DATABASE=Point of View B.V + +pci:v00001AD7* + ID_VENDOR_FROM_DATABASE=Spectracom Corporation + +pci:v00001AD7d00008000* + ID_MODEL_FROM_DATABASE=TSync-PCIe Time Code Processor + +pci:v00001AD7d00009100* + ID_MODEL_FROM_DATABASE=TPRO-PCI-66U Timecode Reader/Generator + +pci:v00001ADE* + ID_VENDOR_FROM_DATABASE=Spin Master Ltd. + +pci:v00001ADEd00001501* + ID_MODEL_FROM_DATABASE=Swipetech barcode scanner + +pci:v00001AE0* + ID_VENDOR_FROM_DATABASE=Google, Inc. + +pci:v00001AE7* + ID_VENDOR_FROM_DATABASE=First Wise Media GmbH + +pci:v00001AE7d00000520* + ID_MODEL_FROM_DATABASE=HFC-S PCI A [X-TENSIONS XC-520] + +pci:v00001AE8* + ID_VENDOR_FROM_DATABASE=Silicon Software GmbH + +pci:v00001AE8d00000A40* + ID_MODEL_FROM_DATABASE=microEnable IV-BASE x1 + +pci:v00001AE8d00000A41* + ID_MODEL_FROM_DATABASE=microEnable IV-FULL x1 + +pci:v00001AE8d00000A44* + ID_MODEL_FROM_DATABASE=microEnable IV-FULL x4 + +pci:v00001AE8d00000E44* + ID_MODEL_FROM_DATABASE=microEnable IV-GigE x4 + +pci:v00001AEC* + ID_VENDOR_FROM_DATABASE=Wolfson Microelectronics + +pci:v00001AED* + ID_VENDOR_FROM_DATABASE=Fusion-io + +pci:v00001AEDd00001003* + ID_MODEL_FROM_DATABASE=ioDimm3 (v1.2) + +pci:v00001AEDd00001005* + ID_MODEL_FROM_DATABASE=ioDimm3 + +pci:v00001AEDd00001005sv00001014sd000003C3* + ID_MODEL_FROM_DATABASE=High IOPS SSD PCIe Adapter + +pci:v00001AEDd00001005sv0000103Csd0000176F* + ID_MODEL_FROM_DATABASE=1.28TB MLC PCIe ioDrive Duo + +pci:v00001AEDd00001005sv0000103Csd00001770* + ID_MODEL_FROM_DATABASE=5.2TB MLC PCIe ioDrive Octal + +pci:v00001AEDd00001005sv0000103Csd0000178B* + ID_MODEL_FROM_DATABASE=160GB SLC PCIe ioDrive + +pci:v00001AEDd00001005sv0000103Csd0000178C* + ID_MODEL_FROM_DATABASE=320GB MLC PCIe ioDrive + +pci:v00001AEDd00001005sv0000103Csd0000178D* + ID_MODEL_FROM_DATABASE=320GB SLC PCIe ioDrive Duo + +pci:v00001AEDd00001005sv0000103Csd0000178E* + ID_MODEL_FROM_DATABASE=640GB MLC PCIe ioDrive Duo + +pci:v00001AEDd00001006* + ID_MODEL_FROM_DATABASE=ioXtreme + +pci:v00001AEDd00001007* + ID_MODEL_FROM_DATABASE=ioXtreme Pro + +pci:v00001AEDd00001008* + ID_MODEL_FROM_DATABASE=ioXtreme-2 + +pci:v00001AEDd00002001* + ID_MODEL_FROM_DATABASE=ioDrive2 + +pci:v00001AEE* + ID_VENDOR_FROM_DATABASE=Caustic Graphics Inc. + +pci:v00001AF4* + ID_VENDOR_FROM_DATABASE=Red Hat, Inc + +pci:v00001AF4d00001000* + ID_MODEL_FROM_DATABASE=Virtio network device + +pci:v00001AF4d00001001* + ID_MODEL_FROM_DATABASE=Virtio block device + +pci:v00001AF4d00001002* + ID_MODEL_FROM_DATABASE=Virtio memory balloon + +pci:v00001AF4d00001003* + ID_MODEL_FROM_DATABASE=Virtio console + +pci:v00001AF4d00001009* + ID_MODEL_FROM_DATABASE=Virtio filesystem + +pci:v00001AF5* + ID_VENDOR_FROM_DATABASE=Netezza Corp. + +pci:v00001AFA* + ID_VENDOR_FROM_DATABASE=J & W Electronics Co., Ltd. + +pci:v00001B03* + ID_VENDOR_FROM_DATABASE=Magnum Semiconductor, Inc, + +pci:v00001B03d00006100* + ID_MODEL_FROM_DATABASE=DXT/DXTPro Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder + +pci:v00001B08* + ID_VENDOR_FROM_DATABASE=MSC Vertriebs GmbH + +pci:v00001B13* + ID_VENDOR_FROM_DATABASE=Jaton Corp + +pci:v00001B1A* + ID_VENDOR_FROM_DATABASE=K&F Computing Research Co. + +pci:v00001B1Ad00000E70* + ID_MODEL_FROM_DATABASE=GRAPE + +pci:v00001B21* + ID_VENDOR_FROM_DATABASE=ASMedia Technology Inc. + +pci:v00001B21d00000611* + ID_MODEL_FROM_DATABASE=ASM1061 SATA IDE Controller + +pci:v00001B21d00000612* + ID_MODEL_FROM_DATABASE=ASM1062 Serial ATA Controller + +pci:v00001B21d00001042* + ID_MODEL_FROM_DATABASE=ASM1042 SuperSpeed USB Host Controller + +pci:v00001B21d00001080* + ID_MODEL_FROM_DATABASE=ASM1083/1085 PCIe to PCI Bridge + +pci:v00001B36* + ID_VENDOR_FROM_DATABASE=Red Hat, Inc. + +pci:v00001B37* + ID_VENDOR_FROM_DATABASE=Signal Processing Devices Sweden AB + +pci:v00001B37d00000014* + ID_MODEL_FROM_DATABASE=ADQ412 + +pci:v00001B3A* + ID_VENDOR_FROM_DATABASE=Westar Display Technologies + +pci:v00001B3Ad00007589* + ID_MODEL_FROM_DATABASE=HRED J2000 - JPEG 2000 Video Codec Device + +pci:v00001B3E* + ID_VENDOR_FROM_DATABASE=Teradata Corp. + +pci:v00001B3Ed00001FA8* + ID_MODEL_FROM_DATABASE=BYNET BIC2SE/X + +pci:v00001B3Ed00001FA8sv00001B3Esd000000A3* + ID_MODEL_FROM_DATABASE=BYNET BIC2SX + +pci:v00001B3Ed00001FA8sv00001B3Esd000000C3* + ID_MODEL_FROM_DATABASE=BYNET BIC2SE + +pci:v00001B40* + ID_VENDOR_FROM_DATABASE=Schooner Information Technology, Inc. + +pci:v00001B47* + ID_VENDOR_FROM_DATABASE=Numascale AS + +pci:v00001B47d00000601* + ID_MODEL_FROM_DATABASE=NumaChip N601 + +pci:v00001B47d00000602* + ID_MODEL_FROM_DATABASE=NumaChip N602 + +pci:v00001B4B* + ID_VENDOR_FROM_DATABASE=Marvell Technology Group Ltd. + +pci:v00001B4Bd00000640* + ID_MODEL_FROM_DATABASE=88SE9128 SATA III 6Gb/s RAID Controller + +pci:v00001B4Bd00009120* + ID_MODEL_FROM_DATABASE=88SE9120 SATA 6Gb/s Controller + +pci:v00001B4Bd00009123* + ID_MODEL_FROM_DATABASE=88SE9123 PCIe SATA 6.0 Gb/s controller + +pci:v00001B4Bd00009125* + ID_MODEL_FROM_DATABASE=88SE9125 PCIe SATA 6.0 Gb/s controller + +pci:v00001B4Bd00009128* + ID_MODEL_FROM_DATABASE=88SE9128 PCIe SATA 6 Gb/s RAID controller + +pci:v00001B4Bd00009130* + ID_MODEL_FROM_DATABASE=88SE9128 PCIe SATA 6 Gb/s RAID controller with HyperDuo + +pci:v00001B4Bd00009130sv00001043sd00008438* + ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard + +pci:v00001B4Bd00009172* + ID_MODEL_FROM_DATABASE=88SE9172 SATA 6Gb/s Controller + +pci:v00001B4Bd0000917A* + ID_MODEL_FROM_DATABASE=88SE9172 SATA III 6Gb/s RAID Controller + +pci:v00001B4Bd00009192* + ID_MODEL_FROM_DATABASE=88SE9172 SATA III 6Gb/s RAID Controller + +pci:v00001B4Bd000091A0* + ID_MODEL_FROM_DATABASE=88SE91A0 SATA 6Gb/s Controller + +pci:v00001B4Bd000091A4* + ID_MODEL_FROM_DATABASE=88SE912x IDE Controller + +pci:v00001B4Bd00009230* + ID_MODEL_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller + +pci:v00001B4Bd00009480* + ID_MODEL_FROM_DATABASE=88SE9480 SAS/SATA 6Gb/s RAID controller + +pci:v00001B55* + ID_VENDOR_FROM_DATABASE=NetUP Inc. + +pci:v00001B55d00002A2C* + ID_MODEL_FROM_DATABASE=Dual DVB-S2-CI card + +pci:v00001B55d0000E2E4* + ID_MODEL_FROM_DATABASE=Dual DVB-T/C-CI RF card + +pci:v00001B55d0000E5F4* + ID_MODEL_FROM_DATABASE=MPEG2 and H264 Encoder-Transcoder + +pci:v00001B55d0000F1C4* + ID_MODEL_FROM_DATABASE=Dual ASI-RX/TX-CI card + +pci:v00001B6F* + ID_VENDOR_FROM_DATABASE=Etron Technology, Inc. + +pci:v00001B6Fd00007023* + ID_MODEL_FROM_DATABASE=EJ168 USB 3.0 Host Controller + +pci:v00001B6Fd00007052* + ID_MODEL_FROM_DATABASE=EJ188/EJ198 USB 3.0 Host Controller + +pci:v00001B73* + ID_VENDOR_FROM_DATABASE=Fresco Logic + +pci:v00001B73d00001000* + ID_MODEL_FROM_DATABASE=FL1000G USB 3.0 Host Controller + +pci:v00001B73d00001000sv00001D5Csd00001000* + ID_MODEL_FROM_DATABASE=Anker USB 3.0 Express Card + +pci:v00001B73d00001009* + ID_MODEL_FROM_DATABASE=FL1009 USB 3.0 Host Controller + +pci:v00001B74* + ID_VENDOR_FROM_DATABASE=OpenVox Communication Co. Ltd. + +pci:v00001B74d00000115* + ID_MODEL_FROM_DATABASE=D115P/D115E Single-port E1/T1 card + +pci:v00001B74d0000D130* + ID_MODEL_FROM_DATABASE=D130P/D130E Single-port E1/T1 card (3rd GEN) + +pci:v00001B74d0000D210* + ID_MODEL_FROM_DATABASE=D210P/D210E Dual-port E1/T1 card(2nd generation) + +pci:v00001B74d0000D230* + ID_MODEL_FROM_DATABASE=D230 Dual-port E1/T1 card (2nd generation) + +pci:v00001B74d0000D410* + ID_MODEL_FROM_DATABASE=D410/430 Quad-port E1/T1 card + +pci:v00001B74d0000D430* + ID_MODEL_FROM_DATABASE=D410/430 Quad-port E1/T1 card + +pci:v00001B85* + ID_VENDOR_FROM_DATABASE=OCZ Technology Group, Inc. + +pci:v00001B85d00001041* + ID_MODEL_FROM_DATABASE=RevoDrive 3 X2 PCI-Express SSD 240 GB (Marvell Controller) + +pci:v00001B96* + ID_VENDOR_FROM_DATABASE=Western Digital + +pci:v00001B9A* + ID_VENDOR_FROM_DATABASE=XAVi Technologies Corp. + +pci:v00001BAD* + ID_VENDOR_FROM_DATABASE=ReFLEX CES + +pci:v00001BB0* + ID_VENDOR_FROM_DATABASE=SimpliVity Corporation + +pci:v00001BB0d00000002* + ID_MODEL_FROM_DATABASE=OmniCube Accelerator OA-3000 + +pci:v00001BB3* + ID_VENDOR_FROM_DATABASE=Bluecherry + +pci:v00001BB3d00004304* + ID_MODEL_FROM_DATABASE=BC-04120A MPEG4 4 port video encoder / decoder + +pci:v00001BB3d00004309* + ID_MODEL_FROM_DATABASE=BC-08240A MPEG4 4 port video encoder / decoder + +pci:v00001BB3d00004310* + ID_MODEL_FROM_DATABASE=BC-16480A MPEG4 16 port video encoder / decoder + +pci:v00001BB3d00004E04* + ID_MODEL_FROM_DATABASE=BC-04120A 4 port MPEG4 video encoder / decoder + +pci:v00001BB3d00004E09* + ID_MODEL_FROM_DATABASE=BC-08240A 8 port MPEG4 video encoder / decoder + +pci:v00001BB3d00004E10* + ID_MODEL_FROM_DATABASE=BC-16480A 16 port MPEG4 video encoder / decoder + +pci:v00001BB3d00005304* + ID_MODEL_FROM_DATABASE=BC-H04120A 4 port H.264 video and audio encoder / decoder + +pci:v00001BB3d00005308* + ID_MODEL_FROM_DATABASE=BC-H08240A 8 port H.264 video and audio encoder / decoder + +pci:v00001BB3d00005310* + ID_MODEL_FROM_DATABASE=BC-H16480A 16 port H.264 video and audio encoder / decoder + +pci:v00001BB5* + ID_VENDOR_FROM_DATABASE=Quantenna Communications, Inc. + +pci:v00001BBF* + ID_VENDOR_FROM_DATABASE=Maxeler Technologies Ltd. + +pci:v00001BBFd00000003* + ID_MODEL_FROM_DATABASE=MAX3 + +pci:v00001BBFd00000004* + ID_MODEL_FROM_DATABASE=MAX4 + +pci:v00001BF4* + ID_VENDOR_FROM_DATABASE=VTI Instruments Corporation + +pci:v00001C1C* + ID_VENDOR_FROM_DATABASE=Symphony + +pci:v00001C1Cd00000001* + ID_MODEL_FROM_DATABASE=82C101 + +pci:v00001C2C* + ID_VENDOR_FROM_DATABASE=Fiberblaze + +pci:v00001C32* + ID_VENDOR_FROM_DATABASE=Highland Technology, Inc. + +pci:v00001C3B* + ID_VENDOR_FROM_DATABASE=Accensus, LLC + +pci:v00001C3Bd00000200* + ID_MODEL_FROM_DATABASE=Telas2 + +pci:v00001C44* + ID_VENDOR_FROM_DATABASE=Enmotus Inc + +pci:v00001C44d00008000* + ID_MODEL_FROM_DATABASE=8000 Storage IO Controller + +pci:v00001C7F* + ID_VENDOR_FROM_DATABASE=Elektrobit Austria GmbH + +pci:v00001C7Fd00005100* + ID_MODEL_FROM_DATABASE=EB5100 + +pci:v00001C8A* + ID_VENDOR_FROM_DATABASE=TSF5 Corporation + +pci:v00001C8Ad00000001* + ID_MODEL_FROM_DATABASE=Hunter PCI Express + +pci:v00001CB1* + ID_VENDOR_FROM_DATABASE=Collion UG & Co.KG + +pci:v00001D44* + ID_VENDOR_FROM_DATABASE=DPT + +pci:v00001D44d0000A400* + ID_MODEL_FROM_DATABASE=PM2x24/PM3224 + +pci:v00001D5C* + ID_VENDOR_FROM_DATABASE=Fantasia Trading LLC + +pci:v00001DE1* + ID_VENDOR_FROM_DATABASE=Tekram Technology Co.,Ltd. + +pci:v00001DE1d00000391* + ID_MODEL_FROM_DATABASE=TRM-S1040 + +pci:v00001DE1d00002020* + ID_MODEL_FROM_DATABASE=DC-390 + +pci:v00001DE1d0000690C* + ID_MODEL_FROM_DATABASE=690c + +pci:v00001DE1d0000DC29* + ID_MODEL_FROM_DATABASE=DC290 + +pci:v00001FC0* + ID_VENDOR_FROM_DATABASE=Ascom (Finland) Oy + +pci:v00001FC0d00000300* + ID_MODEL_FROM_DATABASE=E2200 Dual E1/Rawpipe Card + +pci:v00001FC0d00000301* + ID_MODEL_FROM_DATABASE=C5400 SHDSL/E1 Card + +pci:v00001FC1* + ID_VENDOR_FROM_DATABASE=QLogic, Corp. + +pci:v00001FC1d0000000D* + ID_MODEL_FROM_DATABASE=IBA6110 InfiniBand HCA + +pci:v00001FC1d00000010* + ID_MODEL_FROM_DATABASE=IBA6120 InfiniBand HCA + +pci:v00001FC9* + ID_VENDOR_FROM_DATABASE=Tehuti Networks Ltd. + +pci:v00001FC9d00003009* + ID_MODEL_FROM_DATABASE=10-Giga TOE SmartNIC + +pci:v00001FC9d00003010* + ID_MODEL_FROM_DATABASE=10-Giga TOE SmartNIC + +pci:v00001FC9d00003010sv00000000sd00003002* + ID_MODEL_FROM_DATABASE=10-Giga TOE Single Port XFP SmartNIC + +pci:v00001FC9d00003010sv00000000sd00003004* + ID_MODEL_FROM_DATABASE=10-Giga TOE Single Port SFP+ SmartNIC + +pci:v00001FC9d00003010sv00000000sd00003008* + ID_MODEL_FROM_DATABASE=10-Giga TOE Single Port CX4 SmartNIC + +pci:v00001FC9d00003014* + ID_MODEL_FROM_DATABASE=10-Giga TOE SmartNIC 2-Port + +pci:v00001FC9d00003014sv00000000sd00003003* + ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port XFP Low Profile SmartNIC + +pci:v00001FC9d00003014sv00000000sd00003005* + ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port SFP+ Low Profile SmartNIC + +pci:v00001FC9d00003014sv00000000sd00003014* + ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port CX4 Low Profile SmartNIC + +pci:v00001FC9d00003110* + ID_MODEL_FROM_DATABASE=10-Giga TOE Single Port SmartNIC + +pci:v00001FC9d00003110sv00000000sd00003004* + ID_MODEL_FROM_DATABASE=10-Giga TOE Single Port SFP+ SmartNIC + +pci:v00001FC9d00003114* + ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC + +pci:v00001FC9d00003114sv00000000sd00003005* + ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port SFP+ Low Profile SmartNIC + +pci:v00001FC9d00003114sv00000000sd00003011* + ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC + +pci:v00001FC9d00003114sv00000000sd00003012* + ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC + +pci:v00001FC9d00003114sv00000000sd00003014* + ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port CX4 Low Profile SmartNIC + +pci:v00001FC9d00003310* + ID_MODEL_FROM_DATABASE=10-Giga TOE SFP+ Single Port SmartNIC + +pci:v00001FC9d00003310sv00000000sd00003004* + ID_MODEL_FROM_DATABASE=10-Giga TOE Single Port SFP+ SmartNIC + +pci:v00001FC9d00003314* + ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC + +pci:v00001FC9d00003314sv00000000sd00003005* + ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port SFP+ Low Profile SmartNIC + +pci:v00001FC9d00003314sv00000000sd00003011* + ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC + +pci:v00001FC9d00003314sv00000000sd00003012* + ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC + +pci:v00001FC9d00003314sv00000000sd00003014* + ID_MODEL_FROM_DATABASE=10-Giga TOE Dual Port CX4 Low Profile SmartNIC + +pci:v00001FCE* + ID_VENDOR_FROM_DATABASE=Cognio Inc. + +pci:v00001FCEd00000001* + ID_MODEL_FROM_DATABASE=Spectrum Analyzer PC Card (SAgE) + +pci:v00001FD4* + ID_VENDOR_FROM_DATABASE=SUNIX Co., Ltd. + +pci:v00001FD4d00000001* + ID_MODEL_FROM_DATABASE=Matrix multiport serial adapter + +pci:v00001FD4d00001999* + ID_MODEL_FROM_DATABASE=Multiport serial controller + +pci:v00002000* + ID_VENDOR_FROM_DATABASE=Smart Link Ltd. + +pci:v00002000d00002800* + ID_MODEL_FROM_DATABASE=SmartPCI2800 V.92 PCI Soft DFT + +pci:v00002001* + ID_VENDOR_FROM_DATABASE=Temporal Research Ltd + +pci:v00002003* + ID_VENDOR_FROM_DATABASE=Smart Link Ltd. + +pci:v00002003d00008800* + ID_MODEL_FROM_DATABASE=LM-I56N + +pci:v00002004* + ID_VENDOR_FROM_DATABASE=Smart Link Ltd. + +pci:v000020F4* + ID_VENDOR_FROM_DATABASE=TRENDnet + +pci:v00002116* + ID_VENDOR_FROM_DATABASE=ZyDAS Technology Corp. + +pci:v000021C3* + ID_VENDOR_FROM_DATABASE=21st Century Computer Corp. + +pci:v00002304* + ID_VENDOR_FROM_DATABASE=Colorgraphic Communications Corp. + +pci:v00002348* + ID_VENDOR_FROM_DATABASE=Racore + +pci:v00002348d00002010* + ID_MODEL_FROM_DATABASE=8142 100VG/AnyLAN + +pci:v00002646* + ID_VENDOR_FROM_DATABASE=Kingston Technologies + +pci:v0000270B* + ID_VENDOR_FROM_DATABASE=Xantel Corporation + +pci:v0000270F* + ID_VENDOR_FROM_DATABASE=Chaintech Computer Co. Ltd + +pci:v00002711* + ID_VENDOR_FROM_DATABASE=AVID Technology Inc. + +pci:v00002955* + ID_VENDOR_FROM_DATABASE=Connectix Virtual PC + +pci:v00002955d00006E61* + ID_MODEL_FROM_DATABASE=OHCI USB 1.1 controller + +pci:v00002A15* + ID_VENDOR_FROM_DATABASE=3D Vision(???) + +pci:v00003000* + ID_VENDOR_FROM_DATABASE=Hansol Electronics Inc. + +pci:v00003142* + ID_VENDOR_FROM_DATABASE=Post Impression Systems. + +pci:v000031AB* + ID_VENDOR_FROM_DATABASE=Zonet + +pci:v000031ABd00001FAA* + ID_MODEL_FROM_DATABASE=ZEW1602 802.11b/g Wireless Adapter + +pci:v00003388* + ID_VENDOR_FROM_DATABASE=Hint Corp + +pci:v00003388d00000013* + ID_MODEL_FROM_DATABASE=HiNT HC4 PCI to ISDN bridge, Multimedia audio controller + +pci:v00003388d00000014* + ID_MODEL_FROM_DATABASE=HiNT HC4 PCI to ISDN bridge, Network controller + +pci:v00003388d00000020* + ID_MODEL_FROM_DATABASE=HB6 Universal PCI-PCI bridge (transparent mode) + +pci:v00003388d00000021* + ID_MODEL_FROM_DATABASE=HB6 Universal PCI-PCI bridge (non-transparent mode) + +pci:v00003388d00000021sv00001775sd0000C200* + ID_MODEL_FROM_DATABASE=C2K CompactPCI interface bridge + +pci:v00003388d00000021sv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00003388d00000021sv00004C53sd00001050* + ID_MODEL_FROM_DATABASE=CT7 mainboard + +pci:v00003388d00000021sv00004C53sd00001080* + ID_MODEL_FROM_DATABASE=CT8 mainboard + +pci:v00003388d00000021sv00004C53sd00001090* + ID_MODEL_FROM_DATABASE=Cx9 mainboard + +pci:v00003388d00000021sv00004C53sd000010A0* + ID_MODEL_FROM_DATABASE=CA3/CR3 mainboard + +pci:v00003388d00000021sv00004C53sd00003010* + ID_MODEL_FROM_DATABASE=PPCI mezzanine (32-bit PMC) + +pci:v00003388d00000021sv00004C53sd00003011* + ID_MODEL_FROM_DATABASE=PPCI mezzanine (64-bit PMC) + +pci:v00003388d00000021sv00004C53sd00004000* + ID_MODEL_FROM_DATABASE=PMCCARR1 carrier board + +pci:v00003388d00000022* + ID_MODEL_FROM_DATABASE=HiNT HB4 PCI-PCI Bridge (PCI6150) + +pci:v00003388d00000026* + ID_MODEL_FROM_DATABASE=HB2 PCI-PCI Bridge + +pci:v00003388d00001018* + ID_MODEL_FROM_DATABASE=Audiotrak INCA88 + +pci:v00003388d00001019* + ID_MODEL_FROM_DATABASE=Miditrak 2120 + +pci:v00003388d0000101A* + ID_MODEL_FROM_DATABASE=E.Band [AudioTrak Inca88] + +pci:v00003388d0000101B* + ID_MODEL_FROM_DATABASE=E.Band [AudioTrak Inca88] + +pci:v00003388d00008011* + ID_MODEL_FROM_DATABASE=VXPro II Chipset + +pci:v00003388d00008011sv00003388sd00008011* + ID_MODEL_FROM_DATABASE=VXPro II Chipset CPU to PCI Bridge + +pci:v00003388d00008012* + ID_MODEL_FROM_DATABASE=VXPro II Chipset + +pci:v00003388d00008012sv00003388sd00008012* + ID_MODEL_FROM_DATABASE=VXPro II Chipset PCI to ISA Bridge + +pci:v00003388d00008013* + ID_MODEL_FROM_DATABASE=VXPro II IDE + +pci:v00003388d00008013sv00003388sd00008013* + ID_MODEL_FROM_DATABASE=VXPro II Chipset EIDE Controller + +pci:v00003388d0000A103* + ID_MODEL_FROM_DATABASE=Blackmagic Design DeckLink HD Pro + +pci:v00003411* + ID_VENDOR_FROM_DATABASE=Quantum Designs (H.K.) Inc + +pci:v00003442* + ID_VENDOR_FROM_DATABASE=Bihl+Wiedemann GmbH + +pci:v00003442d00001783* + ID_MODEL_FROM_DATABASE=AS-i 3.0 cPCI Master + +pci:v00003442d00001922* + ID_MODEL_FROM_DATABASE=AS-i 3.0 PCI Master + +pci:v00003475* + ID_VENDOR_FROM_DATABASE=Arastra Inc. + +pci:v00003513* + ID_VENDOR_FROM_DATABASE=ARCOM Control Systems Ltd + +pci:v000037D9* + ID_VENDOR_FROM_DATABASE=ITD Firm ltd. + +pci:v000037D9d00001138* + ID_MODEL_FROM_DATABASE=SCHD-PH-8 Phase detector + +pci:v00003842* + ID_VENDOR_FROM_DATABASE=eVga.com. Corp. + +pci:v000038EF* + ID_VENDOR_FROM_DATABASE=4Links + +pci:v00003D3D* + ID_VENDOR_FROM_DATABASE=3DLabs + +pci:v00003D3Dd00000001* + ID_MODEL_FROM_DATABASE=GLINT 300SX + +pci:v00003D3Dd00000002* + ID_MODEL_FROM_DATABASE=GLINT 500TX + +pci:v00003D3Dd00000002sv00000000sd00000000* + ID_MODEL_FROM_DATABASE=GLoria L + +pci:v00003D3Dd00000003* + ID_MODEL_FROM_DATABASE=GLINT Delta + +pci:v00003D3Dd00000003sv00000000sd00000000* + ID_MODEL_FROM_DATABASE=GLoria XL + +pci:v00003D3Dd00000004* + ID_MODEL_FROM_DATABASE=Permedia + +pci:v00003D3Dd00000005* + ID_MODEL_FROM_DATABASE=Permedia + +pci:v00003D3Dd00000006* + ID_MODEL_FROM_DATABASE=GLINT MX + +pci:v00003D3Dd00000006sv00000000sd00000000* + ID_MODEL_FROM_DATABASE=GLoria XL + +pci:v00003D3Dd00000006sv00001048sd00000A42* + ID_MODEL_FROM_DATABASE=GLoria XXL + +pci:v00003D3Dd00000007* + ID_MODEL_FROM_DATABASE=3D Extreme + +pci:v00003D3Dd00000008* + ID_MODEL_FROM_DATABASE=GLINT Gamma G1 + +pci:v00003D3Dd00000008sv00001048sd00000A42* + ID_MODEL_FROM_DATABASE=GLoria XXL + +pci:v00003D3Dd00000009* + ID_MODEL_FROM_DATABASE=Permedia II 2D+3D + +pci:v00003D3Dd00000009sv00001040sd00000011* + ID_MODEL_FROM_DATABASE=AccelStar II + +pci:v00003D3Dd00000009sv00001048sd00000A42* + ID_MODEL_FROM_DATABASE=GLoria XXL + +pci:v00003D3Dd00000009sv000013E9sd00001000* + ID_MODEL_FROM_DATABASE=6221L-4U + +pci:v00003D3Dd00000009sv00003D3Dsd00000100* + ID_MODEL_FROM_DATABASE=AccelStar II 3D Accelerator + +pci:v00003D3Dd00000009sv00003D3Dsd00000111* + ID_MODEL_FROM_DATABASE=Permedia 3:16 + +pci:v00003D3Dd00000009sv00003D3Dsd00000114* + ID_MODEL_FROM_DATABASE=Santa Ana + +pci:v00003D3Dd00000009sv00003D3Dsd00000116* + ID_MODEL_FROM_DATABASE=Oxygen GVX1 + +pci:v00003D3Dd00000009sv00003D3Dsd00000119* + ID_MODEL_FROM_DATABASE=Scirocco + +pci:v00003D3Dd00000009sv00003D3Dsd00000120* + ID_MODEL_FROM_DATABASE=Santa Ana PCL + +pci:v00003D3Dd00000009sv00003D3Dsd00000125* + ID_MODEL_FROM_DATABASE=Oxygen VX1 + +pci:v00003D3Dd00000009sv00003D3Dsd00000127* + ID_MODEL_FROM_DATABASE=Permedia3 Create! + +pci:v00003D3Dd0000000A* + ID_MODEL_FROM_DATABASE=GLINT R3 + +pci:v00003D3Dd0000000Asv00003D3Dsd00000121* + ID_MODEL_FROM_DATABASE=Oxygen VX1 + +pci:v00003D3Dd0000000C* + ID_MODEL_FROM_DATABASE=GLINT R3 [Oxygen VX1] + +pci:v00003D3Dd0000000Csv00003D3Dsd00000144* + ID_MODEL_FROM_DATABASE=Oxygen VX1-4X AGP [Permedia 4] + +pci:v00003D3Dd0000000D* + ID_MODEL_FROM_DATABASE=GLint R4 rev A + +pci:v00003D3Dd0000000E* + ID_MODEL_FROM_DATABASE=GLINT Gamma G2 + +pci:v00003D3Dd00000011* + ID_MODEL_FROM_DATABASE=GLint R4 rev B + +pci:v00003D3Dd00000012* + ID_MODEL_FROM_DATABASE=GLint R5 rev A + +pci:v00003D3Dd00000013* + ID_MODEL_FROM_DATABASE=GLint R5 rev B + +pci:v00003D3Dd00000020* + ID_MODEL_FROM_DATABASE=VP10 visual processor + +pci:v00003D3Dd00000022* + ID_MODEL_FROM_DATABASE=VP10 visual processor + +pci:v00003D3Dd00000024* + ID_MODEL_FROM_DATABASE=VP9 visual processor + +pci:v00003D3Dd0000002C* + ID_MODEL_FROM_DATABASE=Wildcat Realizm 100/200 + +pci:v00003D3Dd00000030* + ID_MODEL_FROM_DATABASE=Wildcat Realizm 800 + +pci:v00003D3Dd00000032* + ID_MODEL_FROM_DATABASE=Wildcat Realizm 500 + +pci:v00003D3Dd00000100* + ID_MODEL_FROM_DATABASE=Permedia II 2D+3D + +pci:v00003D3Dd000007A1* + ID_MODEL_FROM_DATABASE=Wildcat III 6210 + +pci:v00003D3Dd000007A2* + ID_MODEL_FROM_DATABASE=Sun XVR-500 Graphics Accelerator + +pci:v00003D3Dd000007A3* + ID_MODEL_FROM_DATABASE=Wildcat IV 7210 + +pci:v00003D3Dd00001004* + ID_MODEL_FROM_DATABASE=Permedia + +pci:v00003D3Dd00003D04* + ID_MODEL_FROM_DATABASE=Permedia + +pci:v00003D3Dd0000FFFF* + ID_MODEL_FROM_DATABASE=Glint VGA + +pci:v00004005* + ID_VENDOR_FROM_DATABASE=Avance Logic Inc. + +pci:v00004005d00000300* + ID_MODEL_FROM_DATABASE=ALS300 PCI Audio Device + +pci:v00004005d00000308* + ID_MODEL_FROM_DATABASE=ALS300+ PCI Audio Device + +pci:v00004005d00000309* + ID_MODEL_FROM_DATABASE=PCI Input Controller + +pci:v00004005d00001064* + ID_MODEL_FROM_DATABASE=ALG-2064 + +pci:v00004005d00002064* + ID_MODEL_FROM_DATABASE=ALG-2064i + +pci:v00004005d00002128* + ID_MODEL_FROM_DATABASE=ALG-2364A GUI Accelerator + +pci:v00004005d00002301* + ID_MODEL_FROM_DATABASE=ALG-2301 + +pci:v00004005d00002302* + ID_MODEL_FROM_DATABASE=ALG-2302 + +pci:v00004005d00002303* + ID_MODEL_FROM_DATABASE=AVG-2302 GUI Accelerator + +pci:v00004005d00002364* + ID_MODEL_FROM_DATABASE=ALG-2364A + +pci:v00004005d00002464* + ID_MODEL_FROM_DATABASE=ALG-2464 + +pci:v00004005d00002501* + ID_MODEL_FROM_DATABASE=ALG-2564A/25128A + +pci:v00004005d00004000* + ID_MODEL_FROM_DATABASE=ALS4000 Audio Chipset + +pci:v00004005d00004000sv00004005sd00004000* + ID_MODEL_FROM_DATABASE=ALS4000 Audio Chipset + +pci:v00004005d00004710* + ID_MODEL_FROM_DATABASE=ALC200/200P + +pci:v00004033* + ID_VENDOR_FROM_DATABASE=Addtron Technology Co, Inc. + +pci:v00004033d00001360* + ID_MODEL_FROM_DATABASE=RTL8139 Ethernet + +pci:v00004040* + ID_VENDOR_FROM_DATABASE=NetXen Incorporated + +pci:v00004040d00000001* + ID_MODEL_FROM_DATABASE=NXB-10GXSR 10-Gigabit Ethernet PCIe Adapter with SR-XFP optical interface + +pci:v00004040d00000001sv0000103Csd00007047* + ID_MODEL_FROM_DATABASE=NC510F PCIe 10-Gigabit Server Adapter + +pci:v00004040d00000002* + ID_MODEL_FROM_DATABASE=NXB-10GCX4 10-Gigabit Ethernet PCIe Adapter with CX4 copper interface + +pci:v00004040d00000002sv0000103Csd00007048* + ID_MODEL_FROM_DATABASE=NC510c PCIe 10-Gigabit Server Adapter + +pci:v00004040d00000003* + ID_MODEL_FROM_DATABASE=NXB-4GCU Quad Gigabit Ethernet PCIe Adapter with 1000-BASE-T interface + +pci:v00004040d00000004* + ID_MODEL_FROM_DATABASE=BladeCenter-H 10-Gigabit Ethernet High Speed Daughter Card + +pci:v00004040d00000005* + ID_MODEL_FROM_DATABASE=NetXen Dual Port 10GbE Multifunction Adapter for c-Class + +pci:v00004040d00000005sv0000103Csd0000170E* + ID_MODEL_FROM_DATABASE=NC512m Dual Port 10GbE Multifunction BL-C Adapter + +pci:v00004040d00000024* + ID_MODEL_FROM_DATABASE=XG Mgmt + +pci:v00004040d00000025* + ID_MODEL_FROM_DATABASE=XG Mgmt + +pci:v00004040d00000100* + ID_MODEL_FROM_DATABASE=NX3031 Multifunction 1/10-Gigabit Server Adapter + +pci:v00004040d00000100sv0000103Csd0000171B* + ID_MODEL_FROM_DATABASE=NC522m Dual Port 10GbE Multifunction BL-c Adapter + +pci:v00004040d00000100sv0000103Csd00001740* + ID_MODEL_FROM_DATABASE=NC375T PCI Express Quad Port Gigabit Server Adapter + +pci:v00004040d00000100sv0000103Csd00003251* + ID_MODEL_FROM_DATABASE=NC375i 1G w/NC524SFP 10G Module + +pci:v00004040d00000100sv0000103Csd0000705A* + ID_MODEL_FROM_DATABASE=NC375i Integrated Quad Port Multifunction Gigabit Server Adapter + +pci:v00004040d00000100sv0000103Csd0000705B* + ID_MODEL_FROM_DATABASE=NC522SFP Dual Port 10GbE Server Adapter + +pci:v00004040d00000100sv0000152Dsd0000896B* + ID_MODEL_FROM_DATABASE=TG20 Dual Port 10GbE Server/Storage Adapter + +pci:v00004040d00000100sv00004040sd00000124* + ID_MODEL_FROM_DATABASE=NX3031 Quad Port Gigabit Server Adapter + +pci:v00004040d00000100sv00004040sd00000126* + ID_MODEL_FROM_DATABASE=Dual Port SFP+ 10GbE Server Adapter + +pci:v00004143* + ID_VENDOR_FROM_DATABASE=Digital Equipment Corp + +pci:v00004144* + ID_VENDOR_FROM_DATABASE=Alpha Data + +pci:v00004144d00000044* + ID_MODEL_FROM_DATABASE=ADM-XRCIIPro + +pci:v00004150* + ID_VENDOR_FROM_DATABASE=ONA Electroerosion + +pci:v00004150d00000001* + ID_MODEL_FROM_DATABASE=PCI32TLITE FILSTRUP1 PCI to VME Bridge Controller + +pci:v00004150d00000006* + ID_MODEL_FROM_DATABASE=PCI32TLITE UART 16550 Opencores + +pci:v00004150d00000007* + ID_MODEL_FROM_DATABASE=PCI32TLITE CAN Controller Opencores + +pci:v0000415A* + ID_VENDOR_FROM_DATABASE=Auzentech, Inc. + +pci:v0000416C* + ID_VENDOR_FROM_DATABASE=Aladdin Knowledge Systems + +pci:v0000416Cd00000100* + ID_MODEL_FROM_DATABASE=AladdinCARD + +pci:v0000416Cd00000200* + ID_MODEL_FROM_DATABASE=CPC + +pci:v00004321* + ID_VENDOR_FROM_DATABASE=Tata Power Strategic Electronics Division + +pci:v0000434E* + ID_VENDOR_FROM_DATABASE=CAST Navigation LLC + +pci:v00004444* + ID_VENDOR_FROM_DATABASE=Internext Compression Inc + +pci:v00004444d00000016* + ID_MODEL_FROM_DATABASE=iTVC16 (CX23416) Video Decoder + +pci:v00004444d00000016sv00000070sd00000003* + ID_MODEL_FROM_DATABASE=WinTV PVR 250 + +pci:v00004444d00000016sv00000070sd00000009* + ID_MODEL_FROM_DATABASE=WinTV PVR 150 + +pci:v00004444d00000016sv00000070sd00000801* + ID_MODEL_FROM_DATABASE=WinTV PVR 150 + +pci:v00004444d00000016sv00000070sd00000807* + ID_MODEL_FROM_DATABASE=WinTV PVR 150 + +pci:v00004444d00000016sv00000070sd00004001* + ID_MODEL_FROM_DATABASE=WinTV PVR 250 + +pci:v00004444d00000016sv00000070sd00004009* + ID_MODEL_FROM_DATABASE=WinTV PVR 250 + +pci:v00004444d00000016sv00000070sd00004801* + ID_MODEL_FROM_DATABASE=WinTV PVR 250 + +pci:v00004444d00000016sv00000070sd00004803* + ID_MODEL_FROM_DATABASE=WinTV PVR 250 + +pci:v00004444d00000016sv00000070sd00008003* + ID_MODEL_FROM_DATABASE=WinTV PVR 150 + +pci:v00004444d00000016sv00000070sd00008801* + ID_MODEL_FROM_DATABASE=WinTV PVR 150 + +pci:v00004444d00000016sv00000070sd0000C801* + ID_MODEL_FROM_DATABASE=WinTV PVR 150 + +pci:v00004444d00000016sv00000070sd0000E807* + ID_MODEL_FROM_DATABASE=WinTV PVR 500 (1st unit) + +pci:v00004444d00000016sv00000070sd0000E817* + ID_MODEL_FROM_DATABASE=WinTV PVR 500 (2nd unit) + +pci:v00004444d00000016sv00000070sd0000FF92* + ID_MODEL_FROM_DATABASE=WiNTV PVR-550 + +pci:v00004444d00000016sv00000270sd00000801* + ID_MODEL_FROM_DATABASE=WinTV PVR 150 + +pci:v00004444d00000016sv0000104Dsd0000013D* + ID_MODEL_FROM_DATABASE=ENX-26 TV Encoder + +pci:v00004444d00000016sv000010FCsd0000D038* + ID_MODEL_FROM_DATABASE=GV-MVP/RX2W (1st unit) + +pci:v00004444d00000016sv000010FCsd0000D039* + ID_MODEL_FROM_DATABASE=GV-MVP/RX2W (2nd unit) + +pci:v00004444d00000016sv000012ABsd0000FFF3* + ID_MODEL_FROM_DATABASE=MPG600 + +pci:v00004444d00000016sv000012ABsd0000FFFF* + ID_MODEL_FROM_DATABASE=MPG600 + +pci:v00004444d00000016sv00001461sd0000C00A* + ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK3 tuner) + +pci:v00004444d00000016sv00001461sd0000C00B* + ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK3 tuner) + +pci:v00004444d00000016sv00001461sd0000C00C* + ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC, JAPAN version, Philips FI1286MK2 tuner) + +pci:v00004444d00000016sv00001461sd0000C010* + ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC, Philips FI1236MK3 tuner) + +pci:v00004444d00000016sv00001461sd0000C011* + ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC+FM, Philips FM1236MK3 tuner) + +pci:v00004444d00000016sv00001461sd0000C018* + ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC, Philips FQ1236MK5 tuner) + +pci:v00004444d00000016sv00001461sd0000C019* + ID_MODEL_FROM_DATABASE=UltraTV 1500 MCE, a.k.a. M113 PCI Analog TV (NTSC+FM, Philips FQ1236MK5 tuner) + +pci:v00004444d00000016sv00001461sd0000C01A* + ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK5 tuner) + +pci:v00004444d00000016sv00001461sd0000C01B* + ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK5 tuner) + +pci:v00004444d00000016sv00001461sd0000C030* + ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC-J, Partsnic tuner) + +pci:v00004444d00000016sv00001461sd0000C031* + ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC-J+FM, Partsnic tuner) + +pci:v00004444d00000016sv00001461sd0000C032* + ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM, Partsnic tuner) + +pci:v00004444d00000016sv00001461sd0000C033* + ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM+FM, Partsnic tuner) + +pci:v00004444d00000016sv00001461sd0000C034* + ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC, Partsnic tuner) + +pci:v00004444d00000016sv00001461sd0000C035* + ID_MODEL_FROM_DATABASE=M113 PCI Analog TV (NTSC+FM, Partsnic tuner) + +pci:v00004444d00000016sv00001461sd0000C03F* + ID_MODEL_FROM_DATABASE=C115 PCI video capture card (no tuner) + +pci:v00004444d00000016sv00001461sd0000C136* + ID_MODEL_FROM_DATABASE=M104 mini-PCI Analog TV + +pci:v00004444d00000016sv00001461sd0000C20A* + ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK3 tuner) + +pci:v00004444d00000016sv00001461sd0000C218* + ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (NTSC, Philips FQ1236MK5 tuner) + +pci:v00004444d00000016sv00001461sd0000C219* + ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (NTSC+FM, Philips FQ1236MK5 tuner) + +pci:v00004444d00000016sv00001461sd0000C21A* + ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK5 tuner) + +pci:v00004444d00000016sv00001461sd0000C21B* + ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM+FM, Philips FM1216MK5 tuner) + +pci:v00004444d00000016sv00001461sd0000C230* + ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (NTSC-J, Partsnic tuner) + +pci:v00004444d00000016sv00001461sd0000C231* + ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (NTSC-J+FM, Partsnic tuner) + +pci:v00004444d00000016sv00001461sd0000C232* + ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM, Partsnic tuner) + +pci:v00004444d00000016sv00001461sd0000C233* + ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM+FM, Partsnic tuner) + +pci:v00004444d00000016sv00001461sd0000C234* + ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (NTSC, Partsnic tuner) + +pci:v00004444d00000016sv00001461sd0000C235* + ID_MODEL_FROM_DATABASE=M755 AVerTV Video Capture (NTSC+FM, Partsnic tuner) + +pci:v00004444d00000016sv00001461sd0000C337* + ID_MODEL_FROM_DATABASE=E106 AVerMedia AVerTV Video Capture + +pci:v00004444d00000016sv00001461sd0000C439* + ID_MODEL_FROM_DATABASE=M116 AVerMedia AVerTV MCE 116 Plus (NTSC/PAL/SECAM+FM+REMOTE, Xceive 2028 tuner) + +pci:v00004444d00000016sv00001461sd0000C5FF* + ID_MODEL_FROM_DATABASE=C755 AVerTV Video Capture card (no tuner) + +pci:v00004444d00000016sv00001461sd0000C6FF* + ID_MODEL_FROM_DATABASE=C115 PCI video capture card (no tuner) + +pci:v00004444d00000016sv00001461sd0000C739* + ID_MODEL_FROM_DATABASE=M785 AVerMedia PCI Analog TV (NTSC/PAL/SECAM+FM, Xceive 2028 tuner) + +pci:v00004444d00000016sv00009005sd00000092* + ID_MODEL_FROM_DATABASE=VideOh! AVC-2010 + +pci:v00004444d00000016sv00009005sd00000093* + ID_MODEL_FROM_DATABASE=VideOh! AVC-2410 + +pci:v00004444d00000803* + ID_MODEL_FROM_DATABASE=iTVC15 (CX23415) Video Decoder + +pci:v00004444d00000803sv00000070sd00004000* + ID_MODEL_FROM_DATABASE=WinTV PVR-350 + +pci:v00004444d00000803sv00000070sd00004001* + ID_MODEL_FROM_DATABASE=WinTV PVR-250 + +pci:v00004444d00000803sv00000070sd00004800* + ID_MODEL_FROM_DATABASE=WinTV PVR-350 (V1) + +pci:v00004444d00000803sv000012ABsd00000000* + ID_MODEL_FROM_DATABASE=MPG160 + +pci:v00004444d00000803sv00001461sd0000A3CE* + ID_MODEL_FROM_DATABASE=M179 + +pci:v00004444d00000803sv00001461sd0000A3CF* + ID_MODEL_FROM_DATABASE=M179 + +pci:v00004468* + ID_VENDOR_FROM_DATABASE=Bridgeport machines + +pci:v00004594* + ID_VENDOR_FROM_DATABASE=Cogetec Informatique Inc + +pci:v000045FB* + ID_VENDOR_FROM_DATABASE=Baldor Electric Company + +pci:v00004624* + ID_VENDOR_FROM_DATABASE=Budker Institute of Nuclear Physics + +pci:v00004624d0000ADC1* + ID_MODEL_FROM_DATABASE=ADC200ME High speed ADC + +pci:v00004624d0000DE01* + ID_MODEL_FROM_DATABASE=DL200ME High resolution delay line PCI based card + +pci:v00004624d0000DE02* + ID_MODEL_FROM_DATABASE=DL200ME Middle resolution delay line PCI based card + +pci:v00004680* + ID_VENDOR_FROM_DATABASE=Umax Computer Corp + +pci:v00004843* + ID_VENDOR_FROM_DATABASE=Hercules Computer Technology Inc + +pci:v00004916* + ID_VENDOR_FROM_DATABASE=RedCreek Communications Inc + +pci:v00004916d00001960* + ID_MODEL_FROM_DATABASE=RedCreek PCI adapter + +pci:v00004943* + ID_VENDOR_FROM_DATABASE=Growth Networks + +pci:v0000494F* + ID_VENDOR_FROM_DATABASE=ACCES I/O Products, Inc. + +pci:v0000494Fd00000520* + ID_MODEL_FROM_DATABASE=PCI-IDO-48 + +pci:v0000494Fd00000920* + ID_MODEL_FROM_DATABASE=PCI-IDI-48 + +pci:v0000494Fd00000C50* + ID_MODEL_FROM_DATABASE=PCI-DIO-24H + +pci:v0000494Fd00000C51* + ID_MODEL_FROM_DATABASE=PCI-DIO-24D + +pci:v0000494Fd00000C60* + ID_MODEL_FROM_DATABASE=PCI-DIO-48(H) + +pci:v0000494Fd00000C68* + ID_MODEL_FROM_DATABASE=PCI-DIO-72 + +pci:v0000494Fd00000C70* + ID_MODEL_FROM_DATABASE=PCI-DIO-96 + +pci:v0000494Fd00000C78* + ID_MODEL_FROM_DATABASE=PCI-DIO-120 + +pci:v0000494Fd00000DC8* + ID_MODEL_FROM_DATABASE=PCI-IDIO-16 + +pci:v0000494Fd00000E50* + ID_MODEL_FROM_DATABASE=PCI-DIO-24S + +pci:v0000494Fd00000E51* + ID_MODEL_FROM_DATABASE=PCI-DIO-24H(C) + +pci:v0000494Fd00000E52* + ID_MODEL_FROM_DATABASE=PCI-DIO-24D(C) + +pci:v0000494Fd00000E60* + ID_MODEL_FROM_DATABASE=PCI-DIO-48S(H) + +pci:v0000494Fd00000E61* + ID_MODEL_FROM_DATABASE=P104-DIO-24S + +pci:v0000494Fd00000F00* + ID_MODEL_FROM_DATABASE=PCI-IIRO-8 + +pci:v0000494Fd00000F01* + ID_MODEL_FROM_DATABASE=LPCI-IIRO-8 + +pci:v0000494Fd00000F08* + ID_MODEL_FROM_DATABASE=PCI-IIRO-16 + +pci:v0000494Fd00001050* + ID_MODEL_FROM_DATABASE=PCI-422/485-2 + +pci:v0000494Fd00001058* + ID_MODEL_FROM_DATABASE=PCI-COM422/4 + +pci:v0000494Fd00001059* + ID_MODEL_FROM_DATABASE=PCI-COM485/4 + +pci:v0000494Fd00001068* + ID_MODEL_FROM_DATABASE=PCI-COM422/8 + +pci:v0000494Fd00001069* + ID_MODEL_FROM_DATABASE=PCI-COM485/8 + +pci:v0000494Fd00001088* + ID_MODEL_FROM_DATABASE=PCI-COM232/1 + +pci:v0000494Fd00001090* + ID_MODEL_FROM_DATABASE=PCI-COM232/2 + +pci:v0000494Fd000010A8* + ID_MODEL_FROM_DATABASE=P104-COM232-8 + +pci:v0000494Fd000010C9* + ID_MODEL_FROM_DATABASE=PCI-COM-1S + +pci:v0000494Fd000010D0* + ID_MODEL_FROM_DATABASE=PCI-COM2S + +pci:v0000494Fd000010E8* + ID_MODEL_FROM_DATABASE=PCI-COM-8SM + +pci:v0000494Fd00001148* + ID_MODEL_FROM_DATABASE=PCI-ICM-1S + +pci:v0000494Fd00001150* + ID_MODEL_FROM_DATABASE=PCI-ICM-2S + +pci:v0000494Fd00001158* + ID_MODEL_FROM_DATABASE=PCI-ICM422/4 + +pci:v0000494Fd00001159* + ID_MODEL_FROM_DATABASE=PCI-ICM485/4 + +pci:v0000494Fd00001250* + ID_MODEL_FROM_DATABASE=PCI-WDG-2S + +pci:v0000494Fd000012D0* + ID_MODEL_FROM_DATABASE=PCI-WDG-IMPAC + +pci:v0000494Fd000022C0* + ID_MODEL_FROM_DATABASE=PCI-WDG-CSM + +pci:v0000494Fd00002C50* + ID_MODEL_FROM_DATABASE=PCI-DIO-96CT + +pci:v0000494Fd00002C58* + ID_MODEL_FROM_DATABASE=PCI-DIO-96C3 + +pci:v0000494Fd00005ED0* + ID_MODEL_FROM_DATABASE=PCI-DAC + +pci:v0000494Fd00006C90* + ID_MODEL_FROM_DATABASE=PCI-DA12-2 + +pci:v0000494Fd00006C98* + ID_MODEL_FROM_DATABASE=PCI-DA12-4 + +pci:v0000494Fd00006CA0* + ID_MODEL_FROM_DATABASE=PCI-DA12-6 + +pci:v0000494Fd00006CA8* + ID_MODEL_FROM_DATABASE=PCI-DA12-8 + +pci:v0000494Fd00006CA9* + ID_MODEL_FROM_DATABASE=PCI-DA12-8V + +pci:v0000494Fd00006CB0* + ID_MODEL_FROM_DATABASE=PCI-DA12-16 + +pci:v0000494Fd00006CB1* + ID_MODEL_FROM_DATABASE=PCI-DA12-16V + +pci:v0000494Fd00008EF0* + ID_MODEL_FROM_DATABASE=P104-FAS16-16 + +pci:v0000494Fd0000ACA8* + ID_MODEL_FROM_DATABASE=PCI-AI12-16 + +pci:v0000494Fd0000ACA9* + ID_MODEL_FROM_DATABASE=PCI-AI12-16A + +pci:v0000494Fd0000ECA8* + ID_MODEL_FROM_DATABASE=PCI-AIO12-16 + +pci:v0000494Fd0000ECA9* + ID_MODEL_FROM_DATABASE=PCI-A12-16 + +pci:v0000494Fd0000ECAA* + ID_MODEL_FROM_DATABASE=PCI-A12-16A + +pci:v0000494Fd0000ECE8* + ID_MODEL_FROM_DATABASE=PCI-A16-16 + +pci:v00004978* + ID_VENDOR_FROM_DATABASE=Axil Computer Inc + +pci:v00004A14* + ID_VENDOR_FROM_DATABASE=NetVin + +pci:v00004A14d00005000* + ID_MODEL_FROM_DATABASE=NV5000SC + +pci:v00004A14d00005000sv00004A14sd00005000* + ID_MODEL_FROM_DATABASE=RT8029-Based Ethernet Adapter + +pci:v00004B10* + ID_VENDOR_FROM_DATABASE=Buslogic Inc. + +pci:v00004C48* + ID_VENDOR_FROM_DATABASE=LUNG HWA Electronics + +pci:v00004C53* + ID_VENDOR_FROM_DATABASE=SBS Technologies + +pci:v00004C53d00000000* + ID_MODEL_FROM_DATABASE=PLUSTEST device + +pci:v00004C53d00000000sv00004C53sd00003000* + ID_MODEL_FROM_DATABASE=PLUSTEST card (PC104+) + +pci:v00004C53d00000000sv00004C53sd00003001* + ID_MODEL_FROM_DATABASE=PLUSTEST card (PMC) + +pci:v00004C53d00000001* + ID_MODEL_FROM_DATABASE=PLUSTEST-MM device + +pci:v00004C53d00000001sv00004C53sd00003002* + ID_MODEL_FROM_DATABASE=PLUSTEST-MM card (PMC) + +pci:v00004CA1* + ID_VENDOR_FROM_DATABASE=Seanix Technology Inc + +pci:v00004D51* + ID_VENDOR_FROM_DATABASE=MediaQ Inc. + +pci:v00004D51d00000200* + ID_MODEL_FROM_DATABASE=MQ-200 + +pci:v00004D54* + ID_VENDOR_FROM_DATABASE=Microtechnica Co Ltd + +pci:v00004D56* + ID_VENDOR_FROM_DATABASE=MATRIX VISION GmbH + +pci:v00004D56d00000000* + ID_MODEL_FROM_DATABASE=[mvHYPERION-CLe/CLb] CameraLink PCI Express x1 Frame Grabber + +pci:v00004D56d00000001* + ID_MODEL_FROM_DATABASE=[mvHYPERION-CLf/CLm] CameraLink PCI Express x4 Frame Grabber + +pci:v00004D56d00000010* + ID_MODEL_FROM_DATABASE=[mvHYPERION-16R16/-32R16] 16 Video Channel PCI Express x4 Frame Grabber + +pci:v00004D56d00000020* + ID_MODEL_FROM_DATABASE=[mvHYPERION-HD-SDI] HD-SDI PCI Express x4 Frame Grabber + +pci:v00004D56d00000030* + ID_MODEL_FROM_DATABASE=[mvHYPERION-HD-SDI-Merger] HD-SDI PCI Express x4 Frame Grabber + +pci:v00004DDC* + ID_VENDOR_FROM_DATABASE=ILC Data Device Corp + +pci:v00004DDCd00000100* + ID_MODEL_FROM_DATABASE=DD-42924I5-300 (ARINC 429 Data Bus) + +pci:v00004DDCd00000801* + ID_MODEL_FROM_DATABASE=BU-65570I1 MIL-STD-1553 Test and Simulation + +pci:v00004DDCd00000802* + ID_MODEL_FROM_DATABASE=BU-65570I2 MIL-STD-1553 Test and Simulation + +pci:v00004DDCd00000811* + ID_MODEL_FROM_DATABASE=BU-65572I1 MIL-STD-1553 Test and Simulation + +pci:v00004DDCd00000812* + ID_MODEL_FROM_DATABASE=BU-65572I2 MIL-STD-1553 Test and Simulation + +pci:v00004DDCd00000881* + ID_MODEL_FROM_DATABASE=BU-65570T1 MIL-STD-1553 Test and Simulation + +pci:v00004DDCd00000882* + ID_MODEL_FROM_DATABASE=BU-65570T2 MIL-STD-1553 Test and Simulation + +pci:v00004DDCd00000891* + ID_MODEL_FROM_DATABASE=BU-65572T1 MIL-STD-1553 Test and Simulation + +pci:v00004DDCd00000892* + ID_MODEL_FROM_DATABASE=BU-65572T2 MIL-STD-1553 Test and Simulation + +pci:v00004DDCd00000901* + ID_MODEL_FROM_DATABASE=BU-65565C1 MIL-STD-1553 Data Bus + +pci:v00004DDCd00000902* + ID_MODEL_FROM_DATABASE=BU-65565C2 MIL-STD-1553 Data Bus + +pci:v00004DDCd00000903* + ID_MODEL_FROM_DATABASE=BU-65565C3 MIL-STD-1553 Data Bus + +pci:v00004DDCd00000904* + ID_MODEL_FROM_DATABASE=BU-65565C4 MIL-STD-1553 Data Bus + +pci:v00004DDCd00000B01* + ID_MODEL_FROM_DATABASE=BU-65569I1 MIL-STD-1553 Data Bus + +pci:v00004DDCd00000B02* + ID_MODEL_FROM_DATABASE=BU-65569I2 MIL-STD-1553 Data Bus + +pci:v00004DDCd00000B03* + ID_MODEL_FROM_DATABASE=BU-65569I3 MIL-STD-1553 Data Bus + +pci:v00004DDCd00000B04* + ID_MODEL_FROM_DATABASE=BU-65569I4 MIL-STD-1553 Data Bus + +pci:v00005045* + ID_VENDOR_FROM_DATABASE=University of Toronto + +pci:v00005045d00004243* + ID_MODEL_FROM_DATABASE=BLASTbus PCI Interface Card v1 + +pci:v00005046* + ID_VENDOR_FROM_DATABASE=GemTek Technology Corporation + +pci:v00005046d00001001* + ID_MODEL_FROM_DATABASE=PCI Radio + +pci:v00005053* + ID_VENDOR_FROM_DATABASE=Voyetra Technologies + +pci:v00005053d00002010* + ID_MODEL_FROM_DATABASE=Daytona Audio Adapter + +pci:v000050B2* + ID_VENDOR_FROM_DATABASE=TerraTec Electronic GmbH + +pci:v000050B2d00001111* + ID_MODEL_FROM_DATABASE=Terratec XLerate + +pci:v00005136* + ID_VENDOR_FROM_DATABASE=S S Technologies + +pci:v00005143* + ID_VENDOR_FROM_DATABASE=Qualcomm Inc + +pci:v00005145* + ID_VENDOR_FROM_DATABASE=Ensoniq (Old) + +pci:v00005145d00003031* + ID_MODEL_FROM_DATABASE=Concert AudioPCI + +pci:v00005168* + ID_VENDOR_FROM_DATABASE=Animation Technologies Inc. + +pci:v00005168d00000300* + ID_MODEL_FROM_DATABASE=FlyDVB-S + +pci:v00005168d00000301* + ID_MODEL_FROM_DATABASE=FlyDVB-T + +pci:v00005301* + ID_VENDOR_FROM_DATABASE=Alliance Semiconductor Corp. + +pci:v00005301d00000001* + ID_MODEL_FROM_DATABASE=ProMotion aT3D + +pci:v00005333* + ID_VENDOR_FROM_DATABASE=S3 Inc. + +pci:v00005333d00000551* + ID_MODEL_FROM_DATABASE=Plato/PX (system) + +pci:v00005333d00005631* + ID_MODEL_FROM_DATABASE=86c325 [ViRGE] + +pci:v00005333d00008800* + ID_MODEL_FROM_DATABASE=86c866 [Vision 866] + +pci:v00005333d00008801* + ID_MODEL_FROM_DATABASE=86c964 [Vision 964] + +pci:v00005333d00008810* + ID_MODEL_FROM_DATABASE=86c764_0 [Trio 32 vers 0] + +pci:v00005333d00008811* + ID_MODEL_FROM_DATABASE=86c764/765 [Trio32/64/64V+] + +pci:v00005333d00008812* + ID_MODEL_FROM_DATABASE=86cM65 [Aurora64V+] + +pci:v00005333d00008813* + ID_MODEL_FROM_DATABASE=86c764_3 [Trio 32/64 vers 3] + +pci:v00005333d00008814* + ID_MODEL_FROM_DATABASE=86c767 [Trio 64UV+] + +pci:v00005333d00008815* + ID_MODEL_FROM_DATABASE=86cM65 [Aurora 128] + +pci:v00005333d0000883D* + ID_MODEL_FROM_DATABASE=86c988 [ViRGE/VX] + +pci:v00005333d00008870* + ID_MODEL_FROM_DATABASE=FireGL + +pci:v00005333d00008880* + ID_MODEL_FROM_DATABASE=86c868 [Vision 868 VRAM] vers 0 + +pci:v00005333d00008881* + ID_MODEL_FROM_DATABASE=86c868 [Vision 868 VRAM] vers 1 + +pci:v00005333d00008882* + ID_MODEL_FROM_DATABASE=86c868 [Vision 868 VRAM] vers 2 + +pci:v00005333d00008883* + ID_MODEL_FROM_DATABASE=86c868 [Vision 868 VRAM] vers 3 + +pci:v00005333d000088B0* + ID_MODEL_FROM_DATABASE=86c928 [Vision 928 VRAM] vers 0 + +pci:v00005333d000088B1* + ID_MODEL_FROM_DATABASE=86c928 [Vision 928 VRAM] vers 1 + +pci:v00005333d000088B2* + ID_MODEL_FROM_DATABASE=86c928 [Vision 928 VRAM] vers 2 + +pci:v00005333d000088B3* + ID_MODEL_FROM_DATABASE=86c928 [Vision 928 VRAM] vers 3 + +pci:v00005333d000088C0* + ID_MODEL_FROM_DATABASE=86c864 [Vision 864 DRAM] vers 0 + +pci:v00005333d000088C1* + ID_MODEL_FROM_DATABASE=86c864 [Vision 864 DRAM] vers 1 + +pci:v00005333d000088C2* + ID_MODEL_FROM_DATABASE=86c864 [Vision 864-P DRAM] vers 2 + +pci:v00005333d000088C3* + ID_MODEL_FROM_DATABASE=86c864 [Vision 864-P DRAM] vers 3 + +pci:v00005333d000088D0* + ID_MODEL_FROM_DATABASE=86c964 [Vision 964 VRAM] vers 0 + +pci:v00005333d000088D1* + ID_MODEL_FROM_DATABASE=86c964 [Vision 964 VRAM] vers 1 + +pci:v00005333d000088D2* + ID_MODEL_FROM_DATABASE=86c964 [Vision 964-P VRAM] vers 2 + +pci:v00005333d000088D3* + ID_MODEL_FROM_DATABASE=86c964 [Vision 964-P VRAM] vers 3 + +pci:v00005333d000088F0* + ID_MODEL_FROM_DATABASE=86c968 [Vision 968 VRAM] rev 0 + +pci:v00005333d000088F1* + ID_MODEL_FROM_DATABASE=86c968 [Vision 968 VRAM] rev 1 + +pci:v00005333d000088F2* + ID_MODEL_FROM_DATABASE=86c968 [Vision 968 VRAM] rev 2 + +pci:v00005333d000088F3* + ID_MODEL_FROM_DATABASE=86c968 [Vision 968 VRAM] rev 3 + +pci:v00005333d00008900* + ID_MODEL_FROM_DATABASE=86c755 [Trio 64V2/DX] + +pci:v00005333d00008900sv00005333sd00008900* + ID_MODEL_FROM_DATABASE=86C775 Trio64V2/DX + +pci:v00005333d00008901* + ID_MODEL_FROM_DATABASE=86c775/86c785 [Trio 64V2/DX or /GX] + +pci:v00005333d00008901sv00005333sd00008901* + ID_MODEL_FROM_DATABASE=86C775 Trio64V2/DX, 86C785 Trio64V2/GX + +pci:v00005333d00008902* + ID_MODEL_FROM_DATABASE=Plato/PX + +pci:v00005333d00008903* + ID_MODEL_FROM_DATABASE=Trio 3D business multimedia + +pci:v00005333d00008904* + ID_MODEL_FROM_DATABASE=86c365, 86c366 [Trio 3D] + +pci:v00005333d00008904sv00001014sd000000DB* + ID_MODEL_FROM_DATABASE=Integrated Trio3D + +pci:v00005333d00008904sv00004843sd0000314A* + ID_MODEL_FROM_DATABASE=Terminator 128/3D GLH + +pci:v00005333d00008904sv00005333sd00008904* + ID_MODEL_FROM_DATABASE=86C365 Trio3D AGP + +pci:v00005333d00008905* + ID_MODEL_FROM_DATABASE=Trio 64V+ family + +pci:v00005333d00008906* + ID_MODEL_FROM_DATABASE=Trio 64V+ family + +pci:v00005333d00008907* + ID_MODEL_FROM_DATABASE=Trio 64V+ family + +pci:v00005333d00008908* + ID_MODEL_FROM_DATABASE=Trio 64V+ family + +pci:v00005333d00008909* + ID_MODEL_FROM_DATABASE=Trio 64V+ family + +pci:v00005333d0000890A* + ID_MODEL_FROM_DATABASE=Trio 64V+ family + +pci:v00005333d0000890B* + ID_MODEL_FROM_DATABASE=Trio 64V+ family + +pci:v00005333d0000890C* + ID_MODEL_FROM_DATABASE=Trio 64V+ family + +pci:v00005333d0000890D* + ID_MODEL_FROM_DATABASE=Trio 64V+ family + +pci:v00005333d0000890E* + ID_MODEL_FROM_DATABASE=Trio 64V+ family + +pci:v00005333d0000890F* + ID_MODEL_FROM_DATABASE=Trio 64V+ family + +pci:v00005333d00008A01* + ID_MODEL_FROM_DATABASE=86c375 [ViRGE/DX] or 86c385 [ViRGE/GX] + +pci:v00005333d00008A01sv00000E11sd0000B032* + ID_MODEL_FROM_DATABASE=ViRGE/GX + +pci:v00005333d00008A01sv000010B4sd00001617* + ID_MODEL_FROM_DATABASE=Nitro 3D + +pci:v00005333d00008A01sv000010B4sd00001717* + ID_MODEL_FROM_DATABASE=Nitro 3D + +pci:v00005333d00008A01sv00005333sd00008A01* + ID_MODEL_FROM_DATABASE=ViRGE/DX + +pci:v00005333d00008A10* + ID_MODEL_FROM_DATABASE=ViRGE/GX2 + +pci:v00005333d00008A10sv00001092sd00008A10* + ID_MODEL_FROM_DATABASE=Stealth 3D 4000 + +pci:v00005333d00008A13* + ID_MODEL_FROM_DATABASE=86c360 [Trio 3D/1X], 86c362, 86c368 [Trio 3D/2X] + +pci:v00005333d00008A13sv00005333sd00008A13* + ID_MODEL_FROM_DATABASE=Trio3D/2X + +pci:v00005333d00008A20* + ID_MODEL_FROM_DATABASE=86c794 [Savage 3D] + +pci:v00005333d00008A20sv00005333sd00008A20* + ID_MODEL_FROM_DATABASE=86C391 Savage3D + +pci:v00005333d00008A21* + ID_MODEL_FROM_DATABASE=86c390 [Savage 3D/MV] + +pci:v00005333d00008A21sv00005333sd00008A21* + ID_MODEL_FROM_DATABASE=86C390 Savage3D/MV + +pci:v00005333d00008A22* + ID_MODEL_FROM_DATABASE=Savage 4 + +pci:v00005333d00008A22sv00001033sd00008068* + ID_MODEL_FROM_DATABASE=Savage 4 + +pci:v00005333d00008A22sv00001033sd00008069* + ID_MODEL_FROM_DATABASE=Savage 4 + +pci:v00005333d00008A22sv00001033sd00008110* + ID_MODEL_FROM_DATABASE=Savage 4 LT + +pci:v00005333d00008A22sv0000105Dsd00000018* + ID_MODEL_FROM_DATABASE=SR9 8Mb SDRAM + +pci:v00005333d00008A22sv0000105Dsd0000002A* + ID_MODEL_FROM_DATABASE=SR9 Pro 16Mb SDRAM + +pci:v00005333d00008A22sv0000105Dsd0000003A* + ID_MODEL_FROM_DATABASE=SR9 Pro 32Mb SDRAM + +pci:v00005333d00008A22sv0000105Dsd0000092F* + ID_MODEL_FROM_DATABASE=SR9 Pro+ 16Mb SGRAM + +pci:v00005333d00008A22sv00001092sd00004207* + ID_MODEL_FROM_DATABASE=Stealth III S540 + +pci:v00005333d00008A22sv00001092sd00004800* + ID_MODEL_FROM_DATABASE=Stealth III S540 + +pci:v00005333d00008A22sv00001092sd00004807* + ID_MODEL_FROM_DATABASE=SpeedStar A90 + +pci:v00005333d00008A22sv00001092sd00004808* + ID_MODEL_FROM_DATABASE=Stealth III S540 + +pci:v00005333d00008A22sv00001092sd00004809* + ID_MODEL_FROM_DATABASE=Stealth III S540 + +pci:v00005333d00008A22sv00001092sd0000480E* + ID_MODEL_FROM_DATABASE=Stealth III S540 + +pci:v00005333d00008A22sv00001092sd00004904* + ID_MODEL_FROM_DATABASE=Stealth III S520 + +pci:v00005333d00008A22sv00001092sd00004905* + ID_MODEL_FROM_DATABASE=SpeedStar A200 + +pci:v00005333d00008A22sv00001092sd00004A09* + ID_MODEL_FROM_DATABASE=Stealth III S540 + +pci:v00005333d00008A22sv00001092sd00004A0B* + ID_MODEL_FROM_DATABASE=Stealth III S540 Xtreme + +pci:v00005333d00008A22sv00001092sd00004A0F* + ID_MODEL_FROM_DATABASE=Stealth III S540 + +pci:v00005333d00008A22sv00001092sd00004E01* + ID_MODEL_FROM_DATABASE=Stealth III S540 + +pci:v00005333d00008A22sv00001102sd0000101D* + ID_MODEL_FROM_DATABASE=3d Blaster Savage 4 + +pci:v00005333d00008A22sv00001102sd0000101E* + ID_MODEL_FROM_DATABASE=3d Blaster Savage 4 + +pci:v00005333d00008A22sv00005333sd00008100* + ID_MODEL_FROM_DATABASE=86C394-397 Savage4 SDRAM 100 + +pci:v00005333d00008A22sv00005333sd00008110* + ID_MODEL_FROM_DATABASE=86C394-397 Savage4 SDRAM 110 + +pci:v00005333d00008A22sv00005333sd00008125* + ID_MODEL_FROM_DATABASE=86C394-397 Savage4 SDRAM 125 + +pci:v00005333d00008A22sv00005333sd00008143* + ID_MODEL_FROM_DATABASE=86C394-397 Savage4 SDRAM 143 + +pci:v00005333d00008A22sv00005333sd00008A22* + ID_MODEL_FROM_DATABASE=86C394-397 Savage4 + +pci:v00005333d00008A22sv00005333sd00008A2E* + ID_MODEL_FROM_DATABASE=86C394-397 Savage4 32bit + +pci:v00005333d00008A22sv00005333sd00009125* + ID_MODEL_FROM_DATABASE=86C394-397 Savage4 SGRAM 125 + +pci:v00005333d00008A22sv00005333sd00009143* + ID_MODEL_FROM_DATABASE=86C394-397 Savage4 SGRAM 143 + +pci:v00005333d00008A23* + ID_MODEL_FROM_DATABASE=Savage 4 + +pci:v00005333d00008A25* + ID_MODEL_FROM_DATABASE=ProSavage PM133 + +pci:v00005333d00008A25sv00000303sd00000303* + ID_MODEL_FROM_DATABASE=D9840-60001 [Brio BA410 Motherboard] + +pci:v00005333d00008A26* + ID_MODEL_FROM_DATABASE=ProSavage KM133 + +pci:v00005333d00008C00* + ID_MODEL_FROM_DATABASE=ViRGE/M3 + +pci:v00005333d00008C01* + ID_MODEL_FROM_DATABASE=ViRGE/MX + +pci:v00005333d00008C01sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=ViRGE/MX + +pci:v00005333d00008C02* + ID_MODEL_FROM_DATABASE=ViRGE/MX+ + +pci:v00005333d00008C03* + ID_MODEL_FROM_DATABASE=ViRGE/MX+MV + +pci:v00005333d00008C10* + ID_MODEL_FROM_DATABASE=86C270-294 Savage/MX-MV + +pci:v00005333d00008C11* + ID_MODEL_FROM_DATABASE=82C270-294 Savage/MX + +pci:v00005333d00008C12* + ID_MODEL_FROM_DATABASE=86C270-294 Savage/IX-MV + +pci:v00005333d00008C12sv00001014sd0000017F* + ID_MODEL_FROM_DATABASE=ThinkPad T20/T22 + +pci:v00005333d00008C12sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=86C584 SuperSavage/IXC Toshiba + +pci:v00005333d00008C13* + ID_MODEL_FROM_DATABASE=86C270-294 Savage/IX + +pci:v00005333d00008C13sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Magnia Z310 + +pci:v00005333d00008C22* + ID_MODEL_FROM_DATABASE=SuperSavage MX/128 + +pci:v00005333d00008C24* + ID_MODEL_FROM_DATABASE=SuperSavage MX/64 + +pci:v00005333d00008C26* + ID_MODEL_FROM_DATABASE=SuperSavage MX/64C + +pci:v00005333d00008C2A* + ID_MODEL_FROM_DATABASE=SuperSavage IX/128 SDR + +pci:v00005333d00008C2B* + ID_MODEL_FROM_DATABASE=SuperSavage IX/128 DDR + +pci:v00005333d00008C2C* + ID_MODEL_FROM_DATABASE=SuperSavage IX/64 SDR + +pci:v00005333d00008C2D* + ID_MODEL_FROM_DATABASE=SuperSavage IX/64 DDR + +pci:v00005333d00008C2E* + ID_MODEL_FROM_DATABASE=SuperSavage IX/C SDR + +pci:v00005333d00008C2Esv00001014sd000001FC* + ID_MODEL_FROM_DATABASE=ThinkPad T23 + +pci:v00005333d00008C2F* + ID_MODEL_FROM_DATABASE=SuperSavage IX/C DDR + +pci:v00005333d00008D01* + ID_MODEL_FROM_DATABASE=86C380 [ProSavageDDR K4M266] + +pci:v00005333d00008D02* + ID_MODEL_FROM_DATABASE=VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK) + +pci:v00005333d00008D03* + ID_MODEL_FROM_DATABASE=VT8751 [ProSavageDDR P4M266] + +pci:v00005333d00008D04* + ID_MODEL_FROM_DATABASE=VT8375 [ProSavage8 KM266/KL266] + +pci:v00005333d00008E40* + ID_MODEL_FROM_DATABASE=2300E Graphics Processor + +pci:v00005333d00008E48* + ID_MODEL_FROM_DATABASE=Chrome S27 PCIE + +pci:v00005333d00008E48sv00005333sd00000130* + ID_MODEL_FROM_DATABASE=Chrome S27 256M DDR2 + +pci:v00005333d00009102* + ID_MODEL_FROM_DATABASE=86C410 Savage 2000 + +pci:v00005333d00009102sv00001092sd00005932* + ID_MODEL_FROM_DATABASE=Viper II Z200 + +pci:v00005333d00009102sv00001092sd00005934* + ID_MODEL_FROM_DATABASE=Viper II Z200 + +pci:v00005333d00009102sv00001092sd00005952* + ID_MODEL_FROM_DATABASE=Viper II Z200 + +pci:v00005333d00009102sv00001092sd00005954* + ID_MODEL_FROM_DATABASE=Viper II Z200 + +pci:v00005333d00009102sv00001092sd00005A35* + ID_MODEL_FROM_DATABASE=Viper II Z200 + +pci:v00005333d00009102sv00001092sd00005A37* + ID_MODEL_FROM_DATABASE=Viper II Z200 + +pci:v00005333d00009102sv00001092sd00005A55* + ID_MODEL_FROM_DATABASE=Viper II Z200 + +pci:v00005333d00009102sv00001092sd00005A57* + ID_MODEL_FROM_DATABASE=Viper II Z200 + +pci:v00005333d0000CA00* + ID_MODEL_FROM_DATABASE=SonicVibes + +pci:v00005431* + ID_VENDOR_FROM_DATABASE=AuzenTech, Inc. + +pci:v0000544C* + ID_VENDOR_FROM_DATABASE=Teralogic Inc + +pci:v0000544Cd00000350* + ID_MODEL_FROM_DATABASE=TL880-based HDTV/ATSC tuner + +pci:v00005452* + ID_VENDOR_FROM_DATABASE=SCANLAB AG + +pci:v00005452d00003443* + ID_MODEL_FROM_DATABASE=RTC4 + +pci:v00005455* + ID_VENDOR_FROM_DATABASE=Technische University Berlin + +pci:v00005455d00004458* + ID_MODEL_FROM_DATABASE=S5933 + +pci:v00005456* + ID_VENDOR_FROM_DATABASE=GoTView + +pci:v00005519* + ID_VENDOR_FROM_DATABASE=Cnet Technologies, Inc. + +pci:v00005544* + ID_VENDOR_FROM_DATABASE=Dunord Technologies + +pci:v00005544d00000001* + ID_MODEL_FROM_DATABASE=I-30xx Scanner Interface + +pci:v00005555* + ID_VENDOR_FROM_DATABASE=Genroco, Inc + +pci:v00005555d00000003* + ID_MODEL_FROM_DATABASE=TURBOstor HFP-832 [HiPPI NIC] + +pci:v00005646* + ID_VENDOR_FROM_DATABASE=Vector Fabrics BV + +pci:v00005654* + ID_VENDOR_FROM_DATABASE=VoiceTronix Pty Ltd + +pci:v00005700* + ID_VENDOR_FROM_DATABASE=Netpower + +pci:v0000584D* + ID_VENDOR_FROM_DATABASE=AuzenTech Co., Ltd. + +pci:v00005851* + ID_VENDOR_FROM_DATABASE=Exacq Technologies + +pci:v00005853* + ID_VENDOR_FROM_DATABASE=XenSource, Inc. + +pci:v00005853d00000001* + ID_MODEL_FROM_DATABASE=Xen Platform Device + +pci:v00005853d0000C110* + ID_MODEL_FROM_DATABASE=Virtualized HID + +pci:v00005853d0000C147* + ID_MODEL_FROM_DATABASE=Virtualized Graphics Device + +pci:v00005854* + ID_VENDOR_FROM_DATABASE=GoTView + +pci:v00005ACE* + ID_VENDOR_FROM_DATABASE=Beholder International Ltd. + +pci:v0000631C* + ID_VENDOR_FROM_DATABASE=SmartInfra Ltd + +pci:v0000631Cd00001652* + ID_MODEL_FROM_DATABASE=PXI-1652 Signal Generator + +pci:v0000631Cd00002504* + ID_MODEL_FROM_DATABASE=PXI-2504 Signal Interrogator + +pci:v00006356* + ID_VENDOR_FROM_DATABASE=UltraStor + +pci:v00006374* + ID_VENDOR_FROM_DATABASE=c't Magazin fuer Computertechnik + +pci:v00006374d00006773* + ID_MODEL_FROM_DATABASE=GPPCI + +pci:v00006409* + ID_VENDOR_FROM_DATABASE=Logitec Corp. + +pci:v00006549* + ID_VENDOR_FROM_DATABASE=Teradici Corp. + +pci:v00006549d00001200* + ID_MODEL_FROM_DATABASE=TERA1200 PC-over-IP Host + +pci:v00006666* + ID_VENDOR_FROM_DATABASE=Decision Computer International Co. + +pci:v00006666d00000001* + ID_MODEL_FROM_DATABASE=PCCOM4 + +pci:v00006666d00000002* + ID_MODEL_FROM_DATABASE=PCCOM8 + +pci:v00006666d00000004* + ID_MODEL_FROM_DATABASE=PCCOM2 + +pci:v00006666d00000101* + ID_MODEL_FROM_DATABASE=PCI 8255/8254 I/O Card + +pci:v00006666d00000200* + ID_MODEL_FROM_DATABASE=12-bit AD/DA Card + +pci:v00006666d00000201* + ID_MODEL_FROM_DATABASE=14-bit AD/DA Card + +pci:v00006666d00001011* + ID_MODEL_FROM_DATABASE=Industrial Card + +pci:v00006666d00001021* + ID_MODEL_FROM_DATABASE=8 photo couple 8 relay Card + +pci:v00006666d00001022* + ID_MODEL_FROM_DATABASE=4 photo couple 4 relay Card + +pci:v00006666d00001025* + ID_MODEL_FROM_DATABASE=16 photo couple 16 relay Card + +pci:v00006666d00004000* + ID_MODEL_FROM_DATABASE=WatchDog Card + +pci:v00006900* + ID_VENDOR_FROM_DATABASE=Red Hat, Inc. + +pci:v00007063* + ID_VENDOR_FROM_DATABASE=pcHDTV + +pci:v00007063d00002000* + ID_MODEL_FROM_DATABASE=HD-2000 + +pci:v00007063d00003000* + ID_MODEL_FROM_DATABASE=HD-3000 + +pci:v00007063d00005500* + ID_MODEL_FROM_DATABASE=HD5500 HDTV + +pci:v00007284* + ID_VENDOR_FROM_DATABASE=HT OMEGA Inc. + +pci:v00007604* + ID_VENDOR_FROM_DATABASE=O.N. Electronic Co Ltd. + +pci:v00007BDE* + ID_VENDOR_FROM_DATABASE=MIDAC Corporation + +pci:v00007FED* + ID_VENDOR_FROM_DATABASE=PowerTV + +pci:v00008008* + ID_VENDOR_FROM_DATABASE=Quancom Electronic GmbH + +pci:v00008008d00000010* + ID_MODEL_FROM_DATABASE=WDOG1 [PCI-Watchdog 1] + +pci:v00008008d00000011* + ID_MODEL_FROM_DATABASE=PWDOG2 [PCI-Watchdog 2] + +pci:v00008008d00000015* + ID_MODEL_FROM_DATABASE=Clock77/PCI & Clock77/PCIe (DCF-77 receiver) + +pci:v0000807D* + ID_VENDOR_FROM_DATABASE=Asustek Computer, Inc. + +pci:v00008086* + ID_VENDOR_FROM_DATABASE=Intel Corporation + +pci:v00008086d00000007* + ID_MODEL_FROM_DATABASE=82379AB + +pci:v00008086d00000008* + ID_MODEL_FROM_DATABASE=Extended Express System Support Controller + +pci:v00008086d00000039* + ID_MODEL_FROM_DATABASE=21145 Fast Ethernet + +pci:v00008086d00000040* + ID_MODEL_FROM_DATABASE=Core Processor DRAM Controller + +pci:v00008086d00000041* + ID_MODEL_FROM_DATABASE=Core Processor PCI Express x16 Root Port + +pci:v00008086d00000042* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Graphics Controller + +pci:v00008086d00000043* + ID_MODEL_FROM_DATABASE=Core Processor Secondary PCI Express Root Port + +pci:v00008086d00000044* + ID_MODEL_FROM_DATABASE=Core Processor DRAM Controller + +pci:v00008086d00000044sv00001025sd00000347* + ID_MODEL_FROM_DATABASE=Aspire 7740G + +pci:v00008086d00000044sv00001025sd00000487* + ID_MODEL_FROM_DATABASE=TravelMate 5742 + +pci:v00008086d00000044sv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d00000045* + ID_MODEL_FROM_DATABASE=Core Processor PCI Express x16 Root Port + +pci:v00008086d00000046* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Graphics Controller + +pci:v00008086d00000046sv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d00000047* + ID_MODEL_FROM_DATABASE=Core Processor Secondary PCI Express Root Port + +pci:v00008086d00000048* + ID_MODEL_FROM_DATABASE=Core Processor DRAM Controller + +pci:v00008086d00000049* + ID_MODEL_FROM_DATABASE=Core Processor PCI Express x16 Root Port + +pci:v00008086d0000004A* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Graphics Controller + +pci:v00008086d0000004B* + ID_MODEL_FROM_DATABASE=Core Processor Secondary PCI Express Root Port + +pci:v00008086d00000050* + ID_MODEL_FROM_DATABASE=Core Processor Thermal Management Controller + +pci:v00008086d00000069* + ID_MODEL_FROM_DATABASE=Core Processor DRAM Controller + +pci:v00008086d00000082* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 [Taylor Peak] + +pci:v00008086d00000082sv00008086sd00001301* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 AGN + +pci:v00008086d00000082sv00008086sd00001306* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 ABG + +pci:v00008086d00000082sv00008086sd00001307* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 BG + +pci:v00008086d00000082sv00008086sd00001321* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 AGN + +pci:v00008086d00000082sv00008086sd00001326* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 ABG + +pci:v00008086d00000083* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] + +pci:v00008086d00000083sv00008086sd00001205* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BGN + +pci:v00008086d00000083sv00008086sd00001206* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BG + +pci:v00008086d00000083sv00008086sd00001225* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BGN + +pci:v00008086d00000083sv00008086sd00001226* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BG + +pci:v00008086d00000083sv00008086sd00001305* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BGN + +pci:v00008086d00000083sv00008086sd00001306* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BG + +pci:v00008086d00000083sv00008086sd00001325* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BGN + +pci:v00008086d00000083sv00008086sd00001326* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BG + +pci:v00008086d00000084* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] + +pci:v00008086d00000084sv00008086sd00001215* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BGN + +pci:v00008086d00000084sv00008086sd00001216* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BG + +pci:v00008086d00000084sv00008086sd00001315* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BGN + +pci:v00008086d00000084sv00008086sd00001316* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1000 BG + +pci:v00008086d00000085* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 [Taylor Peak] + +pci:v00008086d00000085sv00008086sd00001311* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 AGN + +pci:v00008086d00000085sv00008086sd00001316* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6205 ABG + +pci:v00008086d00000087* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] + +pci:v00008086d00000087sv00008086sd00001301* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 AGN + +pci:v00008086d00000087sv00008086sd00001306* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 ABG + +pci:v00008086d00000087sv00008086sd00001321* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 AGN + +pci:v00008086d00000087sv00008086sd00001326* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 ABG + +pci:v00008086d00000089* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] + +pci:v00008086d00000089sv00008086sd00001311* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 AGN + +pci:v00008086d00000089sv00008086sd00001316* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 ABG + +pci:v00008086d0000008A* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 [Rainbow Peak] + +pci:v00008086d0000008Asv00008086sd00005305* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 BGN + +pci:v00008086d0000008Asv00008086sd00005307* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 BG + +pci:v00008086d0000008Asv00008086sd00005325* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 BGN + +pci:v00008086d0000008Asv00008086sd00005327* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 BG + +pci:v00008086d0000008B* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 [Rainbow Peak] + +pci:v00008086d0000008Bsv00008086sd00005315* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 BGN + +pci:v00008086d0000008Bsv00008086sd00005317* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 1030 BG + +pci:v00008086d00000090* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak] + +pci:v00008086d00000090sv00008086sd00005211* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 AGN + +pci:v00008086d00000090sv00008086sd00005215* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 BGN + +pci:v00008086d00000090sv00008086sd00005216* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 ABG + +pci:v00008086d00000091* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak] + +pci:v00008086d00000091sv00008086sd00005201* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 AGN + +pci:v00008086d00000091sv00008086sd00005205* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 BGN + +pci:v00008086d00000091sv00008086sd00005206* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 ABG + +pci:v00008086d00000091sv00008086sd00005207* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 BG + +pci:v00008086d00000091sv00008086sd00005221* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 AGN + +pci:v00008086d00000091sv00008086sd00005225* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 BGN + +pci:v00008086d00000091sv00008086sd00005226* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6230 ABG + +pci:v00008086d00000100* + ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller + +pci:v00008086d00000100sv00001028sd000004AA* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v00008086d00000100sv00001043sd0000844D* + ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard + +pci:v00008086d00000101* + ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port + +pci:v00008086d00000101sv00001028sd000004B2* + ID_MODEL_FROM_DATABASE=Vostro 3350 + +pci:v00008086d00000101sv0000106Bsd000000DC* + ID_MODEL_FROM_DATABASE=MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00000102* + ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller + +pci:v00008086d00000102sv00001028sd000004AA* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v00008086d00000104* + ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller + +pci:v00008086d00000104sv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00008086d00000104sv00001028sd000004B2* + ID_MODEL_FROM_DATABASE=Vostro 3350 + +pci:v00008086d00000104sv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v00008086d00000104sv0000106Bsd000000DC* + ID_MODEL_FROM_DATABASE=MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00000105* + ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port + +pci:v00008086d00000105sv0000106Bsd000000DC* + ID_MODEL_FROM_DATABASE=MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00000106* + ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller + +pci:v00008086d00000108* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 Processor Family DRAM Controller + +pci:v00008086d00000109* + ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port + +pci:v00008086d0000010A* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 Processor Family Integrated Graphics Controller + +pci:v00008086d0000010B* + ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family Integrated Graphics Controller + +pci:v00008086d0000010C* + ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family DRAM Controller + +pci:v00008086d0000010D* + ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port + +pci:v00008086d0000010E* + ID_MODEL_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family Integrated Graphics Controller + +pci:v00008086d00000112* + ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller + +pci:v00008086d00000116* + ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller + +pci:v00008086d00000116sv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v00008086d00000122* + ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller + +pci:v00008086d00000126* + ID_MODEL_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller + +pci:v00008086d00000126sv00001028sd000004CC* + ID_MODEL_FROM_DATABASE=Vostro 3350 + +pci:v00008086d00000150* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller + +pci:v00008086d00000150sv00001043sd000084CA* + ID_MODEL_FROM_DATABASE=P8H77-I Motherboard + +pci:v00008086d00000151* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port + +pci:v00008086d00000151sv00001043sd00001477* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00008086d00000151sv00001043sd000084CA* + ID_MODEL_FROM_DATABASE=P8H77-I Motherboard + +pci:v00008086d00000152* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller + +pci:v00008086d00000152sv00001043sd000084CA* + ID_MODEL_FROM_DATABASE=P8H77-I Motherboard + +pci:v00008086d00000153* + ID_MODEL_FROM_DATABASE=3rd Gen Core Processor Thermal Subsystem + +pci:v00008086d00000153sv00001043sd00001517* + ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A + +pci:v00008086d00000154* + ID_MODEL_FROM_DATABASE=3rd Gen Core processor DRAM Controller + +pci:v00008086d00000154sv00001043sd00001477* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00008086d00000154sv00001043sd00001517* + ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A + +pci:v00008086d00000155* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port + +pci:v00008086d00000156* + ID_MODEL_FROM_DATABASE=3rd Gen Core processor Graphics Controller + +pci:v00008086d00000158* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/Ivy Bridge DRAM Controller + +pci:v00008086d00000159* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port + +pci:v00008086d0000015A* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/Ivy Bridge Graphics Controller + +pci:v00008086d0000015C* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller + +pci:v00008086d0000015D* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port + +pci:v00008086d0000015E* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller + +pci:v00008086d00000162* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller + +pci:v00008086d00000166* + ID_MODEL_FROM_DATABASE=3rd Gen Core processor Graphics Controller + +pci:v00008086d00000166sv00001043sd00001517* + ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A + +pci:v00008086d00000166sv00001043sd00002103* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00008086d0000016A* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller + +pci:v00008086d00000172* + ID_MODEL_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller + +pci:v00008086d00000176* + ID_MODEL_FROM_DATABASE=3rd Gen Core processor Graphics Controller + +pci:v00008086d00000309* + ID_MODEL_FROM_DATABASE=80303 I/O Processor PCI-to-PCI Bridge + +pci:v00008086d0000030D* + ID_MODEL_FROM_DATABASE=80312 I/O Companion Chip PCI-to-PCI Bridge + +pci:v00008086d00000326* + ID_MODEL_FROM_DATABASE=6700/6702PXH I/OxAPIC Interrupt Controller A + +pci:v00008086d00000326sv0000103Csd00003208* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G2 + +pci:v00008086d00000326sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d00000327* + ID_MODEL_FROM_DATABASE=6700PXH I/OxAPIC Interrupt Controller B + +pci:v00008086d00000327sv0000103Csd00003208* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G2 + +pci:v00008086d00000327sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d00000329* + ID_MODEL_FROM_DATABASE=6700PXH PCI Express-to-PCI Bridge A + +pci:v00008086d0000032A* + ID_MODEL_FROM_DATABASE=6700PXH PCI Express-to-PCI Bridge B + +pci:v00008086d0000032C* + ID_MODEL_FROM_DATABASE=6702PXH PCI Express-to-PCI Bridge A + +pci:v00008086d00000330* + ID_MODEL_FROM_DATABASE=80332 [Dobson] I/O processor (A-Segment Bridge) + +pci:v00008086d00000331* + ID_MODEL_FROM_DATABASE=80332 [Dobson] I/O processor (A-Segment IOAPIC) + +pci:v00008086d00000332* + ID_MODEL_FROM_DATABASE=80332 [Dobson] I/O processor (B-Segment Bridge) + +pci:v00008086d00000333* + ID_MODEL_FROM_DATABASE=80332 [Dobson] I/O processor (B-Segment IOAPIC) + +pci:v00008086d00000334* + ID_MODEL_FROM_DATABASE=80332 [Dobson] I/O processor (ATU) + +pci:v00008086d00000335* + ID_MODEL_FROM_DATABASE=80331 [Lindsay] I/O processor (PCI-X Bridge) + +pci:v00008086d00000336* + ID_MODEL_FROM_DATABASE=80331 [Lindsay] I/O processor (ATU) + +pci:v00008086d00000340* + ID_MODEL_FROM_DATABASE=41210 [Lanai] Serial to Parallel PCI Bridge (A-Segment Bridge) + +pci:v00008086d00000341* + ID_MODEL_FROM_DATABASE=41210 [Lanai] Serial to Parallel PCI Bridge (B-Segment Bridge) + +pci:v00008086d00000370* + ID_MODEL_FROM_DATABASE=80333 Segment-A PCI Express-to-PCI Express Bridge + +pci:v00008086d00000371* + ID_MODEL_FROM_DATABASE=80333 A-Bus IOAPIC + +pci:v00008086d00000372* + ID_MODEL_FROM_DATABASE=80333 Segment-B PCI Express-to-PCI Express Bridge + +pci:v00008086d00000373* + ID_MODEL_FROM_DATABASE=80333 B-Bus IOAPIC + +pci:v00008086d00000374* + ID_MODEL_FROM_DATABASE=80333 Address Translation Unit + +pci:v00008086d00000402* + ID_MODEL_FROM_DATABASE=Haswell Integrated Graphics Controller + +pci:v00008086d00000406* + ID_MODEL_FROM_DATABASE=Haswell Integrated Graphics Controller + +pci:v00008086d0000040A* + ID_MODEL_FROM_DATABASE=Haswell Integrated Graphics Controller + +pci:v00008086d00000412* + ID_MODEL_FROM_DATABASE=Haswell Integrated Graphics Controller + +pci:v00008086d00000416* + ID_MODEL_FROM_DATABASE=Haswell Integrated Graphics Controller + +pci:v00008086d0000041A* + ID_MODEL_FROM_DATABASE=Haswell Integrated Graphics Controller + +pci:v00008086d00000436* + ID_MODEL_FROM_DATABASE=DH8900CC Null Device + +pci:v00008086d00000438* + ID_MODEL_FROM_DATABASE=DH8900CC Series Gigabit Network Connection + +pci:v00008086d0000043A* + ID_MODEL_FROM_DATABASE=DH8900CC Series Gigabit Fiber Network Connection + +pci:v00008086d0000043C* + ID_MODEL_FROM_DATABASE=DH8900CC Series Gigabit Backplane Network Connection + +pci:v00008086d00000440* + ID_MODEL_FROM_DATABASE=DH8900CC Series Gigabit SFP Network Connection + +pci:v00008086d00000482* + ID_MODEL_FROM_DATABASE=82375EB/SB PCI to EISA Bridge + +pci:v00008086d00000483* + ID_MODEL_FROM_DATABASE=82424TX/ZX [Saturn] CPU to PCI bridge + +pci:v00008086d00000484* + ID_MODEL_FROM_DATABASE=82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge + +pci:v00008086d00000486* + ID_MODEL_FROM_DATABASE=82425EX/ZX [Aries] PCIset with ISA bridge + +pci:v00008086d000004A3* + ID_MODEL_FROM_DATABASE=82434LX/NX [Mercury/Neptune] Processor to PCI bridge + +pci:v00008086d000004D0* + ID_MODEL_FROM_DATABASE=82437FX [Triton FX] + +pci:v00008086d00000500* + ID_MODEL_FROM_DATABASE=E8870 Processor bus control + +pci:v00008086d00000501* + ID_MODEL_FROM_DATABASE=E8870 Memory controller + +pci:v00008086d00000502* + ID_MODEL_FROM_DATABASE=E8870 Scalability Port 0 + +pci:v00008086d00000503* + ID_MODEL_FROM_DATABASE=E8870 Scalability Port 1 + +pci:v00008086d00000510* + ID_MODEL_FROM_DATABASE=E8870IO Hub Interface Port 0 registers (8-bit compatibility port) + +pci:v00008086d00000511* + ID_MODEL_FROM_DATABASE=E8870IO Hub Interface Port 1 registers + +pci:v00008086d00000512* + ID_MODEL_FROM_DATABASE=E8870IO Hub Interface Port 2 registers + +pci:v00008086d00000513* + ID_MODEL_FROM_DATABASE=E8870IO Hub Interface Port 3 registers + +pci:v00008086d00000514* + ID_MODEL_FROM_DATABASE=E8870IO Hub Interface Port 4 registers + +pci:v00008086d00000515* + ID_MODEL_FROM_DATABASE=E8870IO General SIOH registers + +pci:v00008086d00000516* + ID_MODEL_FROM_DATABASE=E8870IO RAS registers + +pci:v00008086d00000530* + ID_MODEL_FROM_DATABASE=E8870SP Scalability Port 0 registers + +pci:v00008086d00000531* + ID_MODEL_FROM_DATABASE=E8870SP Scalability Port 1 registers + +pci:v00008086d00000532* + ID_MODEL_FROM_DATABASE=E8870SP Scalability Port 2 registers + +pci:v00008086d00000533* + ID_MODEL_FROM_DATABASE=E8870SP Scalability Port 3 registers + +pci:v00008086d00000534* + ID_MODEL_FROM_DATABASE=E8870SP Scalability Port 4 registers + +pci:v00008086d00000535* + ID_MODEL_FROM_DATABASE=E8870SP Scalability Port 5 registers + +pci:v00008086d00000536* + ID_MODEL_FROM_DATABASE=E8870SP Interleave registers 0 and 1 + +pci:v00008086d00000537* + ID_MODEL_FROM_DATABASE=E8870SP Interleave registers 2 and 3 + +pci:v00008086d00000600* + ID_MODEL_FROM_DATABASE=RAID Controller + +pci:v00008086d00000600sv00008086sd00000136* + ID_MODEL_FROM_DATABASE=SRCU31L + +pci:v00008086d00000600sv00008086sd000001AF* + ID_MODEL_FROM_DATABASE=SRCZCR + +pci:v00008086d00000600sv00008086sd000001C1* + ID_MODEL_FROM_DATABASE=ICP Vortex GDT8546RZ + +pci:v00008086d00000600sv00008086sd000001F7* + ID_MODEL_FROM_DATABASE=SCRU32 + +pci:v00008086d0000061F* + ID_MODEL_FROM_DATABASE=80303 I/O Processor + +pci:v00008086d00000700* + ID_MODEL_FROM_DATABASE=CE Media Processor A/V Bridge + +pci:v00008086d00000701* + ID_MODEL_FROM_DATABASE=CE Media Processor NAND Flash Controller + +pci:v00008086d00000703* + ID_MODEL_FROM_DATABASE=CE Media Processor Media Control Unit 1 + +pci:v00008086d00000704* + ID_MODEL_FROM_DATABASE=CE Media Processor Video Capture Interface + +pci:v00008086d00000707* + ID_MODEL_FROM_DATABASE=CE Media Processor SPI Slave + +pci:v00008086d00000708* + ID_MODEL_FROM_DATABASE=CE Media Processor 4100 + +pci:v00008086d00000800* + ID_MODEL_FROM_DATABASE=Moorestown SPI Ctrl 0 + +pci:v00008086d00000801* + ID_MODEL_FROM_DATABASE=Moorestown SPI Ctrl 1 + +pci:v00008086d00000802* + ID_MODEL_FROM_DATABASE=Moorestown I2C 0 + +pci:v00008086d00000803* + ID_MODEL_FROM_DATABASE=Moorestown I2C 1 + +pci:v00008086d00000804* + ID_MODEL_FROM_DATABASE=Moorestown I2C 2 + +pci:v00008086d00000805* + ID_MODEL_FROM_DATABASE=Moorestown Keyboard Ctrl + +pci:v00008086d00000806* + ID_MODEL_FROM_DATABASE=Moorestown USB Ctrl + +pci:v00008086d00000807* + ID_MODEL_FROM_DATABASE=Moorestown SD Host Ctrl 0 + +pci:v00008086d00000808* + ID_MODEL_FROM_DATABASE=Moorestown SD Host Ctrl 1 + +pci:v00008086d00000809* + ID_MODEL_FROM_DATABASE=Moorestown NAND Ctrl + +pci:v00008086d0000080A* + ID_MODEL_FROM_DATABASE=Moorestown Audio Ctrl + +pci:v00008086d0000080B* + ID_MODEL_FROM_DATABASE=Moorestown ISP + +pci:v00008086d0000080C* + ID_MODEL_FROM_DATABASE=Moorestown Security Controller + +pci:v00008086d0000080D* + ID_MODEL_FROM_DATABASE=Moorestown External Displays + +pci:v00008086d0000080E* + ID_MODEL_FROM_DATABASE=Moorestown SCU IPC + +pci:v00008086d0000080F* + ID_MODEL_FROM_DATABASE=Moorestown GPIO Controller + +pci:v00008086d00000810* + ID_MODEL_FROM_DATABASE=Moorestown Power Management Unit + +pci:v00008086d00000811* + ID_MODEL_FROM_DATABASE=Moorestown OTG Ctrl + +pci:v00008086d00000812* + ID_MODEL_FROM_DATABASE=Moorestown SPI Ctrl 2 + +pci:v00008086d00000813* + ID_MODEL_FROM_DATABASE=Moorestown SC DMA + +pci:v00008086d00000814* + ID_MODEL_FROM_DATABASE=Moorestown LPE DMA + +pci:v00008086d00000815* + ID_MODEL_FROM_DATABASE=Moorestown SSP0 + +pci:v00008086d00000885* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 + +pci:v00008086d00000885sv00008086sd00001305* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BGN + +pci:v00008086d00000885sv00008086sd00001307* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BG + +pci:v00008086d00000885sv00008086sd00001325* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BGN + +pci:v00008086d00000885sv00008086sd00001327* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BG + +pci:v00008086d00000886* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 + +pci:v00008086d00000886sv00008086sd00001315* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BGN + +pci:v00008086d00000886sv00008086sd00001317* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BG + +pci:v00008086d00000887* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2230 + +pci:v00008086d00000887sv00008086sd00004062* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2230 BGN + +pci:v00008086d00000887sv00008086sd00004462* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2230 BGN + +pci:v00008086d00000888* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2230 + +pci:v00008086d00000888sv00008086sd00004262* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2230 BGN + +pci:v00008086d0000088E* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6235 + +pci:v00008086d0000088Esv00008086sd00004060* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6235 AGN + +pci:v00008086d0000088Esv00008086sd00004460* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6235 AGN + +pci:v00008086d0000088F* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6235 + +pci:v00008086d0000088Fsv00008086sd00004260* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6235 AGN + +pci:v00008086d00000890* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200 + +pci:v00008086d00000890sv00008086sd00004022* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200 BGN + +pci:v00008086d00000890sv00008086sd00004422* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200 BGN + +pci:v00008086d00000890sv00008086sd00004822* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200 BGN + +pci:v00008086d00000891* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200 + +pci:v00008086d00000891sv00008086sd00004222* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 2200 BGN + +pci:v00008086d00000892* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 135 + +pci:v00008086d00000892sv00008086sd00000062* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 135 BGN + +pci:v00008086d00000892sv00008086sd00000462* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 135 BGN + +pci:v00008086d00000893* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 135 + +pci:v00008086d00000893sv00008086sd00000262* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 135 BGN + +pci:v00008086d00000894* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105 + +pci:v00008086d00000894sv00008086sd00000022* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105 BGN + +pci:v00008086d00000894sv00008086sd00000422* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105 BGN + +pci:v00008086d00000894sv00008086sd00000822* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105 BGN + +pci:v00008086d00000895* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105 + +pci:v00008086d00000895sv00008086sd00000222* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 105 BGN + +pci:v00008086d00000896* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 + +pci:v00008086d00000896sv00008086sd00005005* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 BGN + +pci:v00008086d00000896sv00008086sd00005007* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 BG + +pci:v00008086d00000896sv00008086sd00005025* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 BGN + +pci:v00008086d00000896sv00008086sd00005027* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 BG + +pci:v00008086d00000897* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 + +pci:v00008086d00000897sv00008086sd00005015* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 BGN + +pci:v00008086d00000897sv00008086sd00005017* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 130 BG + +pci:v00008086d000008AE* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 + +pci:v00008086d000008AEsv00008086sd00001005* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 BGN + +pci:v00008086d000008AEsv00008086sd00001007* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 BG + +pci:v00008086d000008AEsv00008086sd00001025* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 BGN + +pci:v00008086d000008AEsv00008086sd00001027* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 BG + +pci:v00008086d000008AF* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 + +pci:v00008086d000008AFsv00008086sd00001015* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 BGN + +pci:v00008086d000008AFsv00008086sd00001017* + ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 BG + +pci:v00008086d00000960* + ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor/Bridge + +pci:v00008086d00000962* + ID_MODEL_FROM_DATABASE=80960RM (i960RM) Bridge + +pci:v00008086d00000964* + ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor/Bridge + +pci:v00008086d00000A04* + ID_MODEL_FROM_DATABASE=Haswell-ULT DRAM Controller + +pci:v00008086d00000A06* + ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller + +pci:v00008086d00000A16* + ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller + +pci:v00008086d00000A22* + ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller + +pci:v00008086d00000A26* + ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller + +pci:v00008086d00000A2A* + ID_MODEL_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller + +pci:v00008086d00000BE0* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BE1* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BE1sv0000105Bsd00000D7C* + ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard + +pci:v00008086d00000BE2* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BE3* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BE4* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BE5* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BE6* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BE7* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BE8* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BE9* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BEA* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BEB* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BEC* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BED* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BEE* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BEF* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller + +pci:v00008086d00000BF0* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller + +pci:v00008086d00000BF1* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller + +pci:v00008086d00000BF2* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller + +pci:v00008086d00000BF3* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller + +pci:v00008086d00000BF4* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller + +pci:v00008086d00000BF5* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller + +pci:v00008086d00000BF5sv0000105Bsd00000D7C* + ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard + +pci:v00008086d00000BF6* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller + +pci:v00008086d00000BF7* + ID_MODEL_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller + +pci:v00008086d00000C00* + ID_MODEL_FROM_DATABASE=Haswell DRAM Controller + +pci:v00008086d00000C01* + ID_MODEL_FROM_DATABASE=Haswell PCI Express x16 Controller + +pci:v00008086d00000C04* + ID_MODEL_FROM_DATABASE=Haswell DRAM Controller + +pci:v00008086d00000C05* + ID_MODEL_FROM_DATABASE=Haswell PCI Express x8 Controller + +pci:v00008086d00000C08* + ID_MODEL_FROM_DATABASE=Haswell DRAM Controller + +pci:v00008086d00000C09* + ID_MODEL_FROM_DATABASE=Haswell PCI Express x4 Controller + +pci:v00008086d00000C0C* + ID_MODEL_FROM_DATABASE=Haswell HD Audio Controller + +pci:v00008086d00000C46* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 1 + +pci:v00008086d00000C47* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 2 + +pci:v00008086d00000C48* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 3 + +pci:v00008086d00000C49* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 4 + +pci:v00008086d00000C4E* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 NTB Primary + +pci:v00008086d00000C54* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C55* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 DFX 1 + +pci:v00008086d00000C56* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 DFX 2 + +pci:v00008086d00000C59* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 SMBus 2.0 Controller 0 + +pci:v00008086d00000C5A* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 SMBus 2.0 Controller 1 + +pci:v00008086d00000C5B* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 SMBus Controller 2 + +pci:v00008086d00000C5C* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 SMBus Controller 3 + +pci:v00008086d00000C5D* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 SMBus Controller 4 + +pci:v00008086d00000C5E* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 SMBus Controller 5 + +pci:v00008086d00000C5F* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 UART + +pci:v00008086d00000C60* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Integrated Legacy Bus + +pci:v00008086d00000C70* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C71* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C72* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C73* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C74* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C75* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C76* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C77* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C78* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C79* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C7A* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C7B* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C7C* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C7D* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C7E* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000C7F* + ID_MODEL_FROM_DATABASE=Atom Processor S1200 Internal + +pci:v00008086d00000D00* + ID_MODEL_FROM_DATABASE=Crystal Well DRAM Controller + +pci:v00008086d00000D01* + ID_MODEL_FROM_DATABASE=Crystal Well PCI Express x16 Controller + +pci:v00008086d00000D04* + ID_MODEL_FROM_DATABASE=Crystal Well DRAM Controller + +pci:v00008086d00000D05* + ID_MODEL_FROM_DATABASE=Crystal Well PCI Express x8 Controller + +pci:v00008086d00000D09* + ID_MODEL_FROM_DATABASE=Crystal Well PCI Express x4 Controller + +pci:v00008086d00000D0C* + ID_MODEL_FROM_DATABASE=Crystal Well HD Audio Controller + +pci:v00008086d00000D16* + ID_MODEL_FROM_DATABASE=Crystal Well Integrated Graphics Controller + +pci:v00008086d00000D26* + ID_MODEL_FROM_DATABASE=Crystal Well Integrated Graphics Controller + +pci:v00008086d00000D36* + ID_MODEL_FROM_DATABASE=Crystal Well Integrated Graphics Controller + +pci:v00008086d00000E00* + ID_MODEL_FROM_DATABASE=Ivytown DMI2 + +pci:v00008086d00000E01* + ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port in DMI2 Mode + +pci:v00008086d00000E02* + ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 1a + +pci:v00008086d00000E03* + ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 1b + +pci:v00008086d00000E04* + ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 2a + +pci:v00008086d00000E05* + ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 2b + +pci:v00008086d00000E06* + ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 2c + +pci:v00008086d00000E07* + ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 2d + +pci:v00008086d00000E08* + ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 3a + +pci:v00008086d00000E09* + ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 3b + +pci:v00008086d00000E0A* + ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 3c + +pci:v00008086d00000E0B* + ID_MODEL_FROM_DATABASE=Ivytown PCI Express Root Port 3d + +pci:v00008086d00000E1C* + ID_MODEL_FROM_DATABASE=Ivytown Debug and Error Injection Related Registers + +pci:v00008086d00000E1D* + ID_MODEL_FROM_DATABASE=Ivytown R2PCIe + +pci:v00008086d00000E1E* + ID_MODEL_FROM_DATABASE=Ivytown Semaphore and Scratchpad Configuration Registers + +pci:v00008086d00000E1F* + ID_MODEL_FROM_DATABASE=Ivytown Semaphore and Scratchpad Configuration Registers + +pci:v00008086d00000E20* + ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 0 + +pci:v00008086d00000E21* + ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 1 + +pci:v00008086d00000E22* + ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 2 + +pci:v00008086d00000E23* + ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 3 + +pci:v00008086d00000E24* + ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 4 + +pci:v00008086d00000E25* + ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 5 + +pci:v00008086d00000E26* + ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 6 + +pci:v00008086d00000E27* + ID_MODEL_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 7 + +pci:v00008086d00000E28* + ID_MODEL_FROM_DATABASE=Ivytown VTd/Memory Map/Misc + +pci:v00008086d00000E29* + ID_MODEL_FROM_DATABASE=Ivytown Memory Hotplug + +pci:v00008086d00000E2A* + ID_MODEL_FROM_DATABASE=Ivytown IIO RAS + +pci:v00008086d00000E2C* + ID_MODEL_FROM_DATABASE=Ivytown IOAPIC + +pci:v00008086d00000E2E* + ID_MODEL_FROM_DATABASE=Ivytown CBDMA + +pci:v00008086d00000E2F* + ID_MODEL_FROM_DATABASE=Ivytown CBDMA + +pci:v00008086d00000E30* + ID_MODEL_FROM_DATABASE=Ivytown Home Agent 0 + +pci:v00008086d00000E32* + ID_MODEL_FROM_DATABASE=Ivytown QPI Link 0 + +pci:v00008086d00000E33* + ID_MODEL_FROM_DATABASE=Ivytown QPI Link 1 + +pci:v00008086d00000E34* + ID_MODEL_FROM_DATABASE=Ivytown PCI Express Ring Performance Monitoring + +pci:v00008086d00000E36* + ID_MODEL_FROM_DATABASE=Ivytown QPI Ring Performance Ring Monitoring + +pci:v00008086d00000E37* + ID_MODEL_FROM_DATABASE=Ivytown QPI Ring Performance Ring Monitoring + +pci:v00008086d00000E38* + ID_MODEL_FROM_DATABASE=Ivytown Home Agent 1 + +pci:v00008086d00000E3A* + ID_MODEL_FROM_DATABASE=Ivytown QPI Link 2 + +pci:v00008086d00000E3E* + ID_MODEL_FROM_DATABASE=Ivytown QPI Ring Performance Ring Monitoring + +pci:v00008086d00000E3F* + ID_MODEL_FROM_DATABASE=Ivytown QPI Ring Performance Ring Monitoring + +pci:v00008086d00000E40* + ID_MODEL_FROM_DATABASE=Ivytown QPI Link 2 + +pci:v00008086d00000E41* + ID_MODEL_FROM_DATABASE=Ivytown QPI Ring Registers + +pci:v00008086d00000E43* + ID_MODEL_FROM_DATABASE=Ivytown QPI Link Reut 2 + +pci:v00008086d00000E44* + ID_MODEL_FROM_DATABASE=Ivytown QPI Link Reut 2 + +pci:v00008086d00000E60* + ID_MODEL_FROM_DATABASE=Ivytown Home Agent 1 + +pci:v00008086d00000E68* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Target Address/Thermal Registers + +pci:v00008086d00000E6A* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers + +pci:v00008086d00000E6B* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers + +pci:v00008086d00000E6C* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers + +pci:v00008086d00000E6D* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers + +pci:v00008086d00000E71* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 RAS Registers + +pci:v00008086d00000E79* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 RAS Registers + +pci:v00008086d00000E80* + ID_MODEL_FROM_DATABASE=Ivytown QPI Link 0 + +pci:v00008086d00000E81* + ID_MODEL_FROM_DATABASE=Ivytown QPI Ring Registers + +pci:v00008086d00000E83* + ID_MODEL_FROM_DATABASE=Ivytown QPI Link Reut 0 + +pci:v00008086d00000E84* + ID_MODEL_FROM_DATABASE=Ivytown QPI Link Reut 0 + +pci:v00008086d00000E90* + ID_MODEL_FROM_DATABASE=Ivytown QPI Link 1 + +pci:v00008086d00000E93* + ID_MODEL_FROM_DATABASE=Ivytown QPI Link 1 + +pci:v00008086d00000E94* + ID_MODEL_FROM_DATABASE=Ivytown QPI Link Reut 1 + +pci:v00008086d00000EA0* + ID_MODEL_FROM_DATABASE=Ivytown Home Agent 0 + +pci:v00008086d00000EA8* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Target Address/Thermal Registers + +pci:v00008086d00000EAA* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers + +pci:v00008086d00000EAB* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers + +pci:v00008086d00000EAC* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers + +pci:v00008086d00000EAD* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers + +pci:v00008086d00000EB0* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 0 + +pci:v00008086d00000EB1* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 1 + +pci:v00008086d00000EB2* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 0 + +pci:v00008086d00000EB3* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 1 + +pci:v00008086d00000EB4* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 2 + +pci:v00008086d00000EB5* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 3 + +pci:v00008086d00000EB6* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2 + +pci:v00008086d00000EB7* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3 + +pci:v00008086d00000EC0* + ID_MODEL_FROM_DATABASE=Ivytown Power Control Unit 0 + +pci:v00008086d00000EC1* + ID_MODEL_FROM_DATABASE=Ivytown Power Control Unit 1 + +pci:v00008086d00000EC2* + ID_MODEL_FROM_DATABASE=Ivytown Power Control Unit 2 + +pci:v00008086d00000EC3* + ID_MODEL_FROM_DATABASE=Ivytown Power Control Unit 3 + +pci:v00008086d00000EC4* + ID_MODEL_FROM_DATABASE=Ivytown Power Control Unit 4 + +pci:v00008086d00000EC8* + ID_MODEL_FROM_DATABASE=Ivytown System Address Decoder + +pci:v00008086d00000EC9* + ID_MODEL_FROM_DATABASE=Ivytown Broadcast Registers + +pci:v00008086d00000ECA* + ID_MODEL_FROM_DATABASE=Ivytown Broadcast Registers + +pci:v00008086d00000ED8* + ID_MODEL_FROM_DATABASE=Ivytown DDRIO + +pci:v00008086d00000ED9* + ID_MODEL_FROM_DATABASE=Ivytown DDRIO + +pci:v00008086d00000EDC* + ID_MODEL_FROM_DATABASE=Ivytown DDRIO + +pci:v00008086d00000EDD* + ID_MODEL_FROM_DATABASE=Ivytown DDRIO + +pci:v00008086d00000EDE* + ID_MODEL_FROM_DATABASE=Ivytown DDRIO + +pci:v00008086d00000EDF* + ID_MODEL_FROM_DATABASE=Ivytown DDRIO + +pci:v00008086d00000EE0* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EE1* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EE2* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EE3* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EE4* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EE5* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EE6* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EE7* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EE8* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EE9* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EEA* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EEB* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EEC* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EED* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EEE* + ID_MODEL_FROM_DATABASE=Ivytown Unicast Registers + +pci:v00008086d00000EF0* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 0 + +pci:v00008086d00000EF1* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 1 + +pci:v00008086d00000EF2* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 0 + +pci:v00008086d00000EF3* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 1 + +pci:v00008086d00000EF4* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 2 + +pci:v00008086d00000EF5* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 3 + +pci:v00008086d00000EF6* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2 + +pci:v00008086d00000EF7* + ID_MODEL_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 3 + +pci:v00008086d00000EF8* + ID_MODEL_FROM_DATABASE=Ivytown DDRIO + +pci:v00008086d00000EF9* + ID_MODEL_FROM_DATABASE=Ivytown DDRIO + +pci:v00008086d00000EFA* + ID_MODEL_FROM_DATABASE=Ivytown DDRIO + +pci:v00008086d00000EFB* + ID_MODEL_FROM_DATABASE=Ivytown DDRIO + +pci:v00008086d00000EFC* + ID_MODEL_FROM_DATABASE=Ivytown DDRIO + +pci:v00008086d00000EFD* + ID_MODEL_FROM_DATABASE=Ivytown DDRIO + +pci:v00008086d00000F00* + ID_MODEL_FROM_DATABASE=ValleyView SSA-CUnit + +pci:v00008086d00000F01* + ID_MODEL_FROM_DATABASE=ValleyView SSA-CUnit + +pci:v00008086d00000F02* + ID_MODEL_FROM_DATABASE=ValleyView SSA-CUnit + +pci:v00008086d00000F03* + ID_MODEL_FROM_DATABASE=ValleyView SSA-CUnit + +pci:v00008086d00000F04* + ID_MODEL_FROM_DATABASE=ValleyView High Definition Audio Controller + +pci:v00008086d00000F05* + ID_MODEL_FROM_DATABASE=ValleyView High Definition Audio Controller + +pci:v00008086d00000F06* + ID_MODEL_FROM_DATABASE=ValleyView LPIO1 DMA Controller + +pci:v00008086d00000F07* + ID_MODEL_FROM_DATABASE=ValleyView LPIO1 DMA Controller + +pci:v00008086d00000F08* + ID_MODEL_FROM_DATABASE=ValleyView LPIO1 PWM Controller + +pci:v00008086d00000F09* + ID_MODEL_FROM_DATABASE=ValleyView LPIO1 PWM Controller + +pci:v00008086d00000F0A* + ID_MODEL_FROM_DATABASE=ValleyView LPIO1 HSUART Controller #1 + +pci:v00008086d00000F0B* + ID_MODEL_FROM_DATABASE=ValleyView LPIO1 HSUART Controller #1 + +pci:v00008086d00000F0C* + ID_MODEL_FROM_DATABASE=ValleyView LPIO1 HSUART Controller #2 + +pci:v00008086d00000F0D* + ID_MODEL_FROM_DATABASE=ValleyView LPIO1 HSUART Controller #2 + +pci:v00008086d00000F0E* + ID_MODEL_FROM_DATABASE=ValleyView LPIO1 SPI Controller + +pci:v00008086d00000F0F* + ID_MODEL_FROM_DATABASE=ValleyView LPIO1 SPI Controller + +pci:v00008086d00000F10* + ID_MODEL_FROM_DATABASE=ValleyView LPIO1 Controller + +pci:v00008086d00000F11* + ID_MODEL_FROM_DATABASE=ValleyView LPIO1 Controller + +pci:v00008086d00000F12* + ID_MODEL_FROM_DATABASE=ValleyView SMBus Controller + +pci:v00008086d00000F13* + ID_MODEL_FROM_DATABASE=ValleyView SMBus Controller + +pci:v00008086d00000F14* + ID_MODEL_FROM_DATABASE=ValleyView SDIO Controller + +pci:v00008086d00000F15* + ID_MODEL_FROM_DATABASE=ValleyView SDIO Controller + +pci:v00008086d00000F16* + ID_MODEL_FROM_DATABASE=ValleyView SDIO Controller + +pci:v00008086d00000F17* + ID_MODEL_FROM_DATABASE=ValleyView SDIO Controller + +pci:v00008086d00000F18* + ID_MODEL_FROM_DATABASE=ValleyView SEC + +pci:v00008086d00000F19* + ID_MODEL_FROM_DATABASE=ValleyView SEC + +pci:v00008086d00000F1A* + ID_MODEL_FROM_DATABASE=ValleyView SEC + +pci:v00008086d00000F1B* + ID_MODEL_FROM_DATABASE=ValleyView SEC + +pci:v00008086d00000F1C* + ID_MODEL_FROM_DATABASE=ValleyView Power Control Unit + +pci:v00008086d00000F1D* + ID_MODEL_FROM_DATABASE=ValleyView Power Control Unit + +pci:v00008086d00000F1E* + ID_MODEL_FROM_DATABASE=ValleyView Power Control Unit + +pci:v00008086d00000F1F* + ID_MODEL_FROM_DATABASE=ValleyView Power Control Unit + +pci:v00008086d00000F20* + ID_MODEL_FROM_DATABASE=ValleyView 4-Port SATA Storage Controller + +pci:v00008086d00000F21* + ID_MODEL_FROM_DATABASE=ValleyView 4-Port SATA Storage Controller + +pci:v00008086d00000F22* + ID_MODEL_FROM_DATABASE=ValleyView 6-Port SATA AHCI Controller + +pci:v00008086d00000F23* + ID_MODEL_FROM_DATABASE=ValleyView 6-Port SATA AHCI Controller + +pci:v00008086d00000F24* + ID_MODEL_FROM_DATABASE=ValleyView SATA RAID Storage Controller + +pci:v00008086d00000F25* + ID_MODEL_FROM_DATABASE=ValleyView SATA RAID Storage Controller + +pci:v00008086d00000F26* + ID_MODEL_FROM_DATABASE=ValleyView 2-Port SATA Storage Controller + +pci:v00008086d00000F27* + ID_MODEL_FROM_DATABASE=ValleyView 2-Port SATA Storage Controller + +pci:v00008086d00000F28* + ID_MODEL_FROM_DATABASE=ValleyView LPE Audio Controller + +pci:v00008086d00000F29* + ID_MODEL_FROM_DATABASE=ValleyView LPE Audio Controller + +pci:v00008086d00000F2A* + ID_MODEL_FROM_DATABASE=ValleyView LPE Audio Controller + +pci:v00008086d00000F2B* + ID_MODEL_FROM_DATABASE=ValleyView LPE Audio Controller + +pci:v00008086d00000F2E* + ID_MODEL_FROM_DATABASE=ValleyView SATA RAID Storage Controller + +pci:v00008086d00000F2F* + ID_MODEL_FROM_DATABASE=ValleyView SATA RAID Storage Controller + +pci:v00008086d00000F30* + ID_MODEL_FROM_DATABASE=ValleyView Gen7 + +pci:v00008086d00000F31* + ID_MODEL_FROM_DATABASE=ValleyView Gen7 + +pci:v00008086d00000F32* + ID_MODEL_FROM_DATABASE=ValleyView Gen7 + +pci:v00008086d00000F33* + ID_MODEL_FROM_DATABASE=ValleyView Gen7 + +pci:v00008086d00000F34* + ID_MODEL_FROM_DATABASE=ValleyView USB Enhanced Host Controller + +pci:v00008086d00000F35* + ID_MODEL_FROM_DATABASE=ValleyView USB xHCI Host Controller + +pci:v00008086d00000F36* + ID_MODEL_FROM_DATABASE=ValleyView USB xHCI Host Controller + +pci:v00008086d00000F37* + ID_MODEL_FROM_DATABASE=ValleyView OTG + +pci:v00008086d00000F38* + ID_MODEL_FROM_DATABASE=ValleyView ISP + +pci:v00008086d00000F39* + ID_MODEL_FROM_DATABASE=ValleyView ISP + +pci:v00008086d00000F3A* + ID_MODEL_FROM_DATABASE=ValleyView ISP + +pci:v00008086d00000F3B* + ID_MODEL_FROM_DATABASE=ValleyView ISP + +pci:v00008086d00000F3C* + ID_MODEL_FROM_DATABASE=ValleyView ISP + +pci:v00008086d00000F3D* + ID_MODEL_FROM_DATABASE=ValleyView ISP + +pci:v00008086d00000F3E* + ID_MODEL_FROM_DATABASE=ValleyView ISP + +pci:v00008086d00000F3F* + ID_MODEL_FROM_DATABASE=ValleyView ISP + +pci:v00008086d00000F40* + ID_MODEL_FROM_DATABASE=ValleyView LPIO2 DMA Controller + +pci:v00008086d00000F41* + ID_MODEL_FROM_DATABASE=ValleyView LPIO2 I2C Controller #1 + +pci:v00008086d00000F42* + ID_MODEL_FROM_DATABASE=ValleyView LPIO2 I2C Controller #2 + +pci:v00008086d00000F43* + ID_MODEL_FROM_DATABASE=ValleyView LPIO2 I2C Controller #3 + +pci:v00008086d00000F44* + ID_MODEL_FROM_DATABASE=ValleyView LPIO2 I2C Controller #4 + +pci:v00008086d00000F45* + ID_MODEL_FROM_DATABASE=ValleyView LPIO2 I2C Controller #5 + +pci:v00008086d00000F46* + ID_MODEL_FROM_DATABASE=ValleyView LPIO2 I2C Controller #6 + +pci:v00008086d00000F47* + ID_MODEL_FROM_DATABASE=ValleyView LPIO2 I2C Controller #7 + +pci:v00008086d00000F48* + ID_MODEL_FROM_DATABASE=ValleyView PCI Express Root Port + +pci:v00008086d00000F49* + ID_MODEL_FROM_DATABASE=ValleyView PCI Express Root Port + +pci:v00008086d00000F4A* + ID_MODEL_FROM_DATABASE=ValleyView PCI Express Root Port + +pci:v00008086d00000F4B* + ID_MODEL_FROM_DATABASE=ValleyView PCI Express Root Port + +pci:v00008086d00000F4C* + ID_MODEL_FROM_DATABASE=ValleyView PCI Express Root Port + +pci:v00008086d00000F4D* + ID_MODEL_FROM_DATABASE=ValleyView PCI Express Root Port + +pci:v00008086d00000F4E* + ID_MODEL_FROM_DATABASE=ValleyView PCI Express Root Port + +pci:v00008086d00000F4F* + ID_MODEL_FROM_DATABASE=ValleyView PCI Express Root Port + +pci:v00008086d00000F50* + ID_MODEL_FROM_DATABASE=ValleyView MIPI-HSI Controller + +pci:v00008086d00001000* + ID_MODEL_FROM_DATABASE=82542 Gigabit Ethernet Controller (Fiber) + +pci:v00008086d00001000sv00000E11sd0000B0DF* + ID_MODEL_FROM_DATABASE=NC6132 Gigabit Ethernet Adapter (1000-SX) + +pci:v00008086d00001000sv00000E11sd0000B0E0* + ID_MODEL_FROM_DATABASE=NC6133 Gigabit Ethernet Adapter (1000-LX) + +pci:v00008086d00001000sv00000E11sd0000B123* + ID_MODEL_FROM_DATABASE=NC6134 Gigabit Ethernet Adapter (1000-LX) + +pci:v00008086d00001000sv00001014sd00000119* + ID_MODEL_FROM_DATABASE=Netfinity Gigabit Ethernet SX Adapter + +pci:v00008086d00001000sv00008086sd00001000* + ID_MODEL_FROM_DATABASE=PRO/1000 Gigabit Server Adapter + +pci:v00008086d00001001* + ID_MODEL_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Fiber) + +pci:v00008086d00001001sv00000E11sd0000004A* + ID_MODEL_FROM_DATABASE=NC6136 Gigabit Server Adapter + +pci:v00008086d00001001sv00001014sd000001EA* + ID_MODEL_FROM_DATABASE=Netfinity Gigabit Ethernet SX Adapter + +pci:v00008086d00001001sv00008086sd00001002* + ID_MODEL_FROM_DATABASE=PRO/1000 F Server Adapter + +pci:v00008086d00001001sv00008086sd00001003* + ID_MODEL_FROM_DATABASE=PRO/1000 F Server Adapter + +pci:v00008086d00001002* + ID_MODEL_FROM_DATABASE=Pro 100 LAN+Modem 56 Cardbus II + +pci:v00008086d00001002sv00008086sd0000200E* + ID_MODEL_FROM_DATABASE=Pro 100 LAN+Modem 56 Cardbus II + +pci:v00008086d00001002sv00008086sd00002013* + ID_MODEL_FROM_DATABASE=Pro 100 SR Mobile Combo Adapter + +pci:v00008086d00001002sv00008086sd00002017* + ID_MODEL_FROM_DATABASE=Pro 100 S Combo Mobile Adapter + +pci:v00008086d00001004* + ID_MODEL_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Copper) + +pci:v00008086d00001004sv00000E11sd00000049* + ID_MODEL_FROM_DATABASE=NC7132 Gigabit Upgrade Module + +pci:v00008086d00001004sv00000E11sd0000B1A4* + ID_MODEL_FROM_DATABASE=NC7131 Gigabit Server Adapter + +pci:v00008086d00001004sv00001014sd000010F2* + ID_MODEL_FROM_DATABASE=Gigabit Ethernet Server Adapter + +pci:v00008086d00001004sv00008086sd00001004* + ID_MODEL_FROM_DATABASE=PRO/1000 T Server Adapter + +pci:v00008086d00001004sv00008086sd00002004* + ID_MODEL_FROM_DATABASE=PRO/1000 T Server Adapter + +pci:v00008086d00001008* + ID_MODEL_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Copper) + +pci:v00008086d00001008sv00001014sd00000269* + ID_MODEL_FROM_DATABASE=iSeries 1000/100/10 Ethernet Adapter + +pci:v00008086d00001008sv00001028sd0000011B* + ID_MODEL_FROM_DATABASE=PowerEdge 1650/2550 + +pci:v00008086d00001008sv00001028sd0000011C* + ID_MODEL_FROM_DATABASE=PRO/1000 XT Network Connection + +pci:v00008086d00001008sv00008086sd00001107* + ID_MODEL_FROM_DATABASE=PRO/1000 XT Server Adapter + +pci:v00008086d00001008sv00008086sd00002107* + ID_MODEL_FROM_DATABASE=PRO/1000 XT Server Adapter + +pci:v00008086d00001008sv00008086sd00002110* + ID_MODEL_FROM_DATABASE=PRO/1000 XT Desktop Adapter + +pci:v00008086d00001008sv00008086sd00003108* + ID_MODEL_FROM_DATABASE=PRO/1000 XT Network Connection + +pci:v00008086d00001009* + ID_MODEL_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Fiber) + +pci:v00008086d00001009sv00001014sd00000268* + ID_MODEL_FROM_DATABASE=iSeries Gigabit Ethernet Adapter + +pci:v00008086d00001009sv00008086sd00001109* + ID_MODEL_FROM_DATABASE=PRO/1000 XF Server Adapter + +pci:v00008086d00001009sv00008086sd00002109* + ID_MODEL_FROM_DATABASE=PRO/1000 XF Server Adapter + +pci:v00008086d0000100A* + ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller + +pci:v00008086d0000100C* + ID_MODEL_FROM_DATABASE=82544GC Gigabit Ethernet Controller (Copper) + +pci:v00008086d0000100Csv00008086sd00001112* + ID_MODEL_FROM_DATABASE=PRO/1000 T Desktop Adapter + +pci:v00008086d0000100Csv00008086sd00002112* + ID_MODEL_FROM_DATABASE=PRO/1000 T Desktop Adapter + +pci:v00008086d0000100D* + ID_MODEL_FROM_DATABASE=82544GC Gigabit Ethernet Controller (LOM) + +pci:v00008086d0000100Dsv00001028sd00000123* + ID_MODEL_FROM_DATABASE=PRO/1000 XT Network Connection + +pci:v00008086d0000100Dsv00001079sd0000891F* + ID_MODEL_FROM_DATABASE=82544GC Based Network Connection + +pci:v00008086d0000100Dsv00004C53sd00001080* + ID_MODEL_FROM_DATABASE=CT8 mainboard + +pci:v00008086d0000100Dsv00008086sd0000110D* + ID_MODEL_FROM_DATABASE=82544GC Based Network Connection + +pci:v00008086d0000100E* + ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller + +pci:v00008086d0000100Esv00001014sd00000265* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection + +pci:v00008086d0000100Esv00001014sd00000267* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection + +pci:v00008086d0000100Esv00001014sd0000026A* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection + +pci:v00008086d0000100Esv00001028sd0000002E* + ID_MODEL_FROM_DATABASE=Optiplex GX260 + +pci:v00008086d0000100Esv00001028sd00000134* + ID_MODEL_FROM_DATABASE=PowerEdge 600SC + +pci:v00008086d0000100Esv00001028sd00000151* + ID_MODEL_FROM_DATABASE=Optiplex GX270 + +pci:v00008086d0000100Esv0000107Bsd00008920* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Desktop Adapter + +pci:v00008086d0000100Esv00008086sd0000001E* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Desktop Adapter + +pci:v00008086d0000100Esv00008086sd0000002E* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Desktop Adapter + +pci:v00008086d0000100Esv00008086sd00001376* + ID_MODEL_FROM_DATABASE=PRO/1000 GT Desktop Adapter + +pci:v00008086d0000100Esv00008086sd00001476* + ID_MODEL_FROM_DATABASE=PRO/1000 GT Desktop Adapter + +pci:v00008086d0000100F* + ID_MODEL_FROM_DATABASE=82545EM Gigabit Ethernet Controller (Copper) + +pci:v00008086d0000100Fsv00001014sd00000269* + ID_MODEL_FROM_DATABASE=iSeries 1000/100/10 Ethernet Adapter + +pci:v00008086d0000100Fsv00001014sd0000028E* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection + +pci:v00008086d0000100Fsv000015ADsd00000750* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Single Port Adapter + +pci:v00008086d0000100Fsv00008086sd00001000* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection + +pci:v00008086d0000100Fsv00008086sd00001001* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Server Adapter + +pci:v00008086d00001010* + ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Copper) + +pci:v00008086d00001010sv00000E11sd000000DB* + ID_MODEL_FROM_DATABASE=NC7170 Gigabit Server Adapter + +pci:v00008086d00001010sv00001014sd0000027C* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Network Adapter + +pci:v00008086d00001010sv000015ADsd00000760* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Adapter + +pci:v00008086d00001010sv000018FBsd00007872* + ID_MODEL_FROM_DATABASE=RESlink-X + +pci:v00008086d00001010sv00001FC1sd00000026* + ID_MODEL_FROM_DATABASE=Niagara 2260 Bypass Card + +pci:v00008086d00001010sv00004C53sd00001080* + ID_MODEL_FROM_DATABASE=CT8 mainboard + +pci:v00008086d00001010sv00004C53sd000010A0* + ID_MODEL_FROM_DATABASE=CA3/CR3 mainboard + +pci:v00008086d00001010sv00008086sd00001011* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Server Adapter + +pci:v00008086d00001010sv00008086sd00001012* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Server Adapter + +pci:v00008086d00001010sv00008086sd0000101A* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Network Connection + +pci:v00008086d00001010sv00008086sd00003424* + ID_MODEL_FROM_DATABASE=SE7501HG2 Mainboard + +pci:v00008086d00001011* + ID_MODEL_FROM_DATABASE=82545EM Gigabit Ethernet Controller (Fiber) + +pci:v00008086d00001011sv00001014sd00000268* + ID_MODEL_FROM_DATABASE=iSeries Gigabit Ethernet Adapter + +pci:v00008086d00001011sv00008086sd00001002* + ID_MODEL_FROM_DATABASE=PRO/1000 MF Server Adapter + +pci:v00008086d00001011sv00008086sd00001003* + ID_MODEL_FROM_DATABASE=PRO/1000 MF Server Adapter (LX) + +pci:v00008086d00001012* + ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Fiber) + +pci:v00008086d00001012sv00000E11sd000000DC* + ID_MODEL_FROM_DATABASE=NC6170 Gigabit Server Adapter + +pci:v00008086d00001012sv00008086sd00001012* + ID_MODEL_FROM_DATABASE=PRO/1000 MF Dual Port Server Adapter + +pci:v00008086d00001013* + ID_MODEL_FROM_DATABASE=82541EI Gigabit Ethernet Controller + +pci:v00008086d00001013sv00008086sd00000013* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection + +pci:v00008086d00001013sv00008086sd00001013* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection + +pci:v00008086d00001013sv00008086sd00001113* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Desktop Adapter + +pci:v00008086d00001014* + ID_MODEL_FROM_DATABASE=82541ER Gigabit Ethernet Controller + +pci:v00008086d00001014sv00008086sd00000014* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Desktop Connection + +pci:v00008086d00001014sv00008086sd00001014* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection + +pci:v00008086d00001015* + ID_MODEL_FROM_DATABASE=82540EM Gigabit Ethernet Controller (LOM) + +pci:v00008086d00001015sv00008086sd00001015* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection + +pci:v00008086d00001016* + ID_MODEL_FROM_DATABASE=82540EP Gigabit Ethernet Controller (Mobile) + +pci:v00008086d00001016sv00001014sd0000052C* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection + +pci:v00008086d00001016sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection + +pci:v00008086d00001016sv00008086sd00001016* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection + +pci:v00008086d00001017* + ID_MODEL_FROM_DATABASE=82540EP Gigabit Ethernet Controller + +pci:v00008086d00001017sv00008086sd00001017* + ID_MODEL_FROM_DATABASE=PR0/1000 MT Desktop Connection + +pci:v00008086d00001018* + ID_MODEL_FROM_DATABASE=82541EI Gigabit Ethernet Controller + +pci:v00008086d00001018sv00008086sd00001018* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection + +pci:v00008086d00001019* + ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller + +pci:v00008086d00001019sv00001458sd00001019* + ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) + +pci:v00008086d00001019sv00001458sd0000E000* + ID_MODEL_FROM_DATABASE=Intel Gigabit Ethernet (Kenai II) + +pci:v00008086d00001019sv00008086sd00001019* + ID_MODEL_FROM_DATABASE=PRO/1000 CT Desktop Connection + +pci:v00008086d00001019sv00008086sd0000301F* + ID_MODEL_FROM_DATABASE=D865PERL mainboard + +pci:v00008086d00001019sv00008086sd00003025* + ID_MODEL_FROM_DATABASE=D875PBZ motherboard + +pci:v00008086d00001019sv00008086sd0000302C* + ID_MODEL_FROM_DATABASE=Intel 82865G Mainboard (D865GBF) + +pci:v00008086d00001019sv00008086sd00003427* + ID_MODEL_FROM_DATABASE=S875WP1-E mainboard + +pci:v00008086d0000101A* + ID_MODEL_FROM_DATABASE=82547EI Gigabit Ethernet Controller (Mobile) + +pci:v00008086d0000101Asv00008086sd0000101A* + ID_MODEL_FROM_DATABASE=PRO/1000 CT Mobile Connection + +pci:v00008086d0000101D* + ID_MODEL_FROM_DATABASE=82546EB Gigabit Ethernet Controller + +pci:v00008086d0000101Dsv00008086sd00001000* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Quad Port Server Adapter + +pci:v00008086d0000101E* + ID_MODEL_FROM_DATABASE=82540EP Gigabit Ethernet Controller (Mobile) + +pci:v00008086d0000101Esv00001014sd00000549* + ID_MODEL_FROM_DATABASE=Thinkpad + +pci:v00008086d0000101Esv00001179sd00000001* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection + +pci:v00008086d0000101Esv00008086sd0000101E* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection + +pci:v00008086d00001026* + ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller + +pci:v00008086d00001026sv00001028sd00000169* + ID_MODEL_FROM_DATABASE=Precision 470 + +pci:v00008086d00001026sv00008086sd00001000* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Server Connection + +pci:v00008086d00001026sv00008086sd00001001* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Server Adapter + +pci:v00008086d00001026sv00008086sd00001002* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Server Adapter + +pci:v00008086d00001026sv00008086sd00001003* + ID_MODEL_FROM_DATABASE=PRO/1000 GT Server Adapter + +pci:v00008086d00001026sv00008086sd00001026* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Server Connection + +pci:v00008086d00001027* + ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller + +pci:v00008086d00001027sv0000103Csd00003103* + ID_MODEL_FROM_DATABASE=NC310F PCI-X Gigabit Server Adapter + +pci:v00008086d00001027sv00008086sd00001001* + ID_MODEL_FROM_DATABASE=PRO/1000 MF Server Adapter(LX) + +pci:v00008086d00001027sv00008086sd00001002* + ID_MODEL_FROM_DATABASE=PRO/1000 MF Server Adapter(LX) + +pci:v00008086d00001027sv00008086sd00001003* + ID_MODEL_FROM_DATABASE=PRO/1000 MF Server Adapter(LX) + +pci:v00008086d00001027sv00008086sd00001027* + ID_MODEL_FROM_DATABASE=PRO/1000 MF Server Adapter + +pci:v00008086d00001028* + ID_MODEL_FROM_DATABASE=82545GM Gigabit Ethernet Controller + +pci:v00008086d00001028sv00008086sd00001028* + ID_MODEL_FROM_DATABASE=PRO/1000 MB Server Connection + +pci:v00008086d00001029* + ID_MODEL_FROM_DATABASE=82559 Ethernet Controller + +pci:v00008086d00001030* + ID_MODEL_FROM_DATABASE=82559 InBusiness 10/100 + +pci:v00008086d00001031* + ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller + +pci:v00008086d00001031sv00001014sd00000209* + ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series + +pci:v00008086d00001031sv0000104Dsd000080E7* + ID_MODEL_FROM_DATABASE=Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + +pci:v00008086d00001031sv0000104Dsd0000813C* + ID_MODEL_FROM_DATABASE=Vaio PCG-GRV616G + +pci:v00008086d00001031sv0000107Bsd00005350* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00001031sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00001031sv0000144Dsd0000C000* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00001031sv0000144Dsd0000C001* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00001031sv0000144Dsd0000C003* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00001031sv0000144Dsd0000C006* + ID_MODEL_FROM_DATABASE=vpr Matrix 170B4 + +pci:v00008086d00001032* + ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE Ethernet Controller + +pci:v00008086d00001033* + ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller + +pci:v00008086d00001034* + ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VM Ethernet Controller + +pci:v00008086d00001035* + ID_MODEL_FROM_DATABASE=82801CAM (ICH3)/82562EH (LOM) Ethernet Controller + +pci:v00008086d00001036* + ID_MODEL_FROM_DATABASE=82801CAM (ICH3) 82562EH Ethernet Controller + +pci:v00008086d00001037* + ID_MODEL_FROM_DATABASE=82801CAM (ICH3) Chipset Ethernet Controller + +pci:v00008086d00001038* + ID_MODEL_FROM_DATABASE=82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller + +pci:v00008086d00001038sv00000E11sd00000098* + ID_MODEL_FROM_DATABASE=Evo N600c + +pci:v00008086d00001039* + ID_MODEL_FROM_DATABASE=82801DB PRO/100 VE (LOM) Ethernet Controller + +pci:v00008086d00001039sv00001014sd00000267* + ID_MODEL_FROM_DATABASE=NetVista A30p + +pci:v00008086d00001039sv0000114Asd00000582* + ID_MODEL_FROM_DATABASE=PC8 onboard ethernet ETH1 + +pci:v00008086d0000103A* + ID_MODEL_FROM_DATABASE=82801DB PRO/100 VE (CNR) Ethernet Controller + +pci:v00008086d0000103B* + ID_MODEL_FROM_DATABASE=82801DB PRO/100 VM (LOM) Ethernet Controller + +pci:v00008086d0000103C* + ID_MODEL_FROM_DATABASE=82801DB PRO/100 VM (CNR) Ethernet Controller + +pci:v00008086d0000103D* + ID_MODEL_FROM_DATABASE=82801DB PRO/100 VE (MOB) Ethernet Controller + +pci:v00008086d0000103Dsv00001014sd00000522* + ID_MODEL_FROM_DATABASE=ThinkPad R40 + +pci:v00008086d0000103Dsv00001028sd00002002* + ID_MODEL_FROM_DATABASE=Latitude D500 + +pci:v00008086d0000103Dsv00008086sd0000103D* + ID_MODEL_FROM_DATABASE=82562EZ 10/100 Ethernet Controller + +pci:v00008086d0000103E* + ID_MODEL_FROM_DATABASE=82801DB PRO/100 VM (MOB) Ethernet Controller + +pci:v00008086d00001040* + ID_MODEL_FROM_DATABASE=536EP Data Fax Modem + +pci:v00008086d00001040sv000016BEsd00001040* + ID_MODEL_FROM_DATABASE=V.9X DSP Data Fax Modem + +pci:v00008086d00001043* + ID_MODEL_FROM_DATABASE=PRO/Wireless LAN 2100 3B Mini PCI Adapter + +pci:v00008086d00001043sv0000103Csd000008B0* + ID_MODEL_FROM_DATABASE=tc1100 tablet + +pci:v00008086d00001043sv00008086sd00002522* + ID_MODEL_FROM_DATABASE=Samsung X10/P30 integrated WLAN + +pci:v00008086d00001043sv00008086sd00002527* + ID_MODEL_FROM_DATABASE=MIM2000/Centrino + +pci:v00008086d00001043sv00008086sd00002561* + ID_MODEL_FROM_DATABASE=Dell Latitude D800 + +pci:v00008086d00001043sv00008086sd00002581* + ID_MODEL_FROM_DATABASE=Toshiba Satellite M10 + +pci:v00008086d00001048* + ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller + +pci:v00008086d00001048sv00008086sd0000A01F* + ID_MODEL_FROM_DATABASE=PRO/10GbE LR Server Adapter + +pci:v00008086d00001048sv00008086sd0000A11F* + ID_MODEL_FROM_DATABASE=PRO/10GbE LR Server Adapter + +pci:v00008086d00001049* + ID_MODEL_FROM_DATABASE=82566MM Gigabit Network Connection + +pci:v00008086d00001049sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00001049sv000017AAsd000020B9* + ID_MODEL_FROM_DATABASE=ThinkPad T61/R61 + +pci:v00008086d0000104A* + ID_MODEL_FROM_DATABASE=82566DM Gigabit Network Connection + +pci:v00008086d0000104B* + ID_MODEL_FROM_DATABASE=82566DC Gigabit Network Connection + +pci:v00008086d0000104C* + ID_MODEL_FROM_DATABASE=82562V 10/100 Network Connection + +pci:v00008086d0000104D* + ID_MODEL_FROM_DATABASE=82566MC Gigabit Network Connection + +pci:v00008086d00001050* + ID_MODEL_FROM_DATABASE=82562EZ 10/100 Ethernet Controller + +pci:v00008086d00001050sv00001028sd0000019D* + ID_MODEL_FROM_DATABASE=Dimension 3000 + +pci:v00008086d00001050sv00001462sd0000728C* + ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728) + +pci:v00008086d00001050sv00001462sd0000758C* + ID_MODEL_FROM_DATABASE=MS-6758 (875P Neo) + +pci:v00008086d00001050sv00008086sd00003020* + ID_MODEL_FROM_DATABASE=D865PERL mainboard + +pci:v00008086d00001050sv00008086sd0000302F* + ID_MODEL_FROM_DATABASE=Desktop Board D865GBF + +pci:v00008086d00001050sv00008086sd00003427* + ID_MODEL_FROM_DATABASE=S875WP1-E mainboard + +pci:v00008086d00001051* + ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) integrated LAN Controller + +pci:v00008086d00001052* + ID_MODEL_FROM_DATABASE=PRO/100 VM Network Connection + +pci:v00008086d00001053* + ID_MODEL_FROM_DATABASE=PRO/100 VM Network Connection + +pci:v00008086d00001054* + ID_MODEL_FROM_DATABASE=PRO/100 VE Network Connection + +pci:v00008086d00001055* + ID_MODEL_FROM_DATABASE=PRO/100 VM Network Connection + +pci:v00008086d00001056* + ID_MODEL_FROM_DATABASE=PRO/100 VE Network Connection + +pci:v00008086d00001057* + ID_MODEL_FROM_DATABASE=PRO/100 VE Network Connection + +pci:v00008086d00001059* + ID_MODEL_FROM_DATABASE=82551QM Ethernet Controller + +pci:v00008086d0000105B* + ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Copper) + +pci:v00008086d0000105E* + ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller + +pci:v00008086d0000105Esv0000103Csd00007044* + ID_MODEL_FROM_DATABASE=NC360T PCI Express Dual Port Gigabit Server Adapter + +pci:v00008086d0000105Esv0000103Csd0000704E* + ID_MODEL_FROM_DATABASE=Dual Port 1000Base-T (PCIe) [AD337A] + +pci:v00008086d0000105Esv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d0000105Esv00001775sd00006003* + ID_MODEL_FROM_DATABASE=Telum GE-QT + +pci:v00008086d0000105Esv00008086sd0000005E* + ID_MODEL_FROM_DATABASE=PRO/1000 PT Dual Port Server Connection + +pci:v00008086d0000105Esv00008086sd0000105E* + ID_MODEL_FROM_DATABASE=PRO/1000 PT Dual Port Network Connection + +pci:v00008086d0000105Esv00008086sd000010D5* + ID_MODEL_FROM_DATABASE=82571PT Gigabit PT Quad Port Server ExpressModule + +pci:v00008086d0000105Esv00008086sd0000115E* + ID_MODEL_FROM_DATABASE=PRO/1000 PT Dual Port Server Adapter + +pci:v00008086d0000105Esv00008086sd0000125E* + ID_MODEL_FROM_DATABASE=PRO/1000 PT Dual Port Server Adapter + +pci:v00008086d0000105Esv00008086sd0000135E* + ID_MODEL_FROM_DATABASE=PRO/1000 PT Dual Port Server Adapter + +pci:v00008086d0000105F* + ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller + +pci:v00008086d0000105Fsv0000103Csd0000704F* + ID_MODEL_FROM_DATABASE=Dual Port 1000Base-SX (PCIe) [AD338A] + +pci:v00008086d0000105Fsv00008086sd0000005A* + ID_MODEL_FROM_DATABASE=PRO/1000 PF Dual Port Server Adapter + +pci:v00008086d0000105Fsv00008086sd0000115F* + ID_MODEL_FROM_DATABASE=PRO/1000 PF Dual Port Server Adapter + +pci:v00008086d0000105Fsv00008086sd0000125F* + ID_MODEL_FROM_DATABASE=PRO/1000 PF Dual Port Server Adapter + +pci:v00008086d0000105Fsv00008086sd0000135F* + ID_MODEL_FROM_DATABASE=PRO/1000 PF Dual Port Server Adapter + +pci:v00008086d00001060* + ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller + +pci:v00008086d00001060sv00008086sd00000060* + ID_MODEL_FROM_DATABASE=PRO/1000 PB Dual Port Server Connection + +pci:v00008086d00001060sv00008086sd00001060* + ID_MODEL_FROM_DATABASE=PRO/1000 PB Dual Port Server Connection + +pci:v00008086d00001064* + ID_MODEL_FROM_DATABASE=82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller + +pci:v00008086d00001064sv00001043sd000080F8* + ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard + +pci:v00008086d00001065* + ID_MODEL_FROM_DATABASE=82562ET/EZ/GT/GZ - PRO/100 VE Ethernet Controller + +pci:v00008086d00001066* + ID_MODEL_FROM_DATABASE=82562 EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller + +pci:v00008086d00001067* + ID_MODEL_FROM_DATABASE=82562 EM/EX/GX - PRO/100 VM Ethernet Controller + +pci:v00008086d00001068* + ID_MODEL_FROM_DATABASE=82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile + +pci:v00008086d00001069* + ID_MODEL_FROM_DATABASE=82562EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller Mobile + +pci:v00008086d0000106A* + ID_MODEL_FROM_DATABASE=82562G - PRO/100 VE (LOM) Ethernet Controller + +pci:v00008086d0000106B* + ID_MODEL_FROM_DATABASE=82562G - PRO/100 VE Ethernet Controller Mobile + +pci:v00008086d00001075* + ID_MODEL_FROM_DATABASE=82547GI Gigabit Ethernet Controller + +pci:v00008086d00001075sv00001028sd00000165* + ID_MODEL_FROM_DATABASE=PowerEdge 750 + +pci:v00008086d00001075sv00008086sd00000075* + ID_MODEL_FROM_DATABASE=PRO/1000 CT Network Connection + +pci:v00008086d00001075sv00008086sd00001075* + ID_MODEL_FROM_DATABASE=PRO/1000 CT Network Connection + +pci:v00008086d00001076* + ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller + +pci:v00008086d00001076sv00001028sd00000165* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection + +pci:v00008086d00001076sv00001028sd0000016D* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection + +pci:v00008086d00001076sv00001028sd0000019A* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection + +pci:v00008086d00001076sv00001028sd0000106D* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection + +pci:v00008086d00001076sv00008086sd00000076* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection + +pci:v00008086d00001076sv00008086sd00001076* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Connection + +pci:v00008086d00001076sv00008086sd00001176* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Desktop Adapter + +pci:v00008086d00001076sv00008086sd00001276* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Network Adapter + +pci:v00008086d00001077* + ID_MODEL_FROM_DATABASE=82541GI Gigabit Ethernet Controller + +pci:v00008086d00001077sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection + +pci:v00008086d00001077sv00008086sd00000077* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection + +pci:v00008086d00001077sv00008086sd00001077* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Mobile Connection + +pci:v00008086d00001078* + ID_MODEL_FROM_DATABASE=82541ER Gigabit Ethernet Controller + +pci:v00008086d00001078sv00008086sd00001078* + ID_MODEL_FROM_DATABASE=82541ER-based Network Connection + +pci:v00008086d00001079* + ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller + +pci:v00008086d00001079sv0000103Csd000012A6* + ID_MODEL_FROM_DATABASE=Dual Port 1000Base-T [A9900A] + +pci:v00008086d00001079sv0000103Csd000012CF* + ID_MODEL_FROM_DATABASE=Core Dual Port 1000Base-T [AB352A] + +pci:v00008086d00001079sv00001775sd000010D0* + ID_MODEL_FROM_DATABASE=V5D Single Board Computer Gigabit Ethernet + +pci:v00008086d00001079sv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d00001079sv00001FC1sd00000027* + ID_MODEL_FROM_DATABASE=Niagara 2261 Failover NIC + +pci:v00008086d00001079sv00004C53sd00001090* + ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard + +pci:v00008086d00001079sv00004C53sd000010B0* + ID_MODEL_FROM_DATABASE=CL9 mainboard + +pci:v00008086d00001079sv00008086sd00000079* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Network Connection + +pci:v00008086d00001079sv00008086sd00001079* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Network Connection + +pci:v00008086d00001079sv00008086sd00001179* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Server Adapter + +pci:v00008086d00001079sv00008086sd0000117A* + ID_MODEL_FROM_DATABASE=PRO/1000 MT Dual Port Server Adapter + +pci:v00008086d0000107A* + ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller + +pci:v00008086d0000107Asv0000103Csd000012A8* + ID_MODEL_FROM_DATABASE=Dual Port 1000base-SX [A9899A] + +pci:v00008086d0000107Asv00008086sd0000107A* + ID_MODEL_FROM_DATABASE=PRO/1000 MF Dual Port Server Adapter + +pci:v00008086d0000107Asv00008086sd0000127A* + ID_MODEL_FROM_DATABASE=PRO/1000 MF Dual Port Server Adapter + +pci:v00008086d0000107B* + ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller + +pci:v00008086d0000107Bsv00008086sd0000007B* + ID_MODEL_FROM_DATABASE=PRO/1000 MB Dual Port Server Connection + +pci:v00008086d0000107Bsv00008086sd0000107B* + ID_MODEL_FROM_DATABASE=PRO/1000 MB Dual Port Server Connection + +pci:v00008086d0000107C* + ID_MODEL_FROM_DATABASE=82541PI Gigabit Ethernet Controller + +pci:v00008086d0000107Csv00008086sd00001376* + ID_MODEL_FROM_DATABASE=PRO/1000 GT Desktop Adapter + +pci:v00008086d0000107Csv00008086sd00001476* + ID_MODEL_FROM_DATABASE=PRO/1000 GT Desktop Adapter + +pci:v00008086d0000107D* + ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Copper) + +pci:v00008086d0000107Dsv00008086sd00001082* + ID_MODEL_FROM_DATABASE=PRO/1000 PT Server Adapter + +pci:v00008086d0000107Dsv00008086sd00001084* + ID_MODEL_FROM_DATABASE=PRO/1000 PT Server Adapter + +pci:v00008086d0000107Dsv00008086sd00001092* + ID_MODEL_FROM_DATABASE=PRO/1000 PT Server Adapter + +pci:v00008086d0000107E* + ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Fiber) + +pci:v00008086d0000107Esv00008086sd00001084* + ID_MODEL_FROM_DATABASE=PRO/1000 PF Server Adapter + +pci:v00008086d0000107Esv00008086sd00001085* + ID_MODEL_FROM_DATABASE=PRO/1000 PF Server Adapter + +pci:v00008086d0000107Esv00008086sd00001094* + ID_MODEL_FROM_DATABASE=PRO/1000 PF Server Adapter + +pci:v00008086d0000107F* + ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller + +pci:v00008086d00001080* + ID_MODEL_FROM_DATABASE=FA82537EP 56K V.92 Data/Fax Modem PCI + +pci:v00008086d00001081* + ID_MODEL_FROM_DATABASE=631xESB/632xESB LAN Controller Copper + +pci:v00008086d00001082* + ID_MODEL_FROM_DATABASE=631xESB/632xESB LAN Controller fiber + +pci:v00008086d00001083* + ID_MODEL_FROM_DATABASE=631xESB/632xESB LAN Controller SERDES + +pci:v00008086d00001084* + ID_MODEL_FROM_DATABASE=631xESB/632xESB IDE Redirection + +pci:v00008086d00001085* + ID_MODEL_FROM_DATABASE=631xESB/632xESB Serial Port Redirection + +pci:v00008086d00001086* + ID_MODEL_FROM_DATABASE=631xESB/632xESB IPMI/KCS0 + +pci:v00008086d00001087* + ID_MODEL_FROM_DATABASE=631xESB/632xESB UHCI Redirection + +pci:v00008086d00001089* + ID_MODEL_FROM_DATABASE=631xESB/632xESB BT + +pci:v00008086d0000108A* + ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller + +pci:v00008086d0000108Asv00008086sd0000108A* + ID_MODEL_FROM_DATABASE=PRO/1000 P Dual Port Server Adapter + +pci:v00008086d0000108Asv00008086sd0000118A* + ID_MODEL_FROM_DATABASE=PRO/1000 P Dual Port Server Adapter + +pci:v00008086d0000108B* + ID_MODEL_FROM_DATABASE=82573V Gigabit Ethernet Controller (Copper) + +pci:v00008086d0000108Bsv00001462sd0000176C* + ID_MODEL_FROM_DATABASE=on board on MSI 945P - NEO (MS-7176) + +pci:v00008086d0000108C* + ID_MODEL_FROM_DATABASE=82573E Gigabit Ethernet Controller (Copper) + +pci:v00008086d0000108E* + ID_MODEL_FROM_DATABASE=82573E KCS (Active Management) + +pci:v00008086d0000108F* + ID_MODEL_FROM_DATABASE=Active Management Technology - SOL + +pci:v00008086d00001091* + ID_MODEL_FROM_DATABASE=PRO/100 VM Network Connection + +pci:v00008086d00001092* + ID_MODEL_FROM_DATABASE=PRO/100 VE Network Connection + +pci:v00008086d00001093* + ID_MODEL_FROM_DATABASE=PRO/100 VM Network Connection + +pci:v00008086d00001094* + ID_MODEL_FROM_DATABASE=PRO/100 VE Network Connection + +pci:v00008086d00001095* + ID_MODEL_FROM_DATABASE=PRO/100 VE Network Connection + +pci:v00008086d00001096* + ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper) + +pci:v00008086d00001096sv000015D9sd00001096* + ID_MODEL_FROM_DATABASE=Motherboard + +pci:v00008086d00001096sv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d00001096sv00008086sd00003476* + ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board + +pci:v00008086d00001097* + ID_MODEL_FROM_DATABASE=631xESB/632xESB DPT LAN Controller (Fiber) + +pci:v00008086d00001098* + ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Serdes) + +pci:v00008086d00001099* + ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Copper) + +pci:v00008086d00001099sv00008086sd00001099* + ID_MODEL_FROM_DATABASE=PRO/1000 GT Quad Port Server Adapter + +pci:v00008086d0000109A* + ID_MODEL_FROM_DATABASE=82573L Gigabit Ethernet Controller + +pci:v00008086d0000109Asv00001179sd0000FF10* + ID_MODEL_FROM_DATABASE=PRO/1000 PL + +pci:v00008086d0000109Asv000017AAsd00002001* + ID_MODEL_FROM_DATABASE=ThinkPad T60 + +pci:v00008086d0000109Asv000017AAsd0000207E* + ID_MODEL_FROM_DATABASE=ThinkPad X60s + +pci:v00008086d0000109Asv00008086sd0000109A* + ID_MODEL_FROM_DATABASE=PRO/1000 PL Network Connection + +pci:v00008086d0000109Asv00008086sd0000309C* + ID_MODEL_FROM_DATABASE=Desktop Board D945GTP + +pci:v00008086d0000109Asv00008086sd000030A5* + ID_MODEL_FROM_DATABASE=Desktop Board D975XBX + +pci:v00008086d0000109B* + ID_MODEL_FROM_DATABASE=82546GB PRO/1000 GF Quad Port Server Adapter + +pci:v00008086d0000109E* + ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller + +pci:v00008086d0000109Esv00008086sd0000A01F* + ID_MODEL_FROM_DATABASE=PRO/10GbE CX4 Server Adapter + +pci:v00008086d0000109Esv00008086sd0000A11F* + ID_MODEL_FROM_DATABASE=PRO/10GbE CX4 Server Adapter + +pci:v00008086d000010A0* + ID_MODEL_FROM_DATABASE=82571EB PRO/1000 AT Quad Port Bypass Adapter + +pci:v00008086d000010A1* + ID_MODEL_FROM_DATABASE=82571EB PRO/1000 AF Quad Port Bypass Adapter + +pci:v00008086d000010A4* + ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller + +pci:v00008086d000010A4sv00008086sd000010A4* + ID_MODEL_FROM_DATABASE=PRO/1000 PT Quad Port Server Adapter + +pci:v00008086d000010A4sv00008086sd000011A4* + ID_MODEL_FROM_DATABASE=PRO/1000 PT Quad Port Server Adapter + +pci:v00008086d000010A5* + ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Fiber) + +pci:v00008086d000010A5sv00008086sd000010A5* + ID_MODEL_FROM_DATABASE=PRO/1000 PF Quad Port Server Adapter + +pci:v00008086d000010A5sv00008086sd000010A6* + ID_MODEL_FROM_DATABASE=PRO/1000 PF Quad Port Server Adapter + +pci:v00008086d000010A6* + ID_MODEL_FROM_DATABASE=82599EB 10-Gigabit Dummy Function + +pci:v00008086d000010A7* + ID_MODEL_FROM_DATABASE=82575EB Gigabit Network Connection + +pci:v00008086d000010A7sv00008086sd000010A8* + ID_MODEL_FROM_DATABASE=82575EB Gigabit Riser Card + +pci:v00008086d000010A9* + ID_MODEL_FROM_DATABASE=82575EB Gigabit Backplane Connection + +pci:v00008086d000010B0* + ID_MODEL_FROM_DATABASE=82573L PRO/1000 PL Network Connection + +pci:v00008086d000010B2* + ID_MODEL_FROM_DATABASE=82573V PRO/1000 PM Network Connection + +pci:v00008086d000010B3* + ID_MODEL_FROM_DATABASE=82573E PRO/1000 PM Network Connection + +pci:v00008086d000010B4* + ID_MODEL_FROM_DATABASE=82573L PRO/1000 PL Network Connection + +pci:v00008086d000010B5* + ID_MODEL_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Copper) + +pci:v00008086d000010B5sv0000103Csd00003109* + ID_MODEL_FROM_DATABASE=NC340T PCI-X Quad-port Gigabit Server Adapter + +pci:v00008086d000010B5sv00008086sd00001099* + ID_MODEL_FROM_DATABASE=PRO/1000 GT Quad Port Server Adapter + +pci:v00008086d000010B5sv00008086sd00001199* + ID_MODEL_FROM_DATABASE=PRO/1000 GT Quad Port Server Adapter + +pci:v00008086d000010B6* + ID_MODEL_FROM_DATABASE=82598 10GbE PCI-Express Ethernet Controller + +pci:v00008086d000010B9* + ID_MODEL_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Copper) + +pci:v00008086d000010B9sv0000103Csd0000704A* + ID_MODEL_FROM_DATABASE=HP 110T PCIe Gigabit Server Adapter + +pci:v00008086d000010B9sv00008086sd00001083* + ID_MODEL_FROM_DATABASE=PRO/1000 PT Desktop Adapter + +pci:v00008086d000010B9sv00008086sd00001093* + ID_MODEL_FROM_DATABASE=PRO/1000 PT Desktop Adapter + +pci:v00008086d000010BA* + ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper) + +pci:v00008086d000010BB* + ID_MODEL_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Serdes) + +pci:v00008086d000010BC* + ID_MODEL_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Copper) + +pci:v00008086d000010BCsv0000103Csd0000704B* + ID_MODEL_FROM_DATABASE=NC364T PCI Express Quad Port Gigabit Server Adapter + +pci:v00008086d000010BCsv0000108Esd000011BC* + ID_MODEL_FROM_DATABASE=x4 PCI-Express Quad Gigabit Ethernet UTP Low Profile Adapter + +pci:v00008086d000010BCsv00008086sd000010BC* + ID_MODEL_FROM_DATABASE=PRO/1000 PT Quad Port LP Server Adapter + +pci:v00008086d000010BCsv00008086sd000011BC* + ID_MODEL_FROM_DATABASE=PRO/1000 PT Quad Port LP Server Adapter + +pci:v00008086d000010BD* + ID_MODEL_FROM_DATABASE=82566DM-2 Gigabit Network Connection + +pci:v00008086d000010BDsv00001028sd00000211* + ID_MODEL_FROM_DATABASE=OptiPlex 755 + +pci:v00008086d000010BF* + ID_MODEL_FROM_DATABASE=82567LF Gigabit Network Connection + +pci:v00008086d000010C0* + ID_MODEL_FROM_DATABASE=82562V-2 10/100 Network Connection + +pci:v00008086d000010C0sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d000010C2* + ID_MODEL_FROM_DATABASE=82562G-2 10/100 Network Connection + +pci:v00008086d000010C3* + ID_MODEL_FROM_DATABASE=82562GT-2 10/100 Network Connection + +pci:v00008086d000010C4* + ID_MODEL_FROM_DATABASE=82562GT 10/100 Network Connection + +pci:v00008086d000010C5* + ID_MODEL_FROM_DATABASE=82562G 10/100 Network Connection + +pci:v00008086d000010C6* + ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Dual Port Network Connection + +pci:v00008086d000010C6sv00008086sd0000A05F* + ID_MODEL_FROM_DATABASE=10-Gigabit XF SR Dual Port Server Adapter + +pci:v00008086d000010C6sv00008086sd0000A15F* + ID_MODEL_FROM_DATABASE=10-Gigabit XF SR Dual Port Server Adapter + +pci:v00008086d000010C7* + ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Network Connection + +pci:v00008086d000010C7sv00001014sd0000037F* + ID_MODEL_FROM_DATABASE=10-Gigabit XF SR Server Adapter + +pci:v00008086d000010C7sv00001014sd00000380* + ID_MODEL_FROM_DATABASE=10-Gigabit XF LR Server Adapter + +pci:v00008086d000010C7sv00008086sd0000A05F* + ID_MODEL_FROM_DATABASE=10-Gigabit XF SR Server Adapter + +pci:v00008086d000010C7sv00008086sd0000A15F* + ID_MODEL_FROM_DATABASE=10-Gigabit XF SR Server Adapter + +pci:v00008086d000010C7sv00008086sd0000A16F* + ID_MODEL_FROM_DATABASE=10-Gigabit XF SR Server Adapter + +pci:v00008086d000010C8* + ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AT Network Connection + +pci:v00008086d000010C8sv00008086sd0000A10C* + ID_MODEL_FROM_DATABASE=10-Gigabit AT Server Adapter + +pci:v00008086d000010C8sv00008086sd0000A11C* + ID_MODEL_FROM_DATABASE=10-Gigabit AT Server Adapter + +pci:v00008086d000010C8sv00008086sd0000A12C* + ID_MODEL_FROM_DATABASE=10-Gigabit AT Server Adapter + +pci:v00008086d000010C9* + ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection + +pci:v00008086d000010C9sv0000103Csd000031EF* + ID_MODEL_FROM_DATABASE=NC362i Integrated Dual port Gigabit Server Adapter + +pci:v00008086d000010C9sv0000103Csd0000323F* + ID_MODEL_FROM_DATABASE=NC362i Integrated Dual port Gigabit Server Adapter + +pci:v00008086d000010C9sv000010A9sd00008028* + ID_MODEL_FROM_DATABASE=UV-BaseIO dual-port GbE + +pci:v00008086d000010C9sv000013A3sd00000037* + ID_MODEL_FROM_DATABASE=DS4100 Secure Multi-Gigabit Server Adapter with Compression + +pci:v00008086d000010C9sv000015D9sd0000A811* + ID_MODEL_FROM_DATABASE=H8DGU + +pci:v00008086d000010C9sv00008086sd0000A01C* + ID_MODEL_FROM_DATABASE=Gigabit ET Dual Port Server Adapter + +pci:v00008086d000010C9sv00008086sd0000A03C* + ID_MODEL_FROM_DATABASE=Gigabit ET Dual Port Server Adapter + +pci:v00008086d000010C9sv00008086sd0000A04C* + ID_MODEL_FROM_DATABASE=Gigabit ET Dual Port Server Adapter + +pci:v00008086d000010CA* + ID_MODEL_FROM_DATABASE=82576 Virtual Function + +pci:v00008086d000010CB* + ID_MODEL_FROM_DATABASE=82567V Gigabit Network Connection + +pci:v00008086d000010CC* + ID_MODEL_FROM_DATABASE=82567LM-2 Gigabit Network Connection + +pci:v00008086d000010CD* + ID_MODEL_FROM_DATABASE=82567LF-2 Gigabit Network Connection + +pci:v00008086d000010CE* + ID_MODEL_FROM_DATABASE=82567V-2 Gigabit Network Connection + +pci:v00008086d000010D3* + ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection + +pci:v00008086d000010D3sv0000103Csd00003250* + ID_MODEL_FROM_DATABASE=NC112T PCI Express single Port Gigabit Server Adapter + +pci:v00008086d000010D3sv000010A9sd00008029* + ID_MODEL_FROM_DATABASE=Prism XL Single Port Gigabit Ethernet + +pci:v00008086d000010D3sv000015D9sd0000060A* + ID_MODEL_FROM_DATABASE=X7SPA-H/X7SPA-HF Motherboard + +pci:v00008086d000010D3sv00008086sd00000001* + ID_MODEL_FROM_DATABASE=Gigabit CT2 Desktop Adapter + +pci:v00008086d000010D3sv00008086sd0000A01F* + ID_MODEL_FROM_DATABASE=Gigabit CT Desktop Adapter + +pci:v00008086d000010D3sv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d000010D3sv0000E4BFsd000050C2* + ID_MODEL_FROM_DATABASE=PC2-LIMBO + +pci:v00008086d000010D4* + ID_MODEL_FROM_DATABASE=Matrox Concord GE (customized Intel 82574) + +pci:v00008086d000010D5* + ID_MODEL_FROM_DATABASE=82571PT Gigabit PT Quad Port Server ExpressModule + +pci:v00008086d000010D6* + ID_MODEL_FROM_DATABASE=82575GB Gigabit Network Connection + +pci:v00008086d000010D6sv00008086sd000010D6* + ID_MODEL_FROM_DATABASE=Gigabit VT Quad Port Server Adapter + +pci:v00008086d000010D6sv00008086sd0000145A* + ID_MODEL_FROM_DATABASE=Gigabit VT Quad Port Server Adapter + +pci:v00008086d000010D6sv00008086sd0000147A* + ID_MODEL_FROM_DATABASE=Gigabit VT Quad Port Server Adapter + +pci:v00008086d000010D8* + ID_MODEL_FROM_DATABASE=82599EB 10 Gigabit Unprogrammed + +pci:v00008086d000010D9* + ID_MODEL_FROM_DATABASE=82571EB Dual Port Gigabit Mezzanine Adapter + +pci:v00008086d000010D9sv0000103Csd00001716* + ID_MODEL_FROM_DATABASE=NC360m Dual Port 1GbE BL-c Adapter + +pci:v00008086d000010DA* + ID_MODEL_FROM_DATABASE=82571EB Quad Port Gigabit Mezzanine Adapter + +pci:v00008086d000010DAsv0000103Csd00001717* + ID_MODEL_FROM_DATABASE=NC364m Quad Port 1GbE BL-c Adapter + +pci:v00008086d000010DB* + ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit Dual Port Network Connection + +pci:v00008086d000010DD* + ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AT CX4 Network Connection + +pci:v00008086d000010DE* + ID_MODEL_FROM_DATABASE=82567LM-3 Gigabit Network Connection + +pci:v00008086d000010DF* + ID_MODEL_FROM_DATABASE=82567LF-3 Gigabit Network Connection + +pci:v00008086d000010E1* + ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Dual Port Network Connection + +pci:v00008086d000010E1sv00008086sd0000A15F* + ID_MODEL_FROM_DATABASE=10-Gigabit SR Dual Port Express Module + +pci:v00008086d000010E2* + ID_MODEL_FROM_DATABASE=82575GB Gigabit Network Connection + +pci:v00008086d000010E2sv00008086sd000010E2* + ID_MODEL_FROM_DATABASE=Gigabit VT Quad Port Server Adapter + +pci:v00008086d000010E5* + ID_MODEL_FROM_DATABASE=82567LM-4 Gigabit Network Connection + +pci:v00008086d000010E6* + ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection + +pci:v00008086d000010E6sv00008086sd0000A01F* + ID_MODEL_FROM_DATABASE=Gigabit EF Dual Port Server Adapter + +pci:v00008086d000010E6sv00008086sd0000A02F* + ID_MODEL_FROM_DATABASE=Gigabit EF Dual Port Server Adapter + +pci:v00008086d000010E7* + ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection + +pci:v00008086d000010E7sv0000103Csd000031FF* + ID_MODEL_FROM_DATABASE=NC362i Integrated Dual Port BL-c Gigabit Server Adapter + +pci:v00008086d000010E8* + ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection + +pci:v00008086d000010E8sv00008086sd0000A02B* + ID_MODEL_FROM_DATABASE=Gigabit ET Quad Port Server Adapter + +pci:v00008086d000010E8sv00008086sd0000A02C* + ID_MODEL_FROM_DATABASE=Gigabit ET Quad Port Server Adapter + +pci:v00008086d000010EA* + ID_MODEL_FROM_DATABASE=82577LM Gigabit Network Connection + +pci:v00008086d000010EAsv00001028sd0000040A* + ID_MODEL_FROM_DATABASE=Latitude E6410 + +pci:v00008086d000010EAsv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d000010EAsv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d000010EB* + ID_MODEL_FROM_DATABASE=82577LC Gigabit Network Connection + +pci:v00008086d000010EC* + ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AT CX4 Network Connection + +pci:v00008086d000010ECsv00008086sd0000A01F* + ID_MODEL_FROM_DATABASE=10-Gigabit CX4 Dual Port Server Adapter + +pci:v00008086d000010ECsv00008086sd0000A11F* + ID_MODEL_FROM_DATABASE=10-Gigabit CX4 Dual Port Server Adapter + +pci:v00008086d000010ED* + ID_MODEL_FROM_DATABASE=82599 Ethernet Controller Virtual Function + +pci:v00008086d000010EF* + ID_MODEL_FROM_DATABASE=82578DM Gigabit Network Connection + +pci:v00008086d000010EFsv00001028sd000002DA* + ID_MODEL_FROM_DATABASE=OptiPlex 980 + +pci:v00008086d000010F0* + ID_MODEL_FROM_DATABASE=82578DC Gigabit Network Connection + +pci:v00008086d000010F1* + ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Dual Port Network Connection + +pci:v00008086d000010F1sv00008086sd0000A20F* + ID_MODEL_FROM_DATABASE=10-Gigabit AF DA Dual Port Server Adapter + +pci:v00008086d000010F1sv00008086sd0000A21F* + ID_MODEL_FROM_DATABASE=10-Gigabit AF DA Dual Port Server Adapter + +pci:v00008086d000010F4* + ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AF Network Connection + +pci:v00008086d000010F4sv00008086sd0000106F* + ID_MODEL_FROM_DATABASE=10-Gigabit XF LR Server Adapter + +pci:v00008086d000010F4sv00008086sd0000A06F* + ID_MODEL_FROM_DATABASE=10-Gigabit XF LR Server Adapter + +pci:v00008086d000010F5* + ID_MODEL_FROM_DATABASE=82567LM Gigabit Network Connection + +pci:v00008086d000010F6* + ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection + +pci:v00008086d000010F7* + ID_MODEL_FROM_DATABASE=82599EB 10-Gigabit KX4 Network Connection + +pci:v00008086d000010F7sv0000108Esd00007B12* + ID_MODEL_FROM_DATABASE=Sun Dual 10GbE PCIe 2.0 FEM + +pci:v00008086d000010F7sv00008086sd0000000D* + ID_MODEL_FROM_DATABASE=Ethernet Mezzanine Adapter X520-KX4-2 + +pci:v00008086d000010F8* + ID_MODEL_FROM_DATABASE=82599EB 10 Gigabit Dual Port Backplane Connection + +pci:v00008086d000010F8sv00001028sd00001F63* + ID_MODEL_FROM_DATABASE=10GbE 2P X520k bNDC + +pci:v00008086d000010F8sv0000103Csd000017D2* + ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 560M Adapter + +pci:v00008086d000010F8sv0000103Csd000018D0* + ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 560FLB Adapter + +pci:v00008086d000010F8sv00008086sd0000000C* + ID_MODEL_FROM_DATABASE=Ethernet X520 10GbE Dual Port KX4-KR Mezz + +pci:v00008086d000010F9* + ID_MODEL_FROM_DATABASE=82599EB 10 Gigabit CX4 Dual Port Network Connection + +pci:v00008086d000010FB* + ID_MODEL_FROM_DATABASE=82599EB 10-Gigabit SFI/SFP+ Network Connection + +pci:v00008086d000010FBsv00001028sd00001F72* + ID_MODEL_FROM_DATABASE=Ethernet 10G 4P X520/I350 rNDC + +pci:v00008086d000010FBsv0000103Csd000017D0* + ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 560FLR-SFP+ Adapter + +pci:v00008086d000010FBsv0000103Csd000017D2* + ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 560M Adapter + +pci:v00008086d000010FBsv0000103Csd000017D3* + ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 560SFP+ Adapter + +pci:v00008086d000010FBsv0000103Csd0000211B* + ID_MODEL_FROM_DATABASE=Ethernet 10Gb 1-port P560FLR-SFP+ Adapter + +pci:v00008086d000010FBsv0000103Csd00002147* + ID_MODEL_FROM_DATABASE=Ethernet 10Gb 1-port 561i Adapter + +pci:v00008086d000010FBsv0000108Esd00007B11* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-2 + +pci:v00008086d000010FBsv00001734sd000011A9* + ID_MODEL_FROM_DATABASE=10 Gigabit Dual Port Network Connection + +pci:v00008086d000010FBsv00008086sd00000002* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-DA2 + +pci:v00008086d000010FBsv00008086sd00000003* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-2 + +pci:v00008086d000010FBsv00008086sd00000006* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-1 + +pci:v00008086d000010FBsv00008086sd0000000A* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-1 + +pci:v00008086d000010FBsv00008086sd0000000C* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-2 + +pci:v00008086d000010FBsv00008086sd00007A11* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-2 + +pci:v00008086d000010FBsv00008086sd00007A12* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-2 + +pci:v00008086d000010FC* + ID_MODEL_FROM_DATABASE=82599EB 10-Gigabit XAUI/BX4 Network Connection + +pci:v00008086d000010FE* + ID_MODEL_FROM_DATABASE=82552 10/100 Network Connection + +pci:v00008086d00001107* + ID_MODEL_FROM_DATABASE=PRO/1000 MF Server Adapter (LX) + +pci:v00008086d00001130* + ID_MODEL_FROM_DATABASE=82815 815 Chipset Host Bridge and Memory Controller Hub + +pci:v00008086d00001130sv00001025sd00001016* + ID_MODEL_FROM_DATABASE=Travelmate 612 TX + +pci:v00008086d00001130sv00001043sd00008027* + ID_MODEL_FROM_DATABASE=TUSL2-C Mainboard + +pci:v00008086d00001130sv0000104Dsd000080DF* + ID_MODEL_FROM_DATABASE=Vaio PCG-FX403 + +pci:v00008086d00001130sv00008086sd00004532* + ID_MODEL_FROM_DATABASE=D815EEA2 mainboard + +pci:v00008086d00001130sv00008086sd00004557* + ID_MODEL_FROM_DATABASE=D815EGEW Mainboard + +pci:v00008086d00001131* + ID_MODEL_FROM_DATABASE=82815 815 Chipset AGP Bridge + +pci:v00008086d00001132* + ID_MODEL_FROM_DATABASE=82815 Chipset Graphics Controller (CGC) + +pci:v00008086d00001132sv00001025sd00001016* + ID_MODEL_FROM_DATABASE=Travelmate 612 TX + +pci:v00008086d00001132sv0000103Csd00002001* + ID_MODEL_FROM_DATABASE=e-pc 40 + +pci:v00008086d00001132sv0000104Dsd000080DF* + ID_MODEL_FROM_DATABASE=Vaio PCG-FX403 + +pci:v00008086d00001132sv00008086sd00004532* + ID_MODEL_FROM_DATABASE=D815EEA2 Mainboard + +pci:v00008086d00001132sv00008086sd00004541* + ID_MODEL_FROM_DATABASE=D815EEA Motherboard + +pci:v00008086d00001132sv00008086sd00004557* + ID_MODEL_FROM_DATABASE=D815EGEW Mainboard + +pci:v00008086d00001161* + ID_MODEL_FROM_DATABASE=82806AA PCI64 Hub Advanced Programmable Interrupt Controller + +pci:v00008086d00001161sv00008086sd00001161* + ID_MODEL_FROM_DATABASE=82806AA PCI64 Hub APIC + +pci:v00008086d00001162* + ID_MODEL_FROM_DATABASE=Xscale 80200 Big Endian Companion Chip + +pci:v00008086d00001200* + ID_MODEL_FROM_DATABASE=IXP1200 Network Processor + +pci:v00008086d00001200sv0000172Asd00000000* + ID_MODEL_FROM_DATABASE=AEP SSL Accelerator + +pci:v00008086d00001209* + ID_MODEL_FROM_DATABASE=8255xER/82551IT Fast Ethernet Controller + +pci:v00008086d00001209sv0000140Bsd00000610* + ID_MODEL_FROM_DATABASE=PMC610 quad Ethernet board + +pci:v00008086d00001209sv00004C53sd00001050* + ID_MODEL_FROM_DATABASE=CT7 mainboard + +pci:v00008086d00001209sv00004C53sd00001051* + ID_MODEL_FROM_DATABASE=CE7 mainboard + +pci:v00008086d00001209sv00004C53sd00001070* + ID_MODEL_FROM_DATABASE=PC6 mainboard + +pci:v00008086d00001221* + ID_MODEL_FROM_DATABASE=82092AA PCI to PCMCIA Bridge + +pci:v00008086d00001222* + ID_MODEL_FROM_DATABASE=82092AA IDE Controller + +pci:v00008086d00001223* + ID_MODEL_FROM_DATABASE=SAA7116 + +pci:v00008086d00001225* + ID_MODEL_FROM_DATABASE=82452KX/GX [Orion] + +pci:v00008086d00001226* + ID_MODEL_FROM_DATABASE=82596 PRO/10 PCI + +pci:v00008086d00001227* + ID_MODEL_FROM_DATABASE=82865 EtherExpress PRO/100A + +pci:v00008086d00001228* + ID_MODEL_FROM_DATABASE=82556 EtherExpress PRO/100 Smart + +pci:v00008086d00001229* + ID_MODEL_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 + +pci:v00008086d00001229sv00000E11sd00003001* + ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN* + +pci:v00008086d00001229sv00000E11sd00003002* + ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN* + +pci:v00008086d00001229sv00000E11sd00003003* + ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN* + +pci:v00008086d00001229sv00000E11sd00003004* + ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN* + +pci:v00008086d00001229sv00000E11sd00003005* + ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN* + +pci:v00008086d00001229sv00000E11sd00003006* + ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN* + +pci:v00008086d00001229sv00000E11sd00003007* + ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN* + +pci:v00008086d00001229sv00000E11sd0000B01E* + ID_MODEL_FROM_DATABASE=NC3120 Fast Ethernet NIC + +pci:v00008086d00001229sv00000E11sd0000B01F* + ID_MODEL_FROM_DATABASE=NC3122 Fast Ethernet NIC (dual port) + +pci:v00008086d00001229sv00000E11sd0000B02F* + ID_MODEL_FROM_DATABASE=NC1120 Ethernet NIC + +pci:v00008086d00001229sv00000E11sd0000B04A* + ID_MODEL_FROM_DATABASE=Netelligent 10/100TX NIC with Wake on LAN + +pci:v00008086d00001229sv00000E11sd0000B0C6* + ID_MODEL_FROM_DATABASE=NC3161 Fast Ethernet NIC (embedded, WOL) + +pci:v00008086d00001229sv00000E11sd0000B0C7* + ID_MODEL_FROM_DATABASE=NC3160 Fast Ethernet NIC (embedded) + +pci:v00008086d00001229sv00000E11sd0000B0D7* + ID_MODEL_FROM_DATABASE=NC3121 Fast Ethernet NIC (WOL) + +pci:v00008086d00001229sv00000E11sd0000B0DD* + ID_MODEL_FROM_DATABASE=NC3131 Fast Ethernet NIC (dual port) + +pci:v00008086d00001229sv00000E11sd0000B0DE* + ID_MODEL_FROM_DATABASE=NC3132 Fast Ethernet Module (dual port) + +pci:v00008086d00001229sv00000E11sd0000B0E1* + ID_MODEL_FROM_DATABASE=NC3133 Fast Ethernet Module (100-FX) + +pci:v00008086d00001229sv00000E11sd0000B134* + ID_MODEL_FROM_DATABASE=NC3163 Fast Ethernet NIC (embedded, WOL) + +pci:v00008086d00001229sv00000E11sd0000B13C* + ID_MODEL_FROM_DATABASE=NC3162 Fast Ethernet NIC (embedded) + +pci:v00008086d00001229sv00000E11sd0000B144* + ID_MODEL_FROM_DATABASE=NC3123 Fast Ethernet NIC (WOL) + +pci:v00008086d00001229sv00000E11sd0000B163* + ID_MODEL_FROM_DATABASE=NC3134 Fast Ethernet NIC (dual port) + +pci:v00008086d00001229sv00000E11sd0000B164* + ID_MODEL_FROM_DATABASE=NC3135 Fast Ethernet Upgrade Module (dual port) + +pci:v00008086d00001229sv00000E11sd0000B1A4* + ID_MODEL_FROM_DATABASE=NC7131 Gigabit Server Adapter + +pci:v00008086d00001229sv00001014sd0000005C* + ID_MODEL_FROM_DATABASE=82558B Ethernet Pro 10/100 + +pci:v00008086d00001229sv00001014sd000001BC* + ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LAN On Motherboard + +pci:v00008086d00001229sv00001014sd000001F1* + ID_MODEL_FROM_DATABASE=10/100 Ethernet Server Adapter + +pci:v00008086d00001229sv00001014sd000001F2* + ID_MODEL_FROM_DATABASE=10/100 Ethernet Server Adapter + +pci:v00008086d00001229sv00001014sd00000207* + ID_MODEL_FROM_DATABASE=Ethernet Pro/100 S + +pci:v00008086d00001229sv00001014sd00000232* + ID_MODEL_FROM_DATABASE=10/100 Dual Port Server Adapter + +pci:v00008086d00001229sv00001014sd0000023A* + ID_MODEL_FROM_DATABASE=ThinkPad R30 + +pci:v00008086d00001229sv00001014sd0000105C* + ID_MODEL_FROM_DATABASE=Netfinity 10/100 + +pci:v00008086d00001229sv00001014sd00002205* + ID_MODEL_FROM_DATABASE=ThinkPad A22p + +pci:v00008086d00001229sv00001014sd0000305C* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Management Adapter + +pci:v00008086d00001229sv00001014sd0000405C* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Adapter with Alert on LAN + +pci:v00008086d00001229sv00001014sd0000505C* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Secure Management Adapter + +pci:v00008086d00001229sv00001014sd0000605C* + ID_MODEL_FROM_DATABASE=10/100 EtherJet Secure Management Adapter + +pci:v00008086d00001229sv00001014sd0000705C* + ID_MODEL_FROM_DATABASE=10/100 Netfinity 10/100 Ethernet Security Adapter + +pci:v00008086d00001229sv00001014sd0000805C* + ID_MODEL_FROM_DATABASE=10/100 Netfinity 10/100 Ethernet Security Adapter + +pci:v00008086d00001229sv00001028sd0000009B* + ID_MODEL_FROM_DATABASE=10/100 Ethernet Server Adapter + +pci:v00008086d00001229sv00001028sd000000CE* + ID_MODEL_FROM_DATABASE=10/100 Ethernet Server Adapter + +pci:v00008086d00001229sv00001033sd00008000* + ID_MODEL_FROM_DATABASE=PC-9821X-B06 + +pci:v00008086d00001229sv00001033sd00008016* + ID_MODEL_FROM_DATABASE=PK-UG-X006 + +pci:v00008086d00001229sv00001033sd0000801F* + ID_MODEL_FROM_DATABASE=PK-UG-X006 + +pci:v00008086d00001229sv00001033sd00008026* + ID_MODEL_FROM_DATABASE=PK-UG-X006 + +pci:v00008086d00001229sv00001033sd00008063* + ID_MODEL_FROM_DATABASE=82559-based Fast Ethernet Adapter + +pci:v00008086d00001229sv00001033sd00008064* + ID_MODEL_FROM_DATABASE=82559-based Fast Ethernet Adapter + +pci:v00008086d00001229sv0000103Csd000010C0* + ID_MODEL_FROM_DATABASE=NetServer 10/100TX + +pci:v00008086d00001229sv0000103Csd000010C3* + ID_MODEL_FROM_DATABASE=NetServer 10/100TX + +pci:v00008086d00001229sv0000103Csd000010CA* + ID_MODEL_FROM_DATABASE=NetServer 10/100TX + +pci:v00008086d00001229sv0000103Csd000010CB* + ID_MODEL_FROM_DATABASE=NetServer 10/100TX + +pci:v00008086d00001229sv0000103Csd000010E3* + ID_MODEL_FROM_DATABASE=NetServer 10/100TX + +pci:v00008086d00001229sv0000103Csd000010E4* + ID_MODEL_FROM_DATABASE=NetServer 10/100TX + +pci:v00008086d00001229sv0000103Csd00001200* + ID_MODEL_FROM_DATABASE=NetServer 10/100TX + +pci:v00008086d00001229sv0000108Esd000010CF* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100(B) + +pci:v00008086d00001229sv000010C3sd00001100* + ID_MODEL_FROM_DATABASE=SmartEther100 SC1100 + +pci:v00008086d00001229sv000010CFsd00001115* + ID_MODEL_FROM_DATABASE=8255x-based Ethernet Adapter (10/100) + +pci:v00008086d00001229sv000010CFsd00001143* + ID_MODEL_FROM_DATABASE=8255x-based Ethernet Adapter (10/100) + +pci:v00008086d00001229sv0000110Asd0000008B* + ID_MODEL_FROM_DATABASE=82551QM Fast Ethernet Multifuction PCI/CardBus Controller + +pci:v00008086d00001229sv0000114Asd00000582* + ID_MODEL_FROM_DATABASE=PC8 onboard ethernet ETH2 + +pci:v00008086d00001229sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=8255x-based Ethernet Adapter (10/100) + +pci:v00008086d00001229sv00001179sd00000002* + ID_MODEL_FROM_DATABASE=PCI FastEther LAN on Docker + +pci:v00008086d00001229sv00001179sd00000003* + ID_MODEL_FROM_DATABASE=8255x-based Fast Ethernet + +pci:v00008086d00001229sv00001259sd00002560* + ID_MODEL_FROM_DATABASE=AT-2560 100 + +pci:v00008086d00001229sv00001259sd00002561* + ID_MODEL_FROM_DATABASE=AT-2560 100 FX Ethernet Adapter + +pci:v00008086d00001229sv00001266sd00000001* + ID_MODEL_FROM_DATABASE=NE10/100 Adapter + +pci:v00008086d00001229sv000013E9sd00001000* + ID_MODEL_FROM_DATABASE=6221L-4U + +pci:v00008086d00001229sv0000144Dsd00002501* + ID_MODEL_FROM_DATABASE=SEM-2000 MiniPCI LAN Adapter + +pci:v00008086d00001229sv0000144Dsd00002502* + ID_MODEL_FROM_DATABASE=SEM-2100IL MiniPCI LAN Adapter + +pci:v00008086d00001229sv00001668sd00001100* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem) + +pci:v00008086d00001229sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d00001229sv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d00001229sv00004C53sd00001080* + ID_MODEL_FROM_DATABASE=CT8 mainboard + +pci:v00008086d00001229sv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v00008086d00001229sv00008086sd00000001* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100B (TX) + +pci:v00008086d00001229sv00008086sd00000002* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100B (T4) + +pci:v00008086d00001229sv00008086sd00000003* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/10+ + +pci:v00008086d00001229sv00008086sd00000004* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 WfM + +pci:v00008086d00001229sv00008086sd00000005* + ID_MODEL_FROM_DATABASE=82557 10/100 + +pci:v00008086d00001229sv00008086sd00000006* + ID_MODEL_FROM_DATABASE=82557 10/100 with Wake on LAN + +pci:v00008086d00001229sv00008086sd00000007* + ID_MODEL_FROM_DATABASE=82558 10/100 Adapter + +pci:v00008086d00001229sv00008086sd00000008* + ID_MODEL_FROM_DATABASE=82558 10/100 with Wake on LAN + +pci:v00008086d00001229sv00008086sd00000009* + ID_MODEL_FROM_DATABASE=82558B PRO/100+ PCI (TP) + +pci:v00008086d00001229sv00008086sd0000000A* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Management Adapter + +pci:v00008086d00001229sv00008086sd0000000B* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ + +pci:v00008086d00001229sv00008086sd0000000C* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Management Adapter + +pci:v00008086d00001229sv00008086sd0000000D* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Alert On LAN II* Adapter + +pci:v00008086d00001229sv00008086sd0000000E* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Management Adapter with Alert On LAN* + +pci:v00008086d00001229sv00008086sd0000000F* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Desktop Adapter + +pci:v00008086d00001229sv00008086sd00000010* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Management Adapter + +pci:v00008086d00001229sv00008086sd00000011* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Management Adapter + +pci:v00008086d00001229sv00008086sd00000012* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Advanced Management Adapter (D) + +pci:v00008086d00001229sv00008086sd00000013* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Advanced Management Adapter (E) + +pci:v00008086d00001229sv00008086sd00000030* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Management Adapter with Alert On LAN* GC + +pci:v00008086d00001229sv00008086sd00000031* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Desktop Adapter + +pci:v00008086d00001229sv00008086sd00000040* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Desktop Adapter + +pci:v00008086d00001229sv00008086sd00000041* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Desktop Adapter + +pci:v00008086d00001229sv00008086sd00000042* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Desktop Adapter + +pci:v00008086d00001229sv00008086sd00000050* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Desktop Adapter + +pci:v00008086d00001229sv00008086sd00001009* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Server Adapter + +pci:v00008086d00001229sv00008086sd0000100C* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Server Adapter (PILA8470B) + +pci:v00008086d00001229sv00008086sd00001012* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter (D) + +pci:v00008086d00001229sv00008086sd00001013* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter (E) + +pci:v00008086d00001229sv00008086sd00001015* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Dual Port Server Adapter + +pci:v00008086d00001229sv00008086sd00001017* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Dual Port Server Adapter + +pci:v00008086d00001229sv00008086sd00001030* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server + +pci:v00008086d00001229sv00008086sd00001040* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter + +pci:v00008086d00001229sv00008086sd00001041* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter + +pci:v00008086d00001229sv00008086sd00001042* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Server Adapter + +pci:v00008086d00001229sv00008086sd00001050* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter + +pci:v00008086d00001229sv00008086sd00001051* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Server Adapter + +pci:v00008086d00001229sv00008086sd00001052* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Server Adapter + +pci:v00008086d00001229sv00008086sd000010F0* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ Dual Port Adapter + +pci:v00008086d00001229sv00008086sd00001229* + ID_MODEL_FROM_DATABASE=82557/8/9 [Ethernet Pro 100] + +pci:v00008086d00001229sv00008086sd00002009* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Mobile Adapter + +pci:v00008086d00001229sv00008086sd0000200D* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Cardbus + +pci:v00008086d00001229sv00008086sd0000200E* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 LAN+V90 Cardbus Modem + +pci:v00008086d00001229sv00008086sd0000200F* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SR Mobile Adapter + +pci:v00008086d00001229sv00008086sd00002010* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Mobile Combo Adapter + +pci:v00008086d00001229sv00008086sd00002013* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SR Mobile Combo Adapter + +pci:v00008086d00001229sv00008086sd00002016* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Mobile Adapter + +pci:v00008086d00001229sv00008086sd00002017* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Combo Mobile Adapter + +pci:v00008086d00001229sv00008086sd00002018* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SR Mobile Adapter + +pci:v00008086d00001229sv00008086sd00002019* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SR Combo Mobile Adapter + +pci:v00008086d00001229sv00008086sd00002101* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 P Mobile Adapter + +pci:v00008086d00001229sv00008086sd00002102* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Adapter + +pci:v00008086d00001229sv00008086sd00002103* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Adapter + +pci:v00008086d00001229sv00008086sd00002104* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Adapter + +pci:v00008086d00001229sv00008086sd00002105* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Adapter + +pci:v00008086d00001229sv00008086sd00002106* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 P Mobile Adapter + +pci:v00008086d00001229sv00008086sd00002107* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Network Connection + +pci:v00008086d00001229sv00008086sd00002108* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Network Connection + +pci:v00008086d00001229sv00008086sd00002200* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 P Mobile Combo Adapter + +pci:v00008086d00001229sv00008086sd00002201* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 P Mobile Combo Adapter + +pci:v00008086d00001229sv00008086sd00002202* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Combo Adapter + +pci:v00008086d00001229sv00008086sd00002203* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI + +pci:v00008086d00001229sv00008086sd00002204* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI + +pci:v00008086d00001229sv00008086sd00002205* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Combo Adapter + +pci:v00008086d00001229sv00008086sd00002206* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Combo Adapter + +pci:v00008086d00001229sv00008086sd00002207* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Combo Adapter + +pci:v00008086d00001229sv00008086sd00002208* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 P Mobile Combo Adapter + +pci:v00008086d00001229sv00008086sd00002402* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI + +pci:v00008086d00001229sv00008086sd00002407* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI + +pci:v00008086d00001229sv00008086sd00002408* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI + +pci:v00008086d00001229sv00008086sd00002409* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI + +pci:v00008086d00001229sv00008086sd0000240F* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI + +pci:v00008086d00001229sv00008086sd00002410* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI + +pci:v00008086d00001229sv00008086sd00002411* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI + +pci:v00008086d00001229sv00008086sd00002412* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI + +pci:v00008086d00001229sv00008086sd00002413* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI + +pci:v00008086d00001229sv00008086sd00003000* + ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LAN on Motherboard + +pci:v00008086d00001229sv00008086sd00003001* + ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Basic Alert on LAN* + +pci:v00008086d00001229sv00008086sd00003002* + ID_MODEL_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN II* + +pci:v00008086d00001229sv00008086sd00003006* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Network Connection + +pci:v00008086d00001229sv00008086sd00003007* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Network Connection + +pci:v00008086d00001229sv00008086sd00003008* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Network Connection + +pci:v00008086d00001229sv00008086sd00003010* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Network Connection + +pci:v00008086d00001229sv00008086sd00003011* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 S Network Connection + +pci:v00008086d00001229sv00008086sd00003012* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Network Connection + +pci:v00008086d00001229sv00008086sd0000301A* + ID_MODEL_FROM_DATABASE=S845WD1-E mainboard + +pci:v00008086d00001229sv00008086sd00003411* + ID_MODEL_FROM_DATABASE=SDS2 Mainboard + +pci:v00008086d0000122D* + ID_MODEL_FROM_DATABASE=430FX - 82437FX TSC [Triton I] + +pci:v00008086d0000122E* + ID_MODEL_FROM_DATABASE=82371FB PIIX ISA [Triton I] + +pci:v00008086d00001230* + ID_MODEL_FROM_DATABASE=82371FB PIIX IDE [Triton I] + +pci:v00008086d00001231* + ID_MODEL_FROM_DATABASE=DSVD Modem + +pci:v00008086d00001234* + ID_MODEL_FROM_DATABASE=430MX - 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX) + +pci:v00008086d00001235* + ID_MODEL_FROM_DATABASE=430MX - 82437MX Mob. System Ctrlr (MTSC) & 82438MX Data Path (MTDP) + +pci:v00008086d00001237* + ID_MODEL_FROM_DATABASE=440FX - 82441FX PMC [Natoma] + +pci:v00008086d00001237sv00001AF4sd00001100* + ID_MODEL_FROM_DATABASE=Qemu virtual machine + +pci:v00008086d00001239* + ID_MODEL_FROM_DATABASE=82371FB PIIX IDE Interface + +pci:v00008086d0000123B* + ID_MODEL_FROM_DATABASE=82380PB PCI to PCI Docking Bridge + +pci:v00008086d0000123C* + ID_MODEL_FROM_DATABASE=82380AB (MISA) Mobile PCI-to-ISA Bridge + +pci:v00008086d0000123D* + ID_MODEL_FROM_DATABASE=683053 Programmable Interrupt Device + +pci:v00008086d0000123E* + ID_MODEL_FROM_DATABASE=82466GX (IHPC) Integrated Hot-Plug Controller (hidden mode) + +pci:v00008086d0000123F* + ID_MODEL_FROM_DATABASE=82466GX Integrated Hot-Plug Controller (IHPC) + +pci:v00008086d00001240* + ID_MODEL_FROM_DATABASE=82752 (752) AGP Graphics Accelerator + +pci:v00008086d0000124B* + ID_MODEL_FROM_DATABASE=82380FB (MPCI2) Mobile Docking Controller + +pci:v00008086d00001250* + ID_MODEL_FROM_DATABASE=430HX - 82439HX TXC [Triton II] + +pci:v00008086d00001360* + ID_MODEL_FROM_DATABASE=82806AA PCI64 Hub PCI Bridge + +pci:v00008086d00001361* + ID_MODEL_FROM_DATABASE=82806AA PCI64 Hub Controller (HRes) + +pci:v00008086d00001361sv00008086sd00001361* + ID_MODEL_FROM_DATABASE=82806AA PCI64 Hub Controller (HRes) + +pci:v00008086d00001361sv00008086sd00008000* + ID_MODEL_FROM_DATABASE=82806AA PCI64 Hub Controller (HRes) + +pci:v00008086d00001460* + ID_MODEL_FROM_DATABASE=82870P2 P64H2 Hub PCI Bridge + +pci:v00008086d00001461* + ID_MODEL_FROM_DATABASE=82870P2 P64H2 I/OxAPIC + +pci:v00008086d00001461sv000015D9sd00003480* + ID_MODEL_FROM_DATABASE=P4DP6 + +pci:v00008086d00001461sv00004C53sd00001090* + ID_MODEL_FROM_DATABASE=Cx9/Vx9 mainboard + +pci:v00008086d00001462* + ID_MODEL_FROM_DATABASE=82870P2 P64H2 Hot Plug Controller + +pci:v00008086d00001501* + ID_MODEL_FROM_DATABASE=82567V-3 Gigabit Network Connection + +pci:v00008086d00001502* + ID_MODEL_FROM_DATABASE=82579LM Gigabit Network Connection + +pci:v00008086d00001502sv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00008086d00001503* + ID_MODEL_FROM_DATABASE=82579V Gigabit Network Connection + +pci:v00008086d00001503sv00001043sd0000849C* + ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard + +pci:v00008086d00001507* + ID_MODEL_FROM_DATABASE=82599EB 10 Gigabit Network Connection + +pci:v00008086d00001508* + ID_MODEL_FROM_DATABASE=82598EB Gigabit BX Network Connection + +pci:v00008086d0000150A* + ID_MODEL_FROM_DATABASE=82576NS Gigabit Network Connection + +pci:v00008086d0000150B* + ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AT2 Server Adapter + +pci:v00008086d0000150Bsv00008086sd0000A10C* + ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AT2 Server Adapter + +pci:v00008086d0000150Bsv00008086sd0000A11C* + ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AT2 Server Adapter + +pci:v00008086d0000150Bsv00008086sd0000A12C* + ID_MODEL_FROM_DATABASE=82598EB 10-Gigabit AT2 Server Adapter + +pci:v00008086d0000150C* + ID_MODEL_FROM_DATABASE=82583V Gigabit Network Connection + +pci:v00008086d0000150D* + ID_MODEL_FROM_DATABASE=82576 Gigabit Backplane Connection + +pci:v00008086d0000150Dsv00008086sd0000A10C* + ID_MODEL_FROM_DATABASE=Gigabit ET Quad Port Mezzanine Card + +pci:v00008086d0000150E* + ID_MODEL_FROM_DATABASE=82580 Gigabit Network Connection + +pci:v00008086d0000150Esv0000103Csd00001780* + ID_MODEL_FROM_DATABASE=NC365T 4-port Ethernet Server Adapter + +pci:v00008086d0000150Esv00008086sd000012A1* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I340-T4 + +pci:v00008086d0000150Esv00008086sd000012A2* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I340-T4 + +pci:v00008086d0000150F* + ID_MODEL_FROM_DATABASE=82580 Gigabit Fiber Network Connection + +pci:v00008086d00001510* + ID_MODEL_FROM_DATABASE=82580 Gigabit Backplane Connection + +pci:v00008086d00001511* + ID_MODEL_FROM_DATABASE=82580 Gigabit SFP Connection + +pci:v00008086d00001514* + ID_MODEL_FROM_DATABASE=82599EB 10 Gigabit KX4 Network Connection + +pci:v00008086d00001514sv00008086sd0000000B* + ID_MODEL_FROM_DATABASE=Ethernet X520 10GbE Dual Port KX4 Mezz + +pci:v00008086d00001515* + ID_MODEL_FROM_DATABASE=X540 Ethernet Controller Virtual Function + +pci:v00008086d00001516* + ID_MODEL_FROM_DATABASE=82580 Gigabit Network Connection + +pci:v00008086d00001516sv00008086sd000012B1* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I340-T2 + +pci:v00008086d00001516sv00008086sd000012B2* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I340-T2 + +pci:v00008086d00001517* + ID_MODEL_FROM_DATABASE=82599ES 10 Gigabit Network Connection + +pci:v00008086d00001517sv00001137sd0000006A* + ID_MODEL_FROM_DATABASE=UCS CNA M61KR-I Intel Converged Network Adapter + +pci:v00008086d00001518* + ID_MODEL_FROM_DATABASE=82576NS SerDes Gigabit Network Connection + +pci:v00008086d0000151C* + ID_MODEL_FROM_DATABASE=82599EB 10 Gigabit TN Network Connection + +pci:v00008086d0000151Csv0000108Esd00007B13* + ID_MODEL_FROM_DATABASE=Dual 10GBASE-T LP + +pci:v00008086d00001520* + ID_MODEL_FROM_DATABASE=I350 Ethernet Controller Virtual Function + +pci:v00008086d00001521* + ID_MODEL_FROM_DATABASE=I350 Gigabit Network Connection + +pci:v00008086d00001521sv00001028sd00001F60* + ID_MODEL_FROM_DATABASE=Intel GbE 4P I350crNDC + +pci:v00008086d00001521sv00001028sd00001F62* + ID_MODEL_FROM_DATABASE=Intel GbE 2P I350crNDC + +pci:v00008086d00001521sv0000103Csd0000337F* + ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361i Adapter + +pci:v00008086d00001521sv0000103Csd00003380* + ID_MODEL_FROM_DATABASE=Ethernet 1Gb 4-port 366i Adapter + +pci:v00008086d00001521sv0000103Csd0000339E* + ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361T Adapter + +pci:v00008086d00001521sv0000108Esd00007B16* + ID_MODEL_FROM_DATABASE=Quad Port GbE PCIe 2.0 ExpressModule, UTP + +pci:v00008086d00001521sv0000108Esd00007B18* + ID_MODEL_FROM_DATABASE=Quad Port GbE PCIe 2.0 Low Profile Adapter, UTP + +pci:v00008086d00001521sv000010A9sd0000802A* + ID_MODEL_FROM_DATABASE=UV2-BaseIO dual-port GbE + +pci:v00008086d00001521sv00008086sd00000001* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T4 + +pci:v00008086d00001521sv00008086sd00000002* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T2 + +pci:v00008086d00001521sv00008086sd000000A1* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T4 + +pci:v00008086d00001521sv00008086sd000000A2* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T2 + +pci:v00008086d00001521sv00008086sd00005001* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T4 + +pci:v00008086d00001521sv00008086sd00005002* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T2 + +pci:v00008086d00001522* + ID_MODEL_FROM_DATABASE=I350 Gigabit Fiber Network Connection + +pci:v00008086d00001522sv0000108Esd00007B17* + ID_MODEL_FROM_DATABASE=Quad Port GbE PCIe 2.0 ExpressModule, MMF + +pci:v00008086d00001522sv0000108Esd00007B19* + ID_MODEL_FROM_DATABASE=Dual Port GbE PCIe 2.0 Low Profile Adapter, MMF + +pci:v00008086d00001522sv00008086sd00000002* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-T2 + +pci:v00008086d00001522sv00008086sd00000003* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-F4 + +pci:v00008086d00001522sv00008086sd00000004* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-F2 + +pci:v00008086d00001522sv00008086sd000000A3* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-F4 + +pci:v00008086d00001522sv00008086sd000000A4* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I350-F2 + +pci:v00008086d00001523* + ID_MODEL_FROM_DATABASE=I350 Gigabit Backplane Connection + +pci:v00008086d00001523sv0000103Csd00001784* + ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361FLB Adapter + +pci:v00008086d00001523sv0000103Csd000018D1* + ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361FLB Adapter + +pci:v00008086d00001523sv0000103Csd0000339F* + ID_MODEL_FROM_DATABASE=Ethernet 1Gb 4-port 366M Adapter + +pci:v00008086d00001523sv00008086sd00001F52* + ID_MODEL_FROM_DATABASE=1GbE 4P I350 Mezz + +pci:v00008086d00001524* + ID_MODEL_FROM_DATABASE=I350 Gigabit Connection + +pci:v00008086d00001525* + ID_MODEL_FROM_DATABASE=82567V-4 Gigabit Network Connection + +pci:v00008086d00001526* + ID_MODEL_FROM_DATABASE=82576 Gigabit Network Connection + +pci:v00008086d00001526sv00008086sd0000A05C* + ID_MODEL_FROM_DATABASE=Gigabit ET2 Quad Port Server Adapter + +pci:v00008086d00001526sv00008086sd0000A06C* + ID_MODEL_FROM_DATABASE=Gigabit ET2 Quad Port Server Adapter + +pci:v00008086d00001527* + ID_MODEL_FROM_DATABASE=82580 Gigabit Fiber Network Connection + +pci:v00008086d00001527sv00008086sd00000001* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I340-F4 + +pci:v00008086d00001527sv00008086sd00000002* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I340-F4 + +pci:v00008086d00001528* + ID_MODEL_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 + +pci:v00008086d00001528sv00001028sd00001F61* + ID_MODEL_FROM_DATABASE=Ethernet 10G 4P X540/I350 rNDC + +pci:v00008086d00001528sv0000103Csd0000192D* + ID_MODEL_FROM_DATABASE=561FLR-T 2-port 10Gb Ethernet Adapter + +pci:v00008086d00001528sv0000103Csd0000211A* + ID_MODEL_FROM_DATABASE=Ethernet 10Gb 2-port 561T Adapter + +pci:v00008086d00001528sv0000108Esd00007B14* + ID_MODEL_FROM_DATABASE=Sun Dual Port 10 GbE PCIe 2.0 ExpressModule, Base-T + +pci:v00008086d00001528sv0000108Esd00007B15* + ID_MODEL_FROM_DATABASE=Sun Dual Port 10 GbE PCIe 2.0 Low Profile Adapter, Base-T + +pci:v00008086d00001528sv00001137sd000000BF* + ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X540-T2 + +pci:v00008086d00001528sv00008086sd00000001* + ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X540-T2 + +pci:v00008086d00001528sv00008086sd00000002* + ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X540-T1 + +pci:v00008086d00001528sv00008086sd0000001A* + ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X540-T2 + +pci:v00008086d00001528sv00008086sd000000A2* + ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X540-T1 + +pci:v00008086d00001528sv00008086sd00001F61* + ID_MODEL_FROM_DATABASE=Ethernet 10G 4P X540/I350 rNDC + +pci:v00008086d00001528sv00008086sd00005003* + ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X540-t Adapter + +pci:v00008086d00001529* + ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection with FCoE + +pci:v00008086d0000152A* + ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual port Network Connection with FCoE + +pci:v00008086d00001533* + ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection + +pci:v00008086d00001533sv0000103Csd00000003* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I210-T1 + +pci:v00008086d00001533sv00008086sd00000001* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I210-T1 + +pci:v00008086d00001533sv00008086sd00000002* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter I210-T1 + +pci:v00008086d00001534* + ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection + +pci:v00008086d00001536* + ID_MODEL_FROM_DATABASE=I210 Gigabit Fiber Network Connection + +pci:v00008086d00001537* + ID_MODEL_FROM_DATABASE=I210 Gigabit Backplane Connection + +pci:v00008086d00001538* + ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection + +pci:v00008086d00001539* + ID_MODEL_FROM_DATABASE=I211 Gigabit Network Connection + +pci:v00008086d0000153A* + ID_MODEL_FROM_DATABASE=Ethernet Connection I217-LM + +pci:v00008086d0000153B* + ID_MODEL_FROM_DATABASE=Ethernet Connection I217-V + +pci:v00008086d00001547* + ID_MODEL_FROM_DATABASE=DSL3510 Thunderbolt Port [Cactus Ridge] + +pci:v00008086d00001549* + ID_MODEL_FROM_DATABASE=DSL3510 Thunderbolt Controller [Cactus Ridge] + +pci:v00008086d0000154A* + ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-4 + +pci:v00008086d0000154Asv00008086sd0000011A* + ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X520-4 + +pci:v00008086d0000154Asv00008086sd0000011B* + ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X520-4 + +pci:v00008086d0000154Asv00008086sd0000011C* + ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X520-4 + +pci:v00008086d0000154D* + ID_MODEL_FROM_DATABASE=82599EB 10-Gigabit SFP+ Network Connection + +pci:v00008086d0000154Dsv00008086sd00007B11* + ID_MODEL_FROM_DATABASE=10GbE 2P X520 Adapter + +pci:v00008086d00001557* + ID_MODEL_FROM_DATABASE=82599 10 Gigabit Network Connection + +pci:v00008086d00001559* + ID_MODEL_FROM_DATABASE=Ethernet Connection I218-V + +pci:v00008086d0000155A* + ID_MODEL_FROM_DATABASE=Ethernet Connection I218-LM + +pci:v00008086d00001560* + ID_MODEL_FROM_DATABASE=Ethernet Controller X540-AT1 + +pci:v00008086d00001960* + ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor + +pci:v00008086d00001960sv0000101Esd00000431* + ID_MODEL_FROM_DATABASE=MegaRAID 431 RAID Controller + +pci:v00008086d00001960sv0000101Esd00000438* + ID_MODEL_FROM_DATABASE=MegaRAID 438 Ultra2 LVD RAID Controller + +pci:v00008086d00001960sv0000101Esd00000466* + ID_MODEL_FROM_DATABASE=MegaRAID 466 Express Plus RAID Controller + +pci:v00008086d00001960sv0000101Esd00000467* + ID_MODEL_FROM_DATABASE=MegaRAID 467 Enterprise 1500 RAID Controller + +pci:v00008086d00001960sv0000101Esd00000490* + ID_MODEL_FROM_DATABASE=MegaRAID 490 Express 300 RAID Controller + +pci:v00008086d00001960sv0000101Esd00000762* + ID_MODEL_FROM_DATABASE=MegaRAID 762 Express RAID Controller + +pci:v00008086d00001960sv0000101Esd000009A0* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/SC + +pci:v00008086d00001960sv00001028sd00000467* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/DC + +pci:v00008086d00001960sv00001028sd00001111* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/SC + +pci:v00008086d00001960sv0000103Csd000003A2* + ID_MODEL_FROM_DATABASE=MegaRAID + +pci:v00008086d00001960sv0000103Csd000010C6* + ID_MODEL_FROM_DATABASE=MegaRAID 438, NetRAID-3Si + +pci:v00008086d00001960sv0000103Csd000010C7* + ID_MODEL_FROM_DATABASE=MegaRAID T5, Integrated NetRAID + +pci:v00008086d00001960sv0000103Csd000010CC* + ID_MODEL_FROM_DATABASE=MegaRAID, Integrated NetRAID + +pci:v00008086d00001960sv0000103Csd000010CD* + ID_MODEL_FROM_DATABASE=NetRAID-1Si + +pci:v00008086d00001960sv0000105Asd00000000* + ID_MODEL_FROM_DATABASE=SuperTrak + +pci:v00008086d00001960sv0000105Asd00002168* + ID_MODEL_FROM_DATABASE=SuperTrak Pro + +pci:v00008086d00001960sv0000105Asd00005168* + ID_MODEL_FROM_DATABASE=SuperTrak66/100 + +pci:v00008086d00001960sv00001111sd00001111* + ID_MODEL_FROM_DATABASE=MegaRAID 466, PowerEdge Expandable RAID Controller 2/SC + +pci:v00008086d00001960sv00001111sd00001112* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/SC + +pci:v00008086d00001960sv0000113Csd000003A2* + ID_MODEL_FROM_DATABASE=MegaRAID + +pci:v00008086d00001960sv0000E4BFsd00001010* + ID_MODEL_FROM_DATABASE=CG1-RADIO + +pci:v00008086d00001960sv0000E4BFsd00001020* + ID_MODEL_FROM_DATABASE=CU2-QUARTET + +pci:v00008086d00001960sv0000E4BFsd00001040* + ID_MODEL_FROM_DATABASE=CU1-CHORUS + +pci:v00008086d00001960sv0000E4BFsd00003100* + ID_MODEL_FROM_DATABASE=CX1-BAND + +pci:v00008086d00001962* + ID_MODEL_FROM_DATABASE=80960RM (i960RM) Microprocessor + +pci:v00008086d00001962sv0000105Asd00000000* + ID_MODEL_FROM_DATABASE=SuperTrak SX6000 I2O CPU + +pci:v00008086d00001A21* + ID_MODEL_FROM_DATABASE=82840 840 [Carmel] Chipset Host Bridge (Hub A) + +pci:v00008086d00001A23* + ID_MODEL_FROM_DATABASE=82840 840 [Carmel] Chipset AGP Bridge + +pci:v00008086d00001A24* + ID_MODEL_FROM_DATABASE=82840 840 [Carmel] Chipset PCI Bridge (Hub B) + +pci:v00008086d00001A30* + ID_MODEL_FROM_DATABASE=82845 845 [Brookdale] Chipset Host Bridge + +pci:v00008086d00001A30sv00001028sd0000010E* + ID_MODEL_FROM_DATABASE=Optiplex GX240 + +pci:v00008086d00001A30sv000015D9sd00003280* + ID_MODEL_FROM_DATABASE=Supermicro P4SBE Mainboard + +pci:v00008086d00001A31* + ID_MODEL_FROM_DATABASE=82845 845 [Brookdale] Chipset AGP Bridge + +pci:v00008086d00001A38* + ID_MODEL_FROM_DATABASE=5000 Series Chipset DMA Engine + +pci:v00008086d00001A38sv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d00001A38sv00008086sd00003476* + ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board + +pci:v00008086d00001A48* + ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller + +pci:v00008086d00001A48sv00008086sd0000A01F* + ID_MODEL_FROM_DATABASE=PRO/10GbE SR Server Adapter + +pci:v00008086d00001A48sv00008086sd0000A11F* + ID_MODEL_FROM_DATABASE=PRO/10GbE SR Server Adapter + +pci:v00008086d00001B48* + ID_MODEL_FROM_DATABASE=82597EX 10GbE Ethernet Controller + +pci:v00008086d00001B48sv00008086sd0000A01F* + ID_MODEL_FROM_DATABASE=PRO/10GbE LR Server Adapter + +pci:v00008086d00001B48sv00008086sd0000A11F* + ID_MODEL_FROM_DATABASE=PRO/10GbE LR Server Adapter + +pci:v00008086d00001C00* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 4 port SATA IDE Controller + +pci:v00008086d00001C01* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 4 port SATA IDE Controller + +pci:v00008086d00001C02* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SATA AHCI Controller + +pci:v00008086d00001C02sv00001028sd000004AA* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v00008086d00001C02sv00001043sd0000844D* + ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard + +pci:v00008086d00001C03* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller + +pci:v00008086d00001C03sv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00008086d00001C03sv00001028sd000004B2* + ID_MODEL_FROM_DATABASE=Vostro 3350 + +pci:v00008086d00001C03sv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v00008086d00001C03sv00008086sd00007270* + ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00001C04* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SATA RAID Controller + +pci:v00008086d00001C05* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SATA RAID Controller + +pci:v00008086d00001C08* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 2 port SATA IDE Controller + +pci:v00008086d00001C09* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family 2 port SATA IDE Controller + +pci:v00008086d00001C10* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 1 + +pci:v00008086d00001C10sv00001028sd000004AA* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v00008086d00001C10sv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v00008086d00001C10sv00008086sd00007270* + ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00001C12* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 2 + +pci:v00008086d00001C12sv00001028sd000004AA* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v00008086d00001C12sv00008086sd00007270* + ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00001C14* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 3 + +pci:v00008086d00001C14sv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v00008086d00001C14sv00008086sd00007270* + ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00001C16* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 4 + +pci:v00008086d00001C16sv00001028sd000004AA* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v00008086d00001C18* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 5 + +pci:v00008086d00001C18sv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v00008086d00001C1A* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 6 + +pci:v00008086d00001C1Asv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v00008086d00001C1C* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 7 + +pci:v00008086d00001C1E* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 8 + +pci:v00008086d00001C20* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller + +pci:v00008086d00001C20sv00001028sd00000490* + ID_MODEL_FROM_DATABASE=Alienware M17x R3 + +pci:v00008086d00001C20sv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00008086d00001C20sv00001028sd000004AA* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v00008086d00001C20sv00001028sd000004B2* + ID_MODEL_FROM_DATABASE=Vostro 3350 + +pci:v00008086d00001C20sv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v00008086d00001C20sv00001043sd00008418* + ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard + +pci:v00008086d00001C20sv00008086sd00002008* + ID_MODEL_FROM_DATABASE=DQ67SW board + +pci:v00008086d00001C20sv00008086sd00007270* + ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00001C22* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family SMBus Controller + +pci:v00008086d00001C22sv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00008086d00001C22sv00001028sd000004AA* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v00008086d00001C22sv00001028sd000004B2* + ID_MODEL_FROM_DATABASE=Vostro 3350 + +pci:v00008086d00001C22sv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v00008086d00001C22sv00001043sd0000844D* + ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard + +pci:v00008086d00001C22sv00008086sd00007270* + ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00001C24* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family Thermal Management Controller + +pci:v00008086d00001C25* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family DMI to PCI Bridge + +pci:v00008086d00001C26* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 + +pci:v00008086d00001C26sv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00008086d00001C26sv00001028sd000004AA* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v00008086d00001C26sv00001028sd000004B2* + ID_MODEL_FROM_DATABASE=Vostro 3350 + +pci:v00008086d00001C26sv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v00008086d00001C26sv00001043sd0000844D* + ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard + +pci:v00008086d00001C26sv00008086sd00007270* + ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00001C27* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Universal Host Controller #1 + +pci:v00008086d00001C27sv00008086sd00007270* + ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00001C2C* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Universal Host Controller #5 + +pci:v00008086d00001C2Csv00008086sd00007270* + ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00001C2D* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 + +pci:v00008086d00001C2Dsv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00008086d00001C2Dsv00001028sd000004AA* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v00008086d00001C2Dsv00001028sd000004B2* + ID_MODEL_FROM_DATABASE=Vostro 3350 + +pci:v00008086d00001C2Dsv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v00008086d00001C2Dsv00001043sd0000844D* + ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard + +pci:v00008086d00001C2Dsv00008086sd00007270* + ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00001C33* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LAN Controller + +pci:v00008086d00001C35* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family VECI Controller + +pci:v00008086d00001C3A* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #1 + +pci:v00008086d00001C3Asv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00008086d00001C3Asv00001028sd000004AA* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v00008086d00001C3Asv00001028sd000004B2* + ID_MODEL_FROM_DATABASE=Vostro 3350 + +pci:v00008086d00001C3Asv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v00008086d00001C3Asv00001043sd0000844D* + ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard + +pci:v00008086d00001C3Asv00008086sd00007270* + ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00001C3B* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #2 + +pci:v00008086d00001C3C* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family IDE-r Controller + +pci:v00008086d00001C3D* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family KT Controller + +pci:v00008086d00001C40* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller + +pci:v00008086d00001C41* + ID_MODEL_FROM_DATABASE=Mobile SFF 6 Series Chipset Family LPC Controller + +pci:v00008086d00001C42* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller + +pci:v00008086d00001C43* + ID_MODEL_FROM_DATABASE=Mobile 6 Series Chipset Family LPC Controller + +pci:v00008086d00001C44* + ID_MODEL_FROM_DATABASE=Z68 Express Chipset Family LPC Controller + +pci:v00008086d00001C45* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller + +pci:v00008086d00001C46* + ID_MODEL_FROM_DATABASE=P67 Express Chipset Family LPC Controller + +pci:v00008086d00001C46sv00001043sd0000844D* + ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard + +pci:v00008086d00001C47* + ID_MODEL_FROM_DATABASE=UM67 Express Chipset Family LPC Controller + +pci:v00008086d00001C48* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller + +pci:v00008086d00001C49* + ID_MODEL_FROM_DATABASE=HM65 Express Chipset Family LPC Controller + +pci:v00008086d00001C49sv00008086sd00007270* + ID_MODEL_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] + +pci:v00008086d00001C4A* + ID_MODEL_FROM_DATABASE=H67 Express Chipset Family LPC Controller + +pci:v00008086d00001C4Asv00001028sd000004AA* + ID_MODEL_FROM_DATABASE=XPS 8300 + +pci:v00008086d00001C4B* + ID_MODEL_FROM_DATABASE=HM67 Express Chipset Family LPC Controller + +pci:v00008086d00001C4Bsv00001028sd000004B2* + ID_MODEL_FROM_DATABASE=Vostro 3350 + +pci:v00008086d00001C4Bsv00001028sd000004DA* + ID_MODEL_FROM_DATABASE=Vostro 3750 + +pci:v00008086d00001C4C* + ID_MODEL_FROM_DATABASE=Q65 Express Chipset Family LPC Controller + +pci:v00008086d00001C4D* + ID_MODEL_FROM_DATABASE=QS67 Express Chipset Family LPC Controller + +pci:v00008086d00001C4E* + ID_MODEL_FROM_DATABASE=Q67 Express Chipset Family LPC Controller + +pci:v00008086d00001C4F* + ID_MODEL_FROM_DATABASE=QM67 Express Chipset Family LPC Controller + +pci:v00008086d00001C4Fsv00001028sd000004A3* + ID_MODEL_FROM_DATABASE=Precision M4600 + +pci:v00008086d00001C50* + ID_MODEL_FROM_DATABASE=B65 Express Chipset Family LPC Controller + +pci:v00008086d00001C51* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller + +pci:v00008086d00001C52* + ID_MODEL_FROM_DATABASE=C202 Chipset Family LPC Controller + +pci:v00008086d00001C53* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller + +pci:v00008086d00001C54* + ID_MODEL_FROM_DATABASE=C204 Chipset Family LPC Controller + +pci:v00008086d00001C55* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller + +pci:v00008086d00001C56* + ID_MODEL_FROM_DATABASE=C206 Chipset Family LPC Controller + +pci:v00008086d00001C57* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller + +pci:v00008086d00001C58* + ID_MODEL_FROM_DATABASE=Upgraded B65 Express Chipset Family LPC Controller + +pci:v00008086d00001C59* + ID_MODEL_FROM_DATABASE=Upgraded HM67 Express Chipset Family LPC Controller + +pci:v00008086d00001C5A* + ID_MODEL_FROM_DATABASE=Upgraded Q67 Express Chipset Family LPC Controller + +pci:v00008086d00001C5B* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller + +pci:v00008086d00001C5C* + ID_MODEL_FROM_DATABASE=H61 Express Chipset Family LPC Controller + +pci:v00008086d00001C5D* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller + +pci:v00008086d00001C5E* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller + +pci:v00008086d00001C5F* + ID_MODEL_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller + +pci:v00008086d00001D00* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset 4-Port SATA IDE Controller + +pci:v00008086d00001D02* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset 6-Port SATA AHCI Controller + +pci:v00008086d00001D04* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller + +pci:v00008086d00001D06* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA Premium RAID Controller + +pci:v00008086d00001D08* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset 2-Port SATA IDE Controller + +pci:v00008086d00001D10* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 1 + +pci:v00008086d00001D11* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 1 + +pci:v00008086d00001D12* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 2 + +pci:v00008086d00001D13* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 2 + +pci:v00008086d00001D14* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 3 + +pci:v00008086d00001D15* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 3 + +pci:v00008086d00001D16* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 4 + +pci:v00008086d00001D17* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 4 + +pci:v00008086d00001D18* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 5 + +pci:v00008086d00001D19* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 5 + +pci:v00008086d00001D1A* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 6 + +pci:v00008086d00001D1B* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 6 + +pci:v00008086d00001D1C* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 7 + +pci:v00008086d00001D1D* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 7 + +pci:v00008086d00001D1E* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 8 + +pci:v00008086d00001D1F* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 8 + +pci:v00008086d00001D20* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset High Definition Audio Controller + +pci:v00008086d00001D22* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset SMBus Host Controller + +pci:v00008086d00001D24* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset Thermal Management Controller + +pci:v00008086d00001D25* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset DMI to PCI Bridge + +pci:v00008086d00001D26* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset USB2 Enhanced Host Controller #1 + +pci:v00008086d00001D2D* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset USB2 Enhanced Host Controller #2 + +pci:v00008086d00001D33* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset LAN Controller + +pci:v00008086d00001D35* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset VECI Controller + +pci:v00008086d00001D3A* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset MEI Controller #1 + +pci:v00008086d00001D3B* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset MEI Controller #2 + +pci:v00008086d00001D3C* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset IDE-r Controller + +pci:v00008086d00001D3D* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset KT Controller + +pci:v00008086d00001D3E* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset PCI Express Virtual Root Port + +pci:v00008086d00001D3F* + ID_MODEL_FROM_DATABASE=C608/C606/X79 series chipset PCI Express Virtual Switch Port + +pci:v00008086d00001D40* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset LPC Controller + +pci:v00008086d00001D41* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset LPC Controller + +pci:v00008086d00001D50* + ID_MODEL_FROM_DATABASE=C608 chipset Dual 4-Port SATA/SAS Storage Control Unit + +pci:v00008086d00001D54* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit + +pci:v00008086d00001D55* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit + +pci:v00008086d00001D58* + ID_MODEL_FROM_DATABASE=C606 chipset Dual 4-Port SATA/SAS Storage Control Unit + +pci:v00008086d00001D59* + ID_MODEL_FROM_DATABASE=C604/X79 series chipset 4-Port SATA/SAS Storage Control Unit + +pci:v00008086d00001D5A* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA Storage Control Unit + +pci:v00008086d00001D5B* + ID_MODEL_FROM_DATABASE=C602 chipset 4-Port SATA Storage Control Unit + +pci:v00008086d00001D5C* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit + +pci:v00008086d00001D5D* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit + +pci:v00008086d00001D5E* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA Storage Control Unit + +pci:v00008086d00001D5F* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset 4-Port SATA Storage Control Unit + +pci:v00008086d00001D60* + ID_MODEL_FROM_DATABASE=C608 chipset Dual 4-Port SATA/SAS Storage Control Unit + +pci:v00008086d00001D64* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit + +pci:v00008086d00001D65* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit + +pci:v00008086d00001D68* + ID_MODEL_FROM_DATABASE=C606 chipset Dual 4-Port SATA/SAS Storage Control Unit + +pci:v00008086d00001D69* + ID_MODEL_FROM_DATABASE=C604/X79 series chipset 4-Port SATA/SAS Storage Control Unit + +pci:v00008086d00001D6A* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA Storage Control Unit + +pci:v00008086d00001D6B* + ID_MODEL_FROM_DATABASE=C602 chipset 4-Port SATA Storage Control Unit + +pci:v00008086d00001D6C* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit + +pci:v00008086d00001D6D* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit + +pci:v00008086d00001D6E* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA Storage Control Unit + +pci:v00008086d00001D6F* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset 4-Port SATA Storage Control Unit + +pci:v00008086d00001D70* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset SMBus Controller 0 + +pci:v00008086d00001D71* + ID_MODEL_FROM_DATABASE=C608/C606/X79 series chipset SMBus Controller 1 + +pci:v00008086d00001D72* + ID_MODEL_FROM_DATABASE=C608 chipset SMBus Controller 2 + +pci:v00008086d00001D74* + ID_MODEL_FROM_DATABASE=C608/C606/X79 series chipset PCI Express Upstream Port + +pci:v00008086d00001D76* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset Multi-Function Glue + +pci:v00008086d00001E00* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family 4-port SATA Controller [IDE mode] + +pci:v00008086d00001E01* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family 4-port SATA Controller [IDE mode] + +pci:v00008086d00001E02* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] + +pci:v00008086d00001E02sv00001043sd000084CA* + ID_MODEL_FROM_DATABASE=P8H77-I Motherboard + +pci:v00008086d00001E03* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family 6-port SATA Controller [AHCI mode] + +pci:v00008086d00001E03sv00001043sd00001477* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00008086d00001E03sv00001043sd00001517* + ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A + +pci:v00008086d00001E04* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SATA Controller [RAID mode] + +pci:v00008086d00001E05* + ID_MODEL_FROM_DATABASE=7 Series Chipset SATA Controller [RAID mode] + +pci:v00008086d00001E06* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SATA Controller [RAID mode] + +pci:v00008086d00001E07* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family SATA Controller [RAID mode] + +pci:v00008086d00001E08* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family 2-port SATA Controller [IDE mode] + +pci:v00008086d00001E09* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family 2-port SATA Controller [IDE mode] + +pci:v00008086d00001E0E* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SATA Controller [RAID mode] + +pci:v00008086d00001E10* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1 + +pci:v00008086d00001E10sv00001043sd00001477* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00008086d00001E10sv00001043sd00001517* + ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A + +pci:v00008086d00001E10sv00001043sd000084CA* + ID_MODEL_FROM_DATABASE=P8H77-I Motherboard + +pci:v00008086d00001E12* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 2 + +pci:v00008086d00001E12sv00001043sd00001477* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00008086d00001E12sv00001043sd00001517* + ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A + +pci:v00008086d00001E14* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 3 + +pci:v00008086d00001E16* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 4 + +pci:v00008086d00001E16sv00001043sd00001477* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00008086d00001E18* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 5 + +pci:v00008086d00001E18sv00001043sd000084CA* + ID_MODEL_FROM_DATABASE=P8H77-I Motherboard + +pci:v00008086d00001E1A* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 6 + +pci:v00008086d00001E1C* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 7 + +pci:v00008086d00001E1E* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 8 + +pci:v00008086d00001E20* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller + +pci:v00008086d00001E20sv00001043sd00001477* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00008086d00001E20sv00001043sd00001517* + ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A + +pci:v00008086d00001E20sv00001043sd00008415* + ID_MODEL_FROM_DATABASE=P8H77-I Motherboard + +pci:v00008086d00001E22* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller + +pci:v00008086d00001E22sv00001043sd00001477* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00008086d00001E22sv00001043sd00001517* + ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A + +pci:v00008086d00001E22sv00001043sd000084CA* + ID_MODEL_FROM_DATABASE=P8H77-I Motherboard + +pci:v00008086d00001E24* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family Thermal Management Controller + +pci:v00008086d00001E24sv00001043sd00001517* + ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A + +pci:v00008086d00001E25* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family DMI to PCI Bridge + +pci:v00008086d00001E26* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 + +pci:v00008086d00001E26sv00001043sd00001477* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00008086d00001E26sv00001043sd00001517* + ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A + +pci:v00008086d00001E26sv00001043sd000084CA* + ID_MODEL_FROM_DATABASE=P8H77-I Motherboard + +pci:v00008086d00001E2D* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 + +pci:v00008086d00001E2Dsv00001043sd00001477* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00008086d00001E2Dsv00001043sd00001517* + ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A + +pci:v00008086d00001E2Dsv00001043sd000084CA* + ID_MODEL_FROM_DATABASE=P8H77-I Motherboard + +pci:v00008086d00001E31* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller + +pci:v00008086d00001E31sv00001043sd00001477* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00008086d00001E31sv00001043sd00001517* + ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A + +pci:v00008086d00001E31sv00001043sd000084CA* + ID_MODEL_FROM_DATABASE=P8H77-I Motherboard + +pci:v00008086d00001E33* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family LAN Controller + +pci:v00008086d00001E3A* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 + +pci:v00008086d00001E3Asv00001043sd00001477* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00008086d00001E3Asv00001043sd00001517* + ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A + +pci:v00008086d00001E3Asv00001043sd000084CA* + ID_MODEL_FROM_DATABASE=P8H77-I Motherboard + +pci:v00008086d00001E3B* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #2 + +pci:v00008086d00001E3C* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family IDE-r Controller + +pci:v00008086d00001E3D* + ID_MODEL_FROM_DATABASE=7 Series/C210 Series Chipset Family KT Controller + +pci:v00008086d00001E41* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E42* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E43* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E44* + ID_MODEL_FROM_DATABASE=Z77 Express Chipset LPC Controller + +pci:v00008086d00001E45* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E46* + ID_MODEL_FROM_DATABASE=Z75 Express Chipset LPC Controller + +pci:v00008086d00001E47* + ID_MODEL_FROM_DATABASE=Q77 Express Chipset LPC Controller + +pci:v00008086d00001E48* + ID_MODEL_FROM_DATABASE=Q75 Express Chipset LPC Controller + +pci:v00008086d00001E49* + ID_MODEL_FROM_DATABASE=B75 Express Chipset LPC Controller + +pci:v00008086d00001E4A* + ID_MODEL_FROM_DATABASE=H77 Express Chipset LPC Controller + +pci:v00008086d00001E4Asv00001043sd000084CA* + ID_MODEL_FROM_DATABASE=P8H77-I Motherboard + +pci:v00008086d00001E4B* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E4C* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E4D* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E4E* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E4F* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E50* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E51* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E52* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E53* + ID_MODEL_FROM_DATABASE=C216 Series Chipset LPC Controller + +pci:v00008086d00001E54* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E55* + ID_MODEL_FROM_DATABASE=QM77 Express Chipset LPC Controller + +pci:v00008086d00001E56* + ID_MODEL_FROM_DATABASE=QS77 Express Chipset LPC Controller + +pci:v00008086d00001E57* + ID_MODEL_FROM_DATABASE=HM77 Express Chipset LPC Controller + +pci:v00008086d00001E58* + ID_MODEL_FROM_DATABASE=UM77 Express Chipset LPC Controller + +pci:v00008086d00001E59* + ID_MODEL_FROM_DATABASE=HM76 Express Chipset LPC Controller + +pci:v00008086d00001E59sv00001043sd00001477* + ID_MODEL_FROM_DATABASE=N56VZ + +pci:v00008086d00001E59sv00001043sd00001517* + ID_MODEL_FROM_DATABASE=Zenbook Prime UX31A + +pci:v00008086d00001E5A* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E5B* + ID_MODEL_FROM_DATABASE=UM77 Express Chipset LPC Controller + +pci:v00008086d00001E5C* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E5D* + ID_MODEL_FROM_DATABASE=HM75 Express Chipset LPC Controller + +pci:v00008086d00001E5E* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001E5F* + ID_MODEL_FROM_DATABASE=7 Series Chipset Family LPC Controller + +pci:v00008086d00001F00* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F01* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F02* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F03* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F04* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F05* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F06* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F07* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F08* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F09* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F0A* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F0B* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F0C* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F0D* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F0E* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F0F* + ID_MODEL_FROM_DATABASE=Avoton SSA-Cunit + +pci:v00008086d00001F10* + ID_MODEL_FROM_DATABASE=Avoton PCIe Root Port 1 + +pci:v00008086d00001F11* + ID_MODEL_FROM_DATABASE=Avoton PCIe Root Port 2 + +pci:v00008086d00001F12* + ID_MODEL_FROM_DATABASE=Avoton PCIe Root Port 3 + +pci:v00008086d00001F13* + ID_MODEL_FROM_DATABASE=Avoton PCIe Root Port 4 + +pci:v00008086d00001F14* + ID_MODEL_FROM_DATABASE=Avoton RAS + +pci:v00008086d00001F15* + ID_MODEL_FROM_DATABASE=Avoton SMBus 2.0 + +pci:v00008086d00001F16* + ID_MODEL_FROM_DATABASE=Avoton RCEC + +pci:v00008086d00001F18* + ID_MODEL_FROM_DATABASE=Avoton nCPM + +pci:v00008086d00001F19* + ID_MODEL_FROM_DATABASE=Avoton nCPM + +pci:v00008086d00001F20* + ID_MODEL_FROM_DATABASE=Avoton 4-Port IDE SATA2 Controller + +pci:v00008086d00001F21* + ID_MODEL_FROM_DATABASE=Avoton 4-Port IDE SATA2 Controller + +pci:v00008086d00001F22* + ID_MODEL_FROM_DATABASE=Avoton AHCI SATA2 Controller + +pci:v00008086d00001F23* + ID_MODEL_FROM_DATABASE=Avoton AHCI SATA2 Controller + +pci:v00008086d00001F24* + ID_MODEL_FROM_DATABASE=Avoton RAID SATA2 Controller + +pci:v00008086d00001F25* + ID_MODEL_FROM_DATABASE=Avoton RAID SATA2 Controller + +pci:v00008086d00001F26* + ID_MODEL_FROM_DATABASE=Avoton RAID SATA2 Controller + +pci:v00008086d00001F27* + ID_MODEL_FROM_DATABASE=Avoton RAID SATA2 Controller + +pci:v00008086d00001F2C* + ID_MODEL_FROM_DATABASE=Avoton USB Enhanced Host Controller + +pci:v00008086d00001F2E* + ID_MODEL_FROM_DATABASE=Avoton RAID SATA2 Controller + +pci:v00008086d00001F2F* + ID_MODEL_FROM_DATABASE=Avoton RAID SATA2 Controller + +pci:v00008086d00001F30* + ID_MODEL_FROM_DATABASE=Avoton 2-Port IDE SATA3 Controller + +pci:v00008086d00001F31* + ID_MODEL_FROM_DATABASE=Avoton 2-Port IDE SATA3 Controller + +pci:v00008086d00001F32* + ID_MODEL_FROM_DATABASE=Avoton AHCI SATA3 Controller + +pci:v00008086d00001F33* + ID_MODEL_FROM_DATABASE=Avoton AHCI SATA3 Controller + +pci:v00008086d00001F34* + ID_MODEL_FROM_DATABASE=Avoton RAID SATA3 Controller + +pci:v00008086d00001F35* + ID_MODEL_FROM_DATABASE=Avoton RAID SATA3 Controller + +pci:v00008086d00001F36* + ID_MODEL_FROM_DATABASE=Avoton RAID SATA3 Controller + +pci:v00008086d00001F37* + ID_MODEL_FROM_DATABASE=Avoton RAID SATA3 Controller + +pci:v00008086d00001F38* + ID_MODEL_FROM_DATABASE=Avoton PCU + +pci:v00008086d00001F39* + ID_MODEL_FROM_DATABASE=Avoton PCU + +pci:v00008086d00001F3A* + ID_MODEL_FROM_DATABASE=Avoton PCU + +pci:v00008086d00001F3B* + ID_MODEL_FROM_DATABASE=Avoton PCU + +pci:v00008086d00001F3C* + ID_MODEL_FROM_DATABASE=Avoton PCU SMBus + +pci:v00008086d00001F3D* + ID_MODEL_FROM_DATABASE=Avoton PCU SMBus + +pci:v00008086d00001F3E* + ID_MODEL_FROM_DATABASE=Avoton RAID SATA3 Controller + +pci:v00008086d00001F3F* + ID_MODEL_FROM_DATABASE=Avoton RAID SATA3 Controller + +pci:v00008086d00001F40* + ID_MODEL_FROM_DATABASE=Avoton GbE x4 1000base-KX + +pci:v00008086d00001F41* + ID_MODEL_FROM_DATABASE=Avoton GbE x4 SGMII + +pci:v00008086d00001F42* + ID_MODEL_FROM_DATABASE=Avoton GbE + +pci:v00008086d00001F43* + ID_MODEL_FROM_DATABASE=Avoton GbE EEPROM-less + +pci:v00008086d00001F44* + ID_MODEL_FROM_DATABASE=Avoton GbE Virtual Function + +pci:v00008086d00001F45* + ID_MODEL_FROM_DATABASE=Avoton GbE 2500base-KX + +pci:v00008086d00002250* + ID_MODEL_FROM_DATABASE=Xeon Phi Coprocessor 5110P + +pci:v00008086d00002310* + ID_MODEL_FROM_DATABASE=DH89xxCC LPC Controller + +pci:v00008086d00002323* + ID_MODEL_FROM_DATABASE=DH89xxCC 4 Port SATA AHCI Controller + +pci:v00008086d00002330* + ID_MODEL_FROM_DATABASE=DH89xxCC SMBus Controller + +pci:v00008086d00002331* + ID_MODEL_FROM_DATABASE=DH89xxCC Chap Counter + +pci:v00008086d00002332* + ID_MODEL_FROM_DATABASE=DH89xxCC Thermal Subsystem + +pci:v00008086d00002334* + ID_MODEL_FROM_DATABASE=DH89xxCC USB2 Enhanced Host Controller #1 + +pci:v00008086d00002335* + ID_MODEL_FROM_DATABASE=DH89xxCC USB2 Enhanced Host Controller #1 + +pci:v00008086d00002342* + ID_MODEL_FROM_DATABASE=DH89xxCC PCI Express Root Port #1 + +pci:v00008086d00002343* + ID_MODEL_FROM_DATABASE=DH89xxCC PCI Express Root Port #1 + +pci:v00008086d00002344* + ID_MODEL_FROM_DATABASE=DH89xxCC PCI Express Root Port #2 + +pci:v00008086d00002345* + ID_MODEL_FROM_DATABASE=DH89xxCC PCI Express Root Port #2 + +pci:v00008086d00002346* + ID_MODEL_FROM_DATABASE=DH89xxCC PCI Express Root Port #3 + +pci:v00008086d00002347* + ID_MODEL_FROM_DATABASE=DH89xxCC PCI Express Root Port #3 + +pci:v00008086d00002348* + ID_MODEL_FROM_DATABASE=DH89xxCC PCI Express Root Port #4 + +pci:v00008086d00002349* + ID_MODEL_FROM_DATABASE=DH89xxCC PCI Express Root Port #4 + +pci:v00008086d00002360* + ID_MODEL_FROM_DATABASE=DH89xxCC Watchdog Timer + +pci:v00008086d00002364* + ID_MODEL_FROM_DATABASE=DH89xxCC MEI 0 + +pci:v00008086d00002365* + ID_MODEL_FROM_DATABASE=DH89xxCC MEI 1 + +pci:v00008086d00002410* + ID_MODEL_FROM_DATABASE=82801AA ISA Bridge (LPC) + +pci:v00008086d00002411* + ID_MODEL_FROM_DATABASE=82801AA IDE Controller + +pci:v00008086d00002412* + ID_MODEL_FROM_DATABASE=82801AA USB Controller + +pci:v00008086d00002413* + ID_MODEL_FROM_DATABASE=82801AA SMBus Controller + +pci:v00008086d00002415* + ID_MODEL_FROM_DATABASE=82801AA AC'97 Audio Controller + +pci:v00008086d00002415sv00001028sd00000095* + ID_MODEL_FROM_DATABASE=Precision Workstation 220 Integrated Digital Audio + +pci:v00008086d00002415sv00001028sd000000B4* + ID_MODEL_FROM_DATABASE=OptiPlex GX110 + +pci:v00008086d00002415sv0000110Asd00000051* + ID_MODEL_FROM_DATABASE=Activy 2xx + +pci:v00008086d00002415sv000011D4sd00000040* + ID_MODEL_FROM_DATABASE=SoundMAX Integrated Digital Audio + +pci:v00008086d00002415sv000011D4sd00000048* + ID_MODEL_FROM_DATABASE=SoundMAX Integrated Digital Audio + +pci:v00008086d00002415sv000011D4sd00005340* + ID_MODEL_FROM_DATABASE=SoundMAX Integrated Digital Audio + +pci:v00008086d00002415sv00001734sd00001025* + ID_MODEL_FROM_DATABASE=Activy 3xx + +pci:v00008086d00002416* + ID_MODEL_FROM_DATABASE=82801AA AC'97 Modem Controller + +pci:v00008086d00002418* + ID_MODEL_FROM_DATABASE=82801AA PCI Bridge + +pci:v00008086d00002420* + ID_MODEL_FROM_DATABASE=82801AB ISA Bridge (LPC) + +pci:v00008086d00002421* + ID_MODEL_FROM_DATABASE=82801AB IDE Controller + +pci:v00008086d00002422* + ID_MODEL_FROM_DATABASE=82801AB USB Controller + +pci:v00008086d00002423* + ID_MODEL_FROM_DATABASE=82801AB SMBus Controller + +pci:v00008086d00002425* + ID_MODEL_FROM_DATABASE=82801AB AC'97 Audio Controller + +pci:v00008086d00002425sv000011D4sd00000040* + ID_MODEL_FROM_DATABASE=SoundMAX Integrated Digital Audio + +pci:v00008086d00002425sv000011D4sd00000048* + ID_MODEL_FROM_DATABASE=SoundMAX Integrated Digital Audio + +pci:v00008086d00002426* + ID_MODEL_FROM_DATABASE=82801AB AC'97 Modem Controller + +pci:v00008086d00002428* + ID_MODEL_FROM_DATABASE=82801AB PCI Bridge + +pci:v00008086d00002440* + ID_MODEL_FROM_DATABASE=82801BA ISA Bridge (LPC) + +pci:v00008086d00002440sv00008086sd00005744* + ID_MODEL_FROM_DATABASE=S845WD1-E + +pci:v00008086d00002442* + ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 + +pci:v00008086d00002442sv00001014sd000001C6* + ID_MODEL_FROM_DATABASE=Netvista A40/A40p + +pci:v00008086d00002442sv00001025sd00001016* + ID_MODEL_FROM_DATABASE=Travelmate 612 TX + +pci:v00008086d00002442sv00001028sd000000C7* + ID_MODEL_FROM_DATABASE=Dimension 8100 + +pci:v00008086d00002442sv00001028sd000000D8* + ID_MODEL_FROM_DATABASE=Precision 530 + +pci:v00008086d00002442sv00001028sd0000010E* + ID_MODEL_FROM_DATABASE=Optiplex GX240 + +pci:v00008086d00002442sv0000103Csd0000126F* + ID_MODEL_FROM_DATABASE=e-pc 40 + +pci:v00008086d00002442sv00001043sd00008027* + ID_MODEL_FROM_DATABASE=TUSL2-C Mainboard + +pci:v00008086d00002442sv0000104Dsd000080DF* + ID_MODEL_FROM_DATABASE=Vaio PCG-FX403 + +pci:v00008086d00002442sv0000147Bsd00000507* + ID_MODEL_FROM_DATABASE=TH7II-RAID + +pci:v00008086d00002442sv00008086sd00004532* + ID_MODEL_FROM_DATABASE=D815EEA2 mainboard + +pci:v00008086d00002442sv00008086sd00004557* + ID_MODEL_FROM_DATABASE=D815EGEW Mainboard + +pci:v00008086d00002442sv00008086sd00005744* + ID_MODEL_FROM_DATABASE=S845WD1-E mainboard + +pci:v00008086d00002443* + ID_MODEL_FROM_DATABASE=82801BA/BAM SMBus Controller + +pci:v00008086d00002443sv00001014sd000001C6* + ID_MODEL_FROM_DATABASE=Netvista A40/A40p + +pci:v00008086d00002443sv00001025sd00001016* + ID_MODEL_FROM_DATABASE=Travelmate 612 TX + +pci:v00008086d00002443sv00001028sd000000C7* + ID_MODEL_FROM_DATABASE=Dimension 8100 + +pci:v00008086d00002443sv00001028sd000000D8* + ID_MODEL_FROM_DATABASE=Precision 530 + +pci:v00008086d00002443sv00001028sd0000010E* + ID_MODEL_FROM_DATABASE=Optiplex GX240 + +pci:v00008086d00002443sv0000103Csd0000126F* + ID_MODEL_FROM_DATABASE=e-pc 40 + +pci:v00008086d00002443sv00001043sd00008027* + ID_MODEL_FROM_DATABASE=TUSL2-C Mainboard + +pci:v00008086d00002443sv0000104Dsd000080DF* + ID_MODEL_FROM_DATABASE=Vaio PCG-FX403 + +pci:v00008086d00002443sv0000147Bsd00000507* + ID_MODEL_FROM_DATABASE=TH7II-RAID + +pci:v00008086d00002443sv000015D9sd00003280* + ID_MODEL_FROM_DATABASE=Supermicro P4SBE Mainboard + +pci:v00008086d00002443sv00008086sd00004532* + ID_MODEL_FROM_DATABASE=D815EEA2 mainboard + +pci:v00008086d00002443sv00008086sd00004557* + ID_MODEL_FROM_DATABASE=D815EGEW Mainboard + +pci:v00008086d00002443sv00008086sd00005744* + ID_MODEL_FROM_DATABASE=S845WD1-E mainboard + +pci:v00008086d00002444* + ID_MODEL_FROM_DATABASE=82801BA/BAM USB Controller #1 + +pci:v00008086d00002444sv00001025sd00001016* + ID_MODEL_FROM_DATABASE=Travelmate 612 TX + +pci:v00008086d00002444sv00001028sd000000C7* + ID_MODEL_FROM_DATABASE=Dimension 8100 + +pci:v00008086d00002444sv00001028sd000000D8* + ID_MODEL_FROM_DATABASE=Precision 530 + +pci:v00008086d00002444sv00001028sd0000010E* + ID_MODEL_FROM_DATABASE=Optiplex GX240 + +pci:v00008086d00002444sv0000103Csd0000126F* + ID_MODEL_FROM_DATABASE=e-pc 40 + +pci:v00008086d00002444sv00001043sd00008027* + ID_MODEL_FROM_DATABASE=TUSL2-C Mainboard + +pci:v00008086d00002444sv0000104Dsd000080DF* + ID_MODEL_FROM_DATABASE=Vaio PCG-FX403 + +pci:v00008086d00002444sv0000147Bsd00000507* + ID_MODEL_FROM_DATABASE=TH7II-RAID + +pci:v00008086d00002444sv00008086sd00004532* + ID_MODEL_FROM_DATABASE=D815EEA2 mainboard + +pci:v00008086d00002444sv00008086sd00005744* + ID_MODEL_FROM_DATABASE=S845WD1-E mainboard + +pci:v00008086d00002445* + ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller + +pci:v00008086d00002445sv00000E11sd0000000B* + ID_MODEL_FROM_DATABASE=Compaq Deskpro EN Audio + +pci:v00008086d00002445sv00000E11sd00000088* + ID_MODEL_FROM_DATABASE=Evo D500 + +pci:v00008086d00002445sv00001014sd000001C6* + ID_MODEL_FROM_DATABASE=Netvista A40/A40p + +pci:v00008086d00002445sv00001025sd00001016* + ID_MODEL_FROM_DATABASE=Travelmate 612 TX + +pci:v00008086d00002445sv00001028sd000000D8* + ID_MODEL_FROM_DATABASE=Precision 530 + +pci:v00008086d00002445sv0000103Csd0000126F* + ID_MODEL_FROM_DATABASE=e-pc 40 + +pci:v00008086d00002445sv0000104Dsd000080DF* + ID_MODEL_FROM_DATABASE=Vaio PCG-FX403 + +pci:v00008086d00002445sv00001462sd00003370* + ID_MODEL_FROM_DATABASE=STAC9721 AC + +pci:v00008086d00002445sv0000147Bsd00000507* + ID_MODEL_FROM_DATABASE=TH7II-RAID + +pci:v00008086d00002445sv00008086sd00004557* + ID_MODEL_FROM_DATABASE=D815EGEW Mainboard + +pci:v00008086d00002446* + ID_MODEL_FROM_DATABASE=82801BA/BAM AC'97 Modem Controller + +pci:v00008086d00002446sv00001025sd00001016* + ID_MODEL_FROM_DATABASE=Travelmate 612 TX + +pci:v00008086d00002446sv0000104Dsd000080DF* + ID_MODEL_FROM_DATABASE=Vaio PCG-FX403 + +pci:v00008086d00002448* + ID_MODEL_FROM_DATABASE=82801 Mobile PCI Bridge + +pci:v00008086d00002448sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d00002448sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation + +pci:v00008086d00002448sv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v00008086d00002448sv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00008086d00002448sv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d00002448sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002448sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002448sv0000105Bsd00000D7C* + ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard + +pci:v00008086d00002448sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30 notebook + +pci:v00008086d00002448sv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d00002448sv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-D525TUD + +pci:v00008086d00002448sv00001734sd00001055* + ID_MODEL_FROM_DATABASE=Amilo M1420 + +pci:v00008086d00002448sv000017AAsd000020AE* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d00002448sv00008086sd0000544B* + ID_MODEL_FROM_DATABASE=Desktop Board D425KT + +pci:v00008086d00002448sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002449* + ID_MODEL_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller + +pci:v00008086d00002449sv00000E11sd00000012* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VM + +pci:v00008086d00002449sv00000E11sd00000091* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00001014sd000001CE* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00001014sd000001DC* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00001014sd000001EB* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00001014sd000001EC* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00001014sd00000202* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00001014sd00000205* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00001014sd00000217* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00001014sd00000234* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00001014sd0000023D* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00001014sd00000244* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00001014sd00000245* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00001014sd00000265* + ID_MODEL_FROM_DATABASE=PRO/100 VE Desktop Connection + +pci:v00008086d00002449sv00001014sd00000267* + ID_MODEL_FROM_DATABASE=PRO/100 VE Desktop Connection + +pci:v00008086d00002449sv00001014sd0000026A* + ID_MODEL_FROM_DATABASE=PRO/100 VE Desktop Connection + +pci:v00008086d00002449sv0000109Fsd0000315D* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv0000109Fsd00003181* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00001179sd0000FF01* + ID_MODEL_FROM_DATABASE=PRO/100 VE Network Connection + +pci:v00008086d00002449sv00001186sd00007801* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv0000144Dsd00002602* + ID_MODEL_FROM_DATABASE=HomePNA 1M CNR + +pci:v00008086d00002449sv00008086sd00003010* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00008086sd00003011* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VM + +pci:v00008086d00002449sv00008086sd00003012* + ID_MODEL_FROM_DATABASE=82562EH based Phoneline + +pci:v00008086d00002449sv00008086sd00003013* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VE + +pci:v00008086d00002449sv00008086sd00003014* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 VM + +pci:v00008086d00002449sv00008086sd00003015* + ID_MODEL_FROM_DATABASE=82562EH based Phoneline + +pci:v00008086d00002449sv00008086sd00003016* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 P Mobile Combo + +pci:v00008086d00002449sv00008086sd00003017* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 P Mobile + +pci:v00008086d00002449sv00008086sd00003018* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 + +pci:v00008086d0000244A* + ID_MODEL_FROM_DATABASE=82801BAM IDE U100 Controller + +pci:v00008086d0000244Asv00001025sd00001016* + ID_MODEL_FROM_DATABASE=Travelmate 612TX + +pci:v00008086d0000244Asv0000104Dsd000080DF* + ID_MODEL_FROM_DATABASE=Vaio PCG-FX403 + +pci:v00008086d0000244B* + ID_MODEL_FROM_DATABASE=82801BA IDE U100 Controller + +pci:v00008086d0000244Bsv00001014sd000001C6* + ID_MODEL_FROM_DATABASE=Netvista A40/A40p + +pci:v00008086d0000244Bsv00001028sd000000C7* + ID_MODEL_FROM_DATABASE=Dimension 8100 + +pci:v00008086d0000244Bsv00001028sd000000D8* + ID_MODEL_FROM_DATABASE=Precision 530 + +pci:v00008086d0000244Bsv00001028sd0000010E* + ID_MODEL_FROM_DATABASE=Optiplex GX240 + +pci:v00008086d0000244Bsv0000103Csd0000126F* + ID_MODEL_FROM_DATABASE=e-pc 40 + +pci:v00008086d0000244Bsv00001043sd00008027* + ID_MODEL_FROM_DATABASE=TUSL2-C Mainboard + +pci:v00008086d0000244Bsv0000147Bsd00000507* + ID_MODEL_FROM_DATABASE=TH7II-RAID + +pci:v00008086d0000244Bsv000015D9sd00003280* + ID_MODEL_FROM_DATABASE=Supermicro P4SBE Mainboard + +pci:v00008086d0000244Bsv00008086sd00004532* + ID_MODEL_FROM_DATABASE=D815EEA2 mainboard + +pci:v00008086d0000244Bsv00008086sd00004557* + ID_MODEL_FROM_DATABASE=D815EGEW Mainboard + +pci:v00008086d0000244Bsv00008086sd00005744* + ID_MODEL_FROM_DATABASE=S845WD1-E mainboard + +pci:v00008086d0000244C* + ID_MODEL_FROM_DATABASE=82801BAM ISA Bridge (LPC) + +pci:v00008086d0000244E* + ID_MODEL_FROM_DATABASE=82801 PCI Bridge + +pci:v00008086d0000244Esv00001014sd00000267* + ID_MODEL_FROM_DATABASE=NetVista A30p + +pci:v00008086d0000244Esv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d0000244Esv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d0000244Esv00001028sd000002DA* + ID_MODEL_FROM_DATABASE=OptiPlex 980 + +pci:v00008086d0000244Esv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Pavilion A1512X + +pci:v00008086d0000244Esv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d0000244Esv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server + +pci:v00008086d0000244Esv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d0000244Esv00001458sd00005000* + ID_MODEL_FROM_DATABASE=Motherboard + +pci:v00008086d0000244Esv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d0000244Esv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d00002450* + ID_MODEL_FROM_DATABASE=82801E ISA Bridge (LPC) + +pci:v00008086d00002452* + ID_MODEL_FROM_DATABASE=82801E USB Controller + +pci:v00008086d00002453* + ID_MODEL_FROM_DATABASE=82801E SMBus Controller + +pci:v00008086d00002459* + ID_MODEL_FROM_DATABASE=82801E Ethernet Controller 0 + +pci:v00008086d0000245B* + ID_MODEL_FROM_DATABASE=82801E IDE U100 Controller + +pci:v00008086d0000245D* + ID_MODEL_FROM_DATABASE=82801E Ethernet Controller 1 + +pci:v00008086d0000245E* + ID_MODEL_FROM_DATABASE=82801E PCI Bridge + +pci:v00008086d00002480* + ID_MODEL_FROM_DATABASE=82801CA LPC Interface Controller + +pci:v00008086d00002482* + ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #1 + +pci:v00008086d00002482sv00000E11sd00000030* + ID_MODEL_FROM_DATABASE=Evo N600c + +pci:v00008086d00002482sv00001014sd00000220* + ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series + +pci:v00008086d00002482sv0000104Dsd000080E7* + ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + +pci:v00008086d00002482sv000015D9sd00003480* + ID_MODEL_FROM_DATABASE=P4DP6 + +pci:v00008086d00002482sv00008086sd00001958* + ID_MODEL_FROM_DATABASE=vpr Matrix 170B4 + +pci:v00008086d00002482sv00008086sd00003424* + ID_MODEL_FROM_DATABASE=SE7501HG2 Mainboard + +pci:v00008086d00002482sv00008086sd00004541* + ID_MODEL_FROM_DATABASE=Latitude C640 + +pci:v00008086d00002483* + ID_MODEL_FROM_DATABASE=82801CA/CAM SMBus Controller + +pci:v00008086d00002483sv00001014sd00000220* + ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series + +pci:v00008086d00002483sv0000104Dsd000080E7* + ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + +pci:v00008086d00002483sv000015D9sd00003480* + ID_MODEL_FROM_DATABASE=P4DP6 + +pci:v00008086d00002483sv00008086sd00001958* + ID_MODEL_FROM_DATABASE=vpr Matrix 170B4 + +pci:v00008086d00002484* + ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #2 + +pci:v00008086d00002484sv00000E11sd00000030* + ID_MODEL_FROM_DATABASE=Evo N600c + +pci:v00008086d00002484sv00001014sd00000220* + ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series + +pci:v00008086d00002484sv0000104Dsd000080E7* + ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + +pci:v00008086d00002484sv000015D9sd00003480* + ID_MODEL_FROM_DATABASE=P4DP6 + +pci:v00008086d00002484sv00008086sd00001958* + ID_MODEL_FROM_DATABASE=vpr Matrix 170B4 + +pci:v00008086d00002485* + ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Audio Controller + +pci:v00008086d00002485sv00001013sd00005959* + ID_MODEL_FROM_DATABASE=Crystal WMD Audio Codec + +pci:v00008086d00002485sv00001014sd00000222* + ID_MODEL_FROM_DATABASE=ThinkPad A30/A30p/T23 + +pci:v00008086d00002485sv00001014sd00000508* + ID_MODEL_FROM_DATABASE=ThinkPad T30 + +pci:v00008086d00002485sv00001014sd0000051C* + ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series + +pci:v00008086d00002485sv00001043sd00001583* + ID_MODEL_FROM_DATABASE=L3C (SPDIF) + +pci:v00008086d00002485sv00001043sd00001623* + ID_MODEL_FROM_DATABASE=L2B (no SPDIF) + +pci:v00008086d00002485sv00001043sd00001643* + ID_MODEL_FROM_DATABASE=L3F + +pci:v00008086d00002485sv0000104Dsd000080E7* + ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + +pci:v00008086d00002485sv0000144Dsd0000C006* + ID_MODEL_FROM_DATABASE=vpr Matrix 170B4 + +pci:v00008086d00002486* + ID_MODEL_FROM_DATABASE=82801CA/CAM AC'97 Modem Controller + +pci:v00008086d00002486sv00001014sd00000223* + ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series + +pci:v00008086d00002486sv00001014sd00000503* + ID_MODEL_FROM_DATABASE=ThinkPad R31 + +pci:v00008086d00002486sv00001014sd0000051A* + ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series + +pci:v00008086d00002486sv0000101Fsd00001025* + ID_MODEL_FROM_DATABASE=620 Series + +pci:v00008086d00002486sv00001043sd00001496* + ID_MODEL_FROM_DATABASE=PCtel HSP56 MR + +pci:v00008086d00002486sv0000104Dsd000080E7* + ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + +pci:v00008086d00002486sv0000134Dsd00004C21* + ID_MODEL_FROM_DATABASE=Dell Inspiron 2100 internal modem + +pci:v00008086d00002486sv0000144Dsd00002115* + ID_MODEL_FROM_DATABASE=vpr Matrix 170B4 internal modem + +pci:v00008086d00002486sv000014F1sd00005421* + ID_MODEL_FROM_DATABASE=MD56ORD V.92 MDC Modem + +pci:v00008086d00002487* + ID_MODEL_FROM_DATABASE=82801CA/CAM USB Controller #3 + +pci:v00008086d00002487sv00000E11sd00000030* + ID_MODEL_FROM_DATABASE=Evo N600c + +pci:v00008086d00002487sv00001014sd00000220* + ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series + +pci:v00008086d00002487sv0000104Dsd000080E7* + ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + +pci:v00008086d00002487sv000015D9sd00003480* + ID_MODEL_FROM_DATABASE=P4DP6 + +pci:v00008086d00002487sv00008086sd00001958* + ID_MODEL_FROM_DATABASE=vpr Matrix 170B4 + +pci:v00008086d0000248A* + ID_MODEL_FROM_DATABASE=82801CAM IDE U100 Controller + +pci:v00008086d0000248Asv00000E11sd00000030* + ID_MODEL_FROM_DATABASE=Evo N600c + +pci:v00008086d0000248Asv00001014sd00000220* + ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series + +pci:v00008086d0000248Asv0000104Dsd000080E7* + ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + +pci:v00008086d0000248Asv00008086sd00001958* + ID_MODEL_FROM_DATABASE=vpr Matrix 170B4 + +pci:v00008086d0000248Asv00008086sd00004541* + ID_MODEL_FROM_DATABASE=Latitude C640 + +pci:v00008086d0000248B* + ID_MODEL_FROM_DATABASE=82801CA Ultra ATA Storage Controller + +pci:v00008086d0000248Bsv000015D9sd00003480* + ID_MODEL_FROM_DATABASE=P4DP6 + +pci:v00008086d0000248C* + ID_MODEL_FROM_DATABASE=82801CAM ISA Bridge (LPC) + +pci:v00008086d000024C0* + ID_MODEL_FROM_DATABASE=82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge + +pci:v00008086d000024C0sv00001014sd00000267* + ID_MODEL_FROM_DATABASE=NetVista A30p + +pci:v00008086d000024C0sv00001462sd00005800* + ID_MODEL_FROM_DATABASE=845PE Max (MS-6580) + +pci:v00008086d000024C1* + ID_MODEL_FROM_DATABASE=82801DBL (ICH4-L) IDE Controller + +pci:v00008086d000024C2* + ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 + +pci:v00008086d000024C2sv00001014sd00000267* + ID_MODEL_FROM_DATABASE=NetVista A30p + +pci:v00008086d000024C2sv00001014sd0000052D* + ID_MODEL_FROM_DATABASE=ThinkPad + +pci:v00008086d000024C2sv00001025sd0000005A* + ID_MODEL_FROM_DATABASE=TravelMate 290 + +pci:v00008086d000024C2sv00001028sd00000126* + ID_MODEL_FROM_DATABASE=Optiplex GX260 + +pci:v00008086d000024C2sv00001028sd00000163* + ID_MODEL_FROM_DATABASE=Latitude D505 + +pci:v00008086d000024C2sv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m + +pci:v00008086d000024C2sv00001028sd00000196* + ID_MODEL_FROM_DATABASE=Inspiron 5160 + +pci:v00008086d000024C2sv0000103Csd0000088C* + ID_MODEL_FROM_DATABASE=NC8000 laptop + +pci:v00008086d000024C2sv0000103Csd00000890* + ID_MODEL_FROM_DATABASE=NC6000 laptop + +pci:v00008086d000024C2sv0000103Csd000008B0* + ID_MODEL_FROM_DATABASE=tc1100 tablet + +pci:v00008086d000024C2sv00001043sd00008089* + ID_MODEL_FROM_DATABASE=P4B533 + +pci:v00008086d000024C2sv00001071sd00008160* + ID_MODEL_FROM_DATABASE=MIM2000 + +pci:v00008086d000024C2sv0000114Asd00000582* + ID_MODEL_FROM_DATABASE=PC8 onboard USB 1.x + +pci:v00008086d000024C2sv0000144Dsd0000C005* + ID_MODEL_FROM_DATABASE=X10 Laptop + +pci:v00008086d000024C2sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30/P35 notebook + +pci:v00008086d000024C2sv00001462sd00005800* + ID_MODEL_FROM_DATABASE=845PE Max (MS-6580) + +pci:v00008086d000024C2sv00001509sd00002990* + ID_MODEL_FROM_DATABASE=Averatec 5110H laptop + +pci:v00008086d000024C2sv00001734sd00001004* + ID_MODEL_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV) + +pci:v00008086d000024C2sv00001734sd00001055* + ID_MODEL_FROM_DATABASE=Amilo M1420 + +pci:v00008086d000024C2sv00004C53sd00001090* + ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard + +pci:v00008086d000024C2sv00008086sd000024C2* + ID_MODEL_FROM_DATABASE=Latitude X300 + +pci:v00008086d000024C2sv00008086sd00004541* + ID_MODEL_FROM_DATABASE=Latitude D400/D500 + +pci:v00008086d000024C2sv0000E4BFsd00000CC9* + ID_MODEL_FROM_DATABASE=CC9-SAMBA + +pci:v00008086d000024C2sv0000E4BFsd00000CD2* + ID_MODEL_FROM_DATABASE=CD2-BEBOP + +pci:v00008086d000024C3* + ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller + +pci:v00008086d000024C3sv00001014sd00000267* + ID_MODEL_FROM_DATABASE=NetVista A30p + +pci:v00008086d000024C3sv00001014sd0000052D* + ID_MODEL_FROM_DATABASE=ThinkPad + +pci:v00008086d000024C3sv00001025sd0000005A* + ID_MODEL_FROM_DATABASE=TravelMate 290 + +pci:v00008086d000024C3sv00001028sd00000126* + ID_MODEL_FROM_DATABASE=Optiplex GX260 + +pci:v00008086d000024C3sv00001028sd0000014F* + ID_MODEL_FROM_DATABASE=Latitude X300 + +pci:v00008086d000024C3sv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m + +pci:v00008086d000024C3sv0000103Csd0000088C* + ID_MODEL_FROM_DATABASE=NC8000 laptop + +pci:v00008086d000024C3sv0000103Csd00000890* + ID_MODEL_FROM_DATABASE=NC6000 laptop + +pci:v00008086d000024C3sv0000103Csd000008B0* + ID_MODEL_FROM_DATABASE=tc1100 tablet + +pci:v00008086d000024C3sv00001071sd00008160* + ID_MODEL_FROM_DATABASE=MIM2000 + +pci:v00008086d000024C3sv0000114Asd00000582* + ID_MODEL_FROM_DATABASE=PC8 onboard SMbus + +pci:v00008086d000024C3sv0000144Dsd0000C005* + ID_MODEL_FROM_DATABASE=X10 Laptop + +pci:v00008086d000024C3sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30/P35 notebook + +pci:v00008086d000024C3sv00001458sd000024C2* + ID_MODEL_FROM_DATABASE=GA-8PE667 Ultra + +pci:v00008086d000024C3sv00001462sd00005800* + ID_MODEL_FROM_DATABASE=845PE Max (MS-6580) + +pci:v00008086d000024C3sv00001734sd00001004* + ID_MODEL_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV) + +pci:v00008086d000024C3sv00001734sd00001055* + ID_MODEL_FROM_DATABASE=Amilo M1420 + +pci:v00008086d000024C3sv00004C53sd00001090* + ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard + +pci:v00008086d000024C3sv0000E4BFsd00000CC9* + ID_MODEL_FROM_DATABASE=CC9-SAMBA + +pci:v00008086d000024C3sv0000E4BFsd00000CD2* + ID_MODEL_FROM_DATABASE=CD2-BEBOP + +pci:v00008086d000024C4* + ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 + +pci:v00008086d000024C4sv00001014sd00000267* + ID_MODEL_FROM_DATABASE=NetVista A30p + +pci:v00008086d000024C4sv00001014sd0000052D* + ID_MODEL_FROM_DATABASE=ThinkPad + +pci:v00008086d000024C4sv00001025sd0000005A* + ID_MODEL_FROM_DATABASE=TravelMate 290 + +pci:v00008086d000024C4sv00001028sd00000126* + ID_MODEL_FROM_DATABASE=Optiplex GX260 + +pci:v00008086d000024C4sv00001028sd00000163* + ID_MODEL_FROM_DATABASE=Latitude D505 + +pci:v00008086d000024C4sv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m + +pci:v00008086d000024C4sv00001028sd00000196* + ID_MODEL_FROM_DATABASE=Inspiron 5160 + +pci:v00008086d000024C4sv0000103Csd0000088C* + ID_MODEL_FROM_DATABASE=NC8000 laptop + +pci:v00008086d000024C4sv0000103Csd00000890* + ID_MODEL_FROM_DATABASE=NC6000 laptop + +pci:v00008086d000024C4sv0000103Csd000008B0* + ID_MODEL_FROM_DATABASE=tc1100 tablet + +pci:v00008086d000024C4sv00001043sd00008089* + ID_MODEL_FROM_DATABASE=P4B533 + +pci:v00008086d000024C4sv00001071sd00008160* + ID_MODEL_FROM_DATABASE=MIM2000 + +pci:v00008086d000024C4sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30/P35 notebook + +pci:v00008086d000024C4sv00001462sd00005800* + ID_MODEL_FROM_DATABASE=845PE Max (MS-6580) + +pci:v00008086d000024C4sv00001509sd00002990* + ID_MODEL_FROM_DATABASE=Averatec 5110H + +pci:v00008086d000024C4sv00001734sd00001004* + ID_MODEL_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV) + +pci:v00008086d000024C4sv00004C53sd00001090* + ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard + +pci:v00008086d000024C4sv00008086sd000024C2* + ID_MODEL_FROM_DATABASE=Latitude X300 + +pci:v00008086d000024C4sv00008086sd00004541* + ID_MODEL_FROM_DATABASE=Latitude D400/D500 + +pci:v00008086d000024C4sv0000E4BFsd00000CC9* + ID_MODEL_FROM_DATABASE=CC9-SAMBA + +pci:v00008086d000024C4sv0000E4BFsd00000CD2* + ID_MODEL_FROM_DATABASE=CD2-BEBOP + +pci:v00008086d000024C5* + ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller + +pci:v00008086d000024C5sv00000E11sd000000B8* + ID_MODEL_FROM_DATABASE=Analog Devices Inc. codec [SoundMAX] + +pci:v00008086d000024C5sv00001014sd00000267* + ID_MODEL_FROM_DATABASE=NetVista A30p + +pci:v00008086d000024C5sv00001014sd00000537* + ID_MODEL_FROM_DATABASE=ThinkPad T41 + +pci:v00008086d000024C5sv00001014sd0000055F* + ID_MODEL_FROM_DATABASE=Thinkpad R50e model 1634 + +pci:v00008086d000024C5sv00001025sd0000005A* + ID_MODEL_FROM_DATABASE=TravelMate 290 + +pci:v00008086d000024C5sv00001028sd00000139* + ID_MODEL_FROM_DATABASE=Latitude D400 + +pci:v00008086d000024C5sv00001028sd0000014F* + ID_MODEL_FROM_DATABASE=Latitude X300 + +pci:v00008086d000024C5sv00001028sd00000152* + ID_MODEL_FROM_DATABASE=Latitude D500 + +pci:v00008086d000024C5sv00001028sd00000163* + ID_MODEL_FROM_DATABASE=Latitude D505 + +pci:v00008086d000024C5sv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m [SigmaTel STAC9750,51] + +pci:v00008086d000024C5sv00001028sd00000196* + ID_MODEL_FROM_DATABASE=Inspiron 5160 + +pci:v00008086d000024C5sv0000103Csd0000088C* + ID_MODEL_FROM_DATABASE=NC8000 laptop + +pci:v00008086d000024C5sv0000103Csd00000890* + ID_MODEL_FROM_DATABASE=NC6000 laptop + +pci:v00008086d000024C5sv0000103Csd000008B0* + ID_MODEL_FROM_DATABASE=tc1100 tablet + +pci:v00008086d000024C5sv00001043sd00001713* + ID_MODEL_FROM_DATABASE=M2400N/M6800N laptop + +pci:v00008086d000024C5sv00001043sd000080B0* + ID_MODEL_FROM_DATABASE=P4B533 + +pci:v00008086d000024C5sv00001071sd00008160* + ID_MODEL_FROM_DATABASE=MIM2000 + +pci:v00008086d000024C5sv00001179sd00000201* + ID_MODEL_FROM_DATABASE=Toshiba Tecra M1 + +pci:v00008086d000024C5sv0000144Dsd0000C005* + ID_MODEL_FROM_DATABASE=X10 Laptop + +pci:v00008086d000024C5sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30/P35 notebook + +pci:v00008086d000024C5sv00001458sd0000A002* + ID_MODEL_FROM_DATABASE=GA-8PE667 Ultra + +pci:v00008086d000024C5sv00001462sd00005800* + ID_MODEL_FROM_DATABASE=845PE Max (MS-6580) + +pci:v00008086d000024C5sv00001734sd00001005* + ID_MODEL_FROM_DATABASE=D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T + +pci:v00008086d000024C5sv00001734sd00001055* + ID_MODEL_FROM_DATABASE=Amilo M1420 + +pci:v00008086d000024C5sv00008086sd000024C5* + ID_MODEL_FROM_DATABASE=Dell Dimension 2400 + +pci:v00008086d000024C6* + ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller + +pci:v00008086d000024C6sv00001014sd00000524* + ID_MODEL_FROM_DATABASE=ThinkPad T41 + +pci:v00008086d000024C6sv00001014sd00000525* + ID_MODEL_FROM_DATABASE=ThinkPad + +pci:v00008086d000024C6sv00001014sd00000559* + ID_MODEL_FROM_DATABASE=ThinkPad R50e + +pci:v00008086d000024C6sv00001025sd0000003C* + ID_MODEL_FROM_DATABASE=Aspire 2001WLCi (Compal CL50 motherboard) implementation + +pci:v00008086d000024C6sv00001025sd0000005A* + ID_MODEL_FROM_DATABASE=TravelMate 290 + +pci:v00008086d000024C6sv00001028sd00000196* + ID_MODEL_FROM_DATABASE=Inspiron 5160 + +pci:v00008086d000024C6sv0000103Csd0000088C* + ID_MODEL_FROM_DATABASE=NC8000 laptop + +pci:v00008086d000024C6sv0000103Csd00000890* + ID_MODEL_FROM_DATABASE=NC6000 laptop + +pci:v00008086d000024C6sv0000103Csd000008B0* + ID_MODEL_FROM_DATABASE=tc1100 tablet + +pci:v00008086d000024C6sv00001043sd00001716* + ID_MODEL_FROM_DATABASE=M2400N laptop + +pci:v00008086d000024C6sv00001043sd00001826* + ID_MODEL_FROM_DATABASE=M6800N + +pci:v00008086d000024C6sv00001071sd00008160* + ID_MODEL_FROM_DATABASE=MIM2000 + +pci:v00008086d000024C6sv0000134Dsd00004C21* + ID_MODEL_FROM_DATABASE=Latitude D500 + +pci:v00008086d000024C6sv0000144Dsd00002115* + ID_MODEL_FROM_DATABASE=X10 Laptop + +pci:v00008086d000024C6sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30/P35 notebook + +pci:v00008086d000024C6sv000014F1sd00005422* + ID_MODEL_FROM_DATABASE=D480 MDC V.9x Modem + +pci:v00008086d000024C7* + ID_MODEL_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 + +pci:v00008086d000024C7sv00001014sd00000267* + ID_MODEL_FROM_DATABASE=NetVista A30p + +pci:v00008086d000024C7sv00001014sd0000052D* + ID_MODEL_FROM_DATABASE=ThinkPad + +pci:v00008086d000024C7sv00001025sd0000005A* + ID_MODEL_FROM_DATABASE=TravelMate 290 + +pci:v00008086d000024C7sv00001028sd00000126* + ID_MODEL_FROM_DATABASE=Optiplex GX260 + +pci:v00008086d000024C7sv00001028sd00000163* + ID_MODEL_FROM_DATABASE=Latitude D505 + +pci:v00008086d000024C7sv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m + +pci:v00008086d000024C7sv00001028sd00000196* + ID_MODEL_FROM_DATABASE=Inspiron 5160 + +pci:v00008086d000024C7sv0000103Csd0000088C* + ID_MODEL_FROM_DATABASE=NC8000 laptop + +pci:v00008086d000024C7sv0000103Csd00000890* + ID_MODEL_FROM_DATABASE=NC6000 laptop + +pci:v00008086d000024C7sv0000103Csd000008B0* + ID_MODEL_FROM_DATABASE=tc1100 tablet + +pci:v00008086d000024C7sv00001043sd00008089* + ID_MODEL_FROM_DATABASE=P4B533 + +pci:v00008086d000024C7sv00001071sd00008160* + ID_MODEL_FROM_DATABASE=MIM2000 + +pci:v00008086d000024C7sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30/P35 notebook + +pci:v00008086d000024C7sv00001462sd00005800* + ID_MODEL_FROM_DATABASE=845PE Max (MS-6580) + +pci:v00008086d000024C7sv00001509sd00002990* + ID_MODEL_FROM_DATABASE=Averatec 5110H + +pci:v00008086d000024C7sv00001734sd00001004* + ID_MODEL_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV) + +pci:v00008086d000024C7sv00004C53sd00001090* + ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard + +pci:v00008086d000024C7sv00008086sd000024C2* + ID_MODEL_FROM_DATABASE=Latitude X300 + +pci:v00008086d000024C7sv00008086sd00004541* + ID_MODEL_FROM_DATABASE=Latitude D400/D500 + +pci:v00008086d000024C7sv0000E4BFsd00000CC9* + ID_MODEL_FROM_DATABASE=CC9-SAMBA + +pci:v00008086d000024C7sv0000E4BFsd00000CD2* + ID_MODEL_FROM_DATABASE=CD2-BEBOP + +pci:v00008086d000024CA* + ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller + +pci:v00008086d000024CAsv00001014sd0000052D* + ID_MODEL_FROM_DATABASE=ThinkPad + +pci:v00008086d000024CAsv00001025sd0000005A* + ID_MODEL_FROM_DATABASE=TravelMate 290 + +pci:v00008086d000024CAsv00001028sd0000014F* + ID_MODEL_FROM_DATABASE=Latitude X300 + +pci:v00008086d000024CAsv00001028sd00000163* + ID_MODEL_FROM_DATABASE=Latitude D505 + +pci:v00008086d000024CAsv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m + +pci:v00008086d000024CAsv00001028sd00000196* + ID_MODEL_FROM_DATABASE=Inspiron 5160 + +pci:v00008086d000024CAsv0000103Csd0000088C* + ID_MODEL_FROM_DATABASE=NC8000 laptop + +pci:v00008086d000024CAsv0000103Csd00000890* + ID_MODEL_FROM_DATABASE=NC6000 laptop + +pci:v00008086d000024CAsv0000103Csd000008B0* + ID_MODEL_FROM_DATABASE=tc1100 tablet + +pci:v00008086d000024CAsv00001071sd00008160* + ID_MODEL_FROM_DATABASE=MIM2000 + +pci:v00008086d000024CAsv0000144Dsd0000C005* + ID_MODEL_FROM_DATABASE=X10 Laptop + +pci:v00008086d000024CAsv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30/P35 notebook + +pci:v00008086d000024CAsv00001734sd00001055* + ID_MODEL_FROM_DATABASE=Amilo M1420 + +pci:v00008086d000024CAsv00008086sd00004541* + ID_MODEL_FROM_DATABASE=Latitude D400/D500 + +pci:v00008086d000024CB* + ID_MODEL_FROM_DATABASE=82801DB (ICH4) IDE Controller + +pci:v00008086d000024CBsv00001014sd00000267* + ID_MODEL_FROM_DATABASE=NetVista A30p + +pci:v00008086d000024CBsv00001028sd00000126* + ID_MODEL_FROM_DATABASE=Optiplex GX260 + +pci:v00008086d000024CBsv00001043sd00008089* + ID_MODEL_FROM_DATABASE=P4B533 + +pci:v00008086d000024CBsv0000114Asd00000582* + ID_MODEL_FROM_DATABASE=PC8 onboard IDE + +pci:v00008086d000024CBsv00001458sd000024C2* + ID_MODEL_FROM_DATABASE=GA-8PE667 Ultra + +pci:v00008086d000024CBsv00001462sd00005800* + ID_MODEL_FROM_DATABASE=845PE Max (MS-6580) + +pci:v00008086d000024CBsv00001734sd00001004* + ID_MODEL_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV) + +pci:v00008086d000024CBsv00004C53sd00001090* + ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard + +pci:v00008086d000024CBsv0000E4BFsd00000CC9* + ID_MODEL_FROM_DATABASE=CC9-SAMBA + +pci:v00008086d000024CBsv0000E4BFsd00000CD2* + ID_MODEL_FROM_DATABASE=CD2-BEBOP + +pci:v00008086d000024CC* + ID_MODEL_FROM_DATABASE=82801DBM (ICH4-M) LPC Interface Bridge + +pci:v00008086d000024CCsv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30 notebook + +pci:v00008086d000024CCsv00001734sd00001055* + ID_MODEL_FROM_DATABASE=Amilo M1420 + +pci:v00008086d000024CD* + ID_MODEL_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller + +pci:v00008086d000024CDsv00001014sd00000267* + ID_MODEL_FROM_DATABASE=NetVista A30p + +pci:v00008086d000024CDsv00001014sd0000052E* + ID_MODEL_FROM_DATABASE=ThinkPad + +pci:v00008086d000024CDsv00001025sd0000005A* + ID_MODEL_FROM_DATABASE=TravelMate 290 + +pci:v00008086d000024CDsv00001028sd0000011D* + ID_MODEL_FROM_DATABASE=Latitude D600 + +pci:v00008086d000024CDsv00001028sd00000126* + ID_MODEL_FROM_DATABASE=Optiplex GX260 + +pci:v00008086d000024CDsv00001028sd00000139* + ID_MODEL_FROM_DATABASE=Latitude D400 + +pci:v00008086d000024CDsv00001028sd00000152* + ID_MODEL_FROM_DATABASE=Latitude D500 + +pci:v00008086d000024CDsv00001028sd00000163* + ID_MODEL_FROM_DATABASE=Latitude D505 + +pci:v00008086d000024CDsv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m + +pci:v00008086d000024CDsv00001028sd00000196* + ID_MODEL_FROM_DATABASE=Inspiron 5160 + +pci:v00008086d000024CDsv0000103Csd0000088C* + ID_MODEL_FROM_DATABASE=NC8000 laptop + +pci:v00008086d000024CDsv0000103Csd00000890* + ID_MODEL_FROM_DATABASE=NC6000 laptop + +pci:v00008086d000024CDsv0000103Csd000008B0* + ID_MODEL_FROM_DATABASE=tc1100 tablet + +pci:v00008086d000024CDsv00001043sd00008089* + ID_MODEL_FROM_DATABASE=P4B533 + +pci:v00008086d000024CDsv00001071sd00008160* + ID_MODEL_FROM_DATABASE=MIM2000 + +pci:v00008086d000024CDsv0000114Asd00000582* + ID_MODEL_FROM_DATABASE=PC8 onboard USB 2.0 + +pci:v00008086d000024CDsv00001179sd0000FF00* + ID_MODEL_FROM_DATABASE=Satellite 2430 + +pci:v00008086d000024CDsv0000144Dsd0000C005* + ID_MODEL_FROM_DATABASE=X10 Laptop + +pci:v00008086d000024CDsv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30/P35 notebook + +pci:v00008086d000024CDsv00001462sd00003981* + ID_MODEL_FROM_DATABASE=845PE Max (MS-6580) + +pci:v00008086d000024CDsv00001509sd00001968* + ID_MODEL_FROM_DATABASE=Averatec 5110H + +pci:v00008086d000024CDsv00001734sd00001004* + ID_MODEL_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV) + +pci:v00008086d000024CDsv00001734sd00001055* + ID_MODEL_FROM_DATABASE=Amilo M1420 + +pci:v00008086d000024CDsv00004C53sd00001090* + ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard + +pci:v00008086d000024CDsv00008086sd000024C2* + ID_MODEL_FROM_DATABASE=Latitude X300 + +pci:v00008086d000024CDsv0000E4BFsd00000CC9* + ID_MODEL_FROM_DATABASE=CC9-SAMBA + +pci:v00008086d000024CDsv0000E4BFsd00000CD2* + ID_MODEL_FROM_DATABASE=CD2-BEBOP + +pci:v00008086d000024D0* + ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) LPC Interface Bridge + +pci:v00008086d000024D1* + ID_MODEL_FROM_DATABASE=82801EB (ICH5) SATA Controller + +pci:v00008086d000024D1sv00001028sd00000169* + ID_MODEL_FROM_DATABASE=Precision 470 + +pci:v00008086d000024D1sv00001028sd0000019A* + ID_MODEL_FROM_DATABASE=PowerEdge SC1425 + +pci:v00008086d000024D1sv0000103Csd000012BC* + ID_MODEL_FROM_DATABASE=d530 CMT (DG746A) + +pci:v00008086d000024D1sv0000103Csd00003208* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G2 + +pci:v00008086d000024D1sv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P4P800 series motherboard + +pci:v00008086d000024D1sv00001458sd000024D1* + ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) + +pci:v00008086d000024D1sv00001462sd00007280* + ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728) + +pci:v00008086d000024D1sv00001462sd00007650* + ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065) + +pci:v00008086d000024D1sv00001565sd00005200* + ID_MODEL_FROM_DATABASE=P4TSV Motherboard (865G) + +pci:v00008086d000024D1sv000015D9sd00004580* + ID_MODEL_FROM_DATABASE=P4SCE Mainboard + +pci:v00008086d000024D1sv00008086sd00003427* + ID_MODEL_FROM_DATABASE=S875WP1-E mainboard + +pci:v00008086d000024D1sv00008086sd00004246* + ID_MODEL_FROM_DATABASE=Desktop Board D865GBF + +pci:v00008086d000024D1sv00008086sd00004C43* + ID_MODEL_FROM_DATABASE=Desktop Board D865GLC + +pci:v00008086d000024D1sv00008086sd0000524C* + ID_MODEL_FROM_DATABASE=D865PERL mainboard + +pci:v00008086d000024D2* + ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 + +pci:v00008086d000024D2sv00001014sd000002DD* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00008086d000024D2sv00001014sd000002ED* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00008086d000024D2sv00001028sd00000169* + ID_MODEL_FROM_DATABASE=Precision 470 + +pci:v00008086d000024D2sv00001028sd0000016C* + ID_MODEL_FROM_DATABASE=PowerEdge 1850 onboard UHCI + +pci:v00008086d000024D2sv00001028sd0000016D* + ID_MODEL_FROM_DATABASE=PowerEdge 2850 onboard UHCI + +pci:v00008086d000024D2sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 onboard UHCI + +pci:v00008086d000024D2sv00001028sd00000183* + ID_MODEL_FROM_DATABASE=PowerEdge 1800 + +pci:v00008086d000024D2sv00001028sd0000019A* + ID_MODEL_FROM_DATABASE=PowerEdge SC1425 + +pci:v00008086d000024D2sv0000103Csd0000006A* + ID_MODEL_FROM_DATABASE=NX9500 + +pci:v00008086d000024D2sv0000103Csd000012BC* + ID_MODEL_FROM_DATABASE=d530 CMT (DG746A) + +pci:v00008086d000024D2sv0000103Csd00003208* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G2 + +pci:v00008086d000024D2sv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard + +pci:v00008086d000024D2sv00001458sd000024D2* + ID_MODEL_FROM_DATABASE=GA-8IPE1000/8KNXP motherboard + +pci:v00008086d000024D2sv00001462sd00007280* + ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728) + +pci:v00008086d000024D2sv00001565sd00003101* + ID_MODEL_FROM_DATABASE=P4TSV Motherboard (865G) + +pci:v00008086d000024D2sv000015D9sd00004580* + ID_MODEL_FROM_DATABASE=P4SCE Mainboard + +pci:v00008086d000024D2sv00001734sd0000101C* + ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX series onboard UHCI + +pci:v00008086d000024D2sv00008086sd00003427* + ID_MODEL_FROM_DATABASE=S875WP1-E mainboard + +pci:v00008086d000024D2sv00008086sd00004246* + ID_MODEL_FROM_DATABASE=Desktop Board D865GBF + +pci:v00008086d000024D2sv00008086sd00004C43* + ID_MODEL_FROM_DATABASE=Desktop Board D865GLC + +pci:v00008086d000024D2sv00008086sd0000524C* + ID_MODEL_FROM_DATABASE=D865PERL mainboard + +pci:v00008086d000024D3* + ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller + +pci:v00008086d000024D3sv00001014sd000002DD* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00008086d000024D3sv00001014sd000002ED* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00008086d000024D3sv00001028sd00000156* + ID_MODEL_FROM_DATABASE=Precision 360 + +pci:v00008086d000024D3sv00001028sd00000169* + ID_MODEL_FROM_DATABASE=Precision 470 + +pci:v00008086d000024D3sv0000103Csd000012BC* + ID_MODEL_FROM_DATABASE=d330 uT + +pci:v00008086d000024D3sv0000103Csd00003208* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G2 + +pci:v00008086d000024D3sv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard + +pci:v00008086d000024D3sv00001458sd000024D2* + ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) + +pci:v00008086d000024D3sv00001462sd00007280* + ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728) + +pci:v00008086d000024D3sv00001462sd00007650* + ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065) + +pci:v00008086d000024D3sv00001565sd00003101* + ID_MODEL_FROM_DATABASE=P4TSV Motherboard (865G) + +pci:v00008086d000024D3sv000015D9sd00004580* + ID_MODEL_FROM_DATABASE=P4SCE Mainboard + +pci:v00008086d000024D3sv00001734sd0000101C* + ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX S2 series SMBus + +pci:v00008086d000024D3sv00008086sd00003427* + ID_MODEL_FROM_DATABASE=S875WP1-E mainboard + +pci:v00008086d000024D3sv00008086sd00004246* + ID_MODEL_FROM_DATABASE=Desktop Board D865GBF + +pci:v00008086d000024D3sv00008086sd00004C43* + ID_MODEL_FROM_DATABASE=Desktop Board D865GLC + +pci:v00008086d000024D3sv00008086sd0000524C* + ID_MODEL_FROM_DATABASE=D865PERL mainboard + +pci:v00008086d000024D4* + ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 + +pci:v00008086d000024D4sv00001014sd000002DD* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00008086d000024D4sv00001014sd000002ED* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00008086d000024D4sv00001028sd00000169* + ID_MODEL_FROM_DATABASE=Precision 470 + +pci:v00008086d000024D4sv00001028sd0000016C* + ID_MODEL_FROM_DATABASE=PowerEdge 1850 onboard UHCI + +pci:v00008086d000024D4sv00001028sd0000016D* + ID_MODEL_FROM_DATABASE=PowerEdge 2850 onboard UHCI + +pci:v00008086d000024D4sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 onboard UHCI + +pci:v00008086d000024D4sv00001028sd00000183* + ID_MODEL_FROM_DATABASE=PowerEdge 1800 + +pci:v00008086d000024D4sv00001028sd0000019A* + ID_MODEL_FROM_DATABASE=PowerEdge SC1425 + +pci:v00008086d000024D4sv0000103Csd0000006A* + ID_MODEL_FROM_DATABASE=NX9500 + +pci:v00008086d000024D4sv0000103Csd000012BC* + ID_MODEL_FROM_DATABASE=d530 CMT (DG746A) + +pci:v00008086d000024D4sv0000103Csd00003208* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G2 + +pci:v00008086d000024D4sv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard + +pci:v00008086d000024D4sv00001458sd000024D2* + ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) + +pci:v00008086d000024D4sv00001462sd00007280* + ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728) + +pci:v00008086d000024D4sv00001462sd00007650* + ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065) + +pci:v00008086d000024D4sv00001565sd00003101* + ID_MODEL_FROM_DATABASE=P4TSV Motherboard (865G) + +pci:v00008086d000024D4sv000015D9sd00004580* + ID_MODEL_FROM_DATABASE=P4SCE Mainboard + +pci:v00008086d000024D4sv00001734sd0000101C* + ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard UHCI + +pci:v00008086d000024D4sv00008086sd00003427* + ID_MODEL_FROM_DATABASE=S875WP1-E mainboard + +pci:v00008086d000024D4sv00008086sd00004246* + ID_MODEL_FROM_DATABASE=Desktop Board D865GBF + +pci:v00008086d000024D4sv00008086sd00004C43* + ID_MODEL_FROM_DATABASE=Desktop Board D865GLC + +pci:v00008086d000024D4sv00008086sd0000524C* + ID_MODEL_FROM_DATABASE=D865PERL mainboard + +pci:v00008086d000024D5* + ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller + +pci:v00008086d000024D5sv0000100Asd0000147B* + ID_MODEL_FROM_DATABASE=Abit IS7-E motherboard + +pci:v00008086d000024D5sv00001028sd00000169* + ID_MODEL_FROM_DATABASE=Precision 470 + +pci:v00008086d000024D5sv0000103Csd0000006A* + ID_MODEL_FROM_DATABASE=NX9500 + +pci:v00008086d000024D5sv0000103Csd000012BC* + ID_MODEL_FROM_DATABASE=d330 uT + +pci:v00008086d000024D5sv00001043sd000080F3* + ID_MODEL_FROM_DATABASE=P4P800 series motherboard + +pci:v00008086d000024D5sv00001043sd0000810F* + ID_MODEL_FROM_DATABASE=P5P800-MX Mainboard + +pci:v00008086d000024D5sv00001458sd0000A002* + ID_MODEL_FROM_DATABASE=GA-8IPE1000/8KNXP motherboard + +pci:v00008086d000024D5sv00001462sd00000080* + ID_MODEL_FROM_DATABASE=865PE Neo2-V (MS-6788) Mainboard + +pci:v00008086d000024D5sv00001462sd00007280* + ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728) + +pci:v00008086d000024D5sv00001462sd00007650* + ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065) + +pci:v00008086d000024D5sv00008086sd0000A000* + ID_MODEL_FROM_DATABASE=D865PERL mainboard + +pci:v00008086d000024D5sv00008086sd0000E000* + ID_MODEL_FROM_DATABASE=D865PERL mainboard + +pci:v00008086d000024D5sv00008086sd0000E001* + ID_MODEL_FROM_DATABASE=Desktop Board D865GBF + +pci:v00008086d000024D5sv00008086sd0000E002* + ID_MODEL_FROM_DATABASE=SoundMax Intergrated Digital Audio + +pci:v00008086d000024D6* + ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller + +pci:v00008086d000024D6sv0000103Csd0000006A* + ID_MODEL_FROM_DATABASE=NX9500 + +pci:v00008086d000024D7* + ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 + +pci:v00008086d000024D7sv00001014sd000002ED* + ID_MODEL_FROM_DATABASE=xSeries server mainboard + +pci:v00008086d000024D7sv00001028sd00000169* + ID_MODEL_FROM_DATABASE=Precision 470 + +pci:v00008086d000024D7sv00001028sd0000016C* + ID_MODEL_FROM_DATABASE=PowerEdge 1850 onboard UHCI + +pci:v00008086d000024D7sv00001028sd0000016D* + ID_MODEL_FROM_DATABASE=PowerEdge 2850 onboard UHCI + +pci:v00008086d000024D7sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 onboard UHCI + +pci:v00008086d000024D7sv00001028sd00000183* + ID_MODEL_FROM_DATABASE=PowerEdge 1800 + +pci:v00008086d000024D7sv0000103Csd0000006A* + ID_MODEL_FROM_DATABASE=NX9500 + +pci:v00008086d000024D7sv0000103Csd000012BC* + ID_MODEL_FROM_DATABASE=d530 CMT (DG746A) + +pci:v00008086d000024D7sv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard + +pci:v00008086d000024D7sv00001458sd000024D2* + ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) + +pci:v00008086d000024D7sv00001462sd00007280* + ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728) + +pci:v00008086d000024D7sv00001462sd00007650* + ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065) + +pci:v00008086d000024D7sv00001565sd00003101* + ID_MODEL_FROM_DATABASE=P4TSV Motherboard (865G) + +pci:v00008086d000024D7sv000015D9sd00004580* + ID_MODEL_FROM_DATABASE=P4SCE Mainboard + +pci:v00008086d000024D7sv00001734sd0000101C* + ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard UHCI + +pci:v00008086d000024D7sv00008086sd00003427* + ID_MODEL_FROM_DATABASE=S875WP1-E mainboard + +pci:v00008086d000024D7sv00008086sd00004246* + ID_MODEL_FROM_DATABASE=Desktop Board D865GBF + +pci:v00008086d000024D7sv00008086sd00004C43* + ID_MODEL_FROM_DATABASE=Desktop Board D865GLC + +pci:v00008086d000024D7sv00008086sd0000524C* + ID_MODEL_FROM_DATABASE=D865PERL mainboard + +pci:v00008086d000024DB* + ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller + +pci:v00008086d000024DBsv00001014sd000002DD* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00008086d000024DBsv00001014sd000002ED* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00008086d000024DBsv00001028sd00000169* + ID_MODEL_FROM_DATABASE=Precision 470 + +pci:v00008086d000024DBsv00001028sd0000016C* + ID_MODEL_FROM_DATABASE=PowerEdge 1850 IDE Controller + +pci:v00008086d000024DBsv00001028sd0000016D* + ID_MODEL_FROM_DATABASE=PowerEdge 2850 IDE Controller + +pci:v00008086d000024DBsv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 IDE Controller + +pci:v00008086d000024DBsv00001028sd0000019A* + ID_MODEL_FROM_DATABASE=PowerEdge SC1425 + +pci:v00008086d000024DBsv0000103Csd0000006A* + ID_MODEL_FROM_DATABASE=NX9500 + +pci:v00008086d000024DBsv0000103Csd000012BC* + ID_MODEL_FROM_DATABASE=d530 CMT (DG746A) + +pci:v00008086d000024DBsv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard + +pci:v00008086d000024DBsv00001458sd000024D2* + ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) + +pci:v00008086d000024DBsv00001462sd00007280* + ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728) + +pci:v00008086d000024DBsv00001462sd00007580* + ID_MODEL_FROM_DATABASE=MSI 875P + +pci:v00008086d000024DBsv00001462sd00007650* + ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065) + +pci:v00008086d000024DBsv00001565sd00003101* + ID_MODEL_FROM_DATABASE=P4TSV Motherboard (865G) + +pci:v00008086d000024DBsv000015D9sd00004580* + ID_MODEL_FROM_DATABASE=P4SCE Mainboard + +pci:v00008086d000024DBsv00001734sd0000101C* + ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard IDE + +pci:v00008086d000024DBsv00008086sd000024DB* + ID_MODEL_FROM_DATABASE=P4C800 Mainboard + +pci:v00008086d000024DBsv00008086sd00003427* + ID_MODEL_FROM_DATABASE=S875WP1-E mainboard + +pci:v00008086d000024DBsv00008086sd00004246* + ID_MODEL_FROM_DATABASE=Desktop Board D865GBF + +pci:v00008086d000024DBsv00008086sd00004C43* + ID_MODEL_FROM_DATABASE=Desktop Board D865GLC + +pci:v00008086d000024DBsv00008086sd0000524C* + ID_MODEL_FROM_DATABASE=D865PERL mainboard + +pci:v00008086d000024DC* + ID_MODEL_FROM_DATABASE=82801EB (ICH5) LPC Interface Bridge + +pci:v00008086d000024DD* + ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller + +pci:v00008086d000024DDsv00001014sd000002DD* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00008086d000024DDsv00001014sd000002ED* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00008086d000024DDsv00001028sd00000169* + ID_MODEL_FROM_DATABASE=Precision 470 + +pci:v00008086d000024DDsv00001028sd0000016C* + ID_MODEL_FROM_DATABASE=PowerEdge 1850 onboard EHCI + +pci:v00008086d000024DDsv00001028sd0000016D* + ID_MODEL_FROM_DATABASE=PowerEdge 2850 onboard EHCI + +pci:v00008086d000024DDsv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 onboard EHCI + +pci:v00008086d000024DDsv00001028sd00000183* + ID_MODEL_FROM_DATABASE=PowerEdge 1800 + +pci:v00008086d000024DDsv00001028sd0000019A* + ID_MODEL_FROM_DATABASE=PowerEdge SC1425 + +pci:v00008086d000024DDsv0000103Csd0000006A* + ID_MODEL_FROM_DATABASE=NX9500 + +pci:v00008086d000024DDsv0000103Csd000012BC* + ID_MODEL_FROM_DATABASE=d530 CMT (DG746A) + +pci:v00008086d000024DDsv0000103Csd00003208* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G2 + +pci:v00008086d000024DDsv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard + +pci:v00008086d000024DDsv00001458sd00005006* + ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) + +pci:v00008086d000024DDsv00001462sd00007280* + ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728) + +pci:v00008086d000024DDsv00001462sd00007650* + ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065) + +pci:v00008086d000024DDsv00008086sd00003427* + ID_MODEL_FROM_DATABASE=S875WP1-E mainboard + +pci:v00008086d000024DDsv00008086sd00004246* + ID_MODEL_FROM_DATABASE=Desktop Board D865GBF + +pci:v00008086d000024DDsv00008086sd00004C43* + ID_MODEL_FROM_DATABASE=Desktop Board D865GLC + +pci:v00008086d000024DDsv00008086sd0000524C* + ID_MODEL_FROM_DATABASE=D865PERL mainboard + +pci:v00008086d000024DE* + ID_MODEL_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 + +pci:v00008086d000024DEsv00001014sd000002ED* + ID_MODEL_FROM_DATABASE=xSeries server mainboard + +pci:v00008086d000024DEsv00001028sd00000169* + ID_MODEL_FROM_DATABASE=Precision 470 + +pci:v00008086d000024DEsv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard + +pci:v00008086d000024DEsv00001458sd000024D2* + ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) + +pci:v00008086d000024DEsv00001462sd00007280* + ID_MODEL_FROM_DATABASE=865PE Neo2 (MS-6728) + +pci:v00008086d000024DEsv00001462sd00007650* + ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065) + +pci:v00008086d000024DEsv00001565sd00003101* + ID_MODEL_FROM_DATABASE=P4TSV Motherboard (865G) + +pci:v00008086d000024DEsv000015D9sd00004580* + ID_MODEL_FROM_DATABASE=P4SCE Mainboard + +pci:v00008086d000024DEsv00001734sd0000101C* + ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard UHCI + +pci:v00008086d000024DEsv00008086sd00003427* + ID_MODEL_FROM_DATABASE=S875WP1-E mainboard + +pci:v00008086d000024DEsv00008086sd00004246* + ID_MODEL_FROM_DATABASE=Desktop Board D865GBF + +pci:v00008086d000024DEsv00008086sd00004C43* + ID_MODEL_FROM_DATABASE=Desktop Board D865GLC + +pci:v00008086d000024DEsv00008086sd0000524C* + ID_MODEL_FROM_DATABASE=D865PERL mainboard + +pci:v00008086d000024DF* + ID_MODEL_FROM_DATABASE=82801ER (ICH5R) SATA Controller + +pci:v00008086d00002500* + ID_MODEL_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge (MCH) + +pci:v00008086d00002500sv00001028sd00000095* + ID_MODEL_FROM_DATABASE=Precision Workstation 220 Chipset + +pci:v00008086d00002500sv00001043sd0000801C* + ID_MODEL_FROM_DATABASE=P3C-2000 system chipset + +pci:v00008086d00002501* + ID_MODEL_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge (MCH) + +pci:v00008086d00002501sv00001043sd0000801C* + ID_MODEL_FROM_DATABASE=P3C-2000 system chipset + +pci:v00008086d0000250B* + ID_MODEL_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge + +pci:v00008086d0000250F* + ID_MODEL_FROM_DATABASE=82820 820 (Camino) Chipset AGP Bridge + +pci:v00008086d00002520* + ID_MODEL_FROM_DATABASE=82805AA MTH Memory Translator Hub + +pci:v00008086d00002521* + ID_MODEL_FROM_DATABASE=82804AA MRH-S Memory Repeater Hub for SDRAM + +pci:v00008086d00002530* + ID_MODEL_FROM_DATABASE=82850 850 (Tehama) Chipset Host Bridge (MCH) + +pci:v00008086d00002530sv00001028sd000000C7* + ID_MODEL_FROM_DATABASE=Dimension 8100 + +pci:v00008086d00002530sv0000147Bsd00000507* + ID_MODEL_FROM_DATABASE=TH7II-RAID + +pci:v00008086d00002531* + ID_MODEL_FROM_DATABASE=82860 860 (Wombat) Chipset Host Bridge (MCH) + +pci:v00008086d00002531sv00001028sd000000D8* + ID_MODEL_FROM_DATABASE=Precision 530 + +pci:v00008086d00002532* + ID_MODEL_FROM_DATABASE=82850 850 (Tehama) Chipset AGP Bridge + +pci:v00008086d00002533* + ID_MODEL_FROM_DATABASE=82860 860 (Wombat) Chipset AGP Bridge + +pci:v00008086d00002534* + ID_MODEL_FROM_DATABASE=82860 860 (Wombat) Chipset PCI Bridge + +pci:v00008086d00002540* + ID_MODEL_FROM_DATABASE=E7500 Memory Controller Hub + +pci:v00008086d00002540sv000015D9sd00003480* + ID_MODEL_FROM_DATABASE=P4DP6 + +pci:v00008086d00002541* + ID_MODEL_FROM_DATABASE=E7500/E7501 Host RASUM Controller + +pci:v00008086d00002541sv000015D9sd00003480* + ID_MODEL_FROM_DATABASE=P4DP6 + +pci:v00008086d00002541sv00004C53sd00001090* + ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard + +pci:v00008086d00002541sv00008086sd00003424* + ID_MODEL_FROM_DATABASE=SE7501HG2 Mainboard + +pci:v00008086d00002543* + ID_MODEL_FROM_DATABASE=E7500/E7501 Hub Interface B PCI-to-PCI Bridge + +pci:v00008086d00002544* + ID_MODEL_FROM_DATABASE=E7500/E7501 Hub Interface B RASUM Controller + +pci:v00008086d00002544sv00004C53sd00001090* + ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard + +pci:v00008086d00002545* + ID_MODEL_FROM_DATABASE=E7500/E7501 Hub Interface C PCI-to-PCI Bridge + +pci:v00008086d00002546* + ID_MODEL_FROM_DATABASE=E7500/E7501 Hub Interface C RASUM Controller + +pci:v00008086d00002547* + ID_MODEL_FROM_DATABASE=E7500/E7501 Hub Interface D PCI-to-PCI Bridge + +pci:v00008086d00002548* + ID_MODEL_FROM_DATABASE=E7500/E7501 Hub Interface D RASUM Controller + +pci:v00008086d0000254C* + ID_MODEL_FROM_DATABASE=E7501 Memory Controller Hub + +pci:v00008086d0000254Csv00004C53sd00001090* + ID_MODEL_FROM_DATABASE=Cx9 / Vx9 mainboard + +pci:v00008086d0000254Csv00008086sd00003424* + ID_MODEL_FROM_DATABASE=SE7501HG2 Mainboard + +pci:v00008086d00002550* + ID_MODEL_FROM_DATABASE=E7505 Memory Controller Hub + +pci:v00008086d00002551* + ID_MODEL_FROM_DATABASE=E7505/E7205 Series RAS Controller + +pci:v00008086d00002552* + ID_MODEL_FROM_DATABASE=E7505/E7205 PCI-to-AGP Bridge + +pci:v00008086d00002553* + ID_MODEL_FROM_DATABASE=E7505 Hub Interface B PCI-to-PCI Bridge + +pci:v00008086d00002554* + ID_MODEL_FROM_DATABASE=E7505 Hub Interface B PCI-to-PCI Bridge RAS Controller + +pci:v00008086d0000255D* + ID_MODEL_FROM_DATABASE=E7205 Memory Controller Hub + +pci:v00008086d00002560* + ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface + +pci:v00008086d00002560sv00001028sd00000126* + ID_MODEL_FROM_DATABASE=Optiplex GX260 + +pci:v00008086d00002560sv00001458sd00002560* + ID_MODEL_FROM_DATABASE=GA-8PE667 Ultra + +pci:v00008086d00002560sv00001462sd00005800* + ID_MODEL_FROM_DATABASE=845PE Max (MS-6580) + +pci:v00008086d00002561* + ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE/PE Host-to-AGP Bridge + +pci:v00008086d00002562* + ID_MODEL_FROM_DATABASE=82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device + +pci:v00008086d00002562sv00000E11sd000000B9* + ID_MODEL_FROM_DATABASE=Evo D510 SFF + +pci:v00008086d00002562sv00001014sd00000267* + ID_MODEL_FROM_DATABASE=NetVista A30p + +pci:v00008086d00002562sv00001734sd00001003* + ID_MODEL_FROM_DATABASE=D1521 Mainboard (Fujitsu-Siemens) + +pci:v00008086d00002562sv00001734sd00001004* + ID_MODEL_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV) + +pci:v00008086d00002570* + ID_MODEL_FROM_DATABASE=82865G/PE/P DRAM Controller/Host-Hub Interface + +pci:v00008086d00002570sv0000103Csd0000006A* + ID_MODEL_FROM_DATABASE=NX9500 + +pci:v00008086d00002570sv0000103Csd000012BC* + ID_MODEL_FROM_DATABASE=d330 uT + +pci:v00008086d00002570sv00001043sd000080F2* + ID_MODEL_FROM_DATABASE=P4P800/P5P800 series motherboard + +pci:v00008086d00002570sv00001458sd00002570* + ID_MODEL_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) + +pci:v00008086d00002571* + ID_MODEL_FROM_DATABASE=82865G/PE/P AGP Bridge + +pci:v00008086d00002572* + ID_MODEL_FROM_DATABASE=82865G Integrated Graphics Controller + +pci:v00008086d00002572sv00001028sd0000019D* + ID_MODEL_FROM_DATABASE=Dimension 3000 + +pci:v00008086d00002572sv0000103Csd000012BC* + ID_MODEL_FROM_DATABASE=D530 sff(dc578av) + +pci:v00008086d00002572sv00001043sd000080A5* + ID_MODEL_FROM_DATABASE=P5P800-MX Mainboard + +pci:v00008086d00002572sv00001462sd00007650* + ID_MODEL_FROM_DATABASE=Hetis 865GV-E (MS-7065) + +pci:v00008086d00002572sv00001734sd0000101B* + ID_MODEL_FROM_DATABASE=Fujitsu-Siemens Scenic E300 i865GV + +pci:v00008086d00002572sv00008086sd00004246* + ID_MODEL_FROM_DATABASE=Desktop Board D865GBF + +pci:v00008086d00002572sv00008086sd00004C43* + ID_MODEL_FROM_DATABASE=Desktop Board D865GLC + +pci:v00008086d00002573* + ID_MODEL_FROM_DATABASE=82865G/PE/P PCI to CSA Bridge + +pci:v00008086d00002576* + ID_MODEL_FROM_DATABASE=82865G/PE/P Processor to I/O Memory Interface + +pci:v00008086d00002578* + ID_MODEL_FROM_DATABASE=82875P/E7210 Memory Controller Hub + +pci:v00008086d00002578sv00001458sd00002578* + ID_MODEL_FROM_DATABASE=GA-8KNXP motherboard (875P) + +pci:v00008086d00002578sv00001462sd00007580* + ID_MODEL_FROM_DATABASE=MS-6758 (875P Neo) + +pci:v00008086d00002578sv000015D9sd00004580* + ID_MODEL_FROM_DATABASE=P4SCE Motherboard + +pci:v00008086d00002579* + ID_MODEL_FROM_DATABASE=82875P Processor to AGP Controller + +pci:v00008086d0000257B* + ID_MODEL_FROM_DATABASE=82875P/E7210 Processor to PCI to CSA Bridge + +pci:v00008086d0000257E* + ID_MODEL_FROM_DATABASE=82875P/E7210 Processor to I/O Memory Interface + +pci:v00008086d00002580* + ID_MODEL_FROM_DATABASE=82915G/P/GV/GL/PL/910GL Memory Controller Hub + +pci:v00008086d00002580sv00001458sd00002580* + ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard + +pci:v00008086d00002580sv00001462sd00007028* + ID_MODEL_FROM_DATABASE=915P/G Neo2 + +pci:v00008086d00002580sv00001734sd0000105B* + ID_MODEL_FROM_DATABASE=Scenic W620 + +pci:v00008086d00002581* + ID_MODEL_FROM_DATABASE=82915G/P/GV/GL/PL/910GL PCI Express Root Port + +pci:v00008086d00002582* + ID_MODEL_FROM_DATABASE=82915G/GV/910GL Integrated Graphics Controller + +pci:v00008086d00002582sv00001028sd00001079* + ID_MODEL_FROM_DATABASE=Optiplex GX280 + +pci:v00008086d00002582sv0000103Csd00003006* + ID_MODEL_FROM_DATABASE=DC7100 SFF(DX878AV) + +pci:v00008086d00002582sv00001043sd00002582* + ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard + +pci:v00008086d00002582sv00001458sd00002582* + ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard + +pci:v00008086d00002582sv00001734sd0000105B* + ID_MODEL_FROM_DATABASE=Scenic W620 + +pci:v00008086d00002582sv00001849sd00002582* + ID_MODEL_FROM_DATABASE=ASRock P4Dual-915GL + +pci:v00008086d00002584* + ID_MODEL_FROM_DATABASE=82925X/XE Memory Controller Hub + +pci:v00008086d00002584sv00001028sd00000177* + ID_MODEL_FROM_DATABASE=Dimension 8400 + +pci:v00008086d00002585* + ID_MODEL_FROM_DATABASE=82925X/XE PCI Express Root Port + +pci:v00008086d00002588* + ID_MODEL_FROM_DATABASE=E7220/E7221 Memory Controller Hub + +pci:v00008086d00002589* + ID_MODEL_FROM_DATABASE=E7220/E7221 PCI Express Root Port + +pci:v00008086d0000258A* + ID_MODEL_FROM_DATABASE=E7221 Integrated Graphics Controller + +pci:v00008086d00002590* + ID_MODEL_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller + +pci:v00008086d00002590sv00001014sd00000575* + ID_MODEL_FROM_DATABASE=ThinkPad Z60t + +pci:v00008086d00002590sv00001028sd00000182* + ID_MODEL_FROM_DATABASE=Dell Latitude C610 + +pci:v00008086d00002590sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v00008086d00002590sv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v00008086d00002590sv0000104Dsd000081B7* + ID_MODEL_FROM_DATABASE=Vaio VGN-S3XP + +pci:v00008086d00002590sv0000A304sd000081B7* + ID_MODEL_FROM_DATABASE=Vaio VGN-S3XP + +pci:v00008086d00002590sv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d00002590sv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d00002590sv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d00002591* + ID_MODEL_FROM_DATABASE=Mobile 915GM/PM Express PCI Express Root Port + +pci:v00008086d00002591sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation + +pci:v00008086d00002592* + ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller + +pci:v00008086d00002592sv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v00008086d00002592sv0000103Csd0000308A* + ID_MODEL_FROM_DATABASE=NC6220 + +pci:v00008086d00002592sv00001043sd00001881* + ID_MODEL_FROM_DATABASE=GMA 900 915GM Integrated Graphics + +pci:v00008086d00002592sv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d00002592sv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d00002592sv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d000025A1* + ID_MODEL_FROM_DATABASE=6300ESB LPC Interface Controller + +pci:v00008086d000025A2* + ID_MODEL_FROM_DATABASE=6300ESB PATA Storage Controller + +pci:v00008086d000025A2sv00001734sd00001073* + ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + +pci:v00008086d000025A2sv00001775sd000010D0* + ID_MODEL_FROM_DATABASE=V5D Single Board Computer IDE + +pci:v00008086d000025A2sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d000025A2sv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d000025A2sv00004C53sd000010B0* + ID_MODEL_FROM_DATABASE=CL9 mainboard + +pci:v00008086d000025A2sv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v00008086d000025A3* + ID_MODEL_FROM_DATABASE=6300ESB SATA Storage Controller + +pci:v00008086d000025A3sv00001734sd00001073* + ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + +pci:v00008086d000025A3sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d000025A3sv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d000025A3sv00004C53sd000010B0* + ID_MODEL_FROM_DATABASE=CL9 mainboard + +pci:v00008086d000025A3sv00004C53sd000010D0* + ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC + +pci:v00008086d000025A3sv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v00008086d000025A4* + ID_MODEL_FROM_DATABASE=6300ESB SMBus Controller + +pci:v00008086d000025A4sv00001734sd00001073* + ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + +pci:v00008086d000025A4sv00001775sd000010D0* + ID_MODEL_FROM_DATABASE=V5D Single Board Computer + +pci:v00008086d000025A4sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d000025A4sv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d000025A4sv00004C53sd000010B0* + ID_MODEL_FROM_DATABASE=CL9 mainboard + +pci:v00008086d000025A4sv00004C53sd000010D0* + ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC + +pci:v00008086d000025A4sv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v00008086d000025A6* + ID_MODEL_FROM_DATABASE=6300ESB AC'97 Audio Controller + +pci:v00008086d000025A6sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d000025A6sv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d000025A6sv00004C53sd000010B0* + ID_MODEL_FROM_DATABASE=CL9 mainboard + +pci:v00008086d000025A7* + ID_MODEL_FROM_DATABASE=6300ESB AC'97 Modem Controller + +pci:v00008086d000025A9* + ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller + +pci:v00008086d000025A9sv00001734sd00001073* + ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + +pci:v00008086d000025A9sv00001775sd000010D0* + ID_MODEL_FROM_DATABASE=V5D Single Board Computer USB + +pci:v00008086d000025A9sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d000025A9sv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d000025A9sv00004C53sd000010B0* + ID_MODEL_FROM_DATABASE=CL9 mainboard + +pci:v00008086d000025A9sv00004C53sd000010D0* + ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC + +pci:v00008086d000025A9sv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v00008086d000025AA* + ID_MODEL_FROM_DATABASE=6300ESB USB Universal Host Controller + +pci:v00008086d000025AAsv00001734sd00001073* + ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + +pci:v00008086d000025AAsv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d000025AAsv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d000025AAsv00004C53sd000010B0* + ID_MODEL_FROM_DATABASE=CL9 mainboard + +pci:v00008086d000025AAsv00004C53sd000010D0* + ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC + +pci:v00008086d000025AAsv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v00008086d000025AB* + ID_MODEL_FROM_DATABASE=6300ESB Watchdog Timer + +pci:v00008086d000025ABsv00001734sd00001073* + ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + +pci:v00008086d000025ABsv00001775sd000010D0* + ID_MODEL_FROM_DATABASE=V5D Single Board Computer + +pci:v00008086d000025ABsv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d000025ABsv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d000025ABsv00004C53sd000010B0* + ID_MODEL_FROM_DATABASE=CL9 mainboard + +pci:v00008086d000025ABsv00004C53sd000010D0* + ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC + +pci:v00008086d000025ABsv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v00008086d000025AC* + ID_MODEL_FROM_DATABASE=6300ESB I/O Advanced Programmable Interrupt Controller + +pci:v00008086d000025ACsv00001734sd00001073* + ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + +pci:v00008086d000025ACsv00001775sd000010D0* + ID_MODEL_FROM_DATABASE=V5D Single Board Computer + +pci:v00008086d000025ACsv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d000025ACsv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d000025ACsv00004C53sd000010B0* + ID_MODEL_FROM_DATABASE=CL9 mainboard + +pci:v00008086d000025ACsv00004C53sd000010D0* + ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC + +pci:v00008086d000025ACsv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v00008086d000025AD* + ID_MODEL_FROM_DATABASE=6300ESB USB2 Enhanced Host Controller + +pci:v00008086d000025ADsv00001734sd00001073* + ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + +pci:v00008086d000025ADsv00001775sd000010D0* + ID_MODEL_FROM_DATABASE=V5D Single Board Computer USB 2.0 + +pci:v00008086d000025ADsv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d000025ADsv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d000025ADsv00004C53sd000010B0* + ID_MODEL_FROM_DATABASE=CL9 mainboard + +pci:v00008086d000025ADsv00004C53sd000010D0* + ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC + +pci:v00008086d000025ADsv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v00008086d000025AE* + ID_MODEL_FROM_DATABASE=6300ESB 64-bit PCI-X Bridge + +pci:v00008086d000025B0* + ID_MODEL_FROM_DATABASE=6300ESB SATA RAID Controller + +pci:v00008086d000025B0sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d000025B0sv00004C53sd000010D0* + ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC + +pci:v00008086d000025B0sv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v00008086d000025C0* + ID_MODEL_FROM_DATABASE=5000X Chipset Memory Controller Hub + +pci:v00008086d000025D0* + ID_MODEL_FROM_DATABASE=5000Z Chipset Memory Controller Hub + +pci:v00008086d000025D4* + ID_MODEL_FROM_DATABASE=5000V Chipset Memory Controller Hub + +pci:v00008086d000025D4sv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d000025D8* + ID_MODEL_FROM_DATABASE=5000P Chipset Memory Controller Hub + +pci:v00008086d000025D8sv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d000025D8sv00008086sd00003476* + ID_MODEL_FROM_DATABASE=S5000PSLSATA Server Board + +pci:v00008086d000025E2* + ID_MODEL_FROM_DATABASE=5000 Series Chipset PCI Express x4 Port 2 + +pci:v00008086d000025E3* + ID_MODEL_FROM_DATABASE=5000 Series Chipset PCI Express x4 Port 3 + +pci:v00008086d000025E4* + ID_MODEL_FROM_DATABASE=5000 Series Chipset PCI Express x4 Port 4 + +pci:v00008086d000025E5* + ID_MODEL_FROM_DATABASE=5000 Series Chipset PCI Express x4 Port 5 + +pci:v00008086d000025E6* + ID_MODEL_FROM_DATABASE=5000 Series Chipset PCI Express x4 Port 6 + +pci:v00008086d000025E7* + ID_MODEL_FROM_DATABASE=5000 Series Chipset PCI Express x4 Port 7 + +pci:v00008086d000025F0* + ID_MODEL_FROM_DATABASE=5000 Series Chipset FSB Registers + +pci:v00008086d000025F0sv00001028sd000001BB* + ID_MODEL_FROM_DATABASE=PowerEdge 1955 FSB Registers + +pci:v00008086d000025F0sv0000103Csd000031FD* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d000025F0sv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d000025F0sv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d000025F0sv00008086sd00003476* + ID_MODEL_FROM_DATABASE=S5000PSLSATA Server Board + +pci:v00008086d000025F1* + ID_MODEL_FROM_DATABASE=5000 Series Chipset Reserved Registers + +pci:v00008086d000025F1sv0000103Csd000031FD* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d000025F1sv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d000025F1sv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d000025F1sv00008086sd00003476* + ID_MODEL_FROM_DATABASE=S5000PSLSATA Server Board + +pci:v00008086d000025F3* + ID_MODEL_FROM_DATABASE=5000 Series Chipset Reserved Registers + +pci:v00008086d000025F3sv0000103Csd000031FD* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d000025F3sv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d000025F3sv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d000025F3sv00008086sd00003476* + ID_MODEL_FROM_DATABASE=S5000PSLSATA Server Board + +pci:v00008086d000025F5* + ID_MODEL_FROM_DATABASE=5000 Series Chipset FBD Registers + +pci:v00008086d000025F5sv0000103Csd000031FD* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d000025F5sv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d000025F5sv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d000025F5sv00008086sd00003476* + ID_MODEL_FROM_DATABASE=S5000PSLSATA Server Board + +pci:v00008086d000025F6* + ID_MODEL_FROM_DATABASE=5000 Series Chipset FBD Registers + +pci:v00008086d000025F6sv0000103Csd000031FD* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d000025F6sv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d000025F6sv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d000025F6sv00008086sd00003476* + ID_MODEL_FROM_DATABASE=S5000PSLSATA Server Board + +pci:v00008086d000025F7* + ID_MODEL_FROM_DATABASE=5000 Series Chipset PCI Express x8 Port 2-3 + +pci:v00008086d000025F8* + ID_MODEL_FROM_DATABASE=5000 Series Chipset PCI Express x8 Port 4-5 + +pci:v00008086d000025F9* + ID_MODEL_FROM_DATABASE=5000 Series Chipset PCI Express x8 Port 6-7 + +pci:v00008086d000025FA* + ID_MODEL_FROM_DATABASE=5000X Chipset PCI Express x16 Port 4-7 + +pci:v00008086d00002600* + ID_MODEL_FROM_DATABASE=E8500/E8501 Hub Interface 1.5 + +pci:v00008086d00002600sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 Hub Interface + +pci:v00008086d00002601* + ID_MODEL_FROM_DATABASE=E8500/E8501 PCI Express x4 Port D + +pci:v00008086d00002602* + ID_MODEL_FROM_DATABASE=E8500/E8501 PCI Express x4 Port C0 + +pci:v00008086d00002603* + ID_MODEL_FROM_DATABASE=E8500/E8501 PCI Express x4 Port C1 + +pci:v00008086d00002604* + ID_MODEL_FROM_DATABASE=E8500/E8501 PCI Express x4 Port B0 + +pci:v00008086d00002605* + ID_MODEL_FROM_DATABASE=E8500/E8501 PCI Express x4 Port B1 + +pci:v00008086d00002606* + ID_MODEL_FROM_DATABASE=E8500/E8501 PCI Express x4 Port A0 + +pci:v00008086d00002607* + ID_MODEL_FROM_DATABASE=E8500/E8501 PCI Express x4 Port A1 + +pci:v00008086d00002608* + ID_MODEL_FROM_DATABASE=E8500/E8501 PCI Express x8 Port C + +pci:v00008086d00002609* + ID_MODEL_FROM_DATABASE=E8500/E8501 PCI Express x8 Port B + +pci:v00008086d0000260A* + ID_MODEL_FROM_DATABASE=E8500/E8501 PCI Express x8 Port A + +pci:v00008086d0000260C* + ID_MODEL_FROM_DATABASE=E8500/E8501 IMI Registers + +pci:v00008086d00002610* + ID_MODEL_FROM_DATABASE=E8500/E8501 FSB Registers + +pci:v00008086d00002611* + ID_MODEL_FROM_DATABASE=E8500/E8501 Address Mapping Registers + +pci:v00008086d00002612* + ID_MODEL_FROM_DATABASE=E8500/E8501 RAS Registers + +pci:v00008086d00002613* + ID_MODEL_FROM_DATABASE=E8500/E8501 Reserved Registers + +pci:v00008086d00002614* + ID_MODEL_FROM_DATABASE=E8500/E8501 Reserved Registers + +pci:v00008086d00002615* + ID_MODEL_FROM_DATABASE=E8500/E8501 Miscellaneous Registers + +pci:v00008086d00002617* + ID_MODEL_FROM_DATABASE=E8500/E8501 Reserved Registers + +pci:v00008086d00002618* + ID_MODEL_FROM_DATABASE=E8500/E8501 Reserved Registers + +pci:v00008086d00002619* + ID_MODEL_FROM_DATABASE=E8500/E8501 Reserved Registers + +pci:v00008086d0000261A* + ID_MODEL_FROM_DATABASE=E8500/E8501 Reserved Registers + +pci:v00008086d0000261B* + ID_MODEL_FROM_DATABASE=E8500/E8501 Reserved Registers + +pci:v00008086d0000261C* + ID_MODEL_FROM_DATABASE=E8500/E8501 Reserved Registers + +pci:v00008086d0000261D* + ID_MODEL_FROM_DATABASE=E8500/E8501 Reserved Registers + +pci:v00008086d0000261E* + ID_MODEL_FROM_DATABASE=E8500/E8501 Reserved Registers + +pci:v00008086d00002620* + ID_MODEL_FROM_DATABASE=E8500/E8501 eXternal Memory Bridge + +pci:v00008086d00002620sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 Memory Bridge + +pci:v00008086d00002621* + ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Miscellaneous Registers + +pci:v00008086d00002621sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 XMB Registers + +pci:v00008086d00002622* + ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Memory Interleaving Registers + +pci:v00008086d00002622sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 Memory Interleaving Registers + +pci:v00008086d00002623* + ID_MODEL_FROM_DATABASE=E8500/E8501 XMB DDR Initialization and Calibration + +pci:v00008086d00002623sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 DDR Initialization and Calibration + +pci:v00008086d00002624* + ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Reserved Registers + +pci:v00008086d00002624sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 Reserved Registers + +pci:v00008086d00002625* + ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Reserved Registers + +pci:v00008086d00002625sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 Reserved Registers + +pci:v00008086d00002626* + ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Reserved Registers + +pci:v00008086d00002626sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 Reserved Registers + +pci:v00008086d00002627* + ID_MODEL_FROM_DATABASE=E8500/E8501 XMB Reserved Registers + +pci:v00008086d00002627sv00001028sd00000170* + ID_MODEL_FROM_DATABASE=PowerEdge 6850 Reserved Registers + +pci:v00008086d00002640* + ID_MODEL_FROM_DATABASE=82801FB/FR (ICH6/ICH6R) LPC Interface Bridge + +pci:v00008086d00002640sv00001462sd00007028* + ID_MODEL_FROM_DATABASE=915P/G Neo2 + +pci:v00008086d00002640sv00001734sd0000105C* + ID_MODEL_FROM_DATABASE=Scenic W620 + +pci:v00008086d00002640sv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d00002640sv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d00002640sv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d00002641* + ID_MODEL_FROM_DATABASE=82801FBM (ICH6M) LPC Interface Bridge + +pci:v00008086d00002641sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v00008086d00002641sv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v00008086d00002642* + ID_MODEL_FROM_DATABASE=82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge + +pci:v00008086d00002651* + ID_MODEL_FROM_DATABASE=82801FB/FW (ICH6/ICH6W) SATA Controller + +pci:v00008086d00002651sv00001028sd00000179* + ID_MODEL_FROM_DATABASE=Optiplex GX280 + +pci:v00008086d00002651sv00001043sd00002601* + ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard + +pci:v00008086d00002651sv00001734sd0000105C* + ID_MODEL_FROM_DATABASE=Scenic W620 + +pci:v00008086d00002651sv00008086sd00004147* + ID_MODEL_FROM_DATABASE=D915GAG Motherboard + +pci:v00008086d00002651sv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d00002651sv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d00002651sv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d00002652* + ID_MODEL_FROM_DATABASE=82801FR/FRW (ICH6R/ICH6RW) SATA Controller + +pci:v00008086d00002652sv00001028sd00000177* + ID_MODEL_FROM_DATABASE=Dimension 8400 + +pci:v00008086d00002652sv00001462sd00007028* + ID_MODEL_FROM_DATABASE=915P/G Neo2 + +pci:v00008086d00002653* + ID_MODEL_FROM_DATABASE=82801FBM (ICH6M) SATA Controller + +pci:v00008086d00002658* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 + +pci:v00008086d00002658sv00001028sd00000177* + ID_MODEL_FROM_DATABASE=Dimension 8400 + +pci:v00008086d00002658sv00001028sd00000179* + ID_MODEL_FROM_DATABASE=Optiplex GX280 + +pci:v00008086d00002658sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v00008086d00002658sv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v00008086d00002658sv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard + +pci:v00008086d00002658sv00001458sd00002558* + ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard + +pci:v00008086d00002658sv00001462sd00007028* + ID_MODEL_FROM_DATABASE=915P/G Neo2 + +pci:v00008086d00002658sv00001734sd0000105C* + ID_MODEL_FROM_DATABASE=Scenic W620 + +pci:v00008086d00002658sv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d00002658sv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d00002658sv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d00002659* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 + +pci:v00008086d00002659sv00001028sd00000177* + ID_MODEL_FROM_DATABASE=Dimension 8400 + +pci:v00008086d00002659sv00001028sd00000179* + ID_MODEL_FROM_DATABASE=Optiplex GX280 + +pci:v00008086d00002659sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v00008086d00002659sv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v00008086d00002659sv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard + +pci:v00008086d00002659sv00001458sd00002659* + ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard + +pci:v00008086d00002659sv00001462sd00007028* + ID_MODEL_FROM_DATABASE=915P/G Neo2 + +pci:v00008086d00002659sv00001734sd0000105C* + ID_MODEL_FROM_DATABASE=Scenic W620 + +pci:v00008086d00002659sv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d00002659sv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d00002659sv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d0000265A* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 + +pci:v00008086d0000265Asv00001028sd00000177* + ID_MODEL_FROM_DATABASE=Dimension 8400 + +pci:v00008086d0000265Asv00001028sd00000179* + ID_MODEL_FROM_DATABASE=Optiplex GX280 + +pci:v00008086d0000265Asv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v00008086d0000265Asv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v00008086d0000265Asv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard + +pci:v00008086d0000265Asv00001458sd0000265A* + ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard + +pci:v00008086d0000265Asv00001462sd00007028* + ID_MODEL_FROM_DATABASE=915P/G Neo2 + +pci:v00008086d0000265Asv00001734sd0000105C* + ID_MODEL_FROM_DATABASE=Scenic W620 + +pci:v00008086d0000265Asv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d0000265Asv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d0000265Asv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d0000265B* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 + +pci:v00008086d0000265Bsv00001028sd00000177* + ID_MODEL_FROM_DATABASE=Dimension 8400 + +pci:v00008086d0000265Bsv00001028sd00000179* + ID_MODEL_FROM_DATABASE=Optiplex GX280 + +pci:v00008086d0000265Bsv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v00008086d0000265Bsv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard + +pci:v00008086d0000265Bsv00001458sd0000265A* + ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard + +pci:v00008086d0000265Bsv00001462sd00007028* + ID_MODEL_FROM_DATABASE=915P/G Neo2 + +pci:v00008086d0000265Bsv00001734sd0000105C* + ID_MODEL_FROM_DATABASE=Scenic W620 + +pci:v00008086d0000265Bsv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d0000265Bsv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d0000265Bsv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d0000265C* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller + +pci:v00008086d0000265Csv00001028sd00000177* + ID_MODEL_FROM_DATABASE=Dimension 8400 + +pci:v00008086d0000265Csv00001028sd00000179* + ID_MODEL_FROM_DATABASE=Optiplex GX280 + +pci:v00008086d0000265Csv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v00008086d0000265Csv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v00008086d0000265Csv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard + +pci:v00008086d0000265Csv00001458sd00005006* + ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard + +pci:v00008086d0000265Csv00001462sd00007028* + ID_MODEL_FROM_DATABASE=915P/G Neo2 + +pci:v00008086d0000265Csv00001734sd0000105C* + ID_MODEL_FROM_DATABASE=Scenic W620 + +pci:v00008086d0000265Csv00008086sd0000265C* + ID_MODEL_FROM_DATABASE=Dimension 3100 + +pci:v00008086d0000265Csv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d0000265Csv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d0000265Csv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d00002660* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 + +pci:v00008086d00002660sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation + +pci:v00008086d00002660sv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v00008086d00002660sv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d00002660sv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d00002660sv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d00002662* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2 + +pci:v00008086d00002662sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation + +pci:v00008086d00002662sv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d00002662sv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d00002662sv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d00002664* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3 + +pci:v00008086d00002664sv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d00002664sv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d00002664sv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d00002666* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4 + +pci:v00008086d00002666sv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d00002666sv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d00002666sv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d00002668* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller + +pci:v00008086d00002668sv00001014sd000005B7* + ID_MODEL_FROM_DATABASE=ThinkPad Z60t + +pci:v00008086d00002668sv0000103Csd00002A09* + ID_MODEL_FROM_DATABASE=PufferM-UL8E + +pci:v00008086d00002668sv00001043sd00001173* + ID_MODEL_FROM_DATABASE=Asus A6VC + +pci:v00008086d00002668sv00001043sd0000814E* + ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard + +pci:v00008086d00002668sv00001462sd00007028* + ID_MODEL_FROM_DATABASE=915P/G Neo2 + +pci:v00008086d0000266A* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller + +pci:v00008086d0000266Asv00001028sd00000177* + ID_MODEL_FROM_DATABASE=Dimension 8400 + +pci:v00008086d0000266Asv00001028sd00000179* + ID_MODEL_FROM_DATABASE=Optiplex GX280 + +pci:v00008086d0000266Asv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard + +pci:v00008086d0000266Asv00001458sd0000266A* + ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard + +pci:v00008086d0000266Asv00001462sd00007028* + ID_MODEL_FROM_DATABASE=915P/G Neo2 + +pci:v00008086d0000266Asv00001734sd0000105C* + ID_MODEL_FROM_DATABASE=Scenic W620 + +pci:v00008086d0000266Asv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d0000266Asv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d0000266Asv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d0000266C* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) LAN Controller + +pci:v00008086d0000266D* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller + +pci:v00008086d0000266Dsv00001025sd0000006A* + ID_MODEL_FROM_DATABASE=Conexant AC'97 CoDec (in Acer TravelMate 2410 serie laptop) + +pci:v00008086d0000266Dsv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v00008086d0000266Dsv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v00008086d0000266E* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller + +pci:v00008086d0000266Esv00001025sd0000006A* + ID_MODEL_FROM_DATABASE=Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop) + +pci:v00008086d0000266Esv00001028sd00000177* + ID_MODEL_FROM_DATABASE=Dimension 8400 + +pci:v00008086d0000266Esv00001028sd00000179* + ID_MODEL_FROM_DATABASE=Optiplex GX280 + +pci:v00008086d0000266Esv00001028sd00000182* + ID_MODEL_FROM_DATABASE=Latitude D610 Laptop + +pci:v00008086d0000266Esv00001028sd00000187* + ID_MODEL_FROM_DATABASE=Dell Precision M70 Laptop + +pci:v00008086d0000266Esv00001028sd00000188* + ID_MODEL_FROM_DATABASE=Inspiron 6000 laptop + +pci:v00008086d0000266Esv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v00008086d0000266Esv0000103Csd00000944* + ID_MODEL_FROM_DATABASE=Compaq NC6220 + +pci:v00008086d0000266Esv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v00008086d0000266Esv0000103Csd00003006* + ID_MODEL_FROM_DATABASE=DC7100 SFF(DX878AV) + +pci:v00008086d0000266Esv00001458sd0000A002* + ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard + +pci:v00008086d0000266Esv0000152Dsd00000745* + ID_MODEL_FROM_DATABASE=Packard Bell A8550 Laptop + +pci:v00008086d0000266Esv00001734sd0000105A* + ID_MODEL_FROM_DATABASE=Scenic W620 + +pci:v00008086d0000266F* + ID_MODEL_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller + +pci:v00008086d0000266Fsv00001028sd00000177* + ID_MODEL_FROM_DATABASE=Dimension 8400 + +pci:v00008086d0000266Fsv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v00008086d0000266Fsv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v00008086d0000266Fsv00001043sd000080A6* + ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard + +pci:v00008086d0000266Fsv00001458sd0000266F* + ID_MODEL_FROM_DATABASE=GA-8I915ME-G Mainboard + +pci:v00008086d0000266Fsv00001462sd00007028* + ID_MODEL_FROM_DATABASE=915P/G Neo2 + +pci:v00008086d0000266Fsv00001734sd0000105C* + ID_MODEL_FROM_DATABASE=Scenic W620 + +pci:v00008086d0000266Fsv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d0000266Fsv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d0000266Fsv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d00002670* + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset LPC Interface Controller + +pci:v00008086d00002670sv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d00002670sv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d00002670sv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d00002670sv00008086sd00003476* + ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board + +pci:v00008086d00002680* + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SATA IDE Controller + +pci:v00008086d00002681* + ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA AHCI Controller + +pci:v00008086d00002681sv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d00002681sv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d00002681sv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d00002681sv00008086sd00003476* + ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board + +pci:v00008086d00002682* + ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA RAID Controller + +pci:v00008086d00002682sv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=Adaptec Serial ATA HostRAID + +pci:v00008086d00002683* + ID_MODEL_FROM_DATABASE=631xESB/632xESB SATA RAID Controller + +pci:v00008086d00002688* + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1 + +pci:v00008086d00002688sv00001028sd000001BB* + ID_MODEL_FROM_DATABASE=PowerEdge 1955 onboard USB + +pci:v00008086d00002688sv00001028sd000001F0* + ID_MODEL_FROM_DATABASE=PowerEdge R900 onboard USB + +pci:v00008086d00002688sv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d00002688sv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d00002688sv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d00002688sv00008086sd00003476* + ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board + +pci:v00008086d00002689* + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 + +pci:v00008086d00002689sv00001028sd000001BB* + ID_MODEL_FROM_DATABASE=PowerEdge 1955 onboard USB + +pci:v00008086d00002689sv00001028sd000001F0* + ID_MODEL_FROM_DATABASE=PowerEdge R900 onboard USB + +pci:v00008086d00002689sv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d00002689sv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d00002689sv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d00002689sv00008086sd00003476* + ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board + +pci:v00008086d0000268A* + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3 + +pci:v00008086d0000268Asv00001028sd000001F0* + ID_MODEL_FROM_DATABASE=PowerEdge R900 onboard USB + +pci:v00008086d0000268Asv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d0000268Asv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d0000268Asv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d0000268Asv00008086sd00003476* + ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board + +pci:v00008086d0000268B* + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #4 + +pci:v00008086d0000268Bsv00001028sd000001F0* + ID_MODEL_FROM_DATABASE=PowerEdge R900 onboard USB + +pci:v00008086d0000268Bsv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d0000268Bsv00008086sd00003476* + ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board + +pci:v00008086d0000268C* + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller + +pci:v00008086d0000268Csv00001028sd000001BB* + ID_MODEL_FROM_DATABASE=PowerEdge 1955 onboard USB + +pci:v00008086d0000268Csv00001028sd000001F0* + ID_MODEL_FROM_DATABASE=PowerEdge R900 onboard USB + +pci:v00008086d0000268Csv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d0000268Csv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d0000268Csv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d0000268Csv00008086sd00003476* + ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board + +pci:v00008086d00002690* + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 1 + +pci:v00008086d00002690sv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d00002690sv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d00002692* + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 2 + +pci:v00008086d00002692sv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d00002694* + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 3 + +pci:v00008086d00002696* + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 4 + +pci:v00008086d00002698* + ID_MODEL_FROM_DATABASE=631xESB/632xESB AC '97 Audio Controller + +pci:v00008086d00002699* + ID_MODEL_FROM_DATABASE=631xESB/632xESB AC '97 Modem Controller + +pci:v00008086d0000269A* + ID_MODEL_FROM_DATABASE=631xESB/632xESB High Definition Audio Controller + +pci:v00008086d0000269B* + ID_MODEL_FROM_DATABASE=631xESB/632xESB/3100 Chipset SMBus Controller + +pci:v00008086d0000269Bsv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d0000269Bsv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d0000269Bsv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d0000269Bsv00008086sd00003476* + ID_MODEL_FROM_DATABASE=Intel S5000PSLSATA Server Board + +pci:v00008086d0000269E* + ID_MODEL_FROM_DATABASE=631xESB/632xESB IDE Controller + +pci:v00008086d0000269Esv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d0000269Esv000015D9sd00008680* + ID_MODEL_FROM_DATABASE=X7DVL-E-O motherboard + +pci:v00008086d0000269Esv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d00002770* + ID_MODEL_FROM_DATABASE=82945G/GZ/P/PL Memory Controller Hub + +pci:v00008086d00002770sv00001028sd000001AD* + ID_MODEL_FROM_DATABASE=OptiPlex GX620 + +pci:v00008086d00002770sv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Pavilion A1512X + +pci:v00008086d00002770sv00001043sd0000817A* + ID_MODEL_FROM_DATABASE=P5LD2-VM Mainboard + +pci:v00008086d00002770sv0000107Bsd00005048* + ID_MODEL_FROM_DATABASE=E4500 + +pci:v00008086d00002770sv00008086sd0000544E* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d00002771* + ID_MODEL_FROM_DATABASE=82945G/GZ/P/PL PCI Express Root Port + +pci:v00008086d00002772* + ID_MODEL_FROM_DATABASE=82945G/GZ Integrated Graphics Controller + +pci:v00008086d00002772sv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Pavilion A1512X + +pci:v00008086d00002772sv00008086sd0000544E* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d00002772sv00008086sd0000D605* + ID_MODEL_FROM_DATABASE=Intel Desktop Board D945GCCR + +pci:v00008086d00002774* + ID_MODEL_FROM_DATABASE=82955X Memory Controller Hub + +pci:v00008086d00002775* + ID_MODEL_FROM_DATABASE=82955X PCI Express Root Port + +pci:v00008086d00002776* + ID_MODEL_FROM_DATABASE=82945G/GZ Integrated Graphics Controller + +pci:v00008086d00002778* + ID_MODEL_FROM_DATABASE=E7230/3000/3010 Memory Controller Hub + +pci:v00008086d00002778sv00001028sd000001DF* + ID_MODEL_FROM_DATABASE=PowerEdge SC440 + +pci:v00008086d00002778sv00001028sd000001E6* + ID_MODEL_FROM_DATABASE=PowerEdge 860 + +pci:v00008086d00002779* + ID_MODEL_FROM_DATABASE=E7230/3000/3010 PCI Express Root Port + +pci:v00008086d0000277A* + ID_MODEL_FROM_DATABASE=82975X/3010 PCI Express Root Port + +pci:v00008086d0000277C* + ID_MODEL_FROM_DATABASE=82975X Memory Controller Hub + +pci:v00008086d0000277Csv00001043sd00008178* + ID_MODEL_FROM_DATABASE=P5WDG2 WS Professional motherboard + +pci:v00008086d0000277D* + ID_MODEL_FROM_DATABASE=82975X PCI Express Root Port + +pci:v00008086d00002782* + ID_MODEL_FROM_DATABASE=82915G Integrated Graphics Controller + +pci:v00008086d00002782sv00001043sd00002582* + ID_MODEL_FROM_DATABASE=P5GD1-VW Mainboard + +pci:v00008086d00002782sv00001734sd0000105B* + ID_MODEL_FROM_DATABASE=Scenic W620 + +pci:v00008086d00002792* + ID_MODEL_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller + +pci:v00008086d00002792sv0000103Csd0000099C* + ID_MODEL_FROM_DATABASE=NX6110/NC6120 + +pci:v00008086d00002792sv00001043sd00001881* + ID_MODEL_FROM_DATABASE=GMA 900 915GM Integrated Graphics + +pci:v00008086d00002792sv0000E4BFsd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v00008086d00002792sv0000E4BFsd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v00008086d00002792sv0000E4BFsd000058B1* + ID_MODEL_FROM_DATABASE=XB1 + +pci:v00008086d000027A0* + ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub + +pci:v00008086d000027A0sv00001025sd0000006C* + ID_MODEL_FROM_DATABASE=9814 WKMI + +pci:v00008086d000027A0sv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v00008086d000027A0sv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00008086d000027A0sv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v00008086d000027A0sv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d000027A0sv00001043sd00001237* + ID_MODEL_FROM_DATABASE=A6J-Q008 + +pci:v00008086d000027A0sv000017AAsd00002015* + ID_MODEL_FROM_DATABASE=ThinkPad T60 + +pci:v00008086d000027A0sv000017AAsd00002017* + ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series + +pci:v00008086d000027A1* + ID_MODEL_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port + +pci:v00008086d000027A1sv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00008086d000027A1sv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d000027A2* + ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller + +pci:v00008086d000027A2sv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v00008086d000027A2sv000017AAsd0000201A* + ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series + +pci:v00008086d000027A2sv00009902sd00001584* + ID_MODEL_FROM_DATABASE=CCE MPL-D10H120F + +pci:v00008086d000027A6* + ID_MODEL_FROM_DATABASE=Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller + +pci:v00008086d000027A6sv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v00008086d000027A6sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 integrated graphics (secondary) + +pci:v00008086d000027A6sv000017AAsd0000201A* + ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series + +pci:v00008086d000027AC* + ID_MODEL_FROM_DATABASE=Mobile 945GSE Express Memory Controller Hub + +pci:v00008086d000027ACsv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027AD* + ID_MODEL_FROM_DATABASE=Mobile 945GSE Express PCI Express Root Port + +pci:v00008086d000027AE* + ID_MODEL_FROM_DATABASE=Mobile 945GSE Express Integrated Graphics Controller + +pci:v00008086d000027AEsv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 integrated graphics (primary) + +pci:v00008086d000027B0* + ID_MODEL_FROM_DATABASE=82801GH (ICH7DH) LPC Interface Bridge + +pci:v00008086d000027B0sv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Pavilion A1512X + +pci:v00008086d000027B0sv00008086sd0000544E* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d000027B8* + ID_MODEL_FROM_DATABASE=82801GB/GR (ICH7 Family) LPC Interface Bridge + +pci:v00008086d000027B8sv00001028sd000001E6* + ID_MODEL_FROM_DATABASE=PowerEdge 860 + +pci:v00008086d000027B8sv00001043sd00008179* + ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard + +pci:v00008086d000027B8sv0000107Bsd00005048* + ID_MODEL_FROM_DATABASE=E4500 + +pci:v00008086d000027B8sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027B8sv00008086sd0000544E* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d000027B9* + ID_MODEL_FROM_DATABASE=82801GBM (ICH7-M) LPC Interface Bridge + +pci:v00008086d000027B9sv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v00008086d000027B9sv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00008086d000027B9sv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v00008086d000027B9sv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d000027B9sv000010F7sd00008338* + ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop + +pci:v00008086d000027B9sv000017AAsd00002009* + ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series + +pci:v00008086d000027BC* + ID_MODEL_FROM_DATABASE=NM10 Family LPC Controller + +pci:v00008086d000027BCsv0000105Bsd00000D7C* + ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard + +pci:v00008086d000027BCsv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d000027BCsv00001458sd00005001* + ID_MODEL_FROM_DATABASE=GA-D525TUD + +pci:v00008086d000027BCsv00008086sd00004F4D* + ID_MODEL_FROM_DATABASE=DeskTop Board D510MO + +pci:v00008086d000027BCsv00008086sd0000544B* + ID_MODEL_FROM_DATABASE=Desktop Board D425KT + +pci:v00008086d000027BD* + ID_MODEL_FROM_DATABASE=82801GHM (ICH7-M DH) LPC Interface Bridge + +pci:v00008086d000027BDsv00001025sd0000006C* + ID_MODEL_FROM_DATABASE=9814 WKMI + +pci:v00008086d000027C0* + ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] + +pci:v00008086d000027C0sv00001028sd000001AD* + ID_MODEL_FROM_DATABASE=OptiPlex GX620 + +pci:v00008086d000027C0sv00001028sd000001DF* + ID_MODEL_FROM_DATABASE=PowerEdge SC440 + +pci:v00008086d000027C0sv00001028sd000001E6* + ID_MODEL_FROM_DATABASE=PowerEdge 860 + +pci:v00008086d000027C0sv00001043sd00008179* + ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard + +pci:v00008086d000027C0sv0000107Bsd00005048* + ID_MODEL_FROM_DATABASE=E4500 + +pci:v00008086d000027C0sv00001462sd00002310* + ID_MODEL_FROM_DATABASE=MSI Hetis 945 + +pci:v00008086d000027C0sv00001462sd00007236* + ID_MODEL_FROM_DATABASE=945P Neo3-F Rev. 2.2 motherboard + +pci:v00008086d000027C0sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027C0sv00008086sd0000544B* + ID_MODEL_FROM_DATABASE=Desktop Board D425KT + +pci:v00008086d000027C0sv00008086sd0000544E* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d000027C1* + ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SATA Controller [AHCI mode] + +pci:v00008086d000027C1sv00001028sd000001DF* + ID_MODEL_FROM_DATABASE=PowerEdge SC440 + +pci:v00008086d000027C1sv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Pavilion A1512X + +pci:v00008086d000027C1sv0000105Bsd00000D7C* + ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard + +pci:v00008086d000027C1sv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d000027C1sv00001458sd0000B005* + ID_MODEL_FROM_DATABASE=GA-D525TUD + +pci:v00008086d000027C1sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027C1sv00008086sd00004F4D* + ID_MODEL_FROM_DATABASE=DeskTop Board D510MO + +pci:v00008086d000027C1sv00008086sd00005842* + ID_MODEL_FROM_DATABASE=DeskTop Board D975XBX + +pci:v00008086d000027C3* + ID_MODEL_FROM_DATABASE=82801GR/GDH (ICH7R/ICH7DH) SATA Controller [RAID mode] + +pci:v00008086d000027C3sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027C3sv00008086sd0000544E* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d000027C4* + ID_MODEL_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode] + +pci:v00008086d000027C4sv00001025sd0000006C* + ID_MODEL_FROM_DATABASE=9814 WKMI + +pci:v00008086d000027C4sv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v00008086d000027C4sv000017AAsd0000200E* + ID_MODEL_FROM_DATABASE=Thinkpad T60 model 2007 + +pci:v00008086d000027C5* + ID_MODEL_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode] + +pci:v00008086d000027C5sv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00008086d000027C5sv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d000027C5sv000017AAsd0000200D* + ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series + +pci:v00008086d000027C6* + ID_MODEL_FROM_DATABASE=82801GHM (ICH7-M DH) SATA Controller [RAID mode] + +pci:v00008086d000027C8* + ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 + +pci:v00008086d000027C8sv00001025sd0000006C* + ID_MODEL_FROM_DATABASE=9814 WKMI + +pci:v00008086d000027C8sv00001028sd000001AD* + ID_MODEL_FROM_DATABASE=OptiPlex GX620 + +pci:v00008086d000027C8sv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v00008086d000027C8sv00001028sd000001DF* + ID_MODEL_FROM_DATABASE=PowerEdge SC440 + +pci:v00008086d000027C8sv00001028sd000001E6* + ID_MODEL_FROM_DATABASE=PowerEdge 860 + +pci:v00008086d000027C8sv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Pavilion A1512X + +pci:v00008086d000027C8sv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00008086d000027C8sv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v00008086d000027C8sv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d000027C8sv00001043sd00001237* + ID_MODEL_FROM_DATABASE=A6J-Q008 + +pci:v00008086d000027C8sv00001043sd00008179* + ID_MODEL_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard + +pci:v00008086d000027C8sv0000105Bsd00000D7C* + ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard + +pci:v00008086d000027C8sv0000107Bsd00005048* + ID_MODEL_FROM_DATABASE=E4500 + +pci:v00008086d000027C8sv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d000027C8sv00001458sd00005004* + ID_MODEL_FROM_DATABASE=GA-D525TUD + +pci:v00008086d000027C8sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027C8sv000017AAsd0000200A* + ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series + +pci:v00008086d000027C8sv00008086sd00004F4D* + ID_MODEL_FROM_DATABASE=DeskTop Board D510MO + +pci:v00008086d000027C8sv00008086sd0000544B* + ID_MODEL_FROM_DATABASE=Desktop Board D425KT + +pci:v00008086d000027C8sv00008086sd0000544E* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d000027C9* + ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 + +pci:v00008086d000027C9sv00001025sd0000006C* + ID_MODEL_FROM_DATABASE=9814 WKMI + +pci:v00008086d000027C9sv00001028sd000001AD* + ID_MODEL_FROM_DATABASE=OptiPlex GX620 + +pci:v00008086d000027C9sv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v00008086d000027C9sv00001028sd000001DF* + ID_MODEL_FROM_DATABASE=PowerEdge SC440 + +pci:v00008086d000027C9sv00001028sd000001E6* + ID_MODEL_FROM_DATABASE=PowerEdge 860 + +pci:v00008086d000027C9sv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Pavilion A1512X + +pci:v00008086d000027C9sv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00008086d000027C9sv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v00008086d000027C9sv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d000027C9sv00001043sd00001237* + ID_MODEL_FROM_DATABASE=A6J-Q008 + +pci:v00008086d000027C9sv00001043sd00008179* + ID_MODEL_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard + +pci:v00008086d000027C9sv0000105Bsd00000D7C* + ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard + +pci:v00008086d000027C9sv0000107Bsd00005048* + ID_MODEL_FROM_DATABASE=E4500 + +pci:v00008086d000027C9sv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d000027C9sv00001458sd00005004* + ID_MODEL_FROM_DATABASE=GA-D525TUD + +pci:v00008086d000027C9sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027C9sv000017AAsd0000200A* + ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series + +pci:v00008086d000027C9sv00008086sd00004F4D* + ID_MODEL_FROM_DATABASE=DeskTop Board D510MO + +pci:v00008086d000027C9sv00008086sd0000544B* + ID_MODEL_FROM_DATABASE=Desktop Board D425KT + +pci:v00008086d000027C9sv00008086sd0000544E* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d000027CA* + ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 + +pci:v00008086d000027CAsv00001025sd0000006C* + ID_MODEL_FROM_DATABASE=9814 WKMI + +pci:v00008086d000027CAsv00001028sd000001AD* + ID_MODEL_FROM_DATABASE=OptiPlex GX620 + +pci:v00008086d000027CAsv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v00008086d000027CAsv00001028sd000001DF* + ID_MODEL_FROM_DATABASE=PowerEdge SC440 + +pci:v00008086d000027CAsv00001028sd000001E6* + ID_MODEL_FROM_DATABASE=PowerEdge 860 + +pci:v00008086d000027CAsv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Pavilion A1512X + +pci:v00008086d000027CAsv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00008086d000027CAsv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v00008086d000027CAsv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d000027CAsv00001043sd00001237* + ID_MODEL_FROM_DATABASE=A6J-Q008 + +pci:v00008086d000027CAsv00001043sd00008179* + ID_MODEL_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard + +pci:v00008086d000027CAsv0000105Bsd00000D7C* + ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard + +pci:v00008086d000027CAsv0000107Bsd00005048* + ID_MODEL_FROM_DATABASE=E4500 + +pci:v00008086d000027CAsv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d000027CAsv00001458sd00005004* + ID_MODEL_FROM_DATABASE=GA-D525TUD + +pci:v00008086d000027CAsv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027CAsv000017AAsd0000200A* + ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series + +pci:v00008086d000027CAsv00008086sd00004F4D* + ID_MODEL_FROM_DATABASE=DeskTop Board D510MO + +pci:v00008086d000027CAsv00008086sd0000544E* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d000027CB* + ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 + +pci:v00008086d000027CBsv00001025sd0000006C* + ID_MODEL_FROM_DATABASE=9814 WKMI + +pci:v00008086d000027CBsv00001028sd000001AD* + ID_MODEL_FROM_DATABASE=OptiPlex GX620 + +pci:v00008086d000027CBsv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v00008086d000027CBsv00001028sd000001DF* + ID_MODEL_FROM_DATABASE=PowerEdge SC440 + +pci:v00008086d000027CBsv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Pavilion A1512X + +pci:v00008086d000027CBsv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00008086d000027CBsv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v00008086d000027CBsv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d000027CBsv00001043sd00001237* + ID_MODEL_FROM_DATABASE=A6J-Q008 + +pci:v00008086d000027CBsv00001043sd00008179* + ID_MODEL_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard + +pci:v00008086d000027CBsv0000105Bsd00000D7C* + ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard + +pci:v00008086d000027CBsv0000107Bsd00005048* + ID_MODEL_FROM_DATABASE=E4500 + +pci:v00008086d000027CBsv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d000027CBsv00001458sd00005004* + ID_MODEL_FROM_DATABASE=GA-D525TUD + +pci:v00008086d000027CBsv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027CBsv000017AAsd0000200A* + ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series + +pci:v00008086d000027CBsv00008086sd00004F4D* + ID_MODEL_FROM_DATABASE=DeskTop Board D510MO + +pci:v00008086d000027CBsv00008086sd0000544E* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d000027CC* + ID_MODEL_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller + +pci:v00008086d000027CCsv00001025sd0000006C* + ID_MODEL_FROM_DATABASE=9814 WKMI + +pci:v00008086d000027CCsv00001028sd000001AD* + ID_MODEL_FROM_DATABASE=OptiPlex GX620 + +pci:v00008086d000027CCsv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v00008086d000027CCsv00001028sd000001DF* + ID_MODEL_FROM_DATABASE=PowerEdge SC440 + +pci:v00008086d000027CCsv00001028sd000001E6* + ID_MODEL_FROM_DATABASE=PowerEdge 860 + +pci:v00008086d000027CCsv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Pavilion A1512X + +pci:v00008086d000027CCsv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00008086d000027CCsv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v00008086d000027CCsv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d000027CCsv00001043sd00001237* + ID_MODEL_FROM_DATABASE=A6J-Q008 + +pci:v00008086d000027CCsv00001043sd00008179* + ID_MODEL_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard + +pci:v00008086d000027CCsv0000105Bsd00000D7C* + ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard + +pci:v00008086d000027CCsv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d000027CCsv00001458sd00005006* + ID_MODEL_FROM_DATABASE=GA-D525TUD + +pci:v00008086d000027CCsv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027CCsv000017AAsd0000200B* + ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series + +pci:v00008086d000027CCsv00008086sd00004F4D* + ID_MODEL_FROM_DATABASE=DeskTop Board D510MO + +pci:v00008086d000027CCsv00008086sd0000544B* + ID_MODEL_FROM_DATABASE=Desktop Board D425KT + +pci:v00008086d000027CCsv00008086sd0000544E* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d000027D0* + ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 1 + +pci:v00008086d000027D0sv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00008086d000027D0sv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d000027D0sv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d000027D0sv00001458sd00005001* + ID_MODEL_FROM_DATABASE=GA-D525TUD + +pci:v00008086d000027D0sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027D0sv00008086sd0000544B* + ID_MODEL_FROM_DATABASE=Desktop Board D425KT + +pci:v00008086d000027D2* + ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 2 + +pci:v00008086d000027D2sv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00008086d000027D2sv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d000027D2sv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d000027D2sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027D2sv00008086sd0000544B* + ID_MODEL_FROM_DATABASE=Desktop Board D425KT + +pci:v00008086d000027D4* + ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 3 + +pci:v00008086d000027D4sv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d000027D4sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027D4sv00008086sd0000544B* + ID_MODEL_FROM_DATABASE=Desktop Board D425KT + +pci:v00008086d000027D6* + ID_MODEL_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 4 + +pci:v00008086d000027D6sv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d000027D6sv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d000027D6sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027D6sv00008086sd0000544B* + ID_MODEL_FROM_DATABASE=Desktop Board D425KT + +pci:v00008086d000027D8* + ID_MODEL_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller + +pci:v00008086d000027D8sv00001025sd0000006C* + ID_MODEL_FROM_DATABASE=9814 WKMI + +pci:v00008086d000027D8sv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v00008086d000027D8sv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Pavilion A1512X + +pci:v00008086d000027D8sv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00008086d000027D8sv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v00008086d000027D8sv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d000027D8sv00001043sd00001123* + ID_MODEL_FROM_DATABASE=A6J-Q008 + +pci:v00008086d000027D8sv00001043sd000013C4* + ID_MODEL_FROM_DATABASE=Asus G2P + +pci:v00008086d000027D8sv00001043sd0000817F* + ID_MODEL_FROM_DATABASE=P5LD2-VM Mainboard (Realtek ALC 882 codec) + +pci:v00008086d000027D8sv00001043sd00008290* + ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard + +pci:v00008086d000027D8sv00001043sd000082EA* + ID_MODEL_FROM_DATABASE=P5KPL-CM Motherboard + +pci:v00008086d000027D8sv0000105Bsd00000D7C* + ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard + +pci:v00008086d000027D8sv0000107Bsd00005048* + ID_MODEL_FROM_DATABASE=E4500 + +pci:v00008086d000027D8sv000010F7sd00008338* + ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop + +pci:v00008086d000027D8sv00001179sd0000FF10* + ID_MODEL_FROM_DATABASE=Toshiba Satellite A100-796 audio (Realtek ALC861) + +pci:v00008086d000027D8sv00001179sd0000FF31* + ID_MODEL_FROM_DATABASE=AC97 Data Fax SoftModem with SmartCP + +pci:v00008086d000027D8sv00001447sd00001043* + ID_MODEL_FROM_DATABASE=Asus A8JP (Analog Devices AD1986A) + +pci:v00008086d000027D8sv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d000027D8sv00001458sd0000A002* + ID_MODEL_FROM_DATABASE=GA-D525TUD (Realtek ALC887) + +pci:v00008086d000027D8sv00001458sd0000A102* + ID_MODEL_FROM_DATABASE=GA-8I945PG-RH Mainboard + +pci:v00008086d000027D8sv0000152Dsd00000753* + ID_MODEL_FROM_DATABASE=Softmodem + +pci:v00008086d000027D8sv00001734sd000010AD* + ID_MODEL_FROM_DATABASE=Conexant softmodem SmartCP + +pci:v00008086d000027D8sv000017AAsd00002010* + ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series + +pci:v00008086d000027D8sv000017AAsd00003802* + ID_MODEL_FROM_DATABASE=Lenovo 3000 C200 audio [Realtek ALC861VD] + +pci:v00008086d000027D8sv00008086sd00001112* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d000027D8sv00008086sd000027D8* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d000027D8sv00008086sd0000D618* + ID_MODEL_FROM_DATABASE=DeskTop Board D510MO + +pci:v00008086d000027D8sv00008384sd00007680* + ID_MODEL_FROM_DATABASE=STAC9221 HD Audio Codec + +pci:v00008086d000027DA* + ID_MODEL_FROM_DATABASE=NM10/ICH7 Family SMBus Controller + +pci:v00008086d000027DAsv00001025sd0000006C* + ID_MODEL_FROM_DATABASE=9814 WKMI + +pci:v00008086d000027DAsv00001028sd000001AD* + ID_MODEL_FROM_DATABASE=OptiPlex GX620 + +pci:v00008086d000027DAsv00001028sd000001D7* + ID_MODEL_FROM_DATABASE=XPS M1210 + +pci:v00008086d000027DAsv00001028sd000001DF* + ID_MODEL_FROM_DATABASE=PowerEdge SC440 + +pci:v00008086d000027DAsv00001028sd000001E6* + ID_MODEL_FROM_DATABASE=PowerEdge 860 + +pci:v00008086d000027DAsv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Pavilion A1512X + +pci:v00008086d000027DAsv00001043sd00008179* + ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard + +pci:v00008086d000027DAsv0000105Bsd00000D7C* + ID_MODEL_FROM_DATABASE=D270S/D250S Motherboard + +pci:v00008086d000027DAsv000010F7sd00008338* + ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop + +pci:v00008086d000027DAsv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d000027DAsv00001458sd00005001* + ID_MODEL_FROM_DATABASE=GA-8I945PG-RH/GA-D525TUD Mainboard + +pci:v00008086d000027DAsv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027DAsv000017AAsd0000200F* + ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series + +pci:v00008086d000027DAsv00008086sd00004F4D* + ID_MODEL_FROM_DATABASE=DeskTop Board D510MO + +pci:v00008086d000027DAsv00008086sd0000544B* + ID_MODEL_FROM_DATABASE=Desktop Board D425KT + +pci:v00008086d000027DAsv00008086sd0000544E* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d000027DAsv00008086sd00005842* + ID_MODEL_FROM_DATABASE=DeskTop Board D975XBX + +pci:v00008086d000027DC* + ID_MODEL_FROM_DATABASE=NM10/ICH7 Family LAN Controller + +pci:v00008086d000027DCsv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Pavilion A1512X + +pci:v00008086d000027DCsv00008086sd0000308D* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d000027DD* + ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) AC'97 Modem Controller + +pci:v00008086d000027DE* + ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) AC'97 Audio Controller + +pci:v00008086d000027DEsv00001028sd000001AD* + ID_MODEL_FROM_DATABASE=OptiPlex GX620 + +pci:v00008086d000027DEsv00001462sd00007267* + ID_MODEL_FROM_DATABASE=Realtek ALC883 Audio Controller + +pci:v00008086d000027DEsv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11 integrated audio (AD1981BL codec) + +pci:v00008086d000027DF* + ID_MODEL_FROM_DATABASE=82801G (ICH7 Family) IDE Controller + +pci:v00008086d000027DFsv00001028sd000001DF* + ID_MODEL_FROM_DATABASE=PowerEdge SC440 + +pci:v00008086d000027DFsv00001028sd000001E6* + ID_MODEL_FROM_DATABASE=PowerEdge 860 + +pci:v00008086d000027DFsv0000103Csd00002A3B* + ID_MODEL_FROM_DATABASE=Pavilion A1512X + +pci:v00008086d000027DFsv0000103Csd0000309F* + ID_MODEL_FROM_DATABASE=Compaq nx9420 Notebook + +pci:v00008086d000027DFsv0000103Csd000030A1* + ID_MODEL_FROM_DATABASE=NC2400 + +pci:v00008086d000027DFsv0000103Csd000030A3* + ID_MODEL_FROM_DATABASE=Compaq nw8440 + +pci:v00008086d000027DFsv00001043sd00001237* + ID_MODEL_FROM_DATABASE=A6J-Q008 + +pci:v00008086d000027DFsv00001043sd00008179* + ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard + +pci:v00008086d000027DFsv0000107Bsd00005048* + ID_MODEL_FROM_DATABASE=E4500 + +pci:v00008086d000027DFsv000010F7sd00008338* + ID_MODEL_FROM_DATABASE=Panasonic CF-Y5 laptop + +pci:v00008086d000027DFsv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027DFsv000017AAsd0000200C* + ID_MODEL_FROM_DATABASE=ThinkPad T60/R60 series + +pci:v00008086d000027DFsv00008086sd0000544E* + ID_MODEL_FROM_DATABASE=DeskTop Board D945GTP + +pci:v00008086d000027E0* + ID_MODEL_FROM_DATABASE=82801GR/GH/GHM (ICH7 Family) PCI Express Port 5 + +pci:v00008086d000027E0sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d000027E2* + ID_MODEL_FROM_DATABASE=82801GR/GH/GHM (ICH7 Family) PCI Express Port 6 + +pci:v00008086d000027E2sv00001775sd000011CC* + ID_MODEL_FROM_DATABASE=CC11/CL11 + +pci:v00008086d00002810* + ID_MODEL_FROM_DATABASE=82801HB/HR (ICH8/R) LPC Interface Controller + +pci:v00008086d00002810sv00001043sd000081EC* + ID_MODEL_FROM_DATABASE=P5B + +pci:v00008086d00002811* + ID_MODEL_FROM_DATABASE=82801HEM (ICH8M-E) LPC Interface Controller + +pci:v00008086d00002811sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002811sv000017AAsd000020B6* + ID_MODEL_FROM_DATABASE=T61 + +pci:v00008086d00002811sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002812* + ID_MODEL_FROM_DATABASE=82801HH (ICH8DH) LPC Interface Controller + +pci:v00008086d00002814* + ID_MODEL_FROM_DATABASE=82801HO (ICH8DO) LPC Interface Controller + +pci:v00008086d00002815* + ID_MODEL_FROM_DATABASE=82801HM (ICH8M) LPC Interface Controller + +pci:v00008086d00002815sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v00008086d00002815sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00008086d00002815sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d00002815sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00008086d00002815sv0000103Csd000030D9* + ID_MODEL_FROM_DATABASE=Presario C700 + +pci:v00008086d00002815sv0000104Dsd00009005* + ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E + +pci:v00008086d00002815sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002820* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) 4 port SATA Controller [IDE mode] + +pci:v00008086d00002820sv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v00008086d00002820sv00001462sd00007235* + ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard + +pci:v00008086d00002821* + ID_MODEL_FROM_DATABASE=82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode] + +pci:v00008086d00002822* + ID_MODEL_FROM_DATABASE=82801 SATA Controller [RAID mode] + +pci:v00008086d00002822sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002823* + ID_MODEL_FROM_DATABASE=Wellsburg sSATA RAID Controller + +pci:v00008086d00002824* + ID_MODEL_FROM_DATABASE=82801HB (ICH8) 4 port SATA Controller [AHCI mode] + +pci:v00008086d00002824sv00001043sd000081EC* + ID_MODEL_FROM_DATABASE=P5B + +pci:v00008086d00002825* + ID_MODEL_FROM_DATABASE=82801HR/HO/HH (ICH8R/DO/DH) 2 port SATA Controller [IDE mode] + +pci:v00008086d00002825sv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v00008086d00002825sv00001462sd00007235* + ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard + +pci:v00008086d00002826* + ID_MODEL_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller + +pci:v00008086d00002827* + ID_MODEL_FROM_DATABASE=Wellsburg sSATA RAID Controller + +pci:v00008086d00002828* + ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode] + +pci:v00008086d00002828sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00008086d00002828sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d00002828sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002829* + ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] + +pci:v00008086d00002829sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v00008086d00002829sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d00002829sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002829sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00008086d00002829sv0000103Csd000030D9* + ID_MODEL_FROM_DATABASE=Presario C700 + +pci:v00008086d00002829sv0000104Dsd00009005* + ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E + +pci:v00008086d00002829sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002829sv000017AAsd000020A7* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d00002829sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d0000282A* + ID_MODEL_FROM_DATABASE=82801 Mobile SATA Controller [RAID mode] + +pci:v00008086d0000282Asv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d0000282Asv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d00002830* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 + +pci:v00008086d00002830sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Acer Aspire 5920G + +pci:v00008086d00002830sv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v00008086d00002830sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00008086d00002830sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d00002830sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002830sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00008086d00002830sv0000103Csd000030D9* + ID_MODEL_FROM_DATABASE=Presario C700 + +pci:v00008086d00002830sv00001043sd000081EC* + ID_MODEL_FROM_DATABASE=P5B + +pci:v00008086d00002830sv0000104Dsd00009005* + ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E + +pci:v00008086d00002830sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002830sv00001462sd00007235* + ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard + +pci:v00008086d00002830sv000017AAsd000020AA* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d00002830sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002831* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 + +pci:v00008086d00002831sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v00008086d00002831sv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v00008086d00002831sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00008086d00002831sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d00002831sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002831sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00008086d00002831sv0000103Csd000030D9* + ID_MODEL_FROM_DATABASE=Presario C700 + +pci:v00008086d00002831sv00001043sd000081EC* + ID_MODEL_FROM_DATABASE=P5B + +pci:v00008086d00002831sv0000104Dsd00009005* + ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E + +pci:v00008086d00002831sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002831sv00001462sd00007235* + ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard + +pci:v00008086d00002831sv000017AAsd000020AA* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d00002831sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002832* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3 + +pci:v00008086d00002832sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v00008086d00002832sv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v00008086d00002832sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00008086d00002832sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d00002832sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002832sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00008086d00002832sv0000103Csd000030D9* + ID_MODEL_FROM_DATABASE=Presario C700 + +pci:v00008086d00002832sv00001043sd000081EC* + ID_MODEL_FROM_DATABASE=P5B + +pci:v00008086d00002832sv0000104Dsd00009005* + ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E + +pci:v00008086d00002832sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002832sv000017AAsd000020AA* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d00002832sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002833* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 + +pci:v00008086d00002833sv00001043sd000081EC* + ID_MODEL_FROM_DATABASE=P5B + +pci:v00008086d00002834* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 + +pci:v00008086d00002834sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v00008086d00002834sv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v00008086d00002834sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00008086d00002834sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d00002834sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002834sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00008086d00002834sv00001043sd000081EC* + ID_MODEL_FROM_DATABASE=P5B + +pci:v00008086d00002834sv0000104Dsd00009005* + ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E + +pci:v00008086d00002834sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002834sv00001462sd00007235* + ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard + +pci:v00008086d00002834sv000017AAsd000020AA* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d00002834sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002835* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #5 + +pci:v00008086d00002835sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Acer Aspire 5920G + +pci:v00008086d00002835sv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v00008086d00002835sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00008086d00002835sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d00002835sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002835sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00008086d00002835sv00001043sd000081EC* + ID_MODEL_FROM_DATABASE=P5B + +pci:v00008086d00002835sv0000104Dsd00009005* + ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E + +pci:v00008086d00002835sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002835sv000017AAsd000020AA* + ID_MODEL_FROM_DATABASE=ThinkPad T60 + +pci:v00008086d00002835sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002836* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 + +pci:v00008086d00002836sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v00008086d00002836sv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v00008086d00002836sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00008086d00002836sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d00002836sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002836sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00008086d00002836sv0000103Csd000030D9* + ID_MODEL_FROM_DATABASE=Presario C700 + +pci:v00008086d00002836sv00001043sd000081EC* + ID_MODEL_FROM_DATABASE=P5B + +pci:v00008086d00002836sv0000104Dsd00009005* + ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E + +pci:v00008086d00002836sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002836sv00001462sd00007235* + ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard + +pci:v00008086d00002836sv000017AAsd000020AB* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d00002836sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d0000283A* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #2 + +pci:v00008086d0000283Asv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Acer Aspire 5920G + +pci:v00008086d0000283Asv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v00008086d0000283Asv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00008086d0000283Asv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d0000283Asv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d0000283Asv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00008086d0000283Asv00001043sd000081EC* + ID_MODEL_FROM_DATABASE=P5B + +pci:v00008086d0000283Asv0000104Dsd00009005* + ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E + +pci:v00008086d0000283Asv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d0000283Asv000017AAsd000020AB* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d0000283Asv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d0000283E* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) SMBus Controller + +pci:v00008086d0000283Esv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v00008086d0000283Esv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v00008086d0000283Esv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00008086d0000283Esv0000103Csd000030D9* + ID_MODEL_FROM_DATABASE=Presario C700 + +pci:v00008086d0000283Esv00001043sd000081EC* + ID_MODEL_FROM_DATABASE=P5B + +pci:v00008086d0000283Esv0000104Dsd00009005* + ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E + +pci:v00008086d0000283Esv0000104Dsd00009008* + ID_MODEL_FROM_DATABASE=Vaio VGN-SZ79SN_C + +pci:v00008086d0000283Esv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d0000283Esv00001462sd00007235* + ID_MODEL_FROM_DATABASE=P965 Neo MS-7235 mainboard + +pci:v00008086d0000283Esv000017AAsd000020A9* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d0000283Esv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d0000283F* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 1 + +pci:v00008086d0000283Fsv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v00008086d0000283Fsv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d0000283Fsv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d0000283Fsv000017AAsd000020AD* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d00002841* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 2 + +pci:v00008086d00002841sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002841sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002841sv000017AAsd000020AD* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d00002843* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 3 + +pci:v00008086d00002843sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002843sv000017AAsd000020AD* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d00002845* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 4 + +pci:v00008086d00002845sv000017AAsd000020AD* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d00002847* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 5 + +pci:v00008086d00002847sv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v00008086d00002847sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002847sv000017AAsd000020AD* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d00002849* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 6 + +pci:v00008086d0000284B* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller + +pci:v00008086d0000284Bsv00001025sd0000011F* + ID_MODEL_FROM_DATABASE=Realtek ALC268 audio codec + +pci:v00008086d0000284Bsv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v00008086d0000284Bsv00001025sd00000145* + ID_MODEL_FROM_DATABASE=Realtek ALC889 (Aspire 8920G w. Dolby Theather) + +pci:v00008086d0000284Bsv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v00008086d0000284Bsv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00008086d0000284Bsv00001028sd000001F9* + ID_MODEL_FROM_DATABASE=Dell Latitude D630 + +pci:v00008086d0000284Bsv00001028sd000001FF* + ID_MODEL_FROM_DATABASE=Dell Precision M4300 + +pci:v00008086d0000284Bsv00001028sd00000256* + ID_MODEL_FROM_DATABASE=Studio 1735 + +pci:v00008086d0000284Bsv0000103Csd00002802* + ID_MODEL_FROM_DATABASE=HP Compaq dc7700p + +pci:v00008086d0000284Bsv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d0000284Bsv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d0000284Bsv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00008086d0000284Bsv00001043sd00001339* + ID_MODEL_FROM_DATABASE=Asus M51S series + +pci:v00008086d0000284Bsv00001043sd000081EC* + ID_MODEL_FROM_DATABASE=P5B + +pci:v00008086d0000284Bsv0000104Dsd00009005* + ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E + +pci:v00008086d0000284Bsv0000104Dsd00009008* + ID_MODEL_FROM_DATABASE=Vaio VGN-SZ79SN_C + +pci:v00008086d0000284Bsv0000104Dsd00009016* + ID_MODEL_FROM_DATABASE=Sony VAIO VGN-AR51M + +pci:v00008086d0000284Bsv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d0000284Bsv000014F1sd00005051* + ID_MODEL_FROM_DATABASE=Presario C700 + +pci:v00008086d0000284Bsv000017AAsd000020AC* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d0000284Bsv00008384sd00007616* + ID_MODEL_FROM_DATABASE=Dell Vostro 1400 + +pci:v00008086d0000284Bsv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d0000284F* + ID_MODEL_FROM_DATABASE=82801H (ICH8 Family) Thermal Reporting Device + +pci:v00008086d00002850* + ID_MODEL_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) IDE Controller + +pci:v00008086d00002850sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Aspire 5920G + +pci:v00008086d00002850sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00008086d00002850sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d00002850sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002850sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00008086d00002850sv0000103Csd000030D9* + ID_MODEL_FROM_DATABASE=Presario C700 + +pci:v00008086d00002850sv0000104Dsd00009005* + ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E + +pci:v00008086d00002850sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002850sv000017AAsd000020A6* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d00002850sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002912* + ID_MODEL_FROM_DATABASE=82801IH (ICH9DH) LPC Interface Controller + +pci:v00008086d00002914* + ID_MODEL_FROM_DATABASE=82801IO (ICH9DO) LPC Interface Controller + +pci:v00008086d00002914sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002916* + ID_MODEL_FROM_DATABASE=82801IR (ICH9R) LPC Interface Controller + +pci:v00008086d00002916sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002916sv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d00002916sv00008086sd00005044* + ID_MODEL_FROM_DATABASE=Desktop Board DP35DP + +pci:v00008086d00002917* + ID_MODEL_FROM_DATABASE=ICH9M-E LPC Interface Controller + +pci:v00008086d00002917sv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d00002918* + ID_MODEL_FROM_DATABASE=82801IB (ICH9) LPC Interface Controller + +pci:v00008086d00002918sv00001028sd00000236* + ID_MODEL_FROM_DATABASE=PowerEdge R610 82801IB (ICH9) LPC Interface Controller + +pci:v00008086d00002918sv00001462sd00007360* + ID_MODEL_FROM_DATABASE=G33/P35 Neo + +pci:v00008086d00002919* + ID_MODEL_FROM_DATABASE=ICH9M LPC Interface Controller + +pci:v00008086d00002920* + ID_MODEL_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode] + +pci:v00008086d00002920sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002920sv00001028sd0000020F* + ID_MODEL_FROM_DATABASE=PowerEdge R300 onboard SATA Controller + +pci:v00008086d00002920sv00001028sd00000210* + ID_MODEL_FROM_DATABASE=PowerEdge T300 onboard SATA Controller + +pci:v00008086d00002920sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002920sv00001028sd0000023C* + ID_MODEL_FROM_DATABASE=PowerEdge R200 onboard SATA Controller + +pci:v00008086d00002920sv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d00002921* + ID_MODEL_FROM_DATABASE=82801IB (ICH9) 2 port SATA Controller [IDE mode] + +pci:v00008086d00002921sv00001028sd00000235* + ID_MODEL_FROM_DATABASE=PowerEdge R710 SATA IDE Controller + +pci:v00008086d00002921sv00001028sd00000236* + ID_MODEL_FROM_DATABASE=PowerEdge R610 SATA IDE Controller + +pci:v00008086d00002921sv00001028sd00000237* + ID_MODEL_FROM_DATABASE=PowerEdge T610 SATA IDE Controller + +pci:v00008086d00002921sv00001462sd00007360* + ID_MODEL_FROM_DATABASE=G33/P35 Neo + +pci:v00008086d00002922* + ID_MODEL_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] + +pci:v00008086d00002922sv00008086sd00005044* + ID_MODEL_FROM_DATABASE=Desktop Board DP35DP + +pci:v00008086d00002923* + ID_MODEL_FROM_DATABASE=82801IB (ICH9) 4 port SATA Controller [AHCI mode] + +pci:v00008086d00002925* + ID_MODEL_FROM_DATABASE=82801IR/IO (ICH9R/DO) SATA Controller [RAID mode] + +pci:v00008086d00002925sv00001734sd000010E0* + ID_MODEL_FROM_DATABASE=System Board D2542 + +pci:v00008086d00002925sv00008086sd00002925* + ID_MODEL_FROM_DATABASE=System Board D2542 + +pci:v00008086d00002926* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) 2 port SATA Controller [IDE mode] + +pci:v00008086d00002926sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002926sv00001028sd0000020F* + ID_MODEL_FROM_DATABASE=PowerEdge R300 onboard SATA Controller + +pci:v00008086d00002926sv00001028sd00000210* + ID_MODEL_FROM_DATABASE=PowerEdge T300 onboard SATA Controller + +pci:v00008086d00002926sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002926sv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d00002926sv00001462sd00007360* + ID_MODEL_FROM_DATABASE=G33/P35 Neo + +pci:v00008086d00002928* + ID_MODEL_FROM_DATABASE=82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode] + +pci:v00008086d00002929* + ID_MODEL_FROM_DATABASE=82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode] + +pci:v00008086d00002929sv0000103Csd00003628* + ID_MODEL_FROM_DATABASE=dv6-1190en + +pci:v00008086d00002929sv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d0000292C* + ID_MODEL_FROM_DATABASE=82801IEM (ICH9M-E) SATA Controller [RAID mode] + +pci:v00008086d0000292D* + ID_MODEL_FROM_DATABASE=82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode] + +pci:v00008086d0000292Dsv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d00002930* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) SMBus Controller + +pci:v00008086d00002930sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002930sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002930sv0000103Csd00003628* + ID_MODEL_FROM_DATABASE=dv6-1190en + +pci:v00008086d00002930sv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d00002930sv00001462sd00007360* + ID_MODEL_FROM_DATABASE=G33/P35 Neo + +pci:v00008086d00002930sv00008086sd00005044* + ID_MODEL_FROM_DATABASE=Desktop Board DP35DP + +pci:v00008086d00002930sv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d00002932* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) Thermal Subsystem + +pci:v00008086d00002932sv0000103Csd00003628* + ID_MODEL_FROM_DATABASE=dv6-1190en + +pci:v00008086d00002934* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 + +pci:v00008086d00002934sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002934sv00001028sd0000020F* + ID_MODEL_FROM_DATABASE=PowerEdge R300 onboard UHCI + +pci:v00008086d00002934sv00001028sd00000210* + ID_MODEL_FROM_DATABASE=PowerEdge T300 onboard UHCI + +pci:v00008086d00002934sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002934sv00001028sd00000235* + ID_MODEL_FROM_DATABASE=PowerEdge R710 USB UHCI Controller + +pci:v00008086d00002934sv00001028sd00000236* + ID_MODEL_FROM_DATABASE=PowerEdge R610 USB UHCI Controller + +pci:v00008086d00002934sv00001028sd00000237* + ID_MODEL_FROM_DATABASE=PowerEdge T610 USB UHCI Controller + +pci:v00008086d00002934sv00001028sd0000023C* + ID_MODEL_FROM_DATABASE=PowerEdge R200 onboard UHCI + +pci:v00008086d00002934sv00001028sd00000287* + ID_MODEL_FROM_DATABASE=PowerEdge M610 onboard UHCI + +pci:v00008086d00002934sv00001028sd0000029C* + ID_MODEL_FROM_DATABASE=PowerEdge M710 USB UHCI Controller + +pci:v00008086d00002934sv00001028sd00002011* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002934sv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d00002934sv00001462sd00007360* + ID_MODEL_FROM_DATABASE=G33/P35 Neo + +pci:v00008086d00002934sv00008086sd00005044* + ID_MODEL_FROM_DATABASE=Desktop Board DP35DP + +pci:v00008086d00002934sv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d00002935* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 + +pci:v00008086d00002935sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002935sv00001028sd0000020F* + ID_MODEL_FROM_DATABASE=PowerEdge R300 onboard UHCI + +pci:v00008086d00002935sv00001028sd00000210* + ID_MODEL_FROM_DATABASE=PowerEdge T300 onboard UHCI + +pci:v00008086d00002935sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002935sv00001028sd00000235* + ID_MODEL_FROM_DATABASE=PowerEdge R710 USB UHCI Controller + +pci:v00008086d00002935sv00001028sd00000236* + ID_MODEL_FROM_DATABASE=PowerEdge R610 USB UHCI Controller + +pci:v00008086d00002935sv00001028sd00000237* + ID_MODEL_FROM_DATABASE=PowerEdge T610 USB UHCI Controller + +pci:v00008086d00002935sv00001028sd0000023C* + ID_MODEL_FROM_DATABASE=PowerEdge R200 onboard UHCI + +pci:v00008086d00002935sv00001028sd00000287* + ID_MODEL_FROM_DATABASE=PowerEdge M610 onboard UHCI + +pci:v00008086d00002935sv00001028sd0000029C* + ID_MODEL_FROM_DATABASE=PowerEdge M710 USB UHCI Controller + +pci:v00008086d00002935sv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d00002935sv00001462sd00007360* + ID_MODEL_FROM_DATABASE=G33/P35 Neo + +pci:v00008086d00002935sv00008086sd00005044* + ID_MODEL_FROM_DATABASE=Desktop Board DP35DP + +pci:v00008086d00002935sv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d00002936* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 + +pci:v00008086d00002936sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002936sv00001028sd0000020F* + ID_MODEL_FROM_DATABASE=PowerEdge R300 onboard UHCI + +pci:v00008086d00002936sv00001028sd00000210* + ID_MODEL_FROM_DATABASE=PowerEdge T300 onboard UHCI + +pci:v00008086d00002936sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002936sv00001028sd00000237* + ID_MODEL_FROM_DATABASE=PowerEdge T610 USB UHCI Controller + +pci:v00008086d00002936sv00001028sd0000023C* + ID_MODEL_FROM_DATABASE=PowerEdge R200 onboard UHCI + +pci:v00008086d00002936sv00001028sd00000287* + ID_MODEL_FROM_DATABASE=PowerEdge M610 onboard UHCI + +pci:v00008086d00002936sv00001028sd0000029C* + ID_MODEL_FROM_DATABASE=PowerEdge M710 USB UHCI Controller + +pci:v00008086d00002936sv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d00002936sv00001462sd00007360* + ID_MODEL_FROM_DATABASE=G33/P35 Neo + +pci:v00008086d00002936sv00008086sd00005044* + ID_MODEL_FROM_DATABASE=Desktop Board DP35DP + +pci:v00008086d00002936sv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d00002937* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 + +pci:v00008086d00002937sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002937sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002937sv00001028sd00000235* + ID_MODEL_FROM_DATABASE=PowerEdge R710 USB UHCI Controller + +pci:v00008086d00002937sv00001028sd00000236* + ID_MODEL_FROM_DATABASE=PowerEdge R610 USB UHCI Controller + +pci:v00008086d00002937sv00001028sd00000237* + ID_MODEL_FROM_DATABASE=PowerEdge T610 USB UHCI Controller + +pci:v00008086d00002937sv00001028sd00000287* + ID_MODEL_FROM_DATABASE=PowerEdge M610 onboard UHCI + +pci:v00008086d00002937sv00001028sd0000029C* + ID_MODEL_FROM_DATABASE=PowerEdge M710 USB UHCI Controller + +pci:v00008086d00002937sv00001028sd00002011* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002937sv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d00002937sv00001462sd00007360* + ID_MODEL_FROM_DATABASE=G33/P35 Neo + +pci:v00008086d00002937sv00008086sd00002937* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002937sv00008086sd00002942* + ID_MODEL_FROM_DATABASE=828011 (ICH9 Family ) USB UHCI Controller + +pci:v00008086d00002937sv00008086sd00005044* + ID_MODEL_FROM_DATABASE=Desktop Board DP35DP + +pci:v00008086d00002937sv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d00002938* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 + +pci:v00008086d00002938sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002938sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002938sv00001028sd00000235* + ID_MODEL_FROM_DATABASE=PowerEdge R710 USB UHCI Controller + +pci:v00008086d00002938sv00001028sd00000236* + ID_MODEL_FROM_DATABASE=PowerEdge R610 USB UHCI Controller + +pci:v00008086d00002938sv00001028sd00000237* + ID_MODEL_FROM_DATABASE=PowerEdge T610 USB UHCI Controller + +pci:v00008086d00002938sv00001028sd00000287* + ID_MODEL_FROM_DATABASE=PowerEdge M610 onboard UHCI + +pci:v00008086d00002938sv00001028sd0000029C* + ID_MODEL_FROM_DATABASE=PowerEdge M710 USB UHCI Controller + +pci:v00008086d00002938sv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d00002938sv00001462sd00007360* + ID_MODEL_FROM_DATABASE=G33/P35 Neo + +pci:v00008086d00002938sv00008086sd00002938* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002938sv00008086sd00005044* + ID_MODEL_FROM_DATABASE=Desktop Board DP35DP + +pci:v00008086d00002938sv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d00002939* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #6 + +pci:v00008086d00002939sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002939sv00001028sd00000210* + ID_MODEL_FROM_DATABASE=PowerEdge T300 onboard UHCI + +pci:v00008086d00002939sv00001028sd00000237* + ID_MODEL_FROM_DATABASE=PowerEdge T610 USB UHCI Controller + +pci:v00008086d00002939sv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d00002939sv00001462sd00007360* + ID_MODEL_FROM_DATABASE=G33/P35 Neo + +pci:v00008086d00002939sv00008086sd00005044* + ID_MODEL_FROM_DATABASE=Desktop Board DP35DP + +pci:v00008086d00002939sv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d0000293A* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 + +pci:v00008086d0000293Asv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d0000293Asv00001028sd0000020F* + ID_MODEL_FROM_DATABASE=PowerEdge R300 onboard EHCI + +pci:v00008086d0000293Asv00001028sd00000210* + ID_MODEL_FROM_DATABASE=PowerEdge T300 onboard EHCI + +pci:v00008086d0000293Asv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d0000293Asv00001028sd00000235* + ID_MODEL_FROM_DATABASE=PowerEdge R710 USB EHCI Controller + +pci:v00008086d0000293Asv00001028sd00000236* + ID_MODEL_FROM_DATABASE=PowerEdge R610 USB EHCI Controller + +pci:v00008086d0000293Asv00001028sd00000237* + ID_MODEL_FROM_DATABASE=PowerEdge T610 USB EHCI Controller + +pci:v00008086d0000293Asv00001028sd0000023C* + ID_MODEL_FROM_DATABASE=PowerEdge R200 onboard EHCI + +pci:v00008086d0000293Asv00001028sd00000287* + ID_MODEL_FROM_DATABASE=PowerEdge M610 onboard EHCI + +pci:v00008086d0000293Asv00001028sd0000029C* + ID_MODEL_FROM_DATABASE=PowerEdge M710 USB EHCI Controller + +pci:v00008086d0000293Asv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d0000293Asv00001462sd00007360* + ID_MODEL_FROM_DATABASE=G33/P35 Neo + +pci:v00008086d0000293Asv00008086sd00005044* + ID_MODEL_FROM_DATABASE=Desktop Board DP35DP + +pci:v00008086d0000293Asv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d0000293C* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 + +pci:v00008086d0000293Csv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d0000293Csv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d0000293Csv00001028sd00000235* + ID_MODEL_FROM_DATABASE=PowerEdge R710 USB EHCI Controller + +pci:v00008086d0000293Csv00001028sd00000236* + ID_MODEL_FROM_DATABASE=PowerEdge R610 USB EHCI Controller + +pci:v00008086d0000293Csv00001028sd00000237* + ID_MODEL_FROM_DATABASE=PowerEdge T610 USB EHCI Controller + +pci:v00008086d0000293Csv00001028sd00000287* + ID_MODEL_FROM_DATABASE=PowerEdge M610 onboard EHCI + +pci:v00008086d0000293Csv00001028sd0000029C* + ID_MODEL_FROM_DATABASE=PowerEdge M710 USB EHCI Controller + +pci:v00008086d0000293Csv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d0000293Csv00001462sd00007360* + ID_MODEL_FROM_DATABASE=G33/P35 Neo + +pci:v00008086d0000293Csv00008086sd0000293C* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d0000293Csv00008086sd00005044* + ID_MODEL_FROM_DATABASE=Desktop Board DP35DP + +pci:v00008086d0000293Csv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d0000293E* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) HD Audio Controller + +pci:v00008086d0000293Esv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d0000293Esv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d0000293Esv0000103Csd00003628* + ID_MODEL_FROM_DATABASE=dv6-1190en + +pci:v00008086d0000293Esv00001043sd0000829F* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d0000293Esv00001462sd00007360* + ID_MODEL_FROM_DATABASE=G33/P35 Neo + +pci:v00008086d0000293Esv00008086sd0000293E* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d0000293Esv00008086sd00002940* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d0000293Esv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d00002940* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 1 + +pci:v00008086d00002940sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002940sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002940sv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d00002940sv00008086sd00002940* + ID_MODEL_FROM_DATABASE=Optiplex 755 + +pci:v00008086d00002942* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 2 + +pci:v00008086d00002942sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002944* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 3 + +pci:v00008086d00002944sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002946* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 4 + +pci:v00008086d00002946sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002948* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 5 + +pci:v00008086d00002948sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d00002948sv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d0000294A* + ID_MODEL_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 6 + +pci:v00008086d0000294Asv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d0000294Asv00001043sd00008277* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d0000294C* + ID_MODEL_FROM_DATABASE=82566DC-2 Gigabit Network Connection + +pci:v00008086d0000294Csv000017AAsd0000302E* + ID_MODEL_FROM_DATABASE=82566DM-2 Gigabit Network Connection + +pci:v00008086d00002970* + ID_MODEL_FROM_DATABASE=82946GZ/PL/GL Memory Controller Hub + +pci:v00008086d00002971* + ID_MODEL_FROM_DATABASE=82946GZ/PL/GL PCI Express Root Port + +pci:v00008086d00002972* + ID_MODEL_FROM_DATABASE=82946GZ/GL Integrated Graphics Controller + +pci:v00008086d00002973* + ID_MODEL_FROM_DATABASE=82946GZ/GL Integrated Graphics Controller + +pci:v00008086d00002974* + ID_MODEL_FROM_DATABASE=82946GZ/GL HECI Controller + +pci:v00008086d00002975* + ID_MODEL_FROM_DATABASE=82946GZ/GL HECI Controller + +pci:v00008086d00002976* + ID_MODEL_FROM_DATABASE=82946GZ/GL PT IDER Controller + +pci:v00008086d00002977* + ID_MODEL_FROM_DATABASE=82946GZ/GL KT Controller + +pci:v00008086d00002980* + ID_MODEL_FROM_DATABASE=82G35 Express DRAM Controller + +pci:v00008086d00002981* + ID_MODEL_FROM_DATABASE=82G35 Express PCI Express Root Port + +pci:v00008086d00002982* + ID_MODEL_FROM_DATABASE=82G35 Express Integrated Graphics Controller + +pci:v00008086d00002983* + ID_MODEL_FROM_DATABASE=82G35 Express Integrated Graphics Controller + +pci:v00008086d00002984* + ID_MODEL_FROM_DATABASE=82G35 Express HECI Controller + +pci:v00008086d00002990* + ID_MODEL_FROM_DATABASE=82Q963/Q965 Memory Controller Hub + +pci:v00008086d00002990sv00001028sd000001DA* + ID_MODEL_FROM_DATABASE=OptiPlex 745 + +pci:v00008086d00002991* + ID_MODEL_FROM_DATABASE=82Q963/Q965 PCI Express Root Port + +pci:v00008086d00002992* + ID_MODEL_FROM_DATABASE=82Q963/Q965 Integrated Graphics Controller + +pci:v00008086d00002993* + ID_MODEL_FROM_DATABASE=82Q963/Q965 Integrated Graphics Controller + +pci:v00008086d00002994* + ID_MODEL_FROM_DATABASE=82Q963/Q965 HECI Controller + +pci:v00008086d00002995* + ID_MODEL_FROM_DATABASE=82Q963/Q965 HECI Controller + +pci:v00008086d00002996* + ID_MODEL_FROM_DATABASE=82Q963/Q965 PT IDER Controller + +pci:v00008086d00002997* + ID_MODEL_FROM_DATABASE=82Q963/Q965 KT Controller + +pci:v00008086d000029A0* + ID_MODEL_FROM_DATABASE=82P965/G965 Memory Controller Hub + +pci:v00008086d000029A0sv00001043sd000081EA* + ID_MODEL_FROM_DATABASE=P5B + +pci:v00008086d000029A0sv00001462sd00007276* + ID_MODEL_FROM_DATABASE=MS-7276 [G965MDH] + +pci:v00008086d000029A1* + ID_MODEL_FROM_DATABASE=82P965/G965 PCI Express Root Port + +pci:v00008086d000029A2* + ID_MODEL_FROM_DATABASE=82G965 Integrated Graphics Controller + +pci:v00008086d000029A2sv00001462sd00007276* + ID_MODEL_FROM_DATABASE=MS-7276 [G965MDH] + +pci:v00008086d000029A3* + ID_MODEL_FROM_DATABASE=82G965 Integrated Graphics Controller + +pci:v00008086d000029A4* + ID_MODEL_FROM_DATABASE=82P965/G965 HECI Controller + +pci:v00008086d000029A5* + ID_MODEL_FROM_DATABASE=82P965/G965 HECI Controller + +pci:v00008086d000029A6* + ID_MODEL_FROM_DATABASE=82P965/G965 PT IDER Controller + +pci:v00008086d000029A7* + ID_MODEL_FROM_DATABASE=82P965/G965 KT Controller + +pci:v00008086d000029B0* + ID_MODEL_FROM_DATABASE=82Q35 Express DRAM Controller + +pci:v00008086d000029B0sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=OptiPlex 755 + +pci:v00008086d000029B1* + ID_MODEL_FROM_DATABASE=82Q35 Express PCI Express Root Port + +pci:v00008086d000029B1sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=OptiPlex 755 + +pci:v00008086d000029B2* + ID_MODEL_FROM_DATABASE=82Q35 Express Integrated Graphics Controller + +pci:v00008086d000029B2sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=OptiPlex 755 + +pci:v00008086d000029B3* + ID_MODEL_FROM_DATABASE=82Q35 Express Integrated Graphics Controller + +pci:v00008086d000029B3sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=OptiPlex 755 + +pci:v00008086d000029B4* + ID_MODEL_FROM_DATABASE=82Q35 Express MEI Controller + +pci:v00008086d000029B4sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=OptiPlex 755 + +pci:v00008086d000029B5* + ID_MODEL_FROM_DATABASE=82Q35 Express MEI Controller + +pci:v00008086d000029B6* + ID_MODEL_FROM_DATABASE=82Q35 Express PT IDER Controller + +pci:v00008086d000029B6sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=OptiPlex 755 + +pci:v00008086d000029B7* + ID_MODEL_FROM_DATABASE=82Q35 Express Serial KT Controller + +pci:v00008086d000029B7sv00001028sd00000211* + ID_MODEL_FROM_DATABASE=OptiPlex 755 + +pci:v00008086d000029C0* + ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express DRAM Controller + +pci:v00008086d000029C0sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d000029C0sv00001043sd00008276* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d000029C0sv00001043sd000082B0* + ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard + +pci:v00008086d000029C0sv00001462sd00007360* + ID_MODEL_FROM_DATABASE=G33/P35 Neo + +pci:v00008086d000029C0sv00008086sd00005044* + ID_MODEL_FROM_DATABASE=Desktop Board DP35DP + +pci:v00008086d000029C1* + ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express PCI Express Root Port + +pci:v00008086d000029C1sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d000029C1sv00001043sd00008276* + ID_MODEL_FROM_DATABASE=P5K PRO Motherboard + +pci:v00008086d000029C2* + ID_MODEL_FROM_DATABASE=82G33/G31 Express Integrated Graphics Controller + +pci:v00008086d000029C2sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d000029C2sv00001043sd000082B0* + ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard + +pci:v00008086d000029C3* + ID_MODEL_FROM_DATABASE=82G33/G31 Express Integrated Graphics Controller + +pci:v00008086d000029C3sv00001028sd0000020D* + ID_MODEL_FROM_DATABASE=Inspiron 530 + +pci:v00008086d000029C3sv00001043sd000082B0* + ID_MODEL_FROM_DATABASE=P5KPL-VM Motherboard + +pci:v00008086d000029C4* + ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express MEI Controller + +pci:v00008086d000029C4sv00008086sd00005044* + ID_MODEL_FROM_DATABASE=Desktop Board DP35DP + +pci:v00008086d000029C5* + ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express MEI Controller + +pci:v00008086d000029C6* + ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express PT IDER Controller + +pci:v00008086d000029C7* + ID_MODEL_FROM_DATABASE=82G33/G31/P35/P31 Express Serial KT Controller + +pci:v00008086d000029CF* + ID_MODEL_FROM_DATABASE=Virtual HECI Controller + +pci:v00008086d000029D0* + ID_MODEL_FROM_DATABASE=82Q33 Express DRAM Controller + +pci:v00008086d000029D1* + ID_MODEL_FROM_DATABASE=82Q33 Express PCI Express Root Port + +pci:v00008086d000029D2* + ID_MODEL_FROM_DATABASE=82Q33 Express Integrated Graphics Controller + +pci:v00008086d000029D3* + ID_MODEL_FROM_DATABASE=82Q33 Express Integrated Graphics Controller + +pci:v00008086d000029D4* + ID_MODEL_FROM_DATABASE=82Q33 Express MEI Controller + +pci:v00008086d000029D5* + ID_MODEL_FROM_DATABASE=82Q33 Express MEI Controller + +pci:v00008086d000029D6* + ID_MODEL_FROM_DATABASE=82Q33 Express PT IDER Controller + +pci:v00008086d000029D7* + ID_MODEL_FROM_DATABASE=82Q33 Express Serial KT Controller + +pci:v00008086d000029E0* + ID_MODEL_FROM_DATABASE=82X38/X48 Express DRAM Controller + +pci:v00008086d000029E1* + ID_MODEL_FROM_DATABASE=82X38/X48 Express Host-Primary PCI Express Bridge + +pci:v00008086d000029E4* + ID_MODEL_FROM_DATABASE=82X38/X48 Express MEI Controller + +pci:v00008086d000029E5* + ID_MODEL_FROM_DATABASE=82X38/X48 Express MEI Controller + +pci:v00008086d000029E6* + ID_MODEL_FROM_DATABASE=82X38/X48 Express PT IDER Controller + +pci:v00008086d000029E7* + ID_MODEL_FROM_DATABASE=82X38/X48 Express Serial KT Controller + +pci:v00008086d000029E9* + ID_MODEL_FROM_DATABASE=82X38/X48 Express Host-Secondary PCI Express Bridge + +pci:v00008086d000029F0* + ID_MODEL_FROM_DATABASE=3200/3210 Chipset DRAM Controller + +pci:v00008086d000029F1* + ID_MODEL_FROM_DATABASE=3200/3210 Chipset Host-Primary PCI Express Bridge + +pci:v00008086d000029F4* + ID_MODEL_FROM_DATABASE=3200/3210 Chipset MEI Controller + +pci:v00008086d000029F5* + ID_MODEL_FROM_DATABASE=3200/3210 Chipset MEI Controller + +pci:v00008086d000029F6* + ID_MODEL_FROM_DATABASE=3200/3210 Chipset PT IDER Controller + +pci:v00008086d000029F7* + ID_MODEL_FROM_DATABASE=3200/3210 Chipset Serial KT Controller + +pci:v00008086d000029F9* + ID_MODEL_FROM_DATABASE=3210 Chipset Host-Secondary PCI Express Bridge + +pci:v00008086d00002A00* + ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub + +pci:v00008086d00002A00sv00001025sd00000121* + ID_MODEL_FROM_DATABASE=Acer Aspire 5920G + +pci:v00008086d00002A00sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00008086d00002A00sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d00002A00sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002A00sv0000103Csd000030CC* + ID_MODEL_FROM_DATABASE=Pavilion dv6700 + +pci:v00008086d00002A00sv0000103Csd000030D9* + ID_MODEL_FROM_DATABASE=Presario C700 + +pci:v00008086d00002A00sv0000104Dsd00009005* + ID_MODEL_FROM_DATABASE=Vaio VGN-FZ260E + +pci:v00008086d00002A00sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002A00sv000017AAsd000020B1* + ID_MODEL_FROM_DATABASE=ThinkPad T61 + +pci:v00008086d00002A00sv000017AAsd000020B3* + ID_MODEL_FROM_DATABASE=ThinkPad T61/R61 + +pci:v00008086d00002A00sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002A01* + ID_MODEL_FROM_DATABASE=Mobile PM965/GM965/GL960 PCI Express Root Port + +pci:v00008086d00002A02* + ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (primary) + +pci:v00008086d00002A02sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Inspiron 1420 + +pci:v00008086d00002A02sv00001028sd000001F9* + ID_MODEL_FROM_DATABASE=Latitude D630 + +pci:v00008086d00002A02sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d00002A02sv0000103Csd000030D9* + ID_MODEL_FROM_DATABASE=Presario C700 + +pci:v00008086d00002A02sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002A02sv000017AAsd000020B5* + ID_MODEL_FROM_DATABASE=ThinkPad T61/R61 + +pci:v00008086d00002A02sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002A03* + ID_MODEL_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (secondary) + +pci:v00008086d00002A03sv00001028sd000001F3* + ID_MODEL_FROM_DATABASE=Dell Inspiron 1420 + +pci:v00008086d00002A03sv0000103Csd000030C0* + ID_MODEL_FROM_DATABASE=Compaq 6710b + +pci:v00008086d00002A03sv0000103Csd000030D9* + ID_MODEL_FROM_DATABASE=Presario C700 + +pci:v00008086d00002A03sv0000104Dsd0000902D* + ID_MODEL_FROM_DATABASE=VAIO VGN-NR120E + +pci:v00008086d00002A03sv000017AAsd000020B5* + ID_MODEL_FROM_DATABASE=ThinkPad T61/R61 + +pci:v00008086d00002A03sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002A04* + ID_MODEL_FROM_DATABASE=Mobile PM965/GM965 MEI Controller + +pci:v00008086d00002A04sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002A05* + ID_MODEL_FROM_DATABASE=Mobile PM965/GM965 MEI Controller + +pci:v00008086d00002A06* + ID_MODEL_FROM_DATABASE=Mobile PM965/GM965 PT IDER Controller + +pci:v00008086d00002A06sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002A07* + ID_MODEL_FROM_DATABASE=Mobile PM965/GM965 KT Controller + +pci:v00008086d00002A07sv0000103Csd000030C1* + ID_MODEL_FROM_DATABASE=Compaq 6910p + +pci:v00008086d00002A10* + ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 Memory Controller Hub + +pci:v00008086d00002A10sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002A11* + ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 PCI Express Root Port + +pci:v00008086d00002A12* + ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 Integrated Graphics Controller + +pci:v00008086d00002A12sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002A13* + ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 Integrated Graphics Controller + +pci:v00008086d00002A13sv0000E4BFsd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v00008086d00002A14* + ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 MEI Controller + +pci:v00008086d00002A15* + ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 MEI Controller + +pci:v00008086d00002A16* + ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 PT IDER Controller + +pci:v00008086d00002A17* + ID_MODEL_FROM_DATABASE=Mobile GME965/GLE960 KT Controller + +pci:v00008086d00002A40* + ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset Memory Controller Hub + +pci:v00008086d00002A40sv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d00002A41* + ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset PCI Express Graphics Port + +pci:v00008086d00002A41sv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d00002A42* + ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset Integrated Graphics Controller + +pci:v00008086d00002A42sv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d00002A43* + ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset Integrated Graphics Controller + +pci:v00008086d00002A43sv0000E4BFsd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v00008086d00002A44* + ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset MEI Controller + +pci:v00008086d00002A45* + ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset MEI Controller + +pci:v00008086d00002A46* + ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset PT IDER Controller + +pci:v00008086d00002A47* + ID_MODEL_FROM_DATABASE=Mobile 4 Series Chipset AMT SOL Redirection + +pci:v00008086d00002A50* + ID_MODEL_FROM_DATABASE=Cantiga MEI Controller + +pci:v00008086d00002A51* + ID_MODEL_FROM_DATABASE=Cantiga MEI Controller + +pci:v00008086d00002A52* + ID_MODEL_FROM_DATABASE=Cantiga PT IDER Controller + +pci:v00008086d00002A53* + ID_MODEL_FROM_DATABASE=Cantiga AMT SOL Redirection + +pci:v00008086d00002B00* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family System Configuration Controller 1 + +pci:v00008086d00002B02* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family System Configuration Controller 2 + +pci:v00008086d00002B04* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Power Controller + +pci:v00008086d00002B08* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Caching Agent 0 + +pci:v00008086d00002B0C* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Caching Agent 1 + +pci:v00008086d00002B10* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family QPI Home Agent 0 + +pci:v00008086d00002B13* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Memory Controller 0c + +pci:v00008086d00002B14* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Memory Controller 0a + +pci:v00008086d00002B16* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Memory Controller 0b + +pci:v00008086d00002B18* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family QPI Home Agent 1 + +pci:v00008086d00002B1B* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Memory Controller 1c + +pci:v00008086d00002B1C* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Memory Controller 1a + +pci:v00008086d00002B1E* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Memory Controller 1b + +pci:v00008086d00002B20* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 0 + +pci:v00008086d00002B22* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family System Configuration Controller 3 + +pci:v00008086d00002B24* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 1 + +pci:v00008086d00002B28* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 2 + +pci:v00008086d00002B2A* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family System Configuration Controller 4 + +pci:v00008086d00002B2C* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 3 + +pci:v00008086d00002B30* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 4 + +pci:v00008086d00002B34* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 5 + +pci:v00008086d00002B38* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 6 + +pci:v00008086d00002B3C* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 7 + +pci:v00008086d00002B40* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family QPI Router Port 0-1 + +pci:v00008086d00002B42* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family QPI Router Port 2-3 + +pci:v00008086d00002B44* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family QPI Router Port 4-5 + +pci:v00008086d00002B46* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family QPI Router Port 6-7 + +pci:v00008086d00002B48* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Test and Debug 0 + +pci:v00008086d00002B4C* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Test and Debug 1 + +pci:v00008086d00002B50* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 0: REUT control/status + +pci:v00008086d00002B52* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 0: Misc. control/status + +pci:v00008086d00002B54* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 1: REUT control/status + +pci:v00008086d00002B56* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 1: Misc. control/status + +pci:v00008086d00002B58* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 2: REUT control/status + +pci:v00008086d00002B5A* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 2: Misc. control/status + +pci:v00008086d00002B5C* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 3: REUT control/status + +pci:v00008086d00002B5E* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 3: Misc. control/status + +pci:v00008086d00002B60* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family SMI Physical Port 0: REUT control/status + +pci:v00008086d00002B62* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family SMI Physical Port 0: Misc control/status + +pci:v00008086d00002B64* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family SMI Physical Port 1: REUT control/status + +pci:v00008086d00002B66* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family SMI Physical Port 1: Misc control/status + +pci:v00008086d00002B68* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 8 + +pci:v00008086d00002B6C* + ID_MODEL_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 9 + +pci:v00008086d00002C01* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 QuickPath Architecture System Address Decoder + +pci:v00008086d00002C10* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 QPI Link 0 + +pci:v00008086d00002C11* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 QPI Physical 0 + +pci:v00008086d00002C14* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 QPI Link 1 + +pci:v00008086d00002C15* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 QPI Physical 1 + +pci:v00008086d00002C18* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller + +pci:v00008086d00002C19* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Target Address Decoder + +pci:v00008086d00002C1A* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller RAS Registers + +pci:v00008086d00002C1C* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Test Registers + +pci:v00008086d00002C20* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Control Registers + +pci:v00008086d00002C21* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Address Registers + +pci:v00008086d00002C22* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Rank Registers + +pci:v00008086d00002C23* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Thermal Control Registers + +pci:v00008086d00002C28* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Control Registers + +pci:v00008086d00002C29* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Address Registers + +pci:v00008086d00002C2A* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Rank Registers + +pci:v00008086d00002C2B* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Thermal Control Registers + +pci:v00008086d00002C30* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Control Registers + +pci:v00008086d00002C31* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Address Registers + +pci:v00008086d00002C32* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Rank Registers + +pci:v00008086d00002C33* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Thermal Control Registers + +pci:v00008086d00002C40* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers + +pci:v00008086d00002C41* + ID_MODEL_FROM_DATABASE=Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers + +pci:v00008086d00002C50* + ID_MODEL_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers + +pci:v00008086d00002C51* + ID_MODEL_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers + +pci:v00008086d00002C52* + ID_MODEL_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers + +pci:v00008086d00002C53* + ID_MODEL_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers + +pci:v00008086d00002C54* + ID_MODEL_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers + +pci:v00008086d00002C55* + ID_MODEL_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers + +pci:v00008086d00002C56* + ID_MODEL_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers + +pci:v00008086d00002C57* + ID_MODEL_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers + +pci:v00008086d00002C58* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers + +pci:v00008086d00002C59* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers + +pci:v00008086d00002C5A* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers + +pci:v00008086d00002C5B* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers + +pci:v00008086d00002C5C* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers + +pci:v00008086d00002C5D* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers + +pci:v00008086d00002C5E* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers + +pci:v00008086d00002C5F* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers + +pci:v00008086d00002C61* + ID_MODEL_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-core Registers + +pci:v00008086d00002C62* + ID_MODEL_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-core Registers + +pci:v00008086d00002C70* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series QuickPath Architecture Generic Non-core Registers + +pci:v00008086d00002C81* + ID_MODEL_FROM_DATABASE=Core Processor QuickPath Architecture System Address Decoder + +pci:v00008086d00002C90* + ID_MODEL_FROM_DATABASE=Core Processor QPI Link 0 + +pci:v00008086d00002C91* + ID_MODEL_FROM_DATABASE=Core Processor QPI Physical 0 + +pci:v00008086d00002C98* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Memory Controller + +pci:v00008086d00002C99* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Memory Controller Target Address Decoder + +pci:v00008086d00002C9A* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Memory Controller Test Registers + +pci:v00008086d00002C9C* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Memory Controller Test Registers + +pci:v00008086d00002CA0* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 0 Control Registers + +pci:v00008086d00002CA1* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 0 Address Registers + +pci:v00008086d00002CA2* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 0 Rank Registers + +pci:v00008086d00002CA3* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 0 Thermal Control Registers + +pci:v00008086d00002CA8* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 1 Control Registers + +pci:v00008086d00002CA9* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 1 Address Registers + +pci:v00008086d00002CAA* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 1 Rank Registers + +pci:v00008086d00002CAB* + ID_MODEL_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 1 Thermal Control Registers + +pci:v00008086d00002CC1* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI System Address Decoder + +pci:v00008086d00002CD0* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Link 0 + +pci:v00008086d00002CD1* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Physical 0 + +pci:v00008086d00002CD4* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Link 1 + +pci:v00008086d00002CD5* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Physical 1 + +pci:v00008086d00002CD8* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Registers + +pci:v00008086d00002CD9* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Target Address Decoder + +pci:v00008086d00002CDA* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller RAS Registers + +pci:v00008086d00002CDC* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Test Registers + +pci:v00008086d00002CE0* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 0 Control + +pci:v00008086d00002CE1* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 0 Address + +pci:v00008086d00002CE2* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 0 Rank + +pci:v00008086d00002CE3* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 0 Thermal Control + +pci:v00008086d00002CE8* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 1 Control + +pci:v00008086d00002CE9* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 1 Address + +pci:v00008086d00002CEA* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 1 Rank + +pci:v00008086d00002CEB* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 1 Thermal Control + +pci:v00008086d00002CF0* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 2 Control + +pci:v00008086d00002CF1* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 2 Address + +pci:v00008086d00002CF2* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 2 Rank + +pci:v00008086d00002CF3* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 2 Thermal Control + +pci:v00008086d00002D01* + ID_MODEL_FROM_DATABASE=Core Processor QuickPath Architecture System Address Decoder + +pci:v00008086d00002D10* + ID_MODEL_FROM_DATABASE=Core Processor QPI Link 0 + +pci:v00008086d00002D11* + ID_MODEL_FROM_DATABASE=Core Processor QPI Physical 0 + +pci:v00008086d00002D12* + ID_MODEL_FROM_DATABASE=Core Processor Reserved + +pci:v00008086d00002D13* + ID_MODEL_FROM_DATABASE=Core Processor Reserved + +pci:v00008086d00002D81* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series QuickPath Architecture System Address Decoder + +pci:v00008086d00002D90* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series QPI Link 0 + +pci:v00008086d00002D91* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series QPI Physical 0 + +pci:v00008086d00002D92* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Mirror Port Link 0 + +pci:v00008086d00002D93* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Mirror Port Link 1 + +pci:v00008086d00002D94* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series QPI Link 1 + +pci:v00008086d00002D95* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series QPI Physical 1 + +pci:v00008086d00002D98* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Registers + +pci:v00008086d00002D99* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Target Address Decoder + +pci:v00008086d00002D9A* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller RAS Registers + +pci:v00008086d00002D9C* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Test Registers + +pci:v00008086d00002DA0* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 0 Control + +pci:v00008086d00002DA1* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 0 Address + +pci:v00008086d00002DA2* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 0 Rank + +pci:v00008086d00002DA3* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 0 Thermal Control + +pci:v00008086d00002DA8* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 1 Control + +pci:v00008086d00002DA9* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 1 Address + +pci:v00008086d00002DAA* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 1 Rank + +pci:v00008086d00002DAB* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 1 Thermal Control + +pci:v00008086d00002DB0* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 2 Control + +pci:v00008086d00002DB1* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 2 Address + +pci:v00008086d00002DB2* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 2 Rank + +pci:v00008086d00002DB3* + ID_MODEL_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 2 Thermal Control + +pci:v00008086d00002E00* + ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller + +pci:v00008086d00002E01* + ID_MODEL_FROM_DATABASE=4 Series Chipset PCI Express Root Port + +pci:v00008086d00002E02* + ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller + +pci:v00008086d00002E03* + ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller + +pci:v00008086d00002E04* + ID_MODEL_FROM_DATABASE=4 Series Chipset HECI Controller + +pci:v00008086d00002E05* + ID_MODEL_FROM_DATABASE=4 Series Chipset HECI Controller + +pci:v00008086d00002E06* + ID_MODEL_FROM_DATABASE=4 Series Chipset PT IDER Controller + +pci:v00008086d00002E07* + ID_MODEL_FROM_DATABASE=4 Series Chipset Serial KT Controller + +pci:v00008086d00002E10* + ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller + +pci:v00008086d00002E11* + ID_MODEL_FROM_DATABASE=4 Series Chipset PCI Express Root Port + +pci:v00008086d00002E12* + ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller + +pci:v00008086d00002E13* + ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller + +pci:v00008086d00002E14* + ID_MODEL_FROM_DATABASE=4 Series Chipset HECI Controller + +pci:v00008086d00002E15* + ID_MODEL_FROM_DATABASE=4 Series Chipset HECI Controller + +pci:v00008086d00002E16* + ID_MODEL_FROM_DATABASE=4 Series Chipset PT IDER Controller + +pci:v00008086d00002E17* + ID_MODEL_FROM_DATABASE=4 Series Chipset Serial KT Controller + +pci:v00008086d00002E20* + ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller + +pci:v00008086d00002E20sv00001043sd000082D3* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00002E20sv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard + +pci:v00008086d00002E21* + ID_MODEL_FROM_DATABASE=4 Series Chipset PCI Express Root Port + +pci:v00008086d00002E21sv00001043sd000082D3* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00002E21sv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard + +pci:v00008086d00002E22* + ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller + +pci:v00008086d00002E22sv00001458sd0000D000* + ID_MODEL_FROM_DATABASE=GA-EG45M-DS2H Mainboard + +pci:v00008086d00002E23* + ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller + +pci:v00008086d00002E23sv00001458sd0000D000* + ID_MODEL_FROM_DATABASE=GA-EG45M-DS2H Mainboard + +pci:v00008086d00002E24* + ID_MODEL_FROM_DATABASE=4 Series Chipset HECI Controller + +pci:v00008086d00002E25* + ID_MODEL_FROM_DATABASE=4 Series Chipset HECI Controller + +pci:v00008086d00002E26* + ID_MODEL_FROM_DATABASE=4 Series Chipset PT IDER Controller + +pci:v00008086d00002E27* + ID_MODEL_FROM_DATABASE=4 Series Chipset Serial KT Controller + +pci:v00008086d00002E29* + ID_MODEL_FROM_DATABASE=4 Series Chipset PCI Express Root Port + +pci:v00008086d00002E30* + ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller + +pci:v00008086d00002E31* + ID_MODEL_FROM_DATABASE=4 Series Chipset PCI Express Root Port + +pci:v00008086d00002E32* + ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller + +pci:v00008086d00002E33* + ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller + +pci:v00008086d00002E34* + ID_MODEL_FROM_DATABASE=4 Series Chipset HECI Controller + +pci:v00008086d00002E35* + ID_MODEL_FROM_DATABASE=4 Series Chipset HECI Controller + +pci:v00008086d00002E36* + ID_MODEL_FROM_DATABASE=4 Series Chipset PT IDER Controller + +pci:v00008086d00002E37* + ID_MODEL_FROM_DATABASE=4 Series Chipset Serial KT Controller + +pci:v00008086d00002E40* + ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller + +pci:v00008086d00002E41* + ID_MODEL_FROM_DATABASE=4 Series Chipset PCI Express Root Port + +pci:v00008086d00002E42* + ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller + +pci:v00008086d00002E43* + ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller + +pci:v00008086d00002E44* + ID_MODEL_FROM_DATABASE=4 Series Chipset HECI Controller + +pci:v00008086d00002E45* + ID_MODEL_FROM_DATABASE=4 Series Chipset HECI Controller + +pci:v00008086d00002E46* + ID_MODEL_FROM_DATABASE=4 Series Chipset PT IDER Controller + +pci:v00008086d00002E47* + ID_MODEL_FROM_DATABASE=4 Series Chipset Serial KT Controller + +pci:v00008086d00002E50* + ID_MODEL_FROM_DATABASE=CE Media Processor CE3100 + +pci:v00008086d00002E52* + ID_MODEL_FROM_DATABASE=CE Media Processor Clock and Reset Controller + +pci:v00008086d00002E58* + ID_MODEL_FROM_DATABASE=CE Media Processor Interrupt Controller + +pci:v00008086d00002E5A* + ID_MODEL_FROM_DATABASE=CE Media Processor CE3100 A/V Bridge + +pci:v00008086d00002E5B* + ID_MODEL_FROM_DATABASE=Graphics Media Accelerator 500 Graphics + +pci:v00008086d00002E5C* + ID_MODEL_FROM_DATABASE=CE Media Processor Video Decoder + +pci:v00008086d00002E5D* + ID_MODEL_FROM_DATABASE=CE Media Processor Transport Stream Interface + +pci:v00008086d00002E5E* + ID_MODEL_FROM_DATABASE=CE Media Processor Transport Stream Processor 0 + +pci:v00008086d00002E5F* + ID_MODEL_FROM_DATABASE=CE Media Processor Audio DSP + +pci:v00008086d00002E60* + ID_MODEL_FROM_DATABASE=CE Media Processor Audio Interfaces + +pci:v00008086d00002E61* + ID_MODEL_FROM_DATABASE=CE Media Processor Video Display Controller + +pci:v00008086d00002E62* + ID_MODEL_FROM_DATABASE=CE Media Processor Video Processing Unit + +pci:v00008086d00002E63* + ID_MODEL_FROM_DATABASE=CE Media Processor HDMI Tx Interface + +pci:v00008086d00002E65* + ID_MODEL_FROM_DATABASE=CE Media Processor Expansion Bus Interface + +pci:v00008086d00002E66* + ID_MODEL_FROM_DATABASE=CE Media Processor UART + +pci:v00008086d00002E67* + ID_MODEL_FROM_DATABASE=CE Media Processor General Purpose I/Os + +pci:v00008086d00002E68* + ID_MODEL_FROM_DATABASE=CE Media Processor I2C Interface + +pci:v00008086d00002E69* + ID_MODEL_FROM_DATABASE=CE Media Processor Smart Card Interface + +pci:v00008086d00002E6A* + ID_MODEL_FROM_DATABASE=CE Media Processor SPI Master Interface + +pci:v00008086d00002E6E* + ID_MODEL_FROM_DATABASE=CE Media Processor Gigabit Ethernet Controller + +pci:v00008086d00002E6F* + ID_MODEL_FROM_DATABASE=CE Media Processor Media Timing Unit + +pci:v00008086d00002E70* + ID_MODEL_FROM_DATABASE=CE Media Processor USB + +pci:v00008086d00002E71* + ID_MODEL_FROM_DATABASE=CE Media Processor SATA + +pci:v00008086d00002E73* + ID_MODEL_FROM_DATABASE=CE Media Processor CE3100 PCI Express + +pci:v00008086d00002E90* + ID_MODEL_FROM_DATABASE=4 Series Chipset DRAM Controller + +pci:v00008086d00002E91* + ID_MODEL_FROM_DATABASE=4 Series Chipset PCI Express Root Port + +pci:v00008086d00002E92* + ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller + +pci:v00008086d00002E93* + ID_MODEL_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller + +pci:v00008086d00002E94* + ID_MODEL_FROM_DATABASE=4 Series Chipset HECI Controller + +pci:v00008086d00002E95* + ID_MODEL_FROM_DATABASE=4 Series Chipset HECI Controller + +pci:v00008086d00002E96* + ID_MODEL_FROM_DATABASE=4 Series Chipset PT IDER Controller + +pci:v00008086d00002F00* + ID_MODEL_FROM_DATABASE=Haswell-E DMI2 + +pci:v00008086d00002F01* + ID_MODEL_FROM_DATABASE=Haswell-E PCI Express Root Port 0 + +pci:v00008086d00002F02* + ID_MODEL_FROM_DATABASE=Haswell-E PCI Express Root Port 1 + +pci:v00008086d00002F03* + ID_MODEL_FROM_DATABASE=Haswell-E PCI Express Root Port 1 + +pci:v00008086d00002F04* + ID_MODEL_FROM_DATABASE=Haswell-E PCI Express Root Port 2 + +pci:v00008086d00002F05* + ID_MODEL_FROM_DATABASE=Haswell-E PCI Express Root Port 2 + +pci:v00008086d00002F06* + ID_MODEL_FROM_DATABASE=Haswell-E PCI Express Root Port 2 + +pci:v00008086d00002F07* + ID_MODEL_FROM_DATABASE=Haswell-E PCI Express Root Port 2 + +pci:v00008086d00002F08* + ID_MODEL_FROM_DATABASE=Haswell-E PCI Express Root Port 3 + +pci:v00008086d00002F09* + ID_MODEL_FROM_DATABASE=Haswell-E PCI Express Root Port 3 + +pci:v00008086d00002F0A* + ID_MODEL_FROM_DATABASE=Haswell-E PCI Express Root Port 3 + +pci:v00008086d00002F0B* + ID_MODEL_FROM_DATABASE=Haswell-E PCI Express Root Port 3 + +pci:v00008086d00002F1D* + ID_MODEL_FROM_DATABASE=Haswell-E PCIe Ring Interface + +pci:v00008086d00002F1E* + ID_MODEL_FROM_DATABASE=Haswell-E Scratchpad & Semaphore Registers + +pci:v00008086d00002F1F* + ID_MODEL_FROM_DATABASE=Haswell-E Scratchpad & Semaphore Registers + +pci:v00008086d00002F20* + ID_MODEL_FROM_DATABASE=Haswell-E DMA Channel 0 + +pci:v00008086d00002F21* + ID_MODEL_FROM_DATABASE=Haswell-E DMA Channel 1 + +pci:v00008086d00002F22* + ID_MODEL_FROM_DATABASE=Haswell-E DMA Channel 2 + +pci:v00008086d00002F23* + ID_MODEL_FROM_DATABASE=Haswell-E DMA Channel 3 + +pci:v00008086d00002F24* + ID_MODEL_FROM_DATABASE=Haswell-E DMA Channel 4 + +pci:v00008086d00002F25* + ID_MODEL_FROM_DATABASE=Haswell-E DMA Channel 5 + +pci:v00008086d00002F26* + ID_MODEL_FROM_DATABASE=Haswell-E DMA Channel 6 + +pci:v00008086d00002F27* + ID_MODEL_FROM_DATABASE=Haswell-E DMA Channel 7 + +pci:v00008086d00002F28* + ID_MODEL_FROM_DATABASE=Haswell-E Address Map, VTd_Misc, System Management + +pci:v00008086d00002F29* + ID_MODEL_FROM_DATABASE=Haswell-E Hot Plug + +pci:v00008086d00002F2A* + ID_MODEL_FROM_DATABASE=Haswell-E RAS, Control Status and Global Errors + +pci:v00008086d00002F2C* + ID_MODEL_FROM_DATABASE=Haswell-E I/O Apic + +pci:v00008086d00002F2E* + ID_MODEL_FROM_DATABASE=Haswell-E RAID 5/6 + +pci:v00008086d00002F2F* + ID_MODEL_FROM_DATABASE=Haswell-E RAID 5/6 + +pci:v00008086d00002F30* + ID_MODEL_FROM_DATABASE=Haswell-E Home Agent 0 + +pci:v00008086d00002F32* + ID_MODEL_FROM_DATABASE=Haswell-E QPI Link 0 + +pci:v00008086d00002F33* + ID_MODEL_FROM_DATABASE=Haswell-E QPI Link 1 + +pci:v00008086d00002F34* + ID_MODEL_FROM_DATABASE=Haswell-E PCIe Ring Interface + +pci:v00008086d00002F36* + ID_MODEL_FROM_DATABASE=Haswell-E R3 QPI Link 0 & 1 Monitoring + +pci:v00008086d00002F37* + ID_MODEL_FROM_DATABASE=Haswell-E R3 QPI Link 0 & 1 Monitoring + +pci:v00008086d00002F38* + ID_MODEL_FROM_DATABASE=Haswell-E Home Agent 1 + +pci:v00008086d00002F3A* + ID_MODEL_FROM_DATABASE=Haswell-E QPI Link 2 + +pci:v00008086d00002F3E* + ID_MODEL_FROM_DATABASE=Haswell-E R3 QPI Link 2 Monitoring + +pci:v00008086d00002F3F* + ID_MODEL_FROM_DATABASE=Haswell-E R3 QPI Link 2 Monitoring + +pci:v00008086d00002F40* + ID_MODEL_FROM_DATABASE=Haswell-E QPI Link 2 + +pci:v00008086d00002F41* + ID_MODEL_FROM_DATABASE=Haswell-E R3 QPI Link 2 Monitoring + +pci:v00008086d00002F43* + ID_MODEL_FROM_DATABASE=Haswell-E QPI Link 2 + +pci:v00008086d00002F60* + ID_MODEL_FROM_DATABASE=Haswell-E Home Agent 1 + +pci:v00008086d00002F68* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Target Address, Thermal & RAS Registers + +pci:v00008086d00002F6A* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel Target Address Decoder + +pci:v00008086d00002F6B* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel Target Address Decoder + +pci:v00008086d00002F6C* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel Target Address Decoder + +pci:v00008086d00002F6D* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel Target Address Decoder + +pci:v00008086d00002F6E* + ID_MODEL_FROM_DATABASE=Haswell-E DDRIO Channel 2/3 Broadcast + +pci:v00008086d00002F6F* + ID_MODEL_FROM_DATABASE=Haswell-E DDRIO Global Broadcast + +pci:v00008086d00002F71* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Target Address, Thermal & RAS Registers + +pci:v00008086d00002F79* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Target Address, Thermal & RAS Registers + +pci:v00008086d00002F7D* + ID_MODEL_FROM_DATABASE=Haswell-E Scratchpad & Semaphore Registers + +pci:v00008086d00002F80* + ID_MODEL_FROM_DATABASE=Haswell-E QPI Link 0 + +pci:v00008086d00002F81* + ID_MODEL_FROM_DATABASE=Haswell-E R3 QPI Link 0 & 1 Monitoring + +pci:v00008086d00002F83* + ID_MODEL_FROM_DATABASE=Haswell-E QPI Link 0 + +pci:v00008086d00002F90* + ID_MODEL_FROM_DATABASE=Haswell-E QPI Link 1 + +pci:v00008086d00002F93* + ID_MODEL_FROM_DATABASE=Haswell-E QPI Link 1 + +pci:v00008086d00002FA0* + ID_MODEL_FROM_DATABASE=Haswell-E Home Agent 0 + +pci:v00008086d00002FA8* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Target Address, Thermal & RAS Registers + +pci:v00008086d00002FAA* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel Target Address Decoder + +pci:v00008086d00002FAB* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel Target Address Decoder + +pci:v00008086d00002FAC* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel Target Address Decoder + +pci:v00008086d00002FAD* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel Target Address Decoder + +pci:v00008086d00002FAE* + ID_MODEL_FROM_DATABASE=Haswell-E DDRIO Channel 0/1 Broadcast + +pci:v00008086d00002FAF* + ID_MODEL_FROM_DATABASE=Haswell-E DDRIO Global Broadcast + +pci:v00008086d00002FB0* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 0 Thermal Control + +pci:v00008086d00002FB1* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 1 Thermal Control + +pci:v00008086d00002FB2* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 0 ERROR Registers + +pci:v00008086d00002FB3* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 1 ERROR Registers + +pci:v00008086d00002FB4* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 2 Thermal Control + +pci:v00008086d00002FB5* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 3 Thermal Control + +pci:v00008086d00002FB8* + ID_MODEL_FROM_DATABASE=Haswell-E DDRIO (VMSE) 2 & 3 + +pci:v00008086d00002FB9* + ID_MODEL_FROM_DATABASE=Haswell-E DDRIO (VMSE) 2 & 3 + +pci:v00008086d00002FBA* + ID_MODEL_FROM_DATABASE=Haswell-E DDRIO (VMSE) 2 & 3 + +pci:v00008086d00002FBB* + ID_MODEL_FROM_DATABASE=Haswell-E DDRIO (VMSE) 2 & 3 + +pci:v00008086d00002FBC* + ID_MODEL_FROM_DATABASE=Haswell-E DDRIO (VMSE) 0 & 1 + +pci:v00008086d00002FBD* + ID_MODEL_FROM_DATABASE=Haswell-E DDRIO (VMSE) 0 & 1 + +pci:v00008086d00002FBE* + ID_MODEL_FROM_DATABASE=Haswell-E DDRIO (VMSE) 0 & 1 + +pci:v00008086d00002FBF* + ID_MODEL_FROM_DATABASE=Haswell-E DDRIO (VMSE) 0 & 1 + +pci:v00008086d00002FC0* + ID_MODEL_FROM_DATABASE=Haswell-E Power Control Unit + +pci:v00008086d00002FC1* + ID_MODEL_FROM_DATABASE=Haswell-E Power Control Unit + +pci:v00008086d00002FC2* + ID_MODEL_FROM_DATABASE=Power Control Unit + +pci:v00008086d00002FC3* + ID_MODEL_FROM_DATABASE=Power Control Unit + +pci:v00008086d00002FC4* + ID_MODEL_FROM_DATABASE=Power Control Unit + +pci:v00008086d00002FC5* + ID_MODEL_FROM_DATABASE=Power Control Unit + +pci:v00008086d00002FD0* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 0 Thermal Control + +pci:v00008086d00002FD1* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 1 Thermal Control + +pci:v00008086d00002FD2* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 0 ERROR Registers + +pci:v00008086d00002FD3* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 1 ERROR Registers + +pci:v00008086d00002FD4* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 2 Thermal Control + +pci:v00008086d00002FD5* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 3 Thermal Control + +pci:v00008086d00002FD6* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 2 ERROR Registers + +pci:v00008086d00002FD7* + ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 3 ERROR Registers + +pci:v00008086d00002FE0* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE1* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE2* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE3* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE4* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE5* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE6* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE7* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE8* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FE9* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FEA* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FEB* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FEC* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FED* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FEE* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FEF* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF0* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF1* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF2* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF3* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF4* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF5* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF6* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF7* + ID_MODEL_FROM_DATABASE=Haswell-E Unicast Registers + +pci:v00008086d00002FF8* + ID_MODEL_FROM_DATABASE=Haswell-E Buffered Ring Agent + +pci:v00008086d00002FF9* + ID_MODEL_FROM_DATABASE=Haswell-E Buffered Ring Agent + +pci:v00008086d00002FFA* + ID_MODEL_FROM_DATABASE=Haswell-E Buffered Ring Agent + +pci:v00008086d00002FFB* + ID_MODEL_FROM_DATABASE=Haswell-E Buffered Ring Agent + +pci:v00008086d00002FFC* + ID_MODEL_FROM_DATABASE=Haswell-E System Address Decoder & Broadcast Registers + +pci:v00008086d00002FFD* + ID_MODEL_FROM_DATABASE=Haswell-E System Address Decoder & Broadcast Registers + +pci:v00008086d00002FFE* + ID_MODEL_FROM_DATABASE=Haswell-E System Address Decoder & Broadcast Registers + +pci:v00008086d00003200* + ID_MODEL_FROM_DATABASE=GD31244 PCI-X SATA HBA + +pci:v00008086d00003200sv00001775sd0000C200* + ID_MODEL_FROM_DATABASE=C2K onboard SATA host bus adapter + +pci:v00008086d00003310* + ID_MODEL_FROM_DATABASE=IOP348 I/O Processor + +pci:v00008086d00003310sv00001054sd00003030* + ID_MODEL_FROM_DATABASE=HRA380 Hitachi RAID Adapter to PCIe + +pci:v00008086d00003310sv00001054sd00003034* + ID_MODEL_FROM_DATABASE=HRA381 Hitachi RAID Adapter to PCIe + +pci:v00008086d00003313* + ID_MODEL_FROM_DATABASE=IOP348 I/O Processor (SL8e) in IOC Mode SAS/SATA + +pci:v00008086d0000331B* + ID_MODEL_FROM_DATABASE=IOP348 I/O Processor (SL8x) in IOC Mode SAS/SATA + +pci:v00008086d00003331* + ID_MODEL_FROM_DATABASE=IOC340 I/O Controller (VV8e) SAS/SATA + +pci:v00008086d00003339* + ID_MODEL_FROM_DATABASE=IOC340 I/O Controller (VV8x) SAS/SATA + +pci:v00008086d00003340* + ID_MODEL_FROM_DATABASE=82855PM Processor to I/O Controller + +pci:v00008086d00003340sv00001014sd00000529* + ID_MODEL_FROM_DATABASE=Thinkpad T40 series + +pci:v00008086d00003340sv00001025sd0000005A* + ID_MODEL_FROM_DATABASE=TravelMate 290 + +pci:v00008086d00003340sv0000103Csd0000088C* + ID_MODEL_FROM_DATABASE=NC8000 laptop + +pci:v00008086d00003340sv0000103Csd00000890* + ID_MODEL_FROM_DATABASE=NC6000 laptop + +pci:v00008086d00003340sv0000103Csd000008B0* + ID_MODEL_FROM_DATABASE=tc1100 tablet + +pci:v00008086d00003340sv0000144Dsd0000C005* + ID_MODEL_FROM_DATABASE=X10 Laptop + +pci:v00008086d00003340sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30/P35 notebook + +pci:v00008086d00003341* + ID_MODEL_FROM_DATABASE=82855PM Processor to AGP Controller + +pci:v00008086d00003341sv0000144Dsd0000C00C* + ID_MODEL_FROM_DATABASE=P30 notebook + +pci:v00008086d00003363* + ID_MODEL_FROM_DATABASE=IOC340 I/O Controller in IOC Mode SAS/SATA + +pci:v00008086d00003382* + ID_MODEL_FROM_DATABASE=81342 [Chevelon] I/O Processor (ATUe) + +pci:v00008086d000033C3* + ID_MODEL_FROM_DATABASE=IOP348 I/O Processor (SL8De) in IOC Mode SAS/SATA + +pci:v00008086d000033CB* + ID_MODEL_FROM_DATABASE=IOP348 I/O Processor (SL8Dx) in IOC Mode SAS/SATA + +pci:v00008086d00003400* + ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub to ESI Port + +pci:v00008086d00003401* + ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub to ESI Port + +pci:v00008086d00003402* + ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub to ESI Port + +pci:v00008086d00003403* + ID_MODEL_FROM_DATABASE=5500 I/O Hub to ESI Port + +pci:v00008086d00003403sv00001028sd00000236* + ID_MODEL_FROM_DATABASE=PowerEdge R610 I/O Hub to ESI Port + +pci:v00008086d00003403sv00001028sd00000287* + ID_MODEL_FROM_DATABASE=PowerEdge M610 I/O Hub to ESI Port + +pci:v00008086d00003403sv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 I/O Hub to ESI Port + +pci:v00008086d00003403sv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 I/O Hub to ESI Port + +pci:v00008086d00003403sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server + +pci:v00008086d00003404* + ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub to ESI Port + +pci:v00008086d00003405* + ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub to ESI Port + +pci:v00008086d00003406* + ID_MODEL_FROM_DATABASE=5520 I/O Hub to ESI Port + +pci:v00008086d00003406sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant G6 series + +pci:v00008086d00003407* + ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub to ESI Port + +pci:v00008086d00003408* + ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 1 + +pci:v00008086d00003408sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant G6 series + +pci:v00008086d00003409* + ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 2 + +pci:v00008086d0000340A* + ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 3 + +pci:v00008086d0000340Asv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server + +pci:v00008086d0000340B* + ID_MODEL_FROM_DATABASE=5520/X58 I/O Hub PCI Express Root Port 4 + +pci:v00008086d0000340C* + ID_MODEL_FROM_DATABASE=5520/X58 I/O Hub PCI Express Root Port 5 + +pci:v00008086d0000340D* + ID_MODEL_FROM_DATABASE=5520/X58 I/O Hub PCI Express Root Port 6 + +pci:v00008086d0000340E* + ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 7 + +pci:v00008086d0000340Esv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server + +pci:v00008086d0000340F* + ID_MODEL_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 8 + +pci:v00008086d00003410* + ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub PCI Express Root Port 9 + +pci:v00008086d00003411* + ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub PCI Express Root Port 10 + +pci:v00008086d00003418* + ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 Physical Layer Port 0 + +pci:v00008086d00003419* + ID_MODEL_FROM_DATABASE=7500/5520/5500 Physical Layer Port 1 + +pci:v00008086d00003420* + ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 + +pci:v00008086d00003421* + ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 + +pci:v00008086d00003422* + ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers + +pci:v00008086d00003422sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant G6 series + +pci:v00008086d00003423* + ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub Control Status and RAS Registers + +pci:v00008086d00003423sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant G6 series + +pci:v00008086d00003425* + ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 Physical and Link Layer Registers Port 0 + +pci:v00008086d00003426* + ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 Routing and Protocol Layer Registers Port 0 + +pci:v00008086d00003427* + ID_MODEL_FROM_DATABASE=7500/5520/5500 Physical and Link Layer Registers Port 1 + +pci:v00008086d00003428* + ID_MODEL_FROM_DATABASE=7500/5520/5500 Routing & Protocol Layer Register Port 1 + +pci:v00008086d00003429* + ID_MODEL_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device + +pci:v00008086d0000342A* + ID_MODEL_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device + +pci:v00008086d0000342B* + ID_MODEL_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device + +pci:v00008086d0000342C* + ID_MODEL_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device + +pci:v00008086d0000342D* + ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub I/OxAPIC Interrupt Controller + +pci:v00008086d0000342E* + ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub System Management Registers + +pci:v00008086d0000342Esv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant G6 series + +pci:v00008086d0000342F* + ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 Trusted Execution Technology Registers + +pci:v00008086d00003430* + ID_MODEL_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device + +pci:v00008086d00003431* + ID_MODEL_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device + +pci:v00008086d00003432* + ID_MODEL_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device + +pci:v00008086d00003433* + ID_MODEL_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device + +pci:v00008086d00003438* + ID_MODEL_FROM_DATABASE=7500/5520/5500/X58 I/O Hub Throttle Registers + +pci:v00008086d00003500* + ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express Upstream Port + +pci:v00008086d00003500sv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d00003500sv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d00003501* + ID_MODEL_FROM_DATABASE=6310ESB PCI Express Upstream Port + +pci:v00008086d00003504* + ID_MODEL_FROM_DATABASE=6311ESB/6321ESB I/OxAPIC Interrupt Controller + +pci:v00008086d00003505* + ID_MODEL_FROM_DATABASE=6310ESB I/OxAPIC Interrupt Controller + +pci:v00008086d0000350C* + ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express to PCI-X Bridge + +pci:v00008086d0000350Csv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d0000350Csv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d0000350D* + ID_MODEL_FROM_DATABASE=6310ESB PCI Express to PCI-X Bridge + +pci:v00008086d00003510* + ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express Downstream Port E1 + +pci:v00008086d00003510sv0000103Csd000031FE* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G3 + +pci:v00008086d00003510sv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d00003511* + ID_MODEL_FROM_DATABASE=6310ESB PCI Express Downstream Port E1 + +pci:v00008086d00003514* + ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express Downstream Port E2 + +pci:v00008086d00003515* + ID_MODEL_FROM_DATABASE=6310ESB PCI Express Downstream Port E2 + +pci:v00008086d00003518* + ID_MODEL_FROM_DATABASE=6311ESB/6321ESB PCI Express Downstream Port E3 + +pci:v00008086d00003518sv000015D9sd00009680* + ID_MODEL_FROM_DATABASE=X7DBN Motherboard + +pci:v00008086d00003519* + ID_MODEL_FROM_DATABASE=6310ESB PCI Express Downstream Port E3 + +pci:v00008086d00003575* + ID_MODEL_FROM_DATABASE=82830M/MG/MP Host Bridge + +pci:v00008086d00003575sv00000E11sd00000030* + ID_MODEL_FROM_DATABASE=Evo N600c + +pci:v00008086d00003575sv00001014sd0000021D* + ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series + +pci:v00008086d00003575sv0000104Dsd000080E7* + ID_MODEL_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP + +pci:v00008086d00003576* + ID_MODEL_FROM_DATABASE=82830M/MP AGP Bridge + +pci:v00008086d00003577* + ID_MODEL_FROM_DATABASE=82830M/MG Integrated Graphics Controller + +pci:v00008086d00003577sv00001014sd00000513* + ID_MODEL_FROM_DATABASE=ThinkPad A/T/X Series + +pci:v00008086d00003578* + ID_MODEL_FROM_DATABASE=82830M/MG/MP Host Bridge + +pci:v00008086d00003580* + ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller + +pci:v00008086d00003580sv00001014sd0000055C* + ID_MODEL_FROM_DATABASE=ThinkPad R50e + +pci:v00008086d00003580sv00001028sd00000139* + ID_MODEL_FROM_DATABASE=Latitude D400 + +pci:v00008086d00003580sv00001028sd0000014F* + ID_MODEL_FROM_DATABASE=Latitude X300 + +pci:v00008086d00003580sv00001028sd00000152* + ID_MODEL_FROM_DATABASE=Latitude D500 + +pci:v00008086d00003580sv00001028sd00000163* + ID_MODEL_FROM_DATABASE=Latitude D505 + +pci:v00008086d00003580sv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m + +pci:v00008086d00003580sv00001028sd00000196* + ID_MODEL_FROM_DATABASE=Inspiron 5160 + +pci:v00008086d00003580sv0000114Asd00000582* + ID_MODEL_FROM_DATABASE=PC8 + +pci:v00008086d00003580sv00001734sd00001055* + ID_MODEL_FROM_DATABASE=Amilo M1420 + +pci:v00008086d00003580sv00001775sd000010D0* + ID_MODEL_FROM_DATABASE=V5D Single Board Computer + +pci:v00008086d00003580sv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d00003580sv00004C53sd000010B0* + ID_MODEL_FROM_DATABASE=CL9 mainboard + +pci:v00008086d00003580sv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v00008086d00003580sv0000E4BFsd00000CC9* + ID_MODEL_FROM_DATABASE=CC9-SAMBA + +pci:v00008086d00003580sv0000E4BFsd00000CD2* + ID_MODEL_FROM_DATABASE=CD2-BEBOP + +pci:v00008086d00003581* + ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to AGP Controller + +pci:v00008086d00003581sv00001734sd00001055* + ID_MODEL_FROM_DATABASE=Amilo M1420 + +pci:v00008086d00003582* + ID_MODEL_FROM_DATABASE=82852/855GM Integrated Graphics Device + +pci:v00008086d00003582sv00001014sd00000562* + ID_MODEL_FROM_DATABASE=ThinkPad R50e + +pci:v00008086d00003582sv00001028sd00000139* + ID_MODEL_FROM_DATABASE=Latitude D400 + +pci:v00008086d00003582sv00001028sd0000014F* + ID_MODEL_FROM_DATABASE=Latitude X300 + +pci:v00008086d00003582sv00001028sd00000152* + ID_MODEL_FROM_DATABASE=Latitude D500 + +pci:v00008086d00003582sv00001028sd00000163* + ID_MODEL_FROM_DATABASE=Latitude D505 + +pci:v00008086d00003582sv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m + +pci:v00008086d00003582sv0000114Asd00000582* + ID_MODEL_FROM_DATABASE=PC8 integrated graphics + +pci:v00008086d00003582sv00001775sd000010D0* + ID_MODEL_FROM_DATABASE=V5D Single Board Computer VGA + +pci:v00008086d00003582sv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d00003582sv00004C53sd000010B0* + ID_MODEL_FROM_DATABASE=CL9 mainboard + +pci:v00008086d00003582sv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v00008086d00003582sv0000E4BFsd00000CC9* + ID_MODEL_FROM_DATABASE=CC9-SAMBA + +pci:v00008086d00003582sv0000E4BFsd00000CD2* + ID_MODEL_FROM_DATABASE=CD2-BEBOP + +pci:v00008086d00003584* + ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller + +pci:v00008086d00003584sv00001014sd0000055D* + ID_MODEL_FROM_DATABASE=ThinkPad R50e + +pci:v00008086d00003584sv00001028sd00000139* + ID_MODEL_FROM_DATABASE=Latitude D400 + +pci:v00008086d00003584sv00001028sd0000014F* + ID_MODEL_FROM_DATABASE=Latitude X300 + +pci:v00008086d00003584sv00001028sd00000152* + ID_MODEL_FROM_DATABASE=Latitude D500 + +pci:v00008086d00003584sv00001028sd00000163* + ID_MODEL_FROM_DATABASE=Latitude D505 + +pci:v00008086d00003584sv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m + +pci:v00008086d00003584sv00001028sd00000196* + ID_MODEL_FROM_DATABASE=Inspiron 5160 + +pci:v00008086d00003584sv0000114Asd00000582* + ID_MODEL_FROM_DATABASE=PC8 + +pci:v00008086d00003584sv00001734sd00001055* + ID_MODEL_FROM_DATABASE=Amilo M1420 + +pci:v00008086d00003584sv00001775sd000010D0* + ID_MODEL_FROM_DATABASE=V5D Single Board Computer + +pci:v00008086d00003584sv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d00003584sv00004C53sd000010B0* + ID_MODEL_FROM_DATABASE=CL9 mainboard + +pci:v00008086d00003584sv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v00008086d00003585* + ID_MODEL_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller + +pci:v00008086d00003585sv00001014sd0000055E* + ID_MODEL_FROM_DATABASE=ThinkPad R50e + +pci:v00008086d00003585sv00001028sd00000139* + ID_MODEL_FROM_DATABASE=Latitude D400 + +pci:v00008086d00003585sv00001028sd0000014F* + ID_MODEL_FROM_DATABASE=Latitude X300 + +pci:v00008086d00003585sv00001028sd00000152* + ID_MODEL_FROM_DATABASE=Latitude D500 + +pci:v00008086d00003585sv00001028sd00000163* + ID_MODEL_FROM_DATABASE=Latitude D505 + +pci:v00008086d00003585sv00001028sd0000018D* + ID_MODEL_FROM_DATABASE=Inspiron 700m/710m + +pci:v00008086d00003585sv00001028sd00000196* + ID_MODEL_FROM_DATABASE=Inspiron 5160 + +pci:v00008086d00003585sv0000114Asd00000582* + ID_MODEL_FROM_DATABASE=PC8 + +pci:v00008086d00003585sv00001734sd00001055* + ID_MODEL_FROM_DATABASE=Amilo M1420 + +pci:v00008086d00003585sv00001775sd000010D0* + ID_MODEL_FROM_DATABASE=V5D Single Board Computer + +pci:v00008086d00003585sv00001775sd0000CE90* + ID_MODEL_FROM_DATABASE=CE9 + +pci:v00008086d00003585sv00004C53sd000010B0* + ID_MODEL_FROM_DATABASE=CL9 mainboard + +pci:v00008086d00003585sv00004C53sd000010E0* + ID_MODEL_FROM_DATABASE=PSL09 PrPMC + +pci:v00008086d0000358C* + ID_MODEL_FROM_DATABASE=82854 GMCH + +pci:v00008086d0000358E* + ID_MODEL_FROM_DATABASE=82854 GMCH Integrated Graphics Device + +pci:v00008086d00003590* + ID_MODEL_FROM_DATABASE=E7520 Memory Controller Hub + +pci:v00008086d00003590sv00001014sd000002DD* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00008086d00003590sv00001028sd0000016C* + ID_MODEL_FROM_DATABASE=PowerEdge 1850 Memory Controller Hub + +pci:v00008086d00003590sv00001028sd0000016D* + ID_MODEL_FROM_DATABASE=PowerEdge 2850 Memory Controller Hub + +pci:v00008086d00003590sv00001028sd0000019A* + ID_MODEL_FROM_DATABASE=PowerEdge SC1425 + +pci:v00008086d00003590sv00001734sd0000103E* + ID_MODEL_FROM_DATABASE=PRIMERGY RX/TX S2 series + +pci:v00008086d00003590sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d00003590sv00004C53sd000010D0* + ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC + +pci:v00008086d00003591* + ID_MODEL_FROM_DATABASE=E7525/E7520 Error Reporting Registers + +pci:v00008086d00003591sv00001014sd000002DD* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00008086d00003591sv00001028sd00000169* + ID_MODEL_FROM_DATABASE=Precision 470 + +pci:v00008086d00003591sv0000103Csd00003208* + ID_MODEL_FROM_DATABASE=ProLiant DL140 G2 + +pci:v00008086d00003591sv00004C53sd000010D0* + ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC + +pci:v00008086d00003592* + ID_MODEL_FROM_DATABASE=E7320 Memory Controller Hub + +pci:v00008086d00003592sv00001734sd00001073* + ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + +pci:v00008086d00003593* + ID_MODEL_FROM_DATABASE=E7320 Error Reporting Registers + +pci:v00008086d00003593sv00001734sd00001073* + ID_MODEL_FROM_DATABASE=Primergy Econel 200 D2020 mainboard + +pci:v00008086d00003594* + ID_MODEL_FROM_DATABASE=E7520 DMA Controller + +pci:v00008086d00003594sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d00003594sv00004C53sd000010D0* + ID_MODEL_FROM_DATABASE=Telum ASLP10 Processor AMC + +pci:v00008086d00003595* + ID_MODEL_FROM_DATABASE=E7525/E7520/E7320 PCI Express Port A + +pci:v00008086d00003595sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d00003596* + ID_MODEL_FROM_DATABASE=E7525/E7520/E7320 PCI Express Port A1 + +pci:v00008086d00003597* + ID_MODEL_FROM_DATABASE=E7525/E7520 PCI Express Port B + +pci:v00008086d00003597sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d00003598* + ID_MODEL_FROM_DATABASE=E7520 PCI Express Port B1 + +pci:v00008086d00003598sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d00003599* + ID_MODEL_FROM_DATABASE=E7520 PCI Express Port C + +pci:v00008086d00003599sv00001775sd00001100* + ID_MODEL_FROM_DATABASE=CR11/VR11 Single Board Computer + +pci:v00008086d0000359A* + ID_MODEL_FROM_DATABASE=E7520 PCI Express Port C1 + +pci:v00008086d0000359B* + ID_MODEL_FROM_DATABASE=E7525/E7520/E7320 Extended Configuration Registers + +pci:v00008086d0000359Bsv00001014sd000002DD* + ID_MODEL_FROM_DATABASE=eServer xSeries server mainboard + +pci:v00008086d0000359E* + ID_MODEL_FROM_DATABASE=E7525 Memory Controller Hub + +pci:v00008086d0000359Esv00001028sd00000169* + ID_MODEL_FROM_DATABASE=Precision 470 + +pci:v00008086d000035B0* + ID_MODEL_FROM_DATABASE=3100 Chipset Memory I/O Controller Hub + +pci:v00008086d000035B1* + ID_MODEL_FROM_DATABASE=3100 DRAM Controller Error Reporting Registers + +pci:v00008086d000035B5* + ID_MODEL_FROM_DATABASE=3100 Chipset Enhanced DMA Controller + +pci:v00008086d000035B6* + ID_MODEL_FROM_DATABASE=3100 Chipset PCI Express Port A + +pci:v00008086d000035B7* + ID_MODEL_FROM_DATABASE=3100 Chipset PCI Express Port A1 + +pci:v00008086d000035C8* + ID_MODEL_FROM_DATABASE=3100 Extended Configuration Test Overflow Registers + +pci:v00008086d00003600* + ID_MODEL_FROM_DATABASE=7300 Chipset Memory Controller Hub + +pci:v00008086d00003604* + ID_MODEL_FROM_DATABASE=7300 Chipset PCI Express Port 1 + +pci:v00008086d00003605* + ID_MODEL_FROM_DATABASE=7300 Chipset PCI Express Port 2 + +pci:v00008086d00003606* + ID_MODEL_FROM_DATABASE=7300 Chipset PCI Express Port 3 + +pci:v00008086d00003607* + ID_MODEL_FROM_DATABASE=7300 Chipset PCI Express Port 4 + +pci:v00008086d00003608* + ID_MODEL_FROM_DATABASE=7300 Chipset PCI Express Port 5 + +pci:v00008086d00003609* + ID_MODEL_FROM_DATABASE=7300 Chipset PCI Express Port 6 + +pci:v00008086d0000360A* + ID_MODEL_FROM_DATABASE=7300 Chipset PCI Express Port 7 + +pci:v00008086d0000360B* + ID_MODEL_FROM_DATABASE=7300 Chipset QuickData Technology Device + +pci:v00008086d0000360C* + ID_MODEL_FROM_DATABASE=7300 Chipset FSB Registers + +pci:v00008086d0000360Csv00001028sd000001F0* + ID_MODEL_FROM_DATABASE=PowerEdge R900 7300 Chipset FSB Registers + +pci:v00008086d0000360D* + ID_MODEL_FROM_DATABASE=7300 Chipset Snoop Filter Registers + +pci:v00008086d0000360E* + ID_MODEL_FROM_DATABASE=7300 Chipset Debug and Miscellaneous Registers + +pci:v00008086d0000360F* + ID_MODEL_FROM_DATABASE=7300 Chipset FBD Branch 0 Registers + +pci:v00008086d00003610* + ID_MODEL_FROM_DATABASE=7300 Chipset FBD Branch 1 Registers + +pci:v00008086d00003700* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d00003701* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d00003702* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d00003703* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d00003704* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d00003705* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d00003706* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d00003707* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d00003708* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d00003709* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d0000370A* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d0000370B* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d0000370C* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d0000370D* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d0000370E* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d0000370F* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 DMI + +pci:v00008086d00003710* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA + +pci:v00008086d00003711* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA + +pci:v00008086d00003712* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA + +pci:v00008086d00003713* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA + +pci:v00008086d00003714* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA + +pci:v00008086d00003715* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA + +pci:v00008086d00003716* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA + +pci:v00008086d00003717* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA + +pci:v00008086d00003718* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA + +pci:v00008086d00003719* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA + +pci:v00008086d0000371A* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Link + +pci:v00008086d0000371B* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Routing and Protocol + +pci:v00008086d0000371D* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 QPI Routing and Protocol + +pci:v00008086d00003720* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 PCI Express Root Port 0 + +pci:v00008086d00003721* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 PCI Express Root Port 1 + +pci:v00008086d00003722* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 PCI Express Root Port 2 + +pci:v00008086d00003723* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 PCI Express Root Port 3 + +pci:v00008086d00003724* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 PCI Express Root Port 4 + +pci:v00008086d00003725* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 NTB Primary + +pci:v00008086d00003726* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 NTB Primary + +pci:v00008086d00003727* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 NTB Secondary + +pci:v00008086d00003728* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Core + +pci:v00008086d00003729* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Core + +pci:v00008086d0000372A* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Core + +pci:v00008086d0000372B* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Core + +pci:v00008086d0000372C* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 Reserved + +pci:v00008086d0000373F* + ID_MODEL_FROM_DATABASE=Xeon C5500/C3500 IOxAPIC + +pci:v00008086d00003A00* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) 4-port SATA IDE Controller + +pci:v00008086d00003A02* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) SATA AHCI Controller + +pci:v00008086d00003A05* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) SATA RAID Controller + +pci:v00008086d00003A06* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) 2-port SATA IDE Controller + +pci:v00008086d00003A14* + ID_MODEL_FROM_DATABASE=82801JDO (ICH10DO) LPC Interface Controller + +pci:v00008086d00003A16* + ID_MODEL_FROM_DATABASE=82801JIR (ICH10R) LPC Interface Controller + +pci:v00008086d00003A16sv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 LPC Interface Controller + +pci:v00008086d00003A16sv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 LPC Interface Controller + +pci:v00008086d00003A16sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant G6 series + +pci:v00008086d00003A16sv00001043sd000082D4* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00003A16sv00001458sd00005001* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard + +pci:v00008086d00003A18* + ID_MODEL_FROM_DATABASE=82801JIB (ICH10) LPC Interface Controller + +pci:v00008086d00003A1A* + ID_MODEL_FROM_DATABASE=82801JD (ICH10D) LPC Interface Controller + +pci:v00008086d00003A20* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) 4 port SATA IDE Controller #1 + +pci:v00008086d00003A20sv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 SATA IDE Controller + +pci:v00008086d00003A20sv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 SATA IDE Controller + +pci:v00008086d00003A22* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) SATA AHCI Controller + +pci:v00008086d00003A22sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant G6 series + +pci:v00008086d00003A22sv00001043sd000082D4* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00003A22sv00001458sd0000B005* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard + +pci:v00008086d00003A25* + ID_MODEL_FROM_DATABASE=82801JIR (ICH10R) SATA RAID Controller + +pci:v00008086d00003A25sv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PERC S100 Controller (PE R410) + +pci:v00008086d00003A25sv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PERC S100 Controller (PE T410) + +pci:v00008086d00003A25sv00001028sd000002F1* + ID_MODEL_FROM_DATABASE=PERC S100 Controller (PE R510) + +pci:v00008086d00003A26* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) 2 port SATA IDE Controller #2 + +pci:v00008086d00003A26sv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 SATA IDE Controller + +pci:v00008086d00003A26sv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 SATA IDE Controller + +pci:v00008086d00003A30* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) SMBus Controller + +pci:v00008086d00003A30sv00001043sd000082D4* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00003A30sv00001458sd00005001* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard + +pci:v00008086d00003A32* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) Thermal Subsystem + +pci:v00008086d00003A34* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #1 + +pci:v00008086d00003A34sv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 USB UHCI Controller + +pci:v00008086d00003A34sv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 USB UHCI Controller + +pci:v00008086d00003A34sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant G6 series + +pci:v00008086d00003A34sv00001043sd000082D4* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00003A34sv00001458sd00005004* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard + +pci:v00008086d00003A35* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #2 + +pci:v00008086d00003A35sv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 USB UHCI Controller + +pci:v00008086d00003A35sv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 USB UHCI Controller + +pci:v00008086d00003A35sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant G6 series + +pci:v00008086d00003A35sv00001043sd000082D4* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00003A35sv00001458sd00005004* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard + +pci:v00008086d00003A36* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #3 + +pci:v00008086d00003A36sv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 USB UHCI Controller + +pci:v00008086d00003A36sv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 USB UHCI Controller + +pci:v00008086d00003A36sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant G6 series + +pci:v00008086d00003A36sv00001043sd000082D4* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00003A36sv00001458sd00005004* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard + +pci:v00008086d00003A37* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #4 + +pci:v00008086d00003A37sv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 USB UHCI Controller + +pci:v00008086d00003A37sv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 USB UHCI Controller + +pci:v00008086d00003A37sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant G6 series + +pci:v00008086d00003A37sv00001043sd000082D4* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00003A37sv00001458sd00005004* + ID_MODEL_FROM_DATABASE=Motherboard + +pci:v00008086d00003A38* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #5 + +pci:v00008086d00003A38sv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 USB UHCI Controller + +pci:v00008086d00003A38sv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 USB UHCI Controller + +pci:v00008086d00003A38sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server + +pci:v00008086d00003A38sv00001043sd000082D4* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00003A38sv00001458sd00005004* + ID_MODEL_FROM_DATABASE=Motherboard + +pci:v00008086d00003A39* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #6 + +pci:v00008086d00003A39sv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 USB UHCI Controller + +pci:v00008086d00003A39sv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 USB UHCI Controller + +pci:v00008086d00003A39sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server + +pci:v00008086d00003A39sv00001043sd000082D4* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00003A39sv00001458sd00005004* + ID_MODEL_FROM_DATABASE=Motherboard + +pci:v00008086d00003A3A* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #1 + +pci:v00008086d00003A3Asv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 USB EHCI Controller + +pci:v00008086d00003A3Asv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 USB EHCI Controller + +pci:v00008086d00003A3Asv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant G6 series + +pci:v00008086d00003A3Asv00001043sd000082D4* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00003A3Asv00001458sd00005006* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard + +pci:v00008086d00003A3C* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #2 + +pci:v00008086d00003A3Csv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 USB EHCI Controller + +pci:v00008086d00003A3Csv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 USB EHCI Controller + +pci:v00008086d00003A3Csv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant G6 series + +pci:v00008086d00003A3Csv00001043sd000082D4* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00003A3Csv00001458sd00005006* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard + +pci:v00008086d00003A3E* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) HD Audio Controller + +pci:v00008086d00003A3Esv00001043sd00008311* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00003A3Esv00001458sd0000A002* + ID_MODEL_FROM_DATABASE=GA-EP45-UD3R Motherboard + +pci:v00008086d00003A3Esv00001458sd0000A102* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard + +pci:v00008086d00003A40* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 1 + +pci:v00008086d00003A40sv00001028sd0000028C* + ID_MODEL_FROM_DATABASE=PowerEdge R410 PCI Express Port 1 + +pci:v00008086d00003A40sv00001028sd0000028D* + ID_MODEL_FROM_DATABASE=PowerEdge T410 PCI Express Port 1 + +pci:v00008086d00003A40sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server + +pci:v00008086d00003A40sv00001043sd000082D4* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00003A40sv00001043sd000082EA* + ID_MODEL_FROM_DATABASE=P6T DeLuxe Motherboard + +pci:v00008086d00003A40sv00001458sd00005001* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard + +pci:v00008086d00003A42* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Port 2 + +pci:v00008086d00003A44* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 3 + +pci:v00008086d00003A44sv00001043sd000082EA* + ID_MODEL_FROM_DATABASE=P6T DeLuxe Motherboard + +pci:v00008086d00003A46* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 4 + +pci:v00008086d00003A46sv00001043sd000082EA* + ID_MODEL_FROM_DATABASE=P6T DeLuxe Motherboard + +pci:v00008086d00003A46sv00001458sd00005001* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard + +pci:v00008086d00003A48* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 5 + +pci:v00008086d00003A48sv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server + +pci:v00008086d00003A48sv00001043sd000082EA* + ID_MODEL_FROM_DATABASE=P6T Deluxe Motherboard + +pci:v00008086d00003A48sv00001458sd00005001* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5 Motherboard + +pci:v00008086d00003A4A* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 6 + +pci:v00008086d00003A4Asv0000103Csd0000330B* + ID_MODEL_FROM_DATABASE=ProLiant ML150 G6 Server + +pci:v00008086d00003A4Asv00001043sd000082D4* + ID_MODEL_FROM_DATABASE=P5Q Deluxe Motherboard + +pci:v00008086d00003A4Asv00001043sd000082EA* + ID_MODEL_FROM_DATABASE=P6T DeLuxe Motherboard + +pci:v00008086d00003A4Asv00001458sd00005001* + ID_MODEL_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard + +pci:v00008086d00003A4C* + ID_MODEL_FROM_DATABASE=82801JI (ICH10 Family) Gigabit Ethernet Controller + +pci:v00008086d00003A51* + ID_MODEL_FROM_DATABASE=82801JDO (ICH10DO) VECI Controller + +pci:v00008086d00003A55* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) Virtual SATA Controller + +pci:v00008086d00003A60* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) SMBus Controller + +pci:v00008086d00003A62* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) Thermal Subsystem + +pci:v00008086d00003A64* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) USB UHCI Controller #1 + +pci:v00008086d00003A65* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) USB UHCI Controller #2 + +pci:v00008086d00003A66* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) USB UHCI Controller #3 + +pci:v00008086d00003A67* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) USB UHCI Controller #4 + +pci:v00008086d00003A68* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) USB UHCI Controller #5 + +pci:v00008086d00003A69* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) USB UHCI Controller #6 + +pci:v00008086d00003A6A* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) USB2 EHCI Controller #1 + +pci:v00008086d00003A6C* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) USB2 EHCI Controller #2 + +pci:v00008086d00003A6E* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) HD Audio Controller + +pci:v00008086d00003A70* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) PCI Express Port 1 + +pci:v00008086d00003A72* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) PCI Express Port 2 + +pci:v00008086d00003A74* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) PCI Express Port 3 + +pci:v00008086d00003A76* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) PCI Express Port 4 + +pci:v00008086d00003A78* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) PCI Express Port 5 + +pci:v00008086d00003A7A* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) PCI Express Port 6 + +pci:v00008086d00003A7C* + ID_MODEL_FROM_DATABASE=82801JD/DO (ICH10 Family) Gigabit Ethernet Controller + +pci:v00008086d00003B00* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B01* + ID_MODEL_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller + +pci:v00008086d00003B02* + ID_MODEL_FROM_DATABASE=5 Series Chipset LPC Interface Controller + +pci:v00008086d00003B03* + ID_MODEL_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller + +pci:v00008086d00003B04* + ID_MODEL_FROM_DATABASE=5 Series Chipset LPC Interface Controller + +pci:v00008086d00003B05* + ID_MODEL_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller + +pci:v00008086d00003B06* + ID_MODEL_FROM_DATABASE=5 Series Chipset LPC Interface Controller + +pci:v00008086d00003B07* + ID_MODEL_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller + +pci:v00008086d00003B07sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d00003B07sv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d00003B08* + ID_MODEL_FROM_DATABASE=5 Series Chipset LPC Interface Controller + +pci:v00008086d00003B09* + ID_MODEL_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller + +pci:v00008086d00003B09sv00001025sd00000347* + ID_MODEL_FROM_DATABASE=Aspire 7740G + +pci:v00008086d00003B0A* + ID_MODEL_FROM_DATABASE=5 Series Chipset LPC Interface Controller + +pci:v00008086d00003B0Asv00001028sd000002DA* + ID_MODEL_FROM_DATABASE=OptiPlex 980 + +pci:v00008086d00003B0B* + ID_MODEL_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller + +pci:v00008086d00003B0C* + ID_MODEL_FROM_DATABASE=5 Series Chipset LPC Interface Controller + +pci:v00008086d00003B0D* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B0E* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B0F* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B10* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B11* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B12* + ID_MODEL_FROM_DATABASE=3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B13* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B14* + ID_MODEL_FROM_DATABASE=3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B15* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B16* + ID_MODEL_FROM_DATABASE=3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B17* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B18* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B19* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B1A* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B1B* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B1C* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B1D* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B1E* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B1F* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller + +pci:v00008086d00003B20* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA IDE Controller + +pci:v00008086d00003B21* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 2 port SATA IDE Controller + +pci:v00008086d00003B22* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 6 port SATA AHCI Controller + +pci:v00008086d00003B22sv00001028sd000002DA* + ID_MODEL_FROM_DATABASE=OptiPlex 980 + +pci:v00008086d00003B23* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA AHCI Controller + +pci:v00008086d00003B25* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset SATA RAID Controller + +pci:v00008086d00003B26* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 2 port SATA IDE Controller + +pci:v00008086d00003B28* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA IDE Controller + +pci:v00008086d00003B29* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA AHCI Controller + +pci:v00008086d00003B29sv00001025sd00000347* + ID_MODEL_FROM_DATABASE=Aspire 7740G + +pci:v00008086d00003B2C* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset SATA RAID Controller + +pci:v00008086d00003B2D* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 2 port SATA IDE Controller + +pci:v00008086d00003B2Dsv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d00003B2E* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA IDE Controller + +pci:v00008086d00003B2Esv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d00003B2F* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset 6 port SATA AHCI Controller + +pci:v00008086d00003B2Fsv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d00003B2Fsv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d00003B30* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset SMBus Controller + +pci:v00008086d00003B30sv00001025sd00000347* + ID_MODEL_FROM_DATABASE=Aspire 7740G + +pci:v00008086d00003B30sv00001028sd000002DA* + ID_MODEL_FROM_DATABASE=OptiPlex 980 + +pci:v00008086d00003B30sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d00003B30sv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d00003B32* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset Thermal Subsystem + +pci:v00008086d00003B32sv00001025sd00000347* + ID_MODEL_FROM_DATABASE=Aspire 7740G + +pci:v00008086d00003B34* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller + +pci:v00008086d00003B34sv00001025sd00000347* + ID_MODEL_FROM_DATABASE=Aspire 7740G + +pci:v00008086d00003B34sv00001028sd000002DA* + ID_MODEL_FROM_DATABASE=OptiPlex 980 + +pci:v00008086d00003B34sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d00003B34sv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d00003B36* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller + +pci:v00008086d00003B37* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller + +pci:v00008086d00003B38* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller + +pci:v00008086d00003B39* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller + +pci:v00008086d00003B3A* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller + +pci:v00008086d00003B3B* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller + +pci:v00008086d00003B3C* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller + +pci:v00008086d00003B3Csv00001025sd00000347* + ID_MODEL_FROM_DATABASE=Aspire 7740G + +pci:v00008086d00003B3Csv00001028sd000002DA* + ID_MODEL_FROM_DATABASE=OptiPlex 980 + +pci:v00008086d00003B3Csv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d00003B3Csv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d00003B3E* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller + +pci:v00008086d00003B3F* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller + +pci:v00008086d00003B40* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller + +pci:v00008086d00003B41* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset LAN Controller + +pci:v00008086d00003B42* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 1 + +pci:v00008086d00003B42sv00001028sd000002DA* + ID_MODEL_FROM_DATABASE=OptiPlex 980 + +pci:v00008086d00003B42sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d00003B44* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 2 + +pci:v00008086d00003B44sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d00003B46* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 3 + +pci:v00008086d00003B46sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d00003B48* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 4 + +pci:v00008086d00003B48sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d00003B4A* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 5 + +pci:v00008086d00003B4Asv00001028sd000002DA* + ID_MODEL_FROM_DATABASE=OptiPlex 980 + +pci:v00008086d00003B4C* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 6 + +pci:v00008086d00003B4E* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 7 + +pci:v00008086d00003B50* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 8 + +pci:v00008086d00003B53* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset VECI Controller + +pci:v00008086d00003B56* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset High Definition Audio + +pci:v00008086d00003B56sv00001025sd00000347* + ID_MODEL_FROM_DATABASE=Aspire 7740G + +pci:v00008086d00003B56sv00001028sd000002DA* + ID_MODEL_FROM_DATABASE=OptiPlex 980 + +pci:v00008086d00003B56sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d00003B56sv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d00003B57* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset High Definition Audio + +pci:v00008086d00003B64* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset HECI Controller + +pci:v00008086d00003B64sv00001025sd00000347* + ID_MODEL_FROM_DATABASE=Aspire 7740G + +pci:v00008086d00003B64sv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d00003B65* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset HECI Controller + +pci:v00008086d00003B66* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset PT IDER Controller + +pci:v00008086d00003B67* + ID_MODEL_FROM_DATABASE=5 Series/3400 Series Chipset KT Controller + +pci:v00008086d00003B67sv0000E4BFsd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v00008086d00003C00* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 DMI2 + +pci:v00008086d00003C01* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 DMI2 in PCI Express Mode + +pci:v00008086d00003C02* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 1a + +pci:v00008086d00003C03* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 1b + +pci:v00008086d00003C04* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 2a + +pci:v00008086d00003C05* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 2b + +pci:v00008086d00003C06* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 2c + +pci:v00008086d00003C07* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 2d + +pci:v00008086d00003C08* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode + +pci:v00008086d00003C09* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 3b + +pci:v00008086d00003C0A* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 3c + +pci:v00008086d00003C0B* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 3d + +pci:v00008086d00003C0D* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Non-Transparent Bridge + +pci:v00008086d00003C0E* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Non-Transparent Bridge + +pci:v00008086d00003C0F* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Non-Transparent Bridge + +pci:v00008086d00003C20* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 0 + +pci:v00008086d00003C21* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 1 + +pci:v00008086d00003C22* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 2 + +pci:v00008086d00003C23* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 3 + +pci:v00008086d00003C24* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 4 + +pci:v00008086d00003C25* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 5 + +pci:v00008086d00003C26* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 6 + +pci:v00008086d00003C27* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 7 + +pci:v00008086d00003C28* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Address Map, VTd_Misc, System Management + +pci:v00008086d00003C2A* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Control Status and Global Errors + +pci:v00008086d00003C2C* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 I/O APIC + +pci:v00008086d00003C2E* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 DMA + +pci:v00008086d00003C2F* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 DMA + +pci:v00008086d00003C40* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 IIO Switch and IRP Performance Monitor + +pci:v00008086d00003C43* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Ring to PCI Express Performance Monitor + +pci:v00008086d00003C44* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Ring to QuickPath Interconnect Link 0 Performance Monitor + +pci:v00008086d00003C45* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Ring to QuickPath Interconnect Link 1 Performance Monitor + +pci:v00008086d00003C46* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Processor Home Agent Performance Monitoring + +pci:v00008086d00003C71* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller RAS Registers + +pci:v00008086d00003C80* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 QPI Link 0 + +pci:v00008086d00003C83* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 QPI Link Reut 0 + +pci:v00008086d00003C84* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 QPI Link Reut 0 + +pci:v00008086d00003C90* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 QPI Link 1 + +pci:v00008086d00003C93* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 QPI Link Reut 1 + +pci:v00008086d00003C94* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 QPI Link Reut 1 + +pci:v00008086d00003CA0* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Processor Home Agent + +pci:v00008086d00003CA8* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Registers + +pci:v00008086d00003CAA* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 0 + +pci:v00008086d00003CAB* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 1 + +pci:v00008086d00003CAC* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 2 + +pci:v00008086d00003CAD* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 3 + +pci:v00008086d00003CAE* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 4 + +pci:v00008086d00003CB0* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 0 + +pci:v00008086d00003CB1* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 1 + +pci:v00008086d00003CB2* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 0 + +pci:v00008086d00003CB3* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 1 + +pci:v00008086d00003CB4* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 2 + +pci:v00008086d00003CB5* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 3 + +pci:v00008086d00003CB6* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 2 + +pci:v00008086d00003CB7* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 3 + +pci:v00008086d00003CB8* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 DDRIO + +pci:v00008086d00003CC0* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Power Control Unit 0 + +pci:v00008086d00003CC1* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Power Control Unit 1 + +pci:v00008086d00003CC2* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Power Control Unit 2 + +pci:v00008086d00003CD0* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Power Control Unit 3 + +pci:v00008086d00003CE0* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Interrupt Control Registers + +pci:v00008086d00003CE3* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Semaphore and Scratchpad Configuration Registers + +pci:v00008086d00003CE4* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 R2PCIe + +pci:v00008086d00003CE6* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 QuickPath Interconnect Agent Ring Registers + +pci:v00008086d00003CE8* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 0 + +pci:v00008086d00003CE9* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 5 + +pci:v00008086d00003CEA* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 1 + +pci:v00008086d00003CEB* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 6 + +pci:v00008086d00003CEC* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 3 + +pci:v00008086d00003CED* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 7 + +pci:v00008086d00003CEE* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 4 + +pci:v00008086d00003CEF* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 8 + +pci:v00008086d00003CF4* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller System Address Decoder 0 + +pci:v00008086d00003CF5* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller System Address Decoder 1 + +pci:v00008086d00003CF6* + ID_MODEL_FROM_DATABASE=Xeon E5/Core i7 System Address Decoder + +pci:v00008086d00004000* + ID_MODEL_FROM_DATABASE=5400 Chipset Memory Controller Hub + +pci:v00008086d00004001* + ID_MODEL_FROM_DATABASE=5400 Chipset Memory Controller Hub + +pci:v00008086d00004003* + ID_MODEL_FROM_DATABASE=5400 Chipset Memory Controller Hub + +pci:v00008086d00004021* + ID_MODEL_FROM_DATABASE=5400 Chipset PCI Express Port 1 + +pci:v00008086d00004022* + ID_MODEL_FROM_DATABASE=5400 Chipset PCI Express Port 2 + +pci:v00008086d00004023* + ID_MODEL_FROM_DATABASE=5400 Chipset PCI Express Port 3 + +pci:v00008086d00004024* + ID_MODEL_FROM_DATABASE=5400 Chipset PCI Express Port 4 + +pci:v00008086d00004025* + ID_MODEL_FROM_DATABASE=5400 Chipset PCI Express Port 5 + +pci:v00008086d00004026* + ID_MODEL_FROM_DATABASE=5400 Chipset PCI Express Port 6 + +pci:v00008086d00004027* + ID_MODEL_FROM_DATABASE=5400 Chipset PCI Express Port 7 + +pci:v00008086d00004028* + ID_MODEL_FROM_DATABASE=5400 Chipset PCI Express Port 8 + +pci:v00008086d00004029* + ID_MODEL_FROM_DATABASE=5400 Chipset PCI Express Port 9 + +pci:v00008086d0000402D* + ID_MODEL_FROM_DATABASE=5400 Chipset IBIST Registers + +pci:v00008086d0000402E* + ID_MODEL_FROM_DATABASE=5400 Chipset IBIST Registers + +pci:v00008086d0000402F* + ID_MODEL_FROM_DATABASE=5400 Chipset QuickData Technology Device + +pci:v00008086d00004030* + ID_MODEL_FROM_DATABASE=5400 Chipset FSB Registers + +pci:v00008086d00004031* + ID_MODEL_FROM_DATABASE=5400 Chipset CE/SF Registers + +pci:v00008086d00004032* + ID_MODEL_FROM_DATABASE=5400 Chipset IOxAPIC + +pci:v00008086d00004035* + ID_MODEL_FROM_DATABASE=5400 Chipset FBD Registers + +pci:v00008086d00004036* + ID_MODEL_FROM_DATABASE=5400 Chipset FBD Registers + +pci:v00008086d00004100* + ID_MODEL_FROM_DATABASE=Moorestown Graphics and Video + +pci:v00008086d00004108* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller + +pci:v00008086d00004109* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller + +pci:v00008086d0000410A* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller + +pci:v00008086d0000410B* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller + +pci:v00008086d0000410C* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller + +pci:v00008086d0000410D* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller + +pci:v00008086d0000410E* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller + +pci:v00008086d0000410F* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller + +pci:v00008086d00004114* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx PCI Host Bridge #1 + +pci:v00008086d00004115* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx PCI Host Bridge #2 + +pci:v00008086d00004116* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx PCI Host Bridge #3 + +pci:v00008086d00004117* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx PCI Host Bridge #4 + +pci:v00008086d00004220* + ID_MODEL_FROM_DATABASE=PRO/Wireless 2200BG [Calexico2] Network Connection + +pci:v00008086d00004220sv0000103Csd00000934* + ID_MODEL_FROM_DATABASE=Compaq nw8240/nx8220 + +pci:v00008086d00004220sv0000103Csd000012F6* + ID_MODEL_FROM_DATABASE=nc6120/nx8220/nw8240 + +pci:v00008086d00004220sv00008086sd00002701* + ID_MODEL_FROM_DATABASE=WM3B2300BG Mini-PCI Card + +pci:v00008086d00004220sv00008086sd00002712* + ID_MODEL_FROM_DATABASE=IBM ThinkPad R50e + +pci:v00008086d00004220sv00008086sd00002721* + ID_MODEL_FROM_DATABASE=Dell B130 laptop integrated WLAN + +pci:v00008086d00004220sv00008086sd00002722* + ID_MODEL_FROM_DATABASE=Dell Latitude D600 + +pci:v00008086d00004220sv00008086sd00002731* + ID_MODEL_FROM_DATABASE=Samsung P35 integrated WLAN + +pci:v00008086d00004222* + ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection + +pci:v00008086d00004222sv0000103Csd0000135C* + ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection + +pci:v00008086d00004222sv00008086sd00001000* + ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG Network Connection + +pci:v00008086d00004222sv00008086sd00001001* + ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG Network Connection + +pci:v00008086d00004222sv00008086sd00001005* + ID_MODEL_FROM_DATABASE=PRO/Wireless 3945BG Network Connection + +pci:v00008086d00004222sv00008086sd00001034* + ID_MODEL_FROM_DATABASE=PRO/Wireless 3945BG Network Connection + +pci:v00008086d00004222sv00008086sd00001044* + ID_MODEL_FROM_DATABASE=PRO/Wireless 3945BG Network Connection + +pci:v00008086d00004222sv00008086sd00001C00* + ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG Network Connection + +pci:v00008086d00004223* + ID_MODEL_FROM_DATABASE=PRO/Wireless 2915ABG [Calexico2] Network Connection + +pci:v00008086d00004223sv00001000sd00008086* + ID_MODEL_FROM_DATABASE=mPCI 3B Americas/Europe ZZA + +pci:v00008086d00004223sv00001001sd00008086* + ID_MODEL_FROM_DATABASE=mPCI 3B Europe ZZE + +pci:v00008086d00004223sv00001002sd00008086* + ID_MODEL_FROM_DATABASE=mPCI 3B Japan ZZJ + +pci:v00008086d00004223sv00001003sd00008086* + ID_MODEL_FROM_DATABASE=mPCI 3B High-Band ZZH + +pci:v00008086d00004223sv00001351sd0000103C* + ID_MODEL_FROM_DATABASE=Compaq NC6220 + +pci:v00008086d00004224* + ID_MODEL_FROM_DATABASE=PRO/Wireless 2915ABG [Calexico2] Network Connection + +pci:v00008086d00004227* + ID_MODEL_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection + +pci:v00008086d00004227sv00008086sd00001011* + ID_MODEL_FROM_DATABASE=ThinkPad R60e/X60s + +pci:v00008086d00004227sv00008086sd00001014* + ID_MODEL_FROM_DATABASE=PRO/Wireless 3945BG Network Connection + +pci:v00008086d00004229* + ID_MODEL_FROM_DATABASE=PRO/Wireless 4965 AG or AGN [Kedron] Network Connection + +pci:v00008086d00004229sv00008086sd00001100* + ID_MODEL_FROM_DATABASE=Vaio VGN-SZ79SN_C + +pci:v00008086d00004229sv00008086sd00001101* + ID_MODEL_FROM_DATABASE=PRO/Wireless 4965 AG or AGN + +pci:v00008086d0000422B* + ID_MODEL_FROM_DATABASE=Centrino Ultimate-N 6300 + +pci:v00008086d0000422Bsv00008086sd00001101* + ID_MODEL_FROM_DATABASE=Centrino Ultimate-N 6300 3x3 AGN + +pci:v00008086d0000422Bsv00008086sd00001121* + ID_MODEL_FROM_DATABASE=Centrino Ultimate-N 6300 3x3 AGN + +pci:v00008086d0000422C* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 + +pci:v00008086d0000422Csv00008086sd00001301* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 2x2 AGN + +pci:v00008086d0000422Csv00008086sd00001306* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 2x2 ABG + +pci:v00008086d0000422Csv00008086sd00001307* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 2x2 BG + +pci:v00008086d0000422Csv00008086sd00001321* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 2x2 AGN + +pci:v00008086d0000422Csv00008086sd00001326* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 2x2 ABG + +pci:v00008086d00004230* + ID_MODEL_FROM_DATABASE=PRO/Wireless 4965 AG or AGN [Kedron] Network Connection + +pci:v00008086d00004230sv00008086sd00001110* + ID_MODEL_FROM_DATABASE=Lenovo ThinkPad T51 + +pci:v00008086d00004230sv00008086sd00001111* + ID_MODEL_FROM_DATABASE=Lenovo ThinkPad T61 + +pci:v00008086d00004232* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 + +pci:v00008086d00004232sv00008086sd00001201* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN + +pci:v00008086d00004232sv00008086sd00001204* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN + +pci:v00008086d00004232sv00008086sd00001205* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 BGN + +pci:v00008086d00004232sv00008086sd00001206* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 ABG + +pci:v00008086d00004232sv00008086sd00001221* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN + +pci:v00008086d00004232sv00008086sd00001224* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN + +pci:v00008086d00004232sv00008086sd00001225* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 BGN + +pci:v00008086d00004232sv00008086sd00001226* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 ABG + +pci:v00008086d00004232sv00008086sd00001301* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN + +pci:v00008086d00004232sv00008086sd00001304* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN + +pci:v00008086d00004232sv00008086sd00001305* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 BGN + +pci:v00008086d00004232sv00008086sd00001306* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 ABG + +pci:v00008086d00004232sv00008086sd00001321* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN + +pci:v00008086d00004232sv00008086sd00001324* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN + +pci:v00008086d00004232sv00008086sd00001325* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 BGN + +pci:v00008086d00004232sv00008086sd00001326* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 ABG + +pci:v00008086d00004235* + ID_MODEL_FROM_DATABASE=Ultimate N WiFi Link 5300 + +pci:v00008086d00004236* + ID_MODEL_FROM_DATABASE=Ultimate N WiFi Link 5300 + +pci:v00008086d00004237* + ID_MODEL_FROM_DATABASE=PRO/Wireless 5100 AGN [Shiloh] Network Connection + +pci:v00008086d00004237sv00008086sd00001211* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN + +pci:v00008086d00004237sv00008086sd00001214* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN + +pci:v00008086d00004237sv00008086sd00001215* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 BGN + +pci:v00008086d00004237sv00008086sd00001216* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 ABG + +pci:v00008086d00004237sv00008086sd00001311* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN + +pci:v00008086d00004237sv00008086sd00001314* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 AGN + +pci:v00008086d00004237sv00008086sd00001315* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 BGN + +pci:v00008086d00004237sv00008086sd00001316* + ID_MODEL_FROM_DATABASE=WiFi Link 5100 ABG + +pci:v00008086d00004238* + ID_MODEL_FROM_DATABASE=Centrino Ultimate-N 6300 + +pci:v00008086d00004238sv00008086sd00001111* + ID_MODEL_FROM_DATABASE=Centrino Ultimate-N 6300 3x3 AGN + +pci:v00008086d00004239* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 + +pci:v00008086d00004239sv00008086sd00001311* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 2x2 AGN + +pci:v00008086d00004239sv00008086sd00001316* + ID_MODEL_FROM_DATABASE=Centrino Advanced-N 6200 2x2 ABG + +pci:v00008086d0000423A* + ID_MODEL_FROM_DATABASE=PRO/Wireless 5350 AGN [Echo Peak] Network Connection + +pci:v00008086d0000423B* + ID_MODEL_FROM_DATABASE=PRO/Wireless 5350 AGN [Echo Peak] Network Connection + +pci:v00008086d0000423C* + ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 + +pci:v00008086d0000423Csv00008086sd00001201* + ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN + +pci:v00008086d0000423Csv00008086sd00001206* + ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 ABG + +pci:v00008086d0000423Csv00008086sd00001221* + ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN + +pci:v00008086d0000423Csv00008086sd00001301* + ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN + +pci:v00008086d0000423Csv00008086sd00001306* + ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 ABG + +pci:v00008086d0000423Csv00008086sd00001321* + ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN + +pci:v00008086d0000423D* + ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 + +pci:v00008086d0000423Dsv00008086sd00001211* + ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN + +pci:v00008086d0000423Dsv00008086sd00001216* + ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 ABG + +pci:v00008086d0000423Dsv00008086sd00001311* + ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN + +pci:v00008086d0000423Dsv00008086sd00001316* + ID_MODEL_FROM_DATABASE=WiMAX/WiFi Link 5150 ABG + +pci:v00008086d0000444E* + ID_MODEL_FROM_DATABASE=Turbo Memory Controller + +pci:v00008086d00005001* + ID_MODEL_FROM_DATABASE=LE80578 + +pci:v00008086d00005002* + ID_MODEL_FROM_DATABASE=LE80578 Graphics Processor Unit + +pci:v00008086d00005009* + ID_MODEL_FROM_DATABASE=LE80578 Video Display Controller + +pci:v00008086d0000500D* + ID_MODEL_FROM_DATABASE=LE80578 Expansion Bus + +pci:v00008086d0000500E* + ID_MODEL_FROM_DATABASE=LE80578 UART Controller + +pci:v00008086d0000500F* + ID_MODEL_FROM_DATABASE=LE80578 General Purpose IO + +pci:v00008086d00005010* + ID_MODEL_FROM_DATABASE=LE80578 I2C Controller + +pci:v00008086d00005012* + ID_MODEL_FROM_DATABASE=LE80578 Serial Peripheral Interface Bus + +pci:v00008086d00005020* + ID_MODEL_FROM_DATABASE=EP80579 Memory Controller Hub + +pci:v00008086d00005021* + ID_MODEL_FROM_DATABASE=EP80579 DRAM Error Reporting Registers + +pci:v00008086d00005023* + ID_MODEL_FROM_DATABASE=EP80579 EDMA Controller + +pci:v00008086d00005024* + ID_MODEL_FROM_DATABASE=EP80579 PCI Express Port PEA0 + +pci:v00008086d00005025* + ID_MODEL_FROM_DATABASE=EP80579 PCI Express Port PEA1 + +pci:v00008086d00005028* + ID_MODEL_FROM_DATABASE=EP80579 S-ATA IDE + +pci:v00008086d00005029* + ID_MODEL_FROM_DATABASE=EP80579 S-ATA AHCI + +pci:v00008086d0000502A* + ID_MODEL_FROM_DATABASE=EP80579 S-ATA Reserved + +pci:v00008086d0000502B* + ID_MODEL_FROM_DATABASE=EP80579 S-ATA Reserved + +pci:v00008086d0000502C* + ID_MODEL_FROM_DATABASE=EP80579 Integrated Processor ASU + +pci:v00008086d0000502D* + ID_MODEL_FROM_DATABASE=EP80579 Integrated Processor with QuickAssist ASU + +pci:v00008086d0000502E* + ID_MODEL_FROM_DATABASE=EP80579 Reserved + +pci:v00008086d0000502F* + ID_MODEL_FROM_DATABASE=EP80579 Reserved + +pci:v00008086d00005030* + ID_MODEL_FROM_DATABASE=EP80579 Reserved + +pci:v00008086d00005031* + ID_MODEL_FROM_DATABASE=EP80579 LPC Bus + +pci:v00008086d00005032* + ID_MODEL_FROM_DATABASE=EP80579 SMBus Controller + +pci:v00008086d00005033* + ID_MODEL_FROM_DATABASE=EP80579 USB 1.1 Controller + +pci:v00008086d00005035* + ID_MODEL_FROM_DATABASE=EP80579 USB 2.0 Controller + +pci:v00008086d00005037* + ID_MODEL_FROM_DATABASE=EP80579 PCI-PCI Bridge (transparent mode) + +pci:v00008086d00005039* + ID_MODEL_FROM_DATABASE=EP80579 Controller Area Network (CAN) interface #1 + +pci:v00008086d0000503A* + ID_MODEL_FROM_DATABASE=EP80579 Controller Area Network (CAN) interface #2 + +pci:v00008086d0000503B* + ID_MODEL_FROM_DATABASE=EP80579 Synchronous Serial Port (SPP) + +pci:v00008086d0000503C* + ID_MODEL_FROM_DATABASE=EP80579 IEEE 1588 Hardware Assist + +pci:v00008086d0000503D* + ID_MODEL_FROM_DATABASE=EP80579 Local Expansion Bus + +pci:v00008086d0000503E* + ID_MODEL_FROM_DATABASE=EP80579 Global Control Unit (GCU) + +pci:v00008086d0000503F* + ID_MODEL_FROM_DATABASE=EP80579 Reserved + +pci:v00008086d00005040* + ID_MODEL_FROM_DATABASE=EP80579 Integrated Processor Gigabit Ethernet MAC + +pci:v00008086d00005041* + ID_MODEL_FROM_DATABASE=EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC + +pci:v00008086d00005042* + ID_MODEL_FROM_DATABASE=EP80579 Reserved + +pci:v00008086d00005043* + ID_MODEL_FROM_DATABASE=EP80579 Reserved + +pci:v00008086d00005044* + ID_MODEL_FROM_DATABASE=EP80579 Integrated Processor Gigabit Ethernet MAC + +pci:v00008086d00005045* + ID_MODEL_FROM_DATABASE=EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC + +pci:v00008086d00005046* + ID_MODEL_FROM_DATABASE=EP80579 Reserved + +pci:v00008086d00005047* + ID_MODEL_FROM_DATABASE=EP80579 Reserved + +pci:v00008086d00005048* + ID_MODEL_FROM_DATABASE=EP80579 Integrated Processor Gigabit Ethernet MAC + +pci:v00008086d00005049* + ID_MODEL_FROM_DATABASE=EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC + +pci:v00008086d0000504A* + ID_MODEL_FROM_DATABASE=EP80579 Reserved + +pci:v00008086d0000504B* + ID_MODEL_FROM_DATABASE=EP80579 Reserved + +pci:v00008086d0000504C* + ID_MODEL_FROM_DATABASE=EP80579 Integrated Processor with QuickAssist TDM + +pci:v00008086d00005200* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Intelligent Server + +pci:v00008086d00005201* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Intelligent Server + +pci:v00008086d00005201sv00008086sd00000001* + ID_MODEL_FROM_DATABASE=EtherExpress PRO/100 Server Ethernet Adapter + +pci:v00008086d0000530D* + ID_MODEL_FROM_DATABASE=80310 (IOP) IO Processor + +pci:v00008086d000065C0* + ID_MODEL_FROM_DATABASE=5100 Chipset Memory Controller Hub + +pci:v00008086d000065E2* + ID_MODEL_FROM_DATABASE=5100 Chipset PCI Express x4 Port 2 + +pci:v00008086d000065E3* + ID_MODEL_FROM_DATABASE=5100 Chipset PCI Express x4 Port 3 + +pci:v00008086d000065E4* + ID_MODEL_FROM_DATABASE=5100 Chipset PCI Express x4 Port 4 + +pci:v00008086d000065E5* + ID_MODEL_FROM_DATABASE=5100 Chipset PCI Express x4 Port 5 + +pci:v00008086d000065E6* + ID_MODEL_FROM_DATABASE=5100 Chipset PCI Express x4 Port 6 + +pci:v00008086d000065E7* + ID_MODEL_FROM_DATABASE=5100 Chipset PCI Express x4 Port 7 + +pci:v00008086d000065F0* + ID_MODEL_FROM_DATABASE=5100 Chipset FSB Registers + +pci:v00008086d000065F0sv00001028sd0000020F* + ID_MODEL_FROM_DATABASE=PowerEdge R300 + +pci:v00008086d000065F0sv00001028sd00000210* + ID_MODEL_FROM_DATABASE=PowerEdge T300 + +pci:v00008086d000065F1* + ID_MODEL_FROM_DATABASE=5100 Chipset Reserved Registers + +pci:v00008086d000065F1sv00001028sd00000210* + ID_MODEL_FROM_DATABASE=PowerEdge T300 + +pci:v00008086d000065F3* + ID_MODEL_FROM_DATABASE=5100 Chipset Reserved Registers + +pci:v00008086d000065F5* + ID_MODEL_FROM_DATABASE=5100 Chipset DDR Channel 0 Registers + +pci:v00008086d000065F6* + ID_MODEL_FROM_DATABASE=5100 Chipset DDR Channel 1 Registers + +pci:v00008086d000065F7* + ID_MODEL_FROM_DATABASE=5100 Chipset PCI Express x8 Port 2-3 + +pci:v00008086d000065F8* + ID_MODEL_FROM_DATABASE=5100 Chipset PCI Express x8 Port 4-5 + +pci:v00008086d000065F9* + ID_MODEL_FROM_DATABASE=5100 Chipset PCI Express x8 Port 6-7 + +pci:v00008086d000065FA* + ID_MODEL_FROM_DATABASE=5100 Chipset PCI Express x16 Port 4-7 + +pci:v00008086d000065FF* + ID_MODEL_FROM_DATABASE=5100 Chipset DMA Engine + +pci:v00008086d00007000* + ID_MODEL_FROM_DATABASE=82371SB PIIX3 ISA [Natoma/Triton II] + +pci:v00008086d00007000sv00001AF4sd00001100* + ID_MODEL_FROM_DATABASE=Qemu virtual machine + +pci:v00008086d00007010* + ID_MODEL_FROM_DATABASE=82371SB PIIX3 IDE [Natoma/Triton II] + +pci:v00008086d00007010sv00001AF4sd00001100* + ID_MODEL_FROM_DATABASE=Qemu virtual machine + +pci:v00008086d00007020* + ID_MODEL_FROM_DATABASE=82371SB PIIX3 USB [Natoma/Triton II] + +pci:v00008086d00007020sv00001AF4sd00001100* + ID_MODEL_FROM_DATABASE=Qemu virtual machine + +pci:v00008086d00007030* + ID_MODEL_FROM_DATABASE=430VX - 82437VX TVX [Triton VX] + +pci:v00008086d00007050* + ID_MODEL_FROM_DATABASE=Intercast Video Capture Card + +pci:v00008086d00007051* + ID_MODEL_FROM_DATABASE=PB 642365-003 (Business Video Conferencing Card) + +pci:v00008086d00007100* + ID_MODEL_FROM_DATABASE=430TX - 82439TX MTXC + +pci:v00008086d00007110* + ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 ISA + +pci:v00008086d00007110sv000015ADsd00001976* + ID_MODEL_FROM_DATABASE=Virtual Machine Chipset + +pci:v00008086d00007111* + ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 IDE + +pci:v00008086d00007111sv000015ADsd00001976* + ID_MODEL_FROM_DATABASE=Virtual Machine Chipset + +pci:v00008086d00007112* + ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 USB + +pci:v00008086d00007112sv000015ADsd00001976* + ID_MODEL_FROM_DATABASE=Virtual Machine Chipset + +pci:v00008086d00007113* + ID_MODEL_FROM_DATABASE=82371AB/EB/MB PIIX4 ACPI + +pci:v00008086d00007113sv000015ADsd00001976* + ID_MODEL_FROM_DATABASE=Virtual Machine Chipset + +pci:v00008086d00007113sv00001AF4sd00001100* + ID_MODEL_FROM_DATABASE=Qemu virtual machine + +pci:v00008086d00007120* + ID_MODEL_FROM_DATABASE=82810 GMCH (Graphics Memory Controller Hub) + +pci:v00008086d00007120sv00004C53sd00001040* + ID_MODEL_FROM_DATABASE=CL7 mainboard + +pci:v00008086d00007120sv00004C53sd00001060* + ID_MODEL_FROM_DATABASE=PC7 mainboard + +pci:v00008086d00007121* + ID_MODEL_FROM_DATABASE=82810 (CGC) Chipset Graphics Controller + +pci:v00008086d00007121sv00004C53sd00001040* + ID_MODEL_FROM_DATABASE=CL7 mainboard + +pci:v00008086d00007121sv00004C53sd00001060* + ID_MODEL_FROM_DATABASE=PC7 mainboard + +pci:v00008086d00007121sv00008086sd00004341* + ID_MODEL_FROM_DATABASE=Cayman (CA810) Mainboard + +pci:v00008086d00007122* + ID_MODEL_FROM_DATABASE=82810 DC-100 (GMCH) Graphics Memory Controller Hub + +pci:v00008086d00007123* + ID_MODEL_FROM_DATABASE=82810 DC-100 (CGC) Chipset Graphics Controller + +pci:v00008086d00007124* + ID_MODEL_FROM_DATABASE=82810E DC-133 (GMCH) Graphics Memory Controller Hub + +pci:v00008086d00007124sv00001028sd000000B4* + ID_MODEL_FROM_DATABASE=OptiPlex GX110 + +pci:v00008086d00007125* + ID_MODEL_FROM_DATABASE=82810E DC-133 (CGC) Chipset Graphics Controller + +pci:v00008086d00007125sv00001028sd000000B4* + ID_MODEL_FROM_DATABASE=OptiPlex GX110 + +pci:v00008086d00007126* + ID_MODEL_FROM_DATABASE=82810 DC-133 System and Graphics Controller + +pci:v00008086d00007128* + ID_MODEL_FROM_DATABASE=82810-M DC-100 System and Graphics Controller + +pci:v00008086d0000712A* + ID_MODEL_FROM_DATABASE=82810-M DC-133 System and Graphics Controller + +pci:v00008086d00007180* + ID_MODEL_FROM_DATABASE=440LX/EX - 82443LX/EX Host bridge + +pci:v00008086d00007181* + ID_MODEL_FROM_DATABASE=440LX/EX - 82443LX/EX AGP bridge + +pci:v00008086d00007190* + ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge + +pci:v00008086d00007190sv00000E11sd00000500* + ID_MODEL_FROM_DATABASE=Armada 1750 Laptop System Chipset + +pci:v00008086d00007190sv00000E11sd0000B110* + ID_MODEL_FROM_DATABASE=Armada M700/E500 + +pci:v00008086d00007190sv00001028sd0000008E* + ID_MODEL_FROM_DATABASE=PowerEdge 1300 mainboard + +pci:v00008086d00007190sv00001043sd0000803B* + ID_MODEL_FROM_DATABASE=CUBX-L/E Mainboard + +pci:v00008086d00007190sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Toshiba Tecra 8100 Laptop System Chipset + +pci:v00008086d00007190sv000015ADsd00001976* + ID_MODEL_FROM_DATABASE=Virtual Machine Chipset + +pci:v00008086d00007190sv00004C53sd00001050* + ID_MODEL_FROM_DATABASE=CT7 mainboard + +pci:v00008086d00007190sv00004C53sd00001051* + ID_MODEL_FROM_DATABASE=CE7 mainboard + +pci:v00008086d00007191* + ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX AGP bridge + +pci:v00008086d00007191sv00001028sd0000008E* + ID_MODEL_FROM_DATABASE=PowerEdge 1300 mainboard + +pci:v00008086d00007192* + ID_MODEL_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) + +pci:v00008086d00007192sv00000E11sd00000460* + ID_MODEL_FROM_DATABASE=Armada 1700 Laptop System Chipset + +pci:v00008086d00007192sv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Satellite 4010 + +pci:v00008086d00007192sv00004C53sd00001000* + ID_MODEL_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard + +pci:v00008086d00007192sv00008086sd00007190* + ID_MODEL_FROM_DATABASE=Dell PowerEdge 350 + +pci:v00008086d00007194* + ID_MODEL_FROM_DATABASE=82440MX Host Bridge + +pci:v00008086d00007194sv00001033sd00000000* + ID_MODEL_FROM_DATABASE=Versa Note Vxi + +pci:v00008086d00007194sv00004C53sd000010A0* + ID_MODEL_FROM_DATABASE=CA3/CR3 mainboard + +pci:v00008086d00007195* + ID_MODEL_FROM_DATABASE=82440MX AC'97 Audio Controller + +pci:v00008086d00007195sv00001033sd000080CC* + ID_MODEL_FROM_DATABASE=Versa Note VXi + +pci:v00008086d00007195sv000010CFsd00001099* + ID_MODEL_FROM_DATABASE=QSound_SigmaTel Stac97 PCI Audio + +pci:v00008086d00007195sv000011D4sd00000040* + ID_MODEL_FROM_DATABASE=SoundMAX Integrated Digital Audio + +pci:v00008086d00007195sv000011D4sd00000048* + ID_MODEL_FROM_DATABASE=SoundMAX Integrated Digital Audio + +pci:v00008086d00007196* + ID_MODEL_FROM_DATABASE=82440MX AC'97 Modem Controller + +pci:v00008086d00007198* + ID_MODEL_FROM_DATABASE=82440MX ISA Bridge + +pci:v00008086d00007199* + ID_MODEL_FROM_DATABASE=82440MX EIDE Controller + +pci:v00008086d0000719A* + ID_MODEL_FROM_DATABASE=82440MX USB Universal Host Controller + +pci:v00008086d0000719B* + ID_MODEL_FROM_DATABASE=82440MX Power Management Controller + +pci:v00008086d000071A0* + ID_MODEL_FROM_DATABASE=440GX - 82443GX Host bridge + +pci:v00008086d000071A0sv00004C53sd00001050* + ID_MODEL_FROM_DATABASE=CT7 mainboard + +pci:v00008086d000071A0sv00004C53sd00001051* + ID_MODEL_FROM_DATABASE=CE7 mainboard + +pci:v00008086d000071A1* + ID_MODEL_FROM_DATABASE=440GX - 82443GX AGP bridge + +pci:v00008086d000071A2* + ID_MODEL_FROM_DATABASE=440GX - 82443GX Host bridge (AGP disabled) + +pci:v00008086d000071A2sv00004C53sd00001000* + ID_MODEL_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard + +pci:v00008086d00007600* + ID_MODEL_FROM_DATABASE=82372FB PIIX5 ISA + +pci:v00008086d00007601* + ID_MODEL_FROM_DATABASE=82372FB PIIX5 IDE + +pci:v00008086d00007602* + ID_MODEL_FROM_DATABASE=82372FB PIIX5 USB + +pci:v00008086d00007603* + ID_MODEL_FROM_DATABASE=82372FB PIIX5 SMBus + +pci:v00008086d00007800* + ID_MODEL_FROM_DATABASE=82740 (i740) AGP Graphics Accelerator + +pci:v00008086d00007800sv0000003Dsd00000008* + ID_MODEL_FROM_DATABASE=Starfighter AGP + +pci:v00008086d00007800sv0000003Dsd0000000B* + ID_MODEL_FROM_DATABASE=Starfighter AGP + +pci:v00008086d00007800sv00001092sd00000100* + ID_MODEL_FROM_DATABASE=Stealth II G460 + +pci:v00008086d00007800sv000010B4sd0000201A* + ID_MODEL_FROM_DATABASE=Lightspeed 740 + +pci:v00008086d00007800sv000010B4sd0000202F* + ID_MODEL_FROM_DATABASE=Lightspeed 740 + +pci:v00008086d00007800sv00008086sd00000000* + ID_MODEL_FROM_DATABASE=Terminator 2x/i + +pci:v00008086d00007800sv00008086sd00000100* + ID_MODEL_FROM_DATABASE=Intel740 Graphics Accelerator + +pci:v00008086d00008002* + ID_MODEL_FROM_DATABASE=Trusted Execution Technology Registers + +pci:v00008086d00008003* + ID_MODEL_FROM_DATABASE=Trusted Execution Technology Registers + +pci:v00008086d00008100* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) + +pci:v00008086d00008108* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) Graphics Controller + +pci:v00008086d00008110* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) PCI Express Port 1 + +pci:v00008086d00008112* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) PCI Express Port 2 + +pci:v00008086d00008114* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) USB UHCI #1 + +pci:v00008086d00008115* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) USB UHCI #2 + +pci:v00008086d00008116* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) USB UHCI #3 + +pci:v00008086d00008117* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) USB EHCI #1 + +pci:v00008086d00008118* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) USB Client Controller + +pci:v00008086d00008119* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) LPC Bridge + +pci:v00008086d0000811A* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) IDE Controller + +pci:v00008086d0000811B* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) HD Audio Controller + +pci:v00008086d0000811C* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) SDIO Controller #1 + +pci:v00008086d0000811D* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) SDIO Controller #2 + +pci:v00008086d0000811E* + ID_MODEL_FROM_DATABASE=System Controller Hub (SCH Poulsbo) SDIO Controller #3 + +pci:v00008086d00008180* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx PCI Express Port 3 + +pci:v00008086d00008181* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx PCI Express Port 4 + +pci:v00008086d00008182* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller + +pci:v00008086d00008183* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx Configuration Unit + +pci:v00008086d00008184* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx PCI Express Port 1 + +pci:v00008086d00008185* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx PCI Express Port 2 + +pci:v00008086d00008186* + ID_MODEL_FROM_DATABASE=Atom Processor E6xx LPC Bridge + +pci:v00008086d000084C4* + ID_MODEL_FROM_DATABASE=450KX/GX [Orion] - 82454KX/GX PCI bridge + +pci:v00008086d000084C5* + ID_MODEL_FROM_DATABASE=450KX/GX [Orion] - 82453KX/GX Memory controller + +pci:v00008086d000084CA* + ID_MODEL_FROM_DATABASE=450NX - 82451NX Memory & I/O Controller + +pci:v00008086d000084CB* + ID_MODEL_FROM_DATABASE=450NX - 82454NX/84460GX PCI Expander Bridge + +pci:v00008086d000084E0* + ID_MODEL_FROM_DATABASE=460GX - 84460GX System Address Controller (SAC) + +pci:v00008086d000084E1* + ID_MODEL_FROM_DATABASE=460GX - 84460GX System Data Controller (SDC) + +pci:v00008086d000084E2* + ID_MODEL_FROM_DATABASE=460GX - 84460GX AGP Bridge (GXB function 2) + +pci:v00008086d000084E3* + ID_MODEL_FROM_DATABASE=460GX - 84460GX Memory Address Controller (MAC) + +pci:v00008086d000084E4* + ID_MODEL_FROM_DATABASE=460GX - 84460GX Memory Data Controller (MDC) + +pci:v00008086d000084E6* + ID_MODEL_FROM_DATABASE=460GX - 82466GX Wide and fast PCI eXpander Bridge (WXB) + +pci:v00008086d000084EA* + ID_MODEL_FROM_DATABASE=460GX - 84460GX AGP Bridge (GXB function 1) + +pci:v00008086d00008500* + ID_MODEL_FROM_DATABASE=IXP4XX Network Processor (IXP420/421/422/425/IXC1100) + +pci:v00008086d00008500sv00001993sd00000DED* + ID_MODEL_FROM_DATABASE=mGuard-PCI AV#2 + +pci:v00008086d00008500sv00001993sd00000DEE* + ID_MODEL_FROM_DATABASE=mGuard-PCI AV#1 + +pci:v00008086d00008500sv00001993sd00000DEF* + ID_MODEL_FROM_DATABASE=mGuard-PCI AV#0 + +pci:v00008086d00008800* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T PCI Express Port + +pci:v00008086d00008801* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T Packet Hub + +pci:v00008086d00008802* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T Gigabit Ethernet Controller + +pci:v00008086d00008803* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T General Purpose IO Controller + +pci:v00008086d00008804* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T USB OHCI Controller #4 + +pci:v00008086d00008805* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T USB OHCI Controller #5 + +pci:v00008086d00008806* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T USB OHCI Controller #6 + +pci:v00008086d00008807* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T USB2 EHCI Controller #2 + +pci:v00008086d00008808* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T USB Client Controller + +pci:v00008086d00008809* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T SDIO Controller #1 + +pci:v00008086d0000880A* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T SDIO Controller #2 + +pci:v00008086d0000880B* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T SATA AHCI Controller + +pci:v00008086d0000880C* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T USB OHCI Controller #1 + +pci:v00008086d0000880D* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T USB OHCI Controller #2 + +pci:v00008086d0000880E* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T USB OHCI Controller #3 + +pci:v00008086d0000880F* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T USB2 EHCI Controller #1 + +pci:v00008086d00008810* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T DMA Controller #1 + +pci:v00008086d00008811* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T UART Controller 0 + +pci:v00008086d00008812* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T UART Controller 1 + +pci:v00008086d00008813* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T UART Controller 2 + +pci:v00008086d00008814* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T UART Controller 3 + +pci:v00008086d00008815* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T DMA Controller #2 + +pci:v00008086d00008816* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T Serial Peripheral Interface Bus + +pci:v00008086d00008817* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T I2C Controller + +pci:v00008086d00008818* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T Controller Area Network (CAN) Controller + +pci:v00008086d00008819* + ID_MODEL_FROM_DATABASE=Platform Controller Hub EG20T IEEE 1588 Hardware Assist + +pci:v00008086d00008C00* + ID_MODEL_FROM_DATABASE=Lynx Point 4-port SATA Controller 1 [IDE mode] + +pci:v00008086d00008C01* + ID_MODEL_FROM_DATABASE=Lynx Point 4-port SATA Controller 1 [IDE mode] + +pci:v00008086d00008C02* + ID_MODEL_FROM_DATABASE=Lynx Point 6-port SATA Controller 1 [AHCI mode] + +pci:v00008086d00008C03* + ID_MODEL_FROM_DATABASE=Lynx Point 6-port SATA Controller 1 [AHCI mode] + +pci:v00008086d00008C04* + ID_MODEL_FROM_DATABASE=Lynx Point SATA Controller 1 [RAID mode] + +pci:v00008086d00008C05* + ID_MODEL_FROM_DATABASE=Lynx Point SATA Controller 1 [RAID mode] + +pci:v00008086d00008C06* + ID_MODEL_FROM_DATABASE=Lynx Point SATA Controller 1 [RAID mode] + +pci:v00008086d00008C07* + ID_MODEL_FROM_DATABASE=Lynx Point SATA Controller 1 [RAID mode] + +pci:v00008086d00008C08* + ID_MODEL_FROM_DATABASE=Lynx Point 2-port SATA Controller 2 [IDE mode] + +pci:v00008086d00008C09* + ID_MODEL_FROM_DATABASE=Lynx Point 2-port SATA Controller 2 [IDE mode] + +pci:v00008086d00008C0E* + ID_MODEL_FROM_DATABASE=Lynx Point SATA Controller 1 [RAID mode] + +pci:v00008086d00008C0F* + ID_MODEL_FROM_DATABASE=Lynx Point SATA Controller 1 [RAID mode] + +pci:v00008086d00008C10* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #1 + +pci:v00008086d00008C11* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #1 + +pci:v00008086d00008C12* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #2 + +pci:v00008086d00008C13* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #2 + +pci:v00008086d00008C14* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #3 + +pci:v00008086d00008C15* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #3 + +pci:v00008086d00008C16* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #4 + +pci:v00008086d00008C17* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #4 + +pci:v00008086d00008C18* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #5 + +pci:v00008086d00008C19* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #5 + +pci:v00008086d00008C1A* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #6 + +pci:v00008086d00008C1B* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #6 + +pci:v00008086d00008C1C* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #7 + +pci:v00008086d00008C1D* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #7 + +pci:v00008086d00008C1E* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #8 + +pci:v00008086d00008C1F* + ID_MODEL_FROM_DATABASE=Lynx Point PCI Express Root Port #8 + +pci:v00008086d00008C20* + ID_MODEL_FROM_DATABASE=Lynx Point High Definition Audio Controller + +pci:v00008086d00008C21* + ID_MODEL_FROM_DATABASE=Lynx Point High Definition Audio Controller + +pci:v00008086d00008C22* + ID_MODEL_FROM_DATABASE=Lynx Point SMBus Controller + +pci:v00008086d00008C23* + ID_MODEL_FROM_DATABASE=Lynx Point CHAP Counters + +pci:v00008086d00008C24* + ID_MODEL_FROM_DATABASE=Lynx Point Thermal Management Controller + +pci:v00008086d00008C26* + ID_MODEL_FROM_DATABASE=Lynx Point USB Enhanced Host Controller #1 + +pci:v00008086d00008C2D* + ID_MODEL_FROM_DATABASE=Lynx Point USB Enhanced Host Controller #2 + +pci:v00008086d00008C31* + ID_MODEL_FROM_DATABASE=Lynx Point USB xHCI Host Controller + +pci:v00008086d00008C33* + ID_MODEL_FROM_DATABASE=Lynx Point LAN Controller + +pci:v00008086d00008C34* + ID_MODEL_FROM_DATABASE=Lynx Point NAND Controller + +pci:v00008086d00008C3A* + ID_MODEL_FROM_DATABASE=Lynx Point MEI Controller #1 + +pci:v00008086d00008C3B* + ID_MODEL_FROM_DATABASE=Lynx Point MEI Controller #2 + +pci:v00008086d00008C3C* + ID_MODEL_FROM_DATABASE=Lynx Point IDE-r Controller + +pci:v00008086d00008C3D* + ID_MODEL_FROM_DATABASE=Lynx Point KT Controller + +pci:v00008086d00008C40* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C41* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C42* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C43* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C44* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C45* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C46* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C47* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C48* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C49* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C4A* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C4B* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C4C* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C4D* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C4E* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C4F* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C50* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C51* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C52* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C53* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C54* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C55* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C56* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C57* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C58* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C59* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C5A* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C5B* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C5C* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C5D* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C5E* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008C5F* + ID_MODEL_FROM_DATABASE=Lynx Point LPC Controller + +pci:v00008086d00008D00* + ID_MODEL_FROM_DATABASE=Wellsburg 4-port SATA Controller [IDE mode] + +pci:v00008086d00008D02* + ID_MODEL_FROM_DATABASE=Wellsburg 6-Port SATA Controller [AHCI mode] + +pci:v00008086d00008D04* + ID_MODEL_FROM_DATABASE=Wellsburg SATA Controller [RAID mode] + +pci:v00008086d00008D06* + ID_MODEL_FROM_DATABASE=Wellsburg SATA Controller [RAID mode] + +pci:v00008086d00008D08* + ID_MODEL_FROM_DATABASE=Wellsburg 2-port SATA Controller [IDE mode] + +pci:v00008086d00008D0E* + ID_MODEL_FROM_DATABASE=Wellsburg SATA Controller [RAID mode] + +pci:v00008086d00008D10* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #1 + +pci:v00008086d00008D11* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #1 + +pci:v00008086d00008D12* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #2 + +pci:v00008086d00008D13* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #2 + +pci:v00008086d00008D14* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #3 + +pci:v00008086d00008D15* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #3 + +pci:v00008086d00008D16* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #4 + +pci:v00008086d00008D17* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #4 + +pci:v00008086d00008D18* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #5 + +pci:v00008086d00008D19* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #5 + +pci:v00008086d00008D1A* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #6 + +pci:v00008086d00008D1B* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #6 + +pci:v00008086d00008D1C* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #7 + +pci:v00008086d00008D1D* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #7 + +pci:v00008086d00008D1E* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #8 + +pci:v00008086d00008D1F* + ID_MODEL_FROM_DATABASE=Wellsburg PCI Express Root Port #8 + +pci:v00008086d00008D20* + ID_MODEL_FROM_DATABASE=Wellsburg HD Audio Controller + +pci:v00008086d00008D21* + ID_MODEL_FROM_DATABASE=Wellsburg HD Audio Controller + +pci:v00008086d00008D22* + ID_MODEL_FROM_DATABASE=Wellsburg SMBus Controller + +pci:v00008086d00008D24* + ID_MODEL_FROM_DATABASE=Wellsburg Thermal Subsystem + +pci:v00008086d00008D26* + ID_MODEL_FROM_DATABASE=Wellsburg USB Enhanced Host Controller #1 + +pci:v00008086d00008D2D* + ID_MODEL_FROM_DATABASE=Wellsburg USB Enhanced Host Controller #2 + +pci:v00008086d00008D31* + ID_MODEL_FROM_DATABASE=Wellsburg USB xHCI Host Controller + +pci:v00008086d00008D33* + ID_MODEL_FROM_DATABASE=Wellsburg LAN Controller + +pci:v00008086d00008D34* + ID_MODEL_FROM_DATABASE=Wellsburg NAND Controller + +pci:v00008086d00008D3A* + ID_MODEL_FROM_DATABASE=Wellsburg MEI Controller #1 + +pci:v00008086d00008D3B* + ID_MODEL_FROM_DATABASE=Wellsburg MEI Controller #2 + +pci:v00008086d00008D3C* + ID_MODEL_FROM_DATABASE=Wellsburg IDE-r Controller + +pci:v00008086d00008D3D* + ID_MODEL_FROM_DATABASE=Wellsburg KT Controller + +pci:v00008086d00008D40* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D41* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D42* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D43* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D44* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D45* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D46* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D47* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D48* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D49* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D4A* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D4B* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D4C* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D4D* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D4E* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D4F* + ID_MODEL_FROM_DATABASE=Wellsburg LPC Controller + +pci:v00008086d00008D60* + ID_MODEL_FROM_DATABASE=Wellsburg sSATA Controller [IDE mode] + +pci:v00008086d00008D62* + ID_MODEL_FROM_DATABASE=Wellsburg sSATA Controller [AHCI mode] + +pci:v00008086d00008D64* + ID_MODEL_FROM_DATABASE=Wellsburg sSATA Controller [RAID mode] + +pci:v00008086d00008D66* + ID_MODEL_FROM_DATABASE=Wellsburg sSATA Controller [RAID mode] + +pci:v00008086d00008D68* + ID_MODEL_FROM_DATABASE=Wellsburg sSATA Controller [IDE mode] + +pci:v00008086d00008D6E* + ID_MODEL_FROM_DATABASE=Wellsburg sSATA Controller [RAID mode] + +pci:v00008086d00008D7C* + ID_MODEL_FROM_DATABASE=Wellsburg SPSR + +pci:v00008086d00008D7D* + ID_MODEL_FROM_DATABASE=Wellsburg MS SMBus 0 + +pci:v00008086d00008D7E* + ID_MODEL_FROM_DATABASE=Wellsburg MS SMBus 1 + +pci:v00008086d00008D7F* + ID_MODEL_FROM_DATABASE=Wellsburg MS SMBus 2 + +pci:v00008086d00009000* + ID_MODEL_FROM_DATABASE=IXP2000 Family Network Processor + +pci:v00008086d00009001* + ID_MODEL_FROM_DATABASE=IXP2400 Network Processor + +pci:v00008086d00009002* + ID_MODEL_FROM_DATABASE=IXP2300 Network Processor + +pci:v00008086d00009004* + ID_MODEL_FROM_DATABASE=IXP2800 Network Processor + +pci:v00008086d00009621* + ID_MODEL_FROM_DATABASE=Integrated RAID + +pci:v00008086d00009622* + ID_MODEL_FROM_DATABASE=Integrated RAID + +pci:v00008086d00009641* + ID_MODEL_FROM_DATABASE=Integrated RAID + +pci:v00008086d000096A1* + ID_MODEL_FROM_DATABASE=Integrated RAID + +pci:v00008086d00009C00* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [IDE mode] + +pci:v00008086d00009C01* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [IDE mode] + +pci:v00008086d00009C02* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [AHCI mode] + +pci:v00008086d00009C03* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [AHCI mode] + +pci:v00008086d00009C04* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [RAID mode] + +pci:v00008086d00009C05* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [RAID mode] + +pci:v00008086d00009C06* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [RAID mode] + +pci:v00008086d00009C07* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [RAID mode] + +pci:v00008086d00009C08* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 2 [IDE mode] + +pci:v00008086d00009C09* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 2 [IDE mode] + +pci:v00008086d00009C0A* + ID_MODEL_FROM_DATABASE=LynxPoint-LP SATA Controller [Reserved] + +pci:v00008086d00009C0B* + ID_MODEL_FROM_DATABASE=LynxPoint-LP SATA Controller [Reserved] + +pci:v00008086d00009C0C* + ID_MODEL_FROM_DATABASE=LynxPoint-LP SATA Controller [Reserved] + +pci:v00008086d00009C0D* + ID_MODEL_FROM_DATABASE=LynxPoint-LP SATA Controller [Reserved] + +pci:v00008086d00009C0E* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [RAID mode] + +pci:v00008086d00009C0F* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [RAID mode] + +pci:v00008086d00009C10* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 1 + +pci:v00008086d00009C11* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 1 + +pci:v00008086d00009C12* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 2 + +pci:v00008086d00009C13* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 2 + +pci:v00008086d00009C14* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 3 + +pci:v00008086d00009C15* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 3 + +pci:v00008086d00009C16* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 4 + +pci:v00008086d00009C17* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 4 + +pci:v00008086d00009C18* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 5 + +pci:v00008086d00009C19* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 5 + +pci:v00008086d00009C1A* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 6 + +pci:v00008086d00009C1B* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 6 + +pci:v00008086d00009C1C* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 7 + +pci:v00008086d00009C1D* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 7 + +pci:v00008086d00009C1E* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 8 + +pci:v00008086d00009C1F* + ID_MODEL_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 8 + +pci:v00008086d00009C20* + ID_MODEL_FROM_DATABASE=Lynx Point-LP HD Audio Controller + +pci:v00008086d00009C21* + ID_MODEL_FROM_DATABASE=Lynx Point-LP HD Audio Controller + +pci:v00008086d00009C22* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SMBus Controller + +pci:v00008086d00009C23* + ID_MODEL_FROM_DATABASE=Lynx Point-LP CHAP Counters + +pci:v00008086d00009C24* + ID_MODEL_FROM_DATABASE=Lynx Point-LP Thermal + +pci:v00008086d00009C26* + ID_MODEL_FROM_DATABASE=Lynx Point-LP USB EHCI #1 + +pci:v00008086d00009C2D* + ID_MODEL_FROM_DATABASE=Lynx Point-LP USB EHCI #2 + +pci:v00008086d00009C31* + ID_MODEL_FROM_DATABASE=Lynx Point-LP USB xHCI HC + +pci:v00008086d00009C35* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SDIO Controller + +pci:v00008086d00009C36* + ID_MODEL_FROM_DATABASE=Lynx Point-LP Audio DSP Controller + +pci:v00008086d00009C3A* + ID_MODEL_FROM_DATABASE=Lynx Point-LP HECI #0 + +pci:v00008086d00009C3B* + ID_MODEL_FROM_DATABASE=Lynx Point-LP HECI #1 + +pci:v00008086d00009C3C* + ID_MODEL_FROM_DATABASE=Lynx Point-LP HECI IDER + +pci:v00008086d00009C3D* + ID_MODEL_FROM_DATABASE=Lynx Point-LP HECI KT + +pci:v00008086d00009C40* + ID_MODEL_FROM_DATABASE=Lynx Point-LP LPC Controller + +pci:v00008086d00009C41* + ID_MODEL_FROM_DATABASE=Lynx Point-LP LPC Controller + +pci:v00008086d00009C42* + ID_MODEL_FROM_DATABASE=Lynx Point-LP LPC Controller + +pci:v00008086d00009C43* + ID_MODEL_FROM_DATABASE=Lynx Point-LP LPC Controller + +pci:v00008086d00009C44* + ID_MODEL_FROM_DATABASE=Lynx Point-LP LPC Controller + +pci:v00008086d00009C45* + ID_MODEL_FROM_DATABASE=Lynx Point-LP LPC Controller + +pci:v00008086d00009C46* + ID_MODEL_FROM_DATABASE=Lynx Point-LP LPC Controller + +pci:v00008086d00009C47* + ID_MODEL_FROM_DATABASE=Lynx Point-LP LPC Controller + +pci:v00008086d00009C60* + ID_MODEL_FROM_DATABASE=Lynx Point-LP Low Power Sub-System DMA + +pci:v00008086d00009C61* + ID_MODEL_FROM_DATABASE=Lynx Point-LP I2C Controller #0 + +pci:v00008086d00009C62* + ID_MODEL_FROM_DATABASE=Lynx Point-LP I2C Controller #1 + +pci:v00008086d00009C63* + ID_MODEL_FROM_DATABASE=Lynx Point-LP UART Controller #0 + +pci:v00008086d00009C64* + ID_MODEL_FROM_DATABASE=Lynx Point-LP UART Controller #1 + +pci:v00008086d00009C65* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SPI Controller #0 + +pci:v00008086d00009C66* + ID_MODEL_FROM_DATABASE=Lynx Point-LP SPI Controller #1 + +pci:v00008086d0000A000* + ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge + +pci:v00008086d0000A000sv00001458sd00005000* + ID_MODEL_FROM_DATABASE=GA-D525TUD + +pci:v00008086d0000A000sv00008086sd00004F4D* + ID_MODEL_FROM_DATABASE=DeskTop Board D510MO + +pci:v00008086d0000A000sv00008086sd0000544B* + ID_MODEL_FROM_DATABASE=Desktop Board D425KT + +pci:v00008086d0000A001* + ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller + +pci:v00008086d0000A001sv00001458sd0000D000* + ID_MODEL_FROM_DATABASE=GA-D525TUD + +pci:v00008086d0000A001sv00008086sd00004F4D* + ID_MODEL_FROM_DATABASE=DeskTop Board D510MO + +pci:v00008086d0000A001sv00008086sd0000544B* + ID_MODEL_FROM_DATABASE=Desktop Board D425KT + +pci:v00008086d0000A002* + ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller + +pci:v00008086d0000A003* + ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter + +pci:v00008086d0000A010* + ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge + +pci:v00008086d0000A010sv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d0000A011* + ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller + +pci:v00008086d0000A011sv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d0000A012* + ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller + +pci:v00008086d0000A012sv0000144Dsd0000C072* + ID_MODEL_FROM_DATABASE=Notebook N150P + +pci:v00008086d0000A013* + ID_MODEL_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter + +pci:v00008086d0000A620* + ID_MODEL_FROM_DATABASE=6400/6402 Advanced Memory Buffer (AMB) + +pci:v00008086d0000B152* + ID_MODEL_FROM_DATABASE=21152 PCI-to-PCI Bridge + +pci:v00008086d0000B152sv00008086sd0000B152* + ID_MODEL_FROM_DATABASE=21152 PCI-to-PCI Bridge + +pci:v00008086d0000B154* + ID_MODEL_FROM_DATABASE=21154 PCI-to-PCI Bridge + +pci:v00008086d0000B555* + ID_MODEL_FROM_DATABASE=21555 Non transparent PCI-to-PCI Bridge + +pci:v00008086d0000B555sv000012C7sd00005005* + ID_MODEL_FROM_DATABASE=SS7HD PCI Adaptor Card + +pci:v00008086d0000B555sv000012C7sd00005006* + ID_MODEL_FROM_DATABASE=SS7HDC cPCI Adaptor Card + +pci:v00008086d0000B555sv000012D9sd0000000A* + ID_MODEL_FROM_DATABASE=PCI VoIP Gateway + +pci:v00008086d0000B555sv00004C53sd00001050* + ID_MODEL_FROM_DATABASE=CT7 mainboard + +pci:v00008086d0000B555sv00004C53sd00001051* + ID_MODEL_FROM_DATABASE=CE7 mainboard + +pci:v00008086d0000B555sv0000E4BFsd00001000* + ID_MODEL_FROM_DATABASE=CC8-1-BLUES + +pci:v00008086d0000D130* + ID_MODEL_FROM_DATABASE=Core Processor DMI + +pci:v00008086d0000D131* + ID_MODEL_FROM_DATABASE=Core Processor DMI + +pci:v00008086d0000D131sv00001028sd000002DA* + ID_MODEL_FROM_DATABASE=OptiPlex 980 + +pci:v00008086d0000D132* + ID_MODEL_FROM_DATABASE=Core Processor DMI + +pci:v00008086d0000D132sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d0000D133* + ID_MODEL_FROM_DATABASE=Core Processor DMI + +pci:v00008086d0000D134* + ID_MODEL_FROM_DATABASE=Core Processor DMI + +pci:v00008086d0000D135* + ID_MODEL_FROM_DATABASE=Core Processor DMI + +pci:v00008086d0000D136* + ID_MODEL_FROM_DATABASE=Core Processor DMI + +pci:v00008086d0000D137* + ID_MODEL_FROM_DATABASE=Core Processor DMI + +pci:v00008086d0000D138* + ID_MODEL_FROM_DATABASE=Core Processor PCI Express Root Port 1 + +pci:v00008086d0000D138sv00001028sd000002DA* + ID_MODEL_FROM_DATABASE=OptiPlex 980 + +pci:v00008086d0000D138sv00001028sd0000040B* + ID_MODEL_FROM_DATABASE=Latitude E6510 + +pci:v00008086d0000D139* + ID_MODEL_FROM_DATABASE=Core Processor PCI Express Root Port 2 + +pci:v00008086d0000D13A* + ID_MODEL_FROM_DATABASE=Core Processor PCI Express Root Port 3 + +pci:v00008086d0000D13B* + ID_MODEL_FROM_DATABASE=Core Processor PCI Express Root Port 4 + +pci:v00008086d0000D150* + ID_MODEL_FROM_DATABASE=Core Processor QPI Link + +pci:v00008086d0000D151* + ID_MODEL_FROM_DATABASE=Core Processor QPI Routing and Protocol Registers + +pci:v00008086d0000D155* + ID_MODEL_FROM_DATABASE=Core Processor System Management Registers + +pci:v00008086d0000D156* + ID_MODEL_FROM_DATABASE=Core Processor Semaphore and Scratchpad Registers + +pci:v00008086d0000D157* + ID_MODEL_FROM_DATABASE=Core Processor System Control and Status Registers + +pci:v00008086d0000D158* + ID_MODEL_FROM_DATABASE=Core Processor Miscellaneous Registers + +pci:v000080EE* + ID_VENDOR_FROM_DATABASE=InnoTek Systemberatung GmbH + +pci:v000080EEd0000BEEF* + ID_MODEL_FROM_DATABASE=VirtualBox Graphics Adapter + +pci:v000080EEd0000CAFE* + ID_MODEL_FROM_DATABASE=VirtualBox Guest Service + +pci:v00008322* + ID_VENDOR_FROM_DATABASE=Sodick America Corp. + +pci:v00008384* + ID_VENDOR_FROM_DATABASE=SigmaTel + +pci:v00008401* + ID_VENDOR_FROM_DATABASE=TRENDware International Inc. + +pci:v00008686* + ID_VENDOR_FROM_DATABASE=ScaleMP + +pci:v00008686d00001010* + ID_MODEL_FROM_DATABASE=vSMPowered system controller [vSMP CTL] + +pci:v00008800* + ID_VENDOR_FROM_DATABASE=Trigem Computer Inc. + +pci:v00008800d00002008* + ID_MODEL_FROM_DATABASE=Video assistent component + +pci:v00008866* + ID_VENDOR_FROM_DATABASE=T-Square Design Inc. + +pci:v00008888* + ID_VENDOR_FROM_DATABASE=Silicon Magic + +pci:v00008912* + ID_VENDOR_FROM_DATABASE=TRX + +pci:v00008C4A* + ID_VENDOR_FROM_DATABASE=Winbond + +pci:v00008C4Ad00001980* + ID_MODEL_FROM_DATABASE=W89C940 misprogrammed [ne2k] + +pci:v00008E0E* + ID_VENDOR_FROM_DATABASE=Computone Corporation + +pci:v00008E2E* + ID_VENDOR_FROM_DATABASE=KTI + +pci:v00008E2Ed00003000* + ID_MODEL_FROM_DATABASE=ET32P2 + +pci:v00009004* + ID_VENDOR_FROM_DATABASE=Adaptec + +pci:v00009004d00000078* + ID_MODEL_FROM_DATABASE=AHA-2940U_CN + +pci:v00009004d00001078* + ID_MODEL_FROM_DATABASE=AIC-7810 + +pci:v00009004d00001160* + ID_MODEL_FROM_DATABASE=AIC-1160 [Family Fibre Channel Adapter] + +pci:v00009004d00002178* + ID_MODEL_FROM_DATABASE=AIC-7821 + +pci:v00009004d00003860* + ID_MODEL_FROM_DATABASE=AHA-2930CU + +pci:v00009004d00003B78* + ID_MODEL_FROM_DATABASE=AHA-4844W/4844UW + +pci:v00009004d00005075* + ID_MODEL_FROM_DATABASE=AIC-755x + +pci:v00009004d00005078* + ID_MODEL_FROM_DATABASE=AIC-7850 + +pci:v00009004d00005078sv00009004sd00007850* + ID_MODEL_FROM_DATABASE=AHA-2904/Integrated AIC-7850 + +pci:v00009004d00005175* + ID_MODEL_FROM_DATABASE=AIC-755x + +pci:v00009004d00005178* + ID_MODEL_FROM_DATABASE=AIC-7851 + +pci:v00009004d00005275* + ID_MODEL_FROM_DATABASE=AIC-755x + +pci:v00009004d00005278* + ID_MODEL_FROM_DATABASE=AIC-7852 + +pci:v00009004d00005375* + ID_MODEL_FROM_DATABASE=AIC-755x + +pci:v00009004d00005378* + ID_MODEL_FROM_DATABASE=AIC-7850 + +pci:v00009004d00005475* + ID_MODEL_FROM_DATABASE=AIC-755x + +pci:v00009004d00005478* + ID_MODEL_FROM_DATABASE=AIC-7850 + +pci:v00009004d00005575* + ID_MODEL_FROM_DATABASE=AVA-2930 + +pci:v00009004d00005578* + ID_MODEL_FROM_DATABASE=AIC-7855 + +pci:v00009004d00005647* + ID_MODEL_FROM_DATABASE=ANA-7711 TCP Offload Engine + +pci:v00009004d00005647sv00009004sd00007710* + ID_MODEL_FROM_DATABASE=ANA-7711F TCP Offload Engine - Optical + +pci:v00009004d00005647sv00009004sd00007711* + ID_MODEL_FROM_DATABASE=ANA-7711LP TCP Offload Engine - Copper + +pci:v00009004d00005675* + ID_MODEL_FROM_DATABASE=AIC-755x + +pci:v00009004d00005678* + ID_MODEL_FROM_DATABASE=AIC-7856 + +pci:v00009004d00005775* + ID_MODEL_FROM_DATABASE=AIC-755x + +pci:v00009004d00005778* + ID_MODEL_FROM_DATABASE=AIC-7850 + +pci:v00009004d00005800* + ID_MODEL_FROM_DATABASE=AIC-5800 + +pci:v00009004d00005900* + ID_MODEL_FROM_DATABASE=ANA-5910/5930/5940 ATM155 & 25 LAN Adapter + +pci:v00009004d00005905* + ID_MODEL_FROM_DATABASE=ANA-5910A/5930A/5940A ATM Adapter + +pci:v00009004d00006038* + ID_MODEL_FROM_DATABASE=AIC-3860 + +pci:v00009004d00006075* + ID_MODEL_FROM_DATABASE=AIC-1480 / APA-1480 + +pci:v00009004d00006075sv00009004sd00007560* + ID_MODEL_FROM_DATABASE=AIC-1480 / APA-1480 Cardbus + +pci:v00009004d00006078* + ID_MODEL_FROM_DATABASE=AIC-7860 + +pci:v00009004d00006178* + ID_MODEL_FROM_DATABASE=AIC-7861 + +pci:v00009004d00006178sv00009004sd00007861* + ID_MODEL_FROM_DATABASE=AHA-2940AU Single + +pci:v00009004d00006278* + ID_MODEL_FROM_DATABASE=AIC-7860 + +pci:v00009004d00006378* + ID_MODEL_FROM_DATABASE=AIC-7860 + +pci:v00009004d00006478* + ID_MODEL_FROM_DATABASE=AIC-786x + +pci:v00009004d00006578* + ID_MODEL_FROM_DATABASE=AIC-786x + +pci:v00009004d00006678* + ID_MODEL_FROM_DATABASE=AIC-786x + +pci:v00009004d00006778* + ID_MODEL_FROM_DATABASE=AIC-786x + +pci:v00009004d00006915* + ID_MODEL_FROM_DATABASE=ANA620xx/ANA69011A + +pci:v00009004d00006915sv00009004sd00000008* + ID_MODEL_FROM_DATABASE=ANA69011A/TX 10/100 + +pci:v00009004d00006915sv00009004sd00000009* + ID_MODEL_FROM_DATABASE=ANA69011A/TX 10/100 + +pci:v00009004d00006915sv00009004sd00000010* + ID_MODEL_FROM_DATABASE=ANA62022 2-port 10/100 + +pci:v00009004d00006915sv00009004sd00000018* + ID_MODEL_FROM_DATABASE=ANA62044 4-port 10/100 + +pci:v00009004d00006915sv00009004sd00000019* + ID_MODEL_FROM_DATABASE=ANA62044 4-port 10/100 + +pci:v00009004d00006915sv00009004sd00000020* + ID_MODEL_FROM_DATABASE=ANA62022 2-port 10/100 + +pci:v00009004d00006915sv00009004sd00000028* + ID_MODEL_FROM_DATABASE=ANA69011A/TX 10/100 + +pci:v00009004d00006915sv00009004sd00008008* + ID_MODEL_FROM_DATABASE=ANA69011A/TX 64 bit 10/100 + +pci:v00009004d00006915sv00009004sd00008009* + ID_MODEL_FROM_DATABASE=ANA69011A/TX 64 bit 10/100 + +pci:v00009004d00006915sv00009004sd00008010* + ID_MODEL_FROM_DATABASE=ANA62022 2-port 64 bit 10/100 + +pci:v00009004d00006915sv00009004sd00008018* + ID_MODEL_FROM_DATABASE=ANA62044 4-port 64 bit 10/100 + +pci:v00009004d00006915sv00009004sd00008019* + ID_MODEL_FROM_DATABASE=ANA62044 4-port 64 bit 10/100 + +pci:v00009004d00006915sv00009004sd00008020* + ID_MODEL_FROM_DATABASE=ANA62022 2-port 64 bit 10/100 + +pci:v00009004d00006915sv00009004sd00008028* + ID_MODEL_FROM_DATABASE=ANA69011A/TX 64 bit 10/100 + +pci:v00009004d00007078* + ID_MODEL_FROM_DATABASE=AHA-294x / AIC-7870 + +pci:v00009004d00007178* + ID_MODEL_FROM_DATABASE=AHA-2940/2940W / AIC-7871 + +pci:v00009004d00007278* + ID_MODEL_FROM_DATABASE=AHA-3940/3940W / AIC-7872 + +pci:v00009004d00007378* + ID_MODEL_FROM_DATABASE=AHA-3985 / AIC-7873 + +pci:v00009004d00007478* + ID_MODEL_FROM_DATABASE=AHA-2944/2944W / AIC-7874 + +pci:v00009004d00007578* + ID_MODEL_FROM_DATABASE=AHA-3944/3944W / AIC-7875 + +pci:v00009004d00007678* + ID_MODEL_FROM_DATABASE=AHA-4944W/UW / AIC-7876 + +pci:v00009004d00007710* + ID_MODEL_FROM_DATABASE=ANA-7711F Network Accelerator Card (NAC) - Optical + +pci:v00009004d00007711* + ID_MODEL_FROM_DATABASE=ANA-7711C Network Accelerator Card (NAC) - Copper + +pci:v00009004d00007778* + ID_MODEL_FROM_DATABASE=AIC-787x + +pci:v00009004d00007810* + ID_MODEL_FROM_DATABASE=AIC-7810 + +pci:v00009004d00007815* + ID_MODEL_FROM_DATABASE=AIC-7815 RAID+Memory Controller IC + +pci:v00009004d00007815sv00009004sd00007815* + ID_MODEL_FROM_DATABASE=ARO-1130U2 RAID Controller + +pci:v00009004d00007815sv00009004sd00007840* + ID_MODEL_FROM_DATABASE=AIC-7815 RAID+Memory Controller IC + +pci:v00009004d00007850* + ID_MODEL_FROM_DATABASE=AIC-7850 + +pci:v00009004d00007855* + ID_MODEL_FROM_DATABASE=AHA-2930 + +pci:v00009004d00007860* + ID_MODEL_FROM_DATABASE=AIC-7860 + +pci:v00009004d00007870* + ID_MODEL_FROM_DATABASE=AIC-7870 + +pci:v00009004d00007871* + ID_MODEL_FROM_DATABASE=AHA-2940 + +pci:v00009004d00007872* + ID_MODEL_FROM_DATABASE=AHA-3940 + +pci:v00009004d00007873* + ID_MODEL_FROM_DATABASE=AHA-3980 + +pci:v00009004d00007874* + ID_MODEL_FROM_DATABASE=AHA-2944 + +pci:v00009004d00007880* + ID_MODEL_FROM_DATABASE=AIC-7880P + +pci:v00009004d00007890* + ID_MODEL_FROM_DATABASE=AIC-7890 + +pci:v00009004d00007891* + ID_MODEL_FROM_DATABASE=AIC-789x + +pci:v00009004d00007892* + ID_MODEL_FROM_DATABASE=AIC-789x + +pci:v00009004d00007893* + ID_MODEL_FROM_DATABASE=AIC-789x + +pci:v00009004d00007894* + ID_MODEL_FROM_DATABASE=AIC-789x + +pci:v00009004d00007895* + ID_MODEL_FROM_DATABASE=AHA-2940U/UW / AHA-39xx / AIC-7895 + +pci:v00009004d00007895sv00009004sd00007890* + ID_MODEL_FROM_DATABASE=AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B + +pci:v00009004d00007895sv00009004sd00007891* + ID_MODEL_FROM_DATABASE=AHA-2940U/2940UW Dual + +pci:v00009004d00007895sv00009004sd00007892* + ID_MODEL_FROM_DATABASE=AHA-3940AU/AUW/AUWD/UWD + +pci:v00009004d00007895sv00009004sd00007894* + ID_MODEL_FROM_DATABASE=AHA-3944AUWD + +pci:v00009004d00007895sv00009004sd00007895* + ID_MODEL_FROM_DATABASE=AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B + +pci:v00009004d00007895sv00009004sd00007896* + ID_MODEL_FROM_DATABASE=AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B + +pci:v00009004d00007895sv00009004sd00007897* + ID_MODEL_FROM_DATABASE=AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B + +pci:v00009004d00007896* + ID_MODEL_FROM_DATABASE=AIC-789x + +pci:v00009004d00007897* + ID_MODEL_FROM_DATABASE=AIC-789x + +pci:v00009004d00008078* + ID_MODEL_FROM_DATABASE=AIC-7880U + +pci:v00009004d00008078sv00009004sd00007880* + ID_MODEL_FROM_DATABASE=AIC-7880P Ultra/Ultra Wide SCSI Chipset + +pci:v00009004d00008178* + ID_MODEL_FROM_DATABASE=AHA-2940U/UW/D / AIC-7881U + +pci:v00009004d00008178sv00009004sd00007881* + ID_MODEL_FROM_DATABASE=AHA-2940UW SCSI Host Adapter + +pci:v00009004d00008278* + ID_MODEL_FROM_DATABASE=AHA-3940U/UW/UWD / AIC-7882U + +pci:v00009004d00008378* + ID_MODEL_FROM_DATABASE=AHA-3940U/UW / AIC-7883U + +pci:v00009004d00008478* + ID_MODEL_FROM_DATABASE=AHA-2944UW / AIC-7884U + +pci:v00009004d00008578* + ID_MODEL_FROM_DATABASE=AHA-3944U/UWD / AIC-7885 + +pci:v00009004d00008678* + ID_MODEL_FROM_DATABASE=AHA-4944UW / AIC-7886 + +pci:v00009004d00008778* + ID_MODEL_FROM_DATABASE=AHA-2940UW Pro / AIC-788x + +pci:v00009004d00008778sv00009004sd00007887* + ID_MODEL_FROM_DATABASE=2940UW Pro Ultra-Wide SCSI Controller + +pci:v00009004d00008878* + ID_MODEL_FROM_DATABASE=AHA-2930UW / AIC-7888 + +pci:v00009004d00008878sv00009004sd00007888* + ID_MODEL_FROM_DATABASE=AHA-2930UW SCSI Controller + +pci:v00009004d00008B78* + ID_MODEL_FROM_DATABASE=ABA-1030 + +pci:v00009004d0000EC78* + ID_MODEL_FROM_DATABASE=AHA-4944W/UW + +pci:v00009005* + ID_VENDOR_FROM_DATABASE=Adaptec + +pci:v00009005d00000010* + ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W + +pci:v00009005d00000010sv00009005sd00002180* + ID_MODEL_FROM_DATABASE=AHA-2940U2 SCSI Controller + +pci:v00009005d00000010sv00009005sd00008100* + ID_MODEL_FROM_DATABASE=AHA-2940U2B SCSI Controller + +pci:v00009005d00000010sv00009005sd0000A100* + ID_MODEL_FROM_DATABASE=AHA-2940U2B SCSI Controller + +pci:v00009005d00000010sv00009005sd0000A180* + ID_MODEL_FROM_DATABASE=AHA-2940U2W SCSI Controller + +pci:v00009005d00000010sv00009005sd0000E100* + ID_MODEL_FROM_DATABASE=AHA-2950U2B SCSI Controller + +pci:v00009005d00000011* + ID_MODEL_FROM_DATABASE=AHA-2930U2 + +pci:v00009005d00000013* + ID_MODEL_FROM_DATABASE=78902 + +pci:v00009005d00000013sv00009005sd00000003* + ID_MODEL_FROM_DATABASE=AAA-131U2 Array1000 1 Channel RAID Controller + +pci:v00009005d00000013sv00009005sd0000000F* + ID_MODEL_FROM_DATABASE=AIC7890_ARO + +pci:v00009005d0000001F* + ID_MODEL_FROM_DATABASE=AHA-2940U2/U2W / 7890/7891 + +pci:v00009005d0000001Fsv00009005sd0000000F* + ID_MODEL_FROM_DATABASE=2940U2W SCSI Controller + +pci:v00009005d0000001Fsv00009005sd0000A180* + ID_MODEL_FROM_DATABASE=2940U2W SCSI Controller + +pci:v00009005d00000020* + ID_MODEL_FROM_DATABASE=AIC-7890 + +pci:v00009005d0000002F* + ID_MODEL_FROM_DATABASE=AIC-7890 + +pci:v00009005d00000030* + ID_MODEL_FROM_DATABASE=AIC-7890 + +pci:v00009005d0000003F* + ID_MODEL_FROM_DATABASE=AIC-7890 + +pci:v00009005d00000050* + ID_MODEL_FROM_DATABASE=AHA-3940U2x/395U2x + +pci:v00009005d00000050sv00009005sd0000F500* + ID_MODEL_FROM_DATABASE=AHA-3950U2B + +pci:v00009005d00000050sv00009005sd0000FFFF* + ID_MODEL_FROM_DATABASE=AHA-3950U2B + +pci:v00009005d00000051* + ID_MODEL_FROM_DATABASE=AHA-3950U2D + +pci:v00009005d00000051sv00009005sd0000B500* + ID_MODEL_FROM_DATABASE=AHA-3950U2D + +pci:v00009005d00000053* + ID_MODEL_FROM_DATABASE=AIC-7896 SCSI Controller + +pci:v00009005d00000053sv00009005sd0000FFFF* + ID_MODEL_FROM_DATABASE=AIC-7896 SCSI Controller mainboard implementation + +pci:v00009005d0000005F* + ID_MODEL_FROM_DATABASE=AIC-7896U2/7897U2 + +pci:v00009005d00000080* + ID_MODEL_FROM_DATABASE=AIC-7892A U160/m + +pci:v00009005d00000080sv00000E11sd0000E2A0* + ID_MODEL_FROM_DATABASE=Compaq 64-Bit/66MHz Wide Ultra3 SCSI Adapter + +pci:v00009005d00000080sv00009005sd00006220* + ID_MODEL_FROM_DATABASE=AHA-29160C + +pci:v00009005d00000080sv00009005sd000062A0* + ID_MODEL_FROM_DATABASE=29160N Ultra160 SCSI Controller + +pci:v00009005d00000080sv00009005sd0000E220* + ID_MODEL_FROM_DATABASE=29160LP Low Profile Ultra160 SCSI Controller + +pci:v00009005d00000080sv00009005sd0000E2A0* + ID_MODEL_FROM_DATABASE=29160 Ultra160 SCSI Controller + +pci:v00009005d00000081* + ID_MODEL_FROM_DATABASE=AIC-7892B U160/m + +pci:v00009005d00000081sv00009005sd000062A1* + ID_MODEL_FROM_DATABASE=19160 Ultra160 SCSI Controller + +pci:v00009005d00000083* + ID_MODEL_FROM_DATABASE=AIC-7892D U160/m + +pci:v00009005d0000008F* + ID_MODEL_FROM_DATABASE=AIC-7892P U160/m + +pci:v00009005d0000008Fsv00001179sd00000001* + ID_MODEL_FROM_DATABASE=Magnia Z310 + +pci:v00009005d0000008Fsv000015D9sd00009005* + ID_MODEL_FROM_DATABASE=Onboard SCSI Host Adapter + +pci:v00009005d00000092* + ID_MODEL_FROM_DATABASE=AVC-2010 [VideoH!] + +pci:v00009005d00000093* + ID_MODEL_FROM_DATABASE=AVC-2410 [VideoH!] + +pci:v00009005d000000C0* + ID_MODEL_FROM_DATABASE=AHA-3960D / AIC-7899A U160/m + +pci:v00009005d000000C0sv00000E11sd0000F620* + ID_MODEL_FROM_DATABASE=Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter + +pci:v00009005d000000C0sv00009005sd0000F620* + ID_MODEL_FROM_DATABASE=AHA-3960D U160/m + +pci:v00009005d000000C1* + ID_MODEL_FROM_DATABASE=AIC-7899B U160/m + +pci:v00009005d000000C3* + ID_MODEL_FROM_DATABASE=AIC-7899D U160/m + +pci:v00009005d000000C5* + ID_MODEL_FROM_DATABASE=RAID subsystem HBA + +pci:v00009005d000000C5sv00001028sd000000C5* + ID_MODEL_FROM_DATABASE=PowerEdge 2400,2500,2550,4400 + +pci:v00009005d000000CF* + ID_MODEL_FROM_DATABASE=AIC-7899P U160/m + +pci:v00009005d000000CFsv00001028sd000000CE* + ID_MODEL_FROM_DATABASE=PowerEdge 1400 + +pci:v00009005d000000CFsv00001028sd000000D1* + ID_MODEL_FROM_DATABASE=PowerEdge 2550 + +pci:v00009005d000000CFsv00001028sd000000D9* + ID_MODEL_FROM_DATABASE=PowerEdge 2500 + +pci:v00009005d000000CFsv000010F1sd00002462* + ID_MODEL_FROM_DATABASE=Thunder K7 S2462 + +pci:v00009005d000000CFsv000015D9sd00009005* + ID_MODEL_FROM_DATABASE=Onboard SCSI Host Adapter + +pci:v00009005d000000CFsv00008086sd00003411* + ID_MODEL_FROM_DATABASE=SDS2 Mainboard + +pci:v00009005d00000241* + ID_MODEL_FROM_DATABASE=Serial ATA II RAID 1420SA + +pci:v00009005d00000242* + ID_MODEL_FROM_DATABASE=Serial ATA II RAID 1220SA + +pci:v00009005d00000243* + ID_MODEL_FROM_DATABASE=Serial ATA II RAID 1430SA + +pci:v00009005d00000244* + ID_MODEL_FROM_DATABASE=eSATA II RAID 1225SA + +pci:v00009005d00000250* + ID_MODEL_FROM_DATABASE=ServeRAID Controller + +pci:v00009005d00000250sv00001014sd00000279* + ID_MODEL_FROM_DATABASE=ServeRAID 6M + +pci:v00009005d00000250sv00001014sd0000028C* + ID_MODEL_FROM_DATABASE=ServeRAID 6i/6i+ + +pci:v00009005d00000250sv00001014sd0000028E* + ID_MODEL_FROM_DATABASE=ServeRAID 7k + +pci:v00009005d00000279* + ID_MODEL_FROM_DATABASE=ServeRAID 6M + +pci:v00009005d00000283* + ID_MODEL_FROM_DATABASE=AAC-RAID + +pci:v00009005d00000283sv00009005sd00000283* + ID_MODEL_FROM_DATABASE=Catapult + +pci:v00009005d00000284* + ID_MODEL_FROM_DATABASE=AAC-RAID + +pci:v00009005d00000284sv00009005sd00000284* + ID_MODEL_FROM_DATABASE=Tomcat + +pci:v00009005d00000285* + ID_MODEL_FROM_DATABASE=AAC-RAID + +pci:v00009005d00000285sv00000E11sd00000295* + ID_MODEL_FROM_DATABASE=SATA 6Ch (Bearcat) + +pci:v00009005d00000285sv00001014sd000002F2* + ID_MODEL_FROM_DATABASE=ServeRAID 8i + +pci:v00009005d00000285sv00001028sd00000287* + ID_MODEL_FROM_DATABASE=PowerEdge Expandable RAID Controller 320/DC + +pci:v00009005d00000285sv00001028sd00000291* + ID_MODEL_FROM_DATABASE=CERC SATA RAID 2 PCI SATA 6ch (DellCorsair) + +pci:v00009005d00000285sv0000103Csd00003227* + ID_MODEL_FROM_DATABASE=AAR-2610SA + +pci:v00009005d00000285sv0000108Esd00000286* + ID_MODEL_FROM_DATABASE=STK RAID INT + +pci:v00009005d00000285sv0000108Esd00000287* + ID_MODEL_FROM_DATABASE=STK RAID EXT + +pci:v00009005d00000285sv0000108Esd00007AAC* + ID_MODEL_FROM_DATABASE=STK RAID REM + +pci:v00009005d00000285sv0000108Esd00007AAE* + ID_MODEL_FROM_DATABASE=STK RAID EX + +pci:v00009005d00000285sv000015D9sd000002B5* + ID_MODEL_FROM_DATABASE=SMC AOC-USAS-S4i + +pci:v00009005d00000285sv000015D9sd000002B6* + ID_MODEL_FROM_DATABASE=SMC AOC-USAS-S8i + +pci:v00009005d00000285sv000015D9sd000002C9* + ID_MODEL_FROM_DATABASE=SMC AOC-USAS-S4iR + +pci:v00009005d00000285sv000015D9sd000002CA* + ID_MODEL_FROM_DATABASE=SMC AOC-USAS-S8iR + +pci:v00009005d00000285sv000015D9sd000002D2* + ID_MODEL_FROM_DATABASE=SMC AOC-USAS-S8i-LP + +pci:v00009005d00000285sv000015D9sd000002D3* + ID_MODEL_FROM_DATABASE=SMC AOC-USAS-S8iR-LP + +pci:v00009005d00000285sv000017AAsd00000286* + ID_MODEL_FROM_DATABASE=Legend S220 (Legend Crusader) + +pci:v00009005d00000285sv000017AAsd00000287* + ID_MODEL_FROM_DATABASE=Legend S230 (Legend Vulcan) + +pci:v00009005d00000285sv00009005sd00000285* + ID_MODEL_FROM_DATABASE=2200S (Vulcan) + +pci:v00009005d00000285sv00009005sd00000286* + ID_MODEL_FROM_DATABASE=2120S (Crusader) + +pci:v00009005d00000285sv00009005sd00000287* + ID_MODEL_FROM_DATABASE=2200S (Vulcan-2m) + +pci:v00009005d00000285sv00009005sd00000288* + ID_MODEL_FROM_DATABASE=3230S (Harrier) + +pci:v00009005d00000285sv00009005sd00000289* + ID_MODEL_FROM_DATABASE=3240S (Tornado) + +pci:v00009005d00000285sv00009005sd0000028A* + ID_MODEL_FROM_DATABASE=ASR-2020ZCR + +pci:v00009005d00000285sv00009005sd0000028B* + ID_MODEL_FROM_DATABASE=ASR-2025ZCR (Terminator) + +pci:v00009005d00000285sv00009005sd0000028E* + ID_MODEL_FROM_DATABASE=ASR-2020SA (Skyhawk) + +pci:v00009005d00000285sv00009005sd0000028F* + ID_MODEL_FROM_DATABASE=ASR-2025SA + +pci:v00009005d00000285sv00009005sd00000290* + ID_MODEL_FROM_DATABASE=AAR-2410SA PCI SATA 4ch (Jaguar II) + +pci:v00009005d00000285sv00009005sd00000292* + ID_MODEL_FROM_DATABASE=AAR-2810SA PCI SATA 8ch (Corsair-8) + +pci:v00009005d00000285sv00009005sd00000293* + ID_MODEL_FROM_DATABASE=AAR-21610SA PCI SATA 16ch (Corsair-16) + +pci:v00009005d00000285sv00009005sd00000294* + ID_MODEL_FROM_DATABASE=ESD SO-DIMM PCI-X SATA ZCR (Prowler) + +pci:v00009005d00000285sv00009005sd00000296* + ID_MODEL_FROM_DATABASE=ASR-2240S + +pci:v00009005d00000285sv00009005sd00000297* + ID_MODEL_FROM_DATABASE=ASR-4005SAS + +pci:v00009005d00000285sv00009005sd00000298* + ID_MODEL_FROM_DATABASE=ASR-4000 + +pci:v00009005d00000285sv00009005sd00000299* + ID_MODEL_FROM_DATABASE=ASR-4800SAS + +pci:v00009005d00000285sv00009005sd0000029A* + ID_MODEL_FROM_DATABASE=4805SAS + +pci:v00009005d00000285sv00009005sd000002A4* + ID_MODEL_FROM_DATABASE=ICP ICP9085LI + +pci:v00009005d00000285sv00009005sd000002A5* + ID_MODEL_FROM_DATABASE=ICP ICP5085BR + +pci:v00009005d00000285sv00009005sd000002B5* + ID_MODEL_FROM_DATABASE=ASR5800 + +pci:v00009005d00000285sv00009005sd000002B6* + ID_MODEL_FROM_DATABASE=ASR5805 + +pci:v00009005d00000285sv00009005sd000002B7* + ID_MODEL_FROM_DATABASE=ASR5808 + +pci:v00009005d00000285sv00009005sd000002B8* + ID_MODEL_FROM_DATABASE=ICP5445SL + +pci:v00009005d00000285sv00009005sd000002B9* + ID_MODEL_FROM_DATABASE=ICP5085SL + +pci:v00009005d00000285sv00009005sd000002BA* + ID_MODEL_FROM_DATABASE=ICP5805SL + +pci:v00009005d00000285sv00009005sd000002BB* + ID_MODEL_FROM_DATABASE=3405 + +pci:v00009005d00000285sv00009005sd000002BC* + ID_MODEL_FROM_DATABASE=3805 + +pci:v00009005d00000285sv00009005sd000002BD* + ID_MODEL_FROM_DATABASE=31205 + +pci:v00009005d00000285sv00009005sd000002BE* + ID_MODEL_FROM_DATABASE=31605 + +pci:v00009005d00000285sv00009005sd000002BF* + ID_MODEL_FROM_DATABASE=ICP ICP5045BL + +pci:v00009005d00000285sv00009005sd000002C0* + ID_MODEL_FROM_DATABASE=ICP ICP5085BL + +pci:v00009005d00000285sv00009005sd000002C1* + ID_MODEL_FROM_DATABASE=ICP ICP5125BR + +pci:v00009005d00000285sv00009005sd000002C2* + ID_MODEL_FROM_DATABASE=ICP ICP5165BR + +pci:v00009005d00000285sv00009005sd000002C3* + ID_MODEL_FROM_DATABASE=51205 + +pci:v00009005d00000285sv00009005sd000002C4* + ID_MODEL_FROM_DATABASE=51605 + +pci:v00009005d00000285sv00009005sd000002C5* + ID_MODEL_FROM_DATABASE=ICP ICP5125SL + +pci:v00009005d00000285sv00009005sd000002C6* + ID_MODEL_FROM_DATABASE=ICP ICP5165SL + +pci:v00009005d00000285sv00009005sd000002C7* + ID_MODEL_FROM_DATABASE=3085 + +pci:v00009005d00000285sv00009005sd000002C8* + ID_MODEL_FROM_DATABASE=ICP5805BL + +pci:v00009005d00000285sv00009005sd000002CE* + ID_MODEL_FROM_DATABASE=51245 + +pci:v00009005d00000285sv00009005sd000002CF* + ID_MODEL_FROM_DATABASE=51645 + +pci:v00009005d00000285sv00009005sd000002D0* + ID_MODEL_FROM_DATABASE=52445 + +pci:v00009005d00000285sv00009005sd000002D1* + ID_MODEL_FROM_DATABASE=5405 + +pci:v00009005d00000285sv00009005sd000002D4* + ID_MODEL_FROM_DATABASE=ASR-2045 + +pci:v00009005d00000285sv00009005sd000002D5* + ID_MODEL_FROM_DATABASE=ASR-2405 + +pci:v00009005d00000285sv00009005sd000002D6* + ID_MODEL_FROM_DATABASE=ASR-2445 + +pci:v00009005d00000285sv00009005sd000002D7* + ID_MODEL_FROM_DATABASE=ASR-2805 + +pci:v00009005d00000285sv00009005sd000002D8* + ID_MODEL_FROM_DATABASE=5405G + +pci:v00009005d00000285sv00009005sd000002D9* + ID_MODEL_FROM_DATABASE=5445G + +pci:v00009005d00000285sv00009005sd000002DA* + ID_MODEL_FROM_DATABASE=5805G + +pci:v00009005d00000285sv00009005sd000002DB* + ID_MODEL_FROM_DATABASE=5085G + +pci:v00009005d00000285sv00009005sd000002DC* + ID_MODEL_FROM_DATABASE=51245G + +pci:v00009005d00000285sv00009005sd000002DD* + ID_MODEL_FROM_DATABASE=51645G + +pci:v00009005d00000285sv00009005sd000002DE* + ID_MODEL_FROM_DATABASE=52445G + +pci:v00009005d00000285sv00009005sd000002DF* + ID_MODEL_FROM_DATABASE=ASR-2045G + +pci:v00009005d00000285sv00009005sd000002E0* + ID_MODEL_FROM_DATABASE=ASR-2405G + +pci:v00009005d00000285sv00009005sd000002E1* + ID_MODEL_FROM_DATABASE=ASR-2445G + +pci:v00009005d00000285sv00009005sd000002E2* + ID_MODEL_FROM_DATABASE=ASR-2805G + +pci:v00009005d00000286* + ID_MODEL_FROM_DATABASE=AAC-RAID (Rocket) + +pci:v00009005d00000286sv00001014sd0000034D* + ID_MODEL_FROM_DATABASE=8s + +pci:v00009005d00000286sv00001014sd00009540* + ID_MODEL_FROM_DATABASE=ServeRAID 8k/8k-l4 + +pci:v00009005d00000286sv00001014sd00009580* + ID_MODEL_FROM_DATABASE=ServeRAID 8k/8k-l8 + +pci:v00009005d00000286sv00009005sd0000028C* + ID_MODEL_FROM_DATABASE=ASR-2230S + ASR-2230SLP PCI-X (Lancer) + +pci:v00009005d00000286sv00009005sd0000028D* + ID_MODEL_FROM_DATABASE=ASR-2130S + +pci:v00009005d00000286sv00009005sd0000029B* + ID_MODEL_FROM_DATABASE=ASR-2820SA + +pci:v00009005d00000286sv00009005sd0000029C* + ID_MODEL_FROM_DATABASE=ASR-2620SA + +pci:v00009005d00000286sv00009005sd0000029D* + ID_MODEL_FROM_DATABASE=ASR-2420SA + +pci:v00009005d00000286sv00009005sd0000029E* + ID_MODEL_FROM_DATABASE=ICP ICP9024R0 + +pci:v00009005d00000286sv00009005sd0000029F* + ID_MODEL_FROM_DATABASE=ICP ICP9014R0 + +pci:v00009005d00000286sv00009005sd000002A0* + ID_MODEL_FROM_DATABASE=ICP ICP9047MA + +pci:v00009005d00000286sv00009005sd000002A1* + ID_MODEL_FROM_DATABASE=ICP ICP9087MA + +pci:v00009005d00000286sv00009005sd000002A2* + ID_MODEL_FROM_DATABASE=3800 + +pci:v00009005d00000286sv00009005sd000002A3* + ID_MODEL_FROM_DATABASE=ICP ICP5445AU + +pci:v00009005d00000286sv00009005sd000002A4* + ID_MODEL_FROM_DATABASE=ICP ICP9085LI + +pci:v00009005d00000286sv00009005sd000002A5* + ID_MODEL_FROM_DATABASE=ICP ICP5085BR + +pci:v00009005d00000286sv00009005sd000002A6* + ID_MODEL_FROM_DATABASE=ICP9067MA + +pci:v00009005d00000286sv00009005sd000002A7* + ID_MODEL_FROM_DATABASE=3805 + +pci:v00009005d00000286sv00009005sd000002A8* + ID_MODEL_FROM_DATABASE=3400 + +pci:v00009005d00000286sv00009005sd000002A9* + ID_MODEL_FROM_DATABASE=ICP ICP5085AU + +pci:v00009005d00000286sv00009005sd000002AA* + ID_MODEL_FROM_DATABASE=ICP ICP5045AU + +pci:v00009005d00000286sv00009005sd000002AC* + ID_MODEL_FROM_DATABASE=1800 + +pci:v00009005d00000286sv00009005sd000002B3* + ID_MODEL_FROM_DATABASE=2400 + +pci:v00009005d00000286sv00009005sd000002B4* + ID_MODEL_FROM_DATABASE=ICP ICP5045AL + +pci:v00009005d00000286sv00009005sd00000800* + ID_MODEL_FROM_DATABASE=Callisto + +pci:v00009005d0000028B* + ID_MODEL_FROM_DATABASE=Series 6 - 6G SAS/PCIe 2 + +pci:v00009005d0000028Bsv00009005sd00000200* + ID_MODEL_FROM_DATABASE=Series 6 Entry Level - ASR-6405E - 4 internal 6G SAS ports + +pci:v00009005d0000028Bsv00009005sd00000201* + ID_MODEL_FROM_DATABASE=Series 6 Entry Level - ASR-6805E - 8 internal 6G SAS ports + +pci:v00009005d0000028Bsv00009005sd00000300* + ID_MODEL_FROM_DATABASE=Series 6 - ASR-6405 - 4 internal 6G SAS ports + +pci:v00009005d0000028Bsv00009005sd00000301* + ID_MODEL_FROM_DATABASE=Series 6 - ASR-6805 - 8 internal 6G SAS ports + +pci:v00009005d0000028Bsv00009005sd00000302* + ID_MODEL_FROM_DATABASE=Series 6 - ASR-6445 - 4 internal and 4 external 6G SAS ports + +pci:v00009005d0000028Bsv00009005sd00000310* + ID_MODEL_FROM_DATABASE=Series 6 Connectors on Top - ASR-6405T - 4 internal 6G SAS ports + +pci:v00009005d0000028Bsv00009005sd00000311* + ID_MODEL_FROM_DATABASE=Series 6 Connectors on Top - ASR-6805T - 8 internal 6G SAS + +pci:v00009005d0000028Bsv00009005sd00000400* + ID_MODEL_FROM_DATABASE=Series 6 - ASR-61205 - 12 internal 6G SAS ports + +pci:v00009005d0000028Bsv00009005sd00000401* + ID_MODEL_FROM_DATABASE=Series 6 - ASR-61605 - 16 internal 6G SAS ports + +pci:v00009005d0000028Bsv00009005sd00000403* + ID_MODEL_FROM_DATABASE=Series 6 - ASR-62405 - 24 internal 6G SAS ports + +pci:v00009005d0000028C* + ID_MODEL_FROM_DATABASE=Series 7 6G SAS/PCIe 3 + +pci:v00009005d0000028Csv00009005sd00000500* + ID_MODEL_FROM_DATABASE=Series 7 - ASR-7805 - 8 internal 6G SAS Port/PCIe 3.0 + +pci:v00009005d0000028Csv00009005sd00000501* + ID_MODEL_FROM_DATABASE=Series 7 - ASR-71605 - 16 internal 6G SAS Port/PCIe 3.0 + +pci:v00009005d0000028Csv00009005sd00000502* + ID_MODEL_FROM_DATABASE=Series 7 - ASR-71685 - 16 internal 8 external 6G SAS Port/PCIe 3.0 + +pci:v00009005d0000028Csv00009005sd00000503* + ID_MODEL_FROM_DATABASE=Series 7 - ASR-72405 - 24 internal 0 external 6G SAS Port/PCIe 3.0 + +pci:v00009005d0000028Csv00009005sd00000504* + ID_MODEL_FROM_DATABASE=Series 7 - ASR-7885 - 8 internal 8 external 6G SAS Port/PCIe 3.0 + +pci:v00009005d0000028Csv00009005sd00000505* + ID_MODEL_FROM_DATABASE=Series 7 Entry Level - ASR-71685E - 16 internal 8 external 6G SAS Port/PCIe 3.0 + +pci:v00009005d0000028Csv00009005sd00000506* + ID_MODEL_FROM_DATABASE=Series 7 Entry Level - ASR-72405E - 24 internal 0 external 6G SAS Port/PCIe 3.0 + +pci:v00009005d0000028D* + ID_MODEL_FROM_DATABASE=Series 8 12G SAS/PCIe 3 + +pci:v00009005d0000028Dsv00009005sd00000550* + ID_MODEL_FROM_DATABASE=Series 8 - ASR-82405 - 24 internal 0 external 12G SAS Port/PCIe 3.0 + +pci:v00009005d0000028Dsv00009005sd00000551* + ID_MODEL_FROM_DATABASE=Series 8 - ASR-81605 - 16 internal 0 external 12G SAS Port/PCIe 3.0 + +pci:v00009005d0000028Dsv00009005sd00000552* + ID_MODEL_FROM_DATABASE=Series 8 - ASR-8805 - 8 internal 0 external 12G SAS Port/PCIe 3.0 + +pci:v00009005d0000028Dsv00009005sd00000553* + ID_MODEL_FROM_DATABASE=Series 8 - ASR-8085 - 0 internal 8 external 12G SAS Port/PCIe 3.0 + +pci:v00009005d0000028Dsv00009005sd00000554* + ID_MODEL_FROM_DATABASE=Series 8 - ASR-8885 - 8 internal 8 external 12G SAS Port/PCIe 3.0 + +pci:v00009005d00000410* + ID_MODEL_FROM_DATABASE=AIC-9410W SAS (Razor HBA RAID) + +pci:v00009005d00000410sv00009005sd00000410* + ID_MODEL_FROM_DATABASE=ASC-48300(Spirit RAID) + +pci:v00009005d00000410sv00009005sd00000411* + ID_MODEL_FROM_DATABASE=ASC-58300 (Oakmont RAID) + +pci:v00009005d00000412* + ID_MODEL_FROM_DATABASE=AIC-9410W SAS (Razor HBA non-RAID) + +pci:v00009005d00000412sv00009005sd00000412* + ID_MODEL_FROM_DATABASE=ASC-48300 (Spirit non-RAID) + +pci:v00009005d00000412sv00009005sd00000413* + ID_MODEL_FROM_DATABASE=ASC-58300 (Oakmont non-RAID) + +pci:v00009005d00000415* + ID_MODEL_FROM_DATABASE=ASC-58300 SAS (Razor-External HBA RAID) + +pci:v00009005d00000416* + ID_MODEL_FROM_DATABASE=ASC-58300 SAS (Razor-External HBA non-RAID) + +pci:v00009005d0000041E* + ID_MODEL_FROM_DATABASE=AIC-9410W SAS (Razor ASIC non-RAID) + +pci:v00009005d0000041F* + ID_MODEL_FROM_DATABASE=AIC-9410W SAS (Razor ASIC RAID) + +pci:v00009005d0000041Fsv00009005sd0000041F* + ID_MODEL_FROM_DATABASE=AIC-9410W SAS (Razor ASIC RAID) + +pci:v00009005d0000042F* + ID_MODEL_FROM_DATABASE=VSC7250/7251 SAS (Aurora ASIC non-RAID) + +pci:v00009005d00000430* + ID_MODEL_FROM_DATABASE=AIC-9405W SAS (Razor-Lite HBA RAID) + +pci:v00009005d00000430sv00009005sd00000430* + ID_MODEL_FROM_DATABASE=ASC-44300 (Spirit-Lite RAID) + +pci:v00009005d00000432* + ID_MODEL_FROM_DATABASE=AIC-9405W SAS (Razor-Lite HBA non-RAID) + +pci:v00009005d00000432sv00009005sd00000432* + ID_MODEL_FROM_DATABASE=ASC-44300 (Spirit-Lite non-RAID) + +pci:v00009005d0000043E* + ID_MODEL_FROM_DATABASE=AIC-9405W SAS (Razor-Lite ASIC non-RAID) + +pci:v00009005d0000043F* + ID_MODEL_FROM_DATABASE=AIC-9405W SAS (Razor-Lite ASIC RAID) + +pci:v00009005d00000450* + ID_MODEL_FROM_DATABASE=ASC-1405 Unified Serial HBA + +pci:v00009005d00000500* + ID_MODEL_FROM_DATABASE=Obsidian chipset SCSI controller + +pci:v00009005d00000500sv00001014sd000002C1* + ID_MODEL_FROM_DATABASE=PCI-X DDR 3Gb SAS Adapter (572A/572C) + +pci:v00009005d00000500sv00001014sd000002C2* + ID_MODEL_FROM_DATABASE=PCI-X DDR 3Gb SAS RAID Adapter (572B/572D) + +pci:v00009005d00000503* + ID_MODEL_FROM_DATABASE=Scamp chipset SCSI controller + +pci:v00009005d00000503sv00001014sd000002BF* + ID_MODEL_FROM_DATABASE=Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571E) + +pci:v00009005d00000503sv00001014sd000002C3* + ID_MODEL_FROM_DATABASE=PCI-X DDR 3Gb SAS RAID Adapter (572F) + +pci:v00009005d00000503sv00001014sd000002D5* + ID_MODEL_FROM_DATABASE=Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571F) + +pci:v00009005d00000910* + ID_MODEL_FROM_DATABASE=AUA-3100B + +pci:v00009005d0000091E* + ID_MODEL_FROM_DATABASE=AUA-3100B + +pci:v00009005d00008000* + ID_MODEL_FROM_DATABASE=ASC-29320A U320 + +pci:v00009005d0000800F* + ID_MODEL_FROM_DATABASE=AIC-7901 U320 + +pci:v00009005d00008010* + ID_MODEL_FROM_DATABASE=ASC-39320 U320 + +pci:v00009005d00008011* + ID_MODEL_FROM_DATABASE=ASC-39320D + +pci:v00009005d00008011sv00000E11sd000000AC* + ID_MODEL_FROM_DATABASE=ASC-39320D U320 + +pci:v00009005d00008011sv00009005sd00000041* + ID_MODEL_FROM_DATABASE=ASC-39320D U320 + +pci:v00009005d00008012* + ID_MODEL_FROM_DATABASE=ASC-29320 U320 + +pci:v00009005d00008013* + ID_MODEL_FROM_DATABASE=ASC-29320B U320 + +pci:v00009005d00008014* + ID_MODEL_FROM_DATABASE=ASC-29320LP U320 + +pci:v00009005d00008015* + ID_MODEL_FROM_DATABASE=ASC-39320B U320 + +pci:v00009005d00008016* + ID_MODEL_FROM_DATABASE=ASC-39320A U320 + +pci:v00009005d00008017* + ID_MODEL_FROM_DATABASE=ASC-29320ALP U320 + +pci:v00009005d00008017sv00009005sd00000044* + ID_MODEL_FROM_DATABASE=ASC-29320ALP PCIx U320 + +pci:v00009005d00008017sv00009005sd00000045* + ID_MODEL_FROM_DATABASE=ASC-29320LPE PCIe U320 + +pci:v00009005d0000801C* + ID_MODEL_FROM_DATABASE=ASC-39320D U320 + +pci:v00009005d0000801D* + ID_MODEL_FROM_DATABASE=AIC-7902B U320 + +pci:v00009005d0000801Dsv00001014sd000002CC* + ID_MODEL_FROM_DATABASE=ServeRAID 7e + +pci:v00009005d0000801E* + ID_MODEL_FROM_DATABASE=AIC-7901A U320 + +pci:v00009005d0000801F* + ID_MODEL_FROM_DATABASE=AIC-7902 U320 + +pci:v00009005d0000801Fsv00001734sd00001011* + ID_MODEL_FROM_DATABASE=PRIMERGY RX300 onboard SCSI + +pci:v00009005d00008080* + ID_MODEL_FROM_DATABASE=ASC-29320A U320 w/HostRAID + +pci:v00009005d00008081* + ID_MODEL_FROM_DATABASE=PMC-Sierra PM8001 SAS HBA [Series 6H] + +pci:v00009005d00008088* + ID_MODEL_FROM_DATABASE=PMC-Sierra PM8018 SAS HBA [Series 7H] + +pci:v00009005d00008089* + ID_MODEL_FROM_DATABASE=PMC-Sierra PM8019 SAS encryption HBA [Series 7He] + +pci:v00009005d0000808F* + ID_MODEL_FROM_DATABASE=AIC-7901 U320 w/HostRAID + +pci:v00009005d00008090* + ID_MODEL_FROM_DATABASE=ASC-39320 U320 w/HostRAID + +pci:v00009005d00008091* + ID_MODEL_FROM_DATABASE=ASC-39320D U320 w/HostRAID + +pci:v00009005d00008092* + ID_MODEL_FROM_DATABASE=ASC-29320 U320 w/HostRAID + +pci:v00009005d00008093* + ID_MODEL_FROM_DATABASE=ASC-29320B U320 w/HostRAID + +pci:v00009005d00008094* + ID_MODEL_FROM_DATABASE=ASC-29320LP U320 w/HostRAID + +pci:v00009005d00008095* + ID_MODEL_FROM_DATABASE=ASC-39320(B) U320 w/HostRAID + +pci:v00009005d00008096* + ID_MODEL_FROM_DATABASE=ASC-39320A U320 w/HostRAID + +pci:v00009005d00008097* + ID_MODEL_FROM_DATABASE=ASC-29320ALP U320 w/HostRAID + +pci:v00009005d0000809C* + ID_MODEL_FROM_DATABASE=ASC-39320D(B) U320 w/HostRAID + +pci:v00009005d0000809D* + ID_MODEL_FROM_DATABASE=AIC-7902(B) U320 w/HostRAID + +pci:v00009005d0000809Dsv00001014sd000002CC* + ID_MODEL_FROM_DATABASE=ServeRAID 7e + +pci:v00009005d0000809E* + ID_MODEL_FROM_DATABASE=AIC-7901A U320 w/HostRAID + +pci:v00009005d0000809F* + ID_MODEL_FROM_DATABASE=AIC-7902 U320 w/HostRAID + +pci:v0000907F* + ID_VENDOR_FROM_DATABASE=Atronics + +pci:v0000907Fd00002015* + ID_MODEL_FROM_DATABASE=IDE-2015PL + +pci:v0000919A* + ID_VENDOR_FROM_DATABASE=Gigapixel Corp + +pci:v00009412* + ID_VENDOR_FROM_DATABASE=Holtek + +pci:v00009412d00006565* + ID_MODEL_FROM_DATABASE=6565 + +pci:v00009618* + ID_VENDOR_FROM_DATABASE=JusonTech Corporation + +pci:v00009618d00000001* + ID_MODEL_FROM_DATABASE=JusonTech Gigabit Ethernet Controller + +pci:v00009699* + ID_VENDOR_FROM_DATABASE=Omni Media Technology Inc + +pci:v00009699d00006565* + ID_MODEL_FROM_DATABASE=6565 + +pci:v00009710* + ID_VENDOR_FROM_DATABASE=MosChip Semiconductor Technology Ltd. + +pci:v00009710d00009250* + ID_MODEL_FROM_DATABASE=PCI-to-PCI bridge [MCS9250] + +pci:v00009710d00009805* + ID_MODEL_FROM_DATABASE=PCI 1 port parallel adapter + +pci:v00009710d00009815* + ID_MODEL_FROM_DATABASE=PCI 9815 Multi-I/O Controller + +pci:v00009710d00009815sv00001000sd00000020* + ID_MODEL_FROM_DATABASE=2P0S (2 port parallel adaptor) + +pci:v00009710d00009820* + ID_MODEL_FROM_DATABASE=PCI 9820 Multi-I/O Controller + +pci:v00009710d00009835* + ID_MODEL_FROM_DATABASE=PCI 9835 Multi-I/O Controller + +pci:v00009710d00009835sv00001000sd00000002* + ID_MODEL_FROM_DATABASE=2S (16C550 UART) + +pci:v00009710d00009835sv00001000sd00000012* + ID_MODEL_FROM_DATABASE=1P2S + +pci:v00009710d00009845* + ID_MODEL_FROM_DATABASE=PCI 9845 Multi-I/O Controller + +pci:v00009710d00009845sv00001000sd00000004* + ID_MODEL_FROM_DATABASE=0P4S (4 port 16550A serial card) + +pci:v00009710d00009845sv00001000sd00000006* + ID_MODEL_FROM_DATABASE=0P6S (6 port 16550a serial card) + +pci:v00009710d00009845sv00001000sd00000014* + ID_MODEL_FROM_DATABASE=1P4S (1 Parallel / 4 16550A Serial Port Adapter) + +pci:v00009710d00009855* + ID_MODEL_FROM_DATABASE=PCI 9855 Multi-I/O Controller + +pci:v00009710d00009855sv00001000sd00000014* + ID_MODEL_FROM_DATABASE=1P4S + +pci:v00009710d00009855sv00001000sd00000022* + ID_MODEL_FROM_DATABASE=2P2S (2 Parallel / 2 16550A Serial Port Adapter) + +pci:v00009710d00009865* + ID_MODEL_FROM_DATABASE=PCI 9865 Multi-I/O Controller + +pci:v00009710d00009901* + ID_MODEL_FROM_DATABASE=PCIe 9901 Multi-I/O Controller + +pci:v00009710d00009904* + ID_MODEL_FROM_DATABASE=4-Port PCIe Serial Adapter + +pci:v00009710d00009912* + ID_MODEL_FROM_DATABASE=PCIe 9912 Multi-I/O Controller + +pci:v00009710d00009922* + ID_MODEL_FROM_DATABASE=PCIe 9922 Multi-I/O Controller + +pci:v00009710d00009990* + ID_MODEL_FROM_DATABASE=MCS9990 PCIe to 4‐Port USB 2.0 Host Controller + +pci:v00009902* + ID_VENDOR_FROM_DATABASE=Stargen Inc. + +pci:v00009902d00000001* + ID_MODEL_FROM_DATABASE=SG2010 PCI over Starfabric Bridge + +pci:v00009902d00000002* + ID_MODEL_FROM_DATABASE=SG2010 PCI to Starfabric Gateway + +pci:v00009902d00000003* + ID_MODEL_FROM_DATABASE=SG1010 Starfabric Switch and PCI Bridge + +pci:v0000A0A0* + ID_VENDOR_FROM_DATABASE=AOPEN Inc. + +pci:v0000A0F1* + ID_VENDOR_FROM_DATABASE=UNISYS Corporation + +pci:v0000A200* + ID_VENDOR_FROM_DATABASE=NEC Corporation + +pci:v0000A259* + ID_VENDOR_FROM_DATABASE=Hewlett Packard + +pci:v0000A25B* + ID_VENDOR_FROM_DATABASE=Hewlett Packard GmbH PL24-MKT + +pci:v0000A304* + ID_VENDOR_FROM_DATABASE=Sony + +pci:v0000A727* + ID_VENDOR_FROM_DATABASE=3Com Corporation + +pci:v0000A727d00000013* + ID_MODEL_FROM_DATABASE=3CRPAG175 Wireless PC Card + +pci:v0000A727d00006803* + ID_MODEL_FROM_DATABASE=3CRDAG675B Wireless 11a/b/g Adapter + +pci:v0000AA42* + ID_VENDOR_FROM_DATABASE=Scitex Digital Video + +pci:v0000AA55* + ID_VENDOR_FROM_DATABASE=Ncomputing X300 PCI-Engine + +pci:v0000AAAA* + ID_VENDOR_FROM_DATABASE=Adnaco Technology Inc. + +pci:v0000AAAAd00000001* + ID_MODEL_FROM_DATABASE=H1 PCIe over fiber optic host controller + +pci:v0000AAAAd00000002* + ID_MODEL_FROM_DATABASE=R1BP1 PCIe over fiber optic expansion chassis + +pci:v0000ABCD* + ID_VENDOR_FROM_DATABASE=Vadatech Inc. + +pci:v0000AC1E* + ID_VENDOR_FROM_DATABASE=Digital Receiver Technology Inc + +pci:v0000AC3D* + ID_VENDOR_FROM_DATABASE=Actuality Systems + +pci:v0000AD00* + ID_VENDOR_FROM_DATABASE=Alta Data Technologies LLC + +pci:v0000AECB* + ID_VENDOR_FROM_DATABASE=Adrienne Electronics Corporation + +pci:v0000AECBd00006250* + ID_MODEL_FROM_DATABASE=VITC/LTC Timecode Reader card [PCI-VLTC/RDR] + +pci:v0000AFFE* + ID_VENDOR_FROM_DATABASE=Sirrix AG security technologies + +pci:v0000AFFEd000001E1* + ID_MODEL_FROM_DATABASE=PCI1E1 1-port ISDN E1 interface + +pci:v0000AFFEd000002E1* + ID_MODEL_FROM_DATABASE=PCI2E1 2-port ISDN E1 interface + +pci:v0000AFFEd0000450E* + ID_MODEL_FROM_DATABASE=PCI4S0EC 4-port ISDN S0 interface + +pci:v0000AFFEd0000DEAD* + ID_MODEL_FROM_DATABASE=Sirrix.PCI4S0 4-port ISDN S0 interface + +pci:v0000B100* + ID_VENDOR_FROM_DATABASE=OpenVox Communication Co. Ltd. + +pci:v0000B10B* + ID_VENDOR_FROM_DATABASE=Uakron PCI Project + +pci:v0000B1B3* + ID_VENDOR_FROM_DATABASE=Shiva Europe Limited + +pci:v0000B1D9* + ID_VENDOR_FROM_DATABASE=ATCOM Technology co., LTD. + +pci:v0000BD11* + ID_VENDOR_FROM_DATABASE=Pinnacle Systems, Inc. (Wrong ID) + +pci:v0000BDBD* + ID_VENDOR_FROM_DATABASE=Blackmagic Design + +pci:v0000BDBDd0000A11B* + ID_MODEL_FROM_DATABASE=DeckLink SDI + +pci:v0000C001* + ID_VENDOR_FROM_DATABASE=TSI Telsys + +pci:v0000C0A9* + ID_VENDOR_FROM_DATABASE=Micron/Crucial Technology + +pci:v0000C0DE* + ID_VENDOR_FROM_DATABASE=Motorola + +pci:v0000C0FE* + ID_VENDOR_FROM_DATABASE=Motion Engineering, Inc. + +pci:v0000CA50* + ID_VENDOR_FROM_DATABASE=Varian Australia Pty Ltd + +pci:v0000CACE* + ID_VENDOR_FROM_DATABASE=CACE Technologies, Inc. + +pci:v0000CACEd00000001* + ID_MODEL_FROM_DATABASE=TurboCap Port A + +pci:v0000CACEd00000002* + ID_MODEL_FROM_DATABASE=TurboCap Port B + +pci:v0000CACEd00000023* + ID_MODEL_FROM_DATABASE=AirPcap N + +pci:v0000CAFE* + ID_VENDOR_FROM_DATABASE=Chrysalis-ITS + +pci:v0000CAFEd00000003* + ID_MODEL_FROM_DATABASE=Luna K3 Hardware Security Module + +pci:v0000CAFEd00000006* + ID_MODEL_FROM_DATABASE=Luna PCI-e 3000 Hardware Security Module + +pci:v0000CCCC* + ID_VENDOR_FROM_DATABASE=Catapult Communications + +pci:v0000CCEC* + ID_VENDOR_FROM_DATABASE=Curtiss-Wright Controls Embedded Computing + +pci:v0000CDDD* + ID_VENDOR_FROM_DATABASE=Tyzx, Inc. + +pci:v0000CDDDd00000101* + ID_MODEL_FROM_DATABASE=DeepSea 1 High Speed Stereo Vision Frame Grabber + +pci:v0000CDDDd00000200* + ID_MODEL_FROM_DATABASE=DeepSea 2 High Speed Stereo Vision Frame Grabber + +pci:v0000CEBA* + ID_VENDOR_FROM_DATABASE=KEBA AG + +pci:v0000D161* + ID_VENDOR_FROM_DATABASE=Digium, Inc. + +pci:v0000D161d00000120* + ID_MODEL_FROM_DATABASE=Wildcard TE120P single-span T1/E1/J1 card + +pci:v0000D161d00000205* + ID_MODEL_FROM_DATABASE=Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V + +pci:v0000D161d00000210* + ID_MODEL_FROM_DATABASE=Wildcard TE210P/TE212P dual-span T1/E1/J1 card 3.3V + +pci:v0000D161d00000220* + ID_MODEL_FROM_DATABASE=Wildcard TE220 dual-span T1/E1/J1 card 3.3V (PCI-Express) + +pci:v0000D161d00000405* + ID_MODEL_FROM_DATABASE=Wildcard TE405P/TE407P quad-span T1/E1/J1 card 5.0V + +pci:v0000D161d00000410* + ID_MODEL_FROM_DATABASE=Wildcard TE410P/TE412P quad-span T1/E1/J1 card 3.3V + +pci:v0000D161d00000420* + ID_MODEL_FROM_DATABASE=Wildcard TE420P quad-span T1/E1/J1 card 3.3V (PCI-Express) + +pci:v0000D161d00000800* + ID_MODEL_FROM_DATABASE=Wildcard TDM800P 8-port analog card + +pci:v0000D161d00001205* + ID_MODEL_FROM_DATABASE=Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V (u1) + +pci:v0000D161d00001220* + ID_MODEL_FROM_DATABASE=Wildcard TE220 dual-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen) + +pci:v0000D161d00001405* + ID_MODEL_FROM_DATABASE=Wildcard TE405P/TE407P quad-span T1/E1/J1 card 5.0V (u1) + +pci:v0000D161d00001420* + ID_MODEL_FROM_DATABASE=Wildcard TE420 quad-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen) + +pci:v0000D161d00002400* + ID_MODEL_FROM_DATABASE=Wildcard TDM2400P 24-port analog card + +pci:v0000D161d00003400* + ID_MODEL_FROM_DATABASE=Wildcard TC400P transcoder base card + +pci:v0000D161d00008000* + ID_MODEL_FROM_DATABASE=Wildcard TE121 single-span T1/E1/J1 card (PCI-Express) + +pci:v0000D161d00008001* + ID_MODEL_FROM_DATABASE=Wildcard TE122 single-span T1/E1/J1 card + +pci:v0000D161d00008002* + ID_MODEL_FROM_DATABASE=Wildcard AEX800 8-port analog card (PCI-Express) + +pci:v0000D161d00008003* + ID_MODEL_FROM_DATABASE=Wildcard AEX2400 24-port analog card (PCI-Express) + +pci:v0000D161d00008004* + ID_MODEL_FROM_DATABASE=Wildcard TCE400P transcoder base card + +pci:v0000D161d00008005* + ID_MODEL_FROM_DATABASE=Wildcard TDM410 4-port analog card + +pci:v0000D161d00008006* + ID_MODEL_FROM_DATABASE=Wildcard AEX410 4-port analog card (PCI-Express) + +pci:v0000D161d00008007* + ID_MODEL_FROM_DATABASE=Hx8 Series 8-port Base Card + +pci:v0000D161d00008008* + ID_MODEL_FROM_DATABASE=Hx8 Series 8-port Base Card (PCI-Express) + +pci:v0000D161d0000B410* + ID_MODEL_FROM_DATABASE=Wildcard B410 quad-BRI card + +pci:v0000D4D4* + ID_VENDOR_FROM_DATABASE=Dy4 Systems Inc + +pci:v0000D4D4d00000601* + ID_MODEL_FROM_DATABASE=PCI Mezzanine Card + +pci:v0000D531* + ID_VENDOR_FROM_DATABASE=I+ME ACTIA GmbH + +pci:v0000D84D* + ID_VENDOR_FROM_DATABASE=Exsys + +pci:v0000DADA* + ID_VENDOR_FROM_DATABASE=Datapath Limited + +pci:v0000DB10* + ID_VENDOR_FROM_DATABASE=Diablo Technologies + +pci:v0000DCBA* + ID_VENDOR_FROM_DATABASE=Dynamic Engineering + +pci:v0000DCBAd00000046* + ID_MODEL_FROM_DATABASE=PCIeAlteraCycloneIV + +pci:v0000DCBAd00000047* + ID_MODEL_FROM_DATABASE=VPX-RCB + +pci:v0000DCBAd00000048* + ID_MODEL_FROM_DATABASE=PMC-Biserial-III-BAE9 + +pci:v0000DD01* + ID_VENDOR_FROM_DATABASE=Digital Devices GmbH + +pci:v0000DD01d00000003* + ID_MODEL_FROM_DATABASE=Octopus LE DVB adapter + +pci:v0000DEAD* + ID_VENDOR_FROM_DATABASE=Indigita Corporation + +pci:v0000DEAF* + ID_VENDOR_FROM_DATABASE=Middle Digital Inc. + +pci:v0000DEAFd00009050* + ID_MODEL_FROM_DATABASE=PC Weasel Virtual VGA + +pci:v0000DEAFd00009051* + ID_MODEL_FROM_DATABASE=PC Weasel Serial Port + +pci:v0000DEAFd00009052* + ID_MODEL_FROM_DATABASE=PC Weasel Watchdog Timer + +pci:v0000DEDA* + ID_VENDOR_FROM_DATABASE=SoftHard Technology Ltd. + +pci:v0000E000* + ID_VENDOR_FROM_DATABASE=Winbond + +pci:v0000E000d0000E000* + ID_MODEL_FROM_DATABASE=W89C940 + +pci:v0000E159* + ID_VENDOR_FROM_DATABASE=Tiger Jet Network Inc. + +pci:v0000E159d00000001* + ID_MODEL_FROM_DATABASE=Tiger3XX Modem/ISDN interface + +pci:v0000E159d00000001sv00000059sd00000001* + ID_MODEL_FROM_DATABASE=128k ISDN-S/T Adapter + +pci:v0000E159d00000001sv00000059sd00000003* + ID_MODEL_FROM_DATABASE=128k ISDN-U Adapter + +pci:v0000E159d00000001sv000000A7sd00000001* + ID_MODEL_FROM_DATABASE=TELES.S0/PCI 2.x ISDN Adapter + +pci:v0000E159d00000001sv00008086sd00000003* + ID_MODEL_FROM_DATABASE=Digium X100P/X101P analogue PSTN FXO interface + +pci:v0000E159d00000001sv0000B100sd00000003* + ID_MODEL_FROM_DATABASE=OpenVox A400P 4-port analog card + +pci:v0000E159d00000001sv0000B1D9sd00000003* + ID_MODEL_FROM_DATABASE=AX400P 4-port analog card + +pci:v0000E159d00000002* + ID_MODEL_FROM_DATABASE=Tiger100APC ISDN chipset + +pci:v0000E1C5* + ID_VENDOR_FROM_DATABASE=Elcus + +pci:v0000E4BF* + ID_VENDOR_FROM_DATABASE=EKF Elektronik GmbH + +pci:v0000E4BFd00000CCD* + ID_MODEL_FROM_DATABASE=CCD-CALYPSO + +pci:v0000E4BFd00000CD1* + ID_MODEL_FROM_DATABASE=CD1-OPERA + +pci:v0000E4BFd00000CD2* + ID_MODEL_FROM_DATABASE=CD2-BEBOP + +pci:v0000E4BFd00000CD3* + ID_MODEL_FROM_DATABASE=CD3-JIVE + +pci:v0000E4BFd000050C1* + ID_MODEL_FROM_DATABASE=PC1-GROOVE + +pci:v0000E4BFd000050C2* + ID_MODEL_FROM_DATABASE=PC2-LIMBO + +pci:v0000E4BFd000053C1* + ID_MODEL_FROM_DATABASE=SC1-ALLEGRO + +pci:v0000E4BFd0000CC47* + ID_MODEL_FROM_DATABASE=CCG-RUMBA + +pci:v0000E4BFd0000CC4D* + ID_MODEL_FROM_DATABASE=CCM-BOOGIE + +pci:v0000E55E* + ID_VENDOR_FROM_DATABASE=Essence Technology, Inc. + +pci:v0000EA01* + ID_VENDOR_FROM_DATABASE=Eagle Technology + +pci:v0000EA01d0000000A* + ID_MODEL_FROM_DATABASE=PCI-773 Temperature Card + +pci:v0000EA01d00000032* + ID_MODEL_FROM_DATABASE=PCI-730 & PC104P-30 Card + +pci:v0000EA01d0000003E* + ID_MODEL_FROM_DATABASE=PCI-762 Opto-Isolator Card + +pci:v0000EA01d00000041* + ID_MODEL_FROM_DATABASE=PCI-763 Reed Relay Card + +pci:v0000EA01d00000043* + ID_MODEL_FROM_DATABASE=PCI-769 Opto-Isolator Reed Relay Combo Card + +pci:v0000EA01d00000046* + ID_MODEL_FROM_DATABASE=PCI-766 Analog Output Card + +pci:v0000EA01d00000052* + ID_MODEL_FROM_DATABASE=PCI-703 Analog I/O Card + +pci:v0000EA01d00000800* + ID_MODEL_FROM_DATABASE=PCI-800 Digital I/O Card + +pci:v0000EA60* + ID_VENDOR_FROM_DATABASE=RME + +pci:v0000EA60d00009896* + ID_MODEL_FROM_DATABASE=Digi32 + +pci:v0000EA60d00009897* + ID_MODEL_FROM_DATABASE=Digi32 Pro + +pci:v0000EA60d00009898* + ID_MODEL_FROM_DATABASE=Digi32/8 + +pci:v0000EABB* + ID_VENDOR_FROM_DATABASE=Aashima Technology B.V. + +pci:v0000EACE* + ID_VENDOR_FROM_DATABASE=Endace Measurement Systems, Ltd + +pci:v0000EACEd00003100* + ID_MODEL_FROM_DATABASE=DAG 3.10 OC-3/OC-12 + +pci:v0000EACEd00003200* + ID_MODEL_FROM_DATABASE=DAG 3.2x OC-3/OC-12 + +pci:v0000EACEd0000320E* + ID_MODEL_FROM_DATABASE=DAG 3.2E Fast Ethernet + +pci:v0000EACEd0000340E* + ID_MODEL_FROM_DATABASE=DAG 3.4E Fast Ethernet + +pci:v0000EACEd0000341E* + ID_MODEL_FROM_DATABASE=DAG 3.41E Fast Ethernet + +pci:v0000EACEd00003500* + ID_MODEL_FROM_DATABASE=DAG 3.5 OC-3/OC-12 + +pci:v0000EACEd0000351C* + ID_MODEL_FROM_DATABASE=DAG 3.5ECM Fast Ethernet + +pci:v0000EACEd0000360D* + ID_MODEL_FROM_DATABASE=DAG 3.6D DS3 + +pci:v0000EACEd0000360E* + ID_MODEL_FROM_DATABASE=DAG 3.6E Fast Ethernet + +pci:v0000EACEd0000368E* + ID_MODEL_FROM_DATABASE=DAG 3.6E Gig Ethernet + +pci:v0000EACEd00003707* + ID_MODEL_FROM_DATABASE=DAG 3.7T T1/E1/J1 + +pci:v0000EACEd0000370D* + ID_MODEL_FROM_DATABASE=DAG 3.7D DS3/E3 + +pci:v0000EACEd0000378E* + ID_MODEL_FROM_DATABASE=DAG 3.7G Gig Ethernet + +pci:v0000EACEd00003800* + ID_MODEL_FROM_DATABASE=DAG 3.8S OC-3/OC-12 + +pci:v0000EACEd00004100* + ID_MODEL_FROM_DATABASE=DAG 4.10 OC-48 + +pci:v0000EACEd00004110* + ID_MODEL_FROM_DATABASE=DAG 4.11 OC-48 + +pci:v0000EACEd00004220* + ID_MODEL_FROM_DATABASE=DAG 4.2 OC-48 + +pci:v0000EACEd0000422E* + ID_MODEL_FROM_DATABASE=DAG 4.2GE Gig Ethernet + +pci:v0000EACEd00004230* + ID_MODEL_FROM_DATABASE=DAG 4.2S OC-48 + +pci:v0000EACEd0000423E* + ID_MODEL_FROM_DATABASE=DAG 4.2GE Gig Ethernet + +pci:v0000EACEd00004300* + ID_MODEL_FROM_DATABASE=DAG 4.3S OC-48 + +pci:v0000EACEd0000430E* + ID_MODEL_FROM_DATABASE=DAG 4.3GE Gig Ethernet + +pci:v0000EACEd0000452E* + ID_MODEL_FROM_DATABASE=DAG 4.5G2 Gig Ethernet + +pci:v0000EACEd0000454E* + ID_MODEL_FROM_DATABASE=DAG 4.5G4 Gig Ethernet + +pci:v0000EACEd000045B8* + ID_MODEL_FROM_DATABASE=DAG 4.5Z8 Gig Ethernet + +pci:v0000EACEd000045BE* + ID_MODEL_FROM_DATABASE=DAG 4.5Z2 Gig Ethernet + +pci:v0000EACEd0000520E* + ID_MODEL_FROM_DATABASE=DAG 5.2X 10G Ethernet + +pci:v0000EACEd0000521A* + ID_MODEL_FROM_DATABASE=DAG 5.2SXA 10G Ethernet/OC-192 + +pci:v0000EACEd00005400* + ID_MODEL_FROM_DATABASE=DAG 5.4S-12 OC-3/OC-12 + +pci:v0000EACEd00005401* + ID_MODEL_FROM_DATABASE=DAG 5.4SG-48 Gig Ethernet/OC-3/OC-12/OC-48 + +pci:v0000EACEd0000540A* + ID_MODEL_FROM_DATABASE=DAG 5.4GA Gig Ethernet + +pci:v0000EACEd0000541A* + ID_MODEL_FROM_DATABASE=DAG 5.4SA-12 OC-3/OC-12 + +pci:v0000EACEd0000542A* + ID_MODEL_FROM_DATABASE=DAG 5.4SGA-48 Gig Ethernet/OC-3/OC-12/OC-48 + +pci:v0000EACEd00006000* + ID_MODEL_FROM_DATABASE=DAG 6.0SE 10G Ethernet/OC-192 + +pci:v0000EACEd00006100* + ID_MODEL_FROM_DATABASE=DAG 6.1SE 10G Ethernet/OC-192 + +pci:v0000EACEd00006200* + ID_MODEL_FROM_DATABASE=DAG 6.2SE 10G Ethernet/OC-192 + +pci:v0000EACEd00007100* + ID_MODEL_FROM_DATABASE=DAG 7.1S OC-3/OC-12 + +pci:v0000EACEd00007400* + ID_MODEL_FROM_DATABASE=DAG 7.4S OC-3/OC-12 + +pci:v0000EACEd00007401* + ID_MODEL_FROM_DATABASE=DAG 7.4S48 OC-48 + +pci:v0000EACEd0000752E* + ID_MODEL_FROM_DATABASE=DAG 7.5G2 Gig Ethernet + +pci:v0000EACEd0000754E* + ID_MODEL_FROM_DATABASE=DAG 7.5G4 Gig Ethernet + +pci:v0000EACEd00008100* + ID_MODEL_FROM_DATABASE=DAG 8.1X 10G Ethernet + +pci:v0000EACEd00008101* + ID_MODEL_FROM_DATABASE=DAG 8.1SX 10G Ethernet/OC-192 + +pci:v0000EACEd00008102* + ID_MODEL_FROM_DATABASE=DAG 8.1X 10G Ethernet + +pci:v0000EACEd0000820E* + ID_MODEL_FROM_DATABASE=DAG 8.2X 10G Ethernet + +pci:v0000EACEd0000820F* + ID_MODEL_FROM_DATABASE=DAG 8.2X 10G Ethernet (2nd bus) + +pci:v0000EACEd00008400* + ID_MODEL_FROM_DATABASE=DAG 8.4I Infiniband x4 SDR + +pci:v0000EACEd00008500* + ID_MODEL_FROM_DATABASE=DAG 8.5I Infiniband x4 DDR + +pci:v0000EACEd0000920E* + ID_MODEL_FROM_DATABASE=DAG 9.2X2 10G Ethernet + +pci:v0000EC80* + ID_VENDOR_FROM_DATABASE=Belkin Corporation + +pci:v0000EC80d0000EC00* + ID_MODEL_FROM_DATABASE=F5D6000 + +pci:v0000ECC0* + ID_VENDOR_FROM_DATABASE=Echo Digital Audio Corporation + +pci:v0000EDD8* + ID_VENDOR_FROM_DATABASE=ARK Logic Inc + +pci:v0000EDD8d0000A091* + ID_MODEL_FROM_DATABASE=1000PV [Stingray] + +pci:v0000EDD8d0000A099* + ID_MODEL_FROM_DATABASE=2000PV [Stingray] + +pci:v0000EDD8d0000A0A1* + ID_MODEL_FROM_DATABASE=2000MT + +pci:v0000EDD8d0000A0A9* + ID_MODEL_FROM_DATABASE=2000MI + +pci:v0000F043* + ID_VENDOR_FROM_DATABASE=ASUSTeK Computer Inc. (Wrong ID) + +pci:v0000F05B* + ID_VENDOR_FROM_DATABASE=Foxconn International, Inc. (Wrong ID) + +pci:v0000F1D0* + ID_VENDOR_FROM_DATABASE=AJA Video + +pci:v0000F1D0d0000C0FE* + ID_MODEL_FROM_DATABASE=Xena HS/HD-R + +pci:v0000F1D0d0000C0FF* + ID_MODEL_FROM_DATABASE=Kona/Xena 2 + +pci:v0000F1D0d0000CAFE* + ID_MODEL_FROM_DATABASE=Kona SD + +pci:v0000F1D0d0000CFEE* + ID_MODEL_FROM_DATABASE=Xena LS/SD-22-DA/SD-DA + +pci:v0000F1D0d0000DCAF* + ID_MODEL_FROM_DATABASE=Kona HD + +pci:v0000F1D0d0000DFEE* + ID_MODEL_FROM_DATABASE=Xena HD-DA + +pci:v0000F1D0d0000EFAC* + ID_MODEL_FROM_DATABASE=Xena SD-MM/SD-22-MM + +pci:v0000F1D0d0000FACD* + ID_MODEL_FROM_DATABASE=Xena HD-MM + +pci:v0000F5F5* + ID_VENDOR_FROM_DATABASE=F5 Networks, Inc. + +pci:v0000F849* + ID_VENDOR_FROM_DATABASE=ASRock Incorporation (Wrong ID) + +pci:v0000FA57* + ID_VENDOR_FROM_DATABASE=Interagon AS + +pci:v0000FA57d00000001* + ID_MODEL_FROM_DATABASE=PMC [Pattern Matching Chip] + +pci:v0000FAB7* + ID_VENDOR_FROM_DATABASE=Fabric7 Systems, Inc. + +pci:v0000FEBD* + ID_VENDOR_FROM_DATABASE=Ultraview Corp. + +pci:v0000FEDA* + ID_VENDOR_FROM_DATABASE=Broadcom Inc + +pci:v0000FEDAd0000A0FA* + ID_MODEL_FROM_DATABASE=BCM4210 iLine10 HomePNA 2.0 + +pci:v0000FEDAd0000A10E* + ID_MODEL_FROM_DATABASE=BCM4230 iLine10 HomePNA 2.0 + +pci:v0000FEDE* + ID_VENDOR_FROM_DATABASE=Fedetec Inc. + +pci:v0000FEDEd00000003* + ID_MODEL_FROM_DATABASE=TABIC PCI v3 + +pci:v0000FFFD* + ID_VENDOR_FROM_DATABASE=XenSource, Inc. + +pci:v0000FFFDd00000101* + ID_MODEL_FROM_DATABASE=PCI Event Channel Controller + +pci:v0000FFFE* + ID_VENDOR_FROM_DATABASE=VMWare Inc (temporary ID) + +pci:v0000FFFEd00000710* + ID_MODEL_FROM_DATABASE=Virtual SVGA + +pci:v0000FFFF* + ID_VENDOR_FROM_DATABASE=Illegal Vendor ID diff --git a/hwdb/20-pci-vendor-product.hwdb b/hwdb/20-pci-vendor-product.hwdb deleted file mode 100644 index f9664a00ed..0000000000 --- a/hwdb/20-pci-vendor-product.hwdb +++ /dev/null @@ -1,66327 +0,0 @@ -# This file is part of systemd. -# -# Data imported from: http://pci-ids.ucw.cz/v2.2/pci.ids - -pci:v00000010* - ID_VENDOR_FROM_DATABASE=Allied Telesis, Inc (Wrong ID) - -pci:v00000010d00008139* - ID_PRODUCT_FROM_DATABASE=AT-2500TX V3 Ethernet - -pci:v0000001C* - ID_VENDOR_FROM_DATABASE=PEAK-System Technik GmbH - -pci:v0000001Cd00000001* - ID_PRODUCT_FROM_DATABASE=PCAN-PCI CAN-Bus controller - -pci:v0000001Cd00000001sv0000001Csd00000004* - ID_PRODUCT_FROM_DATABASE=2 Channel CAN Bus SJC1000 - -pci:v0000001Cd00000001sv0000001Csd00000005* - ID_PRODUCT_FROM_DATABASE=2 Channel CAN Bus SJC1000 (Optically Isolated) - -pci:v0000003D* - ID_VENDOR_FROM_DATABASE=Lockheed Martin-Marietta Corp - -pci:v00000059* - ID_VENDOR_FROM_DATABASE=Tiger Jet Network Inc. (Wrong ID) - -pci:v00000070* - ID_VENDOR_FROM_DATABASE=Hauppauge computer works Inc. - -pci:v00000070d00007801* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-1800 MCE - -pci:v00000071* - ID_VENDOR_FROM_DATABASE=Nebula Electronics Ltd. - -pci:v00000095* - ID_VENDOR_FROM_DATABASE=Silicon Image, Inc. (Wrong ID) - -pci:v00000095d00000680* - ID_PRODUCT_FROM_DATABASE=Ultra ATA/133 IDE RAID CONTROLLER CARD - -pci:v000000A7* - ID_VENDOR_FROM_DATABASE=Teles AG (Wrong ID) - -pci:v00000100* - ID_VENDOR_FROM_DATABASE=Ncipher Corp Ltd - -pci:v00000123* - ID_VENDOR_FROM_DATABASE=General Dynamics - -pci:v0000018A* - ID_VENDOR_FROM_DATABASE=LevelOne - -pci:v0000018Ad00000106* - ID_PRODUCT_FROM_DATABASE=FPC-0106TX misprogrammed [RTL81xx] - -pci:v0000021B* - ID_VENDOR_FROM_DATABASE=Compaq Computer Corporation - -pci:v0000021Bd00008139* - ID_PRODUCT_FROM_DATABASE=HNE-300 (RealTek RTL8139c) [iPaq Networking] - -pci:v00000270* - ID_VENDOR_FROM_DATABASE=Hauppauge computer works Inc. (Wrong ID) - -pci:v000002AC* - ID_VENDOR_FROM_DATABASE=SpeedStream - -pci:v000002ACd00001012* - ID_PRODUCT_FROM_DATABASE=1012 PCMCIA 10/100 Ethernet Card [RTL81xx] - -pci:v00000303* - ID_VENDOR_FROM_DATABASE=Hewlett-Packard Company (Wrong ID) - -pci:v00000308* - ID_VENDOR_FROM_DATABASE=ZyXEL Communications Corporation (Wrong ID) - -pci:v00000315* - ID_VENDOR_FROM_DATABASE=SK-Electronics Co., Ltd. - -pci:v00000357* - ID_VENDOR_FROM_DATABASE=TTTech Computertechnik AG (Wrong ID) - -pci:v00000357d0000000A* - ID_PRODUCT_FROM_DATABASE=TTP-Monitoring Card V2.0 - -pci:v00000432* - ID_VENDOR_FROM_DATABASE=SCM Microsystems, Inc. - -pci:v00000432d00000001* - ID_PRODUCT_FROM_DATABASE=Pluto2 DVB-T Receiver for PCMCIA [EasyWatch MobilSet] - -pci:v00000675* - ID_VENDOR_FROM_DATABASE=Dynalink - -pci:v00000675d00001700* - ID_PRODUCT_FROM_DATABASE=IS64PH ISDN Adapter - -pci:v00000675d00001702* - ID_PRODUCT_FROM_DATABASE=IS64PH ISDN Adapter - -pci:v00000675d00001703* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) - -pci:v00000675d00001704* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter (PCI Bus, D, C) - -pci:v00000721* - ID_VENDOR_FROM_DATABASE=Sapphire, Inc. - -pci:v00000777* - ID_VENDOR_FROM_DATABASE=Ubiquiti Networks, Inc. - -pci:v00000795* - ID_VENDOR_FROM_DATABASE=Wired Inc. - -pci:v00000795d00006663* - ID_PRODUCT_FROM_DATABASE=Butane II (MPEG2 encoder board) - -pci:v00000795d00006666* - ID_PRODUCT_FROM_DATABASE=MediaPress (MPEG2 encoder board) - -pci:v000007D1* - ID_VENDOR_FROM_DATABASE=D-Link System Inc - -pci:v00000925* - ID_VENDOR_FROM_DATABASE=VIA Technologies, Inc. (Wrong ID) - -pci:v00000A89* - ID_VENDOR_FROM_DATABASE=BREA Technologies Inc - -pci:v00000B0B* - ID_VENDOR_FROM_DATABASE=Rhino Equipment Corp. - -pci:v00000B0Bd00000105* - ID_PRODUCT_FROM_DATABASE=Rhino R1T1 - -pci:v00000B0Bd00000205* - ID_PRODUCT_FROM_DATABASE=Rhino R4FXO - -pci:v00000B0Bd00000206* - ID_PRODUCT_FROM_DATABASE=RCB4FXO 4-channel FXO analog telphony card - -pci:v00000B0Bd00000305* - ID_PRODUCT_FROM_DATABASE=Rhino R4T1 - -pci:v00000B0Bd00000405* - ID_PRODUCT_FROM_DATABASE=Rhino R8FXX - -pci:v00000B0Bd00000406* - ID_PRODUCT_FROM_DATABASE=RCB8FXX 8-channel modular analog telphony card - -pci:v00000B0Bd00000505* - ID_PRODUCT_FROM_DATABASE=Rhino R24FXX - -pci:v00000B0Bd00000506* - ID_PRODUCT_FROM_DATABASE=RCB24FXS 24-Channel FXS analog telphony card - -pci:v00000B0Bd00000605* - ID_PRODUCT_FROM_DATABASE=Rhino R2T1 - -pci:v00000B0Bd00000705* - ID_PRODUCT_FROM_DATABASE=Rhino R24FXS - -pci:v00000B0Bd00000706* - ID_PRODUCT_FROM_DATABASE=RCB24FXO 24-Channel FXO analog telphony card - -pci:v00000B0Bd00000905* - ID_PRODUCT_FROM_DATABASE=R1T3 Single T3 Digital Telephony Card - -pci:v00000B0Bd00000906* - ID_PRODUCT_FROM_DATABASE=RCB24FXX 24-channel modular analog telphony card - -pci:v00000B0Bd00000A06* - ID_PRODUCT_FROM_DATABASE=RCB672FXX 672-channel modular analog telphony card - -pci:v00000E11* - ID_VENDOR_FROM_DATABASE=Compaq Computer Corporation - -pci:v00000E11d00000001* - ID_PRODUCT_FROM_DATABASE=PCI to EISA Bridge - -pci:v00000E11d00000002* - ID_PRODUCT_FROM_DATABASE=PCI to ISA Bridge - -pci:v00000E11d00000046* - ID_PRODUCT_FROM_DATABASE=Smart Array 64xx - -pci:v00000E11d00000046sv00000E11sd00004091* - ID_PRODUCT_FROM_DATABASE=Smart Array 6i - -pci:v00000E11d00000046sv00000E11sd0000409A* - ID_PRODUCT_FROM_DATABASE=Smart Array 641 - -pci:v00000E11d00000046sv00000E11sd0000409B* - ID_PRODUCT_FROM_DATABASE=Smart Array 642 - -pci:v00000E11d00000046sv00000E11sd0000409C* - ID_PRODUCT_FROM_DATABASE=Smart Array 6400 - -pci:v00000E11d00000046sv00000E11sd0000409D* - ID_PRODUCT_FROM_DATABASE=Smart Array 6400 EM - -pci:v00000E11d00000049* - ID_PRODUCT_FROM_DATABASE=NC7132 Gigabit Upgrade Module - -pci:v00000E11d0000004A* - ID_PRODUCT_FROM_DATABASE=NC6136 Gigabit Server Adapter - -pci:v00000E11d0000005A* - ID_PRODUCT_FROM_DATABASE=Remote Insight II board - Lights-Out - -pci:v00000E11d0000007C* - ID_PRODUCT_FROM_DATABASE=NC7770 1000BaseTX - -pci:v00000E11d0000007D* - ID_PRODUCT_FROM_DATABASE=NC6770 1000BaseTX - -pci:v00000E11d00000085* - ID_PRODUCT_FROM_DATABASE=NC7780 1000BaseTX - -pci:v00000E11d000000B1* - ID_PRODUCT_FROM_DATABASE=Remote Insight II board - PCI device - -pci:v00000E11d000000BB* - ID_PRODUCT_FROM_DATABASE=NC7760 - -pci:v00000E11d000000CA* - ID_PRODUCT_FROM_DATABASE=NC7771 - -pci:v00000E11d000000CB* - ID_PRODUCT_FROM_DATABASE=NC7781 - -pci:v00000E11d000000CF* - ID_PRODUCT_FROM_DATABASE=NC7772 - -pci:v00000E11d000000D0* - ID_PRODUCT_FROM_DATABASE=NC7782 - -pci:v00000E11d000000D1* - ID_PRODUCT_FROM_DATABASE=NC7783 - -pci:v00000E11d000000E3* - ID_PRODUCT_FROM_DATABASE=NC7761 - -pci:v00000E11d00000508* - ID_PRODUCT_FROM_DATABASE=Netelligent 4/16 Token Ring - -pci:v00000E11d00001000* - ID_PRODUCT_FROM_DATABASE=Triflex/Pentium Bridge, Model 1000 - -pci:v00000E11d00002000* - ID_PRODUCT_FROM_DATABASE=Triflex/Pentium Bridge, Model 2000 - -pci:v00000E11d00003032* - ID_PRODUCT_FROM_DATABASE=QVision 1280/p - -pci:v00000E11d00003033* - ID_PRODUCT_FROM_DATABASE=QVision 1280/p - -pci:v00000E11d00003034* - ID_PRODUCT_FROM_DATABASE=QVision 1280/p - -pci:v00000E11d00004000* - ID_PRODUCT_FROM_DATABASE=4000 [Triflex] - -pci:v00000E11d00004040* - ID_PRODUCT_FROM_DATABASE=Integrated Array - -pci:v00000E11d00004048* - ID_PRODUCT_FROM_DATABASE=Compaq Raid LC2 - -pci:v00000E11d00004050* - ID_PRODUCT_FROM_DATABASE=Smart Array 4200 - -pci:v00000E11d00004051* - ID_PRODUCT_FROM_DATABASE=Smart Array 4250ES - -pci:v00000E11d00004058* - ID_PRODUCT_FROM_DATABASE=Smart Array 431 - -pci:v00000E11d00004070* - ID_PRODUCT_FROM_DATABASE=Smart Array 5300 - -pci:v00000E11d00004080* - ID_PRODUCT_FROM_DATABASE=Smart Array 5i - -pci:v00000E11d00004082* - ID_PRODUCT_FROM_DATABASE=Smart Array 532 - -pci:v00000E11d00004083* - ID_PRODUCT_FROM_DATABASE=Smart Array 5312 - -pci:v00000E11d00004091* - ID_PRODUCT_FROM_DATABASE=Smart Array 6i - -pci:v00000E11d0000409A* - ID_PRODUCT_FROM_DATABASE=Smart Array 641 - -pci:v00000E11d0000409B* - ID_PRODUCT_FROM_DATABASE=Smart Array 642 - -pci:v00000E11d0000409C* - ID_PRODUCT_FROM_DATABASE=Smart Array 6400 - -pci:v00000E11d0000409D* - ID_PRODUCT_FROM_DATABASE=Smart Array 6400 EM - -pci:v00000E11d00006010* - ID_PRODUCT_FROM_DATABASE=HotPlug PCI Bridge 6010 - -pci:v00000E11d00007020* - ID_PRODUCT_FROM_DATABASE=USB Controller - -pci:v00000E11d0000A0EC* - ID_PRODUCT_FROM_DATABASE=Fibre Channel Host Controller - -pci:v00000E11d0000A0F0* - ID_PRODUCT_FROM_DATABASE=Advanced System Management Controller - -pci:v00000E11d0000A0F0sv00000E11sd0000B0F3* - ID_PRODUCT_FROM_DATABASE=ProLiant DL360 - -pci:v00000E11d0000A0F3* - ID_PRODUCT_FROM_DATABASE=Triflex PCI to ISA Bridge - -pci:v00000E11d0000A0F7* - ID_PRODUCT_FROM_DATABASE=PCI Hotplug Controller - -pci:v00000E11d0000A0F7sv00008086sd0000002A* - ID_PRODUCT_FROM_DATABASE=PCI Hotplug Controller A - -pci:v00000E11d0000A0F7sv00008086sd0000002B* - ID_PRODUCT_FROM_DATABASE=PCI Hotplug Controller B - -pci:v00000E11d0000A0F8* - ID_PRODUCT_FROM_DATABASE=ZFMicro Chipset USB - -pci:v00000E11d0000A0FC* - ID_PRODUCT_FROM_DATABASE=FibreChannel HBA Tachyon - -pci:v00000E11d0000AE10* - ID_PRODUCT_FROM_DATABASE=Smart-2/P RAID Controller - -pci:v00000E11d0000AE10sv00000E11sd00004030* - ID_PRODUCT_FROM_DATABASE=Smart-2/P Array Controller - -pci:v00000E11d0000AE10sv00000E11sd00004031* - ID_PRODUCT_FROM_DATABASE=Smart-2SL Array Controller - -pci:v00000E11d0000AE10sv00000E11sd00004032* - ID_PRODUCT_FROM_DATABASE=Smart Array 3200 Controller - -pci:v00000E11d0000AE10sv00000E11sd00004033* - ID_PRODUCT_FROM_DATABASE=Smart Array 3100ES Controller - -pci:v00000E11d0000AE10sv00000E11sd00004034* - ID_PRODUCT_FROM_DATABASE=Smart Array 221 Controller - -pci:v00000E11d0000AE29* - ID_PRODUCT_FROM_DATABASE=MIS-L - -pci:v00000E11d0000AE2A* - ID_PRODUCT_FROM_DATABASE=MPC - -pci:v00000E11d0000AE2B* - ID_PRODUCT_FROM_DATABASE=MIS-E - -pci:v00000E11d0000AE31* - ID_PRODUCT_FROM_DATABASE=System Management Controller - -pci:v00000E11d0000AE32* - ID_PRODUCT_FROM_DATABASE=Netelligent 10/100 TX PCI UTP - -pci:v00000E11d0000AE33* - ID_PRODUCT_FROM_DATABASE=Triflex Dual EIDE Controller - -pci:v00000E11d0000AE34* - ID_PRODUCT_FROM_DATABASE=Netelligent 10 T PCI UTP - -pci:v00000E11d0000AE35* - ID_PRODUCT_FROM_DATABASE=Integrated NetFlex-3/P - -pci:v00000E11d0000AE40* - ID_PRODUCT_FROM_DATABASE=Netelligent Dual 10/100 TX PCI UTP - -pci:v00000E11d0000AE43* - ID_PRODUCT_FROM_DATABASE=Netelligent Integrated 10/100 TX UTP - -pci:v00000E11d0000AE69* - ID_PRODUCT_FROM_DATABASE=CETUS-L - -pci:v00000E11d0000AE6C* - ID_PRODUCT_FROM_DATABASE=Northstar - -pci:v00000E11d0000AE6D* - ID_PRODUCT_FROM_DATABASE=NorthStar CPU to PCI Bridge - -pci:v00000E11d0000B011* - ID_PRODUCT_FROM_DATABASE=Netelligent 10/100 TX Embedded UTP - -pci:v00000E11d0000B012* - ID_PRODUCT_FROM_DATABASE=Netelligent 10 T/2 PCI UTP/Coax - -pci:v00000E11d0000B01E* - ID_PRODUCT_FROM_DATABASE=NC3120 Fast Ethernet NIC - -pci:v00000E11d0000B01F* - ID_PRODUCT_FROM_DATABASE=NC3122 Fast Ethernet NIC - -pci:v00000E11d0000B02F* - ID_PRODUCT_FROM_DATABASE=NC1120 Ethernet NIC - -pci:v00000E11d0000B030* - ID_PRODUCT_FROM_DATABASE=Netelligent 10/100 TX UTP - -pci:v00000E11d0000B04A* - ID_PRODUCT_FROM_DATABASE=10/100 TX PCI Intel WOL UTP Controller - -pci:v00000E11d0000B060* - ID_PRODUCT_FROM_DATABASE=Smart Array 5300 Controller - -pci:v00000E11d0000B0C6* - ID_PRODUCT_FROM_DATABASE=NC3161 Fast Ethernet NIC - -pci:v00000E11d0000B0C7* - ID_PRODUCT_FROM_DATABASE=NC3160 Fast Ethernet NIC - -pci:v00000E11d0000B0D7* - ID_PRODUCT_FROM_DATABASE=NC3121 Fast Ethernet NIC - -pci:v00000E11d0000B0DD* - ID_PRODUCT_FROM_DATABASE=NC3131 Fast Ethernet NIC - -pci:v00000E11d0000B0DE* - ID_PRODUCT_FROM_DATABASE=NC3132 Fast Ethernet Module - -pci:v00000E11d0000B0DF* - ID_PRODUCT_FROM_DATABASE=NC6132 Gigabit Module - -pci:v00000E11d0000B0E0* - ID_PRODUCT_FROM_DATABASE=NC6133 Gigabit Module - -pci:v00000E11d0000B0E1* - ID_PRODUCT_FROM_DATABASE=NC3133 Fast Ethernet Module - -pci:v00000E11d0000B123* - ID_PRODUCT_FROM_DATABASE=NC6134 Gigabit NIC - -pci:v00000E11d0000B134* - ID_PRODUCT_FROM_DATABASE=NC3163 Fast Ethernet NIC - -pci:v00000E11d0000B13C* - ID_PRODUCT_FROM_DATABASE=NC3162 Fast Ethernet NIC - -pci:v00000E11d0000B144* - ID_PRODUCT_FROM_DATABASE=NC3123 Fast Ethernet NIC - -pci:v00000E11d0000B163* - ID_PRODUCT_FROM_DATABASE=NC3134 Fast Ethernet NIC - -pci:v00000E11d0000B164* - ID_PRODUCT_FROM_DATABASE=NC3165 Fast Ethernet Upgrade Module - -pci:v00000E11d0000B178* - ID_PRODUCT_FROM_DATABASE=Smart Array 5i/532 - -pci:v00000E11d0000B178sv00000E11sd00004080* - ID_PRODUCT_FROM_DATABASE=Smart Array 5i - -pci:v00000E11d0000B178sv00000E11sd00004082* - ID_PRODUCT_FROM_DATABASE=Smart Array 532 - -pci:v00000E11d0000B178sv00000E11sd00004083* - ID_PRODUCT_FROM_DATABASE=Smart Array 5312 - -pci:v00000E11d0000B1A4* - ID_PRODUCT_FROM_DATABASE=NC7131 Gigabit Server Adapter - -pci:v00000E11d0000B200* - ID_PRODUCT_FROM_DATABASE=Memory Hot-Plug Controller - -pci:v00000E11d0000B203* - ID_PRODUCT_FROM_DATABASE=Integrated Lights Out Controller - -pci:v00000E11d0000B204* - ID_PRODUCT_FROM_DATABASE=Integrated Lights Out Processor - -pci:v00000E11d0000C000* - ID_PRODUCT_FROM_DATABASE=Remote Insight Lights-Out Edition - -pci:v00000E11d0000F130* - ID_PRODUCT_FROM_DATABASE=NetFlex-3/P ThunderLAN 1.0 - -pci:v00000E11d0000F150* - ID_PRODUCT_FROM_DATABASE=NetFlex-3/P ThunderLAN 2.3 - -pci:v00000EAC* - ID_VENDOR_FROM_DATABASE=SHF Communication Technologies AG - -pci:v00000EACd00000008* - ID_PRODUCT_FROM_DATABASE=Ethernet Powerlink Managing Node 01 - -pci:v00000F62* - ID_VENDOR_FROM_DATABASE=Acrox Technologies Co., Ltd. - -pci:v00001000* - ID_VENDOR_FROM_DATABASE=LSI Logic / Symbios Logic - -pci:v00001000d00000001* - ID_PRODUCT_FROM_DATABASE=53c810 - -pci:v00001000d00000001sv00001000sd00001000* - ID_PRODUCT_FROM_DATABASE=LSI53C810AE PCI to SCSI I/O Processor - -pci:v00001000d00000002* - ID_PRODUCT_FROM_DATABASE=53c820 - -pci:v00001000d00000003* - ID_PRODUCT_FROM_DATABASE=53c825 - -pci:v00001000d00000003sv00001000sd00001000* - ID_PRODUCT_FROM_DATABASE=LSI53C825AE PCI to SCSI I/O Processor (Ultra Wide) - -pci:v00001000d00000004* - ID_PRODUCT_FROM_DATABASE=53c815 - -pci:v00001000d00000005* - ID_PRODUCT_FROM_DATABASE=53c810AP - -pci:v00001000d00000006* - ID_PRODUCT_FROM_DATABASE=53c860 - -pci:v00001000d00000006sv00001000sd00001000* - ID_PRODUCT_FROM_DATABASE=LSI53C860E PCI to Ultra SCSI I/O Processor - -pci:v00001000d0000000A* - ID_PRODUCT_FROM_DATABASE=53c1510 - -pci:v00001000d0000000Asv00000E11sd0000B143* - ID_PRODUCT_FROM_DATABASE=Integrated Dual Channel Wide Ultra2 SCSI Controller - -pci:v00001000d0000000Asv00001000sd00001000* - ID_PRODUCT_FROM_DATABASE=LSI53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Nonintelligent mode) - -pci:v00001000d0000000B* - ID_PRODUCT_FROM_DATABASE=53C896/897 - -pci:v00001000d0000000Bsv00000E11sd00006004* - ID_PRODUCT_FROM_DATABASE=EOB003 Series SCSI host adapter - -pci:v00001000d0000000Bsv00001000sd00001000* - ID_PRODUCT_FROM_DATABASE=LSI53C896/7 PCI to Dual Channel Ultra2 SCSI Multifunction Controller - -pci:v00001000d0000000Bsv00001000sd00001010* - ID_PRODUCT_FROM_DATABASE=LSI22910 PCI to Dual Channel Ultra2 SCSI host adapter - -pci:v00001000d0000000Bsv00001000sd00001020* - ID_PRODUCT_FROM_DATABASE=LSI21002 PCI to Dual Channel Ultra2 SCSI host adapter - -pci:v00001000d0000000Bsv000013E9sd00001000* - ID_PRODUCT_FROM_DATABASE=6221L-4U (Dual U2W SCSI, dual 10/100TX, graphics) - -pci:v00001000d0000000C* - ID_PRODUCT_FROM_DATABASE=53c895 - -pci:v00001000d0000000Csv00001000sd00001010* - ID_PRODUCT_FROM_DATABASE=LSI8951U PCI to Ultra2 SCSI host adapter - -pci:v00001000d0000000Csv00001000sd00001020* - ID_PRODUCT_FROM_DATABASE=LSI8952U PCI to Ultra2 SCSI host adapter - -pci:v00001000d0000000Csv00001DE1sd00003906* - ID_PRODUCT_FROM_DATABASE=DC-390U2B SCSI adapter - -pci:v00001000d0000000Csv00001DE1sd00003907* - ID_PRODUCT_FROM_DATABASE=DC-390U2W - -pci:v00001000d0000000D* - ID_PRODUCT_FROM_DATABASE=53c885 - -pci:v00001000d0000000F* - ID_PRODUCT_FROM_DATABASE=53c875 - -pci:v00001000d0000000Fsv00000E11sd00007004* - ID_PRODUCT_FROM_DATABASE=Embedded Ultra Wide SCSI Controller - -pci:v00001000d0000000Fsv00001000sd00001000* - ID_PRODUCT_FROM_DATABASE=LSI53C876/E PCI to Dual Channel SCSI Controller - -pci:v00001000d0000000Fsv00001000sd00001010* - ID_PRODUCT_FROM_DATABASE=LSI22801 PCI to Dual Channel Ultra SCSI host adapter - -pci:v00001000d0000000Fsv00001000sd00001020* - ID_PRODUCT_FROM_DATABASE=LSI22802 PCI to Dual Channel Ultra SCSI host adapter - -pci:v00001000d0000000Fsv00001092sd00008760* - ID_PRODUCT_FROM_DATABASE=FirePort 40 Dual SCSI Controller - -pci:v00001000d0000000Fsv00001775sd000010D0* - ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer Wide Ultra SCSI - -pci:v00001000d0000000Fsv00001775sd000010D1* - ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer Ultra SCSI - -pci:v00001000d0000000Fsv00001DE1sd00003904* - ID_PRODUCT_FROM_DATABASE=DC390F/U Ultra Wide SCSI Adapter - -pci:v00001000d0000000Fsv00004C53sd00001000* - ID_PRODUCT_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard - -pci:v00001000d0000000Fsv00004C53sd00001050* - ID_PRODUCT_FROM_DATABASE=CT7 mainboard - -pci:v00001000d00000010* - ID_PRODUCT_FROM_DATABASE=53C1510 - -pci:v00001000d00000010sv00000E11sd00004040* - ID_PRODUCT_FROM_DATABASE=Integrated Smart Array Controller - -pci:v00001000d00000010sv00000E11sd00004048* - ID_PRODUCT_FROM_DATABASE=RAID LC2 Controller - -pci:v00001000d00000010sv00001000sd00001000* - ID_PRODUCT_FROM_DATABASE=53C1510 PCI to Dual Channel Wide Ultra2 SCSI Controller (Intelligent mode) - -pci:v00001000d00000012* - ID_PRODUCT_FROM_DATABASE=53c895a - -pci:v00001000d00000012sv00001000sd00001000* - ID_PRODUCT_FROM_DATABASE=LSI53C895A PCI to Ultra2 SCSI Controller - -pci:v00001000d00000013* - ID_PRODUCT_FROM_DATABASE=53c875a - -pci:v00001000d00000013sv00001000sd00001000* - ID_PRODUCT_FROM_DATABASE=LSI53C875A PCI to Ultra SCSI Controller - -pci:v00001000d00000020* - ID_PRODUCT_FROM_DATABASE=53c1010 Ultra3 SCSI Adapter - -pci:v00001000d00000020sv00001000sd00001000* - ID_PRODUCT_FROM_DATABASE=LSI53C1010-33 PCI to Dual Channel Ultra160 SCSI Controller - -pci:v00001000d00000020sv0000107Bsd00001040* - ID_PRODUCT_FROM_DATABASE=Server Onboard 53C1010-33 - -pci:v00001000d00000020sv00001DE1sd00001020* - ID_PRODUCT_FROM_DATABASE=DC-390U3W - -pci:v00001000d00000021* - ID_PRODUCT_FROM_DATABASE=53c1010 66MHz Ultra3 SCSI Adapter - -pci:v00001000d00000021sv00001000sd00001000* - ID_PRODUCT_FROM_DATABASE=LSI53C1000/1000R/1010R/1010-66 PCI to Ultra160 SCSI Controller - -pci:v00001000d00000021sv00001000sd00001010* - ID_PRODUCT_FROM_DATABASE=Asus TR-DLS onboard 53C1010-66 - -pci:v00001000d00000021sv0000103Csd00001300* - ID_PRODUCT_FROM_DATABASE=Ultra160 SCSI [AB306A] - -pci:v00001000d00000021sv0000103Csd00001310* - ID_PRODUCT_FROM_DATABASE=Ultra160 SCSI [A9918A] - -pci:v00001000d00000021sv0000103Csd00001330* - ID_PRODUCT_FROM_DATABASE=Ultra160 SCSI [A7059A] - -pci:v00001000d00000021sv0000103Csd00001340* - ID_PRODUCT_FROM_DATABASE=Ultra160 SCSI [A7060A] - -pci:v00001000d00000021sv0000124Bsd00001070* - ID_PRODUCT_FROM_DATABASE=PMC-USCSI3 - -pci:v00001000d00000021sv00004C53sd00001080* - ID_PRODUCT_FROM_DATABASE=CT8 mainboard - -pci:v00001000d00000021sv00004C53sd00001300* - ID_PRODUCT_FROM_DATABASE=P017 mezzanine (32-bit PMC) - -pci:v00001000d00000021sv00004C53sd00001310* - ID_PRODUCT_FROM_DATABASE=P017 mezzanine (64-bit PMC) - -pci:v00001000d0000002F* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 2208 IOV [Thunderbolt] - -pci:v00001000d0000002Fsv00001028sd00001F3E* - ID_PRODUCT_FROM_DATABASE=SPERC 8 - -pci:v00001000d00000030* - ID_PRODUCT_FROM_DATABASE=53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI - -pci:v00001000d00000030sv00000E11sd000000DA* - ID_PRODUCT_FROM_DATABASE=ProLiant ML 350 - -pci:v00001000d00000030sv00001028sd00000123* - ID_PRODUCT_FROM_DATABASE=LSI Logic 1020/1030 - -pci:v00001000d00000030sv00001028sd0000014A* - ID_PRODUCT_FROM_DATABASE=LSI Logic 1020/1030 - -pci:v00001000d00000030sv00001028sd0000016C* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1850 MPT Fusion SCSI/RAID (Perc 4) - -pci:v00001000d00000030sv00001028sd00000183* - ID_PRODUCT_FROM_DATABASE=LSI Logic 1020/1030 - -pci:v00001000d00000030sv00001028sd0000018A* - ID_PRODUCT_FROM_DATABASE=PERC 4/IM - -pci:v00001000d00000030sv00001028sd00001010* - ID_PRODUCT_FROM_DATABASE=LSI U320 SCSI Controller - -pci:v00001000d00000030sv0000103Csd000012C5* - ID_PRODUCT_FROM_DATABASE=Ultra320 SCSI [A7173A] - -pci:v00001000d00000030sv0000103Csd00001323* - ID_PRODUCT_FROM_DATABASE=Core I/O LAN/SCSI Combo [AB314A] - -pci:v00001000d00000030sv0000103Csd00003108* - ID_PRODUCT_FROM_DATABASE=Single Channel Ultra320 SCSI HBA G2 - -pci:v00001000d00000030sv0000124Bsd00001170* - ID_PRODUCT_FROM_DATABASE=PMC-USCSI320 - -pci:v00001000d00000030sv000015ADsd00001976* - ID_PRODUCT_FROM_DATABASE=LSI Logic Parallel SCSI Controller - -pci:v00001000d00000030sv00001734sd00001052* - ID_PRODUCT_FROM_DATABASE=PRIMERGY BX/RX/TX S2 series onboard SCSI(IME) - -pci:v00001000d00000031* - ID_PRODUCT_FROM_DATABASE=53c1030ZC PCI-X Fusion-MPT Dual Ultra320 SCSI - -pci:v00001000d00000032* - ID_PRODUCT_FROM_DATABASE=53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI - -pci:v00001000d00000032sv00001000sd00001000* - ID_PRODUCT_FROM_DATABASE=LSI53C1020/1030 PCI-X to Ultra320 SCSI Controller - -pci:v00001000d00000033* - ID_PRODUCT_FROM_DATABASE=1030ZC_53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI - -pci:v00001000d00000040* - ID_PRODUCT_FROM_DATABASE=53c1035 PCI-X Fusion-MPT Dual Ultra320 SCSI - -pci:v00001000d00000040sv00001000sd00000033* - ID_PRODUCT_FROM_DATABASE=MegaRAID SCSI 320-2XR - -pci:v00001000d00000040sv00001000sd00000066* - ID_PRODUCT_FROM_DATABASE=MegaRAID SCSI 320-2XRWS - -pci:v00001000d00000041* - ID_PRODUCT_FROM_DATABASE=53C1035ZC PCI-X Fusion-MPT Dual Ultra320 SCSI - -pci:v00001000d00000050* - ID_PRODUCT_FROM_DATABASE=SAS1064 PCI-X Fusion-MPT SAS - -pci:v00001000d00000050sv00001028sd00001F04* - ID_PRODUCT_FROM_DATABASE=SAS 5/E - -pci:v00001000d00000050sv00001028sd00001F09* - ID_PRODUCT_FROM_DATABASE=SAS 5i/R - -pci:v00001000d00000054* - ID_PRODUCT_FROM_DATABASE=SAS1068 PCI-X Fusion-MPT SAS - -pci:v00001000d00000054sv00001028sd00001F04* - ID_PRODUCT_FROM_DATABASE=SAS 5/E Adapter Controller - -pci:v00001000d00000054sv00001028sd00001F05* - ID_PRODUCT_FROM_DATABASE=SAS 5/i Adapter Controller - -pci:v00001000d00000054sv00001028sd00001F06* - ID_PRODUCT_FROM_DATABASE=SAS 5/i Integrated Controller - -pci:v00001000d00000054sv00001028sd00001F07* - ID_PRODUCT_FROM_DATABASE=SAS 5/iR Integrated RAID Controller - -pci:v00001000d00000054sv00001028sd00001F08* - ID_PRODUCT_FROM_DATABASE=SAS 5/iR Integrated RAID Controller - -pci:v00001000d00000054sv00001028sd00001F09* - ID_PRODUCT_FROM_DATABASE=SAS 5/iR Adapter RAID Controller - -pci:v00001000d00000054sv000015ADsd00001976* - ID_PRODUCT_FROM_DATABASE=SAS Controller - -pci:v00001000d00000055* - ID_PRODUCT_FROM_DATABASE=SAS1068 PCI-X Fusion-MPT SAS - -pci:v00001000d00000055sv00001033sd00008336* - ID_PRODUCT_FROM_DATABASE=SAS1068 - -pci:v00001000d00000056* - ID_PRODUCT_FROM_DATABASE=SAS1064ET PCI-Express Fusion-MPT SAS - -pci:v00001000d00000056sv00001014sd000003BB* - ID_PRODUCT_FROM_DATABASE=ServeRAID BR10il SAS/SATA Controller v2 - -pci:v00001000d00000057* - ID_PRODUCT_FROM_DATABASE=M1064E MegaRAID SAS - -pci:v00001000d00000057sv00008086sd0000346C* - ID_PRODUCT_FROM_DATABASE=Embedded Software RAID Technology II (ESTRII) - -pci:v00001000d00000058* - ID_PRODUCT_FROM_DATABASE=SAS1068E PCI-Express Fusion-MPT SAS - -pci:v00001000d00000058sv00001000sd00003140* - ID_PRODUCT_FROM_DATABASE=SAS3081E-R 8-Port SAS/SATA Host Bus Adapter - -pci:v00001000d00000058sv00001028sd0000021D* - ID_PRODUCT_FROM_DATABASE=SAS 6/iR Integrated Workstations RAID Controller - -pci:v00001000d00000058sv00001028sd00001F0E* - ID_PRODUCT_FROM_DATABASE=SAS 6/iR Adapter RAID Controller - -pci:v00001000d00000058sv00001028sd00001F0F* - ID_PRODUCT_FROM_DATABASE=SAS 6/iR Integrated Blades RAID Controller - -pci:v00001000d00000058sv00001028sd00001F10* - ID_PRODUCT_FROM_DATABASE=SAS 6/iR Integrated RAID Controller - -pci:v00001000d00000058sv0000103Csd00003229* - ID_PRODUCT_FROM_DATABASE=SC44Ge Host Bus Adapter - -pci:v00001000d00000059* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 8208ELP/8208ELP - -pci:v00001000d0000005A* - ID_PRODUCT_FROM_DATABASE=SAS1066E PCI-Express Fusion-MPT SAS - -pci:v00001000d0000005B* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 2208 [Thunderbolt] - -pci:v00001000d0000005Bsv00001000sd00009265* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9265-8i - -pci:v00001000d0000005Bsv00001000sd00009266* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9266-8i - -pci:v00001000d0000005Bsv00001000sd00009267* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9267-8i - -pci:v00001000d0000005Bsv00001000sd00009268* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9265CV-8i / 9270CV-8i - -pci:v00001000d0000005Bsv00001000sd00009269* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9266-4i - -pci:v00001000d0000005Bsv00001000sd00009270* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9270-8i - -pci:v00001000d0000005Bsv00001000sd00009271* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9271-8i - -pci:v00001000d0000005Bsv00001000sd00009272* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9272-8i - -pci:v00001000d0000005Bsv00001000sd00009273* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9270CV-8i - -pci:v00001000d0000005Bsv00001000sd00009274* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9270-4i - -pci:v00001000d0000005Bsv00001000sd00009275* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9271-8iCC - -pci:v00001000d0000005Bsv00001000sd00009276* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9271-4i - -pci:v00001000d0000005Bsv00001000sd00009285* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9285-8e - -pci:v00001000d0000005Bsv00001000sd00009288* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9285CV-8e - -pci:v00001000d0000005Bsv00001000sd00009290* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9286-8e - -pci:v00001000d0000005Bsv00001000sd00009291* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9286CV-8e - -pci:v00001000d0000005Bsv00001000sd00009295* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9286CV-8eCC - -pci:v00001000d0000005Bsv00001014sd0000040B* - ID_PRODUCT_FROM_DATABASE=ServeRAID M5110 SAS/SATA Controller - -pci:v00001000d0000005Bsv00001014sd00000412* - ID_PRODUCT_FROM_DATABASE=ServeRAID M5110e SAS/SATA Controller - -pci:v00001000d0000005Bsv00001028sd00001F2D* - ID_PRODUCT_FROM_DATABASE=PERC H810 Adapter - -pci:v00001000d0000005Bsv00001028sd00001F30* - ID_PRODUCT_FROM_DATABASE=PERC H710 Embedded - -pci:v00001000d0000005Bsv00001028sd00001F31* - ID_PRODUCT_FROM_DATABASE=PERC H710P Adapter - -pci:v00001000d0000005Bsv00001028sd00001F33* - ID_PRODUCT_FROM_DATABASE=PERC H710P Mini (for blades) - -pci:v00001000d0000005Bsv00001028sd00001F34* - ID_PRODUCT_FROM_DATABASE=PERC H710P Mini (for monolithics) - -pci:v00001000d0000005Bsv00001028sd00001F35* - ID_PRODUCT_FROM_DATABASE=PERC H710 Adapter - -pci:v00001000d0000005Bsv00001028sd00001F37* - ID_PRODUCT_FROM_DATABASE=PERC H710 Mini (for blades) - -pci:v00001000d0000005Bsv00001028sd00001F38* - ID_PRODUCT_FROM_DATABASE=PERC H710 Mini (for monolithics) - -pci:v00001000d0000005Bsv00008086sd00003513* - ID_PRODUCT_FROM_DATABASE=RMS25CB080 RAID Controller - -pci:v00001000d0000005C* - ID_PRODUCT_FROM_DATABASE=SAS1064A PCI-X Fusion-MPT SAS - -pci:v00001000d0000005D* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS-3 3108 [Invader] - -pci:v00001000d0000005E* - ID_PRODUCT_FROM_DATABASE=SAS1066 PCI-X Fusion-MPT SAS - -pci:v00001000d0000005F* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS-3 3008 [Fury] - -pci:v00001000d00000060* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 1078 - -pci:v00001000d00000060sv00001000sd00001006* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 8888ELP - -pci:v00001000d00000060sv00001000sd0000100A* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 8708ELP - -pci:v00001000d00000060sv00001000sd0000100E* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 8884E - -pci:v00001000d00000060sv00001000sd0000100F* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 8708E - -pci:v00001000d00000060sv00001000sd00001010* - ID_PRODUCT_FROM_DATABASE=MegaRAID SATA 350-8ELP - -pci:v00001000d00000060sv00001000sd00001011* - ID_PRODUCT_FROM_DATABASE=MegaRAID SATA 350-4ELP - -pci:v00001000d00000060sv00001000sd00001012* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 8704ELP - -pci:v00001000d00000060sv00001000sd00001016* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 8880EM2 - -pci:v00001000d00000060sv00001014sd00000363* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS PCI Express ROMB - -pci:v00001000d00000060sv00001014sd00000364* - ID_PRODUCT_FROM_DATABASE=SystemX MegaRAID SAS 8808E - -pci:v00001000d00000060sv00001014sd00000365* - ID_PRODUCT_FROM_DATABASE=SystemX MegaRAID SAS 8884E - -pci:v00001000d00000060sv00001014sd00000379* - ID_PRODUCT_FROM_DATABASE=SystemX MegaRAID SAS 8880EM2 - -pci:v00001000d00000060sv00001028sd00001F0A* - ID_PRODUCT_FROM_DATABASE=PERC 6/E Adapter RAID Controller - -pci:v00001000d00000060sv00001028sd00001F0B* - ID_PRODUCT_FROM_DATABASE=PERC 6/i Adapter RAID Controller - -pci:v00001000d00000060sv00001028sd00001F0C* - ID_PRODUCT_FROM_DATABASE=PERC 6/i Integrated RAID Controller - -pci:v00001000d00000060sv00001028sd00001F0D* - ID_PRODUCT_FROM_DATABASE=PERC 6/i Integrated RAID Controller - -pci:v00001000d00000060sv00001028sd00001F11* - ID_PRODUCT_FROM_DATABASE=CERC 6/i Integrated RAID Controller - -pci:v00001000d00000060sv00001033sd0000835A* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS PCI Express ROMB - -pci:v00001000d00000060sv00001043sd0000824D* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS PCI Express ROMB - -pci:v00001000d00000060sv00001170sd0000002F* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS PCI Express ROMB - -pci:v00001000d00000060sv00001170sd00000036* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS PCI Express ROMB - -pci:v00001000d00000060sv000015D9sd0000C080* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS PCI Express ROMB - -pci:v00001000d00000060sv000017AAsd00006B7C* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS PCI Express ROMB - -pci:v00001000d00000060sv000018A1sd00000003* - ID_PRODUCT_FROM_DATABASE=LSI MegaRAID SAS PCI Express ROMB - -pci:v00001000d00000060sv00008086sd00001006* - ID_PRODUCT_FROM_DATABASE=RAID Controller SRCSAS28EP - -pci:v00001000d00000060sv00008086sd0000100A* - ID_PRODUCT_FROM_DATABASE=RAID Controller SRCSAS28EV - -pci:v00001000d00000060sv00008086sd00001010* - ID_PRODUCT_FROM_DATABASE=RAID Controller SRCSATA28E - -pci:v00001000d00000060sv00008086sd000034CC* - ID_PRODUCT_FROM_DATABASE=Integrated RAID Controller SROMBSAS28E - -pci:v00001000d00000060sv00008086sd000034CD* - ID_PRODUCT_FROM_DATABASE=Integrated RAID Controller SROMBSAS28E - -pci:v00001000d00000060sv00008086sd00003505* - ID_PRODUCT_FROM_DATABASE=Integrated RAID Controller SROMBSASMP2 - -pci:v00001000d00000062* - ID_PRODUCT_FROM_DATABASE=SAS1078 PCI-Express Fusion-MPT SAS - -pci:v00001000d00000062sv00001000sd00000062* - ID_PRODUCT_FROM_DATABASE=SAS1078 PCI-Express Fusion-MPT SAS - -pci:v00001000d00000064* - ID_PRODUCT_FROM_DATABASE=SAS2116 PCI-Express Fusion-MPT SAS-2 [Meteor] - -pci:v00001000d00000065* - ID_PRODUCT_FROM_DATABASE=SAS2116 PCI-Express Fusion-MPT SAS-2 [Meteor] - -pci:v00001000d0000006E* - ID_PRODUCT_FROM_DATABASE=SAS2308 PCI-Express Fusion-MPT SAS-2 - -pci:v00001000d00000070* - ID_PRODUCT_FROM_DATABASE=SAS2004 PCI-Express Fusion-MPT SAS-2 [Spitfire] - -pci:v00001000d00000071* - ID_PRODUCT_FROM_DATABASE=MR SAS HBA 2004 - -pci:v00001000d00000072* - ID_PRODUCT_FROM_DATABASE=SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] - -pci:v00001000d00000072sv00001028sd00001F1C* - ID_PRODUCT_FROM_DATABASE=6Gbps SAS HBA Adapter - -pci:v00001000d00000072sv00001028sd00001F1D* - ID_PRODUCT_FROM_DATABASE=PERC H200 Adapter - -pci:v00001000d00000072sv00001028sd00001F1E* - ID_PRODUCT_FROM_DATABASE=PERC H200 Integrated - -pci:v00001000d00000072sv00001028sd00001F1F* - ID_PRODUCT_FROM_DATABASE=PERC H200 Modular - -pci:v00001000d00000072sv00001028sd00001F20* - ID_PRODUCT_FROM_DATABASE=PERC H200 Embedded - -pci:v00001000d00000072sv00001028sd00001F22* - ID_PRODUCT_FROM_DATABASE=Internal Tape Adapter - -pci:v00001000d00000072sv00008086sd0000350F* - ID_PRODUCT_FROM_DATABASE=RMS2LL040 RAID Controller - -pci:v00001000d00000073* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 2008 [Falcon] - -pci:v00001000d00000073sv00001000sd00009240* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9240-8i - -pci:v00001000d00000073sv00001000sd00009241* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9240-4i - -pci:v00001000d00000073sv00001000sd000092A0* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9220-8i - -pci:v00001000d00000073sv00001014sd000003B1* - ID_PRODUCT_FROM_DATABASE=ServeRAID M1015 SAS/SATA Controller - -pci:v00001000d00000073sv00001028sd00001F4E* - ID_PRODUCT_FROM_DATABASE=PERC H310 Adapter - -pci:v00001000d00000073sv00001028sd00001F4F* - ID_PRODUCT_FROM_DATABASE=PERC H310 Integrated - -pci:v00001000d00000073sv00001028sd00001F50* - ID_PRODUCT_FROM_DATABASE=PERC H310 Mini Blades - -pci:v00001000d00000073sv00001028sd00001F51* - ID_PRODUCT_FROM_DATABASE=PERC H310 Mini Monolithics - -pci:v00001000d00000073sv00001028sd00001F52* - ID_PRODUCT_FROM_DATABASE=PERC H310 Embedded1 - -pci:v00001000d00000073sv00001028sd00001F53* - ID_PRODUCT_FROM_DATABASE=PERC H310 Embedded2 - -pci:v00001000d00000073sv00001028sd00001F54* - ID_PRODUCT_FROM_DATABASE=PERC H310 Reserved - -pci:v00001000d00000073sv00001054sd00003035* - ID_PRODUCT_FROM_DATABASE=LSI MegaRAID SAS 9240-8i - -pci:v00001000d00000073sv00001137sd00000072* - ID_PRODUCT_FROM_DATABASE=2004 iMR ROMB - -pci:v00001000d00000073sv00001137sd00000073* - ID_PRODUCT_FROM_DATABASE=2008 ROMB - -pci:v00001000d00000073sv00001137sd000000B0* - ID_PRODUCT_FROM_DATABASE=UCSC RAID SAS 2008M-8i - -pci:v00001000d00000073sv00001137sd000000B1* - ID_PRODUCT_FROM_DATABASE=UCSC RAID SAS 2008M-8i - -pci:v00001000d00000073sv000015D9sd00000400* - ID_PRODUCT_FROM_DATABASE=Supermicro SMC2008-iMR - -pci:v00001000d00000073sv00001734sd00001177* - ID_PRODUCT_FROM_DATABASE=RAID Ctrl SAS 6G 0/1 (D2607) - -pci:v00001000d00000073sv00008086sd0000350D* - ID_PRODUCT_FROM_DATABASE=RMS2AF040 RAID Controller - -pci:v00001000d00000073sv00008086sd00009240* - ID_PRODUCT_FROM_DATABASE=RAID Controller RS2WC080 - -pci:v00001000d00000073sv00008086sd00009241* - ID_PRODUCT_FROM_DATABASE=RAID Controller RS2WC040 - -pci:v00001000d00000074* - ID_PRODUCT_FROM_DATABASE=SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] - -pci:v00001000d00000076* - ID_PRODUCT_FROM_DATABASE=SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] - -pci:v00001000d00000077* - ID_PRODUCT_FROM_DATABASE=SAS2108 PCI-Express Fusion-MPT SAS-2 [Liberator] - -pci:v00001000d00000079* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 2108 [Liberator] - -pci:v00001000d00000079sv00001000sd00009251* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9260-4ix - -pci:v00001000d00000079sv00001000sd00009256* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9260-8ix - -pci:v00001000d00000079sv00001000sd00009260* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9260-4i - -pci:v00001000d00000079sv00001000sd00009261* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9260-8i - -pci:v00001000d00000079sv00001000sd00009262* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9262-8i - -pci:v00001000d00000079sv00001000sd00009263* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9261-8i - -pci:v00001000d00000079sv00001000sd00009264* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9264-8i - -pci:v00001000d00000079sv00001000sd00009267* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9260CV-4i - -pci:v00001000d00000079sv00001000sd00009268* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9260CV-8i - -pci:v00001000d00000079sv00001000sd00009275* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9280-8ex - -pci:v00001000d00000079sv00001000sd00009276* - ID_PRODUCT_FROM_DATABASE=MR9260-16i - -pci:v00001000d00000079sv00001000sd00009280* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9280-8e - -pci:v00001000d00000079sv00001000sd00009281* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9281-8E - -pci:v00001000d00000079sv00001000sd00009282* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9280-4i4e - -pci:v00001000d00000079sv00001000sd00009290* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9280DE-24i4e - -pci:v00001000d00000079sv00001014sd000003B2* - ID_PRODUCT_FROM_DATABASE=ServeRAID M5015 SAS/SATA Controller - -pci:v00001000d00000079sv00001014sd000003B3* - ID_PRODUCT_FROM_DATABASE=ServeRAID M5025 SAS/SATA Controller - -pci:v00001000d00000079sv00001028sd00001F15* - ID_PRODUCT_FROM_DATABASE=PERC H800 Adapter - -pci:v00001000d00000079sv00001028sd00001F16* - ID_PRODUCT_FROM_DATABASE=PERC H700 Adapter - -pci:v00001000d00000079sv00001028sd00001F17* - ID_PRODUCT_FROM_DATABASE=PERC H700 Integrated - -pci:v00001000d00000079sv00001028sd00001F18* - ID_PRODUCT_FROM_DATABASE=PERC H700 Modular - -pci:v00001000d00000079sv00001028sd00001F1A* - ID_PRODUCT_FROM_DATABASE=PERC H800 Proto Adapter - -pci:v00001000d00000079sv00001028sd00001F1B* - ID_PRODUCT_FROM_DATABASE=PERC H700 Integrated - -pci:v00001000d00000079sv00001043sd00008480* - ID_PRODUCT_FROM_DATABASE=PIKE-2108 16PD - -pci:v00001000d00000079sv00001734sd00001176* - ID_PRODUCT_FROM_DATABASE=RAID Ctrl SAS 6G 5/6 512MB (D2616) - -pci:v00001000d00000079sv00001734sd00001177* - ID_PRODUCT_FROM_DATABASE=RAID Ctrl SAS 6G 0/1 (D2607) - -pci:v00001000d00000079sv00008086sd00009256* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 9260DE-8i - -pci:v00001000d00000079sv00008086sd00009260* - ID_PRODUCT_FROM_DATABASE=RAID Controller RS2BL040 - -pci:v00001000d00000079sv00008086sd00009261* - ID_PRODUCT_FROM_DATABASE=RAID Controller RS2BL080 - -pci:v00001000d00000079sv00008086sd00009264* - ID_PRODUCT_FROM_DATABASE=Warm Beach (Caster Lite) - -pci:v00001000d00000079sv00008086sd00009267* - ID_PRODUCT_FROM_DATABASE=RAID Controller RS2VB040 - -pci:v00001000d00000079sv00008086sd00009268* - ID_PRODUCT_FROM_DATABASE=RAID Controller RS2VB080 - -pci:v00001000d0000007C* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 1078DE - -pci:v00001000d0000007Csv00001014sd00000395* - ID_PRODUCT_FROM_DATABASE=ServeRAID-AR10is SAS/SATA Controller - -pci:v00001000d0000007E* - ID_PRODUCT_FROM_DATABASE=SSS6200 PCI-Express Flash SSD - -pci:v00001000d00000080* - ID_PRODUCT_FROM_DATABASE=SAS2208 PCI-Express Fusion-MPT SAS-2 - -pci:v00001000d00000081* - ID_PRODUCT_FROM_DATABASE=SAS2208 PCI-Express Fusion-MPT SAS-2 - -pci:v00001000d00000082* - ID_PRODUCT_FROM_DATABASE=SAS2208 PCI-Express Fusion-MPT SAS-2 - -pci:v00001000d00000083* - ID_PRODUCT_FROM_DATABASE=SAS2208 PCI-Express Fusion-MPT SAS-2 - -pci:v00001000d00000084* - ID_PRODUCT_FROM_DATABASE=SAS2208 PCI-Express Fusion-MPT SAS-2 - -pci:v00001000d00000085* - ID_PRODUCT_FROM_DATABASE=SAS2208 PCI-Express Fusion-MPT SAS-2 - -pci:v00001000d00000086* - ID_PRODUCT_FROM_DATABASE=SAS2308 PCI-Express Fusion-MPT SAS-2 - -pci:v00001000d00000087* - ID_PRODUCT_FROM_DATABASE=SAS2308 PCI-Express Fusion-MPT SAS-2 - -pci:v00001000d00000087sv00001590sd00000044* - ID_PRODUCT_FROM_DATABASE=H220i - -pci:v00001000d0000008F* - ID_PRODUCT_FROM_DATABASE=53c875J - -pci:v00001000d0000008Fsv00001092sd00008000* - ID_PRODUCT_FROM_DATABASE=FirePort 40 SCSI Controller - -pci:v00001000d0000008Fsv00001092sd00008760* - ID_PRODUCT_FROM_DATABASE=FirePort 40 Dual SCSI Host Adapter - -pci:v00001000d00000090* - ID_PRODUCT_FROM_DATABASE=SAS3108 PCI-Express Fusion-MPT SAS-3 - -pci:v00001000d00000091* - ID_PRODUCT_FROM_DATABASE=SAS3108 PCI-Express Fusion-MPT SAS-3 - -pci:v00001000d00000094* - ID_PRODUCT_FROM_DATABASE=SAS3108 PCI-Express Fusion-MPT SAS-3 - -pci:v00001000d00000095* - ID_PRODUCT_FROM_DATABASE=SAS3108 PCI-Express Fusion-MPT SAS-3 - -pci:v00001000d00000096* - ID_PRODUCT_FROM_DATABASE=SAS3004 PCI-Express Fusion-MPT SAS-3 - -pci:v00001000d00000097* - ID_PRODUCT_FROM_DATABASE=SAS3008 PCI-Express Fusion-MPT SAS-3 - -pci:v00001000d00000407* - ID_PRODUCT_FROM_DATABASE=MegaRAID - -pci:v00001000d00000407sv00001000sd00000530* - ID_PRODUCT_FROM_DATABASE=MegaRAID 530 SCSI 320-0X RAID Controller - -pci:v00001000d00000407sv00001000sd00000531* - ID_PRODUCT_FROM_DATABASE=MegaRAID 531 SCSI 320-4X RAID Controller - -pci:v00001000d00000407sv00001000sd00000532* - ID_PRODUCT_FROM_DATABASE=MegaRAID 532 SCSI 320-2X RAID Controller - -pci:v00001000d00000407sv00001028sd00000531* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 4/QC - -pci:v00001000d00000407sv00001028sd00000533* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 4/QC - -pci:v00001000d00000407sv00008086sd00000530* - ID_PRODUCT_FROM_DATABASE=MegaRAID Intel RAID Controller SRCZCRX - -pci:v00001000d00000407sv00008086sd00000532* - ID_PRODUCT_FROM_DATABASE=MegaRAID Intel RAID Controller SRCU42X - -pci:v00001000d00000408* - ID_PRODUCT_FROM_DATABASE=MegaRAID - -pci:v00001000d00000408sv00001000sd00000001* - ID_PRODUCT_FROM_DATABASE=MegaRAID SCSI 320-1E RAID Controller - -pci:v00001000d00000408sv00001000sd00000002* - ID_PRODUCT_FROM_DATABASE=MegaRAID SCSI 320-2E RAID Controller - -pci:v00001000d00000408sv00001025sd0000004D* - ID_PRODUCT_FROM_DATABASE=MegaRAID ACER ROMB-2E RAID Controller - -pci:v00001000d00000408sv00001028sd00000001* - ID_PRODUCT_FROM_DATABASE=PowerEdge RAID Controller PERC4e/SC - -pci:v00001000d00000408sv00001028sd00000002* - ID_PRODUCT_FROM_DATABASE=PowerEdge RAID Controller PERC4e/DC - -pci:v00001000d00000408sv00001028sd00000012* - ID_PRODUCT_FROM_DATABASE=PowerEdge RAID Controller RAC4 - -pci:v00001000d00000408sv00001028sd00000015* - ID_PRODUCT_FROM_DATABASE=PowerEdge RAID Controller PERC5 - -pci:v00001000d00000408sv00001028sd00001F03* - ID_PRODUCT_FROM_DATABASE=PowerEdge RAID Controller PERC5 - -pci:v00001000d00000408sv00001734sd00001065* - ID_PRODUCT_FROM_DATABASE=FSC MegaRAID PCI Express ROMB - -pci:v00001000d00000408sv00008086sd00000002* - ID_PRODUCT_FROM_DATABASE=MegaRAID Intel RAID Controller SRCU42E - -pci:v00001000d00000408sv00008086sd00003449* - ID_PRODUCT_FROM_DATABASE=MegaRAID Intel RAID Controller SROMBU - -pci:v00001000d00000409* - ID_PRODUCT_FROM_DATABASE=MegaRAID - -pci:v00001000d00000409sv00001000sd00003004* - ID_PRODUCT_FROM_DATABASE=MegaRAID SATA 300-4X RAID Controller - -pci:v00001000d00000409sv00001000sd00003008* - ID_PRODUCT_FROM_DATABASE=MegaRAID SATA 300-8X RAID Controller - -pci:v00001000d00000409sv00008086sd00003008* - ID_PRODUCT_FROM_DATABASE=MegaRAID RAID Controller SRCS28X - -pci:v00001000d00000409sv00008086sd00003431* - ID_PRODUCT_FROM_DATABASE=MegaRAID RAID Controller Alief SROMBU42E - -pci:v00001000d00000409sv00008086sd00003499* - ID_PRODUCT_FROM_DATABASE=MegaRAID RAID Controller Harwich SROMBU42E - -pci:v00001000d00000411* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 1068 - -pci:v00001000d00000411sv00001000sd00001001* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 8408E - -pci:v00001000d00000411sv00001000sd00001002* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 8480E - -pci:v00001000d00000411sv00001000sd00001003* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 8344ELP - -pci:v00001000d00000411sv00001000sd00001004* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 8308ELP - -pci:v00001000d00000411sv00001000sd00001008* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 84016E - -pci:v00001000d00000411sv00001000sd0000100C* - ID_PRODUCT_FROM_DATABASE=MegaRAID SATA 300-12E - -pci:v00001000d00000411sv00001000sd0000100D* - ID_PRODUCT_FROM_DATABASE=MegaRAID SATA 300-16E - -pci:v00001000d00000411sv00001000sd00002004* - ID_PRODUCT_FROM_DATABASE=MegaRAID SATA 300-8ELP - -pci:v00001000d00000411sv00001000sd00002005* - ID_PRODUCT_FROM_DATABASE=MegaRAID SATA 300-4ELP - -pci:v00001000d00000411sv00001033sd00008287* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS PCI Express ROMB - -pci:v00001000d00000411sv00001054sd00003016* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS RoMB Server - -pci:v00001000d00000411sv00001734sd00001081* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS PCI Express ROMB - -pci:v00001000d00000411sv00001734sd000010A3* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS PCI Express ROMB - -pci:v00001000d00000411sv00008086sd00001001* - ID_PRODUCT_FROM_DATABASE=RAID Controller SRCSAS18E - -pci:v00001000d00000411sv00008086sd00001003* - ID_PRODUCT_FROM_DATABASE=RAID Controller SRCSAS144E - -pci:v00001000d00000411sv00008086sd00003500* - ID_PRODUCT_FROM_DATABASE=SROMBSAS18E RAID Controller - -pci:v00001000d00000411sv00008086sd00003501* - ID_PRODUCT_FROM_DATABASE=SROMBSAS18E RAID Controller - -pci:v00001000d00000411sv00008086sd00003504* - ID_PRODUCT_FROM_DATABASE=SROMBSAS18E RAID Controller - -pci:v00001000d00000413* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 1068 [Verde ZCR] - -pci:v00001000d00000413sv00001000sd00001005* - ID_PRODUCT_FROM_DATABASE=MegaRAID SAS 8300XLP - -pci:v00001000d00000621* - ID_PRODUCT_FROM_DATABASE=FC909 Fibre Channel Adapter - -pci:v00001000d00000622* - ID_PRODUCT_FROM_DATABASE=FC929 Fibre Channel Adapter - -pci:v00001000d00000622sv00001000sd00001020* - ID_PRODUCT_FROM_DATABASE=44929 O Dual Fibre Channel card - -pci:v00001000d00000623* - ID_PRODUCT_FROM_DATABASE=FC929 LAN - -pci:v00001000d00000624* - ID_PRODUCT_FROM_DATABASE=FC919 Fibre Channel Adapter - -pci:v00001000d00000625* - ID_PRODUCT_FROM_DATABASE=FC919 LAN - -pci:v00001000d00000626* - ID_PRODUCT_FROM_DATABASE=FC929X Fibre Channel Adapter - -pci:v00001000d00000626sv00001000sd00001010* - ID_PRODUCT_FROM_DATABASE=7202-XP-LC Dual Fibre Channel card - -pci:v00001000d00000627* - ID_PRODUCT_FROM_DATABASE=FC929X LAN - -pci:v00001000d00000628* - ID_PRODUCT_FROM_DATABASE=FC919X Fibre Channel Adapter - -pci:v00001000d00000629* - ID_PRODUCT_FROM_DATABASE=FC919X LAN - -pci:v00001000d00000640* - ID_PRODUCT_FROM_DATABASE=FC949X Fibre Channel Adapter - -pci:v00001000d00000642* - ID_PRODUCT_FROM_DATABASE=FC939X Fibre Channel Adapter - -pci:v00001000d00000646* - ID_PRODUCT_FROM_DATABASE=FC949ES Fibre Channel Adapter - -pci:v00001000d00000701* - ID_PRODUCT_FROM_DATABASE=83C885 NT50 DigitalScape Fast Ethernet - -pci:v00001000d00000702* - ID_PRODUCT_FROM_DATABASE=Yellowfin G-NIC gigabit ethernet - -pci:v00001000d00000702sv00001318sd00000000* - ID_PRODUCT_FROM_DATABASE=PEI100X - -pci:v00001000d00000804* - ID_PRODUCT_FROM_DATABASE=SA2010 - -pci:v00001000d00000805* - ID_PRODUCT_FROM_DATABASE=SA2010ZC - -pci:v00001000d00000806* - ID_PRODUCT_FROM_DATABASE=SA2020 - -pci:v00001000d00000807* - ID_PRODUCT_FROM_DATABASE=SA2020ZC - -pci:v00001000d00000901* - ID_PRODUCT_FROM_DATABASE=61C102 - -pci:v00001000d00001000* - ID_PRODUCT_FROM_DATABASE=63C815 - -pci:v00001000d00001960* - ID_PRODUCT_FROM_DATABASE=MegaRAID - -pci:v00001000d00001960sv00001000sd00000518* - ID_PRODUCT_FROM_DATABASE=MegaRAID 518 SCSI 320-2 Controller - -pci:v00001000d00001960sv00001000sd00000520* - ID_PRODUCT_FROM_DATABASE=MegaRAID 520 SCSI 320-1 Controller - -pci:v00001000d00001960sv00001000sd00000522* - ID_PRODUCT_FROM_DATABASE=MegaRAID 522 i4 133 RAID Controller - -pci:v00001000d00001960sv00001000sd00000523* - ID_PRODUCT_FROM_DATABASE=MegaRAID SATA 150-6 RAID Controller - -pci:v00001000d00001960sv00001000sd00004523* - ID_PRODUCT_FROM_DATABASE=MegaRAID SATA 150-4 RAID Controller - -pci:v00001000d00001960sv00001000sd0000A520* - ID_PRODUCT_FROM_DATABASE=MegaRAID ZCR SCSI 320-0 Controller - -pci:v00001000d00001960sv00001028sd00000518* - ID_PRODUCT_FROM_DATABASE=MegaRAID 518 DELL PERC 4/DC RAID Controller - -pci:v00001000d00001960sv00001028sd00000520* - ID_PRODUCT_FROM_DATABASE=MegaRAID 520 DELL PERC 4/SC RAID Controller - -pci:v00001000d00001960sv00001028sd00000531* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 4/QC - -pci:v00001000d00001960sv00001028sd00000533* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 4/QC - -pci:v00001000d00001960sv00008086sd00000520* - ID_PRODUCT_FROM_DATABASE=MegaRAID RAID Controller SRCU41L - -pci:v00001000d00001960sv00008086sd00000523* - ID_PRODUCT_FROM_DATABASE=MegaRAID RAID Controller SRCS16 - -pci:v00001000d00006001* - ID_PRODUCT_FROM_DATABASE=DX1 Multiformat Broadcast HD/SD Encoder/Decoder - -pci:v00001001* - ID_VENDOR_FROM_DATABASE=Kolter Electronic - -pci:v00001001d00000010* - ID_PRODUCT_FROM_DATABASE=PCI 1616 Measurement card with 32 digital I/O lines - -pci:v00001001d00000011* - ID_PRODUCT_FROM_DATABASE=OPTO-PCI Opto-Isolated digital I/O board - -pci:v00001001d00000012* - ID_PRODUCT_FROM_DATABASE=PCI-AD/DA Analogue I/O board - -pci:v00001001d00000013* - ID_PRODUCT_FROM_DATABASE=PCI-OPTO-RELAIS Digital I/O board with relay outputs - -pci:v00001001d00000014* - ID_PRODUCT_FROM_DATABASE=PCI-Counter/Timer Counter Timer board - -pci:v00001001d00000015* - ID_PRODUCT_FROM_DATABASE=PCI-DAC416 Analogue output board - -pci:v00001001d00000016* - ID_PRODUCT_FROM_DATABASE=PCI-MFB Analogue I/O board - -pci:v00001001d00000017* - ID_PRODUCT_FROM_DATABASE=PROTO-3 PCI Prototyping board - -pci:v00001001d00009100* - ID_PRODUCT_FROM_DATABASE=INI-9100/9100W SCSI Host - -pci:v00001002* - ID_VENDOR_FROM_DATABASE=Advanced Micro Devices [AMD] nee ATI - -pci:v00001002d00001304* - ID_PRODUCT_FROM_DATABASE=Kaveri - -pci:v00001002d00001305* - ID_PRODUCT_FROM_DATABASE=Kaveri - -pci:v00001002d00001306* - ID_PRODUCT_FROM_DATABASE=Kaveri - -pci:v00001002d00001307* - ID_PRODUCT_FROM_DATABASE=Kaveri - -pci:v00001002d00001314* - ID_PRODUCT_FROM_DATABASE=Wrestler HDMI Audio [Radeon HD 6250/6310] - -pci:v00001002d00001314sv0000174Bsd00001001* - ID_PRODUCT_FROM_DATABASE=Sapphire PURE Fusion Mini - -pci:v00001002d00001714* - ID_PRODUCT_FROM_DATABASE=BeaverCreek HDMI Audio [Radeon HD 6500D and 6400G-6600G series] - -pci:v00001002d00001714sv0000103Csd0000168B* - ID_PRODUCT_FROM_DATABASE=ProBook 4535s - -pci:v00001002d00003150* - ID_PRODUCT_FROM_DATABASE=RV380/M24 [Mobility Radeon X600] - -pci:v00001002d00003150sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=nx8220 - -pci:v00001002d00003151* - ID_PRODUCT_FROM_DATABASE=RV380 [FireMV 2400] - -pci:v00001002d00003152* - ID_PRODUCT_FROM_DATABASE=RV370/M22 [Mobility Radeon X300] - -pci:v00001002d00003154* - ID_PRODUCT_FROM_DATABASE=RV380/M24 GL [Mobility FireGL V3200] - -pci:v00001002d00003155* - ID_PRODUCT_FROM_DATABASE=RV380 [FireMV 2400] - -pci:v00001002d00003171* - ID_PRODUCT_FROM_DATABASE=RV380 [FireMV 2400] (Secondary) - -pci:v00001002d00003E50* - ID_PRODUCT_FROM_DATABASE=RV380 [Radeon X600] - -pci:v00001002d00003E54* - ID_PRODUCT_FROM_DATABASE=RV380 [FireGL V3200] - -pci:v00001002d00003E70* - ID_PRODUCT_FROM_DATABASE=RV380 [Radeon X600] (Secondary) - -pci:v00001002d00004136* - ID_PRODUCT_FROM_DATABASE=RS100 [Mobility IGP 320M] - -pci:v00001002d00004137* - ID_PRODUCT_FROM_DATABASE=RS200 [Radeon IGP 340] - -pci:v00001002d00004144* - ID_PRODUCT_FROM_DATABASE=R300 AD [Radeon 9500] - -pci:v00001002d00004146* - ID_PRODUCT_FROM_DATABASE=R300 AF [Radeon 9700 PRO] - -pci:v00001002d00004147* - ID_PRODUCT_FROM_DATABASE=R300 AG [FireGL Z1] - -pci:v00001002d00004148* - ID_PRODUCT_FROM_DATABASE=R350 AH [Radeon 9800/9800 SE] - -pci:v00001002d00004150* - ID_PRODUCT_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] - -pci:v00001002d00004150sv00001002sd00000002* - ID_PRODUCT_FROM_DATABASE=R9600 Pro primary (Asus OEM for HP) - -pci:v00001002d00004150sv00001002sd00000003* - ID_PRODUCT_FROM_DATABASE=R9600 Pro secondary (Asus OEM for HP) - -pci:v00001002d00004150sv00001002sd00004722* - ID_PRODUCT_FROM_DATABASE=All-in-Wonder 2006 AGP Edition - -pci:v00001002d00004150sv00001458sd00004024* - ID_PRODUCT_FROM_DATABASE=Giga-Byte GV-R96128D (Primary) - -pci:v00001002d00004150sv0000148Csd00002064* - ID_PRODUCT_FROM_DATABASE=PowerColor R96A-C3N - -pci:v00001002d00004150sv0000148Csd00002066* - ID_PRODUCT_FROM_DATABASE=PowerColor R96A-C3N - -pci:v00001002d00004150sv0000174Bsd00007C19* - ID_PRODUCT_FROM_DATABASE=Sapphire Atlantis Radeon 9600 Pro - -pci:v00001002d00004150sv0000174Bsd00007C29* - ID_PRODUCT_FROM_DATABASE=GC-R9600PRO [Sapphire] (Primary) - -pci:v00001002d00004150sv000017EEsd00002002* - ID_PRODUCT_FROM_DATABASE=Radeon 9600 256Mb Primary - -pci:v00001002d00004150sv000018BCsd00000101* - ID_PRODUCT_FROM_DATABASE=GC-R9600PRO (Primary) - -pci:v00001002d00004151* - ID_PRODUCT_FROM_DATABASE=RV350 [Radeon 9600 Series] - -pci:v00001002d00004151sv00001043sd0000C004* - ID_PRODUCT_FROM_DATABASE=A9600SE - -pci:v00001002d00004152* - ID_PRODUCT_FROM_DATABASE=RV360 [Radeon 9600/X1050 Series] - -pci:v00001002d00004152sv00001002sd00000002* - ID_PRODUCT_FROM_DATABASE=Radeon 9600XT - -pci:v00001002d00004152sv00001002sd00004772* - ID_PRODUCT_FROM_DATABASE=All-in-Wonder 9600 XT - -pci:v00001002d00004152sv00001043sd0000C002* - ID_PRODUCT_FROM_DATABASE=Radeon 9600 XT TVD - -pci:v00001002d00004152sv00001043sd0000C01A* - ID_PRODUCT_FROM_DATABASE=A9600XT/TD - -pci:v00001002d00004152sv00001462sd00009510* - ID_PRODUCT_FROM_DATABASE=RX9600XT (MS-8951) - -pci:v00001002d00004152sv0000174Bsd00007C29* - ID_PRODUCT_FROM_DATABASE=Sapphire Radeon 9600XT - -pci:v00001002d00004152sv00001787sd00004002* - ID_PRODUCT_FROM_DATABASE=Radeon 9600 XT - -pci:v00001002d00004153* - ID_PRODUCT_FROM_DATABASE=RV350 AS [Radeon 9550] - -pci:v00001002d00004153sv00001043sd0000010C* - ID_PRODUCT_FROM_DATABASE=A9550GE/TD - -pci:v00001002d00004153sv00001462sd0000932C* - ID_PRODUCT_FROM_DATABASE=RX9550SE-TD128 (MS-8932) - -pci:v00001002d00004154* - ID_PRODUCT_FROM_DATABASE=RV350 AT [FireGL T2] - -pci:v00001002d00004155* - ID_PRODUCT_FROM_DATABASE=RV350 [Radeon 9600] - -pci:v00001002d00004157* - ID_PRODUCT_FROM_DATABASE=RV350 AW [FireGL T2] - -pci:v00001002d00004158* - ID_PRODUCT_FROM_DATABASE=68800AX [Mach32] - -pci:v00001002d00004164* - ID_PRODUCT_FROM_DATABASE=R300 AD [Radeon 9500 PRO] (Secondary) - -pci:v00001002d00004165* - ID_PRODUCT_FROM_DATABASE=R300 AE [Radeon 9700 PRO] (Secondary) - -pci:v00001002d00004166* - ID_PRODUCT_FROM_DATABASE=R300 AF [Radeon 9700 PRO] (Secondary) - -pci:v00001002d00004168* - ID_PRODUCT_FROM_DATABASE=RV350 [Radeon 9800 SE] (Secondary) - -pci:v00001002d00004170* - ID_PRODUCT_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] (Secondary) - -pci:v00001002d00004170sv00001002sd00000003* - ID_PRODUCT_FROM_DATABASE=R9600 Pro secondary (Asus OEM for HP) - -pci:v00001002d00004170sv00001002sd00004723* - ID_PRODUCT_FROM_DATABASE=All-in-Wonder 2006 AGP Edition (Secondary) - -pci:v00001002d00004170sv00001458sd00004025* - ID_PRODUCT_FROM_DATABASE=Giga-Byte GV-R96128D (Secondary) - -pci:v00001002d00004170sv0000148Csd00002067* - ID_PRODUCT_FROM_DATABASE=PowerColor R96A-C3N (Secondary) - -pci:v00001002d00004170sv0000174Bsd00007C28* - ID_PRODUCT_FROM_DATABASE=GC-R9600PRO [Sapphire] (Secondary) - -pci:v00001002d00004170sv000017EEsd00002003* - ID_PRODUCT_FROM_DATABASE=Radeon 9600 256Mb (Secondary) - -pci:v00001002d00004170sv000018BCsd00000100* - ID_PRODUCT_FROM_DATABASE=GC-R9600PRO (Secondary) - -pci:v00001002d00004171* - ID_PRODUCT_FROM_DATABASE=RV350 AQ [Radeon 9600] (Secondary) - -pci:v00001002d00004171sv00001043sd0000C005* - ID_PRODUCT_FROM_DATABASE=A9600SE (Secondary) - -pci:v00001002d00004172* - ID_PRODUCT_FROM_DATABASE=RV350 [Radeon 9600/X1050 Series] (Secondary) - -pci:v00001002d00004172sv00001002sd00000003* - ID_PRODUCT_FROM_DATABASE=Radeon 9600XT (Secondary) - -pci:v00001002d00004172sv00001002sd00004773* - ID_PRODUCT_FROM_DATABASE=All-in-Wonder 9600 XT (Secondary) - -pci:v00001002d00004172sv00001043sd0000C003* - ID_PRODUCT_FROM_DATABASE=A9600XT (Secondary) - -pci:v00001002d00004172sv00001043sd0000C01B* - ID_PRODUCT_FROM_DATABASE=A9600XT/TD (Secondary) - -pci:v00001002d00004172sv0000174Bsd00007C28* - ID_PRODUCT_FROM_DATABASE=Sapphire Radeon 9600XT (Secondary) - -pci:v00001002d00004172sv00001787sd00004003* - ID_PRODUCT_FROM_DATABASE=Radeon 9600 XT (Secondary) - -pci:v00001002d00004173* - ID_PRODUCT_FROM_DATABASE=RV350 AS [Radeon 9550] (Secondary) - -pci:v00001002d00004173sv00001043sd0000010D* - ID_PRODUCT_FROM_DATABASE=A9550GE/TD (Secondary) - -pci:v00001002d00004242* - ID_PRODUCT_FROM_DATABASE=R200 [All-In-Wonder Radeon 8500 DV] - -pci:v00001002d00004242sv00001002sd000002AA* - ID_PRODUCT_FROM_DATABASE=Radeon 8500 AIW DV Edition - -pci:v00001002d00004336* - ID_PRODUCT_FROM_DATABASE=RS100 [Radeon IGP 320M] - -pci:v00001002d00004336sv00001002sd00004336* - ID_PRODUCT_FROM_DATABASE=Pavilion ze4300 ATI Radeon Mobility U1 (IGP 320 M) - -pci:v00001002d00004336sv0000103Csd00000024* - ID_PRODUCT_FROM_DATABASE=Pavilion ze4400 builtin Video - -pci:v00001002d00004336sv0000161Fsd00002029* - ID_PRODUCT_FROM_DATABASE=eMachines M5312 builtin Video - -pci:v00001002d00004337* - ID_PRODUCT_FROM_DATABASE=RS200M [Radeon IGP 330M/340M/345M/350M] - -pci:v00001002d00004337sv00001014sd0000053A* - ID_PRODUCT_FROM_DATABASE=ThinkPad R40e - -pci:v00001002d00004337sv0000103Csd00000850* - ID_PRODUCT_FROM_DATABASE=Radeon IGP 345M - -pci:v00001002d00004341* - ID_PRODUCT_FROM_DATABASE=IXP150 AC'97 Audio Controller - -pci:v00001002d00004342* - ID_PRODUCT_FROM_DATABASE=IXP200 3COM 3C920B Ethernet Controller - -pci:v00001002d00004345* - ID_PRODUCT_FROM_DATABASE=EHCI USB Controller - -pci:v00001002d00004347* - ID_PRODUCT_FROM_DATABASE=OHCI USB Controller #1 - -pci:v00001002d00004348* - ID_PRODUCT_FROM_DATABASE=OHCI USB Controller #2 - -pci:v00001002d00004349* - ID_PRODUCT_FROM_DATABASE=Dual Channel Bus Master PCI IDE Controller - -pci:v00001002d0000434D* - ID_PRODUCT_FROM_DATABASE=IXP AC'97 Modem - -pci:v00001002d00004353* - ID_PRODUCT_FROM_DATABASE=SMBus - -pci:v00001002d00004354* - ID_PRODUCT_FROM_DATABASE=215CT [Mach64 CT PCI] - -pci:v00001002d00004358* - ID_PRODUCT_FROM_DATABASE=210888CX [Mach64 CX] - -pci:v00001002d00004361* - ID_PRODUCT_FROM_DATABASE=IXP SB300 AC'97 Audio Controller - -pci:v00001002d00004363* - ID_PRODUCT_FROM_DATABASE=SMBus - -pci:v00001002d0000436E* - ID_PRODUCT_FROM_DATABASE=436E Serial ATA Controller - -pci:v00001002d00004370* - ID_PRODUCT_FROM_DATABASE=IXP SB400 AC'97 Audio Controller - -pci:v00001002d00004370sv00001025sd00000079* - ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMMi - -pci:v00001002d00004370sv00001025sd00000091* - ID_PRODUCT_FROM_DATABASE=Aspire 5032WXMi - -pci:v00001002d00004370sv0000103Csd00002A05* - ID_PRODUCT_FROM_DATABASE=Pavilion t3030.de Desktop PC - -pci:v00001002d00004370sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v00001002d00004370sv0000105Bsd00000C81* - ID_PRODUCT_FROM_DATABASE=Realtek ALC 653 - -pci:v00001002d00004370sv0000107Bsd00000300* - ID_PRODUCT_FROM_DATABASE=MX6421 - -pci:v00001002d00004370sv00001462sd00000131* - ID_PRODUCT_FROM_DATABASE=MS-1013 Notebook - -pci:v00001002d00004371* - ID_PRODUCT_FROM_DATABASE=IXP SB400 PCI-PCI Bridge - -pci:v00001002d00004371sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v00001002d00004371sv00001462sd00007217* - ID_PRODUCT_FROM_DATABASE=Aspire L250 - -pci:v00001002d00004372* - ID_PRODUCT_FROM_DATABASE=IXP SB400 SMBus Controller - -pci:v00001002d00004372sv00001025sd00000080* - ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMMi - -pci:v00001002d00004372sv0000103Csd00002A20* - ID_PRODUCT_FROM_DATABASE=Pavilion t3030.de Desktop PC - -pci:v00001002d00004372sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v00001002d00004372sv00001462sd00000131* - ID_PRODUCT_FROM_DATABASE=MS-1013 Notebook - -pci:v00001002d00004372sv00001462sd00007217* - ID_PRODUCT_FROM_DATABASE=Aspire L250 - -pci:v00001002d00004373* - ID_PRODUCT_FROM_DATABASE=IXP SB400 USB2 Host Controller - -pci:v00001002d00004373sv00001025sd00000080* - ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMMi - -pci:v00001002d00004373sv0000103Csd00002A20* - ID_PRODUCT_FROM_DATABASE=Pavilion t3030.de Desktop PC - -pci:v00001002d00004373sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v00001002d00004373sv00001462sd00007217* - ID_PRODUCT_FROM_DATABASE=Aspire L250 - -pci:v00001002d00004374* - ID_PRODUCT_FROM_DATABASE=IXP SB400 USB Host Controller - -pci:v00001002d00004374sv0000103Csd00002A20* - ID_PRODUCT_FROM_DATABASE=Pavilion t3030.de Desktop PC - -pci:v00001002d00004374sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v00001002d00004374sv00001462sd00007217* - ID_PRODUCT_FROM_DATABASE=Aspire L250 - -pci:v00001002d00004375* - ID_PRODUCT_FROM_DATABASE=IXP SB400 USB Host Controller - -pci:v00001002d00004375sv00001025sd00000080* - ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMMi - -pci:v00001002d00004375sv0000103Csd00002A20* - ID_PRODUCT_FROM_DATABASE=Pavilion t3030.de Desktop PC - -pci:v00001002d00004375sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v00001002d00004375sv00001462sd00007217* - ID_PRODUCT_FROM_DATABASE=Aspire L250 - -pci:v00001002d00004376* - ID_PRODUCT_FROM_DATABASE=IXP SB400 IDE Controller - -pci:v00001002d00004376sv00001025sd00000080* - ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMMi - -pci:v00001002d00004376sv0000103Csd00002A20* - ID_PRODUCT_FROM_DATABASE=Pavilion t3030.de Desktop PC - -pci:v00001002d00004376sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v00001002d00004376sv00001462sd00000131* - ID_PRODUCT_FROM_DATABASE=MS-1013 Notebook - -pci:v00001002d00004376sv00001462sd00007217* - ID_PRODUCT_FROM_DATABASE=Aspire L250 - -pci:v00001002d00004377* - ID_PRODUCT_FROM_DATABASE=IXP SB400 PCI-ISA Bridge - -pci:v00001002d00004377sv00001025sd00000080* - ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMi - -pci:v00001002d00004377sv0000103Csd00002A20* - ID_PRODUCT_FROM_DATABASE=Pavilion t3030.de Desktop PC - -pci:v00001002d00004377sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v00001002d00004377sv00001462sd00007217* - ID_PRODUCT_FROM_DATABASE=Aspire L250 - -pci:v00001002d00004378* - ID_PRODUCT_FROM_DATABASE=IXP SB400 AC'97 Modem Controller - -pci:v00001002d00004378sv00001025sd00000080* - ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMMi - -pci:v00001002d00004378sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v00001002d00004378sv00001462sd00000131* - ID_PRODUCT_FROM_DATABASE=MS-1013 Notebook - -pci:v00001002d00004379* - ID_PRODUCT_FROM_DATABASE=IXP SB400 Serial ATA Controller - -pci:v00001002d00004379sv00001462sd00007141* - ID_PRODUCT_FROM_DATABASE=Aspire L250 - -pci:v00001002d0000437A* - ID_PRODUCT_FROM_DATABASE=IXP SB400 Serial ATA Controller - -pci:v00001002d0000437Asv00001002sd00004379* - ID_PRODUCT_FROM_DATABASE=4379 Serial ATA Controller - -pci:v00001002d0000437Asv00001002sd0000437A* - ID_PRODUCT_FROM_DATABASE=437A Serial ATA Controller - -pci:v00001002d0000437Asv00001462sd00007141* - ID_PRODUCT_FROM_DATABASE=Aspire L250 - -pci:v00001002d0000437Asv000014F1sd00008800* - ID_PRODUCT_FROM_DATABASE=Leadtek WinFast TV2000XP Expert - -pci:v00001002d0000437B* - ID_PRODUCT_FROM_DATABASE=IXP SB4x0 High Definition Audio Controller - -pci:v00001002d0000437Bsv00001002sd0000437B* - ID_PRODUCT_FROM_DATABASE=IXP SB4x0 High Definition Audio Controller - -pci:v00001002d0000437Bsv000010CFsd00001326* - ID_PRODUCT_FROM_DATABASE=Fujitsu Lifebook A3040 - -pci:v00001002d0000437Bsv00001734sd000010B8* - ID_PRODUCT_FROM_DATABASE=Realtek High Definition Audio - -pci:v00001002d00004380* - ID_PRODUCT_FROM_DATABASE=SB600 Non-Raid-5 SATA - -pci:v00001002d00004380sv0000103Csd00002813* - ID_PRODUCT_FROM_DATABASE=DC5750 Microtower - -pci:v00001002d00004380sv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001002d00004380sv00001458sd0000B003* - ID_PRODUCT_FROM_DATABASE=GA-MA790FX-DS5 (rev. 1.0) - -pci:v00001002d00004380sv00001458sd0000B005* - ID_PRODUCT_FROM_DATABASE=Gigabyte GA-MA69G-S3H Motherboard - -pci:v00001002d00004380sv00001462sd00007327* - ID_PRODUCT_FROM_DATABASE=K9AG Neo2 - -pci:v00001002d00004380sv000017F2sd00005999* - ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard - -pci:v00001002d00004381* - ID_PRODUCT_FROM_DATABASE=SB400 SATA Controller (RAID 5 mode) - -pci:v00001002d00004382* - ID_PRODUCT_FROM_DATABASE=SB600 AC97 Audio - -pci:v00001002d00004383* - ID_PRODUCT_FROM_DATABASE=SBx00 Azalia (Intel HDA) - -pci:v00001002d00004383sv00001019sd00002120* - ID_PRODUCT_FROM_DATABASE=A785GM-M - -pci:v00001002d00004383sv0000103Csd00001611* - ID_PRODUCT_FROM_DATABASE=Pavilion DM1Z-3000 - -pci:v00001002d00004383sv0000103Csd0000280A* - ID_PRODUCT_FROM_DATABASE=DC5750 Microtower - -pci:v00001002d00004383sv00001043sd00008230* - ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard - -pci:v00001002d00004383sv00001043sd0000836C* - ID_PRODUCT_FROM_DATABASE=M4A785TD Motherboard - -pci:v00001002d00004383sv00001043sd00008410* - ID_PRODUCT_FROM_DATABASE=M4A89GTD PRO/USB3 Motherboard - -pci:v00001002d00004383sv00001043sd0000841B* - ID_PRODUCT_FROM_DATABASE=M5A88-V EVO - -pci:v00001002d00004383sv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001002d00004383sv00001458sd0000A022* - ID_PRODUCT_FROM_DATABASE=GA-MA770-DS3rev2.0 Motherboard - -pci:v00001002d00004383sv000017F2sd00005000* - ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard - -pci:v00001002d00004384* - ID_PRODUCT_FROM_DATABASE=SBx00 PCI to PCI Bridge - -pci:v00001002d00004385* - ID_PRODUCT_FROM_DATABASE=SBx00 SMBus Controller - -pci:v00001002d00004385sv00001019sd00002120* - ID_PRODUCT_FROM_DATABASE=A785GM-M - -pci:v00001002d00004385sv0000103Csd00001611* - ID_PRODUCT_FROM_DATABASE=Pavilion DM1Z-3000 - -pci:v00001002d00004385sv0000103Csd0000280A* - ID_PRODUCT_FROM_DATABASE=DC5750 Microtower - -pci:v00001002d00004385sv00001043sd000082EF* - ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard - -pci:v00001002d00004385sv00001043sd00008389* - ID_PRODUCT_FROM_DATABASE=M4A785TD Motherboard - -pci:v00001002d00004385sv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001002d00004385sv00001458sd00004385* - ID_PRODUCT_FROM_DATABASE=GA-MA770-DS3rev2.0 Motherboard - -pci:v00001002d00004385sv00001462sd00007368* - ID_PRODUCT_FROM_DATABASE=K9AG Neo2 - -pci:v00001002d00004385sv000015D9sd0000A811* - ID_PRODUCT_FROM_DATABASE=H8DGU - -pci:v00001002d00004385sv0000174Bsd00001001* - ID_PRODUCT_FROM_DATABASE=Sapphire PURE Fusion Mini - -pci:v00001002d00004385sv000017F2sd00005000* - ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard - -pci:v00001002d00004386* - ID_PRODUCT_FROM_DATABASE=SB600 USB Controller (EHCI) - -pci:v00001002d00004386sv0000103Csd0000280A* - ID_PRODUCT_FROM_DATABASE=DC5750 Microtower - -pci:v00001002d00004386sv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001002d00004386sv00001462sd00007368* - ID_PRODUCT_FROM_DATABASE=K9AG Neo2 - -pci:v00001002d00004386sv000017F2sd00005000* - ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard - -pci:v00001002d00004387* - ID_PRODUCT_FROM_DATABASE=SB600 USB (OHCI0) - -pci:v00001002d00004387sv0000103Csd0000280A* - ID_PRODUCT_FROM_DATABASE=DC5750 Microtower - -pci:v00001002d00004387sv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001002d00004387sv00001462sd00007368* - ID_PRODUCT_FROM_DATABASE=K9AG Neo2 - -pci:v00001002d00004387sv000017F2sd00005000* - ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard - -pci:v00001002d00004388* - ID_PRODUCT_FROM_DATABASE=SB600 USB (OHCI1) - -pci:v00001002d00004388sv0000103Csd0000280A* - ID_PRODUCT_FROM_DATABASE=DC5750 Microtower - -pci:v00001002d00004388sv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001002d00004388sv00001462sd00007368* - ID_PRODUCT_FROM_DATABASE=K9AG Neo2 - -pci:v00001002d00004388sv000017F2sd00005000* - ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard - -pci:v00001002d00004389* - ID_PRODUCT_FROM_DATABASE=SB600 USB (OHCI2) - -pci:v00001002d00004389sv0000103Csd0000280A* - ID_PRODUCT_FROM_DATABASE=DC5750 Microtower - -pci:v00001002d00004389sv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001002d00004389sv00001462sd00007368* - ID_PRODUCT_FROM_DATABASE=K9AG Neo2 - -pci:v00001002d00004389sv000017F2sd00005000* - ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard - -pci:v00001002d0000438A* - ID_PRODUCT_FROM_DATABASE=SB600 USB (OHCI3) - -pci:v00001002d0000438Asv0000103Csd0000280A* - ID_PRODUCT_FROM_DATABASE=DC5750 Microtower - -pci:v00001002d0000438Asv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001002d0000438Asv00001462sd00007368* - ID_PRODUCT_FROM_DATABASE=K9AG Neo2 - -pci:v00001002d0000438Asv000017F2sd00005000* - ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard - -pci:v00001002d0000438B* - ID_PRODUCT_FROM_DATABASE=SB600 USB (OHCI4) - -pci:v00001002d0000438Bsv0000103Csd0000280A* - ID_PRODUCT_FROM_DATABASE=DC5750 Microtower - -pci:v00001002d0000438Bsv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001002d0000438Bsv00001462sd00007368* - ID_PRODUCT_FROM_DATABASE=K9AG Neo2 - -pci:v00001002d0000438Bsv000017F2sd00005000* - ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard - -pci:v00001002d0000438C* - ID_PRODUCT_FROM_DATABASE=SB600 IDE - -pci:v00001002d0000438Csv0000103Csd0000280A* - ID_PRODUCT_FROM_DATABASE=DC5750 Microtower - -pci:v00001002d0000438Csv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001002d0000438Csv00001458sd00005002* - ID_PRODUCT_FROM_DATABASE=Gigabyte GA-MA69G-S3H Motherboard - -pci:v00001002d0000438Csv00001462sd00007368* - ID_PRODUCT_FROM_DATABASE=K9AG Neo2 - -pci:v00001002d0000438Csv000017F2sd00005000* - ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard - -pci:v00001002d0000438D* - ID_PRODUCT_FROM_DATABASE=SB600 PCI to LPC Bridge - -pci:v00001002d0000438Dsv0000103Csd0000280A* - ID_PRODUCT_FROM_DATABASE=DC5750 Microtower - -pci:v00001002d0000438Dsv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001002d0000438Dsv00001462sd00007368* - ID_PRODUCT_FROM_DATABASE=K9AG Neo2 - -pci:v00001002d0000438Dsv000017F2sd00005000* - ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard - -pci:v00001002d0000438E* - ID_PRODUCT_FROM_DATABASE=SB600 AC97 Modem - -pci:v00001002d00004390* - ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [IDE mode] - -pci:v00001002d00004390sv00001043sd000082EF* - ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard - -pci:v00001002d00004390sv00001043sd00008389* - ID_PRODUCT_FROM_DATABASE=M4A785TD Motherboard - -pci:v00001002d00004390sv00001458sd0000B002* - ID_PRODUCT_FROM_DATABASE=GA-MA770-DS3rev2.0 Motherboard - -pci:v00001002d00004390sv00001849sd00004390* - ID_PRODUCT_FROM_DATABASE=Motherboard (one of many) - -pci:v00001002d00004391* - ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] - -pci:v00001002d00004391sv0000103Csd00001611* - ID_PRODUCT_FROM_DATABASE=Pavilion DM1Z-3000 - -pci:v00001002d00004391sv00001043sd000082EF* - ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard - -pci:v00001002d00004391sv00001043sd00008443* - ID_PRODUCT_FROM_DATABASE=M5A88-V EVO - -pci:v00001002d00004391sv0000174Bsd00001001* - ID_PRODUCT_FROM_DATABASE=Sapphire PURE Fusion Mini - -pci:v00001002d00004392* - ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [Non-RAID5 mode] - -pci:v00001002d00004393* - ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [RAID5 mode] - -pci:v00001002d00004394* - ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode] - -pci:v00001002d00004395* - ID_PRODUCT_FROM_DATABASE=SB8x0/SB9x0 SATA Controller [Storage mode] - -pci:v00001002d00004396* - ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB EHCI Controller - -pci:v00001002d00004396sv00001019sd00002120* - ID_PRODUCT_FROM_DATABASE=A785GM-M - -pci:v00001002d00004396sv0000103Csd00001611* - ID_PRODUCT_FROM_DATABASE=Pavilion DM1Z-3000 - -pci:v00001002d00004396sv00001043sd000082EF* - ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard - -pci:v00001002d00004396sv00001043sd00008443* - ID_PRODUCT_FROM_DATABASE=M5A88-V EVO - -pci:v00001002d00004396sv000015D9sd0000A811* - ID_PRODUCT_FROM_DATABASE=H8DGU - -pci:v00001002d00004396sv0000174Bsd00001001* - ID_PRODUCT_FROM_DATABASE=Sapphire PURE Fusion Mini - -pci:v00001002d00004397* - ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI0 Controller - -pci:v00001002d00004397sv00001019sd00002120* - ID_PRODUCT_FROM_DATABASE=A785GM-M - -pci:v00001002d00004397sv0000103Csd00001611* - ID_PRODUCT_FROM_DATABASE=Pavilion DM1Z-3000 - -pci:v00001002d00004397sv00001043sd000082EF* - ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard - -pci:v00001002d00004397sv00001043sd00008443* - ID_PRODUCT_FROM_DATABASE=M5A88-V EVO - -pci:v00001002d00004397sv000015D9sd0000A811* - ID_PRODUCT_FROM_DATABASE=H8DGU - -pci:v00001002d00004397sv0000174Bsd00001001* - ID_PRODUCT_FROM_DATABASE=Sapphire PURE Fusion Mini - -pci:v00001002d00004398* - ID_PRODUCT_FROM_DATABASE=SB7x0 USB OHCI1 Controller - -pci:v00001002d00004398sv00001019sd00002120* - ID_PRODUCT_FROM_DATABASE=A785GM-M - -pci:v00001002d00004398sv00001043sd000082EF* - ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard - -pci:v00001002d00004398sv000015D9sd0000A811* - ID_PRODUCT_FROM_DATABASE=H8DGU - -pci:v00001002d00004399* - ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 USB OHCI2 Controller - -pci:v00001002d00004399sv00001019sd00002120* - ID_PRODUCT_FROM_DATABASE=A785GM-M - -pci:v00001002d00004399sv00001043sd000082EF* - ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard - -pci:v00001002d00004399sv00001043sd00008443* - ID_PRODUCT_FROM_DATABASE=M5A88-V EVO - -pci:v00001002d00004399sv0000174Bsd00001001* - ID_PRODUCT_FROM_DATABASE=Sapphire PURE Fusion Mini - -pci:v00001002d0000439C* - ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 IDE Controller - -pci:v00001002d0000439Csv00001019sd00002120* - ID_PRODUCT_FROM_DATABASE=A785GM-M - -pci:v00001002d0000439Csv00001043sd000082EF* - ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard - -pci:v00001002d0000439D* - ID_PRODUCT_FROM_DATABASE=SB7x0/SB8x0/SB9x0 LPC host controller - -pci:v00001002d0000439Dsv00001019sd00002120* - ID_PRODUCT_FROM_DATABASE=A785GM-M - -pci:v00001002d0000439Dsv0000103Csd00001611* - ID_PRODUCT_FROM_DATABASE=Pavilion DM1Z-3000 - -pci:v00001002d0000439Dsv00001043sd000082EF* - ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard - -pci:v00001002d0000439Dsv00001043sd00008443* - ID_PRODUCT_FROM_DATABASE=M5A88-V EVO - -pci:v00001002d0000439Dsv0000174Bsd00001001* - ID_PRODUCT_FROM_DATABASE=Sapphire PURE Fusion Mini - -pci:v00001002d000043A0* - ID_PRODUCT_FROM_DATABASE=SB700/SB800/SB900 PCI to PCI bridge (PCIE port 0) - -pci:v00001002d000043A1* - ID_PRODUCT_FROM_DATABASE=SB700/SB800/SB900 PCI to PCI bridge (PCIE port 1) - -pci:v00001002d000043A2* - ID_PRODUCT_FROM_DATABASE=SB900 PCI to PCI bridge (PCIE port 2) - -pci:v00001002d000043A3* - ID_PRODUCT_FROM_DATABASE=SB900 PCI to PCI bridge (PCIE port 3) - -pci:v00001002d00004437* - ID_PRODUCT_FROM_DATABASE=RS250 [Mobility Radeon 7000 IGP] - -pci:v00001002d00004554* - ID_PRODUCT_FROM_DATABASE=210888ET [Mach64 ET] - -pci:v00001002d00004654* - ID_PRODUCT_FROM_DATABASE=Mach64 VT - -pci:v00001002d00004742* - ID_PRODUCT_FROM_DATABASE=3D Rage PRO AGP 2X - -pci:v00001002d00004742sv00001002sd00000040* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo AGP 2X - -pci:v00001002d00004742sv00001002sd00000044* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo AGP 2X - -pci:v00001002d00004742sv00001002sd00000061* - ID_PRODUCT_FROM_DATABASE=Rage Pro AIW AGP 2X - -pci:v00001002d00004742sv00001002sd00000062* - ID_PRODUCT_FROM_DATABASE=Rage Pro AIW AGP 2X - -pci:v00001002d00004742sv00001002sd00000063* - ID_PRODUCT_FROM_DATABASE=Rage Pro AIW AGP 2X - -pci:v00001002d00004742sv00001002sd00000080* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo AGP 2X - -pci:v00001002d00004742sv00001002sd00000084* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo AGP 2X - -pci:v00001002d00004742sv00001002sd00004742* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo AGP 2X - -pci:v00001002d00004742sv00001002sd00008001* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo AGP 2X - -pci:v00001002d00004742sv00001028sd00000082* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo AGP 2X - -pci:v00001002d00004742sv00001028sd00004082* - ID_PRODUCT_FROM_DATABASE=Optiplex GX1 Onboard Display Adapter - -pci:v00001002d00004742sv00001028sd00008082* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo AGP 2X - -pci:v00001002d00004742sv00001028sd0000C082* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo AGP 2X - -pci:v00001002d00004742sv00008086sd00004152* - ID_PRODUCT_FROM_DATABASE=Xpert 98D AGP 2X - -pci:v00001002d00004742sv00008086sd0000464A* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo AGP 2X - -pci:v00001002d00004744* - ID_PRODUCT_FROM_DATABASE=3D Rage PRO AGP 1X - -pci:v00001002d00004744sv00001002sd00004744* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo AGP - -pci:v00001002d00004744sv00008086sd00004D55* - ID_PRODUCT_FROM_DATABASE=Rage 3D Pro AGP 1X [Intel MU440EX] - -pci:v00001002d00004749* - ID_PRODUCT_FROM_DATABASE=3D Rage PRO PCI - -pci:v00001002d00004749sv00001002sd00000061* - ID_PRODUCT_FROM_DATABASE=Rage Pro AIW - -pci:v00001002d00004749sv00001002sd00000062* - ID_PRODUCT_FROM_DATABASE=Rage Pro AIW - -pci:v00001002d0000474D* - ID_PRODUCT_FROM_DATABASE=Rage XL AGP 2X - -pci:v00001002d0000474Dsv00001002sd00000004* - ID_PRODUCT_FROM_DATABASE=Xpert 98 RXL AGP 2X - -pci:v00001002d0000474Dsv00001002sd00000008* - ID_PRODUCT_FROM_DATABASE=Xpert 98 RXL AGP 2X - -pci:v00001002d0000474Dsv00001002sd00000080* - ID_PRODUCT_FROM_DATABASE=Rage XL AGP 2X - -pci:v00001002d0000474Dsv00001002sd00000084* - ID_PRODUCT_FROM_DATABASE=Xpert 98 AGP 2X - -pci:v00001002d0000474Dsv00001002sd0000474D* - ID_PRODUCT_FROM_DATABASE=Rage XL AGP - -pci:v00001002d0000474Dsv00001033sd0000806A* - ID_PRODUCT_FROM_DATABASE=Rage XL AGP - -pci:v00001002d0000474E* - ID_PRODUCT_FROM_DATABASE=Rage XC AGP - -pci:v00001002d0000474Esv00001002sd0000474E* - ID_PRODUCT_FROM_DATABASE=Rage XC AGP - -pci:v00001002d0000474F* - ID_PRODUCT_FROM_DATABASE=Rage XL - -pci:v00001002d0000474Fsv00001002sd00000008* - ID_PRODUCT_FROM_DATABASE=Rage XL - -pci:v00001002d0000474Fsv00001002sd0000474F* - ID_PRODUCT_FROM_DATABASE=Rage XL - -pci:v00001002d00004750* - ID_PRODUCT_FROM_DATABASE=3D Rage Pro PCI - -pci:v00001002d00004750sv00001002sd00000040* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo - -pci:v00001002d00004750sv00001002sd00000044* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo - -pci:v00001002d00004750sv00001002sd00000080* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo - -pci:v00001002d00004750sv00001002sd00000084* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo - -pci:v00001002d00004750sv00001002sd00004750* - ID_PRODUCT_FROM_DATABASE=Rage Pro Turbo - -pci:v00001002d00004752* - ID_PRODUCT_FROM_DATABASE=Rage XL PCI - -pci:v00001002d00004752sv00000E11sd0000001E* - ID_PRODUCT_FROM_DATABASE=Proliant Rage XL - -pci:v00001002d00004752sv00001002sd00000008* - ID_PRODUCT_FROM_DATABASE=Rage XL - -pci:v00001002d00004752sv00001002sd00004752* - ID_PRODUCT_FROM_DATABASE=Proliant Rage XL - -pci:v00001002d00004752sv00001002sd00008008* - ID_PRODUCT_FROM_DATABASE=Rage XL - -pci:v00001002d00004752sv00001014sd00000240* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00001002d00004752sv00001028sd000000CE* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1400 - -pci:v00001002d00004752sv00001028sd000000D1* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2550 - -pci:v00001002d00004752sv00001028sd000000D9* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2500 - -pci:v00001002d00004752sv00001028sd00000134* - ID_PRODUCT_FROM_DATABASE=PowerEdge 600SC - -pci:v00001002d00004752sv00001028sd0000014A* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1750 - -pci:v00001002d00004752sv00001028sd00000165* - ID_PRODUCT_FROM_DATABASE=PowerEdge 750 - -pci:v00001002d00004752sv0000103Csd000010E1* - ID_PRODUCT_FROM_DATABASE=NetServer Rage XL - -pci:v00001002d00004752sv0000103Csd00003208* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G2 - -pci:v00001002d00004752sv0000107Bsd00006400* - ID_PRODUCT_FROM_DATABASE=6400 Server - -pci:v00001002d00004752sv00001734sd0000007A* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX series onboard VGA - -pci:v00001002d00004752sv00001734sd00001073* - ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard - -pci:v00001002d00004752sv00008086sd00003411* - ID_PRODUCT_FROM_DATABASE=SDS2 Mainboard - -pci:v00001002d00004752sv00008086sd00003427* - ID_PRODUCT_FROM_DATABASE=S875WP1-E mainboard - -pci:v00001002d00004752sv00008086sd00005744* - ID_PRODUCT_FROM_DATABASE=S845WD1-E mainboard - -pci:v00001002d00004753* - ID_PRODUCT_FROM_DATABASE=Rage XC - -pci:v00001002d00004753sv00001002sd00004753* - ID_PRODUCT_FROM_DATABASE=Rage XC - -pci:v00001002d00004754* - ID_PRODUCT_FROM_DATABASE=3D Rage II/II+ PCI [Mach64 GT] - -pci:v00001002d00004755* - ID_PRODUCT_FROM_DATABASE=3D Rage II+ PCI [Mach64 GTB] - -pci:v00001002d00004756* - ID_PRODUCT_FROM_DATABASE=3D Rage IIC PCI [Mach64 GT IIC] - -pci:v00001002d00004756sv00001002sd00004756* - ID_PRODUCT_FROM_DATABASE=Rage IIC - -pci:v00001002d00004757* - ID_PRODUCT_FROM_DATABASE=3D Rage IIC AGP - -pci:v00001002d00004757sv00001002sd00004757* - ID_PRODUCT_FROM_DATABASE=Rage IIC AGP - -pci:v00001002d00004757sv00001028sd00000089* - ID_PRODUCT_FROM_DATABASE=Rage 3D IIC - -pci:v00001002d00004757sv00001028sd0000008E* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1300 onboard video - -pci:v00001002d00004757sv00001028sd00004082* - ID_PRODUCT_FROM_DATABASE=Rage 3D IIC - -pci:v00001002d00004757sv00001028sd00008082* - ID_PRODUCT_FROM_DATABASE=Rage 3D IIC - -pci:v00001002d00004757sv00001028sd0000C082* - ID_PRODUCT_FROM_DATABASE=Rage 3D IIC - -pci:v00001002d00004758* - ID_PRODUCT_FROM_DATABASE=210888GX [Mach64 GX PCI] - -pci:v00001002d00004759* - ID_PRODUCT_FROM_DATABASE=3D Rage IIC PCI - -pci:v00001002d0000475A* - ID_PRODUCT_FROM_DATABASE=3D Rage IIC AGP - -pci:v00001002d0000475Asv00001002sd00000084* - ID_PRODUCT_FROM_DATABASE=Rage 3D Pro AGP 2x XPERT 98 - -pci:v00001002d0000475Asv00001002sd00000087* - ID_PRODUCT_FROM_DATABASE=Rage 3D IIC - -pci:v00001002d0000475Asv00001002sd0000475A* - ID_PRODUCT_FROM_DATABASE=Rage IIC AGP - -pci:v00001002d00004966* - ID_PRODUCT_FROM_DATABASE=RV250 [Radeon 9000 Series] - -pci:v00001002d00004966sv000010F1sd00000002* - ID_PRODUCT_FROM_DATABASE=RV250 If [Tachyon G9000 PRO] - -pci:v00001002d00004966sv0000148Csd00002039* - ID_PRODUCT_FROM_DATABASE=RV250 If [Radeon 9000 Pro "Evil Commando"] - -pci:v00001002d00004966sv00001509sd00009A00* - ID_PRODUCT_FROM_DATABASE=RV250 If [Radeon 9000 "AT009"] - -pci:v00001002d00004966sv00001681sd00000040* - ID_PRODUCT_FROM_DATABASE=RV250 If [3D prophet 9000] - -pci:v00001002d00004966sv0000174Bsd00007176* - ID_PRODUCT_FROM_DATABASE=RV250 If [Sapphire Radeon 9000 Pro] - -pci:v00001002d00004966sv0000174Bsd00007192* - ID_PRODUCT_FROM_DATABASE=RV250 If [Radeon 9000 "Atlantis"] - -pci:v00001002d00004966sv000017AFsd00002005* - ID_PRODUCT_FROM_DATABASE=RV250 If [Excalibur Radeon 9000 Pro] - -pci:v00001002d00004966sv000017AFsd00002006* - ID_PRODUCT_FROM_DATABASE=RV250 If [Excalibur Radeon 9000] - -pci:v00001002d0000496E* - ID_PRODUCT_FROM_DATABASE=RV250 [Radeon 9000] (Secondary) - -pci:v00001002d00004A49* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 PRO/GTO AGP] - -pci:v00001002d00004A49sv0000174Bsd00002620* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 GTO AGP] - -pci:v00001002d00004A4A* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 GT AGP] - -pci:v00001002d00004A4B* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 AGP Series] - -pci:v00001002d00004A4D* - ID_PRODUCT_FROM_DATABASE=R420 JM [FireGL X3] - -pci:v00001002d00004A4E* - ID_PRODUCT_FROM_DATABASE=RV420/M18 [Mobility Radeon 9800] - -pci:v00001002d00004A4F* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X850 AGP] - -pci:v00001002d00004A50* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 XT Platinum Edition AGP] - -pci:v00001002d00004A54* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 VE AGP] - -pci:v00001002d00004A54sv00001002sd00004422* - ID_PRODUCT_FROM_DATABASE=All-In-Wonder X800 VE AGP - -pci:v00001002d00004A69* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 PRO/GTO] (Secondary) - -pci:v00001002d00004A6A* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800] (Secondary) - -pci:v00001002d00004A6B* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 XT AGP] (Secondary) - -pci:v00001002d00004A70* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 XT Platinum Edition AGP] (Secondary) - -pci:v00001002d00004A74* - ID_PRODUCT_FROM_DATABASE=R420 [Radeon X800 VE] (Secondary) - -pci:v00001002d00004B49* - ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850 XT AGP] - -pci:v00001002d00004B4B* - ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850 PRO AGP] - -pci:v00001002d00004B4C* - ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850 XT Platinum Edition AGP] - -pci:v00001002d00004B69* - ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850 XT AGP] (Secondary) - -pci:v00001002d00004B6B* - ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850 PRO AGP] (Secondary) - -pci:v00001002d00004B6C* - ID_PRODUCT_FROM_DATABASE=R481 [Radeon X850 XT Platinum Edition AGP] (Secondary) - -pci:v00001002d00004C42* - ID_PRODUCT_FROM_DATABASE=3D Rage LT PRO AGP 2X - -pci:v00001002d00004C42sv00000E11sd0000B0E7* - ID_PRODUCT_FROM_DATABASE=Rage LT Pro (Compaq Presario 5240) - -pci:v00001002d00004C42sv00000E11sd0000B0E8* - ID_PRODUCT_FROM_DATABASE=Rage 3D LT Pro - -pci:v00001002d00004C42sv00000E11sd0000B10E* - ID_PRODUCT_FROM_DATABASE=3D Rage LT Pro (Compaq Armada 1750) - -pci:v00001002d00004C42sv00001002sd00000040* - ID_PRODUCT_FROM_DATABASE=Rage LT Pro AGP 2X - -pci:v00001002d00004C42sv00001002sd00000044* - ID_PRODUCT_FROM_DATABASE=Rage LT Pro AGP 2X - -pci:v00001002d00004C42sv00001002sd00004C42* - ID_PRODUCT_FROM_DATABASE=Rage LT Pro AGP 2X - -pci:v00001002d00004C42sv00001002sd00008001* - ID_PRODUCT_FROM_DATABASE=Rage LT Pro AGP 2X - -pci:v00001002d00004C42sv00001028sd00000085* - ID_PRODUCT_FROM_DATABASE=Rage 3D LT Pro - -pci:v00001002d00004C46* - ID_PRODUCT_FROM_DATABASE=Rage Mobility 128 AGP 2X/Mobility M3 - -pci:v00001002d00004C46sv00001002sd00000155* - ID_PRODUCT_FROM_DATABASE=IBM Thinkpad A22p - -pci:v00001002d00004C46sv00001014sd00000155* - ID_PRODUCT_FROM_DATABASE=IBM Thinkpad A22p - -pci:v00001002d00004C46sv00001028sd000000B1* - ID_PRODUCT_FROM_DATABASE=Latitude C600 - -pci:v00001002d00004C47* - ID_PRODUCT_FROM_DATABASE=3D Rage IIC PCI/Mobility Radeon 7500/7500C - -pci:v00001002d00004C49* - ID_PRODUCT_FROM_DATABASE=3D Rage LT PRO PCI - -pci:v00001002d00004C49sv00001002sd00000004* - ID_PRODUCT_FROM_DATABASE=Rage LT Pro - -pci:v00001002d00004C49sv00001002sd00000040* - ID_PRODUCT_FROM_DATABASE=Rage LT Pro - -pci:v00001002d00004C49sv00001002sd00000044* - ID_PRODUCT_FROM_DATABASE=Rage LT Pro - -pci:v00001002d00004C49sv00001002sd00004C49* - ID_PRODUCT_FROM_DATABASE=Rage LT Pro - -pci:v00001002d00004C4D* - ID_PRODUCT_FROM_DATABASE=Rage Mobility AGP 2x Series - -pci:v00001002d00004C4Dsv00000E11sd0000B111* - ID_PRODUCT_FROM_DATABASE=Armada M700 - -pci:v00001002d00004C4Dsv00000E11sd0000B160* - ID_PRODUCT_FROM_DATABASE=Armada E500 - -pci:v00001002d00004C4Dsv00001002sd00000084* - ID_PRODUCT_FROM_DATABASE=Xpert 98 AGP 2X (Mobility) - -pci:v00001002d00004C4Dsv00001014sd00000154* - ID_PRODUCT_FROM_DATABASE=ThinkPad A20m/A21m - -pci:v00001002d00004C4Dsv00001028sd000000AA* - ID_PRODUCT_FROM_DATABASE=Latitude CPt - -pci:v00001002d00004C4Dsv00001028sd000000BB* - ID_PRODUCT_FROM_DATABASE=Latitude CPx - -pci:v00001002d00004C4Dsv00001179sd0000FF00* - ID_PRODUCT_FROM_DATABASE=Satellite 1715XCDS laptop - -pci:v00001002d00004C4Dsv000013BDsd00001019* - ID_PRODUCT_FROM_DATABASE=PC-AR10 - -pci:v00001002d00004C50* - ID_PRODUCT_FROM_DATABASE=3D Rage LT PRO PCI - -pci:v00001002d00004C50sv00001002sd00004C50* - ID_PRODUCT_FROM_DATABASE=Rage LT Pro - -pci:v00001002d00004C52* - ID_PRODUCT_FROM_DATABASE=Rage Mobility-M1 PCI - -pci:v00001002d00004C52sv00001033sd00008112* - ID_PRODUCT_FROM_DATABASE=Versa Note VXi - -pci:v00001002d00004C54* - ID_PRODUCT_FROM_DATABASE=264LT [Mach64 LT] - -pci:v00001002d00004C57* - ID_PRODUCT_FROM_DATABASE=RV200/M7 [Mobility Radeon 7500] - -pci:v00001002d00004C57sv00001014sd00000517* - ID_PRODUCT_FROM_DATABASE=ThinkPad T30 - -pci:v00001002d00004C57sv00001014sd00000530* - ID_PRODUCT_FROM_DATABASE=ThinkPad T42 2373-4WU - -pci:v00001002d00004C57sv00001028sd000000E6* - ID_PRODUCT_FROM_DATABASE=Radeon Mobility M7 LW (Dell Inspiron 8100) - -pci:v00001002d00004C57sv00001028sd0000012A* - ID_PRODUCT_FROM_DATABASE=Latitude C640 - -pci:v00001002d00004C57sv00001043sd00001622* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon M7 (L3C/S) - -pci:v00001002d00004C57sv0000144Dsd0000C006* - ID_PRODUCT_FROM_DATABASE=Radeon Mobility M7 LW in vpr Matrix 170B4 - -pci:v00001002d00004C58* - ID_PRODUCT_FROM_DATABASE=RV200/M7 [Mobility FireGL 7800] - -pci:v00001002d00004C59* - ID_PRODUCT_FROM_DATABASE=RV100/M6 [Rage/Radeon Mobility Series] - -pci:v00001002d00004C59sv00000E11sd0000B111* - ID_PRODUCT_FROM_DATABASE=Evo N600c - -pci:v00001002d00004C59sv00001014sd00000235* - ID_PRODUCT_FROM_DATABASE=ThinkPad A30/A30p (2652/2653) - -pci:v00001002d00004C59sv00001014sd00000239* - ID_PRODUCT_FROM_DATABASE=ThinkPad X22/X23/X24 - -pci:v00001002d00004C59sv0000103Csd00000025* - ID_PRODUCT_FROM_DATABASE=XE4500 Notebook - -pci:v00001002d00004C59sv0000104Dsd000080E7* - ID_PRODUCT_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - -pci:v00001002d00004C59sv0000104Dsd00008140* - ID_PRODUCT_FROM_DATABASE=PCG-Z1SP laptop - -pci:v00001002d00004C59sv00001509sd00001930* - ID_PRODUCT_FROM_DATABASE=Medion MD9703 - -pci:v00001002d00004C66* - ID_PRODUCT_FROM_DATABASE=RV250/M9 [Mobility FireGL 9000/Radeon 9000] - -pci:v00001002d00004C66sv00001014sd0000054D* - ID_PRODUCT_FROM_DATABASE=ThinkPad T41 - -pci:v00001002d00004C6E* - ID_PRODUCT_FROM_DATABASE=RV250/M9 [Mobility Radeon 9000] (Secondary) - -pci:v00001002d00004D46* - ID_PRODUCT_FROM_DATABASE=Mobility 128 AGP 4X/Mobility M4 - -pci:v00001002d00004D52* - ID_PRODUCT_FROM_DATABASE=Theater 550 PRO PCI [ATI TV Wonder 550] - -pci:v00001002d00004D53* - ID_PRODUCT_FROM_DATABASE=Theater 550 PRO PCIe - -pci:v00001002d00004E44* - ID_PRODUCT_FROM_DATABASE=R300 [Radeon 9700/9700 PRO] - -pci:v00001002d00004E44sv00001002sd0000515E* - ID_PRODUCT_FROM_DATABASE=Radeon ES1000 - -pci:v00001002d00004E44sv00001002sd00005965* - ID_PRODUCT_FROM_DATABASE=Radeon ES1000 - -pci:v00001002d00004E45* - ID_PRODUCT_FROM_DATABASE=R300 [Radeon 9500 PRO/9700] - -pci:v00001002d00004E45sv00001002sd00000002* - ID_PRODUCT_FROM_DATABASE=Radeon R300 NE [Radeon 9500 Pro] - -pci:v00001002d00004E45sv00001681sd00000002* - ID_PRODUCT_FROM_DATABASE=Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] - -pci:v00001002d00004E46* - ID_PRODUCT_FROM_DATABASE=R300 NF [Radeon 9600 TX] - -pci:v00001002d00004E47* - ID_PRODUCT_FROM_DATABASE=R300 [FireGL X1] - -pci:v00001002d00004E48* - ID_PRODUCT_FROM_DATABASE=R350 [Radeon 9800 Series] - -pci:v00001002d00004E49* - ID_PRODUCT_FROM_DATABASE=R350 [Radeon 9800] - -pci:v00001002d00004E4A* - ID_PRODUCT_FROM_DATABASE=R360 [Radeon 9800 XXL/XT] - -pci:v00001002d00004E4Asv00001002sd00004E4A* - ID_PRODUCT_FROM_DATABASE=R360 [Radeon 9800 XT] - -pci:v00001002d00004E4B* - ID_PRODUCT_FROM_DATABASE=R350 [FireGL X2 AGP Pro] - -pci:v00001002d00004E50* - ID_PRODUCT_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600 PRO Turbo] - -pci:v00001002d00004E50sv00001025sd0000005A* - ID_PRODUCT_FROM_DATABASE=TravelMate 290 - -pci:v00001002d00004E50sv0000103Csd0000088C* - ID_PRODUCT_FROM_DATABASE=NC8000 laptop - -pci:v00001002d00004E50sv0000103Csd00000890* - ID_PRODUCT_FROM_DATABASE=NC6000 laptop - -pci:v00001002d00004E50sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P35 notebook - -pci:v00001002d00004E50sv00001462sd00000311* - ID_PRODUCT_FROM_DATABASE=MSI M510A - -pci:v00001002d00004E50sv00001734sd00001055* - ID_PRODUCT_FROM_DATABASE=Amilo M1420W - -pci:v00001002d00004E51* - ID_PRODUCT_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] - -pci:v00001002d00004E52* - ID_PRODUCT_FROM_DATABASE=RV350/M10 [Mobility Radeon 9500/9700 SE] - -pci:v00001002d00004E52sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P35 notebook - -pci:v00001002d00004E54* - ID_PRODUCT_FROM_DATABASE=RV350/M10 [Mobility FireGL T2] - -pci:v00001002d00004E56* - ID_PRODUCT_FROM_DATABASE=RV360/M12 [Mobility Radeon 9550] - -pci:v00001002d00004E64* - ID_PRODUCT_FROM_DATABASE=R300 [Radeon 9700 PRO] (Secondary) - -pci:v00001002d00004E65* - ID_PRODUCT_FROM_DATABASE=R300 [Radeon 9500 PRO] (Secondary) - -pci:v00001002d00004E65sv00001002sd00000003* - ID_PRODUCT_FROM_DATABASE=Radeon R300 NE [Radeon 9500 Pro] - -pci:v00001002d00004E65sv00001681sd00000003* - ID_PRODUCT_FROM_DATABASE=Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary) - -pci:v00001002d00004E66* - ID_PRODUCT_FROM_DATABASE=RV350 NF [Radeon 9600] (Secondary) - -pci:v00001002d00004E67* - ID_PRODUCT_FROM_DATABASE=R300 [FireGL X1] (Secondary) - -pci:v00001002d00004E68* - ID_PRODUCT_FROM_DATABASE=R350 [Radeon 9800 PRO] (Secondary) - -pci:v00001002d00004E69* - ID_PRODUCT_FROM_DATABASE=R350 [Radeon 9800] (Secondary) - -pci:v00001002d00004E6A* - ID_PRODUCT_FROM_DATABASE=RV350 NJ [Radeon 9800 XT] (Secondary) - -pci:v00001002d00004E6Asv00001002sd00004E6A* - ID_PRODUCT_FROM_DATABASE=R360 [Radeon 9800 XT] (Secondary) - -pci:v00001002d00004E6Asv00001002sd00004E71* - ID_PRODUCT_FROM_DATABASE=M10 NQ [Radeon Mobility 9600] - -pci:v00001002d00004E71* - ID_PRODUCT_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600] (Secondary) - -pci:v00001002d00004F72* - ID_PRODUCT_FROM_DATABASE=RV250 [Radeon 9000 Series] - -pci:v00001002d00004F73* - ID_PRODUCT_FROM_DATABASE=RV250 [Radeon 9000 Series] (Secondary) - -pci:v00001002d00005044* - ID_PRODUCT_FROM_DATABASE=All-In-Wonder 128 PCI - -pci:v00001002d00005044sv00001002sd00000028* - ID_PRODUCT_FROM_DATABASE=Rage 128 AIW - -pci:v00001002d00005044sv00001002sd00000029* - ID_PRODUCT_FROM_DATABASE=Rage 128 AIW - -pci:v00001002d00005046* - ID_PRODUCT_FROM_DATABASE=Rage 128 PF/PRO AGP 4x TMDS - -pci:v00001002d00005046sv00001002sd00000004* - ID_PRODUCT_FROM_DATABASE=Rage Fury Pro - -pci:v00001002d00005046sv00001002sd00000008* - ID_PRODUCT_FROM_DATABASE=Rage Fury Pro/Xpert 2000 Pro - -pci:v00001002d00005046sv00001002sd00000014* - ID_PRODUCT_FROM_DATABASE=Rage Fury Pro - -pci:v00001002d00005046sv00001002sd00000018* - ID_PRODUCT_FROM_DATABASE=Rage Fury Pro/Xpert 2000 Pro - -pci:v00001002d00005046sv00001002sd00000028* - ID_PRODUCT_FROM_DATABASE=Rage 128 Pro AIW AGP - -pci:v00001002d00005046sv00001002sd0000002A* - ID_PRODUCT_FROM_DATABASE=Rage 128 Pro AIW AGP - -pci:v00001002d00005046sv00001002sd00000048* - ID_PRODUCT_FROM_DATABASE=Rage Fury Pro - -pci:v00001002d00005046sv00001002sd00002000* - ID_PRODUCT_FROM_DATABASE=Rage Fury MAXX AGP 4x (TMDS) (VGA device) - -pci:v00001002d00005046sv00001002sd00002001* - ID_PRODUCT_FROM_DATABASE=Rage Fury MAXX AGP 4x (TMDS) (Extra device?!) - -pci:v00001002d00005050* - ID_PRODUCT_FROM_DATABASE=Rage128 [Xpert 128 PCI] - -pci:v00001002d00005050sv00001002sd00000008* - ID_PRODUCT_FROM_DATABASE=Xpert 128 - -pci:v00001002d00005052* - ID_PRODUCT_FROM_DATABASE=Rage 128 PRO AGP 4X TMDS - -pci:v00001002d00005144* - ID_PRODUCT_FROM_DATABASE=R100 QD [Radeon 7200] - -pci:v00001002d00005144sv00001002sd00000008* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon VE - -pci:v00001002d00005144sv00001002sd00000009* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon - -pci:v00001002d00005144sv00001002sd0000000A* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon - -pci:v00001002d00005144sv00001002sd0000001A* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon - -pci:v00001002d00005144sv00001002sd00000029* - ID_PRODUCT_FROM_DATABASE=Radeon AIW - -pci:v00001002d00005144sv00001002sd00000038* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon - -pci:v00001002d00005144sv00001002sd00000039* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon - -pci:v00001002d00005144sv00001002sd0000008A* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon - -pci:v00001002d00005144sv00001002sd000000BA* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon - -pci:v00001002d00005144sv00001002sd00000139* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon - -pci:v00001002d00005144sv00001002sd0000028A* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon - -pci:v00001002d00005144sv00001002sd000002AA* - ID_PRODUCT_FROM_DATABASE=Radeon AIW - -pci:v00001002d00005144sv00001002sd0000053A* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon - -pci:v00001002d00005148* - ID_PRODUCT_FROM_DATABASE=R200 QH [Radeon 8500] - -pci:v00001002d00005148sv00001002sd0000010A* - ID_PRODUCT_FROM_DATABASE=FireGL 8800 64Mb - -pci:v00001002d00005148sv00001002sd00000152* - ID_PRODUCT_FROM_DATABASE=FireGL 8800 128Mb - -pci:v00001002d00005148sv00001002sd00000162* - ID_PRODUCT_FROM_DATABASE=FireGL 8700 32Mb - -pci:v00001002d00005148sv00001002sd00000172* - ID_PRODUCT_FROM_DATABASE=FireGL 8700 64Mb - -pci:v00001002d0000514C* - ID_PRODUCT_FROM_DATABASE=R200 QL [Radeon 8500/8500 LE] - -pci:v00001002d0000514Csv00001002sd0000003A* - ID_PRODUCT_FROM_DATABASE=Radeon R200 QL [Radeon 8500 LE] - -pci:v00001002d0000514Csv00001002sd0000013A* - ID_PRODUCT_FROM_DATABASE=Radeon 8500 - -pci:v00001002d0000514Csv0000148Csd00002026* - ID_PRODUCT_FROM_DATABASE=R200 QL [Radeon 8500 Evil Master II Multi Display Edition] - -pci:v00001002d0000514Csv00001681sd00000010* - ID_PRODUCT_FROM_DATABASE=Radeon 8500 [3D Prophet 8500 128Mb] - -pci:v00001002d0000514Csv0000174Bsd00007149* - ID_PRODUCT_FROM_DATABASE=Radeon R200 QL [Sapphire Radeon 8500 LE] - -pci:v00001002d0000514Csv00001787sd00000F08* - ID_PRODUCT_FROM_DATABASE=Radeon R200 QL [PowerMagic Radeon 8500] - -pci:v00001002d0000514D* - ID_PRODUCT_FROM_DATABASE=R200 QM [Radeon 9100] - -pci:v00001002d00005157* - ID_PRODUCT_FROM_DATABASE=RV200 QW [Radeon 7500] - -pci:v00001002d00005157sv00001002sd0000013A* - ID_PRODUCT_FROM_DATABASE=Radeon 7500 - -pci:v00001002d00005157sv00001002sd00000F2B* - ID_PRODUCT_FROM_DATABASE=ALL-IN-WONDER VE PCI - -pci:v00001002d00005157sv00001002sd0000103A* - ID_PRODUCT_FROM_DATABASE=Dell Optiplex GX260 - -pci:v00001002d00005157sv00001458sd00004000* - ID_PRODUCT_FROM_DATABASE=RV200 QW [RADEON 7500 PRO MAYA AR] - -pci:v00001002d00005157sv0000148Csd00002024* - ID_PRODUCT_FROM_DATABASE=RV200 QW [Radeon 7500LE Dual Display] - -pci:v00001002d00005157sv0000148Csd00002025* - ID_PRODUCT_FROM_DATABASE=RV200 QW [Radeon 7500 Evil Master Multi Display Edition] - -pci:v00001002d00005157sv0000148Csd00002036* - ID_PRODUCT_FROM_DATABASE=RV200 QW [Radeon 7500 PCI Dual Display] - -pci:v00001002d00005157sv0000174Bsd00007146* - ID_PRODUCT_FROM_DATABASE=RV200 QW [Radeon 7500 LE] - -pci:v00001002d00005157sv0000174Bsd00007147* - ID_PRODUCT_FROM_DATABASE=RV200 QW [Sapphire Radeon 7500LE] - -pci:v00001002d00005157sv0000174Bsd00007161* - ID_PRODUCT_FROM_DATABASE=Radeon RV200 QW [Radeon 7500 LE] - -pci:v00001002d00005157sv000017AFsd00000202* - ID_PRODUCT_FROM_DATABASE=RV200 QW [Excalibur Radeon 7500LE] - -pci:v00001002d00005159* - ID_PRODUCT_FROM_DATABASE=RV100 QY [Radeon 7000/VE] - -pci:v00001002d00005159sv00001002sd0000000A* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon VE - -pci:v00001002d00005159sv00001002sd0000000B* - ID_PRODUCT_FROM_DATABASE=Radeon 7000 - -pci:v00001002d00005159sv00001002sd00000038* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon VE - -pci:v00001002d00005159sv00001002sd0000003A* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon VE - -pci:v00001002d00005159sv00001002sd000000BA* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon VE - -pci:v00001002d00005159sv00001002sd0000013A* - ID_PRODUCT_FROM_DATABASE=Radeon 7000/Radeon VE - -pci:v00001002d00005159sv00001002sd00000908* - ID_PRODUCT_FROM_DATABASE=XVR-100 (supplied by Sun) - -pci:v00001002d00005159sv00001014sd0000029A* - ID_PRODUCT_FROM_DATABASE=Remote Supervisor Adapter II (RSA2) - -pci:v00001002d00005159sv00001014sd000002C8* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00001002d00005159sv00001028sd0000016C* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1850 Embedded Radeon 7000/VE - -pci:v00001002d00005159sv00001028sd0000016D* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2850 Embedded Radeon 7000-M - -pci:v00001002d00005159sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 Embedded Radeon 7000/VE - -pci:v00001002d00005159sv00001028sd0000019A* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC1425 - -pci:v00001002d00005159sv0000103Csd00001292* - ID_PRODUCT_FROM_DATABASE=Radeon 7000 - -pci:v00001002d00005159sv00001043sd0000C00A* - ID_PRODUCT_FROM_DATABASE=A7000/T/64M - -pci:v00001002d00005159sv00001458sd00004002* - ID_PRODUCT_FROM_DATABASE=RV100 QY [RADEON 7000 PRO MAYA AV Series] - -pci:v00001002d00005159sv0000148Csd00002003* - ID_PRODUCT_FROM_DATABASE=RV100 QY [Radeon 7000 Multi-Display Edition] - -pci:v00001002d00005159sv0000148Csd00002023* - ID_PRODUCT_FROM_DATABASE=RV100 QY [Radeon 7000 Evil Master Multi-Display] - -pci:v00001002d00005159sv0000174Bsd00000280* - ID_PRODUCT_FROM_DATABASE=Radeon RV100 QY [Radeon 7000/VE] - -pci:v00001002d00005159sv0000174Bsd00007112* - ID_PRODUCT_FROM_DATABASE=RV100 QY [Sapphire Radeon VE 7000] - -pci:v00001002d00005159sv0000174Bsd00007C28* - ID_PRODUCT_FROM_DATABASE=Sapphire Radeon VE 7000 DDR - -pci:v00001002d00005159sv00001787sd00000202* - ID_PRODUCT_FROM_DATABASE=RV100 QY [Excalibur Radeon 7000] - -pci:v00001002d00005159sv000017EEsd00001001* - ID_PRODUCT_FROM_DATABASE=Radeon 7000 64MB DDR + DVI - -pci:v00001002d0000515E* - ID_PRODUCT_FROM_DATABASE=ES1000 - -pci:v00001002d0000515Esv00001028sd000001BB* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1955 Embedded ATI ES1000 - -pci:v00001002d0000515Esv00001028sd000001DF* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC440 - -pci:v00001002d0000515Esv00001028sd000001E6* - ID_PRODUCT_FROM_DATABASE=PowerEdge 860 - -pci:v00001002d0000515Esv00001028sd000001F0* - ID_PRODUCT_FROM_DATABASE=PowerEdge R900 Embedded ATI ES1000 - -pci:v00001002d0000515Esv00001028sd00000205* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2970 Embedded ATI ES1000 - -pci:v00001002d0000515Esv00001028sd0000020B* - ID_PRODUCT_FROM_DATABASE=PowerEdge T605 Embedded ATI ES1000 - -pci:v00001002d0000515Esv00001028sd0000020F* - ID_PRODUCT_FROM_DATABASE=PowerEdge R300 Embedded ATI ES1000 - -pci:v00001002d0000515Esv00001028sd00000210* - ID_PRODUCT_FROM_DATABASE=PowerEdge T300 Embedded ATI ES1000 - -pci:v00001002d0000515Esv00001028sd00000221* - ID_PRODUCT_FROM_DATABASE=PowerEdge R805 Embedded ATI ES1000 - -pci:v00001002d0000515Esv00001028sd00000223* - ID_PRODUCT_FROM_DATABASE=PowerEdge R905 Embedded ATI ES1000 - -pci:v00001002d0000515Esv00001028sd00000225* - ID_PRODUCT_FROM_DATABASE=PowerEdge T105 Embedded ATI ES1000 - -pci:v00001002d0000515Esv00001028sd0000023C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R200 Embedded ATI ES1000 - -pci:v00001002d0000515Esv0000103Csd00001304* - ID_PRODUCT_FROM_DATABASE=Integrity iLO2 Advanced KVM VGA [AD307A] - -pci:v00001002d0000515Esv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00001002d0000515Esv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00001002d0000515Esv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board - -pci:v00001002d00005245* - ID_PRODUCT_FROM_DATABASE=Rage 128 GL PCI - -pci:v00001002d00005245sv00001002sd00000008* - ID_PRODUCT_FROM_DATABASE=Xpert 128 - -pci:v00001002d00005245sv00001002sd00000028* - ID_PRODUCT_FROM_DATABASE=Rage 128 AIW - -pci:v00001002d00005245sv00001002sd00000029* - ID_PRODUCT_FROM_DATABASE=Rage 128 AIW - -pci:v00001002d00005245sv00001002sd00000068* - ID_PRODUCT_FROM_DATABASE=Rage 128 AIW - -pci:v00001002d00005246* - ID_PRODUCT_FROM_DATABASE=Rage Fury/Xpert 128/Xpert 2000 AGP 2x - -pci:v00001002d00005246sv00001002sd00000004* - ID_PRODUCT_FROM_DATABASE=Magnum/Xpert 128/Xpert 99 - -pci:v00001002d00005246sv00001002sd00000008* - ID_PRODUCT_FROM_DATABASE=Magnum/Xpert128/X99/Xpert2000 - -pci:v00001002d00005246sv00001002sd00000028* - ID_PRODUCT_FROM_DATABASE=Rage 128 AIW AGP - -pci:v00001002d00005246sv00001002sd00000044* - ID_PRODUCT_FROM_DATABASE=Rage Fury/Xpert 128/Xpert 2000 - -pci:v00001002d00005246sv00001002sd00000068* - ID_PRODUCT_FROM_DATABASE=Rage 128 AIW AGP - -pci:v00001002d00005246sv00001002sd00000448* - ID_PRODUCT_FROM_DATABASE=Rage Fury - -pci:v00001002d0000524B* - ID_PRODUCT_FROM_DATABASE=Rage 128 VR PCI - -pci:v00001002d0000524C* - ID_PRODUCT_FROM_DATABASE=Rage 128 VR AGP - -pci:v00001002d0000524Csv00001002sd00000008* - ID_PRODUCT_FROM_DATABASE=Xpert 99/Xpert 2000 - -pci:v00001002d0000524Csv00001002sd00000088* - ID_PRODUCT_FROM_DATABASE=Xpert 99 - -pci:v00001002d00005346* - ID_PRODUCT_FROM_DATABASE=Rage 128 SF/4x AGP 2x - -pci:v00001002d00005346sv00001002sd00000048* - ID_PRODUCT_FROM_DATABASE=RAGE 128 16MB VGA TVOUT AMC PAL - -pci:v00001002d0000534D* - ID_PRODUCT_FROM_DATABASE=Rage 128 4X AGP 4x - -pci:v00001002d0000534Dsv00001002sd00000008* - ID_PRODUCT_FROM_DATABASE=Xpert 99/Xpert 2000 - -pci:v00001002d0000534Dsv00001002sd00000018* - ID_PRODUCT_FROM_DATABASE=Xpert 2000 - -pci:v00001002d00005354* - ID_PRODUCT_FROM_DATABASE=Mach 64 VT - -pci:v00001002d00005354sv00001002sd00005654* - ID_PRODUCT_FROM_DATABASE=Mach 64 reference - -pci:v00001002d00005446* - ID_PRODUCT_FROM_DATABASE=Rage 128 PRO Ultra AGP 4x - -pci:v00001002d00005446sv00001002sd00000004* - ID_PRODUCT_FROM_DATABASE=Rage Fury Pro - -pci:v00001002d00005446sv00001002sd00000008* - ID_PRODUCT_FROM_DATABASE=Rage Fury Pro/Xpert 2000 Pro - -pci:v00001002d00005446sv00001002sd00000018* - ID_PRODUCT_FROM_DATABASE=Rage Fury Pro/Xpert 2000 Pro - -pci:v00001002d00005446sv00001002sd00000028* - ID_PRODUCT_FROM_DATABASE=Rage 128 AIW Pro AGP - -pci:v00001002d00005446sv00001002sd00000029* - ID_PRODUCT_FROM_DATABASE=Rage 128 AIW - -pci:v00001002d00005446sv00001002sd0000002A* - ID_PRODUCT_FROM_DATABASE=Rage 128 AIW Pro AGP - -pci:v00001002d00005446sv00001002sd0000002B* - ID_PRODUCT_FROM_DATABASE=Rage 128 AIW - -pci:v00001002d00005446sv00001002sd00000048* - ID_PRODUCT_FROM_DATABASE=Xpert 2000 Pro - -pci:v00001002d00005452* - ID_PRODUCT_FROM_DATABASE=Rage 128 PRO Ultra4XL VR-R AGP - -pci:v00001002d00005452sv00001002sd0000001C* - ID_PRODUCT_FROM_DATABASE=Rage 128 Pro 4XL - -pci:v00001002d00005452sv0000103Csd00001279* - ID_PRODUCT_FROM_DATABASE=Rage 128 Pro 4XL - -pci:v00001002d00005460* - ID_PRODUCT_FROM_DATABASE=RV370/M22 [Mobility Radeon X300] - -pci:v00001002d00005460sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00001002d00005461* - ID_PRODUCT_FROM_DATABASE=RV370/M22 [Mobility Radeon X300] - -pci:v00001002d00005462* - ID_PRODUCT_FROM_DATABASE=RV380/M24C [Mobility Radeon X600 SE] - -pci:v00001002d00005464* - ID_PRODUCT_FROM_DATABASE=RV370/M22 GL [Mobility FireGL V3100] - -pci:v00001002d00005549* - ID_PRODUCT_FROM_DATABASE=R423 UI [Radeon X800 GTO] - -pci:v00001002d0000554A* - ID_PRODUCT_FROM_DATABASE=R423 [Radeon X800 XT Platinum Edition] - -pci:v00001002d0000554B* - ID_PRODUCT_FROM_DATABASE=R423 UK [Radeon X800 GT] - -pci:v00001002d0000554Bsv00001002sd00000302* - ID_PRODUCT_FROM_DATABASE=Radeon X800 SE - -pci:v00001002d0000554D* - ID_PRODUCT_FROM_DATABASE=R430 [Radeon X800 XL] - -pci:v00001002d0000554Dsv00001002sd00000322* - ID_PRODUCT_FROM_DATABASE=All-In-Wonder X800 XL - -pci:v00001002d0000554Dsv00001458sd00002124* - ID_PRODUCT_FROM_DATABASE=GV-R80L256V-B (AGP) - -pci:v00001002d0000554E* - ID_PRODUCT_FROM_DATABASE=R430 [All-In-Wonder X800 GT] - -pci:v00001002d0000554F* - ID_PRODUCT_FROM_DATABASE=R430 [Radeon X800] - -pci:v00001002d00005550* - ID_PRODUCT_FROM_DATABASE=R423 [FireGL V7100] - -pci:v00001002d00005551* - ID_PRODUCT_FROM_DATABASE=R423 [FireGL V5100] - -pci:v00001002d00005569* - ID_PRODUCT_FROM_DATABASE=R423 UI [Radeon X800 PRO] (Secondary) - -pci:v00001002d0000556B* - ID_PRODUCT_FROM_DATABASE=R423 [Radeon X800 GT] (Secondary) - -pci:v00001002d0000556D* - ID_PRODUCT_FROM_DATABASE=R430 [Radeon X800 XL] (Secondary) - -pci:v00001002d0000556Dsv00001458sd00002125* - ID_PRODUCT_FROM_DATABASE=GV-R80L256V-B (AGP) - -pci:v00001002d0000556F* - ID_PRODUCT_FROM_DATABASE=R430 [Radeon X800] (Secondary) - -pci:v00001002d00005571* - ID_PRODUCT_FROM_DATABASE=R423 GL [FireGL V5100] (Secondary) - -pci:v00001002d0000564B* - ID_PRODUCT_FROM_DATABASE=RV410/M26 [Mobility FireGL V5000] - -pci:v00001002d0000564F* - ID_PRODUCT_FROM_DATABASE=RV410/M26 [Mobility Radeon X700 XL] - -pci:v00001002d00005652* - ID_PRODUCT_FROM_DATABASE=RV410/M26 [Mobility Radeon X700] - -pci:v00001002d00005653* - ID_PRODUCT_FROM_DATABASE=RV410/M26 [Mobility Radeon X700] - -pci:v00001002d00005653sv00001025sd00000080* - ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMi - -pci:v00001002d00005653sv0000103Csd00000940* - ID_PRODUCT_FROM_DATABASE=HP Compaq NW8240 Mobile Workstation - -pci:v00001002d00005654* - ID_PRODUCT_FROM_DATABASE=264VT [Mach64 VT] - -pci:v00001002d00005654sv00001002sd00005654* - ID_PRODUCT_FROM_DATABASE=Mach64VT Reference - -pci:v00001002d00005655* - ID_PRODUCT_FROM_DATABASE=264VT3 [Mach64 VT3] - -pci:v00001002d00005656* - ID_PRODUCT_FROM_DATABASE=264VT4 [Mach64 VT4] - -pci:v00001002d00005657* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X550 XTX / X700] - -pci:v00001002d00005830* - ID_PRODUCT_FROM_DATABASE=RS300 Host Bridge - -pci:v00001002d00005831* - ID_PRODUCT_FROM_DATABASE=RS300 Host Bridge - -pci:v00001002d00005832* - ID_PRODUCT_FROM_DATABASE=RS300 Host Bridge - -pci:v00001002d00005833* - ID_PRODUCT_FROM_DATABASE=Radeon 9100 IGP Host Bridge - -pci:v00001002d00005834* - ID_PRODUCT_FROM_DATABASE=RS300 [Radeon 9100 IGP] - -pci:v00001002d00005835* - ID_PRODUCT_FROM_DATABASE=RS300M [Mobility Radeon 9100 IGP] - -pci:v00001002d00005838* - ID_PRODUCT_FROM_DATABASE=Radeon 9100 IGP AGP Bridge - -pci:v00001002d00005854* - ID_PRODUCT_FROM_DATABASE=RS480 [Radeon Xpress 200 Series] (Secondary) - -pci:v00001002d00005874* - ID_PRODUCT_FROM_DATABASE=RS480 [Radeon Xpress 1150] (Secondary) - -pci:v00001002d00005940* - ID_PRODUCT_FROM_DATABASE=RV280 [Radeon 9200 PRO] (Secondary) - -pci:v00001002d00005940sv000017AFsd00002021* - ID_PRODUCT_FROM_DATABASE=Excalibur Radeon 9250 (Secondary) - -pci:v00001002d00005941* - ID_PRODUCT_FROM_DATABASE=RV280 [Radeon 9200] (Secondary) - -pci:v00001002d00005941sv00001458sd00004019* - ID_PRODUCT_FROM_DATABASE=Gigabyte Radeon 9200 - -pci:v00001002d00005941sv0000174Bsd00007C12* - ID_PRODUCT_FROM_DATABASE=Sapphire Radeon 9200 - -pci:v00001002d00005941sv000017AFsd0000200D* - ID_PRODUCT_FROM_DATABASE=Excalibur Radeon 9200 - -pci:v00001002d00005941sv000018BCsd00000050* - ID_PRODUCT_FROM_DATABASE=GeXcube GC-R9200-C3 (Secondary) - -pci:v00001002d00005944* - ID_PRODUCT_FROM_DATABASE=RV280 [Radeon 9200 SE PCI] - -pci:v00001002d00005950* - ID_PRODUCT_FROM_DATABASE=RS480 Host Bridge - -pci:v00001002d00005950sv00001025sd00000080* - ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMMi - -pci:v00001002d00005950sv0000103Csd0000280A* - ID_PRODUCT_FROM_DATABASE=DC5750 Microtower - -pci:v00001002d00005950sv0000103Csd00002A20* - ID_PRODUCT_FROM_DATABASE=Pavilion t3030.de Desktop PC - -pci:v00001002d00005950sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v00001002d00005950sv00001462sd00000131* - ID_PRODUCT_FROM_DATABASE=MS-1013 Notebook - -pci:v00001002d00005950sv00001462sd00007217* - ID_PRODUCT_FROM_DATABASE=Aspire L250 - -pci:v00001002d00005951* - ID_PRODUCT_FROM_DATABASE=Radeon Xpress 200 (RS480/RS482/RX480/RX482) Chipset - Host bridge - -pci:v00001002d00005952* - ID_PRODUCT_FROM_DATABASE=RD580 [CrossFire Xpress 3200] Chipset Host Bridge - -pci:v00001002d00005954* - ID_PRODUCT_FROM_DATABASE=RS480 [Radeon Xpress 200 Series] - -pci:v00001002d00005954sv00001002sd00005954* - ID_PRODUCT_FROM_DATABASE=RV370 [Radeon Xpress 200G Series] - -pci:v00001002d00005955* - ID_PRODUCT_FROM_DATABASE=RS480M [Mobility Radeon Xpress 200] - -pci:v00001002d00005955sv00001002sd00005955* - ID_PRODUCT_FROM_DATABASE=RS480 0x5955 [Radeon XPRESS 200M 5955 (PCIE)] - -pci:v00001002d00005955sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v00001002d00005955sv00001462sd00000131* - ID_PRODUCT_FROM_DATABASE=MS-1013 Notebook - -pci:v00001002d00005956* - ID_PRODUCT_FROM_DATABASE=RD790 Northbridge only dual slot PCI-e_GFX and HT3 K8 part - -pci:v00001002d00005957* - ID_PRODUCT_FROM_DATABASE=RX780/RX790 Chipset Host Bridge - -pci:v00001002d00005957sv00001849sd00005957* - ID_PRODUCT_FROM_DATABASE=A770CrossFire Motherboard - -pci:v00001002d00005958* - ID_PRODUCT_FROM_DATABASE=RD780 Northbridge only dual slot PCI-e_GFX and HT1 K8 part - -pci:v00001002d00005960* - ID_PRODUCT_FROM_DATABASE=RV280 [Radeon 9200 PRO] - -pci:v00001002d00005960sv000017AFsd00002020* - ID_PRODUCT_FROM_DATABASE=Excalibur Radeon 9250 - -pci:v00001002d00005961* - ID_PRODUCT_FROM_DATABASE=RV280 [Radeon 9200] - -pci:v00001002d00005961sv00001002sd00002F72* - ID_PRODUCT_FROM_DATABASE=All-in-Wonder 9200 Series - -pci:v00001002d00005961sv00001019sd00004C30* - ID_PRODUCT_FROM_DATABASE=Radeon 9200 VIVO - -pci:v00001002d00005961sv000012ABsd00005961* - ID_PRODUCT_FROM_DATABASE=YUAN SMARTVGA Radeon 9200 - -pci:v00001002d00005961sv00001458sd00004018* - ID_PRODUCT_FROM_DATABASE=Gigabyte Radeon 9200 - -pci:v00001002d00005961sv0000174Bsd00007C13* - ID_PRODUCT_FROM_DATABASE=Sapphire Radeon 9200 - -pci:v00001002d00005961sv000017AFsd0000200C* - ID_PRODUCT_FROM_DATABASE=Excalibur Radeon 9200 - -pci:v00001002d00005961sv000018BCsd00000050* - ID_PRODUCT_FROM_DATABASE=Radeon 9200 Game Buster - -pci:v00001002d00005961sv000018BCsd00000051* - ID_PRODUCT_FROM_DATABASE=GeXcube GC-R9200-C3 - -pci:v00001002d00005961sv000018BCsd00000053* - ID_PRODUCT_FROM_DATABASE=Radeon 9200 Game Buster VIVO - -pci:v00001002d00005962* - ID_PRODUCT_FROM_DATABASE=RV280 [Radeon 9200] - -pci:v00001002d00005964* - ID_PRODUCT_FROM_DATABASE=RV280 [Radeon 9200 SE] - -pci:v00001002d00005964sv00001002sd00005964* - ID_PRODUCT_FROM_DATABASE=Radeon 9200 SE, 64-bit 128MB DDR, 200/166MHz - -pci:v00001002d00005964sv00001043sd0000C006* - ID_PRODUCT_FROM_DATABASE=ASUS Radeon 9200 SE / TD / 128M - -pci:v00001002d00005964sv00001458sd00004018* - ID_PRODUCT_FROM_DATABASE=Radeon 9200 SE - -pci:v00001002d00005964sv00001458sd00004032* - ID_PRODUCT_FROM_DATABASE=Radeon 9200 SE 128MB - -pci:v00001002d00005964sv0000147Bsd00006191* - ID_PRODUCT_FROM_DATABASE=R9200SE-DT - -pci:v00001002d00005964sv0000148Csd00002073* - ID_PRODUCT_FROM_DATABASE=CN-AG92E - -pci:v00001002d00005964sv0000174Bsd00007C13* - ID_PRODUCT_FROM_DATABASE=Sapphire Radeon 9200 SE - -pci:v00001002d00005964sv00001787sd00005964* - ID_PRODUCT_FROM_DATABASE=Excalibur 9200SE VIVO 128M - -pci:v00001002d00005964sv000017AFsd00002012* - ID_PRODUCT_FROM_DATABASE=Radeon 9200 SE Excalibur - -pci:v00001002d00005964sv000018BCsd00000170* - ID_PRODUCT_FROM_DATABASE=Sapphire Radeon 9200 SE 128MB Game Buster - -pci:v00001002d00005964sv000018BCsd00000173* - ID_PRODUCT_FROM_DATABASE=GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] - -pci:v00001002d00005965* - ID_PRODUCT_FROM_DATABASE=RV280 [FireMV 2200 PCI] - -pci:v00001002d00005974* - ID_PRODUCT_FROM_DATABASE=RS482 [Radeon Xpress 200/1150] - -pci:v00001002d00005974sv0000103Csd0000280A* - ID_PRODUCT_FROM_DATABASE=DC5750 Microtower - -pci:v00001002d00005974sv00001462sd00007141* - ID_PRODUCT_FROM_DATABASE=Aspire L250 - -pci:v00001002d00005975* - ID_PRODUCT_FROM_DATABASE=RS482M [Mobility Radeon Xpress 200] - -pci:v00001002d00005978* - ID_PRODUCT_FROM_DATABASE=RD790 PCI to PCI bridge (external gfx0 port A) - -pci:v00001002d00005978sv00001849sd00005957* - ID_PRODUCT_FROM_DATABASE=A770CrossFire Motherboard - -pci:v00001002d00005979* - ID_PRODUCT_FROM_DATABASE=RD790 PCI to PCI bridge (external gfx0 port B) - -pci:v00001002d0000597A* - ID_PRODUCT_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port A) - -pci:v00001002d0000597B* - ID_PRODUCT_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port B) - -pci:v00001002d0000597C* - ID_PRODUCT_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port C) - -pci:v00001002d0000597D* - ID_PRODUCT_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port D) - -pci:v00001002d0000597E* - ID_PRODUCT_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port E) - -pci:v00001002d0000597Esv00001849sd00005957* - ID_PRODUCT_FROM_DATABASE=A770CrossFire Motherboard - -pci:v00001002d0000597F* - ID_PRODUCT_FROM_DATABASE=RD790 PCI to PCI bridge (PCI express gpp port F) - -pci:v00001002d0000597Fsv00001849sd00005957* - ID_PRODUCT_FROM_DATABASE=A770CrossFire Motherboard - -pci:v00001002d00005980* - ID_PRODUCT_FROM_DATABASE=RD790 PCI to PCI bridge (external gfx1 port A) - -pci:v00001002d00005981* - ID_PRODUCT_FROM_DATABASE=RD790 PCI to PCI bridge (external gfx1 port B) - -pci:v00001002d00005982* - ID_PRODUCT_FROM_DATABASE=RD790 PCI to PCI bridge (NB-SB link) - -pci:v00001002d00005A10* - ID_PRODUCT_FROM_DATABASE=RD890 Northbridge only dual slot (2x16) PCI-e GFX Hydra part - -pci:v00001002d00005A11* - ID_PRODUCT_FROM_DATABASE=RD890 Northbridge only single slot PCI-e GFX Hydra part - -pci:v00001002d00005A12* - ID_PRODUCT_FROM_DATABASE=RD890 Northbridge only dual slot (2x8) PCI-e GFX Hydra part - -pci:v00001002d00005A12sv000015D9sd0000A811* - ID_PRODUCT_FROM_DATABASE=H8DGU - -pci:v00001002d00005A13* - ID_PRODUCT_FROM_DATABASE=RD890 PCI to PCI bridge (external gfx0 port A) - -pci:v00001002d00005A14* - ID_PRODUCT_FROM_DATABASE=RD890 PCI to PCI bridge (external gfx0 port B) - -pci:v00001002d00005A15* - ID_PRODUCT_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port A) - -pci:v00001002d00005A16* - ID_PRODUCT_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port B) - -pci:v00001002d00005A17* - ID_PRODUCT_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port C) - -pci:v00001002d00005A18* - ID_PRODUCT_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port D) - -pci:v00001002d00005A18sv000015D9sd0000A811* - ID_PRODUCT_FROM_DATABASE=H8DGU - -pci:v00001002d00005A19* - ID_PRODUCT_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port E) - -pci:v00001002d00005A1A* - ID_PRODUCT_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port F) - -pci:v00001002d00005A1B* - ID_PRODUCT_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port G) - -pci:v00001002d00005A1C* - ID_PRODUCT_FROM_DATABASE=RD890 PCI to PCI bridge (PCI express gpp port H) - -pci:v00001002d00005A1D* - ID_PRODUCT_FROM_DATABASE=RD890 PCI to PCI bridge (external gfx1 port A) - -pci:v00001002d00005A1E* - ID_PRODUCT_FROM_DATABASE=RD890 PCI to PCI bridge (external gfx1 port B) - -pci:v00001002d00005A1F* - ID_PRODUCT_FROM_DATABASE=RD890 PCI to PCI bridge (NB-SB link) - -pci:v00001002d00005A1Fsv000015D9sd0000A811* - ID_PRODUCT_FROM_DATABASE=H8DGU - -pci:v00001002d00005A20* - ID_PRODUCT_FROM_DATABASE=RD890S PCI Express bridge for GPP2 port 1 - -pci:v00001002d00005A23* - ID_PRODUCT_FROM_DATABASE=RD990 I/O Memory Management Unit (IOMMU) - -pci:v00001002d00005A33* - ID_PRODUCT_FROM_DATABASE=Radeon Xpress 200 Host Bridge - -pci:v00001002d00005A34* - ID_PRODUCT_FROM_DATABASE=RS480 PCI-X Root Port - -pci:v00001002d00005A36* - ID_PRODUCT_FROM_DATABASE=RS480 PCI Bridge - -pci:v00001002d00005A37* - ID_PRODUCT_FROM_DATABASE=RS480 PCI Bridge - -pci:v00001002d00005A38* - ID_PRODUCT_FROM_DATABASE=RS480 PCI Bridge - -pci:v00001002d00005A39* - ID_PRODUCT_FROM_DATABASE=RS480 PCI Bridge - -pci:v00001002d00005A3F* - ID_PRODUCT_FROM_DATABASE=RS480 PCI Bridge - -pci:v00001002d00005A3Fsv00001462sd00007217* - ID_PRODUCT_FROM_DATABASE=Aspire L250 - -pci:v00001002d00005A41* - ID_PRODUCT_FROM_DATABASE=RS400 [Radeon Xpress 200] - -pci:v00001002d00005A42* - ID_PRODUCT_FROM_DATABASE=RS400M [Radeon Xpress 200M] - -pci:v00001002d00005A61* - ID_PRODUCT_FROM_DATABASE=RC410 [Radeon Xpress 200/1100] - -pci:v00001002d00005A62* - ID_PRODUCT_FROM_DATABASE=RC410M [Mobility Radeon Xpress 200M] - -pci:v00001002d00005B60* - ID_PRODUCT_FROM_DATABASE=RV370 [Radeon X300] - -pci:v00001002d00005B60sv00001043sd0000002A* - ID_PRODUCT_FROM_DATABASE=Extreme AX300SE-X - -pci:v00001002d00005B60sv00001043sd0000032E* - ID_PRODUCT_FROM_DATABASE=Extreme AX300/TD - -pci:v00001002d00005B60sv00001458sd00002102* - ID_PRODUCT_FROM_DATABASE=GV-RX30S128D (X300SE) - -pci:v00001002d00005B60sv00001462sd00000400* - ID_PRODUCT_FROM_DATABASE=RX300SE-TD128E (MS-8940 REV:200) - -pci:v00001002d00005B60sv00001462sd00000402* - ID_PRODUCT_FROM_DATABASE=RX300SE-TD128E (MS-8940) - -pci:v00001002d00005B60sv0000174Bsd00000500* - ID_PRODUCT_FROM_DATABASE=Radeon X300 (PCIE) - -pci:v00001002d00005B60sv0000196Dsd00001086* - ID_PRODUCT_FROM_DATABASE=X300SE HM - -pci:v00001002d00005B62* - ID_PRODUCT_FROM_DATABASE=RV370 [Radeon X600/X600 SE] - -pci:v00001002d00005B63* - ID_PRODUCT_FROM_DATABASE=RV370 [Radeon X300/X550/X1050 Series] - -pci:v00001002d00005B64* - ID_PRODUCT_FROM_DATABASE=RV370 [FireGL V3100] - -pci:v00001002d00005B65* - ID_PRODUCT_FROM_DATABASE=RV370 [FireMV 2200] - -pci:v00001002d00005B66* - ID_PRODUCT_FROM_DATABASE=RV370X - -pci:v00001002d00005B70* - ID_PRODUCT_FROM_DATABASE=RV370 [Radeon X300 SE] - -pci:v00001002d00005B70sv00001462sd00000403* - ID_PRODUCT_FROM_DATABASE=RX300SE-TD128E (MS-8940) (secondary display) - -pci:v00001002d00005B70sv0000174Bsd00000501* - ID_PRODUCT_FROM_DATABASE=Radeon X300SE - -pci:v00001002d00005B70sv0000196Dsd00001087* - ID_PRODUCT_FROM_DATABASE=X300SE HM - -pci:v00001002d00005B72* - ID_PRODUCT_FROM_DATABASE=RV380 [Radeon X300/X550/X1050 Series] (Secondary) - -pci:v00001002d00005B73* - ID_PRODUCT_FROM_DATABASE=RV370 [Radeon X300/X550/X1050 Series] (Secondary) - -pci:v00001002d00005B74* - ID_PRODUCT_FROM_DATABASE=RV370 [FireGL V3100] (Secondary) - -pci:v00001002d00005B75* - ID_PRODUCT_FROM_DATABASE=RV370 [FireMV 2200] (Secondary) - -pci:v00001002d00005C61* - ID_PRODUCT_FROM_DATABASE=RV280/M9+ [Mobility Radeon 9200 AGP] - -pci:v00001002d00005C63* - ID_PRODUCT_FROM_DATABASE=RV280/M9+ [Mobility Radeon 9200 AGP] - -pci:v00001002d00005C63sv00001002sd00005C63* - ID_PRODUCT_FROM_DATABASE=Apple iBook G4 2004 - -pci:v00001002d00005C63sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30 notebook - -pci:v00001002d00005D44* - ID_PRODUCT_FROM_DATABASE=RV280 [Radeon 9200 SE] (Secondary) - -pci:v00001002d00005D44sv00001458sd00004019* - ID_PRODUCT_FROM_DATABASE=Radeon 9200 SE (Secondary) - -pci:v00001002d00005D44sv00001458sd00004032* - ID_PRODUCT_FROM_DATABASE=Radeon 9200 SE 128MB - -pci:v00001002d00005D44sv0000147Bsd00006190* - ID_PRODUCT_FROM_DATABASE=R9200SE-DT (Secondary) - -pci:v00001002d00005D44sv0000174Bsd00007C12* - ID_PRODUCT_FROM_DATABASE=Sapphire Radeon 9200 SE (Secondary) - -pci:v00001002d00005D44sv00001787sd00005965* - ID_PRODUCT_FROM_DATABASE=Excalibur 9200SE VIVO 128M (Secondary) - -pci:v00001002d00005D44sv000017AFsd00002013* - ID_PRODUCT_FROM_DATABASE=Radeon 9200 SE Excalibur (Secondary) - -pci:v00001002d00005D44sv000018BCsd00000171* - ID_PRODUCT_FROM_DATABASE=Radeon 9200 SE 128MB Game Buster (Secondary) - -pci:v00001002d00005D44sv000018BCsd00000172* - ID_PRODUCT_FROM_DATABASE=GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] - -pci:v00001002d00005D45* - ID_PRODUCT_FROM_DATABASE=RV280 [FireMV 2200 PCI] (Secondary) - -pci:v00001002d00005D48* - ID_PRODUCT_FROM_DATABASE=R423/M28 [Mobility Radeon X800 XT] - -pci:v00001002d00005D49* - ID_PRODUCT_FROM_DATABASE=R423/M28 [Mobility FireGL V5100] - -pci:v00001002d00005D4A* - ID_PRODUCT_FROM_DATABASE=R423/M28 [Mobility Radeon X800] - -pci:v00001002d00005D4D* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850 XT Platinum Edition] - -pci:v00001002d00005D4E* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850 SE] - -pci:v00001002d00005D4F* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X800 GTO] - -pci:v00001002d00005D50* - ID_PRODUCT_FROM_DATABASE=R480 [FireGL V7200] - -pci:v00001002d00005D52* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850 XT] - -pci:v00001002d00005D52sv00001002sd00000B12* - ID_PRODUCT_FROM_DATABASE=PowerColor X850XT PCIe (Primary) - -pci:v00001002d00005D52sv00001002sd00000B13* - ID_PRODUCT_FROM_DATABASE=PowerColor X850XT PCIe (Secondary) - -pci:v00001002d00005D57* - ID_PRODUCT_FROM_DATABASE=R423 [Radeon X800 XT] - -pci:v00001002d00005D6D* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850 XT Platinum Edition] (Secondary) - -pci:v00001002d00005D6F* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X800 GTO] (Secondary) - -pci:v00001002d00005D72* - ID_PRODUCT_FROM_DATABASE=R480 [Radeon X850 XT] (Secondary) - -pci:v00001002d00005D77* - ID_PRODUCT_FROM_DATABASE=R423 [Radeon X800 XT] (Secondary) - -pci:v00001002d00005E48* - ID_PRODUCT_FROM_DATABASE=RV410 [FireGL V5000] - -pci:v00001002d00005E49* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 Series] - -pci:v00001002d00005E4A* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 XT] - -pci:v00001002d00005E4B* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 PRO] - -pci:v00001002d00005E4C* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 SE] - -pci:v00001002d00005E4D* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700] - -pci:v00001002d00005E4Dsv0000148Csd00002116* - ID_PRODUCT_FROM_DATABASE=PowerColor Bravo X700 - -pci:v00001002d00005E4F* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700] - -pci:v00001002d00005E4Fsv00001569sd00001E4F* - ID_PRODUCT_FROM_DATABASE=Radeon X550 XT - -pci:v00001002d00005E6B* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700 PRO] (Secondary) - -pci:v00001002d00005E6D* - ID_PRODUCT_FROM_DATABASE=RV410 [Radeon X700] (Secondary) - -pci:v00001002d00005E6Dsv0000148Csd00002117* - ID_PRODUCT_FROM_DATABASE=PowerColor Bravo X700 - -pci:v00001002d00005F57* - ID_PRODUCT_FROM_DATABASE=R423 [Radeon X800 XT] - -pci:v00001002d00006600* - ID_PRODUCT_FROM_DATABASE=Mars [Radeon HD 8670A/8750M] - -pci:v00001002d00006601* - ID_PRODUCT_FROM_DATABASE=Mars [Radeon HD 8500/8700M Series] - -pci:v00001002d00006602* - ID_PRODUCT_FROM_DATABASE=Mars - -pci:v00001002d00006603* - ID_PRODUCT_FROM_DATABASE=Mars - -pci:v00001002d00006606* - ID_PRODUCT_FROM_DATABASE=Mars [Radeon HD 8790M] - -pci:v00001002d00006607* - ID_PRODUCT_FROM_DATABASE=Mars [Radeon HD 8530M] - -pci:v00001002d00006610* - ID_PRODUCT_FROM_DATABASE=Oland [Radeon HD 8600 Series] - -pci:v00001002d00006611* - ID_PRODUCT_FROM_DATABASE=Oland [Radeon HD 8500 Series] - -pci:v00001002d00006613* - ID_PRODUCT_FROM_DATABASE=Oland [Radeon HD 8500 Series] - -pci:v00001002d00006620* - ID_PRODUCT_FROM_DATABASE=Mars - -pci:v00001002d00006621* - ID_PRODUCT_FROM_DATABASE=Mars - -pci:v00001002d00006623* - ID_PRODUCT_FROM_DATABASE=Mars - -pci:v00001002d00006631* - ID_PRODUCT_FROM_DATABASE=Oland - -pci:v00001002d0000665C* - ID_PRODUCT_FROM_DATABASE=Bonaire XT [Radeon HD 7790] - -pci:v00001002d00006660* - ID_PRODUCT_FROM_DATABASE=Sun [Radeon HD 8600M Series] - -pci:v00001002d00006700* - ID_PRODUCT_FROM_DATABASE=Cayman GL XT [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006701* - ID_PRODUCT_FROM_DATABASE=Cayman GL XT [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006702* - ID_PRODUCT_FROM_DATABASE=Cayman GL XT [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006703* - ID_PRODUCT_FROM_DATABASE=Cayman GL XT [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006704* - ID_PRODUCT_FROM_DATABASE=Cayman PRO GL [FirePro V7900] - -pci:v00001002d00006705* - ID_PRODUCT_FROM_DATABASE=Cayman GL PRO [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006706* - ID_PRODUCT_FROM_DATABASE=Cayman GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006707* - ID_PRODUCT_FROM_DATABASE=Cayman LE GL [FirePro V5900] - -pci:v00001002d00006708* - ID_PRODUCT_FROM_DATABASE=Cayman GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006709* - ID_PRODUCT_FROM_DATABASE=Cayman GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006718* - ID_PRODUCT_FROM_DATABASE=Cayman XT [Radeon HD 6970] - -pci:v00001002d00006719* - ID_PRODUCT_FROM_DATABASE=Cayman PRO [Radeon HD 6950] - -pci:v00001002d0000671C* - ID_PRODUCT_FROM_DATABASE=Antilles [Radeon HD 6990] - -pci:v00001002d0000671D* - ID_PRODUCT_FROM_DATABASE=Antilles [Radeon HD 6990] - -pci:v00001002d0000671F* - ID_PRODUCT_FROM_DATABASE=Cayman CE [Radeon HD 6930] - -pci:v00001002d00006720* - ID_PRODUCT_FROM_DATABASE=Blackcomb [Radeon HD 6970M/6990M] - -pci:v00001002d00006720sv00001028sd0000048F* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6990M - -pci:v00001002d00006720sv00001028sd00000490* - ID_PRODUCT_FROM_DATABASE=Alienware M17x R3 Radeon HD 6970M - -pci:v00001002d00006720sv00001028sd000004A4* - ID_PRODUCT_FROM_DATABASE=FirePro M8900 - -pci:v00001002d00006720sv00001028sd0000053F* - ID_PRODUCT_FROM_DATABASE=FirePro M8900 - -pci:v00001002d00006720sv0000106Bsd00000B00* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6970M - -pci:v00001002d00006720sv00001558sd00005102* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6970M - -pci:v00001002d00006720sv00001558sd00005104* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6990M - -pci:v00001002d00006720sv00001558sd00007201* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6990M - -pci:v00001002d00006720sv0000174Bsd0000E188* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6970M - -pci:v00001002d00006721* - ID_PRODUCT_FROM_DATABASE=Blackcomb [Radeon HD 6900M Series] - -pci:v00001002d00006722* - ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006723* - ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006724* - ID_PRODUCT_FROM_DATABASE=Blackcomb [Mobility Radeon HD 6000 series] - -pci:v00001002d00006725* - ID_PRODUCT_FROM_DATABASE=Blackcomb [Radeon HD 6900M Series] - -pci:v00001002d00006726* - ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006727* - ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006728* - ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006729* - ID_PRODUCT_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006738* - ID_PRODUCT_FROM_DATABASE=Barts XT [Radeon HD 6870] - -pci:v00001002d00006738sv00001682sd00003103* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8670 - -pci:v00001002d00006738sv00001787sd0000201A* - ID_PRODUCT_FROM_DATABASE=Barts XT [Radeon HD 6870 X2] - -pci:v00001002d00006738sv00001787sd0000201B* - ID_PRODUCT_FROM_DATABASE=Barts XT [Radeon HD 6870 X2] - -pci:v00001002d00006739* - ID_PRODUCT_FROM_DATABASE=Barts PRO [Radeon HD 6850] - -pci:v00001002d00006739sv00001043sd000003B4* - ID_PRODUCT_FROM_DATABASE=EAH6850 [Radeon HD 6850] - -pci:v00001002d0000673E* - ID_PRODUCT_FROM_DATABASE=Barts LE [Radeon HD 6790] - -pci:v00001002d0000673Esv0000148Csd00007720* - ID_PRODUCT_FROM_DATABASE=Radeon HD 7720 OEM - -pci:v00001002d00006740* - ID_PRODUCT_FROM_DATABASE=Whistler [Radeon HD 6730M/6770M/7690M XT] - -pci:v00001002d00006740sv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00001002d00006741* - ID_PRODUCT_FROM_DATABASE=Whistler [Radeon HD 6600M/6700M/7600M Series] - -pci:v00001002d00006741sv0000106Bsd000000E2* - ID_PRODUCT_FROM_DATABASE=MacBookPro8,2 [Core i7, 15", Late 2011] - -pci:v00001002d00006742* - ID_PRODUCT_FROM_DATABASE=Whistler LE [Radeon HD 6610M/7610M] - -pci:v00001002d00006742sv00001043sd00001D82* - ID_PRODUCT_FROM_DATABASE=K53SK Laptop Radeon HD 7610M - -pci:v00001002d00006742sv00008086sd00002111* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6625M - -pci:v00001002d00006743* - ID_PRODUCT_FROM_DATABASE=Whistler [Radeon E6760] - -pci:v00001002d00006744* - ID_PRODUCT_FROM_DATABASE=Whistler [Radeon HD 6000M Series] - -pci:v00001002d00006745* - ID_PRODUCT_FROM_DATABASE=Whistler - -pci:v00001002d00006746* - ID_PRODUCT_FROM_DATABASE=Turks GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006747* - ID_PRODUCT_FROM_DATABASE=Turks GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006748* - ID_PRODUCT_FROM_DATABASE=Turks GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006749* - ID_PRODUCT_FROM_DATABASE=Turks GL [FirePro V4900] - -pci:v00001002d0000674A* - ID_PRODUCT_FROM_DATABASE=Turks GL [FirePro V3900] - -pci:v00001002d00006750* - ID_PRODUCT_FROM_DATABASE=Onega [Radeon HD 6650A / 7650A] - -pci:v00001002d00006751* - ID_PRODUCT_FROM_DATABASE=Turks XT [Radeon HD 7670A] - -pci:v00001002d00006758* - ID_PRODUCT_FROM_DATABASE=Turks XT [Radeon HD 6670] - -pci:v00001002d00006759* - ID_PRODUCT_FROM_DATABASE=Turks PRO [Radeon HD 6570] - -pci:v00001002d00006759sv0000148Csd00007570* - ID_PRODUCT_FROM_DATABASE=Radeon HD 7570 - -pci:v00001002d00006759sv0000174Bsd00007570* - ID_PRODUCT_FROM_DATABASE=Radeon HD 7570 - -pci:v00001002d0000675D* - ID_PRODUCT_FROM_DATABASE=Turks PRO [Radeon HD 7570] - -pci:v00001002d0000675F* - ID_PRODUCT_FROM_DATABASE=Turks LE [Radeon HD 5570/6510/7510] - -pci:v00001002d0000675Fsv0000148Csd00006510* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6510 - -pci:v00001002d0000675Fsv0000174Bsd00006510* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6510 - -pci:v00001002d0000675Fsv0000174Bsd00007510* - ID_PRODUCT_FROM_DATABASE=Radeon HD 7510 - -pci:v00001002d0000675Fsv00001787sd00002012* - ID_PRODUCT_FROM_DATABASE=Radeon HD 5570 2GB GDDR3 - -pci:v00001002d0000675Fsv00001787sd00002314* - ID_PRODUCT_FROM_DATABASE=Radeon HD 5570 1GB DDR2/GDDR3 - -pci:v00001002d00006760* - ID_PRODUCT_FROM_DATABASE=Seymour [Radeon HD 6400M/7400M Series] - -pci:v00001002d00006760sv00001028sd000004CC* - ID_PRODUCT_FROM_DATABASE=Vostro 3350 - -pci:v00001002d00006760sv00001043sd000084A0* - ID_PRODUCT_FROM_DATABASE=Seymour XT [Radeon HD 6470M] - -pci:v00001002d00006761* - ID_PRODUCT_FROM_DATABASE=Seymour LP [Radeon HD 6430M] - -pci:v00001002d00006762* - ID_PRODUCT_FROM_DATABASE=Caicos GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006763* - ID_PRODUCT_FROM_DATABASE=Seymour [Radeon E6460] - -pci:v00001002d00006764* - ID_PRODUCT_FROM_DATABASE=Seymour [Radeon HD 6400M Series] - -pci:v00001002d00006765* - ID_PRODUCT_FROM_DATABASE=Seymour [Radeon HD 6400M Series] - -pci:v00001002d00006766* - ID_PRODUCT_FROM_DATABASE=Caicos - -pci:v00001002d00006767* - ID_PRODUCT_FROM_DATABASE=Caicos - -pci:v00001002d00006768* - ID_PRODUCT_FROM_DATABASE=Caicos - -pci:v00001002d00006770* - ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 6450A/7450A] - -pci:v00001002d00006771* - ID_PRODUCT_FROM_DATABASE=Caicos XTX [Radeon HD 8490] - -pci:v00001002d00006772* - ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 7450A] - -pci:v00001002d00006778* - ID_PRODUCT_FROM_DATABASE=Caicos XT [Radeon HD 7470] - -pci:v00001002d00006778sv00001462sd0000B493* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8470 OEM - -pci:v00001002d00006779* - ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 6450] - -pci:v00001002d00006779sv0000148Csd00008450* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8450 OEM - -pci:v00001002d00006779sv0000174Bsd00007450* - ID_PRODUCT_FROM_DATABASE=Radeon HD 7450 - -pci:v00001002d00006779sv0000174Bsd0000E164* - ID_PRODUCT_FROM_DATABASE=Sapphire HD 6450 1GB DDR3 - -pci:v00001002d00006779sv000017AFsd00008450* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8450 OEM - -pci:v00001002d0000677B* - ID_PRODUCT_FROM_DATABASE=Caicos PRO [Radeon HD 7450] - -pci:v00001002d00006780* - ID_PRODUCT_FROM_DATABASE=Tahiti XT [FirePro W9000] - -pci:v00001002d00006784* - ID_PRODUCT_FROM_DATABASE=Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006788* - ID_PRODUCT_FROM_DATABASE=Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d0000678A* - ID_PRODUCT_FROM_DATABASE=Tahiti PRO [FirePro Series] - -pci:v00001002d0000678Asv00001002sd0000030C* - ID_PRODUCT_FROM_DATABASE=FirePro W8000 - -pci:v00001002d0000678Asv00001002sd00000310* - ID_PRODUCT_FROM_DATABASE=FirePro S9000 - -pci:v00001002d0000678Asv00001002sd00000B2A* - ID_PRODUCT_FROM_DATABASE=FirePro S10000 - -pci:v00001002d0000678Asv00001028sd0000030C* - ID_PRODUCT_FROM_DATABASE=FirePro W8000 - -pci:v00001002d00006790* - ID_PRODUCT_FROM_DATABASE=Tahiti - -pci:v00001002d00006791* - ID_PRODUCT_FROM_DATABASE=Tahiti - -pci:v00001002d00006792* - ID_PRODUCT_FROM_DATABASE=Tahiti - -pci:v00001002d00006798* - ID_PRODUCT_FROM_DATABASE=Tahiti XT [Radeon HD 7970] - -pci:v00001002d00006798sv00001002sd00003000* - ID_PRODUCT_FROM_DATABASE=Tahiti XT2 [Radeon HD 7970 GHz Edition] - -pci:v00001002d00006798sv00001043sd0000041C* - ID_PRODUCT_FROM_DATABASE=HD 7970 DirectCU II - -pci:v00001002d00006798sv00001043sd00000420* - ID_PRODUCT_FROM_DATABASE=HD 7970 DirectCU II TOP - -pci:v00001002d00006798sv00001043sd00000444* - ID_PRODUCT_FROM_DATABASE=HD 7970 DirectCU II TOP - -pci:v00001002d00006798sv00001043sd00009999* - ID_PRODUCT_FROM_DATABASE=ARES II - -pci:v00001002d00006798sv00001682sd00003211* - ID_PRODUCT_FROM_DATABASE=Double D HD 7970 Black Edition - -pci:v00001002d00006798sv00001682sd00003213* - ID_PRODUCT_FROM_DATABASE=HD 7970 Black Edition - -pci:v00001002d00006798sv00001787sd0000201C* - ID_PRODUCT_FROM_DATABASE=HD 7970 IceQ X² - -pci:v00001002d00006798sv00001787sd00002317* - ID_PRODUCT_FROM_DATABASE=Radeon HD 7990 - -pci:v00001002d00006799* - ID_PRODUCT_FROM_DATABASE=New Zealand [Radeon HD 7900 Series] - -pci:v00001002d0000679A* - ID_PRODUCT_FROM_DATABASE=Tahiti PRO [Radeon HD 7950] - -pci:v00001002d0000679Asv00001002sd00000B01* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8950 OEM - -pci:v00001002d0000679Asv00001002sd00003000* - ID_PRODUCT_FROM_DATABASE=Radeon HD 7950 Boost Edition - -pci:v00001002d0000679Asv00001462sd00003000* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8950 OEM - -pci:v00001002d0000679B* - ID_PRODUCT_FROM_DATABASE=New Zealand [Radeon HD 7900 Series] - -pci:v00001002d0000679E* - ID_PRODUCT_FROM_DATABASE=Tahiti LE [Radeon HD 7870 XT] - -pci:v00001002d0000679F* - ID_PRODUCT_FROM_DATABASE=Tahiti - -pci:v00001002d00006800* - ID_PRODUCT_FROM_DATABASE=Wimbledon XT [Radeon HD 7970M] - -pci:v00001002d00006800sv00001002sd00000124* - ID_PRODUCT_FROM_DATABASE=Radeon HD 7970M - -pci:v00001002d00006800sv00008086sd00002110* - ID_PRODUCT_FROM_DATABASE=Radeon HD 7970M - -pci:v00001002d00006800sv00008086sd00002111* - ID_PRODUCT_FROM_DATABASE=Radeon HD 7970M - -pci:v00001002d00006801* - ID_PRODUCT_FROM_DATABASE=Pitcairn XT [Radeon HD 8970M] - -pci:v00001002d00006801sv00001002sd00000124* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8970M - -pci:v00001002d00006801sv00008086sd00002110* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8970M - -pci:v00001002d00006801sv00008086sd00002111* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8970M - -pci:v00001002d00006802* - ID_PRODUCT_FROM_DATABASE=Wimbledon - -pci:v00001002d00006806* - ID_PRODUCT_FROM_DATABASE=Pitcairn - -pci:v00001002d00006808* - ID_PRODUCT_FROM_DATABASE=Pitcairn XT [FirePro W7000] - -pci:v00001002d00006808sv00001002sd00000310* - ID_PRODUCT_FROM_DATABASE=FirePro S7000 - -pci:v00001002d00006809* - ID_PRODUCT_FROM_DATABASE=Pitcairn LE [FirePro W5000] - -pci:v00001002d00006810* - ID_PRODUCT_FROM_DATABASE=Pitcairn - -pci:v00001002d00006811* - ID_PRODUCT_FROM_DATABASE=Pitcairn - -pci:v00001002d00006816* - ID_PRODUCT_FROM_DATABASE=Pitcairn - -pci:v00001002d00006817* - ID_PRODUCT_FROM_DATABASE=Pitcairn - -pci:v00001002d00006818* - ID_PRODUCT_FROM_DATABASE=Pitcairn XT [Radeon HD 7870 GHz Edition] - -pci:v00001002d00006818sv00001002sd00000B05* - ID_PRODUCT_FROM_DATABASE=Pitcairn XT [Radeon HD 8870 OEM] - -pci:v00001002d00006819* - ID_PRODUCT_FROM_DATABASE=Pitcairn PRO [Radeon HD 7850] - -pci:v00001002d00006819sv0000174Bsd0000E221* - ID_PRODUCT_FROM_DATABASE=Sapphire HD 7850 2G GDDR5 PCI-E DVI-I/DVI-D/HDMI/DP - -pci:v00001002d00006820* - ID_PRODUCT_FROM_DATABASE=Venus XTX [Radeon HD 8800M Series] - -pci:v00001002d00006821* - ID_PRODUCT_FROM_DATABASE=Venus XT [Radeon HD 8800M Series] - -pci:v00001002d00006823* - ID_PRODUCT_FROM_DATABASE=Venus PRO [Radeon HD 8800M Series] - -pci:v00001002d00006824* - ID_PRODUCT_FROM_DATABASE=Chelsea [Radeon HD 7700M Series] - -pci:v00001002d00006825* - ID_PRODUCT_FROM_DATABASE=Heathrow XT [Radeon HD 7870M] - -pci:v00001002d00006826* - ID_PRODUCT_FROM_DATABASE=Chelsea [Radeon HD 7700M Series] - -pci:v00001002d00006827* - ID_PRODUCT_FROM_DATABASE=Heathrow PRO [Radeon HD 7850M/8850M] - -pci:v00001002d00006828* - ID_PRODUCT_FROM_DATABASE=Cape Verde PRO [FirePro W600] - -pci:v00001002d00006829* - ID_PRODUCT_FROM_DATABASE=Cape Verde - -pci:v00001002d0000682B* - ID_PRODUCT_FROM_DATABASE=Venus LE [Radeon HD 8800M Series] - -pci:v00001002d0000682D* - ID_PRODUCT_FROM_DATABASE=Chelsea [AMD Radeon HD 7700M Series] - -pci:v00001002d0000682F* - ID_PRODUCT_FROM_DATABASE=Chelsea LP [Radeon HD 7730M] - -pci:v00001002d00006830* - ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7800M Series] - -pci:v00001002d00006831* - ID_PRODUCT_FROM_DATABASE=Cape Verde [AMD Radeon HD 7700M Series] - -pci:v00001002d00006837* - ID_PRODUCT_FROM_DATABASE=Cape Verde LE [Radeon HD 7700 Series] - -pci:v00001002d00006838* - ID_PRODUCT_FROM_DATABASE=Cape Verde - -pci:v00001002d00006839* - ID_PRODUCT_FROM_DATABASE=Cape Verde - -pci:v00001002d0000683B* - ID_PRODUCT_FROM_DATABASE=Cape Verde [Radeon HD 7700 Series] - -pci:v00001002d0000683D* - ID_PRODUCT_FROM_DATABASE=Cape Verde XT [Radeon HD 7770 GHz Edition] - -pci:v00001002d0000683Dsv00001002sd00000030* - ID_PRODUCT_FROM_DATABASE=Cape Verde XT [Radeon HD 8760 OEM] - -pci:v00001002d0000683Dsv00001019sd00000030* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8760 OEM - -pci:v00001002d0000683Dsv0000103Csd00006890* - ID_PRODUCT_FROM_DATABASE=Radeon HD 8760 OEM - -pci:v00001002d0000683F* - ID_PRODUCT_FROM_DATABASE=Cape Verde PRO [Radeon HD 7750] - -pci:v00001002d00006840* - ID_PRODUCT_FROM_DATABASE=Thames XT [Radeon HD 7670M] - -pci:v00001002d00006841* - ID_PRODUCT_FROM_DATABASE=Thames [Radeon 7550M/7570M/7650M] - -pci:v00001002d00006842* - ID_PRODUCT_FROM_DATABASE=Thames LE [Radeon HD 7000M Series] - -pci:v00001002d00006843* - ID_PRODUCT_FROM_DATABASE=Thames [Radeon HD 7670M] - -pci:v00001002d00006849* - ID_PRODUCT_FROM_DATABASE=Lombok [AMD Radeon HD 7400 Series] - -pci:v00001002d0000684C* - ID_PRODUCT_FROM_DATABASE=Pitcairn [ATI FirePro V(FireGL V) Graphics Adapter] - -pci:v00001002d00006858* - ID_PRODUCT_FROM_DATABASE=Lombok [Radeon HD 7400 series] - -pci:v00001002d00006880* - ID_PRODUCT_FROM_DATABASE=Cypress - -pci:v00001002d00006888* - ID_PRODUCT_FROM_DATABASE=Cypress XT [FirePro V8800] - -pci:v00001002d00006889* - ID_PRODUCT_FROM_DATABASE=Cypress PRO [FirePro V7800] - -pci:v00001002d00006889sv00001002sd00000301* - ID_PRODUCT_FROM_DATABASE=FirePro V7800P - -pci:v00001002d0000688A* - ID_PRODUCT_FROM_DATABASE=Cypress XT [FirePro V9800] - -pci:v00001002d0000688Asv00001002sd0000030C* - ID_PRODUCT_FROM_DATABASE=FirePro V9800P - -pci:v00001002d0000688C* - ID_PRODUCT_FROM_DATABASE=Cypress XT GL [FireStream 9370] - -pci:v00001002d0000688D* - ID_PRODUCT_FROM_DATABASE=Cypress PRO GL [FireStream 9350] - -pci:v00001002d00006898* - ID_PRODUCT_FROM_DATABASE=Cypress XT [Radeon HD 5870] - -pci:v00001002d00006898sv00001002sd00000B00* - ID_PRODUCT_FROM_DATABASE=Radeon HD 5870 Eyefinity⁶ Edition - -pci:v00001002d00006898sv0000106Bsd000000D0* - ID_PRODUCT_FROM_DATABASE=Radeon HD 5870 Mac Edition - -pci:v00001002d00006898sv00001462sd00008032* - ID_PRODUCT_FROM_DATABASE=R5870 PM2D1G - -pci:v00001002d00006898sv0000174Bsd00006870* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6870 OEM - -pci:v00001002d00006899* - ID_PRODUCT_FROM_DATABASE=Cypress PRO [Radeon HD 5850] - -pci:v00001002d00006899sv00001043sd00000330* - ID_PRODUCT_FROM_DATABASE=EAH5850 [Radeon HD5850] - -pci:v00001002d00006899sv0000174Bsd0000237B* - ID_PRODUCT_FROM_DATABASE=Radeon HD 5850 X2 - -pci:v00001002d00006899sv0000174Bsd00006850* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6850 OEM - -pci:v00001002d0000689B* - ID_PRODUCT_FROM_DATABASE=Cypress PRO [Radeon HD 6800 Series] - -pci:v00001002d0000689C* - ID_PRODUCT_FROM_DATABASE=Hemlock [Radeon HD 5970] - -pci:v00001002d0000689Csv00001043sd00000352* - ID_PRODUCT_FROM_DATABASE=ARES - -pci:v00001002d0000689D* - ID_PRODUCT_FROM_DATABASE=Hemlock [Radeon HD 5970] - -pci:v00001002d0000689E* - ID_PRODUCT_FROM_DATABASE=Cypress LE [Radeon HD 5830] - -pci:v00001002d000068A0* - ID_PRODUCT_FROM_DATABASE=Broadway XT [Mobility Radeon HD 5870] - -pci:v00001002d000068A0sv00001028sd000012EF* - ID_PRODUCT_FROM_DATABASE=FirePro M7820 - -pci:v00001002d000068A0sv0000103Csd00001520* - ID_PRODUCT_FROM_DATABASE=FirePro M7820 - -pci:v00001002d000068A1* - ID_PRODUCT_FROM_DATABASE=Broadway PRO [Mobility Radeon HD 5850] - -pci:v00001002d000068A1sv0000106Bsd000000CC* - ID_PRODUCT_FROM_DATABASE=iMac MC511 Mobility Radeon HD 5850 MXM Module - -pci:v00001002d000068A8* - ID_PRODUCT_FROM_DATABASE=Granville [Radeon HD 6850M/6870M] - -pci:v00001002d000068A8sv0000103Csd0000159B* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6850M - -pci:v00001002d000068A9* - ID_PRODUCT_FROM_DATABASE=Juniper XT [FirePro V5800] - -pci:v00001002d000068B8* - ID_PRODUCT_FROM_DATABASE=Juniper XT [Radeon HD 5770] - -pci:v00001002d000068B8sv0000106Bsd000000CF* - ID_PRODUCT_FROM_DATABASE=MacPro5,1 [Mac Pro 2.8GHz DDR3] - -pci:v00001002d000068B9* - ID_PRODUCT_FROM_DATABASE=Juniper LE [Radeon HD 5670 640SP Edition] - -pci:v00001002d000068BA* - ID_PRODUCT_FROM_DATABASE=Juniper XT [Radeon HD 6770] - -pci:v00001002d000068BE* - ID_PRODUCT_FROM_DATABASE=Juniper PRO [Radeon HD 5750] - -pci:v00001002d000068BEsv0000148Csd00003000* - ID_PRODUCT_FROM_DATABASE=Powercolor HD 6750 - -pci:v00001002d000068BF* - ID_PRODUCT_FROM_DATABASE=Juniper PRO [Radeon HD 6750] - -pci:v00001002d000068BFsv0000174Bsd00006750* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6750 - -pci:v00001002d000068C0* - ID_PRODUCT_FROM_DATABASE=Madison [Mobility Radeon HD 5000 Series] - -pci:v00001002d000068C0sv0000103Csd00001521* - ID_PRODUCT_FROM_DATABASE=Madison XT [FirePro M5800] - -pci:v00001002d000068C0sv0000103Csd00001593* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 6570 - -pci:v00001002d000068C0sv0000103Csd00001596* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 6570 - -pci:v00001002d000068C0sv0000103Csd00001599* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 6570 - -pci:v00001002d000068C1* - ID_PRODUCT_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750/6550M] - -pci:v00001002d000068C1sv00001025sd0000033D* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 5650 - -pci:v00001002d000068C1sv00001025sd00000347* - ID_PRODUCT_FROM_DATABASE=Aspire 7740G - -pci:v00001002d000068C1sv0000103Csd00001521* - ID_PRODUCT_FROM_DATABASE=Madison Pro [FirePro M5800] - -pci:v00001002d000068C7* - ID_PRODUCT_FROM_DATABASE=Madison [Mobility Radeon HD 5570/6550A] - -pci:v00001002d000068C8* - ID_PRODUCT_FROM_DATABASE=Redwood XT [FirePro V4800] - -pci:v00001002d000068C9* - ID_PRODUCT_FROM_DATABASE=Redwood PRO [FirePro V3800] - -pci:v00001002d000068D8* - ID_PRODUCT_FROM_DATABASE=Redwood XT [Radeon HD 5670] - -pci:v00001002d000068D8sv00001787sd00003000* - ID_PRODUCT_FROM_DATABASE=Radeon HD 5730 - -pci:v00001002d000068D9* - ID_PRODUCT_FROM_DATABASE=Redwood PRO [Radeon HD 5570] - -pci:v00001002d000068D9sv0000148Csd00003000* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6510 - -pci:v00001002d000068D9sv0000148Csd00003001* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6610 - -pci:v00001002d000068DA* - ID_PRODUCT_FROM_DATABASE=Redwood LE [Radeon HD 5550] - -pci:v00001002d000068DAsv0000148Csd00003000* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6390 - -pci:v00001002d000068DAsv0000148Csd00003001* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6490 - -pci:v00001002d000068DE* - ID_PRODUCT_FROM_DATABASE=Redwood - -pci:v00001002d000068E0* - ID_PRODUCT_FROM_DATABASE=Park [Mobility Radeon HD 5400 Series] - -pci:v00001002d000068E0sv0000103Csd00001486* - ID_PRODUCT_FROM_DATABASE=TouchSmart tm2-2050er discrete GPU (Mobility Radeon HD 5450) - -pci:v00001002d000068E1* - ID_PRODUCT_FROM_DATABASE=Park [Mobility Radeon HD 5430] - -pci:v00001002d000068E1sv0000148Csd00007350* - ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 7350] - -pci:v00001002d000068E1sv00001545sd00005450* - ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 5450] - -pci:v00001002d000068E1sv0000174Bsd00005470* - ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 5470] - -pci:v00001002d000068E1sv0000174Bsd00006350* - ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 6350] - -pci:v00001002d000068E1sv000017AFsd00003015* - ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 7350] - -pci:v00001002d000068E1sv000017AFsd00008350* - ID_PRODUCT_FROM_DATABASE=Caicos [Radeon HD 8350 OEM] - -pci:v00001002d000068E4* - ID_PRODUCT_FROM_DATABASE=Robson CE [Radeon HD 6370M/7370M] - -pci:v00001002d000068E5* - ID_PRODUCT_FROM_DATABASE=Robson LE [Radeon HD 6330M] - -pci:v00001002d000068E5sv0000148Csd00007350* - ID_PRODUCT_FROM_DATABASE=Radeon HD 7350 - -pci:v00001002d000068E8* - ID_PRODUCT_FROM_DATABASE=Cedar - -pci:v00001002d000068E9* - ID_PRODUCT_FROM_DATABASE=Cedar [ATI FirePro (FireGL) Graphics Adapter] - -pci:v00001002d000068F1* - ID_PRODUCT_FROM_DATABASE=Cedar [FirePro 2460] - -pci:v00001002d000068F2* - ID_PRODUCT_FROM_DATABASE=Cedar [FirePro 2270] - -pci:v00001002d000068F8* - ID_PRODUCT_FROM_DATABASE=Cedar [Radeon HD 7300 Series] - -pci:v00001002d000068F9* - ID_PRODUCT_FROM_DATABASE=Cedar [Radeon HD 5000/6000/7350 Series] - -pci:v00001002d000068F9sv00001019sd00000001* - ID_PRODUCT_FROM_DATABASE=Radeon HD 5450 - -pci:v00001002d000068F9sv00001019sd00000019* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6350 - -pci:v00001002d000068F9sv00001028sd0000010E* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v00001002d000068F9sv00001043sd000003C2* - ID_PRODUCT_FROM_DATABASE=EAH5450 SILENT/DI/512MD2 (LP) - -pci:v00001002d000068F9sv0000148Csd00003001* - ID_PRODUCT_FROM_DATABASE=Radeon HD 5530/6250 - -pci:v00001002d000068F9sv0000148Csd00003002* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6290 - -pci:v00001002d000068F9sv0000148Csd00003003* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6230 - -pci:v00001002d000068F9sv0000148Csd00003004* - ID_PRODUCT_FROM_DATABASE=Radeon HD 6350 - -pci:v00001002d000068F9sv0000148Csd00007350* - ID_PRODUCT_FROM_DATABASE=Radeon HD 7350 - -pci:v00001002d000068F9sv0000174Bsd00005470* - ID_PRODUCT_FROM_DATABASE=Radeon HD 5470 - -pci:v00001002d000068F9sv0000174Bsd00005490* - ID_PRODUCT_FROM_DATABASE=Radeon HD 5490 - -pci:v00001002d000068F9sv0000174Bsd00005530* - ID_PRODUCT_FROM_DATABASE=Radeon HD 5530 - -pci:v00001002d000068F9sv0000174Bsd00007350* - ID_PRODUCT_FROM_DATABASE=Radeon HD 7350 - -pci:v00001002d000068FA* - ID_PRODUCT_FROM_DATABASE=Cedar [Radeon HD 7350] - -pci:v00001002d000068FAsv000017AFsd00003015* - ID_PRODUCT_FROM_DATABASE=Radeon HD 7350 - -pci:v00001002d000068FE* - ID_PRODUCT_FROM_DATABASE=Cedar LE - -pci:v00001002d0000700F* - ID_PRODUCT_FROM_DATABASE=PCI Bridge [IGP 320M] - -pci:v00001002d00007010* - ID_PRODUCT_FROM_DATABASE=PCI Bridge [IGP 340M] - -pci:v00001002d00007100* - ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800 XT] - -pci:v00001002d00007101* - ID_PRODUCT_FROM_DATABASE=R520/M58 [Mobility Radeon X1800 XT] - -pci:v00001002d00007102* - ID_PRODUCT_FROM_DATABASE=R520/M58 [Mobility Radeon X1800] - -pci:v00001002d00007104* - ID_PRODUCT_FROM_DATABASE=R520 GL [FireGL V7200] - -pci:v00001002d00007109* - ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800 XL] - -pci:v00001002d00007109sv00001002sd00000322* - ID_PRODUCT_FROM_DATABASE=All-in-Wonder X1800XL - -pci:v00001002d00007109sv00001002sd00000D02* - ID_PRODUCT_FROM_DATABASE=Radeon X1800 CrossFire Edition - -pci:v00001002d0000710A* - ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800 GTO] - -pci:v00001002d0000710Asv00001002sd00000B12* - ID_PRODUCT_FROM_DATABASE=Radeon X1800 GTO² - -pci:v00001002d0000710B* - ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800 GTO] - -pci:v00001002d00007120* - ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800] (Secondary) - -pci:v00001002d00007124* - ID_PRODUCT_FROM_DATABASE=R520 GL [FireGL V7200] (Secondary) - -pci:v00001002d00007129* - ID_PRODUCT_FROM_DATABASE=R520 [Radeon X1800] (Secondary) - -pci:v00001002d00007129sv00001002sd00000323* - ID_PRODUCT_FROM_DATABASE=All-In-Wonder X1800 XL (Secondary) - -pci:v00001002d00007129sv00001002sd00000D03* - ID_PRODUCT_FROM_DATABASE=Radeon X1800 CrossFire Edition (Secondary) - -pci:v00001002d00007140* - ID_PRODUCT_FROM_DATABASE=RV515 [Radeon X1300/X1550/X1600 Series] - -pci:v00001002d00007142* - ID_PRODUCT_FROM_DATABASE=RV515 PRO [Radeon X1300/X1550 Series] - -pci:v00001002d00007142sv00001002sd00000322* - ID_PRODUCT_FROM_DATABASE=All-in-Wonder 2006 PCI-E Edition - -pci:v00001002d00007142sv00001043sd00000142* - ID_PRODUCT_FROM_DATABASE=EAX1300PRO/TD/256M - -pci:v00001002d00007143* - ID_PRODUCT_FROM_DATABASE=RV505 [Radeon X1300/X1550 Series] - -pci:v00001002d00007145* - ID_PRODUCT_FROM_DATABASE=RV515/M54 [Mobility Radeon X1400] - -pci:v00001002d00007145sv000017AAsd00002006* - ID_PRODUCT_FROM_DATABASE=Thinkpad T60 model 2007 - -pci:v00001002d00007146* - ID_PRODUCT_FROM_DATABASE=RV515 [Radeon X1300/X1550] - -pci:v00001002d00007146sv00001002sd00000322* - ID_PRODUCT_FROM_DATABASE=All-in-Wonder 2006 PCI-E Edition - -pci:v00001002d00007146sv00001545sd00001996* - ID_PRODUCT_FROM_DATABASE=Radeon X1300 512MB PCI-e - -pci:v00001002d00007147* - ID_PRODUCT_FROM_DATABASE=RV505 [Radeon X1550 64-bit] - -pci:v00001002d00007149* - ID_PRODUCT_FROM_DATABASE=RV515/M52 [Mobility Radeon X1300] - -pci:v00001002d0000714A* - ID_PRODUCT_FROM_DATABASE=RV515/M52 [Mobility Radeon X1300] - -pci:v00001002d00007152* - ID_PRODUCT_FROM_DATABASE=RV515 GL [FireGL V3300] - -pci:v00001002d00007153* - ID_PRODUCT_FROM_DATABASE=RV515 GL [FireGL V3350] - -pci:v00001002d0000715F* - ID_PRODUCT_FROM_DATABASE=RV505 CE [Radeon X1550 64-bit] - -pci:v00001002d00007162* - ID_PRODUCT_FROM_DATABASE=RV515 PRO [Radeon X1300/X1550 Series] (Secondary) - -pci:v00001002d00007162sv00001002sd00000323* - ID_PRODUCT_FROM_DATABASE=All-in-Wonder 2006 PCI-E Edition (Secondary) - -pci:v00001002d00007163* - ID_PRODUCT_FROM_DATABASE=RV505 [Radeon X1550 Series] (Secondary) - -pci:v00001002d00007166* - ID_PRODUCT_FROM_DATABASE=RV515 [Radeon X1300/X1550 Series] (Secondary) - -pci:v00001002d00007166sv00001002sd00000323* - ID_PRODUCT_FROM_DATABASE=All-in-Wonder 2006 PCI-E Edition (Secondary) - -pci:v00001002d00007166sv00001545sd00001997* - ID_PRODUCT_FROM_DATABASE=Radeon X1300 512MB PCI-e (Secondary) - -pci:v00001002d00007167* - ID_PRODUCT_FROM_DATABASE=RV515 [Radeon X1550 64-bit] (Secondary) - -pci:v00001002d00007172* - ID_PRODUCT_FROM_DATABASE=RV515 GL [FireGL V3300] (Secondary) - -pci:v00001002d00007173* - ID_PRODUCT_FROM_DATABASE=RV515 GL [FireGL V3350] (Secondary) - -pci:v00001002d00007181* - ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1600/X1650 Series] - -pci:v00001002d00007183* - ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] - -pci:v00001002d00007186* - ID_PRODUCT_FROM_DATABASE=RV516/M64 [Mobility Radeon X1450] - -pci:v00001002d00007187* - ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] - -pci:v00001002d00007188* - ID_PRODUCT_FROM_DATABASE=RV516/M64-S [Mobility Radeon X2300] - -pci:v00001002d00007188sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=6910p - -pci:v00001002d0000718A* - ID_PRODUCT_FROM_DATABASE=RV516/M64 [Mobility Radeon X2300] - -pci:v00001002d0000718B* - ID_PRODUCT_FROM_DATABASE=RV516/M62 [Mobility Radeon X1350] - -pci:v00001002d0000718C* - ID_PRODUCT_FROM_DATABASE=RV516/M62-CSP64 [Mobility Radeon X1350] - -pci:v00001002d0000718D* - ID_PRODUCT_FROM_DATABASE=RV516/M64-CSP128 [Mobility Radeon X1450] - -pci:v00001002d00007193* - ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1550 Series] - -pci:v00001002d00007196* - ID_PRODUCT_FROM_DATABASE=RV516/M62-S [Mobility Radeon X1350] - -pci:v00001002d0000719B* - ID_PRODUCT_FROM_DATABASE=RV516 [FireMV 2250] - -pci:v00001002d0000719F* - ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1550 Series] - -pci:v00001002d000071A0* - ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] (Secondary) - -pci:v00001002d000071A1* - ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1600/X1650 Series] (Secondary) - -pci:v00001002d000071A3* - ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] (Secondary) - -pci:v00001002d000071A7* - ID_PRODUCT_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] (Secondary) - -pci:v00001002d000071BB* - ID_PRODUCT_FROM_DATABASE=RV516 [FireMV 2250] (Secondary) - -pci:v00001002d000071C0* - ID_PRODUCT_FROM_DATABASE=RV530 [Radeon X1600 XT/X1650 GTO] - -pci:v00001002d000071C0sv00001002sd0000E160* - ID_PRODUCT_FROM_DATABASE=Radeon X1650 GTO - -pci:v00001002d000071C0sv0000174Bsd0000E160* - ID_PRODUCT_FROM_DATABASE=Radeon X1650 GTO - -pci:v00001002d000071C1* - ID_PRODUCT_FROM_DATABASE=RV535 [Radeon X1650 PRO] - -pci:v00001002d000071C1sv0000174Bsd00000880* - ID_PRODUCT_FROM_DATABASE=Radeon X1700 FSC - -pci:v00001002d000071C2* - ID_PRODUCT_FROM_DATABASE=RV530 [Radeon X1600 PRO] - -pci:v00001002d000071C4* - ID_PRODUCT_FROM_DATABASE=RV530/M56GL [Mobility FireGL V5200] - -pci:v00001002d000071C4sv000017AAsd00002007* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60p - -pci:v00001002d000071C5* - ID_PRODUCT_FROM_DATABASE=RV530/M56-P [Mobility Radeon X1600] - -pci:v00001002d000071C5sv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00001002d000071C5sv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq NW8440 - -pci:v00001002d000071C5sv00001043sd000010B2* - ID_PRODUCT_FROM_DATABASE=A6J-Q008 - -pci:v00001002d000071C5sv0000106Bsd00000080* - ID_PRODUCT_FROM_DATABASE=MacBook Pro - -pci:v00001002d000071C6* - ID_PRODUCT_FROM_DATABASE=RV530LE [Radeon X1600/X1650 PRO] - -pci:v00001002d000071C7* - ID_PRODUCT_FROM_DATABASE=RV535 [Radeon X1650 PRO] - -pci:v00001002d000071C7sv00001787sd00003000* - ID_PRODUCT_FROM_DATABASE=PowerColor X1650 PRO AGP - -pci:v00001002d000071CE* - ID_PRODUCT_FROM_DATABASE=RV530 [Radeon X1300 XT/X1600 PRO] - -pci:v00001002d000071D2* - ID_PRODUCT_FROM_DATABASE=RV530 GL [FireGL V3400] - -pci:v00001002d000071D4* - ID_PRODUCT_FROM_DATABASE=RV530/M66 GL [Mobility FireGL V5250] - -pci:v00001002d000071D5* - ID_PRODUCT_FROM_DATABASE=RV530/M66-P [Mobility Radeon X1700] - -pci:v00001002d000071D6* - ID_PRODUCT_FROM_DATABASE=RV530/M66-XT [Mobility Radeon X1700] - -pci:v00001002d000071DE* - ID_PRODUCT_FROM_DATABASE=RV530/M66 [Mobility Radeon X1700/X2500] - -pci:v00001002d000071E0* - ID_PRODUCT_FROM_DATABASE=RV530 [Radeon X1600] (Secondary) - -pci:v00001002d000071E0sv0000174Bsd0000E161* - ID_PRODUCT_FROM_DATABASE=Radeon X1600 GTO (Secondary) - -pci:v00001002d000071E1* - ID_PRODUCT_FROM_DATABASE=RV535 [Radeon X1650 PRO] (Secondary) - -pci:v00001002d000071E1sv0000174Bsd00000881* - ID_PRODUCT_FROM_DATABASE=Radeon X1700 FSC (Secondary) - -pci:v00001002d000071E2* - ID_PRODUCT_FROM_DATABASE=RV530 [Radeon X1600] (Secondary) - -pci:v00001002d000071E6* - ID_PRODUCT_FROM_DATABASE=RV530 [Radeon X1650] (Secondary) - -pci:v00001002d000071E7* - ID_PRODUCT_FROM_DATABASE=RV535 [Radeon X1650 PRO] (Secondary) - -pci:v00001002d000071E7sv00001787sd00003001* - ID_PRODUCT_FROM_DATABASE=Radeon X1650 PRO AGP - -pci:v00001002d000071F2* - ID_PRODUCT_FROM_DATABASE=RV530 GL [FireGL V3400] (Secondary) - -pci:v00001002d00007210* - ID_PRODUCT_FROM_DATABASE=RV550/M71 [Mobility Radeon HD 2300] - -pci:v00001002d00007211* - ID_PRODUCT_FROM_DATABASE=RV550/M71 [Mobility Radeon X2300 HD] - -pci:v00001002d00007240* - ID_PRODUCT_FROM_DATABASE=R580+ [Radeon X1950 XTX] - -pci:v00001002d00007240sv00001002sd00000D02* - ID_PRODUCT_FROM_DATABASE=Radeon X1950 CrossFire Edition - -pci:v00001002d00007244* - ID_PRODUCT_FROM_DATABASE=R580+ [Radeon X1950 XT] - -pci:v00001002d00007248* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1950] - -pci:v00001002d00007249* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900 XT] - -pci:v00001002d00007249sv00001002sd00000412* - ID_PRODUCT_FROM_DATABASE=All-In-Wonder X1900 - -pci:v00001002d00007249sv00001002sd00000B12* - ID_PRODUCT_FROM_DATABASE=Radeon X1900 XT/XTX - -pci:v00001002d00007249sv00001002sd00000D02* - ID_PRODUCT_FROM_DATABASE=Radeon X1900 CrossFire Edition - -pci:v00001002d00007249sv00001043sd00000160* - ID_PRODUCT_FROM_DATABASE=Radeon X1900 XTX 512 MB GDDR3 - -pci:v00001002d0000724B* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900 GT] - -pci:v00001002d0000724Bsv00001002sd00000B12* - ID_PRODUCT_FROM_DATABASE=Radeon X1900 (Primary) - -pci:v00001002d0000724Bsv00001002sd00000B13* - ID_PRODUCT_FROM_DATABASE=Radeon X1900 (Secondary) - -pci:v00001002d0000724E* - ID_PRODUCT_FROM_DATABASE=R580 [FireGL V7350] - -pci:v00001002d00007269* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900 XT] (Secondary) - -pci:v00001002d0000726B* - ID_PRODUCT_FROM_DATABASE=R580 [Radeon X1900 GT] (Secondary) - -pci:v00001002d0000726E* - ID_PRODUCT_FROM_DATABASE=R580 [AMD Stream Processor] (Secondary) - -pci:v00001002d00007280* - ID_PRODUCT_FROM_DATABASE=RV570 [Radeon X1950 PRO] - -pci:v00001002d00007288* - ID_PRODUCT_FROM_DATABASE=RV570 [Radeon X1950 GT] - -pci:v00001002d00007291* - ID_PRODUCT_FROM_DATABASE=RV560 [Radeon X1650 XT] - -pci:v00001002d00007291sv00001462sd00000810* - ID_PRODUCT_FROM_DATABASE=Radeon X1700 SE - -pci:v00001002d00007293* - ID_PRODUCT_FROM_DATABASE=RV560 [Radeon X1650 GT] - -pci:v00001002d000072A0* - ID_PRODUCT_FROM_DATABASE=RV570 [Radeon X1950 PRO] (Secondary) - -pci:v00001002d000072A8* - ID_PRODUCT_FROM_DATABASE=RV570 [Radeon X1950 GT] (Secondary) - -pci:v00001002d000072B1* - ID_PRODUCT_FROM_DATABASE=RV560 [Radeon X1650 XT] (Secondary) - -pci:v00001002d000072B3* - ID_PRODUCT_FROM_DATABASE=RV560 [Radeon X1650 GT] (Secondary) - -pci:v00001002d00007833* - ID_PRODUCT_FROM_DATABASE=Radeon 9100 IGP Host Bridge - -pci:v00001002d00007834* - ID_PRODUCT_FROM_DATABASE=RS350 [Radeon 9100 PRO/XT IGP] - -pci:v00001002d00007835* - ID_PRODUCT_FROM_DATABASE=RS350M [Mobility Radeon 9000 IGP] - -pci:v00001002d00007838* - ID_PRODUCT_FROM_DATABASE=Radeon 9100 IGP PCI/AGP Bridge - -pci:v00001002d00007910* - ID_PRODUCT_FROM_DATABASE=RS690 Host Bridge - -pci:v00001002d00007910sv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001002d00007910sv000017F2sd00005000* - ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard - -pci:v00001002d00007911* - ID_PRODUCT_FROM_DATABASE=RS690 Host Bridge - -pci:v00001002d00007912* - ID_PRODUCT_FROM_DATABASE=RS690 PCI to PCI Bridge (Internal gfx) - -pci:v00001002d00007913* - ID_PRODUCT_FROM_DATABASE=RS690 PCI to PCI Bridge (PCI Express Graphics Port 0) - -pci:v00001002d00007915* - ID_PRODUCT_FROM_DATABASE=RS690 PCI to PCI Bridge (PCI Express Port 1) - -pci:v00001002d00007916* - ID_PRODUCT_FROM_DATABASE=RS690 PCI to PCI Bridge (PCI Express Port 2) - -pci:v00001002d00007917* - ID_PRODUCT_FROM_DATABASE=RS690 PCI to PCI Bridge (PCI Express Port 3) - -pci:v00001002d00007917sv00001002sd00007910* - ID_PRODUCT_FROM_DATABASE=RS690 PCI to PCI Bridge - -pci:v00001002d00007919* - ID_PRODUCT_FROM_DATABASE=Radeon X1200 Series Audio Controller - -pci:v00001002d00007919sv00001179sd00007919* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001002d00007919sv000017F2sd00005000* - ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard - -pci:v00001002d0000791E* - ID_PRODUCT_FROM_DATABASE=RS690 [Radeon X1200] - -pci:v00001002d0000791Esv00001462sd00007327* - ID_PRODUCT_FROM_DATABASE=K9AG Neo2 - -pci:v00001002d0000791Esv000017F2sd00005000* - ID_PRODUCT_FROM_DATABASE=KI690-AM2 Motherboard - -pci:v00001002d0000791F* - ID_PRODUCT_FROM_DATABASE=RS690M [Radeon Xpress 1200/1250/1270] - -pci:v00001002d0000791Fsv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001002d00007930* - ID_PRODUCT_FROM_DATABASE=RS600 Host Bridge - -pci:v00001002d00007932* - ID_PRODUCT_FROM_DATABASE=RS600 PCI to PCI Bridge (Internal gfx) - -pci:v00001002d00007933* - ID_PRODUCT_FROM_DATABASE=RS600 PCI to PCI Bridge (PCI Express Graphics Port 0) - -pci:v00001002d00007935* - ID_PRODUCT_FROM_DATABASE=RS600 PCI to PCI Bridge (PCI Express Port 1) - -pci:v00001002d00007936* - ID_PRODUCT_FROM_DATABASE=RS600 PCI to PCI Bridge (PCI Express Port 2) - -pci:v00001002d00007937* - ID_PRODUCT_FROM_DATABASE=RS690 PCI to PCI Bridge (PCI Express Port 3) - -pci:v00001002d0000793B* - ID_PRODUCT_FROM_DATABASE=RS600 HDMI Audio [Radeon Xpress 1250] - -pci:v00001002d0000793F* - ID_PRODUCT_FROM_DATABASE=RS690M [Radeon Xpress 1200/1250/1270] (Secondary) - -pci:v00001002d00007941* - ID_PRODUCT_FROM_DATABASE=RS600 [Radeon Xpress 1250] - -pci:v00001002d00007942* - ID_PRODUCT_FROM_DATABASE=RS600M [Radeon Xpress 1250] - -pci:v00001002d0000796E* - ID_PRODUCT_FROM_DATABASE=RS740 [Radeon 2100] - -pci:v00001002d00009400* - ID_PRODUCT_FROM_DATABASE=R600 [Radeon HD 2900 Series] - -pci:v00001002d00009400sv00001002sd00002552* - ID_PRODUCT_FROM_DATABASE=Radeon HD 2900 XT - -pci:v00001002d00009400sv00001002sd00003000* - ID_PRODUCT_FROM_DATABASE=Radeon HD 2900 PRO - -pci:v00001002d00009400sv00001002sd00003142* - ID_PRODUCT_FROM_DATABASE=HIS Radeon HD 2900XT 512MB GDDR3 VIVO PCIe - -pci:v00001002d00009401* - ID_PRODUCT_FROM_DATABASE=R600 [Radeon HD 2900 XT] - -pci:v00001002d00009403* - ID_PRODUCT_FROM_DATABASE=R600 [Radeon HD 2900 PRO] - -pci:v00001002d00009405* - ID_PRODUCT_FROM_DATABASE=R600 [Radeon HD 2900 GT] - -pci:v00001002d0000940A* - ID_PRODUCT_FROM_DATABASE=R600 GL [FireGL V8650] - -pci:v00001002d0000940B* - ID_PRODUCT_FROM_DATABASE=R600 GL [FireGL V8600] - -pci:v00001002d0000940F* - ID_PRODUCT_FROM_DATABASE=R600 GL [FireGL V7600] - -pci:v00001002d00009440* - ID_PRODUCT_FROM_DATABASE=RV770 [Radeon HD 4870] - -pci:v00001002d00009441* - ID_PRODUCT_FROM_DATABASE=R700 [Radeon HD 4870 X2] - -pci:v00001002d00009442* - ID_PRODUCT_FROM_DATABASE=RV770 [Radeon HD 4850] - -pci:v00001002d00009442sv00001002sd00000502* - ID_PRODUCT_FROM_DATABASE=MSI R4850-T2D512 - -pci:v00001002d00009442sv0000174Bsd0000E810* - ID_PRODUCT_FROM_DATABASE=Sapphire HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink - -pci:v00001002d00009443* - ID_PRODUCT_FROM_DATABASE=R700 [Radeon HD 4850 X2] - -pci:v00001002d00009444* - ID_PRODUCT_FROM_DATABASE=RV770 [FirePro V8750] - -pci:v00001002d00009446* - ID_PRODUCT_FROM_DATABASE=RV770 [FirePro V7760] - -pci:v00001002d0000944A* - ID_PRODUCT_FROM_DATABASE=RV770/M98L [Mobility Radeon HD 4850] - -pci:v00001002d0000944B* - ID_PRODUCT_FROM_DATABASE=RV770/M98 [Mobility Radeon HD 4850 X2] - -pci:v00001002d0000944C* - ID_PRODUCT_FROM_DATABASE=RV770 LE [Radeon HD 4830] - -pci:v00001002d0000944E* - ID_PRODUCT_FROM_DATABASE=RV770 CE [Radeon HD 4710] - -pci:v00001002d0000944Esv0000174Bsd00003261* - ID_PRODUCT_FROM_DATABASE=Sapphire Radeon HD 4810 - -pci:v00001002d00009450* - ID_PRODUCT_FROM_DATABASE=RV770 [FireStream 9270] - -pci:v00001002d00009452* - ID_PRODUCT_FROM_DATABASE=RV770 [FireStream 9250] - -pci:v00001002d00009456* - ID_PRODUCT_FROM_DATABASE=RV770 [FirePro V8700] - -pci:v00001002d0000945A* - ID_PRODUCT_FROM_DATABASE=RV770/M98-XT [Mobility Radeon HD 4870] - -pci:v00001002d00009460* - ID_PRODUCT_FROM_DATABASE=RV790 [Radeon HD 4890] - -pci:v00001002d00009462* - ID_PRODUCT_FROM_DATABASE=RV790 [Radeon HD 4860] - -pci:v00001002d0000946A* - ID_PRODUCT_FROM_DATABASE=RV770 [FirePro M7750] - -pci:v00001002d00009480* - ID_PRODUCT_FROM_DATABASE=RV730/M96 [Mobility Radeon HD 4650/5165] - -pci:v00001002d00009480sv0000103Csd00003628* - ID_PRODUCT_FROM_DATABASE=ATI Mobility Radeon HD 4650 [dv6-1190en] - -pci:v00001002d00009488* - ID_PRODUCT_FROM_DATABASE=RV730/M96-XT [Mobility Radeon HD 4670] - -pci:v00001002d00009489* - ID_PRODUCT_FROM_DATABASE=RV730/M96-XT [Mobility FireGL V5725] - -pci:v00001002d00009490* - ID_PRODUCT_FROM_DATABASE=RV730 XT [Radeon HD 4670] - -pci:v00001002d00009490sv0000174Bsd0000E880* - ID_PRODUCT_FROM_DATABASE=Radeon HD 4670 512MB DDR3 - -pci:v00001002d00009491* - ID_PRODUCT_FROM_DATABASE=RV730/M96-CSP [Radeon E4690] - -pci:v00001002d00009495* - ID_PRODUCT_FROM_DATABASE=RV730 [Radeon HD 4600 AGP Series] - -pci:v00001002d00009495sv00001002sd00009495* - ID_PRODUCT_FROM_DATABASE=RV730 XT [PowerColor Radeon HD4670 AGP 1GB DDR] - -pci:v00001002d00009495sv00001458sd00000028* - ID_PRODUCT_FROM_DATABASE=HD4650 - -pci:v00001002d00009495sv00001682sd00000028* - ID_PRODUCT_FROM_DATABASE=HD465X - -pci:v00001002d00009498* - ID_PRODUCT_FROM_DATABASE=RV730 PRO [Radeon HD 4650] - -pci:v00001002d0000949C* - ID_PRODUCT_FROM_DATABASE=RV730 [FirePro V7750] - -pci:v00001002d0000949E* - ID_PRODUCT_FROM_DATABASE=RV730 [FirePro V5700] - -pci:v00001002d0000949F* - ID_PRODUCT_FROM_DATABASE=RV730 [FirePro V3750] - -pci:v00001002d000094A0* - ID_PRODUCT_FROM_DATABASE=RV740/M97 [Mobility Radeon HD 4830] - -pci:v00001002d000094A1* - ID_PRODUCT_FROM_DATABASE=RV740/M97-XT [Mobility Radeon HD 4860] - -pci:v00001002d000094A3* - ID_PRODUCT_FROM_DATABASE=RV740/M97 GL [FirePro M7740] - -pci:v00001002d000094B3* - ID_PRODUCT_FROM_DATABASE=RV740 PRO [Radeon HD 4770] - -pci:v00001002d000094B4* - ID_PRODUCT_FROM_DATABASE=RV740 PRO [Radeon HD 4750] - -pci:v00001002d000094B5* - ID_PRODUCT_FROM_DATABASE=RV740 [Radeon HD 4770] - -pci:v00001002d000094C1* - ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2400 PRO/XT] - -pci:v00001002d000094C1sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00001002d000094C1sv00001028sd00000D02* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00001002d000094C3* - ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2400 PRO] - -pci:v00001002d000094C3sv00001002sd000094C3* - ID_PRODUCT_FROM_DATABASE=Radeon HD 2400PRO - -pci:v00001002d000094C3sv00001028sd00000302* - ID_PRODUCT_FROM_DATABASE=Radeon HD 2400 Pro - -pci:v00001002d000094C3sv0000174Bsd0000E400* - ID_PRODUCT_FROM_DATABASE=Sapphire HD 2400 PRO video device - -pci:v00001002d000094C3sv000018BCsd00003550* - ID_PRODUCT_FROM_DATABASE=GeCube Radeon HD2400 PRO - -pci:v00001002d000094C4* - ID_PRODUCT_FROM_DATABASE=RV610 LE [Radeon HD 2400 PRO AGP] - -pci:v00001002d000094C5* - ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2400 LE] - -pci:v00001002d000094C7* - ID_PRODUCT_FROM_DATABASE=RV610 [Radeon HD 2350] - -pci:v00001002d000094C8* - ID_PRODUCT_FROM_DATABASE=RV610/M74 [Mobility Radeon HD 2400 XT] - -pci:v00001002d000094C9* - ID_PRODUCT_FROM_DATABASE=RV610/M72-S [Mobility Radeon HD 2400] - -pci:v00001002d000094C9sv00001002sd000094C9* - ID_PRODUCT_FROM_DATABASE=Radeon HD2400 - -pci:v00001002d000094CB* - ID_PRODUCT_FROM_DATABASE=RV610 [Radeon E2400] - -pci:v00001002d000094CC* - ID_PRODUCT_FROM_DATABASE=RV610 LE [Radeon HD 2400 PRO PCI] - -pci:v00001002d00009500* - ID_PRODUCT_FROM_DATABASE=RV670 [Radeon HD 3850 X2] - -pci:v00001002d00009501* - ID_PRODUCT_FROM_DATABASE=RV670 [Radeon HD 3870] - -pci:v00001002d00009501sv0000174Bsd0000E620* - ID_PRODUCT_FROM_DATABASE=Sapphire Radeon HD 3870 PCIe 2.0 - -pci:v00001002d00009504* - ID_PRODUCT_FROM_DATABASE=RV670/M88 [Mobility Radeon HD 3850] - -pci:v00001002d00009505* - ID_PRODUCT_FROM_DATABASE=RV670 [Radeon HD 3690/3850] - -pci:v00001002d00009505sv0000148Csd00003000* - ID_PRODUCT_FROM_DATABASE=Radeon HD 3850 - -pci:v00001002d00009505sv0000174Bsd00003000* - ID_PRODUCT_FROM_DATABASE=Radeon HD 3690/3850 - -pci:v00001002d00009505sv00001787sd00003000* - ID_PRODUCT_FROM_DATABASE=Radeon HD 3690 - -pci:v00001002d00009506* - ID_PRODUCT_FROM_DATABASE=RV670/M88 [Mobility Radeon HD 3850 X2] - -pci:v00001002d00009507* - ID_PRODUCT_FROM_DATABASE=RV670 [Radeon HD 3830] - -pci:v00001002d00009508* - ID_PRODUCT_FROM_DATABASE=RV670/M88-XT [Mobility Radeon HD 3870] - -pci:v00001002d00009509* - ID_PRODUCT_FROM_DATABASE=RV670/M88 [Mobility Radeon HD 3870 X2] - -pci:v00001002d0000950F* - ID_PRODUCT_FROM_DATABASE=R680 [Radeon HD 3870 X2] - -pci:v00001002d00009511* - ID_PRODUCT_FROM_DATABASE=RV670 GL [FireGL V7700] - -pci:v00001002d00009513* - ID_PRODUCT_FROM_DATABASE=RV670 [Radeon HD 3850 X2] - -pci:v00001002d00009515* - ID_PRODUCT_FROM_DATABASE=RV670 PRO [Radeon HD 3850 AGP] - -pci:v00001002d00009519* - ID_PRODUCT_FROM_DATABASE=RV670 [FireStream 9170] - -pci:v00001002d00009540* - ID_PRODUCT_FROM_DATABASE=RV710 [Radeon HD 4550] - -pci:v00001002d0000954F* - ID_PRODUCT_FROM_DATABASE=RV710 [Radeon HD 4350/4550] - -pci:v00001002d0000954Fsv00001462sd00001618* - ID_PRODUCT_FROM_DATABASE=R4350 MD512H (MS-V161) - -pci:v00001002d00009552* - ID_PRODUCT_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330/4350/4550] - -pci:v00001002d00009552sv00001028sd00001103* - ID_PRODUCT_FROM_DATABASE=M92 [Mobility Radeon HD 4330] - -pci:v00001002d00009552sv00001458sd000021AC* - ID_PRODUCT_FROM_DATABASE=Radeon HD 4350 - -pci:v00001002d00009552sv00001458sd000021ED* - ID_PRODUCT_FROM_DATABASE=Radeon HD 4550 - -pci:v00001002d00009552sv0000148Csd00003000* - ID_PRODUCT_FROM_DATABASE=Radeon HD 4350 Go! Green 512MB GDDR3 - -pci:v00001002d00009552sv0000174Bsd00003000* - ID_PRODUCT_FROM_DATABASE=Radeon HD 4350/4550 HyperMemory DDR2 - -pci:v00001002d00009553* - ID_PRODUCT_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4530/4570/545v] - -pci:v00001002d00009553sv00001179sd0000FF82* - ID_PRODUCT_FROM_DATABASE=Satellite L505-13T GPU (Mobility Radeon HD 5145) - -pci:v00001002d00009555* - ID_PRODUCT_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4350/4550] - -pci:v00001002d00009555sv0000103Csd00001411* - ID_PRODUCT_FROM_DATABASE=ProBook 4720s GPU (Mobility Radeon HD 4350) - -pci:v00001002d00009557* - ID_PRODUCT_FROM_DATABASE=RV711 [FirePro RG220] - -pci:v00001002d0000955F* - ID_PRODUCT_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330] - -pci:v00001002d00009580* - ID_PRODUCT_FROM_DATABASE=RV630 [Radeon HD 2600 PRO] - -pci:v00001002d00009581* - ID_PRODUCT_FROM_DATABASE=RV630/M76 [Mobility Radeon HD 2600] - -pci:v00001002d00009583* - ID_PRODUCT_FROM_DATABASE=RV630/M76 [Mobility Radeon HD 2600 XT/2700] - -pci:v00001002d00009583sv0000106Bsd00000083* - ID_PRODUCT_FROM_DATABASE=iMac 7,1 - -pci:v00001002d00009583sv00001734sd00001107* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 2700 - -pci:v00001002d00009586* - ID_PRODUCT_FROM_DATABASE=RV630 XT [Radeon HD 2600 XT AGP] - -pci:v00001002d00009587* - ID_PRODUCT_FROM_DATABASE=RV630 PRO [Radeon HD 2600 PRO AGP] - -pci:v00001002d00009588* - ID_PRODUCT_FROM_DATABASE=RV630 XT [Radeon HD 2600 XT] - -pci:v00001002d00009588sv00001458sd0000216C* - ID_PRODUCT_FROM_DATABASE=Radeon HD 2600 XT, 256MB GDDR3, 2x DVI, TV-out, PCIe (GV-RX26T256H) - -pci:v00001002d00009589* - ID_PRODUCT_FROM_DATABASE=RV630 PRO [Radeon HD 2600 PRO] - -pci:v00001002d00009589sv00001787sd00003000* - ID_PRODUCT_FROM_DATABASE=Radeon HD 3610 - -pci:v00001002d0000958A* - ID_PRODUCT_FROM_DATABASE=RV630 [Radeon HD 2600 X2] - -pci:v00001002d0000958B* - ID_PRODUCT_FROM_DATABASE=RV630/M76 [Mobility Radeon HD 2600 XT] - -pci:v00001002d0000958C* - ID_PRODUCT_FROM_DATABASE=RV630 GL [FireGL V5600] - -pci:v00001002d0000958D* - ID_PRODUCT_FROM_DATABASE=RV630 GL [FireGL V3600] - -pci:v00001002d00009591* - ID_PRODUCT_FROM_DATABASE=RV635/M86 [Mobility Radeon HD 3650] - -pci:v00001002d00009591sv00001002sd00009591* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 3650 - -pci:v00001002d00009593* - ID_PRODUCT_FROM_DATABASE=RV635/M86 [Mobility Radeon HD 3670] - -pci:v00001002d00009595* - ID_PRODUCT_FROM_DATABASE=RV635/M86 GL [Mobility FireGL V5700] - -pci:v00001002d00009596* - ID_PRODUCT_FROM_DATABASE=RV635 PRO [Radeon HD 3650 AGP] - -pci:v00001002d00009596sv00001043sd00000028* - ID_PRODUCT_FROM_DATABASE=EAH3650 SILENT/HTDI/512M/A - -pci:v00001002d00009597* - ID_PRODUCT_FROM_DATABASE=RV635 [Radeon HD 3600 Series] - -pci:v00001002d00009598* - ID_PRODUCT_FROM_DATABASE=RV635 [Radeon HD 3600 Series] - -pci:v00001002d00009598sv00001002sd00009598* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 3600 - -pci:v00001002d00009598sv00001043sd000001D6* - ID_PRODUCT_FROM_DATABASE=EAH3650 Silent - -pci:v00001002d00009598sv00001043sd00003001* - ID_PRODUCT_FROM_DATABASE=Radeon HD 4570 - -pci:v00001002d00009598sv0000174Bsd00003001* - ID_PRODUCT_FROM_DATABASE=Radeon HD 3750 - -pci:v00001002d00009598sv0000174Bsd00004580* - ID_PRODUCT_FROM_DATABASE=RV635 PRO [Radeon HD 4580] - -pci:v00001002d00009599* - ID_PRODUCT_FROM_DATABASE=RV635 [Radeon HD 3650 AGP] - -pci:v00001002d000095C0* - ID_PRODUCT_FROM_DATABASE=RV620 PRO [Radeon HD 3470] - -pci:v00001002d000095C0sv00001002sd000095C0* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 3470 - -pci:v00001002d000095C2* - ID_PRODUCT_FROM_DATABASE=RV620/M82 [Mobility Radeon HD 3410/3430] - -pci:v00001002d000095C4* - ID_PRODUCT_FROM_DATABASE=RV620/M82 [Mobility Radeon HD 3450/3470] - -pci:v00001002d000095C4sv00001002sd000095C4* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 3400 - -pci:v00001002d000095C5* - ID_PRODUCT_FROM_DATABASE=RV620 LE [Radeon HD 3450] - -pci:v00001002d000095C5sv00001028sd00000342* - ID_PRODUCT_FROM_DATABASE=OptiPlex 980 - -pci:v00001002d000095C6* - ID_PRODUCT_FROM_DATABASE=RV620 LE [Radeon HD 3450 AGP] - -pci:v00001002d000095C9* - ID_PRODUCT_FROM_DATABASE=RV620 LE [Radeon HD 3450 PCI] - -pci:v00001002d000095CC* - ID_PRODUCT_FROM_DATABASE=RV620 [FirePro V3700] - -pci:v00001002d000095CF* - ID_PRODUCT_FROM_DATABASE=RV620 [FirePro 2260] - -pci:v00001002d0000960F* - ID_PRODUCT_FROM_DATABASE=RS780 HDMI Audio [Radeon (HD) 3000 Series] - -pci:v00001002d00009610* - ID_PRODUCT_FROM_DATABASE=RS780 [Radeon HD 3200] - -pci:v00001002d00009610sv00001458sd0000D000* - ID_PRODUCT_FROM_DATABASE=GA-MA78GM-S2H Motherboard - -pci:v00001002d00009611* - ID_PRODUCT_FROM_DATABASE=RS780C [Radeon 3100] - -pci:v00001002d00009612* - ID_PRODUCT_FROM_DATABASE=RS780M [Mobility Radeon HD 3200] - -pci:v00001002d00009613* - ID_PRODUCT_FROM_DATABASE=RS780MC [Mobility Radeon HD 3100] - -pci:v00001002d00009614* - ID_PRODUCT_FROM_DATABASE=RS780D [Radeon HD 3300] - -pci:v00001002d00009616* - ID_PRODUCT_FROM_DATABASE=RS780L [Radeon 3000] - -pci:v00001002d00009640* - ID_PRODUCT_FROM_DATABASE=BeaverCreek [Radeon HD 6550D] - -pci:v00001002d00009641* - ID_PRODUCT_FROM_DATABASE=BeaverCreek [Radeon HD 6620G] - -pci:v00001002d00009642* - ID_PRODUCT_FROM_DATABASE=Sumo [Radeon HD 6370D] - -pci:v00001002d00009643* - ID_PRODUCT_FROM_DATABASE=Sumo [Radeon HD 6380G] - -pci:v00001002d00009644* - ID_PRODUCT_FROM_DATABASE=Sumo [Radeon HD 6410D] - -pci:v00001002d00009645* - ID_PRODUCT_FROM_DATABASE=Sumo [Radeon HD 6410D] - -pci:v00001002d00009647* - ID_PRODUCT_FROM_DATABASE=BeaverCreek [Radeon HD 6520G] - -pci:v00001002d00009648* - ID_PRODUCT_FROM_DATABASE=Sumo [Radeon HD 6480G] - -pci:v00001002d00009649* - ID_PRODUCT_FROM_DATABASE=Sumo [Radeon HD 6480G] - -pci:v00001002d0000964A* - ID_PRODUCT_FROM_DATABASE=BeaverCreek [Radeon HD 6530D] - -pci:v00001002d0000964B* - ID_PRODUCT_FROM_DATABASE=Sumo - -pci:v00001002d0000964C* - ID_PRODUCT_FROM_DATABASE=Sumo - -pci:v00001002d0000964E* - ID_PRODUCT_FROM_DATABASE=Sumo - -pci:v00001002d0000964F* - ID_PRODUCT_FROM_DATABASE=Sumo - -pci:v00001002d0000970F* - ID_PRODUCT_FROM_DATABASE=RS880 HDMI Audio [Radeon HD 4200 Series] - -pci:v00001002d0000970Fsv00001019sd00002120* - ID_PRODUCT_FROM_DATABASE=A785GM-M - -pci:v00001002d0000970Fsv00001043sd000083A2* - ID_PRODUCT_FROM_DATABASE=M4A785TD Motherboard - -pci:v00001002d0000970Fsv00001043sd0000843E* - ID_PRODUCT_FROM_DATABASE=M5A88-V EVO - -pci:v00001002d00009710* - ID_PRODUCT_FROM_DATABASE=RS880 [Radeon HD 4200] - -pci:v00001002d00009710sv00001019sd00002120* - ID_PRODUCT_FROM_DATABASE=A785GM-M - -pci:v00001002d00009710sv00001043sd000083A2* - ID_PRODUCT_FROM_DATABASE=M4A785TD Motherboard - -pci:v00001002d00009712* - ID_PRODUCT_FROM_DATABASE=RS880M [Mobility Radeon HD 4200 Series] - -pci:v00001002d00009713* - ID_PRODUCT_FROM_DATABASE=RS880M [Mobility Radeon HD 4100] - -pci:v00001002d00009714* - ID_PRODUCT_FROM_DATABASE=RS880 [Radeon HD 4290] - -pci:v00001002d00009715* - ID_PRODUCT_FROM_DATABASE=RS880 [Radeon HD 4250] - -pci:v00001002d00009715sv00001043sd0000843E* - ID_PRODUCT_FROM_DATABASE=M5A88-V EVO - -pci:v00001002d00009802* - ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 6310] - -pci:v00001002d00009802sv0000174Bsd00001001* - ID_PRODUCT_FROM_DATABASE=Sapphire PURE Fusion Mini - -pci:v00001002d00009803* - ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 6310] - -pci:v00001002d00009804* - ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 6250] - -pci:v00001002d00009805* - ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 6250] - -pci:v00001002d00009806* - ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 6320] - -pci:v00001002d00009807* - ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 6290] - -pci:v00001002d00009808* - ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 7340] - -pci:v00001002d00009809* - ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 7310] - -pci:v00001002d0000980A* - ID_PRODUCT_FROM_DATABASE=Wrestler [Radeon HD 7290] - -pci:v00001002d00009830* - ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8400] - -pci:v00001002d00009831* - ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8400E] - -pci:v00001002d00009832* - ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8330] - -pci:v00001002d00009833* - ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8330E] - -pci:v00001002d00009834* - ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8210] - -pci:v00001002d00009835* - ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8310E] - -pci:v00001002d00009836* - ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8280] - -pci:v00001002d00009837* - ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8280E] - -pci:v00001002d00009838* - ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8240] - -pci:v00001002d00009839* - ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8180] - -pci:v00001002d0000983A* - ID_PRODUCT_FROM_DATABASE=Kabini - -pci:v00001002d0000983B* - ID_PRODUCT_FROM_DATABASE=Kabini - -pci:v00001002d0000983C* - ID_PRODUCT_FROM_DATABASE=Kabini - -pci:v00001002d0000983D* - ID_PRODUCT_FROM_DATABASE=Kabini [Radeon HD 8250] - -pci:v00001002d0000983E* - ID_PRODUCT_FROM_DATABASE=Kabini - -pci:v00001002d0000983F* - ID_PRODUCT_FROM_DATABASE=Kabini - -pci:v00001002d00009901* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7660D] - -pci:v00001002d00009902* - ID_PRODUCT_FROM_DATABASE=Trinity HDMI Audio Controller - -pci:v00001002d00009903* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7640G] - -pci:v00001002d00009904* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7560D] - -pci:v00001002d00009905* - ID_PRODUCT_FROM_DATABASE=Trinity [FirePro A300 Series Graphics] - -pci:v00001002d00009906* - ID_PRODUCT_FROM_DATABASE=Trinity [FirePro A300 Series Graphics] - -pci:v00001002d00009907* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7620G] - -pci:v00001002d00009908* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7600G] - -pci:v00001002d00009909* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7500G] - -pci:v00001002d0000990A* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7500G] - -pci:v00001002d0000990B* - ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8650G] - -pci:v00001002d0000990C* - ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8670D] - -pci:v00001002d0000990D* - ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8550G] - -pci:v00001002d0000990E* - ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8570D] - -pci:v00001002d0000990F* - ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8610G] - -pci:v00001002d00009910* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7660G] - -pci:v00001002d00009913* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7640G] - -pci:v00001002d00009917* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7620G] - -pci:v00001002d00009918* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7600G] - -pci:v00001002d00009919* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7500G] - -pci:v00001002d00009990* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7520G] - -pci:v00001002d00009991* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7540D] - -pci:v00001002d00009992* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7420G] - -pci:v00001002d00009993* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7480D] - -pci:v00001002d00009994* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7400G] - -pci:v00001002d00009995* - ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8450G] - -pci:v00001002d00009996* - ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8470D] - -pci:v00001002d00009997* - ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8350G] - -pci:v00001002d00009998* - ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8370D] - -pci:v00001002d00009999* - ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8510G] - -pci:v00001002d0000999A* - ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8410G] - -pci:v00001002d0000999B* - ID_PRODUCT_FROM_DATABASE=Richland [Radeon HD 8310G] - -pci:v00001002d0000999C* - ID_PRODUCT_FROM_DATABASE=Richland - -pci:v00001002d0000999D* - ID_PRODUCT_FROM_DATABASE=Richland - -pci:v00001002d000099A0* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7520G] - -pci:v00001002d000099A2* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7420G] - -pci:v00001002d000099A4* - ID_PRODUCT_FROM_DATABASE=Trinity [Radeon HD 7400G] - -pci:v00001002d0000AA00* - ID_PRODUCT_FROM_DATABASE=R600 HDMI Audio [Radeon HD 2900 Series] - -pci:v00001002d0000AA08* - ID_PRODUCT_FROM_DATABASE=RV630 HDMI Audio [Radeon HD 2600 Series] - -pci:v00001002d0000AA10* - ID_PRODUCT_FROM_DATABASE=RV610 HDMI Audio [Radeon HD 2350/2400 Series] - -pci:v00001002d0000AA10sv0000174Bsd0000AA10* - ID_PRODUCT_FROM_DATABASE=Sapphire HD 2400 PRO audio device - -pci:v00001002d0000AA10sv000018BCsd0000AA10* - ID_PRODUCT_FROM_DATABASE=GeCube Radeon HD 2400 PRO HDCP-capable digital-only audio device - -pci:v00001002d0000AA18* - ID_PRODUCT_FROM_DATABASE=RV670/680 HDMI Audio [Radeon HD 3690/3800 Series] - -pci:v00001002d0000AA20* - ID_PRODUCT_FROM_DATABASE=RV635 HDMI Audio [Radeon HD 3600 Series] - -pci:v00001002d0000AA28* - ID_PRODUCT_FROM_DATABASE=RV620 HDMI Audio [Radeon HD 3400 Series] - -pci:v00001002d0000AA30* - ID_PRODUCT_FROM_DATABASE=RV770 HDMI Audio [Radeon HD 4850/4870] - -pci:v00001002d0000AA30sv0000174Bsd0000AA30* - ID_PRODUCT_FROM_DATABASE=Sapphire HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink - -pci:v00001002d0000AA38* - ID_PRODUCT_FROM_DATABASE=RV710/730 HDMI Audio [Radeon HD 4000 series] - -pci:v00001002d0000AA38sv0000103Csd00003628* - ID_PRODUCT_FROM_DATABASE=ATI RV710/730 [dv6-1190en] - -pci:v00001002d0000AA38sv0000174Bsd0000AA38* - ID_PRODUCT_FROM_DATABASE=R700 Audio Device [Radeon HD 4000 Series] - -pci:v00001002d0000AA50* - ID_PRODUCT_FROM_DATABASE=Cypress HDMI Audio [Radeon HD 5800 Series] - -pci:v00001002d0000AA58* - ID_PRODUCT_FROM_DATABASE=Juniper HDMI Audio [Radeon HD 5700 Series] - -pci:v00001002d0000AA60* - ID_PRODUCT_FROM_DATABASE=Redwood HDMI Audio [Radeon HD 5000 Series] - -pci:v00001002d0000AA60sv00001025sd0000033D* - ID_PRODUCT_FROM_DATABASE=Mobility Radeon HD 5650 - -pci:v00001002d0000AA60sv00001025sd00000347* - ID_PRODUCT_FROM_DATABASE=Aspire 7740G - -pci:v00001002d0000AA68* - ID_PRODUCT_FROM_DATABASE=Cedar HDMI Audio [Radeon HD 5400/6300 Series] - -pci:v00001002d0000AA68sv00001028sd0000AA68* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v00001002d0000AA80* - ID_PRODUCT_FROM_DATABASE=Cayman/Antilles HDMI Audio [Radeon HD 6900 Series] - -pci:v00001002d0000AA88* - ID_PRODUCT_FROM_DATABASE=Barts HDMI Audio [Radeon HD 6800 Series] - -pci:v00001002d0000AA90* - ID_PRODUCT_FROM_DATABASE=Turks/Whistler HDMI Audio [Radeon HD 6000 Series] - -pci:v00001002d0000AA90sv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00001002d0000AA98* - ID_PRODUCT_FROM_DATABASE=Caicos HDMI Audio [Radeon HD 6400 Series] - -pci:v00001002d0000AA98sv0000174Bsd0000AA98* - ID_PRODUCT_FROM_DATABASE=Sapphire HD 6450 1GB DDR3 - -pci:v00001002d0000AAA0* - ID_PRODUCT_FROM_DATABASE=Tahiti XT HDMI Audio [Radeon HD 7970 Series] - -pci:v00001002d0000AAB0* - ID_PRODUCT_FROM_DATABASE=Cape Verde/Pitcairn HDMI Audio [Radeon HD 7700/7800 Series] - -pci:v00001002d0000AC00* - ID_PRODUCT_FROM_DATABASE=Theater 600 Pro - -pci:v00001002d0000AC02* - ID_PRODUCT_FROM_DATABASE=TV Wonder HD 600 PCIe - -pci:v00001002d0000AC12* - ID_PRODUCT_FROM_DATABASE=Theater HD T507 (DVB-T) TV tuner/capture device - -pci:v00001002d0000CAB0* - ID_PRODUCT_FROM_DATABASE=RS100 AGP Bridge [IGP 320M] - -pci:v00001002d0000CAB2* - ID_PRODUCT_FROM_DATABASE=RS200/RS200M AGP Bridge [IGP 340M] - -pci:v00001002d0000CAB3* - ID_PRODUCT_FROM_DATABASE=R200 AGP Bridge [Mobility Radeon 7000 IGP] - -pci:v00001002d0000CBB2* - ID_PRODUCT_FROM_DATABASE=RS200/RS200M AGP Bridge [IGP 340M] - -pci:v00001003* - ID_VENDOR_FROM_DATABASE=ULSI Systems - -pci:v00001003d00000201* - ID_PRODUCT_FROM_DATABASE=US201 - -pci:v00001004* - ID_VENDOR_FROM_DATABASE=VLSI Technology Inc - -pci:v00001004d00000005* - ID_PRODUCT_FROM_DATABASE=82C592-FC1 - -pci:v00001004d00000006* - ID_PRODUCT_FROM_DATABASE=82C593-FC1 - -pci:v00001004d00000007* - ID_PRODUCT_FROM_DATABASE=82C594-AFC2 - -pci:v00001004d00000008* - ID_PRODUCT_FROM_DATABASE=82C596/7 [Wildcat] - -pci:v00001004d00000009* - ID_PRODUCT_FROM_DATABASE=82C597-AFC2 - -pci:v00001004d0000000C* - ID_PRODUCT_FROM_DATABASE=82C541 [Lynx] - -pci:v00001004d0000000D* - ID_PRODUCT_FROM_DATABASE=82C543 [Lynx] - -pci:v00001004d00000101* - ID_PRODUCT_FROM_DATABASE=82C532 - -pci:v00001004d00000102* - ID_PRODUCT_FROM_DATABASE=82C534 [Eagle] - -pci:v00001004d00000103* - ID_PRODUCT_FROM_DATABASE=82C538 - -pci:v00001004d00000104* - ID_PRODUCT_FROM_DATABASE=82C535 - -pci:v00001004d00000105* - ID_PRODUCT_FROM_DATABASE=82C147 - -pci:v00001004d00000200* - ID_PRODUCT_FROM_DATABASE=82C975 - -pci:v00001004d00000280* - ID_PRODUCT_FROM_DATABASE=82C925 - -pci:v00001004d00000304* - ID_PRODUCT_FROM_DATABASE=QSound ThunderBird PCI Audio - -pci:v00001004d00000304sv00001004sd00000304* - ID_PRODUCT_FROM_DATABASE=QSound ThunderBird PCI Audio - -pci:v00001004d00000304sv0000122Dsd00001206* - ID_PRODUCT_FROM_DATABASE=DSP368 Audio - -pci:v00001004d00000304sv00001483sd00005020* - ID_PRODUCT_FROM_DATABASE=XWave Thunder 3D Audio - -pci:v00001004d00000305* - ID_PRODUCT_FROM_DATABASE=QSound ThunderBird PCI Audio Gameport - -pci:v00001004d00000305sv00001004sd00000305* - ID_PRODUCT_FROM_DATABASE=QSound ThunderBird PCI Audio Gameport - -pci:v00001004d00000305sv0000122Dsd00001207* - ID_PRODUCT_FROM_DATABASE=DSP368 Audio Gameport - -pci:v00001004d00000305sv00001483sd00005021* - ID_PRODUCT_FROM_DATABASE=XWave Thunder 3D Audio Gameport - -pci:v00001004d00000306* - ID_PRODUCT_FROM_DATABASE=QSound ThunderBird PCI Audio Support Registers - -pci:v00001004d00000306sv00001004sd00000306* - ID_PRODUCT_FROM_DATABASE=QSound ThunderBird PCI Audio Support Registers - -pci:v00001004d00000306sv0000122Dsd00001208* - ID_PRODUCT_FROM_DATABASE=DSP368 Audio Support Registers - -pci:v00001004d00000306sv00001483sd00005022* - ID_PRODUCT_FROM_DATABASE=XWave Thunder 3D Audio Support Registers - -pci:v00001004d00000307* - ID_PRODUCT_FROM_DATABASE=SAA7785 ThunderBird PCI Audio - -pci:v00001004d00000307sv00001004sd00000703* - ID_PRODUCT_FROM_DATABASE=Philips Rhythmic Edge PSC703 - -pci:v00001004d00000307sv00001004sd00000705* - ID_PRODUCT_FROM_DATABASE=Philips Seismic Edge PSC705 - -pci:v00001004d00000307sv00001004sd00000706* - ID_PRODUCT_FROM_DATABASE=Philips Acoustic Edge PSC706 - -pci:v00001004d00000308* - ID_PRODUCT_FROM_DATABASE=SAA7785 ThunderBird PCI Audio Gameport - -pci:v00001004d00000702* - ID_PRODUCT_FROM_DATABASE=VAS96011 [Golden Gate II] - -pci:v00001004d00000703* - ID_PRODUCT_FROM_DATABASE=Tollgate - -pci:v00001005* - ID_VENDOR_FROM_DATABASE=Avance Logic Inc. [ALI] - -pci:v00001005d00002064* - ID_PRODUCT_FROM_DATABASE=ALG2032/2064 - -pci:v00001005d00002128* - ID_PRODUCT_FROM_DATABASE=ALG2364A - -pci:v00001005d00002301* - ID_PRODUCT_FROM_DATABASE=ALG2301 - -pci:v00001005d00002302* - ID_PRODUCT_FROM_DATABASE=ALG2302 - -pci:v00001005d00002364* - ID_PRODUCT_FROM_DATABASE=ALG2364 - -pci:v00001005d00002464* - ID_PRODUCT_FROM_DATABASE=ALG2364A - -pci:v00001005d00002501* - ID_PRODUCT_FROM_DATABASE=ALG2564A/25128A - -pci:v00001006* - ID_VENDOR_FROM_DATABASE=Reply Group - -pci:v00001007* - ID_VENDOR_FROM_DATABASE=NetFrame Systems Inc - -pci:v00001008* - ID_VENDOR_FROM_DATABASE=Epson - -pci:v0000100A* - ID_VENDOR_FROM_DATABASE=Phoenix Technologies - -pci:v0000100B* - ID_VENDOR_FROM_DATABASE=National Semiconductor Corporation - -pci:v0000100Bd00000001* - ID_PRODUCT_FROM_DATABASE=DP83810 - -pci:v0000100Bd00000002* - ID_PRODUCT_FROM_DATABASE=87415/87560 IDE - -pci:v0000100Bd0000000E* - ID_PRODUCT_FROM_DATABASE=87560 Legacy I/O - -pci:v0000100Bd0000000F* - ID_PRODUCT_FROM_DATABASE=FireWire Controller - -pci:v0000100Bd00000011* - ID_PRODUCT_FROM_DATABASE=NS87560 National PCI System I/O - -pci:v0000100Bd00000012* - ID_PRODUCT_FROM_DATABASE=USB Controller - -pci:v0000100Bd00000020* - ID_PRODUCT_FROM_DATABASE=DP83815 (MacPhyter) Ethernet Controller - -pci:v0000100Bd00000020sv0000103Csd00000024* - ID_PRODUCT_FROM_DATABASE=Pavilion ze4400 builtin Network - -pci:v0000100Bd00000020sv000012D9sd0000000C* - ID_PRODUCT_FROM_DATABASE=Aculab E1/T1 PMXc cPCI carrier card - -pci:v0000100Bd00000020sv00001385sd0000F311* - ID_PRODUCT_FROM_DATABASE=FA311 / FA312 (FA311 with WoL HW) - -pci:v0000100Bd00000020sv00001385sd0000F312* - ID_PRODUCT_FROM_DATABASE=FA312 (rev. A1) Fast Ethernet PCI Adapter - -pci:v0000100Bd00000021* - ID_PRODUCT_FROM_DATABASE=PC87200 PCI to ISA Bridge - -pci:v0000100Bd00000022* - ID_PRODUCT_FROM_DATABASE=DP83820 10/100/1000 Ethernet Controller - -pci:v0000100Bd00000022sv00001186sd00004900* - ID_PRODUCT_FROM_DATABASE=DGE-500T - -pci:v0000100Bd00000022sv00001385sd0000621A* - ID_PRODUCT_FROM_DATABASE=GA621 - -pci:v0000100Bd00000022sv00001385sd0000622A* - ID_PRODUCT_FROM_DATABASE=GA622T - -pci:v0000100Bd00000028* - ID_PRODUCT_FROM_DATABASE=Geode GX2 Host Bridge - -pci:v0000100Bd0000002A* - ID_PRODUCT_FROM_DATABASE=CS5535 South Bridge - -pci:v0000100Bd0000002B* - ID_PRODUCT_FROM_DATABASE=CS5535 ISA bridge - -pci:v0000100Bd0000002D* - ID_PRODUCT_FROM_DATABASE=CS5535 IDE - -pci:v0000100Bd0000002E* - ID_PRODUCT_FROM_DATABASE=CS5535 Audio - -pci:v0000100Bd0000002F* - ID_PRODUCT_FROM_DATABASE=CS5535 USB - -pci:v0000100Bd00000030* - ID_PRODUCT_FROM_DATABASE=Geode GX2 Graphics Processor - -pci:v0000100Bd00000035* - ID_PRODUCT_FROM_DATABASE=DP83065 [Saturn] 10/100/1000 Ethernet Controller - -pci:v0000100Bd00000500* - ID_PRODUCT_FROM_DATABASE=SCx200 Bridge - -pci:v0000100Bd00000501* - ID_PRODUCT_FROM_DATABASE=SCx200 SMI - -pci:v0000100Bd00000502* - ID_PRODUCT_FROM_DATABASE=SCx200, SC1100 IDE controller - -pci:v0000100Bd00000502sv0000100Bsd00000502* - ID_PRODUCT_FROM_DATABASE=IDE Controller - -pci:v0000100Bd00000503* - ID_PRODUCT_FROM_DATABASE=SCx200, SC1100 Audio Controller - -pci:v0000100Bd00000503sv0000100Bsd00000503* - ID_PRODUCT_FROM_DATABASE=XpressAudio controller - -pci:v0000100Bd00000504* - ID_PRODUCT_FROM_DATABASE=SCx200 Video - -pci:v0000100Bd00000505* - ID_PRODUCT_FROM_DATABASE=SCx200 XBus - -pci:v0000100Bd00000510* - ID_PRODUCT_FROM_DATABASE=SC1100 Bridge - -pci:v0000100Bd00000510sv0000100Bsd00000500* - ID_PRODUCT_FROM_DATABASE=GPIO and LPC support bridge - -pci:v0000100Bd00000511* - ID_PRODUCT_FROM_DATABASE=SC1100 SMI & ACPI - -pci:v0000100Bd00000511sv0000100Bsd00000501* - ID_PRODUCT_FROM_DATABASE=SC1100 SMI & ACPI bridge - -pci:v0000100Bd00000515* - ID_PRODUCT_FROM_DATABASE=SC1100 XBus - -pci:v0000100Bd00000515sv0000100Bsd00000505* - ID_PRODUCT_FROM_DATABASE=SC1100 PCI to XBus bridge - -pci:v0000100Bd0000D001* - ID_PRODUCT_FROM_DATABASE=87410 IDE - -pci:v0000100C* - ID_VENDOR_FROM_DATABASE=Tseng Labs Inc - -pci:v0000100Cd00003202* - ID_PRODUCT_FROM_DATABASE=ET4000/W32p rev A - -pci:v0000100Cd00003205* - ID_PRODUCT_FROM_DATABASE=ET4000/W32p rev B - -pci:v0000100Cd00003206* - ID_PRODUCT_FROM_DATABASE=ET4000/W32p rev C - -pci:v0000100Cd00003207* - ID_PRODUCT_FROM_DATABASE=ET4000/W32p rev D - -pci:v0000100Cd00003208* - ID_PRODUCT_FROM_DATABASE=ET6000 - -pci:v0000100Cd00004702* - ID_PRODUCT_FROM_DATABASE=ET6300 - -pci:v0000100D* - ID_VENDOR_FROM_DATABASE=AST Research Inc - -pci:v0000100E* - ID_VENDOR_FROM_DATABASE=Weitek - -pci:v0000100Ed00009000* - ID_PRODUCT_FROM_DATABASE=P9000 Viper - -pci:v0000100Ed00009001* - ID_PRODUCT_FROM_DATABASE=P9000 Viper - -pci:v0000100Ed00009002* - ID_PRODUCT_FROM_DATABASE=P9000 Viper - -pci:v0000100Ed00009100* - ID_PRODUCT_FROM_DATABASE=P9100 Viper Pro/SE - -pci:v00001010* - ID_VENDOR_FROM_DATABASE=Video Logic, Ltd. - -pci:v00001011* - ID_VENDOR_FROM_DATABASE=Digital Equipment Corporation - -pci:v00001011d00000001* - ID_PRODUCT_FROM_DATABASE=DECchip 21050 - -pci:v00001011d00000002* - ID_PRODUCT_FROM_DATABASE=DECchip 21040 [Tulip] - -pci:v00001011d00000004* - ID_PRODUCT_FROM_DATABASE=DECchip 21030 [TGA] - -pci:v00001011d00000007* - ID_PRODUCT_FROM_DATABASE=NVRAM [Zephyr NVRAM] - -pci:v00001011d00000008* - ID_PRODUCT_FROM_DATABASE=KZPSA [KZPSA] - -pci:v00001011d00000009* - ID_PRODUCT_FROM_DATABASE=DECchip 21140 [FasterNet] - -pci:v00001011d00000009sv00001025sd00000310* - ID_PRODUCT_FROM_DATABASE=21140 Fast Ethernet - -pci:v00001011d00000009sv000010B8sd00002001* - ID_PRODUCT_FROM_DATABASE=SMC9332BDT EtherPower 10/100 - -pci:v00001011d00000009sv000010B8sd00002002* - ID_PRODUCT_FROM_DATABASE=SMC9332BVT EtherPower T4 10/100 - -pci:v00001011d00000009sv000010B8sd00002003* - ID_PRODUCT_FROM_DATABASE=SMC9334BDT EtherPower 10/100 (1-port) - -pci:v00001011d00000009sv00001109sd00002400* - ID_PRODUCT_FROM_DATABASE=ANA-6944A/TX Fast Ethernet - -pci:v00001011d00000009sv00001112sd00002300* - ID_PRODUCT_FROM_DATABASE=RNS2300 Fast Ethernet - -pci:v00001011d00000009sv00001112sd00002320* - ID_PRODUCT_FROM_DATABASE=RNS2320 Fast Ethernet - -pci:v00001011d00000009sv00001112sd00002340* - ID_PRODUCT_FROM_DATABASE=RNS2340 Fast Ethernet - -pci:v00001011d00000009sv00001113sd00001207* - ID_PRODUCT_FROM_DATABASE=EN-1207-TX Fast Ethernet - -pci:v00001011d00000009sv00001186sd00001100* - ID_PRODUCT_FROM_DATABASE=DFE-500TX Fast Ethernet - -pci:v00001011d00000009sv00001186sd00001112* - ID_PRODUCT_FROM_DATABASE=DFE-570TX Fast Ethernet - -pci:v00001011d00000009sv00001186sd00001140* - ID_PRODUCT_FROM_DATABASE=DFE-660 Cardbus Ethernet 10/100 - -pci:v00001011d00000009sv00001186sd00001142* - ID_PRODUCT_FROM_DATABASE=DFE-660 Cardbus Ethernet 10/100 - -pci:v00001011d00000009sv000011F6sd00000503* - ID_PRODUCT_FROM_DATABASE=Freedomline Fast Ethernet - -pci:v00001011d00000009sv00001282sd00009100* - ID_PRODUCT_FROM_DATABASE=AEF-380TXD Fast Ethernet - -pci:v00001011d00000009sv00001385sd00001100* - ID_PRODUCT_FROM_DATABASE=FA310TX Fast Ethernet - -pci:v00001011d00000009sv00002646sd00000001* - ID_PRODUCT_FROM_DATABASE=KNE100TX Fast Ethernet - -pci:v00001011d0000000A* - ID_PRODUCT_FROM_DATABASE=21230 Video Codec - -pci:v00001011d0000000D* - ID_PRODUCT_FROM_DATABASE=PBXGB [TGA2] - -pci:v00001011d0000000F* - ID_PRODUCT_FROM_DATABASE=PCI-to-PDQ Interface Chip [PFI] - -pci:v00001011d0000000Fsv00001011sd0000DEF1* - ID_PRODUCT_FROM_DATABASE=FDDI controller (DEFPA) - -pci:v00001011d0000000Fsv0000103Csd0000DEF1* - ID_PRODUCT_FROM_DATABASE=FDDI controller (3X-DEFPA) - -pci:v00001011d00000014* - ID_PRODUCT_FROM_DATABASE=DECchip 21041 [Tulip Pass 3] - -pci:v00001011d00000014sv00001186sd00000100* - ID_PRODUCT_FROM_DATABASE=DE-530+ - -pci:v00001011d00000016* - ID_PRODUCT_FROM_DATABASE=DGLPB [OPPO] - -pci:v00001011d00000017* - ID_PRODUCT_FROM_DATABASE=PV-PCI Graphics Controller (ZLXp-L) - -pci:v00001011d00000018* - ID_PRODUCT_FROM_DATABASE=Memory Channel interface - -pci:v00001011d00000019* - ID_PRODUCT_FROM_DATABASE=DECchip 21142/43 - -pci:v00001011d00000019sv00001011sd0000500A* - ID_PRODUCT_FROM_DATABASE=DE500A Fast Ethernet - -pci:v00001011d00000019sv00001011sd0000500B* - ID_PRODUCT_FROM_DATABASE=DE500B Fast Ethernet - -pci:v00001011d00000019sv00001014sd00000001* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Cardbus - -pci:v00001011d00000019sv00001025sd00000315* - ID_PRODUCT_FROM_DATABASE=ALN315 Fast Ethernet - -pci:v00001011d00000019sv00001033sd0000800C* - ID_PRODUCT_FROM_DATABASE=PC-9821-CS01 100BASE-TX Interface Card - -pci:v00001011d00000019sv00001033sd0000800D* - ID_PRODUCT_FROM_DATABASE=PC-9821NR-B06 100BASE-TX Interface Card - -pci:v00001011d00000019sv0000103Csd0000125A* - ID_PRODUCT_FROM_DATABASE=10/100Base-TX (PCI) [A5506B] - -pci:v00001011d00000019sv0000108Dsd00000016* - ID_PRODUCT_FROM_DATABASE=Rapidfire 2327 10/100 Ethernet - -pci:v00001011d00000019sv0000108Dsd00000017* - ID_PRODUCT_FROM_DATABASE=GoCard 2250 Ethernet 10/100 Cardbus - -pci:v00001011d00000019sv000010B8sd00002005* - ID_PRODUCT_FROM_DATABASE=SMC8032DT Extreme Ethernet 10/100 - -pci:v00001011d00000019sv000010B8sd00008034* - ID_PRODUCT_FROM_DATABASE=SMC8034 Extreme Ethernet 10/100 - -pci:v00001011d00000019sv000010EFsd00008169* - ID_PRODUCT_FROM_DATABASE=Cardbus Fast Ethernet - -pci:v00001011d00000019sv00001109sd00002A00* - ID_PRODUCT_FROM_DATABASE=ANA-6911A/TX Fast Ethernet - -pci:v00001011d00000019sv00001109sd00002B00* - ID_PRODUCT_FROM_DATABASE=ANA-6911A/TXC Fast Ethernet - -pci:v00001011d00000019sv00001109sd00003000* - ID_PRODUCT_FROM_DATABASE=ANA-6922/TX Fast Ethernet - -pci:v00001011d00000019sv00001113sd00001207* - ID_PRODUCT_FROM_DATABASE=Cheetah Fast Ethernet - -pci:v00001011d00000019sv00001113sd00002220* - ID_PRODUCT_FROM_DATABASE=Cardbus Fast Ethernet - -pci:v00001011d00000019sv0000115Dsd00000002* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v00001011d00000019sv00001179sd00000203* - ID_PRODUCT_FROM_DATABASE=Fast Ethernet - -pci:v00001011d00000019sv00001179sd00000204* - ID_PRODUCT_FROM_DATABASE=Cardbus Fast Ethernet - -pci:v00001011d00000019sv00001186sd00001100* - ID_PRODUCT_FROM_DATABASE=DFE-500TX Fast Ethernet - -pci:v00001011d00000019sv00001186sd00001101* - ID_PRODUCT_FROM_DATABASE=DFE-500TX Fast Ethernet - -pci:v00001011d00000019sv00001186sd00001102* - ID_PRODUCT_FROM_DATABASE=DFE-500TX Fast Ethernet - -pci:v00001011d00000019sv00001186sd00001112* - ID_PRODUCT_FROM_DATABASE=DFE-570TX Quad Fast Ethernet - -pci:v00001011d00000019sv00001259sd00002800* - ID_PRODUCT_FROM_DATABASE=AT-2800Tx Fast Ethernet - -pci:v00001011d00000019sv00001266sd00000004* - ID_PRODUCT_FROM_DATABASE=Eagle Fast EtherMAX - -pci:v00001011d00000019sv000012AFsd00000019* - ID_PRODUCT_FROM_DATABASE=NetFlyer Cardbus Fast Ethernet - -pci:v00001011d00000019sv00001374sd00000001* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet Card 10/100 - -pci:v00001011d00000019sv00001374sd00000002* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet Card 10/100 - -pci:v00001011d00000019sv00001374sd00000007* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet Card 10/100 - -pci:v00001011d00000019sv00001374sd00000008* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet Card 10/100 - -pci:v00001011d00000019sv00001385sd00002100* - ID_PRODUCT_FROM_DATABASE=FA510 - -pci:v00001011d00000019sv00001395sd00000001* - ID_PRODUCT_FROM_DATABASE=10/100 Ethernet CardBus PC Card - -pci:v00001011d00000019sv000013D1sd0000AB01* - ID_PRODUCT_FROM_DATABASE=EtherFast 10/100 Cardbus (PCMPC200) - -pci:v00001011d00000019sv00001498sd0000000A* - ID_PRODUCT_FROM_DATABASE=TPMC880-10 10/100Base-T and 10Base2 PMC Ethernet Adapter - -pci:v00001011d00000019sv00001498sd0000000B* - ID_PRODUCT_FROM_DATABASE=TPMC880-11 Single 10/100Base-T PMC Ethernet Adapter - -pci:v00001011d00000019sv00001498sd0000000C* - ID_PRODUCT_FROM_DATABASE=TPMC880-12 Single 10Base2 PMC Ethernet Adapter - -pci:v00001011d00000019sv000014CBsd00000100* - ID_PRODUCT_FROM_DATABASE=LNDL-100N 100Base-TX Ethernet PC Card - -pci:v00001011d00000019sv00001668sd00002000* - ID_PRODUCT_FROM_DATABASE=FastNet Pro (PE2000) - -pci:v00001011d00000019sv00002646sd00000001* - ID_PRODUCT_FROM_DATABASE=KNE100TX - -pci:v00001011d00000019sv00002646sd00000002* - ID_PRODUCT_FROM_DATABASE=KNE-CB4TX - -pci:v00001011d00000019sv00008086sd00000001* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Mobile CardBus 32 - -pci:v00001011d0000001A* - ID_PRODUCT_FROM_DATABASE=Farallon PN9000SX Gigabit Ethernet - -pci:v00001011d00000021* - ID_PRODUCT_FROM_DATABASE=DECchip 21052 - -pci:v00001011d00000022* - ID_PRODUCT_FROM_DATABASE=DECchip 21150 - -pci:v00001011d00000023* - ID_PRODUCT_FROM_DATABASE=DECchip 21150 - -pci:v00001011d00000024* - ID_PRODUCT_FROM_DATABASE=DECchip 21152 - -pci:v00001011d00000025* - ID_PRODUCT_FROM_DATABASE=DECchip 21153 - -pci:v00001011d00000026* - ID_PRODUCT_FROM_DATABASE=DECchip 21154 - -pci:v00001011d00000034* - ID_PRODUCT_FROM_DATABASE=56k Modem Cardbus - -pci:v00001011d00000034sv00001374sd00000003* - ID_PRODUCT_FROM_DATABASE=56k Modem Cardbus - -pci:v00001011d00000045* - ID_PRODUCT_FROM_DATABASE=DECchip 21553 - -pci:v00001011d00000046* - ID_PRODUCT_FROM_DATABASE=DECchip 21554 - -pci:v00001011d00000046sv00000E11sd00004050* - ID_PRODUCT_FROM_DATABASE=Smart Array 4200 Controller - -pci:v00001011d00000046sv00000E11sd00004051* - ID_PRODUCT_FROM_DATABASE=Smart Array 4250ES Controller - -pci:v00001011d00000046sv00000E11sd00004058* - ID_PRODUCT_FROM_DATABASE=Smart Array 431 Controller - -pci:v00001011d00000046sv0000103Csd000010C2* - ID_PRODUCT_FROM_DATABASE=NetRAID-4M - -pci:v00001011d00000046sv000012D9sd0000000A* - ID_PRODUCT_FROM_DATABASE=IP Telephony card - -pci:v00001011d00000046sv00004C53sd00001050* - ID_PRODUCT_FROM_DATABASE=CT7 mainboard - -pci:v00001011d00000046sv00004C53sd00001051* - ID_PRODUCT_FROM_DATABASE=CE7 mainboard - -pci:v00001011d00000046sv00009005sd00000364* - ID_PRODUCT_FROM_DATABASE=5400S (Mustang) - -pci:v00001011d00000046sv00009005sd00000365* - ID_PRODUCT_FROM_DATABASE=5400S (Mustang) - -pci:v00001011d00000046sv00009005sd00001364* - ID_PRODUCT_FROM_DATABASE=Dell PowerEdge RAID Controller 2 - -pci:v00001011d00000046sv00009005sd00001365* - ID_PRODUCT_FROM_DATABASE=Dell PowerEdge RAID Controller 2 - -pci:v00001011d00000046sv0000E4BFsd00001000* - ID_PRODUCT_FROM_DATABASE=CC8-1-BLUES - -pci:v00001011d00001065* - ID_PRODUCT_FROM_DATABASE=StrongARM DC21285 - -pci:v00001011d00001065sv00001069sd00000020* - ID_PRODUCT_FROM_DATABASE=DAC960P / DAC1164P - -pci:v00001012* - ID_VENDOR_FROM_DATABASE=Micronics Computers Inc - -pci:v00001013* - ID_VENDOR_FROM_DATABASE=Cirrus Logic - -pci:v00001013d00000038* - ID_PRODUCT_FROM_DATABASE=GD 7548 - -pci:v00001013d00000040* - ID_PRODUCT_FROM_DATABASE=GD 7555 Flat Panel GUI Accelerator - -pci:v00001013d0000004C* - ID_PRODUCT_FROM_DATABASE=GD 7556 Video/Graphics LCD/CRT Ctrlr - -pci:v00001013d000000A0* - ID_PRODUCT_FROM_DATABASE=GD 5430/40 [Alpine] - -pci:v00001013d000000A2* - ID_PRODUCT_FROM_DATABASE=GD 5432 [Alpine] - -pci:v00001013d000000A4* - ID_PRODUCT_FROM_DATABASE=GD 5434-4 [Alpine] - -pci:v00001013d000000A8* - ID_PRODUCT_FROM_DATABASE=GD 5434-8 [Alpine] - -pci:v00001013d000000AC* - ID_PRODUCT_FROM_DATABASE=GD 5436 [Alpine] - -pci:v00001013d000000B0* - ID_PRODUCT_FROM_DATABASE=GD 5440 - -pci:v00001013d000000B8* - ID_PRODUCT_FROM_DATABASE=GD 5446 - -pci:v00001013d000000BC* - ID_PRODUCT_FROM_DATABASE=GD 5480 - -pci:v00001013d000000BCsv00001013sd000000BC* - ID_PRODUCT_FROM_DATABASE=CL-GD5480 - -pci:v00001013d000000D0* - ID_PRODUCT_FROM_DATABASE=GD 5462 - -pci:v00001013d000000D2* - ID_PRODUCT_FROM_DATABASE=GD 5462 [Laguna I] - -pci:v00001013d000000D4* - ID_PRODUCT_FROM_DATABASE=GD 5464 [Laguna] - -pci:v00001013d000000D5* - ID_PRODUCT_FROM_DATABASE=GD 5464 BD [Laguna] - -pci:v00001013d000000D6* - ID_PRODUCT_FROM_DATABASE=GD 5465 [Laguna] - -pci:v00001013d000000D6sv000013CEsd00008031* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 2 Megapixel, Dual Head - -pci:v00001013d000000D6sv000013CFsd00008031* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 2 Megapixel, Dual Head - -pci:v00001013d000000E8* - ID_PRODUCT_FROM_DATABASE=GD 5436U - -pci:v00001013d00001100* - ID_PRODUCT_FROM_DATABASE=CL 6729 - -pci:v00001013d00001110* - ID_PRODUCT_FROM_DATABASE=PD 6832 PCMCIA/CardBus Ctrlr - -pci:v00001013d00001112* - ID_PRODUCT_FROM_DATABASE=PD 6834 PCMCIA/CardBus Ctrlr - -pci:v00001013d00001113* - ID_PRODUCT_FROM_DATABASE=PD 6833 PCMCIA/CardBus Ctrlr - -pci:v00001013d00001200* - ID_PRODUCT_FROM_DATABASE=GD 7542 [Nordic] - -pci:v00001013d00001202* - ID_PRODUCT_FROM_DATABASE=GD 7543 [Viking] - -pci:v00001013d00001204* - ID_PRODUCT_FROM_DATABASE=GD 7541 [Nordic Light] - -pci:v00001013d00004000* - ID_PRODUCT_FROM_DATABASE=MD 5620 [CLM Data Fax Voice] - -pci:v00001013d00004400* - ID_PRODUCT_FROM_DATABASE=CD 4400 - -pci:v00001013d00006001* - ID_PRODUCT_FROM_DATABASE=CS 4610/11 [CrystalClear SoundFusion Audio Accelerator] - -pci:v00001013d00006001sv00001014sd00001010* - ID_PRODUCT_FROM_DATABASE=CS4610 SoundFusion Audio Accelerator - -pci:v00001013d00006003* - ID_PRODUCT_FROM_DATABASE=CS 4614/22/24/30 [CrystalClear SoundFusion Audio Accelerator] - -pci:v00001013d00006003sv00001013sd00004280* - ID_PRODUCT_FROM_DATABASE=Crystal SoundFusion PCI Audio Accelerator - -pci:v00001013d00006003sv00001014sd00000153* - ID_PRODUCT_FROM_DATABASE=ThinkPad 600X/A20m - -pci:v00001013d00006003sv0000153Bsd0000112E* - ID_PRODUCT_FROM_DATABASE=DMX XFire 1024 - -pci:v00001013d00006003sv0000153Bsd00001136* - ID_PRODUCT_FROM_DATABASE=SiXPack 5.1+ - -pci:v00001013d00006003sv00001681sd00000050* - ID_PRODUCT_FROM_DATABASE=Game Theater XP - -pci:v00001013d00006003sv00001681sd0000A010* - ID_PRODUCT_FROM_DATABASE=Gamesurround Fortissimo II - -pci:v00001013d00006003sv00001681sd0000A011* - ID_PRODUCT_FROM_DATABASE=Gamesurround Fortissimo III 7.1 - -pci:v00001013d00006003sv00005053sd00003357* - ID_PRODUCT_FROM_DATABASE=Santa Cruz - -pci:v00001013d00006004* - ID_PRODUCT_FROM_DATABASE=CS 4614/22/24 [CrystalClear SoundFusion Audio Accelerator] - -pci:v00001013d00006005* - ID_PRODUCT_FROM_DATABASE=Crystal CS4281 PCI Audio - -pci:v00001013d00006005sv00001013sd00004281* - ID_PRODUCT_FROM_DATABASE=Crystal CS4281 PCI Audio - -pci:v00001013d00006005sv000010CFsd000010A8* - ID_PRODUCT_FROM_DATABASE=Crystal CS4281 PCI Audio - -pci:v00001013d00006005sv000010CFsd000010A9* - ID_PRODUCT_FROM_DATABASE=Crystal CS4281 PCI Audio - -pci:v00001013d00006005sv000010CFsd000010AA* - ID_PRODUCT_FROM_DATABASE=Crystal CS4281 PCI Audio - -pci:v00001013d00006005sv000010CFsd000010AB* - ID_PRODUCT_FROM_DATABASE=Crystal CS4281 PCI Audio - -pci:v00001013d00006005sv000010CFsd000010AC* - ID_PRODUCT_FROM_DATABASE=Crystal CS4281 PCI Audio - -pci:v00001013d00006005sv000010CFsd000010AD* - ID_PRODUCT_FROM_DATABASE=Crystal CS4281 PCI Audio - -pci:v00001013d00006005sv000010CFsd000010B4* - ID_PRODUCT_FROM_DATABASE=Crystal CS4281 PCI Audio - -pci:v00001013d00006005sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Crystal CS4281 PCI Audio - -pci:v00001013d00006005sv000014C0sd0000000C* - ID_PRODUCT_FROM_DATABASE=Crystal CS4281 PCI Audio - -pci:v00001014* - ID_VENDOR_FROM_DATABASE=IBM - -pci:v00001014d00000002* - ID_PRODUCT_FROM_DATABASE=PCI to MCA Bridge - -pci:v00001014d00000005* - ID_PRODUCT_FROM_DATABASE=Processor to I/O Controller [Alta Lite] - -pci:v00001014d00000007* - ID_PRODUCT_FROM_DATABASE=Processor to I/O Controller [Alta MP] - -pci:v00001014d0000000A* - ID_PRODUCT_FROM_DATABASE=PCI to ISA Bridge (IBM27-82376) [Fire Coral] - -pci:v00001014d00000017* - ID_PRODUCT_FROM_DATABASE=CPU to PCI Bridge - -pci:v00001014d00000018* - ID_PRODUCT_FROM_DATABASE=TR Auto LANstreamer - -pci:v00001014d0000001B* - ID_PRODUCT_FROM_DATABASE=GXT-150P - -pci:v00001014d0000001C* - ID_PRODUCT_FROM_DATABASE=Carrera - -pci:v00001014d0000001D* - ID_PRODUCT_FROM_DATABASE=SCSI-2 FAST PCI Adapter (82G2675) - -pci:v00001014d00000020* - ID_PRODUCT_FROM_DATABASE=GXT1000 Graphics Adapter - -pci:v00001014d00000022* - ID_PRODUCT_FROM_DATABASE=PCI to PCI Bridge (IBM27-82351) - -pci:v00001014d0000002D* - ID_PRODUCT_FROM_DATABASE=Processor to I/O Controller [Python] - -pci:v00001014d0000002E* - ID_PRODUCT_FROM_DATABASE=SCSI RAID Adapter [ServeRAID] - -pci:v00001014d0000002Esv00001014sd0000002E* - ID_PRODUCT_FROM_DATABASE=ServeRAID-3x - -pci:v00001014d0000002Esv00001014sd0000022E* - ID_PRODUCT_FROM_DATABASE=ServeRAID-4H - -pci:v00001014d00000031* - ID_PRODUCT_FROM_DATABASE=2 Port Serial Adapter - -pci:v00001014d00000031sv00001014sd00000031* - ID_PRODUCT_FROM_DATABASE=2721 WAN IOA - 2 Port Sync Serial Adapter - -pci:v00001014d00000036* - ID_PRODUCT_FROM_DATABASE=PCI to 32-bit LocalBus Bridge [Miami] - -pci:v00001014d00000037* - ID_PRODUCT_FROM_DATABASE=PowerPC to PCI Bridge (IBM27-82660) - -pci:v00001014d0000003A* - ID_PRODUCT_FROM_DATABASE=CPU to PCI Bridge - -pci:v00001014d0000003C* - ID_PRODUCT_FROM_DATABASE=GXT250P/GXT255P Graphics Adapter - -pci:v00001014d0000003E* - ID_PRODUCT_FROM_DATABASE=16/4 Token ring UTP/STP controller - -pci:v00001014d0000003Esv00001014sd0000003E* - ID_PRODUCT_FROM_DATABASE=Token-Ring Adapter - -pci:v00001014d0000003Esv00001014sd000000CD* - ID_PRODUCT_FROM_DATABASE=Token-Ring Adapter + Wake-On-LAN - -pci:v00001014d0000003Esv00001014sd000000CE* - ID_PRODUCT_FROM_DATABASE=16/4 Token-Ring Adapter 2 - -pci:v00001014d0000003Esv00001014sd000000CF* - ID_PRODUCT_FROM_DATABASE=16/4 Token-Ring Adapter Special - -pci:v00001014d0000003Esv00001014sd000000E4* - ID_PRODUCT_FROM_DATABASE=High-Speed 100/16/4 Token-Ring Adapter - -pci:v00001014d0000003Esv00001014sd000000E5* - ID_PRODUCT_FROM_DATABASE=16/4 Token-Ring Adapter 2 + Wake-On-LAN - -pci:v00001014d0000003Esv00001014sd0000016D* - ID_PRODUCT_FROM_DATABASE=iSeries 2744 Card - -pci:v00001014d00000045* - ID_PRODUCT_FROM_DATABASE=SSA Adapter - -pci:v00001014d00000046* - ID_PRODUCT_FROM_DATABASE=MPIC interrupt controller - -pci:v00001014d00000047* - ID_PRODUCT_FROM_DATABASE=PCI to PCI Bridge - -pci:v00001014d00000048* - ID_PRODUCT_FROM_DATABASE=PCI to PCI Bridge - -pci:v00001014d00000049* - ID_PRODUCT_FROM_DATABASE=Warhead SCSI Controller - -pci:v00001014d0000004E* - ID_PRODUCT_FROM_DATABASE=ATM Controller (14104e00) - -pci:v00001014d0000004F* - ID_PRODUCT_FROM_DATABASE=ATM Controller (14104f00) - -pci:v00001014d00000050* - ID_PRODUCT_FROM_DATABASE=ATM Controller (14105000) - -pci:v00001014d00000053* - ID_PRODUCT_FROM_DATABASE=25 MBit ATM Controller - -pci:v00001014d00000054* - ID_PRODUCT_FROM_DATABASE=GXT500P/GXT550P Graphics Adapter - -pci:v00001014d00000057* - ID_PRODUCT_FROM_DATABASE=MPEG PCI Bridge - -pci:v00001014d00000058* - ID_PRODUCT_FROM_DATABASE=SSA Adapter [Advanced SerialRAID/X] - -pci:v00001014d0000005E* - ID_PRODUCT_FROM_DATABASE=GXT800P Graphics Adapter - -pci:v00001014d0000007C* - ID_PRODUCT_FROM_DATABASE=ATM Controller (14107c00) - -pci:v00001014d0000007D* - ID_PRODUCT_FROM_DATABASE=3780IDSP [MWave] - -pci:v00001014d0000008B* - ID_PRODUCT_FROM_DATABASE=EADS PCI to PCI Bridge - -pci:v00001014d0000008E* - ID_PRODUCT_FROM_DATABASE=GXT3000P Graphics Adapter - -pci:v00001014d00000090* - ID_PRODUCT_FROM_DATABASE=GXT 3000P - -pci:v00001014d00000090sv00001014sd0000008E* - ID_PRODUCT_FROM_DATABASE=GXT-3000P - -pci:v00001014d00000091* - ID_PRODUCT_FROM_DATABASE=SSA Adapter - -pci:v00001014d00000095* - ID_PRODUCT_FROM_DATABASE=20H2999 PCI Docking Bridge - -pci:v00001014d00000096* - ID_PRODUCT_FROM_DATABASE=Chukar chipset SCSI controller - -pci:v00001014d00000096sv00001014sd00000097* - ID_PRODUCT_FROM_DATABASE=iSeries 2778 DASD IOA - -pci:v00001014d00000096sv00001014sd00000098* - ID_PRODUCT_FROM_DATABASE=iSeries 2763 DASD IOA - -pci:v00001014d00000096sv00001014sd00000099* - ID_PRODUCT_FROM_DATABASE=iSeries 2748 DASD IOA - -pci:v00001014d0000009F* - ID_PRODUCT_FROM_DATABASE=PCI 4758 Cryptographic Accelerator - -pci:v00001014d000000A5* - ID_PRODUCT_FROM_DATABASE=ATM Controller (1410a500) - -pci:v00001014d000000A6* - ID_PRODUCT_FROM_DATABASE=ATM 155MBPS MM Controller (1410a600) - -pci:v00001014d000000B7* - ID_PRODUCT_FROM_DATABASE=256-bit Graphics Rasterizer [FireGL1] - -pci:v00001014d000000B7sv00001092sd000000B8* - ID_PRODUCT_FROM_DATABASE=FireGL1 AGP 32Mb - -pci:v00001014d000000B8* - ID_PRODUCT_FROM_DATABASE=GXT2000P Graphics Adapter - -pci:v00001014d000000BE* - ID_PRODUCT_FROM_DATABASE=ATM 622MBPS Controller (1410be00) - -pci:v00001014d000000DC* - ID_PRODUCT_FROM_DATABASE=Advanced Systems Management Adapter (ASMA) - -pci:v00001014d000000FC* - ID_PRODUCT_FROM_DATABASE=CPC710 Dual Bridge and Memory Controller (PCI-64) - -pci:v00001014d00000105* - ID_PRODUCT_FROM_DATABASE=CPC710 Dual Bridge and Memory Controller (PCI-32) - -pci:v00001014d0000010F* - ID_PRODUCT_FROM_DATABASE=Remote Supervisor Adapter (RSA) - -pci:v00001014d00000142* - ID_PRODUCT_FROM_DATABASE=Yotta Video Compositor Input - -pci:v00001014d00000142sv00001014sd00000143* - ID_PRODUCT_FROM_DATABASE=Yotta Input Controller (ytin) - -pci:v00001014d00000144* - ID_PRODUCT_FROM_DATABASE=Yotta Video Compositor Output - -pci:v00001014d00000144sv00001014sd00000145* - ID_PRODUCT_FROM_DATABASE=Yotta Output Controller (ytout) - -pci:v00001014d00000156* - ID_PRODUCT_FROM_DATABASE=405GP PLB to PCI Bridge - -pci:v00001014d0000015E* - ID_PRODUCT_FROM_DATABASE=622Mbps ATM PCI Adapter - -pci:v00001014d00000160* - ID_PRODUCT_FROM_DATABASE=64bit/66MHz PCI ATM 155 MMF - -pci:v00001014d0000016E* - ID_PRODUCT_FROM_DATABASE=GXT4000P Graphics Adapter - -pci:v00001014d00000170* - ID_PRODUCT_FROM_DATABASE=GXT6000P Graphics Adapter - -pci:v00001014d0000017D* - ID_PRODUCT_FROM_DATABASE=GXT300P Graphics Adapter - -pci:v00001014d00000180* - ID_PRODUCT_FROM_DATABASE=Snipe chipset SCSI controller - -pci:v00001014d00000180sv00001014sd00000241* - ID_PRODUCT_FROM_DATABASE=iSeries 2757 DASD IOA - -pci:v00001014d00000180sv00001014sd00000264* - ID_PRODUCT_FROM_DATABASE=Quad Channel PCI-X U320 SCSI RAID Adapter (2780) - -pci:v00001014d00000188* - ID_PRODUCT_FROM_DATABASE=EADS-X PCI-X to PCI-X Bridge - -pci:v00001014d000001A7* - ID_PRODUCT_FROM_DATABASE=PCI-X to PCI-X Bridge - -pci:v00001014d000001BD* - ID_PRODUCT_FROM_DATABASE=ServeRAID Controller - -pci:v00001014d000001BDsv00001014sd000001BD* - ID_PRODUCT_FROM_DATABASE=ServeRAID 4Lx - -pci:v00001014d000001BDsv00001014sd000001BE* - ID_PRODUCT_FROM_DATABASE=ServeRAID-4M - -pci:v00001014d000001BDsv00001014sd000001BF* - ID_PRODUCT_FROM_DATABASE=ServeRAID-4L - -pci:v00001014d000001BDsv00001014sd00000208* - ID_PRODUCT_FROM_DATABASE=ServeRAID-4Mx - -pci:v00001014d000001BDsv00001014sd0000020E* - ID_PRODUCT_FROM_DATABASE=ServeRAID-4Lx - -pci:v00001014d000001BDsv00001014sd0000022E* - ID_PRODUCT_FROM_DATABASE=ServeRAID-4H - -pci:v00001014d000001BDsv00001014sd00000258* - ID_PRODUCT_FROM_DATABASE=ServeRAID-5i - -pci:v00001014d000001BDsv00001014sd00000259* - ID_PRODUCT_FROM_DATABASE=ServeRAID-5i - -pci:v00001014d000001C1* - ID_PRODUCT_FROM_DATABASE=64bit/66MHz PCI ATM 155 UTP - -pci:v00001014d000001E6* - ID_PRODUCT_FROM_DATABASE=Cryptographic Accelerator - -pci:v00001014d000001EF* - ID_PRODUCT_FROM_DATABASE=PowerPC 440GP PCI Bridge - -pci:v00001014d000001EFsv00001734sd0000102B* - ID_PRODUCT_FROM_DATABASE=PCEAS PCI-X Dual Port ESCON Adapter - -pci:v00001014d000001EFsv00001734sd000010F8* - ID_PRODUCT_FROM_DATABASE=PCEAT PCI-Express Dual Port ESCON Adapter - -pci:v00001014d000001FF* - ID_PRODUCT_FROM_DATABASE=10/100 Mbps Ethernet - -pci:v00001014d00000219* - ID_PRODUCT_FROM_DATABASE=Multiport Serial Adapter - -pci:v00001014d00000219sv00001014sd0000021A* - ID_PRODUCT_FROM_DATABASE=Dual RVX - -pci:v00001014d00000219sv00001014sd00000251* - ID_PRODUCT_FROM_DATABASE=Internal Modem/RVX - -pci:v00001014d00000219sv00001014sd00000252* - ID_PRODUCT_FROM_DATABASE=Quad Internal Modem - -pci:v00001014d0000021B* - ID_PRODUCT_FROM_DATABASE=GXT6500P Graphics Adapter - -pci:v00001014d0000021C* - ID_PRODUCT_FROM_DATABASE=GXT4500P Graphics Adapter - -pci:v00001014d00000233* - ID_PRODUCT_FROM_DATABASE=GXT135P Graphics Adapter - -pci:v00001014d0000028C* - ID_PRODUCT_FROM_DATABASE=Citrine chipset SCSI controller - -pci:v00001014d0000028Csv00001014sd0000028D* - ID_PRODUCT_FROM_DATABASE=Dual Channel PCI-X DDR SAS RAID Adapter (572E) - -pci:v00001014d0000028Csv00001014sd000002BE* - ID_PRODUCT_FROM_DATABASE=Dual Channel PCI-X DDR U320 SCSI RAID Adapter (571B) - -pci:v00001014d0000028Csv00001014sd000002C0* - ID_PRODUCT_FROM_DATABASE=Dual Channel PCI-X DDR U320 SCSI Adapter (571A) - -pci:v00001014d0000028Csv00001014sd0000030D* - ID_PRODUCT_FROM_DATABASE=PCI-X DDR Auxiliary Cache Adapter (575B) - -pci:v00001014d000002A1* - ID_PRODUCT_FROM_DATABASE=Calgary PCI-X Host Bridge - -pci:v00001014d000002BD* - ID_PRODUCT_FROM_DATABASE=Obsidian chipset SCSI controller - -pci:v00001014d000002BDsv00001014sd000002C1* - ID_PRODUCT_FROM_DATABASE=PCI-X DDR 3Gb SAS Adapter (572A/572C) - -pci:v00001014d000002BDsv00001014sd000002C2* - ID_PRODUCT_FROM_DATABASE=PCI-X DDR 3Gb SAS RAID Adapter (572B/571D) - -pci:v00001014d000002BDsv00001014sd00000338* - ID_PRODUCT_FROM_DATABASE=PCI-X DDR Auxiliary Cache Adapter (575C) - -pci:v00001014d00000302* - ID_PRODUCT_FROM_DATABASE=Winnipeg PCI-X Host Bridge - -pci:v00001014d00000308* - ID_PRODUCT_FROM_DATABASE=CalIOC2 PCI-E Root Port - -pci:v00001014d00000314* - ID_PRODUCT_FROM_DATABASE=ZISC 036 Neural accelerator card - -pci:v00001014d0000032D* - ID_PRODUCT_FROM_DATABASE=Axon - Cell Companion Chip - -pci:v00001014d0000032Dsv00001014sd000003A1* - ID_PRODUCT_FROM_DATABASE=PCIe PowerXCell 8i Cell Accelerator Board - -pci:v00001014d00000339* - ID_PRODUCT_FROM_DATABASE=Obsidian-E PCI-E SCSI controller - -pci:v00001014d00000339sv00001014sd0000030A* - ID_PRODUCT_FROM_DATABASE=PCIe 3Gb SAS RAID Adapter (574E) - -pci:v00001014d00000339sv00001014sd0000033A* - ID_PRODUCT_FROM_DATABASE=PCIe 3Gb SAS Adapter (57B3) - -pci:v00001014d00000339sv00001014sd0000035C* - ID_PRODUCT_FROM_DATABASE=PCIe x8 Internal 3Gb SAS adapter (57CC) - -pci:v00001014d00000339sv00001014sd00000360* - ID_PRODUCT_FROM_DATABASE=PCI-E Auxiliary Cache Adapter (57B7) - -pci:v00001014d0000033D* - ID_PRODUCT_FROM_DATABASE=PCI-E IPR SAS Adapter (FPGA) - -pci:v00001014d0000033Dsv00001014sd0000033C* - ID_PRODUCT_FROM_DATABASE=PCIe2 1.8GB Cache 6Gb SAS RAID Adapter Tri-port (57B5) - -pci:v00001014d0000033Dsv00001014sd00000353* - ID_PRODUCT_FROM_DATABASE=PCIe2 3.1GB Cache 6Gb SAS RAID Enclosure (57C3) - -pci:v00001014d0000033Dsv00001014sd00000354* - ID_PRODUCT_FROM_DATABASE=PCIe2 6Gb SAS Adapter Dual-port (57C4) - -pci:v00001014d0000033Dsv00001014sd00000356* - ID_PRODUCT_FROM_DATABASE=PCIe2 1.8GB Cache 6Gb SAS RAID & SSD Adapter (574D) - -pci:v00001014d0000033Dsv00001014sd0000035F* - ID_PRODUCT_FROM_DATABASE=PCIe2 6Gb SAS Adapter Quad-port (57B2) - -pci:v00001014d0000034A* - ID_PRODUCT_FROM_DATABASE=PCI-E IPR SAS Adapter (ASIC) - -pci:v00001014d0000034Asv00001014sd0000033B* - ID_PRODUCT_FROM_DATABASE=PCIe2 6Gb SAS RAID Adapter Quad-port (57B4) - -pci:v00001014d0000034Asv00001014sd00000355* - ID_PRODUCT_FROM_DATABASE=PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57B1) - -pci:v00001014d0000034Asv00001014sd00000357* - ID_PRODUCT_FROM_DATABASE=PCIe2 6Gb SAS Adapter Quad-port (57C6) - -pci:v00001014d0000034Asv00001014sd0000035D* - ID_PRODUCT_FROM_DATABASE=PCIe3 1.8GB Cache RAID SAS Adapter Quad-port 6GB (57C8) - -pci:v00001014d0000034Asv00001014sd0000035E* - ID_PRODUCT_FROM_DATABASE=PCIe2 3.6GB Cache 6Gb SAS RAID Adapter Quad-port (57CE) - -pci:v00001014d0000034Asv00001014sd000003FB* - ID_PRODUCT_FROM_DATABASE=PCIe3 28GB Cache RAID SAS Enclosure 6Gb x 16 (57D5) - -pci:v00001014d00003022* - ID_PRODUCT_FROM_DATABASE=QLA3022 Network Adapter - -pci:v00001014d00004022* - ID_PRODUCT_FROM_DATABASE=QLA3022 Network Adapter - -pci:v00001014d0000FFFF* - ID_PRODUCT_FROM_DATABASE=MPIC-2 interrupt controller - -pci:v00001015* - ID_VENDOR_FROM_DATABASE=LSI Logic Corp of Canada - -pci:v00001016* - ID_VENDOR_FROM_DATABASE=ICL Personal Systems - -pci:v00001017* - ID_VENDOR_FROM_DATABASE=SPEA Software AG - -pci:v00001017d00005343* - ID_PRODUCT_FROM_DATABASE=SPEA 3D Accelerator - -pci:v00001018* - ID_VENDOR_FROM_DATABASE=Unisys Systems - -pci:v00001019* - ID_VENDOR_FROM_DATABASE=Elitegroup Computer Systems - -pci:v0000101A* - ID_VENDOR_FROM_DATABASE=AT&T GIS (NCR) - -pci:v0000101Ad00000005* - ID_PRODUCT_FROM_DATABASE=100VG ethernet - -pci:v0000101Ad00000007* - ID_PRODUCT_FROM_DATABASE=BYNET BIC4G/2C/2G - -pci:v0000101Ad00000007sv0000101Asd00000019* - ID_PRODUCT_FROM_DATABASE=BYNET BIC2C - -pci:v0000101Ad00000007sv0000101Asd0000001C* - ID_PRODUCT_FROM_DATABASE=BYNET BIC2G - -pci:v0000101Ad00000007sv0000101Asd0000001F* - ID_PRODUCT_FROM_DATABASE=BYNET BIC4G - -pci:v0000101Ad00000009* - ID_PRODUCT_FROM_DATABASE=PQS Memory Controller - -pci:v0000101Ad0000000A* - ID_PRODUCT_FROM_DATABASE=BYNET BPCI Adapter - -pci:v0000101Ad0000000B* - ID_PRODUCT_FROM_DATABASE=BYNET 4 Port BYA Switch (BYA4P) - -pci:v0000101Ad0000000C* - ID_PRODUCT_FROM_DATABASE=BYNET 4 Port BYA Switch (BYA4G) - -pci:v0000101Ad00000010* - ID_PRODUCT_FROM_DATABASE=NCR AMC Memory Controller - -pci:v0000101Ad00001DC1* - ID_PRODUCT_FROM_DATABASE=BYNET BIC2M/BIC4M/BYA4M - -pci:v0000101Ad00001DC1sv0000101Asd00000019* - ID_PRODUCT_FROM_DATABASE=BIC2M - -pci:v0000101Ad00001DC1sv0000101Asd0000001F* - ID_PRODUCT_FROM_DATABASE=BIC4M - -pci:v0000101Ad00001DC1sv0000101Asd00000ECE* - ID_PRODUCT_FROM_DATABASE=BYA4M - -pci:v0000101Ad00001FA8* - ID_PRODUCT_FROM_DATABASE=BYNET Multi-port BIC Adapter (XBIC Based) - -pci:v0000101Ad00001FA8sv0000101Asd000000C3* - ID_PRODUCT_FROM_DATABASE=BYNET BIC2SE - -pci:v0000101B* - ID_VENDOR_FROM_DATABASE=Vitesse Semiconductor - -pci:v0000101Bd00000452* - ID_PRODUCT_FROM_DATABASE=VSC452 [SuperBMC] - -pci:v0000101C* - ID_VENDOR_FROM_DATABASE=Western Digital - -pci:v0000101Cd00000193* - ID_PRODUCT_FROM_DATABASE=33C193A - -pci:v0000101Cd00000196* - ID_PRODUCT_FROM_DATABASE=33C196A - -pci:v0000101Cd00000197* - ID_PRODUCT_FROM_DATABASE=33C197A - -pci:v0000101Cd00000296* - ID_PRODUCT_FROM_DATABASE=33C296A - -pci:v0000101Cd00003193* - ID_PRODUCT_FROM_DATABASE=7193 - -pci:v0000101Cd00003197* - ID_PRODUCT_FROM_DATABASE=7197 - -pci:v0000101Cd00003296* - ID_PRODUCT_FROM_DATABASE=33C296A - -pci:v0000101Cd00004296* - ID_PRODUCT_FROM_DATABASE=34C296 - -pci:v0000101Cd00009710* - ID_PRODUCT_FROM_DATABASE=Pipeline 9710 - -pci:v0000101Cd00009712* - ID_PRODUCT_FROM_DATABASE=Pipeline 9712 - -pci:v0000101Cd0000C24A* - ID_PRODUCT_FROM_DATABASE=90C - -pci:v0000101D* - ID_VENDOR_FROM_DATABASE=Maxim Integrated Products - -pci:v0000101E* - ID_VENDOR_FROM_DATABASE=American Megatrends Inc. - -pci:v0000101Ed00000009* - ID_PRODUCT_FROM_DATABASE=MegaRAID 428 Ultra RAID Controller (rev 03) - -pci:v0000101Ed00001960* - ID_PRODUCT_FROM_DATABASE=MegaRAID - -pci:v0000101Ed00001960sv0000101Esd00000471* - ID_PRODUCT_FROM_DATABASE=MegaRAID 471 Enterprise 1600 RAID Controller - -pci:v0000101Ed00001960sv0000101Esd00000475* - ID_PRODUCT_FROM_DATABASE=MegaRAID 475 Express 500/500LC RAID Controller - -pci:v0000101Ed00001960sv0000101Esd00000477* - ID_PRODUCT_FROM_DATABASE=MegaRAID 477 Elite 3100 RAID Controller - -pci:v0000101Ed00001960sv0000101Esd00000493* - ID_PRODUCT_FROM_DATABASE=MegaRAID 493 Elite 1600 RAID Controller - -pci:v0000101Ed00001960sv0000101Esd00000494* - ID_PRODUCT_FROM_DATABASE=MegaRAID 494 Elite 1650 RAID Controller - -pci:v0000101Ed00001960sv0000101Esd00000503* - ID_PRODUCT_FROM_DATABASE=MegaRAID 503 Enterprise 1650 RAID Controller - -pci:v0000101Ed00001960sv0000101Esd00000511* - ID_PRODUCT_FROM_DATABASE=MegaRAID 511 i4 IDE RAID Controller - -pci:v0000101Ed00001960sv0000101Esd00000522* - ID_PRODUCT_FROM_DATABASE=MegaRAID 522 i4133 RAID Controller - -pci:v0000101Ed00001960sv00001028sd00000471* - ID_PRODUCT_FROM_DATABASE=PowerEdge RAID Controller 3/QC - -pci:v0000101Ed00001960sv00001028sd00000475* - ID_PRODUCT_FROM_DATABASE=PowerEdge RAID Controller 3/SC - -pci:v0000101Ed00001960sv00001028sd00000493* - ID_PRODUCT_FROM_DATABASE=PowerEdge RAID Controller 3/DC - -pci:v0000101Ed00001960sv00001028sd00000511* - ID_PRODUCT_FROM_DATABASE=PowerEdge Cost Effective RAID Controller ATA100/4Ch - -pci:v0000101Ed00001960sv0000103Csd000060E7* - ID_PRODUCT_FROM_DATABASE=NetRAID-1M - -pci:v0000101Ed00009010* - ID_PRODUCT_FROM_DATABASE=MegaRAID 428 Ultra RAID Controller - -pci:v0000101Ed00009030* - ID_PRODUCT_FROM_DATABASE=EIDE Controller - -pci:v0000101Ed00009031* - ID_PRODUCT_FROM_DATABASE=EIDE Controller - -pci:v0000101Ed00009032* - ID_PRODUCT_FROM_DATABASE=EIDE & SCSI Controller - -pci:v0000101Ed00009033* - ID_PRODUCT_FROM_DATABASE=SCSI Controller - -pci:v0000101Ed00009040* - ID_PRODUCT_FROM_DATABASE=Multimedia card - -pci:v0000101Ed00009060* - ID_PRODUCT_FROM_DATABASE=MegaRAID 434 Ultra GT RAID Controller - -pci:v0000101Ed00009063* - ID_PRODUCT_FROM_DATABASE=MegaRAC - -pci:v0000101Ed00009063sv0000101Esd00000767* - ID_PRODUCT_FROM_DATABASE=Dell Remote Assistant Card 2 - -pci:v0000101F* - ID_VENDOR_FROM_DATABASE=PictureTel - -pci:v00001020* - ID_VENDOR_FROM_DATABASE=Hitachi Computer Products - -pci:v00001021* - ID_VENDOR_FROM_DATABASE=OKI Electric Industry Co. Ltd. - -pci:v00001022* - ID_VENDOR_FROM_DATABASE=Advanced Micro Devices [AMD] - -pci:v00001022d00001100* - ID_PRODUCT_FROM_DATABASE=K8 [Athlon64/Opteron] HyperTransport Technology Configuration - -pci:v00001022d00001101* - ID_PRODUCT_FROM_DATABASE=K8 [Athlon64/Opteron] Address Map - -pci:v00001022d00001102* - ID_PRODUCT_FROM_DATABASE=K8 [Athlon64/Opteron] DRAM Controller - -pci:v00001022d00001103* - ID_PRODUCT_FROM_DATABASE=K8 [Athlon64/Opteron] Miscellaneous Control - -pci:v00001022d00001200* - ID_PRODUCT_FROM_DATABASE=Family 10h Processor HyperTransport Configuration - -pci:v00001022d00001201* - ID_PRODUCT_FROM_DATABASE=Family 10h Processor Address Map - -pci:v00001022d00001202* - ID_PRODUCT_FROM_DATABASE=Family 10h Processor DRAM Controller - -pci:v00001022d00001203* - ID_PRODUCT_FROM_DATABASE=Family 10h Processor Miscellaneous Control - -pci:v00001022d00001204* - ID_PRODUCT_FROM_DATABASE=Family 10h Processor Link Control - -pci:v00001022d00001300* - ID_PRODUCT_FROM_DATABASE=Family 11h Processor HyperTransport Configuration - -pci:v00001022d00001301* - ID_PRODUCT_FROM_DATABASE=Family 11h Processor Address Map - -pci:v00001022d00001302* - ID_PRODUCT_FROM_DATABASE=Family 11h Processor DRAM Controller - -pci:v00001022d00001303* - ID_PRODUCT_FROM_DATABASE=Family 11h Processor Miscellaneous Control - -pci:v00001022d00001304* - ID_PRODUCT_FROM_DATABASE=Family 11h Processor Link Control - -pci:v00001022d00001400* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Function 0 - -pci:v00001022d00001401* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Function 1 - -pci:v00001022d00001402* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Function 2 - -pci:v00001022d00001403* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Function 3 - -pci:v00001022d00001404* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Function 4 - -pci:v00001022d00001405* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Function 5 - -pci:v00001022d00001410* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Complex - -pci:v00001022d00001412* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Port - -pci:v00001022d00001413* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Port - -pci:v00001022d00001414* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Port - -pci:v00001022d00001415* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Port - -pci:v00001022d00001416* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Port - -pci:v00001022d00001417* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Port - -pci:v00001022d00001418* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) Processor Root Port - -pci:v00001022d00001419* - ID_PRODUCT_FROM_DATABASE=Family 15h (Models 10h-1fh) I/O Memory Management Unit - -pci:v00001022d00001439* - ID_PRODUCT_FROM_DATABASE=Family 16h Processor Functions 5:1 - -pci:v00001022d00001510* - ID_PRODUCT_FROM_DATABASE=Family 14h Processor Root Complex - -pci:v00001022d00001510sv0000174Bsd00001001* - ID_PRODUCT_FROM_DATABASE=Sapphire PURE Fusion Mini - -pci:v00001022d00001512* - ID_PRODUCT_FROM_DATABASE=Family 14h Processor Root Port - -pci:v00001022d00001512sv0000174Bsd00001001* - ID_PRODUCT_FROM_DATABASE=Sapphire PURE Fusion Mini - -pci:v00001022d00001513* - ID_PRODUCT_FROM_DATABASE=Family 14h Processor Root Port - -pci:v00001022d00001514* - ID_PRODUCT_FROM_DATABASE=Family 14h Processor Root Port - -pci:v00001022d00001515* - ID_PRODUCT_FROM_DATABASE=Family 14h Processor Root Port - -pci:v00001022d00001516* - ID_PRODUCT_FROM_DATABASE=Family 14h Processor Root Port - -pci:v00001022d00001530* - ID_PRODUCT_FROM_DATABASE=Family 16h Processor Function 0 - -pci:v00001022d00001531* - ID_PRODUCT_FROM_DATABASE=Family 16h Processor Function 1 - -pci:v00001022d00001532* - ID_PRODUCT_FROM_DATABASE=Family 16h Processor Function 2 - -pci:v00001022d00001533* - ID_PRODUCT_FROM_DATABASE=Family 16h Processor Function 3 - -pci:v00001022d00001534* - ID_PRODUCT_FROM_DATABASE=Family 16h Processor Function 4 - -pci:v00001022d00001535* - ID_PRODUCT_FROM_DATABASE=Family 16h Processor Function 5 - -pci:v00001022d00001536* - ID_PRODUCT_FROM_DATABASE=Family 16h Processor Root Complex - -pci:v00001022d00001538* - ID_PRODUCT_FROM_DATABASE=Family 16h Processor Function 0 - -pci:v00001022d00001600* - ID_PRODUCT_FROM_DATABASE=Family 15h Processor Function 0 - -pci:v00001022d00001601* - ID_PRODUCT_FROM_DATABASE=Family 15h Processor Function 1 - -pci:v00001022d00001602* - ID_PRODUCT_FROM_DATABASE=Family 15h Processor Function 2 - -pci:v00001022d00001603* - ID_PRODUCT_FROM_DATABASE=Family 15h Processor Function 3 - -pci:v00001022d00001604* - ID_PRODUCT_FROM_DATABASE=Family 15h Processor Function 4 - -pci:v00001022d00001605* - ID_PRODUCT_FROM_DATABASE=Family 15h Processor Function 5 - -pci:v00001022d00001700* - ID_PRODUCT_FROM_DATABASE=Family 12h/14h Processor Function 0 - -pci:v00001022d00001701* - ID_PRODUCT_FROM_DATABASE=Family 12h/14h Processor Function 1 - -pci:v00001022d00001702* - ID_PRODUCT_FROM_DATABASE=Family 12h/14h Processor Function 2 - -pci:v00001022d00001703* - ID_PRODUCT_FROM_DATABASE=Family 12h/14h Processor Function 3 - -pci:v00001022d00001704* - ID_PRODUCT_FROM_DATABASE=Family 12h/14h Processor Function 4 - -pci:v00001022d00001705* - ID_PRODUCT_FROM_DATABASE=Family 12h Processor Root Complex - -pci:v00001022d00001707* - ID_PRODUCT_FROM_DATABASE=Family 12h Processor Root Port - -pci:v00001022d00001708* - ID_PRODUCT_FROM_DATABASE=Family 12h Processor Root Port - -pci:v00001022d00001709* - ID_PRODUCT_FROM_DATABASE=Family 12h Processor Root Port - -pci:v00001022d0000170A* - ID_PRODUCT_FROM_DATABASE=Family 12h Processor Root Port - -pci:v00001022d0000170B* - ID_PRODUCT_FROM_DATABASE=Family 12h Processor Root Port - -pci:v00001022d0000170C* - ID_PRODUCT_FROM_DATABASE=Family 12h Processor Root Port - -pci:v00001022d0000170D* - ID_PRODUCT_FROM_DATABASE=Family 12h Processor Root Port - -pci:v00001022d00001716* - ID_PRODUCT_FROM_DATABASE=Family 12h/14h Processor Function 5 - -pci:v00001022d00001718* - ID_PRODUCT_FROM_DATABASE=Family 12h/14h Processor Function 6 - -pci:v00001022d00001719* - ID_PRODUCT_FROM_DATABASE=Family 12h/14h Processor Function 7 - -pci:v00001022d00002000* - ID_PRODUCT_FROM_DATABASE=79c970 [PCnet32 LANCE] - -pci:v00001022d00002000sv00001014sd00002000* - ID_PRODUCT_FROM_DATABASE=NetFinity 10/100 Fast Ethernet - -pci:v00001022d00002000sv00001022sd00002000* - ID_PRODUCT_FROM_DATABASE=PCnet - Fast 79C971 - -pci:v00001022d00002000sv0000103Csd0000104C* - ID_PRODUCT_FROM_DATABASE=Ethernet with LAN remote power Adapter - -pci:v00001022d00002000sv0000103Csd00001064* - ID_PRODUCT_FROM_DATABASE=Ethernet with LAN remote power Adapter - -pci:v00001022d00002000sv0000103Csd00001065* - ID_PRODUCT_FROM_DATABASE=Ethernet with LAN remote power Adapter - -pci:v00001022d00002000sv0000103Csd0000106C* - ID_PRODUCT_FROM_DATABASE=Ethernet with LAN remote power Adapter - -pci:v00001022d00002000sv0000103Csd0000106E* - ID_PRODUCT_FROM_DATABASE=Ethernet with LAN remote power Adapter - -pci:v00001022d00002000sv0000103Csd000010EA* - ID_PRODUCT_FROM_DATABASE=Ethernet with LAN remote power Adapter - -pci:v00001022d00002000sv00001113sd00001220* - ID_PRODUCT_FROM_DATABASE=EN1220 10/100 Fast Ethernet - -pci:v00001022d00002000sv00001259sd00002450* - ID_PRODUCT_FROM_DATABASE=AT-2450 10/100 Fast Ethernet - -pci:v00001022d00002000sv00001259sd00002454* - ID_PRODUCT_FROM_DATABASE=AT-2450v4 10Mb Ethernet Adapter - -pci:v00001022d00002000sv00001259sd00002700* - ID_PRODUCT_FROM_DATABASE=AT-2700TX 10/100 Fast Ethernet - -pci:v00001022d00002000sv00001259sd00002701* - ID_PRODUCT_FROM_DATABASE=AT-2700FX 100Mb Ethernet - -pci:v00001022d00002000sv00001259sd00002702* - ID_PRODUCT_FROM_DATABASE=AT-2700FTX 10/100 Mb Fiber/Copper Fast Ethernet - -pci:v00001022d00002000sv00001259sd00002703* - ID_PRODUCT_FROM_DATABASE=AT-2701FX - -pci:v00001022d00002000sv00001259sd00002704* - ID_PRODUCT_FROM_DATABASE=AT-2701FTX 10/100 Mb Fiber/Copper Fast Ethernet - -pci:v00001022d00002000sv00004C53sd00001000* - ID_PRODUCT_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard - -pci:v00001022d00002000sv00004C53sd00001010* - ID_PRODUCT_FROM_DATABASE=CP5/CR6 mainboard - -pci:v00001022d00002000sv00004C53sd00001020* - ID_PRODUCT_FROM_DATABASE=VR6 mainboard - -pci:v00001022d00002000sv00004C53sd00001030* - ID_PRODUCT_FROM_DATABASE=PC5 mainboard - -pci:v00001022d00002000sv00004C53sd00001040* - ID_PRODUCT_FROM_DATABASE=CL7 mainboard - -pci:v00001022d00002000sv00004C53sd00001060* - ID_PRODUCT_FROM_DATABASE=PC7 mainboard - -pci:v00001022d00002001* - ID_PRODUCT_FROM_DATABASE=79c978 [HomePNA] - -pci:v00001022d00002001sv00001092sd00000A78* - ID_PRODUCT_FROM_DATABASE=Multimedia Home Network Adapter - -pci:v00001022d00002001sv00001668sd00000299* - ID_PRODUCT_FROM_DATABASE=ActionLink Home Network Adapter - -pci:v00001022d00002003* - ID_PRODUCT_FROM_DATABASE=Am 1771 MBW [Alchemy] - -pci:v00001022d00002020* - ID_PRODUCT_FROM_DATABASE=53c974 [PCscsi] - -pci:v00001022d00002040* - ID_PRODUCT_FROM_DATABASE=79c974 - -pci:v00001022d00002080* - ID_PRODUCT_FROM_DATABASE=CS5536 [Geode companion] Host Bridge - -pci:v00001022d00002081* - ID_PRODUCT_FROM_DATABASE=Geode LX Video - -pci:v00001022d00002082* - ID_PRODUCT_FROM_DATABASE=Geode LX AES Security Block - -pci:v00001022d0000208F* - ID_PRODUCT_FROM_DATABASE=CS5536 GeodeLink PCI South Bridge - -pci:v00001022d00002090* - ID_PRODUCT_FROM_DATABASE=CS5536 [Geode companion] ISA - -pci:v00001022d00002091* - ID_PRODUCT_FROM_DATABASE=CS5536 [Geode companion] FLASH - -pci:v00001022d00002093* - ID_PRODUCT_FROM_DATABASE=CS5536 [Geode companion] Audio - -pci:v00001022d00002094* - ID_PRODUCT_FROM_DATABASE=CS5536 [Geode companion] OHC - -pci:v00001022d00002095* - ID_PRODUCT_FROM_DATABASE=CS5536 [Geode companion] EHC - -pci:v00001022d00002096* - ID_PRODUCT_FROM_DATABASE=CS5536 [Geode companion] UDC - -pci:v00001022d00002097* - ID_PRODUCT_FROM_DATABASE=CS5536 [Geode companion] UOC - -pci:v00001022d0000209A* - ID_PRODUCT_FROM_DATABASE=CS5536 [Geode companion] IDE - -pci:v00001022d00003000* - ID_PRODUCT_FROM_DATABASE=ELanSC520 Microcontroller - -pci:v00001022d000043A0* - ID_PRODUCT_FROM_DATABASE=Hudson PCI to PCI bridge (PCIE port 0) - -pci:v00001022d000043A1* - ID_PRODUCT_FROM_DATABASE=Hudson PCI to PCI bridge (PCIE port 1) - -pci:v00001022d000043A2* - ID_PRODUCT_FROM_DATABASE=Hudson PCI to PCI bridge (PCIE port 2) - -pci:v00001022d000043A3* - ID_PRODUCT_FROM_DATABASE=Hudson PCI to PCI bridge (PCIE port 3) - -pci:v00001022d00007006* - ID_PRODUCT_FROM_DATABASE=AMD-751 [Irongate] System Controller - -pci:v00001022d00007007* - ID_PRODUCT_FROM_DATABASE=AMD-751 [Irongate] AGP Bridge - -pci:v00001022d0000700A* - ID_PRODUCT_FROM_DATABASE=AMD-IGR4 AGP Host to PCI Bridge - -pci:v00001022d0000700B* - ID_PRODUCT_FROM_DATABASE=AMD-IGR4 PCI to PCI Bridge - -pci:v00001022d0000700C* - ID_PRODUCT_FROM_DATABASE=AMD-760 MP [IGD4-2P] System Controller - -pci:v00001022d0000700D* - ID_PRODUCT_FROM_DATABASE=AMD-760 MP [IGD4-2P] AGP Bridge - -pci:v00001022d0000700E* - ID_PRODUCT_FROM_DATABASE=AMD-760 [IGD4-1P] System Controller - -pci:v00001022d0000700F* - ID_PRODUCT_FROM_DATABASE=AMD-760 [IGD4-1P] AGP Bridge - -pci:v00001022d00007400* - ID_PRODUCT_FROM_DATABASE=AMD-755 [Cobra] ISA - -pci:v00001022d00007401* - ID_PRODUCT_FROM_DATABASE=AMD-755 [Cobra] IDE - -pci:v00001022d00007403* - ID_PRODUCT_FROM_DATABASE=AMD-755 [Cobra] ACPI - -pci:v00001022d00007404* - ID_PRODUCT_FROM_DATABASE=AMD-755 [Cobra] USB - -pci:v00001022d00007408* - ID_PRODUCT_FROM_DATABASE=AMD-756 [Viper] ISA - -pci:v00001022d00007409* - ID_PRODUCT_FROM_DATABASE=AMD-756 [Viper] IDE - -pci:v00001022d0000740B* - ID_PRODUCT_FROM_DATABASE=AMD-756 [Viper] ACPI - -pci:v00001022d0000740C* - ID_PRODUCT_FROM_DATABASE=AMD-756 [Viper] USB - -pci:v00001022d00007410* - ID_PRODUCT_FROM_DATABASE=AMD-766 [ViperPlus] ISA - -pci:v00001022d00007411* - ID_PRODUCT_FROM_DATABASE=AMD-766 [ViperPlus] IDE - -pci:v00001022d00007413* - ID_PRODUCT_FROM_DATABASE=AMD-766 [ViperPlus] ACPI - -pci:v00001022d00007414* - ID_PRODUCT_FROM_DATABASE=AMD-766 [ViperPlus] USB - -pci:v00001022d00007440* - ID_PRODUCT_FROM_DATABASE=AMD-768 [Opus] ISA - -pci:v00001022d00007440sv00001043sd00008044* - ID_PRODUCT_FROM_DATABASE=A7M-D Mainboard - -pci:v00001022d00007441* - ID_PRODUCT_FROM_DATABASE=AMD-768 [Opus] IDE - -pci:v00001022d00007443* - ID_PRODUCT_FROM_DATABASE=AMD-768 [Opus] ACPI - -pci:v00001022d00007443sv00001043sd00008044* - ID_PRODUCT_FROM_DATABASE=A7M-D Mainboard - -pci:v00001022d00007445* - ID_PRODUCT_FROM_DATABASE=AMD-768 [Opus] Audio - -pci:v00001022d00007446* - ID_PRODUCT_FROM_DATABASE=AMD-768 [Opus] MC97 Modem - -pci:v00001022d00007448* - ID_PRODUCT_FROM_DATABASE=AMD-768 [Opus] PCI - -pci:v00001022d00007449* - ID_PRODUCT_FROM_DATABASE=AMD-768 [Opus] USB - -pci:v00001022d00007450* - ID_PRODUCT_FROM_DATABASE=AMD-8131 PCI-X Bridge - -pci:v00001022d00007451* - ID_PRODUCT_FROM_DATABASE=AMD-8131 PCI-X IOAPIC - -pci:v00001022d00007454* - ID_PRODUCT_FROM_DATABASE=AMD-8151 System Controller - -pci:v00001022d00007455* - ID_PRODUCT_FROM_DATABASE=AMD-8151 AGP Bridge - -pci:v00001022d00007458* - ID_PRODUCT_FROM_DATABASE=AMD-8132 PCI-X Bridge - -pci:v00001022d00007459* - ID_PRODUCT_FROM_DATABASE=AMD-8132 PCI-X IOAPIC - -pci:v00001022d00007460* - ID_PRODUCT_FROM_DATABASE=AMD-8111 PCI - -pci:v00001022d00007460sv0000161Fsd00003017* - ID_PRODUCT_FROM_DATABASE=HDAMB - -pci:v00001022d00007461* - ID_PRODUCT_FROM_DATABASE=AMD-8111 USB - -pci:v00001022d00007462* - ID_PRODUCT_FROM_DATABASE=AMD-8111 Ethernet - -pci:v00001022d00007463* - ID_PRODUCT_FROM_DATABASE=AMD-8111 USB EHCI - -pci:v00001022d00007464* - ID_PRODUCT_FROM_DATABASE=AMD-8111 USB OHCI - -pci:v00001022d00007464sv0000161Fsd00003017* - ID_PRODUCT_FROM_DATABASE=HDAMB - -pci:v00001022d00007468* - ID_PRODUCT_FROM_DATABASE=AMD-8111 LPC - -pci:v00001022d00007468sv0000161Fsd00003017* - ID_PRODUCT_FROM_DATABASE=HDAMB - -pci:v00001022d00007469* - ID_PRODUCT_FROM_DATABASE=AMD-8111 IDE - -pci:v00001022d00007469sv00001022sd00002B80* - ID_PRODUCT_FROM_DATABASE=AMD-8111 IDE [Quartet] - -pci:v00001022d00007469sv0000161Fsd00003017* - ID_PRODUCT_FROM_DATABASE=HDAMB - -pci:v00001022d0000746A* - ID_PRODUCT_FROM_DATABASE=AMD-8111 SMBus 2.0 - -pci:v00001022d0000746B* - ID_PRODUCT_FROM_DATABASE=AMD-8111 ACPI - -pci:v00001022d0000746Bsv0000161Fsd00003017* - ID_PRODUCT_FROM_DATABASE=HDAMB - -pci:v00001022d0000746D* - ID_PRODUCT_FROM_DATABASE=AMD-8111 AC97 Audio - -pci:v00001022d0000746Dsv0000161Fsd00003017* - ID_PRODUCT_FROM_DATABASE=HDAMB - -pci:v00001022d0000746E* - ID_PRODUCT_FROM_DATABASE=AMD-8111 MC97 Modem - -pci:v00001022d0000756B* - ID_PRODUCT_FROM_DATABASE=AMD-8111 ACPI - -pci:v00001022d00007800* - ID_PRODUCT_FROM_DATABASE=FCH SATA Controller [IDE mode] - -pci:v00001022d00007801* - ID_PRODUCT_FROM_DATABASE=FCH SATA Controller [AHCI mode] - -pci:v00001022d00007801sv0000103Csd0000168B* - ID_PRODUCT_FROM_DATABASE=ProBook 4535s Notebook - -pci:v00001022d00007802* - ID_PRODUCT_FROM_DATABASE=FCH SATA Controller [RAID mode] - -pci:v00001022d00007803* - ID_PRODUCT_FROM_DATABASE=FCH SATA Controller [RAID mode] - -pci:v00001022d00007804* - ID_PRODUCT_FROM_DATABASE=FCH SATA Controller [AHCI mode] - -pci:v00001022d00007805* - ID_PRODUCT_FROM_DATABASE=FCH SATA Controller [RAID mode] - -pci:v00001022d00007806* - ID_PRODUCT_FROM_DATABASE=FCH SD Flash Controller - -pci:v00001022d00007807* - ID_PRODUCT_FROM_DATABASE=FCH USB OHCI Controller - -pci:v00001022d00007808* - ID_PRODUCT_FROM_DATABASE=FCH USB EHCI Controller - -pci:v00001022d00007809* - ID_PRODUCT_FROM_DATABASE=FCH USB OHCI Controller - -pci:v00001022d0000780B* - ID_PRODUCT_FROM_DATABASE=FCH SMBus Controller - -pci:v00001022d0000780C* - ID_PRODUCT_FROM_DATABASE=FCH IDE Controller - -pci:v00001022d0000780D* - ID_PRODUCT_FROM_DATABASE=FCH Azalia Controller - -pci:v00001022d0000780E* - ID_PRODUCT_FROM_DATABASE=FCH LPC Bridge - -pci:v00001022d0000780F* - ID_PRODUCT_FROM_DATABASE=FCH PCI Bridge - -pci:v00001022d00007812* - ID_PRODUCT_FROM_DATABASE=FCH USB XHCI Controller - -pci:v00001022d00007813* - ID_PRODUCT_FROM_DATABASE=FCH SD Flash Controller - -pci:v00001022d00007814* - ID_PRODUCT_FROM_DATABASE=FCH USB XHCI Controller - -pci:v00001022d00009600* - ID_PRODUCT_FROM_DATABASE=RS780 Host Bridge - -pci:v00001022d00009600sv00001043sd000082F1* - ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard - -pci:v00001022d00009601* - ID_PRODUCT_FROM_DATABASE=RS880 Host Bridge - -pci:v00001022d00009601sv00001019sd00002120* - ID_PRODUCT_FROM_DATABASE=A785GM-M - -pci:v00001022d00009601sv00001043sd0000843E* - ID_PRODUCT_FROM_DATABASE=M5A88-V EVO - -pci:v00001022d00009602* - ID_PRODUCT_FROM_DATABASE=RS780/RS880 PCI to PCI bridge (int gfx) - -pci:v00001022d00009603* - ID_PRODUCT_FROM_DATABASE=RS780 PCI to PCI bridge (ext gfx port 0) - -pci:v00001022d00009604* - ID_PRODUCT_FROM_DATABASE=RS780/RS880 PCI to PCI bridge (PCIE port 0) - -pci:v00001022d00009605* - ID_PRODUCT_FROM_DATABASE=RS780/RS880 PCI to PCI bridge (PCIE port 1) - -pci:v00001022d00009606* - ID_PRODUCT_FROM_DATABASE=RS780 PCI to PCI bridge (PCIE port 2) - -pci:v00001022d00009607* - ID_PRODUCT_FROM_DATABASE=RS780 PCI to PCI bridge (PCIE port 3) - -pci:v00001022d00009608* - ID_PRODUCT_FROM_DATABASE=RS780/RS880 PCI to PCI bridge (PCIE port 4) - -pci:v00001022d00009609* - ID_PRODUCT_FROM_DATABASE=RS780/RS880 PCI to PCI bridge (PCIE port 5) - -pci:v00001022d0000960A* - ID_PRODUCT_FROM_DATABASE=RS780 PCI to PCI bridge (NB-SB link) - -pci:v00001022d0000960B* - ID_PRODUCT_FROM_DATABASE=RS780 PCI to PCI bridge (ext gfx port 1) - -pci:v00001023* - ID_VENDOR_FROM_DATABASE=Trident Microsystems - -pci:v00001023d00000194* - ID_PRODUCT_FROM_DATABASE=82C194 - -pci:v00001023d00002000* - ID_PRODUCT_FROM_DATABASE=4DWave DX - -pci:v00001023d00002001* - ID_PRODUCT_FROM_DATABASE=4DWave NX - -pci:v00001023d00002001sv0000122Dsd00001400* - ID_PRODUCT_FROM_DATABASE=Trident PCI288-Q3DII (NX) - -pci:v00001023d00002100* - ID_PRODUCT_FROM_DATABASE=CyberBlade XP4m32 - -pci:v00001023d00002200* - ID_PRODUCT_FROM_DATABASE=XGI Volari XP5 - -pci:v00001023d00008400* - ID_PRODUCT_FROM_DATABASE=CyberBlade/i7 - -pci:v00001023d00008400sv00001023sd00008400* - ID_PRODUCT_FROM_DATABASE=CyberBlade i7 AGP - -pci:v00001023d00008420* - ID_PRODUCT_FROM_DATABASE=CyberBlade/i7d - -pci:v00001023d00008420sv00000E11sd0000B15A* - ID_PRODUCT_FROM_DATABASE=CyberBlade i7 AGP - -pci:v00001023d00008500* - ID_PRODUCT_FROM_DATABASE=CyberBlade/i1 - -pci:v00001023d00008520* - ID_PRODUCT_FROM_DATABASE=CyberBlade i1 - -pci:v00001023d00008520sv00000E11sd0000B16E* - ID_PRODUCT_FROM_DATABASE=CyberBlade i1 AGP - -pci:v00001023d00008520sv00001023sd00008520* - ID_PRODUCT_FROM_DATABASE=CyberBlade i1 AGP - -pci:v00001023d00008620* - ID_PRODUCT_FROM_DATABASE=CyberBlade/i1 - -pci:v00001023d00008620sv00001014sd00000502* - ID_PRODUCT_FROM_DATABASE=ThinkPad R30/T30 - -pci:v00001023d00008620sv00001014sd00001025* - ID_PRODUCT_FROM_DATABASE=Travelmate 352TE - -pci:v00001023d00008820* - ID_PRODUCT_FROM_DATABASE=CyberBlade XPAi1 - -pci:v00001023d00009320* - ID_PRODUCT_FROM_DATABASE=TGUI 9320 - -pci:v00001023d00009350* - ID_PRODUCT_FROM_DATABASE=GUI Accelerator - -pci:v00001023d00009360* - ID_PRODUCT_FROM_DATABASE=Flat panel GUI Accelerator - -pci:v00001023d00009382* - ID_PRODUCT_FROM_DATABASE=Cyber 9382 [Reference design] - -pci:v00001023d00009383* - ID_PRODUCT_FROM_DATABASE=Cyber 9383 [Reference design] - -pci:v00001023d00009385* - ID_PRODUCT_FROM_DATABASE=Cyber 9385 [Reference design] - -pci:v00001023d00009386* - ID_PRODUCT_FROM_DATABASE=Cyber 9386 - -pci:v00001023d00009388* - ID_PRODUCT_FROM_DATABASE=Cyber 9388 - -pci:v00001023d00009397* - ID_PRODUCT_FROM_DATABASE=Cyber 9397 - -pci:v00001023d0000939A* - ID_PRODUCT_FROM_DATABASE=Cyber 9397DVD - -pci:v00001023d00009420* - ID_PRODUCT_FROM_DATABASE=TGUI 9420 - -pci:v00001023d00009430* - ID_PRODUCT_FROM_DATABASE=TGUI 9430 - -pci:v00001023d00009440* - ID_PRODUCT_FROM_DATABASE=TGUI 9440 - -pci:v00001023d00009460* - ID_PRODUCT_FROM_DATABASE=TGUI 9460 - -pci:v00001023d00009470* - ID_PRODUCT_FROM_DATABASE=TGUI 9470 - -pci:v00001023d00009520* - ID_PRODUCT_FROM_DATABASE=Cyber 9520 - -pci:v00001023d00009525* - ID_PRODUCT_FROM_DATABASE=Cyber 9525 - -pci:v00001023d00009540* - ID_PRODUCT_FROM_DATABASE=Cyber 9540 - -pci:v00001023d00009660* - ID_PRODUCT_FROM_DATABASE=TGUI 9660/938x/968x - -pci:v00001023d00009680* - ID_PRODUCT_FROM_DATABASE=TGUI 9680 - -pci:v00001023d00009682* - ID_PRODUCT_FROM_DATABASE=TGUI 9682 - -pci:v00001023d00009683* - ID_PRODUCT_FROM_DATABASE=TGUI 9683 - -pci:v00001023d00009685* - ID_PRODUCT_FROM_DATABASE=ProVIDIA 9685 - -pci:v00001023d00009750* - ID_PRODUCT_FROM_DATABASE=3DImage 9750 - -pci:v00001023d00009750sv00001014sd00009750* - ID_PRODUCT_FROM_DATABASE=3DImage 9750 - -pci:v00001023d00009750sv00001023sd00009750* - ID_PRODUCT_FROM_DATABASE=3DImage 9750 - -pci:v00001023d00009753* - ID_PRODUCT_FROM_DATABASE=TGUI 9753 - -pci:v00001023d00009754* - ID_PRODUCT_FROM_DATABASE=TGUI 9754 - -pci:v00001023d00009759* - ID_PRODUCT_FROM_DATABASE=TGUI 975 - -pci:v00001023d00009783* - ID_PRODUCT_FROM_DATABASE=TGUI 9783 - -pci:v00001023d00009785* - ID_PRODUCT_FROM_DATABASE=TGUI 9785 - -pci:v00001023d00009850* - ID_PRODUCT_FROM_DATABASE=3DImage 9850 - -pci:v00001023d00009880* - ID_PRODUCT_FROM_DATABASE=Blade 3D PCI/AGP - -pci:v00001023d00009880sv00001023sd00009880* - ID_PRODUCT_FROM_DATABASE=Blade 3D - -pci:v00001023d00009910* - ID_PRODUCT_FROM_DATABASE=CyberBlade/XP - -pci:v00001023d00009930* - ID_PRODUCT_FROM_DATABASE=CyberBlade/XPm - -pci:v00001023d00009960* - ID_PRODUCT_FROM_DATABASE=CyberBlade XP2 - -pci:v00001024* - ID_VENDOR_FROM_DATABASE=Zenith Data Systems - -pci:v00001025* - ID_VENDOR_FROM_DATABASE=Acer Incorporated [ALI] - -pci:v00001025d00001435* - ID_PRODUCT_FROM_DATABASE=M1435 - -pci:v00001025d00001445* - ID_PRODUCT_FROM_DATABASE=M1445 - -pci:v00001025d00001449* - ID_PRODUCT_FROM_DATABASE=M1449 - -pci:v00001025d00001451* - ID_PRODUCT_FROM_DATABASE=M1451 - -pci:v00001025d00001461* - ID_PRODUCT_FROM_DATABASE=M1461 - -pci:v00001025d00001489* - ID_PRODUCT_FROM_DATABASE=M1489 - -pci:v00001025d00001511* - ID_PRODUCT_FROM_DATABASE=M1511 - -pci:v00001025d00001512* - ID_PRODUCT_FROM_DATABASE=ALI M1512 Aladdin - -pci:v00001025d00001513* - ID_PRODUCT_FROM_DATABASE=M1513 - -pci:v00001025d00001521* - ID_PRODUCT_FROM_DATABASE=ALI M1521 Aladdin III CPU Bridge - -pci:v00001025d00001521sv000010B9sd00001521* - ID_PRODUCT_FROM_DATABASE=ALI M1521 Aladdin III CPU Bridge - -pci:v00001025d00001523* - ID_PRODUCT_FROM_DATABASE=ALI M1523 ISA Bridge - -pci:v00001025d00001523sv000010B9sd00001523* - ID_PRODUCT_FROM_DATABASE=ALI M1523 ISA Bridge - -pci:v00001025d00001531* - ID_PRODUCT_FROM_DATABASE=M1531 Northbridge [Aladdin IV/IV+] - -pci:v00001025d00001533* - ID_PRODUCT_FROM_DATABASE=M1533 PCI-to-ISA Bridge - -pci:v00001025d00001533sv000010B9sd00001533* - ID_PRODUCT_FROM_DATABASE=ALI M1533 Aladdin IV/V ISA South Bridge - -pci:v00001025d00001535* - ID_PRODUCT_FROM_DATABASE=M1535 PCI Bridge + Super I/O + FIR - -pci:v00001025d00001541* - ID_PRODUCT_FROM_DATABASE=M1541 Northbridge [Aladdin V] - -pci:v00001025d00001541sv000010B9sd00001541* - ID_PRODUCT_FROM_DATABASE=ALI M1541 Aladdin V/V+ AGP+PCI North Bridge - -pci:v00001025d00001542* - ID_PRODUCT_FROM_DATABASE=M1542 Northbridge [Aladdin V] - -pci:v00001025d00001543* - ID_PRODUCT_FROM_DATABASE=M1543 PCI-to-ISA Bridge + Super I/O + FIR - -pci:v00001025d00001561* - ID_PRODUCT_FROM_DATABASE=M1561 Northbridge [Aladdin 7] - -pci:v00001025d00001621* - ID_PRODUCT_FROM_DATABASE=M1621 Northbridge [Aladdin-Pro II] - -pci:v00001025d00001631* - ID_PRODUCT_FROM_DATABASE=M1631 Northbridge+3D Graphics [Aladdin TNT2] - -pci:v00001025d00001641* - ID_PRODUCT_FROM_DATABASE=M1641 Northbridge [Aladdin-Pro IV] - -pci:v00001025d00001647* - ID_PRODUCT_FROM_DATABASE=M1647 [MaGiK1] PCI North Bridge - -pci:v00001025d00001671* - ID_PRODUCT_FROM_DATABASE=M1671 Northbridge [ALADDiN-P4] - -pci:v00001025d00001672* - ID_PRODUCT_FROM_DATABASE=Northbridge [CyberALADDiN-P4] - -pci:v00001025d00003141* - ID_PRODUCT_FROM_DATABASE=M3141 - -pci:v00001025d00003143* - ID_PRODUCT_FROM_DATABASE=M3143 - -pci:v00001025d00003145* - ID_PRODUCT_FROM_DATABASE=M3145 - -pci:v00001025d00003147* - ID_PRODUCT_FROM_DATABASE=M3147 - -pci:v00001025d00003149* - ID_PRODUCT_FROM_DATABASE=M3149 - -pci:v00001025d00003151* - ID_PRODUCT_FROM_DATABASE=M3151 - -pci:v00001025d00003307* - ID_PRODUCT_FROM_DATABASE=M3307 MPEG-I Video Controller - -pci:v00001025d00003309* - ID_PRODUCT_FROM_DATABASE=M3309 MPEG-II Video w/ Software Audio Decoder - -pci:v00001025d00003321* - ID_PRODUCT_FROM_DATABASE=M3321 MPEG-II Audio/Video Decoder - -pci:v00001025d00005212* - ID_PRODUCT_FROM_DATABASE=M4803 - -pci:v00001025d00005215* - ID_PRODUCT_FROM_DATABASE=ALI PCI EIDE Controller - -pci:v00001025d00005217* - ID_PRODUCT_FROM_DATABASE=M5217H - -pci:v00001025d00005219* - ID_PRODUCT_FROM_DATABASE=M5219 - -pci:v00001025d00005225* - ID_PRODUCT_FROM_DATABASE=M5225 - -pci:v00001025d00005229* - ID_PRODUCT_FROM_DATABASE=M5229 - -pci:v00001025d00005235* - ID_PRODUCT_FROM_DATABASE=M5235 - -pci:v00001025d00005237* - ID_PRODUCT_FROM_DATABASE=M5237 PCI USB Host Controller - -pci:v00001025d00005240* - ID_PRODUCT_FROM_DATABASE=EIDE Controller - -pci:v00001025d00005241* - ID_PRODUCT_FROM_DATABASE=PCMCIA Bridge - -pci:v00001025d00005242* - ID_PRODUCT_FROM_DATABASE=General Purpose Controller - -pci:v00001025d00005243* - ID_PRODUCT_FROM_DATABASE=PCI to PCI Bridge Controller - -pci:v00001025d00005244* - ID_PRODUCT_FROM_DATABASE=Floppy Disk Controller - -pci:v00001025d00005247* - ID_PRODUCT_FROM_DATABASE=M1541 PCI to PCI Bridge - -pci:v00001025d00005251* - ID_PRODUCT_FROM_DATABASE=M5251 P1394 Controller - -pci:v00001025d00005427* - ID_PRODUCT_FROM_DATABASE=PCI to AGP Bridge - -pci:v00001025d00005451* - ID_PRODUCT_FROM_DATABASE=M5451 PCI AC-Link Controller Audio Device - -pci:v00001025d00005453* - ID_PRODUCT_FROM_DATABASE=M5453 PCI AC-Link Controller Modem Device - -pci:v00001025d00007101* - ID_PRODUCT_FROM_DATABASE=M7101 PCI PMU Power Management Controller - -pci:v00001025d00007101sv000010B9sd00007101* - ID_PRODUCT_FROM_DATABASE=M7101 PCI PMU Power Management Controller - -pci:v00001025d00009602* - ID_PRODUCT_FROM_DATABASE=AMD RS780/RS880 PCI to PCI bridge (int gfx) - -pci:v00001028* - ID_VENDOR_FROM_DATABASE=Dell - -pci:v00001028d00000001* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/Si - -pci:v00001028d00000001sv00001028sd00000001* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2400 - -pci:v00001028d00000002* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di - -pci:v00001028d00000002sv00001028sd00000002* - ID_PRODUCT_FROM_DATABASE=PowerEdge 4400 - -pci:v00001028d00000002sv00001028sd000000D1* - ID_PRODUCT_FROM_DATABASE=PERC 3/DiV [Viper] - -pci:v00001028d00000002sv00001028sd000000D9* - ID_PRODUCT_FROM_DATABASE=PERC 3/DiL [Lexus] - -pci:v00001028d00000003* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Si - -pci:v00001028d00000003sv00001028sd00000003* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2450 - -pci:v00001028d00000004* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di [Iguana] - -pci:v00001028d00000004sv00001028sd00000004* - ID_PRODUCT_FROM_DATABASE=PERC 3/DiF [Iguana] - -pci:v00001028d00000006* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di - -pci:v00001028d00000007* - ID_PRODUCT_FROM_DATABASE=Remote Access Card III - -pci:v00001028d00000008* - ID_PRODUCT_FROM_DATABASE=Remote Access Card III - -pci:v00001028d00000009* - ID_PRODUCT_FROM_DATABASE=Remote Access Card III: BMC/SMIC device not present - -pci:v00001028d0000000A* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 3/Di - -pci:v00001028d0000000Asv00001028sd00000106* - ID_PRODUCT_FROM_DATABASE=PERC 3/DiJ [Jaguar] - -pci:v00001028d0000000Asv00001028sd0000011B* - ID_PRODUCT_FROM_DATABASE=PERC 3/DiD [Dagger] - -pci:v00001028d0000000Asv00001028sd00000121* - ID_PRODUCT_FROM_DATABASE=PERC 3/DiB [Boxster] - -pci:v00001028d0000000C* - ID_PRODUCT_FROM_DATABASE=Embedded Remote Access or ERA/O - -pci:v00001028d0000000D* - ID_PRODUCT_FROM_DATABASE=Embedded Remote Access: BMC/SMIC device - -pci:v00001028d0000000E* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID controller 4/Di - -pci:v00001028d0000000F* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID controller 4/Di - -pci:v00001028d0000000Fsv00001028sd0000014A* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1750 - -pci:v00001028d00000010* - ID_PRODUCT_FROM_DATABASE=Remote Access Card 4 - -pci:v00001028d00000011* - ID_PRODUCT_FROM_DATABASE=Remote Access Card 4 Daughter Card - -pci:v00001028d00000012* - ID_PRODUCT_FROM_DATABASE=Remote Access Card 4 Daughter Card Virtual UART - -pci:v00001028d00000013* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID controller 4 - -pci:v00001028d00000013sv00001028sd0000016C* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Si - -pci:v00001028d00000013sv00001028sd0000016D* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Di - -pci:v00001028d00000013sv00001028sd0000016E* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Di - -pci:v00001028d00000013sv00001028sd0000016F* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Di - -pci:v00001028d00000013sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 4e/Di - -pci:v00001028d00000014* - ID_PRODUCT_FROM_DATABASE=Remote Access Card 4 Daughter Card SMIC interface - -pci:v00001028d00000015* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID controller 5 - -pci:v00001028d00000015sv00001028sd00001F01* - ID_PRODUCT_FROM_DATABASE=PERC 5/E Adapter RAID Controller - -pci:v00001028d00000015sv00001028sd00001F02* - ID_PRODUCT_FROM_DATABASE=PERC 5/i Adapter RAID Controller - -pci:v00001028d00000015sv00001028sd00001F03* - ID_PRODUCT_FROM_DATABASE=PERC 5/i Integrated RAID Controller - -pci:v00001028d00000016* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID controller S300 - -pci:v00001028d00000016sv00001028sd00001F24* - ID_PRODUCT_FROM_DATABASE=PERC S300 Controller - -pci:v00001029* - ID_VENDOR_FROM_DATABASE=Siemens Nixdorf IS - -pci:v0000102A* - ID_VENDOR_FROM_DATABASE=LSI Logic - -pci:v0000102Ad00000000* - ID_PRODUCT_FROM_DATABASE=HYDRA - -pci:v0000102Ad00000010* - ID_PRODUCT_FROM_DATABASE=ASPEN - -pci:v0000102Ad0000001F* - ID_PRODUCT_FROM_DATABASE=AHA-2940U2/U2W /7890/7891 SCSI Controllers - -pci:v0000102Ad0000001Fsv00009005sd0000000F* - ID_PRODUCT_FROM_DATABASE=2940U2W SCSI Controller - -pci:v0000102Ad0000001Fsv00009005sd00000106* - ID_PRODUCT_FROM_DATABASE=2940U2W SCSI Controller - -pci:v0000102Ad0000001Fsv00009005sd0000A180* - ID_PRODUCT_FROM_DATABASE=2940U2W SCSI Controller - -pci:v0000102Ad000000C5* - ID_PRODUCT_FROM_DATABASE=AIC-7899 U160/m SCSI Controller - -pci:v0000102Ad000000C5sv00001028sd000000C5* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2550/2650/4600 - -pci:v0000102Ad000000CF* - ID_PRODUCT_FROM_DATABASE=AIC-7899P U160/m - -pci:v0000102Ad000000CFsv00001028sd00000106* - ID_PRODUCT_FROM_DATABASE=PowerEdge 4600 - -pci:v0000102Ad000000CFsv00001028sd00000121* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2650 - -pci:v0000102B* - ID_VENDOR_FROM_DATABASE=Matrox Electronics Systems Ltd. - -pci:v0000102Bd00000010* - ID_PRODUCT_FROM_DATABASE=MGA-I [Impression?] - -pci:v0000102Bd00000100* - ID_PRODUCT_FROM_DATABASE=MGA 1064SG [Mystique] - -pci:v0000102Bd00000518* - ID_PRODUCT_FROM_DATABASE=MGA-II [Athena] - -pci:v0000102Bd00000519* - ID_PRODUCT_FROM_DATABASE=MGA 2064W [Millennium] - -pci:v0000102Bd0000051A* - ID_PRODUCT_FROM_DATABASE=MGA 1064SG [Mystique] - -pci:v0000102Bd0000051Asv0000102Bsd00000100* - ID_PRODUCT_FROM_DATABASE=MGA-1064SG Mystique - -pci:v0000102Bd0000051Asv0000102Bsd00001100* - ID_PRODUCT_FROM_DATABASE=MGA-1084SG Mystique - -pci:v0000102Bd0000051Asv0000102Bsd00001200* - ID_PRODUCT_FROM_DATABASE=MGA-1084SG Mystique - -pci:v0000102Bd0000051Asv00001100sd0000102B* - ID_PRODUCT_FROM_DATABASE=MGA-1084SG Mystique - -pci:v0000102Bd0000051Asv0000110Asd00000018* - ID_PRODUCT_FROM_DATABASE=Scenic Pro C5 (D1025) - -pci:v0000102Bd0000051B* - ID_PRODUCT_FROM_DATABASE=MGA 2164W [Millennium II] - -pci:v0000102Bd0000051Bsv0000102Bsd0000051B* - ID_PRODUCT_FROM_DATABASE=MGA-2164W Millennium II - -pci:v0000102Bd0000051Bsv0000102Bsd00001100* - ID_PRODUCT_FROM_DATABASE=MGA-2164W Millennium II - -pci:v0000102Bd0000051Bsv0000102Bsd00001200* - ID_PRODUCT_FROM_DATABASE=MGA-2164W Millennium II - -pci:v0000102Bd0000051Bsv0000102Bsd00002100* - ID_PRODUCT_FROM_DATABASE=MGA-2164W Millennium II - -pci:v0000102Bd0000051E* - ID_PRODUCT_FROM_DATABASE=MGA 1064SG [Mystique] AGP - -pci:v0000102Bd0000051F* - ID_PRODUCT_FROM_DATABASE=MGA 2164W [Millennium II] AGP - -pci:v0000102Bd00000520* - ID_PRODUCT_FROM_DATABASE=MGA G200 - -pci:v0000102Bd00000520sv0000102Bsd0000DBC2* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000520sv0000102Bsd0000DBC8* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000520sv0000102Bsd0000DBE2* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000520sv0000102Bsd0000DBE8* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000520sv0000102Bsd0000FF03* - ID_PRODUCT_FROM_DATABASE=Millennium G200 SD - -pci:v0000102Bd00000520sv0000102Bsd0000FF04* - ID_PRODUCT_FROM_DATABASE=Marvel G200 - -pci:v0000102Bd00000521* - ID_PRODUCT_FROM_DATABASE=MGA G200 AGP - -pci:v0000102Bd00000521sv00001014sd0000FF03* - ID_PRODUCT_FROM_DATABASE=Millennium G200 AGP - -pci:v0000102Bd00000521sv0000102Bsd000048E9* - ID_PRODUCT_FROM_DATABASE=Mystique G200 AGP - -pci:v0000102Bd00000521sv0000102Bsd000048F8* - ID_PRODUCT_FROM_DATABASE=Millennium G200 SD AGP - -pci:v0000102Bd00000521sv0000102Bsd00004A60* - ID_PRODUCT_FROM_DATABASE=Millennium G200 LE AGP - -pci:v0000102Bd00000521sv0000102Bsd00004A64* - ID_PRODUCT_FROM_DATABASE=Millennium G200 AGP - -pci:v0000102Bd00000521sv0000102Bsd0000C93C* - ID_PRODUCT_FROM_DATABASE=Millennium G200 AGP - -pci:v0000102Bd00000521sv0000102Bsd0000C9B0* - ID_PRODUCT_FROM_DATABASE=Millennium G200 AGP - -pci:v0000102Bd00000521sv0000102Bsd0000C9BC* - ID_PRODUCT_FROM_DATABASE=Millennium G200 AGP - -pci:v0000102Bd00000521sv0000102Bsd0000CA60* - ID_PRODUCT_FROM_DATABASE=Millennium G250 LE AGP - -pci:v0000102Bd00000521sv0000102Bsd0000CA6C* - ID_PRODUCT_FROM_DATABASE=Millennium G250 AGP - -pci:v0000102Bd00000521sv0000102Bsd0000DBBC* - ID_PRODUCT_FROM_DATABASE=Millennium G200 AGP - -pci:v0000102Bd00000521sv0000102Bsd0000DBC2* - ID_PRODUCT_FROM_DATABASE=Millennium G200 MMS (Dual G200) - -pci:v0000102Bd00000521sv0000102Bsd0000DBC3* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000521sv0000102Bsd0000DBC8* - ID_PRODUCT_FROM_DATABASE=Millennium G200 MMS (Dual G200) - -pci:v0000102Bd00000521sv0000102Bsd0000DBD2* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000521sv0000102Bsd0000DBD3* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000521sv0000102Bsd0000DBD4* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000521sv0000102Bsd0000DBD5* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000521sv0000102Bsd0000DBD8* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000521sv0000102Bsd0000DBD9* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000521sv0000102Bsd0000DBE2* - ID_PRODUCT_FROM_DATABASE=Millennium G200 MMS (Quad G200) - -pci:v0000102Bd00000521sv0000102Bsd0000DBE3* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000521sv0000102Bsd0000DBE8* - ID_PRODUCT_FROM_DATABASE=Millennium G200 MMS (Quad G200) - -pci:v0000102Bd00000521sv0000102Bsd0000DBF2* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000521sv0000102Bsd0000DBF3* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000521sv0000102Bsd0000DBF4* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000521sv0000102Bsd0000DBF5* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000521sv0000102Bsd0000DBF8* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000521sv0000102Bsd0000DBF9* - ID_PRODUCT_FROM_DATABASE=G200 Multi-Monitor - -pci:v0000102Bd00000521sv0000102Bsd0000F806* - ID_PRODUCT_FROM_DATABASE=Mystique G200 Video AGP - -pci:v0000102Bd00000521sv0000102Bsd0000FF00* - ID_PRODUCT_FROM_DATABASE=MGA-G200 AGP - -pci:v0000102Bd00000521sv0000102Bsd0000FF02* - ID_PRODUCT_FROM_DATABASE=Mystique G200 AGP - -pci:v0000102Bd00000521sv0000102Bsd0000FF03* - ID_PRODUCT_FROM_DATABASE=Millennium G200 AGP - -pci:v0000102Bd00000521sv0000102Bsd0000FF04* - ID_PRODUCT_FROM_DATABASE=Marvel G200 AGP - -pci:v0000102Bd00000521sv0000110Asd00000032* - ID_PRODUCT_FROM_DATABASE=MGA-G200 AGP - -pci:v0000102Bd00000522* - ID_PRODUCT_FROM_DATABASE=MGA G200e [Pilot] ServerEngines (SEP1) - -pci:v0000102Bd00000522sv0000103Csd000031FA* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v0000102Bd00000525* - ID_PRODUCT_FROM_DATABASE=MGA G400/G450 - -pci:v0000102Bd00000525sv00000E11sd0000B16F* - ID_PRODUCT_FROM_DATABASE=MGA-G400 AGP - -pci:v0000102Bd00000525sv0000102Bsd00000328* - ID_PRODUCT_FROM_DATABASE=Millennium G400 16Mb SDRAM - -pci:v0000102Bd00000525sv0000102Bsd00000338* - ID_PRODUCT_FROM_DATABASE=Millennium G400 16Mb SDRAM - -pci:v0000102Bd00000525sv0000102Bsd00000378* - ID_PRODUCT_FROM_DATABASE=Millennium G400 32Mb SDRAM - -pci:v0000102Bd00000525sv0000102Bsd00000541* - ID_PRODUCT_FROM_DATABASE=Millennium G450 Dual Head - -pci:v0000102Bd00000525sv0000102Bsd00000542* - ID_PRODUCT_FROM_DATABASE=Millennium G450 Dual Head LX - -pci:v0000102Bd00000525sv0000102Bsd00000543* - ID_PRODUCT_FROM_DATABASE=Millennium G450 Single Head LX - -pci:v0000102Bd00000525sv0000102Bsd00000641* - ID_PRODUCT_FROM_DATABASE=Millennium G450 32Mb SDRAM Dual Head - -pci:v0000102Bd00000525sv0000102Bsd00000642* - ID_PRODUCT_FROM_DATABASE=Millennium G450 32Mb SDRAM Dual Head LX - -pci:v0000102Bd00000525sv0000102Bsd00000643* - ID_PRODUCT_FROM_DATABASE=Millennium G450 32Mb SDRAM Single Head LX - -pci:v0000102Bd00000525sv0000102Bsd000007C0* - ID_PRODUCT_FROM_DATABASE=Millennium G450 Dual Head LE - -pci:v0000102Bd00000525sv0000102Bsd000007C1* - ID_PRODUCT_FROM_DATABASE=Millennium G450 SDR Dual Head LE - -pci:v0000102Bd00000525sv0000102Bsd00000D41* - ID_PRODUCT_FROM_DATABASE=Millennium G450 Dual Head PCI - -pci:v0000102Bd00000525sv0000102Bsd00000D42* - ID_PRODUCT_FROM_DATABASE=Millennium G450 Dual Head LX PCI - -pci:v0000102Bd00000525sv0000102Bsd00000D43* - ID_PRODUCT_FROM_DATABASE=Millennium G450 32Mb Dual Head PCI - -pci:v0000102Bd00000525sv0000102Bsd00000E00* - ID_PRODUCT_FROM_DATABASE=Marvel G450 eTV - -pci:v0000102Bd00000525sv0000102Bsd00000E01* - ID_PRODUCT_FROM_DATABASE=Marvel G450 eTV - -pci:v0000102Bd00000525sv0000102Bsd00000E02* - ID_PRODUCT_FROM_DATABASE=Marvel G450 eTV - -pci:v0000102Bd00000525sv0000102Bsd00000E03* - ID_PRODUCT_FROM_DATABASE=Marvel G450 eTV - -pci:v0000102Bd00000525sv0000102Bsd00000F80* - ID_PRODUCT_FROM_DATABASE=Millennium G450 Low Profile - -pci:v0000102Bd00000525sv0000102Bsd00000F81* - ID_PRODUCT_FROM_DATABASE=Millennium G450 Low Profile - -pci:v0000102Bd00000525sv0000102Bsd00000F82* - ID_PRODUCT_FROM_DATABASE=Millennium G450 Low Profile DVI - -pci:v0000102Bd00000525sv0000102Bsd00000F83* - ID_PRODUCT_FROM_DATABASE=Millennium G450 Low Profile DVI - -pci:v0000102Bd00000525sv0000102Bsd000019D8* - ID_PRODUCT_FROM_DATABASE=Millennium G400 16Mb SGRAM - -pci:v0000102Bd00000525sv0000102Bsd000019F8* - ID_PRODUCT_FROM_DATABASE=Millennium G400 32Mb SGRAM - -pci:v0000102Bd00000525sv0000102Bsd00002159* - ID_PRODUCT_FROM_DATABASE=Millennium G400 Dual Head 16Mb - -pci:v0000102Bd00000525sv0000102Bsd00002179* - ID_PRODUCT_FROM_DATABASE=Millennium G400 MAX/Dual Head 32Mb - -pci:v0000102Bd00000525sv0000102Bsd0000217D* - ID_PRODUCT_FROM_DATABASE=Millennium G400 Dual Head Max - -pci:v0000102Bd00000525sv0000102Bsd000023C0* - ID_PRODUCT_FROM_DATABASE=Millennium G450 - -pci:v0000102Bd00000525sv0000102Bsd000023C1* - ID_PRODUCT_FROM_DATABASE=Millennium G450 - -pci:v0000102Bd00000525sv0000102Bsd000023C2* - ID_PRODUCT_FROM_DATABASE=Millennium G450 DVI - -pci:v0000102Bd00000525sv0000102Bsd000023C3* - ID_PRODUCT_FROM_DATABASE=Millennium G450 DVI - -pci:v0000102Bd00000525sv0000102Bsd00002F58* - ID_PRODUCT_FROM_DATABASE=Millennium G400 - -pci:v0000102Bd00000525sv0000102Bsd00002F78* - ID_PRODUCT_FROM_DATABASE=Millennium G400 - -pci:v0000102Bd00000525sv0000102Bsd00003693* - ID_PRODUCT_FROM_DATABASE=Marvel G400 AGP - -pci:v0000102Bd00000525sv0000102Bsd00005DD0* - ID_PRODUCT_FROM_DATABASE=4Sight II - -pci:v0000102Bd00000525sv0000102Bsd00005F50* - ID_PRODUCT_FROM_DATABASE=4Sight II - -pci:v0000102Bd00000525sv0000102Bsd00005F51* - ID_PRODUCT_FROM_DATABASE=4Sight II - -pci:v0000102Bd00000525sv0000102Bsd00005F52* - ID_PRODUCT_FROM_DATABASE=4Sight II - -pci:v0000102Bd00000525sv0000102Bsd00009010* - ID_PRODUCT_FROM_DATABASE=Millennium G400 Dual Head - -pci:v0000102Bd00000525sv00001458sd00000400* - ID_PRODUCT_FROM_DATABASE=GA-G400 - -pci:v0000102Bd00000525sv00001705sd00000001* - ID_PRODUCT_FROM_DATABASE=Millennium G450 32MB SGRAM - -pci:v0000102Bd00000525sv00001705sd00000002* - ID_PRODUCT_FROM_DATABASE=Millennium G450 16MB SGRAM - -pci:v0000102Bd00000525sv00001705sd00000003* - ID_PRODUCT_FROM_DATABASE=Millennium G450 32MB - -pci:v0000102Bd00000525sv00001705sd00000004* - ID_PRODUCT_FROM_DATABASE=Millennium G450 16MB - -pci:v0000102Bd00000527* - ID_PRODUCT_FROM_DATABASE=Parhelia - -pci:v0000102Bd00000527sv0000102Bsd00000840* - ID_PRODUCT_FROM_DATABASE=Parhelia 128Mb - -pci:v0000102Bd00000527sv0000102Bsd00000850* - ID_PRODUCT_FROM_DATABASE=Parhelia 256MB - -pci:v0000102Bd00000527sv0000102Bsd00000870* - ID_PRODUCT_FROM_DATABASE=MED2mp-DVI - -pci:v0000102Bd00000527sv0000102Bsd00000880* - ID_PRODUCT_FROM_DATABASE=P-256 Edge Overlap Controller - -pci:v0000102Bd00000528* - ID_PRODUCT_FROM_DATABASE=Parhelia - -pci:v0000102Bd00000528sv0000102Bsd00001020* - ID_PRODUCT_FROM_DATABASE=Parhelia 128MB - -pci:v0000102Bd00000528sv0000102Bsd00001030* - ID_PRODUCT_FROM_DATABASE=Parhelia 256 MB Dual DVI - -pci:v0000102Bd00000528sv0000102Bsd00001040* - ID_PRODUCT_FROM_DATABASE=MED2mp-DVI - -pci:v0000102Bd00000528sv0000102Bsd00001050* - ID_PRODUCT_FROM_DATABASE=Sono S20 - -pci:v0000102Bd00000528sv0000102Bsd00001060* - ID_PRODUCT_FROM_DATABASE=PJ-30L - -pci:v0000102Bd00000528sv0000102Bsd00001070* - ID_PRODUCT_FROM_DATABASE=PJ-40L - -pci:v0000102Bd00000528sv0000102Bsd00001421* - ID_PRODUCT_FROM_DATABASE=MED5mp - -pci:v0000102Bd00000528sv0000102Bsd00001431* - ID_PRODUCT_FROM_DATABASE=MED3mp-DVI - -pci:v0000102Bd00000528sv0000102Bsd00001451* - ID_PRODUCT_FROM_DATABASE=MED5mp-DVI - -pci:v0000102Bd00000528sv0000102Bsd00001491* - ID_PRODUCT_FROM_DATABASE=MED2mp-DVI - -pci:v0000102Bd00000528sv0000102Bsd000014B1* - ID_PRODUCT_FROM_DATABASE=MED3mp-DVI - -pci:v0000102Bd00000528sv0000102Bsd000014C1* - ID_PRODUCT_FROM_DATABASE=MED5mp-DVI - -pci:v0000102Bd00000528sv0000102Bsd000014E1* - ID_PRODUCT_FROM_DATABASE=Parhelia PCI 256MB - -pci:v0000102Bd00000528sv0000102Bsd000014F1* - ID_PRODUCT_FROM_DATABASE=Parhelia Precision SGT - -pci:v0000102Bd00000528sv0000102Bsd00001501* - ID_PRODUCT_FROM_DATABASE=ATC-4MP - -pci:v0000102Bd00000528sv0000102Bsd00001511* - ID_PRODUCT_FROM_DATABASE=ATC-4MP - -pci:v0000102Bd00000528sv0000102Bsd00001521* - ID_PRODUCT_FROM_DATABASE=TheatreVUE T30 - -pci:v0000102Bd00000528sv0000102Bsd00001531* - ID_PRODUCT_FROM_DATABASE=TheatreVUE T20 - -pci:v0000102Bd00000528sv0000102Bsd00001541* - ID_PRODUCT_FROM_DATABASE=MED2mp-DVI - -pci:v0000102Bd00000528sv0000102Bsd00001551* - ID_PRODUCT_FROM_DATABASE=MED3mp-DVI - -pci:v0000102Bd00000528sv0000102Bsd00001561* - ID_PRODUCT_FROM_DATABASE=MED5mp-DVI - -pci:v0000102Bd00000528sv0000102Bsd00001571* - ID_PRODUCT_FROM_DATABASE=Parhelia DL256 PCI - -pci:v0000102Bd00000528sv0000102Bsd00001591* - ID_PRODUCT_FROM_DATABASE=Parhelia Precision SDT - -pci:v0000102Bd00000528sv0000102Bsd000015A1* - ID_PRODUCT_FROM_DATABASE=MED4mp-DVI - -pci:v0000102Bd00000528sv0000102Bsd00002011* - ID_PRODUCT_FROM_DATABASE=Parhelia HR256 - -pci:v0000102Bd00000528sv0000102Bsd00002021* - ID_PRODUCT_FROM_DATABASE=QID Pro - -pci:v0000102Bd00000528sv0000102Bsd00002061* - ID_PRODUCT_FROM_DATABASE=PJ-40LP - -pci:v0000102Bd00000528sv0000102Bsd00002081* - ID_PRODUCT_FROM_DATABASE=EWS Quad - -pci:v0000102Bd00000528sv0000102Bsd00002411* - ID_PRODUCT_FROM_DATABASE=PPX-OUT8 - -pci:v0000102Bd00000528sv0000102Bsd00002421* - ID_PRODUCT_FROM_DATABASE=VPX-OUT8 - -pci:v0000102Bd00000528sv0000102Bsd00002441* - ID_PRODUCT_FROM_DATABASE=PPX-OUT4 - -pci:v0000102Bd00000528sv0000102Bsd00002451* - ID_PRODUCT_FROM_DATABASE=VPX-OUT4 - -pci:v0000102Bd00000528sv0000102Bsd00002491* - ID_PRODUCT_FROM_DATABASE=LPX-OUT4 - -pci:v0000102Bd00000530* - ID_PRODUCT_FROM_DATABASE=MGA G200EV - -pci:v0000102Bd00000532* - ID_PRODUCT_FROM_DATABASE=MGA G200eW WPCM450 - -pci:v0000102Bd00000532sv00001028sd00000235* - ID_PRODUCT_FROM_DATABASE=PowerEdge R710 MGA G200eW WPCM450 - -pci:v0000102Bd00000532sv00001028sd00000236* - ID_PRODUCT_FROM_DATABASE=PowerEdge R610 MGA G200eW WPCM450 - -pci:v0000102Bd00000532sv00001028sd00000237* - ID_PRODUCT_FROM_DATABASE=PowerEdge T610 MGA G200eW WPCM450 - -pci:v0000102Bd00000532sv00001028sd00000287* - ID_PRODUCT_FROM_DATABASE=PowerEdge M610 MGA G200eW WPCM450 - -pci:v0000102Bd00000532sv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 MGA G200eW WPCM450 - -pci:v0000102Bd00000532sv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 MGA G200eW WPCM450 - -pci:v0000102Bd00000532sv00001028sd0000029C* - ID_PRODUCT_FROM_DATABASE=PowerEdge M710 MGA G200eW WPCM450 - -pci:v0000102Bd00000532sv00001028sd000002A4* - ID_PRODUCT_FROM_DATABASE=PowerEdge T310 MGA G200eW WPCM450 - -pci:v0000102Bd00000532sv000015D9sd0000A811* - ID_PRODUCT_FROM_DATABASE=H8DGU - -pci:v0000102Bd00000533* - ID_PRODUCT_FROM_DATABASE=MGA G200EH - -pci:v0000102Bd00000533sv0000103Csd00003381* - ID_PRODUCT_FROM_DATABASE=iLO4 - -pci:v0000102Bd00000534* - ID_PRODUCT_FROM_DATABASE=G200eR2 - -pci:v0000102Bd00000540* - ID_PRODUCT_FROM_DATABASE=M91XX - -pci:v0000102Bd00000540sv0000102Bsd00002080* - ID_PRODUCT_FROM_DATABASE=M9140 LP PCIe x16 - -pci:v0000102Bd00000540sv0000102Bsd000020C0* - ID_PRODUCT_FROM_DATABASE=Xenia - -pci:v0000102Bd00000540sv0000102Bsd000020C1* - ID_PRODUCT_FROM_DATABASE=Xenia Pro - -pci:v0000102Bd00000540sv0000102Bsd00002100* - ID_PRODUCT_FROM_DATABASE=M9120 PCIe x16 - -pci:v0000102Bd00000540sv0000102Bsd00002140* - ID_PRODUCT_FROM_DATABASE=M9125 PCIe x16 - -pci:v0000102Bd00000540sv0000102Bsd00002180* - ID_PRODUCT_FROM_DATABASE=M9120 Plus LP PCIe x16 - -pci:v0000102Bd00000540sv0000102Bsd000021C0* - ID_PRODUCT_FROM_DATABASE=M9120 Plus LP PCIe x1 - -pci:v0000102Bd00000540sv0000102Bsd00002200* - ID_PRODUCT_FROM_DATABASE=VDA1164 Output Board - -pci:v0000102Bd00000540sv0000102Bsd00002240* - ID_PRODUCT_FROM_DATABASE=M9148 LP PCIe x16 - -pci:v0000102Bd00000540sv0000102Bsd00002241* - ID_PRODUCT_FROM_DATABASE=M9138 LP PCIe x16 - -pci:v0000102Bd00000540sv0000102Bsd00002280* - ID_PRODUCT_FROM_DATABASE=M9188 ATX PCIe x16 - -pci:v0000102Bd00000540sv0000102Bsd000022C0* - ID_PRODUCT_FROM_DATABASE=M9128 LP PCIe x16 - -pci:v0000102Bd00000D10* - ID_PRODUCT_FROM_DATABASE=MGA Ultima/Impression - -pci:v0000102Bd00001000* - ID_PRODUCT_FROM_DATABASE=MGA G100 [Productiva] - -pci:v0000102Bd00001000sv0000102Bsd0000FF01* - ID_PRODUCT_FROM_DATABASE=Productiva G100 - -pci:v0000102Bd00001000sv0000102Bsd0000FF05* - ID_PRODUCT_FROM_DATABASE=Productiva G100 Multi-Monitor - -pci:v0000102Bd00001001* - ID_PRODUCT_FROM_DATABASE=MGA G100 [Productiva] AGP - -pci:v0000102Bd00001001sv0000102Bsd00001001* - ID_PRODUCT_FROM_DATABASE=MGA-G100 AGP - -pci:v0000102Bd00001001sv0000102Bsd0000FF00* - ID_PRODUCT_FROM_DATABASE=MGA-G100 AGP - -pci:v0000102Bd00001001sv0000102Bsd0000FF01* - ID_PRODUCT_FROM_DATABASE=MGA-G100 Productiva AGP - -pci:v0000102Bd00001001sv0000102Bsd0000FF03* - ID_PRODUCT_FROM_DATABASE=Millennium G100 AGP - -pci:v0000102Bd00001001sv0000102Bsd0000FF04* - ID_PRODUCT_FROM_DATABASE=MGA-G100 AGP - -pci:v0000102Bd00001001sv0000102Bsd0000FF05* - ID_PRODUCT_FROM_DATABASE=MGA-G100 Productiva AGP Multi-Monitor - -pci:v0000102Bd00001001sv0000110Asd0000001E* - ID_PRODUCT_FROM_DATABASE=MGA-G100 AGP - -pci:v0000102Bd00002007* - ID_PRODUCT_FROM_DATABASE=MGA Mistral - -pci:v0000102Bd00002527* - ID_PRODUCT_FROM_DATABASE=Millennium G550 - -pci:v0000102Bd00002527sv0000102Bsd00000F83* - ID_PRODUCT_FROM_DATABASE=Millennium G550 - -pci:v0000102Bd00002527sv0000102Bsd00000F84* - ID_PRODUCT_FROM_DATABASE=Millennium G550 Dual Head DDR 32Mb - -pci:v0000102Bd00002527sv0000102Bsd00001E41* - ID_PRODUCT_FROM_DATABASE=Millennium G550 - -pci:v0000102Bd00002527sv0000102Bsd00002300* - ID_PRODUCT_FROM_DATABASE=Millennium G550 LP PCIE - -pci:v0000102Bd00002537* - ID_PRODUCT_FROM_DATABASE=Millenium P650/P750 - -pci:v0000102Bd00002537sv0000102Bsd00001820* - ID_PRODUCT_FROM_DATABASE=Millennium P750 64MB - -pci:v0000102Bd00002537sv0000102Bsd00001830* - ID_PRODUCT_FROM_DATABASE=Millennium P650 64MB - -pci:v0000102Bd00002537sv0000102Bsd00001850* - ID_PRODUCT_FROM_DATABASE=RAD2mp - -pci:v0000102Bd00002537sv0000102Bsd00001860* - ID_PRODUCT_FROM_DATABASE=RAD3mp - -pci:v0000102Bd00002537sv0000102Bsd00001880* - ID_PRODUCT_FROM_DATABASE=Sono S10 - -pci:v0000102Bd00002537sv0000102Bsd00001C10* - ID_PRODUCT_FROM_DATABASE=QID 128MB - -pci:v0000102Bd00002537sv0000102Bsd00002811* - ID_PRODUCT_FROM_DATABASE=Millennium P650 Low-profile PCI 64MB - -pci:v0000102Bd00002537sv0000102Bsd00002821* - ID_PRODUCT_FROM_DATABASE=Millenium P650 Low-profile PCI - -pci:v0000102Bd00002537sv0000102Bsd00002841* - ID_PRODUCT_FROM_DATABASE=RAD PCI - -pci:v0000102Bd00002537sv0000102Bsd00002851* - ID_PRODUCT_FROM_DATABASE=Spectrum PCI - -pci:v0000102Bd00002537sv0000102Bsd00002871* - ID_PRODUCT_FROM_DATABASE=EpicA TC2 - -pci:v0000102Bd00002537sv0000102Bsd00002C11* - ID_PRODUCT_FROM_DATABASE=QID Low-profile PCI - -pci:v0000102Bd00002537sv0000102Bsd00002C21* - ID_PRODUCT_FROM_DATABASE=QID LP PCI LW - -pci:v0000102Bd00002537sv0000102Bsd00002C31* - ID_PRODUCT_FROM_DATABASE=QID LP PCI - -pci:v0000102Bd00002537sv0000102Bsd00002C41* - ID_PRODUCT_FROM_DATABASE=EpicA TC4 - -pci:v0000102Bd00002537sv0000102Bsd00003001* - ID_PRODUCT_FROM_DATABASE=Extio F1400 - -pci:v0000102Bd00002537sv0000102Bsd00003011* - ID_PRODUCT_FROM_DATABASE=Extio F1220 - -pci:v0000102Bd00002537sv0000102Bsd00003041* - ID_PRODUCT_FROM_DATABASE=RG-200DL - -pci:v0000102Bd00002537sv0000102Bsd00003051* - ID_PRODUCT_FROM_DATABASE=RG-400SL - -pci:v0000102Bd00002537sv0000102Bsd00003061* - ID_PRODUCT_FROM_DATABASE=Extio F1420 - -pci:v0000102Bd00002537sv0000102Bsd00003081* - ID_PRODUCT_FROM_DATABASE=Extio F1240 - -pci:v0000102Bd00002538* - ID_PRODUCT_FROM_DATABASE=Millenium P650 PCIe - -pci:v0000102Bd00002538sv0000102Bsd00000847* - ID_PRODUCT_FROM_DATABASE=RAD PCIe - -pci:v0000102Bd00002538sv0000102Bsd000008C7* - ID_PRODUCT_FROM_DATABASE=Millennium P650 PCIe 128MB - -pci:v0000102Bd00002538sv0000102Bsd00000907* - ID_PRODUCT_FROM_DATABASE=Millennium P650 PCIe 64MB - -pci:v0000102Bd00002538sv0000102Bsd00000947* - ID_PRODUCT_FROM_DATABASE=Parhelia APVe - -pci:v0000102Bd00002538sv0000102Bsd00000987* - ID_PRODUCT_FROM_DATABASE=ATC PCIe 4MP - -pci:v0000102Bd00002538sv0000102Bsd00001047* - ID_PRODUCT_FROM_DATABASE=Millennium P650 LP PCIe 128MB - -pci:v0000102Bd00002538sv0000102Bsd00001087* - ID_PRODUCT_FROM_DATABASE=Millennium P650 LP PCIe 64MB - -pci:v0000102Bd00002538sv0000102Bsd00001801* - ID_PRODUCT_FROM_DATABASE=Millenium P650 PCIe x1 - -pci:v0000102Bd00002538sv0000102Bsd00002538* - ID_PRODUCT_FROM_DATABASE=Parhelia APVe - -pci:v0000102Bd00002538sv0000102Bsd00003007* - ID_PRODUCT_FROM_DATABASE=QID Low-profile PCIe - -pci:v0000102Bd00002538sv0000102Bsd00003087* - ID_PRODUCT_FROM_DATABASE=Aurora VX3mp - -pci:v0000102Bd00002538sv0000102Bsd000030C7* - ID_PRODUCT_FROM_DATABASE=QID LP PCIe - -pci:v0000102Bd00002539* - ID_PRODUCT_FROM_DATABASE=Millennium P690 - -pci:v0000102Bd00002539sv0000102Bsd00000040* - ID_PRODUCT_FROM_DATABASE=Millenium P690 PCIe x16 - -pci:v0000102Bd00002539sv0000102Bsd00000042* - ID_PRODUCT_FROM_DATABASE=ONYX - -pci:v0000102Bd00002539sv0000102Bsd00000043* - ID_PRODUCT_FROM_DATABASE=SPECTRA - -pci:v0000102Bd00002539sv0000102Bsd00000080* - ID_PRODUCT_FROM_DATABASE=Millenium P690 Plus LP PCIe x16 - -pci:v0000102Bd00002539sv0000102Bsd00000081* - ID_PRODUCT_FROM_DATABASE=Millenium P690 LP PCIe x16 - -pci:v0000102Bd00002539sv0000102Bsd00000082* - ID_PRODUCT_FROM_DATABASE=RAD LPX PCIe x16 - -pci:v0000102Bd00002539sv0000102Bsd000000C0* - ID_PRODUCT_FROM_DATABASE=Millenium P690 Plus LP PCI - -pci:v0000102Bd00002539sv0000102Bsd000000C2* - ID_PRODUCT_FROM_DATABASE=Millenium P690 LP PCI - -pci:v0000102Bd00002539sv0000102Bsd000000C3* - ID_PRODUCT_FROM_DATABASE=RAD LPX PCI - -pci:v0000102Bd00002539sv0000102Bsd00000101* - ID_PRODUCT_FROM_DATABASE=Millenium P690 PCI - -pci:v0000102Bd00002539sv0000102Bsd00000140* - ID_PRODUCT_FROM_DATABASE=Millenium P690 LP PCIe x1 - -pci:v0000102Bd00002539sv0000102Bsd00000180* - ID_PRODUCT_FROM_DATABASE=Display Wall IP Decode 128 MB - -pci:v0000102Bd00004164* - ID_PRODUCT_FROM_DATABASE=Morphis QxT frame grabber - -pci:v0000102Bd000043B4* - ID_PRODUCT_FROM_DATABASE=Morphis Qxt encoding engine - -pci:v0000102Bd00004510* - ID_PRODUCT_FROM_DATABASE=Morphis COM port - -pci:v0000102Bd00004536* - ID_PRODUCT_FROM_DATABASE=VIA Framegrabber - -pci:v0000102Bd00004686* - ID_PRODUCT_FROM_DATABASE=Concord GX (customized Intel 82541) - -pci:v0000102Bd0000475B* - ID_PRODUCT_FROM_DATABASE=Solios eCL/XCL-B frame grabber - -pci:v0000102Bd0000475D* - ID_PRODUCT_FROM_DATABASE=Vio frame grabber family - -pci:v0000102Bd0000475Dsv0000102Bsd00004B90* - ID_PRODUCT_FROM_DATABASE=Vio Duo frame grabber (single channel) - -pci:v0000102Bd0000475Dsv0000102Bsd00004B91* - ID_PRODUCT_FROM_DATABASE=Vio Duo frame grabber - -pci:v0000102Bd0000475Dsv0000102Bsd00004B92* - ID_PRODUCT_FROM_DATABASE=Vio Analog frame grabber - -pci:v0000102Bd0000475Dsv0000102Bsd00004B93* - ID_PRODUCT_FROM_DATABASE=Vio SDI Frame Grabber - -pci:v0000102Bd0000475Dsv0000102Bsd00004B94* - ID_PRODUCT_FROM_DATABASE=Vio DVI-A frame grabber - -pci:v0000102Bd0000475F* - ID_PRODUCT_FROM_DATABASE=Solios (single-Full) CL frame grabber - -pci:v0000102Bd0000475Fsv0000102Bsd0000475F* - ID_PRODUCT_FROM_DATABASE=Solios eCL/XCL-F frame grabber - -pci:v0000102Bd0000475Fsv0000102Bsd00004D5F* - ID_PRODUCT_FROM_DATABASE=Solios eV-CL (single-Full) frame grabber - -pci:v0000102Bd0000475Fsv0000102Bsd00004E5F* - ID_PRODUCT_FROM_DATABASE=Solios eM-CL (single-Full) frame grabber - -pci:v0000102Bd000047A1* - ID_PRODUCT_FROM_DATABASE=Solios eA/XA frame grabber - -pci:v0000102Bd000047A1sv0000102Bsd00004BE0* - ID_PRODUCT_FROM_DATABASE=Solios eA/XA (single) frame grabber - -pci:v0000102Bd000047A1sv0000102Bsd00004BE1* - ID_PRODUCT_FROM_DATABASE=Solios eA/XA (dual) frame grabber - -pci:v0000102Bd000047A1sv0000102Bsd00004BE2* - ID_PRODUCT_FROM_DATABASE=Solios eA/XA (quad) frame grabber - -pci:v0000102Bd000047A2* - ID_PRODUCT_FROM_DATABASE=Solios COM port - -pci:v0000102Bd000047C1* - ID_PRODUCT_FROM_DATABASE=Solios (dual-Base/single-Medium) CL frame grabber - -pci:v0000102Bd000047C1sv0000102Bsd00000000* - ID_PRODUCT_FROM_DATABASE=Solios frame grabber - -pci:v0000102Bd000047C1sv0000102Bsd00004B80* - ID_PRODUCT_FROM_DATABASE=Solios eCL/XCL (single-Medium) frame grabber - -pci:v0000102Bd000047C1sv0000102Bsd00004B81* - ID_PRODUCT_FROM_DATABASE=Solios eCL/XCL (dual-Base) frame grabber - -pci:v0000102Bd000047C1sv0000102Bsd00004D80* - ID_PRODUCT_FROM_DATABASE=Solios eV-CL (single-Medium) frame grabber - -pci:v0000102Bd000047C1sv0000102Bsd00004D81* - ID_PRODUCT_FROM_DATABASE=Solios eV-CL (dual-Base) frame grabber - -pci:v0000102Bd000047C1sv0000102Bsd00004E80* - ID_PRODUCT_FROM_DATABASE=Solios eM-CL (single-Medium) frame grabber - -pci:v0000102Bd000047C1sv0000102Bsd00004E81* - ID_PRODUCT_FROM_DATABASE=Solios eM-CL (dual-Base) frame grabber - -pci:v0000102Bd000047C2* - ID_PRODUCT_FROM_DATABASE=Solios COM port - -pci:v0000102Bd00004949* - ID_PRODUCT_FROM_DATABASE=Radient frame grabber family - -pci:v0000102Bd00004949sv0000102Bsd00000010* - ID_PRODUCT_FROM_DATABASE=Radient eCL (Single-full) frame grabber - -pci:v0000102Bd00004949sv0000102Bsd00000020* - ID_PRODUCT_FROM_DATABASE=Radient eCL (Dual-base) frame grabber - -pci:v0000102Bd00004949sv0000102Bsd00000030* - ID_PRODUCT_FROM_DATABASE=Radient eCL (Dual-full) frame grabber - -pci:v0000102Bd00004949sv0000102Bsd00000040* - ID_PRODUCT_FROM_DATABASE=Radient eCL (Quad-base) frame grabber - -pci:v0000102Bd00004949sv0000102Bsd00000050* - ID_PRODUCT_FROM_DATABASE=Radient eCL (Golden) frame grabber - -pci:v0000102Bd00004CDC* - ID_PRODUCT_FROM_DATABASE=Morphis JPEG2000 accelerator - -pci:v0000102Bd00004F54* - ID_PRODUCT_FROM_DATABASE=Morphis (e)Quad frame grabber - -pci:v0000102Bd00004FC5* - ID_PRODUCT_FROM_DATABASE=Morphis (e)Dual frame grabber - -pci:v0000102Bd00005E10* - ID_PRODUCT_FROM_DATABASE=Morphis aux I/O - -pci:v0000102Bd00006573* - ID_PRODUCT_FROM_DATABASE=Shark 10/100 Multiport SwitchNIC - -pci:v0000102C* - ID_VENDOR_FROM_DATABASE=Chips and Technologies - -pci:v0000102Cd000000B8* - ID_PRODUCT_FROM_DATABASE=F64310 - -pci:v0000102Cd000000C0* - ID_PRODUCT_FROM_DATABASE=F69000 HiQVideo - -pci:v0000102Cd000000C0sv0000102Csd000000C0* - ID_PRODUCT_FROM_DATABASE=F69000 HiQVideo - -pci:v0000102Cd000000C0sv00004C53sd00001000* - ID_PRODUCT_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard - -pci:v0000102Cd000000C0sv00004C53sd00001010* - ID_PRODUCT_FROM_DATABASE=CP5/CR6 mainboard - -pci:v0000102Cd000000C0sv00004C53sd00001020* - ID_PRODUCT_FROM_DATABASE=VR6 mainboard - -pci:v0000102Cd000000C0sv00004C53sd00001030* - ID_PRODUCT_FROM_DATABASE=PC5 mainboard - -pci:v0000102Cd000000C0sv00004C53sd00001050* - ID_PRODUCT_FROM_DATABASE=CT7 mainboard - -pci:v0000102Cd000000C0sv00004C53sd00001051* - ID_PRODUCT_FROM_DATABASE=CE7 mainboard - -pci:v0000102Cd000000D0* - ID_PRODUCT_FROM_DATABASE=F65545 - -pci:v0000102Cd000000D8* - ID_PRODUCT_FROM_DATABASE=F65545 - -pci:v0000102Cd000000DC* - ID_PRODUCT_FROM_DATABASE=F65548 - -pci:v0000102Cd000000E0* - ID_PRODUCT_FROM_DATABASE=F65550 - -pci:v0000102Cd000000E4* - ID_PRODUCT_FROM_DATABASE=F65554 - -pci:v0000102Cd000000E5* - ID_PRODUCT_FROM_DATABASE=F65555 HiQVPro - -pci:v0000102Cd000000E5sv00000E11sd0000B049* - ID_PRODUCT_FROM_DATABASE=Armada 1700 Laptop Display Controller - -pci:v0000102Cd000000E5sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Satellite Pro/Satellite - -pci:v0000102Cd000000F0* - ID_PRODUCT_FROM_DATABASE=F68554 - -pci:v0000102Cd000000F4* - ID_PRODUCT_FROM_DATABASE=F68554 HiQVision - -pci:v0000102Cd000000F5* - ID_PRODUCT_FROM_DATABASE=F68555 - -pci:v0000102Cd00000C30* - ID_PRODUCT_FROM_DATABASE=F69030 - -pci:v0000102Cd00000C30sv00004C53sd00001000* - ID_PRODUCT_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard - -pci:v0000102Cd00000C30sv00004C53sd00001050* - ID_PRODUCT_FROM_DATABASE=CT7 mainboard - -pci:v0000102Cd00000C30sv00004C53sd00001051* - ID_PRODUCT_FROM_DATABASE=CE7 mainboard - -pci:v0000102Cd00000C30sv00004C53sd00001080* - ID_PRODUCT_FROM_DATABASE=CT8 mainboard - -pci:v0000102D* - ID_VENDOR_FROM_DATABASE=Wyse Technology Inc. - -pci:v0000102Dd000050DC* - ID_PRODUCT_FROM_DATABASE=3328 Audio - -pci:v0000102E* - ID_VENDOR_FROM_DATABASE=Olivetti Advanced Technology - -pci:v0000102F* - ID_VENDOR_FROM_DATABASE=Toshiba America - -pci:v0000102Fd00000009* - ID_PRODUCT_FROM_DATABASE=r4x00 - -pci:v0000102Fd0000000A* - ID_PRODUCT_FROM_DATABASE=TX3927 MIPS RISC PCI Controller - -pci:v0000102Fd00000020* - ID_PRODUCT_FROM_DATABASE=ATM Meteor 155 - -pci:v0000102Fd00000020sv0000102Fsd000000F8* - ID_PRODUCT_FROM_DATABASE=ATM Meteor 155 - -pci:v0000102Fd00000030* - ID_PRODUCT_FROM_DATABASE=TC35815CF PCI 10/100 Mbit Ethernet Controller - -pci:v0000102Fd00000031* - ID_PRODUCT_FROM_DATABASE=TC35815CF PCI 10/100 Mbit Ethernet Controller with WOL - -pci:v0000102Fd00000032* - ID_PRODUCT_FROM_DATABASE=TC35815CF PCI 10/100 Mbit Ethernet Controller on TX4939 - -pci:v0000102Fd00000105* - ID_PRODUCT_FROM_DATABASE=TC86C001 [goku-s] IDE - -pci:v0000102Fd00000106* - ID_PRODUCT_FROM_DATABASE=TC86C001 [goku-s] USB 1.1 Host - -pci:v0000102Fd00000107* - ID_PRODUCT_FROM_DATABASE=TC86C001 [goku-s] USB Device Controller - -pci:v0000102Fd00000108* - ID_PRODUCT_FROM_DATABASE=TC86C001 [goku-s] I2C/SIO/GPIO Controller - -pci:v0000102Fd00000180* - ID_PRODUCT_FROM_DATABASE=TX4927/38 MIPS RISC PCI Controller - -pci:v0000102Fd00000181* - ID_PRODUCT_FROM_DATABASE=TX4925 MIPS RISC PCI Controller - -pci:v0000102Fd00000182* - ID_PRODUCT_FROM_DATABASE=TX4937 MIPS RISC PCI Controller - -pci:v0000102Fd000001B4* - ID_PRODUCT_FROM_DATABASE=Celleb platform IDE interface - -pci:v0000102Fd000001B5* - ID_PRODUCT_FROM_DATABASE=SCC USB 2.0 EHCI controller - -pci:v0000102Fd000001B6* - ID_PRODUCT_FROM_DATABASE=SCC USB 1.1 OHCI controller - -pci:v00001030* - ID_VENDOR_FROM_DATABASE=TMC Research - -pci:v00001031* - ID_VENDOR_FROM_DATABASE=Miro Computer Products AG - -pci:v00001031d00005601* - ID_PRODUCT_FROM_DATABASE=DC20 ASIC - -pci:v00001031d00005607* - ID_PRODUCT_FROM_DATABASE=Video I/O & motion JPEG compressor - -pci:v00001031d00005631* - ID_PRODUCT_FROM_DATABASE=Media 3D - -pci:v00001031d00006057* - ID_PRODUCT_FROM_DATABASE=MiroVideo DC10/DC30+ - -pci:v00001032* - ID_VENDOR_FROM_DATABASE=Compaq - -pci:v00001033* - ID_VENDOR_FROM_DATABASE=NEC Corporation - -pci:v00001033d00000000* - ID_PRODUCT_FROM_DATABASE=Vr4181A USB Host or Function Control Unit - -pci:v00001033d00000001* - ID_PRODUCT_FROM_DATABASE=PCI to 486-like bus Bridge - -pci:v00001033d00000002* - ID_PRODUCT_FROM_DATABASE=PCI to VL98 Bridge - -pci:v00001033d00000003* - ID_PRODUCT_FROM_DATABASE=ATM Controller - -pci:v00001033d00000004* - ID_PRODUCT_FROM_DATABASE=R4000 PCI Bridge - -pci:v00001033d00000005* - ID_PRODUCT_FROM_DATABASE=PCI to 486-like bus Bridge - -pci:v00001033d00000006* - ID_PRODUCT_FROM_DATABASE=PC-9800 Graphic Accelerator - -pci:v00001033d00000007* - ID_PRODUCT_FROM_DATABASE=PCI to UX-Bus Bridge - -pci:v00001033d00000008* - ID_PRODUCT_FROM_DATABASE=PC-9800 Graphic Accelerator - -pci:v00001033d00000009* - ID_PRODUCT_FROM_DATABASE=PCI to PC9800 Core-Graph Bridge - -pci:v00001033d00000016* - ID_PRODUCT_FROM_DATABASE=PCI to VL Bridge - -pci:v00001033d0000001A* - ID_PRODUCT_FROM_DATABASE=[Nile II] - -pci:v00001033d00000021* - ID_PRODUCT_FROM_DATABASE=Vrc4373 [Nile I] - -pci:v00001033d00000029* - ID_PRODUCT_FROM_DATABASE=PowerVR PCX1 - -pci:v00001033d0000002A* - ID_PRODUCT_FROM_DATABASE=PowerVR 3D - -pci:v00001033d0000002C* - ID_PRODUCT_FROM_DATABASE=Star Alpha 2 - -pci:v00001033d0000002D* - ID_PRODUCT_FROM_DATABASE=PCI to C-bus Bridge - -pci:v00001033d00000035* - ID_PRODUCT_FROM_DATABASE=OHCI USB Controller - -pci:v00001033d00000035sv00001033sd00000035* - ID_PRODUCT_FROM_DATABASE=USB Controller - -pci:v00001033d00000035sv0000103Csd00001293* - ID_PRODUCT_FROM_DATABASE=USB add-in card - -pci:v00001033d00000035sv0000103Csd00001294* - ID_PRODUCT_FROM_DATABASE=USB 2.0 add-in card - -pci:v00001033d00000035sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=USB - -pci:v00001033d00000035sv000012EEsd00007000* - ID_PRODUCT_FROM_DATABASE=Root Hub - -pci:v00001033d00000035sv000014C2sd00000105* - ID_PRODUCT_FROM_DATABASE=PTI-205N USB 2.0 Host Controller - -pci:v00001033d00000035sv00001799sd00000001* - ID_PRODUCT_FROM_DATABASE=Root Hub - -pci:v00001033d00000035sv00001931sd0000000A* - ID_PRODUCT_FROM_DATABASE=GlobeTrotter Fusion Quad Lite (PPP data) - -pci:v00001033d00000035sv00001931sd0000000B* - ID_PRODUCT_FROM_DATABASE=GlobeTrotter Fusion Quad Lite (GSM data) - -pci:v00001033d00000035sv0000807Dsd00000035* - ID_PRODUCT_FROM_DATABASE=PCI-USB2 (OHCI subsystem) - -pci:v00001033d0000003B* - ID_PRODUCT_FROM_DATABASE=PCI to C-bus Bridge - -pci:v00001033d0000003E* - ID_PRODUCT_FROM_DATABASE=NAPCCARD Cardbus Controller - -pci:v00001033d00000046* - ID_PRODUCT_FROM_DATABASE=PowerVR PCX2 [midas] - -pci:v00001033d0000005A* - ID_PRODUCT_FROM_DATABASE=Vrc5074 [Nile 4] - -pci:v00001033d00000063* - ID_PRODUCT_FROM_DATABASE=uPD72862 [Firewarden] IEEE1394 OHCI 1.0 Link Controller - -pci:v00001033d00000067* - ID_PRODUCT_FROM_DATABASE=PowerVR Neon 250 Chipset - -pci:v00001033d00000067sv00001010sd00000020* - ID_PRODUCT_FROM_DATABASE=PowerVR Neon 250 AGP 32Mb - -pci:v00001033d00000067sv00001010sd00000080* - ID_PRODUCT_FROM_DATABASE=PowerVR Neon 250 AGP 16Mb - -pci:v00001033d00000067sv00001010sd00000088* - ID_PRODUCT_FROM_DATABASE=PowerVR Neon 250 16Mb - -pci:v00001033d00000067sv00001010sd00000090* - ID_PRODUCT_FROM_DATABASE=PowerVR Neon 250 AGP 16Mb - -pci:v00001033d00000067sv00001010sd00000098* - ID_PRODUCT_FROM_DATABASE=PowerVR Neon 250 16Mb - -pci:v00001033d00000067sv00001010sd000000A0* - ID_PRODUCT_FROM_DATABASE=PowerVR Neon 250 AGP 32Mb - -pci:v00001033d00000067sv00001010sd000000A8* - ID_PRODUCT_FROM_DATABASE=PowerVR Neon 250 32Mb - -pci:v00001033d00000067sv00001010sd00000120* - ID_PRODUCT_FROM_DATABASE=PowerVR Neon 250 AGP 32Mb - -pci:v00001033d00000072* - ID_PRODUCT_FROM_DATABASE=uPD72874 IEEE1394 OHCI 1.1 3-port PHY-Link Ctrlr - -pci:v00001033d00000074* - ID_PRODUCT_FROM_DATABASE=56k Voice Modem - -pci:v00001033d00000074sv00001033sd00008014* - ID_PRODUCT_FROM_DATABASE=RCV56ACF 56k Voice Modem - -pci:v00001033d0000009B* - ID_PRODUCT_FROM_DATABASE=Vrc5476 - -pci:v00001033d000000A5* - ID_PRODUCT_FROM_DATABASE=VRC4173 - -pci:v00001033d000000A6* - ID_PRODUCT_FROM_DATABASE=VRC5477 AC97 - -pci:v00001033d000000CD* - ID_PRODUCT_FROM_DATABASE=uPD72870 [Firewarden] IEEE1394a OHCI 1.0 Link/3-port PHY Controller - -pci:v00001033d000000CDsv000012EEsd00008011* - ID_PRODUCT_FROM_DATABASE=Root hub - -pci:v00001033d000000CE* - ID_PRODUCT_FROM_DATABASE=uPD72871 [Firewarden] IEEE1394a OHCI 1.0 Link/1-port PHY Controller - -pci:v00001033d000000DF* - ID_PRODUCT_FROM_DATABASE=Vr4131 - -pci:v00001033d000000E0* - ID_PRODUCT_FROM_DATABASE=uPD72010x USB 2.0 Controller - -pci:v00001033d000000E0sv000012EEsd00007001* - ID_PRODUCT_FROM_DATABASE=Root hub - -pci:v00001033d000000E0sv000014C2sd00000205* - ID_PRODUCT_FROM_DATABASE=PTI-205N USB 2.0 Host Controller - -pci:v00001033d000000E0sv00001799sd00000002* - ID_PRODUCT_FROM_DATABASE=Root Hub - -pci:v00001033d000000E0sv0000807Dsd00001043* - ID_PRODUCT_FROM_DATABASE=PCI-USB2 (EHCI subsystem) - -pci:v00001033d000000E7* - ID_PRODUCT_FROM_DATABASE=uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller - -pci:v00001033d000000F2* - ID_PRODUCT_FROM_DATABASE=uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller - -pci:v00001033d000000F3* - ID_PRODUCT_FROM_DATABASE=uPD6113x Multimedia Decoder/Processor [EMMA2] - -pci:v00001033d0000010C* - ID_PRODUCT_FROM_DATABASE=VR7701 - -pci:v00001033d00000125* - ID_PRODUCT_FROM_DATABASE=uPD720400 PCI Express - PCI/PCI-X Bridge - -pci:v00001033d0000013A* - ID_PRODUCT_FROM_DATABASE=Dual Tuner/MPEG Encoder - -pci:v00001033d00000194* - ID_PRODUCT_FROM_DATABASE=uPD720200 USB 3.0 Host Controller - -pci:v00001033d00000194sv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00001033d00000194sv00001028sd000004B2* - ID_PRODUCT_FROM_DATABASE=Vostro 3350 - -pci:v00001033d00000194sv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v00001033d00000194sv00001043sd00008413* - ID_PRODUCT_FROM_DATABASE=P8P67 Deluxe Motherboard - -pci:v00001033d00000194sv00001B96sd00000001* - ID_PRODUCT_FROM_DATABASE=USB 3.0 PCIe Card - -pci:v00001033d000001E7* - ID_PRODUCT_FROM_DATABASE=uPD72873 [Firewarden] IEEE1394a OHCI 1.1 Link/2-port PHY Controller - -pci:v00001033d000001F2* - ID_PRODUCT_FROM_DATABASE=uPD72874 [Firewarden] IEEE1394a OHCI 1.1 Link/3-port PHY Controller - -pci:v00001034* - ID_VENDOR_FROM_DATABASE=Framatome Connectors USA Inc. - -pci:v00001035* - ID_VENDOR_FROM_DATABASE=Comp. & Comm. Research Lab - -pci:v00001036* - ID_VENDOR_FROM_DATABASE=Future Domain Corp. - -pci:v00001036d00000000* - ID_PRODUCT_FROM_DATABASE=TMC-18C30 [36C70] - -pci:v00001037* - ID_VENDOR_FROM_DATABASE=Hitachi Micro Systems - -pci:v00001038* - ID_VENDOR_FROM_DATABASE=AMP, Inc - -pci:v00001039* - ID_VENDOR_FROM_DATABASE=Silicon Integrated Systems [SiS] - -pci:v00001039d00000001* - ID_PRODUCT_FROM_DATABASE=AGP Port (virtual PCI-to-PCI bridge) - -pci:v00001039d00000002* - ID_PRODUCT_FROM_DATABASE=AGP Port (virtual PCI-to-PCI bridge) - -pci:v00001039d00000003* - ID_PRODUCT_FROM_DATABASE=AGP Port (virtual PCI-to-PCI bridge) - -pci:v00001039d00000004* - ID_PRODUCT_FROM_DATABASE=PCI-to-PCI bridge - -pci:v00001039d00000006* - ID_PRODUCT_FROM_DATABASE=85C501/2/3 - -pci:v00001039d00000008* - ID_PRODUCT_FROM_DATABASE=SiS85C503/5513 (LPC Bridge) - -pci:v00001039d00000009* - ID_PRODUCT_FROM_DATABASE=5595 Power Management Controller - -pci:v00001039d0000000A* - ID_PRODUCT_FROM_DATABASE=PCI-to-PCI bridge - -pci:v00001039d00000016* - ID_PRODUCT_FROM_DATABASE=SiS961/2/3 SMBus controller - -pci:v00001039d00000018* - ID_PRODUCT_FROM_DATABASE=SiS85C503/5513 (LPC Bridge) - -pci:v00001039d00000180* - ID_PRODUCT_FROM_DATABASE=RAID bus controller 180 SATA/PATA [SiS] - -pci:v00001039d00000181* - ID_PRODUCT_FROM_DATABASE=SATA - -pci:v00001039d00000182* - ID_PRODUCT_FROM_DATABASE=182 SATA/RAID Controller - -pci:v00001039d00000182sv00001734sd00001095* - ID_PRODUCT_FROM_DATABASE=D2030-A1 - -pci:v00001039d00000186* - ID_PRODUCT_FROM_DATABASE=AHCI Controller (0106) - -pci:v00001039d00000190* - ID_PRODUCT_FROM_DATABASE=190 Ethernet Adapter - -pci:v00001039d00000191* - ID_PRODUCT_FROM_DATABASE=191 Gigabit Ethernet Adapter - -pci:v00001039d00000200* - ID_PRODUCT_FROM_DATABASE=5597/5598/6326 VGA - -pci:v00001039d00000200sv00001039sd00000000* - ID_PRODUCT_FROM_DATABASE=SiS5597 SVGA (Shared RAM) - -pci:v00001039d00000204* - ID_PRODUCT_FROM_DATABASE=82C204 - -pci:v00001039d00000205* - ID_PRODUCT_FROM_DATABASE=SG86C205 - -pci:v00001039d00000300* - ID_PRODUCT_FROM_DATABASE=300/305 PCI/AGP VGA Display Adapter - -pci:v00001039d00000300sv0000107Dsd00002720* - ID_PRODUCT_FROM_DATABASE=Leadtek WinFast VR300 - -pci:v00001039d00000310* - ID_PRODUCT_FROM_DATABASE=315H PCI/AGP VGA Display Adapter - -pci:v00001039d00000315* - ID_PRODUCT_FROM_DATABASE=315 PCI/AGP VGA Display Adapter - -pci:v00001039d00000325* - ID_PRODUCT_FROM_DATABASE=315PRO PCI/AGP VGA Display Adapter - -pci:v00001039d00000330* - ID_PRODUCT_FROM_DATABASE=330 [Xabre] PCI/AGP VGA Display Adapter - -pci:v00001039d00000406* - ID_PRODUCT_FROM_DATABASE=85C501/2 - -pci:v00001039d00000496* - ID_PRODUCT_FROM_DATABASE=85C496 - -pci:v00001039d00000530* - ID_PRODUCT_FROM_DATABASE=530 Host - -pci:v00001039d00000540* - ID_PRODUCT_FROM_DATABASE=540 Host - -pci:v00001039d00000550* - ID_PRODUCT_FROM_DATABASE=550 Host - -pci:v00001039d00000597* - ID_PRODUCT_FROM_DATABASE=5513C - -pci:v00001039d00000601* - ID_PRODUCT_FROM_DATABASE=85C601 - -pci:v00001039d00000620* - ID_PRODUCT_FROM_DATABASE=620 Host - -pci:v00001039d00000630* - ID_PRODUCT_FROM_DATABASE=630 Host - -pci:v00001039d00000633* - ID_PRODUCT_FROM_DATABASE=633 Host - -pci:v00001039d00000635* - ID_PRODUCT_FROM_DATABASE=635 Host - -pci:v00001039d00000645* - ID_PRODUCT_FROM_DATABASE=SiS645 Host & Memory & AGP Controller - -pci:v00001039d00000646* - ID_PRODUCT_FROM_DATABASE=SiS645DX Host & Memory & AGP Controller - -pci:v00001039d00000648* - ID_PRODUCT_FROM_DATABASE=645xx - -pci:v00001039d00000649* - ID_PRODUCT_FROM_DATABASE=SiS649 Host - -pci:v00001039d00000650* - ID_PRODUCT_FROM_DATABASE=650/M650 Host - -pci:v00001039d00000651* - ID_PRODUCT_FROM_DATABASE=651 Host - -pci:v00001039d00000655* - ID_PRODUCT_FROM_DATABASE=655 Host - -pci:v00001039d00000660* - ID_PRODUCT_FROM_DATABASE=660 Host - -pci:v00001039d00000661* - ID_PRODUCT_FROM_DATABASE=661FX/M661FX/M661MX Host - -pci:v00001039d00000662* - ID_PRODUCT_FROM_DATABASE=662 Host - -pci:v00001039d00000671* - ID_PRODUCT_FROM_DATABASE=671MX - -pci:v00001039d00000730* - ID_PRODUCT_FROM_DATABASE=730 Host - -pci:v00001039d00000733* - ID_PRODUCT_FROM_DATABASE=733 Host - -pci:v00001039d00000735* - ID_PRODUCT_FROM_DATABASE=735 Host - -pci:v00001039d00000740* - ID_PRODUCT_FROM_DATABASE=740 Host - -pci:v00001039d00000741* - ID_PRODUCT_FROM_DATABASE=741/741GX/M741 Host - -pci:v00001039d00000741sv00001849sd00000741* - ID_PRODUCT_FROM_DATABASE=K7S41/K7S41GX motherboard - -pci:v00001039d00000745* - ID_PRODUCT_FROM_DATABASE=745 Host - -pci:v00001039d00000746* - ID_PRODUCT_FROM_DATABASE=746 Host - -pci:v00001039d00000755* - ID_PRODUCT_FROM_DATABASE=755 Host - -pci:v00001039d00000760* - ID_PRODUCT_FROM_DATABASE=760/M760 Host - -pci:v00001039d00000761* - ID_PRODUCT_FROM_DATABASE=761/M761 Host - -pci:v00001039d00000761sv00001734sd00001099* - ID_PRODUCT_FROM_DATABASE=D2030-A1 Motherboard - -pci:v00001039d00000900* - ID_PRODUCT_FROM_DATABASE=SiS900 PCI Fast Ethernet - -pci:v00001039d00000900sv00001019sd00000A14* - ID_PRODUCT_FROM_DATABASE=K7S5A motherboard - -pci:v00001039d00000900sv00001039sd00000900* - ID_PRODUCT_FROM_DATABASE=SiS900 10/100 Ethernet Adapter onboard [Asus P4SC-EA] - -pci:v00001039d00000900sv00001043sd00008035* - ID_PRODUCT_FROM_DATABASE=CUSI-FX motherboard - -pci:v00001039d00000900sv00001043sd000080A7* - ID_PRODUCT_FROM_DATABASE=Motherboard P4S800D-X - -pci:v00001039d00000900sv00001462sd00000900* - ID_PRODUCT_FROM_DATABASE=MS-6701 motherboard - -pci:v00001039d00000961* - ID_PRODUCT_FROM_DATABASE=SiS961 [MuTIOL Media IO] - -pci:v00001039d00000962* - ID_PRODUCT_FROM_DATABASE=SiS962 [MuTIOL Media IO] LPC Controller - -pci:v00001039d00000963* - ID_PRODUCT_FROM_DATABASE=SiS963 [MuTIOL Media IO] LPC Controller - -pci:v00001039d00000964* - ID_PRODUCT_FROM_DATABASE=SiS964 [MuTIOL Media IO] LPC Controller - -pci:v00001039d00000965* - ID_PRODUCT_FROM_DATABASE=SiS965 [MuTIOL Media IO] - -pci:v00001039d00000966* - ID_PRODUCT_FROM_DATABASE=SiS966 [MuTIOL Media IO] - -pci:v00001039d00000968* - ID_PRODUCT_FROM_DATABASE=SiS968 [MuTIOL Media IO] - -pci:v00001039d00001180* - ID_PRODUCT_FROM_DATABASE=SATA Controller / IDE mode - -pci:v00001039d00001182* - ID_PRODUCT_FROM_DATABASE=SATA Controller / RAID mode - -pci:v00001039d00001183* - ID_PRODUCT_FROM_DATABASE=SATA Controller / IDE mode - -pci:v00001039d00001184* - ID_PRODUCT_FROM_DATABASE=AHCI Controller / RAID mode - -pci:v00001039d00001185* - ID_PRODUCT_FROM_DATABASE=AHCI IDE Controller (0106) - -pci:v00001039d00003602* - ID_PRODUCT_FROM_DATABASE=83C602 - -pci:v00001039d00005107* - ID_PRODUCT_FROM_DATABASE=5107 - -pci:v00001039d00005300* - ID_PRODUCT_FROM_DATABASE=SiS540 PCI Display Adapter - -pci:v00001039d00005315* - ID_PRODUCT_FROM_DATABASE=550 PCI/AGP VGA Display Adapter - -pci:v00001039d00005401* - ID_PRODUCT_FROM_DATABASE=486 PCI Chipset - -pci:v00001039d00005511* - ID_PRODUCT_FROM_DATABASE=5511/5512 - -pci:v00001039d00005513* - ID_PRODUCT_FROM_DATABASE=5513 IDE Controller - -pci:v00001039d00005513sv00001019sd00000970* - ID_PRODUCT_FROM_DATABASE=P6STP-FL motherboard - -pci:v00001039d00005513sv00001039sd00005513* - ID_PRODUCT_FROM_DATABASE=SiS5513 EIDE Controller (A,B step) - -pci:v00001039d00005513sv00001043sd00008035* - ID_PRODUCT_FROM_DATABASE=CUSI-FX motherboard - -pci:v00001039d00005513sv00001462sd00007010* - ID_PRODUCT_FROM_DATABASE=MS-6701 motherboard - -pci:v00001039d00005513sv00001631sd00005513* - ID_PRODUCT_FROM_DATABASE=GA-8SIML Rev1.0 Motherboard - -pci:v00001039d00005513sv00001734sd00001095* - ID_PRODUCT_FROM_DATABASE=D2030-A1 Motherboard - -pci:v00001039d00005517* - ID_PRODUCT_FROM_DATABASE=5517 - -pci:v00001039d00005571* - ID_PRODUCT_FROM_DATABASE=5571 - -pci:v00001039d00005581* - ID_PRODUCT_FROM_DATABASE=5581 Pentium Chipset - -pci:v00001039d00005582* - ID_PRODUCT_FROM_DATABASE=5582 - -pci:v00001039d00005591* - ID_PRODUCT_FROM_DATABASE=5591/5592 Host - -pci:v00001039d00005596* - ID_PRODUCT_FROM_DATABASE=5596 Pentium Chipset - -pci:v00001039d00005597* - ID_PRODUCT_FROM_DATABASE=5597 [SiS5582] - -pci:v00001039d00005600* - ID_PRODUCT_FROM_DATABASE=5600 Host - -pci:v00001039d00006204* - ID_PRODUCT_FROM_DATABASE=Video decoder & MPEG interface - -pci:v00001039d00006205* - ID_PRODUCT_FROM_DATABASE=VGA Controller - -pci:v00001039d00006236* - ID_PRODUCT_FROM_DATABASE=6236 3D-AGP - -pci:v00001039d00006300* - ID_PRODUCT_FROM_DATABASE=630/730 PCI/AGP VGA Display Adapter - -pci:v00001039d00006300sv00001019sd00000970* - ID_PRODUCT_FROM_DATABASE=P6STP-FL motherboard - -pci:v00001039d00006300sv00001043sd00008035* - ID_PRODUCT_FROM_DATABASE=CUSI-FX motherboard - -pci:v00001039d00006300sv0000104Dsd000080E2* - ID_PRODUCT_FROM_DATABASE=VAIO PCV-J200 - -pci:v00001039d00006306* - ID_PRODUCT_FROM_DATABASE=530/620 PCI/AGP VGA Display Adapter - -pci:v00001039d00006325* - ID_PRODUCT_FROM_DATABASE=65x/M650/740 PCI/AGP VGA Display Adapter - -pci:v00001039d00006325sv00001039sd00006325* - ID_PRODUCT_FROM_DATABASE=SiS 651 onboard [Asus P4SC-EA] - -pci:v00001039d00006325sv00001631sd00001004* - ID_PRODUCT_FROM_DATABASE=SiS 651C onboard [Gigabyte GA-8SIML Rev1.0] - -pci:v00001039d00006326* - ID_PRODUCT_FROM_DATABASE=86C326 5598/6326 - -pci:v00001039d00006326sv00001039sd00006326* - ID_PRODUCT_FROM_DATABASE=SiS6326 GUI Accelerator - -pci:v00001039d00006326sv00001092sd00000A50* - ID_PRODUCT_FROM_DATABASE=SpeedStar A50 - -pci:v00001039d00006326sv00001092sd00000A70* - ID_PRODUCT_FROM_DATABASE=SpeedStar A70 - -pci:v00001039d00006326sv00001092sd00004910* - ID_PRODUCT_FROM_DATABASE=SpeedStar A70 - -pci:v00001039d00006326sv00001092sd00004920* - ID_PRODUCT_FROM_DATABASE=SpeedStar A70 - -pci:v00001039d00006326sv000010B0sd00006326* - ID_PRODUCT_FROM_DATABASE=S6110-B (AGP) - -pci:v00001039d00006326sv00001569sd00006326* - ID_PRODUCT_FROM_DATABASE=SiS6326 GUI Accelerator - -pci:v00001039d00006330* - ID_PRODUCT_FROM_DATABASE=661/741/760 PCI/AGP or 662/761Gx PCIE VGA Display Adapter - -pci:v00001039d00006330sv00001039sd00006330* - ID_PRODUCT_FROM_DATABASE=[M]661xX/[M]741[GX]/[M]760 PCI/AGP VGA Adapter - -pci:v00001039d00006330sv00001043sd00008113* - ID_PRODUCT_FROM_DATABASE=SiS Real 256E (ASUS P5S800-VM motherboard) - -pci:v00001039d00006330sv00001458sd0000D000* - ID_PRODUCT_FROM_DATABASE=SiS661FX GUI 2D/3D Accelerator - -pci:v00001039d00006330sv00001734sd00001099* - ID_PRODUCT_FROM_DATABASE=D2030-A1 - -pci:v00001039d00006350* - ID_PRODUCT_FROM_DATABASE=770/670 PCIE VGA Display Adapter - -pci:v00001039d00006351* - ID_PRODUCT_FROM_DATABASE=771/671 PCIE VGA Display Adapter - -pci:v00001039d00007001* - ID_PRODUCT_FROM_DATABASE=USB 1.1 Controller - -pci:v00001039d00007001sv00001019sd00000A14* - ID_PRODUCT_FROM_DATABASE=K7S5A motherboard - -pci:v00001039d00007001sv00001039sd00007000* - ID_PRODUCT_FROM_DATABASE=Onboard USB Controller - -pci:v00001039d00007001sv00001462sd00005470* - ID_PRODUCT_FROM_DATABASE=ECS K7SOM+ motherboard - -pci:v00001039d00007001sv00001462sd00007010* - ID_PRODUCT_FROM_DATABASE=MS-6701 motherboard - -pci:v00001039d00007001sv00001734sd00001095* - ID_PRODUCT_FROM_DATABASE=D2030-A1 Motherboard - -pci:v00001039d00007002* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Controller - -pci:v00001039d00007002sv00001462sd00005470* - ID_PRODUCT_FROM_DATABASE=K7SOM+ 5.2C Motherboard - -pci:v00001039d00007002sv00001462sd00007010* - ID_PRODUCT_FROM_DATABASE=MS-6701 motherboard - -pci:v00001039d00007002sv00001509sd00007002* - ID_PRODUCT_FROM_DATABASE=Onboard USB Controller - -pci:v00001039d00007002sv00001734sd00001095* - ID_PRODUCT_FROM_DATABASE=D2030-A1 - -pci:v00001039d00007007* - ID_PRODUCT_FROM_DATABASE=FireWire Controller - -pci:v00001039d00007007sv00001462sd0000701D* - ID_PRODUCT_FROM_DATABASE=MS-6701 - -pci:v00001039d00007012* - ID_PRODUCT_FROM_DATABASE=SiS7012 AC'97 Sound Controller - -pci:v00001039d00007012sv00001019sd00000F05* - ID_PRODUCT_FROM_DATABASE=A928 (i-Buddie) - -pci:v00001039d00007012sv00001039sd00007012* - ID_PRODUCT_FROM_DATABASE=SiS 7012 onboard [Asus P4SC-EA] AC'97 Sound Controller - -pci:v00001039d00007012sv00001043sd0000818F* - ID_PRODUCT_FROM_DATABASE=A8S-X Motherboard - -pci:v00001039d00007012sv000013F6sd00000300* - ID_PRODUCT_FROM_DATABASE=CMI9739(A) on ECS K7SOM+ motherboard - -pci:v00001039d00007012sv00001462sd00005850* - ID_PRODUCT_FROM_DATABASE=MSI 648 Max (MS-6585) - -pci:v00001039d00007012sv00001462sd00007010* - ID_PRODUCT_FROM_DATABASE=MS-6701 motherboard - -pci:v00001039d00007012sv000015BDsd00001001* - ID_PRODUCT_FROM_DATABASE=DFI 661FX motherboard - -pci:v00001039d00007012sv00001734sd0000109F* - ID_PRODUCT_FROM_DATABASE=D2030-A1 Motherboard - -pci:v00001039d00007012sv00001849sd00007012* - ID_PRODUCT_FROM_DATABASE=K7S41GX motherboard - -pci:v00001039d00007013* - ID_PRODUCT_FROM_DATABASE=AC'97 Modem Controller - -pci:v00001039d00007016* - ID_PRODUCT_FROM_DATABASE=SiS7016 PCI Fast Ethernet Adapter - -pci:v00001039d00007016sv00001039sd00007016* - ID_PRODUCT_FROM_DATABASE=SiS7016 10/100 Ethernet Adapter - -pci:v00001039d00007018* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv00001014sd000001B6* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv00001014sd000001B7* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv00001019sd00007018* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv00001025sd0000000E* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv00001025sd00000018* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv00001039sd00007018* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv00001043sd00001453* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv00001043sd0000800B* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv0000104Dsd000080E2* - ID_PRODUCT_FROM_DATABASE=VAIO PCV-J200 - -pci:v00001039d00007018sv00001054sd00007018* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv0000107Dsd00005330* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv0000107Dsd00005350* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv00001170sd00003209* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv00001462sd0000400A* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv000014A4sd00002089* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv000014CDsd00002194* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv000014FFsd00001100* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv0000152Dsd00008808* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv00001558sd00001103* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv00001558sd00002200* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv00001563sd00007018* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv000015C5sd00000111* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv0000270Fsd0000A171* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007018sv0000A0A0sd00000022* - ID_PRODUCT_FROM_DATABASE=SiS PCI Audio Accelerator - -pci:v00001039d00007019* - ID_PRODUCT_FROM_DATABASE=SiS7019 Audio Accelerator - -pci:v00001039d00007502* - ID_PRODUCT_FROM_DATABASE=Azalia Audio Controller - -pci:v0000103A* - ID_VENDOR_FROM_DATABASE=Seiko Epson Corporation - -pci:v0000103B* - ID_VENDOR_FROM_DATABASE=Tatung Corp. Of America - -pci:v0000103C* - ID_VENDOR_FROM_DATABASE=Hewlett-Packard Company - -pci:v0000103Cd00001005* - ID_PRODUCT_FROM_DATABASE=A4977A Visualize EG - -pci:v0000103Cd00001008* - ID_PRODUCT_FROM_DATABASE=Visualize FX - -pci:v0000103Cd00001028* - ID_PRODUCT_FROM_DATABASE=Tach TL Fibre Channel Host Adapter - -pci:v0000103Cd00001029* - ID_PRODUCT_FROM_DATABASE=Tach XL2 Fibre Channel Host Adapter - -pci:v0000103Cd00001029sv0000107Esd0000000F* - ID_PRODUCT_FROM_DATABASE=Interphase 5560 Fibre Channel Adapter - -pci:v0000103Cd00001029sv00009004sd00009210* - ID_PRODUCT_FROM_DATABASE=1Gb/2Gb Family Fibre Channel Controller - -pci:v0000103Cd00001029sv00009004sd00009211* - ID_PRODUCT_FROM_DATABASE=1Gb/2Gb Family Fibre Channel Controller - -pci:v0000103Cd0000102A* - ID_PRODUCT_FROM_DATABASE=Tach TS Fibre Channel Host Adapter - -pci:v0000103Cd0000102Asv0000107Esd0000000E* - ID_PRODUCT_FROM_DATABASE=Interphase 5540/5541 Fibre Channel Adapter - -pci:v0000103Cd0000102Asv00009004sd00009110* - ID_PRODUCT_FROM_DATABASE=1Gb/2Gb Family Fibre Channel Controller - -pci:v0000103Cd0000102Asv00009004sd00009111* - ID_PRODUCT_FROM_DATABASE=1Gb/2Gb Family Fibre Channel Controller - -pci:v0000103Cd00001030* - ID_PRODUCT_FROM_DATABASE=J2585A DeskDirect 10/100VG NIC - -pci:v0000103Cd00001031* - ID_PRODUCT_FROM_DATABASE=J2585B HP 10/100VG PCI LAN Adapter - -pci:v0000103Cd00001031sv0000103Csd00001040* - ID_PRODUCT_FROM_DATABASE=J2973A DeskDirect 10BaseT NIC - -pci:v0000103Cd00001031sv0000103Csd00001041* - ID_PRODUCT_FROM_DATABASE=J2585B DeskDirect 10/100VG NIC - -pci:v0000103Cd00001031sv0000103Csd00001042* - ID_PRODUCT_FROM_DATABASE=J2970A DeskDirect 10BaseT/2 NIC - -pci:v0000103Cd00001040* - ID_PRODUCT_FROM_DATABASE=J2973A DeskDirect 10BaseT NIC - -pci:v0000103Cd00001041* - ID_PRODUCT_FROM_DATABASE=J2585B DeskDirect 10/100 NIC - -pci:v0000103Cd00001042* - ID_PRODUCT_FROM_DATABASE=J2970A DeskDirect 10BaseT/2 NIC - -pci:v0000103Cd00001048* - ID_PRODUCT_FROM_DATABASE=Diva Serial [GSP] Multiport UART - -pci:v0000103Cd00001048sv0000103Csd00001049* - ID_PRODUCT_FROM_DATABASE=Tosca Console - -pci:v0000103Cd00001048sv0000103Csd0000104A* - ID_PRODUCT_FROM_DATABASE=Tosca Secondary - -pci:v0000103Cd00001048sv0000103Csd0000104B* - ID_PRODUCT_FROM_DATABASE=Maestro SP2 - -pci:v0000103Cd00001048sv0000103Csd00001223* - ID_PRODUCT_FROM_DATABASE=Superdome Console - -pci:v0000103Cd00001048sv0000103Csd00001226* - ID_PRODUCT_FROM_DATABASE=Keystone SP2 - -pci:v0000103Cd00001048sv0000103Csd00001227* - ID_PRODUCT_FROM_DATABASE=Powerbar SP2 - -pci:v0000103Cd00001048sv0000103Csd00001282* - ID_PRODUCT_FROM_DATABASE=Everest SP2 - -pci:v0000103Cd00001048sv0000103Csd00001301* - ID_PRODUCT_FROM_DATABASE=Diva RMP3 - -pci:v0000103Cd00001054* - ID_PRODUCT_FROM_DATABASE=PCI Local Bus Adapter - -pci:v0000103Cd00001064* - ID_PRODUCT_FROM_DATABASE=79C970 PCnet Ethernet Controller - -pci:v0000103Cd0000108B* - ID_PRODUCT_FROM_DATABASE=Visualize FXe - -pci:v0000103Cd000010C1* - ID_PRODUCT_FROM_DATABASE=NetServer Smart IRQ Router - -pci:v0000103Cd000010ED* - ID_PRODUCT_FROM_DATABASE=TopTools Remote Control - -pci:v0000103Cd000010F0* - ID_PRODUCT_FROM_DATABASE=rio System Bus Adapter - -pci:v0000103Cd000010F1* - ID_PRODUCT_FROM_DATABASE=rio I/O Controller - -pci:v0000103Cd00001219* - ID_PRODUCT_FROM_DATABASE=NetServer PCI Hot-Plug Controller - -pci:v0000103Cd0000121A* - ID_PRODUCT_FROM_DATABASE=NetServer SMIC Controller - -pci:v0000103Cd0000121B* - ID_PRODUCT_FROM_DATABASE=NetServer Legacy COM Port Decoder - -pci:v0000103Cd0000121C* - ID_PRODUCT_FROM_DATABASE=NetServer PCI COM Port Decoder - -pci:v0000103Cd00001229* - ID_PRODUCT_FROM_DATABASE=zx1 System Bus Adapter - -pci:v0000103Cd0000122A* - ID_PRODUCT_FROM_DATABASE=zx1 I/O Controller - -pci:v0000103Cd0000122E* - ID_PRODUCT_FROM_DATABASE=PCI-X Local Bus Adapter - -pci:v0000103Cd0000127B* - ID_PRODUCT_FROM_DATABASE=sx1000 System Bus Adapter - -pci:v0000103Cd0000127C* - ID_PRODUCT_FROM_DATABASE=sx1000 I/O Controller - -pci:v0000103Cd00001290* - ID_PRODUCT_FROM_DATABASE=Auxiliary Diva Serial Port - -pci:v0000103Cd00001290sv0000103Csd00001291* - ID_PRODUCT_FROM_DATABASE=Diva SP2 - -pci:v0000103Cd00001291* - ID_PRODUCT_FROM_DATABASE=Auxiliary Diva Serial Port - -pci:v0000103Cd000012B4* - ID_PRODUCT_FROM_DATABASE=zx1 QuickSilver AGP8x Local Bus Adapter - -pci:v0000103Cd000012EB* - ID_PRODUCT_FROM_DATABASE=sx2000 System Bus Adapter - -pci:v0000103Cd000012EC* - ID_PRODUCT_FROM_DATABASE=sx2000 I/O Controller - -pci:v0000103Cd000012EE* - ID_PRODUCT_FROM_DATABASE=PCI-X 2.0 Local Bus Adapter - -pci:v0000103Cd00001302* - ID_PRODUCT_FROM_DATABASE=RMP-3 Shared Memory Driver - -pci:v0000103Cd00001303* - ID_PRODUCT_FROM_DATABASE=RMP-3 (Remote Management Processor) - -pci:v0000103Cd00002910* - ID_PRODUCT_FROM_DATABASE=E2910A PCIBus Exerciser - -pci:v0000103Cd00002925* - ID_PRODUCT_FROM_DATABASE=E2925A 32 Bit, 33 MHzPCI Exerciser & Analyzer - -pci:v0000103Cd00003206* - ID_PRODUCT_FROM_DATABASE=Adaptec Embedded Serial ATA HostRAID - -pci:v0000103Cd00003220* - ID_PRODUCT_FROM_DATABASE=Smart Array P600 - -pci:v0000103Cd00003220sv0000103Csd00003225* - ID_PRODUCT_FROM_DATABASE=3 Gb/s SAS RAID - -pci:v0000103Cd00003230* - ID_PRODUCT_FROM_DATABASE=Smart Array Controller - -pci:v0000103Cd00003230sv0000103Csd00003223* - ID_PRODUCT_FROM_DATABASE=Smart Array P800 - -pci:v0000103Cd00003230sv0000103Csd00003234* - ID_PRODUCT_FROM_DATABASE=P400 SAS Controller - -pci:v0000103Cd00003230sv0000103Csd00003235* - ID_PRODUCT_FROM_DATABASE=P400i SAS Controller - -pci:v0000103Cd00003230sv0000103Csd00003237* - ID_PRODUCT_FROM_DATABASE=E500 SAS Controller - -pci:v0000103Cd00003230sv0000103Csd0000323D* - ID_PRODUCT_FROM_DATABASE=P700m SAS Controller - -pci:v0000103Cd00003238* - ID_PRODUCT_FROM_DATABASE=Smart Array E200i (SAS Controller) - -pci:v0000103Cd00003238sv0000103Csd00003211* - ID_PRODUCT_FROM_DATABASE=Smart Array E200i - -pci:v0000103Cd00003238sv0000103Csd00003212* - ID_PRODUCT_FROM_DATABASE=Smart Array E200 - -pci:v0000103Cd0000323A* - ID_PRODUCT_FROM_DATABASE=Smart Array G6 controllers - -pci:v0000103Cd0000323Asv0000103Csd00003241* - ID_PRODUCT_FROM_DATABASE=Smart Array P212 - -pci:v0000103Cd0000323Asv0000103Csd00003243* - ID_PRODUCT_FROM_DATABASE=Smart Array P410 - -pci:v0000103Cd0000323Asv0000103Csd00003245* - ID_PRODUCT_FROM_DATABASE=Smart Array P410i - -pci:v0000103Cd0000323Asv0000103Csd00003247* - ID_PRODUCT_FROM_DATABASE=Smart Array P411 - -pci:v0000103Cd0000323Asv0000103Csd00003249* - ID_PRODUCT_FROM_DATABASE=Smart Array P812 - -pci:v0000103Cd0000323Asv0000103Csd0000324A* - ID_PRODUCT_FROM_DATABASE=HP Smart Array 712m (Mezzanine RAID controller) - -pci:v0000103Cd0000323Asv0000103Csd0000324B* - ID_PRODUCT_FROM_DATABASE=Smart Array P711m (Mezzanine RAID controller) - -pci:v0000103Cd0000323B* - ID_PRODUCT_FROM_DATABASE=Smart Array Gen8 Controllers - -pci:v0000103Cd0000323Bsv0000103Csd00003350* - ID_PRODUCT_FROM_DATABASE=P222 - -pci:v0000103Cd0000323Bsv0000103Csd00003351* - ID_PRODUCT_FROM_DATABASE=P420 - -pci:v0000103Cd0000323Bsv0000103Csd00003352* - ID_PRODUCT_FROM_DATABASE=P421 - -pci:v0000103Cd0000323Bsv0000103Csd00003354* - ID_PRODUCT_FROM_DATABASE=P420i - -pci:v0000103Cd0000323Bsv0000103Csd00003355* - ID_PRODUCT_FROM_DATABASE=P220i - -pci:v0000103Cd0000323C* - ID_PRODUCT_FROM_DATABASE=Smart Array Gen8+ Controllers - -pci:v0000103Cd0000323Csv0000103Csd00001920* - ID_PRODUCT_FROM_DATABASE=Smart Array - -pci:v0000103Cd0000323Csv0000103Csd00001921* - ID_PRODUCT_FROM_DATABASE=Smart Array - -pci:v0000103Cd0000323Csv0000103Csd00001922* - ID_PRODUCT_FROM_DATABASE=Smart Array - -pci:v0000103Cd0000323Csv0000103Csd00001923* - ID_PRODUCT_FROM_DATABASE=Smart Array - -pci:v0000103Cd0000323Csv0000103Csd00001924* - ID_PRODUCT_FROM_DATABASE=Smart Array - -pci:v0000103Cd0000323Csv0000103Csd00001925* - ID_PRODUCT_FROM_DATABASE=Smart Array - -pci:v0000103Cd0000323Csv0000103Csd00001926* - ID_PRODUCT_FROM_DATABASE=Smart Array - -pci:v0000103Cd0000323Csv0000103Csd00001927* - ID_PRODUCT_FROM_DATABASE=Smart Array - -pci:v0000103Cd0000323Csv0000103Csd00001928* - ID_PRODUCT_FROM_DATABASE=Smart Array - -pci:v0000103Cd00003300* - ID_PRODUCT_FROM_DATABASE=Integrated Lights-Out Standard Virtual USB Controller - -pci:v0000103Cd00003300sv0000103Csd00003304* - ID_PRODUCT_FROM_DATABASE=iLO2 - -pci:v0000103Cd00003300sv0000103Csd00003305* - ID_PRODUCT_FROM_DATABASE=iLO2 - -pci:v0000103Cd00003300sv0000103Csd00003309* - ID_PRODUCT_FROM_DATABASE=iLO2 GXL/iLO3 GXE - -pci:v0000103Cd00003300sv0000103Csd0000330E* - ID_PRODUCT_FROM_DATABASE=iLO3 - -pci:v0000103Cd00003300sv0000103Csd00003381* - ID_PRODUCT_FROM_DATABASE=iLO4 - -pci:v0000103Cd00003301* - ID_PRODUCT_FROM_DATABASE=Integrated Lights-Out Standard Serial Port - -pci:v0000103Cd00003301sv0000103Csd00003304* - ID_PRODUCT_FROM_DATABASE=iLO2 - -pci:v0000103Cd00003301sv0000103Csd00003305* - ID_PRODUCT_FROM_DATABASE=iLO2 - -pci:v0000103Cd00003301sv0000103Csd0000330E* - ID_PRODUCT_FROM_DATABASE=iLO3 - -pci:v0000103Cd00003301sv0000103Csd00003381* - ID_PRODUCT_FROM_DATABASE=iLO4 - -pci:v0000103Cd00003302* - ID_PRODUCT_FROM_DATABASE=Integrated Lights-Out Standard KCS Interface - -pci:v0000103Cd00003302sv0000103Csd00003304* - ID_PRODUCT_FROM_DATABASE=iLO2 - -pci:v0000103Cd00003302sv0000103Csd00003305* - ID_PRODUCT_FROM_DATABASE=iLO2 - -pci:v0000103Cd00003302sv0000103Csd0000330E* - ID_PRODUCT_FROM_DATABASE=iLO3 - -pci:v0000103Cd00003302sv0000103Csd00003381* - ID_PRODUCT_FROM_DATABASE=iLO4 - -pci:v0000103Cd00003305* - ID_PRODUCT_FROM_DATABASE=Integrated Lights-Out (iLO2) Controller - -pci:v0000103Cd00003306* - ID_PRODUCT_FROM_DATABASE=Integrated Lights-Out Standard Slave Instrumentation & System Support - -pci:v0000103Cd00003306sv0000103Csd0000330E* - ID_PRODUCT_FROM_DATABASE=iLO3 - -pci:v0000103Cd00003306sv0000103Csd00003381* - ID_PRODUCT_FROM_DATABASE=iLO4 - -pci:v0000103Cd00003307* - ID_PRODUCT_FROM_DATABASE=Integrated Lights-Out Standard Management Processor Support and Messaging - -pci:v0000103Cd00003307sv0000103Csd00003309* - ID_PRODUCT_FROM_DATABASE=iLO 2 - -pci:v0000103Cd00003307sv0000103Csd0000330E* - ID_PRODUCT_FROM_DATABASE=iLO3 - -pci:v0000103Cd00003307sv0000103Csd00003381* - ID_PRODUCT_FROM_DATABASE=iLO4 - -pci:v0000103Cd00003308* - ID_PRODUCT_FROM_DATABASE=Integrated Lights-Out Standard MS Watchdog Timer - -pci:v0000103Cd00003308sv0000103Csd0000330E* - ID_PRODUCT_FROM_DATABASE=iLO3 - -pci:v0000103Cd00003308sv0000103Csd00003381* - ID_PRODUCT_FROM_DATABASE=iLO4 - -pci:v0000103Cd0000402F* - ID_PRODUCT_FROM_DATABASE=PCIe Root Port - -pci:v0000103Cd00004030* - ID_PRODUCT_FROM_DATABASE=zx2 System Bus Adapter - -pci:v0000103Cd00004031* - ID_PRODUCT_FROM_DATABASE=zx2 I/O Controller - -pci:v0000103Cd00004037* - ID_PRODUCT_FROM_DATABASE=PCIe Local Bus Adapter - -pci:v0000103Cd0000403B* - ID_PRODUCT_FROM_DATABASE=PCIe Root Port - -pci:v0000103Cd000060E8* - ID_PRODUCT_FROM_DATABASE=NetRAID-2M : ZX1/M (OEM AMI MegaRAID 493) - -pci:v0000103E* - ID_VENDOR_FROM_DATABASE=Solliday Engineering - -pci:v0000103F* - ID_VENDOR_FROM_DATABASE=Synopsys/Logic Modeling Group - -pci:v00001040* - ID_VENDOR_FROM_DATABASE=Accelgraphics Inc. - -pci:v00001041* - ID_VENDOR_FROM_DATABASE=Computrend - -pci:v00001042* - ID_VENDOR_FROM_DATABASE=Micron - -pci:v00001042d00001000* - ID_PRODUCT_FROM_DATABASE=PC Tech RZ1000 - -pci:v00001042d00001001* - ID_PRODUCT_FROM_DATABASE=PC Tech RZ1001 - -pci:v00001042d00003000* - ID_PRODUCT_FROM_DATABASE=Samurai_0 - -pci:v00001042d00003010* - ID_PRODUCT_FROM_DATABASE=Samurai_1 - -pci:v00001042d00003020* - ID_PRODUCT_FROM_DATABASE=Samurai_IDE - -pci:v00001043* - ID_VENDOR_FROM_DATABASE=ASUSTeK Computer Inc. - -pci:v00001043d00000675* - ID_PRODUCT_FROM_DATABASE=ISDNLink P-IN100-ST-D - -pci:v00001043d00000675sv00000675sd00001704* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter (PCI Bus, D, C) - -pci:v00001043d00000675sv00000675sd00001707* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) - -pci:v00001043d00000675sv000010CFsd0000105E* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) - -pci:v00001043d00009602* - ID_PRODUCT_FROM_DATABASE=AMD RS780/RS880 PCI to PCI bridge (int gfx) - -pci:v00001043d00009602sv00001043sd000083A2* - ID_PRODUCT_FROM_DATABASE=M4A785TD Motherboard - -pci:v00001044* - ID_VENDOR_FROM_DATABASE=Adaptec (formerly DPT) - -pci:v00001044d00001012* - ID_PRODUCT_FROM_DATABASE=Domino RAID Engine - -pci:v00001044d0000A400* - ID_PRODUCT_FROM_DATABASE=SmartCache/Raid I-IV Controller - -pci:v00001044d0000A500* - ID_PRODUCT_FROM_DATABASE=PCI Bridge - -pci:v00001044d0000A501* - ID_PRODUCT_FROM_DATABASE=SmartRAID V Controller - -pci:v00001044d0000A501sv00001044sd0000C001* - ID_PRODUCT_FROM_DATABASE=PM1554U2 Ultra2 Single Channel - -pci:v00001044d0000A501sv00001044sd0000C002* - ID_PRODUCT_FROM_DATABASE=PM1654U2 Ultra2 Single Channel - -pci:v00001044d0000A501sv00001044sd0000C003* - ID_PRODUCT_FROM_DATABASE=PM1564U3 Ultra3 Single Channel - -pci:v00001044d0000A501sv00001044sd0000C004* - ID_PRODUCT_FROM_DATABASE=PM1564U3 Ultra3 Dual Channel - -pci:v00001044d0000A501sv00001044sd0000C005* - ID_PRODUCT_FROM_DATABASE=PM1554U2 Ultra2 Single Channel (NON ACPI) - -pci:v00001044d0000A501sv00001044sd0000C00A* - ID_PRODUCT_FROM_DATABASE=PM2554U2 Ultra2 Single Channel - -pci:v00001044d0000A501sv00001044sd0000C00B* - ID_PRODUCT_FROM_DATABASE=PM2654U2 Ultra2 Single Channel - -pci:v00001044d0000A501sv00001044sd0000C00C* - ID_PRODUCT_FROM_DATABASE=PM2664U3 Ultra3 Single Channel - -pci:v00001044d0000A501sv00001044sd0000C00D* - ID_PRODUCT_FROM_DATABASE=PM2664U3 Ultra3 Dual Channel - -pci:v00001044d0000A501sv00001044sd0000C00E* - ID_PRODUCT_FROM_DATABASE=PM2554U2 Ultra2 Single Channel (NON ACPI) - -pci:v00001044d0000A501sv00001044sd0000C00F* - ID_PRODUCT_FROM_DATABASE=PM2654U2 Ultra2 Single Channel (NON ACPI) - -pci:v00001044d0000A501sv00001044sd0000C014* - ID_PRODUCT_FROM_DATABASE=PM3754U2 Ultra2 Single Channel (NON ACPI) - -pci:v00001044d0000A501sv00001044sd0000C015* - ID_PRODUCT_FROM_DATABASE=PM3755U2B Ultra2 Single Channel (NON ACPI) - -pci:v00001044d0000A501sv00001044sd0000C016* - ID_PRODUCT_FROM_DATABASE=PM3755F Fibre Channel (NON ACPI) - -pci:v00001044d0000A501sv00001044sd0000C01E* - ID_PRODUCT_FROM_DATABASE=PM3757U2 Ultra2 Single Channel - -pci:v00001044d0000A501sv00001044sd0000C01F* - ID_PRODUCT_FROM_DATABASE=PM3757U2 Ultra2 Dual Channel - -pci:v00001044d0000A501sv00001044sd0000C020* - ID_PRODUCT_FROM_DATABASE=PM3767U3 Ultra3 Dual Channel - -pci:v00001044d0000A501sv00001044sd0000C021* - ID_PRODUCT_FROM_DATABASE=PM3767U3 Ultra3 Quad Channel - -pci:v00001044d0000A501sv00001044sd0000C028* - ID_PRODUCT_FROM_DATABASE=PM2865U3 Ultra3 Single Channel - -pci:v00001044d0000A501sv00001044sd0000C029* - ID_PRODUCT_FROM_DATABASE=PM2865U3 Ultra3 Dual Channel - -pci:v00001044d0000A501sv00001044sd0000C02A* - ID_PRODUCT_FROM_DATABASE=PM2865F Fibre Channel - -pci:v00001044d0000A501sv00001044sd0000C03C* - ID_PRODUCT_FROM_DATABASE=2000S Ultra3 Single Channel - -pci:v00001044d0000A501sv00001044sd0000C03D* - ID_PRODUCT_FROM_DATABASE=2000S Ultra3 Dual Channel - -pci:v00001044d0000A501sv00001044sd0000C03E* - ID_PRODUCT_FROM_DATABASE=2000F Fibre Channel - -pci:v00001044d0000A501sv00001044sd0000C046* - ID_PRODUCT_FROM_DATABASE=3000S Ultra3 Single Channel - -pci:v00001044d0000A501sv00001044sd0000C047* - ID_PRODUCT_FROM_DATABASE=3000S Ultra3 Dual Channel - -pci:v00001044d0000A501sv00001044sd0000C048* - ID_PRODUCT_FROM_DATABASE=3000F Fibre Channel - -pci:v00001044d0000A501sv00001044sd0000C050* - ID_PRODUCT_FROM_DATABASE=5000S Ultra3 Single Channel - -pci:v00001044d0000A501sv00001044sd0000C051* - ID_PRODUCT_FROM_DATABASE=5000S Ultra3 Dual Channel - -pci:v00001044d0000A501sv00001044sd0000C052* - ID_PRODUCT_FROM_DATABASE=5000F Fibre Channel - -pci:v00001044d0000A501sv00001044sd0000C05A* - ID_PRODUCT_FROM_DATABASE=2400A UDMA Four Channel - -pci:v00001044d0000A501sv00001044sd0000C05B* - ID_PRODUCT_FROM_DATABASE=2400A UDMA Four Channel DAC - -pci:v00001044d0000A501sv00001044sd0000C064* - ID_PRODUCT_FROM_DATABASE=3010S Ultra3 Dual Channel - -pci:v00001044d0000A501sv00001044sd0000C065* - ID_PRODUCT_FROM_DATABASE=3410S Ultra160 Four Channel - -pci:v00001044d0000A501sv00001044sd0000C066* - ID_PRODUCT_FROM_DATABASE=3010S Fibre Channel - -pci:v00001044d0000A511* - ID_PRODUCT_FROM_DATABASE=SmartRAID V Controller - -pci:v00001044d0000A511sv00001044sd0000C032* - ID_PRODUCT_FROM_DATABASE=ASR-2005S I2O Zero Channel - -pci:v00001044d0000A511sv00001044sd0000C035* - ID_PRODUCT_FROM_DATABASE=ASR-2010S I2O Zero Channel - -pci:v00001044d0000C066* - ID_PRODUCT_FROM_DATABASE=3010S Ultra3 Dual Channel - -pci:v00001045* - ID_VENDOR_FROM_DATABASE=OPTi Inc. - -pci:v00001045d0000A0F8* - ID_PRODUCT_FROM_DATABASE=82C750 [Vendetta] USB Controller - -pci:v00001045d0000C101* - ID_PRODUCT_FROM_DATABASE=92C264 - -pci:v00001045d0000C178* - ID_PRODUCT_FROM_DATABASE=92C178 - -pci:v00001045d0000C556* - ID_PRODUCT_FROM_DATABASE=82X556 [Viper] - -pci:v00001045d0000C557* - ID_PRODUCT_FROM_DATABASE=82C557 [Viper-M] - -pci:v00001045d0000C558* - ID_PRODUCT_FROM_DATABASE=82C558 [Viper-M ISA+IDE] - -pci:v00001045d0000C567* - ID_PRODUCT_FROM_DATABASE=82C750 [Vendetta], device 0 - -pci:v00001045d0000C568* - ID_PRODUCT_FROM_DATABASE=82C750 [Vendetta], device 1 - -pci:v00001045d0000C569* - ID_PRODUCT_FROM_DATABASE=82C579 [Viper XPress+ Chipset] - -pci:v00001045d0000C621* - ID_PRODUCT_FROM_DATABASE=82C621 [Viper-M/N+] - -pci:v00001045d0000C700* - ID_PRODUCT_FROM_DATABASE=82C700 [FireStar] - -pci:v00001045d0000C701* - ID_PRODUCT_FROM_DATABASE=82C701 [FireStar Plus] - -pci:v00001045d0000C814* - ID_PRODUCT_FROM_DATABASE=82C814 [Firebridge 1] - -pci:v00001045d0000C822* - ID_PRODUCT_FROM_DATABASE=82C822 - -pci:v00001045d0000C824* - ID_PRODUCT_FROM_DATABASE=82C824 - -pci:v00001045d0000C825* - ID_PRODUCT_FROM_DATABASE=82C825 [Firebridge 2] - -pci:v00001045d0000C832* - ID_PRODUCT_FROM_DATABASE=82C832 - -pci:v00001045d0000C861* - ID_PRODUCT_FROM_DATABASE=82C861 - -pci:v00001045d0000C881* - ID_PRODUCT_FROM_DATABASE=82C881 [FireLink] 1394 OHCI Link Controller - -pci:v00001045d0000C895* - ID_PRODUCT_FROM_DATABASE=82C895 - -pci:v00001045d0000C935* - ID_PRODUCT_FROM_DATABASE=EV1935 ECTIVA MachOne PCIAudio - -pci:v00001045d0000D568* - ID_PRODUCT_FROM_DATABASE=82C825 [Firebridge 2] - -pci:v00001045d0000D721* - ID_PRODUCT_FROM_DATABASE=IDE [FireStar] - -pci:v00001046* - ID_VENDOR_FROM_DATABASE=IPC Corporation, Ltd. - -pci:v00001047* - ID_VENDOR_FROM_DATABASE=Genoa Systems Corp - -pci:v00001048* - ID_VENDOR_FROM_DATABASE=Elsa AG - -pci:v00001048d00000C60* - ID_PRODUCT_FROM_DATABASE=Gladiac MX - -pci:v00001048d00000D22* - ID_PRODUCT_FROM_DATABASE=Quadro4 900XGL [ELSA GLoria4 900XGL] - -pci:v00001048d00001000* - ID_PRODUCT_FROM_DATABASE=QuickStep 1000 - -pci:v00001048d00003000* - ID_PRODUCT_FROM_DATABASE=QuickStep 3000 - -pci:v00001048d00008901* - ID_PRODUCT_FROM_DATABASE=Gloria XL - -pci:v00001048d00008901sv00001048sd00000935* - ID_PRODUCT_FROM_DATABASE=GLoria XL (Virge) - -pci:v00001049* - ID_VENDOR_FROM_DATABASE=Fountain Technologies, Inc. - -pci:v0000104A* - ID_VENDOR_FROM_DATABASE=STMicroelectronics - -pci:v0000104Ad00000000* - ID_PRODUCT_FROM_DATABASE=STLS2F Host Bridge - -pci:v0000104Ad00000008* - ID_PRODUCT_FROM_DATABASE=STG 2000X - -pci:v0000104Ad00000009* - ID_PRODUCT_FROM_DATABASE=STG 1764X - -pci:v0000104Ad00000010* - ID_PRODUCT_FROM_DATABASE=STG4000 [3D Prophet Kyro Series] - -pci:v0000104Ad00000010sv0000104Asd00004018* - ID_PRODUCT_FROM_DATABASE=ST PowerVR Kyro (64MB AGP TVO) - -pci:v0000104Ad00000010sv00001681sd00000028* - ID_PRODUCT_FROM_DATABASE=3D Prophet 4000XT - -pci:v0000104Ad00000010sv00001681sd0000C010* - ID_PRODUCT_FROM_DATABASE=3D Prophet 4500 TV-Out - -pci:v0000104Ad00000010sv00001681sd0000C069* - ID_PRODUCT_FROM_DATABASE=3D Prophet 4000XT - -pci:v0000104Ad00000201* - ID_PRODUCT_FROM_DATABASE=STPC Vega Northbridge - -pci:v0000104Ad00000209* - ID_PRODUCT_FROM_DATABASE=STPC Consumer/Industrial North- and Southbridge - -pci:v0000104Ad0000020A* - ID_PRODUCT_FROM_DATABASE=STPC Atlas/ConsumerS/Consumer IIA Northbridge - -pci:v0000104Ad0000020B* - ID_PRODUCT_FROM_DATABASE=STPC Consumer II ISA Bridge - -pci:v0000104Ad00000210* - ID_PRODUCT_FROM_DATABASE=STPC Atlas ISA Bridge - -pci:v0000104Ad0000021A* - ID_PRODUCT_FROM_DATABASE=STPC Consumer S Southbridge - -pci:v0000104Ad0000021B* - ID_PRODUCT_FROM_DATABASE=STPC Consumer IIA Southbridge - -pci:v0000104Ad00000220* - ID_PRODUCT_FROM_DATABASE=STPC Industrial PCI to PCCard bridge - -pci:v0000104Ad00000228* - ID_PRODUCT_FROM_DATABASE=STPC Atlas IDE - -pci:v0000104Ad00000229* - ID_PRODUCT_FROM_DATABASE=STPC Vega IDE - -pci:v0000104Ad00000230* - ID_PRODUCT_FROM_DATABASE=STPC Atlas/Vega OHCI USB Controller - -pci:v0000104Ad00000238* - ID_PRODUCT_FROM_DATABASE=STPC Vega LAN - -pci:v0000104Ad00000500* - ID_PRODUCT_FROM_DATABASE=ST70137 [Unicorn] ADSL DMT Transceiver - -pci:v0000104Ad00000500sv0000104Asd00000500* - ID_PRODUCT_FROM_DATABASE=BeWAN ADSL PCI st - -pci:v0000104Ad00000564* - ID_PRODUCT_FROM_DATABASE=STPC Client Northbridge - -pci:v0000104Ad00000981* - ID_PRODUCT_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet - -pci:v0000104Ad00001746* - ID_PRODUCT_FROM_DATABASE=STG 1764X - -pci:v0000104Ad00002774* - ID_PRODUCT_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet - -pci:v0000104Ad00003520* - ID_PRODUCT_FROM_DATABASE=MPEG-II decoder card - -pci:v0000104Ad000055CC* - ID_PRODUCT_FROM_DATABASE=STPC Client Southbridge - -pci:v0000104B* - ID_VENDOR_FROM_DATABASE=BusLogic - -pci:v0000104Bd00000140* - ID_PRODUCT_FROM_DATABASE=BT-946C (old) [multimaster 01] - -pci:v0000104Bd00001040* - ID_PRODUCT_FROM_DATABASE=BT-946C (BA80C30) [MultiMaster 10] - -pci:v0000104Bd00008130* - ID_PRODUCT_FROM_DATABASE=Flashpoint LT - -pci:v0000104C* - ID_VENDOR_FROM_DATABASE=Texas Instruments - -pci:v0000104Cd00000500* - ID_PRODUCT_FROM_DATABASE=100 MBit LAN Controller - -pci:v0000104Cd00000508* - ID_PRODUCT_FROM_DATABASE=TMS380C2X Compressor Interface - -pci:v0000104Cd00001000* - ID_PRODUCT_FROM_DATABASE=Eagle i/f AS - -pci:v0000104Cd0000104C* - ID_PRODUCT_FROM_DATABASE=PCI1510 PC card Cardbus Controller - -pci:v0000104Cd00003D04* - ID_PRODUCT_FROM_DATABASE=TVP4010 [Permedia] - -pci:v0000104Cd00003D07* - ID_PRODUCT_FROM_DATABASE=TVP4020 [Permedia 2] - -pci:v0000104Cd00003D07sv00001011sd00004D10* - ID_PRODUCT_FROM_DATABASE=Comet - -pci:v0000104Cd00003D07sv00001040sd0000000F* - ID_PRODUCT_FROM_DATABASE=AccelStar II - -pci:v0000104Cd00003D07sv00001040sd00000011* - ID_PRODUCT_FROM_DATABASE=AccelStar II - -pci:v0000104Cd00003D07sv00001048sd00000A31* - ID_PRODUCT_FROM_DATABASE=WINNER 2000 - -pci:v0000104Cd00003D07sv00001048sd00000A32* - ID_PRODUCT_FROM_DATABASE=GLoria Synergy - -pci:v0000104Cd00003D07sv00001048sd00000A34* - ID_PRODUCT_FROM_DATABASE=GLoria Synergy - -pci:v0000104Cd00003D07sv00001048sd00000A35* - ID_PRODUCT_FROM_DATABASE=GLoria Synergy - -pci:v0000104Cd00003D07sv00001048sd00000A36* - ID_PRODUCT_FROM_DATABASE=GLoria Synergy - -pci:v0000104Cd00003D07sv00001048sd00000A43* - ID_PRODUCT_FROM_DATABASE=GLoria Synergy - -pci:v0000104Cd00003D07sv00001048sd00000A44* - ID_PRODUCT_FROM_DATABASE=GLoria Synergy - -pci:v0000104Cd00003D07sv0000107Dsd00002633* - ID_PRODUCT_FROM_DATABASE=WinFast 3D L2300 - -pci:v0000104Cd00003D07sv00001092sd00000126* - ID_PRODUCT_FROM_DATABASE=FIRE GL 1000 PRO - -pci:v0000104Cd00003D07sv00001092sd00000127* - ID_PRODUCT_FROM_DATABASE=FIRE GL 1000 PRO - -pci:v0000104Cd00003D07sv00001092sd00000136* - ID_PRODUCT_FROM_DATABASE=FIRE GL 1000 PRO - -pci:v0000104Cd00003D07sv00001092sd00000141* - ID_PRODUCT_FROM_DATABASE=FIRE GL 1000 PRO - -pci:v0000104Cd00003D07sv00001092sd00000146* - ID_PRODUCT_FROM_DATABASE=FIRE GL 1000 PRO - -pci:v0000104Cd00003D07sv00001092sd00000148* - ID_PRODUCT_FROM_DATABASE=FIRE GL 1000 PRO - -pci:v0000104Cd00003D07sv00001092sd00000149* - ID_PRODUCT_FROM_DATABASE=FIRE GL 1000 PRO - -pci:v0000104Cd00003D07sv00001092sd00000152* - ID_PRODUCT_FROM_DATABASE=FIRE GL 1000 PRO - -pci:v0000104Cd00003D07sv00001092sd00000154* - ID_PRODUCT_FROM_DATABASE=FIRE GL 1000 PRO - -pci:v0000104Cd00003D07sv00001092sd00000155* - ID_PRODUCT_FROM_DATABASE=FIRE GL 1000 PRO - -pci:v0000104Cd00003D07sv00001092sd00000156* - ID_PRODUCT_FROM_DATABASE=FIRE GL 1000 PRO - -pci:v0000104Cd00003D07sv00001092sd00000157* - ID_PRODUCT_FROM_DATABASE=FIRE GL 1000 PRO - -pci:v0000104Cd00003D07sv00001097sd00003D01* - ID_PRODUCT_FROM_DATABASE=Jeronimo Pro - -pci:v0000104Cd00003D07sv00001102sd0000100F* - ID_PRODUCT_FROM_DATABASE=Graphics Blaster Extreme - -pci:v0000104Cd00003D07sv00003D3Dsd00000100* - ID_PRODUCT_FROM_DATABASE=Reference Permedia 2 3D - -pci:v0000104Cd00008000* - ID_PRODUCT_FROM_DATABASE=PCILynx/PCILynx2 IEEE 1394 Link Layer Controller - -pci:v0000104Cd00008000sv0000105Esd00008003* - ID_PRODUCT_FROM_DATABASE=FireBoard200 - -pci:v0000104Cd00008000sv00001443sd00008003* - ID_PRODUCT_FROM_DATABASE=FireBoard200 - -pci:v0000104Cd00008000sv00001443sd00008005* - ID_PRODUCT_FROM_DATABASE=FireBoard400 - -pci:v0000104Cd00008000sv00001443sd00008006* - ID_PRODUCT_FROM_DATABASE=FireBoard400 - -pci:v0000104Cd00008000sv0000E4BFsd00001010* - ID_PRODUCT_FROM_DATABASE=CF1-1-SNARE - -pci:v0000104Cd00008000sv0000E4BFsd00001020* - ID_PRODUCT_FROM_DATABASE=CF1-2-SNARE - -pci:v0000104Cd00008000sv0000E4BFsd00001040* - ID_PRODUCT_FROM_DATABASE=FireCompact400 - -pci:v0000104Cd00008009* - ID_PRODUCT_FROM_DATABASE=TSB12LV22 IEEE-1394 Controller - -pci:v0000104Cd00008009sv0000104Dsd00008032* - ID_PRODUCT_FROM_DATABASE=8032 OHCI i.LINK (IEEE 1394) Controller - -pci:v0000104Cd00008009sv00001443sd00008010* - ID_PRODUCT_FROM_DATABASE=FireBoard400-OHCI - -pci:v0000104Cd00008017* - ID_PRODUCT_FROM_DATABASE=PCI4410 FireWire Controller - -pci:v0000104Cd00008019* - ID_PRODUCT_FROM_DATABASE=TSB12LV23 IEEE-1394 Controller - -pci:v0000104Cd00008019sv000011BDsd0000000A* - ID_PRODUCT_FROM_DATABASE=Studio DV500-1394 - -pci:v0000104Cd00008019sv000011BDsd0000000E* - ID_PRODUCT_FROM_DATABASE=Studio DV - -pci:v0000104Cd00008019sv00001443sd00008010* - ID_PRODUCT_FROM_DATABASE=FireBoard400-OHCI - -pci:v0000104Cd00008019sv0000E4BFsd00001010* - ID_PRODUCT_FROM_DATABASE=CF2-1-CYMBAL - -pci:v0000104Cd00008020* - ID_PRODUCT_FROM_DATABASE=TSB12LV26 IEEE-1394 Controller (Link) - -pci:v0000104Cd00008020sv00001028sd000000D8* - ID_PRODUCT_FROM_DATABASE=Precision 530 - -pci:v0000104Cd00008020sv0000104Dsd000080E2* - ID_PRODUCT_FROM_DATABASE=VAIO PCV-J200 - -pci:v0000104Cd00008020sv000011BDsd0000000F* - ID_PRODUCT_FROM_DATABASE=Studio DV500-1394 - -pci:v0000104Cd00008020sv000011BDsd0000001C* - ID_PRODUCT_FROM_DATABASE=Excalibur 4.1 - -pci:v0000104Cd00008020sv00001443sd00008010* - ID_PRODUCT_FROM_DATABASE=FireBoard400-OHCI - -pci:v0000104Cd00008021* - ID_PRODUCT_FROM_DATABASE=TSB43AA22 IEEE-1394 Controller (PHY/Link Integrated) - -pci:v0000104Cd00008021sv0000104Dsd000080DF* - ID_PRODUCT_FROM_DATABASE=Vaio PCG-FX403 - -pci:v0000104Cd00008021sv0000104Dsd000080E7* - ID_PRODUCT_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - -pci:v0000104Cd00008022* - ID_PRODUCT_FROM_DATABASE=TSB43AB22 IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] - -pci:v0000104Cd00008022sv0000104Csd00008023* - ID_PRODUCT_FROM_DATABASE=TSB43AB22/A IEEE-1394a-2000 Controller (PHY/Link) - -pci:v0000104Cd00008023* - ID_PRODUCT_FROM_DATABASE=TSB43AB22A IEEE-1394a-2000 Controller (PHY/Link) [iOHCI-Lynx] - -pci:v0000104Cd00008023sv0000103Csd0000088C* - ID_PRODUCT_FROM_DATABASE=NC8000 laptop - -pci:v0000104Cd00008023sv00001043sd0000808B* - ID_PRODUCT_FROM_DATABASE=K8N4-E Mainboard - -pci:v0000104Cd00008023sv00001043sd0000815B* - ID_PRODUCT_FROM_DATABASE=P5W DH Deluxe Motherboard - -pci:v0000104Cd00008023sv00001443sd00008023* - ID_PRODUCT_FROM_DATABASE=FireCard400 - -pci:v0000104Cd00008023sv00008086sd00005044* - ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP - -pci:v0000104Cd00008024* - ID_PRODUCT_FROM_DATABASE=TSB43AB23 IEEE-1394a-2000 Controller (PHY/Link) - -pci:v0000104Cd00008024sv0000107Dsd00006620* - ID_PRODUCT_FROM_DATABASE=Winfast DV2000 FireWire Controller - -pci:v0000104Cd00008024sv00001443sd00008024* - ID_PRODUCT_FROM_DATABASE=FireBoard Blue - -pci:v0000104Cd00008024sv00001458sd00001000* - ID_PRODUCT_FROM_DATABASE=Motherboard - -pci:v0000104Cd00008025* - ID_PRODUCT_FROM_DATABASE=TSB82AA2 IEEE-1394b Link Layer Controller - -pci:v0000104Cd00008025sv00001043sd0000813C* - ID_PRODUCT_FROM_DATABASE=P5P series mainboard - -pci:v0000104Cd00008025sv00001443sd00008025* - ID_PRODUCT_FROM_DATABASE=FireBoard800 - -pci:v0000104Cd00008025sv00001458sd00001000* - ID_PRODUCT_FROM_DATABASE=GA-K8N Ultra-9 Mainboard - -pci:v0000104Cd00008025sv00001546sd00008025* - ID_PRODUCT_FROM_DATABASE=FWB-PCI01 - -pci:v0000104Cd00008025sv000017FCsd00008025* - ID_PRODUCT_FROM_DATABASE=GIC3800 - -pci:v0000104Cd00008026* - ID_PRODUCT_FROM_DATABASE=TSB43AB21 IEEE-1394a-2000 Controller (PHY/Link) - -pci:v0000104Cd00008026sv00001025sd00000035* - ID_PRODUCT_FROM_DATABASE=TravelMate 660 - -pci:v0000104Cd00008026sv00001025sd0000003C* - ID_PRODUCT_FROM_DATABASE=Aspire 2001WLCi (Compaq CL50 motherboard) - -pci:v0000104Cd00008026sv0000103Csd00000025* - ID_PRODUCT_FROM_DATABASE=XE4500 Notebook - -pci:v0000104Cd00008026sv0000103Csd0000006A* - ID_PRODUCT_FROM_DATABASE=NX9500 - -pci:v0000104Cd00008026sv00001043sd0000808D* - ID_PRODUCT_FROM_DATABASE=A7V333 mainboard. - -pci:v0000104Cd00008027* - ID_PRODUCT_FROM_DATABASE=PCI4451 IEEE-1394 Controller - -pci:v0000104Cd00008027sv00001028sd000000E5* - ID_PRODUCT_FROM_DATABASE=Latitude C810 - -pci:v0000104Cd00008027sv00001028sd000000E6* - ID_PRODUCT_FROM_DATABASE=PCI4451 IEEE-1394 Controller (Dell Inspiron 8100) - -pci:v0000104Cd00008029* - ID_PRODUCT_FROM_DATABASE=PCI4510 IEEE-1394 Controller - -pci:v0000104Cd00008029sv00001028sd00000163* - ID_PRODUCT_FROM_DATABASE=Latitude D505 - -pci:v0000104Cd00008029sv00001028sd00000196* - ID_PRODUCT_FROM_DATABASE=Inspiron 5160 - -pci:v0000104Cd00008029sv00001071sd00008160* - ID_PRODUCT_FROM_DATABASE=MIM2900 - -pci:v0000104Cd0000802B* - ID_PRODUCT_FROM_DATABASE=PCI7410,7510,7610 OHCI-Lynx Controller - -pci:v0000104Cd0000802Bsv00001028sd00000139* - ID_PRODUCT_FROM_DATABASE=Latitude D400 - -pci:v0000104Cd0000802Bsv00001028sd0000014E* - ID_PRODUCT_FROM_DATABASE=PCI7410,7510,7610 OHCI-Lynx Controller (Latitude D800) - -pci:v0000104Cd0000802E* - ID_PRODUCT_FROM_DATABASE=PCI7x20 1394a-2000 OHCI Two-Port PHY/Link-Layer Controller - -pci:v0000104Cd0000802Esv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m - -pci:v0000104Cd00008031* - ID_PRODUCT_FROM_DATABASE=PCIxx21/x515 Cardbus Controller - -pci:v0000104Cd00008031sv00001025sd00000080* - ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMi - -pci:v0000104Cd00008031sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v0000104Cd00008031sv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v0000104Cd00008031sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v0000104Cd00008032* - ID_PRODUCT_FROM_DATABASE=OHCI Compliant IEEE 1394 Host Controller - -pci:v0000104Cd00008032sv00001025sd00000080* - ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMi - -pci:v0000104Cd00008032sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v0000104Cd00008032sv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v0000104Cd00008032sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v0000104Cd00008033* - ID_PRODUCT_FROM_DATABASE=PCIxx21 Integrated FlashMedia Controller - -pci:v0000104Cd00008033sv00001025sd00000080* - ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMi - -pci:v0000104Cd00008033sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v0000104Cd00008033sv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v0000104Cd00008033sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v0000104Cd00008034* - ID_PRODUCT_FROM_DATABASE=PCI6411/6421/6611/6621/7411/7421/7611/7621 Secure Digital Controller - -pci:v0000104Cd00008034sv00001025sd00000080* - ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMi - -pci:v0000104Cd00008034sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v0000104Cd00008034sv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v0000104Cd00008034sv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v0000104Cd00008035* - ID_PRODUCT_FROM_DATABASE=PCI6411/6421/6611/6621/7411/7421/7611/7621 Smart Card Controller - -pci:v0000104Cd00008035sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v0000104Cd00008035sv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v0000104Cd00008036* - ID_PRODUCT_FROM_DATABASE=PCI6515 Cardbus Controller - -pci:v0000104Cd00008038* - ID_PRODUCT_FROM_DATABASE=PCI6515 SmartCard Controller - -pci:v0000104Cd00008039* - ID_PRODUCT_FROM_DATABASE=PCIxx12 Cardbus Controller - -pci:v0000104Cd00008039sv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v0000104Cd00008039sv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v0000104Cd00008039sv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v0000104Cd00008039sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v0000104Cd0000803A* - ID_PRODUCT_FROM_DATABASE=PCIxx12 OHCI Compliant IEEE 1394 Host Controller - -pci:v0000104Cd0000803Asv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=nx9420 - -pci:v0000104Cd0000803Asv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v0000104Cd0000803Asv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v0000104Cd0000803Asv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v0000104Cd0000803B* - ID_PRODUCT_FROM_DATABASE=5-in-1 Multimedia Card Reader (SD/MMC/MS/MS PRO/xD) - -pci:v0000104Cd0000803Bsv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=nx9420 - -pci:v0000104Cd0000803Bsv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v0000104Cd0000803Bsv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v0000104Cd0000803C* - ID_PRODUCT_FROM_DATABASE=PCIxx12 SDA Standard Compliant SD Host Controller - -pci:v0000104Cd0000803Csv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=nx9420 - -pci:v0000104Cd0000803Csv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v0000104Cd0000803D* - ID_PRODUCT_FROM_DATABASE=PCIxx12 GemCore based SmartCard controller - -pci:v0000104Cd0000803Dsv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v0000104Cd0000803Dsv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v0000104Cd0000803Dsv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=nc8430 - -pci:v0000104Cd0000803Dsv0000103Csd000030AA* - ID_PRODUCT_FROM_DATABASE=nc6310 - -pci:v0000104Cd00008101* - ID_PRODUCT_FROM_DATABASE=TSB43DB42 IEEE-1394a-2000 Controller (PHY/Link) - -pci:v0000104Cd00008201* - ID_PRODUCT_FROM_DATABASE=PCI1620 Firmware Loading Function - -pci:v0000104Cd00008204* - ID_PRODUCT_FROM_DATABASE=PCI7410,7510,7610 PCI Firmware Loading Function - -pci:v0000104Cd00008204sv00001028sd00000139* - ID_PRODUCT_FROM_DATABASE=Latitude D400 - -pci:v0000104Cd00008204sv00001028sd0000014E* - ID_PRODUCT_FROM_DATABASE=Latitude D800 - -pci:v0000104Cd00008231* - ID_PRODUCT_FROM_DATABASE=XIO2000(A)/XIO2200A PCI Express-to-PCI Bridge - -pci:v0000104Cd00008231sv00005678sd00001234* - ID_PRODUCT_FROM_DATABASE=DC-1394 PCIe - -pci:v0000104Cd00008232* - ID_PRODUCT_FROM_DATABASE=XIO3130 PCI Express Switch (Upstream) - -pci:v0000104Cd00008233* - ID_PRODUCT_FROM_DATABASE=XIO3130 PCI Express Switch (Downstream) - -pci:v0000104Cd00008235* - ID_PRODUCT_FROM_DATABASE=XIO2200A IEEE-1394a-2000 Controller (PHY/Link) - -pci:v0000104Cd00008235sv00005678sd00001234* - ID_PRODUCT_FROM_DATABASE=DC-1394 PCIe - -pci:v0000104Cd0000823E* - ID_PRODUCT_FROM_DATABASE=XIO2213A/B/XIO2221 PCI Express to PCI Bridge [Cheetah Express] - -pci:v0000104Cd0000823F* - ID_PRODUCT_FROM_DATABASE=XIO2213A/B/XIO2221 IEEE-1394b OHCI Controller [Cheetah Express] - -pci:v0000104Cd0000823Fsv00001546sd0000803C* - ID_PRODUCT_FROM_DATABASE=FWB-PCIE1X11B - -pci:v0000104Cd00008240* - ID_PRODUCT_FROM_DATABASE=XIO2001 PCI Express-to-PCI Bridge - -pci:v0000104Cd00008241* - ID_PRODUCT_FROM_DATABASE=TUSB73x0 SuperSpeed USB 3.0 xHCI Host Controller - -pci:v0000104Cd00008400* - ID_PRODUCT_FROM_DATABASE=ACX 100 22Mbps Wireless Interface - -pci:v0000104Cd00008400sv00001186sd00003B00* - ID_PRODUCT_FROM_DATABASE=DWL-650+ PC Card cardbus 22Mbs Wireless Adapter [AirPlus] - -pci:v0000104Cd00008400sv00001186sd00003B01* - ID_PRODUCT_FROM_DATABASE=DWL-520+ 22Mbps PCI Wireless Adapter - -pci:v0000104Cd00008400sv00001395sd00002201* - ID_PRODUCT_FROM_DATABASE=WL22-PC - -pci:v0000104Cd00008400sv000016ABsd00008501* - ID_PRODUCT_FROM_DATABASE=WL-8305 IEEE802.11b+ Wireless LAN PCI Adapter - -pci:v0000104Cd00008401* - ID_PRODUCT_FROM_DATABASE=ACX 100 22Mbps Wireless Interface - -pci:v0000104Cd00009000* - ID_PRODUCT_FROM_DATABASE=Wireless Interface (of unknown type) - -pci:v0000104Cd00009065* - ID_PRODUCT_FROM_DATABASE=TMS320DM642 - -pci:v0000104Cd00009066* - ID_PRODUCT_FROM_DATABASE=ACX 111 54Mbps Wireless Interface - -pci:v0000104Cd00009066sv00000308sd00003404* - ID_PRODUCT_FROM_DATABASE=G-102 v1 802.11g Wireless Cardbus Adapter - -pci:v0000104Cd00009066sv00000308sd00003406* - ID_PRODUCT_FROM_DATABASE=G-162 v2 802.11g Wireless Cardbus Adapter - -pci:v0000104Cd00009066sv0000104Csd00009066* - ID_PRODUCT_FROM_DATABASE=WL212 Sitecom Wireless Network PCI-Card 100M (Version 1) - -pci:v0000104Cd00009066sv0000104Csd00009067* - ID_PRODUCT_FROM_DATABASE=TNETW1130GVF - -pci:v0000104Cd00009066sv0000104Csd00009096* - ID_PRODUCT_FROM_DATABASE=Trendnet TEW-412PC Wireless PCI Adapter (Version A) - -pci:v0000104Cd00009066sv00001186sd00003B04* - ID_PRODUCT_FROM_DATABASE=DWL-G520+ Wireless PCI Adapter - -pci:v0000104Cd00009066sv00001186sd00003B05* - ID_PRODUCT_FROM_DATABASE=DWL-G650+ AirPlusG+ CardBus Wireless LAN - -pci:v0000104Cd00009066sv00001186sd00003B08* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.B1) - -pci:v0000104Cd00009066sv00001385sd00004C00* - ID_PRODUCT_FROM_DATABASE=WG311v2 802.11g Wireless PCI Adapter - -pci:v0000104Cd00009066sv000013D1sd0000ABA0* - ID_PRODUCT_FROM_DATABASE=SWLMP-54108 108Mbps Wireless mini PCI card 802.11g+ - -pci:v0000104Cd00009066sv000014EAsd0000AB07* - ID_PRODUCT_FROM_DATABASE=GW-NS54GM Wireless Cardbus Adapter - -pci:v0000104Cd00009066sv000016ECsd0000010D* - ID_PRODUCT_FROM_DATABASE=USR5416 802.11g Wireless Turbo PCI Adapter - -pci:v0000104Cd00009066sv000016ECsd0000010E* - ID_PRODUCT_FROM_DATABASE=USR5410 802.11g Wireless Cardbus Adapter - -pci:v0000104Cd00009066sv00001737sd00000033* - ID_PRODUCT_FROM_DATABASE=WPC54G v2 802.11g Wireless-G Notebook Adapter - -pci:v0000104Cd00009066sv000017CFsd00000032* - ID_PRODUCT_FROM_DATABASE=G-162 v1 802.11g Wireless Cardbus Adapter - -pci:v0000104Cd00009066sv000017CFsd00000033* - ID_PRODUCT_FROM_DATABASE=Z-Com XG650 Wireless miniPCI 802.11b/g - -pci:v0000104Cd00009066sv0000187Esd0000340B* - ID_PRODUCT_FROM_DATABASE=G-302 v2 802.11g Wireless PCI Adapter - -pci:v0000104Cd00009066sv0000187Esd0000340C* - ID_PRODUCT_FROM_DATABASE=G-360 v2 802.11g Wireless PCI Adapter - -pci:v0000104Cd0000A001* - ID_PRODUCT_FROM_DATABASE=TDC1570 - -pci:v0000104Cd0000A100* - ID_PRODUCT_FROM_DATABASE=TDC1561 - -pci:v0000104Cd0000A102* - ID_PRODUCT_FROM_DATABASE=TNETA1575 HyperSAR Plus w/PCI Host i/f & UTOPIA i/f - -pci:v0000104Cd0000A106* - ID_PRODUCT_FROM_DATABASE=TMS320C6414 TMS320C6415 TMS320C6416 - -pci:v0000104Cd0000A106sv0000175Csd00005000* - ID_PRODUCT_FROM_DATABASE=ASI50xx Audio Adapter - -pci:v0000104Cd0000A106sv0000175Csd00006400* - ID_PRODUCT_FROM_DATABASE=ASI6400 Cobranet series - -pci:v0000104Cd0000A106sv0000175Csd00008700* - ID_PRODUCT_FROM_DATABASE=ASI87xx Radio Tuner card - -pci:v0000104Cd0000AC10* - ID_PRODUCT_FROM_DATABASE=PCI1050 - -pci:v0000104Cd0000AC11* - ID_PRODUCT_FROM_DATABASE=PCI1053 - -pci:v0000104Cd0000AC12* - ID_PRODUCT_FROM_DATABASE=PCI1130 - -pci:v0000104Cd0000AC13* - ID_PRODUCT_FROM_DATABASE=PCI1031 - -pci:v0000104Cd0000AC15* - ID_PRODUCT_FROM_DATABASE=PCI1131 - -pci:v0000104Cd0000AC16* - ID_PRODUCT_FROM_DATABASE=PCI1250 - -pci:v0000104Cd0000AC16sv00001014sd00000092* - ID_PRODUCT_FROM_DATABASE=ThinkPad 600 - -pci:v0000104Cd0000AC17* - ID_PRODUCT_FROM_DATABASE=PCI1220 - -pci:v0000104Cd0000AC18* - ID_PRODUCT_FROM_DATABASE=PCI1260 - -pci:v0000104Cd0000AC19* - ID_PRODUCT_FROM_DATABASE=PCI1221 - -pci:v0000104Cd0000AC1A* - ID_PRODUCT_FROM_DATABASE=PCI1210 - -pci:v0000104Cd0000AC1B* - ID_PRODUCT_FROM_DATABASE=PCI1450 - -pci:v0000104Cd0000AC1Bsv00000E11sd0000B113* - ID_PRODUCT_FROM_DATABASE=Armada M700 - -pci:v0000104Cd0000AC1Bsv00001014sd00000130* - ID_PRODUCT_FROM_DATABASE=ThinkPad 600X/A21m/T20/T22 - -pci:v0000104Cd0000AC1C* - ID_PRODUCT_FROM_DATABASE=PCI1225 - -pci:v0000104Cd0000AC1Csv00000E11sd0000B121* - ID_PRODUCT_FROM_DATABASE=Armada E500 - -pci:v0000104Cd0000AC1Csv00001028sd00000088* - ID_PRODUCT_FROM_DATABASE=Latitude CPi A400XT - -pci:v0000104Cd0000AC1D* - ID_PRODUCT_FROM_DATABASE=PCI1251A - -pci:v0000104Cd0000AC1E* - ID_PRODUCT_FROM_DATABASE=PCI1211 - -pci:v0000104Cd0000AC1F* - ID_PRODUCT_FROM_DATABASE=PCI1251B - -pci:v0000104Cd0000AC20* - ID_PRODUCT_FROM_DATABASE=TI 2030 - -pci:v0000104Cd0000AC21* - ID_PRODUCT_FROM_DATABASE=PCI2031 - -pci:v0000104Cd0000AC22* - ID_PRODUCT_FROM_DATABASE=PCI2032 PCI Docking Bridge - -pci:v0000104Cd0000AC23* - ID_PRODUCT_FROM_DATABASE=PCI2250 PCI-to-PCI Bridge - -pci:v0000104Cd0000AC28* - ID_PRODUCT_FROM_DATABASE=PCI2050 PCI-to-PCI Bridge - -pci:v0000104Cd0000AC2C* - ID_PRODUCT_FROM_DATABASE=PCI2060 PCI-to-PCI Bridge - -pci:v0000104Cd0000AC30* - ID_PRODUCT_FROM_DATABASE=PCI1260 PC card Cardbus Controller - -pci:v0000104Cd0000AC40* - ID_PRODUCT_FROM_DATABASE=PCI4450 PC card Cardbus Controller - -pci:v0000104Cd0000AC41* - ID_PRODUCT_FROM_DATABASE=PCI4410 PC card Cardbus Controller - -pci:v0000104Cd0000AC42* - ID_PRODUCT_FROM_DATABASE=PCI4451 PC card Cardbus Controller - -pci:v0000104Cd0000AC42sv00001028sd000000E6* - ID_PRODUCT_FROM_DATABASE=PCI4451 PC card CardBus Controller (Inspiron 8100) - -pci:v0000104Cd0000AC44* - ID_PRODUCT_FROM_DATABASE=PCI4510 PC card Cardbus Controller - -pci:v0000104Cd0000AC44sv00001028sd00000149* - ID_PRODUCT_FROM_DATABASE=Inspiron 5100 - -pci:v0000104Cd0000AC44sv00001028sd00000163* - ID_PRODUCT_FROM_DATABASE=Latitude D505 - -pci:v0000104Cd0000AC44sv00001028sd00000196* - ID_PRODUCT_FROM_DATABASE=Inspiron 5160 - -pci:v0000104Cd0000AC44sv00001071sd00008160* - ID_PRODUCT_FROM_DATABASE=MIM2000 - -pci:v0000104Cd0000AC46* - ID_PRODUCT_FROM_DATABASE=PCI4520 PC card Cardbus Controller - -pci:v0000104Cd0000AC46sv00001014sd00000552* - ID_PRODUCT_FROM_DATABASE=ThinkPad - -pci:v0000104Cd0000AC47* - ID_PRODUCT_FROM_DATABASE=PCI7510 PC card Cardbus Controller - -pci:v0000104Cd0000AC47sv00001028sd00000139* - ID_PRODUCT_FROM_DATABASE=Latitude D400 - -pci:v0000104Cd0000AC47sv00001028sd0000013F* - ID_PRODUCT_FROM_DATABASE=Precision M60 - -pci:v0000104Cd0000AC47sv00001028sd0000014E* - ID_PRODUCT_FROM_DATABASE=Latitude D800 - -pci:v0000104Cd0000AC48* - ID_PRODUCT_FROM_DATABASE=PCI7610 PC Card Cardbus Controller - -pci:v0000104Cd0000AC49* - ID_PRODUCT_FROM_DATABASE=PCI7410 PC Card Cardbus Controller - -pci:v0000104Cd0000AC4A* - ID_PRODUCT_FROM_DATABASE=PCI7510,7610 PC card Cardbus Controller - -pci:v0000104Cd0000AC4Asv00001028sd00000139* - ID_PRODUCT_FROM_DATABASE=Latitude D400 - -pci:v0000104Cd0000AC4Asv00001028sd0000014E* - ID_PRODUCT_FROM_DATABASE=Latitude D800 - -pci:v0000104Cd0000AC4B* - ID_PRODUCT_FROM_DATABASE=PCI7610 SD/MMC controller - -pci:v0000104Cd0000AC4C* - ID_PRODUCT_FROM_DATABASE=PCI7610 Memory Stick controller - -pci:v0000104Cd0000AC50* - ID_PRODUCT_FROM_DATABASE=PCI1410 PC card Cardbus Controller - -pci:v0000104Cd0000AC51* - ID_PRODUCT_FROM_DATABASE=PCI1420 PC card Cardbus Controller - -pci:v0000104Cd0000AC51sv00000E11sd0000004E* - ID_PRODUCT_FROM_DATABASE=Evo N600c - -pci:v0000104Cd0000AC51sv00001014sd00000148* - ID_PRODUCT_FROM_DATABASE=ThinkPad A20m - -pci:v0000104Cd0000AC51sv00001014sd0000023B* - ID_PRODUCT_FROM_DATABASE=ThinkPad T23 - -pci:v0000104Cd0000AC51sv00001028sd000000B1* - ID_PRODUCT_FROM_DATABASE=Latitude C600 - -pci:v0000104Cd0000AC51sv00001028sd0000012A* - ID_PRODUCT_FROM_DATABASE=Latitude C640 - -pci:v0000104Cd0000AC51sv00001033sd000080CD* - ID_PRODUCT_FROM_DATABASE=Versa Note VXi - -pci:v0000104Cd0000AC51sv000010CFsd00001095* - ID_PRODUCT_FROM_DATABASE=Lifebook S-4510/C6155 - -pci:v0000104Cd0000AC51sv0000E4BFsd00001000* - ID_PRODUCT_FROM_DATABASE=CP2-2-HIPHOP - -pci:v0000104Cd0000AC52* - ID_PRODUCT_FROM_DATABASE=PCI1451 PC card Cardbus Controller - -pci:v0000104Cd0000AC53* - ID_PRODUCT_FROM_DATABASE=PCI1421 PC card Cardbus Controller - -pci:v0000104Cd0000AC54* - ID_PRODUCT_FROM_DATABASE=PCI1620 PC Card Controller - -pci:v0000104Cd0000AC54sv0000103Csd000008B0* - ID_PRODUCT_FROM_DATABASE=tc1100 tablet - -pci:v0000104Cd0000AC55* - ID_PRODUCT_FROM_DATABASE=PCI1520 PC card Cardbus Controller - -pci:v0000104Cd0000AC55sv00001014sd00000512* - ID_PRODUCT_FROM_DATABASE=ThinkPad T30/T40 - -pci:v0000104Cd0000AC55sv0000103Csd00000025* - ID_PRODUCT_FROM_DATABASE=XE4500 Notebook - -pci:v0000104Cd0000AC56* - ID_PRODUCT_FROM_DATABASE=PCI1510 PC card Cardbus Controller - -pci:v0000104Cd0000AC56sv00001014sd00000512* - ID_PRODUCT_FROM_DATABASE=ThinkPad R50e - -pci:v0000104Cd0000AC56sv00001014sd00000528* - ID_PRODUCT_FROM_DATABASE=ThinkPad R40e - -pci:v0000104Cd0000AC56sv000017AAsd00002012* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60/R60 series - -pci:v0000104Cd0000AC60* - ID_PRODUCT_FROM_DATABASE=PCI2040 PCI to DSP Bridge Controller - -pci:v0000104Cd0000AC60sv0000175Csd00005100* - ID_PRODUCT_FROM_DATABASE=ASI51xx Audio Adapter - -pci:v0000104Cd0000AC60sv0000175Csd00006100* - ID_PRODUCT_FROM_DATABASE=ASI61xx Audio Adapter - -pci:v0000104Cd0000AC60sv0000175Csd00006200* - ID_PRODUCT_FROM_DATABASE=ASI62xx Audio Adapter - -pci:v0000104Cd0000AC60sv0000175Csd00008800* - ID_PRODUCT_FROM_DATABASE=ASI88xx Audio Adapter - -pci:v0000104Cd0000AC60sv0000186Fsd00003001* - ID_PRODUCT_FROM_DATABASE=WR-G303 PCI radio receiver - -pci:v0000104Cd0000AC60sv0000186Fsd00003005* - ID_PRODUCT_FROM_DATABASE=WR-G305 PCI radio receiver - -pci:v0000104Cd0000AC60sv0000186Fsd00003101* - ID_PRODUCT_FROM_DATABASE=WR-G313 PCI radio receiver - -pci:v0000104Cd0000AC60sv0000186Fsd00003105* - ID_PRODUCT_FROM_DATABASE=WR-G315 PCI radio receiver - -pci:v0000104Cd0000AC8D* - ID_PRODUCT_FROM_DATABASE=PCI 7620 - -pci:v0000104Cd0000AC8E* - ID_PRODUCT_FROM_DATABASE=PCI7420 CardBus Controller - -pci:v0000104Cd0000AC8Esv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m - -pci:v0000104Cd0000AC8F* - ID_PRODUCT_FROM_DATABASE=PCI7420/7620 Combo CardBus, 1394a-2000 OHCI and SD/MS-Pro Controller - -pci:v0000104Cd0000AC8Fsv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m - -pci:v0000104Cd0000B001* - ID_PRODUCT_FROM_DATABASE=TMS320C6424 - -pci:v0000104Cd0000FE00* - ID_PRODUCT_FROM_DATABASE=FireWire Host Controller - -pci:v0000104Cd0000FE03* - ID_PRODUCT_FROM_DATABASE=12C01A FireWire Host Controller - -pci:v0000104D* - ID_VENDOR_FROM_DATABASE=Sony Corporation - -pci:v0000104Dd00008004* - ID_PRODUCT_FROM_DATABASE=DTL-H2500 [Playstation development board] - -pci:v0000104Dd00008009* - ID_PRODUCT_FROM_DATABASE=CXD1947Q i.LINK Controller - -pci:v0000104Dd00008039* - ID_PRODUCT_FROM_DATABASE=CXD3222 i.LINK Controller - -pci:v0000104Dd00008056* - ID_PRODUCT_FROM_DATABASE=Rockwell HCF 56K modem - -pci:v0000104Dd0000808A* - ID_PRODUCT_FROM_DATABASE=Memory Stick Controller - -pci:v0000104Dd000081CE* - ID_PRODUCT_FROM_DATABASE=SxS Pro memory card - -pci:v0000104E* - ID_VENDOR_FROM_DATABASE=Oak Technology, Inc - -pci:v0000104Ed00000017* - ID_PRODUCT_FROM_DATABASE=OTI-64017 - -pci:v0000104Ed00000107* - ID_PRODUCT_FROM_DATABASE=OTI-107 [Spitfire] - -pci:v0000104Ed00000109* - ID_PRODUCT_FROM_DATABASE=Video Adapter - -pci:v0000104Ed00000111* - ID_PRODUCT_FROM_DATABASE=OTI-64111 [Spitfire] - -pci:v0000104Ed00000217* - ID_PRODUCT_FROM_DATABASE=OTI-64217 - -pci:v0000104Ed00000317* - ID_PRODUCT_FROM_DATABASE=OTI-64317 - -pci:v0000104F* - ID_VENDOR_FROM_DATABASE=Co-time Computer Ltd - -pci:v00001050* - ID_VENDOR_FROM_DATABASE=Winbond Electronics Corp - -pci:v00001050d00000000* - ID_PRODUCT_FROM_DATABASE=NE2000 - -pci:v00001050d00000001* - ID_PRODUCT_FROM_DATABASE=W83769F - -pci:v00001050d00000033* - ID_PRODUCT_FROM_DATABASE=W89C33D 802.11 a/b/g BB/MAC - -pci:v00001050d00000105* - ID_PRODUCT_FROM_DATABASE=W82C105 - -pci:v00001050d00000840* - ID_PRODUCT_FROM_DATABASE=W89C840 - -pci:v00001050d00000840sv00001050sd00000001* - ID_PRODUCT_FROM_DATABASE=W89C840 Ethernet Adapter - -pci:v00001050d00000840sv00001050sd00000840* - ID_PRODUCT_FROM_DATABASE=W89C840 Ethernet Adapter - -pci:v00001050d00000940* - ID_PRODUCT_FROM_DATABASE=W89C940 - -pci:v00001050d00005A5A* - ID_PRODUCT_FROM_DATABASE=W89C940F - -pci:v00001050d00006692* - ID_PRODUCT_FROM_DATABASE=W6692 - -pci:v00001050d00006692sv00001043sd00001702* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter (PCI Bus, D, W) - -pci:v00001050d00006692sv00001043sd00001703* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) - -pci:v00001050d00006692sv00001043sd00001707* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) - -pci:v00001050d00006692sv0000144Fsd00001702* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter (PCI Bus, D, W) - -pci:v00001050d00006692sv0000144Fsd00001703* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) - -pci:v00001050d00006692sv0000144Fsd00001707* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter (PCI Bus, DV, W) - -pci:v00001050d00009921* - ID_PRODUCT_FROM_DATABASE=W99200F MPEG-1 Video Encoder - -pci:v00001050d00009922* - ID_PRODUCT_FROM_DATABASE=W99200F/W9922PF MPEG-1/2 Video Encoder - -pci:v00001050d00009970* - ID_PRODUCT_FROM_DATABASE=W9970CF - -pci:v00001051* - ID_VENDOR_FROM_DATABASE=Anigma, Inc. - -pci:v00001052* - ID_VENDOR_FROM_DATABASE=?Young Micro Systems - -pci:v00001053* - ID_VENDOR_FROM_DATABASE=Young Micro Systems - -pci:v00001054* - ID_VENDOR_FROM_DATABASE=Hitachi, Ltd - -pci:v00001054d00003009* - ID_PRODUCT_FROM_DATABASE=2Gbps Fibre Channel to PCI HBA 3009 - -pci:v00001054d0000300A* - ID_PRODUCT_FROM_DATABASE=4Gbps Fibre Channel to PCI-X HBA 300a - -pci:v00001054d0000300B* - ID_PRODUCT_FROM_DATABASE=4Gbps Fibre Channel to PCI-X HBA 300b - -pci:v00001054d0000300F* - ID_PRODUCT_FROM_DATABASE=ColdFusion 3 Chipset Processor to I/O Controller - -pci:v00001054d00003010* - ID_PRODUCT_FROM_DATABASE=ColdFusion 3 Chipset Memory Controller Hub - -pci:v00001054d00003011* - ID_PRODUCT_FROM_DATABASE=ColdFusion 3e Chipset Processor to I/O Controller - -pci:v00001054d00003012* - ID_PRODUCT_FROM_DATABASE=ColdFusion 3e Chipset Memory Controller Hub - -pci:v00001054d00003017* - ID_PRODUCT_FROM_DATABASE=Unassigned Hitachi Shared FC Device 3017 - -pci:v00001054d0000301B* - ID_PRODUCT_FROM_DATABASE=Virtual VGA Device - -pci:v00001054d0000301D* - ID_PRODUCT_FROM_DATABASE=PCIe-to-PCIe Bridge with Virtualization IO Assist Feature - -pci:v00001054d00003020* - ID_PRODUCT_FROM_DATABASE=FIVE-EX based Fibre Channel to PCIe HBA - -pci:v00001054d0000302C* - ID_PRODUCT_FROM_DATABASE=M001 PCI Express Switch Upstream Port - -pci:v00001054d0000302D* - ID_PRODUCT_FROM_DATABASE=M001 PCI Express Switch Downstream Port - -pci:v00001054d00003505* - ID_PRODUCT_FROM_DATABASE=SH7751 PCI Controller (PCIC) - -pci:v00001054d0000350E* - ID_PRODUCT_FROM_DATABASE=SH7751R PCI Controller (PCIC) - -pci:v00001055* - ID_VENDOR_FROM_DATABASE=Efar Microsystems - -pci:v00001055d00009130* - ID_PRODUCT_FROM_DATABASE=SLC90E66 [Victory66] IDE - -pci:v00001055d00009460* - ID_PRODUCT_FROM_DATABASE=SLC90E66 [Victory66] ISA - -pci:v00001055d00009462* - ID_PRODUCT_FROM_DATABASE=SLC90E66 [Victory66] USB - -pci:v00001055d00009463* - ID_PRODUCT_FROM_DATABASE=SLC90E66 [Victory66] ACPI - -pci:v00001055d0000E420* - ID_PRODUCT_FROM_DATABASE=LAN9420/LAN9420i - -pci:v00001056* - ID_VENDOR_FROM_DATABASE=ICL - -pci:v00001057* - ID_VENDOR_FROM_DATABASE=Motorola - -pci:v00001057d00000001* - ID_PRODUCT_FROM_DATABASE=MPC105 [Eagle] - -pci:v00001057d00000002* - ID_PRODUCT_FROM_DATABASE=MPC106 [Grackle] - -pci:v00001057d00000003* - ID_PRODUCT_FROM_DATABASE=MPC8240 [Kahlua] - -pci:v00001057d00000004* - ID_PRODUCT_FROM_DATABASE=MPC107 - -pci:v00001057d00000006* - ID_PRODUCT_FROM_DATABASE=MPC8245 [Unity] - -pci:v00001057d00000008* - ID_PRODUCT_FROM_DATABASE=MPC8540 - -pci:v00001057d00000009* - ID_PRODUCT_FROM_DATABASE=MPC8560 - -pci:v00001057d00000012* - ID_PRODUCT_FROM_DATABASE=MPC8548 [PowerQUICC III] - -pci:v00001057d00000100* - ID_PRODUCT_FROM_DATABASE=MC145575 [HFC-PCI] - -pci:v00001057d00000431* - ID_PRODUCT_FROM_DATABASE=KTI829c 100VG - -pci:v00001057d00001073* - ID_PRODUCT_FROM_DATABASE=Nokia N770 - -pci:v00001057d00001219* - ID_PRODUCT_FROM_DATABASE=Nokia N800 - -pci:v00001057d00001801* - ID_PRODUCT_FROM_DATABASE=DSP56301 Digital Signal Processor - -pci:v00001057d00001801sv000014FBsd00000101* - ID_PRODUCT_FROM_DATABASE=Transas Radar Imitator Board [RIM] - -pci:v00001057d00001801sv000014FBsd00000102* - ID_PRODUCT_FROM_DATABASE=Transas Radar Imitator Board [RIM-2] - -pci:v00001057d00001801sv000014FBsd00000202* - ID_PRODUCT_FROM_DATABASE=Transas Radar Integrator Board [RIB-2] - -pci:v00001057d00001801sv000014FBsd00000611* - ID_PRODUCT_FROM_DATABASE=1 channel CAN bus Controller [CanPci-1] - -pci:v00001057d00001801sv000014FBsd00000612* - ID_PRODUCT_FROM_DATABASE=2 channels CAN bus Controller [CanPci-2] - -pci:v00001057d00001801sv000014FBsd00000613* - ID_PRODUCT_FROM_DATABASE=3 channels CAN bus Controller [CanPci-3] - -pci:v00001057d00001801sv000014FBsd00000614* - ID_PRODUCT_FROM_DATABASE=4 channels CAN bus Controller [CanPci-4] - -pci:v00001057d00001801sv000014FBsd00000621* - ID_PRODUCT_FROM_DATABASE=1 channel CAN bus Controller [CanPci2-1] - -pci:v00001057d00001801sv000014FBsd00000622* - ID_PRODUCT_FROM_DATABASE=2 channels CAN bus Controller [CanPci2-2] - -pci:v00001057d00001801sv000014FBsd00000810* - ID_PRODUCT_FROM_DATABASE=Transas VTS Radar Integrator Board [RIB-4] - -pci:v00001057d00001801sv0000175Csd00004200* - ID_PRODUCT_FROM_DATABASE=ASI4215 Audio Adapter - -pci:v00001057d00001801sv0000175Csd00004300* - ID_PRODUCT_FROM_DATABASE=ASI43xx Audio Adapter - -pci:v00001057d00001801sv0000175Csd00004400* - ID_PRODUCT_FROM_DATABASE=ASI4401 Audio Adapter - -pci:v00001057d00001801sv0000ECC0sd00000010* - ID_PRODUCT_FROM_DATABASE=Darla - -pci:v00001057d00001801sv0000ECC0sd00000020* - ID_PRODUCT_FROM_DATABASE=Gina - -pci:v00001057d00001801sv0000ECC0sd00000030* - ID_PRODUCT_FROM_DATABASE=Layla rev.0 - -pci:v00001057d00001801sv0000ECC0sd00000031* - ID_PRODUCT_FROM_DATABASE=Layla rev.1 - -pci:v00001057d00001801sv0000ECC0sd00000040* - ID_PRODUCT_FROM_DATABASE=Darla24 rev.0 - -pci:v00001057d00001801sv0000ECC0sd00000041* - ID_PRODUCT_FROM_DATABASE=Darla24 rev.1 - -pci:v00001057d00001801sv0000ECC0sd00000050* - ID_PRODUCT_FROM_DATABASE=Gina24 rev.0 - -pci:v00001057d00001801sv0000ECC0sd00000051* - ID_PRODUCT_FROM_DATABASE=Gina24 rev.1 - -pci:v00001057d00001801sv0000ECC0sd00000070* - ID_PRODUCT_FROM_DATABASE=Mona rev.0 - -pci:v00001057d00001801sv0000ECC0sd00000071* - ID_PRODUCT_FROM_DATABASE=Mona rev.1 - -pci:v00001057d00001801sv0000ECC0sd00000072* - ID_PRODUCT_FROM_DATABASE=Mona rev.2 - -pci:v00001057d000018C0* - ID_PRODUCT_FROM_DATABASE=MPC8265A/8266/8272 - -pci:v00001057d000018C1* - ID_PRODUCT_FROM_DATABASE=MPC8271/MPC8272 - -pci:v00001057d00003052* - ID_PRODUCT_FROM_DATABASE=SM56 Data Fax Modem - -pci:v00001057d00003410* - ID_PRODUCT_FROM_DATABASE=DSP56361 Digital Signal Processor - -pci:v00001057d00003410sv0000ECC0sd00000050* - ID_PRODUCT_FROM_DATABASE=Gina24 rev.0 - -pci:v00001057d00003410sv0000ECC0sd00000051* - ID_PRODUCT_FROM_DATABASE=Gina24 rev.1 - -pci:v00001057d00003410sv0000ECC0sd00000060* - ID_PRODUCT_FROM_DATABASE=Layla24 - -pci:v00001057d00003410sv0000ECC0sd00000070* - ID_PRODUCT_FROM_DATABASE=Mona rev.0 - -pci:v00001057d00003410sv0000ECC0sd00000071* - ID_PRODUCT_FROM_DATABASE=Mona rev.1 - -pci:v00001057d00003410sv0000ECC0sd00000072* - ID_PRODUCT_FROM_DATABASE=Mona rev.2 - -pci:v00001057d00003410sv0000ECC0sd00000080* - ID_PRODUCT_FROM_DATABASE=Mia rev.0 - -pci:v00001057d00003410sv0000ECC0sd00000081* - ID_PRODUCT_FROM_DATABASE=Mia rev.1 - -pci:v00001057d00003410sv0000ECC0sd00000090* - ID_PRODUCT_FROM_DATABASE=Indigo - -pci:v00001057d00003410sv0000ECC0sd000000A0* - ID_PRODUCT_FROM_DATABASE=Indigo IO - -pci:v00001057d00003410sv0000ECC0sd000000B0* - ID_PRODUCT_FROM_DATABASE=Indigo DJ - -pci:v00001057d00003410sv0000ECC0sd00000100* - ID_PRODUCT_FROM_DATABASE=3G - -pci:v00001057d00004801* - ID_PRODUCT_FROM_DATABASE=Raven - -pci:v00001057d00004802* - ID_PRODUCT_FROM_DATABASE=Falcon - -pci:v00001057d00004803* - ID_PRODUCT_FROM_DATABASE=Hawk - -pci:v00001057d00004806* - ID_PRODUCT_FROM_DATABASE=CPX8216 - -pci:v00001057d00004D68* - ID_PRODUCT_FROM_DATABASE=20268 - -pci:v00001057d00005600* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Modem - -pci:v00001057d00005600sv00001057sd00000300* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Speakerphone Modem - -pci:v00001057d00005600sv00001057sd00000301* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Voice Modem - -pci:v00001057d00005600sv00001057sd00000302* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Fax Modem - -pci:v00001057d00005600sv00001057sd00005600* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Voice modem - -pci:v00001057d00005600sv000013D2sd00000300* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Speakerphone Modem - -pci:v00001057d00005600sv000013D2sd00000301* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Voice modem - -pci:v00001057d00005600sv000013D2sd00000302* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Fax Modem - -pci:v00001057d00005600sv00001436sd00000300* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Speakerphone Modem - -pci:v00001057d00005600sv00001436sd00000301* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Voice modem - -pci:v00001057d00005600sv00001436sd00000302* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Fax Modem - -pci:v00001057d00005600sv0000144Fsd0000100C* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Fax Modem - -pci:v00001057d00005600sv00001494sd00000300* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Speakerphone Modem - -pci:v00001057d00005600sv00001494sd00000301* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Voice modem - -pci:v00001057d00005600sv000014C8sd00000300* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Speakerphone Modem - -pci:v00001057d00005600sv000014C8sd00000302* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Fax Modem - -pci:v00001057d00005600sv00001668sd00000300* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Speakerphone Modem - -pci:v00001057d00005600sv00001668sd00000302* - ID_PRODUCT_FROM_DATABASE=SM56 PCI Fax Modem - -pci:v00001057d00005608* - ID_PRODUCT_FROM_DATABASE=Wildcard X100P - -pci:v00001057d00005803* - ID_PRODUCT_FROM_DATABASE=MPC5200 - -pci:v00001057d00005806* - ID_PRODUCT_FROM_DATABASE=MCF54 Coldfire - -pci:v00001057d00005808* - ID_PRODUCT_FROM_DATABASE=MPC8220 - -pci:v00001057d00005809* - ID_PRODUCT_FROM_DATABASE=MPC5200B - -pci:v00001057d00006400* - ID_PRODUCT_FROM_DATABASE=MPC190 Security Processor (S1 family, encryption) - -pci:v00001057d00006405* - ID_PRODUCT_FROM_DATABASE=MPC184 Security Processor (S1 family) - -pci:v00001058* - ID_VENDOR_FROM_DATABASE=Electronics & Telecommunications RSH - -pci:v00001059* - ID_VENDOR_FROM_DATABASE=Kontron - -pci:v0000105A* - ID_VENDOR_FROM_DATABASE=Promise Technology, Inc. - -pci:v0000105Ad00000D30* - ID_PRODUCT_FROM_DATABASE=PDC20265 (FastTrak100 Lite/Ultra100) - -pci:v0000105Ad00000D30sv00001043sd00008042* - ID_PRODUCT_FROM_DATABASE=AV7266-E South Bridge Promise RAID - -pci:v0000105Ad00000D30sv0000105Asd00004D33* - ID_PRODUCT_FROM_DATABASE=Ultra100 - -pci:v0000105Ad00000D38* - ID_PRODUCT_FROM_DATABASE=20263 - -pci:v0000105Ad00000D38sv0000105Asd00004D39* - ID_PRODUCT_FROM_DATABASE=Fasttrak66 - -pci:v0000105Ad00001275* - ID_PRODUCT_FROM_DATABASE=20275 - -pci:v0000105Ad00003318* - ID_PRODUCT_FROM_DATABASE=PDC20318 (SATA150 TX4) - -pci:v0000105Ad00003319* - ID_PRODUCT_FROM_DATABASE=PDC20319 (FastTrak S150 TX4) - -pci:v0000105Ad00003319sv0000105Asd00003319* - ID_PRODUCT_FROM_DATABASE=FastTrak S150 TX4 4 port SATA PCI board - -pci:v0000105Ad00003319sv00008086sd00003427* - ID_PRODUCT_FROM_DATABASE=S875WP1-E mainboard - -pci:v0000105Ad00003371* - ID_PRODUCT_FROM_DATABASE=PDC20371 (FastTrak S150 TX2plus) - -pci:v0000105Ad00003373* - ID_PRODUCT_FROM_DATABASE=PDC20378 (FastTrak 378/SATA 378) - -pci:v0000105Ad00003373sv00001043sd000080F5* - ID_PRODUCT_FROM_DATABASE=K8V Deluxe/PC-DL Deluxe motherboard - -pci:v0000105Ad00003373sv00001462sd0000590D* - ID_PRODUCT_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) - -pci:v0000105Ad00003373sv00001462sd0000702E* - ID_PRODUCT_FROM_DATABASE=K8T NEO FIS2R motherboard - -pci:v0000105Ad00003375* - ID_PRODUCT_FROM_DATABASE=PDC20375 (SATA150 TX2plus) - -pci:v0000105Ad00003376* - ID_PRODUCT_FROM_DATABASE=PDC20376 (FastTrak 376) - -pci:v0000105Ad00003376sv00001043sd0000809E* - ID_PRODUCT_FROM_DATABASE=A7V8X motherboard - -pci:v0000105Ad00003515* - ID_PRODUCT_FROM_DATABASE=PDC40719 [FastTrak TX4300/TX4310] - -pci:v0000105Ad00003519* - ID_PRODUCT_FROM_DATABASE=PDC40519 (FastTrak TX4200) - -pci:v0000105Ad00003570* - ID_PRODUCT_FROM_DATABASE=PDC20771 [FastTrak TX2300] - -pci:v0000105Ad00003571* - ID_PRODUCT_FROM_DATABASE=PDC20571 (FastTrak TX2200) - -pci:v0000105Ad00003574* - ID_PRODUCT_FROM_DATABASE=PDC20579 SATAII 150 IDE Controller - -pci:v0000105Ad00003577* - ID_PRODUCT_FROM_DATABASE=PDC40779 (SATA 300 779) - -pci:v0000105Ad00003D17* - ID_PRODUCT_FROM_DATABASE=PDC40718 (SATA 300 TX4) - -pci:v0000105Ad00003D18* - ID_PRODUCT_FROM_DATABASE=PDC20518/PDC40518 (SATAII 150 TX4) - -pci:v0000105Ad00003D73* - ID_PRODUCT_FROM_DATABASE=PDC40775 (SATA 300 TX2plus) - -pci:v0000105Ad00003D75* - ID_PRODUCT_FROM_DATABASE=PDC20575 (SATAII150 TX2plus) - -pci:v0000105Ad00003F20* - ID_PRODUCT_FROM_DATABASE=PDC42819 [FastTrak TX2650/TX4650] - -pci:v0000105Ad00004302* - ID_PRODUCT_FROM_DATABASE=80333 [SuperTrak EX4350] - -pci:v0000105Ad00004D30* - ID_PRODUCT_FROM_DATABASE=PDC20267 (FastTrak100/Ultra100) - -pci:v0000105Ad00004D30sv0000105Asd00004D33* - ID_PRODUCT_FROM_DATABASE=Ultra100 - -pci:v0000105Ad00004D30sv0000105Asd00004D39* - ID_PRODUCT_FROM_DATABASE=FastTrak100 - -pci:v0000105Ad00004D30sv00008086sd00005744* - ID_PRODUCT_FROM_DATABASE=S845WD1-E mainboard - -pci:v0000105Ad00004D33* - ID_PRODUCT_FROM_DATABASE=20246 - -pci:v0000105Ad00004D33sv0000105Asd00004D33* - ID_PRODUCT_FROM_DATABASE=20246 IDE Controller - -pci:v0000105Ad00004D38* - ID_PRODUCT_FROM_DATABASE=PDC20262 (FastTrak66/Ultra66) - -pci:v0000105Ad00004D38sv0000105Asd00004D30* - ID_PRODUCT_FROM_DATABASE=Ultra Device on SuperTrak - -pci:v0000105Ad00004D38sv0000105Asd00004D33* - ID_PRODUCT_FROM_DATABASE=Ultra66 - -pci:v0000105Ad00004D38sv0000105Asd00004D39* - ID_PRODUCT_FROM_DATABASE=FastTrak66 - -pci:v0000105Ad00004D68* - ID_PRODUCT_FROM_DATABASE=PDC20268 [Ultra100 TX2] - -pci:v0000105Ad00004D68sv0000105Asd00004D68* - ID_PRODUCT_FROM_DATABASE=Ultra100 TX2 - -pci:v0000105Ad00004D69* - ID_PRODUCT_FROM_DATABASE=20269 - -pci:v0000105Ad00004D69sv0000105Asd00004D68* - ID_PRODUCT_FROM_DATABASE=Ultra133TX2 - -pci:v0000105Ad00005275* - ID_PRODUCT_FROM_DATABASE=PDC20276 (MBFastTrak133 Lite) - -pci:v0000105Ad00005275sv00001043sd0000807E* - ID_PRODUCT_FROM_DATABASE=A7V333 motherboard. - -pci:v0000105Ad00005275sv0000105Asd00000275* - ID_PRODUCT_FROM_DATABASE=SuperTrak SX6000 IDE - -pci:v0000105Ad00005275sv0000105Asd00001275* - ID_PRODUCT_FROM_DATABASE=MBFastTrak133 Lite (tm) Controller (RAID mode) - -pci:v0000105Ad00005275sv00001458sd0000B001* - ID_PRODUCT_FROM_DATABASE=MBUltra 133 - -pci:v0000105Ad00005300* - ID_PRODUCT_FROM_DATABASE=DC5300 - -pci:v0000105Ad00006268* - ID_PRODUCT_FROM_DATABASE=PDC20270 (FastTrak100 LP/TX2/TX4) - -pci:v0000105Ad00006268sv0000105Asd00004D68* - ID_PRODUCT_FROM_DATABASE=FastTrak100 TX2 - -pci:v0000105Ad00006269* - ID_PRODUCT_FROM_DATABASE=PDC20271 (FastTrak TX2000) - -pci:v0000105Ad00006269sv0000105Asd00006269* - ID_PRODUCT_FROM_DATABASE=FastTrak TX2/TX2000 - -pci:v0000105Ad00006300* - ID_PRODUCT_FROM_DATABASE=PDC81731 [FastTrak SX8300] - -pci:v0000105Ad00006621* - ID_PRODUCT_FROM_DATABASE=PDC20621 (FastTrak S150 SX4/FastTrak SX4000 lite) - -pci:v0000105Ad00006622* - ID_PRODUCT_FROM_DATABASE=PDC20621 [SATA150 SX4] 4 Channel IDE RAID Controller - -pci:v0000105Ad00006624* - ID_PRODUCT_FROM_DATABASE=PDC20621 [FastTrak SX4100] - -pci:v0000105Ad00006626* - ID_PRODUCT_FROM_DATABASE=PDC20618 (Ultra 618) - -pci:v0000105Ad00006629* - ID_PRODUCT_FROM_DATABASE=PDC20619 (FastTrak TX4000) - -pci:v0000105Ad00007275* - ID_PRODUCT_FROM_DATABASE=PDC20277 (SBFastTrak133 Lite) - -pci:v0000105Ad00008002* - ID_PRODUCT_FROM_DATABASE=SATAII150 SX8 - -pci:v0000105Ad00008350* - ID_PRODUCT_FROM_DATABASE=80333 [SuperTrak EX8350/EX16350], 80331 [SuperTrak EX8300/EX16300] - -pci:v0000105Ad00008650* - ID_PRODUCT_FROM_DATABASE=81384 [SuperTrak EX SAS and SATA RAID Controller] - -pci:v0000105Ad00008650sv0000105Asd00004600* - ID_PRODUCT_FROM_DATABASE=SuperTrak EX4650A - -pci:v0000105Ad00008650sv0000105Asd00004601* - ID_PRODUCT_FROM_DATABASE=SuperTrak EX4650 - -pci:v0000105Ad00008650sv0000105Asd00004610* - ID_PRODUCT_FROM_DATABASE=SuperTrak EX4650EL - -pci:v0000105Ad00008650sv0000105Asd00008600* - ID_PRODUCT_FROM_DATABASE=SuperTrak EX8650EL - -pci:v0000105Ad00008650sv0000105Asd00008601* - ID_PRODUCT_FROM_DATABASE=SuperTrak EX8650A - -pci:v0000105Ad00008650sv0000105Asd00008602* - ID_PRODUCT_FROM_DATABASE=SuperTrak EX8654 - -pci:v0000105Ad00008650sv0000105Asd00008603* - ID_PRODUCT_FROM_DATABASE=SuperTrak EX8658 - -pci:v0000105Ad00008650sv0000105Asd00008604* - ID_PRODUCT_FROM_DATABASE=SuperTrak EX8650 - -pci:v0000105Ad00008650sv0000105Asd00008610* - ID_PRODUCT_FROM_DATABASE=SuperTrak EX8650M - -pci:v0000105Ad00008650sv0000105Asd0000A600* - ID_PRODUCT_FROM_DATABASE=SuperTrak EX12650 - -pci:v0000105Ad00008650sv0000105Asd0000B600* - ID_PRODUCT_FROM_DATABASE=SuperTrak EX16650 - -pci:v0000105Ad00008650sv0000105Asd0000B601* - ID_PRODUCT_FROM_DATABASE=SuperTrak EX16654 - -pci:v0000105Ad00008650sv0000105Asd0000B602* - ID_PRODUCT_FROM_DATABASE=SuperTrak EX16658 - -pci:v0000105Ad00008760* - ID_PRODUCT_FROM_DATABASE=PM8010 [SuperTrak EX SAS and SATA 6G RAID Controller] - -pci:v0000105Ad0000C350* - ID_PRODUCT_FROM_DATABASE=80333 [SuperTrak EX12350] - -pci:v0000105Ad0000E350* - ID_PRODUCT_FROM_DATABASE=80333 [SuperTrak EX24350] - -pci:v0000105B* - ID_VENDOR_FROM_DATABASE=Foxconn International, Inc. - -pci:v0000105C* - ID_VENDOR_FROM_DATABASE=Wipro Infotech Limited - -pci:v0000105D* - ID_VENDOR_FROM_DATABASE=Number 9 Computer Company - -pci:v0000105Dd00002309* - ID_PRODUCT_FROM_DATABASE=Imagine 128 - -pci:v0000105Dd00002339* - ID_PRODUCT_FROM_DATABASE=Imagine 128-II - -pci:v0000105Dd00002339sv0000105Dsd00000000* - ID_PRODUCT_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM - -pci:v0000105Dd00002339sv0000105Dsd00000001* - ID_PRODUCT_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM - -pci:v0000105Dd00002339sv0000105Dsd00000002* - ID_PRODUCT_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM - -pci:v0000105Dd00002339sv0000105Dsd00000003* - ID_PRODUCT_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM - -pci:v0000105Dd00002339sv0000105Dsd00000004* - ID_PRODUCT_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM - -pci:v0000105Dd00002339sv0000105Dsd00000005* - ID_PRODUCT_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM - -pci:v0000105Dd00002339sv0000105Dsd00000006* - ID_PRODUCT_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM - -pci:v0000105Dd00002339sv0000105Dsd00000007* - ID_PRODUCT_FROM_DATABASE=Imagine 128 series 2 4Mb VRAM - -pci:v0000105Dd00002339sv0000105Dsd00000008* - ID_PRODUCT_FROM_DATABASE=Imagine 128 series 2e 4Mb DRAM - -pci:v0000105Dd00002339sv0000105Dsd00000009* - ID_PRODUCT_FROM_DATABASE=Imagine 128 series 2e 4Mb DRAM - -pci:v0000105Dd00002339sv0000105Dsd0000000A* - ID_PRODUCT_FROM_DATABASE=Imagine 128 series 2 8Mb VRAM - -pci:v0000105Dd00002339sv0000105Dsd0000000B* - ID_PRODUCT_FROM_DATABASE=Imagine 128 series 2 8Mb H-VRAM - -pci:v0000105Dd00002339sv000011A4sd0000000A* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel - -pci:v0000105Dd00002339sv000013CCsd00000000* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel - -pci:v0000105Dd00002339sv000013CCsd00000004* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel - -pci:v0000105Dd00002339sv000013CCsd00000005* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel - -pci:v0000105Dd00002339sv000013CCsd00000006* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel - -pci:v0000105Dd00002339sv000013CCsd00000008* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel - -pci:v0000105Dd00002339sv000013CCsd00000009* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel - -pci:v0000105Dd00002339sv000013CCsd0000000A* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel - -pci:v0000105Dd00002339sv000013CCsd0000000C* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel - -pci:v0000105Dd0000493D* - ID_PRODUCT_FROM_DATABASE=Imagine 128 T2R [Ticket to Ride] - -pci:v0000105Dd0000493Dsv000011A4sd0000000A* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head - -pci:v0000105Dd0000493Dsv000011A4sd0000000B* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head - -pci:v0000105Dd0000493Dsv000013CCsd00000002* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 4 Megapixel, Dual Head - -pci:v0000105Dd0000493Dsv000013CCsd00000003* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head - -pci:v0000105Dd0000493Dsv000013CCsd00000007* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head - -pci:v0000105Dd0000493Dsv000013CCsd00000008* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head - -pci:v0000105Dd0000493Dsv000013CCsd00000009* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head - -pci:v0000105Dd0000493Dsv000013CCsd0000000A* - ID_PRODUCT_FROM_DATABASE=Barco Metheus 5 Megapixel, Dual Head - -pci:v0000105Dd00005348* - ID_PRODUCT_FROM_DATABASE=Revolution 4 - -pci:v0000105Dd00005348sv0000105Dsd00000037* - ID_PRODUCT_FROM_DATABASE=Revolution IV-FP AGP (For SGI 1600SW) - -pci:v0000105Dd00005348sv000011A4sd00000028* - ID_PRODUCT_FROM_DATABASE=PVS5600M - -pci:v0000105Dd00005348sv000011A4sd00000038* - ID_PRODUCT_FROM_DATABASE=PVS5600D - -pci:v0000105E* - ID_VENDOR_FROM_DATABASE=Vtech Computers Ltd - -pci:v0000105F* - ID_VENDOR_FROM_DATABASE=Infotronic America Inc - -pci:v00001060* - ID_VENDOR_FROM_DATABASE=United Microelectronics [UMC] - -pci:v00001060d00000001* - ID_PRODUCT_FROM_DATABASE=UM82C881 - -pci:v00001060d00000002* - ID_PRODUCT_FROM_DATABASE=UM82C886 - -pci:v00001060d00000101* - ID_PRODUCT_FROM_DATABASE=UM8673F - -pci:v00001060d00000881* - ID_PRODUCT_FROM_DATABASE=UM8881 - -pci:v00001060d00000886* - ID_PRODUCT_FROM_DATABASE=UM8886F - -pci:v00001060d00000891* - ID_PRODUCT_FROM_DATABASE=UM8891A - -pci:v00001060d00001001* - ID_PRODUCT_FROM_DATABASE=UM886A - -pci:v00001060d0000673A* - ID_PRODUCT_FROM_DATABASE=UM8886BF - -pci:v00001060d0000673B* - ID_PRODUCT_FROM_DATABASE=EIDE Master/DMA - -pci:v00001060d00008710* - ID_PRODUCT_FROM_DATABASE=UM8710 - -pci:v00001060d0000886A* - ID_PRODUCT_FROM_DATABASE=UM8886A - -pci:v00001060d00008881* - ID_PRODUCT_FROM_DATABASE=UM8881F - -pci:v00001060d00008886* - ID_PRODUCT_FROM_DATABASE=UM8886F - -pci:v00001060d0000888A* - ID_PRODUCT_FROM_DATABASE=UM8886A - -pci:v00001060d00008891* - ID_PRODUCT_FROM_DATABASE=UM8891A - -pci:v00001060d00009017* - ID_PRODUCT_FROM_DATABASE=UM9017F - -pci:v00001060d00009018* - ID_PRODUCT_FROM_DATABASE=UM9018 - -pci:v00001060d00009026* - ID_PRODUCT_FROM_DATABASE=UM9026 - -pci:v00001060d0000E881* - ID_PRODUCT_FROM_DATABASE=UM8881N - -pci:v00001060d0000E886* - ID_PRODUCT_FROM_DATABASE=UM8886N - -pci:v00001060d0000E88A* - ID_PRODUCT_FROM_DATABASE=UM8886N - -pci:v00001060d0000E891* - ID_PRODUCT_FROM_DATABASE=UM8891N - -pci:v00001061* - ID_VENDOR_FROM_DATABASE=I.I.T. - -pci:v00001061d00000001* - ID_PRODUCT_FROM_DATABASE=AGX016 - -pci:v00001061d00000002* - ID_PRODUCT_FROM_DATABASE=IIT3204/3501 - -pci:v00001062* - ID_VENDOR_FROM_DATABASE=Maspar Computer Corp - -pci:v00001063* - ID_VENDOR_FROM_DATABASE=Ocean Office Automation - -pci:v00001064* - ID_VENDOR_FROM_DATABASE=Alcatel - -pci:v00001064d00001102* - ID_PRODUCT_FROM_DATABASE=Dynamite 2840 (ADSL PCI modem) - -pci:v00001065* - ID_VENDOR_FROM_DATABASE=Texas Microsystems - -pci:v00001066* - ID_VENDOR_FROM_DATABASE=PicoPower Technology - -pci:v00001066d00000000* - ID_PRODUCT_FROM_DATABASE=PT80C826 - -pci:v00001066d00000001* - ID_PRODUCT_FROM_DATABASE=PT86C521 [Vesuvius v1] Host Bridge - -pci:v00001066d00000002* - ID_PRODUCT_FROM_DATABASE=PT86C523 [Vesuvius v3] PCI-ISA Bridge Master - -pci:v00001066d00000003* - ID_PRODUCT_FROM_DATABASE=PT86C524 [Nile] PCI-to-PCI Bridge - -pci:v00001066d00000004* - ID_PRODUCT_FROM_DATABASE=PT86C525 [Nile-II] PCI-to-PCI Bridge - -pci:v00001066d00000005* - ID_PRODUCT_FROM_DATABASE=National PC87550 System Controller - -pci:v00001066d00008002* - ID_PRODUCT_FROM_DATABASE=PT86C523 [Vesuvius v3] PCI-ISA Bridge Slave - -pci:v00001067* - ID_VENDOR_FROM_DATABASE=Mitsubishi Electric - -pci:v00001067d00000301* - ID_PRODUCT_FROM_DATABASE=AccelGraphics AccelECLIPSE - -pci:v00001067d00000304* - ID_PRODUCT_FROM_DATABASE=AccelGALAXY A2100 [OEM Evans & Sutherland] - -pci:v00001067d00000308* - ID_PRODUCT_FROM_DATABASE=Tornado 3000 [OEM Evans & Sutherland] - -pci:v00001067d00001002* - ID_PRODUCT_FROM_DATABASE=VG500 [VolumePro Volume Rendering Accelerator] - -pci:v00001068* - ID_VENDOR_FROM_DATABASE=Diversified Technology - -pci:v00001069* - ID_VENDOR_FROM_DATABASE=Mylex Corporation - -pci:v00001069d00000001* - ID_PRODUCT_FROM_DATABASE=DAC960P - -pci:v00001069d00000002* - ID_PRODUCT_FROM_DATABASE=DAC960PD - -pci:v00001069d00000010* - ID_PRODUCT_FROM_DATABASE=DAC960PG - -pci:v00001069d00000020* - ID_PRODUCT_FROM_DATABASE=DAC960LA - -pci:v00001069d00000050* - ID_PRODUCT_FROM_DATABASE=AcceleRAID 352/170/160 support Device - -pci:v00001069d00000050sv00001069sd00000050* - ID_PRODUCT_FROM_DATABASE=AcceleRAID 352 support Device - -pci:v00001069d00000050sv00001069sd00000052* - ID_PRODUCT_FROM_DATABASE=AcceleRAID 170 support Device - -pci:v00001069d00000050sv00001069sd00000054* - ID_PRODUCT_FROM_DATABASE=AcceleRAID 160 support Device - -pci:v00001069d0000B166* - ID_PRODUCT_FROM_DATABASE=AcceleRAID 600/500/400/Sapphire support Device - -pci:v00001069d0000B166sv00001014sd00000242* - ID_PRODUCT_FROM_DATABASE=iSeries 2872 DASD IOA - -pci:v00001069d0000B166sv00001014sd00000266* - ID_PRODUCT_FROM_DATABASE=Dual Channel PCI-X U320 SCSI Adapter - -pci:v00001069d0000B166sv00001014sd00000278* - ID_PRODUCT_FROM_DATABASE=Dual Channel PCI-X U320 SCSI RAID Adapter - -pci:v00001069d0000B166sv00001014sd000002D3* - ID_PRODUCT_FROM_DATABASE=Dual Channel PCI-X U320 SCSI Adapter - -pci:v00001069d0000B166sv00001014sd000002D4* - ID_PRODUCT_FROM_DATABASE=Dual Channel PCI-X U320 SCSI RAID Adapter - -pci:v00001069d0000B166sv00001069sd00000200* - ID_PRODUCT_FROM_DATABASE=AcceleRAID 400, Single Channel, PCI-X, U320, SCSI RAID - -pci:v00001069d0000B166sv00001069sd00000202* - ID_PRODUCT_FROM_DATABASE=AcceleRAID Sapphire, Dual Channel, PCI-X, U320, SCSI RAID - -pci:v00001069d0000B166sv00001069sd00000204* - ID_PRODUCT_FROM_DATABASE=AcceleRAID 500, Dual Channel, Low-Profile, PCI-X, U320, SCSI RAID - -pci:v00001069d0000B166sv00001069sd00000206* - ID_PRODUCT_FROM_DATABASE=AcceleRAID 600, Dual Channel, PCI-X, U320, SCSI RAID - -pci:v00001069d0000BA55* - ID_PRODUCT_FROM_DATABASE=eXtremeRAID 1100 support Device - -pci:v00001069d0000BA56* - ID_PRODUCT_FROM_DATABASE=eXtremeRAID 2000/3000 support Device - -pci:v00001069d0000BA56sv00001069sd00000030* - ID_PRODUCT_FROM_DATABASE=eXtremeRAID 3000 support Device - -pci:v00001069d0000BA56sv00001069sd00000040* - ID_PRODUCT_FROM_DATABASE=eXtremeRAID 2000 support Device - -pci:v00001069d0000BA57* - ID_PRODUCT_FROM_DATABASE=eXtremeRAID 4000/5000 support Device - -pci:v00001069d0000BA57sv00001069sd00000072* - ID_PRODUCT_FROM_DATABASE=eXtremeRAID 5000 support Device - -pci:v0000106A* - ID_VENDOR_FROM_DATABASE=Aten Research Inc - -pci:v0000106B* - ID_VENDOR_FROM_DATABASE=Apple Inc. - -pci:v0000106Bd00000001* - ID_PRODUCT_FROM_DATABASE=Bandit PowerPC host bridge - -pci:v0000106Bd00000002* - ID_PRODUCT_FROM_DATABASE=Grand Central I/O - -pci:v0000106Bd00000003* - ID_PRODUCT_FROM_DATABASE=Control Video - -pci:v0000106Bd00000004* - ID_PRODUCT_FROM_DATABASE=PlanB Video-In - -pci:v0000106Bd00000007* - ID_PRODUCT_FROM_DATABASE=O'Hare I/O - -pci:v0000106Bd0000000C* - ID_PRODUCT_FROM_DATABASE=DOS on Mac - -pci:v0000106Bd0000000E* - ID_PRODUCT_FROM_DATABASE=Hydra Mac I/O - -pci:v0000106Bd00000010* - ID_PRODUCT_FROM_DATABASE=Heathrow Mac I/O - -pci:v0000106Bd00000017* - ID_PRODUCT_FROM_DATABASE=Paddington Mac I/O - -pci:v0000106Bd00000018* - ID_PRODUCT_FROM_DATABASE=UniNorth FireWire - -pci:v0000106Bd00000019* - ID_PRODUCT_FROM_DATABASE=KeyLargo USB - -pci:v0000106Bd0000001E* - ID_PRODUCT_FROM_DATABASE=UniNorth Internal PCI - -pci:v0000106Bd0000001F* - ID_PRODUCT_FROM_DATABASE=UniNorth PCI - -pci:v0000106Bd00000020* - ID_PRODUCT_FROM_DATABASE=UniNorth AGP - -pci:v0000106Bd00000021* - ID_PRODUCT_FROM_DATABASE=UniNorth GMAC (Sun GEM) - -pci:v0000106Bd00000022* - ID_PRODUCT_FROM_DATABASE=KeyLargo Mac I/O - -pci:v0000106Bd00000024* - ID_PRODUCT_FROM_DATABASE=UniNorth/Pangea GMAC (Sun GEM) - -pci:v0000106Bd00000025* - ID_PRODUCT_FROM_DATABASE=KeyLargo/Pangea Mac I/O - -pci:v0000106Bd00000026* - ID_PRODUCT_FROM_DATABASE=KeyLargo/Pangea USB - -pci:v0000106Bd00000027* - ID_PRODUCT_FROM_DATABASE=UniNorth/Pangea AGP - -pci:v0000106Bd00000028* - ID_PRODUCT_FROM_DATABASE=UniNorth/Pangea PCI - -pci:v0000106Bd00000029* - ID_PRODUCT_FROM_DATABASE=UniNorth/Pangea Internal PCI - -pci:v0000106Bd0000002D* - ID_PRODUCT_FROM_DATABASE=UniNorth 1.5 AGP - -pci:v0000106Bd0000002E* - ID_PRODUCT_FROM_DATABASE=UniNorth 1.5 PCI - -pci:v0000106Bd0000002F* - ID_PRODUCT_FROM_DATABASE=UniNorth 1.5 Internal PCI - -pci:v0000106Bd00000030* - ID_PRODUCT_FROM_DATABASE=UniNorth/Pangea FireWire - -pci:v0000106Bd00000031* - ID_PRODUCT_FROM_DATABASE=UniNorth 2 FireWire - -pci:v0000106Bd00000031sv0000106Bsd00005811* - ID_PRODUCT_FROM_DATABASE=iBook G4 2004 - -pci:v0000106Bd00000032* - ID_PRODUCT_FROM_DATABASE=UniNorth 2 GMAC (Sun GEM) - -pci:v0000106Bd00000033* - ID_PRODUCT_FROM_DATABASE=UniNorth 2 ATA/100 - -pci:v0000106Bd00000034* - ID_PRODUCT_FROM_DATABASE=UniNorth 2 AGP - -pci:v0000106Bd00000035* - ID_PRODUCT_FROM_DATABASE=UniNorth 2 PCI - -pci:v0000106Bd00000036* - ID_PRODUCT_FROM_DATABASE=UniNorth 2 Internal PCI - -pci:v0000106Bd0000003B* - ID_PRODUCT_FROM_DATABASE=UniNorth/Intrepid ATA/100 - -pci:v0000106Bd0000003E* - ID_PRODUCT_FROM_DATABASE=KeyLargo/Intrepid Mac I/O - -pci:v0000106Bd0000003F* - ID_PRODUCT_FROM_DATABASE=KeyLargo/Intrepid USB - -pci:v0000106Bd00000040* - ID_PRODUCT_FROM_DATABASE=K2 KeyLargo USB - -pci:v0000106Bd00000041* - ID_PRODUCT_FROM_DATABASE=K2 KeyLargo Mac/IO - -pci:v0000106Bd00000042* - ID_PRODUCT_FROM_DATABASE=K2 FireWire - -pci:v0000106Bd00000043* - ID_PRODUCT_FROM_DATABASE=K2 ATA/100 - -pci:v0000106Bd00000045* - ID_PRODUCT_FROM_DATABASE=K2 HT-PCI Bridge - -pci:v0000106Bd00000046* - ID_PRODUCT_FROM_DATABASE=K2 HT-PCI Bridge - -pci:v0000106Bd00000047* - ID_PRODUCT_FROM_DATABASE=K2 HT-PCI Bridge - -pci:v0000106Bd00000048* - ID_PRODUCT_FROM_DATABASE=K2 HT-PCI Bridge - -pci:v0000106Bd00000049* - ID_PRODUCT_FROM_DATABASE=K2 HT-PCI Bridge - -pci:v0000106Bd0000004A* - ID_PRODUCT_FROM_DATABASE=CPC945 HT Bridge - -pci:v0000106Bd0000004B* - ID_PRODUCT_FROM_DATABASE=U3 AGP - -pci:v0000106Bd0000004C* - ID_PRODUCT_FROM_DATABASE=K2 GMAC (Sun GEM) - -pci:v0000106Bd0000004F* - ID_PRODUCT_FROM_DATABASE=Shasta Mac I/O - -pci:v0000106Bd00000050* - ID_PRODUCT_FROM_DATABASE=Shasta IDE - -pci:v0000106Bd00000051* - ID_PRODUCT_FROM_DATABASE=Shasta (Sun GEM) - -pci:v0000106Bd00000052* - ID_PRODUCT_FROM_DATABASE=Shasta Firewire - -pci:v0000106Bd00000053* - ID_PRODUCT_FROM_DATABASE=Shasta PCI Bridge - -pci:v0000106Bd00000054* - ID_PRODUCT_FROM_DATABASE=Shasta PCI Bridge - -pci:v0000106Bd00000055* - ID_PRODUCT_FROM_DATABASE=Shasta PCI Bridge - -pci:v0000106Bd00000056* - ID_PRODUCT_FROM_DATABASE=U4 PCIe - -pci:v0000106Bd00000057* - ID_PRODUCT_FROM_DATABASE=U3 HT Bridge - -pci:v0000106Bd00000058* - ID_PRODUCT_FROM_DATABASE=U3L AGP Bridge - -pci:v0000106Bd00000059* - ID_PRODUCT_FROM_DATABASE=U3H AGP Bridge - -pci:v0000106Bd0000005B* - ID_PRODUCT_FROM_DATABASE=CPC945 PCIe Bridge - -pci:v0000106Bd00000066* - ID_PRODUCT_FROM_DATABASE=Intrepid2 AGP Bridge - -pci:v0000106Bd00000067* - ID_PRODUCT_FROM_DATABASE=Intrepid2 PCI Bridge - -pci:v0000106Bd00000068* - ID_PRODUCT_FROM_DATABASE=Intrepid2 PCI Bridge - -pci:v0000106Bd00000069* - ID_PRODUCT_FROM_DATABASE=Intrepid2 ATA/100 - -pci:v0000106Bd0000006A* - ID_PRODUCT_FROM_DATABASE=Intrepid2 Firewire - -pci:v0000106Bd0000006B* - ID_PRODUCT_FROM_DATABASE=Intrepid2 GMAC (Sun GEM) - -pci:v0000106Bd00000074* - ID_PRODUCT_FROM_DATABASE=U4 HT Bridge - -pci:v0000106Bd00001645* - ID_PRODUCT_FROM_DATABASE=Broadcom NetXtreme BCM5701 Gigabit Ethernet - -pci:v0000106C* - ID_VENDOR_FROM_DATABASE=Hynix Semiconductor - -pci:v0000106Cd00008139* - ID_PRODUCT_FROM_DATABASE=8139c 100BaseTX Ethernet Controller - -pci:v0000106Cd00008801* - ID_PRODUCT_FROM_DATABASE=Dual Pentium ISA/PCI Motherboard - -pci:v0000106Cd00008802* - ID_PRODUCT_FROM_DATABASE=PowerPC ISA/PCI Motherboard - -pci:v0000106Cd00008803* - ID_PRODUCT_FROM_DATABASE=Dual Window Graphics Accelerator - -pci:v0000106Cd00008804* - ID_PRODUCT_FROM_DATABASE=LAN Controller - -pci:v0000106Cd00008805* - ID_PRODUCT_FROM_DATABASE=100-BaseT LAN - -pci:v0000106D* - ID_VENDOR_FROM_DATABASE=Sequent Computer Systems - -pci:v0000106E* - ID_VENDOR_FROM_DATABASE=DFI, Inc - -pci:v0000106F* - ID_VENDOR_FROM_DATABASE=City Gate Development Ltd - -pci:v00001070* - ID_VENDOR_FROM_DATABASE=Daewoo Telecom Ltd - -pci:v00001071* - ID_VENDOR_FROM_DATABASE=Mitac - -pci:v00001071d00008160* - ID_PRODUCT_FROM_DATABASE=Mitac 8060B Mobile Platform - -pci:v00001072* - ID_VENDOR_FROM_DATABASE=GIT Co Ltd - -pci:v00001073* - ID_VENDOR_FROM_DATABASE=Yamaha Corporation - -pci:v00001073d00000001* - ID_PRODUCT_FROM_DATABASE=3D GUI Accelerator - -pci:v00001073d00000002* - ID_PRODUCT_FROM_DATABASE=YGV615 [RPA3 3D-Graphics Controller] - -pci:v00001073d00000003* - ID_PRODUCT_FROM_DATABASE=YMF-740 - -pci:v00001073d00000004* - ID_PRODUCT_FROM_DATABASE=YMF-724 - -pci:v00001073d00000004sv00001073sd00000004* - ID_PRODUCT_FROM_DATABASE=YMF724-Based PCI Audio Adapter - -pci:v00001073d00000005* - ID_PRODUCT_FROM_DATABASE=DS1 Audio - -pci:v00001073d00000005sv00001073sd00000005* - ID_PRODUCT_FROM_DATABASE=DS-XG PCI Audio CODEC - -pci:v00001073d00000006* - ID_PRODUCT_FROM_DATABASE=DS1 Audio - -pci:v00001073d00000008* - ID_PRODUCT_FROM_DATABASE=DS1 Audio - -pci:v00001073d00000008sv00001073sd00000008* - ID_PRODUCT_FROM_DATABASE=DS-XG PCI Audio CODEC - -pci:v00001073d0000000A* - ID_PRODUCT_FROM_DATABASE=DS1L Audio - -pci:v00001073d0000000Asv00001073sd00000004* - ID_PRODUCT_FROM_DATABASE=DS-XG PCI Audio CODEC - -pci:v00001073d0000000Asv00001073sd0000000A* - ID_PRODUCT_FROM_DATABASE=DS-XG PCI Audio CODEC - -pci:v00001073d0000000Asv00008086sd00004D55* - ID_PRODUCT_FROM_DATABASE=DS-XG PCI Audio CODEC [Intel MU440EX] - -pci:v00001073d0000000C* - ID_PRODUCT_FROM_DATABASE=YMF-740C [DS-1L Audio Controller] - -pci:v00001073d0000000Csv0000107Asd0000000C* - ID_PRODUCT_FROM_DATABASE=DS-XG PCI Audio CODEC - -pci:v00001073d0000000D* - ID_PRODUCT_FROM_DATABASE=YMF-724F [DS-1 Audio Controller] - -pci:v00001073d0000000Dsv00001073sd0000000D* - ID_PRODUCT_FROM_DATABASE=DS-XG PCI Audio CODEC - -pci:v00001073d00000010* - ID_PRODUCT_FROM_DATABASE=YMF-744B [DS-1S Audio Controller] - -pci:v00001073d00000010sv00001073sd00000006* - ID_PRODUCT_FROM_DATABASE=DS-XG PCI Audio CODEC - -pci:v00001073d00000010sv00001073sd00000010* - ID_PRODUCT_FROM_DATABASE=DS-XG PCI Audio CODEC - -pci:v00001073d00000012* - ID_PRODUCT_FROM_DATABASE=YMF-754 [DS-1E Audio Controller] - -pci:v00001073d00000012sv00001073sd00000012* - ID_PRODUCT_FROM_DATABASE=DS-XG PCI Audio Codec - -pci:v00001073d00000020* - ID_PRODUCT_FROM_DATABASE=DS-1 Audio - -pci:v00001073d00001000* - ID_PRODUCT_FROM_DATABASE=SW1000XG [XG Factory] - -pci:v00001073d00002000* - ID_PRODUCT_FROM_DATABASE=DS2416 Digital Mixing Card - -pci:v00001073d00002000sv00001073sd00002000* - ID_PRODUCT_FROM_DATABASE=DS2416 Digital Mixing Card - -pci:v00001074* - ID_VENDOR_FROM_DATABASE=NexGen Microsystems - -pci:v00001074d00004E78* - ID_PRODUCT_FROM_DATABASE=82c500/1 - -pci:v00001075* - ID_VENDOR_FROM_DATABASE=Advanced Integrations Research - -pci:v00001076* - ID_VENDOR_FROM_DATABASE=Chaintech Computer Co. Ltd - -pci:v00001077* - ID_VENDOR_FROM_DATABASE=QLogic Corp. - -pci:v00001077d00001016* - ID_PRODUCT_FROM_DATABASE=ISP10160 Single Channel Ultra3 SCSI Processor - -pci:v00001077d00001020* - ID_PRODUCT_FROM_DATABASE=ISP1020 Fast-wide SCSI - -pci:v00001077d00001022* - ID_PRODUCT_FROM_DATABASE=ISP1022 Fast-wide SCSI - -pci:v00001077d00001080* - ID_PRODUCT_FROM_DATABASE=ISP1080 SCSI Host Adapter - -pci:v00001077d00001216* - ID_PRODUCT_FROM_DATABASE=ISP12160 Dual Channel Ultra3 SCSI Processor - -pci:v00001077d00001216sv0000101Esd00008471* - ID_PRODUCT_FROM_DATABASE=QLA12160 on AMI MegaRAID - -pci:v00001077d00001216sv0000101Esd00008493* - ID_PRODUCT_FROM_DATABASE=QLA12160 on AMI MegaRAID - -pci:v00001077d00001240* - ID_PRODUCT_FROM_DATABASE=ISP1240 SCSI Host Adapter - -pci:v00001077d00001280* - ID_PRODUCT_FROM_DATABASE=ISP1280 SCSI Host Adapter - -pci:v00001077d00002020* - ID_PRODUCT_FROM_DATABASE=ISP2020A Fast!SCSI Basic Adapter - -pci:v00001077d00002031* - ID_PRODUCT_FROM_DATABASE=ISP8324-based 16Gb Fibre Channel to PCI Express Adapter - -pci:v00001077d00002100* - ID_PRODUCT_FROM_DATABASE=QLA2100 64-bit Fibre Channel Adapter - -pci:v00001077d00002100sv00001077sd00000001* - ID_PRODUCT_FROM_DATABASE=QLA2100 64-bit Fibre Channel Adapter - -pci:v00001077d00002200* - ID_PRODUCT_FROM_DATABASE=QLA2200 64-bit Fibre Channel Adapter - -pci:v00001077d00002200sv00001077sd00000002* - ID_PRODUCT_FROM_DATABASE=QLA2200 - -pci:v00001077d00002300* - ID_PRODUCT_FROM_DATABASE=QLA2300 64-bit Fibre Channel Adapter - -pci:v00001077d00002312* - ID_PRODUCT_FROM_DATABASE=ISP2312-based 2Gb Fibre Channel to PCI-X HBA - -pci:v00001077d00002312sv0000103Csd00000131* - ID_PRODUCT_FROM_DATABASE=2Gb Fibre Channel - Single port [A7538A] - -pci:v00001077d00002312sv0000103Csd000012BA* - ID_PRODUCT_FROM_DATABASE=2Gb Fibre Channel - Dual port [A6826A] - -pci:v00001077d00002322* - ID_PRODUCT_FROM_DATABASE=ISP2322-based 2Gb Fibre Channel to PCI-X HBA - -pci:v00001077d00002422* - ID_PRODUCT_FROM_DATABASE=ISP2422-based 4Gb Fibre Channel to PCI-X HBA - -pci:v00001077d00002422sv0000103Csd000012D7* - ID_PRODUCT_FROM_DATABASE=4Gb Fibre Channel [AB379A] - -pci:v00001077d00002422sv0000103Csd000012DD* - ID_PRODUCT_FROM_DATABASE=4Gb Fibre Channel [AB429A] - -pci:v00001077d00002432* - ID_PRODUCT_FROM_DATABASE=ISP2432-based 4Gb Fibre Channel to PCI Express HBA - -pci:v00001077d00002532* - ID_PRODUCT_FROM_DATABASE=ISP2532-based 8Gb Fibre Channel to PCI Express HBA - -pci:v00001077d00002532sv00001077sd00000167* - ID_PRODUCT_FROM_DATABASE=QME2572 Dual Port FC8 HBA Mezzanine - -pci:v00001077d00003022* - ID_PRODUCT_FROM_DATABASE=ISP4022-based Ethernet NIC - -pci:v00001077d00003032* - ID_PRODUCT_FROM_DATABASE=ISP4032-based Ethernet IPv6 NIC - -pci:v00001077d00004010* - ID_PRODUCT_FROM_DATABASE=ISP4010-based iSCSI TOE HBA - -pci:v00001077d00004022* - ID_PRODUCT_FROM_DATABASE=ISP4022-based iSCSI TOE HBA - -pci:v00001077d00004032* - ID_PRODUCT_FROM_DATABASE=ISP4032-based iSCSI TOE IPv6 HBA - -pci:v00001077d00005432* - ID_PRODUCT_FROM_DATABASE=SP232-based 4Gb Fibre Channel to PCI Express HBA - -pci:v00001077d00006312* - ID_PRODUCT_FROM_DATABASE=SP202-based 2Gb Fibre Channel to PCI-X HBA - -pci:v00001077d00006322* - ID_PRODUCT_FROM_DATABASE=SP212-based 2Gb Fibre Channel to PCI-X HBA - -pci:v00001077d00007220* - ID_PRODUCT_FROM_DATABASE=IBA7220 InfiniBand HCA - -pci:v00001077d00007322* - ID_PRODUCT_FROM_DATABASE=IBA7322 QDR InfiniBand HCA - -pci:v00001077d00008000* - ID_PRODUCT_FROM_DATABASE=10GbE Converged Network Adapter (TCP/IP Networking) - -pci:v00001077d00008001* - ID_PRODUCT_FROM_DATABASE=10GbE Converged Network Adapter (FCoE) - -pci:v00001077d00008020* - ID_PRODUCT_FROM_DATABASE=cLOM8214 1/10GbE Controller - -pci:v00001077d00008020sv0000103Csd00003346* - ID_PRODUCT_FROM_DATABASE=CN1000Q Dual Port Converged Network Adapter - -pci:v00001077d00008020sv0000103Csd00003733* - ID_PRODUCT_FROM_DATABASE=NC523SFP 10Gb 2-port Server Adapter - -pci:v00001077d00008020sv00001077sd00000203* - ID_PRODUCT_FROM_DATABASE=8200 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking) - -pci:v00001077d00008020sv00001077sd00000207* - ID_PRODUCT_FROM_DATABASE=8200 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking) - -pci:v00001077d00008020sv00001077sd0000020B* - ID_PRODUCT_FROM_DATABASE=3200 Series Dual Port 10Gb Intelligent Ethernet Adapter - -pci:v00001077d00008020sv00001077sd0000020C* - ID_PRODUCT_FROM_DATABASE=3200 Series Quad Port 1Gb Intelligent Ethernet Adapter - -pci:v00001077d00008020sv00001077sd0000020F* - ID_PRODUCT_FROM_DATABASE=3200 Series Single Port 10Gb Intelligent Ethernet Adapter - -pci:v00001077d00008020sv00001077sd00000210* - ID_PRODUCT_FROM_DATABASE=QME8242-k 10GbE Dual Port Mezzanine Card - -pci:v00001077d00008021* - ID_PRODUCT_FROM_DATABASE=8200 Series 10GbE Converged Network Adapter (FCoE) - -pci:v00001077d00008021sv0000103Csd00003348* - ID_PRODUCT_FROM_DATABASE=CN1000Q Dual Port Converged Network Adapter - -pci:v00001077d00008021sv00001077sd00000211* - ID_PRODUCT_FROM_DATABASE=QME8242-k 10GbE Dual Port Mezzanine Card, FCoE - -pci:v00001077d00008022* - ID_PRODUCT_FROM_DATABASE=8200 Series 10GbE Converged Network Adapter (iSCSI) - -pci:v00001077d00008022sv0000103Csd00003347* - ID_PRODUCT_FROM_DATABASE=CN1000Q Dual Port Converged Network Adapter - -pci:v00001077d00008022sv00001077sd00000212* - ID_PRODUCT_FROM_DATABASE=QME8242-k 10GbE Dual Port Mezzanine Card, iSCSI - -pci:v00001077d00008030* - ID_PRODUCT_FROM_DATABASE=ISP8324 1/10GbE Converged Network Controller - -pci:v00001077d00008030sv00001077sd00000243* - ID_PRODUCT_FROM_DATABASE=8300 Series Single Port 10GbE Converged Network Adapter (TCP/IP Networking) - -pci:v00001077d00008030sv00001077sd00000246* - ID_PRODUCT_FROM_DATABASE=8300 Series Dual Port 10GbE Converged Network Adapter (TCP/IP Networking) - -pci:v00001077d00008031* - ID_PRODUCT_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (FCoE) - -pci:v00001077d00008032* - ID_PRODUCT_FROM_DATABASE=8300 Series 10GbE Converged Network Adapter (iSCSI) - -pci:v00001077d00008432* - ID_PRODUCT_FROM_DATABASE=ISP2432M-based 10GbE Converged Network Adapter (CNA) - -pci:v00001078* - ID_VENDOR_FROM_DATABASE=Cyrix Corporation - -pci:v00001078d00000000* - ID_PRODUCT_FROM_DATABASE=5510 [Grappa] - -pci:v00001078d00000001* - ID_PRODUCT_FROM_DATABASE=PCI Master - -pci:v00001078d00000002* - ID_PRODUCT_FROM_DATABASE=5520 [Cognac] - -pci:v00001078d00000100* - ID_PRODUCT_FROM_DATABASE=5530 Legacy [Kahlua] - -pci:v00001078d00000101* - ID_PRODUCT_FROM_DATABASE=5530 SMI [Kahlua] - -pci:v00001078d00000102* - ID_PRODUCT_FROM_DATABASE=5530 IDE [Kahlua] - -pci:v00001078d00000103* - ID_PRODUCT_FROM_DATABASE=5530 Audio [Kahlua] - -pci:v00001078d00000104* - ID_PRODUCT_FROM_DATABASE=5530 Video [Kahlua] - -pci:v00001078d00000400* - ID_PRODUCT_FROM_DATABASE=ZFMicro PCI Bridge - -pci:v00001078d00000401* - ID_PRODUCT_FROM_DATABASE=ZFMicro Chipset SMI - -pci:v00001078d00000402* - ID_PRODUCT_FROM_DATABASE=ZFMicro Chipset IDE - -pci:v00001078d00000403* - ID_PRODUCT_FROM_DATABASE=ZFMicro Expansion Bus - -pci:v00001079* - ID_VENDOR_FROM_DATABASE=I-Bus - -pci:v0000107A* - ID_VENDOR_FROM_DATABASE=NetWorth - -pci:v0000107B* - ID_VENDOR_FROM_DATABASE=Gateway, Inc. - -pci:v0000107C* - ID_VENDOR_FROM_DATABASE=LG Electronics [Lucky Goldstar Co. Ltd] - -pci:v0000107D* - ID_VENDOR_FROM_DATABASE=LeadTek Research Inc. - -pci:v0000107Dd00000000* - ID_PRODUCT_FROM_DATABASE=P86C850 - -pci:v0000107E* - ID_VENDOR_FROM_DATABASE=Interphase Corporation - -pci:v0000107Ed00000001* - ID_PRODUCT_FROM_DATABASE=5515 ATM Adapter [Flipper] - -pci:v0000107Ed00000002* - ID_PRODUCT_FROM_DATABASE=100 VG AnyLan Controller - -pci:v0000107Ed00000004* - ID_PRODUCT_FROM_DATABASE=5526 Fibre Channel Host Adapter - -pci:v0000107Ed00000005* - ID_PRODUCT_FROM_DATABASE=x526 Fibre Channel Host Adapter - -pci:v0000107Ed00000008* - ID_PRODUCT_FROM_DATABASE=5525/5575 ATM Adapter (155 Mbit) [Atlantic] - -pci:v0000107Ed00009003* - ID_PRODUCT_FROM_DATABASE=5535-4P-BRI-ST - -pci:v0000107Ed00009007* - ID_PRODUCT_FROM_DATABASE=5535-4P-BRI-U - -pci:v0000107Ed00009008* - ID_PRODUCT_FROM_DATABASE=5535-1P-SR - -pci:v0000107Ed0000900C* - ID_PRODUCT_FROM_DATABASE=5535-1P-SR-ST - -pci:v0000107Ed0000900E* - ID_PRODUCT_FROM_DATABASE=5535-1P-SR-U - -pci:v0000107Ed00009011* - ID_PRODUCT_FROM_DATABASE=5535-1P-PRI - -pci:v0000107Ed00009013* - ID_PRODUCT_FROM_DATABASE=5535-2P-PRI - -pci:v0000107Ed00009023* - ID_PRODUCT_FROM_DATABASE=5536-4P-BRI-ST - -pci:v0000107Ed00009027* - ID_PRODUCT_FROM_DATABASE=5536-4P-BRI-U - -pci:v0000107Ed00009031* - ID_PRODUCT_FROM_DATABASE=5536-1P-PRI - -pci:v0000107Ed00009033* - ID_PRODUCT_FROM_DATABASE=5536-2P-PRI - -pci:v0000107F* - ID_VENDOR_FROM_DATABASE=Data Technology Corporation - -pci:v0000107Fd00000802* - ID_PRODUCT_FROM_DATABASE=SL82C105 - -pci:v00001080* - ID_VENDOR_FROM_DATABASE=Contaq Microsystems - -pci:v00001080d00000600* - ID_PRODUCT_FROM_DATABASE=82C599 - -pci:v00001080d0000C691* - ID_PRODUCT_FROM_DATABASE=Cypress CY82C691 - -pci:v00001080d0000C693* - ID_PRODUCT_FROM_DATABASE=82c693 - -pci:v00001081* - ID_VENDOR_FROM_DATABASE=Supermac Technology - -pci:v00001081d00000D47* - ID_PRODUCT_FROM_DATABASE=Radius PCI to NuBUS Bridge - -pci:v00001082* - ID_VENDOR_FROM_DATABASE=EFA Corporation of America - -pci:v00001083* - ID_VENDOR_FROM_DATABASE=Forex Computer Corporation - -pci:v00001083d00000001* - ID_PRODUCT_FROM_DATABASE=FR710 - -pci:v00001084* - ID_VENDOR_FROM_DATABASE=Parador - -pci:v00001085* - ID_VENDOR_FROM_DATABASE=Tulip Computers Int.B.V. - -pci:v00001086* - ID_VENDOR_FROM_DATABASE=J. Bond Computer Systems - -pci:v00001087* - ID_VENDOR_FROM_DATABASE=Cache Computer - -pci:v00001088* - ID_VENDOR_FROM_DATABASE=Microcomputer Systems (M) Son - -pci:v00001089* - ID_VENDOR_FROM_DATABASE=Data General Corporation - -pci:v0000108A* - ID_VENDOR_FROM_DATABASE=SBS Technologies - -pci:v0000108Ad00000001* - ID_PRODUCT_FROM_DATABASE=VME Bridge Model 617 - -pci:v0000108Ad00000010* - ID_PRODUCT_FROM_DATABASE=VME Bridge Model 618 - -pci:v0000108Ad00000040* - ID_PRODUCT_FROM_DATABASE=dataBLIZZARD - -pci:v0000108Ad00003000* - ID_PRODUCT_FROM_DATABASE=VME Bridge Model 2706 - -pci:v0000108C* - ID_VENDOR_FROM_DATABASE=Oakleigh Systems Inc. - -pci:v0000108D* - ID_VENDOR_FROM_DATABASE=Olicom - -pci:v0000108Dd00000001* - ID_PRODUCT_FROM_DATABASE=Token-Ring 16/4 PCI Adapter (3136/3137) - -pci:v0000108Dd00000002* - ID_PRODUCT_FROM_DATABASE=16/4 Token Ring - -pci:v0000108Dd00000004* - ID_PRODUCT_FROM_DATABASE=RapidFire 3139 Token-Ring 16/4 PCI Adapter - -pci:v0000108Dd00000004sv0000108Dsd00000004* - ID_PRODUCT_FROM_DATABASE=OC-3139/3140 RapidFire Token-Ring 16/4 Adapter - -pci:v0000108Dd00000005* - ID_PRODUCT_FROM_DATABASE=GoCard 3250 Token-Ring 16/4 CardBus PC Card - -pci:v0000108Dd00000006* - ID_PRODUCT_FROM_DATABASE=OC-3530 RapidFire Token-Ring 100 - -pci:v0000108Dd00000007* - ID_PRODUCT_FROM_DATABASE=RapidFire 3141 Token-Ring 16/4 PCI Fiber Adapter - -pci:v0000108Dd00000007sv0000108Dsd00000007* - ID_PRODUCT_FROM_DATABASE=OC-3141 RapidFire Token-Ring 16/4 Adapter - -pci:v0000108Dd00000008* - ID_PRODUCT_FROM_DATABASE=RapidFire 3540 HSTR 100/16/4 PCI Adapter - -pci:v0000108Dd00000008sv0000108Dsd00000008* - ID_PRODUCT_FROM_DATABASE=OC-3540 RapidFire HSTR 100/16/4 Adapter - -pci:v0000108Dd00000011* - ID_PRODUCT_FROM_DATABASE=OC-2315 - -pci:v0000108Dd00000012* - ID_PRODUCT_FROM_DATABASE=OC-2325 - -pci:v0000108Dd00000013* - ID_PRODUCT_FROM_DATABASE=OC-2183/2185 - -pci:v0000108Dd00000014* - ID_PRODUCT_FROM_DATABASE=OC-2326 - -pci:v0000108Dd00000019* - ID_PRODUCT_FROM_DATABASE=OC-2327/2250 10/100 Ethernet Adapter - -pci:v0000108Dd00000019sv0000108Dsd00000016* - ID_PRODUCT_FROM_DATABASE=OC-2327 Rapidfire 10/100 Ethernet Adapter - -pci:v0000108Dd00000019sv0000108Dsd00000017* - ID_PRODUCT_FROM_DATABASE=OC-2250 GoCard 10/100 Ethernet Adapter - -pci:v0000108Dd00000021* - ID_PRODUCT_FROM_DATABASE=OC-6151/6152 [RapidFire ATM 155] - -pci:v0000108Dd00000022* - ID_PRODUCT_FROM_DATABASE=ATM Adapter - -pci:v0000108E* - ID_VENDOR_FROM_DATABASE=Oracle/SUN - -pci:v0000108Ed00000001* - ID_PRODUCT_FROM_DATABASE=EBUS - -pci:v0000108Ed00001000* - ID_PRODUCT_FROM_DATABASE=EBUS - -pci:v0000108Ed00001001* - ID_PRODUCT_FROM_DATABASE=Happy Meal 10/100 Ethernet [hme] - -pci:v0000108Ed00001100* - ID_PRODUCT_FROM_DATABASE=RIO EBUS - -pci:v0000108Ed00001100sv0000108Esd00001100* - ID_PRODUCT_FROM_DATABASE=RIO EBUS on Blade 100 motherboard - -pci:v0000108Ed00001101* - ID_PRODUCT_FROM_DATABASE=RIO 10/100 Ethernet [eri] - -pci:v0000108Ed00001101sv0000108Esd00001101* - ID_PRODUCT_FROM_DATABASE=RIO GEM on Blade 100 motherboard - -pci:v0000108Ed00001102* - ID_PRODUCT_FROM_DATABASE=RIO 1394 - -pci:v0000108Ed00001102sv0000108Esd00001102* - ID_PRODUCT_FROM_DATABASE=RIO 1394 on Blade 100 motherboard - -pci:v0000108Ed00001103* - ID_PRODUCT_FROM_DATABASE=RIO USB - -pci:v0000108Ed00001103sv0000108Esd00001103* - ID_PRODUCT_FROM_DATABASE=RIO USB on Blade 100 motherboard - -pci:v0000108Ed00001647* - ID_PRODUCT_FROM_DATABASE=Broadcom 570x 10/100/1000 Ethernet [bge] - -pci:v0000108Ed00001648* - ID_PRODUCT_FROM_DATABASE=Broadcom 570x 10/100/1000 Ethernet [bge] - -pci:v0000108Ed000016A7* - ID_PRODUCT_FROM_DATABASE=Broadcom 570x 10/100/1000 Ethernet [bge] - -pci:v0000108Ed000016A8* - ID_PRODUCT_FROM_DATABASE=Broadcom 570x 10/100/1000 Ethernet [bge] - -pci:v0000108Ed00002BAD* - ID_PRODUCT_FROM_DATABASE=GEM 10/100/1000 Ethernet [ge] - -pci:v0000108Ed00005000* - ID_PRODUCT_FROM_DATABASE=Simba Advanced PCI Bridge - -pci:v0000108Ed00005000sv0000108Esd00005000* - ID_PRODUCT_FROM_DATABASE=Netra AX1105-500 - -pci:v0000108Ed00005043* - ID_PRODUCT_FROM_DATABASE=SunPCI Co-processor - -pci:v0000108Ed00005CA0* - ID_PRODUCT_FROM_DATABASE=Crypto Accelerator 6000 [mca] - -pci:v0000108Ed00006300* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006301* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006302* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006303* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006310* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006311* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006312* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006313* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006320* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006323* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006330* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006331* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006332* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006333* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006340* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006343* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006350* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006353* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed00006722* - ID_PRODUCT_FROM_DATABASE=Intel 21554 PCI-PCI bus bridge [db21554] - -pci:v0000108Ed0000676E* - ID_PRODUCT_FROM_DATABASE=SunPCiIII - -pci:v0000108Ed00007063* - ID_PRODUCT_FROM_DATABASE=SunPCiII / SunPCiIIpro - -pci:v0000108Ed00008000* - ID_PRODUCT_FROM_DATABASE=Psycho PCI Bus Module - -pci:v0000108Ed00008001* - ID_PRODUCT_FROM_DATABASE=Schizo PCI Bus Module - -pci:v0000108Ed00008002* - ID_PRODUCT_FROM_DATABASE=Schizo+ PCI Bus Module - -pci:v0000108Ed000080F0* - ID_PRODUCT_FROM_DATABASE=PCIe switch [px] - -pci:v0000108Ed000080F8* - ID_PRODUCT_FROM_DATABASE=PCIe switch [px] - -pci:v0000108Ed00009010* - ID_PRODUCT_FROM_DATABASE=PCIe/PCI bridge switch [pxb_plx] - -pci:v0000108Ed00009020* - ID_PRODUCT_FROM_DATABASE=PCIe/PCI bridge switch [pxb_plx] - -pci:v0000108Ed00009102* - ID_PRODUCT_FROM_DATABASE=Davicom Fast Ethernet driver for Davicom DM9102A [dmfe] - -pci:v0000108Ed0000A000* - ID_PRODUCT_FROM_DATABASE=Psycho UPA-PCI Bus Module [pcipsy] - -pci:v0000108Ed0000A001* - ID_PRODUCT_FROM_DATABASE=Psycho UPA-PCI Bus Module [pcipsy] - -pci:v0000108Ed0000A001sv0000108Esd0000A001* - ID_PRODUCT_FROM_DATABASE=Ultra IIe on Blade 100 motherboard - -pci:v0000108Ed0000A801* - ID_PRODUCT_FROM_DATABASE=Schizo Fireplane-PCI bus bridge module [pcisch] - -pci:v0000108Ed0000AAAA* - ID_PRODUCT_FROM_DATABASE=Multithreaded Shared 10GbE Ethernet Network Controller - -pci:v0000108Ed0000ABBA* - ID_PRODUCT_FROM_DATABASE=Cassini 10/100/1000 - -pci:v0000108Ed0000ABCD* - ID_PRODUCT_FROM_DATABASE=Multithreaded 10-Gigabit Ethernet Network Controller - -pci:v0000108Ed0000C416* - ID_PRODUCT_FROM_DATABASE=Sun Fire System/System Controller Interface chip [sbbc] - -pci:v0000108F* - ID_VENDOR_FROM_DATABASE=Systemsoft - -pci:v00001090* - ID_VENDOR_FROM_DATABASE=Compro Computer Services, Inc. - -pci:v00001090d00004610* - ID_PRODUCT_FROM_DATABASE=PCI RTOM - -pci:v00001090d00004620* - ID_PRODUCT_FROM_DATABASE=GPIO HSD - -pci:v00001091* - ID_VENDOR_FROM_DATABASE=Intergraph Corporation - -pci:v00001091d00000020* - ID_PRODUCT_FROM_DATABASE=3D graphics processor - -pci:v00001091d00000021* - ID_PRODUCT_FROM_DATABASE=3D graphics processor w/Texturing - -pci:v00001091d00000040* - ID_PRODUCT_FROM_DATABASE=3D graphics frame buffer - -pci:v00001091d00000041* - ID_PRODUCT_FROM_DATABASE=3D graphics frame buffer - -pci:v00001091d00000060* - ID_PRODUCT_FROM_DATABASE=Proprietary bus bridge - -pci:v00001091d000000E4* - ID_PRODUCT_FROM_DATABASE=Powerstorm 4D50T - -pci:v00001091d00000720* - ID_PRODUCT_FROM_DATABASE=Motion JPEG codec - -pci:v00001091d00000780* - ID_PRODUCT_FROM_DATABASE=Intense3D Wildcat 3410 (MSMT496) - -pci:v00001091d000007A0* - ID_PRODUCT_FROM_DATABASE=Sun Expert3D-Lite Graphics Accelerator - -pci:v00001091d00001091* - ID_PRODUCT_FROM_DATABASE=Sun Expert3D Graphics Accelerator - -pci:v00001092* - ID_VENDOR_FROM_DATABASE=Diamond Multimedia Systems - -pci:v00001092d00000028* - ID_PRODUCT_FROM_DATABASE=Viper V770 - -pci:v00001092d00000028sv00001092sd00004A00* - ID_PRODUCT_FROM_DATABASE=Viper V770 32MB - -pci:v00001092d000000A0* - ID_PRODUCT_FROM_DATABASE=Speedstar Pro SE - -pci:v00001092d000000A8* - ID_PRODUCT_FROM_DATABASE=Speedstar 64 - -pci:v00001092d00000550* - ID_PRODUCT_FROM_DATABASE=Viper V550 - -pci:v00001092d000008D4* - ID_PRODUCT_FROM_DATABASE=Supra 2260 Modem - -pci:v00001092d0000094C* - ID_PRODUCT_FROM_DATABASE=SupraExpress 56i Pro - -pci:v00001092d00001001* - ID_PRODUCT_FROM_DATABASE=Video Crunch It 1001 capture card - -pci:v00001092d00001092* - ID_PRODUCT_FROM_DATABASE=Viper V330 - -pci:v00001092d00006120* - ID_PRODUCT_FROM_DATABASE=Maximum DVD - -pci:v00001092d00008810* - ID_PRODUCT_FROM_DATABASE=Stealth SE - -pci:v00001092d00008811* - ID_PRODUCT_FROM_DATABASE=Stealth 64/SE - -pci:v00001092d00008880* - ID_PRODUCT_FROM_DATABASE=Stealth - -pci:v00001092d00008881* - ID_PRODUCT_FROM_DATABASE=Stealth - -pci:v00001092d000088B0* - ID_PRODUCT_FROM_DATABASE=Stealth 64 - -pci:v00001092d000088B1* - ID_PRODUCT_FROM_DATABASE=Stealth 64 - -pci:v00001092d000088C0* - ID_PRODUCT_FROM_DATABASE=Stealth 64 - -pci:v00001092d000088C1* - ID_PRODUCT_FROM_DATABASE=Stealth 64 - -pci:v00001092d000088D0* - ID_PRODUCT_FROM_DATABASE=Stealth 64 - -pci:v00001092d000088D1* - ID_PRODUCT_FROM_DATABASE=Stealth 64 - -pci:v00001092d000088F0* - ID_PRODUCT_FROM_DATABASE=Stealth 64 - -pci:v00001092d000088F1* - ID_PRODUCT_FROM_DATABASE=Stealth 64 - -pci:v00001092d00009999* - ID_PRODUCT_FROM_DATABASE=DMD-I0928-1 "Monster sound" sound chip - -pci:v00001093* - ID_VENDOR_FROM_DATABASE=National Instruments - -pci:v00001093d00000160* - ID_PRODUCT_FROM_DATABASE=PCI-DIO-96 - -pci:v00001093d00000162* - ID_PRODUCT_FROM_DATABASE=PCI-MIO-16XE-50 - -pci:v00001093d00001150* - ID_PRODUCT_FROM_DATABASE=PCI-DIO-32HS High Speed Digital I/O Board - -pci:v00001093d00001170* - ID_PRODUCT_FROM_DATABASE=PCI-MIO-16XE-10 - -pci:v00001093d00001180* - ID_PRODUCT_FROM_DATABASE=PCI-MIO-16E-1 - -pci:v00001093d00001190* - ID_PRODUCT_FROM_DATABASE=PCI-MIO-16E-4 - -pci:v00001093d000011B0* - ID_PRODUCT_FROM_DATABASE=PXI-6070E - -pci:v00001093d000011C0* - ID_PRODUCT_FROM_DATABASE=PXI-6040e - -pci:v00001093d000011D0* - ID_PRODUCT_FROM_DATABASE=PXI-6030e - -pci:v00001093d00001270* - ID_PRODUCT_FROM_DATABASE=PCI-6032e - -pci:v00001093d00001310* - ID_PRODUCT_FROM_DATABASE=PCI-6602 - -pci:v00001093d00001330* - ID_PRODUCT_FROM_DATABASE=PCI-6031E - -pci:v00001093d00001340* - ID_PRODUCT_FROM_DATABASE=PCI-6033e - -pci:v00001093d00001350* - ID_PRODUCT_FROM_DATABASE=PCI-6071E - -pci:v00001093d00001360* - ID_PRODUCT_FROM_DATABASE=PXI-6602 - -pci:v00001093d000014E0* - ID_PRODUCT_FROM_DATABASE=PCI-6110 - -pci:v00001093d000014F0* - ID_PRODUCT_FROM_DATABASE=PCI-6111 - -pci:v00001093d00001580* - ID_PRODUCT_FROM_DATABASE=PXI-6031E - -pci:v00001093d000015B0* - ID_PRODUCT_FROM_DATABASE=PXI-6071E - -pci:v00001093d00001710* - ID_PRODUCT_FROM_DATABASE=PXI-6509 - -pci:v00001093d000017D0* - ID_PRODUCT_FROM_DATABASE=PCI-6503 - -pci:v00001093d00001870* - ID_PRODUCT_FROM_DATABASE=PCI-6713 - -pci:v00001093d00001880* - ID_PRODUCT_FROM_DATABASE=PCI-6711 - -pci:v00001093d000018B0* - ID_PRODUCT_FROM_DATABASE=PCI-6052E - -pci:v00001093d000018C0* - ID_PRODUCT_FROM_DATABASE=PXI-6052E - -pci:v00001093d00002410* - ID_PRODUCT_FROM_DATABASE=PCI-6733 - -pci:v00001093d00002420* - ID_PRODUCT_FROM_DATABASE=PXI-6733 - -pci:v00001093d00002430* - ID_PRODUCT_FROM_DATABASE=PCI-6731 - -pci:v00001093d00002880* - ID_PRODUCT_FROM_DATABASE=DAQCard-6601 - -pci:v00001093d00002890* - ID_PRODUCT_FROM_DATABASE=PCI-6036E - -pci:v00001093d000028C0* - ID_PRODUCT_FROM_DATABASE=PCI-6014 - -pci:v00001093d00002A60* - ID_PRODUCT_FROM_DATABASE=PCI-6023E - -pci:v00001093d00002A70* - ID_PRODUCT_FROM_DATABASE=PCI-6024E - -pci:v00001093d00002A80* - ID_PRODUCT_FROM_DATABASE=PCI-6025E - -pci:v00001093d00002AB0* - ID_PRODUCT_FROM_DATABASE=PXI-6025e - -pci:v00001093d00002B80* - ID_PRODUCT_FROM_DATABASE=PXI-6713 - -pci:v00001093d00002B90* - ID_PRODUCT_FROM_DATABASE=PXI-6711 - -pci:v00001093d00002C60* - ID_PRODUCT_FROM_DATABASE=PCI-6601 - -pci:v00001093d00002C70* - ID_PRODUCT_FROM_DATABASE=PXI-6601 - -pci:v00001093d00002C80* - ID_PRODUCT_FROM_DATABASE=PCI-6035E - -pci:v00001093d00002CA0* - ID_PRODUCT_FROM_DATABASE=PCI-6034E - -pci:v00001093d00002CC0* - ID_PRODUCT_FROM_DATABASE=PXI-6608 - -pci:v00001093d00002DB0* - ID_PRODUCT_FROM_DATABASE=PCI-6608 - -pci:v00001093d00007085* - ID_PRODUCT_FROM_DATABASE=PCI-6509 - -pci:v00001093d000070A9* - ID_PRODUCT_FROM_DATABASE=PCI-6528 (Digital I/O at 60V) - -pci:v00001093d000070AA* - ID_PRODUCT_FROM_DATABASE=PCI-6229 - -pci:v00001093d000070AB* - ID_PRODUCT_FROM_DATABASE=PCI-6259 - -pci:v00001093d000070AC* - ID_PRODUCT_FROM_DATABASE=PCI-6289 - -pci:v00001093d000070AE* - ID_PRODUCT_FROM_DATABASE=PXI-6220 - -pci:v00001093d000070AF* - ID_PRODUCT_FROM_DATABASE=PCI-6221 - -pci:v00001093d000070B0* - ID_PRODUCT_FROM_DATABASE=PCI-6220 - -pci:v00001093d000070B4* - ID_PRODUCT_FROM_DATABASE=PCI-6250 - -pci:v00001093d000070B6* - ID_PRODUCT_FROM_DATABASE=PCI-6280 - -pci:v00001093d000070B7* - ID_PRODUCT_FROM_DATABASE=PCI-6254 - -pci:v00001093d000070B8* - ID_PRODUCT_FROM_DATABASE=PCI-6251 [M Series - High Speed Multifunction DAQ] - -pci:v00001093d000070BC* - ID_PRODUCT_FROM_DATABASE=PCI-6284 - -pci:v00001093d000070BD* - ID_PRODUCT_FROM_DATABASE=PCI-6281 - -pci:v00001093d000070BF* - ID_PRODUCT_FROM_DATABASE=PXI-6281 - -pci:v00001093d000070C0* - ID_PRODUCT_FROM_DATABASE=PCI-6143 - -pci:v00001093d000070F2* - ID_PRODUCT_FROM_DATABASE=PCI-6224 - -pci:v00001093d00007144* - ID_PRODUCT_FROM_DATABASE=PXI-5124 (12-bit 200 MS/s Digitizer) - -pci:v00001093d0000716C* - ID_PRODUCT_FROM_DATABASE=PCI-6225 - -pci:v00001093d0000717D* - ID_PRODUCT_FROM_DATABASE=PCIE-6251 - -pci:v00001093d0000717F* - ID_PRODUCT_FROM_DATABASE=PCIe-6259 - -pci:v00001093d000071BC* - ID_PRODUCT_FROM_DATABASE=PCI-6221 (37pin) - -pci:v00001093d000071D0* - ID_PRODUCT_FROM_DATABASE=PXI-6143 - -pci:v00001093d0000B001* - ID_PRODUCT_FROM_DATABASE=IMAQ-PCI-1408 - -pci:v00001093d0000B011* - ID_PRODUCT_FROM_DATABASE=IMAQ-PXI-1408 - -pci:v00001093d0000B021* - ID_PRODUCT_FROM_DATABASE=IMAQ-PCI-1424 - -pci:v00001093d0000B031* - ID_PRODUCT_FROM_DATABASE=IMAQ-PCI-1413 - -pci:v00001093d0000B041* - ID_PRODUCT_FROM_DATABASE=IMAQ-PCI-1407 - -pci:v00001093d0000B051* - ID_PRODUCT_FROM_DATABASE=IMAQ-PXI-1407 - -pci:v00001093d0000B061* - ID_PRODUCT_FROM_DATABASE=IMAQ-PCI-1411 - -pci:v00001093d0000B071* - ID_PRODUCT_FROM_DATABASE=IMAQ-PCI-1422 - -pci:v00001093d0000B081* - ID_PRODUCT_FROM_DATABASE=IMAQ-PXI-1422 - -pci:v00001093d0000B091* - ID_PRODUCT_FROM_DATABASE=IMAQ-PXI-1411 - -pci:v00001093d0000C4C4* - ID_PRODUCT_FROM_DATABASE=PXIe-4353 - -pci:v00001093d0000C801* - ID_PRODUCT_FROM_DATABASE=PCI-GPIB - -pci:v00001093d0000C831* - ID_PRODUCT_FROM_DATABASE=PCI-GPIB bridge - -pci:v00001094* - ID_VENDOR_FROM_DATABASE=First International Computers [FIC] - -pci:v00001095* - ID_VENDOR_FROM_DATABASE=Silicon Image, Inc. - -pci:v00001095d00000240* - ID_PRODUCT_FROM_DATABASE=Adaptec AAR-1210SA SATA HostRAID Controller - -pci:v00001095d00000640* - ID_PRODUCT_FROM_DATABASE=PCI0640 - -pci:v00001095d00000643* - ID_PRODUCT_FROM_DATABASE=PCI0643 - -pci:v00001095d00000646* - ID_PRODUCT_FROM_DATABASE=PCI0646 - -pci:v00001095d00000647* - ID_PRODUCT_FROM_DATABASE=PCI0647 - -pci:v00001095d00000648* - ID_PRODUCT_FROM_DATABASE=PCI0648 - -pci:v00001095d00000648sv00001043sd00008025* - ID_PRODUCT_FROM_DATABASE=CUBX motherboard - -pci:v00001095d00000649* - ID_PRODUCT_FROM_DATABASE=SiI 0649 Ultra ATA/100 PCI to ATA Host Controller - -pci:v00001095d00000649sv00000E11sd0000005D* - ID_PRODUCT_FROM_DATABASE=Integrated Ultra ATA-100 Dual Channel Controller - -pci:v00001095d00000649sv00000E11sd0000007E* - ID_PRODUCT_FROM_DATABASE=Integrated Ultra ATA-100 IDE RAID Controller - -pci:v00001095d00000649sv0000101Esd00000649* - ID_PRODUCT_FROM_DATABASE=AMI MegaRAID IDE 100 Controller - -pci:v00001095d00000650* - ID_PRODUCT_FROM_DATABASE=PBC0650A - -pci:v00001095d00000670* - ID_PRODUCT_FROM_DATABASE=USB0670 - -pci:v00001095d00000670sv00001095sd00000670* - ID_PRODUCT_FROM_DATABASE=USB0670 - -pci:v00001095d00000673* - ID_PRODUCT_FROM_DATABASE=USB0673 - -pci:v00001095d00000680* - ID_PRODUCT_FROM_DATABASE=PCI0680 Ultra ATA-133 Host Controller - -pci:v00001095d00000680sv00001095sd00000680* - ID_PRODUCT_FROM_DATABASE=SiI 0680 ATA/133 Controller - -pci:v00001095d00000680sv00001095sd00003680* - ID_PRODUCT_FROM_DATABASE=Winic W-680 (Silicon Image 680 based) - -pci:v00001095d00003112* - ID_PRODUCT_FROM_DATABASE=SiI 3112 [SATALink/SATARaid] Serial ATA Controller - -pci:v00001095d00003112sv00001095sd00003112* - ID_PRODUCT_FROM_DATABASE=SiI 3112 SATALink Controller - -pci:v00001095d00003112sv00001095sd00006112* - ID_PRODUCT_FROM_DATABASE=SiI 3112 SATARaid Controller - -pci:v00001095d00003112sv00009005sd00000250* - ID_PRODUCT_FROM_DATABASE=SATAConnect 1205SA Host Controller - -pci:v00001095d00003114* - ID_PRODUCT_FROM_DATABASE=SiI 3114 [SATALink/SATARaid] Serial ATA Controller - -pci:v00001095d00003114sv00001095sd00003114* - ID_PRODUCT_FROM_DATABASE=SiI 3114 SATALink Controller - -pci:v00001095d00003114sv00001095sd00006114* - ID_PRODUCT_FROM_DATABASE=SiI 3114 SATARaid Controller - -pci:v00001095d00003124* - ID_PRODUCT_FROM_DATABASE=SiI 3124 PCI-X Serial ATA Controller - -pci:v00001095d00003124sv00001095sd00003124* - ID_PRODUCT_FROM_DATABASE=SiI 3124 PCI-X Serial ATA Controller - -pci:v00001095d00003132* - ID_PRODUCT_FROM_DATABASE=SiI 3132 Serial ATA Raid II Controller - -pci:v00001095d00003512* - ID_PRODUCT_FROM_DATABASE=SiI 3512 [SATALink/SATARaid] Serial ATA Controller - -pci:v00001095d00003512sv00001095sd00003512* - ID_PRODUCT_FROM_DATABASE=SiI 3512 SATALink Controller - -pci:v00001095d00003512sv00001095sd00006512* - ID_PRODUCT_FROM_DATABASE=SiI 3512 SATARaid Controller - -pci:v00001095d00003531* - ID_PRODUCT_FROM_DATABASE=SiI 3531 [SATALink/SATARaid] Serial ATA Controller - -pci:v00001096* - ID_VENDOR_FROM_DATABASE=Alacron - -pci:v00001097* - ID_VENDOR_FROM_DATABASE=Appian Technology - -pci:v00001098* - ID_VENDOR_FROM_DATABASE=Quantum Designs (H.K.) Ltd - -pci:v00001098d00000001* - ID_PRODUCT_FROM_DATABASE=QD-8500 - -pci:v00001098d00000002* - ID_PRODUCT_FROM_DATABASE=QD-8580 - -pci:v00001099* - ID_VENDOR_FROM_DATABASE=Samsung Electronics Co., Ltd - -pci:v0000109A* - ID_VENDOR_FROM_DATABASE=Packard Bell - -pci:v0000109B* - ID_VENDOR_FROM_DATABASE=Gemlight Computer Ltd. - -pci:v0000109C* - ID_VENDOR_FROM_DATABASE=Megachips Corporation - -pci:v0000109D* - ID_VENDOR_FROM_DATABASE=Zida Technologies Ltd. - -pci:v0000109E* - ID_VENDOR_FROM_DATABASE=Brooktree Corporation - -pci:v0000109Ed00000310* - ID_PRODUCT_FROM_DATABASE=Bt848 Video Capture - -pci:v0000109Ed0000032E* - ID_PRODUCT_FROM_DATABASE=Bt878 Video Capture - -pci:v0000109Ed00000350* - ID_PRODUCT_FROM_DATABASE=Bt848 Video Capture - -pci:v0000109Ed00000351* - ID_PRODUCT_FROM_DATABASE=Bt849A Video capture - -pci:v0000109Ed00000369* - ID_PRODUCT_FROM_DATABASE=Bt878 Video Capture - -pci:v0000109Ed00000369sv00001002sd00000001* - ID_PRODUCT_FROM_DATABASE=TV-Wonder - -pci:v0000109Ed00000369sv00001002sd00000003* - ID_PRODUCT_FROM_DATABASE=TV-Wonder/VE - -pci:v0000109Ed0000036C* - ID_PRODUCT_FROM_DATABASE=Bt879(??) Video Capture - -pci:v0000109Ed0000036Csv000013E9sd00000070* - ID_PRODUCT_FROM_DATABASE=Win/TV (Video Section) - -pci:v0000109Ed0000036E* - ID_PRODUCT_FROM_DATABASE=Bt878 Video Capture - -pci:v0000109Ed0000036Esv00000070sd000013EB* - ID_PRODUCT_FROM_DATABASE=WinTV Series - -pci:v0000109Ed0000036Esv00000070sd0000FF01* - ID_PRODUCT_FROM_DATABASE=Viewcast Osprey 200 - -pci:v0000109Ed0000036Esv00000071sd00000101* - ID_PRODUCT_FROM_DATABASE=DigiTV PCI - -pci:v0000109Ed0000036Esv0000107Dsd00006606* - ID_PRODUCT_FROM_DATABASE=WinFast TV 2000 - -pci:v0000109Ed0000036Esv000011BDsd00000012* - ID_PRODUCT_FROM_DATABASE=PCTV pro (TV + FM stereo receiver) - -pci:v0000109Ed0000036Esv000011BDsd0000001C* - ID_PRODUCT_FROM_DATABASE=PCTV Sat (DBC receiver) - -pci:v0000109Ed0000036Esv0000127Asd00000001* - ID_PRODUCT_FROM_DATABASE=Bt878 Mediastream Controller NTSC - -pci:v0000109Ed0000036Esv0000127Asd00000002* - ID_PRODUCT_FROM_DATABASE=Bt878 Mediastream Controller PAL BG - -pci:v0000109Ed0000036Esv0000127Asd00000003* - ID_PRODUCT_FROM_DATABASE=Bt878a Mediastream Controller PAL BG - -pci:v0000109Ed0000036Esv0000127Asd00000048* - ID_PRODUCT_FROM_DATABASE=Bt878/832 Mediastream Controller - -pci:v0000109Ed0000036Esv0000144Fsd00003000* - ID_PRODUCT_FROM_DATABASE=MagicTView CPH060 - Video - -pci:v0000109Ed0000036Esv00001461sd00000002* - ID_PRODUCT_FROM_DATABASE=TV98 Series (TV/No FM/Remote) - -pci:v0000109Ed0000036Esv00001461sd00000003* - ID_PRODUCT_FROM_DATABASE=AverMedia UltraTV PCI 350 - -pci:v0000109Ed0000036Esv00001461sd00000004* - ID_PRODUCT_FROM_DATABASE=AVerTV WDM Video Capture - -pci:v0000109Ed0000036Esv00001461sd00000761* - ID_PRODUCT_FROM_DATABASE=AverTV DVB-T - -pci:v0000109Ed0000036Esv00001461sd00000771* - ID_PRODUCT_FROM_DATABASE=AverMedia AVerTV DVB-T 771 - -pci:v0000109Ed0000036Esv000014F1sd00000001* - ID_PRODUCT_FROM_DATABASE=Bt878 Mediastream Controller NTSC - -pci:v0000109Ed0000036Esv000014F1sd00000002* - ID_PRODUCT_FROM_DATABASE=Bt878 Mediastream Controller PAL BG - -pci:v0000109Ed0000036Esv000014F1sd00000003* - ID_PRODUCT_FROM_DATABASE=Bt878a Mediastream Controller PAL BG - -pci:v0000109Ed0000036Esv000014F1sd00000048* - ID_PRODUCT_FROM_DATABASE=Bt878/832 Mediastream Controller - -pci:v0000109Ed0000036Esv00001822sd00000001* - ID_PRODUCT_FROM_DATABASE=VisionPlus DVB card - -pci:v0000109Ed0000036Esv00001851sd00001850* - ID_PRODUCT_FROM_DATABASE=FlyVideo'98 - Video - -pci:v0000109Ed0000036Esv00001851sd00001851* - ID_PRODUCT_FROM_DATABASE=FlyVideo II - -pci:v0000109Ed0000036Esv00001852sd00001852* - ID_PRODUCT_FROM_DATABASE=FlyVideo'98 - Video (with FM Tuner) - -pci:v0000109Ed0000036Esv000018ACsd0000D500* - ID_PRODUCT_FROM_DATABASE=DViCO FusionHDTV5 Lite - -pci:v0000109Ed0000036Esv0000270Fsd0000FC00* - ID_PRODUCT_FROM_DATABASE=Digitop DTT-1000 - -pci:v0000109Ed0000036Esv0000BD11sd00001200* - ID_PRODUCT_FROM_DATABASE=PCTV pro (TV + FM stereo receiver) - -pci:v0000109Ed0000036F* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture - -pci:v0000109Ed0000036Fsv0000127Asd00000044* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture NTSC - -pci:v0000109Ed0000036Fsv0000127Asd00000122* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture PAL I - -pci:v0000109Ed0000036Fsv0000127Asd00000144* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture NTSC - -pci:v0000109Ed0000036Fsv0000127Asd00000222* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture PAL BG - -pci:v0000109Ed0000036Fsv0000127Asd00000244* - ID_PRODUCT_FROM_DATABASE=Bt879a Video Capture NTSC - -pci:v0000109Ed0000036Fsv0000127Asd00000322* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture NTSC - -pci:v0000109Ed0000036Fsv0000127Asd00000422* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture NTSC - -pci:v0000109Ed0000036Fsv0000127Asd00001122* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture PAL I - -pci:v0000109Ed0000036Fsv0000127Asd00001222* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture PAL BG - -pci:v0000109Ed0000036Fsv0000127Asd00001322* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture NTSC - -pci:v0000109Ed0000036Fsv0000127Asd00001522* - ID_PRODUCT_FROM_DATABASE=Bt879a Video Capture PAL I - -pci:v0000109Ed0000036Fsv0000127Asd00001622* - ID_PRODUCT_FROM_DATABASE=Bt879a Video Capture PAL BG - -pci:v0000109Ed0000036Fsv0000127Asd00001722* - ID_PRODUCT_FROM_DATABASE=Bt879a Video Capture NTSC - -pci:v0000109Ed0000036Fsv000014F1sd00000044* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture NTSC - -pci:v0000109Ed0000036Fsv000014F1sd00000122* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture PAL I - -pci:v0000109Ed0000036Fsv000014F1sd00000144* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture NTSC - -pci:v0000109Ed0000036Fsv000014F1sd00000222* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture PAL BG - -pci:v0000109Ed0000036Fsv000014F1sd00000244* - ID_PRODUCT_FROM_DATABASE=Bt879a Video Capture NTSC - -pci:v0000109Ed0000036Fsv000014F1sd00000322* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture NTSC - -pci:v0000109Ed0000036Fsv000014F1sd00000422* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture NTSC - -pci:v0000109Ed0000036Fsv000014F1sd00001122* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture PAL I - -pci:v0000109Ed0000036Fsv000014F1sd00001222* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture PAL BG - -pci:v0000109Ed0000036Fsv000014F1sd00001322* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture NTSC - -pci:v0000109Ed0000036Fsv000014F1sd00001522* - ID_PRODUCT_FROM_DATABASE=Bt879a Video Capture PAL I - -pci:v0000109Ed0000036Fsv000014F1sd00001622* - ID_PRODUCT_FROM_DATABASE=Bt879a Video Capture PAL BG - -pci:v0000109Ed0000036Fsv000014F1sd00001722* - ID_PRODUCT_FROM_DATABASE=Bt879a Video Capture NTSC - -pci:v0000109Ed0000036Fsv00001851sd00001850* - ID_PRODUCT_FROM_DATABASE=FlyVideo'98 - Video - -pci:v0000109Ed0000036Fsv00001851sd00001851* - ID_PRODUCT_FROM_DATABASE=FlyVideo II - -pci:v0000109Ed0000036Fsv00001852sd00001852* - ID_PRODUCT_FROM_DATABASE=FlyVideo'98 - Video (with FM Tuner) - -pci:v0000109Ed00000370* - ID_PRODUCT_FROM_DATABASE=Bt880 Video Capture - -pci:v0000109Ed00000370sv00001851sd00001850* - ID_PRODUCT_FROM_DATABASE=FlyVideo'98 - -pci:v0000109Ed00000370sv00001851sd00001851* - ID_PRODUCT_FROM_DATABASE=FlyVideo'98 EZ - video - -pci:v0000109Ed00000370sv00001852sd00001852* - ID_PRODUCT_FROM_DATABASE=FlyVideo'98 (with FM Tuner) - -pci:v0000109Ed00000878* - ID_PRODUCT_FROM_DATABASE=Bt878 Audio Capture - -pci:v0000109Ed00000878sv00000070sd000013EB* - ID_PRODUCT_FROM_DATABASE=WinTV Series - -pci:v0000109Ed00000878sv00000070sd0000FF01* - ID_PRODUCT_FROM_DATABASE=Viewcast Osprey 200 - -pci:v0000109Ed00000878sv00000071sd00000101* - ID_PRODUCT_FROM_DATABASE=DigiTV PCI - -pci:v0000109Ed00000878sv00001002sd00000001* - ID_PRODUCT_FROM_DATABASE=TV-Wonder - -pci:v0000109Ed00000878sv00001002sd00000003* - ID_PRODUCT_FROM_DATABASE=TV-Wonder/VE - -pci:v0000109Ed00000878sv000011BDsd00000012* - ID_PRODUCT_FROM_DATABASE=PCTV pro (TV + FM stereo receiver, audio section) - -pci:v0000109Ed00000878sv000011BDsd0000001C* - ID_PRODUCT_FROM_DATABASE=PCTV Sat (DBC receiver) - -pci:v0000109Ed00000878sv0000127Asd00000001* - ID_PRODUCT_FROM_DATABASE=Bt878 Video Capture (Audio Section) - -pci:v0000109Ed00000878sv0000127Asd00000002* - ID_PRODUCT_FROM_DATABASE=Bt878 Video Capture (Audio Section) - -pci:v0000109Ed00000878sv0000127Asd00000003* - ID_PRODUCT_FROM_DATABASE=Bt878 Video Capture (Audio Section) - -pci:v0000109Ed00000878sv0000127Asd00000048* - ID_PRODUCT_FROM_DATABASE=Bt878 Video Capture (Audio Section) - -pci:v0000109Ed00000878sv000013E9sd00000070* - ID_PRODUCT_FROM_DATABASE=Win/TV (Audio Section) - -pci:v0000109Ed00000878sv0000144Fsd00003000* - ID_PRODUCT_FROM_DATABASE=MagicTView CPH060 - Audio - -pci:v0000109Ed00000878sv00001461sd00000002* - ID_PRODUCT_FROM_DATABASE=Avermedia PCTV98 Audio Capture - -pci:v0000109Ed00000878sv00001461sd00000003* - ID_PRODUCT_FROM_DATABASE=UltraTV PCI 350 - -pci:v0000109Ed00000878sv00001461sd00000004* - ID_PRODUCT_FROM_DATABASE=AVerTV WDM Audio Capture - -pci:v0000109Ed00000878sv00001461sd00000761* - ID_PRODUCT_FROM_DATABASE=AVerTV DVB-T - -pci:v0000109Ed00000878sv00001461sd00000771* - ID_PRODUCT_FROM_DATABASE=AverMedia AVerTV DVB-T 771 - -pci:v0000109Ed00000878sv000014F1sd00000001* - ID_PRODUCT_FROM_DATABASE=Bt878 Video Capture (Audio Section) - -pci:v0000109Ed00000878sv000014F1sd00000002* - ID_PRODUCT_FROM_DATABASE=Bt878 Video Capture (Audio Section) - -pci:v0000109Ed00000878sv000014F1sd00000003* - ID_PRODUCT_FROM_DATABASE=Bt878 Video Capture (Audio Section) - -pci:v0000109Ed00000878sv000014F1sd00000048* - ID_PRODUCT_FROM_DATABASE=Bt878 Video Capture (Audio Section) - -pci:v0000109Ed00000878sv00001822sd00000001* - ID_PRODUCT_FROM_DATABASE=VisionPlus DVB Card - -pci:v0000109Ed00000878sv000018ACsd0000D500* - ID_PRODUCT_FROM_DATABASE=DViCO FusionHDTV5 Lite - -pci:v0000109Ed00000878sv0000270Fsd0000FC00* - ID_PRODUCT_FROM_DATABASE=Digitop DTT-1000 - -pci:v0000109Ed00000878sv0000BD11sd00001200* - ID_PRODUCT_FROM_DATABASE=PCTV pro (TV + FM stereo receiver, audio section) - -pci:v0000109Ed00000879* - ID_PRODUCT_FROM_DATABASE=Bt879 Audio Capture - -pci:v0000109Ed00000879sv0000127Asd00000044* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv0000127Asd00000122* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv0000127Asd00000144* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv0000127Asd00000222* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv0000127Asd00000244* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv0000127Asd00000322* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv0000127Asd00000422* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv0000127Asd00001122* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv0000127Asd00001222* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv0000127Asd00001322* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv0000127Asd00001522* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv0000127Asd00001622* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv0000127Asd00001722* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv000014F1sd00000044* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv000014F1sd00000122* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv000014F1sd00000144* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv000014F1sd00000222* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv000014F1sd00000244* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv000014F1sd00000322* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv000014F1sd00000422* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv000014F1sd00001122* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv000014F1sd00001222* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv000014F1sd00001322* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv000014F1sd00001522* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv000014F1sd00001622* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000879sv000014F1sd00001722* - ID_PRODUCT_FROM_DATABASE=Bt879 Video Capture (Audio Section) - -pci:v0000109Ed00000880* - ID_PRODUCT_FROM_DATABASE=Bt880 Audio Capture - -pci:v0000109Ed00002115* - ID_PRODUCT_FROM_DATABASE=BtV 2115 Mediastream controller - -pci:v0000109Ed00002125* - ID_PRODUCT_FROM_DATABASE=BtV 2125 Mediastream controller - -pci:v0000109Ed00002164* - ID_PRODUCT_FROM_DATABASE=BtV 2164 - -pci:v0000109Ed00002165* - ID_PRODUCT_FROM_DATABASE=BtV 2165 - -pci:v0000109Ed00008230* - ID_PRODUCT_FROM_DATABASE=Bt8230 ATM Segment/Reassembly Ctrlr (SRC) - -pci:v0000109Ed00008472* - ID_PRODUCT_FROM_DATABASE=Bt8472 - -pci:v0000109Ed00008474* - ID_PRODUCT_FROM_DATABASE=Bt8474 - -pci:v0000109F* - ID_VENDOR_FROM_DATABASE=Trigem Computer Inc. - -pci:v000010A0* - ID_VENDOR_FROM_DATABASE=Meidensha Corporation - -pci:v000010A1* - ID_VENDOR_FROM_DATABASE=Juko Electronics Ind. Co. Ltd - -pci:v000010A2* - ID_VENDOR_FROM_DATABASE=Quantum Corporation - -pci:v000010A3* - ID_VENDOR_FROM_DATABASE=Everex Systems Inc - -pci:v000010A4* - ID_VENDOR_FROM_DATABASE=Globe Manufacturing Sales - -pci:v000010A5* - ID_VENDOR_FROM_DATABASE=Smart Link Ltd. - -pci:v000010A5d00003052* - ID_PRODUCT_FROM_DATABASE=SmartPCI562 56K Modem - -pci:v000010A5d00005449* - ID_PRODUCT_FROM_DATABASE=SmartPCI561 modem - -pci:v000010A6* - ID_VENDOR_FROM_DATABASE=Informtech Industrial Ltd. - -pci:v000010A7* - ID_VENDOR_FROM_DATABASE=Benchmarq Microelectronics - -pci:v000010A8* - ID_VENDOR_FROM_DATABASE=Sierra Semiconductor - -pci:v000010A8d00000000* - ID_PRODUCT_FROM_DATABASE=STB Horizon 64 - -pci:v000010A9* - ID_VENDOR_FROM_DATABASE=Silicon Graphics Intl. Corp. - -pci:v000010A9d00000001* - ID_PRODUCT_FROM_DATABASE=Crosstalk to PCI Bridge - -pci:v000010A9d00000002* - ID_PRODUCT_FROM_DATABASE=Linc I/O controller - -pci:v000010A9d00000003* - ID_PRODUCT_FROM_DATABASE=IOC3 I/O controller - -pci:v000010A9d00000004* - ID_PRODUCT_FROM_DATABASE=O2 MACE - -pci:v000010A9d00000005* - ID_PRODUCT_FROM_DATABASE=RAD Audio - -pci:v000010A9d00000006* - ID_PRODUCT_FROM_DATABASE=HPCEX - -pci:v000010A9d00000007* - ID_PRODUCT_FROM_DATABASE=RPCEX - -pci:v000010A9d00000008* - ID_PRODUCT_FROM_DATABASE=DiVO VIP - -pci:v000010A9d00000009* - ID_PRODUCT_FROM_DATABASE=AceNIC Gigabit Ethernet - -pci:v000010A9d00000009sv000010A9sd00008002* - ID_PRODUCT_FROM_DATABASE=AceNIC Gigabit Ethernet - -pci:v000010A9d00000010* - ID_PRODUCT_FROM_DATABASE=AMP Video I/O - -pci:v000010A9d00000011* - ID_PRODUCT_FROM_DATABASE=GRIP - -pci:v000010A9d00000012* - ID_PRODUCT_FROM_DATABASE=SGH PSHAC GSN - -pci:v000010A9d00000208* - ID_PRODUCT_FROM_DATABASE=SSIM1 SAS Adapter - -pci:v000010A9d00001001* - ID_PRODUCT_FROM_DATABASE=Magic Carpet - -pci:v000010A9d00001002* - ID_PRODUCT_FROM_DATABASE=Lithium - -pci:v000010A9d00001003* - ID_PRODUCT_FROM_DATABASE=Dual JPEG 1 - -pci:v000010A9d00001004* - ID_PRODUCT_FROM_DATABASE=Dual JPEG 2 - -pci:v000010A9d00001005* - ID_PRODUCT_FROM_DATABASE=Dual JPEG 3 - -pci:v000010A9d00001006* - ID_PRODUCT_FROM_DATABASE=Dual JPEG 4 - -pci:v000010A9d00001007* - ID_PRODUCT_FROM_DATABASE=Dual JPEG 5 - -pci:v000010A9d00001008* - ID_PRODUCT_FROM_DATABASE=Cesium - -pci:v000010A9d0000100A* - ID_PRODUCT_FROM_DATABASE=IOC4 I/O controller - -pci:v000010A9d00001504* - ID_PRODUCT_FROM_DATABASE=SSIM1 Fibre Channel Adapter - -pci:v000010A9d00002001* - ID_PRODUCT_FROM_DATABASE=Fibre Channel - -pci:v000010A9d00002002* - ID_PRODUCT_FROM_DATABASE=ASDE - -pci:v000010A9d00004001* - ID_PRODUCT_FROM_DATABASE=TIO-CE PCI Express Bridge - -pci:v000010A9d00004002* - ID_PRODUCT_FROM_DATABASE=TIO-CE PCI Express Port - -pci:v000010A9d00008001* - ID_PRODUCT_FROM_DATABASE=O2 1394 - -pci:v000010A9d00008002* - ID_PRODUCT_FROM_DATABASE=G-net NT - -pci:v000010AA* - ID_VENDOR_FROM_DATABASE=ACC Microelectronics - -pci:v000010AAd00000000* - ID_PRODUCT_FROM_DATABASE=ACCM 2188 - -pci:v000010AAd00002051* - ID_PRODUCT_FROM_DATABASE=2051 CPU bridge - -pci:v000010AAd00005842* - ID_PRODUCT_FROM_DATABASE=2051 ISA bridge - -pci:v000010AB* - ID_VENDOR_FROM_DATABASE=Digicom - -pci:v000010AC* - ID_VENDOR_FROM_DATABASE=Honeywell IAC - -pci:v000010AD* - ID_VENDOR_FROM_DATABASE=Symphony Labs - -pci:v000010ADd00000001* - ID_PRODUCT_FROM_DATABASE=W83769F - -pci:v000010ADd00000003* - ID_PRODUCT_FROM_DATABASE=SL82C103 - -pci:v000010ADd00000005* - ID_PRODUCT_FROM_DATABASE=SL82C105 - -pci:v000010ADd00000103* - ID_PRODUCT_FROM_DATABASE=SL82c103 - -pci:v000010ADd00000105* - ID_PRODUCT_FROM_DATABASE=SL82c105 - -pci:v000010ADd00000565* - ID_PRODUCT_FROM_DATABASE=W83C553F/W83C554F - -pci:v000010AE* - ID_VENDOR_FROM_DATABASE=Cornerstone Technology - -pci:v000010AF* - ID_VENDOR_FROM_DATABASE=Micro Computer Systems Inc - -pci:v000010B0* - ID_VENDOR_FROM_DATABASE=CardExpert Technology - -pci:v000010B1* - ID_VENDOR_FROM_DATABASE=Cabletron Systems Inc - -pci:v000010B2* - ID_VENDOR_FROM_DATABASE=Raytheon Company - -pci:v000010B3* - ID_VENDOR_FROM_DATABASE=Databook Inc - -pci:v000010B3d00003106* - ID_PRODUCT_FROM_DATABASE=DB87144 - -pci:v000010B3d0000B106* - ID_PRODUCT_FROM_DATABASE=DB87144 - -pci:v000010B4* - ID_VENDOR_FROM_DATABASE=STB Systems Inc - -pci:v000010B4d00001B1D* - ID_PRODUCT_FROM_DATABASE=Velocity 128 3D - -pci:v000010B4d00001B1Dsv000010B4sd0000237E* - ID_PRODUCT_FROM_DATABASE=Velocity 4400 - -pci:v000010B5* - ID_VENDOR_FROM_DATABASE=PLX Technology, Inc. - -pci:v000010B5d00000001* - ID_PRODUCT_FROM_DATABASE=i960 PCI bus interface - -pci:v000010B5d00000557* - ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - -pci:v000010B5d00000557sv000010B5sd00009030* - ID_PRODUCT_FROM_DATABASE=Digium Tormenta 2 T400P-SS7 or E400P-SS7 Quad T1 or E1 PCI card - -pci:v000010B5d00001000* - ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - -pci:v000010B5d00001000sv000010B5sd00009030* - ID_PRODUCT_FROM_DATABASE=ATCOM AT400P Quad T1 PCI card - -pci:v000010B5d00001024* - ID_PRODUCT_FROM_DATABASE=Acromag, Inc. IndustryPack Carrier Card - -pci:v000010B5d00001042* - ID_PRODUCT_FROM_DATABASE=Brandywine / jxi2, Inc. - PMC-SyncClock32, IRIG A & B, Nasa 36 - -pci:v000010B5d0000106A* - ID_PRODUCT_FROM_DATABASE=Dual OX16C952 4 port serial adapter [Megawolf Romulus/4] - -pci:v000010B5d00001076* - ID_PRODUCT_FROM_DATABASE=VScom 800 8 port serial adaptor - -pci:v000010B5d00001077* - ID_PRODUCT_FROM_DATABASE=VScom 400 4 port serial adaptor - -pci:v000010B5d00001078* - ID_PRODUCT_FROM_DATABASE=VScom 210 2 port serial and 1 port parallel adaptor - -pci:v000010B5d00001103* - ID_PRODUCT_FROM_DATABASE=VScom 200 2 port serial adaptor - -pci:v000010B5d00001146* - ID_PRODUCT_FROM_DATABASE=VScom 010 1 port parallel adaptor - -pci:v000010B5d00001147* - ID_PRODUCT_FROM_DATABASE=VScom 020 2 port parallel adaptor - -pci:v000010B5d00002000* - ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - -pci:v000010B5d00002000sv000010B5sd00009030* - ID_PRODUCT_FROM_DATABASE=ATCOM AE400P Quad E1 PCI card - -pci:v000010B5d00002540* - ID_PRODUCT_FROM_DATABASE=IXXAT CAN-Interface PC-I 04/PCI - -pci:v000010B5d00002724* - ID_PRODUCT_FROM_DATABASE=Thales PCSM Security Card - -pci:v000010B5d00003376* - ID_PRODUCT_FROM_DATABASE=Cosateq 4 Port CAN Card - -pci:v000010B5d00004000* - ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - -pci:v000010B5d00004000sv000010B5sd00009030* - ID_PRODUCT_FROM_DATABASE=Tormenta 3 Varion V400P/ATCOM TE400P Quad E1/T1/J1 PCI card - -pci:v000010B5d00004001* - ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - -pci:v000010B5d00004001sv000010B5sd00009030* - ID_PRODUCT_FROM_DATABASE=ATCOM A400PE Quad E1 PCI card - -pci:v000010B5d00004002* - ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - -pci:v000010B5d00004002sv000010B5sd00009030* - ID_PRODUCT_FROM_DATABASE=ATCOM A400PT Quad T1 PCI card - -pci:v000010B5d00006140* - ID_PRODUCT_FROM_DATABASE=PCI6140 32-bit 33MHz PCI-to-PCI Bridge - -pci:v000010B5d00006150* - ID_PRODUCT_FROM_DATABASE=PCI6150 32-bit 33MHz PCI-to-PCI Bridge - -pci:v000010B5d00006152* - ID_PRODUCT_FROM_DATABASE=PCI6152 32-bit 66MHz PCI-to-PCI Bridge - -pci:v000010B5d00006154* - ID_PRODUCT_FROM_DATABASE=PCI6154 64-bit 66MHz PCI-to-PCI Bridge - -pci:v000010B5d00006254* - ID_PRODUCT_FROM_DATABASE=PCI6254 64-bit 66MHz PCI-to-PCI Bridge - -pci:v000010B5d00006466* - ID_PRODUCT_FROM_DATABASE=PCI6466 64-bit 66MHz PCI-to-PCI Bridge - -pci:v000010B5d00006520* - ID_PRODUCT_FROM_DATABASE=PCI6520 64-bit 133MHz PCI-X-to-PCI-X Bridge - -pci:v000010B5d00006540* - ID_PRODUCT_FROM_DATABASE=PCI6540 64-bit 133MHz PCI-X-to-PCI-X Bridge - -pci:v000010B5d00006540sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11 Single Board Computer - -pci:v000010B5d00006540sv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v000010B5d00006541* - ID_PRODUCT_FROM_DATABASE=PCI6540/6466 PCI-PCI bridge (non-transparent mode, primary side) - -pci:v000010B5d00006541sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11 Single Board Computer - -pci:v000010B5d00006541sv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v000010B5d00006542* - ID_PRODUCT_FROM_DATABASE=PCI6540/6466 PCI-PCI bridge (non-transparent mode, secondary side) - -pci:v000010B5d00006542sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11 Single Board Computer - -pci:v000010B5d00006542sv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v000010B5d00008111* - ID_PRODUCT_FROM_DATABASE=PEX 8111 PCI Express-to-PCI Bridge - -pci:v000010B5d00008112* - ID_PRODUCT_FROM_DATABASE=PEX8112 x1 Lane PCI Express-to-PCI Bridge - -pci:v000010B5d00008114* - ID_PRODUCT_FROM_DATABASE=PEX 8114 PCI Express-to-PCI/PCI-X Bridge - -pci:v000010B5d00008311* - ID_PRODUCT_FROM_DATABASE=PEX8311 x1 Lane PCI Express-to-Generic Local Bus Bridge - -pci:v000010B5d00008505* - ID_PRODUCT_FROM_DATABASE=PEX 8505 5-lane, 5-port PCI Express Switch - -pci:v000010B5d00008508* - ID_PRODUCT_FROM_DATABASE=PEX 8508 8-lane, 5-port PCI Express Switch - -pci:v000010B5d00008509* - ID_PRODUCT_FROM_DATABASE=PEX 8509 8-lane, 8-port PCI Express Switch - -pci:v000010B5d00008512* - ID_PRODUCT_FROM_DATABASE=PEX 8512 12-lane, 5-port PCI Express Switch - -pci:v000010B5d00008516* - ID_PRODUCT_FROM_DATABASE=PEX 8516 Versatile PCI Express Switch - -pci:v000010B5d00008517* - ID_PRODUCT_FROM_DATABASE=PEX 8517 16-lane, 5-port PCI Express Switch - -pci:v000010B5d00008518* - ID_PRODUCT_FROM_DATABASE=PEX 8518 16-lane, 5-port PCI Express Switch - -pci:v000010B5d00008524* - ID_PRODUCT_FROM_DATABASE=PEX 8524 24-lane, 6-port PCI Express Switch - -pci:v000010B5d00008525* - ID_PRODUCT_FROM_DATABASE=PEX 8525 24-lane, 5-port PCI Express Switch - -pci:v000010B5d00008532* - ID_PRODUCT_FROM_DATABASE=PEX 8532 Versatile PCI Express Switch - -pci:v000010B5d00008533* - ID_PRODUCT_FROM_DATABASE=PEX 8533 32-lane, 6-port PCI Express Switch - -pci:v000010B5d00008547* - ID_PRODUCT_FROM_DATABASE=PEX 8547 48-lane, 3-port PCI Express Switch - -pci:v000010B5d00008548* - ID_PRODUCT_FROM_DATABASE=PEX 8548 48-lane, 9-port PCI Express Switch - -pci:v000010B5d00008604* - ID_PRODUCT_FROM_DATABASE=PEX 8604 4-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008605* - ID_PRODUCT_FROM_DATABASE=PEX 8605 PCI Express 4-port Gen2 Switch - -pci:v000010B5d00008606* - ID_PRODUCT_FROM_DATABASE=PEX 8606 6 Lane, 6 Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008608* - ID_PRODUCT_FROM_DATABASE=PEX 8608 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008609* - ID_PRODUCT_FROM_DATABASE=PEX 8609 8-lane, 8-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA - -pci:v000010B5d00008612* - ID_PRODUCT_FROM_DATABASE=PEX 8612 12-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008613* - ID_PRODUCT_FROM_DATABASE=PEX 8613 12-lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008614* - ID_PRODUCT_FROM_DATABASE=PEX 8614 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008615* - ID_PRODUCT_FROM_DATABASE=PEX 8615 12-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA - -pci:v000010B5d00008616* - ID_PRODUCT_FROM_DATABASE=PEX 8616 16-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008617* - ID_PRODUCT_FROM_DATABASE=PEX 8617 16-lane, 4-Port PCI Express Gen 2 (5.0 GT/s) Switch with P2P - -pci:v000010B5d00008618* - ID_PRODUCT_FROM_DATABASE=PEX 8618 16-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008619* - ID_PRODUCT_FROM_DATABASE=PEX 8619 16-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch with DMA - -pci:v000010B5d00008624* - ID_PRODUCT_FROM_DATABASE=PEX 8624 24-lane, 6-Port PCI Express Gen 2 (5.0 GT/s) Switch [ExpressLane] - -pci:v000010B5d00008624sv000013A3sd00001845* - ID_PRODUCT_FROM_DATABASE=DX1845 Acceleration Card - -pci:v000010B5d00008625* - ID_PRODUCT_FROM_DATABASE=PEX 8625 24-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008632* - ID_PRODUCT_FROM_DATABASE=PEX 8632 32-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008636* - ID_PRODUCT_FROM_DATABASE=PEX 8636 36-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008647* - ID_PRODUCT_FROM_DATABASE=PEX 8647 48-Lane, 3-Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008648* - ID_PRODUCT_FROM_DATABASE=PEX 8648 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008649* - ID_PRODUCT_FROM_DATABASE=PEX 8649 48-lane, 12-Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008664* - ID_PRODUCT_FROM_DATABASE=PEX 8664 64-lane, 16-Port PCI Express Gen 2 (5.0 GT/s) Switch - -pci:v000010B5d00008680* - ID_PRODUCT_FROM_DATABASE=PEX 8680 80-lane, 20-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch - -pci:v000010B5d00008696* - ID_PRODUCT_FROM_DATABASE=PEX 8696 96-lane, 24-Port PCI Express Gen 2 (5.0 GT/s) Multi-Root Switch - -pci:v000010B5d00008717* - ID_PRODUCT_FROM_DATABASE=PEX 8717 16-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch with DMA - -pci:v000010B5d00008718* - ID_PRODUCT_FROM_DATABASE=PEX 8718 16-Lane, 5-Port PCI Express Gen 3 (8.0 GT/s) Switch - -pci:v000010B5d00008732* - ID_PRODUCT_FROM_DATABASE=PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch - -pci:v000010B5d00008734* - ID_PRODUCT_FROM_DATABASE=PEX 8734 32-lane, 8-Port PCI Express Gen 3 (8.0GT/s) Switch - -pci:v000010B5d000087B0* - ID_PRODUCT_FROM_DATABASE=PEX 8732 32-lane, 8-Port PCI Express Gen 3 (8.0 GT/s) Switch - -pci:v000010B5d00009016* - ID_PRODUCT_FROM_DATABASE=PLX 9016 8-port serial controller - -pci:v000010B5d00009030* - ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - -pci:v000010B5d00009030sv000010B5sd00002695* - ID_PRODUCT_FROM_DATABASE=Hilscher CIF50-PB/DPS Profibus - -pci:v000010B5d00009030sv000010B5sd00002862* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCL PCI LV (3V/5V): Timecode Reader Board - -pci:v000010B5d00009030sv000010B5sd00002906* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCI TS (3V/5V): Time Synchronisation Board - -pci:v000010B5d00009030sv000010B5sd00002940* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCL PCI D (3V/5V): Timecode Reader Board - -pci:v000010B5d00009030sv000010B5sd00002977* - ID_PRODUCT_FROM_DATABASE=IXXAT iPC-I XC16/PCI CAN Board - -pci:v000010B5d00009030sv000010B5sd00002978* - ID_PRODUCT_FROM_DATABASE=SH ARC-PCIu/SH ARC-PCI104/SH ARC-PCIe SOHARD ARCNET card - -pci:v000010B5d00009030sv000010B5sd00003025* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCL PCI L (3V/5V): Timecode Reader Board - -pci:v000010B5d00009030sv000010B5sd00003068* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCL PCI HD (3V/5V): Timecode Reader Board - -pci:v000010B5d00009030sv000010B5sd00003463* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCL PCI D (v2) (3V/5V): Timecode Reader Board - -pci:v000010B5d00009030sv000012FEsd00000111* - ID_PRODUCT_FROM_DATABASE=CPCI-ASIO4 (ESD 4-port Serial Interface Board) - -pci:v000010B5d00009030sv00001369sd00009C01* - ID_PRODUCT_FROM_DATABASE=VX222v2 - -pci:v000010B5d00009030sv00001369sd00009D01* - ID_PRODUCT_FROM_DATABASE=VX222-Mic - -pci:v000010B5d00009030sv00001369sd00009D02* - ID_PRODUCT_FROM_DATABASE=VX222-Mic - -pci:v000010B5d00009030sv00001369sd00009E01* - ID_PRODUCT_FROM_DATABASE=PCX924v2 - -pci:v000010B5d00009030sv00001369sd00009F01* - ID_PRODUCT_FROM_DATABASE=PCX924-Mic - -pci:v000010B5d00009030sv00001369sd00009F02* - ID_PRODUCT_FROM_DATABASE=PCX924-Mic - -pci:v000010B5d00009030sv00001369sd0000A001* - ID_PRODUCT_FROM_DATABASE=PCX22v2 - -pci:v000010B5d00009030sv00001369sd0000A701* - ID_PRODUCT_FROM_DATABASE=LCM220v2 - -pci:v000010B5d00009030sv00001369sd0000A801* - ID_PRODUCT_FROM_DATABASE=LCM200 - -pci:v000010B5d00009030sv00001397sd00003136* - ID_PRODUCT_FROM_DATABASE=4xS0-ISDN PCI Adapter - -pci:v000010B5d00009030sv00001397sd00003137* - ID_PRODUCT_FROM_DATABASE=S2M-E1-ISDN PCI Adapter - -pci:v000010B5d00009030sv00001518sd00000200* - ID_PRODUCT_FROM_DATABASE=Kontron ThinkIO-C - -pci:v000010B5d00009030sv000015EDsd00001002* - ID_PRODUCT_FROM_DATABASE=MCCS 8-port Serial Hot Swap - -pci:v000010B5d00009030sv000015EDsd00001003* - ID_PRODUCT_FROM_DATABASE=MCCS 16-port Serial Hot Swap - -pci:v000010B5d00009030sv0000E1C5sd00000001* - ID_PRODUCT_FROM_DATABASE=TE1-PCI - -pci:v000010B5d00009030sv0000E1C5sd00000005* - ID_PRODUCT_FROM_DATABASE=TA1-PCI - -pci:v000010B5d00009030sv0000E1C5sd00000006* - ID_PRODUCT_FROM_DATABASE=TA1-PCI4 - -pci:v000010B5d00009036* - ID_PRODUCT_FROM_DATABASE=9036 - -pci:v000010B5d00009050* - ID_PRODUCT_FROM_DATABASE=PCI <-> IOBus Bridge - -pci:v000010B5d00009050sv000010B5sd00001067* - ID_PRODUCT_FROM_DATABASE=IXXAT CAN i165 - -pci:v000010B5d00009050sv000010B5sd0000114E* - ID_PRODUCT_FROM_DATABASE=Wasco WITIO PCI168extended - -pci:v000010B5d00009050sv000010B5sd00001169* - ID_PRODUCT_FROM_DATABASE=Wasco OPTOIO32standard 32 digital in, 32 digital out - -pci:v000010B5d00009050sv000010B5sd00001172* - ID_PRODUCT_FROM_DATABASE=IK220 (Heidenhain) - -pci:v000010B5d00009050sv000010B5sd00002036* - ID_PRODUCT_FROM_DATABASE=SatPak GPS - -pci:v000010B5d00009050sv000010B5sd00002221* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCL PCI LV: Timecode Reader Board - -pci:v000010B5d00009050sv000010B5sd00002273* - ID_PRODUCT_FROM_DATABASE=SH ARC-PCI SOHARD ARCNET card - -pci:v000010B5d00009050sv000010B5sd00002431* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCL PCI D: Timecode Reader Board - -pci:v000010B5d00009050sv000010B5sd00002905* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCI TS: Time Synchronisation Board - -pci:v000010B5d00009050sv000010B5sd00003196* - ID_PRODUCT_FROM_DATABASE=Goramo PLX200SYN sync serial card - -pci:v000010B5d00009050sv000010B5sd00009050* - ID_PRODUCT_FROM_DATABASE=PCI-I04 PCI Passive PC/CAN Interface - -pci:v000010B5d00009050sv00001369sd00008901* - ID_PRODUCT_FROM_DATABASE=PCX11+ PCI - -pci:v000010B5d00009050sv00001369sd00008F01* - ID_PRODUCT_FROM_DATABASE=VX222 - -pci:v000010B5d00009050sv00001369sd00009401* - ID_PRODUCT_FROM_DATABASE=PCX924 - -pci:v000010B5d00009050sv00001369sd00009501* - ID_PRODUCT_FROM_DATABASE=PCX22 - -pci:v000010B5d00009050sv00001498sd00000362* - ID_PRODUCT_FROM_DATABASE=TPMC866 8 Channel Serial Card - -pci:v000010B5d00009050sv00001522sd00000001* - ID_PRODUCT_FROM_DATABASE=RockForce 4 Port V.90 Data/Fax/Voice Modem - -pci:v000010B5d00009050sv00001522sd00000002* - ID_PRODUCT_FROM_DATABASE=RockForce 2 Port V.90 Data/Fax/Voice Modem - -pci:v000010B5d00009050sv00001522sd00000003* - ID_PRODUCT_FROM_DATABASE=RockForce 6 Port V.90 Data/Fax/Voice Modem - -pci:v000010B5d00009050sv00001522sd00000004* - ID_PRODUCT_FROM_DATABASE=RockForce 8 Port V.90 Data/Fax/Voice Modem - -pci:v000010B5d00009050sv00001522sd00000010* - ID_PRODUCT_FROM_DATABASE=RockForce2000 4 Port V.90 Data/Fax/Voice Modem - -pci:v000010B5d00009050sv00001522sd00000020* - ID_PRODUCT_FROM_DATABASE=RockForce2000 2 Port V.90 Data/Fax/Voice Modem - -pci:v000010B5d00009050sv000015EDsd00001000* - ID_PRODUCT_FROM_DATABASE=Macrolink MCCS 8-port Serial - -pci:v000010B5d00009050sv000015EDsd00001001* - ID_PRODUCT_FROM_DATABASE=Macrolink MCCS 16-port Serial - -pci:v000010B5d00009050sv000015EDsd00001002* - ID_PRODUCT_FROM_DATABASE=Macrolink MCCS 8-port Serial Hot Swap - -pci:v000010B5d00009050sv000015EDsd00001003* - ID_PRODUCT_FROM_DATABASE=Macrolink MCCS 16-port Serial Hot Swap - -pci:v000010B5d00009050sv00005654sd00002036* - ID_PRODUCT_FROM_DATABASE=OpenSwitch 6 Telephony card - -pci:v000010B5d00009050sv00005654sd00003132* - ID_PRODUCT_FROM_DATABASE=OpenSwitch 12 Telephony card - -pci:v000010B5d00009050sv00005654sd00005634* - ID_PRODUCT_FROM_DATABASE=OpenLine4 Telephony Card - -pci:v000010B5d00009050sv0000D531sd0000C002* - ID_PRODUCT_FROM_DATABASE=PCIntelliCAN 2xSJA1000 CAN bus - -pci:v000010B5d00009050sv0000D84Dsd00004006* - ID_PRODUCT_FROM_DATABASE=EX-4006 1P - -pci:v000010B5d00009050sv0000D84Dsd00004008* - ID_PRODUCT_FROM_DATABASE=EX-4008 1P EPP/ECP - -pci:v000010B5d00009050sv0000D84Dsd00004014* - ID_PRODUCT_FROM_DATABASE=EX-4014 2P - -pci:v000010B5d00009050sv0000D84Dsd00004018* - ID_PRODUCT_FROM_DATABASE=EX-4018 3P EPP/ECP - -pci:v000010B5d00009050sv0000D84Dsd00004025* - ID_PRODUCT_FROM_DATABASE=EX-4025 1S(16C550) RS-232 - -pci:v000010B5d00009050sv0000D84Dsd00004027* - ID_PRODUCT_FROM_DATABASE=EX-4027 1S(16C650) RS-232 - -pci:v000010B5d00009050sv0000D84Dsd00004028* - ID_PRODUCT_FROM_DATABASE=EX-4028 1S(16C850) RS-232 - -pci:v000010B5d00009050sv0000D84Dsd00004036* - ID_PRODUCT_FROM_DATABASE=EX-4036 2S(16C650) RS-232 - -pci:v000010B5d00009050sv0000D84Dsd00004037* - ID_PRODUCT_FROM_DATABASE=EX-4037 2S(16C650) RS-232 - -pci:v000010B5d00009050sv0000D84Dsd00004038* - ID_PRODUCT_FROM_DATABASE=EX-4038 2S(16C850) RS-232 - -pci:v000010B5d00009050sv0000D84Dsd00004052* - ID_PRODUCT_FROM_DATABASE=EX-4052 1S(16C550) RS-422/485 - -pci:v000010B5d00009050sv0000D84Dsd00004053* - ID_PRODUCT_FROM_DATABASE=EX-4053 2S(16C550) RS-422/485 - -pci:v000010B5d00009050sv0000D84Dsd00004055* - ID_PRODUCT_FROM_DATABASE=EX-4055 4S(16C550) RS-232 - -pci:v000010B5d00009050sv0000D84Dsd00004058* - ID_PRODUCT_FROM_DATABASE=EX-4055 4S(16C650) RS-232 - -pci:v000010B5d00009050sv0000D84Dsd00004065* - ID_PRODUCT_FROM_DATABASE=EX-4065 8S(16C550) RS-232 - -pci:v000010B5d00009050sv0000D84Dsd00004068* - ID_PRODUCT_FROM_DATABASE=EX-4068 8S(16C650) RS-232 - -pci:v000010B5d00009050sv0000D84Dsd00004078* - ID_PRODUCT_FROM_DATABASE=EX-4078 2S(16C552) RS-232+1P - -pci:v000010B5d00009052* - ID_PRODUCT_FROM_DATABASE=PCI9052 PCI <-> IOBus Bridge - -pci:v000010B5d00009054* - ID_PRODUCT_FROM_DATABASE=PCI9054 32-bit 33MHz PCI <-> IOBus Bridge - -pci:v000010B5d00009054sv000010B5sd00002455* - ID_PRODUCT_FROM_DATABASE=Wessex Techology PHIL-PCI - -pci:v000010B5d00009054sv000010B5sd00002696* - ID_PRODUCT_FROM_DATABASE=Innes Corp AM Radcap card - -pci:v000010B5d00009054sv000010B5sd00002717* - ID_PRODUCT_FROM_DATABASE=Innes Corp Auricon card - -pci:v000010B5d00009054sv000010B5sd00002844* - ID_PRODUCT_FROM_DATABASE=Innes Corp TVS Encoder card - -pci:v000010B5d00009054sv000012C7sd00004001* - ID_PRODUCT_FROM_DATABASE=Intel Dialogic DM/V960-4T1 PCI - -pci:v000010B5d00009054sv000012D9sd00000002* - ID_PRODUCT_FROM_DATABASE=PCI Prosody Card rev 1.5 - -pci:v000010B5d00009054sv000014B4sd0000D100* - ID_PRODUCT_FROM_DATABASE=Dektec DTA-100 - -pci:v000010B5d00009054sv000014B4sd0000D114* - ID_PRODUCT_FROM_DATABASE=Dektec DTA-120 - -pci:v000010B5d00009054sv000016DFsd00000011* - ID_PRODUCT_FROM_DATABASE=PIKA PrimeNet MM PCI - -pci:v000010B5d00009054sv000016DFsd00000012* - ID_PRODUCT_FROM_DATABASE=PIKA PrimeNet MM cPCI 8 - -pci:v000010B5d00009054sv000016DFsd00000013* - ID_PRODUCT_FROM_DATABASE=PIKA PrimeNet MM cPCI 8 (without CAS Signaling) - -pci:v000010B5d00009054sv000016DFsd00000014* - ID_PRODUCT_FROM_DATABASE=PIKA PrimeNet MM cPCI 4 - -pci:v000010B5d00009054sv000016DFsd00000015* - ID_PRODUCT_FROM_DATABASE=PIKA Daytona MM - -pci:v000010B5d00009054sv000016DFsd00000016* - ID_PRODUCT_FROM_DATABASE=PIKA InLine MM - -pci:v000010B5d00009056* - ID_PRODUCT_FROM_DATABASE=PCI9056 32-bit 66MHz PCI <-> IOBus Bridge - -pci:v000010B5d00009056sv000010B5sd00002979* - ID_PRODUCT_FROM_DATABASE=CellinkBlade 11 - CPCI board VoATM AAL1 - -pci:v000010B5d00009056sv000010B5sd00003268* - ID_PRODUCT_FROM_DATABASE=IXXAT iPC-I XC16/PCIe CAN Board - -pci:v000010B5d00009056sv000010B5sd00003352* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCL PCIe HD: Timecode Reader Board - -pci:v000010B5d00009056sv000010B5sd00003353* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCL PCIe D: Timecode Reader Board - -pci:v000010B5d00009056sv000010B5sd00003354* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCL PCIe LV: Timecode Reader Board - -pci:v000010B5d00009056sv000010B5sd00003355* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCL PCIe L: Timecode Reader Board - -pci:v000010B5d00009056sv000010B5sd00003415* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCIe TS: Time Synchronisation Board - -pci:v000010B5d00009056sv000010B5sd00003493* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte PCL PCIe 3G: Timecode Reader Board - -pci:v000010B5d00009056sv00001369sd0000C001* - ID_PRODUCT_FROM_DATABASE=LX6464ES - -pci:v000010B5d00009056sv00001369sd0000C201* - ID_PRODUCT_FROM_DATABASE=LX1616ES - -pci:v000010B5d00009056sv000014B4sd0000D10A* - ID_PRODUCT_FROM_DATABASE=DekTec DTA-110T - -pci:v000010B5d00009056sv000014B4sd0000D140* - ID_PRODUCT_FROM_DATABASE=Dektec DTA-140 - -pci:v000010B5d00009056sv00001A0Esd0000006F* - ID_PRODUCT_FROM_DATABASE=Dektec DTA-111 - -pci:v000010B5d00009060* - ID_PRODUCT_FROM_DATABASE=PCI9060 32-bit 33MHz PCI <-> IOBus Bridge - -pci:v000010B5d0000906D* - ID_PRODUCT_FROM_DATABASE=9060SD - -pci:v000010B5d0000906Dsv0000125Csd00000640* - ID_PRODUCT_FROM_DATABASE=Aries 16000P - -pci:v000010B5d0000906E* - ID_PRODUCT_FROM_DATABASE=9060ES - -pci:v000010B5d00009080* - ID_PRODUCT_FROM_DATABASE=PCI9080 32-bit; 33MHz PCI <-> IOBus Bridge - -pci:v000010B5d00009080sv0000103Csd000010EB* - ID_PRODUCT_FROM_DATABASE=(Agilent) E2777B 83K Series Optical Communication Interface - -pci:v000010B5d00009080sv0000103Csd000010EC* - ID_PRODUCT_FROM_DATABASE=(Agilent) E6978-66442 PCI CIC - -pci:v000010B5d00009080sv000010B5sd00001123* - ID_PRODUCT_FROM_DATABASE=Sectra KK631 encryption board - -pci:v000010B5d00009080sv000010B5sd00009080* - ID_PRODUCT_FROM_DATABASE=9080 [real subsystem ID not set] - -pci:v000010B5d00009080sv000012D9sd00000002* - ID_PRODUCT_FROM_DATABASE=PCI Prosody Card - -pci:v000010B5d00009080sv000012DFsd00004422* - ID_PRODUCT_FROM_DATABASE=4422PCI ["Do-All" Telemetry Data Aquisition System] - -pci:v000010B5d00009080sv00001369sd00009601* - ID_PRODUCT_FROM_DATABASE=PCX822np - -pci:v000010B5d00009080sv00001369sd0000A102* - ID_PRODUCT_FROM_DATABASE=PCX822v2 - -pci:v000010B5d00009080sv00001369sd0000A201* - ID_PRODUCT_FROM_DATABASE=PCX442 - -pci:v000010B5d00009080sv00001369sd0000A301* - ID_PRODUCT_FROM_DATABASE=LCM440v2 - -pci:v000010B5d00009080sv00001369sd0000A401* - ID_PRODUCT_FROM_DATABASE=VX822 - -pci:v000010B5d00009080sv00001369sd0000A402* - ID_PRODUCT_FROM_DATABASE=VX822v2 - -pci:v000010B5d00009080sv00001369sd0000A901* - ID_PRODUCT_FROM_DATABASE=LCM420 - -pci:v000010B5d00009080sv00001369sd0000AA01* - ID_PRODUCT_FROM_DATABASE=VX820v2 - -pci:v000010B5d00009080sv00001517sd0000000B* - ID_PRODUCT_FROM_DATABASE=ECSG-1R3ADC-PMC Clock synthesizer - -pci:v000010B5d00009656* - ID_PRODUCT_FROM_DATABASE=PCI9656 PCI <-> IOBus Bridge - -pci:v000010B5d00009656sv00001517sd0000000F* - ID_PRODUCT_FROM_DATABASE=ECDR-GC314-PMC Receiver - -pci:v000010B5d00009656sv00001885sd00000700* - ID_PRODUCT_FROM_DATABASE=Tsunami FPGA PMC with Altera Stratix S40 - -pci:v000010B5d00009656sv00001885sd00000701* - ID_PRODUCT_FROM_DATABASE=Tsunami FPGA PMC with Altera Stratix S30 - -pci:v000010B5d0000A100* - ID_PRODUCT_FROM_DATABASE=Blackmagic Design DeckLink - -pci:v000010B5d0000BB04* - ID_PRODUCT_FROM_DATABASE=B&B 3PCIOSD1A Isolated PCI Serial - -pci:v000010B5d0000C001* - ID_PRODUCT_FROM_DATABASE=CronyxOmega-PCI (8-port RS232) - -pci:v000010B5d0000D00D* - ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - -pci:v000010B5d0000D00Dsv000010B5sd00009030* - ID_PRODUCT_FROM_DATABASE=Digium Tormenta 2 T400P or E400P Quad T1 or E1 PCI card - -pci:v000010B5d0000D33D* - ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - -pci:v000010B5d0000D33Dsv000010B5sd00009030* - ID_PRODUCT_FROM_DATABASE=Tormenta 3 Varion V401PT Quad T1/J1 PCI card - -pci:v000010B5d0000D44D* - ID_PRODUCT_FROM_DATABASE=PCI9030 32-bit 33MHz PCI <-> IOBus Bridge - -pci:v000010B5d0000D44Dsv000010B5sd000017F6* - ID_PRODUCT_FROM_DATABASE=Allo CP100P/E 1-port E1/T1/J1 PCI/PCIe card - -pci:v000010B5d0000D44Dsv000010B5sd000017F7* - ID_PRODUCT_FROM_DATABASE=Allo CP400P/E 4-port E1/T1/J1 PCI/PCIe card - -pci:v000010B5d0000D44Dsv000010B5sd000017F8* - ID_PRODUCT_FROM_DATABASE=Allo CP200P/E 2-port E1/T1/J1 PCI/PCIe card - -pci:v000010B5d0000D44Dsv000010B5sd00009030* - ID_PRODUCT_FROM_DATABASE=Tormenta 3 Varion V401PE Quad E1 PCI card - -pci:v000010B6* - ID_VENDOR_FROM_DATABASE=Madge Networks - -pci:v000010B6d00000001* - ID_PRODUCT_FROM_DATABASE=Smart 16/4 PCI Ringnode - -pci:v000010B6d00000002* - ID_PRODUCT_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk2 - -pci:v000010B6d00000002sv000010B6sd00000002* - ID_PRODUCT_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk2 - -pci:v000010B6d00000002sv000010B6sd00000006* - ID_PRODUCT_FROM_DATABASE=16/4 CardBus Adapter - -pci:v000010B6d00000003* - ID_PRODUCT_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk3 - -pci:v000010B6d00000003sv00000E11sd0000B0FD* - ID_PRODUCT_FROM_DATABASE=Compaq NC4621 PCI, 4/16, WOL - -pci:v000010B6d00000003sv000010B6sd00000003* - ID_PRODUCT_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk3 - -pci:v000010B6d00000003sv000010B6sd00000007* - ID_PRODUCT_FROM_DATABASE=Presto PCI Plus Adapter - -pci:v000010B6d00000004* - ID_PRODUCT_FROM_DATABASE=Smart 16/4 PCI Ringnode Mk1 - -pci:v000010B6d00000006* - ID_PRODUCT_FROM_DATABASE=16/4 Cardbus Adapter - -pci:v000010B6d00000006sv000010B6sd00000006* - ID_PRODUCT_FROM_DATABASE=16/4 CardBus Adapter - -pci:v000010B6d00000007* - ID_PRODUCT_FROM_DATABASE=Presto PCI Adapter - -pci:v000010B6d00000007sv000010B6sd00000007* - ID_PRODUCT_FROM_DATABASE=Presto PCI - -pci:v000010B6d00000009* - ID_PRODUCT_FROM_DATABASE=Smart 100/16/4 PCI-HS Ringnode - -pci:v000010B6d00000009sv000010B6sd00000009* - ID_PRODUCT_FROM_DATABASE=Smart 100/16/4 PCI-HS Ringnode - -pci:v000010B6d0000000A* - ID_PRODUCT_FROM_DATABASE=Smart 100/16/4 PCI Ringnode - -pci:v000010B6d0000000Asv000010B6sd0000000A* - ID_PRODUCT_FROM_DATABASE=Smart 100/16/4 PCI Ringnode - -pci:v000010B6d0000000B* - ID_PRODUCT_FROM_DATABASE=16/4 CardBus Adapter Mk2 - -pci:v000010B6d0000000Bsv000010B6sd00000008* - ID_PRODUCT_FROM_DATABASE=16/4 CardBus Adapter Mk2 - -pci:v000010B6d0000000Bsv000010B6sd0000000B* - ID_PRODUCT_FROM_DATABASE=16/4 Cardbus Adapter Mk2 - -pci:v000010B6d0000000C* - ID_PRODUCT_FROM_DATABASE=RapidFire 3140V2 16/4 TR Adapter - -pci:v000010B6d0000000Csv000010B6sd0000000C* - ID_PRODUCT_FROM_DATABASE=RapidFire 3140V2 16/4 TR Adapter - -pci:v000010B6d00001000* - ID_PRODUCT_FROM_DATABASE=Collage 25/155 ATM Client Adapter - -pci:v000010B6d00001001* - ID_PRODUCT_FROM_DATABASE=Collage 155 ATM Server Adapter - -pci:v000010B7* - ID_VENDOR_FROM_DATABASE=3Com Corporation - -pci:v000010B7d00000001* - ID_PRODUCT_FROM_DATABASE=3c985 1000BaseSX (SX/TX) - -pci:v000010B7d00000013* - ID_PRODUCT_FROM_DATABASE=AR5212 802.11abg NIC (3CRDAG675) - -pci:v000010B7d00000013sv000010B7sd00002031* - ID_PRODUCT_FROM_DATABASE=3CRDAG675 11a/b/g Wireless PCI Adapter - -pci:v000010B7d00000910* - ID_PRODUCT_FROM_DATABASE=3C910-A01 - -pci:v000010B7d00001006* - ID_PRODUCT_FROM_DATABASE=MINI PCI type 3B Data Fax Modem - -pci:v000010B7d00001007* - ID_PRODUCT_FROM_DATABASE=Mini PCI 56k Winmodem - -pci:v000010B7d00001007sv000010B7sd0000615B* - ID_PRODUCT_FROM_DATABASE=Mini PCI 56K Modem - -pci:v000010B7d00001007sv000010B7sd0000615C* - ID_PRODUCT_FROM_DATABASE=Mini PCI 56K Modem - -pci:v000010B7d00001201* - ID_PRODUCT_FROM_DATABASE=3c982-TXM 10/100baseTX Dual Port A [Hydra] - -pci:v000010B7d00001202* - ID_PRODUCT_FROM_DATABASE=3c982-TXM 10/100baseTX Dual Port B [Hydra] - -pci:v000010B7d00001700* - ID_PRODUCT_FROM_DATABASE=3c940 10/100/1000Base-T [Marvell] - -pci:v000010B7d00001700sv00001043sd000080EB* - ID_PRODUCT_FROM_DATABASE=A7V600/P4P800/K8V motherboard - -pci:v000010B7d00001700sv000010B7sd00000010* - ID_PRODUCT_FROM_DATABASE=3C940 Gigabit LOM Ethernet Adapter - -pci:v000010B7d00001700sv000010B7sd00000020* - ID_PRODUCT_FROM_DATABASE=3C941 Gigabit LOM Ethernet Adapter - -pci:v000010B7d00001700sv0000147Bsd00001407* - ID_PRODUCT_FROM_DATABASE=KV8-MAX3 motherboard - -pci:v000010B7d00003390* - ID_PRODUCT_FROM_DATABASE=3c339 TokenLink Velocity - -pci:v000010B7d00003590* - ID_PRODUCT_FROM_DATABASE=3c359 TokenLink Velocity XL - -pci:v000010B7d00003590sv000010B7sd00003590* - ID_PRODUCT_FROM_DATABASE=TokenLink Velocity XL Adapter (3C359/359B) - -pci:v000010B7d00004500* - ID_PRODUCT_FROM_DATABASE=3c450 HomePNA [Tornado] - -pci:v000010B7d00005055* - ID_PRODUCT_FROM_DATABASE=3c555 Laptop Hurricane - -pci:v000010B7d00005057* - ID_PRODUCT_FROM_DATABASE=3c575 Megahertz 10/100 LAN CardBus [Boomerang] - -pci:v000010B7d00005057sv000010B7sd00005A57* - ID_PRODUCT_FROM_DATABASE=3C575 Megahertz 10/100 LAN Cardbus PC Card - -pci:v000010B7d00005157* - ID_PRODUCT_FROM_DATABASE=3cCFE575BT Megahertz 10/100 LAN CardBus [Cyclone] - -pci:v000010B7d00005157sv000010B7sd00005B57* - ID_PRODUCT_FROM_DATABASE=3C575 Megahertz 10/100 LAN Cardbus PC Card - -pci:v000010B7d00005257* - ID_PRODUCT_FROM_DATABASE=3cCFE575CT CardBus [Cyclone] - -pci:v000010B7d00005257sv000010B7sd00005C57* - ID_PRODUCT_FROM_DATABASE=FE575C-3Com 10/100 LAN CardBus-Fast Ethernet - -pci:v000010B7d00005900* - ID_PRODUCT_FROM_DATABASE=3c590 10BaseT [Vortex] - -pci:v000010B7d00005920* - ID_PRODUCT_FROM_DATABASE=3c592 EISA 10mbps Demon/Vortex - -pci:v000010B7d00005950* - ID_PRODUCT_FROM_DATABASE=3c595 100BaseTX [Vortex] - -pci:v000010B7d00005951* - ID_PRODUCT_FROM_DATABASE=3c595 100BaseT4 [Vortex] - -pci:v000010B7d00005952* - ID_PRODUCT_FROM_DATABASE=3c595 100Base-MII [Vortex] - -pci:v000010B7d00005970* - ID_PRODUCT_FROM_DATABASE=3c597 EISA Fast Demon/Vortex - -pci:v000010B7d00005B57* - ID_PRODUCT_FROM_DATABASE=3c595 Megahertz 10/100 LAN CardBus [Boomerang] - -pci:v000010B7d00005B57sv000010B7sd00005B57* - ID_PRODUCT_FROM_DATABASE=3C575 Megahertz 10/100 LAN Cardbus PC Card - -pci:v000010B7d00006000* - ID_PRODUCT_FROM_DATABASE=3CRSHPW796 [OfficeConnect Wireless CardBus] - -pci:v000010B7d00006001* - ID_PRODUCT_FROM_DATABASE=3com 3CRWE154G72 [Office Connect Wireless LAN Adapter] - -pci:v000010B7d00006055* - ID_PRODUCT_FROM_DATABASE=3c556 Hurricane CardBus [Cyclone] - -pci:v000010B7d00006056* - ID_PRODUCT_FROM_DATABASE=3c556B CardBus [Tornado] - -pci:v000010B7d00006056sv000010B7sd00006556* - ID_PRODUCT_FROM_DATABASE=10/100 Mini PCI Ethernet Adapter - -pci:v000010B7d00006560* - ID_PRODUCT_FROM_DATABASE=3cCFE656 CardBus [Cyclone] - -pci:v000010B7d00006560sv000010B7sd0000656A* - ID_PRODUCT_FROM_DATABASE=3CCFEM656 10/100 LAN+56K Modem CardBus - -pci:v000010B7d00006561* - ID_PRODUCT_FROM_DATABASE=3cCFEM656 10/100 LAN+56K Modem CardBus - -pci:v000010B7d00006561sv000010B7sd0000656B* - ID_PRODUCT_FROM_DATABASE=3CCFEM656 10/100 LAN+56K Modem CardBus - -pci:v000010B7d00006562* - ID_PRODUCT_FROM_DATABASE=3cCFEM656B 10/100 LAN+Winmodem CardBus [Cyclone] - -pci:v000010B7d00006562sv000010B7sd0000656B* - ID_PRODUCT_FROM_DATABASE=3CCFEM656B 10/100 LAN+56K Modem CardBus - -pci:v000010B7d00006563* - ID_PRODUCT_FROM_DATABASE=3cCFEM656B 10/100 LAN+56K Modem CardBus - -pci:v000010B7d00006563sv000010B7sd0000656B* - ID_PRODUCT_FROM_DATABASE=3CCFEM656 10/100 LAN+56K Modem CardBus - -pci:v000010B7d00006564* - ID_PRODUCT_FROM_DATABASE=3cXFEM656C 10/100 LAN+Winmodem CardBus [Tornado] - -pci:v000010B7d00007646* - ID_PRODUCT_FROM_DATABASE=3cSOHO100-TX Hurricane - -pci:v000010B7d00007770* - ID_PRODUCT_FROM_DATABASE=3CRWE777 PCI Wireless Adapter [Airconnect] - -pci:v000010B7d00007940* - ID_PRODUCT_FROM_DATABASE=3c803 FDDILink UTP Controller - -pci:v000010B7d00007980* - ID_PRODUCT_FROM_DATABASE=3c804 FDDILink SAS Controller - -pci:v000010B7d00007990* - ID_PRODUCT_FROM_DATABASE=3c805 FDDILink DAS Controller - -pci:v000010B7d000080EB* - ID_PRODUCT_FROM_DATABASE=3c940B 10/100/1000Base-T - -pci:v000010B7d00008811* - ID_PRODUCT_FROM_DATABASE=Token ring - -pci:v000010B7d00009000* - ID_PRODUCT_FROM_DATABASE=3c900 10BaseT [Boomerang] - -pci:v000010B7d00009001* - ID_PRODUCT_FROM_DATABASE=3c900 10Mbps Combo [Boomerang] - -pci:v000010B7d00009004* - ID_PRODUCT_FROM_DATABASE=3c900B-TPO Etherlink XL [Cyclone] - -pci:v000010B7d00009004sv000010B7sd00009004* - ID_PRODUCT_FROM_DATABASE=3C900B-TPO Etherlink XL TPO 10Mb - -pci:v000010B7d00009005* - ID_PRODUCT_FROM_DATABASE=3c900B-Combo Etherlink XL [Cyclone] - -pci:v000010B7d00009005sv000010B7sd00009005* - ID_PRODUCT_FROM_DATABASE=3C900B-Combo Etherlink XL Combo - -pci:v000010B7d00009006* - ID_PRODUCT_FROM_DATABASE=3c900B-TPC Etherlink XL [Cyclone] - -pci:v000010B7d0000900A* - ID_PRODUCT_FROM_DATABASE=3c900B-FL 10base-FL [Cyclone] - -pci:v000010B7d00009050* - ID_PRODUCT_FROM_DATABASE=3c905 100BaseTX [Boomerang] - -pci:v000010B7d00009051* - ID_PRODUCT_FROM_DATABASE=3c905 100BaseT4 [Boomerang] - -pci:v000010B7d00009054* - ID_PRODUCT_FROM_DATABASE=3C905B-TX Fast Etherlink XL PCI - -pci:v000010B7d00009054sv000010B7sd00009054* - ID_PRODUCT_FROM_DATABASE=3C905B-TX Fast Etherlink XL PCI - -pci:v000010B7d00009055* - ID_PRODUCT_FROM_DATABASE=3c905B 100BaseTX [Cyclone] - -pci:v000010B7d00009055sv00001028sd00000080* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000081* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000082* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000083* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000084* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000085* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000086* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000087* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000088* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000089* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000090* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000091* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000092* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000093* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000094* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000095* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000096* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000097* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000098* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv00001028sd00000099* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009055sv000010B7sd00009055* - ID_PRODUCT_FROM_DATABASE=3C905B Fast Etherlink XL 10/100 - -pci:v000010B7d00009056* - ID_PRODUCT_FROM_DATABASE=3c905B-T4 Fast EtherLink XL [Cyclone] - -pci:v000010B7d00009058* - ID_PRODUCT_FROM_DATABASE=3c905B Deluxe Etherlink 10/100/BNC [Cyclone] - -pci:v000010B7d0000905A* - ID_PRODUCT_FROM_DATABASE=3c905B-FX Fast Etherlink XL FX 100baseFx [Cyclone] - -pci:v000010B7d00009200* - ID_PRODUCT_FROM_DATABASE=3c905C-TX/TX-M [Tornado] - -pci:v000010B7d00009200sv00001028sd00000095* - ID_PRODUCT_FROM_DATABASE=3C920 Integrated Fast Ethernet Controller - -pci:v000010B7d00009200sv00001028sd00000097* - ID_PRODUCT_FROM_DATABASE=3C920 Integrated Fast Ethernet Controller - -pci:v000010B7d00009200sv00001028sd000000B4* - ID_PRODUCT_FROM_DATABASE=OptiPlex GX110 - -pci:v000010B7d00009200sv00001028sd000000D8* - ID_PRODUCT_FROM_DATABASE=Precision 530 - -pci:v000010B7d00009200sv00001028sd000000FE* - ID_PRODUCT_FROM_DATABASE=Optiplex GX240 - -pci:v000010B7d00009200sv00001028sd0000012A* - ID_PRODUCT_FROM_DATABASE=3C920 Integrated Fast Ethernet Controller [Latitude C640] - -pci:v000010B7d00009200sv000010B7sd00001000* - ID_PRODUCT_FROM_DATABASE=3C905CX-TX/TX-M Fast Etherlink for PC Management NIC - -pci:v000010B7d00009200sv000010B7sd00007000* - ID_PRODUCT_FROM_DATABASE=10/100 Mini PCI Ethernet Adapter - -pci:v000010B7d00009200sv000010F1sd00002466* - ID_PRODUCT_FROM_DATABASE=Tiger MPX S2466 (3C920 Integrated Fast Ethernet Controller) - -pci:v000010B7d00009200sv0000144Dsd0000C005* - ID_PRODUCT_FROM_DATABASE=X10 Laptop - -pci:v000010B7d00009201* - ID_PRODUCT_FROM_DATABASE=3C920B-EMB Integrated Fast Ethernet Controller [Tornado] - -pci:v000010B7d00009201sv00001043sd000080AB* - ID_PRODUCT_FROM_DATABASE=A7N8X Deluxe onboard 3C920B-EMB Integrated Fast Ethernet Controller - -pci:v000010B7d00009202* - ID_PRODUCT_FROM_DATABASE=3Com 3C920B-EMB-WNM Integrated Fast Ethernet Controller - -pci:v000010B7d00009210* - ID_PRODUCT_FROM_DATABASE=3C920B-EMB-WNM Integrated Fast Ethernet Controller - -pci:v000010B7d00009300* - ID_PRODUCT_FROM_DATABASE=3CSOHO100B-TX 910-A01 [tulip] - -pci:v000010B7d00009800* - ID_PRODUCT_FROM_DATABASE=3c980-TX Fast Etherlink XL Server Adapter [Cyclone] - -pci:v000010B7d00009800sv000010B7sd00009800* - ID_PRODUCT_FROM_DATABASE=3c980-TX Fast Etherlink XL Server Adapter - -pci:v000010B7d00009805* - ID_PRODUCT_FROM_DATABASE=3c980-C 10/100baseTX NIC [Python-T] - -pci:v000010B7d00009805sv000010B7sd00001201* - ID_PRODUCT_FROM_DATABASE=EtherLink Server 10/100 Dual Port A - -pci:v000010B7d00009805sv000010B7sd00001202* - ID_PRODUCT_FROM_DATABASE=EtherLink Server 10/100 Dual Port B - -pci:v000010B7d00009805sv000010B7sd00009805* - ID_PRODUCT_FROM_DATABASE=3c980 10/100baseTX NIC [Python-T] - -pci:v000010B7d00009805sv000010F1sd00002462* - ID_PRODUCT_FROM_DATABASE=Thunder K7 S2462 - -pci:v000010B7d00009900* - ID_PRODUCT_FROM_DATABASE=3C990-TX [Typhoon] - -pci:v000010B7d00009902* - ID_PRODUCT_FROM_DATABASE=3CR990-TX-95 [Typhoon 56-bit] - -pci:v000010B7d00009903* - ID_PRODUCT_FROM_DATABASE=3CR990-TX-97 [Typhoon 168-bit] - -pci:v000010B7d00009904* - ID_PRODUCT_FROM_DATABASE=3C990B-TX-M/3C990BSVR [Typhoon2] - -pci:v000010B7d00009904sv000010B7sd00001000* - ID_PRODUCT_FROM_DATABASE=3CR990B-TX-M [Typhoon2] - -pci:v000010B7d00009904sv000010B7sd00002000* - ID_PRODUCT_FROM_DATABASE=3CR990BSVR [Typhoon2 Server] - -pci:v000010B7d00009905* - ID_PRODUCT_FROM_DATABASE=3CR990-FX-95/97/95 [Typhon Fiber] - -pci:v000010B7d00009905sv000010B7sd00001101* - ID_PRODUCT_FROM_DATABASE=3CR990-FX-95 [Typhoon Fiber 56-bit] - -pci:v000010B7d00009905sv000010B7sd00001102* - ID_PRODUCT_FROM_DATABASE=3CR990-FX-97 [Typhoon Fiber 168-bit] - -pci:v000010B7d00009905sv000010B7sd00002101* - ID_PRODUCT_FROM_DATABASE=3CR990-FX-95 Server [Typhoon Fiber 56-bit] - -pci:v000010B7d00009905sv000010B7sd00002102* - ID_PRODUCT_FROM_DATABASE=3CR990-FX-97 Server [Typhoon Fiber 168-bit] - -pci:v000010B7d00009908* - ID_PRODUCT_FROM_DATABASE=3CR990SVR95 [Typhoon Server 56-bit] - -pci:v000010B7d00009909* - ID_PRODUCT_FROM_DATABASE=3CR990SVR97 [Typhoon Server 168-bit] - -pci:v000010B7d0000990A* - ID_PRODUCT_FROM_DATABASE=3C990SVR [Typhoon Server] - -pci:v000010B7d0000990B* - ID_PRODUCT_FROM_DATABASE=3C990SVR [Typhoon Server] - -pci:v000010B8* - ID_VENDOR_FROM_DATABASE=Standard Microsystems Corp [SMC] - -pci:v000010B8d00000005* - ID_PRODUCT_FROM_DATABASE=83c170 EPIC/100 Fast Ethernet Adapter - -pci:v000010B8d00000005sv00001055sd0000E000* - ID_PRODUCT_FROM_DATABASE=LANEPIC 10/100 [EVB171Q-PCI] - -pci:v000010B8d00000005sv00001055sd0000E002* - ID_PRODUCT_FROM_DATABASE=LANEPIC 10/100 [EVB171G-PCI] - -pci:v000010B8d00000005sv000010B8sd0000A011* - ID_PRODUCT_FROM_DATABASE=EtherPower II 10/100 - -pci:v000010B8d00000005sv000010B8sd0000A014* - ID_PRODUCT_FROM_DATABASE=EtherPower II 10/100 - -pci:v000010B8d00000005sv000010B8sd0000A015* - ID_PRODUCT_FROM_DATABASE=EtherPower II 10/100 - -pci:v000010B8d00000005sv000010B8sd0000A016* - ID_PRODUCT_FROM_DATABASE=EtherPower II 10/100 - -pci:v000010B8d00000005sv000010B8sd0000A017* - ID_PRODUCT_FROM_DATABASE=EtherPower II 10/100 - -pci:v000010B8d00000006* - ID_PRODUCT_FROM_DATABASE=83c175 EPIC/100 Fast Ethernet Adapter - -pci:v000010B8d00000006sv00001055sd0000E100* - ID_PRODUCT_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter - -pci:v000010B8d00000006sv00001055sd0000E102* - ID_PRODUCT_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter - -pci:v000010B8d00000006sv00001055sd0000E300* - ID_PRODUCT_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter - -pci:v000010B8d00000006sv00001055sd0000E302* - ID_PRODUCT_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter - -pci:v000010B8d00000006sv000010B8sd0000A012* - ID_PRODUCT_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter - -pci:v000010B8d00000006sv000013A2sd00008002* - ID_PRODUCT_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter - -pci:v000010B8d00000006sv000013A2sd00008006* - ID_PRODUCT_FROM_DATABASE=LANEPIC Cardbus Fast Ethernet Adapter - -pci:v000010B8d00001000* - ID_PRODUCT_FROM_DATABASE=FDC 37c665 - -pci:v000010B8d00001001* - ID_PRODUCT_FROM_DATABASE=FDC 37C922 - -pci:v000010B8d0000A011* - ID_PRODUCT_FROM_DATABASE=83C170QF - -pci:v000010B8d0000B106* - ID_PRODUCT_FROM_DATABASE=SMC34C90 - -pci:v000010B9* - ID_VENDOR_FROM_DATABASE=ULi Electronics Inc. - -pci:v000010B9d00000101* - ID_PRODUCT_FROM_DATABASE=CMI8338/C3DX PCI Audio Device - -pci:v000010B9d00000111* - ID_PRODUCT_FROM_DATABASE=C-Media CMI8738/C3DX Audio Device (OEM) - -pci:v000010B9d00000111sv000010B9sd00000111* - ID_PRODUCT_FROM_DATABASE=C-Media CMI8738/C3DX Audio Device (OEM) - -pci:v000010B9d00000780* - ID_PRODUCT_FROM_DATABASE=Multi-IO Card - -pci:v000010B9d00000782* - ID_PRODUCT_FROM_DATABASE=Multi-IO Card - -pci:v000010B9d00001435* - ID_PRODUCT_FROM_DATABASE=M1435 - -pci:v000010B9d00001445* - ID_PRODUCT_FROM_DATABASE=M1445 - -pci:v000010B9d00001449* - ID_PRODUCT_FROM_DATABASE=M1449 - -pci:v000010B9d00001451* - ID_PRODUCT_FROM_DATABASE=M1451 - -pci:v000010B9d00001461* - ID_PRODUCT_FROM_DATABASE=M1461 - -pci:v000010B9d00001489* - ID_PRODUCT_FROM_DATABASE=M1489 - -pci:v000010B9d00001511* - ID_PRODUCT_FROM_DATABASE=M1511 [Aladdin] - -pci:v000010B9d00001512* - ID_PRODUCT_FROM_DATABASE=M1512 [Aladdin] - -pci:v000010B9d00001513* - ID_PRODUCT_FROM_DATABASE=M1513 [Aladdin] - -pci:v000010B9d00001521* - ID_PRODUCT_FROM_DATABASE=M1521 [Aladdin III] - -pci:v000010B9d00001521sv000010B9sd00001521* - ID_PRODUCT_FROM_DATABASE=ALI M1521 Aladdin III CPU Bridge - -pci:v000010B9d00001523* - ID_PRODUCT_FROM_DATABASE=M1523 - -pci:v000010B9d00001523sv000010B9sd00001523* - ID_PRODUCT_FROM_DATABASE=ALI M1523 ISA Bridge - -pci:v000010B9d00001531* - ID_PRODUCT_FROM_DATABASE=M1531 [Aladdin IV] - -pci:v000010B9d00001533* - ID_PRODUCT_FROM_DATABASE=M1533/M1535/M1543 PCI to ISA Bridge [Aladdin IV/V/V+] - -pci:v000010B9d00001533sv00001014sd0000053B* - ID_PRODUCT_FROM_DATABASE=ThinkPad R40e - -pci:v000010B9d00001533sv000010B9sd00001533* - ID_PRODUCT_FROM_DATABASE=ALi M1533 Aladdin IV/V ISA Bridge - -pci:v000010B9d00001541* - ID_PRODUCT_FROM_DATABASE=M1541 - -pci:v000010B9d00001541sv000010B9sd00001541* - ID_PRODUCT_FROM_DATABASE=ALI M1541 Aladdin V/V+ AGP System Controller - -pci:v000010B9d00001543* - ID_PRODUCT_FROM_DATABASE=M1543 - -pci:v000010B9d00001563* - ID_PRODUCT_FROM_DATABASE=M1563 HyperTransport South Bridge - -pci:v000010B9d00001563sv000010B9sd00001563* - ID_PRODUCT_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard - -pci:v000010B9d00001563sv00001849sd00001563* - ID_PRODUCT_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard - -pci:v000010B9d00001573* - ID_PRODUCT_FROM_DATABASE=PCI to LPC Controller - -pci:v000010B9d00001575* - ID_PRODUCT_FROM_DATABASE=M1575 South Bridge - -pci:v000010B9d00001621* - ID_PRODUCT_FROM_DATABASE=M1621 - -pci:v000010B9d00001631* - ID_PRODUCT_FROM_DATABASE=ALI M1631 PCI North Bridge Aladdin Pro III - -pci:v000010B9d00001632* - ID_PRODUCT_FROM_DATABASE=M1632M Northbridge+Trident - -pci:v000010B9d00001641* - ID_PRODUCT_FROM_DATABASE=ALI M1641 PCI North Bridge Aladdin Pro IV - -pci:v000010B9d00001644* - ID_PRODUCT_FROM_DATABASE=M1644/M1644T Northbridge+Trident - -pci:v000010B9d00001646* - ID_PRODUCT_FROM_DATABASE=M1646 Northbridge+Trident - -pci:v000010B9d00001647* - ID_PRODUCT_FROM_DATABASE=M1647 Northbridge [MAGiK 1 / MobileMAGiK 1] - -pci:v000010B9d00001651* - ID_PRODUCT_FROM_DATABASE=M1651/M1651T Northbridge [Aladdin-Pro 5/5M,Aladdin-Pro 5T/5TM] - -pci:v000010B9d00001671* - ID_PRODUCT_FROM_DATABASE=M1671 Super P4 Northbridge [AGP4X,PCI and SDR/DDR] - -pci:v000010B9d00001672* - ID_PRODUCT_FROM_DATABASE=M1672 Northbridge [CyberALADDiN-P4] - -pci:v000010B9d00001681* - ID_PRODUCT_FROM_DATABASE=M1681 P4 Northbridge [AGP8X,HyperTransport and SDR/DDR] - -pci:v000010B9d00001687* - ID_PRODUCT_FROM_DATABASE=M1687 K8 Northbridge [AGP8X and HyperTransport] - -pci:v000010B9d00001689* - ID_PRODUCT_FROM_DATABASE=M1689 K8 Northbridge [Super K8 Single Chip] - -pci:v000010B9d00001695* - ID_PRODUCT_FROM_DATABASE=M1695 K8 Northbridge [PCI Express and HyperTransport] - -pci:v000010B9d00001697* - ID_PRODUCT_FROM_DATABASE=M1697 HTT Host Bridge - -pci:v000010B9d00003141* - ID_PRODUCT_FROM_DATABASE=M3141 - -pci:v000010B9d00003143* - ID_PRODUCT_FROM_DATABASE=M3143 - -pci:v000010B9d00003145* - ID_PRODUCT_FROM_DATABASE=M3145 - -pci:v000010B9d00003147* - ID_PRODUCT_FROM_DATABASE=M3147 - -pci:v000010B9d00003149* - ID_PRODUCT_FROM_DATABASE=M3149 - -pci:v000010B9d00003151* - ID_PRODUCT_FROM_DATABASE=M3151 - -pci:v000010B9d00003307* - ID_PRODUCT_FROM_DATABASE=M3307 - -pci:v000010B9d00003309* - ID_PRODUCT_FROM_DATABASE=M3309 - -pci:v000010B9d00003323* - ID_PRODUCT_FROM_DATABASE=M3325 Video/Audio Decoder - -pci:v000010B9d00005212* - ID_PRODUCT_FROM_DATABASE=M4803 - -pci:v000010B9d00005215* - ID_PRODUCT_FROM_DATABASE=MS4803 - -pci:v000010B9d00005217* - ID_PRODUCT_FROM_DATABASE=M5217H - -pci:v000010B9d00005219* - ID_PRODUCT_FROM_DATABASE=M5219 - -pci:v000010B9d00005225* - ID_PRODUCT_FROM_DATABASE=M5225 - -pci:v000010B9d00005228* - ID_PRODUCT_FROM_DATABASE=M5228 ALi ATA/RAID Controller - -pci:v000010B9d00005229* - ID_PRODUCT_FROM_DATABASE=M5229 IDE - -pci:v000010B9d00005229sv00001014sd0000050F* - ID_PRODUCT_FROM_DATABASE=ThinkPad R30 - -pci:v000010B9d00005229sv00001014sd0000053D* - ID_PRODUCT_FROM_DATABASE=ThinkPad R40e - -pci:v000010B9d00005229sv0000103Csd00000024* - ID_PRODUCT_FROM_DATABASE=Pavilion ze4400 builtin IDE - -pci:v000010B9d00005229sv0000103Csd00000025* - ID_PRODUCT_FROM_DATABASE=XE4500 Notebook - -pci:v000010B9d00005229sv00001043sd00008053* - ID_PRODUCT_FROM_DATABASE=A7A266 Motherboard IDE - -pci:v000010B9d00005229sv00001849sd00005229* - ID_PRODUCT_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard IDE (PATA) - -pci:v000010B9d00005235* - ID_PRODUCT_FROM_DATABASE=M5225 - -pci:v000010B9d00005237* - ID_PRODUCT_FROM_DATABASE=USB 1.1 Controller - -pci:v000010B9d00005237sv00001014sd00000540* - ID_PRODUCT_FROM_DATABASE=ThinkPad R40e - -pci:v000010B9d00005237sv0000103Csd00000024* - ID_PRODUCT_FROM_DATABASE=Pavilion ze4400 builtin USB - -pci:v000010B9d00005237sv0000103Csd00000025* - ID_PRODUCT_FROM_DATABASE=XE4500 Notebook - -pci:v000010B9d00005237sv0000104Dsd0000810F* - ID_PRODUCT_FROM_DATABASE=VAIO PCG-U1 USB/OHCI Revision 1.0 - -pci:v000010B9d00005237sv000010B9sd00005237* - ID_PRODUCT_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard - -pci:v000010B9d00005237sv00001849sd00005237* - ID_PRODUCT_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard - -pci:v000010B9d00005239* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Controller - -pci:v000010B9d00005239sv000010B9sd00005239* - ID_PRODUCT_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard - -pci:v000010B9d00005239sv00001849sd00005239* - ID_PRODUCT_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard - -pci:v000010B9d00005243* - ID_PRODUCT_FROM_DATABASE=M1541 PCI to AGP Controller - -pci:v000010B9d00005246* - ID_PRODUCT_FROM_DATABASE=AGP8X Controller - -pci:v000010B9d00005247* - ID_PRODUCT_FROM_DATABASE=PCI to AGP Controller - -pci:v000010B9d00005249* - ID_PRODUCT_FROM_DATABASE=M5249 HTT to PCI Bridge - -pci:v000010B9d0000524B* - ID_PRODUCT_FROM_DATABASE=PCI Express Root Port - -pci:v000010B9d0000524C* - ID_PRODUCT_FROM_DATABASE=PCI Express Root Port - -pci:v000010B9d0000524D* - ID_PRODUCT_FROM_DATABASE=PCI Express Root Port - -pci:v000010B9d0000524E* - ID_PRODUCT_FROM_DATABASE=PCI Express Root Port - -pci:v000010B9d00005251* - ID_PRODUCT_FROM_DATABASE=M5251 P1394 OHCI 1.0 Controller - -pci:v000010B9d00005253* - ID_PRODUCT_FROM_DATABASE=M5253 P1394 OHCI 1.1 Controller - -pci:v000010B9d00005261* - ID_PRODUCT_FROM_DATABASE=M5261 Ethernet Controller - -pci:v000010B9d00005263* - ID_PRODUCT_FROM_DATABASE=ULi 1689,1573 integrated ethernet. - -pci:v000010B9d00005281* - ID_PRODUCT_FROM_DATABASE=ALi M5281 Serial ATA / RAID Host Controller - -pci:v000010B9d00005287* - ID_PRODUCT_FROM_DATABASE=ULi 5287 SATA - -pci:v000010B9d00005288* - ID_PRODUCT_FROM_DATABASE=ULi M5288 SATA - -pci:v000010B9d00005288sv00001043sd00008056* - ID_PRODUCT_FROM_DATABASE=A8R-MVP Mainboard - -pci:v000010B9d00005289* - ID_PRODUCT_FROM_DATABASE=ULi 5289 SATA - -pci:v000010B9d00005450* - ID_PRODUCT_FROM_DATABASE=Lucent Technologies Soft Modem AMR - -pci:v000010B9d00005451* - ID_PRODUCT_FROM_DATABASE=M5451 PCI AC-Link Controller Audio Device - -pci:v000010B9d00005451sv00001014sd00000506* - ID_PRODUCT_FROM_DATABASE=ThinkPad R30 - -pci:v000010B9d00005451sv00001014sd0000053E* - ID_PRODUCT_FROM_DATABASE=ThinkPad R40e - -pci:v000010B9d00005451sv0000103Csd00000024* - ID_PRODUCT_FROM_DATABASE=Pavilion ze4400 builtin Audio - -pci:v000010B9d00005451sv0000103Csd00000025* - ID_PRODUCT_FROM_DATABASE=XE4500 Notebook - -pci:v000010B9d00005453* - ID_PRODUCT_FROM_DATABASE=M5453 PCI AC-Link Controller Modem Device - -pci:v000010B9d00005455* - ID_PRODUCT_FROM_DATABASE=M5455 PCI AC-Link Controller Audio Device - -pci:v000010B9d00005455sv000010B9sd00005455* - ID_PRODUCT_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard - -pci:v000010B9d00005455sv00001849sd00000850* - ID_PRODUCT_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard - -pci:v000010B9d00005457* - ID_PRODUCT_FROM_DATABASE=M5457 AC'97 Modem Controller - -pci:v000010B9d00005457sv00001014sd00000535* - ID_PRODUCT_FROM_DATABASE=ThinkPad R40e - -pci:v000010B9d00005457sv0000103Csd00000024* - ID_PRODUCT_FROM_DATABASE=Pavilion ze4400 builtin Modem Device - -pci:v000010B9d00005457sv0000103Csd00000025* - ID_PRODUCT_FROM_DATABASE=XE4500 Notebook - -pci:v000010B9d00005459* - ID_PRODUCT_FROM_DATABASE=SmartLink SmartPCI561 56K Modem - -pci:v000010B9d0000545A* - ID_PRODUCT_FROM_DATABASE=SmartLink SmartPCI563 56K Modem - -pci:v000010B9d00005461* - ID_PRODUCT_FROM_DATABASE=HD Audio Controller - -pci:v000010B9d00005471* - ID_PRODUCT_FROM_DATABASE=M5471 Memory Stick Controller - -pci:v000010B9d00005473* - ID_PRODUCT_FROM_DATABASE=M5473 SD-MMC Controller - -pci:v000010B9d00007101* - ID_PRODUCT_FROM_DATABASE=M7101 Power Management Controller [PMU] - -pci:v000010B9d00007101sv00001014sd00000510* - ID_PRODUCT_FROM_DATABASE=ThinkPad R30 - -pci:v000010B9d00007101sv00001014sd0000053C* - ID_PRODUCT_FROM_DATABASE=ThinkPad R40e - -pci:v000010B9d00007101sv0000103Csd00000024* - ID_PRODUCT_FROM_DATABASE=Pavilion ze4400 - -pci:v000010B9d00007101sv0000103Csd00000025* - ID_PRODUCT_FROM_DATABASE=XE4500 Notebook - -pci:v000010B9d00007101sv00001849sd00007101* - ID_PRODUCT_FROM_DATABASE=ASRock 939Dual-SATA2 Motherboard - -pci:v000010BA* - ID_VENDOR_FROM_DATABASE=Mitsubishi Electric Corp. - -pci:v000010BAd00000301* - ID_PRODUCT_FROM_DATABASE=AccelGraphics AccelECLIPSE - -pci:v000010BAd00000304* - ID_PRODUCT_FROM_DATABASE=AccelGALAXY A2100 [OEM Evans & Sutherland] - -pci:v000010BAd00000308* - ID_PRODUCT_FROM_DATABASE=Tornado 3000 [OEM Evans & Sutherland] - -pci:v000010BAd00000308sv000010DDsd00000024* - ID_PRODUCT_FROM_DATABASE=Tornado 3000 - -pci:v000010BAd00001002* - ID_PRODUCT_FROM_DATABASE=VG500 [VolumePro Volume Rendering Accelerator] - -pci:v000010BB* - ID_VENDOR_FROM_DATABASE=Dapha Electronics Corporation - -pci:v000010BC* - ID_VENDOR_FROM_DATABASE=Advanced Logic Research - -pci:v000010BD* - ID_VENDOR_FROM_DATABASE=Surecom Technology - -pci:v000010BDd00000E34* - ID_PRODUCT_FROM_DATABASE=NE-34 - -pci:v000010BE* - ID_VENDOR_FROM_DATABASE=Tseng Labs International Co. - -pci:v000010BF* - ID_VENDOR_FROM_DATABASE=Most Inc - -pci:v000010C0* - ID_VENDOR_FROM_DATABASE=Boca Research Inc. - -pci:v000010C1* - ID_VENDOR_FROM_DATABASE=ICM Co., Ltd. - -pci:v000010C2* - ID_VENDOR_FROM_DATABASE=Auspex Systems Inc. - -pci:v000010C3* - ID_VENDOR_FROM_DATABASE=Samsung Semiconductors, Inc. - -pci:v000010C4* - ID_VENDOR_FROM_DATABASE=Award Software International Inc. - -pci:v000010C5* - ID_VENDOR_FROM_DATABASE=Xerox Corporation - -pci:v000010C6* - ID_VENDOR_FROM_DATABASE=Rambus Inc. - -pci:v000010C7* - ID_VENDOR_FROM_DATABASE=Media Vision - -pci:v000010C8* - ID_VENDOR_FROM_DATABASE=Neomagic Corporation - -pci:v000010C8d00000001* - ID_PRODUCT_FROM_DATABASE=NM2070 [MagicGraph 128] - -pci:v000010C8d00000002* - ID_PRODUCT_FROM_DATABASE=NM2090 [MagicGraph 128V] - -pci:v000010C8d00000003* - ID_PRODUCT_FROM_DATABASE=NM2093 [MagicGraph 128ZV] - -pci:v000010C8d00000004* - ID_PRODUCT_FROM_DATABASE=NM2160 [MagicGraph 128XD] - -pci:v000010C8d00000004sv00001014sd000000BA* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv00001025sd00001007* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv00001028sd00000074* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv00001028sd00000075* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv00001028sd0000007D* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv00001028sd0000007E* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv00001033sd0000802F* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv0000104Dsd0000801B* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv0000104Dsd0000802F* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv0000104Dsd0000830B* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv000010BAsd00000E00* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv000010C8sd00000004* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv000010CFsd00001029* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv000010F7sd00008308* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv000010F7sd00008309* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv000010F7sd0000830B* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv000010F7sd0000830D* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000004sv000010F7sd00008312* - ID_PRODUCT_FROM_DATABASE=MagicGraph 128XD - -pci:v000010C8d00000005* - ID_PRODUCT_FROM_DATABASE=NM2200 [MagicGraph 256AV] - -pci:v000010C8d00000005sv00001014sd000000DD* - ID_PRODUCT_FROM_DATABASE=ThinkPad 570 - -pci:v000010C8d00000005sv00001028sd00000088* - ID_PRODUCT_FROM_DATABASE=Latitude CPi A - -pci:v000010C8d00000006* - ID_PRODUCT_FROM_DATABASE=NM2360 [MagicMedia 256ZX] - -pci:v000010C8d00000006sv00001014sd00000152* - ID_PRODUCT_FROM_DATABASE=ThinkPad 600X - -pci:v000010C8d00000016* - ID_PRODUCT_FROM_DATABASE=NM2380 [MagicMedia 256XL+] - -pci:v000010C8d00000016sv000010C8sd00000016* - ID_PRODUCT_FROM_DATABASE=MagicMedia 256XL+ - -pci:v000010C8d00000025* - ID_PRODUCT_FROM_DATABASE=NM2230 [MagicGraph 256AV+] - -pci:v000010C8d00000083* - ID_PRODUCT_FROM_DATABASE=NM2093 [MagicGraph 128ZV+] - -pci:v000010C8d00008005* - ID_PRODUCT_FROM_DATABASE=NM2200 [MagicMedia 256AV Audio] - -pci:v000010C8d00008005sv00000E11sd0000B0D1* - ID_PRODUCT_FROM_DATABASE=MagicMedia 256AV Audio Device on Discovery - -pci:v000010C8d00008005sv00000E11sd0000B126* - ID_PRODUCT_FROM_DATABASE=MagicMedia 256AV Audio Device on Durango - -pci:v000010C8d00008005sv00001014sd000000DD* - ID_PRODUCT_FROM_DATABASE=ThinkPad 390/i1720/i1721 - -pci:v000010C8d00008005sv00001025sd00001003* - ID_PRODUCT_FROM_DATABASE=MagicMedia 256AV Audio Device on TravelMate 720 - -pci:v000010C8d00008005sv00001028sd00000088* - ID_PRODUCT_FROM_DATABASE=Latitude CPi A - -pci:v000010C8d00008005sv00001028sd0000008F* - ID_PRODUCT_FROM_DATABASE=MagicMedia 256AV Audio Device on Colorado Inspiron - -pci:v000010C8d00008005sv0000103Csd00000007* - ID_PRODUCT_FROM_DATABASE=MagicMedia 256AV Audio Device on Voyager II - -pci:v000010C8d00008005sv0000103Csd00000008* - ID_PRODUCT_FROM_DATABASE=MagicMedia 256AV Audio Device on Voyager III - -pci:v000010C8d00008005sv0000103Csd0000000D* - ID_PRODUCT_FROM_DATABASE=MagicMedia 256AV Audio Device on Omnibook 900 - -pci:v000010C8d00008005sv000010C8sd00008005* - ID_PRODUCT_FROM_DATABASE=MagicMedia 256AV Audio Device on FireAnt - -pci:v000010C8d00008005sv0000110Asd00008005* - ID_PRODUCT_FROM_DATABASE=MagicMedia 256AV Audio Device - -pci:v000010C8d00008005sv000014C0sd00000004* - ID_PRODUCT_FROM_DATABASE=MagicMedia 256AV Audio Device - -pci:v000010C8d00008006* - ID_PRODUCT_FROM_DATABASE=NM2360 [MagicMedia 256ZX Audio] - -pci:v000010C8d00008016* - ID_PRODUCT_FROM_DATABASE=NM2380 [MagicMedia 256XL+ Audio] - -pci:v000010C9* - ID_VENDOR_FROM_DATABASE=Dataexpert Corporation - -pci:v000010CA* - ID_VENDOR_FROM_DATABASE=Fujitsu Microelectr., Inc. - -pci:v000010CB* - ID_VENDOR_FROM_DATABASE=Omron Corporation - -pci:v000010CC* - ID_VENDOR_FROM_DATABASE=Mai Logic Incorporated - -pci:v000010CCd00000660* - ID_PRODUCT_FROM_DATABASE=Articia S Host Bridge - -pci:v000010CCd00000661* - ID_PRODUCT_FROM_DATABASE=Articia S PCI Bridge - -pci:v000010CD* - ID_VENDOR_FROM_DATABASE=Advanced System Products, Inc - -pci:v000010CDd00001100* - ID_PRODUCT_FROM_DATABASE=ASC1100 - -pci:v000010CDd00001200* - ID_PRODUCT_FROM_DATABASE=ASC1200 [(abp940) Fast SCSI-II] - -pci:v000010CDd00001300* - ID_PRODUCT_FROM_DATABASE=ABP940-U / ABP960-U - -pci:v000010CDd00001300sv000010CDsd00001310* - ID_PRODUCT_FROM_DATABASE=ASC1300 SCSI Adapter - -pci:v000010CDd00001300sv00001195sd00001320* - ID_PRODUCT_FROM_DATABASE=Ultra-SCSI CardBus PC Card REX CB31 - -pci:v000010CDd00002300* - ID_PRODUCT_FROM_DATABASE=ABP940-UW - -pci:v000010CDd00002500* - ID_PRODUCT_FROM_DATABASE=ABP940-U2W - -pci:v000010CDd00002700* - ID_PRODUCT_FROM_DATABASE=ABP3950-U3W - -pci:v000010CE* - ID_VENDOR_FROM_DATABASE=Radius - -pci:v000010CF* - ID_VENDOR_FROM_DATABASE=Fujitsu Limited. - -pci:v000010CFd000001EF* - ID_PRODUCT_FROM_DATABASE=PCEA4 PCI-Express Dual Port ESCON Adapter - -pci:v000010CFd00001414* - ID_PRODUCT_FROM_DATABASE=On-board USB 1.1 companion controller - -pci:v000010CFd00001415* - ID_PRODUCT_FROM_DATABASE=On-board USB 2.0 EHCI controller - -pci:v000010CFd00001422* - ID_PRODUCT_FROM_DATABASE=E8410 nVidia graphics adapter - -pci:v000010CFd0000142D* - ID_PRODUCT_FROM_DATABASE=HD audio (Realtek ALC262) - -pci:v000010CFd00001430* - ID_PRODUCT_FROM_DATABASE=82566MM Intel 1Gb copper LAN interface - -pci:v000010CFd00001623* - ID_PRODUCT_FROM_DATABASE=PCEA4 PCI-Express Dual Port ESCON Adapter - -pci:v000010CFd00002001* - ID_PRODUCT_FROM_DATABASE=mb86605 - -pci:v000010CFd0000200C* - ID_PRODUCT_FROM_DATABASE=MB86613L IEEE1394 OHCI 1.0 Controller - -pci:v000010CFd00002010* - ID_PRODUCT_FROM_DATABASE=MB86613S IEEE1394 OHCI 1.1 Controller - -pci:v000010CFd00002019* - ID_PRODUCT_FROM_DATABASE=MB86295S [CORAL P] - -pci:v000010CFd0000201E* - ID_PRODUCT_FROM_DATABASE=MB86296S [CORAL PA] - -pci:v000010CFd0000202B* - ID_PRODUCT_FROM_DATABASE=MB86297A [Carmine Graphics Controller] - -pci:v000010D1* - ID_VENDOR_FROM_DATABASE=FuturePlus Systems Corp. - -pci:v000010D2* - ID_VENDOR_FROM_DATABASE=Molex Incorporated - -pci:v000010D3* - ID_VENDOR_FROM_DATABASE=Jabil Circuit Inc - -pci:v000010D4* - ID_VENDOR_FROM_DATABASE=Hualon Microelectronics - -pci:v000010D5* - ID_VENDOR_FROM_DATABASE=Autologic Inc. - -pci:v000010D6* - ID_VENDOR_FROM_DATABASE=Cetia - -pci:v000010D7* - ID_VENDOR_FROM_DATABASE=BCM Advanced Research - -pci:v000010D8* - ID_VENDOR_FROM_DATABASE=Advanced Peripherals Labs - -pci:v000010D9* - ID_VENDOR_FROM_DATABASE=Macronix, Inc. [MXIC] - -pci:v000010D9d00000431* - ID_PRODUCT_FROM_DATABASE=MX98715 - -pci:v000010D9d00000512* - ID_PRODUCT_FROM_DATABASE=MX98713 - -pci:v000010D9d00000531* - ID_PRODUCT_FROM_DATABASE=MX987x5 - -pci:v000010D9d00000531sv00001186sd00001200* - ID_PRODUCT_FROM_DATABASE=DFE-540TX ProFAST 10/100 Adapter - -pci:v000010D9d00008625* - ID_PRODUCT_FROM_DATABASE=MX86250 - -pci:v000010D9d00008626* - ID_PRODUCT_FROM_DATABASE=Macronix MX86251 + 3Dfx Voodoo Rush - -pci:v000010D9d00008888* - ID_PRODUCT_FROM_DATABASE=MX86200 - -pci:v000010DA* - ID_VENDOR_FROM_DATABASE=Compaq IPG-Austin - -pci:v000010DAd00000508* - ID_PRODUCT_FROM_DATABASE=TC4048 Token Ring 4/16 - -pci:v000010DAd00003390* - ID_PRODUCT_FROM_DATABASE=Tl3c3x9 - -pci:v000010DB* - ID_VENDOR_FROM_DATABASE=Rohm LSI Systems, Inc. - -pci:v000010DC* - ID_VENDOR_FROM_DATABASE=CERN/ECP/EDU - -pci:v000010DCd00000001* - ID_PRODUCT_FROM_DATABASE=STAR/RD24 SCI-PCI (PMC) - -pci:v000010DCd00000002* - ID_PRODUCT_FROM_DATABASE=TAR/RD24 SCI-PCI (PMC) - -pci:v000010DCd00000021* - ID_PRODUCT_FROM_DATABASE=HIPPI destination - -pci:v000010DCd00000022* - ID_PRODUCT_FROM_DATABASE=HIPPI source - -pci:v000010DCd000010DC* - ID_PRODUCT_FROM_DATABASE=ATT2C15-3 FPGA - -pci:v000010DD* - ID_VENDOR_FROM_DATABASE=Evans & Sutherland - -pci:v000010DDd00000100* - ID_PRODUCT_FROM_DATABASE=Lightning 1200 - -pci:v000010DDd00000100sv000010DDsd00000023* - ID_PRODUCT_FROM_DATABASE=Lightning 1200 15+16M - -pci:v000010DE* - ID_VENDOR_FROM_DATABASE=NVIDIA Corporation - -pci:v000010DEd00000008* - ID_PRODUCT_FROM_DATABASE=NV1 [EDGE 3D] - -pci:v000010DEd00000009* - ID_PRODUCT_FROM_DATABASE=NV1 [EDGE 3D] - -pci:v000010DEd00000020* - ID_PRODUCT_FROM_DATABASE=NV4 [RIVA TNT] - -pci:v000010DEd00000020sv00001043sd00000200* - ID_PRODUCT_FROM_DATABASE=V3400 TNT - -pci:v000010DEd00000020sv00001048sd00000C18* - ID_PRODUCT_FROM_DATABASE=Erazor II SGRAM - -pci:v000010DEd00000020sv00001048sd00000C19* - ID_PRODUCT_FROM_DATABASE=Erazor II - -pci:v000010DEd00000020sv00001048sd00000C1B* - ID_PRODUCT_FROM_DATABASE=Erazor II - -pci:v000010DEd00000020sv00001048sd00000C1C* - ID_PRODUCT_FROM_DATABASE=Erazor II - -pci:v000010DEd00000020sv00001092sd00000550* - ID_PRODUCT_FROM_DATABASE=Viper V550 - -pci:v000010DEd00000020sv00001092sd00000552* - ID_PRODUCT_FROM_DATABASE=Viper V550 - -pci:v000010DEd00000020sv00001092sd00004804* - ID_PRODUCT_FROM_DATABASE=Viper V550 - -pci:v000010DEd00000020sv00001092sd00004808* - ID_PRODUCT_FROM_DATABASE=Viper V550 - -pci:v000010DEd00000020sv00001092sd00004810* - ID_PRODUCT_FROM_DATABASE=Viper V550 - -pci:v000010DEd00000020sv00001092sd00004812* - ID_PRODUCT_FROM_DATABASE=Viper V550 - -pci:v000010DEd00000020sv00001092sd00004815* - ID_PRODUCT_FROM_DATABASE=Viper V550 - -pci:v000010DEd00000020sv00001092sd00004820* - ID_PRODUCT_FROM_DATABASE=Viper V550 with TV out - -pci:v000010DEd00000020sv00001092sd00004822* - ID_PRODUCT_FROM_DATABASE=Viper V550 - -pci:v000010DEd00000020sv00001092sd00004904* - ID_PRODUCT_FROM_DATABASE=Viper V550 - -pci:v000010DEd00000020sv00001092sd00004914* - ID_PRODUCT_FROM_DATABASE=Viper V550 - -pci:v000010DEd00000020sv00001092sd00008225* - ID_PRODUCT_FROM_DATABASE=Viper V550 - -pci:v000010DEd00000020sv000010B4sd0000273D* - ID_PRODUCT_FROM_DATABASE=Velocity 4400 - -pci:v000010DEd00000020sv000010B4sd0000273E* - ID_PRODUCT_FROM_DATABASE=Velocity 4400 - -pci:v000010DEd00000020sv000010B4sd00002740* - ID_PRODUCT_FROM_DATABASE=Velocity 4400 - -pci:v000010DEd00000020sv000010DEsd00000020* - ID_PRODUCT_FROM_DATABASE=Riva TNT - -pci:v000010DEd00000020sv00001102sd00001015* - ID_PRODUCT_FROM_DATABASE=Graphics Blaster CT6710 - -pci:v000010DEd00000020sv00001102sd00001016* - ID_PRODUCT_FROM_DATABASE=Graphics Blaster RIVA TNT - -pci:v000010DEd00000028* - ID_PRODUCT_FROM_DATABASE=NV5 [RIVA TNT2/TNT2 Pro] - -pci:v000010DEd00000028sv00001043sd00000200* - ID_PRODUCT_FROM_DATABASE=AGP-V3800 SGRAM - -pci:v000010DEd00000028sv00001043sd00000201* - ID_PRODUCT_FROM_DATABASE=AGP-V3800 SDRAM - -pci:v000010DEd00000028sv00001043sd00000205* - ID_PRODUCT_FROM_DATABASE=PCI-V3800 - -pci:v000010DEd00000028sv00001043sd00004000* - ID_PRODUCT_FROM_DATABASE=AGP-V3800PRO - -pci:v000010DEd00000028sv00001048sd00000C21* - ID_PRODUCT_FROM_DATABASE=Synergy II - -pci:v000010DEd00000028sv00001048sd00000C28* - ID_PRODUCT_FROM_DATABASE=Erazor III - -pci:v000010DEd00000028sv00001048sd00000C29* - ID_PRODUCT_FROM_DATABASE=Erazor III - -pci:v000010DEd00000028sv00001048sd00000C2A* - ID_PRODUCT_FROM_DATABASE=Erazor III - -pci:v000010DEd00000028sv00001048sd00000C2B* - ID_PRODUCT_FROM_DATABASE=Erazor III - -pci:v000010DEd00000028sv00001048sd00000C31* - ID_PRODUCT_FROM_DATABASE=Erazor III Pro - -pci:v000010DEd00000028sv00001048sd00000C32* - ID_PRODUCT_FROM_DATABASE=Erazor III Pro - -pci:v000010DEd00000028sv00001048sd00000C33* - ID_PRODUCT_FROM_DATABASE=Erazor III Pro - -pci:v000010DEd00000028sv00001048sd00000C34* - ID_PRODUCT_FROM_DATABASE=Erazor III Pro - -pci:v000010DEd00000028sv0000107Dsd00002134* - ID_PRODUCT_FROM_DATABASE=WinFast 3D S320 II + TV-Out - -pci:v000010DEd00000028sv00001092sd00004804* - ID_PRODUCT_FROM_DATABASE=Viper V770 - -pci:v000010DEd00000028sv00001092sd00004A00* - ID_PRODUCT_FROM_DATABASE=Viper V770 - -pci:v000010DEd00000028sv00001092sd00004A02* - ID_PRODUCT_FROM_DATABASE=Viper V770 Ultra - -pci:v000010DEd00000028sv00001092sd00005A00* - ID_PRODUCT_FROM_DATABASE=RIVA TNT2/TNT2 Pro - -pci:v000010DEd00000028sv00001092sd00005A40* - ID_PRODUCT_FROM_DATABASE=Viper V770D AGP - -pci:v000010DEd00000028sv00001092sd00006A02* - ID_PRODUCT_FROM_DATABASE=Viper V770 Ultra - -pci:v000010DEd00000028sv00001092sd00007A02* - ID_PRODUCT_FROM_DATABASE=Viper V770 Ultra - -pci:v000010DEd00000028sv000010DEsd00000005* - ID_PRODUCT_FROM_DATABASE=RIVA TNT2 Pro - -pci:v000010DEd00000028sv000010DEsd0000000F* - ID_PRODUCT_FROM_DATABASE=Compaq NVIDIA TNT2 Pro - -pci:v000010DEd00000028sv00001102sd00001020* - ID_PRODUCT_FROM_DATABASE=3D Blaster RIVA TNT2 - -pci:v000010DEd00000028sv00001102sd00001026* - ID_PRODUCT_FROM_DATABASE=3D Blaster RIVA TNT2 Digital - -pci:v000010DEd00000028sv00001462sd00008806* - ID_PRODUCT_FROM_DATABASE=MS-8806 AGPhantom Graphics Card - -pci:v000010DEd00000028sv000014AFsd00005810* - ID_PRODUCT_FROM_DATABASE=Maxi Gamer Xentor - -pci:v000010DEd00000029* - ID_PRODUCT_FROM_DATABASE=NV5 [RIVA TNT2 Ultra] - -pci:v000010DEd00000029sv00001043sd00000200* - ID_PRODUCT_FROM_DATABASE=AGP-V3800 Deluxe - -pci:v000010DEd00000029sv00001043sd00000201* - ID_PRODUCT_FROM_DATABASE=AGP-V3800 Ultra SDRAM - -pci:v000010DEd00000029sv00001043sd00000205* - ID_PRODUCT_FROM_DATABASE=PCI-V3800 Ultra - -pci:v000010DEd00000029sv00001048sd00000C2E* - ID_PRODUCT_FROM_DATABASE=Erazor III Ultra - -pci:v000010DEd00000029sv00001048sd00000C2F* - ID_PRODUCT_FROM_DATABASE=Erazor III Ultra - -pci:v000010DEd00000029sv00001048sd00000C30* - ID_PRODUCT_FROM_DATABASE=Erazor III Ultra - -pci:v000010DEd00000029sv00001102sd00001021* - ID_PRODUCT_FROM_DATABASE=3D Blaster RIVA TNT2 Ultra - -pci:v000010DEd00000029sv00001102sd00001029* - ID_PRODUCT_FROM_DATABASE=3D Blaster RIVA TNT2 Ultra - -pci:v000010DEd00000029sv00001102sd0000102F* - ID_PRODUCT_FROM_DATABASE=3D Blaster RIVA TNT2 Ultra - -pci:v000010DEd00000029sv000014AFsd00005820* - ID_PRODUCT_FROM_DATABASE=Maxi Gamer Xentor 32 - -pci:v000010DEd00000029sv00004843sd00004F34* - ID_PRODUCT_FROM_DATABASE=Dynamite - -pci:v000010DEd0000002A* - ID_PRODUCT_FROM_DATABASE=NV5 [Riva TNT2] - -pci:v000010DEd0000002B* - ID_PRODUCT_FROM_DATABASE=NV5 [Riva TNT2] - -pci:v000010DEd0000002C* - ID_PRODUCT_FROM_DATABASE=NV6 [Vanta/Vanta LT] - -pci:v000010DEd0000002Csv00001043sd00000200* - ID_PRODUCT_FROM_DATABASE=AGP-V3800 Combat SDRAM - -pci:v000010DEd0000002Csv00001043sd00000201* - ID_PRODUCT_FROM_DATABASE=AGP-V3800 Combat - -pci:v000010DEd0000002Csv00001048sd00000C20* - ID_PRODUCT_FROM_DATABASE=TNT2 Vanta - -pci:v000010DEd0000002Csv00001048sd00000C21* - ID_PRODUCT_FROM_DATABASE=TNT2 Vanta - -pci:v000010DEd0000002Csv00001048sd00000C25* - ID_PRODUCT_FROM_DATABASE=TNT2 Vanta 16MB - -pci:v000010DEd0000002Csv00001092sd00006820* - ID_PRODUCT_FROM_DATABASE=Viper V730 - -pci:v000010DEd0000002Csv00001102sd00001031* - ID_PRODUCT_FROM_DATABASE=CT6938 VANTA 8MB - -pci:v000010DEd0000002Csv00001102sd00001034* - ID_PRODUCT_FROM_DATABASE=CT6894 VANTA 16MB - -pci:v000010DEd0000002Csv000014AFsd00005008* - ID_PRODUCT_FROM_DATABASE=Maxi Gamer Phoenix 2 - -pci:v000010DEd0000002D* - ID_PRODUCT_FROM_DATABASE=NV5M64 [RIVA TNT2 Model 64/Model 64 Pro] - -pci:v000010DEd0000002Dsv00001043sd00000200* - ID_PRODUCT_FROM_DATABASE=AGP-V3800M - -pci:v000010DEd0000002Dsv00001043sd00000201* - ID_PRODUCT_FROM_DATABASE=AGP-V3800M - -pci:v000010DEd0000002Dsv00001048sd00000C3A* - ID_PRODUCT_FROM_DATABASE=Erazor III LT - -pci:v000010DEd0000002Dsv00001048sd00000C3B* - ID_PRODUCT_FROM_DATABASE=Erazor III LT - -pci:v000010DEd0000002Dsv0000107Dsd00002137* - ID_PRODUCT_FROM_DATABASE=WinFast 3D S325 - -pci:v000010DEd0000002Dsv000010DEsd00000006* - ID_PRODUCT_FROM_DATABASE=RIVA TNT2 Model 64/Model 64 Pro - -pci:v000010DEd0000002Dsv000010DEsd0000001E* - ID_PRODUCT_FROM_DATABASE=M64 AGP4x - -pci:v000010DEd0000002Dsv00001102sd00001023* - ID_PRODUCT_FROM_DATABASE=CT6892 RIVA TNT2 Value - -pci:v000010DEd0000002Dsv00001102sd00001024* - ID_PRODUCT_FROM_DATABASE=CT6932 RIVA TNT2 Value 32Mb - -pci:v000010DEd0000002Dsv00001102sd0000102C* - ID_PRODUCT_FROM_DATABASE=CT6931 RIVA TNT2 Value [Jumper] - -pci:v000010DEd0000002Dsv00001102sd00001030* - ID_PRODUCT_FROM_DATABASE=CT6931 RIVA TNT2 Value - -pci:v000010DEd0000002Dsv0000110Asd0000006F* - ID_PRODUCT_FROM_DATABASE=GM1000-16 - -pci:v000010DEd0000002Dsv0000110Asd00000081* - ID_PRODUCT_FROM_DATABASE=GM1000-16 - -pci:v000010DEd0000002Dsv00001462sd00008808* - ID_PRODUCT_FROM_DATABASE=MSI-8808 - -pci:v000010DEd0000002Dsv000014AFsd00005620* - ID_PRODUCT_FROM_DATABASE=Gamer Cougar Video Edition - -pci:v000010DEd0000002Dsv00001554sd00001041* - ID_PRODUCT_FROM_DATABASE=Pixelview RIVA TNT2 M64 - -pci:v000010DEd0000002Dsv00001569sd0000002D* - ID_PRODUCT_FROM_DATABASE=Palit Microsystems Daytona TNT2 M64 - -pci:v000010DEd0000002E* - ID_PRODUCT_FROM_DATABASE=NV6 [Vanta] - -pci:v000010DEd0000002F* - ID_PRODUCT_FROM_DATABASE=NV6 [Vanta] - -pci:v000010DEd00000034* - ID_PRODUCT_FROM_DATABASE=MCP04 SMBus - -pci:v000010DEd00000035* - ID_PRODUCT_FROM_DATABASE=MCP04 IDE - -pci:v000010DEd00000036* - ID_PRODUCT_FROM_DATABASE=MCP04 Serial ATA Controller - -pci:v000010DEd00000037* - ID_PRODUCT_FROM_DATABASE=MCP04 Ethernet Controller - -pci:v000010DEd00000038* - ID_PRODUCT_FROM_DATABASE=MCP04 Ethernet Controller - -pci:v000010DEd0000003A* - ID_PRODUCT_FROM_DATABASE=MCP04 AC'97 Audio Controller - -pci:v000010DEd0000003B* - ID_PRODUCT_FROM_DATABASE=MCP04 USB Controller - -pci:v000010DEd0000003C* - ID_PRODUCT_FROM_DATABASE=MCP04 USB Controller - -pci:v000010DEd0000003D* - ID_PRODUCT_FROM_DATABASE=MCP04 PCI Bridge - -pci:v000010DEd0000003E* - ID_PRODUCT_FROM_DATABASE=MCP04 Serial ATA Controller - -pci:v000010DEd00000040* - ID_PRODUCT_FROM_DATABASE=NV40 [GeForce 6800 Ultra] - -pci:v000010DEd00000041* - ID_PRODUCT_FROM_DATABASE=NV40 [GeForce 6800] - -pci:v000010DEd00000041sv00001043sd0000817B* - ID_PRODUCT_FROM_DATABASE=V9999 Gamer Edition - -pci:v000010DEd00000041sv0000107Dsd00002992* - ID_PRODUCT_FROM_DATABASE=WinFast A400 - -pci:v000010DEd00000041sv00001458sd0000310F* - ID_PRODUCT_FROM_DATABASE=Geforce 6800 GV-N6812 - -pci:v000010DEd00000042* - ID_PRODUCT_FROM_DATABASE=NV40.2 [GeForce 6800 LE] - -pci:v000010DEd00000042sv0000107Dsd0000299B* - ID_PRODUCT_FROM_DATABASE=WinFast A400 LE - -pci:v000010DEd00000043* - ID_PRODUCT_FROM_DATABASE=NV40.3 [GeForce 6800 XE] - -pci:v000010DEd00000044* - ID_PRODUCT_FROM_DATABASE=NV40 [GeForce 6800 XT] - -pci:v000010DEd00000045* - ID_PRODUCT_FROM_DATABASE=NV40 [GeForce 6800 GT] - -pci:v000010DEd00000045sv00001458sd00003140* - ID_PRODUCT_FROM_DATABASE=GV-N68T256D - -pci:v000010DEd00000046* - ID_PRODUCT_FROM_DATABASE=NV45 [GeForce 6800 GT] - -pci:v000010DEd00000047* - ID_PRODUCT_FROM_DATABASE=NV40 [GeForce 6800 GS] - -pci:v000010DEd00000047sv00001682sd00002109* - ID_PRODUCT_FROM_DATABASE=GeForce 6800 GS - -pci:v000010DEd00000048* - ID_PRODUCT_FROM_DATABASE=NV40 [GeForce 6800 XT] - -pci:v000010DEd00000049* - ID_PRODUCT_FROM_DATABASE=NV40GL - -pci:v000010DEd0000004D* - ID_PRODUCT_FROM_DATABASE=NV40GL [Quadro FX 4000] - -pci:v000010DEd0000004E* - ID_PRODUCT_FROM_DATABASE=NV40GL [Quadro FX 4000] - -pci:v000010DEd00000050* - ID_PRODUCT_FROM_DATABASE=CK804 ISA Bridge - -pci:v000010DEd00000050sv00001043sd0000815A* - ID_PRODUCT_FROM_DATABASE=K8N4-E or A8N-E Mainboard - -pci:v000010DEd00000050sv000010F1sd00002865* - ID_PRODUCT_FROM_DATABASE=Tomcat K8E (S2865) - -pci:v000010DEd00000050sv00001458sd00000C11* - ID_PRODUCT_FROM_DATABASE=GA-K8N Ultra-9 Mainboard - -pci:v000010DEd00000050sv00001462sd00007100* - ID_PRODUCT_FROM_DATABASE=MSI K8N Diamond - -pci:v000010DEd00000050sv00001462sd00007125* - ID_PRODUCT_FROM_DATABASE=K8N Neo4-F mainboard - -pci:v000010DEd00000050sv0000147Bsd00001C1A* - ID_PRODUCT_FROM_DATABASE=KN8-Ultra Mainboard - -pci:v000010DEd00000050sv00001565sd00003402* - ID_PRODUCT_FROM_DATABASE=NF4 AM2L Mainboard - -pci:v000010DEd00000051* - ID_PRODUCT_FROM_DATABASE=CK804 ISA Bridge - -pci:v000010DEd00000051sv00001028sd00000225* - ID_PRODUCT_FROM_DATABASE=PowerEdge T105 ISA Bridge - -pci:v000010DEd00000052* - ID_PRODUCT_FROM_DATABASE=CK804 SMBus - -pci:v000010DEd00000052sv00001028sd00000225* - ID_PRODUCT_FROM_DATABASE=PowerEdge T105 SMBus - -pci:v000010DEd00000052sv00001043sd0000815A* - ID_PRODUCT_FROM_DATABASE=K8N4-E or A8N-E Mainboard - -pci:v000010DEd00000052sv000010F1sd00002865* - ID_PRODUCT_FROM_DATABASE=Tomcat K8E (S2865) - -pci:v000010DEd00000052sv00001458sd00000C11* - ID_PRODUCT_FROM_DATABASE=GA-K8N Ultra-9 Mainboard - -pci:v000010DEd00000052sv00001462sd00007100* - ID_PRODUCT_FROM_DATABASE=MSI K8N Diamond - -pci:v000010DEd00000052sv00001462sd00007125* - ID_PRODUCT_FROM_DATABASE=K8N Neo4-F mainboard - -pci:v000010DEd00000052sv0000147Bsd00001C1A* - ID_PRODUCT_FROM_DATABASE=KN8-Ultra Mainboard - -pci:v000010DEd00000052sv00001565sd00003402* - ID_PRODUCT_FROM_DATABASE=NF4 AM2L Mainboard - -pci:v000010DEd00000053* - ID_PRODUCT_FROM_DATABASE=CK804 IDE - -pci:v000010DEd00000053sv00001043sd0000815A* - ID_PRODUCT_FROM_DATABASE=K8N4-E or A8N-E Mainboard - -pci:v000010DEd00000053sv000010F1sd00002865* - ID_PRODUCT_FROM_DATABASE=Tomcat K8E (S2865) - -pci:v000010DEd00000053sv00001458sd00005002* - ID_PRODUCT_FROM_DATABASE=GA-K8N Ultra-9 Mainboard - -pci:v000010DEd00000053sv00001462sd00007100* - ID_PRODUCT_FROM_DATABASE=MSI K8N Diamond - -pci:v000010DEd00000053sv00001462sd00007125* - ID_PRODUCT_FROM_DATABASE=K8N Neo4-F mainboard - -pci:v000010DEd00000053sv0000147Bsd00001C1A* - ID_PRODUCT_FROM_DATABASE=KN8-Ultra Mainboard - -pci:v000010DEd00000053sv00001565sd00003402* - ID_PRODUCT_FROM_DATABASE=NF4 AM2L Mainboard - -pci:v000010DEd00000054* - ID_PRODUCT_FROM_DATABASE=CK804 Serial ATA Controller - -pci:v000010DEd00000054sv00001028sd00000225* - ID_PRODUCT_FROM_DATABASE=PowerEdge T105 Serial ATA - -pci:v000010DEd00000054sv00001043sd0000815A* - ID_PRODUCT_FROM_DATABASE=A8N-E Mainboard - -pci:v000010DEd00000054sv000010F1sd00002865* - ID_PRODUCT_FROM_DATABASE=Tomcat K8E (S2865) - -pci:v000010DEd00000054sv00001458sd0000B003* - ID_PRODUCT_FROM_DATABASE=GA-K8N Ultra-9 Mainboard - -pci:v000010DEd00000054sv00001462sd00007100* - ID_PRODUCT_FROM_DATABASE=MSI K8N Diamond - -pci:v000010DEd00000054sv00001462sd00007125* - ID_PRODUCT_FROM_DATABASE=K8N Neo4-F mainboard - -pci:v000010DEd00000054sv0000147Bsd00001C1A* - ID_PRODUCT_FROM_DATABASE=KN8-Ultra Mainboard - -pci:v000010DEd00000054sv00001565sd00005401* - ID_PRODUCT_FROM_DATABASE=NF4 AM2L Mainboard - -pci:v000010DEd00000055* - ID_PRODUCT_FROM_DATABASE=CK804 Serial ATA Controller - -pci:v000010DEd00000055sv00001028sd00000225* - ID_PRODUCT_FROM_DATABASE=PowerEdge T105 Serial ATA - -pci:v000010DEd00000055sv00001043sd0000815A* - ID_PRODUCT_FROM_DATABASE=K8N4-E or A8N-E Mainboard - -pci:v000010DEd00000055sv000010F1sd00002865* - ID_PRODUCT_FROM_DATABASE=Tomcat K8E (S2865) - -pci:v000010DEd00000055sv00001458sd0000B003* - ID_PRODUCT_FROM_DATABASE=GA-K8N Ultra-9 Mainboard - -pci:v000010DEd00000055sv00001462sd00007125* - ID_PRODUCT_FROM_DATABASE=K8N Neo4-F mainboard - -pci:v000010DEd00000055sv0000147Bsd00001C1A* - ID_PRODUCT_FROM_DATABASE=KN8-Ultra Mainboard - -pci:v000010DEd00000055sv00001565sd00005401* - ID_PRODUCT_FROM_DATABASE=NF4 AM2L Mainboard - -pci:v000010DEd00000056* - ID_PRODUCT_FROM_DATABASE=CK804 Ethernet Controller - -pci:v000010DEd00000057* - ID_PRODUCT_FROM_DATABASE=CK804 Ethernet Controller - -pci:v000010DEd00000057sv00001043sd00008141* - ID_PRODUCT_FROM_DATABASE=K8N4-E or A8N-E Mainboard - -pci:v000010DEd00000057sv000010DEsd0000CB84* - ID_PRODUCT_FROM_DATABASE=NF4 Lanparty - -pci:v000010DEd00000057sv000010F1sd00002865* - ID_PRODUCT_FROM_DATABASE=Tomcat K8E (S2865) - -pci:v000010DEd00000057sv00001458sd0000E000* - ID_PRODUCT_FROM_DATABASE=GA-K8N Ultra-9 Mainboard - -pci:v000010DEd00000057sv00001462sd00007100* - ID_PRODUCT_FROM_DATABASE=MSI K8N Diamond - -pci:v000010DEd00000057sv00001462sd00007125* - ID_PRODUCT_FROM_DATABASE=K8N Neo4-F mainboard - -pci:v000010DEd00000057sv0000147Bsd00001C1A* - ID_PRODUCT_FROM_DATABASE=KN8-Ultra Mainboard - -pci:v000010DEd00000057sv00001565sd00002501* - ID_PRODUCT_FROM_DATABASE=NF4 AM2L Mainboard - -pci:v000010DEd00000058* - ID_PRODUCT_FROM_DATABASE=CK804 AC'97 Modem - -pci:v000010DEd00000059* - ID_PRODUCT_FROM_DATABASE=CK804 AC'97 Audio Controller - -pci:v000010DEd00000059sv00001043sd0000812A* - ID_PRODUCT_FROM_DATABASE=K8N4-E or A8N-E Mainboard - -pci:v000010DEd00000059sv000010F1sd00002865* - ID_PRODUCT_FROM_DATABASE=Tomcat K8E (S2865) - -pci:v000010DEd00000059sv00001462sd00007585* - ID_PRODUCT_FROM_DATABASE=K8N Neo4-F mainboard - -pci:v000010DEd00000059sv0000147Bsd00001C1A* - ID_PRODUCT_FROM_DATABASE=KN8-Ultra Mainboard - -pci:v000010DEd00000059sv00001565sd00008211* - ID_PRODUCT_FROM_DATABASE=NF4 AM2L Mainboard - -pci:v000010DEd0000005A* - ID_PRODUCT_FROM_DATABASE=CK804 USB Controller - -pci:v000010DEd0000005Asv00001028sd00000225* - ID_PRODUCT_FROM_DATABASE=PowerEdge T105 onboard USB - -pci:v000010DEd0000005Asv00001043sd0000815A* - ID_PRODUCT_FROM_DATABASE=K8N4-E or A8N-E Mainboard - -pci:v000010DEd0000005Asv000010F1sd00002865* - ID_PRODUCT_FROM_DATABASE=Tomcat K8E (S2865) - -pci:v000010DEd0000005Asv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=GA-K8N Ultra-9 Mainboard - -pci:v000010DEd0000005Asv00001462sd00007100* - ID_PRODUCT_FROM_DATABASE=MSI K8N Diamond - -pci:v000010DEd0000005Asv00001462sd00007125* - ID_PRODUCT_FROM_DATABASE=K8N Neo4-F mainboard - -pci:v000010DEd0000005Asv0000147Bsd00001C1A* - ID_PRODUCT_FROM_DATABASE=KN8-Ultra Mainboard - -pci:v000010DEd0000005Asv00001565sd00003402* - ID_PRODUCT_FROM_DATABASE=NF4 AM2L Mainboard - -pci:v000010DEd0000005B* - ID_PRODUCT_FROM_DATABASE=CK804 USB Controller - -pci:v000010DEd0000005Bsv00001028sd00000225* - ID_PRODUCT_FROM_DATABASE=PowerEdge T105 onboard USB - -pci:v000010DEd0000005Bsv00001043sd0000815A* - ID_PRODUCT_FROM_DATABASE=K8N4-E or A8N-E Mainboard - -pci:v000010DEd0000005Bsv000010F1sd00002865* - ID_PRODUCT_FROM_DATABASE=Tomcat K8E (S2865) - -pci:v000010DEd0000005Bsv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=GA-K8N Ultra-9 Mainboard - -pci:v000010DEd0000005Bsv00001462sd00007100* - ID_PRODUCT_FROM_DATABASE=MSI K8N Diamond - -pci:v000010DEd0000005Bsv00001462sd00007125* - ID_PRODUCT_FROM_DATABASE=K8N Neo4-F mainboard - -pci:v000010DEd0000005Bsv0000147Bsd00001C1A* - ID_PRODUCT_FROM_DATABASE=KN8-Ultra Mainboard - -pci:v000010DEd0000005Bsv00001565sd00003402* - ID_PRODUCT_FROM_DATABASE=NF4 AM2L Mainboard - -pci:v000010DEd0000005C* - ID_PRODUCT_FROM_DATABASE=CK804 PCI Bridge - -pci:v000010DEd0000005D* - ID_PRODUCT_FROM_DATABASE=CK804 PCIE Bridge - -pci:v000010DEd0000005E* - ID_PRODUCT_FROM_DATABASE=CK804 Memory Controller - -pci:v000010DEd0000005Esv00001028sd00000225* - ID_PRODUCT_FROM_DATABASE=PowerEdge T105 Memory Controller - -pci:v000010DEd0000005Esv00001043sd0000815A* - ID_PRODUCT_FROM_DATABASE=A8N-E Mainboard - -pci:v000010DEd0000005Esv000010DEsd0000005E* - ID_PRODUCT_FROM_DATABASE=ECS Elitegroup NFORCE3-A939 motherboard. - -pci:v000010DEd0000005Esv000010F1sd00002865* - ID_PRODUCT_FROM_DATABASE=Tomcat K8E (S2865) - -pci:v000010DEd0000005Esv000010F1sd00002891* - ID_PRODUCT_FROM_DATABASE=Thunder K8SRE Mainboard - -pci:v000010DEd0000005Esv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-K8N Ultra-9 Mainboard - -pci:v000010DEd0000005Esv00001462sd00007100* - ID_PRODUCT_FROM_DATABASE=K8N Diamond Mainboard - -pci:v000010DEd0000005Esv00001462sd00007125* - ID_PRODUCT_FROM_DATABASE=K8N Neo4-F Mainboard - -pci:v000010DEd0000005Esv0000147Bsd00001C1A* - ID_PRODUCT_FROM_DATABASE=KN8-Ultra Mainboard - -pci:v000010DEd0000005Esv00001565sd00003402* - ID_PRODUCT_FROM_DATABASE=NF4 AM2L Mainboard - -pci:v000010DEd0000005F* - ID_PRODUCT_FROM_DATABASE=CK804 Memory Controller - -pci:v000010DEd00000060* - ID_PRODUCT_FROM_DATABASE=nForce2 ISA Bridge - -pci:v000010DEd00000060sv00001043sd000080AD* - ID_PRODUCT_FROM_DATABASE=A7N8X Mainboard - -pci:v000010DEd00000060sv0000147Bsd00001C02* - ID_PRODUCT_FROM_DATABASE=NF7-S/NF7 (nVidia-nForce2) 2.X - -pci:v000010DEd00000060sv0000A0A0sd000003BA* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd00000064* - ID_PRODUCT_FROM_DATABASE=nForce2 SMBus (MCP) - -pci:v000010DEd00000064sv0000147Bsd00001C02* - ID_PRODUCT_FROM_DATABASE=NF7-S/NF7 (nVidia-nForce2) 2.X - -pci:v000010DEd00000064sv0000A0A0sd000003BB* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd00000065* - ID_PRODUCT_FROM_DATABASE=nForce2 IDE - -pci:v000010DEd00000065sv000010DEsd00000C11* - ID_PRODUCT_FROM_DATABASE=nForce 2 EIDE Controller - -pci:v000010DEd00000065sv0000A0A0sd000003B2* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd00000066* - ID_PRODUCT_FROM_DATABASE=nForce2 Ethernet Controller - -pci:v000010DEd00000066sv00001043sd000080A7* - ID_PRODUCT_FROM_DATABASE=A7N8X Mainboard onboard nForce2 Ethernet - -pci:v000010DEd00000066sv000010DEsd00000C11* - ID_PRODUCT_FROM_DATABASE=nForce MCP-T Networking Adapter - -pci:v000010DEd00000066sv0000A0A0sd000003B3* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd00000067* - ID_PRODUCT_FROM_DATABASE=nForce2 USB Controller - -pci:v000010DEd00000067sv00001043sd00000C11* - ID_PRODUCT_FROM_DATABASE=A7N8X Mainboard - -pci:v000010DEd00000067sv0000A0A0sd000003B4* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd00000068* - ID_PRODUCT_FROM_DATABASE=nForce2 USB Controller - -pci:v000010DEd00000068sv00001043sd00000C11* - ID_PRODUCT_FROM_DATABASE=A7N8X Mainboard - -pci:v000010DEd00000068sv0000A0A0sd000003B4* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd0000006A* - ID_PRODUCT_FROM_DATABASE=nForce2 AC97 Audio Controler (MCP) - -pci:v000010DEd0000006Asv00001043sd00008095* - ID_PRODUCT_FROM_DATABASE=nForce2 AC97 Audio Controler (MCP) - -pci:v000010DEd0000006Asv0000A0A0sd00000304* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd0000006B* - ID_PRODUCT_FROM_DATABASE=nForce Audio Processing Unit - -pci:v000010DEd0000006Bsv000010DEsd0000006B* - ID_PRODUCT_FROM_DATABASE=nForce2 MCP Audio Processing Unit - -pci:v000010DEd0000006Bsv0000A0A0sd00000304* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd0000006C* - ID_PRODUCT_FROM_DATABASE=nForce2 External PCI Bridge - -pci:v000010DEd0000006D* - ID_PRODUCT_FROM_DATABASE=nForce2 PCI Bridge - -pci:v000010DEd0000006E* - ID_PRODUCT_FROM_DATABASE=nForce2 FireWire (IEEE 1394) Controller - -pci:v000010DEd0000006Esv0000A0A0sd00000306* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd00000080* - ID_PRODUCT_FROM_DATABASE=MCP2A ISA bridge - -pci:v000010DEd00000080sv0000147Bsd00001C09* - ID_PRODUCT_FROM_DATABASE=NV7 Motherboard - -pci:v000010DEd00000084* - ID_PRODUCT_FROM_DATABASE=MCP2A SMBus - -pci:v000010DEd00000084sv0000147Bsd00001C09* - ID_PRODUCT_FROM_DATABASE=NV7 Motherboard - -pci:v000010DEd00000085* - ID_PRODUCT_FROM_DATABASE=MCP2A IDE - -pci:v000010DEd00000085sv0000147Bsd00001C09* - ID_PRODUCT_FROM_DATABASE=NV7 Motherboard - -pci:v000010DEd00000086* - ID_PRODUCT_FROM_DATABASE=MCP2A Ethernet Controller - -pci:v000010DEd00000087* - ID_PRODUCT_FROM_DATABASE=MCP2A USB Controller - -pci:v000010DEd00000087sv0000147Bsd00001C09* - ID_PRODUCT_FROM_DATABASE=NV7 Motherboard - -pci:v000010DEd00000088* - ID_PRODUCT_FROM_DATABASE=MCP2A USB Controller - -pci:v000010DEd00000088sv0000147Bsd00001C09* - ID_PRODUCT_FROM_DATABASE=NV7 Motherboard - -pci:v000010DEd0000008A* - ID_PRODUCT_FROM_DATABASE=MCP2S AC'97 Audio Controller - -pci:v000010DEd0000008Asv0000147Bsd00001C09* - ID_PRODUCT_FROM_DATABASE=NV7 Motherboard - -pci:v000010DEd0000008B* - ID_PRODUCT_FROM_DATABASE=MCP2A PCI Bridge - -pci:v000010DEd0000008C* - ID_PRODUCT_FROM_DATABASE=MCP2A Ethernet Controller - -pci:v000010DEd0000008E* - ID_PRODUCT_FROM_DATABASE=nForce2 Serial ATA Controller - -pci:v000010DEd00000090* - ID_PRODUCT_FROM_DATABASE=G70 [GeForce 7800 GTX] - -pci:v000010DEd00000091* - ID_PRODUCT_FROM_DATABASE=G70 [GeForce 7800 GTX] - -pci:v000010DEd00000092* - ID_PRODUCT_FROM_DATABASE=G70 [GeForce 7800 GT] - -pci:v000010DEd00000093* - ID_PRODUCT_FROM_DATABASE=G70 [GeForce 7800 GS] - -pci:v000010DEd00000095* - ID_PRODUCT_FROM_DATABASE=G70 [GeForce 7800 SLI] - -pci:v000010DEd00000097* - ID_PRODUCT_FROM_DATABASE=G70 [GeForce GTS 250] - -pci:v000010DEd00000098* - ID_PRODUCT_FROM_DATABASE=G70 [GeForce Go 7800] - -pci:v000010DEd00000099* - ID_PRODUCT_FROM_DATABASE=G70 [GeForce Go 7800 GTX] - -pci:v000010DEd0000009D* - ID_PRODUCT_FROM_DATABASE=G70GL [Quadro FX 4500] - -pci:v000010DEd000000A0* - ID_PRODUCT_FROM_DATABASE=NV5 [Aladdin TNT2] - -pci:v000010DEd000000A0sv000014AFsd00005810* - ID_PRODUCT_FROM_DATABASE=Maxi Gamer Xentor - -pci:v000010DEd000000C0* - ID_PRODUCT_FROM_DATABASE=NV41 [GeForce 6800 GS] - -pci:v000010DEd000000C1* - ID_PRODUCT_FROM_DATABASE=NV41.1 [GeForce 6800] - -pci:v000010DEd000000C2* - ID_PRODUCT_FROM_DATABASE=NV41.2 [GeForce 6800 LE] - -pci:v000010DEd000000C3* - ID_PRODUCT_FROM_DATABASE=NV42 [GeForce 6800 XT] - -pci:v000010DEd000000C8* - ID_PRODUCT_FROM_DATABASE=NV41.8 [GeForce Go 6800] - -pci:v000010DEd000000C9* - ID_PRODUCT_FROM_DATABASE=NV41.9 [GeForce Go 6800 Ultra] - -pci:v000010DEd000000CC* - ID_PRODUCT_FROM_DATABASE=NV41 [Quadro FX Go1400] - -pci:v000010DEd000000CD* - ID_PRODUCT_FROM_DATABASE=NV41 [Quadro FX 3450/4000 SDI] - -pci:v000010DEd000000CDsv000010DEsd0000029B* - ID_PRODUCT_FROM_DATABASE=wx4300 Workstation - -pci:v000010DEd000000CE* - ID_PRODUCT_FROM_DATABASE=NV41GL [Quadro FX 1400] - -pci:v000010DEd000000D0* - ID_PRODUCT_FROM_DATABASE=nForce3 LPC Bridge - -pci:v000010DEd000000D1* - ID_PRODUCT_FROM_DATABASE=nForce3 Host Bridge - -pci:v000010DEd000000D2* - ID_PRODUCT_FROM_DATABASE=nForce3 AGP Bridge - -pci:v000010DEd000000D3* - ID_PRODUCT_FROM_DATABASE=CK804 Memory Controller - -pci:v000010DEd000000D4* - ID_PRODUCT_FROM_DATABASE=nForce3 SMBus - -pci:v000010DEd000000D5* - ID_PRODUCT_FROM_DATABASE=nForce3 IDE - -pci:v000010DEd000000D6* - ID_PRODUCT_FROM_DATABASE=nForce3 Ethernet - -pci:v000010DEd000000D7* - ID_PRODUCT_FROM_DATABASE=nForce3 USB 1.1 - -pci:v000010DEd000000D8* - ID_PRODUCT_FROM_DATABASE=nForce3 USB 2.0 - -pci:v000010DEd000000D9* - ID_PRODUCT_FROM_DATABASE=nForce3 Audio - -pci:v000010DEd000000DA* - ID_PRODUCT_FROM_DATABASE=nForce3 Audio - -pci:v000010DEd000000DD* - ID_PRODUCT_FROM_DATABASE=nForce3 PCI Bridge - -pci:v000010DEd000000DF* - ID_PRODUCT_FROM_DATABASE=CK8S Ethernet Controller - -pci:v000010DEd000000DFsv00001043sd000080A7* - ID_PRODUCT_FROM_DATABASE=K8N-E - -pci:v000010DEd000000DFsv0000105Bsd00000C43* - ID_PRODUCT_FROM_DATABASE=Winfast NF3250K8AA - -pci:v000010DEd000000DFsv0000147Bsd00001C0B* - ID_PRODUCT_FROM_DATABASE=NF8 Mainboard - -pci:v000010DEd000000E0* - ID_PRODUCT_FROM_DATABASE=nForce3 250Gb LPC Bridge - -pci:v000010DEd000000E0sv00001043sd0000813F* - ID_PRODUCT_FROM_DATABASE=K8N-E - -pci:v000010DEd000000E0sv000010DEsd00000C11* - ID_PRODUCT_FROM_DATABASE=Winfast NF3250K8AA - -pci:v000010DEd000000E0sv00001462sd00007030* - ID_PRODUCT_FROM_DATABASE=K8N Neo-FSR v2.0 - -pci:v000010DEd000000E0sv0000147Bsd00001C0B* - ID_PRODUCT_FROM_DATABASE=NF8 Mainboard - -pci:v000010DEd000000E0sv00001849sd000000E0* - ID_PRODUCT_FROM_DATABASE=Motherboard (one of many) - -pci:v000010DEd000000E1* - ID_PRODUCT_FROM_DATABASE=nForce3 250Gb Host Bridge - -pci:v000010DEd000000E1sv00001043sd0000813F* - ID_PRODUCT_FROM_DATABASE=K8N-E - -pci:v000010DEd000000E1sv00001462sd00007030* - ID_PRODUCT_FROM_DATABASE=K8N Neo-FSR v2.0 - -pci:v000010DEd000000E1sv0000147Bsd00001C0B* - ID_PRODUCT_FROM_DATABASE=NF8 Mainboard - -pci:v000010DEd000000E1sv00001849sd000000E1* - ID_PRODUCT_FROM_DATABASE=Motherboard (one of many) - -pci:v000010DEd000000E2* - ID_PRODUCT_FROM_DATABASE=nForce3 250Gb AGP Host to PCI Bridge - -pci:v000010DEd000000E3* - ID_PRODUCT_FROM_DATABASE=nForce3 Serial ATA Controller - -pci:v000010DEd000000E3sv00001043sd0000813F* - ID_PRODUCT_FROM_DATABASE=K8N-E - -pci:v000010DEd000000E3sv0000105Bsd00000C43* - ID_PRODUCT_FROM_DATABASE=Winfast NF3250K8AA - -pci:v000010DEd000000E3sv0000147Bsd00001C0B* - ID_PRODUCT_FROM_DATABASE=NF8 Mainboard - -pci:v000010DEd000000E3sv00001849sd000000E3* - ID_PRODUCT_FROM_DATABASE=Motherboard (one of many) - -pci:v000010DEd000000E4* - ID_PRODUCT_FROM_DATABASE=nForce 250Gb PCI System Management - -pci:v000010DEd000000E4sv00001043sd0000813F* - ID_PRODUCT_FROM_DATABASE=K8N-E - -pci:v000010DEd000000E4sv0000105Bsd00000C43* - ID_PRODUCT_FROM_DATABASE=Winfast NF3250K8AA - -pci:v000010DEd000000E4sv00001462sd00007030* - ID_PRODUCT_FROM_DATABASE=K8N Neo-FSR v2.0 - -pci:v000010DEd000000E4sv0000147Bsd00001C0B* - ID_PRODUCT_FROM_DATABASE=NF8 Mainboard - -pci:v000010DEd000000E4sv00001849sd000000E4* - ID_PRODUCT_FROM_DATABASE=Motherboard (one of many) - -pci:v000010DEd000000E5* - ID_PRODUCT_FROM_DATABASE=CK8S Parallel ATA Controller (v2.5) - -pci:v000010DEd000000E5sv00001043sd0000813F* - ID_PRODUCT_FROM_DATABASE=K8N-E - -pci:v000010DEd000000E5sv0000105Bsd00000C43* - ID_PRODUCT_FROM_DATABASE=Winfast NF3250K8AA - -pci:v000010DEd000000E5sv00001462sd00007030* - ID_PRODUCT_FROM_DATABASE=K8N Neo-FSR v2.0 - -pci:v000010DEd000000E5sv0000147Bsd00001C0B* - ID_PRODUCT_FROM_DATABASE=NF8 Mainboard - -pci:v000010DEd000000E5sv00001849sd000000E5* - ID_PRODUCT_FROM_DATABASE=Motherboard (one of many) - -pci:v000010DEd000000E5sv0000F849sd000000E5* - ID_PRODUCT_FROM_DATABASE=Motherboard (one of many) - -pci:v000010DEd000000E6* - ID_PRODUCT_FROM_DATABASE=CK8S Ethernet Controller - -pci:v000010DEd000000E7* - ID_PRODUCT_FROM_DATABASE=CK8S USB Controller - -pci:v000010DEd000000E7sv00001043sd0000813F* - ID_PRODUCT_FROM_DATABASE=K8N-E - -pci:v000010DEd000000E7sv0000105Bsd00000C43* - ID_PRODUCT_FROM_DATABASE=Winfast NF3250K8AA - -pci:v000010DEd000000E7sv00001462sd00007030* - ID_PRODUCT_FROM_DATABASE=K8N Neo-FSR v2.0 - -pci:v000010DEd000000E7sv0000147Bsd00001C0B* - ID_PRODUCT_FROM_DATABASE=NF8 Mainboard - -pci:v000010DEd000000E7sv00001849sd000000E7* - ID_PRODUCT_FROM_DATABASE=Motherboard (one of many) - -pci:v000010DEd000000E8* - ID_PRODUCT_FROM_DATABASE=nForce3 EHCI USB 2.0 Controller - -pci:v000010DEd000000E8sv00001043sd0000813F* - ID_PRODUCT_FROM_DATABASE=K8N-E - -pci:v000010DEd000000E8sv0000105Bsd00000C43* - ID_PRODUCT_FROM_DATABASE=Winfast NF3250K8AA - -pci:v000010DEd000000E8sv00001462sd00007030* - ID_PRODUCT_FROM_DATABASE=K8N Neo-FSR v2.0 - -pci:v000010DEd000000E8sv0000147Bsd00001C0B* - ID_PRODUCT_FROM_DATABASE=NF8 Mainboard - -pci:v000010DEd000000E8sv00001849sd000000E8* - ID_PRODUCT_FROM_DATABASE=Motherboard (one of many) - -pci:v000010DEd000000EA* - ID_PRODUCT_FROM_DATABASE=nForce3 250Gb AC'97 Audio Controller - -pci:v000010DEd000000EAsv00001043sd0000819D* - ID_PRODUCT_FROM_DATABASE=K8N-E - -pci:v000010DEd000000EAsv0000105Bsd00000C43* - ID_PRODUCT_FROM_DATABASE=Winfast NF3250K8AA - -pci:v000010DEd000000EAsv00001462sd0000B010* - ID_PRODUCT_FROM_DATABASE=K8N Neo-FSR v2.0 - -pci:v000010DEd000000EAsv0000147Bsd00001C0B* - ID_PRODUCT_FROM_DATABASE=NF8 Mainboard - -pci:v000010DEd000000ED* - ID_PRODUCT_FROM_DATABASE=nForce3 250Gb PCI-to-PCI Bridge - -pci:v000010DEd000000EE* - ID_PRODUCT_FROM_DATABASE=nForce3 Serial ATA Controller 2 - -pci:v000010DEd000000F0* - ID_PRODUCT_FROM_DATABASE=NV40 [GeForce 6800 Ultra] - -pci:v000010DEd000000F1* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6600 GT] - -pci:v000010DEd000000F1sv00001043sd000081A6* - ID_PRODUCT_FROM_DATABASE=N6600GT TD 128M AGP - -pci:v000010DEd000000F1sv00001043sd000081C6* - ID_PRODUCT_FROM_DATABASE=N6600GT TD 128M AGP - -pci:v000010DEd000000F1sv00001458sd00003150* - ID_PRODUCT_FROM_DATABASE=GV-N66T128VP - -pci:v000010DEd000000F1sv00001554sd00001191* - ID_PRODUCT_FROM_DATABASE=PixelView PV-N43UA (128KD) - -pci:v000010DEd000000F1sv00001682sd00002119* - ID_PRODUCT_FROM_DATABASE=GeForce 6600 GT AGP - -pci:v000010DEd000000F2* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6600] - -pci:v000010DEd000000F2sv00001554sd00001194* - ID_PRODUCT_FROM_DATABASE=PixelView PV-N43AT (256KD) - -pci:v000010DEd000000F2sv00001682sd0000211C* - ID_PRODUCT_FROM_DATABASE=GeForce 6600 256MB DDR DUAL DVI TV - -pci:v000010DEd000000F3* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6200] - -pci:v000010DEd000000F4* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6600 LE] - -pci:v000010DEd000000F5* - ID_PRODUCT_FROM_DATABASE=G70 [GeForce 7800 GS] - -pci:v000010DEd000000F6* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6800 GS] - -pci:v000010DEd000000F6sv00001682sd0000217E* - ID_PRODUCT_FROM_DATABASE=XFX GeForce 6800 XTreme 256MB DDR3 AGP - -pci:v000010DEd000000F8* - ID_PRODUCT_FROM_DATABASE=NV45GL [Quadro FX 3400/4400] - -pci:v000010DEd000000F9* - ID_PRODUCT_FROM_DATABASE=NV45 [GeForce 6800 GTO] - -pci:v000010DEd000000F9sv000010DEsd000000F9* - ID_PRODUCT_FROM_DATABASE=NV40 [GeForce 6800 GT] - -pci:v000010DEd000000F9sv00001682sd00002120* - ID_PRODUCT_FROM_DATABASE=GEFORCE 6800 GT PCI-E - -pci:v000010DEd000000FA* - ID_PRODUCT_FROM_DATABASE=NV36 [GeForce PCX 5750] - -pci:v000010DEd000000FB* - ID_PRODUCT_FROM_DATABASE=NV35 [GeForce PCX 5900] - -pci:v000010DEd000000FC* - ID_PRODUCT_FROM_DATABASE=NV37GL [Quadro FX 330/GeForce PCX 5300] - -pci:v000010DEd000000FD* - ID_PRODUCT_FROM_DATABASE=NV37GL [Quadro PCI-E Series] - -pci:v000010DEd000000FE* - ID_PRODUCT_FROM_DATABASE=NV38GL [Quadro FX 1300] - -pci:v000010DEd000000FF* - ID_PRODUCT_FROM_DATABASE=NV18 [GeForce PCX 4300] - -pci:v000010DEd00000100* - ID_PRODUCT_FROM_DATABASE=NV10 [GeForce 256 SDR] - -pci:v000010DEd00000100sv00001043sd00000200* - ID_PRODUCT_FROM_DATABASE=AGP-V6600 SGRAM - -pci:v000010DEd00000100sv00001043sd00000201* - ID_PRODUCT_FROM_DATABASE=AGP-V6600 SDRAM - -pci:v000010DEd00000100sv00001043sd00004008* - ID_PRODUCT_FROM_DATABASE=AGP-V6600 SGRAM - -pci:v000010DEd00000100sv00001043sd00004009* - ID_PRODUCT_FROM_DATABASE=AGP-V6600 SDRAM - -pci:v000010DEd00000100sv00001048sd00000C41* - ID_PRODUCT_FROM_DATABASE=Erazor X - -pci:v000010DEd00000100sv00001048sd00000C43* - ID_PRODUCT_FROM_DATABASE=ERAZOR X PCI - -pci:v000010DEd00000100sv00001048sd00000C48* - ID_PRODUCT_FROM_DATABASE=Synergy Force - -pci:v000010DEd00000100sv00001102sd0000102D* - ID_PRODUCT_FROM_DATABASE=CT6941 GeForce 256 - -pci:v000010DEd00000100sv000014AFsd00005022* - ID_PRODUCT_FROM_DATABASE=3D Prophet SE - -pci:v000010DEd00000101* - ID_PRODUCT_FROM_DATABASE=NV10DDR [GeForce 256 DDR] - -pci:v000010DEd00000101sv00001043sd00000202* - ID_PRODUCT_FROM_DATABASE=AGP-V6800 DDR - -pci:v000010DEd00000101sv00001043sd0000400A* - ID_PRODUCT_FROM_DATABASE=AGP-V6800 DDR SGRAM - -pci:v000010DEd00000101sv00001043sd0000400B* - ID_PRODUCT_FROM_DATABASE=AGP-V6800 DDR SDRAM - -pci:v000010DEd00000101sv00001048sd00000C42* - ID_PRODUCT_FROM_DATABASE=Erazor X - -pci:v000010DEd00000101sv0000107Dsd00002822* - ID_PRODUCT_FROM_DATABASE=WinFast GeForce 256 - -pci:v000010DEd00000101sv00001102sd0000102E* - ID_PRODUCT_FROM_DATABASE=CT6970/CT6971 - -pci:v000010DEd00000101sv000014AFsd00005021* - ID_PRODUCT_FROM_DATABASE=3D Prophet DDR-DVI - -pci:v000010DEd00000103* - ID_PRODUCT_FROM_DATABASE=NV10GL [Quadro] - -pci:v000010DEd00000103sv00001048sd00000C40* - ID_PRODUCT_FROM_DATABASE=GLoria II-64 - -pci:v000010DEd00000103sv00001048sd00000C44* - ID_PRODUCT_FROM_DATABASE=GLoria II - -pci:v000010DEd00000103sv00001048sd00000C45* - ID_PRODUCT_FROM_DATABASE=GLoria II - -pci:v000010DEd00000103sv00001048sd00000C4A* - ID_PRODUCT_FROM_DATABASE=GLoria II-64 Pro - -pci:v000010DEd00000103sv00001048sd00000C4B* - ID_PRODUCT_FROM_DATABASE=GLoria II-64 Pro DVII - -pci:v000010DEd00000110* - ID_PRODUCT_FROM_DATABASE=NV11 [GeForce2 MX/MX 400] - -pci:v000010DEd00000110sv00001043sd00004015* - ID_PRODUCT_FROM_DATABASE=AGP-V7100 Pro - -pci:v000010DEd00000110sv00001043sd00004021* - ID_PRODUCT_FROM_DATABASE=V7100 Deluxe Combo - -pci:v000010DEd00000110sv00001043sd00004031* - ID_PRODUCT_FROM_DATABASE=V7100 Pro with TV output - -pci:v000010DEd00000110sv00001048sd00000C60* - ID_PRODUCT_FROM_DATABASE=Gladiac MX - -pci:v000010DEd00000110sv00001048sd00000C61* - ID_PRODUCT_FROM_DATABASE=Gladiac 511PCI - -pci:v000010DEd00000110sv00001048sd00000C63* - ID_PRODUCT_FROM_DATABASE=Gladiac 511TV-OUT 32MB - -pci:v000010DEd00000110sv00001048sd00000C64* - ID_PRODUCT_FROM_DATABASE=Gladiac 511TV-OUT 64MB - -pci:v000010DEd00000110sv00001048sd00000C65* - ID_PRODUCT_FROM_DATABASE=Gladiac 511TWIN - -pci:v000010DEd00000110sv00001048sd00000C66* - ID_PRODUCT_FROM_DATABASE=Gladiac 311 - -pci:v000010DEd00000110sv000010B0sd00000001* - ID_PRODUCT_FROM_DATABASE=GeForce2 MX Jumbo TV - -pci:v000010DEd00000110sv000010DEsd00000091* - ID_PRODUCT_FROM_DATABASE=Dell OEM GeForce 2 MX 400 - -pci:v000010DEd00000110sv000010DEsd000000A1* - ID_PRODUCT_FROM_DATABASE=Apple OEM GeForce2 MX - -pci:v000010DEd00000110sv00001462sd00008523* - ID_PRODUCT_FROM_DATABASE=MS-8852 - -pci:v000010DEd00000110sv00001462sd00008817* - ID_PRODUCT_FROM_DATABASE=MSI GeForce2 MX400 Pro32S [MS-8817] - -pci:v000010DEd00000110sv000014AFsd00007102* - ID_PRODUCT_FROM_DATABASE=3D Prophet II MX - -pci:v000010DEd00000110sv000014AFsd00007103* - ID_PRODUCT_FROM_DATABASE=3D Prophet II MX Dual-Display - -pci:v000010DEd00000110sv00001545sd00000023* - ID_PRODUCT_FROM_DATABASE=Xtasy Rev. B2 - -pci:v000010DEd00000110sv00001554sd00001081* - ID_PRODUCT_FROM_DATABASE=MVGA-NVG11AM(400) - -pci:v000010DEd00000111* - ID_PRODUCT_FROM_DATABASE=NV11DDR [GeForce2 MX200] - -pci:v000010DEd00000112* - ID_PRODUCT_FROM_DATABASE=NV11 [GeForce2 Go] - -pci:v000010DEd00000113* - ID_PRODUCT_FROM_DATABASE=NV11GL [Quadro2 MXR/EX/Go] - -pci:v000010DEd00000140* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6600 GT] - -pci:v000010DEd00000140sv00001458sd00003125* - ID_PRODUCT_FROM_DATABASE=GV-NX66T128D - -pci:v000010DEd00000140sv00001458sd00003126* - ID_PRODUCT_FROM_DATABASE=GV-NX66T256DE - -pci:v000010DEd00000140sv00001462sd00008939* - ID_PRODUCT_FROM_DATABASE=MS-8983 - -pci:v000010DEd00000141* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6600] - -pci:v000010DEd00000141sv00001043sd000081B0* - ID_PRODUCT_FROM_DATABASE=EN6600 Silencer - -pci:v000010DEd00000141sv0000107Dsd0000593A* - ID_PRODUCT_FROM_DATABASE=LR2A22 128MB TV OUT - -pci:v000010DEd00000141sv0000107Dsd0000597B* - ID_PRODUCT_FROM_DATABASE=WINFAST PX6600 - -pci:v000010DEd00000141sv00001458sd00003124* - ID_PRODUCT_FROM_DATABASE=GV-NX66128DP Turbo Force Edition - -pci:v000010DEd00000142* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6600 LE] - -pci:v000010DEd00000143* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6600 VE] - -pci:v000010DEd00000144* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce Go 6600] - -pci:v000010DEd00000145* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6610 XL] - -pci:v000010DEd00000146* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce Go6200 TE / 6600 TE] - -pci:v000010DEd00000147* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6700 XL] - -pci:v000010DEd00000148* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce Go 6600] - -pci:v000010DEd00000149* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce Go 6600 GT] - -pci:v000010DEd0000014A* - ID_PRODUCT_FROM_DATABASE=NV43 [Quadro NVS 440] - -pci:v000010DEd0000014C* - ID_PRODUCT_FROM_DATABASE=NV43 [Quadro FX 540 MXM] - -pci:v000010DEd0000014D* - ID_PRODUCT_FROM_DATABASE=NV43GL [Quadro FX 550] - -pci:v000010DEd0000014E* - ID_PRODUCT_FROM_DATABASE=NV43GL [Quadro FX 540] - -pci:v000010DEd0000014F* - ID_PRODUCT_FROM_DATABASE=NV43 [GeForce 6200] - -pci:v000010DEd00000150* - ID_PRODUCT_FROM_DATABASE=NV15 [GeForce2 GTS/Pro] - -pci:v000010DEd00000150sv00001043sd00004016* - ID_PRODUCT_FROM_DATABASE=V7700 AGP Video Card - -pci:v000010DEd00000150sv00001043sd0000402A* - ID_PRODUCT_FROM_DATABASE=AGP-V7700 - -pci:v000010DEd00000150sv00001048sd00000C50* - ID_PRODUCT_FROM_DATABASE=Gladiac - -pci:v000010DEd00000150sv00001048sd00000C52* - ID_PRODUCT_FROM_DATABASE=Gladiac-64 - -pci:v000010DEd00000150sv0000107Dsd00002840* - ID_PRODUCT_FROM_DATABASE=WinFast GeForce2 GTS with TV output - -pci:v000010DEd00000150sv0000107Dsd00002842* - ID_PRODUCT_FROM_DATABASE=WinFast GeForce 2 Pro - -pci:v000010DEd00000150sv000010DEsd0000002E* - ID_PRODUCT_FROM_DATABASE=GeForce2 GTS - -pci:v000010DEd00000150sv00001462sd0000815A* - ID_PRODUCT_FROM_DATABASE=MS-8815 - -pci:v000010DEd00000150sv00001462sd00008831* - ID_PRODUCT_FROM_DATABASE=Creative GeForce2 Pro - -pci:v000010DEd00000151* - ID_PRODUCT_FROM_DATABASE=NV15DDR [GeForce2 Ti] - -pci:v000010DEd00000151sv00001043sd0000405F* - ID_PRODUCT_FROM_DATABASE=V7700Ti - -pci:v000010DEd00000151sv00001462sd00005506* - ID_PRODUCT_FROM_DATABASE=Creative 3D Blaster GeForce2 Titanium - -pci:v000010DEd00000151sv00001462sd00008364* - ID_PRODUCT_FROM_DATABASE=MS-8836 - -pci:v000010DEd00000152* - ID_PRODUCT_FROM_DATABASE=NV15BR [GeForce2 Ultra, Bladerunner] - -pci:v000010DEd00000152sv00001048sd00000C56* - ID_PRODUCT_FROM_DATABASE=GLADIAC Ultra - -pci:v000010DEd00000153* - ID_PRODUCT_FROM_DATABASE=NV15GL [Quadro2 Pro] - -pci:v000010DEd00000160* - ID_PRODUCT_FROM_DATABASE=NV44 [GeForce 6500] - -pci:v000010DEd00000161* - ID_PRODUCT_FROM_DATABASE=NV44 [GeForce 6200 TurboCache(TM)] - -pci:v000010DEd00000162* - ID_PRODUCT_FROM_DATABASE=NV44 [GeForce 6200SE TurboCache (TM)] - -pci:v000010DEd00000163* - ID_PRODUCT_FROM_DATABASE=NV44 [GeForce 6200 LE] - -pci:v000010DEd00000164* - ID_PRODUCT_FROM_DATABASE=NV44 [GeForce Go 6200] - -pci:v000010DEd00000165* - ID_PRODUCT_FROM_DATABASE=NV44 [Quadro NVS 285] - -pci:v000010DEd00000166* - ID_PRODUCT_FROM_DATABASE=NV44 [GeForce Go 6400] - -pci:v000010DEd00000167* - ID_PRODUCT_FROM_DATABASE=NV44 [GeForce Go 6200] - -pci:v000010DEd00000168* - ID_PRODUCT_FROM_DATABASE=NV44 [GeForce Go 6400] - -pci:v000010DEd00000169* - ID_PRODUCT_FROM_DATABASE=NV44 [GeForce 6250] - -pci:v000010DEd0000016A* - ID_PRODUCT_FROM_DATABASE=NV44 [GeForce 7100 GS] - -pci:v000010DEd00000170* - ID_PRODUCT_FROM_DATABASE=NV17 [GeForce4 MX 460] - -pci:v000010DEd00000170sv00001462sd00008630* - ID_PRODUCT_FROM_DATABASE=MS-8863 - -pci:v000010DEd00000171* - ID_PRODUCT_FROM_DATABASE=NV17 [GeForce4 MX 440] - -pci:v000010DEd00000171sv000010B0sd00000002* - ID_PRODUCT_FROM_DATABASE=Gainward Pro/600 TV - -pci:v000010DEd00000171sv000010DEsd00000008* - ID_PRODUCT_FROM_DATABASE=Apple OEM GeForce4 MX 440 - -pci:v000010DEd00000171sv00001462sd00008661* - ID_PRODUCT_FROM_DATABASE=G4MX440-VTP - -pci:v000010DEd00000171sv00001462sd00008730* - ID_PRODUCT_FROM_DATABASE=MX440SES-T (MS-8873) - -pci:v000010DEd00000171sv00001462sd00008743* - ID_PRODUCT_FROM_DATABASE=MS-8874 - -pci:v000010DEd00000171sv00001462sd00008852* - ID_PRODUCT_FROM_DATABASE=GeForce4 MX440 PCI - -pci:v000010DEd00000171sv0000147Bsd00008F00* - ID_PRODUCT_FROM_DATABASE=Abit Siluro GeForce4MX440 - -pci:v000010DEd00000172* - ID_PRODUCT_FROM_DATABASE=NV17 [GeForce4 MX 420] - -pci:v000010DEd00000172sv00001462sd00008730* - ID_PRODUCT_FROM_DATABASE=MS-8873 - -pci:v000010DEd00000172sv00001462sd00008784* - ID_PRODUCT_FROM_DATABASE=MS-8878 - -pci:v000010DEd00000173* - ID_PRODUCT_FROM_DATABASE=NV17 [GeForce4 MX 440-SE] - -pci:v000010DEd00000174* - ID_PRODUCT_FROM_DATABASE=NV17 [GeForce4 440 Go] - -pci:v000010DEd00000175* - ID_PRODUCT_FROM_DATABASE=NV17 [GeForce4 420 Go] - -pci:v000010DEd00000176* - ID_PRODUCT_FROM_DATABASE=NV17 [GeForce4 420 Go 32M] - -pci:v000010DEd00000176sv0000103Csd000008B0* - ID_PRODUCT_FROM_DATABASE=tc1100 tablet - -pci:v000010DEd00000176sv0000144Dsd0000C005* - ID_PRODUCT_FROM_DATABASE=X10 Laptop - -pci:v000010DEd00000176sv00004C53sd00001090* - ID_PRODUCT_FROM_DATABASE=Cx9 / Vx9 mainboard - -pci:v000010DEd00000177* - ID_PRODUCT_FROM_DATABASE=NV17 [GeForce4 460 Go] - -pci:v000010DEd00000178* - ID_PRODUCT_FROM_DATABASE=NV17GL [Quadro4 550 XGL] - -pci:v000010DEd00000179* - ID_PRODUCT_FROM_DATABASE=NV17 [GeForce4 440 Go 64M] - -pci:v000010DEd00000179sv000010DEsd00000179* - ID_PRODUCT_FROM_DATABASE=GeForce4 MX (Mac) - -pci:v000010DEd0000017A* - ID_PRODUCT_FROM_DATABASE=NV17GL [Quadro NVS] - -pci:v000010DEd0000017B* - ID_PRODUCT_FROM_DATABASE=NV17GL [Quadro4 550 XGL] - -pci:v000010DEd0000017C* - ID_PRODUCT_FROM_DATABASE=NV17GL [Quadro4 500 GoGL] - -pci:v000010DEd0000017D* - ID_PRODUCT_FROM_DATABASE=NV17 [GeForce4 410 Go 16M] - -pci:v000010DEd00000181* - ID_PRODUCT_FROM_DATABASE=NV18 [GeForce4 MX 440 AGP 8x] - -pci:v000010DEd00000181sv00001043sd00008063* - ID_PRODUCT_FROM_DATABASE=GeForce4 MX 440 AGP 8X - -pci:v000010DEd00000181sv00001043sd0000806F* - ID_PRODUCT_FROM_DATABASE=V9180 Magic - -pci:v000010DEd00000181sv00001462sd00008880* - ID_PRODUCT_FROM_DATABASE=MS-StarForce GeForce4 MX 440 with AGP8X - -pci:v000010DEd00000181sv00001462sd00008900* - ID_PRODUCT_FROM_DATABASE=MS-8890 GeForce 4 MX440 AGP8X - -pci:v000010DEd00000181sv00001462sd00009350* - ID_PRODUCT_FROM_DATABASE=MSI GeForce4 MX T8X with AGP8X - -pci:v000010DEd00000181sv0000147Bsd00008F0D* - ID_PRODUCT_FROM_DATABASE=Siluro GF4 MX-8X - -pci:v000010DEd00000181sv00001554sd00001111* - ID_PRODUCT_FROM_DATABASE=PixelView MVGA-NVG18A - -pci:v000010DEd00000182* - ID_PRODUCT_FROM_DATABASE=NV18 [GeForce4 MX 440SE AGP 8x] - -pci:v000010DEd00000183* - ID_PRODUCT_FROM_DATABASE=NV18 [GeForce4 MX 420 AGP 8x] - -pci:v000010DEd00000184* - ID_PRODUCT_FROM_DATABASE=NV18 [GeForce4 MX] - -pci:v000010DEd00000185* - ID_PRODUCT_FROM_DATABASE=NV18 [GeForce4 MX 4000] - -pci:v000010DEd00000186* - ID_PRODUCT_FROM_DATABASE=NV18M [GeForce4 448 Go] - -pci:v000010DEd00000187* - ID_PRODUCT_FROM_DATABASE=NV18M [GeForce4 488 Go] - -pci:v000010DEd00000188* - ID_PRODUCT_FROM_DATABASE=NV18GL [Quadro4 580 XGL] - -pci:v000010DEd00000189* - ID_PRODUCT_FROM_DATABASE=NV18 [GeForce4 MX with AGP8X (Mac)] - -pci:v000010DEd0000018A* - ID_PRODUCT_FROM_DATABASE=NV18GL [Quadro NVS 280 SD] - -pci:v000010DEd0000018B* - ID_PRODUCT_FROM_DATABASE=NV18GL [Quadro4 380 XGL] - -pci:v000010DEd0000018C* - ID_PRODUCT_FROM_DATABASE=NV18GL [Quadro NVS 50 PCI] - -pci:v000010DEd0000018D* - ID_PRODUCT_FROM_DATABASE=NV18M [GeForce4 448 Go] - -pci:v000010DEd00000190* - ID_PRODUCT_FROM_DATABASE=G80 [GeForce 8800 GTS / 8800 GTX] - -pci:v000010DEd00000191* - ID_PRODUCT_FROM_DATABASE=G80 [GeForce 8800 GTX] - -pci:v000010DEd00000192* - ID_PRODUCT_FROM_DATABASE=G80 [GeForce 8800 GTS] - -pci:v000010DEd00000193* - ID_PRODUCT_FROM_DATABASE=G80 [GeForce 8800 GTS] - -pci:v000010DEd00000193sv0000107Dsd000020BD* - ID_PRODUCT_FROM_DATABASE=WinFast PX 8800 GTS TDH - -pci:v000010DEd00000194* - ID_PRODUCT_FROM_DATABASE=G80 [GeForce 8800 Ultra] - -pci:v000010DEd00000197* - ID_PRODUCT_FROM_DATABASE=G80 [Tesla C870] - -pci:v000010DEd0000019D* - ID_PRODUCT_FROM_DATABASE=G80 [Quadro FX 5600] - -pci:v000010DEd0000019E* - ID_PRODUCT_FROM_DATABASE=G80 [Quadro FX 4600] - -pci:v000010DEd000001A0* - ID_PRODUCT_FROM_DATABASE=nForce 220/420 NV11 [GeForce2 MX] - -pci:v000010DEd000001A4* - ID_PRODUCT_FROM_DATABASE=nForce CPU bridge - -pci:v000010DEd000001AB* - ID_PRODUCT_FROM_DATABASE=nForce 420 Memory Controller (DDR) - -pci:v000010DEd000001AC* - ID_PRODUCT_FROM_DATABASE=nForce 220/420 Memory Controller - -pci:v000010DEd000001AD* - ID_PRODUCT_FROM_DATABASE=nForce 220/420 Memory Controller - -pci:v000010DEd000001B0* - ID_PRODUCT_FROM_DATABASE=nForce Audio Processing Unit - -pci:v000010DEd000001B1* - ID_PRODUCT_FROM_DATABASE=nForce AC'97 Audio Controller - -pci:v000010DEd000001B2* - ID_PRODUCT_FROM_DATABASE=nForce ISA Bridge - -pci:v000010DEd000001B4* - ID_PRODUCT_FROM_DATABASE=nForce PCI System Management - -pci:v000010DEd000001B7* - ID_PRODUCT_FROM_DATABASE=nForce AGP to PCI Bridge - -pci:v000010DEd000001B8* - ID_PRODUCT_FROM_DATABASE=nForce PCI-to-PCI bridge - -pci:v000010DEd000001BC* - ID_PRODUCT_FROM_DATABASE=nForce IDE - -pci:v000010DEd000001C1* - ID_PRODUCT_FROM_DATABASE=nForce AC'97 Modem Controller - -pci:v000010DEd000001C2* - ID_PRODUCT_FROM_DATABASE=nForce USB Controller - -pci:v000010DEd000001C3* - ID_PRODUCT_FROM_DATABASE=nForce Ethernet Controller - -pci:v000010DEd000001D0* - ID_PRODUCT_FROM_DATABASE=G72 [GeForce 7350 LE] - -pci:v000010DEd000001D1* - ID_PRODUCT_FROM_DATABASE=G72 [GeForce 7300 LE] - -pci:v000010DEd000001D1sv0000107Dsd00005EFA* - ID_PRODUCT_FROM_DATABASE=WinFast PX7300LE-TD128 - -pci:v000010DEd000001D1sv0000107Dsd00005EFB* - ID_PRODUCT_FROM_DATABASE=WinFast PX7300LE-TD256 - -pci:v000010DEd000001D1sv00001462sd00000345* - ID_PRODUCT_FROM_DATABASE=7300LE PCI Express Graphics Adapter - -pci:v000010DEd000001D2* - ID_PRODUCT_FROM_DATABASE=G72 [GeForce 7550 LE] - -pci:v000010DEd000001D3* - ID_PRODUCT_FROM_DATABASE=G72 [GeForce 7200 GS / 7300 SE] - -pci:v000010DEd000001D6* - ID_PRODUCT_FROM_DATABASE=G72M [GeForce Go 7200] - -pci:v000010DEd000001D7* - ID_PRODUCT_FROM_DATABASE=G72M [Quadro NVS 110M/GeForce Go 7300] - -pci:v000010DEd000001D8* - ID_PRODUCT_FROM_DATABASE=G72M [GeForce Go 7400] - -pci:v000010DEd000001D8sv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v000010DEd000001D9* - ID_PRODUCT_FROM_DATABASE=G72M [GeForce Go 7450] - -pci:v000010DEd000001DA* - ID_PRODUCT_FROM_DATABASE=G72M [Quadro NVS 110M] - -pci:v000010DEd000001DB* - ID_PRODUCT_FROM_DATABASE=G72M [Quadro NVS 120M] - -pci:v000010DEd000001DC* - ID_PRODUCT_FROM_DATABASE=G72GL [Quadro FX 350M] - -pci:v000010DEd000001DD* - ID_PRODUCT_FROM_DATABASE=G72 [GeForce 7500 LE] - -pci:v000010DEd000001DE* - ID_PRODUCT_FROM_DATABASE=G72GL [Quadro FX 350] - -pci:v000010DEd000001DEsv000010DEsd000001DC* - ID_PRODUCT_FROM_DATABASE=Quadro FX Go350M - -pci:v000010DEd000001DF* - ID_PRODUCT_FROM_DATABASE=G71 [GeForce 7300 GS] - -pci:v000010DEd000001E0* - ID_PRODUCT_FROM_DATABASE=nForce2 IGP2 - -pci:v000010DEd000001E0sv0000147Bsd00001C09* - ID_PRODUCT_FROM_DATABASE=NV7 Motherboard - -pci:v000010DEd000001E8* - ID_PRODUCT_FROM_DATABASE=nForce2 AGP - -pci:v000010DEd000001EA* - ID_PRODUCT_FROM_DATABASE=nForce2 Memory Controller 0 - -pci:v000010DEd000001EAsv0000A0A0sd000003B9* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd000001EB* - ID_PRODUCT_FROM_DATABASE=nForce2 Memory Controller 1 - -pci:v000010DEd000001EBsv0000A0A0sd000003B9* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd000001EC* - ID_PRODUCT_FROM_DATABASE=nForce2 Memory Controller 2 - -pci:v000010DEd000001ECsv0000A0A0sd000003B9* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd000001ED* - ID_PRODUCT_FROM_DATABASE=nForce2 Memory Controller 3 - -pci:v000010DEd000001EDsv0000A0A0sd000003B9* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd000001EE* - ID_PRODUCT_FROM_DATABASE=nForce2 Memory Controller 4 - -pci:v000010DEd000001EEsv000010DEsd000001EE* - ID_PRODUCT_FROM_DATABASE=MSI Delta-L nForce2 memory controller - -pci:v000010DEd000001EEsv0000A0A0sd000003B9* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd000001EF* - ID_PRODUCT_FROM_DATABASE=nForce2 Memory Controller 5 - -pci:v000010DEd000001EFsv0000A0A0sd000003B9* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd000001F0* - ID_PRODUCT_FROM_DATABASE=C17 [GeForce4 MX IGP] - -pci:v000010DEd000001F0sv0000A0A0sd000003B5* - ID_PRODUCT_FROM_DATABASE=UK79G-1394 motherboard - -pci:v000010DEd00000200* - ID_PRODUCT_FROM_DATABASE=NV20 [GeForce3] - -pci:v000010DEd00000200sv00001043sd0000402F* - ID_PRODUCT_FROM_DATABASE=AGP-V8200 DDR - -pci:v000010DEd00000200sv00001048sd00000C70* - ID_PRODUCT_FROM_DATABASE=GLADIAC 920 - -pci:v000010DEd00000201* - ID_PRODUCT_FROM_DATABASE=NV20 [GeForce3 Ti 200] - -pci:v000010DEd00000202* - ID_PRODUCT_FROM_DATABASE=NV20 [GeForce3 Ti 500] - -pci:v000010DEd00000202sv00001043sd0000405B* - ID_PRODUCT_FROM_DATABASE=V8200 T5 - -pci:v000010DEd00000202sv00001545sd0000002F* - ID_PRODUCT_FROM_DATABASE=Xtasy 6964 - -pci:v000010DEd00000203* - ID_PRODUCT_FROM_DATABASE=NV20DCC [Quadro DCC] - -pci:v000010DEd00000211* - ID_PRODUCT_FROM_DATABASE=NV48 [GeForce 6800] - -pci:v000010DEd00000212* - ID_PRODUCT_FROM_DATABASE=NV48 [GeForce 6800 LE] - -pci:v000010DEd00000215* - ID_PRODUCT_FROM_DATABASE=NV48 [GeForce 6800 GT] - -pci:v000010DEd00000218* - ID_PRODUCT_FROM_DATABASE=NV48 [GeForce 6800 XT] - -pci:v000010DEd00000221* - ID_PRODUCT_FROM_DATABASE=NV44A [GeForce 6200] - -pci:v000010DEd00000221sv00001043sd000081E1* - ID_PRODUCT_FROM_DATABASE=N6200/TD/256M/A - -pci:v000010DEd00000221sv00003842sd0000A341* - ID_PRODUCT_FROM_DATABASE=256A8N341DX - -pci:v000010DEd00000222* - ID_PRODUCT_FROM_DATABASE=NV44 [GeForce 6200 A-LE] - -pci:v000010DEd00000240* - ID_PRODUCT_FROM_DATABASE=C51PV [GeForce 6150] - -pci:v000010DEd00000240sv00001043sd000081CD* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM - -pci:v000010DEd00000240sv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd00000241* - ID_PRODUCT_FROM_DATABASE=C51 [GeForce 6150 LE] - -pci:v000010DEd00000242* - ID_PRODUCT_FROM_DATABASE=C51G [GeForce 6100] - -pci:v000010DEd00000242sv0000105Bsd00000CAD* - ID_PRODUCT_FROM_DATABASE=Winfast 6100K8MB - -pci:v000010DEd00000243* - ID_PRODUCT_FROM_DATABASE=C51 PCI Express Bridge - -pci:v000010DEd00000244* - ID_PRODUCT_FROM_DATABASE=C51 [GeForce Go 6150] - -pci:v000010DEd00000244sv0000103Csd000030B5* - ID_PRODUCT_FROM_DATABASE=Presario V3242AU - -pci:v000010DEd00000244sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd00000244sv000010DEsd00000244* - ID_PRODUCT_FROM_DATABASE=GeForce Go 6150 - -pci:v000010DEd00000245* - ID_PRODUCT_FROM_DATABASE=C51 [Quadro NVS 210S/GeForce 6150LE] - -pci:v000010DEd00000246* - ID_PRODUCT_FROM_DATABASE=C51 PCI Express Bridge - -pci:v000010DEd00000247* - ID_PRODUCT_FROM_DATABASE=C51 [GeForce Go 6100] - -pci:v000010DEd00000247sv00001043sd00001382* - ID_PRODUCT_FROM_DATABASE=MCP51 PCI-X GeForce Go 6100 - -pci:v000010DEd00000248* - ID_PRODUCT_FROM_DATABASE=C51 PCI Express Bridge - -pci:v000010DEd00000249* - ID_PRODUCT_FROM_DATABASE=C51 PCI Express Bridge - -pci:v000010DEd0000024A* - ID_PRODUCT_FROM_DATABASE=C51 PCI Express Bridge - -pci:v000010DEd0000024B* - ID_PRODUCT_FROM_DATABASE=C51 PCI Express Bridge - -pci:v000010DEd0000024C* - ID_PRODUCT_FROM_DATABASE=C51 PCI Express Bridge - -pci:v000010DEd0000024D* - ID_PRODUCT_FROM_DATABASE=C51 PCI Express Bridge - -pci:v000010DEd0000024E* - ID_PRODUCT_FROM_DATABASE=C51 PCI Express Bridge - -pci:v000010DEd0000024F* - ID_PRODUCT_FROM_DATABASE=C51 PCI Express Bridge - -pci:v000010DEd00000250* - ID_PRODUCT_FROM_DATABASE=NV25 [GeForce4 Ti 4600] - -pci:v000010DEd00000251* - ID_PRODUCT_FROM_DATABASE=NV25 [GeForce4 Ti 4400] - -pci:v000010DEd00000251sv00001043sd00008023* - ID_PRODUCT_FROM_DATABASE=v8440 GeForce 4 Ti4400 - -pci:v000010DEd00000251sv000010DEsd00000251* - ID_PRODUCT_FROM_DATABASE=PNY GeForce4 Ti 4400 - -pci:v000010DEd00000251sv00001462sd00008710* - ID_PRODUCT_FROM_DATABASE=PNY GeForce4 Ti 4400 - -pci:v000010DEd00000252* - ID_PRODUCT_FROM_DATABASE=NV25 [GeForce4 Ti] - -pci:v000010DEd00000253* - ID_PRODUCT_FROM_DATABASE=NV25 [GeForce4 Ti 4200] - -pci:v000010DEd00000253sv0000107Dsd00002896* - ID_PRODUCT_FROM_DATABASE=WinFast A250 LE TD (Dual VGA/TV-out/DVI) - -pci:v000010DEd00000253sv0000147Bsd00008F09* - ID_PRODUCT_FROM_DATABASE=Siluro (Dual VGA/TV-out/DVI) - -pci:v000010DEd00000258* - ID_PRODUCT_FROM_DATABASE=NV25GL [Quadro4 900 XGL] - -pci:v000010DEd00000259* - ID_PRODUCT_FROM_DATABASE=NV25GL [Quadro4 750 XGL] - -pci:v000010DEd0000025B* - ID_PRODUCT_FROM_DATABASE=NV25GL [Quadro4 700 XGL] - -pci:v000010DEd00000260* - ID_PRODUCT_FROM_DATABASE=MCP51 LPC Bridge - -pci:v000010DEd00000260sv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd00000260sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd00000260sv00001043sd000081BC* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd00000260sv00001458sd00005001* - ID_PRODUCT_FROM_DATABASE=GA-M55plus-S3G - -pci:v000010DEd00000260sv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd00000261* - ID_PRODUCT_FROM_DATABASE=MCP51 LPC Bridge - -pci:v000010DEd00000261sv0000105Bsd00000CAD* - ID_PRODUCT_FROM_DATABASE=Winfast 6100K8MB - -pci:v000010DEd00000262* - ID_PRODUCT_FROM_DATABASE=MCP51 LPC Bridge - -pci:v000010DEd00000263* - ID_PRODUCT_FROM_DATABASE=MCP51 LPC Bridge - -pci:v000010DEd00000264* - ID_PRODUCT_FROM_DATABASE=MCP51 SMBus - -pci:v000010DEd00000264sv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd00000264sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd00000264sv00001043sd000081BC* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd00000264sv0000105Bsd00000CAD* - ID_PRODUCT_FROM_DATABASE=Winfast 6100K8MB - -pci:v000010DEd00000264sv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd00000265* - ID_PRODUCT_FROM_DATABASE=MCP51 IDE - -pci:v000010DEd00000265sv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd00000265sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd00000265sv00001043sd000081BC* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd00000265sv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd00000265sv0000F05Bsd00000CAD* - ID_PRODUCT_FROM_DATABASE=Winfast 6100K8MB - -pci:v000010DEd00000266* - ID_PRODUCT_FROM_DATABASE=MCP51 Serial ATA Controller - -pci:v000010DEd00000266sv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd00000266sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd00000266sv00001043sd000081BC* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd00000266sv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd00000267* - ID_PRODUCT_FROM_DATABASE=MCP51 Serial ATA Controller - -pci:v000010DEd00000267sv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd00000267sv00001043sd000081BC* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd00000267sv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd00000268* - ID_PRODUCT_FROM_DATABASE=MCP51 Ethernet Controller - -pci:v000010DEd00000269* - ID_PRODUCT_FROM_DATABASE=MCP51 Ethernet Controller - -pci:v000010DEd00000269sv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd00000269sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd00000269sv00001043sd00008141* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd00000269sv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd0000026A* - ID_PRODUCT_FROM_DATABASE=MCP51 MCI - -pci:v000010DEd0000026B* - ID_PRODUCT_FROM_DATABASE=MCP51 AC97 Audio Controller - -pci:v000010DEd0000026Bsv0000105Bsd00000CAD* - ID_PRODUCT_FROM_DATABASE=Winfast 6100K8MB - -pci:v000010DEd0000026C* - ID_PRODUCT_FROM_DATABASE=MCP51 High Definition Audio - -pci:v000010DEd0000026Csv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd0000026Csv0000103Csd000030B5* - ID_PRODUCT_FROM_DATABASE=Presario V3242AU - -pci:v000010DEd0000026Csv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd0000026Csv000010DEsd0000CB84* - ID_PRODUCT_FROM_DATABASE=ASUSTeK Computer Inc. A8N-VM CSM Mainboard - -pci:v000010DEd0000026Csv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd0000026D* - ID_PRODUCT_FROM_DATABASE=MCP51 USB Controller - -pci:v000010DEd0000026Dsv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd0000026Dsv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd0000026Dsv00001043sd000081BC* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd0000026Dsv0000105Bsd00000CAD* - ID_PRODUCT_FROM_DATABASE=Winfast 6100K8MB - -pci:v000010DEd0000026Dsv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd0000026E* - ID_PRODUCT_FROM_DATABASE=MCP51 USB Controller - -pci:v000010DEd0000026Esv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd0000026Esv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd0000026Esv00001043sd000081BC* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd0000026Esv0000105Bsd00000CAD* - ID_PRODUCT_FROM_DATABASE=Winfast 6100K8MB - -pci:v000010DEd0000026Esv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd0000026F* - ID_PRODUCT_FROM_DATABASE=MCP51 PCI Bridge - -pci:v000010DEd0000026Fsv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd00000270* - ID_PRODUCT_FROM_DATABASE=MCP51 Host Bridge - -pci:v000010DEd00000270sv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd00000270sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd00000270sv00001043sd000081BC* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd00000270sv0000105Bsd00000CAD* - ID_PRODUCT_FROM_DATABASE=Winfast 6100K8MB - -pci:v000010DEd00000270sv00001458sd00005001* - ID_PRODUCT_FROM_DATABASE=GA-M55plus-S3G - -pci:v000010DEd00000270sv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd00000271* - ID_PRODUCT_FROM_DATABASE=MCP51 PMU - -pci:v000010DEd00000271sv0000103Csd000030B5* - ID_PRODUCT_FROM_DATABASE=Presario V3242AU - -pci:v000010DEd00000271sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd00000272* - ID_PRODUCT_FROM_DATABASE=MCP51 Memory Controller 0 - -pci:v000010DEd00000272sv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd00000272sv0000105Bsd00000CAD* - ID_PRODUCT_FROM_DATABASE=Winfast 6100K8MB - -pci:v000010DEd0000027E* - ID_PRODUCT_FROM_DATABASE=C51 Memory Controller 2 - -pci:v000010DEd0000027Esv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd0000027Esv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd0000027Esv00001043sd000081CD* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd0000027Esv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-M55plus-S3G - -pci:v000010DEd0000027Esv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd0000027F* - ID_PRODUCT_FROM_DATABASE=C51 Memory Controller 3 - -pci:v000010DEd0000027Fsv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd0000027Fsv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd0000027Fsv00001043sd000081CD* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd0000027Fsv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-M55plus-S3G - -pci:v000010DEd0000027Fsv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd00000280* - ID_PRODUCT_FROM_DATABASE=NV28 [GeForce4 Ti 4800] - -pci:v000010DEd00000281* - ID_PRODUCT_FROM_DATABASE=NV28 [GeForce4 Ti 4200 AGP 8x] - -pci:v000010DEd00000282* - ID_PRODUCT_FROM_DATABASE=NV28 [GeForce4 Ti 4800 SE] - -pci:v000010DEd00000286* - ID_PRODUCT_FROM_DATABASE=NV28 [GeForce4 Ti 4200 Go AGP 8x] - -pci:v000010DEd00000288* - ID_PRODUCT_FROM_DATABASE=NV28GL [Quadro4 980 XGL] - -pci:v000010DEd00000289* - ID_PRODUCT_FROM_DATABASE=NV28GL [Quadro4 780 XGL] - -pci:v000010DEd0000028C* - ID_PRODUCT_FROM_DATABASE=NV28GLM [Quadro4 Go700] - -pci:v000010DEd00000290* - ID_PRODUCT_FROM_DATABASE=G71 [GeForce 7900 GTX] - -pci:v000010DEd00000291* - ID_PRODUCT_FROM_DATABASE=G71 [GeForce 7900 GT/GTO] - -pci:v000010DEd00000291sv000010DEsd0000042B* - ID_PRODUCT_FROM_DATABASE=NX7900GTO-T2D512E [7900 GTO] - -pci:v000010DEd00000292* - ID_PRODUCT_FROM_DATABASE=G71 [GeForce 7900 GS] - -pci:v000010DEd00000293* - ID_PRODUCT_FROM_DATABASE=G71 [GeForce 7900 GX2] - -pci:v000010DEd00000294* - ID_PRODUCT_FROM_DATABASE=G71 [GeForce 7950 GX2] - -pci:v000010DEd00000295* - ID_PRODUCT_FROM_DATABASE=G71 [GeForce 7950 GT] - -pci:v000010DEd00000295sv00001043sd00008225* - ID_PRODUCT_FROM_DATABASE=GeForce 7950 GT - -pci:v000010DEd00000295sv0000107Dsd00002A68* - ID_PRODUCT_FROM_DATABASE=WinFast PX7950GT TDH - -pci:v000010DEd00000295sv00001462sd00000663* - ID_PRODUCT_FROM_DATABASE=NX7950GT-VT2D512EZ-HD - -pci:v000010DEd00000297* - ID_PRODUCT_FROM_DATABASE=G71 [GeForce Go 7950 GTX] - -pci:v000010DEd00000298* - ID_PRODUCT_FROM_DATABASE=G71 [GeForce Go 7900 GS] - -pci:v000010DEd00000299* - ID_PRODUCT_FROM_DATABASE=G71 [GeForce Go 7900 GTX] - -pci:v000010DEd0000029A* - ID_PRODUCT_FROM_DATABASE=G71 [Quadro FX 2500M] - -pci:v000010DEd0000029B* - ID_PRODUCT_FROM_DATABASE=G71 [Quadro FX 1500M] - -pci:v000010DEd0000029C* - ID_PRODUCT_FROM_DATABASE=G71 [Quadro FX 5500] - -pci:v000010DEd0000029D* - ID_PRODUCT_FROM_DATABASE=G71GL [Quadro FX 3500] - -pci:v000010DEd0000029E* - ID_PRODUCT_FROM_DATABASE=G71 [Quadro FX 1500] - -pci:v000010DEd0000029F* - ID_PRODUCT_FROM_DATABASE=G70 [Quadro FX 4500 X2] - -pci:v000010DEd000002A0* - ID_PRODUCT_FROM_DATABASE=NV2A [XGPU] - -pci:v000010DEd000002A5* - ID_PRODUCT_FROM_DATABASE=MCPX CPU Bridge - -pci:v000010DEd000002A6* - ID_PRODUCT_FROM_DATABASE=MCPX Memory Controller - -pci:v000010DEd000002E0* - ID_PRODUCT_FROM_DATABASE=G73 [GeForce 7600 GT] - -pci:v000010DEd000002E0sv000002E0sd00002249* - ID_PRODUCT_FROM_DATABASE=GF 7600GT 560M 256MB DDR3 DUAL DVI TV - -pci:v000010DEd000002E1* - ID_PRODUCT_FROM_DATABASE=G73 [GeForce 7600 GS] - -pci:v000010DEd000002E1sv00001682sd0000222B* - ID_PRODUCT_FROM_DATABASE=PV-T73K-UAL3 (256MB) - -pci:v000010DEd000002E1sv00001682sd00002247* - ID_PRODUCT_FROM_DATABASE=GF 7600GS 512MB DDR2 - -pci:v000010DEd000002E2* - ID_PRODUCT_FROM_DATABASE=G73 [GeForce 7300 GT] - -pci:v000010DEd000002E3* - ID_PRODUCT_FROM_DATABASE=G71 [GeForce 7900 GS] - -pci:v000010DEd000002E4* - ID_PRODUCT_FROM_DATABASE=G71 [GeForce 7950 GT] - -pci:v000010DEd000002E4sv00001682sd00002271* - ID_PRODUCT_FROM_DATABASE=PV-T71A-YDF7 (512MB) - -pci:v000010DEd000002F0* - ID_PRODUCT_FROM_DATABASE=C51 Host Bridge - -pci:v000010DEd000002F0sv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd000002F0sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd000002F0sv00001043sd000081CD* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd000002F0sv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd000002F1* - ID_PRODUCT_FROM_DATABASE=C51 Host Bridge - -pci:v000010DEd000002F1sv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-M55plus-S3G - -pci:v000010DEd000002F2* - ID_PRODUCT_FROM_DATABASE=C51 Host Bridge - -pci:v000010DEd000002F3* - ID_PRODUCT_FROM_DATABASE=C51 Host Bridge - -pci:v000010DEd000002F4* - ID_PRODUCT_FROM_DATABASE=C51 Host Bridge - -pci:v000010DEd000002F5* - ID_PRODUCT_FROM_DATABASE=C51 Host Bridge - -pci:v000010DEd000002F6* - ID_PRODUCT_FROM_DATABASE=C51 Host Bridge - -pci:v000010DEd000002F7* - ID_PRODUCT_FROM_DATABASE=C51 Host Bridge - -pci:v000010DEd000002F8* - ID_PRODUCT_FROM_DATABASE=C51 Memory Controller 5 - -pci:v000010DEd000002F8sv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd000002F8sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd000002F8sv00001043sd000081CD* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd000002F8sv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-M55plus-S3G - -pci:v000010DEd000002F8sv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd000002F9* - ID_PRODUCT_FROM_DATABASE=C51 Memory Controller 4 - -pci:v000010DEd000002F9sv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd000002F9sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd000002F9sv00001043sd000081CD* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd000002F9sv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-M55plus-S3G - -pci:v000010DEd000002F9sv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd000002FA* - ID_PRODUCT_FROM_DATABASE=C51 Memory Controller 0 - -pci:v000010DEd000002FAsv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd000002FAsv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd000002FAsv00001043sd000081CD* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd000002FAsv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-M55plus-S3G - -pci:v000010DEd000002FAsv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd000002FB* - ID_PRODUCT_FROM_DATABASE=C51 PCI Express Bridge - -pci:v000010DEd000002FC* - ID_PRODUCT_FROM_DATABASE=C51 PCI Express Bridge - -pci:v000010DEd000002FCsv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd000002FD* - ID_PRODUCT_FROM_DATABASE=C51 PCI Express Bridge - -pci:v000010DEd000002FDsv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd000002FE* - ID_PRODUCT_FROM_DATABASE=C51 Memory Controller 1 - -pci:v000010DEd000002FEsv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd000002FEsv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd000002FEsv00001043sd000081CD* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd000002FEsv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-M55plus-S3G - -pci:v000010DEd000002FEsv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd000002FF* - ID_PRODUCT_FROM_DATABASE=C51 Host Bridge - -pci:v000010DEd000002FFsv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000010DEd000002FFsv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v000010DEd000002FFsv00001043sd000081CD* - ID_PRODUCT_FROM_DATABASE=A8N-VM CSM Mainboard - -pci:v000010DEd000002FFsv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-M55plus-S3G - -pci:v000010DEd000002FFsv00001462sd00007207* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series - -pci:v000010DEd00000300* - ID_PRODUCT_FROM_DATABASE=NV30 [GeForce FX] - -pci:v000010DEd00000301* - ID_PRODUCT_FROM_DATABASE=NV30 [GeForce FX 5800 Ultra] - -pci:v000010DEd00000302* - ID_PRODUCT_FROM_DATABASE=NV30 [GeForce FX 5800] - -pci:v000010DEd00000308* - ID_PRODUCT_FROM_DATABASE=NV30GL [Quadro FX 2000] - -pci:v000010DEd00000309* - ID_PRODUCT_FROM_DATABASE=NV30GL [Quadro FX 1000] - -pci:v000010DEd00000311* - ID_PRODUCT_FROM_DATABASE=NV31 [GeForce FX 5600 Ultra] - -pci:v000010DEd00000312* - ID_PRODUCT_FROM_DATABASE=NV31 [GeForce FX 5600] - -pci:v000010DEd00000314* - ID_PRODUCT_FROM_DATABASE=NV31 [GeForce FX 5600XT] - -pci:v000010DEd00000314sv00001043sd0000814A* - ID_PRODUCT_FROM_DATABASE=V9560XT/TD - -pci:v000010DEd00000316* - ID_PRODUCT_FROM_DATABASE=NV31M - -pci:v000010DEd00000318* - ID_PRODUCT_FROM_DATABASE=NV31GL - -pci:v000010DEd0000031A* - ID_PRODUCT_FROM_DATABASE=NV31M [GeForce FX Go5600] - -pci:v000010DEd0000031B* - ID_PRODUCT_FROM_DATABASE=NV31M [GeForce FX Go5650] - -pci:v000010DEd0000031C* - ID_PRODUCT_FROM_DATABASE=NV31 [Quadro FX Go700] - -pci:v000010DEd0000031D* - ID_PRODUCT_FROM_DATABASE=NV31GLM - -pci:v000010DEd0000031E* - ID_PRODUCT_FROM_DATABASE=NV31GLM Pro - -pci:v000010DEd0000031F* - ID_PRODUCT_FROM_DATABASE=NV31GLM Pro - -pci:v000010DEd00000320* - ID_PRODUCT_FROM_DATABASE=NV34 [GeForce FX 5200] - -pci:v000010DEd00000321* - ID_PRODUCT_FROM_DATABASE=NV34 [GeForce FX 5200 Ultra] - -pci:v000010DEd00000322* - ID_PRODUCT_FROM_DATABASE=NV34 [GeForce FX 5200] - -pci:v000010DEd00000322sv00001043sd000002FB* - ID_PRODUCT_FROM_DATABASE=V9250 Magic - -pci:v000010DEd00000322sv00001043sd00008180* - ID_PRODUCT_FROM_DATABASE=V9520-X/TD/128M - -pci:v000010DEd00000322sv0000107Dsd00002967* - ID_PRODUCT_FROM_DATABASE=WinFast A340T 128MB - -pci:v000010DEd00000322sv00001462sd00009110* - ID_PRODUCT_FROM_DATABASE=MS-8911 (FX5200-TD128) - -pci:v000010DEd00000322sv00001462sd00009171* - ID_PRODUCT_FROM_DATABASE=MS-8917 (FX5200-T128) - -pci:v000010DEd00000322sv00001462sd00009360* - ID_PRODUCT_FROM_DATABASE=MS-8936 (FX5200-T128) - -pci:v000010DEd00000322sv00001682sd00001351* - ID_PRODUCT_FROM_DATABASE=GeForce FX 5200 - -pci:v000010DEd00000323* - ID_PRODUCT_FROM_DATABASE=NV34 [GeForce FX 5200LE] - -pci:v000010DEd00000324* - ID_PRODUCT_FROM_DATABASE=NV34M [GeForce FX Go5200 64M] - -pci:v000010DEd00000324sv00001028sd00000196* - ID_PRODUCT_FROM_DATABASE=Inspiron 5160 - -pci:v000010DEd00000324sv0000103Csd0000006A* - ID_PRODUCT_FROM_DATABASE=Pavilion ZD7000 laptop - -pci:v000010DEd00000324sv00001071sd00008160* - ID_PRODUCT_FROM_DATABASE=MIM2000 - -pci:v000010DEd00000325* - ID_PRODUCT_FROM_DATABASE=NV34M [GeForce FX Go5250] - -pci:v000010DEd00000326* - ID_PRODUCT_FROM_DATABASE=NV34 [GeForce FX 5500] - -pci:v000010DEd00000326sv00001458sd0000310D* - ID_PRODUCT_FROM_DATABASE=GeForce FX 5500 128 MB - -pci:v000010DEd00000326sv00001682sd00002034* - ID_PRODUCT_FROM_DATABASE=GeForce 5500 256 MB - -pci:v000010DEd00000327* - ID_PRODUCT_FROM_DATABASE=NV34 [GeForce FX 5100] - -pci:v000010DEd00000328* - ID_PRODUCT_FROM_DATABASE=NV34M [GeForce FX Go5200 32M/64M] - -pci:v000010DEd00000329* - ID_PRODUCT_FROM_DATABASE=NV34M [GeForce FX Go5200] - -pci:v000010DEd00000329sv000010DEsd00000010* - ID_PRODUCT_FROM_DATABASE=Powerbook G4 - -pci:v000010DEd0000032A* - ID_PRODUCT_FROM_DATABASE=NV34GL [Quadro NVS 280 PCI] - -pci:v000010DEd0000032B* - ID_PRODUCT_FROM_DATABASE=NV34GL [Quadro FX 500/600 PCI] - -pci:v000010DEd0000032C* - ID_PRODUCT_FROM_DATABASE=NV34GLM [GeForce FX Go 5300] - -pci:v000010DEd0000032D* - ID_PRODUCT_FROM_DATABASE=NV34 [GeForce FX Go5100] - -pci:v000010DEd0000032F* - ID_PRODUCT_FROM_DATABASE=NV34 [GeForce FX 5200] - -pci:v000010DEd00000330* - ID_PRODUCT_FROM_DATABASE=NV35 [GeForce FX 5900 Ultra] - -pci:v000010DEd00000330sv00001043sd00008137* - ID_PRODUCT_FROM_DATABASE=V9950 Ultra / 256 MB - -pci:v000010DEd00000331* - ID_PRODUCT_FROM_DATABASE=NV35 [GeForce FX 5900] - -pci:v000010DEd00000331sv00001043sd00008145* - ID_PRODUCT_FROM_DATABASE=V9950GE - -pci:v000010DEd00000332* - ID_PRODUCT_FROM_DATABASE=NV35 [GeForce FX 5900XT] - -pci:v000010DEd00000333* - ID_PRODUCT_FROM_DATABASE=NV38 [GeForce FX 5950 Ultra] - -pci:v000010DEd00000334* - ID_PRODUCT_FROM_DATABASE=NV35 [GeForce FX 5900ZT] - -pci:v000010DEd00000334sv00001462sd00009373* - ID_PRODUCT_FROM_DATABASE=FX5900ZT-VTD128 (MS-8937) - -pci:v000010DEd00000338* - ID_PRODUCT_FROM_DATABASE=NV35GL [Quadro FX 3000] - -pci:v000010DEd0000033F* - ID_PRODUCT_FROM_DATABASE=NV35GL [Quadro FX 700] - -pci:v000010DEd00000341* - ID_PRODUCT_FROM_DATABASE=NV36.1 [GeForce FX 5700 Ultra] - -pci:v000010DEd00000341sv00001462sd00009380* - ID_PRODUCT_FROM_DATABASE=MS-8938 (FX5700U-TD128) - -pci:v000010DEd00000342* - ID_PRODUCT_FROM_DATABASE=NV36.2 [GeForce FX 5700] - -pci:v000010DEd00000343* - ID_PRODUCT_FROM_DATABASE=NV36 [GeForce FX 5700LE] - -pci:v000010DEd00000344* - ID_PRODUCT_FROM_DATABASE=NV36.4 [GeForce FX 5700VE] - -pci:v000010DEd00000347* - ID_PRODUCT_FROM_DATABASE=NV36 [GeForce FX Go5700] - -pci:v000010DEd00000347sv0000103Csd0000006A* - ID_PRODUCT_FROM_DATABASE=NX9500 - -pci:v000010DEd00000348* - ID_PRODUCT_FROM_DATABASE=NV36 [GeForce FX Go5700] - -pci:v000010DEd00000349* - ID_PRODUCT_FROM_DATABASE=NV36M Pro - -pci:v000010DEd0000034C* - ID_PRODUCT_FROM_DATABASE=NV36 [Quadro FX Go1000] - -pci:v000010DEd0000034E* - ID_PRODUCT_FROM_DATABASE=NV36GL [Quadro FX 1100] - -pci:v000010DEd00000360* - ID_PRODUCT_FROM_DATABASE=MCP55 LPC Bridge - -pci:v000010DEd00000361* - ID_PRODUCT_FROM_DATABASE=MCP55 LPC Bridge - -pci:v000010DEd00000361sv00001028sd00000221* - ID_PRODUCT_FROM_DATABASE=PowerEdge R805 MCP55 LPC Bridge - -pci:v000010DEd00000362* - ID_PRODUCT_FROM_DATABASE=MCP55 LPC Bridge - -pci:v000010DEd00000362sv0000147Bsd00001C24* - ID_PRODUCT_FROM_DATABASE=KN9 series mainboard - -pci:v000010DEd00000363* - ID_PRODUCT_FROM_DATABASE=MCP55 LPC Bridge - -pci:v000010DEd00000364* - ID_PRODUCT_FROM_DATABASE=MCP55 LPC Bridge - -pci:v000010DEd00000364sv00001028sd00000221* - ID_PRODUCT_FROM_DATABASE=PowerEdge R805 MCP55 LPC Bridge - -pci:v000010DEd00000365* - ID_PRODUCT_FROM_DATABASE=MCP55 LPC Bridge - -pci:v000010DEd00000366* - ID_PRODUCT_FROM_DATABASE=MCP55 LPC Bridge - -pci:v000010DEd00000367* - ID_PRODUCT_FROM_DATABASE=MCP55 LPC Bridge - -pci:v000010DEd00000368* - ID_PRODUCT_FROM_DATABASE=MCP55 SMBus - -pci:v000010DEd00000368sv00001028sd0000020C* - ID_PRODUCT_FROM_DATABASE=PowerEdge M605 MCP55 SMBus - -pci:v000010DEd00000368sv00001028sd00000221* - ID_PRODUCT_FROM_DATABASE=PowerEdge R805 MCP55 SMBus - -pci:v000010DEd00000368sv0000147Bsd00001C24* - ID_PRODUCT_FROM_DATABASE=KN9 series mainboard - -pci:v000010DEd00000369* - ID_PRODUCT_FROM_DATABASE=MCP55 Memory Controller - -pci:v000010DEd00000369sv0000147Bsd00001C24* - ID_PRODUCT_FROM_DATABASE=KN9 series mainboard - -pci:v000010DEd0000036A* - ID_PRODUCT_FROM_DATABASE=MCP55 Memory Controller - -pci:v000010DEd0000036B* - ID_PRODUCT_FROM_DATABASE=MCP55 SMU - -pci:v000010DEd0000036C* - ID_PRODUCT_FROM_DATABASE=MCP55 USB Controller - -pci:v000010DEd0000036Csv00001028sd0000020C* - ID_PRODUCT_FROM_DATABASE=PowerEdge M605 MCP55 USB Controller - -pci:v000010DEd0000036Csv00001028sd00000221* - ID_PRODUCT_FROM_DATABASE=PowerEdge R805 MCP55 USB Controller - -pci:v000010DEd0000036Csv0000147Bsd00001C24* - ID_PRODUCT_FROM_DATABASE=KN9 series mainboard - -pci:v000010DEd0000036D* - ID_PRODUCT_FROM_DATABASE=MCP55 USB Controller - -pci:v000010DEd0000036Dsv00001028sd0000020C* - ID_PRODUCT_FROM_DATABASE=PowerEdge M605 MCP55 USB Controller - -pci:v000010DEd0000036Dsv00001028sd00000221* - ID_PRODUCT_FROM_DATABASE=PowerEdge R805 MCP55 USB Controller - -pci:v000010DEd0000036Dsv0000147Bsd00001C24* - ID_PRODUCT_FROM_DATABASE=KN9 series mainboard - -pci:v000010DEd0000036E* - ID_PRODUCT_FROM_DATABASE=MCP55 IDE - -pci:v000010DEd0000036Esv0000147Bsd00001C24* - ID_PRODUCT_FROM_DATABASE=KN9 series mainboard - -pci:v000010DEd00000370* - ID_PRODUCT_FROM_DATABASE=MCP55 PCI bridge - -pci:v000010DEd00000371* - ID_PRODUCT_FROM_DATABASE=MCP55 High Definition Audio - -pci:v000010DEd00000371sv0000147Bsd00001C24* - ID_PRODUCT_FROM_DATABASE=KN9 series mainboard - -pci:v000010DEd00000372* - ID_PRODUCT_FROM_DATABASE=MCP55 Ethernet - -pci:v000010DEd00000373* - ID_PRODUCT_FROM_DATABASE=MCP55 Ethernet - -pci:v000010DEd00000373sv0000147Bsd00001C24* - ID_PRODUCT_FROM_DATABASE=KN9 series mainboard - -pci:v000010DEd00000374* - ID_PRODUCT_FROM_DATABASE=MCP55 PCI Express bridge - -pci:v000010DEd00000375* - ID_PRODUCT_FROM_DATABASE=MCP55 PCI Express bridge - -pci:v000010DEd00000376* - ID_PRODUCT_FROM_DATABASE=MCP55 PCI Express bridge - -pci:v000010DEd00000377* - ID_PRODUCT_FROM_DATABASE=MCP55 PCI Express bridge - -pci:v000010DEd00000378* - ID_PRODUCT_FROM_DATABASE=MCP55 PCI Express bridge - -pci:v000010DEd0000037A* - ID_PRODUCT_FROM_DATABASE=MCP55 Memory Controller - -pci:v000010DEd0000037E* - ID_PRODUCT_FROM_DATABASE=MCP55 SATA Controller - -pci:v000010DEd0000037F* - ID_PRODUCT_FROM_DATABASE=MCP55 SATA Controller - -pci:v000010DEd0000037Fsv00001028sd00000221* - ID_PRODUCT_FROM_DATABASE=PowerEdge R805 MCP55 SATA Controller - -pci:v000010DEd0000037Fsv0000147Bsd00001C24* - ID_PRODUCT_FROM_DATABASE=KN9 series mainboard - -pci:v000010DEd0000038B* - ID_PRODUCT_FROM_DATABASE=G73 [GeForce 7650 GS] - -pci:v000010DEd00000390* - ID_PRODUCT_FROM_DATABASE=G73 [GeForce 7650 GS] - -pci:v000010DEd00000391* - ID_PRODUCT_FROM_DATABASE=G73 [GeForce 7600 GT] - -pci:v000010DEd00000391sv00001458sd00003427* - ID_PRODUCT_FROM_DATABASE=GV-NX76T128D-RH - -pci:v000010DEd00000392* - ID_PRODUCT_FROM_DATABASE=G73 [GeForce 7600 GS] - -pci:v000010DEd00000392sv00001462sd00000622* - ID_PRODUCT_FROM_DATABASE=NX7600GS-T2D256EH - -pci:v000010DEd00000393* - ID_PRODUCT_FROM_DATABASE=G73 [GeForce 7300 GT] - -pci:v000010DEd00000393sv000010DEsd00000412* - ID_PRODUCT_FROM_DATABASE=NX7300GT-TD256EH - -pci:v000010DEd00000393sv00001462sd00000412* - ID_PRODUCT_FROM_DATABASE=NX7300GT-TD256EH - -pci:v000010DEd00000394* - ID_PRODUCT_FROM_DATABASE=G73 [GeForce 7600 LE] - -pci:v000010DEd00000395* - ID_PRODUCT_FROM_DATABASE=G73 [GeForce 7300 GT] - -pci:v000010DEd00000397* - ID_PRODUCT_FROM_DATABASE=G73 [GeForce Go 7700] - -pci:v000010DEd00000398* - ID_PRODUCT_FROM_DATABASE=G73 [GeForce Go 7600] - -pci:v000010DEd00000398sv00001025sd0000006C* - ID_PRODUCT_FROM_DATABASE=Acer 9814 WKMI - -pci:v000010DEd00000399* - ID_PRODUCT_FROM_DATABASE=G73 [GeForce Go 7600 GT] - -pci:v000010DEd0000039A* - ID_PRODUCT_FROM_DATABASE=G73M [Quadro NVS 300M] - -pci:v000010DEd0000039B* - ID_PRODUCT_FROM_DATABASE=G73 [GeForce Go 7900 SE] - -pci:v000010DEd0000039C* - ID_PRODUCT_FROM_DATABASE=G73 [Quadro FX 550M] - -pci:v000010DEd0000039Csv000010DEsd0000039C* - ID_PRODUCT_FROM_DATABASE=Quadro FX 560M - -pci:v000010DEd0000039E* - ID_PRODUCT_FROM_DATABASE=G73GL [Quadro FX 560] - -pci:v000010DEd000003A0* - ID_PRODUCT_FROM_DATABASE=C55 Host Bridge - -pci:v000010DEd000003A1* - ID_PRODUCT_FROM_DATABASE=C55 Host Bridge - -pci:v000010DEd000003A2* - ID_PRODUCT_FROM_DATABASE=C55 Host Bridge - -pci:v000010DEd000003A3* - ID_PRODUCT_FROM_DATABASE=C55 Host Bridge - -pci:v000010DEd000003A4* - ID_PRODUCT_FROM_DATABASE=C55 Host Bridge - -pci:v000010DEd000003A5* - ID_PRODUCT_FROM_DATABASE=C55 Host Bridge - -pci:v000010DEd000003A6* - ID_PRODUCT_FROM_DATABASE=C55 Host Bridge - -pci:v000010DEd000003A7* - ID_PRODUCT_FROM_DATABASE=C55 Host Bridge - -pci:v000010DEd000003A8* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003A9* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003AA* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003AB* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003AC* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003AD* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003AE* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003AF* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003B0* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003B1* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003B2* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003B3* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003B4* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003B5* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003B6* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003B7* - ID_PRODUCT_FROM_DATABASE=C55 PCI Express bridge - -pci:v000010DEd000003B8* - ID_PRODUCT_FROM_DATABASE=C55 PCI Express bridge - -pci:v000010DEd000003B9* - ID_PRODUCT_FROM_DATABASE=C55 PCI Express bridge - -pci:v000010DEd000003BA* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003BB* - ID_PRODUCT_FROM_DATABASE=C55 PCI Express bridge - -pci:v000010DEd000003BC* - ID_PRODUCT_FROM_DATABASE=C55 Memory Controller - -pci:v000010DEd000003D0* - ID_PRODUCT_FROM_DATABASE=C61 [GeForce 6150SE nForce 430] - -pci:v000010DEd000003D0sv00001028sd0000020E* - ID_PRODUCT_FROM_DATABASE=Inspiron 531 - -pci:v000010DEd000003D1* - ID_PRODUCT_FROM_DATABASE=C61 [GeForce 6100 nForce 405] - -pci:v000010DEd000003D2* - ID_PRODUCT_FROM_DATABASE=C61 [GeForce 6100 nForce 400] - -pci:v000010DEd000003D5* - ID_PRODUCT_FROM_DATABASE=C61 [GeForce 6100 nForce 420] - -pci:v000010DEd000003D6* - ID_PRODUCT_FROM_DATABASE=C61 [GeForce 7025 / nForce 630a] - -pci:v000010DEd000003E0* - ID_PRODUCT_FROM_DATABASE=MCP61 LPC Bridge - -pci:v000010DEd000003E0sv00001028sd0000020E* - ID_PRODUCT_FROM_DATABASE=Inspiron 531 - -pci:v000010DEd000003E0sv00001849sd000003E0* - ID_PRODUCT_FROM_DATABASE=939NF6G-VSTA Board - -pci:v000010DEd000003E1* - ID_PRODUCT_FROM_DATABASE=MCP61 LPC Bridge - -pci:v000010DEd000003E1sv00001043sd000083A4* - ID_PRODUCT_FROM_DATABASE=M4N68T series motherboard - -pci:v000010DEd000003E2* - ID_PRODUCT_FROM_DATABASE=MCP61 Host Bridge - -pci:v000010DEd000003E2sv00001043sd000083A4* - ID_PRODUCT_FROM_DATABASE=M4N68T series motherboard - -pci:v000010DEd000003E3* - ID_PRODUCT_FROM_DATABASE=MCP61 LPC Bridge - -pci:v000010DEd000003E4* - ID_PRODUCT_FROM_DATABASE=MCP61 High Definition Audio - -pci:v000010DEd000003E5* - ID_PRODUCT_FROM_DATABASE=MCP61 Ethernet - -pci:v000010DEd000003E6* - ID_PRODUCT_FROM_DATABASE=MCP61 Ethernet - -pci:v000010DEd000003E7* - ID_PRODUCT_FROM_DATABASE=MCP61 SATA Controller - -pci:v000010DEd000003E8* - ID_PRODUCT_FROM_DATABASE=MCP61 PCI Express bridge - -pci:v000010DEd000003E8sv00001028sd0000020E* - ID_PRODUCT_FROM_DATABASE=Inspiron 531 - -pci:v000010DEd000003E8sv00001849sd000003E8* - ID_PRODUCT_FROM_DATABASE=939NF6G-VSTA Board - -pci:v000010DEd000003E9* - ID_PRODUCT_FROM_DATABASE=MCP61 PCI Express bridge - -pci:v000010DEd000003E9sv00001028sd0000020E* - ID_PRODUCT_FROM_DATABASE=Inspiron 531 - -pci:v000010DEd000003E9sv00001849sd000003E9* - ID_PRODUCT_FROM_DATABASE=939NF6G-VSTA Board - -pci:v000010DEd000003EA* - ID_PRODUCT_FROM_DATABASE=MCP61 Memory Controller - -pci:v000010DEd000003EAsv00001028sd0000020E* - ID_PRODUCT_FROM_DATABASE=Inspiron 531 - -pci:v000010DEd000003EAsv00001849sd000003EA* - ID_PRODUCT_FROM_DATABASE=939NF6G-VSTA Board - -pci:v000010DEd000003EB* - ID_PRODUCT_FROM_DATABASE=MCP61 SMBus - -pci:v000010DEd000003EBsv00001028sd0000020E* - ID_PRODUCT_FROM_DATABASE=Inspiron 531 - -pci:v000010DEd000003EBsv00001043sd000083A4* - ID_PRODUCT_FROM_DATABASE=M4N68T series motherboard - -pci:v000010DEd000003EBsv00001849sd000003EB* - ID_PRODUCT_FROM_DATABASE=939NF6G-VSTA Board - -pci:v000010DEd000003EC* - ID_PRODUCT_FROM_DATABASE=MCP61 IDE - -pci:v000010DEd000003ECsv00001025sd00000392* - ID_PRODUCT_FROM_DATABASE=ET1350 - -pci:v000010DEd000003ECsv00001028sd0000020E* - ID_PRODUCT_FROM_DATABASE=Inspiron 531 - -pci:v000010DEd000003ECsv00001043sd000083A4* - ID_PRODUCT_FROM_DATABASE=M4N68T series motherboard - -pci:v000010DEd000003ECsv00001849sd000003EC* - ID_PRODUCT_FROM_DATABASE=939NF6G-VSTA Board - -pci:v000010DEd000003EE* - ID_PRODUCT_FROM_DATABASE=MCP61 Ethernet - -pci:v000010DEd000003EF* - ID_PRODUCT_FROM_DATABASE=MCP61 Ethernet - -pci:v000010DEd000003EFsv00001025sd00008000* - ID_PRODUCT_FROM_DATABASE=ET1350 - -pci:v000010DEd000003EFsv00001028sd0000020E* - ID_PRODUCT_FROM_DATABASE=Inspiron 531 - -pci:v000010DEd000003EFsv00001043sd000083A4* - ID_PRODUCT_FROM_DATABASE=M4N68T series motherboard - -pci:v000010DEd000003EFsv00001849sd000003EF* - ID_PRODUCT_FROM_DATABASE=939NF6G-VSTA Board - -pci:v000010DEd000003F0* - ID_PRODUCT_FROM_DATABASE=MCP61 High Definition Audio - -pci:v000010DEd000003F0sv00001028sd0000020E* - ID_PRODUCT_FROM_DATABASE=Inspiron 531 - -pci:v000010DEd000003F0sv00001043sd00008415* - ID_PRODUCT_FROM_DATABASE=M4N68T series motherboard - -pci:v000010DEd000003F0sv00001849sd00000888* - ID_PRODUCT_FROM_DATABASE=939NF6G-VSTA Board - -pci:v000010DEd000003F1* - ID_PRODUCT_FROM_DATABASE=MCP61 USB 1.1 Controller - -pci:v000010DEd000003F1sv00001028sd0000020E* - ID_PRODUCT_FROM_DATABASE=Inspiron 531 - -pci:v000010DEd000003F1sv00001043sd000083A4* - ID_PRODUCT_FROM_DATABASE=M4N68T series motherboard - -pci:v000010DEd000003F1sv00001849sd000003F1* - ID_PRODUCT_FROM_DATABASE=939NF6G-VSTA Board - -pci:v000010DEd000003F2* - ID_PRODUCT_FROM_DATABASE=MCP61 USB 2.0 Controller - -pci:v000010DEd000003F2sv00001028sd0000020E* - ID_PRODUCT_FROM_DATABASE=Inspiron 531 - -pci:v000010DEd000003F2sv00001043sd000083A4* - ID_PRODUCT_FROM_DATABASE=M4N68T series motherboard - -pci:v000010DEd000003F2sv00001849sd000003F2* - ID_PRODUCT_FROM_DATABASE=939NF6G-VSTA Board - -pci:v000010DEd000003F3* - ID_PRODUCT_FROM_DATABASE=MCP61 PCI bridge - -pci:v000010DEd000003F3sv00001028sd0000020E* - ID_PRODUCT_FROM_DATABASE=Inspiron 531 - -pci:v000010DEd000003F3sv00001849sd000003F3* - ID_PRODUCT_FROM_DATABASE=939NF6G-VSTA Board - -pci:v000010DEd000003F4* - ID_PRODUCT_FROM_DATABASE=MCP61 SMU - -pci:v000010DEd000003F5* - ID_PRODUCT_FROM_DATABASE=MCP61 Memory Controller - -pci:v000010DEd000003F5sv00001028sd0000020E* - ID_PRODUCT_FROM_DATABASE=Inspiron 531 - -pci:v000010DEd000003F5sv00001043sd000083A4* - ID_PRODUCT_FROM_DATABASE=M4N68T series motherboard - -pci:v000010DEd000003F5sv00001849sd000003EB* - ID_PRODUCT_FROM_DATABASE=939NF6G-VSTA Board - -pci:v000010DEd000003F6* - ID_PRODUCT_FROM_DATABASE=MCP61 SATA Controller - -pci:v000010DEd000003F6sv00001028sd0000020E* - ID_PRODUCT_FROM_DATABASE=Inspiron 531 - -pci:v000010DEd000003F6sv00001043sd000083A4* - ID_PRODUCT_FROM_DATABASE=M4N68T series motherboard - -pci:v000010DEd000003F6sv00001849sd000003F6* - ID_PRODUCT_FROM_DATABASE=939NF6G-VSTA Board - -pci:v000010DEd000003F7* - ID_PRODUCT_FROM_DATABASE=MCP61 SATA Controller - -pci:v000010DEd00000400* - ID_PRODUCT_FROM_DATABASE=G84 [GeForce 8600 GTS] - -pci:v000010DEd00000400sv00001043sd00008241* - ID_PRODUCT_FROM_DATABASE=EN8600GTS - -pci:v000010DEd00000401* - ID_PRODUCT_FROM_DATABASE=G84 [GeForce 8600GT] - -pci:v000010DEd00000402* - ID_PRODUCT_FROM_DATABASE=G84 [GeForce 8600 GT] - -pci:v000010DEd00000402sv00001458sd00003455* - ID_PRODUCT_FROM_DATABASE=GV-NX86T512H - -pci:v000010DEd00000402sv00001462sd00000910* - ID_PRODUCT_FROM_DATABASE=NX8600GT-T2D256EZ - -pci:v000010DEd00000403* - ID_PRODUCT_FROM_DATABASE=G84 [GeForce 8600 GS] - -pci:v000010DEd00000404* - ID_PRODUCT_FROM_DATABASE=G84 [GeForce 8400 GS] - -pci:v000010DEd00000404sv00001462sd00001230* - ID_PRODUCT_FROM_DATABASE=NX8400GS-TD256E - -pci:v000010DEd00000405* - ID_PRODUCT_FROM_DATABASE=G84 [GeForce 9500M GS] - -pci:v000010DEd00000406* - ID_PRODUCT_FROM_DATABASE=G84 [GeForce 8300 GS] - -pci:v000010DEd00000407* - ID_PRODUCT_FROM_DATABASE=G84 [GeForce 8600M GT] - -pci:v000010DEd00000408* - ID_PRODUCT_FROM_DATABASE=G84 [GeForce 9650M GS] - -pci:v000010DEd00000409* - ID_PRODUCT_FROM_DATABASE=G84 [GeForce 8700M GT] - -pci:v000010DEd0000040A* - ID_PRODUCT_FROM_DATABASE=G84 [Quadro FX 370] - -pci:v000010DEd0000040B* - ID_PRODUCT_FROM_DATABASE=G84M [Quadro NVS 320M] - -pci:v000010DEd0000040C* - ID_PRODUCT_FROM_DATABASE=G84M [Quadro FX 570M] - -pci:v000010DEd0000040Csv000017AAsd000020D9* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61p - -pci:v000010DEd0000040D* - ID_PRODUCT_FROM_DATABASE=G84 [Quadro FX 1600M] - -pci:v000010DEd0000040E* - ID_PRODUCT_FROM_DATABASE=G84 [Quadro FX 570] - -pci:v000010DEd0000040F* - ID_PRODUCT_FROM_DATABASE=G84 [Quadro FX 1700] - -pci:v000010DEd00000410* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce GT 330] - -pci:v000010DEd00000414* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 9800 GT] - -pci:v000010DEd00000420* - ID_PRODUCT_FROM_DATABASE=G86 [GeForce 8400 SE] - -pci:v000010DEd00000421* - ID_PRODUCT_FROM_DATABASE=G86 [GeForce 8500 GT] - -pci:v000010DEd00000421sv00001462sd00000960* - ID_PRODUCT_FROM_DATABASE=NX8500GT-TD512EH/M2 - -pci:v000010DEd00000422* - ID_PRODUCT_FROM_DATABASE=G86 [GeForce 8400 GS] - -pci:v000010DEd00000423* - ID_PRODUCT_FROM_DATABASE=G86 [GeForce 8300 GS] - -pci:v000010DEd00000424* - ID_PRODUCT_FROM_DATABASE=G86 [GeForce 8400 GS] - -pci:v000010DEd00000425* - ID_PRODUCT_FROM_DATABASE=G86 [GeForce 8600M GS] - -pci:v000010DEd00000425sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v000010DEd00000426* - ID_PRODUCT_FROM_DATABASE=G86 [GeForce 8400M GT] - -pci:v000010DEd00000427* - ID_PRODUCT_FROM_DATABASE=G86 [GeForce 8400M GS] - -pci:v000010DEd00000427sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v000010DEd00000427sv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v000010DEd00000428* - ID_PRODUCT_FROM_DATABASE=G86 [GeForce 8400M G] - -pci:v000010DEd00000429* - ID_PRODUCT_FROM_DATABASE=G86 [Quadro NVS 140M] - -pci:v000010DEd00000429sv000017AAsd000020D8* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v000010DEd0000042A* - ID_PRODUCT_FROM_DATABASE=G86M [Quadro NVS 130M] - -pci:v000010DEd0000042B* - ID_PRODUCT_FROM_DATABASE=G86M [Quadro NVS 135M] - -pci:v000010DEd0000042C* - ID_PRODUCT_FROM_DATABASE=G86 [GeForce 9400 GT] - -pci:v000010DEd0000042D* - ID_PRODUCT_FROM_DATABASE=G86M [Quadro FX 360M] - -pci:v000010DEd0000042E* - ID_PRODUCT_FROM_DATABASE=G86 [GeForce 9300M G] - -pci:v000010DEd0000042F* - ID_PRODUCT_FROM_DATABASE=G86 [Quadro NVS 290] - -pci:v000010DEd00000440* - ID_PRODUCT_FROM_DATABASE=MCP65 LPC Bridge - -pci:v000010DEd00000441* - ID_PRODUCT_FROM_DATABASE=MCP65 LPC Bridge - -pci:v000010DEd00000442* - ID_PRODUCT_FROM_DATABASE=MCP65 LPC Bridge - -pci:v000010DEd00000442sv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v000010DEd00000443* - ID_PRODUCT_FROM_DATABASE=MCP65 LPC Bridge - -pci:v000010DEd00000444* - ID_PRODUCT_FROM_DATABASE=MCP65 Memory Controller - -pci:v000010DEd00000444sv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v000010DEd00000445* - ID_PRODUCT_FROM_DATABASE=MCP65 Memory Controller - -pci:v000010DEd00000446* - ID_PRODUCT_FROM_DATABASE=MCP65 SMBus - -pci:v000010DEd00000446sv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v000010DEd00000447* - ID_PRODUCT_FROM_DATABASE=MCP65 SMU - -pci:v000010DEd00000447sv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v000010DEd00000448* - ID_PRODUCT_FROM_DATABASE=MCP65 IDE - -pci:v000010DEd00000448sv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v000010DEd00000449* - ID_PRODUCT_FROM_DATABASE=MCP65 PCI bridge - -pci:v000010DEd00000449sv000010DEsd0000CB84* - ID_PRODUCT_FROM_DATABASE=HP Pavilion dv9668eg Laptop - -pci:v000010DEd0000044A* - ID_PRODUCT_FROM_DATABASE=MCP65 High Definition Audio - -pci:v000010DEd0000044Asv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v000010DEd0000044B* - ID_PRODUCT_FROM_DATABASE=MCP65 High Definition Audio - -pci:v000010DEd0000044C* - ID_PRODUCT_FROM_DATABASE=MCP65 AHCI Controller - -pci:v000010DEd0000044D* - ID_PRODUCT_FROM_DATABASE=MCP65 AHCI Controller - -pci:v000010DEd0000044E* - ID_PRODUCT_FROM_DATABASE=MCP65 AHCI Controller - -pci:v000010DEd0000044F* - ID_PRODUCT_FROM_DATABASE=MCP65 AHCI Controller - -pci:v000010DEd00000450* - ID_PRODUCT_FROM_DATABASE=MCP65 Ethernet - -pci:v000010DEd00000450sv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v000010DEd00000451* - ID_PRODUCT_FROM_DATABASE=MCP65 Ethernet - -pci:v000010DEd00000452* - ID_PRODUCT_FROM_DATABASE=MCP65 Ethernet - -pci:v000010DEd00000453* - ID_PRODUCT_FROM_DATABASE=MCP65 Ethernet - -pci:v000010DEd00000454* - ID_PRODUCT_FROM_DATABASE=MCP65 USB 1.1 OHCI Controller - -pci:v000010DEd00000454sv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v000010DEd00000455* - ID_PRODUCT_FROM_DATABASE=MCP65 USB 2.0 EHCI Controller - -pci:v000010DEd00000455sv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v000010DEd00000456* - ID_PRODUCT_FROM_DATABASE=MCP65 USB Controller - -pci:v000010DEd00000457* - ID_PRODUCT_FROM_DATABASE=MCP65 USB Controller - -pci:v000010DEd00000458* - ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge - -pci:v000010DEd00000458sv000010DEsd00000000* - ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge - -pci:v000010DEd00000459* - ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge - -pci:v000010DEd00000459sv000010DEsd00000000* - ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge - -pci:v000010DEd0000045A* - ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge - -pci:v000010DEd0000045Asv000010DEsd00000000* - ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge - -pci:v000010DEd0000045B* - ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge - -pci:v000010DEd0000045Bsv000010DEsd00000000* - ID_PRODUCT_FROM_DATABASE=MCP65 PCI Express bridge - -pci:v000010DEd0000045C* - ID_PRODUCT_FROM_DATABASE=MCP65 SATA Controller - -pci:v000010DEd0000045D* - ID_PRODUCT_FROM_DATABASE=MCP65 SATA Controller - -pci:v000010DEd0000045Dsv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v000010DEd0000045E* - ID_PRODUCT_FROM_DATABASE=MCP65 SATA Controller - -pci:v000010DEd0000045F* - ID_PRODUCT_FROM_DATABASE=MCP65 SATA Controller - -pci:v000010DEd00000531* - ID_PRODUCT_FROM_DATABASE=C67 [GeForce 7150M / nForce 630M] - -pci:v000010DEd00000533* - ID_PRODUCT_FROM_DATABASE=C67 [GeForce 7000M / nForce 610M] - -pci:v000010DEd0000053A* - ID_PRODUCT_FROM_DATABASE=C68 [GeForce 7050 PV / nForce 630a] - -pci:v000010DEd0000053B* - ID_PRODUCT_FROM_DATABASE=C68 [GeForce 7050 PV / nForce 630a] - -pci:v000010DEd0000053Bsv00001043sd00008308* - ID_PRODUCT_FROM_DATABASE=M2N68-AM Motherbord - -pci:v000010DEd0000053E* - ID_PRODUCT_FROM_DATABASE=C68 [GeForce 7025 / nForce 630a] - -pci:v000010DEd00000541* - ID_PRODUCT_FROM_DATABASE=MCP67 Memory Controller - -pci:v000010DEd00000542* - ID_PRODUCT_FROM_DATABASE=MCP67 SMBus - -pci:v000010DEd00000542sv00001043sd00008308* - ID_PRODUCT_FROM_DATABASE=M2N68-AM Motherbord - -pci:v000010DEd00000543* - ID_PRODUCT_FROM_DATABASE=MCP67 Co-processor - -pci:v000010DEd00000547* - ID_PRODUCT_FROM_DATABASE=MCP67 Memory Controller - -pci:v000010DEd00000547sv00001043sd00008308* - ID_PRODUCT_FROM_DATABASE=M2N68-AM Motherbord - -pci:v000010DEd00000547sv00001849sd00000547* - ID_PRODUCT_FROM_DATABASE=ALiveNF7G-HDready - -pci:v000010DEd00000548* - ID_PRODUCT_FROM_DATABASE=MCP67 ISA Bridge - -pci:v000010DEd00000548sv00001043sd00008308* - ID_PRODUCT_FROM_DATABASE=M2N68-AM Motherboard - -pci:v000010DEd0000054C* - ID_PRODUCT_FROM_DATABASE=MCP67 Ethernet - -pci:v000010DEd0000054Csv00001043sd00008308* - ID_PRODUCT_FROM_DATABASE=M2N68-AM Motherbord - -pci:v000010DEd0000054Csv00001849sd0000054C* - ID_PRODUCT_FROM_DATABASE=ALiveNF7G-HDready, MCP67 Gigabit Ethernet - -pci:v000010DEd0000054D* - ID_PRODUCT_FROM_DATABASE=MCP67 Ethernet - -pci:v000010DEd0000054E* - ID_PRODUCT_FROM_DATABASE=MCP67 Ethernet - -pci:v000010DEd0000054F* - ID_PRODUCT_FROM_DATABASE=MCP67 Ethernet - -pci:v000010DEd00000550* - ID_PRODUCT_FROM_DATABASE=MCP67 AHCI Controller - -pci:v000010DEd00000550sv00001043sd00008308* - ID_PRODUCT_FROM_DATABASE=M2N68-AM Motherboard - -pci:v000010DEd00000554* - ID_PRODUCT_FROM_DATABASE=MCP67 AHCI Controller - -pci:v000010DEd00000554sv00001043sd00008308* - ID_PRODUCT_FROM_DATABASE=M2N68-AM Motherboard - -pci:v000010DEd00000555* - ID_PRODUCT_FROM_DATABASE=MCP67 SATA Controller - -pci:v000010DEd00000555sv00001043sd00008308* - ID_PRODUCT_FROM_DATABASE=M2N68-AM Motherboard - -pci:v000010DEd0000055C* - ID_PRODUCT_FROM_DATABASE=MCP67 High Definition Audio - -pci:v000010DEd0000055Csv00001043sd00008290* - ID_PRODUCT_FROM_DATABASE=M2N68-AM Motherboard - -pci:v000010DEd0000055D* - ID_PRODUCT_FROM_DATABASE=MCP67 High Definition Audio - -pci:v000010DEd0000055E* - ID_PRODUCT_FROM_DATABASE=MCP67 OHCI USB 1.1 Controller - -pci:v000010DEd0000055Esv00001043sd00008308* - ID_PRODUCT_FROM_DATABASE=M2N68-AM Motherboard - -pci:v000010DEd0000055F* - ID_PRODUCT_FROM_DATABASE=MCP67 EHCI USB 2.0 Controller - -pci:v000010DEd0000055Fsv00001043sd00008308* - ID_PRODUCT_FROM_DATABASE=M2N68-AM Motherboard - -pci:v000010DEd00000560* - ID_PRODUCT_FROM_DATABASE=MCP67 IDE Controller - -pci:v000010DEd00000560sv0000F043sd00008308* - ID_PRODUCT_FROM_DATABASE=M2N68-AM Motherboard - -pci:v000010DEd00000561* - ID_PRODUCT_FROM_DATABASE=MCP67 PCI Bridge - -pci:v000010DEd00000562* - ID_PRODUCT_FROM_DATABASE=MCP67 PCI Express Bridge - -pci:v000010DEd00000562sv00001849sd00000562* - ID_PRODUCT_FROM_DATABASE=ALiveNF7G-HDready - -pci:v000010DEd00000563* - ID_PRODUCT_FROM_DATABASE=MCP67 PCI Express Bridge - -pci:v000010DEd00000568* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller - -pci:v000010DEd00000568sv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd00000568sv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd00000568sv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd00000568sv00001849sd00000568* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Memory Controller - -pci:v000010DEd00000569* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge - -pci:v000010DEd00000569sv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd00000569sv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd00000569sv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd00000569sv00001849sd00000569* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Express Bridge - -pci:v000010DEd0000056A* - ID_PRODUCT_FROM_DATABASE=MCP73 [nForce 630i] USB 2.0 Controller (EHCI) - -pci:v000010DEd0000056Asv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd0000056C* - ID_PRODUCT_FROM_DATABASE=MCP73 IDE - -pci:v000010DEd0000056Csv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd0000056Csv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd0000056D* - ID_PRODUCT_FROM_DATABASE=MCP73 PCI Express bridge - -pci:v000010DEd0000056Dsv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd0000056E* - ID_PRODUCT_FROM_DATABASE=MCP73 PCI Express bridge - -pci:v000010DEd0000056Esv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd0000056F* - ID_PRODUCT_FROM_DATABASE=MCP73 PCI Express bridge - -pci:v000010DEd0000056Fsv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000005B1* - ID_PRODUCT_FROM_DATABASE=NF200 PCIe 2.0 switch - -pci:v000010DEd000005B8* - ID_PRODUCT_FROM_DATABASE=NF200 PCIe 2.0 switch for GTX 295 - -pci:v000010DEd000005BE* - ID_PRODUCT_FROM_DATABASE=NF200 PCIe 2.0 switch for Quadro Plex S4 / Tesla S870 / Tesla S1070 / Tesla S2050 - -pci:v000010DEd000005E0* - ID_PRODUCT_FROM_DATABASE=GT200b [GeForce GTX 295] - -pci:v000010DEd000005E1* - ID_PRODUCT_FROM_DATABASE=GT200 [GeForce GTX 280] - -pci:v000010DEd000005E2* - ID_PRODUCT_FROM_DATABASE=GT200 [GeForce GTX 260] - -pci:v000010DEd000005E3* - ID_PRODUCT_FROM_DATABASE=GT200b [GeForce GTX 285] - -pci:v000010DEd000005E6* - ID_PRODUCT_FROM_DATABASE=GT200b [GeForce GTX 275] - -pci:v000010DEd000005E7* - ID_PRODUCT_FROM_DATABASE=GT200 [Tesla C1060 / Tesla M1060] - -pci:v000010DEd000005EA* - ID_PRODUCT_FROM_DATABASE=GT200 [GeForce GTX 260] - -pci:v000010DEd000005EB* - ID_PRODUCT_FROM_DATABASE=GT200 [GeForce GTX 295] - -pci:v000010DEd000005ED* - ID_PRODUCT_FROM_DATABASE=GT200GL [Quadro Plex 2200 D2] - -pci:v000010DEd000005F1* - ID_PRODUCT_FROM_DATABASE=GT200 [GeForce GTX 280] - -pci:v000010DEd000005F2* - ID_PRODUCT_FROM_DATABASE=GT200 [GeForce GTX 260] - -pci:v000010DEd000005F8* - ID_PRODUCT_FROM_DATABASE=GT200GL [Quadro Plex 2200 S4] - -pci:v000010DEd000005F9* - ID_PRODUCT_FROM_DATABASE=GT200GL [Quadro CX] - -pci:v000010DEd000005FD* - ID_PRODUCT_FROM_DATABASE=GT200GL [Quadro FX 5800] - -pci:v000010DEd000005FE* - ID_PRODUCT_FROM_DATABASE=GT200GL [Quadro FX 4800] - -pci:v000010DEd000005FF* - ID_PRODUCT_FROM_DATABASE=GT200GL [NVIDIA Quadro FX 3800] - -pci:v000010DEd00000600* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 8800 GTS 512] - -pci:v000010DEd00000601* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 9800 GT] - -pci:v000010DEd00000602* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 8800 GT] - -pci:v000010DEd00000603* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce GT 230 OEM] - -pci:v000010DEd00000604* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 9800 GX2] - -pci:v000010DEd00000605* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 9800 GT] - -pci:v000010DEd00000606* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 8800 GS] - -pci:v000010DEd00000607* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce GTS 240] - -pci:v000010DEd00000608* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 9800M GTX] - -pci:v000010DEd00000609* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 8800M GTS] - -pci:v000010DEd0000060A* - ID_PRODUCT_FROM_DATABASE=GT200 [GeForce GTX 280M] - -pci:v000010DEd0000060B* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 9800M GT] - -pci:v000010DEd0000060C* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 8800M GTX] - -pci:v000010DEd0000060D* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 8800 GS] - -pci:v000010DEd0000060F* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce GTX 285M] - -pci:v000010DEd00000610* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 9600 GSO] - -pci:v000010DEd00000610sv00001682sd00002385* - ID_PRODUCT_FROM_DATABASE=GeForce 9600 GSO 768mb - -pci:v000010DEd00000611* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 8800 GT] - -pci:v000010DEd00000611sv0000107Dsd00002AB0* - ID_PRODUCT_FROM_DATABASE=Winfast PX8800 GT PCI-E - -pci:v000010DEd00000611sv000019DAsd00001040* - ID_PRODUCT_FROM_DATABASE=ZT-88TES2P-FSP - -pci:v000010DEd00000612* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 9800 GTX] - -pci:v000010DEd00000613* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 9800 GTX+] - -pci:v000010DEd00000614* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 9800 GT] - -pci:v000010DEd00000614sv0000107Dsd00002AB3* - ID_PRODUCT_FROM_DATABASE=WinFast PX9800 GT (S-Fanpipe) - -pci:v000010DEd00000615* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce GTS 250] - -pci:v000010DEd00000615sv00003842sd00001150* - ID_PRODUCT_FROM_DATABASE=GeForce GTS 250 P/N 512-P3-1150-TR - -pci:v000010DEd00000615sv00003842sd00001151* - ID_PRODUCT_FROM_DATABASE=GeForce GTS 250 P/N 512-P3-1151-TR - -pci:v000010DEd00000615sv00003842sd00001155* - ID_PRODUCT_FROM_DATABASE=GeForce GTS 250 P/N 01G-P3-1155-TR - -pci:v000010DEd00000615sv00003842sd00001156* - ID_PRODUCT_FROM_DATABASE=GeForce GTS 250 P/N 01G-P3-1156-TR - -pci:v000010DEd00000617* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce 9800M GTX] - -pci:v000010DEd00000618* - ID_PRODUCT_FROM_DATABASE=G92 [GeForce GTX 260M] - -pci:v000010DEd00000619* - ID_PRODUCT_FROM_DATABASE=G92GL [Quadro FX 4700 X2] - -pci:v000010DEd0000061A* - ID_PRODUCT_FROM_DATABASE=G92 [Quadro FX 3700] - -pci:v000010DEd0000061B* - ID_PRODUCT_FROM_DATABASE=G92GL [Quadro VX 200] - -pci:v000010DEd0000061C* - ID_PRODUCT_FROM_DATABASE=G92M [Quadro FX 3600M] - -pci:v000010DEd0000061D* - ID_PRODUCT_FROM_DATABASE=G92 [Quadro FX 2800M] - -pci:v000010DEd0000061E* - ID_PRODUCT_FROM_DATABASE=G92 [Quadro FX 3700M] - -pci:v000010DEd0000061F* - ID_PRODUCT_FROM_DATABASE=G92 [Quadro FX 3800M] - -pci:v000010DEd00000620* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9800 GT] - -pci:v000010DEd00000621* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce GT 230] - -pci:v000010DEd00000622* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GT] - -pci:v000010DEd00000622sv0000107Dsd00002AC1* - ID_PRODUCT_FROM_DATABASE=WinFast PX9600GT 1024MB - -pci:v000010DEd00000622sv00001458sd00003481* - ID_PRODUCT_FROM_DATABASE=GV-NX96T512HP - -pci:v000010DEd00000623* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GS] - -pci:v000010DEd00000624* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GT Green Edition] - -pci:v000010DEd00000625* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GSO 512] - -pci:v000010DEd00000626* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce GT 130] - -pci:v000010DEd00000627* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce GT 140] - -pci:v000010DEd00000628* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9800M GTS] - -pci:v000010DEd0000062A* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9700M GTS] - -pci:v000010DEd0000062B* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9800M GS] - -pci:v000010DEd0000062C* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9800M GTS] - -pci:v000010DEd0000062D* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GT] - -pci:v000010DEd0000062E* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GT] - -pci:v000010DEd0000062F* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9800 S] - -pci:v000010DEd00000630* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GT] - -pci:v000010DEd00000631* - ID_PRODUCT_FROM_DATABASE=G94M [GeForce GTS 160M] - -pci:v000010DEd00000632* - ID_PRODUCT_FROM_DATABASE=G94M [GeForce GTS 150M] - -pci:v000010DEd00000633* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce GT 220] - -pci:v000010DEd00000635* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GSO] - -pci:v000010DEd00000637* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GT] - -pci:v000010DEd00000638* - ID_PRODUCT_FROM_DATABASE=G94 [Quadro FX 1800] - -pci:v000010DEd0000063A* - ID_PRODUCT_FROM_DATABASE=G94M [Quadro FX 2700M] - -pci:v000010DEd0000063F* - ID_PRODUCT_FROM_DATABASE=G94 [GeForce 9600 GE] - -pci:v000010DEd00000640* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9500 GT] - -pci:v000010DEd00000641* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9400 GT] - -pci:v000010DEd00000643* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9500 GT] - -pci:v000010DEd00000644* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9500 GS] - -pci:v000010DEd00000645* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9500 GS] - -pci:v000010DEd00000646* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce GT 120] - -pci:v000010DEd00000647* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9600M GT] - -pci:v000010DEd00000648* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9600M GS] - -pci:v000010DEd00000649* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9600M GT] - -pci:v000010DEd0000064A* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9700M GT] - -pci:v000010DEd0000064B* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9500M G] - -pci:v000010DEd0000064C* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9650M GT] - -pci:v000010DEd0000064D* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9600 GT] - -pci:v000010DEd0000064E* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9600 GT / 9800 GT] - -pci:v000010DEd00000651* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce G 110M] - -pci:v000010DEd00000652* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce GT 130M] - -pci:v000010DEd00000653* - ID_PRODUCT_FROM_DATABASE=G96M [GeForce GT 120M] - -pci:v000010DEd00000654* - ID_PRODUCT_FROM_DATABASE=G96M [GeForce GT 220M] - -pci:v000010DEd00000655* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce GT 120] - -pci:v000010DEd00000656* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9650 S] - -pci:v000010DEd00000658* - ID_PRODUCT_FROM_DATABASE=G96 [Quadro FX 380] - -pci:v000010DEd00000659* - ID_PRODUCT_FROM_DATABASE=G96 [Quadro FX 580] - -pci:v000010DEd0000065A* - ID_PRODUCT_FROM_DATABASE=G96 [Quadro FX 1700M] - -pci:v000010DEd0000065B* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9400 GT] - -pci:v000010DEd0000065C* - ID_PRODUCT_FROM_DATABASE=G96M [Quadro FX 770M] - -pci:v000010DEd0000065D* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce 9500 GA / 9600 GT / GTS 250] - -pci:v000010DEd0000065F* - ID_PRODUCT_FROM_DATABASE=G96 [GeForce G210] - -pci:v000010DEd000006C0* - ID_PRODUCT_FROM_DATABASE=GF100 [GeForce GTX 480] - -pci:v000010DEd000006C4* - ID_PRODUCT_FROM_DATABASE=GF100 [GeForce GTX 465] - -pci:v000010DEd000006CA* - ID_PRODUCT_FROM_DATABASE=GF100 [GeForce GTX 480M] - -pci:v000010DEd000006CD* - ID_PRODUCT_FROM_DATABASE=GF100 [GeForce GTX 470] - -pci:v000010DEd000006D1* - ID_PRODUCT_FROM_DATABASE=GF100 [Tesla C2050 / C2070] - -pci:v000010DEd000006D1sv000010DEsd00000771* - ID_PRODUCT_FROM_DATABASE=Tesla C2050 - -pci:v000010DEd000006D1sv000010DEsd00000772* - ID_PRODUCT_FROM_DATABASE=Tesla C2070 - -pci:v000010DEd000006D2* - ID_PRODUCT_FROM_DATABASE=GF100 [Tesla M2070] - -pci:v000010DEd000006D2sv000010DEsd00000774* - ID_PRODUCT_FROM_DATABASE=Tesla M2070 - -pci:v000010DEd000006D2sv000010DEsd00000830* - ID_PRODUCT_FROM_DATABASE=Tesla M2070 - -pci:v000010DEd000006D2sv000010DEsd00000842* - ID_PRODUCT_FROM_DATABASE=Tesla M2070 - -pci:v000010DEd000006D2sv000010DEsd0000088F* - ID_PRODUCT_FROM_DATABASE=Tesla X2070 - -pci:v000010DEd000006D2sv000010DEsd00000908* - ID_PRODUCT_FROM_DATABASE=Tesla M2070 - -pci:v000010DEd000006D8* - ID_PRODUCT_FROM_DATABASE=GF100GL [Quadro 6000] - -pci:v000010DEd000006D9* - ID_PRODUCT_FROM_DATABASE=GF100GL [Quadro 5000] - -pci:v000010DEd000006DA* - ID_PRODUCT_FROM_DATABASE=GF100GLM [Quadro 5000M] - -pci:v000010DEd000006DC* - ID_PRODUCT_FROM_DATABASE=GF100GL [Quadro 6000] - -pci:v000010DEd000006DD* - ID_PRODUCT_FROM_DATABASE=GF100GL [Quadro 4000] - -pci:v000010DEd000006DE* - ID_PRODUCT_FROM_DATABASE=GF100 [Tesla T20 Processor] - -pci:v000010DEd000006DEsv000010DEsd00000773* - ID_PRODUCT_FROM_DATABASE=Tesla S2050 - -pci:v000010DEd000006DEsv000010DEsd0000082F* - ID_PRODUCT_FROM_DATABASE=Tesla M2050 - -pci:v000010DEd000006DEsv000010DEsd00000840* - ID_PRODUCT_FROM_DATABASE=Tesla X2070 - -pci:v000010DEd000006DEsv000010DEsd00000842* - ID_PRODUCT_FROM_DATABASE=Tesla M2050 - -pci:v000010DEd000006DEsv000010DEsd00000846* - ID_PRODUCT_FROM_DATABASE=Tesla M2050 - -pci:v000010DEd000006DEsv000010DEsd00000866* - ID_PRODUCT_FROM_DATABASE=Tesla M2050 - -pci:v000010DEd000006DEsv000010DEsd00000907* - ID_PRODUCT_FROM_DATABASE=Tesla M2050 - -pci:v000010DEd000006DEsv000010DEsd0000091E* - ID_PRODUCT_FROM_DATABASE=Tesla M2050 - -pci:v000010DEd000006DF* - ID_PRODUCT_FROM_DATABASE=GF100 [Tesla M2070-Q] - -pci:v000010DEd000006DFsv000010DEsd0000084D* - ID_PRODUCT_FROM_DATABASE=Tesla M2070-Q - -pci:v000010DEd000006DFsv000010DEsd0000087F* - ID_PRODUCT_FROM_DATABASE=Tesla M2070-Q - -pci:v000010DEd000006E0* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce 9300 GE] - -pci:v000010DEd000006E1* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce 9300 GS] - -pci:v000010DEd000006E2* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce 8400] - -pci:v000010DEd000006E3* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce 8300 GS] - -pci:v000010DEd000006E4* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce 8400 GS Rev. 2] - -pci:v000010DEd000006E4sv00001458sd00003475* - ID_PRODUCT_FROM_DATABASE=GV-NX84S256HE [GeForce 8400 GS] - -pci:v000010DEd000006E5* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce 9300M GS] - -pci:v000010DEd000006E6* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce G 100] - -pci:v000010DEd000006E7* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce 9300 SE] - -pci:v000010DEd000006E8* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce 9200M GS] - -pci:v000010DEd000006E9* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce 9300M GS] - -pci:v000010DEd000006E9sv00001043sd000019B2* - ID_PRODUCT_FROM_DATABASE=U6V laptop - -pci:v000010DEd000006EA* - ID_PRODUCT_FROM_DATABASE=G86M [Quadro NVS 150M] - -pci:v000010DEd000006EB* - ID_PRODUCT_FROM_DATABASE=G98M [Quadro NVS 160M] - -pci:v000010DEd000006EC* - ID_PRODUCT_FROM_DATABASE=G98M [GeForce G 105M] - -pci:v000010DEd000006ED* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce 9600 GT / 9800 GT]] - -pci:v000010DEd000006EE* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce 9600 GT / 9800 GT] - -pci:v000010DEd000006EF* - ID_PRODUCT_FROM_DATABASE=G98M [GeForce G 103M] - -pci:v000010DEd000006F1* - ID_PRODUCT_FROM_DATABASE=G98M [GeForce G 105M] - -pci:v000010DEd000006F8* - ID_PRODUCT_FROM_DATABASE=G98 [Quadro NVS 420] - -pci:v000010DEd000006F9* - ID_PRODUCT_FROM_DATABASE=G98 [Quadro FX 370 LP] - -pci:v000010DEd000006FA* - ID_PRODUCT_FROM_DATABASE=G98 [Quadro NVS 450] - -pci:v000010DEd000006FB* - ID_PRODUCT_FROM_DATABASE=G98 [Quadro FX 370M] - -pci:v000010DEd000006FD* - ID_PRODUCT_FROM_DATABASE=G98 [Quadro NVS 295] - -pci:v000010DEd000006FF* - ID_PRODUCT_FROM_DATABASE=G98 [HICx16 + Graphics] - -pci:v000010DEd000006FFsv000010DEsd00000711* - ID_PRODUCT_FROM_DATABASE=HICx8 + Graphics - -pci:v000010DEd00000751* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller - -pci:v000010DEd00000751sv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd00000751sv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd00000751sv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd00000751sv00001849sd00000751* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Memory Controller - -pci:v000010DEd00000752* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] SMBus - -pci:v000010DEd00000752sv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd00000752sv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd00000752sv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd00000752sv00001849sd00000752* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 SMBus - -pci:v000010DEd00000753* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] Co-Processor - -pci:v000010DEd00000753sv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd00000753sv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd00000753sv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd00000753sv00001849sd00000753* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Co-Processor - -pci:v000010DEd00000754* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] Memory Controller - -pci:v000010DEd00000754sv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd00000754sv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd00000754sv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd00000754sv00001849sd00000754* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Memory Controller - -pci:v000010DEd00000759* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] IDE - -pci:v000010DEd00000759sv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd00000759sv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd00000759sv00001849sd00000759* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 IDE - -pci:v000010DEd0000075A* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] PCI Bridge - -pci:v000010DEd0000075Asv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd0000075Asv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd0000075Asv00001849sd0000075A* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Bridge - -pci:v000010DEd0000075B* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge - -pci:v000010DEd0000075Bsv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd0000075Bsv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd0000075Bsv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd0000075Bsv00001849sd0000075B* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Express Bridge - -pci:v000010DEd0000075C* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] LPC Bridge - -pci:v000010DEd0000075Csv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd0000075Csv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd0000075Csv00001849sd0000075C* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 LPC Bridge - -pci:v000010DEd0000075D* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] LPC Bridge - -pci:v000010DEd0000075Dsv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd00000760* - ID_PRODUCT_FROM_DATABASE=MCP77 Ethernet - -pci:v000010DEd00000760sv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd00000760sv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd00000760sv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd00000760sv00001849sd00000760* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 Ethernet - -pci:v000010DEd00000761* - ID_PRODUCT_FROM_DATABASE=MCP77 Ethernet - -pci:v000010DEd00000762* - ID_PRODUCT_FROM_DATABASE=MCP77 Ethernet - -pci:v000010DEd00000763* - ID_PRODUCT_FROM_DATABASE=MCP77 Ethernet - -pci:v000010DEd00000774* - ID_PRODUCT_FROM_DATABASE=MCP72XE/MCP72P/MCP78U/MCP78S High Definition Audio - -pci:v000010DEd00000774sv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd00000774sv00001043sd000082FE* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd00000774sv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd00000774sv00001849sd00003662* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 High Definition Audio - -pci:v000010DEd00000778* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] PCI Express Bridge - -pci:v000010DEd00000778sv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd00000778sv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd00000778sv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd00000778sv00001849sd00000778* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Express Bridge - -pci:v000010DEd0000077A* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] PCI Bridge - -pci:v000010DEd0000077Asv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd0000077Asv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd0000077Asv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd0000077Asv00001849sd0000077A* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 PCI Bridge - -pci:v000010DEd0000077B* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] OHCI USB 1.1 Controller - -pci:v000010DEd0000077Bsv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd0000077Bsv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd0000077Bsv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd0000077Bsv00001849sd0000077B* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller - -pci:v000010DEd0000077C* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] EHCI USB 2.0 Controller - -pci:v000010DEd0000077Csv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd0000077Csv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd0000077Csv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd0000077Csv00001849sd0000077C* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller - -pci:v000010DEd0000077D* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] OHCI USB 1.1 Controller - -pci:v000010DEd0000077Dsv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd0000077Dsv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd0000077Dsv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd0000077Dsv00001849sd0000077D* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 OHCI USB 1.1 Controller - -pci:v000010DEd0000077E* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] EHCI USB 2.0 Controller - -pci:v000010DEd0000077Esv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd0000077Esv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd0000077Esv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd0000077Esv00001849sd0000077E* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 EHCI USB 2.0 Controller - -pci:v000010DEd000007C0* - ID_PRODUCT_FROM_DATABASE=MCP73 Host Bridge - -pci:v000010DEd000007C0sv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007C1* - ID_PRODUCT_FROM_DATABASE=MCP73 Host Bridge - -pci:v000010DEd000007C1sv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007C2* - ID_PRODUCT_FROM_DATABASE=MCP73 Host Bridge - -pci:v000010DEd000007C5* - ID_PRODUCT_FROM_DATABASE=MCP73 Host Bridge - -pci:v000010DEd000007C8* - ID_PRODUCT_FROM_DATABASE=MCP73 Memory Controller - -pci:v000010DEd000007C8sv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007C8sv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007CB* - ID_PRODUCT_FROM_DATABASE=nForce 630i memory controller - -pci:v000010DEd000007CBsv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007CBsv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007CD* - ID_PRODUCT_FROM_DATABASE=nForce 630i memory controller - -pci:v000010DEd000007CDsv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007CDsv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007CE* - ID_PRODUCT_FROM_DATABASE=nForce 630i memory controller - -pci:v000010DEd000007CEsv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007CEsv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007CF* - ID_PRODUCT_FROM_DATABASE=nForce 630i memory controller - -pci:v000010DEd000007CFsv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007CFsv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007D0* - ID_PRODUCT_FROM_DATABASE=nForce 630i memory controller - -pci:v000010DEd000007D0sv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007D0sv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007D1* - ID_PRODUCT_FROM_DATABASE=nForce 630i memory controller - -pci:v000010DEd000007D1sv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007D1sv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007D2* - ID_PRODUCT_FROM_DATABASE=nForce 630i memory controller - -pci:v000010DEd000007D2sv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007D2sv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007D3* - ID_PRODUCT_FROM_DATABASE=nForce 630i memory controller - -pci:v000010DEd000007D3sv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007D3sv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007D6* - ID_PRODUCT_FROM_DATABASE=nForce 630i memory controller - -pci:v000010DEd000007D6sv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007D6sv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007D7* - ID_PRODUCT_FROM_DATABASE=MCP73 LPC Bridge - -pci:v000010DEd000007D7sv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007D7sv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007D8* - ID_PRODUCT_FROM_DATABASE=MCP73 SMBus - -pci:v000010DEd000007D8sv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007D8sv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007D9* - ID_PRODUCT_FROM_DATABASE=MCP73 Memory Controller - -pci:v000010DEd000007D9sv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007D9sv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007DA* - ID_PRODUCT_FROM_DATABASE=MCP73 Co-processor - -pci:v000010DEd000007DAsv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007DC* - ID_PRODUCT_FROM_DATABASE=MCP73 Ethernet - -pci:v000010DEd000007DD* - ID_PRODUCT_FROM_DATABASE=MCP73 Ethernet - -pci:v000010DEd000007DE* - ID_PRODUCT_FROM_DATABASE=MCP73 Ethernet - -pci:v000010DEd000007DF* - ID_PRODUCT_FROM_DATABASE=MCP73 Ethernet - -pci:v000010DEd000007E0* - ID_PRODUCT_FROM_DATABASE=C73 [GeForce 7150 / nForce 630i] - -pci:v000010DEd000007E0sv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd000007E1* - ID_PRODUCT_FROM_DATABASE=C73 [GeForce 7100 / nForce 630i] - -pci:v000010DEd000007E1sv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007E2* - ID_PRODUCT_FROM_DATABASE=C73 [GeForce 7050 / nForce 630i] - -pci:v000010DEd000007E3* - ID_PRODUCT_FROM_DATABASE=C73 [GeForce 7050 / nForce 610i] - -pci:v000010DEd000007E5* - ID_PRODUCT_FROM_DATABASE=C73 [GeForce 7100 / nForce 620i] - -pci:v000010DEd000007F0* - ID_PRODUCT_FROM_DATABASE=MCP73 IDE - -pci:v000010DEd000007F4* - ID_PRODUCT_FROM_DATABASE=GeForce 7100/nForce 630i SATA - -pci:v000010DEd000007F4sv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007F8* - ID_PRODUCT_FROM_DATABASE=MCP73 SATA RAID Controller - -pci:v000010DEd000007FC* - ID_PRODUCT_FROM_DATABASE=MCP73 High Definition Audio - -pci:v000010DEd000007FCsv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007FCsv000010DEsd000007FC* - ID_PRODUCT_FROM_DATABASE=MCP73 High Definition Audio - -pci:v000010DEd000007FE* - ID_PRODUCT_FROM_DATABASE=GeForce 7100/nForce 630i USB - -pci:v000010DEd000007FEsv00001019sd0000297A* - ID_PRODUCT_FROM_DATABASE=MCP73PVT-SM - -pci:v000010DEd000007FEsv00001AFAsd00007150* - ID_PRODUCT_FROM_DATABASE=JW-IN7150-HD - -pci:v000010DEd00000844* - ID_PRODUCT_FROM_DATABASE=C77 [GeForce 9100M G] - -pci:v000010DEd00000845* - ID_PRODUCT_FROM_DATABASE=C77 [GeForce 8200M G] - -pci:v000010DEd00000846* - ID_PRODUCT_FROM_DATABASE=C77 [GeForce 9200] - -pci:v000010DEd00000847* - ID_PRODUCT_FROM_DATABASE=C78 [GeForce 9100] - -pci:v000010DEd00000847sv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd00000848* - ID_PRODUCT_FROM_DATABASE=C77 [GeForce 8300] - -pci:v000010DEd00000849* - ID_PRODUCT_FROM_DATABASE=C77 [GeForce 8200] - -pci:v000010DEd00000849sv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd00000849sv00001849sd00000849* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 GeForce 8200 - -pci:v000010DEd0000084A* - ID_PRODUCT_FROM_DATABASE=C77 [nForce 730a] - -pci:v000010DEd0000084B* - ID_PRODUCT_FROM_DATABASE=C77 [GeForce 8200] - -pci:v000010DEd0000084C* - ID_PRODUCT_FROM_DATABASE=C77 [nForce 780a/980a SLI] - -pci:v000010DEd0000084D* - ID_PRODUCT_FROM_DATABASE=C77 [nForce 750a SLI] - -pci:v000010DEd0000084Dsv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D mGPU - -pci:v000010DEd0000084F* - ID_PRODUCT_FROM_DATABASE=C77 [GeForce 8100 / nForce 720a] - -pci:v000010DEd00000860* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9300] - -pci:v000010DEd00000861* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9400] - -pci:v000010DEd00000862* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9400M G] - -pci:v000010DEd00000863* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9400M] - -pci:v000010DEd00000864* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9300] - -pci:v000010DEd00000865* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9300/ION] - -pci:v000010DEd00000866* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9400M G] - -pci:v000010DEd00000867* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9400] - -pci:v000010DEd00000867sv0000106Bsd000000AD* - ID_PRODUCT_FROM_DATABASE=iMac 9,1 - -pci:v000010DEd00000868* - ID_PRODUCT_FROM_DATABASE=C79 [nForce 760i SLI] - -pci:v000010DEd00000869* - ID_PRODUCT_FROM_DATABASE=MCP7A [GeForce 9400] - -pci:v000010DEd0000086A* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9400] - -pci:v000010DEd0000086C* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9300 / nForce 730i] - -pci:v000010DEd0000086D* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9200] - -pci:v000010DEd0000086E* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9100M G] - -pci:v000010DEd0000086F* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9200M G] - -pci:v000010DEd00000870* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9400M] - -pci:v000010DEd00000871* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9200] - -pci:v000010DEd00000872* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce G102M] - -pci:v000010DEd00000873* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce G102M] - -pci:v000010DEd00000874* - ID_PRODUCT_FROM_DATABASE=C79 [ION] - -pci:v000010DEd00000876* - ID_PRODUCT_FROM_DATABASE=ION VGA [GeForce 9400M] - -pci:v000010DEd0000087A* - ID_PRODUCT_FROM_DATABASE=C79 [GeForce 9400] - -pci:v000010DEd0000087D* - ID_PRODUCT_FROM_DATABASE=ION VGA - -pci:v000010DEd0000087Dsv000019DAsd0000A123* - ID_PRODUCT_FROM_DATABASE=IONITX-F-E - -pci:v000010DEd0000087E* - ID_PRODUCT_FROM_DATABASE=ION LE VGA - -pci:v000010DEd0000087F* - ID_PRODUCT_FROM_DATABASE=ION LE VGA - -pci:v000010DEd000008A2* - ID_PRODUCT_FROM_DATABASE=MCP89 [GeForce 320M] - -pci:v000010DEd000008A3* - ID_PRODUCT_FROM_DATABASE=MCP89 [GeForce 320M] - -pci:v000010DEd000008A4* - ID_PRODUCT_FROM_DATABASE=MCP89 [GeForce 320M] - -pci:v000010DEd00000A20* - ID_PRODUCT_FROM_DATABASE=GT216 [GeForce GT 220] - -pci:v000010DEd00000A20sv00001043sd00008311* - ID_PRODUCT_FROM_DATABASE=ENGT220/DI/1GD3(LP)/V2 - -pci:v000010DEd00000A21* - ID_PRODUCT_FROM_DATABASE=GT216M [GeForce GT 330M] - -pci:v000010DEd00000A22* - ID_PRODUCT_FROM_DATABASE=GT216 [GeForce 315] - -pci:v000010DEd00000A23* - ID_PRODUCT_FROM_DATABASE=GT216 [GeForce 210] - -pci:v000010DEd00000A26* - ID_PRODUCT_FROM_DATABASE=GT216 [GeForce 405] - -pci:v000010DEd00000A27* - ID_PRODUCT_FROM_DATABASE=GT216 [GeForce 405] - -pci:v000010DEd00000A28* - ID_PRODUCT_FROM_DATABASE=GT216 [GeForce GT 230M] - -pci:v000010DEd00000A29* - ID_PRODUCT_FROM_DATABASE=GT216 [GeForce GT 330M] - -pci:v000010DEd00000A2A* - ID_PRODUCT_FROM_DATABASE=GT216 [GeForce GT 230M] - -pci:v000010DEd00000A2B* - ID_PRODUCT_FROM_DATABASE=GT216 [GeForce GT 330M] - -pci:v000010DEd00000A2C* - ID_PRODUCT_FROM_DATABASE=GT216 [NVS 5100M] - -pci:v000010DEd00000A2D* - ID_PRODUCT_FROM_DATABASE=GT216 [GeForce GT 320M] - -pci:v000010DEd00000A30* - ID_PRODUCT_FROM_DATABASE=GT216 [GeForce 505] - -pci:v000010DEd00000A32* - ID_PRODUCT_FROM_DATABASE=GT216 [GeForce GT 415] - -pci:v000010DEd00000A34* - ID_PRODUCT_FROM_DATABASE=GT216 [GeForce GT 240M] - -pci:v000010DEd00000A35* - ID_PRODUCT_FROM_DATABASE=GT216 [GeForce GT 325M] - -pci:v000010DEd00000A38* - ID_PRODUCT_FROM_DATABASE=GT216GL [Quadro 400] - -pci:v000010DEd00000A3C* - ID_PRODUCT_FROM_DATABASE=GT216 [Quadro FX 880M] - -pci:v000010DEd00000A60* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce G210] - -pci:v000010DEd00000A62* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 205] - -pci:v000010DEd00000A63* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 310] - -pci:v000010DEd00000A64* - ID_PRODUCT_FROM_DATABASE=GT218 [ION] - -pci:v000010DEd00000A65* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 210] - -pci:v000010DEd00000A65sv00001043sd00008334* - ID_PRODUCT_FROM_DATABASE=EN210 SILENT - -pci:v000010DEd00000A66* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 310] - -pci:v000010DEd00000A67* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 315] - -pci:v000010DEd00000A68* - ID_PRODUCT_FROM_DATABASE=GT218M [GeForce G 105M] - -pci:v000010DEd00000A69* - ID_PRODUCT_FROM_DATABASE=GT218M [GeForce G 105M] - -pci:v000010DEd00000A6A* - ID_PRODUCT_FROM_DATABASE=GT218 [NVS 2100M] - -pci:v000010DEd00000A6C* - ID_PRODUCT_FROM_DATABASE=GT218 [NVS 3100M] - -pci:v000010DEd00000A6Csv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v000010DEd00000A6Csv000017AAsd00002142* - ID_PRODUCT_FROM_DATABASE=ThinkPad T410 - -pci:v000010DEd00000A6E* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 305M] - -pci:v000010DEd00000A6F* - ID_PRODUCT_FROM_DATABASE=GT218 [ION] - -pci:v000010DEd00000A70* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 310M] - -pci:v000010DEd00000A71* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 305M] - -pci:v000010DEd00000A72* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 310M] - -pci:v000010DEd00000A73* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 305M] - -pci:v000010DEd00000A74* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce G210M] - -pci:v000010DEd00000A75* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 310M] - -pci:v000010DEd00000A76* - ID_PRODUCT_FROM_DATABASE=GT218 [ION 2] - -pci:v000010DEd00000A78* - ID_PRODUCT_FROM_DATABASE=GT218GL [Quadro FX 380 LP] - -pci:v000010DEd00000A7A* - ID_PRODUCT_FROM_DATABASE=GT218M [GeForce 315M] - -pci:v000010DEd00000A7B* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 505] - -pci:v000010DEd00000A7C* - ID_PRODUCT_FROM_DATABASE=GT218 [Quadro FX 380M] - -pci:v000010DEd00000A80* - ID_PRODUCT_FROM_DATABASE=MCP79 Host Bridge - -pci:v000010DEd00000A81* - ID_PRODUCT_FROM_DATABASE=MCP79 Host Bridge - -pci:v000010DEd00000A82* - ID_PRODUCT_FROM_DATABASE=MCP79 Host Bridge - -pci:v000010DEd00000A83* - ID_PRODUCT_FROM_DATABASE=MCP79 Host Bridge - -pci:v000010DEd00000A84* - ID_PRODUCT_FROM_DATABASE=MCP79 Host Bridge - -pci:v000010DEd00000A85* - ID_PRODUCT_FROM_DATABASE=MCP79 Host Bridge - -pci:v000010DEd00000A86* - ID_PRODUCT_FROM_DATABASE=MCP79 Host Bridge - -pci:v000010DEd00000A87* - ID_PRODUCT_FROM_DATABASE=MCP79 Host Bridge - -pci:v000010DEd00000A88* - ID_PRODUCT_FROM_DATABASE=MCP79 Memory Controller - -pci:v000010DEd00000A89* - ID_PRODUCT_FROM_DATABASE=MCP79 Memory Controller - -pci:v000010DEd00000A98* - ID_PRODUCT_FROM_DATABASE=MCP79 Memory Controller - -pci:v000010DEd00000A98sv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=iMac 9,1 - -pci:v000010DEd00000AA0* - ID_PRODUCT_FROM_DATABASE=MCP79 PCI Express Bridge - -pci:v000010DEd00000AA0sv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000AA2* - ID_PRODUCT_FROM_DATABASE=MCP79 SMBus - -pci:v000010DEd00000AA2sv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000AA2sv000019DAsd0000A123* - ID_PRODUCT_FROM_DATABASE=IONITX-F-E - -pci:v000010DEd00000AA3* - ID_PRODUCT_FROM_DATABASE=MCP79 Co-processor - -pci:v000010DEd00000AA3sv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000AA3sv000019DAsd0000A123* - ID_PRODUCT_FROM_DATABASE=IONITX-F-E - -pci:v000010DEd00000AA4* - ID_PRODUCT_FROM_DATABASE=MCP79 Memory Controller - -pci:v000010DEd00000AA4sv000019DAsd0000A123* - ID_PRODUCT_FROM_DATABASE=IONITX-F-E - -pci:v000010DEd00000AA5* - ID_PRODUCT_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller - -pci:v000010DEd00000AA5sv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000AA5sv000019DAsd0000A123* - ID_PRODUCT_FROM_DATABASE=IONITX-F-E - -pci:v000010DEd00000AA6* - ID_PRODUCT_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller - -pci:v000010DEd00000AA6sv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000AA6sv000019DAsd0000A123* - ID_PRODUCT_FROM_DATABASE=IONITX-F-E - -pci:v000010DEd00000AA7* - ID_PRODUCT_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller - -pci:v000010DEd00000AA7sv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000AA7sv000019DAsd0000A123* - ID_PRODUCT_FROM_DATABASE=IONITX-F-E - -pci:v000010DEd00000AA8* - ID_PRODUCT_FROM_DATABASE=MCP79 OHCI USB 1.1 Controller - -pci:v000010DEd00000AA9* - ID_PRODUCT_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller - -pci:v000010DEd00000AA9sv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000AA9sv000019DAsd0000A123* - ID_PRODUCT_FROM_DATABASE=IONITX-F-E - -pci:v000010DEd00000AAA* - ID_PRODUCT_FROM_DATABASE=MCP79 EHCI USB 2.0 Controller - -pci:v000010DEd00000AAB* - ID_PRODUCT_FROM_DATABASE=MCP79 PCI Bridge - -pci:v000010DEd00000AABsv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000AAC* - ID_PRODUCT_FROM_DATABASE=MCP79 LPC Bridge - -pci:v000010DEd00000AAD* - ID_PRODUCT_FROM_DATABASE=MCP79 LPC Bridge - -pci:v000010DEd00000AADsv000019DAsd0000A123* - ID_PRODUCT_FROM_DATABASE=IONITX-F-E - -pci:v000010DEd00000AAE* - ID_PRODUCT_FROM_DATABASE=MCP79 LPC Bridge - -pci:v000010DEd00000AAEsv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000AAF* - ID_PRODUCT_FROM_DATABASE=MCP79 LPC Bridge - -pci:v000010DEd00000AB0* - ID_PRODUCT_FROM_DATABASE=MCP79 Ethernet - -pci:v000010DEd00000AB0sv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000AB0sv000019DAsd0000A123* - ID_PRODUCT_FROM_DATABASE=IONITX-F-E - -pci:v000010DEd00000AB1* - ID_PRODUCT_FROM_DATABASE=MCP79 Ethernet - -pci:v000010DEd00000AB2* - ID_PRODUCT_FROM_DATABASE=MCP79 Ethernet - -pci:v000010DEd00000AB3* - ID_PRODUCT_FROM_DATABASE=MCP79 Ethernet - -pci:v000010DEd00000AB4* - ID_PRODUCT_FROM_DATABASE=MCP79 SATA Controller - -pci:v000010DEd00000AB4sv000019DAsd0000A123* - ID_PRODUCT_FROM_DATABASE=IONITX-F-E - -pci:v000010DEd00000AB5* - ID_PRODUCT_FROM_DATABASE=MCP79 SATA Controller - -pci:v000010DEd00000AB6* - ID_PRODUCT_FROM_DATABASE=MCP79 SATA Controller - -pci:v000010DEd00000AB7* - ID_PRODUCT_FROM_DATABASE=MCP79 SATA Controller - -pci:v000010DEd00000AB8* - ID_PRODUCT_FROM_DATABASE=MCP79 AHCI Controller - -pci:v000010DEd00000AB9* - ID_PRODUCT_FROM_DATABASE=MCP79 AHCI Controller - -pci:v000010DEd00000AB9sv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000ABA* - ID_PRODUCT_FROM_DATABASE=MCP79 AHCI Controller - -pci:v000010DEd00000ABB* - ID_PRODUCT_FROM_DATABASE=MCP79 AHCI Controller - -pci:v000010DEd00000ABC* - ID_PRODUCT_FROM_DATABASE=MCP79 RAID Controller - -pci:v000010DEd00000ABD* - ID_PRODUCT_FROM_DATABASE=MCP79 RAID Controller - -pci:v000010DEd00000ABE* - ID_PRODUCT_FROM_DATABASE=MCP79 RAID Controller - -pci:v000010DEd00000ABF* - ID_PRODUCT_FROM_DATABASE=MCP79 RAID Controller - -pci:v000010DEd00000AC0* - ID_PRODUCT_FROM_DATABASE=MCP79 High Definition Audio - -pci:v000010DEd00000AC0sv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000AC1* - ID_PRODUCT_FROM_DATABASE=MCP79 High Definition Audio - -pci:v000010DEd00000AC2* - ID_PRODUCT_FROM_DATABASE=MCP79 High Definition Audio - -pci:v000010DEd00000AC3* - ID_PRODUCT_FROM_DATABASE=MCP79 High Definition Audio - -pci:v000010DEd00000AC4* - ID_PRODUCT_FROM_DATABASE=MCP79 PCI Express Bridge - -pci:v000010DEd00000AC4sv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000AC5* - ID_PRODUCT_FROM_DATABASE=MCP79 PCI Express Bridge - -pci:v000010DEd00000AC6* - ID_PRODUCT_FROM_DATABASE=MCP79 PCI Express Bridge - -pci:v000010DEd00000AC6sv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000AC7* - ID_PRODUCT_FROM_DATABASE=MCP79 PCI Express Bridge - -pci:v000010DEd00000AC7sv000010DEsd0000CB79* - ID_PRODUCT_FROM_DATABASE=Apple iMac 9,1 - -pci:v000010DEd00000AC8* - ID_PRODUCT_FROM_DATABASE=MCP79 PCI Express Bridge - -pci:v000010DEd00000AD0* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] SATA Controller (non-AHCI mode) - -pci:v000010DEd00000AD0sv00001462sd00007508* - ID_PRODUCT_FROM_DATABASE=K9N2GM-FIH - -pci:v000010DEd00000AD0sv00001849sd00000AD0* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 IDE - -pci:v000010DEd00000AD4* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] AHCI Controller - -pci:v000010DEd00000AD4sv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000010DEd00000AD4sv00001043sd000082E8* - ID_PRODUCT_FROM_DATABASE=M3N72-D - -pci:v000010DEd00000AD4sv00001849sd00000AD4* - ID_PRODUCT_FROM_DATABASE=K10N78FullHD-hSLI R3.0 AHCI Controller - -pci:v000010DEd00000AD8* - ID_PRODUCT_FROM_DATABASE=MCP78S [GeForce 8200] SATA Controller (RAID mode) - -pci:v000010DEd00000BE2* - ID_PRODUCT_FROM_DATABASE=High Definition Audio Controller - -pci:v000010DEd00000BE2sv00001043sd00008311* - ID_PRODUCT_FROM_DATABASE=ENGT220/DI/1GD3(LP)/V2 - -pci:v000010DEd00000BE3* - ID_PRODUCT_FROM_DATABASE=High Definition Audio Controller - -pci:v000010DEd00000BE3sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v000010DEd00000BE3sv000010DEsd0000066D* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce 8400GS] - -pci:v000010DEd00000BE4* - ID_PRODUCT_FROM_DATABASE=High Definition Audio Controller - -pci:v000010DEd00000BE5* - ID_PRODUCT_FROM_DATABASE=GF100 High Definition Audio Controller - -pci:v000010DEd00000BE9* - ID_PRODUCT_FROM_DATABASE=GF106 High Definition Audio Controller - -pci:v000010DEd00000BE9sv00001558sd00008687* - ID_PRODUCT_FROM_DATABASE=CLEVO/KAPOK W860CU - -pci:v000010DEd00000BE9sv00003842sd00001452* - ID_PRODUCT_FROM_DATABASE=GeForce GTS 450 - -pci:v000010DEd00000BEA* - ID_PRODUCT_FROM_DATABASE=GF108 High Definition Audio Controller - -pci:v000010DEd00000BEAsv00003842sd00001430* - ID_PRODUCT_FROM_DATABASE=GeForce GT 430 - -pci:v000010DEd00000BEB* - ID_PRODUCT_FROM_DATABASE=GF104 High Definition Audio Controller - -pci:v000010DEd00000BEBsv00001462sd00002322* - ID_PRODUCT_FROM_DATABASE=N460GTX Cyclone 1GD5/OC - -pci:v000010DEd00000BEE* - ID_PRODUCT_FROM_DATABASE=GF116 High Definition Audio Controller - -pci:v000010DEd00000CA0* - ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GT 330] - -pci:v000010DEd00000CA2* - ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GT 320] - -pci:v000010DEd00000CA3* - ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GT 240] - -pci:v000010DEd00000CA4* - ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GT 340] - -pci:v000010DEd00000CA5* - ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GT 220] - -pci:v000010DEd00000CA7* - ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GT 330] - -pci:v000010DEd00000CA8* - ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GTS 260M] - -pci:v000010DEd00000CA9* - ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GTS 250M] - -pci:v000010DEd00000CAC* - ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GT 220/315] - -pci:v000010DEd00000CAF* - ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GT 335M] - -pci:v000010DEd00000CB0* - ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GTS 350M] - -pci:v000010DEd00000CB1* - ID_PRODUCT_FROM_DATABASE=GT215 [GeForce GTS 360M] - -pci:v000010DEd00000CBC* - ID_PRODUCT_FROM_DATABASE=GT215 [Quadro FX 1800M] - -pci:v000010DEd00000D60* - ID_PRODUCT_FROM_DATABASE=MCP89 HOST Bridge - -pci:v000010DEd00000D68* - ID_PRODUCT_FROM_DATABASE=MCP89 Memory Controller - -pci:v000010DEd00000D69* - ID_PRODUCT_FROM_DATABASE=MCP89 Memory Controller - -pci:v000010DEd00000D76* - ID_PRODUCT_FROM_DATABASE=MCP89 PCI Express Bridge - -pci:v000010DEd00000D79* - ID_PRODUCT_FROM_DATABASE=MCP89 SMBus - -pci:v000010DEd00000D7A* - ID_PRODUCT_FROM_DATABASE=MCP89 Co-Processor - -pci:v000010DEd00000D7B* - ID_PRODUCT_FROM_DATABASE=MCP89 Memory Controller - -pci:v000010DEd00000D7D* - ID_PRODUCT_FROM_DATABASE=MCP89 Ethernet - -pci:v000010DEd00000D80* - ID_PRODUCT_FROM_DATABASE=MCP89 LPC Bridge - -pci:v000010DEd00000D85* - ID_PRODUCT_FROM_DATABASE=MCP89 SATA Controller - -pci:v000010DEd00000D88* - ID_PRODUCT_FROM_DATABASE=MCP89 SATA Controller (AHCI mode) - -pci:v000010DEd00000D89* - ID_PRODUCT_FROM_DATABASE=MCP89 SATA Controller (AHCI mode) - -pci:v000010DEd00000D8D* - ID_PRODUCT_FROM_DATABASE=MCP89 SATA Controller (RAID mode) - -pci:v000010DEd00000D94* - ID_PRODUCT_FROM_DATABASE=MCP89 High Definition Audio - -pci:v000010DEd00000D9C* - ID_PRODUCT_FROM_DATABASE=MCP89 OHCI USB 1.1 Controller - -pci:v000010DEd00000D9D* - ID_PRODUCT_FROM_DATABASE=MCP89 EHCI USB 2.0 Controller - -pci:v000010DEd00000DC0* - ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GT 440] - -pci:v000010DEd00000DC4* - ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GTS 450] - -pci:v000010DEd00000DC5* - ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GTS 450 OEM] - -pci:v000010DEd00000DC6* - ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GTS 450] - -pci:v000010DEd00000DCD* - ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GT 555M] - -pci:v000010DEd00000DCE* - ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GT 555M] - -pci:v000010DEd00000DD1* - ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GTX 460M] - -pci:v000010DEd00000DD1sv00001558sd00008687* - ID_PRODUCT_FROM_DATABASE=CLEVO/KAPOK W860CU - -pci:v000010DEd00000DD2* - ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GT 445M] - -pci:v000010DEd00000DD3* - ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GT 435M] - -pci:v000010DEd00000DD6* - ID_PRODUCT_FROM_DATABASE=GF106 [GeForce GT 550M] - -pci:v000010DEd00000DD8* - ID_PRODUCT_FROM_DATABASE=GF106GL [Quadro 2000] - -pci:v000010DEd00000DD8sv000010DEsd00000914* - ID_PRODUCT_FROM_DATABASE=Quadro 2000D - -pci:v000010DEd00000DDA* - ID_PRODUCT_FROM_DATABASE=GF106GLM [Quadro 2000M] - -pci:v000010DEd00000DE0* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 440] - -pci:v000010DEd00000DE1* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 430] - -pci:v000010DEd00000DE1sv00003842sd00001430* - ID_PRODUCT_FROM_DATABASE=GeForce GT 430 - -pci:v000010DEd00000DE2* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 420] - -pci:v000010DEd00000DE3* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 635M] - -pci:v000010DEd00000DE4* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 520] - -pci:v000010DEd00000DE5* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 530] - -pci:v000010DEd00000DE8* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 620M] - -pci:v000010DEd00000DE9* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 630M] - -pci:v000010DEd00000DEA* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce 610M] - -pci:v000010DEd00000DEAsv000017AAsd0000365A* - ID_PRODUCT_FROM_DATABASE=GeForce 615 - -pci:v000010DEd00000DEAsv000017AAsd0000365B* - ID_PRODUCT_FROM_DATABASE=GeForce 615 - -pci:v000010DEd00000DEAsv000017AAsd0000365E* - ID_PRODUCT_FROM_DATABASE=GeForce 615 - -pci:v000010DEd00000DEAsv000017AAsd00003660* - ID_PRODUCT_FROM_DATABASE=GeForce 615 - -pci:v000010DEd00000DEAsv000017AAsd0000366C* - ID_PRODUCT_FROM_DATABASE=GeForce 615 - -pci:v000010DEd00000DEB* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 555M] - -pci:v000010DEd00000DEC* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 525M] - -pci:v000010DEd00000DED* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 520M] - -pci:v000010DEd00000DEE* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 415M] - -pci:v000010DEd00000DEF* - ID_PRODUCT_FROM_DATABASE=GF108 [Quadro NVS 5400M] - -pci:v000010DEd00000DF0* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 425M] - -pci:v000010DEd00000DF1* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 420M] - -pci:v000010DEd00000DF2* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 435M] - -pci:v000010DEd00000DF3* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 420M] - -pci:v000010DEd00000DF4* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 540M] - -pci:v000010DEd00000DF5* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 525M] - -pci:v000010DEd00000DF6* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 550M] - -pci:v000010DEd00000DF7* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 520M] - -pci:v000010DEd00000DF8* - ID_PRODUCT_FROM_DATABASE=GF108GL [Quadro 600] - -pci:v000010DEd00000DF9* - ID_PRODUCT_FROM_DATABASE=GF108GLM [Quadro 500M] - -pci:v000010DEd00000DFA* - ID_PRODUCT_FROM_DATABASE=GF108GLM [Quadro 1000M] - -pci:v000010DEd00000DFC* - ID_PRODUCT_FROM_DATABASE=GF108GLM [NVS 5200M] - -pci:v000010DEd00000E08* - ID_PRODUCT_FROM_DATABASE=GF119 HDMI Audio Controller - -pci:v000010DEd00000E08sv000010B0sd0000104A* - ID_PRODUCT_FROM_DATABASE=Gainward GeForce GT 610 - -pci:v000010DEd00000E09* - ID_PRODUCT_FROM_DATABASE=GF110 High Definition Audio Controller - -pci:v000010DEd00000E0A* - ID_PRODUCT_FROM_DATABASE=GK104 HDMI Audio Controller - -pci:v000010DEd00000E0C* - ID_PRODUCT_FROM_DATABASE=GF114 HDMI Audio Controller - -pci:v000010DEd00000E1A* - ID_PRODUCT_FROM_DATABASE=GK110 HDMI Audio [GeForce GTX Titan] - -pci:v000010DEd00000E1B* - ID_PRODUCT_FROM_DATABASE=GK107 HDMI Audio Controller - -pci:v000010DEd00000E1Bsv00001043sd00008428* - ID_PRODUCT_FROM_DATABASE=GTX650-DC-1GD5 - -pci:v000010DEd00000E22* - ID_PRODUCT_FROM_DATABASE=GF104 [GeForce GTX 460] - -pci:v000010DEd00000E22sv00001462sd00002322* - ID_PRODUCT_FROM_DATABASE=N460GTX Cyclone 1GD5/OC - -pci:v000010DEd00000E23* - ID_PRODUCT_FROM_DATABASE=GF104 [GeForce GTX 460 SE] - -pci:v000010DEd00000E24* - ID_PRODUCT_FROM_DATABASE=GF104 [GeForce GTX 460 OEM] - -pci:v000010DEd00000E30* - ID_PRODUCT_FROM_DATABASE=GF104 [GeForce GTX 470M] - -pci:v000010DEd00000E31* - ID_PRODUCT_FROM_DATABASE=GF104 [GeForce GTX 485M] - -pci:v000010DEd00000E3A* - ID_PRODUCT_FROM_DATABASE=GF104 [Quadro 3000M] - -pci:v000010DEd00000E3B* - ID_PRODUCT_FROM_DATABASE=GF104 [Quadro 4000M] - -pci:v000010DEd00000F00* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 630] - -pci:v000010DEd00000F01* - ID_PRODUCT_FROM_DATABASE=GF108 [GeForce GT 620] - -pci:v000010DEd00000FC0* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 640 OEM] - -pci:v000010DEd00000FC1* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 640] - -pci:v000010DEd00000FC2* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 630 OEM] - -pci:v000010DEd00000FC6* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GTX 650] - -pci:v000010DEd00000FC6sv00001043sd00008428* - ID_PRODUCT_FROM_DATABASE=GTX650-DC-1GD5 - -pci:v000010DEd00000FD1* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 650M] - -pci:v000010DEd00000FD1sv00001043sd00002103* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v000010DEd00000FD2* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 640M] - -pci:v000010DEd00000FD3* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 640M LE] - -pci:v000010DEd00000FD4* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GTX 660M] - -pci:v000010DEd00000FD5* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 650M Mac Edition] - -pci:v000010DEd00000FD8* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 640M Mac Edition] - -pci:v000010DEd00000FD9* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 645M] - -pci:v000010DEd00000FE1* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 730M] - -pci:v000010DEd00000FE4* - ID_PRODUCT_FROM_DATABASE=GK107 [GeForce GT 750M] - -pci:v000010DEd00000FF2* - ID_PRODUCT_FROM_DATABASE=GK107 [GRID K1] - -pci:v000010DEd00000FF9* - ID_PRODUCT_FROM_DATABASE=GK107 [Quadro K2000D] - -pci:v000010DEd00000FFA* - ID_PRODUCT_FROM_DATABASE=GK107 [Quadro K600] - -pci:v000010DEd00000FFB* - ID_PRODUCT_FROM_DATABASE=GK107 [Quadro K2000M] - -pci:v000010DEd00000FFC* - ID_PRODUCT_FROM_DATABASE=GK107 [Quadro K1000M] - -pci:v000010DEd00000FFD* - ID_PRODUCT_FROM_DATABASE=GK107 [NVS 510] - -pci:v000010DEd00000FFE* - ID_PRODUCT_FROM_DATABASE=GK107 [Quadro K2000] - -pci:v000010DEd00000FFF* - ID_PRODUCT_FROM_DATABASE=GK107 [Quadro 410] - -pci:v000010DEd00001005* - ID_PRODUCT_FROM_DATABASE=GK110 [GeForce GTX Titan] - -pci:v000010DEd00001005sv00001043sd00008451* - ID_PRODUCT_FROM_DATABASE=GTXTITAN-6GD5 - -pci:v000010DEd00001005sv000010DEsd00001035* - ID_PRODUCT_FROM_DATABASE=GeForce GTX Titan - -pci:v000010DEd00001005sv00003842sd00002790* - ID_PRODUCT_FROM_DATABASE=GeForce GTX Titan - -pci:v000010DEd00001005sv00003842sd00002791* - ID_PRODUCT_FROM_DATABASE=GeForce GTX Titan SC - -pci:v000010DEd00001005sv00003842sd00002793* - ID_PRODUCT_FROM_DATABASE=GeForce GTX Titan SC Signature - -pci:v000010DEd00001005sv00003842sd00002794* - ID_PRODUCT_FROM_DATABASE=GeForce GTX Titan SC Hydro Copper - -pci:v000010DEd00001005sv00003842sd00002795* - ID_PRODUCT_FROM_DATABASE=GeForce GTX Titan SC Hydro Copper Signature - -pci:v000010DEd00001021* - ID_PRODUCT_FROM_DATABASE=GK110 [Tesla K20Xm] - -pci:v000010DEd00001022* - ID_PRODUCT_FROM_DATABASE=GK110 [Tesla K20c] - -pci:v000010DEd00001026* - ID_PRODUCT_FROM_DATABASE=GK110 [Tesla K20s] - -pci:v000010DEd00001028* - ID_PRODUCT_FROM_DATABASE=GK110 [Tesla K20m] - -pci:v000010DEd00001040* - ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 520] - -pci:v000010DEd00001042* - ID_PRODUCT_FROM_DATABASE=GF119 [GeForce 510] - -pci:v000010DEd00001048* - ID_PRODUCT_FROM_DATABASE=GF119 [GeForce 605] - -pci:v000010DEd00001049* - ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 620 OEM] - -pci:v000010DEd0000104A* - ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 610] - -pci:v000010DEd0000104Asv000010B0sd0000104A* - ID_PRODUCT_FROM_DATABASE=Gainward GeForce GT 610 - -pci:v000010DEd0000104B* - ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 625 OEM] - -pci:v000010DEd00001050* - ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 520M] - -pci:v000010DEd00001051* - ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 520MX] - -pci:v000010DEd00001052* - ID_PRODUCT_FROM_DATABASE=GF119 [GeForce GT 520M] - -pci:v000010DEd00001054* - ID_PRODUCT_FROM_DATABASE=GF119 [GeForce 410M] - -pci:v000010DEd00001055* - ID_PRODUCT_FROM_DATABASE=GF119 [GeForce 410M] - -pci:v000010DEd00001056* - ID_PRODUCT_FROM_DATABASE=GF119 [Quadro NVS 4200M] - -pci:v000010DEd00001057* - ID_PRODUCT_FROM_DATABASE=GF119 [Quadro NVS 4200M] - -pci:v000010DEd00001058* - ID_PRODUCT_FROM_DATABASE=GF119 [GeForce 610M] - -pci:v000010DEd0000105A* - ID_PRODUCT_FROM_DATABASE=GF119 [GeForce 610M] - -pci:v000010DEd0000107D* - ID_PRODUCT_FROM_DATABASE=GF119 [NVS 310] - -pci:v000010DEd00001080* - ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 580] - -pci:v000010DEd00001081* - ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 570] - -pci:v000010DEd00001081sv000010DEsd0000087E* - ID_PRODUCT_FROM_DATABASE=Leadtek WinFast GTX 570 - -pci:v000010DEd00001082* - ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 560 Ti OEM] - -pci:v000010DEd00001084* - ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 560 OEM] - -pci:v000010DEd00001086* - ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 570 Rev. 2] - -pci:v000010DEd00001087* - ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 560 Ti 448 Cores] - -pci:v000010DEd00001088* - ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 590] - -pci:v000010DEd00001089* - ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 580] - -pci:v000010DEd0000108B* - ID_PRODUCT_FROM_DATABASE=GF110 [GeForce GTX 580] - -pci:v000010DEd00001091* - ID_PRODUCT_FROM_DATABASE=GF110 [Tesla M2090] - -pci:v000010DEd00001091sv000010DEsd0000088E* - ID_PRODUCT_FROM_DATABASE=Tesla X2090 - -pci:v000010DEd00001091sv000010DEsd00000891* - ID_PRODUCT_FROM_DATABASE=Tesla X2090 - -pci:v000010DEd00001094* - ID_PRODUCT_FROM_DATABASE=GF110 [Tesla M2075] - -pci:v000010DEd00001094sv000010DEsd00000888* - ID_PRODUCT_FROM_DATABASE=Tesla M2075 - -pci:v000010DEd00001096* - ID_PRODUCT_FROM_DATABASE=GF110 [Tesla C2050 / C2075] - -pci:v000010DEd00001096sv000010DEsd00000910* - ID_PRODUCT_FROM_DATABASE=Tesla C2075 - -pci:v000010DEd00001096sv000010DEsd00000911* - ID_PRODUCT_FROM_DATABASE=Tesla C2050 - -pci:v000010DEd0000109A* - ID_PRODUCT_FROM_DATABASE=GF100GLM [Quadro 5010M] - -pci:v000010DEd0000109B* - ID_PRODUCT_FROM_DATABASE=GF100GL [Quadro 7000] - -pci:v000010DEd0000109Bsv000010DEsd00000918* - ID_PRODUCT_FROM_DATABASE=Quadro 7000 - -pci:v000010DEd000010C0* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 9300 GS Rev. 2] - -pci:v000010DEd000010C3* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 8400 GS Rev. 3] - -pci:v000010DEd000010C3sv000010DEsd0000066D* - ID_PRODUCT_FROM_DATABASE=G98 [GeForce 8400GS] - -pci:v000010DEd000010C5* - ID_PRODUCT_FROM_DATABASE=GT218 [GeForce 405] - -pci:v000010DEd000010D8* - ID_PRODUCT_FROM_DATABASE=GT218 [NVS 300] - -pci:v000010DEd00001140* - ID_PRODUCT_FROM_DATABASE=GF117 [GeForce 610M/GT 620M/GT 625M/GT 630M/710M] - -pci:v000010DEd00001180* - ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 680] - -pci:v000010DEd00001183* - ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 660 Ti] - -pci:v000010DEd00001185* - ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 660 OEM] - -pci:v000010DEd00001188* - ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 690] - -pci:v000010DEd00001189* - ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 670] - -pci:v000010DEd0000118F* - ID_PRODUCT_FROM_DATABASE=GK104 [Tesla K10] - -pci:v000010DEd000011A0* - ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 680M] - -pci:v000010DEd000011A1* - ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 670MX] - -pci:v000010DEd000011A2* - ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 675MX] - -pci:v000010DEd000011A3* - ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 680MX] - -pci:v000010DEd000011A7* - ID_PRODUCT_FROM_DATABASE=GK104 [GeForce GTX 675MX] - -pci:v000010DEd000011BA* - ID_PRODUCT_FROM_DATABASE=GK104 [Quadro K5000] - -pci:v000010DEd000011BC* - ID_PRODUCT_FROM_DATABASE=GK104 [Quadro K5000M] - -pci:v000010DEd000011BD* - ID_PRODUCT_FROM_DATABASE=GK104 [Quadro K4000M] - -pci:v000010DEd000011BE* - ID_PRODUCT_FROM_DATABASE=GK104 [Quadro K3000M] - -pci:v000010DEd000011BF* - ID_PRODUCT_FROM_DATABASE=GK104GL [GRID K2] - -pci:v000010DEd000011C0* - ID_PRODUCT_FROM_DATABASE=GK106 [GeForce GTX 660] - -pci:v000010DEd000011C3* - ID_PRODUCT_FROM_DATABASE=GK106 [GeForce GTX 650 Ti Boost Edition] - -pci:v000010DEd000011C6* - ID_PRODUCT_FROM_DATABASE=GK106 [GeForce GTX 650 Ti] - -pci:v000010DEd000011FA* - ID_PRODUCT_FROM_DATABASE=GK106 [Quadro K4000] - -pci:v000010DEd00001200* - ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 560 Ti] - -pci:v000010DEd00001201* - ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 560] - -pci:v000010DEd00001203* - ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 460 SE v2] - -pci:v000010DEd00001205* - ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 460 v2] - -pci:v000010DEd00001206* - ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 555] - -pci:v000010DEd00001207* - ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 645] - -pci:v000010DEd00001208* - ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 560 SE] - -pci:v000010DEd00001210* - ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 570M] - -pci:v000010DEd00001211* - ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 580M] - -pci:v000010DEd00001212* - ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 675M] - -pci:v000010DEd00001213* - ID_PRODUCT_FROM_DATABASE=GF114 [GeForce GTX 670M] - -pci:v000010DEd00001241* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 545 OEM] - -pci:v000010DEd00001243* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 545] - -pci:v000010DEd00001244* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GTX 550 Ti] - -pci:v000010DEd00001245* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GTS 450 Rev. 2] - -pci:v000010DEd00001246* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 550M] - -pci:v000010DEd00001247* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 555M/635M] - -pci:v000010DEd00001248* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 555M] - -pci:v000010DEd00001249* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GTS 450 Rev. 3] - -pci:v000010DEd0000124B* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 640 OEM] - -pci:v000010DEd0000124D* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 555M/635M] - -pci:v000010DEd00001251* - ID_PRODUCT_FROM_DATABASE=GF116 [GeForce GT 560M] - -pci:v000010DEd00001280* - ID_PRODUCT_FROM_DATABASE=GK208 [GeForce GT 635] - -pci:v000010DF* - ID_VENDOR_FROM_DATABASE=Emulex Corporation - -pci:v000010DFd00000720* - ID_PRODUCT_FROM_DATABASE=OneConnect NIC (Skyhawk) - -pci:v000010DFd00000722* - ID_PRODUCT_FROM_DATABASE=OneConnect iSCSI Initiator (Skyhawk) - -pci:v000010DFd00000723* - ID_PRODUCT_FROM_DATABASE=OneConnect iSCSI Initiator + Target (Skyhawk) - -pci:v000010DFd00000724* - ID_PRODUCT_FROM_DATABASE=OneConnect FCoE Initiator (Skyhawk) - -pci:v000010DFd00000728* - ID_PRODUCT_FROM_DATABASE=OneConnect NIC (Skyhawk-VF) - -pci:v000010DFd0000072A* - ID_PRODUCT_FROM_DATABASE=OneConnect iSCSI Initiator (Skyhawk-VF) - -pci:v000010DFd0000072B* - ID_PRODUCT_FROM_DATABASE=OneConnect iSCSI Initiator + Target (Skyhawk-VF) - -pci:v000010DFd0000072C* - ID_PRODUCT_FROM_DATABASE=OneConnect FCoE Initiator (Skyhawk-VF) - -pci:v000010DFd00001AE5* - ID_PRODUCT_FROM_DATABASE=LP6000 Fibre Channel Host Adapter - -pci:v000010DFd0000E100* - ID_PRODUCT_FROM_DATABASE=Proteus-X: LightPulse IOV Fibre Channel Host Adapter - -pci:v000010DFd0000E131* - ID_PRODUCT_FROM_DATABASE=LightPulse 8Gb/s PCIe Shared I/O Fibre Channel Adapter - -pci:v000010DFd0000E180* - ID_PRODUCT_FROM_DATABASE=Proteus-X: LightPulse IOV Fibre Channel Host Adapter - -pci:v000010DFd0000E200* - ID_PRODUCT_FROM_DATABASE=Lancer-X: LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000E208* - ID_PRODUCT_FROM_DATABASE=LightPulse 16Gb Fibre Channel Host Adapter (Lancer-VF) - -pci:v000010DFd0000E220* - ID_PRODUCT_FROM_DATABASE=OneConnect NIC (Lancer) - -pci:v000010DFd0000E240* - ID_PRODUCT_FROM_DATABASE=OneConnect iSCSI Initiator (Lancer) - -pci:v000010DFd0000E260* - ID_PRODUCT_FROM_DATABASE=OneConnect FCoE Initiator (Lancer) - -pci:v000010DFd0000E268* - ID_PRODUCT_FROM_DATABASE=OneConnect 10Gb FCoE Converged Network Adapter (Lancer-VF) - -pci:v000010DFd0000F011* - ID_PRODUCT_FROM_DATABASE=Saturn: LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000F015* - ID_PRODUCT_FROM_DATABASE=Saturn: LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000F085* - ID_PRODUCT_FROM_DATABASE=LP850 Fibre Channel Host Adapter - -pci:v000010DFd0000F095* - ID_PRODUCT_FROM_DATABASE=LP952 Fibre Channel Host Adapter - -pci:v000010DFd0000F098* - ID_PRODUCT_FROM_DATABASE=LP982 Fibre Channel Host Adapter - -pci:v000010DFd0000F0A1* - ID_PRODUCT_FROM_DATABASE=Thor LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000F0A5* - ID_PRODUCT_FROM_DATABASE=Thor LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000F0B5* - ID_PRODUCT_FROM_DATABASE=Viper LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000F0D1* - ID_PRODUCT_FROM_DATABASE=Helios LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000F0D5* - ID_PRODUCT_FROM_DATABASE=Helios LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000F0E1* - ID_PRODUCT_FROM_DATABASE=Zephyr LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000F0E5* - ID_PRODUCT_FROM_DATABASE=Zephyr LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000F0F5* - ID_PRODUCT_FROM_DATABASE=Neptune LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000F100* - ID_PRODUCT_FROM_DATABASE=Saturn-X: LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000F111* - ID_PRODUCT_FROM_DATABASE=Saturn-X LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000F112* - ID_PRODUCT_FROM_DATABASE=Saturn-X LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000F180* - ID_PRODUCT_FROM_DATABASE=LPSe12002 EmulexSecure Fibre Channel Adapter - -pci:v000010DFd0000F700* - ID_PRODUCT_FROM_DATABASE=LP7000 Fibre Channel Host Adapter - -pci:v000010DFd0000F701* - ID_PRODUCT_FROM_DATABASE=LP7000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) - -pci:v000010DFd0000F800* - ID_PRODUCT_FROM_DATABASE=LP8000 Fibre Channel Host Adapter - -pci:v000010DFd0000F801* - ID_PRODUCT_FROM_DATABASE=LP8000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) - -pci:v000010DFd0000F900* - ID_PRODUCT_FROM_DATABASE=LP9000 Fibre Channel Host Adapter - -pci:v000010DFd0000F901* - ID_PRODUCT_FROM_DATABASE=LP9000 Fibre Channel Host Adapter Alternate ID (JX1:2-3, JX2:1-2) - -pci:v000010DFd0000F980* - ID_PRODUCT_FROM_DATABASE=LP9802 Fibre Channel Host Adapter - -pci:v000010DFd0000F981* - ID_PRODUCT_FROM_DATABASE=LP9802 Fibre Channel Host Adapter Alternate ID - -pci:v000010DFd0000F982* - ID_PRODUCT_FROM_DATABASE=LP9802 Fibre Channel Host Adapter Alternate ID - -pci:v000010DFd0000FA00* - ID_PRODUCT_FROM_DATABASE=Thor-X LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000FB00* - ID_PRODUCT_FROM_DATABASE=Viper LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000FC00* - ID_PRODUCT_FROM_DATABASE=Thor-X LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000FC00sv000010DFsd0000FC00* - ID_PRODUCT_FROM_DATABASE=LP10000 LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000FC10* - ID_PRODUCT_FROM_DATABASE=Helios-X LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000FC20* - ID_PRODUCT_FROM_DATABASE=Zephyr-X LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000FC40* - ID_PRODUCT_FROM_DATABASE=Saturn-X: LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000FC50* - ID_PRODUCT_FROM_DATABASE=Proteus-X: LightPulse IOV Fibre Channel Host Adapter - -pci:v000010DFd0000FD00* - ID_PRODUCT_FROM_DATABASE=Helios-X LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000FD11* - ID_PRODUCT_FROM_DATABASE=Helios-X LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000FD12* - ID_PRODUCT_FROM_DATABASE=Helios-X LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000FE00* - ID_PRODUCT_FROM_DATABASE=Zephyr-X LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000FE05* - ID_PRODUCT_FROM_DATABASE=Zephyr-X: LightPulse FCoE Adapter - -pci:v000010DFd0000FE11* - ID_PRODUCT_FROM_DATABASE=Zephyr-X LightPulse Fibre Channel Host Adapter - -pci:v000010DFd0000FE12* - ID_PRODUCT_FROM_DATABASE=Zephyr-X LightPulse FCoE Adapter - -pci:v000010DFd0000FF00* - ID_PRODUCT_FROM_DATABASE=Neptune LightPulse Fibre Channel Host Adapter - -pci:v000010E0* - ID_VENDOR_FROM_DATABASE=Integrated Micro Solutions Inc. - -pci:v000010E0d00005026* - ID_PRODUCT_FROM_DATABASE=IMS5026/27/28 - -pci:v000010E0d00005027* - ID_PRODUCT_FROM_DATABASE=IMS5027 - -pci:v000010E0d00005028* - ID_PRODUCT_FROM_DATABASE=IMS5028 - -pci:v000010E0d00008849* - ID_PRODUCT_FROM_DATABASE=IMS8849 - -pci:v000010E0d00008853* - ID_PRODUCT_FROM_DATABASE=IMS8853 - -pci:v000010E0d00009128* - ID_PRODUCT_FROM_DATABASE=IMS9128 [Twin turbo 128] - -pci:v000010E1* - ID_VENDOR_FROM_DATABASE=Tekram Technology Co.,Ltd. - -pci:v000010E1d00000391* - ID_PRODUCT_FROM_DATABASE=TRM-S1040 - -pci:v000010E1d00000391sv000010E1sd00000391* - ID_PRODUCT_FROM_DATABASE=DC-315U SCSI-3 Host Adapter - -pci:v000010E1d0000690C* - ID_PRODUCT_FROM_DATABASE=DC-690c - -pci:v000010E1d0000DC29* - ID_PRODUCT_FROM_DATABASE=DC-290 - -pci:v000010E2* - ID_VENDOR_FROM_DATABASE=Aptix Corporation - -pci:v000010E3* - ID_VENDOR_FROM_DATABASE=Tundra Semiconductor Corp. - -pci:v000010E3d00000000* - ID_PRODUCT_FROM_DATABASE=CA91C042 [Universe] - -pci:v000010E3d00000108* - ID_PRODUCT_FROM_DATABASE=Tsi108 Host Bridge for Single PowerPC - -pci:v000010E3d00000148* - ID_PRODUCT_FROM_DATABASE=Tsi148 [Tempe] - -pci:v000010E3d00000148sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=VR11 Single Board Computer - -pci:v000010E3d00000860* - ID_PRODUCT_FROM_DATABASE=CA91C860 [QSpan] - -pci:v000010E3d00000862* - ID_PRODUCT_FROM_DATABASE=CA91C862A [QSpan-II] - -pci:v000010E3d00008260* - ID_PRODUCT_FROM_DATABASE=CA91L8200B [Dual PCI PowerSpan II] - -pci:v000010E3d00008261* - ID_PRODUCT_FROM_DATABASE=CA91L8260B [Single PCI PowerSpan II] - -pci:v000010E3d0000A108* - ID_PRODUCT_FROM_DATABASE=Tsi109 Host Bridge for Dual PowerPC - -pci:v000010E4* - ID_VENDOR_FROM_DATABASE=Tandem Computers - -pci:v000010E4d00008029* - ID_PRODUCT_FROM_DATABASE=Realtek 8029 Network Card - -pci:v000010E5* - ID_VENDOR_FROM_DATABASE=Micro Industries Corporation - -pci:v000010E6* - ID_VENDOR_FROM_DATABASE=Gainbery Computer Products Inc. - -pci:v000010E7* - ID_VENDOR_FROM_DATABASE=Vadem - -pci:v000010E8* - ID_VENDOR_FROM_DATABASE=Applied Micro Circuits Corp. - -pci:v000010E8d00001072* - ID_PRODUCT_FROM_DATABASE=INES GPIB-PCI (AMCC5920 based) - -pci:v000010E8d00002011* - ID_PRODUCT_FROM_DATABASE=Q-Motion Video Capture/Edit board - -pci:v000010E8d00004750* - ID_PRODUCT_FROM_DATABASE=S5930 [Matchmaker] - -pci:v000010E8d00005920* - ID_PRODUCT_FROM_DATABASE=S5920 - -pci:v000010E8d00008043* - ID_PRODUCT_FROM_DATABASE=LANai4.x [Myrinet LANai interface chip] - -pci:v000010E8d00008062* - ID_PRODUCT_FROM_DATABASE=S5933_PARASTATION - -pci:v000010E8d0000807D* - ID_PRODUCT_FROM_DATABASE=S5933 [Matchmaker] - -pci:v000010E8d00008088* - ID_PRODUCT_FROM_DATABASE=Kongsberg Spacetec Format Synchronizer - -pci:v000010E8d00008089* - ID_PRODUCT_FROM_DATABASE=Kongsberg Spacetec Serial Output Board - -pci:v000010E8d0000809C* - ID_PRODUCT_FROM_DATABASE=S5933_HEPC3 - -pci:v000010E8d000080B9* - ID_PRODUCT_FROM_DATABASE=Harmonix Hi-Card P8 (4x active ISDN BRI) - -pci:v000010E8d000080D7* - ID_PRODUCT_FROM_DATABASE=PCI-9112 - -pci:v000010E8d000080D8* - ID_PRODUCT_FROM_DATABASE=PCI-7200 - -pci:v000010E8d000080D9* - ID_PRODUCT_FROM_DATABASE=PCI-9118 - -pci:v000010E8d000080DA* - ID_PRODUCT_FROM_DATABASE=PCI-9812 - -pci:v000010E8d000080FC* - ID_PRODUCT_FROM_DATABASE=APCI1500 Signal processing controller (16 dig. inputs + 16 dig. outputs) - -pci:v000010E8d0000811A* - ID_PRODUCT_FROM_DATABASE=PCI-IEEE1355-DS-DE Interface - -pci:v000010E8d0000814C* - ID_PRODUCT_FROM_DATABASE=Fastcom ESCC-PCI (Commtech, Inc.) - -pci:v000010E8d00008170* - ID_PRODUCT_FROM_DATABASE=S5933 [Matchmaker] (Chipset Development Tool) - -pci:v000010E8d000081E6* - ID_PRODUCT_FROM_DATABASE=Multimedia video controller - -pci:v000010E8d0000828D* - ID_PRODUCT_FROM_DATABASE=APCI3001 Signal processing controller (up to 16 analog inputs) - -pci:v000010E8d00008291* - ID_PRODUCT_FROM_DATABASE=Fastcom 232/8-PCI (Commtech, Inc.) - -pci:v000010E8d000082C4* - ID_PRODUCT_FROM_DATABASE=Fastcom 422/4-PCI (Commtech, Inc.) - -pci:v000010E8d000082C5* - ID_PRODUCT_FROM_DATABASE=Fastcom 422/2-PCI (Commtech, Inc.) - -pci:v000010E8d000082C6* - ID_PRODUCT_FROM_DATABASE=Fastcom IG422/1-PCI (Commtech, Inc.) - -pci:v000010E8d000082C7* - ID_PRODUCT_FROM_DATABASE=Fastcom IG232/2-PCI (Commtech, Inc.) - -pci:v000010E8d000082CA* - ID_PRODUCT_FROM_DATABASE=Fastcom 232/4-PCI (Commtech, Inc.) - -pci:v000010E8d000082DB* - ID_PRODUCT_FROM_DATABASE=AJA HDNTV HD SDI Framestore - -pci:v000010E8d000082E2* - ID_PRODUCT_FROM_DATABASE=Fastcom DIO24H-PCI (Commtech, Inc.) - -pci:v000010E8d00008406* - ID_PRODUCT_FROM_DATABASE=PCIcanx/PCIcan CAN interface [Kvaser AB] - -pci:v000010E8d00008407* - ID_PRODUCT_FROM_DATABASE=PCIcan II CAN interface (A1021, PCB-07, PCB-08) [Kvaser AB] - -pci:v000010E8d00008851* - ID_PRODUCT_FROM_DATABASE=S5933 on Innes Corp FM Radio Capture card - -pci:v000010E9* - ID_VENDOR_FROM_DATABASE=Alps Electric Co., Ltd. - -pci:v000010EA* - ID_VENDOR_FROM_DATABASE=Integraphics - -pci:v000010EAd00001680* - ID_PRODUCT_FROM_DATABASE=IGA-1680 - -pci:v000010EAd00001682* - ID_PRODUCT_FROM_DATABASE=IGA-1682 - -pci:v000010EAd00001683* - ID_PRODUCT_FROM_DATABASE=IGA-1683 - -pci:v000010EAd00002000* - ID_PRODUCT_FROM_DATABASE=CyberPro 2000 - -pci:v000010EAd00002010* - ID_PRODUCT_FROM_DATABASE=CyberPro 2000A - -pci:v000010EAd00005000* - ID_PRODUCT_FROM_DATABASE=CyberPro 5000 - -pci:v000010EAd00005050* - ID_PRODUCT_FROM_DATABASE=CyberPro 5050 - -pci:v000010EAd00005202* - ID_PRODUCT_FROM_DATABASE=CyberPro 5202 - -pci:v000010EAd00005252* - ID_PRODUCT_FROM_DATABASE=CyberPro5252 - -pci:v000010EB* - ID_VENDOR_FROM_DATABASE=Artists Graphics - -pci:v000010EBd00000101* - ID_PRODUCT_FROM_DATABASE=3GA - -pci:v000010EBd00008111* - ID_PRODUCT_FROM_DATABASE=Twist3 Frame Grabber - -pci:v000010EC* - ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Co., Ltd. - -pci:v000010ECd00000139* - ID_PRODUCT_FROM_DATABASE=Zonet Zen3200 - -pci:v000010ECd00000880* - ID_PRODUCT_FROM_DATABASE=Realtek 880 High Definition Audio - -pci:v000010ECd00000883* - ID_PRODUCT_FROM_DATABASE=Realtek 883 High Definition Audio - -pci:v000010ECd00000885* - ID_PRODUCT_FROM_DATABASE=Realtek 885 High Definition Audio - -pci:v000010ECd00000888* - ID_PRODUCT_FROM_DATABASE=Realtek 888 High Definition Audio - -pci:v000010ECd00000892* - ID_PRODUCT_FROM_DATABASE=Realtek 892 High Definition Audio - -pci:v000010ECd00005209* - ID_PRODUCT_FROM_DATABASE=RTS5209 PCI Express Card Reader - -pci:v000010ECd00005229* - ID_PRODUCT_FROM_DATABASE=RTS5229 PCI Express Card Reader - -pci:v000010ECd00005288* - ID_PRODUCT_FROM_DATABASE=Barossa PCI Express Card Reader - -pci:v000010ECd00008029* - ID_PRODUCT_FROM_DATABASE=RTL-8029(AS) - -pci:v000010ECd00008029sv000010B8sd00002011* - ID_PRODUCT_FROM_DATABASE=EZ-Card (SMC1208) - -pci:v000010ECd00008029sv000010ECsd00008029* - ID_PRODUCT_FROM_DATABASE=RTL-8029(AS) - -pci:v000010ECd00008029sv00001113sd00001208* - ID_PRODUCT_FROM_DATABASE=EN1208 - -pci:v000010ECd00008029sv00001186sd00000300* - ID_PRODUCT_FROM_DATABASE=DE-528 - -pci:v000010ECd00008029sv00001259sd00002400* - ID_PRODUCT_FROM_DATABASE=AT-2400 - -pci:v000010ECd00008029sv00001AF4sd00001100* - ID_PRODUCT_FROM_DATABASE=Qemu virtual machine - -pci:v000010ECd00008129* - ID_PRODUCT_FROM_DATABASE=RTL-8129 - -pci:v000010ECd00008129sv000010ECsd00008129* - ID_PRODUCT_FROM_DATABASE=RT8129 Fast Ethernet Adapter - -pci:v000010ECd00008129sv000011ECsd00008129* - ID_PRODUCT_FROM_DATABASE=RT8129 Fast Ethernet Adapter - -pci:v000010ECd00008136* - ID_PRODUCT_FROM_DATABASE=RTL8101E/RTL8102E PCI Express Fast Ethernet controller - -pci:v000010ECd00008136sv0000103Csd00002AB1* - ID_PRODUCT_FROM_DATABASE=Pavillion p6774 - -pci:v000010ECd00008136sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v000010ECd00008136sv00001179sd0000FF64* - ID_PRODUCT_FROM_DATABASE=RTL8102E PCI-E Fast Ethernet NIC - -pci:v000010ECd00008138* - ID_PRODUCT_FROM_DATABASE=RT8139 (B/C) Cardbus Fast Ethernet Adapter - -pci:v000010ECd00008138sv000010ECsd00008138* - ID_PRODUCT_FROM_DATABASE=RT8139 (B/C) Fast Ethernet Adapter - -pci:v000010ECd00008139* - ID_PRODUCT_FROM_DATABASE=RTL-8139/8139C/8139C+ - -pci:v000010ECd00008139sv00000357sd0000000A* - ID_PRODUCT_FROM_DATABASE=TTP-Monitoring Card V2.0 - -pci:v000010ECd00008139sv00001025sd0000005A* - ID_PRODUCT_FROM_DATABASE=TravelMate 290 - -pci:v000010ECd00008139sv00001025sd00008920* - ID_PRODUCT_FROM_DATABASE=ALN-325 - -pci:v000010ECd00008139sv00001025sd00008921* - ID_PRODUCT_FROM_DATABASE=ALN-325 - -pci:v000010ECd00008139sv0000103Csd0000006A* - ID_PRODUCT_FROM_DATABASE=NX9500 - -pci:v000010ECd00008139sv0000103Csd00002A20* - ID_PRODUCT_FROM_DATABASE=Pavilion t3030.de Desktop PC - -pci:v000010ECd00008139sv0000103Csd000030D9* - ID_PRODUCT_FROM_DATABASE=Presario C700 - -pci:v000010ECd00008139sv00001043sd00001045* - ID_PRODUCT_FROM_DATABASE=L8400B or L3C/S notebook - -pci:v000010ECd00008139sv00001043sd00008109* - ID_PRODUCT_FROM_DATABASE=P5P800-MX Mainboard - -pci:v000010ECd00008139sv00001071sd00008160* - ID_PRODUCT_FROM_DATABASE=MIM2000 - -pci:v000010ECd00008139sv000010BDsd00000320* - ID_PRODUCT_FROM_DATABASE=EP-320X-R - -pci:v000010ECd00008139sv000010F7sd00008338* - ID_PRODUCT_FROM_DATABASE=Panasonic CF-Y5 laptop - -pci:v000010ECd00008139sv00001113sd0000EC01* - ID_PRODUCT_FROM_DATABASE=FNC-0107TX - -pci:v000010ECd00008139sv00001186sd00001300* - ID_PRODUCT_FROM_DATABASE=DFE-538TX - -pci:v000010ECd00008139sv00001186sd00001320* - ID_PRODUCT_FROM_DATABASE=SN5200 - -pci:v000010ECd00008139sv00001186sd00008139* - ID_PRODUCT_FROM_DATABASE=DRN-32TX - -pci:v000010ECd00008139sv000011F6sd00008139* - ID_PRODUCT_FROM_DATABASE=FN22-3(A) LinxPRO Ethernet Adapter - -pci:v000010ECd00008139sv00001259sd00002500* - ID_PRODUCT_FROM_DATABASE=AT-2500TX - -pci:v000010ECd00008139sv00001259sd00002503* - ID_PRODUCT_FROM_DATABASE=AT-2500TX/ACPI - -pci:v000010ECd00008139sv00001385sd0000F31D* - ID_PRODUCT_FROM_DATABASE=FA311 v2 - -pci:v000010ECd00008139sv00001395sd00002100* - ID_PRODUCT_FROM_DATABASE=AMB2100 - -pci:v000010ECd00008139sv00001429sd0000D010* - ID_PRODUCT_FROM_DATABASE=ND010/ND012 - -pci:v000010ECd00008139sv00001432sd00009130* - ID_PRODUCT_FROM_DATABASE=EN-9130TX - -pci:v000010ECd00008139sv00001436sd00008139* - ID_PRODUCT_FROM_DATABASE=RT8139 - -pci:v000010ECd00008139sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30/P35 notebook - -pci:v000010ECd00008139sv00001458sd0000E000* - ID_PRODUCT_FROM_DATABASE=GA-7VM400M/7VT600 Motherboard - -pci:v000010ECd00008139sv00001462sd00000131* - ID_PRODUCT_FROM_DATABASE=MS-1013 Notebook - -pci:v000010ECd00008139sv00001462sd0000217C* - ID_PRODUCT_FROM_DATABASE=Aspire L250 - -pci:v000010ECd00008139sv00001462sd0000788C* - ID_PRODUCT_FROM_DATABASE=865PE Neo2-V Mainboard - -pci:v000010ECd00008139sv0000146Csd00001439* - ID_PRODUCT_FROM_DATABASE=FE-1439TX - -pci:v000010ECd00008139sv00001489sd00006001* - ID_PRODUCT_FROM_DATABASE=GF100TXRII - -pci:v000010ECd00008139sv00001489sd00006002* - ID_PRODUCT_FROM_DATABASE=GF100TXRA - -pci:v000010ECd00008139sv0000149Csd0000139A* - ID_PRODUCT_FROM_DATABASE=LFE-8139ATX - -pci:v000010ECd00008139sv0000149Csd00008139* - ID_PRODUCT_FROM_DATABASE=LFE-8139TX - -pci:v000010ECd00008139sv000014CBsd00000200* - ID_PRODUCT_FROM_DATABASE=LNR-100 Family 10/100 Base-TX Ethernet - -pci:v000010ECd00008139sv00001565sd00002300* - ID_PRODUCT_FROM_DATABASE=P4TSV Onboard LAN (RTL8100B) - -pci:v000010ECd00008139sv00001631sd00007003* - ID_PRODUCT_FROM_DATABASE=Onboard RTL8111 on GA-8SIML Rev1.0 Mainboard - -pci:v000010ECd00008139sv00001695sd00009001* - ID_PRODUCT_FROM_DATABASE=Onboard RTL8101L 10/100 MBit - -pci:v000010ECd00008139sv000016ECsd000000FF* - ID_PRODUCT_FROM_DATABASE=USR997900A - -pci:v000010ECd00008139sv00001799sd00005000* - ID_PRODUCT_FROM_DATABASE=F5D5000 PCI Card/Desktop Network PCI Card - -pci:v000010ECd00008139sv00001799sd00005010* - ID_PRODUCT_FROM_DATABASE=F5D5010 CardBus Notebook Network Card - -pci:v000010ECd00008139sv0000187Esd00003303* - ID_PRODUCT_FROM_DATABASE=FN312 - -pci:v000010ECd00008139sv00001904sd00008139* - ID_PRODUCT_FROM_DATABASE=RTL8139D Fast Ethernet Adapter - -pci:v000010ECd00008139sv00002646sd00000001* - ID_PRODUCT_FROM_DATABASE=KNE120TX - -pci:v000010ECd00008139sv00008E2Esd00007000* - ID_PRODUCT_FROM_DATABASE=KF-230TX - -pci:v000010ECd00008139sv00008E2Esd00007100* - ID_PRODUCT_FROM_DATABASE=KF-230TX/2 - -pci:v000010ECd00008139sv0000A0A0sd00000007* - ID_PRODUCT_FROM_DATABASE=ALN-325C - -pci:v000010ECd00008167* - ID_PRODUCT_FROM_DATABASE=RTL-8110SC/8169SC Gigabit Ethernet - -pci:v000010ECd00008167sv00001458sd0000E000* - ID_PRODUCT_FROM_DATABASE=GA-MA69G-S3H Motherboard - -pci:v000010ECd00008167sv00001462sd0000235C* - ID_PRODUCT_FROM_DATABASE=P965 Neo MS-7235 mainboard - -pci:v000010ECd00008167sv00001462sd0000236C* - ID_PRODUCT_FROM_DATABASE=945P Neo3-F motherboard - -pci:v000010ECd00008168* - ID_PRODUCT_FROM_DATABASE=RTL8111/8168 PCI Express Gigabit Ethernet controller - -pci:v000010ECd00008168sv00001019sd00008168* - ID_PRODUCT_FROM_DATABASE=RTL8111/8168 PCI Express Gigabit Ethernet controller - -pci:v000010ECd00008168sv00001028sd000004B2* - ID_PRODUCT_FROM_DATABASE=Vostro 3350 - -pci:v000010ECd00008168sv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v000010ECd00008168sv0000103Csd00001611* - ID_PRODUCT_FROM_DATABASE=Pavilion DM1Z-3000 - -pci:v000010ECd00008168sv00001043sd000011F5* - ID_PRODUCT_FROM_DATABASE=A6J-Q008 - -pci:v000010ECd00008168sv00001043sd000016D5* - ID_PRODUCT_FROM_DATABASE=U6V/U31J laptop - -pci:v000010ECd00008168sv00001043sd000081AA* - ID_PRODUCT_FROM_DATABASE=P5B - -pci:v000010ECd00008168sv00001043sd000082C6* - ID_PRODUCT_FROM_DATABASE=M3A78-EH Motherboard - -pci:v000010ECd00008168sv00001043sd000083A3* - ID_PRODUCT_FROM_DATABASE=M4A785TD Motherboard - -pci:v000010ECd00008168sv00001043sd00008432* - ID_PRODUCT_FROM_DATABASE=P8P67 and other motherboards - -pci:v000010ECd00008168sv00001043sd00008505* - ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard - -pci:v000010ECd00008168sv0000105Bsd00000D7C* - ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard - -pci:v000010ECd00008168sv000010ECsd00008168* - ID_PRODUCT_FROM_DATABASE=RTL8111/8168 PCI Express Gigabit Ethernet controller - -pci:v000010ECd00008168sv00001458sd0000E000* - ID_PRODUCT_FROM_DATABASE=Motherboard - -pci:v000010ECd00008168sv00001462sd0000238C* - ID_PRODUCT_FROM_DATABASE=Onboard RTL8111b on MSI P965 Platinum Mainboard - -pci:v000010ECd00008168sv00001462sd0000368C* - ID_PRODUCT_FROM_DATABASE=K9AG Neo2 - -pci:v000010ECd00008168sv00001462sd00007522* - ID_PRODUCT_FROM_DATABASE=X58 Pro-E - -pci:v000010ECd00008168sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v000010ECd00008168sv00001849sd00008168* - ID_PRODUCT_FROM_DATABASE=Motherboard (one of many) - -pci:v000010ECd00008168sv00008086sd0000D615* - ID_PRODUCT_FROM_DATABASE=Desktop Board D510MO/D525MW - -pci:v000010ECd00008169* - ID_PRODUCT_FROM_DATABASE=RTL8169 PCI Gigabit Ethernet Controller - -pci:v000010ECd00008169sv00001025sd00000079* - ID_PRODUCT_FROM_DATABASE=Aspire 5024WLMi - -pci:v000010ECd00008169sv000010BDsd00003202* - ID_PRODUCT_FROM_DATABASE=EP-320G-TX1 32-bit PCI Gigabit Ethernet Adapter - -pci:v000010ECd00008169sv000010ECsd00008169* - ID_PRODUCT_FROM_DATABASE=RTL8169/8110 Family PCI Gigabit Ethernet NIC - -pci:v000010ECd00008169sv00001259sd0000C107* - ID_PRODUCT_FROM_DATABASE=CG-LAPCIGT - -pci:v000010ECd00008169sv00001371sd0000434E* - ID_PRODUCT_FROM_DATABASE=ProG-2000L - -pci:v000010ECd00008169sv00001385sd0000311A* - ID_PRODUCT_FROM_DATABASE=GA311 - -pci:v000010ECd00008169sv00001385sd00005200* - ID_PRODUCT_FROM_DATABASE=GA511 Gigabit PC Card - -pci:v000010ECd00008169sv00001458sd0000E000* - ID_PRODUCT_FROM_DATABASE=GA-8I915ME-G Mainboard - -pci:v000010ECd00008169sv00001462sd0000030C* - ID_PRODUCT_FROM_DATABASE=K8N Neo-FSR v2.0 mainboard - -pci:v000010ECd00008169sv00001462sd0000065C* - ID_PRODUCT_FROM_DATABASE=Hetis 865GV-E (MS-7065) - -pci:v000010ECd00008169sv00001462sd0000702C* - ID_PRODUCT_FROM_DATABASE=K8T NEO 2 motherboard - -pci:v000010ECd00008169sv00001462sd00007094* - ID_PRODUCT_FROM_DATABASE=K8T Neo2-F V2.0 - -pci:v000010ECd00008169sv000016ECsd0000011F* - ID_PRODUCT_FROM_DATABASE=USR997903 - -pci:v000010ECd00008169sv00001734sd00001091* - ID_PRODUCT_FROM_DATABASE=D2030-A1 - -pci:v000010ECd00008169sv0000A0A0sd00000449* - ID_PRODUCT_FROM_DATABASE=AK86-L motherboard - -pci:v000010ECd00008171* - ID_PRODUCT_FROM_DATABASE=RTL8191SEvA Wireless LAN Controller - -pci:v000010ECd00008172* - ID_PRODUCT_FROM_DATABASE=RTL8191SEvB Wireless LAN Controller - -pci:v000010ECd00008173* - ID_PRODUCT_FROM_DATABASE=RTL8192SE Wireless LAN Controller - -pci:v000010ECd00008174* - ID_PRODUCT_FROM_DATABASE=RTL8192SE Wireless LAN Controller - -pci:v000010ECd00008176* - ID_PRODUCT_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter - -pci:v000010ECd00008176sv00001A3Bsd00001139* - ID_PRODUCT_FROM_DATABASE=AW-NE139H Half-size Mini PCIe Card - -pci:v000010ECd00008177* - ID_PRODUCT_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter - -pci:v000010ECd00008178* - ID_PRODUCT_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter - -pci:v000010ECd00008180* - ID_PRODUCT_FROM_DATABASE=RTL8180L 802.11b MAC - -pci:v000010ECd00008180sv00001385sd00004700* - ID_PRODUCT_FROM_DATABASE=MA521 802.11b Wireless PC Card - -pci:v000010ECd00008180sv00001737sd00000019* - ID_PRODUCT_FROM_DATABASE=WPC11v4 802.11b Wireless-B Notebook Adapter - -pci:v000010ECd00008185* - ID_PRODUCT_FROM_DATABASE=RTL-8185 IEEE 802.11a/b/g Wireless LAN Controller - -pci:v000010ECd00008190* - ID_PRODUCT_FROM_DATABASE=RTL8190 802.11n Wireless LAN - -pci:v000010ECd00008191* - ID_PRODUCT_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter - -pci:v000010ECd00008192* - ID_PRODUCT_FROM_DATABASE=RTL8192E/RTL8192SE Wireless LAN Controller - -pci:v000010ECd00008193* - ID_PRODUCT_FROM_DATABASE=RTL8192DE Wireless LAN Controller - -pci:v000010ECd00008197* - ID_PRODUCT_FROM_DATABASE=SmartLAN56 56K Modem - -pci:v000010ECd00008199* - ID_PRODUCT_FROM_DATABASE=RTL8187SE Wireless LAN Controller - -pci:v000010ECd00008199sv00001462sd00006894* - ID_PRODUCT_FROM_DATABASE=MN54G2 / MS-6894 Wireless Mini PCIe Card - -pci:v000010ECd00008723* - ID_PRODUCT_FROM_DATABASE=RTL8723AE PCIe Wireless Network Adapter - -pci:v000010ED* - ID_VENDOR_FROM_DATABASE=Ascii Corporation - -pci:v000010EDd00007310* - ID_PRODUCT_FROM_DATABASE=V7310 - -pci:v000010EE* - ID_VENDOR_FROM_DATABASE=Xilinx Corporation - -pci:v000010EEd00000001* - ID_PRODUCT_FROM_DATABASE=EUROCOM for PCI (ECOMP) - -pci:v000010EEd00000002* - ID_PRODUCT_FROM_DATABASE=Octal E1/T1 for PCI ETP Card - -pci:v000010EEd00000007* - ID_PRODUCT_FROM_DATABASE=Default PCIe endpoint ID - -pci:v000010EEd00000205* - ID_PRODUCT_FROM_DATABASE=Wildcard TE205P - -pci:v000010EEd00000210* - ID_PRODUCT_FROM_DATABASE=Wildcard TE210P - -pci:v000010EEd00000300* - ID_PRODUCT_FROM_DATABASE=Spartan 3 Designs (Xilinx IP) - -pci:v000010EEd00000314* - ID_PRODUCT_FROM_DATABASE=Wildcard TE405P/TE410P (1st Gen) - -pci:v000010EEd00000405* - ID_PRODUCT_FROM_DATABASE=Wildcard TE405P (2nd Gen) - -pci:v000010EEd00000410* - ID_PRODUCT_FROM_DATABASE=Wildcard TE410P (2nd Gen) - -pci:v000010EEd00000600* - ID_PRODUCT_FROM_DATABASE=Xilinx 6 Designs (Xilinx IP) - -pci:v000010EEd00002B00* - ID_PRODUCT_FROM_DATABASE=Zomojo Zcard - -pci:v000010EEd00003FC0* - ID_PRODUCT_FROM_DATABASE=RME Digi96 - -pci:v000010EEd00003FC1* - ID_PRODUCT_FROM_DATABASE=RME Digi96/8 - -pci:v000010EEd00003FC2* - ID_PRODUCT_FROM_DATABASE=RME Digi96/8 Pro - -pci:v000010EEd00003FC3* - ID_PRODUCT_FROM_DATABASE=RME Digi96/8 Pad - -pci:v000010EEd00003FC4* - ID_PRODUCT_FROM_DATABASE=RME Digi9652 (Hammerfall) - -pci:v000010EEd00003FC5* - ID_PRODUCT_FROM_DATABASE=RME Hammerfall DSP - -pci:v000010EEd00003FC6* - ID_PRODUCT_FROM_DATABASE=RME Hammerfall DSP MADI - -pci:v000010EEd00008380* - ID_PRODUCT_FROM_DATABASE=Ellips ProfiXpress Profibus Master - -pci:v000010EEd00008381* - ID_PRODUCT_FROM_DATABASE=Ellips Santos Frame Grabber - -pci:v000010EEd0000D154* - ID_PRODUCT_FROM_DATABASE=Copley Controls CAN card (PCI-CAN-02) - -pci:v000010EEd0000EBF0* - ID_PRODUCT_FROM_DATABASE=SED Systems Modulator/Demodulator - -pci:v000010EEd0000EBF1* - ID_PRODUCT_FROM_DATABASE=SED Systems Audio Interface Card - -pci:v000010EEd0000EBF2* - ID_PRODUCT_FROM_DATABASE=SED Systems Common PCI Interface - -pci:v000010EF* - ID_VENDOR_FROM_DATABASE=Racore Computer Products, Inc. - -pci:v000010EFd00008154* - ID_PRODUCT_FROM_DATABASE=M815x Token Ring Adapter - -pci:v000010F0* - ID_VENDOR_FROM_DATABASE=Peritek Corporation - -pci:v000010F1* - ID_VENDOR_FROM_DATABASE=Tyan Computer - -pci:v000010F1d00002865* - ID_PRODUCT_FROM_DATABASE=Tyan Thunder K8E S2865 - -pci:v000010F1d00005300* - ID_PRODUCT_FROM_DATABASE=Tyan S5380 Mainboard - -pci:v000010F2* - ID_VENDOR_FROM_DATABASE=Achme Computer, Inc. - -pci:v000010F3* - ID_VENDOR_FROM_DATABASE=Alaris, Inc. - -pci:v000010F4* - ID_VENDOR_FROM_DATABASE=S-MOS Systems, Inc. - -pci:v000010F5* - ID_VENDOR_FROM_DATABASE=NKK Corporation - -pci:v000010F5d0000A001* - ID_PRODUCT_FROM_DATABASE=NDR4000 [NR4600 Bridge] - -pci:v000010F6* - ID_VENDOR_FROM_DATABASE=Creative Electronic Systems SA - -pci:v000010F7* - ID_VENDOR_FROM_DATABASE=Matsushita Electric Industrial Co., Ltd. - -pci:v000010F8* - ID_VENDOR_FROM_DATABASE=Altos India Ltd - -pci:v000010F9* - ID_VENDOR_FROM_DATABASE=PC Direct - -pci:v000010FA* - ID_VENDOR_FROM_DATABASE=Truevision - -pci:v000010FAd0000000C* - ID_PRODUCT_FROM_DATABASE=TARGA 1000 - -pci:v000010FB* - ID_VENDOR_FROM_DATABASE=Thesys Gesellschaft fuer Mikroelektronik mbH - -pci:v000010FBd0000186F* - ID_PRODUCT_FROM_DATABASE=TH 6255 - -pci:v000010FC* - ID_VENDOR_FROM_DATABASE=I-O Data Device, Inc. - -pci:v000010FCd00000003* - ID_PRODUCT_FROM_DATABASE=Cardbus IDE Controller - -pci:v000010FCd00000005* - ID_PRODUCT_FROM_DATABASE=Cardbus SCSI CBSC II - -pci:v000010FD* - ID_VENDOR_FROM_DATABASE=Soyo Computer, Inc - -pci:v000010FE* - ID_VENDOR_FROM_DATABASE=Fast Multimedia AG - -pci:v000010FF* - ID_VENDOR_FROM_DATABASE=NCube - -pci:v00001100* - ID_VENDOR_FROM_DATABASE=Jazz Multimedia - -pci:v00001101* - ID_VENDOR_FROM_DATABASE=Initio Corporation - -pci:v00001101d00000002* - ID_PRODUCT_FROM_DATABASE=INI-920 Ultra SCSI Adapter - -pci:v00001101d00001060* - ID_PRODUCT_FROM_DATABASE=INI-A100U2W - -pci:v00001101d00001622* - ID_PRODUCT_FROM_DATABASE=INI-1623 PCI SATA-II Controller - -pci:v00001101d00009100* - ID_PRODUCT_FROM_DATABASE=INI-9100/9100W - -pci:v00001101d00009400* - ID_PRODUCT_FROM_DATABASE=INI-940 Fast Wide SCSI Adapter - -pci:v00001101d00009401* - ID_PRODUCT_FROM_DATABASE=INI-935 Fast Wide SCSI Adapter - -pci:v00001101d00009500* - ID_PRODUCT_FROM_DATABASE=INI-950 SCSI Adapter - -pci:v00001101d00009502* - ID_PRODUCT_FROM_DATABASE=INI-950P Ultra Wide SCSI Adapter - -pci:v00001102* - ID_VENDOR_FROM_DATABASE=Creative Labs - -pci:v00001102d00000002* - ID_PRODUCT_FROM_DATABASE=SB Live! EMU10k1 - -pci:v00001102d00000002sv0000100Asd00001102* - ID_PRODUCT_FROM_DATABASE=SB Live! 5.1 Digital OEM SB0220 EMU10K1-JFF - -pci:v00001102d00000002sv00001102sd00000020* - ID_PRODUCT_FROM_DATABASE=CT4850 SBLive! Value - -pci:v00001102d00000002sv00001102sd00000021* - ID_PRODUCT_FROM_DATABASE=CT4620 SBLive! - -pci:v00001102d00000002sv00001102sd0000002F* - ID_PRODUCT_FROM_DATABASE=SBLive! mainboard implementation - -pci:v00001102d00000002sv00001102sd0000100A* - ID_PRODUCT_FROM_DATABASE=SB Live! 5.1 Digital OEM [SB0220] - -pci:v00001102d00000002sv00001102sd00004001* - ID_PRODUCT_FROM_DATABASE=E-mu APS - -pci:v00001102d00000002sv00001102sd00008022* - ID_PRODUCT_FROM_DATABASE=CT4780 SBLive! Value - -pci:v00001102d00000002sv00001102sd00008023* - ID_PRODUCT_FROM_DATABASE=CT4790 SoundBlaster PCI512 - -pci:v00001102d00000002sv00001102sd00008024* - ID_PRODUCT_FROM_DATABASE=CT4760 SBLive! - -pci:v00001102d00000002sv00001102sd00008025* - ID_PRODUCT_FROM_DATABASE=SBLive! Mainboard Implementation - -pci:v00001102d00000002sv00001102sd00008026* - ID_PRODUCT_FROM_DATABASE=CT4830 SBLive! Value - -pci:v00001102d00000002sv00001102sd00008027* - ID_PRODUCT_FROM_DATABASE=CT4832 SBLive! Value - -pci:v00001102d00000002sv00001102sd00008028* - ID_PRODUCT_FROM_DATABASE=CT4760 SBLive! OEM version - -pci:v00001102d00000002sv00001102sd00008031* - ID_PRODUCT_FROM_DATABASE=CT4831 SBLive! Value - -pci:v00001102d00000002sv00001102sd00008040* - ID_PRODUCT_FROM_DATABASE=CT4760 SBLive! - -pci:v00001102d00000002sv00001102sd00008051* - ID_PRODUCT_FROM_DATABASE=CT4850 SBLive! Value - -pci:v00001102d00000002sv00001102sd00008061* - ID_PRODUCT_FROM_DATABASE=SBLive! Player 5.1 - -pci:v00001102d00000002sv00001102sd00008064* - ID_PRODUCT_FROM_DATABASE=SBLive! 5.1 Model SB0100 - -pci:v00001102d00000002sv00001102sd00008065* - ID_PRODUCT_FROM_DATABASE=SBLive! 5.1 Digital Model SB0220 - -pci:v00001102d00000002sv00001102sd00008066* - ID_PRODUCT_FROM_DATABASE=Live! 5.1 Digital [SB0228] - -pci:v00001102d00000002sv00001102sd00008067* - ID_PRODUCT_FROM_DATABASE=SBLive! 5.1 eMicro 28028 - -pci:v00001102d00000004* - ID_PRODUCT_FROM_DATABASE=SB Audigy - -pci:v00001102d00000004sv00001102sd00000051* - ID_PRODUCT_FROM_DATABASE=SB0090 Audigy Player - -pci:v00001102d00000004sv00001102sd00000053* - ID_PRODUCT_FROM_DATABASE=SB0090 Audigy Player/OEM - -pci:v00001102d00000004sv00001102sd00000058* - ID_PRODUCT_FROM_DATABASE=SB0090 Audigy Player/OEM - -pci:v00001102d00000004sv00001102sd00001002* - ID_PRODUCT_FROM_DATABASE=SB Audigy2 Platinum - -pci:v00001102d00000004sv00001102sd00001007* - ID_PRODUCT_FROM_DATABASE=SB0240 Audigy 2 Platinum 6.1 - -pci:v00001102d00000004sv00001102sd00001009* - ID_PRODUCT_FROM_DATABASE=SB Audigy2 OEM HP - -pci:v00001102d00000004sv00001102sd00002002* - ID_PRODUCT_FROM_DATABASE=SB Audigy 2 ZS (SB0350) - -pci:v00001102d00000004sv00001102sd00004001* - ID_PRODUCT_FROM_DATABASE=E-MU 1010 - -pci:v00001102d00000004sv00001102sd00004002* - ID_PRODUCT_FROM_DATABASE=E-MU 0404 - -pci:v00001102d00000005* - ID_PRODUCT_FROM_DATABASE=SB X-Fi - -pci:v00001102d00000005sv00001102sd00000021* - ID_PRODUCT_FROM_DATABASE=X-Fi Platinum - -pci:v00001102d00000005sv00001102sd0000002C* - ID_PRODUCT_FROM_DATABASE=X-Fi XtremeGamer FATAL1TY PRO - -pci:v00001102d00000005sv00001102sd00001003* - ID_PRODUCT_FROM_DATABASE=X-Fi XtremeMusic - -pci:v00001102d00000006* - ID_PRODUCT_FROM_DATABASE=[SB Live! Value] EMU10k1X - -pci:v00001102d00000007* - ID_PRODUCT_FROM_DATABASE=CA0106 Soundblaster - -pci:v00001102d00000007sv00001102sd00000007* - ID_PRODUCT_FROM_DATABASE=SBLive! 24bit - -pci:v00001102d00000007sv00001102sd00001001* - ID_PRODUCT_FROM_DATABASE=SB0310 Audigy LS - -pci:v00001102d00000007sv00001102sd00001002* - ID_PRODUCT_FROM_DATABASE=SB0312 Audigy LS - -pci:v00001102d00000007sv00001102sd00001006* - ID_PRODUCT_FROM_DATABASE=SB0410 SBLive! 24-bit - -pci:v00001102d00000007sv00001102sd0000100A* - ID_PRODUCT_FROM_DATABASE=SB0570 [SB Audigy SE] - -pci:v00001102d00000007sv00001102sd00001012* - ID_PRODUCT_FROM_DATABASE=SB0790 X-Fi XA - -pci:v00001102d00000007sv00001102sd00001013* - ID_PRODUCT_FROM_DATABASE=Soundblaster X-Fi Xtreme Audio - -pci:v00001102d00000007sv00001462sd00001009* - ID_PRODUCT_FROM_DATABASE=K8N Diamond - -pci:v00001102d00000008* - ID_PRODUCT_FROM_DATABASE=SB0400 Audigy2 Value - -pci:v00001102d00000008sv00001102sd00000008* - ID_PRODUCT_FROM_DATABASE=EMU0404 Digital Audio System - -pci:v00001102d00000008sv00001102sd00004004* - ID_PRODUCT_FROM_DATABASE=EMU1010 Digital Audio System [MAEM8960] - -pci:v00001102d00000009* - ID_PRODUCT_FROM_DATABASE=[SB X-Fi Xtreme Audio] CA0110-IBG - -pci:v00001102d00000009sv00001102sd00000010* - ID_PRODUCT_FROM_DATABASE=[SB X-Fi Xtreme Audio] CA0110-IBG - -pci:v00001102d00000009sv00001102sd00000018* - ID_PRODUCT_FROM_DATABASE=SB1040 - -pci:v00001102d0000000B* - ID_PRODUCT_FROM_DATABASE=EMU20k2 [X-Fi Titanium Series] - -pci:v00001102d0000000Bsv00001102sd00000041* - ID_PRODUCT_FROM_DATABASE=SB0880 [SoundBlaster X-Fi Titanium PCI-e] - -pci:v00001102d00004001* - ID_PRODUCT_FROM_DATABASE=SB Audigy FireWire Port - -pci:v00001102d00004001sv00001102sd00000010* - ID_PRODUCT_FROM_DATABASE=SB Audigy FireWire Port - -pci:v00001102d00007002* - ID_PRODUCT_FROM_DATABASE=SB Live! Game Port - -pci:v00001102d00007002sv00001102sd00000020* - ID_PRODUCT_FROM_DATABASE=Gameport Joystick - -pci:v00001102d00007003* - ID_PRODUCT_FROM_DATABASE=SB Audigy Game Port - -pci:v00001102d00007003sv00001102sd00000040* - ID_PRODUCT_FROM_DATABASE=SB Audigy Game Port - -pci:v00001102d00007003sv00001102sd00000060* - ID_PRODUCT_FROM_DATABASE=SB Audigy2 MIDI/Game Port - -pci:v00001102d00007004* - ID_PRODUCT_FROM_DATABASE=[SB Live! Value] Input device controller - -pci:v00001102d00007005* - ID_PRODUCT_FROM_DATABASE=SB Audigy LS Game Port - -pci:v00001102d00007005sv00001102sd00001001* - ID_PRODUCT_FROM_DATABASE=SB0310 Audigy LS MIDI/Game port - -pci:v00001102d00007005sv00001102sd00001002* - ID_PRODUCT_FROM_DATABASE=SB0312 Audigy LS MIDI/Game port - -pci:v00001102d00007006* - ID_PRODUCT_FROM_DATABASE=[SB X-Fi Xtreme Audio] CA0110-IBG PCI to PCIe Bridge - -pci:v00001102d00008938* - ID_PRODUCT_FROM_DATABASE=Ectiva EV1938 - -pci:v00001102d00008938sv00001033sd000080E5* - ID_PRODUCT_FROM_DATABASE=SlimTower-Jim (NEC) - -pci:v00001102d00008938sv00001071sd00007150* - ID_PRODUCT_FROM_DATABASE=Mitac 7150 - -pci:v00001102d00008938sv0000110Asd00005938* - ID_PRODUCT_FROM_DATABASE=Siemens Scenic Mobile 510PIII - -pci:v00001102d00008938sv000013BDsd0000100C* - ID_PRODUCT_FROM_DATABASE=Ceres-C (Sharp, Intel BX) - -pci:v00001102d00008938sv000013BDsd0000100D* - ID_PRODUCT_FROM_DATABASE=Sharp, Intel Banister - -pci:v00001102d00008938sv000013BDsd0000100E* - ID_PRODUCT_FROM_DATABASE=TwinHead P09S/P09S3 (Sharp) - -pci:v00001102d00008938sv000013BDsd0000F6F1* - ID_PRODUCT_FROM_DATABASE=Marlin (Sharp) - -pci:v00001102d00008938sv000014FFsd00000E70* - ID_PRODUCT_FROM_DATABASE=P88TE (TWINHEAD INTERNATIONAL Corp) - -pci:v00001102d00008938sv000014FFsd0000C401* - ID_PRODUCT_FROM_DATABASE=Notebook 9100/9200/2000 (TWINHEAD INTERNATIONAL Corp) - -pci:v00001102d00008938sv0000156Dsd0000B400* - ID_PRODUCT_FROM_DATABASE=G400 - Geo (AlphaTop (Taiwan)) - -pci:v00001102d00008938sv0000156Dsd0000B550* - ID_PRODUCT_FROM_DATABASE=G560 (AlphaTop (Taiwan)) - -pci:v00001102d00008938sv0000156Dsd0000B560* - ID_PRODUCT_FROM_DATABASE=G560 (AlphaTop (Taiwan)) - -pci:v00001102d00008938sv0000156Dsd0000B700* - ID_PRODUCT_FROM_DATABASE=G700/U700 (AlphaTop (Taiwan)) - -pci:v00001102d00008938sv0000156Dsd0000B795* - ID_PRODUCT_FROM_DATABASE=G795 (AlphaTop (Taiwan)) - -pci:v00001102d00008938sv0000156Dsd0000B797* - ID_PRODUCT_FROM_DATABASE=G797 (AlphaTop (Taiwan)) - -pci:v00001103* - ID_VENDOR_FROM_DATABASE=HighPoint Technologies, Inc. - -pci:v00001103d00000003* - ID_PRODUCT_FROM_DATABASE=HPT343/345/346/363 - -pci:v00001103d00000004* - ID_PRODUCT_FROM_DATABASE=HPT366/368/370/370A/372/372N - -pci:v00001103d00000004sv00001103sd00000001* - ID_PRODUCT_FROM_DATABASE=HPT370A - -pci:v00001103d00000004sv00001103sd00000004* - ID_PRODUCT_FROM_DATABASE=HPT366 UDMA66 (r1) / HPT368 UDMA66 (r2) / HPT370 UDMA100 (r3) / HPT370 UDMA100 RAID (r4) - -pci:v00001103d00000004sv00001103sd00000005* - ID_PRODUCT_FROM_DATABASE=HPT370 UDMA100 - -pci:v00001103d00000004sv00001103sd00000006* - ID_PRODUCT_FROM_DATABASE=HPT302/302N - -pci:v00001103d00000005* - ID_PRODUCT_FROM_DATABASE=HPT372A/372N - -pci:v00001103d00000006* - ID_PRODUCT_FROM_DATABASE=HPT302/302N - -pci:v00001103d00000007* - ID_PRODUCT_FROM_DATABASE=HPT371/371N - -pci:v00001103d00000008* - ID_PRODUCT_FROM_DATABASE=HPT374 - -pci:v00001103d00000009* - ID_PRODUCT_FROM_DATABASE=HPT372N - -pci:v00001103d00000620* - ID_PRODUCT_FROM_DATABASE=RocketRAID 620 2 Port SATA-III Controller - -pci:v00001103d00000622* - ID_PRODUCT_FROM_DATABASE=RocketRAID 622 2 Port SATA-III Controller - -pci:v00001103d00000640* - ID_PRODUCT_FROM_DATABASE=RocketRAID 640 4 Port SATA-III Controller - -pci:v00001103d00001720* - ID_PRODUCT_FROM_DATABASE=RocketRAID 1720 (2x SATA II RAID Controller) - -pci:v00001103d00001740* - ID_PRODUCT_FROM_DATABASE=RocketRAID 1740 - -pci:v00001103d00001742* - ID_PRODUCT_FROM_DATABASE=RocketRAID 1742 - -pci:v00001103d00002210* - ID_PRODUCT_FROM_DATABASE=RocketRAID 2210 SATA-II Controller - -pci:v00001103d00002300* - ID_PRODUCT_FROM_DATABASE=RocketRAID 230x 4 Port SATA-II Controller - -pci:v00001103d00002310* - ID_PRODUCT_FROM_DATABASE=RocketRAID 2310 4 Port SATA-II Controller - -pci:v00001103d00002320* - ID_PRODUCT_FROM_DATABASE=RocketRAID 2320 SATA-II Controller - -pci:v00001103d00002322* - ID_PRODUCT_FROM_DATABASE=RocketRAID 2322 SATA-II Controller - -pci:v00001103d00002340* - ID_PRODUCT_FROM_DATABASE=RocketRAID 2340 16 Port SATA-II Controller - -pci:v00001103d00002640* - ID_PRODUCT_FROM_DATABASE=RocketRAID 2640 SAS/SATA Controller - -pci:v00001103d00002722* - ID_PRODUCT_FROM_DATABASE=RocketRAID 2722 - -pci:v00001103d00002740* - ID_PRODUCT_FROM_DATABASE=RocketRAID 2740 - -pci:v00001103d00002744* - ID_PRODUCT_FROM_DATABASE=RocketRaid 2744 - -pci:v00001103d00002782* - ID_PRODUCT_FROM_DATABASE=RocketRAID 2782 - -pci:v00001103d00003120* - ID_PRODUCT_FROM_DATABASE=RocketRAID 3120 - -pci:v00001103d00003220* - ID_PRODUCT_FROM_DATABASE=RocketRAID 3220 - -pci:v00001103d00003320* - ID_PRODUCT_FROM_DATABASE=RocketRAID 3320 - -pci:v00001103d00004310* - ID_PRODUCT_FROM_DATABASE=RocketRaid 4310 - -pci:v00001104* - ID_VENDOR_FROM_DATABASE=RasterOps Corp. - -pci:v00001105* - ID_VENDOR_FROM_DATABASE=Sigma Designs, Inc. - -pci:v00001105d00001105* - ID_PRODUCT_FROM_DATABASE=REALmagic Xcard MPEG 1/2/3/4 DVD Decoder - -pci:v00001105d00008300* - ID_PRODUCT_FROM_DATABASE=REALmagic Hollywood Plus DVD Decoder - -pci:v00001105d00008400* - ID_PRODUCT_FROM_DATABASE=EM840x REALmagic DVD/MPEG-2 Audio/Video Decoder - -pci:v00001105d00008401* - ID_PRODUCT_FROM_DATABASE=EM8401 REALmagic DVD/MPEG-2 A/V Decoder - -pci:v00001105d00008470* - ID_PRODUCT_FROM_DATABASE=EM8470 REALmagic DVD/MPEG-4 A/V Decoder - -pci:v00001105d00008471* - ID_PRODUCT_FROM_DATABASE=EM8471 REALmagic DVD/MPEG-4 A/V Decoder - -pci:v00001105d00008475* - ID_PRODUCT_FROM_DATABASE=EM8475 REALmagic DVD/MPEG-4 A/V Decoder - -pci:v00001105d00008475sv00001105sd00000001* - ID_PRODUCT_FROM_DATABASE=REALmagic X-Card - -pci:v00001105d00008476* - ID_PRODUCT_FROM_DATABASE=EM8476 REALmagic DVD/MPEG-4 A/V Decoder - -pci:v00001105d00008476sv0000127Dsd00000000* - ID_PRODUCT_FROM_DATABASE=CineView II - -pci:v00001105d00008485* - ID_PRODUCT_FROM_DATABASE=EM8485 REALmagic DVD/MPEG-4 A/V Decoder - -pci:v00001105d00008486* - ID_PRODUCT_FROM_DATABASE=EM8486 REALmagic DVD/MPEG-4 A/V Decoder - -pci:v00001105d0000C622* - ID_PRODUCT_FROM_DATABASE=EM8622L MPEG-4.10 (H.264) and SMPTE 421M (VC-1) A/V Decoder - -pci:v00001106* - ID_VENDOR_FROM_DATABASE=VIA Technologies, Inc. - -pci:v00001106d00000102* - ID_PRODUCT_FROM_DATABASE=Embedded VIA Ethernet Controller - -pci:v00001106d00000130* - ID_PRODUCT_FROM_DATABASE=VT6305 1394.A Controller - -pci:v00001106d00000198* - ID_PRODUCT_FROM_DATABASE=P4X600 Host Bridge - -pci:v00001106d00000204* - ID_PRODUCT_FROM_DATABASE=K8M800 Host Bridge - -pci:v00001106d00000208* - ID_PRODUCT_FROM_DATABASE=PT890 Host Bridge - -pci:v00001106d00000238* - ID_PRODUCT_FROM_DATABASE=K8T890 Host Bridge - -pci:v00001106d00000258* - ID_PRODUCT_FROM_DATABASE=PT880 Host Bridge - -pci:v00001106d00000259* - ID_PRODUCT_FROM_DATABASE=CN333/CN400/PM880 Host Bridge - -pci:v00001106d00000269* - ID_PRODUCT_FROM_DATABASE=KT880 Host Bridge - -pci:v00001106d00000282* - ID_PRODUCT_FROM_DATABASE=K8T800Pro Host Bridge - -pci:v00001106d00000282sv00001043sd000080A3* - ID_PRODUCT_FROM_DATABASE=A8V Deluxe - -pci:v00001106d00000290* - ID_PRODUCT_FROM_DATABASE=K8M890 Host Bridge - -pci:v00001106d00000293* - ID_PRODUCT_FROM_DATABASE=PM896 Host Bridge - -pci:v00001106d00000296* - ID_PRODUCT_FROM_DATABASE=P4M800 Host Bridge - -pci:v00001106d00000305* - ID_PRODUCT_FROM_DATABASE=VT8363/8365 [KT133/KM133] - -pci:v00001106d00000305sv00001019sd00000987* - ID_PRODUCT_FROM_DATABASE=K7VZA Mainboard - -pci:v00001106d00000305sv00001043sd00008033* - ID_PRODUCT_FROM_DATABASE=A7V Mainboard - -pci:v00001106d00000305sv00001043sd0000803E* - ID_PRODUCT_FROM_DATABASE=A7V-E Mainboard - -pci:v00001106d00000305sv00001043sd00008042* - ID_PRODUCT_FROM_DATABASE=A7V133/A7V133-C Mainboard - -pci:v00001106d00000305sv0000147Bsd0000A401* - ID_PRODUCT_FROM_DATABASE=KT7/KT7-RAID/KT7A/KT7A-RAID Mainboard - -pci:v00001106d00000308* - ID_PRODUCT_FROM_DATABASE=PT880 Ultra/PT894 Host Bridge - -pci:v00001106d00000308sv00001043sd00008199* - ID_PRODUCT_FROM_DATABASE=P4V800D-X Mainboard - -pci:v00001106d00000308sv00001849sd00000308* - ID_PRODUCT_FROM_DATABASE=Motherboard - -pci:v00001106d00000314* - ID_PRODUCT_FROM_DATABASE=CN700/VN800/P4M800CE/Pro Host Bridge - -pci:v00001106d00000324* - ID_PRODUCT_FROM_DATABASE=CX700/VX700 Host Bridge - -pci:v00001106d00000327* - ID_PRODUCT_FROM_DATABASE=P4M890 Host Bridge - -pci:v00001106d00000336* - ID_PRODUCT_FROM_DATABASE=K8M890CE Host Bridge - -pci:v00001106d00000340* - ID_PRODUCT_FROM_DATABASE=PT900 Host Bridge - -pci:v00001106d00000351* - ID_PRODUCT_FROM_DATABASE=K8T890CF Host Bridge - -pci:v00001106d00000353* - ID_PRODUCT_FROM_DATABASE=VX800 Host Bridge - -pci:v00001106d00000364* - ID_PRODUCT_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge - -pci:v00001106d00000364sv00001043sd000081CE* - ID_PRODUCT_FROM_DATABASE=P5VD2-VM mothervoard - -pci:v00001106d00000391* - ID_PRODUCT_FROM_DATABASE=VT8371 [KX133] - -pci:v00001106d00000409* - ID_PRODUCT_FROM_DATABASE=VX855/VX875 Host Bridge: Host Control - -pci:v00001106d00000410* - ID_PRODUCT_FROM_DATABASE=VX900 Host Bridge: Host Control - -pci:v00001106d00000415* - ID_PRODUCT_FROM_DATABASE=VT6415 PATA IDE Host Controller - -pci:v00001106d00000415sv00001043sd0000838F* - ID_PRODUCT_FROM_DATABASE=M5A88-V EVO - -pci:v00001106d00000501* - ID_PRODUCT_FROM_DATABASE=VT8501 [Apollo MVP4] - -pci:v00001106d00000505* - ID_PRODUCT_FROM_DATABASE=VT82C505 - -pci:v00001106d00000561* - ID_PRODUCT_FROM_DATABASE=VT82C576MV - -pci:v00001106d00000571* - ID_PRODUCT_FROM_DATABASE=VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE - -pci:v00001106d00000571sv00001019sd00000985* - ID_PRODUCT_FROM_DATABASE=P6VXA Motherboard - -pci:v00001106d00000571sv00001019sd00000A81* - ID_PRODUCT_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235) - -pci:v00001106d00000571sv00001043sd00008052* - ID_PRODUCT_FROM_DATABASE=VT8233A Bus Master ATA100/66/33 IDE - -pci:v00001106d00000571sv00001043sd0000808C* - ID_PRODUCT_FROM_DATABASE=A7V8X / A7V333 motherboard - -pci:v00001106d00000571sv00001043sd000080A1* - ID_PRODUCT_FROM_DATABASE=A7V8X-X motherboard rev. 1.01 - -pci:v00001106d00000571sv00001043sd000080ED* - ID_PRODUCT_FROM_DATABASE=A7V600/K8V-X/A8V Deluxe motherboard - -pci:v00001106d00000571sv00001106sd00000571* - ID_PRODUCT_FROM_DATABASE=VT82C586/B/VT82C686/A/B/VT8233/A/C/VT8235 PIPC Bus Master IDE - -pci:v00001106d00000571sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Magnia Z310 - -pci:v00001106d00000571sv00001297sd0000F641* - ID_PRODUCT_FROM_DATABASE=FX41 motherboard - -pci:v00001106d00000571sv00001458sd00005002* - ID_PRODUCT_FROM_DATABASE=GA-7VAX Mainboard - -pci:v00001106d00000571sv00001462sd00005901* - ID_PRODUCT_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) - -pci:v00001106d00000571sv00001462sd00007020* - ID_PRODUCT_FROM_DATABASE=K8T NEO 2 motherboard - -pci:v00001106d00000571sv00001462sd00007094* - ID_PRODUCT_FROM_DATABASE=K8T Neo2-F V2.0 - -pci:v00001106d00000571sv00001462sd00007120* - ID_PRODUCT_FROM_DATABASE=KT4AV motherboard - -pci:v00001106d00000571sv00001462sd00007181* - ID_PRODUCT_FROM_DATABASE=K8MM3-V mainboard - -pci:v00001106d00000571sv0000147Bsd00001407* - ID_PRODUCT_FROM_DATABASE=KV8-MAX3 motherboard - -pci:v00001106d00000571sv00001849sd00000571* - ID_PRODUCT_FROM_DATABASE=K7VT series Motherboards - -pci:v00001106d00000576* - ID_PRODUCT_FROM_DATABASE=VT82C576 3V [Apollo Master] - -pci:v00001106d00000581* - ID_PRODUCT_FROM_DATABASE=CX700/VX700 RAID Controller - -pci:v00001106d00000581sv00001106sd00000581* - ID_PRODUCT_FROM_DATABASE=Wrong IDE ID - -pci:v00001106d00000585* - ID_PRODUCT_FROM_DATABASE=VT82C585VP [Apollo VP1/VPX] - -pci:v00001106d00000586* - ID_PRODUCT_FROM_DATABASE=VT82C586/A/B PCI-to-ISA [Apollo VP] - -pci:v00001106d00000586sv00001106sd00000000* - ID_PRODUCT_FROM_DATABASE=MVP3 ISA Bridge - -pci:v00001106d00000591* - ID_PRODUCT_FROM_DATABASE=VT8237A SATA 2-Port Controller - -pci:v00001106d00000595* - ID_PRODUCT_FROM_DATABASE=VT82C595 [Apollo VP2] - -pci:v00001106d00000596* - ID_PRODUCT_FROM_DATABASE=VT82C596 ISA [Mobile South] - -pci:v00001106d00000596sv00001106sd00000000* - ID_PRODUCT_FROM_DATABASE=VT82C596/A/B PCI to ISA Bridge - -pci:v00001106d00000596sv00001458sd00000596* - ID_PRODUCT_FROM_DATABASE=VT82C596/A/B PCI to ISA Bridge - -pci:v00001106d00000597* - ID_PRODUCT_FROM_DATABASE=VT82C597 [Apollo VP3] - -pci:v00001106d00000598* - ID_PRODUCT_FROM_DATABASE=VT82C598 [Apollo MVP3] - -pci:v00001106d00000601* - ID_PRODUCT_FROM_DATABASE=VT8601 [Apollo ProMedia] - -pci:v00001106d00000605* - ID_PRODUCT_FROM_DATABASE=VT8605 [ProSavage PM133] - -pci:v00001106d00000605sv0000103Csd00001254* - ID_PRODUCT_FROM_DATABASE=D9840-60001 [Brio BA410 Motherboard] - -pci:v00001106d00000605sv00001043sd0000802C* - ID_PRODUCT_FROM_DATABASE=CUV4X mainboard - -pci:v00001106d00000680* - ID_PRODUCT_FROM_DATABASE=VT82C680 [Apollo P6] - -pci:v00001106d00000686* - ID_PRODUCT_FROM_DATABASE=VT82C686 [Apollo Super South] - -pci:v00001106d00000686sv00001019sd00000985* - ID_PRODUCT_FROM_DATABASE=P6VXA Motherboard - -pci:v00001106d00000686sv0000103Csd00001256* - ID_PRODUCT_FROM_DATABASE=D9840-60001 [Brio BA410 Motherboard] - -pci:v00001106d00000686sv00001043sd0000802C* - ID_PRODUCT_FROM_DATABASE=CUV4X mainboard - -pci:v00001106d00000686sv00001043sd00008033* - ID_PRODUCT_FROM_DATABASE=A7V Mainboard - -pci:v00001106d00000686sv00001043sd0000803E* - ID_PRODUCT_FROM_DATABASE=A7V-E Mainboard - -pci:v00001106d00000686sv00001043sd00008040* - ID_PRODUCT_FROM_DATABASE=A7M266 Mainboard - -pci:v00001106d00000686sv00001043sd00008042* - ID_PRODUCT_FROM_DATABASE=A7V133/A7V133-C Mainboard - -pci:v00001106d00000686sv00001106sd00000000* - ID_PRODUCT_FROM_DATABASE=VT82C686/A PCI to ISA Bridge - -pci:v00001106d00000686sv00001106sd00000686* - ID_PRODUCT_FROM_DATABASE=VT82C686/A PCI to ISA Bridge - -pci:v00001106d00000686sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Magnia Z310 - -pci:v00001106d00000686sv0000147Bsd0000A702* - ID_PRODUCT_FROM_DATABASE=KG7-Lite Mainboard - -pci:v00001106d00000691* - ID_PRODUCT_FROM_DATABASE=VT82C693A/694x [Apollo PRO133x] - -pci:v00001106d00000691sv00001019sd00000985* - ID_PRODUCT_FROM_DATABASE=P6VXA Motherboard - -pci:v00001106d00000691sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Magnia Z310 - -pci:v00001106d00000691sv00001458sd00000691* - ID_PRODUCT_FROM_DATABASE=VT82C691 Apollo Pro System Controller - -pci:v00001106d00000693* - ID_PRODUCT_FROM_DATABASE=VT82C693 [Apollo Pro Plus] - -pci:v00001106d00000698* - ID_PRODUCT_FROM_DATABASE=VT82C693A [Apollo Pro133 AGP] - -pci:v00001106d00000926* - ID_PRODUCT_FROM_DATABASE=VT82C926 [Amazon] - -pci:v00001106d00001000* - ID_PRODUCT_FROM_DATABASE=VT82C570MV - -pci:v00001106d00001106* - ID_PRODUCT_FROM_DATABASE=VT82C570MV - -pci:v00001106d00001122* - ID_PRODUCT_FROM_DATABASE=VX800/VX820 Chrome 9 HC3 Integrated Graphics - -pci:v00001106d00001204* - ID_PRODUCT_FROM_DATABASE=K8M800 Host Bridge - -pci:v00001106d00001208* - ID_PRODUCT_FROM_DATABASE=PT890 Host Bridge - -pci:v00001106d00001238* - ID_PRODUCT_FROM_DATABASE=K8T890 Host Bridge - -pci:v00001106d00001258* - ID_PRODUCT_FROM_DATABASE=PT880 Host Bridge - -pci:v00001106d00001259* - ID_PRODUCT_FROM_DATABASE=CN333/CN400/PM880 Host Bridge - -pci:v00001106d00001269* - ID_PRODUCT_FROM_DATABASE=KT880 Host Bridge - -pci:v00001106d00001282* - ID_PRODUCT_FROM_DATABASE=K8T800Pro Host Bridge - -pci:v00001106d00001290* - ID_PRODUCT_FROM_DATABASE=K8M890 Host Bridge - -pci:v00001106d00001293* - ID_PRODUCT_FROM_DATABASE=PM896 Host Bridge - -pci:v00001106d00001296* - ID_PRODUCT_FROM_DATABASE=P4M800 Host Bridge - -pci:v00001106d00001308* - ID_PRODUCT_FROM_DATABASE=PT894 Host Bridge - -pci:v00001106d00001314* - ID_PRODUCT_FROM_DATABASE=CN700/VN800/P4M800CE/Pro Host Bridge - -pci:v00001106d00001324* - ID_PRODUCT_FROM_DATABASE=CX700/VX700 Host Bridge - -pci:v00001106d00001327* - ID_PRODUCT_FROM_DATABASE=P4M890 Host Bridge - -pci:v00001106d00001336* - ID_PRODUCT_FROM_DATABASE=K8M890CE Host Bridge - -pci:v00001106d00001340* - ID_PRODUCT_FROM_DATABASE=PT900 Host Bridge - -pci:v00001106d00001351* - ID_PRODUCT_FROM_DATABASE=VT3351 Host Bridge - -pci:v00001106d00001353* - ID_PRODUCT_FROM_DATABASE=VX800/VX820 Error Reporting - -pci:v00001106d00001364* - ID_PRODUCT_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge - -pci:v00001106d00001409* - ID_PRODUCT_FROM_DATABASE=VX855/VX875 Error Reporting - -pci:v00001106d00001410* - ID_PRODUCT_FROM_DATABASE=VX900 Error Reporting - -pci:v00001106d00001571* - ID_PRODUCT_FROM_DATABASE=VT82C576M/VT82C586 - -pci:v00001106d00001595* - ID_PRODUCT_FROM_DATABASE=VT82C595/97 [Apollo VP2/97] - -pci:v00001106d00001732* - ID_PRODUCT_FROM_DATABASE=VT1732 [Envy24 II] PCI Multi-Channel Audio Controller - -pci:v00001106d00002106* - ID_PRODUCT_FROM_DATABASE=VIA Rhine Family Fast Ethernet Adapter (VT6105) - -pci:v00001106d00002204* - ID_PRODUCT_FROM_DATABASE=K8M800 Host Bridge - -pci:v00001106d00002208* - ID_PRODUCT_FROM_DATABASE=PT890 Host Bridge - -pci:v00001106d00002238* - ID_PRODUCT_FROM_DATABASE=K8T890 Host Bridge - -pci:v00001106d00002258* - ID_PRODUCT_FROM_DATABASE=PT880 Host Bridge - -pci:v00001106d00002259* - ID_PRODUCT_FROM_DATABASE=CN333/CN400/PM880 CPU Host Bridge - -pci:v00001106d00002269* - ID_PRODUCT_FROM_DATABASE=KT880 Host Bridge - -pci:v00001106d00002282* - ID_PRODUCT_FROM_DATABASE=K8T800Pro Host Bridge - -pci:v00001106d00002290* - ID_PRODUCT_FROM_DATABASE=K8M890 Host Bridge - -pci:v00001106d00002293* - ID_PRODUCT_FROM_DATABASE=PM896 Host Bridge - -pci:v00001106d00002296* - ID_PRODUCT_FROM_DATABASE=P4M800 Host Bridge - -pci:v00001106d00002308* - ID_PRODUCT_FROM_DATABASE=PT894 Host Bridge - -pci:v00001106d00002314* - ID_PRODUCT_FROM_DATABASE=CN700/VN800/P4M800CE/Pro Host Bridge - -pci:v00001106d00002324* - ID_PRODUCT_FROM_DATABASE=CX700/VX700 Host Bridge - -pci:v00001106d00002327* - ID_PRODUCT_FROM_DATABASE=P4M890 Host Bridge - -pci:v00001106d00002336* - ID_PRODUCT_FROM_DATABASE=K8M890CE Host Bridge - -pci:v00001106d00002340* - ID_PRODUCT_FROM_DATABASE=PT900 Host Bridge - -pci:v00001106d00002351* - ID_PRODUCT_FROM_DATABASE=VT3351 Host Bridge - -pci:v00001106d00002353* - ID_PRODUCT_FROM_DATABASE=VX800/VX820 Host Bus Control - -pci:v00001106d00002364* - ID_PRODUCT_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge - -pci:v00001106d00002409* - ID_PRODUCT_FROM_DATABASE=VX855/VX875 Host Bus Control - -pci:v00001106d00002410* - ID_PRODUCT_FROM_DATABASE=VX900 CPU Bus Controller - -pci:v00001106d0000287A* - ID_PRODUCT_FROM_DATABASE=VT8251 PCI to PCI Bridge - -pci:v00001106d0000287B* - ID_PRODUCT_FROM_DATABASE=VT8251 Host Bridge - -pci:v00001106d0000287C* - ID_PRODUCT_FROM_DATABASE=VT8251 PCIE Root Port - -pci:v00001106d0000287D* - ID_PRODUCT_FROM_DATABASE=VT8251 PCIE Root Port - -pci:v00001106d0000287E* - ID_PRODUCT_FROM_DATABASE=VT8237/8251 Ultra VLINK Controller - -pci:v00001106d00003022* - ID_PRODUCT_FROM_DATABASE=CLE266 - -pci:v00001106d00003038* - ID_PRODUCT_FROM_DATABASE=VT82xxxxx UHCI USB 1.1 Controller - -pci:v00001106d00003038sv00000925sd00001234* - ID_PRODUCT_FROM_DATABASE=VA-502 Mainboard - -pci:v00001106d00003038sv00001019sd00000985* - ID_PRODUCT_FROM_DATABASE=P6VXA Motherboard - -pci:v00001106d00003038sv00001019sd00000A81* - ID_PRODUCT_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235) - -pci:v00001106d00003038sv00001043sd00008080* - ID_PRODUCT_FROM_DATABASE=A7V333 motherboard - -pci:v00001106d00003038sv00001043sd0000808C* - ID_PRODUCT_FROM_DATABASE=VT6202 USB2.0 4 port controller - -pci:v00001106d00003038sv00001043sd000080A1* - ID_PRODUCT_FROM_DATABASE=A7V8X-X motherboard - -pci:v00001106d00003038sv00001043sd000080ED* - ID_PRODUCT_FROM_DATABASE=A7V600/K8V-X/A8V Deluxe motherboard - -pci:v00001106d00003038sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Magnia Z310 - -pci:v00001106d00003038sv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=GA-7VAX Mainboard - -pci:v00001106d00003038sv00001462sd00005901* - ID_PRODUCT_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) - -pci:v00001106d00003038sv00001462sd00007020* - ID_PRODUCT_FROM_DATABASE=K8T NEO 2 motherboard - -pci:v00001106d00003038sv00001462sd00007094* - ID_PRODUCT_FROM_DATABASE=K8T Neo2-F V2.0 - -pci:v00001106d00003038sv00001462sd00007120* - ID_PRODUCT_FROM_DATABASE=KT4AV motherboard - -pci:v00001106d00003038sv00001462sd00007181* - ID_PRODUCT_FROM_DATABASE=K8MM3-V mainboard - -pci:v00001106d00003038sv0000147Bsd00001407* - ID_PRODUCT_FROM_DATABASE=KV8-MAX3 motherboard - -pci:v00001106d00003038sv0000182Dsd0000201D* - ID_PRODUCT_FROM_DATABASE=CN-029 USB2.0 4 port PCI Card - -pci:v00001106d00003038sv00001849sd00003038* - ID_PRODUCT_FROM_DATABASE=K7VT series Motherboards - -pci:v00001106d00003038sv000019DAsd0000A179* - ID_PRODUCT_FROM_DATABASE=ZBOX nano VD01 - -pci:v00001106d00003040* - ID_PRODUCT_FROM_DATABASE=VT82C586B ACPI - -pci:v00001106d00003043* - ID_PRODUCT_FROM_DATABASE=VT86C100A [Rhine] - -pci:v00001106d00003043sv000010BDsd00000000* - ID_PRODUCT_FROM_DATABASE=VT86C100A Fast Ethernet Adapter - -pci:v00001106d00003043sv00001106sd00000100* - ID_PRODUCT_FROM_DATABASE=VT86C100A Fast Ethernet Adapter - -pci:v00001106d00003043sv00001186sd00001400* - ID_PRODUCT_FROM_DATABASE=DFE-530TX rev A - -pci:v00001106d00003044* - ID_PRODUCT_FROM_DATABASE=VT6306/7/8 [Fire II(M)] IEEE 1394 OHCI Controller - -pci:v00001106d00003044sv00000010sd00000001* - ID_PRODUCT_FROM_DATABASE=IEEE 1394 4port DCST 1394-3+1B - -pci:v00001106d00003044sv00001025sd0000005A* - ID_PRODUCT_FROM_DATABASE=TravelMate 290 - -pci:v00001106d00003044sv0000103Csd00002A20* - ID_PRODUCT_FROM_DATABASE=Pavilion t3030.de Desktop PC - -pci:v00001106d00003044sv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Media Center PC m7590n - -pci:v00001106d00003044sv00001043sd0000808A* - ID_PRODUCT_FROM_DATABASE=A8V/A8N/P4P800 series motherboard - -pci:v00001106d00003044sv00001043sd000081FE* - ID_PRODUCT_FROM_DATABASE=Motherboard - -pci:v00001106d00003044sv00001458sd00001000* - ID_PRODUCT_FROM_DATABASE=GA-7VT600-1394 Motherboard - -pci:v00001106d00003044sv00001462sd0000207D* - ID_PRODUCT_FROM_DATABASE=K8NGM2 series motherboard - -pci:v00001106d00003044sv00001462sd0000217D* - ID_PRODUCT_FROM_DATABASE=Aspire L250 - -pci:v00001106d00003044sv00001462sd0000590D* - ID_PRODUCT_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) - -pci:v00001106d00003044sv00001462sd0000702D* - ID_PRODUCT_FROM_DATABASE=K8T NEO 2 motherboard - -pci:v00001106d00003044sv00001462sd0000971D* - ID_PRODUCT_FROM_DATABASE=MS-6917 - -pci:v00001106d00003050* - ID_PRODUCT_FROM_DATABASE=VT82C596 Power Management - -pci:v00001106d00003051* - ID_PRODUCT_FROM_DATABASE=VT82C596 Power Management - -pci:v00001106d00003053* - ID_PRODUCT_FROM_DATABASE=VT6105M [Rhine-III] - -pci:v00001106d00003057* - ID_PRODUCT_FROM_DATABASE=VT82C686 [Apollo Super ACPI] - -pci:v00001106d00003057sv00001019sd00000985* - ID_PRODUCT_FROM_DATABASE=P6VXA Motherboard - -pci:v00001106d00003057sv00001019sd00000987* - ID_PRODUCT_FROM_DATABASE=K7VZA Motherboard - -pci:v00001106d00003057sv00001043sd00008033* - ID_PRODUCT_FROM_DATABASE=A7V Mainboard - -pci:v00001106d00003057sv00001043sd0000803E* - ID_PRODUCT_FROM_DATABASE=A7V-E Mainboard - -pci:v00001106d00003057sv00001043sd00008040* - ID_PRODUCT_FROM_DATABASE=A7M266 Mainboard - -pci:v00001106d00003057sv00001043sd00008042* - ID_PRODUCT_FROM_DATABASE=A7V133/A7V133-C Mainboard - -pci:v00001106d00003057sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Magnia Z310 - -pci:v00001106d00003058* - ID_PRODUCT_FROM_DATABASE=VT82C686 AC97 Audio Controller - -pci:v00001106d00003058sv00000E11sd00000097* - ID_PRODUCT_FROM_DATABASE=SoundMax Digital Integrated Audio - -pci:v00001106d00003058sv00000E11sd0000B194* - ID_PRODUCT_FROM_DATABASE=Soundmax integrated digital audio - -pci:v00001106d00003058sv00001019sd00000985* - ID_PRODUCT_FROM_DATABASE=P6VXA Motherboard - -pci:v00001106d00003058sv00001019sd00000987* - ID_PRODUCT_FROM_DATABASE=K7VZA Motherboard - -pci:v00001106d00003058sv0000103Csd00001251* - ID_PRODUCT_FROM_DATABASE=D9840-60001 [Brio BA410 Motherboard] - -pci:v00001106d00003058sv00001043sd00001106* - ID_PRODUCT_FROM_DATABASE=A7V133/A7V133-C Mainboard - -pci:v00001106d00003058sv00001106sd00004511* - ID_PRODUCT_FROM_DATABASE=Onboard Audio on EP7KXA - -pci:v00001106d00003058sv00001106sd0000AA03* - ID_PRODUCT_FROM_DATABASE=VT1612A AC'97 Audio Controller - -pci:v00001106d00003058sv000011D4sd00005348* - ID_PRODUCT_FROM_DATABASE=AD1881A audio - -pci:v00001106d00003058sv00001458sd00007600* - ID_PRODUCT_FROM_DATABASE=Onboard Audio - -pci:v00001106d00003058sv00001462sd00003091* - ID_PRODUCT_FROM_DATABASE=MS-6309 Onboard Audio - -pci:v00001106d00003058sv00001462sd00003092* - ID_PRODUCT_FROM_DATABASE=MS-6309 v2.x Mainboard (VIA VT1611A codec) - -pci:v00001106d00003058sv00001462sd00003300* - ID_PRODUCT_FROM_DATABASE=MS-6330 Onboard Audio - -pci:v00001106d00003058sv000015DDsd00007609* - ID_PRODUCT_FROM_DATABASE=Onboard Audio - -pci:v00001106d00003059* - ID_PRODUCT_FROM_DATABASE=VT8233/A/8235/8237 AC97 Audio Controller - -pci:v00001106d00003059sv00001019sd00000A81* - ID_PRODUCT_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235) - -pci:v00001106d00003059sv00001019sd00001877* - ID_PRODUCT_FROM_DATABASE=K8M800-M2 (V2.0) onboard audio - -pci:v00001106d00003059sv00001043sd00008095* - ID_PRODUCT_FROM_DATABASE=A7V8X Motherboard (Realtek ALC650 codec) - -pci:v00001106d00003059sv00001043sd000080A1* - ID_PRODUCT_FROM_DATABASE=A7V8X-X Motherboard - -pci:v00001106d00003059sv00001043sd000080B0* - ID_PRODUCT_FROM_DATABASE=A7V600/K8V-X/K8V Deluxe motherboard (ADI AD1980 codec [SoundMAX]) - -pci:v00001106d00003059sv00001043sd0000810D* - ID_PRODUCT_FROM_DATABASE=Asus P5VD1-X (AD1888 codec [SoundMax]) - -pci:v00001106d00003059sv00001043sd0000812A* - ID_PRODUCT_FROM_DATABASE=A8V Deluxe motherboard (Realtek ALC850 codec) - -pci:v00001106d00003059sv000010ECsd00008168* - ID_PRODUCT_FROM_DATABASE=High Definition Audio - -pci:v00001106d00003059sv00001106sd00003059* - ID_PRODUCT_FROM_DATABASE=L7VMM2 Motherboard - -pci:v00001106d00003059sv00001106sd00004161* - ID_PRODUCT_FROM_DATABASE=K7VT2 motherboard - -pci:v00001106d00003059sv00001106sd00004170* - ID_PRODUCT_FROM_DATABASE=PCPartner P4M800-8237R Motherboard - -pci:v00001106d00003059sv00001106sd00004552* - ID_PRODUCT_FROM_DATABASE=Soyo KT-600 Dragon Plus (Realtek ALC 650) - -pci:v00001106d00003059sv00001297sd0000C160* - ID_PRODUCT_FROM_DATABASE=FX41 motherboard (Realtek ALC650 codec) - -pci:v00001106d00003059sv00001413sd0000147B* - ID_PRODUCT_FROM_DATABASE=KV8 Pro motherboard onboard audio - -pci:v00001106d00003059sv00001458sd0000A002* - ID_PRODUCT_FROM_DATABASE=GA-7VAX Onboard Audio (Realtek ALC650) - -pci:v00001106d00003059sv00001462sd00000080* - ID_PRODUCT_FROM_DATABASE=K8T NEO 2 motherboard - -pci:v00001106d00003059sv00001462sd00003800* - ID_PRODUCT_FROM_DATABASE=KT266 onboard audio - -pci:v00001106d00003059sv00001462sd00005901* - ID_PRODUCT_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) - -pci:v00001106d00003059sv00001462sd00007181* - ID_PRODUCT_FROM_DATABASE=K8MM3-V mainboard - -pci:v00001106d00003059sv0000147Bsd00001407* - ID_PRODUCT_FROM_DATABASE=KV8-MAX3 motherboard - -pci:v00001106d00003059sv00001695sd0000300C* - ID_PRODUCT_FROM_DATABASE=EP-8KRA2+ Mainboard - -pci:v00001106d00003059sv00001849sd00000850* - ID_PRODUCT_FROM_DATABASE=ASRock 775Dual-880 Pro onboard audio (Realtek ALC850) - -pci:v00001106d00003059sv00001849sd00009739* - ID_PRODUCT_FROM_DATABASE=P4VT8 Mainboard (C-Media CMI9739A codec) - -pci:v00001106d00003059sv00001849sd00009761* - ID_PRODUCT_FROM_DATABASE=K7VT series Motherboards - -pci:v00001106d00003059sv00004005sd00004710* - ID_PRODUCT_FROM_DATABASE=MSI K7T266 Pro2-RU (MSI-6380 v2) onboard audio (Realtek/ALC 200/200P) - -pci:v00001106d00003059sv0000A0A0sd000001B6* - ID_PRODUCT_FROM_DATABASE=AK77-8XN onboard audio - -pci:v00001106d00003059sv0000A0A0sd00000342* - ID_PRODUCT_FROM_DATABASE=AK86-L motherboard - -pci:v00001106d00003065* - ID_PRODUCT_FROM_DATABASE=VT6102 [Rhine-II] - -pci:v00001106d00003065sv00001043sd000080A1* - ID_PRODUCT_FROM_DATABASE=A7V8X-X Motherboard - -pci:v00001106d00003065sv00001043sd000080ED* - ID_PRODUCT_FROM_DATABASE=A7V600-X Motherboard - -pci:v00001106d00003065sv00001106sd00000102* - ID_PRODUCT_FROM_DATABASE=VT6102 [Rhine II] Embeded Ethernet Controller on VT8235 - -pci:v00001106d00003065sv00001186sd00001400* - ID_PRODUCT_FROM_DATABASE=DFE-530TX rev A - -pci:v00001106d00003065sv00001186sd00001401* - ID_PRODUCT_FROM_DATABASE=DFE-530TX rev B - -pci:v00001106d00003065sv000013B9sd00001421* - ID_PRODUCT_FROM_DATABASE=LD-10/100AL PCI Fast Ethernet Adapter (rev.B) - -pci:v00001106d00003065sv00001462sd00007061* - ID_PRODUCT_FROM_DATABASE=MS-7061 - -pci:v00001106d00003065sv00001462sd00007181* - ID_PRODUCT_FROM_DATABASE=K8MM3-V mainboard - -pci:v00001106d00003065sv0000147Bsd00001C09* - ID_PRODUCT_FROM_DATABASE=NV7 Motherboard - -pci:v00001106d00003065sv00001695sd00003005* - ID_PRODUCT_FROM_DATABASE=VT6103 - -pci:v00001106d00003065sv00001695sd0000300C* - ID_PRODUCT_FROM_DATABASE=Realtek ALC655 sound chip - -pci:v00001106d00003065sv00001849sd00003065* - ID_PRODUCT_FROM_DATABASE=K7VT series Motherboards - -pci:v00001106d00003068* - ID_PRODUCT_FROM_DATABASE=AC'97 Modem Controller - -pci:v00001106d00003068sv00001462sd0000309E* - ID_PRODUCT_FROM_DATABASE=MS-6309 Saturn Motherboard - -pci:v00001106d00003074* - ID_PRODUCT_FROM_DATABASE=VT8233 PCI to ISA Bridge - -pci:v00001106d00003074sv00001043sd00008052* - ID_PRODUCT_FROM_DATABASE=VT8233A - -pci:v00001106d00003091* - ID_PRODUCT_FROM_DATABASE=VT8633 [Apollo Pro266] - -pci:v00001106d00003099* - ID_PRODUCT_FROM_DATABASE=VT8366/A/7 [Apollo KT266/A/333] - -pci:v00001106d00003099sv00001043sd00008064* - ID_PRODUCT_FROM_DATABASE=A7V266-E Mainboard - -pci:v00001106d00003099sv00001043sd0000807F* - ID_PRODUCT_FROM_DATABASE=A7V333 Mainboard - -pci:v00001106d00003099sv00001849sd00003099* - ID_PRODUCT_FROM_DATABASE=K7VT2 motherboard - -pci:v00001106d00003101* - ID_PRODUCT_FROM_DATABASE=VT8653 Host Bridge - -pci:v00001106d00003102* - ID_PRODUCT_FROM_DATABASE=VT8662 Host Bridge - -pci:v00001106d00003103* - ID_PRODUCT_FROM_DATABASE=VT8615 Host Bridge - -pci:v00001106d00003104* - ID_PRODUCT_FROM_DATABASE=USB 2.0 - -pci:v00001106d00003104sv00001019sd00000A81* - ID_PRODUCT_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235) - -pci:v00001106d00003104sv00001043sd0000808C* - ID_PRODUCT_FROM_DATABASE=A7V8X motherboard - -pci:v00001106d00003104sv00001043sd000080A1* - ID_PRODUCT_FROM_DATABASE=A7V8X-X motherboard rev 1.01 - -pci:v00001106d00003104sv00001043sd000080ED* - ID_PRODUCT_FROM_DATABASE=A7V600/K8V-X/A8V Deluxe motherboard - -pci:v00001106d00003104sv00001106sd00003104* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Controller - -pci:v00001106d00003104sv00001297sd0000F641* - ID_PRODUCT_FROM_DATABASE=FX41 motherboard - -pci:v00001106d00003104sv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=GA-7VAX Mainboard - -pci:v00001106d00003104sv00001462sd00005901* - ID_PRODUCT_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) - -pci:v00001106d00003104sv00001462sd00007020* - ID_PRODUCT_FROM_DATABASE=K8T NEO 2 motherboard - -pci:v00001106d00003104sv00001462sd00007094* - ID_PRODUCT_FROM_DATABASE=K8T Neo2-F V2.0 - -pci:v00001106d00003104sv00001462sd00007120* - ID_PRODUCT_FROM_DATABASE=KT4AV motherboard - -pci:v00001106d00003104sv00001462sd00007181* - ID_PRODUCT_FROM_DATABASE=K8MM3-V mainboard - -pci:v00001106d00003104sv0000147Bsd00001407* - ID_PRODUCT_FROM_DATABASE=KV8-MAX3 motherboard - -pci:v00001106d00003104sv0000182Dsd0000201D* - ID_PRODUCT_FROM_DATABASE=CN-029 USB 2.0 4 port PCI Card - -pci:v00001106d00003104sv00001849sd00003104* - ID_PRODUCT_FROM_DATABASE=K7VT series Motherboards - -pci:v00001106d00003104sv000019DAsd0000A179* - ID_PRODUCT_FROM_DATABASE=ZBOX nano VD01 - -pci:v00001106d00003106* - ID_PRODUCT_FROM_DATABASE=VT6105/VT6106S [Rhine-III] - -pci:v00001106d00003106sv00001106sd00000105* - ID_PRODUCT_FROM_DATABASE=VT6106S [Rhine-III] - -pci:v00001106d00003106sv00001186sd00001403* - ID_PRODUCT_FROM_DATABASE=DFE-530TX rev C - -pci:v00001106d00003106sv00001186sd00001405* - ID_PRODUCT_FROM_DATABASE=DFE-520TX Fast Ethernet PCI Adapter - -pci:v00001106d00003106sv00001186sd00001406* - ID_PRODUCT_FROM_DATABASE=DFE-530TX+ rev F2 - -pci:v00001106d00003106sv00001186sd00001407* - ID_PRODUCT_FROM_DATABASE=DFE-538TX - -pci:v00001106d00003108* - ID_PRODUCT_FROM_DATABASE=K8M800/K8N800/K8N800A [S3 UniChrome Pro] - -pci:v00001106d00003109* - ID_PRODUCT_FROM_DATABASE=VT8233C PCI to ISA Bridge - -pci:v00001106d00003112* - ID_PRODUCT_FROM_DATABASE=VT8361 [KLE133] Host Bridge - -pci:v00001106d00003113* - ID_PRODUCT_FROM_DATABASE=VPX/VPX2 PCI to PCI Bridge Controller - -pci:v00001106d00003116* - ID_PRODUCT_FROM_DATABASE=VT8375 [KM266/KL266] Host Bridge - -pci:v00001106d00003116sv00001297sd0000F641* - ID_PRODUCT_FROM_DATABASE=FX41 motherboard - -pci:v00001106d00003118* - ID_PRODUCT_FROM_DATABASE=CN400/PM800/PM880/PN800/PN880 [S3 UniChrome Pro] - -pci:v00001106d00003119* - ID_PRODUCT_FROM_DATABASE=VT6120/VT6121/VT6122 Gigabit Ethernet Adapter - -pci:v00001106d00003122* - ID_PRODUCT_FROM_DATABASE=VT8623 [Apollo CLE266] integrated CastleRock graphics - -pci:v00001106d00003123* - ID_PRODUCT_FROM_DATABASE=VT8623 [Apollo CLE266] - -pci:v00001106d00003128* - ID_PRODUCT_FROM_DATABASE=VT8753 [P4X266 AGP] - -pci:v00001106d00003133* - ID_PRODUCT_FROM_DATABASE=VT3133 Host Bridge - -pci:v00001106d00003142* - ID_PRODUCT_FROM_DATABASE=VT6651 WiFi Adapter, 802.11b - -pci:v00001106d00003147* - ID_PRODUCT_FROM_DATABASE=VT8233A ISA Bridge - -pci:v00001106d00003147sv00001043sd0000808C* - ID_PRODUCT_FROM_DATABASE=A7V333 motherboard - -pci:v00001106d00003148* - ID_PRODUCT_FROM_DATABASE=P4M266 Host Bridge - -pci:v00001106d00003149* - ID_PRODUCT_FROM_DATABASE=VIA VT6420 SATA RAID Controller - -pci:v00001106d00003149sv00001043sd000080ED* - ID_PRODUCT_FROM_DATABASE=A7V600/K8V Deluxe/K8V-X/A8V Deluxe motherboard - -pci:v00001106d00003149sv00001458sd0000B003* - ID_PRODUCT_FROM_DATABASE=GA-7VM400AM(F) Motherboard - -pci:v00001106d00003149sv00001462sd00005901* - ID_PRODUCT_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) - -pci:v00001106d00003149sv00001462sd00007020* - ID_PRODUCT_FROM_DATABASE=K8T Neo 2 Motherboard - -pci:v00001106d00003149sv00001462sd00007094* - ID_PRODUCT_FROM_DATABASE=K8T Neo2-F V2.0 - -pci:v00001106d00003149sv00001462sd00007181* - ID_PRODUCT_FROM_DATABASE=K8MM3-V mainboard - -pci:v00001106d00003149sv0000147Bsd00001407* - ID_PRODUCT_FROM_DATABASE=KV8-MAX3 motherboard - -pci:v00001106d00003149sv0000147Bsd00001408* - ID_PRODUCT_FROM_DATABASE=KV7 - -pci:v00001106d00003149sv00001849sd00003149* - ID_PRODUCT_FROM_DATABASE=K7VT6 motherboard - -pci:v00001106d00003149sv0000A0A0sd000004AD* - ID_PRODUCT_FROM_DATABASE=AK86-L motherboard - -pci:v00001106d00003156* - ID_PRODUCT_FROM_DATABASE=P/KN266 Host Bridge - -pci:v00001106d00003157* - ID_PRODUCT_FROM_DATABASE=CX700/VX700 [S3 UniChrome Pro] - -pci:v00001106d00003164* - ID_PRODUCT_FROM_DATABASE=VT6410 ATA133 RAID controller - -pci:v00001106d00003164sv00001043sd000080F4* - ID_PRODUCT_FROM_DATABASE=P4P800 Mainboard Deluxe ATX - -pci:v00001106d00003164sv00001462sd00007028* - ID_PRODUCT_FROM_DATABASE=915P/G Neo2 - -pci:v00001106d00003168* - ID_PRODUCT_FROM_DATABASE=P4X333/P4X400/PT800 AGP Bridge - -pci:v00001106d00003168sv00001849sd00003168* - ID_PRODUCT_FROM_DATABASE=P4VT8 Mainboard - -pci:v00001106d00003177* - ID_PRODUCT_FROM_DATABASE=VT8235 ISA Bridge - -pci:v00001106d00003177sv00001019sd00000A81* - ID_PRODUCT_FROM_DATABASE=L7VTA v1.0 Motherboard (KT400-8235) - -pci:v00001106d00003177sv00001043sd0000808C* - ID_PRODUCT_FROM_DATABASE=A7V8X motherboard - -pci:v00001106d00003177sv00001043sd000080A1* - ID_PRODUCT_FROM_DATABASE=A7V8X-X motherboard - -pci:v00001106d00003177sv00001106sd00000000* - ID_PRODUCT_FROM_DATABASE=KT4AV motherboard - -pci:v00001106d00003177sv00001297sd0000F641* - ID_PRODUCT_FROM_DATABASE=FX41 motherboard - -pci:v00001106d00003177sv00001458sd00005001* - ID_PRODUCT_FROM_DATABASE=GA-7VAX Mainboard - -pci:v00001106d00003177sv00001849sd00003177* - ID_PRODUCT_FROM_DATABASE=K7VT series Motherboards - -pci:v00001106d00003178* - ID_PRODUCT_FROM_DATABASE=ProSavageDDR P4N333 Host Bridge - -pci:v00001106d00003188* - ID_PRODUCT_FROM_DATABASE=VT8385 [K8T800 AGP] Host Bridge - -pci:v00001106d00003188sv00001043sd000080A3* - ID_PRODUCT_FROM_DATABASE=K8V Deluxe/K8V-X motherboard - -pci:v00001106d00003188sv0000147Bsd00001407* - ID_PRODUCT_FROM_DATABASE=KV8-MAX3 motherboard - -pci:v00001106d00003189* - ID_PRODUCT_FROM_DATABASE=VT8377 [KT400/KT600 AGP] Host Bridge - -pci:v00001106d00003189sv00001043sd0000807F* - ID_PRODUCT_FROM_DATABASE=A7V8X motherboard - -pci:v00001106d00003189sv00001106sd00000000* - ID_PRODUCT_FROM_DATABASE=KT4AV motherboard (KT400A) - -pci:v00001106d00003189sv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-7VAX Mainboard - -pci:v00001106d00003189sv00001849sd00003189* - ID_PRODUCT_FROM_DATABASE=K7VT series Motherboards - -pci:v00001106d00003204* - ID_PRODUCT_FROM_DATABASE=K8M800 Host Bridge - -pci:v00001106d00003205* - ID_PRODUCT_FROM_DATABASE=VT8378 [KM400/A] Chipset Host Bridge - -pci:v00001106d00003205sv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-7VM400M Motherboard - -pci:v00001106d00003208* - ID_PRODUCT_FROM_DATABASE=PT890 Host Bridge - -pci:v00001106d00003213* - ID_PRODUCT_FROM_DATABASE=VPX/VPX2 PCI to PCI Bridge Controller - -pci:v00001106d00003218* - ID_PRODUCT_FROM_DATABASE=K8T800M Host Bridge - -pci:v00001106d00003227* - ID_PRODUCT_FROM_DATABASE=VT8237 ISA bridge [KT600/K8T800/K8T890 South] - -pci:v00001106d00003227sv00001043sd000080ED* - ID_PRODUCT_FROM_DATABASE=A7V600/K8V-X/A8V Deluxe motherboard - -pci:v00001106d00003227sv00001106sd00003227* - ID_PRODUCT_FROM_DATABASE=DFI KT600-AL / Soltek SL-B9D-FGR Motherboard - -pci:v00001106d00003227sv00001458sd00005001* - ID_PRODUCT_FROM_DATABASE=GA-7VT600 Motherboard - -pci:v00001106d00003227sv0000147Bsd00001407* - ID_PRODUCT_FROM_DATABASE=KV8-MAX3 motherboard - -pci:v00001106d00003227sv00001849sd00003227* - ID_PRODUCT_FROM_DATABASE=K7VT4 motherboard - -pci:v00001106d00003230* - ID_PRODUCT_FROM_DATABASE=K8M890CE/K8N890CE [Chrome 9] - -pci:v00001106d00003238* - ID_PRODUCT_FROM_DATABASE=K8T890 Host Bridge - -pci:v00001106d00003249* - ID_PRODUCT_FROM_DATABASE=VT6421 IDE/SATA Controller - -pci:v00001106d0000324A* - ID_PRODUCT_FROM_DATABASE=CX700/VX700 PCI to PCI Bridge - -pci:v00001106d0000324B* - ID_PRODUCT_FROM_DATABASE=CX700/VX700 Host Bridge - -pci:v00001106d0000324E* - ID_PRODUCT_FROM_DATABASE=CX700/VX700 Internal Module Bus - -pci:v00001106d00003253* - ID_PRODUCT_FROM_DATABASE=VT6655 WiFi Adapter, 802.11a/b/g - -pci:v00001106d00003258* - ID_PRODUCT_FROM_DATABASE=PT880 Host Bridge - -pci:v00001106d00003259* - ID_PRODUCT_FROM_DATABASE=CN333/CN400/PM880 Host Bridge - -pci:v00001106d00003260* - ID_PRODUCT_FROM_DATABASE=VIA Chrome9 HC IGP - -pci:v00001106d00003269* - ID_PRODUCT_FROM_DATABASE=KT880 Host Bridge - -pci:v00001106d00003282* - ID_PRODUCT_FROM_DATABASE=K8T800Pro Host Bridge - -pci:v00001106d00003287* - ID_PRODUCT_FROM_DATABASE=VT8251 PCI to ISA Bridge - -pci:v00001106d00003288* - ID_PRODUCT_FROM_DATABASE=VT8237A/VT8251 HDA Controller - -pci:v00001106d00003288sv000019DAsd0000A179* - ID_PRODUCT_FROM_DATABASE=ZBOX VD01 - -pci:v00001106d00003290* - ID_PRODUCT_FROM_DATABASE=K8M890 Host Bridge - -pci:v00001106d00003296* - ID_PRODUCT_FROM_DATABASE=P4M800 Host Bridge - -pci:v00001106d00003324* - ID_PRODUCT_FROM_DATABASE=CX700/VX700 Host Bridge - -pci:v00001106d00003327* - ID_PRODUCT_FROM_DATABASE=P4M890 Host Bridge - -pci:v00001106d00003336* - ID_PRODUCT_FROM_DATABASE=K8M890CE Host Bridge - -pci:v00001106d00003337* - ID_PRODUCT_FROM_DATABASE=VT8237A PCI to ISA Bridge - -pci:v00001106d00003340* - ID_PRODUCT_FROM_DATABASE=PT900 Host Bridge - -pci:v00001106d00003343* - ID_PRODUCT_FROM_DATABASE=P4M890 [S3 UniChrome Pro] - -pci:v00001106d00003344* - ID_PRODUCT_FROM_DATABASE=CN700/P4M800 Pro/P4M800 CE/VN800 Graphics [S3 UniChrome Pro] - -pci:v00001106d00003349* - ID_PRODUCT_FROM_DATABASE=VT8251 AHCI/SATA 4-Port Controller - -pci:v00001106d00003351* - ID_PRODUCT_FROM_DATABASE=VT3351 Host Bridge - -pci:v00001106d00003353* - ID_PRODUCT_FROM_DATABASE=VX800 PCI to PCI Bridge - -pci:v00001106d00003364* - ID_PRODUCT_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge - -pci:v00001106d00003371* - ID_PRODUCT_FROM_DATABASE=CN896/VN896/P4M900 [Chrome 9 HC] - -pci:v00001106d00003372* - ID_PRODUCT_FROM_DATABASE=VT8237S PCI to ISA Bridge - -pci:v00001106d0000337A* - ID_PRODUCT_FROM_DATABASE=VT8237A PCI to PCI Bridge - -pci:v00001106d0000337B* - ID_PRODUCT_FROM_DATABASE=VT8237A Host Bridge - -pci:v00001106d00003403* - ID_PRODUCT_FROM_DATABASE=VT6315 Series Firewire Controller - -pci:v00001106d00003403sv00001043sd00008374* - ID_PRODUCT_FROM_DATABASE=M5A88-V EVO - -pci:v00001106d00003403sv00001043sd00008384* - ID_PRODUCT_FROM_DATABASE=P8P67 Deluxe Motherboard - -pci:v00001106d00003409* - ID_PRODUCT_FROM_DATABASE=VX855/VX875 DRAM Bus Control - -pci:v00001106d00003410* - ID_PRODUCT_FROM_DATABASE=VX900 DRAM Bus Control - -pci:v00001106d00003410sv000019DAsd0000A179* - ID_PRODUCT_FROM_DATABASE=ZBOX nano VD01 - -pci:v00001106d00003432* - ID_PRODUCT_FROM_DATABASE=VL80x xHCI USB 3.0 Controller - -pci:v00001106d00004149* - ID_PRODUCT_FROM_DATABASE=VIA VT6420 (ATA133) Controller - -pci:v00001106d00004204* - ID_PRODUCT_FROM_DATABASE=K8M800 Host Bridge - -pci:v00001106d00004208* - ID_PRODUCT_FROM_DATABASE=PT890 Host Bridge - -pci:v00001106d00004238* - ID_PRODUCT_FROM_DATABASE=K8T890 Host Bridge - -pci:v00001106d00004258* - ID_PRODUCT_FROM_DATABASE=PT880 Host Bridge - -pci:v00001106d00004259* - ID_PRODUCT_FROM_DATABASE=CN333/CN400/PM880 Host Bridge - -pci:v00001106d00004269* - ID_PRODUCT_FROM_DATABASE=KT880 Host Bridge - -pci:v00001106d00004282* - ID_PRODUCT_FROM_DATABASE=K8T800Pro Host Bridge - -pci:v00001106d00004290* - ID_PRODUCT_FROM_DATABASE=K8M890 Host Bridge - -pci:v00001106d00004293* - ID_PRODUCT_FROM_DATABASE=PM896 Host Bridge - -pci:v00001106d00004296* - ID_PRODUCT_FROM_DATABASE=P4M800 Host Bridge - -pci:v00001106d00004308* - ID_PRODUCT_FROM_DATABASE=PT894 Host Bridge - -pci:v00001106d00004314* - ID_PRODUCT_FROM_DATABASE=CN700/VN800/P4M800CE/Pro Host Bridge - -pci:v00001106d00004324* - ID_PRODUCT_FROM_DATABASE=CX700/VX700 Host Bridge - -pci:v00001106d00004327* - ID_PRODUCT_FROM_DATABASE=P4M890 Host Bridge - -pci:v00001106d00004336* - ID_PRODUCT_FROM_DATABASE=K8M890CE Host Bridge - -pci:v00001106d00004340* - ID_PRODUCT_FROM_DATABASE=PT900 Host Bridge - -pci:v00001106d00004351* - ID_PRODUCT_FROM_DATABASE=VT3351 Host Bridge - -pci:v00001106d00004353* - ID_PRODUCT_FROM_DATABASE=VX800/VX820 Power Management Control - -pci:v00001106d00004364* - ID_PRODUCT_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge - -pci:v00001106d00004409* - ID_PRODUCT_FROM_DATABASE=VX855/VX875 Power Management Control - -pci:v00001106d00004410* - ID_PRODUCT_FROM_DATABASE=VX900 Power Management and Chip Testing Control - -pci:v00001106d00004410sv000019DAsd0000A179* - ID_PRODUCT_FROM_DATABASE=ZBOX nano VD01 - -pci:v00001106d00005030* - ID_PRODUCT_FROM_DATABASE=VT82C596 ACPI [Apollo PRO] - -pci:v00001106d00005122* - ID_PRODUCT_FROM_DATABASE=VX855/VX875 Chrome 9 HCM Integrated Graphics - -pci:v00001106d00005208* - ID_PRODUCT_FROM_DATABASE=PT890 I/O APIC Interrupt Controller - -pci:v00001106d00005238* - ID_PRODUCT_FROM_DATABASE=K8T890 I/O APIC Interrupt Controller - -pci:v00001106d00005287* - ID_PRODUCT_FROM_DATABASE=VT8251 Serial ATA Controller - -pci:v00001106d00005290* - ID_PRODUCT_FROM_DATABASE=K8M890 I/O APIC Interrupt Controller - -pci:v00001106d00005308* - ID_PRODUCT_FROM_DATABASE=PT894 I/O APIC Interrupt Controller - -pci:v00001106d00005324* - ID_PRODUCT_FROM_DATABASE=VX800 Serial ATA and EIDE Controller - -pci:v00001106d00005327* - ID_PRODUCT_FROM_DATABASE=P4M890 I/O APIC Interrupt Controller - -pci:v00001106d00005336* - ID_PRODUCT_FROM_DATABASE=K8M890CE I/O APIC Interrupt Controller - -pci:v00001106d00005340* - ID_PRODUCT_FROM_DATABASE=PT900 I/O APIC Interrupt Controller - -pci:v00001106d00005351* - ID_PRODUCT_FROM_DATABASE=VT3351 I/O APIC Interrupt Controller - -pci:v00001106d00005353* - ID_PRODUCT_FROM_DATABASE=VX800/VX820 APIC and Central Traffic Control - -pci:v00001106d00005364* - ID_PRODUCT_FROM_DATABASE=CN896/VN896/P4M900 I/O APIC Interrupt Controller - -pci:v00001106d00005372* - ID_PRODUCT_FROM_DATABASE=VT8237/8251 Serial ATA Controller - -pci:v00001106d00005409* - ID_PRODUCT_FROM_DATABASE=VX855/VX875 APIC and Central Traffic Control - -pci:v00001106d00005410* - ID_PRODUCT_FROM_DATABASE=VX900 APIC and Central Traffic Control - -pci:v00001106d00006100* - ID_PRODUCT_FROM_DATABASE=VT85C100A [Rhine II] - -pci:v00001106d00006287* - ID_PRODUCT_FROM_DATABASE=SATA RAID Controller - -pci:v00001106d00006290* - ID_PRODUCT_FROM_DATABASE=K8M890CE Host Bridge - -pci:v00001106d00006327* - ID_PRODUCT_FROM_DATABASE=P4M890 Security Device - -pci:v00001106d00006353* - ID_PRODUCT_FROM_DATABASE=VX800/VX820 Scratch Registers - -pci:v00001106d00006364* - ID_PRODUCT_FROM_DATABASE=CN896/VN896/P4M900 Security Device - -pci:v00001106d00006409* - ID_PRODUCT_FROM_DATABASE=VX855/VX875 Scratch Registers - -pci:v00001106d00006410* - ID_PRODUCT_FROM_DATABASE=VX900 Scratch Registers - -pci:v00001106d00006410sv000019DAsd0000A179* - ID_PRODUCT_FROM_DATABASE=ZBOX nano VD01 - -pci:v00001106d00007122* - ID_PRODUCT_FROM_DATABASE=VX900 Graphics [Chrome9 HD] - -pci:v00001106d00007204* - ID_PRODUCT_FROM_DATABASE=K8M800 Host Bridge - -pci:v00001106d00007205* - ID_PRODUCT_FROM_DATABASE=KM400/KN400/P4M800 [S3 UniChrome] - -pci:v00001106d00007205sv00001458sd0000D000* - ID_PRODUCT_FROM_DATABASE=Gigabyte GA-7VM400(A)M(F) Motherboard - -pci:v00001106d00007205sv00001462sd00007061* - ID_PRODUCT_FROM_DATABASE=MS-7061 - -pci:v00001106d00007208* - ID_PRODUCT_FROM_DATABASE=PT890 Host Bridge - -pci:v00001106d00007238* - ID_PRODUCT_FROM_DATABASE=K8T890 Host Bridge - -pci:v00001106d00007258* - ID_PRODUCT_FROM_DATABASE=PT880 Host Bridge - -pci:v00001106d00007259* - ID_PRODUCT_FROM_DATABASE=CN333/CN400/PM880 Host Bridge - -pci:v00001106d00007269* - ID_PRODUCT_FROM_DATABASE=KT880 Host Bridge - -pci:v00001106d00007282* - ID_PRODUCT_FROM_DATABASE=K8T800Pro Host Bridge - -pci:v00001106d00007290* - ID_PRODUCT_FROM_DATABASE=K8M890 Host Bridge - -pci:v00001106d00007293* - ID_PRODUCT_FROM_DATABASE=PM896 Host Bridge - -pci:v00001106d00007296* - ID_PRODUCT_FROM_DATABASE=P4M800 Host Bridge - -pci:v00001106d00007308* - ID_PRODUCT_FROM_DATABASE=PT894 Host Bridge - -pci:v00001106d00007314* - ID_PRODUCT_FROM_DATABASE=CN700/VN800/P4M800CE/Pro Host Bridge - -pci:v00001106d00007324* - ID_PRODUCT_FROM_DATABASE=CX700/VX700 Host Bridge - -pci:v00001106d00007327* - ID_PRODUCT_FROM_DATABASE=P4M890 Host Bridge - -pci:v00001106d00007336* - ID_PRODUCT_FROM_DATABASE=K8M890CE Host Bridge - -pci:v00001106d00007340* - ID_PRODUCT_FROM_DATABASE=PT900 Host Bridge - -pci:v00001106d00007351* - ID_PRODUCT_FROM_DATABASE=VT3351 Host Bridge - -pci:v00001106d00007353* - ID_PRODUCT_FROM_DATABASE=VX800/VX820 North-South Module Interface Control - -pci:v00001106d00007364* - ID_PRODUCT_FROM_DATABASE=CN896/VN896/P4M900 Host Bridge - -pci:v00001106d00007409* - ID_PRODUCT_FROM_DATABASE=VX855/VX875 North-South Module Interface Control - -pci:v00001106d00007410* - ID_PRODUCT_FROM_DATABASE=VX900 North-South Module Interface Control - -pci:v00001106d00007410sv000019DAsd0000A179* - ID_PRODUCT_FROM_DATABASE=ZBOX nano VD01 - -pci:v00001106d00008231* - ID_PRODUCT_FROM_DATABASE=VT8231 [PCI-to-ISA Bridge] - -pci:v00001106d00008235* - ID_PRODUCT_FROM_DATABASE=VT8235 ACPI - -pci:v00001106d00008305* - ID_PRODUCT_FROM_DATABASE=VT8363/8365 [KT133/KM133 AGP] - -pci:v00001106d00008324* - ID_PRODUCT_FROM_DATABASE=CX700/VX700 PCI to ISA Bridge - -pci:v00001106d00008353* - ID_PRODUCT_FROM_DATABASE=VX800/VX820 Bus Control and Power Management - -pci:v00001106d00008391* - ID_PRODUCT_FROM_DATABASE=VT8371 [KX133 AGP] - -pci:v00001106d00008400* - ID_PRODUCT_FROM_DATABASE=MVP4 - -pci:v00001106d00008409* - ID_PRODUCT_FROM_DATABASE=VX855/VX875 Bus Control and Power Management - -pci:v00001106d00008410* - ID_PRODUCT_FROM_DATABASE=VX900 Bus Control and Power Management - -pci:v00001106d00008410sv000019DAsd0000A179* - ID_PRODUCT_FROM_DATABASE=ZBOX VD01 - -pci:v00001106d00008500* - ID_PRODUCT_FROM_DATABASE=KLE133/PLE133/PLE133T - -pci:v00001106d00008501* - ID_PRODUCT_FROM_DATABASE=VT8501 [Apollo MVP4 AGP] - -pci:v00001106d00008596* - ID_PRODUCT_FROM_DATABASE=VT82C596 [Apollo PRO AGP] - -pci:v00001106d00008597* - ID_PRODUCT_FROM_DATABASE=VT82C597 [Apollo VP3 AGP] - -pci:v00001106d00008598* - ID_PRODUCT_FROM_DATABASE=VT82C598/694x [Apollo MVP3/Pro133x AGP] - -pci:v00001106d00008598sv00001019sd00000985* - ID_PRODUCT_FROM_DATABASE=P6VXA Motherboard - -pci:v00001106d00008601* - ID_PRODUCT_FROM_DATABASE=VT8601 [Apollo ProMedia AGP] - -pci:v00001106d00008605* - ID_PRODUCT_FROM_DATABASE=VT8605 [PM133 AGP] - -pci:v00001106d00008691* - ID_PRODUCT_FROM_DATABASE=VT82C691 [Apollo Pro] - -pci:v00001106d00008693* - ID_PRODUCT_FROM_DATABASE=VT82C693 [Apollo Pro Plus] PCI Bridge - -pci:v00001106d00008A25* - ID_PRODUCT_FROM_DATABASE=PL133/PL133T [S3 ProSavage] - -pci:v00001106d00008A26* - ID_PRODUCT_FROM_DATABASE=KL133/KL133A/KM133/KM133A [S3 ProSavage] - -pci:v00001106d00008D01* - ID_PRODUCT_FROM_DATABASE=PN133/PN133T [S3 Twister] - -pci:v00001106d00008D04* - ID_PRODUCT_FROM_DATABASE=KM266/P4M266/P4M266A/P4N266 [S3 ProSavageDDR] - -pci:v00001106d00009001* - ID_PRODUCT_FROM_DATABASE=VX900 Serial ATA Controller - -pci:v00001106d00009530* - ID_PRODUCT_FROM_DATABASE=Secure Digital Memory Card Controller - -pci:v00001106d000095D0* - ID_PRODUCT_FROM_DATABASE=SDIO Host Controller - -pci:v00001106d0000A208* - ID_PRODUCT_FROM_DATABASE=PT890 PCI to PCI Bridge Controller - -pci:v00001106d0000A238* - ID_PRODUCT_FROM_DATABASE=K8T890 PCI to PCI Bridge Controller - -pci:v00001106d0000A327* - ID_PRODUCT_FROM_DATABASE=P4M890 PCI to PCI Bridge Controller - -pci:v00001106d0000A353* - ID_PRODUCT_FROM_DATABASE=VX8xx South-North Module Interface Control - -pci:v00001106d0000A364* - ID_PRODUCT_FROM_DATABASE=CN896/VN896/P4M900 PCI to PCI Bridge Controller - -pci:v00001106d0000A409* - ID_PRODUCT_FROM_DATABASE=VX855/VX875 USB Device Controller - -pci:v00001106d0000A410* - ID_PRODUCT_FROM_DATABASE=VX900 PCI Express Root Port 0 - -pci:v00001106d0000B091* - ID_PRODUCT_FROM_DATABASE=VT8633 [Apollo Pro266 AGP] - -pci:v00001106d0000B099* - ID_PRODUCT_FROM_DATABASE=VT8366/A/7 [Apollo KT266/A/333 AGP] - -pci:v00001106d0000B101* - ID_PRODUCT_FROM_DATABASE=VT8653 AGP Bridge - -pci:v00001106d0000B102* - ID_PRODUCT_FROM_DATABASE=VT8362 AGP Bridge - -pci:v00001106d0000B103* - ID_PRODUCT_FROM_DATABASE=VT8615 AGP Bridge - -pci:v00001106d0000B112* - ID_PRODUCT_FROM_DATABASE=VT8361 [KLE133] AGP Bridge - -pci:v00001106d0000B113* - ID_PRODUCT_FROM_DATABASE=VPX/VPX2 I/O APIC Interrupt Controller - -pci:v00001106d0000B115* - ID_PRODUCT_FROM_DATABASE=VT8363/8365 [KT133/KM133] PCI Bridge - -pci:v00001106d0000B168* - ID_PRODUCT_FROM_DATABASE=VT8235 PCI Bridge - -pci:v00001106d0000B188* - ID_PRODUCT_FROM_DATABASE=VT8237/8251 PCI bridge [K8M890/K8T800/K8T890 South] - -pci:v00001106d0000B188sv0000147Bsd00001407* - ID_PRODUCT_FROM_DATABASE=KV8-MAX3 motherboard - -pci:v00001106d0000B198* - ID_PRODUCT_FROM_DATABASE=VT8237/VX700 PCI Bridge - -pci:v00001106d0000B213* - ID_PRODUCT_FROM_DATABASE=VPX/VPX2 I/O APIC Interrupt Controller - -pci:v00001106d0000B353* - ID_PRODUCT_FROM_DATABASE=VX855/VX875/VX900 PCI to PCI Bridge - -pci:v00001106d0000B410* - ID_PRODUCT_FROM_DATABASE=VX900 PCI Express Root Port 1 - -pci:v00001106d0000B999* - ID_PRODUCT_FROM_DATABASE=[K8T890 North / VT8237 South] PCI Bridge - -pci:v00001106d0000C208* - ID_PRODUCT_FROM_DATABASE=PT890 PCI to PCI Bridge Controller - -pci:v00001106d0000C238* - ID_PRODUCT_FROM_DATABASE=K8T890 PCI to PCI Bridge Controller - -pci:v00001106d0000C327* - ID_PRODUCT_FROM_DATABASE=P4M890 PCI to PCI Bridge Controller - -pci:v00001106d0000C340* - ID_PRODUCT_FROM_DATABASE=PT900 PCI to PCI Bridge Controller - -pci:v00001106d0000C353* - ID_PRODUCT_FROM_DATABASE=VX800/VX820 PCI Express Root Port - -pci:v00001106d0000C364* - ID_PRODUCT_FROM_DATABASE=CN896/VN896/P4M900 PCI to PCI Bridge Controller - -pci:v00001106d0000C409* - ID_PRODUCT_FROM_DATABASE=VX855/VX875 EIDE Controller - -pci:v00001106d0000C410* - ID_PRODUCT_FROM_DATABASE=VX900 PCI Express Root Port 2 - -pci:v00001106d0000D104* - ID_PRODUCT_FROM_DATABASE=VT8237R USB UDCI Controller - -pci:v00001106d0000D208* - ID_PRODUCT_FROM_DATABASE=PT890 PCI to PCI Bridge Controller - -pci:v00001106d0000D213* - ID_PRODUCT_FROM_DATABASE=VPX/VPX2 PCI to PCI Bridge Controller - -pci:v00001106d0000D238* - ID_PRODUCT_FROM_DATABASE=K8T890 PCI to PCI Bridge Controller - -pci:v00001106d0000D340* - ID_PRODUCT_FROM_DATABASE=PT900 PCI to PCI Bridge Controller - -pci:v00001106d0000D410* - ID_PRODUCT_FROM_DATABASE=VX900 PCI Express Root Port 3 - -pci:v00001106d0000E208* - ID_PRODUCT_FROM_DATABASE=PT890 PCI to PCI Bridge Controller - -pci:v00001106d0000E238* - ID_PRODUCT_FROM_DATABASE=K8T890 PCI to PCI Bridge Controller - -pci:v00001106d0000E340* - ID_PRODUCT_FROM_DATABASE=PT900 PCI to PCI Bridge Controller - -pci:v00001106d0000E353* - ID_PRODUCT_FROM_DATABASE=VX800/VX820 PCI Express Root Port - -pci:v00001106d0000F208* - ID_PRODUCT_FROM_DATABASE=PT890 PCI to PCI Bridge Controller - -pci:v00001106d0000F238* - ID_PRODUCT_FROM_DATABASE=K8T890 PCI to PCI Bridge Controller - -pci:v00001106d0000F340* - ID_PRODUCT_FROM_DATABASE=PT900 PCI to PCI Bridge Controller - -pci:v00001106d0000F353* - ID_PRODUCT_FROM_DATABASE=VX800/VX820 PCI Express Root Port - -pci:v00001107* - ID_VENDOR_FROM_DATABASE=Stratus Computers - -pci:v00001107d00000576* - ID_PRODUCT_FROM_DATABASE=VIA VT82C570MV [Apollo] (Wrong vendor ID!) - -pci:v00001108* - ID_VENDOR_FROM_DATABASE=Proteon, Inc. - -pci:v00001108d00000100* - ID_PRODUCT_FROM_DATABASE=p1690plus_AA - -pci:v00001108d00000101* - ID_PRODUCT_FROM_DATABASE=p1690plus_AB - -pci:v00001108d00000105* - ID_PRODUCT_FROM_DATABASE=P1690Plus - -pci:v00001108d00000108* - ID_PRODUCT_FROM_DATABASE=P1690Plus - -pci:v00001108d00000138* - ID_PRODUCT_FROM_DATABASE=P1690Plus - -pci:v00001108d00000139* - ID_PRODUCT_FROM_DATABASE=P1690Plus - -pci:v00001108d0000013C* - ID_PRODUCT_FROM_DATABASE=P1690Plus - -pci:v00001108d0000013D* - ID_PRODUCT_FROM_DATABASE=P1690Plus - -pci:v00001109* - ID_VENDOR_FROM_DATABASE=Cogent Data Technologies, Inc. - -pci:v00001109d00001400* - ID_PRODUCT_FROM_DATABASE=EM110TX [EX110TX] - -pci:v0000110A* - ID_VENDOR_FROM_DATABASE=Siemens Nixdorf AG - -pci:v0000110Ad00000002* - ID_PRODUCT_FROM_DATABASE=Pirahna 2-port - -pci:v0000110Ad00000005* - ID_PRODUCT_FROM_DATABASE=Tulip controller, power management, switch extender - -pci:v0000110Ad00000006* - ID_PRODUCT_FROM_DATABASE=FSC PINC (I/O-APIC) - -pci:v0000110Ad00000015* - ID_PRODUCT_FROM_DATABASE=FSC Multiprocessor Interrupt Controller - -pci:v0000110Ad0000001D* - ID_PRODUCT_FROM_DATABASE=FSC Copernicus Management Controller - -pci:v0000110Ad0000007B* - ID_PRODUCT_FROM_DATABASE=FSC Remote Service Controller, mailbox device - -pci:v0000110Ad0000007C* - ID_PRODUCT_FROM_DATABASE=FSC Remote Service Controller, shared memory device - -pci:v0000110Ad0000007D* - ID_PRODUCT_FROM_DATABASE=FSC Remote Service Controller, SMIC device - -pci:v0000110Ad00002101* - ID_PRODUCT_FROM_DATABASE=HST SAPHIR V Primary PCI (ISDN/PMx) - -pci:v0000110Ad00002102* - ID_PRODUCT_FROM_DATABASE=DSCC4 PEB/PEF 20534 DMA Supported Serial Communication Controller with 4 Channels - -pci:v0000110Ad00002104* - ID_PRODUCT_FROM_DATABASE=Eicon Diva 2.02 compatible passive ISDN card - -pci:v0000110Ad00003141* - ID_PRODUCT_FROM_DATABASE=SIMATIC NET CP 5611 (Profibus Adapter) - -pci:v0000110Ad00003142* - ID_PRODUCT_FROM_DATABASE=SIMATIC NET CP 5613A1 (Profibus Adapter) - -pci:v0000110Ad00004021* - ID_PRODUCT_FROM_DATABASE=SIMATIC NET CP 5512 (Profibus and MPI Cardbus Adapter) - -pci:v0000110Ad00004029* - ID_PRODUCT_FROM_DATABASE=SIMATIC NET CP 5613A2 (Profibus Adapter) - -pci:v0000110Ad00004035* - ID_PRODUCT_FROM_DATABASE=SIMATIC NET CP 1613 A2 - -pci:v0000110Ad00004942* - ID_PRODUCT_FROM_DATABASE=FPGA I-Bus Tracer for MBD - -pci:v0000110Ad00006120* - ID_PRODUCT_FROM_DATABASE=SZB6120 - -pci:v0000110B* - ID_VENDOR_FROM_DATABASE=Chromatic Research Inc. - -pci:v0000110Bd00000001* - ID_PRODUCT_FROM_DATABASE=Mpact Media Processor - -pci:v0000110Bd00000004* - ID_PRODUCT_FROM_DATABASE=Mpact 2 - -pci:v0000110C* - ID_VENDOR_FROM_DATABASE=Mini-Max Technology, Inc. - -pci:v0000110D* - ID_VENDOR_FROM_DATABASE=Znyx Advanced Systems - -pci:v0000110E* - ID_VENDOR_FROM_DATABASE=CPU Technology - -pci:v0000110F* - ID_VENDOR_FROM_DATABASE=Ross Technology - -pci:v00001110* - ID_VENDOR_FROM_DATABASE=Powerhouse Systems - -pci:v00001110d00006037* - ID_PRODUCT_FROM_DATABASE=Firepower Powerized SMP I/O ASIC - -pci:v00001110d00006073* - ID_PRODUCT_FROM_DATABASE=Firepower Powerized SMP I/O ASIC - -pci:v00001111* - ID_VENDOR_FROM_DATABASE=Santa Cruz Operation - -pci:v00001112* - ID_VENDOR_FROM_DATABASE=Osicom Technologies Inc - -pci:v00001112d00002200* - ID_PRODUCT_FROM_DATABASE=FDDI Adapter - -pci:v00001112d00002300* - ID_PRODUCT_FROM_DATABASE=Fast Ethernet Adapter - -pci:v00001112d00002340* - ID_PRODUCT_FROM_DATABASE=4 Port Fast Ethernet Adapter - -pci:v00001112d00002400* - ID_PRODUCT_FROM_DATABASE=ATM Adapter - -pci:v00001113* - ID_VENDOR_FROM_DATABASE=Accton Technology Corporation - -pci:v00001113d00001211* - ID_PRODUCT_FROM_DATABASE=SMC2-1211TX - -pci:v00001113d00001211sv0000103Csd00001207* - ID_PRODUCT_FROM_DATABASE=EN-1207D Fast Ethernet Adapter - -pci:v00001113d00001211sv00001113sd00001211* - ID_PRODUCT_FROM_DATABASE=EN-1207D Fast Ethernet Adapter - -pci:v00001113d00001216* - ID_PRODUCT_FROM_DATABASE=EN-1216 Ethernet Adapter - -pci:v00001113d00001216sv00001113sd00001216* - ID_PRODUCT_FROM_DATABASE=EN1207F series PCI Fast Ethernet Adapter - -pci:v00001113d00001216sv00001113sd00002220* - ID_PRODUCT_FROM_DATABASE=EN2220A Cardbus Fast Ethernet Adapter - -pci:v00001113d00001216sv00001113sd00002242* - ID_PRODUCT_FROM_DATABASE=EN2242 10/100 Ethernet Mini-PCI Card - -pci:v00001113d00001216sv0000111Asd00001020* - ID_PRODUCT_FROM_DATABASE=SpeedStream 1020 PCI 10/100 Ethernet Adaptor [EN-1207F-TX ?] - -pci:v00001113d00001217* - ID_PRODUCT_FROM_DATABASE=EN-1217 Ethernet Adapter - -pci:v00001113d00005105* - ID_PRODUCT_FROM_DATABASE=10Mbps Network card - -pci:v00001113d00009211* - ID_PRODUCT_FROM_DATABASE=EN-1207D Fast Ethernet Adapter - -pci:v00001113d00009211sv00001113sd00009211* - ID_PRODUCT_FROM_DATABASE=EN-1207D Fast Ethernet Adapter - -pci:v00001113d00009511* - ID_PRODUCT_FROM_DATABASE=21x4x DEC-Tulip compatible Fast Ethernet - -pci:v00001113d0000D301* - ID_PRODUCT_FROM_DATABASE=CPWNA100 (Philips wireless PCMCIA) - -pci:v00001113d0000EC02* - ID_PRODUCT_FROM_DATABASE=SMC 1244TX v3 - -pci:v00001113d0000EE23* - ID_PRODUCT_FROM_DATABASE=SMCWPCIT-G 108Mbps Wireless PCI adapter - -pci:v00001114* - ID_VENDOR_FROM_DATABASE=Atmel Corporation - -pci:v00001114d00000506* - ID_PRODUCT_FROM_DATABASE=at76c506 802.11b Wireless Network Adaptor - -pci:v00001115* - ID_VENDOR_FROM_DATABASE=3D Labs - -pci:v00001116* - ID_VENDOR_FROM_DATABASE=Data Translation - -pci:v00001116d00000022* - ID_PRODUCT_FROM_DATABASE=DT3001 - -pci:v00001116d00000023* - ID_PRODUCT_FROM_DATABASE=DT3002 - -pci:v00001116d00000024* - ID_PRODUCT_FROM_DATABASE=DT3003 - -pci:v00001116d00000025* - ID_PRODUCT_FROM_DATABASE=DT3004 - -pci:v00001116d00000026* - ID_PRODUCT_FROM_DATABASE=DT3005 - -pci:v00001116d00000027* - ID_PRODUCT_FROM_DATABASE=DT3001-PGL - -pci:v00001116d00000028* - ID_PRODUCT_FROM_DATABASE=DT3003-PGL - -pci:v00001116d00000051* - ID_PRODUCT_FROM_DATABASE=DT322 - -pci:v00001116d00000060* - ID_PRODUCT_FROM_DATABASE=DT340 - -pci:v00001116d00000069* - ID_PRODUCT_FROM_DATABASE=DT332 - -pci:v00001116d000080C2* - ID_PRODUCT_FROM_DATABASE=DT3162 - -pci:v00001117* - ID_VENDOR_FROM_DATABASE=Datacube, Inc - -pci:v00001117d00009500* - ID_PRODUCT_FROM_DATABASE=Max-1C SVGA card - -pci:v00001117d00009501* - ID_PRODUCT_FROM_DATABASE=Max-1C image processing - -pci:v00001118* - ID_VENDOR_FROM_DATABASE=Berg Electronics - -pci:v00001119* - ID_VENDOR_FROM_DATABASE=ICP Vortex Computersysteme GmbH - -pci:v00001119d00000000* - ID_PRODUCT_FROM_DATABASE=GDT 6000/6020/6050 - -pci:v00001119d00000001* - ID_PRODUCT_FROM_DATABASE=GDT 6000B/6010 - -pci:v00001119d00000002* - ID_PRODUCT_FROM_DATABASE=GDT 6110/6510 - -pci:v00001119d00000003* - ID_PRODUCT_FROM_DATABASE=GDT 6120/6520 - -pci:v00001119d00000004* - ID_PRODUCT_FROM_DATABASE=GDT 6530 - -pci:v00001119d00000005* - ID_PRODUCT_FROM_DATABASE=GDT 6550 - -pci:v00001119d00000006* - ID_PRODUCT_FROM_DATABASE=GDT 6117/6517 - -pci:v00001119d00000007* - ID_PRODUCT_FROM_DATABASE=GDT 6127/6527 - -pci:v00001119d00000008* - ID_PRODUCT_FROM_DATABASE=GDT 6537 - -pci:v00001119d00000009* - ID_PRODUCT_FROM_DATABASE=GDT 6557/6557-ECC - -pci:v00001119d0000000A* - ID_PRODUCT_FROM_DATABASE=GDT 6115/6515 - -pci:v00001119d0000000B* - ID_PRODUCT_FROM_DATABASE=GDT 6125/6525 - -pci:v00001119d0000000C* - ID_PRODUCT_FROM_DATABASE=GDT 6535 - -pci:v00001119d0000000D* - ID_PRODUCT_FROM_DATABASE=GDT 6555/6555-ECC - -pci:v00001119d00000100* - ID_PRODUCT_FROM_DATABASE=GDT 6117RP/6517RP - -pci:v00001119d00000101* - ID_PRODUCT_FROM_DATABASE=GDT 6127RP/6527RP - -pci:v00001119d00000102* - ID_PRODUCT_FROM_DATABASE=GDT 6537RP - -pci:v00001119d00000103* - ID_PRODUCT_FROM_DATABASE=GDT 6557RP - -pci:v00001119d00000104* - ID_PRODUCT_FROM_DATABASE=GDT 6111RP/6511RP - -pci:v00001119d00000105* - ID_PRODUCT_FROM_DATABASE=GDT 6121RP/6521RP - -pci:v00001119d00000110* - ID_PRODUCT_FROM_DATABASE=GDT 6117RD/6517RD - -pci:v00001119d00000111* - ID_PRODUCT_FROM_DATABASE=GDT 6127RD/6527RD - -pci:v00001119d00000112* - ID_PRODUCT_FROM_DATABASE=GDT 6537RD - -pci:v00001119d00000113* - ID_PRODUCT_FROM_DATABASE=GDT 6557RD - -pci:v00001119d00000114* - ID_PRODUCT_FROM_DATABASE=GDT 6111RD/6511RD - -pci:v00001119d00000115* - ID_PRODUCT_FROM_DATABASE=GDT 6121RD/6521RD - -pci:v00001119d00000118* - ID_PRODUCT_FROM_DATABASE=GDT 6118RD/6518RD/6618RD - -pci:v00001119d00000119* - ID_PRODUCT_FROM_DATABASE=GDT 6128RD/6528RD/6628RD - -pci:v00001119d0000011A* - ID_PRODUCT_FROM_DATABASE=GDT 6538RD/6638RD - -pci:v00001119d0000011B* - ID_PRODUCT_FROM_DATABASE=GDT 6558RD/6658RD - -pci:v00001119d00000120* - ID_PRODUCT_FROM_DATABASE=GDT 6117RP2/6517RP2 - -pci:v00001119d00000121* - ID_PRODUCT_FROM_DATABASE=GDT 6127RP2/6527RP2 - -pci:v00001119d00000122* - ID_PRODUCT_FROM_DATABASE=GDT 6537RP2 - -pci:v00001119d00000123* - ID_PRODUCT_FROM_DATABASE=GDT 6557RP2 - -pci:v00001119d00000124* - ID_PRODUCT_FROM_DATABASE=GDT 6111RP2/6511RP2 - -pci:v00001119d00000125* - ID_PRODUCT_FROM_DATABASE=GDT 6121RP2/6521RP2 - -pci:v00001119d00000136* - ID_PRODUCT_FROM_DATABASE=GDT 6113RS/6513RS - -pci:v00001119d00000137* - ID_PRODUCT_FROM_DATABASE=GDT 6123RS/6523RS - -pci:v00001119d00000138* - ID_PRODUCT_FROM_DATABASE=GDT 6118RS/6518RS/6618RS - -pci:v00001119d00000139* - ID_PRODUCT_FROM_DATABASE=GDT 6128RS/6528RS/6628RS - -pci:v00001119d0000013A* - ID_PRODUCT_FROM_DATABASE=GDT 6538RS/6638RS - -pci:v00001119d0000013B* - ID_PRODUCT_FROM_DATABASE=GDT 6558RS/6658RS - -pci:v00001119d0000013C* - ID_PRODUCT_FROM_DATABASE=GDT 6533RS/6633RS - -pci:v00001119d0000013D* - ID_PRODUCT_FROM_DATABASE=GDT 6543RS/6643RS - -pci:v00001119d0000013E* - ID_PRODUCT_FROM_DATABASE=GDT 6553RS/6653RS - -pci:v00001119d0000013F* - ID_PRODUCT_FROM_DATABASE=GDT 6563RS/6663RS - -pci:v00001119d00000166* - ID_PRODUCT_FROM_DATABASE=GDT 7113RN/7513RN/7613RN - -pci:v00001119d00000167* - ID_PRODUCT_FROM_DATABASE=GDT 7123RN/7523RN/7623RN - -pci:v00001119d00000168* - ID_PRODUCT_FROM_DATABASE=GDT 7118RN/7518RN/7518RN - -pci:v00001119d00000169* - ID_PRODUCT_FROM_DATABASE=GDT 7128RN/7528RN/7628RN - -pci:v00001119d0000016A* - ID_PRODUCT_FROM_DATABASE=GDT 7538RN/7638RN - -pci:v00001119d0000016B* - ID_PRODUCT_FROM_DATABASE=GDT 7558RN/7658RN - -pci:v00001119d0000016C* - ID_PRODUCT_FROM_DATABASE=GDT 7533RN/7633RN - -pci:v00001119d0000016D* - ID_PRODUCT_FROM_DATABASE=GDT 7543RN/7643RN - -pci:v00001119d0000016E* - ID_PRODUCT_FROM_DATABASE=GDT 7553RN/7653RN - -pci:v00001119d0000016F* - ID_PRODUCT_FROM_DATABASE=GDT 7563RN/7663RN - -pci:v00001119d000001D6* - ID_PRODUCT_FROM_DATABASE=GDT 4x13RZ - -pci:v00001119d000001D7* - ID_PRODUCT_FROM_DATABASE=GDT 4x23RZ - -pci:v00001119d000001F6* - ID_PRODUCT_FROM_DATABASE=GDT 8x13RZ - -pci:v00001119d000001F7* - ID_PRODUCT_FROM_DATABASE=GDT 8x23RZ - -pci:v00001119d000001FC* - ID_PRODUCT_FROM_DATABASE=GDT 8x33RZ - -pci:v00001119d000001FD* - ID_PRODUCT_FROM_DATABASE=GDT 8x43RZ - -pci:v00001119d000001FE* - ID_PRODUCT_FROM_DATABASE=GDT 8x53RZ - -pci:v00001119d000001FF* - ID_PRODUCT_FROM_DATABASE=GDT 8x63RZ - -pci:v00001119d00000210* - ID_PRODUCT_FROM_DATABASE=GDT 6519RD/6619RD - -pci:v00001119d00000211* - ID_PRODUCT_FROM_DATABASE=GDT 6529RD/6629RD - -pci:v00001119d00000260* - ID_PRODUCT_FROM_DATABASE=GDT 7519RN/7619RN - -pci:v00001119d00000261* - ID_PRODUCT_FROM_DATABASE=GDT 7529RN/7629RN - -pci:v00001119d000002FF* - ID_PRODUCT_FROM_DATABASE=GDT MAXRP - -pci:v00001119d00000300* - ID_PRODUCT_FROM_DATABASE=GDT NEWRX - -pci:v00001119d00000301* - ID_PRODUCT_FROM_DATABASE=GDT NEWRX2 - -pci:v0000111A* - ID_VENDOR_FROM_DATABASE=Efficient Networks, Inc - -pci:v0000111Ad00000000* - ID_PRODUCT_FROM_DATABASE=155P-MF1 (FPGA) - -pci:v0000111Ad00000002* - ID_PRODUCT_FROM_DATABASE=155P-MF1 (ASIC) - -pci:v0000111Ad00000003* - ID_PRODUCT_FROM_DATABASE=ENI-25P ATM - -pci:v0000111Ad00000003sv0000111Asd00000000* - ID_PRODUCT_FROM_DATABASE=ENI-25p Miniport ATM Adapter - -pci:v0000111Ad00000005* - ID_PRODUCT_FROM_DATABASE=SpeedStream (LANAI) - -pci:v0000111Ad00000005sv0000111Asd00000001* - ID_PRODUCT_FROM_DATABASE=ENI-3010 ATM - -pci:v0000111Ad00000005sv0000111Asd00000009* - ID_PRODUCT_FROM_DATABASE=ENI-3060 ADSL (VPI=0) - -pci:v0000111Ad00000005sv0000111Asd00000101* - ID_PRODUCT_FROM_DATABASE=ENI-3010 ATM - -pci:v0000111Ad00000005sv0000111Asd00000109* - ID_PRODUCT_FROM_DATABASE=ENI-3060CO ADSL (VPI=0) - -pci:v0000111Ad00000005sv0000111Asd00000809* - ID_PRODUCT_FROM_DATABASE=ENI-3060 ADSL (VPI=0 or 8) - -pci:v0000111Ad00000005sv0000111Asd00000909* - ID_PRODUCT_FROM_DATABASE=ENI-3060CO ADSL (VPI=0 or 8) - -pci:v0000111Ad00000005sv0000111Asd00000A09* - ID_PRODUCT_FROM_DATABASE=ENI-3060 ADSL (VPI=<0..15>) - -pci:v0000111Ad00000007* - ID_PRODUCT_FROM_DATABASE=SpeedStream ADSL - -pci:v0000111Ad00000007sv0000111Asd00001001* - ID_PRODUCT_FROM_DATABASE=ENI-3061 ADSL [ASIC] - -pci:v0000111Ad00001020* - ID_PRODUCT_FROM_DATABASE=SpeedStream PCI 10/100 Network Card - -pci:v0000111Ad00001203* - ID_PRODUCT_FROM_DATABASE=SpeedStream 1023 Wireless PCI Adapter - -pci:v0000111B* - ID_VENDOR_FROM_DATABASE=Teledyne Electronic Systems - -pci:v0000111C* - ID_VENDOR_FROM_DATABASE=Tricord Systems Inc. - -pci:v0000111Cd00000001* - ID_PRODUCT_FROM_DATABASE=Powerbis Bridge - -pci:v0000111D* - ID_VENDOR_FROM_DATABASE=Integrated Device Technology, Inc. [IDT] - -pci:v0000111Dd00000001* - ID_PRODUCT_FROM_DATABASE=IDT77201/77211 155Mbps ATM SAR Controller [NICStAR] - -pci:v0000111Dd00000003* - ID_PRODUCT_FROM_DATABASE=IDT77222/77252 155Mbps ATM MICRO ABR SAR Controller - -pci:v0000111Dd00000004* - ID_PRODUCT_FROM_DATABASE=IDT77V252 155Mbps ATM MICRO ABR SAR Controller - -pci:v0000111Dd00000005* - ID_PRODUCT_FROM_DATABASE=IDT77V222 155Mbps ATM MICRO ABR SAR Controller - -pci:v0000111Dd00008018* - ID_PRODUCT_FROM_DATABASE=PES12N3A PCI Express Switch - -pci:v0000111Dd0000801C* - ID_PRODUCT_FROM_DATABASE=PES24N3A PCI Express Switch - -pci:v0000111Dd00008028* - ID_PRODUCT_FROM_DATABASE=PES4T4 PCI Express Switch - -pci:v0000111Dd0000802B* - ID_PRODUCT_FROM_DATABASE=PES8T5A PCI Express Switch - -pci:v0000111Dd0000802C* - ID_PRODUCT_FROM_DATABASE=PES16T4 PCI Express Switch - -pci:v0000111Dd0000802D* - ID_PRODUCT_FROM_DATABASE=PES16T7 PCI Express Switch - -pci:v0000111Dd0000802E* - ID_PRODUCT_FROM_DATABASE=PES24T6 PCI Express Switch - -pci:v0000111Dd0000802F* - ID_PRODUCT_FROM_DATABASE=PES32T8 PCI Express Switch - -pci:v0000111Dd00008032* - ID_PRODUCT_FROM_DATABASE=PES48T12 PCI Express Switch - -pci:v0000111Dd00008034* - ID_PRODUCT_FROM_DATABASE=PES16/22/34H16 PCI Express Switch - -pci:v0000111Dd00008035* - ID_PRODUCT_FROM_DATABASE=PES32H8 PCI Express Switch - -pci:v0000111Dd00008036* - ID_PRODUCT_FROM_DATABASE=PES48H12 PCI Express Switch - -pci:v0000111Dd00008037* - ID_PRODUCT_FROM_DATABASE=PES64H16 PCI Express Switch - -pci:v0000111Dd00008039* - ID_PRODUCT_FROM_DATABASE=PES3T3 PCI Express Switch - -pci:v0000111Dd0000803A* - ID_PRODUCT_FROM_DATABASE=PES4T4 PCI Express Switch - -pci:v0000111Dd0000803C* - ID_PRODUCT_FROM_DATABASE=PES5T5 PCI Express Switch - -pci:v0000111Dd0000803D* - ID_PRODUCT_FROM_DATABASE=PES6T5 PCI Express Switch - -pci:v0000111Dd00008048* - ID_PRODUCT_FROM_DATABASE=PES8NT2 PCI Express Switch - -pci:v0000111Dd00008049* - ID_PRODUCT_FROM_DATABASE=PES8NT2 PCI Express Switch - -pci:v0000111Dd0000804A* - ID_PRODUCT_FROM_DATABASE=PES8NT2 PCI Express Internal NTB - -pci:v0000111Dd0000804B* - ID_PRODUCT_FROM_DATABASE=PES8NT2 PCI Express External NTB - -pci:v0000111Dd0000804C* - ID_PRODUCT_FROM_DATABASE=PES16NT2 PCI Express Switch - -pci:v0000111Dd0000804D* - ID_PRODUCT_FROM_DATABASE=PES16NT2 PCI Express Switch - -pci:v0000111Dd0000804E* - ID_PRODUCT_FROM_DATABASE=PES16NT2 PCI Express Internal NTB - -pci:v0000111Dd0000804F* - ID_PRODUCT_FROM_DATABASE=PES16NT2 PCI Express External NTB - -pci:v0000111Dd00008058* - ID_PRODUCT_FROM_DATABASE=PES12NT3 PCI Express Switch - -pci:v0000111Dd00008059* - ID_PRODUCT_FROM_DATABASE=PES12NT3 PCI Express Switch - -pci:v0000111Dd0000805A* - ID_PRODUCT_FROM_DATABASE=PES12NT3 PCI Express Internal NTB - -pci:v0000111Dd0000805B* - ID_PRODUCT_FROM_DATABASE=PES12NT3 PCI Express External NTB - -pci:v0000111Dd0000805C* - ID_PRODUCT_FROM_DATABASE=PES24NT3 PCI Express Switch - -pci:v0000111Dd0000805D* - ID_PRODUCT_FROM_DATABASE=PES24NT3 PCI Express Switch - -pci:v0000111Dd0000805E* - ID_PRODUCT_FROM_DATABASE=PES24NT3 PCI Express Internal NTB - -pci:v0000111Dd0000805F* - ID_PRODUCT_FROM_DATABASE=PES24NT3 PCI Express External NTB - -pci:v0000111Dd00008060* - ID_PRODUCT_FROM_DATABASE=PES16T4G2 PCI Express Gen2 Switch - -pci:v0000111Dd00008061* - ID_PRODUCT_FROM_DATABASE=PES12T3G2 PCI Express Gen2 Switch - -pci:v0000111Dd00008068* - ID_PRODUCT_FROM_DATABASE=PES6T6G2 PCI Express Gen2 Switch - -pci:v0000111Dd0000806A* - ID_PRODUCT_FROM_DATABASE=PES24T3G2 PCI Express Gen2 Switch - -pci:v0000111Dd0000806Asv000014C1sd0000000C* - ID_PRODUCT_FROM_DATABASE=10G-PCIE2-8B2 - -pci:v0000111Dd0000806C* - ID_PRODUCT_FROM_DATABASE=PES16T4A/4T4G2 PCI Express Gen2 Switch - -pci:v0000111Dd0000806E* - ID_PRODUCT_FROM_DATABASE=PES24T6G2 PCI Express Gen2 Switch - -pci:v0000111Dd0000806F* - ID_PRODUCT_FROM_DATABASE=HIO524G2 PCI Express Gen2 Switch - -pci:v0000111E* - ID_VENDOR_FROM_DATABASE=Eldec - -pci:v0000111F* - ID_VENDOR_FROM_DATABASE=Precision Digital Images - -pci:v0000111Fd00004A47* - ID_PRODUCT_FROM_DATABASE=Precision MX Video engine interface - -pci:v0000111Fd00005243* - ID_PRODUCT_FROM_DATABASE=Frame capture bus interface - -pci:v00001120* - ID_VENDOR_FROM_DATABASE=EMC Corporation - -pci:v00001121* - ID_VENDOR_FROM_DATABASE=Zilog - -pci:v00001122* - ID_VENDOR_FROM_DATABASE=Multi-tech Systems, Inc. - -pci:v00001123* - ID_VENDOR_FROM_DATABASE=Excellent Design, Inc. - -pci:v00001124* - ID_VENDOR_FROM_DATABASE=Leutron Vision AG - -pci:v00001124d00002581* - ID_PRODUCT_FROM_DATABASE=Picport Monochrome - -pci:v00001125* - ID_VENDOR_FROM_DATABASE=Eurocore - -pci:v00001126* - ID_VENDOR_FROM_DATABASE=Vigra - -pci:v00001127* - ID_VENDOR_FROM_DATABASE=FORE Systems Inc - -pci:v00001127d00000200* - ID_PRODUCT_FROM_DATABASE=ForeRunner PCA-200 ATM - -pci:v00001127d00000210* - ID_PRODUCT_FROM_DATABASE=PCA-200PC - -pci:v00001127d00000250* - ID_PRODUCT_FROM_DATABASE=ATM - -pci:v00001127d00000300* - ID_PRODUCT_FROM_DATABASE=ForeRunner PCA-200EPC ATM - -pci:v00001127d00000310* - ID_PRODUCT_FROM_DATABASE=ATM - -pci:v00001127d00000400* - ID_PRODUCT_FROM_DATABASE=ForeRunnerHE ATM Adapter - -pci:v00001127d00000400sv00001127sd00000400* - ID_PRODUCT_FROM_DATABASE=ForeRunnerHE ATM - -pci:v00001129* - ID_VENDOR_FROM_DATABASE=Firmworks - -pci:v0000112A* - ID_VENDOR_FROM_DATABASE=Hermes Electronics Company, Ltd. - -pci:v0000112B* - ID_VENDOR_FROM_DATABASE=Linotype - Hell AG - -pci:v0000112C* - ID_VENDOR_FROM_DATABASE=Zenith Data Systems - -pci:v0000112D* - ID_VENDOR_FROM_DATABASE=Ravicad - -pci:v0000112E* - ID_VENDOR_FROM_DATABASE=Infomedia Microelectronics Inc. - -pci:v0000112F* - ID_VENDOR_FROM_DATABASE=Dalsa Inc. - -pci:v0000112Fd00000000* - ID_PRODUCT_FROM_DATABASE=MVC IC-PCI - -pci:v0000112Fd00000001* - ID_PRODUCT_FROM_DATABASE=MVC IM-PCI Video frame grabber/processor - -pci:v0000112Fd00000008* - ID_PRODUCT_FROM_DATABASE=PC-CamLink PCI framegrabber - -pci:v00001130* - ID_VENDOR_FROM_DATABASE=Computervision - -pci:v00001131* - ID_VENDOR_FROM_DATABASE=Philips Semiconductors - -pci:v00001131d00001561* - ID_PRODUCT_FROM_DATABASE=USB 1.1 Host Controller - -pci:v00001131d00001561sv00001775sd0000C200* - ID_PRODUCT_FROM_DATABASE=C2K onboard USB 1.1 host controller - -pci:v00001131d00001562* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Host Controller - -pci:v00001131d00001562sv00001775sd0000C200* - ID_PRODUCT_FROM_DATABASE=C2K onboard USB 2.0 host controller - -pci:v00001131d00003400* - ID_PRODUCT_FROM_DATABASE=SmartPCI56(UCB1500) 56K Modem - -pci:v00001131d00005400* - ID_PRODUCT_FROM_DATABASE=TriMedia TM1000/1100 - -pci:v00001131d00005400sv000012CAsd00000000* - ID_PRODUCT_FROM_DATABASE=BlueICE - -pci:v00001131d00005402* - ID_PRODUCT_FROM_DATABASE=TriMedia TM1300 - -pci:v00001131d00005402sv00001244sd00000F00* - ID_PRODUCT_FROM_DATABASE=Fritz!Card DSL - -pci:v00001131d00005402sv000015EBsd00001300* - ID_PRODUCT_FROM_DATABASE=DT1300 - -pci:v00001131d00005402sv000015EBsd00001302* - ID_PRODUCT_FROM_DATABASE=DT1302 - -pci:v00001131d00005402sv000015EBsd00001304* - ID_PRODUCT_FROM_DATABASE=DT1304 - -pci:v00001131d00005402sv000015EBsd00001305* - ID_PRODUCT_FROM_DATABASE=DT1305 - -pci:v00001131d00005402sv000015EBsd00001306* - ID_PRODUCT_FROM_DATABASE=PMCDT1306 - -pci:v00001131d00005402sv000015EBsd00001308* - ID_PRODUCT_FROM_DATABASE=DT1308 - -pci:v00001131d00005402sv000015EBsd00001331* - ID_PRODUCT_FROM_DATABASE=DT1301 with SAA7121 - -pci:v00001131d00005402sv000015EBsd00001337* - ID_PRODUCT_FROM_DATABASE=DT1301 with SAA7127 - -pci:v00001131d00005402sv000015EBsd00002D3D* - ID_PRODUCT_FROM_DATABASE=X3D - -pci:v00001131d00005402sv000015EBsd00007022* - ID_PRODUCT_FROM_DATABASE=PTM1300 - -pci:v00001131d00005405* - ID_PRODUCT_FROM_DATABASE=TriMedia TM1500 - -pci:v00001131d00005405sv00001136sd00000005* - ID_PRODUCT_FROM_DATABASE=LCP-1500 - -pci:v00001131d00005406* - ID_PRODUCT_FROM_DATABASE=TriMedia TM1700 - -pci:v00001131d0000540B* - ID_PRODUCT_FROM_DATABASE=PNX1005 Media Processor - -pci:v00001131d0000540Bsv00001131sd00000020* - ID_PRODUCT_FROM_DATABASE=PNXLite PCI Demo Board - -pci:v00001131d00007130* - ID_PRODUCT_FROM_DATABASE=SAA7130 Video Broadcast Decoder - -pci:v00001131d00007130sv00000000sd00004016* - ID_PRODUCT_FROM_DATABASE=Behold TV 401 - -pci:v00001131d00007130sv00000000sd00004051* - ID_PRODUCT_FROM_DATABASE=Behold TV 405 FM - -pci:v00001131d00007130sv00000000sd00005051* - ID_PRODUCT_FROM_DATABASE=Behold TV 505 RDS - -pci:v00001131d00007130sv00000000sd0000505B* - ID_PRODUCT_FROM_DATABASE=Behold TV 505 RDS - -pci:v00001131d00007130sv0000102Bsd000048D0* - ID_PRODUCT_FROM_DATABASE=Matrox CronosPlus - -pci:v00001131d00007130sv00001048sd0000226B* - ID_PRODUCT_FROM_DATABASE=ELSA EX-VISION 300TV - -pci:v00001131d00007130sv0000107Dsd00006655* - ID_PRODUCT_FROM_DATABASE=WinFast DTV1000S - -pci:v00001131d00007130sv00001131sd00000000* - ID_PRODUCT_FROM_DATABASE=SAA7130-based TV tuner card - -pci:v00001131d00007130sv00001131sd00002001* - ID_PRODUCT_FROM_DATABASE=10MOONS PCI TV CAPTURE CARD - -pci:v00001131d00007130sv00001131sd00002005* - ID_PRODUCT_FROM_DATABASE=Techcom (India) TV Tuner Card (SSD-TV-670) - -pci:v00001131d00007130sv00001458sd00009006* - ID_PRODUCT_FROM_DATABASE=GT-PS700 DVB-S tuner - -pci:v00001131d00007130sv00001461sd0000050C* - ID_PRODUCT_FROM_DATABASE=Nagase Sangyo TransGear 3000TV - -pci:v00001131d00007130sv00001461sd000010FF* - ID_PRODUCT_FROM_DATABASE=AVerMedia DVD EZMaker - -pci:v00001131d00007130sv00001461sd00002108* - ID_PRODUCT_FROM_DATABASE=AverMedia AverTV/305 - -pci:v00001131d00007130sv00001461sd00002115* - ID_PRODUCT_FROM_DATABASE=AverMedia AverTV Studio 305 - -pci:v00001131d00007130sv0000153Bsd00001152* - ID_PRODUCT_FROM_DATABASE=Terratec Cinergy 200 TV - -pci:v00001131d00007130sv0000185Bsd0000C100* - ID_PRODUCT_FROM_DATABASE=Compro VideoMate TV PVR/FM - -pci:v00001131d00007130sv0000185Bsd0000C901* - ID_PRODUCT_FROM_DATABASE=Videomate DVB-T200 - -pci:v00001131d00007130sv00005168sd00000138* - ID_PRODUCT_FROM_DATABASE=LifeView FlyVIDEO2000 - -pci:v00001131d00007130sv00005ACEsd00005010* - ID_PRODUCT_FROM_DATABASE=Behold TV 501 - -pci:v00001131d00007130sv00005ACEsd00005050* - ID_PRODUCT_FROM_DATABASE=Behold TV 505 FM - -pci:v00001131d00007133* - ID_PRODUCT_FROM_DATABASE=SAA7131/SAA7133/SAA7135 Video Broadcast Decoder - -pci:v00001131d00007133sv00000000sd00004091* - ID_PRODUCT_FROM_DATABASE=Beholder BeholdTV 409 FM - -pci:v00001131d00007133sv00000000sd00005071* - ID_PRODUCT_FROM_DATABASE=Behold TV 507 RDS - -pci:v00001131d00007133sv00000000sd0000507B* - ID_PRODUCT_FROM_DATABASE=Behold TV 507 RDS - -pci:v00001131d00007133sv00000000sd00005201* - ID_PRODUCT_FROM_DATABASE=Behold TV Columbus - -pci:v00001131d00007133sv00000070sd00006701* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-1110 - -pci:v00001131d00007133sv00001019sd00004CB5* - ID_PRODUCT_FROM_DATABASE=Elitegroup ECS TVP3XP FM1236 Tuner Card (NTSC,FM) - -pci:v00001131d00007133sv00001043sd00000210* - ID_PRODUCT_FROM_DATABASE=FlyTV mini Asus Digimatrix - -pci:v00001131d00007133sv00001043sd00004843* - ID_PRODUCT_FROM_DATABASE=ASUS TV-FM 7133 - -pci:v00001131d00007133sv00001043sd00004845* - ID_PRODUCT_FROM_DATABASE=TV-FM 7135 - -pci:v00001131d00007133sv00001043sd00004862* - ID_PRODUCT_FROM_DATABASE=P7131 Dual - -pci:v00001131d00007133sv00001043sd00004876* - ID_PRODUCT_FROM_DATABASE=My Cinema-P7131 Hybrid - -pci:v00001131d00007133sv00001131sd00000000* - ID_PRODUCT_FROM_DATABASE=SAA713x-based TV tuner card - -pci:v00001131d00007133sv00001131sd00002001* - ID_PRODUCT_FROM_DATABASE=Proteus Pro [philips reference design] - -pci:v00001131d00007133sv00001131sd00002018* - ID_PRODUCT_FROM_DATABASE=Tiger reference design - -pci:v00001131d00007133sv00001131sd00004EE9* - ID_PRODUCT_FROM_DATABASE=MonsterTV Mobile - -pci:v00001131d00007133sv00001131sd00007133* - ID_PRODUCT_FROM_DATABASE=Pinnacle PCTV 301i - -pci:v00001131d00007133sv000011BDsd0000002B* - ID_PRODUCT_FROM_DATABASE=PCTV Stereo - -pci:v00001131d00007133sv000011BDsd0000002E* - ID_PRODUCT_FROM_DATABASE=PCTV 110i (saa7133) - -pci:v00001131d00007133sv000012ABsd00000800* - ID_PRODUCT_FROM_DATABASE=PURPLE TV - -pci:v00001131d00007133sv000013C2sd00002804* - ID_PRODUCT_FROM_DATABASE=Technotrend Budget T-3000 Hybrid - -pci:v00001131d00007133sv00001421sd00000335* - ID_PRODUCT_FROM_DATABASE=Instant TV DVB-T Cardbus - -pci:v00001131d00007133sv00001421sd00001370* - ID_PRODUCT_FROM_DATABASE=Instant TV (saa7135) - -pci:v00001131d00007133sv00001435sd00007330* - ID_PRODUCT_FROM_DATABASE=VFG7330 - -pci:v00001131d00007133sv00001435sd00007350* - ID_PRODUCT_FROM_DATABASE=VFG7350 - -pci:v00001131d00007133sv00001458sd00009001* - ID_PRODUCT_FROM_DATABASE=GC-PTV-TAF Hybrid TV card - -pci:v00001131d00007133sv00001458sd00009002* - ID_PRODUCT_FROM_DATABASE=GT-PTV-TAF-RH DVB-T/Analog TV/FM tuner - -pci:v00001131d00007133sv00001458sd00009003* - ID_PRODUCT_FROM_DATABASE=GT-PTV-AF-RH Analog TV/FM tuner - -pci:v00001131d00007133sv00001458sd00009004* - ID_PRODUCT_FROM_DATABASE=GT-P8000 DVB-T/Analog TV/FM tuner - -pci:v00001131d00007133sv00001458sd00009005* - ID_PRODUCT_FROM_DATABASE=GT-P6000 Analog TV/FM tuner - -pci:v00001131d00007133sv00001458sd00009008* - ID_PRODUCT_FROM_DATABASE=GT-P5100 Analog TV tuner - -pci:v00001131d00007133sv00001461sd00001044* - ID_PRODUCT_FROM_DATABASE=AVerTVHD MCE A180 - -pci:v00001131d00007133sv00001461sd00004836* - ID_PRODUCT_FROM_DATABASE=M10D Hybrid DVBT - -pci:v00001131d00007133sv00001461sd0000861E* - ID_PRODUCT_FROM_DATABASE=M105 PAL/SECAM/NTSC/FM Tuner - -pci:v00001131d00007133sv00001461sd0000A14B* - ID_PRODUCT_FROM_DATABASE=AVerTV Studio 509 - -pci:v00001131d00007133sv00001461sd0000A836* - ID_PRODUCT_FROM_DATABASE=M115 DVB-T, PAL/SECAM/NTSC Tuner - -pci:v00001131d00007133sv00001461sd0000F01D* - ID_PRODUCT_FROM_DATABASE=DVB-T Super 007 - -pci:v00001131d00007133sv00001461sd0000F31F* - ID_PRODUCT_FROM_DATABASE=Avermedia AVerTV GO 007 FM - -pci:v00001131d00007133sv00001461sd0000F936* - ID_PRODUCT_FROM_DATABASE=Hybrid+FM PCI (rev A16D) - -pci:v00001131d00007133sv00001462sd00006231* - ID_PRODUCT_FROM_DATABASE=TV@nywhere Plus - -pci:v00001131d00007133sv00001489sd00000214* - ID_PRODUCT_FROM_DATABASE=LifeView FlyTV Platinum FM - -pci:v00001131d00007133sv000014C0sd00001212* - ID_PRODUCT_FROM_DATABASE=LifeView FlyTV Platinum Mini2 - -pci:v00001131d00007133sv0000153Bsd00001160* - ID_PRODUCT_FROM_DATABASE=Cinergy 250 PCI TV - -pci:v00001131d00007133sv0000153Bsd00001162* - ID_PRODUCT_FROM_DATABASE=Terratec Cinergy 400 mobile - -pci:v00001131d00007133sv000017DEsd00007350* - ID_PRODUCT_FROM_DATABASE=ATSC 110 Digital / Analog HDTV Tuner - -pci:v00001131d00007133sv000017DEsd00007352* - ID_PRODUCT_FROM_DATABASE=ATSC 115 Digital / Analog HDTV Tuner - -pci:v00001131d00007133sv0000185Bsd0000C100* - ID_PRODUCT_FROM_DATABASE=VideoMate TV - -pci:v00001131d00007133sv0000185Bsd0000C900* - ID_PRODUCT_FROM_DATABASE=VideoMate T750 - -pci:v00001131d00007133sv00005168sd00000306* - ID_PRODUCT_FROM_DATABASE=LifeView FlyDVB-T DUO - -pci:v00001131d00007133sv00005168sd00000319* - ID_PRODUCT_FROM_DATABASE=LifeView FlyDVB Trio - -pci:v00001131d00007133sv00005168sd00000502* - ID_PRODUCT_FROM_DATABASE=LifeView FlyDVB-T Duo CardBus - -pci:v00001131d00007133sv00005168sd00000520* - ID_PRODUCT_FROM_DATABASE=LifeView FlyDVB Trio CardBus - -pci:v00001131d00007133sv00005168sd00001502* - ID_PRODUCT_FROM_DATABASE=LifeView FlyTV CardBus - -pci:v00001131d00007133sv00005168sd00002502* - ID_PRODUCT_FROM_DATABASE=LifeView FlyDVB-T CardBus - -pci:v00001131d00007133sv00005168sd00002520* - ID_PRODUCT_FROM_DATABASE=LifeView FlyDVB-S Duo CardBus - -pci:v00001131d00007133sv00005168sd00003502* - ID_PRODUCT_FROM_DATABASE=LifeView FlyDVB-T Hybrid CardBus - -pci:v00001131d00007133sv00005168sd00003520* - ID_PRODUCT_FROM_DATABASE=LifeView FlyDVB Trio N CardBus - -pci:v00001131d00007133sv00005ACEsd00005030* - ID_PRODUCT_FROM_DATABASE=Behold TV 503 FM - -pci:v00001131d00007133sv00005ACEsd00005090* - ID_PRODUCT_FROM_DATABASE=Behold TV 509 FM - -pci:v00001131d00007133sv00005ACEsd00006090* - ID_PRODUCT_FROM_DATABASE=Behold TV 609 FM - -pci:v00001131d00007133sv00005ACEsd00006091* - ID_PRODUCT_FROM_DATABASE=Behold TV 609 FM - -pci:v00001131d00007133sv00005ACEsd00006092* - ID_PRODUCT_FROM_DATABASE=Behold TV 609 RDS - -pci:v00001131d00007133sv00005ACEsd00006093* - ID_PRODUCT_FROM_DATABASE=Behold TV 609 RDS - -pci:v00001131d00007133sv00005ACEsd00006190* - ID_PRODUCT_FROM_DATABASE=Behold TV M6 - -pci:v00001131d00007133sv00005ACEsd00006191* - ID_PRODUCT_FROM_DATABASE=Behold TV M63 - -pci:v00001131d00007133sv00005ACEsd00006193* - ID_PRODUCT_FROM_DATABASE=Behold TV M6 Extra - -pci:v00001131d00007133sv00005ACEsd00006290* - ID_PRODUCT_FROM_DATABASE=Behold TV H6 - -pci:v00001131d00007133sv00005ACEsd00007090* - ID_PRODUCT_FROM_DATABASE=Behold TV A7 - -pci:v00001131d00007133sv00005ACEsd00007190* - ID_PRODUCT_FROM_DATABASE=Behold TV H7 - -pci:v00001131d00007133sv00005ACEsd00007595* - ID_PRODUCT_FROM_DATABASE=Behold TV X7 - -pci:v00001131d00007134* - ID_PRODUCT_FROM_DATABASE=SAA7134/SAA7135HL Video Broadcast Decoder - -pci:v00001131d00007134sv00000000sd00004036* - ID_PRODUCT_FROM_DATABASE=Behold TV 403 - -pci:v00001131d00007134sv00000000sd00004037* - ID_PRODUCT_FROM_DATABASE=Behold TV 403 FM - -pci:v00001131d00007134sv00000000sd00004071* - ID_PRODUCT_FROM_DATABASE=Behold TV 407 FM - -pci:v00001131d00007134sv00001019sd00004CB4* - ID_PRODUCT_FROM_DATABASE=Elitegroup ECS TVP3XP FM1216 Tuner Card(PAL-BG,FM) - -pci:v00001131d00007134sv00001043sd00000210* - ID_PRODUCT_FROM_DATABASE=Digimatrix TV - -pci:v00001131d00007134sv00001043sd00004840* - ID_PRODUCT_FROM_DATABASE=ASUS TV-FM 7134 - -pci:v00001131d00007134sv00001043sd00004842* - ID_PRODUCT_FROM_DATABASE=TV-FM 7134 - -pci:v00001131d00007134sv00001131sd00000000* - ID_PRODUCT_FROM_DATABASE=SAA713x-based TV tuner card - -pci:v00001131d00007134sv00001131sd00002004* - ID_PRODUCT_FROM_DATABASE=EUROPA V3 reference design - -pci:v00001131d00007134sv00001131sd00004E85* - ID_PRODUCT_FROM_DATABASE=SKNet Monster TV - -pci:v00001131d00007134sv00001131sd00006752* - ID_PRODUCT_FROM_DATABASE=EMPRESS - -pci:v00001131d00007134sv000011BDsd0000002B* - ID_PRODUCT_FROM_DATABASE=PCTV Stereo - -pci:v00001131d00007134sv000011BDsd0000002D* - ID_PRODUCT_FROM_DATABASE=PCTV 300i DVB-T + PAL - -pci:v00001131d00007134sv00001461sd00002C00* - ID_PRODUCT_FROM_DATABASE=AverTV Hybrid+FM PCI - -pci:v00001131d00007134sv00001461sd00009715* - ID_PRODUCT_FROM_DATABASE=AVerTV Studio 307 - -pci:v00001131d00007134sv00001461sd0000A70A* - ID_PRODUCT_FROM_DATABASE=Avermedia AVerTV 307 - -pci:v00001131d00007134sv00001461sd0000A70B* - ID_PRODUCT_FROM_DATABASE=AverMedia M156 / Medion 2819 - -pci:v00001131d00007134sv00001461sd0000D6EE* - ID_PRODUCT_FROM_DATABASE=Cardbus TV/Radio (E500) - -pci:v00001131d00007134sv00001471sd0000B7E9* - ID_PRODUCT_FROM_DATABASE=AVerTV Cardbus plus - -pci:v00001131d00007134sv0000153Bsd00001142* - ID_PRODUCT_FROM_DATABASE=Terratec Cinergy 400 TV - -pci:v00001131d00007134sv0000153Bsd00001143* - ID_PRODUCT_FROM_DATABASE=Terratec Cinergy 600 TV - -pci:v00001131d00007134sv0000153Bsd00001158* - ID_PRODUCT_FROM_DATABASE=Terratec Cinergy 600 TV MK3 - -pci:v00001131d00007134sv00001540sd00009524* - ID_PRODUCT_FROM_DATABASE=ProVideo PV952 - -pci:v00001131d00007134sv000016BEsd00000003* - ID_PRODUCT_FROM_DATABASE=Medion 7134 - -pci:v00001131d00007134sv0000185Bsd0000C200* - ID_PRODUCT_FROM_DATABASE=Compro VideoMate Gold+ Pal - -pci:v00001131d00007134sv0000185Bsd0000C900* - ID_PRODUCT_FROM_DATABASE=Videomate DVB-T300 - -pci:v00001131d00007134sv00001894sd0000A006* - ID_PRODUCT_FROM_DATABASE=KNC One TV-Station DVR - -pci:v00001131d00007134sv00001894sd0000FE01* - ID_PRODUCT_FROM_DATABASE=KNC One TV-Station RDS / Typhoon TV Tuner RDS - -pci:v00001131d00007134sv00005168sd00000138* - ID_PRODUCT_FROM_DATABASE=FLY TV PRIME 34FM - -pci:v00001131d00007134sv00005168sd00000300* - ID_PRODUCT_FROM_DATABASE=FlyDVB-S - -pci:v00001131d00007134sv00005ACEsd00005070* - ID_PRODUCT_FROM_DATABASE=Behold TV 507 FM - -pci:v00001131d00007134sv00005ACEsd00006070* - ID_PRODUCT_FROM_DATABASE=Behold TV 607 FM - -pci:v00001131d00007134sv00005ACEsd00006071* - ID_PRODUCT_FROM_DATABASE=Behold TV 607 FM - -pci:v00001131d00007134sv00005ACEsd00006072* - ID_PRODUCT_FROM_DATABASE=Behold TV 607 RDS - -pci:v00001131d00007134sv00005ACEsd00006073* - ID_PRODUCT_FROM_DATABASE=Behold TV 607 RDS - -pci:v00001131d00007145* - ID_PRODUCT_FROM_DATABASE=SAA7145 - -pci:v00001131d00007146* - ID_PRODUCT_FROM_DATABASE=SAA7146 - -pci:v00001131d00007146sv0000110Asd00000000* - ID_PRODUCT_FROM_DATABASE=Fujitsu/Siemens DVB-C card rev1.5 - -pci:v00001131d00007146sv0000110Asd0000FFFF* - ID_PRODUCT_FROM_DATABASE=Fujitsu/Siemens DVB-C card rev1.5 - -pci:v00001131d00007146sv00001124sd00002581* - ID_PRODUCT_FROM_DATABASE=Leutron Vision PicPort - -pci:v00001131d00007146sv00001131sd00004F56* - ID_PRODUCT_FROM_DATABASE=KNC1 DVB-S Budget - -pci:v00001131d00007146sv00001131sd00004F60* - ID_PRODUCT_FROM_DATABASE=Fujitsu-Siemens Activy DVB-S Budget Rev AL - -pci:v00001131d00007146sv00001131sd00004F61* - ID_PRODUCT_FROM_DATABASE=Activy DVB-S Budget Rev GR - -pci:v00001131d00007146sv00001131sd00005F61* - ID_PRODUCT_FROM_DATABASE=Activy DVB-T Budget - -pci:v00001131d00007146sv0000114Bsd00002003* - ID_PRODUCT_FROM_DATABASE=DVRaptor Video Edit/Capture Card - -pci:v00001131d00007146sv000011BDsd00000006* - ID_PRODUCT_FROM_DATABASE=DV500 Overlay - -pci:v00001131d00007146sv000011BDsd0000000A* - ID_PRODUCT_FROM_DATABASE=DV500 Overlay - -pci:v00001131d00007146sv000011BDsd0000000F* - ID_PRODUCT_FROM_DATABASE=DV500 Overlay - -pci:v00001131d00007146sv000013C2sd00000000* - ID_PRODUCT_FROM_DATABASE=Siemens/Technotrend/Hauppauge DVB card rev1.3 or rev1.5 - -pci:v00001131d00007146sv000013C2sd00000001* - ID_PRODUCT_FROM_DATABASE=Technotrend/Hauppauge DVB card rev1.3 or rev1.6 - -pci:v00001131d00007146sv000013C2sd00000002* - ID_PRODUCT_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.1 - -pci:v00001131d00007146sv000013C2sd00000003* - ID_PRODUCT_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.1 - -pci:v00001131d00007146sv000013C2sd00000004* - ID_PRODUCT_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.1 - -pci:v00001131d00007146sv000013C2sd00000006* - ID_PRODUCT_FROM_DATABASE=Technotrend/Hauppauge DVB card rev1.3 or rev1.6 - -pci:v00001131d00007146sv000013C2sd00000008* - ID_PRODUCT_FROM_DATABASE=Technotrend/Hauppauge DVB-T - -pci:v00001131d00007146sv000013C2sd0000000A* - ID_PRODUCT_FROM_DATABASE=Octal/Technotrend DVB-C for iTV - -pci:v00001131d00007146sv000013C2sd0000000E* - ID_PRODUCT_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.3 - -pci:v00001131d00007146sv000013C2sd00001003* - ID_PRODUCT_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-S DVB card - -pci:v00001131d00007146sv000013C2sd00001004* - ID_PRODUCT_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-C DVB card - -pci:v00001131d00007146sv000013C2sd00001005* - ID_PRODUCT_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card - -pci:v00001131d00007146sv000013C2sd0000100C* - ID_PRODUCT_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card - -pci:v00001131d00007146sv000013C2sd0000100F* - ID_PRODUCT_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-CI DVB card - -pci:v00001131d00007146sv000013C2sd00001010* - ID_PRODUCT_FROM_DATABASE=DVB C-1500 - -pci:v00001131d00007146sv000013C2sd00001011* - ID_PRODUCT_FROM_DATABASE=Technotrend-Budget/Hauppauge WinTV-NOVA-T DVB card - -pci:v00001131d00007146sv000013C2sd00001012* - ID_PRODUCT_FROM_DATABASE=DVB T-1500 - -pci:v00001131d00007146sv000013C2sd00001013* - ID_PRODUCT_FROM_DATABASE=SATELCO Multimedia DVB - -pci:v00001131d00007146sv000013C2sd00001016* - ID_PRODUCT_FROM_DATABASE=WinTV-NOVA-SE DVB card - -pci:v00001131d00007146sv000013C2sd00001018* - ID_PRODUCT_FROM_DATABASE=DVB S-1401 - -pci:v00001131d00007146sv000013C2sd00001019* - ID_PRODUCT_FROM_DATABASE=S2-3200 - -pci:v00001131d00007146sv000013C2sd00001102* - ID_PRODUCT_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.1 - -pci:v00001131d00007146sv0000153Bsd00001155* - ID_PRODUCT_FROM_DATABASE=Cinergy 1200 DVB-S - -pci:v00001131d00007146sv0000153Bsd00001156* - ID_PRODUCT_FROM_DATABASE=Terratec Cynergy 1200C - -pci:v00001131d00007146sv0000153Bsd00001157* - ID_PRODUCT_FROM_DATABASE=Cinergy 1200 DVB-T - -pci:v00001131d00007146sv00001894sd00000020* - ID_PRODUCT_FROM_DATABASE=KNC One DVB-C V1.0 - -pci:v00001131d00007146sv00001894sd00000023* - ID_PRODUCT_FROM_DATABASE=TVStation DVB-C plus - -pci:v00001131d00007160* - ID_PRODUCT_FROM_DATABASE=SAA7160 - -pci:v00001131d00007160sv00001458sd00009009* - ID_PRODUCT_FROM_DATABASE=E8000 DVB-T/Analog TV/FM tuner - -pci:v00001131d00007162* - ID_PRODUCT_FROM_DATABASE=SAA7162 - -pci:v00001131d00007162sv000011BDsd00000101* - ID_PRODUCT_FROM_DATABASE=Pinnacle PCTV 7010iX TV Card - -pci:v00001131d00007164* - ID_PRODUCT_FROM_DATABASE=SAA7164 - -pci:v00001131d00007164sv00000070sd00008800* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2250 - -pci:v00001131d00007164sv00000070sd00008810* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2250 - -pci:v00001131d00007164sv00000070sd00008851* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2250 - -pci:v00001131d00007164sv00000070sd00008853* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2250 - -pci:v00001131d00007164sv00000070sd00008880* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2250 - -pci:v00001131d00007164sv00000070sd00008891* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2250 - -pci:v00001131d00007164sv00000070sd000088A0* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2250 - -pci:v00001131d00007164sv00000070sd000088A1* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2250 - -pci:v00001131d00007164sv00000070sd00008900* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2200 - -pci:v00001131d00007164sv00000070sd00008901* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2200 - -pci:v00001131d00007164sv00000070sd00008940* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2200 (submodel 89619) - -pci:v00001131d00007164sv00000070sd00008951* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2200 - -pci:v00001131d00007164sv00000070sd00008953* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2200 - -pci:v00001131d00007164sv00000070sd00008980* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2200 - -pci:v00001131d00007164sv00000070sd00008991* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2200 - -pci:v00001131d00007164sv00000070sd00008993* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2200 - -pci:v00001131d00007164sv00000070sd000089A0* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2200 - -pci:v00001131d00007164sv00000070sd000089A1* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-2200 - -pci:v00001131d00007231* - ID_PRODUCT_FROM_DATABASE=SAA7231 - -pci:v00001131d00007231sv00005ACEsd00008000* - ID_PRODUCT_FROM_DATABASE=Behold TV H8 - -pci:v00001131d00007231sv00005ACEsd00008100* - ID_PRODUCT_FROM_DATABASE=Behold TV A8 - -pci:v00001131d00009730* - ID_PRODUCT_FROM_DATABASE=SAA9730 Integrated Multimedia and Peripheral Controller - -pci:v00001131d00009730sv00001131sd00000000* - ID_PRODUCT_FROM_DATABASE=Integrated Multimedia and Peripheral Controller - -pci:v00001132* - ID_VENDOR_FROM_DATABASE=Mitel Corp. - -pci:v00001133* - ID_VENDOR_FROM_DATABASE=Dialogic Corporation - -pci:v00001133d00007701* - ID_PRODUCT_FROM_DATABASE=Eiconcard C90 - -pci:v00001133d00007711* - ID_PRODUCT_FROM_DATABASE=Eiconcard C91 - -pci:v00001133d00007901* - ID_PRODUCT_FROM_DATABASE=EiconCard S90 - -pci:v00001133d00007902* - ID_PRODUCT_FROM_DATABASE=EiconCard S90 - -pci:v00001133d00007911* - ID_PRODUCT_FROM_DATABASE=EiconCard S91 - -pci:v00001133d00007912* - ID_PRODUCT_FROM_DATABASE=EiconCard S91 - -pci:v00001133d00007921* - ID_PRODUCT_FROM_DATABASE=Eiconcard S92 - -pci:v00001133d00007941* - ID_PRODUCT_FROM_DATABASE=EiconCard S94 - -pci:v00001133d00007942* - ID_PRODUCT_FROM_DATABASE=EiconCard S94 - -pci:v00001133d00007943* - ID_PRODUCT_FROM_DATABASE=EiconCard S94 - -pci:v00001133d00007944* - ID_PRODUCT_FROM_DATABASE=EiconCard S94 - -pci:v00001133d00007945* - ID_PRODUCT_FROM_DATABASE=Eiconcard S94 - -pci:v00001133d00007948* - ID_PRODUCT_FROM_DATABASE=Eiconcard S94 64bit/66MHz - -pci:v00001133d00009711* - ID_PRODUCT_FROM_DATABASE=Eiconcard S91 V2 - -pci:v00001133d00009911* - ID_PRODUCT_FROM_DATABASE=Eiconcard S91 V2 - -pci:v00001133d00009941* - ID_PRODUCT_FROM_DATABASE=Eiconcard S94 V2 - -pci:v00001133d00009A41* - ID_PRODUCT_FROM_DATABASE=Eiconcard S94 PCIe - -pci:v00001133d0000B921* - ID_PRODUCT_FROM_DATABASE=EiconCard P92 - -pci:v00001133d0000B922* - ID_PRODUCT_FROM_DATABASE=EiconCard P92 - -pci:v00001133d0000B923* - ID_PRODUCT_FROM_DATABASE=EiconCard P92 - -pci:v00001133d0000E001* - ID_PRODUCT_FROM_DATABASE=Diva Pro 2.0 S/T - -pci:v00001133d0000E002* - ID_PRODUCT_FROM_DATABASE=Diva 2.0 S/T PCI - -pci:v00001133d0000E003* - ID_PRODUCT_FROM_DATABASE=Diva Pro 2.0 U - -pci:v00001133d0000E004* - ID_PRODUCT_FROM_DATABASE=Diva 2.0 U PCI - -pci:v00001133d0000E005* - ID_PRODUCT_FROM_DATABASE=Diva 2.01 S/T PCI - -pci:v00001133d0000E006* - ID_PRODUCT_FROM_DATABASE=Diva CT S/T PCI - -pci:v00001133d0000E007* - ID_PRODUCT_FROM_DATABASE=Diva CT U PCI - -pci:v00001133d0000E008* - ID_PRODUCT_FROM_DATABASE=Diva CT Lite S/T PCI - -pci:v00001133d0000E009* - ID_PRODUCT_FROM_DATABASE=Diva CT Lite U PCI - -pci:v00001133d0000E00A* - ID_PRODUCT_FROM_DATABASE=Diva ISDN+V.90 PCI - -pci:v00001133d0000E00B* - ID_PRODUCT_FROM_DATABASE=Diva ISDN PCI 2.02 - -pci:v00001133d0000E00C* - ID_PRODUCT_FROM_DATABASE=Diva 2.02 PCI U - -pci:v00001133d0000E00D* - ID_PRODUCT_FROM_DATABASE=Diva Pro 3.0 PCI - -pci:v00001133d0000E00E* - ID_PRODUCT_FROM_DATABASE=Diva ISDN+CT S/T PCI Rev 2 - -pci:v00001133d0000E010* - ID_PRODUCT_FROM_DATABASE=Diva Server BRI-2M PCI - -pci:v00001133d0000E010sv0000110Asd00000021* - ID_PRODUCT_FROM_DATABASE=Fujitsu Siemens ISDN S0 - -pci:v00001133d0000E011* - ID_PRODUCT_FROM_DATABASE=Diva Server BRI S/T Rev 2 - -pci:v00001133d0000E012* - ID_PRODUCT_FROM_DATABASE=Diva Server 4BRI-8M PCI - -pci:v00001133d0000E013* - ID_PRODUCT_FROM_DATABASE=4BRI - -pci:v00001133d0000E013sv00001133sd00001300* - ID_PRODUCT_FROM_DATABASE=Diva V-4BRI-8 PCI v2 - -pci:v00001133d0000E013sv00001133sd0000E013* - ID_PRODUCT_FROM_DATABASE=Diva 4BRI-8 PCI v2 - -pci:v00001133d0000E014* - ID_PRODUCT_FROM_DATABASE=Diva Server PRI-30M PCI - -pci:v00001133d0000E015* - ID_PRODUCT_FROM_DATABASE=Diva PRI PCI v2 - -pci:v00001133d0000E016* - ID_PRODUCT_FROM_DATABASE=Diva Server Voice 4BRI PCI - -pci:v00001133d0000E017* - ID_PRODUCT_FROM_DATABASE=Diva Server Voice 4BRI Rev 2 - -pci:v00001133d0000E017sv00001133sd0000E017* - ID_PRODUCT_FROM_DATABASE=Diva Server Voice 4BRI-8M 2.0 PCI - -pci:v00001133d0000E018* - ID_PRODUCT_FROM_DATABASE=BRI - -pci:v00001133d0000E018sv00001133sd00001800* - ID_PRODUCT_FROM_DATABASE=Diva V-BRI-2 PCI v2 - -pci:v00001133d0000E018sv00001133sd0000E018* - ID_PRODUCT_FROM_DATABASE=Diva BRI-2 PCI v2 - -pci:v00001133d0000E019* - ID_PRODUCT_FROM_DATABASE=Diva Server Voice PRI Rev 2 - -pci:v00001133d0000E019sv00001133sd0000E019* - ID_PRODUCT_FROM_DATABASE=Diva Server Voice PRI 2.0 PCI - -pci:v00001133d0000E01A* - ID_PRODUCT_FROM_DATABASE=Diva BRI-2FX PCI v2 - -pci:v00001133d0000E01B* - ID_PRODUCT_FROM_DATABASE=Diva Server Voice BRI-2M 2.0 PCI - -pci:v00001133d0000E01Bsv00001133sd0000E01B* - ID_PRODUCT_FROM_DATABASE=Diva Server Voice BRI-2M 2.0 PCI - -pci:v00001133d0000E01C* - ID_PRODUCT_FROM_DATABASE=PRI - -pci:v00001133d0000E01Csv00001133sd00001C01* - ID_PRODUCT_FROM_DATABASE=Diva PRI/E1/T1-8 PCI v3 - -pci:v00001133d0000E01Csv00001133sd00001C02* - ID_PRODUCT_FROM_DATABASE=Diva PRI/T1-24 PCI(e) v3 - -pci:v00001133d0000E01Csv00001133sd00001C03* - ID_PRODUCT_FROM_DATABASE=Diva PRI/E1-30 PCI(e) v3 - -pci:v00001133d0000E01Csv00001133sd00001C04* - ID_PRODUCT_FROM_DATABASE=Diva PRI/E1/T1-CTI PCI(e) v3 - -pci:v00001133d0000E01Csv00001133sd00001C05* - ID_PRODUCT_FROM_DATABASE=Diva V-PRI/T1-24 PCI(e) v3 - -pci:v00001133d0000E01Csv00001133sd00001C06* - ID_PRODUCT_FROM_DATABASE=Diva V-PRI/E1-30 PCI(e) v3 - -pci:v00001133d0000E01Csv00001133sd00001C07* - ID_PRODUCT_FROM_DATABASE=Diva Server PRI/E1/T1-8 Cornet NQ - -pci:v00001133d0000E01Csv00001133sd00001C08* - ID_PRODUCT_FROM_DATABASE=Diva Server PRI/T1-24 Cornet NQ - -pci:v00001133d0000E01Csv00001133sd00001C09* - ID_PRODUCT_FROM_DATABASE=Diva Server PRI/E1-30 Cornet NQ - -pci:v00001133d0000E01Csv00001133sd00001C0A* - ID_PRODUCT_FROM_DATABASE=Diva Server PRI/E1/T1 Cornet NQ - -pci:v00001133d0000E01Csv00001133sd00001C0B* - ID_PRODUCT_FROM_DATABASE=Diva Server V-PRI/T1-24 Cornet NQ - -pci:v00001133d0000E01Csv00001133sd00001C0C* - ID_PRODUCT_FROM_DATABASE=Diva Server V-PRI/E1-30 Cornet NQ - -pci:v00001133d0000E01E* - ID_PRODUCT_FROM_DATABASE=2PRI - -pci:v00001133d0000E01Esv00001133sd00001E01* - ID_PRODUCT_FROM_DATABASE=Diva 2PRI/E1/T1-60 PCI v1 - -pci:v00001133d0000E01Esv00001133sd0000E01E* - ID_PRODUCT_FROM_DATABASE=Diva V-2PRI/E1/T1-60 PCI v1 - -pci:v00001133d0000E020* - ID_PRODUCT_FROM_DATABASE=4PRI - -pci:v00001133d0000E020sv00001133sd00002001* - ID_PRODUCT_FROM_DATABASE=Diva 4PRI/E1/T1-120 PCI v1 - -pci:v00001133d0000E020sv00001133sd0000E020* - ID_PRODUCT_FROM_DATABASE=Diva V-4PRI/E1/T1-120 PCI v1 - -pci:v00001133d0000E022* - ID_PRODUCT_FROM_DATABASE=Analog-2 - -pci:v00001133d0000E022sv00001133sd00002200* - ID_PRODUCT_FROM_DATABASE=Diva V-Analog-2 PCI v1 - -pci:v00001133d0000E022sv00001133sd0000E022* - ID_PRODUCT_FROM_DATABASE=Diva Analog-2 PCI v1 - -pci:v00001133d0000E024* - ID_PRODUCT_FROM_DATABASE=Analog-4 - -pci:v00001133d0000E024sv00001133sd00002400* - ID_PRODUCT_FROM_DATABASE=Diva V-Analog-4 PCI v1 - -pci:v00001133d0000E024sv00001133sd0000E024* - ID_PRODUCT_FROM_DATABASE=Diva Analog-4 PCI v1 - -pci:v00001133d0000E028* - ID_PRODUCT_FROM_DATABASE=Analog-8 - -pci:v00001133d0000E028sv00001133sd00002800* - ID_PRODUCT_FROM_DATABASE=Diva V-Analog-8 PCI v1 - -pci:v00001133d0000E028sv00001133sd0000E028* - ID_PRODUCT_FROM_DATABASE=Diva Analog-8 PCI v1 - -pci:v00001133d0000E02A* - ID_PRODUCT_FROM_DATABASE=Diva IPM-300 PCI v1 - -pci:v00001133d0000E02C* - ID_PRODUCT_FROM_DATABASE=Diva IPM-600 PCI v1 - -pci:v00001133d0000E02E* - ID_PRODUCT_FROM_DATABASE=4BRI - -pci:v00001133d0000E02Esv00001133sd00002E01* - ID_PRODUCT_FROM_DATABASE=Diva V-4BRI-8 PCIe v2 - -pci:v00001133d0000E02Esv00001133sd0000E02E* - ID_PRODUCT_FROM_DATABASE=Diva 4BRI-8 PCIe v2 - -pci:v00001133d0000E032* - ID_PRODUCT_FROM_DATABASE=BRI - -pci:v00001133d0000E032sv00001133sd00003201* - ID_PRODUCT_FROM_DATABASE=Diva V-BRI-2 PCIe v2 - -pci:v00001133d0000E032sv00001133sd0000E032* - ID_PRODUCT_FROM_DATABASE=Diva BRI-2 PCIe v2 - -pci:v00001133d0000E034* - ID_PRODUCT_FROM_DATABASE=Diva BRI-CTI PCI v2 - -pci:v00001134* - ID_VENDOR_FROM_DATABASE=Mercury Computer Systems - -pci:v00001134d00000001* - ID_PRODUCT_FROM_DATABASE=Raceway Bridge - -pci:v00001134d00000002* - ID_PRODUCT_FROM_DATABASE=Dual PCI to RapidIO Bridge - -pci:v00001134d0000000B* - ID_PRODUCT_FROM_DATABASE=POET Serial RapidIO Bridge - -pci:v00001134d0000000D* - ID_PRODUCT_FROM_DATABASE=POET PSDMS Device - -pci:v00001135* - ID_VENDOR_FROM_DATABASE=Fuji Xerox Co Ltd - -pci:v00001135d00000001* - ID_PRODUCT_FROM_DATABASE=Printer controller - -pci:v00001136* - ID_VENDOR_FROM_DATABASE=Momentum Data Systems - -pci:v00001136d00000002* - ID_PRODUCT_FROM_DATABASE=PCI-JTAG - -pci:v00001137* - ID_VENDOR_FROM_DATABASE=Cisco Systems Inc - -pci:v00001137d00000023* - ID_PRODUCT_FROM_DATABASE=VIC 81 PCIe Upstream Port - -pci:v00001137d00000040* - ID_PRODUCT_FROM_DATABASE=VIC PCIe Upstream Port - -pci:v00001137d00000041* - ID_PRODUCT_FROM_DATABASE=VIC PCIe Downstream Port - -pci:v00001137d00000042* - ID_PRODUCT_FROM_DATABASE=VIC Management Controller - -pci:v00001137d00000042sv00001137sd00000047* - ID_PRODUCT_FROM_DATABASE=VIC P81E PCIe Management Controller - -pci:v00001137d00000043* - ID_PRODUCT_FROM_DATABASE=VIC Ethernet NIC - -pci:v00001137d00000043sv00001137sd00000047* - ID_PRODUCT_FROM_DATABASE=VIC P81E PCIe Ethernet NIC - -pci:v00001137d00000043sv00001137sd00000048* - ID_PRODUCT_FROM_DATABASE=VIC M81KR Mezzanine Ethernet NIC - -pci:v00001137d00000043sv00001137sd0000004F* - ID_PRODUCT_FROM_DATABASE=VIC 1280 Mezzanine Ethernet NIC - -pci:v00001137d00000043sv00001137sd00000084* - ID_PRODUCT_FROM_DATABASE=VIC 1240 MLOM Ethernet NIC - -pci:v00001137d00000043sv00001137sd00000085* - ID_PRODUCT_FROM_DATABASE=VIC 1225 PCIe Ethernet NIC - -pci:v00001137d00000044* - ID_PRODUCT_FROM_DATABASE=VIC Ethernet NIC Dynamic - -pci:v00001137d00000044sv00001137sd00000047* - ID_PRODUCT_FROM_DATABASE=VIC P81E PCIe Ethernet NIC Dynamic - -pci:v00001137d00000044sv00001137sd00000048* - ID_PRODUCT_FROM_DATABASE=VIC M81KR Mezzanine Ethernet NIC Dynamic - -pci:v00001137d00000044sv00001137sd0000004F* - ID_PRODUCT_FROM_DATABASE=VIC 1280 Mezzanine Ethernet NIC Dynamic - -pci:v00001137d00000044sv00001137sd00000084* - ID_PRODUCT_FROM_DATABASE=VIC 1240 MLOM Ethernet NIC Dynamic - -pci:v00001137d00000044sv00001137sd00000085* - ID_PRODUCT_FROM_DATABASE=VIC 1225 PCIe Ethernet NIC Dynamic - -pci:v00001137d00000045* - ID_PRODUCT_FROM_DATABASE=VIC FCoE HBA - -pci:v00001137d00000045sv00001137sd00000047* - ID_PRODUCT_FROM_DATABASE=VIC P81E PCIe FCoE HBA - -pci:v00001137d00000045sv00001137sd00000048* - ID_PRODUCT_FROM_DATABASE=VIC M81KR Mezzanine FCoE HBA - -pci:v00001137d00000045sv00001137sd0000004F* - ID_PRODUCT_FROM_DATABASE=VIC 1280 Mezzanine FCoE HBA - -pci:v00001137d0000004E* - ID_PRODUCT_FROM_DATABASE=VIC 82 PCIe Upstream Port - -pci:v00001137d000000CF* - ID_PRODUCT_FROM_DATABASE=VIC Userspace NIC - -pci:v00001138* - ID_VENDOR_FROM_DATABASE=Ziatech Corporation - -pci:v00001138d00008905* - ID_PRODUCT_FROM_DATABASE=8905 [STD 32 Bridge] - -pci:v00001139* - ID_VENDOR_FROM_DATABASE=Dynamic Pictures, Inc - -pci:v00001139d00000001* - ID_PRODUCT_FROM_DATABASE=VGA Compatable 3D Graphics - -pci:v0000113A* - ID_VENDOR_FROM_DATABASE=FWB Inc - -pci:v0000113B* - ID_VENDOR_FROM_DATABASE=Network Computing Devices - -pci:v0000113C* - ID_VENDOR_FROM_DATABASE=Cyclone Microsystems, Inc. - -pci:v0000113Cd00000000* - ID_PRODUCT_FROM_DATABASE=PCI-9060 i960 Bridge - -pci:v0000113Cd00000001* - ID_PRODUCT_FROM_DATABASE=PCI-SDK [PCI i960 Evaluation Platform] - -pci:v0000113Cd00000911* - ID_PRODUCT_FROM_DATABASE=PCI-911 [i960Jx-based Intelligent I/O Controller] - -pci:v0000113Cd00000912* - ID_PRODUCT_FROM_DATABASE=PCI-912 [i960CF-based Intelligent I/O Controller] - -pci:v0000113Cd00000913* - ID_PRODUCT_FROM_DATABASE=PCI-913 - -pci:v0000113Cd00000914* - ID_PRODUCT_FROM_DATABASE=PCI-914 [I/O Controller w/ secondary PCI bus] - -pci:v0000113D* - ID_VENDOR_FROM_DATABASE=Leading Edge Products Inc - -pci:v0000113E* - ID_VENDOR_FROM_DATABASE=Sanyo Electric Co - Computer Engineering Dept - -pci:v0000113F* - ID_VENDOR_FROM_DATABASE=Equinox Systems, Inc. - -pci:v0000113Fd00000808* - ID_PRODUCT_FROM_DATABASE=SST-64P Adapter - -pci:v0000113Fd00001010* - ID_PRODUCT_FROM_DATABASE=SST-128P Adapter - -pci:v0000113Fd000080C0* - ID_PRODUCT_FROM_DATABASE=SST-16P DB Adapter - -pci:v0000113Fd000080C4* - ID_PRODUCT_FROM_DATABASE=SST-16P RJ Adapter - -pci:v0000113Fd000080C8* - ID_PRODUCT_FROM_DATABASE=SST-16P Adapter - -pci:v0000113Fd00008888* - ID_PRODUCT_FROM_DATABASE=SST-4P Adapter - -pci:v0000113Fd00009090* - ID_PRODUCT_FROM_DATABASE=SST-8P Adapter - -pci:v00001140* - ID_VENDOR_FROM_DATABASE=Intervoice Inc - -pci:v00001141* - ID_VENDOR_FROM_DATABASE=Crest Microsystem Inc - -pci:v00001142* - ID_VENDOR_FROM_DATABASE=Alliance Semiconductor Corporation - -pci:v00001142d00003210* - ID_PRODUCT_FROM_DATABASE=AP6410 - -pci:v00001142d00006422* - ID_PRODUCT_FROM_DATABASE=ProVideo 6422 - -pci:v00001142d00006424* - ID_PRODUCT_FROM_DATABASE=ProVideo 6424 - -pci:v00001142d00006425* - ID_PRODUCT_FROM_DATABASE=ProMotion AT25 - -pci:v00001142d0000643D* - ID_PRODUCT_FROM_DATABASE=ProMotion AT3D - -pci:v00001143* - ID_VENDOR_FROM_DATABASE=NetPower, Inc - -pci:v00001144* - ID_VENDOR_FROM_DATABASE=Cincinnati Milacron - -pci:v00001144d00000001* - ID_PRODUCT_FROM_DATABASE=Noservo controller - -pci:v00001145* - ID_VENDOR_FROM_DATABASE=Workbit Corporation - -pci:v00001145d00008007* - ID_PRODUCT_FROM_DATABASE=NinjaSCSI-32 Workbit - -pci:v00001145d0000F007* - ID_PRODUCT_FROM_DATABASE=NinjaSCSI-32 KME - -pci:v00001145d0000F010* - ID_PRODUCT_FROM_DATABASE=NinjaSCSI-32 Workbit - -pci:v00001145d0000F012* - ID_PRODUCT_FROM_DATABASE=NinjaSCSI-32 Logitec - -pci:v00001145d0000F013* - ID_PRODUCT_FROM_DATABASE=NinjaSCSI-32 Logitec - -pci:v00001145d0000F015* - ID_PRODUCT_FROM_DATABASE=NinjaSCSI-32 Melco - -pci:v00001145d0000F020* - ID_PRODUCT_FROM_DATABASE=NinjaSCSI-32 Sony PCGA-DVD51 - -pci:v00001145d0000F021* - ID_PRODUCT_FROM_DATABASE=NinjaPATA-32 Delkin Cardbus UDMA - -pci:v00001145d0000F024* - ID_PRODUCT_FROM_DATABASE=NinjaPATA-32 Delkin Cardbus UDMA - -pci:v00001145d0000F103* - ID_PRODUCT_FROM_DATABASE=NinjaPATA-32 Delkin Cardbus UDMA - -pci:v00001146* - ID_VENDOR_FROM_DATABASE=Force Computers - -pci:v00001147* - ID_VENDOR_FROM_DATABASE=Interface Corp - -pci:v00001148* - ID_VENDOR_FROM_DATABASE=SysKonnect - -pci:v00001148d00004000* - ID_PRODUCT_FROM_DATABASE=FDDI Adapter - -pci:v00001148d00004000sv00000E11sd0000B03B* - ID_PRODUCT_FROM_DATABASE=Netelligent 100 FDDI DAS Fibre SC - -pci:v00001148d00004000sv00000E11sd0000B03C* - ID_PRODUCT_FROM_DATABASE=Netelligent 100 FDDI SAS Fibre SC - -pci:v00001148d00004000sv00000E11sd0000B03D* - ID_PRODUCT_FROM_DATABASE=Netelligent 100 FDDI DAS UTP - -pci:v00001148d00004000sv00000E11sd0000B03E* - ID_PRODUCT_FROM_DATABASE=Netelligent 100 FDDI SAS UTP - -pci:v00001148d00004000sv00000E11sd0000B03F* - ID_PRODUCT_FROM_DATABASE=Netelligent 100 FDDI SAS Fibre MIC - -pci:v00001148d00004000sv00001148sd00005521* - ID_PRODUCT_FROM_DATABASE=FDDI SK-5521 (SK-NET FDDI-UP) - -pci:v00001148d00004000sv00001148sd00005522* - ID_PRODUCT_FROM_DATABASE=FDDI SK-5522 (SK-NET FDDI-UP DAS) - -pci:v00001148d00004000sv00001148sd00005541* - ID_PRODUCT_FROM_DATABASE=FDDI SK-5541 (SK-NET FDDI-FP) - -pci:v00001148d00004000sv00001148sd00005543* - ID_PRODUCT_FROM_DATABASE=FDDI SK-5543 (SK-NET FDDI-LP) - -pci:v00001148d00004000sv00001148sd00005544* - ID_PRODUCT_FROM_DATABASE=FDDI SK-5544 (SK-NET FDDI-LP DAS) - -pci:v00001148d00004000sv00001148sd00005821* - ID_PRODUCT_FROM_DATABASE=FDDI SK-5821 (SK-NET FDDI-UP64) - -pci:v00001148d00004000sv00001148sd00005822* - ID_PRODUCT_FROM_DATABASE=FDDI SK-5822 (SK-NET FDDI-UP64 DAS) - -pci:v00001148d00004000sv00001148sd00005841* - ID_PRODUCT_FROM_DATABASE=FDDI SK-5841 (SK-NET FDDI-FP64) - -pci:v00001148d00004000sv00001148sd00005843* - ID_PRODUCT_FROM_DATABASE=FDDI SK-5843 (SK-NET FDDI-LP64) - -pci:v00001148d00004000sv00001148sd00005844* - ID_PRODUCT_FROM_DATABASE=FDDI SK-5844 (SK-NET FDDI-LP64 DAS) - -pci:v00001148d00004200* - ID_PRODUCT_FROM_DATABASE=Token Ring adapter - -pci:v00001148d00004300* - ID_PRODUCT_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) - -pci:v00001148d00004300sv00001148sd00009821* - ID_PRODUCT_FROM_DATABASE=SK-9821 Gigabit Ethernet Server Adapter (SK-NET GE-T) - -pci:v00001148d00004300sv00001148sd00009822* - ID_PRODUCT_FROM_DATABASE=SK-9822 Gigabit Ethernet Server Adapter (SK-NET GE-T dual link) - -pci:v00001148d00004300sv00001148sd00009841* - ID_PRODUCT_FROM_DATABASE=SK-9841 Gigabit Ethernet Server Adapter (SK-NET GE-LX) - -pci:v00001148d00004300sv00001148sd00009842* - ID_PRODUCT_FROM_DATABASE=SK-9842 Gigabit Ethernet Server Adapter (SK-NET GE-LX dual link) - -pci:v00001148d00004300sv00001148sd00009843* - ID_PRODUCT_FROM_DATABASE=SK-9843 Gigabit Ethernet Server Adapter (SK-NET GE-SX) - -pci:v00001148d00004300sv00001148sd00009844* - ID_PRODUCT_FROM_DATABASE=SK-9844 Gigabit Ethernet Server Adapter (SK-NET GE-SX dual link) - -pci:v00001148d00004300sv00001148sd00009861* - ID_PRODUCT_FROM_DATABASE=SK-9861 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition) - -pci:v00001148d00004300sv00001148sd00009862* - ID_PRODUCT_FROM_DATABASE=SK-9862 Gigabit Ethernet Server Adapter (SK-NET GE-SX Volition dual link) - -pci:v00001148d00004300sv00001148sd00009871* - ID_PRODUCT_FROM_DATABASE=SK-9871 Gigabit Ethernet Server Adapter (SK-NET GE-ZX) - -pci:v00001148d00004300sv00001148sd00009872* - ID_PRODUCT_FROM_DATABASE=SK-9872 Gigabit Ethernet Server Adapter (SK-NET GE-ZX dual link) - -pci:v00001148d00004300sv00001259sd00002970* - ID_PRODUCT_FROM_DATABASE=AT-2970SX Gigabit Ethernet Adapter - -pci:v00001148d00004300sv00001259sd00002971* - ID_PRODUCT_FROM_DATABASE=AT-2970LX Gigabit Ethernet Adapter - -pci:v00001148d00004300sv00001259sd00002972* - ID_PRODUCT_FROM_DATABASE=AT-2970TX Gigabit Ethernet Adapter - -pci:v00001148d00004300sv00001259sd00002973* - ID_PRODUCT_FROM_DATABASE=AT-2971SX Gigabit Ethernet Adapter - -pci:v00001148d00004300sv00001259sd00002974* - ID_PRODUCT_FROM_DATABASE=AT-2971T Gigabit Ethernet Adapter - -pci:v00001148d00004300sv00001259sd00002975* - ID_PRODUCT_FROM_DATABASE=AT-2970SX/2SC Gigabit Ethernet Adapter - -pci:v00001148d00004300sv00001259sd00002976* - ID_PRODUCT_FROM_DATABASE=AT-2970LX/2SC Gigabit Ethernet Adapter - -pci:v00001148d00004300sv00001259sd00002977* - ID_PRODUCT_FROM_DATABASE=AT-2970TX/2TX Gigabit Ethernet Adapter - -pci:v00001148d00004320* - ID_PRODUCT_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter, PCI64, Fiber ZX/SC - -pci:v00001148d00004320sv00001148sd00000121* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8001 Adapter - -pci:v00001148d00004320sv00001148sd00000221* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8002 Adapter - -pci:v00001148d00004320sv00001148sd00000321* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8003 Adapter - -pci:v00001148d00004320sv00001148sd00000421* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8004 Adapter - -pci:v00001148d00004320sv00001148sd00000621* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8006 Adapter - -pci:v00001148d00004320sv00001148sd00000721* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8007 Adapter - -pci:v00001148d00004320sv00001148sd00000821* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8008 Adapter - -pci:v00001148d00004320sv00001148sd00000921* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8009 Adapter - -pci:v00001148d00004320sv00001148sd00001121* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8011 Adapter - -pci:v00001148d00004320sv00001148sd00001221* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8012 Adapter - -pci:v00001148d00004320sv00001148sd00003221* - ID_PRODUCT_FROM_DATABASE=SK-9521 V2.0 10/100/1000Base-T Adapter - -pci:v00001148d00004320sv00001148sd00005021* - ID_PRODUCT_FROM_DATABASE=SK-9821 V2.0 Gigabit Ethernet 10/100/1000Base-T Adapter - -pci:v00001148d00004320sv00001148sd00005041* - ID_PRODUCT_FROM_DATABASE=SK-9841 V2.0 Gigabit Ethernet 1000Base-LX Adapter - -pci:v00001148d00004320sv00001148sd00005043* - ID_PRODUCT_FROM_DATABASE=SK-9843 V2.0 Gigabit Ethernet 1000Base-SX Adapter - -pci:v00001148d00004320sv00001148sd00005051* - ID_PRODUCT_FROM_DATABASE=SK-9851 V2.0 Gigabit Ethernet 1000Base-SX Adapter - -pci:v00001148d00004320sv00001148sd00005061* - ID_PRODUCT_FROM_DATABASE=SK-9861 V2.0 Gigabit Ethernet 1000Base-SX Adapter - -pci:v00001148d00004320sv00001148sd00005071* - ID_PRODUCT_FROM_DATABASE=SK-9871 V2.0 Gigabit Ethernet 1000Base-ZX Adapter - -pci:v00001148d00004320sv00001148sd00009521* - ID_PRODUCT_FROM_DATABASE=SK-9521 10/100/1000Base-T Adapter - -pci:v00001148d00004400* - ID_PRODUCT_FROM_DATABASE=SK-9Dxx Gigabit Ethernet Adapter - -pci:v00001148d00004500* - ID_PRODUCT_FROM_DATABASE=SK-9Mxx Gigabit Ethernet Adapter - -pci:v00001148d00009000* - ID_PRODUCT_FROM_DATABASE=SK-9S21 10/100/1000Base-T Server Adapter, PCI-X, Copper RJ-45 - -pci:v00001148d00009843* - ID_PRODUCT_FROM_DATABASE=[Fujitsu] Gigabit Ethernet - -pci:v00001148d00009E00* - ID_PRODUCT_FROM_DATABASE=SK-9E21D 10/100/1000Base-T Adapter, Copper RJ-45 - -pci:v00001148d00009E00sv00001148sd00002100* - ID_PRODUCT_FROM_DATABASE=SK-9E21 Server Adapter - -pci:v00001148d00009E00sv00001148sd000021D0* - ID_PRODUCT_FROM_DATABASE=SK-9E21D 10/100/1000Base-T Adapter - -pci:v00001148d00009E00sv00001148sd00002200* - ID_PRODUCT_FROM_DATABASE=SK-9E22 Server Adapter - -pci:v00001148d00009E00sv00001148sd00008100* - ID_PRODUCT_FROM_DATABASE=SK-9E81 Server Adapter - -pci:v00001148d00009E00sv00001148sd00008200* - ID_PRODUCT_FROM_DATABASE=SK-9E82 Server Adapter - -pci:v00001148d00009E00sv00001148sd00009100* - ID_PRODUCT_FROM_DATABASE=SK-9E91 Server Adapter - -pci:v00001148d00009E00sv00001148sd00009200* - ID_PRODUCT_FROM_DATABASE=SK-9E92 Server Adapter - -pci:v00001148d00009E01* - ID_PRODUCT_FROM_DATABASE=SK-9E21M 10/100/1000Base-T Adapter - -pci:v00001149* - ID_VENDOR_FROM_DATABASE=Win System Corporation - -pci:v0000114A* - ID_VENDOR_FROM_DATABASE=VMIC - -pci:v0000114Ad00005565* - ID_PRODUCT_FROM_DATABASE=GE-IP PCI5565,PMC5565 Reflective Memory Node - -pci:v0000114Ad00005579* - ID_PRODUCT_FROM_DATABASE=VMIPCI-5579 (Reflective Memory Card) - -pci:v0000114Ad00005587* - ID_PRODUCT_FROM_DATABASE=VMIPCI-5587 (Reflective Memory Card) - -pci:v0000114Ad00006504* - ID_PRODUCT_FROM_DATABASE=VMIC PCI 7755 FPGA - -pci:v0000114Ad00007587* - ID_PRODUCT_FROM_DATABASE=VMIVME-7587 - -pci:v0000114B* - ID_VENDOR_FROM_DATABASE=Canopus Co., Ltd - -pci:v0000114C* - ID_VENDOR_FROM_DATABASE=Annabooks - -pci:v0000114D* - ID_VENDOR_FROM_DATABASE=IC Corporation - -pci:v0000114E* - ID_VENDOR_FROM_DATABASE=Nikon Systems Inc - -pci:v0000114F* - ID_VENDOR_FROM_DATABASE=Digi International - -pci:v0000114Fd00000002* - ID_PRODUCT_FROM_DATABASE=AccelePort EPC - -pci:v0000114Fd00000003* - ID_PRODUCT_FROM_DATABASE=RightSwitch SE-6 - -pci:v0000114Fd00000004* - ID_PRODUCT_FROM_DATABASE=AccelePort Xem - -pci:v0000114Fd00000005* - ID_PRODUCT_FROM_DATABASE=AccelePort Xr - -pci:v0000114Fd00000006* - ID_PRODUCT_FROM_DATABASE=AccelePort Xr,C/X - -pci:v0000114Fd00000009* - ID_PRODUCT_FROM_DATABASE=AccelePort Xr/J - -pci:v0000114Fd0000000A* - ID_PRODUCT_FROM_DATABASE=AccelePort EPC/J - -pci:v0000114Fd0000000C* - ID_PRODUCT_FROM_DATABASE=DataFirePRIme T1 (1-port) - -pci:v0000114Fd0000000D* - ID_PRODUCT_FROM_DATABASE=SyncPort 2-Port (x.25/FR) - -pci:v0000114Fd00000011* - ID_PRODUCT_FROM_DATABASE=AccelePort 8r EIA-232 (IBM) - -pci:v0000114Fd00000012* - ID_PRODUCT_FROM_DATABASE=AccelePort 8r EIA-422 - -pci:v0000114Fd00000013* - ID_PRODUCT_FROM_DATABASE=AccelePort Xr - -pci:v0000114Fd00000014* - ID_PRODUCT_FROM_DATABASE=AccelePort 8r EIA-422 - -pci:v0000114Fd00000015* - ID_PRODUCT_FROM_DATABASE=AccelePort Xem - -pci:v0000114Fd00000016* - ID_PRODUCT_FROM_DATABASE=AccelePort EPC/X - -pci:v0000114Fd00000017* - ID_PRODUCT_FROM_DATABASE=AccelePort C/X - -pci:v0000114Fd0000001A* - ID_PRODUCT_FROM_DATABASE=DataFirePRIme E1 (1-port) - -pci:v0000114Fd0000001B* - ID_PRODUCT_FROM_DATABASE=AccelePort C/X (IBM) - -pci:v0000114Fd0000001C* - ID_PRODUCT_FROM_DATABASE=AccelePort Xr (SAIP) - -pci:v0000114Fd0000001D* - ID_PRODUCT_FROM_DATABASE=DataFire RAS T1/E1/PRI - -pci:v0000114Fd0000001Dsv0000114Fsd00000050* - ID_PRODUCT_FROM_DATABASE=DataFire RAS E1 Adapter - -pci:v0000114Fd0000001Dsv0000114Fsd00000051* - ID_PRODUCT_FROM_DATABASE=DataFire RAS Dual E1 Adapter - -pci:v0000114Fd0000001Dsv0000114Fsd00000052* - ID_PRODUCT_FROM_DATABASE=DataFire RAS T1 Adapter - -pci:v0000114Fd0000001Dsv0000114Fsd00000053* - ID_PRODUCT_FROM_DATABASE=DataFire RAS Dual T1 Adapter - -pci:v0000114Fd00000023* - ID_PRODUCT_FROM_DATABASE=AccelePort RAS - -pci:v0000114Fd00000024* - ID_PRODUCT_FROM_DATABASE=DataFire RAS B4 ST/U - -pci:v0000114Fd00000024sv0000114Fsd00000030* - ID_PRODUCT_FROM_DATABASE=DataFire RAS BRI U Adapter - -pci:v0000114Fd00000024sv0000114Fsd00000031* - ID_PRODUCT_FROM_DATABASE=DataFire RAS BRI S/T Adapter - -pci:v0000114Fd00000026* - ID_PRODUCT_FROM_DATABASE=AccelePort 4r 920 - -pci:v0000114Fd00000027* - ID_PRODUCT_FROM_DATABASE=AccelePort Xr 920 - -pci:v0000114Fd00000028* - ID_PRODUCT_FROM_DATABASE=ClassicBoard 4 - -pci:v0000114Fd00000029* - ID_PRODUCT_FROM_DATABASE=ClassicBoard 8 - -pci:v0000114Fd00000034* - ID_PRODUCT_FROM_DATABASE=AccelePort 2r 920 - -pci:v0000114Fd00000035* - ID_PRODUCT_FROM_DATABASE=DataFire DSP T1/E1/PRI cPCI - -pci:v0000114Fd00000040* - ID_PRODUCT_FROM_DATABASE=AccelePort Xp - -pci:v0000114Fd00000040sv0000114Fsd00000042* - ID_PRODUCT_FROM_DATABASE=AccelePort 2p PCI - -pci:v0000114Fd00000040sv0000114Fsd00000043* - ID_PRODUCT_FROM_DATABASE=AccelePort 4p PCI - -pci:v0000114Fd00000040sv0000114Fsd00000044* - ID_PRODUCT_FROM_DATABASE=AccelePort 8p PCI - -pci:v0000114Fd00000040sv0000114Fsd00000045* - ID_PRODUCT_FROM_DATABASE=AccelePort 16p PCI - -pci:v0000114Fd00000040sv0000114Fsd0000004E* - ID_PRODUCT_FROM_DATABASE=AccelePort 32p PCI - -pci:v0000114Fd00000042* - ID_PRODUCT_FROM_DATABASE=AccelePort 2p - -pci:v0000114Fd00000043* - ID_PRODUCT_FROM_DATABASE=AccelePort 4p - -pci:v0000114Fd00000044* - ID_PRODUCT_FROM_DATABASE=AccelePort 8p - -pci:v0000114Fd00000045* - ID_PRODUCT_FROM_DATABASE=AccelePort 16p - -pci:v0000114Fd0000004E* - ID_PRODUCT_FROM_DATABASE=AccelePort 32p - -pci:v0000114Fd00000070* - ID_PRODUCT_FROM_DATABASE=Datafire Micro V IOM2 (Europe) - -pci:v0000114Fd00000071* - ID_PRODUCT_FROM_DATABASE=Datafire Micro V (Europe) - -pci:v0000114Fd00000072* - ID_PRODUCT_FROM_DATABASE=Datafire Micro V IOM2 (North America) - -pci:v0000114Fd00000073* - ID_PRODUCT_FROM_DATABASE=Datafire Micro V (North America) - -pci:v0000114Fd000000B0* - ID_PRODUCT_FROM_DATABASE=Digi Neo 4 - -pci:v0000114Fd000000B1* - ID_PRODUCT_FROM_DATABASE=Digi Neo 8 - -pci:v0000114Fd000000C8* - ID_PRODUCT_FROM_DATABASE=Digi Neo 2 DB9 - -pci:v0000114Fd000000C9* - ID_PRODUCT_FROM_DATABASE=Digi Neo 2 DB9 PRI - -pci:v0000114Fd000000CA* - ID_PRODUCT_FROM_DATABASE=Digi Neo 2 RJ45 - -pci:v0000114Fd000000CB* - ID_PRODUCT_FROM_DATABASE=Digi Neo 2 RJ45 PRI - -pci:v0000114Fd000000CC* - ID_PRODUCT_FROM_DATABASE=Digi Neo 1 422 - -pci:v0000114Fd000000CD* - ID_PRODUCT_FROM_DATABASE=Digi Neo 1 422 485 - -pci:v0000114Fd000000CE* - ID_PRODUCT_FROM_DATABASE=Digi Neo 2 422 485 - -pci:v0000114Fd000000D0* - ID_PRODUCT_FROM_DATABASE=ClassicBoard 4 422 - -pci:v0000114Fd000000D1* - ID_PRODUCT_FROM_DATABASE=ClassicBoard 8 422 - -pci:v0000114Fd000000F1* - ID_PRODUCT_FROM_DATABASE=Digi Neo PCI-E 4 port - -pci:v0000114Fd000000F4* - ID_PRODUCT_FROM_DATABASE=Digi Neo 4 (IBM version) - -pci:v0000114Fd00006001* - ID_PRODUCT_FROM_DATABASE=Avanstar - -pci:v00001150* - ID_VENDOR_FROM_DATABASE=Thinking Machines Corp - -pci:v00001151* - ID_VENDOR_FROM_DATABASE=JAE Electronics Inc. - -pci:v00001152* - ID_VENDOR_FROM_DATABASE=Megatek - -pci:v00001153* - ID_VENDOR_FROM_DATABASE=Land Win Electronic Corp - -pci:v00001154* - ID_VENDOR_FROM_DATABASE=Melco Inc - -pci:v00001155* - ID_VENDOR_FROM_DATABASE=Pine Technology Ltd - -pci:v00001156* - ID_VENDOR_FROM_DATABASE=Periscope Engineering - -pci:v00001157* - ID_VENDOR_FROM_DATABASE=Avsys Corporation - -pci:v00001158* - ID_VENDOR_FROM_DATABASE=Voarx R & D Inc - -pci:v00001158d00003011* - ID_PRODUCT_FROM_DATABASE=Tokenet/vg 1001/10m anylan - -pci:v00001158d00009050* - ID_PRODUCT_FROM_DATABASE=Lanfleet/Truevalue - -pci:v00001158d00009051* - ID_PRODUCT_FROM_DATABASE=Lanfleet/Truevalue - -pci:v00001159* - ID_VENDOR_FROM_DATABASE=Mutech Corp - -pci:v00001159d00000001* - ID_PRODUCT_FROM_DATABASE=MV-1000 - -pci:v00001159d00000002* - ID_PRODUCT_FROM_DATABASE=MV-1500 - -pci:v0000115A* - ID_VENDOR_FROM_DATABASE=Harlequin Ltd - -pci:v0000115B* - ID_VENDOR_FROM_DATABASE=Parallax Graphics - -pci:v0000115C* - ID_VENDOR_FROM_DATABASE=Photron Ltd. - -pci:v0000115D* - ID_VENDOR_FROM_DATABASE=Xircom - -pci:v0000115Dd00000003* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v0000115Dd00000003sv00001014sd00000181* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Cardbus Adapter - -pci:v0000115Dd00000003sv00001014sd00001181* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Cardbus Adapter - -pci:v0000115Dd00000003sv00001014sd00008181* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Cardbus Adapter - -pci:v0000115Dd00000003sv00001014sd00009181* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Cardbus Adapter - -pci:v0000115Dd00000003sv0000115Dsd00000181* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v0000115Dd00000003sv0000115Dsd00000182* - ID_PRODUCT_FROM_DATABASE=RealPort2 CardBus Ethernet 10/100 (R2BE-100) - -pci:v0000115Dd00000003sv0000115Dsd00001181* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v0000115Dd00000003sv00001179sd00000181* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v0000115Dd00000003sv00008086sd00008181* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Mobile CardBus 32 Adapter - -pci:v0000115Dd00000003sv00008086sd00009181* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Mobile CardBus 32 Adapter - -pci:v0000115Dd00000005* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v0000115Dd00000005sv00001014sd00000182* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Cardbus Adapter - -pci:v0000115Dd00000005sv00001014sd00001182* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Cardbus Adapter - -pci:v0000115Dd00000005sv0000115Dsd00000182* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v0000115Dd00000005sv0000115Dsd00001182* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v0000115Dd00000007* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v0000115Dd00000007sv00001014sd00000182* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Cardbus Adapter - -pci:v0000115Dd00000007sv00001014sd00001182* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Cardbus Adapter - -pci:v0000115Dd00000007sv0000115Dsd00000182* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v0000115Dd00000007sv0000115Dsd00001182* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v0000115Dd0000000B* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v0000115Dd0000000Bsv00001014sd00000183* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Cardbus Adapter - -pci:v0000115Dd0000000Bsv0000115Dsd00000183* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v0000115Dd0000000C* - ID_PRODUCT_FROM_DATABASE=Mini-PCI V.90 56k Modem - -pci:v0000115Dd0000000F* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v0000115Dd0000000Fsv00001014sd00000183* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Cardbus Adapter - -pci:v0000115Dd0000000Fsv0000115Dsd00000183* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 10/100 - -pci:v0000115Dd000000D4* - ID_PRODUCT_FROM_DATABASE=Mini-PCI K56Flex Modem - -pci:v0000115Dd00000101* - ID_PRODUCT_FROM_DATABASE=Cardbus 56k modem - -pci:v0000115Dd00000101sv0000115Dsd00001081* - ID_PRODUCT_FROM_DATABASE=Cardbus 56k Modem - -pci:v0000115Dd00000103* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet + 56k Modem - -pci:v0000115Dd00000103sv00001014sd00009181* - ID_PRODUCT_FROM_DATABASE=Cardbus 56k Modem - -pci:v0000115Dd00000103sv00001115sd00001181* - ID_PRODUCT_FROM_DATABASE=Cardbus Ethernet 100 + 56k Modem - -pci:v0000115Dd00000103sv0000115Dsd00001181* - ID_PRODUCT_FROM_DATABASE=CBEM56G-100 Ethernet + 56k Modem - -pci:v0000115Dd00000103sv00008086sd00009181* - ID_PRODUCT_FROM_DATABASE=PRO/100 LAN + Modem56 CardBus - -pci:v0000115E* - ID_VENDOR_FROM_DATABASE=Peer Protocols Inc - -pci:v0000115F* - ID_VENDOR_FROM_DATABASE=Maxtor Corporation - -pci:v00001160* - ID_VENDOR_FROM_DATABASE=Megasoft Inc - -pci:v00001161* - ID_VENDOR_FROM_DATABASE=PFU Limited - -pci:v00001162* - ID_VENDOR_FROM_DATABASE=OA Laboratory Co Ltd - -pci:v00001163* - ID_VENDOR_FROM_DATABASE=Rendition - -pci:v00001163d00000001* - ID_PRODUCT_FROM_DATABASE=Verite 1000 - -pci:v00001163d00002000* - ID_PRODUCT_FROM_DATABASE=Verite V2000/V2100/V2200 - -pci:v00001163d00002000sv00001092sd00002000* - ID_PRODUCT_FROM_DATABASE=Stealth II S220 - -pci:v00001164* - ID_VENDOR_FROM_DATABASE=Advanced Peripherals Technologies - -pci:v00001165* - ID_VENDOR_FROM_DATABASE=Imagraph Corporation - -pci:v00001165d00000001* - ID_PRODUCT_FROM_DATABASE=Motion TPEG Recorder/Player with audio - -pci:v00001166* - ID_VENDOR_FROM_DATABASE=Broadcom - -pci:v00001166d00000000* - ID_PRODUCT_FROM_DATABASE=CMIC-LE - -pci:v00001166d00000005* - ID_PRODUCT_FROM_DATABASE=CNB20-LE Host Bridge - -pci:v00001166d00000006* - ID_PRODUCT_FROM_DATABASE=CNB20HE Host Bridge - -pci:v00001166d00000007* - ID_PRODUCT_FROM_DATABASE=CNB20-LE Host Bridge - -pci:v00001166d00000008* - ID_PRODUCT_FROM_DATABASE=CNB20HE Host Bridge - -pci:v00001166d00000009* - ID_PRODUCT_FROM_DATABASE=CNB20LE Host Bridge - -pci:v00001166d00000010* - ID_PRODUCT_FROM_DATABASE=CIOB30 - -pci:v00001166d00000011* - ID_PRODUCT_FROM_DATABASE=CMIC-HE - -pci:v00001166d00000012* - ID_PRODUCT_FROM_DATABASE=CMIC-WS Host Bridge (GC-LE chipset) - -pci:v00001166d00000013* - ID_PRODUCT_FROM_DATABASE=CNB20-HE Host Bridge - -pci:v00001166d00000014* - ID_PRODUCT_FROM_DATABASE=CMIC-LE Host Bridge (GC-LE chipset) - -pci:v00001166d00000015* - ID_PRODUCT_FROM_DATABASE=CMIC-GC Host Bridge - -pci:v00001166d00000016* - ID_PRODUCT_FROM_DATABASE=CMIC-GC Host Bridge - -pci:v00001166d00000017* - ID_PRODUCT_FROM_DATABASE=GCNB-LE Host Bridge - -pci:v00001166d00000031* - ID_PRODUCT_FROM_DATABASE=HT1100 HPX0 HT Host Bridge - -pci:v00001166d00000036* - ID_PRODUCT_FROM_DATABASE=BCM5785 [HT1000] PCI/PCI-X Bridge - -pci:v00001166d00000101* - ID_PRODUCT_FROM_DATABASE=CIOB-X2 PCI-X I/O Bridge - -pci:v00001166d00000103* - ID_PRODUCT_FROM_DATABASE=EPB PCI-Express to PCI-X Bridge - -pci:v00001166d00000104* - ID_PRODUCT_FROM_DATABASE=BCM5785 [HT1000] PCI/PCI-X Bridge - -pci:v00001166d00000110* - ID_PRODUCT_FROM_DATABASE=CIOB-E I/O Bridge with Gigabit Ethernet - -pci:v00001166d00000130* - ID_PRODUCT_FROM_DATABASE=BCM5780 [HT2000] PCI-X bridge - -pci:v00001166d00000132* - ID_PRODUCT_FROM_DATABASE=BCM5780 [HT2000] PCI-Express Bridge - -pci:v00001166d00000132sv00001166sd00000132* - ID_PRODUCT_FROM_DATABASE=HT2000 PCI-Express bridge - -pci:v00001166d00000140* - ID_PRODUCT_FROM_DATABASE=HT2100 PCI-Express Bridge - -pci:v00001166d00000141* - ID_PRODUCT_FROM_DATABASE=HT2100 PCI-Express Bridge - -pci:v00001166d00000142* - ID_PRODUCT_FROM_DATABASE=HT2100 PCI-Express Bridge - -pci:v00001166d00000144* - ID_PRODUCT_FROM_DATABASE=HT2100 PCI-Express Bridge - -pci:v00001166d00000200* - ID_PRODUCT_FROM_DATABASE=OSB4 South Bridge - -pci:v00001166d00000201* - ID_PRODUCT_FROM_DATABASE=CSB5 South Bridge - -pci:v00001166d00000201sv00004C53sd00001080* - ID_PRODUCT_FROM_DATABASE=CT8 mainboard - -pci:v00001166d00000203* - ID_PRODUCT_FROM_DATABASE=CSB6 South Bridge - -pci:v00001166d00000203sv00001734sd00001012* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX series - -pci:v00001166d00000205* - ID_PRODUCT_FROM_DATABASE=BCM5785 [HT1000] Legacy South Bridge - -pci:v00001166d00000211* - ID_PRODUCT_FROM_DATABASE=OSB4 IDE Controller - -pci:v00001166d00000212* - ID_PRODUCT_FROM_DATABASE=CSB5 IDE Controller - -pci:v00001166d00000212sv00001028sd0000014A* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1750 - -pci:v00001166d00000212sv00001028sd0000810B* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1650/2550 - -pci:v00001166d00000212sv00004C53sd00001080* - ID_PRODUCT_FROM_DATABASE=CT8 mainboard - -pci:v00001166d00000213* - ID_PRODUCT_FROM_DATABASE=CSB6 RAID/IDE Controller - -pci:v00001166d00000213sv00001028sd00004134* - ID_PRODUCT_FROM_DATABASE=PowerEdge 600SC - -pci:v00001166d00000213sv00001028sd0000C134* - ID_PRODUCT_FROM_DATABASE=Poweredge SC600 - -pci:v00001166d00000213sv00001734sd00001012* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX series onboard IDE - -pci:v00001166d00000214* - ID_PRODUCT_FROM_DATABASE=BCM5785 [HT1000] IDE - -pci:v00001166d00000214sv00001028sd00000205* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2970 HT1000 IDE - -pci:v00001166d00000217* - ID_PRODUCT_FROM_DATABASE=CSB6 IDE Controller - -pci:v00001166d00000217sv00001028sd00004134* - ID_PRODUCT_FROM_DATABASE=Poweredge SC600 - -pci:v00001166d0000021B* - ID_PRODUCT_FROM_DATABASE=HT1100 HD Audio - -pci:v00001166d00000220* - ID_PRODUCT_FROM_DATABASE=OSB4/CSB5 OHCI USB Controller - -pci:v00001166d00000220sv00004C53sd00001080* - ID_PRODUCT_FROM_DATABASE=CT8 mainboard - -pci:v00001166d00000221* - ID_PRODUCT_FROM_DATABASE=CSB6 OHCI USB Controller - -pci:v00001166d00000221sv00001734sd00001012* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX series onboard OHCI - -pci:v00001166d00000223* - ID_PRODUCT_FROM_DATABASE=BCM5785 [HT1000] USB - -pci:v00001166d00000223sv00001028sd00000205* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2970 HT1000 USB Controller - -pci:v00001166d00000223sv00001028sd0000020B* - ID_PRODUCT_FROM_DATABASE=PowerEdge T605 HT1000 USB Controller - -pci:v00001166d00000225* - ID_PRODUCT_FROM_DATABASE=CSB5 LPC bridge - -pci:v00001166d00000227* - ID_PRODUCT_FROM_DATABASE=GCLE-2 Host Bridge - -pci:v00001166d00000227sv00001734sd00001012* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX series - -pci:v00001166d00000230* - ID_PRODUCT_FROM_DATABASE=CSB5 LPC bridge - -pci:v00001166d00000230sv00004C53sd00001080* - ID_PRODUCT_FROM_DATABASE=CT8 mainboard - -pci:v00001166d00000234* - ID_PRODUCT_FROM_DATABASE=BCM5785 [HT1000] LPC - -pci:v00001166d00000234sv00001028sd00000205* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2970 HT1000 LPC - -pci:v00001166d00000234sv00001028sd0000020B* - ID_PRODUCT_FROM_DATABASE=PowerEdge T605 HT1000 LPC - -pci:v00001166d00000235* - ID_PRODUCT_FROM_DATABASE=BCM5785 [HT1000] XIOAPIC0-2 - -pci:v00001166d00000238* - ID_PRODUCT_FROM_DATABASE=BCM5785 [HT1000] WDTimer - -pci:v00001166d00000240* - ID_PRODUCT_FROM_DATABASE=K2 SATA - -pci:v00001166d00000241* - ID_PRODUCT_FROM_DATABASE=RAIDCore RC4000 - -pci:v00001166d00000242* - ID_PRODUCT_FROM_DATABASE=RAIDCore BC4000 - -pci:v00001166d0000024A* - ID_PRODUCT_FROM_DATABASE=BCM5785 [HT1000] SATA (Native SATA Mode) - -pci:v00001166d0000024Asv00001028sd0000020B* - ID_PRODUCT_FROM_DATABASE=PowerEdge T605 onboard SATA Controller - -pci:v00001166d0000024B* - ID_PRODUCT_FROM_DATABASE=BCM5785 [HT1000] SATA (PATA/IDE Mode) - -pci:v00001166d0000024Bsv00001028sd00000205* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2970 HT1000 SATA controller - -pci:v00001166d00000406* - ID_PRODUCT_FROM_DATABASE=HT1100 PCI-X Bridge - -pci:v00001166d00000408* - ID_PRODUCT_FROM_DATABASE=HT1100 Legacy Device - -pci:v00001166d0000040A* - ID_PRODUCT_FROM_DATABASE=HT1100 ISA-LPC Bridge - -pci:v00001166d0000040Asv00001028sd00000223* - ID_PRODUCT_FROM_DATABASE=PowerEdge R905 HT1100 ISA-LPC Bridge - -pci:v00001166d00000410* - ID_PRODUCT_FROM_DATABASE=HT1100 SATA Controller (Native SATA Mode) - -pci:v00001166d00000411* - ID_PRODUCT_FROM_DATABASE=HT1100 SATA Controller (PATA / IDE Mode) - -pci:v00001166d00000412* - ID_PRODUCT_FROM_DATABASE=HT1100 USB OHCI Controller - -pci:v00001166d00000414* - ID_PRODUCT_FROM_DATABASE=HT1100 USB EHCI Controller - -pci:v00001166d00000416* - ID_PRODUCT_FROM_DATABASE=HT1100 USB EHCI Controller (with Debug Port) - -pci:v00001166d00000420* - ID_PRODUCT_FROM_DATABASE=HT1100 PCI-Express Bridge - -pci:v00001166d00000421* - ID_PRODUCT_FROM_DATABASE=HT1100 SAS/SATA Controller - -pci:v00001166d00000422* - ID_PRODUCT_FROM_DATABASE=HT1100 PCI-Express Bridge - -pci:v00001167* - ID_VENDOR_FROM_DATABASE=Mutoh Industries Inc - -pci:v00001168* - ID_VENDOR_FROM_DATABASE=Thine Electronics Inc - -pci:v00001169* - ID_VENDOR_FROM_DATABASE=Centre for Development of Advanced Computing - -pci:v0000116A* - ID_VENDOR_FROM_DATABASE=Luminex Software, Inc. - -pci:v0000116Ad00006100* - ID_PRODUCT_FROM_DATABASE=Bus/Tag Channel - -pci:v0000116Ad00006800* - ID_PRODUCT_FROM_DATABASE=Escon Channel - -pci:v0000116Ad00007100* - ID_PRODUCT_FROM_DATABASE=Bus/Tag Channel - -pci:v0000116Ad00007800* - ID_PRODUCT_FROM_DATABASE=Escon Channel - -pci:v0000116B* - ID_VENDOR_FROM_DATABASE=Connectware Inc - -pci:v0000116C* - ID_VENDOR_FROM_DATABASE=Intelligent Resources Integrated Systems - -pci:v0000116D* - ID_VENDOR_FROM_DATABASE=Martin-Marietta - -pci:v0000116E* - ID_VENDOR_FROM_DATABASE=Electronics for Imaging - -pci:v0000116F* - ID_VENDOR_FROM_DATABASE=Workstation Technology - -pci:v00001170* - ID_VENDOR_FROM_DATABASE=Inventec Corporation - -pci:v00001171* - ID_VENDOR_FROM_DATABASE=Loughborough Sound Images Plc - -pci:v00001172* - ID_VENDOR_FROM_DATABASE=Altera Corporation - -pci:v00001173* - ID_VENDOR_FROM_DATABASE=Adobe Systems, Inc - -pci:v00001174* - ID_VENDOR_FROM_DATABASE=Bridgeport Machines - -pci:v00001175* - ID_VENDOR_FROM_DATABASE=Mitron Computer Inc. - -pci:v00001176* - ID_VENDOR_FROM_DATABASE=SBE Incorporated - -pci:v00001177* - ID_VENDOR_FROM_DATABASE=Silicon Engineering - -pci:v00001178* - ID_VENDOR_FROM_DATABASE=Alfa, Inc. - -pci:v00001178d0000AFA1* - ID_PRODUCT_FROM_DATABASE=Fast Ethernet Adapter - -pci:v00001179* - ID_VENDOR_FROM_DATABASE=Toshiba America Info Systems - -pci:v00001179d00000102* - ID_PRODUCT_FROM_DATABASE=Extended IDE Controller - -pci:v00001179d00000103* - ID_PRODUCT_FROM_DATABASE=EX-IDE Type-B - -pci:v00001179d00000404* - ID_PRODUCT_FROM_DATABASE=DVD Decoder card - -pci:v00001179d00000406* - ID_PRODUCT_FROM_DATABASE=Tecra Video Capture device - -pci:v00001179d00000407* - ID_PRODUCT_FROM_DATABASE=DVD Decoder card (Version 2) - -pci:v00001179d00000601* - ID_PRODUCT_FROM_DATABASE=CPU to PCI bridge - -pci:v00001179d00000601sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Satellite Pro - -pci:v00001179d00000602* - ID_PRODUCT_FROM_DATABASE=PCI to ISA bridge - -pci:v00001179d00000603* - ID_PRODUCT_FROM_DATABASE=ToPIC95 PCI to CardBus Bridge for Notebooks - -pci:v00001179d00000604* - ID_PRODUCT_FROM_DATABASE=PCI-Docking Host bridge - -pci:v00001179d0000060A* - ID_PRODUCT_FROM_DATABASE=ToPIC95 - -pci:v00001179d0000060Asv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Satellite Pro - -pci:v00001179d0000060F* - ID_PRODUCT_FROM_DATABASE=ToPIC97 - -pci:v00001179d0000060Fsv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Satellite 4010 - -pci:v00001179d00000617* - ID_PRODUCT_FROM_DATABASE=ToPIC100 PCI to Cardbus Bridge with ZV Support - -pci:v00001179d00000618* - ID_PRODUCT_FROM_DATABASE=CPU to PCI and PCI to ISA bridge - -pci:v00001179d00000701* - ID_PRODUCT_FROM_DATABASE=FIR Port Type-O - -pci:v00001179d00000804* - ID_PRODUCT_FROM_DATABASE=TC6371AF SmartMedia Controller - -pci:v00001179d00000805* - ID_PRODUCT_FROM_DATABASE=SD TypA Controller - -pci:v00001179d00000D01* - ID_PRODUCT_FROM_DATABASE=FIR Port Type-DO - -pci:v00001179d00000D01sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=FIR Port Type-DO - -pci:v0000117A* - ID_VENDOR_FROM_DATABASE=A-Trend Technology - -pci:v0000117B* - ID_VENDOR_FROM_DATABASE=L G Electronics, Inc. - -pci:v0000117C* - ID_VENDOR_FROM_DATABASE=ATTO Technology, Inc. - -pci:v0000117Cd0000002C* - ID_PRODUCT_FROM_DATABASE=SAS RAID Adapter - -pci:v0000117Cd00000030* - ID_PRODUCT_FROM_DATABASE=Ultra320 SCSI Host Adapter - -pci:v0000117Cd00000030sv0000117Csd00008013* - ID_PRODUCT_FROM_DATABASE=ExpressPCI UL4D - -pci:v0000117Cd00000030sv0000117Csd00008014* - ID_PRODUCT_FROM_DATABASE=ExpressPCI UL4S - -pci:v0000117Cd00000030sv0000117Csd00008027* - ID_PRODUCT_FROM_DATABASE=ExpressPCI UL5D - -pci:v0000117Cd00000030sv0000117Csd0000802F* - ID_PRODUCT_FROM_DATABASE=ExpressPCI UL5D Low Profile - -pci:v0000117Cd00000033* - ID_PRODUCT_FROM_DATABASE=SAS Adapter - -pci:v0000117D* - ID_VENDOR_FROM_DATABASE=Becton & Dickinson - -pci:v0000117E* - ID_VENDOR_FROM_DATABASE=T/R Systems - -pci:v0000117F* - ID_VENDOR_FROM_DATABASE=Integrated Circuit Systems - -pci:v00001180* - ID_VENDOR_FROM_DATABASE=Ricoh Co Ltd - -pci:v00001180d00000465* - ID_PRODUCT_FROM_DATABASE=RL5c465 - -pci:v00001180d00000466* - ID_PRODUCT_FROM_DATABASE=RL5c466 - -pci:v00001180d00000475* - ID_PRODUCT_FROM_DATABASE=RL5c475 - -pci:v00001180d00000475sv0000144Dsd0000C006* - ID_PRODUCT_FROM_DATABASE=vpr Matrix 170B4 CardBus bridge - -pci:v00001180d00000476* - ID_PRODUCT_FROM_DATABASE=RL5c476 II - -pci:v00001180d00000476sv00001014sd00000185* - ID_PRODUCT_FROM_DATABASE=ThinkPad A/T/X Series - -pci:v00001180d00000476sv00001014sd0000056C* - ID_PRODUCT_FROM_DATABASE=ThinkPad Z60t - -pci:v00001180d00000476sv00001028sd0000014F* - ID_PRODUCT_FROM_DATABASE=Latitude X300 laptop - -pci:v00001180d00000476sv00001028sd00000188* - ID_PRODUCT_FROM_DATABASE=Inspiron 6000 laptop - -pci:v00001180d00000476sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00001180d00000476sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00001180d00000476sv00001043sd00001237* - ID_PRODUCT_FROM_DATABASE=A6J-Q008 - -pci:v00001180d00000476sv00001043sd00001967* - ID_PRODUCT_FROM_DATABASE=V6800V - -pci:v00001180d00000476sv00001043sd00001987* - ID_PRODUCT_FROM_DATABASE=Asus A4K and Z81K notebooks, possibly others ( mid-2005 machines ) - -pci:v00001180d00000476sv0000104Dsd000080DF* - ID_PRODUCT_FROM_DATABASE=Vaio PCG-FX403 - -pci:v00001180d00000476sv0000104Dsd000080E7* - ID_PRODUCT_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - -pci:v00001180d00000476sv0000104Dsd0000814E* - ID_PRODUCT_FROM_DATABASE=VAIO GRZ390Z - -pci:v00001180d00000476sv000010F7sd00008338* - ID_PRODUCT_FROM_DATABASE=Panasonic CF-Y5 laptop - -pci:v00001180d00000476sv0000144Dsd0000C005* - ID_PRODUCT_FROM_DATABASE=X10 Laptop - -pci:v00001180d00000476sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30/P35 notebook - -pci:v00001180d00000476sv000014EFsd00000220* - ID_PRODUCT_FROM_DATABASE=PCD-RP-220S - -pci:v00001180d00000476sv000017AAsd0000201C* - ID_PRODUCT_FROM_DATABASE=ThinkPad X60s - -pci:v00001180d00000476sv000017AAsd000020C4* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00001180d00000477* - ID_PRODUCT_FROM_DATABASE=RL5c477 - -pci:v00001180d00000478* - ID_PRODUCT_FROM_DATABASE=RL5c478 - -pci:v00001180d00000478sv00001014sd00000184* - ID_PRODUCT_FROM_DATABASE=ThinkPad A30p - -pci:v00001180d00000511* - ID_PRODUCT_FROM_DATABASE=R5C511 - -pci:v00001180d00000522* - ID_PRODUCT_FROM_DATABASE=R5C522 IEEE 1394 Controller - -pci:v00001180d00000522sv00001014sd000001CF* - ID_PRODUCT_FROM_DATABASE=ThinkPad A30p - -pci:v00001180d00000522sv00001043sd00001967* - ID_PRODUCT_FROM_DATABASE=V6800V - -pci:v00001180d00000551* - ID_PRODUCT_FROM_DATABASE=R5C551 IEEE 1394 Controller - -pci:v00001180d00000551sv0000144Dsd0000C006* - ID_PRODUCT_FROM_DATABASE=vpr Matrix 170B4 - -pci:v00001180d00000552* - ID_PRODUCT_FROM_DATABASE=R5C552 IEEE 1394 Controller - -pci:v00001180d00000552sv00001014sd00000511* - ID_PRODUCT_FROM_DATABASE=ThinkPad A/T/X Series - -pci:v00001180d00000552sv00001028sd0000014F* - ID_PRODUCT_FROM_DATABASE=Latitude X300 laptop - -pci:v00001180d00000552sv00001028sd00000188* - ID_PRODUCT_FROM_DATABASE=Inspiron 6000 laptop - -pci:v00001180d00000552sv00001043sd00001237* - ID_PRODUCT_FROM_DATABASE=A6J-Q008 - -pci:v00001180d00000552sv00001043sd00001757* - ID_PRODUCT_FROM_DATABASE=M2400N laptop - -pci:v00001180d00000552sv0000144Dsd0000C005* - ID_PRODUCT_FROM_DATABASE=X10 Laptop - -pci:v00001180d00000552sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30/P35 notebook - -pci:v00001180d00000552sv000017AAsd0000201E* - ID_PRODUCT_FROM_DATABASE=ThinkPad X60s - -pci:v00001180d00000554* - ID_PRODUCT_FROM_DATABASE=R5C554 - -pci:v00001180d00000575* - ID_PRODUCT_FROM_DATABASE=R5C575 SD Bus Host Adapter - -pci:v00001180d00000576* - ID_PRODUCT_FROM_DATABASE=R5C576 SD Bus Host Adapter - -pci:v00001180d00000592* - ID_PRODUCT_FROM_DATABASE=R5C592 Memory Stick Bus Host Adapter - -pci:v00001180d00000592sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v00001180d00000592sv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v00001180d00000592sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00001180d00000592sv0000103Csd000030B5* - ID_PRODUCT_FROM_DATABASE=Presario V3242AU - -pci:v00001180d00000592sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v00001180d00000592sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00001180d00000592sv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v00001180d00000592sv00001043sd00001237* - ID_PRODUCT_FROM_DATABASE=A6J-Q008 - -pci:v00001180d00000592sv00001043sd00001967* - ID_PRODUCT_FROM_DATABASE=V6800V - -pci:v00001180d00000592sv0000144Dsd0000C018* - ID_PRODUCT_FROM_DATABASE=X20 IV - -pci:v00001180d00000592sv000017AAsd000020CA* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00001180d00000811* - ID_PRODUCT_FROM_DATABASE=R5C811 - -pci:v00001180d00000822* - ID_PRODUCT_FROM_DATABASE=R5C822 SD/SDIO/MMC/MS/MSPro Host Adapter - -pci:v00001180d00000822sv00001014sd00000556* - ID_PRODUCT_FROM_DATABASE=ThinkPad X60s / Z60t - -pci:v00001180d00000822sv00001014sd00000598* - ID_PRODUCT_FROM_DATABASE=ThinkPad Z60m - -pci:v00001180d00000822sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v00001180d00000822sv00001028sd00000188* - ID_PRODUCT_FROM_DATABASE=Inspiron 6000 laptop - -pci:v00001180d00000822sv00001028sd000001A2* - ID_PRODUCT_FROM_DATABASE=Inspiron 9200 - -pci:v00001180d00000822sv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v00001180d00000822sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00001180d00000822sv0000103Csd000003B5* - ID_PRODUCT_FROM_DATABASE=Presario V3242AU - -pci:v00001180d00000822sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v00001180d00000822sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00001180d00000822sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00001180d00000822sv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v00001180d00000822sv00001043sd00001237* - ID_PRODUCT_FROM_DATABASE=A6J-Q008 - -pci:v00001180d00000822sv00001043sd00001967* - ID_PRODUCT_FROM_DATABASE=ASUS V6800V - -pci:v00001180d00000822sv000010F7sd00008338* - ID_PRODUCT_FROM_DATABASE=Panasonic CF-Y5 laptop - -pci:v00001180d00000822sv0000144Dsd0000C018* - ID_PRODUCT_FROM_DATABASE=X20 IV - -pci:v00001180d00000822sv000017AAsd0000201D* - ID_PRODUCT_FROM_DATABASE=ThinkPad X60s - -pci:v00001180d00000822sv000017AAsd000020C7* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00001180d00000822sv000017AAsd000020C8* - ID_PRODUCT_FROM_DATABASE=ThinkPad W500 - -pci:v00001180d00000832* - ID_PRODUCT_FROM_DATABASE=R5C832 IEEE 1394 Controller - -pci:v00001180d00000832sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v00001180d00000832sv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v00001180d00000832sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00001180d00000832sv0000103Csd000030B5* - ID_PRODUCT_FROM_DATABASE=Presario V3242AU - -pci:v00001180d00000832sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v00001180d00000832sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00001180d00000832sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00001180d00000832sv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v00001180d00000841* - ID_PRODUCT_FROM_DATABASE=R5C841 CardBus/SD/SDIO/MMC/MS/MSPro/xD/IEEE1394 - -pci:v00001180d00000843* - ID_PRODUCT_FROM_DATABASE=R5C843 MMC Host Controller - -pci:v00001180d00000843sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v00001180d00000843sv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v00001180d00000843sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00001180d00000843sv00001028sd000001F5* - ID_PRODUCT_FROM_DATABASE=Dell Inspiron 1501 - -pci:v00001180d00000843sv00001028sd0000024F* - ID_PRODUCT_FROM_DATABASE=Dell Latitude e6500 - -pci:v00001180d00000843sv0000103Csd000003B5* - ID_PRODUCT_FROM_DATABASE=Presario V3242AU - -pci:v00001180d00000843sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v00001180d00000843sv00001183sd00000843* - ID_PRODUCT_FROM_DATABASE=Alienware Aurora m9700 - -pci:v00001180d00000852* - ID_PRODUCT_FROM_DATABASE=xD-Picture Card Controller - -pci:v00001180d00000852sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v00001180d00000852sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00001180d00000852sv0000103Csd000030B5* - ID_PRODUCT_FROM_DATABASE=Presario V3242AU - -pci:v00001180d00000852sv0000103Csd000030B7* - ID_PRODUCT_FROM_DATABASE=Presario V6133CL - -pci:v00001180d00000852sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00001180d00000852sv0000103Csd000030CF* - ID_PRODUCT_FROM_DATABASE=Pavilion dv9668eg Laptop - -pci:v00001180d00000852sv00001043sd00001967* - ID_PRODUCT_FROM_DATABASE=V6800V - -pci:v00001180d00000852sv00001180sd00000852* - ID_PRODUCT_FROM_DATABASE=Pavilion 2410us - -pci:v00001180d00000852sv00001324sd000010CF* - ID_PRODUCT_FROM_DATABASE=P7120 - -pci:v00001180d0000E230* - ID_PRODUCT_FROM_DATABASE=R5U2xx (R5U230 / R5U231 / R5U241) [Memory Stick Host Controller] - -pci:v00001180d0000E476* - ID_PRODUCT_FROM_DATABASE=CardBus bridge - -pci:v00001180d0000E476sv00001028sd0000040A* - ID_PRODUCT_FROM_DATABASE=Latitude E6410 - -pci:v00001180d0000E476sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00001180d0000E822* - ID_PRODUCT_FROM_DATABASE=MMC/SD Host Controller - -pci:v00001180d0000E822sv00001028sd0000040A* - ID_PRODUCT_FROM_DATABASE=Latitude E6410 - -pci:v00001180d0000E822sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00001180d0000E823* - ID_PRODUCT_FROM_DATABASE=PCIe SDXC/MMC Host Controller - -pci:v00001180d0000E832* - ID_PRODUCT_FROM_DATABASE=R5C832 PCIe IEEE 1394 Controller - -pci:v00001180d0000E832sv00001028sd0000040A* - ID_PRODUCT_FROM_DATABASE=Latitude E6410 - -pci:v00001180d0000E832sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00001180d0000E852* - ID_PRODUCT_FROM_DATABASE=PCIe xD-Picture Card Controller - -pci:v00001181* - ID_VENDOR_FROM_DATABASE=Telmatics International - -pci:v00001183* - ID_VENDOR_FROM_DATABASE=Fujikura Ltd - -pci:v00001184* - ID_VENDOR_FROM_DATABASE=Forks Inc - -pci:v00001185* - ID_VENDOR_FROM_DATABASE=Dataworld International Ltd - -pci:v00001186* - ID_VENDOR_FROM_DATABASE=D-Link System Inc - -pci:v00001186d00001002* - ID_PRODUCT_FROM_DATABASE=DL10050 Sundance Ethernet - -pci:v00001186d00001002sv00001186sd00001002* - ID_PRODUCT_FROM_DATABASE=DFE-550TX/FX - -pci:v00001186d00001002sv00001186sd00001012* - ID_PRODUCT_FROM_DATABASE=DFE-580TX - -pci:v00001186d00001025* - ID_PRODUCT_FROM_DATABASE=AirPlus Xtreme G DWL-G650 Adapter - -pci:v00001186d00001026* - ID_PRODUCT_FROM_DATABASE=AirXpert DWL-AG650 Wireless Cardbus Adapter - -pci:v00001186d00001043* - ID_PRODUCT_FROM_DATABASE=AirXpert DWL-AG650 Wireless Cardbus Adapter - -pci:v00001186d00001300* - ID_PRODUCT_FROM_DATABASE=RTL8139 Ethernet - -pci:v00001186d00001300sv00001186sd00001300* - ID_PRODUCT_FROM_DATABASE=DFE-538TX 10/100 Ethernet Adapter - -pci:v00001186d00001300sv00001186sd00001301* - ID_PRODUCT_FROM_DATABASE=DFE-530TX+ 10/100 Ethernet Adapter - -pci:v00001186d00001300sv00001186sd00001303* - ID_PRODUCT_FROM_DATABASE=DFE-528TX 10/100 Fast Ethernet PCI Adapter - -pci:v00001186d00001340* - ID_PRODUCT_FROM_DATABASE=DFE-690TXD CardBus PC Card - -pci:v00001186d00001540* - ID_PRODUCT_FROM_DATABASE=DFE-680TX - -pci:v00001186d00001541* - ID_PRODUCT_FROM_DATABASE=DFE-680TXD CardBus PC Card - -pci:v00001186d00001561* - ID_PRODUCT_FROM_DATABASE=DRP-32TXD Cardbus PC Card - -pci:v00001186d00003300* - ID_PRODUCT_FROM_DATABASE=DWL-510 / DWL-610 802.11b [Realtek RTL8180L] - -pci:v00001186d00003300sv00001186sd00003300* - ID_PRODUCT_FROM_DATABASE=DWL-610 Wireless Cardbus Adapter - -pci:v00001186d00003300sv00001186sd00003301* - ID_PRODUCT_FROM_DATABASE=DWL-510 Wireless PCI Adapter - -pci:v00001186d00003A10* - ID_PRODUCT_FROM_DATABASE=AirXpert DWL-AG650 Wireless Cardbus Adapter(rev.B) - -pci:v00001186d00003A11* - ID_PRODUCT_FROM_DATABASE=AirXpert DWL-AG520 Wireless PCI Adapter(rev.B) - -pci:v00001186d00004000* - ID_PRODUCT_FROM_DATABASE=DL2000-based Gigabit Ethernet - -pci:v00001186d00004001* - ID_PRODUCT_FROM_DATABASE=DGE-550SX PCI-X Gigabit Ethernet Adapter - -pci:v00001186d00004300* - ID_PRODUCT_FROM_DATABASE=DGE-528T Gigabit Ethernet Adapter - -pci:v00001186d00004300sv00001186sd00004B10* - ID_PRODUCT_FROM_DATABASE=DGE-560T PCI Express (x1) Gigabit Ethernet Adapter - -pci:v00001186d00004302* - ID_PRODUCT_FROM_DATABASE=DGE-530T Gigabit Ethernet Adapter (rev.C1) [Realtek RTL8169] - -pci:v00001186d00004B00* - ID_PRODUCT_FROM_DATABASE=DGE-560T PCI Express Gigabit Ethernet Adapter - -pci:v00001186d00004B01* - ID_PRODUCT_FROM_DATABASE=DGE-530T Gigabit Ethernet Adapter (rev 11) - -pci:v00001186d00004B02* - ID_PRODUCT_FROM_DATABASE=DGE-560SX PCI Express Gigabit Ethernet Adapter - -pci:v00001186d00004B03* - ID_PRODUCT_FROM_DATABASE=DGE-550T Gigabit Ethernet Adapter V.B1 - -pci:v00001186d00004C00* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet Adapter - -pci:v00001186d00004C00sv00001186sd00004C00* - ID_PRODUCT_FROM_DATABASE=DGE-530T Gigabit Ethernet Adapter - -pci:v00001186d00008400* - ID_PRODUCT_FROM_DATABASE=D-Link DWL-650+ CardBus PC Card - -pci:v00001187* - ID_VENDOR_FROM_DATABASE=Advanced Technology Laboratories, Inc. - -pci:v00001188* - ID_VENDOR_FROM_DATABASE=Shima Seiki Manufacturing Ltd. - -pci:v00001189* - ID_VENDOR_FROM_DATABASE=Matsushita Electronics Co Ltd - -pci:v0000118A* - ID_VENDOR_FROM_DATABASE=Hilevel Technology - -pci:v0000118B* - ID_VENDOR_FROM_DATABASE=Hypertec Pty Limited - -pci:v0000118C* - ID_VENDOR_FROM_DATABASE=Corollary, Inc - -pci:v0000118Cd00000014* - ID_PRODUCT_FROM_DATABASE=PCIB [C-bus II to PCI bus host bridge chip] - -pci:v0000118Cd00001117* - ID_PRODUCT_FROM_DATABASE=Intel 8-way XEON Profusion Chipset [Cache Coherency Filter] - -pci:v0000118D* - ID_VENDOR_FROM_DATABASE=BitFlow Inc - -pci:v0000118Dd00000001* - ID_PRODUCT_FROM_DATABASE=Raptor-PCI framegrabber - -pci:v0000118Dd00000012* - ID_PRODUCT_FROM_DATABASE=Model 12 Road Runner Frame Grabber - -pci:v0000118Dd00000014* - ID_PRODUCT_FROM_DATABASE=Model 14 Road Runner Frame Grabber - -pci:v0000118Dd00000024* - ID_PRODUCT_FROM_DATABASE=Model 24 Road Runner Frame Grabber - -pci:v0000118Dd00000044* - ID_PRODUCT_FROM_DATABASE=Model 44 Road Runner Frame Grabber - -pci:v0000118Dd00000112* - ID_PRODUCT_FROM_DATABASE=Model 12 Road Runner Frame Grabber - -pci:v0000118Dd00000114* - ID_PRODUCT_FROM_DATABASE=Model 14 Road Runner Frame Grabber - -pci:v0000118Dd00000124* - ID_PRODUCT_FROM_DATABASE=Model 24 Road Runner Frame Grabber - -pci:v0000118Dd00000144* - ID_PRODUCT_FROM_DATABASE=Model 44 Road Runner Frame Grabber - -pci:v0000118Dd00000212* - ID_PRODUCT_FROM_DATABASE=Model 12 Road Runner Frame Grabber - -pci:v0000118Dd00000214* - ID_PRODUCT_FROM_DATABASE=Model 14 Road Runner Frame Grabber - -pci:v0000118Dd00000224* - ID_PRODUCT_FROM_DATABASE=Model 24 Road Runner Frame Grabber - -pci:v0000118Dd00000244* - ID_PRODUCT_FROM_DATABASE=Model 44 Road Runner Frame Grabber - -pci:v0000118Dd00000312* - ID_PRODUCT_FROM_DATABASE=Model 12 Road Runner Frame Grabber - -pci:v0000118Dd00000314* - ID_PRODUCT_FROM_DATABASE=Model 14 Road Runner Frame Grabber - -pci:v0000118Dd00000324* - ID_PRODUCT_FROM_DATABASE=Model 24 Road Runner Frame Grabber - -pci:v0000118Dd00000344* - ID_PRODUCT_FROM_DATABASE=Model 44 Road Runner Frame Grabber - -pci:v0000118E* - ID_VENDOR_FROM_DATABASE=Hermstedt GmbH - -pci:v0000118F* - ID_VENDOR_FROM_DATABASE=Green Logic - -pci:v00001190* - ID_VENDOR_FROM_DATABASE=Tripace - -pci:v00001190d0000C731* - ID_PRODUCT_FROM_DATABASE=TP-910/920/940 PCI Ultra(Wide) SCSI Adapter - -pci:v00001191* - ID_VENDOR_FROM_DATABASE=Artop Electronic Corp - -pci:v00001191d00000003* - ID_PRODUCT_FROM_DATABASE=SCSI Cache Host Adapter - -pci:v00001191d00000004* - ID_PRODUCT_FROM_DATABASE=ATP8400 - -pci:v00001191d00000005* - ID_PRODUCT_FROM_DATABASE=ATP850UF - -pci:v00001191d00000006* - ID_PRODUCT_FROM_DATABASE=ATP860 NO-BIOS - -pci:v00001191d00000007* - ID_PRODUCT_FROM_DATABASE=ATP860 - -pci:v00001191d00000008* - ID_PRODUCT_FROM_DATABASE=ATP865 NO-ROM - -pci:v00001191d00000009* - ID_PRODUCT_FROM_DATABASE=ATP865 - -pci:v00001191d0000000A* - ID_PRODUCT_FROM_DATABASE=ATP867-A - -pci:v00001191d0000000B* - ID_PRODUCT_FROM_DATABASE=ATP867-B - -pci:v00001191d0000000D* - ID_PRODUCT_FROM_DATABASE=ATP8620 - -pci:v00001191d0000000E* - ID_PRODUCT_FROM_DATABASE=ATP8620 - -pci:v00001191d00008002* - ID_PRODUCT_FROM_DATABASE=AEC6710 SCSI-2 Host Adapter - -pci:v00001191d00008010* - ID_PRODUCT_FROM_DATABASE=AEC6712UW SCSI - -pci:v00001191d00008020* - ID_PRODUCT_FROM_DATABASE=AEC6712U SCSI - -pci:v00001191d00008030* - ID_PRODUCT_FROM_DATABASE=AEC6712S SCSI - -pci:v00001191d00008040* - ID_PRODUCT_FROM_DATABASE=AEC6712D SCSI - -pci:v00001191d00008050* - ID_PRODUCT_FROM_DATABASE=AEC6712SUW SCSI - -pci:v00001191d00008060* - ID_PRODUCT_FROM_DATABASE=AEC6712 SCSI - -pci:v00001191d00008080* - ID_PRODUCT_FROM_DATABASE=AEC67160 SCSI - -pci:v00001191d00008081* - ID_PRODUCT_FROM_DATABASE=AEC67160S SCSI - -pci:v00001191d0000808A* - ID_PRODUCT_FROM_DATABASE=AEC67162 2-ch. LVD SCSI - -pci:v00001192* - ID_VENDOR_FROM_DATABASE=Densan Company Ltd - -pci:v00001193* - ID_VENDOR_FROM_DATABASE=Zeitnet Inc. - -pci:v00001193d00000001* - ID_PRODUCT_FROM_DATABASE=1221 - -pci:v00001193d00000002* - ID_PRODUCT_FROM_DATABASE=1225 - -pci:v00001194* - ID_VENDOR_FROM_DATABASE=Toucan Technology - -pci:v00001195* - ID_VENDOR_FROM_DATABASE=Ratoc System Inc - -pci:v00001196* - ID_VENDOR_FROM_DATABASE=Hytec Electronics Ltd - -pci:v00001197* - ID_VENDOR_FROM_DATABASE=Gage Applied Sciences, Inc. - -pci:v00001197d0000010C* - ID_PRODUCT_FROM_DATABASE=CompuScope 82G 8bit 2GS/s Analog Input Card - -pci:v00001198* - ID_VENDOR_FROM_DATABASE=Lambda Systems Inc - -pci:v00001199* - ID_VENDOR_FROM_DATABASE=Attachmate Corporation - -pci:v00001199d00000101* - ID_PRODUCT_FROM_DATABASE=Advanced ISCA/PCI Adapter - -pci:v00001199d00006832* - ID_PRODUCT_FROM_DATABASE=Sierra Wireless MC8780 Device - -pci:v0000119A* - ID_VENDOR_FROM_DATABASE=Mind Share, Inc. - -pci:v0000119B* - ID_VENDOR_FROM_DATABASE=Omega Micro Inc. - -pci:v0000119Bd00001221* - ID_PRODUCT_FROM_DATABASE=82C092G - -pci:v0000119C* - ID_VENDOR_FROM_DATABASE=Information Technology Inst. - -pci:v0000119D* - ID_VENDOR_FROM_DATABASE=Bug, Inc. Sapporo Japan - -pci:v0000119E* - ID_VENDOR_FROM_DATABASE=Fujitsu Microelectronics Ltd. - -pci:v0000119Ed00000001* - ID_PRODUCT_FROM_DATABASE=FireStream 155 - -pci:v0000119Ed00000003* - ID_PRODUCT_FROM_DATABASE=FireStream 50 - -pci:v0000119F* - ID_VENDOR_FROM_DATABASE=Bull HN Information Systems - -pci:v000011A0* - ID_VENDOR_FROM_DATABASE=Convex Computer Corporation - -pci:v000011A1* - ID_VENDOR_FROM_DATABASE=Hamamatsu Photonics K.K. - -pci:v000011A2* - ID_VENDOR_FROM_DATABASE=Sierra Research and Technology - -pci:v000011A3* - ID_VENDOR_FROM_DATABASE=Deuretzbacher GmbH & Co. Eng. KG - -pci:v000011A4* - ID_VENDOR_FROM_DATABASE=Barco Graphics NV - -pci:v000011A5* - ID_VENDOR_FROM_DATABASE=Microunity Systems Eng. Inc - -pci:v000011A6* - ID_VENDOR_FROM_DATABASE=Pure Data Ltd. - -pci:v000011A7* - ID_VENDOR_FROM_DATABASE=Power Computing Corp. - -pci:v000011A8* - ID_VENDOR_FROM_DATABASE=Systech Corp. - -pci:v000011A9* - ID_VENDOR_FROM_DATABASE=InnoSys Inc. - -pci:v000011A9d00004240* - ID_PRODUCT_FROM_DATABASE=AMCC S933Q Intelligent Serial Card - -pci:v000011AA* - ID_VENDOR_FROM_DATABASE=Actel - -pci:v000011AB* - ID_VENDOR_FROM_DATABASE=Marvell Technology Group Ltd. - -pci:v000011ABd00000146* - ID_PRODUCT_FROM_DATABASE=GT-64010/64010A System Controller - -pci:v000011ABd00000F53* - ID_PRODUCT_FROM_DATABASE=88E6318 Link Street network controller - -pci:v000011ABd000011AB* - ID_PRODUCT_FROM_DATABASE=MV88SE614x SATA II PCI-E controller - -pci:v000011ABd0000138F* - ID_PRODUCT_FROM_DATABASE=W8300 802.11 Adapter (rev 07) - -pci:v000011ABd00001FA6* - ID_PRODUCT_FROM_DATABASE=Marvell W8300 802.11 Adapter - -pci:v000011ABd00001FA6sv00001186sd00003B08* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.A1) - -pci:v000011ABd00001FA7* - ID_PRODUCT_FROM_DATABASE=88W8310 and 88W8000G [Libertas] 802.11g client chipset - -pci:v000011ABd00001FAA* - ID_PRODUCT_FROM_DATABASE=88w8335 [Libertas] 802.11b/g Wireless - -pci:v000011ABd00001FAAsv00001385sd00004E00* - ID_PRODUCT_FROM_DATABASE=WG511v2 54 Mbps Wireless PC Card - -pci:v000011ABd00001FAAsv00001385sd00006B00* - ID_PRODUCT_FROM_DATABASE=WG311v3 802.11g Wireless PCI Adapter - -pci:v000011ABd00001FAAsv00001737sd00000040* - ID_PRODUCT_FROM_DATABASE=WPC54G v5 802.11g Wireless-G Notebook Adapter - -pci:v000011ABd00002211* - ID_PRODUCT_FROM_DATABASE=88SB2211 PCI Express to PCI Bridge - -pci:v000011ABd00002A01* - ID_PRODUCT_FROM_DATABASE=88W8335 [Libertas] 802.11b/g Wireless - -pci:v000011ABd00002A02* - ID_PRODUCT_FROM_DATABASE=88W8361 [TopDog] 802.11n Wireless - -pci:v000011ABd00002A02sv000007D1sd00003B02* - ID_PRODUCT_FROM_DATABASE=DIR-615 rev. A1 Mini PCI Wireless Module - -pci:v000011ABd00002A02sv00001385sd00007C00* - ID_PRODUCT_FROM_DATABASE=WN511T RangeMax Next 300 Mbps Wireless PC Card - -pci:v000011ABd00002A02sv00001385sd00007C01* - ID_PRODUCT_FROM_DATABASE=WN511T RangeMax Next 300 Mbps Wireless Notebook Adapter - -pci:v000011ABd00002A02sv00001385sd00007E00* - ID_PRODUCT_FROM_DATABASE=WN311T RangeMax Next 300 Mbps Wireless PCI Adapter - -pci:v000011ABd00002A02sv00001799sd0000801B* - ID_PRODUCT_FROM_DATABASE=F5D8011 v2 802.11n N1 Wireless Notebook Card - -pci:v000011ABd00002A08* - ID_PRODUCT_FROM_DATABASE=88W8362e [TopDog] 802.11a/b/g/n Wireless - -pci:v000011ABd00002A0A* - ID_PRODUCT_FROM_DATABASE=88W8363 [TopDog] 802.11n Wireless - -pci:v000011ABd00002A0C* - ID_PRODUCT_FROM_DATABASE=88W8363 [TopDog] 802.11n Wireless - -pci:v000011ABd00002A24* - ID_PRODUCT_FROM_DATABASE=88W8363 [TopDog] 802.11n Wireless - -pci:v000011ABd00002A2B* - ID_PRODUCT_FROM_DATABASE=88W8687 [TopDog] 802.11b/g Wireless - -pci:v000011ABd00002A30* - ID_PRODUCT_FROM_DATABASE=88W8687 [TopDog] 802.11b/g Wireless - -pci:v000011ABd00002A40* - ID_PRODUCT_FROM_DATABASE=88W8366 [TopDog] 802.11n Wireless - -pci:v000011ABd00002A43* - ID_PRODUCT_FROM_DATABASE=88W8366 [TopDog] 802.11n Wireless - -pci:v000011ABd00004101* - ID_PRODUCT_FROM_DATABASE=OLPC Cafe Controller Secure Digital Controller - -pci:v000011ABd00004320* - ID_PRODUCT_FROM_DATABASE=88E8001 Gigabit Ethernet Controller - -pci:v000011ABd00004320sv00001019sd00000F38* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (ECS) - -pci:v000011ABd00004320sv00001019sd00008001* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (ECS) - -pci:v000011ABd00004320sv00001043sd0000173C* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Asus) - -pci:v000011ABd00004320sv00001043sd0000811A* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Asus) - -pci:v000011ABd00004320sv0000105Bsd00000C19* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Foxconn) - -pci:v000011ABd00004320sv000010B8sd0000B452* - ID_PRODUCT_FROM_DATABASE=EZ Card 1000 (SMC9452TXV.2) - -pci:v000011ABd00004320sv000011ABsd00000121* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8001 - -pci:v000011ABd00004320sv000011ABsd00000321* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8003 - -pci:v000011ABd00004320sv000011ABsd00001021* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8010 - -pci:v000011ABd00004320sv000011ABsd00004320* - ID_PRODUCT_FROM_DATABASE=Marvell Yukon Gigabit Ethernet 10/100/1000Baset-T Constroller (Asus) - -pci:v000011ABd00004320sv000011ABsd00005021* - ID_PRODUCT_FROM_DATABASE=Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (64 bit) - -pci:v000011ABd00004320sv000011ABsd00009521* - ID_PRODUCT_FROM_DATABASE=Marvell Yukon Gigabit Ethernet 10/100/1000Base-T Controller (32 bit) - -pci:v000011ABd00004320sv00001458sd0000E000* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Gigabyte) - -pci:v000011ABd00004320sv0000147Bsd00001406* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Abit) - -pci:v000011ABd00004320sv000015D4sd00000047* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Iwill) - -pci:v000011ABd00004320sv00001695sd00009025* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Epox) - -pci:v000011ABd00004320sv000017F2sd00001C03* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Albatron) - -pci:v000011ABd00004320sv0000270Fsd00002803* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8001 Gigabit Ethernet Controller (Chaintech) - -pci:v000011ABd00004340* - ID_PRODUCT_FROM_DATABASE=88E8021 PCI-X IPMI Gigabit Ethernet Controller - -pci:v000011ABd00004341* - ID_PRODUCT_FROM_DATABASE=88E8022 PCI-X IPMI Gigabit Ethernet Controller - -pci:v000011ABd00004342* - ID_PRODUCT_FROM_DATABASE=88E8061 PCI-E IPMI Gigabit Ethernet Controller - -pci:v000011ABd00004343* - ID_PRODUCT_FROM_DATABASE=88E8062 PCI-E IPMI Gigabit Ethernet Controller - -pci:v000011ABd00004344* - ID_PRODUCT_FROM_DATABASE=88E8021 PCI-X IPMI Gigabit Ethernet Controller - -pci:v000011ABd00004345* - ID_PRODUCT_FROM_DATABASE=88E8022 PCI-X IPMI Gigabit Ethernet Controller - -pci:v000011ABd00004346* - ID_PRODUCT_FROM_DATABASE=88E8061 PCI-E IPMI Gigabit Ethernet Controller - -pci:v000011ABd00004347* - ID_PRODUCT_FROM_DATABASE=88E8062 PCI-E IPMI Gigabit Ethernet Controller - -pci:v000011ABd00004347sv00004C53sd000010D0* - ID_PRODUCT_FROM_DATABASE=Telum ASLP10 PrAMC Gigabit Ethernet - -pci:v000011ABd00004350* - ID_PRODUCT_FROM_DATABASE=88E8035 PCI-E Fast Ethernet Controller - -pci:v000011ABd00004350sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (Toshiba) - -pci:v000011ABd00004350sv000011ABsd00003521* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8035 - -pci:v000011ABd00004350sv00001854sd0000000D* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004350sv00001854sd0000000E* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004350sv00001854sd0000000F* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004350sv00001854sd00000011* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004350sv00001854sd00000012* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004350sv00001854sd00000016* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004350sv00001854sd00000017* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004350sv00001854sd00000018* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004350sv00001854sd00000019* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004350sv00001854sd0000001C* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004350sv00001854sd0000001E* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004350sv00001854sd00000020* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8035 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004351* - ID_PRODUCT_FROM_DATABASE=88E8036 PCI-E Fast Ethernet Controller - -pci:v000011ABd00004351sv0000107Bsd00004009* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Wistron) - -pci:v000011ABd00004351sv000010F7sd00008338* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Panasonic) - -pci:v000011ABd00004351sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Toshiba) - -pci:v000011ABd00004351sv00001179sd0000FF00* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Compal) - -pci:v000011ABd00004351sv00001179sd0000FF10* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Inventec) - -pci:v000011ABd00004351sv000011ABsd00003621* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8036 - -pci:v000011ABd00004351sv000013D1sd0000AC12* - ID_PRODUCT_FROM_DATABASE=Abocom EFE3K - 10/100 Ethernet Expresscard - -pci:v000011ABd00004351sv0000161Fsd0000203D* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (Arima) - -pci:v000011ABd00004351sv00001854sd0000000D* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004351sv00001854sd0000000E* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004351sv00001854sd0000000F* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004351sv00001854sd00000011* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004351sv00001854sd00000012* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004351sv00001854sd00000016* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004351sv00001854sd00000017* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004351sv00001854sd00000018* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004351sv00001854sd00000019* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004351sv00001854sd0000001C* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004351sv00001854sd0000001E* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004351sv00001854sd00000020* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8036 Fast Ethernet Controller (LGE) - -pci:v000011ABd00004352* - ID_PRODUCT_FROM_DATABASE=88E8038 PCI-E Fast Ethernet Controller - -pci:v000011ABd00004353* - ID_PRODUCT_FROM_DATABASE=88E8039 PCI-E Fast Ethernet Controller - -pci:v000011ABd00004353sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v000011ABd00004354* - ID_PRODUCT_FROM_DATABASE=88E8040 PCI-E Fast Ethernet Controller - -pci:v000011ABd00004354sv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v000011ABd00004355* - ID_PRODUCT_FROM_DATABASE=88E8040T PCI-E Fast Ethernet Controller - -pci:v000011ABd00004355sv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v000011ABd00004356* - ID_PRODUCT_FROM_DATABASE=88EC033 PCI-E Fast Ethernet Controller - -pci:v000011ABd00004357* - ID_PRODUCT_FROM_DATABASE=88E8042 PCI-E Fast Ethernet Controller - -pci:v000011ABd0000435A* - ID_PRODUCT_FROM_DATABASE=88E8048 PCI-E Fast Ethernet Controller - -pci:v000011ABd00004360* - ID_PRODUCT_FROM_DATABASE=88E8052 PCI-E ASF Gigabit Ethernet Controller - -pci:v000011ABd00004360sv00001043sd00008134* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (Asus) - -pci:v000011ABd00004360sv0000107Bsd00004009* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (Wistron) - -pci:v000011ABd00004360sv000011ABsd00005221* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8052 - -pci:v000011ABd00004360sv00001458sd0000E000* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (Gigabyte) - -pci:v000011ABd00004360sv00001462sd0000052C* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (MSI) - -pci:v000011ABd00004360sv00001849sd00008052* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (ASRock) - -pci:v000011ABd00004360sv0000A0A0sd00000509* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8052 Gigabit Ethernet Controller (Aopen) - -pci:v000011ABd00004361* - ID_PRODUCT_FROM_DATABASE=88E8050 PCI-E ASF Gigabit Ethernet Controller - -pci:v000011ABd00004361sv0000107Bsd00003015* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8050 Gigabit Ethernet Controller (Gateway) - -pci:v000011ABd00004361sv000011ABsd00005021* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8050 Gigabit Ethernet Controller (Intel) - -pci:v000011ABd00004361sv00008086sd00003063* - ID_PRODUCT_FROM_DATABASE=D925XCVLK mainboard - -pci:v000011ABd00004361sv00008086sd00003439* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8050 Gigabit Ethernet Controller (Intel) - -pci:v000011ABd00004362* - ID_PRODUCT_FROM_DATABASE=88E8053 PCI-E Gigabit Ethernet Controller - -pci:v000011ABd00004362sv0000103Csd00002A0D* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Asus) - -pci:v000011ABd00004362sv00001043sd00008142* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet controller PCIe (Asus) - -pci:v000011ABd00004362sv0000109Fsd00003197* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Trigem) - -pci:v000011ABd00004362sv000010F7sd00008338* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Panasonic) - -pci:v000011ABd00004362sv000010FDsd0000A430* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (SOYO) - -pci:v000011ABd00004362sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Toshiba) - -pci:v000011ABd00004362sv00001179sd0000FF00* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Compal) - -pci:v000011ABd00004362sv00001179sd0000FF10* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Inventec) - -pci:v000011ABd00004362sv000011ABsd00005321* - ID_PRODUCT_FROM_DATABASE=Marvell RDK-8053 - -pci:v000011ABd00004362sv00001297sd0000C240* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - -pci:v000011ABd00004362sv00001297sd0000C241* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - -pci:v000011ABd00004362sv00001297sd0000C242* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - -pci:v000011ABd00004362sv00001297sd0000C243* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - -pci:v000011ABd00004362sv00001297sd0000C244* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Shuttle) - -pci:v000011ABd00004362sv000013D1sd0000AC11* - ID_PRODUCT_FROM_DATABASE=EGE5K - Giga Ethernet Expresscard - -pci:v000011ABd00004362sv00001458sd0000E000* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Gigabyte) - -pci:v000011ABd00004362sv00001462sd0000058C* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (MSI) - -pci:v000011ABd00004362sv000014C0sd00000012* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Compal) - -pci:v000011ABd00004362sv00001558sd000004A0* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Clevo) - -pci:v000011ABd00004362sv000015BDsd00001003* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (DFI) - -pci:v000011ABd00004362sv0000161Fsd0000203C* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Arima) - -pci:v000011ABd00004362sv0000161Fsd0000203D* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Arima) - -pci:v000011ABd00004362sv00001695sd00009029* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Epox) - -pci:v000011ABd00004362sv000017F2sd00002C08* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Albatron) - -pci:v000011ABd00004362sv000017FFsd00000585* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Quanta) - -pci:v000011ABd00004362sv00001849sd00008053* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (ASRock) - -pci:v000011ABd00004362sv00001854sd0000000B* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) - -pci:v000011ABd00004362sv00001854sd0000000C* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) - -pci:v000011ABd00004362sv00001854sd00000010* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) - -pci:v000011ABd00004362sv00001854sd00000013* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) - -pci:v000011ABd00004362sv00001854sd00000014* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) - -pci:v000011ABd00004362sv00001854sd00000015* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) - -pci:v000011ABd00004362sv00001854sd0000001A* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) - -pci:v000011ABd00004362sv00001854sd0000001B* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) - -pci:v000011ABd00004362sv00001854sd0000001D* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) - -pci:v000011ABd00004362sv00001854sd0000001F* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) - -pci:v000011ABd00004362sv00001854sd00000021* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) - -pci:v000011ABd00004362sv00001854sd00000022* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (LGE) - -pci:v000011ABd00004362sv0000270Fsd00002801* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Chaintech) - -pci:v000011ABd00004362sv0000A0A0sd00000506* - ID_PRODUCT_FROM_DATABASE=Marvell 88E8053 Gigabit Ethernet Controller (Aopen) - -pci:v000011ABd00004363* - ID_PRODUCT_FROM_DATABASE=88E8055 PCI-E Gigabit Ethernet Controller - -pci:v000011ABd00004364* - ID_PRODUCT_FROM_DATABASE=88E8056 PCI-E Gigabit Ethernet Controller - -pci:v000011ABd00004364sv00001043sd000081F8* - ID_PRODUCT_FROM_DATABASE=Motherboard - -pci:v000011ABd00004364sv000011BAsd000000BA* - ID_PRODUCT_FROM_DATABASE=8056 Gigabit Ethernet Controller - -pci:v000011ABd00004365* - ID_PRODUCT_FROM_DATABASE=88E8070 based Ethernet Controller - -pci:v000011ABd00004366* - ID_PRODUCT_FROM_DATABASE=88EC036 PCI-E Gigabit Ethernet Controller - -pci:v000011ABd00004367* - ID_PRODUCT_FROM_DATABASE=88EC032 Ethernet Controller - -pci:v000011ABd00004368* - ID_PRODUCT_FROM_DATABASE=88EC034 Ethernet Controller - -pci:v000011ABd00004369* - ID_PRODUCT_FROM_DATABASE=88EC042 Ethernet Controller - -pci:v000011ABd0000436A* - ID_PRODUCT_FROM_DATABASE=88E8058 PCI-E Gigabit Ethernet Controller - -pci:v000011ABd0000436Asv000011ABsd000000BA* - ID_PRODUCT_FROM_DATABASE=Imac 8,1 Wired Ethernet Adapter - -pci:v000011ABd0000436B* - ID_PRODUCT_FROM_DATABASE=88E8071 PCI-E Gigabit Ethernet Controller - -pci:v000011ABd0000436C* - ID_PRODUCT_FROM_DATABASE=88E8072 PCI-E Gigabit Ethernet Controller - -pci:v000011ABd0000436D* - ID_PRODUCT_FROM_DATABASE=88E8055 PCI-E Gigabit Ethernet Controller - -pci:v000011ABd00004370* - ID_PRODUCT_FROM_DATABASE=88E8075 PCI-E Gigabit Ethernet Controller - -pci:v000011ABd00004380* - ID_PRODUCT_FROM_DATABASE=88E8057 PCI-E Gigabit Ethernet Controller - -pci:v000011ABd00004381* - ID_PRODUCT_FROM_DATABASE=Yukon Optima 88E8059 [PCIe Gigabit Ethernet Controller with AVB] - -pci:v000011ABd00004611* - ID_PRODUCT_FROM_DATABASE=GT-64115 System Controller - -pci:v000011ABd00004620* - ID_PRODUCT_FROM_DATABASE=GT-64120/64120A/64121A System Controller - -pci:v000011ABd00004801* - ID_PRODUCT_FROM_DATABASE=GT-48001 - -pci:v000011ABd00005005* - ID_PRODUCT_FROM_DATABASE=Belkin F5D5005 Gigabit Desktop Network PCI Card - -pci:v000011ABd00005040* - ID_PRODUCT_FROM_DATABASE=MV88SX5040 4-port SATA I PCI-X Controller - -pci:v000011ABd00005041* - ID_PRODUCT_FROM_DATABASE=MV88SX5041 4-port SATA I PCI-X Controller - -pci:v000011ABd00005080* - ID_PRODUCT_FROM_DATABASE=MV88SX5080 8-port SATA I PCI-X Controller - -pci:v000011ABd00005081* - ID_PRODUCT_FROM_DATABASE=MV88SX5081 8-port SATA I PCI-X Controller - -pci:v000011ABd00005181* - ID_PRODUCT_FROM_DATABASE=88f5181 [Orion-1] ARM SoC - -pci:v000011ABd00005182* - ID_PRODUCT_FROM_DATABASE=88f5182 [Orion-NAS] ARM SoC - -pci:v000011ABd00005281* - ID_PRODUCT_FROM_DATABASE=88f5281 [Orion-2] ARM SoC - -pci:v000011ABd00006041* - ID_PRODUCT_FROM_DATABASE=MV88SX6041 4-port SATA II PCI-X Controller - -pci:v000011ABd00006042* - ID_PRODUCT_FROM_DATABASE=88SX6042 PCI-X 4-Port SATA-II - -pci:v000011ABd00006081* - ID_PRODUCT_FROM_DATABASE=MV88SX6081 8-port SATA II PCI-X Controller - -pci:v000011ABd00006101* - ID_PRODUCT_FROM_DATABASE=88SE6101/6102 single-port PATA133 interface - -pci:v000011ABd00006101sv00001043sd000082E0* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v000011ABd00006111* - ID_PRODUCT_FROM_DATABASE=88SE6111 1-port PATA133(IDE) and 1-port SATA II Controllers - -pci:v000011ABd00006121* - ID_PRODUCT_FROM_DATABASE=88SE6121 SATA II / PATA Controller - -pci:v000011ABd00006141* - ID_PRODUCT_FROM_DATABASE=88SE614x SATA II PCI-E controller - -pci:v000011ABd00006145* - ID_PRODUCT_FROM_DATABASE=88SE6145 SATA II PCI-E controller - -pci:v000011ABd00006180* - ID_PRODUCT_FROM_DATABASE=88F6180 [Kirkwood] ARM SoC - -pci:v000011ABd00006192* - ID_PRODUCT_FROM_DATABASE=88F6190/6192 [Kirkwood] ARM SoC - -pci:v000011ABd00006281* - ID_PRODUCT_FROM_DATABASE=88F6281 [Kirkwood] ARM SoC - -pci:v000011ABd00006381* - ID_PRODUCT_FROM_DATABASE=MV78xx0 [Discovery Innovation] ARM SoC - -pci:v000011ABd00006440* - ID_PRODUCT_FROM_DATABASE=88SE6440 SAS/SATA PCIe controller - -pci:v000011ABd00006450* - ID_PRODUCT_FROM_DATABASE=64560 System Controller - -pci:v000011ABd00006460* - ID_PRODUCT_FROM_DATABASE=MV64360/64361/64362 System Controller - -pci:v000011ABd00006480* - ID_PRODUCT_FROM_DATABASE=MV64460/64461/64462 System Controller - -pci:v000011ABd00006480sv00001775sd0000C200* - ID_PRODUCT_FROM_DATABASE=C2K CompactPCI single board computer - -pci:v000011ABd00006485* - ID_PRODUCT_FROM_DATABASE=MV64460/64461/64462 System Controller, Revision B - -pci:v000011ABd00007042* - ID_PRODUCT_FROM_DATABASE=88SX7042 PCI-e 4-port SATA-II - -pci:v000011ABd00007042sv000016B8sd0000434B* - ID_PRODUCT_FROM_DATABASE=Tempo SATA E4P - -pci:v000011ABd00007810* - ID_PRODUCT_FROM_DATABASE=MV78100 [Discovery Innovation] ARM SoC - -pci:v000011ABd00007820* - ID_PRODUCT_FROM_DATABASE=MV78200 [Discovery Innovation] ARM SoC - -pci:v000011ABd0000F003* - ID_PRODUCT_FROM_DATABASE=GT-64010 Primary Image Piranha Image Generator - -pci:v000011AC* - ID_VENDOR_FROM_DATABASE=Canon Information Systems Research Aust. - -pci:v000011AD* - ID_VENDOR_FROM_DATABASE=Lite-On Communications Inc - -pci:v000011ADd00000002* - ID_PRODUCT_FROM_DATABASE=LNE100TX - -pci:v000011ADd00000002sv000011ADsd00000002* - ID_PRODUCT_FROM_DATABASE=LNE100TX - -pci:v000011ADd00000002sv000011ADsd00000003* - ID_PRODUCT_FROM_DATABASE=LNE100TX - -pci:v000011ADd00000002sv000011ADsd0000F003* - ID_PRODUCT_FROM_DATABASE=LNE100TX - -pci:v000011ADd00000002sv000011ADsd0000FFFF* - ID_PRODUCT_FROM_DATABASE=LNE100TX - -pci:v000011ADd00000002sv00001385sd0000F004* - ID_PRODUCT_FROM_DATABASE=FA310TX - -pci:v000011ADd00000002sv00002646sd0000F002* - ID_PRODUCT_FROM_DATABASE=KNE110TX EtheRx Fast Ethernet - -pci:v000011ADd0000C115* - ID_PRODUCT_FROM_DATABASE=LNE100TX [Linksys EtherFast 10/100] - -pci:v000011ADd0000C115sv000011ADsd0000C001* - ID_PRODUCT_FROM_DATABASE=LNE100TX [ver 2.0] - -pci:v000011ADd0000C115sv00002646sd0000000B* - ID_PRODUCT_FROM_DATABASE=KNE111TX - -pci:v000011AE* - ID_VENDOR_FROM_DATABASE=Aztech System Ltd - -pci:v000011AF* - ID_VENDOR_FROM_DATABASE=Avid Technology Inc. - -pci:v000011AFd00000001* - ID_PRODUCT_FROM_DATABASE=Cinema - -pci:v000011AFd0000EE40* - ID_PRODUCT_FROM_DATABASE=Digidesign Audiomedia III - -pci:v000011B0* - ID_VENDOR_FROM_DATABASE=V3 Semiconductor Inc. - -pci:v000011B0d00000002* - ID_PRODUCT_FROM_DATABASE=V300PSC - -pci:v000011B0d00000292* - ID_PRODUCT_FROM_DATABASE=V292PBC [Am29030/40 Bridge] - -pci:v000011B0d00000960* - ID_PRODUCT_FROM_DATABASE=V96xPBC - -pci:v000011B0d0000C960* - ID_PRODUCT_FROM_DATABASE=V96DPC - -pci:v000011B1* - ID_VENDOR_FROM_DATABASE=Apricot Computers - -pci:v000011B2* - ID_VENDOR_FROM_DATABASE=Eastman Kodak - -pci:v000011B3* - ID_VENDOR_FROM_DATABASE=Barr Systems Inc. - -pci:v000011B4* - ID_VENDOR_FROM_DATABASE=Leitch Technology International - -pci:v000011B5* - ID_VENDOR_FROM_DATABASE=Radstone Technology Plc - -pci:v000011B6* - ID_VENDOR_FROM_DATABASE=United Video Corp - -pci:v000011B7* - ID_VENDOR_FROM_DATABASE=Motorola - -pci:v000011B8* - ID_VENDOR_FROM_DATABASE=XPoint Technologies, Inc - -pci:v000011B8d00000001* - ID_PRODUCT_FROM_DATABASE=Quad PeerMaster - -pci:v000011B9* - ID_VENDOR_FROM_DATABASE=Pathlight Technology Inc. - -pci:v000011B9d0000C0ED* - ID_PRODUCT_FROM_DATABASE=SSA Controller - -pci:v000011BA* - ID_VENDOR_FROM_DATABASE=Videotron Corp - -pci:v000011BB* - ID_VENDOR_FROM_DATABASE=Pyramid Technology - -pci:v000011BC* - ID_VENDOR_FROM_DATABASE=Network Peripherals Inc - -pci:v000011BCd00000001* - ID_PRODUCT_FROM_DATABASE=NP-PCI - -pci:v000011BD* - ID_VENDOR_FROM_DATABASE=Pinnacle Systems Inc. - -pci:v000011BDd0000002E* - ID_PRODUCT_FROM_DATABASE=PCTV 40i - -pci:v000011BDd00000040* - ID_PRODUCT_FROM_DATABASE=Royal TS Function 1 - -pci:v000011BDd00000040sv000011BDsd00000044* - ID_PRODUCT_FROM_DATABASE=PCTV 2000i Dual DVB-T Pro PCI Tuner 1 - -pci:v000011BDd00000040sv000011BDsd00000045* - ID_PRODUCT_FROM_DATABASE=PCTV Dual Sat Pro PCI 4000i Tuner 1 - -pci:v000011BDd00000041* - ID_PRODUCT_FROM_DATABASE=RoyalTS Function 2 - -pci:v000011BDd00000041sv000011BDsd00000044* - ID_PRODUCT_FROM_DATABASE=PCTV 2000i Dual DVB-T Pro PCI Tuner 2 - -pci:v000011BDd00000041sv000011BDsd00000045* - ID_PRODUCT_FROM_DATABASE=PCTV Dual Sat Pro PCI 4000i Tuner 2 - -pci:v000011BDd00000042* - ID_PRODUCT_FROM_DATABASE=Royal TS Function 3 - -pci:v000011BDd00000042sv000011BDsd00000044* - ID_PRODUCT_FROM_DATABASE=PCTV 2000i Dual DVB-T Pro PCI Common - -pci:v000011BDd00000042sv000011BDsd00000045* - ID_PRODUCT_FROM_DATABASE=PCTV Dual Sat Pro PCI 4000i Common - -pci:v000011BDd00000051* - ID_PRODUCT_FROM_DATABASE=PCTV HD 800i - -pci:v000011BDd0000BEDE* - ID_PRODUCT_FROM_DATABASE=AV/DV Studio Capture Card - -pci:v000011BE* - ID_VENDOR_FROM_DATABASE=International Microcircuits Inc - -pci:v000011BF* - ID_VENDOR_FROM_DATABASE=Astrodesign, Inc. - -pci:v000011C0* - ID_VENDOR_FROM_DATABASE=Hewlett Packard - -pci:v000011C1* - ID_VENDOR_FROM_DATABASE=LSI Corporation - -pci:v000011C1d00000440* - ID_PRODUCT_FROM_DATABASE=56k WinModem - -pci:v000011C1d00000440sv00001033sd00008015* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd - -pci:v000011C1d00000440sv00001033sd00008047* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd - -pci:v000011C1d00000440sv00001033sd0000804F* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd - -pci:v000011C1d00000440sv000010CFsd0000102C* - ID_PRODUCT_FROM_DATABASE=LB LT Modem V.90 56k - -pci:v000011C1d00000440sv000010CFsd0000104A* - ID_PRODUCT_FROM_DATABASE=BIBLO LT Modem 56k - -pci:v000011C1d00000440sv000010CFsd0000105F* - ID_PRODUCT_FROM_DATABASE=LB2 LT Modem V.90 56k - -pci:v000011C1d00000440sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Internal V.90 Modem - -pci:v000011C1d00000440sv000011C1sd00000440* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd - -pci:v000011C1d00000440sv0000122Dsd00004101* - ID_PRODUCT_FROM_DATABASE=MDP7800-U Modem - -pci:v000011C1d00000440sv0000122Dsd00004102* - ID_PRODUCT_FROM_DATABASE=MDP7800SP-U Modem - -pci:v000011C1d00000440sv000013E0sd00000040* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd - -pci:v000011C1d00000440sv000013E0sd00000440* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd - -pci:v000011C1d00000440sv000013E0sd00000441* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd - -pci:v000011C1d00000440sv000013E0sd00000450* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd - -pci:v000011C1d00000440sv000013E0sd0000F100* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd - -pci:v000011C1d00000440sv000013E0sd0000F101* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd - -pci:v000011C1d00000440sv0000144Dsd00002101* - ID_PRODUCT_FROM_DATABASE=LT56PV Modem - -pci:v000011C1d00000440sv0000149Fsd00000440* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd - -pci:v000011C1d00000441* - ID_PRODUCT_FROM_DATABASE=56k WinModem - -pci:v000011C1d00000441sv00001033sd0000804D* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax - -pci:v000011C1d00000441sv00001033sd00008065* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax - -pci:v000011C1d00000441sv00001092sd00000440* - ID_PRODUCT_FROM_DATABASE=Supra 56i - -pci:v000011C1d00000441sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Internal V.90 Modem - -pci:v000011C1d00000441sv000011C1sd00000440* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax - -pci:v000011C1d00000441sv000011C1sd00000441* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax - -pci:v000011C1d00000441sv0000122Dsd00004100* - ID_PRODUCT_FROM_DATABASE=MDP7800-U Modem - -pci:v000011C1d00000441sv000013E0sd00000040* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax - -pci:v000011C1d00000441sv000013E0sd00000100* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax - -pci:v000011C1d00000441sv000013E0sd00000410* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax - -pci:v000011C1d00000441sv000013E0sd00000420* - ID_PRODUCT_FROM_DATABASE=TelePath Internet 56k WinModem - -pci:v000011C1d00000441sv000013E0sd00000440* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax - -pci:v000011C1d00000441sv000013E0sd00000443* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax - -pci:v000011C1d00000441sv000013E0sd0000F102* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax - -pci:v000011C1d00000441sv00001416sd00009804* - ID_PRODUCT_FROM_DATABASE=CommWave 56k Modem - -pci:v000011C1d00000441sv0000141Dsd00000440* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax - -pci:v000011C1d00000441sv0000144Fsd00000441* - ID_PRODUCT_FROM_DATABASE=Lucent 56k V.90 DF Modem - -pci:v000011C1d00000441sv0000144Fsd00000449* - ID_PRODUCT_FROM_DATABASE=Lucent 56k V.90 DF Modem - -pci:v000011C1d00000441sv0000144Fsd0000110D* - ID_PRODUCT_FROM_DATABASE=Lucent Win Modem - -pci:v000011C1d00000441sv00001468sd00000441* - ID_PRODUCT_FROM_DATABASE=Presario 56k V.90 DF Modem - -pci:v000011C1d00000441sv00001668sd00000440* - ID_PRODUCT_FROM_DATABASE=Lucent Win Modem - -pci:v000011C1d00000442* - ID_PRODUCT_FROM_DATABASE=56k WinModem - -pci:v000011C1d00000442sv000011C1sd00000440* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - -pci:v000011C1d00000442sv000011C1sd00000442* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - -pci:v000011C1d00000442sv000013E0sd00000412* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - -pci:v000011C1d00000442sv000013E0sd00000442* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - -pci:v000011C1d00000442sv000013FCsd00002471* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - -pci:v000011C1d00000442sv0000144Dsd00002104* - ID_PRODUCT_FROM_DATABASE=LT56PT Modem - -pci:v000011C1d00000442sv0000144Fsd00001104* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - -pci:v000011C1d00000442sv0000149Fsd00000440* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - -pci:v000011C1d00000442sv00001668sd00000440* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - -pci:v000011C1d00000443* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000444* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000445* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000445sv00008086sd00002203* - ID_PRODUCT_FROM_DATABASE=PRO/100+ MiniPCI (probably an Ambit U98.003.C.00 combo card) - -pci:v000011C1d00000445sv00008086sd00002204* - ID_PRODUCT_FROM_DATABASE=PRO/100+ MiniPCI on Armada E500 - -pci:v000011C1d00000446* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000447* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000448* - ID_PRODUCT_FROM_DATABASE=WinModem 56k - -pci:v000011C1d00000448sv00001014sd00000131* - ID_PRODUCT_FROM_DATABASE=Lucent Win Modem - -pci:v000011C1d00000448sv00001033sd00008066* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd - -pci:v000011C1d00000448sv000013E0sd00000030* - ID_PRODUCT_FROM_DATABASE=56k Voice Modem - -pci:v000011C1d00000448sv000013E0sd00000040* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+Dsvd - -pci:v000011C1d00000448sv00001668sd00002400* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k (MiniPCI Ethernet+Modem) - -pci:v000011C1d00000449* - ID_PRODUCT_FROM_DATABASE=L56xM+S [Mars-2] WinModem 56k - -pci:v000011C1d00000449sv00000E11sd0000B14D* - ID_PRODUCT_FROM_DATABASE=56k V.90 Modem - -pci:v000011C1d00000449sv00001014sd0000018C* - ID_PRODUCT_FROM_DATABASE=ThinkPad 600X - -pci:v000011C1d00000449sv000013E0sd00000020* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax - -pci:v000011C1d00000449sv000013E0sd00000041* - ID_PRODUCT_FROM_DATABASE=TelePath Internet 56k WinModem - -pci:v000011C1d00000449sv00001436sd00000440* - ID_PRODUCT_FROM_DATABASE=Lucent Win Modem - -pci:v000011C1d00000449sv0000144Fsd00000449* - ID_PRODUCT_FROM_DATABASE=Lucent 56k V.90 DFi Modem - -pci:v000011C1d00000449sv00001468sd00000410* - ID_PRODUCT_FROM_DATABASE=IBM ThinkPad T23 - -pci:v000011C1d00000449sv00001468sd00000440* - ID_PRODUCT_FROM_DATABASE=Lucent Win Modem - -pci:v000011C1d00000449sv00001468sd00000449* - ID_PRODUCT_FROM_DATABASE=Presario 56k V.90 DFi Modem - -pci:v000011C1d0000044A* - ID_PRODUCT_FROM_DATABASE=F-1156IV WinModem (V90, 56KFlex) - -pci:v000011C1d0000044Asv000010CFsd00001072* - ID_PRODUCT_FROM_DATABASE=LB Global LT Modem - -pci:v000011C1d0000044Asv000013E0sd00000012* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - -pci:v000011C1d0000044Asv000013E0sd00000042* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - -pci:v000011C1d0000044Asv0000144Fsd00001005* - ID_PRODUCT_FROM_DATABASE=LT WinModem 56k Data+Fax+Voice+VoiceView+Dsvd - -pci:v000011C1d0000044B* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d0000044C* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d0000044D* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d0000044E* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d0000044F* - ID_PRODUCT_FROM_DATABASE=V90 WildWire Modem - -pci:v000011C1d00000450* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000450sv00001033sd000080A8* - ID_PRODUCT_FROM_DATABASE=Versa Note Vxi - -pci:v000011C1d00000450sv0000144Fsd00004005* - ID_PRODUCT_FROM_DATABASE=Magnia SG20 - -pci:v000011C1d00000450sv00001468sd00000450* - ID_PRODUCT_FROM_DATABASE=Evo N600c - -pci:v000011C1d00000451* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000452* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000453* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000454* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000455* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000456* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000457* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000458* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000459* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d0000045A* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d0000045C* - ID_PRODUCT_FROM_DATABASE=LT WinModem - -pci:v000011C1d00000461* - ID_PRODUCT_FROM_DATABASE=V90 WildWire Modem - -pci:v000011C1d00000462* - ID_PRODUCT_FROM_DATABASE=V90 WildWire Modem - -pci:v000011C1d00000480* - ID_PRODUCT_FROM_DATABASE=Venus Modem (V90, 56KFlex) - -pci:v000011C1d0000048C* - ID_PRODUCT_FROM_DATABASE=V.92 56K WinModem - -pci:v000011C1d0000048F* - ID_PRODUCT_FROM_DATABASE=V.92 56k WinModem - -pci:v000011C1d00000620* - ID_PRODUCT_FROM_DATABASE=Lucent V.92 Data/Fax Modem - -pci:v000011C1d00002600* - ID_PRODUCT_FROM_DATABASE=StarPro26XX family (SP2601, SP2603, SP2612) DSP - -pci:v000011C1d00005400* - ID_PRODUCT_FROM_DATABASE=OR3TP12 FPSC - -pci:v000011C1d00005656* - ID_PRODUCT_FROM_DATABASE=Venus Modem - -pci:v000011C1d00005801* - ID_PRODUCT_FROM_DATABASE=USB - -pci:v000011C1d00005802* - ID_PRODUCT_FROM_DATABASE=USS-312 USB Controller - -pci:v000011C1d00005803* - ID_PRODUCT_FROM_DATABASE=USS-344S USB Controller - -pci:v000011C1d00005811* - ID_PRODUCT_FROM_DATABASE=FW322/323 [TrueFire] 1394a Controller - -pci:v000011C1d00005811sv0000103Csd00002A34* - ID_PRODUCT_FROM_DATABASE=Pavilion a1677c - -pci:v000011C1d00005811sv0000103Csd00002A9E* - ID_PRODUCT_FROM_DATABASE=Pavilion p6310f - -pci:v000011C1d00005811sv00001043sd00008294* - ID_PRODUCT_FROM_DATABASE=LSI FW322/323 IEEE 1394a FireWire Controller - -pci:v000011C1d00005811sv00008086sd0000524C* - ID_PRODUCT_FROM_DATABASE=D865PERL mainboard - -pci:v000011C1d00005811sv0000DEADsd00000800* - ID_PRODUCT_FROM_DATABASE=FireWire Host Bus Adapter - -pci:v000011C1d00005901* - ID_PRODUCT_FROM_DATABASE=FW643 [TrueFire] PCIe 1394b Controller - -pci:v000011C1d00005901sv000011C1sd00005900* - ID_PRODUCT_FROM_DATABASE=FW643 [TrueFire] PCIe 1394b Controller - -pci:v000011C1d00005901sv00001443sd00000643* - ID_PRODUCT_FROM_DATABASE=FireBoard800-e V.2 - -pci:v000011C1d00005901sv00001546sd00000643* - ID_PRODUCT_FROM_DATABASE=FWB-PCIE1X2x - -pci:v000011C1d00005903* - ID_PRODUCT_FROM_DATABASE=FW533 [TrueFire] PCIe 1394a Controller - -pci:v000011C1d00008110* - ID_PRODUCT_FROM_DATABASE=T8110 H.100/H.110 TDM switch - -pci:v000011C1d00008110sv000012D9sd0000000C* - ID_PRODUCT_FROM_DATABASE=E1/T1 PMXc cPCI carrier card - -pci:v000011C1d0000AB10* - ID_PRODUCT_FROM_DATABASE=WL60010 Wireless LAN MAC - -pci:v000011C1d0000AB11* - ID_PRODUCT_FROM_DATABASE=WL60040 Multimode Wireles LAN MAC - -pci:v000011C1d0000AB11sv000011C1sd0000AB12* - ID_PRODUCT_FROM_DATABASE=WaveLAN 11abg Cardbus card (Model 1102) - -pci:v000011C1d0000AB11sv000011C1sd0000AB13* - ID_PRODUCT_FROM_DATABASE=WaveLAN 11abg MiniPCI card (Model 0512) - -pci:v000011C1d0000AB11sv000011C1sd0000AB15* - ID_PRODUCT_FROM_DATABASE=WaveLAN 11abg Cardbus card (Model 1106) - -pci:v000011C1d0000AB11sv000011C1sd0000AB16* - ID_PRODUCT_FROM_DATABASE=WaveLAN 11abg MiniPCI card (Model 0516) - -pci:v000011C1d0000AB20* - ID_PRODUCT_FROM_DATABASE=ORiNOCO PCI Adapter - -pci:v000011C1d0000AB21* - ID_PRODUCT_FROM_DATABASE=Agere Wireless PCI Adapter - -pci:v000011C1d0000AB30* - ID_PRODUCT_FROM_DATABASE=Hermes2 Mini-PCI WaveLAN a/b/g - -pci:v000011C1d0000AB30sv000014CDsd00002012* - ID_PRODUCT_FROM_DATABASE=Hermes2 Mini-PCI WaveLAN a/b/g - -pci:v000011C1d0000ED00* - ID_PRODUCT_FROM_DATABASE=ET-131x PCI-E Ethernet Controller - -pci:v000011C1d0000ED01* - ID_PRODUCT_FROM_DATABASE=ET-131x PCI-E Ethernet Controller - -pci:v000011C2* - ID_VENDOR_FROM_DATABASE=Sand Microelectronics - -pci:v000011C3* - ID_VENDOR_FROM_DATABASE=NEC Corporation - -pci:v000011C4* - ID_VENDOR_FROM_DATABASE=Document Technologies, Inc - -pci:v000011C5* - ID_VENDOR_FROM_DATABASE=Shiva Corporation - -pci:v000011C6* - ID_VENDOR_FROM_DATABASE=Dainippon Screen Mfg. Co. Ltd - -pci:v000011C7* - ID_VENDOR_FROM_DATABASE=D.C.M. Data Systems - -pci:v000011C8* - ID_VENDOR_FROM_DATABASE=Dolphin Interconnect Solutions AS - -pci:v000011C8d00000658* - ID_PRODUCT_FROM_DATABASE=PSB32 SCI-Adapter D31x - -pci:v000011C8d0000D665* - ID_PRODUCT_FROM_DATABASE=PSB64 SCI-Adapter D32x - -pci:v000011C8d0000D667* - ID_PRODUCT_FROM_DATABASE=PSB66 SCI-Adapter D33x - -pci:v000011C9* - ID_VENDOR_FROM_DATABASE=Magma - -pci:v000011C9d00000010* - ID_PRODUCT_FROM_DATABASE=16-line serial port w/- DMA - -pci:v000011C9d00000011* - ID_PRODUCT_FROM_DATABASE=4-line serial port w/- DMA - -pci:v000011CA* - ID_VENDOR_FROM_DATABASE=LSI Systems, Inc - -pci:v000011CB* - ID_VENDOR_FROM_DATABASE=Specialix Research Ltd. - -pci:v000011CBd00002000* - ID_PRODUCT_FROM_DATABASE=PCI_9050 - -pci:v000011CBd00002000sv000011CBsd00000200* - ID_PRODUCT_FROM_DATABASE=SX - -pci:v000011CBd00002000sv000011CBsd0000B008* - ID_PRODUCT_FROM_DATABASE=I/O8+ - -pci:v000011CBd00004000* - ID_PRODUCT_FROM_DATABASE=SUPI_1 - -pci:v000011CBd00008000* - ID_PRODUCT_FROM_DATABASE=T225 - -pci:v000011CC* - ID_VENDOR_FROM_DATABASE=Michels & Kleberhoff Computer GmbH - -pci:v000011CD* - ID_VENDOR_FROM_DATABASE=HAL Computer Systems, Inc. - -pci:v000011CE* - ID_VENDOR_FROM_DATABASE=Netaccess - -pci:v000011CF* - ID_VENDOR_FROM_DATABASE=Pioneer Electronic Corporation - -pci:v000011D0* - ID_VENDOR_FROM_DATABASE=Lockheed Martin Federal Systems-Manassas - -pci:v000011D1* - ID_VENDOR_FROM_DATABASE=Auravision - -pci:v000011D1d000001F7* - ID_PRODUCT_FROM_DATABASE=VxP524 - -pci:v000011D1d000001F9* - ID_PRODUCT_FROM_DATABASE=VxP951 - -pci:v000011D2* - ID_VENDOR_FROM_DATABASE=Intercom Inc. - -pci:v000011D3* - ID_VENDOR_FROM_DATABASE=Trancell Systems Inc - -pci:v000011D4* - ID_VENDOR_FROM_DATABASE=Analog Devices - -pci:v000011D4d00001535* - ID_PRODUCT_FROM_DATABASE=Blackfin BF535 processor - -pci:v000011D4d00001805* - ID_PRODUCT_FROM_DATABASE=SM56 PCI modem - -pci:v000011D5* - ID_VENDOR_FROM_DATABASE=Ikon Corporation - -pci:v000011D5d00000115* - ID_PRODUCT_FROM_DATABASE=10115 - -pci:v000011D5d00000117* - ID_PRODUCT_FROM_DATABASE=10117 - -pci:v000011D6* - ID_VENDOR_FROM_DATABASE=Tekelec Telecom - -pci:v000011D7* - ID_VENDOR_FROM_DATABASE=Trenton Technology, Inc. - -pci:v000011D8* - ID_VENDOR_FROM_DATABASE=Image Technologies Development - -pci:v000011D9* - ID_VENDOR_FROM_DATABASE=TEC Corporation - -pci:v000011DA* - ID_VENDOR_FROM_DATABASE=Novell - -pci:v000011DB* - ID_VENDOR_FROM_DATABASE=Sega Enterprises Ltd - -pci:v000011DC* - ID_VENDOR_FROM_DATABASE=Questra Corporation - -pci:v000011DD* - ID_VENDOR_FROM_DATABASE=Crosfield Electronics Limited - -pci:v000011DE* - ID_VENDOR_FROM_DATABASE=Zoran Corporation - -pci:v000011DEd00006017* - ID_PRODUCT_FROM_DATABASE=miroVIDEO DC30 - -pci:v000011DEd00006057* - ID_PRODUCT_FROM_DATABASE=ZR36057PQC Video cutting chipset - -pci:v000011DEd00006057sv00001031sd00007EFE* - ID_PRODUCT_FROM_DATABASE=DC10 Plus - -pci:v000011DEd00006057sv00001031sd0000FC00* - ID_PRODUCT_FROM_DATABASE=MiroVIDEO DC50, Motion JPEG Capture/CODEC Board - -pci:v000011DEd00006057sv000012F8sd00008A02* - ID_PRODUCT_FROM_DATABASE=Tekram Video Kit - -pci:v000011DEd00006057sv000013CAsd00004231* - ID_PRODUCT_FROM_DATABASE=JPEG/TV Card - -pci:v000011DEd00006120* - ID_PRODUCT_FROM_DATABASE=ZR36120 - -pci:v000011DEd00006120sv00001328sd0000F001* - ID_PRODUCT_FROM_DATABASE=Cinemaster C DVD Decoder - -pci:v000011DEd00006120sv000013C2sd00000000* - ID_PRODUCT_FROM_DATABASE=MediaFocus Satellite TV Card - -pci:v000011DEd00006120sv00001DE1sd00009FFF* - ID_PRODUCT_FROM_DATABASE=Video Kit C210 - -pci:v000011DF* - ID_VENDOR_FROM_DATABASE=New Wave PDG - -pci:v000011E0* - ID_VENDOR_FROM_DATABASE=Cray Communications A/S - -pci:v000011E1* - ID_VENDOR_FROM_DATABASE=GEC Plessey Semi Inc. - -pci:v000011E2* - ID_VENDOR_FROM_DATABASE=Samsung Information Systems America - -pci:v000011E3* - ID_VENDOR_FROM_DATABASE=Quicklogic Corporation - -pci:v000011E3d00000001* - ID_PRODUCT_FROM_DATABASE=COM-ON-AIR Dosch&Amand DECT - -pci:v000011E3d00000560* - ID_PRODUCT_FROM_DATABASE=QL5064 Companion Design Demo Board - -pci:v000011E3d00005030* - ID_PRODUCT_FROM_DATABASE=PC Watchdog - -pci:v000011E3d00008417* - ID_PRODUCT_FROM_DATABASE=QL5064 [QuickPCI] PCI v2.2 bridge for SMT417 Dual TMS320C6416T PMC Module - -pci:v000011E4* - ID_VENDOR_FROM_DATABASE=Second Wave Inc - -pci:v000011E5* - ID_VENDOR_FROM_DATABASE=IIX Consulting - -pci:v000011E6* - ID_VENDOR_FROM_DATABASE=Mitsui-Zosen System Research - -pci:v000011E7* - ID_VENDOR_FROM_DATABASE=Toshiba America, Elec. Company - -pci:v000011E8* - ID_VENDOR_FROM_DATABASE=Digital Processing Systems Inc. - -pci:v000011E9* - ID_VENDOR_FROM_DATABASE=Highwater Designs Ltd. - -pci:v000011EA* - ID_VENDOR_FROM_DATABASE=Elsag Bailey - -pci:v000011EB* - ID_VENDOR_FROM_DATABASE=Formation Inc. - -pci:v000011EC* - ID_VENDOR_FROM_DATABASE=Coreco Inc - -pci:v000011ECd0000000D* - ID_PRODUCT_FROM_DATABASE=Oculus-F/64P - -pci:v000011ECd00001800* - ID_PRODUCT_FROM_DATABASE=Cobra/C6 - -pci:v000011ED* - ID_VENDOR_FROM_DATABASE=Mediamatics - -pci:v000011EE* - ID_VENDOR_FROM_DATABASE=Dome Imaging Systems Inc - -pci:v000011EF* - ID_VENDOR_FROM_DATABASE=Nicolet Technologies B.V. - -pci:v000011F0* - ID_VENDOR_FROM_DATABASE=Compu-Shack - -pci:v000011F0d00004231* - ID_PRODUCT_FROM_DATABASE=FDDI - -pci:v000011F0d00004232* - ID_PRODUCT_FROM_DATABASE=FASTline UTP Quattro - -pci:v000011F0d00004233* - ID_PRODUCT_FROM_DATABASE=FASTline FO - -pci:v000011F0d00004234* - ID_PRODUCT_FROM_DATABASE=FASTline UTP - -pci:v000011F0d00004235* - ID_PRODUCT_FROM_DATABASE=FASTline-II UTP - -pci:v000011F0d00004236* - ID_PRODUCT_FROM_DATABASE=FASTline-II FO - -pci:v000011F0d00004731* - ID_PRODUCT_FROM_DATABASE=GIGAline - -pci:v000011F1* - ID_VENDOR_FROM_DATABASE=Symbios Logic Inc - -pci:v000011F2* - ID_VENDOR_FROM_DATABASE=Picture Tel Japan K.K. - -pci:v000011F3* - ID_VENDOR_FROM_DATABASE=Keithley Metrabyte - -pci:v000011F3d00000011* - ID_PRODUCT_FROM_DATABASE=KPCI-PIO24 - -pci:v000011F4* - ID_VENDOR_FROM_DATABASE=Kinetic Systems Corporation - -pci:v000011F4d00002915* - ID_PRODUCT_FROM_DATABASE=CAMAC controller - -pci:v000011F5* - ID_VENDOR_FROM_DATABASE=Computing Devices International - -pci:v000011F6* - ID_VENDOR_FROM_DATABASE=Compex - -pci:v000011F6d00000112* - ID_PRODUCT_FROM_DATABASE=ENet100VG4 - -pci:v000011F6d00000113* - ID_PRODUCT_FROM_DATABASE=FreedomLine 100 - -pci:v000011F6d00001401* - ID_PRODUCT_FROM_DATABASE=ReadyLink 2000 - -pci:v000011F6d00002011* - ID_PRODUCT_FROM_DATABASE=RL100-ATX 10/100 - -pci:v000011F6d00002011sv000011F6sd00002011* - ID_PRODUCT_FROM_DATABASE=RL100-ATX - -pci:v000011F6d00002201* - ID_PRODUCT_FROM_DATABASE=ReadyLink 100TX (Winbond W89C840) - -pci:v000011F6d00002201sv000011F6sd00002011* - ID_PRODUCT_FROM_DATABASE=ReadyLink 100TX - -pci:v000011F6d00009881* - ID_PRODUCT_FROM_DATABASE=RL100TX Fast Ethernet - -pci:v000011F7* - ID_VENDOR_FROM_DATABASE=Scientific Atlanta - -pci:v000011F8* - ID_VENDOR_FROM_DATABASE=PMC-Sierra Inc. - -pci:v000011F8d00005220* - ID_PRODUCT_FROM_DATABASE=BR522x [PMC-Sierra maxRAID SAS Controller] - -pci:v000011F8d00007364* - ID_PRODUCT_FROM_DATABASE=PM7364 [FREEDM - 32 Frame Engine & Datalink Mgr] - -pci:v000011F8d00007375* - ID_PRODUCT_FROM_DATABASE=PM7375 [LASAR-155 ATM SAR] - -pci:v000011F8d00007384* - ID_PRODUCT_FROM_DATABASE=PM7384 [FREEDM - 84P672 Frm Engine & Datalink Mgr] - -pci:v000011F8d00008000* - ID_PRODUCT_FROM_DATABASE=PM8000 [SPC - SAS Protocol Controller] - -pci:v000011F9* - ID_VENDOR_FROM_DATABASE=I-Cube Inc - -pci:v000011FA* - ID_VENDOR_FROM_DATABASE=Kasan Electronics Company, Ltd. - -pci:v000011FB* - ID_VENDOR_FROM_DATABASE=Datel Inc - -pci:v000011FC* - ID_VENDOR_FROM_DATABASE=Silicon Magic - -pci:v000011FD* - ID_VENDOR_FROM_DATABASE=High Street Consultants - -pci:v000011FE* - ID_VENDOR_FROM_DATABASE=Comtrol Corporation - -pci:v000011FEd00000001* - ID_PRODUCT_FROM_DATABASE=RocketPort 32 port w/external I/F - -pci:v000011FEd00000002* - ID_PRODUCT_FROM_DATABASE=RocketPort 8 port w/external I/F - -pci:v000011FEd00000003* - ID_PRODUCT_FROM_DATABASE=RocketPort 16 port w/external I/F - -pci:v000011FEd00000004* - ID_PRODUCT_FROM_DATABASE=RocketPort 4 port w/quad cable - -pci:v000011FEd00000005* - ID_PRODUCT_FROM_DATABASE=RocketPort 8 port w/octa cable - -pci:v000011FEd00000006* - ID_PRODUCT_FROM_DATABASE=RocketPort 8 port w/RJ11 connectors - -pci:v000011FEd00000007* - ID_PRODUCT_FROM_DATABASE=RocketPort 4 port w/RJ11 connectors - -pci:v000011FEd00000008* - ID_PRODUCT_FROM_DATABASE=RocketPort 8 port w/ DB78 SNI (Siemens) connector - -pci:v000011FEd00000009* - ID_PRODUCT_FROM_DATABASE=RocketPort 16 port w/ DB78 SNI (Siemens) connector - -pci:v000011FEd0000000A* - ID_PRODUCT_FROM_DATABASE=RocketPort Plus 4 port - -pci:v000011FEd0000000B* - ID_PRODUCT_FROM_DATABASE=RocketPort Plus 8 port - -pci:v000011FEd0000000C* - ID_PRODUCT_FROM_DATABASE=RocketModem 6 port - -pci:v000011FEd0000000D* - ID_PRODUCT_FROM_DATABASE=RocketModem 4-port - -pci:v000011FEd0000000E* - ID_PRODUCT_FROM_DATABASE=RocketPort Plus 2 port RS232 - -pci:v000011FEd0000000F* - ID_PRODUCT_FROM_DATABASE=RocketPort Plus 2 port RS422 - -pci:v000011FEd00000040* - ID_PRODUCT_FROM_DATABASE=RocketPort Infinity Octa, 8port, RJ45 - -pci:v000011FEd00000041* - ID_PRODUCT_FROM_DATABASE=RocketPort Infinity 32port, External Interface - -pci:v000011FEd00000042* - ID_PRODUCT_FROM_DATABASE=RocketPort Infinity 8port, External Interface - -pci:v000011FEd00000043* - ID_PRODUCT_FROM_DATABASE=RocketPort Infinity 16port, External Interface - -pci:v000011FEd00000044* - ID_PRODUCT_FROM_DATABASE=RocketPort Infinity Quad, 4port, DB - -pci:v000011FEd00000045* - ID_PRODUCT_FROM_DATABASE=RocketPort Infinity Octa, 8port, DB - -pci:v000011FEd00000047* - ID_PRODUCT_FROM_DATABASE=RocketPort Infinity 4port, RJ45 - -pci:v000011FEd0000004F* - ID_PRODUCT_FROM_DATABASE=RocketPort Infinity 2port, SMPTE - -pci:v000011FEd00000052* - ID_PRODUCT_FROM_DATABASE=RocketPort Infinity Octa, 8port, SMPTE - -pci:v000011FEd00000801* - ID_PRODUCT_FROM_DATABASE=RocketPort UPCI 32 port w/external I/F - -pci:v000011FEd00000802* - ID_PRODUCT_FROM_DATABASE=RocketPort UPCI 8 port w/external I/F - -pci:v000011FEd00000803* - ID_PRODUCT_FROM_DATABASE=RocketPort UPCI 16 port w/external I/F - -pci:v000011FEd00000805* - ID_PRODUCT_FROM_DATABASE=RocketPort UPCI 8 port w/octa cable - -pci:v000011FEd0000080C* - ID_PRODUCT_FROM_DATABASE=RocketModem III 8 port - -pci:v000011FEd0000080D* - ID_PRODUCT_FROM_DATABASE=RocketModem III 4 port - -pci:v000011FEd00000810* - ID_PRODUCT_FROM_DATABASE=RocketPort UPCI Plus 4 port RS232 - -pci:v000011FEd00000811* - ID_PRODUCT_FROM_DATABASE=RocketPort UPCI Plus 8 port RS232 - -pci:v000011FEd00000812* - ID_PRODUCT_FROM_DATABASE=RocketPort UPCI Plus 8 port RS422 - -pci:v000011FEd00000903* - ID_PRODUCT_FROM_DATABASE=RocketPort Compact PCI 16 port w/external I/F - -pci:v000011FEd00008015* - ID_PRODUCT_FROM_DATABASE=RocketPort 4-port UART 16954 - -pci:v000011FF* - ID_VENDOR_FROM_DATABASE=Scion Corporation - -pci:v000011FFd00000003* - ID_PRODUCT_FROM_DATABASE=AG-5 - -pci:v00001200* - ID_VENDOR_FROM_DATABASE=CSS Corporation - -pci:v00001201* - ID_VENDOR_FROM_DATABASE=Vista Controls Corp - -pci:v00001202* - ID_VENDOR_FROM_DATABASE=Network General Corp. - -pci:v00001202d00004300* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet Adapter - -pci:v00001202d00004300sv00001202sd00009841* - ID_PRODUCT_FROM_DATABASE=SK-9841 LX - -pci:v00001202d00004300sv00001202sd00009842* - ID_PRODUCT_FROM_DATABASE=SK-9841 LX dual link - -pci:v00001202d00004300sv00001202sd00009843* - ID_PRODUCT_FROM_DATABASE=SK-9843 SX - -pci:v00001202d00004300sv00001202sd00009844* - ID_PRODUCT_FROM_DATABASE=SK-9843 SX dual link - -pci:v00001203* - ID_VENDOR_FROM_DATABASE=Bayer Corporation, Agfa Division - -pci:v00001204* - ID_VENDOR_FROM_DATABASE=Lattice Semiconductor Corporation - -pci:v00001205* - ID_VENDOR_FROM_DATABASE=Array Corporation - -pci:v00001206* - ID_VENDOR_FROM_DATABASE=Amdahl Corporation - -pci:v00001208* - ID_VENDOR_FROM_DATABASE=Parsytec GmbH - -pci:v00001208d00004853* - ID_PRODUCT_FROM_DATABASE=HS-Link Device - -pci:v00001209* - ID_VENDOR_FROM_DATABASE=SCI Systems Inc - -pci:v0000120A* - ID_VENDOR_FROM_DATABASE=Synaptel - -pci:v0000120B* - ID_VENDOR_FROM_DATABASE=Adaptive Solutions - -pci:v0000120C* - ID_VENDOR_FROM_DATABASE=Technical Corp. - -pci:v0000120D* - ID_VENDOR_FROM_DATABASE=Compression Labs, Inc. - -pci:v0000120E* - ID_VENDOR_FROM_DATABASE=Cyclades Corporation - -pci:v0000120Ed00000100* - ID_PRODUCT_FROM_DATABASE=Cyclom-Y below first megabyte - -pci:v0000120Ed00000101* - ID_PRODUCT_FROM_DATABASE=Cyclom-Y above first megabyte - -pci:v0000120Ed00000102* - ID_PRODUCT_FROM_DATABASE=Cyclom-4Y below first megabyte - -pci:v0000120Ed00000103* - ID_PRODUCT_FROM_DATABASE=Cyclom-4Y above first megabyte - -pci:v0000120Ed00000104* - ID_PRODUCT_FROM_DATABASE=Cyclom-8Y below first megabyte - -pci:v0000120Ed00000105* - ID_PRODUCT_FROM_DATABASE=Cyclom-8Y above first megabyte - -pci:v0000120Ed00000200* - ID_PRODUCT_FROM_DATABASE=Cyclades-Z below first megabyte - -pci:v0000120Ed00000201* - ID_PRODUCT_FROM_DATABASE=Cyclades-Z above first megabyte - -pci:v0000120Ed00000300* - ID_PRODUCT_FROM_DATABASE=PC300/RSV or /X21 (2 ports) - -pci:v0000120Ed00000301* - ID_PRODUCT_FROM_DATABASE=PC300/RSV or /X21 (1 port) - -pci:v0000120Ed00000310* - ID_PRODUCT_FROM_DATABASE=PC300/TE (2 ports) - -pci:v0000120Ed00000311* - ID_PRODUCT_FROM_DATABASE=PC300/TE (1 port) - -pci:v0000120Ed00000320* - ID_PRODUCT_FROM_DATABASE=PC300/TE-M (2 ports) - -pci:v0000120Ed00000321* - ID_PRODUCT_FROM_DATABASE=PC300/TE-M (1 port) - -pci:v0000120Ed00000400* - ID_PRODUCT_FROM_DATABASE=PC400 - -pci:v0000120F* - ID_VENDOR_FROM_DATABASE=Essential Communications - -pci:v0000120Fd00000001* - ID_PRODUCT_FROM_DATABASE=Roadrunner serial HIPPI - -pci:v00001210* - ID_VENDOR_FROM_DATABASE=Hyperparallel Technologies - -pci:v00001211* - ID_VENDOR_FROM_DATABASE=Braintech Inc - -pci:v00001212* - ID_VENDOR_FROM_DATABASE=Kingston Technology Corp. - -pci:v00001213* - ID_VENDOR_FROM_DATABASE=Applied Intelligent Systems, Inc. - -pci:v00001214* - ID_VENDOR_FROM_DATABASE=Performance Technologies, Inc. - -pci:v00001215* - ID_VENDOR_FROM_DATABASE=Interware Co., Ltd - -pci:v00001216* - ID_VENDOR_FROM_DATABASE=Purup Prepress A/S - -pci:v00001217* - ID_VENDOR_FROM_DATABASE=O2 Micro, Inc. - -pci:v00001217d000000F7* - ID_PRODUCT_FROM_DATABASE=Firewire (IEEE 1394) - -pci:v00001217d000000F7sv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001217d000010F7* - ID_PRODUCT_FROM_DATABASE=1394 OHCI Compliant Host Controller - -pci:v00001217d000011F7* - ID_PRODUCT_FROM_DATABASE=OZ600 1394a-2000 Controller - -pci:v00001217d000011F7sv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00001217d000013F7* - ID_PRODUCT_FROM_DATABASE=1394 OHCI Compliant Host Controller - -pci:v00001217d00006729* - ID_PRODUCT_FROM_DATABASE=OZ6729 - -pci:v00001217d0000673A* - ID_PRODUCT_FROM_DATABASE=OZ6730 - -pci:v00001217d00006832* - ID_PRODUCT_FROM_DATABASE=OZ6832/6833 CardBus Controller - -pci:v00001217d00006836* - ID_PRODUCT_FROM_DATABASE=OZ6836/6860 CardBus Controller - -pci:v00001217d00006872* - ID_PRODUCT_FROM_DATABASE=OZ6812 CardBus Controller - -pci:v00001217d00006925* - ID_PRODUCT_FROM_DATABASE=OZ6922 CardBus Controller - -pci:v00001217d00006933* - ID_PRODUCT_FROM_DATABASE=OZ6933/711E1 CardBus/SmartCardBus Controller - -pci:v00001217d00006933sv00001025sd00001016* - ID_PRODUCT_FROM_DATABASE=Travelmate 612 TX - -pci:v00001217d00006972* - ID_PRODUCT_FROM_DATABASE=OZ601/6912/711E0 CardBus/SmartCardBus Controller - -pci:v00001217d00006972sv00001014sd0000020C* - ID_PRODUCT_FROM_DATABASE=ThinkPad R30 - -pci:v00001217d00006972sv00001028sd00000152* - ID_PRODUCT_FROM_DATABASE=Latitude D500 - -pci:v00001217d00006972sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Magnia Z310 - -pci:v00001217d00007110* - ID_PRODUCT_FROM_DATABASE=OZ711Mx 4-in-1 MemoryCardBus Accelerator - -pci:v00001217d00007110sv0000103Csd0000088C* - ID_PRODUCT_FROM_DATABASE=NC8000 laptop - -pci:v00001217d00007110sv0000103Csd00000890* - ID_PRODUCT_FROM_DATABASE=NC6000 laptop - -pci:v00001217d00007110sv00001734sd0000106C* - ID_PRODUCT_FROM_DATABASE=Amilo A1645 - -pci:v00001217d00007112* - ID_PRODUCT_FROM_DATABASE=OZ711EC1/M1 SmartCardBus/MemoryCardBus Controller - -pci:v00001217d00007113* - ID_PRODUCT_FROM_DATABASE=OZ711EC1 SmartCardBus Controller - -pci:v00001217d00007113sv00001025sd00000035* - ID_PRODUCT_FROM_DATABASE=TravelMate 660 - -pci:v00001217d00007114* - ID_PRODUCT_FROM_DATABASE=OZ711M1/MC1 4-in-1 MemoryCardBus Controller - -pci:v00001217d00007120* - ID_PRODUCT_FROM_DATABASE=Integrated MMC/SD Controller - -pci:v00001217d00007120sv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001217d00007130* - ID_PRODUCT_FROM_DATABASE=Integrated MS/xD Controller - -pci:v00001217d00007130sv00001179sd0000FF50* - ID_PRODUCT_FROM_DATABASE=Satellite P305D-S8995E - -pci:v00001217d00007134* - ID_PRODUCT_FROM_DATABASE=OZ711MP1/MS1 MemoryCardBus Controller - -pci:v00001217d00007135* - ID_PRODUCT_FROM_DATABASE=Cardbus bridge - -pci:v00001217d00007136* - ID_PRODUCT_FROM_DATABASE=OZ711SP1 Memory CardBus Controller - -pci:v00001217d000071E2* - ID_PRODUCT_FROM_DATABASE=OZ711E2 SmartCardBus Controller - -pci:v00001217d00007212* - ID_PRODUCT_FROM_DATABASE=OZ711M2 4-in-1 MemoryCardBus Controller - -pci:v00001217d00007213* - ID_PRODUCT_FROM_DATABASE=OZ6933E CardBus Controller - -pci:v00001217d00007223* - ID_PRODUCT_FROM_DATABASE=OZ711M3/MC3 4-in-1 MemoryCardBus Controller - -pci:v00001217d00007223sv0000103Csd0000088C* - ID_PRODUCT_FROM_DATABASE=NC8000 laptop - -pci:v00001217d00007223sv0000103Csd00000890* - ID_PRODUCT_FROM_DATABASE=NC6000 laptop - -pci:v00001217d00007223sv000010CFsd000011C4* - ID_PRODUCT_FROM_DATABASE=Lifebook P5020D Laptop - -pci:v00001217d00007233* - ID_PRODUCT_FROM_DATABASE=OZ711MP3/MS3 4-in-1 MemoryCardBus Controller - -pci:v00001217d00008120* - ID_PRODUCT_FROM_DATABASE=Integrated MMC/SD Controller - -pci:v00001217d00008130* - ID_PRODUCT_FROM_DATABASE=Integrated MS/MSPRO/xD Controller - -pci:v00001217d00008320* - ID_PRODUCT_FROM_DATABASE=OZ600 MMC/SD Controller - -pci:v00001217d00008320sv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00001217d00008321* - ID_PRODUCT_FROM_DATABASE=Integrated MMC/SD controller - -pci:v00001217d00008330* - ID_PRODUCT_FROM_DATABASE=OZ600 MS/xD Controller - -pci:v00001217d00008330sv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00001217d00008331* - ID_PRODUCT_FROM_DATABASE=O2 Flash Memory Card - -pci:v00001218* - ID_VENDOR_FROM_DATABASE=Hybricon Corp. - -pci:v00001219* - ID_VENDOR_FROM_DATABASE=First Virtual Corporation - -pci:v0000121A* - ID_VENDOR_FROM_DATABASE=3Dfx Interactive, Inc. - -pci:v0000121Ad00000001* - ID_PRODUCT_FROM_DATABASE=Voodoo - -pci:v0000121Ad00000002* - ID_PRODUCT_FROM_DATABASE=Voodoo 2 - -pci:v0000121Ad00000003* - ID_PRODUCT_FROM_DATABASE=Voodoo Banshee - -pci:v0000121Ad00000003sv00001092sd00000003* - ID_PRODUCT_FROM_DATABASE=Monster Fusion - -pci:v0000121Ad00000003sv00001092sd00004000* - ID_PRODUCT_FROM_DATABASE=Monster Fusion - -pci:v0000121Ad00000003sv00001092sd00004002* - ID_PRODUCT_FROM_DATABASE=Monster Fusion - -pci:v0000121Ad00000003sv00001092sd00004801* - ID_PRODUCT_FROM_DATABASE=Monster Fusion AGP - -pci:v0000121Ad00000003sv00001092sd00004803* - ID_PRODUCT_FROM_DATABASE=Monster Fusion AGP - -pci:v0000121Ad00000003sv00001092sd00008030* - ID_PRODUCT_FROM_DATABASE=Monster Fusion - -pci:v0000121Ad00000003sv00001092sd00008035* - ID_PRODUCT_FROM_DATABASE=Monster Fusion AGP - -pci:v0000121Ad00000003sv000010B0sd00000001* - ID_PRODUCT_FROM_DATABASE=Dragon 4000 - -pci:v0000121Ad00000003sv00001102sd00001017* - ID_PRODUCT_FROM_DATABASE=3D Blaster Banshee PCI (CT6760) - -pci:v0000121Ad00000003sv00001102sd00001018* - ID_PRODUCT_FROM_DATABASE=3D Blaster Banshee VE - -pci:v0000121Ad00000003sv0000121Asd00000001* - ID_PRODUCT_FROM_DATABASE=Voodoo Banshee AGP - -pci:v0000121Ad00000003sv0000121Asd00000003* - ID_PRODUCT_FROM_DATABASE=Voodoo Banshee AGP SGRAM - -pci:v0000121Ad00000003sv0000121Asd00000004* - ID_PRODUCT_FROM_DATABASE=Voodoo Banshee - -pci:v0000121Ad00000003sv0000139Csd00000016* - ID_PRODUCT_FROM_DATABASE=Raven - -pci:v0000121Ad00000003sv0000139Csd00000017* - ID_PRODUCT_FROM_DATABASE=Raven - -pci:v0000121Ad00000003sv000014AFsd00000002* - ID_PRODUCT_FROM_DATABASE=Maxi Gamer Phoenix - -pci:v0000121Ad00000004* - ID_PRODUCT_FROM_DATABASE=Voodoo Banshee [Velocity 100] - -pci:v0000121Ad00000005* - ID_PRODUCT_FROM_DATABASE=Voodoo 3 - -pci:v0000121Ad00000005sv0000121Asd00000004* - ID_PRODUCT_FROM_DATABASE=Voodoo3 AGP - -pci:v0000121Ad00000005sv0000121Asd00000030* - ID_PRODUCT_FROM_DATABASE=Voodoo3 AGP - -pci:v0000121Ad00000005sv0000121Asd00000031* - ID_PRODUCT_FROM_DATABASE=Voodoo3 AGP - -pci:v0000121Ad00000005sv0000121Asd00000034* - ID_PRODUCT_FROM_DATABASE=Voodoo3 AGP - -pci:v0000121Ad00000005sv0000121Asd00000036* - ID_PRODUCT_FROM_DATABASE=Voodoo3 2000 PCI - -pci:v0000121Ad00000005sv0000121Asd00000037* - ID_PRODUCT_FROM_DATABASE=Voodoo3 AGP - -pci:v0000121Ad00000005sv0000121Asd00000038* - ID_PRODUCT_FROM_DATABASE=Voodoo3 AGP - -pci:v0000121Ad00000005sv0000121Asd0000003A* - ID_PRODUCT_FROM_DATABASE=Voodoo3 AGP - -pci:v0000121Ad00000005sv0000121Asd00000044* - ID_PRODUCT_FROM_DATABASE=Voodoo3 - -pci:v0000121Ad00000005sv0000121Asd0000004B* - ID_PRODUCT_FROM_DATABASE=Velocity 100 - -pci:v0000121Ad00000005sv0000121Asd0000004C* - ID_PRODUCT_FROM_DATABASE=Velocity 200 - -pci:v0000121Ad00000005sv0000121Asd0000004D* - ID_PRODUCT_FROM_DATABASE=Voodoo3 AGP - -pci:v0000121Ad00000005sv0000121Asd0000004E* - ID_PRODUCT_FROM_DATABASE=Voodoo3 AGP - -pci:v0000121Ad00000005sv0000121Asd00000051* - ID_PRODUCT_FROM_DATABASE=Voodoo3 AGP - -pci:v0000121Ad00000005sv0000121Asd00000052* - ID_PRODUCT_FROM_DATABASE=Voodoo3 AGP - -pci:v0000121Ad00000005sv0000121Asd00000057* - ID_PRODUCT_FROM_DATABASE=Voodoo3 3000 PCI - -pci:v0000121Ad00000005sv0000121Asd00000060* - ID_PRODUCT_FROM_DATABASE=Voodoo3 3500 TV (NTSC) - -pci:v0000121Ad00000005sv0000121Asd00000061* - ID_PRODUCT_FROM_DATABASE=Voodoo3 3500 TV (PAL) - -pci:v0000121Ad00000005sv0000121Asd00000062* - ID_PRODUCT_FROM_DATABASE=Voodoo3 3500 TV (SECAM) - -pci:v0000121Ad00000009* - ID_PRODUCT_FROM_DATABASE=Voodoo 4 / Voodoo 5 - -pci:v0000121Ad00000009sv0000121Asd00000003* - ID_PRODUCT_FROM_DATABASE=Voodoo5 PCI 5500 - -pci:v0000121Ad00000009sv0000121Asd00000009* - ID_PRODUCT_FROM_DATABASE=Voodoo5 AGP 5500/6000 - -pci:v0000121Ad00000057* - ID_PRODUCT_FROM_DATABASE=Voodoo 3/3000 [Avenger] - -pci:v0000121B* - ID_VENDOR_FROM_DATABASE=Advanced Telecommunications Modules - -pci:v0000121C* - ID_VENDOR_FROM_DATABASE=Nippon Texaco., Ltd - -pci:v0000121D* - ID_VENDOR_FROM_DATABASE=LiPPERT ADLINK Technology GmbH - -pci:v0000121E* - ID_VENDOR_FROM_DATABASE=CSPI - -pci:v0000121Ed00000201* - ID_PRODUCT_FROM_DATABASE=Myrinet 2000 Scalable Cluster Interconnect - -pci:v0000121F* - ID_VENDOR_FROM_DATABASE=Arcus Technology, Inc. - -pci:v00001220* - ID_VENDOR_FROM_DATABASE=Ariel Corporation - -pci:v00001220d00001220* - ID_PRODUCT_FROM_DATABASE=AMCC 5933 TMS320C80 DSP/Imaging board - -pci:v00001221* - ID_VENDOR_FROM_DATABASE=Contec Co., Ltd - -pci:v00001221d00009172* - ID_PRODUCT_FROM_DATABASE=PO-64L(PCI)H [Isolated Digital Output Board for PCI] - -pci:v00001221d000091A2* - ID_PRODUCT_FROM_DATABASE=PO-32L(PCI)H [Isolated Digital Output Board for PCI] - -pci:v00001221d000091C3* - ID_PRODUCT_FROM_DATABASE=DA16-16(LPCI)L [Un-insulated highly precise analog output board for Low Profile PCI] - -pci:v00001221d0000B152* - ID_PRODUCT_FROM_DATABASE=DIO-96D2-LPCI - -pci:v00001221d0000C103* - ID_PRODUCT_FROM_DATABASE=ADA16-32/2(PCI)F [High-Speed Analog I/O Board for PCI] - -pci:v00001222* - ID_VENDOR_FROM_DATABASE=Ancor Communications, Inc. - -pci:v00001223* - ID_VENDOR_FROM_DATABASE=Artesyn Communication Products - -pci:v00001223d00000003* - ID_PRODUCT_FROM_DATABASE=PM/Link - -pci:v00001223d00000004* - ID_PRODUCT_FROM_DATABASE=PM/T1 - -pci:v00001223d00000005* - ID_PRODUCT_FROM_DATABASE=PM/E1 - -pci:v00001223d00000008* - ID_PRODUCT_FROM_DATABASE=PM/SLS - -pci:v00001223d00000009* - ID_PRODUCT_FROM_DATABASE=BajaSpan Resource Target - -pci:v00001223d0000000A* - ID_PRODUCT_FROM_DATABASE=BajaSpan Section 0 - -pci:v00001223d0000000B* - ID_PRODUCT_FROM_DATABASE=BajaSpan Section 1 - -pci:v00001223d0000000C* - ID_PRODUCT_FROM_DATABASE=BajaSpan Section 2 - -pci:v00001223d0000000D* - ID_PRODUCT_FROM_DATABASE=BajaSpan Section 3 - -pci:v00001223d0000000E* - ID_PRODUCT_FROM_DATABASE=PM/PPC - -pci:v00001224* - ID_VENDOR_FROM_DATABASE=Interactive Images - -pci:v00001225* - ID_VENDOR_FROM_DATABASE=Power I/O, Inc. - -pci:v00001227* - ID_VENDOR_FROM_DATABASE=Tech-Source - -pci:v00001227d00000006* - ID_PRODUCT_FROM_DATABASE=Raptor GFX 8P - -pci:v00001227d00000023* - ID_PRODUCT_FROM_DATABASE=Raptor GFX [1100T] - -pci:v00001227d00000045* - ID_PRODUCT_FROM_DATABASE=Raptor 4000-L [Linux version] - -pci:v00001227d0000004A* - ID_PRODUCT_FROM_DATABASE=Raptor 4000-LR-L [Linux version] - -pci:v00001228* - ID_VENDOR_FROM_DATABASE=Norsk Elektro Optikk A/S - -pci:v00001229* - ID_VENDOR_FROM_DATABASE=Data Kinesis Inc. - -pci:v0000122A* - ID_VENDOR_FROM_DATABASE=Integrated Telecom - -pci:v0000122B* - ID_VENDOR_FROM_DATABASE=LG Industrial Systems Co., Ltd - -pci:v0000122C* - ID_VENDOR_FROM_DATABASE=Sican GmbH - -pci:v0000122D* - ID_VENDOR_FROM_DATABASE=Aztech System Ltd - -pci:v0000122Dd00001206* - ID_PRODUCT_FROM_DATABASE=368DSP - -pci:v0000122Dd00001400* - ID_PRODUCT_FROM_DATABASE=Trident PCI288-Q3DII (NX) - -pci:v0000122Dd000050DC* - ID_PRODUCT_FROM_DATABASE=3328 Audio - -pci:v0000122Dd000050DCsv0000122Dsd00000001* - ID_PRODUCT_FROM_DATABASE=3328 Audio - -pci:v0000122Dd000080DA* - ID_PRODUCT_FROM_DATABASE=3328 Audio - -pci:v0000122Dd000080DAsv0000122Dsd00000001* - ID_PRODUCT_FROM_DATABASE=3328 Audio - -pci:v0000122E* - ID_VENDOR_FROM_DATABASE=Xyratex - -pci:v0000122Ed00007722* - ID_PRODUCT_FROM_DATABASE=Napatech XL1 - -pci:v0000122Ed00007724* - ID_PRODUCT_FROM_DATABASE=Napatech XL2/XA - -pci:v0000122Ed00007729* - ID_PRODUCT_FROM_DATABASE=Napatech XD - -pci:v0000122F* - ID_VENDOR_FROM_DATABASE=Andrew Corporation - -pci:v00001230* - ID_VENDOR_FROM_DATABASE=Fishcamp Engineering - -pci:v00001231* - ID_VENDOR_FROM_DATABASE=Woodward McCoach, Inc. - -pci:v00001231d000004E1* - ID_PRODUCT_FROM_DATABASE=Desktop PCI Telephony 4 - -pci:v00001231d000005E1* - ID_PRODUCT_FROM_DATABASE=Desktop PCI Telephony 5/6 - -pci:v00001231d00000D00* - ID_PRODUCT_FROM_DATABASE=LightParser - -pci:v00001231d00000D02* - ID_PRODUCT_FROM_DATABASE=LightParser 2 - -pci:v00001231d00000D13* - ID_PRODUCT_FROM_DATABASE=Desktop PCI L1/L3 Telephony - -pci:v00001232* - ID_VENDOR_FROM_DATABASE=GPT Limited - -pci:v00001233* - ID_VENDOR_FROM_DATABASE=Bus-Tech, Inc. - -pci:v00001235* - ID_VENDOR_FROM_DATABASE=Risq Modular Systems, Inc. - -pci:v00001236* - ID_VENDOR_FROM_DATABASE=Sigma Designs Corporation - -pci:v00001236d00000000* - ID_PRODUCT_FROM_DATABASE=RealMagic64/GX - -pci:v00001236d00006401* - ID_PRODUCT_FROM_DATABASE=REALmagic 64/GX (SD 6425) - -pci:v00001237* - ID_VENDOR_FROM_DATABASE=Alta Technology Corporation - -pci:v00001238* - ID_VENDOR_FROM_DATABASE=Adtran - -pci:v00001239* - ID_VENDOR_FROM_DATABASE=3DO Company - -pci:v0000123A* - ID_VENDOR_FROM_DATABASE=Visicom Laboratories, Inc. - -pci:v0000123B* - ID_VENDOR_FROM_DATABASE=Seeq Technology, Inc. - -pci:v0000123C* - ID_VENDOR_FROM_DATABASE=Century Systems, Inc. - -pci:v0000123D* - ID_VENDOR_FROM_DATABASE=Engineering Design Team, Inc. - -pci:v0000123Dd00000000* - ID_PRODUCT_FROM_DATABASE=EasyConnect 8/32 - -pci:v0000123Dd00000002* - ID_PRODUCT_FROM_DATABASE=EasyConnect 8/64 - -pci:v0000123Dd00000003* - ID_PRODUCT_FROM_DATABASE=EasyIO - -pci:v0000123E* - ID_VENDOR_FROM_DATABASE=Simutech, Inc. - -pci:v0000123F* - ID_VENDOR_FROM_DATABASE=C-Cube Microsystems - -pci:v0000123Fd000000E4* - ID_PRODUCT_FROM_DATABASE=MPEG - -pci:v0000123Fd00008120* - ID_PRODUCT_FROM_DATABASE=E4? - -pci:v0000123Fd00008120sv000011BDsd00000006* - ID_PRODUCT_FROM_DATABASE=DV500 E4 - -pci:v0000123Fd00008120sv000011BDsd0000000A* - ID_PRODUCT_FROM_DATABASE=DV500 E4 - -pci:v0000123Fd00008120sv000011BDsd0000000F* - ID_PRODUCT_FROM_DATABASE=DV500 E4 - -pci:v0000123Fd00008120sv00001809sd00000016* - ID_PRODUCT_FROM_DATABASE=Emuzed MAUI-III PCI PVR FM TV - -pci:v0000123Fd00008888* - ID_PRODUCT_FROM_DATABASE=Cinemaster C 3.0 DVD Decoder - -pci:v0000123Fd00008888sv00001002sd00000001* - ID_PRODUCT_FROM_DATABASE=Cinemaster C 3.0 DVD Decoder - -pci:v0000123Fd00008888sv00001002sd00000002* - ID_PRODUCT_FROM_DATABASE=Cinemaster C 3.0 DVD Decoder - -pci:v0000123Fd00008888sv00001328sd00000001* - ID_PRODUCT_FROM_DATABASE=Cinemaster C 3.0 DVD Decoder - -pci:v00001240* - ID_VENDOR_FROM_DATABASE=Marathon Technologies Corp. - -pci:v00001241* - ID_VENDOR_FROM_DATABASE=DSC Communications - -pci:v00001242* - ID_VENDOR_FROM_DATABASE=JNI Corporation - -pci:v00001242d00001560* - ID_PRODUCT_FROM_DATABASE=JNIC-1560 PCI-X Fibre Channel Controller - -pci:v00001242d00001560sv00001242sd00006562* - ID_PRODUCT_FROM_DATABASE=FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter - -pci:v00001242d00001560sv00001242sd0000656A* - ID_PRODUCT_FROM_DATABASE=FCX-6562 PCI-X Fibre Channel Adapter - -pci:v00001242d00004643* - ID_PRODUCT_FROM_DATABASE=FCI-1063 Fibre Channel Adapter - -pci:v00001242d00006562* - ID_PRODUCT_FROM_DATABASE=FCX2-6562 Dual Channel PCI-X Fibre Channel Adapter - -pci:v00001242d0000656A* - ID_PRODUCT_FROM_DATABASE=FCX-6562 PCI-X Fibre Channel Adapter - -pci:v00001243* - ID_VENDOR_FROM_DATABASE=Delphax - -pci:v00001244* - ID_VENDOR_FROM_DATABASE=AVM GmbH - -pci:v00001244d00000700* - ID_PRODUCT_FROM_DATABASE=B1 ISDN - -pci:v00001244d00000800* - ID_PRODUCT_FROM_DATABASE=C4 ISDN - -pci:v00001244d00000A00* - ID_PRODUCT_FROM_DATABASE=A1 ISDN [Fritz] - -pci:v00001244d00000A00sv00001244sd00000A00* - ID_PRODUCT_FROM_DATABASE=FRITZ!Card ISDN Controller - -pci:v00001244d00000E00* - ID_PRODUCT_FROM_DATABASE=Fritz!PCI v2.0 ISDN - -pci:v00001244d00001100* - ID_PRODUCT_FROM_DATABASE=C2 ISDN - -pci:v00001244d00001200* - ID_PRODUCT_FROM_DATABASE=T1 ISDN - -pci:v00001244d00002700* - ID_PRODUCT_FROM_DATABASE=Fritz!Card DSL SL - -pci:v00001244d00002900* - ID_PRODUCT_FROM_DATABASE=Fritz!Card DSL v2.0 - -pci:v00001245* - ID_VENDOR_FROM_DATABASE=A.P.D., S.A. - -pci:v00001246* - ID_VENDOR_FROM_DATABASE=Dipix Technologies, Inc. - -pci:v00001247* - ID_VENDOR_FROM_DATABASE=Xylon Research, Inc. - -pci:v00001248* - ID_VENDOR_FROM_DATABASE=Central Data Corporation - -pci:v00001249* - ID_VENDOR_FROM_DATABASE=Samsung Electronics Co., Ltd. - -pci:v0000124A* - ID_VENDOR_FROM_DATABASE=AEG Electrocom GmbH - -pci:v0000124B* - ID_VENDOR_FROM_DATABASE=SBS/Greenspring Modular I/O - -pci:v0000124Bd00000040* - ID_PRODUCT_FROM_DATABASE=PCI-40A or cPCI-200 Quad IndustryPack carrier - -pci:v0000124Bd00000040sv0000124Bsd00009080* - ID_PRODUCT_FROM_DATABASE=PCI9080 Bridge - -pci:v0000124C* - ID_VENDOR_FROM_DATABASE=Solitron Technologies, Inc. - -pci:v0000124D* - ID_VENDOR_FROM_DATABASE=Stallion Technologies, Inc. - -pci:v0000124Dd00000000* - ID_PRODUCT_FROM_DATABASE=EasyConnection 8/32 - -pci:v0000124Dd00000002* - ID_PRODUCT_FROM_DATABASE=EasyConnection 8/64 - -pci:v0000124Dd00000003* - ID_PRODUCT_FROM_DATABASE=EasyIO - -pci:v0000124Dd00000004* - ID_PRODUCT_FROM_DATABASE=EasyConnection/RA - -pci:v0000124E* - ID_VENDOR_FROM_DATABASE=Cylink - -pci:v0000124F* - ID_VENDOR_FROM_DATABASE=Infortrend Technology, Inc. - -pci:v0000124Fd00000041* - ID_PRODUCT_FROM_DATABASE=IFT-2000 Series RAID Controller - -pci:v00001250* - ID_VENDOR_FROM_DATABASE=Hitachi Microcomputer System Ltd - -pci:v00001251* - ID_VENDOR_FROM_DATABASE=VLSI Solutions Oy - -pci:v00001253* - ID_VENDOR_FROM_DATABASE=Guzik Technical Enterprises - -pci:v00001254* - ID_VENDOR_FROM_DATABASE=Linear Systems Ltd. - -pci:v00001254d00000065* - ID_PRODUCT_FROM_DATABASE=DVB Master FD - -pci:v00001254d0000007C* - ID_PRODUCT_FROM_DATABASE=DVB Master Quad/o - -pci:v00001255* - ID_VENDOR_FROM_DATABASE=Optibase Ltd - -pci:v00001255d00001110* - ID_PRODUCT_FROM_DATABASE=MPEG Forge - -pci:v00001255d00001210* - ID_PRODUCT_FROM_DATABASE=MPEG Fusion - -pci:v00001255d00002110* - ID_PRODUCT_FROM_DATABASE=VideoPlex - -pci:v00001255d00002120* - ID_PRODUCT_FROM_DATABASE=VideoPlex CC - -pci:v00001255d00002130* - ID_PRODUCT_FROM_DATABASE=VideoQuest - -pci:v00001256* - ID_VENDOR_FROM_DATABASE=Perceptive Solutions, Inc. - -pci:v00001256d00004201* - ID_PRODUCT_FROM_DATABASE=PCI-2220I - -pci:v00001256d00004401* - ID_PRODUCT_FROM_DATABASE=PCI-2240I - -pci:v00001256d00005201* - ID_PRODUCT_FROM_DATABASE=PCI-2000 - -pci:v00001257* - ID_VENDOR_FROM_DATABASE=Vertex Networks, Inc. - -pci:v00001258* - ID_VENDOR_FROM_DATABASE=Gilbarco, Inc. - -pci:v00001259* - ID_VENDOR_FROM_DATABASE=Allied Telesis - -pci:v00001259d00002560* - ID_PRODUCT_FROM_DATABASE=AT-2560 Fast Ethernet Adapter (i82557B) - -pci:v00001259d00002801* - ID_PRODUCT_FROM_DATABASE=AT-2801FX (RTL-8139) - -pci:v00001259d0000A117* - ID_PRODUCT_FROM_DATABASE=RTL81xx Fast Ethernet - -pci:v00001259d0000A11E* - ID_PRODUCT_FROM_DATABASE=RTL81xx Fast Ethernet - -pci:v00001259d0000A120* - ID_PRODUCT_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet - -pci:v0000125A* - ID_VENDOR_FROM_DATABASE=ABB Power Systems - -pci:v0000125B* - ID_VENDOR_FROM_DATABASE=Asix Electronics Corporation - -pci:v0000125Bd00001400* - ID_PRODUCT_FROM_DATABASE=AX88141 Fast Ethernet Controller - -pci:v0000125Bd00001400sv00001186sd00001100* - ID_PRODUCT_FROM_DATABASE=AX8814X Based PCI Fast Ethernet Adapter - -pci:v0000125C* - ID_VENDOR_FROM_DATABASE=Aurora Technologies, Inc. - -pci:v0000125Cd00000101* - ID_PRODUCT_FROM_DATABASE=Saturn 4520P - -pci:v0000125Cd00000640* - ID_PRODUCT_FROM_DATABASE=Aries 16000P - -pci:v0000125D* - ID_VENDOR_FROM_DATABASE=ESS Technology - -pci:v0000125Dd00000000* - ID_PRODUCT_FROM_DATABASE=ES336H Fax Modem (Early Model) - -pci:v0000125Dd00001948* - ID_PRODUCT_FROM_DATABASE=ES1948 Maestro-1 - -pci:v0000125Dd00001968* - ID_PRODUCT_FROM_DATABASE=ES1968 Maestro 2 - -pci:v0000125Dd00001968sv00001028sd00000085* - ID_PRODUCT_FROM_DATABASE=ES1968 Maestro-2 PCI - -pci:v0000125Dd00001968sv00001033sd00008051* - ID_PRODUCT_FROM_DATABASE=ES1968 Maestro-2 Audiodrive - -pci:v0000125Dd00001969* - ID_PRODUCT_FROM_DATABASE=ES1938/ES1946/ES1969 Solo-1 Audiodrive - -pci:v0000125Dd00001969sv00001014sd00000166* - ID_PRODUCT_FROM_DATABASE=ES1969 SOLO-1 AudioDrive on IBM Aptiva Mainboard - -pci:v0000125Dd00001969sv0000125Dsd00008888* - ID_PRODUCT_FROM_DATABASE=Solo-1 Audio Adapter - -pci:v0000125Dd00001969sv0000153Bsd0000111B* - ID_PRODUCT_FROM_DATABASE=Terratec 128i PCI - -pci:v0000125Dd00001978* - ID_PRODUCT_FROM_DATABASE=ES1978 Maestro 2E - -pci:v0000125Dd00001978sv00000E11sd0000B112* - ID_PRODUCT_FROM_DATABASE=Armada M700/E500 - -pci:v0000125Dd00001978sv00001033sd0000803C* - ID_PRODUCT_FROM_DATABASE=ES1978 Maestro-2E Audiodrive - -pci:v0000125Dd00001978sv00001033sd00008058* - ID_PRODUCT_FROM_DATABASE=ES1978 Maestro-2E Audiodrive - -pci:v0000125Dd00001978sv00001092sd00004000* - ID_PRODUCT_FROM_DATABASE=Monster Sound MX400 - -pci:v0000125Dd00001978sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=ES1978 Maestro-2E Audiodrive - -pci:v0000125Dd00001988* - ID_PRODUCT_FROM_DATABASE=ES1988 Allegro-1 - -pci:v0000125Dd00001988sv00000E11sd00000098* - ID_PRODUCT_FROM_DATABASE=Evo N600c - -pci:v0000125Dd00001988sv00001092sd00004100* - ID_PRODUCT_FROM_DATABASE=Sonic Impact S100 - -pci:v0000125Dd00001988sv0000125Dsd00000431* - ID_PRODUCT_FROM_DATABASE=Allegro AudioDrive - -pci:v0000125Dd00001988sv0000125Dsd00001988* - ID_PRODUCT_FROM_DATABASE=ESS Allegro-1 Audiodrive - -pci:v0000125Dd00001988sv0000125Dsd00001998* - ID_PRODUCT_FROM_DATABASE=Allegro AudioDrive - -pci:v0000125Dd00001988sv0000125Dsd00001999* - ID_PRODUCT_FROM_DATABASE=Allegro-1 AudioDrive - -pci:v0000125Dd00001989* - ID_PRODUCT_FROM_DATABASE=ESS Modem - -pci:v0000125Dd00001989sv0000125Dsd00001989* - ID_PRODUCT_FROM_DATABASE=ESS Modem - -pci:v0000125Dd00001998* - ID_PRODUCT_FROM_DATABASE=ES1983S Maestro-3i PCI Audio Accelerator - -pci:v0000125Dd00001998sv00001028sd000000B1* - ID_PRODUCT_FROM_DATABASE=Latitude C600 - -pci:v0000125Dd00001998sv00001028sd000000E5* - ID_PRODUCT_FROM_DATABASE=Latitude C810 - -pci:v0000125Dd00001998sv00001028sd000000E6* - ID_PRODUCT_FROM_DATABASE=ES1983S Maestro-3i (Dell Inspiron 8100) - -pci:v0000125Dd00001999* - ID_PRODUCT_FROM_DATABASE=ES1983S Maestro-3i PCI Modem Accelerator - -pci:v0000125Dd0000199A* - ID_PRODUCT_FROM_DATABASE=ES1983S Maestro-3i PCI Audio Accelerator - -pci:v0000125Dd0000199B* - ID_PRODUCT_FROM_DATABASE=ES1983S Maestro-3i PCI Modem Accelerator - -pci:v0000125Dd00002808* - ID_PRODUCT_FROM_DATABASE=ES336H Fax Modem (Later Model) - -pci:v0000125Dd00002838* - ID_PRODUCT_FROM_DATABASE=ES2838/2839 SuperLink Modem - -pci:v0000125Dd00002898* - ID_PRODUCT_FROM_DATABASE=ES2898 Modem - -pci:v0000125Dd00002898sv0000125Dsd00000424* - ID_PRODUCT_FROM_DATABASE=ES56-PI Data Fax Modem - -pci:v0000125Dd00002898sv0000125Dsd00000425* - ID_PRODUCT_FROM_DATABASE=ES56T-PI Data Fax Modem - -pci:v0000125Dd00002898sv0000125Dsd00000426* - ID_PRODUCT_FROM_DATABASE=ES56V-PI Data Fax Modem - -pci:v0000125Dd00002898sv0000125Dsd00000427* - ID_PRODUCT_FROM_DATABASE=VW-PI Data Fax Modem - -pci:v0000125Dd00002898sv0000125Dsd00000428* - ID_PRODUCT_FROM_DATABASE=ES56ST-PI Data Fax Modem - -pci:v0000125Dd00002898sv0000125Dsd00000429* - ID_PRODUCT_FROM_DATABASE=ES56SV-PI Data Fax Modem - -pci:v0000125Dd00002898sv0000147Asd0000C001* - ID_PRODUCT_FROM_DATABASE=ES56-PI Data Fax Modem - -pci:v0000125Dd00002898sv0000148Dsd00001030* - ID_PRODUCT_FROM_DATABASE=HCF WV-PI56 [ESS ES56-PI Data Fax Modem] - -pci:v0000125Dd00002898sv000014FEsd00000428* - ID_PRODUCT_FROM_DATABASE=ES56-PI Data Fax Modem - -pci:v0000125Dd00002898sv000014FEsd00000429* - ID_PRODUCT_FROM_DATABASE=ES56-PI Data Fax Modem - -pci:v0000125E* - ID_VENDOR_FROM_DATABASE=Specialvideo Engineering SRL - -pci:v0000125F* - ID_VENDOR_FROM_DATABASE=Concurrent Technologies, Inc. - -pci:v00001260* - ID_VENDOR_FROM_DATABASE=Intersil Corporation - -pci:v00001260d00003872* - ID_PRODUCT_FROM_DATABASE=ISL3872 [Prism 3] - -pci:v00001260d00003872sv00001468sd00000202* - ID_PRODUCT_FROM_DATABASE=LAN-Express IEEE 802.11b Wireless LAN - -pci:v00001260d00003873* - ID_PRODUCT_FROM_DATABASE=ISL3874 [Prism 2.5]/ISL3872 [Prism 3] - -pci:v00001260d00003873sv000010CFsd00001169* - ID_PRODUCT_FROM_DATABASE=MBH7WM01-8734 802.11b Wireless Mini PCI Card [ISL3874] - -pci:v00001260d00003873sv00001186sd00003501* - ID_PRODUCT_FROM_DATABASE=DWL-520 Wireless PCI Adapter (rev A or B) [ISL3874] - -pci:v00001260d00003873sv00001186sd00003700* - ID_PRODUCT_FROM_DATABASE=DWL-520 Wireless PCI Adapter (rev E1) [ISL3872] - -pci:v00001260d00003873sv00001385sd00004105* - ID_PRODUCT_FROM_DATABASE=MA311 802.11b wireless adapter [ISL3874] - -pci:v00001260d00003873sv00001668sd00000414* - ID_PRODUCT_FROM_DATABASE=HWP01170-01 802.11b PCI Wireless Adapter - -pci:v00001260d00003873sv000016A5sd00001601* - ID_PRODUCT_FROM_DATABASE=AIR.mate PC-400 PCI Wireless LAN Adapter - -pci:v00001260d00003873sv00001737sd00003874* - ID_PRODUCT_FROM_DATABASE=WMP11 v1 802.11b Wireless-B PCI Adapter [ISL3874] - -pci:v00001260d00003873sv00004033sd00007033* - ID_PRODUCT_FROM_DATABASE=PCW200 802.11b Wireless PCI Adapter [ISL3874] - -pci:v00001260d00003873sv00008086sd00002510* - ID_PRODUCT_FROM_DATABASE=M3AWEB Wireless 802.11b MiniPCI Adapter - -pci:v00001260d00003873sv00008086sd00002513* - ID_PRODUCT_FROM_DATABASE=Wireless 802.11b MiniPCI Adapter - -pci:v00001260d00003877* - ID_PRODUCT_FROM_DATABASE=ISL3877 [Prism Indigo] - -pci:v00001260d00003886* - ID_PRODUCT_FROM_DATABASE=ISL3886 [Prism Javelin/Prism Xbow] - -pci:v00001260d00003886sv000017CFsd00000037* - ID_PRODUCT_FROM_DATABASE=XG-901 and clones Wireless Adapter - -pci:v00001260d00003890* - ID_PRODUCT_FROM_DATABASE=ISL3890 [Prism GT/Prism Duette]/ISL3886 [Prism Javelin/Prism Xbow] - -pci:v00001260d00003890sv000010B8sd00002802* - ID_PRODUCT_FROM_DATABASE=SMC2802W V1 Wireless PCI Adapter [ISL3890] - -pci:v00001260d00003890sv000010B8sd00002835* - ID_PRODUCT_FROM_DATABASE=SMC2835W Wireless Cardbus Adapter - -pci:v00001260d00003890sv000010B8sd0000A835* - ID_PRODUCT_FROM_DATABASE=SMC2835W V2 Wireless Cardbus Adapter - -pci:v00001260d00003890sv00001113sd00004203* - ID_PRODUCT_FROM_DATABASE=WN4201B - -pci:v00001260d00003890sv00001113sd00008201* - ID_PRODUCT_FROM_DATABASE=T-Com T-Sinus 154pcicard Wireless PCI Adapter - -pci:v00001260d00003890sv00001113sd0000B301* - ID_PRODUCT_FROM_DATABASE=T-Sinus 154card Cardbus - -pci:v00001260d00003890sv00001113sd0000EE03* - ID_PRODUCT_FROM_DATABASE=SMC2802W V2 Wireless PCI Adapter [ISL3886] - -pci:v00001260d00003890sv00001113sd0000EE08* - ID_PRODUCT_FROM_DATABASE=SMC2835W V3 EU Wireless Cardbus Adapter - -pci:v00001260d00003890sv00001186sd00003202* - ID_PRODUCT_FROM_DATABASE=DWL-G650 A1 Wireless Adapter - -pci:v00001260d00003890sv00001259sd0000C104* - ID_PRODUCT_FROM_DATABASE=CG-WLCB54GT Wireless Adapter - -pci:v00001260d00003890sv00001260sd00000000* - ID_PRODUCT_FROM_DATABASE=WG511 v1 54 Mbps Wireless PC Card - -pci:v00001260d00003890sv00001385sd00004800* - ID_PRODUCT_FROM_DATABASE=WG511 v2/v3 54 Mbps Wireless PC Card - -pci:v00001260d00003890sv000016A5sd00001605* - ID_PRODUCT_FROM_DATABASE=ALLNET ALL0271 Wireless PCI Adapter - -pci:v00001260d00003890sv000017CFsd00000014* - ID_PRODUCT_FROM_DATABASE=XG-600 and clones Wireless Adapter - -pci:v00001260d00003890sv000017CFsd00000020* - ID_PRODUCT_FROM_DATABASE=XG-900 and clones Wireless Adapter - -pci:v00001260d00003890sv0000187Esd00003403* - ID_PRODUCT_FROM_DATABASE=G-110 802.11g Wireless Cardbus Adapter - -pci:v00001260d00008130* - ID_PRODUCT_FROM_DATABASE=HMP8130 NTSC/PAL Video Decoder - -pci:v00001260d00008131* - ID_PRODUCT_FROM_DATABASE=HMP8131 NTSC/PAL Video Decoder - -pci:v00001260d0000FFFF* - ID_PRODUCT_FROM_DATABASE=ISL3886IK - -pci:v00001260d0000FFFFsv00001260sd00000000* - ID_PRODUCT_FROM_DATABASE=Senao 3054MP+ (J) mini-PCI WLAN 802.11g adapter - -pci:v00001261* - ID_VENDOR_FROM_DATABASE=Matsushita-Kotobuki Electronics Industries, Ltd. - -pci:v00001262* - ID_VENDOR_FROM_DATABASE=ES Computer Company, Ltd. - -pci:v00001263* - ID_VENDOR_FROM_DATABASE=Sonic Solutions - -pci:v00001264* - ID_VENDOR_FROM_DATABASE=Aval Nagasaki Corporation - -pci:v00001265* - ID_VENDOR_FROM_DATABASE=Casio Computer Co., Ltd. - -pci:v00001266* - ID_VENDOR_FROM_DATABASE=Microdyne Corporation - -pci:v00001266d00000001* - ID_PRODUCT_FROM_DATABASE=NE10/100 Adapter (i82557B) - -pci:v00001266d00001910* - ID_PRODUCT_FROM_DATABASE=NE2000Plus (RT8029) Ethernet Adapter - -pci:v00001266d00001910sv00001266sd00001910* - ID_PRODUCT_FROM_DATABASE=NE2000Plus Ethernet Adapter - -pci:v00001267* - ID_VENDOR_FROM_DATABASE=S. A. Telecommunications - -pci:v00001267d00005352* - ID_PRODUCT_FROM_DATABASE=PCR2101 - -pci:v00001267d00005A4B* - ID_PRODUCT_FROM_DATABASE=Telsat Turbo - -pci:v00001268* - ID_VENDOR_FROM_DATABASE=Tektronix - -pci:v00001269* - ID_VENDOR_FROM_DATABASE=Thomson-CSF/TTM - -pci:v0000126A* - ID_VENDOR_FROM_DATABASE=Lexmark International, Inc. - -pci:v0000126B* - ID_VENDOR_FROM_DATABASE=Adax, Inc. - -pci:v0000126C* - ID_VENDOR_FROM_DATABASE=Northern Telecom - -pci:v0000126Cd00001211* - ID_PRODUCT_FROM_DATABASE=10/100BaseTX [RTL81xx] - -pci:v0000126Cd0000126C* - ID_PRODUCT_FROM_DATABASE=802.11b Wireless Ethernet Adapter - -pci:v0000126D* - ID_VENDOR_FROM_DATABASE=Splash Technology, Inc. - -pci:v0000126E* - ID_VENDOR_FROM_DATABASE=Sumitomo Metal Industries, Ltd. - -pci:v0000126F* - ID_VENDOR_FROM_DATABASE=Silicon Motion, Inc. - -pci:v0000126Fd00000501* - ID_PRODUCT_FROM_DATABASE=SM501 VoyagerGX Rev. AA - -pci:v0000126Fd00000510* - ID_PRODUCT_FROM_DATABASE=SM501 VoyagerGX Rev. B - -pci:v0000126Fd00000710* - ID_PRODUCT_FROM_DATABASE=SM710 LynxEM - -pci:v0000126Fd00000712* - ID_PRODUCT_FROM_DATABASE=SM712 LynxEM+ - -pci:v0000126Fd00000720* - ID_PRODUCT_FROM_DATABASE=SM720 Lynx3DM - -pci:v0000126Fd00000730* - ID_PRODUCT_FROM_DATABASE=SM731 Cougar3DR - -pci:v0000126Fd00000810* - ID_PRODUCT_FROM_DATABASE=SM810 LynxE - -pci:v0000126Fd00000811* - ID_PRODUCT_FROM_DATABASE=SM811 LynxE - -pci:v0000126Fd00000820* - ID_PRODUCT_FROM_DATABASE=SM820 Lynx3D - -pci:v0000126Fd00000910* - ID_PRODUCT_FROM_DATABASE=SM910 - -pci:v00001270* - ID_VENDOR_FROM_DATABASE=Olympus Optical Co., Ltd. - -pci:v00001271* - ID_VENDOR_FROM_DATABASE=GW Instruments - -pci:v00001272* - ID_VENDOR_FROM_DATABASE=Telematics International - -pci:v00001273* - ID_VENDOR_FROM_DATABASE=Hughes Network Systems - -pci:v00001273d00000002* - ID_PRODUCT_FROM_DATABASE=DirecPC - -pci:v00001274* - ID_VENDOR_FROM_DATABASE=Ensoniq - -pci:v00001274d00001171* - ID_PRODUCT_FROM_DATABASE=ES1373 [AudioPCI] (also Creative Labs CT5803) - -pci:v00001274d00001371* - ID_PRODUCT_FROM_DATABASE=ES1371 [AudioPCI-97] - -pci:v00001274d00001371sv00000E11sd00000024* - ID_PRODUCT_FROM_DATABASE=AudioPCI on Motherboard Compaq Deskpro - -pci:v00001274d00001371sv00000E11sd0000B1A7* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI - -pci:v00001274d00001371sv00001033sd000080AC* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI - -pci:v00001274d00001371sv00001042sd00001854* - ID_PRODUCT_FROM_DATABASE=Tazer - -pci:v00001274d00001371sv0000107Bsd00008054* - ID_PRODUCT_FROM_DATABASE=Tabor2 - -pci:v00001274d00001371sv00001274sd00001371* - ID_PRODUCT_FROM_DATABASE=Creative Sound Blaster AudioPCI64V, AudioPCI128 - -pci:v00001274d00001371sv00001274sd00008001* - ID_PRODUCT_FROM_DATABASE=CT4751 board - -pci:v00001274d00001371sv00001462sd00006470* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6147 1.1A - -pci:v00001274d00001371sv00001462sd00006560* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6156 1.10 - -pci:v00001274d00001371sv00001462sd00006630* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 1.0A - -pci:v00001274d00001371sv00001462sd00006631* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 1.0A - -pci:v00001274d00001371sv00001462sd00006632* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6163BX 2.0A - -pci:v00001274d00001371sv00001462sd00006633* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6163VIA 2.0A - -pci:v00001274d00001371sv00001462sd00006820* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00 - -pci:v00001274d00001371sv00001462sd00006822* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6182 1.00A - -pci:v00001274d00001371sv00001462sd00006830* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6183 1.00 - -pci:v00001274d00001371sv00001462sd00006880* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6188 1.00 - -pci:v00001274d00001371sv00001462sd00006900* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6190 1.00 - -pci:v00001274d00001371sv00001462sd00006910* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6191 - -pci:v00001274d00001371sv00001462sd00006930* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6193 - -pci:v00001274d00001371sv00001462sd00006990* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6199BX 2.0A - -pci:v00001274d00001371sv00001462sd00006991* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MS-6199VIA 2.0A - -pci:v00001274d00001371sv000014A4sd00002077* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KR639 - -pci:v00001274d00001371sv000014A4sd00002105* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MR800 - -pci:v00001274d00001371sv000014A4sd00002107* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard MR801 - -pci:v00001274d00001371sv000014A4sd00002172* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard DR739 - -pci:v00001274d00001371sv00001509sd00009902* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KW11 - -pci:v00001274d00001371sv00001509sd00009903* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KW31 - -pci:v00001274d00001371sv00001509sd00009904* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KA11 - -pci:v00001274d00001371sv00001509sd00009905* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard KC13 - -pci:v00001274d00001371sv0000152Dsd00008801* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard CP810E - -pci:v00001274d00001371sv0000152Dsd00008802* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard CP810 - -pci:v00001274d00001371sv0000152Dsd00008803* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard P3810E - -pci:v00001274d00001371sv0000152Dsd00008804* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard P3810-S - -pci:v00001274d00001371sv0000152Dsd00008805* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard P3820-S - -pci:v00001274d00001371sv0000270Fsd00002001* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6CTR - -pci:v00001274d00001371sv0000270Fsd00002200* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6WTX - -pci:v00001274d00001371sv0000270Fsd00003000* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6WSV - -pci:v00001274d00001371sv0000270Fsd00003100* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6WIV2 - -pci:v00001274d00001371sv0000270Fsd00003102* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6WIV - -pci:v00001274d00001371sv0000270Fsd00007060* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard 6ASA2 - -pci:v00001274d00001371sv00008086sd00004249* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard BI440ZX - -pci:v00001274d00001371sv00008086sd0000424C* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard BL440ZX - -pci:v00001274d00001371sv00008086sd0000425A* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard BZ440ZX - -pci:v00001274d00001371sv00008086sd00004341* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Cayman - -pci:v00001274d00001371sv00008086sd00004343* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Cape Cod - -pci:v00001274d00001371sv00008086sd00004541* - ID_PRODUCT_FROM_DATABASE=D815EEA Motherboard - -pci:v00001274d00001371sv00008086sd00004649* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Fire Island - -pci:v00001274d00001371sv00008086sd0000464A* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard FJ440ZX - -pci:v00001274d00001371sv00008086sd00004D4F* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Montreal - -pci:v00001274d00001371sv00008086sd00004F43* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard OC440LX - -pci:v00001274d00001371sv00008086sd00005243* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard RC440BX - -pci:v00001274d00001371sv00008086sd00005352* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard SunRiver - -pci:v00001274d00001371sv00008086sd00005643* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard Vancouver - -pci:v00001274d00001371sv00008086sd00005753* - ID_PRODUCT_FROM_DATABASE=ES1371, ES1373 AudioPCI On Motherboard WS440BX - -pci:v00001274d00005000* - ID_PRODUCT_FROM_DATABASE=ES1370 [AudioPCI] - -pci:v00001274d00005880* - ID_PRODUCT_FROM_DATABASE=5880B [AudioPCI] - -pci:v00001274d00005880sv00001274sd00002000* - ID_PRODUCT_FROM_DATABASE=Creative Sound Blaster AudioPCI128 - -pci:v00001274d00005880sv00001274sd00002003* - ID_PRODUCT_FROM_DATABASE=Creative SoundBlaster AudioPCI 128 - -pci:v00001274d00005880sv00001274sd00005880* - ID_PRODUCT_FROM_DATABASE=Creative Sound Blaster AudioPCI128 - -pci:v00001274d00005880sv00001274sd00008001* - ID_PRODUCT_FROM_DATABASE=Sound Blaster 16PCI 4.1ch - -pci:v00001274d00005880sv00001458sd0000A000* - ID_PRODUCT_FROM_DATABASE=5880 AudioPCI On Motherboard 6OXET - -pci:v00001274d00005880sv00001462sd00006880* - ID_PRODUCT_FROM_DATABASE=5880 AudioPCI On Motherboard MS-6188 1.00 - -pci:v00001274d00005880sv0000270Fsd00002001* - ID_PRODUCT_FROM_DATABASE=5880 AudioPCI On Motherboard 6CTR - -pci:v00001274d00005880sv0000270Fsd00002200* - ID_PRODUCT_FROM_DATABASE=5880 AudioPCI On Motherboard 6WTX - -pci:v00001274d00005880sv0000270Fsd00007040* - ID_PRODUCT_FROM_DATABASE=5880 AudioPCI On Motherboard 6ATA4 - -pci:v00001274d00008001* - ID_PRODUCT_FROM_DATABASE=CT5880 [AudioPCI] - -pci:v00001274d00008002* - ID_PRODUCT_FROM_DATABASE=5880A [AudioPCI] - -pci:v00001275* - ID_VENDOR_FROM_DATABASE=Network Appliance Corporation - -pci:v00001276* - ID_VENDOR_FROM_DATABASE=Switched Network Technologies, Inc. - -pci:v00001277* - ID_VENDOR_FROM_DATABASE=Comstream - -pci:v00001278* - ID_VENDOR_FROM_DATABASE=Transtech Parallel Systems Ltd. - -pci:v00001278d00000701* - ID_PRODUCT_FROM_DATABASE=TPE3/TM3 PowerPC Node - -pci:v00001278d00000710* - ID_PRODUCT_FROM_DATABASE=TPE5 PowerPC PCI board - -pci:v00001278d00001100* - ID_PRODUCT_FROM_DATABASE=PMC-FPGA02 - -pci:v00001278d00001101* - ID_PRODUCT_FROM_DATABASE=TS-C43 card with 4 ADSP-TS101 processors - -pci:v00001279* - ID_VENDOR_FROM_DATABASE=Transmeta Corporation - -pci:v00001279d00000060* - ID_PRODUCT_FROM_DATABASE=TM8000 Northbridge - -pci:v00001279d00000061* - ID_PRODUCT_FROM_DATABASE=TM8000 AGP bridge - -pci:v00001279d00000295* - ID_PRODUCT_FROM_DATABASE=Northbridge - -pci:v00001279d00000395* - ID_PRODUCT_FROM_DATABASE=LongRun Northbridge - -pci:v00001279d00000396* - ID_PRODUCT_FROM_DATABASE=SDRAM controller - -pci:v00001279d00000397* - ID_PRODUCT_FROM_DATABASE=BIOS scratchpad - -pci:v0000127A* - ID_VENDOR_FROM_DATABASE=Rockwell International - -pci:v0000127Ad00001002* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax Modem - -pci:v0000127Ad00001002sv00001092sd0000094C* - ID_PRODUCT_FROM_DATABASE=SupraExpress 56i PRO [Diamond SUP2380] - -pci:v0000127Ad00001002sv0000122Dsd00004002* - ID_PRODUCT_FROM_DATABASE=HPG / MDP3858-U - -pci:v0000127Ad00001002sv0000122Dsd00004005* - ID_PRODUCT_FROM_DATABASE=MDP3858-E - -pci:v0000127Ad00001002sv0000122Dsd00004007* - ID_PRODUCT_FROM_DATABASE=MDP3858-A/-NZ - -pci:v0000127Ad00001002sv0000122Dsd00004012* - ID_PRODUCT_FROM_DATABASE=MDP3858-SA - -pci:v0000127Ad00001002sv0000122Dsd00004017* - ID_PRODUCT_FROM_DATABASE=MDP3858-W - -pci:v0000127Ad00001002sv0000122Dsd00004018* - ID_PRODUCT_FROM_DATABASE=MDP3858-W - -pci:v0000127Ad00001002sv0000127Asd00001002* - ID_PRODUCT_FROM_DATABASE=Rockwell 56K D/F HCF Modem - -pci:v0000127Ad00001003* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax Modem - -pci:v0000127Ad00001003sv00000E11sd0000B0BC* - ID_PRODUCT_FROM_DATABASE=229-DF Zephyr - -pci:v0000127Ad00001003sv00000E11sd0000B114* - ID_PRODUCT_FROM_DATABASE=229-DF Cheetah - -pci:v0000127Ad00001003sv00001033sd0000802B* - ID_PRODUCT_FROM_DATABASE=229-DF - -pci:v0000127Ad00001003sv000013DFsd00001003* - ID_PRODUCT_FROM_DATABASE=PCI56RX Modem - -pci:v0000127Ad00001003sv000013E0sd00000117* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v0000127Ad00001003sv000013E0sd00000147* - ID_PRODUCT_FROM_DATABASE=IBM F-1156IV+/R3 Spain V.90 Modem - -pci:v0000127Ad00001003sv000013E0sd00000197* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v0000127Ad00001003sv000013E0sd000001C7* - ID_PRODUCT_FROM_DATABASE=IBM F-1156IV+/R3 WW V.90 Modem - -pci:v0000127Ad00001003sv000013E0sd000001F7* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v0000127Ad00001003sv00001436sd00001003* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v0000127Ad00001003sv00001436sd00001103* - ID_PRODUCT_FROM_DATABASE=IBM 5614PM3G V.90 Modem - -pci:v0000127Ad00001003sv00001436sd00001602* - ID_PRODUCT_FROM_DATABASE=Compaq 229-DF Ducati - -pci:v0000127Ad00001004* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem - -pci:v0000127Ad00001004sv00001048sd00001500* - ID_PRODUCT_FROM_DATABASE=MicroLink 56k Modem - -pci:v0000127Ad00001004sv000010CFsd00001059* - ID_PRODUCT_FROM_DATABASE=Fujitsu 229-DFRT - -pci:v0000127Ad00001005* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - -pci:v0000127Ad00001005sv00001005sd0000127A* - ID_PRODUCT_FROM_DATABASE=AOpen FM56-P - -pci:v0000127Ad00001005sv00001033sd00008029* - ID_PRODUCT_FROM_DATABASE=229-DFSV - -pci:v0000127Ad00001005sv00001033sd00008054* - ID_PRODUCT_FROM_DATABASE=Modem - -pci:v0000127Ad00001005sv000010CFsd0000103C* - ID_PRODUCT_FROM_DATABASE=Fujitsu - -pci:v0000127Ad00001005sv000010CFsd00001055* - ID_PRODUCT_FROM_DATABASE=Fujitsu 229-DFSV - -pci:v0000127Ad00001005sv000010CFsd00001056* - ID_PRODUCT_FROM_DATABASE=Fujitsu 229-DFSV - -pci:v0000127Ad00001005sv0000122Dsd00004003* - ID_PRODUCT_FROM_DATABASE=MDP3858SP-U - -pci:v0000127Ad00001005sv0000122Dsd00004006* - ID_PRODUCT_FROM_DATABASE=Packard Bell MDP3858V-E - -pci:v0000127Ad00001005sv0000122Dsd00004008* - ID_PRODUCT_FROM_DATABASE=MDP3858SP-A/SP-NZ - -pci:v0000127Ad00001005sv0000122Dsd00004009* - ID_PRODUCT_FROM_DATABASE=MDP3858SP-E - -pci:v0000127Ad00001005sv0000122Dsd00004010* - ID_PRODUCT_FROM_DATABASE=MDP3858V-U - -pci:v0000127Ad00001005sv0000122Dsd00004011* - ID_PRODUCT_FROM_DATABASE=MDP3858SP-SA - -pci:v0000127Ad00001005sv0000122Dsd00004013* - ID_PRODUCT_FROM_DATABASE=MDP3858V-A/V-NZ - -pci:v0000127Ad00001005sv0000122Dsd00004015* - ID_PRODUCT_FROM_DATABASE=MDP3858SP-W - -pci:v0000127Ad00001005sv0000122Dsd00004016* - ID_PRODUCT_FROM_DATABASE=MDP3858V-W - -pci:v0000127Ad00001005sv0000122Dsd00004019* - ID_PRODUCT_FROM_DATABASE=MDP3858V-SA - -pci:v0000127Ad00001005sv000013DFsd00001005* - ID_PRODUCT_FROM_DATABASE=PCI56RVP Modem - -pci:v0000127Ad00001005sv000013E0sd00000187* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v0000127Ad00001005sv000013E0sd000001A7* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v0000127Ad00001005sv000013E0sd000001B7* - ID_PRODUCT_FROM_DATABASE=IBM DF-1156IV+/R3 Spain V.90 Modem - -pci:v0000127Ad00001005sv000013E0sd000001D7* - ID_PRODUCT_FROM_DATABASE=IBM DF-1156IV+/R3 WW V.90 Modem - -pci:v0000127Ad00001005sv00001436sd00001005* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v0000127Ad00001005sv00001436sd00001105* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v0000127Ad00001005sv00001437sd00001105* - ID_PRODUCT_FROM_DATABASE=IBM 5614PS3G V.90 Modem - -pci:v0000127Ad00001022* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v0000127Ad00001022sv00001436sd00001303* - ID_PRODUCT_FROM_DATABASE=M3-5614PM3G V.90 Modem - -pci:v0000127Ad00001023* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax Modem - -pci:v0000127Ad00001023sv0000122Dsd00004020* - ID_PRODUCT_FROM_DATABASE=Packard Bell MDP3858-WE - -pci:v0000127Ad00001023sv0000122Dsd00004023* - ID_PRODUCT_FROM_DATABASE=MDP3858-UE - -pci:v0000127Ad00001023sv000013E0sd00000247* - ID_PRODUCT_FROM_DATABASE=IBM F-1156IV+/R6 Spain V.90 Modem - -pci:v0000127Ad00001023sv000013E0sd00000297* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v0000127Ad00001023sv000013E0sd000002C7* - ID_PRODUCT_FROM_DATABASE=IBM F-1156IV+/R6 WW V.90 Modem - -pci:v0000127Ad00001023sv00001436sd00001203* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v0000127Ad00001023sv00001436sd00001303* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v0000127Ad00001024* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem - -pci:v0000127Ad00001025* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - -pci:v0000127Ad00001025sv000010CFsd0000106A* - ID_PRODUCT_FROM_DATABASE=Fujitsu 235-DFSV - -pci:v0000127Ad00001025sv0000122Dsd00004021* - ID_PRODUCT_FROM_DATABASE=Packard Bell MDP3858V-WE - -pci:v0000127Ad00001025sv0000122Dsd00004022* - ID_PRODUCT_FROM_DATABASE=MDP3858SP-WE - -pci:v0000127Ad00001025sv0000122Dsd00004024* - ID_PRODUCT_FROM_DATABASE=MDP3858V-UE - -pci:v0000127Ad00001025sv0000122Dsd00004025* - ID_PRODUCT_FROM_DATABASE=MDP3858SP-UE - -pci:v0000127Ad00001026* - ID_PRODUCT_FROM_DATABASE=HCF 56k PCI Speakerphone Modem - -pci:v0000127Ad00001032* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v0000127Ad00001033* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v0000127Ad00001034* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v0000127Ad00001035* - ID_PRODUCT_FROM_DATABASE=HCF 56k PCI Speakerphone Modem - -pci:v0000127Ad00001036* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v0000127Ad00001085* - ID_PRODUCT_FROM_DATABASE=HCF 56k Volcano PCI Modem - -pci:v0000127Ad00002004* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - -pci:v0000127Ad00002005* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax Modem - -pci:v0000127Ad00002005sv0000104Dsd00008044* - ID_PRODUCT_FROM_DATABASE=229-DFSV - -pci:v0000127Ad00002005sv0000104Dsd00008045* - ID_PRODUCT_FROM_DATABASE=229-DFSV - -pci:v0000127Ad00002005sv0000104Dsd00008055* - ID_PRODUCT_FROM_DATABASE=PBE/Aztech 235W-DFSV - -pci:v0000127Ad00002005sv0000104Dsd00008056* - ID_PRODUCT_FROM_DATABASE=235-DFSV - -pci:v0000127Ad00002005sv0000104Dsd0000805A* - ID_PRODUCT_FROM_DATABASE=Modem - -pci:v0000127Ad00002005sv0000104Dsd0000805F* - ID_PRODUCT_FROM_DATABASE=Modem - -pci:v0000127Ad00002005sv0000104Dsd00008074* - ID_PRODUCT_FROM_DATABASE=Modem - -pci:v0000127Ad00002013* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax Modem - -pci:v0000127Ad00002013sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Modem - -pci:v0000127Ad00002013sv00001179sd0000FF00* - ID_PRODUCT_FROM_DATABASE=Modem - -pci:v0000127Ad00002014* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem - -pci:v0000127Ad00002014sv000010CFsd00001057* - ID_PRODUCT_FROM_DATABASE=Fujitsu Citicorp III - -pci:v0000127Ad00002014sv0000122Dsd00004050* - ID_PRODUCT_FROM_DATABASE=MSP3880-U - -pci:v0000127Ad00002014sv0000122Dsd00004055* - ID_PRODUCT_FROM_DATABASE=MSP3880-W - -pci:v0000127Ad00002015* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - -pci:v0000127Ad00002015sv000010CFsd00001063* - ID_PRODUCT_FROM_DATABASE=Fujitsu - -pci:v0000127Ad00002015sv000010CFsd00001064* - ID_PRODUCT_FROM_DATABASE=Fujitsu - -pci:v0000127Ad00002015sv00001468sd00002015* - ID_PRODUCT_FROM_DATABASE=Fujitsu - -pci:v0000127Ad00002016* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem - -pci:v0000127Ad00002016sv0000122Dsd00004051* - ID_PRODUCT_FROM_DATABASE=MSP3880V-W - -pci:v0000127Ad00002016sv0000122Dsd00004052* - ID_PRODUCT_FROM_DATABASE=MSP3880SP-W - -pci:v0000127Ad00002016sv0000122Dsd00004054* - ID_PRODUCT_FROM_DATABASE=MSP3880V-U - -pci:v0000127Ad00002016sv0000122Dsd00004056* - ID_PRODUCT_FROM_DATABASE=MSP3880SP-U - -pci:v0000127Ad00002016sv0000122Dsd00004057* - ID_PRODUCT_FROM_DATABASE=MSP3880SP-A - -pci:v0000127Ad00004311* - ID_PRODUCT_FROM_DATABASE=Riptide HSF 56k PCI Modem - -pci:v0000127Ad00004311sv0000127Asd00004311* - ID_PRODUCT_FROM_DATABASE=Ring Modular? Riptide HSF RT HP Dom - -pci:v0000127Ad00004311sv000013E0sd00000210* - ID_PRODUCT_FROM_DATABASE=HP-GVC - -pci:v0000127Ad00004320* - ID_PRODUCT_FROM_DATABASE=Riptide PCI Audio Controller - -pci:v0000127Ad00004320sv00001235sd00004320* - ID_PRODUCT_FROM_DATABASE=Riptide PCI Audio Controller - -pci:v0000127Ad00004321* - ID_PRODUCT_FROM_DATABASE=Riptide HCF 56k PCI Modem - -pci:v0000127Ad00004321sv00001235sd00004321* - ID_PRODUCT_FROM_DATABASE=Hewlett Packard DF - -pci:v0000127Ad00004321sv00001235sd00004324* - ID_PRODUCT_FROM_DATABASE=Hewlett Packard DF - -pci:v0000127Ad00004321sv000013E0sd00000210* - ID_PRODUCT_FROM_DATABASE=Hewlett Packard DF - -pci:v0000127Ad00004321sv0000144Dsd00002321* - ID_PRODUCT_FROM_DATABASE=Riptide - -pci:v0000127Ad00004322* - ID_PRODUCT_FROM_DATABASE=Riptide PCI Game Controller - -pci:v0000127Ad00004322sv00001235sd00004322* - ID_PRODUCT_FROM_DATABASE=Riptide PCI Game Controller - -pci:v0000127Ad00008234* - ID_PRODUCT_FROM_DATABASE=RapidFire 616X ATM155 Adapter - -pci:v0000127Ad00008234sv0000108Dsd00000022* - ID_PRODUCT_FROM_DATABASE=RapidFire 616X ATM155 Adapter - -pci:v0000127Ad00008234sv0000108Dsd00000027* - ID_PRODUCT_FROM_DATABASE=RapidFire 616X ATM155 Adapter - -pci:v0000127B* - ID_VENDOR_FROM_DATABASE=Pixera Corporation - -pci:v0000127C* - ID_VENDOR_FROM_DATABASE=Crosspoint Solutions, Inc. - -pci:v0000127D* - ID_VENDOR_FROM_DATABASE=Vela Research - -pci:v0000127E* - ID_VENDOR_FROM_DATABASE=Winnov, L.P. - -pci:v0000127Ed00000010* - ID_PRODUCT_FROM_DATABASE=Videum 1000 Plus - -pci:v0000127F* - ID_VENDOR_FROM_DATABASE=Fujifilm - -pci:v00001280* - ID_VENDOR_FROM_DATABASE=Photoscript Group Ltd. - -pci:v00001281* - ID_VENDOR_FROM_DATABASE=Yokogawa Electric Corporation - -pci:v00001282* - ID_VENDOR_FROM_DATABASE=Davicom Semiconductor, Inc. - -pci:v00001282d00006585* - ID_PRODUCT_FROM_DATABASE=DM562P V90 Modem - -pci:v00001282d00009009* - ID_PRODUCT_FROM_DATABASE=Ethernet 100/10 MBit - -pci:v00001282d00009100* - ID_PRODUCT_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet - -pci:v00001282d00009102* - ID_PRODUCT_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet - -pci:v00001282d00009102sv00000291sd00008212* - ID_PRODUCT_FROM_DATABASE=DM9102A (DM9102AE, SM9102AF) Ethernet 100/10 MBit - -pci:v00001282d00009132* - ID_PRODUCT_FROM_DATABASE=Ethernet 100/10 MBit - -pci:v00001283* - ID_VENDOR_FROM_DATABASE=Integrated Technology Express, Inc. - -pci:v00001283d0000673A* - ID_PRODUCT_FROM_DATABASE=IT8330G - -pci:v00001283d00008152* - ID_PRODUCT_FROM_DATABASE=IT8152F/G Advanced RISC-to-PCI Companion Chip - -pci:v00001283d00008211* - ID_PRODUCT_FROM_DATABASE=ITE 8211F Single Channel UDMA 133 - -pci:v00001283d00008211sv00001043sd00008138* - ID_PRODUCT_FROM_DATABASE=P5GD1-VW Mainboard - -pci:v00001283d00008212* - ID_PRODUCT_FROM_DATABASE=IT8212 Dual channel ATA RAID controller - -pci:v00001283d00008212sv00001283sd00000001* - ID_PRODUCT_FROM_DATABASE=IT/ITE8212 Dual channel ATA RAID controller - -pci:v00001283d00008213* - ID_PRODUCT_FROM_DATABASE=IT8213 IDE Controller - -pci:v00001283d00008213sv00001458sd0000B000* - ID_PRODUCT_FROM_DATABASE=GA-EG45M-DS2H Mainboard - -pci:v00001283d00008330* - ID_PRODUCT_FROM_DATABASE=IT8330G - -pci:v00001283d00008872* - ID_PRODUCT_FROM_DATABASE=IT8874F PCI Dual Serial Port Controller - -pci:v00001283d00008888* - ID_PRODUCT_FROM_DATABASE=IT8888F/G PCI to ISA Bridge with SMB [Golden Gate] - -pci:v00001283d00008889* - ID_PRODUCT_FROM_DATABASE=IT8889F PCI to ISA Bridge - -pci:v00001283d0000E886* - ID_PRODUCT_FROM_DATABASE=IT8330G - -pci:v00001284* - ID_VENDOR_FROM_DATABASE=Sahara Networks, Inc. - -pci:v00001285* - ID_VENDOR_FROM_DATABASE=Platform Technologies, Inc. - -pci:v00001285d00000100* - ID_PRODUCT_FROM_DATABASE=AGOGO sound chip (aka ESS Maestro 1) - -pci:v00001286* - ID_VENDOR_FROM_DATABASE=Mazet GmbH - -pci:v00001287* - ID_VENDOR_FROM_DATABASE=M-Pact, Inc. - -pci:v00001287d0000001E* - ID_PRODUCT_FROM_DATABASE=LS220D DVD Decoder - -pci:v00001287d0000001F* - ID_PRODUCT_FROM_DATABASE=LS220C DVD Decoder - -pci:v00001288* - ID_VENDOR_FROM_DATABASE=Timestep Corporation - -pci:v00001289* - ID_VENDOR_FROM_DATABASE=AVC Technology, Inc. - -pci:v0000128A* - ID_VENDOR_FROM_DATABASE=Asante Technologies, Inc. - -pci:v0000128B* - ID_VENDOR_FROM_DATABASE=Transwitch Corporation - -pci:v0000128C* - ID_VENDOR_FROM_DATABASE=Retix Corporation - -pci:v0000128D* - ID_VENDOR_FROM_DATABASE=G2 Networks, Inc. - -pci:v0000128Dd00000021* - ID_PRODUCT_FROM_DATABASE=ATM155 Adapter - -pci:v0000128E* - ID_VENDOR_FROM_DATABASE=Hoontech Corporation/Samho Multi Tech Ltd. - -pci:v0000128Ed00000008* - ID_PRODUCT_FROM_DATABASE=ST128 WSS/SB - -pci:v0000128Ed00000009* - ID_PRODUCT_FROM_DATABASE=ST128 SAM9407 - -pci:v0000128Ed0000000A* - ID_PRODUCT_FROM_DATABASE=ST128 Game Port - -pci:v0000128Ed0000000B* - ID_PRODUCT_FROM_DATABASE=ST128 MPU Port - -pci:v0000128Ed0000000C* - ID_PRODUCT_FROM_DATABASE=ST128 Ctrl Port - -pci:v0000128F* - ID_VENDOR_FROM_DATABASE=Tateno Dennou, Inc. - -pci:v00001290* - ID_VENDOR_FROM_DATABASE=Sord Computer Corporation - -pci:v00001291* - ID_VENDOR_FROM_DATABASE=NCS Computer Italia - -pci:v00001292* - ID_VENDOR_FROM_DATABASE=Tritech Microelectronics Inc - -pci:v00001292d0000FC02* - ID_PRODUCT_FROM_DATABASE=Pyramid3D TR25202 - -pci:v00001293* - ID_VENDOR_FROM_DATABASE=Media Reality Technology - -pci:v00001294* - ID_VENDOR_FROM_DATABASE=Rhetorex, Inc. - -pci:v00001295* - ID_VENDOR_FROM_DATABASE=Imagenation Corporation - -pci:v00001295d00000800* - ID_PRODUCT_FROM_DATABASE=PXR800 - -pci:v00001295d00001000* - ID_PRODUCT_FROM_DATABASE=PXD1000 - -pci:v00001296* - ID_VENDOR_FROM_DATABASE=Kofax Image Products - -pci:v00001297* - ID_VENDOR_FROM_DATABASE=Holco Enterprise Co, Ltd/Shuttle Computer - -pci:v00001298* - ID_VENDOR_FROM_DATABASE=Spellcaster Telecommunications Inc. - -pci:v00001299* - ID_VENDOR_FROM_DATABASE=Knowledge Technology Lab. - -pci:v0000129A* - ID_VENDOR_FROM_DATABASE=VMetro, inc. - -pci:v0000129Ad00000615* - ID_PRODUCT_FROM_DATABASE=PBT-615 PCI-X Bus Analyzer - -pci:v0000129Ad00001100* - ID_PRODUCT_FROM_DATABASE=PMC-FPGA05 - -pci:v0000129Ad00001106* - ID_PRODUCT_FROM_DATABASE=XMC-FPGA05F, PCI interface - -pci:v0000129Ad00001107* - ID_PRODUCT_FROM_DATABASE=XMC-FPGA05F, PCIe interface - -pci:v0000129Ad00001108* - ID_PRODUCT_FROM_DATABASE=XMC-FPGA05D, PCI interface - -pci:v0000129Ad00001109* - ID_PRODUCT_FROM_DATABASE=XMC-FPGA05D, PCIe interface - -pci:v0000129B* - ID_VENDOR_FROM_DATABASE=Image Access - -pci:v0000129C* - ID_VENDOR_FROM_DATABASE=Jaycor - -pci:v0000129D* - ID_VENDOR_FROM_DATABASE=Compcore Multimedia, Inc. - -pci:v0000129E* - ID_VENDOR_FROM_DATABASE=Victor Company of Japan, Ltd. - -pci:v0000129F* - ID_VENDOR_FROM_DATABASE=OEC Medical Systems, Inc. - -pci:v000012A0* - ID_VENDOR_FROM_DATABASE=Allen-Bradley Company - -pci:v000012A1* - ID_VENDOR_FROM_DATABASE=Simpact Associates, Inc. - -pci:v000012A2* - ID_VENDOR_FROM_DATABASE=Newgen Systems Corporation - -pci:v000012A3* - ID_VENDOR_FROM_DATABASE=Lucent Technologies - -pci:v000012A3d00008105* - ID_PRODUCT_FROM_DATABASE=T8105 H100 Digital Switch - -pci:v000012A4* - ID_VENDOR_FROM_DATABASE=NTT Electronics Technology Company - -pci:v000012A5* - ID_VENDOR_FROM_DATABASE=Vision Dynamics Ltd. - -pci:v000012A6* - ID_VENDOR_FROM_DATABASE=Scalable Networks, Inc. - -pci:v000012A7* - ID_VENDOR_FROM_DATABASE=AMO GmbH - -pci:v000012A8* - ID_VENDOR_FROM_DATABASE=News Datacom - -pci:v000012A9* - ID_VENDOR_FROM_DATABASE=Xiotech Corporation - -pci:v000012AA* - ID_VENDOR_FROM_DATABASE=SDL Communications, Inc. - -pci:v000012AB* - ID_VENDOR_FROM_DATABASE=Yuan Yuan Enterprise Co., Ltd. - -pci:v000012ABd00000000* - ID_PRODUCT_FROM_DATABASE=MPG160/Kuroutoshikou ITVC15-STVLP - -pci:v000012ABd00000002* - ID_PRODUCT_FROM_DATABASE=AU8830 [Vortex2] Based Sound Card With A3D Support - -pci:v000012ABd00000003* - ID_PRODUCT_FROM_DATABASE=T507 (DVB-T) TV tuner/capture device - -pci:v000012ABd00002300* - ID_PRODUCT_FROM_DATABASE=Club-3D Zap TV2100 - -pci:v000012ABd00003000* - ID_PRODUCT_FROM_DATABASE=MPG-200C PCI DVD Decoder Card - -pci:v000012ABd00004789* - ID_PRODUCT_FROM_DATABASE=MPC788 MiniPCI Hybrid TV Tuner - -pci:v000012ABd0000FFF3* - ID_PRODUCT_FROM_DATABASE=MPG600/Kuroutoshikou ITVC16-STVLP - -pci:v000012ABd0000FFFF* - ID_PRODUCT_FROM_DATABASE=MPG600/Kuroutoshikou ITVC16-STVLP - -pci:v000012AC* - ID_VENDOR_FROM_DATABASE=Measurex Corporation - -pci:v000012AD* - ID_VENDOR_FROM_DATABASE=Multidata GmbH - -pci:v000012AE* - ID_VENDOR_FROM_DATABASE=Alteon Networks Inc. - -pci:v000012AEd00000001* - ID_PRODUCT_FROM_DATABASE=AceNIC Gigabit Ethernet - -pci:v000012AEd00000001sv00001014sd00000104* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet-SX PCI Adapter - -pci:v000012AEd00000001sv000012AEsd00000001* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet-SX (Universal) - -pci:v000012AEd00000002* - ID_PRODUCT_FROM_DATABASE=AceNIC Gigabit Ethernet (Copper) - -pci:v000012AEd00000002sv000010A9sd00008002* - ID_PRODUCT_FROM_DATABASE=Acenic Gigabit Ethernet - -pci:v000012AEd00000002sv000012AEsd00000002* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet-T (3C986-T) - -pci:v000012AEd000000FA* - ID_PRODUCT_FROM_DATABASE=Farallon PN9100-T Gigabit Ethernet - -pci:v000012AF* - ID_VENDOR_FROM_DATABASE=TDK USA Corp - -pci:v000012B0* - ID_VENDOR_FROM_DATABASE=Jorge Scientific Corp - -pci:v000012B1* - ID_VENDOR_FROM_DATABASE=GammaLink - -pci:v000012B2* - ID_VENDOR_FROM_DATABASE=General Signal Networks - -pci:v000012B3* - ID_VENDOR_FROM_DATABASE=Inter-Face Co Ltd - -pci:v000012B4* - ID_VENDOR_FROM_DATABASE=FutureTel Inc - -pci:v000012B5* - ID_VENDOR_FROM_DATABASE=Granite Systems Inc. - -pci:v000012B6* - ID_VENDOR_FROM_DATABASE=Natural Microsystems - -pci:v000012B7* - ID_VENDOR_FROM_DATABASE=Cognex Modular Vision Systems Div. - Acumen Inc. - -pci:v000012B8* - ID_VENDOR_FROM_DATABASE=Korg - -pci:v000012B9* - ID_VENDOR_FROM_DATABASE=3Com Corp, Modem Division - -pci:v000012B9d00001006* - ID_PRODUCT_FROM_DATABASE=WinModem - -pci:v000012B9d00001006sv000012B9sd0000005C* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 3472) - -pci:v000012B9d00001006sv000012B9sd0000005E* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal WinModem (Models 662975) - -pci:v000012B9d00001006sv000012B9sd00000062* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 662978) - -pci:v000012B9d00001006sv000012B9sd00000068* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 5690) - -pci:v000012B9d00001006sv000012B9sd0000007A* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 662974) - -pci:v000012B9d00001006sv000012B9sd0000007F* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal WinModem (Models 5698, 5699) - -pci:v000012B9d00001006sv000012B9sd00000080* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal WinModem (Models 2975, 3528) - -pci:v000012B9d00001006sv000012B9sd00000081* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal Voice WinModem (Models 2974, 3529) - -pci:v000012B9d00001006sv000012B9sd00000091* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal Voice WinModem (Model 2978) - -pci:v000012B9d00001007* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal WinModem - -pci:v000012B9d00001007sv000012B9sd000000A3* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal WinModem (Model 3595) - -pci:v000012B9d00001007sv000012B9sd000000C4* - ID_PRODUCT_FROM_DATABASE=U.S. Robotics V.92 Voice Faxmodem (2884A/B/C) - -pci:v000012B9d00001008* - ID_PRODUCT_FROM_DATABASE=56K FaxModem Model 5610 - -pci:v000012B9d00001008sv000012B9sd000000A2* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal FAX Modem (Model 2977) - -pci:v000012B9d00001008sv000012B9sd000000AA* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal Voice Modem (Model 2976) - -pci:v000012B9d00001008sv000012B9sd000000AB* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal Voice Modem (Model 5609) - -pci:v000012B9d00001008sv000012B9sd000000AC* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal Voice Modem (Model 3298) - -pci:v000012B9d00001008sv000012B9sd000000AD* - ID_PRODUCT_FROM_DATABASE=USR 56k Internal FAX Modem (Model 5610) - -pci:v000012B9d00001008sv000012B9sd000000D3* - ID_PRODUCT_FROM_DATABASE=USR 56K Internal V92 FAX Modem (Model 5610) - -pci:v000012B9d00001008sv000012B9sd0000BABA* - ID_PRODUCT_FROM_DATABASE=USR 56K Internal Voice Modem 3CP3298-DEL (Model 5601) [Hawk] - -pci:v000012BA* - ID_VENDOR_FROM_DATABASE=BittWare, Inc. - -pci:v000012BB* - ID_VENDOR_FROM_DATABASE=Nippon Unisoft Corporation - -pci:v000012BC* - ID_VENDOR_FROM_DATABASE=Array Microsystems - -pci:v000012BD* - ID_VENDOR_FROM_DATABASE=Computerm Corp. - -pci:v000012BE* - ID_VENDOR_FROM_DATABASE=Anchor Chips Inc. - -pci:v000012BEd00003041* - ID_PRODUCT_FROM_DATABASE=AN3041Q CO-MEM - -pci:v000012BEd00003042* - ID_PRODUCT_FROM_DATABASE=AN3042Q CO-MEM Lite - -pci:v000012BEd00003042sv000012BEsd00003042* - ID_PRODUCT_FROM_DATABASE=Anchor Chips Lite Evaluation Board - -pci:v000012BF* - ID_VENDOR_FROM_DATABASE=Fujifilm Microdevices - -pci:v000012C0* - ID_VENDOR_FROM_DATABASE=Infimed - -pci:v000012C1* - ID_VENDOR_FROM_DATABASE=GMM Research Corp - -pci:v000012C2* - ID_VENDOR_FROM_DATABASE=Mentec Limited - -pci:v000012C3* - ID_VENDOR_FROM_DATABASE=Holtek Microelectronics Inc - -pci:v000012C3d00000058* - ID_PRODUCT_FROM_DATABASE=PCI NE2K Ethernet - -pci:v000012C3d00005598* - ID_PRODUCT_FROM_DATABASE=PCI NE2K Ethernet - -pci:v000012C4* - ID_VENDOR_FROM_DATABASE=Connect Tech Inc - -pci:v000012C4d00000001* - ID_PRODUCT_FROM_DATABASE=Blue HEAT/PCI 8 (RS232/CL/RJ11) - -pci:v000012C4d00000002* - ID_PRODUCT_FROM_DATABASE=Blue HEAT/PCI 4 (RS232) - -pci:v000012C4d00000003* - ID_PRODUCT_FROM_DATABASE=Blue HEAT/PCI 2 (RS232) - -pci:v000012C4d00000004* - ID_PRODUCT_FROM_DATABASE=Blue HEAT/PCI 8 (UNIV, RS485) - -pci:v000012C4d00000005* - ID_PRODUCT_FROM_DATABASE=Blue HEAT/PCI 4+4/6+2 (UNIV, RS232/485) - -pci:v000012C4d00000006* - ID_PRODUCT_FROM_DATABASE=Blue HEAT/PCI 4 (OPTO, RS485) - -pci:v000012C4d00000007* - ID_PRODUCT_FROM_DATABASE=Blue HEAT/PCI 2+2 (RS232/485) - -pci:v000012C4d00000008* - ID_PRODUCT_FROM_DATABASE=Blue HEAT/PCI 2 (OPTO, Tx, RS485) - -pci:v000012C4d00000009* - ID_PRODUCT_FROM_DATABASE=Blue HEAT/PCI 2+6 (RS232/485) - -pci:v000012C4d0000000A* - ID_PRODUCT_FROM_DATABASE=Blue HEAT/PCI 8 (Tx, RS485) - -pci:v000012C4d0000000B* - ID_PRODUCT_FROM_DATABASE=Blue HEAT/PCI 4 (Tx, RS485) - -pci:v000012C4d0000000C* - ID_PRODUCT_FROM_DATABASE=Blue HEAT/PCI 2 (20 MHz, RS485) - -pci:v000012C4d0000000D* - ID_PRODUCT_FROM_DATABASE=Blue HEAT/PCI 2 PTM - -pci:v000012C4d00000100* - ID_PRODUCT_FROM_DATABASE=NT960/PCI - -pci:v000012C4d00000201* - ID_PRODUCT_FROM_DATABASE=cPCI Titan - 2 Port - -pci:v000012C4d00000202* - ID_PRODUCT_FROM_DATABASE=cPCI Titan - 4 Port - -pci:v000012C4d00000300* - ID_PRODUCT_FROM_DATABASE=CTI PCI UART 2 (RS232) - -pci:v000012C4d00000301* - ID_PRODUCT_FROM_DATABASE=CTI PCI UART 4 (RS232) - -pci:v000012C4d00000302* - ID_PRODUCT_FROM_DATABASE=CTI PCI UART 8 (RS232) - -pci:v000012C4d00000310* - ID_PRODUCT_FROM_DATABASE=CTI PCI UART 1+1 (RS232/485) - -pci:v000012C4d00000311* - ID_PRODUCT_FROM_DATABASE=CTI PCI UART 2+2 (RS232/485) - -pci:v000012C4d00000312* - ID_PRODUCT_FROM_DATABASE=CTI PCI UART 4+4 (RS232/485) - -pci:v000012C4d00000320* - ID_PRODUCT_FROM_DATABASE=CTI PCI UART 2 - -pci:v000012C4d00000321* - ID_PRODUCT_FROM_DATABASE=CTI PCI UART 4 - -pci:v000012C4d00000322* - ID_PRODUCT_FROM_DATABASE=CTI PCI UART 8 - -pci:v000012C4d00000330* - ID_PRODUCT_FROM_DATABASE=CTI PCI UART 2 (RS485) - -pci:v000012C4d00000331* - ID_PRODUCT_FROM_DATABASE=CTI PCI UART 4 (RS485) - -pci:v000012C4d00000332* - ID_PRODUCT_FROM_DATABASE=CTI PCI UART 8 (RS485) - -pci:v000012C5* - ID_VENDOR_FROM_DATABASE=Picture Elements Incorporated - -pci:v000012C5d0000007E* - ID_PRODUCT_FROM_DATABASE=Imaging/Scanning Subsystem Engine - -pci:v000012C5d0000007F* - ID_PRODUCT_FROM_DATABASE=Imaging/Scanning Subsystem Engine - -pci:v000012C5d00000081* - ID_PRODUCT_FROM_DATABASE=PCIVST [Grayscale Thresholding Engine] - -pci:v000012C5d00000085* - ID_PRODUCT_FROM_DATABASE=Video Simulator/Sender - -pci:v000012C5d00000086* - ID_PRODUCT_FROM_DATABASE=THR2 Multi-scale Thresholder - -pci:v000012C6* - ID_VENDOR_FROM_DATABASE=Mitani Corporation - -pci:v000012C7* - ID_VENDOR_FROM_DATABASE=Dialogic Corp - -pci:v000012C7d00000546* - ID_PRODUCT_FROM_DATABASE=Springware D/120JCT-LS - -pci:v000012C7d00000647* - ID_PRODUCT_FROM_DATABASE=Springware D/240JCT-T1 - -pci:v000012C7d00000676* - ID_PRODUCT_FROM_DATABASE=Springware D/41JCT-LS - -pci:v000012C7d00000685* - ID_PRODUCT_FROM_DATABASE=Springware D/480JCT-2T1 - -pci:v000012C8* - ID_VENDOR_FROM_DATABASE=G Force Co, Ltd - -pci:v000012C9* - ID_VENDOR_FROM_DATABASE=Gigi Operations - -pci:v000012CA* - ID_VENDOR_FROM_DATABASE=Integrated Computing Engines - -pci:v000012CB* - ID_VENDOR_FROM_DATABASE=Antex Electronics Corporation - -pci:v000012CBd00000027* - ID_PRODUCT_FROM_DATABASE=SC4 (StudioCard) - -pci:v000012CBd0000002E* - ID_PRODUCT_FROM_DATABASE=StudioCard 2000 - -pci:v000012CC* - ID_VENDOR_FROM_DATABASE=Pluto Technologies International - -pci:v000012CD* - ID_VENDOR_FROM_DATABASE=Aims Lab - -pci:v000012CE* - ID_VENDOR_FROM_DATABASE=Netspeed Inc. - -pci:v000012CF* - ID_VENDOR_FROM_DATABASE=Prophet Systems, Inc. - -pci:v000012D0* - ID_VENDOR_FROM_DATABASE=GDE Systems, Inc. - -pci:v000012D1* - ID_VENDOR_FROM_DATABASE=PSITech - -pci:v000012D2* - ID_VENDOR_FROM_DATABASE=NVidia / SGS Thomson (Joint Venture) - -pci:v000012D2d00000008* - ID_PRODUCT_FROM_DATABASE=NV1 - -pci:v000012D2d00000009* - ID_PRODUCT_FROM_DATABASE=DAC64 - -pci:v000012D2d00000018* - ID_PRODUCT_FROM_DATABASE=Riva128 - -pci:v000012D2d00000018sv00001048sd00000C10* - ID_PRODUCT_FROM_DATABASE=VICTORY Erazor - -pci:v000012D2d00000018sv0000107Bsd00008030* - ID_PRODUCT_FROM_DATABASE=STB Velocity 128 - -pci:v000012D2d00000018sv00001092sd00000350* - ID_PRODUCT_FROM_DATABASE=Viper V330 - -pci:v000012D2d00000018sv00001092sd00001092* - ID_PRODUCT_FROM_DATABASE=Viper V330 - -pci:v000012D2d00000018sv000010B4sd00001B1B* - ID_PRODUCT_FROM_DATABASE=STB Velocity 128 - -pci:v000012D2d00000018sv000010B4sd00001B1D* - ID_PRODUCT_FROM_DATABASE=STB Velocity 128 - -pci:v000012D2d00000018sv000010B4sd00001B1E* - ID_PRODUCT_FROM_DATABASE=STB Velocity 128, PAL TV-Out - -pci:v000012D2d00000018sv000010B4sd00001B20* - ID_PRODUCT_FROM_DATABASE=STB Velocity 128 Sapphire - -pci:v000012D2d00000018sv000010B4sd00001B21* - ID_PRODUCT_FROM_DATABASE=STB Velocity 128 - -pci:v000012D2d00000018sv000010B4sd00001B22* - ID_PRODUCT_FROM_DATABASE=STB Velocity 128 AGP, NTSC TV-Out - -pci:v000012D2d00000018sv000010B4sd00001B23* - ID_PRODUCT_FROM_DATABASE=STB Velocity 128 AGP, PAL TV-Out - -pci:v000012D2d00000018sv000010B4sd00001B27* - ID_PRODUCT_FROM_DATABASE=STB Velocity 128 DVD - -pci:v000012D2d00000018sv000010B4sd00001B88* - ID_PRODUCT_FROM_DATABASE=MVP Pro 128 - -pci:v000012D2d00000018sv000010B4sd0000222A* - ID_PRODUCT_FROM_DATABASE=STB Velocity 128 AGP - -pci:v000012D2d00000018sv000010B4sd00002230* - ID_PRODUCT_FROM_DATABASE=STB Velocity 128 - -pci:v000012D2d00000018sv000010B4sd00002232* - ID_PRODUCT_FROM_DATABASE=STB Velocity 128 - -pci:v000012D2d00000018sv000010B4sd00002235* - ID_PRODUCT_FROM_DATABASE=STB Velocity 128 AGP - -pci:v000012D2d00000018sv00002A15sd000054A3* - ID_PRODUCT_FROM_DATABASE=3DVision-SAGP / 3DexPlorer 3000 - -pci:v000012D2d00000019* - ID_PRODUCT_FROM_DATABASE=Riva128ZX - -pci:v000012D2d00000020* - ID_PRODUCT_FROM_DATABASE=TNT - -pci:v000012D2d00000028* - ID_PRODUCT_FROM_DATABASE=TNT2 - -pci:v000012D2d00000029* - ID_PRODUCT_FROM_DATABASE=UTNT2 - -pci:v000012D2d0000002C* - ID_PRODUCT_FROM_DATABASE=VTNT2 - -pci:v000012D2d000000A0* - ID_PRODUCT_FROM_DATABASE=ITNT2 - -pci:v000012D3* - ID_VENDOR_FROM_DATABASE=Vingmed Sound A/S - -pci:v000012D4* - ID_VENDOR_FROM_DATABASE=Ulticom (Formerly DGM&S) - -pci:v000012D4d00000200* - ID_PRODUCT_FROM_DATABASE=T1 Card - -pci:v000012D5* - ID_VENDOR_FROM_DATABASE=Equator Technologies Inc - -pci:v000012D5d00000003* - ID_PRODUCT_FROM_DATABASE=BSP16 - -pci:v000012D5d00001000* - ID_PRODUCT_FROM_DATABASE=BSP15 - -pci:v000012D6* - ID_VENDOR_FROM_DATABASE=Analogic Corp - -pci:v000012D7* - ID_VENDOR_FROM_DATABASE=Biotronic SRL - -pci:v000012D8* - ID_VENDOR_FROM_DATABASE=Pericom Semiconductor - -pci:v000012D8d000001A7* - ID_PRODUCT_FROM_DATABASE=PI7C21P100 PCI to PCI Bridge - -pci:v000012D8d0000400A* - ID_PRODUCT_FROM_DATABASE=PI7C9X442SL PCI Express Bridge Port - -pci:v000012D8d0000400E* - ID_PRODUCT_FROM_DATABASE=PI7C9X442SL USB OHCI Controller - -pci:v000012D8d0000400F* - ID_PRODUCT_FROM_DATABASE=PI7C9X442SL USB EHCI Controller - -pci:v000012D8d000071E2* - ID_PRODUCT_FROM_DATABASE=PI7C7300A/PI7C7300D PCI-to-PCI Bridge - -pci:v000012D8d000071E3* - ID_PRODUCT_FROM_DATABASE=PI7C7300A/PI7C7300D PCI-to-PCI Bridge (Secondary Bus 2) - -pci:v000012D8d00008140* - ID_PRODUCT_FROM_DATABASE=PI7C8140A PCI-to-PCI Bridge - -pci:v000012D8d00008148* - ID_PRODUCT_FROM_DATABASE=PI7C8148A/PI7C8148B PCI-to-PCI Bridge - -pci:v000012D8d00008150* - ID_PRODUCT_FROM_DATABASE=PCI to PCI Bridge - -pci:v000012D8d00008152* - ID_PRODUCT_FROM_DATABASE=PI7C8152A/PI7C8152B/PI7C8152BI PCI-to-PCI Bridge - -pci:v000012D8d00008154* - ID_PRODUCT_FROM_DATABASE=PI7C8154A/PI7C8154B/PI7C8154BI PCI-to-PCI Bridge - -pci:v000012D8d0000E110* - ID_PRODUCT_FROM_DATABASE=PI7C9X110 PCI Express to PCI bridge - -pci:v000012D8d0000E110sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 CompactPCI Bridge - -pci:v000012D8d0000E130* - ID_PRODUCT_FROM_DATABASE=PCI Express to PCI-XPI7C9X130 PCI-X Bridge - -pci:v000012D9* - ID_VENDOR_FROM_DATABASE=Aculab PLC - -pci:v000012D9d00000002* - ID_PRODUCT_FROM_DATABASE=PCI Prosody - -pci:v000012D9d00000004* - ID_PRODUCT_FROM_DATABASE=cPCI Prosody - -pci:v000012D9d00000005* - ID_PRODUCT_FROM_DATABASE=Aculab E1/T1 PCI card - -pci:v000012D9d00001078* - ID_PRODUCT_FROM_DATABASE=Prosody X class e1000 device - -pci:v000012D9d00001078sv000012D9sd0000000D* - ID_PRODUCT_FROM_DATABASE=Prosody X PCI - -pci:v000012D9d00001078sv000012D9sd0000000E* - ID_PRODUCT_FROM_DATABASE=Prosody X cPCI - -pci:v000012DA* - ID_VENDOR_FROM_DATABASE=True Time Inc. - -pci:v000012DB* - ID_VENDOR_FROM_DATABASE=Annapolis Micro Systems, Inc - -pci:v000012DC* - ID_VENDOR_FROM_DATABASE=Symicron Computer Communication Ltd. - -pci:v000012DD* - ID_VENDOR_FROM_DATABASE=Management Graphics - -pci:v000012DE* - ID_VENDOR_FROM_DATABASE=Rainbow Technologies - -pci:v000012DEd00000200* - ID_PRODUCT_FROM_DATABASE=CryptoSwift CS200 - -pci:v000012DF* - ID_VENDOR_FROM_DATABASE=SBS Technologies Inc - -pci:v000012E0* - ID_VENDOR_FROM_DATABASE=Chase Research - -pci:v000012E0d00000010* - ID_PRODUCT_FROM_DATABASE=ST16C654 Quad UART - -pci:v000012E0d00000020* - ID_PRODUCT_FROM_DATABASE=ST16C654 Quad UART - -pci:v000012E0d00000030* - ID_PRODUCT_FROM_DATABASE=ST16C654 Quad UART - -pci:v000012E1* - ID_VENDOR_FROM_DATABASE=Nintendo Co, Ltd - -pci:v000012E2* - ID_VENDOR_FROM_DATABASE=Datum Inc. Bancomm-Timing Division - -pci:v000012E3* - ID_VENDOR_FROM_DATABASE=Imation Corp - Medical Imaging Systems - -pci:v000012E4* - ID_VENDOR_FROM_DATABASE=Brooktrout Technology Inc - -pci:v000012E5* - ID_VENDOR_FROM_DATABASE=Apex Semiconductor Inc - -pci:v000012E6* - ID_VENDOR_FROM_DATABASE=Cirel Systems - -pci:v000012E7* - ID_VENDOR_FROM_DATABASE=Sunsgroup Corporation - -pci:v000012E8* - ID_VENDOR_FROM_DATABASE=Crisc Corp - -pci:v000012E9* - ID_VENDOR_FROM_DATABASE=GE Spacenet - -pci:v000012EA* - ID_VENDOR_FROM_DATABASE=Zuken - -pci:v000012EB* - ID_VENDOR_FROM_DATABASE=Aureal Semiconductor - -pci:v000012EBd00000001* - ID_PRODUCT_FROM_DATABASE=Vortex 1 - -pci:v000012EBd00000001sv0000104Dsd00008036* - ID_PRODUCT_FROM_DATABASE=AU8820 Vortex Digital Audio Processor - -pci:v000012EBd00000001sv00001092sd00002000* - ID_PRODUCT_FROM_DATABASE=Sonic Impact A3D - -pci:v000012EBd00000001sv00001092sd00002100* - ID_PRODUCT_FROM_DATABASE=Sonic Impact A3D - -pci:v000012EBd00000001sv00001092sd00002110* - ID_PRODUCT_FROM_DATABASE=Sonic Impact A3D - -pci:v000012EBd00000001sv00001092sd00002200* - ID_PRODUCT_FROM_DATABASE=Sonic Impact A3D - -pci:v000012EBd00000001sv0000122Dsd00001002* - ID_PRODUCT_FROM_DATABASE=AU8820 Vortex Digital Audio Processor - -pci:v000012EBd00000001sv000012EBsd00000001* - ID_PRODUCT_FROM_DATABASE=AU8820 Vortex Digital Audio Processor - -pci:v000012EBd00000001sv00005053sd00003355* - ID_PRODUCT_FROM_DATABASE=Montego - -pci:v000012EBd00000002* - ID_PRODUCT_FROM_DATABASE=Vortex 2 - -pci:v000012EBd00000002sv0000104Dsd00008049* - ID_PRODUCT_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor - -pci:v000012EBd00000002sv0000104Dsd0000807B* - ID_PRODUCT_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor - -pci:v000012EBd00000002sv00001092sd00003000* - ID_PRODUCT_FROM_DATABASE=Monster Sound II - -pci:v000012EBd00000002sv00001092sd00003001* - ID_PRODUCT_FROM_DATABASE=Monster Sound II - -pci:v000012EBd00000002sv00001092sd00003002* - ID_PRODUCT_FROM_DATABASE=Monster Sound II - -pci:v000012EBd00000002sv00001092sd00003003* - ID_PRODUCT_FROM_DATABASE=Monster Sound II - -pci:v000012EBd00000002sv00001092sd00003004* - ID_PRODUCT_FROM_DATABASE=Monster Sound II - -pci:v000012EBd00000002sv000012EBsd00000002* - ID_PRODUCT_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor - -pci:v000012EBd00000002sv000012EBsd00000088* - ID_PRODUCT_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor - -pci:v000012EBd00000002sv0000144Dsd00003510* - ID_PRODUCT_FROM_DATABASE=AU8830 Vortex 3D Digital Audio Processor - -pci:v000012EBd00000002sv00005053sd00003356* - ID_PRODUCT_FROM_DATABASE=Montego II - -pci:v000012EBd00000003* - ID_PRODUCT_FROM_DATABASE=AU8810 Vortex Digital Audio Processor - -pci:v000012EBd00000003sv0000104Dsd00008049* - ID_PRODUCT_FROM_DATABASE=AU8810 Vortex Digital Audio Processor - -pci:v000012EBd00000003sv0000104Dsd00008077* - ID_PRODUCT_FROM_DATABASE=AU8810 Vortex Digital Audio Processor - -pci:v000012EBd00000003sv0000109Fsd00001000* - ID_PRODUCT_FROM_DATABASE=AU8810 Vortex Digital Audio Processor - -pci:v000012EBd00000003sv000012EBsd00000003* - ID_PRODUCT_FROM_DATABASE=AU8810 Vortex Digital Audio Processor - -pci:v000012EBd00000003sv00001462sd00006780* - ID_PRODUCT_FROM_DATABASE=AU8810 Vortex Digital Audio Processor - -pci:v000012EBd00000003sv000014A4sd00002073* - ID_PRODUCT_FROM_DATABASE=AU8810 Vortex Digital Audio Processor - -pci:v000012EBd00000003sv000014A4sd00002091* - ID_PRODUCT_FROM_DATABASE=AU8810 Vortex Digital Audio Processor - -pci:v000012EBd00000003sv000014A4sd00002104* - ID_PRODUCT_FROM_DATABASE=AU8810 Vortex Digital Audio Processor - -pci:v000012EBd00000003sv000014A4sd00002106* - ID_PRODUCT_FROM_DATABASE=AU8810 Vortex Digital Audio Processor - -pci:v000012EBd00008803* - ID_PRODUCT_FROM_DATABASE=Vortex 56k Software Modem - -pci:v000012EBd00008803sv000012EBsd00008803* - ID_PRODUCT_FROM_DATABASE=Vortex 56k Software Modem - -pci:v000012EC* - ID_VENDOR_FROM_DATABASE=3A International, Inc. - -pci:v000012ED* - ID_VENDOR_FROM_DATABASE=Optivision Inc. - -pci:v000012EE* - ID_VENDOR_FROM_DATABASE=Orange Micro - -pci:v000012EF* - ID_VENDOR_FROM_DATABASE=Vienna Systems - -pci:v000012F0* - ID_VENDOR_FROM_DATABASE=Pentek - -pci:v000012F1* - ID_VENDOR_FROM_DATABASE=Sorenson Vision Inc - -pci:v000012F2* - ID_VENDOR_FROM_DATABASE=Gammagraphx, Inc. - -pci:v000012F3* - ID_VENDOR_FROM_DATABASE=Radstone Technology - -pci:v000012F4* - ID_VENDOR_FROM_DATABASE=Megatel - -pci:v000012F5* - ID_VENDOR_FROM_DATABASE=Forks - -pci:v000012F6* - ID_VENDOR_FROM_DATABASE=Dawson France - -pci:v000012F7* - ID_VENDOR_FROM_DATABASE=Cognex - -pci:v000012F8* - ID_VENDOR_FROM_DATABASE=Electronic Design GmbH - -pci:v000012F8d00000002* - ID_PRODUCT_FROM_DATABASE=VideoMaker - -pci:v000012F9* - ID_VENDOR_FROM_DATABASE=Four Fold Ltd - -pci:v000012FB* - ID_VENDOR_FROM_DATABASE=Spectrum Signal Processing - -pci:v000012FBd00000001* - ID_PRODUCT_FROM_DATABASE=PMC-MAI - -pci:v000012FBd000000F5* - ID_PRODUCT_FROM_DATABASE=F5 Dakar - -pci:v000012FBd000002AD* - ID_PRODUCT_FROM_DATABASE=PMC-2MAI - -pci:v000012FBd00002ADC* - ID_PRODUCT_FROM_DATABASE=ePMC-2ADC - -pci:v000012FBd00003100* - ID_PRODUCT_FROM_DATABASE=PRO-3100 - -pci:v000012FBd00003500* - ID_PRODUCT_FROM_DATABASE=PRO-3500 - -pci:v000012FBd00004D4F* - ID_PRODUCT_FROM_DATABASE=Modena - -pci:v000012FBd00008120* - ID_PRODUCT_FROM_DATABASE=ePMC-8120 - -pci:v000012FBd0000DA62* - ID_PRODUCT_FROM_DATABASE=Daytona C6201 PCI (Hurricane) - -pci:v000012FBd0000DB62* - ID_PRODUCT_FROM_DATABASE=Ingliston XBIF - -pci:v000012FBd0000DC62* - ID_PRODUCT_FROM_DATABASE=Ingliston PLX9054 - -pci:v000012FBd0000DD62* - ID_PRODUCT_FROM_DATABASE=Ingliston JTAG/ISP - -pci:v000012FBd0000EDDC* - ID_PRODUCT_FROM_DATABASE=ePMC-MSDDC - -pci:v000012FBd0000FA01* - ID_PRODUCT_FROM_DATABASE=ePMC-FPGA - -pci:v000012FC* - ID_VENDOR_FROM_DATABASE=Capital Equipment Corp - -pci:v000012FD* - ID_VENDOR_FROM_DATABASE=I2S - -pci:v000012FE* - ID_VENDOR_FROM_DATABASE=ESD Electronic System Design GmbH - -pci:v000012FF* - ID_VENDOR_FROM_DATABASE=Lexicon - -pci:v00001300* - ID_VENDOR_FROM_DATABASE=Harman International Industries Inc - -pci:v00001302* - ID_VENDOR_FROM_DATABASE=Computer Sciences Corp - -pci:v00001303* - ID_VENDOR_FROM_DATABASE=Innovative Integration - -pci:v00001303d00000030* - ID_PRODUCT_FROM_DATABASE=X3-SDF 4-channel XMC acquisition board - -pci:v00001304* - ID_VENDOR_FROM_DATABASE=Juniper Networks - -pci:v00001305* - ID_VENDOR_FROM_DATABASE=Netphone, Inc - -pci:v00001306* - ID_VENDOR_FROM_DATABASE=Duet Technologies - -pci:v00001307* - ID_VENDOR_FROM_DATABASE=Measurement Computing - -pci:v00001307d00000001* - ID_PRODUCT_FROM_DATABASE=PCI-DAS1602/16 - -pci:v00001307d0000000B* - ID_PRODUCT_FROM_DATABASE=PCI-DIO48H - -pci:v00001307d0000000C* - ID_PRODUCT_FROM_DATABASE=PCI-PDISO8 - -pci:v00001307d0000000D* - ID_PRODUCT_FROM_DATABASE=PCI-PDISO16 - -pci:v00001307d0000000F* - ID_PRODUCT_FROM_DATABASE=PCI-DAS1200 - -pci:v00001307d00000010* - ID_PRODUCT_FROM_DATABASE=PCI-DAS1602/12 - -pci:v00001307d00000014* - ID_PRODUCT_FROM_DATABASE=PCI-DIO24H - -pci:v00001307d00000015* - ID_PRODUCT_FROM_DATABASE=PCI-DIO24H/CTR3 - -pci:v00001307d00000016* - ID_PRODUCT_FROM_DATABASE=PCI-DIO48H/CTR15 - -pci:v00001307d00000017* - ID_PRODUCT_FROM_DATABASE=PCI-DIO96H - -pci:v00001307d00000018* - ID_PRODUCT_FROM_DATABASE=PCI-CTR05 - -pci:v00001307d00000019* - ID_PRODUCT_FROM_DATABASE=PCI-DAS1200/JR - -pci:v00001307d0000001A* - ID_PRODUCT_FROM_DATABASE=PCI-DAS1001 - -pci:v00001307d0000001B* - ID_PRODUCT_FROM_DATABASE=PCI-DAS1002 - -pci:v00001307d0000001C* - ID_PRODUCT_FROM_DATABASE=PCI-DAS1602JR/16 - -pci:v00001307d0000001D* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6402/16 - -pci:v00001307d0000001E* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6402/12 - -pci:v00001307d0000001F* - ID_PRODUCT_FROM_DATABASE=PCI-DAS16/M1 - -pci:v00001307d00000020* - ID_PRODUCT_FROM_DATABASE=PCI-DDA02/12 - -pci:v00001307d00000021* - ID_PRODUCT_FROM_DATABASE=PCI-DDA04/12 - -pci:v00001307d00000022* - ID_PRODUCT_FROM_DATABASE=PCI-DDA08/12 - -pci:v00001307d00000023* - ID_PRODUCT_FROM_DATABASE=PCI-DDA02/16 - -pci:v00001307d00000024* - ID_PRODUCT_FROM_DATABASE=PCI-DDA04/16 - -pci:v00001307d00000025* - ID_PRODUCT_FROM_DATABASE=PCI-DDA08/16 - -pci:v00001307d00000026* - ID_PRODUCT_FROM_DATABASE=PCI-DAC04/12-HS - -pci:v00001307d00000027* - ID_PRODUCT_FROM_DATABASE=PCI-DAC04/16-HS - -pci:v00001307d00000028* - ID_PRODUCT_FROM_DATABASE=PCI-DIO24 - -pci:v00001307d00000029* - ID_PRODUCT_FROM_DATABASE=PCI-DAS08 - -pci:v00001307d0000002C* - ID_PRODUCT_FROM_DATABASE=PCI-INT32 - -pci:v00001307d00000033* - ID_PRODUCT_FROM_DATABASE=PCI-DUAL-AC5 - -pci:v00001307d00000034* - ID_PRODUCT_FROM_DATABASE=PCI-DAS-TC - -pci:v00001307d00000035* - ID_PRODUCT_FROM_DATABASE=PCI-DAS64/M1/16 - -pci:v00001307d00000036* - ID_PRODUCT_FROM_DATABASE=PCI-DAS64/M2/16 - -pci:v00001307d00000037* - ID_PRODUCT_FROM_DATABASE=PCI-DAS64/M3/16 - -pci:v00001307d0000004C* - ID_PRODUCT_FROM_DATABASE=PCI-DAS1000 - -pci:v00001307d0000004D* - ID_PRODUCT_FROM_DATABASE=PCI-QUAD04 - -pci:v00001307d00000052* - ID_PRODUCT_FROM_DATABASE=PCI-DAS4020/12 - -pci:v00001307d00000053* - ID_PRODUCT_FROM_DATABASE=PCIM-DDA06/16 - -pci:v00001307d00000054* - ID_PRODUCT_FROM_DATABASE=PCI-DIO96 - -pci:v00001307d0000005D* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6023 - -pci:v00001307d0000005E* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6025 - -pci:v00001307d0000005F* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6030 - -pci:v00001307d00000060* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6031 - -pci:v00001307d00000061* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6032 - -pci:v00001307d00000062* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6033 - -pci:v00001307d00000063* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6034 - -pci:v00001307d00000064* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6035 - -pci:v00001307d00000065* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6040 - -pci:v00001307d00000066* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6052 - -pci:v00001307d00000067* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6070 - -pci:v00001307d00000068* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6071 - -pci:v00001307d0000006F* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6036 - -pci:v00001307d00000070* - ID_PRODUCT_FROM_DATABASE=PCI-DAC6702 - -pci:v00001307d00000078* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6013 - -pci:v00001307d00000079* - ID_PRODUCT_FROM_DATABASE=PCI-DAS6014 - -pci:v00001307d00000115* - ID_PRODUCT_FROM_DATABASE=PCIe-DAS1602/16 - -pci:v00001308* - ID_VENDOR_FROM_DATABASE=Jato Technologies Inc. - -pci:v00001308d00000001* - ID_PRODUCT_FROM_DATABASE=NetCelerator Adapter - -pci:v00001308d00000001sv00001308sd00000001* - ID_PRODUCT_FROM_DATABASE=NetCelerator Adapter - -pci:v00001309* - ID_VENDOR_FROM_DATABASE=AB Semiconductor Ltd - -pci:v0000130A* - ID_VENDOR_FROM_DATABASE=Mitsubishi Electric Microcomputer - -pci:v0000130B* - ID_VENDOR_FROM_DATABASE=Colorgraphic Communications Corp - -pci:v0000130C* - ID_VENDOR_FROM_DATABASE=Ambex Technologies, Inc - -pci:v0000130D* - ID_VENDOR_FROM_DATABASE=Accelerix Inc - -pci:v0000130E* - ID_VENDOR_FROM_DATABASE=Yamatake-Honeywell Co. Ltd - -pci:v0000130F* - ID_VENDOR_FROM_DATABASE=Advanet Inc - -pci:v00001310* - ID_VENDOR_FROM_DATABASE=Gespac - -pci:v00001311* - ID_VENDOR_FROM_DATABASE=Videoserver, Inc - -pci:v00001312* - ID_VENDOR_FROM_DATABASE=Acuity Imaging, Inc - -pci:v00001313* - ID_VENDOR_FROM_DATABASE=Yaskawa Electric Co. - -pci:v00001315* - ID_VENDOR_FROM_DATABASE=Wavesat - -pci:v00001316* - ID_VENDOR_FROM_DATABASE=Teradyne Inc - -pci:v00001317* - ID_VENDOR_FROM_DATABASE=ADMtek - -pci:v00001317d00000981* - ID_PRODUCT_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet - -pci:v00001317d00000985* - ID_PRODUCT_FROM_DATABASE=NC100 Network Everywhere Fast Ethernet 10/100 - -pci:v00001317d00000985sv00001734sd0000100C* - ID_PRODUCT_FROM_DATABASE=Scenic N300 ADMtek AN983 10/100 Mbps PCI Adapter - -pci:v00001317d00001985* - ID_PRODUCT_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet - -pci:v00001317d00001985sv00001385sd0000511A* - ID_PRODUCT_FROM_DATABASE=FA511 - -pci:v00001317d00001985sv00001395sd00002103* - ID_PRODUCT_FROM_DATABASE=CB100-EZ (4-LED version) - -pci:v00001317d00002850* - ID_PRODUCT_FROM_DATABASE=HSP MicroModem 56 - -pci:v00001317d00005120* - ID_PRODUCT_FROM_DATABASE=ADM5120 OpenGate System-on-Chip - -pci:v00001317d00008201* - ID_PRODUCT_FROM_DATABASE=ADM8211 802.11b Wireless Interface - -pci:v00001317d00008201sv000010B8sd00002635* - ID_PRODUCT_FROM_DATABASE=SMC2635W v1 802.11b Wireless Cardbus Adapter - -pci:v00001317d00008201sv00001317sd00008201* - ID_PRODUCT_FROM_DATABASE=SMC2635W v2 802.11b Wireless Cardbus Adapter - -pci:v00001317d00008211* - ID_PRODUCT_FROM_DATABASE=ADM8211 802.11b Wireless Interface - -pci:v00001317d00009511* - ID_PRODUCT_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet - -pci:v00001318* - ID_VENDOR_FROM_DATABASE=Packet Engines Inc. - -pci:v00001318d00000911* - ID_PRODUCT_FROM_DATABASE=GNIC-II PCI Gigabit Ethernet [Hamachi] - -pci:v00001319* - ID_VENDOR_FROM_DATABASE=Fortemedia, Inc - -pci:v00001319d00000801* - ID_PRODUCT_FROM_DATABASE=Xwave QS3000A [FM801] - -pci:v00001319d00000801sv00001319sd00001319* - ID_PRODUCT_FROM_DATABASE=FM801 PCI Audio - -pci:v00001319d00000802* - ID_PRODUCT_FROM_DATABASE=Xwave QS3000A [FM801 game port] - -pci:v00001319d00000802sv00001319sd00001319* - ID_PRODUCT_FROM_DATABASE=FM801 PCI Joystick - -pci:v00001319d00001000* - ID_PRODUCT_FROM_DATABASE=FM801 PCI Audio - -pci:v00001319d00001001* - ID_PRODUCT_FROM_DATABASE=FM801 PCI Joystick - -pci:v0000131A* - ID_VENDOR_FROM_DATABASE=Finisar Corp. - -pci:v0000131C* - ID_VENDOR_FROM_DATABASE=Nippon Electro-Sensory Devices Corp - -pci:v0000131D* - ID_VENDOR_FROM_DATABASE=Sysmic, Inc. - -pci:v0000131E* - ID_VENDOR_FROM_DATABASE=Xinex Networks Inc - -pci:v0000131F* - ID_VENDOR_FROM_DATABASE=Siig Inc - -pci:v0000131Fd00001000* - ID_PRODUCT_FROM_DATABASE=CyberSerial (1-port) 16550 - -pci:v0000131Fd00001001* - ID_PRODUCT_FROM_DATABASE=CyberSerial (1-port) 16650 - -pci:v0000131Fd00001002* - ID_PRODUCT_FROM_DATABASE=CyberSerial (1-port) 16850 - -pci:v0000131Fd00001010* - ID_PRODUCT_FROM_DATABASE=Duet 1S(16550)+1P - -pci:v0000131Fd00001011* - ID_PRODUCT_FROM_DATABASE=Duet 1S(16650)+1P - -pci:v0000131Fd00001012* - ID_PRODUCT_FROM_DATABASE=Duet 1S(16850)+1P - -pci:v0000131Fd00001020* - ID_PRODUCT_FROM_DATABASE=CyberParallel (1-port) - -pci:v0000131Fd00001021* - ID_PRODUCT_FROM_DATABASE=CyberParallel (2-port) - -pci:v0000131Fd00001030* - ID_PRODUCT_FROM_DATABASE=CyberSerial (2-port) 16550 - -pci:v0000131Fd00001031* - ID_PRODUCT_FROM_DATABASE=CyberSerial (2-port) 16650 - -pci:v0000131Fd00001032* - ID_PRODUCT_FROM_DATABASE=CyberSerial (2-port) 16850 - -pci:v0000131Fd00001034* - ID_PRODUCT_FROM_DATABASE=Trio 2S(16550)+1P - -pci:v0000131Fd00001035* - ID_PRODUCT_FROM_DATABASE=Trio 2S(16650)+1P - -pci:v0000131Fd00001036* - ID_PRODUCT_FROM_DATABASE=Trio 2S(16850)+1P - -pci:v0000131Fd00001050* - ID_PRODUCT_FROM_DATABASE=CyberSerial (4-port) 16550 - -pci:v0000131Fd00001051* - ID_PRODUCT_FROM_DATABASE=CyberSerial (4-port) 16650 - -pci:v0000131Fd00001052* - ID_PRODUCT_FROM_DATABASE=CyberSerial (4-port) 16850 - -pci:v0000131Fd00002000* - ID_PRODUCT_FROM_DATABASE=CyberSerial (1-port) 16550 - -pci:v0000131Fd00002001* - ID_PRODUCT_FROM_DATABASE=CyberSerial (1-port) 16650 - -pci:v0000131Fd00002002* - ID_PRODUCT_FROM_DATABASE=CyberSerial (1-port) 16850 - -pci:v0000131Fd00002010* - ID_PRODUCT_FROM_DATABASE=Duet 1S(16550)+1P - -pci:v0000131Fd00002011* - ID_PRODUCT_FROM_DATABASE=Duet 1S(16650)+1P - -pci:v0000131Fd00002012* - ID_PRODUCT_FROM_DATABASE=Duet 1S(16850)+1P - -pci:v0000131Fd00002020* - ID_PRODUCT_FROM_DATABASE=CyberParallel (1-port) - -pci:v0000131Fd00002021* - ID_PRODUCT_FROM_DATABASE=CyberParallel (2-port) - -pci:v0000131Fd00002030* - ID_PRODUCT_FROM_DATABASE=CyberSerial (2-port) 16550 - -pci:v0000131Fd00002030sv0000131Fsd00002030* - ID_PRODUCT_FROM_DATABASE=PCI Serial Card - -pci:v0000131Fd00002031* - ID_PRODUCT_FROM_DATABASE=CyberSerial (2-port) 16650 - -pci:v0000131Fd00002032* - ID_PRODUCT_FROM_DATABASE=CyberSerial (2-port) 16850 - -pci:v0000131Fd00002040* - ID_PRODUCT_FROM_DATABASE=Trio 1S(16550)+2P - -pci:v0000131Fd00002041* - ID_PRODUCT_FROM_DATABASE=Trio 1S(16650)+2P - -pci:v0000131Fd00002042* - ID_PRODUCT_FROM_DATABASE=Trio 1S(16850)+2P - -pci:v0000131Fd00002050* - ID_PRODUCT_FROM_DATABASE=CyberSerial (4-port) 16550 - -pci:v0000131Fd00002051* - ID_PRODUCT_FROM_DATABASE=CyberSerial (4-port) 16650 - -pci:v0000131Fd00002052* - ID_PRODUCT_FROM_DATABASE=CyberSerial (4-port) 16850 - -pci:v0000131Fd00002060* - ID_PRODUCT_FROM_DATABASE=Trio 2S(16550)+1P - -pci:v0000131Fd00002061* - ID_PRODUCT_FROM_DATABASE=Trio 2S(16650)+1P - -pci:v0000131Fd00002062* - ID_PRODUCT_FROM_DATABASE=Trio 2S(16850)+1P - -pci:v0000131Fd00002081* - ID_PRODUCT_FROM_DATABASE=CyberSerial (8-port) ST16654 - -pci:v00001320* - ID_VENDOR_FROM_DATABASE=Crypto AG - -pci:v00001321* - ID_VENDOR_FROM_DATABASE=Arcobel Graphics BV - -pci:v00001322* - ID_VENDOR_FROM_DATABASE=MTT Co., Ltd - -pci:v00001323* - ID_VENDOR_FROM_DATABASE=Dome Inc - -pci:v00001324* - ID_VENDOR_FROM_DATABASE=Sphere Communications - -pci:v00001325* - ID_VENDOR_FROM_DATABASE=Salix Technologies, Inc - -pci:v00001326* - ID_VENDOR_FROM_DATABASE=Seachange international - -pci:v00001327* - ID_VENDOR_FROM_DATABASE=Voss scientific - -pci:v00001328* - ID_VENDOR_FROM_DATABASE=quadrant international - -pci:v00001329* - ID_VENDOR_FROM_DATABASE=Productivity Enhancement - -pci:v0000132A* - ID_VENDOR_FROM_DATABASE=Microcom Inc. - -pci:v0000132B* - ID_VENDOR_FROM_DATABASE=Broadband Technologies - -pci:v0000132C* - ID_VENDOR_FROM_DATABASE=Micrel Inc - -pci:v0000132D* - ID_VENDOR_FROM_DATABASE=Integrated Silicon Solution, Inc. - -pci:v00001330* - ID_VENDOR_FROM_DATABASE=MMC Networks - -pci:v00001331* - ID_VENDOR_FROM_DATABASE=RadiSys Corporation - -pci:v00001331d00000030* - ID_PRODUCT_FROM_DATABASE=ENP-2611 - -pci:v00001331d00008200* - ID_PRODUCT_FROM_DATABASE=82600 Host Bridge - -pci:v00001331d00008201* - ID_PRODUCT_FROM_DATABASE=82600 IDE - -pci:v00001331d00008202* - ID_PRODUCT_FROM_DATABASE=82600 USB - -pci:v00001331d00008210* - ID_PRODUCT_FROM_DATABASE=82600 PCI Bridge - -pci:v00001332* - ID_VENDOR_FROM_DATABASE=Micro Memory - -pci:v00001332d00005415* - ID_PRODUCT_FROM_DATABASE=MM-5415CN PCI Memory Module with Battery Backup - -pci:v00001332d00005425* - ID_PRODUCT_FROM_DATABASE=MM-5425CN PCI 64/66 Memory Module with Battery Backup - -pci:v00001332d00006140* - ID_PRODUCT_FROM_DATABASE=MM-6140D - -pci:v00001334* - ID_VENDOR_FROM_DATABASE=Redcreek Communications, Inc - -pci:v00001335* - ID_VENDOR_FROM_DATABASE=Videomail, Inc - -pci:v00001337* - ID_VENDOR_FROM_DATABASE=Third Planet Publishing - -pci:v00001338* - ID_VENDOR_FROM_DATABASE=BT Electronics - -pci:v0000133A* - ID_VENDOR_FROM_DATABASE=Vtel Corp - -pci:v0000133B* - ID_VENDOR_FROM_DATABASE=Softcom Microsystems - -pci:v0000133C* - ID_VENDOR_FROM_DATABASE=Holontech Corp - -pci:v0000133D* - ID_VENDOR_FROM_DATABASE=SS Technologies - -pci:v0000133E* - ID_VENDOR_FROM_DATABASE=Virtual Computer Corp - -pci:v0000133F* - ID_VENDOR_FROM_DATABASE=SCM Microsystems - -pci:v00001340* - ID_VENDOR_FROM_DATABASE=Atalla Corp - -pci:v00001341* - ID_VENDOR_FROM_DATABASE=Kyoto Microcomputer Co - -pci:v00001342* - ID_VENDOR_FROM_DATABASE=Promax Systems Inc - -pci:v00001343* - ID_VENDOR_FROM_DATABASE=Phylon Communications Inc - -pci:v00001344* - ID_VENDOR_FROM_DATABASE=Micron Technology Inc - -pci:v00001344d00005150* - ID_PRODUCT_FROM_DATABASE=RealSSD P320h - -pci:v00001344d00005151* - ID_PRODUCT_FROM_DATABASE=RealSSD P320m - -pci:v00001344d00005152* - ID_PRODUCT_FROM_DATABASE=RealSSD P320s - -pci:v00001344d00005153* - ID_PRODUCT_FROM_DATABASE=RealSSD P325m - -pci:v00001344d00005160* - ID_PRODUCT_FROM_DATABASE=RealSSD P420h - -pci:v00001344d00005161* - ID_PRODUCT_FROM_DATABASE=RealSSD P420m - -pci:v00001344d00005163* - ID_PRODUCT_FROM_DATABASE=RealSSD P425m - -pci:v00001345* - ID_VENDOR_FROM_DATABASE=Arescom Inc - -pci:v00001347* - ID_VENDOR_FROM_DATABASE=Odetics - -pci:v00001349* - ID_VENDOR_FROM_DATABASE=Sumitomo Electric Industries, Ltd. - -pci:v0000134A* - ID_VENDOR_FROM_DATABASE=DTC Technology Corp. - -pci:v0000134Ad00000001* - ID_PRODUCT_FROM_DATABASE=Domex 536 - -pci:v0000134Ad00000002* - ID_PRODUCT_FROM_DATABASE=Domex DMX3194UP SCSI Adapter - -pci:v0000134B* - ID_VENDOR_FROM_DATABASE=ARK Research Corp. - -pci:v0000134C* - ID_VENDOR_FROM_DATABASE=Chori Joho System Co. Ltd - -pci:v0000134D* - ID_VENDOR_FROM_DATABASE=PCTel Inc - -pci:v0000134Dd00002189* - ID_PRODUCT_FROM_DATABASE=HSP56 MicroModem - -pci:v0000134Dd00002486* - ID_PRODUCT_FROM_DATABASE=2304WT V.92 MDC Modem - -pci:v0000134Dd00007890* - ID_PRODUCT_FROM_DATABASE=HSP MicroModem 56 - -pci:v0000134Dd00007890sv0000134Dsd00000001* - ID_PRODUCT_FROM_DATABASE=PCT789 adapter - -pci:v0000134Dd00007891* - ID_PRODUCT_FROM_DATABASE=HSP MicroModem 56 - -pci:v0000134Dd00007891sv0000134Dsd00000001* - ID_PRODUCT_FROM_DATABASE=HSP MicroModem 56 - -pci:v0000134Dd00007892* - ID_PRODUCT_FROM_DATABASE=HSP MicroModem 56 - -pci:v0000134Dd00007893* - ID_PRODUCT_FROM_DATABASE=HSP MicroModem 56 - -pci:v0000134Dd00007894* - ID_PRODUCT_FROM_DATABASE=HSP MicroModem 56 - -pci:v0000134Dd00007895* - ID_PRODUCT_FROM_DATABASE=HSP MicroModem 56 - -pci:v0000134Dd00007896* - ID_PRODUCT_FROM_DATABASE=HSP MicroModem 56 - -pci:v0000134Dd00007897* - ID_PRODUCT_FROM_DATABASE=HSP MicroModem 56 - -pci:v0000134E* - ID_VENDOR_FROM_DATABASE=CSTI - -pci:v0000134F* - ID_VENDOR_FROM_DATABASE=Algo System Co Ltd - -pci:v00001350* - ID_VENDOR_FROM_DATABASE=Systec Co. Ltd - -pci:v00001351* - ID_VENDOR_FROM_DATABASE=Sonix Inc - -pci:v00001353* - ID_VENDOR_FROM_DATABASE=Vierling Communication SAS - -pci:v00001353d00000002* - ID_PRODUCT_FROM_DATABASE=Proserver - -pci:v00001353d00000003* - ID_PRODUCT_FROM_DATABASE=PCI-FUT - -pci:v00001353d00000004* - ID_PRODUCT_FROM_DATABASE=PCI-S0 - -pci:v00001353d00000005* - ID_PRODUCT_FROM_DATABASE=PCI-FUT-S0 - -pci:v00001354* - ID_VENDOR_FROM_DATABASE=Dwave System Inc - -pci:v00001355* - ID_VENDOR_FROM_DATABASE=Kratos Analytical Ltd - -pci:v00001356* - ID_VENDOR_FROM_DATABASE=The Logical Co - -pci:v00001359* - ID_VENDOR_FROM_DATABASE=Prisa Networks - -pci:v0000135A* - ID_VENDOR_FROM_DATABASE=Brain Boxes - -pci:v0000135Ad00000A61* - ID_PRODUCT_FROM_DATABASE=UC-324 [VELOCITY RS422/485] - -pci:v0000135B* - ID_VENDOR_FROM_DATABASE=Giganet Inc - -pci:v0000135C* - ID_VENDOR_FROM_DATABASE=Quatech Inc - -pci:v0000135Cd00000010* - ID_PRODUCT_FROM_DATABASE=QSC-100 - -pci:v0000135Cd00000020* - ID_PRODUCT_FROM_DATABASE=DSC-100 - -pci:v0000135Cd00000030* - ID_PRODUCT_FROM_DATABASE=DSC-200/300 - -pci:v0000135Cd00000040* - ID_PRODUCT_FROM_DATABASE=QSC-200/300 - -pci:v0000135Cd00000050* - ID_PRODUCT_FROM_DATABASE=ESC-100D - -pci:v0000135Cd00000060* - ID_PRODUCT_FROM_DATABASE=ESC-100M - -pci:v0000135Cd000000F0* - ID_PRODUCT_FROM_DATABASE=MPAC-100 Syncronous Serial Card (Zilog 85230) - -pci:v0000135Cd00000170* - ID_PRODUCT_FROM_DATABASE=QSCLP-100 - -pci:v0000135Cd00000180* - ID_PRODUCT_FROM_DATABASE=DSCLP-100 - -pci:v0000135Cd00000190* - ID_PRODUCT_FROM_DATABASE=SSCLP-100 - -pci:v0000135Cd000001A0* - ID_PRODUCT_FROM_DATABASE=QSCLP-200/300 - -pci:v0000135Cd000001B0* - ID_PRODUCT_FROM_DATABASE=DSCLP-200/300 - -pci:v0000135Cd000001C0* - ID_PRODUCT_FROM_DATABASE=SSCLP-200/300 - -pci:v0000135Cd00000258* - ID_PRODUCT_FROM_DATABASE=DSPSX-200/300 - -pci:v0000135D* - ID_VENDOR_FROM_DATABASE=ABB Network Partner AB - -pci:v0000135E* - ID_VENDOR_FROM_DATABASE=Sealevel Systems Inc - -pci:v0000135Ed00005101* - ID_PRODUCT_FROM_DATABASE=Route 56.PCI - Multi-Protocol Serial Interface (Zilog Z16C32) - -pci:v0000135Ed00007101* - ID_PRODUCT_FROM_DATABASE=Single Port RS-232/422/485/530 - -pci:v0000135Ed00007201* - ID_PRODUCT_FROM_DATABASE=Dual Port RS-232/422/485 Interface - -pci:v0000135Ed00007202* - ID_PRODUCT_FROM_DATABASE=Dual Port RS-232 Interface - -pci:v0000135Ed00007401* - ID_PRODUCT_FROM_DATABASE=Four Port RS-232 Interface - -pci:v0000135Ed00007402* - ID_PRODUCT_FROM_DATABASE=Four Port RS-422/485 Interface - -pci:v0000135Ed00007801* - ID_PRODUCT_FROM_DATABASE=Eight Port RS-232 Interface - -pci:v0000135Ed00007804* - ID_PRODUCT_FROM_DATABASE=Eight Port RS-232/422/485 Interface - -pci:v0000135Ed00008001* - ID_PRODUCT_FROM_DATABASE=8001 Digital I/O Adapter - -pci:v0000135F* - ID_VENDOR_FROM_DATABASE=I-Data International A-S - -pci:v00001360* - ID_VENDOR_FROM_DATABASE=Meinberg Funkuhren - -pci:v00001360d00000101* - ID_PRODUCT_FROM_DATABASE=PCI32 DCF77 Radio Clock - -pci:v00001360d00000102* - ID_PRODUCT_FROM_DATABASE=PCI509 DCF77 Radio Clock - -pci:v00001360d00000103* - ID_PRODUCT_FROM_DATABASE=PCI510 DCF77 Radio Clock - -pci:v00001360d00000104* - ID_PRODUCT_FROM_DATABASE=PCI511 DCF77 Radio Clock - -pci:v00001360d00000105* - ID_PRODUCT_FROM_DATABASE=PEX511 DCF77 Radio Clock (PCI Express) - -pci:v00001360d00000106* - ID_PRODUCT_FROM_DATABASE=PZF180PEX High Precision DCF77 Radio Clock (PCI Express) - -pci:v00001360d00000201* - ID_PRODUCT_FROM_DATABASE=GPS167PCI GPS Receiver - -pci:v00001360d00000202* - ID_PRODUCT_FROM_DATABASE=GPS168PCI GPS Receiver - -pci:v00001360d00000203* - ID_PRODUCT_FROM_DATABASE=GPS169PCI GPS Receiver - -pci:v00001360d00000204* - ID_PRODUCT_FROM_DATABASE=GPS170PCI GPS Receiver - -pci:v00001360d00000205* - ID_PRODUCT_FROM_DATABASE=GPS170PEX GPS Receiver (PCI Express) - -pci:v00001360d00000206* - ID_PRODUCT_FROM_DATABASE=GPS180PEX GPS Receiver (PCI Express) - -pci:v00001360d00000301* - ID_PRODUCT_FROM_DATABASE=TCR510PCI IRIG Timecode Reader - -pci:v00001360d00000302* - ID_PRODUCT_FROM_DATABASE=TCR167PCI IRIG Timecode Reader - -pci:v00001360d00000303* - ID_PRODUCT_FROM_DATABASE=TCR511PCI IRIG Timecode Reader - -pci:v00001360d00000304* - ID_PRODUCT_FROM_DATABASE=TCR511PEX IRIG Timecode Reader (PCI Express) - -pci:v00001360d00000305* - ID_PRODUCT_FROM_DATABASE=TCR170PEX IRIG Timecode Reader (PCI Express) - -pci:v00001360d00000306* - ID_PRODUCT_FROM_DATABASE=TCR180PEX IRIG Timecode Reader (PCI Express) - -pci:v00001360d00000501* - ID_PRODUCT_FROM_DATABASE=PTP270PEX PTP/IEEE1588 slave card (PCI Express) - -pci:v00001360d00000601* - ID_PRODUCT_FROM_DATABASE=FRC511PEX Free Running Clock (PCI Express) - -pci:v00001361* - ID_VENDOR_FROM_DATABASE=Soliton Systems K.K. - -pci:v00001362* - ID_VENDOR_FROM_DATABASE=Fujifacom Corporation - -pci:v00001363* - ID_VENDOR_FROM_DATABASE=Phoenix Technology Ltd - -pci:v00001364* - ID_VENDOR_FROM_DATABASE=ATM Communications Inc - -pci:v00001365* - ID_VENDOR_FROM_DATABASE=Hypercope GmbH - -pci:v00001366* - ID_VENDOR_FROM_DATABASE=Teijin Seiki Co. Ltd - -pci:v00001367* - ID_VENDOR_FROM_DATABASE=Hitachi Zosen Corporation - -pci:v00001368* - ID_VENDOR_FROM_DATABASE=Skyware Corporation - -pci:v00001369* - ID_VENDOR_FROM_DATABASE=Digigram - -pci:v0000136A* - ID_VENDOR_FROM_DATABASE=High Soft Tech - -pci:v0000136Ad00000004* - ID_PRODUCT_FROM_DATABASE=HST Saphir VII mini PCI - -pci:v0000136Ad00000007* - ID_PRODUCT_FROM_DATABASE=HST Saphir III E MultiLink 4 - -pci:v0000136Ad00000008* - ID_PRODUCT_FROM_DATABASE=HST Saphir III E MultiLink 8 - -pci:v0000136Ad0000000A* - ID_PRODUCT_FROM_DATABASE=HST Saphir III E MultiLink 2 - -pci:v0000136B* - ID_VENDOR_FROM_DATABASE=Kawasaki Steel Corporation - -pci:v0000136Bd0000FF01* - ID_PRODUCT_FROM_DATABASE=KL5A72002 Motion JPEG - -pci:v0000136C* - ID_VENDOR_FROM_DATABASE=Adtek System Science Co Ltd - -pci:v0000136D* - ID_VENDOR_FROM_DATABASE=Gigalabs Inc - -pci:v0000136F* - ID_VENDOR_FROM_DATABASE=Applied Magic Inc - -pci:v00001370* - ID_VENDOR_FROM_DATABASE=ATL Products - -pci:v00001371* - ID_VENDOR_FROM_DATABASE=CNet Technology Inc - -pci:v00001371d0000434E* - ID_PRODUCT_FROM_DATABASE=GigaCard Network Adapter - -pci:v00001371d0000434Esv00001371sd0000434E* - ID_PRODUCT_FROM_DATABASE=N-Way PCI-Bus Giga-Card 1000/100/10Mbps(L) - -pci:v00001373* - ID_VENDOR_FROM_DATABASE=Silicon Vision Inc - -pci:v00001374* - ID_VENDOR_FROM_DATABASE=Silicom Ltd. - -pci:v00001374d00000024* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Giga Ethernet BGE Bypass Server Adapter - -pci:v00001374d00000025* - ID_PRODUCT_FROM_DATABASE=Silicom Quad port Giga Ethernet BGE Bypass Server Adapter - -pci:v00001374d00000026* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Fiber Giga Ethernet 546 Bypass Server Adapter - -pci:v00001374d00000027* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Fiber LX Giga Ethernet 546 Bypass Server Adapter - -pci:v00001374d00000029* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Copper Giga Ethernet 546GB Bypass Server Adapter - -pci:v00001374d0000002A* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Fiber Giga Ethernet 546 TAP/Bypass Server Adapter - -pci:v00001374d0000002B* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter (PXE2TBI) - -pci:v00001374d0000002C* - ID_PRODUCT_FROM_DATABASE=Silicom Quad port Copper Giga Ethernet 546GB Bypass Server Adapter (PXG4BPI) - -pci:v00001374d0000002D* - ID_PRODUCT_FROM_DATABASE=Silicom Quad port Fiber-SX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI) - -pci:v00001374d0000002E* - ID_PRODUCT_FROM_DATABASE=Silicom Quad port Fiber-LX Giga Ethernet 546GB Bypass Server Adapter (PXG4BPFI-LX) - -pci:v00001374d0000002F* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Fiber-SX Giga Ethernet 546GB Low profile Bypass Server Adapter (PXG2BPFIL) - -pci:v00001374d00000030* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Fiber-LX Giga Ethernet 546GB Low profile Bypass Server Adapter - -pci:v00001374d00000031* - ID_PRODUCT_FROM_DATABASE=Silicom Quad port Copper Giga Ethernet PCI-E Bypass Server Adapter - -pci:v00001374d00000032* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Copper Fast Ethernet 546 TAP/Bypass Server Adapter - -pci:v00001374d00000034* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter - -pci:v00001374d00000035* - ID_PRODUCT_FROM_DATABASE=Silicom Quad port Copper Giga Ethernet PCI-E BGE Bypass Server Adapter - -pci:v00001374d00000036* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Fiber Giga Ethernet PCI-E BGE Bypass Server Adapter - -pci:v00001374d00000037* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Copper Ethernet PCI-E Intel based Bypass Server Adapter - -pci:v00001374d00000038* - ID_PRODUCT_FROM_DATABASE=Silicom Quad port Copper Ethernet PCI-E Intel based Bypass Server Adapter - -pci:v00001374d00000039* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Fiber-SX Ethernet PCI-E Intel based Bypass Server Adapter - -pci:v00001374d0000003A* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Fiber-LX Ethernet PCI-E Intel based Bypass Server Adapter - -pci:v00001374d0000003B* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Fiber Ethernet PMC Intel based Bypass Server Adapter (PMCX2BPFI) - -pci:v00001374d0000003C* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Copper Ethernet PCI-X BGE based Bypass Server Adapter (PXG2BPRB) - -pci:v00001374d0000003D* - ID_PRODUCT_FROM_DATABASE=2-port Copper GBE Bypass with Caviume 1010 PCI-X - -pci:v00001374d0000003E* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Fiber Giga Ethernet PCI-E 571 TAP/Bypass Server Adapter (PEG2TBFI) - -pci:v00001374d0000003F* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Copper Giga Ethernet PCI-X 546 TAP/Bypass Server Adapter (PXG2TBI) - -pci:v00001374d00000040* - ID_PRODUCT_FROM_DATABASE=Silicom Quad port Fiber-SX Giga Ethernet 571 Bypass Server Adapter (PEG4BPFI) - -pci:v00001374d00000042* - ID_PRODUCT_FROM_DATABASE=4-port Copper GBE PMC-X Bypass - -pci:v00001374d00000043* - ID_PRODUCT_FROM_DATABASE=Silicom Quad port Fiber-SX Giga Ethernet 546 Bypass Server Adapter (PXG4BPFID) - -pci:v00001374d00000045* - ID_PRODUCT_FROM_DATABASE=Silicom 6 port Copper Giga Ethernet 546 Bypass Server Adapter (PXG6BPI) - -pci:v00001374d00000046* - ID_PRODUCT_FROM_DATABASE=4-port bypass PCI-E w disconnect low profile - -pci:v00001374d00000047* - ID_PRODUCT_FROM_DATABASE=Silicom Dual port Fiber-SX Giga Ethernet 571 Bypass Disconnect Server Adapter (PEG2BPFID) - -pci:v00001374d0000004A* - ID_PRODUCT_FROM_DATABASE=Silicom Quad port Fiber-LX Giga Ethernet 571 Bypass Server Adapter (PEG4BPFI-LX) - -pci:v00001374d0000004D* - ID_PRODUCT_FROM_DATABASE=Dual port Copper Giga Ethernet PCI-E Bypass Server Adapter - -pci:v00001374d00000401* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet ExpressModule Bypass Server Adapter - -pci:v00001374d00000420* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet ExpressModule Bypass Server Adapter - -pci:v00001374d00000460* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet Express Module Bypass Server Adapter - -pci:v00001374d00000461* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet ExpressModule Bypass Server Adapter - -pci:v00001374d00000462* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet ExpressModule Bypass Server Adapter - -pci:v00001374d00000470* - ID_PRODUCT_FROM_DATABASE=Octal-port Copper Gigabit Ethernet Express Module Bypass Server Adapter - -pci:v00001374d00000482* - ID_PRODUCT_FROM_DATABASE=Dual-port Fiber (SR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter - -pci:v00001374d00000483* - ID_PRODUCT_FROM_DATABASE=Dual-port Fiber (LR) 10 Gigabit Ethernet ExpressModule Bypass Server Adapter - -pci:v00001375* - ID_VENDOR_FROM_DATABASE=Argosystems Inc - -pci:v00001376* - ID_VENDOR_FROM_DATABASE=LMC - -pci:v00001377* - ID_VENDOR_FROM_DATABASE=Electronic Equipment Production & Distribution GmbH - -pci:v00001378* - ID_VENDOR_FROM_DATABASE=Telemann Co. Ltd - -pci:v00001379* - ID_VENDOR_FROM_DATABASE=Asahi Kasei Microsystems Co Ltd - -pci:v0000137A* - ID_VENDOR_FROM_DATABASE=Mark of the Unicorn Inc - -pci:v0000137Ad00000001* - ID_PRODUCT_FROM_DATABASE=PCI-324 Audiowire Interface - -pci:v0000137B* - ID_VENDOR_FROM_DATABASE=PPT Vision - -pci:v0000137C* - ID_VENDOR_FROM_DATABASE=Iwatsu Electric Co Ltd - -pci:v0000137D* - ID_VENDOR_FROM_DATABASE=Dynachip Corporation - -pci:v0000137E* - ID_VENDOR_FROM_DATABASE=Patriot Scientific Corporation - -pci:v0000137F* - ID_VENDOR_FROM_DATABASE=Japan Satellite Systems Inc - -pci:v00001380* - ID_VENDOR_FROM_DATABASE=Sanritz Automation Co Ltd - -pci:v00001381* - ID_VENDOR_FROM_DATABASE=Brains Co. Ltd - -pci:v00001382* - ID_VENDOR_FROM_DATABASE=Marian - Electronic & Software - -pci:v00001382d00000001* - ID_PRODUCT_FROM_DATABASE=ARC88 audio recording card - -pci:v00001382d00002008* - ID_PRODUCT_FROM_DATABASE=Prodif 96 Pro sound system - -pci:v00001382d00002048* - ID_PRODUCT_FROM_DATABASE=Prodif Plus sound system - -pci:v00001382d00002088* - ID_PRODUCT_FROM_DATABASE=Marc 8 Midi sound system - -pci:v00001382d000020C8* - ID_PRODUCT_FROM_DATABASE=Marc A sound system - -pci:v00001382d00004008* - ID_PRODUCT_FROM_DATABASE=Marc 2 sound system - -pci:v00001382d00004010* - ID_PRODUCT_FROM_DATABASE=Marc 2 Pro sound system - -pci:v00001382d00004048* - ID_PRODUCT_FROM_DATABASE=Marc 4 MIDI sound system - -pci:v00001382d00004088* - ID_PRODUCT_FROM_DATABASE=Marc 4 Digi sound system - -pci:v00001382d00004248* - ID_PRODUCT_FROM_DATABASE=Marc X sound system - -pci:v00001382d00004424* - ID_PRODUCT_FROM_DATABASE=TRACE D4 Sound System - -pci:v00001383* - ID_VENDOR_FROM_DATABASE=Controlnet Inc - -pci:v00001384* - ID_VENDOR_FROM_DATABASE=Reality Simulation Systems Inc - -pci:v00001385* - ID_VENDOR_FROM_DATABASE=Netgear - -pci:v00001385d0000006B* - ID_PRODUCT_FROM_DATABASE=WA301 802.11b Wireless PCI Adapter - -pci:v00001385d00004100* - ID_PRODUCT_FROM_DATABASE=MA301 802.11b Wireless PCI Adapter - -pci:v00001385d00004601* - ID_PRODUCT_FROM_DATABASE=WAG511 802.11a/b/g Dual Band Wireless PC Card - -pci:v00001385d0000620A* - ID_PRODUCT_FROM_DATABASE=GA620 Gigabit Ethernet - -pci:v00001385d0000630A* - ID_PRODUCT_FROM_DATABASE=GA630 Gigabit Ethernet - -pci:v00001386* - ID_VENDOR_FROM_DATABASE=Video Domain Technologies - -pci:v00001387* - ID_VENDOR_FROM_DATABASE=Systran Corp - -pci:v00001388* - ID_VENDOR_FROM_DATABASE=Hitachi Information Technology Co Ltd - -pci:v00001389* - ID_VENDOR_FROM_DATABASE=Applicom International - -pci:v00001389d00000001* - ID_PRODUCT_FROM_DATABASE=PCI1500PFB [Intelligent fieldbus adaptor] - -pci:v0000138A* - ID_VENDOR_FROM_DATABASE=Fusion Micromedia Corp - -pci:v0000138Ad0000003D* - ID_PRODUCT_FROM_DATABASE=VFS491 Validity Sensor - -pci:v0000138B* - ID_VENDOR_FROM_DATABASE=Tokimec Inc - -pci:v0000138C* - ID_VENDOR_FROM_DATABASE=Silicon Reality - -pci:v0000138D* - ID_VENDOR_FROM_DATABASE=Future Techno Designs pte Ltd - -pci:v0000138E* - ID_VENDOR_FROM_DATABASE=Basler GmbH - -pci:v0000138F* - ID_VENDOR_FROM_DATABASE=Patapsco Designs Inc - -pci:v00001390* - ID_VENDOR_FROM_DATABASE=Concept Development Inc - -pci:v00001391* - ID_VENDOR_FROM_DATABASE=Development Concepts Inc - -pci:v00001392* - ID_VENDOR_FROM_DATABASE=Medialight Inc - -pci:v00001393* - ID_VENDOR_FROM_DATABASE=Moxa Technologies Co Ltd - -pci:v00001393d00000001* - ID_PRODUCT_FROM_DATABASE=UC7000 Serial - -pci:v00001393d00001020* - ID_PRODUCT_FROM_DATABASE=CP102 (2-port RS-232 PCI) - -pci:v00001393d00001021* - ID_PRODUCT_FROM_DATABASE=CP102UL (2-port RS-232 Universal PCI) - -pci:v00001393d00001022* - ID_PRODUCT_FROM_DATABASE=CP102U (2-port RS-232 Universal PCI) - -pci:v00001393d00001023* - ID_PRODUCT_FROM_DATABASE=CP-102UF - -pci:v00001393d00001024* - ID_PRODUCT_FROM_DATABASE=CP-102E (2-port RS-232 Smart PCI Express Serial Board) - -pci:v00001393d00001025* - ID_PRODUCT_FROM_DATABASE=CP-102EL (2-port RS-232 Smart PCI Express Serial Board) - -pci:v00001393d00001040* - ID_PRODUCT_FROM_DATABASE=Smartio C104H/PCI - -pci:v00001393d00001041* - ID_PRODUCT_FROM_DATABASE=CP104U (4-port RS-232 Universal PCI) - -pci:v00001393d00001042* - ID_PRODUCT_FROM_DATABASE=CP104JU (4-port RS-232 Universal PCI) - -pci:v00001393d00001043* - ID_PRODUCT_FROM_DATABASE=CP104EL (4-port RS-232 Smart PCI Express) - -pci:v00001393d00001044* - ID_PRODUCT_FROM_DATABASE=POS104UL (4-port RS-232 Universal PCI) - -pci:v00001393d00001045* - ID_PRODUCT_FROM_DATABASE=CP-104EL-A (4-port RS-232 PCI Express Serial Board) - -pci:v00001393d00001080* - ID_PRODUCT_FROM_DATABASE=CB108 (8-port RS-232 PC/104-plus Module) - -pci:v00001393d00001140* - ID_PRODUCT_FROM_DATABASE=CT-114 series - -pci:v00001393d00001141* - ID_PRODUCT_FROM_DATABASE=Industrio CP-114 - -pci:v00001393d00001142* - ID_PRODUCT_FROM_DATABASE=CB114 (4-port RS-232/422/485 PC/104-plus Module) - -pci:v00001393d00001143* - ID_PRODUCT_FROM_DATABASE=CP-114UL (4-port RS-232/422/485 Smart Universal PCI Serial Board) - -pci:v00001393d00001144* - ID_PRODUCT_FROM_DATABASE=CP-114EL (4-port RS-232/422/485 Smart PCI Express Serial Board) - -pci:v00001393d00001180* - ID_PRODUCT_FROM_DATABASE=CP118U (8-port RS-232/422/485 Smart Universal PCI) - -pci:v00001393d00001181* - ID_PRODUCT_FROM_DATABASE=CP118EL (8-port RS-232/422/485 Smart PCI Express) - -pci:v00001393d00001182* - ID_PRODUCT_FROM_DATABASE=CP-118EL-A (8-port RS-232/422/485 PCI Express Serial Board) - -pci:v00001393d00001320* - ID_PRODUCT_FROM_DATABASE=CP132 (2-port RS-422/485 PCI) - -pci:v00001393d00001321* - ID_PRODUCT_FROM_DATABASE=CP132U (2-Port RS-422/485 Universal PCI) - -pci:v00001393d00001322* - ID_PRODUCT_FROM_DATABASE=CP-132EL (2-port RS-422/485 Smart PCI Express Serial Board) - -pci:v00001393d00001340* - ID_PRODUCT_FROM_DATABASE=CP134U (4-Port RS-422/485 Universal PCI) - -pci:v00001393d00001341* - ID_PRODUCT_FROM_DATABASE=CB134I (4-port RS-422/485 PC/104-plus Module) - -pci:v00001393d00001380* - ID_PRODUCT_FROM_DATABASE=CP138U (8-port RS-232/422/485 Smart Universal PCI) - -pci:v00001393d00001680* - ID_PRODUCT_FROM_DATABASE=Smartio C168H/PCI - -pci:v00001393d00001681* - ID_PRODUCT_FROM_DATABASE=CP-168U V2 Smart Serial Board (8-port RS-232) - -pci:v00001393d00001682* - ID_PRODUCT_FROM_DATABASE=CP168EL (8-port RS-232 Smart PCI Express) - -pci:v00001393d00001683* - ID_PRODUCT_FROM_DATABASE=CP-168EL-A (8-port RS-232 PCI Express Serial Board) - -pci:v00001393d00002040* - ID_PRODUCT_FROM_DATABASE=Intellio CP-204J - -pci:v00001393d00002180* - ID_PRODUCT_FROM_DATABASE=Intellio C218 Turbo PCI - -pci:v00001393d00003200* - ID_PRODUCT_FROM_DATABASE=Intellio C320 Turbo PCI - -pci:v00001394* - ID_VENDOR_FROM_DATABASE=Level One Communications - -pci:v00001394d00000001* - ID_PRODUCT_FROM_DATABASE=LXT1001 Gigabit Ethernet - -pci:v00001394d00000001sv00001186sd00004800* - ID_PRODUCT_FROM_DATABASE=DGE-500SX - -pci:v00001394d00000001sv00001394sd00000001* - ID_PRODUCT_FROM_DATABASE=NetCelerator Adapter - -pci:v00001395* - ID_VENDOR_FROM_DATABASE=Ambicom Inc - -pci:v00001396* - ID_VENDOR_FROM_DATABASE=Cipher Systems Inc - -pci:v00001397* - ID_VENDOR_FROM_DATABASE=Cologne Chip Designs GmbH - -pci:v00001397d000008B4* - ID_PRODUCT_FROM_DATABASE=ISDN network Controller [HFC-4S] - -pci:v00001397d000008B4sv00001397sd0000B520* - ID_PRODUCT_FROM_DATABASE=HFC-4S [IOB4ST] - -pci:v00001397d000008B4sv00001397sd0000B540* - ID_PRODUCT_FROM_DATABASE=HFC-4S [Swyx 4xS0 SX2 QuadBri] - -pci:v00001397d000008B4sv00001397sd0000B550* - ID_PRODUCT_FROM_DATABASE=HFC-4S [Junghanns quadBRI] - -pci:v00001397d000008B4sv00001397sd0000B556* - ID_PRODUCT_FROM_DATABASE=HFC-4S [Junghanns DuoDBRI] - -pci:v00001397d000008B4sv00001397sd0000E888* - ID_PRODUCT_FROM_DATABASE=HFC-4S [OpenVox B200P / B400P] - -pci:v00001397d000016B8* - ID_PRODUCT_FROM_DATABASE=ISDN network Controller [HFC-8S] - -pci:v00001397d000016B8sv00001397sd0000B562* - ID_PRODUCT_FROM_DATABASE=HFC-8S [IOB8ST] - -pci:v00001397d00002BD0* - ID_PRODUCT_FROM_DATABASE=ISDN network controller [HFC-PCI] - -pci:v00001397d00002BD0sv00000675sd00001704* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter (PCI Bus, D, C) - -pci:v00001397d00002BD0sv00000675sd00001708* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter (PCI Bus, D, C, ACPI) - -pci:v00001397d00002BD0sv00001397sd00002BD0* - ID_PRODUCT_FROM_DATABASE=ISDN Board - -pci:v00001397d00002BD0sv0000E4BFsd00001000* - ID_PRODUCT_FROM_DATABASE=CI1-1-Harp - -pci:v00001397d000030B1* - ID_PRODUCT_FROM_DATABASE=ISDN network Controller [HFC-E1] - -pci:v00001397d0000B700* - ID_PRODUCT_FROM_DATABASE=ISDN network controller PrimuX S0 [HFC-PCI] - -pci:v00001397d0000F001* - ID_PRODUCT_FROM_DATABASE=GSM Network Controller [HFC-4GSM] - -pci:v00001398* - ID_VENDOR_FROM_DATABASE=Clarion co. Ltd - -pci:v00001399* - ID_VENDOR_FROM_DATABASE=Rios systems Co Ltd - -pci:v0000139A* - ID_VENDOR_FROM_DATABASE=Alacritech Inc - -pci:v0000139Ad00000001* - ID_PRODUCT_FROM_DATABASE=Quad Port 10/100 Server Accelerator - -pci:v0000139Ad00000003* - ID_PRODUCT_FROM_DATABASE=Single Port 10/100 Server Accelerator - -pci:v0000139Ad00000005* - ID_PRODUCT_FROM_DATABASE=Single Port Gigabit Server Accelerator - -pci:v0000139B* - ID_VENDOR_FROM_DATABASE=Mediasonic Multimedia Systems Ltd - -pci:v0000139C* - ID_VENDOR_FROM_DATABASE=Quantum 3d Inc - -pci:v0000139D* - ID_VENDOR_FROM_DATABASE=EPL limited - -pci:v0000139E* - ID_VENDOR_FROM_DATABASE=Media4 - -pci:v0000139F* - ID_VENDOR_FROM_DATABASE=Aethra s.r.l. - -pci:v000013A0* - ID_VENDOR_FROM_DATABASE=Crystal Group Inc - -pci:v000013A1* - ID_VENDOR_FROM_DATABASE=Kawasaki Heavy Industries Ltd - -pci:v000013A2* - ID_VENDOR_FROM_DATABASE=Ositech Communications Inc - -pci:v000013A3* - ID_VENDOR_FROM_DATABASE=Hifn Inc. - -pci:v000013A3d00000005* - ID_PRODUCT_FROM_DATABASE=7751 Security Processor - -pci:v000013A3d00000006* - ID_PRODUCT_FROM_DATABASE=6500 Public Key Processor - -pci:v000013A3d00000007* - ID_PRODUCT_FROM_DATABASE=7811 Security Processor - -pci:v000013A3d00000012* - ID_PRODUCT_FROM_DATABASE=7951 Security Processor - -pci:v000013A3d00000014* - ID_PRODUCT_FROM_DATABASE=78XX Security Processor - -pci:v000013A3d00000016* - ID_PRODUCT_FROM_DATABASE=8065 Security Processor - -pci:v000013A3d00000017* - ID_PRODUCT_FROM_DATABASE=8165 Security Processor - -pci:v000013A3d00000018* - ID_PRODUCT_FROM_DATABASE=8154 Security Processor - -pci:v000013A3d0000001D* - ID_PRODUCT_FROM_DATABASE=7956 Security Processor - -pci:v000013A3d0000001F* - ID_PRODUCT_FROM_DATABASE=7855 Security Processor - -pci:v000013A3d00000020* - ID_PRODUCT_FROM_DATABASE=7955 Security Processor - -pci:v000013A3d00000026* - ID_PRODUCT_FROM_DATABASE=8155 Security Processor - -pci:v000013A3d0000002E* - ID_PRODUCT_FROM_DATABASE=9630 Compression Processor - -pci:v000013A3d0000002F* - ID_PRODUCT_FROM_DATABASE=9725 Compression and Security Processor - -pci:v000013A3d0000002Fsv000013A3sd00001600* - ID_PRODUCT_FROM_DATABASE=DR1600 Acceleration Card - -pci:v000013A3d0000002Fsv000013A3sd00001605* - ID_PRODUCT_FROM_DATABASE=DR1605 Acceleration Card - -pci:v000013A3d0000002Fsv000013A3sd00001610* - ID_PRODUCT_FROM_DATABASE=DR1610 Acceleration Card - -pci:v000013A3d0000002Fsv000013A3sd00001615* - ID_PRODUCT_FROM_DATABASE=DR1615 Acceleration Card - -pci:v000013A3d0000002Fsv000013A3sd00001620* - ID_PRODUCT_FROM_DATABASE=DR1620 Acceleration Card - -pci:v000013A3d0000002Fsv000013A3sd00001625* - ID_PRODUCT_FROM_DATABASE=DR1625 Acceleration Card - -pci:v000013A3d00000033* - ID_PRODUCT_FROM_DATABASE=8201 Acceleration Processor - -pci:v000013A3d00000033sv000013A3sd00000036* - ID_PRODUCT_FROM_DATABASE=DX1710 Acceleration Card - -pci:v000013A3d00000034* - ID_PRODUCT_FROM_DATABASE=8202 Acceleration Processor - -pci:v000013A3d00000034sv000013A3sd00000036* - ID_PRODUCT_FROM_DATABASE=DX1720 Acceleration Card - -pci:v000013A3d00000035* - ID_PRODUCT_FROM_DATABASE=8203 Acceleration Processor - -pci:v000013A3d00000035sv000013A3sd00000036* - ID_PRODUCT_FROM_DATABASE=DX1730 Acceleration Card - -pci:v000013A3d00000037* - ID_PRODUCT_FROM_DATABASE=8204 Acceleration Processor - -pci:v000013A3d00000037sv000013A3sd00000036* - ID_PRODUCT_FROM_DATABASE=DX1740 Acceleration Card - -pci:v000013A4* - ID_VENDOR_FROM_DATABASE=Rascom Inc - -pci:v000013A5* - ID_VENDOR_FROM_DATABASE=Audio Digital Imaging Inc - -pci:v000013A6* - ID_VENDOR_FROM_DATABASE=Videonics Inc - -pci:v000013A7* - ID_VENDOR_FROM_DATABASE=Teles AG - -pci:v000013A8* - ID_VENDOR_FROM_DATABASE=Exar Corp. - -pci:v000013A8d00000152* - ID_PRODUCT_FROM_DATABASE=XR17C/D152 Dual PCI UART - -pci:v000013A8d00000154* - ID_PRODUCT_FROM_DATABASE=XR17C154 Quad UART - -pci:v000013A8d00000158* - ID_PRODUCT_FROM_DATABASE=XR17C158 Octal UART - -pci:v000013A8d00000252* - ID_PRODUCT_FROM_DATABASE=XR17V252 Dual UART PCI controller - -pci:v000013A8d00000254* - ID_PRODUCT_FROM_DATABASE=XR17V254 Quad UART PCI controller - -pci:v000013A8d00000258* - ID_PRODUCT_FROM_DATABASE=XR17V258 Octal UART PCI controller - -pci:v000013A9* - ID_VENDOR_FROM_DATABASE=Siemens Medical Systems, Ultrasound Group - -pci:v000013AA* - ID_VENDOR_FROM_DATABASE=Broadband Networks Inc - -pci:v000013AB* - ID_VENDOR_FROM_DATABASE=Arcom Control Systems Ltd - -pci:v000013AC* - ID_VENDOR_FROM_DATABASE=Motion Media Technology Ltd - -pci:v000013AD* - ID_VENDOR_FROM_DATABASE=Nexus Inc - -pci:v000013AE* - ID_VENDOR_FROM_DATABASE=ALD Technology Ltd - -pci:v000013AF* - ID_VENDOR_FROM_DATABASE=T.Sqware - -pci:v000013B0* - ID_VENDOR_FROM_DATABASE=Maxspeed Corp - -pci:v000013B1* - ID_VENDOR_FROM_DATABASE=Tamura corporation - -pci:v000013B2* - ID_VENDOR_FROM_DATABASE=Techno Chips Co. Ltd - -pci:v000013B3* - ID_VENDOR_FROM_DATABASE=Lanart Corporation - -pci:v000013B4* - ID_VENDOR_FROM_DATABASE=Wellbean Co Inc - -pci:v000013B5* - ID_VENDOR_FROM_DATABASE=ARM - -pci:v000013B6* - ID_VENDOR_FROM_DATABASE=Dlog GmbH - -pci:v000013B7* - ID_VENDOR_FROM_DATABASE=Logic Devices Inc - -pci:v000013B8* - ID_VENDOR_FROM_DATABASE=Nokia Telecommunications oy - -pci:v000013B9* - ID_VENDOR_FROM_DATABASE=Elecom Co Ltd - -pci:v000013BA* - ID_VENDOR_FROM_DATABASE=Oxford Instruments - -pci:v000013BB* - ID_VENDOR_FROM_DATABASE=Sanyo Technosound Co Ltd - -pci:v000013BC* - ID_VENDOR_FROM_DATABASE=Bitran Corporation - -pci:v000013BD* - ID_VENDOR_FROM_DATABASE=Sharp corporation - -pci:v000013BE* - ID_VENDOR_FROM_DATABASE=Miroku Jyoho Service Co. Ltd - -pci:v000013BF* - ID_VENDOR_FROM_DATABASE=Sharewave Inc - -pci:v000013C0* - ID_VENDOR_FROM_DATABASE=Microgate Corporation - -pci:v000013C0d00000010* - ID_PRODUCT_FROM_DATABASE=SyncLink Adapter v1 - -pci:v000013C0d00000020* - ID_PRODUCT_FROM_DATABASE=SyncLink SCC Adapter - -pci:v000013C0d00000030* - ID_PRODUCT_FROM_DATABASE=SyncLink Multiport Adapter - -pci:v000013C0d00000070* - ID_PRODUCT_FROM_DATABASE=SyncLink GT Adapter - -pci:v000013C0d00000080* - ID_PRODUCT_FROM_DATABASE=SyncLink GT4 Adapter - -pci:v000013C0d000000A0* - ID_PRODUCT_FROM_DATABASE=SyncLink GT2 Adapter - -pci:v000013C0d00000210* - ID_PRODUCT_FROM_DATABASE=SyncLink Adapter v2 - -pci:v000013C1* - ID_VENDOR_FROM_DATABASE=3ware Inc - -pci:v000013C1d00001000* - ID_PRODUCT_FROM_DATABASE=5xxx/6xxx-series PATA-RAID - -pci:v000013C1d00001001* - ID_PRODUCT_FROM_DATABASE=7xxx/8xxx-series PATA/SATA-RAID - -pci:v000013C1d00001001sv000013C1sd00001001* - ID_PRODUCT_FROM_DATABASE=7xxx/8xxx-series PATA/SATA-RAID - -pci:v000013C1d00001002* - ID_PRODUCT_FROM_DATABASE=9xxx-series SATA-RAID - -pci:v000013C1d00001003* - ID_PRODUCT_FROM_DATABASE=9550SX SATA-II RAID PCI-X - -pci:v000013C1d00001004* - ID_PRODUCT_FROM_DATABASE=9650SE SATA-II RAID PCIe - -pci:v000013C1d00001005* - ID_PRODUCT_FROM_DATABASE=9690SA SAS/SATA-II RAID PCIe - -pci:v000013C1d00001010* - ID_PRODUCT_FROM_DATABASE=9750 SAS2/SATA-II RAID PCIe - -pci:v000013C2* - ID_VENDOR_FROM_DATABASE=Technotrend Systemtechnik GmbH - -pci:v000013C2d0000000E* - ID_PRODUCT_FROM_DATABASE=Technotrend/Hauppauge DVB card rev2.3 - -pci:v000013C2d00001019* - ID_PRODUCT_FROM_DATABASE=TTechnoTrend-budget DVB S2-3200 - -pci:v000013C3* - ID_VENDOR_FROM_DATABASE=Janz Computer AG - -pci:v000013C4* - ID_VENDOR_FROM_DATABASE=Phase Metrics - -pci:v000013C5* - ID_VENDOR_FROM_DATABASE=Alphi Technology Corp - -pci:v000013C6* - ID_VENDOR_FROM_DATABASE=Condor Engineering Inc - -pci:v000013C6d00000520* - ID_PRODUCT_FROM_DATABASE=CEI-520 A429 Card - -pci:v000013C6d00000620* - ID_PRODUCT_FROM_DATABASE=CEI-620 A429 Card - -pci:v000013C6d00000820* - ID_PRODUCT_FROM_DATABASE=CEI-820 A429 Card - -pci:v000013C6d00000830* - ID_PRODUCT_FROM_DATABASE=CEI-830 A429 Card - -pci:v000013C6d00001004* - ID_PRODUCT_FROM_DATABASE=P-SER Multi-channel PMC to RS-485/422/232 adapter - -pci:v000013C7* - ID_VENDOR_FROM_DATABASE=Blue Chip Technology Ltd - -pci:v000013C7d00000ADC* - ID_PRODUCT_FROM_DATABASE=PCI-ADC - -pci:v000013C7d00000B10* - ID_PRODUCT_FROM_DATABASE=PCI-PIO - -pci:v000013C7d00000D10* - ID_PRODUCT_FROM_DATABASE=PCI-DIO - -pci:v000013C7d0000524C* - ID_PRODUCT_FROM_DATABASE=PCI-RLY - -pci:v000013C7d00005744* - ID_PRODUCT_FROM_DATABASE=PCI-WDT - -pci:v000013C8* - ID_VENDOR_FROM_DATABASE=Apptech Inc - -pci:v000013C9* - ID_VENDOR_FROM_DATABASE=Eaton Corporation - -pci:v000013CA* - ID_VENDOR_FROM_DATABASE=Iomega Corporation - -pci:v000013CB* - ID_VENDOR_FROM_DATABASE=Yano Electric Co Ltd - -pci:v000013CC* - ID_VENDOR_FROM_DATABASE=Metheus Corporation - -pci:v000013CD* - ID_VENDOR_FROM_DATABASE=Compatible Systems Corporation - -pci:v000013CE* - ID_VENDOR_FROM_DATABASE=Cocom A/S - -pci:v000013CF* - ID_VENDOR_FROM_DATABASE=Studio Audio & Video Ltd - -pci:v000013D0* - ID_VENDOR_FROM_DATABASE=Techsan Electronics Co Ltd - -pci:v000013D0d00002103* - ID_PRODUCT_FROM_DATABASE=B2C2 FlexCopII DVB chip / Technisat SkyStar2 DVB card - -pci:v000013D0d00002104* - ID_PRODUCT_FROM_DATABASE=B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card (rev 01) - -pci:v000013D0d00002200* - ID_PRODUCT_FROM_DATABASE=B2C2 FlexCopIII DVB chip / Technisat SkyStar2 DVB card - -pci:v000013D1* - ID_VENDOR_FROM_DATABASE=Abocom Systems Inc - -pci:v000013D1d0000AB02* - ID_PRODUCT_FROM_DATABASE=ADMtek Centaur-C rev 17 [D-Link DFE-680TX] CardBus Fast Ethernet Adapter - -pci:v000013D1d0000AB03* - ID_PRODUCT_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet - -pci:v000013D1d0000AB06* - ID_PRODUCT_FROM_DATABASE=RTL8139 [FE2000VX] CardBus Fast Ethernet Attached Port Adapter - -pci:v000013D1d0000AB08* - ID_PRODUCT_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet - -pci:v000013D2* - ID_VENDOR_FROM_DATABASE=Shark Multimedia Inc - -pci:v000013D4* - ID_VENDOR_FROM_DATABASE=Graphics Microsystems Inc - -pci:v000013D5* - ID_VENDOR_FROM_DATABASE=Media 100 Inc - -pci:v000013D6* - ID_VENDOR_FROM_DATABASE=K.I. Technology Co Ltd - -pci:v000013D7* - ID_VENDOR_FROM_DATABASE=Toshiba Engineering Corporation - -pci:v000013D8* - ID_VENDOR_FROM_DATABASE=Phobos corporation - -pci:v000013D9* - ID_VENDOR_FROM_DATABASE=Apex PC Solutions Inc - -pci:v000013DA* - ID_VENDOR_FROM_DATABASE=Intresource Systems pte Ltd - -pci:v000013DB* - ID_VENDOR_FROM_DATABASE=Janich & Klass Computertechnik GmbH - -pci:v000013DC* - ID_VENDOR_FROM_DATABASE=Netboost Corporation - -pci:v000013DD* - ID_VENDOR_FROM_DATABASE=Multimedia Bundle Inc - -pci:v000013DE* - ID_VENDOR_FROM_DATABASE=ABB Robotics Products AB - -pci:v000013DF* - ID_VENDOR_FROM_DATABASE=E-Tech Inc - -pci:v000013DFd00000001* - ID_PRODUCT_FROM_DATABASE=PCI56RVP Modem - -pci:v000013DFd00000001sv000013DFsd00000001* - ID_PRODUCT_FROM_DATABASE=PCI56RVP Modem - -pci:v000013E0* - ID_VENDOR_FROM_DATABASE=GVC Corporation - -pci:v000013E1* - ID_VENDOR_FROM_DATABASE=Silicom Multimedia Systems Inc - -pci:v000013E2* - ID_VENDOR_FROM_DATABASE=Dynamics Research Corporation - -pci:v000013E3* - ID_VENDOR_FROM_DATABASE=Nest Inc - -pci:v000013E4* - ID_VENDOR_FROM_DATABASE=Calculex Inc - -pci:v000013E5* - ID_VENDOR_FROM_DATABASE=Telesoft Design Ltd - -pci:v000013E6* - ID_VENDOR_FROM_DATABASE=Argosy research Inc - -pci:v000013E7* - ID_VENDOR_FROM_DATABASE=NAC Incorporated - -pci:v000013E8* - ID_VENDOR_FROM_DATABASE=Chip Express Corporation - -pci:v000013E9* - ID_VENDOR_FROM_DATABASE=Intraserver Technology Inc - -pci:v000013EA* - ID_VENDOR_FROM_DATABASE=Dallas Semiconductor - -pci:v000013EB* - ID_VENDOR_FROM_DATABASE=Hauppauge Computer Works Inc - -pci:v000013EC* - ID_VENDOR_FROM_DATABASE=Zydacron Inc - -pci:v000013ECd0000000A* - ID_PRODUCT_FROM_DATABASE=NPC-RC01 Remote control receiver - -pci:v000013ED* - ID_VENDOR_FROM_DATABASE=Raytheion E-Systems - -pci:v000013EE* - ID_VENDOR_FROM_DATABASE=Hayes Microcomputer Products Inc - -pci:v000013EF* - ID_VENDOR_FROM_DATABASE=Coppercom Inc - -pci:v000013F0* - ID_VENDOR_FROM_DATABASE=Sundance Technology Inc / IC Plus Corp - -pci:v000013F0d00000200* - ID_PRODUCT_FROM_DATABASE=IC Plus IP100A Integrated 10/100 Ethernet MAC + PHY - -pci:v000013F0d00000200sv00001043sd00008213* - ID_PRODUCT_FROM_DATABASE=NX1001 - -pci:v000013F0d00000201* - ID_PRODUCT_FROM_DATABASE=ST201 Sundance Ethernet - -pci:v000013F0d00001021* - ID_PRODUCT_FROM_DATABASE=TC902x Gigabit Ethernet - -pci:v000013F0d00001023* - ID_PRODUCT_FROM_DATABASE=IP1000 Family Gigabit Ethernet - -pci:v000013F0d00001023sv00001043sd00008180* - ID_PRODUCT_FROM_DATABASE=NX1101 - -pci:v000013F1* - ID_VENDOR_FROM_DATABASE=Oce' - Technologies B.V. - -pci:v000013F2* - ID_VENDOR_FROM_DATABASE=Ford Microelectronics Inc - -pci:v000013F3* - ID_VENDOR_FROM_DATABASE=Mcdata Corporation - -pci:v000013F4* - ID_VENDOR_FROM_DATABASE=Troika Networks, Inc. - -pci:v000013F4d00001401* - ID_PRODUCT_FROM_DATABASE=Zentai Fibre Channel Adapter - -pci:v000013F5* - ID_VENDOR_FROM_DATABASE=Kansai Electric Co. Ltd - -pci:v000013F6* - ID_VENDOR_FROM_DATABASE=C-Media Electronics Inc - -pci:v000013F6d00000011* - ID_PRODUCT_FROM_DATABASE=CMI8738 - -pci:v000013F6d00000100* - ID_PRODUCT_FROM_DATABASE=CM8338A - -pci:v000013F6d00000100sv000013F6sd0000FFFF* - ID_PRODUCT_FROM_DATABASE=CMI8338/C3DX PCI Audio Device - -pci:v000013F6d00000101* - ID_PRODUCT_FROM_DATABASE=CM8338B - -pci:v000013F6d00000101sv000013F6sd00000101* - ID_PRODUCT_FROM_DATABASE=CMI8338-031 PCI Audio Device - -pci:v000013F6d00000111* - ID_PRODUCT_FROM_DATABASE=CMI8738/CMI8768 PCI Audio - -pci:v000013F6d00000111sv00001019sd00000970* - ID_PRODUCT_FROM_DATABASE=P6STP-FL motherboard - -pci:v000013F6d00000111sv00001043sd00008035* - ID_PRODUCT_FROM_DATABASE=CUSI-FX motherboard - -pci:v000013F6d00000111sv00001043sd00008077* - ID_PRODUCT_FROM_DATABASE=CMI8738 6-channel audio controller - -pci:v000013F6d00000111sv00001043sd000080E2* - ID_PRODUCT_FROM_DATABASE=CMI8738 6ch-MX - -pci:v000013F6d00000111sv000013F6sd00000111* - ID_PRODUCT_FROM_DATABASE=CMI8738/C3DX PCI Audio Device - -pci:v000013F6d00000111sv000013F6sd00009761* - ID_PRODUCT_FROM_DATABASE=Theatron Agrippa - -pci:v000013F6d00000111sv0000153Bsd00001144* - ID_PRODUCT_FROM_DATABASE=Aureon 5.1 - -pci:v000013F6d00000111sv0000153Bsd00001170* - ID_PRODUCT_FROM_DATABASE=Aureon 7.1 - -pci:v000013F6d00000111sv00001681sd0000A000* - ID_PRODUCT_FROM_DATABASE=Gamesurround MUSE XL - -pci:v000013F6d00000111sv000017ABsd00000604* - ID_PRODUCT_FROM_DATABASE=PSC604 Dynamic Edge - -pci:v000013F6d00000111sv000017ABsd00000605* - ID_PRODUCT_FROM_DATABASE=PSC605 Sonic Edge - -pci:v000013F6d00000111sv000017ABsd00007777* - ID_PRODUCT_FROM_DATABASE=PSC605 Sonic Edge - -pci:v000013F6d00000111sv0000270Fsd00001103* - ID_PRODUCT_FROM_DATABASE=CT-7NJS Ultra motherboard - -pci:v000013F6d00000111sv0000270Fsd0000F462* - ID_PRODUCT_FROM_DATABASE=7NJL1 motherboard - -pci:v000013F6d00000111sv0000584Dsd00003731* - ID_PRODUCT_FROM_DATABASE=Digital X-Mystique - -pci:v000013F6d00000111sv0000584Dsd00003741* - ID_PRODUCT_FROM_DATABASE=X-Plosion 7.1 - -pci:v000013F6d00000111sv0000584Dsd00003751* - ID_PRODUCT_FROM_DATABASE=X-Raider 7.1 - -pci:v000013F6d00000111sv0000584Dsd00003761* - ID_PRODUCT_FROM_DATABASE=X-Mystique 7.1 LP - -pci:v000013F6d00000111sv0000584Dsd00003771* - ID_PRODUCT_FROM_DATABASE=X-Mystique 7.1 LP Value - -pci:v000013F6d00000111sv00007284sd00008384* - ID_PRODUCT_FROM_DATABASE=Striker 7.1 - -pci:v000013F6d00000211* - ID_PRODUCT_FROM_DATABASE=CM8738 - -pci:v000013F6d00005011* - ID_PRODUCT_FROM_DATABASE=CM8888 [Oxygen Express] - -pci:v000013F6d00005011sv000013F6sd00005011* - ID_PRODUCT_FROM_DATABASE=HDA Controller - -pci:v000013F6d00008788* - ID_PRODUCT_FROM_DATABASE=CMI8788 [Oxygen HD Audio] - -pci:v000013F6d00008788sv00001043sd00008269* - ID_PRODUCT_FROM_DATABASE=Virtuoso 200 (Xonar D2) - -pci:v000013F6d00008788sv00001043sd00008275* - ID_PRODUCT_FROM_DATABASE=Virtuoso 100 (Xonar DX) - -pci:v000013F6d00008788sv00001043sd000082B7* - ID_PRODUCT_FROM_DATABASE=Virtuoso 200 (Xonar D2X) - -pci:v000013F6d00008788sv00001043sd00008314* - ID_PRODUCT_FROM_DATABASE=Virtuoso 200 (Xonar HDAV1.3) - -pci:v000013F6d00008788sv00001043sd00008327* - ID_PRODUCT_FROM_DATABASE=Virtuoso 100 (Xonar DX) - -pci:v000013F6d00008788sv00001043sd0000834F* - ID_PRODUCT_FROM_DATABASE=Virtuoso 100 (Xonar D1) - -pci:v000013F6d00008788sv00001043sd0000835C* - ID_PRODUCT_FROM_DATABASE=Virtuoso 100 (Xonar Essence STX) - -pci:v000013F6d00008788sv00001043sd0000835D* - ID_PRODUCT_FROM_DATABASE=Virtuoso 100 (Xonar ST) - -pci:v000013F6d00008788sv00001043sd0000835E* - ID_PRODUCT_FROM_DATABASE=Virtuoso 200 (Xonar HDAV1.3 Slim) - -pci:v000013F6d00008788sv00001043sd0000838E* - ID_PRODUCT_FROM_DATABASE=Virtuoso 66 (Xonar DS) - -pci:v000013F6d00008788sv00001043sd00008428* - ID_PRODUCT_FROM_DATABASE=Virtuoso 100 (Xonar Xense) - -pci:v000013F6d00008788sv00001043sd00008467* - ID_PRODUCT_FROM_DATABASE=CMI8786 (Xonar DG) - -pci:v000013F6d00008788sv000013F6sd00008782* - ID_PRODUCT_FROM_DATABASE=PCI 2.0 HD Audio - -pci:v000013F6d00008788sv000013F6sd0000FFFF* - ID_PRODUCT_FROM_DATABASE=CMI8787-HG2PCI - -pci:v000013F6d00008788sv000014C3sd00001710* - ID_PRODUCT_FROM_DATABASE=HiFier Fantasia - -pci:v000013F6d00008788sv000014C3sd00001711* - ID_PRODUCT_FROM_DATABASE=HiFier Serenade - -pci:v000013F6d00008788sv00001A58sd00000910* - ID_PRODUCT_FROM_DATABASE=Barracuda AC-1 - -pci:v000013F6d00008788sv0000415Asd00005431* - ID_PRODUCT_FROM_DATABASE=X-Meridian 7.1 - -pci:v000013F6d00008788sv00005431sd0000017A* - ID_PRODUCT_FROM_DATABASE=X-Meridian 7.1 2G - -pci:v000013F6d00008788sv0000584Dsd00003781* - ID_PRODUCT_FROM_DATABASE=HDA X-Purity 7.1 Platinum - -pci:v000013F6d00008788sv00007284sd00009761* - ID_PRODUCT_FROM_DATABASE=CLARO - -pci:v000013F6d00008788sv00007284sd00009781* - ID_PRODUCT_FROM_DATABASE=CLARO halo - -pci:v000013F6d00008788sv00007284sd00009783* - ID_PRODUCT_FROM_DATABASE=eCLARO - -pci:v000013F6d00008788sv00007284sd00009787* - ID_PRODUCT_FROM_DATABASE=CLARO II - -pci:v000013F7* - ID_VENDOR_FROM_DATABASE=Wildfire Communications - -pci:v000013F8* - ID_VENDOR_FROM_DATABASE=Ad Lib Multimedia Inc - -pci:v000013F9* - ID_VENDOR_FROM_DATABASE=NTT Advanced Technology Corp. - -pci:v000013FA* - ID_VENDOR_FROM_DATABASE=Pentland Systems Ltd - -pci:v000013FB* - ID_VENDOR_FROM_DATABASE=Aydin Corp - -pci:v000013FC* - ID_VENDOR_FROM_DATABASE=Computer Peripherals International - -pci:v000013FD* - ID_VENDOR_FROM_DATABASE=Micro Science Inc - -pci:v000013FE* - ID_VENDOR_FROM_DATABASE=Advantech Co. Ltd - -pci:v000013FEd00001240* - ID_PRODUCT_FROM_DATABASE=PCI-1240 4-channel stepper motor controller card - -pci:v000013FEd00001600* - ID_PRODUCT_FROM_DATABASE=PCI-16xx series PCI multiport serial board (function 0) - -pci:v000013FEd00001600sv00001601sd00000002* - ID_PRODUCT_FROM_DATABASE=PCI-1601 2-port unisolated RS-422/485 - -pci:v000013FEd00001600sv00001602sd00000002* - ID_PRODUCT_FROM_DATABASE=PCI-1602 2-port isolated RS-422/485 - -pci:v000013FEd00001600sv00001612sd00000004* - ID_PRODUCT_FROM_DATABASE=PCI-1612 4-port RS-232/422/485 - -pci:v000013FEd00001603* - ID_PRODUCT_FROM_DATABASE=PCI-1603 2-port isolated RS-232/current loop - -pci:v000013FEd00001604* - ID_PRODUCT_FROM_DATABASE=PCI-1604 2-port RS-232 - -pci:v000013FEd000016FF* - ID_PRODUCT_FROM_DATABASE=PCI-16xx series PCI multiport serial board (function 1: RX/TX steering CPLD) - -pci:v000013FEd000016FFsv00001601sd00000000* - ID_PRODUCT_FROM_DATABASE=PCI-1601 2-port unisolated RS-422/485 PCI communications card - -pci:v000013FEd000016FFsv00001602sd00000000* - ID_PRODUCT_FROM_DATABASE=PCI-1602 2-port isolated RS-422/485 - -pci:v000013FEd000016FFsv00001612sd00000000* - ID_PRODUCT_FROM_DATABASE=PCI-1612 4-port RS-232/422/485 - -pci:v000013FEd00001711* - ID_PRODUCT_FROM_DATABASE=PCI-1711 16-channel data acquisition card 12-bit, 100kS/s - -pci:v000013FEd00001733* - ID_PRODUCT_FROM_DATABASE=PCI-1733 32-channel isolated digital input card - -pci:v000013FEd00001752* - ID_PRODUCT_FROM_DATABASE=PCI-1752 - -pci:v000013FEd00001754* - ID_PRODUCT_FROM_DATABASE=PCI-1754 - -pci:v000013FEd00001756* - ID_PRODUCT_FROM_DATABASE=PCI-1756 - -pci:v000013FF* - ID_VENDOR_FROM_DATABASE=Silicon Spice Inc - -pci:v00001400* - ID_VENDOR_FROM_DATABASE=Artx Inc - -pci:v00001400d00001401* - ID_PRODUCT_FROM_DATABASE=9432 TX - -pci:v00001401* - ID_VENDOR_FROM_DATABASE=CR-Systems A/S - -pci:v00001402* - ID_VENDOR_FROM_DATABASE=Meilhaus Electronic GmbH - -pci:v00001402d00000630* - ID_PRODUCT_FROM_DATABASE=ME-630 - -pci:v00001402d00000940* - ID_PRODUCT_FROM_DATABASE=ME-94 - -pci:v00001402d00000950* - ID_PRODUCT_FROM_DATABASE=ME-95 - -pci:v00001402d00000960* - ID_PRODUCT_FROM_DATABASE=ME-96 - -pci:v00001402d00001000* - ID_PRODUCT_FROM_DATABASE=ME-1000 - -pci:v00001402d0000100A* - ID_PRODUCT_FROM_DATABASE=ME-1000 - -pci:v00001402d0000100B* - ID_PRODUCT_FROM_DATABASE=ME-1000 - -pci:v00001402d00001400* - ID_PRODUCT_FROM_DATABASE=ME-1400 - -pci:v00001402d0000140A* - ID_PRODUCT_FROM_DATABASE=ME-1400A - -pci:v00001402d0000140B* - ID_PRODUCT_FROM_DATABASE=ME-1400B - -pci:v00001402d0000140C* - ID_PRODUCT_FROM_DATABASE=ME-1400C - -pci:v00001402d0000140D* - ID_PRODUCT_FROM_DATABASE=ME-1400D - -pci:v00001402d0000140E* - ID_PRODUCT_FROM_DATABASE=ME-1400E - -pci:v00001402d000014EA* - ID_PRODUCT_FROM_DATABASE=ME-1400EA - -pci:v00001402d000014EB* - ID_PRODUCT_FROM_DATABASE=ME-1400EB - -pci:v00001402d00001604* - ID_PRODUCT_FROM_DATABASE=ME-1600/4U - -pci:v00001402d00001608* - ID_PRODUCT_FROM_DATABASE=ME-1600/8U - -pci:v00001402d0000160C* - ID_PRODUCT_FROM_DATABASE=ME-1600/12U - -pci:v00001402d0000160F* - ID_PRODUCT_FROM_DATABASE=ME-1600/16U - -pci:v00001402d0000168F* - ID_PRODUCT_FROM_DATABASE=ME-1600/16U8I - -pci:v00001402d00004610* - ID_PRODUCT_FROM_DATABASE=ME-4610 - -pci:v00001402d00004650* - ID_PRODUCT_FROM_DATABASE=ME-4650 - -pci:v00001402d00004660* - ID_PRODUCT_FROM_DATABASE=ME-4660 - -pci:v00001402d00004661* - ID_PRODUCT_FROM_DATABASE=ME-4660I - -pci:v00001402d00004662* - ID_PRODUCT_FROM_DATABASE=ME-4660 - -pci:v00001402d00004663* - ID_PRODUCT_FROM_DATABASE=ME-4660I - -pci:v00001402d00004670* - ID_PRODUCT_FROM_DATABASE=ME-4670 - -pci:v00001402d00004671* - ID_PRODUCT_FROM_DATABASE=ME-4670I - -pci:v00001402d00004672* - ID_PRODUCT_FROM_DATABASE=ME-4670S - -pci:v00001402d00004673* - ID_PRODUCT_FROM_DATABASE=ME-4670IS - -pci:v00001402d00004680* - ID_PRODUCT_FROM_DATABASE=ME-4680 - -pci:v00001402d00004681* - ID_PRODUCT_FROM_DATABASE=ME-4680I - -pci:v00001402d00004682* - ID_PRODUCT_FROM_DATABASE=ME-4680S - -pci:v00001402d00004683* - ID_PRODUCT_FROM_DATABASE=ME-4680IS - -pci:v00001402d00006004* - ID_PRODUCT_FROM_DATABASE=ME-6000/4 - -pci:v00001402d00006008* - ID_PRODUCT_FROM_DATABASE=ME-6000/8 - -pci:v00001402d0000600F* - ID_PRODUCT_FROM_DATABASE=ME-6000/16 - -pci:v00001402d00006014* - ID_PRODUCT_FROM_DATABASE=ME-6000I/4 - -pci:v00001402d00006018* - ID_PRODUCT_FROM_DATABASE=ME-6000I/8 - -pci:v00001402d0000601F* - ID_PRODUCT_FROM_DATABASE=ME-6000I/16 - -pci:v00001402d00006034* - ID_PRODUCT_FROM_DATABASE=ME-6000ISLE/4 - -pci:v00001402d00006038* - ID_PRODUCT_FROM_DATABASE=ME-6000ISLE/8 - -pci:v00001402d0000603F* - ID_PRODUCT_FROM_DATABASE=ME-6000ISLE/16 - -pci:v00001402d00006044* - ID_PRODUCT_FROM_DATABASE=ME-6000/4/DIO - -pci:v00001402d00006048* - ID_PRODUCT_FROM_DATABASE=ME-6000/8/DIO - -pci:v00001402d0000604F* - ID_PRODUCT_FROM_DATABASE=ME-6000/16/DIO - -pci:v00001402d00006054* - ID_PRODUCT_FROM_DATABASE=ME-6000I/4/DIO - -pci:v00001402d00006058* - ID_PRODUCT_FROM_DATABASE=ME-6000I/8/DIO - -pci:v00001402d0000605F* - ID_PRODUCT_FROM_DATABASE=ME-6000I/16/DIO - -pci:v00001402d00006074* - ID_PRODUCT_FROM_DATABASE=ME-6000ISLE/4/DIO - -pci:v00001402d00006078* - ID_PRODUCT_FROM_DATABASE=ME-6000ISLE/8/DIO - -pci:v00001402d0000607F* - ID_PRODUCT_FROM_DATABASE=ME-6000ISLE/16/DIO - -pci:v00001402d00006104* - ID_PRODUCT_FROM_DATABASE=ME-6100/4 - -pci:v00001402d00006108* - ID_PRODUCT_FROM_DATABASE=ME-6100/8 - -pci:v00001402d0000610F* - ID_PRODUCT_FROM_DATABASE=ME-6100/16 - -pci:v00001402d00006114* - ID_PRODUCT_FROM_DATABASE=ME-6100I/4 - -pci:v00001402d00006118* - ID_PRODUCT_FROM_DATABASE=ME-6100I/8 - -pci:v00001402d0000611F* - ID_PRODUCT_FROM_DATABASE=ME-6100I/16 - -pci:v00001402d00006134* - ID_PRODUCT_FROM_DATABASE=ME-6100ISLE/4 - -pci:v00001402d00006138* - ID_PRODUCT_FROM_DATABASE=ME-6100ISLE/8 - -pci:v00001402d0000613F* - ID_PRODUCT_FROM_DATABASE=ME-6100ISLE/16 - -pci:v00001402d00006144* - ID_PRODUCT_FROM_DATABASE=ME-6100/4/DIO - -pci:v00001402d00006148* - ID_PRODUCT_FROM_DATABASE=ME-6100/8/DIO - -pci:v00001402d0000614F* - ID_PRODUCT_FROM_DATABASE=ME-6100/16/DIO - -pci:v00001402d00006154* - ID_PRODUCT_FROM_DATABASE=ME-6100I/4/DIO - -pci:v00001402d00006158* - ID_PRODUCT_FROM_DATABASE=ME-6100I/8/DIO - -pci:v00001402d0000615F* - ID_PRODUCT_FROM_DATABASE=ME-6100I/16/DIO - -pci:v00001402d00006174* - ID_PRODUCT_FROM_DATABASE=ME-6100ISLE/4/DIO - -pci:v00001402d00006178* - ID_PRODUCT_FROM_DATABASE=ME-6100ISLE/8/DIO - -pci:v00001402d0000617F* - ID_PRODUCT_FROM_DATABASE=ME-6100ISLE/16/DIO - -pci:v00001402d00006259* - ID_PRODUCT_FROM_DATABASE=ME-6200I/9/DIO - -pci:v00001402d00006359* - ID_PRODUCT_FROM_DATABASE=ME-6300I/9/DIO - -pci:v00001402d0000810A* - ID_PRODUCT_FROM_DATABASE=ME-8100A - -pci:v00001402d0000810B* - ID_PRODUCT_FROM_DATABASE=ME-8100B - -pci:v00001402d0000820A* - ID_PRODUCT_FROM_DATABASE=ME-8200A - -pci:v00001402d0000820B* - ID_PRODUCT_FROM_DATABASE=ME-8200B - -pci:v00001403* - ID_VENDOR_FROM_DATABASE=Ascor Inc - -pci:v00001404* - ID_VENDOR_FROM_DATABASE=Fundamental Software Inc - -pci:v00001405* - ID_VENDOR_FROM_DATABASE=Excalibur Systems Inc - -pci:v00001406* - ID_VENDOR_FROM_DATABASE=Oce' Printing Systems GmbH - -pci:v00001407* - ID_VENDOR_FROM_DATABASE=Lava Computer mfg Inc - -pci:v00001407d00000100* - ID_PRODUCT_FROM_DATABASE=Lava Dual Serial - -pci:v00001407d00000101* - ID_PRODUCT_FROM_DATABASE=Lava Quatro A - -pci:v00001407d00000102* - ID_PRODUCT_FROM_DATABASE=Lava Quatro B - -pci:v00001407d00000110* - ID_PRODUCT_FROM_DATABASE=Lava DSerial-PCI Port A - -pci:v00001407d00000111* - ID_PRODUCT_FROM_DATABASE=Lava DSerial-PCI Port B - -pci:v00001407d00000120* - ID_PRODUCT_FROM_DATABASE=Quattro-PCI A - -pci:v00001407d00000121* - ID_PRODUCT_FROM_DATABASE=Quattro-PCI B - -pci:v00001407d00000180* - ID_PRODUCT_FROM_DATABASE=Lava Octo A - -pci:v00001407d00000181* - ID_PRODUCT_FROM_DATABASE=Lava Octo B - -pci:v00001407d00000200* - ID_PRODUCT_FROM_DATABASE=Lava Port Plus - -pci:v00001407d00000201* - ID_PRODUCT_FROM_DATABASE=Lava Quad A - -pci:v00001407d00000202* - ID_PRODUCT_FROM_DATABASE=Lava Quad B - -pci:v00001407d00000220* - ID_PRODUCT_FROM_DATABASE=Lava Quattro PCI Ports A/B - -pci:v00001407d00000221* - ID_PRODUCT_FROM_DATABASE=Lava Quattro PCI Ports C/D - -pci:v00001407d00000400* - ID_PRODUCT_FROM_DATABASE=Lava 8255-PIO-PCI - -pci:v00001407d00000500* - ID_PRODUCT_FROM_DATABASE=Lava Single Serial - -pci:v00001407d00000520* - ID_PRODUCT_FROM_DATABASE=Lava RS422-SS-PCI - -pci:v00001407d00000600* - ID_PRODUCT_FROM_DATABASE=Lava Port 650 - -pci:v00001407d00008000* - ID_PRODUCT_FROM_DATABASE=Lava Parallel - -pci:v00001407d00008001* - ID_PRODUCT_FROM_DATABASE=Dual parallel port controller A - -pci:v00001407d00008002* - ID_PRODUCT_FROM_DATABASE=Lava Dual Parallel port A - -pci:v00001407d00008003* - ID_PRODUCT_FROM_DATABASE=Lava Dual Parallel port B - -pci:v00001407d00008800* - ID_PRODUCT_FROM_DATABASE=BOCA Research IOPPAR - -pci:v00001408* - ID_VENDOR_FROM_DATABASE=Aloka Co. Ltd - -pci:v00001409* - ID_VENDOR_FROM_DATABASE=Timedia Technology Co Ltd - -pci:v00001409d00007168* - ID_PRODUCT_FROM_DATABASE=PCI2S550 (Dual 16550 UART) - -pci:v00001409d00007168sv00001409sd00000002* - ID_PRODUCT_FROM_DATABASE=SER4036A3V (2x RS232 port) - -pci:v00001409d00007168sv00001409sd00004027* - ID_PRODUCT_FROM_DATABASE=SER4027A (1x RS232 port) - -pci:v00001409d00007168sv00001409sd00004037* - ID_PRODUCT_FROM_DATABASE=SER4037A (2x RS232 port) - -pci:v00001409d00007168sv00001409sd00004056* - ID_PRODUCT_FROM_DATABASE=SER4056A (4x RS232) - -pci:v00001409d00007168sv00001409sd00005027* - ID_PRODUCT_FROM_DATABASE=SER4027D - -pci:v00001409d00007168sv00001409sd00005037* - ID_PRODUCT_FROM_DATABASE=SER4037D (2x RS232 port) - -pci:v00001409d00007168sv00001409sd00005066* - ID_PRODUCT_FROM_DATABASE=SER4066R (8x RS232) - -pci:v00001409d00007168sv00001409sd00006056* - ID_PRODUCT_FROM_DATABASE=SER4056D (4x RS232 port) - -pci:v00001409d00007268* - ID_PRODUCT_FROM_DATABASE=SUN1888 (Dual IEEE1284 parallel port) - -pci:v00001409d00007268sv00001409sd00000103* - ID_PRODUCT_FROM_DATABASE=PAR4008A - -pci:v00001409d00007268sv00001409sd00000104* - ID_PRODUCT_FROM_DATABASE=PAR4018A - -pci:v0000140A* - ID_VENDOR_FROM_DATABASE=DSP Research Inc - -pci:v0000140B* - ID_VENDOR_FROM_DATABASE=GE Intelligent Platforms - -pci:v0000140C* - ID_VENDOR_FROM_DATABASE=Elmic Systems Inc - -pci:v0000140D* - ID_VENDOR_FROM_DATABASE=Matsushita Electric Works Ltd - -pci:v0000140E* - ID_VENDOR_FROM_DATABASE=Goepel Electronic GmbH - -pci:v0000140F* - ID_VENDOR_FROM_DATABASE=Salient Systems Corp - -pci:v00001410* - ID_VENDOR_FROM_DATABASE=Midas lab Inc - -pci:v00001411* - ID_VENDOR_FROM_DATABASE=Ikos Systems Inc - -pci:v00001412* - ID_VENDOR_FROM_DATABASE=VIA Technologies Inc. - -pci:v00001412d00001712* - ID_PRODUCT_FROM_DATABASE=ICE1712 [Envy24] PCI Multi-Channel I/O Controller - -pci:v00001412d00001712sv00001412sd00001712* - ID_PRODUCT_FROM_DATABASE=Hoontech ST Audio DSP 24 - -pci:v00001412d00001712sv00001412sd00003632* - ID_PRODUCT_FROM_DATABASE=M-Audio Delta Audiophile 192 - -pci:v00001412d00001712sv00001412sd0000D630* - ID_PRODUCT_FROM_DATABASE=M-Audio Delta 1010 - -pci:v00001412d00001712sv00001412sd0000D631* - ID_PRODUCT_FROM_DATABASE=M-Audio Delta DiO - -pci:v00001412d00001712sv00001412sd0000D632* - ID_PRODUCT_FROM_DATABASE=M-Audio Delta 66 - -pci:v00001412d00001712sv00001412sd0000D633* - ID_PRODUCT_FROM_DATABASE=M-Audio Delta 44 - -pci:v00001412d00001712sv00001412sd0000D634* - ID_PRODUCT_FROM_DATABASE=M-Audio Delta Audiophile 2496 - -pci:v00001412d00001712sv00001412sd0000D635* - ID_PRODUCT_FROM_DATABASE=M-Audio Delta TDIF - -pci:v00001412d00001712sv00001412sd0000D637* - ID_PRODUCT_FROM_DATABASE=M-Audio Delta RBUS - -pci:v00001412d00001712sv00001412sd0000D638* - ID_PRODUCT_FROM_DATABASE=M-Audio Delta 410 - -pci:v00001412d00001712sv00001412sd0000D63B* - ID_PRODUCT_FROM_DATABASE=M-Audio Delta 1010LT - -pci:v00001412d00001712sv00001412sd0000D63C* - ID_PRODUCT_FROM_DATABASE=Digigram VX442 - -pci:v00001412d00001712sv00001416sd00001712* - ID_PRODUCT_FROM_DATABASE=Hoontech ST Audio DSP 24 Media 7.1 - -pci:v00001412d00001712sv0000153Bsd00001115* - ID_PRODUCT_FROM_DATABASE=EWS88 MT - -pci:v00001412d00001712sv0000153Bsd00001125* - ID_PRODUCT_FROM_DATABASE=EWS88 MT (Master) - -pci:v00001412d00001712sv0000153Bsd0000112B* - ID_PRODUCT_FROM_DATABASE=EWS88 D - -pci:v00001412d00001712sv0000153Bsd0000112C* - ID_PRODUCT_FROM_DATABASE=EWS88 D (Master) - -pci:v00001412d00001712sv0000153Bsd00001130* - ID_PRODUCT_FROM_DATABASE=EWX 24/96 - -pci:v00001412d00001712sv0000153Bsd00001138* - ID_PRODUCT_FROM_DATABASE=DMX 6fire 24/96 - -pci:v00001412d00001712sv0000153Bsd00001151* - ID_PRODUCT_FROM_DATABASE=PHASE88 - -pci:v00001412d00001712sv000016CEsd00001040* - ID_PRODUCT_FROM_DATABASE=Edirol DA-2496 - -pci:v00001412d00001724* - ID_PRODUCT_FROM_DATABASE=VT1720/24 [Envy24PT/HT] PCI Multi-Channel Audio Controller - -pci:v00001412d00001724sv000010B0sd00000200* - ID_PRODUCT_FROM_DATABASE=Hollywood@Home 7.1 - -pci:v00001412d00001724sv00001412sd00001724* - ID_PRODUCT_FROM_DATABASE=Albatron PX865PE 7.1 - -pci:v00001412d00001724sv00001412sd00003630* - ID_PRODUCT_FROM_DATABASE=M-Audio Revolution 7.1 - -pci:v00001412d00001724sv00001412sd00003631* - ID_PRODUCT_FROM_DATABASE=M-Audio Revolution 5.1 - -pci:v00001412d00001724sv0000153Bsd00001145* - ID_PRODUCT_FROM_DATABASE=Aureon 7.1 Space - -pci:v00001412d00001724sv0000153Bsd00001147* - ID_PRODUCT_FROM_DATABASE=Aureon 5.1 Sky - -pci:v00001412d00001724sv0000153Bsd00001150* - ID_PRODUCT_FROM_DATABASE=PHASE 22 - -pci:v00001412d00001724sv0000153Bsd00001153* - ID_PRODUCT_FROM_DATABASE=Aureon 7.1 Universe - -pci:v00001412d00001724sv000017ABsd00001906* - ID_PRODUCT_FROM_DATABASE=PSC 724 [Ultimate Edge] - -pci:v00001412d00001724sv0000270Fsd0000F641* - ID_PRODUCT_FROM_DATABASE=ZNF3-150 - -pci:v00001412d00001724sv0000270Fsd0000F645* - ID_PRODUCT_FROM_DATABASE=ZNF3-250 - -pci:v00001412d00001724sv00003130sd00004154* - ID_PRODUCT_FROM_DATABASE=MAYA 44 MKII - -pci:v00001413* - ID_VENDOR_FROM_DATABASE=Addonics - -pci:v00001414* - ID_VENDOR_FROM_DATABASE=Microsoft Corporation - -pci:v00001414d00000001* - ID_PRODUCT_FROM_DATABASE=MN-120 (ADMtek Centaur-C based) - -pci:v00001414d00000002* - ID_PRODUCT_FROM_DATABASE=MN-130 (ADMtek Centaur-P based) - -pci:v00001414d00005353* - ID_PRODUCT_FROM_DATABASE=Hyper-V virtual VGA - -pci:v00001414d00005801* - ID_PRODUCT_FROM_DATABASE=XMA Decoder (Xenon) - -pci:v00001414d00005802* - ID_PRODUCT_FROM_DATABASE=SATA Controller - CdRom (Xenon) - -pci:v00001414d00005803* - ID_PRODUCT_FROM_DATABASE=SATA Controller - Disk (Xenon) - -pci:v00001414d00005804* - ID_PRODUCT_FROM_DATABASE=OHCI Controller 0 (Xenon) - -pci:v00001414d00005805* - ID_PRODUCT_FROM_DATABASE=EHCI Controller 0 (Xenon) - -pci:v00001414d00005806* - ID_PRODUCT_FROM_DATABASE=OHCI Controller 1 (Xenon) - -pci:v00001414d00005807* - ID_PRODUCT_FROM_DATABASE=EHCI Controller 1 (Xenon) - -pci:v00001414d0000580A* - ID_PRODUCT_FROM_DATABASE=Fast Ethernet Adapter (Xenon) - -pci:v00001414d0000580B* - ID_PRODUCT_FROM_DATABASE=Secure Flash Controller (Xenon) - -pci:v00001414d0000580D* - ID_PRODUCT_FROM_DATABASE=System Management Controller (Xenon) - -pci:v00001414d00005811* - ID_PRODUCT_FROM_DATABASE=Xenos GPU (Xenon) - -pci:v00001415* - ID_VENDOR_FROM_DATABASE=Oxford Semiconductor Ltd - -pci:v00001415d00008401* - ID_PRODUCT_FROM_DATABASE=OX9162 Mode 1 (8-bit bus) - -pci:v00001415d00008403* - ID_PRODUCT_FROM_DATABASE=OX9162 Mode 0 (parallel port) - -pci:v00001415d00009500* - ID_PRODUCT_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 0 (Disabled) - -pci:v00001415d00009501* - ID_PRODUCT_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 0 (Uart) - -pci:v00001415d00009501sv000012C4sd00000201* - ID_PRODUCT_FROM_DATABASE=Titan/cPCI (2 port) - -pci:v00001415d00009501sv000012C4sd00000202* - ID_PRODUCT_FROM_DATABASE=Titan/cPCI (4 port) - -pci:v00001415d00009501sv000012C4sd00000203* - ID_PRODUCT_FROM_DATABASE=Titan/cPCI (8 port) - -pci:v00001415d00009501sv000012C4sd00000210* - ID_PRODUCT_FROM_DATABASE=Titan/104-Plus (8 port, p1-4) - -pci:v00001415d00009501sv0000131Fsd00002050* - ID_PRODUCT_FROM_DATABASE=CyberPro (4-port) - -pci:v00001415d00009501sv0000131Fsd00002051* - ID_PRODUCT_FROM_DATABASE=CyberSerial 4S Plus - -pci:v00001415d00009501sv000015EDsd00002000* - ID_PRODUCT_FROM_DATABASE=MCCR Serial p0-3 of 8 - -pci:v00001415d00009501sv000015EDsd00002001* - ID_PRODUCT_FROM_DATABASE=MCCR Serial p0-3 of 16 - -pci:v00001415d00009505* - ID_PRODUCT_FROM_DATABASE=OXuPCI952 (Dual 16C950 UART) - -pci:v00001415d0000950A* - ID_PRODUCT_FROM_DATABASE=EXSYS EX-41092 Dual 16950 Serial adapter - -pci:v00001415d0000950B* - ID_PRODUCT_FROM_DATABASE=OXCB950 Cardbus 16950 UART - -pci:v00001415d00009510* - ID_PRODUCT_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (Disabled) - -pci:v00001415d00009510sv000012C4sd00000200* - ID_PRODUCT_FROM_DATABASE=Titan/cPCI (Unused) - -pci:v00001415d00009511* - ID_PRODUCT_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (8bit bus) - -pci:v00001415d00009511sv000012C4sd00000211* - ID_PRODUCT_FROM_DATABASE=Titan/104-Plus (8 port, p5-8) - -pci:v00001415d00009511sv000015EDsd00002000* - ID_PRODUCT_FROM_DATABASE=MCCR Serial p4-7 of 8 - -pci:v00001415d00009511sv000015EDsd00002001* - ID_PRODUCT_FROM_DATABASE=MCCR Serial p4-15 of 16 - -pci:v00001415d00009512* - ID_PRODUCT_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (32bit bus) - -pci:v00001415d00009513* - ID_PRODUCT_FROM_DATABASE=OX16PCI954 (Quad 16950 UART) function 1 (parallel port) - -pci:v00001415d00009521* - ID_PRODUCT_FROM_DATABASE=OX16PCI952 (Dual 16950 UART) - -pci:v00001415d00009523* - ID_PRODUCT_FROM_DATABASE=OX16PCI952 Integrated Parallel Port - -pci:v00001415d0000C158* - ID_PRODUCT_FROM_DATABASE=OXPCIe952 Dual 16C950 UART - -pci:v00001415d0000C158sv0000E4BFsd0000C504* - ID_PRODUCT_FROM_DATABASE=CP4-SCAT Wireless Technologies Carrier Board - -pci:v00001415d0000C158sv0000E4BFsd0000D551* - ID_PRODUCT_FROM_DATABASE=DU1-MUSTANG Dual-Port RS-485 Interface - -pci:v00001415d0000C308* - ID_PRODUCT_FROM_DATABASE=EX-44016 16-port serial - -pci:v00001416* - ID_VENDOR_FROM_DATABASE=Multiwave Innovation pte Ltd - -pci:v00001417* - ID_VENDOR_FROM_DATABASE=Convergenet Technologies Inc - -pci:v00001418* - ID_VENDOR_FROM_DATABASE=Kyushu electronics systems Inc - -pci:v00001419* - ID_VENDOR_FROM_DATABASE=Excel Switching Corp - -pci:v0000141A* - ID_VENDOR_FROM_DATABASE=Apache Micro Peripherals Inc - -pci:v0000141B* - ID_VENDOR_FROM_DATABASE=Zoom Telephonics Inc - -pci:v0000141D* - ID_VENDOR_FROM_DATABASE=Digitan Systems Inc - -pci:v0000141E* - ID_VENDOR_FROM_DATABASE=Fanuc Ltd - -pci:v0000141F* - ID_VENDOR_FROM_DATABASE=Visiontech Ltd - -pci:v00001420* - ID_VENDOR_FROM_DATABASE=Psion Dacom plc - -pci:v00001420d00008002* - ID_PRODUCT_FROM_DATABASE=Gold Card NetGlobal 56k+10/100Mb CardBus (Ethernet part) - -pci:v00001420d00008003* - ID_PRODUCT_FROM_DATABASE=Gold Card NetGlobal 56k+10/100Mb CardBus (Modem part) - -pci:v00001421* - ID_VENDOR_FROM_DATABASE=Ads Technologies Inc - -pci:v00001422* - ID_VENDOR_FROM_DATABASE=Ygrec Systems Co Ltd - -pci:v00001423* - ID_VENDOR_FROM_DATABASE=Custom Technology Corp. - -pci:v00001424* - ID_VENDOR_FROM_DATABASE=Videoserver Connections - -pci:v00001425* - ID_VENDOR_FROM_DATABASE=Chelsio Communications Inc - -pci:v00001425d0000000B* - ID_PRODUCT_FROM_DATABASE=T210 Protocol Engine - -pci:v00001425d0000000C* - ID_PRODUCT_FROM_DATABASE=T204 Protocol Engine - -pci:v00001425d00000022* - ID_PRODUCT_FROM_DATABASE=10GbE Ethernet Adapter - -pci:v00001425d00000030* - ID_PRODUCT_FROM_DATABASE=T310 10GbE Single Port Adapter - -pci:v00001425d00000030sv0000103Csd0000705E* - ID_PRODUCT_FROM_DATABASE=PCIe 10GBase-SR [AD386A] - -pci:v00001425d00000031* - ID_PRODUCT_FROM_DATABASE=T320 10GbE Dual Port Adapter - -pci:v00001425d00000032* - ID_PRODUCT_FROM_DATABASE=T302 1GbE Dual Port Adapter - -pci:v00001425d00000033* - ID_PRODUCT_FROM_DATABASE=T304 1GbE Quad Port Adapter - -pci:v00001425d00000034* - ID_PRODUCT_FROM_DATABASE=B320 10GbE Dual Port Adapter - -pci:v00001425d00000035* - ID_PRODUCT_FROM_DATABASE=S310-CR 10GbE Single Port Adapter - -pci:v00001425d00000036* - ID_PRODUCT_FROM_DATABASE=S320-LP-CR 10GbE Dual Port Adapter - -pci:v00001425d00000037* - ID_PRODUCT_FROM_DATABASE=N320-G2-CR 10GbE Dual Port Adapter - -pci:v00001425d00004001* - ID_PRODUCT_FROM_DATABASE=T420-CR Unified Wire Ethernet Controller - -pci:v00001425d00004002* - ID_PRODUCT_FROM_DATABASE=T422-CR Unified Wire Ethernet Controller - -pci:v00001425d00004003* - ID_PRODUCT_FROM_DATABASE=T440-CR Unified Wire Ethernet Controller - -pci:v00001425d00004004* - ID_PRODUCT_FROM_DATABASE=T420-BCH Unified Wire Ethernet Controller - -pci:v00001425d00004005* - ID_PRODUCT_FROM_DATABASE=T440-BCH Unified Wire Ethernet Controller - -pci:v00001425d00004006* - ID_PRODUCT_FROM_DATABASE=T440-CH Unified Wire Ethernet Controller - -pci:v00001425d00004007* - ID_PRODUCT_FROM_DATABASE=T420-SO Unified Wire Ethernet Controller - -pci:v00001425d00004008* - ID_PRODUCT_FROM_DATABASE=T420-CX Unified Wire Ethernet Controller - -pci:v00001425d00004009* - ID_PRODUCT_FROM_DATABASE=T420-BT Unified Wire Ethernet Controller - -pci:v00001425d0000400A* - ID_PRODUCT_FROM_DATABASE=T404-BT Unified Wire Ethernet Controller - -pci:v00001425d0000400B* - ID_PRODUCT_FROM_DATABASE=B420-SR Unified Wire Ethernet Controller - -pci:v00001425d0000400C* - ID_PRODUCT_FROM_DATABASE=B404-BT Unified Wire Ethernet Controller - -pci:v00001425d0000400D* - ID_PRODUCT_FROM_DATABASE=T480 Unified Wire Ethernet Controller - -pci:v00001425d0000400E* - ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller - -pci:v00001425d0000400F* - ID_PRODUCT_FROM_DATABASE=T440 [Amsterdam] Unified Wire Ethernet Controller - -pci:v00001425d00004080* - ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller - -pci:v00001425d00004081* - ID_PRODUCT_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Ethernet Controller - -pci:v00001425d00004082* - ID_PRODUCT_FROM_DATABASE=T420-4082 Unified Wire Ethernet Controller - -pci:v00001425d00004083* - ID_PRODUCT_FROM_DATABASE=T420X-4083 Unified Wire Ethernet Controller - -pci:v00001425d00004084* - ID_PRODUCT_FROM_DATABASE=T420-4084 Unified Wire Ethernet Controller - -pci:v00001425d00004085* - ID_PRODUCT_FROM_DATABASE=T420-4085 SFP+ Unified Wire Ethernet Controller - -pci:v00001425d00004086* - ID_PRODUCT_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Ethernet Controller - -pci:v00001425d00004087* - ID_PRODUCT_FROM_DATABASE=T440T-4087 Unified Wire Ethernet Controller - -pci:v00001425d00004401* - ID_PRODUCT_FROM_DATABASE=T420-CR Unified Wire Ethernet Controller - -pci:v00001425d00004402* - ID_PRODUCT_FROM_DATABASE=T422-CR Unified Wire Ethernet Controller - -pci:v00001425d00004403* - ID_PRODUCT_FROM_DATABASE=T440-CR Unified Wire Ethernet Controller - -pci:v00001425d00004404* - ID_PRODUCT_FROM_DATABASE=T420-BCH Unified Wire Ethernet Controller - -pci:v00001425d00004405* - ID_PRODUCT_FROM_DATABASE=T440-BCH Unified Wire Ethernet Controller - -pci:v00001425d00004406* - ID_PRODUCT_FROM_DATABASE=T440-CH Unified Wire Ethernet Controller - -pci:v00001425d00004407* - ID_PRODUCT_FROM_DATABASE=T420-SO Unified Wire Ethernet Controller - -pci:v00001425d00004408* - ID_PRODUCT_FROM_DATABASE=T420-CX Unified Wire Ethernet Controller - -pci:v00001425d00004409* - ID_PRODUCT_FROM_DATABASE=T420-BT Unified Wire Ethernet Controller - -pci:v00001425d0000440A* - ID_PRODUCT_FROM_DATABASE=T404-BT Unified Wire Ethernet Controller - -pci:v00001425d0000440B* - ID_PRODUCT_FROM_DATABASE=B420-SR Unified Wire Ethernet Controller - -pci:v00001425d0000440C* - ID_PRODUCT_FROM_DATABASE=B404-BT Unified Wire Ethernet Controller - -pci:v00001425d0000440D* - ID_PRODUCT_FROM_DATABASE=T480 Unified Wire Ethernet Controller - -pci:v00001425d0000440E* - ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller - -pci:v00001425d0000440F* - ID_PRODUCT_FROM_DATABASE=T440 [Amsterdam] Unified Wire Ethernet Controller - -pci:v00001425d00004480* - ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller - -pci:v00001425d00004481* - ID_PRODUCT_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Ethernet Controller - -pci:v00001425d00004482* - ID_PRODUCT_FROM_DATABASE=T420-4082 Unified Wire Ethernet Controller - -pci:v00001425d00004483* - ID_PRODUCT_FROM_DATABASE=T420X-4083 Unified Wire Ethernet Controller - -pci:v00001425d00004484* - ID_PRODUCT_FROM_DATABASE=T420-4084 Unified Wire Ethernet Controller - -pci:v00001425d00004485* - ID_PRODUCT_FROM_DATABASE=T420-4085 SFP+ Unified Wire Ethernet Controller - -pci:v00001425d00004486* - ID_PRODUCT_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Ethernet Controller - -pci:v00001425d00004487* - ID_PRODUCT_FROM_DATABASE=T440T-4087 Unified Wire Ethernet Controller - -pci:v00001425d00004501* - ID_PRODUCT_FROM_DATABASE=T420-CR Unified Wire Storage Controller - -pci:v00001425d00004502* - ID_PRODUCT_FROM_DATABASE=T422-CR Unified Wire Storage Controller - -pci:v00001425d00004503* - ID_PRODUCT_FROM_DATABASE=T440-CR Unified Wire Storage Controller - -pci:v00001425d00004504* - ID_PRODUCT_FROM_DATABASE=T420-BCH Unified Wire Storage Controller - -pci:v00001425d00004505* - ID_PRODUCT_FROM_DATABASE=T440-BCH Unified Wire Storage Controller - -pci:v00001425d00004506* - ID_PRODUCT_FROM_DATABASE=T440-CH Unified Wire Storage Controller - -pci:v00001425d00004507* - ID_PRODUCT_FROM_DATABASE=T420-SO Unified Wire Storage Controller - -pci:v00001425d00004508* - ID_PRODUCT_FROM_DATABASE=T420-CX Unified Wire Storage Controller - -pci:v00001425d00004509* - ID_PRODUCT_FROM_DATABASE=T420-BT Unified Wire Storage Controller - -pci:v00001425d0000450A* - ID_PRODUCT_FROM_DATABASE=T404-BT Unified Wire Storage Controller - -pci:v00001425d0000450B* - ID_PRODUCT_FROM_DATABASE=B420-SR Unified Wire Storage Controller - -pci:v00001425d0000450C* - ID_PRODUCT_FROM_DATABASE=B404-BT Unified Wire Storage Controller - -pci:v00001425d0000450D* - ID_PRODUCT_FROM_DATABASE=T480 Unified Wire Storage Controller - -pci:v00001425d0000450E* - ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Storage Controller - -pci:v00001425d0000450F* - ID_PRODUCT_FROM_DATABASE=T440 [Amsterdam] Unified Wire Storage Controller - -pci:v00001425d00004580* - ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Storage Controller - -pci:v00001425d00004581* - ID_PRODUCT_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Storage Controller - -pci:v00001425d00004582* - ID_PRODUCT_FROM_DATABASE=T420-4082 Unified Wire Storage Controller - -pci:v00001425d00004583* - ID_PRODUCT_FROM_DATABASE=T420X-4083 Unified Wire Storage Controller - -pci:v00001425d00004584* - ID_PRODUCT_FROM_DATABASE=T420-4084 Unified Wire Storage Controller - -pci:v00001425d00004585* - ID_PRODUCT_FROM_DATABASE=T420-4085 SFP+ Unified Wire Storage Controller - -pci:v00001425d00004586* - ID_PRODUCT_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Storage Controller - -pci:v00001425d00004587* - ID_PRODUCT_FROM_DATABASE=T440T-4087 Unified Wire Storage Controller - -pci:v00001425d00004601* - ID_PRODUCT_FROM_DATABASE=T420-CR Unified Wire Storage Controller - -pci:v00001425d00004602* - ID_PRODUCT_FROM_DATABASE=T422-CR Unified Wire Storage Controller - -pci:v00001425d00004603* - ID_PRODUCT_FROM_DATABASE=T440-CR Unified Wire Storage Controller - -pci:v00001425d00004604* - ID_PRODUCT_FROM_DATABASE=T420-BCH Unified Wire Storage Controller - -pci:v00001425d00004605* - ID_PRODUCT_FROM_DATABASE=T440-BCH Unified Wire Storage Controller - -pci:v00001425d00004606* - ID_PRODUCT_FROM_DATABASE=T440-CH Unified Wire Storage Controller - -pci:v00001425d00004607* - ID_PRODUCT_FROM_DATABASE=T420-SO Unified Wire Storage Controller - -pci:v00001425d00004608* - ID_PRODUCT_FROM_DATABASE=T420-CX Unified Wire Storage Controller - -pci:v00001425d00004609* - ID_PRODUCT_FROM_DATABASE=T420-BT Unified Wire Storage Controller - -pci:v00001425d0000460A* - ID_PRODUCT_FROM_DATABASE=T404-BT Unified Wire Storage Controller - -pci:v00001425d0000460B* - ID_PRODUCT_FROM_DATABASE=B420-SR Unified Wire Storage Controller - -pci:v00001425d0000460C* - ID_PRODUCT_FROM_DATABASE=B404-BT Unified Wire Storage Controller - -pci:v00001425d0000460D* - ID_PRODUCT_FROM_DATABASE=T480 Unified Wire Storage Controller - -pci:v00001425d0000460E* - ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Storage Controller - -pci:v00001425d0000460F* - ID_PRODUCT_FROM_DATABASE=T440 [Amsterdam] Unified Wire Storage Controller - -pci:v00001425d00004680* - ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Storage Controller - -pci:v00001425d00004681* - ID_PRODUCT_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Storage Controller - -pci:v00001425d00004682* - ID_PRODUCT_FROM_DATABASE=T420-4082 Unified Wire Storage Controller - -pci:v00001425d00004683* - ID_PRODUCT_FROM_DATABASE=T420X-4083 Unified Wire Storage Controller - -pci:v00001425d00004684* - ID_PRODUCT_FROM_DATABASE=T420-4084 Unified Wire Storage Controller - -pci:v00001425d00004685* - ID_PRODUCT_FROM_DATABASE=T420-4085 SFP+ Unified Wire Storage Controller - -pci:v00001425d00004686* - ID_PRODUCT_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Storage Controller - -pci:v00001425d00004687* - ID_PRODUCT_FROM_DATABASE=T440T-4087 Unified Wire Storage Controller - -pci:v00001425d00004701* - ID_PRODUCT_FROM_DATABASE=T420-CR Unified Wire Ethernet Controller - -pci:v00001425d00004702* - ID_PRODUCT_FROM_DATABASE=T422-CR Unified Wire Ethernet Controller - -pci:v00001425d00004703* - ID_PRODUCT_FROM_DATABASE=T440-CR Unified Wire Ethernet Controller - -pci:v00001425d00004704* - ID_PRODUCT_FROM_DATABASE=T420-BCH Unified Wire Ethernet Controller - -pci:v00001425d00004705* - ID_PRODUCT_FROM_DATABASE=T440-BCH Unified Wire Ethernet Controller - -pci:v00001425d00004706* - ID_PRODUCT_FROM_DATABASE=T440-CH Unified Wire Ethernet Controller - -pci:v00001425d00004707* - ID_PRODUCT_FROM_DATABASE=T420-SO Unified Wire Ethernet Controller - -pci:v00001425d00004708* - ID_PRODUCT_FROM_DATABASE=T420-CX Unified Wire Ethernet Controller - -pci:v00001425d00004709* - ID_PRODUCT_FROM_DATABASE=T420-BT Unified Wire Ethernet Controller - -pci:v00001425d0000470A* - ID_PRODUCT_FROM_DATABASE=T404-BT Unified Wire Ethernet Controller - -pci:v00001425d0000470B* - ID_PRODUCT_FROM_DATABASE=B420-SR Unified Wire Ethernet Controller - -pci:v00001425d0000470C* - ID_PRODUCT_FROM_DATABASE=B404-BT Unified Wire Ethernet Controller - -pci:v00001425d0000470D* - ID_PRODUCT_FROM_DATABASE=T480 Unified Wire Ethernet Controller - -pci:v00001425d0000470E* - ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller - -pci:v00001425d0000470F* - ID_PRODUCT_FROM_DATABASE=T440 [Amsterdam] Unified Wire Ethernet Controller - -pci:v00001425d00004780* - ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller - -pci:v00001425d00004781* - ID_PRODUCT_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Ethernet Controller - -pci:v00001425d00004782* - ID_PRODUCT_FROM_DATABASE=T420-4082 Unified Wire Ethernet Controller - -pci:v00001425d00004783* - ID_PRODUCT_FROM_DATABASE=T420X-4083 Unified Wire Ethernet Controller - -pci:v00001425d00004784* - ID_PRODUCT_FROM_DATABASE=T420-4084 Unified Wire Ethernet Controller - -pci:v00001425d00004785* - ID_PRODUCT_FROM_DATABASE=T420-4085 SFP+ Unified Wire Ethernet Controller - -pci:v00001425d00004786* - ID_PRODUCT_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Ethernet Controller - -pci:v00001425d00004787* - ID_PRODUCT_FROM_DATABASE=T440T-4087 Unified Wire Ethernet Controller - -pci:v00001425d00004801* - ID_PRODUCT_FROM_DATABASE=T420-CR Unified Wire Ethernet Controller - -pci:v00001425d00004802* - ID_PRODUCT_FROM_DATABASE=T422-CR Unified Wire Ethernet Controller - -pci:v00001425d00004803* - ID_PRODUCT_FROM_DATABASE=T440-CR Unified Wire Ethernet Controller - -pci:v00001425d00004804* - ID_PRODUCT_FROM_DATABASE=T420-BCH Unified Wire Ethernet Controller - -pci:v00001425d00004805* - ID_PRODUCT_FROM_DATABASE=T440-BCH Unified Wire Ethernet Controller - -pci:v00001425d00004806* - ID_PRODUCT_FROM_DATABASE=T440-CH Unified Wire Ethernet Controller - -pci:v00001425d00004807* - ID_PRODUCT_FROM_DATABASE=T420-SO Unified Wire Ethernet Controller - -pci:v00001425d00004808* - ID_PRODUCT_FROM_DATABASE=T420-CX Unified Wire Ethernet Controller - -pci:v00001425d00004809* - ID_PRODUCT_FROM_DATABASE=T420-BT Unified Wire Ethernet Controller - -pci:v00001425d0000480A* - ID_PRODUCT_FROM_DATABASE=T404-BT Unified Wire Ethernet Controller - -pci:v00001425d0000480B* - ID_PRODUCT_FROM_DATABASE=B420-SR Unified Wire Ethernet Controller - -pci:v00001425d0000480C* - ID_PRODUCT_FROM_DATABASE=B404-BT Unified Wire Ethernet Controller - -pci:v00001425d0000480D* - ID_PRODUCT_FROM_DATABASE=T480 Unified Wire Ethernet Controller - -pci:v00001425d0000480E* - ID_PRODUCT_FROM_DATABASE=T440-LP-CR Unified Wire Ethernet Controller - -pci:v00001425d0000480F* - ID_PRODUCT_FROM_DATABASE=T440 [Amsterdam] Unified Wire Ethernet Controller - -pci:v00001425d00004880* - ID_PRODUCT_FROM_DATABASE=T480-4080 T480 Unified Wire Ethernet Controller - -pci:v00001425d00004881* - ID_PRODUCT_FROM_DATABASE=T440F-4081 T440-FCoE Unified Wire Ethernet Controller - -pci:v00001425d00004882* - ID_PRODUCT_FROM_DATABASE=T420-4082 Unified Wire Ethernet Controller - -pci:v00001425d00004883* - ID_PRODUCT_FROM_DATABASE=T420X-4083 Unified Wire Ethernet Controller - -pci:v00001425d00004884* - ID_PRODUCT_FROM_DATABASE=T420-4084 Unified Wire Ethernet Controller - -pci:v00001425d00004885* - ID_PRODUCT_FROM_DATABASE=T420-4085 SFP+ Unified Wire Ethernet Controller - -pci:v00001425d00004886* - ID_PRODUCT_FROM_DATABASE=T440-4086 10Gbase-T Unified Wire Ethernet Controller - -pci:v00001425d00004887* - ID_PRODUCT_FROM_DATABASE=T440T-4087 Unified Wire Ethernet Controller - -pci:v00001425d00005001* - ID_PRODUCT_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller - -pci:v00001425d00005002* - ID_PRODUCT_FROM_DATABASE=T522-CR Unified Wire Ethernet Controller - -pci:v00001425d00005003* - ID_PRODUCT_FROM_DATABASE=T540-CR Unified Wire Ethernet Controller - -pci:v00001425d00005004* - ID_PRODUCT_FROM_DATABASE=T520-BCH Unified Wire Ethernet Controller - -pci:v00001425d00005005* - ID_PRODUCT_FROM_DATABASE=T540-BCH Unified Wire Ethernet Controller - -pci:v00001425d00005006* - ID_PRODUCT_FROM_DATABASE=T540-CH Unified Wire Ethernet Controller - -pci:v00001425d00005007* - ID_PRODUCT_FROM_DATABASE=T520-SO Unified Wire Ethernet Controller - -pci:v00001425d00005008* - ID_PRODUCT_FROM_DATABASE=T520-CX Unified Wire Ethernet Controller - -pci:v00001425d00005009* - ID_PRODUCT_FROM_DATABASE=T520-BT Unified Wire Ethernet Controller - -pci:v00001425d0000500A* - ID_PRODUCT_FROM_DATABASE=T504-BT Unified Wire Ethernet Controller - -pci:v00001425d0000500B* - ID_PRODUCT_FROM_DATABASE=B520-SR Unified Wire Ethernet Controller - -pci:v00001425d0000500C* - ID_PRODUCT_FROM_DATABASE=B504-BT Unified Wire Ethernet Controller - -pci:v00001425d0000500D* - ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller - -pci:v00001425d0000500E* - ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller - -pci:v00001425d0000500F* - ID_PRODUCT_FROM_DATABASE=T540 [Amsterdam] Unified Wire Ethernet Controller - -pci:v00001425d00005010* - ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller - -pci:v00001425d00005011* - ID_PRODUCT_FROM_DATABASE=T520-LL-CR Unified Wire Ethernet Controller - -pci:v00001425d00005012* - ID_PRODUCT_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller - -pci:v00001425d00005013* - ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller - -pci:v00001425d00005401* - ID_PRODUCT_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller - -pci:v00001425d00005402* - ID_PRODUCT_FROM_DATABASE=T522-CR Unified Wire Ethernet Controller - -pci:v00001425d00005403* - ID_PRODUCT_FROM_DATABASE=T540-CR Unified Wire Ethernet Controller - -pci:v00001425d00005404* - ID_PRODUCT_FROM_DATABASE=T520-BCH Unified Wire Ethernet Controller - -pci:v00001425d00005405* - ID_PRODUCT_FROM_DATABASE=T540-BCH Unified Wire Ethernet Controller - -pci:v00001425d00005406* - ID_PRODUCT_FROM_DATABASE=T540-CH Unified Wire Ethernet Controller - -pci:v00001425d00005407* - ID_PRODUCT_FROM_DATABASE=T520-SO Unified Wire Ethernet Controller - -pci:v00001425d00005408* - ID_PRODUCT_FROM_DATABASE=T520-CX Unified Wire Ethernet Controller - -pci:v00001425d00005409* - ID_PRODUCT_FROM_DATABASE=T520-BT Unified Wire Ethernet Controller - -pci:v00001425d0000540A* - ID_PRODUCT_FROM_DATABASE=T504-BT Unified Wire Ethernet Controller - -pci:v00001425d0000540B* - ID_PRODUCT_FROM_DATABASE=B520-SR Unified Wire Ethernet Controller - -pci:v00001425d0000540C* - ID_PRODUCT_FROM_DATABASE=B504-BT Unified Wire Ethernet Controller - -pci:v00001425d0000540D* - ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller - -pci:v00001425d0000540E* - ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller - -pci:v00001425d0000540F* - ID_PRODUCT_FROM_DATABASE=T540 [Amsterdam] Unified Wire Ethernet Controller - -pci:v00001425d00005410* - ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller - -pci:v00001425d00005411* - ID_PRODUCT_FROM_DATABASE=T520-LL-CR Unified Wire Ethernet Controller - -pci:v00001425d00005412* - ID_PRODUCT_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller - -pci:v00001425d00005413* - ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller - -pci:v00001425d00005501* - ID_PRODUCT_FROM_DATABASE=T520-CR Unified Wire Storage Controller - -pci:v00001425d00005502* - ID_PRODUCT_FROM_DATABASE=T522-CR Unified Wire Storage Controller - -pci:v00001425d00005503* - ID_PRODUCT_FROM_DATABASE=T540-CR Unified Wire Storage Controller - -pci:v00001425d00005504* - ID_PRODUCT_FROM_DATABASE=T520-BCH Unified Wire Storage Controller - -pci:v00001425d00005505* - ID_PRODUCT_FROM_DATABASE=T540-BCH Unified Wire Storage Controller - -pci:v00001425d00005506* - ID_PRODUCT_FROM_DATABASE=T540-CH Unified Wire Storage Controller - -pci:v00001425d00005507* - ID_PRODUCT_FROM_DATABASE=T520-SO Unified Wire Storage Controller - -pci:v00001425d00005508* - ID_PRODUCT_FROM_DATABASE=T520-CX Unified Wire Storage Controller - -pci:v00001425d00005509* - ID_PRODUCT_FROM_DATABASE=T520-BT Unified Wire Storage Controller - -pci:v00001425d0000550A* - ID_PRODUCT_FROM_DATABASE=T504-BT Unified Wire Storage Controller - -pci:v00001425d0000550B* - ID_PRODUCT_FROM_DATABASE=B520-SR Unified Wire Storage Controller - -pci:v00001425d0000550C* - ID_PRODUCT_FROM_DATABASE=B504-BT Unified Wire Storage Controller - -pci:v00001425d0000550D* - ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Storage Controller - -pci:v00001425d0000550E* - ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Storage Controller - -pci:v00001425d0000550F* - ID_PRODUCT_FROM_DATABASE=T540 [Amsterdam] Unified Wire Storage Controller - -pci:v00001425d00005510* - ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Storage Controller - -pci:v00001425d00005511* - ID_PRODUCT_FROM_DATABASE=T520-LL-CR Unified Wire Storage Controller - -pci:v00001425d00005512* - ID_PRODUCT_FROM_DATABASE=T560-CR Unified Wire Storage Controller - -pci:v00001425d00005513* - ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Storage Controller - -pci:v00001425d00005601* - ID_PRODUCT_FROM_DATABASE=T520-CR Unified Wire Storage Controller - -pci:v00001425d00005602* - ID_PRODUCT_FROM_DATABASE=T522-CR Unified Wire Storage Controller - -pci:v00001425d00005603* - ID_PRODUCT_FROM_DATABASE=T540-CR Unified Wire Storage Controller - -pci:v00001425d00005604* - ID_PRODUCT_FROM_DATABASE=T520-BCH Unified Wire Storage Controller - -pci:v00001425d00005605* - ID_PRODUCT_FROM_DATABASE=T540-BCH Unified Wire Storage Controller - -pci:v00001425d00005606* - ID_PRODUCT_FROM_DATABASE=T540-CH Unified Wire Storage Controller - -pci:v00001425d00005607* - ID_PRODUCT_FROM_DATABASE=T520-SO Unified Wire Storage Controller - -pci:v00001425d00005608* - ID_PRODUCT_FROM_DATABASE=T520-CX Unified Wire Storage Controller - -pci:v00001425d00005609* - ID_PRODUCT_FROM_DATABASE=T520-BT Unified Wire Storage Controller - -pci:v00001425d0000560A* - ID_PRODUCT_FROM_DATABASE=T504-BT Unified Wire Storage Controller - -pci:v00001425d0000560B* - ID_PRODUCT_FROM_DATABASE=B520-SR Unified Wire Storage Controller - -pci:v00001425d0000560C* - ID_PRODUCT_FROM_DATABASE=B504-BT Unified Wire Storage Controller - -pci:v00001425d0000560D* - ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Storage Controller - -pci:v00001425d0000560E* - ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Storage Controller - -pci:v00001425d0000560F* - ID_PRODUCT_FROM_DATABASE=T540 [Amsterdam] Unified Wire Storage Controller - -pci:v00001425d00005610* - ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Storage Controller - -pci:v00001425d00005611* - ID_PRODUCT_FROM_DATABASE=T520-LL-CR Unified Wire Storage Controller - -pci:v00001425d00005612* - ID_PRODUCT_FROM_DATABASE=T560-CR Unified Wire Storage Controller - -pci:v00001425d00005613* - ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Storage Controller - -pci:v00001425d00005701* - ID_PRODUCT_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller - -pci:v00001425d00005702* - ID_PRODUCT_FROM_DATABASE=T522-CR Unified Wire Ethernet Controller - -pci:v00001425d00005703* - ID_PRODUCT_FROM_DATABASE=T540-CR Unified Wire Ethernet Controller - -pci:v00001425d00005704* - ID_PRODUCT_FROM_DATABASE=T520-BCH Unified Wire Ethernet Controller - -pci:v00001425d00005705* - ID_PRODUCT_FROM_DATABASE=T540-BCH Unified Wire Ethernet Controller - -pci:v00001425d00005706* - ID_PRODUCT_FROM_DATABASE=T540-CH Unified Wire Ethernet Controller - -pci:v00001425d00005707* - ID_PRODUCT_FROM_DATABASE=T520-SO Unified Wire Ethernet Controller - -pci:v00001425d00005708* - ID_PRODUCT_FROM_DATABASE=T520-CX Unified Wire Ethernet Controller - -pci:v00001425d00005709* - ID_PRODUCT_FROM_DATABASE=T520-BT Unified Wire Ethernet Controller - -pci:v00001425d0000570A* - ID_PRODUCT_FROM_DATABASE=T504-BT Unified Wire Ethernet Controller - -pci:v00001425d0000570B* - ID_PRODUCT_FROM_DATABASE=B520-SR Unified Wire Ethernet Controller - -pci:v00001425d0000570C* - ID_PRODUCT_FROM_DATABASE=B504-BT Unified Wire Ethernet Controller - -pci:v00001425d0000570D* - ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller - -pci:v00001425d0000570E* - ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller - -pci:v00001425d0000570F* - ID_PRODUCT_FROM_DATABASE=T540 [Amsterdam] Unified Wire Ethernet Controller - -pci:v00001425d00005710* - ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller - -pci:v00001425d00005711* - ID_PRODUCT_FROM_DATABASE=T520-LL-CR Unified Wire Ethernet Controller - -pci:v00001425d00005712* - ID_PRODUCT_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller - -pci:v00001425d00005713* - ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller - -pci:v00001425d00005801* - ID_PRODUCT_FROM_DATABASE=T520-CR Unified Wire Ethernet Controller - -pci:v00001425d00005802* - ID_PRODUCT_FROM_DATABASE=T522-CR Unified Wire Ethernet Controller - -pci:v00001425d00005803* - ID_PRODUCT_FROM_DATABASE=T540-CR Unified Wire Ethernet Controller - -pci:v00001425d00005804* - ID_PRODUCT_FROM_DATABASE=T520-BCH Unified Wire Ethernet Controller - -pci:v00001425d00005805* - ID_PRODUCT_FROM_DATABASE=T540-BCH Unified Wire Ethernet Controller - -pci:v00001425d00005806* - ID_PRODUCT_FROM_DATABASE=T540-CH Unified Wire Ethernet Controller - -pci:v00001425d00005807* - ID_PRODUCT_FROM_DATABASE=T520-SO Unified Wire Ethernet Controller - -pci:v00001425d00005808* - ID_PRODUCT_FROM_DATABASE=T520-CX Unified Wire Ethernet Controller - -pci:v00001425d00005809* - ID_PRODUCT_FROM_DATABASE=T520-BT Unified Wire Ethernet Controller - -pci:v00001425d0000580A* - ID_PRODUCT_FROM_DATABASE=T504-BT Unified Wire Ethernet Controller - -pci:v00001425d0000580B* - ID_PRODUCT_FROM_DATABASE=B520-SR Unified Wire Ethernet Controller - -pci:v00001425d0000580C* - ID_PRODUCT_FROM_DATABASE=B504-BT Unified Wire Ethernet Controller - -pci:v00001425d0000580D* - ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller - -pci:v00001425d0000580E* - ID_PRODUCT_FROM_DATABASE=T540-LP-CR Unified Wire Ethernet Controller - -pci:v00001425d0000580F* - ID_PRODUCT_FROM_DATABASE=T540 [Amsterdam] Unified Wire Ethernet Controller - -pci:v00001425d00005810* - ID_PRODUCT_FROM_DATABASE=T580-LP-CR Unified Wire Ethernet Controller - -pci:v00001425d00005811* - ID_PRODUCT_FROM_DATABASE=T520-LL-CR Unified Wire Ethernet Controller - -pci:v00001425d00005812* - ID_PRODUCT_FROM_DATABASE=T560-CR Unified Wire Ethernet Controller - -pci:v00001425d00005813* - ID_PRODUCT_FROM_DATABASE=T580-CR Unified Wire Ethernet Controller - -pci:v00001425d0000A000* - ID_PRODUCT_FROM_DATABASE=PE10K Unified Wire Ethernet Controller - -pci:v00001426* - ID_VENDOR_FROM_DATABASE=Storage Technology Corp. - -pci:v00001427* - ID_VENDOR_FROM_DATABASE=Better On-Line Solutions - -pci:v00001428* - ID_VENDOR_FROM_DATABASE=Edec Co Ltd - -pci:v00001429* - ID_VENDOR_FROM_DATABASE=Unex Technology Corp. - -pci:v0000142A* - ID_VENDOR_FROM_DATABASE=Kingmax Technology Inc - -pci:v0000142B* - ID_VENDOR_FROM_DATABASE=Radiolan - -pci:v0000142C* - ID_VENDOR_FROM_DATABASE=Minton Optic Industry Co Ltd - -pci:v0000142D* - ID_VENDOR_FROM_DATABASE=Pix stream Inc - -pci:v0000142E* - ID_VENDOR_FROM_DATABASE=Vitec Multimedia - -pci:v0000142Ed00004020* - ID_PRODUCT_FROM_DATABASE=VM2-2 [Video Maker 2] MPEG1/2 Encoder - -pci:v0000142Ed00004337* - ID_PRODUCT_FROM_DATABASE=VM2-2-C7 [Video Maker 2 rev. C7] MPEG1/2 Encoder - -pci:v0000142F* - ID_VENDOR_FROM_DATABASE=Radicom Research Inc - -pci:v00001430* - ID_VENDOR_FROM_DATABASE=ITT Aerospace/Communications Division - -pci:v00001431* - ID_VENDOR_FROM_DATABASE=Gilat Satellite Networks - -pci:v00001432* - ID_VENDOR_FROM_DATABASE=Edimax Computer Co. - -pci:v00001432d00009130* - ID_PRODUCT_FROM_DATABASE=RTL81xx Fast Ethernet - -pci:v00001433* - ID_VENDOR_FROM_DATABASE=Eltec Elektronik GmbH - -pci:v00001435* - ID_VENDOR_FROM_DATABASE=RTD Embedded Technologies, Inc. - -pci:v00001435d00004520* - ID_PRODUCT_FROM_DATABASE=PCI4520 - -pci:v00001435d00006020* - ID_PRODUCT_FROM_DATABASE=SPM6020 - -pci:v00001435d00006030* - ID_PRODUCT_FROM_DATABASE=SPM6030 - -pci:v00001435d00006420* - ID_PRODUCT_FROM_DATABASE=SPM186420 - -pci:v00001435d00006430* - ID_PRODUCT_FROM_DATABASE=SPM176430 - -pci:v00001435d00006431* - ID_PRODUCT_FROM_DATABASE=SPM176431 - -pci:v00001435d00007520* - ID_PRODUCT_FROM_DATABASE=DM7520 - -pci:v00001435d00007540* - ID_PRODUCT_FROM_DATABASE=SDM7540 - -pci:v00001435d00007820* - ID_PRODUCT_FROM_DATABASE=DM7820 - -pci:v00001436* - ID_VENDOR_FROM_DATABASE=CIS Technology Inc - -pci:v00001437* - ID_VENDOR_FROM_DATABASE=Nissin Inc Co - -pci:v00001438* - ID_VENDOR_FROM_DATABASE=Atmel-dream - -pci:v00001439* - ID_VENDOR_FROM_DATABASE=Outsource Engineering & Mfg. Inc - -pci:v0000143A* - ID_VENDOR_FROM_DATABASE=Stargate Solutions Inc - -pci:v0000143B* - ID_VENDOR_FROM_DATABASE=Canon Research Center, America - -pci:v0000143C* - ID_VENDOR_FROM_DATABASE=Amlogic Inc - -pci:v0000143D* - ID_VENDOR_FROM_DATABASE=Tamarack Microelectronics Inc - -pci:v0000143E* - ID_VENDOR_FROM_DATABASE=Jones Futurex Inc - -pci:v0000143F* - ID_VENDOR_FROM_DATABASE=Lightwell Co Ltd - Zax Division - -pci:v00001440* - ID_VENDOR_FROM_DATABASE=ALGOL Corp. - -pci:v00001441* - ID_VENDOR_FROM_DATABASE=AGIE Ltd - -pci:v00001442* - ID_VENDOR_FROM_DATABASE=Phoenix Contact GmbH & Co. - -pci:v00001443* - ID_VENDOR_FROM_DATABASE=Unibrain S.A. - -pci:v00001444* - ID_VENDOR_FROM_DATABASE=TRW - -pci:v00001445* - ID_VENDOR_FROM_DATABASE=Logical DO Ltd - -pci:v00001446* - ID_VENDOR_FROM_DATABASE=Graphin Co Ltd - -pci:v00001447* - ID_VENDOR_FROM_DATABASE=AIM GmBH - -pci:v00001448* - ID_VENDOR_FROM_DATABASE=Alesis Studio Electronics - -pci:v00001449* - ID_VENDOR_FROM_DATABASE=TUT Systems Inc - -pci:v0000144A* - ID_VENDOR_FROM_DATABASE=Adlink Technology - -pci:v0000144Ad00006208* - ID_PRODUCT_FROM_DATABASE=PCI-6208V - -pci:v0000144Ad00007250* - ID_PRODUCT_FROM_DATABASE=PCI-7250 - -pci:v0000144Ad00007296* - ID_PRODUCT_FROM_DATABASE=PCI-7296 - -pci:v0000144Ad00007432* - ID_PRODUCT_FROM_DATABASE=PCI-7432 - -pci:v0000144Ad00007433* - ID_PRODUCT_FROM_DATABASE=PCI-7433 - -pci:v0000144Ad00007434* - ID_PRODUCT_FROM_DATABASE=PCI-7434 - -pci:v0000144Ad00007841* - ID_PRODUCT_FROM_DATABASE=PCI-7841 - -pci:v0000144Ad00008133* - ID_PRODUCT_FROM_DATABASE=PCI-8133 - -pci:v0000144Ad00008164* - ID_PRODUCT_FROM_DATABASE=PCI-8164 - -pci:v0000144Ad00008554* - ID_PRODUCT_FROM_DATABASE=PCI-8554 - -pci:v0000144Ad00009111* - ID_PRODUCT_FROM_DATABASE=PCI-9111 - -pci:v0000144Ad00009113* - ID_PRODUCT_FROM_DATABASE=PCI-9113 - -pci:v0000144Ad00009114* - ID_PRODUCT_FROM_DATABASE=PCI-9114 - -pci:v0000144B* - ID_VENDOR_FROM_DATABASE=Verint Systems Inc. - -pci:v0000144C* - ID_VENDOR_FROM_DATABASE=Catalina Research Inc - -pci:v0000144D* - ID_VENDOR_FROM_DATABASE=Samsung Electronics Co Ltd - -pci:v0000144E* - ID_VENDOR_FROM_DATABASE=OLITEC - -pci:v0000144F* - ID_VENDOR_FROM_DATABASE=Askey Computer Corp. - -pci:v00001450* - ID_VENDOR_FROM_DATABASE=Octave Communications Ind. - -pci:v00001451* - ID_VENDOR_FROM_DATABASE=SP3D Chip Design GmBH - -pci:v00001453* - ID_VENDOR_FROM_DATABASE=MYCOM Inc - -pci:v00001454* - ID_VENDOR_FROM_DATABASE=Altiga Networks - -pci:v00001455* - ID_VENDOR_FROM_DATABASE=Logic Plus Plus Inc - -pci:v00001456* - ID_VENDOR_FROM_DATABASE=Advanced Hardware Architectures - -pci:v00001457* - ID_VENDOR_FROM_DATABASE=Nuera Communications Inc - -pci:v00001458* - ID_VENDOR_FROM_DATABASE=Giga-byte Technology - -pci:v00001459* - ID_VENDOR_FROM_DATABASE=DOOIN Electronics - -pci:v0000145A* - ID_VENDOR_FROM_DATABASE=Escalate Networks Inc - -pci:v0000145B* - ID_VENDOR_FROM_DATABASE=PRAIM SRL - -pci:v0000145C* - ID_VENDOR_FROM_DATABASE=Cryptek - -pci:v0000145D* - ID_VENDOR_FROM_DATABASE=Gallant Computer Inc - -pci:v0000145E* - ID_VENDOR_FROM_DATABASE=Aashima Technology B.V. - -pci:v0000145F* - ID_VENDOR_FROM_DATABASE=Baldor Electric Company - -pci:v0000145Fd00000001* - ID_PRODUCT_FROM_DATABASE=NextMove PCI - -pci:v00001460* - ID_VENDOR_FROM_DATABASE=DYNARC INC - -pci:v00001461* - ID_VENDOR_FROM_DATABASE=Avermedia Technologies Inc - -pci:v00001461d0000A3CE* - ID_PRODUCT_FROM_DATABASE=M179 - -pci:v00001461d0000A3CF* - ID_PRODUCT_FROM_DATABASE=M179 - -pci:v00001461d0000A836* - ID_PRODUCT_FROM_DATABASE=M115 DVB-T, PAL/SECAM/NTSC Tuner - -pci:v00001461d0000E836* - ID_PRODUCT_FROM_DATABASE=M115S Hybrid Analog/DVB PAL/SECAM/NTSC Tuner - -pci:v00001461d0000F436* - ID_PRODUCT_FROM_DATABASE=AVerTV Hybrid+FM - -pci:v00001462* - ID_VENDOR_FROM_DATABASE=Micro-Star International Co., Ltd. - -pci:v00001463* - ID_VENDOR_FROM_DATABASE=Fast Corporation - -pci:v00001464* - ID_VENDOR_FROM_DATABASE=Interactive Circuits & Systems Ltd - -pci:v00001465* - ID_VENDOR_FROM_DATABASE=GN NETTEST Telecom DIV. - -pci:v00001466* - ID_VENDOR_FROM_DATABASE=Designpro Inc. - -pci:v00001467* - ID_VENDOR_FROM_DATABASE=DIGICOM SPA - -pci:v00001468* - ID_VENDOR_FROM_DATABASE=AMBIT Microsystem Corp. - -pci:v00001469* - ID_VENDOR_FROM_DATABASE=Cleveland Motion Controls - -pci:v0000146A* - ID_VENDOR_FROM_DATABASE=IFR - -pci:v0000146B* - ID_VENDOR_FROM_DATABASE=Parascan Technologies Ltd - -pci:v0000146C* - ID_VENDOR_FROM_DATABASE=Ruby Tech Corp. - -pci:v0000146Cd00001430* - ID_PRODUCT_FROM_DATABASE=FE-1430TX Fast Ethernet PCI Adapter - -pci:v0000146D* - ID_VENDOR_FROM_DATABASE=Tachyon, INC. - -pci:v0000146E* - ID_VENDOR_FROM_DATABASE=Williams Electronics Games, Inc. - -pci:v0000146F* - ID_VENDOR_FROM_DATABASE=Multi Dimensional Consulting Inc - -pci:v00001470* - ID_VENDOR_FROM_DATABASE=Bay Networks - -pci:v00001471* - ID_VENDOR_FROM_DATABASE=Integrated Telecom Express Inc - -pci:v00001472* - ID_VENDOR_FROM_DATABASE=DAIKIN Industries, Ltd - -pci:v00001473* - ID_VENDOR_FROM_DATABASE=ZAPEX Technologies Inc - -pci:v00001474* - ID_VENDOR_FROM_DATABASE=Doug Carson & Associates - -pci:v00001475* - ID_VENDOR_FROM_DATABASE=PICAZO Communications - -pci:v00001476* - ID_VENDOR_FROM_DATABASE=MORTARA Instrument Inc - -pci:v00001477* - ID_VENDOR_FROM_DATABASE=Net Insight - -pci:v00001478* - ID_VENDOR_FROM_DATABASE=DIATREND Corporation - -pci:v00001479* - ID_VENDOR_FROM_DATABASE=TORAY Industries Inc - -pci:v0000147A* - ID_VENDOR_FROM_DATABASE=FORMOSA Industrial Computing - -pci:v0000147B* - ID_VENDOR_FROM_DATABASE=ABIT Computer Corp. - -pci:v0000147Bd00001084* - ID_PRODUCT_FROM_DATABASE=IP35 [Dark Raider] - -pci:v0000147C* - ID_VENDOR_FROM_DATABASE=AWARE, Inc. - -pci:v0000147D* - ID_VENDOR_FROM_DATABASE=Interworks Computer Products - -pci:v0000147E* - ID_VENDOR_FROM_DATABASE=Matsushita Graphic Communication Systems, Inc. - -pci:v0000147F* - ID_VENDOR_FROM_DATABASE=NIHON UNISYS, Ltd. - -pci:v00001480* - ID_VENDOR_FROM_DATABASE=SCII Telecom - -pci:v00001481* - ID_VENDOR_FROM_DATABASE=BIOPAC Systems Inc - -pci:v00001482* - ID_VENDOR_FROM_DATABASE=ISYTEC - Integrierte Systemtechnik GmBH - -pci:v00001482d00000001* - ID_PRODUCT_FROM_DATABASE=PCI-16 Host Interface for ITC-16 - -pci:v00001483* - ID_VENDOR_FROM_DATABASE=LABWAY Corporation - -pci:v00001484* - ID_VENDOR_FROM_DATABASE=Logic Corporation - -pci:v00001485* - ID_VENDOR_FROM_DATABASE=ERMA - Electronic GmBH - -pci:v00001486* - ID_VENDOR_FROM_DATABASE=L3 Communications Telemetry & Instrumentation - -pci:v00001487* - ID_VENDOR_FROM_DATABASE=MARQUETTE Medical Systems - -pci:v00001488* - ID_VENDOR_FROM_DATABASE=KONTRON Electronik GmBH - -pci:v00001489* - ID_VENDOR_FROM_DATABASE=KYE Systems Corporation - -pci:v0000148A* - ID_VENDOR_FROM_DATABASE=OPTO - -pci:v0000148B* - ID_VENDOR_FROM_DATABASE=INNOMEDIALOGIC Inc. - -pci:v0000148C* - ID_VENDOR_FROM_DATABASE=C.P. Technology Co. Ltd - -pci:v0000148D* - ID_VENDOR_FROM_DATABASE=DIGICOM Systems, Inc. - -pci:v0000148Dd00001003* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax Modem - -pci:v0000148E* - ID_VENDOR_FROM_DATABASE=OSI Plus Corporation - -pci:v0000148F* - ID_VENDOR_FROM_DATABASE=Plant Equipment, Inc. - -pci:v00001490* - ID_VENDOR_FROM_DATABASE=Stone Microsystems PTY Ltd. - -pci:v00001491* - ID_VENDOR_FROM_DATABASE=ZEAL Corporation - -pci:v00001492* - ID_VENDOR_FROM_DATABASE=Time Logic Corporation - -pci:v00001493* - ID_VENDOR_FROM_DATABASE=MAKER Communications - -pci:v00001494* - ID_VENDOR_FROM_DATABASE=WINTOP Technology, Inc. - -pci:v00001495* - ID_VENDOR_FROM_DATABASE=TOKAI Communications Industry Co. Ltd - -pci:v00001496* - ID_VENDOR_FROM_DATABASE=JOYTECH Computer Co., Ltd. - -pci:v00001497* - ID_VENDOR_FROM_DATABASE=SMA Regelsysteme GmBH - -pci:v00001497d00001497* - ID_PRODUCT_FROM_DATABASE=SMA Technologie AG - -pci:v00001498* - ID_VENDOR_FROM_DATABASE=TEWS Technologies GmbH - -pci:v00001498d00000330* - ID_PRODUCT_FROM_DATABASE=TPMC816 2 Channel CAN bus controller. - -pci:v00001498d0000035D* - ID_PRODUCT_FROM_DATABASE=TPMC861 4-Channel Isolated Serial Interface RS422/RS485 - -pci:v00001498d00000385* - ID_PRODUCT_FROM_DATABASE=TPMC901 Extended CAN bus with 2/4/6 CAN controller - -pci:v00001498d000021CC* - ID_PRODUCT_FROM_DATABASE=TCP460 CompactPCI 16 Channel Serial Interface RS232/RS422 - -pci:v00001498d000021CD* - ID_PRODUCT_FROM_DATABASE=TCP461 CompactPCI 8 Channel Serial Interface RS232/RS422 - -pci:v00001498d00003064* - ID_PRODUCT_FROM_DATABASE=TPCI100 (2 Slot IndustryPack PCI Carrier) - -pci:v00001498d000030C8* - ID_PRODUCT_FROM_DATABASE=TPCI200 - -pci:v00001499* - ID_VENDOR_FROM_DATABASE=EMTEC CO., Ltd - -pci:v0000149A* - ID_VENDOR_FROM_DATABASE=ANDOR Technology Ltd - -pci:v0000149B* - ID_VENDOR_FROM_DATABASE=SEIKO Instruments Inc - -pci:v0000149C* - ID_VENDOR_FROM_DATABASE=OVISLINK Corp. - -pci:v0000149D* - ID_VENDOR_FROM_DATABASE=NEWTEK Inc - -pci:v0000149Dd00000001* - ID_PRODUCT_FROM_DATABASE=Video Toaster for PC - -pci:v0000149E* - ID_VENDOR_FROM_DATABASE=Mapletree Networks Inc. - -pci:v0000149F* - ID_VENDOR_FROM_DATABASE=LECTRON Co Ltd - -pci:v000014A0* - ID_VENDOR_FROM_DATABASE=SOFTING GmBH - -pci:v000014A1* - ID_VENDOR_FROM_DATABASE=Systembase Co Ltd - -pci:v000014A2* - ID_VENDOR_FROM_DATABASE=Millennium Engineering Inc - -pci:v000014A3* - ID_VENDOR_FROM_DATABASE=Maverick Networks - -pci:v000014A4* - ID_VENDOR_FROM_DATABASE=Broadcom Corporation (Wrong ID) - -pci:v000014A4d00004318* - ID_PRODUCT_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller - -pci:v000014A5* - ID_VENDOR_FROM_DATABASE=XIONICS Document Technologies Inc - -pci:v000014A6* - ID_VENDOR_FROM_DATABASE=INOVA Computers GmBH & Co KG - -pci:v000014A7* - ID_VENDOR_FROM_DATABASE=MYTHOS Systems Inc - -pci:v000014A8* - ID_VENDOR_FROM_DATABASE=FEATRON Technologies Corporation - -pci:v000014A9* - ID_VENDOR_FROM_DATABASE=HIVERTEC Inc - -pci:v000014AA* - ID_VENDOR_FROM_DATABASE=Advanced MOS Technology Inc - -pci:v000014AB* - ID_VENDOR_FROM_DATABASE=Mentor Graphics Corp. - -pci:v000014AC* - ID_VENDOR_FROM_DATABASE=Novaweb Technologies Inc - -pci:v000014AD* - ID_VENDOR_FROM_DATABASE=Time Space Radio AB - -pci:v000014AE* - ID_VENDOR_FROM_DATABASE=CTI, Inc - -pci:v000014AF* - ID_VENDOR_FROM_DATABASE=Guillemot Corporation - -pci:v000014AFd00007102* - ID_PRODUCT_FROM_DATABASE=3D Prophet II MX - -pci:v000014B0* - ID_VENDOR_FROM_DATABASE=BST Communication Technology Ltd - -pci:v000014B1* - ID_VENDOR_FROM_DATABASE=Nextcom K.K. - -pci:v000014B2* - ID_VENDOR_FROM_DATABASE=ENNOVATE Networks Inc - -pci:v000014B3* - ID_VENDOR_FROM_DATABASE=XPEED Inc - -pci:v000014B3d00000000* - ID_PRODUCT_FROM_DATABASE=DSL NIC - -pci:v000014B4* - ID_VENDOR_FROM_DATABASE=PHILIPS Business Electronics B.V. - -pci:v000014B5* - ID_VENDOR_FROM_DATABASE=Creamware GmBH - -pci:v000014B5d00000200* - ID_PRODUCT_FROM_DATABASE=Scope - -pci:v000014B5d00000300* - ID_PRODUCT_FROM_DATABASE=Pulsar - -pci:v000014B5d00000400* - ID_PRODUCT_FROM_DATABASE=PulsarSRB - -pci:v000014B5d00000600* - ID_PRODUCT_FROM_DATABASE=Pulsar2 - -pci:v000014B5d00000800* - ID_PRODUCT_FROM_DATABASE=DSP-Board - -pci:v000014B5d00000900* - ID_PRODUCT_FROM_DATABASE=DSP-Board - -pci:v000014B5d00000A00* - ID_PRODUCT_FROM_DATABASE=DSP-Board - -pci:v000014B5d00000B00* - ID_PRODUCT_FROM_DATABASE=DSP-Board - -pci:v000014B6* - ID_VENDOR_FROM_DATABASE=Quantum Data Corp. - -pci:v000014B7* - ID_VENDOR_FROM_DATABASE=PROXIM Inc - -pci:v000014B7d00000001* - ID_PRODUCT_FROM_DATABASE=Symphony 4110 - -pci:v000014B8* - ID_VENDOR_FROM_DATABASE=Techsoft Technology Co Ltd - -pci:v000014B9* - ID_VENDOR_FROM_DATABASE=Cisco Aironet Wireless Communications - -pci:v000014B9d00000001* - ID_PRODUCT_FROM_DATABASE=PC4800 - -pci:v000014B9d00000340* - ID_PRODUCT_FROM_DATABASE=PC4800 - -pci:v000014B9d00000350* - ID_PRODUCT_FROM_DATABASE=350 series 802.11b Wireless LAN Adapter - -pci:v000014B9d00004500* - ID_PRODUCT_FROM_DATABASE=PC4500 - -pci:v000014B9d00004800* - ID_PRODUCT_FROM_DATABASE=Cisco Aironet 340 802.11b Wireless LAN Adapter/Aironet PC4800 - -pci:v000014B9d0000A504* - ID_PRODUCT_FROM_DATABASE=Cisco Aironet Wireless 802.11b - -pci:v000014B9d0000A505* - ID_PRODUCT_FROM_DATABASE=Cisco Aironet CB20a 802.11a Wireless LAN Adapter - -pci:v000014B9d0000A506* - ID_PRODUCT_FROM_DATABASE=Cisco Aironet Mini PCI b/g - -pci:v000014BA* - ID_VENDOR_FROM_DATABASE=INTERNIX Inc. - -pci:v000014BAd00000600* - ID_PRODUCT_FROM_DATABASE=ARC-PCI/22 - -pci:v000014BB* - ID_VENDOR_FROM_DATABASE=SEMTECH Corporation - -pci:v000014BC* - ID_VENDOR_FROM_DATABASE=Globespan Semiconductor Inc. - -pci:v000014BCd0000D002* - ID_PRODUCT_FROM_DATABASE=Pulsar [PCI ADSL Card] - -pci:v000014BCd0000D00F* - ID_PRODUCT_FROM_DATABASE=Pulsar [PCI ADSL Card] - -pci:v000014BD* - ID_VENDOR_FROM_DATABASE=CARDIO Control N.V. - -pci:v000014BE* - ID_VENDOR_FROM_DATABASE=L3 Communications - -pci:v000014BF* - ID_VENDOR_FROM_DATABASE=SPIDER Communications Inc. - -pci:v000014C0* - ID_VENDOR_FROM_DATABASE=COMPAL Electronics Inc - -pci:v000014C1* - ID_VENDOR_FROM_DATABASE=MYRICOM Inc. - -pci:v000014C1d00000008* - ID_PRODUCT_FROM_DATABASE=Myri-10G Dual-Protocol NIC - -pci:v000014C1d00000008sv000014C1sd00000008* - ID_PRODUCT_FROM_DATABASE=10G-PCIE-8A - -pci:v000014C1d00000008sv000014C1sd00000009* - ID_PRODUCT_FROM_DATABASE=10G-PCIE-8A (MSI-X firmware) - -pci:v000014C1d00000008sv000014C1sd0000000A* - ID_PRODUCT_FROM_DATABASE=10G-PCIE-8B - -pci:v000014C1d00008043* - ID_PRODUCT_FROM_DATABASE=Myrinet 2000 Scalable Cluster Interconnect - -pci:v000014C1d00008043sv0000103Csd00001240* - ID_PRODUCT_FROM_DATABASE=Myrinet M2L-PCI64/2-3.0 LANai 7.4 (HP OEM) - -pci:v000014C2* - ID_VENDOR_FROM_DATABASE=DTK Computer - -pci:v000014C3* - ID_VENDOR_FROM_DATABASE=MEDIATEK Corp. - -pci:v000014C4* - ID_VENDOR_FROM_DATABASE=IWASAKI Information Systems Co Ltd - -pci:v000014C5* - ID_VENDOR_FROM_DATABASE=Automation Products AB - -pci:v000014C6* - ID_VENDOR_FROM_DATABASE=Data Race Inc - -pci:v000014C7* - ID_VENDOR_FROM_DATABASE=Modular Technology Holdings Ltd - -pci:v000014C8* - ID_VENDOR_FROM_DATABASE=Turbocomm Tech. Inc. - -pci:v000014C9* - ID_VENDOR_FROM_DATABASE=ODIN Telesystems Inc - -pci:v000014CA* - ID_VENDOR_FROM_DATABASE=PE Logic Corp. - -pci:v000014CB* - ID_VENDOR_FROM_DATABASE=Billionton Systems Inc - -pci:v000014CC* - ID_VENDOR_FROM_DATABASE=NAKAYO Telecommunications Inc - -pci:v000014CD* - ID_VENDOR_FROM_DATABASE=Universal Scientific Ind. - -pci:v000014CE* - ID_VENDOR_FROM_DATABASE=Whistle Communications - -pci:v000014CF* - ID_VENDOR_FROM_DATABASE=TEK Microsystems Inc. - -pci:v000014D0* - ID_VENDOR_FROM_DATABASE=Ericsson Axe R & D - -pci:v000014D1* - ID_VENDOR_FROM_DATABASE=Computer Hi-Tech Co Ltd - -pci:v000014D2* - ID_VENDOR_FROM_DATABASE=Titan Electronics Inc - -pci:v000014D2d00008001* - ID_PRODUCT_FROM_DATABASE=VScom 010L 1 port parallel adaptor - -pci:v000014D2d00008002* - ID_PRODUCT_FROM_DATABASE=VScom 020L 2 port parallel adaptor - -pci:v000014D2d00008010* - ID_PRODUCT_FROM_DATABASE=VScom 100L 1 port serial adaptor - -pci:v000014D2d00008011* - ID_PRODUCT_FROM_DATABASE=VScom 110L 1 port serial and 1 port parallel adaptor - -pci:v000014D2d00008020* - ID_PRODUCT_FROM_DATABASE=VScom 200L 1 or 2 port serial adaptor - -pci:v000014D2d00008021* - ID_PRODUCT_FROM_DATABASE=VScom 210L 2 port serial and 1 port parallel adaptor - -pci:v000014D2d00008028* - ID_PRODUCT_FROM_DATABASE=VScom 200I/200I-SI 2-port serial adapter - -pci:v000014D2d00008040* - ID_PRODUCT_FROM_DATABASE=VScom 400L 4 port serial adaptor - -pci:v000014D2d00008043* - ID_PRODUCT_FROM_DATABASE=VScom 430L 4-port serial and 3-port parallel adapter - -pci:v000014D2d00008048* - ID_PRODUCT_FROM_DATABASE=VScom 400I 4-port serial adapter - -pci:v000014D2d00008080* - ID_PRODUCT_FROM_DATABASE=VScom 800L 8 port serial adaptor - -pci:v000014D2d00008088* - ID_PRODUCT_FROM_DATABASE=VScom 800I 8-port serial adapter - -pci:v000014D2d0000A000* - ID_PRODUCT_FROM_DATABASE=VScom 010H 1 port parallel adaptor - -pci:v000014D2d0000A001* - ID_PRODUCT_FROM_DATABASE=VScom 100H 1 port serial adaptor - -pci:v000014D2d0000A003* - ID_PRODUCT_FROM_DATABASE=VScom 400H 4 port serial adaptor - -pci:v000014D2d0000A004* - ID_PRODUCT_FROM_DATABASE=VScom 400HF1 4 port serial adaptor - -pci:v000014D2d0000A005* - ID_PRODUCT_FROM_DATABASE=VScom 200H 2 port serial adaptor - -pci:v000014D2d0000A007* - ID_PRODUCT_FROM_DATABASE=VScom PCI800EH (PCIe) 8-port serial adapter Port 1-4 - -pci:v000014D2d0000A008* - ID_PRODUCT_FROM_DATABASE=VScom PCI800EH (PCIe) 8-port serial adapter Port 5-8 - -pci:v000014D2d0000A009* - ID_PRODUCT_FROM_DATABASE=VScom PCI400EH (PCIe) 4-port serial adapter - -pci:v000014D2d0000E001* - ID_PRODUCT_FROM_DATABASE=VScom 010HV2 1 port parallel adaptor - -pci:v000014D2d0000E010* - ID_PRODUCT_FROM_DATABASE=VScom 100HV2 1 port serial adaptor - -pci:v000014D2d0000E020* - ID_PRODUCT_FROM_DATABASE=VScom 200HV2 2 port serial adaptor - -pci:v000014D3* - ID_VENDOR_FROM_DATABASE=CIRTECH (UK) Ltd - -pci:v000014D4* - ID_VENDOR_FROM_DATABASE=Panacom Technology Corp - -pci:v000014D5* - ID_VENDOR_FROM_DATABASE=Nitsuko Corporation - -pci:v000014D6* - ID_VENDOR_FROM_DATABASE=Accusys Inc - -pci:v000014D6d00006101* - ID_PRODUCT_FROM_DATABASE=ACS-61xxx, PCIe to SAS/SATA RAID HBA - -pci:v000014D6d00006201* - ID_PRODUCT_FROM_DATABASE=ACS-62xxx, External PCIe to SAS/SATA RAID controller - -pci:v000014D7* - ID_VENDOR_FROM_DATABASE=Hirakawa Hewtech Corp - -pci:v000014D8* - ID_VENDOR_FROM_DATABASE=HOPF Elektronik GmBH - -pci:v000014D9* - ID_VENDOR_FROM_DATABASE=Alliance Semiconductor Corporation - -pci:v000014D9d00000010* - ID_PRODUCT_FROM_DATABASE=AP1011/SP1011 HyperTransport-PCI Bridge [Sturgeon] - -pci:v000014D9d00009000* - ID_PRODUCT_FROM_DATABASE=AS90L10204/10208 HyperTransport to PCI-X Bridge - -pci:v000014DA* - ID_VENDOR_FROM_DATABASE=National Aerospace Laboratories - -pci:v000014DB* - ID_VENDOR_FROM_DATABASE=AFAVLAB Technology Inc - -pci:v000014DBd00002120* - ID_PRODUCT_FROM_DATABASE=TK9902 - -pci:v000014DBd00002182* - ID_PRODUCT_FROM_DATABASE=AFAVLAB Technology Inc. 8-port serial card - -pci:v000014DC* - ID_VENDOR_FROM_DATABASE=Amplicon Liveline Ltd - -pci:v000014DCd00000000* - ID_PRODUCT_FROM_DATABASE=PCI230 - -pci:v000014DCd00000001* - ID_PRODUCT_FROM_DATABASE=PCI242 - -pci:v000014DCd00000002* - ID_PRODUCT_FROM_DATABASE=PCI244 - -pci:v000014DCd00000003* - ID_PRODUCT_FROM_DATABASE=PCI247 - -pci:v000014DCd00000004* - ID_PRODUCT_FROM_DATABASE=PCI248 - -pci:v000014DCd00000005* - ID_PRODUCT_FROM_DATABASE=PCI249 - -pci:v000014DCd00000006* - ID_PRODUCT_FROM_DATABASE=PCI260 - -pci:v000014DCd00000007* - ID_PRODUCT_FROM_DATABASE=PCI224 - -pci:v000014DCd00000008* - ID_PRODUCT_FROM_DATABASE=PCI234 - -pci:v000014DCd00000009* - ID_PRODUCT_FROM_DATABASE=PCI236 - -pci:v000014DCd0000000A* - ID_PRODUCT_FROM_DATABASE=PCI272 - -pci:v000014DCd0000000B* - ID_PRODUCT_FROM_DATABASE=PCI215 - -pci:v000014DD* - ID_VENDOR_FROM_DATABASE=Boulder Design Labs Inc - -pci:v000014DE* - ID_VENDOR_FROM_DATABASE=Applied Integration Corporation - -pci:v000014DF* - ID_VENDOR_FROM_DATABASE=ASIC Communications Corp - -pci:v000014E1* - ID_VENDOR_FROM_DATABASE=INVERTEX - -pci:v000014E2* - ID_VENDOR_FROM_DATABASE=INFOLIBRIA - -pci:v000014E3* - ID_VENDOR_FROM_DATABASE=AMTELCO - -pci:v000014E4* - ID_VENDOR_FROM_DATABASE=Broadcom Corporation - -pci:v000014E4d00000576* - ID_PRODUCT_FROM_DATABASE=BCM43224 802.11a/b/g/n - -pci:v000014E4d00000800* - ID_PRODUCT_FROM_DATABASE=Sentry5 Chipcommon I/O Controller - -pci:v000014E4d00000804* - ID_PRODUCT_FROM_DATABASE=Sentry5 PCI Bridge - -pci:v000014E4d00000805* - ID_PRODUCT_FROM_DATABASE=Sentry5 MIPS32 CPU - -pci:v000014E4d00000806* - ID_PRODUCT_FROM_DATABASE=Sentry5 Ethernet Controller - -pci:v000014E4d0000080B* - ID_PRODUCT_FROM_DATABASE=Sentry5 Crypto Accelerator - -pci:v000014E4d0000080F* - ID_PRODUCT_FROM_DATABASE=Sentry5 DDR/SDR RAM Controller - -pci:v000014E4d00000811* - ID_PRODUCT_FROM_DATABASE=Sentry5 External Interface Core - -pci:v000014E4d00000816* - ID_PRODUCT_FROM_DATABASE=BCM3302 Sentry5 MIPS32 CPU - -pci:v000014E4d00001600* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5752 Gigabit Ethernet PCI Express - -pci:v000014E4d00001600sv00001028sd000001C1* - ID_PRODUCT_FROM_DATABASE=Precision 490 - -pci:v000014E4d00001600sv00001028sd000001C2* - ID_PRODUCT_FROM_DATABASE=Latitude D620 - -pci:v000014E4d00001600sv0000103Csd00003015* - ID_PRODUCT_FROM_DATABASE=PCIe LAN on Motherboard - -pci:v000014E4d00001600sv0000107Bsd00005048* - ID_PRODUCT_FROM_DATABASE=E4500 Onboard - -pci:v000014E4d00001600sv00001259sd00002705* - ID_PRODUCT_FROM_DATABASE=AT-2711FX - -pci:v000014E4d00001601* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5752M Gigabit Ethernet PCI Express - -pci:v000014E4d00001612* - ID_PRODUCT_FROM_DATABASE=BCM70012 Video Decoder [Crystal HD] - -pci:v000014E4d00001615* - ID_PRODUCT_FROM_DATABASE=BCM70015 Video Decoder [Crystal HD] - -pci:v000014E4d00001639* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM5709 Gigabit Ethernet - -pci:v000014E4d00001639sv00001028sd00000235* - ID_PRODUCT_FROM_DATABASE=PowerEdge R710 BCM5709 Gigabit Ethernet - -pci:v000014E4d00001639sv00001028sd00000236* - ID_PRODUCT_FROM_DATABASE=PowerEdge R610 BCM5709 Gigabit Ethernet - -pci:v000014E4d00001639sv00001028sd00000237* - ID_PRODUCT_FROM_DATABASE=PowerEdge T610 BCM5709 Gigabit Ethernet - -pci:v000014E4d00001639sv0000103Csd00007055* - ID_PRODUCT_FROM_DATABASE=NC382i Integrated Multi-port PCI Express Gigabit Server Adapter - -pci:v000014E4d00001639sv0000103Csd00007059* - ID_PRODUCT_FROM_DATABASE=NC382T PCI Express Dual Port Multifunction Gigabit Server Adapter - -pci:v000014E4d00001639sv000010A9sd00008027* - ID_PRODUCT_FROM_DATABASE=Quad port Gigabit Ethernet Controller - -pci:v000014E4d0000163A* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM5709S Gigabit Ethernet - -pci:v000014E4d0000163Asv00001028sd0000027B* - ID_PRODUCT_FROM_DATABASE=PowerEdge M805 Broadcom NetXtreme II BCM5709S - -pci:v000014E4d0000163Asv00001028sd0000029C* - ID_PRODUCT_FROM_DATABASE=PowerEdge M710 BCM5709S Gigabit Ethernet - -pci:v000014E4d0000163Asv0000103Csd0000171D* - ID_PRODUCT_FROM_DATABASE=NC382m Dual Port 1GbE Multifunction BL-c Adapter - -pci:v000014E4d0000163Asv0000103Csd00007056* - ID_PRODUCT_FROM_DATABASE=NC382i Integrated Quad Port PCI Express Gigabit Server Adapter - -pci:v000014E4d0000163B* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM5716 Gigabit Ethernet - -pci:v000014E4d0000163Bsv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 BCM5716 Gigabit Ethernet - -pci:v000014E4d0000163Bsv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 BCM5716 Gigabit Ethernet - -pci:v000014E4d0000163Bsv00001028sd000002F1* - ID_PRODUCT_FROM_DATABASE=PowerEdge R510 BCM5716 Gigabit Ethernet - -pci:v000014E4d0000163C* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM5716S Gigabit Ethernet - -pci:v000014E4d0000163D* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57811 10-Gigabit Ethernet - -pci:v000014E4d0000163E* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57811 10 Gigabit Ethernet Multi Function - -pci:v000014E4d0000163F* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57811 10-Gigabit Ethernet Virtual Function - -pci:v000014E4d00001641* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM57787 Gigabit Ethernet PCIe - -pci:v000014E4d00001642* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM57764 Gigabit Ethernet PCIe - -pci:v000014E4d00001643* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5725 Gigabit Ethernet PCIe - -pci:v000014E4d00001644* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5700 Gigabit Ethernet - -pci:v000014E4d00001644sv00001014sd00000277* - ID_PRODUCT_FROM_DATABASE=Broadcom Vigil B5700 1000Base-T - -pci:v000014E4d00001644sv00001028sd000000D1* - ID_PRODUCT_FROM_DATABASE=Broadcom BCM5700 - -pci:v000014E4d00001644sv00001028sd00000106* - ID_PRODUCT_FROM_DATABASE=Broadcom BCM5700 - -pci:v000014E4d00001644sv00001028sd00000109* - ID_PRODUCT_FROM_DATABASE=Broadcom BCM5700 1000Base-T - -pci:v000014E4d00001644sv00001028sd0000010A* - ID_PRODUCT_FROM_DATABASE=Broadcom BCM5700 1000BaseTX - -pci:v000014E4d00001644sv000010B7sd00001000* - ID_PRODUCT_FROM_DATABASE=3C996-T 1000Base-T - -pci:v000014E4d00001644sv000010B7sd00001001* - ID_PRODUCT_FROM_DATABASE=3C996B-T 1000Base-T - -pci:v000014E4d00001644sv000010B7sd00001002* - ID_PRODUCT_FROM_DATABASE=3C996C-T 1000Base-T - -pci:v000014E4d00001644sv000010B7sd00001003* - ID_PRODUCT_FROM_DATABASE=3C997-T 1000Base-T Dual Port - -pci:v000014E4d00001644sv000010B7sd00001004* - ID_PRODUCT_FROM_DATABASE=3C996-SX 1000Base-SX - -pci:v000014E4d00001644sv000010B7sd00001005* - ID_PRODUCT_FROM_DATABASE=3C997-SX 1000Base-SX Dual Port - -pci:v000014E4d00001644sv000010B7sd00001008* - ID_PRODUCT_FROM_DATABASE=3C942 Gigabit LOM (31X31) - -pci:v000014E4d00001644sv000014E4sd00000002* - ID_PRODUCT_FROM_DATABASE=NetXtreme 1000Base-SX - -pci:v000014E4d00001644sv000014E4sd00000003* - ID_PRODUCT_FROM_DATABASE=NetXtreme 1000Base-SX - -pci:v000014E4d00001644sv000014E4sd00000004* - ID_PRODUCT_FROM_DATABASE=NetXtreme 1000Base-T - -pci:v000014E4d00001644sv000014E4sd00001028* - ID_PRODUCT_FROM_DATABASE=NetXtreme 1000BaseTX - -pci:v000014E4d00001644sv000014E4sd00001644* - ID_PRODUCT_FROM_DATABASE=BCM5700 1000Base-T - -pci:v000014E4d00001645* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet - -pci:v000014E4d00001645sv00000E11sd0000007C* - ID_PRODUCT_FROM_DATABASE=NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) - -pci:v000014E4d00001645sv00000E11sd0000007D* - ID_PRODUCT_FROM_DATABASE=NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) - -pci:v000014E4d00001645sv00000E11sd00000085* - ID_PRODUCT_FROM_DATABASE=NC7780 Gigabit Server Adapter (embedded, WOL) - -pci:v000014E4d00001645sv00000E11sd00000099* - ID_PRODUCT_FROM_DATABASE=NC7780 Gigabit Server Adapter (embedded, WOL) - -pci:v000014E4d00001645sv00000E11sd0000009A* - ID_PRODUCT_FROM_DATABASE=NC7770 Gigabit Server Adapter (PCI-X, 10/100/1000-T) - -pci:v000014E4d00001645sv00000E11sd000000C1* - ID_PRODUCT_FROM_DATABASE=NC6770 Gigabit Server Adapter (PCI-X, 1000-SX) - -pci:v000014E4d00001645sv00001028sd00000121* - ID_PRODUCT_FROM_DATABASE=Broadcom BCM5701 1000Base-T - -pci:v000014E4d00001645sv0000103Csd0000128A* - ID_PRODUCT_FROM_DATABASE=BCM5701 1000Base-T (HP, OEM 3COM) - -pci:v000014E4d00001645sv0000103Csd0000128B* - ID_PRODUCT_FROM_DATABASE=1000Base-SX (PCI) [A7073A] - -pci:v000014E4d00001645sv0000103Csd000012A4* - ID_PRODUCT_FROM_DATABASE=Core Lan 1000Base-T - -pci:v000014E4d00001645sv0000103Csd000012C1* - ID_PRODUCT_FROM_DATABASE=IOX Core Lan 1000Base-T [A7109AX] - -pci:v000014E4d00001645sv0000103Csd00001300* - ID_PRODUCT_FROM_DATABASE=Core LAN/SCSI Combo [A6794A] - -pci:v000014E4d00001645sv000010A9sd00008010* - ID_PRODUCT_FROM_DATABASE=IO9/IO10 Gigabit Ethernet (Copper) - -pci:v000014E4d00001645sv000010A9sd00008011* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet (Copper) - -pci:v000014E4d00001645sv000010A9sd00008012* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet (Fiber) - -pci:v000014E4d00001645sv000010B7sd00001004* - ID_PRODUCT_FROM_DATABASE=3C996-SX 1000Base-SX - -pci:v000014E4d00001645sv000010B7sd00001006* - ID_PRODUCT_FROM_DATABASE=3C996B-T 1000Base-T - -pci:v000014E4d00001645sv000010B7sd00001007* - ID_PRODUCT_FROM_DATABASE=3C1000-T 1000Base-T - -pci:v000014E4d00001645sv000010B7sd00001008* - ID_PRODUCT_FROM_DATABASE=3C940-BR01 1000Base-T - -pci:v000014E4d00001645sv000014E4sd00000001* - ID_PRODUCT_FROM_DATABASE=BCM5701 1000Base-T - -pci:v000014E4d00001645sv000014E4sd00000005* - ID_PRODUCT_FROM_DATABASE=BCM5701 1000Base-T - -pci:v000014E4d00001645sv000014E4sd00000006* - ID_PRODUCT_FROM_DATABASE=BCM5701 1000Base-T - -pci:v000014E4d00001645sv000014E4sd00000007* - ID_PRODUCT_FROM_DATABASE=BCM5701 1000Base-SX - -pci:v000014E4d00001645sv000014E4sd00000008* - ID_PRODUCT_FROM_DATABASE=BCM5701 1000Base-T - -pci:v000014E4d00001645sv000014E4sd00001645* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5701 Gigabit Ethernet - -pci:v000014E4d00001645sv000014E4sd00008008* - ID_PRODUCT_FROM_DATABASE=BCM5701 1000Base-T - -pci:v000014E4d00001646* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5702 Gigabit Ethernet - -pci:v000014E4d00001646sv00000E11sd000000BB* - ID_PRODUCT_FROM_DATABASE=NC7760 1000BaseTX - -pci:v000014E4d00001646sv00001028sd00000126* - ID_PRODUCT_FROM_DATABASE=Broadcom BCM5702 1000BaseTX - -pci:v000014E4d00001646sv000014E4sd00008009* - ID_PRODUCT_FROM_DATABASE=BCM5702 1000BaseTX - -pci:v000014E4d00001647* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet - -pci:v000014E4d00001647sv00000E11sd00000099* - ID_PRODUCT_FROM_DATABASE=NC7780 1000BaseTX - -pci:v000014E4d00001647sv00000E11sd0000009A* - ID_PRODUCT_FROM_DATABASE=NC7770 1000BaseTX - -pci:v000014E4d00001647sv000010A9sd00008010* - ID_PRODUCT_FROM_DATABASE=SGI IO9 Gigabit Ethernet (Copper) - -pci:v000014E4d00001647sv000014E4sd00000009* - ID_PRODUCT_FROM_DATABASE=BCM5703 1000BaseTX - -pci:v000014E4d00001647sv000014E4sd0000000A* - ID_PRODUCT_FROM_DATABASE=BCM5703 1000BaseSX - -pci:v000014E4d00001647sv000014E4sd0000000B* - ID_PRODUCT_FROM_DATABASE=BCM5703 1000BaseTX - -pci:v000014E4d00001647sv000014E4sd00008009* - ID_PRODUCT_FROM_DATABASE=BCM5703 1000BaseTX - -pci:v000014E4d00001647sv000014E4sd0000800A* - ID_PRODUCT_FROM_DATABASE=BCM5703 1000BaseTX - -pci:v000014E4d00001648* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5704 Gigabit Ethernet - -pci:v000014E4d00001648sv00000E11sd000000CF* - ID_PRODUCT_FROM_DATABASE=NC7772 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - -pci:v000014E4d00001648sv00000E11sd000000D0* - ID_PRODUCT_FROM_DATABASE=NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - -pci:v000014E4d00001648sv00000E11sd000000D1* - ID_PRODUCT_FROM_DATABASE=NC7783 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - -pci:v000014E4d00001648sv00001028sd0000014A* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1750 - -pci:v000014E4d00001648sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 Broadcom NetXtreme BCM5704 - -pci:v000014E4d00001648sv0000103Csd0000310F* - ID_PRODUCT_FROM_DATABASE=NC7782 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - -pci:v000014E4d00001648sv000010A9sd00008013* - ID_PRODUCT_FROM_DATABASE=Dual Port Gigabit Ethernet (PCI-X,Copper) - -pci:v000014E4d00001648sv000010A9sd00008018* - ID_PRODUCT_FROM_DATABASE=Dual Port Gigabit Ethernet (A330) - -pci:v000014E4d00001648sv000010A9sd0000801A* - ID_PRODUCT_FROM_DATABASE=Dual Port Gigabit Ethernet (IA-blade) - -pci:v000014E4d00001648sv000010A9sd0000801B* - ID_PRODUCT_FROM_DATABASE=Quad Port Gigabit Ethernet (PCI-E,Copper) - -pci:v000014E4d00001648sv000010B7sd00002000* - ID_PRODUCT_FROM_DATABASE=3C998-T Dual Port 10/100/1000 PCI-X - -pci:v000014E4d00001648sv000010B7sd00003000* - ID_PRODUCT_FROM_DATABASE=3C999-T Quad Port 10/100/1000 PCI-X - -pci:v000014E4d00001648sv00001166sd00001648* - ID_PRODUCT_FROM_DATABASE=NetXtreme CIOB-E 1000Base-T - -pci:v000014E4d00001648sv00001734sd0000100B* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX series onboard LAN - -pci:v000014E4d00001649* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5704S_2 Gigabit Ethernet - -pci:v000014E4d0000164A* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM5706 Gigabit Ethernet - -pci:v000014E4d0000164Asv0000103Csd00001709* - ID_PRODUCT_FROM_DATABASE=NC371i Integrated PCI-X Multifunction Gigabit Server Adapter - -pci:v000014E4d0000164Asv0000103Csd00003070* - ID_PRODUCT_FROM_DATABASE=NC380T PCI Express Dual Port Multifunction Gigabit Server Adapter - -pci:v000014E4d0000164Asv0000103Csd00003101* - ID_PRODUCT_FROM_DATABASE=NC370T MultifuNCtion Gigabit Server Adapter - -pci:v000014E4d0000164Asv0000103Csd00003106* - ID_PRODUCT_FROM_DATABASE=NC370i Multifunction Gigabit Server Adapter - -pci:v000014E4d0000164C* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM5708 Gigabit Ethernet - -pci:v000014E4d0000164Csv00001028sd000001F0* - ID_PRODUCT_FROM_DATABASE=PowerEdge R900 Broadcom NetXtreme II BCM5708 - -pci:v000014E4d0000164Csv00001028sd00000205* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2970 Broadcom NetXtreme II BCM5708 - -pci:v000014E4d0000164Csv00001028sd0000020B* - ID_PRODUCT_FROM_DATABASE=PowerEdge T605 Broadcom NetXtreme II BCM5708 - -pci:v000014E4d0000164Csv00001028sd00000221* - ID_PRODUCT_FROM_DATABASE=PowerEdge R805 Broadcom NetXtreme II BCM5708 - -pci:v000014E4d0000164Csv00001028sd00000223* - ID_PRODUCT_FROM_DATABASE=PowerEdge R905 Broadcom NetXtreme II BCM5708 - -pci:v000014E4d0000164Csv00001028sd00001F12* - ID_PRODUCT_FROM_DATABASE=PowerEdge R805/R905 Broadcom NetXtreme II BCM5708 - -pci:v000014E4d0000164Csv0000103Csd00007037* - ID_PRODUCT_FROM_DATABASE=NC373T PCI Express Multifunction Gigabit Server Adapter - -pci:v000014E4d0000164Csv0000103Csd00007038* - ID_PRODUCT_FROM_DATABASE=NC373i Integrated Multifunction Gigabit Server Adapter - -pci:v000014E4d0000164Csv0000103Csd00007045* - ID_PRODUCT_FROM_DATABASE=NC374m PCI Express Dual Port Multifunction Gigabit Server Adapter - -pci:v000014E4d0000164D* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5702FE Gigabit Ethernet - -pci:v000014E4d0000164E* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57710 10-Gigabit PCIe [Everest] - -pci:v000014E4d0000164Esv0000103Csd0000171C* - ID_PRODUCT_FROM_DATABASE=NC532m Dual Port 10GbE Multifunction BL-C Adapter - -pci:v000014E4d0000164Esv0000103Csd00007058* - ID_PRODUCT_FROM_DATABASE=NC532i Dual Port 10GbE Multifunction BL-C Adapter - -pci:v000014E4d0000164F* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57711 10-Gigabit PCIe - -pci:v000014E4d00001650* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57711E 10-Gigabit PCIe - -pci:v000014E4d00001650sv0000103Csd0000171C* - ID_PRODUCT_FROM_DATABASE=NC532m Dual Port 10GbE Multifunction BL-C Adapter - -pci:v000014E4d00001650sv0000103Csd00007058* - ID_PRODUCT_FROM_DATABASE=NC532i Dual Port 10GbE Multifunction BL-C Adapter - -pci:v000014E4d00001653* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5705 Gigabit Ethernet - -pci:v000014E4d00001653sv00000E11sd000000E3* - ID_PRODUCT_FROM_DATABASE=NC7761 Gigabit Server Adapter - -pci:v000014E4d00001653sv00001734sd00001073* - ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard - -pci:v000014E4d00001654* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5705_2 Gigabit Ethernet - -pci:v000014E4d00001654sv00000E11sd000000E3* - ID_PRODUCT_FROM_DATABASE=NC7761 Gigabit Server Adapter - -pci:v000014E4d00001654sv0000103Csd00003100* - ID_PRODUCT_FROM_DATABASE=NC1020 ProLiant Gigabit Server Adapter 32 PCI - -pci:v000014E4d00001654sv0000103Csd00003226* - ID_PRODUCT_FROM_DATABASE=NC150T 4-port Gigabit Combo Switch & Adapter - -pci:v000014E4d00001655* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5717 Gigabit Ethernet PCIe - -pci:v000014E4d00001656* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5718 Gigabit Ethernet PCIe - -pci:v000014E4d00001657* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5719 Gigabit Ethernet PCIe - -pci:v000014E4d00001659* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5721 Gigabit Ethernet PCI Express - -pci:v000014E4d00001659sv00001014sd000002C6* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v000014E4d00001659sv00001028sd000001E6* - ID_PRODUCT_FROM_DATABASE=PowerEdge 860 - -pci:v000014E4d00001659sv00001028sd0000023C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R200 Broadcom NetXtreme BCM5721 - -pci:v000014E4d00001659sv0000103Csd0000170B* - ID_PRODUCT_FROM_DATABASE=NC320m PCI Express Dual Port Gigabit Server Adapter - -pci:v000014E4d00001659sv0000103Csd00007031* - ID_PRODUCT_FROM_DATABASE=NC320T PCIe Gigabit Server Adapter - -pci:v000014E4d00001659sv0000103Csd00007032* - ID_PRODUCT_FROM_DATABASE=NC320i PCIe Gigabit Server Adapter - -pci:v000014E4d00001659sv00001734sd00001061* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard LAN - -pci:v000014E4d0000165A* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5722 Gigabit Ethernet PCI Express - -pci:v000014E4d0000165Asv00001014sd00000378* - ID_PRODUCT_FROM_DATABASE=IBM System x3350 (Machine type 4192) - -pci:v000014E4d0000165Asv00001028sd0000020F* - ID_PRODUCT_FROM_DATABASE=PowerEdge R300 Broadcom NetXtreme 5722 - -pci:v000014E4d0000165Asv00001028sd00000210* - ID_PRODUCT_FROM_DATABASE=PowerEdge T300 Broadcom NetXtreme 5722 - -pci:v000014E4d0000165Asv00001028sd00000225* - ID_PRODUCT_FROM_DATABASE=PowerEdge T105 Broadcom NetXtreme 5722 - -pci:v000014E4d0000165Asv0000103Csd00007051* - ID_PRODUCT_FROM_DATABASE=NC105i PCIe Gigabit Server Adapter - -pci:v000014E4d0000165Asv0000103Csd00007052* - ID_PRODUCT_FROM_DATABASE=NC105T PCIe Gigabit Server Adapter - -pci:v000014E4d0000165B* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5723 Gigabit Ethernet PCIe - -pci:v000014E4d0000165Bsv0000103Csd0000705D* - ID_PRODUCT_FROM_DATABASE=NC107i Integrated PCI Express Gigabit Server Adapter - -pci:v000014E4d0000165C* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5724 Gigabit Ethernet PCIe - -pci:v000014E4d0000165D* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5705M Gigabit Ethernet - -pci:v000014E4d0000165Dsv00001028sd0000865D* - ID_PRODUCT_FROM_DATABASE=Latitude D400 - -pci:v000014E4d0000165Dsv000014E4sd0000165D* - ID_PRODUCT_FROM_DATABASE=Dell Latitude D600 - -pci:v000014E4d0000165E* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5705M_2 Gigabit Ethernet - -pci:v000014E4d0000165Esv0000103Csd0000088C* - ID_PRODUCT_FROM_DATABASE=NC8000 laptop - -pci:v000014E4d0000165Esv0000103Csd00000890* - ID_PRODUCT_FROM_DATABASE=NC6000 laptop - -pci:v000014E4d0000165Esv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v000014E4d0000165Esv000010CFsd00001279* - ID_PRODUCT_FROM_DATABASE=LifeBook E8010D - -pci:v000014E4d0000165F* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5720 Gigabit Ethernet PCIe - -pci:v000014E4d00001662* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57712 10 Gigabit Ethernet - -pci:v000014E4d00001663* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57712 10 Gigabit Ethernet Multi Function - -pci:v000014E4d00001665* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5717 Gigabit Ethernet PCIe - -pci:v000014E4d00001668* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5714 Gigabit Ethernet - -pci:v000014E4d00001668sv0000103Csd00007039* - ID_PRODUCT_FROM_DATABASE=NC324i PCIe Dual Port Gigabit Server Adapter - -pci:v000014E4d00001669* - ID_PRODUCT_FROM_DATABASE=NetXtreme 5714S Gigabit Ethernet - -pci:v000014E4d0000166A* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5780 Gigabit Ethernet - -pci:v000014E4d0000166Asv0000103Csd00007035* - ID_PRODUCT_FROM_DATABASE=NC325i Integrated Dual port PCIe Express Gigabit Server Adapter - -pci:v000014E4d0000166B* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5780S Gigabit Ethernet - -pci:v000014E4d0000166E* - ID_PRODUCT_FROM_DATABASE=570x 10/100 Integrated Controller - -pci:v000014E4d0000166F* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57712 10 Gigabit Ethernet Virtual Function - -pci:v000014E4d00001672* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5754M Gigabit Ethernet PCI Express - -pci:v000014E4d00001673* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5755M Gigabit Ethernet PCI Express - -pci:v000014E4d00001674* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5756ME Gigabit Ethernet PCI Express - -pci:v000014E4d00001677* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5751 Gigabit Ethernet PCI Express - -pci:v000014E4d00001677sv00001028sd00000176* - ID_PRODUCT_FROM_DATABASE=Dimension XPS Gen 4 - -pci:v000014E4d00001677sv00001028sd00000177* - ID_PRODUCT_FROM_DATABASE=Dimension 8400 - -pci:v000014E4d00001677sv00001028sd00000179* - ID_PRODUCT_FROM_DATABASE=Optiplex GX280 - -pci:v000014E4d00001677sv00001028sd00000182* - ID_PRODUCT_FROM_DATABASE=Latitude D610 - -pci:v000014E4d00001677sv00001028sd00000187* - ID_PRODUCT_FROM_DATABASE=Precision M70 - -pci:v000014E4d00001677sv00001028sd000001A8* - ID_PRODUCT_FROM_DATABASE=Precision 380 - -pci:v000014E4d00001677sv00001028sd000001AD* - ID_PRODUCT_FROM_DATABASE=OptiPlex GX620 - -pci:v000014E4d00001677sv0000103Csd00003006* - ID_PRODUCT_FROM_DATABASE=DC7100 SFF(DX878AV) - -pci:v000014E4d00001677sv00001462sd0000028C* - ID_PRODUCT_FROM_DATABASE=915P/G Neo2 - -pci:v000014E4d00001677sv00001734sd0000105D* - ID_PRODUCT_FROM_DATABASE=Scenic W620 - -pci:v000014E4d00001678* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5715 Gigabit Ethernet - -pci:v000014E4d00001678sv0000103Csd0000703E* - ID_PRODUCT_FROM_DATABASE=NC326i PCIe Dual Port Gigabit Server Adapter - -pci:v000014E4d00001679* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5715S Gigabit Ethernet - -pci:v000014E4d00001679sv0000103Csd00001707* - ID_PRODUCT_FROM_DATABASE=NC326m PCIe Dual Port Adapter - -pci:v000014E4d00001679sv0000103Csd0000170C* - ID_PRODUCT_FROM_DATABASE=NC325m PCIe Quad Port Adapter - -pci:v000014E4d00001679sv0000103Csd0000703C* - ID_PRODUCT_FROM_DATABASE=NC326i PCIe Dual Port Gigabit Server Adapter - -pci:v000014E4d0000167A* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5754 Gigabit Ethernet PCI Express - -pci:v000014E4d0000167Asv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v000014E4d0000167Asv00001028sd000001DE* - ID_PRODUCT_FROM_DATABASE=Precision 390 - -pci:v000014E4d0000167Asv00001028sd000001DF* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC440 - -pci:v000014E4d0000167Asv00001028sd00000214* - ID_PRODUCT_FROM_DATABASE=Precision T3400 - -pci:v000014E4d0000167Asv00001028sd0000021E* - ID_PRODUCT_FROM_DATABASE=Precision T5400 - -pci:v000014E4d0000167B* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5755 Gigabit Ethernet PCI Express - -pci:v000014E4d0000167Bsv0000103Csd0000280A* - ID_PRODUCT_FROM_DATABASE=DC5750 Microtower - -pci:v000014E4d0000167D* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5751M Gigabit Ethernet PCI Express - -pci:v000014E4d0000167Dsv00001014sd00000577* - ID_PRODUCT_FROM_DATABASE=ThinkPad Z60t - -pci:v000014E4d0000167Dsv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=HP nx8220 - -pci:v000014E4d0000167Dsv0000103Csd00000940* - ID_PRODUCT_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation - -pci:v000014E4d0000167Dsv000017AAsd00002081* - ID_PRODUCT_FROM_DATABASE=ThinkPad R60e - -pci:v000014E4d0000167E* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5751F Fast Ethernet PCI Express - -pci:v000014E4d0000167F* - ID_PRODUCT_FROM_DATABASE=NetLink BCM5787F Fast Ethernet PCI Express - -pci:v000014E4d00001680* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5761e Gigabit Ethernet PCIe - -pci:v000014E4d00001681* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5761 Gigabit Ethernet PCIe - -pci:v000014E4d00001682* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM57762 Gigabit Ethernet PCIe - -pci:v000014E4d00001683* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM57767 Gigabit Ethernet PCIe - -pci:v000014E4d00001684* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5764M Gigabit Ethernet PCIe - -pci:v000014E4d00001685* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57500S Gigabit Ethernet - -pci:v000014E4d00001686* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM57766 Gigabit Ethernet PCIe - -pci:v000014E4d00001687* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5762 Gigabit Ethernet PCIe - -pci:v000014E4d00001688* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5761 10/100/1000BASE-T Ethernet - -pci:v000014E4d00001688sv00001259sd00002708* - ID_PRODUCT_FROM_DATABASE=AT-2712 FX - -pci:v000014E4d0000168A* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet - -pci:v000014E4d0000168Asv00001028sd00001F5C* - ID_PRODUCT_FROM_DATABASE=BCM57800 10-Gigabit Ethernet - -pci:v000014E4d0000168Asv00001028sd00001F5D* - ID_PRODUCT_FROM_DATABASE=BCM57800 10-Gigabit Ethernet - -pci:v000014E4d0000168Asv00001028sd00001F67* - ID_PRODUCT_FROM_DATABASE=BCM57800 1-Gigabit Ethernet - -pci:v000014E4d0000168Asv00001028sd00001F68* - ID_PRODUCT_FROM_DATABASE=BCM57800 1-Gigabit Ethernet - -pci:v000014E4d0000168D* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet - -pci:v000014E4d0000168E* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet - -pci:v000014E4d0000168Esv0000103Csd00001798* - ID_PRODUCT_FROM_DATABASE=Flex-10 10Gb 2-port 530FLB Adapter [Meru] - -pci:v000014E4d00001690* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM57760 Gigabit Ethernet PCIe - -pci:v000014E4d00001691* - ID_PRODUCT_FROM_DATABASE=NetLink BCM57788 Gigabit Ethernet PCIe - -pci:v000014E4d00001691sv00001028sd000004AA* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v000014E4d00001692* - ID_PRODUCT_FROM_DATABASE=NetLink BCM57780 Gigabit Ethernet PCIe - -pci:v000014E4d00001692sv00001025sd0000033D* - ID_PRODUCT_FROM_DATABASE=Aspire 7740G - -pci:v000014E4d00001693* - ID_PRODUCT_FROM_DATABASE=NetLink BCM5787M Gigabit Ethernet PCI Express - -pci:v000014E4d00001693sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v000014E4d00001693sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=6710b - -pci:v000014E4d00001694* - ID_PRODUCT_FROM_DATABASE=NetLink BCM57790 Gigabit Ethernet PCIe - -pci:v000014E4d00001696* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5782 Gigabit Ethernet - -pci:v000014E4d00001696sv0000103Csd000012BC* - ID_PRODUCT_FROM_DATABASE=d530 CMT (DG746A) - -pci:v000014E4d00001696sv000014E4sd0000000D* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5782 1000Base-T - -pci:v000014E4d00001698* - ID_PRODUCT_FROM_DATABASE=NetLink BCM5784M Gigabit Ethernet PCIe - -pci:v000014E4d00001699* - ID_PRODUCT_FROM_DATABASE=NetLink BCM5785 Gigabit Ethernet - -pci:v000014E4d0000169A* - ID_PRODUCT_FROM_DATABASE=NetLink BCM5786 Gigabit Ethernet PCI Express - -pci:v000014E4d0000169B* - ID_PRODUCT_FROM_DATABASE=NetLink BCM5787 Gigabit Ethernet PCI Express - -pci:v000014E4d0000169C* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5788 Gigabit Ethernet - -pci:v000014E4d0000169Csv0000103Csd0000308B* - ID_PRODUCT_FROM_DATABASE=MX6125 - -pci:v000014E4d0000169Csv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v000014E4d0000169Csv0000144Dsd0000C018* - ID_PRODUCT_FROM_DATABASE=X20 - -pci:v000014E4d0000169Csv00001462sd0000590C* - ID_PRODUCT_FROM_DATABASE=KT6 Delta-FIS2R (MS-6590) - -pci:v000014E4d0000169D* - ID_PRODUCT_FROM_DATABASE=NetLink BCM5789 Gigabit Ethernet PCI Express - -pci:v000014E4d000016A0* - ID_PRODUCT_FROM_DATABASE=NetLink BCM5785 Fast Ethernet - -pci:v000014E4d000016A1* - ID_PRODUCT_FROM_DATABASE=BCM57840 NetXtreme II 10 Gigabit Ethernet - -pci:v000014E4d000016A2* - ID_PRODUCT_FROM_DATABASE=BCM57840 NetXtreme II 10/20-Gigabit Ethernet - -pci:v000014E4d000016A4* - ID_PRODUCT_FROM_DATABASE=BCM57840 NetXtreme II Ethernet Multi Function - -pci:v000014E4d000016A5* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Multi Function - -pci:v000014E4d000016A5sv00001028sd00001F5C* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function - -pci:v000014E4d000016A5sv00001028sd00001F5D* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57800 10-Gigabit Ethernet Multi Function - -pci:v000014E4d000016A5sv00001028sd00001F67* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function - -pci:v000014E4d000016A5sv00001028sd00001F68* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57800 1-Gigabit Ethernet Multi Function - -pci:v000014E4d000016A6* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5702X Gigabit Ethernet - -pci:v000014E4d000016A6sv00000E11sd000000BB* - ID_PRODUCT_FROM_DATABASE=NC7760 Gigabit Server Adapter (PCI-X, 10/100/1000-T) - -pci:v000014E4d000016A6sv00001028sd00000126* - ID_PRODUCT_FROM_DATABASE=BCM5702 1000Base-T - -pci:v000014E4d000016A6sv000014E4sd0000000C* - ID_PRODUCT_FROM_DATABASE=BCM5702 1000Base-T - -pci:v000014E4d000016A6sv000014E4sd00008009* - ID_PRODUCT_FROM_DATABASE=BCM5702 1000Base-T - -pci:v000014E4d000016A7* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5703X Gigabit Ethernet - -pci:v000014E4d000016A7sv00000E11sd000000CA* - ID_PRODUCT_FROM_DATABASE=NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - -pci:v000014E4d000016A7sv00000E11sd000000CB* - ID_PRODUCT_FROM_DATABASE=NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - -pci:v000014E4d000016A7sv00001014sd0000026F* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v000014E4d000016A7sv000014E4sd00000009* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5703 1000Base-T - -pci:v000014E4d000016A7sv000014E4sd0000000A* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5703 1000Base-SX - -pci:v000014E4d000016A7sv000014E4sd0000000B* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5703 1000Base-T - -pci:v000014E4d000016A7sv000014E4sd0000800A* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5703 1000Base-T - -pci:v000014E4d000016A8* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5704S Gigabit Ethernet - -pci:v000014E4d000016A8sv0000103Csd0000132B* - ID_PRODUCT_FROM_DATABASE=PCI-X 1000Mbps Dual-port Built-in - -pci:v000014E4d000016A8sv000010A9sd00008014* - ID_PRODUCT_FROM_DATABASE=Dual Port Gigabit Ethernet (PCI-X,Fiber) - -pci:v000014E4d000016A8sv000010A9sd0000801C* - ID_PRODUCT_FROM_DATABASE=Quad Port Gigabit Ethernet (PCI-E,Fiber) - -pci:v000014E4d000016A8sv000010B7sd00002001* - ID_PRODUCT_FROM_DATABASE=3C998-SX Dual Port 1000-SX PCI-X - -pci:v000014E4d000016A9* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57800 1/10 Gigabit Ethernet Virtual Function - -pci:v000014E4d000016A9sv00001028sd00001F5C* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function - -pci:v000014E4d000016A9sv00001028sd00001F5D* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57800 10-Gigabit Ethernet Virtual Function - -pci:v000014E4d000016A9sv00001028sd00001F67* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function - -pci:v000014E4d000016A9sv00001028sd00001F68* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57800 1-Gigabit Ethernet Virtual Function - -pci:v000014E4d000016AA* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM5706S Gigabit Ethernet - -pci:v000014E4d000016AAsv0000103Csd00003102* - ID_PRODUCT_FROM_DATABASE=NC370F MultifuNCtion Gigabit Server Adapter - -pci:v000014E4d000016AAsv0000103Csd0000310C* - ID_PRODUCT_FROM_DATABASE=NC370i Multifunction Gigabit Server Adapter - -pci:v000014E4d000016AB* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Multi Function - -pci:v000014E4d000016AC* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM5708S Gigabit Ethernet - -pci:v000014E4d000016ACsv00001014sd00000304* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM5708S Gigabit Ethernet - -pci:v000014E4d000016ACsv00001028sd000001BB* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1955 Broadcom NetXtreme II BCM5708S - -pci:v000014E4d000016ACsv00001028sd0000020C* - ID_PRODUCT_FROM_DATABASE=PowerEdge M605 Broadcom NetXtreme II BCM5708S - -pci:v000014E4d000016ACsv0000103Csd00001706* - ID_PRODUCT_FROM_DATABASE=NC373m Multifunction Gigabit Server Adapter - -pci:v000014E4d000016ACsv0000103Csd00007038* - ID_PRODUCT_FROM_DATABASE=NC373i PCI Express Multifunction Gigabit Server Adapter - -pci:v000014E4d000016ACsv0000103Csd0000703B* - ID_PRODUCT_FROM_DATABASE=NC373i Integrated Multifunction Gigabit Server Adapter - -pci:v000014E4d000016ACsv0000103Csd0000703D* - ID_PRODUCT_FROM_DATABASE=NC373F PCI Express Multifunction Gigabit Server Adapter - -pci:v000014E4d000016AD* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57840 10/20 Gigabit Ethernet Virtual Function - -pci:v000014E4d000016AE* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Multi Function - -pci:v000014E4d000016AF* - ID_PRODUCT_FROM_DATABASE=NetXtreme II BCM57810 10 Gigabit Ethernet Virtual Function - -pci:v000014E4d000016B0* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM57761 Gigabit Ethernet PCIe - -pci:v000014E4d000016B1* - ID_PRODUCT_FROM_DATABASE=NetLink BCM57781 Gigabit Ethernet PCIe - -pci:v000014E4d000016B2* - ID_PRODUCT_FROM_DATABASE=NetLink BCM57791 Gigabit Ethernet PCIe - -pci:v000014E4d000016B3* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM57786 Gigabit Ethernet PCIe - -pci:v000014E4d000016B4* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM57765 Gigabit Ethernet PCIe - -pci:v000014E4d000016B5* - ID_PRODUCT_FROM_DATABASE=NetLink BCM57785 Gigabit Ethernet PCIe - -pci:v000014E4d000016B6* - ID_PRODUCT_FROM_DATABASE=NetLink BCM57795 Gigabit Ethernet PCIe - -pci:v000014E4d000016B7* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM57782 Gigabit Ethernet PCIe - -pci:v000014E4d000016BC* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM57765 Memory Card Reader - -pci:v000014E4d000016C6* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5702A3 Gigabit Ethernet - -pci:v000014E4d000016C6sv000010B7sd00001100* - ID_PRODUCT_FROM_DATABASE=3C1000B-T 10/100/1000 PCI - -pci:v000014E4d000016C6sv000014E4sd0000000C* - ID_PRODUCT_FROM_DATABASE=BCM5702 1000Base-T - -pci:v000014E4d000016C6sv000014E4sd00008009* - ID_PRODUCT_FROM_DATABASE=BCM5702 1000Base-T - -pci:v000014E4d000016C7* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5703 Gigabit Ethernet - -pci:v000014E4d000016C7sv00000E11sd000000CA* - ID_PRODUCT_FROM_DATABASE=NC7771 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - -pci:v000014E4d000016C7sv00000E11sd000000CB* - ID_PRODUCT_FROM_DATABASE=NC7781 Gigabit Server Adapter (PCI-X, 10,100,1000-T) - -pci:v000014E4d000016C7sv0000103Csd000012C3* - ID_PRODUCT_FROM_DATABASE=Combo FC/GigE-SX [A9782A] - -pci:v000014E4d000016C7sv0000103Csd000012CA* - ID_PRODUCT_FROM_DATABASE=Combo FC/GigE-T [A9784A] - -pci:v000014E4d000016C7sv0000103Csd00001321* - ID_PRODUCT_FROM_DATABASE=Core I/O LAN/SCSI Combo [AB314A] - -pci:v000014E4d000016C7sv000014E4sd00000009* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5703 1000Base-T - -pci:v000014E4d000016C7sv000014E4sd0000000A* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5703 1000Base-SX - -pci:v000014E4d000016DD* - ID_PRODUCT_FROM_DATABASE=NetLink BCM5781 Gigabit Ethernet PCI Express - -pci:v000014E4d000016F3* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5727 Gigabit Ethernet PCIe - -pci:v000014E4d000016F7* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5753 Gigabit Ethernet PCI Express - -pci:v000014E4d000016FD* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5753M Gigabit Ethernet PCI Express - -pci:v000014E4d000016FDsv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v000014E4d000016FDsv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v000014E4d000016FE* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5753F Fast Ethernet PCI Express - -pci:v000014E4d0000170C* - ID_PRODUCT_FROM_DATABASE=BCM4401-B0 100Base-TX - -pci:v000014E4d0000170Csv00001028sd00000188* - ID_PRODUCT_FROM_DATABASE=Inspiron 6000 laptop - -pci:v000014E4d0000170Csv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m - -pci:v000014E4d0000170Csv00001028sd00000196* - ID_PRODUCT_FROM_DATABASE=Inspiron 5160 - -pci:v000014E4d0000170Csv00001028sd000001AF* - ID_PRODUCT_FROM_DATABASE=Inspiron 6400 - -pci:v000014E4d0000170Csv00001028sd000001CD* - ID_PRODUCT_FROM_DATABASE=Inspiron 9400 Laptop - -pci:v000014E4d0000170Csv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v000014E4d0000170Csv00001028sd000001D8* - ID_PRODUCT_FROM_DATABASE=Inspiron E1405 - -pci:v000014E4d0000170Csv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v000014E4d0000170Csv0000103Csd000030A2* - ID_PRODUCT_FROM_DATABASE=NX7300 laptop - -pci:v000014E4d0000170Csv000014E4sd0000170C* - ID_PRODUCT_FROM_DATABASE=HP Compaq 6720t Mobile Thin Client - -pci:v000014E4d0000170D* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5901 100Base-TX - -pci:v000014E4d0000170Dsv00001014sd00000545* - ID_PRODUCT_FROM_DATABASE=ThinkPad R40e - -pci:v000014E4d0000170E* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5901 100Base-TX - -pci:v000014E4d00001712* - ID_PRODUCT_FROM_DATABASE=NetLink BCM5906 Fast Ethernet PCI Express - -pci:v000014E4d00001713* - ID_PRODUCT_FROM_DATABASE=NetLink BCM5906M Fast Ethernet PCI Express - -pci:v000014E4d00001713sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v000014E4d00001713sv00001028sd00000209* - ID_PRODUCT_FROM_DATABASE=XPS M1330 - -pci:v000014E4d00001713sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v000014E4d00001713sv000017AAsd00003A23* - ID_PRODUCT_FROM_DATABASE=IdeaPad S10e - -pci:v000014E4d00003352* - ID_PRODUCT_FROM_DATABASE=BCM3352 - -pci:v000014E4d00003360* - ID_PRODUCT_FROM_DATABASE=BCM3360 - -pci:v000014E4d00004210* - ID_PRODUCT_FROM_DATABASE=BCM4210 iLine10 HomePNA 2.0 - -pci:v000014E4d00004211* - ID_PRODUCT_FROM_DATABASE=BCM4211 iLine10 HomePNA 2.0 + V.90 56k modem - -pci:v000014E4d00004212* - ID_PRODUCT_FROM_DATABASE=BCM4212 v.90 56k modem - -pci:v000014E4d00004220* - ID_PRODUCT_FROM_DATABASE=802-11b/g Wireless PCI controller, packaged as a Linksys WPC54G ver 1.2 PCMCIA card - -pci:v000014E4d00004222* - ID_PRODUCT_FROM_DATABASE=NetXtreme BCM5753M Gigabit Ethernet PCI Express - -pci:v000014E4d00004301* - ID_PRODUCT_FROM_DATABASE=BCM4301 802.11b Wireless LAN Controller - -pci:v000014E4d00004301sv00001028sd00000407* - ID_PRODUCT_FROM_DATABASE=TrueMobile 1180 Onboard WLAN - -pci:v000014E4d00004301sv00001043sd00000120* - ID_PRODUCT_FROM_DATABASE=WL-103b Wireless LAN PC Card - -pci:v000014E4d00004301sv000016A5sd00001602* - ID_PRODUCT_FROM_DATABASE=B-300 802.11b Wireless CardBus Adapter - -pci:v000014E4d00004301sv00001737sd00004301* - ID_PRODUCT_FROM_DATABASE=WMP11 v2.7 802.11b Wireless-B PCI Adapter - -pci:v000014E4d00004305* - ID_PRODUCT_FROM_DATABASE=BCM4307 V.90 56k Modem - -pci:v000014E4d00004306* - ID_PRODUCT_FROM_DATABASE=BCM4306 802.11bg Wireless LAN controller - -pci:v000014E4d00004307* - ID_PRODUCT_FROM_DATABASE=BCM4306 802.11bg Wireless LAN Controller - -pci:v000014E4d00004310* - ID_PRODUCT_FROM_DATABASE=BCM4310 Chipcommon I/OController - -pci:v000014E4d00004311* - ID_PRODUCT_FROM_DATABASE=BCM4311 802.11b/g WLAN - -pci:v000014E4d00004311sv00001028sd00000007* - ID_PRODUCT_FROM_DATABASE=Wireless 1390 WLAN Mini-Card - -pci:v000014E4d00004311sv00001028sd00000008* - ID_PRODUCT_FROM_DATABASE=Wireless 1390 WLAN ExpressCard - -pci:v000014E4d00004311sv0000103Csd00001363* - ID_PRODUCT_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller - -pci:v000014E4d00004311sv0000103Csd00001364* - ID_PRODUCT_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller - -pci:v000014E4d00004311sv0000103Csd00001365* - ID_PRODUCT_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller - -pci:v000014E4d00004311sv0000103Csd00001374* - ID_PRODUCT_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller - -pci:v000014E4d00004311sv0000103Csd00001375* - ID_PRODUCT_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller - -pci:v000014E4d00004311sv0000103Csd00001376* - ID_PRODUCT_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller - -pci:v000014E4d00004311sv0000103Csd00001377* - ID_PRODUCT_FROM_DATABASE=BCM4311 802.11b/g Wireless LAN Controller - -pci:v000014E4d00004311sv0000103Csd0000137F* - ID_PRODUCT_FROM_DATABASE=BCM4322 802.11a/b/g/n Wireless LAN Controller - -pci:v000014E4d00004311sv0000103Csd00001380* - ID_PRODUCT_FROM_DATABASE=BCM4322 802.11a/b/g/n Wireless LAN Controller - -pci:v000014E4d00004311sv000014E4sd00004311* - ID_PRODUCT_FROM_DATABASE=BCM94311MCG - -pci:v000014E4d00004312* - ID_PRODUCT_FROM_DATABASE=BCM4311 802.11a/b/g - -pci:v000014E4d00004312sv00001028sd00000007* - ID_PRODUCT_FROM_DATABASE=Wireless 1490 Dual Band WLAN Mini-Card - -pci:v000014E4d00004312sv00001028sd00000008* - ID_PRODUCT_FROM_DATABASE=Wireless 1490 Dual Band WLAN ExpressCard - -pci:v000014E4d00004312sv0000103Csd0000135A* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11a/b/g WLAN - -pci:v000014E4d00004312sv0000103Csd0000135F* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11a/b/g WLAN - -pci:v000014E4d00004312sv0000103Csd00001360* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11a/b/g WLAN - -pci:v000014E4d00004312sv0000103Csd00001361* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11a/b/g WLAN - -pci:v000014E4d00004312sv0000103Csd00001362* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11a/b/g WLAN - -pci:v000014E4d00004312sv0000103Csd00001370* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11a/b/g WLAN - -pci:v000014E4d00004312sv0000103Csd00001371* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11a/b/g WLAN - -pci:v000014E4d00004312sv0000103Csd00001372* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11a/b/g WLAN - -pci:v000014E4d00004312sv0000103Csd00001373* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11a/b/g WLAN - -pci:v000014E4d00004312sv0000103Csd000030B5* - ID_PRODUCT_FROM_DATABASE=Presario V3242AU - -pci:v000014E4d00004312sv00001371sd0000103C* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11 Multiband-netwerkadapter(6715s) - -pci:v000014E4d00004313* - ID_PRODUCT_FROM_DATABASE=BCM4311 802.11a - -pci:v000014E4d00004315* - ID_PRODUCT_FROM_DATABASE=BCM4312 802.11b/g LP-PHY - -pci:v000014E4d00004315sv00001028sd0000000B* - ID_PRODUCT_FROM_DATABASE=Wireless 1395 WLAN Mini-Card - -pci:v000014E4d00004315sv00001028sd0000000C* - ID_PRODUCT_FROM_DATABASE=Wireless 1397 WLAN Mini-Card - -pci:v000014E4d00004315sv0000103Csd0000137C* - ID_PRODUCT_FROM_DATABASE=BCM4312 802.11b/g Wireless LAN Controller - -pci:v000014E4d00004315sv0000103Csd0000137D* - ID_PRODUCT_FROM_DATABASE=BCM4312 802.11b/g Wireless LAN Controller - -pci:v000014E4d00004315sv0000103Csd00001507* - ID_PRODUCT_FROM_DATABASE=U98Z049.00 Wireless Mini PCIe Card - -pci:v000014E4d00004315sv0000105Bsd0000E003* - ID_PRODUCT_FROM_DATABASE=T77H030.00 Wireless Mini PCIe Card - -pci:v000014E4d00004315sv0000105Bsd0000E01B* - ID_PRODUCT_FROM_DATABASE=T77H106.00 Wireless Half-size Mini PCIe Card - -pci:v000014E4d00004318* - ID_PRODUCT_FROM_DATABASE=BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller - -pci:v000014E4d00004318sv00001028sd00000005* - ID_PRODUCT_FROM_DATABASE=Wireless 1370 WLAN Mini-PCI Card - -pci:v000014E4d00004318sv00001028sd00000006* - ID_PRODUCT_FROM_DATABASE=Wireless 1370 WLAN PC Card - -pci:v000014E4d00004318sv0000103Csd00001355* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11b/g WLAN - -pci:v000014E4d00004318sv0000103Csd00001356* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11b/g WLAN - -pci:v000014E4d00004318sv0000103Csd00001357* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11b/g WLAN - -pci:v000014E4d00004318sv00001043sd0000100F* - ID_PRODUCT_FROM_DATABASE=WL-138G v2 / WL-138gE / WL-100gE - -pci:v000014E4d00004318sv00001043sd0000120F* - ID_PRODUCT_FROM_DATABASE=A6U notebook embedded card - -pci:v000014E4d00004318sv00001154sd00000355* - ID_PRODUCT_FROM_DATABASE=Buffalo WLI2-PCI-G54S High Speed Mode Wireless Adapter - -pci:v000014E4d00004318sv00001468sd00000311* - ID_PRODUCT_FROM_DATABASE=Aspire 3022WLMi, 5024WLMi, 5020 - -pci:v000014E4d00004318sv00001468sd00000312* - ID_PRODUCT_FROM_DATABASE=TravelMate 2410 - -pci:v000014E4d00004318sv000014E4sd00000449* - ID_PRODUCT_FROM_DATABASE=Gateway 7510GX - -pci:v000014E4d00004318sv000016ECsd00000119* - ID_PRODUCT_FROM_DATABASE=U.S.Robotics Wireless MAXg PC Card - -pci:v000014E4d00004318sv00001737sd00000042* - ID_PRODUCT_FROM_DATABASE=WMP54GS v1.1 802.11g Wireless-G PCI Adapter with SpeedBooster - -pci:v000014E4d00004318sv00001737sd00000048* - ID_PRODUCT_FROM_DATABASE=WPC54G v3 802.11g Wireless-G Notebook Adapter - -pci:v000014E4d00004318sv00001737sd00000049* - ID_PRODUCT_FROM_DATABASE=WPC54GS v2 802.11g Wireless-G Notebook Adapter with SpeedBooster - -pci:v000014E4d00004318sv00001799sd00007000* - ID_PRODUCT_FROM_DATABASE=F5D7000 v4000 Wireless G Desktop Card - -pci:v000014E4d00004318sv00001799sd00007001* - ID_PRODUCT_FROM_DATABASE=F5D7001 v2000 Wireless G Plus Desktop Card - -pci:v000014E4d00004318sv00001799sd00007010* - ID_PRODUCT_FROM_DATABASE=F5D7010 v4000 Wireless G Notebook Card - -pci:v000014E4d00004318sv00001799sd00007011* - ID_PRODUCT_FROM_DATABASE=F5D7011 v2000 High-Speed Mode Wireless G Notebook Card - -pci:v000014E4d00004319* - ID_PRODUCT_FROM_DATABASE=BCM4318 [AirForce 54g] 802.11a/b/g PCI Express Transceiver - -pci:v000014E4d00004319sv00001028sd00000005* - ID_PRODUCT_FROM_DATABASE=Wireless 1470 Dual Band WLAN Mini-PCI Card - -pci:v000014E4d00004319sv00001028sd00000006* - ID_PRODUCT_FROM_DATABASE=Wireless 1470 Dual Band WLAN PC Card - -pci:v000014E4d00004319sv0000103Csd00001358* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11a/b/g WLAN - -pci:v000014E4d00004319sv0000103Csd00001359* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11a/b/g WLAN - -pci:v000014E4d00004319sv0000103Csd0000135A* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11a/b/g WLAN - -pci:v000014E4d00004320* - ID_PRODUCT_FROM_DATABASE=BCM4306 802.11b/g Wireless LAN Controller - -pci:v000014E4d00004320sv00001028sd00000001* - ID_PRODUCT_FROM_DATABASE=TrueMobile 1300 WLAN Mini-PCI Card - -pci:v000014E4d00004320sv00001028sd00000002* - ID_PRODUCT_FROM_DATABASE=TrueMobile 1300 WLAN PC Card - -pci:v000014E4d00004320sv00001028sd00000003* - ID_PRODUCT_FROM_DATABASE=Wireless 1350 WLAN Mini-PCI Card - -pci:v000014E4d00004320sv00001028sd00000004* - ID_PRODUCT_FROM_DATABASE=Wireless 1350 WLAN PC Card - -pci:v000014E4d00004320sv0000103Csd000012F4* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11b/g WLAN - -pci:v000014E4d00004320sv0000103Csd000012F8* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11b/g WLAN - -pci:v000014E4d00004320sv0000103Csd000012FA* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11b/g WLAN - -pci:v000014E4d00004320sv0000103Csd000012FB* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11b/g WLAN - -pci:v000014E4d00004320sv00001043sd0000100F* - ID_PRODUCT_FROM_DATABASE=WL-100G - -pci:v000014E4d00004320sv00001057sd00007025* - ID_PRODUCT_FROM_DATABASE=WN825G - -pci:v000014E4d00004320sv0000106Bsd0000004E* - ID_PRODUCT_FROM_DATABASE=AirPort Extreme - -pci:v000014E4d00004320sv00001154sd00000330* - ID_PRODUCT_FROM_DATABASE=Buffalo WLI2-PCI-G54S High Speed Mode Wireless Desktop Adapter - -pci:v000014E4d00004320sv0000144Fsd00007050* - ID_PRODUCT_FROM_DATABASE=eMachines M6805 802.11g Built-in Wireless - -pci:v000014E4d00004320sv0000144Fsd00007051* - ID_PRODUCT_FROM_DATABASE=Sonnet Aria Extreme PCI - -pci:v000014E4d00004320sv00001737sd00000013* - ID_PRODUCT_FROM_DATABASE=WMP54G v1 802.11g PCI Adapter - -pci:v000014E4d00004320sv00001737sd00000014* - ID_PRODUCT_FROM_DATABASE=WMP54G v2 802.11g PCI Adapter - -pci:v000014E4d00004320sv00001737sd00000015* - ID_PRODUCT_FROM_DATABASE=WMP54GS v1.0 802.11g Wireless-G PCI Adapter with SpeedBooster - -pci:v000014E4d00004320sv00001737sd00004320* - ID_PRODUCT_FROM_DATABASE=WPC54G v1 / WPC54GS v1 802.11g Wireless-G Notebook Adapter - -pci:v000014E4d00004320sv00001799sd00007000* - ID_PRODUCT_FROM_DATABASE=F5D7000 v1000 Wireless G Desktop Card - -pci:v000014E4d00004320sv00001799sd00007001* - ID_PRODUCT_FROM_DATABASE=F5D7001 v1000 Wireless G Plus Desktop Card - -pci:v000014E4d00004320sv00001799sd00007010* - ID_PRODUCT_FROM_DATABASE=F5D7010 v1000 Wireless G Notebook Card - -pci:v000014E4d00004320sv00001799sd00007011* - ID_PRODUCT_FROM_DATABASE=F5D7011 v1000 High-Speed Mode Wireless G Notebook Card - -pci:v000014E4d00004320sv0000185Fsd00001220* - ID_PRODUCT_FROM_DATABASE=TravelMate 290E WLAN Mini-PCI Card - -pci:v000014E4d00004321* - ID_PRODUCT_FROM_DATABASE=BCM4321 802.11a Wireless Network Controller - -pci:v000014E4d00004322* - ID_PRODUCT_FROM_DATABASE=BCM4322 802.11bgn Wireless Network Controller - -pci:v000014E4d00004324* - ID_PRODUCT_FROM_DATABASE=BCM4306 802.11a/b/g - -pci:v000014E4d00004324sv00001028sd00000001* - ID_PRODUCT_FROM_DATABASE=Truemobile 1400 - -pci:v000014E4d00004324sv00001028sd00000002* - ID_PRODUCT_FROM_DATABASE=TrueMobile 1400 Dual Band WLAN PC Card - -pci:v000014E4d00004324sv00001028sd00000003* - ID_PRODUCT_FROM_DATABASE=Truemobile 1450 MiniPCI - -pci:v000014E4d00004324sv00001028sd00000004* - ID_PRODUCT_FROM_DATABASE=Wireless 1450 Dual Band WLAN PC Card - -pci:v000014E4d00004324sv0000103Csd000012F9* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11a/b/g WLAN - -pci:v000014E4d00004324sv0000103Csd000012FC* - ID_PRODUCT_FROM_DATABASE=Broadcom 802.11a/b/g WLAN - -pci:v000014E4d00004325* - ID_PRODUCT_FROM_DATABASE=BCM4306 802.11bg Wireless Network Controller - -pci:v000014E4d00004325sv00001414sd00000003* - ID_PRODUCT_FROM_DATABASE=Wireless Notebook Adapter MN-720 - -pci:v000014E4d00004325sv00001414sd00000004* - ID_PRODUCT_FROM_DATABASE=Wireless PCI Adapter MN-730 - -pci:v000014E4d00004326* - ID_PRODUCT_FROM_DATABASE=BCM4307 Chipcommon I/O Controller? - -pci:v000014E4d00004328* - ID_PRODUCT_FROM_DATABASE=BCM4321 802.11a/b/g/n - -pci:v000014E4d00004328sv00001028sd00000009* - ID_PRODUCT_FROM_DATABASE=Wireless 1500 Draft 802.11n WLAN Mini-Card - -pci:v000014E4d00004328sv00001028sd0000000A* - ID_PRODUCT_FROM_DATABASE=Wireless 1500 Draft 802.11n WLAN Mini-card - -pci:v000014E4d00004328sv0000103Csd00001366* - ID_PRODUCT_FROM_DATABASE=BCM4321 802.11a/b/g/n Wireless LAN Controller - -pci:v000014E4d00004328sv0000103Csd00001367* - ID_PRODUCT_FROM_DATABASE=BCM4321 802.11a/b/g/n Wireless LAN Controller - -pci:v000014E4d00004328sv0000103Csd00001368* - ID_PRODUCT_FROM_DATABASE=BCM4321 802.11a/b/g/n Wireless LAN Controller - -pci:v000014E4d00004328sv0000103Csd00001369* - ID_PRODUCT_FROM_DATABASE=BCM4321 802.11a/b/g/n Wireless LAN Controller - -pci:v000014E4d00004328sv000014E4sd00004328* - ID_PRODUCT_FROM_DATABASE=BCM4328 802.11a/b/g/n - -pci:v000014E4d00004328sv00001737sd00000066* - ID_PRODUCT_FROM_DATABASE=WPC600N v1 802.11a/b/g/n Wireless-N CardBus Adapter - -pci:v000014E4d00004328sv00001737sd00000068* - ID_PRODUCT_FROM_DATABASE=WEC600N v1 802.11a/b/g/n Wireless-N ExpressCard - -pci:v000014E4d00004329* - ID_PRODUCT_FROM_DATABASE=BCM4321 802.11b/g/n - -pci:v000014E4d00004329sv00001385sd00007B00* - ID_PRODUCT_FROM_DATABASE=WN511B RangeMax NEXT Wireless Notebook Adapter - -pci:v000014E4d00004329sv00001385sd00007D00* - ID_PRODUCT_FROM_DATABASE=WN311B RangeMax Next 270 Mbps Wireless PCI Adapter - -pci:v000014E4d00004329sv00001737sd00000058* - ID_PRODUCT_FROM_DATABASE=WPC300N v1 Wireless-N Notebook Adapter - -pci:v000014E4d0000432A* - ID_PRODUCT_FROM_DATABASE=BCM4321 802.11an Wireless Network Controller - -pci:v000014E4d0000432B* - ID_PRODUCT_FROM_DATABASE=BCM4322 802.11a/b/g/n Wireless LAN Controller - -pci:v000014E4d0000432Bsv00001028sd0000000D* - ID_PRODUCT_FROM_DATABASE=Wireless 1510 Wireless-N WLAN Mini-Card - -pci:v000014E4d0000432Bsv0000106Bsd0000008E* - ID_PRODUCT_FROM_DATABASE=AirPort Extreme - -pci:v000014E4d0000432C* - ID_PRODUCT_FROM_DATABASE=BCM4322 802.11b/g/n - -pci:v000014E4d0000432Csv00001799sd0000D311* - ID_PRODUCT_FROM_DATABASE=Dynex DX-NNBX 802.11n WLAN Cardbus Card - -pci:v000014E4d0000432D* - ID_PRODUCT_FROM_DATABASE=BCM4322 802.11an Wireless Network Controller - -pci:v000014E4d00004331* - ID_PRODUCT_FROM_DATABASE=BCM4331 802.11a/b/g/n - -pci:v000014E4d00004331sv0000106Bsd000000D6* - ID_PRODUCT_FROM_DATABASE=AirPort Extreme - -pci:v000014E4d00004333* - ID_PRODUCT_FROM_DATABASE=Serial (EDGE/GPRS modem part of Option GT Combo Edge) - -pci:v000014E4d00004344* - ID_PRODUCT_FROM_DATABASE=EDGE/GPRS data and 802.11b/g combo cardbus [GC89] - -pci:v000014E4d00004353* - ID_PRODUCT_FROM_DATABASE=BCM43224 802.11a/b/g/n - -pci:v000014E4d00004353sv00001028sd0000000E* - ID_PRODUCT_FROM_DATABASE=Wireless 1520 Half-size Mini PCIe Card - -pci:v000014E4d00004353sv0000103Csd00001509* - ID_PRODUCT_FROM_DATABASE=WMIB-275N Half-size Mini PCIe Card - -pci:v000014E4d00004357* - ID_PRODUCT_FROM_DATABASE=BCM43225 802.11b/g/n - -pci:v000014E4d00004357sv0000105Bsd0000E021* - ID_PRODUCT_FROM_DATABASE=T77H103.00 Wireless Half-size Mini PCIe Card - -pci:v000014E4d00004358* - ID_PRODUCT_FROM_DATABASE=BCM43227 802.11b/g/n - -pci:v000014E4d00004359* - ID_PRODUCT_FROM_DATABASE=BCM43228 802.11a/b/g/n - -pci:v000014E4d00004359sv00001028sd00000011* - ID_PRODUCT_FROM_DATABASE=Wireless 1530 Half-size Mini PCIe Card - -pci:v000014E4d00004359sv0000103Csd0000182C* - ID_PRODUCT_FROM_DATABASE=BCM943228HM4L 802.11a/b/g/n 2x2 Wi-Fi Adapter - -pci:v000014E4d00004365* - ID_PRODUCT_FROM_DATABASE=BCM43142 802.11b/g/n - -pci:v000014E4d00004365sv00001028sd00000016* - ID_PRODUCT_FROM_DATABASE=Wireless 1704 802.11n + BT 4.0 - -pci:v000014E4d00004401* - ID_PRODUCT_FROM_DATABASE=BCM4401 100Base-T - -pci:v000014E4d00004401sv00001025sd00000035* - ID_PRODUCT_FROM_DATABASE=TravelMate 660 - -pci:v000014E4d00004401sv0000103Csd000008B0* - ID_PRODUCT_FROM_DATABASE=tc1100 tablet - -pci:v000014E4d00004401sv00001043sd000080A8* - ID_PRODUCT_FROM_DATABASE=A7V8X motherboard - -pci:v000014E4d00004402* - ID_PRODUCT_FROM_DATABASE=BCM4402 Integrated 10/100BaseT - -pci:v000014E4d00004403* - ID_PRODUCT_FROM_DATABASE=BCM4402 V.90 56k Modem - -pci:v000014E4d00004410* - ID_PRODUCT_FROM_DATABASE=BCM4413 iLine32 HomePNA 2.0 - -pci:v000014E4d00004411* - ID_PRODUCT_FROM_DATABASE=BCM4413 V.90 56k modem - -pci:v000014E4d00004412* - ID_PRODUCT_FROM_DATABASE=BCM4412 10/100BaseT - -pci:v000014E4d00004430* - ID_PRODUCT_FROM_DATABASE=BCM44xx CardBus iLine32 HomePNA 2.0 - -pci:v000014E4d00004432* - ID_PRODUCT_FROM_DATABASE=BCM4432 CardBus 10/100BaseT - -pci:v000014E4d00004610* - ID_PRODUCT_FROM_DATABASE=BCM4610 Sentry5 PCI to SB Bridge - -pci:v000014E4d00004611* - ID_PRODUCT_FROM_DATABASE=BCM4610 Sentry5 iLine32 HomePNA 1.0 - -pci:v000014E4d00004612* - ID_PRODUCT_FROM_DATABASE=BCM4610 Sentry5 V.90 56k Modem - -pci:v000014E4d00004613* - ID_PRODUCT_FROM_DATABASE=BCM4610 Sentry5 Ethernet Controller - -pci:v000014E4d00004614* - ID_PRODUCT_FROM_DATABASE=BCM4610 Sentry5 External Interface - -pci:v000014E4d00004615* - ID_PRODUCT_FROM_DATABASE=BCM4610 Sentry5 USB Controller - -pci:v000014E4d00004704* - ID_PRODUCT_FROM_DATABASE=BCM4704 PCI to SB Bridge - -pci:v000014E4d00004705* - ID_PRODUCT_FROM_DATABASE=BCM4704 Sentry5 802.11b Wireless LAN Controller - -pci:v000014E4d00004706* - ID_PRODUCT_FROM_DATABASE=BCM4704 Sentry5 Ethernet Controller - -pci:v000014E4d00004707* - ID_PRODUCT_FROM_DATABASE=BCM4704 Sentry5 USB Controller - -pci:v000014E4d00004708* - ID_PRODUCT_FROM_DATABASE=BCM4704 Crypto Accelerator - -pci:v000014E4d00004710* - ID_PRODUCT_FROM_DATABASE=BCM4710 Sentry5 PCI to SB Bridge - -pci:v000014E4d00004711* - ID_PRODUCT_FROM_DATABASE=BCM47xx Sentry5 iLine32 HomePNA 2.0 - -pci:v000014E4d00004712* - ID_PRODUCT_FROM_DATABASE=BCM47xx V.92 56k modem - -pci:v000014E4d00004713* - ID_PRODUCT_FROM_DATABASE=Sentry5 Ethernet Controller - -pci:v000014E4d00004714* - ID_PRODUCT_FROM_DATABASE=BCM47xx Sentry5 External Interface - -pci:v000014E4d00004715* - ID_PRODUCT_FROM_DATABASE=Sentry5 USB Controller - -pci:v000014E4d00004716* - ID_PRODUCT_FROM_DATABASE=BCM47xx Sentry5 USB Host Controller - -pci:v000014E4d00004717* - ID_PRODUCT_FROM_DATABASE=BCM47xx Sentry5 USB Device Controller - -pci:v000014E4d00004718* - ID_PRODUCT_FROM_DATABASE=Sentry5 Crypto Accelerator - -pci:v000014E4d00004719* - ID_PRODUCT_FROM_DATABASE=BCM47xx/53xx RoboSwitch Core - -pci:v000014E4d00004720* - ID_PRODUCT_FROM_DATABASE=BCM4712 MIPS CPU - -pci:v000014E4d00004727* - ID_PRODUCT_FROM_DATABASE=BCM4313 802.11b/g/n Wireless LAN Controller - -pci:v000014E4d00004727sv00001028sd00000010* - ID_PRODUCT_FROM_DATABASE=Inspiron M5010 / XPS 8300 - -pci:v000014E4d00005365* - ID_PRODUCT_FROM_DATABASE=BCM5365P Sentry5 Host Bridge - -pci:v000014E4d00005600* - ID_PRODUCT_FROM_DATABASE=BCM5600 StrataSwitch 24+2 Ethernet Switch Controller - -pci:v000014E4d00005605* - ID_PRODUCT_FROM_DATABASE=BCM5605 StrataSwitch 24+2 Ethernet Switch Controller - -pci:v000014E4d00005615* - ID_PRODUCT_FROM_DATABASE=BCM5615 StrataSwitch 24+2 Ethernet Switch Controller - -pci:v000014E4d00005625* - ID_PRODUCT_FROM_DATABASE=BCM5625 StrataSwitch 24+2 Ethernet Switch Controller - -pci:v000014E4d00005645* - ID_PRODUCT_FROM_DATABASE=BCM5645 StrataSwitch 24+2 Ethernet Switch Controller - -pci:v000014E4d00005670* - ID_PRODUCT_FROM_DATABASE=BCM5670 8-Port 10GE Ethernet Switch Fabric - -pci:v000014E4d00005680* - ID_PRODUCT_FROM_DATABASE=BCM5680 G-Switch 8 Port Gigabit Ethernet Switch Controller - -pci:v000014E4d00005690* - ID_PRODUCT_FROM_DATABASE=BCM5690 12-port Multi-Layer Gigabit Ethernet Switch - -pci:v000014E4d00005691* - ID_PRODUCT_FROM_DATABASE=BCM5691 GE/10GE 8+2 Gigabit Ethernet Switch Controller - -pci:v000014E4d00005692* - ID_PRODUCT_FROM_DATABASE=BCM5692 12-port Multi-Layer Gigabit Ethernet Switch - -pci:v000014E4d00005695* - ID_PRODUCT_FROM_DATABASE=BCM5695 12-port + HiGig Multi-Layer Gigabit Ethernet Switch - -pci:v000014E4d00005698* - ID_PRODUCT_FROM_DATABASE=BCM5698 12-port Multi-Layer Gigabit Ethernet Switch - -pci:v000014E4d00005820* - ID_PRODUCT_FROM_DATABASE=BCM5820 Crypto Accelerator - -pci:v000014E4d00005821* - ID_PRODUCT_FROM_DATABASE=BCM5821 Crypto Accelerator - -pci:v000014E4d00005822* - ID_PRODUCT_FROM_DATABASE=BCM5822 Crypto Accelerator - -pci:v000014E4d00005823* - ID_PRODUCT_FROM_DATABASE=BCM5823 Crypto Accelerator - -pci:v000014E4d00005824* - ID_PRODUCT_FROM_DATABASE=BCM5824 Crypto Accelerator - -pci:v000014E4d00005840* - ID_PRODUCT_FROM_DATABASE=BCM5840 Crypto Accelerator - -pci:v000014E4d00005841* - ID_PRODUCT_FROM_DATABASE=BCM5841 Crypto Accelerator - -pci:v000014E4d00005850* - ID_PRODUCT_FROM_DATABASE=BCM5850 Crypto Accelerator - -pci:v000014E4d00008602* - ID_PRODUCT_FROM_DATABASE=BCM7400/BCM7405 Serial ATA Controller - -pci:v000014E4d0000B302* - ID_PRODUCT_FROM_DATABASE=BCM56302 StrataXGS 24x1GE 2x10GE Switch Controller - -pci:v000014E4d0000B334* - ID_PRODUCT_FROM_DATABASE=BCM56334 StrataXGS 24x1GE 4x10GE Switch Controller - -pci:v000014E4d0000B800* - ID_PRODUCT_FROM_DATABASE=BCM56800 StrataXGS 10GE Switch Controller - -pci:v000014E4d0000B842* - ID_PRODUCT_FROM_DATABASE=BCM56842 Trident 10GE Switch Controller - -pci:v000014E5* - ID_VENDOR_FROM_DATABASE=Pixelfusion Ltd - -pci:v000014E6* - ID_VENDOR_FROM_DATABASE=SHINING Technology Inc - -pci:v000014E7* - ID_VENDOR_FROM_DATABASE=3CX - -pci:v000014E8* - ID_VENDOR_FROM_DATABASE=RAYCER Inc - -pci:v000014E9* - ID_VENDOR_FROM_DATABASE=GARNETS System CO Ltd - -pci:v000014EA* - ID_VENDOR_FROM_DATABASE=Planex Communications, Inc - -pci:v000014EAd0000AB06* - ID_PRODUCT_FROM_DATABASE=FNW-3603-TX CardBus Fast Ethernet - -pci:v000014EAd0000AB07* - ID_PRODUCT_FROM_DATABASE=RTL81xx RealTek Ethernet - -pci:v000014EAd0000AB08* - ID_PRODUCT_FROM_DATABASE=FNW-3602-TX CardBus Fast Ethernet - -pci:v000014EB* - ID_VENDOR_FROM_DATABASE=SEIKO EPSON Corp - -pci:v000014EC* - ID_VENDOR_FROM_DATABASE=Agilent Technologies - -pci:v000014ECd00000000* - ID_PRODUCT_FROM_DATABASE=Aciris Digitizer (malformed ID) - -pci:v000014ED* - ID_VENDOR_FROM_DATABASE=DATAKINETICS Ltd - -pci:v000014EE* - ID_VENDOR_FROM_DATABASE=MASPRO KENKOH Corp - -pci:v000014EF* - ID_VENDOR_FROM_DATABASE=CARRY Computer ENG. CO Ltd - -pci:v000014F0* - ID_VENDOR_FROM_DATABASE=CANON RESEACH CENTRE FRANCE - -pci:v000014F1* - ID_VENDOR_FROM_DATABASE=Conexant Systems, Inc. - -pci:v000014F1d00001002* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v000014F1d00001003* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v000014F1d00001004* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v000014F1d00001005* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v000014F1d00001006* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v000014F1d00001022* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v000014F1d00001023* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v000014F1d00001024* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v000014F1d00001025* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v000014F1d00001026* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v000014F1d00001032* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v000014F1d00001033* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax Modem - -pci:v000014F1d00001033sv00001033sd00008077* - ID_PRODUCT_FROM_DATABASE=NEC - -pci:v000014F1d00001033sv0000122Dsd00004027* - ID_PRODUCT_FROM_DATABASE=Dell Zeus - MDP3880-W(B) Data Fax Modem - -pci:v000014F1d00001033sv0000122Dsd00004030* - ID_PRODUCT_FROM_DATABASE=Dell Mercury - MDP3880-U(B) Data Fax Modem - -pci:v000014F1d00001033sv0000122Dsd00004034* - ID_PRODUCT_FROM_DATABASE=Dell Thor - MDP3880-W(U) Data Fax Modem - -pci:v000014F1d00001033sv000013E0sd0000020D* - ID_PRODUCT_FROM_DATABASE=Dell Copper - -pci:v000014F1d00001033sv000013E0sd0000020E* - ID_PRODUCT_FROM_DATABASE=Dell Silver - -pci:v000014F1d00001033sv000013E0sd00000261* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v000014F1d00001033sv000013E0sd00000290* - ID_PRODUCT_FROM_DATABASE=Compaq Goldwing - -pci:v000014F1d00001033sv000013E0sd000002A0* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v000014F1d00001033sv000013E0sd000002B0* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v000014F1d00001033sv000013E0sd000002C0* - ID_PRODUCT_FROM_DATABASE=Compaq Scooter - -pci:v000014F1d00001033sv000013E0sd000002D0* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v000014F1d00001033sv0000144Fsd00001500* - ID_PRODUCT_FROM_DATABASE=IBM P85-DF (1) - -pci:v000014F1d00001033sv0000144Fsd00001501* - ID_PRODUCT_FROM_DATABASE=IBM P85-DF (2) - -pci:v000014F1d00001033sv0000144Fsd0000150A* - ID_PRODUCT_FROM_DATABASE=IBM P85-DF (3) - -pci:v000014F1d00001033sv0000144Fsd0000150B* - ID_PRODUCT_FROM_DATABASE=IBM P85-DF Low Profile (1) - -pci:v000014F1d00001033sv0000144Fsd00001510* - ID_PRODUCT_FROM_DATABASE=IBM P85-DF Low Profile (2) - -pci:v000014F1d00001034* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem - -pci:v000014F1d00001035* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - -pci:v000014F1d00001035sv000010CFsd00001098* - ID_PRODUCT_FROM_DATABASE=Fujitsu P85-DFSV - -pci:v000014F1d00001036* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem - -pci:v000014F1d00001036sv0000104Dsd00008067* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v000014F1d00001036sv0000122Dsd00004029* - ID_PRODUCT_FROM_DATABASE=MDP3880SP-W - -pci:v000014F1d00001036sv0000122Dsd00004031* - ID_PRODUCT_FROM_DATABASE=MDP3880SP-U - -pci:v000014F1d00001036sv000013E0sd00000209* - ID_PRODUCT_FROM_DATABASE=Dell Titanium - -pci:v000014F1d00001036sv000013E0sd0000020A* - ID_PRODUCT_FROM_DATABASE=Dell Graphite - -pci:v000014F1d00001036sv000013E0sd00000260* - ID_PRODUCT_FROM_DATABASE=Gateway Red Owl - -pci:v000014F1d00001036sv000013E0sd00000270* - ID_PRODUCT_FROM_DATABASE=Gateway White Horse - -pci:v000014F1d00001052* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax Modem (Worldwide) - -pci:v000014F1d00001053* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax Modem (Worldwide) - -pci:v000014F1d00001054* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem (Worldwide) - -pci:v000014F1d00001055* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (Worldwide) - -pci:v000014F1d00001056* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) - -pci:v000014F1d00001057* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem (Worldwide) - -pci:v000014F1d00001059* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem (Worldwide) - -pci:v000014F1d00001063* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax Modem - -pci:v000014F1d00001064* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem - -pci:v000014F1d00001065* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - -pci:v000014F1d00001066* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem - -pci:v000014F1d00001066sv0000122Dsd00004033* - ID_PRODUCT_FROM_DATABASE=Dell Athena - MDP3900V-U - -pci:v000014F1d00001085* - ID_PRODUCT_FROM_DATABASE=HCF V90 56k Data/Fax/Voice/Spkp PCI Modem - -pci:v000014F1d000010B6* - ID_PRODUCT_FROM_DATABASE=CX06834-11 HCF V.92 56k Data/Fax/Voice/Spkp Modem - -pci:v000014F1d00001433* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax Modem - -pci:v000014F1d00001434* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem - -pci:v000014F1d00001435* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - -pci:v000014F1d00001436* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax Modem - -pci:v000014F1d00001453* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax Modem - -pci:v000014F1d00001453sv000013E0sd00000240* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v000014F1d00001453sv000013E0sd00000250* - ID_PRODUCT_FROM_DATABASE=IBM - -pci:v000014F1d00001453sv0000144Fsd00001502* - ID_PRODUCT_FROM_DATABASE=IBM P95-DF (1) - -pci:v000014F1d00001453sv0000144Fsd00001503* - ID_PRODUCT_FROM_DATABASE=IBM P95-DF (2) - -pci:v000014F1d00001454* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice Modem - -pci:v000014F1d00001455* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - -pci:v000014F1d00001456* - ID_PRODUCT_FROM_DATABASE=HCF 56k Data/Fax/Voice/Spkp Modem - -pci:v000014F1d00001456sv0000122Dsd00004035* - ID_PRODUCT_FROM_DATABASE=Dell Europa - MDP3900V-W - -pci:v000014F1d00001456sv0000122Dsd00004302* - ID_PRODUCT_FROM_DATABASE=Dell MP3930V-W(C) MiniPCI - -pci:v000014F1d00001610* - ID_PRODUCT_FROM_DATABASE=ADSL AccessRunner PCI Arbitration Device - -pci:v000014F1d00001611* - ID_PRODUCT_FROM_DATABASE=AccessRunner PCI ADSL Interface Device - -pci:v000014F1d00001620* - ID_PRODUCT_FROM_DATABASE=AccessRunner V2 PCI ADSL Arbitration Device - -pci:v000014F1d00001621* - ID_PRODUCT_FROM_DATABASE=AccessRunner V2 PCI ADSL Interface Device - -pci:v000014F1d00001622* - ID_PRODUCT_FROM_DATABASE=AccessRunner V2 PCI ADSL Yukon WAN Adapter - -pci:v000014F1d00001803* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v000014F1d00001803sv00000E11sd00000023* - ID_PRODUCT_FROM_DATABASE=623-LAN Grizzly - -pci:v000014F1d00001803sv00000E11sd00000043* - ID_PRODUCT_FROM_DATABASE=623-LAN Yogi - -pci:v000014F1d00001811* - ID_PRODUCT_FROM_DATABASE=MiniPCI Network Adapter - -pci:v000014F1d00001815* - ID_PRODUCT_FROM_DATABASE=HCF 56k Modem - -pci:v000014F1d00001815sv00000E11sd00000022* - ID_PRODUCT_FROM_DATABASE=Grizzly - -pci:v000014F1d00001815sv00000E11sd00000042* - ID_PRODUCT_FROM_DATABASE=Yogi - -pci:v000014F1d00002003* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax Modem - -pci:v000014F1d00002004* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem - -pci:v000014F1d00002005* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - -pci:v000014F1d00002006* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem - -pci:v000014F1d00002013* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax Modem - -pci:v000014F1d00002013sv00000E11sd0000B195* - ID_PRODUCT_FROM_DATABASE=Bear - -pci:v000014F1d00002013sv00000E11sd0000B196* - ID_PRODUCT_FROM_DATABASE=Seminole 1 - -pci:v000014F1d00002013sv00000E11sd0000B1BE* - ID_PRODUCT_FROM_DATABASE=Seminole 2 - -pci:v000014F1d00002013sv00001025sd00008013* - ID_PRODUCT_FROM_DATABASE=Acer - -pci:v000014F1d00002013sv00001033sd0000809D* - ID_PRODUCT_FROM_DATABASE=NEC - -pci:v000014F1d00002013sv00001033sd000080BC* - ID_PRODUCT_FROM_DATABASE=NEC - -pci:v000014F1d00002013sv0000155Dsd00006793* - ID_PRODUCT_FROM_DATABASE=HP - -pci:v000014F1d00002013sv0000155Dsd00008850* - ID_PRODUCT_FROM_DATABASE=E Machines - -pci:v000014F1d00002014* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem - -pci:v000014F1d00002015* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem - -pci:v000014F1d00002016* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem - -pci:v000014F1d00002043* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax Modem (WorldW SmartDAA) - -pci:v000014F1d00002044* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem (WorldW SmartDAA) - -pci:v000014F1d00002045* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (WorldW SmartDAA) - -pci:v000014F1d00002045sv000014F1sd00002045* - ID_PRODUCT_FROM_DATABASE=Generic SoftK56 - -pci:v000014F1d00002046* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (WorldW SmartDAA) - -pci:v000014F1d00002063* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax Modem (SmartDAA) - -pci:v000014F1d00002064* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem (SmartDAA) - -pci:v000014F1d00002065* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/Handset) Modem (SmartDAA) - -pci:v000014F1d00002066* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (SmartDAA) - -pci:v000014F1d00002093* - ID_PRODUCT_FROM_DATABASE=HSF 56k Modem - -pci:v000014F1d00002093sv0000155Dsd00002F07* - ID_PRODUCT_FROM_DATABASE=Legend - -pci:v000014F1d00002143* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Cell Modem (Mob WorldW SmartDAA) - -pci:v000014F1d00002144* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Cell Modem (Mob WorldW SmartDAA) - -pci:v000014F1d00002145* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob WorldW SmartDAA) - -pci:v000014F1d00002146* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob WorldW SmartDAA) - -pci:v000014F1d00002163* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Cell Modem (Mob SmartDAA) - -pci:v000014F1d00002164* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Cell Modem (Mob SmartDAA) - -pci:v000014F1d00002165* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/HS)/Cell Modem (Mob SmartDAA) - -pci:v000014F1d00002166* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp/Cell Modem (Mob SmartDAA) - -pci:v000014F1d00002343* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax CardBus Modem (Mob WorldW SmartDAA) - -pci:v000014F1d00002344* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice CardBus Modem (Mob WorldW SmartDAA) - -pci:v000014F1d00002345* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob WorldW SmartDAA) - -pci:v000014F1d00002346* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob WorldW SmartDAA) - -pci:v000014F1d00002363* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax CardBus Modem (Mob SmartDAA) - -pci:v000014F1d00002364* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice CardBus Modem (Mob SmartDAA) - -pci:v000014F1d00002365* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/HS) CardBus Modem (Mob SmartDAA) - -pci:v000014F1d00002366* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp CardBus Modem (Mob SmartDAA) - -pci:v000014F1d00002443* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax Modem (Mob WorldW SmartDAA) - -pci:v000014F1d00002443sv0000104Dsd00008075* - ID_PRODUCT_FROM_DATABASE=Modem - -pci:v000014F1d00002443sv0000104Dsd00008083* - ID_PRODUCT_FROM_DATABASE=Modem - -pci:v000014F1d00002443sv0000104Dsd00008097* - ID_PRODUCT_FROM_DATABASE=Modem - -pci:v000014F1d00002444* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem (Mob WorldW SmartDAA) - -pci:v000014F1d00002445* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob WorldW SmartDAA) - -pci:v000014F1d00002446* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (Mob WorldW SmartDAA) - -pci:v000014F1d00002463* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax Modem (Mob SmartDAA) - -pci:v000014F1d00002464* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice Modem (Mob SmartDAA) - -pci:v000014F1d00002465* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp (w/HS) Modem (Mob SmartDAA) - -pci:v000014F1d00002466* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax/Voice/Spkp Modem (Mob SmartDAA) - -pci:v000014F1d00002F00* - ID_PRODUCT_FROM_DATABASE=HSF 56k HSFi Modem - -pci:v000014F1d00002F00sv000013E0sd00008D84* - ID_PRODUCT_FROM_DATABASE=IBM HSFi V.90 - -pci:v000014F1d00002F00sv000013E0sd00008D85* - ID_PRODUCT_FROM_DATABASE=Compaq Stinger - -pci:v000014F1d00002F00sv000014F1sd00002004* - ID_PRODUCT_FROM_DATABASE=Dynalink 56PMi - -pci:v000014F1d00002F02* - ID_PRODUCT_FROM_DATABASE=HSF 56k HSFi Data/Fax - -pci:v000014F1d00002F11* - ID_PRODUCT_FROM_DATABASE=HSF 56k HSFi Modem - -pci:v000014F1d00002F20* - ID_PRODUCT_FROM_DATABASE=HSF 56k Data/Fax Modem - -pci:v000014F1d00002F20sv000014F1sd0000200C* - ID_PRODUCT_FROM_DATABASE=Soft Data Fax Modem with SmartCP - -pci:v000014F1d00002F20sv000014F1sd0000200F* - ID_PRODUCT_FROM_DATABASE=Dimension 3000 - -pci:v000014F1d00002F30* - ID_PRODUCT_FROM_DATABASE=SoftV92 SpeakerPhone SoftRing Modem with SmartSP - -pci:v000014F1d00002F30sv000014F1sd00002014* - ID_PRODUCT_FROM_DATABASE=Devolo MikroLink 56K Modem PCI - -pci:v000014F1d00002F50* - ID_PRODUCT_FROM_DATABASE=Conexant SoftK56 Data/Fax Modem - -pci:v000014F1d00005B7A* - ID_PRODUCT_FROM_DATABASE=CX23418 Single-Chip MPEG-2 Encoder with Integrated Analog Video/Broadcast Audio Decoder - -pci:v000014F1d00005B7Asv00000070sd00007444* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-1600 - -pci:v000014F1d00005B7Asv0000107Dsd00006F34* - ID_PRODUCT_FROM_DATABASE=WinFast DVR3100 H - -pci:v000014F1d00005B7Asv00005854sd00003343* - ID_PRODUCT_FROM_DATABASE=GoTView PCI DVD3 Hybrid - -pci:v000014F1d00008200* - ID_PRODUCT_FROM_DATABASE=CX25850 - -pci:v000014F1d00008234* - ID_PRODUCT_FROM_DATABASE=RS8234 ATM SAR Controller [ServiceSAR Plus] - -pci:v000014F1d00008800* - ID_PRODUCT_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder - -pci:v000014F1d00008800sv00000070sd00002801* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV 28xxx (Roslyn) models - -pci:v000014F1d00008800sv00000070sd00003400* - ID_PRODUCT_FROM_DATABASE=WinTV 34604 - -pci:v000014F1d00008800sv00000070sd00003401* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV 34xxx models - -pci:v000014F1d00008800sv00000070sd00006902* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-4000-HD - -pci:v000014F1d00008800sv00000070sd00007801* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-1800 MCE - -pci:v000014F1d00008800sv00000070sd00009001* - ID_PRODUCT_FROM_DATABASE=Nova-T DVB-T - -pci:v000014F1d00008800sv00000070sd00009200* - ID_PRODUCT_FROM_DATABASE=Nova-SE2 DVB-S - -pci:v000014F1d00008800sv00000070sd00009202* - ID_PRODUCT_FROM_DATABASE=Nova-S-Plus DVB-S - -pci:v000014F1d00008800sv00000070sd00009402* - ID_PRODUCT_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid - -pci:v000014F1d00008800sv00000070sd00009600* - ID_PRODUCT_FROM_DATABASE=WinTV 88x Video - -pci:v000014F1d00008800sv00000070sd00009802* - ID_PRODUCT_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid (Low Profile) - -pci:v000014F1d00008800sv00001002sd000000F8* - ID_PRODUCT_FROM_DATABASE=ATI TV Wonder Pro - -pci:v000014F1d00008800sv00001002sd0000A101* - ID_PRODUCT_FROM_DATABASE=HDTV Wonder - -pci:v000014F1d00008800sv00001043sd00004823* - ID_PRODUCT_FROM_DATABASE=ASUS PVR-416 - -pci:v000014F1d00008800sv0000107Dsd00006611* - ID_PRODUCT_FROM_DATABASE=Winfast TV 2000XP Expert - -pci:v000014F1d00008800sv0000107Dsd00006613* - ID_PRODUCT_FROM_DATABASE=Leadtek Winfast 2000XP Expert - -pci:v000014F1d00008800sv0000107Dsd00006620* - ID_PRODUCT_FROM_DATABASE=Leadtek Winfast DV2000 - -pci:v000014F1d00008800sv0000107Dsd0000663C* - ID_PRODUCT_FROM_DATABASE=Leadtek PVR 2000 - -pci:v000014F1d00008800sv0000107Dsd0000665F* - ID_PRODUCT_FROM_DATABASE=WinFast DTV1000-T - -pci:v000014F1d00008800sv000010FCsd0000D003* - ID_PRODUCT_FROM_DATABASE=IODATA GV-VCP3/PCI - -pci:v000014F1d00008800sv000010FCsd0000D035* - ID_PRODUCT_FROM_DATABASE=IODATA GV/BCTV7E - -pci:v000014F1d00008800sv00001421sd00000334* - ID_PRODUCT_FROM_DATABASE=Instant TV DVB-T PCI - -pci:v000014F1d00008800sv00001461sd0000000A* - ID_PRODUCT_FROM_DATABASE=AVerTV 303 (M126) - -pci:v000014F1d00008800sv00001461sd0000000B* - ID_PRODUCT_FROM_DATABASE=AverTV Studio 303 (M126) - -pci:v000014F1d00008800sv00001461sd00008011* - ID_PRODUCT_FROM_DATABASE=UltraTV Media Center PCI 550 - -pci:v000014F1d00008800sv00001462sd00008606* - ID_PRODUCT_FROM_DATABASE=MSI TV-@nywhere Master - -pci:v000014F1d00008800sv000014C7sd00000107* - ID_PRODUCT_FROM_DATABASE=GDI Black Gold - -pci:v000014F1d00008800sv000014F1sd00000187* - ID_PRODUCT_FROM_DATABASE=Conexant DVB-T reference design - -pci:v000014F1d00008800sv000014F1sd00000342* - ID_PRODUCT_FROM_DATABASE=Digital-Logic MICROSPACE Entertainment Center (MEC) - -pci:v000014F1d00008800sv0000153Bsd00001166* - ID_PRODUCT_FROM_DATABASE=Cinergy 1400 DVB-T - -pci:v000014F1d00008800sv00001540sd00002580* - ID_PRODUCT_FROM_DATABASE=Provideo PV259 - -pci:v000014F1d00008800sv00001554sd00004811* - ID_PRODUCT_FROM_DATABASE=PixelView - -pci:v000014F1d00008800sv00001554sd00004813* - ID_PRODUCT_FROM_DATABASE=Club 3D ZAP1000 MCE Edition - -pci:v000014F1d00008800sv000017DEsd000008A1* - ID_PRODUCT_FROM_DATABASE=KWorld/VStream XPert DVB-T with cx22702 - -pci:v000014F1d00008800sv000017DEsd000008A6* - ID_PRODUCT_FROM_DATABASE=KWorld/VStream XPert DVB-T - -pci:v000014F1d00008800sv000017DEsd000008B2* - ID_PRODUCT_FROM_DATABASE=KWorld DVB-S 100 - -pci:v000014F1d00008800sv000017DEsd0000A8A6* - ID_PRODUCT_FROM_DATABASE=digitalnow DNTV Live! DVB-T - -pci:v000014F1d00008800sv00001822sd00000025* - ID_PRODUCT_FROM_DATABASE=digitalnow DNTV Live! DVB-T Pro - -pci:v000014F1d00008800sv0000185Bsd0000E000* - ID_PRODUCT_FROM_DATABASE=VideoMate X500 - -pci:v000014F1d00008800sv000018ACsd0000D500* - ID_PRODUCT_FROM_DATABASE=FusionHDTV 5 Gold - -pci:v000014F1d00008800sv000018ACsd0000D810* - ID_PRODUCT_FROM_DATABASE=FusionHDTV 3 Gold-Q - -pci:v000014F1d00008800sv000018ACsd0000D820* - ID_PRODUCT_FROM_DATABASE=FusionHDTV 3 Gold-T - -pci:v000014F1d00008800sv000018ACsd0000DB00* - ID_PRODUCT_FROM_DATABASE=FusionHDTV DVB-T1 - -pci:v000014F1d00008800sv000018ACsd0000DB11* - ID_PRODUCT_FROM_DATABASE=FusionHDTV DVB-T Plus - -pci:v000014F1d00008800sv000018ACsd0000DB50* - ID_PRODUCT_FROM_DATABASE=FusionHDTV DVB-T Dual Digital - -pci:v000014F1d00008800sv00005654sd00002388* - ID_PRODUCT_FROM_DATABASE=GoTView PCI Hybrid TV Tuner Card - -pci:v000014F1d00008800sv00007063sd00003000* - ID_PRODUCT_FROM_DATABASE=pcHDTV HD3000 HDTV - -pci:v000014F1d00008800sv00007063sd00005500* - ID_PRODUCT_FROM_DATABASE=pcHDTV HD-5500 - -pci:v000014F1d00008801* - ID_PRODUCT_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] - -pci:v000014F1d00008801sv00000070sd00002801* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV 28xxx (Roslyn) models - -pci:v000014F1d00008801sv0000185Bsd0000E000* - ID_PRODUCT_FROM_DATABASE=VideoMate X500 - -pci:v000014F1d00008801sv00005654sd00002388* - ID_PRODUCT_FROM_DATABASE=GoTView PCI Hybrid Audio AVStream Device - -pci:v000014F1d00008801sv00007063sd00005500* - ID_PRODUCT_FROM_DATABASE=pcHDTV HD-5500 - -pci:v000014F1d00008802* - ID_PRODUCT_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [MPEG Port] - -pci:v000014F1d00008802sv00000070sd00002801* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV 28xxx (Roslyn) models - -pci:v000014F1d00008802sv00000070sd00006902* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-4000-HD - -pci:v000014F1d00008802sv00000070sd00009002* - ID_PRODUCT_FROM_DATABASE=Nova-T DVB-T Model 909 - -pci:v000014F1d00008802sv00000070sd00009402* - ID_PRODUCT_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid - -pci:v000014F1d00008802sv00000070sd00009600* - ID_PRODUCT_FROM_DATABASE=WinTV 88x MPEG Encoder - -pci:v000014F1d00008802sv00001043sd00004823* - ID_PRODUCT_FROM_DATABASE=ASUS PVR-416 - -pci:v000014F1d00008802sv0000107Dsd0000663C* - ID_PRODUCT_FROM_DATABASE=Leadtek PVR 2000 - -pci:v000014F1d00008802sv0000107Dsd0000665F* - ID_PRODUCT_FROM_DATABASE=WinFast DTV1000-T - -pci:v000014F1d00008802sv000014F1sd00000187* - ID_PRODUCT_FROM_DATABASE=Conexant DVB-T reference design - -pci:v000014F1d00008802sv000017DEsd000008A1* - ID_PRODUCT_FROM_DATABASE=XPert DVB-T PCI BDA DVBT 23880 Transport Stream Capture - -pci:v000014F1d00008802sv000017DEsd000008A6* - ID_PRODUCT_FROM_DATABASE=KWorld/VStream XPert DVB-T - -pci:v000014F1d00008802sv000018ACsd0000D500* - ID_PRODUCT_FROM_DATABASE=DViCO FusionHDTV5 Gold - -pci:v000014F1d00008802sv000018ACsd0000D810* - ID_PRODUCT_FROM_DATABASE=DViCO FusionHDTV3 Gold-Q - -pci:v000014F1d00008802sv000018ACsd0000D820* - ID_PRODUCT_FROM_DATABASE=DViCO FusionHDTV3 Gold-T - -pci:v000014F1d00008802sv000018ACsd0000DB00* - ID_PRODUCT_FROM_DATABASE=DVICO FusionHDTV DVB-T1 - -pci:v000014F1d00008802sv000018ACsd0000DB10* - ID_PRODUCT_FROM_DATABASE=DVICO FusionHDTV DVB-T Plus - -pci:v000014F1d00008802sv00005654sd00002388* - ID_PRODUCT_FROM_DATABASE=GoTView PCI Hybrid TS Capture Device - -pci:v000014F1d00008802sv00007063sd00003000* - ID_PRODUCT_FROM_DATABASE=pcHDTV HD3000 HDTV - -pci:v000014F1d00008802sv00007063sd00005500* - ID_PRODUCT_FROM_DATABASE=pcHDTV HD-5500 - -pci:v000014F1d00008804* - ID_PRODUCT_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [IR Port] - -pci:v000014F1d00008804sv00000070sd00006902* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-4000-HD - -pci:v000014F1d00008804sv00000070sd00009002* - ID_PRODUCT_FROM_DATABASE=Nova-T DVB-T Model 909 - -pci:v000014F1d00008804sv00000070sd00009402* - ID_PRODUCT_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid - -pci:v000014F1d00008804sv00007063sd00005500* - ID_PRODUCT_FROM_DATABASE=pcHDTV HD-5500 - -pci:v000014F1d00008811* - ID_PRODUCT_FROM_DATABASE=CX23880/1/2/3 PCI Video and Audio Decoder [Audio Port] - -pci:v000014F1d00008811sv00000070sd00003400* - ID_PRODUCT_FROM_DATABASE=WinTV 34604 - -pci:v000014F1d00008811sv00000070sd00003401* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV 34xxx models - -pci:v000014F1d00008811sv00000070sd00006902* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-4000-HD - -pci:v000014F1d00008811sv00000070sd00009402* - ID_PRODUCT_FROM_DATABASE=WinTV-HVR1100 DVB-T/Hybrid - -pci:v000014F1d00008811sv00000070sd00009600* - ID_PRODUCT_FROM_DATABASE=WinTV 88x Audio - -pci:v000014F1d00008811sv00001462sd00008606* - ID_PRODUCT_FROM_DATABASE=MSI TV-@nywhere Master - -pci:v000014F1d00008811sv000018ACsd0000D500* - ID_PRODUCT_FROM_DATABASE=DViCO FusionHDTV5 Gold - -pci:v000014F1d00008811sv000018ACsd0000D810* - ID_PRODUCT_FROM_DATABASE=DViCO FusionHDTV3 Gold-Q - -pci:v000014F1d00008811sv000018ACsd0000D820* - ID_PRODUCT_FROM_DATABASE=DViCO FusionHDTV3 Gold-T - -pci:v000014F1d00008811sv000018ACsd0000DB00* - ID_PRODUCT_FROM_DATABASE=DVICO FusionHDTV DVB-T1 - -pci:v000014F1d00008811sv00005654sd00002388* - ID_PRODUCT_FROM_DATABASE=GoTView PCI Hybrid Audio Capture Device - -pci:v000014F1d00008852* - ID_PRODUCT_FROM_DATABASE=CX23885 PCI Video and Audio Decoder - -pci:v000014F1d00008852sv00000070sd00008010* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV HVR-1400 ExpressCard - -pci:v000014F1d00008852sv0000107Dsd00006F22* - ID_PRODUCT_FROM_DATABASE=WinFast PxTV1200 - -pci:v000014F1d00008852sv00001461sd0000C039* - ID_PRODUCT_FROM_DATABASE=AVerTV Hybrid Express (A577) - -pci:v000014F1d00008852sv0000153Bsd0000117E* - ID_PRODUCT_FROM_DATABASE=Cinergy T PCIe Dual - -pci:v000014F1d00008852sv000018ACsd0000DB78* - ID_PRODUCT_FROM_DATABASE=FusionHDTV DVB-T Dual Express - -pci:v000014F1d00008880* - ID_PRODUCT_FROM_DATABASE=CX23887/8 PCIe Broadcast Audio and Video Decoder with 3D Comb - -pci:v000014F1d00008880sv00000070sd0000C108* - ID_PRODUCT_FROM_DATABASE=WinTV-HVR-4400-HD model 1278 - -pci:v000014F1d00008880sv00005654sd00002389* - ID_PRODUCT_FROM_DATABASE=GoTView X5 DVD Hybrid PCI-E - -pci:v000014F1d00008880sv00005654sd00002390* - ID_PRODUCT_FROM_DATABASE=GoTView X5 3D HYBRID PCI-E - -pci:v000014F2* - ID_VENDOR_FROM_DATABASE=MOBILITY Electronics - -pci:v000014F2d00000120* - ID_PRODUCT_FROM_DATABASE=EV1000 bridge - -pci:v000014F2d00000121* - ID_PRODUCT_FROM_DATABASE=EV1000 Parallel port - -pci:v000014F2d00000122* - ID_PRODUCT_FROM_DATABASE=EV1000 Serial port - -pci:v000014F2d00000123* - ID_PRODUCT_FROM_DATABASE=EV1000 Keyboard controller - -pci:v000014F2d00000124* - ID_PRODUCT_FROM_DATABASE=EV1000 Mouse controller - -pci:v000014F3* - ID_VENDOR_FROM_DATABASE=BroadLogic - -pci:v000014F3d00002030* - ID_PRODUCT_FROM_DATABASE=2030 DVB-S Satellite Receiver - -pci:v000014F3d00002035* - ID_PRODUCT_FROM_DATABASE=2035 DVB-S Satellite Receiver - -pci:v000014F3d00002050* - ID_PRODUCT_FROM_DATABASE=2050 DVB-T Terrestrial (Cable) Receiver - -pci:v000014F3d00002060* - ID_PRODUCT_FROM_DATABASE=2060 ATSC Terrestrial (Cable) Receiver - -pci:v000014F4* - ID_VENDOR_FROM_DATABASE=TOKYO Electronic Industry CO Ltd - -pci:v000014F5* - ID_VENDOR_FROM_DATABASE=SOPAC Ltd - -pci:v000014F6* - ID_VENDOR_FROM_DATABASE=COYOTE Technologies LLC - -pci:v000014F7* - ID_VENDOR_FROM_DATABASE=WOLF Technology Inc - -pci:v000014F8* - ID_VENDOR_FROM_DATABASE=AUDIOCODES Inc - -pci:v000014F8d00002077* - ID_PRODUCT_FROM_DATABASE=TP-240 dual span E1 VoIP PCI card - -pci:v000014F9* - ID_VENDOR_FROM_DATABASE=AG COMMUNICATIONS - -pci:v000014FA* - ID_VENDOR_FROM_DATABASE=WANDEL & GOLTERMANN - -pci:v000014FB* - ID_VENDOR_FROM_DATABASE=TRANSAS MARINE (UK) Ltd - -pci:v000014FC* - ID_VENDOR_FROM_DATABASE=Quadrics Ltd - -pci:v000014FCd00000000* - ID_PRODUCT_FROM_DATABASE=QsNet Elan3 Network Adapter - -pci:v000014FCd00000001* - ID_PRODUCT_FROM_DATABASE=QsNetII Elan4 Network Adapter - -pci:v000014FCd00000002* - ID_PRODUCT_FROM_DATABASE=QsNetIII Elan5 Network Adapter - -pci:v000014FD* - ID_VENDOR_FROM_DATABASE=JAPAN Computer Industry Inc - -pci:v000014FE* - ID_VENDOR_FROM_DATABASE=ARCHTEK TELECOM Corp - -pci:v000014FF* - ID_VENDOR_FROM_DATABASE=TWINHEAD INTERNATIONAL Corp - -pci:v00001500* - ID_VENDOR_FROM_DATABASE=DELTA Electronics, Inc - -pci:v00001500d00001360* - ID_PRODUCT_FROM_DATABASE=RTL81xx RealTek Ethernet - -pci:v00001501* - ID_VENDOR_FROM_DATABASE=BANKSOFT CANADA Ltd - -pci:v00001502* - ID_VENDOR_FROM_DATABASE=MITSUBISHI ELECTRIC LOGISTICS SUPPORT Co Ltd - -pci:v00001503* - ID_VENDOR_FROM_DATABASE=KAWASAKI LSI USA Inc - -pci:v00001504* - ID_VENDOR_FROM_DATABASE=KAISER Electronics - -pci:v00001505* - ID_VENDOR_FROM_DATABASE=ITA INGENIEURBURO FUR TESTAUFGABEN GmbH - -pci:v00001506* - ID_VENDOR_FROM_DATABASE=CHAMELEON Systems Inc - -pci:v00001507* - ID_VENDOR_FROM_DATABASE=Motorola ?? / HTEC - -pci:v00001507d00000001* - ID_PRODUCT_FROM_DATABASE=MPC105 [Eagle] - -pci:v00001507d00000002* - ID_PRODUCT_FROM_DATABASE=MPC106 [Grackle] - -pci:v00001507d00000003* - ID_PRODUCT_FROM_DATABASE=MPC8240 [Kahlua] - -pci:v00001507d00000100* - ID_PRODUCT_FROM_DATABASE=MC145575 [HFC-PCI] - -pci:v00001507d00000431* - ID_PRODUCT_FROM_DATABASE=KTI829c 100VG - -pci:v00001507d00004801* - ID_PRODUCT_FROM_DATABASE=Raven - -pci:v00001507d00004802* - ID_PRODUCT_FROM_DATABASE=Falcon - -pci:v00001507d00004803* - ID_PRODUCT_FROM_DATABASE=Hawk - -pci:v00001507d00004806* - ID_PRODUCT_FROM_DATABASE=CPX8216 - -pci:v00001508* - ID_VENDOR_FROM_DATABASE=HONDA CONNECTORS/MHOTRONICS Inc - -pci:v00001509* - ID_VENDOR_FROM_DATABASE=FIRST INTERNATIONAL Computer Inc - -pci:v0000150A* - ID_VENDOR_FROM_DATABASE=FORVUS RESEARCH Inc - -pci:v0000150B* - ID_VENDOR_FROM_DATABASE=YAMASHITA Systems Corp - -pci:v0000150C* - ID_VENDOR_FROM_DATABASE=KYOPAL CO Ltd - -pci:v0000150D* - ID_VENDOR_FROM_DATABASE=WARPSPPED Inc - -pci:v0000150E* - ID_VENDOR_FROM_DATABASE=C-PORT Corp - -pci:v0000150F* - ID_VENDOR_FROM_DATABASE=INTEC GmbH - -pci:v00001510* - ID_VENDOR_FROM_DATABASE=BEHAVIOR TECH Computer Corp - -pci:v00001511* - ID_VENDOR_FROM_DATABASE=CENTILLIUM Technology Corp - -pci:v00001512* - ID_VENDOR_FROM_DATABASE=ROSUN Technologies Inc - -pci:v00001513* - ID_VENDOR_FROM_DATABASE=Raychem - -pci:v00001514* - ID_VENDOR_FROM_DATABASE=TFL LAN Inc - -pci:v00001515* - ID_VENDOR_FROM_DATABASE=Advent design - -pci:v00001516* - ID_VENDOR_FROM_DATABASE=MYSON Technology Inc - -pci:v00001516d00000800* - ID_PRODUCT_FROM_DATABASE=MTD-8xx 100/10M Ethernet PCI Adapter - -pci:v00001516d00000803* - ID_PRODUCT_FROM_DATABASE=SURECOM EP-320X-S 100/10M Ethernet PCI Adapter - -pci:v00001516d00000803sv00001320sd000010BD* - ID_PRODUCT_FROM_DATABASE=SURECOM EP-320X-S 100/10M Ethernet PCI Adapter - -pci:v00001516d00000891* - ID_PRODUCT_FROM_DATABASE=MTD-8xx 100/10M Ethernet PCI Adapter - -pci:v00001517* - ID_VENDOR_FROM_DATABASE=ECHOTEK Corp - -pci:v00001518* - ID_VENDOR_FROM_DATABASE=Kontron Modular Computers GmbH - -pci:v00001519* - ID_VENDOR_FROM_DATABASE=TELEFON AKTIEBOLAGET LM Ericsson - -pci:v0000151A* - ID_VENDOR_FROM_DATABASE=Globetek - -pci:v0000151Ad00001002* - ID_PRODUCT_FROM_DATABASE=PCI-1002 - -pci:v0000151Ad00001004* - ID_PRODUCT_FROM_DATABASE=PCI-1004 - -pci:v0000151Ad00001008* - ID_PRODUCT_FROM_DATABASE=PCI-1008 - -pci:v0000151B* - ID_VENDOR_FROM_DATABASE=COMBOX Ltd - -pci:v0000151C* - ID_VENDOR_FROM_DATABASE=DIGITAL AUDIO LABS Inc - -pci:v0000151Cd00000003* - ID_PRODUCT_FROM_DATABASE=Prodif T 2496 - -pci:v0000151Cd00004000* - ID_PRODUCT_FROM_DATABASE=Prodif 88 - -pci:v0000151D* - ID_VENDOR_FROM_DATABASE=Fujitsu Computer Products Of America - -pci:v0000151E* - ID_VENDOR_FROM_DATABASE=MATRIX Corp - -pci:v0000151F* - ID_VENDOR_FROM_DATABASE=TOPIC SEMICONDUCTOR Corp - -pci:v0000151Fd00000000* - ID_PRODUCT_FROM_DATABASE=TP560 Data/Fax/Voice 56k modem - -pci:v00001520* - ID_VENDOR_FROM_DATABASE=CHAPLET System Inc - -pci:v00001521* - ID_VENDOR_FROM_DATABASE=BELL Corp - -pci:v00001522* - ID_VENDOR_FROM_DATABASE=MainPine Ltd - -pci:v00001522d00000100* - ID_PRODUCT_FROM_DATABASE=PCI <-> IOBus Bridge - -pci:v00001522d00000100sv00001522sd00000200* - ID_PRODUCT_FROM_DATABASE=RockForceDUO 2 Port V.92/V.44 Data/Fax/Voice Modem - -pci:v00001522d00000100sv00001522sd00000300* - ID_PRODUCT_FROM_DATABASE=RockForceQUATRO 4 Port V.92/V.44 Data/Fax/Voice Modem - -pci:v00001522d00000100sv00001522sd00000400* - ID_PRODUCT_FROM_DATABASE=RockForceDUO+ 2 Port V.92/V.44 Data/Fax/Voice Modem - -pci:v00001522d00000100sv00001522sd00000500* - ID_PRODUCT_FROM_DATABASE=RockForceQUATRO+ 4 Port V.92/V.44 Data/Fax/Voice Modem - -pci:v00001522d00000100sv00001522sd00000600* - ID_PRODUCT_FROM_DATABASE=RockForce+ 2 Port V.90 Data/Fax/Voice Modem - -pci:v00001522d00000100sv00001522sd00000700* - ID_PRODUCT_FROM_DATABASE=RockForce+ 4 Port V.90 Data/Fax/Voice Modem - -pci:v00001522d00000100sv00001522sd00000800* - ID_PRODUCT_FROM_DATABASE=RockForceOCTO+ 8 Port V.92/V.44 Data/Fax/Voice Modem - -pci:v00001522d00000100sv00001522sd00000C00* - ID_PRODUCT_FROM_DATABASE=RockForceDUO+ 2 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem - -pci:v00001522d00000100sv00001522sd00000D00* - ID_PRODUCT_FROM_DATABASE=RockForceQUATRO+ 4 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem - -pci:v00001522d00000100sv00001522sd00001D00* - ID_PRODUCT_FROM_DATABASE=RockForceOCTO+ 8 Port V.92/V.44 Data, V.34 Super-G3 Fax, Voice Modem - -pci:v00001522d00000100sv00001522sd00002000* - ID_PRODUCT_FROM_DATABASE=RockForceD1 1 Port V.90 Data Modem - -pci:v00001522d00000100sv00001522sd00002100* - ID_PRODUCT_FROM_DATABASE=RockForceF1 1 Port V.34 Super-G3 Fax Modem - -pci:v00001522d00000100sv00001522sd00002200* - ID_PRODUCT_FROM_DATABASE=RockForceD2 2 Port V.90 Data Modem - -pci:v00001522d00000100sv00001522sd00002300* - ID_PRODUCT_FROM_DATABASE=RockForceF2 2 Port V.34 Super-G3 Fax Modem - -pci:v00001522d00000100sv00001522sd00002400* - ID_PRODUCT_FROM_DATABASE=RockForceD4 4 Port V.90 Data Modem - -pci:v00001522d00000100sv00001522sd00002500* - ID_PRODUCT_FROM_DATABASE=RockForceF4 4 Port V.34 Super-G3 Fax Modem - -pci:v00001522d00000100sv00001522sd00002600* - ID_PRODUCT_FROM_DATABASE=RockForceD8 8 Port V.90 Data Modem - -pci:v00001522d00000100sv00001522sd00002700* - ID_PRODUCT_FROM_DATABASE=RockForceF8 8 Port V.34 Super-G3 Fax Modem - -pci:v00001522d00000100sv00001522sd00003000* - ID_PRODUCT_FROM_DATABASE=IQ Express D1 - 1 Port V.92 Data Modem - -pci:v00001522d00000100sv00001522sd00003100* - ID_PRODUCT_FROM_DATABASE=IQ Express F1 - 1 Port V.34 Super-G3 Fax Modem - -pci:v00001522d00000100sv00001522sd00003200* - ID_PRODUCT_FROM_DATABASE=IQ Express D2 - 2 Port V.92 Data Modem - -pci:v00001522d00000100sv00001522sd00003300* - ID_PRODUCT_FROM_DATABASE=IQ Express F2 - 2 Port V.34 Super-G3 Fax Modem - -pci:v00001522d00000100sv00001522sd00003400* - ID_PRODUCT_FROM_DATABASE=IQ Express D4 - 4 Port V.92 Data Modem - -pci:v00001522d00000100sv00001522sd00003500* - ID_PRODUCT_FROM_DATABASE=IQ Express F4 - 4 Port V.34 Super-G3 Fax Modem - -pci:v00001522d00000100sv00001522sd00003C00* - ID_PRODUCT_FROM_DATABASE=IQ Express D8 - 8 Port V.92 Data Modem - -pci:v00001522d00000100sv00001522sd00003D00* - ID_PRODUCT_FROM_DATABASE=IQ Express F8 - 8 Port V.34 Super-G3 Fax Modem - -pci:v00001522d00004000* - ID_PRODUCT_FROM_DATABASE=PCI Express UART - -pci:v00001522d00004000sv00001522sd00004001* - ID_PRODUCT_FROM_DATABASE=IQ Express 1-port V.34 Super-G3 Fax - -pci:v00001522d00004000sv00001522sd00004002* - ID_PRODUCT_FROM_DATABASE=IQ Express 2-port V.34 Super-G3 Fax - -pci:v00001522d00004000sv00001522sd00004004* - ID_PRODUCT_FROM_DATABASE=IQ Express 4-port V.34 Super-G3 Fax - -pci:v00001522d00004000sv00001522sd00004008* - ID_PRODUCT_FROM_DATABASE=IQ Express 8-port V.34 Super-G3 Fax - -pci:v00001522d00004000sv00001522sd00004100* - ID_PRODUCT_FROM_DATABASE=IQ Express SideBand - -pci:v00001523* - ID_VENDOR_FROM_DATABASE=MUSIC Semiconductors - -pci:v00001524* - ID_VENDOR_FROM_DATABASE=ENE Technology Inc - -pci:v00001524d00000510* - ID_PRODUCT_FROM_DATABASE=CB710 Memory Card Reader Controller - -pci:v00001524d00000510sv0000103Csd0000006A* - ID_PRODUCT_FROM_DATABASE=NX9500 - -pci:v00001524d00000520* - ID_PRODUCT_FROM_DATABASE=FLASH memory: ENE Technology Inc: - -pci:v00001524d00000530* - ID_PRODUCT_FROM_DATABASE=ENE PCI Memory Stick Card Reader Controller - -pci:v00001524d00000550* - ID_PRODUCT_FROM_DATABASE=ENE PCI Secure Digital Card Reader Controller - -pci:v00001524d00000551* - ID_PRODUCT_FROM_DATABASE=SD/MMC Card Reader Controller - -pci:v00001524d00000610* - ID_PRODUCT_FROM_DATABASE=PCI Smart Card Reader Controller - -pci:v00001524d00000720* - ID_PRODUCT_FROM_DATABASE=Memory Stick Card Reader Controller - -pci:v00001524d00000730* - ID_PRODUCT_FROM_DATABASE=ENE PCI Memory Stick Card Reader Controller - -pci:v00001524d00000750* - ID_PRODUCT_FROM_DATABASE=ENE PCI SmartMedia / xD Card Reader Controller - -pci:v00001524d00000751* - ID_PRODUCT_FROM_DATABASE=ENE PCI Secure Digital / MMC Card Reader Controller - -pci:v00001524d00001211* - ID_PRODUCT_FROM_DATABASE=CB1211 Cardbus Controller - -pci:v00001524d00001225* - ID_PRODUCT_FROM_DATABASE=CB1225 Cardbus Controller - -pci:v00001524d00001410* - ID_PRODUCT_FROM_DATABASE=CB1410 Cardbus Controller - -pci:v00001524d00001410sv00001025sd0000003C* - ID_PRODUCT_FROM_DATABASE=CL50 motherboard - -pci:v00001524d00001410sv00001025sd0000005A* - ID_PRODUCT_FROM_DATABASE=TravelMate 290 - -pci:v00001524d00001411* - ID_PRODUCT_FROM_DATABASE=CB-710/2/4 Cardbus Controller - -pci:v00001524d00001411sv0000103Csd0000006A* - ID_PRODUCT_FROM_DATABASE=NX9500 - -pci:v00001524d00001412* - ID_PRODUCT_FROM_DATABASE=CB-712/4 Cardbus Controller - -pci:v00001524d00001420* - ID_PRODUCT_FROM_DATABASE=CB1420 Cardbus Controller - -pci:v00001524d00001421* - ID_PRODUCT_FROM_DATABASE=CB-720/2/4 Cardbus Controller - -pci:v00001524d00001422* - ID_PRODUCT_FROM_DATABASE=CB-722/4 Cardbus Controller - -pci:v00001525* - ID_VENDOR_FROM_DATABASE=IMPACT Technologies - -pci:v00001526* - ID_VENDOR_FROM_DATABASE=ISS, Inc - -pci:v00001527* - ID_VENDOR_FROM_DATABASE=SOLECTRON - -pci:v00001528* - ID_VENDOR_FROM_DATABASE=ACKSYS - -pci:v00001529* - ID_VENDOR_FROM_DATABASE=AMERICAN MICROSystems Inc - -pci:v0000152A* - ID_VENDOR_FROM_DATABASE=QUICKTURN DESIGN Systems - -pci:v0000152B* - ID_VENDOR_FROM_DATABASE=FLYTECH Technology CO Ltd - -pci:v0000152C* - ID_VENDOR_FROM_DATABASE=MACRAIGOR Systems LLC - -pci:v0000152D* - ID_VENDOR_FROM_DATABASE=QUANTA Computer Inc - -pci:v0000152E* - ID_VENDOR_FROM_DATABASE=MELEC Inc - -pci:v0000152F* - ID_VENDOR_FROM_DATABASE=PHILIPS - CRYPTO - -pci:v00001530* - ID_VENDOR_FROM_DATABASE=ACQIS Technology Inc - -pci:v00001531* - ID_VENDOR_FROM_DATABASE=CHRYON Corp - -pci:v00001532* - ID_VENDOR_FROM_DATABASE=ECHELON Corp - -pci:v00001532d00000020* - ID_PRODUCT_FROM_DATABASE=LonWorks PCLTA-20 PCI LonTalk Adapter - -pci:v00001533* - ID_VENDOR_FROM_DATABASE=BALTIMORE - -pci:v00001534* - ID_VENDOR_FROM_DATABASE=ROAD Corp - -pci:v00001535* - ID_VENDOR_FROM_DATABASE=EVERGREEN Technologies Inc - -pci:v00001536* - ID_VENDOR_FROM_DATABASE=ACTIS Computer - -pci:v00001537* - ID_VENDOR_FROM_DATABASE=DATALEX COMMUNCATIONS - -pci:v00001538* - ID_VENDOR_FROM_DATABASE=ARALION Inc - -pci:v00001538d00000303* - ID_PRODUCT_FROM_DATABASE=ARS106S Ultra ATA 133/100/66 Host Controller - -pci:v00001539* - ID_VENDOR_FROM_DATABASE=ATELIER INFORMATIQUES et ELECTRONIQUE ETUDES S.A. - -pci:v0000153A* - ID_VENDOR_FROM_DATABASE=ONO SOKKI - -pci:v0000153B* - ID_VENDOR_FROM_DATABASE=TERRATEC Electronic GmbH - -pci:v0000153Bd00001144* - ID_PRODUCT_FROM_DATABASE=Aureon 5.1 - -pci:v0000153Bd00001147* - ID_PRODUCT_FROM_DATABASE=Aureon 5.1 Sky - -pci:v0000153Bd00001158* - ID_PRODUCT_FROM_DATABASE=Philips Semiconductors SAA7134 (rev 01) [Terratec Cinergy 600 TV] - -pci:v0000153C* - ID_VENDOR_FROM_DATABASE=ANTAL Electronic - -pci:v0000153D* - ID_VENDOR_FROM_DATABASE=FILANET Corp - -pci:v0000153E* - ID_VENDOR_FROM_DATABASE=TECHWELL Inc - -pci:v0000153F* - ID_VENDOR_FROM_DATABASE=MIPS Technologies, Inc. - -pci:v0000153Fd00000001* - ID_PRODUCT_FROM_DATABASE=SOC-it 101 System Controller - -pci:v00001540* - ID_VENDOR_FROM_DATABASE=PROVIDEO MULTIMEDIA Co Ltd - -pci:v00001541* - ID_VENDOR_FROM_DATABASE=MACHONE Communications - -pci:v00001542* - ID_VENDOR_FROM_DATABASE=Concurrent Computer Corporation - -pci:v00001542d00009260* - ID_PRODUCT_FROM_DATABASE=RCIM-II Real-Time Clock & Interrupt Module - -pci:v00001543* - ID_VENDOR_FROM_DATABASE=SILICON Laboratories - -pci:v00001543d00003052* - ID_PRODUCT_FROM_DATABASE=Intel 537 [Winmodem] - -pci:v00001543d00004C22* - ID_PRODUCT_FROM_DATABASE=Si3036 MC'97 DAA - -pci:v00001544* - ID_VENDOR_FROM_DATABASE=DCM DATA Systems - -pci:v00001545* - ID_VENDOR_FROM_DATABASE=VISIONTEK - -pci:v00001546* - ID_VENDOR_FROM_DATABASE=IOI Technology Corp - -pci:v00001547* - ID_VENDOR_FROM_DATABASE=MITUTOYO Corp - -pci:v00001548* - ID_VENDOR_FROM_DATABASE=JET PROPULSION Laboratory - -pci:v00001549* - ID_VENDOR_FROM_DATABASE=INTERCONNECT Systems Solutions - -pci:v0000154A* - ID_VENDOR_FROM_DATABASE=MAX Technologies Inc - -pci:v0000154B* - ID_VENDOR_FROM_DATABASE=COMPUTEX Co Ltd - -pci:v0000154C* - ID_VENDOR_FROM_DATABASE=VISUAL Technology Inc - -pci:v0000154D* - ID_VENDOR_FROM_DATABASE=PAN INTERNATIONAL Industrial Corp - -pci:v0000154E* - ID_VENDOR_FROM_DATABASE=SERVOTEST Ltd - -pci:v0000154F* - ID_VENDOR_FROM_DATABASE=STRATABEAM Technology - -pci:v00001550* - ID_VENDOR_FROM_DATABASE=OPEN NETWORK Co Ltd - -pci:v00001551* - ID_VENDOR_FROM_DATABASE=SMART Electronic DEVELOPMENT GmBH - -pci:v00001552* - ID_VENDOR_FROM_DATABASE=RACAL AIRTECH Ltd - -pci:v00001553* - ID_VENDOR_FROM_DATABASE=CHICONY Electronics Co Ltd - -pci:v00001554* - ID_VENDOR_FROM_DATABASE=PROLINK Microsystems Corp - -pci:v00001555* - ID_VENDOR_FROM_DATABASE=GESYTEC GmBH - -pci:v00001556* - ID_VENDOR_FROM_DATABASE=PLD APPLICATIONS - -pci:v00001557* - ID_VENDOR_FROM_DATABASE=MEDIASTAR Co Ltd - -pci:v00001558* - ID_VENDOR_FROM_DATABASE=CLEVO/KAPOK Computer - -pci:v00001559* - ID_VENDOR_FROM_DATABASE=SI LOGIC Ltd - -pci:v0000155A* - ID_VENDOR_FROM_DATABASE=INNOMEDIA Inc - -pci:v0000155B* - ID_VENDOR_FROM_DATABASE=PROTAC INTERNATIONAL Corp - -pci:v0000155C* - ID_VENDOR_FROM_DATABASE=Cemax-Icon Inc - -pci:v0000155D* - ID_VENDOR_FROM_DATABASE=Mac System Co Ltd - -pci:v0000155E* - ID_VENDOR_FROM_DATABASE=LP Elektronik GmbH - -pci:v0000155F* - ID_VENDOR_FROM_DATABASE=Perle Systems Ltd - -pci:v00001560* - ID_VENDOR_FROM_DATABASE=Terayon Communications Systems - -pci:v00001561* - ID_VENDOR_FROM_DATABASE=Viewgraphics Inc - -pci:v00001562* - ID_VENDOR_FROM_DATABASE=Symbol Technologies - -pci:v00001563* - ID_VENDOR_FROM_DATABASE=A-Trend Technology Co Ltd - -pci:v00001564* - ID_VENDOR_FROM_DATABASE=Yamakatsu Electronics Industry Co Ltd - -pci:v00001565* - ID_VENDOR_FROM_DATABASE=Biostar Microtech Int'l Corp - -pci:v00001566* - ID_VENDOR_FROM_DATABASE=Ardent Technologies Inc - -pci:v00001567* - ID_VENDOR_FROM_DATABASE=Jungsoft - -pci:v00001568* - ID_VENDOR_FROM_DATABASE=DDK Electronics Inc - -pci:v00001569* - ID_VENDOR_FROM_DATABASE=Palit Microsystems Inc. - -pci:v0000156A* - ID_VENDOR_FROM_DATABASE=Avtec Systems - -pci:v0000156B* - ID_VENDOR_FROM_DATABASE=2wire Inc - -pci:v0000156C* - ID_VENDOR_FROM_DATABASE=Vidac Electronics GmbH - -pci:v0000156D* - ID_VENDOR_FROM_DATABASE=Alpha-Top Corp - -pci:v0000156E* - ID_VENDOR_FROM_DATABASE=Alfa Inc - -pci:v0000156F* - ID_VENDOR_FROM_DATABASE=M-Systems Flash Disk Pioneers Ltd - -pci:v00001570* - ID_VENDOR_FROM_DATABASE=Lecroy Corp - -pci:v00001571* - ID_VENDOR_FROM_DATABASE=Contemporary Controls - -pci:v00001571d0000A001* - ID_PRODUCT_FROM_DATABASE=CCSI PCI20-485 ARCnet - -pci:v00001571d0000A002* - ID_PRODUCT_FROM_DATABASE=CCSI PCI20-485D ARCnet - -pci:v00001571d0000A003* - ID_PRODUCT_FROM_DATABASE=CCSI PCI20-485X ARCnet - -pci:v00001571d0000A004* - ID_PRODUCT_FROM_DATABASE=CCSI PCI20-CXB ARCnet - -pci:v00001571d0000A005* - ID_PRODUCT_FROM_DATABASE=CCSI PCI20-CXS ARCnet - -pci:v00001571d0000A006* - ID_PRODUCT_FROM_DATABASE=CCSI PCI20-FOG-SMA ARCnet - -pci:v00001571d0000A007* - ID_PRODUCT_FROM_DATABASE=CCSI PCI20-FOG-ST ARCnet - -pci:v00001571d0000A008* - ID_PRODUCT_FROM_DATABASE=CCSI PCI20-TB5 ARCnet - -pci:v00001571d0000A009* - ID_PRODUCT_FROM_DATABASE=CCSI PCI20-5-485 5Mbit ARCnet - -pci:v00001571d0000A00A* - ID_PRODUCT_FROM_DATABASE=CCSI PCI20-5-485D 5Mbit ARCnet - -pci:v00001571d0000A00B* - ID_PRODUCT_FROM_DATABASE=CCSI PCI20-5-485X 5Mbit ARCnet - -pci:v00001571d0000A00C* - ID_PRODUCT_FROM_DATABASE=CCSI PCI20-5-FOG-ST 5Mbit ARCnet - -pci:v00001571d0000A00D* - ID_PRODUCT_FROM_DATABASE=CCSI PCI20-5-FOG-SMA 5Mbit ARCnet - -pci:v00001571d0000A201* - ID_PRODUCT_FROM_DATABASE=CCSI PCI22-485 10Mbit ARCnet - -pci:v00001571d0000A202* - ID_PRODUCT_FROM_DATABASE=CCSI PCI22-485D 10Mbit ARCnet - -pci:v00001571d0000A203* - ID_PRODUCT_FROM_DATABASE=CCSI PCI22-485X 10Mbit ARCnet - -pci:v00001571d0000A204* - ID_PRODUCT_FROM_DATABASE=CCSI PCI22-CHB 10Mbit ARCnet - -pci:v00001571d0000A205* - ID_PRODUCT_FROM_DATABASE=CCSI PCI22-FOG_ST 10Mbit ARCnet - -pci:v00001571d0000A206* - ID_PRODUCT_FROM_DATABASE=CCSI PCI22-THB 10Mbit ARCnet - -pci:v00001572* - ID_VENDOR_FROM_DATABASE=Otis Elevator Company - -pci:v00001573* - ID_VENDOR_FROM_DATABASE=Lattice - Vantis - -pci:v00001574* - ID_VENDOR_FROM_DATABASE=Fairchild Semiconductor - -pci:v00001575* - ID_VENDOR_FROM_DATABASE=Voltaire Advanced Data Security Ltd - -pci:v00001576* - ID_VENDOR_FROM_DATABASE=Viewcast COM - -pci:v00001578* - ID_VENDOR_FROM_DATABASE=HITT - -pci:v00001578d00004D34* - ID_PRODUCT_FROM_DATABASE=VPMK4 [Video Processor Mk IV] - -pci:v00001578d00005615* - ID_PRODUCT_FROM_DATABASE=VPMK3 [Video Processor Mk III] - -pci:v00001579* - ID_VENDOR_FROM_DATABASE=Dual Technology Corp - -pci:v0000157A* - ID_VENDOR_FROM_DATABASE=Japan Elecronics Ind Inc - -pci:v0000157B* - ID_VENDOR_FROM_DATABASE=Star Multimedia Corp - -pci:v0000157C* - ID_VENDOR_FROM_DATABASE=Eurosoft (UK) - -pci:v0000157Cd00008001* - ID_PRODUCT_FROM_DATABASE=Fix2000 PCI Y2K Compliance Card - -pci:v0000157D* - ID_VENDOR_FROM_DATABASE=Gemflex Networks - -pci:v0000157E* - ID_VENDOR_FROM_DATABASE=Transition Networks - -pci:v0000157F* - ID_VENDOR_FROM_DATABASE=PX Instruments Technology Ltd - -pci:v00001580* - ID_VENDOR_FROM_DATABASE=Primex Aerospace Co - -pci:v00001581* - ID_VENDOR_FROM_DATABASE=SEH Computertechnik GmbH - -pci:v00001582* - ID_VENDOR_FROM_DATABASE=Cytec Corp - -pci:v00001583* - ID_VENDOR_FROM_DATABASE=Inet Technologies Inc - -pci:v00001584* - ID_VENDOR_FROM_DATABASE=Uniwill Computer Corp - -pci:v00001585* - ID_VENDOR_FROM_DATABASE=Logitron - -pci:v00001586* - ID_VENDOR_FROM_DATABASE=Lancast Inc - -pci:v00001587* - ID_VENDOR_FROM_DATABASE=Konica Corp - -pci:v00001588* - ID_VENDOR_FROM_DATABASE=Solidum Systems Corp - -pci:v00001589* - ID_VENDOR_FROM_DATABASE=Atlantek Microsystems Pty Ltd - -pci:v00001589d00000008* - ID_PRODUCT_FROM_DATABASE=Leutron Vision PicPortExpress CL - -pci:v00001589d00000009* - ID_PRODUCT_FROM_DATABASE=Leutron Vision PicPortExpress CL Stereo - -pci:v0000158A* - ID_VENDOR_FROM_DATABASE=Digalog Systems Inc - -pci:v0000158B* - ID_VENDOR_FROM_DATABASE=Allied Data Technologies - -pci:v0000158C* - ID_VENDOR_FROM_DATABASE=Hitachi Semiconductor & Devices Sales Co Ltd - -pci:v0000158D* - ID_VENDOR_FROM_DATABASE=Point Multimedia Systems - -pci:v0000158E* - ID_VENDOR_FROM_DATABASE=Lara Technology Inc - -pci:v0000158F* - ID_VENDOR_FROM_DATABASE=Ditect Coop - -pci:v00001590* - ID_VENDOR_FROM_DATABASE=Hewlett-Packard Company - -pci:v00001590d00000001* - ID_PRODUCT_FROM_DATABASE=Eagle Cluster Manager - -pci:v00001590d00000002* - ID_PRODUCT_FROM_DATABASE=Osprey Cluster Manager - -pci:v00001590d00000003* - ID_PRODUCT_FROM_DATABASE=Harrier Cluster Manager - -pci:v00001590d0000A01D* - ID_PRODUCT_FROM_DATABASE=FC044X Fibre Channel HBA - -pci:v00001591* - ID_VENDOR_FROM_DATABASE=ARN - -pci:v00001592* - ID_VENDOR_FROM_DATABASE=Syba Tech Ltd - -pci:v00001592d00000781* - ID_PRODUCT_FROM_DATABASE=Multi-IO Card - -pci:v00001592d00000782* - ID_PRODUCT_FROM_DATABASE=Parallel Port Card 2xEPP - -pci:v00001592d00000783* - ID_PRODUCT_FROM_DATABASE=Multi-IO Card - -pci:v00001592d00000785* - ID_PRODUCT_FROM_DATABASE=Multi-IO Card - -pci:v00001592d00000786* - ID_PRODUCT_FROM_DATABASE=Multi-IO Card - -pci:v00001592d00000787* - ID_PRODUCT_FROM_DATABASE=Multi-IO Card - -pci:v00001592d00000788* - ID_PRODUCT_FROM_DATABASE=Multi-IO Card - -pci:v00001592d0000078A* - ID_PRODUCT_FROM_DATABASE=Multi-IO Card - -pci:v00001593* - ID_VENDOR_FROM_DATABASE=Bops Inc - -pci:v00001594* - ID_VENDOR_FROM_DATABASE=Netgame Ltd - -pci:v00001595* - ID_VENDOR_FROM_DATABASE=Diva Systems Corp - -pci:v00001596* - ID_VENDOR_FROM_DATABASE=Folsom Research Inc - -pci:v00001597* - ID_VENDOR_FROM_DATABASE=Memec Design Services - -pci:v00001598* - ID_VENDOR_FROM_DATABASE=Granite Microsystems - -pci:v00001599* - ID_VENDOR_FROM_DATABASE=Delta Electronics Inc - -pci:v0000159A* - ID_VENDOR_FROM_DATABASE=General Instrument - -pci:v0000159B* - ID_VENDOR_FROM_DATABASE=Faraday Technology Corp - -pci:v0000159C* - ID_VENDOR_FROM_DATABASE=Stratus Computer Systems - -pci:v0000159D* - ID_VENDOR_FROM_DATABASE=Ningbo Harrison Electronics Co Ltd - -pci:v0000159E* - ID_VENDOR_FROM_DATABASE=A-Max Technology Co Ltd - -pci:v0000159F* - ID_VENDOR_FROM_DATABASE=Galea Network Security - -pci:v000015A0* - ID_VENDOR_FROM_DATABASE=Compumaster SRL - -pci:v000015A1* - ID_VENDOR_FROM_DATABASE=Geocast Network Systems - -pci:v000015A2* - ID_VENDOR_FROM_DATABASE=Catalyst Enterprises Inc - -pci:v000015A2d00000001* - ID_PRODUCT_FROM_DATABASE=TA700 PCI Bus Analyzer/Exerciser - -pci:v000015A3* - ID_VENDOR_FROM_DATABASE=Italtel - -pci:v000015A4* - ID_VENDOR_FROM_DATABASE=X-Net OY - -pci:v000015A5* - ID_VENDOR_FROM_DATABASE=Toyota Macs Inc - -pci:v000015A6* - ID_VENDOR_FROM_DATABASE=Sunlight Ultrasound Technologies Ltd - -pci:v000015A7* - ID_VENDOR_FROM_DATABASE=SSE Telecom Inc - -pci:v000015A8* - ID_VENDOR_FROM_DATABASE=Shanghai Communications Technologies Center - -pci:v000015AA* - ID_VENDOR_FROM_DATABASE=Moreton Bay - -pci:v000015AB* - ID_VENDOR_FROM_DATABASE=Bluesteel Networks Inc - -pci:v000015AC* - ID_VENDOR_FROM_DATABASE=North Atlantic Instruments - -pci:v000015AD* - ID_VENDOR_FROM_DATABASE=VMware - -pci:v000015ADd00000405* - ID_PRODUCT_FROM_DATABASE=SVGA II Adapter - -pci:v000015ADd00000710* - ID_PRODUCT_FROM_DATABASE=SVGA Adapter - -pci:v000015ADd00000720* - ID_PRODUCT_FROM_DATABASE=VMXNET Ethernet Controller - -pci:v000015ADd00000740* - ID_PRODUCT_FROM_DATABASE=Virtual Machine Communication Interface - -pci:v000015ADd00000770* - ID_PRODUCT_FROM_DATABASE=USB2 EHCI Controller - -pci:v000015ADd00000774* - ID_PRODUCT_FROM_DATABASE=USB1.1 UHCI Controller - -pci:v000015ADd00000778* - ID_PRODUCT_FROM_DATABASE=USB3 xHCI Controller - -pci:v000015ADd00000790* - ID_PRODUCT_FROM_DATABASE=PCI bridge - -pci:v000015ADd000007A0* - ID_PRODUCT_FROM_DATABASE=PCI Express Root Port - -pci:v000015ADd000007B0* - ID_PRODUCT_FROM_DATABASE=VMXNET3 Ethernet Controller - -pci:v000015ADd000007C0* - ID_PRODUCT_FROM_DATABASE=PVSCSI SCSI Controller - -pci:v000015ADd00000801* - ID_PRODUCT_FROM_DATABASE=Virtual Machine Interface - -pci:v000015ADd00000801sv000015ADsd00000800* - ID_PRODUCT_FROM_DATABASE=Hypervisor ROM Interface - -pci:v000015ADd00001977* - ID_PRODUCT_FROM_DATABASE=HD Audio Controller - -pci:v000015AE* - ID_VENDOR_FROM_DATABASE=Amersham Pharmacia Biotech - -pci:v000015B0* - ID_VENDOR_FROM_DATABASE=Zoltrix International Ltd - -pci:v000015B1* - ID_VENDOR_FROM_DATABASE=Source Technology Inc - -pci:v000015B2* - ID_VENDOR_FROM_DATABASE=Mosaid Technologies Inc - -pci:v000015B3* - ID_VENDOR_FROM_DATABASE=Mellanox Technologies - -pci:v000015B3d00000191* - ID_PRODUCT_FROM_DATABASE=MT25408 [ConnectX IB Flash Recovery] - -pci:v000015B3d000001F6* - ID_PRODUCT_FROM_DATABASE=MT27500 Family [ConnectX-3 Flash Recovery] - -pci:v000015B3d000001FF* - ID_PRODUCT_FROM_DATABASE=MT27600 Family [Connect-IB Flash Recovery] - -pci:v000015B3d00001002* - ID_PRODUCT_FROM_DATABASE=MT25400 Family [ConnectX-2 Virtual Function] - -pci:v000015B3d00001003* - ID_PRODUCT_FROM_DATABASE=MT27500 Family [ConnectX-3] - -pci:v000015B3d00001004* - ID_PRODUCT_FROM_DATABASE=MT27500 Family [ConnectX-3 Virtual Function] - -pci:v000015B3d00001005* - ID_PRODUCT_FROM_DATABASE=MT27510 Family - -pci:v000015B3d00001006* - ID_PRODUCT_FROM_DATABASE=MT27511 Family - -pci:v000015B3d00001007* - ID_PRODUCT_FROM_DATABASE=MT27520 Family [ConnectX-3 Pro] - -pci:v000015B3d00001008* - ID_PRODUCT_FROM_DATABASE=MT27520 Family [ConnectX-3 Pro Virtual Function] - -pci:v000015B3d00001009* - ID_PRODUCT_FROM_DATABASE=MT27530 Family - -pci:v000015B3d0000100A* - ID_PRODUCT_FROM_DATABASE=MT27531 Family - -pci:v000015B3d0000100B* - ID_PRODUCT_FROM_DATABASE=MT27540 Family - -pci:v000015B3d0000100C* - ID_PRODUCT_FROM_DATABASE=MT27541 Family - -pci:v000015B3d0000100D* - ID_PRODUCT_FROM_DATABASE=MT27550 Family - -pci:v000015B3d0000100E* - ID_PRODUCT_FROM_DATABASE=MT27551 Family - -pci:v000015B3d0000100F* - ID_PRODUCT_FROM_DATABASE=MT27560 Family - -pci:v000015B3d00001010* - ID_PRODUCT_FROM_DATABASE=MT27561 Family - -pci:v000015B3d00001011* - ID_PRODUCT_FROM_DATABASE=MT27600 [Connect-IB] - -pci:v000015B3d00001012* - ID_PRODUCT_FROM_DATABASE=MT27600 Family [Connect-IB Virtual Function] - -pci:v000015B3d00001013* - ID_PRODUCT_FROM_DATABASE=MT27620 Family - -pci:v000015B3d00001014* - ID_PRODUCT_FROM_DATABASE=MT27621 Family - -pci:v000015B3d00001015* - ID_PRODUCT_FROM_DATABASE=MT27630 Family - -pci:v000015B3d00001016* - ID_PRODUCT_FROM_DATABASE=MT27631 Family - -pci:v000015B3d00005274* - ID_PRODUCT_FROM_DATABASE=MT21108 InfiniBridge - -pci:v000015B3d00005A44* - ID_PRODUCT_FROM_DATABASE=MT23108 InfiniHost - -pci:v000015B3d00005A45* - ID_PRODUCT_FROM_DATABASE=MT23108 [Infinihost HCA Flash Recovery] - -pci:v000015B3d00005A46* - ID_PRODUCT_FROM_DATABASE=MT23108 PCI Bridge - -pci:v000015B3d00005E8C* - ID_PRODUCT_FROM_DATABASE=MT24204 [InfiniHost III Lx HCA] - -pci:v000015B3d00005E8D* - ID_PRODUCT_FROM_DATABASE=MT25204 [InfiniHost III Lx HCA Flash Recovery] - -pci:v000015B3d00006274* - ID_PRODUCT_FROM_DATABASE=MT25204 [InfiniHost III Lx HCA] - -pci:v000015B3d00006278* - ID_PRODUCT_FROM_DATABASE=MT25208 InfiniHost III Ex (Tavor compatibility mode) - -pci:v000015B3d00006279* - ID_PRODUCT_FROM_DATABASE=MT25208 [InfiniHost III Ex HCA Flash Recovery] - -pci:v000015B3d00006282* - ID_PRODUCT_FROM_DATABASE=MT25208 [InfiniHost III Ex] - -pci:v000015B3d00006340* - ID_PRODUCT_FROM_DATABASE=MT25408 [ConnectX VPI - IB SDR / 10GigE] - -pci:v000015B3d0000634A* - ID_PRODUCT_FROM_DATABASE=MT25418 [ConnectX VPI PCIe 2.0 2.5GT/s - IB DDR / 10GigE] - -pci:v000015B3d00006368* - ID_PRODUCT_FROM_DATABASE=MT25448 [ConnectX EN 10GigE, PCIe 2.0 2.5GT/s] - -pci:v000015B3d00006372* - ID_PRODUCT_FROM_DATABASE=MT25408 [ConnectX EN 10GigE 10GBaseT, PCIe 2.0 2.5GT/s] - -pci:v000015B3d00006732* - ID_PRODUCT_FROM_DATABASE=MT26418 [ConnectX VPI PCIe 2.0 5GT/s - IB DDR / 10GigE] - -pci:v000015B3d0000673C* - ID_PRODUCT_FROM_DATABASE=MT26428 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE] - -pci:v000015B3d00006746* - ID_PRODUCT_FROM_DATABASE=MT26438 [ConnectX VPI PCIe 2.0 5GT/s - IB QDR / 10GigE Virtualization+] - -pci:v000015B3d00006746sv0000103Csd00001781* - ID_PRODUCT_FROM_DATABASE=NC543i 1-port 4x QDR IB/Flex-10 10Gb Adapter - -pci:v000015B3d00006746sv0000103Csd00003349* - ID_PRODUCT_FROM_DATABASE=NC543i 2-port 4xQDR IB/10Gb Adapter - -pci:v000015B3d00006750* - ID_PRODUCT_FROM_DATABASE=MT26448 [ConnectX EN 10GigE, PCIe 2.0 5GT/s] - -pci:v000015B3d0000675A* - ID_PRODUCT_FROM_DATABASE=MT25408 [ConnectX EN 10GigE 10GBaseT, PCIe Gen2 5GT/s] - -pci:v000015B3d00006764* - ID_PRODUCT_FROM_DATABASE=MT26468 [ConnectX EN 10GigE, PCIe 2.0 5GT/s Virtualization+] - -pci:v000015B3d00006764sv0000103Csd00003313* - ID_PRODUCT_FROM_DATABASE=HP NC542m Dual Port Flex-10 10GbE BLc Adapter - -pci:v000015B3d0000676E* - ID_PRODUCT_FROM_DATABASE=MT26478 [ConnectX EN 40GigE, PCIe 2.0 5GT/s] - -pci:v000015B3d00006778* - ID_PRODUCT_FROM_DATABASE=MT26488 [ConnectX VPI PCIe 2.0 5GT/s - IB DDR / 10GigE Virtualization+] - -pci:v000015B4* - ID_VENDOR_FROM_DATABASE=CCI/TRIAD - -pci:v000015B5* - ID_VENDOR_FROM_DATABASE=Cimetrics Inc - -pci:v000015B6* - ID_VENDOR_FROM_DATABASE=Texas Memory Systems Inc - -pci:v000015B6d00000001* - ID_PRODUCT_FROM_DATABASE=XP15 DSP Accelerator - -pci:v000015B6d00000002* - ID_PRODUCT_FROM_DATABASE=XP30 DSP Accelerator - -pci:v000015B6d00000003* - ID_PRODUCT_FROM_DATABASE=XP00 Data Acquisition Device - -pci:v000015B6d00000004* - ID_PRODUCT_FROM_DATABASE=XP35 DSP Accelerator - -pci:v000015B6d00000007* - ID_PRODUCT_FROM_DATABASE=XP100 DSP Accelerator [XP100-T0] - -pci:v000015B6d00000008* - ID_PRODUCT_FROM_DATABASE=XP100 DSP Accelerator [XP100-T1] - -pci:v000015B6d00000009* - ID_PRODUCT_FROM_DATABASE=XP100 DSP Accelerator [XP100-E0] - -pci:v000015B6d0000000A* - ID_PRODUCT_FROM_DATABASE=XP100 DSP Accelerator [XP100-E1] - -pci:v000015B6d0000000E* - ID_PRODUCT_FROM_DATABASE=XP100 DSP Accelerator [XP100-0] - -pci:v000015B6d0000000F* - ID_PRODUCT_FROM_DATABASE=XP100 DSP Accelerator [XP100-1] - -pci:v000015B6d00000010* - ID_PRODUCT_FROM_DATABASE=XP100 DSP Accelerator [XP100-P0] - -pci:v000015B6d00000011* - ID_PRODUCT_FROM_DATABASE=XP100 DSP Accelerator [XP100-P1] - -pci:v000015B6d00000012* - ID_PRODUCT_FROM_DATABASE=XP100 DSP Accelerator [XP100-P2] - -pci:v000015B6d00000013* - ID_PRODUCT_FROM_DATABASE=XP100 DSP Accelerator [XP100-P3] - -pci:v000015B6d00000014* - ID_PRODUCT_FROM_DATABASE=RamSan Flash SSD - -pci:v000015B6d00000015* - ID_PRODUCT_FROM_DATABASE=ZBox - -pci:v000015B7* - ID_VENDOR_FROM_DATABASE=Sandisk Corp - -pci:v000015B8* - ID_VENDOR_FROM_DATABASE=ADDI-DATA GmbH - -pci:v000015B8d00001001* - ID_PRODUCT_FROM_DATABASE=APCI1516 SP controller (16 digi outputs) - -pci:v000015B8d00001003* - ID_PRODUCT_FROM_DATABASE=APCI1032 SP controller (32 digi inputs w/ opto coupler) - -pci:v000015B8d00001004* - ID_PRODUCT_FROM_DATABASE=APCI2032 SP controller (32 digi outputs) - -pci:v000015B8d00001005* - ID_PRODUCT_FROM_DATABASE=APCI2200 SP controller (8/16 digi outputs (relay)) - -pci:v000015B8d00001006* - ID_PRODUCT_FROM_DATABASE=APCI1564 SP controller (32 digi ins, 32 digi outs) - -pci:v000015B8d0000100A* - ID_PRODUCT_FROM_DATABASE=APCI1696 SP controller (96 TTL I/Os) - -pci:v000015B8d00003001* - ID_PRODUCT_FROM_DATABASE=APCI3501 SP controller (analog output board) - -pci:v000015B8d0000300F* - ID_PRODUCT_FROM_DATABASE=APCI3600 Noise and vibration measurement board - -pci:v000015B8d00007001* - ID_PRODUCT_FROM_DATABASE=APCI7420 2-port Serial Controller - -pci:v000015B8d00007002* - ID_PRODUCT_FROM_DATABASE=APCI7300 Serial Controller - -pci:v000015B9* - ID_VENDOR_FROM_DATABASE=Maestro Digital Communications - -pci:v000015BA* - ID_VENDOR_FROM_DATABASE=Impacct Technology Corp - -pci:v000015BB* - ID_VENDOR_FROM_DATABASE=Portwell Inc - -pci:v000015BC* - ID_VENDOR_FROM_DATABASE=Agilent Technologies - -pci:v000015BCd00000100* - ID_PRODUCT_FROM_DATABASE=HPFC-5600 Tachyon DX2+ FC - -pci:v000015BCd00000103* - ID_PRODUCT_FROM_DATABASE=QX4 PCI Express quad 4-gigabit Fibre Channel controller - -pci:v000015BCd00000105* - ID_PRODUCT_FROM_DATABASE=Celerity FC-42XS Fibre Channel Adapter - -pci:v000015BCd00000105sv0000117Csd00000022* - ID_PRODUCT_FROM_DATABASE=Celerity FC-42XS Fibre Channel Adapter - -pci:v000015BCd00001100* - ID_PRODUCT_FROM_DATABASE=E8001-66442 PCI Express CIC - -pci:v000015BCd00002922* - ID_PRODUCT_FROM_DATABASE=64 Bit, 133MHz PCI-X Exerciser & Protocol Checker - -pci:v000015BCd00002928* - ID_PRODUCT_FROM_DATABASE=64 Bit, 66MHz PCI Exerciser & Analyzer - -pci:v000015BCd00002929* - ID_PRODUCT_FROM_DATABASE=64 Bit, 133MHz PCI-X Analyzer & Exerciser - -pci:v000015BD* - ID_VENDOR_FROM_DATABASE=DFI Inc - -pci:v000015BE* - ID_VENDOR_FROM_DATABASE=Sola Electronics - -pci:v000015BF* - ID_VENDOR_FROM_DATABASE=High Tech Computer Corp (HTC) - -pci:v000015C0* - ID_VENDOR_FROM_DATABASE=BVM Ltd - -pci:v000015C1* - ID_VENDOR_FROM_DATABASE=Quantel - -pci:v000015C2* - ID_VENDOR_FROM_DATABASE=Newer Technology Inc - -pci:v000015C3* - ID_VENDOR_FROM_DATABASE=Taiwan Mycomp Co Ltd - -pci:v000015C4* - ID_VENDOR_FROM_DATABASE=EVSX Inc - -pci:v000015C5* - ID_VENDOR_FROM_DATABASE=Procomp Informatics Ltd - -pci:v000015C5d00008010* - ID_PRODUCT_FROM_DATABASE=1394b - 1394 Firewire 3-Port Host Adapter Card - -pci:v000015C6* - ID_VENDOR_FROM_DATABASE=Technical University of Budapest - -pci:v000015C7* - ID_VENDOR_FROM_DATABASE=Tateyama System Laboratory Co Ltd - -pci:v000015C7d00000349* - ID_PRODUCT_FROM_DATABASE=Tateyama C-PCI PLC/NC card Rev.01A - -pci:v000015C8* - ID_VENDOR_FROM_DATABASE=Penta Media Co Ltd - -pci:v000015C9* - ID_VENDOR_FROM_DATABASE=Serome Technology Inc - -pci:v000015CA* - ID_VENDOR_FROM_DATABASE=Bitboys OY - -pci:v000015CB* - ID_VENDOR_FROM_DATABASE=AG Electronics Ltd - -pci:v000015CC* - ID_VENDOR_FROM_DATABASE=Hotrail Inc - -pci:v000015CD* - ID_VENDOR_FROM_DATABASE=Dreamtech Co Ltd - -pci:v000015CE* - ID_VENDOR_FROM_DATABASE=Genrad Inc - -pci:v000015CF* - ID_VENDOR_FROM_DATABASE=Hilscher GmbH - -pci:v000015CFd00000000* - ID_PRODUCT_FROM_DATABASE=CIFX 50E-DP(M/S) - -pci:v000015D1* - ID_VENDOR_FROM_DATABASE=Infineon Technologies AG - -pci:v000015D2* - ID_VENDOR_FROM_DATABASE=FIC (First International Computer Inc) - -pci:v000015D3* - ID_VENDOR_FROM_DATABASE=NDS Technologies Israel Ltd - -pci:v000015D4* - ID_VENDOR_FROM_DATABASE=Iwill Corp - -pci:v000015D5* - ID_VENDOR_FROM_DATABASE=Tatung Co - -pci:v000015D6* - ID_VENDOR_FROM_DATABASE=Entridia Corp - -pci:v000015D7* - ID_VENDOR_FROM_DATABASE=Rockwell-Collins Inc - -pci:v000015D8* - ID_VENDOR_FROM_DATABASE=Cybernetics Technology Co Ltd - -pci:v000015D9* - ID_VENDOR_FROM_DATABASE=Super Micro Computer Inc - -pci:v000015DA* - ID_VENDOR_FROM_DATABASE=Cyberfirm Inc - -pci:v000015DB* - ID_VENDOR_FROM_DATABASE=Applied Computing Systems Inc - -pci:v000015DC* - ID_VENDOR_FROM_DATABASE=Litronic Inc - -pci:v000015DCd00000001* - ID_PRODUCT_FROM_DATABASE=Argus 300 PCI Cryptography Module - -pci:v000015DD* - ID_VENDOR_FROM_DATABASE=Sigmatel Inc - -pci:v000015DE* - ID_VENDOR_FROM_DATABASE=Malleable Technologies Inc - -pci:v000015DF* - ID_VENDOR_FROM_DATABASE=Infinilink Corp - -pci:v000015E0* - ID_VENDOR_FROM_DATABASE=Cacheflow Inc - -pci:v000015E1* - ID_VENDOR_FROM_DATABASE=Voice Technologies Group Inc - -pci:v000015E2* - ID_VENDOR_FROM_DATABASE=Quicknet Technologies Inc - -pci:v000015E2d00000500* - ID_PRODUCT_FROM_DATABASE=PhoneJack-PCI - -pci:v000015E3* - ID_VENDOR_FROM_DATABASE=Networth Technologies Inc - -pci:v000015E4* - ID_VENDOR_FROM_DATABASE=VSN Systemen BV - -pci:v000015E5* - ID_VENDOR_FROM_DATABASE=Valley technologies Inc - -pci:v000015E6* - ID_VENDOR_FROM_DATABASE=Agere Inc - -pci:v000015E7* - ID_VENDOR_FROM_DATABASE=Get Engineering Corp - -pci:v000015E8* - ID_VENDOR_FROM_DATABASE=National Datacomm Corp - -pci:v000015E8d00000130* - ID_PRODUCT_FROM_DATABASE=Wireless PCI Card - -pci:v000015E8d00000131* - ID_PRODUCT_FROM_DATABASE=NCP130A2 Wireless NIC - -pci:v000015E9* - ID_VENDOR_FROM_DATABASE=Pacific Digital Corp - -pci:v000015E9d00001841* - ID_PRODUCT_FROM_DATABASE=ADMA-100 DiscStaQ ATA Controller - -pci:v000015EA* - ID_VENDOR_FROM_DATABASE=Tokyo Denshi Sekei K.K. - -pci:v000015EB* - ID_VENDOR_FROM_DATABASE=DResearch Digital Media Systems GmbH - -pci:v000015EC* - ID_VENDOR_FROM_DATABASE=Beckhoff GmbH - -pci:v000015ECd00003101* - ID_PRODUCT_FROM_DATABASE=FC3101 Profibus DP 1 Channel PCI - -pci:v000015ECd00005102* - ID_PRODUCT_FROM_DATABASE=FC5102 - -pci:v000015ED* - ID_VENDOR_FROM_DATABASE=Macrolink Inc - -pci:v000015EE* - ID_VENDOR_FROM_DATABASE=In Win Development Inc - -pci:v000015EF* - ID_VENDOR_FROM_DATABASE=Intelligent Paradigm Inc - -pci:v000015F0* - ID_VENDOR_FROM_DATABASE=B-Tree Systems Inc - -pci:v000015F1* - ID_VENDOR_FROM_DATABASE=Times N Systems Inc - -pci:v000015F2* - ID_VENDOR_FROM_DATABASE=Diagnostic Instruments Inc - -pci:v000015F3* - ID_VENDOR_FROM_DATABASE=Digitmedia Corp - -pci:v000015F4* - ID_VENDOR_FROM_DATABASE=Valuesoft - -pci:v000015F5* - ID_VENDOR_FROM_DATABASE=Power Micro Research - -pci:v000015F6* - ID_VENDOR_FROM_DATABASE=Extreme Packet Device Inc - -pci:v000015F7* - ID_VENDOR_FROM_DATABASE=Banctec - -pci:v000015F8* - ID_VENDOR_FROM_DATABASE=Koga Electronics Co - -pci:v000015F9* - ID_VENDOR_FROM_DATABASE=Zenith Electronics Corp - -pci:v000015FA* - ID_VENDOR_FROM_DATABASE=J.P. Axzam Corp - -pci:v000015FB* - ID_VENDOR_FROM_DATABASE=Zilog Inc - -pci:v000015FC* - ID_VENDOR_FROM_DATABASE=Techsan Electronics Co Ltd - -pci:v000015FD* - ID_VENDOR_FROM_DATABASE=N-CUBED.NET - -pci:v000015FE* - ID_VENDOR_FROM_DATABASE=Kinpo Electronics Inc - -pci:v000015FF* - ID_VENDOR_FROM_DATABASE=Fastpoint Technologies Inc - -pci:v00001600* - ID_VENDOR_FROM_DATABASE=Northrop Grumman - Canada Ltd - -pci:v00001601* - ID_VENDOR_FROM_DATABASE=Tenta Technology - -pci:v00001602* - ID_VENDOR_FROM_DATABASE=Prosys-tec Inc - -pci:v00001603* - ID_VENDOR_FROM_DATABASE=Nokia Wireless Communications - -pci:v00001604* - ID_VENDOR_FROM_DATABASE=Central System Research Co Ltd - -pci:v00001605* - ID_VENDOR_FROM_DATABASE=Pairgain Technologies - -pci:v00001606* - ID_VENDOR_FROM_DATABASE=Europop AG - -pci:v00001607* - ID_VENDOR_FROM_DATABASE=Lava Semiconductor Manufacturing Inc - -pci:v00001608* - ID_VENDOR_FROM_DATABASE=Automated Wagering International - -pci:v00001609* - ID_VENDOR_FROM_DATABASE=Scimetric Instruments Inc - -pci:v00001612* - ID_VENDOR_FROM_DATABASE=Telesynergy Research Inc. - -pci:v00001618* - ID_VENDOR_FROM_DATABASE=Stone Ridge Technology - -pci:v00001618d00000001* - ID_PRODUCT_FROM_DATABASE=RDX 11 - -pci:v00001618d00000002* - ID_PRODUCT_FROM_DATABASE=HFT-01 - -pci:v00001618d00000400* - ID_PRODUCT_FROM_DATABASE=FarSync T2P (2 port X.21/V.35/V.24) - -pci:v00001618d00000440* - ID_PRODUCT_FROM_DATABASE=FarSync T4P (4 port X.21/V.35/V.24) - -pci:v00001618d00000610* - ID_PRODUCT_FROM_DATABASE=FarSync T1U (1 port X.21/V.35/V.24) - -pci:v00001618d00000620* - ID_PRODUCT_FROM_DATABASE=FarSync T2U (2 port X.21/V.35/V.24) - -pci:v00001618d00000640* - ID_PRODUCT_FROM_DATABASE=FarSync T4U (4 port X.21/V.35/V.24) - -pci:v00001618d00001610* - ID_PRODUCT_FROM_DATABASE=FarSync TE1 (T1,E1) - -pci:v00001618d00002610* - ID_PRODUCT_FROM_DATABASE=FarSync DSL-S1 (SHDSL) - -pci:v00001618d00003640* - ID_PRODUCT_FROM_DATABASE=FarSync T4E (4-port X.21/V.35/V.24) - -pci:v00001618d00004620* - ID_PRODUCT_FROM_DATABASE=FarSync T2Ue PCI Express (2-port X.21/V.35/V.24) - -pci:v00001618d00004640* - ID_PRODUCT_FROM_DATABASE=FarSync T4Ue PCI Express (4-port X.21/V.35/V.24) - -pci:v00001619* - ID_VENDOR_FROM_DATABASE=FarSite Communications Ltd - -pci:v00001619d00000400* - ID_PRODUCT_FROM_DATABASE=FarSync T2P (2 port X.21/V.35/V.24) - -pci:v00001619d00000440* - ID_PRODUCT_FROM_DATABASE=FarSync T4P (4 port X.21/V.35/V.24) - -pci:v00001619d00000610* - ID_PRODUCT_FROM_DATABASE=FarSync T1U (1 port X.21/V.35/V.24) - -pci:v00001619d00000620* - ID_PRODUCT_FROM_DATABASE=FarSync T2U (2 port X.21/V.35/V.24) - -pci:v00001619d00000640* - ID_PRODUCT_FROM_DATABASE=FarSync T4U (4 port X.21/V.35/V.24) - -pci:v00001619d00001610* - ID_PRODUCT_FROM_DATABASE=FarSync TE1 (T1,E1) - -pci:v00001619d00002610* - ID_PRODUCT_FROM_DATABASE=FarSync DSL-S1 (SHDSL) - -pci:v00001619d00003640* - ID_PRODUCT_FROM_DATABASE=FarSync T4E (4-port X.21/V.35/V.24) - -pci:v00001619d00004620* - ID_PRODUCT_FROM_DATABASE=FarSync T2Ue PCI Express (2-port X.21/V.35/V.24) - -pci:v00001619d00004640* - ID_PRODUCT_FROM_DATABASE=FarSync T4Ue PCI Express (4-port X.21/V.35/V.24) - -pci:v0000161F* - ID_VENDOR_FROM_DATABASE=Rioworks - -pci:v00001626* - ID_VENDOR_FROM_DATABASE=TDK Semiconductor Corp. - -pci:v00001626d00008410* - ID_PRODUCT_FROM_DATABASE=RTL81xx Fast Ethernet - -pci:v00001629* - ID_VENDOR_FROM_DATABASE=Kongsberg Spacetec AS - -pci:v00001629d00001003* - ID_PRODUCT_FROM_DATABASE=Format synchronizer v3.0 - -pci:v00001629d00001006* - ID_PRODUCT_FROM_DATABASE=Format synchronizer, model 10500 - -pci:v00001629d00001007* - ID_PRODUCT_FROM_DATABASE=Format synchronizer, model 21000 - -pci:v00001629d00002002* - ID_PRODUCT_FROM_DATABASE=Fast Universal Data Output - -pci:v00001631* - ID_VENDOR_FROM_DATABASE=Packard Bell B.V. - -pci:v00001638* - ID_VENDOR_FROM_DATABASE=Standard Microsystems Corp [SMC] - -pci:v00001638d00001100* - ID_PRODUCT_FROM_DATABASE=SMC2602W EZConnect / Addtron AWA-100 / Eumitcom PCI WL11000 - -pci:v0000163C* - ID_VENDOR_FROM_DATABASE=Smart Link Ltd. - -pci:v0000163Cd00003052* - ID_PRODUCT_FROM_DATABASE=SmartLink SmartPCI562 56K Modem - -pci:v0000163Cd00005449* - ID_PRODUCT_FROM_DATABASE=SmartPCI561 Modem - -pci:v00001641* - ID_VENDOR_FROM_DATABASE=MKNet Corp. - -pci:v00001657* - ID_VENDOR_FROM_DATABASE=Brocade Communications Systems, Inc. - -pci:v00001657d00000013* - ID_PRODUCT_FROM_DATABASE=425/825/42B/82B 4Gbps/8Gbps PCIe dual port FC HBA - -pci:v00001657d00000013sv0000103Csd00001742* - ID_PRODUCT_FROM_DATABASE=HP 82B 8Gbps dual port FC HBA - -pci:v00001657d00000013sv0000103Csd00001744* - ID_PRODUCT_FROM_DATABASE=HP 42B 4Gbps dual port FC HBA - -pci:v00001657d00000013sv00001657sd00000014* - ID_PRODUCT_FROM_DATABASE=425/825 4Gbps/8Gbps PCIe dual port FC HBA - -pci:v00001657d00000014* - ID_PRODUCT_FROM_DATABASE=1010/1020/1007/1741 10Gbps CNA - -pci:v00001657d00000014sv00001657sd00000014* - ID_PRODUCT_FROM_DATABASE=1010/1020/1007/1741 10Gbps CNA - FCOE - -pci:v00001657d00000014sv00001657sd00000015* - ID_PRODUCT_FROM_DATABASE=1010/1020/1007/1741 10Gbps CNA - LL - -pci:v00001657d00000017* - ID_PRODUCT_FROM_DATABASE=415/815/41B/81B 4Gbps/8Gbps PCIe single port FC HBA - -pci:v00001657d00000017sv0000103Csd00001741* - ID_PRODUCT_FROM_DATABASE=HP 41B 4Gbps single port FC HBA - -pci:v00001657d00000017sv0000103Csd00001743* - ID_PRODUCT_FROM_DATABASE=HP 81B 8Gbps single port FC HBA - -pci:v00001657d00000017sv00001657sd00000014* - ID_PRODUCT_FROM_DATABASE=415/815 4Gbps/8Gbps single port PCIe FC HBA - -pci:v00001657d00000021* - ID_PRODUCT_FROM_DATABASE=804 8Gbps FC HBA for HP Bladesystem c-class - -pci:v00001657d00000022* - ID_PRODUCT_FROM_DATABASE=1867/1860: 16Gbps/10Gbps Fabric Adapter - -pci:v00001657d00000022sv00001657sd00000022* - ID_PRODUCT_FROM_DATABASE=10Gbps CNA - FCOE - -pci:v00001657d00000022sv00001657sd00000023* - ID_PRODUCT_FROM_DATABASE=10Gbps CNA - LL - -pci:v00001657d00000022sv00001657sd00000024* - ID_PRODUCT_FROM_DATABASE=16Gbps FC HBA - -pci:v00001657d00000646* - ID_PRODUCT_FROM_DATABASE=400 4Gbps PCIe FC HBA - -pci:v0000165A* - ID_VENDOR_FROM_DATABASE=Epix Inc - -pci:v0000165Ad0000C100* - ID_PRODUCT_FROM_DATABASE=PIXCI(R) CL1 Camera Link Video Capture Board [custom QL5232] - -pci:v0000165Ad0000D200* - ID_PRODUCT_FROM_DATABASE=PIXCI(R) D2X Digital Video Capture Board [custom QL5232] - -pci:v0000165Ad0000D300* - ID_PRODUCT_FROM_DATABASE=PIXCI(R) D3X Digital Video Capture Board [custom QL5232] - -pci:v0000165D* - ID_VENDOR_FROM_DATABASE=Hsing Tech. Enterprise Co., Ltd. - -pci:v0000165F* - ID_VENDOR_FROM_DATABASE=Linux Media Labs, LLC - -pci:v0000165Fd00001020* - ID_PRODUCT_FROM_DATABASE=LMLM4 MPEG-4 encoder - -pci:v00001661* - ID_VENDOR_FROM_DATABASE=Worldspace Corp. - -pci:v00001668* - ID_VENDOR_FROM_DATABASE=Actiontec Electronics Inc - -pci:v00001668d00000100* - ID_PRODUCT_FROM_DATABASE=Mini-PCI bridge - -pci:v0000166D* - ID_VENDOR_FROM_DATABASE=Broadcom Corporation - -pci:v0000166Dd00000001* - ID_PRODUCT_FROM_DATABASE=SiByte BCM1125/1125H/1250 System-on-a-Chip PCI - -pci:v0000166Dd00000002* - ID_PRODUCT_FROM_DATABASE=SiByte BCM1125H/1250 System-on-a-Chip HyperTransport - -pci:v0000166Dd00000012* - ID_PRODUCT_FROM_DATABASE=SiByte BCM1280/BCM1480 System-on-a-Chip PCI-X - -pci:v0000166Dd00000014* - ID_PRODUCT_FROM_DATABASE=Sibyte BCM1280/BCM1480 System-on-a-Chip HyperTransport - -pci:v00001677* - ID_VENDOR_FROM_DATABASE=Bernecker + Rainer - -pci:v00001677d0000104E* - ID_PRODUCT_FROM_DATABASE=5LS172.6 B&R Dual CAN Interface Card - -pci:v00001677d000012D7* - ID_PRODUCT_FROM_DATABASE=5LS172.61 B&R Dual CAN Interface Card - -pci:v00001677d000020AD* - ID_PRODUCT_FROM_DATABASE=5ACPCI.MFIO-K01 Profibus DP / K-Feldbus / COM - -pci:v00001678* - ID_VENDOR_FROM_DATABASE=NetEffect - -pci:v00001678d00000100* - ID_PRODUCT_FROM_DATABASE=NE020 10Gb Accelerated Ethernet Adapter (iWARP RNIC) - -pci:v00001679* - ID_VENDOR_FROM_DATABASE=Tokyo Electron Device Ltd. - -pci:v00001679d00003000* - ID_PRODUCT_FROM_DATABASE=SD Standard host controller [Ellen] - -pci:v0000167B* - ID_VENDOR_FROM_DATABASE=ZyDAS Technology Corp. - -pci:v0000167Bd00002102* - ID_PRODUCT_FROM_DATABASE=ZyDAS ZD1202 - -pci:v0000167Bd00002102sv0000187Esd00003406* - ID_PRODUCT_FROM_DATABASE=ZyAIR B-122 CardBus 11Mbs Wireless LAN Card - -pci:v0000167Bd00002102sv0000187Esd00003407* - ID_PRODUCT_FROM_DATABASE=ZyAIR B-320 802.11b Wireless PCI Adapter - -pci:v0000167Bd00002116* - ID_PRODUCT_FROM_DATABASE=ZD1212B Wireless Adapter - -pci:v0000167D* - ID_VENDOR_FROM_DATABASE=Samsung Electro-Mechanics Co., Ltd. - -pci:v0000167Dd0000A000* - ID_PRODUCT_FROM_DATABASE=MagicLAN SWL-2210P 802.11b [Intersil ISL3874] - -pci:v0000167E* - ID_VENDOR_FROM_DATABASE=ONNTO Corp. - -pci:v00001681* - ID_VENDOR_FROM_DATABASE=Hercules - -pci:v00001682* - ID_VENDOR_FROM_DATABASE=XFX Pine Group Inc. - -pci:v00001688* - ID_VENDOR_FROM_DATABASE=CastleNet Technology Inc. - -pci:v00001688d00001170* - ID_PRODUCT_FROM_DATABASE=WLAN 802.11b card - -pci:v0000168C* - ID_VENDOR_FROM_DATABASE=Atheros Communications Inc. - -pci:v0000168Cd00000007* - ID_PRODUCT_FROM_DATABASE=AR5210 Wireless Network Adapter [AR5000 802.11a] - -pci:v0000168Cd00000007sv00001737sd00000007* - ID_PRODUCT_FROM_DATABASE=WPC54A Wireless PC Card - -pci:v0000168Cd00000007sv00001B47sd00000100* - ID_PRODUCT_FROM_DATABASE=Harmony 8450CN Wireless CardBus Module - -pci:v0000168Cd00000007sv00001B47sd00000110* - ID_PRODUCT_FROM_DATABASE=Skyline 4030 / Harmony 8450 802.11a Wireless CardBus Adapter - -pci:v0000168Cd00000007sv00008086sd00002501* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 5000 LAN PCI Adapter Module - -pci:v0000168Cd00000011* - ID_PRODUCT_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001A 802.11a] - -pci:v0000168Cd00000012* - ID_PRODUCT_FROM_DATABASE=AR5211 Wireless Network Adapter [AR5001X 802.11ab] - -pci:v0000168Cd00000012sv00001186sd00003A03* - ID_PRODUCT_FROM_DATABASE=AirPro DWL-A650 Wireless Cardbus Adapter (rev.B) - -pci:v0000168Cd00000012sv00001186sd00003A04* - ID_PRODUCT_FROM_DATABASE=AirPro DWL-AB650 Multimode Wireless Cardbus Adapter - -pci:v0000168Cd00000012sv00001186sd00003A05* - ID_PRODUCT_FROM_DATABASE=AirPro DWL-AB520 Multimode Wireless PCI Adapter - -pci:v0000168Cd00000012sv0000126Csd00008031* - ID_PRODUCT_FROM_DATABASE=2201 Mobile Adapter - -pci:v0000168Cd00000012sv00001385sd00004400* - ID_PRODUCT_FROM_DATABASE=WAB501 802.11ab Wireless CardBus Card - -pci:v0000168Cd00000012sv00001B47sd0000AA00* - ID_PRODUCT_FROM_DATABASE=8460 802.11ab Wireless CardBus Adapter - -pci:v0000168Cd00000013* - ID_PRODUCT_FROM_DATABASE=AR5212/AR5213 Wireless Network Adapter - -pci:v0000168Cd00000013sv00000308sd00003402* - ID_PRODUCT_FROM_DATABASE=AG-100 802.11ag Wireless Cardbus Adapter - -pci:v0000168Cd00000013sv00000308sd00003405* - ID_PRODUCT_FROM_DATABASE=G-102 v2 802.11g Wireless Cardbus Adapter - -pci:v0000168Cd00000013sv00000308sd00003408* - ID_PRODUCT_FROM_DATABASE=G-170S 802.11g Wireless CardBus Adapter - -pci:v0000168Cd00000013sv00000E11sd000000E5* - ID_PRODUCT_FROM_DATABASE=NC6000/NC8000 laptop - -pci:v0000168Cd00000013sv000010B7sd00006002* - ID_PRODUCT_FROM_DATABASE=3CRWE154A72 802.11abg Cardbus Adapter - -pci:v0000168Cd00000013sv00001113sd0000D301* - ID_PRODUCT_FROM_DATABASE=Philips CPWNA100 Wireless CardBus adapter - -pci:v0000168Cd00000013sv00001113sd0000EE23* - ID_PRODUCT_FROM_DATABASE=SMCWPCIT-G 108Mbps Wireless PCI adapter - -pci:v0000168Cd00000013sv00001154sd0000033B* - ID_PRODUCT_FROM_DATABASE=Buffalo WLI-CB-AMG54 - -pci:v0000168Cd00000013sv00001154sd0000034E* - ID_PRODUCT_FROM_DATABASE=Buffalo WLI-CB-AG108HP 802.11abg Cardbus Adapter - -pci:v0000168Cd00000013sv00001186sd00003202* - ID_PRODUCT_FROM_DATABASE=DWL-G650 (Rev B3,B5) Wireless cardbus adapter - -pci:v0000168Cd00000013sv00001186sd00003203* - ID_PRODUCT_FROM_DATABASE=AirPlus DWL-G520 Wireless PCI Adapter (rev. A) - -pci:v0000168Cd00000013sv00001186sd00003A07* - ID_PRODUCT_FROM_DATABASE=AirXpert DWL-AG650 Wireless Cardbus Adapter - -pci:v0000168Cd00000013sv00001186sd00003A08* - ID_PRODUCT_FROM_DATABASE=AirXpert DWL-AG520 Wireless PCI Adapter - -pci:v0000168Cd00000013sv00001186sd00003A12* - ID_PRODUCT_FROM_DATABASE=D-Link AirPlus DWL-G650 Wireless Cardbus Adapter(rev.C) - -pci:v0000168Cd00000013sv00001186sd00003A13* - ID_PRODUCT_FROM_DATABASE=AirPlus DWL-G520 Wireless PCI Adapter (rev. B) - -pci:v0000168Cd00000013sv00001186sd00003A14* - ID_PRODUCT_FROM_DATABASE=AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.A) - -pci:v0000168Cd00000013sv00001186sd00003A17* - ID_PRODUCT_FROM_DATABASE=D-Link AirPremier DWL-G680 Wireless Cardbus Adapter - -pci:v0000168Cd00000013sv00001186sd00003A18* - ID_PRODUCT_FROM_DATABASE=D-Link AirPremier DWL-G550 Wireless PCI Adapter - -pci:v0000168Cd00000013sv00001186sd00003A1A* - ID_PRODUCT_FROM_DATABASE=WNA-2330 802.11bg Wireless CardBus Adapter - -pci:v0000168Cd00000013sv00001186sd00003A63* - ID_PRODUCT_FROM_DATABASE=D-Link AirPremier DWL-AG660 Wireless Cardbus Adapter - -pci:v0000168Cd00000013sv00001186sd00003A93* - ID_PRODUCT_FROM_DATABASE=Conceptronic C54I Wireless 801.11g PCI card - -pci:v0000168Cd00000013sv00001186sd00003A94* - ID_PRODUCT_FROM_DATABASE=Conceptronic C54C 802.11g Wireless Cardbus Adapter - -pci:v0000168Cd00000013sv00001186sd00003AB0* - ID_PRODUCT_FROM_DATABASE=Allnet ALL0281 Wireless PCI Card - -pci:v0000168Cd00000013sv00001385sd00004600* - ID_PRODUCT_FROM_DATABASE=WAG511 802.11a/b/g Dual Band Wireless PC Card - -pci:v0000168Cd00000013sv00001385sd00004610* - ID_PRODUCT_FROM_DATABASE=WAG511 802.11a/b/g Dual Band Wireless PC Card - -pci:v0000168Cd00000013sv00001385sd00004900* - ID_PRODUCT_FROM_DATABASE=WG311v1 802.11g Wireless PCI Adapter - -pci:v0000168Cd00000013sv00001385sd00004A00* - ID_PRODUCT_FROM_DATABASE=WAG311 802.11a/g Wireless PCI Adapter - -pci:v0000168Cd00000013sv00001385sd00004B00* - ID_PRODUCT_FROM_DATABASE=WG511T 108 Mbps Wireless PC Card (rev.A/B) - -pci:v0000168Cd00000013sv00001385sd00004D00* - ID_PRODUCT_FROM_DATABASE=WG311T 108 Mbps Wireless PCI Adapter (rev.A2) - -pci:v0000168Cd00000013sv00001385sd00004F00* - ID_PRODUCT_FROM_DATABASE=WG511U Double 108 Mbps Wireless PC Card - -pci:v0000168Cd00000013sv00001385sd00005A00* - ID_PRODUCT_FROM_DATABASE=WG311T 108 Mbps Wireless PCI Adapter (rev.A3) - -pci:v0000168Cd00000013sv00001385sd00005B00* - ID_PRODUCT_FROM_DATABASE=WG511T 108 Mbps Wireless PC Card (rev.C) - -pci:v0000168Cd00000013sv00001385sd00005D00* - ID_PRODUCT_FROM_DATABASE=WPN511 RangeMax Wireless PC Card - -pci:v0000168Cd00000013sv00001458sd0000E911* - ID_PRODUCT_FROM_DATABASE=GN-WIAG02 - -pci:v0000168Cd00000013sv00001468sd00000403* - ID_PRODUCT_FROM_DATABASE=U10H014 802.11g Cardbus Adapter - -pci:v0000168Cd00000013sv00001468sd00000408* - ID_PRODUCT_FROM_DATABASE=ThinkPad 11b/g Wireless LAN Mini PCI Adapter - -pci:v0000168Cd00000013sv000014B7sd00000A10* - ID_PRODUCT_FROM_DATABASE=8480-WD 802.11abg Cardbus Adapter - -pci:v0000168Cd00000013sv000014B7sd00000A60* - ID_PRODUCT_FROM_DATABASE=8482-WD ORiNOCO 11a/b/g Wireless PCI Adapter - -pci:v0000168Cd00000013sv000014B7sd0000AA30* - ID_PRODUCT_FROM_DATABASE=8800-FC 802.11bg Cardbus Adapter - -pci:v0000168Cd00000013sv000014B7sd0000AA40* - ID_PRODUCT_FROM_DATABASE=8470-WD 802.11bg Cardbus Adapter - -pci:v0000168Cd00000013sv000014B9sd0000CB21* - ID_PRODUCT_FROM_DATABASE=CB21 802.11a/b/g Cardbus Adapter - -pci:v0000168Cd00000013sv00001668sd00001026* - ID_PRODUCT_FROM_DATABASE=IBM HighRate 11 a/b/g Wireless CardBus Adapter - -pci:v0000168Cd00000013sv0000168Csd00000013* - ID_PRODUCT_FROM_DATABASE=AirPlus XtremeG DWL-G650 Wireless PCMCIA Adapter - -pci:v0000168Cd00000013sv0000168Csd00001025* - ID_PRODUCT_FROM_DATABASE=DWL-G650B2 Wireless CardBus Adapter - -pci:v0000168Cd00000013sv0000168Csd00001027* - ID_PRODUCT_FROM_DATABASE=Engenius NL-3054CB ARIES b/g CardBus Adapter - -pci:v0000168Cd00000013sv0000168Csd00001042* - ID_PRODUCT_FROM_DATABASE=Ubiquiti Networks SuperRange a/b/g Cardbus Adapter - -pci:v0000168Cd00000013sv0000168Csd00001051* - ID_PRODUCT_FROM_DATABASE=EZ Connect g 802.11g 108Mbps Wireless PCI Adapter - -pci:v0000168Cd00000013sv0000168Csd00002026* - ID_PRODUCT_FROM_DATABASE=Netgate 5354MP ARIES a(108Mb turbo)/b/g MiniPCI Adapter - -pci:v0000168Cd00000013sv0000168Csd00002027* - ID_PRODUCT_FROM_DATABASE=D-Link AirPlus DWL-G520 Wireless PCI Adapter (rev. A) - -pci:v0000168Cd00000013sv0000168Csd00002041* - ID_PRODUCT_FROM_DATABASE=Engenius 5354MP Plus ARIES2 b/g MiniPCI Adapter - -pci:v0000168Cd00000013sv0000168Csd00002042* - ID_PRODUCT_FROM_DATABASE=Engenius 5354MP Plus ARIES2 a/b/g MiniPCI Adapter - -pci:v0000168Cd00000013sv0000168Csd00002051* - ID_PRODUCT_FROM_DATABASE=TRENDnet TEW-443PI Wireless PCI Adapter - -pci:v0000168Cd00000013sv000016A5sd0000160A* - ID_PRODUCT_FROM_DATABASE=BWP712 802.11bg Wireless CardBus Adapter - -pci:v0000168Cd00000013sv000016ABsd00007302* - ID_PRODUCT_FROM_DATABASE=Trust Speedshare Turbo Pro Wireless PCI Adapter - -pci:v0000168Cd00000013sv00001737sd00000017* - ID_PRODUCT_FROM_DATABASE=WPC55AG - -pci:v0000168Cd00000013sv00001737sd00000026* - ID_PRODUCT_FROM_DATABASE=WMP55AG v1.1 - -pci:v0000168Cd00000013sv00001737sd00000035* - ID_PRODUCT_FROM_DATABASE=WPC55AG v1.2 802.11abg Cardbus Adapter - -pci:v0000168Cd00000013sv00001737sd00000036* - ID_PRODUCT_FROM_DATABASE=WMP55AG v1.2 802.11abg PCI Adapter - -pci:v0000168Cd00000013sv00001799sd00003000* - ID_PRODUCT_FROM_DATABASE=F6D3000 Dual-Band Wireless A+G Desktop Card - -pci:v0000168Cd00000013sv00001799sd00003010* - ID_PRODUCT_FROM_DATABASE=F6D3010 Dual-Band Wireless A+G Notebook Card - -pci:v0000168Cd00000013sv000017CFsd00000042* - ID_PRODUCT_FROM_DATABASE=Z-COMAX Highpower XG-622H (400mw) 802.11b/g mini-PCI Adapter - -pci:v0000168Cd00000013sv0000185Fsd00001012* - ID_PRODUCT_FROM_DATABASE=CM9 Wireless a/b/g MiniPCI Adapter - -pci:v0000168Cd00000013sv0000185Fsd00002012* - ID_PRODUCT_FROM_DATABASE=Wistron NeWeb WLAN a+b+g model CB9 - -pci:v0000168Cd00000013sv0000A727sd00006801* - ID_PRODUCT_FROM_DATABASE=3CRXJK10075 OfficeConnect Wireless 108Mbps 11g XJACK PC Card - -pci:v0000168Cd0000001A* - ID_PRODUCT_FROM_DATABASE=AR2413/AR2414 Wireless Network Adapter [AR5005G(S) 802.11bg] - -pci:v0000168Cd0000001Asv00001052sd0000168C* - ID_PRODUCT_FROM_DATABASE=Sweex Wireless Lan PC Card 54Mbps - -pci:v0000168Cd0000001Asv00001113sd0000EE20* - ID_PRODUCT_FROM_DATABASE=SMC Wireless CardBus Adapter 802.11g (SMCWCB-G EU) - -pci:v0000168Cd0000001Asv00001113sd0000EE24* - ID_PRODUCT_FROM_DATABASE=SMC Wireless PCI Card WPCI-G - -pci:v0000168Cd0000001Asv00001186sd00003A15* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.D1) - -pci:v0000168Cd0000001Asv00001186sd00003A16* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G510 Wireless PCI Adapter(rev.B) - -pci:v0000168Cd0000001Asv00001186sd00003A1C* - ID_PRODUCT_FROM_DATABASE=WNA-1330 Notebook Adapter - -pci:v0000168Cd0000001Asv00001186sd00003A1D* - ID_PRODUCT_FROM_DATABASE=WDA-1320 Desktop Adapter - -pci:v0000168Cd0000001Asv00001186sd00003A23* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G520+A Wireless PCI Adapter - -pci:v0000168Cd0000001Asv00001186sd00003A24* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G650+A Wireless Cardbus Adapter - -pci:v0000168Cd0000001Asv00001186sd00003B08* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.C1) - -pci:v0000168Cd0000001Asv0000168Csd0000001A* - ID_PRODUCT_FROM_DATABASE=Belkin FD7000 - -pci:v0000168Cd0000001Asv0000168Csd00001052* - ID_PRODUCT_FROM_DATABASE=TP-Link TL-WN510G Wireless CardBus Adapter - -pci:v0000168Cd0000001Asv0000168Csd00002052* - ID_PRODUCT_FROM_DATABASE=Compex Wireless 802.11 b/g MiniPCI Adapter, Rev A1 [WLM54G] - -pci:v0000168Cd0000001Asv000016ECsd00000122* - ID_PRODUCT_FROM_DATABASE=Wireless PCI Adapter Model 5418 - -pci:v0000168Cd0000001Asv00001737sd00000053* - ID_PRODUCT_FROM_DATABASE=WPC54G v7 802.11g Wireless-G Notebook Adapter - -pci:v0000168Cd0000001Asv00001799sd0000700C* - ID_PRODUCT_FROM_DATABASE=F5D7000 v5000 Wireless G Desktop Card - -pci:v0000168Cd0000001Asv00001799sd0000701D* - ID_PRODUCT_FROM_DATABASE=F5D7010 v5000 Wireless G Notebook Card - -pci:v0000168Cd0000001Asv000017F9sd00000008* - ID_PRODUCT_FROM_DATABASE=DX-WGNBC 802.11bg Wireless CardBus Adapter - -pci:v0000168Cd0000001Asv000017F9sd00000018* - ID_PRODUCT_FROM_DATABASE=DX-WGDTC 802.11bg Wireless PCI Adapter - -pci:v0000168Cd0000001B* - ID_PRODUCT_FROM_DATABASE=AR5413/AR5414 Wireless Network Adapter [AR5006X(S) 802.11abg] - -pci:v0000168Cd0000001Bsv00000777sd00001107* - ID_PRODUCT_FROM_DATABASE=UB5 802.11a Wireless Mini PCI Adapter - -pci:v0000168Cd0000001Bsv00000777sd00003002* - ID_PRODUCT_FROM_DATABASE=XR2 802.11g Wireless Mini PCI Adapter - -pci:v0000168Cd0000001Bsv00000777sd00003005* - ID_PRODUCT_FROM_DATABASE=XR5 802.11a Wireless Mini PCI Adapter - -pci:v0000168Cd0000001Bsv00000777sd00003009* - ID_PRODUCT_FROM_DATABASE=XR9 900MHz Wireless Mini PCI Adapter - -pci:v0000168Cd0000001Bsv00001154sd0000034E* - ID_PRODUCT_FROM_DATABASE=WLI-CB-AG108HP 802.11abg Wireless CardBus Adapter - -pci:v0000168Cd0000001Bsv00001186sd00003A19* - ID_PRODUCT_FROM_DATABASE=D-Link AirPremier AG DWL-AG660 Wireless Cardbus Adapter - -pci:v0000168Cd0000001Bsv00001186sd00003A22* - ID_PRODUCT_FROM_DATABASE=AirPremier AG DWL-AG530 Wireless PCI Adapter (rev.B) - -pci:v0000168Cd0000001Bsv000011ADsd00005001* - ID_PRODUCT_FROM_DATABASE=WN5301A 802.11bg Wireless PCI Adapter - -pci:v0000168Cd0000001Bsv00001458sd0000E901* - ID_PRODUCT_FROM_DATABASE=GN-WI01HT Wireless a/b/g MiniPCI Adapter - -pci:v0000168Cd0000001Bsv0000168Csd0000001B* - ID_PRODUCT_FROM_DATABASE=Wireless LAN PCI LiteOn - -pci:v0000168Cd0000001Bsv0000168Csd00001062* - ID_PRODUCT_FROM_DATABASE=IPN-W100CB 802.11abg Wireless CardBus Adapter - -pci:v0000168Cd0000001Bsv0000168Csd00002062* - ID_PRODUCT_FROM_DATABASE=EnGenius EMP-8602 (400mw) or Compex WLM54AG (SuperAG) - -pci:v0000168Cd0000001Bsv0000168Csd00002063* - ID_PRODUCT_FROM_DATABASE=EnGenius EMP-8602 (400mw) or Compex WLM54AG - -pci:v0000168Cd0000001Bsv000017F9sd0000000B* - ID_PRODUCT_FROM_DATABASE=WL-711A 802.11abg Wireless CardBus Adapter - -pci:v0000168Cd0000001Bsv000017F9sd0000000C* - ID_PRODUCT_FROM_DATABASE=WPIA-112AG 802.11abg Wireless PCI Adapter - -pci:v0000168Cd0000001Bsv000017F9sd0000000D* - ID_PRODUCT_FROM_DATABASE=PC-686X 802.11abg Wireless Mini PCI Adapter - -pci:v0000168Cd0000001Bsv0000185Fsd00001600* - ID_PRODUCT_FROM_DATABASE=DCMA-82 High Power WLAN 802.11a/b/g mini-PCI Module (Super A/G, eXtended Range, 400mW) - -pci:v0000168Cd0000001Bsv00001948sd00003ABA* - ID_PRODUCT_FROM_DATABASE=RBTBJ-AW 802.11abg Wireless Cardbus Adapter - -pci:v0000168Cd0000001Bsv0000A727sd00006804* - ID_PRODUCT_FROM_DATABASE=Wireless 11a/b/g PC Card with XJACK(r) Antenna - -pci:v0000168Cd0000001C* - ID_PRODUCT_FROM_DATABASE=AR242x / AR542x Wireless Network Adapter (PCI-Express) - -pci:v0000168Cd0000001Csv00000777sd00003006* - ID_PRODUCT_FROM_DATABASE=SRX 802.11abg Wireless ExpressCard Adapter - -pci:v0000168Cd0000001Csv0000103Csd0000137A* - ID_PRODUCT_FROM_DATABASE=AR5BXB63 (Foxconn) 802.11bg Mini PCIe NIC - -pci:v0000168Cd0000001Csv0000106Bsd00000086* - ID_PRODUCT_FROM_DATABASE=AR5BXB6 802.11abg Wireless Mini PCIe Card - -pci:v0000168Cd0000001Csv0000144Fsd00007106* - ID_PRODUCT_FROM_DATABASE=WLL3140 (Toshiba PA3501U-1MPC) 802.11bg Wireless Mini PCIe Card - -pci:v0000168Cd0000001Csv0000144Fsd00007128* - ID_PRODUCT_FROM_DATABASE=WLL3141 (Toshiba PA3613U-1MPC) 802.11bg Wireless Mini PCIe Card - -pci:v0000168Cd0000001Csv00001468sd00000428* - ID_PRODUCT_FROM_DATABASE=AR5BXB63 802.11bg NIC - -pci:v0000168Cd0000001Csv00001468sd0000042A* - ID_PRODUCT_FROM_DATABASE=AR5007EG 802.11bg NIC - -pci:v0000168Cd0000001Csv0000147Bsd00001033* - ID_PRODUCT_FROM_DATABASE=AirPace Wi-Fi - -pci:v0000168Cd0000001Csv0000168Csd0000001C* - ID_PRODUCT_FROM_DATABASE=AR242x 802.11abg NIC (PCI Express) - -pci:v0000168Cd0000001Csv0000168Csd00003061* - ID_PRODUCT_FROM_DATABASE=AR5006EGS 802.11bg NIC (2.4GHz, PCI Express) - -pci:v0000168Cd0000001Csv0000168Csd00003062* - ID_PRODUCT_FROM_DATABASE=AR5006EXS 802.11abg NIC (2.4/5.0GHz, PCI Express) - -pci:v0000168Cd0000001Csv0000168Csd00003063* - ID_PRODUCT_FROM_DATABASE=AR5006EX 802.11abg NIC (2.4/5.0GHz, PCI Express) - -pci:v0000168Cd0000001Csv0000168Csd00003065* - ID_PRODUCT_FROM_DATABASE=AR5006EG 802.11bg NIC (2.4GHz, PCI Express) - -pci:v0000168Cd0000001Csv0000168Csd00003067* - ID_PRODUCT_FROM_DATABASE=AR242x 802.11abg Wireless PCI Express Adapter (rev 01) - -pci:v0000168Cd0000001Csv00001A3Bsd00001026* - ID_PRODUCT_FROM_DATABASE=AW-GE780 802.11bg Wireless Mini PCIe Card - -pci:v0000168Cd0000001D* - ID_PRODUCT_FROM_DATABASE=AR2417 Wireless Network Adapter [AR5007G 802.11bg] - -pci:v0000168Cd0000001Dsv00001799sd0000720B* - ID_PRODUCT_FROM_DATABASE=F5D7000 v8000 Wireless G Desktop Card - -pci:v0000168Cd0000001Dsv00001799sd0000721B* - ID_PRODUCT_FROM_DATABASE=F5D7010 v8000 Wireless G Notebook Card - -pci:v0000168Cd00000020* - ID_PRODUCT_FROM_DATABASE=AR5513 802.11abg Wireless NIC - -pci:v0000168Cd00000020sv00000308sd00003407* - ID_PRODUCT_FROM_DATABASE=M-102 802.11g Wireless Cardbus Adapter - -pci:v0000168Cd00000020sv00001186sd00003A67* - ID_PRODUCT_FROM_DATABASE=DWL-G650M Super G MIMO Wireless Notebook Adapter - -pci:v0000168Cd00000020sv00001186sd00003A68* - ID_PRODUCT_FROM_DATABASE=DWL-G520M Wireless 108G MIMO Desktop Adapter - -pci:v0000168Cd00000020sv0000187Esd0000340E* - ID_PRODUCT_FROM_DATABASE=M-302 802.11g Wireless PCI Adapter - -pci:v0000168Cd00000020sv00001976sd00002003* - ID_PRODUCT_FROM_DATABASE=TEW-601PC 802.11g Wireless CardBus Adapter - -pci:v0000168Cd00000023* - ID_PRODUCT_FROM_DATABASE=AR5416 Wireless Network Adapter [AR5008 802.11(a)bgn] - -pci:v0000168Cd00000023sv00000308sd0000340B* - ID_PRODUCT_FROM_DATABASE=NWD-170N 802.11bgn Wireless CardBus Adapter - -pci:v0000168Cd00000023sv00001154sd00000365* - ID_PRODUCT_FROM_DATABASE=Buffalo WLP-CB-AG300 802.11abgn Cardbus Adapter - -pci:v0000168Cd00000023sv00001154sd00000367* - ID_PRODUCT_FROM_DATABASE=WLI-CB-AG301N 802.11abgn Wireless CardBus Adapter - -pci:v0000168Cd00000023sv00001186sd00003A6A* - ID_PRODUCT_FROM_DATABASE=DWA-642 802.11n RangeBooster N CardBus Adapter - -pci:v0000168Cd00000023sv00001186sd00003A6B* - ID_PRODUCT_FROM_DATABASE=DWA-547 802.11n RangeBooster N 650 DeskTop Adapter - -pci:v0000168Cd00000023sv00001186sd00003A6D* - ID_PRODUCT_FROM_DATABASE=DWA-552 802.11n Xtreme N Desktop Adapter (rev A1) - -pci:v0000168Cd00000023sv00001186sd00003A76* - ID_PRODUCT_FROM_DATABASE=DWA-645 802.11n RangeBooster N 650 Notebook Adapter (rev A1) - -pci:v0000168Cd00000023sv00001737sd00000059* - ID_PRODUCT_FROM_DATABASE=WPC300N v2 Wireless-N Notebook Adapter - -pci:v0000168Cd00000023sv00001737sd00000069* - ID_PRODUCT_FROM_DATABASE=WPC100 v1 802.11n RangePlus Wireless Notebook Adapter - -pci:v0000168Cd00000023sv00001737sd00000072* - ID_PRODUCT_FROM_DATABASE=WMP110 v1 802.11n RangePlus Wireless PCI Adapter - -pci:v0000168Cd00000023sv00001799sd00008011* - ID_PRODUCT_FROM_DATABASE=F5D8011 v1 802.11n N1 Wireless Notebook Card - -pci:v0000168Cd00000023sv0000187Esd00003411* - ID_PRODUCT_FROM_DATABASE=NWD-370N 802.11n Wireless PCI Adapter - -pci:v0000168Cd00000023sv00001976sd00002008* - ID_PRODUCT_FROM_DATABASE=TEW-621PC 802.11bgn Wireless CardBus Adapter - -pci:v0000168Cd00000024* - ID_PRODUCT_FROM_DATABASE=AR5418 Wireless Network Adapter [AR5008E 802.11(a)bgn] (PCI-Express) - -pci:v0000168Cd00000024sv0000106Bsd00000087* - ID_PRODUCT_FROM_DATABASE=AR5BXB72 802.11abgn Mini PCIe Card [AR5008E-3NX] - -pci:v0000168Cd00000024sv00001186sd00003A70* - ID_PRODUCT_FROM_DATABASE=DWA-556 Xtreme N PCI Express Desktop Adapter - -pci:v0000168Cd00000027* - ID_PRODUCT_FROM_DATABASE=AR9160 Wireless Network Adapter [AR9001 802.11(a)bgn] - -pci:v0000168Cd00000027sv00000777sd00004082* - ID_PRODUCT_FROM_DATABASE=SR71-A 802.11abgn Wireless Mini PCI Adapter - -pci:v0000168Cd00000029* - ID_PRODUCT_FROM_DATABASE=AR922X Wireless Network Adapter - -pci:v0000168Cd00000029sv00000777sd00004005* - ID_PRODUCT_FROM_DATABASE=SR71-15 802.11an Mini PCI Adapter - -pci:v0000168Cd00000029sv00001186sd00003A7A* - ID_PRODUCT_FROM_DATABASE=DWA-552 802.11n Xtreme N Desktop Adapter (rev A2) - -pci:v0000168Cd00000029sv00001186sd00003A7D* - ID_PRODUCT_FROM_DATABASE=DWA-552 802.11n Xtreme N Desktop Adapter (rev A3) - -pci:v0000168Cd0000002A* - ID_PRODUCT_FROM_DATABASE=AR928X Wireless Network Adapter (PCI-Express) - -pci:v0000168Cd0000002Asv00000777sd00004F05* - ID_PRODUCT_FROM_DATABASE=SR71-X 802.11abgn Wireless ExpressCard Adapter [AR9280] - -pci:v0000168Cd0000002Asv0000103Csd00003041* - ID_PRODUCT_FROM_DATABASE=AR5BHB92-H 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] - -pci:v0000168Cd0000002Asv0000105Bsd0000E006* - ID_PRODUCT_FROM_DATABASE=T77H053.00 802.11bgn Wireless Mini PCIe Card [AR9281] - -pci:v0000168Cd0000002Asv0000105Bsd0000E01F* - ID_PRODUCT_FROM_DATABASE=T77H047.31 802.11bgn Wireless Half-size Mini PCIe Card [AR9283] - -pci:v0000168Cd0000002Asv000011ADsd00006600* - ID_PRODUCT_FROM_DATABASE=WN6600A 802.11bgn Wireless Mini PCIe Card [AR9281] - -pci:v0000168Cd0000002Asv0000144Fsd00007141* - ID_PRODUCT_FROM_DATABASE=WLL6080 802.11bgn Wireless Mini PCIe Card [AR9281] - -pci:v0000168Cd0000002Asv0000168Csd00000203* - ID_PRODUCT_FROM_DATABASE=DW1525 802.11abgn WLAN PCIe Card [AR9280] - -pci:v0000168Cd0000002Asv00001A32sd00000303* - ID_PRODUCT_FROM_DATABASE=EM303 802.11bgn Wireless Mini PCIe Card [AR9281] - -pci:v0000168Cd0000002Asv00001A32sd00000306* - ID_PRODUCT_FROM_DATABASE=EM306 802.11bgn Wireless Half-size Mini PCIe Card [AR9283] - -pci:v0000168Cd0000002Asv00001A3Bsd00001067* - ID_PRODUCT_FROM_DATABASE=AW-NE771 802.11bgn Wireless Mini PCIe Card [AR9281] - -pci:v0000168Cd0000002Asv00001A3Bsd00001081* - ID_PRODUCT_FROM_DATABASE=AW-NE773 802.11abgn Wireless Half-size Mini PCIe Card [AR9280] - -pci:v0000168Cd0000002B* - ID_PRODUCT_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) - -pci:v0000168Cd0000002Bsv00001028sd00000204* - ID_PRODUCT_FROM_DATABASE=Wireless 1502 802.11bgn Half-size Mini PCIe Card - -pci:v0000168Cd0000002Bsv00001028sd00000205* - ID_PRODUCT_FROM_DATABASE=Wireless 1702 802.11bgn Half-size Mini PCIe Card [AR9002WB-1NGCD] - -pci:v0000168Cd0000002Bsv0000103Csd0000303F* - ID_PRODUCT_FROM_DATABASE=U98Z062.10 802.11bgn Wireless Half-size Mini PCIe Card - -pci:v0000168Cd0000002Bsv0000103Csd00003040* - ID_PRODUCT_FROM_DATABASE=U98Z062.12 802.11bgn Wireless Half-size Mini PCIe Card - -pci:v0000168Cd0000002Bsv0000105Bsd0000E017* - ID_PRODUCT_FROM_DATABASE=T77H126.00 802.11bgn Wireless Half-size Mini PCIe Card - -pci:v0000168Cd0000002Bsv0000105Bsd0000E023* - ID_PRODUCT_FROM_DATABASE=T77H121.04 802.11bgn Wireless Half-size Mini PCIe Card - -pci:v0000168Cd0000002Bsv00001113sd0000E811* - ID_PRODUCT_FROM_DATABASE=WN7811A (Toshiba PA3722U-1MPC) 802.11bgn Wireless Half-size Mini PCIe Card - -pci:v0000168Cd0000002Bsv0000185Fsd000030AF* - ID_PRODUCT_FROM_DATABASE=DNXA-95 802.11bgn Wireless Half-size Mini PCIe Card - -pci:v0000168Cd0000002Bsv00001931sd00000023* - ID_PRODUCT_FROM_DATABASE=Option GTM67x PCIe WiFi Adapter - -pci:v0000168Cd0000002Bsv00001A3Bsd00001089* - ID_PRODUCT_FROM_DATABASE=AW-NE785 / AW-NE785H 802.11bgn Wireless Full or Half-size Mini PCIe Card - -pci:v0000168Cd0000002Bsv00001A3Bsd00002C37* - ID_PRODUCT_FROM_DATABASE=AW-NB037H 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD] - -pci:v0000168Cd0000002Bsv00001B9Asd00000401* - ID_PRODUCT_FROM_DATABASE=XW204E 802.11bgn Wireless Half-size Mini PCIe Card - -pci:v0000168Cd0000002Bsv00001B9Asd00000C03* - ID_PRODUCT_FROM_DATABASE=WB214E 802.11bgn Wireless Half-size Mini PCIe Card [AR9002WB-1NGCD] - -pci:v0000168Cd0000002C* - ID_PRODUCT_FROM_DATABASE=AR2427 802.11bg Wireless Network Adapter (PCI-Express) - -pci:v0000168Cd0000002D* - ID_PRODUCT_FROM_DATABASE=AR9227 Wireless Network Adapter - -pci:v0000168Cd0000002E* - ID_PRODUCT_FROM_DATABASE=AR9287 Wireless Network Adapter (PCI-Express) - -pci:v0000168Cd00000030* - ID_PRODUCT_FROM_DATABASE=AR9300 Wireless LAN adaptor - -pci:v0000168Cd00000030sv0000103Csd00001627* - ID_PRODUCT_FROM_DATABASE=AR9380/HB112 802.11abgn 3×3 Wi-Fi Adapter - -pci:v0000168Cd00000030sv00001186sd00003A7E* - ID_PRODUCT_FROM_DATABASE=DWA-566 Wireless N 300 Dual Band PCIe Desktop Adapter - -pci:v0000168Cd00000030sv00001A56sd00002000* - ID_PRODUCT_FROM_DATABASE=Killer Wireless-N 1102 Half-size Mini PCIe Card [AR9382] - -pci:v0000168Cd00000030sv00001A56sd00002001* - ID_PRODUCT_FROM_DATABASE=Killer Wireless-N 1103 Half-size Mini PCIe Card [AR9380] - -pci:v0000168Cd00000032* - ID_PRODUCT_FROM_DATABASE=AR9485 Wireless Network Adapter - -pci:v0000168Cd00000032sv0000103Csd00001838* - ID_PRODUCT_FROM_DATABASE=AR9485/HB125 802.11bgn 1×1 Wi-Fi Adapter - -pci:v0000168Cd00000033* - ID_PRODUCT_FROM_DATABASE=AR9580 Wireless Network Adapter - -pci:v0000168Cd00000034* - ID_PRODUCT_FROM_DATABASE=AR9462 Wireless Network Adapter - -pci:v0000168Cd00000036* - ID_PRODUCT_FROM_DATABASE=AR9565 Wireless Network Adapter - -pci:v0000168Cd00000207* - ID_PRODUCT_FROM_DATABASE=AR5210 Wireless Network Adapter [AR5000 802.11a] - -pci:v0000168Cd00001014* - ID_PRODUCT_FROM_DATABASE=AR5212 802.11abg NIC - -pci:v0000168Cd00001014sv00001014sd0000058A* - ID_PRODUCT_FROM_DATABASE=ThinkPad 11a/b/g Wireless LAN Mini Express Adapter (AR5BXB6) - -pci:v0000168Cd00009013* - ID_PRODUCT_FROM_DATABASE=AR5002X Wireless Network Adapter - -pci:v0000168Cd0000FF19* - ID_PRODUCT_FROM_DATABASE=AR5006X Wireless Network Adapter - -pci:v0000168Cd0000FF1C* - ID_PRODUCT_FROM_DATABASE=AR5008 Wireless Network Adapter - -pci:v0000168Cd0000FF1D* - ID_PRODUCT_FROM_DATABASE=AR922x Wireless Network Adapter - -pci:v0000168Cd0000FF1Dsv0000168Csd0000EE1C* - ID_PRODUCT_FROM_DATABASE=AR9220-AC1A [AVM Fritz!Box FON WLAN 7270 v3] - -pci:v00001695* - ID_VENDOR_FROM_DATABASE=EPoX Computer Co., Ltd. - -pci:v0000169C* - ID_VENDOR_FROM_DATABASE=Netcell Corporation - -pci:v0000169Cd00000044* - ID_PRODUCT_FROM_DATABASE=Revolution Storage Processing Card - -pci:v0000169D* - ID_VENDOR_FROM_DATABASE=Club-3D VB (Wrong ID) - -pci:v000016A5* - ID_VENDOR_FROM_DATABASE=Tekram Technology Co.,Ltd. - -pci:v000016AB* - ID_VENDOR_FROM_DATABASE=Global Sun Technology Inc - -pci:v000016ABd00001100* - ID_PRODUCT_FROM_DATABASE=GL24110P - -pci:v000016ABd00001101* - ID_PRODUCT_FROM_DATABASE=PLX9052 PCMCIA-to-PCI Wireless LAN - -pci:v000016ABd00001102* - ID_PRODUCT_FROM_DATABASE=PCMCIA-to-PCI Wireless Network Bridge - -pci:v000016ABd00008501* - ID_PRODUCT_FROM_DATABASE=WL-8305 Wireless LAN PCI Adapter - -pci:v000016AE* - ID_VENDOR_FROM_DATABASE=SafeNet Inc - -pci:v000016AEd00000001* - ID_PRODUCT_FROM_DATABASE=SafeXcel 1140 - -pci:v000016AEd0000000A* - ID_PRODUCT_FROM_DATABASE=SafeXcel 1841 - -pci:v000016AEd00001141* - ID_PRODUCT_FROM_DATABASE=SafeXcel 1141 - -pci:v000016AEd00001841* - ID_PRODUCT_FROM_DATABASE=SafeXcel 1842 - -pci:v000016AF* - ID_VENDOR_FROM_DATABASE=SparkLAN Communications, Inc. - -pci:v000016B4* - ID_VENDOR_FROM_DATABASE=Aspex Semiconductor Ltd - -pci:v000016B8* - ID_VENDOR_FROM_DATABASE=Sonnet Technologies, Inc. - -pci:v000016BE* - ID_VENDOR_FROM_DATABASE=Creatix Polymedia GmbH - -pci:v000016C6* - ID_VENDOR_FROM_DATABASE=Micrel-Kendin - -pci:v000016C6d00008695* - ID_PRODUCT_FROM_DATABASE=Centaur KS8695 ARM processor - -pci:v000016C6d00008842* - ID_PRODUCT_FROM_DATABASE=KSZ8842-PMQL 2-Port Ethernet Switch - -pci:v000016C8* - ID_VENDOR_FROM_DATABASE=Octasic Inc. - -pci:v000016C9* - ID_VENDOR_FROM_DATABASE=EONIC B.V. The Netherlands - -pci:v000016CA* - ID_VENDOR_FROM_DATABASE=CENATEK Inc - -pci:v000016CAd00000001* - ID_PRODUCT_FROM_DATABASE=Rocket Drive DL - -pci:v000016CD* - ID_VENDOR_FROM_DATABASE=Advantech Co. Ltd - -pci:v000016CDd00000101* - ID_PRODUCT_FROM_DATABASE=DirectPCI SRAM for DPX-11x series - -pci:v000016CDd00000102* - ID_PRODUCT_FROM_DATABASE=DirectPCI SRAM for DPX-S/C/E-series - -pci:v000016CDd00000103* - ID_PRODUCT_FROM_DATABASE=DirectPCI ROM for DPX-11x series - -pci:v000016CDd00000104* - ID_PRODUCT_FROM_DATABASE=DirectPCI ROM for DPX-S/C/E-series - -pci:v000016CDd00000105* - ID_PRODUCT_FROM_DATABASE=DirectPCI I/O for DPX-114/DPX-115 - -pci:v000016CDd00000106* - ID_PRODUCT_FROM_DATABASE=DirectPCI I/O for DPX-116 - -pci:v000016CDd00000107* - ID_PRODUCT_FROM_DATABASE=DirectPCI I/O for DPX-116U - -pci:v000016CDd00000108* - ID_PRODUCT_FROM_DATABASE=DirectPCI I/O for DPX-117 - -pci:v000016CDd00000109* - ID_PRODUCT_FROM_DATABASE=DirectPCI I/O for DPX-112 - -pci:v000016CDd0000010A* - ID_PRODUCT_FROM_DATABASE=DirectPCI I/O for DPX-C/E-series - -pci:v000016CDd0000010B* - ID_PRODUCT_FROM_DATABASE=DirectPCI I/O for DPX-S series - -pci:v000016CE* - ID_VENDOR_FROM_DATABASE=Roland Corp. - -pci:v000016D5* - ID_VENDOR_FROM_DATABASE=Acromag, Inc. - -pci:v000016D5d00000504* - ID_PRODUCT_FROM_DATABASE=PMC-DX504 Reconfigurable FPGA with LVDS I/O - -pci:v000016D5d00000520* - ID_PRODUCT_FROM_DATABASE=PMC520 Serial Communication, 232 Octal - -pci:v000016D5d00000521* - ID_PRODUCT_FROM_DATABASE=PMC521 Serial Communication, 422/485 Octal - -pci:v000016D5d00001020* - ID_PRODUCT_FROM_DATABASE=PMC-AX1020 Reconfigurable FPGA with A/D & D/A - -pci:v000016D5d00001065* - ID_PRODUCT_FROM_DATABASE=PMC-AX1065 Reconfigurable FPGA with A/D & D/A - -pci:v000016D5d00002004* - ID_PRODUCT_FROM_DATABASE=PMC-DX2004 Reconfigurable FPGA with LVDS I/O - -pci:v000016D5d00002020* - ID_PRODUCT_FROM_DATABASE=PMC-AX2020 Reconfigurable FPGA with A/D & D/A - -pci:v000016D5d00002065* - ID_PRODUCT_FROM_DATABASE=PMC-AX2065 Reconfigurable FPGA with A/D & D/A - -pci:v000016D5d00003020* - ID_PRODUCT_FROM_DATABASE=PMC-AX3020 Reconfigurable FPGA with A/D & D/A - -pci:v000016D5d00003065* - ID_PRODUCT_FROM_DATABASE=PMC-AX3065 Reconfigurable FPGA with A/D & D/A - -pci:v000016D5d00004243* - ID_PRODUCT_FROM_DATABASE=PMC424, APC424, AcPC424 Digital I/O and Counter Timer Module - -pci:v000016D5d00004248* - ID_PRODUCT_FROM_DATABASE=PMC464, APC464, AcPC464 Digital I/O and Counter Timer Module - -pci:v000016D5d0000424B* - ID_PRODUCT_FROM_DATABASE=PMC-DX2002 Reconfigurable FPGA with Differential I/O - -pci:v000016D5d00004253* - ID_PRODUCT_FROM_DATABASE=PMC-DX503 Reconfigurable FPGA with TTL and Differential I/O - -pci:v000016D5d00004312* - ID_PRODUCT_FROM_DATABASE=PMC-CX1002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O - -pci:v000016D5d00004313* - ID_PRODUCT_FROM_DATABASE=PMC-CX1003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O - -pci:v000016D5d00004322* - ID_PRODUCT_FROM_DATABASE=PMC-CX2002 Reconfigurable Conduction-Cooled FPGA Virtex-II with Differential I/O - -pci:v000016D5d00004323* - ID_PRODUCT_FROM_DATABASE=PMC-CX2003 Reconfigurable Conduction-Cooled FPGA Virtex-II with CMOS and Differential I/O - -pci:v000016D5d00004350* - ID_PRODUCT_FROM_DATABASE=PMC-DX501 Reconfigurable Digital I/O Module - -pci:v000016D5d00004353* - ID_PRODUCT_FROM_DATABASE=PMC-DX2003 Reconfigurable FPGA with TTL and Differential I/O - -pci:v000016D5d00004357* - ID_PRODUCT_FROM_DATABASE=PMC-DX502 Reconfigurable Differential I/O Module - -pci:v000016D5d00004457* - ID_PRODUCT_FROM_DATABASE=PMC730, APC730, AcPC730 Multifunction Module - -pci:v000016D5d0000464D* - ID_PRODUCT_FROM_DATABASE=PMC408 32-Channel Digital Input/Output Module - -pci:v000016D5d00004850* - ID_PRODUCT_FROM_DATABASE=PMC220-16 12-Bit Analog Output Module - -pci:v000016D5d00004A42* - ID_PRODUCT_FROM_DATABASE=PMC483, APC483, AcPC483 Counter Timer Module - -pci:v000016D5d00004A50* - ID_PRODUCT_FROM_DATABASE=PMC484, APC484, AcPC484 Counter Timer Module - -pci:v000016D5d00004A56* - ID_PRODUCT_FROM_DATABASE=PMC230 16-Bit Analog Output Module - -pci:v000016D5d00004B47* - ID_PRODUCT_FROM_DATABASE=PMC330, APC330, AcPC330 Analog Input Module, 16-bit A/D - -pci:v000016D5d00004C40* - ID_PRODUCT_FROM_DATABASE=PMC-LX40 Reconfigurable Virtex-4 FPGA with plug-in I/O - -pci:v000016D5d00004C60* - ID_PRODUCT_FROM_DATABASE=PMC-LX60 Reconfigurable Virtex-4 FPGA with plug-in I/O - -pci:v000016D5d00004D4D* - ID_PRODUCT_FROM_DATABASE=PMC341, APC341, AcPC341 Analog Input Module, Simultaneous Sample & Hold - -pci:v000016D5d00004D4E* - ID_PRODUCT_FROM_DATABASE=PMC482, APC482, AcPC482 Counter Timer Board - -pci:v000016D5d0000524D* - ID_PRODUCT_FROM_DATABASE=PMC-DX2001 Reconfigurable FPGA with TTL I/O - -pci:v000016D5d00005335* - ID_PRODUCT_FROM_DATABASE=PMC-SX35 Reconfigurable Virtex-4 FPGA with plug-in I/O - -pci:v000016D5d00005456* - ID_PRODUCT_FROM_DATABASE=PMC470 48-Channel Digital Input/Output Module - -pci:v000016D5d00005601* - ID_PRODUCT_FROM_DATABASE=PMC-VLX85 Reconfigurable Virtex-5 FPGA with plug-in I/O - -pci:v000016D5d00005602* - ID_PRODUCT_FROM_DATABASE=PMC-VLX110 Reconfigurable Virtex-5 FPGA with plug-in I/O - -pci:v000016D5d00005603* - ID_PRODUCT_FROM_DATABASE=PMC-VSX95 Reconfigurable Virtex-5 FPGA with plug-in I/O - -pci:v000016D5d00005604* - ID_PRODUCT_FROM_DATABASE=PMC-VLX155 Reconfigurable Virtex-5 FPGA with plug-in I/O - -pci:v000016D5d00005605* - ID_PRODUCT_FROM_DATABASE=PMC-VFX70 Reconfigurable Virtex-5 FPGA with plug-in I/O - -pci:v000016D5d00005606* - ID_PRODUCT_FROM_DATABASE=PMC-VLX155-1M Reconfigurable Virtex-5 FPGA with plug-in I/O - -pci:v000016D5d00005701* - ID_PRODUCT_FROM_DATABASE=PMC-SLX150: Reconfigurable Spartan-6 FPGA with plug-in I/O - -pci:v000016D5d00005702* - ID_PRODUCT_FROM_DATABASE=PMC-SLX150-1M: Reconfigurable Spartan-6 FPGA with plug-in I/O - -pci:v000016D5d00005801* - ID_PRODUCT_FROM_DATABASE=XMC-VLX85 Reconfigurable Virtex-5 FPGA with plug-in I/O - -pci:v000016D5d00005802* - ID_PRODUCT_FROM_DATABASE=XMC-VLX110 Reconfigurable Virtex-5 FPGA with plug-in I/O - -pci:v000016D5d00005803* - ID_PRODUCT_FROM_DATABASE=XMC-VSX95 Reconfigurable Virtex-5 FPGA with plug-in I/O - -pci:v000016D5d00005804* - ID_PRODUCT_FROM_DATABASE=XMC-VLX155 Reconfigurable Virtex-5 FPGA with plug-in I/O - -pci:v000016D5d00005807* - ID_PRODUCT_FROM_DATABASE=XMC-SLX150: Reconfigurable Spartan-6 FPGA with plug-in I/O - -pci:v000016D5d00005808* - ID_PRODUCT_FROM_DATABASE=XMC-SLX150-1M: Reconfigurable Spartan-6 FPGA with plug-in I/O - -pci:v000016D5d00005901* - ID_PRODUCT_FROM_DATABASE=APCe8650 PCI Express IndustryPack Carrier Card - -pci:v000016D5d00006301* - ID_PRODUCT_FROM_DATABASE=XMC Module with user-configurable Virtex-6 FPGA, 240k logic cells, SFP front I/O - -pci:v000016D5d00006302* - ID_PRODUCT_FROM_DATABASE=XMC Module with user-configurable Virtex-6 FPGA, 365k logic cells, SFP front I/O - -pci:v000016D5d00006303* - ID_PRODUCT_FROM_DATABASE=XMC Module with user-configurable Virtex-6 FPGA, 240k logic cells, no front I/O - -pci:v000016D5d00006304* - ID_PRODUCT_FROM_DATABASE=XMC Module with user-configurable Virtex-6 FPGA, 365k logic cells, no front I/O - -pci:v000016DA* - ID_VENDOR_FROM_DATABASE=Advantech Co., Ltd. - -pci:v000016DAd00000011* - ID_PRODUCT_FROM_DATABASE=INES GPIB-PCI - -pci:v000016DF* - ID_VENDOR_FROM_DATABASE=PIKA Technologies Inc. - -pci:v000016E2* - ID_VENDOR_FROM_DATABASE=Geotest-MTS - -pci:v000016E3* - ID_VENDOR_FROM_DATABASE=European Space Agency - -pci:v000016E3d00001E0F* - ID_PRODUCT_FROM_DATABASE=LEON2FT Processor - -pci:v000016E5* - ID_VENDOR_FROM_DATABASE=Intellon Corp. - -pci:v000016E5d00006000* - ID_PRODUCT_FROM_DATABASE=INT6000 Ethernet-to-Powerline Bridge [HomePlug AV] - -pci:v000016E5d00006300* - ID_PRODUCT_FROM_DATABASE=INT6300 Ethernet-to-Powerline Bridge [HomePlug AV] - -pci:v000016EC* - ID_VENDOR_FROM_DATABASE=U.S. Robotics - -pci:v000016ECd000000ED* - ID_PRODUCT_FROM_DATABASE=USR997900 - -pci:v000016ECd00000116* - ID_PRODUCT_FROM_DATABASE=USR997902 10/100/1000 Mbps PCI Network Card - -pci:v000016ECd00002F00* - ID_PRODUCT_FROM_DATABASE=USR5660A (USR265660A, USR5660A-BP) 56K PCI Faxmodem - -pci:v000016ECd00003685* - ID_PRODUCT_FROM_DATABASE=Wireless Access PCI Adapter Model 022415 - -pci:v000016ECd00004320* - ID_PRODUCT_FROM_DATABASE=USR997904 10/100/1000 64-bit NIC (Marvell Yukon) - -pci:v000016ECd0000AB06* - ID_PRODUCT_FROM_DATABASE=USR997901A 10/100 Cardbus NIC - -pci:v000016ED* - ID_VENDOR_FROM_DATABASE=Sycron N. V. - -pci:v000016EDd00001001* - ID_PRODUCT_FROM_DATABASE=UMIO communication card - -pci:v000016F3* - ID_VENDOR_FROM_DATABASE=Jetway Information Co., Ltd. - -pci:v000016F4* - ID_VENDOR_FROM_DATABASE=Vweb Corp - -pci:v000016F4d00008000* - ID_PRODUCT_FROM_DATABASE=VW2010 - -pci:v000016F6* - ID_VENDOR_FROM_DATABASE=VideoTele.com, Inc. - -pci:v00001702* - ID_VENDOR_FROM_DATABASE=Internet Machines Corporation (IMC) - -pci:v00001705* - ID_VENDOR_FROM_DATABASE=Digital First, Inc. - -pci:v0000170B* - ID_VENDOR_FROM_DATABASE=NetOctave - -pci:v0000170Bd00000100* - ID_PRODUCT_FROM_DATABASE=NSP2000-SSL crypto accelerator - -pci:v0000170C* - ID_VENDOR_FROM_DATABASE=YottaYotta Inc. - -pci:v00001719* - ID_VENDOR_FROM_DATABASE=EZChip Technologies - -pci:v00001725* - ID_VENDOR_FROM_DATABASE=Vitesse Semiconductor - -pci:v00001725d00007174* - ID_PRODUCT_FROM_DATABASE=VSC7174 PCI/PCI-X Serial ATA Host Bus Controller - -pci:v0000172A* - ID_VENDOR_FROM_DATABASE=Accelerated Encryption - -pci:v0000172Ad000013C8* - ID_PRODUCT_FROM_DATABASE=AEP SureWare Runner 1000V3 - -pci:v00001734* - ID_VENDOR_FROM_DATABASE=Fujitsu Technology Solutions - -pci:v00001735* - ID_VENDOR_FROM_DATABASE=Aten International Co. Ltd. - -pci:v00001737* - ID_VENDOR_FROM_DATABASE=Linksys - -pci:v00001737d00000029* - ID_PRODUCT_FROM_DATABASE=WPG54G ver. 4 PCI Card - -pci:v00001737d00001032* - ID_PRODUCT_FROM_DATABASE=Gigabit Network Adapter - -pci:v00001737d00001032sv00001737sd00000015* - ID_PRODUCT_FROM_DATABASE=EG1032 v2 Instant Gigabit Network Adapter - -pci:v00001737d00001032sv00001737sd00000024* - ID_PRODUCT_FROM_DATABASE=EG1032 v3 Instant Gigabit Network Adapter - -pci:v00001737d00001064* - ID_PRODUCT_FROM_DATABASE=Gigabit Network Adapter - -pci:v00001737d00001064sv00001737sd00000016* - ID_PRODUCT_FROM_DATABASE=EG1064 v2 Instant Gigabit Network Adapter - -pci:v00001737d0000AB08* - ID_PRODUCT_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet - -pci:v00001737d0000AB09* - ID_PRODUCT_FROM_DATABASE=21x4x DEC-Tulip compatible 10/100 Ethernet - -pci:v0000173B* - ID_VENDOR_FROM_DATABASE=Altima (nee Broadcom) - -pci:v0000173Bd000003E8* - ID_PRODUCT_FROM_DATABASE=AC1000 Gigabit Ethernet - -pci:v0000173Bd000003E9* - ID_PRODUCT_FROM_DATABASE=AC1001 Gigabit Ethernet - -pci:v0000173Bd000003EA* - ID_PRODUCT_FROM_DATABASE=AC9100 Gigabit Ethernet - -pci:v0000173Bd000003EAsv0000173Bsd00000001* - ID_PRODUCT_FROM_DATABASE=AC1002 - -pci:v0000173Bd000003EB* - ID_PRODUCT_FROM_DATABASE=AC1003 Gigabit Ethernet - -pci:v00001743* - ID_VENDOR_FROM_DATABASE=Peppercon AG - -pci:v00001743d00008139* - ID_PRODUCT_FROM_DATABASE=ROL/F-100 Fast Ethernet Adapter with ROL - -pci:v00001745* - ID_VENDOR_FROM_DATABASE=ViXS Systems, Inc. - -pci:v00001745d00002020* - ID_PRODUCT_FROM_DATABASE=XCode II Series - -pci:v00001745d00002100* - ID_PRODUCT_FROM_DATABASE=XCode 2100 Series - -pci:v00001749* - ID_VENDOR_FROM_DATABASE=RLX Technologies - -pci:v0000174B* - ID_VENDOR_FROM_DATABASE=PC Partner Limited - -pci:v0000174D* - ID_VENDOR_FROM_DATABASE=WellX Telecom SA - -pci:v0000175C* - ID_VENDOR_FROM_DATABASE=AudioScience Inc - -pci:v0000175E* - ID_VENDOR_FROM_DATABASE=Sanera Systems, Inc. - -pci:v00001760* - ID_VENDOR_FROM_DATABASE=TEDIA spol. s r. o. - -pci:v00001771* - ID_VENDOR_FROM_DATABASE=InnoVISION Multimedia Ltd. - -pci:v00001775* - ID_VENDOR_FROM_DATABASE=GE Intelligent Platforms - -pci:v0000177D* - ID_VENDOR_FROM_DATABASE=Cavium Networks - -pci:v0000177Dd00000001* - ID_PRODUCT_FROM_DATABASE=Nitrox XL N1 - -pci:v0000177Dd00000003* - ID_PRODUCT_FROM_DATABASE=Nitrox XL N1 Lite - -pci:v0000177Dd00000004* - ID_PRODUCT_FROM_DATABASE=Octeon (and older) FIPS - -pci:v0000177Dd00000005* - ID_PRODUCT_FROM_DATABASE=Octeon CN38XX Network Processor Pass 3.x - -pci:v0000177Dd00000006* - ID_PRODUCT_FROM_DATABASE=RoHS - -pci:v0000177Dd00000010* - ID_PRODUCT_FROM_DATABASE=Nitrox XL NPX - -pci:v0000177Dd00000020* - ID_PRODUCT_FROM_DATABASE=Octeon CN31XX Network Processor - -pci:v0000177Dd00000030* - ID_PRODUCT_FROM_DATABASE=Octeon CN30XX Network Processor - -pci:v0000177Dd00000040* - ID_PRODUCT_FROM_DATABASE=Octeon CN58XX Network Processor - -pci:v0000177Dd00000050* - ID_PRODUCT_FROM_DATABASE=Octeon CN57XX Network Processor (CN54XX/CN55XX/CN56XX) - -pci:v0000177Dd00000070* - ID_PRODUCT_FROM_DATABASE=Octeon CN50XX Network Processor - -pci:v0000177Dd00000080* - ID_PRODUCT_FROM_DATABASE=Octeon CN52XX Network Processor - -pci:v0000177Dd00000090* - ID_PRODUCT_FROM_DATABASE=Octeon II CN63XX Network Processor - -pci:v0000177Dd00000091* - ID_PRODUCT_FROM_DATABASE=Octeon II CN68XX Network Processor - -pci:v0000177Dd00000092* - ID_PRODUCT_FROM_DATABASE=Octeon II CN65XX Network Processor - -pci:v0000177Dd00000093* - ID_PRODUCT_FROM_DATABASE=Octeon II CN61XX Network Processor - -pci:v0000177Dd00000094* - ID_PRODUCT_FROM_DATABASE=Octeon Fusion CNF71XX Cell processor - -pci:v0000177Dd00000095* - ID_PRODUCT_FROM_DATABASE=Octeon III CN78XX Network Processor - -pci:v0000177Dd00000096* - ID_PRODUCT_FROM_DATABASE=Octeon III CN70XX Network Processor - -pci:v00001787* - ID_VENDOR_FROM_DATABASE=Hightech Information System Ltd. - -pci:v00001789* - ID_VENDOR_FROM_DATABASE=Ennyah Technologies Corp. - -pci:v00001796* - ID_VENDOR_FROM_DATABASE=Research Centre Juelich - -pci:v00001796d00000001* - ID_PRODUCT_FROM_DATABASE=SIS1100 [Gigabit link] - -pci:v00001796d00000002* - ID_PRODUCT_FROM_DATABASE=HOTlink - -pci:v00001796d00000003* - ID_PRODUCT_FROM_DATABASE=Counter Timer - -pci:v00001796d00000004* - ID_PRODUCT_FROM_DATABASE=CAMAC Controller - -pci:v00001796d00000005* - ID_PRODUCT_FROM_DATABASE=PROFIBUS - -pci:v00001796d00000006* - ID_PRODUCT_FROM_DATABASE=AMCC HOTlink - -pci:v00001796d0000000D* - ID_PRODUCT_FROM_DATABASE=Synchronisation Slave - -pci:v00001796d0000000E* - ID_PRODUCT_FROM_DATABASE=SIS1100-eCMC - -pci:v00001796d0000000F* - ID_PRODUCT_FROM_DATABASE=TDC (GPX) - -pci:v00001796d00000010* - ID_PRODUCT_FROM_DATABASE=PCIe Counter Timer - -pci:v00001796d00000011* - ID_PRODUCT_FROM_DATABASE=SIS1100-e single link - -pci:v00001796d00000012* - ID_PRODUCT_FROM_DATABASE=SIS1100-e quad link - -pci:v00001797* - ID_VENDOR_FROM_DATABASE=Techwell Inc. - -pci:v00001797d00006801* - ID_PRODUCT_FROM_DATABASE=TW6802 multimedia video card - -pci:v00001797d00006802* - ID_PRODUCT_FROM_DATABASE=TW6802 multimedia other device - -pci:v00001797d00006810* - ID_PRODUCT_FROM_DATABASE=TW6816 multimedia video controller - -pci:v00001797d00006811* - ID_PRODUCT_FROM_DATABASE=TW6816 multimedia video controller - -pci:v00001797d00006812* - ID_PRODUCT_FROM_DATABASE=TW6816 multimedia video controller - -pci:v00001797d00006813* - ID_PRODUCT_FROM_DATABASE=TW6816 multimedia video controller - -pci:v00001799* - ID_VENDOR_FROM_DATABASE=Belkin - -pci:v00001799d00006001* - ID_PRODUCT_FROM_DATABASE=F5D6001 Wireless PCI Card [Realtek RTL8180] - -pci:v00001799d00006020* - ID_PRODUCT_FROM_DATABASE=F5D6020 v3000 Wireless PCMCIA Card [Realtek RTL8180] - -pci:v00001799d00006060* - ID_PRODUCT_FROM_DATABASE=F5D6060 Wireless PDA Card - -pci:v00001799d0000700F* - ID_PRODUCT_FROM_DATABASE=F5D7000 v7000 Wireless G Desktop Card [Realtek RTL8185] - -pci:v00001799d0000701F* - ID_PRODUCT_FROM_DATABASE=F5D7010 v7000 Wireless G Notebook Card [Realtek RTL8185] - -pci:v0000179A* - ID_VENDOR_FROM_DATABASE=id Quantique - -pci:v0000179Ad00000001* - ID_PRODUCT_FROM_DATABASE=Quantis PCI 16Mbps - -pci:v0000179C* - ID_VENDOR_FROM_DATABASE=Data Patterns - -pci:v0000179Cd00000557* - ID_PRODUCT_FROM_DATABASE=DP-PCI-557 [PCI 1553B] - -pci:v0000179Cd00000566* - ID_PRODUCT_FROM_DATABASE=DP-PCI-566 [Intelligent PCI 1553B] - -pci:v0000179Cd00001152* - ID_PRODUCT_FROM_DATABASE=DP-cPCI-1152 (8-channel Isolated ADC Module) - -pci:v0000179Cd00005031* - ID_PRODUCT_FROM_DATABASE=DP-CPCI-5031-Synchro Module - -pci:v0000179Cd00005112* - ID_PRODUCT_FROM_DATABASE=DP-cPCI-5112 [MM-Carrier] - -pci:v0000179Cd00005121* - ID_PRODUCT_FROM_DATABASE=DP-CPCI-5121-IP Carrier - -pci:v0000179Cd00005211* - ID_PRODUCT_FROM_DATABASE=DP-CPCI-5211-IP Carrier - -pci:v0000179Cd00005679* - ID_PRODUCT_FROM_DATABASE=AGE Display Module - -pci:v000017A0* - ID_VENDOR_FROM_DATABASE=Genesys Logic, Inc - -pci:v000017A0d00007163* - ID_PRODUCT_FROM_DATABASE=GL9701 PCIe to PCI Bridge - -pci:v000017A0d00008083* - ID_PRODUCT_FROM_DATABASE=GL880 USB 1.1 UHCI controller - -pci:v000017A0d00008084* - ID_PRODUCT_FROM_DATABASE=GL880 USB 2.0 EHCI controller - -pci:v000017AA* - ID_VENDOR_FROM_DATABASE=Lenovo - -pci:v000017AB* - ID_VENDOR_FROM_DATABASE=Phillips Components - -pci:v000017AF* - ID_VENDOR_FROM_DATABASE=Hightech Information System Ltd. - -pci:v000017B3* - ID_VENDOR_FROM_DATABASE=Hawking Technologies - -pci:v000017B3d0000AB08* - ID_PRODUCT_FROM_DATABASE=PN672TX 10/100 Ethernet - -pci:v000017B4* - ID_VENDOR_FROM_DATABASE=Indra Networks, Inc. - -pci:v000017B4d00000011* - ID_PRODUCT_FROM_DATABASE=WebEnhance 100 GZIP Compression Card - -pci:v000017B4d00000012* - ID_PRODUCT_FROM_DATABASE=WebEnhance 200 GZIP Compression Card - -pci:v000017B4d00000015* - ID_PRODUCT_FROM_DATABASE=WebEnhance 300 GZIP Compression Card - -pci:v000017B4d00000016* - ID_PRODUCT_FROM_DATABASE=StorCompress 300 GZIP Compression Card - -pci:v000017B4d00000017* - ID_PRODUCT_FROM_DATABASE=StorSecure 300 GZIP Compression and AES Encryption Card - -pci:v000017C0* - ID_VENDOR_FROM_DATABASE=Wistron Corp. - -pci:v000017C2* - ID_VENDOR_FROM_DATABASE=Newisys, Inc. - -pci:v000017CB* - ID_VENDOR_FROM_DATABASE=Airgo Networks, Inc. - -pci:v000017CBd00000001* - ID_PRODUCT_FROM_DATABASE=AGN100 802.11 a/b/g True MIMO Wireless Card - -pci:v000017CBd00000001sv00001385sd00005C00* - ID_PRODUCT_FROM_DATABASE=WGM511 Pre-N 802.11g Wireless CardBus Adapter - -pci:v000017CBd00000001sv00001737sd00000045* - ID_PRODUCT_FROM_DATABASE=WMP54GX v1 802.11g Wireless-G PCI Adapter with SRX - -pci:v000017CBd00000002* - ID_PRODUCT_FROM_DATABASE=AGN300 802.11 a/b/g True MIMO Wireless Card - -pci:v000017CBd00000002sv00001385sd00006D00* - ID_PRODUCT_FROM_DATABASE=WPNT511 RangeMax 240 Mbps Wireless CardBus Adapter - -pci:v000017CBd00000002sv00001737sd00000054* - ID_PRODUCT_FROM_DATABASE=WPC54GX4 v1 802.11g Wireless-G Notebook Adapter with SRX400 - -pci:v000017CC* - ID_VENDOR_FROM_DATABASE=NetChip Technology, Inc - -pci:v000017CCd00002280* - ID_PRODUCT_FROM_DATABASE=USB 2.0 - -pci:v000017CF* - ID_VENDOR_FROM_DATABASE=Z-Com, Inc. - -pci:v000017D3* - ID_VENDOR_FROM_DATABASE=Areca Technology Corp. - -pci:v000017D3d00001110* - ID_PRODUCT_FROM_DATABASE=ARC-1110 4-Port PCI-X to SATA RAID Controller - -pci:v000017D3d00001120* - ID_PRODUCT_FROM_DATABASE=ARC-1120 8-Port PCI-X to SATA RAID Controller - -pci:v000017D3d00001130* - ID_PRODUCT_FROM_DATABASE=ARC-1130 12-Port PCI-X to SATA RAID Controller - -pci:v000017D3d00001160* - ID_PRODUCT_FROM_DATABASE=ARC-1160 16-Port PCI-X to SATA RAID Controller - -pci:v000017D3d00001170* - ID_PRODUCT_FROM_DATABASE=ARC-1170 24-Port PCI-X to SATA RAID Controller - -pci:v000017D3d00001201* - ID_PRODUCT_FROM_DATABASE=ARC-1200 2-Port PCI-Express to SATA II RAID Controller - -pci:v000017D3d00001210* - ID_PRODUCT_FROM_DATABASE=ARC-1210 4-Port PCI-Express to SATA RAID Controller - -pci:v000017D3d00001220* - ID_PRODUCT_FROM_DATABASE=ARC-1220 8-Port PCI-Express to SATA RAID Controller - -pci:v000017D3d00001222* - ID_PRODUCT_FROM_DATABASE=ARC-1222 8-Port PCI-Express to SAS/SATA II RAID Controller - -pci:v000017D3d00001230* - ID_PRODUCT_FROM_DATABASE=ARC-1230 12-Port PCI-Express to SATA RAID Controller - -pci:v000017D3d00001260* - ID_PRODUCT_FROM_DATABASE=ARC-1260 16-Port PCI-Express to SATA RAID Controller - -pci:v000017D3d00001280* - ID_PRODUCT_FROM_DATABASE=ARC-1280/1280ML 24-Port PCI-Express to SATA II RAID Controller - -pci:v000017D3d00001280sv000017D3sd00001221* - ID_PRODUCT_FROM_DATABASE=ARC-1221 8-Port PCI-Express to SATA RAID Controller - -pci:v000017D3d00001300* - ID_PRODUCT_FROM_DATABASE=ARC-1300ix-16 16-Port PCI-Express to SAS Non-RAID Host Adapter - -pci:v000017D3d00001680* - ID_PRODUCT_FROM_DATABASE=ARC-1680 8 port PCIe/PCI-X to SAS/SATA II RAID Controller - -pci:v000017D3d00001680sv000017D3sd00001212* - ID_PRODUCT_FROM_DATABASE=ARC-1212 4-Port PCIe to SAS/SATA II RAID Controller - -pci:v000017D3d00001880* - ID_PRODUCT_FROM_DATABASE=ARC-1880 8/12 port PCIe/PCI-X to SAS/SATA II RAID Controller - -pci:v000017D5* - ID_VENDOR_FROM_DATABASE=Exar Corp. - -pci:v000017D5d00005731* - ID_PRODUCT_FROM_DATABASE=Xframe 10-Gigabit Ethernet PCI-X - -pci:v000017D5d00005732* - ID_PRODUCT_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 - -pci:v000017D5d00005831* - ID_PRODUCT_FROM_DATABASE=Xframe 10-Gigabit Ethernet PCI-X - -pci:v000017D5d00005831sv0000103Csd000012D5* - ID_PRODUCT_FROM_DATABASE=PCI-X 133MHz 10GbE SR Fiber - -pci:v000017D5d00005831sv000010A9sd00008020* - ID_PRODUCT_FROM_DATABASE=Single Port 10-Gigabit Ethernet (PCI-X, Fiber) - -pci:v000017D5d00005831sv000010A9sd00008024* - ID_PRODUCT_FROM_DATABASE=Single Port 10-Gigabit Ethernet (PCI-X, Fiber) - -pci:v000017D5d00005832* - ID_PRODUCT_FROM_DATABASE=Xframe II 10-Gigabit Ethernet PCI-X 2.0 - -pci:v000017D5d00005832sv0000103Csd00001337* - ID_PRODUCT_FROM_DATABASE=PCI-X 266MHz 10GigE SR [AD385A] - -pci:v000017D5d00005832sv000010A9sd00008021* - ID_PRODUCT_FROM_DATABASE=Single Port 10-Gigabit Ethernet II (PCI-X, Fiber) - -pci:v000017D5d00005832sv000017D5sd00006020* - ID_PRODUCT_FROM_DATABASE=Xframe II SR - -pci:v000017D5d00005832sv000017D5sd00006021* - ID_PRODUCT_FROM_DATABASE=Xframe II SR, Low Profile - -pci:v000017D5d00005832sv000017D5sd00006022* - ID_PRODUCT_FROM_DATABASE=Xframe E SR - -pci:v000017D5d00005832sv000017D5sd00006420* - ID_PRODUCT_FROM_DATABASE=Xframe II LR - -pci:v000017D5d00005832sv000017D5sd00006421* - ID_PRODUCT_FROM_DATABASE=Xframe II LR, Low Profile - -pci:v000017D5d00005832sv000017D5sd00006422* - ID_PRODUCT_FROM_DATABASE=Xframe E LR - -pci:v000017D5d00005832sv000017D5sd00006C20* - ID_PRODUCT_FROM_DATABASE=Xframe II CX4 - -pci:v000017D5d00005832sv000017D5sd00006C21* - ID_PRODUCT_FROM_DATABASE=Xframe II CX4, Low Profile - -pci:v000017D5d00005832sv000017D5sd00006C22* - ID_PRODUCT_FROM_DATABASE=Xframe E CX4 - -pci:v000017D5d00005833* - ID_PRODUCT_FROM_DATABASE=X3100 Series 10 Gigabit Ethernet PCIe - -pci:v000017D5d00005833sv000017D5sd00006030* - ID_PRODUCT_FROM_DATABASE=X3110 Single Port SR - -pci:v000017D5d00005833sv000017D5sd00006031* - ID_PRODUCT_FROM_DATABASE=X3120 Dual Port SR - -pci:v000017D5d00005833sv000017D5sd00006430* - ID_PRODUCT_FROM_DATABASE=X3110 Single Port LR - -pci:v000017D5d00005833sv000017D5sd00006431* - ID_PRODUCT_FROM_DATABASE=X3120 Dual Port LR - -pci:v000017D5d00005833sv000017D5sd00007030* - ID_PRODUCT_FROM_DATABASE=X3110 Single Port LRM - -pci:v000017D5d00005833sv000017D5sd00007031* - ID_PRODUCT_FROM_DATABASE=X3120 Dual Port LRM - -pci:v000017D5d00005833sv000017D5sd00007430* - ID_PRODUCT_FROM_DATABASE=X3110 Single Port 10GBase-T - -pci:v000017D5d00005833sv000017D5sd00007431* - ID_PRODUCT_FROM_DATABASE=X3120 Dual Port 10GBase-T - -pci:v000017D5d00005833sv000017D5sd00007830* - ID_PRODUCT_FROM_DATABASE=X3110 Single Port 10GBase-CR - -pci:v000017D5d00005833sv000017D5sd00007831* - ID_PRODUCT_FROM_DATABASE=X3120 Dual Port 10GBase-CR - -pci:v000017DB* - ID_VENDOR_FROM_DATABASE=Cray Inc - -pci:v000017DBd00000101* - ID_PRODUCT_FROM_DATABASE=XT Series [Seastar] 3D Toroidal Router - -pci:v000017DE* - ID_VENDOR_FROM_DATABASE=KWorld Computer Co. Ltd. - -pci:v000017E4* - ID_VENDOR_FROM_DATABASE=Sectra AB - -pci:v000017E4d00000001* - ID_PRODUCT_FROM_DATABASE=KK671 Cardbus encryption board - -pci:v000017E4d00000002* - ID_PRODUCT_FROM_DATABASE=KK672 Cardbus encryption board - -pci:v000017E6* - ID_VENDOR_FROM_DATABASE=Entropic Communications Inc. - -pci:v000017E6d00000010* - ID_PRODUCT_FROM_DATABASE=EN2010 [c.Link] MoCA Network Controller (Coax, PCI interface) - -pci:v000017E6d00000011* - ID_PRODUCT_FROM_DATABASE=EN2010 [c.Link] MoCA Network Controller (Coax, MPEG interface) - -pci:v000017E6d00000021* - ID_PRODUCT_FROM_DATABASE=EN2210 [c.Link] MoCA Network Controller (Coax) - -pci:v000017E6d00000025* - ID_PRODUCT_FROM_DATABASE=EN2510 [c.Link] MoCA Network Controller (Coax, PCIe interface) - -pci:v000017E6d00000027* - ID_PRODUCT_FROM_DATABASE=EN2710 [c.Link] MoCA 2.0 Network Controller (Coax, PCIe interface) - -pci:v000017EE* - ID_VENDOR_FROM_DATABASE=Connect Components Ltd - -pci:v000017F2* - ID_VENDOR_FROM_DATABASE=Albatron Corp. - -pci:v000017F3* - ID_VENDOR_FROM_DATABASE=RDC Semiconductor, Inc. - -pci:v000017F3d00001010* - ID_PRODUCT_FROM_DATABASE=R1010 IDE Controller - -pci:v000017F3d00006020* - ID_PRODUCT_FROM_DATABASE=R6020 North Bridge - -pci:v000017F3d00006021* - ID_PRODUCT_FROM_DATABASE=R6021 Host Bridge - -pci:v000017F3d00006030* - ID_PRODUCT_FROM_DATABASE=R6030 ISA Bridge - -pci:v000017F3d00006031* - ID_PRODUCT_FROM_DATABASE=R6031 ISA Bridge - -pci:v000017F3d00006040* - ID_PRODUCT_FROM_DATABASE=R6040 MAC Controller - -pci:v000017F3d00006060* - ID_PRODUCT_FROM_DATABASE=R6060 USB 1.1 Controller - -pci:v000017F3d00006061* - ID_PRODUCT_FROM_DATABASE=R6061 USB 2.0 Controller - -pci:v000017F7* - ID_VENDOR_FROM_DATABASE=Topdek Semiconductor Inc. - -pci:v000017F9* - ID_VENDOR_FROM_DATABASE=Gemtek Technology Co., Ltd - -pci:v000017FC* - ID_VENDOR_FROM_DATABASE=IOGEAR, Inc. - -pci:v000017FE* - ID_VENDOR_FROM_DATABASE=InProComm Inc. - -pci:v000017FEd00002120* - ID_PRODUCT_FROM_DATABASE=IPN 2120 802.11b - -pci:v000017FEd00002120sv00001737sd00000020* - ID_PRODUCT_FROM_DATABASE=WMP11 v4 802.11b Wireless-B PCI Adapter - -pci:v000017FEd00002220* - ID_PRODUCT_FROM_DATABASE=IPN 2220 802.11g - -pci:v000017FEd00002220sv00001468sd00000305* - ID_PRODUCT_FROM_DATABASE=T60N871 802.11g Mini PCI Wireless Adapter - -pci:v000017FEd00002220sv00001737sd00000029* - ID_PRODUCT_FROM_DATABASE=WPC54G v4 802.11g Wireless-G Notebook Adapter - -pci:v000017FF* - ID_VENDOR_FROM_DATABASE=Benq Corporation - -pci:v00001803* - ID_VENDOR_FROM_DATABASE=ProdaSafe GmbH - -pci:v00001805* - ID_VENDOR_FROM_DATABASE=Euresys S.A. - -pci:v00001809* - ID_VENDOR_FROM_DATABASE=Lumanate, Inc. - -pci:v00001813* - ID_VENDOR_FROM_DATABASE=Ambient Technologies Inc - -pci:v00001813d00004000* - ID_PRODUCT_FROM_DATABASE=HaM controllerless modem - -pci:v00001813d00004000sv000016BEsd00000001* - ID_PRODUCT_FROM_DATABASE=V9x HAM Data Fax Modem - -pci:v00001813d00004100* - ID_PRODUCT_FROM_DATABASE=HaM plus Data Fax Modem - -pci:v00001813d00004100sv000016BEsd00000002* - ID_PRODUCT_FROM_DATABASE=V9x HAM 1394 - -pci:v00001814* - ID_VENDOR_FROM_DATABASE=Ralink corp. - -pci:v00001814d00000101* - ID_PRODUCT_FROM_DATABASE=Wireless PCI Adapter RT2400 / RT2460 - -pci:v00001814d00000101sv00001043sd00000127* - ID_PRODUCT_FROM_DATABASE=WiFi-b add-on Card - -pci:v00001814d00000101sv00001371sd00000010* - ID_PRODUCT_FROM_DATABASE=Minitar MNW2BPCI Wireless PCI Card - -pci:v00001814d00000101sv00001462sd00006828* - ID_PRODUCT_FROM_DATABASE=PC11B2 (MS-6828) Wireless 11b PCI Card - -pci:v00001814d00000200* - ID_PRODUCT_FROM_DATABASE=RT2500 802.11g PCI [PC54G2] - -pci:v00001814d00000201* - ID_PRODUCT_FROM_DATABASE=RT2500 Wireless 802.11bg - -pci:v00001814d00000201sv00001043sd0000130F* - ID_PRODUCT_FROM_DATABASE=WL-130g - -pci:v00001814d00000201sv00001186sd00003C00* - ID_PRODUCT_FROM_DATABASE=DWL-G650X Wireless 11g CardBus Adapter - -pci:v00001814d00000201sv00001371sd0000001E* - ID_PRODUCT_FROM_DATABASE=CWC-854 Wireless-G CardBus Adapter - -pci:v00001814d00000201sv00001371sd0000001F* - ID_PRODUCT_FROM_DATABASE=CWM-854 Wireless-G Mini PCI Adapter - -pci:v00001814d00000201sv00001371sd00000020* - ID_PRODUCT_FROM_DATABASE=CWP-854 Wireless-G PCI Adapter - -pci:v00001814d00000201sv00001458sd0000E381* - ID_PRODUCT_FROM_DATABASE=GN-WMKG 802.11b/g Wireless CardBus Adapter - -pci:v00001814d00000201sv00001458sd0000E931* - ID_PRODUCT_FROM_DATABASE=GN-WIKG 802.11b/g mini-PCI Adapter - -pci:v00001814d00000201sv00001462sd00006833* - ID_PRODUCT_FROM_DATABASE=Unknown 802.11g mini-PCI Adapter - -pci:v00001814d00000201sv00001462sd00006835* - ID_PRODUCT_FROM_DATABASE=Wireless 11G CardBus CB54G2 - -pci:v00001814d00000201sv00001737sd00000032* - ID_PRODUCT_FROM_DATABASE=WMP54G v4.0 PCI Adapter - -pci:v00001814d00000201sv00001799sd0000700A* - ID_PRODUCT_FROM_DATABASE=F5D7000 v2000/v3000 Wireless G Desktop Card - -pci:v00001814d00000201sv00001799sd0000701A* - ID_PRODUCT_FROM_DATABASE=F5D7010 v2000/v3000 Wireless G Notebook Card - -pci:v00001814d00000201sv00001814sd00002560* - ID_PRODUCT_FROM_DATABASE=RT2500 Wireless 802.11bg - -pci:v00001814d00000201sv0000182Dsd00009073* - ID_PRODUCT_FROM_DATABASE=WL-115 Wireless Network PCI Adapter - -pci:v00001814d00000201sv0000185Fsd000022A0* - ID_PRODUCT_FROM_DATABASE=CN-WF513 Wireless Cardbus Adapter - -pci:v00001814d00000201sv000018EBsd00005312* - ID_PRODUCT_FROM_DATABASE=WL531P IEEE 802.11g PCI Card-EU - -pci:v00001814d00000201sv00001948sd00003C00* - ID_PRODUCT_FROM_DATABASE=C54RC v1 Wireless 11g CardBus Adapter - -pci:v00001814d00000201sv00001948sd00003C01* - ID_PRODUCT_FROM_DATABASE=C54Ri v1 Wireless 11g PCI Adapter - -pci:v00001814d00000300* - ID_PRODUCT_FROM_DATABASE=Wireless Adapter Canyon CN-WF511 - -pci:v00001814d00000301* - ID_PRODUCT_FROM_DATABASE=RT2561/RT61 802.11g PCI - -pci:v00001814d00000301sv00001186sd00003C08* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E1) - -pci:v00001814d00000301sv00001186sd00003C09* - ID_PRODUCT_FROM_DATABASE=DWL-G510 Rev C - -pci:v00001814d00000301sv000013D1sd0000ABE3* - ID_PRODUCT_FROM_DATABASE=miniPCI Pluscom 802.11 a/b/g - -pci:v00001814d00000301sv00001458sd0000E933* - ID_PRODUCT_FROM_DATABASE=GN-WI01GS - -pci:v00001814d00000301sv00001458sd0000E934* - ID_PRODUCT_FROM_DATABASE=GN-WP01GS - -pci:v00001814d00000301sv00001737sd00000055* - ID_PRODUCT_FROM_DATABASE=WMP54G v4.1 - -pci:v00001814d00000301sv00001799sd0000700E* - ID_PRODUCT_FROM_DATABASE=F5D7000 v6000 Wireless G Desktop Card - -pci:v00001814d00000301sv00001799sd0000701E* - ID_PRODUCT_FROM_DATABASE=F5D7010 v6000 Wireless G Notebook Card - -pci:v00001814d00000301sv000017F9sd00000012* - ID_PRODUCT_FROM_DATABASE=AWLC3026T 802.11g Wireless CardBus Adapter - -pci:v00001814d00000301sv00001814sd00002561* - ID_PRODUCT_FROM_DATABASE=EW-7108PCg/EW-7128g - -pci:v00001814d00000302* - ID_PRODUCT_FROM_DATABASE=RT2561/RT61 rev B 802.11g - -pci:v00001814d00000302sv00001186sd00003A71* - ID_PRODUCT_FROM_DATABASE=DWA-510 Wireless G Desktop Adapter - -pci:v00001814d00000302sv00001186sd00003C08* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G630 Wireless Cardbus Adapter (rev.E2) - -pci:v00001814d00000302sv00001186sd00003C09* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G510 Wireless Network Adapter (Rev.C) - -pci:v00001814d00000302sv00001462sd0000B834* - ID_PRODUCT_FROM_DATABASE=PC54G3 Wireless 11g PCI Card - -pci:v00001814d00000302sv00001948sd00003C23* - ID_PRODUCT_FROM_DATABASE=C54RC v2 Wireless 11g CardBus Adapter - -pci:v00001814d00000302sv00001948sd00003C24* - ID_PRODUCT_FROM_DATABASE=C54Ri v2 Wireless 11g PCI Adapter - -pci:v00001814d00000401* - ID_PRODUCT_FROM_DATABASE=RT2600 802.11 MIMO - -pci:v00001814d00000401sv00001737sd00000052* - ID_PRODUCT_FROM_DATABASE=WPC54GR v1 802.11g Wireless-G Notebook Adapter with RangeBooster - -pci:v00001814d00000401sv000017F9sd00000011* - ID_PRODUCT_FROM_DATABASE=WPCR-137G 802.11bg Wireless CardBus Adapter - -pci:v00001814d00000401sv000017F9sd00000016* - ID_PRODUCT_FROM_DATABASE=WPIR-119GH 802.11bg Wireless Desktop Adapter - -pci:v00001814d00000601* - ID_PRODUCT_FROM_DATABASE=RT2800 802.11n PCI - -pci:v00001814d00000601sv00001799sd0000801C* - ID_PRODUCT_FROM_DATABASE=F5D8011 v3 802.11n N1 Wireless Notebook Card - -pci:v00001814d00000601sv0000187Esd00003412* - ID_PRODUCT_FROM_DATABASE=NWD-310N 802.11n Wireless PCI Adapter - -pci:v00001814d00000681* - ID_PRODUCT_FROM_DATABASE=RT2890 Wireless 802.11n PCIe - -pci:v00001814d00000681sv00001458sd0000E939* - ID_PRODUCT_FROM_DATABASE=GN-WS30N-RH 802.11bgn Mini PCIe Card - -pci:v00001814d00000701* - ID_PRODUCT_FROM_DATABASE=RT2760 Wireless 802.11n 1T/2R - -pci:v00001814d00000701sv00001737sd00000074* - ID_PRODUCT_FROM_DATABASE=WMP110 v2 802.11n RangePlus Wireless PCI Adapter - -pci:v00001814d00000781* - ID_PRODUCT_FROM_DATABASE=RT2790 Wireless 802.11n 1T/2R PCIe - -pci:v00001814d00003060* - ID_PRODUCT_FROM_DATABASE=RT3060 Wireless 802.11n 1T/1R - -pci:v00001814d00003060sv00001186sd00003C04* - ID_PRODUCT_FROM_DATABASE=DWA-525 Wireless N 150 Desktop Adapter (rev.A1) - -pci:v00001814d00003062* - ID_PRODUCT_FROM_DATABASE=RT3062 Wireless 802.11n 2T/2R - -pci:v00001814d00003090* - ID_PRODUCT_FROM_DATABASE=RT3090 Wireless 802.11n 1T/1R PCIe - -pci:v00001814d00003090sv000013BDsd00001057* - ID_PRODUCT_FROM_DATABASE=GN-WS32L-RH Half-size Mini PCIe Card - -pci:v00001814d00003091* - ID_PRODUCT_FROM_DATABASE=RT3091 Wireless 802.11n 1T/2R PCIe - -pci:v00001814d00003092* - ID_PRODUCT_FROM_DATABASE=RT3092 Wireless 802.11n 2T/2R PCIe - -pci:v00001814d00003290* - ID_PRODUCT_FROM_DATABASE=RT3290 Wireless 802.11n 1T/1R PCIe - -pci:v00001814d00003298* - ID_PRODUCT_FROM_DATABASE=RT3290 Bluetooth - -pci:v00001814d00003592* - ID_PRODUCT_FROM_DATABASE=RT3592 Wireless 802.11abgn 2T/2R PCIe - -pci:v00001814d00005360* - ID_PRODUCT_FROM_DATABASE=RT5360 Wireless 802.11n 1T/1R - -pci:v00001814d00005360sv00001186sd00003C05* - ID_PRODUCT_FROM_DATABASE=DWA-525 Wireless N 150 Desktop Adapter (rev.A2) - -pci:v00001814d00005360sv000020F4sd0000703A* - ID_PRODUCT_FROM_DATABASE=TEW-703PI N150 Wireless PCI Adapter - -pci:v00001814d00005390* - ID_PRODUCT_FROM_DATABASE=RT5390 Wireless 802.11n 1T/1R PCIe - -pci:v00001814d00005390sv0000103Csd00001636* - ID_PRODUCT_FROM_DATABASE=U98Z077.00 Half-size Mini PCIe Card - -pci:v00001814d0000539F* - ID_PRODUCT_FROM_DATABASE=RT5390 [802.11 b/g/n 1T1R G-band PCI Express Single Chip] - -pci:v00001814d0000539Fsv0000103Csd00001637* - ID_PRODUCT_FROM_DATABASE=Pavilion DM1Z-3000 PCIe wireless card - -pci:v00001814d0000E932* - ID_PRODUCT_FROM_DATABASE=RT2560F 802.11 b/g PCI - -pci:v00001815* - ID_VENDOR_FROM_DATABASE=Devolo AG - -pci:v00001820* - ID_VENDOR_FROM_DATABASE=InfiniCon Systems Inc. - -pci:v00001822* - ID_VENDOR_FROM_DATABASE=Twinhan Technology Co. Ltd - -pci:v00001822d00004E35* - ID_PRODUCT_FROM_DATABASE=Mantis DTV PCI Bridge Controller [Ver 1.0] - -pci:v0000182D* - ID_VENDOR_FROM_DATABASE=SiteCom Europe BV - -pci:v0000182Dd00003069* - ID_PRODUCT_FROM_DATABASE=ISDN PCI DC-105V2 - -pci:v0000182Dd00009790* - ID_PRODUCT_FROM_DATABASE=WL-121 Wireless Network Adapter 100g+ [Ver.3] - -pci:v0000182E* - ID_VENDOR_FROM_DATABASE=Raza Microelectronics, Inc. - -pci:v0000182Ed00000008* - ID_PRODUCT_FROM_DATABASE=XLR516 Processor - -pci:v0000182F* - ID_VENDOR_FROM_DATABASE=Broadcom - -pci:v0000182Fd0000000B* - ID_PRODUCT_FROM_DATABASE=BCM5785 [HT1000] SATA (RAID Mode) - -pci:v00001830* - ID_VENDOR_FROM_DATABASE=Credence Systems Corporation - -pci:v0000183B* - ID_VENDOR_FROM_DATABASE=MikroM GmbH - -pci:v0000183Bd000008A7* - ID_PRODUCT_FROM_DATABASE=MVC100 DVI - -pci:v0000183Bd000008A8* - ID_PRODUCT_FROM_DATABASE=MVC101 SDI - -pci:v0000183Bd000008A9* - ID_PRODUCT_FROM_DATABASE=MVC102 DVI+Audio - -pci:v0000183Bd000008B0* - ID_PRODUCT_FROM_DATABASE=MVC200-DC - -pci:v00001846* - ID_VENDOR_FROM_DATABASE=Alcatel-Lucent - -pci:v00001849* - ID_VENDOR_FROM_DATABASE=ASRock Incorporation - -pci:v0000184A* - ID_VENDOR_FROM_DATABASE=Thales Computers - -pci:v0000184Ad00001100* - ID_PRODUCT_FROM_DATABASE=MAX II cPLD - -pci:v00001851* - ID_VENDOR_FROM_DATABASE=Microtune, Inc. - -pci:v00001852* - ID_VENDOR_FROM_DATABASE=Anritsu Corp. - -pci:v00001853* - ID_VENDOR_FROM_DATABASE=SMSC Automotive Infotainment System Group - -pci:v00001854* - ID_VENDOR_FROM_DATABASE=LG Electronics, Inc. - -pci:v0000185B* - ID_VENDOR_FROM_DATABASE=Compro Technology, Inc. - -pci:v0000185Bd00001489* - ID_PRODUCT_FROM_DATABASE=VideoMate Vista T100 - -pci:v0000185F* - ID_VENDOR_FROM_DATABASE=Wistron NeWeb Corp. - -pci:v00001864* - ID_VENDOR_FROM_DATABASE=SilverBack - -pci:v00001864d00002110* - ID_PRODUCT_FROM_DATABASE=ISNAP 2110 - -pci:v00001867* - ID_VENDOR_FROM_DATABASE=Topspin Communications - -pci:v00001867d00005A44* - ID_PRODUCT_FROM_DATABASE=MT23108 InfiniHost HCA - -pci:v00001867d00005A45* - ID_PRODUCT_FROM_DATABASE=MT23108 InfiniHost HCA flash recovery - -pci:v00001867d00005A46* - ID_PRODUCT_FROM_DATABASE=MT23108 InfiniHost HCA bridge - -pci:v00001867d00006278* - ID_PRODUCT_FROM_DATABASE=MT25208 InfiniHost III Ex (Tavor compatibility mode) - -pci:v00001867d00006282* - ID_PRODUCT_FROM_DATABASE=MT25208 InfiniHost III Ex - -pci:v0000186C* - ID_VENDOR_FROM_DATABASE=Humusoft, s.r.o. - -pci:v0000186Cd00000612* - ID_PRODUCT_FROM_DATABASE=AD612 Data Acquisition Device - -pci:v0000186Cd00000614* - ID_PRODUCT_FROM_DATABASE=MF614 Multifunction I/O Card - -pci:v0000186Cd00000622* - ID_PRODUCT_FROM_DATABASE=AD622 Data Acquisition Device - -pci:v0000186Cd00000624* - ID_PRODUCT_FROM_DATABASE=MF624 Multifunction I/O Card - -pci:v0000186Cd00000625* - ID_PRODUCT_FROM_DATABASE=MF625 3-phase Motor Driver - -pci:v0000186F* - ID_VENDOR_FROM_DATABASE=WiNRADiO Communications - -pci:v00001876* - ID_VENDOR_FROM_DATABASE=L-3 Communications - -pci:v00001876d0000A101* - ID_PRODUCT_FROM_DATABASE=VigraWATCH PCI - -pci:v00001876d0000A102* - ID_PRODUCT_FROM_DATABASE=VigraWATCH PMC - -pci:v00001876d0000A103* - ID_PRODUCT_FROM_DATABASE=Vigra I/O - -pci:v0000187E* - ID_VENDOR_FROM_DATABASE=ZyXEL Communications Corporation - -pci:v0000187Ed00003403* - ID_PRODUCT_FROM_DATABASE=ZyAir G-110 802.11g - -pci:v0000187Ed0000340E* - ID_PRODUCT_FROM_DATABASE=M-302 802.11g XtremeMIMO - -pci:v00001885* - ID_VENDOR_FROM_DATABASE=Avvida Systems Inc. - -pci:v00001888* - ID_VENDOR_FROM_DATABASE=Varisys Ltd - -pci:v00001888d00000301* - ID_PRODUCT_FROM_DATABASE=VMFX1 FPGA PMC module - -pci:v00001888d00000601* - ID_PRODUCT_FROM_DATABASE=VSM2 dual PMC carrier - -pci:v00001888d00000710* - ID_PRODUCT_FROM_DATABASE=VS14x series PowerPC PCI board - -pci:v00001888d00000720* - ID_PRODUCT_FROM_DATABASE=VS24x series PowerPC PCI board - -pci:v0000188A* - ID_VENDOR_FROM_DATABASE=Ample Communications, Inc - -pci:v00001890* - ID_VENDOR_FROM_DATABASE=Egenera, Inc. - -pci:v00001894* - ID_VENDOR_FROM_DATABASE=KNC One - -pci:v00001896* - ID_VENDOR_FROM_DATABASE=B&B Electronics Manufacturing Company, Inc. - -pci:v00001896d00004202* - ID_PRODUCT_FROM_DATABASE=MIport 3PCIU2 2-port Serial - -pci:v00001896d00004204* - ID_PRODUCT_FROM_DATABASE=MIport 3PCIU4 4-port Serial - -pci:v00001896d00004208* - ID_PRODUCT_FROM_DATABASE=MIport 3PCIU8 8-port Serial - -pci:v00001896d00004211* - ID_PRODUCT_FROM_DATABASE=MIport 3PCIOU1 1-port Isolated Serial - -pci:v00001896d00004212* - ID_PRODUCT_FROM_DATABASE=MIport 3PCIOU2 2-port Isolated Serial - -pci:v00001896d00004214* - ID_PRODUCT_FROM_DATABASE=MIport 3PCIOU4 4-port Isolated Serial - -pci:v00001896d0000BB10* - ID_PRODUCT_FROM_DATABASE=3PCI2 2-Port Serial - -pci:v00001896d0000BB11* - ID_PRODUCT_FROM_DATABASE=3PCIO1 1-Port Isolated Serial - -pci:v00001897* - ID_VENDOR_FROM_DATABASE=AMtek - -pci:v000018A1* - ID_VENDOR_FROM_DATABASE=Astute Networks Inc. - -pci:v000018A2* - ID_VENDOR_FROM_DATABASE=Stretch Inc. - -pci:v000018A2d00000002* - ID_PRODUCT_FROM_DATABASE=VRC6016 16-Channel PCIe DVR Card - -pci:v000018A3* - ID_VENDOR_FROM_DATABASE=AT&T - -pci:v000018AC* - ID_VENDOR_FROM_DATABASE=DViCO Corporation - -pci:v000018ACd0000D500* - ID_PRODUCT_FROM_DATABASE=FusionHDTV 5 - -pci:v000018ACd0000D800* - ID_PRODUCT_FROM_DATABASE=FusionHDTV 3 Gold - -pci:v000018ACd0000D810* - ID_PRODUCT_FROM_DATABASE=FusionHDTV 3 Gold-Q - -pci:v000018ACd0000D820* - ID_PRODUCT_FROM_DATABASE=FusionHDTV 3 Gold-T - -pci:v000018ACd0000DB30* - ID_PRODUCT_FROM_DATABASE=FusionHDTV DVB-T Pro - -pci:v000018ACd0000DB40* - ID_PRODUCT_FROM_DATABASE=FusionHDTV DVB-T Hybrid - -pci:v000018ACd0000DB78* - ID_PRODUCT_FROM_DATABASE=FusionHDTV DVB-T Dual Express - -pci:v000018B8* - ID_VENDOR_FROM_DATABASE=Ammasso - -pci:v000018B8d0000B001* - ID_PRODUCT_FROM_DATABASE=AMSO 1100 iWARP/RDMA Gigabit Ethernet Coprocessor - -pci:v000018BC* - ID_VENDOR_FROM_DATABASE=Info-Tek Corp. - -pci:v000018C3* - ID_VENDOR_FROM_DATABASE=Micronas Semiconductor Holding AG - -pci:v000018C3d00000720* - ID_PRODUCT_FROM_DATABASE=nGene PCI-Express Multimedia Controller - -pci:v000018C3d00000720sv000007CAsd0000032E* - ID_PRODUCT_FROM_DATABASE=Hybrid M779 PCI-E - -pci:v000018C8* - ID_VENDOR_FROM_DATABASE=Cray Inc - -pci:v000018C9* - ID_VENDOR_FROM_DATABASE=ARVOO Engineering BV - -pci:v000018CA* - ID_VENDOR_FROM_DATABASE=XGI Technology Inc. (eXtreme Graphics Innovation) - -pci:v000018CAd00000020* - ID_PRODUCT_FROM_DATABASE=Z7/Z9 (XG20 core) - -pci:v000018CAd00000021* - ID_PRODUCT_FROM_DATABASE=Z9s/Z9m (XG21 core) - -pci:v000018CAd00000027* - ID_PRODUCT_FROM_DATABASE=Z11/Z11M - -pci:v000018CAd00000040* - ID_PRODUCT_FROM_DATABASE=Volari V3XT/V5/V8 - -pci:v000018CAd00000047* - ID_PRODUCT_FROM_DATABASE=Volari 8300 (chip: XP10, codename: XG47) - -pci:v000018D2* - ID_VENDOR_FROM_DATABASE=Sitecom Europe BV (Wrong ID) - -pci:v000018D2d00003069* - ID_PRODUCT_FROM_DATABASE=DC-105v2 ISDN controller - -pci:v000018D8* - ID_VENDOR_FROM_DATABASE=Dialogue Technology Corp. - -pci:v000018DD* - ID_VENDOR_FROM_DATABASE=Artimi Inc - -pci:v000018DDd00004C6F* - ID_PRODUCT_FROM_DATABASE=Artimi RTMI-100 UWB adapter - -pci:v000018E6* - ID_VENDOR_FROM_DATABASE=MPL AG - -pci:v000018E6d00000001* - ID_PRODUCT_FROM_DATABASE=OSCI [Octal Serial Communication Interface] - -pci:v000018EB* - ID_VENDOR_FROM_DATABASE=Advance Multimedia Internet Technology, Inc. - -pci:v000018EC* - ID_VENDOR_FROM_DATABASE=Cesnet, z.s.p.o. - -pci:v000018ECd00006D05* - ID_PRODUCT_FROM_DATABASE=ML555 - -pci:v000018ECd00006D05sv000018ECsd00000100* - ID_PRODUCT_FROM_DATABASE=NIC (ethernet interfaces) - -pci:v000018ECd00006D05sv000018ECsd00000200* - ID_PRODUCT_FROM_DATABASE=NIC (szedata2) 4x1G - -pci:v000018ECd00006D05sv000018ECsd00000201* - ID_PRODUCT_FROM_DATABASE=NIC (szedata2) 2x10G - -pci:v000018ECd00006D05sv000018ECsd00000300* - ID_PRODUCT_FROM_DATABASE=NIFIC (szedata2) 4x1G - -pci:v000018ECd00006D05sv000018ECsd00000302* - ID_PRODUCT_FROM_DATABASE=NIFIC (szedata2) 2x10G - -pci:v000018ECd00006D05sv000018ECsd00004200* - ID_PRODUCT_FROM_DATABASE=Flexible FlowMon (szedata2) 1x10G - -pci:v000018ECd00006D05sv000018ECsd0000FF00* - ID_PRODUCT_FROM_DATABASE=Testing design - -pci:v000018ECd00006D05sv000018ECsd0000FF01* - ID_PRODUCT_FROM_DATABASE=Boot design - -pci:v000018ECd0000C006* - ID_PRODUCT_FROM_DATABASE=COMBO6 - -pci:v000018ECd0000C006sv000018ECsd0000D001* - ID_PRODUCT_FROM_DATABASE=COMBO-4MTX - -pci:v000018ECd0000C006sv000018ECsd0000D002* - ID_PRODUCT_FROM_DATABASE=COMBO-4SFP - -pci:v000018ECd0000C006sv000018ECsd0000D003* - ID_PRODUCT_FROM_DATABASE=COMBO-4SFPRO - -pci:v000018ECd0000C006sv000018ECsd0000D004* - ID_PRODUCT_FROM_DATABASE=COMBO-2XFP - -pci:v000018ECd0000C032* - ID_PRODUCT_FROM_DATABASE=COMBO-LXT110 - -pci:v000018ECd0000C032sv000018ECsd00000100* - ID_PRODUCT_FROM_DATABASE=NIC (ethernet interfaces) - -pci:v000018ECd0000C032sv000018ECsd00000200* - ID_PRODUCT_FROM_DATABASE=NIC (szedata2) 4x1G - -pci:v000018ECd0000C032sv000018ECsd00000201* - ID_PRODUCT_FROM_DATABASE=NIC (szedata2) 2x10G - -pci:v000018ECd0000C032sv000018ECsd00000300* - ID_PRODUCT_FROM_DATABASE=NIFIC (szedata2) 4x1G - -pci:v000018ECd0000C032sv000018ECsd00000302* - ID_PRODUCT_FROM_DATABASE=NIFIC (szedata2) 2x10G - -pci:v000018ECd0000C032sv000018ECsd00004200* - ID_PRODUCT_FROM_DATABASE=Flexible FlowMon (szedata2) 1x10G - -pci:v000018ECd0000C032sv000018ECsd0000FF00* - ID_PRODUCT_FROM_DATABASE=Testing design - -pci:v000018ECd0000C032sv000018ECsd0000FF01* - ID_PRODUCT_FROM_DATABASE=Boot design - -pci:v000018ECd0000C045* - ID_PRODUCT_FROM_DATABASE=COMBO6E - -pci:v000018ECd0000C050* - ID_PRODUCT_FROM_DATABASE=COMBO-PTM - -pci:v000018ECd0000C058* - ID_PRODUCT_FROM_DATABASE=COMBO6X - -pci:v000018ECd0000C058sv000018ECsd0000D001* - ID_PRODUCT_FROM_DATABASE=COMBO-4MTX - -pci:v000018ECd0000C058sv000018ECsd0000D002* - ID_PRODUCT_FROM_DATABASE=COMBO-4SFP - -pci:v000018ECd0000C058sv000018ECsd0000D003* - ID_PRODUCT_FROM_DATABASE=COMBO-4SFPRO - -pci:v000018ECd0000C058sv000018ECsd0000D004* - ID_PRODUCT_FROM_DATABASE=COMBO-2XFP - -pci:v000018ECd0000C132* - ID_PRODUCT_FROM_DATABASE=COMBO-LXT155 - -pci:v000018ECd0000C132sv000018ECsd00000100* - ID_PRODUCT_FROM_DATABASE=NIC (ethernet interfaces) - -pci:v000018ECd0000C132sv000018ECsd00000200* - ID_PRODUCT_FROM_DATABASE=NIC (szedata2) 4x1G - -pci:v000018ECd0000C132sv000018ECsd00000201* - ID_PRODUCT_FROM_DATABASE=NIC (szedata2) 2x10G - -pci:v000018ECd0000C132sv000018ECsd00000300* - ID_PRODUCT_FROM_DATABASE=NIFIC (szedata2) 4x1G - -pci:v000018ECd0000C132sv000018ECsd00000302* - ID_PRODUCT_FROM_DATABASE=NIFIC (szedata2) 2x10G - -pci:v000018ECd0000C132sv000018ECsd00004200* - ID_PRODUCT_FROM_DATABASE=Flexible FlowMon (szedata2) 1x10G - -pci:v000018ECd0000C132sv000018ECsd0000FF00* - ID_PRODUCT_FROM_DATABASE=Testing design - -pci:v000018ECd0000C132sv000018ECsd0000FF01* - ID_PRODUCT_FROM_DATABASE=Boot design - -pci:v000018ECd0000C232* - ID_PRODUCT_FROM_DATABASE=COMBO-FXT100 - -pci:v000018ECd0000C232sv000018ECsd00000100* - ID_PRODUCT_FROM_DATABASE=NIC (ethernet interfaces) - -pci:v000018ECd0000C232sv000018ECsd00000200* - ID_PRODUCT_FROM_DATABASE=NIC (szedata2) 4x1G - -pci:v000018ECd0000C232sv000018ECsd00000201* - ID_PRODUCT_FROM_DATABASE=NIC (szedata2) 2x10G - -pci:v000018ECd0000C232sv000018ECsd00000300* - ID_PRODUCT_FROM_DATABASE=NIFIC (szedata2) 4x1G - -pci:v000018ECd0000C232sv000018ECsd00000302* - ID_PRODUCT_FROM_DATABASE=NIFIC (szedata2) 2x10G - -pci:v000018ECd0000C232sv000018ECsd00004200* - ID_PRODUCT_FROM_DATABASE=Flexible FlowMon (szedata2) 1x10G - -pci:v000018ECd0000C232sv000018ECsd0000FF00* - ID_PRODUCT_FROM_DATABASE=Testing design - -pci:v000018ECd0000C232sv000018ECsd0000FF01* - ID_PRODUCT_FROM_DATABASE=Boot design - -pci:v000018EE* - ID_VENDOR_FROM_DATABASE=Chenming Mold Ind. Corp. - -pci:v000018F1* - ID_VENDOR_FROM_DATABASE=Spectrum GmbH - -pci:v000018F4* - ID_VENDOR_FROM_DATABASE=Napatech A/S - -pci:v000018F4d00000031* - ID_PRODUCT_FROM_DATABASE=NT20X Network Adapter - -pci:v000018F4d00000051* - ID_PRODUCT_FROM_DATABASE=NT20X Capture Card - -pci:v000018F4d00000061* - ID_PRODUCT_FROM_DATABASE=NT20E Capture Card - -pci:v000018F4d00000064* - ID_PRODUCT_FROM_DATABASE=NT20E Inline Card - -pci:v000018F4d00000071* - ID_PRODUCT_FROM_DATABASE=NT4E Capture Card - -pci:v000018F4d00000074* - ID_PRODUCT_FROM_DATABASE=NT4E Inline Card - -pci:v000018F4d00000081* - ID_PRODUCT_FROM_DATABASE=NT4E 4-port Expansion Card - -pci:v000018F4d00000091* - ID_PRODUCT_FROM_DATABASE=NT20X Capture Card [New Rev] - -pci:v000018F4d000000A1* - ID_PRODUCT_FROM_DATABASE=NT4E-STD Capture Card - -pci:v000018F4d000000A4* - ID_PRODUCT_FROM_DATABASE=NT4E-STD Inline Card - -pci:v000018F4d000000B1* - ID_PRODUCT_FROM_DATABASE=NTBPE Optical Bypass Adapter - -pci:v000018F4d000000C5* - ID_PRODUCT_FROM_DATABASE=NT20E2 Network Adapter 2x10Gb - -pci:v000018F4d000000D5* - ID_PRODUCT_FROM_DATABASE=NT40E2-4 Network Adapter 4x10Gb - -pci:v000018F4d000000E5* - ID_PRODUCT_FROM_DATABASE=NT40E2-1 Network Adapter 1x40Gb - -pci:v000018F4d000000F5* - ID_PRODUCT_FROM_DATABASE=NT4E2-4T-BP Network Adapter 4x1Gb with Electrical Bypass - -pci:v000018F6* - ID_VENDOR_FROM_DATABASE=NextIO - -pci:v000018F6d00001000* - ID_PRODUCT_FROM_DATABASE=[Nexsis] Switch Virtual P2P PCIe Bridge - -pci:v000018F6d00001001* - ID_PRODUCT_FROM_DATABASE=[Texsis] Switch Virtual P2P PCIe Bridge - -pci:v000018F6d00001050* - ID_PRODUCT_FROM_DATABASE=[Nexsis] Switch Virtual P2P PCI Bridge - -pci:v000018F6d00001051* - ID_PRODUCT_FROM_DATABASE=[Texsis] Switch Virtual P2P PCI Bridge - -pci:v000018F6d00002000* - ID_PRODUCT_FROM_DATABASE=[Nexsis] Switch Integrated Mgmt. Endpoint - -pci:v000018F6d00002001* - ID_PRODUCT_FROM_DATABASE=[Texsis] Switch Integrated Mgmt. Endpoint - -pci:v000018F7* - ID_VENDOR_FROM_DATABASE=Commtech, Inc. - -pci:v000018F7d00000001* - ID_PRODUCT_FROM_DATABASE=ESCC-PCI-335 Serial PCI Adapter [Fastcom] - -pci:v000018F7d00000002* - ID_PRODUCT_FROM_DATABASE=422/4-PCI-335 Serial PCI Adapter [Fastcom] - -pci:v000018F7d00000003* - ID_PRODUCT_FROM_DATABASE=232/4-1M-PCI Serial PCI Adapter [Fastcom] - -pci:v000018F7d00000004* - ID_PRODUCT_FROM_DATABASE=422/2-PCI-335 Serial PCI Adapter [Fastcom] - -pci:v000018F7d00000005* - ID_PRODUCT_FROM_DATABASE=IGESCC-PCI-ISO/1 Serial PCI Adapter [Fastcom] - -pci:v000018F7d0000000A* - ID_PRODUCT_FROM_DATABASE=232/4-PCI-335 Serial PCI Adapter [Fastcom] - -pci:v000018F7d0000000B* - ID_PRODUCT_FROM_DATABASE=232/8-PCI-335 Serial PCI Adapter [Fastcom] - -pci:v000018F7d0000000F* - ID_PRODUCT_FROM_DATABASE=FSCC Serial PCI Adapter [Fastcom] - -pci:v000018F7d00000010* - ID_PRODUCT_FROM_DATABASE=GSCC Serial PCI Adapter [Fastcom] - -pci:v000018F7d00000011* - ID_PRODUCT_FROM_DATABASE=QSSB Serial PCI Adapter [Fastcom] - -pci:v000018F7d00000014* - ID_PRODUCT_FROM_DATABASE=SuperFSCC Serial PCI Adapter [Fastcom] - -pci:v000018F7d00000015* - ID_PRODUCT_FROM_DATABASE=SuperFSCC-104-LVDS Serial PC/104+ Adapter [Fastcom] - -pci:v000018F7d00000016* - ID_PRODUCT_FROM_DATABASE=FSCC-232 RS-232 Serial PCI Adapter [Fastcom] - -pci:v000018F7d00000017* - ID_PRODUCT_FROM_DATABASE=SuperFSCC-104 Serial PC/104+ Adapter [Fastcom] - -pci:v000018F7d00000018* - ID_PRODUCT_FROM_DATABASE=SuperFSCC/4 Serial PCI Adapter [Fastcom] - -pci:v000018F7d00000019* - ID_PRODUCT_FROM_DATABASE=SuperFSCC Serial PCI Adapter [Fastcom] - -pci:v000018F7d0000001A* - ID_PRODUCT_FROM_DATABASE=SuperFSCC-LVDS Serial PCI Adapter [Fastcom] - -pci:v000018F7d0000001B* - ID_PRODUCT_FROM_DATABASE=FSCC/4 Serial PCI Adapter [Fastcom] - -pci:v000018F7d0000001C* - ID_PRODUCT_FROM_DATABASE=SuperFSCC/4-LVDS Serial PCI Adapter [Fastcom] - -pci:v000018F7d0000001D* - ID_PRODUCT_FROM_DATABASE=FSCC Serial PCI Adapter [Fastcom] - -pci:v000018F7d0000001E* - ID_PRODUCT_FROM_DATABASE=SuperFSCC/4 Serial PCIe Adapter [Fastcom] - -pci:v000018F7d0000001F* - ID_PRODUCT_FROM_DATABASE=SuperFSCC/4 Serial cPCI Adapter [Fastcom] - -pci:v000018F7d00000020* - ID_PRODUCT_FROM_DATABASE=422/4-PCIe Serial PCIe Adapter [Fastcom] - -pci:v000018F7d00000021* - ID_PRODUCT_FROM_DATABASE=422/8-PCIe Serial PCIe Adapter [Fastcom] - -pci:v000018FB* - ID_VENDOR_FROM_DATABASE=Resilience Corporation - -pci:v00001904* - ID_VENDOR_FROM_DATABASE=Hangzhou Silan Microelectronics Co., Ltd. - -pci:v00001904d00002031* - ID_PRODUCT_FROM_DATABASE=SC92031 PCI Fast Ethernet Adapter - -pci:v00001904d00008139* - ID_PRODUCT_FROM_DATABASE=RTL8139D [Realtek] PCI 10/100BaseTX ethernet adaptor - -pci:v00001905* - ID_VENDOR_FROM_DATABASE=Micronas USA, Inc. - -pci:v00001912* - ID_VENDOR_FROM_DATABASE=Renesas Technology Corp. - -pci:v00001912d00000002* - ID_PRODUCT_FROM_DATABASE=SH7780 PCI Controller (PCIC) - -pci:v00001912d00000011* - ID_PRODUCT_FROM_DATABASE=SH7757 PCIe End-Point [PBI] - -pci:v00001912d00000012* - ID_PRODUCT_FROM_DATABASE=SH7757 PCIe-PCI Bridge [PPB] - -pci:v00001912d00000013* - ID_PRODUCT_FROM_DATABASE=SH7757 PCIe Switch [PS] - -pci:v00001912d00000014* - ID_PRODUCT_FROM_DATABASE=uPD720201 USB 3.0 Host Controller - -pci:v00001919* - ID_VENDOR_FROM_DATABASE=Soltek Computer Inc. - -pci:v00001923* - ID_VENDOR_FROM_DATABASE=Sangoma Technologies Corp. - -pci:v00001923d00000040* - ID_PRODUCT_FROM_DATABASE=A200/Remora FXO/FXS Analog AFT card - -pci:v00001923d00000100* - ID_PRODUCT_FROM_DATABASE=A104d QUAD T1/E1 AFT card - -pci:v00001923d00000300* - ID_PRODUCT_FROM_DATABASE=A101 single-port T1/E1 - -pci:v00001923d00000400* - ID_PRODUCT_FROM_DATABASE=A104u Quad T1/E1 AFT - -pci:v00001924* - ID_VENDOR_FROM_DATABASE=Solarflare Communications - -pci:v00001924d00000703* - ID_PRODUCT_FROM_DATABASE=SFC4000 rev A net [Solarstorm] - -pci:v00001924d00000703sv000010B8sd00000102* - ID_PRODUCT_FROM_DATABASE=SMC10GPCIe-10BT (A2) [TigerCard] - -pci:v00001924d00000703sv000010B8sd00000103* - ID_PRODUCT_FROM_DATABASE=SMC10GPCIe-10BT (A3) [TigerCard] - -pci:v00001924d00000703sv000010B8sd00000201* - ID_PRODUCT_FROM_DATABASE=SMC10GPCIe-XFP (A1) [TigerCard] - -pci:v00001924d00000703sv00001924sd00000101* - ID_PRODUCT_FROM_DATABASE=SFE4001-A1 - -pci:v00001924d00000703sv00001924sd00000102* - ID_PRODUCT_FROM_DATABASE=SFE4001-A2 - -pci:v00001924d00000703sv00001924sd00000103* - ID_PRODUCT_FROM_DATABASE=SFE4001-A3 - -pci:v00001924d00000703sv00001924sd00000201* - ID_PRODUCT_FROM_DATABASE=SFE4002-A1 - -pci:v00001924d00000703sv00001924sd00000301* - ID_PRODUCT_FROM_DATABASE=SFE4003-A1 - -pci:v00001924d00000703sv00001924sd00000302* - ID_PRODUCT_FROM_DATABASE=SFE4003-A2 - -pci:v00001924d00000703sv00001924sd00000303* - ID_PRODUCT_FROM_DATABASE=SFE4003-A3 - -pci:v00001924d00000703sv00001924sd00000304* - ID_PRODUCT_FROM_DATABASE=SFE4003-A4 - -pci:v00001924d00000703sv00001924sd00000500* - ID_PRODUCT_FROM_DATABASE=SFE4005-A0 - -pci:v00001924d00000710* - ID_PRODUCT_FROM_DATABASE=SFC4000 rev B [Solarstorm] - -pci:v00001924d00000710sv000010B8sd00000103* - ID_PRODUCT_FROM_DATABASE=SMC10GPCIe-10BT (A3) [TigerCard] - -pci:v00001924d00000710sv000010B8sd00000201* - ID_PRODUCT_FROM_DATABASE=SMC10GPCIe-XFP (A1) [TigerCard] - -pci:v00001924d00000710sv00001924sd00000102* - ID_PRODUCT_FROM_DATABASE=SFE4001-A2 - -pci:v00001924d00000710sv00001924sd00000103* - ID_PRODUCT_FROM_DATABASE=SFE4001-A3 - -pci:v00001924d00000710sv00001924sd00000201* - ID_PRODUCT_FROM_DATABASE=SFE4002-A1 - -pci:v00001924d00000710sv00001924sd00000302* - ID_PRODUCT_FROM_DATABASE=SFE4003-A2 - -pci:v00001924d00000710sv00001924sd00000303* - ID_PRODUCT_FROM_DATABASE=SFE4003-A3 - -pci:v00001924d00000710sv00001924sd00000304* - ID_PRODUCT_FROM_DATABASE=SFE4003-A4 - -pci:v00001924d00000710sv00001924sd00000500* - ID_PRODUCT_FROM_DATABASE=SFE4005-A0 - -pci:v00001924d00000710sv00001924sd00005102* - ID_PRODUCT_FROM_DATABASE=SFN4111T-A2 - -pci:v00001924d00000710sv00001924sd00005103* - ID_PRODUCT_FROM_DATABASE=SFN4111T-R3 - -pci:v00001924d00000710sv00001924sd00005104* - ID_PRODUCT_FROM_DATABASE=SFN4111T-R4 - -pci:v00001924d00000710sv00001924sd00005105* - ID_PRODUCT_FROM_DATABASE=SFN4111T-R5 - -pci:v00001924d00000710sv00001924sd00005201* - ID_PRODUCT_FROM_DATABASE=SFN4112F-R1 - -pci:v00001924d00000710sv00001924sd00005202* - ID_PRODUCT_FROM_DATABASE=SFN4112F-R2 - -pci:v00001924d00000803* - ID_PRODUCT_FROM_DATABASE=SFC9020 [Solarstorm] - -pci:v00001924d00000803sv00001924sd00001201* - ID_PRODUCT_FROM_DATABASE=SFA6902F-R1 SFP+ AOE Adapter - -pci:v00001924d00000803sv00001924sd00006200* - ID_PRODUCT_FROM_DATABASE=SFN5122F-R0 SFP+ Server Adapter - -pci:v00001924d00000803sv00001924sd00006201* - ID_PRODUCT_FROM_DATABASE=SFN5122F-R1 SFP+ Server Adapter - -pci:v00001924d00000803sv00001924sd00006202* - ID_PRODUCT_FROM_DATABASE=SFN5122F-R2 SFP+ Server Adapter - -pci:v00001924d00000803sv00001924sd00006204* - ID_PRODUCT_FROM_DATABASE=SFN5122F-R4 SFP+ Server Adapter - -pci:v00001924d00000803sv00001924sd00006205* - ID_PRODUCT_FROM_DATABASE=SFN5122F-R5 SFP+ Server Adapter - -pci:v00001924d00000803sv00001924sd00006206* - ID_PRODUCT_FROM_DATABASE=SFN5122F-R6 SFP+ Server Adapter - -pci:v00001924d00000803sv00001924sd00006207* - ID_PRODUCT_FROM_DATABASE=SFN5122F-R7 SFP+ Server Adapter - -pci:v00001924d00000803sv00001924sd00006210* - ID_PRODUCT_FROM_DATABASE=SFN5322F-R0 SFP+ Precision Time Synchronization Server Adapter - -pci:v00001924d00000803sv00001924sd00006211* - ID_PRODUCT_FROM_DATABASE=SFN5322F-R1 SFP+ Precision Time Synchronization Server Adapter - -pci:v00001924d00000803sv00001924sd00006217* - ID_PRODUCT_FROM_DATABASE=SFN5322F-R7 SFP+ Precision Time Synchronization Server Adapter - -pci:v00001924d00000803sv00001924sd00006227* - ID_PRODUCT_FROM_DATABASE=SFN6122F-R7 SFP+ Server Adapter - -pci:v00001924d00000803sv00001924sd00006237* - ID_PRODUCT_FROM_DATABASE=SFN6322F-R7 SFP+ Precision Time Synchronization Server Adapter - -pci:v00001924d00000803sv00001924sd00006501* - ID_PRODUCT_FROM_DATABASE=SFN5802K-R1 Mezzanine Adapter - -pci:v00001924d00000803sv00001924sd00006511* - ID_PRODUCT_FROM_DATABASE=SFN5814H-R1 Mezzanine Adapter - -pci:v00001924d00000803sv00001924sd00006521* - ID_PRODUCT_FROM_DATABASE=SFN5812H-R1 Mezzanine Adapter - -pci:v00001924d00000803sv00001924sd00006562* - ID_PRODUCT_FROM_DATABASE=SFN6832F-R2 SFP+ Mezzanine Adapter - -pci:v00001924d00000803sv00001924sd00006A05* - ID_PRODUCT_FROM_DATABASE=SFN5112F-R5 SFP+ Server Adapter - -pci:v00001924d00000803sv00001924sd00006A06* - ID_PRODUCT_FROM_DATABASE=SFN5112F-R6 SFP+ Server Adapter - -pci:v00001924d00000803sv00001924sd00007206* - ID_PRODUCT_FROM_DATABASE=SFN5162F-R6 SFP+ Server Adapter - -pci:v00001924d00000803sv00001924sd00007207* - ID_PRODUCT_FROM_DATABASE=SFN5162F-R7 SFP+ Server Adapter - -pci:v00001924d00000803sv00001924sd00007A06* - ID_PRODUCT_FROM_DATABASE=SFN5152F-R6 SFP+ Server Adapter - -pci:v00001924d00000803sv00001924sd00007A07* - ID_PRODUCT_FROM_DATABASE=SFN5152F-R7 SFP+ Server Adapter - -pci:v00001924d00000813* - ID_PRODUCT_FROM_DATABASE=SFL9021 [Solarstorm] - -pci:v00001924d00000813sv00001924sd00006100* - ID_PRODUCT_FROM_DATABASE=SFN5121T-R0 10GBASE-T Server Adapter - -pci:v00001924d00000813sv00001924sd00006102* - ID_PRODUCT_FROM_DATABASE=SFN5121T-R2 10GBASE-T Server Adapter - -pci:v00001924d00000813sv00001924sd00006103* - ID_PRODUCT_FROM_DATABASE=SFN5121T-R3 10GBASE-T Server Adapter - -pci:v00001924d00000813sv00001924sd00006104* - ID_PRODUCT_FROM_DATABASE=SFN5121T-R4 10GBASE-T Server Adapter - -pci:v00001924d00000813sv00001924sd00006902* - ID_PRODUCT_FROM_DATABASE=SFN5111T-R2 10GBASE-T Server Adapter - -pci:v00001924d00000813sv00001924sd00006904* - ID_PRODUCT_FROM_DATABASE=SFN5111T-R4 10GBASE-T Server Adapter - -pci:v00001924d00000813sv00001924sd00007104* - ID_PRODUCT_FROM_DATABASE=SFN5161T-R4 10GBASE-T Server Adapter - -pci:v00001924d00000813sv00001924sd00007904* - ID_PRODUCT_FROM_DATABASE=SFN5151T-R4 10GBASE-T Server Adapter - -pci:v00001924d00001803* - ID_PRODUCT_FROM_DATABASE=SFC9020 Virtual Function [Solarstorm] - -pci:v00001924d00001813* - ID_PRODUCT_FROM_DATABASE=SFL9021 Virtual Function [Solarstorm] - -pci:v00001924d00006703* - ID_PRODUCT_FROM_DATABASE=SFC4000 rev A iSCSI/Onload [Solarstorm] - -pci:v00001924d00006703sv000010B8sd00000102* - ID_PRODUCT_FROM_DATABASE=SMC10GPCIe-10BT (A2) [TigerCard] - -pci:v00001924d00006703sv000010B8sd00000103* - ID_PRODUCT_FROM_DATABASE=SMC10GPCIe-10BT (A3) [TigerCard] - -pci:v00001924d00006703sv000010B8sd00000201* - ID_PRODUCT_FROM_DATABASE=SMC10GPCIe-XFP (A1) [TigerCard] - -pci:v00001924d00006703sv00001924sd00000101* - ID_PRODUCT_FROM_DATABASE=SFE4001-A1 - -pci:v00001924d00006703sv00001924sd00000102* - ID_PRODUCT_FROM_DATABASE=SFE4001-A2 - -pci:v00001924d00006703sv00001924sd00000103* - ID_PRODUCT_FROM_DATABASE=SFE4001-A3 - -pci:v00001924d00006703sv00001924sd00000201* - ID_PRODUCT_FROM_DATABASE=SFE4002-A1 - -pci:v00001924d00006703sv00001924sd00000301* - ID_PRODUCT_FROM_DATABASE=SFE4003-A1 - -pci:v00001924d00006703sv00001924sd00000302* - ID_PRODUCT_FROM_DATABASE=SFE4003-A2 - -pci:v00001924d00006703sv00001924sd00000303* - ID_PRODUCT_FROM_DATABASE=SFE4003-A3 - -pci:v00001924d00006703sv00001924sd00000304* - ID_PRODUCT_FROM_DATABASE=SFE4003-A4 - -pci:v00001924d00006703sv00001924sd00000500* - ID_PRODUCT_FROM_DATABASE=SFE4005-A0 - -pci:v00001924d0000C101* - ID_PRODUCT_FROM_DATABASE=EF1-21022T [EtherFabric] - -pci:v0000192A* - ID_VENDOR_FROM_DATABASE=BiTMICRO Networks Inc. - -pci:v0000192E* - ID_VENDOR_FROM_DATABASE=TransDimension - -pci:v00001931* - ID_VENDOR_FROM_DATABASE=Option N.V. - -pci:v00001931d0000000C* - ID_PRODUCT_FROM_DATABASE=Qualcomm MSM6275 UMTS chip - -pci:v00001932* - ID_VENDOR_FROM_DATABASE=DiBcom - -pci:v0000193C* - ID_VENDOR_FROM_DATABASE=MAXIM Integrated Products - -pci:v0000193F* - ID_VENDOR_FROM_DATABASE=Comtech AHA Corp. - -pci:v0000193Fd00000001* - ID_PRODUCT_FROM_DATABASE=AHA36x-PCIX - -pci:v0000193Fd00000360* - ID_PRODUCT_FROM_DATABASE=AHA360-PCIe - -pci:v0000193Fd00000363* - ID_PRODUCT_FROM_DATABASE=AHA363-PCIe - -pci:v0000193Fd00000364* - ID_PRODUCT_FROM_DATABASE=AHA364-PCIe - -pci:v0000193Fd00000367* - ID_PRODUCT_FROM_DATABASE=AHA367-PCIe - -pci:v0000193Fd00000370* - ID_PRODUCT_FROM_DATABASE=AHA370-PCIe - -pci:v00001942* - ID_VENDOR_FROM_DATABASE=ClearSpeed Technology plc - -pci:v00001942d0000E511* - ID_PRODUCT_FROM_DATABASE=Advance X620 accelerator card - -pci:v00001942d0000E521* - ID_PRODUCT_FROM_DATABASE=Advance e620 accelerator card - -pci:v00001947* - ID_VENDOR_FROM_DATABASE=C-guys, Inc. - -pci:v00001947d00004743* - ID_PRODUCT_FROM_DATABASE=CG200 Dual SD/SDIO Host controller device - -pci:v00001948* - ID_VENDOR_FROM_DATABASE=Alpha Networks Inc. - -pci:v0000194A* - ID_VENDOR_FROM_DATABASE=DapTechnology B.V. - -pci:v0000194Ad00001111* - ID_PRODUCT_FROM_DATABASE=FireSpy3850 - -pci:v0000194Ad00001112* - ID_PRODUCT_FROM_DATABASE=FireSpy450b - -pci:v0000194Ad00001113* - ID_PRODUCT_FROM_DATABASE=FireSpy450bT - -pci:v0000194Ad00001114* - ID_PRODUCT_FROM_DATABASE=FireSpy850 - -pci:v0000194Ad00001115* - ID_PRODUCT_FROM_DATABASE=FireSpy850bT - -pci:v0000194Ad00001200* - ID_PRODUCT_FROM_DATABASE=FireTrac 3460bT - -pci:v0000194Ad00001201* - ID_PRODUCT_FROM_DATABASE=FireTrac 3460bT (fallback firmware) - -pci:v0000194Ad00001202* - ID_PRODUCT_FROM_DATABASE=FireTrac 3460bT - -pci:v0000194Ad00001203* - ID_PRODUCT_FROM_DATABASE=FireTrac 3460bT (fallback firmware) - -pci:v00001954* - ID_VENDOR_FROM_DATABASE=One Stop Systems, Inc. - -pci:v00001957* - ID_VENDOR_FROM_DATABASE=Freescale Semiconductor Inc - -pci:v00001957d00000012* - ID_PRODUCT_FROM_DATABASE=MPC8548E - -pci:v00001957d00000013* - ID_PRODUCT_FROM_DATABASE=MPC8548 - -pci:v00001957d00000014* - ID_PRODUCT_FROM_DATABASE=MPC8543E - -pci:v00001957d00000015* - ID_PRODUCT_FROM_DATABASE=MPC8543 - -pci:v00001957d00000018* - ID_PRODUCT_FROM_DATABASE=MPC8547E - -pci:v00001957d00000019* - ID_PRODUCT_FROM_DATABASE=MPC8545E - -pci:v00001957d0000001A* - ID_PRODUCT_FROM_DATABASE=MPC8545 - -pci:v00001957d00000020* - ID_PRODUCT_FROM_DATABASE=MPC8568E - -pci:v00001957d00000021* - ID_PRODUCT_FROM_DATABASE=MPC8568 - -pci:v00001957d00000022* - ID_PRODUCT_FROM_DATABASE=MPC8567E - -pci:v00001957d00000023* - ID_PRODUCT_FROM_DATABASE=MPC8567 - -pci:v00001957d00000030* - ID_PRODUCT_FROM_DATABASE=MPC8533E - -pci:v00001957d00000031* - ID_PRODUCT_FROM_DATABASE=MPC8533 - -pci:v00001957d00000032* - ID_PRODUCT_FROM_DATABASE=MPC8544E - -pci:v00001957d00000033* - ID_PRODUCT_FROM_DATABASE=MPC8544 - -pci:v00001957d00000040* - ID_PRODUCT_FROM_DATABASE=MPC8572E - -pci:v00001957d00000041* - ID_PRODUCT_FROM_DATABASE=MPC8572 - -pci:v00001957d00000050* - ID_PRODUCT_FROM_DATABASE=MPC8536E - -pci:v00001957d00000051* - ID_PRODUCT_FROM_DATABASE=MPC8536 - -pci:v00001957d00000052* - ID_PRODUCT_FROM_DATABASE=MPC8535E - -pci:v00001957d00000053* - ID_PRODUCT_FROM_DATABASE=MPC8535 - -pci:v00001957d00000060* - ID_PRODUCT_FROM_DATABASE=MPC8569 - -pci:v00001957d00000061* - ID_PRODUCT_FROM_DATABASE=MPC8569E - -pci:v00001957d00000070* - ID_PRODUCT_FROM_DATABASE=P2020E - -pci:v00001957d00000071* - ID_PRODUCT_FROM_DATABASE=P2020 - -pci:v00001957d00000078* - ID_PRODUCT_FROM_DATABASE=P2010E - -pci:v00001957d00000079* - ID_PRODUCT_FROM_DATABASE=P2010 - -pci:v00001957d00000080* - ID_PRODUCT_FROM_DATABASE=MPC8349E - -pci:v00001957d00000081* - ID_PRODUCT_FROM_DATABASE=MPC8349 - -pci:v00001957d00000082* - ID_PRODUCT_FROM_DATABASE=MPC8347E TBGA - -pci:v00001957d00000083* - ID_PRODUCT_FROM_DATABASE=MPC8347 TBGA - -pci:v00001957d00000084* - ID_PRODUCT_FROM_DATABASE=MPC8347E PBGA - -pci:v00001957d00000085* - ID_PRODUCT_FROM_DATABASE=MPC8347 PBGA - -pci:v00001957d00000086* - ID_PRODUCT_FROM_DATABASE=MPC8343E - -pci:v00001957d00000087* - ID_PRODUCT_FROM_DATABASE=MPC8343 - -pci:v00001957d000000B4* - ID_PRODUCT_FROM_DATABASE=MPC8315E - -pci:v00001957d000000C2* - ID_PRODUCT_FROM_DATABASE=MPC8379E - -pci:v00001957d000000C3* - ID_PRODUCT_FROM_DATABASE=MPC8379 - -pci:v00001957d000000C4* - ID_PRODUCT_FROM_DATABASE=MPC8378E - -pci:v00001957d000000C5* - ID_PRODUCT_FROM_DATABASE=MPC8378 - -pci:v00001957d000000C6* - ID_PRODUCT_FROM_DATABASE=MPC8377E - -pci:v00001957d000000C7* - ID_PRODUCT_FROM_DATABASE=MPC8377 - -pci:v00001957d00000100* - ID_PRODUCT_FROM_DATABASE=P1020E - -pci:v00001957d00000101* - ID_PRODUCT_FROM_DATABASE=P1020 - -pci:v00001957d00000102* - ID_PRODUCT_FROM_DATABASE=P1021E - -pci:v00001957d00000103* - ID_PRODUCT_FROM_DATABASE=P1021 - -pci:v00001957d00000108* - ID_PRODUCT_FROM_DATABASE=P1011E - -pci:v00001957d00000109* - ID_PRODUCT_FROM_DATABASE=P1011 - -pci:v00001957d0000010A* - ID_PRODUCT_FROM_DATABASE=P1012E - -pci:v00001957d0000010B* - ID_PRODUCT_FROM_DATABASE=P1012 - -pci:v00001957d00000110* - ID_PRODUCT_FROM_DATABASE=P1022E - -pci:v00001957d00000111* - ID_PRODUCT_FROM_DATABASE=P1022 - -pci:v00001957d00000111sv00001C7Fsd00005200* - ID_PRODUCT_FROM_DATABASE=EB5200 - -pci:v00001957d00000118* - ID_PRODUCT_FROM_DATABASE=P1013E - -pci:v00001957d00000119* - ID_PRODUCT_FROM_DATABASE=P1013 - -pci:v00001957d00000128* - ID_PRODUCT_FROM_DATABASE=P1010 - -pci:v00001957d00000400* - ID_PRODUCT_FROM_DATABASE=P4080E - -pci:v00001957d00000401* - ID_PRODUCT_FROM_DATABASE=P4080 - -pci:v00001957d00000408* - ID_PRODUCT_FROM_DATABASE=P4040E - -pci:v00001957d00000409* - ID_PRODUCT_FROM_DATABASE=P4040 - -pci:v00001957d0000580C* - ID_PRODUCT_FROM_DATABASE=MPC5121e - -pci:v00001957d00007010* - ID_PRODUCT_FROM_DATABASE=MPC8641 PCI Host Bridge - -pci:v00001957d00007011* - ID_PRODUCT_FROM_DATABASE=MPC8641D PCI Host Bridge - -pci:v00001957d00007018* - ID_PRODUCT_FROM_DATABASE=MPC8610 - -pci:v00001958* - ID_VENDOR_FROM_DATABASE=Faster Technology, LLC. - -pci:v00001959* - ID_VENDOR_FROM_DATABASE=PA Semi, Inc - -pci:v00001959d0000A000* - ID_PRODUCT_FROM_DATABASE=PA6T Core - -pci:v00001959d0000A001* - ID_PRODUCT_FROM_DATABASE=PWRficient Host Bridge - -pci:v00001959d0000A002* - ID_PRODUCT_FROM_DATABASE=PWRficient PCI-Express Port - -pci:v00001959d0000A003* - ID_PRODUCT_FROM_DATABASE=PWRficient SMBus Controller - -pci:v00001959d0000A004* - ID_PRODUCT_FROM_DATABASE=PWRficient 16550 UART - -pci:v00001959d0000A005* - ID_PRODUCT_FROM_DATABASE=PWRficient Gigabit Ethernet - -pci:v00001959d0000A006* - ID_PRODUCT_FROM_DATABASE=PWRficient 10-Gigabit Ethernet - -pci:v00001959d0000A007* - ID_PRODUCT_FROM_DATABASE=PWRficient DMA Controller - -pci:v00001959d0000A008* - ID_PRODUCT_FROM_DATABASE=PWRficient LPC/Localbus Interface - -pci:v00001959d0000A009* - ID_PRODUCT_FROM_DATABASE=PWRficient L2 Cache - -pci:v00001959d0000A00A* - ID_PRODUCT_FROM_DATABASE=PWRficient DDR2 Memory Controller - -pci:v00001959d0000A00B* - ID_PRODUCT_FROM_DATABASE=PWRficient SERDES - -pci:v00001959d0000A00C* - ID_PRODUCT_FROM_DATABASE=PWRficient System/Debug Controller - -pci:v00001959d0000A00D* - ID_PRODUCT_FROM_DATABASE=PWRficient PCI-Express Internal Endpoint - -pci:v00001966* - ID_VENDOR_FROM_DATABASE=Orad Hi-Tec Systems - -pci:v00001966d00001975* - ID_PRODUCT_FROM_DATABASE=DVG64 family - -pci:v00001966d00001977* - ID_PRODUCT_FROM_DATABASE=DVG128 family - -pci:v00001969* - ID_VENDOR_FROM_DATABASE=Qualcomm Atheros - -pci:v00001969d00001026* - ID_PRODUCT_FROM_DATABASE=AR8121/AR8113/AR8114 Gigabit or Fast Ethernet - -pci:v00001969d00001026sv00001043sd00008304* - ID_PRODUCT_FROM_DATABASE=P5KPL-CM Motherboard - -pci:v00001969d00001048* - ID_PRODUCT_FROM_DATABASE=Attansic L1 Gigabit Ethernet - -pci:v00001969d00001048sv00001043sd00008226* - ID_PRODUCT_FROM_DATABASE=P5KPL-VM Motherboard - -pci:v00001969d00001062* - ID_PRODUCT_FROM_DATABASE=AR8132 Fast Ethernet - -pci:v00001969d00001063* - ID_PRODUCT_FROM_DATABASE=AR8131 Gigabit Ethernet - -pci:v00001969d00001063sv00001458sd0000E000* - ID_PRODUCT_FROM_DATABASE=GA-G31M-ES2L Motherboard - -pci:v00001969d00001066* - ID_PRODUCT_FROM_DATABASE=Attansic L2c Gigabit Ethernet - -pci:v00001969d00001067* - ID_PRODUCT_FROM_DATABASE=Attansic L1c Gigabit Ethernet - -pci:v00001969d00001073* - ID_PRODUCT_FROM_DATABASE=AR8151 v1.0 Gigabit Ethernet - -pci:v00001969d00001083* - ID_PRODUCT_FROM_DATABASE=AR8151 v2.0 Gigabit Ethernet - -pci:v00001969d00001090* - ID_PRODUCT_FROM_DATABASE=AR8162 Fast Ethernet - -pci:v00001969d00001091* - ID_PRODUCT_FROM_DATABASE=AR8161 Gigabit Ethernet - -pci:v00001969d00001091sv00001043sd00001477* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00001969d000010A0* - ID_PRODUCT_FROM_DATABASE=QCA8172 Fast Ethernet - -pci:v00001969d000010A1* - ID_PRODUCT_FROM_DATABASE=QCA8171 Gigabit Ethernet - -pci:v00001969d00002048* - ID_PRODUCT_FROM_DATABASE=Attansic L2 Fast Ethernet - -pci:v00001969d00002060* - ID_PRODUCT_FROM_DATABASE=AR8152 v1.1 Fast Ethernet - -pci:v00001969d00002062* - ID_PRODUCT_FROM_DATABASE=AR8152 v2.0 Fast Ethernet - -pci:v00001969d0000E091* - ID_PRODUCT_FROM_DATABASE=Killer E2200 Gigabit Ethernet Controller - -pci:v0000196A* - ID_VENDOR_FROM_DATABASE=Sensory Networks Inc. - -pci:v0000196Ad00000101* - ID_PRODUCT_FROM_DATABASE=NodalCore C-1000 Content Classification Accelerator - -pci:v0000196Ad00000102* - ID_PRODUCT_FROM_DATABASE=NodalCore C-2000 Content Classification Accelerator - -pci:v0000196Ad00000105* - ID_PRODUCT_FROM_DATABASE=NodalCore C-3000 Content Classification Accelerator - -pci:v0000196D* - ID_VENDOR_FROM_DATABASE=Club-3D BV - -pci:v00001971* - ID_VENDOR_FROM_DATABASE=AGEIA Technologies, Inc. - -pci:v00001971d00001011* - ID_PRODUCT_FROM_DATABASE=Physics Processing Unit [PhysX] - -pci:v00001971d00001011sv00001043sd00000001* - ID_PRODUCT_FROM_DATABASE=PhysX P1 - -pci:v00001974* - ID_VENDOR_FROM_DATABASE=Eberspaecher Electronics - -pci:v00001976* - ID_VENDOR_FROM_DATABASE=TRENDnet - -pci:v00001977* - ID_VENDOR_FROM_DATABASE=Parsec - -pci:v0000197B* - ID_VENDOR_FROM_DATABASE=JMicron Technology Corp. - -pci:v0000197Bd00000250* - ID_PRODUCT_FROM_DATABASE=JMC250 PCI Express Gigabit Ethernet Controller - -pci:v0000197Bd00000260* - ID_PRODUCT_FROM_DATABASE=JMC260 PCI Express Fast Ethernet Controller - -pci:v0000197Bd00000368* - ID_PRODUCT_FROM_DATABASE=JMB368 IDE controller - -pci:v0000197Bd00002360* - ID_PRODUCT_FROM_DATABASE=JMB360 AHCI Controller - -pci:v0000197Bd00002361* - ID_PRODUCT_FROM_DATABASE=JMB361 AHCI/IDE - -pci:v0000197Bd00002361sv00001462sd00007235* - ID_PRODUCT_FROM_DATABASE=P965 Neo MS-7235 mainboard - -pci:v0000197Bd00002362* - ID_PRODUCT_FROM_DATABASE=JMB362 SATA Controller - -pci:v0000197Bd00002362sv00001043sd00008460* - ID_PRODUCT_FROM_DATABASE=P8P67 Deluxe Motherboard - -pci:v0000197Bd00002363* - ID_PRODUCT_FROM_DATABASE=JMB363 SATA/IDE Controller - -pci:v0000197Bd00002363sv00001043sd000081E4* - ID_PRODUCT_FROM_DATABASE=P5B [JMB363] - -pci:v0000197Bd00002363sv00001458sd0000B000* - ID_PRODUCT_FROM_DATABASE=Motherboard - -pci:v0000197Bd00002363sv00001849sd00002363* - ID_PRODUCT_FROM_DATABASE=Motherboard (one of many) - -pci:v0000197Bd00002364* - ID_PRODUCT_FROM_DATABASE=JMB364 AHCI Controller - -pci:v0000197Bd00002365* - ID_PRODUCT_FROM_DATABASE=JMB365 AHCI/IDE - -pci:v0000197Bd00002366* - ID_PRODUCT_FROM_DATABASE=JMB366 AHCI/IDE - -pci:v0000197Bd00002368* - ID_PRODUCT_FROM_DATABASE=JMB368 IDE controller - -pci:v0000197Bd00002369* - ID_PRODUCT_FROM_DATABASE=JMB369 Serial ATA Controller - -pci:v0000197Bd00002380* - ID_PRODUCT_FROM_DATABASE=IEEE 1394 Host Controller - -pci:v0000197Bd00002381* - ID_PRODUCT_FROM_DATABASE=Standard SD Host Controller - -pci:v0000197Bd00002382* - ID_PRODUCT_FROM_DATABASE=SD/MMC Host Controller - -pci:v0000197Bd00002383* - ID_PRODUCT_FROM_DATABASE=MS Host Controller - -pci:v0000197Bd00002384* - ID_PRODUCT_FROM_DATABASE=xD Host Controller - -pci:v0000197Bd00002386* - ID_PRODUCT_FROM_DATABASE=Standard SD Host Controller - -pci:v0000197Bd00002387* - ID_PRODUCT_FROM_DATABASE=SD/MMC Host Controller - -pci:v0000197Bd00002388* - ID_PRODUCT_FROM_DATABASE=MS Host Controller - -pci:v0000197Bd00002389* - ID_PRODUCT_FROM_DATABASE=xD Host Controller - -pci:v0000197Bd00002391* - ID_PRODUCT_FROM_DATABASE=Standard SD Host Controller - -pci:v0000197Bd00002392* - ID_PRODUCT_FROM_DATABASE=SD/MMC Host Controller - -pci:v0000197Bd00002393* - ID_PRODUCT_FROM_DATABASE=MS Host Controller - -pci:v0000197Bd00002394* - ID_PRODUCT_FROM_DATABASE=xD Host Controller - -pci:v00001982* - ID_VENDOR_FROM_DATABASE=Distant Early Warning Communications Inc - -pci:v00001982d00001600* - ID_PRODUCT_FROM_DATABASE=OX16C954 HOST-A - -pci:v00001982d000016FF* - ID_PRODUCT_FROM_DATABASE=OX16C954 HOST-B - -pci:v00001989* - ID_VENDOR_FROM_DATABASE=Montilio Inc. - -pci:v00001989d00000001* - ID_PRODUCT_FROM_DATABASE=RapidFile Bridge - -pci:v00001989d00008001* - ID_PRODUCT_FROM_DATABASE=RapidFile - -pci:v0000198A* - ID_VENDOR_FROM_DATABASE=Nallatech Ltd. - -pci:v00001993* - ID_VENDOR_FROM_DATABASE=Innominate Security Technologies AG - -pci:v00001999* - ID_VENDOR_FROM_DATABASE=A-Logics - -pci:v00001999d0000A900* - ID_PRODUCT_FROM_DATABASE=AM-7209 Video Processor - -pci:v0000199A* - ID_VENDOR_FROM_DATABASE=Pulse-LINK, Inc. - -pci:v0000199D* - ID_VENDOR_FROM_DATABASE=Xsigo Systems - -pci:v0000199Dd00008209* - ID_PRODUCT_FROM_DATABASE=Virtual NIC Device - -pci:v0000199Dd0000890A* - ID_PRODUCT_FROM_DATABASE=Virtual HBA Device - -pci:v0000199F* - ID_VENDOR_FROM_DATABASE=Auvitek - -pci:v0000199Fd00008501* - ID_PRODUCT_FROM_DATABASE=AU85X1 PCI REV1.1 - -pci:v0000199Fd00008521* - ID_PRODUCT_FROM_DATABASE=AU8521 TV card - -pci:v000019A2* - ID_VENDOR_FROM_DATABASE=Emulex Corporation - -pci:v000019A2d00000200* - ID_PRODUCT_FROM_DATABASE=BladeEngine 10Gb PCI-E iSCSI adapter - -pci:v000019A2d00000201* - ID_PRODUCT_FROM_DATABASE=BladeEngine 10Gb PCIe Network Adapter - -pci:v000019A2d00000211* - ID_PRODUCT_FROM_DATABASE=BladeEngine2 10Gb Gen2 PCIe Network Adapter - -pci:v000019A2d00000212* - ID_PRODUCT_FROM_DATABASE=BladeEngine2 10Gb Gen2 PCIe iSCSI Adapter - -pci:v000019A2d00000221* - ID_PRODUCT_FROM_DATABASE=BladeEngine3 10Gb Gen2 PCIe Network Adapter - -pci:v000019A2d00000222* - ID_PRODUCT_FROM_DATABASE=BladeEngine3 10Gb Gen2 PCIe iSCSI Adapter - -pci:v000019A2d00000700* - ID_PRODUCT_FROM_DATABASE=OneConnect 10Gb NIC - -pci:v000019A2d00000700sv0000103Csd00001747* - ID_PRODUCT_FROM_DATABASE=NC550SFP DualPort 10GbE Server Adapter - -pci:v000019A2d00000700sv0000103Csd00001749* - ID_PRODUCT_FROM_DATABASE=NC550SFP Dual Port Server Adapter - -pci:v000019A2d00000700sv0000103Csd0000174A* - ID_PRODUCT_FROM_DATABASE=NC551m Dual Port FlexFabric 10Gb Adapter - -pci:v000019A2d00000700sv0000103Csd0000174B* - ID_PRODUCT_FROM_DATABASE=StorageWorks NC550 DualPort Converged Network Adapter - -pci:v000019A2d00000700sv0000103Csd00003314* - ID_PRODUCT_FROM_DATABASE=NC551i Dual Port FlexFabric 10Gb Adapter - -pci:v000019A2d00000702* - ID_PRODUCT_FROM_DATABASE=OneConnect 10Gb iSCSI Initiator - -pci:v000019A2d00000704* - ID_PRODUCT_FROM_DATABASE=OneConnect 10Gb FCoE Initiator - -pci:v000019A2d00000710* - ID_PRODUCT_FROM_DATABASE=OneConnect 10Gb NIC (be3) - -pci:v000019A2d00000710sv0000103Csd00003315* - ID_PRODUCT_FROM_DATABASE=NC553i 10Gb 2-port FlexFabric Converged Network Adapter - -pci:v000019A2d00000710sv0000103Csd00003340* - ID_PRODUCT_FROM_DATABASE=NC552SFP 2-port 10Gb Server Adapter - -pci:v000019A2d00000710sv0000103Csd00003341* - ID_PRODUCT_FROM_DATABASE=NC552m 10Gb 2-port FlexFabric Converged Network Adapter - -pci:v000019A2d00000710sv0000103Csd00003345* - ID_PRODUCT_FROM_DATABASE=NC553m 10Gb 2-port FlexFabric Converged Network Adapter - -pci:v000019A2d00000712* - ID_PRODUCT_FROM_DATABASE=OneConnect 10Gb iSCSI Initiator (be3) - -pci:v000019A2d00000714* - ID_PRODUCT_FROM_DATABASE=OneConnect 10Gb FCoE Initiator (be3) - -pci:v000019A2d00000714sv0000103Csd00003315* - ID_PRODUCT_FROM_DATABASE=NC553i 10Gb 2-port FlexFabric Converged Network Adapter - -pci:v000019A8* - ID_VENDOR_FROM_DATABASE=DAQDATA GmbH - -pci:v000019AC* - ID_VENDOR_FROM_DATABASE=Kasten Chase Applied Research - -pci:v000019ACd00000001* - ID_PRODUCT_FROM_DATABASE=ACA2400 Crypto Accelerator - -pci:v000019AE* - ID_VENDOR_FROM_DATABASE=Progeny Systems Corporation - -pci:v000019AEd00000520* - ID_PRODUCT_FROM_DATABASE=4135 HFT Interface Controller - -pci:v000019AEd00000521* - ID_PRODUCT_FROM_DATABASE=Decimator - -pci:v000019C1* - ID_VENDOR_FROM_DATABASE=Exegy Inc. - -pci:v000019D1* - ID_VENDOR_FROM_DATABASE=Motorola Expedience - -pci:v000019D4* - ID_VENDOR_FROM_DATABASE=Quixant Limited - -pci:v000019DA* - ID_VENDOR_FROM_DATABASE=ZOTAC International (MCO) Ltd. - -pci:v000019DE* - ID_VENDOR_FROM_DATABASE=Pico Computing - -pci:v000019E2* - ID_VENDOR_FROM_DATABASE=Vector Informatik GmbH - -pci:v000019E3* - ID_VENDOR_FROM_DATABASE=DDRdrive LLC - -pci:v000019E3d00005801* - ID_PRODUCT_FROM_DATABASE=DDRdrive X1 - -pci:v000019E3d00005808* - ID_PRODUCT_FROM_DATABASE=DDRdrive X8 - -pci:v000019E3d0000DD52* - ID_PRODUCT_FROM_DATABASE=DDRdrive X1-30 - -pci:v000019E7* - ID_VENDOR_FROM_DATABASE=NET (Network Equipment Technologies) - -pci:v000019E7d00001001* - ID_PRODUCT_FROM_DATABASE=STIX DSP Card - -pci:v000019E7d00001002* - ID_PRODUCT_FROM_DATABASE=STIX - 1 Port T1/E1 Card - -pci:v000019E7d00001003* - ID_PRODUCT_FROM_DATABASE=STIX - 2 Port T1/E1 Card - -pci:v000019E7d00001004* - ID_PRODUCT_FROM_DATABASE=STIX - 4 Port T1/E1 Card - -pci:v000019E7d00001005* - ID_PRODUCT_FROM_DATABASE=STIX - 4 Port FXS Card - -pci:v000019EE* - ID_VENDOR_FROM_DATABASE=Netronome Systems, Inc. - -pci:v000019F1* - ID_VENDOR_FROM_DATABASE=BFG Tech - -pci:v000019FF* - ID_VENDOR_FROM_DATABASE=Eclipse Electronic Systems, Inc. - -pci:v00001A03* - ID_VENDOR_FROM_DATABASE=ASPEED Technology, Inc. - -pci:v00001A03d00001150* - ID_PRODUCT_FROM_DATABASE=AST1150 PCI-to-PCI Bridge - -pci:v00001A03d00002000* - ID_PRODUCT_FROM_DATABASE=ASPEED Graphics Family - -pci:v00001A07* - ID_VENDOR_FROM_DATABASE=Kvaser AB - -pci:v00001A07d00000006* - ID_PRODUCT_FROM_DATABASE=CAN interface PC104+ HS/HS - -pci:v00001A07d00000007* - ID_PRODUCT_FROM_DATABASE=CAN interface PCIcanx II HS or HS/HS - -pci:v00001A07d00000008* - ID_PRODUCT_FROM_DATABASE=CAN interface PCIEcan HS or HS/HS - -pci:v00001A07d00000009* - ID_PRODUCT_FROM_DATABASE=CAN interface PCI104 HS/HS - -pci:v00001A08* - ID_VENDOR_FROM_DATABASE=Sierra semiconductor - -pci:v00001A08d00000000* - ID_PRODUCT_FROM_DATABASE=SC15064 - -pci:v00001A0E* - ID_VENDOR_FROM_DATABASE=DekTec Digital Video B.V. - -pci:v00001A0Ed0000083F* - ID_PRODUCT_FROM_DATABASE=DTA-2111 VHF/UHF Modulator - -pci:v00001A17* - ID_VENDOR_FROM_DATABASE=Force10 Networks, Inc. - -pci:v00001A17d00008002* - ID_PRODUCT_FROM_DATABASE=PB-10GE-2P 10GbE Security Card - -pci:v00001A1D* - ID_VENDOR_FROM_DATABASE=GFaI e.V. - -pci:v00001A1Dd00001A17* - ID_PRODUCT_FROM_DATABASE=Meta Networks MTP-1G IDPS NIC - -pci:v00001A1E* - ID_VENDOR_FROM_DATABASE=3Leaf Systems, Inc. - -pci:v00001A22* - ID_VENDOR_FROM_DATABASE=Ambric Inc. - -pci:v00001A29* - ID_VENDOR_FROM_DATABASE=Fortinet, Inc. - -pci:v00001A2B* - ID_VENDOR_FROM_DATABASE=Ascom AG - -pci:v00001A2Bd00000000* - ID_PRODUCT_FROM_DATABASE=GESP v1.2 - -pci:v00001A2Bd00000001* - ID_PRODUCT_FROM_DATABASE=GESP v1.3 - -pci:v00001A2Bd00000002* - ID_PRODUCT_FROM_DATABASE=ECOMP v1.3 - -pci:v00001A2Bd00000005* - ID_PRODUCT_FROM_DATABASE=ETP v1.4 - -pci:v00001A2Bd0000000A* - ID_PRODUCT_FROM_DATABASE=ETP-104 v1.1 - -pci:v00001A2Bd0000000E* - ID_PRODUCT_FROM_DATABASE=DSLP-104 v1.1 - -pci:v00001A32* - ID_VENDOR_FROM_DATABASE=Quanta Microsystems, Inc - -pci:v00001A3B* - ID_VENDOR_FROM_DATABASE=AzureWave - -pci:v00001A3Bd00001112* - ID_PRODUCT_FROM_DATABASE=AR9285 Wireless Network Adapter (PCI-Express) - -pci:v00001A41* - ID_VENDOR_FROM_DATABASE=Tilera Corp. - -pci:v00001A41d00000001* - ID_PRODUCT_FROM_DATABASE=TILE64 processor - -pci:v00001A41d00000002* - ID_PRODUCT_FROM_DATABASE=TILEPro processor - -pci:v00001A41d00000200* - ID_PRODUCT_FROM_DATABASE=TILE-Gx36 processor - -pci:v00001A4A* - ID_VENDOR_FROM_DATABASE=SLAC National Accelerator Lab PPA-REG - -pci:v00001A4Ad00001000* - ID_PRODUCT_FROM_DATABASE=MCOR Power Supply Controller - -pci:v00001A4Ad00001010* - ID_PRODUCT_FROM_DATABASE=AMC EVR - Stockholm Timing Board - -pci:v00001A4Ad00002000* - ID_PRODUCT_FROM_DATABASE=PGPCard - 4 Lane - -pci:v00001A4Ad00002010* - ID_PRODUCT_FROM_DATABASE=PCI-Express EVR - -pci:v00001A51* - ID_VENDOR_FROM_DATABASE=Hectronic AB - -pci:v00001A55* - ID_VENDOR_FROM_DATABASE=Rohde & Schwarz DVS GmbH - -pci:v00001A55d00000010* - ID_PRODUCT_FROM_DATABASE=SDStationOEM - -pci:v00001A55d00000011* - ID_PRODUCT_FROM_DATABASE=SDStationOEM II - -pci:v00001A55d00000020* - ID_PRODUCT_FROM_DATABASE=Centaurus - -pci:v00001A55d00000021* - ID_PRODUCT_FROM_DATABASE=Centaurus II - -pci:v00001A55d00000022* - ID_PRODUCT_FROM_DATABASE=Centaurus II LT - -pci:v00001A55d00000030* - ID_PRODUCT_FROM_DATABASE=CLIPSTER-VPU 1.x (Hugo) - -pci:v00001A55d00000040* - ID_PRODUCT_FROM_DATABASE=Hydra Cinema (JPEG) - -pci:v00001A55d00000050* - ID_PRODUCT_FROM_DATABASE=CLIPSTER-VPU 2.x (DigiLab) - -pci:v00001A55d00000060* - ID_PRODUCT_FROM_DATABASE=CLIPSTER-DCI 2.x (HydraX) - -pci:v00001A55d00000061* - ID_PRODUCT_FROM_DATABASE=Atomix - -pci:v00001A55d00000062* - ID_PRODUCT_FROM_DATABASE=Atomix LT - -pci:v00001A55d00000063* - ID_PRODUCT_FROM_DATABASE=Atomix HDMI - -pci:v00001A55d00000064* - ID_PRODUCT_FROM_DATABASE=Atomix STAN - -pci:v00001A55d00000065* - ID_PRODUCT_FROM_DATABASE=Atomix HDMI STAN - -pci:v00001A55d00000070* - ID_PRODUCT_FROM_DATABASE=RED Rocket - -pci:v00001A55d00000090* - ID_PRODUCT_FROM_DATABASE=CinePlay - -pci:v00001A56* - ID_VENDOR_FROM_DATABASE=Bigfoot Networks, Inc. - -pci:v00001A57* - ID_VENDOR_FROM_DATABASE=Highly Reliable Systems - -pci:v00001A58* - ID_VENDOR_FROM_DATABASE=Razer USA Ltd. - -pci:v00001A5D* - ID_VENDOR_FROM_DATABASE=Celoxica - -pci:v00001A5E* - ID_VENDOR_FROM_DATABASE=Aprius Inc. - -pci:v00001A5F* - ID_VENDOR_FROM_DATABASE=System TALKS Inc. - -pci:v00001A68* - ID_VENDOR_FROM_DATABASE=VirtenSys Limited - -pci:v00001A71* - ID_VENDOR_FROM_DATABASE=XenSource, Inc. - -pci:v00001A73* - ID_VENDOR_FROM_DATABASE=Violin Memory, Inc - -pci:v00001A73d00000001* - ID_PRODUCT_FROM_DATABASE=Mozart [Memory Appliance 1010] - -pci:v00001A76* - ID_VENDOR_FROM_DATABASE=Wavesat - -pci:v00001A77* - ID_VENDOR_FROM_DATABASE=Lightfleet Corporation - -pci:v00001A78* - ID_VENDOR_FROM_DATABASE=Virident Systems Inc. - -pci:v00001A78d00000031* - ID_PRODUCT_FROM_DATABASE=Virident FlashMAX Drive - -pci:v00001A78d00000031sv00001A78sd00000034* - ID_PRODUCT_FROM_DATABASE=FlashMAX PCIe SSD [rev 3] - -pci:v00001A78d00000031sv00001A78sd00000037* - ID_PRODUCT_FROM_DATABASE=FlashMAX PCIe SSD [rev 3D] - -pci:v00001A78d00000031sv00001A78sd00000038* - ID_PRODUCT_FROM_DATABASE=FlashMAX PCIe SSD [rev 4] - -pci:v00001A78d00000031sv00001A78sd00000039* - ID_PRODUCT_FROM_DATABASE=FlashMAX PCIe SSD [rev 4D] - -pci:v00001A78d00000040* - ID_PRODUCT_FROM_DATABASE=FlashMAX II - -pci:v00001A84* - ID_VENDOR_FROM_DATABASE=Commex Technologies - -pci:v00001A84d00000001* - ID_PRODUCT_FROM_DATABASE=Vulcan SP HT6210 10-Gigabit Ethernet (rev 02) - -pci:v00001A88* - ID_VENDOR_FROM_DATABASE=MEN Mikro Elektronik - -pci:v00001A88d00004D45* - ID_PRODUCT_FROM_DATABASE=Multifunction IP core - -pci:v00001A8C* - ID_VENDOR_FROM_DATABASE=Verigy Pte. Ltd. - -pci:v00001A8Cd00001100* - ID_PRODUCT_FROM_DATABASE=E8001-66443 PCI Express CIC - -pci:v00001A8E* - ID_VENDOR_FROM_DATABASE=DRS Technologies - -pci:v00001A8Ed00002090* - ID_PRODUCT_FROM_DATABASE=Model 2090 PCI Express - -pci:v00001AA8* - ID_VENDOR_FROM_DATABASE=Ciprico, Inc. - -pci:v00001AA8d00000009* - ID_PRODUCT_FROM_DATABASE=RAIDCore Controller - -pci:v00001AA8d0000000A* - ID_PRODUCT_FROM_DATABASE=RAIDCore Controller - -pci:v00001AAE* - ID_VENDOR_FROM_DATABASE=Global Velocity, Inc. - -pci:v00001AB6* - ID_VENDOR_FROM_DATABASE=CalDigit, Inc. - -pci:v00001AB6d00006201* - ID_PRODUCT_FROM_DATABASE=RAID Card - -pci:v00001AB8* - ID_VENDOR_FROM_DATABASE=Parallels, Inc. - -pci:v00001AB8d00004000* - ID_PRODUCT_FROM_DATABASE=Virtual Machine Communication Interface - -pci:v00001AB8d00004005* - ID_PRODUCT_FROM_DATABASE=Accelerated Virtual Video Adapter - -pci:v00001AB8d00004006* - ID_PRODUCT_FROM_DATABASE=Memory Ballooning Controller - -pci:v00001AB9* - ID_VENDOR_FROM_DATABASE=Espia Srl - -pci:v00001ACC* - ID_VENDOR_FROM_DATABASE=Point of View B.V - -pci:v00001AD7* - ID_VENDOR_FROM_DATABASE=Spectracom Corporation - -pci:v00001AD7d00008000* - ID_PRODUCT_FROM_DATABASE=TSync-PCIe Time Code Processor - -pci:v00001AD7d00009100* - ID_PRODUCT_FROM_DATABASE=TPRO-PCI-66U Timecode Reader/Generator - -pci:v00001ADE* - ID_VENDOR_FROM_DATABASE=Spin Master Ltd. - -pci:v00001ADEd00001501* - ID_PRODUCT_FROM_DATABASE=Swipetech barcode scanner - -pci:v00001AE0* - ID_VENDOR_FROM_DATABASE=Google, Inc. - -pci:v00001AE7* - ID_VENDOR_FROM_DATABASE=First Wise Media GmbH - -pci:v00001AE7d00000520* - ID_PRODUCT_FROM_DATABASE=HFC-S PCI A [X-TENSIONS XC-520] - -pci:v00001AE8* - ID_VENDOR_FROM_DATABASE=Silicon Software GmbH - -pci:v00001AE8d00000A40* - ID_PRODUCT_FROM_DATABASE=microEnable IV-BASE x1 - -pci:v00001AE8d00000A41* - ID_PRODUCT_FROM_DATABASE=microEnable IV-FULL x1 - -pci:v00001AE8d00000A44* - ID_PRODUCT_FROM_DATABASE=microEnable IV-FULL x4 - -pci:v00001AE8d00000E44* - ID_PRODUCT_FROM_DATABASE=microEnable IV-GigE x4 - -pci:v00001AEC* - ID_VENDOR_FROM_DATABASE=Wolfson Microelectronics - -pci:v00001AED* - ID_VENDOR_FROM_DATABASE=Fusion-io - -pci:v00001AEDd00001003* - ID_PRODUCT_FROM_DATABASE=ioDimm3 (v1.2) - -pci:v00001AEDd00001005* - ID_PRODUCT_FROM_DATABASE=ioDimm3 - -pci:v00001AEDd00001005sv00001014sd000003C3* - ID_PRODUCT_FROM_DATABASE=High IOPS SSD PCIe Adapter - -pci:v00001AEDd00001005sv0000103Csd0000176F* - ID_PRODUCT_FROM_DATABASE=1.28TB MLC PCIe ioDrive Duo - -pci:v00001AEDd00001005sv0000103Csd00001770* - ID_PRODUCT_FROM_DATABASE=5.2TB MLC PCIe ioDrive Octal - -pci:v00001AEDd00001005sv0000103Csd0000178B* - ID_PRODUCT_FROM_DATABASE=160GB SLC PCIe ioDrive - -pci:v00001AEDd00001005sv0000103Csd0000178C* - ID_PRODUCT_FROM_DATABASE=320GB MLC PCIe ioDrive - -pci:v00001AEDd00001005sv0000103Csd0000178D* - ID_PRODUCT_FROM_DATABASE=320GB SLC PCIe ioDrive Duo - -pci:v00001AEDd00001005sv0000103Csd0000178E* - ID_PRODUCT_FROM_DATABASE=640GB MLC PCIe ioDrive Duo - -pci:v00001AEDd00001006* - ID_PRODUCT_FROM_DATABASE=ioXtreme - -pci:v00001AEDd00001007* - ID_PRODUCT_FROM_DATABASE=ioXtreme Pro - -pci:v00001AEDd00001008* - ID_PRODUCT_FROM_DATABASE=ioXtreme-2 - -pci:v00001AEDd00002001* - ID_PRODUCT_FROM_DATABASE=ioDrive2 - -pci:v00001AEE* - ID_VENDOR_FROM_DATABASE=Caustic Graphics Inc. - -pci:v00001AF4* - ID_VENDOR_FROM_DATABASE=Red Hat, Inc - -pci:v00001AF4d00001000* - ID_PRODUCT_FROM_DATABASE=Virtio network device - -pci:v00001AF4d00001001* - ID_PRODUCT_FROM_DATABASE=Virtio block device - -pci:v00001AF4d00001002* - ID_PRODUCT_FROM_DATABASE=Virtio memory balloon - -pci:v00001AF4d00001003* - ID_PRODUCT_FROM_DATABASE=Virtio console - -pci:v00001AF4d00001009* - ID_PRODUCT_FROM_DATABASE=Virtio filesystem - -pci:v00001AF5* - ID_VENDOR_FROM_DATABASE=Netezza Corp. - -pci:v00001AFA* - ID_VENDOR_FROM_DATABASE=J & W Electronics Co., Ltd. - -pci:v00001B03* - ID_VENDOR_FROM_DATABASE=Magnum Semiconductor, Inc, - -pci:v00001B03d00006100* - ID_PRODUCT_FROM_DATABASE=DXT/DXTPro Multiformat Broadcast HD/SD Encoder/Decoder/Transcoder - -pci:v00001B08* - ID_VENDOR_FROM_DATABASE=MSC Vertriebs GmbH - -pci:v00001B13* - ID_VENDOR_FROM_DATABASE=Jaton Corp - -pci:v00001B1A* - ID_VENDOR_FROM_DATABASE=K&F Computing Research Co. - -pci:v00001B1Ad00000E70* - ID_PRODUCT_FROM_DATABASE=GRAPE - -pci:v00001B21* - ID_VENDOR_FROM_DATABASE=ASMedia Technology Inc. - -pci:v00001B21d00000611* - ID_PRODUCT_FROM_DATABASE=ASM1061 SATA IDE Controller - -pci:v00001B21d00000612* - ID_PRODUCT_FROM_DATABASE=ASM1062 Serial ATA Controller - -pci:v00001B21d00001042* - ID_PRODUCT_FROM_DATABASE=ASM1042 SuperSpeed USB Host Controller - -pci:v00001B21d00001080* - ID_PRODUCT_FROM_DATABASE=ASM1083/1085 PCIe to PCI Bridge - -pci:v00001B36* - ID_VENDOR_FROM_DATABASE=Red Hat, Inc. - -pci:v00001B37* - ID_VENDOR_FROM_DATABASE=Signal Processing Devices Sweden AB - -pci:v00001B37d00000014* - ID_PRODUCT_FROM_DATABASE=ADQ412 - -pci:v00001B3A* - ID_VENDOR_FROM_DATABASE=Westar Display Technologies - -pci:v00001B3Ad00007589* - ID_PRODUCT_FROM_DATABASE=HRED J2000 - JPEG 2000 Video Codec Device - -pci:v00001B3E* - ID_VENDOR_FROM_DATABASE=Teradata Corp. - -pci:v00001B3Ed00001FA8* - ID_PRODUCT_FROM_DATABASE=BYNET BIC2SE/X - -pci:v00001B3Ed00001FA8sv00001B3Esd000000A3* - ID_PRODUCT_FROM_DATABASE=BYNET BIC2SX - -pci:v00001B3Ed00001FA8sv00001B3Esd000000C3* - ID_PRODUCT_FROM_DATABASE=BYNET BIC2SE - -pci:v00001B40* - ID_VENDOR_FROM_DATABASE=Schooner Information Technology, Inc. - -pci:v00001B47* - ID_VENDOR_FROM_DATABASE=Numascale AS - -pci:v00001B47d00000601* - ID_PRODUCT_FROM_DATABASE=NumaChip N601 - -pci:v00001B47d00000602* - ID_PRODUCT_FROM_DATABASE=NumaChip N602 - -pci:v00001B4B* - ID_VENDOR_FROM_DATABASE=Marvell Technology Group Ltd. - -pci:v00001B4Bd00000640* - ID_PRODUCT_FROM_DATABASE=88SE9128 SATA III 6Gb/s RAID Controller - -pci:v00001B4Bd00009120* - ID_PRODUCT_FROM_DATABASE=88SE9120 SATA 6Gb/s Controller - -pci:v00001B4Bd00009123* - ID_PRODUCT_FROM_DATABASE=88SE9123 PCIe SATA 6.0 Gb/s controller - -pci:v00001B4Bd00009125* - ID_PRODUCT_FROM_DATABASE=88SE9125 PCIe SATA 6.0 Gb/s controller - -pci:v00001B4Bd00009128* - ID_PRODUCT_FROM_DATABASE=88SE9128 PCIe SATA 6 Gb/s RAID controller - -pci:v00001B4Bd00009130* - ID_PRODUCT_FROM_DATABASE=88SE9128 PCIe SATA 6 Gb/s RAID controller with HyperDuo - -pci:v00001B4Bd00009130sv00001043sd00008438* - ID_PRODUCT_FROM_DATABASE=P8P67 Deluxe Motherboard - -pci:v00001B4Bd00009172* - ID_PRODUCT_FROM_DATABASE=88SE9172 SATA 6Gb/s Controller - -pci:v00001B4Bd0000917A* - ID_PRODUCT_FROM_DATABASE=88SE9172 SATA III 6Gb/s RAID Controller - -pci:v00001B4Bd00009192* - ID_PRODUCT_FROM_DATABASE=88SE9172 SATA III 6Gb/s RAID Controller - -pci:v00001B4Bd000091A0* - ID_PRODUCT_FROM_DATABASE=88SE91A0 SATA 6Gb/s Controller - -pci:v00001B4Bd000091A4* - ID_PRODUCT_FROM_DATABASE=88SE912x IDE Controller - -pci:v00001B4Bd00009230* - ID_PRODUCT_FROM_DATABASE=88SE9230 PCIe SATA 6Gb/s Controller - -pci:v00001B4Bd00009480* - ID_PRODUCT_FROM_DATABASE=88SE9480 SAS/SATA 6Gb/s RAID controller - -pci:v00001B55* - ID_VENDOR_FROM_DATABASE=NetUP Inc. - -pci:v00001B55d00002A2C* - ID_PRODUCT_FROM_DATABASE=Dual DVB-S2-CI card - -pci:v00001B55d0000E2E4* - ID_PRODUCT_FROM_DATABASE=Dual DVB-T/C-CI RF card - -pci:v00001B55d0000E5F4* - ID_PRODUCT_FROM_DATABASE=MPEG2 and H264 Encoder-Transcoder - -pci:v00001B55d0000F1C4* - ID_PRODUCT_FROM_DATABASE=Dual ASI-RX/TX-CI card - -pci:v00001B6F* - ID_VENDOR_FROM_DATABASE=Etron Technology, Inc. - -pci:v00001B6Fd00007023* - ID_PRODUCT_FROM_DATABASE=EJ168 USB 3.0 Host Controller - -pci:v00001B6Fd00007052* - ID_PRODUCT_FROM_DATABASE=EJ188/EJ198 USB 3.0 Host Controller - -pci:v00001B73* - ID_VENDOR_FROM_DATABASE=Fresco Logic - -pci:v00001B73d00001000* - ID_PRODUCT_FROM_DATABASE=FL1000G USB 3.0 Host Controller - -pci:v00001B73d00001000sv00001D5Csd00001000* - ID_PRODUCT_FROM_DATABASE=Anker USB 3.0 Express Card - -pci:v00001B73d00001009* - ID_PRODUCT_FROM_DATABASE=FL1009 USB 3.0 Host Controller - -pci:v00001B74* - ID_VENDOR_FROM_DATABASE=OpenVox Communication Co. Ltd. - -pci:v00001B74d00000115* - ID_PRODUCT_FROM_DATABASE=D115P/D115E Single-port E1/T1 card - -pci:v00001B74d0000D130* - ID_PRODUCT_FROM_DATABASE=D130P/D130E Single-port E1/T1 card (3rd GEN) - -pci:v00001B74d0000D210* - ID_PRODUCT_FROM_DATABASE=D210P/D210E Dual-port E1/T1 card(2nd generation) - -pci:v00001B74d0000D230* - ID_PRODUCT_FROM_DATABASE=D230 Dual-port E1/T1 card (2nd generation) - -pci:v00001B74d0000D410* - ID_PRODUCT_FROM_DATABASE=D410/430 Quad-port E1/T1 card - -pci:v00001B74d0000D430* - ID_PRODUCT_FROM_DATABASE=D410/430 Quad-port E1/T1 card - -pci:v00001B85* - ID_VENDOR_FROM_DATABASE=OCZ Technology Group, Inc. - -pci:v00001B85d00001041* - ID_PRODUCT_FROM_DATABASE=RevoDrive 3 X2 PCI-Express SSD 240 GB (Marvell Controller) - -pci:v00001B96* - ID_VENDOR_FROM_DATABASE=Western Digital - -pci:v00001B9A* - ID_VENDOR_FROM_DATABASE=XAVi Technologies Corp. - -pci:v00001BAD* - ID_VENDOR_FROM_DATABASE=ReFLEX CES - -pci:v00001BB0* - ID_VENDOR_FROM_DATABASE=SimpliVity Corporation - -pci:v00001BB0d00000002* - ID_PRODUCT_FROM_DATABASE=OmniCube Accelerator OA-3000 - -pci:v00001BB3* - ID_VENDOR_FROM_DATABASE=Bluecherry - -pci:v00001BB3d00004304* - ID_PRODUCT_FROM_DATABASE=BC-04120A MPEG4 4 port video encoder / decoder - -pci:v00001BB3d00004309* - ID_PRODUCT_FROM_DATABASE=BC-08240A MPEG4 4 port video encoder / decoder - -pci:v00001BB3d00004310* - ID_PRODUCT_FROM_DATABASE=BC-16480A MPEG4 16 port video encoder / decoder - -pci:v00001BB3d00004E04* - ID_PRODUCT_FROM_DATABASE=BC-04120A 4 port MPEG4 video encoder / decoder - -pci:v00001BB3d00004E09* - ID_PRODUCT_FROM_DATABASE=BC-08240A 8 port MPEG4 video encoder / decoder - -pci:v00001BB3d00004E10* - ID_PRODUCT_FROM_DATABASE=BC-16480A 16 port MPEG4 video encoder / decoder - -pci:v00001BB3d00005304* - ID_PRODUCT_FROM_DATABASE=BC-H04120A 4 port H.264 video and audio encoder / decoder - -pci:v00001BB3d00005308* - ID_PRODUCT_FROM_DATABASE=BC-H08240A 8 port H.264 video and audio encoder / decoder - -pci:v00001BB3d00005310* - ID_PRODUCT_FROM_DATABASE=BC-H16480A 16 port H.264 video and audio encoder / decoder - -pci:v00001BB5* - ID_VENDOR_FROM_DATABASE=Quantenna Communications, Inc. - -pci:v00001BBF* - ID_VENDOR_FROM_DATABASE=Maxeler Technologies Ltd. - -pci:v00001BBFd00000003* - ID_PRODUCT_FROM_DATABASE=MAX3 - -pci:v00001BBFd00000004* - ID_PRODUCT_FROM_DATABASE=MAX4 - -pci:v00001BF4* - ID_VENDOR_FROM_DATABASE=VTI Instruments Corporation - -pci:v00001C1C* - ID_VENDOR_FROM_DATABASE=Symphony - -pci:v00001C1Cd00000001* - ID_PRODUCT_FROM_DATABASE=82C101 - -pci:v00001C2C* - ID_VENDOR_FROM_DATABASE=Fiberblaze - -pci:v00001C32* - ID_VENDOR_FROM_DATABASE=Highland Technology, Inc. - -pci:v00001C3B* - ID_VENDOR_FROM_DATABASE=Accensus, LLC - -pci:v00001C3Bd00000200* - ID_PRODUCT_FROM_DATABASE=Telas2 - -pci:v00001C44* - ID_VENDOR_FROM_DATABASE=Enmotus Inc - -pci:v00001C44d00008000* - ID_PRODUCT_FROM_DATABASE=8000 Storage IO Controller - -pci:v00001C7F* - ID_VENDOR_FROM_DATABASE=Elektrobit Austria GmbH - -pci:v00001C7Fd00005100* - ID_PRODUCT_FROM_DATABASE=EB5100 - -pci:v00001C8A* - ID_VENDOR_FROM_DATABASE=TSF5 Corporation - -pci:v00001C8Ad00000001* - ID_PRODUCT_FROM_DATABASE=Hunter PCI Express - -pci:v00001CB1* - ID_VENDOR_FROM_DATABASE=Collion UG & Co.KG - -pci:v00001D44* - ID_VENDOR_FROM_DATABASE=DPT - -pci:v00001D44d0000A400* - ID_PRODUCT_FROM_DATABASE=PM2x24/PM3224 - -pci:v00001D5C* - ID_VENDOR_FROM_DATABASE=Fantasia Trading LLC - -pci:v00001DE1* - ID_VENDOR_FROM_DATABASE=Tekram Technology Co.,Ltd. - -pci:v00001DE1d00000391* - ID_PRODUCT_FROM_DATABASE=TRM-S1040 - -pci:v00001DE1d00002020* - ID_PRODUCT_FROM_DATABASE=DC-390 - -pci:v00001DE1d0000690C* - ID_PRODUCT_FROM_DATABASE=690c - -pci:v00001DE1d0000DC29* - ID_PRODUCT_FROM_DATABASE=DC290 - -pci:v00001FC0* - ID_VENDOR_FROM_DATABASE=Ascom (Finland) Oy - -pci:v00001FC0d00000300* - ID_PRODUCT_FROM_DATABASE=E2200 Dual E1/Rawpipe Card - -pci:v00001FC0d00000301* - ID_PRODUCT_FROM_DATABASE=C5400 SHDSL/E1 Card - -pci:v00001FC1* - ID_VENDOR_FROM_DATABASE=QLogic, Corp. - -pci:v00001FC1d0000000D* - ID_PRODUCT_FROM_DATABASE=IBA6110 InfiniBand HCA - -pci:v00001FC1d00000010* - ID_PRODUCT_FROM_DATABASE=IBA6120 InfiniBand HCA - -pci:v00001FC9* - ID_VENDOR_FROM_DATABASE=Tehuti Networks Ltd. - -pci:v00001FC9d00003009* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE SmartNIC - -pci:v00001FC9d00003010* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE SmartNIC - -pci:v00001FC9d00003010sv00000000sd00003002* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Single Port XFP SmartNIC - -pci:v00001FC9d00003010sv00000000sd00003004* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Single Port SFP+ SmartNIC - -pci:v00001FC9d00003010sv00000000sd00003008* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Single Port CX4 SmartNIC - -pci:v00001FC9d00003014* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE SmartNIC 2-Port - -pci:v00001FC9d00003014sv00000000sd00003003* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Dual Port XFP Low Profile SmartNIC - -pci:v00001FC9d00003014sv00000000sd00003005* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Dual Port SFP+ Low Profile SmartNIC - -pci:v00001FC9d00003014sv00000000sd00003014* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Dual Port CX4 Low Profile SmartNIC - -pci:v00001FC9d00003110* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Single Port SmartNIC - -pci:v00001FC9d00003110sv00000000sd00003004* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Single Port SFP+ SmartNIC - -pci:v00001FC9d00003114* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC - -pci:v00001FC9d00003114sv00000000sd00003005* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Dual Port SFP+ Low Profile SmartNIC - -pci:v00001FC9d00003114sv00000000sd00003011* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC - -pci:v00001FC9d00003114sv00000000sd00003012* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC - -pci:v00001FC9d00003114sv00000000sd00003014* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Dual Port CX4 Low Profile SmartNIC - -pci:v00001FC9d00003310* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE SFP+ Single Port SmartNIC - -pci:v00001FC9d00003310sv00000000sd00003004* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Single Port SFP+ SmartNIC - -pci:v00001FC9d00003314* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Dual Port Low Profile SmartNIC - -pci:v00001FC9d00003314sv00000000sd00003005* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Dual Port SFP+ Low Profile SmartNIC - -pci:v00001FC9d00003314sv00000000sd00003011* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Dual Port SFP+/CX4 Low Profile SmartNIC - -pci:v00001FC9d00003314sv00000000sd00003012* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Dual Port CX4/SFP+ Low Profile SmartNIC - -pci:v00001FC9d00003314sv00000000sd00003014* - ID_PRODUCT_FROM_DATABASE=10-Giga TOE Dual Port CX4 Low Profile SmartNIC - -pci:v00001FCE* - ID_VENDOR_FROM_DATABASE=Cognio Inc. - -pci:v00001FCEd00000001* - ID_PRODUCT_FROM_DATABASE=Spectrum Analyzer PC Card (SAgE) - -pci:v00001FD4* - ID_VENDOR_FROM_DATABASE=SUNIX Co., Ltd. - -pci:v00001FD4d00000001* - ID_PRODUCT_FROM_DATABASE=Matrix multiport serial adapter - -pci:v00001FD4d00001999* - ID_PRODUCT_FROM_DATABASE=Multiport serial controller - -pci:v00002000* - ID_VENDOR_FROM_DATABASE=Smart Link Ltd. - -pci:v00002000d00002800* - ID_PRODUCT_FROM_DATABASE=SmartPCI2800 V.92 PCI Soft DFT - -pci:v00002001* - ID_VENDOR_FROM_DATABASE=Temporal Research Ltd - -pci:v00002003* - ID_VENDOR_FROM_DATABASE=Smart Link Ltd. - -pci:v00002003d00008800* - ID_PRODUCT_FROM_DATABASE=LM-I56N - -pci:v00002004* - ID_VENDOR_FROM_DATABASE=Smart Link Ltd. - -pci:v000020F4* - ID_VENDOR_FROM_DATABASE=TRENDnet - -pci:v00002116* - ID_VENDOR_FROM_DATABASE=ZyDAS Technology Corp. - -pci:v000021C3* - ID_VENDOR_FROM_DATABASE=21st Century Computer Corp. - -pci:v00002304* - ID_VENDOR_FROM_DATABASE=Colorgraphic Communications Corp. - -pci:v00002348* - ID_VENDOR_FROM_DATABASE=Racore - -pci:v00002348d00002010* - ID_PRODUCT_FROM_DATABASE=8142 100VG/AnyLAN - -pci:v00002646* - ID_VENDOR_FROM_DATABASE=Kingston Technologies - -pci:v0000270B* - ID_VENDOR_FROM_DATABASE=Xantel Corporation - -pci:v0000270F* - ID_VENDOR_FROM_DATABASE=Chaintech Computer Co. Ltd - -pci:v00002711* - ID_VENDOR_FROM_DATABASE=AVID Technology Inc. - -pci:v00002955* - ID_VENDOR_FROM_DATABASE=Connectix Virtual PC - -pci:v00002955d00006E61* - ID_PRODUCT_FROM_DATABASE=OHCI USB 1.1 controller - -pci:v00002A15* - ID_VENDOR_FROM_DATABASE=3D Vision(???) - -pci:v00003000* - ID_VENDOR_FROM_DATABASE=Hansol Electronics Inc. - -pci:v00003142* - ID_VENDOR_FROM_DATABASE=Post Impression Systems. - -pci:v000031AB* - ID_VENDOR_FROM_DATABASE=Zonet - -pci:v000031ABd00001FAA* - ID_PRODUCT_FROM_DATABASE=ZEW1602 802.11b/g Wireless Adapter - -pci:v00003388* - ID_VENDOR_FROM_DATABASE=Hint Corp - -pci:v00003388d00000013* - ID_PRODUCT_FROM_DATABASE=HiNT HC4 PCI to ISDN bridge, Multimedia audio controller - -pci:v00003388d00000014* - ID_PRODUCT_FROM_DATABASE=HiNT HC4 PCI to ISDN bridge, Network controller - -pci:v00003388d00000020* - ID_PRODUCT_FROM_DATABASE=HB6 Universal PCI-PCI bridge (transparent mode) - -pci:v00003388d00000021* - ID_PRODUCT_FROM_DATABASE=HB6 Universal PCI-PCI bridge (non-transparent mode) - -pci:v00003388d00000021sv00001775sd0000C200* - ID_PRODUCT_FROM_DATABASE=C2K CompactPCI interface bridge - -pci:v00003388d00000021sv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00003388d00000021sv00004C53sd00001050* - ID_PRODUCT_FROM_DATABASE=CT7 mainboard - -pci:v00003388d00000021sv00004C53sd00001080* - ID_PRODUCT_FROM_DATABASE=CT8 mainboard - -pci:v00003388d00000021sv00004C53sd00001090* - ID_PRODUCT_FROM_DATABASE=Cx9 mainboard - -pci:v00003388d00000021sv00004C53sd000010A0* - ID_PRODUCT_FROM_DATABASE=CA3/CR3 mainboard - -pci:v00003388d00000021sv00004C53sd00003010* - ID_PRODUCT_FROM_DATABASE=PPCI mezzanine (32-bit PMC) - -pci:v00003388d00000021sv00004C53sd00003011* - ID_PRODUCT_FROM_DATABASE=PPCI mezzanine (64-bit PMC) - -pci:v00003388d00000021sv00004C53sd00004000* - ID_PRODUCT_FROM_DATABASE=PMCCARR1 carrier board - -pci:v00003388d00000022* - ID_PRODUCT_FROM_DATABASE=HiNT HB4 PCI-PCI Bridge (PCI6150) - -pci:v00003388d00000026* - ID_PRODUCT_FROM_DATABASE=HB2 PCI-PCI Bridge - -pci:v00003388d00001018* - ID_PRODUCT_FROM_DATABASE=Audiotrak INCA88 - -pci:v00003388d00001019* - ID_PRODUCT_FROM_DATABASE=Miditrak 2120 - -pci:v00003388d0000101A* - ID_PRODUCT_FROM_DATABASE=E.Band [AudioTrak Inca88] - -pci:v00003388d0000101B* - ID_PRODUCT_FROM_DATABASE=E.Band [AudioTrak Inca88] - -pci:v00003388d00008011* - ID_PRODUCT_FROM_DATABASE=VXPro II Chipset - -pci:v00003388d00008011sv00003388sd00008011* - ID_PRODUCT_FROM_DATABASE=VXPro II Chipset CPU to PCI Bridge - -pci:v00003388d00008012* - ID_PRODUCT_FROM_DATABASE=VXPro II Chipset - -pci:v00003388d00008012sv00003388sd00008012* - ID_PRODUCT_FROM_DATABASE=VXPro II Chipset PCI to ISA Bridge - -pci:v00003388d00008013* - ID_PRODUCT_FROM_DATABASE=VXPro II IDE - -pci:v00003388d00008013sv00003388sd00008013* - ID_PRODUCT_FROM_DATABASE=VXPro II Chipset EIDE Controller - -pci:v00003388d0000A103* - ID_PRODUCT_FROM_DATABASE=Blackmagic Design DeckLink HD Pro - -pci:v00003411* - ID_VENDOR_FROM_DATABASE=Quantum Designs (H.K.) Inc - -pci:v00003442* - ID_VENDOR_FROM_DATABASE=Bihl+Wiedemann GmbH - -pci:v00003442d00001783* - ID_PRODUCT_FROM_DATABASE=AS-i 3.0 cPCI Master - -pci:v00003442d00001922* - ID_PRODUCT_FROM_DATABASE=AS-i 3.0 PCI Master - -pci:v00003475* - ID_VENDOR_FROM_DATABASE=Arastra Inc. - -pci:v00003513* - ID_VENDOR_FROM_DATABASE=ARCOM Control Systems Ltd - -pci:v000037D9* - ID_VENDOR_FROM_DATABASE=ITD Firm ltd. - -pci:v000037D9d00001138* - ID_PRODUCT_FROM_DATABASE=SCHD-PH-8 Phase detector - -pci:v00003842* - ID_VENDOR_FROM_DATABASE=eVga.com. Corp. - -pci:v000038EF* - ID_VENDOR_FROM_DATABASE=4Links - -pci:v00003D3D* - ID_VENDOR_FROM_DATABASE=3DLabs - -pci:v00003D3Dd00000001* - ID_PRODUCT_FROM_DATABASE=GLINT 300SX - -pci:v00003D3Dd00000002* - ID_PRODUCT_FROM_DATABASE=GLINT 500TX - -pci:v00003D3Dd00000002sv00000000sd00000000* - ID_PRODUCT_FROM_DATABASE=GLoria L - -pci:v00003D3Dd00000003* - ID_PRODUCT_FROM_DATABASE=GLINT Delta - -pci:v00003D3Dd00000003sv00000000sd00000000* - ID_PRODUCT_FROM_DATABASE=GLoria XL - -pci:v00003D3Dd00000004* - ID_PRODUCT_FROM_DATABASE=Permedia - -pci:v00003D3Dd00000005* - ID_PRODUCT_FROM_DATABASE=Permedia - -pci:v00003D3Dd00000006* - ID_PRODUCT_FROM_DATABASE=GLINT MX - -pci:v00003D3Dd00000006sv00000000sd00000000* - ID_PRODUCT_FROM_DATABASE=GLoria XL - -pci:v00003D3Dd00000006sv00001048sd00000A42* - ID_PRODUCT_FROM_DATABASE=GLoria XXL - -pci:v00003D3Dd00000007* - ID_PRODUCT_FROM_DATABASE=3D Extreme - -pci:v00003D3Dd00000008* - ID_PRODUCT_FROM_DATABASE=GLINT Gamma G1 - -pci:v00003D3Dd00000008sv00001048sd00000A42* - ID_PRODUCT_FROM_DATABASE=GLoria XXL - -pci:v00003D3Dd00000009* - ID_PRODUCT_FROM_DATABASE=Permedia II 2D+3D - -pci:v00003D3Dd00000009sv00001040sd00000011* - ID_PRODUCT_FROM_DATABASE=AccelStar II - -pci:v00003D3Dd00000009sv00001048sd00000A42* - ID_PRODUCT_FROM_DATABASE=GLoria XXL - -pci:v00003D3Dd00000009sv000013E9sd00001000* - ID_PRODUCT_FROM_DATABASE=6221L-4U - -pci:v00003D3Dd00000009sv00003D3Dsd00000100* - ID_PRODUCT_FROM_DATABASE=AccelStar II 3D Accelerator - -pci:v00003D3Dd00000009sv00003D3Dsd00000111* - ID_PRODUCT_FROM_DATABASE=Permedia 3:16 - -pci:v00003D3Dd00000009sv00003D3Dsd00000114* - ID_PRODUCT_FROM_DATABASE=Santa Ana - -pci:v00003D3Dd00000009sv00003D3Dsd00000116* - ID_PRODUCT_FROM_DATABASE=Oxygen GVX1 - -pci:v00003D3Dd00000009sv00003D3Dsd00000119* - ID_PRODUCT_FROM_DATABASE=Scirocco - -pci:v00003D3Dd00000009sv00003D3Dsd00000120* - ID_PRODUCT_FROM_DATABASE=Santa Ana PCL - -pci:v00003D3Dd00000009sv00003D3Dsd00000125* - ID_PRODUCT_FROM_DATABASE=Oxygen VX1 - -pci:v00003D3Dd00000009sv00003D3Dsd00000127* - ID_PRODUCT_FROM_DATABASE=Permedia3 Create! - -pci:v00003D3Dd0000000A* - ID_PRODUCT_FROM_DATABASE=GLINT R3 - -pci:v00003D3Dd0000000Asv00003D3Dsd00000121* - ID_PRODUCT_FROM_DATABASE=Oxygen VX1 - -pci:v00003D3Dd0000000C* - ID_PRODUCT_FROM_DATABASE=GLINT R3 [Oxygen VX1] - -pci:v00003D3Dd0000000Csv00003D3Dsd00000144* - ID_PRODUCT_FROM_DATABASE=Oxygen VX1-4X AGP [Permedia 4] - -pci:v00003D3Dd0000000D* - ID_PRODUCT_FROM_DATABASE=GLint R4 rev A - -pci:v00003D3Dd0000000E* - ID_PRODUCT_FROM_DATABASE=GLINT Gamma G2 - -pci:v00003D3Dd00000011* - ID_PRODUCT_FROM_DATABASE=GLint R4 rev B - -pci:v00003D3Dd00000012* - ID_PRODUCT_FROM_DATABASE=GLint R5 rev A - -pci:v00003D3Dd00000013* - ID_PRODUCT_FROM_DATABASE=GLint R5 rev B - -pci:v00003D3Dd00000020* - ID_PRODUCT_FROM_DATABASE=VP10 visual processor - -pci:v00003D3Dd00000022* - ID_PRODUCT_FROM_DATABASE=VP10 visual processor - -pci:v00003D3Dd00000024* - ID_PRODUCT_FROM_DATABASE=VP9 visual processor - -pci:v00003D3Dd0000002C* - ID_PRODUCT_FROM_DATABASE=Wildcat Realizm 100/200 - -pci:v00003D3Dd00000030* - ID_PRODUCT_FROM_DATABASE=Wildcat Realizm 800 - -pci:v00003D3Dd00000032* - ID_PRODUCT_FROM_DATABASE=Wildcat Realizm 500 - -pci:v00003D3Dd00000100* - ID_PRODUCT_FROM_DATABASE=Permedia II 2D+3D - -pci:v00003D3Dd000007A1* - ID_PRODUCT_FROM_DATABASE=Wildcat III 6210 - -pci:v00003D3Dd000007A2* - ID_PRODUCT_FROM_DATABASE=Sun XVR-500 Graphics Accelerator - -pci:v00003D3Dd000007A3* - ID_PRODUCT_FROM_DATABASE=Wildcat IV 7210 - -pci:v00003D3Dd00001004* - ID_PRODUCT_FROM_DATABASE=Permedia - -pci:v00003D3Dd00003D04* - ID_PRODUCT_FROM_DATABASE=Permedia - -pci:v00003D3Dd0000FFFF* - ID_PRODUCT_FROM_DATABASE=Glint VGA - -pci:v00004005* - ID_VENDOR_FROM_DATABASE=Avance Logic Inc. - -pci:v00004005d00000300* - ID_PRODUCT_FROM_DATABASE=ALS300 PCI Audio Device - -pci:v00004005d00000308* - ID_PRODUCT_FROM_DATABASE=ALS300+ PCI Audio Device - -pci:v00004005d00000309* - ID_PRODUCT_FROM_DATABASE=PCI Input Controller - -pci:v00004005d00001064* - ID_PRODUCT_FROM_DATABASE=ALG-2064 - -pci:v00004005d00002064* - ID_PRODUCT_FROM_DATABASE=ALG-2064i - -pci:v00004005d00002128* - ID_PRODUCT_FROM_DATABASE=ALG-2364A GUI Accelerator - -pci:v00004005d00002301* - ID_PRODUCT_FROM_DATABASE=ALG-2301 - -pci:v00004005d00002302* - ID_PRODUCT_FROM_DATABASE=ALG-2302 - -pci:v00004005d00002303* - ID_PRODUCT_FROM_DATABASE=AVG-2302 GUI Accelerator - -pci:v00004005d00002364* - ID_PRODUCT_FROM_DATABASE=ALG-2364A - -pci:v00004005d00002464* - ID_PRODUCT_FROM_DATABASE=ALG-2464 - -pci:v00004005d00002501* - ID_PRODUCT_FROM_DATABASE=ALG-2564A/25128A - -pci:v00004005d00004000* - ID_PRODUCT_FROM_DATABASE=ALS4000 Audio Chipset - -pci:v00004005d00004000sv00004005sd00004000* - ID_PRODUCT_FROM_DATABASE=ALS4000 Audio Chipset - -pci:v00004005d00004710* - ID_PRODUCT_FROM_DATABASE=ALC200/200P - -pci:v00004033* - ID_VENDOR_FROM_DATABASE=Addtron Technology Co, Inc. - -pci:v00004033d00001360* - ID_PRODUCT_FROM_DATABASE=RTL8139 Ethernet - -pci:v00004040* - ID_VENDOR_FROM_DATABASE=NetXen Incorporated - -pci:v00004040d00000001* - ID_PRODUCT_FROM_DATABASE=NXB-10GXSR 10-Gigabit Ethernet PCIe Adapter with SR-XFP optical interface - -pci:v00004040d00000001sv0000103Csd00007047* - ID_PRODUCT_FROM_DATABASE=NC510F PCIe 10-Gigabit Server Adapter - -pci:v00004040d00000002* - ID_PRODUCT_FROM_DATABASE=NXB-10GCX4 10-Gigabit Ethernet PCIe Adapter with CX4 copper interface - -pci:v00004040d00000002sv0000103Csd00007048* - ID_PRODUCT_FROM_DATABASE=NC510c PCIe 10-Gigabit Server Adapter - -pci:v00004040d00000003* - ID_PRODUCT_FROM_DATABASE=NXB-4GCU Quad Gigabit Ethernet PCIe Adapter with 1000-BASE-T interface - -pci:v00004040d00000004* - ID_PRODUCT_FROM_DATABASE=BladeCenter-H 10-Gigabit Ethernet High Speed Daughter Card - -pci:v00004040d00000005* - ID_PRODUCT_FROM_DATABASE=NetXen Dual Port 10GbE Multifunction Adapter for c-Class - -pci:v00004040d00000005sv0000103Csd0000170E* - ID_PRODUCT_FROM_DATABASE=NC512m Dual Port 10GbE Multifunction BL-C Adapter - -pci:v00004040d00000024* - ID_PRODUCT_FROM_DATABASE=XG Mgmt - -pci:v00004040d00000025* - ID_PRODUCT_FROM_DATABASE=XG Mgmt - -pci:v00004040d00000100* - ID_PRODUCT_FROM_DATABASE=NX3031 Multifunction 1/10-Gigabit Server Adapter - -pci:v00004040d00000100sv0000103Csd0000171B* - ID_PRODUCT_FROM_DATABASE=NC522m Dual Port 10GbE Multifunction BL-c Adapter - -pci:v00004040d00000100sv0000103Csd00001740* - ID_PRODUCT_FROM_DATABASE=NC375T PCI Express Quad Port Gigabit Server Adapter - -pci:v00004040d00000100sv0000103Csd00003251* - ID_PRODUCT_FROM_DATABASE=NC375i 1G w/NC524SFP 10G Module - -pci:v00004040d00000100sv0000103Csd0000705A* - ID_PRODUCT_FROM_DATABASE=NC375i Integrated Quad Port Multifunction Gigabit Server Adapter - -pci:v00004040d00000100sv0000103Csd0000705B* - ID_PRODUCT_FROM_DATABASE=NC522SFP Dual Port 10GbE Server Adapter - -pci:v00004040d00000100sv0000152Dsd0000896B* - ID_PRODUCT_FROM_DATABASE=TG20 Dual Port 10GbE Server/Storage Adapter - -pci:v00004040d00000100sv00004040sd00000124* - ID_PRODUCT_FROM_DATABASE=NX3031 Quad Port Gigabit Server Adapter - -pci:v00004040d00000100sv00004040sd00000126* - ID_PRODUCT_FROM_DATABASE=Dual Port SFP+ 10GbE Server Adapter - -pci:v00004143* - ID_VENDOR_FROM_DATABASE=Digital Equipment Corp - -pci:v00004144* - ID_VENDOR_FROM_DATABASE=Alpha Data - -pci:v00004144d00000044* - ID_PRODUCT_FROM_DATABASE=ADM-XRCIIPro - -pci:v00004150* - ID_VENDOR_FROM_DATABASE=ONA Electroerosion - -pci:v00004150d00000001* - ID_PRODUCT_FROM_DATABASE=PCI32TLITE FILSTRUP1 PCI to VME Bridge Controller - -pci:v00004150d00000006* - ID_PRODUCT_FROM_DATABASE=PCI32TLITE UART 16550 Opencores - -pci:v00004150d00000007* - ID_PRODUCT_FROM_DATABASE=PCI32TLITE CAN Controller Opencores - -pci:v0000415A* - ID_VENDOR_FROM_DATABASE=Auzentech, Inc. - -pci:v0000416C* - ID_VENDOR_FROM_DATABASE=Aladdin Knowledge Systems - -pci:v0000416Cd00000100* - ID_PRODUCT_FROM_DATABASE=AladdinCARD - -pci:v0000416Cd00000200* - ID_PRODUCT_FROM_DATABASE=CPC - -pci:v00004321* - ID_VENDOR_FROM_DATABASE=Tata Power Strategic Electronics Division - -pci:v0000434E* - ID_VENDOR_FROM_DATABASE=CAST Navigation LLC - -pci:v00004444* - ID_VENDOR_FROM_DATABASE=Internext Compression Inc - -pci:v00004444d00000016* - ID_PRODUCT_FROM_DATABASE=iTVC16 (CX23416) Video Decoder - -pci:v00004444d00000016sv00000070sd00000003* - ID_PRODUCT_FROM_DATABASE=WinTV PVR 250 - -pci:v00004444d00000016sv00000070sd00000009* - ID_PRODUCT_FROM_DATABASE=WinTV PVR 150 - -pci:v00004444d00000016sv00000070sd00000801* - ID_PRODUCT_FROM_DATABASE=WinTV PVR 150 - -pci:v00004444d00000016sv00000070sd00000807* - ID_PRODUCT_FROM_DATABASE=WinTV PVR 150 - -pci:v00004444d00000016sv00000070sd00004001* - ID_PRODUCT_FROM_DATABASE=WinTV PVR 250 - -pci:v00004444d00000016sv00000070sd00004009* - ID_PRODUCT_FROM_DATABASE=WinTV PVR 250 - -pci:v00004444d00000016sv00000070sd00004801* - ID_PRODUCT_FROM_DATABASE=WinTV PVR 250 - -pci:v00004444d00000016sv00000070sd00004803* - ID_PRODUCT_FROM_DATABASE=WinTV PVR 250 - -pci:v00004444d00000016sv00000070sd00008003* - ID_PRODUCT_FROM_DATABASE=WinTV PVR 150 - -pci:v00004444d00000016sv00000070sd00008801* - ID_PRODUCT_FROM_DATABASE=WinTV PVR 150 - -pci:v00004444d00000016sv00000070sd0000C801* - ID_PRODUCT_FROM_DATABASE=WinTV PVR 150 - -pci:v00004444d00000016sv00000070sd0000E807* - ID_PRODUCT_FROM_DATABASE=WinTV PVR 500 (1st unit) - -pci:v00004444d00000016sv00000070sd0000E817* - ID_PRODUCT_FROM_DATABASE=WinTV PVR 500 (2nd unit) - -pci:v00004444d00000016sv00000070sd0000FF92* - ID_PRODUCT_FROM_DATABASE=WiNTV PVR-550 - -pci:v00004444d00000016sv00000270sd00000801* - ID_PRODUCT_FROM_DATABASE=WinTV PVR 150 - -pci:v00004444d00000016sv0000104Dsd0000013D* - ID_PRODUCT_FROM_DATABASE=ENX-26 TV Encoder - -pci:v00004444d00000016sv000010FCsd0000D038* - ID_PRODUCT_FROM_DATABASE=GV-MVP/RX2W (1st unit) - -pci:v00004444d00000016sv000010FCsd0000D039* - ID_PRODUCT_FROM_DATABASE=GV-MVP/RX2W (2nd unit) - -pci:v00004444d00000016sv000012ABsd0000FFF3* - ID_PRODUCT_FROM_DATABASE=MPG600 - -pci:v00004444d00000016sv000012ABsd0000FFFF* - ID_PRODUCT_FROM_DATABASE=MPG600 - -pci:v00004444d00000016sv00001461sd0000C00A* - ID_PRODUCT_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK3 tuner) - -pci:v00004444d00000016sv00001461sd0000C00B* - ID_PRODUCT_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK3 tuner) - -pci:v00004444d00000016sv00001461sd0000C00C* - ID_PRODUCT_FROM_DATABASE=M113 PCI Analog TV (NTSC, JAPAN version, Philips FI1286MK2 tuner) - -pci:v00004444d00000016sv00001461sd0000C010* - ID_PRODUCT_FROM_DATABASE=M113 PCI Analog TV (NTSC, Philips FI1236MK3 tuner) - -pci:v00004444d00000016sv00001461sd0000C011* - ID_PRODUCT_FROM_DATABASE=M113 PCI Analog TV (NTSC+FM, Philips FM1236MK3 tuner) - -pci:v00004444d00000016sv00001461sd0000C018* - ID_PRODUCT_FROM_DATABASE=M113 PCI Analog TV (NTSC, Philips FQ1236MK5 tuner) - -pci:v00004444d00000016sv00001461sd0000C019* - ID_PRODUCT_FROM_DATABASE=UltraTV 1500 MCE, a.k.a. M113 PCI Analog TV (NTSC+FM, Philips FQ1236MK5 tuner) - -pci:v00004444d00000016sv00001461sd0000C01A* - ID_PRODUCT_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM, Philips FQ1216MK5 tuner) - -pci:v00004444d00000016sv00001461sd0000C01B* - ID_PRODUCT_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM+FM, Philips FM1216MK5 tuner) - -pci:v00004444d00000016sv00001461sd0000C030* - ID_PRODUCT_FROM_DATABASE=M113 PCI Analog TV (NTSC-J, Partsnic tuner) - -pci:v00004444d00000016sv00001461sd0000C031* - ID_PRODUCT_FROM_DATABASE=M113 PCI Analog TV (NTSC-J+FM, Partsnic tuner) - -pci:v00004444d00000016sv00001461sd0000C032* - ID_PRODUCT_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM, Partsnic tuner) - -pci:v00004444d00000016sv00001461sd0000C033* - ID_PRODUCT_FROM_DATABASE=M113 PCI Analog TV (PAL/SECAM+FM, Partsnic tuner) - -pci:v00004444d00000016sv00001461sd0000C034* - ID_PRODUCT_FROM_DATABASE=M113 PCI Analog TV (NTSC, Partsnic tuner) - -pci:v00004444d00000016sv00001461sd0000C035* - ID_PRODUCT_FROM_DATABASE=M113 PCI Analog TV (NTSC+FM, Partsnic tuner) - -pci:v00004444d00000016sv00001461sd0000C03F* - ID_PRODUCT_FROM_DATABASE=C115 PCI video capture card (no tuner) - -pci:v00004444d00000016sv00001461sd0000C136* - ID_PRODUCT_FROM_DATABASE=M104 mini-PCI Analog TV - -pci:v00004444d00000016sv00001461sd0000C20A* - ID_PRODUCT_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK3 tuner) - -pci:v00004444d00000016sv00001461sd0000C218* - ID_PRODUCT_FROM_DATABASE=M755 AVerTV Video Capture (NTSC, Philips FQ1236MK5 tuner) - -pci:v00004444d00000016sv00001461sd0000C219* - ID_PRODUCT_FROM_DATABASE=M755 AVerTV Video Capture (NTSC+FM, Philips FQ1236MK5 tuner) - -pci:v00004444d00000016sv00001461sd0000C21A* - ID_PRODUCT_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM, Philips FQ1216MK5 tuner) - -pci:v00004444d00000016sv00001461sd0000C21B* - ID_PRODUCT_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM+FM, Philips FM1216MK5 tuner) - -pci:v00004444d00000016sv00001461sd0000C230* - ID_PRODUCT_FROM_DATABASE=M755 AVerTV Video Capture (NTSC-J, Partsnic tuner) - -pci:v00004444d00000016sv00001461sd0000C231* - ID_PRODUCT_FROM_DATABASE=M755 AVerTV Video Capture (NTSC-J+FM, Partsnic tuner) - -pci:v00004444d00000016sv00001461sd0000C232* - ID_PRODUCT_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM, Partsnic tuner) - -pci:v00004444d00000016sv00001461sd0000C233* - ID_PRODUCT_FROM_DATABASE=M755 AVerTV Video Capture (PAL/SECAM+FM, Partsnic tuner) - -pci:v00004444d00000016sv00001461sd0000C234* - ID_PRODUCT_FROM_DATABASE=M755 AVerTV Video Capture (NTSC, Partsnic tuner) - -pci:v00004444d00000016sv00001461sd0000C235* - ID_PRODUCT_FROM_DATABASE=M755 AVerTV Video Capture (NTSC+FM, Partsnic tuner) - -pci:v00004444d00000016sv00001461sd0000C337* - ID_PRODUCT_FROM_DATABASE=E106 AVerMedia AVerTV Video Capture - -pci:v00004444d00000016sv00001461sd0000C439* - ID_PRODUCT_FROM_DATABASE=M116 AVerMedia AVerTV MCE 116 Plus (NTSC/PAL/SECAM+FM+REMOTE, Xceive 2028 tuner) - -pci:v00004444d00000016sv00001461sd0000C5FF* - ID_PRODUCT_FROM_DATABASE=C755 AVerTV Video Capture card (no tuner) - -pci:v00004444d00000016sv00001461sd0000C6FF* - ID_PRODUCT_FROM_DATABASE=C115 PCI video capture card (no tuner) - -pci:v00004444d00000016sv00001461sd0000C739* - ID_PRODUCT_FROM_DATABASE=M785 AVerMedia PCI Analog TV (NTSC/PAL/SECAM+FM, Xceive 2028 tuner) - -pci:v00004444d00000016sv00009005sd00000092* - ID_PRODUCT_FROM_DATABASE=VideOh! AVC-2010 - -pci:v00004444d00000016sv00009005sd00000093* - ID_PRODUCT_FROM_DATABASE=VideOh! AVC-2410 - -pci:v00004444d00000803* - ID_PRODUCT_FROM_DATABASE=iTVC15 (CX23415) Video Decoder - -pci:v00004444d00000803sv00000070sd00004000* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-350 - -pci:v00004444d00000803sv00000070sd00004001* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-250 - -pci:v00004444d00000803sv00000070sd00004800* - ID_PRODUCT_FROM_DATABASE=WinTV PVR-350 (V1) - -pci:v00004444d00000803sv000012ABsd00000000* - ID_PRODUCT_FROM_DATABASE=MPG160 - -pci:v00004444d00000803sv00001461sd0000A3CE* - ID_PRODUCT_FROM_DATABASE=M179 - -pci:v00004444d00000803sv00001461sd0000A3CF* - ID_PRODUCT_FROM_DATABASE=M179 - -pci:v00004468* - ID_VENDOR_FROM_DATABASE=Bridgeport machines - -pci:v00004594* - ID_VENDOR_FROM_DATABASE=Cogetec Informatique Inc - -pci:v000045FB* - ID_VENDOR_FROM_DATABASE=Baldor Electric Company - -pci:v00004624* - ID_VENDOR_FROM_DATABASE=Budker Institute of Nuclear Physics - -pci:v00004624d0000ADC1* - ID_PRODUCT_FROM_DATABASE=ADC200ME High speed ADC - -pci:v00004624d0000DE01* - ID_PRODUCT_FROM_DATABASE=DL200ME High resolution delay line PCI based card - -pci:v00004624d0000DE02* - ID_PRODUCT_FROM_DATABASE=DL200ME Middle resolution delay line PCI based card - -pci:v00004680* - ID_VENDOR_FROM_DATABASE=Umax Computer Corp - -pci:v00004843* - ID_VENDOR_FROM_DATABASE=Hercules Computer Technology Inc - -pci:v00004916* - ID_VENDOR_FROM_DATABASE=RedCreek Communications Inc - -pci:v00004916d00001960* - ID_PRODUCT_FROM_DATABASE=RedCreek PCI adapter - -pci:v00004943* - ID_VENDOR_FROM_DATABASE=Growth Networks - -pci:v0000494F* - ID_VENDOR_FROM_DATABASE=ACCES I/O Products, Inc. - -pci:v0000494Fd00000520* - ID_PRODUCT_FROM_DATABASE=PCI-IDO-48 - -pci:v0000494Fd00000920* - ID_PRODUCT_FROM_DATABASE=PCI-IDI-48 - -pci:v0000494Fd00000C50* - ID_PRODUCT_FROM_DATABASE=PCI-DIO-24H - -pci:v0000494Fd00000C51* - ID_PRODUCT_FROM_DATABASE=PCI-DIO-24D - -pci:v0000494Fd00000C60* - ID_PRODUCT_FROM_DATABASE=PCI-DIO-48(H) - -pci:v0000494Fd00000C68* - ID_PRODUCT_FROM_DATABASE=PCI-DIO-72 - -pci:v0000494Fd00000C70* - ID_PRODUCT_FROM_DATABASE=PCI-DIO-96 - -pci:v0000494Fd00000C78* - ID_PRODUCT_FROM_DATABASE=PCI-DIO-120 - -pci:v0000494Fd00000DC8* - ID_PRODUCT_FROM_DATABASE=PCI-IDIO-16 - -pci:v0000494Fd00000E50* - ID_PRODUCT_FROM_DATABASE=PCI-DIO-24S - -pci:v0000494Fd00000E51* - ID_PRODUCT_FROM_DATABASE=PCI-DIO-24H(C) - -pci:v0000494Fd00000E52* - ID_PRODUCT_FROM_DATABASE=PCI-DIO-24D(C) - -pci:v0000494Fd00000E60* - ID_PRODUCT_FROM_DATABASE=PCI-DIO-48S(H) - -pci:v0000494Fd00000E61* - ID_PRODUCT_FROM_DATABASE=P104-DIO-24S - -pci:v0000494Fd00000F00* - ID_PRODUCT_FROM_DATABASE=PCI-IIRO-8 - -pci:v0000494Fd00000F01* - ID_PRODUCT_FROM_DATABASE=LPCI-IIRO-8 - -pci:v0000494Fd00000F08* - ID_PRODUCT_FROM_DATABASE=PCI-IIRO-16 - -pci:v0000494Fd00001050* - ID_PRODUCT_FROM_DATABASE=PCI-422/485-2 - -pci:v0000494Fd00001058* - ID_PRODUCT_FROM_DATABASE=PCI-COM422/4 - -pci:v0000494Fd00001059* - ID_PRODUCT_FROM_DATABASE=PCI-COM485/4 - -pci:v0000494Fd00001068* - ID_PRODUCT_FROM_DATABASE=PCI-COM422/8 - -pci:v0000494Fd00001069* - ID_PRODUCT_FROM_DATABASE=PCI-COM485/8 - -pci:v0000494Fd00001088* - ID_PRODUCT_FROM_DATABASE=PCI-COM232/1 - -pci:v0000494Fd00001090* - ID_PRODUCT_FROM_DATABASE=PCI-COM232/2 - -pci:v0000494Fd000010A8* - ID_PRODUCT_FROM_DATABASE=P104-COM232-8 - -pci:v0000494Fd000010C9* - ID_PRODUCT_FROM_DATABASE=PCI-COM-1S - -pci:v0000494Fd000010D0* - ID_PRODUCT_FROM_DATABASE=PCI-COM2S - -pci:v0000494Fd000010E8* - ID_PRODUCT_FROM_DATABASE=PCI-COM-8SM - -pci:v0000494Fd00001148* - ID_PRODUCT_FROM_DATABASE=PCI-ICM-1S - -pci:v0000494Fd00001150* - ID_PRODUCT_FROM_DATABASE=PCI-ICM-2S - -pci:v0000494Fd00001158* - ID_PRODUCT_FROM_DATABASE=PCI-ICM422/4 - -pci:v0000494Fd00001159* - ID_PRODUCT_FROM_DATABASE=PCI-ICM485/4 - -pci:v0000494Fd00001250* - ID_PRODUCT_FROM_DATABASE=PCI-WDG-2S - -pci:v0000494Fd000012D0* - ID_PRODUCT_FROM_DATABASE=PCI-WDG-IMPAC - -pci:v0000494Fd000022C0* - ID_PRODUCT_FROM_DATABASE=PCI-WDG-CSM - -pci:v0000494Fd00002C50* - ID_PRODUCT_FROM_DATABASE=PCI-DIO-96CT - -pci:v0000494Fd00002C58* - ID_PRODUCT_FROM_DATABASE=PCI-DIO-96C3 - -pci:v0000494Fd00005ED0* - ID_PRODUCT_FROM_DATABASE=PCI-DAC - -pci:v0000494Fd00006C90* - ID_PRODUCT_FROM_DATABASE=PCI-DA12-2 - -pci:v0000494Fd00006C98* - ID_PRODUCT_FROM_DATABASE=PCI-DA12-4 - -pci:v0000494Fd00006CA0* - ID_PRODUCT_FROM_DATABASE=PCI-DA12-6 - -pci:v0000494Fd00006CA8* - ID_PRODUCT_FROM_DATABASE=PCI-DA12-8 - -pci:v0000494Fd00006CA9* - ID_PRODUCT_FROM_DATABASE=PCI-DA12-8V - -pci:v0000494Fd00006CB0* - ID_PRODUCT_FROM_DATABASE=PCI-DA12-16 - -pci:v0000494Fd00006CB1* - ID_PRODUCT_FROM_DATABASE=PCI-DA12-16V - -pci:v0000494Fd00008EF0* - ID_PRODUCT_FROM_DATABASE=P104-FAS16-16 - -pci:v0000494Fd0000ACA8* - ID_PRODUCT_FROM_DATABASE=PCI-AI12-16 - -pci:v0000494Fd0000ACA9* - ID_PRODUCT_FROM_DATABASE=PCI-AI12-16A - -pci:v0000494Fd0000ECA8* - ID_PRODUCT_FROM_DATABASE=PCI-AIO12-16 - -pci:v0000494Fd0000ECA9* - ID_PRODUCT_FROM_DATABASE=PCI-A12-16 - -pci:v0000494Fd0000ECAA* - ID_PRODUCT_FROM_DATABASE=PCI-A12-16A - -pci:v0000494Fd0000ECE8* - ID_PRODUCT_FROM_DATABASE=PCI-A16-16 - -pci:v00004978* - ID_VENDOR_FROM_DATABASE=Axil Computer Inc - -pci:v00004A14* - ID_VENDOR_FROM_DATABASE=NetVin - -pci:v00004A14d00005000* - ID_PRODUCT_FROM_DATABASE=NV5000SC - -pci:v00004A14d00005000sv00004A14sd00005000* - ID_PRODUCT_FROM_DATABASE=RT8029-Based Ethernet Adapter - -pci:v00004B10* - ID_VENDOR_FROM_DATABASE=Buslogic Inc. - -pci:v00004C48* - ID_VENDOR_FROM_DATABASE=LUNG HWA Electronics - -pci:v00004C53* - ID_VENDOR_FROM_DATABASE=SBS Technologies - -pci:v00004C53d00000000* - ID_PRODUCT_FROM_DATABASE=PLUSTEST device - -pci:v00004C53d00000000sv00004C53sd00003000* - ID_PRODUCT_FROM_DATABASE=PLUSTEST card (PC104+) - -pci:v00004C53d00000000sv00004C53sd00003001* - ID_PRODUCT_FROM_DATABASE=PLUSTEST card (PMC) - -pci:v00004C53d00000001* - ID_PRODUCT_FROM_DATABASE=PLUSTEST-MM device - -pci:v00004C53d00000001sv00004C53sd00003002* - ID_PRODUCT_FROM_DATABASE=PLUSTEST-MM card (PMC) - -pci:v00004CA1* - ID_VENDOR_FROM_DATABASE=Seanix Technology Inc - -pci:v00004D51* - ID_VENDOR_FROM_DATABASE=MediaQ Inc. - -pci:v00004D51d00000200* - ID_PRODUCT_FROM_DATABASE=MQ-200 - -pci:v00004D54* - ID_VENDOR_FROM_DATABASE=Microtechnica Co Ltd - -pci:v00004D56* - ID_VENDOR_FROM_DATABASE=MATRIX VISION GmbH - -pci:v00004D56d00000000* - ID_PRODUCT_FROM_DATABASE=[mvHYPERION-CLe/CLb] CameraLink PCI Express x1 Frame Grabber - -pci:v00004D56d00000001* - ID_PRODUCT_FROM_DATABASE=[mvHYPERION-CLf/CLm] CameraLink PCI Express x4 Frame Grabber - -pci:v00004D56d00000010* - ID_PRODUCT_FROM_DATABASE=[mvHYPERION-16R16/-32R16] 16 Video Channel PCI Express x4 Frame Grabber - -pci:v00004D56d00000020* - ID_PRODUCT_FROM_DATABASE=[mvHYPERION-HD-SDI] HD-SDI PCI Express x4 Frame Grabber - -pci:v00004D56d00000030* - ID_PRODUCT_FROM_DATABASE=[mvHYPERION-HD-SDI-Merger] HD-SDI PCI Express x4 Frame Grabber - -pci:v00004DDC* - ID_VENDOR_FROM_DATABASE=ILC Data Device Corp - -pci:v00004DDCd00000100* - ID_PRODUCT_FROM_DATABASE=DD-42924I5-300 (ARINC 429 Data Bus) - -pci:v00004DDCd00000801* - ID_PRODUCT_FROM_DATABASE=BU-65570I1 MIL-STD-1553 Test and Simulation - -pci:v00004DDCd00000802* - ID_PRODUCT_FROM_DATABASE=BU-65570I2 MIL-STD-1553 Test and Simulation - -pci:v00004DDCd00000811* - ID_PRODUCT_FROM_DATABASE=BU-65572I1 MIL-STD-1553 Test and Simulation - -pci:v00004DDCd00000812* - ID_PRODUCT_FROM_DATABASE=BU-65572I2 MIL-STD-1553 Test and Simulation - -pci:v00004DDCd00000881* - ID_PRODUCT_FROM_DATABASE=BU-65570T1 MIL-STD-1553 Test and Simulation - -pci:v00004DDCd00000882* - ID_PRODUCT_FROM_DATABASE=BU-65570T2 MIL-STD-1553 Test and Simulation - -pci:v00004DDCd00000891* - ID_PRODUCT_FROM_DATABASE=BU-65572T1 MIL-STD-1553 Test and Simulation - -pci:v00004DDCd00000892* - ID_PRODUCT_FROM_DATABASE=BU-65572T2 MIL-STD-1553 Test and Simulation - -pci:v00004DDCd00000901* - ID_PRODUCT_FROM_DATABASE=BU-65565C1 MIL-STD-1553 Data Bus - -pci:v00004DDCd00000902* - ID_PRODUCT_FROM_DATABASE=BU-65565C2 MIL-STD-1553 Data Bus - -pci:v00004DDCd00000903* - ID_PRODUCT_FROM_DATABASE=BU-65565C3 MIL-STD-1553 Data Bus - -pci:v00004DDCd00000904* - ID_PRODUCT_FROM_DATABASE=BU-65565C4 MIL-STD-1553 Data Bus - -pci:v00004DDCd00000B01* - ID_PRODUCT_FROM_DATABASE=BU-65569I1 MIL-STD-1553 Data Bus - -pci:v00004DDCd00000B02* - ID_PRODUCT_FROM_DATABASE=BU-65569I2 MIL-STD-1553 Data Bus - -pci:v00004DDCd00000B03* - ID_PRODUCT_FROM_DATABASE=BU-65569I3 MIL-STD-1553 Data Bus - -pci:v00004DDCd00000B04* - ID_PRODUCT_FROM_DATABASE=BU-65569I4 MIL-STD-1553 Data Bus - -pci:v00005045* - ID_VENDOR_FROM_DATABASE=University of Toronto - -pci:v00005045d00004243* - ID_PRODUCT_FROM_DATABASE=BLASTbus PCI Interface Card v1 - -pci:v00005046* - ID_VENDOR_FROM_DATABASE=GemTek Technology Corporation - -pci:v00005046d00001001* - ID_PRODUCT_FROM_DATABASE=PCI Radio - -pci:v00005053* - ID_VENDOR_FROM_DATABASE=Voyetra Technologies - -pci:v00005053d00002010* - ID_PRODUCT_FROM_DATABASE=Daytona Audio Adapter - -pci:v000050B2* - ID_VENDOR_FROM_DATABASE=TerraTec Electronic GmbH - -pci:v000050B2d00001111* - ID_PRODUCT_FROM_DATABASE=Terratec XLerate - -pci:v00005136* - ID_VENDOR_FROM_DATABASE=S S Technologies - -pci:v00005143* - ID_VENDOR_FROM_DATABASE=Qualcomm Inc - -pci:v00005145* - ID_VENDOR_FROM_DATABASE=Ensoniq (Old) - -pci:v00005145d00003031* - ID_PRODUCT_FROM_DATABASE=Concert AudioPCI - -pci:v00005168* - ID_VENDOR_FROM_DATABASE=Animation Technologies Inc. - -pci:v00005168d00000300* - ID_PRODUCT_FROM_DATABASE=FlyDVB-S - -pci:v00005168d00000301* - ID_PRODUCT_FROM_DATABASE=FlyDVB-T - -pci:v00005301* - ID_VENDOR_FROM_DATABASE=Alliance Semiconductor Corp. - -pci:v00005301d00000001* - ID_PRODUCT_FROM_DATABASE=ProMotion aT3D - -pci:v00005333* - ID_VENDOR_FROM_DATABASE=S3 Inc. - -pci:v00005333d00000551* - ID_PRODUCT_FROM_DATABASE=Plato/PX (system) - -pci:v00005333d00005631* - ID_PRODUCT_FROM_DATABASE=86c325 [ViRGE] - -pci:v00005333d00008800* - ID_PRODUCT_FROM_DATABASE=86c866 [Vision 866] - -pci:v00005333d00008801* - ID_PRODUCT_FROM_DATABASE=86c964 [Vision 964] - -pci:v00005333d00008810* - ID_PRODUCT_FROM_DATABASE=86c764_0 [Trio 32 vers 0] - -pci:v00005333d00008811* - ID_PRODUCT_FROM_DATABASE=86c764/765 [Trio32/64/64V+] - -pci:v00005333d00008812* - ID_PRODUCT_FROM_DATABASE=86cM65 [Aurora64V+] - -pci:v00005333d00008813* - ID_PRODUCT_FROM_DATABASE=86c764_3 [Trio 32/64 vers 3] - -pci:v00005333d00008814* - ID_PRODUCT_FROM_DATABASE=86c767 [Trio 64UV+] - -pci:v00005333d00008815* - ID_PRODUCT_FROM_DATABASE=86cM65 [Aurora 128] - -pci:v00005333d0000883D* - ID_PRODUCT_FROM_DATABASE=86c988 [ViRGE/VX] - -pci:v00005333d00008870* - ID_PRODUCT_FROM_DATABASE=FireGL - -pci:v00005333d00008880* - ID_PRODUCT_FROM_DATABASE=86c868 [Vision 868 VRAM] vers 0 - -pci:v00005333d00008881* - ID_PRODUCT_FROM_DATABASE=86c868 [Vision 868 VRAM] vers 1 - -pci:v00005333d00008882* - ID_PRODUCT_FROM_DATABASE=86c868 [Vision 868 VRAM] vers 2 - -pci:v00005333d00008883* - ID_PRODUCT_FROM_DATABASE=86c868 [Vision 868 VRAM] vers 3 - -pci:v00005333d000088B0* - ID_PRODUCT_FROM_DATABASE=86c928 [Vision 928 VRAM] vers 0 - -pci:v00005333d000088B1* - ID_PRODUCT_FROM_DATABASE=86c928 [Vision 928 VRAM] vers 1 - -pci:v00005333d000088B2* - ID_PRODUCT_FROM_DATABASE=86c928 [Vision 928 VRAM] vers 2 - -pci:v00005333d000088B3* - ID_PRODUCT_FROM_DATABASE=86c928 [Vision 928 VRAM] vers 3 - -pci:v00005333d000088C0* - ID_PRODUCT_FROM_DATABASE=86c864 [Vision 864 DRAM] vers 0 - -pci:v00005333d000088C1* - ID_PRODUCT_FROM_DATABASE=86c864 [Vision 864 DRAM] vers 1 - -pci:v00005333d000088C2* - ID_PRODUCT_FROM_DATABASE=86c864 [Vision 864-P DRAM] vers 2 - -pci:v00005333d000088C3* - ID_PRODUCT_FROM_DATABASE=86c864 [Vision 864-P DRAM] vers 3 - -pci:v00005333d000088D0* - ID_PRODUCT_FROM_DATABASE=86c964 [Vision 964 VRAM] vers 0 - -pci:v00005333d000088D1* - ID_PRODUCT_FROM_DATABASE=86c964 [Vision 964 VRAM] vers 1 - -pci:v00005333d000088D2* - ID_PRODUCT_FROM_DATABASE=86c964 [Vision 964-P VRAM] vers 2 - -pci:v00005333d000088D3* - ID_PRODUCT_FROM_DATABASE=86c964 [Vision 964-P VRAM] vers 3 - -pci:v00005333d000088F0* - ID_PRODUCT_FROM_DATABASE=86c968 [Vision 968 VRAM] rev 0 - -pci:v00005333d000088F1* - ID_PRODUCT_FROM_DATABASE=86c968 [Vision 968 VRAM] rev 1 - -pci:v00005333d000088F2* - ID_PRODUCT_FROM_DATABASE=86c968 [Vision 968 VRAM] rev 2 - -pci:v00005333d000088F3* - ID_PRODUCT_FROM_DATABASE=86c968 [Vision 968 VRAM] rev 3 - -pci:v00005333d00008900* - ID_PRODUCT_FROM_DATABASE=86c755 [Trio 64V2/DX] - -pci:v00005333d00008900sv00005333sd00008900* - ID_PRODUCT_FROM_DATABASE=86C775 Trio64V2/DX - -pci:v00005333d00008901* - ID_PRODUCT_FROM_DATABASE=86c775/86c785 [Trio 64V2/DX or /GX] - -pci:v00005333d00008901sv00005333sd00008901* - ID_PRODUCT_FROM_DATABASE=86C775 Trio64V2/DX, 86C785 Trio64V2/GX - -pci:v00005333d00008902* - ID_PRODUCT_FROM_DATABASE=Plato/PX - -pci:v00005333d00008903* - ID_PRODUCT_FROM_DATABASE=Trio 3D business multimedia - -pci:v00005333d00008904* - ID_PRODUCT_FROM_DATABASE=86c365, 86c366 [Trio 3D] - -pci:v00005333d00008904sv00001014sd000000DB* - ID_PRODUCT_FROM_DATABASE=Integrated Trio3D - -pci:v00005333d00008904sv00004843sd0000314A* - ID_PRODUCT_FROM_DATABASE=Terminator 128/3D GLH - -pci:v00005333d00008904sv00005333sd00008904* - ID_PRODUCT_FROM_DATABASE=86C365 Trio3D AGP - -pci:v00005333d00008905* - ID_PRODUCT_FROM_DATABASE=Trio 64V+ family - -pci:v00005333d00008906* - ID_PRODUCT_FROM_DATABASE=Trio 64V+ family - -pci:v00005333d00008907* - ID_PRODUCT_FROM_DATABASE=Trio 64V+ family - -pci:v00005333d00008908* - ID_PRODUCT_FROM_DATABASE=Trio 64V+ family - -pci:v00005333d00008909* - ID_PRODUCT_FROM_DATABASE=Trio 64V+ family - -pci:v00005333d0000890A* - ID_PRODUCT_FROM_DATABASE=Trio 64V+ family - -pci:v00005333d0000890B* - ID_PRODUCT_FROM_DATABASE=Trio 64V+ family - -pci:v00005333d0000890C* - ID_PRODUCT_FROM_DATABASE=Trio 64V+ family - -pci:v00005333d0000890D* - ID_PRODUCT_FROM_DATABASE=Trio 64V+ family - -pci:v00005333d0000890E* - ID_PRODUCT_FROM_DATABASE=Trio 64V+ family - -pci:v00005333d0000890F* - ID_PRODUCT_FROM_DATABASE=Trio 64V+ family - -pci:v00005333d00008A01* - ID_PRODUCT_FROM_DATABASE=86c375 [ViRGE/DX] or 86c385 [ViRGE/GX] - -pci:v00005333d00008A01sv00000E11sd0000B032* - ID_PRODUCT_FROM_DATABASE=ViRGE/GX - -pci:v00005333d00008A01sv000010B4sd00001617* - ID_PRODUCT_FROM_DATABASE=Nitro 3D - -pci:v00005333d00008A01sv000010B4sd00001717* - ID_PRODUCT_FROM_DATABASE=Nitro 3D - -pci:v00005333d00008A01sv00005333sd00008A01* - ID_PRODUCT_FROM_DATABASE=ViRGE/DX - -pci:v00005333d00008A10* - ID_PRODUCT_FROM_DATABASE=ViRGE/GX2 - -pci:v00005333d00008A10sv00001092sd00008A10* - ID_PRODUCT_FROM_DATABASE=Stealth 3D 4000 - -pci:v00005333d00008A13* - ID_PRODUCT_FROM_DATABASE=86c360 [Trio 3D/1X], 86c362, 86c368 [Trio 3D/2X] - -pci:v00005333d00008A13sv00005333sd00008A13* - ID_PRODUCT_FROM_DATABASE=Trio3D/2X - -pci:v00005333d00008A20* - ID_PRODUCT_FROM_DATABASE=86c794 [Savage 3D] - -pci:v00005333d00008A20sv00005333sd00008A20* - ID_PRODUCT_FROM_DATABASE=86C391 Savage3D - -pci:v00005333d00008A21* - ID_PRODUCT_FROM_DATABASE=86c390 [Savage 3D/MV] - -pci:v00005333d00008A21sv00005333sd00008A21* - ID_PRODUCT_FROM_DATABASE=86C390 Savage3D/MV - -pci:v00005333d00008A22* - ID_PRODUCT_FROM_DATABASE=Savage 4 - -pci:v00005333d00008A22sv00001033sd00008068* - ID_PRODUCT_FROM_DATABASE=Savage 4 - -pci:v00005333d00008A22sv00001033sd00008069* - ID_PRODUCT_FROM_DATABASE=Savage 4 - -pci:v00005333d00008A22sv00001033sd00008110* - ID_PRODUCT_FROM_DATABASE=Savage 4 LT - -pci:v00005333d00008A22sv0000105Dsd00000018* - ID_PRODUCT_FROM_DATABASE=SR9 8Mb SDRAM - -pci:v00005333d00008A22sv0000105Dsd0000002A* - ID_PRODUCT_FROM_DATABASE=SR9 Pro 16Mb SDRAM - -pci:v00005333d00008A22sv0000105Dsd0000003A* - ID_PRODUCT_FROM_DATABASE=SR9 Pro 32Mb SDRAM - -pci:v00005333d00008A22sv0000105Dsd0000092F* - ID_PRODUCT_FROM_DATABASE=SR9 Pro+ 16Mb SGRAM - -pci:v00005333d00008A22sv00001092sd00004207* - ID_PRODUCT_FROM_DATABASE=Stealth III S540 - -pci:v00005333d00008A22sv00001092sd00004800* - ID_PRODUCT_FROM_DATABASE=Stealth III S540 - -pci:v00005333d00008A22sv00001092sd00004807* - ID_PRODUCT_FROM_DATABASE=SpeedStar A90 - -pci:v00005333d00008A22sv00001092sd00004808* - ID_PRODUCT_FROM_DATABASE=Stealth III S540 - -pci:v00005333d00008A22sv00001092sd00004809* - ID_PRODUCT_FROM_DATABASE=Stealth III S540 - -pci:v00005333d00008A22sv00001092sd0000480E* - ID_PRODUCT_FROM_DATABASE=Stealth III S540 - -pci:v00005333d00008A22sv00001092sd00004904* - ID_PRODUCT_FROM_DATABASE=Stealth III S520 - -pci:v00005333d00008A22sv00001092sd00004905* - ID_PRODUCT_FROM_DATABASE=SpeedStar A200 - -pci:v00005333d00008A22sv00001092sd00004A09* - ID_PRODUCT_FROM_DATABASE=Stealth III S540 - -pci:v00005333d00008A22sv00001092sd00004A0B* - ID_PRODUCT_FROM_DATABASE=Stealth III S540 Xtreme - -pci:v00005333d00008A22sv00001092sd00004A0F* - ID_PRODUCT_FROM_DATABASE=Stealth III S540 - -pci:v00005333d00008A22sv00001092sd00004E01* - ID_PRODUCT_FROM_DATABASE=Stealth III S540 - -pci:v00005333d00008A22sv00001102sd0000101D* - ID_PRODUCT_FROM_DATABASE=3d Blaster Savage 4 - -pci:v00005333d00008A22sv00001102sd0000101E* - ID_PRODUCT_FROM_DATABASE=3d Blaster Savage 4 - -pci:v00005333d00008A22sv00005333sd00008100* - ID_PRODUCT_FROM_DATABASE=86C394-397 Savage4 SDRAM 100 - -pci:v00005333d00008A22sv00005333sd00008110* - ID_PRODUCT_FROM_DATABASE=86C394-397 Savage4 SDRAM 110 - -pci:v00005333d00008A22sv00005333sd00008125* - ID_PRODUCT_FROM_DATABASE=86C394-397 Savage4 SDRAM 125 - -pci:v00005333d00008A22sv00005333sd00008143* - ID_PRODUCT_FROM_DATABASE=86C394-397 Savage4 SDRAM 143 - -pci:v00005333d00008A22sv00005333sd00008A22* - ID_PRODUCT_FROM_DATABASE=86C394-397 Savage4 - -pci:v00005333d00008A22sv00005333sd00008A2E* - ID_PRODUCT_FROM_DATABASE=86C394-397 Savage4 32bit - -pci:v00005333d00008A22sv00005333sd00009125* - ID_PRODUCT_FROM_DATABASE=86C394-397 Savage4 SGRAM 125 - -pci:v00005333d00008A22sv00005333sd00009143* - ID_PRODUCT_FROM_DATABASE=86C394-397 Savage4 SGRAM 143 - -pci:v00005333d00008A23* - ID_PRODUCT_FROM_DATABASE=Savage 4 - -pci:v00005333d00008A25* - ID_PRODUCT_FROM_DATABASE=ProSavage PM133 - -pci:v00005333d00008A25sv00000303sd00000303* - ID_PRODUCT_FROM_DATABASE=D9840-60001 [Brio BA410 Motherboard] - -pci:v00005333d00008A26* - ID_PRODUCT_FROM_DATABASE=ProSavage KM133 - -pci:v00005333d00008C00* - ID_PRODUCT_FROM_DATABASE=ViRGE/M3 - -pci:v00005333d00008C01* - ID_PRODUCT_FROM_DATABASE=ViRGE/MX - -pci:v00005333d00008C01sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=ViRGE/MX - -pci:v00005333d00008C02* - ID_PRODUCT_FROM_DATABASE=ViRGE/MX+ - -pci:v00005333d00008C03* - ID_PRODUCT_FROM_DATABASE=ViRGE/MX+MV - -pci:v00005333d00008C10* - ID_PRODUCT_FROM_DATABASE=86C270-294 Savage/MX-MV - -pci:v00005333d00008C11* - ID_PRODUCT_FROM_DATABASE=82C270-294 Savage/MX - -pci:v00005333d00008C12* - ID_PRODUCT_FROM_DATABASE=86C270-294 Savage/IX-MV - -pci:v00005333d00008C12sv00001014sd0000017F* - ID_PRODUCT_FROM_DATABASE=ThinkPad T20/T22 - -pci:v00005333d00008C12sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=86C584 SuperSavage/IXC Toshiba - -pci:v00005333d00008C13* - ID_PRODUCT_FROM_DATABASE=86C270-294 Savage/IX - -pci:v00005333d00008C13sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Magnia Z310 - -pci:v00005333d00008C22* - ID_PRODUCT_FROM_DATABASE=SuperSavage MX/128 - -pci:v00005333d00008C24* - ID_PRODUCT_FROM_DATABASE=SuperSavage MX/64 - -pci:v00005333d00008C26* - ID_PRODUCT_FROM_DATABASE=SuperSavage MX/64C - -pci:v00005333d00008C2A* - ID_PRODUCT_FROM_DATABASE=SuperSavage IX/128 SDR - -pci:v00005333d00008C2B* - ID_PRODUCT_FROM_DATABASE=SuperSavage IX/128 DDR - -pci:v00005333d00008C2C* - ID_PRODUCT_FROM_DATABASE=SuperSavage IX/64 SDR - -pci:v00005333d00008C2D* - ID_PRODUCT_FROM_DATABASE=SuperSavage IX/64 DDR - -pci:v00005333d00008C2E* - ID_PRODUCT_FROM_DATABASE=SuperSavage IX/C SDR - -pci:v00005333d00008C2Esv00001014sd000001FC* - ID_PRODUCT_FROM_DATABASE=ThinkPad T23 - -pci:v00005333d00008C2F* - ID_PRODUCT_FROM_DATABASE=SuperSavage IX/C DDR - -pci:v00005333d00008D01* - ID_PRODUCT_FROM_DATABASE=86C380 [ProSavageDDR K4M266] - -pci:v00005333d00008D02* - ID_PRODUCT_FROM_DATABASE=VT8636A [ProSavage KN133] AGP4X VGA Controller (TwisterK) - -pci:v00005333d00008D03* - ID_PRODUCT_FROM_DATABASE=VT8751 [ProSavageDDR P4M266] - -pci:v00005333d00008D04* - ID_PRODUCT_FROM_DATABASE=VT8375 [ProSavage8 KM266/KL266] - -pci:v00005333d00008E40* - ID_PRODUCT_FROM_DATABASE=2300E Graphics Processor - -pci:v00005333d00008E48* - ID_PRODUCT_FROM_DATABASE=Chrome S27 PCIE - -pci:v00005333d00008E48sv00005333sd00000130* - ID_PRODUCT_FROM_DATABASE=Chrome S27 256M DDR2 - -pci:v00005333d00009102* - ID_PRODUCT_FROM_DATABASE=86C410 Savage 2000 - -pci:v00005333d00009102sv00001092sd00005932* - ID_PRODUCT_FROM_DATABASE=Viper II Z200 - -pci:v00005333d00009102sv00001092sd00005934* - ID_PRODUCT_FROM_DATABASE=Viper II Z200 - -pci:v00005333d00009102sv00001092sd00005952* - ID_PRODUCT_FROM_DATABASE=Viper II Z200 - -pci:v00005333d00009102sv00001092sd00005954* - ID_PRODUCT_FROM_DATABASE=Viper II Z200 - -pci:v00005333d00009102sv00001092sd00005A35* - ID_PRODUCT_FROM_DATABASE=Viper II Z200 - -pci:v00005333d00009102sv00001092sd00005A37* - ID_PRODUCT_FROM_DATABASE=Viper II Z200 - -pci:v00005333d00009102sv00001092sd00005A55* - ID_PRODUCT_FROM_DATABASE=Viper II Z200 - -pci:v00005333d00009102sv00001092sd00005A57* - ID_PRODUCT_FROM_DATABASE=Viper II Z200 - -pci:v00005333d0000CA00* - ID_PRODUCT_FROM_DATABASE=SonicVibes - -pci:v00005431* - ID_VENDOR_FROM_DATABASE=AuzenTech, Inc. - -pci:v0000544C* - ID_VENDOR_FROM_DATABASE=Teralogic Inc - -pci:v0000544Cd00000350* - ID_PRODUCT_FROM_DATABASE=TL880-based HDTV/ATSC tuner - -pci:v00005452* - ID_VENDOR_FROM_DATABASE=SCANLAB AG - -pci:v00005452d00003443* - ID_PRODUCT_FROM_DATABASE=RTC4 - -pci:v00005455* - ID_VENDOR_FROM_DATABASE=Technische University Berlin - -pci:v00005455d00004458* - ID_PRODUCT_FROM_DATABASE=S5933 - -pci:v00005456* - ID_VENDOR_FROM_DATABASE=GoTView - -pci:v00005519* - ID_VENDOR_FROM_DATABASE=Cnet Technologies, Inc. - -pci:v00005544* - ID_VENDOR_FROM_DATABASE=Dunord Technologies - -pci:v00005544d00000001* - ID_PRODUCT_FROM_DATABASE=I-30xx Scanner Interface - -pci:v00005555* - ID_VENDOR_FROM_DATABASE=Genroco, Inc - -pci:v00005555d00000003* - ID_PRODUCT_FROM_DATABASE=TURBOstor HFP-832 [HiPPI NIC] - -pci:v00005646* - ID_VENDOR_FROM_DATABASE=Vector Fabrics BV - -pci:v00005654* - ID_VENDOR_FROM_DATABASE=VoiceTronix Pty Ltd - -pci:v00005700* - ID_VENDOR_FROM_DATABASE=Netpower - -pci:v0000584D* - ID_VENDOR_FROM_DATABASE=AuzenTech Co., Ltd. - -pci:v00005851* - ID_VENDOR_FROM_DATABASE=Exacq Technologies - -pci:v00005853* - ID_VENDOR_FROM_DATABASE=XenSource, Inc. - -pci:v00005853d00000001* - ID_PRODUCT_FROM_DATABASE=Xen Platform Device - -pci:v00005853d0000C110* - ID_PRODUCT_FROM_DATABASE=Virtualized HID - -pci:v00005853d0000C147* - ID_PRODUCT_FROM_DATABASE=Virtualized Graphics Device - -pci:v00005854* - ID_VENDOR_FROM_DATABASE=GoTView - -pci:v00005ACE* - ID_VENDOR_FROM_DATABASE=Beholder International Ltd. - -pci:v0000631C* - ID_VENDOR_FROM_DATABASE=SmartInfra Ltd - -pci:v0000631Cd00001652* - ID_PRODUCT_FROM_DATABASE=PXI-1652 Signal Generator - -pci:v0000631Cd00002504* - ID_PRODUCT_FROM_DATABASE=PXI-2504 Signal Interrogator - -pci:v00006356* - ID_VENDOR_FROM_DATABASE=UltraStor - -pci:v00006374* - ID_VENDOR_FROM_DATABASE=c't Magazin fuer Computertechnik - -pci:v00006374d00006773* - ID_PRODUCT_FROM_DATABASE=GPPCI - -pci:v00006409* - ID_VENDOR_FROM_DATABASE=Logitec Corp. - -pci:v00006549* - ID_VENDOR_FROM_DATABASE=Teradici Corp. - -pci:v00006549d00001200* - ID_PRODUCT_FROM_DATABASE=TERA1200 PC-over-IP Host - -pci:v00006666* - ID_VENDOR_FROM_DATABASE=Decision Computer International Co. - -pci:v00006666d00000001* - ID_PRODUCT_FROM_DATABASE=PCCOM4 - -pci:v00006666d00000002* - ID_PRODUCT_FROM_DATABASE=PCCOM8 - -pci:v00006666d00000004* - ID_PRODUCT_FROM_DATABASE=PCCOM2 - -pci:v00006666d00000101* - ID_PRODUCT_FROM_DATABASE=PCI 8255/8254 I/O Card - -pci:v00006666d00000200* - ID_PRODUCT_FROM_DATABASE=12-bit AD/DA Card - -pci:v00006666d00000201* - ID_PRODUCT_FROM_DATABASE=14-bit AD/DA Card - -pci:v00006666d00001011* - ID_PRODUCT_FROM_DATABASE=Industrial Card - -pci:v00006666d00001021* - ID_PRODUCT_FROM_DATABASE=8 photo couple 8 relay Card - -pci:v00006666d00001022* - ID_PRODUCT_FROM_DATABASE=4 photo couple 4 relay Card - -pci:v00006666d00001025* - ID_PRODUCT_FROM_DATABASE=16 photo couple 16 relay Card - -pci:v00006666d00004000* - ID_PRODUCT_FROM_DATABASE=WatchDog Card - -pci:v00006900* - ID_VENDOR_FROM_DATABASE=Red Hat, Inc. - -pci:v00007063* - ID_VENDOR_FROM_DATABASE=pcHDTV - -pci:v00007063d00002000* - ID_PRODUCT_FROM_DATABASE=HD-2000 - -pci:v00007063d00003000* - ID_PRODUCT_FROM_DATABASE=HD-3000 - -pci:v00007063d00005500* - ID_PRODUCT_FROM_DATABASE=HD5500 HDTV - -pci:v00007284* - ID_VENDOR_FROM_DATABASE=HT OMEGA Inc. - -pci:v00007604* - ID_VENDOR_FROM_DATABASE=O.N. Electronic Co Ltd. - -pci:v00007BDE* - ID_VENDOR_FROM_DATABASE=MIDAC Corporation - -pci:v00007FED* - ID_VENDOR_FROM_DATABASE=PowerTV - -pci:v00008008* - ID_VENDOR_FROM_DATABASE=Quancom Electronic GmbH - -pci:v00008008d00000010* - ID_PRODUCT_FROM_DATABASE=WDOG1 [PCI-Watchdog 1] - -pci:v00008008d00000011* - ID_PRODUCT_FROM_DATABASE=PWDOG2 [PCI-Watchdog 2] - -pci:v00008008d00000015* - ID_PRODUCT_FROM_DATABASE=Clock77/PCI & Clock77/PCIe (DCF-77 receiver) - -pci:v0000807D* - ID_VENDOR_FROM_DATABASE=Asustek Computer, Inc. - -pci:v00008086* - ID_VENDOR_FROM_DATABASE=Intel Corporation - -pci:v00008086d00000007* - ID_PRODUCT_FROM_DATABASE=82379AB - -pci:v00008086d00000008* - ID_PRODUCT_FROM_DATABASE=Extended Express System Support Controller - -pci:v00008086d00000039* - ID_PRODUCT_FROM_DATABASE=21145 Fast Ethernet - -pci:v00008086d00000040* - ID_PRODUCT_FROM_DATABASE=Core Processor DRAM Controller - -pci:v00008086d00000041* - ID_PRODUCT_FROM_DATABASE=Core Processor PCI Express x16 Root Port - -pci:v00008086d00000042* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Graphics Controller - -pci:v00008086d00000043* - ID_PRODUCT_FROM_DATABASE=Core Processor Secondary PCI Express Root Port - -pci:v00008086d00000044* - ID_PRODUCT_FROM_DATABASE=Core Processor DRAM Controller - -pci:v00008086d00000044sv00001025sd00000347* - ID_PRODUCT_FROM_DATABASE=Aspire 7740G - -pci:v00008086d00000044sv00001025sd00000487* - ID_PRODUCT_FROM_DATABASE=TravelMate 5742 - -pci:v00008086d00000044sv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d00000045* - ID_PRODUCT_FROM_DATABASE=Core Processor PCI Express x16 Root Port - -pci:v00008086d00000046* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Graphics Controller - -pci:v00008086d00000046sv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d00000047* - ID_PRODUCT_FROM_DATABASE=Core Processor Secondary PCI Express Root Port - -pci:v00008086d00000048* - ID_PRODUCT_FROM_DATABASE=Core Processor DRAM Controller - -pci:v00008086d00000049* - ID_PRODUCT_FROM_DATABASE=Core Processor PCI Express x16 Root Port - -pci:v00008086d0000004A* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Graphics Controller - -pci:v00008086d0000004B* - ID_PRODUCT_FROM_DATABASE=Core Processor Secondary PCI Express Root Port - -pci:v00008086d00000050* - ID_PRODUCT_FROM_DATABASE=Core Processor Thermal Management Controller - -pci:v00008086d00000069* - ID_PRODUCT_FROM_DATABASE=Core Processor DRAM Controller - -pci:v00008086d00000082* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6205 [Taylor Peak] - -pci:v00008086d00000082sv00008086sd00001301* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6205 AGN - -pci:v00008086d00000082sv00008086sd00001306* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6205 ABG - -pci:v00008086d00000082sv00008086sd00001307* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6205 BG - -pci:v00008086d00000082sv00008086sd00001321* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6205 AGN - -pci:v00008086d00000082sv00008086sd00001326* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6205 ABG - -pci:v00008086d00000083* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] - -pci:v00008086d00000083sv00008086sd00001205* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1000 BGN - -pci:v00008086d00000083sv00008086sd00001206* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1000 BG - -pci:v00008086d00000083sv00008086sd00001225* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1000 BGN - -pci:v00008086d00000083sv00008086sd00001226* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1000 BG - -pci:v00008086d00000083sv00008086sd00001305* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1000 BGN - -pci:v00008086d00000083sv00008086sd00001306* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1000 BG - -pci:v00008086d00000083sv00008086sd00001325* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1000 BGN - -pci:v00008086d00000083sv00008086sd00001326* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1000 BG - -pci:v00008086d00000084* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1000 [Condor Peak] - -pci:v00008086d00000084sv00008086sd00001215* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1000 BGN - -pci:v00008086d00000084sv00008086sd00001216* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1000 BG - -pci:v00008086d00000084sv00008086sd00001315* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1000 BGN - -pci:v00008086d00000084sv00008086sd00001316* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1000 BG - -pci:v00008086d00000085* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6205 [Taylor Peak] - -pci:v00008086d00000085sv00008086sd00001311* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6205 AGN - -pci:v00008086d00000085sv00008086sd00001316* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6205 ABG - -pci:v00008086d00000087* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] - -pci:v00008086d00000087sv00008086sd00001301* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 AGN - -pci:v00008086d00000087sv00008086sd00001306* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 ABG - -pci:v00008086d00000087sv00008086sd00001321* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 AGN - -pci:v00008086d00000087sv00008086sd00001326* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 ABG - -pci:v00008086d00000089* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 [Kilmer Peak] - -pci:v00008086d00000089sv00008086sd00001311* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 AGN - -pci:v00008086d00000089sv00008086sd00001316* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N + WiMAX 6250 2x2 ABG - -pci:v00008086d0000008A* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1030 [Rainbow Peak] - -pci:v00008086d0000008Asv00008086sd00005305* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1030 BGN - -pci:v00008086d0000008Asv00008086sd00005307* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1030 BG - -pci:v00008086d0000008Asv00008086sd00005325* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1030 BGN - -pci:v00008086d0000008Asv00008086sd00005327* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1030 BG - -pci:v00008086d0000008B* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1030 [Rainbow Peak] - -pci:v00008086d0000008Bsv00008086sd00005315* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1030 BGN - -pci:v00008086d0000008Bsv00008086sd00005317* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 1030 BG - -pci:v00008086d00000090* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak] - -pci:v00008086d00000090sv00008086sd00005211* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6230 AGN - -pci:v00008086d00000090sv00008086sd00005215* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6230 BGN - -pci:v00008086d00000090sv00008086sd00005216* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6230 ABG - -pci:v00008086d00000091* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6230 [Rainbow Peak] - -pci:v00008086d00000091sv00008086sd00005201* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6230 AGN - -pci:v00008086d00000091sv00008086sd00005205* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6230 BGN - -pci:v00008086d00000091sv00008086sd00005206* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6230 ABG - -pci:v00008086d00000091sv00008086sd00005207* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6230 BG - -pci:v00008086d00000091sv00008086sd00005221* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6230 AGN - -pci:v00008086d00000091sv00008086sd00005225* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6230 BGN - -pci:v00008086d00000091sv00008086sd00005226* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6230 ABG - -pci:v00008086d00000100* - ID_PRODUCT_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller - -pci:v00008086d00000100sv00001028sd000004AA* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v00008086d00000100sv00001043sd0000844D* - ID_PRODUCT_FROM_DATABASE=P8P67 Deluxe Motherboard - -pci:v00008086d00000101* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port - -pci:v00008086d00000101sv00001028sd000004B2* - ID_PRODUCT_FROM_DATABASE=Vostro 3350 - -pci:v00008086d00000101sv0000106Bsd000000DC* - ID_PRODUCT_FROM_DATABASE=MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00000102* - ID_PRODUCT_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller - -pci:v00008086d00000102sv00001028sd000004AA* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v00008086d00000104* - ID_PRODUCT_FROM_DATABASE=2nd Generation Core Processor Family DRAM Controller - -pci:v00008086d00000104sv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00008086d00000104sv00001028sd000004B2* - ID_PRODUCT_FROM_DATABASE=Vostro 3350 - -pci:v00008086d00000104sv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v00008086d00000104sv0000106Bsd000000DC* - ID_PRODUCT_FROM_DATABASE=MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00000105* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port - -pci:v00008086d00000105sv0000106Bsd000000DC* - ID_PRODUCT_FROM_DATABASE=MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00000106* - ID_PRODUCT_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller - -pci:v00008086d00000108* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 Processor Family DRAM Controller - -pci:v00008086d00000109* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port - -pci:v00008086d0000010A* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 Processor Family Integrated Graphics Controller - -pci:v00008086d0000010B* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family Integrated Graphics Controller - -pci:v00008086d0000010C* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family DRAM Controller - -pci:v00008086d0000010D* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family PCI Express Root Port - -pci:v00008086d0000010E* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200/2nd Generation Core Processor Family Integrated Graphics Controller - -pci:v00008086d00000112* - ID_PRODUCT_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller - -pci:v00008086d00000116* - ID_PRODUCT_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller - -pci:v00008086d00000116sv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v00008086d00000122* - ID_PRODUCT_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller - -pci:v00008086d00000126* - ID_PRODUCT_FROM_DATABASE=2nd Generation Core Processor Family Integrated Graphics Controller - -pci:v00008086d00000126sv00001028sd000004CC* - ID_PRODUCT_FROM_DATABASE=Vostro 3350 - -pci:v00008086d00000150* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller - -pci:v00008086d00000150sv00001043sd000084CA* - ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard - -pci:v00008086d00000151* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port - -pci:v00008086d00000151sv00001043sd00001477* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00008086d00000151sv00001043sd000084CA* - ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard - -pci:v00008086d00000152* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller - -pci:v00008086d00000152sv00001043sd000084CA* - ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard - -pci:v00008086d00000153* - ID_PRODUCT_FROM_DATABASE=3rd Gen Core Processor Thermal Subsystem - -pci:v00008086d00000153sv00001043sd00001517* - ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A - -pci:v00008086d00000154* - ID_PRODUCT_FROM_DATABASE=3rd Gen Core processor DRAM Controller - -pci:v00008086d00000154sv00001043sd00001477* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00008086d00000154sv00001043sd00001517* - ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A - -pci:v00008086d00000155* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port - -pci:v00008086d00000156* - ID_PRODUCT_FROM_DATABASE=3rd Gen Core processor Graphics Controller - -pci:v00008086d00000158* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/Ivy Bridge DRAM Controller - -pci:v00008086d00000159* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port - -pci:v00008086d0000015A* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/Ivy Bridge Graphics Controller - -pci:v00008086d0000015C* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller - -pci:v00008086d0000015D* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port - -pci:v00008086d0000015E* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller - -pci:v00008086d00000162* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller - -pci:v00008086d00000166* - ID_PRODUCT_FROM_DATABASE=3rd Gen Core processor Graphics Controller - -pci:v00008086d00000166sv00001043sd00001517* - ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A - -pci:v00008086d00000166sv00001043sd00002103* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00008086d0000016A* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller - -pci:v00008086d00000172* - ID_PRODUCT_FROM_DATABASE=Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller - -pci:v00008086d00000176* - ID_PRODUCT_FROM_DATABASE=3rd Gen Core processor Graphics Controller - -pci:v00008086d00000309* - ID_PRODUCT_FROM_DATABASE=80303 I/O Processor PCI-to-PCI Bridge - -pci:v00008086d0000030D* - ID_PRODUCT_FROM_DATABASE=80312 I/O Companion Chip PCI-to-PCI Bridge - -pci:v00008086d00000326* - ID_PRODUCT_FROM_DATABASE=6700/6702PXH I/OxAPIC Interrupt Controller A - -pci:v00008086d00000326sv0000103Csd00003208* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G2 - -pci:v00008086d00000326sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d00000327* - ID_PRODUCT_FROM_DATABASE=6700PXH I/OxAPIC Interrupt Controller B - -pci:v00008086d00000327sv0000103Csd00003208* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G2 - -pci:v00008086d00000327sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d00000329* - ID_PRODUCT_FROM_DATABASE=6700PXH PCI Express-to-PCI Bridge A - -pci:v00008086d0000032A* - ID_PRODUCT_FROM_DATABASE=6700PXH PCI Express-to-PCI Bridge B - -pci:v00008086d0000032C* - ID_PRODUCT_FROM_DATABASE=6702PXH PCI Express-to-PCI Bridge A - -pci:v00008086d00000330* - ID_PRODUCT_FROM_DATABASE=80332 [Dobson] I/O processor (A-Segment Bridge) - -pci:v00008086d00000331* - ID_PRODUCT_FROM_DATABASE=80332 [Dobson] I/O processor (A-Segment IOAPIC) - -pci:v00008086d00000332* - ID_PRODUCT_FROM_DATABASE=80332 [Dobson] I/O processor (B-Segment Bridge) - -pci:v00008086d00000333* - ID_PRODUCT_FROM_DATABASE=80332 [Dobson] I/O processor (B-Segment IOAPIC) - -pci:v00008086d00000334* - ID_PRODUCT_FROM_DATABASE=80332 [Dobson] I/O processor (ATU) - -pci:v00008086d00000335* - ID_PRODUCT_FROM_DATABASE=80331 [Lindsay] I/O processor (PCI-X Bridge) - -pci:v00008086d00000336* - ID_PRODUCT_FROM_DATABASE=80331 [Lindsay] I/O processor (ATU) - -pci:v00008086d00000340* - ID_PRODUCT_FROM_DATABASE=41210 [Lanai] Serial to Parallel PCI Bridge (A-Segment Bridge) - -pci:v00008086d00000341* - ID_PRODUCT_FROM_DATABASE=41210 [Lanai] Serial to Parallel PCI Bridge (B-Segment Bridge) - -pci:v00008086d00000370* - ID_PRODUCT_FROM_DATABASE=80333 Segment-A PCI Express-to-PCI Express Bridge - -pci:v00008086d00000371* - ID_PRODUCT_FROM_DATABASE=80333 A-Bus IOAPIC - -pci:v00008086d00000372* - ID_PRODUCT_FROM_DATABASE=80333 Segment-B PCI Express-to-PCI Express Bridge - -pci:v00008086d00000373* - ID_PRODUCT_FROM_DATABASE=80333 B-Bus IOAPIC - -pci:v00008086d00000374* - ID_PRODUCT_FROM_DATABASE=80333 Address Translation Unit - -pci:v00008086d00000402* - ID_PRODUCT_FROM_DATABASE=Haswell Integrated Graphics Controller - -pci:v00008086d00000406* - ID_PRODUCT_FROM_DATABASE=Haswell Integrated Graphics Controller - -pci:v00008086d0000040A* - ID_PRODUCT_FROM_DATABASE=Haswell Integrated Graphics Controller - -pci:v00008086d00000412* - ID_PRODUCT_FROM_DATABASE=Haswell Integrated Graphics Controller - -pci:v00008086d00000416* - ID_PRODUCT_FROM_DATABASE=Haswell Integrated Graphics Controller - -pci:v00008086d0000041A* - ID_PRODUCT_FROM_DATABASE=Haswell Integrated Graphics Controller - -pci:v00008086d00000436* - ID_PRODUCT_FROM_DATABASE=DH8900CC Null Device - -pci:v00008086d00000438* - ID_PRODUCT_FROM_DATABASE=DH8900CC Series Gigabit Network Connection - -pci:v00008086d0000043A* - ID_PRODUCT_FROM_DATABASE=DH8900CC Series Gigabit Fiber Network Connection - -pci:v00008086d0000043C* - ID_PRODUCT_FROM_DATABASE=DH8900CC Series Gigabit Backplane Network Connection - -pci:v00008086d00000440* - ID_PRODUCT_FROM_DATABASE=DH8900CC Series Gigabit SFP Network Connection - -pci:v00008086d00000482* - ID_PRODUCT_FROM_DATABASE=82375EB/SB PCI to EISA Bridge - -pci:v00008086d00000483* - ID_PRODUCT_FROM_DATABASE=82424TX/ZX [Saturn] CPU to PCI bridge - -pci:v00008086d00000484* - ID_PRODUCT_FROM_DATABASE=82378ZB/IB, 82379AB (SIO, SIO.A) PCI to ISA Bridge - -pci:v00008086d00000486* - ID_PRODUCT_FROM_DATABASE=82425EX/ZX [Aries] PCIset with ISA bridge - -pci:v00008086d000004A3* - ID_PRODUCT_FROM_DATABASE=82434LX/NX [Mercury/Neptune] Processor to PCI bridge - -pci:v00008086d000004D0* - ID_PRODUCT_FROM_DATABASE=82437FX [Triton FX] - -pci:v00008086d00000500* - ID_PRODUCT_FROM_DATABASE=E8870 Processor bus control - -pci:v00008086d00000501* - ID_PRODUCT_FROM_DATABASE=E8870 Memory controller - -pci:v00008086d00000502* - ID_PRODUCT_FROM_DATABASE=E8870 Scalability Port 0 - -pci:v00008086d00000503* - ID_PRODUCT_FROM_DATABASE=E8870 Scalability Port 1 - -pci:v00008086d00000510* - ID_PRODUCT_FROM_DATABASE=E8870IO Hub Interface Port 0 registers (8-bit compatibility port) - -pci:v00008086d00000511* - ID_PRODUCT_FROM_DATABASE=E8870IO Hub Interface Port 1 registers - -pci:v00008086d00000512* - ID_PRODUCT_FROM_DATABASE=E8870IO Hub Interface Port 2 registers - -pci:v00008086d00000513* - ID_PRODUCT_FROM_DATABASE=E8870IO Hub Interface Port 3 registers - -pci:v00008086d00000514* - ID_PRODUCT_FROM_DATABASE=E8870IO Hub Interface Port 4 registers - -pci:v00008086d00000515* - ID_PRODUCT_FROM_DATABASE=E8870IO General SIOH registers - -pci:v00008086d00000516* - ID_PRODUCT_FROM_DATABASE=E8870IO RAS registers - -pci:v00008086d00000530* - ID_PRODUCT_FROM_DATABASE=E8870SP Scalability Port 0 registers - -pci:v00008086d00000531* - ID_PRODUCT_FROM_DATABASE=E8870SP Scalability Port 1 registers - -pci:v00008086d00000532* - ID_PRODUCT_FROM_DATABASE=E8870SP Scalability Port 2 registers - -pci:v00008086d00000533* - ID_PRODUCT_FROM_DATABASE=E8870SP Scalability Port 3 registers - -pci:v00008086d00000534* - ID_PRODUCT_FROM_DATABASE=E8870SP Scalability Port 4 registers - -pci:v00008086d00000535* - ID_PRODUCT_FROM_DATABASE=E8870SP Scalability Port 5 registers - -pci:v00008086d00000536* - ID_PRODUCT_FROM_DATABASE=E8870SP Interleave registers 0 and 1 - -pci:v00008086d00000537* - ID_PRODUCT_FROM_DATABASE=E8870SP Interleave registers 2 and 3 - -pci:v00008086d00000600* - ID_PRODUCT_FROM_DATABASE=RAID Controller - -pci:v00008086d00000600sv00008086sd00000136* - ID_PRODUCT_FROM_DATABASE=SRCU31L - -pci:v00008086d00000600sv00008086sd000001AF* - ID_PRODUCT_FROM_DATABASE=SRCZCR - -pci:v00008086d00000600sv00008086sd000001C1* - ID_PRODUCT_FROM_DATABASE=ICP Vortex GDT8546RZ - -pci:v00008086d00000600sv00008086sd000001F7* - ID_PRODUCT_FROM_DATABASE=SCRU32 - -pci:v00008086d0000061F* - ID_PRODUCT_FROM_DATABASE=80303 I/O Processor - -pci:v00008086d00000700* - ID_PRODUCT_FROM_DATABASE=CE Media Processor A/V Bridge - -pci:v00008086d00000701* - ID_PRODUCT_FROM_DATABASE=CE Media Processor NAND Flash Controller - -pci:v00008086d00000703* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Media Control Unit 1 - -pci:v00008086d00000704* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Video Capture Interface - -pci:v00008086d00000707* - ID_PRODUCT_FROM_DATABASE=CE Media Processor SPI Slave - -pci:v00008086d00000708* - ID_PRODUCT_FROM_DATABASE=CE Media Processor 4100 - -pci:v00008086d00000800* - ID_PRODUCT_FROM_DATABASE=Moorestown SPI Ctrl 0 - -pci:v00008086d00000801* - ID_PRODUCT_FROM_DATABASE=Moorestown SPI Ctrl 1 - -pci:v00008086d00000802* - ID_PRODUCT_FROM_DATABASE=Moorestown I2C 0 - -pci:v00008086d00000803* - ID_PRODUCT_FROM_DATABASE=Moorestown I2C 1 - -pci:v00008086d00000804* - ID_PRODUCT_FROM_DATABASE=Moorestown I2C 2 - -pci:v00008086d00000805* - ID_PRODUCT_FROM_DATABASE=Moorestown Keyboard Ctrl - -pci:v00008086d00000806* - ID_PRODUCT_FROM_DATABASE=Moorestown USB Ctrl - -pci:v00008086d00000807* - ID_PRODUCT_FROM_DATABASE=Moorestown SD Host Ctrl 0 - -pci:v00008086d00000808* - ID_PRODUCT_FROM_DATABASE=Moorestown SD Host Ctrl 1 - -pci:v00008086d00000809* - ID_PRODUCT_FROM_DATABASE=Moorestown NAND Ctrl - -pci:v00008086d0000080A* - ID_PRODUCT_FROM_DATABASE=Moorestown Audio Ctrl - -pci:v00008086d0000080B* - ID_PRODUCT_FROM_DATABASE=Moorestown ISP - -pci:v00008086d0000080C* - ID_PRODUCT_FROM_DATABASE=Moorestown Security Controller - -pci:v00008086d0000080D* - ID_PRODUCT_FROM_DATABASE=Moorestown External Displays - -pci:v00008086d0000080E* - ID_PRODUCT_FROM_DATABASE=Moorestown SCU IPC - -pci:v00008086d0000080F* - ID_PRODUCT_FROM_DATABASE=Moorestown GPIO Controller - -pci:v00008086d00000810* - ID_PRODUCT_FROM_DATABASE=Moorestown Power Management Unit - -pci:v00008086d00000811* - ID_PRODUCT_FROM_DATABASE=Moorestown OTG Ctrl - -pci:v00008086d00000812* - ID_PRODUCT_FROM_DATABASE=Moorestown SPI Ctrl 2 - -pci:v00008086d00000813* - ID_PRODUCT_FROM_DATABASE=Moorestown SC DMA - -pci:v00008086d00000814* - ID_PRODUCT_FROM_DATABASE=Moorestown LPE DMA - -pci:v00008086d00000815* - ID_PRODUCT_FROM_DATABASE=Moorestown SSP0 - -pci:v00008086d00000885* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 - -pci:v00008086d00000885sv00008086sd00001305* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BGN - -pci:v00008086d00000885sv00008086sd00001307* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BG - -pci:v00008086d00000885sv00008086sd00001325* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BGN - -pci:v00008086d00000885sv00008086sd00001327* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BG - -pci:v00008086d00000886* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 - -pci:v00008086d00000886sv00008086sd00001315* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BGN - -pci:v00008086d00000886sv00008086sd00001317* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N + WiMAX 6150 BG - -pci:v00008086d00000887* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 2230 - -pci:v00008086d00000887sv00008086sd00004062* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 2230 BGN - -pci:v00008086d00000887sv00008086sd00004462* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 2230 BGN - -pci:v00008086d00000888* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 2230 - -pci:v00008086d00000888sv00008086sd00004262* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 2230 BGN - -pci:v00008086d0000088E* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6235 - -pci:v00008086d0000088Esv00008086sd00004060* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6235 AGN - -pci:v00008086d0000088Esv00008086sd00004460* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6235 AGN - -pci:v00008086d0000088F* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6235 - -pci:v00008086d0000088Fsv00008086sd00004260* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6235 AGN - -pci:v00008086d00000890* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 2200 - -pci:v00008086d00000890sv00008086sd00004022* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 2200 BGN - -pci:v00008086d00000890sv00008086sd00004422* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 2200 BGN - -pci:v00008086d00000890sv00008086sd00004822* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 2200 BGN - -pci:v00008086d00000891* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 2200 - -pci:v00008086d00000891sv00008086sd00004222* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 2200 BGN - -pci:v00008086d00000892* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 135 - -pci:v00008086d00000892sv00008086sd00000062* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 135 BGN - -pci:v00008086d00000892sv00008086sd00000462* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 135 BGN - -pci:v00008086d00000893* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 135 - -pci:v00008086d00000893sv00008086sd00000262* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 135 BGN - -pci:v00008086d00000894* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 105 - -pci:v00008086d00000894sv00008086sd00000022* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 105 BGN - -pci:v00008086d00000894sv00008086sd00000422* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 105 BGN - -pci:v00008086d00000894sv00008086sd00000822* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 105 BGN - -pci:v00008086d00000895* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 105 - -pci:v00008086d00000895sv00008086sd00000222* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 105 BGN - -pci:v00008086d00000896* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 130 - -pci:v00008086d00000896sv00008086sd00005005* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 130 BGN - -pci:v00008086d00000896sv00008086sd00005007* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 130 BG - -pci:v00008086d00000896sv00008086sd00005025* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 130 BGN - -pci:v00008086d00000896sv00008086sd00005027* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 130 BG - -pci:v00008086d00000897* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 130 - -pci:v00008086d00000897sv00008086sd00005015* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 130 BGN - -pci:v00008086d00000897sv00008086sd00005017* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 130 BG - -pci:v00008086d000008AE* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 100 - -pci:v00008086d000008AEsv00008086sd00001005* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 100 BGN - -pci:v00008086d000008AEsv00008086sd00001007* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 100 BG - -pci:v00008086d000008AEsv00008086sd00001025* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 100 BGN - -pci:v00008086d000008AEsv00008086sd00001027* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 100 BG - -pci:v00008086d000008AF* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 100 - -pci:v00008086d000008AFsv00008086sd00001015* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 100 BGN - -pci:v00008086d000008AFsv00008086sd00001017* - ID_PRODUCT_FROM_DATABASE=Centrino Wireless-N 100 BG - -pci:v00008086d00000960* - ID_PRODUCT_FROM_DATABASE=80960RP (i960RP) Microprocessor/Bridge - -pci:v00008086d00000962* - ID_PRODUCT_FROM_DATABASE=80960RM (i960RM) Bridge - -pci:v00008086d00000964* - ID_PRODUCT_FROM_DATABASE=80960RP (i960RP) Microprocessor/Bridge - -pci:v00008086d00000A04* - ID_PRODUCT_FROM_DATABASE=Haswell-ULT DRAM Controller - -pci:v00008086d00000A06* - ID_PRODUCT_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller - -pci:v00008086d00000A16* - ID_PRODUCT_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller - -pci:v00008086d00000A22* - ID_PRODUCT_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller - -pci:v00008086d00000A26* - ID_PRODUCT_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller - -pci:v00008086d00000A2A* - ID_PRODUCT_FROM_DATABASE=Haswell-ULT Integrated Graphics Controller - -pci:v00008086d00000BE0* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BE1* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BE1sv0000105Bsd00000D7C* - ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard - -pci:v00008086d00000BE2* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BE3* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BE4* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BE5* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BE6* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BE7* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BE8* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BE9* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BEA* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BEB* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BEC* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BED* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BEE* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BEF* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx Integrated Graphics Controller - -pci:v00008086d00000BF0* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller - -pci:v00008086d00000BF1* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller - -pci:v00008086d00000BF2* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller - -pci:v00008086d00000BF3* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller - -pci:v00008086d00000BF4* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller - -pci:v00008086d00000BF5* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller - -pci:v00008086d00000BF5sv0000105Bsd00000D7C* - ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard - -pci:v00008086d00000BF6* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller - -pci:v00008086d00000BF7* - ID_PRODUCT_FROM_DATABASE=Atom Processor D2xxx/N2xxx DRAM Controller - -pci:v00008086d00000C00* - ID_PRODUCT_FROM_DATABASE=Haswell DRAM Controller - -pci:v00008086d00000C01* - ID_PRODUCT_FROM_DATABASE=Haswell PCI Express x16 Controller - -pci:v00008086d00000C04* - ID_PRODUCT_FROM_DATABASE=Haswell DRAM Controller - -pci:v00008086d00000C05* - ID_PRODUCT_FROM_DATABASE=Haswell PCI Express x8 Controller - -pci:v00008086d00000C08* - ID_PRODUCT_FROM_DATABASE=Haswell DRAM Controller - -pci:v00008086d00000C09* - ID_PRODUCT_FROM_DATABASE=Haswell PCI Express x4 Controller - -pci:v00008086d00000C0C* - ID_PRODUCT_FROM_DATABASE=Haswell HD Audio Controller - -pci:v00008086d00000C46* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 1 - -pci:v00008086d00000C47* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 2 - -pci:v00008086d00000C48* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 3 - -pci:v00008086d00000C49* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 PCI Express Root Port 4 - -pci:v00008086d00000C4E* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 NTB Primary - -pci:v00008086d00000C54* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C55* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 DFX 1 - -pci:v00008086d00000C56* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 DFX 2 - -pci:v00008086d00000C59* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 SMBus 2.0 Controller 0 - -pci:v00008086d00000C5A* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 SMBus 2.0 Controller 1 - -pci:v00008086d00000C5B* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 SMBus Controller 2 - -pci:v00008086d00000C5C* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 SMBus Controller 3 - -pci:v00008086d00000C5D* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 SMBus Controller 4 - -pci:v00008086d00000C5E* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 SMBus Controller 5 - -pci:v00008086d00000C5F* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 UART - -pci:v00008086d00000C60* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Integrated Legacy Bus - -pci:v00008086d00000C70* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C71* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C72* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C73* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C74* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C75* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C76* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C77* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C78* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C79* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C7A* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C7B* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C7C* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C7D* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C7E* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000C7F* - ID_PRODUCT_FROM_DATABASE=Atom Processor S1200 Internal - -pci:v00008086d00000D00* - ID_PRODUCT_FROM_DATABASE=Crystal Well DRAM Controller - -pci:v00008086d00000D01* - ID_PRODUCT_FROM_DATABASE=Crystal Well PCI Express x16 Controller - -pci:v00008086d00000D04* - ID_PRODUCT_FROM_DATABASE=Crystal Well DRAM Controller - -pci:v00008086d00000D05* - ID_PRODUCT_FROM_DATABASE=Crystal Well PCI Express x8 Controller - -pci:v00008086d00000D09* - ID_PRODUCT_FROM_DATABASE=Crystal Well PCI Express x4 Controller - -pci:v00008086d00000D0C* - ID_PRODUCT_FROM_DATABASE=Crystal Well HD Audio Controller - -pci:v00008086d00000D16* - ID_PRODUCT_FROM_DATABASE=Crystal Well Integrated Graphics Controller - -pci:v00008086d00000D26* - ID_PRODUCT_FROM_DATABASE=Crystal Well Integrated Graphics Controller - -pci:v00008086d00000D36* - ID_PRODUCT_FROM_DATABASE=Crystal Well Integrated Graphics Controller - -pci:v00008086d00000E00* - ID_PRODUCT_FROM_DATABASE=Ivytown DMI2 - -pci:v00008086d00000E01* - ID_PRODUCT_FROM_DATABASE=Ivytown PCI Express Root Port in DMI2 Mode - -pci:v00008086d00000E02* - ID_PRODUCT_FROM_DATABASE=Ivytown PCI Express Root Port 1a - -pci:v00008086d00000E03* - ID_PRODUCT_FROM_DATABASE=Ivytown PCI Express Root Port 1b - -pci:v00008086d00000E04* - ID_PRODUCT_FROM_DATABASE=Ivytown PCI Express Root Port 2a - -pci:v00008086d00000E05* - ID_PRODUCT_FROM_DATABASE=Ivytown PCI Express Root Port 2b - -pci:v00008086d00000E06* - ID_PRODUCT_FROM_DATABASE=Ivytown PCI Express Root Port 2c - -pci:v00008086d00000E07* - ID_PRODUCT_FROM_DATABASE=Ivytown PCI Express Root Port 2d - -pci:v00008086d00000E08* - ID_PRODUCT_FROM_DATABASE=Ivytown PCI Express Root Port 3a - -pci:v00008086d00000E09* - ID_PRODUCT_FROM_DATABASE=Ivytown PCI Express Root Port 3b - -pci:v00008086d00000E0A* - ID_PRODUCT_FROM_DATABASE=Ivytown PCI Express Root Port 3c - -pci:v00008086d00000E0B* - ID_PRODUCT_FROM_DATABASE=Ivytown PCI Express Root Port 3d - -pci:v00008086d00000E1C* - ID_PRODUCT_FROM_DATABASE=Ivytown Debug and Error Injection Related Registers - -pci:v00008086d00000E1D* - ID_PRODUCT_FROM_DATABASE=Ivytown R2PCIe - -pci:v00008086d00000E1E* - ID_PRODUCT_FROM_DATABASE=Ivytown Semaphore and Scratchpad Configuration Registers - -pci:v00008086d00000E1F* - ID_PRODUCT_FROM_DATABASE=Ivytown Semaphore and Scratchpad Configuration Registers - -pci:v00008086d00000E20* - ID_PRODUCT_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 0 - -pci:v00008086d00000E21* - ID_PRODUCT_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 1 - -pci:v00008086d00000E22* - ID_PRODUCT_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 2 - -pci:v00008086d00000E23* - ID_PRODUCT_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 3 - -pci:v00008086d00000E24* - ID_PRODUCT_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 4 - -pci:v00008086d00000E25* - ID_PRODUCT_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 5 - -pci:v00008086d00000E26* - ID_PRODUCT_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 6 - -pci:v00008086d00000E27* - ID_PRODUCT_FROM_DATABASE=Ivytown Crystal Beach DMA Channel 7 - -pci:v00008086d00000E28* - ID_PRODUCT_FROM_DATABASE=Ivytown VTd/Memory Map/Misc - -pci:v00008086d00000E29* - ID_PRODUCT_FROM_DATABASE=Ivytown Memory Hotplug - -pci:v00008086d00000E2A* - ID_PRODUCT_FROM_DATABASE=Ivytown IIO RAS - -pci:v00008086d00000E2C* - ID_PRODUCT_FROM_DATABASE=Ivytown IOAPIC - -pci:v00008086d00000E2E* - ID_PRODUCT_FROM_DATABASE=Ivytown CBDMA - -pci:v00008086d00000E2F* - ID_PRODUCT_FROM_DATABASE=Ivytown CBDMA - -pci:v00008086d00000E30* - ID_PRODUCT_FROM_DATABASE=Ivytown Home Agent 0 - -pci:v00008086d00000E32* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Link 0 - -pci:v00008086d00000E33* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Link 1 - -pci:v00008086d00000E34* - ID_PRODUCT_FROM_DATABASE=Ivytown PCI Express Ring Performance Monitoring - -pci:v00008086d00000E36* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Ring Performance Ring Monitoring - -pci:v00008086d00000E37* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Ring Performance Ring Monitoring - -pci:v00008086d00000E38* - ID_PRODUCT_FROM_DATABASE=Ivytown Home Agent 1 - -pci:v00008086d00000E3A* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Link 2 - -pci:v00008086d00000E3E* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Ring Performance Ring Monitoring - -pci:v00008086d00000E3F* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Ring Performance Ring Monitoring - -pci:v00008086d00000E40* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Link 2 - -pci:v00008086d00000E41* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Ring Registers - -pci:v00008086d00000E43* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Link Reut 2 - -pci:v00008086d00000E44* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Link Reut 2 - -pci:v00008086d00000E60* - ID_PRODUCT_FROM_DATABASE=Ivytown Home Agent 1 - -pci:v00008086d00000E68* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Target Address/Thermal Registers - -pci:v00008086d00000E6A* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers - -pci:v00008086d00000E6B* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers - -pci:v00008086d00000E6C* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers - -pci:v00008086d00000E6D* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel Target Address Decoder Registers - -pci:v00008086d00000E71* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 RAS Registers - -pci:v00008086d00000E79* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 RAS Registers - -pci:v00008086d00000E80* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Link 0 - -pci:v00008086d00000E81* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Ring Registers - -pci:v00008086d00000E83* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Link Reut 0 - -pci:v00008086d00000E84* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Link Reut 0 - -pci:v00008086d00000E90* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Link 1 - -pci:v00008086d00000E93* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Link 1 - -pci:v00008086d00000E94* - ID_PRODUCT_FROM_DATABASE=Ivytown QPI Link Reut 1 - -pci:v00008086d00000EA0* - ID_PRODUCT_FROM_DATABASE=Ivytown Home Agent 0 - -pci:v00008086d00000EA8* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Target Address/Thermal Registers - -pci:v00008086d00000EAA* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers - -pci:v00008086d00000EAB* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers - -pci:v00008086d00000EAC* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers - -pci:v00008086d00000EAD* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel Target Address Decoder Registers - -pci:v00008086d00000EB0* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 0 - -pci:v00008086d00000EB1* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 1 - -pci:v00008086d00000EB2* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 0 - -pci:v00008086d00000EB3* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 1 - -pci:v00008086d00000EB4* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 2 - -pci:v00008086d00000EB5* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 Thermal Control 3 - -pci:v00008086d00000EB6* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 2 - -pci:v00008086d00000EB7* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 1 Channel 0-3 ERROR Registers 3 - -pci:v00008086d00000EC0* - ID_PRODUCT_FROM_DATABASE=Ivytown Power Control Unit 0 - -pci:v00008086d00000EC1* - ID_PRODUCT_FROM_DATABASE=Ivytown Power Control Unit 1 - -pci:v00008086d00000EC2* - ID_PRODUCT_FROM_DATABASE=Ivytown Power Control Unit 2 - -pci:v00008086d00000EC3* - ID_PRODUCT_FROM_DATABASE=Ivytown Power Control Unit 3 - -pci:v00008086d00000EC4* - ID_PRODUCT_FROM_DATABASE=Ivytown Power Control Unit 4 - -pci:v00008086d00000EC8* - ID_PRODUCT_FROM_DATABASE=Ivytown System Address Decoder - -pci:v00008086d00000EC9* - ID_PRODUCT_FROM_DATABASE=Ivytown Broadcast Registers - -pci:v00008086d00000ECA* - ID_PRODUCT_FROM_DATABASE=Ivytown Broadcast Registers - -pci:v00008086d00000ED8* - ID_PRODUCT_FROM_DATABASE=Ivytown DDRIO - -pci:v00008086d00000ED9* - ID_PRODUCT_FROM_DATABASE=Ivytown DDRIO - -pci:v00008086d00000EDC* - ID_PRODUCT_FROM_DATABASE=Ivytown DDRIO - -pci:v00008086d00000EDD* - ID_PRODUCT_FROM_DATABASE=Ivytown DDRIO - -pci:v00008086d00000EDE* - ID_PRODUCT_FROM_DATABASE=Ivytown DDRIO - -pci:v00008086d00000EDF* - ID_PRODUCT_FROM_DATABASE=Ivytown DDRIO - -pci:v00008086d00000EE0* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EE1* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EE2* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EE3* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EE4* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EE5* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EE6* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EE7* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EE8* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EE9* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EEA* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EEB* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EEC* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EED* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EEE* - ID_PRODUCT_FROM_DATABASE=Ivytown Unicast Registers - -pci:v00008086d00000EF0* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 0 - -pci:v00008086d00000EF1* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 1 - -pci:v00008086d00000EF2* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 0 - -pci:v00008086d00000EF3* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 1 - -pci:v00008086d00000EF4* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 2 - -pci:v00008086d00000EF5* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 Thermal Control 3 - -pci:v00008086d00000EF6* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 2 - -pci:v00008086d00000EF7* - ID_PRODUCT_FROM_DATABASE=Ivytown Integrated Memory Controller 0 Channel 0-3 ERROR Registers 3 - -pci:v00008086d00000EF8* - ID_PRODUCT_FROM_DATABASE=Ivytown DDRIO - -pci:v00008086d00000EF9* - ID_PRODUCT_FROM_DATABASE=Ivytown DDRIO - -pci:v00008086d00000EFA* - ID_PRODUCT_FROM_DATABASE=Ivytown DDRIO - -pci:v00008086d00000EFB* - ID_PRODUCT_FROM_DATABASE=Ivytown DDRIO - -pci:v00008086d00000EFC* - ID_PRODUCT_FROM_DATABASE=Ivytown DDRIO - -pci:v00008086d00000EFD* - ID_PRODUCT_FROM_DATABASE=Ivytown DDRIO - -pci:v00008086d00000F00* - ID_PRODUCT_FROM_DATABASE=ValleyView SSA-CUnit - -pci:v00008086d00000F01* - ID_PRODUCT_FROM_DATABASE=ValleyView SSA-CUnit - -pci:v00008086d00000F02* - ID_PRODUCT_FROM_DATABASE=ValleyView SSA-CUnit - -pci:v00008086d00000F03* - ID_PRODUCT_FROM_DATABASE=ValleyView SSA-CUnit - -pci:v00008086d00000F04* - ID_PRODUCT_FROM_DATABASE=ValleyView High Definition Audio Controller - -pci:v00008086d00000F05* - ID_PRODUCT_FROM_DATABASE=ValleyView High Definition Audio Controller - -pci:v00008086d00000F06* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO1 DMA Controller - -pci:v00008086d00000F07* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO1 DMA Controller - -pci:v00008086d00000F08* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO1 PWM Controller - -pci:v00008086d00000F09* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO1 PWM Controller - -pci:v00008086d00000F0A* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO1 HSUART Controller #1 - -pci:v00008086d00000F0B* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO1 HSUART Controller #1 - -pci:v00008086d00000F0C* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO1 HSUART Controller #2 - -pci:v00008086d00000F0D* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO1 HSUART Controller #2 - -pci:v00008086d00000F0E* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO1 SPI Controller - -pci:v00008086d00000F0F* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO1 SPI Controller - -pci:v00008086d00000F10* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO1 Controller - -pci:v00008086d00000F11* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO1 Controller - -pci:v00008086d00000F12* - ID_PRODUCT_FROM_DATABASE=ValleyView SMBus Controller - -pci:v00008086d00000F13* - ID_PRODUCT_FROM_DATABASE=ValleyView SMBus Controller - -pci:v00008086d00000F14* - ID_PRODUCT_FROM_DATABASE=ValleyView SDIO Controller - -pci:v00008086d00000F15* - ID_PRODUCT_FROM_DATABASE=ValleyView SDIO Controller - -pci:v00008086d00000F16* - ID_PRODUCT_FROM_DATABASE=ValleyView SDIO Controller - -pci:v00008086d00000F17* - ID_PRODUCT_FROM_DATABASE=ValleyView SDIO Controller - -pci:v00008086d00000F18* - ID_PRODUCT_FROM_DATABASE=ValleyView SEC - -pci:v00008086d00000F19* - ID_PRODUCT_FROM_DATABASE=ValleyView SEC - -pci:v00008086d00000F1A* - ID_PRODUCT_FROM_DATABASE=ValleyView SEC - -pci:v00008086d00000F1B* - ID_PRODUCT_FROM_DATABASE=ValleyView SEC - -pci:v00008086d00000F1C* - ID_PRODUCT_FROM_DATABASE=ValleyView Power Control Unit - -pci:v00008086d00000F1D* - ID_PRODUCT_FROM_DATABASE=ValleyView Power Control Unit - -pci:v00008086d00000F1E* - ID_PRODUCT_FROM_DATABASE=ValleyView Power Control Unit - -pci:v00008086d00000F1F* - ID_PRODUCT_FROM_DATABASE=ValleyView Power Control Unit - -pci:v00008086d00000F20* - ID_PRODUCT_FROM_DATABASE=ValleyView 4-Port SATA Storage Controller - -pci:v00008086d00000F21* - ID_PRODUCT_FROM_DATABASE=ValleyView 4-Port SATA Storage Controller - -pci:v00008086d00000F22* - ID_PRODUCT_FROM_DATABASE=ValleyView 6-Port SATA AHCI Controller - -pci:v00008086d00000F23* - ID_PRODUCT_FROM_DATABASE=ValleyView 6-Port SATA AHCI Controller - -pci:v00008086d00000F24* - ID_PRODUCT_FROM_DATABASE=ValleyView SATA RAID Storage Controller - -pci:v00008086d00000F25* - ID_PRODUCT_FROM_DATABASE=ValleyView SATA RAID Storage Controller - -pci:v00008086d00000F26* - ID_PRODUCT_FROM_DATABASE=ValleyView 2-Port SATA Storage Controller - -pci:v00008086d00000F27* - ID_PRODUCT_FROM_DATABASE=ValleyView 2-Port SATA Storage Controller - -pci:v00008086d00000F28* - ID_PRODUCT_FROM_DATABASE=ValleyView LPE Audio Controller - -pci:v00008086d00000F29* - ID_PRODUCT_FROM_DATABASE=ValleyView LPE Audio Controller - -pci:v00008086d00000F2A* - ID_PRODUCT_FROM_DATABASE=ValleyView LPE Audio Controller - -pci:v00008086d00000F2B* - ID_PRODUCT_FROM_DATABASE=ValleyView LPE Audio Controller - -pci:v00008086d00000F2E* - ID_PRODUCT_FROM_DATABASE=ValleyView SATA RAID Storage Controller - -pci:v00008086d00000F2F* - ID_PRODUCT_FROM_DATABASE=ValleyView SATA RAID Storage Controller - -pci:v00008086d00000F30* - ID_PRODUCT_FROM_DATABASE=ValleyView Gen7 - -pci:v00008086d00000F31* - ID_PRODUCT_FROM_DATABASE=ValleyView Gen7 - -pci:v00008086d00000F32* - ID_PRODUCT_FROM_DATABASE=ValleyView Gen7 - -pci:v00008086d00000F33* - ID_PRODUCT_FROM_DATABASE=ValleyView Gen7 - -pci:v00008086d00000F34* - ID_PRODUCT_FROM_DATABASE=ValleyView USB Enhanced Host Controller - -pci:v00008086d00000F35* - ID_PRODUCT_FROM_DATABASE=ValleyView USB xHCI Host Controller - -pci:v00008086d00000F36* - ID_PRODUCT_FROM_DATABASE=ValleyView USB xHCI Host Controller - -pci:v00008086d00000F37* - ID_PRODUCT_FROM_DATABASE=ValleyView OTG - -pci:v00008086d00000F38* - ID_PRODUCT_FROM_DATABASE=ValleyView ISP - -pci:v00008086d00000F39* - ID_PRODUCT_FROM_DATABASE=ValleyView ISP - -pci:v00008086d00000F3A* - ID_PRODUCT_FROM_DATABASE=ValleyView ISP - -pci:v00008086d00000F3B* - ID_PRODUCT_FROM_DATABASE=ValleyView ISP - -pci:v00008086d00000F3C* - ID_PRODUCT_FROM_DATABASE=ValleyView ISP - -pci:v00008086d00000F3D* - ID_PRODUCT_FROM_DATABASE=ValleyView ISP - -pci:v00008086d00000F3E* - ID_PRODUCT_FROM_DATABASE=ValleyView ISP - -pci:v00008086d00000F3F* - ID_PRODUCT_FROM_DATABASE=ValleyView ISP - -pci:v00008086d00000F40* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO2 DMA Controller - -pci:v00008086d00000F41* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO2 I2C Controller #1 - -pci:v00008086d00000F42* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO2 I2C Controller #2 - -pci:v00008086d00000F43* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO2 I2C Controller #3 - -pci:v00008086d00000F44* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO2 I2C Controller #4 - -pci:v00008086d00000F45* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO2 I2C Controller #5 - -pci:v00008086d00000F46* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO2 I2C Controller #6 - -pci:v00008086d00000F47* - ID_PRODUCT_FROM_DATABASE=ValleyView LPIO2 I2C Controller #7 - -pci:v00008086d00000F48* - ID_PRODUCT_FROM_DATABASE=ValleyView PCI Express Root Port - -pci:v00008086d00000F49* - ID_PRODUCT_FROM_DATABASE=ValleyView PCI Express Root Port - -pci:v00008086d00000F4A* - ID_PRODUCT_FROM_DATABASE=ValleyView PCI Express Root Port - -pci:v00008086d00000F4B* - ID_PRODUCT_FROM_DATABASE=ValleyView PCI Express Root Port - -pci:v00008086d00000F4C* - ID_PRODUCT_FROM_DATABASE=ValleyView PCI Express Root Port - -pci:v00008086d00000F4D* - ID_PRODUCT_FROM_DATABASE=ValleyView PCI Express Root Port - -pci:v00008086d00000F4E* - ID_PRODUCT_FROM_DATABASE=ValleyView PCI Express Root Port - -pci:v00008086d00000F4F* - ID_PRODUCT_FROM_DATABASE=ValleyView PCI Express Root Port - -pci:v00008086d00000F50* - ID_PRODUCT_FROM_DATABASE=ValleyView MIPI-HSI Controller - -pci:v00008086d00001000* - ID_PRODUCT_FROM_DATABASE=82542 Gigabit Ethernet Controller (Fiber) - -pci:v00008086d00001000sv00000E11sd0000B0DF* - ID_PRODUCT_FROM_DATABASE=NC6132 Gigabit Ethernet Adapter (1000-SX) - -pci:v00008086d00001000sv00000E11sd0000B0E0* - ID_PRODUCT_FROM_DATABASE=NC6133 Gigabit Ethernet Adapter (1000-LX) - -pci:v00008086d00001000sv00000E11sd0000B123* - ID_PRODUCT_FROM_DATABASE=NC6134 Gigabit Ethernet Adapter (1000-LX) - -pci:v00008086d00001000sv00001014sd00000119* - ID_PRODUCT_FROM_DATABASE=Netfinity Gigabit Ethernet SX Adapter - -pci:v00008086d00001000sv00008086sd00001000* - ID_PRODUCT_FROM_DATABASE=PRO/1000 Gigabit Server Adapter - -pci:v00008086d00001001* - ID_PRODUCT_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Fiber) - -pci:v00008086d00001001sv00000E11sd0000004A* - ID_PRODUCT_FROM_DATABASE=NC6136 Gigabit Server Adapter - -pci:v00008086d00001001sv00001014sd000001EA* - ID_PRODUCT_FROM_DATABASE=Netfinity Gigabit Ethernet SX Adapter - -pci:v00008086d00001001sv00008086sd00001002* - ID_PRODUCT_FROM_DATABASE=PRO/1000 F Server Adapter - -pci:v00008086d00001001sv00008086sd00001003* - ID_PRODUCT_FROM_DATABASE=PRO/1000 F Server Adapter - -pci:v00008086d00001002* - ID_PRODUCT_FROM_DATABASE=Pro 100 LAN+Modem 56 Cardbus II - -pci:v00008086d00001002sv00008086sd0000200E* - ID_PRODUCT_FROM_DATABASE=Pro 100 LAN+Modem 56 Cardbus II - -pci:v00008086d00001002sv00008086sd00002013* - ID_PRODUCT_FROM_DATABASE=Pro 100 SR Mobile Combo Adapter - -pci:v00008086d00001002sv00008086sd00002017* - ID_PRODUCT_FROM_DATABASE=Pro 100 S Combo Mobile Adapter - -pci:v00008086d00001004* - ID_PRODUCT_FROM_DATABASE=82543GC Gigabit Ethernet Controller (Copper) - -pci:v00008086d00001004sv00000E11sd00000049* - ID_PRODUCT_FROM_DATABASE=NC7132 Gigabit Upgrade Module - -pci:v00008086d00001004sv00000E11sd0000B1A4* - ID_PRODUCT_FROM_DATABASE=NC7131 Gigabit Server Adapter - -pci:v00008086d00001004sv00001014sd000010F2* - ID_PRODUCT_FROM_DATABASE=Gigabit Ethernet Server Adapter - -pci:v00008086d00001004sv00008086sd00001004* - ID_PRODUCT_FROM_DATABASE=PRO/1000 T Server Adapter - -pci:v00008086d00001004sv00008086sd00002004* - ID_PRODUCT_FROM_DATABASE=PRO/1000 T Server Adapter - -pci:v00008086d00001008* - ID_PRODUCT_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Copper) - -pci:v00008086d00001008sv00001014sd00000269* - ID_PRODUCT_FROM_DATABASE=iSeries 1000/100/10 Ethernet Adapter - -pci:v00008086d00001008sv00001028sd0000011B* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1650/2550 - -pci:v00008086d00001008sv00001028sd0000011C* - ID_PRODUCT_FROM_DATABASE=PRO/1000 XT Network Connection - -pci:v00008086d00001008sv00008086sd00001107* - ID_PRODUCT_FROM_DATABASE=PRO/1000 XT Server Adapter - -pci:v00008086d00001008sv00008086sd00002107* - ID_PRODUCT_FROM_DATABASE=PRO/1000 XT Server Adapter - -pci:v00008086d00001008sv00008086sd00002110* - ID_PRODUCT_FROM_DATABASE=PRO/1000 XT Desktop Adapter - -pci:v00008086d00001008sv00008086sd00003108* - ID_PRODUCT_FROM_DATABASE=PRO/1000 XT Network Connection - -pci:v00008086d00001009* - ID_PRODUCT_FROM_DATABASE=82544EI Gigabit Ethernet Controller (Fiber) - -pci:v00008086d00001009sv00001014sd00000268* - ID_PRODUCT_FROM_DATABASE=iSeries Gigabit Ethernet Adapter - -pci:v00008086d00001009sv00008086sd00001109* - ID_PRODUCT_FROM_DATABASE=PRO/1000 XF Server Adapter - -pci:v00008086d00001009sv00008086sd00002109* - ID_PRODUCT_FROM_DATABASE=PRO/1000 XF Server Adapter - -pci:v00008086d0000100A* - ID_PRODUCT_FROM_DATABASE=82540EM Gigabit Ethernet Controller - -pci:v00008086d0000100C* - ID_PRODUCT_FROM_DATABASE=82544GC Gigabit Ethernet Controller (Copper) - -pci:v00008086d0000100Csv00008086sd00001112* - ID_PRODUCT_FROM_DATABASE=PRO/1000 T Desktop Adapter - -pci:v00008086d0000100Csv00008086sd00002112* - ID_PRODUCT_FROM_DATABASE=PRO/1000 T Desktop Adapter - -pci:v00008086d0000100D* - ID_PRODUCT_FROM_DATABASE=82544GC Gigabit Ethernet Controller (LOM) - -pci:v00008086d0000100Dsv00001028sd00000123* - ID_PRODUCT_FROM_DATABASE=PRO/1000 XT Network Connection - -pci:v00008086d0000100Dsv00001079sd0000891F* - ID_PRODUCT_FROM_DATABASE=82544GC Based Network Connection - -pci:v00008086d0000100Dsv00004C53sd00001080* - ID_PRODUCT_FROM_DATABASE=CT8 mainboard - -pci:v00008086d0000100Dsv00008086sd0000110D* - ID_PRODUCT_FROM_DATABASE=82544GC Based Network Connection - -pci:v00008086d0000100E* - ID_PRODUCT_FROM_DATABASE=82540EM Gigabit Ethernet Controller - -pci:v00008086d0000100Esv00001014sd00000265* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Connection - -pci:v00008086d0000100Esv00001014sd00000267* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Connection - -pci:v00008086d0000100Esv00001014sd0000026A* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Connection - -pci:v00008086d0000100Esv00001028sd0000002E* - ID_PRODUCT_FROM_DATABASE=Optiplex GX260 - -pci:v00008086d0000100Esv00001028sd00000134* - ID_PRODUCT_FROM_DATABASE=PowerEdge 600SC - -pci:v00008086d0000100Esv00001028sd00000151* - ID_PRODUCT_FROM_DATABASE=Optiplex GX270 - -pci:v00008086d0000100Esv0000107Bsd00008920* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Desktop Adapter - -pci:v00008086d0000100Esv00008086sd0000001E* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Desktop Adapter - -pci:v00008086d0000100Esv00008086sd0000002E* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Desktop Adapter - -pci:v00008086d0000100Esv00008086sd00001376* - ID_PRODUCT_FROM_DATABASE=PRO/1000 GT Desktop Adapter - -pci:v00008086d0000100Esv00008086sd00001476* - ID_PRODUCT_FROM_DATABASE=PRO/1000 GT Desktop Adapter - -pci:v00008086d0000100F* - ID_PRODUCT_FROM_DATABASE=82545EM Gigabit Ethernet Controller (Copper) - -pci:v00008086d0000100Fsv00001014sd00000269* - ID_PRODUCT_FROM_DATABASE=iSeries 1000/100/10 Ethernet Adapter - -pci:v00008086d0000100Fsv00001014sd0000028E* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Connection - -pci:v00008086d0000100Fsv000015ADsd00000750* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Single Port Adapter - -pci:v00008086d0000100Fsv00008086sd00001000* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Connection - -pci:v00008086d0000100Fsv00008086sd00001001* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Server Adapter - -pci:v00008086d00001010* - ID_PRODUCT_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Copper) - -pci:v00008086d00001010sv00000E11sd000000DB* - ID_PRODUCT_FROM_DATABASE=NC7170 Gigabit Server Adapter - -pci:v00008086d00001010sv00001014sd0000027C* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Dual Port Network Adapter - -pci:v00008086d00001010sv000015ADsd00000760* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Dual Port Adapter - -pci:v00008086d00001010sv000018FBsd00007872* - ID_PRODUCT_FROM_DATABASE=RESlink-X - -pci:v00008086d00001010sv00001FC1sd00000026* - ID_PRODUCT_FROM_DATABASE=Niagara 2260 Bypass Card - -pci:v00008086d00001010sv00004C53sd00001080* - ID_PRODUCT_FROM_DATABASE=CT8 mainboard - -pci:v00008086d00001010sv00004C53sd000010A0* - ID_PRODUCT_FROM_DATABASE=CA3/CR3 mainboard - -pci:v00008086d00001010sv00008086sd00001011* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Dual Port Server Adapter - -pci:v00008086d00001010sv00008086sd00001012* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Dual Port Server Adapter - -pci:v00008086d00001010sv00008086sd0000101A* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Dual Port Network Connection - -pci:v00008086d00001010sv00008086sd00003424* - ID_PRODUCT_FROM_DATABASE=SE7501HG2 Mainboard - -pci:v00008086d00001011* - ID_PRODUCT_FROM_DATABASE=82545EM Gigabit Ethernet Controller (Fiber) - -pci:v00008086d00001011sv00001014sd00000268* - ID_PRODUCT_FROM_DATABASE=iSeries Gigabit Ethernet Adapter - -pci:v00008086d00001011sv00008086sd00001002* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MF Server Adapter - -pci:v00008086d00001011sv00008086sd00001003* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MF Server Adapter (LX) - -pci:v00008086d00001012* - ID_PRODUCT_FROM_DATABASE=82546EB Gigabit Ethernet Controller (Fiber) - -pci:v00008086d00001012sv00000E11sd000000DC* - ID_PRODUCT_FROM_DATABASE=NC6170 Gigabit Server Adapter - -pci:v00008086d00001012sv00008086sd00001012* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MF Dual Port Server Adapter - -pci:v00008086d00001013* - ID_PRODUCT_FROM_DATABASE=82541EI Gigabit Ethernet Controller - -pci:v00008086d00001013sv00008086sd00000013* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Connection - -pci:v00008086d00001013sv00008086sd00001013* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Connection - -pci:v00008086d00001013sv00008086sd00001113* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Desktop Adapter - -pci:v00008086d00001014* - ID_PRODUCT_FROM_DATABASE=82541ER Gigabit Ethernet Controller - -pci:v00008086d00001014sv00008086sd00000014* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Desktop Connection - -pci:v00008086d00001014sv00008086sd00001014* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Connection - -pci:v00008086d00001015* - ID_PRODUCT_FROM_DATABASE=82540EM Gigabit Ethernet Controller (LOM) - -pci:v00008086d00001015sv00008086sd00001015* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Mobile Connection - -pci:v00008086d00001016* - ID_PRODUCT_FROM_DATABASE=82540EP Gigabit Ethernet Controller (Mobile) - -pci:v00008086d00001016sv00001014sd0000052C* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Mobile Connection - -pci:v00008086d00001016sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Mobile Connection - -pci:v00008086d00001016sv00008086sd00001016* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Mobile Connection - -pci:v00008086d00001017* - ID_PRODUCT_FROM_DATABASE=82540EP Gigabit Ethernet Controller - -pci:v00008086d00001017sv00008086sd00001017* - ID_PRODUCT_FROM_DATABASE=PR0/1000 MT Desktop Connection - -pci:v00008086d00001018* - ID_PRODUCT_FROM_DATABASE=82541EI Gigabit Ethernet Controller - -pci:v00008086d00001018sv00008086sd00001018* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Mobile Connection - -pci:v00008086d00001019* - ID_PRODUCT_FROM_DATABASE=82547EI Gigabit Ethernet Controller - -pci:v00008086d00001019sv00001458sd00001019* - ID_PRODUCT_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) - -pci:v00008086d00001019sv00001458sd0000E000* - ID_PRODUCT_FROM_DATABASE=Intel Gigabit Ethernet (Kenai II) - -pci:v00008086d00001019sv00008086sd00001019* - ID_PRODUCT_FROM_DATABASE=PRO/1000 CT Desktop Connection - -pci:v00008086d00001019sv00008086sd0000301F* - ID_PRODUCT_FROM_DATABASE=D865PERL mainboard - -pci:v00008086d00001019sv00008086sd00003025* - ID_PRODUCT_FROM_DATABASE=D875PBZ motherboard - -pci:v00008086d00001019sv00008086sd0000302C* - ID_PRODUCT_FROM_DATABASE=Intel 82865G Mainboard (D865GBF) - -pci:v00008086d00001019sv00008086sd00003427* - ID_PRODUCT_FROM_DATABASE=S875WP1-E mainboard - -pci:v00008086d0000101A* - ID_PRODUCT_FROM_DATABASE=82547EI Gigabit Ethernet Controller (Mobile) - -pci:v00008086d0000101Asv00008086sd0000101A* - ID_PRODUCT_FROM_DATABASE=PRO/1000 CT Mobile Connection - -pci:v00008086d0000101D* - ID_PRODUCT_FROM_DATABASE=82546EB Gigabit Ethernet Controller - -pci:v00008086d0000101Dsv00008086sd00001000* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Quad Port Server Adapter - -pci:v00008086d0000101E* - ID_PRODUCT_FROM_DATABASE=82540EP Gigabit Ethernet Controller (Mobile) - -pci:v00008086d0000101Esv00001014sd00000549* - ID_PRODUCT_FROM_DATABASE=Thinkpad - -pci:v00008086d0000101Esv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Mobile Connection - -pci:v00008086d0000101Esv00008086sd0000101E* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Mobile Connection - -pci:v00008086d00001026* - ID_PRODUCT_FROM_DATABASE=82545GM Gigabit Ethernet Controller - -pci:v00008086d00001026sv00001028sd00000169* - ID_PRODUCT_FROM_DATABASE=Precision 470 - -pci:v00008086d00001026sv00008086sd00001000* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Server Connection - -pci:v00008086d00001026sv00008086sd00001001* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Server Adapter - -pci:v00008086d00001026sv00008086sd00001002* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Server Adapter - -pci:v00008086d00001026sv00008086sd00001003* - ID_PRODUCT_FROM_DATABASE=PRO/1000 GT Server Adapter - -pci:v00008086d00001026sv00008086sd00001026* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Server Connection - -pci:v00008086d00001027* - ID_PRODUCT_FROM_DATABASE=82545GM Gigabit Ethernet Controller - -pci:v00008086d00001027sv0000103Csd00003103* - ID_PRODUCT_FROM_DATABASE=NC310F PCI-X Gigabit Server Adapter - -pci:v00008086d00001027sv00008086sd00001001* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MF Server Adapter(LX) - -pci:v00008086d00001027sv00008086sd00001002* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MF Server Adapter(LX) - -pci:v00008086d00001027sv00008086sd00001003* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MF Server Adapter(LX) - -pci:v00008086d00001027sv00008086sd00001027* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MF Server Adapter - -pci:v00008086d00001028* - ID_PRODUCT_FROM_DATABASE=82545GM Gigabit Ethernet Controller - -pci:v00008086d00001028sv00008086sd00001028* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MB Server Connection - -pci:v00008086d00001029* - ID_PRODUCT_FROM_DATABASE=82559 Ethernet Controller - -pci:v00008086d00001030* - ID_PRODUCT_FROM_DATABASE=82559 InBusiness 10/100 - -pci:v00008086d00001031* - ID_PRODUCT_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE (LOM) Ethernet Controller - -pci:v00008086d00001031sv00001014sd00000209* - ID_PRODUCT_FROM_DATABASE=ThinkPad A/T/X Series - -pci:v00008086d00001031sv0000104Dsd000080E7* - ID_PRODUCT_FROM_DATABASE=Vaio PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - -pci:v00008086d00001031sv0000104Dsd0000813C* - ID_PRODUCT_FROM_DATABASE=Vaio PCG-GRV616G - -pci:v00008086d00001031sv0000107Bsd00005350* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00001031sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00001031sv0000144Dsd0000C000* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00001031sv0000144Dsd0000C001* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00001031sv0000144Dsd0000C003* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00001031sv0000144Dsd0000C006* - ID_PRODUCT_FROM_DATABASE=vpr Matrix 170B4 - -pci:v00008086d00001032* - ID_PRODUCT_FROM_DATABASE=82801CAM (ICH3) PRO/100 VE Ethernet Controller - -pci:v00008086d00001033* - ID_PRODUCT_FROM_DATABASE=82801CAM (ICH3) PRO/100 VM (LOM) Ethernet Controller - -pci:v00008086d00001034* - ID_PRODUCT_FROM_DATABASE=82801CAM (ICH3) PRO/100 VM Ethernet Controller - -pci:v00008086d00001035* - ID_PRODUCT_FROM_DATABASE=82801CAM (ICH3)/82562EH (LOM) Ethernet Controller - -pci:v00008086d00001036* - ID_PRODUCT_FROM_DATABASE=82801CAM (ICH3) 82562EH Ethernet Controller - -pci:v00008086d00001037* - ID_PRODUCT_FROM_DATABASE=82801CAM (ICH3) Chipset Ethernet Controller - -pci:v00008086d00001038* - ID_PRODUCT_FROM_DATABASE=82801CAM (ICH3) PRO/100 VM (KM) Ethernet Controller - -pci:v00008086d00001038sv00000E11sd00000098* - ID_PRODUCT_FROM_DATABASE=Evo N600c - -pci:v00008086d00001039* - ID_PRODUCT_FROM_DATABASE=82801DB PRO/100 VE (LOM) Ethernet Controller - -pci:v00008086d00001039sv00001014sd00000267* - ID_PRODUCT_FROM_DATABASE=NetVista A30p - -pci:v00008086d00001039sv0000114Asd00000582* - ID_PRODUCT_FROM_DATABASE=PC8 onboard ethernet ETH1 - -pci:v00008086d0000103A* - ID_PRODUCT_FROM_DATABASE=82801DB PRO/100 VE (CNR) Ethernet Controller - -pci:v00008086d0000103B* - ID_PRODUCT_FROM_DATABASE=82801DB PRO/100 VM (LOM) Ethernet Controller - -pci:v00008086d0000103C* - ID_PRODUCT_FROM_DATABASE=82801DB PRO/100 VM (CNR) Ethernet Controller - -pci:v00008086d0000103D* - ID_PRODUCT_FROM_DATABASE=82801DB PRO/100 VE (MOB) Ethernet Controller - -pci:v00008086d0000103Dsv00001014sd00000522* - ID_PRODUCT_FROM_DATABASE=ThinkPad R40 - -pci:v00008086d0000103Dsv00001028sd00002002* - ID_PRODUCT_FROM_DATABASE=Latitude D500 - -pci:v00008086d0000103Dsv00008086sd0000103D* - ID_PRODUCT_FROM_DATABASE=82562EZ 10/100 Ethernet Controller - -pci:v00008086d0000103E* - ID_PRODUCT_FROM_DATABASE=82801DB PRO/100 VM (MOB) Ethernet Controller - -pci:v00008086d00001040* - ID_PRODUCT_FROM_DATABASE=536EP Data Fax Modem - -pci:v00008086d00001040sv000016BEsd00001040* - ID_PRODUCT_FROM_DATABASE=V.9X DSP Data Fax Modem - -pci:v00008086d00001043* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless LAN 2100 3B Mini PCI Adapter - -pci:v00008086d00001043sv0000103Csd000008B0* - ID_PRODUCT_FROM_DATABASE=tc1100 tablet - -pci:v00008086d00001043sv00008086sd00002522* - ID_PRODUCT_FROM_DATABASE=Samsung X10/P30 integrated WLAN - -pci:v00008086d00001043sv00008086sd00002527* - ID_PRODUCT_FROM_DATABASE=MIM2000/Centrino - -pci:v00008086d00001043sv00008086sd00002561* - ID_PRODUCT_FROM_DATABASE=Dell Latitude D800 - -pci:v00008086d00001043sv00008086sd00002581* - ID_PRODUCT_FROM_DATABASE=Toshiba Satellite M10 - -pci:v00008086d00001048* - ID_PRODUCT_FROM_DATABASE=82597EX 10GbE Ethernet Controller - -pci:v00008086d00001048sv00008086sd0000A01F* - ID_PRODUCT_FROM_DATABASE=PRO/10GbE LR Server Adapter - -pci:v00008086d00001048sv00008086sd0000A11F* - ID_PRODUCT_FROM_DATABASE=PRO/10GbE LR Server Adapter - -pci:v00008086d00001049* - ID_PRODUCT_FROM_DATABASE=82566MM Gigabit Network Connection - -pci:v00008086d00001049sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00001049sv000017AAsd000020B9* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61/R61 - -pci:v00008086d0000104A* - ID_PRODUCT_FROM_DATABASE=82566DM Gigabit Network Connection - -pci:v00008086d0000104B* - ID_PRODUCT_FROM_DATABASE=82566DC Gigabit Network Connection - -pci:v00008086d0000104C* - ID_PRODUCT_FROM_DATABASE=82562V 10/100 Network Connection - -pci:v00008086d0000104D* - ID_PRODUCT_FROM_DATABASE=82566MC Gigabit Network Connection - -pci:v00008086d00001050* - ID_PRODUCT_FROM_DATABASE=82562EZ 10/100 Ethernet Controller - -pci:v00008086d00001050sv00001028sd0000019D* - ID_PRODUCT_FROM_DATABASE=Dimension 3000 - -pci:v00008086d00001050sv00001462sd0000728C* - ID_PRODUCT_FROM_DATABASE=865PE Neo2 (MS-6728) - -pci:v00008086d00001050sv00001462sd0000758C* - ID_PRODUCT_FROM_DATABASE=MS-6758 (875P Neo) - -pci:v00008086d00001050sv00008086sd00003020* - ID_PRODUCT_FROM_DATABASE=D865PERL mainboard - -pci:v00008086d00001050sv00008086sd0000302F* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GBF - -pci:v00008086d00001050sv00008086sd00003427* - ID_PRODUCT_FROM_DATABASE=S875WP1-E mainboard - -pci:v00008086d00001051* - ID_PRODUCT_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) integrated LAN Controller - -pci:v00008086d00001052* - ID_PRODUCT_FROM_DATABASE=PRO/100 VM Network Connection - -pci:v00008086d00001053* - ID_PRODUCT_FROM_DATABASE=PRO/100 VM Network Connection - -pci:v00008086d00001054* - ID_PRODUCT_FROM_DATABASE=PRO/100 VE Network Connection - -pci:v00008086d00001055* - ID_PRODUCT_FROM_DATABASE=PRO/100 VM Network Connection - -pci:v00008086d00001056* - ID_PRODUCT_FROM_DATABASE=PRO/100 VE Network Connection - -pci:v00008086d00001057* - ID_PRODUCT_FROM_DATABASE=PRO/100 VE Network Connection - -pci:v00008086d00001059* - ID_PRODUCT_FROM_DATABASE=82551QM Ethernet Controller - -pci:v00008086d0000105B* - ID_PRODUCT_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Copper) - -pci:v00008086d0000105E* - ID_PRODUCT_FROM_DATABASE=82571EB Gigabit Ethernet Controller - -pci:v00008086d0000105Esv0000103Csd00007044* - ID_PRODUCT_FROM_DATABASE=NC360T PCI Express Dual Port Gigabit Server Adapter - -pci:v00008086d0000105Esv0000103Csd0000704E* - ID_PRODUCT_FROM_DATABASE=Dual Port 1000Base-T (PCIe) [AD337A] - -pci:v00008086d0000105Esv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d0000105Esv00001775sd00006003* - ID_PRODUCT_FROM_DATABASE=Telum GE-QT - -pci:v00008086d0000105Esv00008086sd0000005E* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PT Dual Port Server Connection - -pci:v00008086d0000105Esv00008086sd0000105E* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PT Dual Port Network Connection - -pci:v00008086d0000105Esv00008086sd000010D5* - ID_PRODUCT_FROM_DATABASE=82571PT Gigabit PT Quad Port Server ExpressModule - -pci:v00008086d0000105Esv00008086sd0000115E* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PT Dual Port Server Adapter - -pci:v00008086d0000105Esv00008086sd0000125E* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PT Dual Port Server Adapter - -pci:v00008086d0000105Esv00008086sd0000135E* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PT Dual Port Server Adapter - -pci:v00008086d0000105F* - ID_PRODUCT_FROM_DATABASE=82571EB Gigabit Ethernet Controller - -pci:v00008086d0000105Fsv0000103Csd0000704F* - ID_PRODUCT_FROM_DATABASE=Dual Port 1000Base-SX (PCIe) [AD338A] - -pci:v00008086d0000105Fsv00008086sd0000005A* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PF Dual Port Server Adapter - -pci:v00008086d0000105Fsv00008086sd0000115F* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PF Dual Port Server Adapter - -pci:v00008086d0000105Fsv00008086sd0000125F* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PF Dual Port Server Adapter - -pci:v00008086d0000105Fsv00008086sd0000135F* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PF Dual Port Server Adapter - -pci:v00008086d00001060* - ID_PRODUCT_FROM_DATABASE=82571EB Gigabit Ethernet Controller - -pci:v00008086d00001060sv00008086sd00000060* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PB Dual Port Server Connection - -pci:v00008086d00001060sv00008086sd00001060* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PB Dual Port Server Connection - -pci:v00008086d00001064* - ID_PRODUCT_FROM_DATABASE=82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller - -pci:v00008086d00001064sv00001043sd000080F8* - ID_PRODUCT_FROM_DATABASE=P5GD1-VW Mainboard - -pci:v00008086d00001065* - ID_PRODUCT_FROM_DATABASE=82562ET/EZ/GT/GZ - PRO/100 VE Ethernet Controller - -pci:v00008086d00001066* - ID_PRODUCT_FROM_DATABASE=82562 EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller - -pci:v00008086d00001067* - ID_PRODUCT_FROM_DATABASE=82562 EM/EX/GX - PRO/100 VM Ethernet Controller - -pci:v00008086d00001068* - ID_PRODUCT_FROM_DATABASE=82562ET/EZ/GT/GZ - PRO/100 VE (LOM) Ethernet Controller Mobile - -pci:v00008086d00001069* - ID_PRODUCT_FROM_DATABASE=82562EM/EX/GX - PRO/100 VM (LOM) Ethernet Controller Mobile - -pci:v00008086d0000106A* - ID_PRODUCT_FROM_DATABASE=82562G - PRO/100 VE (LOM) Ethernet Controller - -pci:v00008086d0000106B* - ID_PRODUCT_FROM_DATABASE=82562G - PRO/100 VE Ethernet Controller Mobile - -pci:v00008086d00001075* - ID_PRODUCT_FROM_DATABASE=82547GI Gigabit Ethernet Controller - -pci:v00008086d00001075sv00001028sd00000165* - ID_PRODUCT_FROM_DATABASE=PowerEdge 750 - -pci:v00008086d00001075sv00008086sd00000075* - ID_PRODUCT_FROM_DATABASE=PRO/1000 CT Network Connection - -pci:v00008086d00001075sv00008086sd00001075* - ID_PRODUCT_FROM_DATABASE=PRO/1000 CT Network Connection - -pci:v00008086d00001076* - ID_PRODUCT_FROM_DATABASE=82541GI Gigabit Ethernet Controller - -pci:v00008086d00001076sv00001028sd00000165* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Connection - -pci:v00008086d00001076sv00001028sd0000016D* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Connection - -pci:v00008086d00001076sv00001028sd0000019A* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Connection - -pci:v00008086d00001076sv00001028sd0000106D* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Connection - -pci:v00008086d00001076sv00008086sd00000076* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Connection - -pci:v00008086d00001076sv00008086sd00001076* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Connection - -pci:v00008086d00001076sv00008086sd00001176* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Desktop Adapter - -pci:v00008086d00001076sv00008086sd00001276* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Network Adapter - -pci:v00008086d00001077* - ID_PRODUCT_FROM_DATABASE=82541GI Gigabit Ethernet Controller - -pci:v00008086d00001077sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Mobile Connection - -pci:v00008086d00001077sv00008086sd00000077* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Mobile Connection - -pci:v00008086d00001077sv00008086sd00001077* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Mobile Connection - -pci:v00008086d00001078* - ID_PRODUCT_FROM_DATABASE=82541ER Gigabit Ethernet Controller - -pci:v00008086d00001078sv00008086sd00001078* - ID_PRODUCT_FROM_DATABASE=82541ER-based Network Connection - -pci:v00008086d00001079* - ID_PRODUCT_FROM_DATABASE=82546GB Gigabit Ethernet Controller - -pci:v00008086d00001079sv0000103Csd000012A6* - ID_PRODUCT_FROM_DATABASE=Dual Port 1000Base-T [A9900A] - -pci:v00008086d00001079sv0000103Csd000012CF* - ID_PRODUCT_FROM_DATABASE=Core Dual Port 1000Base-T [AB352A] - -pci:v00008086d00001079sv00001775sd000010D0* - ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer Gigabit Ethernet - -pci:v00008086d00001079sv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d00001079sv00001FC1sd00000027* - ID_PRODUCT_FROM_DATABASE=Niagara 2261 Failover NIC - -pci:v00008086d00001079sv00004C53sd00001090* - ID_PRODUCT_FROM_DATABASE=Cx9 / Vx9 mainboard - -pci:v00008086d00001079sv00004C53sd000010B0* - ID_PRODUCT_FROM_DATABASE=CL9 mainboard - -pci:v00008086d00001079sv00008086sd00000079* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Dual Port Network Connection - -pci:v00008086d00001079sv00008086sd00001079* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Dual Port Network Connection - -pci:v00008086d00001079sv00008086sd00001179* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Dual Port Server Adapter - -pci:v00008086d00001079sv00008086sd0000117A* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MT Dual Port Server Adapter - -pci:v00008086d0000107A* - ID_PRODUCT_FROM_DATABASE=82546GB Gigabit Ethernet Controller - -pci:v00008086d0000107Asv0000103Csd000012A8* - ID_PRODUCT_FROM_DATABASE=Dual Port 1000base-SX [A9899A] - -pci:v00008086d0000107Asv00008086sd0000107A* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MF Dual Port Server Adapter - -pci:v00008086d0000107Asv00008086sd0000127A* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MF Dual Port Server Adapter - -pci:v00008086d0000107B* - ID_PRODUCT_FROM_DATABASE=82546GB Gigabit Ethernet Controller - -pci:v00008086d0000107Bsv00008086sd0000007B* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MB Dual Port Server Connection - -pci:v00008086d0000107Bsv00008086sd0000107B* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MB Dual Port Server Connection - -pci:v00008086d0000107C* - ID_PRODUCT_FROM_DATABASE=82541PI Gigabit Ethernet Controller - -pci:v00008086d0000107Csv00008086sd00001376* - ID_PRODUCT_FROM_DATABASE=PRO/1000 GT Desktop Adapter - -pci:v00008086d0000107Csv00008086sd00001476* - ID_PRODUCT_FROM_DATABASE=PRO/1000 GT Desktop Adapter - -pci:v00008086d0000107D* - ID_PRODUCT_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Copper) - -pci:v00008086d0000107Dsv00008086sd00001082* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PT Server Adapter - -pci:v00008086d0000107Dsv00008086sd00001084* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PT Server Adapter - -pci:v00008086d0000107Dsv00008086sd00001092* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PT Server Adapter - -pci:v00008086d0000107E* - ID_PRODUCT_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Fiber) - -pci:v00008086d0000107Esv00008086sd00001084* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PF Server Adapter - -pci:v00008086d0000107Esv00008086sd00001085* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PF Server Adapter - -pci:v00008086d0000107Esv00008086sd00001094* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PF Server Adapter - -pci:v00008086d0000107F* - ID_PRODUCT_FROM_DATABASE=82572EI Gigabit Ethernet Controller - -pci:v00008086d00001080* - ID_PRODUCT_FROM_DATABASE=FA82537EP 56K V.92 Data/Fax Modem PCI - -pci:v00008086d00001081* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB LAN Controller Copper - -pci:v00008086d00001082* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB LAN Controller fiber - -pci:v00008086d00001083* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB LAN Controller SERDES - -pci:v00008086d00001084* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB IDE Redirection - -pci:v00008086d00001085* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB Serial Port Redirection - -pci:v00008086d00001086* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB IPMI/KCS0 - -pci:v00008086d00001087* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB UHCI Redirection - -pci:v00008086d00001089* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB BT - -pci:v00008086d0000108A* - ID_PRODUCT_FROM_DATABASE=82546GB Gigabit Ethernet Controller - -pci:v00008086d0000108Asv00008086sd0000108A* - ID_PRODUCT_FROM_DATABASE=PRO/1000 P Dual Port Server Adapter - -pci:v00008086d0000108Asv00008086sd0000118A* - ID_PRODUCT_FROM_DATABASE=PRO/1000 P Dual Port Server Adapter - -pci:v00008086d0000108B* - ID_PRODUCT_FROM_DATABASE=82573V Gigabit Ethernet Controller (Copper) - -pci:v00008086d0000108Bsv00001462sd0000176C* - ID_PRODUCT_FROM_DATABASE=on board on MSI 945P - NEO (MS-7176) - -pci:v00008086d0000108C* - ID_PRODUCT_FROM_DATABASE=82573E Gigabit Ethernet Controller (Copper) - -pci:v00008086d0000108E* - ID_PRODUCT_FROM_DATABASE=82573E KCS (Active Management) - -pci:v00008086d0000108F* - ID_PRODUCT_FROM_DATABASE=Active Management Technology - SOL - -pci:v00008086d00001091* - ID_PRODUCT_FROM_DATABASE=PRO/100 VM Network Connection - -pci:v00008086d00001092* - ID_PRODUCT_FROM_DATABASE=PRO/100 VE Network Connection - -pci:v00008086d00001093* - ID_PRODUCT_FROM_DATABASE=PRO/100 VM Network Connection - -pci:v00008086d00001094* - ID_PRODUCT_FROM_DATABASE=PRO/100 VE Network Connection - -pci:v00008086d00001095* - ID_PRODUCT_FROM_DATABASE=PRO/100 VE Network Connection - -pci:v00008086d00001096* - ID_PRODUCT_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper) - -pci:v00008086d00001096sv000015D9sd00001096* - ID_PRODUCT_FROM_DATABASE=Motherboard - -pci:v00008086d00001096sv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d00001096sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board - -pci:v00008086d00001097* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB DPT LAN Controller (Fiber) - -pci:v00008086d00001098* - ID_PRODUCT_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Serdes) - -pci:v00008086d00001099* - ID_PRODUCT_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Copper) - -pci:v00008086d00001099sv00008086sd00001099* - ID_PRODUCT_FROM_DATABASE=PRO/1000 GT Quad Port Server Adapter - -pci:v00008086d0000109A* - ID_PRODUCT_FROM_DATABASE=82573L Gigabit Ethernet Controller - -pci:v00008086d0000109Asv00001179sd0000FF10* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PL - -pci:v00008086d0000109Asv000017AAsd00002001* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60 - -pci:v00008086d0000109Asv000017AAsd0000207E* - ID_PRODUCT_FROM_DATABASE=ThinkPad X60s - -pci:v00008086d0000109Asv00008086sd0000109A* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PL Network Connection - -pci:v00008086d0000109Asv00008086sd0000309C* - ID_PRODUCT_FROM_DATABASE=Desktop Board D945GTP - -pci:v00008086d0000109Asv00008086sd000030A5* - ID_PRODUCT_FROM_DATABASE=Desktop Board D975XBX - -pci:v00008086d0000109B* - ID_PRODUCT_FROM_DATABASE=82546GB PRO/1000 GF Quad Port Server Adapter - -pci:v00008086d0000109E* - ID_PRODUCT_FROM_DATABASE=82597EX 10GbE Ethernet Controller - -pci:v00008086d0000109Esv00008086sd0000A01F* - ID_PRODUCT_FROM_DATABASE=PRO/10GbE CX4 Server Adapter - -pci:v00008086d0000109Esv00008086sd0000A11F* - ID_PRODUCT_FROM_DATABASE=PRO/10GbE CX4 Server Adapter - -pci:v00008086d000010A0* - ID_PRODUCT_FROM_DATABASE=82571EB PRO/1000 AT Quad Port Bypass Adapter - -pci:v00008086d000010A1* - ID_PRODUCT_FROM_DATABASE=82571EB PRO/1000 AF Quad Port Bypass Adapter - -pci:v00008086d000010A4* - ID_PRODUCT_FROM_DATABASE=82571EB Gigabit Ethernet Controller - -pci:v00008086d000010A4sv00008086sd000010A4* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PT Quad Port Server Adapter - -pci:v00008086d000010A4sv00008086sd000011A4* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PT Quad Port Server Adapter - -pci:v00008086d000010A5* - ID_PRODUCT_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Fiber) - -pci:v00008086d000010A5sv00008086sd000010A5* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PF Quad Port Server Adapter - -pci:v00008086d000010A5sv00008086sd000010A6* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PF Quad Port Server Adapter - -pci:v00008086d000010A6* - ID_PRODUCT_FROM_DATABASE=82599EB 10-Gigabit Dummy Function - -pci:v00008086d000010A7* - ID_PRODUCT_FROM_DATABASE=82575EB Gigabit Network Connection - -pci:v00008086d000010A7sv00008086sd000010A8* - ID_PRODUCT_FROM_DATABASE=82575EB Gigabit Riser Card - -pci:v00008086d000010A9* - ID_PRODUCT_FROM_DATABASE=82575EB Gigabit Backplane Connection - -pci:v00008086d000010B0* - ID_PRODUCT_FROM_DATABASE=82573L PRO/1000 PL Network Connection - -pci:v00008086d000010B2* - ID_PRODUCT_FROM_DATABASE=82573V PRO/1000 PM Network Connection - -pci:v00008086d000010B3* - ID_PRODUCT_FROM_DATABASE=82573E PRO/1000 PM Network Connection - -pci:v00008086d000010B4* - ID_PRODUCT_FROM_DATABASE=82573L PRO/1000 PL Network Connection - -pci:v00008086d000010B5* - ID_PRODUCT_FROM_DATABASE=82546GB Gigabit Ethernet Controller (Copper) - -pci:v00008086d000010B5sv0000103Csd00003109* - ID_PRODUCT_FROM_DATABASE=NC340T PCI-X Quad-port Gigabit Server Adapter - -pci:v00008086d000010B5sv00008086sd00001099* - ID_PRODUCT_FROM_DATABASE=PRO/1000 GT Quad Port Server Adapter - -pci:v00008086d000010B5sv00008086sd00001199* - ID_PRODUCT_FROM_DATABASE=PRO/1000 GT Quad Port Server Adapter - -pci:v00008086d000010B6* - ID_PRODUCT_FROM_DATABASE=82598 10GbE PCI-Express Ethernet Controller - -pci:v00008086d000010B9* - ID_PRODUCT_FROM_DATABASE=82572EI Gigabit Ethernet Controller (Copper) - -pci:v00008086d000010B9sv0000103Csd0000704A* - ID_PRODUCT_FROM_DATABASE=HP 110T PCIe Gigabit Server Adapter - -pci:v00008086d000010B9sv00008086sd00001083* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PT Desktop Adapter - -pci:v00008086d000010B9sv00008086sd00001093* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PT Desktop Adapter - -pci:v00008086d000010BA* - ID_PRODUCT_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Copper) - -pci:v00008086d000010BB* - ID_PRODUCT_FROM_DATABASE=80003ES2LAN Gigabit Ethernet Controller (Serdes) - -pci:v00008086d000010BC* - ID_PRODUCT_FROM_DATABASE=82571EB Gigabit Ethernet Controller (Copper) - -pci:v00008086d000010BCsv0000103Csd0000704B* - ID_PRODUCT_FROM_DATABASE=NC364T PCI Express Quad Port Gigabit Server Adapter - -pci:v00008086d000010BCsv0000108Esd000011BC* - ID_PRODUCT_FROM_DATABASE=x4 PCI-Express Quad Gigabit Ethernet UTP Low Profile Adapter - -pci:v00008086d000010BCsv00008086sd000010BC* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PT Quad Port LP Server Adapter - -pci:v00008086d000010BCsv00008086sd000011BC* - ID_PRODUCT_FROM_DATABASE=PRO/1000 PT Quad Port LP Server Adapter - -pci:v00008086d000010BD* - ID_PRODUCT_FROM_DATABASE=82566DM-2 Gigabit Network Connection - -pci:v00008086d000010BDsv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=OptiPlex 755 - -pci:v00008086d000010BF* - ID_PRODUCT_FROM_DATABASE=82567LF Gigabit Network Connection - -pci:v00008086d000010C0* - ID_PRODUCT_FROM_DATABASE=82562V-2 10/100 Network Connection - -pci:v00008086d000010C0sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d000010C2* - ID_PRODUCT_FROM_DATABASE=82562G-2 10/100 Network Connection - -pci:v00008086d000010C3* - ID_PRODUCT_FROM_DATABASE=82562GT-2 10/100 Network Connection - -pci:v00008086d000010C4* - ID_PRODUCT_FROM_DATABASE=82562GT 10/100 Network Connection - -pci:v00008086d000010C5* - ID_PRODUCT_FROM_DATABASE=82562G 10/100 Network Connection - -pci:v00008086d000010C6* - ID_PRODUCT_FROM_DATABASE=82598EB 10-Gigabit AF Dual Port Network Connection - -pci:v00008086d000010C6sv00008086sd0000A05F* - ID_PRODUCT_FROM_DATABASE=10-Gigabit XF SR Dual Port Server Adapter - -pci:v00008086d000010C6sv00008086sd0000A15F* - ID_PRODUCT_FROM_DATABASE=10-Gigabit XF SR Dual Port Server Adapter - -pci:v00008086d000010C7* - ID_PRODUCT_FROM_DATABASE=82598EB 10-Gigabit AF Network Connection - -pci:v00008086d000010C7sv00001014sd0000037F* - ID_PRODUCT_FROM_DATABASE=10-Gigabit XF SR Server Adapter - -pci:v00008086d000010C7sv00001014sd00000380* - ID_PRODUCT_FROM_DATABASE=10-Gigabit XF LR Server Adapter - -pci:v00008086d000010C7sv00008086sd0000A05F* - ID_PRODUCT_FROM_DATABASE=10-Gigabit XF SR Server Adapter - -pci:v00008086d000010C7sv00008086sd0000A15F* - ID_PRODUCT_FROM_DATABASE=10-Gigabit XF SR Server Adapter - -pci:v00008086d000010C7sv00008086sd0000A16F* - ID_PRODUCT_FROM_DATABASE=10-Gigabit XF SR Server Adapter - -pci:v00008086d000010C8* - ID_PRODUCT_FROM_DATABASE=82598EB 10-Gigabit AT Network Connection - -pci:v00008086d000010C8sv00008086sd0000A10C* - ID_PRODUCT_FROM_DATABASE=10-Gigabit AT Server Adapter - -pci:v00008086d000010C8sv00008086sd0000A11C* - ID_PRODUCT_FROM_DATABASE=10-Gigabit AT Server Adapter - -pci:v00008086d000010C8sv00008086sd0000A12C* - ID_PRODUCT_FROM_DATABASE=10-Gigabit AT Server Adapter - -pci:v00008086d000010C9* - ID_PRODUCT_FROM_DATABASE=82576 Gigabit Network Connection - -pci:v00008086d000010C9sv0000103Csd000031EF* - ID_PRODUCT_FROM_DATABASE=NC362i Integrated Dual port Gigabit Server Adapter - -pci:v00008086d000010C9sv0000103Csd0000323F* - ID_PRODUCT_FROM_DATABASE=NC362i Integrated Dual port Gigabit Server Adapter - -pci:v00008086d000010C9sv000010A9sd00008028* - ID_PRODUCT_FROM_DATABASE=UV-BaseIO dual-port GbE - -pci:v00008086d000010C9sv000013A3sd00000037* - ID_PRODUCT_FROM_DATABASE=DS4100 Secure Multi-Gigabit Server Adapter with Compression - -pci:v00008086d000010C9sv000015D9sd0000A811* - ID_PRODUCT_FROM_DATABASE=H8DGU - -pci:v00008086d000010C9sv00008086sd0000A01C* - ID_PRODUCT_FROM_DATABASE=Gigabit ET Dual Port Server Adapter - -pci:v00008086d000010C9sv00008086sd0000A03C* - ID_PRODUCT_FROM_DATABASE=Gigabit ET Dual Port Server Adapter - -pci:v00008086d000010C9sv00008086sd0000A04C* - ID_PRODUCT_FROM_DATABASE=Gigabit ET Dual Port Server Adapter - -pci:v00008086d000010CA* - ID_PRODUCT_FROM_DATABASE=82576 Virtual Function - -pci:v00008086d000010CB* - ID_PRODUCT_FROM_DATABASE=82567V Gigabit Network Connection - -pci:v00008086d000010CC* - ID_PRODUCT_FROM_DATABASE=82567LM-2 Gigabit Network Connection - -pci:v00008086d000010CD* - ID_PRODUCT_FROM_DATABASE=82567LF-2 Gigabit Network Connection - -pci:v00008086d000010CE* - ID_PRODUCT_FROM_DATABASE=82567V-2 Gigabit Network Connection - -pci:v00008086d000010D3* - ID_PRODUCT_FROM_DATABASE=82574L Gigabit Network Connection - -pci:v00008086d000010D3sv0000103Csd00003250* - ID_PRODUCT_FROM_DATABASE=NC112T PCI Express single Port Gigabit Server Adapter - -pci:v00008086d000010D3sv000010A9sd00008029* - ID_PRODUCT_FROM_DATABASE=Prism XL Single Port Gigabit Ethernet - -pci:v00008086d000010D3sv000015D9sd0000060A* - ID_PRODUCT_FROM_DATABASE=X7SPA-H/X7SPA-HF Motherboard - -pci:v00008086d000010D3sv00008086sd00000001* - ID_PRODUCT_FROM_DATABASE=Gigabit CT2 Desktop Adapter - -pci:v00008086d000010D3sv00008086sd0000A01F* - ID_PRODUCT_FROM_DATABASE=Gigabit CT Desktop Adapter - -pci:v00008086d000010D3sv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d000010D3sv0000E4BFsd000050C2* - ID_PRODUCT_FROM_DATABASE=PC2-LIMBO - -pci:v00008086d000010D4* - ID_PRODUCT_FROM_DATABASE=Matrox Concord GE (customized Intel 82574) - -pci:v00008086d000010D5* - ID_PRODUCT_FROM_DATABASE=82571PT Gigabit PT Quad Port Server ExpressModule - -pci:v00008086d000010D6* - ID_PRODUCT_FROM_DATABASE=82575GB Gigabit Network Connection - -pci:v00008086d000010D6sv00008086sd000010D6* - ID_PRODUCT_FROM_DATABASE=Gigabit VT Quad Port Server Adapter - -pci:v00008086d000010D6sv00008086sd0000145A* - ID_PRODUCT_FROM_DATABASE=Gigabit VT Quad Port Server Adapter - -pci:v00008086d000010D6sv00008086sd0000147A* - ID_PRODUCT_FROM_DATABASE=Gigabit VT Quad Port Server Adapter - -pci:v00008086d000010D8* - ID_PRODUCT_FROM_DATABASE=82599EB 10 Gigabit Unprogrammed - -pci:v00008086d000010D9* - ID_PRODUCT_FROM_DATABASE=82571EB Dual Port Gigabit Mezzanine Adapter - -pci:v00008086d000010D9sv0000103Csd00001716* - ID_PRODUCT_FROM_DATABASE=NC360m Dual Port 1GbE BL-c Adapter - -pci:v00008086d000010DA* - ID_PRODUCT_FROM_DATABASE=82571EB Quad Port Gigabit Mezzanine Adapter - -pci:v00008086d000010DAsv0000103Csd00001717* - ID_PRODUCT_FROM_DATABASE=NC364m Quad Port 1GbE BL-c Adapter - -pci:v00008086d000010DB* - ID_PRODUCT_FROM_DATABASE=82598EB 10-Gigabit Dual Port Network Connection - -pci:v00008086d000010DD* - ID_PRODUCT_FROM_DATABASE=82598EB 10-Gigabit AT CX4 Network Connection - -pci:v00008086d000010DE* - ID_PRODUCT_FROM_DATABASE=82567LM-3 Gigabit Network Connection - -pci:v00008086d000010DF* - ID_PRODUCT_FROM_DATABASE=82567LF-3 Gigabit Network Connection - -pci:v00008086d000010E1* - ID_PRODUCT_FROM_DATABASE=82598EB 10-Gigabit AF Dual Port Network Connection - -pci:v00008086d000010E1sv00008086sd0000A15F* - ID_PRODUCT_FROM_DATABASE=10-Gigabit SR Dual Port Express Module - -pci:v00008086d000010E2* - ID_PRODUCT_FROM_DATABASE=82575GB Gigabit Network Connection - -pci:v00008086d000010E2sv00008086sd000010E2* - ID_PRODUCT_FROM_DATABASE=Gigabit VT Quad Port Server Adapter - -pci:v00008086d000010E5* - ID_PRODUCT_FROM_DATABASE=82567LM-4 Gigabit Network Connection - -pci:v00008086d000010E6* - ID_PRODUCT_FROM_DATABASE=82576 Gigabit Network Connection - -pci:v00008086d000010E6sv00008086sd0000A01F* - ID_PRODUCT_FROM_DATABASE=Gigabit EF Dual Port Server Adapter - -pci:v00008086d000010E6sv00008086sd0000A02F* - ID_PRODUCT_FROM_DATABASE=Gigabit EF Dual Port Server Adapter - -pci:v00008086d000010E7* - ID_PRODUCT_FROM_DATABASE=82576 Gigabit Network Connection - -pci:v00008086d000010E7sv0000103Csd000031FF* - ID_PRODUCT_FROM_DATABASE=NC362i Integrated Dual Port BL-c Gigabit Server Adapter - -pci:v00008086d000010E8* - ID_PRODUCT_FROM_DATABASE=82576 Gigabit Network Connection - -pci:v00008086d000010E8sv00008086sd0000A02B* - ID_PRODUCT_FROM_DATABASE=Gigabit ET Quad Port Server Adapter - -pci:v00008086d000010E8sv00008086sd0000A02C* - ID_PRODUCT_FROM_DATABASE=Gigabit ET Quad Port Server Adapter - -pci:v00008086d000010EA* - ID_PRODUCT_FROM_DATABASE=82577LM Gigabit Network Connection - -pci:v00008086d000010EAsv00001028sd0000040A* - ID_PRODUCT_FROM_DATABASE=Latitude E6410 - -pci:v00008086d000010EAsv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d000010EAsv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d000010EB* - ID_PRODUCT_FROM_DATABASE=82577LC Gigabit Network Connection - -pci:v00008086d000010EC* - ID_PRODUCT_FROM_DATABASE=82598EB 10-Gigabit AT CX4 Network Connection - -pci:v00008086d000010ECsv00008086sd0000A01F* - ID_PRODUCT_FROM_DATABASE=10-Gigabit CX4 Dual Port Server Adapter - -pci:v00008086d000010ECsv00008086sd0000A11F* - ID_PRODUCT_FROM_DATABASE=10-Gigabit CX4 Dual Port Server Adapter - -pci:v00008086d000010ED* - ID_PRODUCT_FROM_DATABASE=82599 Ethernet Controller Virtual Function - -pci:v00008086d000010EF* - ID_PRODUCT_FROM_DATABASE=82578DM Gigabit Network Connection - -pci:v00008086d000010EFsv00001028sd000002DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 980 - -pci:v00008086d000010F0* - ID_PRODUCT_FROM_DATABASE=82578DC Gigabit Network Connection - -pci:v00008086d000010F1* - ID_PRODUCT_FROM_DATABASE=82598EB 10-Gigabit AF Dual Port Network Connection - -pci:v00008086d000010F1sv00008086sd0000A20F* - ID_PRODUCT_FROM_DATABASE=10-Gigabit AF DA Dual Port Server Adapter - -pci:v00008086d000010F1sv00008086sd0000A21F* - ID_PRODUCT_FROM_DATABASE=10-Gigabit AF DA Dual Port Server Adapter - -pci:v00008086d000010F4* - ID_PRODUCT_FROM_DATABASE=82598EB 10-Gigabit AF Network Connection - -pci:v00008086d000010F4sv00008086sd0000106F* - ID_PRODUCT_FROM_DATABASE=10-Gigabit XF LR Server Adapter - -pci:v00008086d000010F4sv00008086sd0000A06F* - ID_PRODUCT_FROM_DATABASE=10-Gigabit XF LR Server Adapter - -pci:v00008086d000010F5* - ID_PRODUCT_FROM_DATABASE=82567LM Gigabit Network Connection - -pci:v00008086d000010F6* - ID_PRODUCT_FROM_DATABASE=82574L Gigabit Network Connection - -pci:v00008086d000010F7* - ID_PRODUCT_FROM_DATABASE=82599EB 10-Gigabit KX4 Network Connection - -pci:v00008086d000010F7sv0000108Esd00007B12* - ID_PRODUCT_FROM_DATABASE=Sun Dual 10GbE PCIe 2.0 FEM - -pci:v00008086d000010F7sv00008086sd0000000D* - ID_PRODUCT_FROM_DATABASE=Ethernet Mezzanine Adapter X520-KX4-2 - -pci:v00008086d000010F8* - ID_PRODUCT_FROM_DATABASE=82599EB 10 Gigabit Dual Port Backplane Connection - -pci:v00008086d000010F8sv00001028sd00001F63* - ID_PRODUCT_FROM_DATABASE=10GbE 2P X520k bNDC - -pci:v00008086d000010F8sv0000103Csd000017D2* - ID_PRODUCT_FROM_DATABASE=Ethernet 10Gb 2-port 560M Adapter - -pci:v00008086d000010F8sv0000103Csd000018D0* - ID_PRODUCT_FROM_DATABASE=Ethernet 10Gb 2-port 560FLB Adapter - -pci:v00008086d000010F8sv00008086sd0000000C* - ID_PRODUCT_FROM_DATABASE=Ethernet X520 10GbE Dual Port KX4-KR Mezz - -pci:v00008086d000010F9* - ID_PRODUCT_FROM_DATABASE=82599EB 10 Gigabit CX4 Dual Port Network Connection - -pci:v00008086d000010FB* - ID_PRODUCT_FROM_DATABASE=82599EB 10-Gigabit SFI/SFP+ Network Connection - -pci:v00008086d000010FBsv00001028sd00001F72* - ID_PRODUCT_FROM_DATABASE=Ethernet 10G 4P X520/I350 rNDC - -pci:v00008086d000010FBsv0000103Csd000017D0* - ID_PRODUCT_FROM_DATABASE=Ethernet 10Gb 2-port 560FLR-SFP+ Adapter - -pci:v00008086d000010FBsv0000103Csd000017D2* - ID_PRODUCT_FROM_DATABASE=Ethernet 10Gb 2-port 560M Adapter - -pci:v00008086d000010FBsv0000103Csd000017D3* - ID_PRODUCT_FROM_DATABASE=Ethernet 10Gb 2-port 560SFP+ Adapter - -pci:v00008086d000010FBsv0000103Csd0000211B* - ID_PRODUCT_FROM_DATABASE=Ethernet 10Gb 1-port P560FLR-SFP+ Adapter - -pci:v00008086d000010FBsv0000103Csd00002147* - ID_PRODUCT_FROM_DATABASE=Ethernet 10Gb 1-port 561i Adapter - -pci:v00008086d000010FBsv0000108Esd00007B11* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter X520-2 - -pci:v00008086d000010FBsv00001734sd000011A9* - ID_PRODUCT_FROM_DATABASE=10 Gigabit Dual Port Network Connection - -pci:v00008086d000010FBsv00008086sd00000002* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter X520-DA2 - -pci:v00008086d000010FBsv00008086sd00000003* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter X520-2 - -pci:v00008086d000010FBsv00008086sd00000006* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter X520-1 - -pci:v00008086d000010FBsv00008086sd0000000A* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter X520-1 - -pci:v00008086d000010FBsv00008086sd0000000C* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter X520-2 - -pci:v00008086d000010FBsv00008086sd00007A11* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter X520-2 - -pci:v00008086d000010FBsv00008086sd00007A12* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter X520-2 - -pci:v00008086d000010FC* - ID_PRODUCT_FROM_DATABASE=82599EB 10-Gigabit XAUI/BX4 Network Connection - -pci:v00008086d000010FE* - ID_PRODUCT_FROM_DATABASE=82552 10/100 Network Connection - -pci:v00008086d00001107* - ID_PRODUCT_FROM_DATABASE=PRO/1000 MF Server Adapter (LX) - -pci:v00008086d00001130* - ID_PRODUCT_FROM_DATABASE=82815 815 Chipset Host Bridge and Memory Controller Hub - -pci:v00008086d00001130sv00001025sd00001016* - ID_PRODUCT_FROM_DATABASE=Travelmate 612 TX - -pci:v00008086d00001130sv00001043sd00008027* - ID_PRODUCT_FROM_DATABASE=TUSL2-C Mainboard - -pci:v00008086d00001130sv0000104Dsd000080DF* - ID_PRODUCT_FROM_DATABASE=Vaio PCG-FX403 - -pci:v00008086d00001130sv00008086sd00004532* - ID_PRODUCT_FROM_DATABASE=D815EEA2 mainboard - -pci:v00008086d00001130sv00008086sd00004557* - ID_PRODUCT_FROM_DATABASE=D815EGEW Mainboard - -pci:v00008086d00001131* - ID_PRODUCT_FROM_DATABASE=82815 815 Chipset AGP Bridge - -pci:v00008086d00001132* - ID_PRODUCT_FROM_DATABASE=82815 Chipset Graphics Controller (CGC) - -pci:v00008086d00001132sv00001025sd00001016* - ID_PRODUCT_FROM_DATABASE=Travelmate 612 TX - -pci:v00008086d00001132sv0000103Csd00002001* - ID_PRODUCT_FROM_DATABASE=e-pc 40 - -pci:v00008086d00001132sv0000104Dsd000080DF* - ID_PRODUCT_FROM_DATABASE=Vaio PCG-FX403 - -pci:v00008086d00001132sv00008086sd00004532* - ID_PRODUCT_FROM_DATABASE=D815EEA2 Mainboard - -pci:v00008086d00001132sv00008086sd00004541* - ID_PRODUCT_FROM_DATABASE=D815EEA Motherboard - -pci:v00008086d00001132sv00008086sd00004557* - ID_PRODUCT_FROM_DATABASE=D815EGEW Mainboard - -pci:v00008086d00001161* - ID_PRODUCT_FROM_DATABASE=82806AA PCI64 Hub Advanced Programmable Interrupt Controller - -pci:v00008086d00001161sv00008086sd00001161* - ID_PRODUCT_FROM_DATABASE=82806AA PCI64 Hub APIC - -pci:v00008086d00001162* - ID_PRODUCT_FROM_DATABASE=Xscale 80200 Big Endian Companion Chip - -pci:v00008086d00001200* - ID_PRODUCT_FROM_DATABASE=IXP1200 Network Processor - -pci:v00008086d00001200sv0000172Asd00000000* - ID_PRODUCT_FROM_DATABASE=AEP SSL Accelerator - -pci:v00008086d00001209* - ID_PRODUCT_FROM_DATABASE=8255xER/82551IT Fast Ethernet Controller - -pci:v00008086d00001209sv0000140Bsd00000610* - ID_PRODUCT_FROM_DATABASE=PMC610 quad Ethernet board - -pci:v00008086d00001209sv00004C53sd00001050* - ID_PRODUCT_FROM_DATABASE=CT7 mainboard - -pci:v00008086d00001209sv00004C53sd00001051* - ID_PRODUCT_FROM_DATABASE=CE7 mainboard - -pci:v00008086d00001209sv00004C53sd00001070* - ID_PRODUCT_FROM_DATABASE=PC6 mainboard - -pci:v00008086d00001221* - ID_PRODUCT_FROM_DATABASE=82092AA PCI to PCMCIA Bridge - -pci:v00008086d00001222* - ID_PRODUCT_FROM_DATABASE=82092AA IDE Controller - -pci:v00008086d00001223* - ID_PRODUCT_FROM_DATABASE=SAA7116 - -pci:v00008086d00001225* - ID_PRODUCT_FROM_DATABASE=82452KX/GX [Orion] - -pci:v00008086d00001226* - ID_PRODUCT_FROM_DATABASE=82596 PRO/10 PCI - -pci:v00008086d00001227* - ID_PRODUCT_FROM_DATABASE=82865 EtherExpress PRO/100A - -pci:v00008086d00001228* - ID_PRODUCT_FROM_DATABASE=82556 EtherExpress PRO/100 Smart - -pci:v00008086d00001229* - ID_PRODUCT_FROM_DATABASE=82557/8/9/0/1 Ethernet Pro 100 - -pci:v00008086d00001229sv00000E11sd00003001* - ID_PRODUCT_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN* - -pci:v00008086d00001229sv00000E11sd00003002* - ID_PRODUCT_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN* - -pci:v00008086d00001229sv00000E11sd00003003* - ID_PRODUCT_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN* - -pci:v00008086d00001229sv00000E11sd00003004* - ID_PRODUCT_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN* - -pci:v00008086d00001229sv00000E11sd00003005* - ID_PRODUCT_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN* - -pci:v00008086d00001229sv00000E11sd00003006* - ID_PRODUCT_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN* - -pci:v00008086d00001229sv00000E11sd00003007* - ID_PRODUCT_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN* - -pci:v00008086d00001229sv00000E11sd0000B01E* - ID_PRODUCT_FROM_DATABASE=NC3120 Fast Ethernet NIC - -pci:v00008086d00001229sv00000E11sd0000B01F* - ID_PRODUCT_FROM_DATABASE=NC3122 Fast Ethernet NIC (dual port) - -pci:v00008086d00001229sv00000E11sd0000B02F* - ID_PRODUCT_FROM_DATABASE=NC1120 Ethernet NIC - -pci:v00008086d00001229sv00000E11sd0000B04A* - ID_PRODUCT_FROM_DATABASE=Netelligent 10/100TX NIC with Wake on LAN - -pci:v00008086d00001229sv00000E11sd0000B0C6* - ID_PRODUCT_FROM_DATABASE=NC3161 Fast Ethernet NIC (embedded, WOL) - -pci:v00008086d00001229sv00000E11sd0000B0C7* - ID_PRODUCT_FROM_DATABASE=NC3160 Fast Ethernet NIC (embedded) - -pci:v00008086d00001229sv00000E11sd0000B0D7* - ID_PRODUCT_FROM_DATABASE=NC3121 Fast Ethernet NIC (WOL) - -pci:v00008086d00001229sv00000E11sd0000B0DD* - ID_PRODUCT_FROM_DATABASE=NC3131 Fast Ethernet NIC (dual port) - -pci:v00008086d00001229sv00000E11sd0000B0DE* - ID_PRODUCT_FROM_DATABASE=NC3132 Fast Ethernet Module (dual port) - -pci:v00008086d00001229sv00000E11sd0000B0E1* - ID_PRODUCT_FROM_DATABASE=NC3133 Fast Ethernet Module (100-FX) - -pci:v00008086d00001229sv00000E11sd0000B134* - ID_PRODUCT_FROM_DATABASE=NC3163 Fast Ethernet NIC (embedded, WOL) - -pci:v00008086d00001229sv00000E11sd0000B13C* - ID_PRODUCT_FROM_DATABASE=NC3162 Fast Ethernet NIC (embedded) - -pci:v00008086d00001229sv00000E11sd0000B144* - ID_PRODUCT_FROM_DATABASE=NC3123 Fast Ethernet NIC (WOL) - -pci:v00008086d00001229sv00000E11sd0000B163* - ID_PRODUCT_FROM_DATABASE=NC3134 Fast Ethernet NIC (dual port) - -pci:v00008086d00001229sv00000E11sd0000B164* - ID_PRODUCT_FROM_DATABASE=NC3135 Fast Ethernet Upgrade Module (dual port) - -pci:v00008086d00001229sv00000E11sd0000B1A4* - ID_PRODUCT_FROM_DATABASE=NC7131 Gigabit Server Adapter - -pci:v00008086d00001229sv00001014sd0000005C* - ID_PRODUCT_FROM_DATABASE=82558B Ethernet Pro 10/100 - -pci:v00008086d00001229sv00001014sd000001BC* - ID_PRODUCT_FROM_DATABASE=82559 Fast Ethernet LAN On Motherboard - -pci:v00008086d00001229sv00001014sd000001F1* - ID_PRODUCT_FROM_DATABASE=10/100 Ethernet Server Adapter - -pci:v00008086d00001229sv00001014sd000001F2* - ID_PRODUCT_FROM_DATABASE=10/100 Ethernet Server Adapter - -pci:v00008086d00001229sv00001014sd00000207* - ID_PRODUCT_FROM_DATABASE=Ethernet Pro/100 S - -pci:v00008086d00001229sv00001014sd00000232* - ID_PRODUCT_FROM_DATABASE=10/100 Dual Port Server Adapter - -pci:v00008086d00001229sv00001014sd0000023A* - ID_PRODUCT_FROM_DATABASE=ThinkPad R30 - -pci:v00008086d00001229sv00001014sd0000105C* - ID_PRODUCT_FROM_DATABASE=Netfinity 10/100 - -pci:v00008086d00001229sv00001014sd00002205* - ID_PRODUCT_FROM_DATABASE=ThinkPad A22p - -pci:v00008086d00001229sv00001014sd0000305C* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Management Adapter - -pci:v00008086d00001229sv00001014sd0000405C* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Adapter with Alert on LAN - -pci:v00008086d00001229sv00001014sd0000505C* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Secure Management Adapter - -pci:v00008086d00001229sv00001014sd0000605C* - ID_PRODUCT_FROM_DATABASE=10/100 EtherJet Secure Management Adapter - -pci:v00008086d00001229sv00001014sd0000705C* - ID_PRODUCT_FROM_DATABASE=10/100 Netfinity 10/100 Ethernet Security Adapter - -pci:v00008086d00001229sv00001014sd0000805C* - ID_PRODUCT_FROM_DATABASE=10/100 Netfinity 10/100 Ethernet Security Adapter - -pci:v00008086d00001229sv00001028sd0000009B* - ID_PRODUCT_FROM_DATABASE=10/100 Ethernet Server Adapter - -pci:v00008086d00001229sv00001028sd000000CE* - ID_PRODUCT_FROM_DATABASE=10/100 Ethernet Server Adapter - -pci:v00008086d00001229sv00001033sd00008000* - ID_PRODUCT_FROM_DATABASE=PC-9821X-B06 - -pci:v00008086d00001229sv00001033sd00008016* - ID_PRODUCT_FROM_DATABASE=PK-UG-X006 - -pci:v00008086d00001229sv00001033sd0000801F* - ID_PRODUCT_FROM_DATABASE=PK-UG-X006 - -pci:v00008086d00001229sv00001033sd00008026* - ID_PRODUCT_FROM_DATABASE=PK-UG-X006 - -pci:v00008086d00001229sv00001033sd00008063* - ID_PRODUCT_FROM_DATABASE=82559-based Fast Ethernet Adapter - -pci:v00008086d00001229sv00001033sd00008064* - ID_PRODUCT_FROM_DATABASE=82559-based Fast Ethernet Adapter - -pci:v00008086d00001229sv0000103Csd000010C0* - ID_PRODUCT_FROM_DATABASE=NetServer 10/100TX - -pci:v00008086d00001229sv0000103Csd000010C3* - ID_PRODUCT_FROM_DATABASE=NetServer 10/100TX - -pci:v00008086d00001229sv0000103Csd000010CA* - ID_PRODUCT_FROM_DATABASE=NetServer 10/100TX - -pci:v00008086d00001229sv0000103Csd000010CB* - ID_PRODUCT_FROM_DATABASE=NetServer 10/100TX - -pci:v00008086d00001229sv0000103Csd000010E3* - ID_PRODUCT_FROM_DATABASE=NetServer 10/100TX - -pci:v00008086d00001229sv0000103Csd000010E4* - ID_PRODUCT_FROM_DATABASE=NetServer 10/100TX - -pci:v00008086d00001229sv0000103Csd00001200* - ID_PRODUCT_FROM_DATABASE=NetServer 10/100TX - -pci:v00008086d00001229sv0000108Esd000010CF* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100(B) - -pci:v00008086d00001229sv000010C3sd00001100* - ID_PRODUCT_FROM_DATABASE=SmartEther100 SC1100 - -pci:v00008086d00001229sv000010CFsd00001115* - ID_PRODUCT_FROM_DATABASE=8255x-based Ethernet Adapter (10/100) - -pci:v00008086d00001229sv000010CFsd00001143* - ID_PRODUCT_FROM_DATABASE=8255x-based Ethernet Adapter (10/100) - -pci:v00008086d00001229sv0000110Asd0000008B* - ID_PRODUCT_FROM_DATABASE=82551QM Fast Ethernet Multifuction PCI/CardBus Controller - -pci:v00008086d00001229sv0000114Asd00000582* - ID_PRODUCT_FROM_DATABASE=PC8 onboard ethernet ETH2 - -pci:v00008086d00001229sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=8255x-based Ethernet Adapter (10/100) - -pci:v00008086d00001229sv00001179sd00000002* - ID_PRODUCT_FROM_DATABASE=PCI FastEther LAN on Docker - -pci:v00008086d00001229sv00001179sd00000003* - ID_PRODUCT_FROM_DATABASE=8255x-based Fast Ethernet - -pci:v00008086d00001229sv00001259sd00002560* - ID_PRODUCT_FROM_DATABASE=AT-2560 100 - -pci:v00008086d00001229sv00001259sd00002561* - ID_PRODUCT_FROM_DATABASE=AT-2560 100 FX Ethernet Adapter - -pci:v00008086d00001229sv00001266sd00000001* - ID_PRODUCT_FROM_DATABASE=NE10/100 Adapter - -pci:v00008086d00001229sv000013E9sd00001000* - ID_PRODUCT_FROM_DATABASE=6221L-4U - -pci:v00008086d00001229sv0000144Dsd00002501* - ID_PRODUCT_FROM_DATABASE=SEM-2000 MiniPCI LAN Adapter - -pci:v00008086d00001229sv0000144Dsd00002502* - ID_PRODUCT_FROM_DATABASE=SEM-2100IL MiniPCI LAN Adapter - -pci:v00008086d00001229sv00001668sd00001100* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100B (TX) (MiniPCI Ethernet+Modem) - -pci:v00008086d00001229sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d00001229sv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d00001229sv00004C53sd00001080* - ID_PRODUCT_FROM_DATABASE=CT8 mainboard - -pci:v00008086d00001229sv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v00008086d00001229sv00008086sd00000001* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100B (TX) - -pci:v00008086d00001229sv00008086sd00000002* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100B (T4) - -pci:v00008086d00001229sv00008086sd00000003* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/10+ - -pci:v00008086d00001229sv00008086sd00000004* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 WfM - -pci:v00008086d00001229sv00008086sd00000005* - ID_PRODUCT_FROM_DATABASE=82557 10/100 - -pci:v00008086d00001229sv00008086sd00000006* - ID_PRODUCT_FROM_DATABASE=82557 10/100 with Wake on LAN - -pci:v00008086d00001229sv00008086sd00000007* - ID_PRODUCT_FROM_DATABASE=82558 10/100 Adapter - -pci:v00008086d00001229sv00008086sd00000008* - ID_PRODUCT_FROM_DATABASE=82558 10/100 with Wake on LAN - -pci:v00008086d00001229sv00008086sd00000009* - ID_PRODUCT_FROM_DATABASE=82558B PRO/100+ PCI (TP) - -pci:v00008086d00001229sv00008086sd0000000A* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ Management Adapter - -pci:v00008086d00001229sv00008086sd0000000B* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ - -pci:v00008086d00001229sv00008086sd0000000C* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ Management Adapter - -pci:v00008086d00001229sv00008086sd0000000D* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ Alert On LAN II* Adapter - -pci:v00008086d00001229sv00008086sd0000000E* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ Management Adapter with Alert On LAN* - -pci:v00008086d00001229sv00008086sd0000000F* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Desktop Adapter - -pci:v00008086d00001229sv00008086sd00000010* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Management Adapter - -pci:v00008086d00001229sv00008086sd00000011* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Management Adapter - -pci:v00008086d00001229sv00008086sd00000012* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Advanced Management Adapter (D) - -pci:v00008086d00001229sv00008086sd00000013* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Advanced Management Adapter (E) - -pci:v00008086d00001229sv00008086sd00000030* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Management Adapter with Alert On LAN* GC - -pci:v00008086d00001229sv00008086sd00000031* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Desktop Adapter - -pci:v00008086d00001229sv00008086sd00000040* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Desktop Adapter - -pci:v00008086d00001229sv00008086sd00000041* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Desktop Adapter - -pci:v00008086d00001229sv00008086sd00000042* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Desktop Adapter - -pci:v00008086d00001229sv00008086sd00000050* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Desktop Adapter - -pci:v00008086d00001229sv00008086sd00001009* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ Server Adapter - -pci:v00008086d00001229sv00008086sd0000100C* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ Server Adapter (PILA8470B) - -pci:v00008086d00001229sv00008086sd00001012* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter (D) - -pci:v00008086d00001229sv00008086sd00001013* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter (E) - -pci:v00008086d00001229sv00008086sd00001015* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Dual Port Server Adapter - -pci:v00008086d00001229sv00008086sd00001017* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ Dual Port Server Adapter - -pci:v00008086d00001229sv00008086sd00001030* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ Management Adapter with Alert On LAN* G Server - -pci:v00008086d00001229sv00008086sd00001040* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter - -pci:v00008086d00001229sv00008086sd00001041* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter - -pci:v00008086d00001229sv00008086sd00001042* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Server Adapter - -pci:v00008086d00001229sv00008086sd00001050* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Server Adapter - -pci:v00008086d00001229sv00008086sd00001051* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Server Adapter - -pci:v00008086d00001229sv00008086sd00001052* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Server Adapter - -pci:v00008086d00001229sv00008086sd000010F0* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ Dual Port Adapter - -pci:v00008086d00001229sv00008086sd00001229* - ID_PRODUCT_FROM_DATABASE=82557/8/9 [Ethernet Pro 100] - -pci:v00008086d00001229sv00008086sd00002009* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Mobile Adapter - -pci:v00008086d00001229sv00008086sd0000200D* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Cardbus - -pci:v00008086d00001229sv00008086sd0000200E* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 LAN+V90 Cardbus Modem - -pci:v00008086d00001229sv00008086sd0000200F* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 SR Mobile Adapter - -pci:v00008086d00001229sv00008086sd00002010* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Mobile Combo Adapter - -pci:v00008086d00001229sv00008086sd00002013* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 SR Mobile Combo Adapter - -pci:v00008086d00001229sv00008086sd00002016* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Mobile Adapter - -pci:v00008086d00001229sv00008086sd00002017* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Combo Mobile Adapter - -pci:v00008086d00001229sv00008086sd00002018* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 SR Mobile Adapter - -pci:v00008086d00001229sv00008086sd00002019* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 SR Combo Mobile Adapter - -pci:v00008086d00001229sv00008086sd00002101* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 P Mobile Adapter - -pci:v00008086d00001229sv00008086sd00002102* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Adapter - -pci:v00008086d00001229sv00008086sd00002103* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Adapter - -pci:v00008086d00001229sv00008086sd00002104* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Adapter - -pci:v00008086d00001229sv00008086sd00002105* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Adapter - -pci:v00008086d00001229sv00008086sd00002106* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 P Mobile Adapter - -pci:v00008086d00001229sv00008086sd00002107* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Network Connection - -pci:v00008086d00001229sv00008086sd00002108* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Network Connection - -pci:v00008086d00001229sv00008086sd00002200* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 P Mobile Combo Adapter - -pci:v00008086d00001229sv00008086sd00002201* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 P Mobile Combo Adapter - -pci:v00008086d00001229sv00008086sd00002202* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Combo Adapter - -pci:v00008086d00001229sv00008086sd00002203* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI - -pci:v00008086d00001229sv00008086sd00002204* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI - -pci:v00008086d00001229sv00008086sd00002205* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Combo Adapter - -pci:v00008086d00001229sv00008086sd00002206* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Combo Adapter - -pci:v00008086d00001229sv00008086sd00002207* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 SP Mobile Combo Adapter - -pci:v00008086d00001229sv00008086sd00002208* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 P Mobile Combo Adapter - -pci:v00008086d00001229sv00008086sd00002402* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI - -pci:v00008086d00001229sv00008086sd00002407* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI - -pci:v00008086d00001229sv00008086sd00002408* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI - -pci:v00008086d00001229sv00008086sd00002409* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI - -pci:v00008086d00001229sv00008086sd0000240F* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI - -pci:v00008086d00001229sv00008086sd00002410* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI - -pci:v00008086d00001229sv00008086sd00002411* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI - -pci:v00008086d00001229sv00008086sd00002412* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI - -pci:v00008086d00001229sv00008086sd00002413* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100+ MiniPCI - -pci:v00008086d00001229sv00008086sd00003000* - ID_PRODUCT_FROM_DATABASE=82559 Fast Ethernet LAN on Motherboard - -pci:v00008086d00001229sv00008086sd00003001* - ID_PRODUCT_FROM_DATABASE=82559 Fast Ethernet LOM with Basic Alert on LAN* - -pci:v00008086d00001229sv00008086sd00003002* - ID_PRODUCT_FROM_DATABASE=82559 Fast Ethernet LOM with Alert on LAN II* - -pci:v00008086d00001229sv00008086sd00003006* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Network Connection - -pci:v00008086d00001229sv00008086sd00003007* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Network Connection - -pci:v00008086d00001229sv00008086sd00003008* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Network Connection - -pci:v00008086d00001229sv00008086sd00003010* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Network Connection - -pci:v00008086d00001229sv00008086sd00003011* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 S Network Connection - -pci:v00008086d00001229sv00008086sd00003012* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Network Connection - -pci:v00008086d00001229sv00008086sd0000301A* - ID_PRODUCT_FROM_DATABASE=S845WD1-E mainboard - -pci:v00008086d00001229sv00008086sd00003411* - ID_PRODUCT_FROM_DATABASE=SDS2 Mainboard - -pci:v00008086d0000122D* - ID_PRODUCT_FROM_DATABASE=430FX - 82437FX TSC [Triton I] - -pci:v00008086d0000122E* - ID_PRODUCT_FROM_DATABASE=82371FB PIIX ISA [Triton I] - -pci:v00008086d00001230* - ID_PRODUCT_FROM_DATABASE=82371FB PIIX IDE [Triton I] - -pci:v00008086d00001231* - ID_PRODUCT_FROM_DATABASE=DSVD Modem - -pci:v00008086d00001234* - ID_PRODUCT_FROM_DATABASE=430MX - 82371MX Mobile PCI I/O IDE Xcelerator (MPIIX) - -pci:v00008086d00001235* - ID_PRODUCT_FROM_DATABASE=430MX - 82437MX Mob. System Ctrlr (MTSC) & 82438MX Data Path (MTDP) - -pci:v00008086d00001237* - ID_PRODUCT_FROM_DATABASE=440FX - 82441FX PMC [Natoma] - -pci:v00008086d00001237sv00001AF4sd00001100* - ID_PRODUCT_FROM_DATABASE=Qemu virtual machine - -pci:v00008086d00001239* - ID_PRODUCT_FROM_DATABASE=82371FB PIIX IDE Interface - -pci:v00008086d0000123B* - ID_PRODUCT_FROM_DATABASE=82380PB PCI to PCI Docking Bridge - -pci:v00008086d0000123C* - ID_PRODUCT_FROM_DATABASE=82380AB (MISA) Mobile PCI-to-ISA Bridge - -pci:v00008086d0000123D* - ID_PRODUCT_FROM_DATABASE=683053 Programmable Interrupt Device - -pci:v00008086d0000123E* - ID_PRODUCT_FROM_DATABASE=82466GX (IHPC) Integrated Hot-Plug Controller (hidden mode) - -pci:v00008086d0000123F* - ID_PRODUCT_FROM_DATABASE=82466GX Integrated Hot-Plug Controller (IHPC) - -pci:v00008086d00001240* - ID_PRODUCT_FROM_DATABASE=82752 (752) AGP Graphics Accelerator - -pci:v00008086d0000124B* - ID_PRODUCT_FROM_DATABASE=82380FB (MPCI2) Mobile Docking Controller - -pci:v00008086d00001250* - ID_PRODUCT_FROM_DATABASE=430HX - 82439HX TXC [Triton II] - -pci:v00008086d00001360* - ID_PRODUCT_FROM_DATABASE=82806AA PCI64 Hub PCI Bridge - -pci:v00008086d00001361* - ID_PRODUCT_FROM_DATABASE=82806AA PCI64 Hub Controller (HRes) - -pci:v00008086d00001361sv00008086sd00001361* - ID_PRODUCT_FROM_DATABASE=82806AA PCI64 Hub Controller (HRes) - -pci:v00008086d00001361sv00008086sd00008000* - ID_PRODUCT_FROM_DATABASE=82806AA PCI64 Hub Controller (HRes) - -pci:v00008086d00001460* - ID_PRODUCT_FROM_DATABASE=82870P2 P64H2 Hub PCI Bridge - -pci:v00008086d00001461* - ID_PRODUCT_FROM_DATABASE=82870P2 P64H2 I/OxAPIC - -pci:v00008086d00001461sv000015D9sd00003480* - ID_PRODUCT_FROM_DATABASE=P4DP6 - -pci:v00008086d00001461sv00004C53sd00001090* - ID_PRODUCT_FROM_DATABASE=Cx9/Vx9 mainboard - -pci:v00008086d00001462* - ID_PRODUCT_FROM_DATABASE=82870P2 P64H2 Hot Plug Controller - -pci:v00008086d00001501* - ID_PRODUCT_FROM_DATABASE=82567V-3 Gigabit Network Connection - -pci:v00008086d00001502* - ID_PRODUCT_FROM_DATABASE=82579LM Gigabit Network Connection - -pci:v00008086d00001502sv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00008086d00001503* - ID_PRODUCT_FROM_DATABASE=82579V Gigabit Network Connection - -pci:v00008086d00001503sv00001043sd0000849C* - ID_PRODUCT_FROM_DATABASE=P8P67 Deluxe Motherboard - -pci:v00008086d00001507* - ID_PRODUCT_FROM_DATABASE=82599EB 10 Gigabit Network Connection - -pci:v00008086d00001508* - ID_PRODUCT_FROM_DATABASE=82598EB Gigabit BX Network Connection - -pci:v00008086d0000150A* - ID_PRODUCT_FROM_DATABASE=82576NS Gigabit Network Connection - -pci:v00008086d0000150B* - ID_PRODUCT_FROM_DATABASE=82598EB 10-Gigabit AT2 Server Adapter - -pci:v00008086d0000150Bsv00008086sd0000A10C* - ID_PRODUCT_FROM_DATABASE=82598EB 10-Gigabit AT2 Server Adapter - -pci:v00008086d0000150Bsv00008086sd0000A11C* - ID_PRODUCT_FROM_DATABASE=82598EB 10-Gigabit AT2 Server Adapter - -pci:v00008086d0000150Bsv00008086sd0000A12C* - ID_PRODUCT_FROM_DATABASE=82598EB 10-Gigabit AT2 Server Adapter - -pci:v00008086d0000150C* - ID_PRODUCT_FROM_DATABASE=82583V Gigabit Network Connection - -pci:v00008086d0000150D* - ID_PRODUCT_FROM_DATABASE=82576 Gigabit Backplane Connection - -pci:v00008086d0000150Dsv00008086sd0000A10C* - ID_PRODUCT_FROM_DATABASE=Gigabit ET Quad Port Mezzanine Card - -pci:v00008086d0000150E* - ID_PRODUCT_FROM_DATABASE=82580 Gigabit Network Connection - -pci:v00008086d0000150Esv0000103Csd00001780* - ID_PRODUCT_FROM_DATABASE=NC365T 4-port Ethernet Server Adapter - -pci:v00008086d0000150Esv00008086sd000012A1* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I340-T4 - -pci:v00008086d0000150Esv00008086sd000012A2* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I340-T4 - -pci:v00008086d0000150F* - ID_PRODUCT_FROM_DATABASE=82580 Gigabit Fiber Network Connection - -pci:v00008086d00001510* - ID_PRODUCT_FROM_DATABASE=82580 Gigabit Backplane Connection - -pci:v00008086d00001511* - ID_PRODUCT_FROM_DATABASE=82580 Gigabit SFP Connection - -pci:v00008086d00001514* - ID_PRODUCT_FROM_DATABASE=82599EB 10 Gigabit KX4 Network Connection - -pci:v00008086d00001514sv00008086sd0000000B* - ID_PRODUCT_FROM_DATABASE=Ethernet X520 10GbE Dual Port KX4 Mezz - -pci:v00008086d00001515* - ID_PRODUCT_FROM_DATABASE=X540 Ethernet Controller Virtual Function - -pci:v00008086d00001516* - ID_PRODUCT_FROM_DATABASE=82580 Gigabit Network Connection - -pci:v00008086d00001516sv00008086sd000012B1* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I340-T2 - -pci:v00008086d00001516sv00008086sd000012B2* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I340-T2 - -pci:v00008086d00001517* - ID_PRODUCT_FROM_DATABASE=82599ES 10 Gigabit Network Connection - -pci:v00008086d00001517sv00001137sd0000006A* - ID_PRODUCT_FROM_DATABASE=UCS CNA M61KR-I Intel Converged Network Adapter - -pci:v00008086d00001518* - ID_PRODUCT_FROM_DATABASE=82576NS SerDes Gigabit Network Connection - -pci:v00008086d0000151C* - ID_PRODUCT_FROM_DATABASE=82599EB 10 Gigabit TN Network Connection - -pci:v00008086d0000151Csv0000108Esd00007B13* - ID_PRODUCT_FROM_DATABASE=Dual 10GBASE-T LP - -pci:v00008086d00001520* - ID_PRODUCT_FROM_DATABASE=I350 Ethernet Controller Virtual Function - -pci:v00008086d00001521* - ID_PRODUCT_FROM_DATABASE=I350 Gigabit Network Connection - -pci:v00008086d00001521sv00001028sd00001F60* - ID_PRODUCT_FROM_DATABASE=Intel GbE 4P I350crNDC - -pci:v00008086d00001521sv00001028sd00001F62* - ID_PRODUCT_FROM_DATABASE=Intel GbE 2P I350crNDC - -pci:v00008086d00001521sv0000103Csd0000337F* - ID_PRODUCT_FROM_DATABASE=Ethernet 1Gb 2-port 361i Adapter - -pci:v00008086d00001521sv0000103Csd00003380* - ID_PRODUCT_FROM_DATABASE=Ethernet 1Gb 4-port 366i Adapter - -pci:v00008086d00001521sv0000103Csd0000339E* - ID_PRODUCT_FROM_DATABASE=Ethernet 1Gb 2-port 361T Adapter - -pci:v00008086d00001521sv0000108Esd00007B16* - ID_PRODUCT_FROM_DATABASE=Quad Port GbE PCIe 2.0 ExpressModule, UTP - -pci:v00008086d00001521sv0000108Esd00007B18* - ID_PRODUCT_FROM_DATABASE=Quad Port GbE PCIe 2.0 Low Profile Adapter, UTP - -pci:v00008086d00001521sv000010A9sd0000802A* - ID_PRODUCT_FROM_DATABASE=UV2-BaseIO dual-port GbE - -pci:v00008086d00001521sv00008086sd00000001* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I350-T4 - -pci:v00008086d00001521sv00008086sd00000002* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I350-T2 - -pci:v00008086d00001521sv00008086sd000000A1* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I350-T4 - -pci:v00008086d00001521sv00008086sd000000A2* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I350-T2 - -pci:v00008086d00001521sv00008086sd00005001* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I350-T4 - -pci:v00008086d00001521sv00008086sd00005002* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I350-T2 - -pci:v00008086d00001522* - ID_PRODUCT_FROM_DATABASE=I350 Gigabit Fiber Network Connection - -pci:v00008086d00001522sv0000108Esd00007B17* - ID_PRODUCT_FROM_DATABASE=Quad Port GbE PCIe 2.0 ExpressModule, MMF - -pci:v00008086d00001522sv0000108Esd00007B19* - ID_PRODUCT_FROM_DATABASE=Dual Port GbE PCIe 2.0 Low Profile Adapter, MMF - -pci:v00008086d00001522sv00008086sd00000002* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I350-T2 - -pci:v00008086d00001522sv00008086sd00000003* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I350-F4 - -pci:v00008086d00001522sv00008086sd00000004* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I350-F2 - -pci:v00008086d00001522sv00008086sd000000A3* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I350-F4 - -pci:v00008086d00001522sv00008086sd000000A4* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I350-F2 - -pci:v00008086d00001523* - ID_PRODUCT_FROM_DATABASE=I350 Gigabit Backplane Connection - -pci:v00008086d00001523sv0000103Csd00001784* - ID_PRODUCT_FROM_DATABASE=Ethernet 1Gb 2-port 361FLB Adapter - -pci:v00008086d00001523sv0000103Csd000018D1* - ID_PRODUCT_FROM_DATABASE=Ethernet 1Gb 2-port 361FLB Adapter - -pci:v00008086d00001523sv0000103Csd0000339F* - ID_PRODUCT_FROM_DATABASE=Ethernet 1Gb 4-port 366M Adapter - -pci:v00008086d00001523sv00008086sd00001F52* - ID_PRODUCT_FROM_DATABASE=1GbE 4P I350 Mezz - -pci:v00008086d00001524* - ID_PRODUCT_FROM_DATABASE=I350 Gigabit Connection - -pci:v00008086d00001525* - ID_PRODUCT_FROM_DATABASE=82567V-4 Gigabit Network Connection - -pci:v00008086d00001526* - ID_PRODUCT_FROM_DATABASE=82576 Gigabit Network Connection - -pci:v00008086d00001526sv00008086sd0000A05C* - ID_PRODUCT_FROM_DATABASE=Gigabit ET2 Quad Port Server Adapter - -pci:v00008086d00001526sv00008086sd0000A06C* - ID_PRODUCT_FROM_DATABASE=Gigabit ET2 Quad Port Server Adapter - -pci:v00008086d00001527* - ID_PRODUCT_FROM_DATABASE=82580 Gigabit Fiber Network Connection - -pci:v00008086d00001527sv00008086sd00000001* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I340-F4 - -pci:v00008086d00001527sv00008086sd00000002* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I340-F4 - -pci:v00008086d00001528* - ID_PRODUCT_FROM_DATABASE=Ethernet Controller 10-Gigabit X540-AT2 - -pci:v00008086d00001528sv00001028sd00001F61* - ID_PRODUCT_FROM_DATABASE=Ethernet 10G 4P X540/I350 rNDC - -pci:v00008086d00001528sv0000103Csd0000192D* - ID_PRODUCT_FROM_DATABASE=561FLR-T 2-port 10Gb Ethernet Adapter - -pci:v00008086d00001528sv0000103Csd0000211A* - ID_PRODUCT_FROM_DATABASE=Ethernet 10Gb 2-port 561T Adapter - -pci:v00008086d00001528sv0000108Esd00007B14* - ID_PRODUCT_FROM_DATABASE=Sun Dual Port 10 GbE PCIe 2.0 ExpressModule, Base-T - -pci:v00008086d00001528sv0000108Esd00007B15* - ID_PRODUCT_FROM_DATABASE=Sun Dual Port 10 GbE PCIe 2.0 Low Profile Adapter, Base-T - -pci:v00008086d00001528sv00001137sd000000BF* - ID_PRODUCT_FROM_DATABASE=Ethernet Converged Network Adapter X540-T2 - -pci:v00008086d00001528sv00008086sd00000001* - ID_PRODUCT_FROM_DATABASE=Ethernet Converged Network Adapter X540-T2 - -pci:v00008086d00001528sv00008086sd00000002* - ID_PRODUCT_FROM_DATABASE=Ethernet Converged Network Adapter X540-T1 - -pci:v00008086d00001528sv00008086sd0000001A* - ID_PRODUCT_FROM_DATABASE=Ethernet Converged Network Adapter X540-T2 - -pci:v00008086d00001528sv00008086sd000000A2* - ID_PRODUCT_FROM_DATABASE=Ethernet Converged Network Adapter X540-T1 - -pci:v00008086d00001528sv00008086sd00001F61* - ID_PRODUCT_FROM_DATABASE=Ethernet 10G 4P X540/I350 rNDC - -pci:v00008086d00001528sv00008086sd00005003* - ID_PRODUCT_FROM_DATABASE=Ethernet 10G 2P X540-t Adapter - -pci:v00008086d00001529* - ID_PRODUCT_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection with FCoE - -pci:v00008086d0000152A* - ID_PRODUCT_FROM_DATABASE=82599 10 Gigabit Dual port Network Connection with FCoE - -pci:v00008086d00001533* - ID_PRODUCT_FROM_DATABASE=I210 Gigabit Network Connection - -pci:v00008086d00001533sv0000103Csd00000003* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I210-T1 - -pci:v00008086d00001533sv00008086sd00000001* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I210-T1 - -pci:v00008086d00001533sv00008086sd00000002* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter I210-T1 - -pci:v00008086d00001534* - ID_PRODUCT_FROM_DATABASE=I210 Gigabit Network Connection - -pci:v00008086d00001536* - ID_PRODUCT_FROM_DATABASE=I210 Gigabit Fiber Network Connection - -pci:v00008086d00001537* - ID_PRODUCT_FROM_DATABASE=I210 Gigabit Backplane Connection - -pci:v00008086d00001538* - ID_PRODUCT_FROM_DATABASE=I210 Gigabit Network Connection - -pci:v00008086d00001539* - ID_PRODUCT_FROM_DATABASE=I211 Gigabit Network Connection - -pci:v00008086d0000153A* - ID_PRODUCT_FROM_DATABASE=Ethernet Connection I217-LM - -pci:v00008086d0000153B* - ID_PRODUCT_FROM_DATABASE=Ethernet Connection I217-V - -pci:v00008086d00001547* - ID_PRODUCT_FROM_DATABASE=DSL3510 Thunderbolt Port [Cactus Ridge] - -pci:v00008086d00001549* - ID_PRODUCT_FROM_DATABASE=DSL3510 Thunderbolt Controller [Cactus Ridge] - -pci:v00008086d0000154A* - ID_PRODUCT_FROM_DATABASE=Ethernet Server Adapter X520-4 - -pci:v00008086d0000154Asv00008086sd0000011A* - ID_PRODUCT_FROM_DATABASE=Ethernet Converged Network Adapter X520-4 - -pci:v00008086d0000154Asv00008086sd0000011B* - ID_PRODUCT_FROM_DATABASE=Ethernet Converged Network Adapter X520-4 - -pci:v00008086d0000154Asv00008086sd0000011C* - ID_PRODUCT_FROM_DATABASE=Ethernet Converged Network Adapter X520-4 - -pci:v00008086d0000154D* - ID_PRODUCT_FROM_DATABASE=82599EB 10-Gigabit SFP+ Network Connection - -pci:v00008086d0000154Dsv00008086sd00007B11* - ID_PRODUCT_FROM_DATABASE=10GbE 2P X520 Adapter - -pci:v00008086d00001557* - ID_PRODUCT_FROM_DATABASE=82599 10 Gigabit Network Connection - -pci:v00008086d00001559* - ID_PRODUCT_FROM_DATABASE=Ethernet Connection I218-V - -pci:v00008086d0000155A* - ID_PRODUCT_FROM_DATABASE=Ethernet Connection I218-LM - -pci:v00008086d00001560* - ID_PRODUCT_FROM_DATABASE=Ethernet Controller X540-AT1 - -pci:v00008086d00001960* - ID_PRODUCT_FROM_DATABASE=80960RP (i960RP) Microprocessor - -pci:v00008086d00001960sv0000101Esd00000431* - ID_PRODUCT_FROM_DATABASE=MegaRAID 431 RAID Controller - -pci:v00008086d00001960sv0000101Esd00000438* - ID_PRODUCT_FROM_DATABASE=MegaRAID 438 Ultra2 LVD RAID Controller - -pci:v00008086d00001960sv0000101Esd00000466* - ID_PRODUCT_FROM_DATABASE=MegaRAID 466 Express Plus RAID Controller - -pci:v00008086d00001960sv0000101Esd00000467* - ID_PRODUCT_FROM_DATABASE=MegaRAID 467 Enterprise 1500 RAID Controller - -pci:v00008086d00001960sv0000101Esd00000490* - ID_PRODUCT_FROM_DATABASE=MegaRAID 490 Express 300 RAID Controller - -pci:v00008086d00001960sv0000101Esd00000762* - ID_PRODUCT_FROM_DATABASE=MegaRAID 762 Express RAID Controller - -pci:v00008086d00001960sv0000101Esd000009A0* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/SC - -pci:v00008086d00001960sv00001028sd00000467* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/DC - -pci:v00008086d00001960sv00001028sd00001111* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/SC - -pci:v00008086d00001960sv0000103Csd000003A2* - ID_PRODUCT_FROM_DATABASE=MegaRAID - -pci:v00008086d00001960sv0000103Csd000010C6* - ID_PRODUCT_FROM_DATABASE=MegaRAID 438, NetRAID-3Si - -pci:v00008086d00001960sv0000103Csd000010C7* - ID_PRODUCT_FROM_DATABASE=MegaRAID T5, Integrated NetRAID - -pci:v00008086d00001960sv0000103Csd000010CC* - ID_PRODUCT_FROM_DATABASE=MegaRAID, Integrated NetRAID - -pci:v00008086d00001960sv0000103Csd000010CD* - ID_PRODUCT_FROM_DATABASE=NetRAID-1Si - -pci:v00008086d00001960sv0000105Asd00000000* - ID_PRODUCT_FROM_DATABASE=SuperTrak - -pci:v00008086d00001960sv0000105Asd00002168* - ID_PRODUCT_FROM_DATABASE=SuperTrak Pro - -pci:v00008086d00001960sv0000105Asd00005168* - ID_PRODUCT_FROM_DATABASE=SuperTrak66/100 - -pci:v00008086d00001960sv00001111sd00001111* - ID_PRODUCT_FROM_DATABASE=MegaRAID 466, PowerEdge Expandable RAID Controller 2/SC - -pci:v00008086d00001960sv00001111sd00001112* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 2/SC - -pci:v00008086d00001960sv0000113Csd000003A2* - ID_PRODUCT_FROM_DATABASE=MegaRAID - -pci:v00008086d00001960sv0000E4BFsd00001010* - ID_PRODUCT_FROM_DATABASE=CG1-RADIO - -pci:v00008086d00001960sv0000E4BFsd00001020* - ID_PRODUCT_FROM_DATABASE=CU2-QUARTET - -pci:v00008086d00001960sv0000E4BFsd00001040* - ID_PRODUCT_FROM_DATABASE=CU1-CHORUS - -pci:v00008086d00001960sv0000E4BFsd00003100* - ID_PRODUCT_FROM_DATABASE=CX1-BAND - -pci:v00008086d00001962* - ID_PRODUCT_FROM_DATABASE=80960RM (i960RM) Microprocessor - -pci:v00008086d00001962sv0000105Asd00000000* - ID_PRODUCT_FROM_DATABASE=SuperTrak SX6000 I2O CPU - -pci:v00008086d00001A21* - ID_PRODUCT_FROM_DATABASE=82840 840 [Carmel] Chipset Host Bridge (Hub A) - -pci:v00008086d00001A23* - ID_PRODUCT_FROM_DATABASE=82840 840 [Carmel] Chipset AGP Bridge - -pci:v00008086d00001A24* - ID_PRODUCT_FROM_DATABASE=82840 840 [Carmel] Chipset PCI Bridge (Hub B) - -pci:v00008086d00001A30* - ID_PRODUCT_FROM_DATABASE=82845 845 [Brookdale] Chipset Host Bridge - -pci:v00008086d00001A30sv00001028sd0000010E* - ID_PRODUCT_FROM_DATABASE=Optiplex GX240 - -pci:v00008086d00001A30sv000015D9sd00003280* - ID_PRODUCT_FROM_DATABASE=Supermicro P4SBE Mainboard - -pci:v00008086d00001A31* - ID_PRODUCT_FROM_DATABASE=82845 845 [Brookdale] Chipset AGP Bridge - -pci:v00008086d00001A38* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset DMA Engine - -pci:v00008086d00001A38sv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d00001A38sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board - -pci:v00008086d00001A48* - ID_PRODUCT_FROM_DATABASE=82597EX 10GbE Ethernet Controller - -pci:v00008086d00001A48sv00008086sd0000A01F* - ID_PRODUCT_FROM_DATABASE=PRO/10GbE SR Server Adapter - -pci:v00008086d00001A48sv00008086sd0000A11F* - ID_PRODUCT_FROM_DATABASE=PRO/10GbE SR Server Adapter - -pci:v00008086d00001B48* - ID_PRODUCT_FROM_DATABASE=82597EX 10GbE Ethernet Controller - -pci:v00008086d00001B48sv00008086sd0000A01F* - ID_PRODUCT_FROM_DATABASE=PRO/10GbE LR Server Adapter - -pci:v00008086d00001B48sv00008086sd0000A11F* - ID_PRODUCT_FROM_DATABASE=PRO/10GbE LR Server Adapter - -pci:v00008086d00001C00* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family 4 port SATA IDE Controller - -pci:v00008086d00001C01* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family 4 port SATA IDE Controller - -pci:v00008086d00001C02* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family SATA AHCI Controller - -pci:v00008086d00001C02sv00001028sd000004AA* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v00008086d00001C02sv00001043sd0000844D* - ID_PRODUCT_FROM_DATABASE=P8P67 Deluxe Motherboard - -pci:v00008086d00001C03* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family 6 port SATA AHCI Controller - -pci:v00008086d00001C03sv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00008086d00001C03sv00001028sd000004B2* - ID_PRODUCT_FROM_DATABASE=Vostro 3350 - -pci:v00008086d00001C03sv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v00008086d00001C03sv00008086sd00007270* - ID_PRODUCT_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00001C04* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family SATA RAID Controller - -pci:v00008086d00001C05* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family SATA RAID Controller - -pci:v00008086d00001C08* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family 2 port SATA IDE Controller - -pci:v00008086d00001C09* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family 2 port SATA IDE Controller - -pci:v00008086d00001C10* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 1 - -pci:v00008086d00001C10sv00001028sd000004AA* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v00008086d00001C10sv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v00008086d00001C10sv00008086sd00007270* - ID_PRODUCT_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00001C12* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 2 - -pci:v00008086d00001C12sv00001028sd000004AA* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v00008086d00001C12sv00008086sd00007270* - ID_PRODUCT_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00001C14* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 3 - -pci:v00008086d00001C14sv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v00008086d00001C14sv00008086sd00007270* - ID_PRODUCT_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00001C16* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 4 - -pci:v00008086d00001C16sv00001028sd000004AA* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v00008086d00001C18* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 5 - -pci:v00008086d00001C18sv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v00008086d00001C1A* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 6 - -pci:v00008086d00001C1Asv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v00008086d00001C1C* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 7 - -pci:v00008086d00001C1E* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family PCI Express Root Port 8 - -pci:v00008086d00001C20* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family High Definition Audio Controller - -pci:v00008086d00001C20sv00001028sd00000490* - ID_PRODUCT_FROM_DATABASE=Alienware M17x R3 - -pci:v00008086d00001C20sv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00008086d00001C20sv00001028sd000004AA* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v00008086d00001C20sv00001028sd000004B2* - ID_PRODUCT_FROM_DATABASE=Vostro 3350 - -pci:v00008086d00001C20sv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v00008086d00001C20sv00001043sd00008418* - ID_PRODUCT_FROM_DATABASE=P8P67 Deluxe Motherboard - -pci:v00008086d00001C20sv00008086sd00002008* - ID_PRODUCT_FROM_DATABASE=DQ67SW board - -pci:v00008086d00001C20sv00008086sd00007270* - ID_PRODUCT_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00001C22* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family SMBus Controller - -pci:v00008086d00001C22sv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00008086d00001C22sv00001028sd000004AA* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v00008086d00001C22sv00001028sd000004B2* - ID_PRODUCT_FROM_DATABASE=Vostro 3350 - -pci:v00008086d00001C22sv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v00008086d00001C22sv00001043sd0000844D* - ID_PRODUCT_FROM_DATABASE=P8P67 Deluxe Motherboard - -pci:v00008086d00001C22sv00008086sd00007270* - ID_PRODUCT_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00001C24* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family Thermal Management Controller - -pci:v00008086d00001C25* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family DMI to PCI Bridge - -pci:v00008086d00001C26* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #1 - -pci:v00008086d00001C26sv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00008086d00001C26sv00001028sd000004AA* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v00008086d00001C26sv00001028sd000004B2* - ID_PRODUCT_FROM_DATABASE=Vostro 3350 - -pci:v00008086d00001C26sv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v00008086d00001C26sv00001043sd0000844D* - ID_PRODUCT_FROM_DATABASE=P8P67 Deluxe Motherboard - -pci:v00008086d00001C26sv00008086sd00007270* - ID_PRODUCT_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00001C27* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Universal Host Controller #1 - -pci:v00008086d00001C27sv00008086sd00007270* - ID_PRODUCT_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00001C2C* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Universal Host Controller #5 - -pci:v00008086d00001C2Csv00008086sd00007270* - ID_PRODUCT_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00001C2D* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family USB Enhanced Host Controller #2 - -pci:v00008086d00001C2Dsv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00008086d00001C2Dsv00001028sd000004AA* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v00008086d00001C2Dsv00001028sd000004B2* - ID_PRODUCT_FROM_DATABASE=Vostro 3350 - -pci:v00008086d00001C2Dsv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v00008086d00001C2Dsv00001043sd0000844D* - ID_PRODUCT_FROM_DATABASE=P8P67 Deluxe Motherboard - -pci:v00008086d00001C2Dsv00008086sd00007270* - ID_PRODUCT_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00001C33* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family LAN Controller - -pci:v00008086d00001C35* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family VECI Controller - -pci:v00008086d00001C3A* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #1 - -pci:v00008086d00001C3Asv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00008086d00001C3Asv00001028sd000004AA* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v00008086d00001C3Asv00001028sd000004B2* - ID_PRODUCT_FROM_DATABASE=Vostro 3350 - -pci:v00008086d00001C3Asv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v00008086d00001C3Asv00001043sd0000844D* - ID_PRODUCT_FROM_DATABASE=P8P67 Deluxe Motherboard - -pci:v00008086d00001C3Asv00008086sd00007270* - ID_PRODUCT_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00001C3B* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family MEI Controller #2 - -pci:v00008086d00001C3C* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family IDE-r Controller - -pci:v00008086d00001C3D* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family KT Controller - -pci:v00008086d00001C40* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller - -pci:v00008086d00001C41* - ID_PRODUCT_FROM_DATABASE=Mobile SFF 6 Series Chipset Family LPC Controller - -pci:v00008086d00001C42* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller - -pci:v00008086d00001C43* - ID_PRODUCT_FROM_DATABASE=Mobile 6 Series Chipset Family LPC Controller - -pci:v00008086d00001C44* - ID_PRODUCT_FROM_DATABASE=Z68 Express Chipset Family LPC Controller - -pci:v00008086d00001C45* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller - -pci:v00008086d00001C46* - ID_PRODUCT_FROM_DATABASE=P67 Express Chipset Family LPC Controller - -pci:v00008086d00001C46sv00001043sd0000844D* - ID_PRODUCT_FROM_DATABASE=P8P67 Deluxe Motherboard - -pci:v00008086d00001C47* - ID_PRODUCT_FROM_DATABASE=UM67 Express Chipset Family LPC Controller - -pci:v00008086d00001C48* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller - -pci:v00008086d00001C49* - ID_PRODUCT_FROM_DATABASE=HM65 Express Chipset Family LPC Controller - -pci:v00008086d00001C49sv00008086sd00007270* - ID_PRODUCT_FROM_DATABASE=Apple MacBookPro8,2 [Core i7, 15", 2011] - -pci:v00008086d00001C4A* - ID_PRODUCT_FROM_DATABASE=H67 Express Chipset Family LPC Controller - -pci:v00008086d00001C4Asv00001028sd000004AA* - ID_PRODUCT_FROM_DATABASE=XPS 8300 - -pci:v00008086d00001C4B* - ID_PRODUCT_FROM_DATABASE=HM67 Express Chipset Family LPC Controller - -pci:v00008086d00001C4Bsv00001028sd000004B2* - ID_PRODUCT_FROM_DATABASE=Vostro 3350 - -pci:v00008086d00001C4Bsv00001028sd000004DA* - ID_PRODUCT_FROM_DATABASE=Vostro 3750 - -pci:v00008086d00001C4C* - ID_PRODUCT_FROM_DATABASE=Q65 Express Chipset Family LPC Controller - -pci:v00008086d00001C4D* - ID_PRODUCT_FROM_DATABASE=QS67 Express Chipset Family LPC Controller - -pci:v00008086d00001C4E* - ID_PRODUCT_FROM_DATABASE=Q67 Express Chipset Family LPC Controller - -pci:v00008086d00001C4F* - ID_PRODUCT_FROM_DATABASE=QM67 Express Chipset Family LPC Controller - -pci:v00008086d00001C4Fsv00001028sd000004A3* - ID_PRODUCT_FROM_DATABASE=Precision M4600 - -pci:v00008086d00001C50* - ID_PRODUCT_FROM_DATABASE=B65 Express Chipset Family LPC Controller - -pci:v00008086d00001C51* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller - -pci:v00008086d00001C52* - ID_PRODUCT_FROM_DATABASE=C202 Chipset Family LPC Controller - -pci:v00008086d00001C53* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller - -pci:v00008086d00001C54* - ID_PRODUCT_FROM_DATABASE=C204 Chipset Family LPC Controller - -pci:v00008086d00001C55* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller - -pci:v00008086d00001C56* - ID_PRODUCT_FROM_DATABASE=C206 Chipset Family LPC Controller - -pci:v00008086d00001C57* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller - -pci:v00008086d00001C58* - ID_PRODUCT_FROM_DATABASE=Upgraded B65 Express Chipset Family LPC Controller - -pci:v00008086d00001C59* - ID_PRODUCT_FROM_DATABASE=Upgraded HM67 Express Chipset Family LPC Controller - -pci:v00008086d00001C5A* - ID_PRODUCT_FROM_DATABASE=Upgraded Q67 Express Chipset Family LPC Controller - -pci:v00008086d00001C5B* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller - -pci:v00008086d00001C5C* - ID_PRODUCT_FROM_DATABASE=H61 Express Chipset Family LPC Controller - -pci:v00008086d00001C5D* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller - -pci:v00008086d00001C5E* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller - -pci:v00008086d00001C5F* - ID_PRODUCT_FROM_DATABASE=6 Series/C200 Series Chipset Family LPC Controller - -pci:v00008086d00001D00* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset 4-Port SATA IDE Controller - -pci:v00008086d00001D02* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset 6-Port SATA AHCI Controller - -pci:v00008086d00001D04* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller - -pci:v00008086d00001D06* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset SATA Premium RAID Controller - -pci:v00008086d00001D08* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset 2-Port SATA IDE Controller - -pci:v00008086d00001D10* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 1 - -pci:v00008086d00001D11* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 1 - -pci:v00008086d00001D12* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 2 - -pci:v00008086d00001D13* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 2 - -pci:v00008086d00001D14* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 3 - -pci:v00008086d00001D15* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 3 - -pci:v00008086d00001D16* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 4 - -pci:v00008086d00001D17* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 4 - -pci:v00008086d00001D18* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 5 - -pci:v00008086d00001D19* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 5 - -pci:v00008086d00001D1A* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 6 - -pci:v00008086d00001D1B* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 6 - -pci:v00008086d00001D1C* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 7 - -pci:v00008086d00001D1D* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 7 - -pci:v00008086d00001D1E* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 8 - -pci:v00008086d00001D1F* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Root Port 8 - -pci:v00008086d00001D20* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset High Definition Audio Controller - -pci:v00008086d00001D22* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset SMBus Host Controller - -pci:v00008086d00001D24* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset Thermal Management Controller - -pci:v00008086d00001D25* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset DMI to PCI Bridge - -pci:v00008086d00001D26* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset USB2 Enhanced Host Controller #1 - -pci:v00008086d00001D2D* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset USB2 Enhanced Host Controller #2 - -pci:v00008086d00001D33* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset LAN Controller - -pci:v00008086d00001D35* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset VECI Controller - -pci:v00008086d00001D3A* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset MEI Controller #1 - -pci:v00008086d00001D3B* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset MEI Controller #2 - -pci:v00008086d00001D3C* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset IDE-r Controller - -pci:v00008086d00001D3D* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset KT Controller - -pci:v00008086d00001D3E* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset PCI Express Virtual Root Port - -pci:v00008086d00001D3F* - ID_PRODUCT_FROM_DATABASE=C608/C606/X79 series chipset PCI Express Virtual Switch Port - -pci:v00008086d00001D40* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset LPC Controller - -pci:v00008086d00001D41* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset LPC Controller - -pci:v00008086d00001D50* - ID_PRODUCT_FROM_DATABASE=C608 chipset Dual 4-Port SATA/SAS Storage Control Unit - -pci:v00008086d00001D54* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit - -pci:v00008086d00001D55* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit - -pci:v00008086d00001D58* - ID_PRODUCT_FROM_DATABASE=C606 chipset Dual 4-Port SATA/SAS Storage Control Unit - -pci:v00008086d00001D59* - ID_PRODUCT_FROM_DATABASE=C604/X79 series chipset 4-Port SATA/SAS Storage Control Unit - -pci:v00008086d00001D5A* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA Storage Control Unit - -pci:v00008086d00001D5B* - ID_PRODUCT_FROM_DATABASE=C602 chipset 4-Port SATA Storage Control Unit - -pci:v00008086d00001D5C* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit - -pci:v00008086d00001D5D* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit - -pci:v00008086d00001D5E* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA Storage Control Unit - -pci:v00008086d00001D5F* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset 4-Port SATA Storage Control Unit - -pci:v00008086d00001D60* - ID_PRODUCT_FROM_DATABASE=C608 chipset Dual 4-Port SATA/SAS Storage Control Unit - -pci:v00008086d00001D64* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit - -pci:v00008086d00001D65* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit - -pci:v00008086d00001D68* - ID_PRODUCT_FROM_DATABASE=C606 chipset Dual 4-Port SATA/SAS Storage Control Unit - -pci:v00008086d00001D69* - ID_PRODUCT_FROM_DATABASE=C604/X79 series chipset 4-Port SATA/SAS Storage Control Unit - -pci:v00008086d00001D6A* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA Storage Control Unit - -pci:v00008086d00001D6B* - ID_PRODUCT_FROM_DATABASE=C602 chipset 4-Port SATA Storage Control Unit - -pci:v00008086d00001D6C* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA/SAS Storage Control Unit - -pci:v00008086d00001D6D* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset 4-Port SATA/SAS Storage Control Unit - -pci:v00008086d00001D6E* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset Dual 4-Port SATA Storage Control Unit - -pci:v00008086d00001D6F* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset 4-Port SATA Storage Control Unit - -pci:v00008086d00001D70* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset SMBus Controller 0 - -pci:v00008086d00001D71* - ID_PRODUCT_FROM_DATABASE=C608/C606/X79 series chipset SMBus Controller 1 - -pci:v00008086d00001D72* - ID_PRODUCT_FROM_DATABASE=C608 chipset SMBus Controller 2 - -pci:v00008086d00001D74* - ID_PRODUCT_FROM_DATABASE=C608/C606/X79 series chipset PCI Express Upstream Port - -pci:v00008086d00001D76* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset Multi-Function Glue - -pci:v00008086d00001E00* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family 4-port SATA Controller [IDE mode] - -pci:v00008086d00001E01* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family 4-port SATA Controller [IDE mode] - -pci:v00008086d00001E02* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] - -pci:v00008086d00001E02sv00001043sd000084CA* - ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard - -pci:v00008086d00001E03* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family 6-port SATA Controller [AHCI mode] - -pci:v00008086d00001E03sv00001043sd00001477* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00008086d00001E03sv00001043sd00001517* - ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A - -pci:v00008086d00001E04* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family SATA Controller [RAID mode] - -pci:v00008086d00001E05* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset SATA Controller [RAID mode] - -pci:v00008086d00001E06* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family SATA Controller [RAID mode] - -pci:v00008086d00001E07* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family SATA Controller [RAID mode] - -pci:v00008086d00001E08* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family 2-port SATA Controller [IDE mode] - -pci:v00008086d00001E09* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family 2-port SATA Controller [IDE mode] - -pci:v00008086d00001E0E* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family SATA Controller [RAID mode] - -pci:v00008086d00001E10* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 1 - -pci:v00008086d00001E10sv00001043sd00001477* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00008086d00001E10sv00001043sd00001517* - ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A - -pci:v00008086d00001E10sv00001043sd000084CA* - ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard - -pci:v00008086d00001E12* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 2 - -pci:v00008086d00001E12sv00001043sd00001477* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00008086d00001E12sv00001043sd00001517* - ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A - -pci:v00008086d00001E14* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 3 - -pci:v00008086d00001E16* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 4 - -pci:v00008086d00001E16sv00001043sd00001477* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00008086d00001E18* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 5 - -pci:v00008086d00001E18sv00001043sd000084CA* - ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard - -pci:v00008086d00001E1A* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 6 - -pci:v00008086d00001E1C* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 7 - -pci:v00008086d00001E1E* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family PCI Express Root Port 8 - -pci:v00008086d00001E20* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family High Definition Audio Controller - -pci:v00008086d00001E20sv00001043sd00001477* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00008086d00001E20sv00001043sd00001517* - ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A - -pci:v00008086d00001E20sv00001043sd00008415* - ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard - -pci:v00008086d00001E22* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family SMBus Controller - -pci:v00008086d00001E22sv00001043sd00001477* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00008086d00001E22sv00001043sd00001517* - ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A - -pci:v00008086d00001E22sv00001043sd000084CA* - ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard - -pci:v00008086d00001E24* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family Thermal Management Controller - -pci:v00008086d00001E24sv00001043sd00001517* - ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A - -pci:v00008086d00001E25* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family DMI to PCI Bridge - -pci:v00008086d00001E26* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #1 - -pci:v00008086d00001E26sv00001043sd00001477* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00008086d00001E26sv00001043sd00001517* - ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A - -pci:v00008086d00001E26sv00001043sd000084CA* - ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard - -pci:v00008086d00001E2D* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family USB Enhanced Host Controller #2 - -pci:v00008086d00001E2Dsv00001043sd00001477* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00008086d00001E2Dsv00001043sd00001517* - ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A - -pci:v00008086d00001E2Dsv00001043sd000084CA* - ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard - -pci:v00008086d00001E31* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family USB xHCI Host Controller - -pci:v00008086d00001E31sv00001043sd00001477* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00008086d00001E31sv00001043sd00001517* - ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A - -pci:v00008086d00001E31sv00001043sd000084CA* - ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard - -pci:v00008086d00001E33* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family LAN Controller - -pci:v00008086d00001E3A* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #1 - -pci:v00008086d00001E3Asv00001043sd00001477* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00008086d00001E3Asv00001043sd00001517* - ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A - -pci:v00008086d00001E3Asv00001043sd000084CA* - ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard - -pci:v00008086d00001E3B* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family MEI Controller #2 - -pci:v00008086d00001E3C* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family IDE-r Controller - -pci:v00008086d00001E3D* - ID_PRODUCT_FROM_DATABASE=7 Series/C210 Series Chipset Family KT Controller - -pci:v00008086d00001E41* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E42* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E43* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E44* - ID_PRODUCT_FROM_DATABASE=Z77 Express Chipset LPC Controller - -pci:v00008086d00001E45* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E46* - ID_PRODUCT_FROM_DATABASE=Z75 Express Chipset LPC Controller - -pci:v00008086d00001E47* - ID_PRODUCT_FROM_DATABASE=Q77 Express Chipset LPC Controller - -pci:v00008086d00001E48* - ID_PRODUCT_FROM_DATABASE=Q75 Express Chipset LPC Controller - -pci:v00008086d00001E49* - ID_PRODUCT_FROM_DATABASE=B75 Express Chipset LPC Controller - -pci:v00008086d00001E4A* - ID_PRODUCT_FROM_DATABASE=H77 Express Chipset LPC Controller - -pci:v00008086d00001E4Asv00001043sd000084CA* - ID_PRODUCT_FROM_DATABASE=P8H77-I Motherboard - -pci:v00008086d00001E4B* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E4C* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E4D* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E4E* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E4F* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E50* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E51* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E52* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E53* - ID_PRODUCT_FROM_DATABASE=C216 Series Chipset LPC Controller - -pci:v00008086d00001E54* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E55* - ID_PRODUCT_FROM_DATABASE=QM77 Express Chipset LPC Controller - -pci:v00008086d00001E56* - ID_PRODUCT_FROM_DATABASE=QS77 Express Chipset LPC Controller - -pci:v00008086d00001E57* - ID_PRODUCT_FROM_DATABASE=HM77 Express Chipset LPC Controller - -pci:v00008086d00001E58* - ID_PRODUCT_FROM_DATABASE=UM77 Express Chipset LPC Controller - -pci:v00008086d00001E59* - ID_PRODUCT_FROM_DATABASE=HM76 Express Chipset LPC Controller - -pci:v00008086d00001E59sv00001043sd00001477* - ID_PRODUCT_FROM_DATABASE=N56VZ - -pci:v00008086d00001E59sv00001043sd00001517* - ID_PRODUCT_FROM_DATABASE=Zenbook Prime UX31A - -pci:v00008086d00001E5A* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E5B* - ID_PRODUCT_FROM_DATABASE=UM77 Express Chipset LPC Controller - -pci:v00008086d00001E5C* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E5D* - ID_PRODUCT_FROM_DATABASE=HM75 Express Chipset LPC Controller - -pci:v00008086d00001E5E* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001E5F* - ID_PRODUCT_FROM_DATABASE=7 Series Chipset Family LPC Controller - -pci:v00008086d00001F00* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F01* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F02* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F03* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F04* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F05* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F06* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F07* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F08* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F09* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F0A* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F0B* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F0C* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F0D* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F0E* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F0F* - ID_PRODUCT_FROM_DATABASE=Avoton SSA-Cunit - -pci:v00008086d00001F10* - ID_PRODUCT_FROM_DATABASE=Avoton PCIe Root Port 1 - -pci:v00008086d00001F11* - ID_PRODUCT_FROM_DATABASE=Avoton PCIe Root Port 2 - -pci:v00008086d00001F12* - ID_PRODUCT_FROM_DATABASE=Avoton PCIe Root Port 3 - -pci:v00008086d00001F13* - ID_PRODUCT_FROM_DATABASE=Avoton PCIe Root Port 4 - -pci:v00008086d00001F14* - ID_PRODUCT_FROM_DATABASE=Avoton RAS - -pci:v00008086d00001F15* - ID_PRODUCT_FROM_DATABASE=Avoton SMBus 2.0 - -pci:v00008086d00001F16* - ID_PRODUCT_FROM_DATABASE=Avoton RCEC - -pci:v00008086d00001F18* - ID_PRODUCT_FROM_DATABASE=Avoton nCPM - -pci:v00008086d00001F19* - ID_PRODUCT_FROM_DATABASE=Avoton nCPM - -pci:v00008086d00001F20* - ID_PRODUCT_FROM_DATABASE=Avoton 4-Port IDE SATA2 Controller - -pci:v00008086d00001F21* - ID_PRODUCT_FROM_DATABASE=Avoton 4-Port IDE SATA2 Controller - -pci:v00008086d00001F22* - ID_PRODUCT_FROM_DATABASE=Avoton AHCI SATA2 Controller - -pci:v00008086d00001F23* - ID_PRODUCT_FROM_DATABASE=Avoton AHCI SATA2 Controller - -pci:v00008086d00001F24* - ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA2 Controller - -pci:v00008086d00001F25* - ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA2 Controller - -pci:v00008086d00001F26* - ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA2 Controller - -pci:v00008086d00001F27* - ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA2 Controller - -pci:v00008086d00001F2C* - ID_PRODUCT_FROM_DATABASE=Avoton USB Enhanced Host Controller - -pci:v00008086d00001F2E* - ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA2 Controller - -pci:v00008086d00001F2F* - ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA2 Controller - -pci:v00008086d00001F30* - ID_PRODUCT_FROM_DATABASE=Avoton 2-Port IDE SATA3 Controller - -pci:v00008086d00001F31* - ID_PRODUCT_FROM_DATABASE=Avoton 2-Port IDE SATA3 Controller - -pci:v00008086d00001F32* - ID_PRODUCT_FROM_DATABASE=Avoton AHCI SATA3 Controller - -pci:v00008086d00001F33* - ID_PRODUCT_FROM_DATABASE=Avoton AHCI SATA3 Controller - -pci:v00008086d00001F34* - ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA3 Controller - -pci:v00008086d00001F35* - ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA3 Controller - -pci:v00008086d00001F36* - ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA3 Controller - -pci:v00008086d00001F37* - ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA3 Controller - -pci:v00008086d00001F38* - ID_PRODUCT_FROM_DATABASE=Avoton PCU - -pci:v00008086d00001F39* - ID_PRODUCT_FROM_DATABASE=Avoton PCU - -pci:v00008086d00001F3A* - ID_PRODUCT_FROM_DATABASE=Avoton PCU - -pci:v00008086d00001F3B* - ID_PRODUCT_FROM_DATABASE=Avoton PCU - -pci:v00008086d00001F3C* - ID_PRODUCT_FROM_DATABASE=Avoton PCU SMBus - -pci:v00008086d00001F3D* - ID_PRODUCT_FROM_DATABASE=Avoton PCU SMBus - -pci:v00008086d00001F3E* - ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA3 Controller - -pci:v00008086d00001F3F* - ID_PRODUCT_FROM_DATABASE=Avoton RAID SATA3 Controller - -pci:v00008086d00001F40* - ID_PRODUCT_FROM_DATABASE=Avoton GbE x4 1000base-KX - -pci:v00008086d00001F41* - ID_PRODUCT_FROM_DATABASE=Avoton GbE x4 SGMII - -pci:v00008086d00001F42* - ID_PRODUCT_FROM_DATABASE=Avoton GbE - -pci:v00008086d00001F43* - ID_PRODUCT_FROM_DATABASE=Avoton GbE EEPROM-less - -pci:v00008086d00001F44* - ID_PRODUCT_FROM_DATABASE=Avoton GbE Virtual Function - -pci:v00008086d00001F45* - ID_PRODUCT_FROM_DATABASE=Avoton GbE 2500base-KX - -pci:v00008086d00002250* - ID_PRODUCT_FROM_DATABASE=Xeon Phi Coprocessor 5110P - -pci:v00008086d00002310* - ID_PRODUCT_FROM_DATABASE=DH89xxCC LPC Controller - -pci:v00008086d00002323* - ID_PRODUCT_FROM_DATABASE=DH89xxCC 4 Port SATA AHCI Controller - -pci:v00008086d00002330* - ID_PRODUCT_FROM_DATABASE=DH89xxCC SMBus Controller - -pci:v00008086d00002331* - ID_PRODUCT_FROM_DATABASE=DH89xxCC Chap Counter - -pci:v00008086d00002332* - ID_PRODUCT_FROM_DATABASE=DH89xxCC Thermal Subsystem - -pci:v00008086d00002334* - ID_PRODUCT_FROM_DATABASE=DH89xxCC USB2 Enhanced Host Controller #1 - -pci:v00008086d00002335* - ID_PRODUCT_FROM_DATABASE=DH89xxCC USB2 Enhanced Host Controller #1 - -pci:v00008086d00002342* - ID_PRODUCT_FROM_DATABASE=DH89xxCC PCI Express Root Port #1 - -pci:v00008086d00002343* - ID_PRODUCT_FROM_DATABASE=DH89xxCC PCI Express Root Port #1 - -pci:v00008086d00002344* - ID_PRODUCT_FROM_DATABASE=DH89xxCC PCI Express Root Port #2 - -pci:v00008086d00002345* - ID_PRODUCT_FROM_DATABASE=DH89xxCC PCI Express Root Port #2 - -pci:v00008086d00002346* - ID_PRODUCT_FROM_DATABASE=DH89xxCC PCI Express Root Port #3 - -pci:v00008086d00002347* - ID_PRODUCT_FROM_DATABASE=DH89xxCC PCI Express Root Port #3 - -pci:v00008086d00002348* - ID_PRODUCT_FROM_DATABASE=DH89xxCC PCI Express Root Port #4 - -pci:v00008086d00002349* - ID_PRODUCT_FROM_DATABASE=DH89xxCC PCI Express Root Port #4 - -pci:v00008086d00002360* - ID_PRODUCT_FROM_DATABASE=DH89xxCC Watchdog Timer - -pci:v00008086d00002364* - ID_PRODUCT_FROM_DATABASE=DH89xxCC MEI 0 - -pci:v00008086d00002365* - ID_PRODUCT_FROM_DATABASE=DH89xxCC MEI 1 - -pci:v00008086d00002410* - ID_PRODUCT_FROM_DATABASE=82801AA ISA Bridge (LPC) - -pci:v00008086d00002411* - ID_PRODUCT_FROM_DATABASE=82801AA IDE Controller - -pci:v00008086d00002412* - ID_PRODUCT_FROM_DATABASE=82801AA USB Controller - -pci:v00008086d00002413* - ID_PRODUCT_FROM_DATABASE=82801AA SMBus Controller - -pci:v00008086d00002415* - ID_PRODUCT_FROM_DATABASE=82801AA AC'97 Audio Controller - -pci:v00008086d00002415sv00001028sd00000095* - ID_PRODUCT_FROM_DATABASE=Precision Workstation 220 Integrated Digital Audio - -pci:v00008086d00002415sv00001028sd000000B4* - ID_PRODUCT_FROM_DATABASE=OptiPlex GX110 - -pci:v00008086d00002415sv0000110Asd00000051* - ID_PRODUCT_FROM_DATABASE=Activy 2xx - -pci:v00008086d00002415sv000011D4sd00000040* - ID_PRODUCT_FROM_DATABASE=SoundMAX Integrated Digital Audio - -pci:v00008086d00002415sv000011D4sd00000048* - ID_PRODUCT_FROM_DATABASE=SoundMAX Integrated Digital Audio - -pci:v00008086d00002415sv000011D4sd00005340* - ID_PRODUCT_FROM_DATABASE=SoundMAX Integrated Digital Audio - -pci:v00008086d00002415sv00001734sd00001025* - ID_PRODUCT_FROM_DATABASE=Activy 3xx - -pci:v00008086d00002416* - ID_PRODUCT_FROM_DATABASE=82801AA AC'97 Modem Controller - -pci:v00008086d00002418* - ID_PRODUCT_FROM_DATABASE=82801AA PCI Bridge - -pci:v00008086d00002420* - ID_PRODUCT_FROM_DATABASE=82801AB ISA Bridge (LPC) - -pci:v00008086d00002421* - ID_PRODUCT_FROM_DATABASE=82801AB IDE Controller - -pci:v00008086d00002422* - ID_PRODUCT_FROM_DATABASE=82801AB USB Controller - -pci:v00008086d00002423* - ID_PRODUCT_FROM_DATABASE=82801AB SMBus Controller - -pci:v00008086d00002425* - ID_PRODUCT_FROM_DATABASE=82801AB AC'97 Audio Controller - -pci:v00008086d00002425sv000011D4sd00000040* - ID_PRODUCT_FROM_DATABASE=SoundMAX Integrated Digital Audio - -pci:v00008086d00002425sv000011D4sd00000048* - ID_PRODUCT_FROM_DATABASE=SoundMAX Integrated Digital Audio - -pci:v00008086d00002426* - ID_PRODUCT_FROM_DATABASE=82801AB AC'97 Modem Controller - -pci:v00008086d00002428* - ID_PRODUCT_FROM_DATABASE=82801AB PCI Bridge - -pci:v00008086d00002440* - ID_PRODUCT_FROM_DATABASE=82801BA ISA Bridge (LPC) - -pci:v00008086d00002440sv00008086sd00005744* - ID_PRODUCT_FROM_DATABASE=S845WD1-E - -pci:v00008086d00002442* - ID_PRODUCT_FROM_DATABASE=82801BA/BAM USB Controller #1 - -pci:v00008086d00002442sv00001014sd000001C6* - ID_PRODUCT_FROM_DATABASE=Netvista A40/A40p - -pci:v00008086d00002442sv00001025sd00001016* - ID_PRODUCT_FROM_DATABASE=Travelmate 612 TX - -pci:v00008086d00002442sv00001028sd000000C7* - ID_PRODUCT_FROM_DATABASE=Dimension 8100 - -pci:v00008086d00002442sv00001028sd000000D8* - ID_PRODUCT_FROM_DATABASE=Precision 530 - -pci:v00008086d00002442sv00001028sd0000010E* - ID_PRODUCT_FROM_DATABASE=Optiplex GX240 - -pci:v00008086d00002442sv0000103Csd0000126F* - ID_PRODUCT_FROM_DATABASE=e-pc 40 - -pci:v00008086d00002442sv00001043sd00008027* - ID_PRODUCT_FROM_DATABASE=TUSL2-C Mainboard - -pci:v00008086d00002442sv0000104Dsd000080DF* - ID_PRODUCT_FROM_DATABASE=Vaio PCG-FX403 - -pci:v00008086d00002442sv0000147Bsd00000507* - ID_PRODUCT_FROM_DATABASE=TH7II-RAID - -pci:v00008086d00002442sv00008086sd00004532* - ID_PRODUCT_FROM_DATABASE=D815EEA2 mainboard - -pci:v00008086d00002442sv00008086sd00004557* - ID_PRODUCT_FROM_DATABASE=D815EGEW Mainboard - -pci:v00008086d00002442sv00008086sd00005744* - ID_PRODUCT_FROM_DATABASE=S845WD1-E mainboard - -pci:v00008086d00002443* - ID_PRODUCT_FROM_DATABASE=82801BA/BAM SMBus Controller - -pci:v00008086d00002443sv00001014sd000001C6* - ID_PRODUCT_FROM_DATABASE=Netvista A40/A40p - -pci:v00008086d00002443sv00001025sd00001016* - ID_PRODUCT_FROM_DATABASE=Travelmate 612 TX - -pci:v00008086d00002443sv00001028sd000000C7* - ID_PRODUCT_FROM_DATABASE=Dimension 8100 - -pci:v00008086d00002443sv00001028sd000000D8* - ID_PRODUCT_FROM_DATABASE=Precision 530 - -pci:v00008086d00002443sv00001028sd0000010E* - ID_PRODUCT_FROM_DATABASE=Optiplex GX240 - -pci:v00008086d00002443sv0000103Csd0000126F* - ID_PRODUCT_FROM_DATABASE=e-pc 40 - -pci:v00008086d00002443sv00001043sd00008027* - ID_PRODUCT_FROM_DATABASE=TUSL2-C Mainboard - -pci:v00008086d00002443sv0000104Dsd000080DF* - ID_PRODUCT_FROM_DATABASE=Vaio PCG-FX403 - -pci:v00008086d00002443sv0000147Bsd00000507* - ID_PRODUCT_FROM_DATABASE=TH7II-RAID - -pci:v00008086d00002443sv000015D9sd00003280* - ID_PRODUCT_FROM_DATABASE=Supermicro P4SBE Mainboard - -pci:v00008086d00002443sv00008086sd00004532* - ID_PRODUCT_FROM_DATABASE=D815EEA2 mainboard - -pci:v00008086d00002443sv00008086sd00004557* - ID_PRODUCT_FROM_DATABASE=D815EGEW Mainboard - -pci:v00008086d00002443sv00008086sd00005744* - ID_PRODUCT_FROM_DATABASE=S845WD1-E mainboard - -pci:v00008086d00002444* - ID_PRODUCT_FROM_DATABASE=82801BA/BAM USB Controller #1 - -pci:v00008086d00002444sv00001025sd00001016* - ID_PRODUCT_FROM_DATABASE=Travelmate 612 TX - -pci:v00008086d00002444sv00001028sd000000C7* - ID_PRODUCT_FROM_DATABASE=Dimension 8100 - -pci:v00008086d00002444sv00001028sd000000D8* - ID_PRODUCT_FROM_DATABASE=Precision 530 - -pci:v00008086d00002444sv00001028sd0000010E* - ID_PRODUCT_FROM_DATABASE=Optiplex GX240 - -pci:v00008086d00002444sv0000103Csd0000126F* - ID_PRODUCT_FROM_DATABASE=e-pc 40 - -pci:v00008086d00002444sv00001043sd00008027* - ID_PRODUCT_FROM_DATABASE=TUSL2-C Mainboard - -pci:v00008086d00002444sv0000104Dsd000080DF* - ID_PRODUCT_FROM_DATABASE=Vaio PCG-FX403 - -pci:v00008086d00002444sv0000147Bsd00000507* - ID_PRODUCT_FROM_DATABASE=TH7II-RAID - -pci:v00008086d00002444sv00008086sd00004532* - ID_PRODUCT_FROM_DATABASE=D815EEA2 mainboard - -pci:v00008086d00002444sv00008086sd00005744* - ID_PRODUCT_FROM_DATABASE=S845WD1-E mainboard - -pci:v00008086d00002445* - ID_PRODUCT_FROM_DATABASE=82801BA/BAM AC'97 Audio Controller - -pci:v00008086d00002445sv00000E11sd0000000B* - ID_PRODUCT_FROM_DATABASE=Compaq Deskpro EN Audio - -pci:v00008086d00002445sv00000E11sd00000088* - ID_PRODUCT_FROM_DATABASE=Evo D500 - -pci:v00008086d00002445sv00001014sd000001C6* - ID_PRODUCT_FROM_DATABASE=Netvista A40/A40p - -pci:v00008086d00002445sv00001025sd00001016* - ID_PRODUCT_FROM_DATABASE=Travelmate 612 TX - -pci:v00008086d00002445sv00001028sd000000D8* - ID_PRODUCT_FROM_DATABASE=Precision 530 - -pci:v00008086d00002445sv0000103Csd0000126F* - ID_PRODUCT_FROM_DATABASE=e-pc 40 - -pci:v00008086d00002445sv0000104Dsd000080DF* - ID_PRODUCT_FROM_DATABASE=Vaio PCG-FX403 - -pci:v00008086d00002445sv00001462sd00003370* - ID_PRODUCT_FROM_DATABASE=STAC9721 AC - -pci:v00008086d00002445sv0000147Bsd00000507* - ID_PRODUCT_FROM_DATABASE=TH7II-RAID - -pci:v00008086d00002445sv00008086sd00004557* - ID_PRODUCT_FROM_DATABASE=D815EGEW Mainboard - -pci:v00008086d00002446* - ID_PRODUCT_FROM_DATABASE=82801BA/BAM AC'97 Modem Controller - -pci:v00008086d00002446sv00001025sd00001016* - ID_PRODUCT_FROM_DATABASE=Travelmate 612 TX - -pci:v00008086d00002446sv0000104Dsd000080DF* - ID_PRODUCT_FROM_DATABASE=Vaio PCG-FX403 - -pci:v00008086d00002448* - ID_PRODUCT_FROM_DATABASE=82801 Mobile PCI Bridge - -pci:v00008086d00002448sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d00002448sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation - -pci:v00008086d00002448sv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v00008086d00002448sv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00008086d00002448sv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d00002448sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002448sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002448sv0000105Bsd00000D7C* - ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard - -pci:v00008086d00002448sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30 notebook - -pci:v00008086d00002448sv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d00002448sv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-D525TUD - -pci:v00008086d00002448sv00001734sd00001055* - ID_PRODUCT_FROM_DATABASE=Amilo M1420 - -pci:v00008086d00002448sv000017AAsd000020AE* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d00002448sv00008086sd0000544B* - ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT - -pci:v00008086d00002448sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002449* - ID_PRODUCT_FROM_DATABASE=82801BA/BAM/CA/CAM Ethernet Controller - -pci:v00008086d00002449sv00000E11sd00000012* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VM - -pci:v00008086d00002449sv00000E11sd00000091* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00001014sd000001CE* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00001014sd000001DC* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00001014sd000001EB* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00001014sd000001EC* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00001014sd00000202* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00001014sd00000205* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00001014sd00000217* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00001014sd00000234* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00001014sd0000023D* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00001014sd00000244* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00001014sd00000245* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00001014sd00000265* - ID_PRODUCT_FROM_DATABASE=PRO/100 VE Desktop Connection - -pci:v00008086d00002449sv00001014sd00000267* - ID_PRODUCT_FROM_DATABASE=PRO/100 VE Desktop Connection - -pci:v00008086d00002449sv00001014sd0000026A* - ID_PRODUCT_FROM_DATABASE=PRO/100 VE Desktop Connection - -pci:v00008086d00002449sv0000109Fsd0000315D* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv0000109Fsd00003181* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00001179sd0000FF01* - ID_PRODUCT_FROM_DATABASE=PRO/100 VE Network Connection - -pci:v00008086d00002449sv00001186sd00007801* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv0000144Dsd00002602* - ID_PRODUCT_FROM_DATABASE=HomePNA 1M CNR - -pci:v00008086d00002449sv00008086sd00003010* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00008086sd00003011* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VM - -pci:v00008086d00002449sv00008086sd00003012* - ID_PRODUCT_FROM_DATABASE=82562EH based Phoneline - -pci:v00008086d00002449sv00008086sd00003013* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VE - -pci:v00008086d00002449sv00008086sd00003014* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 VM - -pci:v00008086d00002449sv00008086sd00003015* - ID_PRODUCT_FROM_DATABASE=82562EH based Phoneline - -pci:v00008086d00002449sv00008086sd00003016* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 P Mobile Combo - -pci:v00008086d00002449sv00008086sd00003017* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 P Mobile - -pci:v00008086d00002449sv00008086sd00003018* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 - -pci:v00008086d0000244A* - ID_PRODUCT_FROM_DATABASE=82801BAM IDE U100 Controller - -pci:v00008086d0000244Asv00001025sd00001016* - ID_PRODUCT_FROM_DATABASE=Travelmate 612TX - -pci:v00008086d0000244Asv0000104Dsd000080DF* - ID_PRODUCT_FROM_DATABASE=Vaio PCG-FX403 - -pci:v00008086d0000244B* - ID_PRODUCT_FROM_DATABASE=82801BA IDE U100 Controller - -pci:v00008086d0000244Bsv00001014sd000001C6* - ID_PRODUCT_FROM_DATABASE=Netvista A40/A40p - -pci:v00008086d0000244Bsv00001028sd000000C7* - ID_PRODUCT_FROM_DATABASE=Dimension 8100 - -pci:v00008086d0000244Bsv00001028sd000000D8* - ID_PRODUCT_FROM_DATABASE=Precision 530 - -pci:v00008086d0000244Bsv00001028sd0000010E* - ID_PRODUCT_FROM_DATABASE=Optiplex GX240 - -pci:v00008086d0000244Bsv0000103Csd0000126F* - ID_PRODUCT_FROM_DATABASE=e-pc 40 - -pci:v00008086d0000244Bsv00001043sd00008027* - ID_PRODUCT_FROM_DATABASE=TUSL2-C Mainboard - -pci:v00008086d0000244Bsv0000147Bsd00000507* - ID_PRODUCT_FROM_DATABASE=TH7II-RAID - -pci:v00008086d0000244Bsv000015D9sd00003280* - ID_PRODUCT_FROM_DATABASE=Supermicro P4SBE Mainboard - -pci:v00008086d0000244Bsv00008086sd00004532* - ID_PRODUCT_FROM_DATABASE=D815EEA2 mainboard - -pci:v00008086d0000244Bsv00008086sd00004557* - ID_PRODUCT_FROM_DATABASE=D815EGEW Mainboard - -pci:v00008086d0000244Bsv00008086sd00005744* - ID_PRODUCT_FROM_DATABASE=S845WD1-E mainboard - -pci:v00008086d0000244C* - ID_PRODUCT_FROM_DATABASE=82801BAM ISA Bridge (LPC) - -pci:v00008086d0000244E* - ID_PRODUCT_FROM_DATABASE=82801 PCI Bridge - -pci:v00008086d0000244Esv00001014sd00000267* - ID_PRODUCT_FROM_DATABASE=NetVista A30p - -pci:v00008086d0000244Esv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d0000244Esv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d0000244Esv00001028sd000002DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 980 - -pci:v00008086d0000244Esv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Pavilion A1512X - -pci:v00008086d0000244Esv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d0000244Esv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant ML150 G6 Server - -pci:v00008086d0000244Esv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d0000244Esv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=Motherboard - -pci:v00008086d0000244Esv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d0000244Esv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d00002450* - ID_PRODUCT_FROM_DATABASE=82801E ISA Bridge (LPC) - -pci:v00008086d00002452* - ID_PRODUCT_FROM_DATABASE=82801E USB Controller - -pci:v00008086d00002453* - ID_PRODUCT_FROM_DATABASE=82801E SMBus Controller - -pci:v00008086d00002459* - ID_PRODUCT_FROM_DATABASE=82801E Ethernet Controller 0 - -pci:v00008086d0000245B* - ID_PRODUCT_FROM_DATABASE=82801E IDE U100 Controller - -pci:v00008086d0000245D* - ID_PRODUCT_FROM_DATABASE=82801E Ethernet Controller 1 - -pci:v00008086d0000245E* - ID_PRODUCT_FROM_DATABASE=82801E PCI Bridge - -pci:v00008086d00002480* - ID_PRODUCT_FROM_DATABASE=82801CA LPC Interface Controller - -pci:v00008086d00002482* - ID_PRODUCT_FROM_DATABASE=82801CA/CAM USB Controller #1 - -pci:v00008086d00002482sv00000E11sd00000030* - ID_PRODUCT_FROM_DATABASE=Evo N600c - -pci:v00008086d00002482sv00001014sd00000220* - ID_PRODUCT_FROM_DATABASE=ThinkPad A/T/X Series - -pci:v00008086d00002482sv0000104Dsd000080E7* - ID_PRODUCT_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - -pci:v00008086d00002482sv000015D9sd00003480* - ID_PRODUCT_FROM_DATABASE=P4DP6 - -pci:v00008086d00002482sv00008086sd00001958* - ID_PRODUCT_FROM_DATABASE=vpr Matrix 170B4 - -pci:v00008086d00002482sv00008086sd00003424* - ID_PRODUCT_FROM_DATABASE=SE7501HG2 Mainboard - -pci:v00008086d00002482sv00008086sd00004541* - ID_PRODUCT_FROM_DATABASE=Latitude C640 - -pci:v00008086d00002483* - ID_PRODUCT_FROM_DATABASE=82801CA/CAM SMBus Controller - -pci:v00008086d00002483sv00001014sd00000220* - ID_PRODUCT_FROM_DATABASE=ThinkPad A/T/X Series - -pci:v00008086d00002483sv0000104Dsd000080E7* - ID_PRODUCT_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - -pci:v00008086d00002483sv000015D9sd00003480* - ID_PRODUCT_FROM_DATABASE=P4DP6 - -pci:v00008086d00002483sv00008086sd00001958* - ID_PRODUCT_FROM_DATABASE=vpr Matrix 170B4 - -pci:v00008086d00002484* - ID_PRODUCT_FROM_DATABASE=82801CA/CAM USB Controller #2 - -pci:v00008086d00002484sv00000E11sd00000030* - ID_PRODUCT_FROM_DATABASE=Evo N600c - -pci:v00008086d00002484sv00001014sd00000220* - ID_PRODUCT_FROM_DATABASE=ThinkPad A/T/X Series - -pci:v00008086d00002484sv0000104Dsd000080E7* - ID_PRODUCT_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - -pci:v00008086d00002484sv000015D9sd00003480* - ID_PRODUCT_FROM_DATABASE=P4DP6 - -pci:v00008086d00002484sv00008086sd00001958* - ID_PRODUCT_FROM_DATABASE=vpr Matrix 170B4 - -pci:v00008086d00002485* - ID_PRODUCT_FROM_DATABASE=82801CA/CAM AC'97 Audio Controller - -pci:v00008086d00002485sv00001013sd00005959* - ID_PRODUCT_FROM_DATABASE=Crystal WMD Audio Codec - -pci:v00008086d00002485sv00001014sd00000222* - ID_PRODUCT_FROM_DATABASE=ThinkPad A30/A30p/T23 - -pci:v00008086d00002485sv00001014sd00000508* - ID_PRODUCT_FROM_DATABASE=ThinkPad T30 - -pci:v00008086d00002485sv00001014sd0000051C* - ID_PRODUCT_FROM_DATABASE=ThinkPad A/T/X Series - -pci:v00008086d00002485sv00001043sd00001583* - ID_PRODUCT_FROM_DATABASE=L3C (SPDIF) - -pci:v00008086d00002485sv00001043sd00001623* - ID_PRODUCT_FROM_DATABASE=L2B (no SPDIF) - -pci:v00008086d00002485sv00001043sd00001643* - ID_PRODUCT_FROM_DATABASE=L3F - -pci:v00008086d00002485sv0000104Dsd000080E7* - ID_PRODUCT_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - -pci:v00008086d00002485sv0000144Dsd0000C006* - ID_PRODUCT_FROM_DATABASE=vpr Matrix 170B4 - -pci:v00008086d00002486* - ID_PRODUCT_FROM_DATABASE=82801CA/CAM AC'97 Modem Controller - -pci:v00008086d00002486sv00001014sd00000223* - ID_PRODUCT_FROM_DATABASE=ThinkPad A/T/X Series - -pci:v00008086d00002486sv00001014sd00000503* - ID_PRODUCT_FROM_DATABASE=ThinkPad R31 - -pci:v00008086d00002486sv00001014sd0000051A* - ID_PRODUCT_FROM_DATABASE=ThinkPad A/T/X Series - -pci:v00008086d00002486sv0000101Fsd00001025* - ID_PRODUCT_FROM_DATABASE=620 Series - -pci:v00008086d00002486sv00001043sd00001496* - ID_PRODUCT_FROM_DATABASE=PCtel HSP56 MR - -pci:v00008086d00002486sv0000104Dsd000080E7* - ID_PRODUCT_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - -pci:v00008086d00002486sv0000134Dsd00004C21* - ID_PRODUCT_FROM_DATABASE=Dell Inspiron 2100 internal modem - -pci:v00008086d00002486sv0000144Dsd00002115* - ID_PRODUCT_FROM_DATABASE=vpr Matrix 170B4 internal modem - -pci:v00008086d00002486sv000014F1sd00005421* - ID_PRODUCT_FROM_DATABASE=MD56ORD V.92 MDC Modem - -pci:v00008086d00002487* - ID_PRODUCT_FROM_DATABASE=82801CA/CAM USB Controller #3 - -pci:v00008086d00002487sv00000E11sd00000030* - ID_PRODUCT_FROM_DATABASE=Evo N600c - -pci:v00008086d00002487sv00001014sd00000220* - ID_PRODUCT_FROM_DATABASE=ThinkPad A/T/X Series - -pci:v00008086d00002487sv0000104Dsd000080E7* - ID_PRODUCT_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - -pci:v00008086d00002487sv000015D9sd00003480* - ID_PRODUCT_FROM_DATABASE=P4DP6 - -pci:v00008086d00002487sv00008086sd00001958* - ID_PRODUCT_FROM_DATABASE=vpr Matrix 170B4 - -pci:v00008086d0000248A* - ID_PRODUCT_FROM_DATABASE=82801CAM IDE U100 Controller - -pci:v00008086d0000248Asv00000E11sd00000030* - ID_PRODUCT_FROM_DATABASE=Evo N600c - -pci:v00008086d0000248Asv00001014sd00000220* - ID_PRODUCT_FROM_DATABASE=ThinkPad A/T/X Series - -pci:v00008086d0000248Asv0000104Dsd000080E7* - ID_PRODUCT_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - -pci:v00008086d0000248Asv00008086sd00001958* - ID_PRODUCT_FROM_DATABASE=vpr Matrix 170B4 - -pci:v00008086d0000248Asv00008086sd00004541* - ID_PRODUCT_FROM_DATABASE=Latitude C640 - -pci:v00008086d0000248B* - ID_PRODUCT_FROM_DATABASE=82801CA Ultra ATA Storage Controller - -pci:v00008086d0000248Bsv000015D9sd00003480* - ID_PRODUCT_FROM_DATABASE=P4DP6 - -pci:v00008086d0000248C* - ID_PRODUCT_FROM_DATABASE=82801CAM ISA Bridge (LPC) - -pci:v00008086d000024C0* - ID_PRODUCT_FROM_DATABASE=82801DB/DBL (ICH4/ICH4-L) LPC Interface Bridge - -pci:v00008086d000024C0sv00001014sd00000267* - ID_PRODUCT_FROM_DATABASE=NetVista A30p - -pci:v00008086d000024C0sv00001462sd00005800* - ID_PRODUCT_FROM_DATABASE=845PE Max (MS-6580) - -pci:v00008086d000024C1* - ID_PRODUCT_FROM_DATABASE=82801DBL (ICH4-L) IDE Controller - -pci:v00008086d000024C2* - ID_PRODUCT_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #1 - -pci:v00008086d000024C2sv00001014sd00000267* - ID_PRODUCT_FROM_DATABASE=NetVista A30p - -pci:v00008086d000024C2sv00001014sd0000052D* - ID_PRODUCT_FROM_DATABASE=ThinkPad - -pci:v00008086d000024C2sv00001025sd0000005A* - ID_PRODUCT_FROM_DATABASE=TravelMate 290 - -pci:v00008086d000024C2sv00001028sd00000126* - ID_PRODUCT_FROM_DATABASE=Optiplex GX260 - -pci:v00008086d000024C2sv00001028sd00000163* - ID_PRODUCT_FROM_DATABASE=Latitude D505 - -pci:v00008086d000024C2sv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m - -pci:v00008086d000024C2sv00001028sd00000196* - ID_PRODUCT_FROM_DATABASE=Inspiron 5160 - -pci:v00008086d000024C2sv0000103Csd0000088C* - ID_PRODUCT_FROM_DATABASE=NC8000 laptop - -pci:v00008086d000024C2sv0000103Csd00000890* - ID_PRODUCT_FROM_DATABASE=NC6000 laptop - -pci:v00008086d000024C2sv0000103Csd000008B0* - ID_PRODUCT_FROM_DATABASE=tc1100 tablet - -pci:v00008086d000024C2sv00001043sd00008089* - ID_PRODUCT_FROM_DATABASE=P4B533 - -pci:v00008086d000024C2sv00001071sd00008160* - ID_PRODUCT_FROM_DATABASE=MIM2000 - -pci:v00008086d000024C2sv0000114Asd00000582* - ID_PRODUCT_FROM_DATABASE=PC8 onboard USB 1.x - -pci:v00008086d000024C2sv0000144Dsd0000C005* - ID_PRODUCT_FROM_DATABASE=X10 Laptop - -pci:v00008086d000024C2sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30/P35 notebook - -pci:v00008086d000024C2sv00001462sd00005800* - ID_PRODUCT_FROM_DATABASE=845PE Max (MS-6580) - -pci:v00008086d000024C2sv00001509sd00002990* - ID_PRODUCT_FROM_DATABASE=Averatec 5110H laptop - -pci:v00008086d000024C2sv00001734sd00001004* - ID_PRODUCT_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV) - -pci:v00008086d000024C2sv00001734sd00001055* - ID_PRODUCT_FROM_DATABASE=Amilo M1420 - -pci:v00008086d000024C2sv00004C53sd00001090* - ID_PRODUCT_FROM_DATABASE=Cx9 / Vx9 mainboard - -pci:v00008086d000024C2sv00008086sd000024C2* - ID_PRODUCT_FROM_DATABASE=Latitude X300 - -pci:v00008086d000024C2sv00008086sd00004541* - ID_PRODUCT_FROM_DATABASE=Latitude D400/D500 - -pci:v00008086d000024C2sv0000E4BFsd00000CC9* - ID_PRODUCT_FROM_DATABASE=CC9-SAMBA - -pci:v00008086d000024C2sv0000E4BFsd00000CD2* - ID_PRODUCT_FROM_DATABASE=CD2-BEBOP - -pci:v00008086d000024C3* - ID_PRODUCT_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) SMBus Controller - -pci:v00008086d000024C3sv00001014sd00000267* - ID_PRODUCT_FROM_DATABASE=NetVista A30p - -pci:v00008086d000024C3sv00001014sd0000052D* - ID_PRODUCT_FROM_DATABASE=ThinkPad - -pci:v00008086d000024C3sv00001025sd0000005A* - ID_PRODUCT_FROM_DATABASE=TravelMate 290 - -pci:v00008086d000024C3sv00001028sd00000126* - ID_PRODUCT_FROM_DATABASE=Optiplex GX260 - -pci:v00008086d000024C3sv00001028sd0000014F* - ID_PRODUCT_FROM_DATABASE=Latitude X300 - -pci:v00008086d000024C3sv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m - -pci:v00008086d000024C3sv0000103Csd0000088C* - ID_PRODUCT_FROM_DATABASE=NC8000 laptop - -pci:v00008086d000024C3sv0000103Csd00000890* - ID_PRODUCT_FROM_DATABASE=NC6000 laptop - -pci:v00008086d000024C3sv0000103Csd000008B0* - ID_PRODUCT_FROM_DATABASE=tc1100 tablet - -pci:v00008086d000024C3sv00001071sd00008160* - ID_PRODUCT_FROM_DATABASE=MIM2000 - -pci:v00008086d000024C3sv0000114Asd00000582* - ID_PRODUCT_FROM_DATABASE=PC8 onboard SMbus - -pci:v00008086d000024C3sv0000144Dsd0000C005* - ID_PRODUCT_FROM_DATABASE=X10 Laptop - -pci:v00008086d000024C3sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30/P35 notebook - -pci:v00008086d000024C3sv00001458sd000024C2* - ID_PRODUCT_FROM_DATABASE=GA-8PE667 Ultra - -pci:v00008086d000024C3sv00001462sd00005800* - ID_PRODUCT_FROM_DATABASE=845PE Max (MS-6580) - -pci:v00008086d000024C3sv00001734sd00001004* - ID_PRODUCT_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV) - -pci:v00008086d000024C3sv00001734sd00001055* - ID_PRODUCT_FROM_DATABASE=Amilo M1420 - -pci:v00008086d000024C3sv00004C53sd00001090* - ID_PRODUCT_FROM_DATABASE=Cx9 / Vx9 mainboard - -pci:v00008086d000024C3sv0000E4BFsd00000CC9* - ID_PRODUCT_FROM_DATABASE=CC9-SAMBA - -pci:v00008086d000024C3sv0000E4BFsd00000CD2* - ID_PRODUCT_FROM_DATABASE=CD2-BEBOP - -pci:v00008086d000024C4* - ID_PRODUCT_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #2 - -pci:v00008086d000024C4sv00001014sd00000267* - ID_PRODUCT_FROM_DATABASE=NetVista A30p - -pci:v00008086d000024C4sv00001014sd0000052D* - ID_PRODUCT_FROM_DATABASE=ThinkPad - -pci:v00008086d000024C4sv00001025sd0000005A* - ID_PRODUCT_FROM_DATABASE=TravelMate 290 - -pci:v00008086d000024C4sv00001028sd00000126* - ID_PRODUCT_FROM_DATABASE=Optiplex GX260 - -pci:v00008086d000024C4sv00001028sd00000163* - ID_PRODUCT_FROM_DATABASE=Latitude D505 - -pci:v00008086d000024C4sv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m - -pci:v00008086d000024C4sv00001028sd00000196* - ID_PRODUCT_FROM_DATABASE=Inspiron 5160 - -pci:v00008086d000024C4sv0000103Csd0000088C* - ID_PRODUCT_FROM_DATABASE=NC8000 laptop - -pci:v00008086d000024C4sv0000103Csd00000890* - ID_PRODUCT_FROM_DATABASE=NC6000 laptop - -pci:v00008086d000024C4sv0000103Csd000008B0* - ID_PRODUCT_FROM_DATABASE=tc1100 tablet - -pci:v00008086d000024C4sv00001043sd00008089* - ID_PRODUCT_FROM_DATABASE=P4B533 - -pci:v00008086d000024C4sv00001071sd00008160* - ID_PRODUCT_FROM_DATABASE=MIM2000 - -pci:v00008086d000024C4sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30/P35 notebook - -pci:v00008086d000024C4sv00001462sd00005800* - ID_PRODUCT_FROM_DATABASE=845PE Max (MS-6580) - -pci:v00008086d000024C4sv00001509sd00002990* - ID_PRODUCT_FROM_DATABASE=Averatec 5110H - -pci:v00008086d000024C4sv00001734sd00001004* - ID_PRODUCT_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV) - -pci:v00008086d000024C4sv00004C53sd00001090* - ID_PRODUCT_FROM_DATABASE=Cx9 / Vx9 mainboard - -pci:v00008086d000024C4sv00008086sd000024C2* - ID_PRODUCT_FROM_DATABASE=Latitude X300 - -pci:v00008086d000024C4sv00008086sd00004541* - ID_PRODUCT_FROM_DATABASE=Latitude D400/D500 - -pci:v00008086d000024C4sv0000E4BFsd00000CC9* - ID_PRODUCT_FROM_DATABASE=CC9-SAMBA - -pci:v00008086d000024C4sv0000E4BFsd00000CD2* - ID_PRODUCT_FROM_DATABASE=CD2-BEBOP - -pci:v00008086d000024C5* - ID_PRODUCT_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Audio Controller - -pci:v00008086d000024C5sv00000E11sd000000B8* - ID_PRODUCT_FROM_DATABASE=Analog Devices Inc. codec [SoundMAX] - -pci:v00008086d000024C5sv00001014sd00000267* - ID_PRODUCT_FROM_DATABASE=NetVista A30p - -pci:v00008086d000024C5sv00001014sd00000537* - ID_PRODUCT_FROM_DATABASE=ThinkPad T41 - -pci:v00008086d000024C5sv00001014sd0000055F* - ID_PRODUCT_FROM_DATABASE=Thinkpad R50e model 1634 - -pci:v00008086d000024C5sv00001025sd0000005A* - ID_PRODUCT_FROM_DATABASE=TravelMate 290 - -pci:v00008086d000024C5sv00001028sd00000139* - ID_PRODUCT_FROM_DATABASE=Latitude D400 - -pci:v00008086d000024C5sv00001028sd0000014F* - ID_PRODUCT_FROM_DATABASE=Latitude X300 - -pci:v00008086d000024C5sv00001028sd00000152* - ID_PRODUCT_FROM_DATABASE=Latitude D500 - -pci:v00008086d000024C5sv00001028sd00000163* - ID_PRODUCT_FROM_DATABASE=Latitude D505 - -pci:v00008086d000024C5sv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m [SigmaTel STAC9750,51] - -pci:v00008086d000024C5sv00001028sd00000196* - ID_PRODUCT_FROM_DATABASE=Inspiron 5160 - -pci:v00008086d000024C5sv0000103Csd0000088C* - ID_PRODUCT_FROM_DATABASE=NC8000 laptop - -pci:v00008086d000024C5sv0000103Csd00000890* - ID_PRODUCT_FROM_DATABASE=NC6000 laptop - -pci:v00008086d000024C5sv0000103Csd000008B0* - ID_PRODUCT_FROM_DATABASE=tc1100 tablet - -pci:v00008086d000024C5sv00001043sd00001713* - ID_PRODUCT_FROM_DATABASE=M2400N/M6800N laptop - -pci:v00008086d000024C5sv00001043sd000080B0* - ID_PRODUCT_FROM_DATABASE=P4B533 - -pci:v00008086d000024C5sv00001071sd00008160* - ID_PRODUCT_FROM_DATABASE=MIM2000 - -pci:v00008086d000024C5sv00001179sd00000201* - ID_PRODUCT_FROM_DATABASE=Toshiba Tecra M1 - -pci:v00008086d000024C5sv0000144Dsd0000C005* - ID_PRODUCT_FROM_DATABASE=X10 Laptop - -pci:v00008086d000024C5sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30/P35 notebook - -pci:v00008086d000024C5sv00001458sd0000A002* - ID_PRODUCT_FROM_DATABASE=GA-8PE667 Ultra - -pci:v00008086d000024C5sv00001462sd00005800* - ID_PRODUCT_FROM_DATABASE=845PE Max (MS-6580) - -pci:v00008086d000024C5sv00001734sd00001005* - ID_PRODUCT_FROM_DATABASE=D1451 (SCENIC N300, i845GV) Sigmatel STAC9750T - -pci:v00008086d000024C5sv00001734sd00001055* - ID_PRODUCT_FROM_DATABASE=Amilo M1420 - -pci:v00008086d000024C5sv00008086sd000024C5* - ID_PRODUCT_FROM_DATABASE=Dell Dimension 2400 - -pci:v00008086d000024C6* - ID_PRODUCT_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) AC'97 Modem Controller - -pci:v00008086d000024C6sv00001014sd00000524* - ID_PRODUCT_FROM_DATABASE=ThinkPad T41 - -pci:v00008086d000024C6sv00001014sd00000525* - ID_PRODUCT_FROM_DATABASE=ThinkPad - -pci:v00008086d000024C6sv00001014sd00000559* - ID_PRODUCT_FROM_DATABASE=ThinkPad R50e - -pci:v00008086d000024C6sv00001025sd0000003C* - ID_PRODUCT_FROM_DATABASE=Aspire 2001WLCi (Compal CL50 motherboard) implementation - -pci:v00008086d000024C6sv00001025sd0000005A* - ID_PRODUCT_FROM_DATABASE=TravelMate 290 - -pci:v00008086d000024C6sv00001028sd00000196* - ID_PRODUCT_FROM_DATABASE=Inspiron 5160 - -pci:v00008086d000024C6sv0000103Csd0000088C* - ID_PRODUCT_FROM_DATABASE=NC8000 laptop - -pci:v00008086d000024C6sv0000103Csd00000890* - ID_PRODUCT_FROM_DATABASE=NC6000 laptop - -pci:v00008086d000024C6sv0000103Csd000008B0* - ID_PRODUCT_FROM_DATABASE=tc1100 tablet - -pci:v00008086d000024C6sv00001043sd00001716* - ID_PRODUCT_FROM_DATABASE=M2400N laptop - -pci:v00008086d000024C6sv00001043sd00001826* - ID_PRODUCT_FROM_DATABASE=M6800N - -pci:v00008086d000024C6sv00001071sd00008160* - ID_PRODUCT_FROM_DATABASE=MIM2000 - -pci:v00008086d000024C6sv0000134Dsd00004C21* - ID_PRODUCT_FROM_DATABASE=Latitude D500 - -pci:v00008086d000024C6sv0000144Dsd00002115* - ID_PRODUCT_FROM_DATABASE=X10 Laptop - -pci:v00008086d000024C6sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30/P35 notebook - -pci:v00008086d000024C6sv000014F1sd00005422* - ID_PRODUCT_FROM_DATABASE=D480 MDC V.9x Modem - -pci:v00008086d000024C7* - ID_PRODUCT_FROM_DATABASE=82801DB/DBL/DBM (ICH4/ICH4-L/ICH4-M) USB UHCI Controller #3 - -pci:v00008086d000024C7sv00001014sd00000267* - ID_PRODUCT_FROM_DATABASE=NetVista A30p - -pci:v00008086d000024C7sv00001014sd0000052D* - ID_PRODUCT_FROM_DATABASE=ThinkPad - -pci:v00008086d000024C7sv00001025sd0000005A* - ID_PRODUCT_FROM_DATABASE=TravelMate 290 - -pci:v00008086d000024C7sv00001028sd00000126* - ID_PRODUCT_FROM_DATABASE=Optiplex GX260 - -pci:v00008086d000024C7sv00001028sd00000163* - ID_PRODUCT_FROM_DATABASE=Latitude D505 - -pci:v00008086d000024C7sv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m - -pci:v00008086d000024C7sv00001028sd00000196* - ID_PRODUCT_FROM_DATABASE=Inspiron 5160 - -pci:v00008086d000024C7sv0000103Csd0000088C* - ID_PRODUCT_FROM_DATABASE=NC8000 laptop - -pci:v00008086d000024C7sv0000103Csd00000890* - ID_PRODUCT_FROM_DATABASE=NC6000 laptop - -pci:v00008086d000024C7sv0000103Csd000008B0* - ID_PRODUCT_FROM_DATABASE=tc1100 tablet - -pci:v00008086d000024C7sv00001043sd00008089* - ID_PRODUCT_FROM_DATABASE=P4B533 - -pci:v00008086d000024C7sv00001071sd00008160* - ID_PRODUCT_FROM_DATABASE=MIM2000 - -pci:v00008086d000024C7sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30/P35 notebook - -pci:v00008086d000024C7sv00001462sd00005800* - ID_PRODUCT_FROM_DATABASE=845PE Max (MS-6580) - -pci:v00008086d000024C7sv00001509sd00002990* - ID_PRODUCT_FROM_DATABASE=Averatec 5110H - -pci:v00008086d000024C7sv00001734sd00001004* - ID_PRODUCT_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV) - -pci:v00008086d000024C7sv00004C53sd00001090* - ID_PRODUCT_FROM_DATABASE=Cx9 / Vx9 mainboard - -pci:v00008086d000024C7sv00008086sd000024C2* - ID_PRODUCT_FROM_DATABASE=Latitude X300 - -pci:v00008086d000024C7sv00008086sd00004541* - ID_PRODUCT_FROM_DATABASE=Latitude D400/D500 - -pci:v00008086d000024C7sv0000E4BFsd00000CC9* - ID_PRODUCT_FROM_DATABASE=CC9-SAMBA - -pci:v00008086d000024C7sv0000E4BFsd00000CD2* - ID_PRODUCT_FROM_DATABASE=CD2-BEBOP - -pci:v00008086d000024CA* - ID_PRODUCT_FROM_DATABASE=82801DBM (ICH4-M) IDE Controller - -pci:v00008086d000024CAsv00001014sd0000052D* - ID_PRODUCT_FROM_DATABASE=ThinkPad - -pci:v00008086d000024CAsv00001025sd0000005A* - ID_PRODUCT_FROM_DATABASE=TravelMate 290 - -pci:v00008086d000024CAsv00001028sd0000014F* - ID_PRODUCT_FROM_DATABASE=Latitude X300 - -pci:v00008086d000024CAsv00001028sd00000163* - ID_PRODUCT_FROM_DATABASE=Latitude D505 - -pci:v00008086d000024CAsv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m - -pci:v00008086d000024CAsv00001028sd00000196* - ID_PRODUCT_FROM_DATABASE=Inspiron 5160 - -pci:v00008086d000024CAsv0000103Csd0000088C* - ID_PRODUCT_FROM_DATABASE=NC8000 laptop - -pci:v00008086d000024CAsv0000103Csd00000890* - ID_PRODUCT_FROM_DATABASE=NC6000 laptop - -pci:v00008086d000024CAsv0000103Csd000008B0* - ID_PRODUCT_FROM_DATABASE=tc1100 tablet - -pci:v00008086d000024CAsv00001071sd00008160* - ID_PRODUCT_FROM_DATABASE=MIM2000 - -pci:v00008086d000024CAsv0000144Dsd0000C005* - ID_PRODUCT_FROM_DATABASE=X10 Laptop - -pci:v00008086d000024CAsv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30/P35 notebook - -pci:v00008086d000024CAsv00001734sd00001055* - ID_PRODUCT_FROM_DATABASE=Amilo M1420 - -pci:v00008086d000024CAsv00008086sd00004541* - ID_PRODUCT_FROM_DATABASE=Latitude D400/D500 - -pci:v00008086d000024CB* - ID_PRODUCT_FROM_DATABASE=82801DB (ICH4) IDE Controller - -pci:v00008086d000024CBsv00001014sd00000267* - ID_PRODUCT_FROM_DATABASE=NetVista A30p - -pci:v00008086d000024CBsv00001028sd00000126* - ID_PRODUCT_FROM_DATABASE=Optiplex GX260 - -pci:v00008086d000024CBsv00001043sd00008089* - ID_PRODUCT_FROM_DATABASE=P4B533 - -pci:v00008086d000024CBsv0000114Asd00000582* - ID_PRODUCT_FROM_DATABASE=PC8 onboard IDE - -pci:v00008086d000024CBsv00001458sd000024C2* - ID_PRODUCT_FROM_DATABASE=GA-8PE667 Ultra - -pci:v00008086d000024CBsv00001462sd00005800* - ID_PRODUCT_FROM_DATABASE=845PE Max (MS-6580) - -pci:v00008086d000024CBsv00001734sd00001004* - ID_PRODUCT_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV) - -pci:v00008086d000024CBsv00004C53sd00001090* - ID_PRODUCT_FROM_DATABASE=Cx9 / Vx9 mainboard - -pci:v00008086d000024CBsv0000E4BFsd00000CC9* - ID_PRODUCT_FROM_DATABASE=CC9-SAMBA - -pci:v00008086d000024CBsv0000E4BFsd00000CD2* - ID_PRODUCT_FROM_DATABASE=CD2-BEBOP - -pci:v00008086d000024CC* - ID_PRODUCT_FROM_DATABASE=82801DBM (ICH4-M) LPC Interface Bridge - -pci:v00008086d000024CCsv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30 notebook - -pci:v00008086d000024CCsv00001734sd00001055* - ID_PRODUCT_FROM_DATABASE=Amilo M1420 - -pci:v00008086d000024CD* - ID_PRODUCT_FROM_DATABASE=82801DB/DBM (ICH4/ICH4-M) USB2 EHCI Controller - -pci:v00008086d000024CDsv00001014sd00000267* - ID_PRODUCT_FROM_DATABASE=NetVista A30p - -pci:v00008086d000024CDsv00001014sd0000052E* - ID_PRODUCT_FROM_DATABASE=ThinkPad - -pci:v00008086d000024CDsv00001025sd0000005A* - ID_PRODUCT_FROM_DATABASE=TravelMate 290 - -pci:v00008086d000024CDsv00001028sd0000011D* - ID_PRODUCT_FROM_DATABASE=Latitude D600 - -pci:v00008086d000024CDsv00001028sd00000126* - ID_PRODUCT_FROM_DATABASE=Optiplex GX260 - -pci:v00008086d000024CDsv00001028sd00000139* - ID_PRODUCT_FROM_DATABASE=Latitude D400 - -pci:v00008086d000024CDsv00001028sd00000152* - ID_PRODUCT_FROM_DATABASE=Latitude D500 - -pci:v00008086d000024CDsv00001028sd00000163* - ID_PRODUCT_FROM_DATABASE=Latitude D505 - -pci:v00008086d000024CDsv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m - -pci:v00008086d000024CDsv00001028sd00000196* - ID_PRODUCT_FROM_DATABASE=Inspiron 5160 - -pci:v00008086d000024CDsv0000103Csd0000088C* - ID_PRODUCT_FROM_DATABASE=NC8000 laptop - -pci:v00008086d000024CDsv0000103Csd00000890* - ID_PRODUCT_FROM_DATABASE=NC6000 laptop - -pci:v00008086d000024CDsv0000103Csd000008B0* - ID_PRODUCT_FROM_DATABASE=tc1100 tablet - -pci:v00008086d000024CDsv00001043sd00008089* - ID_PRODUCT_FROM_DATABASE=P4B533 - -pci:v00008086d000024CDsv00001071sd00008160* - ID_PRODUCT_FROM_DATABASE=MIM2000 - -pci:v00008086d000024CDsv0000114Asd00000582* - ID_PRODUCT_FROM_DATABASE=PC8 onboard USB 2.0 - -pci:v00008086d000024CDsv00001179sd0000FF00* - ID_PRODUCT_FROM_DATABASE=Satellite 2430 - -pci:v00008086d000024CDsv0000144Dsd0000C005* - ID_PRODUCT_FROM_DATABASE=X10 Laptop - -pci:v00008086d000024CDsv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30/P35 notebook - -pci:v00008086d000024CDsv00001462sd00003981* - ID_PRODUCT_FROM_DATABASE=845PE Max (MS-6580) - -pci:v00008086d000024CDsv00001509sd00001968* - ID_PRODUCT_FROM_DATABASE=Averatec 5110H - -pci:v00008086d000024CDsv00001734sd00001004* - ID_PRODUCT_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV) - -pci:v00008086d000024CDsv00001734sd00001055* - ID_PRODUCT_FROM_DATABASE=Amilo M1420 - -pci:v00008086d000024CDsv00004C53sd00001090* - ID_PRODUCT_FROM_DATABASE=Cx9 / Vx9 mainboard - -pci:v00008086d000024CDsv00008086sd000024C2* - ID_PRODUCT_FROM_DATABASE=Latitude X300 - -pci:v00008086d000024CDsv0000E4BFsd00000CC9* - ID_PRODUCT_FROM_DATABASE=CC9-SAMBA - -pci:v00008086d000024CDsv0000E4BFsd00000CD2* - ID_PRODUCT_FROM_DATABASE=CD2-BEBOP - -pci:v00008086d000024D0* - ID_PRODUCT_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) LPC Interface Bridge - -pci:v00008086d000024D1* - ID_PRODUCT_FROM_DATABASE=82801EB (ICH5) SATA Controller - -pci:v00008086d000024D1sv00001028sd00000169* - ID_PRODUCT_FROM_DATABASE=Precision 470 - -pci:v00008086d000024D1sv00001028sd0000019A* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC1425 - -pci:v00008086d000024D1sv0000103Csd000012BC* - ID_PRODUCT_FROM_DATABASE=d530 CMT (DG746A) - -pci:v00008086d000024D1sv0000103Csd00003208* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G2 - -pci:v00008086d000024D1sv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P4P800 series motherboard - -pci:v00008086d000024D1sv00001458sd000024D1* - ID_PRODUCT_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) - -pci:v00008086d000024D1sv00001462sd00007280* - ID_PRODUCT_FROM_DATABASE=865PE Neo2 (MS-6728) - -pci:v00008086d000024D1sv00001462sd00007650* - ID_PRODUCT_FROM_DATABASE=Hetis 865GV-E (MS-7065) - -pci:v00008086d000024D1sv00001565sd00005200* - ID_PRODUCT_FROM_DATABASE=P4TSV Motherboard (865G) - -pci:v00008086d000024D1sv000015D9sd00004580* - ID_PRODUCT_FROM_DATABASE=P4SCE Mainboard - -pci:v00008086d000024D1sv00008086sd00003427* - ID_PRODUCT_FROM_DATABASE=S875WP1-E mainboard - -pci:v00008086d000024D1sv00008086sd00004246* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GBF - -pci:v00008086d000024D1sv00008086sd00004C43* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GLC - -pci:v00008086d000024D1sv00008086sd0000524C* - ID_PRODUCT_FROM_DATABASE=D865PERL mainboard - -pci:v00008086d000024D2* - ID_PRODUCT_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #1 - -pci:v00008086d000024D2sv00001014sd000002DD* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00008086d000024D2sv00001014sd000002ED* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00008086d000024D2sv00001028sd00000169* - ID_PRODUCT_FROM_DATABASE=Precision 470 - -pci:v00008086d000024D2sv00001028sd0000016C* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1850 onboard UHCI - -pci:v00008086d000024D2sv00001028sd0000016D* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2850 onboard UHCI - -pci:v00008086d000024D2sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 onboard UHCI - -pci:v00008086d000024D2sv00001028sd00000183* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1800 - -pci:v00008086d000024D2sv00001028sd0000019A* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC1425 - -pci:v00008086d000024D2sv0000103Csd0000006A* - ID_PRODUCT_FROM_DATABASE=NX9500 - -pci:v00008086d000024D2sv0000103Csd000012BC* - ID_PRODUCT_FROM_DATABASE=d530 CMT (DG746A) - -pci:v00008086d000024D2sv0000103Csd00003208* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G2 - -pci:v00008086d000024D2sv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P4P800/P5P800 series motherboard - -pci:v00008086d000024D2sv00001458sd000024D2* - ID_PRODUCT_FROM_DATABASE=GA-8IPE1000/8KNXP motherboard - -pci:v00008086d000024D2sv00001462sd00007280* - ID_PRODUCT_FROM_DATABASE=865PE Neo2 (MS-6728) - -pci:v00008086d000024D2sv00001565sd00003101* - ID_PRODUCT_FROM_DATABASE=P4TSV Motherboard (865G) - -pci:v00008086d000024D2sv000015D9sd00004580* - ID_PRODUCT_FROM_DATABASE=P4SCE Mainboard - -pci:v00008086d000024D2sv00001734sd0000101C* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX series onboard UHCI - -pci:v00008086d000024D2sv00008086sd00003427* - ID_PRODUCT_FROM_DATABASE=S875WP1-E mainboard - -pci:v00008086d000024D2sv00008086sd00004246* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GBF - -pci:v00008086d000024D2sv00008086sd00004C43* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GLC - -pci:v00008086d000024D2sv00008086sd0000524C* - ID_PRODUCT_FROM_DATABASE=D865PERL mainboard - -pci:v00008086d000024D3* - ID_PRODUCT_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) SMBus Controller - -pci:v00008086d000024D3sv00001014sd000002DD* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00008086d000024D3sv00001014sd000002ED* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00008086d000024D3sv00001028sd00000156* - ID_PRODUCT_FROM_DATABASE=Precision 360 - -pci:v00008086d000024D3sv00001028sd00000169* - ID_PRODUCT_FROM_DATABASE=Precision 470 - -pci:v00008086d000024D3sv0000103Csd000012BC* - ID_PRODUCT_FROM_DATABASE=d330 uT - -pci:v00008086d000024D3sv0000103Csd00003208* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G2 - -pci:v00008086d000024D3sv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P4P800/P5P800 series motherboard - -pci:v00008086d000024D3sv00001458sd000024D2* - ID_PRODUCT_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) - -pci:v00008086d000024D3sv00001462sd00007280* - ID_PRODUCT_FROM_DATABASE=865PE Neo2 (MS-6728) - -pci:v00008086d000024D3sv00001462sd00007650* - ID_PRODUCT_FROM_DATABASE=Hetis 865GV-E (MS-7065) - -pci:v00008086d000024D3sv00001565sd00003101* - ID_PRODUCT_FROM_DATABASE=P4TSV Motherboard (865G) - -pci:v00008086d000024D3sv000015D9sd00004580* - ID_PRODUCT_FROM_DATABASE=P4SCE Mainboard - -pci:v00008086d000024D3sv00001734sd0000101C* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX S2 series SMBus - -pci:v00008086d000024D3sv00008086sd00003427* - ID_PRODUCT_FROM_DATABASE=S875WP1-E mainboard - -pci:v00008086d000024D3sv00008086sd00004246* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GBF - -pci:v00008086d000024D3sv00008086sd00004C43* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GLC - -pci:v00008086d000024D3sv00008086sd0000524C* - ID_PRODUCT_FROM_DATABASE=D865PERL mainboard - -pci:v00008086d000024D4* - ID_PRODUCT_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #2 - -pci:v00008086d000024D4sv00001014sd000002DD* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00008086d000024D4sv00001014sd000002ED* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00008086d000024D4sv00001028sd00000169* - ID_PRODUCT_FROM_DATABASE=Precision 470 - -pci:v00008086d000024D4sv00001028sd0000016C* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1850 onboard UHCI - -pci:v00008086d000024D4sv00001028sd0000016D* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2850 onboard UHCI - -pci:v00008086d000024D4sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 onboard UHCI - -pci:v00008086d000024D4sv00001028sd00000183* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1800 - -pci:v00008086d000024D4sv00001028sd0000019A* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC1425 - -pci:v00008086d000024D4sv0000103Csd0000006A* - ID_PRODUCT_FROM_DATABASE=NX9500 - -pci:v00008086d000024D4sv0000103Csd000012BC* - ID_PRODUCT_FROM_DATABASE=d530 CMT (DG746A) - -pci:v00008086d000024D4sv0000103Csd00003208* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G2 - -pci:v00008086d000024D4sv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P4P800/P5P800 series motherboard - -pci:v00008086d000024D4sv00001458sd000024D2* - ID_PRODUCT_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) - -pci:v00008086d000024D4sv00001462sd00007280* - ID_PRODUCT_FROM_DATABASE=865PE Neo2 (MS-6728) - -pci:v00008086d000024D4sv00001462sd00007650* - ID_PRODUCT_FROM_DATABASE=Hetis 865GV-E (MS-7065) - -pci:v00008086d000024D4sv00001565sd00003101* - ID_PRODUCT_FROM_DATABASE=P4TSV Motherboard (865G) - -pci:v00008086d000024D4sv000015D9sd00004580* - ID_PRODUCT_FROM_DATABASE=P4SCE Mainboard - -pci:v00008086d000024D4sv00001734sd0000101C* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard UHCI - -pci:v00008086d000024D4sv00008086sd00003427* - ID_PRODUCT_FROM_DATABASE=S875WP1-E mainboard - -pci:v00008086d000024D4sv00008086sd00004246* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GBF - -pci:v00008086d000024D4sv00008086sd00004C43* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GLC - -pci:v00008086d000024D4sv00008086sd0000524C* - ID_PRODUCT_FROM_DATABASE=D865PERL mainboard - -pci:v00008086d000024D5* - ID_PRODUCT_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Audio Controller - -pci:v00008086d000024D5sv0000100Asd0000147B* - ID_PRODUCT_FROM_DATABASE=Abit IS7-E motherboard - -pci:v00008086d000024D5sv00001028sd00000169* - ID_PRODUCT_FROM_DATABASE=Precision 470 - -pci:v00008086d000024D5sv0000103Csd0000006A* - ID_PRODUCT_FROM_DATABASE=NX9500 - -pci:v00008086d000024D5sv0000103Csd000012BC* - ID_PRODUCT_FROM_DATABASE=d330 uT - -pci:v00008086d000024D5sv00001043sd000080F3* - ID_PRODUCT_FROM_DATABASE=P4P800 series motherboard - -pci:v00008086d000024D5sv00001043sd0000810F* - ID_PRODUCT_FROM_DATABASE=P5P800-MX Mainboard - -pci:v00008086d000024D5sv00001458sd0000A002* - ID_PRODUCT_FROM_DATABASE=GA-8IPE1000/8KNXP motherboard - -pci:v00008086d000024D5sv00001462sd00000080* - ID_PRODUCT_FROM_DATABASE=865PE Neo2-V (MS-6788) Mainboard - -pci:v00008086d000024D5sv00001462sd00007280* - ID_PRODUCT_FROM_DATABASE=865PE Neo2 (MS-6728) - -pci:v00008086d000024D5sv00001462sd00007650* - ID_PRODUCT_FROM_DATABASE=Hetis 865GV-E (MS-7065) - -pci:v00008086d000024D5sv00008086sd0000A000* - ID_PRODUCT_FROM_DATABASE=D865PERL mainboard - -pci:v00008086d000024D5sv00008086sd0000E000* - ID_PRODUCT_FROM_DATABASE=D865PERL mainboard - -pci:v00008086d000024D5sv00008086sd0000E001* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GBF - -pci:v00008086d000024D5sv00008086sd0000E002* - ID_PRODUCT_FROM_DATABASE=SoundMax Intergrated Digital Audio - -pci:v00008086d000024D6* - ID_PRODUCT_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) AC'97 Modem Controller - -pci:v00008086d000024D6sv0000103Csd0000006A* - ID_PRODUCT_FROM_DATABASE=NX9500 - -pci:v00008086d000024D7* - ID_PRODUCT_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #3 - -pci:v00008086d000024D7sv00001014sd000002ED* - ID_PRODUCT_FROM_DATABASE=xSeries server mainboard - -pci:v00008086d000024D7sv00001028sd00000169* - ID_PRODUCT_FROM_DATABASE=Precision 470 - -pci:v00008086d000024D7sv00001028sd0000016C* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1850 onboard UHCI - -pci:v00008086d000024D7sv00001028sd0000016D* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2850 onboard UHCI - -pci:v00008086d000024D7sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 onboard UHCI - -pci:v00008086d000024D7sv00001028sd00000183* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1800 - -pci:v00008086d000024D7sv0000103Csd0000006A* - ID_PRODUCT_FROM_DATABASE=NX9500 - -pci:v00008086d000024D7sv0000103Csd000012BC* - ID_PRODUCT_FROM_DATABASE=d530 CMT (DG746A) - -pci:v00008086d000024D7sv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P4P800/P5P800 series motherboard - -pci:v00008086d000024D7sv00001458sd000024D2* - ID_PRODUCT_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) - -pci:v00008086d000024D7sv00001462sd00007280* - ID_PRODUCT_FROM_DATABASE=865PE Neo2 (MS-6728) - -pci:v00008086d000024D7sv00001462sd00007650* - ID_PRODUCT_FROM_DATABASE=Hetis 865GV-E (MS-7065) - -pci:v00008086d000024D7sv00001565sd00003101* - ID_PRODUCT_FROM_DATABASE=P4TSV Motherboard (865G) - -pci:v00008086d000024D7sv000015D9sd00004580* - ID_PRODUCT_FROM_DATABASE=P4SCE Mainboard - -pci:v00008086d000024D7sv00001734sd0000101C* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard UHCI - -pci:v00008086d000024D7sv00008086sd00003427* - ID_PRODUCT_FROM_DATABASE=S875WP1-E mainboard - -pci:v00008086d000024D7sv00008086sd00004246* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GBF - -pci:v00008086d000024D7sv00008086sd00004C43* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GLC - -pci:v00008086d000024D7sv00008086sd0000524C* - ID_PRODUCT_FROM_DATABASE=D865PERL mainboard - -pci:v00008086d000024DB* - ID_PRODUCT_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) IDE Controller - -pci:v00008086d000024DBsv00001014sd000002DD* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00008086d000024DBsv00001014sd000002ED* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00008086d000024DBsv00001028sd00000169* - ID_PRODUCT_FROM_DATABASE=Precision 470 - -pci:v00008086d000024DBsv00001028sd0000016C* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1850 IDE Controller - -pci:v00008086d000024DBsv00001028sd0000016D* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2850 IDE Controller - -pci:v00008086d000024DBsv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 IDE Controller - -pci:v00008086d000024DBsv00001028sd0000019A* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC1425 - -pci:v00008086d000024DBsv0000103Csd0000006A* - ID_PRODUCT_FROM_DATABASE=NX9500 - -pci:v00008086d000024DBsv0000103Csd000012BC* - ID_PRODUCT_FROM_DATABASE=d530 CMT (DG746A) - -pci:v00008086d000024DBsv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P4P800/P5P800 series motherboard - -pci:v00008086d000024DBsv00001458sd000024D2* - ID_PRODUCT_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) - -pci:v00008086d000024DBsv00001462sd00007280* - ID_PRODUCT_FROM_DATABASE=865PE Neo2 (MS-6728) - -pci:v00008086d000024DBsv00001462sd00007580* - ID_PRODUCT_FROM_DATABASE=MSI 875P - -pci:v00008086d000024DBsv00001462sd00007650* - ID_PRODUCT_FROM_DATABASE=Hetis 865GV-E (MS-7065) - -pci:v00008086d000024DBsv00001565sd00003101* - ID_PRODUCT_FROM_DATABASE=P4TSV Motherboard (865G) - -pci:v00008086d000024DBsv000015D9sd00004580* - ID_PRODUCT_FROM_DATABASE=P4SCE Mainboard - -pci:v00008086d000024DBsv00001734sd0000101C* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard IDE - -pci:v00008086d000024DBsv00008086sd000024DB* - ID_PRODUCT_FROM_DATABASE=P4C800 Mainboard - -pci:v00008086d000024DBsv00008086sd00003427* - ID_PRODUCT_FROM_DATABASE=S875WP1-E mainboard - -pci:v00008086d000024DBsv00008086sd00004246* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GBF - -pci:v00008086d000024DBsv00008086sd00004C43* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GLC - -pci:v00008086d000024DBsv00008086sd0000524C* - ID_PRODUCT_FROM_DATABASE=D865PERL mainboard - -pci:v00008086d000024DC* - ID_PRODUCT_FROM_DATABASE=82801EB (ICH5) LPC Interface Bridge - -pci:v00008086d000024DD* - ID_PRODUCT_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB2 EHCI Controller - -pci:v00008086d000024DDsv00001014sd000002DD* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00008086d000024DDsv00001014sd000002ED* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00008086d000024DDsv00001028sd00000169* - ID_PRODUCT_FROM_DATABASE=Precision 470 - -pci:v00008086d000024DDsv00001028sd0000016C* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1850 onboard EHCI - -pci:v00008086d000024DDsv00001028sd0000016D* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2850 onboard EHCI - -pci:v00008086d000024DDsv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 onboard EHCI - -pci:v00008086d000024DDsv00001028sd00000183* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1800 - -pci:v00008086d000024DDsv00001028sd0000019A* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC1425 - -pci:v00008086d000024DDsv0000103Csd0000006A* - ID_PRODUCT_FROM_DATABASE=NX9500 - -pci:v00008086d000024DDsv0000103Csd000012BC* - ID_PRODUCT_FROM_DATABASE=d530 CMT (DG746A) - -pci:v00008086d000024DDsv0000103Csd00003208* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G2 - -pci:v00008086d000024DDsv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P4P800/P5P800 series motherboard - -pci:v00008086d000024DDsv00001458sd00005006* - ID_PRODUCT_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) - -pci:v00008086d000024DDsv00001462sd00007280* - ID_PRODUCT_FROM_DATABASE=865PE Neo2 (MS-6728) - -pci:v00008086d000024DDsv00001462sd00007650* - ID_PRODUCT_FROM_DATABASE=Hetis 865GV-E (MS-7065) - -pci:v00008086d000024DDsv00008086sd00003427* - ID_PRODUCT_FROM_DATABASE=S875WP1-E mainboard - -pci:v00008086d000024DDsv00008086sd00004246* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GBF - -pci:v00008086d000024DDsv00008086sd00004C43* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GLC - -pci:v00008086d000024DDsv00008086sd0000524C* - ID_PRODUCT_FROM_DATABASE=D865PERL mainboard - -pci:v00008086d000024DE* - ID_PRODUCT_FROM_DATABASE=82801EB/ER (ICH5/ICH5R) USB UHCI Controller #4 - -pci:v00008086d000024DEsv00001014sd000002ED* - ID_PRODUCT_FROM_DATABASE=xSeries server mainboard - -pci:v00008086d000024DEsv00001028sd00000169* - ID_PRODUCT_FROM_DATABASE=Precision 470 - -pci:v00008086d000024DEsv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P4P800/P5P800 series motherboard - -pci:v00008086d000024DEsv00001458sd000024D2* - ID_PRODUCT_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) - -pci:v00008086d000024DEsv00001462sd00007280* - ID_PRODUCT_FROM_DATABASE=865PE Neo2 (MS-6728) - -pci:v00008086d000024DEsv00001462sd00007650* - ID_PRODUCT_FROM_DATABASE=Hetis 865GV-E (MS-7065) - -pci:v00008086d000024DEsv00001565sd00003101* - ID_PRODUCT_FROM_DATABASE=P4TSV Motherboard (865G) - -pci:v00008086d000024DEsv000015D9sd00004580* - ID_PRODUCT_FROM_DATABASE=P4SCE Mainboard - -pci:v00008086d000024DEsv00001734sd0000101C* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX S2 series onboard UHCI - -pci:v00008086d000024DEsv00008086sd00003427* - ID_PRODUCT_FROM_DATABASE=S875WP1-E mainboard - -pci:v00008086d000024DEsv00008086sd00004246* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GBF - -pci:v00008086d000024DEsv00008086sd00004C43* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GLC - -pci:v00008086d000024DEsv00008086sd0000524C* - ID_PRODUCT_FROM_DATABASE=D865PERL mainboard - -pci:v00008086d000024DF* - ID_PRODUCT_FROM_DATABASE=82801ER (ICH5R) SATA Controller - -pci:v00008086d00002500* - ID_PRODUCT_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge (MCH) - -pci:v00008086d00002500sv00001028sd00000095* - ID_PRODUCT_FROM_DATABASE=Precision Workstation 220 Chipset - -pci:v00008086d00002500sv00001043sd0000801C* - ID_PRODUCT_FROM_DATABASE=P3C-2000 system chipset - -pci:v00008086d00002501* - ID_PRODUCT_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge (MCH) - -pci:v00008086d00002501sv00001043sd0000801C* - ID_PRODUCT_FROM_DATABASE=P3C-2000 system chipset - -pci:v00008086d0000250B* - ID_PRODUCT_FROM_DATABASE=82820 820 (Camino) Chipset Host Bridge - -pci:v00008086d0000250F* - ID_PRODUCT_FROM_DATABASE=82820 820 (Camino) Chipset AGP Bridge - -pci:v00008086d00002520* - ID_PRODUCT_FROM_DATABASE=82805AA MTH Memory Translator Hub - -pci:v00008086d00002521* - ID_PRODUCT_FROM_DATABASE=82804AA MRH-S Memory Repeater Hub for SDRAM - -pci:v00008086d00002530* - ID_PRODUCT_FROM_DATABASE=82850 850 (Tehama) Chipset Host Bridge (MCH) - -pci:v00008086d00002530sv00001028sd000000C7* - ID_PRODUCT_FROM_DATABASE=Dimension 8100 - -pci:v00008086d00002530sv0000147Bsd00000507* - ID_PRODUCT_FROM_DATABASE=TH7II-RAID - -pci:v00008086d00002531* - ID_PRODUCT_FROM_DATABASE=82860 860 (Wombat) Chipset Host Bridge (MCH) - -pci:v00008086d00002531sv00001028sd000000D8* - ID_PRODUCT_FROM_DATABASE=Precision 530 - -pci:v00008086d00002532* - ID_PRODUCT_FROM_DATABASE=82850 850 (Tehama) Chipset AGP Bridge - -pci:v00008086d00002533* - ID_PRODUCT_FROM_DATABASE=82860 860 (Wombat) Chipset AGP Bridge - -pci:v00008086d00002534* - ID_PRODUCT_FROM_DATABASE=82860 860 (Wombat) Chipset PCI Bridge - -pci:v00008086d00002540* - ID_PRODUCT_FROM_DATABASE=E7500 Memory Controller Hub - -pci:v00008086d00002540sv000015D9sd00003480* - ID_PRODUCT_FROM_DATABASE=P4DP6 - -pci:v00008086d00002541* - ID_PRODUCT_FROM_DATABASE=E7500/E7501 Host RASUM Controller - -pci:v00008086d00002541sv000015D9sd00003480* - ID_PRODUCT_FROM_DATABASE=P4DP6 - -pci:v00008086d00002541sv00004C53sd00001090* - ID_PRODUCT_FROM_DATABASE=Cx9 / Vx9 mainboard - -pci:v00008086d00002541sv00008086sd00003424* - ID_PRODUCT_FROM_DATABASE=SE7501HG2 Mainboard - -pci:v00008086d00002543* - ID_PRODUCT_FROM_DATABASE=E7500/E7501 Hub Interface B PCI-to-PCI Bridge - -pci:v00008086d00002544* - ID_PRODUCT_FROM_DATABASE=E7500/E7501 Hub Interface B RASUM Controller - -pci:v00008086d00002544sv00004C53sd00001090* - ID_PRODUCT_FROM_DATABASE=Cx9 / Vx9 mainboard - -pci:v00008086d00002545* - ID_PRODUCT_FROM_DATABASE=E7500/E7501 Hub Interface C PCI-to-PCI Bridge - -pci:v00008086d00002546* - ID_PRODUCT_FROM_DATABASE=E7500/E7501 Hub Interface C RASUM Controller - -pci:v00008086d00002547* - ID_PRODUCT_FROM_DATABASE=E7500/E7501 Hub Interface D PCI-to-PCI Bridge - -pci:v00008086d00002548* - ID_PRODUCT_FROM_DATABASE=E7500/E7501 Hub Interface D RASUM Controller - -pci:v00008086d0000254C* - ID_PRODUCT_FROM_DATABASE=E7501 Memory Controller Hub - -pci:v00008086d0000254Csv00004C53sd00001090* - ID_PRODUCT_FROM_DATABASE=Cx9 / Vx9 mainboard - -pci:v00008086d0000254Csv00008086sd00003424* - ID_PRODUCT_FROM_DATABASE=SE7501HG2 Mainboard - -pci:v00008086d00002550* - ID_PRODUCT_FROM_DATABASE=E7505 Memory Controller Hub - -pci:v00008086d00002551* - ID_PRODUCT_FROM_DATABASE=E7505/E7205 Series RAS Controller - -pci:v00008086d00002552* - ID_PRODUCT_FROM_DATABASE=E7505/E7205 PCI-to-AGP Bridge - -pci:v00008086d00002553* - ID_PRODUCT_FROM_DATABASE=E7505 Hub Interface B PCI-to-PCI Bridge - -pci:v00008086d00002554* - ID_PRODUCT_FROM_DATABASE=E7505 Hub Interface B PCI-to-PCI Bridge RAS Controller - -pci:v00008086d0000255D* - ID_PRODUCT_FROM_DATABASE=E7205 Memory Controller Hub - -pci:v00008086d00002560* - ID_PRODUCT_FROM_DATABASE=82845G/GL[Brookdale-G]/GE/PE DRAM Controller/Host-Hub Interface - -pci:v00008086d00002560sv00001028sd00000126* - ID_PRODUCT_FROM_DATABASE=Optiplex GX260 - -pci:v00008086d00002560sv00001458sd00002560* - ID_PRODUCT_FROM_DATABASE=GA-8PE667 Ultra - -pci:v00008086d00002560sv00001462sd00005800* - ID_PRODUCT_FROM_DATABASE=845PE Max (MS-6580) - -pci:v00008086d00002561* - ID_PRODUCT_FROM_DATABASE=82845G/GL[Brookdale-G]/GE/PE Host-to-AGP Bridge - -pci:v00008086d00002562* - ID_PRODUCT_FROM_DATABASE=82845G/GL[Brookdale-G]/GE Chipset Integrated Graphics Device - -pci:v00008086d00002562sv00000E11sd000000B9* - ID_PRODUCT_FROM_DATABASE=Evo D510 SFF - -pci:v00008086d00002562sv00001014sd00000267* - ID_PRODUCT_FROM_DATABASE=NetVista A30p - -pci:v00008086d00002562sv00001734sd00001003* - ID_PRODUCT_FROM_DATABASE=D1521 Mainboard (Fujitsu-Siemens) - -pci:v00008086d00002562sv00001734sd00001004* - ID_PRODUCT_FROM_DATABASE=D1451 Mainboard (SCENIC N300, i845GV) - -pci:v00008086d00002570* - ID_PRODUCT_FROM_DATABASE=82865G/PE/P DRAM Controller/Host-Hub Interface - -pci:v00008086d00002570sv0000103Csd0000006A* - ID_PRODUCT_FROM_DATABASE=NX9500 - -pci:v00008086d00002570sv0000103Csd000012BC* - ID_PRODUCT_FROM_DATABASE=d330 uT - -pci:v00008086d00002570sv00001043sd000080F2* - ID_PRODUCT_FROM_DATABASE=P4P800/P5P800 series motherboard - -pci:v00008086d00002570sv00001458sd00002570* - ID_PRODUCT_FROM_DATABASE=GA-8IPE1000 Pro2 motherboard (865PE) - -pci:v00008086d00002571* - ID_PRODUCT_FROM_DATABASE=82865G/PE/P AGP Bridge - -pci:v00008086d00002572* - ID_PRODUCT_FROM_DATABASE=82865G Integrated Graphics Controller - -pci:v00008086d00002572sv00001028sd0000019D* - ID_PRODUCT_FROM_DATABASE=Dimension 3000 - -pci:v00008086d00002572sv0000103Csd000012BC* - ID_PRODUCT_FROM_DATABASE=D530 sff(dc578av) - -pci:v00008086d00002572sv00001043sd000080A5* - ID_PRODUCT_FROM_DATABASE=P5P800-MX Mainboard - -pci:v00008086d00002572sv00001462sd00007650* - ID_PRODUCT_FROM_DATABASE=Hetis 865GV-E (MS-7065) - -pci:v00008086d00002572sv00001734sd0000101B* - ID_PRODUCT_FROM_DATABASE=Fujitsu-Siemens Scenic E300 i865GV - -pci:v00008086d00002572sv00008086sd00004246* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GBF - -pci:v00008086d00002572sv00008086sd00004C43* - ID_PRODUCT_FROM_DATABASE=Desktop Board D865GLC - -pci:v00008086d00002573* - ID_PRODUCT_FROM_DATABASE=82865G/PE/P PCI to CSA Bridge - -pci:v00008086d00002576* - ID_PRODUCT_FROM_DATABASE=82865G/PE/P Processor to I/O Memory Interface - -pci:v00008086d00002578* - ID_PRODUCT_FROM_DATABASE=82875P/E7210 Memory Controller Hub - -pci:v00008086d00002578sv00001458sd00002578* - ID_PRODUCT_FROM_DATABASE=GA-8KNXP motherboard (875P) - -pci:v00008086d00002578sv00001462sd00007580* - ID_PRODUCT_FROM_DATABASE=MS-6758 (875P Neo) - -pci:v00008086d00002578sv000015D9sd00004580* - ID_PRODUCT_FROM_DATABASE=P4SCE Motherboard - -pci:v00008086d00002579* - ID_PRODUCT_FROM_DATABASE=82875P Processor to AGP Controller - -pci:v00008086d0000257B* - ID_PRODUCT_FROM_DATABASE=82875P/E7210 Processor to PCI to CSA Bridge - -pci:v00008086d0000257E* - ID_PRODUCT_FROM_DATABASE=82875P/E7210 Processor to I/O Memory Interface - -pci:v00008086d00002580* - ID_PRODUCT_FROM_DATABASE=82915G/P/GV/GL/PL/910GL Memory Controller Hub - -pci:v00008086d00002580sv00001458sd00002580* - ID_PRODUCT_FROM_DATABASE=GA-8I915ME-G Mainboard - -pci:v00008086d00002580sv00001462sd00007028* - ID_PRODUCT_FROM_DATABASE=915P/G Neo2 - -pci:v00008086d00002580sv00001734sd0000105B* - ID_PRODUCT_FROM_DATABASE=Scenic W620 - -pci:v00008086d00002581* - ID_PRODUCT_FROM_DATABASE=82915G/P/GV/GL/PL/910GL PCI Express Root Port - -pci:v00008086d00002582* - ID_PRODUCT_FROM_DATABASE=82915G/GV/910GL Integrated Graphics Controller - -pci:v00008086d00002582sv00001028sd00001079* - ID_PRODUCT_FROM_DATABASE=Optiplex GX280 - -pci:v00008086d00002582sv0000103Csd00003006* - ID_PRODUCT_FROM_DATABASE=DC7100 SFF(DX878AV) - -pci:v00008086d00002582sv00001043sd00002582* - ID_PRODUCT_FROM_DATABASE=P5GD1-VW Mainboard - -pci:v00008086d00002582sv00001458sd00002582* - ID_PRODUCT_FROM_DATABASE=GA-8I915ME-G Mainboard - -pci:v00008086d00002582sv00001734sd0000105B* - ID_PRODUCT_FROM_DATABASE=Scenic W620 - -pci:v00008086d00002582sv00001849sd00002582* - ID_PRODUCT_FROM_DATABASE=ASRock P4Dual-915GL - -pci:v00008086d00002584* - ID_PRODUCT_FROM_DATABASE=82925X/XE Memory Controller Hub - -pci:v00008086d00002584sv00001028sd00000177* - ID_PRODUCT_FROM_DATABASE=Dimension 8400 - -pci:v00008086d00002585* - ID_PRODUCT_FROM_DATABASE=82925X/XE PCI Express Root Port - -pci:v00008086d00002588* - ID_PRODUCT_FROM_DATABASE=E7220/E7221 Memory Controller Hub - -pci:v00008086d00002589* - ID_PRODUCT_FROM_DATABASE=E7220/E7221 PCI Express Root Port - -pci:v00008086d0000258A* - ID_PRODUCT_FROM_DATABASE=E7221 Integrated Graphics Controller - -pci:v00008086d00002590* - ID_PRODUCT_FROM_DATABASE=Mobile 915GM/PM/GMS/910GML Express Processor to DRAM Controller - -pci:v00008086d00002590sv00001014sd00000575* - ID_PRODUCT_FROM_DATABASE=ThinkPad Z60t - -pci:v00008086d00002590sv00001028sd00000182* - ID_PRODUCT_FROM_DATABASE=Dell Latitude C610 - -pci:v00008086d00002590sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v00008086d00002590sv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v00008086d00002590sv0000104Dsd000081B7* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-S3XP - -pci:v00008086d00002590sv0000A304sd000081B7* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-S3XP - -pci:v00008086d00002590sv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d00002590sv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d00002590sv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d00002591* - ID_PRODUCT_FROM_DATABASE=Mobile 915GM/PM Express PCI Express Root Port - -pci:v00008086d00002591sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation - -pci:v00008086d00002592* - ID_PRODUCT_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller - -pci:v00008086d00002592sv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v00008086d00002592sv0000103Csd0000308A* - ID_PRODUCT_FROM_DATABASE=NC6220 - -pci:v00008086d00002592sv00001043sd00001881* - ID_PRODUCT_FROM_DATABASE=GMA 900 915GM Integrated Graphics - -pci:v00008086d00002592sv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d00002592sv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d00002592sv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d000025A1* - ID_PRODUCT_FROM_DATABASE=6300ESB LPC Interface Controller - -pci:v00008086d000025A2* - ID_PRODUCT_FROM_DATABASE=6300ESB PATA Storage Controller - -pci:v00008086d000025A2sv00001734sd00001073* - ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard - -pci:v00008086d000025A2sv00001775sd000010D0* - ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer IDE - -pci:v00008086d000025A2sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d000025A2sv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d000025A2sv00004C53sd000010B0* - ID_PRODUCT_FROM_DATABASE=CL9 mainboard - -pci:v00008086d000025A2sv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v00008086d000025A3* - ID_PRODUCT_FROM_DATABASE=6300ESB SATA Storage Controller - -pci:v00008086d000025A3sv00001734sd00001073* - ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard - -pci:v00008086d000025A3sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d000025A3sv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d000025A3sv00004C53sd000010B0* - ID_PRODUCT_FROM_DATABASE=CL9 mainboard - -pci:v00008086d000025A3sv00004C53sd000010D0* - ID_PRODUCT_FROM_DATABASE=Telum ASLP10 Processor AMC - -pci:v00008086d000025A3sv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v00008086d000025A4* - ID_PRODUCT_FROM_DATABASE=6300ESB SMBus Controller - -pci:v00008086d000025A4sv00001734sd00001073* - ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard - -pci:v00008086d000025A4sv00001775sd000010D0* - ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer - -pci:v00008086d000025A4sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d000025A4sv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d000025A4sv00004C53sd000010B0* - ID_PRODUCT_FROM_DATABASE=CL9 mainboard - -pci:v00008086d000025A4sv00004C53sd000010D0* - ID_PRODUCT_FROM_DATABASE=Telum ASLP10 Processor AMC - -pci:v00008086d000025A4sv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v00008086d000025A6* - ID_PRODUCT_FROM_DATABASE=6300ESB AC'97 Audio Controller - -pci:v00008086d000025A6sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d000025A6sv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d000025A6sv00004C53sd000010B0* - ID_PRODUCT_FROM_DATABASE=CL9 mainboard - -pci:v00008086d000025A7* - ID_PRODUCT_FROM_DATABASE=6300ESB AC'97 Modem Controller - -pci:v00008086d000025A9* - ID_PRODUCT_FROM_DATABASE=6300ESB USB Universal Host Controller - -pci:v00008086d000025A9sv00001734sd00001073* - ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard - -pci:v00008086d000025A9sv00001775sd000010D0* - ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer USB - -pci:v00008086d000025A9sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d000025A9sv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d000025A9sv00004C53sd000010B0* - ID_PRODUCT_FROM_DATABASE=CL9 mainboard - -pci:v00008086d000025A9sv00004C53sd000010D0* - ID_PRODUCT_FROM_DATABASE=Telum ASLP10 Processor AMC - -pci:v00008086d000025A9sv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v00008086d000025AA* - ID_PRODUCT_FROM_DATABASE=6300ESB USB Universal Host Controller - -pci:v00008086d000025AAsv00001734sd00001073* - ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard - -pci:v00008086d000025AAsv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d000025AAsv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d000025AAsv00004C53sd000010B0* - ID_PRODUCT_FROM_DATABASE=CL9 mainboard - -pci:v00008086d000025AAsv00004C53sd000010D0* - ID_PRODUCT_FROM_DATABASE=Telum ASLP10 Processor AMC - -pci:v00008086d000025AAsv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v00008086d000025AB* - ID_PRODUCT_FROM_DATABASE=6300ESB Watchdog Timer - -pci:v00008086d000025ABsv00001734sd00001073* - ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard - -pci:v00008086d000025ABsv00001775sd000010D0* - ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer - -pci:v00008086d000025ABsv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d000025ABsv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d000025ABsv00004C53sd000010B0* - ID_PRODUCT_FROM_DATABASE=CL9 mainboard - -pci:v00008086d000025ABsv00004C53sd000010D0* - ID_PRODUCT_FROM_DATABASE=Telum ASLP10 Processor AMC - -pci:v00008086d000025ABsv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v00008086d000025AC* - ID_PRODUCT_FROM_DATABASE=6300ESB I/O Advanced Programmable Interrupt Controller - -pci:v00008086d000025ACsv00001734sd00001073* - ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard - -pci:v00008086d000025ACsv00001775sd000010D0* - ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer - -pci:v00008086d000025ACsv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d000025ACsv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d000025ACsv00004C53sd000010B0* - ID_PRODUCT_FROM_DATABASE=CL9 mainboard - -pci:v00008086d000025ACsv00004C53sd000010D0* - ID_PRODUCT_FROM_DATABASE=Telum ASLP10 Processor AMC - -pci:v00008086d000025ACsv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v00008086d000025AD* - ID_PRODUCT_FROM_DATABASE=6300ESB USB2 Enhanced Host Controller - -pci:v00008086d000025ADsv00001734sd00001073* - ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard - -pci:v00008086d000025ADsv00001775sd000010D0* - ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer USB 2.0 - -pci:v00008086d000025ADsv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d000025ADsv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d000025ADsv00004C53sd000010B0* - ID_PRODUCT_FROM_DATABASE=CL9 mainboard - -pci:v00008086d000025ADsv00004C53sd000010D0* - ID_PRODUCT_FROM_DATABASE=Telum ASLP10 Processor AMC - -pci:v00008086d000025ADsv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v00008086d000025AE* - ID_PRODUCT_FROM_DATABASE=6300ESB 64-bit PCI-X Bridge - -pci:v00008086d000025B0* - ID_PRODUCT_FROM_DATABASE=6300ESB SATA RAID Controller - -pci:v00008086d000025B0sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d000025B0sv00004C53sd000010D0* - ID_PRODUCT_FROM_DATABASE=Telum ASLP10 Processor AMC - -pci:v00008086d000025B0sv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v00008086d000025C0* - ID_PRODUCT_FROM_DATABASE=5000X Chipset Memory Controller Hub - -pci:v00008086d000025D0* - ID_PRODUCT_FROM_DATABASE=5000Z Chipset Memory Controller Hub - -pci:v00008086d000025D4* - ID_PRODUCT_FROM_DATABASE=5000V Chipset Memory Controller Hub - -pci:v00008086d000025D4sv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d000025D8* - ID_PRODUCT_FROM_DATABASE=5000P Chipset Memory Controller Hub - -pci:v00008086d000025D8sv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d000025D8sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board - -pci:v00008086d000025E2* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset PCI Express x4 Port 2 - -pci:v00008086d000025E3* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset PCI Express x4 Port 3 - -pci:v00008086d000025E4* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset PCI Express x4 Port 4 - -pci:v00008086d000025E5* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset PCI Express x4 Port 5 - -pci:v00008086d000025E6* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset PCI Express x4 Port 6 - -pci:v00008086d000025E7* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset PCI Express x4 Port 7 - -pci:v00008086d000025F0* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset FSB Registers - -pci:v00008086d000025F0sv00001028sd000001BB* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1955 FSB Registers - -pci:v00008086d000025F0sv0000103Csd000031FD* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d000025F0sv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d000025F0sv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d000025F0sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board - -pci:v00008086d000025F1* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset Reserved Registers - -pci:v00008086d000025F1sv0000103Csd000031FD* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d000025F1sv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d000025F1sv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d000025F1sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board - -pci:v00008086d000025F3* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset Reserved Registers - -pci:v00008086d000025F3sv0000103Csd000031FD* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d000025F3sv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d000025F3sv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d000025F3sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board - -pci:v00008086d000025F5* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset FBD Registers - -pci:v00008086d000025F5sv0000103Csd000031FD* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d000025F5sv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d000025F5sv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d000025F5sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board - -pci:v00008086d000025F6* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset FBD Registers - -pci:v00008086d000025F6sv0000103Csd000031FD* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d000025F6sv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d000025F6sv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d000025F6sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=S5000PSLSATA Server Board - -pci:v00008086d000025F7* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset PCI Express x8 Port 2-3 - -pci:v00008086d000025F8* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset PCI Express x8 Port 4-5 - -pci:v00008086d000025F9* - ID_PRODUCT_FROM_DATABASE=5000 Series Chipset PCI Express x8 Port 6-7 - -pci:v00008086d000025FA* - ID_PRODUCT_FROM_DATABASE=5000X Chipset PCI Express x16 Port 4-7 - -pci:v00008086d00002600* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 Hub Interface 1.5 - -pci:v00008086d00002600sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 Hub Interface - -pci:v00008086d00002601* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 PCI Express x4 Port D - -pci:v00008086d00002602* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 PCI Express x4 Port C0 - -pci:v00008086d00002603* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 PCI Express x4 Port C1 - -pci:v00008086d00002604* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 PCI Express x4 Port B0 - -pci:v00008086d00002605* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 PCI Express x4 Port B1 - -pci:v00008086d00002606* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 PCI Express x4 Port A0 - -pci:v00008086d00002607* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 PCI Express x4 Port A1 - -pci:v00008086d00002608* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 PCI Express x8 Port C - -pci:v00008086d00002609* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 PCI Express x8 Port B - -pci:v00008086d0000260A* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 PCI Express x8 Port A - -pci:v00008086d0000260C* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 IMI Registers - -pci:v00008086d00002610* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 FSB Registers - -pci:v00008086d00002611* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 Address Mapping Registers - -pci:v00008086d00002612* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 RAS Registers - -pci:v00008086d00002613* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 Reserved Registers - -pci:v00008086d00002614* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 Reserved Registers - -pci:v00008086d00002615* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 Miscellaneous Registers - -pci:v00008086d00002617* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 Reserved Registers - -pci:v00008086d00002618* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 Reserved Registers - -pci:v00008086d00002619* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 Reserved Registers - -pci:v00008086d0000261A* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 Reserved Registers - -pci:v00008086d0000261B* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 Reserved Registers - -pci:v00008086d0000261C* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 Reserved Registers - -pci:v00008086d0000261D* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 Reserved Registers - -pci:v00008086d0000261E* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 Reserved Registers - -pci:v00008086d00002620* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 eXternal Memory Bridge - -pci:v00008086d00002620sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 Memory Bridge - -pci:v00008086d00002621* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 XMB Miscellaneous Registers - -pci:v00008086d00002621sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 XMB Registers - -pci:v00008086d00002622* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 XMB Memory Interleaving Registers - -pci:v00008086d00002622sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 Memory Interleaving Registers - -pci:v00008086d00002623* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 XMB DDR Initialization and Calibration - -pci:v00008086d00002623sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 DDR Initialization and Calibration - -pci:v00008086d00002624* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 XMB Reserved Registers - -pci:v00008086d00002624sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 Reserved Registers - -pci:v00008086d00002625* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 XMB Reserved Registers - -pci:v00008086d00002625sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 Reserved Registers - -pci:v00008086d00002626* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 XMB Reserved Registers - -pci:v00008086d00002626sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 Reserved Registers - -pci:v00008086d00002627* - ID_PRODUCT_FROM_DATABASE=E8500/E8501 XMB Reserved Registers - -pci:v00008086d00002627sv00001028sd00000170* - ID_PRODUCT_FROM_DATABASE=PowerEdge 6850 Reserved Registers - -pci:v00008086d00002640* - ID_PRODUCT_FROM_DATABASE=82801FB/FR (ICH6/ICH6R) LPC Interface Bridge - -pci:v00008086d00002640sv00001462sd00007028* - ID_PRODUCT_FROM_DATABASE=915P/G Neo2 - -pci:v00008086d00002640sv00001734sd0000105C* - ID_PRODUCT_FROM_DATABASE=Scenic W620 - -pci:v00008086d00002640sv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d00002640sv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d00002640sv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d00002641* - ID_PRODUCT_FROM_DATABASE=82801FBM (ICH6M) LPC Interface Bridge - -pci:v00008086d00002641sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v00008086d00002641sv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v00008086d00002642* - ID_PRODUCT_FROM_DATABASE=82801FW/FRW (ICH6W/ICH6RW) LPC Interface Bridge - -pci:v00008086d00002651* - ID_PRODUCT_FROM_DATABASE=82801FB/FW (ICH6/ICH6W) SATA Controller - -pci:v00008086d00002651sv00001028sd00000179* - ID_PRODUCT_FROM_DATABASE=Optiplex GX280 - -pci:v00008086d00002651sv00001043sd00002601* - ID_PRODUCT_FROM_DATABASE=P5GD1-VW Mainboard - -pci:v00008086d00002651sv00001734sd0000105C* - ID_PRODUCT_FROM_DATABASE=Scenic W620 - -pci:v00008086d00002651sv00008086sd00004147* - ID_PRODUCT_FROM_DATABASE=D915GAG Motherboard - -pci:v00008086d00002651sv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d00002651sv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d00002651sv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d00002652* - ID_PRODUCT_FROM_DATABASE=82801FR/FRW (ICH6R/ICH6RW) SATA Controller - -pci:v00008086d00002652sv00001028sd00000177* - ID_PRODUCT_FROM_DATABASE=Dimension 8400 - -pci:v00008086d00002652sv00001462sd00007028* - ID_PRODUCT_FROM_DATABASE=915P/G Neo2 - -pci:v00008086d00002653* - ID_PRODUCT_FROM_DATABASE=82801FBM (ICH6M) SATA Controller - -pci:v00008086d00002658* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #1 - -pci:v00008086d00002658sv00001028sd00000177* - ID_PRODUCT_FROM_DATABASE=Dimension 8400 - -pci:v00008086d00002658sv00001028sd00000179* - ID_PRODUCT_FROM_DATABASE=Optiplex GX280 - -pci:v00008086d00002658sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v00008086d00002658sv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v00008086d00002658sv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P5GD1-VW Mainboard - -pci:v00008086d00002658sv00001458sd00002558* - ID_PRODUCT_FROM_DATABASE=GA-8I915ME-G Mainboard - -pci:v00008086d00002658sv00001462sd00007028* - ID_PRODUCT_FROM_DATABASE=915P/G Neo2 - -pci:v00008086d00002658sv00001734sd0000105C* - ID_PRODUCT_FROM_DATABASE=Scenic W620 - -pci:v00008086d00002658sv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d00002658sv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d00002658sv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d00002659* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #2 - -pci:v00008086d00002659sv00001028sd00000177* - ID_PRODUCT_FROM_DATABASE=Dimension 8400 - -pci:v00008086d00002659sv00001028sd00000179* - ID_PRODUCT_FROM_DATABASE=Optiplex GX280 - -pci:v00008086d00002659sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v00008086d00002659sv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v00008086d00002659sv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P5GD1-VW Mainboard - -pci:v00008086d00002659sv00001458sd00002659* - ID_PRODUCT_FROM_DATABASE=GA-8I915ME-G Mainboard - -pci:v00008086d00002659sv00001462sd00007028* - ID_PRODUCT_FROM_DATABASE=915P/G Neo2 - -pci:v00008086d00002659sv00001734sd0000105C* - ID_PRODUCT_FROM_DATABASE=Scenic W620 - -pci:v00008086d00002659sv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d00002659sv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d00002659sv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d0000265A* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #3 - -pci:v00008086d0000265Asv00001028sd00000177* - ID_PRODUCT_FROM_DATABASE=Dimension 8400 - -pci:v00008086d0000265Asv00001028sd00000179* - ID_PRODUCT_FROM_DATABASE=Optiplex GX280 - -pci:v00008086d0000265Asv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v00008086d0000265Asv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v00008086d0000265Asv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P5GD1-VW Mainboard - -pci:v00008086d0000265Asv00001458sd0000265A* - ID_PRODUCT_FROM_DATABASE=GA-8I915ME-G Mainboard - -pci:v00008086d0000265Asv00001462sd00007028* - ID_PRODUCT_FROM_DATABASE=915P/G Neo2 - -pci:v00008086d0000265Asv00001734sd0000105C* - ID_PRODUCT_FROM_DATABASE=Scenic W620 - -pci:v00008086d0000265Asv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d0000265Asv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d0000265Asv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d0000265B* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB UHCI #4 - -pci:v00008086d0000265Bsv00001028sd00000177* - ID_PRODUCT_FROM_DATABASE=Dimension 8400 - -pci:v00008086d0000265Bsv00001028sd00000179* - ID_PRODUCT_FROM_DATABASE=Optiplex GX280 - -pci:v00008086d0000265Bsv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v00008086d0000265Bsv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P5GD1-VW Mainboard - -pci:v00008086d0000265Bsv00001458sd0000265A* - ID_PRODUCT_FROM_DATABASE=GA-8I915ME-G Mainboard - -pci:v00008086d0000265Bsv00001462sd00007028* - ID_PRODUCT_FROM_DATABASE=915P/G Neo2 - -pci:v00008086d0000265Bsv00001734sd0000105C* - ID_PRODUCT_FROM_DATABASE=Scenic W620 - -pci:v00008086d0000265Bsv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d0000265Bsv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d0000265Bsv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d0000265C* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) USB2 EHCI Controller - -pci:v00008086d0000265Csv00001028sd00000177* - ID_PRODUCT_FROM_DATABASE=Dimension 8400 - -pci:v00008086d0000265Csv00001028sd00000179* - ID_PRODUCT_FROM_DATABASE=Optiplex GX280 - -pci:v00008086d0000265Csv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v00008086d0000265Csv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v00008086d0000265Csv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P5GD1-VW Mainboard - -pci:v00008086d0000265Csv00001458sd00005006* - ID_PRODUCT_FROM_DATABASE=GA-8I915ME-G Mainboard - -pci:v00008086d0000265Csv00001462sd00007028* - ID_PRODUCT_FROM_DATABASE=915P/G Neo2 - -pci:v00008086d0000265Csv00001734sd0000105C* - ID_PRODUCT_FROM_DATABASE=Scenic W620 - -pci:v00008086d0000265Csv00008086sd0000265C* - ID_PRODUCT_FROM_DATABASE=Dimension 3100 - -pci:v00008086d0000265Csv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d0000265Csv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d0000265Csv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d00002660* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 1 - -pci:v00008086d00002660sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation - -pci:v00008086d00002660sv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v00008086d00002660sv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d00002660sv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d00002660sv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d00002662* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 2 - -pci:v00008086d00002662sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=HP Compaq nw8240 Mobile Workstation - -pci:v00008086d00002662sv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d00002662sv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d00002662sv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d00002664* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 3 - -pci:v00008086d00002664sv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d00002664sv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d00002664sv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d00002666* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) PCI Express Port 4 - -pci:v00008086d00002666sv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d00002666sv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d00002666sv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d00002668* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) High Definition Audio Controller - -pci:v00008086d00002668sv00001014sd000005B7* - ID_PRODUCT_FROM_DATABASE=ThinkPad Z60t - -pci:v00008086d00002668sv0000103Csd00002A09* - ID_PRODUCT_FROM_DATABASE=PufferM-UL8E - -pci:v00008086d00002668sv00001043sd00001173* - ID_PRODUCT_FROM_DATABASE=Asus A6VC - -pci:v00008086d00002668sv00001043sd0000814E* - ID_PRODUCT_FROM_DATABASE=P5GD1-VW Mainboard - -pci:v00008086d00002668sv00001462sd00007028* - ID_PRODUCT_FROM_DATABASE=915P/G Neo2 - -pci:v00008086d0000266A* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) SMBus Controller - -pci:v00008086d0000266Asv00001028sd00000177* - ID_PRODUCT_FROM_DATABASE=Dimension 8400 - -pci:v00008086d0000266Asv00001028sd00000179* - ID_PRODUCT_FROM_DATABASE=Optiplex GX280 - -pci:v00008086d0000266Asv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P5GD1-VW Mainboard - -pci:v00008086d0000266Asv00001458sd0000266A* - ID_PRODUCT_FROM_DATABASE=GA-8I915ME-G Mainboard - -pci:v00008086d0000266Asv00001462sd00007028* - ID_PRODUCT_FROM_DATABASE=915P/G Neo2 - -pci:v00008086d0000266Asv00001734sd0000105C* - ID_PRODUCT_FROM_DATABASE=Scenic W620 - -pci:v00008086d0000266Asv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d0000266Asv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d0000266Asv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d0000266C* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) LAN Controller - -pci:v00008086d0000266D* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Modem Controller - -pci:v00008086d0000266Dsv00001025sd0000006A* - ID_PRODUCT_FROM_DATABASE=Conexant AC'97 CoDec (in Acer TravelMate 2410 serie laptop) - -pci:v00008086d0000266Dsv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v00008086d0000266Dsv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v00008086d0000266E* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) AC'97 Audio Controller - -pci:v00008086d0000266Esv00001025sd0000006A* - ID_PRODUCT_FROM_DATABASE=Realtek ALC 655 codec (in Acer TravelMate 2410 serie laptop) - -pci:v00008086d0000266Esv00001028sd00000177* - ID_PRODUCT_FROM_DATABASE=Dimension 8400 - -pci:v00008086d0000266Esv00001028sd00000179* - ID_PRODUCT_FROM_DATABASE=Optiplex GX280 - -pci:v00008086d0000266Esv00001028sd00000182* - ID_PRODUCT_FROM_DATABASE=Latitude D610 Laptop - -pci:v00008086d0000266Esv00001028sd00000187* - ID_PRODUCT_FROM_DATABASE=Dell Precision M70 Laptop - -pci:v00008086d0000266Esv00001028sd00000188* - ID_PRODUCT_FROM_DATABASE=Inspiron 6000 laptop - -pci:v00008086d0000266Esv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v00008086d0000266Esv0000103Csd00000944* - ID_PRODUCT_FROM_DATABASE=Compaq NC6220 - -pci:v00008086d0000266Esv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v00008086d0000266Esv0000103Csd00003006* - ID_PRODUCT_FROM_DATABASE=DC7100 SFF(DX878AV) - -pci:v00008086d0000266Esv00001458sd0000A002* - ID_PRODUCT_FROM_DATABASE=GA-8I915ME-G Mainboard - -pci:v00008086d0000266Esv0000152Dsd00000745* - ID_PRODUCT_FROM_DATABASE=Packard Bell A8550 Laptop - -pci:v00008086d0000266Esv00001734sd0000105A* - ID_PRODUCT_FROM_DATABASE=Scenic W620 - -pci:v00008086d0000266F* - ID_PRODUCT_FROM_DATABASE=82801FB/FBM/FR/FW/FRW (ICH6 Family) IDE Controller - -pci:v00008086d0000266Fsv00001028sd00000177* - ID_PRODUCT_FROM_DATABASE=Dimension 8400 - -pci:v00008086d0000266Fsv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v00008086d0000266Fsv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v00008086d0000266Fsv00001043sd000080A6* - ID_PRODUCT_FROM_DATABASE=P5GD1-VW Mainboard - -pci:v00008086d0000266Fsv00001458sd0000266F* - ID_PRODUCT_FROM_DATABASE=GA-8I915ME-G Mainboard - -pci:v00008086d0000266Fsv00001462sd00007028* - ID_PRODUCT_FROM_DATABASE=915P/G Neo2 - -pci:v00008086d0000266Fsv00001734sd0000105C* - ID_PRODUCT_FROM_DATABASE=Scenic W620 - -pci:v00008086d0000266Fsv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d0000266Fsv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d0000266Fsv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d00002670* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB/3100 Chipset LPC Interface Controller - -pci:v00008086d00002670sv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d00002670sv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d00002670sv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d00002670sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board - -pci:v00008086d00002680* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB/3100 Chipset SATA IDE Controller - -pci:v00008086d00002681* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB SATA AHCI Controller - -pci:v00008086d00002681sv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d00002681sv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d00002681sv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d00002681sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board - -pci:v00008086d00002682* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB SATA RAID Controller - -pci:v00008086d00002682sv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=Adaptec Serial ATA HostRAID - -pci:v00008086d00002683* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB SATA RAID Controller - -pci:v00008086d00002688* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #1 - -pci:v00008086d00002688sv00001028sd000001BB* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1955 onboard USB - -pci:v00008086d00002688sv00001028sd000001F0* - ID_PRODUCT_FROM_DATABASE=PowerEdge R900 onboard USB - -pci:v00008086d00002688sv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d00002688sv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d00002688sv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d00002688sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board - -pci:v00008086d00002689* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #2 - -pci:v00008086d00002689sv00001028sd000001BB* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1955 onboard USB - -pci:v00008086d00002689sv00001028sd000001F0* - ID_PRODUCT_FROM_DATABASE=PowerEdge R900 onboard USB - -pci:v00008086d00002689sv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d00002689sv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d00002689sv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d00002689sv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board - -pci:v00008086d0000268A* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #3 - -pci:v00008086d0000268Asv00001028sd000001F0* - ID_PRODUCT_FROM_DATABASE=PowerEdge R900 onboard USB - -pci:v00008086d0000268Asv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d0000268Asv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d0000268Asv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d0000268Asv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board - -pci:v00008086d0000268B* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB/3100 Chipset UHCI USB Controller #4 - -pci:v00008086d0000268Bsv00001028sd000001F0* - ID_PRODUCT_FROM_DATABASE=PowerEdge R900 onboard USB - -pci:v00008086d0000268Bsv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d0000268Bsv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board - -pci:v00008086d0000268C* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB/3100 Chipset EHCI USB2 Controller - -pci:v00008086d0000268Csv00001028sd000001BB* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1955 onboard USB - -pci:v00008086d0000268Csv00001028sd000001F0* - ID_PRODUCT_FROM_DATABASE=PowerEdge R900 onboard USB - -pci:v00008086d0000268Csv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d0000268Csv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d0000268Csv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d0000268Csv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board - -pci:v00008086d00002690* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 1 - -pci:v00008086d00002690sv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d00002690sv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d00002692* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 2 - -pci:v00008086d00002692sv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d00002694* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 3 - -pci:v00008086d00002696* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB/3100 Chipset PCI Express Root Port 4 - -pci:v00008086d00002698* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB AC '97 Audio Controller - -pci:v00008086d00002699* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB AC '97 Modem Controller - -pci:v00008086d0000269A* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB High Definition Audio Controller - -pci:v00008086d0000269B* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB/3100 Chipset SMBus Controller - -pci:v00008086d0000269Bsv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d0000269Bsv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d0000269Bsv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d0000269Bsv00008086sd00003476* - ID_PRODUCT_FROM_DATABASE=Intel S5000PSLSATA Server Board - -pci:v00008086d0000269E* - ID_PRODUCT_FROM_DATABASE=631xESB/632xESB IDE Controller - -pci:v00008086d0000269Esv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d0000269Esv000015D9sd00008680* - ID_PRODUCT_FROM_DATABASE=X7DVL-E-O motherboard - -pci:v00008086d0000269Esv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d00002770* - ID_PRODUCT_FROM_DATABASE=82945G/GZ/P/PL Memory Controller Hub - -pci:v00008086d00002770sv00001028sd000001AD* - ID_PRODUCT_FROM_DATABASE=OptiPlex GX620 - -pci:v00008086d00002770sv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Pavilion A1512X - -pci:v00008086d00002770sv00001043sd0000817A* - ID_PRODUCT_FROM_DATABASE=P5LD2-VM Mainboard - -pci:v00008086d00002770sv0000107Bsd00005048* - ID_PRODUCT_FROM_DATABASE=E4500 - -pci:v00008086d00002770sv00008086sd0000544E* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d00002771* - ID_PRODUCT_FROM_DATABASE=82945G/GZ/P/PL PCI Express Root Port - -pci:v00008086d00002772* - ID_PRODUCT_FROM_DATABASE=82945G/GZ Integrated Graphics Controller - -pci:v00008086d00002772sv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Pavilion A1512X - -pci:v00008086d00002772sv00008086sd0000544E* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d00002772sv00008086sd0000D605* - ID_PRODUCT_FROM_DATABASE=Intel Desktop Board D945GCCR - -pci:v00008086d00002774* - ID_PRODUCT_FROM_DATABASE=82955X Memory Controller Hub - -pci:v00008086d00002775* - ID_PRODUCT_FROM_DATABASE=82955X PCI Express Root Port - -pci:v00008086d00002776* - ID_PRODUCT_FROM_DATABASE=82945G/GZ Integrated Graphics Controller - -pci:v00008086d00002778* - ID_PRODUCT_FROM_DATABASE=E7230/3000/3010 Memory Controller Hub - -pci:v00008086d00002778sv00001028sd000001DF* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC440 - -pci:v00008086d00002778sv00001028sd000001E6* - ID_PRODUCT_FROM_DATABASE=PowerEdge 860 - -pci:v00008086d00002779* - ID_PRODUCT_FROM_DATABASE=E7230/3000/3010 PCI Express Root Port - -pci:v00008086d0000277A* - ID_PRODUCT_FROM_DATABASE=82975X/3010 PCI Express Root Port - -pci:v00008086d0000277C* - ID_PRODUCT_FROM_DATABASE=82975X Memory Controller Hub - -pci:v00008086d0000277Csv00001043sd00008178* - ID_PRODUCT_FROM_DATABASE=P5WDG2 WS Professional motherboard - -pci:v00008086d0000277D* - ID_PRODUCT_FROM_DATABASE=82975X PCI Express Root Port - -pci:v00008086d00002782* - ID_PRODUCT_FROM_DATABASE=82915G Integrated Graphics Controller - -pci:v00008086d00002782sv00001043sd00002582* - ID_PRODUCT_FROM_DATABASE=P5GD1-VW Mainboard - -pci:v00008086d00002782sv00001734sd0000105B* - ID_PRODUCT_FROM_DATABASE=Scenic W620 - -pci:v00008086d00002792* - ID_PRODUCT_FROM_DATABASE=Mobile 915GM/GMS/910GML Express Graphics Controller - -pci:v00008086d00002792sv0000103Csd0000099C* - ID_PRODUCT_FROM_DATABASE=NX6110/NC6120 - -pci:v00008086d00002792sv00001043sd00001881* - ID_PRODUCT_FROM_DATABASE=GMA 900 915GM Integrated Graphics - -pci:v00008086d00002792sv0000E4BFsd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v00008086d00002792sv0000E4BFsd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v00008086d00002792sv0000E4BFsd000058B1* - ID_PRODUCT_FROM_DATABASE=XB1 - -pci:v00008086d000027A0* - ID_PRODUCT_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express Memory Controller Hub - -pci:v00008086d000027A0sv00001025sd0000006C* - ID_PRODUCT_FROM_DATABASE=9814 WKMI - -pci:v00008086d000027A0sv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v00008086d000027A0sv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00008086d000027A0sv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v00008086d000027A0sv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d000027A0sv00001043sd00001237* - ID_PRODUCT_FROM_DATABASE=A6J-Q008 - -pci:v00008086d000027A0sv000017AAsd00002015* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60 - -pci:v00008086d000027A0sv000017AAsd00002017* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60/R60 series - -pci:v00008086d000027A1* - ID_PRODUCT_FROM_DATABASE=Mobile 945GM/PM/GMS, 943/940GML and 945GT Express PCI Express Root Port - -pci:v00008086d000027A1sv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00008086d000027A1sv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d000027A2* - ID_PRODUCT_FROM_DATABASE=Mobile 945GM/GMS, 943/940GML Express Integrated Graphics Controller - -pci:v00008086d000027A2sv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v00008086d000027A2sv000017AAsd0000201A* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60/R60 series - -pci:v00008086d000027A2sv00009902sd00001584* - ID_PRODUCT_FROM_DATABASE=CCE MPL-D10H120F - -pci:v00008086d000027A6* - ID_PRODUCT_FROM_DATABASE=Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller - -pci:v00008086d000027A6sv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v00008086d000027A6sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 integrated graphics (secondary) - -pci:v00008086d000027A6sv000017AAsd0000201A* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60/R60 series - -pci:v00008086d000027AC* - ID_PRODUCT_FROM_DATABASE=Mobile 945GSE Express Memory Controller Hub - -pci:v00008086d000027ACsv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027AD* - ID_PRODUCT_FROM_DATABASE=Mobile 945GSE Express PCI Express Root Port - -pci:v00008086d000027AE* - ID_PRODUCT_FROM_DATABASE=Mobile 945GSE Express Integrated Graphics Controller - -pci:v00008086d000027AEsv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 integrated graphics (primary) - -pci:v00008086d000027B0* - ID_PRODUCT_FROM_DATABASE=82801GH (ICH7DH) LPC Interface Bridge - -pci:v00008086d000027B0sv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Pavilion A1512X - -pci:v00008086d000027B0sv00008086sd0000544E* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d000027B8* - ID_PRODUCT_FROM_DATABASE=82801GB/GR (ICH7 Family) LPC Interface Bridge - -pci:v00008086d000027B8sv00001028sd000001E6* - ID_PRODUCT_FROM_DATABASE=PowerEdge 860 - -pci:v00008086d000027B8sv00001043sd00008179* - ID_PRODUCT_FROM_DATABASE=P5KPL-VM Motherboard - -pci:v00008086d000027B8sv0000107Bsd00005048* - ID_PRODUCT_FROM_DATABASE=E4500 - -pci:v00008086d000027B8sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027B8sv00008086sd0000544E* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d000027B9* - ID_PRODUCT_FROM_DATABASE=82801GBM (ICH7-M) LPC Interface Bridge - -pci:v00008086d000027B9sv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v00008086d000027B9sv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00008086d000027B9sv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v00008086d000027B9sv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d000027B9sv000010F7sd00008338* - ID_PRODUCT_FROM_DATABASE=Panasonic CF-Y5 laptop - -pci:v00008086d000027B9sv000017AAsd00002009* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60/R60 series - -pci:v00008086d000027BC* - ID_PRODUCT_FROM_DATABASE=NM10 Family LPC Controller - -pci:v00008086d000027BCsv0000105Bsd00000D7C* - ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard - -pci:v00008086d000027BCsv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d000027BCsv00001458sd00005001* - ID_PRODUCT_FROM_DATABASE=GA-D525TUD - -pci:v00008086d000027BCsv00008086sd00004F4D* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO - -pci:v00008086d000027BCsv00008086sd0000544B* - ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT - -pci:v00008086d000027BD* - ID_PRODUCT_FROM_DATABASE=82801GHM (ICH7-M DH) LPC Interface Bridge - -pci:v00008086d000027BDsv00001025sd0000006C* - ID_PRODUCT_FROM_DATABASE=9814 WKMI - -pci:v00008086d000027C0* - ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family SATA Controller [IDE mode] - -pci:v00008086d000027C0sv00001028sd000001AD* - ID_PRODUCT_FROM_DATABASE=OptiPlex GX620 - -pci:v00008086d000027C0sv00001028sd000001DF* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC440 - -pci:v00008086d000027C0sv00001028sd000001E6* - ID_PRODUCT_FROM_DATABASE=PowerEdge 860 - -pci:v00008086d000027C0sv00001043sd00008179* - ID_PRODUCT_FROM_DATABASE=P5KPL-VM Motherboard - -pci:v00008086d000027C0sv0000107Bsd00005048* - ID_PRODUCT_FROM_DATABASE=E4500 - -pci:v00008086d000027C0sv00001462sd00002310* - ID_PRODUCT_FROM_DATABASE=MSI Hetis 945 - -pci:v00008086d000027C0sv00001462sd00007236* - ID_PRODUCT_FROM_DATABASE=945P Neo3-F Rev. 2.2 motherboard - -pci:v00008086d000027C0sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027C0sv00008086sd0000544B* - ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT - -pci:v00008086d000027C0sv00008086sd0000544E* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d000027C1* - ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family SATA Controller [AHCI mode] - -pci:v00008086d000027C1sv00001028sd000001DF* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC440 - -pci:v00008086d000027C1sv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Pavilion A1512X - -pci:v00008086d000027C1sv0000105Bsd00000D7C* - ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard - -pci:v00008086d000027C1sv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d000027C1sv00001458sd0000B005* - ID_PRODUCT_FROM_DATABASE=GA-D525TUD - -pci:v00008086d000027C1sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027C1sv00008086sd00004F4D* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO - -pci:v00008086d000027C1sv00008086sd00005842* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D975XBX - -pci:v00008086d000027C3* - ID_PRODUCT_FROM_DATABASE=82801GR/GDH (ICH7R/ICH7DH) SATA Controller [RAID mode] - -pci:v00008086d000027C3sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027C3sv00008086sd0000544E* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d000027C4* - ID_PRODUCT_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [IDE mode] - -pci:v00008086d000027C4sv00001025sd0000006C* - ID_PRODUCT_FROM_DATABASE=9814 WKMI - -pci:v00008086d000027C4sv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v00008086d000027C4sv000017AAsd0000200E* - ID_PRODUCT_FROM_DATABASE=Thinkpad T60 model 2007 - -pci:v00008086d000027C5* - ID_PRODUCT_FROM_DATABASE=82801GBM/GHM (ICH7-M Family) SATA Controller [AHCI mode] - -pci:v00008086d000027C5sv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00008086d000027C5sv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d000027C5sv000017AAsd0000200D* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60/R60 series - -pci:v00008086d000027C6* - ID_PRODUCT_FROM_DATABASE=82801GHM (ICH7-M DH) SATA Controller [RAID mode] - -pci:v00008086d000027C8* - ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #1 - -pci:v00008086d000027C8sv00001025sd0000006C* - ID_PRODUCT_FROM_DATABASE=9814 WKMI - -pci:v00008086d000027C8sv00001028sd000001AD* - ID_PRODUCT_FROM_DATABASE=OptiPlex GX620 - -pci:v00008086d000027C8sv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v00008086d000027C8sv00001028sd000001DF* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC440 - -pci:v00008086d000027C8sv00001028sd000001E6* - ID_PRODUCT_FROM_DATABASE=PowerEdge 860 - -pci:v00008086d000027C8sv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Pavilion A1512X - -pci:v00008086d000027C8sv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00008086d000027C8sv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v00008086d000027C8sv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d000027C8sv00001043sd00001237* - ID_PRODUCT_FROM_DATABASE=A6J-Q008 - -pci:v00008086d000027C8sv00001043sd00008179* - ID_PRODUCT_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard - -pci:v00008086d000027C8sv0000105Bsd00000D7C* - ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard - -pci:v00008086d000027C8sv0000107Bsd00005048* - ID_PRODUCT_FROM_DATABASE=E4500 - -pci:v00008086d000027C8sv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d000027C8sv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=GA-D525TUD - -pci:v00008086d000027C8sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027C8sv000017AAsd0000200A* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60/R60 series - -pci:v00008086d000027C8sv00008086sd00004F4D* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO - -pci:v00008086d000027C8sv00008086sd0000544B* - ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT - -pci:v00008086d000027C8sv00008086sd0000544E* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d000027C9* - ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #2 - -pci:v00008086d000027C9sv00001025sd0000006C* - ID_PRODUCT_FROM_DATABASE=9814 WKMI - -pci:v00008086d000027C9sv00001028sd000001AD* - ID_PRODUCT_FROM_DATABASE=OptiPlex GX620 - -pci:v00008086d000027C9sv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v00008086d000027C9sv00001028sd000001DF* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC440 - -pci:v00008086d000027C9sv00001028sd000001E6* - ID_PRODUCT_FROM_DATABASE=PowerEdge 860 - -pci:v00008086d000027C9sv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Pavilion A1512X - -pci:v00008086d000027C9sv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00008086d000027C9sv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v00008086d000027C9sv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d000027C9sv00001043sd00001237* - ID_PRODUCT_FROM_DATABASE=A6J-Q008 - -pci:v00008086d000027C9sv00001043sd00008179* - ID_PRODUCT_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard - -pci:v00008086d000027C9sv0000105Bsd00000D7C* - ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard - -pci:v00008086d000027C9sv0000107Bsd00005048* - ID_PRODUCT_FROM_DATABASE=E4500 - -pci:v00008086d000027C9sv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d000027C9sv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=GA-D525TUD - -pci:v00008086d000027C9sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027C9sv000017AAsd0000200A* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60/R60 series - -pci:v00008086d000027C9sv00008086sd00004F4D* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO - -pci:v00008086d000027C9sv00008086sd0000544B* - ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT - -pci:v00008086d000027C9sv00008086sd0000544E* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d000027CA* - ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #3 - -pci:v00008086d000027CAsv00001025sd0000006C* - ID_PRODUCT_FROM_DATABASE=9814 WKMI - -pci:v00008086d000027CAsv00001028sd000001AD* - ID_PRODUCT_FROM_DATABASE=OptiPlex GX620 - -pci:v00008086d000027CAsv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v00008086d000027CAsv00001028sd000001DF* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC440 - -pci:v00008086d000027CAsv00001028sd000001E6* - ID_PRODUCT_FROM_DATABASE=PowerEdge 860 - -pci:v00008086d000027CAsv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Pavilion A1512X - -pci:v00008086d000027CAsv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00008086d000027CAsv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v00008086d000027CAsv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d000027CAsv00001043sd00001237* - ID_PRODUCT_FROM_DATABASE=A6J-Q008 - -pci:v00008086d000027CAsv00001043sd00008179* - ID_PRODUCT_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard - -pci:v00008086d000027CAsv0000105Bsd00000D7C* - ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard - -pci:v00008086d000027CAsv0000107Bsd00005048* - ID_PRODUCT_FROM_DATABASE=E4500 - -pci:v00008086d000027CAsv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d000027CAsv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=GA-D525TUD - -pci:v00008086d000027CAsv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027CAsv000017AAsd0000200A* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60/R60 series - -pci:v00008086d000027CAsv00008086sd00004F4D* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO - -pci:v00008086d000027CAsv00008086sd0000544E* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d000027CB* - ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family USB UHCI Controller #4 - -pci:v00008086d000027CBsv00001025sd0000006C* - ID_PRODUCT_FROM_DATABASE=9814 WKMI - -pci:v00008086d000027CBsv00001028sd000001AD* - ID_PRODUCT_FROM_DATABASE=OptiPlex GX620 - -pci:v00008086d000027CBsv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v00008086d000027CBsv00001028sd000001DF* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC440 - -pci:v00008086d000027CBsv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Pavilion A1512X - -pci:v00008086d000027CBsv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00008086d000027CBsv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v00008086d000027CBsv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d000027CBsv00001043sd00001237* - ID_PRODUCT_FROM_DATABASE=A6J-Q008 - -pci:v00008086d000027CBsv00001043sd00008179* - ID_PRODUCT_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard - -pci:v00008086d000027CBsv0000105Bsd00000D7C* - ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard - -pci:v00008086d000027CBsv0000107Bsd00005048* - ID_PRODUCT_FROM_DATABASE=E4500 - -pci:v00008086d000027CBsv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d000027CBsv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=GA-D525TUD - -pci:v00008086d000027CBsv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027CBsv000017AAsd0000200A* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60/R60 series - -pci:v00008086d000027CBsv00008086sd00004F4D* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO - -pci:v00008086d000027CBsv00008086sd0000544E* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d000027CC* - ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family USB2 EHCI Controller - -pci:v00008086d000027CCsv00001025sd0000006C* - ID_PRODUCT_FROM_DATABASE=9814 WKMI - -pci:v00008086d000027CCsv00001028sd000001AD* - ID_PRODUCT_FROM_DATABASE=OptiPlex GX620 - -pci:v00008086d000027CCsv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v00008086d000027CCsv00001028sd000001DF* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC440 - -pci:v00008086d000027CCsv00001028sd000001E6* - ID_PRODUCT_FROM_DATABASE=PowerEdge 860 - -pci:v00008086d000027CCsv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Pavilion A1512X - -pci:v00008086d000027CCsv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00008086d000027CCsv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v00008086d000027CCsv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d000027CCsv00001043sd00001237* - ID_PRODUCT_FROM_DATABASE=A6J-Q008 - -pci:v00008086d000027CCsv00001043sd00008179* - ID_PRODUCT_FROM_DATABASE=P5KPL-VM,P5LD2-VM Mainboard - -pci:v00008086d000027CCsv0000105Bsd00000D7C* - ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard - -pci:v00008086d000027CCsv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d000027CCsv00001458sd00005006* - ID_PRODUCT_FROM_DATABASE=GA-D525TUD - -pci:v00008086d000027CCsv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027CCsv000017AAsd0000200B* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60/R60 series - -pci:v00008086d000027CCsv00008086sd00004F4D* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO - -pci:v00008086d000027CCsv00008086sd0000544B* - ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT - -pci:v00008086d000027CCsv00008086sd0000544E* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d000027D0* - ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 1 - -pci:v00008086d000027D0sv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00008086d000027D0sv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d000027D0sv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d000027D0sv00001458sd00005001* - ID_PRODUCT_FROM_DATABASE=GA-D525TUD - -pci:v00008086d000027D0sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027D0sv00008086sd0000544B* - ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT - -pci:v00008086d000027D2* - ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 2 - -pci:v00008086d000027D2sv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00008086d000027D2sv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d000027D2sv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d000027D2sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027D2sv00008086sd0000544B* - ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT - -pci:v00008086d000027D4* - ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 3 - -pci:v00008086d000027D4sv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d000027D4sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027D4sv00008086sd0000544B* - ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT - -pci:v00008086d000027D6* - ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family PCI Express Port 4 - -pci:v00008086d000027D6sv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d000027D6sv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d000027D6sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027D6sv00008086sd0000544B* - ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT - -pci:v00008086d000027D8* - ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family High Definition Audio Controller - -pci:v00008086d000027D8sv00001025sd0000006C* - ID_PRODUCT_FROM_DATABASE=9814 WKMI - -pci:v00008086d000027D8sv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v00008086d000027D8sv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Pavilion A1512X - -pci:v00008086d000027D8sv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00008086d000027D8sv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v00008086d000027D8sv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d000027D8sv00001043sd00001123* - ID_PRODUCT_FROM_DATABASE=A6J-Q008 - -pci:v00008086d000027D8sv00001043sd000013C4* - ID_PRODUCT_FROM_DATABASE=Asus G2P - -pci:v00008086d000027D8sv00001043sd0000817F* - ID_PRODUCT_FROM_DATABASE=P5LD2-VM Mainboard (Realtek ALC 882 codec) - -pci:v00008086d000027D8sv00001043sd00008290* - ID_PRODUCT_FROM_DATABASE=P5KPL-VM Motherboard - -pci:v00008086d000027D8sv00001043sd000082EA* - ID_PRODUCT_FROM_DATABASE=P5KPL-CM Motherboard - -pci:v00008086d000027D8sv0000105Bsd00000D7C* - ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard - -pci:v00008086d000027D8sv0000107Bsd00005048* - ID_PRODUCT_FROM_DATABASE=E4500 - -pci:v00008086d000027D8sv000010F7sd00008338* - ID_PRODUCT_FROM_DATABASE=Panasonic CF-Y5 laptop - -pci:v00008086d000027D8sv00001179sd0000FF10* - ID_PRODUCT_FROM_DATABASE=Toshiba Satellite A100-796 audio (Realtek ALC861) - -pci:v00008086d000027D8sv00001179sd0000FF31* - ID_PRODUCT_FROM_DATABASE=AC97 Data Fax SoftModem with SmartCP - -pci:v00008086d000027D8sv00001447sd00001043* - ID_PRODUCT_FROM_DATABASE=Asus A8JP (Analog Devices AD1986A) - -pci:v00008086d000027D8sv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d000027D8sv00001458sd0000A002* - ID_PRODUCT_FROM_DATABASE=GA-D525TUD (Realtek ALC887) - -pci:v00008086d000027D8sv00001458sd0000A102* - ID_PRODUCT_FROM_DATABASE=GA-8I945PG-RH Mainboard - -pci:v00008086d000027D8sv0000152Dsd00000753* - ID_PRODUCT_FROM_DATABASE=Softmodem - -pci:v00008086d000027D8sv00001734sd000010AD* - ID_PRODUCT_FROM_DATABASE=Conexant softmodem SmartCP - -pci:v00008086d000027D8sv000017AAsd00002010* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60/R60 series - -pci:v00008086d000027D8sv000017AAsd00003802* - ID_PRODUCT_FROM_DATABASE=Lenovo 3000 C200 audio [Realtek ALC861VD] - -pci:v00008086d000027D8sv00008086sd00001112* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d000027D8sv00008086sd000027D8* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d000027D8sv00008086sd0000D618* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO - -pci:v00008086d000027D8sv00008384sd00007680* - ID_PRODUCT_FROM_DATABASE=STAC9221 HD Audio Codec - -pci:v00008086d000027DA* - ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family SMBus Controller - -pci:v00008086d000027DAsv00001025sd0000006C* - ID_PRODUCT_FROM_DATABASE=9814 WKMI - -pci:v00008086d000027DAsv00001028sd000001AD* - ID_PRODUCT_FROM_DATABASE=OptiPlex GX620 - -pci:v00008086d000027DAsv00001028sd000001D7* - ID_PRODUCT_FROM_DATABASE=XPS M1210 - -pci:v00008086d000027DAsv00001028sd000001DF* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC440 - -pci:v00008086d000027DAsv00001028sd000001E6* - ID_PRODUCT_FROM_DATABASE=PowerEdge 860 - -pci:v00008086d000027DAsv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Pavilion A1512X - -pci:v00008086d000027DAsv00001043sd00008179* - ID_PRODUCT_FROM_DATABASE=P5KPL-VM Motherboard - -pci:v00008086d000027DAsv0000105Bsd00000D7C* - ID_PRODUCT_FROM_DATABASE=D270S/D250S Motherboard - -pci:v00008086d000027DAsv000010F7sd00008338* - ID_PRODUCT_FROM_DATABASE=Panasonic CF-Y5 laptop - -pci:v00008086d000027DAsv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d000027DAsv00001458sd00005001* - ID_PRODUCT_FROM_DATABASE=GA-8I945PG-RH/GA-D525TUD Mainboard - -pci:v00008086d000027DAsv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027DAsv000017AAsd0000200F* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60/R60 series - -pci:v00008086d000027DAsv00008086sd00004F4D* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO - -pci:v00008086d000027DAsv00008086sd0000544B* - ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT - -pci:v00008086d000027DAsv00008086sd0000544E* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d000027DAsv00008086sd00005842* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D975XBX - -pci:v00008086d000027DC* - ID_PRODUCT_FROM_DATABASE=NM10/ICH7 Family LAN Controller - -pci:v00008086d000027DCsv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Pavilion A1512X - -pci:v00008086d000027DCsv00008086sd0000308D* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d000027DD* - ID_PRODUCT_FROM_DATABASE=82801G (ICH7 Family) AC'97 Modem Controller - -pci:v00008086d000027DE* - ID_PRODUCT_FROM_DATABASE=82801G (ICH7 Family) AC'97 Audio Controller - -pci:v00008086d000027DEsv00001028sd000001AD* - ID_PRODUCT_FROM_DATABASE=OptiPlex GX620 - -pci:v00008086d000027DEsv00001462sd00007267* - ID_PRODUCT_FROM_DATABASE=Realtek ALC883 Audio Controller - -pci:v00008086d000027DEsv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11 integrated audio (AD1981BL codec) - -pci:v00008086d000027DF* - ID_PRODUCT_FROM_DATABASE=82801G (ICH7 Family) IDE Controller - -pci:v00008086d000027DFsv00001028sd000001DF* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC440 - -pci:v00008086d000027DFsv00001028sd000001E6* - ID_PRODUCT_FROM_DATABASE=PowerEdge 860 - -pci:v00008086d000027DFsv0000103Csd00002A3B* - ID_PRODUCT_FROM_DATABASE=Pavilion A1512X - -pci:v00008086d000027DFsv0000103Csd0000309F* - ID_PRODUCT_FROM_DATABASE=Compaq nx9420 Notebook - -pci:v00008086d000027DFsv0000103Csd000030A1* - ID_PRODUCT_FROM_DATABASE=NC2400 - -pci:v00008086d000027DFsv0000103Csd000030A3* - ID_PRODUCT_FROM_DATABASE=Compaq nw8440 - -pci:v00008086d000027DFsv00001043sd00001237* - ID_PRODUCT_FROM_DATABASE=A6J-Q008 - -pci:v00008086d000027DFsv00001043sd00008179* - ID_PRODUCT_FROM_DATABASE=P5KPL-VM Motherboard - -pci:v00008086d000027DFsv0000107Bsd00005048* - ID_PRODUCT_FROM_DATABASE=E4500 - -pci:v00008086d000027DFsv000010F7sd00008338* - ID_PRODUCT_FROM_DATABASE=Panasonic CF-Y5 laptop - -pci:v00008086d000027DFsv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027DFsv000017AAsd0000200C* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60/R60 series - -pci:v00008086d000027DFsv00008086sd0000544E* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D945GTP - -pci:v00008086d000027E0* - ID_PRODUCT_FROM_DATABASE=82801GR/GH/GHM (ICH7 Family) PCI Express Port 5 - -pci:v00008086d000027E0sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d000027E2* - ID_PRODUCT_FROM_DATABASE=82801GR/GH/GHM (ICH7 Family) PCI Express Port 6 - -pci:v00008086d000027E2sv00001775sd000011CC* - ID_PRODUCT_FROM_DATABASE=CC11/CL11 - -pci:v00008086d00002810* - ID_PRODUCT_FROM_DATABASE=82801HB/HR (ICH8/R) LPC Interface Controller - -pci:v00008086d00002810sv00001043sd000081EC* - ID_PRODUCT_FROM_DATABASE=P5B - -pci:v00008086d00002811* - ID_PRODUCT_FROM_DATABASE=82801HEM (ICH8M-E) LPC Interface Controller - -pci:v00008086d00002811sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002811sv000017AAsd000020B6* - ID_PRODUCT_FROM_DATABASE=T61 - -pci:v00008086d00002811sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002812* - ID_PRODUCT_FROM_DATABASE=82801HH (ICH8DH) LPC Interface Controller - -pci:v00008086d00002814* - ID_PRODUCT_FROM_DATABASE=82801HO (ICH8DO) LPC Interface Controller - -pci:v00008086d00002815* - ID_PRODUCT_FROM_DATABASE=82801HM (ICH8M) LPC Interface Controller - -pci:v00008086d00002815sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v00008086d00002815sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00008086d00002815sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d00002815sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00008086d00002815sv0000103Csd000030D9* - ID_PRODUCT_FROM_DATABASE=Presario C700 - -pci:v00008086d00002815sv0000104Dsd00009005* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-FZ260E - -pci:v00008086d00002815sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002820* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) 4 port SATA Controller [IDE mode] - -pci:v00008086d00002820sv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v00008086d00002820sv00001462sd00007235* - ID_PRODUCT_FROM_DATABASE=P965 Neo MS-7235 mainboard - -pci:v00008086d00002821* - ID_PRODUCT_FROM_DATABASE=82801HR/HO/HH (ICH8R/DO/DH) 6 port SATA Controller [AHCI mode] - -pci:v00008086d00002822* - ID_PRODUCT_FROM_DATABASE=82801 SATA Controller [RAID mode] - -pci:v00008086d00002822sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002823* - ID_PRODUCT_FROM_DATABASE=Wellsburg sSATA RAID Controller - -pci:v00008086d00002824* - ID_PRODUCT_FROM_DATABASE=82801HB (ICH8) 4 port SATA Controller [AHCI mode] - -pci:v00008086d00002824sv00001043sd000081EC* - ID_PRODUCT_FROM_DATABASE=P5B - -pci:v00008086d00002825* - ID_PRODUCT_FROM_DATABASE=82801HR/HO/HH (ICH8R/DO/DH) 2 port SATA Controller [IDE mode] - -pci:v00008086d00002825sv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v00008086d00002825sv00001462sd00007235* - ID_PRODUCT_FROM_DATABASE=P965 Neo MS-7235 mainboard - -pci:v00008086d00002826* - ID_PRODUCT_FROM_DATABASE=C600/X79 series chipset SATA RAID Controller - -pci:v00008086d00002827* - ID_PRODUCT_FROM_DATABASE=Wellsburg sSATA RAID Controller - -pci:v00008086d00002828* - ID_PRODUCT_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [IDE mode] - -pci:v00008086d00002828sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00008086d00002828sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d00002828sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002829* - ID_PRODUCT_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) SATA Controller [AHCI mode] - -pci:v00008086d00002829sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v00008086d00002829sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d00002829sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002829sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00008086d00002829sv0000103Csd000030D9* - ID_PRODUCT_FROM_DATABASE=Presario C700 - -pci:v00008086d00002829sv0000104Dsd00009005* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-FZ260E - -pci:v00008086d00002829sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002829sv000017AAsd000020A7* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d00002829sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d0000282A* - ID_PRODUCT_FROM_DATABASE=82801 Mobile SATA Controller [RAID mode] - -pci:v00008086d0000282Asv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d0000282Asv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d00002830* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #1 - -pci:v00008086d00002830sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Acer Aspire 5920G - -pci:v00008086d00002830sv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v00008086d00002830sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00008086d00002830sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d00002830sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002830sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00008086d00002830sv0000103Csd000030D9* - ID_PRODUCT_FROM_DATABASE=Presario C700 - -pci:v00008086d00002830sv00001043sd000081EC* - ID_PRODUCT_FROM_DATABASE=P5B - -pci:v00008086d00002830sv0000104Dsd00009005* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-FZ260E - -pci:v00008086d00002830sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002830sv00001462sd00007235* - ID_PRODUCT_FROM_DATABASE=P965 Neo MS-7235 mainboard - -pci:v00008086d00002830sv000017AAsd000020AA* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d00002830sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002831* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #2 - -pci:v00008086d00002831sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v00008086d00002831sv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v00008086d00002831sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00008086d00002831sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d00002831sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002831sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00008086d00002831sv0000103Csd000030D9* - ID_PRODUCT_FROM_DATABASE=Presario C700 - -pci:v00008086d00002831sv00001043sd000081EC* - ID_PRODUCT_FROM_DATABASE=P5B - -pci:v00008086d00002831sv0000104Dsd00009005* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-FZ260E - -pci:v00008086d00002831sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002831sv00001462sd00007235* - ID_PRODUCT_FROM_DATABASE=P965 Neo MS-7235 mainboard - -pci:v00008086d00002831sv000017AAsd000020AA* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d00002831sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002832* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #3 - -pci:v00008086d00002832sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v00008086d00002832sv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v00008086d00002832sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00008086d00002832sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d00002832sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002832sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00008086d00002832sv0000103Csd000030D9* - ID_PRODUCT_FROM_DATABASE=Presario C700 - -pci:v00008086d00002832sv00001043sd000081EC* - ID_PRODUCT_FROM_DATABASE=P5B - -pci:v00008086d00002832sv0000104Dsd00009005* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-FZ260E - -pci:v00008086d00002832sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002832sv000017AAsd000020AA* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d00002832sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002833* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 - -pci:v00008086d00002833sv00001043sd000081EC* - ID_PRODUCT_FROM_DATABASE=P5B - -pci:v00008086d00002834* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #4 - -pci:v00008086d00002834sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v00008086d00002834sv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v00008086d00002834sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00008086d00002834sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d00002834sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002834sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00008086d00002834sv00001043sd000081EC* - ID_PRODUCT_FROM_DATABASE=P5B - -pci:v00008086d00002834sv0000104Dsd00009005* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-FZ260E - -pci:v00008086d00002834sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002834sv00001462sd00007235* - ID_PRODUCT_FROM_DATABASE=P965 Neo MS-7235 mainboard - -pci:v00008086d00002834sv000017AAsd000020AA* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d00002834sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002835* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) USB UHCI Controller #5 - -pci:v00008086d00002835sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Acer Aspire 5920G - -pci:v00008086d00002835sv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v00008086d00002835sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00008086d00002835sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d00002835sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002835sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00008086d00002835sv00001043sd000081EC* - ID_PRODUCT_FROM_DATABASE=P5B - -pci:v00008086d00002835sv0000104Dsd00009005* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-FZ260E - -pci:v00008086d00002835sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002835sv000017AAsd000020AA* - ID_PRODUCT_FROM_DATABASE=ThinkPad T60 - -pci:v00008086d00002835sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002836* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #1 - -pci:v00008086d00002836sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v00008086d00002836sv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v00008086d00002836sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00008086d00002836sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d00002836sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002836sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00008086d00002836sv0000103Csd000030D9* - ID_PRODUCT_FROM_DATABASE=Presario C700 - -pci:v00008086d00002836sv00001043sd000081EC* - ID_PRODUCT_FROM_DATABASE=P5B - -pci:v00008086d00002836sv0000104Dsd00009005* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-FZ260E - -pci:v00008086d00002836sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002836sv00001462sd00007235* - ID_PRODUCT_FROM_DATABASE=P965 Neo MS-7235 mainboard - -pci:v00008086d00002836sv000017AAsd000020AB* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d00002836sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d0000283A* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) USB2 EHCI Controller #2 - -pci:v00008086d0000283Asv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Acer Aspire 5920G - -pci:v00008086d0000283Asv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v00008086d0000283Asv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00008086d0000283Asv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d0000283Asv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d0000283Asv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00008086d0000283Asv00001043sd000081EC* - ID_PRODUCT_FROM_DATABASE=P5B - -pci:v00008086d0000283Asv0000104Dsd00009005* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-FZ260E - -pci:v00008086d0000283Asv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d0000283Asv000017AAsd000020AB* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d0000283Asv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d0000283E* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) SMBus Controller - -pci:v00008086d0000283Esv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v00008086d0000283Esv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v00008086d0000283Esv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00008086d0000283Esv0000103Csd000030D9* - ID_PRODUCT_FROM_DATABASE=Presario C700 - -pci:v00008086d0000283Esv00001043sd000081EC* - ID_PRODUCT_FROM_DATABASE=P5B - -pci:v00008086d0000283Esv0000104Dsd00009005* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-FZ260E - -pci:v00008086d0000283Esv0000104Dsd00009008* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-SZ79SN_C - -pci:v00008086d0000283Esv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d0000283Esv00001462sd00007235* - ID_PRODUCT_FROM_DATABASE=P965 Neo MS-7235 mainboard - -pci:v00008086d0000283Esv000017AAsd000020A9* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d0000283Esv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d0000283F* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 1 - -pci:v00008086d0000283Fsv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v00008086d0000283Fsv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d0000283Fsv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d0000283Fsv000017AAsd000020AD* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d00002841* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 2 - -pci:v00008086d00002841sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002841sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002841sv000017AAsd000020AD* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d00002843* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 3 - -pci:v00008086d00002843sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002843sv000017AAsd000020AD* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d00002845* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 4 - -pci:v00008086d00002845sv000017AAsd000020AD* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d00002847* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 5 - -pci:v00008086d00002847sv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v00008086d00002847sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002847sv000017AAsd000020AD* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d00002849* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) PCI Express Port 6 - -pci:v00008086d0000284B* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) HD Audio Controller - -pci:v00008086d0000284Bsv00001025sd0000011F* - ID_PRODUCT_FROM_DATABASE=Realtek ALC268 audio codec - -pci:v00008086d0000284Bsv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v00008086d0000284Bsv00001025sd00000145* - ID_PRODUCT_FROM_DATABASE=Realtek ALC889 (Aspire 8920G w. Dolby Theather) - -pci:v00008086d0000284Bsv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v00008086d0000284Bsv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00008086d0000284Bsv00001028sd000001F9* - ID_PRODUCT_FROM_DATABASE=Dell Latitude D630 - -pci:v00008086d0000284Bsv00001028sd000001FF* - ID_PRODUCT_FROM_DATABASE=Dell Precision M4300 - -pci:v00008086d0000284Bsv00001028sd00000256* - ID_PRODUCT_FROM_DATABASE=Studio 1735 - -pci:v00008086d0000284Bsv0000103Csd00002802* - ID_PRODUCT_FROM_DATABASE=HP Compaq dc7700p - -pci:v00008086d0000284Bsv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d0000284Bsv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d0000284Bsv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00008086d0000284Bsv00001043sd00001339* - ID_PRODUCT_FROM_DATABASE=Asus M51S series - -pci:v00008086d0000284Bsv00001043sd000081EC* - ID_PRODUCT_FROM_DATABASE=P5B - -pci:v00008086d0000284Bsv0000104Dsd00009005* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-FZ260E - -pci:v00008086d0000284Bsv0000104Dsd00009008* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-SZ79SN_C - -pci:v00008086d0000284Bsv0000104Dsd00009016* - ID_PRODUCT_FROM_DATABASE=Sony VAIO VGN-AR51M - -pci:v00008086d0000284Bsv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d0000284Bsv000014F1sd00005051* - ID_PRODUCT_FROM_DATABASE=Presario C700 - -pci:v00008086d0000284Bsv000017AAsd000020AC* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d0000284Bsv00008384sd00007616* - ID_PRODUCT_FROM_DATABASE=Dell Vostro 1400 - -pci:v00008086d0000284Bsv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d0000284F* - ID_PRODUCT_FROM_DATABASE=82801H (ICH8 Family) Thermal Reporting Device - -pci:v00008086d00002850* - ID_PRODUCT_FROM_DATABASE=82801HM/HEM (ICH8M/ICH8M-E) IDE Controller - -pci:v00008086d00002850sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Aspire 5920G - -pci:v00008086d00002850sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00008086d00002850sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d00002850sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002850sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00008086d00002850sv0000103Csd000030D9* - ID_PRODUCT_FROM_DATABASE=Presario C700 - -pci:v00008086d00002850sv0000104Dsd00009005* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-FZ260E - -pci:v00008086d00002850sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002850sv000017AAsd000020A6* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d00002850sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002912* - ID_PRODUCT_FROM_DATABASE=82801IH (ICH9DH) LPC Interface Controller - -pci:v00008086d00002914* - ID_PRODUCT_FROM_DATABASE=82801IO (ICH9DO) LPC Interface Controller - -pci:v00008086d00002914sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002916* - ID_PRODUCT_FROM_DATABASE=82801IR (ICH9R) LPC Interface Controller - -pci:v00008086d00002916sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002916sv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d00002916sv00008086sd00005044* - ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP - -pci:v00008086d00002917* - ID_PRODUCT_FROM_DATABASE=ICH9M-E LPC Interface Controller - -pci:v00008086d00002917sv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d00002918* - ID_PRODUCT_FROM_DATABASE=82801IB (ICH9) LPC Interface Controller - -pci:v00008086d00002918sv00001028sd00000236* - ID_PRODUCT_FROM_DATABASE=PowerEdge R610 82801IB (ICH9) LPC Interface Controller - -pci:v00008086d00002918sv00001462sd00007360* - ID_PRODUCT_FROM_DATABASE=G33/P35 Neo - -pci:v00008086d00002919* - ID_PRODUCT_FROM_DATABASE=ICH9M LPC Interface Controller - -pci:v00008086d00002920* - ID_PRODUCT_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 4 port SATA Controller [IDE mode] - -pci:v00008086d00002920sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002920sv00001028sd0000020F* - ID_PRODUCT_FROM_DATABASE=PowerEdge R300 onboard SATA Controller - -pci:v00008086d00002920sv00001028sd00000210* - ID_PRODUCT_FROM_DATABASE=PowerEdge T300 onboard SATA Controller - -pci:v00008086d00002920sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002920sv00001028sd0000023C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R200 onboard SATA Controller - -pci:v00008086d00002920sv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d00002921* - ID_PRODUCT_FROM_DATABASE=82801IB (ICH9) 2 port SATA Controller [IDE mode] - -pci:v00008086d00002921sv00001028sd00000235* - ID_PRODUCT_FROM_DATABASE=PowerEdge R710 SATA IDE Controller - -pci:v00008086d00002921sv00001028sd00000236* - ID_PRODUCT_FROM_DATABASE=PowerEdge R610 SATA IDE Controller - -pci:v00008086d00002921sv00001028sd00000237* - ID_PRODUCT_FROM_DATABASE=PowerEdge T610 SATA IDE Controller - -pci:v00008086d00002921sv00001462sd00007360* - ID_PRODUCT_FROM_DATABASE=G33/P35 Neo - -pci:v00008086d00002922* - ID_PRODUCT_FROM_DATABASE=82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode] - -pci:v00008086d00002922sv00008086sd00005044* - ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP - -pci:v00008086d00002923* - ID_PRODUCT_FROM_DATABASE=82801IB (ICH9) 4 port SATA Controller [AHCI mode] - -pci:v00008086d00002925* - ID_PRODUCT_FROM_DATABASE=82801IR/IO (ICH9R/DO) SATA Controller [RAID mode] - -pci:v00008086d00002925sv00001734sd000010E0* - ID_PRODUCT_FROM_DATABASE=System Board D2542 - -pci:v00008086d00002925sv00008086sd00002925* - ID_PRODUCT_FROM_DATABASE=System Board D2542 - -pci:v00008086d00002926* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) 2 port SATA Controller [IDE mode] - -pci:v00008086d00002926sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002926sv00001028sd0000020F* - ID_PRODUCT_FROM_DATABASE=PowerEdge R300 onboard SATA Controller - -pci:v00008086d00002926sv00001028sd00000210* - ID_PRODUCT_FROM_DATABASE=PowerEdge T300 onboard SATA Controller - -pci:v00008086d00002926sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002926sv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d00002926sv00001462sd00007360* - ID_PRODUCT_FROM_DATABASE=G33/P35 Neo - -pci:v00008086d00002928* - ID_PRODUCT_FROM_DATABASE=82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode] - -pci:v00008086d00002929* - ID_PRODUCT_FROM_DATABASE=82801IBM/IEM (ICH9M/ICH9M-E) 4 port SATA Controller [AHCI mode] - -pci:v00008086d00002929sv0000103Csd00003628* - ID_PRODUCT_FROM_DATABASE=dv6-1190en - -pci:v00008086d00002929sv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d0000292C* - ID_PRODUCT_FROM_DATABASE=82801IEM (ICH9M-E) SATA Controller [RAID mode] - -pci:v00008086d0000292D* - ID_PRODUCT_FROM_DATABASE=82801IBM/IEM (ICH9M/ICH9M-E) 2 port SATA Controller [IDE mode] - -pci:v00008086d0000292Dsv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d00002930* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) SMBus Controller - -pci:v00008086d00002930sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002930sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002930sv0000103Csd00003628* - ID_PRODUCT_FROM_DATABASE=dv6-1190en - -pci:v00008086d00002930sv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d00002930sv00001462sd00007360* - ID_PRODUCT_FROM_DATABASE=G33/P35 Neo - -pci:v00008086d00002930sv00008086sd00005044* - ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP - -pci:v00008086d00002930sv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d00002932* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) Thermal Subsystem - -pci:v00008086d00002932sv0000103Csd00003628* - ID_PRODUCT_FROM_DATABASE=dv6-1190en - -pci:v00008086d00002934* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #1 - -pci:v00008086d00002934sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002934sv00001028sd0000020F* - ID_PRODUCT_FROM_DATABASE=PowerEdge R300 onboard UHCI - -pci:v00008086d00002934sv00001028sd00000210* - ID_PRODUCT_FROM_DATABASE=PowerEdge T300 onboard UHCI - -pci:v00008086d00002934sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002934sv00001028sd00000235* - ID_PRODUCT_FROM_DATABASE=PowerEdge R710 USB UHCI Controller - -pci:v00008086d00002934sv00001028sd00000236* - ID_PRODUCT_FROM_DATABASE=PowerEdge R610 USB UHCI Controller - -pci:v00008086d00002934sv00001028sd00000237* - ID_PRODUCT_FROM_DATABASE=PowerEdge T610 USB UHCI Controller - -pci:v00008086d00002934sv00001028sd0000023C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R200 onboard UHCI - -pci:v00008086d00002934sv00001028sd00000287* - ID_PRODUCT_FROM_DATABASE=PowerEdge M610 onboard UHCI - -pci:v00008086d00002934sv00001028sd0000029C* - ID_PRODUCT_FROM_DATABASE=PowerEdge M710 USB UHCI Controller - -pci:v00008086d00002934sv00001028sd00002011* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002934sv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d00002934sv00001462sd00007360* - ID_PRODUCT_FROM_DATABASE=G33/P35 Neo - -pci:v00008086d00002934sv00008086sd00005044* - ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP - -pci:v00008086d00002934sv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d00002935* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #2 - -pci:v00008086d00002935sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002935sv00001028sd0000020F* - ID_PRODUCT_FROM_DATABASE=PowerEdge R300 onboard UHCI - -pci:v00008086d00002935sv00001028sd00000210* - ID_PRODUCT_FROM_DATABASE=PowerEdge T300 onboard UHCI - -pci:v00008086d00002935sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002935sv00001028sd00000235* - ID_PRODUCT_FROM_DATABASE=PowerEdge R710 USB UHCI Controller - -pci:v00008086d00002935sv00001028sd00000236* - ID_PRODUCT_FROM_DATABASE=PowerEdge R610 USB UHCI Controller - -pci:v00008086d00002935sv00001028sd00000237* - ID_PRODUCT_FROM_DATABASE=PowerEdge T610 USB UHCI Controller - -pci:v00008086d00002935sv00001028sd0000023C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R200 onboard UHCI - -pci:v00008086d00002935sv00001028sd00000287* - ID_PRODUCT_FROM_DATABASE=PowerEdge M610 onboard UHCI - -pci:v00008086d00002935sv00001028sd0000029C* - ID_PRODUCT_FROM_DATABASE=PowerEdge M710 USB UHCI Controller - -pci:v00008086d00002935sv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d00002935sv00001462sd00007360* - ID_PRODUCT_FROM_DATABASE=G33/P35 Neo - -pci:v00008086d00002935sv00008086sd00005044* - ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP - -pci:v00008086d00002935sv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d00002936* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #3 - -pci:v00008086d00002936sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002936sv00001028sd0000020F* - ID_PRODUCT_FROM_DATABASE=PowerEdge R300 onboard UHCI - -pci:v00008086d00002936sv00001028sd00000210* - ID_PRODUCT_FROM_DATABASE=PowerEdge T300 onboard UHCI - -pci:v00008086d00002936sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002936sv00001028sd00000237* - ID_PRODUCT_FROM_DATABASE=PowerEdge T610 USB UHCI Controller - -pci:v00008086d00002936sv00001028sd0000023C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R200 onboard UHCI - -pci:v00008086d00002936sv00001028sd00000287* - ID_PRODUCT_FROM_DATABASE=PowerEdge M610 onboard UHCI - -pci:v00008086d00002936sv00001028sd0000029C* - ID_PRODUCT_FROM_DATABASE=PowerEdge M710 USB UHCI Controller - -pci:v00008086d00002936sv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d00002936sv00001462sd00007360* - ID_PRODUCT_FROM_DATABASE=G33/P35 Neo - -pci:v00008086d00002936sv00008086sd00005044* - ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP - -pci:v00008086d00002936sv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d00002937* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #4 - -pci:v00008086d00002937sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002937sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002937sv00001028sd00000235* - ID_PRODUCT_FROM_DATABASE=PowerEdge R710 USB UHCI Controller - -pci:v00008086d00002937sv00001028sd00000236* - ID_PRODUCT_FROM_DATABASE=PowerEdge R610 USB UHCI Controller - -pci:v00008086d00002937sv00001028sd00000237* - ID_PRODUCT_FROM_DATABASE=PowerEdge T610 USB UHCI Controller - -pci:v00008086d00002937sv00001028sd00000287* - ID_PRODUCT_FROM_DATABASE=PowerEdge M610 onboard UHCI - -pci:v00008086d00002937sv00001028sd0000029C* - ID_PRODUCT_FROM_DATABASE=PowerEdge M710 USB UHCI Controller - -pci:v00008086d00002937sv00001028sd00002011* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002937sv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d00002937sv00001462sd00007360* - ID_PRODUCT_FROM_DATABASE=G33/P35 Neo - -pci:v00008086d00002937sv00008086sd00002937* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002937sv00008086sd00002942* - ID_PRODUCT_FROM_DATABASE=828011 (ICH9 Family ) USB UHCI Controller - -pci:v00008086d00002937sv00008086sd00005044* - ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP - -pci:v00008086d00002937sv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d00002938* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #5 - -pci:v00008086d00002938sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002938sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002938sv00001028sd00000235* - ID_PRODUCT_FROM_DATABASE=PowerEdge R710 USB UHCI Controller - -pci:v00008086d00002938sv00001028sd00000236* - ID_PRODUCT_FROM_DATABASE=PowerEdge R610 USB UHCI Controller - -pci:v00008086d00002938sv00001028sd00000237* - ID_PRODUCT_FROM_DATABASE=PowerEdge T610 USB UHCI Controller - -pci:v00008086d00002938sv00001028sd00000287* - ID_PRODUCT_FROM_DATABASE=PowerEdge M610 onboard UHCI - -pci:v00008086d00002938sv00001028sd0000029C* - ID_PRODUCT_FROM_DATABASE=PowerEdge M710 USB UHCI Controller - -pci:v00008086d00002938sv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d00002938sv00001462sd00007360* - ID_PRODUCT_FROM_DATABASE=G33/P35 Neo - -pci:v00008086d00002938sv00008086sd00002938* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002938sv00008086sd00005044* - ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP - -pci:v00008086d00002938sv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d00002939* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) USB UHCI Controller #6 - -pci:v00008086d00002939sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002939sv00001028sd00000210* - ID_PRODUCT_FROM_DATABASE=PowerEdge T300 onboard UHCI - -pci:v00008086d00002939sv00001028sd00000237* - ID_PRODUCT_FROM_DATABASE=PowerEdge T610 USB UHCI Controller - -pci:v00008086d00002939sv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d00002939sv00001462sd00007360* - ID_PRODUCT_FROM_DATABASE=G33/P35 Neo - -pci:v00008086d00002939sv00008086sd00005044* - ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP - -pci:v00008086d00002939sv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d0000293A* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #1 - -pci:v00008086d0000293Asv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d0000293Asv00001028sd0000020F* - ID_PRODUCT_FROM_DATABASE=PowerEdge R300 onboard EHCI - -pci:v00008086d0000293Asv00001028sd00000210* - ID_PRODUCT_FROM_DATABASE=PowerEdge T300 onboard EHCI - -pci:v00008086d0000293Asv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d0000293Asv00001028sd00000235* - ID_PRODUCT_FROM_DATABASE=PowerEdge R710 USB EHCI Controller - -pci:v00008086d0000293Asv00001028sd00000236* - ID_PRODUCT_FROM_DATABASE=PowerEdge R610 USB EHCI Controller - -pci:v00008086d0000293Asv00001028sd00000237* - ID_PRODUCT_FROM_DATABASE=PowerEdge T610 USB EHCI Controller - -pci:v00008086d0000293Asv00001028sd0000023C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R200 onboard EHCI - -pci:v00008086d0000293Asv00001028sd00000287* - ID_PRODUCT_FROM_DATABASE=PowerEdge M610 onboard EHCI - -pci:v00008086d0000293Asv00001028sd0000029C* - ID_PRODUCT_FROM_DATABASE=PowerEdge M710 USB EHCI Controller - -pci:v00008086d0000293Asv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d0000293Asv00001462sd00007360* - ID_PRODUCT_FROM_DATABASE=G33/P35 Neo - -pci:v00008086d0000293Asv00008086sd00005044* - ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP - -pci:v00008086d0000293Asv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d0000293C* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) USB2 EHCI Controller #2 - -pci:v00008086d0000293Csv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d0000293Csv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d0000293Csv00001028sd00000235* - ID_PRODUCT_FROM_DATABASE=PowerEdge R710 USB EHCI Controller - -pci:v00008086d0000293Csv00001028sd00000236* - ID_PRODUCT_FROM_DATABASE=PowerEdge R610 USB EHCI Controller - -pci:v00008086d0000293Csv00001028sd00000237* - ID_PRODUCT_FROM_DATABASE=PowerEdge T610 USB EHCI Controller - -pci:v00008086d0000293Csv00001028sd00000287* - ID_PRODUCT_FROM_DATABASE=PowerEdge M610 onboard EHCI - -pci:v00008086d0000293Csv00001028sd0000029C* - ID_PRODUCT_FROM_DATABASE=PowerEdge M710 USB EHCI Controller - -pci:v00008086d0000293Csv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d0000293Csv00001462sd00007360* - ID_PRODUCT_FROM_DATABASE=G33/P35 Neo - -pci:v00008086d0000293Csv00008086sd0000293C* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d0000293Csv00008086sd00005044* - ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP - -pci:v00008086d0000293Csv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d0000293E* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) HD Audio Controller - -pci:v00008086d0000293Esv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d0000293Esv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d0000293Esv0000103Csd00003628* - ID_PRODUCT_FROM_DATABASE=dv6-1190en - -pci:v00008086d0000293Esv00001043sd0000829F* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d0000293Esv00001462sd00007360* - ID_PRODUCT_FROM_DATABASE=G33/P35 Neo - -pci:v00008086d0000293Esv00008086sd0000293E* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d0000293Esv00008086sd00002940* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d0000293Esv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d00002940* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 1 - -pci:v00008086d00002940sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002940sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002940sv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d00002940sv00008086sd00002940* - ID_PRODUCT_FROM_DATABASE=Optiplex 755 - -pci:v00008086d00002942* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 2 - -pci:v00008086d00002942sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002944* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 3 - -pci:v00008086d00002944sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002946* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 4 - -pci:v00008086d00002946sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002948* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 5 - -pci:v00008086d00002948sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d00002948sv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d0000294A* - ID_PRODUCT_FROM_DATABASE=82801I (ICH9 Family) PCI Express Port 6 - -pci:v00008086d0000294Asv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d0000294Asv00001043sd00008277* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d0000294C* - ID_PRODUCT_FROM_DATABASE=82566DC-2 Gigabit Network Connection - -pci:v00008086d0000294Csv000017AAsd0000302E* - ID_PRODUCT_FROM_DATABASE=82566DM-2 Gigabit Network Connection - -pci:v00008086d00002970* - ID_PRODUCT_FROM_DATABASE=82946GZ/PL/GL Memory Controller Hub - -pci:v00008086d00002971* - ID_PRODUCT_FROM_DATABASE=82946GZ/PL/GL PCI Express Root Port - -pci:v00008086d00002972* - ID_PRODUCT_FROM_DATABASE=82946GZ/GL Integrated Graphics Controller - -pci:v00008086d00002973* - ID_PRODUCT_FROM_DATABASE=82946GZ/GL Integrated Graphics Controller - -pci:v00008086d00002974* - ID_PRODUCT_FROM_DATABASE=82946GZ/GL HECI Controller - -pci:v00008086d00002975* - ID_PRODUCT_FROM_DATABASE=82946GZ/GL HECI Controller - -pci:v00008086d00002976* - ID_PRODUCT_FROM_DATABASE=82946GZ/GL PT IDER Controller - -pci:v00008086d00002977* - ID_PRODUCT_FROM_DATABASE=82946GZ/GL KT Controller - -pci:v00008086d00002980* - ID_PRODUCT_FROM_DATABASE=82G35 Express DRAM Controller - -pci:v00008086d00002981* - ID_PRODUCT_FROM_DATABASE=82G35 Express PCI Express Root Port - -pci:v00008086d00002982* - ID_PRODUCT_FROM_DATABASE=82G35 Express Integrated Graphics Controller - -pci:v00008086d00002983* - ID_PRODUCT_FROM_DATABASE=82G35 Express Integrated Graphics Controller - -pci:v00008086d00002984* - ID_PRODUCT_FROM_DATABASE=82G35 Express HECI Controller - -pci:v00008086d00002990* - ID_PRODUCT_FROM_DATABASE=82Q963/Q965 Memory Controller Hub - -pci:v00008086d00002990sv00001028sd000001DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 745 - -pci:v00008086d00002991* - ID_PRODUCT_FROM_DATABASE=82Q963/Q965 PCI Express Root Port - -pci:v00008086d00002992* - ID_PRODUCT_FROM_DATABASE=82Q963/Q965 Integrated Graphics Controller - -pci:v00008086d00002993* - ID_PRODUCT_FROM_DATABASE=82Q963/Q965 Integrated Graphics Controller - -pci:v00008086d00002994* - ID_PRODUCT_FROM_DATABASE=82Q963/Q965 HECI Controller - -pci:v00008086d00002995* - ID_PRODUCT_FROM_DATABASE=82Q963/Q965 HECI Controller - -pci:v00008086d00002996* - ID_PRODUCT_FROM_DATABASE=82Q963/Q965 PT IDER Controller - -pci:v00008086d00002997* - ID_PRODUCT_FROM_DATABASE=82Q963/Q965 KT Controller - -pci:v00008086d000029A0* - ID_PRODUCT_FROM_DATABASE=82P965/G965 Memory Controller Hub - -pci:v00008086d000029A0sv00001043sd000081EA* - ID_PRODUCT_FROM_DATABASE=P5B - -pci:v00008086d000029A0sv00001462sd00007276* - ID_PRODUCT_FROM_DATABASE=MS-7276 [G965MDH] - -pci:v00008086d000029A1* - ID_PRODUCT_FROM_DATABASE=82P965/G965 PCI Express Root Port - -pci:v00008086d000029A2* - ID_PRODUCT_FROM_DATABASE=82G965 Integrated Graphics Controller - -pci:v00008086d000029A2sv00001462sd00007276* - ID_PRODUCT_FROM_DATABASE=MS-7276 [G965MDH] - -pci:v00008086d000029A3* - ID_PRODUCT_FROM_DATABASE=82G965 Integrated Graphics Controller - -pci:v00008086d000029A4* - ID_PRODUCT_FROM_DATABASE=82P965/G965 HECI Controller - -pci:v00008086d000029A5* - ID_PRODUCT_FROM_DATABASE=82P965/G965 HECI Controller - -pci:v00008086d000029A6* - ID_PRODUCT_FROM_DATABASE=82P965/G965 PT IDER Controller - -pci:v00008086d000029A7* - ID_PRODUCT_FROM_DATABASE=82P965/G965 KT Controller - -pci:v00008086d000029B0* - ID_PRODUCT_FROM_DATABASE=82Q35 Express DRAM Controller - -pci:v00008086d000029B0sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=OptiPlex 755 - -pci:v00008086d000029B1* - ID_PRODUCT_FROM_DATABASE=82Q35 Express PCI Express Root Port - -pci:v00008086d000029B1sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=OptiPlex 755 - -pci:v00008086d000029B2* - ID_PRODUCT_FROM_DATABASE=82Q35 Express Integrated Graphics Controller - -pci:v00008086d000029B2sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=OptiPlex 755 - -pci:v00008086d000029B3* - ID_PRODUCT_FROM_DATABASE=82Q35 Express Integrated Graphics Controller - -pci:v00008086d000029B3sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=OptiPlex 755 - -pci:v00008086d000029B4* - ID_PRODUCT_FROM_DATABASE=82Q35 Express MEI Controller - -pci:v00008086d000029B4sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=OptiPlex 755 - -pci:v00008086d000029B5* - ID_PRODUCT_FROM_DATABASE=82Q35 Express MEI Controller - -pci:v00008086d000029B6* - ID_PRODUCT_FROM_DATABASE=82Q35 Express PT IDER Controller - -pci:v00008086d000029B6sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=OptiPlex 755 - -pci:v00008086d000029B7* - ID_PRODUCT_FROM_DATABASE=82Q35 Express Serial KT Controller - -pci:v00008086d000029B7sv00001028sd00000211* - ID_PRODUCT_FROM_DATABASE=OptiPlex 755 - -pci:v00008086d000029C0* - ID_PRODUCT_FROM_DATABASE=82G33/G31/P35/P31 Express DRAM Controller - -pci:v00008086d000029C0sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d000029C0sv00001043sd00008276* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d000029C0sv00001043sd000082B0* - ID_PRODUCT_FROM_DATABASE=P5KPL-VM Motherboard - -pci:v00008086d000029C0sv00001462sd00007360* - ID_PRODUCT_FROM_DATABASE=G33/P35 Neo - -pci:v00008086d000029C0sv00008086sd00005044* - ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP - -pci:v00008086d000029C1* - ID_PRODUCT_FROM_DATABASE=82G33/G31/P35/P31 Express PCI Express Root Port - -pci:v00008086d000029C1sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d000029C1sv00001043sd00008276* - ID_PRODUCT_FROM_DATABASE=P5K PRO Motherboard - -pci:v00008086d000029C2* - ID_PRODUCT_FROM_DATABASE=82G33/G31 Express Integrated Graphics Controller - -pci:v00008086d000029C2sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d000029C2sv00001043sd000082B0* - ID_PRODUCT_FROM_DATABASE=P5KPL-VM Motherboard - -pci:v00008086d000029C3* - ID_PRODUCT_FROM_DATABASE=82G33/G31 Express Integrated Graphics Controller - -pci:v00008086d000029C3sv00001028sd0000020D* - ID_PRODUCT_FROM_DATABASE=Inspiron 530 - -pci:v00008086d000029C3sv00001043sd000082B0* - ID_PRODUCT_FROM_DATABASE=P5KPL-VM Motherboard - -pci:v00008086d000029C4* - ID_PRODUCT_FROM_DATABASE=82G33/G31/P35/P31 Express MEI Controller - -pci:v00008086d000029C4sv00008086sd00005044* - ID_PRODUCT_FROM_DATABASE=Desktop Board DP35DP - -pci:v00008086d000029C5* - ID_PRODUCT_FROM_DATABASE=82G33/G31/P35/P31 Express MEI Controller - -pci:v00008086d000029C6* - ID_PRODUCT_FROM_DATABASE=82G33/G31/P35/P31 Express PT IDER Controller - -pci:v00008086d000029C7* - ID_PRODUCT_FROM_DATABASE=82G33/G31/P35/P31 Express Serial KT Controller - -pci:v00008086d000029CF* - ID_PRODUCT_FROM_DATABASE=Virtual HECI Controller - -pci:v00008086d000029D0* - ID_PRODUCT_FROM_DATABASE=82Q33 Express DRAM Controller - -pci:v00008086d000029D1* - ID_PRODUCT_FROM_DATABASE=82Q33 Express PCI Express Root Port - -pci:v00008086d000029D2* - ID_PRODUCT_FROM_DATABASE=82Q33 Express Integrated Graphics Controller - -pci:v00008086d000029D3* - ID_PRODUCT_FROM_DATABASE=82Q33 Express Integrated Graphics Controller - -pci:v00008086d000029D4* - ID_PRODUCT_FROM_DATABASE=82Q33 Express MEI Controller - -pci:v00008086d000029D5* - ID_PRODUCT_FROM_DATABASE=82Q33 Express MEI Controller - -pci:v00008086d000029D6* - ID_PRODUCT_FROM_DATABASE=82Q33 Express PT IDER Controller - -pci:v00008086d000029D7* - ID_PRODUCT_FROM_DATABASE=82Q33 Express Serial KT Controller - -pci:v00008086d000029E0* - ID_PRODUCT_FROM_DATABASE=82X38/X48 Express DRAM Controller - -pci:v00008086d000029E1* - ID_PRODUCT_FROM_DATABASE=82X38/X48 Express Host-Primary PCI Express Bridge - -pci:v00008086d000029E4* - ID_PRODUCT_FROM_DATABASE=82X38/X48 Express MEI Controller - -pci:v00008086d000029E5* - ID_PRODUCT_FROM_DATABASE=82X38/X48 Express MEI Controller - -pci:v00008086d000029E6* - ID_PRODUCT_FROM_DATABASE=82X38/X48 Express PT IDER Controller - -pci:v00008086d000029E7* - ID_PRODUCT_FROM_DATABASE=82X38/X48 Express Serial KT Controller - -pci:v00008086d000029E9* - ID_PRODUCT_FROM_DATABASE=82X38/X48 Express Host-Secondary PCI Express Bridge - -pci:v00008086d000029F0* - ID_PRODUCT_FROM_DATABASE=3200/3210 Chipset DRAM Controller - -pci:v00008086d000029F1* - ID_PRODUCT_FROM_DATABASE=3200/3210 Chipset Host-Primary PCI Express Bridge - -pci:v00008086d000029F4* - ID_PRODUCT_FROM_DATABASE=3200/3210 Chipset MEI Controller - -pci:v00008086d000029F5* - ID_PRODUCT_FROM_DATABASE=3200/3210 Chipset MEI Controller - -pci:v00008086d000029F6* - ID_PRODUCT_FROM_DATABASE=3200/3210 Chipset PT IDER Controller - -pci:v00008086d000029F7* - ID_PRODUCT_FROM_DATABASE=3200/3210 Chipset Serial KT Controller - -pci:v00008086d000029F9* - ID_PRODUCT_FROM_DATABASE=3210 Chipset Host-Secondary PCI Express Bridge - -pci:v00008086d00002A00* - ID_PRODUCT_FROM_DATABASE=Mobile PM965/GM965/GL960 Memory Controller Hub - -pci:v00008086d00002A00sv00001025sd00000121* - ID_PRODUCT_FROM_DATABASE=Acer Aspire 5920G - -pci:v00008086d00002A00sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00008086d00002A00sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d00002A00sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002A00sv0000103Csd000030CC* - ID_PRODUCT_FROM_DATABASE=Pavilion dv6700 - -pci:v00008086d00002A00sv0000103Csd000030D9* - ID_PRODUCT_FROM_DATABASE=Presario C700 - -pci:v00008086d00002A00sv0000104Dsd00009005* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-FZ260E - -pci:v00008086d00002A00sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002A00sv000017AAsd000020B1* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61 - -pci:v00008086d00002A00sv000017AAsd000020B3* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61/R61 - -pci:v00008086d00002A00sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002A01* - ID_PRODUCT_FROM_DATABASE=Mobile PM965/GM965/GL960 PCI Express Root Port - -pci:v00008086d00002A02* - ID_PRODUCT_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (primary) - -pci:v00008086d00002A02sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Inspiron 1420 - -pci:v00008086d00002A02sv00001028sd000001F9* - ID_PRODUCT_FROM_DATABASE=Latitude D630 - -pci:v00008086d00002A02sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d00002A02sv0000103Csd000030D9* - ID_PRODUCT_FROM_DATABASE=Presario C700 - -pci:v00008086d00002A02sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002A02sv000017AAsd000020B5* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61/R61 - -pci:v00008086d00002A02sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002A03* - ID_PRODUCT_FROM_DATABASE=Mobile GM965/GL960 Integrated Graphics Controller (secondary) - -pci:v00008086d00002A03sv00001028sd000001F3* - ID_PRODUCT_FROM_DATABASE=Dell Inspiron 1420 - -pci:v00008086d00002A03sv0000103Csd000030C0* - ID_PRODUCT_FROM_DATABASE=Compaq 6710b - -pci:v00008086d00002A03sv0000103Csd000030D9* - ID_PRODUCT_FROM_DATABASE=Presario C700 - -pci:v00008086d00002A03sv0000104Dsd0000902D* - ID_PRODUCT_FROM_DATABASE=VAIO VGN-NR120E - -pci:v00008086d00002A03sv000017AAsd000020B5* - ID_PRODUCT_FROM_DATABASE=ThinkPad T61/R61 - -pci:v00008086d00002A03sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002A04* - ID_PRODUCT_FROM_DATABASE=Mobile PM965/GM965 MEI Controller - -pci:v00008086d00002A04sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002A05* - ID_PRODUCT_FROM_DATABASE=Mobile PM965/GM965 MEI Controller - -pci:v00008086d00002A06* - ID_PRODUCT_FROM_DATABASE=Mobile PM965/GM965 PT IDER Controller - -pci:v00008086d00002A06sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002A07* - ID_PRODUCT_FROM_DATABASE=Mobile PM965/GM965 KT Controller - -pci:v00008086d00002A07sv0000103Csd000030C1* - ID_PRODUCT_FROM_DATABASE=Compaq 6910p - -pci:v00008086d00002A10* - ID_PRODUCT_FROM_DATABASE=Mobile GME965/GLE960 Memory Controller Hub - -pci:v00008086d00002A10sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002A11* - ID_PRODUCT_FROM_DATABASE=Mobile GME965/GLE960 PCI Express Root Port - -pci:v00008086d00002A12* - ID_PRODUCT_FROM_DATABASE=Mobile GME965/GLE960 Integrated Graphics Controller - -pci:v00008086d00002A12sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002A13* - ID_PRODUCT_FROM_DATABASE=Mobile GME965/GLE960 Integrated Graphics Controller - -pci:v00008086d00002A13sv0000E4BFsd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v00008086d00002A14* - ID_PRODUCT_FROM_DATABASE=Mobile GME965/GLE960 MEI Controller - -pci:v00008086d00002A15* - ID_PRODUCT_FROM_DATABASE=Mobile GME965/GLE960 MEI Controller - -pci:v00008086d00002A16* - ID_PRODUCT_FROM_DATABASE=Mobile GME965/GLE960 PT IDER Controller - -pci:v00008086d00002A17* - ID_PRODUCT_FROM_DATABASE=Mobile GME965/GLE960 KT Controller - -pci:v00008086d00002A40* - ID_PRODUCT_FROM_DATABASE=Mobile 4 Series Chipset Memory Controller Hub - -pci:v00008086d00002A40sv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d00002A41* - ID_PRODUCT_FROM_DATABASE=Mobile 4 Series Chipset PCI Express Graphics Port - -pci:v00008086d00002A41sv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d00002A42* - ID_PRODUCT_FROM_DATABASE=Mobile 4 Series Chipset Integrated Graphics Controller - -pci:v00008086d00002A42sv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d00002A43* - ID_PRODUCT_FROM_DATABASE=Mobile 4 Series Chipset Integrated Graphics Controller - -pci:v00008086d00002A43sv0000E4BFsd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v00008086d00002A44* - ID_PRODUCT_FROM_DATABASE=Mobile 4 Series Chipset MEI Controller - -pci:v00008086d00002A45* - ID_PRODUCT_FROM_DATABASE=Mobile 4 Series Chipset MEI Controller - -pci:v00008086d00002A46* - ID_PRODUCT_FROM_DATABASE=Mobile 4 Series Chipset PT IDER Controller - -pci:v00008086d00002A47* - ID_PRODUCT_FROM_DATABASE=Mobile 4 Series Chipset AMT SOL Redirection - -pci:v00008086d00002A50* - ID_PRODUCT_FROM_DATABASE=Cantiga MEI Controller - -pci:v00008086d00002A51* - ID_PRODUCT_FROM_DATABASE=Cantiga MEI Controller - -pci:v00008086d00002A52* - ID_PRODUCT_FROM_DATABASE=Cantiga PT IDER Controller - -pci:v00008086d00002A53* - ID_PRODUCT_FROM_DATABASE=Cantiga AMT SOL Redirection - -pci:v00008086d00002B00* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family System Configuration Controller 1 - -pci:v00008086d00002B02* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family System Configuration Controller 2 - -pci:v00008086d00002B04* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Power Controller - -pci:v00008086d00002B08* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Caching Agent 0 - -pci:v00008086d00002B0C* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Caching Agent 1 - -pci:v00008086d00002B10* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family QPI Home Agent 0 - -pci:v00008086d00002B13* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Memory Controller 0c - -pci:v00008086d00002B14* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Memory Controller 0a - -pci:v00008086d00002B16* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Memory Controller 0b - -pci:v00008086d00002B18* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family QPI Home Agent 1 - -pci:v00008086d00002B1B* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Memory Controller 1c - -pci:v00008086d00002B1C* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Memory Controller 1a - -pci:v00008086d00002B1E* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Memory Controller 1b - -pci:v00008086d00002B20* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 0 - -pci:v00008086d00002B22* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family System Configuration Controller 3 - -pci:v00008086d00002B24* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 1 - -pci:v00008086d00002B28* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 2 - -pci:v00008086d00002B2A* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family System Configuration Controller 4 - -pci:v00008086d00002B2C* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 3 - -pci:v00008086d00002B30* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 4 - -pci:v00008086d00002B34* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 5 - -pci:v00008086d00002B38* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 6 - -pci:v00008086d00002B3C* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 7 - -pci:v00008086d00002B40* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family QPI Router Port 0-1 - -pci:v00008086d00002B42* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family QPI Router Port 2-3 - -pci:v00008086d00002B44* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family QPI Router Port 4-5 - -pci:v00008086d00002B46* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family QPI Router Port 6-7 - -pci:v00008086d00002B48* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Test and Debug 0 - -pci:v00008086d00002B4C* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Test and Debug 1 - -pci:v00008086d00002B50* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 0: REUT control/status - -pci:v00008086d00002B52* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 0: Misc. control/status - -pci:v00008086d00002B54* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 1: REUT control/status - -pci:v00008086d00002B56* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 1: Misc. control/status - -pci:v00008086d00002B58* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 2: REUT control/status - -pci:v00008086d00002B5A* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 2: Misc. control/status - -pci:v00008086d00002B5C* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 3: REUT control/status - -pci:v00008086d00002B5E* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family QPI Physical Port 3: Misc. control/status - -pci:v00008086d00002B60* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family SMI Physical Port 0: REUT control/status - -pci:v00008086d00002B62* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family SMI Physical Port 0: Misc control/status - -pci:v00008086d00002B64* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family SMI Physical Port 1: REUT control/status - -pci:v00008086d00002B66* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family SMI Physical Port 1: Misc control/status - -pci:v00008086d00002B68* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 8 - -pci:v00008086d00002B6C* - ID_PRODUCT_FROM_DATABASE=Xeon Processor E7 Product Family Last Level Cache Coherence Engine 9 - -pci:v00008086d00002C01* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 QuickPath Architecture System Address Decoder - -pci:v00008086d00002C10* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 QPI Link 0 - -pci:v00008086d00002C11* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 QPI Physical 0 - -pci:v00008086d00002C14* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 QPI Link 1 - -pci:v00008086d00002C15* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 QPI Physical 1 - -pci:v00008086d00002C18* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller - -pci:v00008086d00002C19* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Target Address Decoder - -pci:v00008086d00002C1A* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller RAS Registers - -pci:v00008086d00002C1C* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Test Registers - -pci:v00008086d00002C20* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Control Registers - -pci:v00008086d00002C21* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Address Registers - -pci:v00008086d00002C22* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Rank Registers - -pci:v00008086d00002C23* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 0 Thermal Control Registers - -pci:v00008086d00002C28* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Control Registers - -pci:v00008086d00002C29* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Address Registers - -pci:v00008086d00002C2A* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Rank Registers - -pci:v00008086d00002C2B* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 1 Thermal Control Registers - -pci:v00008086d00002C30* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Control Registers - -pci:v00008086d00002C31* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Address Registers - -pci:v00008086d00002C32* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Rank Registers - -pci:v00008086d00002C33* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 Integrated Memory Controller Channel 2 Thermal Control Registers - -pci:v00008086d00002C40* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers - -pci:v00008086d00002C41* - ID_PRODUCT_FROM_DATABASE=Xeon 5500/Core i7 QuickPath Architecture Generic Non-Core Registers - -pci:v00008086d00002C50* - ID_PRODUCT_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers - -pci:v00008086d00002C51* - ID_PRODUCT_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers - -pci:v00008086d00002C52* - ID_PRODUCT_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers - -pci:v00008086d00002C53* - ID_PRODUCT_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers - -pci:v00008086d00002C54* - ID_PRODUCT_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers - -pci:v00008086d00002C55* - ID_PRODUCT_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers - -pci:v00008086d00002C56* - ID_PRODUCT_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers - -pci:v00008086d00002C57* - ID_PRODUCT_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-Core Registers - -pci:v00008086d00002C58* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers - -pci:v00008086d00002C59* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers - -pci:v00008086d00002C5A* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers - -pci:v00008086d00002C5B* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers - -pci:v00008086d00002C5C* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers - -pci:v00008086d00002C5D* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers - -pci:v00008086d00002C5E* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers - -pci:v00008086d00002C5F* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Generic Non-core Registers - -pci:v00008086d00002C61* - ID_PRODUCT_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-core Registers - -pci:v00008086d00002C62* - ID_PRODUCT_FROM_DATABASE=Core Processor QuickPath Architecture Generic Non-core Registers - -pci:v00008086d00002C70* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series QuickPath Architecture Generic Non-core Registers - -pci:v00008086d00002C81* - ID_PRODUCT_FROM_DATABASE=Core Processor QuickPath Architecture System Address Decoder - -pci:v00008086d00002C90* - ID_PRODUCT_FROM_DATABASE=Core Processor QPI Link 0 - -pci:v00008086d00002C91* - ID_PRODUCT_FROM_DATABASE=Core Processor QPI Physical 0 - -pci:v00008086d00002C98* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Memory Controller - -pci:v00008086d00002C99* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Memory Controller Target Address Decoder - -pci:v00008086d00002C9A* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Memory Controller Test Registers - -pci:v00008086d00002C9C* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Memory Controller Test Registers - -pci:v00008086d00002CA0* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 0 Control Registers - -pci:v00008086d00002CA1* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 0 Address Registers - -pci:v00008086d00002CA2* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 0 Rank Registers - -pci:v00008086d00002CA3* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 0 Thermal Control Registers - -pci:v00008086d00002CA8* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 1 Control Registers - -pci:v00008086d00002CA9* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 1 Address Registers - -pci:v00008086d00002CAA* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 1 Rank Registers - -pci:v00008086d00002CAB* - ID_PRODUCT_FROM_DATABASE=Core Processor Integrated Memory Controller Channel 1 Thermal Control Registers - -pci:v00008086d00002CC1* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI System Address Decoder - -pci:v00008086d00002CD0* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Link 0 - -pci:v00008086d00002CD1* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Physical 0 - -pci:v00008086d00002CD4* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Link 1 - -pci:v00008086d00002CD5* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Physical 1 - -pci:v00008086d00002CD8* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Registers - -pci:v00008086d00002CD9* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Target Address Decoder - -pci:v00008086d00002CDA* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller RAS Registers - -pci:v00008086d00002CDC* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Test Registers - -pci:v00008086d00002CE0* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 0 Control - -pci:v00008086d00002CE1* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 0 Address - -pci:v00008086d00002CE2* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 0 Rank - -pci:v00008086d00002CE3* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 0 Thermal Control - -pci:v00008086d00002CE8* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 1 Control - -pci:v00008086d00002CE9* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 1 Address - -pci:v00008086d00002CEA* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 1 Rank - -pci:v00008086d00002CEB* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 1 Thermal Control - -pci:v00008086d00002CF0* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 2 Control - -pci:v00008086d00002CF1* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 2 Address - -pci:v00008086d00002CF2* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 2 Rank - -pci:v00008086d00002CF3* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Integrated Memory Controller Channel 2 Thermal Control - -pci:v00008086d00002D01* - ID_PRODUCT_FROM_DATABASE=Core Processor QuickPath Architecture System Address Decoder - -pci:v00008086d00002D10* - ID_PRODUCT_FROM_DATABASE=Core Processor QPI Link 0 - -pci:v00008086d00002D11* - ID_PRODUCT_FROM_DATABASE=Core Processor QPI Physical 0 - -pci:v00008086d00002D12* - ID_PRODUCT_FROM_DATABASE=Core Processor Reserved - -pci:v00008086d00002D13* - ID_PRODUCT_FROM_DATABASE=Core Processor Reserved - -pci:v00008086d00002D81* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series QuickPath Architecture System Address Decoder - -pci:v00008086d00002D90* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series QPI Link 0 - -pci:v00008086d00002D91* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series QPI Physical 0 - -pci:v00008086d00002D92* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Mirror Port Link 0 - -pci:v00008086d00002D93* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Mirror Port Link 1 - -pci:v00008086d00002D94* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series QPI Link 1 - -pci:v00008086d00002D95* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series QPI Physical 1 - -pci:v00008086d00002D98* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Registers - -pci:v00008086d00002D99* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Target Address Decoder - -pci:v00008086d00002D9A* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller RAS Registers - -pci:v00008086d00002D9C* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Test Registers - -pci:v00008086d00002DA0* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 0 Control - -pci:v00008086d00002DA1* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 0 Address - -pci:v00008086d00002DA2* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 0 Rank - -pci:v00008086d00002DA3* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 0 Thermal Control - -pci:v00008086d00002DA8* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 1 Control - -pci:v00008086d00002DA9* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 1 Address - -pci:v00008086d00002DAA* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 1 Rank - -pci:v00008086d00002DAB* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 1 Thermal Control - -pci:v00008086d00002DB0* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 2 Control - -pci:v00008086d00002DB1* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 2 Address - -pci:v00008086d00002DB2* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 2 Rank - -pci:v00008086d00002DB3* - ID_PRODUCT_FROM_DATABASE=Xeon 5600 Series Integrated Memory Controller Channel 2 Thermal Control - -pci:v00008086d00002E00* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset DRAM Controller - -pci:v00008086d00002E01* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset PCI Express Root Port - -pci:v00008086d00002E02* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller - -pci:v00008086d00002E03* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller - -pci:v00008086d00002E04* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset HECI Controller - -pci:v00008086d00002E05* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset HECI Controller - -pci:v00008086d00002E06* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset PT IDER Controller - -pci:v00008086d00002E07* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Serial KT Controller - -pci:v00008086d00002E10* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset DRAM Controller - -pci:v00008086d00002E11* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset PCI Express Root Port - -pci:v00008086d00002E12* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller - -pci:v00008086d00002E13* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller - -pci:v00008086d00002E14* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset HECI Controller - -pci:v00008086d00002E15* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset HECI Controller - -pci:v00008086d00002E16* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset PT IDER Controller - -pci:v00008086d00002E17* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Serial KT Controller - -pci:v00008086d00002E20* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset DRAM Controller - -pci:v00008086d00002E20sv00001043sd000082D3* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00002E20sv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard - -pci:v00008086d00002E21* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset PCI Express Root Port - -pci:v00008086d00002E21sv00001043sd000082D3* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00002E21sv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5 Motherboard - -pci:v00008086d00002E22* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller - -pci:v00008086d00002E22sv00001458sd0000D000* - ID_PRODUCT_FROM_DATABASE=GA-EG45M-DS2H Mainboard - -pci:v00008086d00002E23* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller - -pci:v00008086d00002E23sv00001458sd0000D000* - ID_PRODUCT_FROM_DATABASE=GA-EG45M-DS2H Mainboard - -pci:v00008086d00002E24* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset HECI Controller - -pci:v00008086d00002E25* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset HECI Controller - -pci:v00008086d00002E26* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset PT IDER Controller - -pci:v00008086d00002E27* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Serial KT Controller - -pci:v00008086d00002E29* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset PCI Express Root Port - -pci:v00008086d00002E30* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset DRAM Controller - -pci:v00008086d00002E31* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset PCI Express Root Port - -pci:v00008086d00002E32* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller - -pci:v00008086d00002E33* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller - -pci:v00008086d00002E34* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset HECI Controller - -pci:v00008086d00002E35* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset HECI Controller - -pci:v00008086d00002E36* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset PT IDER Controller - -pci:v00008086d00002E37* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Serial KT Controller - -pci:v00008086d00002E40* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset DRAM Controller - -pci:v00008086d00002E41* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset PCI Express Root Port - -pci:v00008086d00002E42* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller - -pci:v00008086d00002E43* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller - -pci:v00008086d00002E44* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset HECI Controller - -pci:v00008086d00002E45* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset HECI Controller - -pci:v00008086d00002E46* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset PT IDER Controller - -pci:v00008086d00002E47* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Serial KT Controller - -pci:v00008086d00002E50* - ID_PRODUCT_FROM_DATABASE=CE Media Processor CE3100 - -pci:v00008086d00002E52* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Clock and Reset Controller - -pci:v00008086d00002E58* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Interrupt Controller - -pci:v00008086d00002E5A* - ID_PRODUCT_FROM_DATABASE=CE Media Processor CE3100 A/V Bridge - -pci:v00008086d00002E5B* - ID_PRODUCT_FROM_DATABASE=Graphics Media Accelerator 500 Graphics - -pci:v00008086d00002E5C* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Video Decoder - -pci:v00008086d00002E5D* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Transport Stream Interface - -pci:v00008086d00002E5E* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Transport Stream Processor 0 - -pci:v00008086d00002E5F* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Audio DSP - -pci:v00008086d00002E60* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Audio Interfaces - -pci:v00008086d00002E61* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Video Display Controller - -pci:v00008086d00002E62* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Video Processing Unit - -pci:v00008086d00002E63* - ID_PRODUCT_FROM_DATABASE=CE Media Processor HDMI Tx Interface - -pci:v00008086d00002E65* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Expansion Bus Interface - -pci:v00008086d00002E66* - ID_PRODUCT_FROM_DATABASE=CE Media Processor UART - -pci:v00008086d00002E67* - ID_PRODUCT_FROM_DATABASE=CE Media Processor General Purpose I/Os - -pci:v00008086d00002E68* - ID_PRODUCT_FROM_DATABASE=CE Media Processor I2C Interface - -pci:v00008086d00002E69* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Smart Card Interface - -pci:v00008086d00002E6A* - ID_PRODUCT_FROM_DATABASE=CE Media Processor SPI Master Interface - -pci:v00008086d00002E6E* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Gigabit Ethernet Controller - -pci:v00008086d00002E6F* - ID_PRODUCT_FROM_DATABASE=CE Media Processor Media Timing Unit - -pci:v00008086d00002E70* - ID_PRODUCT_FROM_DATABASE=CE Media Processor USB - -pci:v00008086d00002E71* - ID_PRODUCT_FROM_DATABASE=CE Media Processor SATA - -pci:v00008086d00002E73* - ID_PRODUCT_FROM_DATABASE=CE Media Processor CE3100 PCI Express - -pci:v00008086d00002E90* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset DRAM Controller - -pci:v00008086d00002E91* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset PCI Express Root Port - -pci:v00008086d00002E92* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller - -pci:v00008086d00002E93* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset Integrated Graphics Controller - -pci:v00008086d00002E94* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset HECI Controller - -pci:v00008086d00002E95* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset HECI Controller - -pci:v00008086d00002E96* - ID_PRODUCT_FROM_DATABASE=4 Series Chipset PT IDER Controller - -pci:v00008086d00002F00* - ID_PRODUCT_FROM_DATABASE=Haswell-E DMI2 - -pci:v00008086d00002F01* - ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 0 - -pci:v00008086d00002F02* - ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 1 - -pci:v00008086d00002F03* - ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 1 - -pci:v00008086d00002F04* - ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 2 - -pci:v00008086d00002F05* - ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 2 - -pci:v00008086d00002F06* - ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 2 - -pci:v00008086d00002F07* - ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 2 - -pci:v00008086d00002F08* - ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 3 - -pci:v00008086d00002F09* - ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 3 - -pci:v00008086d00002F0A* - ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 3 - -pci:v00008086d00002F0B* - ID_PRODUCT_FROM_DATABASE=Haswell-E PCI Express Root Port 3 - -pci:v00008086d00002F1D* - ID_PRODUCT_FROM_DATABASE=Haswell-E PCIe Ring Interface - -pci:v00008086d00002F1E* - ID_PRODUCT_FROM_DATABASE=Haswell-E Scratchpad & Semaphore Registers - -pci:v00008086d00002F1F* - ID_PRODUCT_FROM_DATABASE=Haswell-E Scratchpad & Semaphore Registers - -pci:v00008086d00002F20* - ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 0 - -pci:v00008086d00002F21* - ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 1 - -pci:v00008086d00002F22* - ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 2 - -pci:v00008086d00002F23* - ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 3 - -pci:v00008086d00002F24* - ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 4 - -pci:v00008086d00002F25* - ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 5 - -pci:v00008086d00002F26* - ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 6 - -pci:v00008086d00002F27* - ID_PRODUCT_FROM_DATABASE=Haswell-E DMA Channel 7 - -pci:v00008086d00002F28* - ID_PRODUCT_FROM_DATABASE=Haswell-E Address Map, VTd_Misc, System Management - -pci:v00008086d00002F29* - ID_PRODUCT_FROM_DATABASE=Haswell-E Hot Plug - -pci:v00008086d00002F2A* - ID_PRODUCT_FROM_DATABASE=Haswell-E RAS, Control Status and Global Errors - -pci:v00008086d00002F2C* - ID_PRODUCT_FROM_DATABASE=Haswell-E I/O Apic - -pci:v00008086d00002F2E* - ID_PRODUCT_FROM_DATABASE=Haswell-E RAID 5/6 - -pci:v00008086d00002F2F* - ID_PRODUCT_FROM_DATABASE=Haswell-E RAID 5/6 - -pci:v00008086d00002F30* - ID_PRODUCT_FROM_DATABASE=Haswell-E Home Agent 0 - -pci:v00008086d00002F32* - ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 0 - -pci:v00008086d00002F33* - ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 1 - -pci:v00008086d00002F34* - ID_PRODUCT_FROM_DATABASE=Haswell-E PCIe Ring Interface - -pci:v00008086d00002F36* - ID_PRODUCT_FROM_DATABASE=Haswell-E R3 QPI Link 0 & 1 Monitoring - -pci:v00008086d00002F37* - ID_PRODUCT_FROM_DATABASE=Haswell-E R3 QPI Link 0 & 1 Monitoring - -pci:v00008086d00002F38* - ID_PRODUCT_FROM_DATABASE=Haswell-E Home Agent 1 - -pci:v00008086d00002F3A* - ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 2 - -pci:v00008086d00002F3E* - ID_PRODUCT_FROM_DATABASE=Haswell-E R3 QPI Link 2 Monitoring - -pci:v00008086d00002F3F* - ID_PRODUCT_FROM_DATABASE=Haswell-E R3 QPI Link 2 Monitoring - -pci:v00008086d00002F40* - ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 2 - -pci:v00008086d00002F41* - ID_PRODUCT_FROM_DATABASE=Haswell-E R3 QPI Link 2 Monitoring - -pci:v00008086d00002F43* - ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 2 - -pci:v00008086d00002F60* - ID_PRODUCT_FROM_DATABASE=Haswell-E Home Agent 1 - -pci:v00008086d00002F68* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Target Address, Thermal & RAS Registers - -pci:v00008086d00002F6A* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel Target Address Decoder - -pci:v00008086d00002F6B* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel Target Address Decoder - -pci:v00008086d00002F6C* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel Target Address Decoder - -pci:v00008086d00002F6D* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel Target Address Decoder - -pci:v00008086d00002F6E* - ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO Channel 2/3 Broadcast - -pci:v00008086d00002F6F* - ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO Global Broadcast - -pci:v00008086d00002F71* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Target Address, Thermal & RAS Registers - -pci:v00008086d00002F79* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Target Address, Thermal & RAS Registers - -pci:v00008086d00002F7D* - ID_PRODUCT_FROM_DATABASE=Haswell-E Scratchpad & Semaphore Registers - -pci:v00008086d00002F80* - ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 0 - -pci:v00008086d00002F81* - ID_PRODUCT_FROM_DATABASE=Haswell-E R3 QPI Link 0 & 1 Monitoring - -pci:v00008086d00002F83* - ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 0 - -pci:v00008086d00002F90* - ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 1 - -pci:v00008086d00002F93* - ID_PRODUCT_FROM_DATABASE=Haswell-E QPI Link 1 - -pci:v00008086d00002FA0* - ID_PRODUCT_FROM_DATABASE=Haswell-E Home Agent 0 - -pci:v00008086d00002FA8* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Target Address, Thermal & RAS Registers - -pci:v00008086d00002FAA* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel Target Address Decoder - -pci:v00008086d00002FAB* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel Target Address Decoder - -pci:v00008086d00002FAC* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel Target Address Decoder - -pci:v00008086d00002FAD* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel Target Address Decoder - -pci:v00008086d00002FAE* - ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO Channel 0/1 Broadcast - -pci:v00008086d00002FAF* - ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO Global Broadcast - -pci:v00008086d00002FB0* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 0 Thermal Control - -pci:v00008086d00002FB1* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 1 Thermal Control - -pci:v00008086d00002FB2* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 0 ERROR Registers - -pci:v00008086d00002FB3* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 1 ERROR Registers - -pci:v00008086d00002FB4* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 2 Thermal Control - -pci:v00008086d00002FB5* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Channel 3 Thermal Control - -pci:v00008086d00002FB8* - ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 2 & 3 - -pci:v00008086d00002FB9* - ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 2 & 3 - -pci:v00008086d00002FBA* - ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 2 & 3 - -pci:v00008086d00002FBB* - ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 2 & 3 - -pci:v00008086d00002FBC* - ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 0 & 1 - -pci:v00008086d00002FBD* - ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 0 & 1 - -pci:v00008086d00002FBE* - ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 0 & 1 - -pci:v00008086d00002FBF* - ID_PRODUCT_FROM_DATABASE=Haswell-E DDRIO (VMSE) 0 & 1 - -pci:v00008086d00002FC0* - ID_PRODUCT_FROM_DATABASE=Haswell-E Power Control Unit - -pci:v00008086d00002FC1* - ID_PRODUCT_FROM_DATABASE=Haswell-E Power Control Unit - -pci:v00008086d00002FC2* - ID_PRODUCT_FROM_DATABASE=Power Control Unit - -pci:v00008086d00002FC3* - ID_PRODUCT_FROM_DATABASE=Power Control Unit - -pci:v00008086d00002FC4* - ID_PRODUCT_FROM_DATABASE=Power Control Unit - -pci:v00008086d00002FC5* - ID_PRODUCT_FROM_DATABASE=Power Control Unit - -pci:v00008086d00002FD0* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 0 Thermal Control - -pci:v00008086d00002FD1* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 1 Thermal Control - -pci:v00008086d00002FD2* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 0 ERROR Registers - -pci:v00008086d00002FD3* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 1 ERROR Registers - -pci:v00008086d00002FD4* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 2 Thermal Control - -pci:v00008086d00002FD5* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 3 Thermal Control - -pci:v00008086d00002FD6* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 2 ERROR Registers - -pci:v00008086d00002FD7* - ID_PRODUCT_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Channel 3 ERROR Registers - -pci:v00008086d00002FE0* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FE1* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FE2* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FE3* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FE4* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FE5* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FE6* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FE7* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FE8* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FE9* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FEA* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FEB* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FEC* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FED* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FEE* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FEF* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FF0* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FF1* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FF2* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FF3* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FF4* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FF5* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FF6* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FF7* - ID_PRODUCT_FROM_DATABASE=Haswell-E Unicast Registers - -pci:v00008086d00002FF8* - ID_PRODUCT_FROM_DATABASE=Haswell-E Buffered Ring Agent - -pci:v00008086d00002FF9* - ID_PRODUCT_FROM_DATABASE=Haswell-E Buffered Ring Agent - -pci:v00008086d00002FFA* - ID_PRODUCT_FROM_DATABASE=Haswell-E Buffered Ring Agent - -pci:v00008086d00002FFB* - ID_PRODUCT_FROM_DATABASE=Haswell-E Buffered Ring Agent - -pci:v00008086d00002FFC* - ID_PRODUCT_FROM_DATABASE=Haswell-E System Address Decoder & Broadcast Registers - -pci:v00008086d00002FFD* - ID_PRODUCT_FROM_DATABASE=Haswell-E System Address Decoder & Broadcast Registers - -pci:v00008086d00002FFE* - ID_PRODUCT_FROM_DATABASE=Haswell-E System Address Decoder & Broadcast Registers - -pci:v00008086d00003200* - ID_PRODUCT_FROM_DATABASE=GD31244 PCI-X SATA HBA - -pci:v00008086d00003200sv00001775sd0000C200* - ID_PRODUCT_FROM_DATABASE=C2K onboard SATA host bus adapter - -pci:v00008086d00003310* - ID_PRODUCT_FROM_DATABASE=IOP348 I/O Processor - -pci:v00008086d00003310sv00001054sd00003030* - ID_PRODUCT_FROM_DATABASE=HRA380 Hitachi RAID Adapter to PCIe - -pci:v00008086d00003310sv00001054sd00003034* - ID_PRODUCT_FROM_DATABASE=HRA381 Hitachi RAID Adapter to PCIe - -pci:v00008086d00003313* - ID_PRODUCT_FROM_DATABASE=IOP348 I/O Processor (SL8e) in IOC Mode SAS/SATA - -pci:v00008086d0000331B* - ID_PRODUCT_FROM_DATABASE=IOP348 I/O Processor (SL8x) in IOC Mode SAS/SATA - -pci:v00008086d00003331* - ID_PRODUCT_FROM_DATABASE=IOC340 I/O Controller (VV8e) SAS/SATA - -pci:v00008086d00003339* - ID_PRODUCT_FROM_DATABASE=IOC340 I/O Controller (VV8x) SAS/SATA - -pci:v00008086d00003340* - ID_PRODUCT_FROM_DATABASE=82855PM Processor to I/O Controller - -pci:v00008086d00003340sv00001014sd00000529* - ID_PRODUCT_FROM_DATABASE=Thinkpad T40 series - -pci:v00008086d00003340sv00001025sd0000005A* - ID_PRODUCT_FROM_DATABASE=TravelMate 290 - -pci:v00008086d00003340sv0000103Csd0000088C* - ID_PRODUCT_FROM_DATABASE=NC8000 laptop - -pci:v00008086d00003340sv0000103Csd00000890* - ID_PRODUCT_FROM_DATABASE=NC6000 laptop - -pci:v00008086d00003340sv0000103Csd000008B0* - ID_PRODUCT_FROM_DATABASE=tc1100 tablet - -pci:v00008086d00003340sv0000144Dsd0000C005* - ID_PRODUCT_FROM_DATABASE=X10 Laptop - -pci:v00008086d00003340sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30/P35 notebook - -pci:v00008086d00003341* - ID_PRODUCT_FROM_DATABASE=82855PM Processor to AGP Controller - -pci:v00008086d00003341sv0000144Dsd0000C00C* - ID_PRODUCT_FROM_DATABASE=P30 notebook - -pci:v00008086d00003363* - ID_PRODUCT_FROM_DATABASE=IOC340 I/O Controller in IOC Mode SAS/SATA - -pci:v00008086d00003382* - ID_PRODUCT_FROM_DATABASE=81342 [Chevelon] I/O Processor (ATUe) - -pci:v00008086d000033C3* - ID_PRODUCT_FROM_DATABASE=IOP348 I/O Processor (SL8De) in IOC Mode SAS/SATA - -pci:v00008086d000033CB* - ID_PRODUCT_FROM_DATABASE=IOP348 I/O Processor (SL8Dx) in IOC Mode SAS/SATA - -pci:v00008086d00003400* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 I/O Hub to ESI Port - -pci:v00008086d00003401* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 I/O Hub to ESI Port - -pci:v00008086d00003402* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 I/O Hub to ESI Port - -pci:v00008086d00003403* - ID_PRODUCT_FROM_DATABASE=5500 I/O Hub to ESI Port - -pci:v00008086d00003403sv00001028sd00000236* - ID_PRODUCT_FROM_DATABASE=PowerEdge R610 I/O Hub to ESI Port - -pci:v00008086d00003403sv00001028sd00000287* - ID_PRODUCT_FROM_DATABASE=PowerEdge M610 I/O Hub to ESI Port - -pci:v00008086d00003403sv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 I/O Hub to ESI Port - -pci:v00008086d00003403sv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 I/O Hub to ESI Port - -pci:v00008086d00003403sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant ML150 G6 Server - -pci:v00008086d00003404* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 I/O Hub to ESI Port - -pci:v00008086d00003405* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 I/O Hub to ESI Port - -pci:v00008086d00003406* - ID_PRODUCT_FROM_DATABASE=5520 I/O Hub to ESI Port - -pci:v00008086d00003406sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant G6 series - -pci:v00008086d00003407* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 I/O Hub to ESI Port - -pci:v00008086d00003408* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 1 - -pci:v00008086d00003408sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant G6 series - -pci:v00008086d00003409* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 2 - -pci:v00008086d0000340A* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 3 - -pci:v00008086d0000340Asv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant ML150 G6 Server - -pci:v00008086d0000340B* - ID_PRODUCT_FROM_DATABASE=5520/X58 I/O Hub PCI Express Root Port 4 - -pci:v00008086d0000340C* - ID_PRODUCT_FROM_DATABASE=5520/X58 I/O Hub PCI Express Root Port 5 - -pci:v00008086d0000340D* - ID_PRODUCT_FROM_DATABASE=5520/X58 I/O Hub PCI Express Root Port 6 - -pci:v00008086d0000340E* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 7 - -pci:v00008086d0000340Esv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant ML150 G6 Server - -pci:v00008086d0000340F* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 I/O Hub PCI Express Root Port 8 - -pci:v00008086d00003410* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500/X58 I/O Hub PCI Express Root Port 9 - -pci:v00008086d00003411* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500/X58 I/O Hub PCI Express Root Port 10 - -pci:v00008086d00003418* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500/X58 Physical Layer Port 0 - -pci:v00008086d00003419* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500 Physical Layer Port 1 - -pci:v00008086d00003420* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 - -pci:v00008086d00003421* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500/X58 I/O Hub PCI Express Root Port 0 - -pci:v00008086d00003422* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500/X58 I/O Hub GPIO and Scratch Pad Registers - -pci:v00008086d00003422sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant G6 series - -pci:v00008086d00003423* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500/X58 I/O Hub Control Status and RAS Registers - -pci:v00008086d00003423sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant G6 series - -pci:v00008086d00003425* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500/X58 Physical and Link Layer Registers Port 0 - -pci:v00008086d00003426* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500/X58 Routing and Protocol Layer Registers Port 0 - -pci:v00008086d00003427* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500 Physical and Link Layer Registers Port 1 - -pci:v00008086d00003428* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500 Routing & Protocol Layer Register Port 1 - -pci:v00008086d00003429* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device - -pci:v00008086d0000342A* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device - -pci:v00008086d0000342B* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device - -pci:v00008086d0000342C* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device - -pci:v00008086d0000342D* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500/X58 I/O Hub I/OxAPIC Interrupt Controller - -pci:v00008086d0000342E* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500/X58 I/O Hub System Management Registers - -pci:v00008086d0000342Esv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant G6 series - -pci:v00008086d0000342F* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500/X58 Trusted Execution Technology Registers - -pci:v00008086d00003430* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device - -pci:v00008086d00003431* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device - -pci:v00008086d00003432* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device - -pci:v00008086d00003433* - ID_PRODUCT_FROM_DATABASE=5520/5500/X58 Chipset QuickData Technology Device - -pci:v00008086d00003438* - ID_PRODUCT_FROM_DATABASE=7500/5520/5500/X58 I/O Hub Throttle Registers - -pci:v00008086d00003500* - ID_PRODUCT_FROM_DATABASE=6311ESB/6321ESB PCI Express Upstream Port - -pci:v00008086d00003500sv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d00003500sv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d00003501* - ID_PRODUCT_FROM_DATABASE=6310ESB PCI Express Upstream Port - -pci:v00008086d00003504* - ID_PRODUCT_FROM_DATABASE=6311ESB/6321ESB I/OxAPIC Interrupt Controller - -pci:v00008086d00003505* - ID_PRODUCT_FROM_DATABASE=6310ESB I/OxAPIC Interrupt Controller - -pci:v00008086d0000350C* - ID_PRODUCT_FROM_DATABASE=6311ESB/6321ESB PCI Express to PCI-X Bridge - -pci:v00008086d0000350Csv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d0000350Csv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d0000350D* - ID_PRODUCT_FROM_DATABASE=6310ESB PCI Express to PCI-X Bridge - -pci:v00008086d00003510* - ID_PRODUCT_FROM_DATABASE=6311ESB/6321ESB PCI Express Downstream Port E1 - -pci:v00008086d00003510sv0000103Csd000031FE* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G3 - -pci:v00008086d00003510sv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d00003511* - ID_PRODUCT_FROM_DATABASE=6310ESB PCI Express Downstream Port E1 - -pci:v00008086d00003514* - ID_PRODUCT_FROM_DATABASE=6311ESB/6321ESB PCI Express Downstream Port E2 - -pci:v00008086d00003515* - ID_PRODUCT_FROM_DATABASE=6310ESB PCI Express Downstream Port E2 - -pci:v00008086d00003518* - ID_PRODUCT_FROM_DATABASE=6311ESB/6321ESB PCI Express Downstream Port E3 - -pci:v00008086d00003518sv000015D9sd00009680* - ID_PRODUCT_FROM_DATABASE=X7DBN Motherboard - -pci:v00008086d00003519* - ID_PRODUCT_FROM_DATABASE=6310ESB PCI Express Downstream Port E3 - -pci:v00008086d00003575* - ID_PRODUCT_FROM_DATABASE=82830M/MG/MP Host Bridge - -pci:v00008086d00003575sv00000E11sd00000030* - ID_PRODUCT_FROM_DATABASE=Evo N600c - -pci:v00008086d00003575sv00001014sd0000021D* - ID_PRODUCT_FROM_DATABASE=ThinkPad A/T/X Series - -pci:v00008086d00003575sv0000104Dsd000080E7* - ID_PRODUCT_FROM_DATABASE=VAIO PCG-GR214EP/GR214MP/GR215MP/GR314MP/GR315MP - -pci:v00008086d00003576* - ID_PRODUCT_FROM_DATABASE=82830M/MP AGP Bridge - -pci:v00008086d00003577* - ID_PRODUCT_FROM_DATABASE=82830M/MG Integrated Graphics Controller - -pci:v00008086d00003577sv00001014sd00000513* - ID_PRODUCT_FROM_DATABASE=ThinkPad A/T/X Series - -pci:v00008086d00003578* - ID_PRODUCT_FROM_DATABASE=82830M/MG/MP Host Bridge - -pci:v00008086d00003580* - ID_PRODUCT_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller - -pci:v00008086d00003580sv00001014sd0000055C* - ID_PRODUCT_FROM_DATABASE=ThinkPad R50e - -pci:v00008086d00003580sv00001028sd00000139* - ID_PRODUCT_FROM_DATABASE=Latitude D400 - -pci:v00008086d00003580sv00001028sd0000014F* - ID_PRODUCT_FROM_DATABASE=Latitude X300 - -pci:v00008086d00003580sv00001028sd00000152* - ID_PRODUCT_FROM_DATABASE=Latitude D500 - -pci:v00008086d00003580sv00001028sd00000163* - ID_PRODUCT_FROM_DATABASE=Latitude D505 - -pci:v00008086d00003580sv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m - -pci:v00008086d00003580sv00001028sd00000196* - ID_PRODUCT_FROM_DATABASE=Inspiron 5160 - -pci:v00008086d00003580sv0000114Asd00000582* - ID_PRODUCT_FROM_DATABASE=PC8 - -pci:v00008086d00003580sv00001734sd00001055* - ID_PRODUCT_FROM_DATABASE=Amilo M1420 - -pci:v00008086d00003580sv00001775sd000010D0* - ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer - -pci:v00008086d00003580sv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d00003580sv00004C53sd000010B0* - ID_PRODUCT_FROM_DATABASE=CL9 mainboard - -pci:v00008086d00003580sv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v00008086d00003580sv0000E4BFsd00000CC9* - ID_PRODUCT_FROM_DATABASE=CC9-SAMBA - -pci:v00008086d00003580sv0000E4BFsd00000CD2* - ID_PRODUCT_FROM_DATABASE=CD2-BEBOP - -pci:v00008086d00003581* - ID_PRODUCT_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to AGP Controller - -pci:v00008086d00003581sv00001734sd00001055* - ID_PRODUCT_FROM_DATABASE=Amilo M1420 - -pci:v00008086d00003582* - ID_PRODUCT_FROM_DATABASE=82852/855GM Integrated Graphics Device - -pci:v00008086d00003582sv00001014sd00000562* - ID_PRODUCT_FROM_DATABASE=ThinkPad R50e - -pci:v00008086d00003582sv00001028sd00000139* - ID_PRODUCT_FROM_DATABASE=Latitude D400 - -pci:v00008086d00003582sv00001028sd0000014F* - ID_PRODUCT_FROM_DATABASE=Latitude X300 - -pci:v00008086d00003582sv00001028sd00000152* - ID_PRODUCT_FROM_DATABASE=Latitude D500 - -pci:v00008086d00003582sv00001028sd00000163* - ID_PRODUCT_FROM_DATABASE=Latitude D505 - -pci:v00008086d00003582sv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m - -pci:v00008086d00003582sv0000114Asd00000582* - ID_PRODUCT_FROM_DATABASE=PC8 integrated graphics - -pci:v00008086d00003582sv00001775sd000010D0* - ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer VGA - -pci:v00008086d00003582sv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d00003582sv00004C53sd000010B0* - ID_PRODUCT_FROM_DATABASE=CL9 mainboard - -pci:v00008086d00003582sv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v00008086d00003582sv0000E4BFsd00000CC9* - ID_PRODUCT_FROM_DATABASE=CC9-SAMBA - -pci:v00008086d00003582sv0000E4BFsd00000CD2* - ID_PRODUCT_FROM_DATABASE=CD2-BEBOP - -pci:v00008086d00003584* - ID_PRODUCT_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller - -pci:v00008086d00003584sv00001014sd0000055D* - ID_PRODUCT_FROM_DATABASE=ThinkPad R50e - -pci:v00008086d00003584sv00001028sd00000139* - ID_PRODUCT_FROM_DATABASE=Latitude D400 - -pci:v00008086d00003584sv00001028sd0000014F* - ID_PRODUCT_FROM_DATABASE=Latitude X300 - -pci:v00008086d00003584sv00001028sd00000152* - ID_PRODUCT_FROM_DATABASE=Latitude D500 - -pci:v00008086d00003584sv00001028sd00000163* - ID_PRODUCT_FROM_DATABASE=Latitude D505 - -pci:v00008086d00003584sv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m - -pci:v00008086d00003584sv00001028sd00000196* - ID_PRODUCT_FROM_DATABASE=Inspiron 5160 - -pci:v00008086d00003584sv0000114Asd00000582* - ID_PRODUCT_FROM_DATABASE=PC8 - -pci:v00008086d00003584sv00001734sd00001055* - ID_PRODUCT_FROM_DATABASE=Amilo M1420 - -pci:v00008086d00003584sv00001775sd000010D0* - ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer - -pci:v00008086d00003584sv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d00003584sv00004C53sd000010B0* - ID_PRODUCT_FROM_DATABASE=CL9 mainboard - -pci:v00008086d00003584sv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v00008086d00003585* - ID_PRODUCT_FROM_DATABASE=82852/82855 GM/GME/PM/GMV Processor to I/O Controller - -pci:v00008086d00003585sv00001014sd0000055E* - ID_PRODUCT_FROM_DATABASE=ThinkPad R50e - -pci:v00008086d00003585sv00001028sd00000139* - ID_PRODUCT_FROM_DATABASE=Latitude D400 - -pci:v00008086d00003585sv00001028sd0000014F* - ID_PRODUCT_FROM_DATABASE=Latitude X300 - -pci:v00008086d00003585sv00001028sd00000152* - ID_PRODUCT_FROM_DATABASE=Latitude D500 - -pci:v00008086d00003585sv00001028sd00000163* - ID_PRODUCT_FROM_DATABASE=Latitude D505 - -pci:v00008086d00003585sv00001028sd0000018D* - ID_PRODUCT_FROM_DATABASE=Inspiron 700m/710m - -pci:v00008086d00003585sv00001028sd00000196* - ID_PRODUCT_FROM_DATABASE=Inspiron 5160 - -pci:v00008086d00003585sv0000114Asd00000582* - ID_PRODUCT_FROM_DATABASE=PC8 - -pci:v00008086d00003585sv00001734sd00001055* - ID_PRODUCT_FROM_DATABASE=Amilo M1420 - -pci:v00008086d00003585sv00001775sd000010D0* - ID_PRODUCT_FROM_DATABASE=V5D Single Board Computer - -pci:v00008086d00003585sv00001775sd0000CE90* - ID_PRODUCT_FROM_DATABASE=CE9 - -pci:v00008086d00003585sv00004C53sd000010B0* - ID_PRODUCT_FROM_DATABASE=CL9 mainboard - -pci:v00008086d00003585sv00004C53sd000010E0* - ID_PRODUCT_FROM_DATABASE=PSL09 PrPMC - -pci:v00008086d0000358C* - ID_PRODUCT_FROM_DATABASE=82854 GMCH - -pci:v00008086d0000358E* - ID_PRODUCT_FROM_DATABASE=82854 GMCH Integrated Graphics Device - -pci:v00008086d00003590* - ID_PRODUCT_FROM_DATABASE=E7520 Memory Controller Hub - -pci:v00008086d00003590sv00001014sd000002DD* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00008086d00003590sv00001028sd0000016C* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1850 Memory Controller Hub - -pci:v00008086d00003590sv00001028sd0000016D* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2850 Memory Controller Hub - -pci:v00008086d00003590sv00001028sd0000019A* - ID_PRODUCT_FROM_DATABASE=PowerEdge SC1425 - -pci:v00008086d00003590sv00001734sd0000103E* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX/TX S2 series - -pci:v00008086d00003590sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d00003590sv00004C53sd000010D0* - ID_PRODUCT_FROM_DATABASE=Telum ASLP10 Processor AMC - -pci:v00008086d00003591* - ID_PRODUCT_FROM_DATABASE=E7525/E7520 Error Reporting Registers - -pci:v00008086d00003591sv00001014sd000002DD* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00008086d00003591sv00001028sd00000169* - ID_PRODUCT_FROM_DATABASE=Precision 470 - -pci:v00008086d00003591sv0000103Csd00003208* - ID_PRODUCT_FROM_DATABASE=ProLiant DL140 G2 - -pci:v00008086d00003591sv00004C53sd000010D0* - ID_PRODUCT_FROM_DATABASE=Telum ASLP10 Processor AMC - -pci:v00008086d00003592* - ID_PRODUCT_FROM_DATABASE=E7320 Memory Controller Hub - -pci:v00008086d00003592sv00001734sd00001073* - ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard - -pci:v00008086d00003593* - ID_PRODUCT_FROM_DATABASE=E7320 Error Reporting Registers - -pci:v00008086d00003593sv00001734sd00001073* - ID_PRODUCT_FROM_DATABASE=Primergy Econel 200 D2020 mainboard - -pci:v00008086d00003594* - ID_PRODUCT_FROM_DATABASE=E7520 DMA Controller - -pci:v00008086d00003594sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d00003594sv00004C53sd000010D0* - ID_PRODUCT_FROM_DATABASE=Telum ASLP10 Processor AMC - -pci:v00008086d00003595* - ID_PRODUCT_FROM_DATABASE=E7525/E7520/E7320 PCI Express Port A - -pci:v00008086d00003595sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d00003596* - ID_PRODUCT_FROM_DATABASE=E7525/E7520/E7320 PCI Express Port A1 - -pci:v00008086d00003597* - ID_PRODUCT_FROM_DATABASE=E7525/E7520 PCI Express Port B - -pci:v00008086d00003597sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d00003598* - ID_PRODUCT_FROM_DATABASE=E7520 PCI Express Port B1 - -pci:v00008086d00003598sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d00003599* - ID_PRODUCT_FROM_DATABASE=E7520 PCI Express Port C - -pci:v00008086d00003599sv00001775sd00001100* - ID_PRODUCT_FROM_DATABASE=CR11/VR11 Single Board Computer - -pci:v00008086d0000359A* - ID_PRODUCT_FROM_DATABASE=E7520 PCI Express Port C1 - -pci:v00008086d0000359B* - ID_PRODUCT_FROM_DATABASE=E7525/E7520/E7320 Extended Configuration Registers - -pci:v00008086d0000359Bsv00001014sd000002DD* - ID_PRODUCT_FROM_DATABASE=eServer xSeries server mainboard - -pci:v00008086d0000359E* - ID_PRODUCT_FROM_DATABASE=E7525 Memory Controller Hub - -pci:v00008086d0000359Esv00001028sd00000169* - ID_PRODUCT_FROM_DATABASE=Precision 470 - -pci:v00008086d000035B0* - ID_PRODUCT_FROM_DATABASE=3100 Chipset Memory I/O Controller Hub - -pci:v00008086d000035B1* - ID_PRODUCT_FROM_DATABASE=3100 DRAM Controller Error Reporting Registers - -pci:v00008086d000035B5* - ID_PRODUCT_FROM_DATABASE=3100 Chipset Enhanced DMA Controller - -pci:v00008086d000035B6* - ID_PRODUCT_FROM_DATABASE=3100 Chipset PCI Express Port A - -pci:v00008086d000035B7* - ID_PRODUCT_FROM_DATABASE=3100 Chipset PCI Express Port A1 - -pci:v00008086d000035C8* - ID_PRODUCT_FROM_DATABASE=3100 Extended Configuration Test Overflow Registers - -pci:v00008086d00003600* - ID_PRODUCT_FROM_DATABASE=7300 Chipset Memory Controller Hub - -pci:v00008086d00003604* - ID_PRODUCT_FROM_DATABASE=7300 Chipset PCI Express Port 1 - -pci:v00008086d00003605* - ID_PRODUCT_FROM_DATABASE=7300 Chipset PCI Express Port 2 - -pci:v00008086d00003606* - ID_PRODUCT_FROM_DATABASE=7300 Chipset PCI Express Port 3 - -pci:v00008086d00003607* - ID_PRODUCT_FROM_DATABASE=7300 Chipset PCI Express Port 4 - -pci:v00008086d00003608* - ID_PRODUCT_FROM_DATABASE=7300 Chipset PCI Express Port 5 - -pci:v00008086d00003609* - ID_PRODUCT_FROM_DATABASE=7300 Chipset PCI Express Port 6 - -pci:v00008086d0000360A* - ID_PRODUCT_FROM_DATABASE=7300 Chipset PCI Express Port 7 - -pci:v00008086d0000360B* - ID_PRODUCT_FROM_DATABASE=7300 Chipset QuickData Technology Device - -pci:v00008086d0000360C* - ID_PRODUCT_FROM_DATABASE=7300 Chipset FSB Registers - -pci:v00008086d0000360Csv00001028sd000001F0* - ID_PRODUCT_FROM_DATABASE=PowerEdge R900 7300 Chipset FSB Registers - -pci:v00008086d0000360D* - ID_PRODUCT_FROM_DATABASE=7300 Chipset Snoop Filter Registers - -pci:v00008086d0000360E* - ID_PRODUCT_FROM_DATABASE=7300 Chipset Debug and Miscellaneous Registers - -pci:v00008086d0000360F* - ID_PRODUCT_FROM_DATABASE=7300 Chipset FBD Branch 0 Registers - -pci:v00008086d00003610* - ID_PRODUCT_FROM_DATABASE=7300 Chipset FBD Branch 1 Registers - -pci:v00008086d00003700* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d00003701* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d00003702* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d00003703* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d00003704* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d00003705* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d00003706* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d00003707* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d00003708* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d00003709* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d0000370A* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d0000370B* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d0000370C* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d0000370D* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d0000370E* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d0000370F* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 DMI - -pci:v00008086d00003710* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA - -pci:v00008086d00003711* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA - -pci:v00008086d00003712* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA - -pci:v00008086d00003713* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA - -pci:v00008086d00003714* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA - -pci:v00008086d00003715* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA - -pci:v00008086d00003716* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA - -pci:v00008086d00003717* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA - -pci:v00008086d00003718* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA - -pci:v00008086d00003719* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 CB3 DMA - -pci:v00008086d0000371A* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Link - -pci:v00008086d0000371B* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Routing and Protocol - -pci:v00008086d0000371D* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 QPI Routing and Protocol - -pci:v00008086d00003720* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 PCI Express Root Port 0 - -pci:v00008086d00003721* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 PCI Express Root Port 1 - -pci:v00008086d00003722* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 PCI Express Root Port 2 - -pci:v00008086d00003723* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 PCI Express Root Port 3 - -pci:v00008086d00003724* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 PCI Express Root Port 4 - -pci:v00008086d00003725* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 NTB Primary - -pci:v00008086d00003726* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 NTB Primary - -pci:v00008086d00003727* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 NTB Secondary - -pci:v00008086d00003728* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Core - -pci:v00008086d00003729* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Core - -pci:v00008086d0000372A* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Core - -pci:v00008086d0000372B* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Core - -pci:v00008086d0000372C* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 Reserved - -pci:v00008086d0000373F* - ID_PRODUCT_FROM_DATABASE=Xeon C5500/C3500 IOxAPIC - -pci:v00008086d00003A00* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) 4-port SATA IDE Controller - -pci:v00008086d00003A02* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) SATA AHCI Controller - -pci:v00008086d00003A05* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) SATA RAID Controller - -pci:v00008086d00003A06* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) 2-port SATA IDE Controller - -pci:v00008086d00003A14* - ID_PRODUCT_FROM_DATABASE=82801JDO (ICH10DO) LPC Interface Controller - -pci:v00008086d00003A16* - ID_PRODUCT_FROM_DATABASE=82801JIR (ICH10R) LPC Interface Controller - -pci:v00008086d00003A16sv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 LPC Interface Controller - -pci:v00008086d00003A16sv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 LPC Interface Controller - -pci:v00008086d00003A16sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant G6 series - -pci:v00008086d00003A16sv00001043sd000082D4* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00003A16sv00001458sd00005001* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5 Motherboard - -pci:v00008086d00003A18* - ID_PRODUCT_FROM_DATABASE=82801JIB (ICH10) LPC Interface Controller - -pci:v00008086d00003A1A* - ID_PRODUCT_FROM_DATABASE=82801JD (ICH10D) LPC Interface Controller - -pci:v00008086d00003A20* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) 4 port SATA IDE Controller #1 - -pci:v00008086d00003A20sv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 SATA IDE Controller - -pci:v00008086d00003A20sv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 SATA IDE Controller - -pci:v00008086d00003A22* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) SATA AHCI Controller - -pci:v00008086d00003A22sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant G6 series - -pci:v00008086d00003A22sv00001043sd000082D4* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00003A22sv00001458sd0000B005* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard - -pci:v00008086d00003A25* - ID_PRODUCT_FROM_DATABASE=82801JIR (ICH10R) SATA RAID Controller - -pci:v00008086d00003A25sv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PERC S100 Controller (PE R410) - -pci:v00008086d00003A25sv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PERC S100 Controller (PE T410) - -pci:v00008086d00003A25sv00001028sd000002F1* - ID_PRODUCT_FROM_DATABASE=PERC S100 Controller (PE R510) - -pci:v00008086d00003A26* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) 2 port SATA IDE Controller #2 - -pci:v00008086d00003A26sv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 SATA IDE Controller - -pci:v00008086d00003A26sv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 SATA IDE Controller - -pci:v00008086d00003A30* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) SMBus Controller - -pci:v00008086d00003A30sv00001043sd000082D4* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00003A30sv00001458sd00005001* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard - -pci:v00008086d00003A32* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) Thermal Subsystem - -pci:v00008086d00003A34* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #1 - -pci:v00008086d00003A34sv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 USB UHCI Controller - -pci:v00008086d00003A34sv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 USB UHCI Controller - -pci:v00008086d00003A34sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant G6 series - -pci:v00008086d00003A34sv00001043sd000082D4* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00003A34sv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5 Motherboard - -pci:v00008086d00003A35* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #2 - -pci:v00008086d00003A35sv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 USB UHCI Controller - -pci:v00008086d00003A35sv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 USB UHCI Controller - -pci:v00008086d00003A35sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant G6 series - -pci:v00008086d00003A35sv00001043sd000082D4* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00003A35sv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5 Motherboard - -pci:v00008086d00003A36* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #3 - -pci:v00008086d00003A36sv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 USB UHCI Controller - -pci:v00008086d00003A36sv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 USB UHCI Controller - -pci:v00008086d00003A36sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant G6 series - -pci:v00008086d00003A36sv00001043sd000082D4* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00003A36sv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5 Motherboard - -pci:v00008086d00003A37* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #4 - -pci:v00008086d00003A37sv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 USB UHCI Controller - -pci:v00008086d00003A37sv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 USB UHCI Controller - -pci:v00008086d00003A37sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant G6 series - -pci:v00008086d00003A37sv00001043sd000082D4* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00003A37sv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=Motherboard - -pci:v00008086d00003A38* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #5 - -pci:v00008086d00003A38sv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 USB UHCI Controller - -pci:v00008086d00003A38sv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 USB UHCI Controller - -pci:v00008086d00003A38sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant ML150 G6 Server - -pci:v00008086d00003A38sv00001043sd000082D4* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00003A38sv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=Motherboard - -pci:v00008086d00003A39* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) USB UHCI Controller #6 - -pci:v00008086d00003A39sv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 USB UHCI Controller - -pci:v00008086d00003A39sv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 USB UHCI Controller - -pci:v00008086d00003A39sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant ML150 G6 Server - -pci:v00008086d00003A39sv00001043sd000082D4* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00003A39sv00001458sd00005004* - ID_PRODUCT_FROM_DATABASE=Motherboard - -pci:v00008086d00003A3A* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #1 - -pci:v00008086d00003A3Asv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 USB EHCI Controller - -pci:v00008086d00003A3Asv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 USB EHCI Controller - -pci:v00008086d00003A3Asv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant G6 series - -pci:v00008086d00003A3Asv00001043sd000082D4* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00003A3Asv00001458sd00005006* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5 Motherboard - -pci:v00008086d00003A3C* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) USB2 EHCI Controller #2 - -pci:v00008086d00003A3Csv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 USB EHCI Controller - -pci:v00008086d00003A3Csv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 USB EHCI Controller - -pci:v00008086d00003A3Csv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant G6 series - -pci:v00008086d00003A3Csv00001043sd000082D4* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00003A3Csv00001458sd00005006* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5 Motherboard - -pci:v00008086d00003A3E* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) HD Audio Controller - -pci:v00008086d00003A3Esv00001043sd00008311* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00003A3Esv00001458sd0000A002* - ID_PRODUCT_FROM_DATABASE=GA-EP45-UD3R Motherboard - -pci:v00008086d00003A3Esv00001458sd0000A102* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard - -pci:v00008086d00003A40* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 1 - -pci:v00008086d00003A40sv00001028sd0000028C* - ID_PRODUCT_FROM_DATABASE=PowerEdge R410 PCI Express Port 1 - -pci:v00008086d00003A40sv00001028sd0000028D* - ID_PRODUCT_FROM_DATABASE=PowerEdge T410 PCI Express Port 1 - -pci:v00008086d00003A40sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant ML150 G6 Server - -pci:v00008086d00003A40sv00001043sd000082D4* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00003A40sv00001043sd000082EA* - ID_PRODUCT_FROM_DATABASE=P6T DeLuxe Motherboard - -pci:v00008086d00003A40sv00001458sd00005001* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard - -pci:v00008086d00003A42* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Port 2 - -pci:v00008086d00003A44* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 3 - -pci:v00008086d00003A44sv00001043sd000082EA* - ID_PRODUCT_FROM_DATABASE=P6T DeLuxe Motherboard - -pci:v00008086d00003A46* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 4 - -pci:v00008086d00003A46sv00001043sd000082EA* - ID_PRODUCT_FROM_DATABASE=P6T DeLuxe Motherboard - -pci:v00008086d00003A46sv00001458sd00005001* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5 Motherboard - -pci:v00008086d00003A48* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 5 - -pci:v00008086d00003A48sv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant ML150 G6 Server - -pci:v00008086d00003A48sv00001043sd000082EA* - ID_PRODUCT_FROM_DATABASE=P6T Deluxe Motherboard - -pci:v00008086d00003A48sv00001458sd00005001* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5 Motherboard - -pci:v00008086d00003A4A* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) PCI Express Root Port 6 - -pci:v00008086d00003A4Asv0000103Csd0000330B* - ID_PRODUCT_FROM_DATABASE=ProLiant ML150 G6 Server - -pci:v00008086d00003A4Asv00001043sd000082D4* - ID_PRODUCT_FROM_DATABASE=P5Q Deluxe Motherboard - -pci:v00008086d00003A4Asv00001043sd000082EA* - ID_PRODUCT_FROM_DATABASE=P6T DeLuxe Motherboard - -pci:v00008086d00003A4Asv00001458sd00005001* - ID_PRODUCT_FROM_DATABASE=GA-EP45-DS5/GA-EG45M-DS2H Motherboard - -pci:v00008086d00003A4C* - ID_PRODUCT_FROM_DATABASE=82801JI (ICH10 Family) Gigabit Ethernet Controller - -pci:v00008086d00003A51* - ID_PRODUCT_FROM_DATABASE=82801JDO (ICH10DO) VECI Controller - -pci:v00008086d00003A55* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) Virtual SATA Controller - -pci:v00008086d00003A60* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) SMBus Controller - -pci:v00008086d00003A62* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) Thermal Subsystem - -pci:v00008086d00003A64* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) USB UHCI Controller #1 - -pci:v00008086d00003A65* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) USB UHCI Controller #2 - -pci:v00008086d00003A66* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) USB UHCI Controller #3 - -pci:v00008086d00003A67* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) USB UHCI Controller #4 - -pci:v00008086d00003A68* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) USB UHCI Controller #5 - -pci:v00008086d00003A69* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) USB UHCI Controller #6 - -pci:v00008086d00003A6A* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) USB2 EHCI Controller #1 - -pci:v00008086d00003A6C* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) USB2 EHCI Controller #2 - -pci:v00008086d00003A6E* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) HD Audio Controller - -pci:v00008086d00003A70* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) PCI Express Port 1 - -pci:v00008086d00003A72* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) PCI Express Port 2 - -pci:v00008086d00003A74* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) PCI Express Port 3 - -pci:v00008086d00003A76* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) PCI Express Port 4 - -pci:v00008086d00003A78* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) PCI Express Port 5 - -pci:v00008086d00003A7A* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) PCI Express Port 6 - -pci:v00008086d00003A7C* - ID_PRODUCT_FROM_DATABASE=82801JD/DO (ICH10 Family) Gigabit Ethernet Controller - -pci:v00008086d00003B00* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B01* - ID_PRODUCT_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller - -pci:v00008086d00003B02* - ID_PRODUCT_FROM_DATABASE=5 Series Chipset LPC Interface Controller - -pci:v00008086d00003B03* - ID_PRODUCT_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller - -pci:v00008086d00003B04* - ID_PRODUCT_FROM_DATABASE=5 Series Chipset LPC Interface Controller - -pci:v00008086d00003B05* - ID_PRODUCT_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller - -pci:v00008086d00003B06* - ID_PRODUCT_FROM_DATABASE=5 Series Chipset LPC Interface Controller - -pci:v00008086d00003B07* - ID_PRODUCT_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller - -pci:v00008086d00003B07sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d00003B07sv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d00003B08* - ID_PRODUCT_FROM_DATABASE=5 Series Chipset LPC Interface Controller - -pci:v00008086d00003B09* - ID_PRODUCT_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller - -pci:v00008086d00003B09sv00001025sd00000347* - ID_PRODUCT_FROM_DATABASE=Aspire 7740G - -pci:v00008086d00003B0A* - ID_PRODUCT_FROM_DATABASE=5 Series Chipset LPC Interface Controller - -pci:v00008086d00003B0Asv00001028sd000002DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 980 - -pci:v00008086d00003B0B* - ID_PRODUCT_FROM_DATABASE=Mobile 5 Series Chipset LPC Interface Controller - -pci:v00008086d00003B0C* - ID_PRODUCT_FROM_DATABASE=5 Series Chipset LPC Interface Controller - -pci:v00008086d00003B0D* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B0E* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B0F* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B10* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B11* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B12* - ID_PRODUCT_FROM_DATABASE=3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B13* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B14* - ID_PRODUCT_FROM_DATABASE=3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B15* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B16* - ID_PRODUCT_FROM_DATABASE=3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B17* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B18* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B19* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B1A* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B1B* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B1C* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B1D* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B1E* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B1F* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LPC Interface Controller - -pci:v00008086d00003B20* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA IDE Controller - -pci:v00008086d00003B21* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset 2 port SATA IDE Controller - -pci:v00008086d00003B22* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset 6 port SATA AHCI Controller - -pci:v00008086d00003B22sv00001028sd000002DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 980 - -pci:v00008086d00003B23* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA AHCI Controller - -pci:v00008086d00003B25* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset SATA RAID Controller - -pci:v00008086d00003B26* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset 2 port SATA IDE Controller - -pci:v00008086d00003B28* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA IDE Controller - -pci:v00008086d00003B29* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA AHCI Controller - -pci:v00008086d00003B29sv00001025sd00000347* - ID_PRODUCT_FROM_DATABASE=Aspire 7740G - -pci:v00008086d00003B2C* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset SATA RAID Controller - -pci:v00008086d00003B2D* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset 2 port SATA IDE Controller - -pci:v00008086d00003B2Dsv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d00003B2E* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset 4 port SATA IDE Controller - -pci:v00008086d00003B2Esv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d00003B2F* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset 6 port SATA AHCI Controller - -pci:v00008086d00003B2Fsv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d00003B2Fsv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d00003B30* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset SMBus Controller - -pci:v00008086d00003B30sv00001025sd00000347* - ID_PRODUCT_FROM_DATABASE=Aspire 7740G - -pci:v00008086d00003B30sv00001028sd000002DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 980 - -pci:v00008086d00003B30sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d00003B30sv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d00003B32* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset Thermal Subsystem - -pci:v00008086d00003B32sv00001025sd00000347* - ID_PRODUCT_FROM_DATABASE=Aspire 7740G - -pci:v00008086d00003B34* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller - -pci:v00008086d00003B34sv00001025sd00000347* - ID_PRODUCT_FROM_DATABASE=Aspire 7740G - -pci:v00008086d00003B34sv00001028sd000002DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 980 - -pci:v00008086d00003B34sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d00003B34sv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d00003B36* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller - -pci:v00008086d00003B37* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller - -pci:v00008086d00003B38* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller - -pci:v00008086d00003B39* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller - -pci:v00008086d00003B3A* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller - -pci:v00008086d00003B3B* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller - -pci:v00008086d00003B3C* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset USB2 Enhanced Host Controller - -pci:v00008086d00003B3Csv00001025sd00000347* - ID_PRODUCT_FROM_DATABASE=Aspire 7740G - -pci:v00008086d00003B3Csv00001028sd000002DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 980 - -pci:v00008086d00003B3Csv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d00003B3Csv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d00003B3E* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller - -pci:v00008086d00003B3F* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller - -pci:v00008086d00003B40* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset USB Universal Host Controller - -pci:v00008086d00003B41* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset LAN Controller - -pci:v00008086d00003B42* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 1 - -pci:v00008086d00003B42sv00001028sd000002DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 980 - -pci:v00008086d00003B42sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d00003B44* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 2 - -pci:v00008086d00003B44sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d00003B46* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 3 - -pci:v00008086d00003B46sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d00003B48* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 4 - -pci:v00008086d00003B48sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d00003B4A* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 5 - -pci:v00008086d00003B4Asv00001028sd000002DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 980 - -pci:v00008086d00003B4C* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 6 - -pci:v00008086d00003B4E* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 7 - -pci:v00008086d00003B50* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset PCI Express Root Port 8 - -pci:v00008086d00003B53* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset VECI Controller - -pci:v00008086d00003B56* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset High Definition Audio - -pci:v00008086d00003B56sv00001025sd00000347* - ID_PRODUCT_FROM_DATABASE=Aspire 7740G - -pci:v00008086d00003B56sv00001028sd000002DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 980 - -pci:v00008086d00003B56sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d00003B56sv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d00003B57* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset High Definition Audio - -pci:v00008086d00003B64* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset HECI Controller - -pci:v00008086d00003B64sv00001025sd00000347* - ID_PRODUCT_FROM_DATABASE=Aspire 7740G - -pci:v00008086d00003B64sv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d00003B65* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset HECI Controller - -pci:v00008086d00003B66* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset PT IDER Controller - -pci:v00008086d00003B67* - ID_PRODUCT_FROM_DATABASE=5 Series/3400 Series Chipset KT Controller - -pci:v00008086d00003B67sv0000E4BFsd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v00008086d00003C00* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 DMI2 - -pci:v00008086d00003C01* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 DMI2 in PCI Express Mode - -pci:v00008086d00003C02* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 1a - -pci:v00008086d00003C03* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 1b - -pci:v00008086d00003C04* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 2a - -pci:v00008086d00003C05* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 2b - -pci:v00008086d00003C06* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 2c - -pci:v00008086d00003C07* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 2d - -pci:v00008086d00003C08* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 3a in PCI Express Mode - -pci:v00008086d00003C09* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 3b - -pci:v00008086d00003C0A* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 3c - -pci:v00008086d00003C0B* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 IIO PCI Express Root Port 3d - -pci:v00008086d00003C0D* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Non-Transparent Bridge - -pci:v00008086d00003C0E* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Non-Transparent Bridge - -pci:v00008086d00003C0F* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Non-Transparent Bridge - -pci:v00008086d00003C20* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 0 - -pci:v00008086d00003C21* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 1 - -pci:v00008086d00003C22* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 2 - -pci:v00008086d00003C23* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 3 - -pci:v00008086d00003C24* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 4 - -pci:v00008086d00003C25* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 5 - -pci:v00008086d00003C26* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 6 - -pci:v00008086d00003C27* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 DMA Channel 7 - -pci:v00008086d00003C28* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Address Map, VTd_Misc, System Management - -pci:v00008086d00003C2A* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Control Status and Global Errors - -pci:v00008086d00003C2C* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 I/O APIC - -pci:v00008086d00003C2E* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 DMA - -pci:v00008086d00003C2F* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 DMA - -pci:v00008086d00003C40* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 IIO Switch and IRP Performance Monitor - -pci:v00008086d00003C43* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Ring to PCI Express Performance Monitor - -pci:v00008086d00003C44* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Ring to QuickPath Interconnect Link 0 Performance Monitor - -pci:v00008086d00003C45* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Ring to QuickPath Interconnect Link 1 Performance Monitor - -pci:v00008086d00003C46* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Processor Home Agent Performance Monitoring - -pci:v00008086d00003C71* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller RAS Registers - -pci:v00008086d00003C80* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 QPI Link 0 - -pci:v00008086d00003C83* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 QPI Link Reut 0 - -pci:v00008086d00003C84* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 QPI Link Reut 0 - -pci:v00008086d00003C90* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 QPI Link 1 - -pci:v00008086d00003C93* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 QPI Link Reut 1 - -pci:v00008086d00003C94* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 QPI Link Reut 1 - -pci:v00008086d00003CA0* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Processor Home Agent - -pci:v00008086d00003CA8* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Registers - -pci:v00008086d00003CAA* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 0 - -pci:v00008086d00003CAB* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 1 - -pci:v00008086d00003CAC* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 2 - -pci:v00008086d00003CAD* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 3 - -pci:v00008086d00003CAE* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Target Address Decoder 4 - -pci:v00008086d00003CB0* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 0 - -pci:v00008086d00003CB1* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 1 - -pci:v00008086d00003CB2* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 0 - -pci:v00008086d00003CB3* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 1 - -pci:v00008086d00003CB4* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 2 - -pci:v00008086d00003CB5* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller Channel 0-3 Thermal Control 3 - -pci:v00008086d00003CB6* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 2 - -pci:v00008086d00003CB7* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller ERROR Registers 3 - -pci:v00008086d00003CB8* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 DDRIO - -pci:v00008086d00003CC0* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Power Control Unit 0 - -pci:v00008086d00003CC1* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Power Control Unit 1 - -pci:v00008086d00003CC2* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Power Control Unit 2 - -pci:v00008086d00003CD0* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Power Control Unit 3 - -pci:v00008086d00003CE0* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Interrupt Control Registers - -pci:v00008086d00003CE3* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Semaphore and Scratchpad Configuration Registers - -pci:v00008086d00003CE4* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 R2PCIe - -pci:v00008086d00003CE6* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 QuickPath Interconnect Agent Ring Registers - -pci:v00008086d00003CE8* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 0 - -pci:v00008086d00003CE9* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 5 - -pci:v00008086d00003CEA* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 1 - -pci:v00008086d00003CEB* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 6 - -pci:v00008086d00003CEC* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 3 - -pci:v00008086d00003CED* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 7 - -pci:v00008086d00003CEE* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 4 - -pci:v00008086d00003CEF* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Unicast Register 8 - -pci:v00008086d00003CF4* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller System Address Decoder 0 - -pci:v00008086d00003CF5* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 Integrated Memory Controller System Address Decoder 1 - -pci:v00008086d00003CF6* - ID_PRODUCT_FROM_DATABASE=Xeon E5/Core i7 System Address Decoder - -pci:v00008086d00004000* - ID_PRODUCT_FROM_DATABASE=5400 Chipset Memory Controller Hub - -pci:v00008086d00004001* - ID_PRODUCT_FROM_DATABASE=5400 Chipset Memory Controller Hub - -pci:v00008086d00004003* - ID_PRODUCT_FROM_DATABASE=5400 Chipset Memory Controller Hub - -pci:v00008086d00004021* - ID_PRODUCT_FROM_DATABASE=5400 Chipset PCI Express Port 1 - -pci:v00008086d00004022* - ID_PRODUCT_FROM_DATABASE=5400 Chipset PCI Express Port 2 - -pci:v00008086d00004023* - ID_PRODUCT_FROM_DATABASE=5400 Chipset PCI Express Port 3 - -pci:v00008086d00004024* - ID_PRODUCT_FROM_DATABASE=5400 Chipset PCI Express Port 4 - -pci:v00008086d00004025* - ID_PRODUCT_FROM_DATABASE=5400 Chipset PCI Express Port 5 - -pci:v00008086d00004026* - ID_PRODUCT_FROM_DATABASE=5400 Chipset PCI Express Port 6 - -pci:v00008086d00004027* - ID_PRODUCT_FROM_DATABASE=5400 Chipset PCI Express Port 7 - -pci:v00008086d00004028* - ID_PRODUCT_FROM_DATABASE=5400 Chipset PCI Express Port 8 - -pci:v00008086d00004029* - ID_PRODUCT_FROM_DATABASE=5400 Chipset PCI Express Port 9 - -pci:v00008086d0000402D* - ID_PRODUCT_FROM_DATABASE=5400 Chipset IBIST Registers - -pci:v00008086d0000402E* - ID_PRODUCT_FROM_DATABASE=5400 Chipset IBIST Registers - -pci:v00008086d0000402F* - ID_PRODUCT_FROM_DATABASE=5400 Chipset QuickData Technology Device - -pci:v00008086d00004030* - ID_PRODUCT_FROM_DATABASE=5400 Chipset FSB Registers - -pci:v00008086d00004031* - ID_PRODUCT_FROM_DATABASE=5400 Chipset CE/SF Registers - -pci:v00008086d00004032* - ID_PRODUCT_FROM_DATABASE=5400 Chipset IOxAPIC - -pci:v00008086d00004035* - ID_PRODUCT_FROM_DATABASE=5400 Chipset FBD Registers - -pci:v00008086d00004036* - ID_PRODUCT_FROM_DATABASE=5400 Chipset FBD Registers - -pci:v00008086d00004100* - ID_PRODUCT_FROM_DATABASE=Moorestown Graphics and Video - -pci:v00008086d00004108* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller - -pci:v00008086d00004109* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller - -pci:v00008086d0000410A* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller - -pci:v00008086d0000410B* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller - -pci:v00008086d0000410C* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller - -pci:v00008086d0000410D* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller - -pci:v00008086d0000410E* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller - -pci:v00008086d0000410F* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller - -pci:v00008086d00004114* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx PCI Host Bridge #1 - -pci:v00008086d00004115* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx PCI Host Bridge #2 - -pci:v00008086d00004116* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx PCI Host Bridge #3 - -pci:v00008086d00004117* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx PCI Host Bridge #4 - -pci:v00008086d00004220* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 2200BG [Calexico2] Network Connection - -pci:v00008086d00004220sv0000103Csd00000934* - ID_PRODUCT_FROM_DATABASE=Compaq nw8240/nx8220 - -pci:v00008086d00004220sv0000103Csd000012F6* - ID_PRODUCT_FROM_DATABASE=nc6120/nx8220/nw8240 - -pci:v00008086d00004220sv00008086sd00002701* - ID_PRODUCT_FROM_DATABASE=WM3B2300BG Mini-PCI Card - -pci:v00008086d00004220sv00008086sd00002712* - ID_PRODUCT_FROM_DATABASE=IBM ThinkPad R50e - -pci:v00008086d00004220sv00008086sd00002721* - ID_PRODUCT_FROM_DATABASE=Dell B130 laptop integrated WLAN - -pci:v00008086d00004220sv00008086sd00002722* - ID_PRODUCT_FROM_DATABASE=Dell Latitude D600 - -pci:v00008086d00004220sv00008086sd00002731* - ID_PRODUCT_FROM_DATABASE=Samsung P35 integrated WLAN - -pci:v00008086d00004222* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection - -pci:v00008086d00004222sv0000103Csd0000135C* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection - -pci:v00008086d00004222sv00008086sd00001000* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 3945ABG Network Connection - -pci:v00008086d00004222sv00008086sd00001001* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 3945ABG Network Connection - -pci:v00008086d00004222sv00008086sd00001005* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 3945BG Network Connection - -pci:v00008086d00004222sv00008086sd00001034* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 3945BG Network Connection - -pci:v00008086d00004222sv00008086sd00001044* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 3945BG Network Connection - -pci:v00008086d00004222sv00008086sd00001C00* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 3945ABG Network Connection - -pci:v00008086d00004223* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 2915ABG [Calexico2] Network Connection - -pci:v00008086d00004223sv00001000sd00008086* - ID_PRODUCT_FROM_DATABASE=mPCI 3B Americas/Europe ZZA - -pci:v00008086d00004223sv00001001sd00008086* - ID_PRODUCT_FROM_DATABASE=mPCI 3B Europe ZZE - -pci:v00008086d00004223sv00001002sd00008086* - ID_PRODUCT_FROM_DATABASE=mPCI 3B Japan ZZJ - -pci:v00008086d00004223sv00001003sd00008086* - ID_PRODUCT_FROM_DATABASE=mPCI 3B High-Band ZZH - -pci:v00008086d00004223sv00001351sd0000103C* - ID_PRODUCT_FROM_DATABASE=Compaq NC6220 - -pci:v00008086d00004224* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 2915ABG [Calexico2] Network Connection - -pci:v00008086d00004227* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 3945ABG [Golan] Network Connection - -pci:v00008086d00004227sv00008086sd00001011* - ID_PRODUCT_FROM_DATABASE=ThinkPad R60e/X60s - -pci:v00008086d00004227sv00008086sd00001014* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 3945BG Network Connection - -pci:v00008086d00004229* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 4965 AG or AGN [Kedron] Network Connection - -pci:v00008086d00004229sv00008086sd00001100* - ID_PRODUCT_FROM_DATABASE=Vaio VGN-SZ79SN_C - -pci:v00008086d00004229sv00008086sd00001101* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 4965 AG or AGN - -pci:v00008086d0000422B* - ID_PRODUCT_FROM_DATABASE=Centrino Ultimate-N 6300 - -pci:v00008086d0000422Bsv00008086sd00001101* - ID_PRODUCT_FROM_DATABASE=Centrino Ultimate-N 6300 3x3 AGN - -pci:v00008086d0000422Bsv00008086sd00001121* - ID_PRODUCT_FROM_DATABASE=Centrino Ultimate-N 6300 3x3 AGN - -pci:v00008086d0000422C* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6200 - -pci:v00008086d0000422Csv00008086sd00001301* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6200 2x2 AGN - -pci:v00008086d0000422Csv00008086sd00001306* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6200 2x2 ABG - -pci:v00008086d0000422Csv00008086sd00001307* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6200 2x2 BG - -pci:v00008086d0000422Csv00008086sd00001321* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6200 2x2 AGN - -pci:v00008086d0000422Csv00008086sd00001326* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6200 2x2 ABG - -pci:v00008086d00004230* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 4965 AG or AGN [Kedron] Network Connection - -pci:v00008086d00004230sv00008086sd00001110* - ID_PRODUCT_FROM_DATABASE=Lenovo ThinkPad T51 - -pci:v00008086d00004230sv00008086sd00001111* - ID_PRODUCT_FROM_DATABASE=Lenovo ThinkPad T61 - -pci:v00008086d00004232* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 - -pci:v00008086d00004232sv00008086sd00001201* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 AGN - -pci:v00008086d00004232sv00008086sd00001204* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 AGN - -pci:v00008086d00004232sv00008086sd00001205* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 BGN - -pci:v00008086d00004232sv00008086sd00001206* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 ABG - -pci:v00008086d00004232sv00008086sd00001221* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 AGN - -pci:v00008086d00004232sv00008086sd00001224* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 AGN - -pci:v00008086d00004232sv00008086sd00001225* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 BGN - -pci:v00008086d00004232sv00008086sd00001226* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 ABG - -pci:v00008086d00004232sv00008086sd00001301* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 AGN - -pci:v00008086d00004232sv00008086sd00001304* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 AGN - -pci:v00008086d00004232sv00008086sd00001305* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 BGN - -pci:v00008086d00004232sv00008086sd00001306* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 ABG - -pci:v00008086d00004232sv00008086sd00001321* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 AGN - -pci:v00008086d00004232sv00008086sd00001324* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 AGN - -pci:v00008086d00004232sv00008086sd00001325* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 BGN - -pci:v00008086d00004232sv00008086sd00001326* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 ABG - -pci:v00008086d00004235* - ID_PRODUCT_FROM_DATABASE=Ultimate N WiFi Link 5300 - -pci:v00008086d00004236* - ID_PRODUCT_FROM_DATABASE=Ultimate N WiFi Link 5300 - -pci:v00008086d00004237* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 5100 AGN [Shiloh] Network Connection - -pci:v00008086d00004237sv00008086sd00001211* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 AGN - -pci:v00008086d00004237sv00008086sd00001214* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 AGN - -pci:v00008086d00004237sv00008086sd00001215* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 BGN - -pci:v00008086d00004237sv00008086sd00001216* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 ABG - -pci:v00008086d00004237sv00008086sd00001311* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 AGN - -pci:v00008086d00004237sv00008086sd00001314* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 AGN - -pci:v00008086d00004237sv00008086sd00001315* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 BGN - -pci:v00008086d00004237sv00008086sd00001316* - ID_PRODUCT_FROM_DATABASE=WiFi Link 5100 ABG - -pci:v00008086d00004238* - ID_PRODUCT_FROM_DATABASE=Centrino Ultimate-N 6300 - -pci:v00008086d00004238sv00008086sd00001111* - ID_PRODUCT_FROM_DATABASE=Centrino Ultimate-N 6300 3x3 AGN - -pci:v00008086d00004239* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6200 - -pci:v00008086d00004239sv00008086sd00001311* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6200 2x2 AGN - -pci:v00008086d00004239sv00008086sd00001316* - ID_PRODUCT_FROM_DATABASE=Centrino Advanced-N 6200 2x2 ABG - -pci:v00008086d0000423A* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 5350 AGN [Echo Peak] Network Connection - -pci:v00008086d0000423B* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 5350 AGN [Echo Peak] Network Connection - -pci:v00008086d0000423C* - ID_PRODUCT_FROM_DATABASE=WiMAX/WiFi Link 5150 - -pci:v00008086d0000423Csv00008086sd00001201* - ID_PRODUCT_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN - -pci:v00008086d0000423Csv00008086sd00001206* - ID_PRODUCT_FROM_DATABASE=WiMAX/WiFi Link 5150 ABG - -pci:v00008086d0000423Csv00008086sd00001221* - ID_PRODUCT_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN - -pci:v00008086d0000423Csv00008086sd00001301* - ID_PRODUCT_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN - -pci:v00008086d0000423Csv00008086sd00001306* - ID_PRODUCT_FROM_DATABASE=WiMAX/WiFi Link 5150 ABG - -pci:v00008086d0000423Csv00008086sd00001321* - ID_PRODUCT_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN - -pci:v00008086d0000423D* - ID_PRODUCT_FROM_DATABASE=WiMAX/WiFi Link 5150 - -pci:v00008086d0000423Dsv00008086sd00001211* - ID_PRODUCT_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN - -pci:v00008086d0000423Dsv00008086sd00001216* - ID_PRODUCT_FROM_DATABASE=WiMAX/WiFi Link 5150 ABG - -pci:v00008086d0000423Dsv00008086sd00001311* - ID_PRODUCT_FROM_DATABASE=WiMAX/WiFi Link 5150 AGN - -pci:v00008086d0000423Dsv00008086sd00001316* - ID_PRODUCT_FROM_DATABASE=WiMAX/WiFi Link 5150 ABG - -pci:v00008086d0000444E* - ID_PRODUCT_FROM_DATABASE=Turbo Memory Controller - -pci:v00008086d00005001* - ID_PRODUCT_FROM_DATABASE=LE80578 - -pci:v00008086d00005002* - ID_PRODUCT_FROM_DATABASE=LE80578 Graphics Processor Unit - -pci:v00008086d00005009* - ID_PRODUCT_FROM_DATABASE=LE80578 Video Display Controller - -pci:v00008086d0000500D* - ID_PRODUCT_FROM_DATABASE=LE80578 Expansion Bus - -pci:v00008086d0000500E* - ID_PRODUCT_FROM_DATABASE=LE80578 UART Controller - -pci:v00008086d0000500F* - ID_PRODUCT_FROM_DATABASE=LE80578 General Purpose IO - -pci:v00008086d00005010* - ID_PRODUCT_FROM_DATABASE=LE80578 I2C Controller - -pci:v00008086d00005012* - ID_PRODUCT_FROM_DATABASE=LE80578 Serial Peripheral Interface Bus - -pci:v00008086d00005020* - ID_PRODUCT_FROM_DATABASE=EP80579 Memory Controller Hub - -pci:v00008086d00005021* - ID_PRODUCT_FROM_DATABASE=EP80579 DRAM Error Reporting Registers - -pci:v00008086d00005023* - ID_PRODUCT_FROM_DATABASE=EP80579 EDMA Controller - -pci:v00008086d00005024* - ID_PRODUCT_FROM_DATABASE=EP80579 PCI Express Port PEA0 - -pci:v00008086d00005025* - ID_PRODUCT_FROM_DATABASE=EP80579 PCI Express Port PEA1 - -pci:v00008086d00005028* - ID_PRODUCT_FROM_DATABASE=EP80579 S-ATA IDE - -pci:v00008086d00005029* - ID_PRODUCT_FROM_DATABASE=EP80579 S-ATA AHCI - -pci:v00008086d0000502A* - ID_PRODUCT_FROM_DATABASE=EP80579 S-ATA Reserved - -pci:v00008086d0000502B* - ID_PRODUCT_FROM_DATABASE=EP80579 S-ATA Reserved - -pci:v00008086d0000502C* - ID_PRODUCT_FROM_DATABASE=EP80579 Integrated Processor ASU - -pci:v00008086d0000502D* - ID_PRODUCT_FROM_DATABASE=EP80579 Integrated Processor with QuickAssist ASU - -pci:v00008086d0000502E* - ID_PRODUCT_FROM_DATABASE=EP80579 Reserved - -pci:v00008086d0000502F* - ID_PRODUCT_FROM_DATABASE=EP80579 Reserved - -pci:v00008086d00005030* - ID_PRODUCT_FROM_DATABASE=EP80579 Reserved - -pci:v00008086d00005031* - ID_PRODUCT_FROM_DATABASE=EP80579 LPC Bus - -pci:v00008086d00005032* - ID_PRODUCT_FROM_DATABASE=EP80579 SMBus Controller - -pci:v00008086d00005033* - ID_PRODUCT_FROM_DATABASE=EP80579 USB 1.1 Controller - -pci:v00008086d00005035* - ID_PRODUCT_FROM_DATABASE=EP80579 USB 2.0 Controller - -pci:v00008086d00005037* - ID_PRODUCT_FROM_DATABASE=EP80579 PCI-PCI Bridge (transparent mode) - -pci:v00008086d00005039* - ID_PRODUCT_FROM_DATABASE=EP80579 Controller Area Network (CAN) interface #1 - -pci:v00008086d0000503A* - ID_PRODUCT_FROM_DATABASE=EP80579 Controller Area Network (CAN) interface #2 - -pci:v00008086d0000503B* - ID_PRODUCT_FROM_DATABASE=EP80579 Synchronous Serial Port (SPP) - -pci:v00008086d0000503C* - ID_PRODUCT_FROM_DATABASE=EP80579 IEEE 1588 Hardware Assist - -pci:v00008086d0000503D* - ID_PRODUCT_FROM_DATABASE=EP80579 Local Expansion Bus - -pci:v00008086d0000503E* - ID_PRODUCT_FROM_DATABASE=EP80579 Global Control Unit (GCU) - -pci:v00008086d0000503F* - ID_PRODUCT_FROM_DATABASE=EP80579 Reserved - -pci:v00008086d00005040* - ID_PRODUCT_FROM_DATABASE=EP80579 Integrated Processor Gigabit Ethernet MAC - -pci:v00008086d00005041* - ID_PRODUCT_FROM_DATABASE=EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC - -pci:v00008086d00005042* - ID_PRODUCT_FROM_DATABASE=EP80579 Reserved - -pci:v00008086d00005043* - ID_PRODUCT_FROM_DATABASE=EP80579 Reserved - -pci:v00008086d00005044* - ID_PRODUCT_FROM_DATABASE=EP80579 Integrated Processor Gigabit Ethernet MAC - -pci:v00008086d00005045* - ID_PRODUCT_FROM_DATABASE=EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC - -pci:v00008086d00005046* - ID_PRODUCT_FROM_DATABASE=EP80579 Reserved - -pci:v00008086d00005047* - ID_PRODUCT_FROM_DATABASE=EP80579 Reserved - -pci:v00008086d00005048* - ID_PRODUCT_FROM_DATABASE=EP80579 Integrated Processor Gigabit Ethernet MAC - -pci:v00008086d00005049* - ID_PRODUCT_FROM_DATABASE=EP80579 Integrated Processor with QuickAssist Gigabit Ethernet MAC - -pci:v00008086d0000504A* - ID_PRODUCT_FROM_DATABASE=EP80579 Reserved - -pci:v00008086d0000504B* - ID_PRODUCT_FROM_DATABASE=EP80579 Reserved - -pci:v00008086d0000504C* - ID_PRODUCT_FROM_DATABASE=EP80579 Integrated Processor with QuickAssist TDM - -pci:v00008086d00005200* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Intelligent Server - -pci:v00008086d00005201* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Intelligent Server - -pci:v00008086d00005201sv00008086sd00000001* - ID_PRODUCT_FROM_DATABASE=EtherExpress PRO/100 Server Ethernet Adapter - -pci:v00008086d0000530D* - ID_PRODUCT_FROM_DATABASE=80310 (IOP) IO Processor - -pci:v00008086d000065C0* - ID_PRODUCT_FROM_DATABASE=5100 Chipset Memory Controller Hub - -pci:v00008086d000065E2* - ID_PRODUCT_FROM_DATABASE=5100 Chipset PCI Express x4 Port 2 - -pci:v00008086d000065E3* - ID_PRODUCT_FROM_DATABASE=5100 Chipset PCI Express x4 Port 3 - -pci:v00008086d000065E4* - ID_PRODUCT_FROM_DATABASE=5100 Chipset PCI Express x4 Port 4 - -pci:v00008086d000065E5* - ID_PRODUCT_FROM_DATABASE=5100 Chipset PCI Express x4 Port 5 - -pci:v00008086d000065E6* - ID_PRODUCT_FROM_DATABASE=5100 Chipset PCI Express x4 Port 6 - -pci:v00008086d000065E7* - ID_PRODUCT_FROM_DATABASE=5100 Chipset PCI Express x4 Port 7 - -pci:v00008086d000065F0* - ID_PRODUCT_FROM_DATABASE=5100 Chipset FSB Registers - -pci:v00008086d000065F0sv00001028sd0000020F* - ID_PRODUCT_FROM_DATABASE=PowerEdge R300 - -pci:v00008086d000065F0sv00001028sd00000210* - ID_PRODUCT_FROM_DATABASE=PowerEdge T300 - -pci:v00008086d000065F1* - ID_PRODUCT_FROM_DATABASE=5100 Chipset Reserved Registers - -pci:v00008086d000065F1sv00001028sd00000210* - ID_PRODUCT_FROM_DATABASE=PowerEdge T300 - -pci:v00008086d000065F3* - ID_PRODUCT_FROM_DATABASE=5100 Chipset Reserved Registers - -pci:v00008086d000065F5* - ID_PRODUCT_FROM_DATABASE=5100 Chipset DDR Channel 0 Registers - -pci:v00008086d000065F6* - ID_PRODUCT_FROM_DATABASE=5100 Chipset DDR Channel 1 Registers - -pci:v00008086d000065F7* - ID_PRODUCT_FROM_DATABASE=5100 Chipset PCI Express x8 Port 2-3 - -pci:v00008086d000065F8* - ID_PRODUCT_FROM_DATABASE=5100 Chipset PCI Express x8 Port 4-5 - -pci:v00008086d000065F9* - ID_PRODUCT_FROM_DATABASE=5100 Chipset PCI Express x8 Port 6-7 - -pci:v00008086d000065FA* - ID_PRODUCT_FROM_DATABASE=5100 Chipset PCI Express x16 Port 4-7 - -pci:v00008086d000065FF* - ID_PRODUCT_FROM_DATABASE=5100 Chipset DMA Engine - -pci:v00008086d00007000* - ID_PRODUCT_FROM_DATABASE=82371SB PIIX3 ISA [Natoma/Triton II] - -pci:v00008086d00007000sv00001AF4sd00001100* - ID_PRODUCT_FROM_DATABASE=Qemu virtual machine - -pci:v00008086d00007010* - ID_PRODUCT_FROM_DATABASE=82371SB PIIX3 IDE [Natoma/Triton II] - -pci:v00008086d00007010sv00001AF4sd00001100* - ID_PRODUCT_FROM_DATABASE=Qemu virtual machine - -pci:v00008086d00007020* - ID_PRODUCT_FROM_DATABASE=82371SB PIIX3 USB [Natoma/Triton II] - -pci:v00008086d00007020sv00001AF4sd00001100* - ID_PRODUCT_FROM_DATABASE=Qemu virtual machine - -pci:v00008086d00007030* - ID_PRODUCT_FROM_DATABASE=430VX - 82437VX TVX [Triton VX] - -pci:v00008086d00007050* - ID_PRODUCT_FROM_DATABASE=Intercast Video Capture Card - -pci:v00008086d00007051* - ID_PRODUCT_FROM_DATABASE=PB 642365-003 (Business Video Conferencing Card) - -pci:v00008086d00007100* - ID_PRODUCT_FROM_DATABASE=430TX - 82439TX MTXC - -pci:v00008086d00007110* - ID_PRODUCT_FROM_DATABASE=82371AB/EB/MB PIIX4 ISA - -pci:v00008086d00007110sv000015ADsd00001976* - ID_PRODUCT_FROM_DATABASE=Virtual Machine Chipset - -pci:v00008086d00007111* - ID_PRODUCT_FROM_DATABASE=82371AB/EB/MB PIIX4 IDE - -pci:v00008086d00007111sv000015ADsd00001976* - ID_PRODUCT_FROM_DATABASE=Virtual Machine Chipset - -pci:v00008086d00007112* - ID_PRODUCT_FROM_DATABASE=82371AB/EB/MB PIIX4 USB - -pci:v00008086d00007112sv000015ADsd00001976* - ID_PRODUCT_FROM_DATABASE=Virtual Machine Chipset - -pci:v00008086d00007113* - ID_PRODUCT_FROM_DATABASE=82371AB/EB/MB PIIX4 ACPI - -pci:v00008086d00007113sv000015ADsd00001976* - ID_PRODUCT_FROM_DATABASE=Virtual Machine Chipset - -pci:v00008086d00007113sv00001AF4sd00001100* - ID_PRODUCT_FROM_DATABASE=Qemu virtual machine - -pci:v00008086d00007120* - ID_PRODUCT_FROM_DATABASE=82810 GMCH (Graphics Memory Controller Hub) - -pci:v00008086d00007120sv00004C53sd00001040* - ID_PRODUCT_FROM_DATABASE=CL7 mainboard - -pci:v00008086d00007120sv00004C53sd00001060* - ID_PRODUCT_FROM_DATABASE=PC7 mainboard - -pci:v00008086d00007121* - ID_PRODUCT_FROM_DATABASE=82810 (CGC) Chipset Graphics Controller - -pci:v00008086d00007121sv00004C53sd00001040* - ID_PRODUCT_FROM_DATABASE=CL7 mainboard - -pci:v00008086d00007121sv00004C53sd00001060* - ID_PRODUCT_FROM_DATABASE=PC7 mainboard - -pci:v00008086d00007121sv00008086sd00004341* - ID_PRODUCT_FROM_DATABASE=Cayman (CA810) Mainboard - -pci:v00008086d00007122* - ID_PRODUCT_FROM_DATABASE=82810 DC-100 (GMCH) Graphics Memory Controller Hub - -pci:v00008086d00007123* - ID_PRODUCT_FROM_DATABASE=82810 DC-100 (CGC) Chipset Graphics Controller - -pci:v00008086d00007124* - ID_PRODUCT_FROM_DATABASE=82810E DC-133 (GMCH) Graphics Memory Controller Hub - -pci:v00008086d00007124sv00001028sd000000B4* - ID_PRODUCT_FROM_DATABASE=OptiPlex GX110 - -pci:v00008086d00007125* - ID_PRODUCT_FROM_DATABASE=82810E DC-133 (CGC) Chipset Graphics Controller - -pci:v00008086d00007125sv00001028sd000000B4* - ID_PRODUCT_FROM_DATABASE=OptiPlex GX110 - -pci:v00008086d00007126* - ID_PRODUCT_FROM_DATABASE=82810 DC-133 System and Graphics Controller - -pci:v00008086d00007128* - ID_PRODUCT_FROM_DATABASE=82810-M DC-100 System and Graphics Controller - -pci:v00008086d0000712A* - ID_PRODUCT_FROM_DATABASE=82810-M DC-133 System and Graphics Controller - -pci:v00008086d00007180* - ID_PRODUCT_FROM_DATABASE=440LX/EX - 82443LX/EX Host bridge - -pci:v00008086d00007181* - ID_PRODUCT_FROM_DATABASE=440LX/EX - 82443LX/EX AGP bridge - -pci:v00008086d00007190* - ID_PRODUCT_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge - -pci:v00008086d00007190sv00000E11sd00000500* - ID_PRODUCT_FROM_DATABASE=Armada 1750 Laptop System Chipset - -pci:v00008086d00007190sv00000E11sd0000B110* - ID_PRODUCT_FROM_DATABASE=Armada M700/E500 - -pci:v00008086d00007190sv00001028sd0000008E* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1300 mainboard - -pci:v00008086d00007190sv00001043sd0000803B* - ID_PRODUCT_FROM_DATABASE=CUBX-L/E Mainboard - -pci:v00008086d00007190sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Toshiba Tecra 8100 Laptop System Chipset - -pci:v00008086d00007190sv000015ADsd00001976* - ID_PRODUCT_FROM_DATABASE=Virtual Machine Chipset - -pci:v00008086d00007190sv00004C53sd00001050* - ID_PRODUCT_FROM_DATABASE=CT7 mainboard - -pci:v00008086d00007190sv00004C53sd00001051* - ID_PRODUCT_FROM_DATABASE=CE7 mainboard - -pci:v00008086d00007191* - ID_PRODUCT_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX AGP bridge - -pci:v00008086d00007191sv00001028sd0000008E* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1300 mainboard - -pci:v00008086d00007192* - ID_PRODUCT_FROM_DATABASE=440BX/ZX/DX - 82443BX/ZX/DX Host bridge (AGP disabled) - -pci:v00008086d00007192sv00000E11sd00000460* - ID_PRODUCT_FROM_DATABASE=Armada 1700 Laptop System Chipset - -pci:v00008086d00007192sv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Satellite 4010 - -pci:v00008086d00007192sv00004C53sd00001000* - ID_PRODUCT_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard - -pci:v00008086d00007192sv00008086sd00007190* - ID_PRODUCT_FROM_DATABASE=Dell PowerEdge 350 - -pci:v00008086d00007194* - ID_PRODUCT_FROM_DATABASE=82440MX Host Bridge - -pci:v00008086d00007194sv00001033sd00000000* - ID_PRODUCT_FROM_DATABASE=Versa Note Vxi - -pci:v00008086d00007194sv00004C53sd000010A0* - ID_PRODUCT_FROM_DATABASE=CA3/CR3 mainboard - -pci:v00008086d00007195* - ID_PRODUCT_FROM_DATABASE=82440MX AC'97 Audio Controller - -pci:v00008086d00007195sv00001033sd000080CC* - ID_PRODUCT_FROM_DATABASE=Versa Note VXi - -pci:v00008086d00007195sv000010CFsd00001099* - ID_PRODUCT_FROM_DATABASE=QSound_SigmaTel Stac97 PCI Audio - -pci:v00008086d00007195sv000011D4sd00000040* - ID_PRODUCT_FROM_DATABASE=SoundMAX Integrated Digital Audio - -pci:v00008086d00007195sv000011D4sd00000048* - ID_PRODUCT_FROM_DATABASE=SoundMAX Integrated Digital Audio - -pci:v00008086d00007196* - ID_PRODUCT_FROM_DATABASE=82440MX AC'97 Modem Controller - -pci:v00008086d00007198* - ID_PRODUCT_FROM_DATABASE=82440MX ISA Bridge - -pci:v00008086d00007199* - ID_PRODUCT_FROM_DATABASE=82440MX EIDE Controller - -pci:v00008086d0000719A* - ID_PRODUCT_FROM_DATABASE=82440MX USB Universal Host Controller - -pci:v00008086d0000719B* - ID_PRODUCT_FROM_DATABASE=82440MX Power Management Controller - -pci:v00008086d000071A0* - ID_PRODUCT_FROM_DATABASE=440GX - 82443GX Host bridge - -pci:v00008086d000071A0sv00004C53sd00001050* - ID_PRODUCT_FROM_DATABASE=CT7 mainboard - -pci:v00008086d000071A0sv00004C53sd00001051* - ID_PRODUCT_FROM_DATABASE=CE7 mainboard - -pci:v00008086d000071A1* - ID_PRODUCT_FROM_DATABASE=440GX - 82443GX AGP bridge - -pci:v00008086d000071A2* - ID_PRODUCT_FROM_DATABASE=440GX - 82443GX Host bridge (AGP disabled) - -pci:v00008086d000071A2sv00004C53sd00001000* - ID_PRODUCT_FROM_DATABASE=CC7/CR7/CP7/VC7/VP7/VR7 mainboard - -pci:v00008086d00007600* - ID_PRODUCT_FROM_DATABASE=82372FB PIIX5 ISA - -pci:v00008086d00007601* - ID_PRODUCT_FROM_DATABASE=82372FB PIIX5 IDE - -pci:v00008086d00007602* - ID_PRODUCT_FROM_DATABASE=82372FB PIIX5 USB - -pci:v00008086d00007603* - ID_PRODUCT_FROM_DATABASE=82372FB PIIX5 SMBus - -pci:v00008086d00007800* - ID_PRODUCT_FROM_DATABASE=82740 (i740) AGP Graphics Accelerator - -pci:v00008086d00007800sv0000003Dsd00000008* - ID_PRODUCT_FROM_DATABASE=Starfighter AGP - -pci:v00008086d00007800sv0000003Dsd0000000B* - ID_PRODUCT_FROM_DATABASE=Starfighter AGP - -pci:v00008086d00007800sv00001092sd00000100* - ID_PRODUCT_FROM_DATABASE=Stealth II G460 - -pci:v00008086d00007800sv000010B4sd0000201A* - ID_PRODUCT_FROM_DATABASE=Lightspeed 740 - -pci:v00008086d00007800sv000010B4sd0000202F* - ID_PRODUCT_FROM_DATABASE=Lightspeed 740 - -pci:v00008086d00007800sv00008086sd00000000* - ID_PRODUCT_FROM_DATABASE=Terminator 2x/i - -pci:v00008086d00007800sv00008086sd00000100* - ID_PRODUCT_FROM_DATABASE=Intel740 Graphics Accelerator - -pci:v00008086d00008002* - ID_PRODUCT_FROM_DATABASE=Trusted Execution Technology Registers - -pci:v00008086d00008003* - ID_PRODUCT_FROM_DATABASE=Trusted Execution Technology Registers - -pci:v00008086d00008100* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) - -pci:v00008086d00008108* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) Graphics Controller - -pci:v00008086d00008110* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) PCI Express Port 1 - -pci:v00008086d00008112* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) PCI Express Port 2 - -pci:v00008086d00008114* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) USB UHCI #1 - -pci:v00008086d00008115* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) USB UHCI #2 - -pci:v00008086d00008116* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) USB UHCI #3 - -pci:v00008086d00008117* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) USB EHCI #1 - -pci:v00008086d00008118* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) USB Client Controller - -pci:v00008086d00008119* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) LPC Bridge - -pci:v00008086d0000811A* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) IDE Controller - -pci:v00008086d0000811B* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) HD Audio Controller - -pci:v00008086d0000811C* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) SDIO Controller #1 - -pci:v00008086d0000811D* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) SDIO Controller #2 - -pci:v00008086d0000811E* - ID_PRODUCT_FROM_DATABASE=System Controller Hub (SCH Poulsbo) SDIO Controller #3 - -pci:v00008086d00008180* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx PCI Express Port 3 - -pci:v00008086d00008181* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx PCI Express Port 4 - -pci:v00008086d00008182* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx Integrated Graphics Controller - -pci:v00008086d00008183* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx Configuration Unit - -pci:v00008086d00008184* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx PCI Express Port 1 - -pci:v00008086d00008185* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx PCI Express Port 2 - -pci:v00008086d00008186* - ID_PRODUCT_FROM_DATABASE=Atom Processor E6xx LPC Bridge - -pci:v00008086d000084C4* - ID_PRODUCT_FROM_DATABASE=450KX/GX [Orion] - 82454KX/GX PCI bridge - -pci:v00008086d000084C5* - ID_PRODUCT_FROM_DATABASE=450KX/GX [Orion] - 82453KX/GX Memory controller - -pci:v00008086d000084CA* - ID_PRODUCT_FROM_DATABASE=450NX - 82451NX Memory & I/O Controller - -pci:v00008086d000084CB* - ID_PRODUCT_FROM_DATABASE=450NX - 82454NX/84460GX PCI Expander Bridge - -pci:v00008086d000084E0* - ID_PRODUCT_FROM_DATABASE=460GX - 84460GX System Address Controller (SAC) - -pci:v00008086d000084E1* - ID_PRODUCT_FROM_DATABASE=460GX - 84460GX System Data Controller (SDC) - -pci:v00008086d000084E2* - ID_PRODUCT_FROM_DATABASE=460GX - 84460GX AGP Bridge (GXB function 2) - -pci:v00008086d000084E3* - ID_PRODUCT_FROM_DATABASE=460GX - 84460GX Memory Address Controller (MAC) - -pci:v00008086d000084E4* - ID_PRODUCT_FROM_DATABASE=460GX - 84460GX Memory Data Controller (MDC) - -pci:v00008086d000084E6* - ID_PRODUCT_FROM_DATABASE=460GX - 82466GX Wide and fast PCI eXpander Bridge (WXB) - -pci:v00008086d000084EA* - ID_PRODUCT_FROM_DATABASE=460GX - 84460GX AGP Bridge (GXB function 1) - -pci:v00008086d00008500* - ID_PRODUCT_FROM_DATABASE=IXP4XX Network Processor (IXP420/421/422/425/IXC1100) - -pci:v00008086d00008500sv00001993sd00000DED* - ID_PRODUCT_FROM_DATABASE=mGuard-PCI AV#2 - -pci:v00008086d00008500sv00001993sd00000DEE* - ID_PRODUCT_FROM_DATABASE=mGuard-PCI AV#1 - -pci:v00008086d00008500sv00001993sd00000DEF* - ID_PRODUCT_FROM_DATABASE=mGuard-PCI AV#0 - -pci:v00008086d00008800* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T PCI Express Port - -pci:v00008086d00008801* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T Packet Hub - -pci:v00008086d00008802* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T Gigabit Ethernet Controller - -pci:v00008086d00008803* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T General Purpose IO Controller - -pci:v00008086d00008804* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T USB OHCI Controller #4 - -pci:v00008086d00008805* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T USB OHCI Controller #5 - -pci:v00008086d00008806* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T USB OHCI Controller #6 - -pci:v00008086d00008807* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T USB2 EHCI Controller #2 - -pci:v00008086d00008808* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T USB Client Controller - -pci:v00008086d00008809* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T SDIO Controller #1 - -pci:v00008086d0000880A* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T SDIO Controller #2 - -pci:v00008086d0000880B* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T SATA AHCI Controller - -pci:v00008086d0000880C* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T USB OHCI Controller #1 - -pci:v00008086d0000880D* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T USB OHCI Controller #2 - -pci:v00008086d0000880E* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T USB OHCI Controller #3 - -pci:v00008086d0000880F* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T USB2 EHCI Controller #1 - -pci:v00008086d00008810* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T DMA Controller #1 - -pci:v00008086d00008811* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T UART Controller 0 - -pci:v00008086d00008812* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T UART Controller 1 - -pci:v00008086d00008813* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T UART Controller 2 - -pci:v00008086d00008814* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T UART Controller 3 - -pci:v00008086d00008815* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T DMA Controller #2 - -pci:v00008086d00008816* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T Serial Peripheral Interface Bus - -pci:v00008086d00008817* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T I2C Controller - -pci:v00008086d00008818* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T Controller Area Network (CAN) Controller - -pci:v00008086d00008819* - ID_PRODUCT_FROM_DATABASE=Platform Controller Hub EG20T IEEE 1588 Hardware Assist - -pci:v00008086d00008C00* - ID_PRODUCT_FROM_DATABASE=Lynx Point 4-port SATA Controller 1 [IDE mode] - -pci:v00008086d00008C01* - ID_PRODUCT_FROM_DATABASE=Lynx Point 4-port SATA Controller 1 [IDE mode] - -pci:v00008086d00008C02* - ID_PRODUCT_FROM_DATABASE=Lynx Point 6-port SATA Controller 1 [AHCI mode] - -pci:v00008086d00008C03* - ID_PRODUCT_FROM_DATABASE=Lynx Point 6-port SATA Controller 1 [AHCI mode] - -pci:v00008086d00008C04* - ID_PRODUCT_FROM_DATABASE=Lynx Point SATA Controller 1 [RAID mode] - -pci:v00008086d00008C05* - ID_PRODUCT_FROM_DATABASE=Lynx Point SATA Controller 1 [RAID mode] - -pci:v00008086d00008C06* - ID_PRODUCT_FROM_DATABASE=Lynx Point SATA Controller 1 [RAID mode] - -pci:v00008086d00008C07* - ID_PRODUCT_FROM_DATABASE=Lynx Point SATA Controller 1 [RAID mode] - -pci:v00008086d00008C08* - ID_PRODUCT_FROM_DATABASE=Lynx Point 2-port SATA Controller 2 [IDE mode] - -pci:v00008086d00008C09* - ID_PRODUCT_FROM_DATABASE=Lynx Point 2-port SATA Controller 2 [IDE mode] - -pci:v00008086d00008C0E* - ID_PRODUCT_FROM_DATABASE=Lynx Point SATA Controller 1 [RAID mode] - -pci:v00008086d00008C0F* - ID_PRODUCT_FROM_DATABASE=Lynx Point SATA Controller 1 [RAID mode] - -pci:v00008086d00008C10* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #1 - -pci:v00008086d00008C11* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #1 - -pci:v00008086d00008C12* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #2 - -pci:v00008086d00008C13* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #2 - -pci:v00008086d00008C14* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #3 - -pci:v00008086d00008C15* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #3 - -pci:v00008086d00008C16* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #4 - -pci:v00008086d00008C17* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #4 - -pci:v00008086d00008C18* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #5 - -pci:v00008086d00008C19* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #5 - -pci:v00008086d00008C1A* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #6 - -pci:v00008086d00008C1B* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #6 - -pci:v00008086d00008C1C* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #7 - -pci:v00008086d00008C1D* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #7 - -pci:v00008086d00008C1E* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #8 - -pci:v00008086d00008C1F* - ID_PRODUCT_FROM_DATABASE=Lynx Point PCI Express Root Port #8 - -pci:v00008086d00008C20* - ID_PRODUCT_FROM_DATABASE=Lynx Point High Definition Audio Controller - -pci:v00008086d00008C21* - ID_PRODUCT_FROM_DATABASE=Lynx Point High Definition Audio Controller - -pci:v00008086d00008C22* - ID_PRODUCT_FROM_DATABASE=Lynx Point SMBus Controller - -pci:v00008086d00008C23* - ID_PRODUCT_FROM_DATABASE=Lynx Point CHAP Counters - -pci:v00008086d00008C24* - ID_PRODUCT_FROM_DATABASE=Lynx Point Thermal Management Controller - -pci:v00008086d00008C26* - ID_PRODUCT_FROM_DATABASE=Lynx Point USB Enhanced Host Controller #1 - -pci:v00008086d00008C2D* - ID_PRODUCT_FROM_DATABASE=Lynx Point USB Enhanced Host Controller #2 - -pci:v00008086d00008C31* - ID_PRODUCT_FROM_DATABASE=Lynx Point USB xHCI Host Controller - -pci:v00008086d00008C33* - ID_PRODUCT_FROM_DATABASE=Lynx Point LAN Controller - -pci:v00008086d00008C34* - ID_PRODUCT_FROM_DATABASE=Lynx Point NAND Controller - -pci:v00008086d00008C3A* - ID_PRODUCT_FROM_DATABASE=Lynx Point MEI Controller #1 - -pci:v00008086d00008C3B* - ID_PRODUCT_FROM_DATABASE=Lynx Point MEI Controller #2 - -pci:v00008086d00008C3C* - ID_PRODUCT_FROM_DATABASE=Lynx Point IDE-r Controller - -pci:v00008086d00008C3D* - ID_PRODUCT_FROM_DATABASE=Lynx Point KT Controller - -pci:v00008086d00008C40* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C41* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C42* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C43* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C44* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C45* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C46* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C47* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C48* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C49* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C4A* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C4B* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C4C* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C4D* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C4E* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C4F* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C50* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C51* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C52* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C53* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C54* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C55* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C56* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C57* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C58* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C59* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C5A* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C5B* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C5C* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C5D* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C5E* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008C5F* - ID_PRODUCT_FROM_DATABASE=Lynx Point LPC Controller - -pci:v00008086d00008D00* - ID_PRODUCT_FROM_DATABASE=Wellsburg 4-port SATA Controller [IDE mode] - -pci:v00008086d00008D02* - ID_PRODUCT_FROM_DATABASE=Wellsburg 6-Port SATA Controller [AHCI mode] - -pci:v00008086d00008D04* - ID_PRODUCT_FROM_DATABASE=Wellsburg SATA Controller [RAID mode] - -pci:v00008086d00008D06* - ID_PRODUCT_FROM_DATABASE=Wellsburg SATA Controller [RAID mode] - -pci:v00008086d00008D08* - ID_PRODUCT_FROM_DATABASE=Wellsburg 2-port SATA Controller [IDE mode] - -pci:v00008086d00008D0E* - ID_PRODUCT_FROM_DATABASE=Wellsburg SATA Controller [RAID mode] - -pci:v00008086d00008D10* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #1 - -pci:v00008086d00008D11* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #1 - -pci:v00008086d00008D12* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #2 - -pci:v00008086d00008D13* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #2 - -pci:v00008086d00008D14* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #3 - -pci:v00008086d00008D15* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #3 - -pci:v00008086d00008D16* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #4 - -pci:v00008086d00008D17* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #4 - -pci:v00008086d00008D18* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #5 - -pci:v00008086d00008D19* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #5 - -pci:v00008086d00008D1A* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #6 - -pci:v00008086d00008D1B* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #6 - -pci:v00008086d00008D1C* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #7 - -pci:v00008086d00008D1D* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #7 - -pci:v00008086d00008D1E* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #8 - -pci:v00008086d00008D1F* - ID_PRODUCT_FROM_DATABASE=Wellsburg PCI Express Root Port #8 - -pci:v00008086d00008D20* - ID_PRODUCT_FROM_DATABASE=Wellsburg HD Audio Controller - -pci:v00008086d00008D21* - ID_PRODUCT_FROM_DATABASE=Wellsburg HD Audio Controller - -pci:v00008086d00008D22* - ID_PRODUCT_FROM_DATABASE=Wellsburg SMBus Controller - -pci:v00008086d00008D24* - ID_PRODUCT_FROM_DATABASE=Wellsburg Thermal Subsystem - -pci:v00008086d00008D26* - ID_PRODUCT_FROM_DATABASE=Wellsburg USB Enhanced Host Controller #1 - -pci:v00008086d00008D2D* - ID_PRODUCT_FROM_DATABASE=Wellsburg USB Enhanced Host Controller #2 - -pci:v00008086d00008D31* - ID_PRODUCT_FROM_DATABASE=Wellsburg USB xHCI Host Controller - -pci:v00008086d00008D33* - ID_PRODUCT_FROM_DATABASE=Wellsburg LAN Controller - -pci:v00008086d00008D34* - ID_PRODUCT_FROM_DATABASE=Wellsburg NAND Controller - -pci:v00008086d00008D3A* - ID_PRODUCT_FROM_DATABASE=Wellsburg MEI Controller #1 - -pci:v00008086d00008D3B* - ID_PRODUCT_FROM_DATABASE=Wellsburg MEI Controller #2 - -pci:v00008086d00008D3C* - ID_PRODUCT_FROM_DATABASE=Wellsburg IDE-r Controller - -pci:v00008086d00008D3D* - ID_PRODUCT_FROM_DATABASE=Wellsburg KT Controller - -pci:v00008086d00008D40* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D41* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D42* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D43* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D44* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D45* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D46* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D47* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D48* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D49* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D4A* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D4B* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D4C* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D4D* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D4E* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D4F* - ID_PRODUCT_FROM_DATABASE=Wellsburg LPC Controller - -pci:v00008086d00008D60* - ID_PRODUCT_FROM_DATABASE=Wellsburg sSATA Controller [IDE mode] - -pci:v00008086d00008D62* - ID_PRODUCT_FROM_DATABASE=Wellsburg sSATA Controller [AHCI mode] - -pci:v00008086d00008D64* - ID_PRODUCT_FROM_DATABASE=Wellsburg sSATA Controller [RAID mode] - -pci:v00008086d00008D66* - ID_PRODUCT_FROM_DATABASE=Wellsburg sSATA Controller [RAID mode] - -pci:v00008086d00008D68* - ID_PRODUCT_FROM_DATABASE=Wellsburg sSATA Controller [IDE mode] - -pci:v00008086d00008D6E* - ID_PRODUCT_FROM_DATABASE=Wellsburg sSATA Controller [RAID mode] - -pci:v00008086d00008D7C* - ID_PRODUCT_FROM_DATABASE=Wellsburg SPSR - -pci:v00008086d00008D7D* - ID_PRODUCT_FROM_DATABASE=Wellsburg MS SMBus 0 - -pci:v00008086d00008D7E* - ID_PRODUCT_FROM_DATABASE=Wellsburg MS SMBus 1 - -pci:v00008086d00008D7F* - ID_PRODUCT_FROM_DATABASE=Wellsburg MS SMBus 2 - -pci:v00008086d00009000* - ID_PRODUCT_FROM_DATABASE=IXP2000 Family Network Processor - -pci:v00008086d00009001* - ID_PRODUCT_FROM_DATABASE=IXP2400 Network Processor - -pci:v00008086d00009002* - ID_PRODUCT_FROM_DATABASE=IXP2300 Network Processor - -pci:v00008086d00009004* - ID_PRODUCT_FROM_DATABASE=IXP2800 Network Processor - -pci:v00008086d00009621* - ID_PRODUCT_FROM_DATABASE=Integrated RAID - -pci:v00008086d00009622* - ID_PRODUCT_FROM_DATABASE=Integrated RAID - -pci:v00008086d00009641* - ID_PRODUCT_FROM_DATABASE=Integrated RAID - -pci:v00008086d000096A1* - ID_PRODUCT_FROM_DATABASE=Integrated RAID - -pci:v00008086d00009C00* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [IDE mode] - -pci:v00008086d00009C01* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [IDE mode] - -pci:v00008086d00009C02* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [AHCI mode] - -pci:v00008086d00009C03* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [AHCI mode] - -pci:v00008086d00009C04* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [RAID mode] - -pci:v00008086d00009C05* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [RAID mode] - -pci:v00008086d00009C06* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [RAID mode] - -pci:v00008086d00009C07* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [RAID mode] - -pci:v00008086d00009C08* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SATA Controller 2 [IDE mode] - -pci:v00008086d00009C09* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SATA Controller 2 [IDE mode] - -pci:v00008086d00009C0A* - ID_PRODUCT_FROM_DATABASE=LynxPoint-LP SATA Controller [Reserved] - -pci:v00008086d00009C0B* - ID_PRODUCT_FROM_DATABASE=LynxPoint-LP SATA Controller [Reserved] - -pci:v00008086d00009C0C* - ID_PRODUCT_FROM_DATABASE=LynxPoint-LP SATA Controller [Reserved] - -pci:v00008086d00009C0D* - ID_PRODUCT_FROM_DATABASE=LynxPoint-LP SATA Controller [Reserved] - -pci:v00008086d00009C0E* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [RAID mode] - -pci:v00008086d00009C0F* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SATA Controller 1 [RAID mode] - -pci:v00008086d00009C10* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 1 - -pci:v00008086d00009C11* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 1 - -pci:v00008086d00009C12* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 2 - -pci:v00008086d00009C13* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 2 - -pci:v00008086d00009C14* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 3 - -pci:v00008086d00009C15* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 3 - -pci:v00008086d00009C16* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 4 - -pci:v00008086d00009C17* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 4 - -pci:v00008086d00009C18* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 5 - -pci:v00008086d00009C19* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 5 - -pci:v00008086d00009C1A* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 6 - -pci:v00008086d00009C1B* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 6 - -pci:v00008086d00009C1C* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 7 - -pci:v00008086d00009C1D* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 7 - -pci:v00008086d00009C1E* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 8 - -pci:v00008086d00009C1F* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP PCI Express Root Port 8 - -pci:v00008086d00009C20* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP HD Audio Controller - -pci:v00008086d00009C21* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP HD Audio Controller - -pci:v00008086d00009C22* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SMBus Controller - -pci:v00008086d00009C23* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP CHAP Counters - -pci:v00008086d00009C24* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP Thermal - -pci:v00008086d00009C26* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP USB EHCI #1 - -pci:v00008086d00009C2D* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP USB EHCI #2 - -pci:v00008086d00009C31* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP USB xHCI HC - -pci:v00008086d00009C35* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SDIO Controller - -pci:v00008086d00009C36* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP Audio DSP Controller - -pci:v00008086d00009C3A* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP HECI #0 - -pci:v00008086d00009C3B* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP HECI #1 - -pci:v00008086d00009C3C* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP HECI IDER - -pci:v00008086d00009C3D* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP HECI KT - -pci:v00008086d00009C40* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP LPC Controller - -pci:v00008086d00009C41* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP LPC Controller - -pci:v00008086d00009C42* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP LPC Controller - -pci:v00008086d00009C43* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP LPC Controller - -pci:v00008086d00009C44* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP LPC Controller - -pci:v00008086d00009C45* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP LPC Controller - -pci:v00008086d00009C46* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP LPC Controller - -pci:v00008086d00009C47* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP LPC Controller - -pci:v00008086d00009C60* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP Low Power Sub-System DMA - -pci:v00008086d00009C61* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP I2C Controller #0 - -pci:v00008086d00009C62* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP I2C Controller #1 - -pci:v00008086d00009C63* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP UART Controller #0 - -pci:v00008086d00009C64* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP UART Controller #1 - -pci:v00008086d00009C65* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SPI Controller #0 - -pci:v00008086d00009C66* - ID_PRODUCT_FROM_DATABASE=Lynx Point-LP SPI Controller #1 - -pci:v00008086d0000A000* - ID_PRODUCT_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge - -pci:v00008086d0000A000sv00001458sd00005000* - ID_PRODUCT_FROM_DATABASE=GA-D525TUD - -pci:v00008086d0000A000sv00008086sd00004F4D* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO - -pci:v00008086d0000A000sv00008086sd0000544B* - ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT - -pci:v00008086d0000A001* - ID_PRODUCT_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller - -pci:v00008086d0000A001sv00001458sd0000D000* - ID_PRODUCT_FROM_DATABASE=GA-D525TUD - -pci:v00008086d0000A001sv00008086sd00004F4D* - ID_PRODUCT_FROM_DATABASE=DeskTop Board D510MO - -pci:v00008086d0000A001sv00008086sd0000544B* - ID_PRODUCT_FROM_DATABASE=Desktop Board D425KT - -pci:v00008086d0000A002* - ID_PRODUCT_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller - -pci:v00008086d0000A003* - ID_PRODUCT_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter - -pci:v00008086d0000A010* - ID_PRODUCT_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx DMI Bridge - -pci:v00008086d0000A010sv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d0000A011* - ID_PRODUCT_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller - -pci:v00008086d0000A011sv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d0000A012* - ID_PRODUCT_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx Integrated Graphics Controller - -pci:v00008086d0000A012sv0000144Dsd0000C072* - ID_PRODUCT_FROM_DATABASE=Notebook N150P - -pci:v00008086d0000A013* - ID_PRODUCT_FROM_DATABASE=Atom Processor D4xx/D5xx/N4xx/N5xx CHAPS counter - -pci:v00008086d0000A620* - ID_PRODUCT_FROM_DATABASE=6400/6402 Advanced Memory Buffer (AMB) - -pci:v00008086d0000B152* - ID_PRODUCT_FROM_DATABASE=21152 PCI-to-PCI Bridge - -pci:v00008086d0000B152sv00008086sd0000B152* - ID_PRODUCT_FROM_DATABASE=21152 PCI-to-PCI Bridge - -pci:v00008086d0000B154* - ID_PRODUCT_FROM_DATABASE=21154 PCI-to-PCI Bridge - -pci:v00008086d0000B555* - ID_PRODUCT_FROM_DATABASE=21555 Non transparent PCI-to-PCI Bridge - -pci:v00008086d0000B555sv000012C7sd00005005* - ID_PRODUCT_FROM_DATABASE=SS7HD PCI Adaptor Card - -pci:v00008086d0000B555sv000012C7sd00005006* - ID_PRODUCT_FROM_DATABASE=SS7HDC cPCI Adaptor Card - -pci:v00008086d0000B555sv000012D9sd0000000A* - ID_PRODUCT_FROM_DATABASE=PCI VoIP Gateway - -pci:v00008086d0000B555sv00004C53sd00001050* - ID_PRODUCT_FROM_DATABASE=CT7 mainboard - -pci:v00008086d0000B555sv00004C53sd00001051* - ID_PRODUCT_FROM_DATABASE=CE7 mainboard - -pci:v00008086d0000B555sv0000E4BFsd00001000* - ID_PRODUCT_FROM_DATABASE=CC8-1-BLUES - -pci:v00008086d0000D130* - ID_PRODUCT_FROM_DATABASE=Core Processor DMI - -pci:v00008086d0000D131* - ID_PRODUCT_FROM_DATABASE=Core Processor DMI - -pci:v00008086d0000D131sv00001028sd000002DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 980 - -pci:v00008086d0000D132* - ID_PRODUCT_FROM_DATABASE=Core Processor DMI - -pci:v00008086d0000D132sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d0000D133* - ID_PRODUCT_FROM_DATABASE=Core Processor DMI - -pci:v00008086d0000D134* - ID_PRODUCT_FROM_DATABASE=Core Processor DMI - -pci:v00008086d0000D135* - ID_PRODUCT_FROM_DATABASE=Core Processor DMI - -pci:v00008086d0000D136* - ID_PRODUCT_FROM_DATABASE=Core Processor DMI - -pci:v00008086d0000D137* - ID_PRODUCT_FROM_DATABASE=Core Processor DMI - -pci:v00008086d0000D138* - ID_PRODUCT_FROM_DATABASE=Core Processor PCI Express Root Port 1 - -pci:v00008086d0000D138sv00001028sd000002DA* - ID_PRODUCT_FROM_DATABASE=OptiPlex 980 - -pci:v00008086d0000D138sv00001028sd0000040B* - ID_PRODUCT_FROM_DATABASE=Latitude E6510 - -pci:v00008086d0000D139* - ID_PRODUCT_FROM_DATABASE=Core Processor PCI Express Root Port 2 - -pci:v00008086d0000D13A* - ID_PRODUCT_FROM_DATABASE=Core Processor PCI Express Root Port 3 - -pci:v00008086d0000D13B* - ID_PRODUCT_FROM_DATABASE=Core Processor PCI Express Root Port 4 - -pci:v00008086d0000D150* - ID_PRODUCT_FROM_DATABASE=Core Processor QPI Link - -pci:v00008086d0000D151* - ID_PRODUCT_FROM_DATABASE=Core Processor QPI Routing and Protocol Registers - -pci:v00008086d0000D155* - ID_PRODUCT_FROM_DATABASE=Core Processor System Management Registers - -pci:v00008086d0000D156* - ID_PRODUCT_FROM_DATABASE=Core Processor Semaphore and Scratchpad Registers - -pci:v00008086d0000D157* - ID_PRODUCT_FROM_DATABASE=Core Processor System Control and Status Registers - -pci:v00008086d0000D158* - ID_PRODUCT_FROM_DATABASE=Core Processor Miscellaneous Registers - -pci:v000080EE* - ID_VENDOR_FROM_DATABASE=InnoTek Systemberatung GmbH - -pci:v000080EEd0000BEEF* - ID_PRODUCT_FROM_DATABASE=VirtualBox Graphics Adapter - -pci:v000080EEd0000CAFE* - ID_PRODUCT_FROM_DATABASE=VirtualBox Guest Service - -pci:v00008322* - ID_VENDOR_FROM_DATABASE=Sodick America Corp. - -pci:v00008384* - ID_VENDOR_FROM_DATABASE=SigmaTel - -pci:v00008401* - ID_VENDOR_FROM_DATABASE=TRENDware International Inc. - -pci:v00008686* - ID_VENDOR_FROM_DATABASE=ScaleMP - -pci:v00008686d00001010* - ID_PRODUCT_FROM_DATABASE=vSMPowered system controller [vSMP CTL] - -pci:v00008800* - ID_VENDOR_FROM_DATABASE=Trigem Computer Inc. - -pci:v00008800d00002008* - ID_PRODUCT_FROM_DATABASE=Video assistent component - -pci:v00008866* - ID_VENDOR_FROM_DATABASE=T-Square Design Inc. - -pci:v00008888* - ID_VENDOR_FROM_DATABASE=Silicon Magic - -pci:v00008912* - ID_VENDOR_FROM_DATABASE=TRX - -pci:v00008C4A* - ID_VENDOR_FROM_DATABASE=Winbond - -pci:v00008C4Ad00001980* - ID_PRODUCT_FROM_DATABASE=W89C940 misprogrammed [ne2k] - -pci:v00008E0E* - ID_VENDOR_FROM_DATABASE=Computone Corporation - -pci:v00008E2E* - ID_VENDOR_FROM_DATABASE=KTI - -pci:v00008E2Ed00003000* - ID_PRODUCT_FROM_DATABASE=ET32P2 - -pci:v00009004* - ID_VENDOR_FROM_DATABASE=Adaptec - -pci:v00009004d00000078* - ID_PRODUCT_FROM_DATABASE=AHA-2940U_CN - -pci:v00009004d00001078* - ID_PRODUCT_FROM_DATABASE=AIC-7810 - -pci:v00009004d00001160* - ID_PRODUCT_FROM_DATABASE=AIC-1160 [Family Fibre Channel Adapter] - -pci:v00009004d00002178* - ID_PRODUCT_FROM_DATABASE=AIC-7821 - -pci:v00009004d00003860* - ID_PRODUCT_FROM_DATABASE=AHA-2930CU - -pci:v00009004d00003B78* - ID_PRODUCT_FROM_DATABASE=AHA-4844W/4844UW - -pci:v00009004d00005075* - ID_PRODUCT_FROM_DATABASE=AIC-755x - -pci:v00009004d00005078* - ID_PRODUCT_FROM_DATABASE=AIC-7850 - -pci:v00009004d00005078sv00009004sd00007850* - ID_PRODUCT_FROM_DATABASE=AHA-2904/Integrated AIC-7850 - -pci:v00009004d00005175* - ID_PRODUCT_FROM_DATABASE=AIC-755x - -pci:v00009004d00005178* - ID_PRODUCT_FROM_DATABASE=AIC-7851 - -pci:v00009004d00005275* - ID_PRODUCT_FROM_DATABASE=AIC-755x - -pci:v00009004d00005278* - ID_PRODUCT_FROM_DATABASE=AIC-7852 - -pci:v00009004d00005375* - ID_PRODUCT_FROM_DATABASE=AIC-755x - -pci:v00009004d00005378* - ID_PRODUCT_FROM_DATABASE=AIC-7850 - -pci:v00009004d00005475* - ID_PRODUCT_FROM_DATABASE=AIC-755x - -pci:v00009004d00005478* - ID_PRODUCT_FROM_DATABASE=AIC-7850 - -pci:v00009004d00005575* - ID_PRODUCT_FROM_DATABASE=AVA-2930 - -pci:v00009004d00005578* - ID_PRODUCT_FROM_DATABASE=AIC-7855 - -pci:v00009004d00005647* - ID_PRODUCT_FROM_DATABASE=ANA-7711 TCP Offload Engine - -pci:v00009004d00005647sv00009004sd00007710* - ID_PRODUCT_FROM_DATABASE=ANA-7711F TCP Offload Engine - Optical - -pci:v00009004d00005647sv00009004sd00007711* - ID_PRODUCT_FROM_DATABASE=ANA-7711LP TCP Offload Engine - Copper - -pci:v00009004d00005675* - ID_PRODUCT_FROM_DATABASE=AIC-755x - -pci:v00009004d00005678* - ID_PRODUCT_FROM_DATABASE=AIC-7856 - -pci:v00009004d00005775* - ID_PRODUCT_FROM_DATABASE=AIC-755x - -pci:v00009004d00005778* - ID_PRODUCT_FROM_DATABASE=AIC-7850 - -pci:v00009004d00005800* - ID_PRODUCT_FROM_DATABASE=AIC-5800 - -pci:v00009004d00005900* - ID_PRODUCT_FROM_DATABASE=ANA-5910/5930/5940 ATM155 & 25 LAN Adapter - -pci:v00009004d00005905* - ID_PRODUCT_FROM_DATABASE=ANA-5910A/5930A/5940A ATM Adapter - -pci:v00009004d00006038* - ID_PRODUCT_FROM_DATABASE=AIC-3860 - -pci:v00009004d00006075* - ID_PRODUCT_FROM_DATABASE=AIC-1480 / APA-1480 - -pci:v00009004d00006075sv00009004sd00007560* - ID_PRODUCT_FROM_DATABASE=AIC-1480 / APA-1480 Cardbus - -pci:v00009004d00006078* - ID_PRODUCT_FROM_DATABASE=AIC-7860 - -pci:v00009004d00006178* - ID_PRODUCT_FROM_DATABASE=AIC-7861 - -pci:v00009004d00006178sv00009004sd00007861* - ID_PRODUCT_FROM_DATABASE=AHA-2940AU Single - -pci:v00009004d00006278* - ID_PRODUCT_FROM_DATABASE=AIC-7860 - -pci:v00009004d00006378* - ID_PRODUCT_FROM_DATABASE=AIC-7860 - -pci:v00009004d00006478* - ID_PRODUCT_FROM_DATABASE=AIC-786x - -pci:v00009004d00006578* - ID_PRODUCT_FROM_DATABASE=AIC-786x - -pci:v00009004d00006678* - ID_PRODUCT_FROM_DATABASE=AIC-786x - -pci:v00009004d00006778* - ID_PRODUCT_FROM_DATABASE=AIC-786x - -pci:v00009004d00006915* - ID_PRODUCT_FROM_DATABASE=ANA620xx/ANA69011A - -pci:v00009004d00006915sv00009004sd00000008* - ID_PRODUCT_FROM_DATABASE=ANA69011A/TX 10/100 - -pci:v00009004d00006915sv00009004sd00000009* - ID_PRODUCT_FROM_DATABASE=ANA69011A/TX 10/100 - -pci:v00009004d00006915sv00009004sd00000010* - ID_PRODUCT_FROM_DATABASE=ANA62022 2-port 10/100 - -pci:v00009004d00006915sv00009004sd00000018* - ID_PRODUCT_FROM_DATABASE=ANA62044 4-port 10/100 - -pci:v00009004d00006915sv00009004sd00000019* - ID_PRODUCT_FROM_DATABASE=ANA62044 4-port 10/100 - -pci:v00009004d00006915sv00009004sd00000020* - ID_PRODUCT_FROM_DATABASE=ANA62022 2-port 10/100 - -pci:v00009004d00006915sv00009004sd00000028* - ID_PRODUCT_FROM_DATABASE=ANA69011A/TX 10/100 - -pci:v00009004d00006915sv00009004sd00008008* - ID_PRODUCT_FROM_DATABASE=ANA69011A/TX 64 bit 10/100 - -pci:v00009004d00006915sv00009004sd00008009* - ID_PRODUCT_FROM_DATABASE=ANA69011A/TX 64 bit 10/100 - -pci:v00009004d00006915sv00009004sd00008010* - ID_PRODUCT_FROM_DATABASE=ANA62022 2-port 64 bit 10/100 - -pci:v00009004d00006915sv00009004sd00008018* - ID_PRODUCT_FROM_DATABASE=ANA62044 4-port 64 bit 10/100 - -pci:v00009004d00006915sv00009004sd00008019* - ID_PRODUCT_FROM_DATABASE=ANA62044 4-port 64 bit 10/100 - -pci:v00009004d00006915sv00009004sd00008020* - ID_PRODUCT_FROM_DATABASE=ANA62022 2-port 64 bit 10/100 - -pci:v00009004d00006915sv00009004sd00008028* - ID_PRODUCT_FROM_DATABASE=ANA69011A/TX 64 bit 10/100 - -pci:v00009004d00007078* - ID_PRODUCT_FROM_DATABASE=AHA-294x / AIC-7870 - -pci:v00009004d00007178* - ID_PRODUCT_FROM_DATABASE=AHA-2940/2940W / AIC-7871 - -pci:v00009004d00007278* - ID_PRODUCT_FROM_DATABASE=AHA-3940/3940W / AIC-7872 - -pci:v00009004d00007378* - ID_PRODUCT_FROM_DATABASE=AHA-3985 / AIC-7873 - -pci:v00009004d00007478* - ID_PRODUCT_FROM_DATABASE=AHA-2944/2944W / AIC-7874 - -pci:v00009004d00007578* - ID_PRODUCT_FROM_DATABASE=AHA-3944/3944W / AIC-7875 - -pci:v00009004d00007678* - ID_PRODUCT_FROM_DATABASE=AHA-4944W/UW / AIC-7876 - -pci:v00009004d00007710* - ID_PRODUCT_FROM_DATABASE=ANA-7711F Network Accelerator Card (NAC) - Optical - -pci:v00009004d00007711* - ID_PRODUCT_FROM_DATABASE=ANA-7711C Network Accelerator Card (NAC) - Copper - -pci:v00009004d00007778* - ID_PRODUCT_FROM_DATABASE=AIC-787x - -pci:v00009004d00007810* - ID_PRODUCT_FROM_DATABASE=AIC-7810 - -pci:v00009004d00007815* - ID_PRODUCT_FROM_DATABASE=AIC-7815 RAID+Memory Controller IC - -pci:v00009004d00007815sv00009004sd00007815* - ID_PRODUCT_FROM_DATABASE=ARO-1130U2 RAID Controller - -pci:v00009004d00007815sv00009004sd00007840* - ID_PRODUCT_FROM_DATABASE=AIC-7815 RAID+Memory Controller IC - -pci:v00009004d00007850* - ID_PRODUCT_FROM_DATABASE=AIC-7850 - -pci:v00009004d00007855* - ID_PRODUCT_FROM_DATABASE=AHA-2930 - -pci:v00009004d00007860* - ID_PRODUCT_FROM_DATABASE=AIC-7860 - -pci:v00009004d00007870* - ID_PRODUCT_FROM_DATABASE=AIC-7870 - -pci:v00009004d00007871* - ID_PRODUCT_FROM_DATABASE=AHA-2940 - -pci:v00009004d00007872* - ID_PRODUCT_FROM_DATABASE=AHA-3940 - -pci:v00009004d00007873* - ID_PRODUCT_FROM_DATABASE=AHA-3980 - -pci:v00009004d00007874* - ID_PRODUCT_FROM_DATABASE=AHA-2944 - -pci:v00009004d00007880* - ID_PRODUCT_FROM_DATABASE=AIC-7880P - -pci:v00009004d00007890* - ID_PRODUCT_FROM_DATABASE=AIC-7890 - -pci:v00009004d00007891* - ID_PRODUCT_FROM_DATABASE=AIC-789x - -pci:v00009004d00007892* - ID_PRODUCT_FROM_DATABASE=AIC-789x - -pci:v00009004d00007893* - ID_PRODUCT_FROM_DATABASE=AIC-789x - -pci:v00009004d00007894* - ID_PRODUCT_FROM_DATABASE=AIC-789x - -pci:v00009004d00007895* - ID_PRODUCT_FROM_DATABASE=AHA-2940U/UW / AHA-39xx / AIC-7895 - -pci:v00009004d00007895sv00009004sd00007890* - ID_PRODUCT_FROM_DATABASE=AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B - -pci:v00009004d00007895sv00009004sd00007891* - ID_PRODUCT_FROM_DATABASE=AHA-2940U/2940UW Dual - -pci:v00009004d00007895sv00009004sd00007892* - ID_PRODUCT_FROM_DATABASE=AHA-3940AU/AUW/AUWD/UWD - -pci:v00009004d00007895sv00009004sd00007894* - ID_PRODUCT_FROM_DATABASE=AHA-3944AUWD - -pci:v00009004d00007895sv00009004sd00007895* - ID_PRODUCT_FROM_DATABASE=AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B - -pci:v00009004d00007895sv00009004sd00007896* - ID_PRODUCT_FROM_DATABASE=AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B - -pci:v00009004d00007895sv00009004sd00007897* - ID_PRODUCT_FROM_DATABASE=AHA-2940U/2940UW Dual AHA-394xAU/AUW/AUWD AIC-7895B - -pci:v00009004d00007896* - ID_PRODUCT_FROM_DATABASE=AIC-789x - -pci:v00009004d00007897* - ID_PRODUCT_FROM_DATABASE=AIC-789x - -pci:v00009004d00008078* - ID_PRODUCT_FROM_DATABASE=AIC-7880U - -pci:v00009004d00008078sv00009004sd00007880* - ID_PRODUCT_FROM_DATABASE=AIC-7880P Ultra/Ultra Wide SCSI Chipset - -pci:v00009004d00008178* - ID_PRODUCT_FROM_DATABASE=AHA-2940U/UW/D / AIC-7881U - -pci:v00009004d00008178sv00009004sd00007881* - ID_PRODUCT_FROM_DATABASE=AHA-2940UW SCSI Host Adapter - -pci:v00009004d00008278* - ID_PRODUCT_FROM_DATABASE=AHA-3940U/UW/UWD / AIC-7882U - -pci:v00009004d00008378* - ID_PRODUCT_FROM_DATABASE=AHA-3940U/UW / AIC-7883U - -pci:v00009004d00008478* - ID_PRODUCT_FROM_DATABASE=AHA-2944UW / AIC-7884U - -pci:v00009004d00008578* - ID_PRODUCT_FROM_DATABASE=AHA-3944U/UWD / AIC-7885 - -pci:v00009004d00008678* - ID_PRODUCT_FROM_DATABASE=AHA-4944UW / AIC-7886 - -pci:v00009004d00008778* - ID_PRODUCT_FROM_DATABASE=AHA-2940UW Pro / AIC-788x - -pci:v00009004d00008778sv00009004sd00007887* - ID_PRODUCT_FROM_DATABASE=2940UW Pro Ultra-Wide SCSI Controller - -pci:v00009004d00008878* - ID_PRODUCT_FROM_DATABASE=AHA-2930UW / AIC-7888 - -pci:v00009004d00008878sv00009004sd00007888* - ID_PRODUCT_FROM_DATABASE=AHA-2930UW SCSI Controller - -pci:v00009004d00008B78* - ID_PRODUCT_FROM_DATABASE=ABA-1030 - -pci:v00009004d0000EC78* - ID_PRODUCT_FROM_DATABASE=AHA-4944W/UW - -pci:v00009005* - ID_VENDOR_FROM_DATABASE=Adaptec - -pci:v00009005d00000010* - ID_PRODUCT_FROM_DATABASE=AHA-2940U2/U2W - -pci:v00009005d00000010sv00009005sd00002180* - ID_PRODUCT_FROM_DATABASE=AHA-2940U2 SCSI Controller - -pci:v00009005d00000010sv00009005sd00008100* - ID_PRODUCT_FROM_DATABASE=AHA-2940U2B SCSI Controller - -pci:v00009005d00000010sv00009005sd0000A100* - ID_PRODUCT_FROM_DATABASE=AHA-2940U2B SCSI Controller - -pci:v00009005d00000010sv00009005sd0000A180* - ID_PRODUCT_FROM_DATABASE=AHA-2940U2W SCSI Controller - -pci:v00009005d00000010sv00009005sd0000E100* - ID_PRODUCT_FROM_DATABASE=AHA-2950U2B SCSI Controller - -pci:v00009005d00000011* - ID_PRODUCT_FROM_DATABASE=AHA-2930U2 - -pci:v00009005d00000013* - ID_PRODUCT_FROM_DATABASE=78902 - -pci:v00009005d00000013sv00009005sd00000003* - ID_PRODUCT_FROM_DATABASE=AAA-131U2 Array1000 1 Channel RAID Controller - -pci:v00009005d00000013sv00009005sd0000000F* - ID_PRODUCT_FROM_DATABASE=AIC7890_ARO - -pci:v00009005d0000001F* - ID_PRODUCT_FROM_DATABASE=AHA-2940U2/U2W / 7890/7891 - -pci:v00009005d0000001Fsv00009005sd0000000F* - ID_PRODUCT_FROM_DATABASE=2940U2W SCSI Controller - -pci:v00009005d0000001Fsv00009005sd0000A180* - ID_PRODUCT_FROM_DATABASE=2940U2W SCSI Controller - -pci:v00009005d00000020* - ID_PRODUCT_FROM_DATABASE=AIC-7890 - -pci:v00009005d0000002F* - ID_PRODUCT_FROM_DATABASE=AIC-7890 - -pci:v00009005d00000030* - ID_PRODUCT_FROM_DATABASE=AIC-7890 - -pci:v00009005d0000003F* - ID_PRODUCT_FROM_DATABASE=AIC-7890 - -pci:v00009005d00000050* - ID_PRODUCT_FROM_DATABASE=AHA-3940U2x/395U2x - -pci:v00009005d00000050sv00009005sd0000F500* - ID_PRODUCT_FROM_DATABASE=AHA-3950U2B - -pci:v00009005d00000050sv00009005sd0000FFFF* - ID_PRODUCT_FROM_DATABASE=AHA-3950U2B - -pci:v00009005d00000051* - ID_PRODUCT_FROM_DATABASE=AHA-3950U2D - -pci:v00009005d00000051sv00009005sd0000B500* - ID_PRODUCT_FROM_DATABASE=AHA-3950U2D - -pci:v00009005d00000053* - ID_PRODUCT_FROM_DATABASE=AIC-7896 SCSI Controller - -pci:v00009005d00000053sv00009005sd0000FFFF* - ID_PRODUCT_FROM_DATABASE=AIC-7896 SCSI Controller mainboard implementation - -pci:v00009005d0000005F* - ID_PRODUCT_FROM_DATABASE=AIC-7896U2/7897U2 - -pci:v00009005d00000080* - ID_PRODUCT_FROM_DATABASE=AIC-7892A U160/m - -pci:v00009005d00000080sv00000E11sd0000E2A0* - ID_PRODUCT_FROM_DATABASE=Compaq 64-Bit/66MHz Wide Ultra3 SCSI Adapter - -pci:v00009005d00000080sv00009005sd00006220* - ID_PRODUCT_FROM_DATABASE=AHA-29160C - -pci:v00009005d00000080sv00009005sd000062A0* - ID_PRODUCT_FROM_DATABASE=29160N Ultra160 SCSI Controller - -pci:v00009005d00000080sv00009005sd0000E220* - ID_PRODUCT_FROM_DATABASE=29160LP Low Profile Ultra160 SCSI Controller - -pci:v00009005d00000080sv00009005sd0000E2A0* - ID_PRODUCT_FROM_DATABASE=29160 Ultra160 SCSI Controller - -pci:v00009005d00000081* - ID_PRODUCT_FROM_DATABASE=AIC-7892B U160/m - -pci:v00009005d00000081sv00009005sd000062A1* - ID_PRODUCT_FROM_DATABASE=19160 Ultra160 SCSI Controller - -pci:v00009005d00000083* - ID_PRODUCT_FROM_DATABASE=AIC-7892D U160/m - -pci:v00009005d0000008F* - ID_PRODUCT_FROM_DATABASE=AIC-7892P U160/m - -pci:v00009005d0000008Fsv00001179sd00000001* - ID_PRODUCT_FROM_DATABASE=Magnia Z310 - -pci:v00009005d0000008Fsv000015D9sd00009005* - ID_PRODUCT_FROM_DATABASE=Onboard SCSI Host Adapter - -pci:v00009005d00000092* - ID_PRODUCT_FROM_DATABASE=AVC-2010 [VideoH!] - -pci:v00009005d00000093* - ID_PRODUCT_FROM_DATABASE=AVC-2410 [VideoH!] - -pci:v00009005d000000C0* - ID_PRODUCT_FROM_DATABASE=AHA-3960D / AIC-7899A U160/m - -pci:v00009005d000000C0sv00000E11sd0000F620* - ID_PRODUCT_FROM_DATABASE=Compaq 64-Bit/66MHz Dual Channel Wide Ultra3 SCSI Adapter - -pci:v00009005d000000C0sv00009005sd0000F620* - ID_PRODUCT_FROM_DATABASE=AHA-3960D U160/m - -pci:v00009005d000000C1* - ID_PRODUCT_FROM_DATABASE=AIC-7899B U160/m - -pci:v00009005d000000C3* - ID_PRODUCT_FROM_DATABASE=AIC-7899D U160/m - -pci:v00009005d000000C5* - ID_PRODUCT_FROM_DATABASE=RAID subsystem HBA - -pci:v00009005d000000C5sv00001028sd000000C5* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2400,2500,2550,4400 - -pci:v00009005d000000CF* - ID_PRODUCT_FROM_DATABASE=AIC-7899P U160/m - -pci:v00009005d000000CFsv00001028sd000000CE* - ID_PRODUCT_FROM_DATABASE=PowerEdge 1400 - -pci:v00009005d000000CFsv00001028sd000000D1* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2550 - -pci:v00009005d000000CFsv00001028sd000000D9* - ID_PRODUCT_FROM_DATABASE=PowerEdge 2500 - -pci:v00009005d000000CFsv000010F1sd00002462* - ID_PRODUCT_FROM_DATABASE=Thunder K7 S2462 - -pci:v00009005d000000CFsv000015D9sd00009005* - ID_PRODUCT_FROM_DATABASE=Onboard SCSI Host Adapter - -pci:v00009005d000000CFsv00008086sd00003411* - ID_PRODUCT_FROM_DATABASE=SDS2 Mainboard - -pci:v00009005d00000241* - ID_PRODUCT_FROM_DATABASE=Serial ATA II RAID 1420SA - -pci:v00009005d00000242* - ID_PRODUCT_FROM_DATABASE=Serial ATA II RAID 1220SA - -pci:v00009005d00000243* - ID_PRODUCT_FROM_DATABASE=Serial ATA II RAID 1430SA - -pci:v00009005d00000244* - ID_PRODUCT_FROM_DATABASE=eSATA II RAID 1225SA - -pci:v00009005d00000250* - ID_PRODUCT_FROM_DATABASE=ServeRAID Controller - -pci:v00009005d00000250sv00001014sd00000279* - ID_PRODUCT_FROM_DATABASE=ServeRAID 6M - -pci:v00009005d00000250sv00001014sd0000028C* - ID_PRODUCT_FROM_DATABASE=ServeRAID 6i/6i+ - -pci:v00009005d00000250sv00001014sd0000028E* - ID_PRODUCT_FROM_DATABASE=ServeRAID 7k - -pci:v00009005d00000279* - ID_PRODUCT_FROM_DATABASE=ServeRAID 6M - -pci:v00009005d00000283* - ID_PRODUCT_FROM_DATABASE=AAC-RAID - -pci:v00009005d00000283sv00009005sd00000283* - ID_PRODUCT_FROM_DATABASE=Catapult - -pci:v00009005d00000284* - ID_PRODUCT_FROM_DATABASE=AAC-RAID - -pci:v00009005d00000284sv00009005sd00000284* - ID_PRODUCT_FROM_DATABASE=Tomcat - -pci:v00009005d00000285* - ID_PRODUCT_FROM_DATABASE=AAC-RAID - -pci:v00009005d00000285sv00000E11sd00000295* - ID_PRODUCT_FROM_DATABASE=SATA 6Ch (Bearcat) - -pci:v00009005d00000285sv00001014sd000002F2* - ID_PRODUCT_FROM_DATABASE=ServeRAID 8i - -pci:v00009005d00000285sv00001028sd00000287* - ID_PRODUCT_FROM_DATABASE=PowerEdge Expandable RAID Controller 320/DC - -pci:v00009005d00000285sv00001028sd00000291* - ID_PRODUCT_FROM_DATABASE=CERC SATA RAID 2 PCI SATA 6ch (DellCorsair) - -pci:v00009005d00000285sv0000103Csd00003227* - ID_PRODUCT_FROM_DATABASE=AAR-2610SA - -pci:v00009005d00000285sv0000108Esd00000286* - ID_PRODUCT_FROM_DATABASE=STK RAID INT - -pci:v00009005d00000285sv0000108Esd00000287* - ID_PRODUCT_FROM_DATABASE=STK RAID EXT - -pci:v00009005d00000285sv0000108Esd00007AAC* - ID_PRODUCT_FROM_DATABASE=STK RAID REM - -pci:v00009005d00000285sv0000108Esd00007AAE* - ID_PRODUCT_FROM_DATABASE=STK RAID EX - -pci:v00009005d00000285sv000015D9sd000002B5* - ID_PRODUCT_FROM_DATABASE=SMC AOC-USAS-S4i - -pci:v00009005d00000285sv000015D9sd000002B6* - ID_PRODUCT_FROM_DATABASE=SMC AOC-USAS-S8i - -pci:v00009005d00000285sv000015D9sd000002C9* - ID_PRODUCT_FROM_DATABASE=SMC AOC-USAS-S4iR - -pci:v00009005d00000285sv000015D9sd000002CA* - ID_PRODUCT_FROM_DATABASE=SMC AOC-USAS-S8iR - -pci:v00009005d00000285sv000015D9sd000002D2* - ID_PRODUCT_FROM_DATABASE=SMC AOC-USAS-S8i-LP - -pci:v00009005d00000285sv000015D9sd000002D3* - ID_PRODUCT_FROM_DATABASE=SMC AOC-USAS-S8iR-LP - -pci:v00009005d00000285sv000017AAsd00000286* - ID_PRODUCT_FROM_DATABASE=Legend S220 (Legend Crusader) - -pci:v00009005d00000285sv000017AAsd00000287* - ID_PRODUCT_FROM_DATABASE=Legend S230 (Legend Vulcan) - -pci:v00009005d00000285sv00009005sd00000285* - ID_PRODUCT_FROM_DATABASE=2200S (Vulcan) - -pci:v00009005d00000285sv00009005sd00000286* - ID_PRODUCT_FROM_DATABASE=2120S (Crusader) - -pci:v00009005d00000285sv00009005sd00000287* - ID_PRODUCT_FROM_DATABASE=2200S (Vulcan-2m) - -pci:v00009005d00000285sv00009005sd00000288* - ID_PRODUCT_FROM_DATABASE=3230S (Harrier) - -pci:v00009005d00000285sv00009005sd00000289* - ID_PRODUCT_FROM_DATABASE=3240S (Tornado) - -pci:v00009005d00000285sv00009005sd0000028A* - ID_PRODUCT_FROM_DATABASE=ASR-2020ZCR - -pci:v00009005d00000285sv00009005sd0000028B* - ID_PRODUCT_FROM_DATABASE=ASR-2025ZCR (Terminator) - -pci:v00009005d00000285sv00009005sd0000028E* - ID_PRODUCT_FROM_DATABASE=ASR-2020SA (Skyhawk) - -pci:v00009005d00000285sv00009005sd0000028F* - ID_PRODUCT_FROM_DATABASE=ASR-2025SA - -pci:v00009005d00000285sv00009005sd00000290* - ID_PRODUCT_FROM_DATABASE=AAR-2410SA PCI SATA 4ch (Jaguar II) - -pci:v00009005d00000285sv00009005sd00000292* - ID_PRODUCT_FROM_DATABASE=AAR-2810SA PCI SATA 8ch (Corsair-8) - -pci:v00009005d00000285sv00009005sd00000293* - ID_PRODUCT_FROM_DATABASE=AAR-21610SA PCI SATA 16ch (Corsair-16) - -pci:v00009005d00000285sv00009005sd00000294* - ID_PRODUCT_FROM_DATABASE=ESD SO-DIMM PCI-X SATA ZCR (Prowler) - -pci:v00009005d00000285sv00009005sd00000296* - ID_PRODUCT_FROM_DATABASE=ASR-2240S - -pci:v00009005d00000285sv00009005sd00000297* - ID_PRODUCT_FROM_DATABASE=ASR-4005SAS - -pci:v00009005d00000285sv00009005sd00000298* - ID_PRODUCT_FROM_DATABASE=ASR-4000 - -pci:v00009005d00000285sv00009005sd00000299* - ID_PRODUCT_FROM_DATABASE=ASR-4800SAS - -pci:v00009005d00000285sv00009005sd0000029A* - ID_PRODUCT_FROM_DATABASE=4805SAS - -pci:v00009005d00000285sv00009005sd000002A4* - ID_PRODUCT_FROM_DATABASE=ICP ICP9085LI - -pci:v00009005d00000285sv00009005sd000002A5* - ID_PRODUCT_FROM_DATABASE=ICP ICP5085BR - -pci:v00009005d00000285sv00009005sd000002B5* - ID_PRODUCT_FROM_DATABASE=ASR5800 - -pci:v00009005d00000285sv00009005sd000002B6* - ID_PRODUCT_FROM_DATABASE=ASR5805 - -pci:v00009005d00000285sv00009005sd000002B7* - ID_PRODUCT_FROM_DATABASE=ASR5808 - -pci:v00009005d00000285sv00009005sd000002B8* - ID_PRODUCT_FROM_DATABASE=ICP5445SL - -pci:v00009005d00000285sv00009005sd000002B9* - ID_PRODUCT_FROM_DATABASE=ICP5085SL - -pci:v00009005d00000285sv00009005sd000002BA* - ID_PRODUCT_FROM_DATABASE=ICP5805SL - -pci:v00009005d00000285sv00009005sd000002BB* - ID_PRODUCT_FROM_DATABASE=3405 - -pci:v00009005d00000285sv00009005sd000002BC* - ID_PRODUCT_FROM_DATABASE=3805 - -pci:v00009005d00000285sv00009005sd000002BD* - ID_PRODUCT_FROM_DATABASE=31205 - -pci:v00009005d00000285sv00009005sd000002BE* - ID_PRODUCT_FROM_DATABASE=31605 - -pci:v00009005d00000285sv00009005sd000002BF* - ID_PRODUCT_FROM_DATABASE=ICP ICP5045BL - -pci:v00009005d00000285sv00009005sd000002C0* - ID_PRODUCT_FROM_DATABASE=ICP ICP5085BL - -pci:v00009005d00000285sv00009005sd000002C1* - ID_PRODUCT_FROM_DATABASE=ICP ICP5125BR - -pci:v00009005d00000285sv00009005sd000002C2* - ID_PRODUCT_FROM_DATABASE=ICP ICP5165BR - -pci:v00009005d00000285sv00009005sd000002C3* - ID_PRODUCT_FROM_DATABASE=51205 - -pci:v00009005d00000285sv00009005sd000002C4* - ID_PRODUCT_FROM_DATABASE=51605 - -pci:v00009005d00000285sv00009005sd000002C5* - ID_PRODUCT_FROM_DATABASE=ICP ICP5125SL - -pci:v00009005d00000285sv00009005sd000002C6* - ID_PRODUCT_FROM_DATABASE=ICP ICP5165SL - -pci:v00009005d00000285sv00009005sd000002C7* - ID_PRODUCT_FROM_DATABASE=3085 - -pci:v00009005d00000285sv00009005sd000002C8* - ID_PRODUCT_FROM_DATABASE=ICP5805BL - -pci:v00009005d00000285sv00009005sd000002CE* - ID_PRODUCT_FROM_DATABASE=51245 - -pci:v00009005d00000285sv00009005sd000002CF* - ID_PRODUCT_FROM_DATABASE=51645 - -pci:v00009005d00000285sv00009005sd000002D0* - ID_PRODUCT_FROM_DATABASE=52445 - -pci:v00009005d00000285sv00009005sd000002D1* - ID_PRODUCT_FROM_DATABASE=5405 - -pci:v00009005d00000285sv00009005sd000002D4* - ID_PRODUCT_FROM_DATABASE=ASR-2045 - -pci:v00009005d00000285sv00009005sd000002D5* - ID_PRODUCT_FROM_DATABASE=ASR-2405 - -pci:v00009005d00000285sv00009005sd000002D6* - ID_PRODUCT_FROM_DATABASE=ASR-2445 - -pci:v00009005d00000285sv00009005sd000002D7* - ID_PRODUCT_FROM_DATABASE=ASR-2805 - -pci:v00009005d00000285sv00009005sd000002D8* - ID_PRODUCT_FROM_DATABASE=5405G - -pci:v00009005d00000285sv00009005sd000002D9* - ID_PRODUCT_FROM_DATABASE=5445G - -pci:v00009005d00000285sv00009005sd000002DA* - ID_PRODUCT_FROM_DATABASE=5805G - -pci:v00009005d00000285sv00009005sd000002DB* - ID_PRODUCT_FROM_DATABASE=5085G - -pci:v00009005d00000285sv00009005sd000002DC* - ID_PRODUCT_FROM_DATABASE=51245G - -pci:v00009005d00000285sv00009005sd000002DD* - ID_PRODUCT_FROM_DATABASE=51645G - -pci:v00009005d00000285sv00009005sd000002DE* - ID_PRODUCT_FROM_DATABASE=52445G - -pci:v00009005d00000285sv00009005sd000002DF* - ID_PRODUCT_FROM_DATABASE=ASR-2045G - -pci:v00009005d00000285sv00009005sd000002E0* - ID_PRODUCT_FROM_DATABASE=ASR-2405G - -pci:v00009005d00000285sv00009005sd000002E1* - ID_PRODUCT_FROM_DATABASE=ASR-2445G - -pci:v00009005d00000285sv00009005sd000002E2* - ID_PRODUCT_FROM_DATABASE=ASR-2805G - -pci:v00009005d00000286* - ID_PRODUCT_FROM_DATABASE=AAC-RAID (Rocket) - -pci:v00009005d00000286sv00001014sd0000034D* - ID_PRODUCT_FROM_DATABASE=8s - -pci:v00009005d00000286sv00001014sd00009540* - ID_PRODUCT_FROM_DATABASE=ServeRAID 8k/8k-l4 - -pci:v00009005d00000286sv00001014sd00009580* - ID_PRODUCT_FROM_DATABASE=ServeRAID 8k/8k-l8 - -pci:v00009005d00000286sv00009005sd0000028C* - ID_PRODUCT_FROM_DATABASE=ASR-2230S + ASR-2230SLP PCI-X (Lancer) - -pci:v00009005d00000286sv00009005sd0000028D* - ID_PRODUCT_FROM_DATABASE=ASR-2130S - -pci:v00009005d00000286sv00009005sd0000029B* - ID_PRODUCT_FROM_DATABASE=ASR-2820SA - -pci:v00009005d00000286sv00009005sd0000029C* - ID_PRODUCT_FROM_DATABASE=ASR-2620SA - -pci:v00009005d00000286sv00009005sd0000029D* - ID_PRODUCT_FROM_DATABASE=ASR-2420SA - -pci:v00009005d00000286sv00009005sd0000029E* - ID_PRODUCT_FROM_DATABASE=ICP ICP9024R0 - -pci:v00009005d00000286sv00009005sd0000029F* - ID_PRODUCT_FROM_DATABASE=ICP ICP9014R0 - -pci:v00009005d00000286sv00009005sd000002A0* - ID_PRODUCT_FROM_DATABASE=ICP ICP9047MA - -pci:v00009005d00000286sv00009005sd000002A1* - ID_PRODUCT_FROM_DATABASE=ICP ICP9087MA - -pci:v00009005d00000286sv00009005sd000002A2* - ID_PRODUCT_FROM_DATABASE=3800 - -pci:v00009005d00000286sv00009005sd000002A3* - ID_PRODUCT_FROM_DATABASE=ICP ICP5445AU - -pci:v00009005d00000286sv00009005sd000002A4* - ID_PRODUCT_FROM_DATABASE=ICP ICP9085LI - -pci:v00009005d00000286sv00009005sd000002A5* - ID_PRODUCT_FROM_DATABASE=ICP ICP5085BR - -pci:v00009005d00000286sv00009005sd000002A6* - ID_PRODUCT_FROM_DATABASE=ICP9067MA - -pci:v00009005d00000286sv00009005sd000002A7* - ID_PRODUCT_FROM_DATABASE=3805 - -pci:v00009005d00000286sv00009005sd000002A8* - ID_PRODUCT_FROM_DATABASE=3400 - -pci:v00009005d00000286sv00009005sd000002A9* - ID_PRODUCT_FROM_DATABASE=ICP ICP5085AU - -pci:v00009005d00000286sv00009005sd000002AA* - ID_PRODUCT_FROM_DATABASE=ICP ICP5045AU - -pci:v00009005d00000286sv00009005sd000002AC* - ID_PRODUCT_FROM_DATABASE=1800 - -pci:v00009005d00000286sv00009005sd000002B3* - ID_PRODUCT_FROM_DATABASE=2400 - -pci:v00009005d00000286sv00009005sd000002B4* - ID_PRODUCT_FROM_DATABASE=ICP ICP5045AL - -pci:v00009005d00000286sv00009005sd00000800* - ID_PRODUCT_FROM_DATABASE=Callisto - -pci:v00009005d0000028B* - ID_PRODUCT_FROM_DATABASE=Series 6 - 6G SAS/PCIe 2 - -pci:v00009005d0000028Bsv00009005sd00000200* - ID_PRODUCT_FROM_DATABASE=Series 6 Entry Level - ASR-6405E - 4 internal 6G SAS ports - -pci:v00009005d0000028Bsv00009005sd00000201* - ID_PRODUCT_FROM_DATABASE=Series 6 Entry Level - ASR-6805E - 8 internal 6G SAS ports - -pci:v00009005d0000028Bsv00009005sd00000300* - ID_PRODUCT_FROM_DATABASE=Series 6 - ASR-6405 - 4 internal 6G SAS ports - -pci:v00009005d0000028Bsv00009005sd00000301* - ID_PRODUCT_FROM_DATABASE=Series 6 - ASR-6805 - 8 internal 6G SAS ports - -pci:v00009005d0000028Bsv00009005sd00000302* - ID_PRODUCT_FROM_DATABASE=Series 6 - ASR-6445 - 4 internal and 4 external 6G SAS ports - -pci:v00009005d0000028Bsv00009005sd00000310* - ID_PRODUCT_FROM_DATABASE=Series 6 Connectors on Top - ASR-6405T - 4 internal 6G SAS ports - -pci:v00009005d0000028Bsv00009005sd00000311* - ID_PRODUCT_FROM_DATABASE=Series 6 Connectors on Top - ASR-6805T - 8 internal 6G SAS - -pci:v00009005d0000028Bsv00009005sd00000400* - ID_PRODUCT_FROM_DATABASE=Series 6 - ASR-61205 - 12 internal 6G SAS ports - -pci:v00009005d0000028Bsv00009005sd00000401* - ID_PRODUCT_FROM_DATABASE=Series 6 - ASR-61605 - 16 internal 6G SAS ports - -pci:v00009005d0000028Bsv00009005sd00000403* - ID_PRODUCT_FROM_DATABASE=Series 6 - ASR-62405 - 24 internal 6G SAS ports - -pci:v00009005d0000028C* - ID_PRODUCT_FROM_DATABASE=Series 7 6G SAS/PCIe 3 - -pci:v00009005d0000028Csv00009005sd00000500* - ID_PRODUCT_FROM_DATABASE=Series 7 - ASR-7805 - 8 internal 6G SAS Port/PCIe 3.0 - -pci:v00009005d0000028Csv00009005sd00000501* - ID_PRODUCT_FROM_DATABASE=Series 7 - ASR-71605 - 16 internal 6G SAS Port/PCIe 3.0 - -pci:v00009005d0000028Csv00009005sd00000502* - ID_PRODUCT_FROM_DATABASE=Series 7 - ASR-71685 - 16 internal 8 external 6G SAS Port/PCIe 3.0 - -pci:v00009005d0000028Csv00009005sd00000503* - ID_PRODUCT_FROM_DATABASE=Series 7 - ASR-72405 - 24 internal 0 external 6G SAS Port/PCIe 3.0 - -pci:v00009005d0000028Csv00009005sd00000504* - ID_PRODUCT_FROM_DATABASE=Series 7 - ASR-7885 - 8 internal 8 external 6G SAS Port/PCIe 3.0 - -pci:v00009005d0000028Csv00009005sd00000505* - ID_PRODUCT_FROM_DATABASE=Series 7 Entry Level - ASR-71685E - 16 internal 8 external 6G SAS Port/PCIe 3.0 - -pci:v00009005d0000028Csv00009005sd00000506* - ID_PRODUCT_FROM_DATABASE=Series 7 Entry Level - ASR-72405E - 24 internal 0 external 6G SAS Port/PCIe 3.0 - -pci:v00009005d0000028D* - ID_PRODUCT_FROM_DATABASE=Series 8 12G SAS/PCIe 3 - -pci:v00009005d0000028Dsv00009005sd00000550* - ID_PRODUCT_FROM_DATABASE=Series 8 - ASR-82405 - 24 internal 0 external 12G SAS Port/PCIe 3.0 - -pci:v00009005d0000028Dsv00009005sd00000551* - ID_PRODUCT_FROM_DATABASE=Series 8 - ASR-81605 - 16 internal 0 external 12G SAS Port/PCIe 3.0 - -pci:v00009005d0000028Dsv00009005sd00000552* - ID_PRODUCT_FROM_DATABASE=Series 8 - ASR-8805 - 8 internal 0 external 12G SAS Port/PCIe 3.0 - -pci:v00009005d0000028Dsv00009005sd00000553* - ID_PRODUCT_FROM_DATABASE=Series 8 - ASR-8085 - 0 internal 8 external 12G SAS Port/PCIe 3.0 - -pci:v00009005d0000028Dsv00009005sd00000554* - ID_PRODUCT_FROM_DATABASE=Series 8 - ASR-8885 - 8 internal 8 external 12G SAS Port/PCIe 3.0 - -pci:v00009005d00000410* - ID_PRODUCT_FROM_DATABASE=AIC-9410W SAS (Razor HBA RAID) - -pci:v00009005d00000410sv00009005sd00000410* - ID_PRODUCT_FROM_DATABASE=ASC-48300(Spirit RAID) - -pci:v00009005d00000410sv00009005sd00000411* - ID_PRODUCT_FROM_DATABASE=ASC-58300 (Oakmont RAID) - -pci:v00009005d00000412* - ID_PRODUCT_FROM_DATABASE=AIC-9410W SAS (Razor HBA non-RAID) - -pci:v00009005d00000412sv00009005sd00000412* - ID_PRODUCT_FROM_DATABASE=ASC-48300 (Spirit non-RAID) - -pci:v00009005d00000412sv00009005sd00000413* - ID_PRODUCT_FROM_DATABASE=ASC-58300 (Oakmont non-RAID) - -pci:v00009005d00000415* - ID_PRODUCT_FROM_DATABASE=ASC-58300 SAS (Razor-External HBA RAID) - -pci:v00009005d00000416* - ID_PRODUCT_FROM_DATABASE=ASC-58300 SAS (Razor-External HBA non-RAID) - -pci:v00009005d0000041E* - ID_PRODUCT_FROM_DATABASE=AIC-9410W SAS (Razor ASIC non-RAID) - -pci:v00009005d0000041F* - ID_PRODUCT_FROM_DATABASE=AIC-9410W SAS (Razor ASIC RAID) - -pci:v00009005d0000041Fsv00009005sd0000041F* - ID_PRODUCT_FROM_DATABASE=AIC-9410W SAS (Razor ASIC RAID) - -pci:v00009005d0000042F* - ID_PRODUCT_FROM_DATABASE=VSC7250/7251 SAS (Aurora ASIC non-RAID) - -pci:v00009005d00000430* - ID_PRODUCT_FROM_DATABASE=AIC-9405W SAS (Razor-Lite HBA RAID) - -pci:v00009005d00000430sv00009005sd00000430* - ID_PRODUCT_FROM_DATABASE=ASC-44300 (Spirit-Lite RAID) - -pci:v00009005d00000432* - ID_PRODUCT_FROM_DATABASE=AIC-9405W SAS (Razor-Lite HBA non-RAID) - -pci:v00009005d00000432sv00009005sd00000432* - ID_PRODUCT_FROM_DATABASE=ASC-44300 (Spirit-Lite non-RAID) - -pci:v00009005d0000043E* - ID_PRODUCT_FROM_DATABASE=AIC-9405W SAS (Razor-Lite ASIC non-RAID) - -pci:v00009005d0000043F* - ID_PRODUCT_FROM_DATABASE=AIC-9405W SAS (Razor-Lite ASIC RAID) - -pci:v00009005d00000450* - ID_PRODUCT_FROM_DATABASE=ASC-1405 Unified Serial HBA - -pci:v00009005d00000500* - ID_PRODUCT_FROM_DATABASE=Obsidian chipset SCSI controller - -pci:v00009005d00000500sv00001014sd000002C1* - ID_PRODUCT_FROM_DATABASE=PCI-X DDR 3Gb SAS Adapter (572A/572C) - -pci:v00009005d00000500sv00001014sd000002C2* - ID_PRODUCT_FROM_DATABASE=PCI-X DDR 3Gb SAS RAID Adapter (572B/572D) - -pci:v00009005d00000503* - ID_PRODUCT_FROM_DATABASE=Scamp chipset SCSI controller - -pci:v00009005d00000503sv00001014sd000002BF* - ID_PRODUCT_FROM_DATABASE=Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571E) - -pci:v00009005d00000503sv00001014sd000002C3* - ID_PRODUCT_FROM_DATABASE=PCI-X DDR 3Gb SAS RAID Adapter (572F) - -pci:v00009005d00000503sv00001014sd000002D5* - ID_PRODUCT_FROM_DATABASE=Quad Channel PCI-X DDR U320 SCSI RAID Adapter (571F) - -pci:v00009005d00000910* - ID_PRODUCT_FROM_DATABASE=AUA-3100B - -pci:v00009005d0000091E* - ID_PRODUCT_FROM_DATABASE=AUA-3100B - -pci:v00009005d00008000* - ID_PRODUCT_FROM_DATABASE=ASC-29320A U320 - -pci:v00009005d0000800F* - ID_PRODUCT_FROM_DATABASE=AIC-7901 U320 - -pci:v00009005d00008010* - ID_PRODUCT_FROM_DATABASE=ASC-39320 U320 - -pci:v00009005d00008011* - ID_PRODUCT_FROM_DATABASE=ASC-39320D - -pci:v00009005d00008011sv00000E11sd000000AC* - ID_PRODUCT_FROM_DATABASE=ASC-39320D U320 - -pci:v00009005d00008011sv00009005sd00000041* - ID_PRODUCT_FROM_DATABASE=ASC-39320D U320 - -pci:v00009005d00008012* - ID_PRODUCT_FROM_DATABASE=ASC-29320 U320 - -pci:v00009005d00008013* - ID_PRODUCT_FROM_DATABASE=ASC-29320B U320 - -pci:v00009005d00008014* - ID_PRODUCT_FROM_DATABASE=ASC-29320LP U320 - -pci:v00009005d00008015* - ID_PRODUCT_FROM_DATABASE=ASC-39320B U320 - -pci:v00009005d00008016* - ID_PRODUCT_FROM_DATABASE=ASC-39320A U320 - -pci:v00009005d00008017* - ID_PRODUCT_FROM_DATABASE=ASC-29320ALP U320 - -pci:v00009005d00008017sv00009005sd00000044* - ID_PRODUCT_FROM_DATABASE=ASC-29320ALP PCIx U320 - -pci:v00009005d00008017sv00009005sd00000045* - ID_PRODUCT_FROM_DATABASE=ASC-29320LPE PCIe U320 - -pci:v00009005d0000801C* - ID_PRODUCT_FROM_DATABASE=ASC-39320D U320 - -pci:v00009005d0000801D* - ID_PRODUCT_FROM_DATABASE=AIC-7902B U320 - -pci:v00009005d0000801Dsv00001014sd000002CC* - ID_PRODUCT_FROM_DATABASE=ServeRAID 7e - -pci:v00009005d0000801E* - ID_PRODUCT_FROM_DATABASE=AIC-7901A U320 - -pci:v00009005d0000801F* - ID_PRODUCT_FROM_DATABASE=AIC-7902 U320 - -pci:v00009005d0000801Fsv00001734sd00001011* - ID_PRODUCT_FROM_DATABASE=PRIMERGY RX300 onboard SCSI - -pci:v00009005d00008080* - ID_PRODUCT_FROM_DATABASE=ASC-29320A U320 w/HostRAID - -pci:v00009005d00008081* - ID_PRODUCT_FROM_DATABASE=PMC-Sierra PM8001 SAS HBA [Series 6H] - -pci:v00009005d00008088* - ID_PRODUCT_FROM_DATABASE=PMC-Sierra PM8018 SAS HBA [Series 7H] - -pci:v00009005d00008089* - ID_PRODUCT_FROM_DATABASE=PMC-Sierra PM8019 SAS encryption HBA [Series 7He] - -pci:v00009005d0000808F* - ID_PRODUCT_FROM_DATABASE=AIC-7901 U320 w/HostRAID - -pci:v00009005d00008090* - ID_PRODUCT_FROM_DATABASE=ASC-39320 U320 w/HostRAID - -pci:v00009005d00008091* - ID_PRODUCT_FROM_DATABASE=ASC-39320D U320 w/HostRAID - -pci:v00009005d00008092* - ID_PRODUCT_FROM_DATABASE=ASC-29320 U320 w/HostRAID - -pci:v00009005d00008093* - ID_PRODUCT_FROM_DATABASE=ASC-29320B U320 w/HostRAID - -pci:v00009005d00008094* - ID_PRODUCT_FROM_DATABASE=ASC-29320LP U320 w/HostRAID - -pci:v00009005d00008095* - ID_PRODUCT_FROM_DATABASE=ASC-39320(B) U320 w/HostRAID - -pci:v00009005d00008096* - ID_PRODUCT_FROM_DATABASE=ASC-39320A U320 w/HostRAID - -pci:v00009005d00008097* - ID_PRODUCT_FROM_DATABASE=ASC-29320ALP U320 w/HostRAID - -pci:v00009005d0000809C* - ID_PRODUCT_FROM_DATABASE=ASC-39320D(B) U320 w/HostRAID - -pci:v00009005d0000809D* - ID_PRODUCT_FROM_DATABASE=AIC-7902(B) U320 w/HostRAID - -pci:v00009005d0000809Dsv00001014sd000002CC* - ID_PRODUCT_FROM_DATABASE=ServeRAID 7e - -pci:v00009005d0000809E* - ID_PRODUCT_FROM_DATABASE=AIC-7901A U320 w/HostRAID - -pci:v00009005d0000809F* - ID_PRODUCT_FROM_DATABASE=AIC-7902 U320 w/HostRAID - -pci:v0000907F* - ID_VENDOR_FROM_DATABASE=Atronics - -pci:v0000907Fd00002015* - ID_PRODUCT_FROM_DATABASE=IDE-2015PL - -pci:v0000919A* - ID_VENDOR_FROM_DATABASE=Gigapixel Corp - -pci:v00009412* - ID_VENDOR_FROM_DATABASE=Holtek - -pci:v00009412d00006565* - ID_PRODUCT_FROM_DATABASE=6565 - -pci:v00009618* - ID_VENDOR_FROM_DATABASE=JusonTech Corporation - -pci:v00009618d00000001* - ID_PRODUCT_FROM_DATABASE=JusonTech Gigabit Ethernet Controller - -pci:v00009699* - ID_VENDOR_FROM_DATABASE=Omni Media Technology Inc - -pci:v00009699d00006565* - ID_PRODUCT_FROM_DATABASE=6565 - -pci:v00009710* - ID_VENDOR_FROM_DATABASE=MosChip Semiconductor Technology Ltd. - -pci:v00009710d00009250* - ID_PRODUCT_FROM_DATABASE=PCI-to-PCI bridge [MCS9250] - -pci:v00009710d00009805* - ID_PRODUCT_FROM_DATABASE=PCI 1 port parallel adapter - -pci:v00009710d00009815* - ID_PRODUCT_FROM_DATABASE=PCI 9815 Multi-I/O Controller - -pci:v00009710d00009815sv00001000sd00000020* - ID_PRODUCT_FROM_DATABASE=2P0S (2 port parallel adaptor) - -pci:v00009710d00009820* - ID_PRODUCT_FROM_DATABASE=PCI 9820 Multi-I/O Controller - -pci:v00009710d00009835* - ID_PRODUCT_FROM_DATABASE=PCI 9835 Multi-I/O Controller - -pci:v00009710d00009835sv00001000sd00000002* - ID_PRODUCT_FROM_DATABASE=2S (16C550 UART) - -pci:v00009710d00009835sv00001000sd00000012* - ID_PRODUCT_FROM_DATABASE=1P2S - -pci:v00009710d00009845* - ID_PRODUCT_FROM_DATABASE=PCI 9845 Multi-I/O Controller - -pci:v00009710d00009845sv00001000sd00000004* - ID_PRODUCT_FROM_DATABASE=0P4S (4 port 16550A serial card) - -pci:v00009710d00009845sv00001000sd00000006* - ID_PRODUCT_FROM_DATABASE=0P6S (6 port 16550a serial card) - -pci:v00009710d00009845sv00001000sd00000014* - ID_PRODUCT_FROM_DATABASE=1P4S (1 Parallel / 4 16550A Serial Port Adapter) - -pci:v00009710d00009855* - ID_PRODUCT_FROM_DATABASE=PCI 9855 Multi-I/O Controller - -pci:v00009710d00009855sv00001000sd00000014* - ID_PRODUCT_FROM_DATABASE=1P4S - -pci:v00009710d00009855sv00001000sd00000022* - ID_PRODUCT_FROM_DATABASE=2P2S (2 Parallel / 2 16550A Serial Port Adapter) - -pci:v00009710d00009865* - ID_PRODUCT_FROM_DATABASE=PCI 9865 Multi-I/O Controller - -pci:v00009710d00009901* - ID_PRODUCT_FROM_DATABASE=PCIe 9901 Multi-I/O Controller - -pci:v00009710d00009904* - ID_PRODUCT_FROM_DATABASE=4-Port PCIe Serial Adapter - -pci:v00009710d00009912* - ID_PRODUCT_FROM_DATABASE=PCIe 9912 Multi-I/O Controller - -pci:v00009710d00009922* - ID_PRODUCT_FROM_DATABASE=PCIe 9922 Multi-I/O Controller - -pci:v00009710d00009990* - ID_PRODUCT_FROM_DATABASE=MCS9990 PCIe to 4‐Port USB 2.0 Host Controller - -pci:v00009902* - ID_VENDOR_FROM_DATABASE=Stargen Inc. - -pci:v00009902d00000001* - ID_PRODUCT_FROM_DATABASE=SG2010 PCI over Starfabric Bridge - -pci:v00009902d00000002* - ID_PRODUCT_FROM_DATABASE=SG2010 PCI to Starfabric Gateway - -pci:v00009902d00000003* - ID_PRODUCT_FROM_DATABASE=SG1010 Starfabric Switch and PCI Bridge - -pci:v0000A0A0* - ID_VENDOR_FROM_DATABASE=AOPEN Inc. - -pci:v0000A0F1* - ID_VENDOR_FROM_DATABASE=UNISYS Corporation - -pci:v0000A200* - ID_VENDOR_FROM_DATABASE=NEC Corporation - -pci:v0000A259* - ID_VENDOR_FROM_DATABASE=Hewlett Packard - -pci:v0000A25B* - ID_VENDOR_FROM_DATABASE=Hewlett Packard GmbH PL24-MKT - -pci:v0000A304* - ID_VENDOR_FROM_DATABASE=Sony - -pci:v0000A727* - ID_VENDOR_FROM_DATABASE=3Com Corporation - -pci:v0000A727d00000013* - ID_PRODUCT_FROM_DATABASE=3CRPAG175 Wireless PC Card - -pci:v0000A727d00006803* - ID_PRODUCT_FROM_DATABASE=3CRDAG675B Wireless 11a/b/g Adapter - -pci:v0000AA42* - ID_VENDOR_FROM_DATABASE=Scitex Digital Video - -pci:v0000AA55* - ID_VENDOR_FROM_DATABASE=Ncomputing X300 PCI-Engine - -pci:v0000AAAA* - ID_VENDOR_FROM_DATABASE=Adnaco Technology Inc. - -pci:v0000AAAAd00000001* - ID_PRODUCT_FROM_DATABASE=H1 PCIe over fiber optic host controller - -pci:v0000AAAAd00000002* - ID_PRODUCT_FROM_DATABASE=R1BP1 PCIe over fiber optic expansion chassis - -pci:v0000ABCD* - ID_VENDOR_FROM_DATABASE=Vadatech Inc. - -pci:v0000AC1E* - ID_VENDOR_FROM_DATABASE=Digital Receiver Technology Inc - -pci:v0000AC3D* - ID_VENDOR_FROM_DATABASE=Actuality Systems - -pci:v0000AD00* - ID_VENDOR_FROM_DATABASE=Alta Data Technologies LLC - -pci:v0000AECB* - ID_VENDOR_FROM_DATABASE=Adrienne Electronics Corporation - -pci:v0000AECBd00006250* - ID_PRODUCT_FROM_DATABASE=VITC/LTC Timecode Reader card [PCI-VLTC/RDR] - -pci:v0000AFFE* - ID_VENDOR_FROM_DATABASE=Sirrix AG security technologies - -pci:v0000AFFEd000001E1* - ID_PRODUCT_FROM_DATABASE=PCI1E1 1-port ISDN E1 interface - -pci:v0000AFFEd000002E1* - ID_PRODUCT_FROM_DATABASE=PCI2E1 2-port ISDN E1 interface - -pci:v0000AFFEd0000450E* - ID_PRODUCT_FROM_DATABASE=PCI4S0EC 4-port ISDN S0 interface - -pci:v0000AFFEd0000DEAD* - ID_PRODUCT_FROM_DATABASE=Sirrix.PCI4S0 4-port ISDN S0 interface - -pci:v0000B100* - ID_VENDOR_FROM_DATABASE=OpenVox Communication Co. Ltd. - -pci:v0000B10B* - ID_VENDOR_FROM_DATABASE=Uakron PCI Project - -pci:v0000B1B3* - ID_VENDOR_FROM_DATABASE=Shiva Europe Limited - -pci:v0000B1D9* - ID_VENDOR_FROM_DATABASE=ATCOM Technology co., LTD. - -pci:v0000BD11* - ID_VENDOR_FROM_DATABASE=Pinnacle Systems, Inc. (Wrong ID) - -pci:v0000BDBD* - ID_VENDOR_FROM_DATABASE=Blackmagic Design - -pci:v0000BDBDd0000A11B* - ID_PRODUCT_FROM_DATABASE=DeckLink SDI - -pci:v0000C001* - ID_VENDOR_FROM_DATABASE=TSI Telsys - -pci:v0000C0A9* - ID_VENDOR_FROM_DATABASE=Micron/Crucial Technology - -pci:v0000C0DE* - ID_VENDOR_FROM_DATABASE=Motorola - -pci:v0000C0FE* - ID_VENDOR_FROM_DATABASE=Motion Engineering, Inc. - -pci:v0000CA50* - ID_VENDOR_FROM_DATABASE=Varian Australia Pty Ltd - -pci:v0000CACE* - ID_VENDOR_FROM_DATABASE=CACE Technologies, Inc. - -pci:v0000CACEd00000001* - ID_PRODUCT_FROM_DATABASE=TurboCap Port A - -pci:v0000CACEd00000002* - ID_PRODUCT_FROM_DATABASE=TurboCap Port B - -pci:v0000CACEd00000023* - ID_PRODUCT_FROM_DATABASE=AirPcap N - -pci:v0000CAFE* - ID_VENDOR_FROM_DATABASE=Chrysalis-ITS - -pci:v0000CAFEd00000003* - ID_PRODUCT_FROM_DATABASE=Luna K3 Hardware Security Module - -pci:v0000CAFEd00000006* - ID_PRODUCT_FROM_DATABASE=Luna PCI-e 3000 Hardware Security Module - -pci:v0000CCCC* - ID_VENDOR_FROM_DATABASE=Catapult Communications - -pci:v0000CCEC* - ID_VENDOR_FROM_DATABASE=Curtiss-Wright Controls Embedded Computing - -pci:v0000CDDD* - ID_VENDOR_FROM_DATABASE=Tyzx, Inc. - -pci:v0000CDDDd00000101* - ID_PRODUCT_FROM_DATABASE=DeepSea 1 High Speed Stereo Vision Frame Grabber - -pci:v0000CDDDd00000200* - ID_PRODUCT_FROM_DATABASE=DeepSea 2 High Speed Stereo Vision Frame Grabber - -pci:v0000CEBA* - ID_VENDOR_FROM_DATABASE=KEBA AG - -pci:v0000D161* - ID_VENDOR_FROM_DATABASE=Digium, Inc. - -pci:v0000D161d00000120* - ID_PRODUCT_FROM_DATABASE=Wildcard TE120P single-span T1/E1/J1 card - -pci:v0000D161d00000205* - ID_PRODUCT_FROM_DATABASE=Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V - -pci:v0000D161d00000210* - ID_PRODUCT_FROM_DATABASE=Wildcard TE210P/TE212P dual-span T1/E1/J1 card 3.3V - -pci:v0000D161d00000220* - ID_PRODUCT_FROM_DATABASE=Wildcard TE220 dual-span T1/E1/J1 card 3.3V (PCI-Express) - -pci:v0000D161d00000405* - ID_PRODUCT_FROM_DATABASE=Wildcard TE405P/TE407P quad-span T1/E1/J1 card 5.0V - -pci:v0000D161d00000410* - ID_PRODUCT_FROM_DATABASE=Wildcard TE410P/TE412P quad-span T1/E1/J1 card 3.3V - -pci:v0000D161d00000420* - ID_PRODUCT_FROM_DATABASE=Wildcard TE420P quad-span T1/E1/J1 card 3.3V (PCI-Express) - -pci:v0000D161d00000800* - ID_PRODUCT_FROM_DATABASE=Wildcard TDM800P 8-port analog card - -pci:v0000D161d00001205* - ID_PRODUCT_FROM_DATABASE=Wildcard TE205P/TE207P dual-span T1/E1/J1 card 5.0V (u1) - -pci:v0000D161d00001220* - ID_PRODUCT_FROM_DATABASE=Wildcard TE220 dual-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen) - -pci:v0000D161d00001405* - ID_PRODUCT_FROM_DATABASE=Wildcard TE405P/TE407P quad-span T1/E1/J1 card 5.0V (u1) - -pci:v0000D161d00001420* - ID_PRODUCT_FROM_DATABASE=Wildcard TE420 quad-span T1/E1/J1 card 3.3V (PCI-Express) (5th gen) - -pci:v0000D161d00002400* - ID_PRODUCT_FROM_DATABASE=Wildcard TDM2400P 24-port analog card - -pci:v0000D161d00003400* - ID_PRODUCT_FROM_DATABASE=Wildcard TC400P transcoder base card - -pci:v0000D161d00008000* - ID_PRODUCT_FROM_DATABASE=Wildcard TE121 single-span T1/E1/J1 card (PCI-Express) - -pci:v0000D161d00008001* - ID_PRODUCT_FROM_DATABASE=Wildcard TE122 single-span T1/E1/J1 card - -pci:v0000D161d00008002* - ID_PRODUCT_FROM_DATABASE=Wildcard AEX800 8-port analog card (PCI-Express) - -pci:v0000D161d00008003* - ID_PRODUCT_FROM_DATABASE=Wildcard AEX2400 24-port analog card (PCI-Express) - -pci:v0000D161d00008004* - ID_PRODUCT_FROM_DATABASE=Wildcard TCE400P transcoder base card - -pci:v0000D161d00008005* - ID_PRODUCT_FROM_DATABASE=Wildcard TDM410 4-port analog card - -pci:v0000D161d00008006* - ID_PRODUCT_FROM_DATABASE=Wildcard AEX410 4-port analog card (PCI-Express) - -pci:v0000D161d00008007* - ID_PRODUCT_FROM_DATABASE=Hx8 Series 8-port Base Card - -pci:v0000D161d00008008* - ID_PRODUCT_FROM_DATABASE=Hx8 Series 8-port Base Card (PCI-Express) - -pci:v0000D161d0000B410* - ID_PRODUCT_FROM_DATABASE=Wildcard B410 quad-BRI card - -pci:v0000D4D4* - ID_VENDOR_FROM_DATABASE=Dy4 Systems Inc - -pci:v0000D4D4d00000601* - ID_PRODUCT_FROM_DATABASE=PCI Mezzanine Card - -pci:v0000D531* - ID_VENDOR_FROM_DATABASE=I+ME ACTIA GmbH - -pci:v0000D84D* - ID_VENDOR_FROM_DATABASE=Exsys - -pci:v0000DADA* - ID_VENDOR_FROM_DATABASE=Datapath Limited - -pci:v0000DB10* - ID_VENDOR_FROM_DATABASE=Diablo Technologies - -pci:v0000DCBA* - ID_VENDOR_FROM_DATABASE=Dynamic Engineering - -pci:v0000DCBAd00000046* - ID_PRODUCT_FROM_DATABASE=PCIeAlteraCycloneIV - -pci:v0000DCBAd00000047* - ID_PRODUCT_FROM_DATABASE=VPX-RCB - -pci:v0000DCBAd00000048* - ID_PRODUCT_FROM_DATABASE=PMC-Biserial-III-BAE9 - -pci:v0000DD01* - ID_VENDOR_FROM_DATABASE=Digital Devices GmbH - -pci:v0000DD01d00000003* - ID_PRODUCT_FROM_DATABASE=Octopus LE DVB adapter - -pci:v0000DEAD* - ID_VENDOR_FROM_DATABASE=Indigita Corporation - -pci:v0000DEAF* - ID_VENDOR_FROM_DATABASE=Middle Digital Inc. - -pci:v0000DEAFd00009050* - ID_PRODUCT_FROM_DATABASE=PC Weasel Virtual VGA - -pci:v0000DEAFd00009051* - ID_PRODUCT_FROM_DATABASE=PC Weasel Serial Port - -pci:v0000DEAFd00009052* - ID_PRODUCT_FROM_DATABASE=PC Weasel Watchdog Timer - -pci:v0000DEDA* - ID_VENDOR_FROM_DATABASE=SoftHard Technology Ltd. - -pci:v0000E000* - ID_VENDOR_FROM_DATABASE=Winbond - -pci:v0000E000d0000E000* - ID_PRODUCT_FROM_DATABASE=W89C940 - -pci:v0000E159* - ID_VENDOR_FROM_DATABASE=Tiger Jet Network Inc. - -pci:v0000E159d00000001* - ID_PRODUCT_FROM_DATABASE=Tiger3XX Modem/ISDN interface - -pci:v0000E159d00000001sv00000059sd00000001* - ID_PRODUCT_FROM_DATABASE=128k ISDN-S/T Adapter - -pci:v0000E159d00000001sv00000059sd00000003* - ID_PRODUCT_FROM_DATABASE=128k ISDN-U Adapter - -pci:v0000E159d00000001sv000000A7sd00000001* - ID_PRODUCT_FROM_DATABASE=TELES.S0/PCI 2.x ISDN Adapter - -pci:v0000E159d00000001sv00008086sd00000003* - ID_PRODUCT_FROM_DATABASE=Digium X100P/X101P analogue PSTN FXO interface - -pci:v0000E159d00000001sv0000B100sd00000003* - ID_PRODUCT_FROM_DATABASE=OpenVox A400P 4-port analog card - -pci:v0000E159d00000001sv0000B1D9sd00000003* - ID_PRODUCT_FROM_DATABASE=AX400P 4-port analog card - -pci:v0000E159d00000002* - ID_PRODUCT_FROM_DATABASE=Tiger100APC ISDN chipset - -pci:v0000E1C5* - ID_VENDOR_FROM_DATABASE=Elcus - -pci:v0000E4BF* - ID_VENDOR_FROM_DATABASE=EKF Elektronik GmbH - -pci:v0000E4BFd00000CCD* - ID_PRODUCT_FROM_DATABASE=CCD-CALYPSO - -pci:v0000E4BFd00000CD1* - ID_PRODUCT_FROM_DATABASE=CD1-OPERA - -pci:v0000E4BFd00000CD2* - ID_PRODUCT_FROM_DATABASE=CD2-BEBOP - -pci:v0000E4BFd00000CD3* - ID_PRODUCT_FROM_DATABASE=CD3-JIVE - -pci:v0000E4BFd000050C1* - ID_PRODUCT_FROM_DATABASE=PC1-GROOVE - -pci:v0000E4BFd000050C2* - ID_PRODUCT_FROM_DATABASE=PC2-LIMBO - -pci:v0000E4BFd000053C1* - ID_PRODUCT_FROM_DATABASE=SC1-ALLEGRO - -pci:v0000E4BFd0000CC47* - ID_PRODUCT_FROM_DATABASE=CCG-RUMBA - -pci:v0000E4BFd0000CC4D* - ID_PRODUCT_FROM_DATABASE=CCM-BOOGIE - -pci:v0000E55E* - ID_VENDOR_FROM_DATABASE=Essence Technology, Inc. - -pci:v0000EA01* - ID_VENDOR_FROM_DATABASE=Eagle Technology - -pci:v0000EA01d0000000A* - ID_PRODUCT_FROM_DATABASE=PCI-773 Temperature Card - -pci:v0000EA01d00000032* - ID_PRODUCT_FROM_DATABASE=PCI-730 & PC104P-30 Card - -pci:v0000EA01d0000003E* - ID_PRODUCT_FROM_DATABASE=PCI-762 Opto-Isolator Card - -pci:v0000EA01d00000041* - ID_PRODUCT_FROM_DATABASE=PCI-763 Reed Relay Card - -pci:v0000EA01d00000043* - ID_PRODUCT_FROM_DATABASE=PCI-769 Opto-Isolator Reed Relay Combo Card - -pci:v0000EA01d00000046* - ID_PRODUCT_FROM_DATABASE=PCI-766 Analog Output Card - -pci:v0000EA01d00000052* - ID_PRODUCT_FROM_DATABASE=PCI-703 Analog I/O Card - -pci:v0000EA01d00000800* - ID_PRODUCT_FROM_DATABASE=PCI-800 Digital I/O Card - -pci:v0000EA60* - ID_VENDOR_FROM_DATABASE=RME - -pci:v0000EA60d00009896* - ID_PRODUCT_FROM_DATABASE=Digi32 - -pci:v0000EA60d00009897* - ID_PRODUCT_FROM_DATABASE=Digi32 Pro - -pci:v0000EA60d00009898* - ID_PRODUCT_FROM_DATABASE=Digi32/8 - -pci:v0000EABB* - ID_VENDOR_FROM_DATABASE=Aashima Technology B.V. - -pci:v0000EACE* - ID_VENDOR_FROM_DATABASE=Endace Measurement Systems, Ltd - -pci:v0000EACEd00003100* - ID_PRODUCT_FROM_DATABASE=DAG 3.10 OC-3/OC-12 - -pci:v0000EACEd00003200* - ID_PRODUCT_FROM_DATABASE=DAG 3.2x OC-3/OC-12 - -pci:v0000EACEd0000320E* - ID_PRODUCT_FROM_DATABASE=DAG 3.2E Fast Ethernet - -pci:v0000EACEd0000340E* - ID_PRODUCT_FROM_DATABASE=DAG 3.4E Fast Ethernet - -pci:v0000EACEd0000341E* - ID_PRODUCT_FROM_DATABASE=DAG 3.41E Fast Ethernet - -pci:v0000EACEd00003500* - ID_PRODUCT_FROM_DATABASE=DAG 3.5 OC-3/OC-12 - -pci:v0000EACEd0000351C* - ID_PRODUCT_FROM_DATABASE=DAG 3.5ECM Fast Ethernet - -pci:v0000EACEd0000360D* - ID_PRODUCT_FROM_DATABASE=DAG 3.6D DS3 - -pci:v0000EACEd0000360E* - ID_PRODUCT_FROM_DATABASE=DAG 3.6E Fast Ethernet - -pci:v0000EACEd0000368E* - ID_PRODUCT_FROM_DATABASE=DAG 3.6E Gig Ethernet - -pci:v0000EACEd00003707* - ID_PRODUCT_FROM_DATABASE=DAG 3.7T T1/E1/J1 - -pci:v0000EACEd0000370D* - ID_PRODUCT_FROM_DATABASE=DAG 3.7D DS3/E3 - -pci:v0000EACEd0000378E* - ID_PRODUCT_FROM_DATABASE=DAG 3.7G Gig Ethernet - -pci:v0000EACEd00003800* - ID_PRODUCT_FROM_DATABASE=DAG 3.8S OC-3/OC-12 - -pci:v0000EACEd00004100* - ID_PRODUCT_FROM_DATABASE=DAG 4.10 OC-48 - -pci:v0000EACEd00004110* - ID_PRODUCT_FROM_DATABASE=DAG 4.11 OC-48 - -pci:v0000EACEd00004220* - ID_PRODUCT_FROM_DATABASE=DAG 4.2 OC-48 - -pci:v0000EACEd0000422E* - ID_PRODUCT_FROM_DATABASE=DAG 4.2GE Gig Ethernet - -pci:v0000EACEd00004230* - ID_PRODUCT_FROM_DATABASE=DAG 4.2S OC-48 - -pci:v0000EACEd0000423E* - ID_PRODUCT_FROM_DATABASE=DAG 4.2GE Gig Ethernet - -pci:v0000EACEd00004300* - ID_PRODUCT_FROM_DATABASE=DAG 4.3S OC-48 - -pci:v0000EACEd0000430E* - ID_PRODUCT_FROM_DATABASE=DAG 4.3GE Gig Ethernet - -pci:v0000EACEd0000452E* - ID_PRODUCT_FROM_DATABASE=DAG 4.5G2 Gig Ethernet - -pci:v0000EACEd0000454E* - ID_PRODUCT_FROM_DATABASE=DAG 4.5G4 Gig Ethernet - -pci:v0000EACEd000045B8* - ID_PRODUCT_FROM_DATABASE=DAG 4.5Z8 Gig Ethernet - -pci:v0000EACEd000045BE* - ID_PRODUCT_FROM_DATABASE=DAG 4.5Z2 Gig Ethernet - -pci:v0000EACEd0000520E* - ID_PRODUCT_FROM_DATABASE=DAG 5.2X 10G Ethernet - -pci:v0000EACEd0000521A* - ID_PRODUCT_FROM_DATABASE=DAG 5.2SXA 10G Ethernet/OC-192 - -pci:v0000EACEd00005400* - ID_PRODUCT_FROM_DATABASE=DAG 5.4S-12 OC-3/OC-12 - -pci:v0000EACEd00005401* - ID_PRODUCT_FROM_DATABASE=DAG 5.4SG-48 Gig Ethernet/OC-3/OC-12/OC-48 - -pci:v0000EACEd0000540A* - ID_PRODUCT_FROM_DATABASE=DAG 5.4GA Gig Ethernet - -pci:v0000EACEd0000541A* - ID_PRODUCT_FROM_DATABASE=DAG 5.4SA-12 OC-3/OC-12 - -pci:v0000EACEd0000542A* - ID_PRODUCT_FROM_DATABASE=DAG 5.4SGA-48 Gig Ethernet/OC-3/OC-12/OC-48 - -pci:v0000EACEd00006000* - ID_PRODUCT_FROM_DATABASE=DAG 6.0SE 10G Ethernet/OC-192 - -pci:v0000EACEd00006100* - ID_PRODUCT_FROM_DATABASE=DAG 6.1SE 10G Ethernet/OC-192 - -pci:v0000EACEd00006200* - ID_PRODUCT_FROM_DATABASE=DAG 6.2SE 10G Ethernet/OC-192 - -pci:v0000EACEd00007100* - ID_PRODUCT_FROM_DATABASE=DAG 7.1S OC-3/OC-12 - -pci:v0000EACEd00007400* - ID_PRODUCT_FROM_DATABASE=DAG 7.4S OC-3/OC-12 - -pci:v0000EACEd00007401* - ID_PRODUCT_FROM_DATABASE=DAG 7.4S48 OC-48 - -pci:v0000EACEd0000752E* - ID_PRODUCT_FROM_DATABASE=DAG 7.5G2 Gig Ethernet - -pci:v0000EACEd0000754E* - ID_PRODUCT_FROM_DATABASE=DAG 7.5G4 Gig Ethernet - -pci:v0000EACEd00008100* - ID_PRODUCT_FROM_DATABASE=DAG 8.1X 10G Ethernet - -pci:v0000EACEd00008101* - ID_PRODUCT_FROM_DATABASE=DAG 8.1SX 10G Ethernet/OC-192 - -pci:v0000EACEd00008102* - ID_PRODUCT_FROM_DATABASE=DAG 8.1X 10G Ethernet - -pci:v0000EACEd0000820E* - ID_PRODUCT_FROM_DATABASE=DAG 8.2X 10G Ethernet - -pci:v0000EACEd0000820F* - ID_PRODUCT_FROM_DATABASE=DAG 8.2X 10G Ethernet (2nd bus) - -pci:v0000EACEd00008400* - ID_PRODUCT_FROM_DATABASE=DAG 8.4I Infiniband x4 SDR - -pci:v0000EACEd00008500* - ID_PRODUCT_FROM_DATABASE=DAG 8.5I Infiniband x4 DDR - -pci:v0000EACEd0000920E* - ID_PRODUCT_FROM_DATABASE=DAG 9.2X2 10G Ethernet - -pci:v0000EC80* - ID_VENDOR_FROM_DATABASE=Belkin Corporation - -pci:v0000EC80d0000EC00* - ID_PRODUCT_FROM_DATABASE=F5D6000 - -pci:v0000ECC0* - ID_VENDOR_FROM_DATABASE=Echo Digital Audio Corporation - -pci:v0000EDD8* - ID_VENDOR_FROM_DATABASE=ARK Logic Inc - -pci:v0000EDD8d0000A091* - ID_PRODUCT_FROM_DATABASE=1000PV [Stingray] - -pci:v0000EDD8d0000A099* - ID_PRODUCT_FROM_DATABASE=2000PV [Stingray] - -pci:v0000EDD8d0000A0A1* - ID_PRODUCT_FROM_DATABASE=2000MT - -pci:v0000EDD8d0000A0A9* - ID_PRODUCT_FROM_DATABASE=2000MI - -pci:v0000F043* - ID_VENDOR_FROM_DATABASE=ASUSTeK Computer Inc. (Wrong ID) - -pci:v0000F05B* - ID_VENDOR_FROM_DATABASE=Foxconn International, Inc. (Wrong ID) - -pci:v0000F1D0* - ID_VENDOR_FROM_DATABASE=AJA Video - -pci:v0000F1D0d0000C0FE* - ID_PRODUCT_FROM_DATABASE=Xena HS/HD-R - -pci:v0000F1D0d0000C0FF* - ID_PRODUCT_FROM_DATABASE=Kona/Xena 2 - -pci:v0000F1D0d0000CAFE* - ID_PRODUCT_FROM_DATABASE=Kona SD - -pci:v0000F1D0d0000CFEE* - ID_PRODUCT_FROM_DATABASE=Xena LS/SD-22-DA/SD-DA - -pci:v0000F1D0d0000DCAF* - ID_PRODUCT_FROM_DATABASE=Kona HD - -pci:v0000F1D0d0000DFEE* - ID_PRODUCT_FROM_DATABASE=Xena HD-DA - -pci:v0000F1D0d0000EFAC* - ID_PRODUCT_FROM_DATABASE=Xena SD-MM/SD-22-MM - -pci:v0000F1D0d0000FACD* - ID_PRODUCT_FROM_DATABASE=Xena HD-MM - -pci:v0000F5F5* - ID_VENDOR_FROM_DATABASE=F5 Networks, Inc. - -pci:v0000F849* - ID_VENDOR_FROM_DATABASE=ASRock Incorporation (Wrong ID) - -pci:v0000FA57* - ID_VENDOR_FROM_DATABASE=Interagon AS - -pci:v0000FA57d00000001* - ID_PRODUCT_FROM_DATABASE=PMC [Pattern Matching Chip] - -pci:v0000FAB7* - ID_VENDOR_FROM_DATABASE=Fabric7 Systems, Inc. - -pci:v0000FEBD* - ID_VENDOR_FROM_DATABASE=Ultraview Corp. - -pci:v0000FEDA* - ID_VENDOR_FROM_DATABASE=Broadcom Inc - -pci:v0000FEDAd0000A0FA* - ID_PRODUCT_FROM_DATABASE=BCM4210 iLine10 HomePNA 2.0 - -pci:v0000FEDAd0000A10E* - ID_PRODUCT_FROM_DATABASE=BCM4230 iLine10 HomePNA 2.0 - -pci:v0000FEDE* - ID_VENDOR_FROM_DATABASE=Fedetec Inc. - -pci:v0000FEDEd00000003* - ID_PRODUCT_FROM_DATABASE=TABIC PCI v3 - -pci:v0000FFFD* - ID_VENDOR_FROM_DATABASE=XenSource, Inc. - -pci:v0000FFFDd00000101* - ID_PRODUCT_FROM_DATABASE=PCI Event Channel Controller - -pci:v0000FFFE* - ID_VENDOR_FROM_DATABASE=VMWare Inc (temporary ID) - -pci:v0000FFFEd00000710* - ID_PRODUCT_FROM_DATABASE=Virtual SVGA - -pci:v0000FFFF* - ID_VENDOR_FROM_DATABASE=Illegal Vendor ID diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb new file mode 100644 index 0000000000..c78bfe37c0 --- /dev/null +++ b/hwdb/20-usb-vendor-model.hwdb @@ -0,0 +1,49014 @@ +# This file is part of systemd. +# +# Data imported from: http://www.linux-usb.org/usb.ids + +usb:v0001* + ID_VENDOR_FROM_DATABASE=Fry's Electronics + +usb:v0001p142B* + ID_MODEL_FROM_DATABASE=Arbiter Systems, Inc. + +usb:v0001p7778* + ID_MODEL_FROM_DATABASE=Counterfeit flash drive [Kingston] + +usb:v0002* + ID_VENDOR_FROM_DATABASE=Ingram + +usb:v0003* + ID_VENDOR_FROM_DATABASE=Club Mac + +usb:v0004* + ID_VENDOR_FROM_DATABASE=Nebraska Furniture Mart + +usb:v0053* + ID_VENDOR_FROM_DATABASE=Planex + +usb:v0053p5301* + ID_MODEL_FROM_DATABASE=GW-US54ZGL 802.11bg + +usb:v0079* + ID_VENDOR_FROM_DATABASE=DragonRise Inc. + +usb:v0079p0006* + ID_MODEL_FROM_DATABASE=Generic USB Joystick + +usb:v0079p0011* + ID_MODEL_FROM_DATABASE=Gamepad + +usb:v0105* + ID_VENDOR_FROM_DATABASE=Trust International B.V. + +usb:v0105p145F* + ID_MODEL_FROM_DATABASE=NW-3100 802.11b/g 54Mbps Wireless Network Adapter [zd1211] + +usb:v0145* + ID_VENDOR_FROM_DATABASE=Unknown + +usb:v0145p0112* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v017C* + ID_VENDOR_FROM_DATABASE=MLK + +usb:v017Cp145F* + ID_MODEL_FROM_DATABASE=Trust Deskset + +usb:v0204* + ID_VENDOR_FROM_DATABASE=Chipsbank Microelectronics Co., Ltd + +usb:v0204p6025* + ID_MODEL_FROM_DATABASE=CBM2080 Flash drive controller + +usb:v0204p6026* + ID_MODEL_FROM_DATABASE=CBM1180 Flash drive controller + +usb:v0218* + ID_VENDOR_FROM_DATABASE=Hangzhou Worlde + +usb:v0218p0301* + ID_MODEL_FROM_DATABASE=MIDI Port + +usb:v02AD* + ID_VENDOR_FROM_DATABASE=HUMAX Co., Ltd. + +usb:v02ADp138C* + ID_MODEL_FROM_DATABASE=PVR Mass Storage + +usb:v0300* + ID_VENDOR_FROM_DATABASE=MM300 eBook Reader + +usb:v0324* + ID_VENDOR_FROM_DATABASE=OCZ Technology Inc + +usb:v0324pBC06* + ID_MODEL_FROM_DATABASE=OCZ ATV USB 2.0 Flash Drive + +usb:v0324pBC08* + ID_MODEL_FROM_DATABASE=OCZ Rally2/ATV USB 2.0 Flash Drive + +usb:v0325* + ID_VENDOR_FROM_DATABASE=OCZ Technology Inc + +usb:v0325pAC02* + ID_MODEL_FROM_DATABASE=ATV Turbo / Rally2 Dual Channel USB 2.0 Flash Drive + +usb:v0386* + ID_VENDOR_FROM_DATABASE=LTS + +usb:v0386p0001* + ID_MODEL_FROM_DATABASE=PSX for USB Converter + +usb:v03D9* + ID_VENDOR_FROM_DATABASE=Shenzhen Sinote Tech-Electron Co., Ltd + +usb:v03D9p0499* + ID_MODEL_FROM_DATABASE=SE340D PC Remote Control + +usb:v03DA* + ID_VENDOR_FROM_DATABASE=Bernd Walter Computer Technology + +usb:v03DAp0002* + ID_MODEL_FROM_DATABASE=HD44780 LCD interface + +usb:v03E8* + ID_VENDOR_FROM_DATABASE=EndPoints, Inc. + +usb:v03E8p0004* + ID_MODEL_FROM_DATABASE=SE401 Webcam + +usb:v03E8p0008* + ID_MODEL_FROM_DATABASE=101 Ethernet [klsi] + +usb:v03E8p0015* + ID_MODEL_FROM_DATABASE=ATAPI Enclosure + +usb:v03E8p2123* + ID_MODEL_FROM_DATABASE=SiPix StyleCam Deluxe + +usb:v03E8p8004* + ID_MODEL_FROM_DATABASE=Aox 99001 + +usb:v03E9* + ID_VENDOR_FROM_DATABASE=Thesys Microelectronics + +usb:v03EA* + ID_VENDOR_FROM_DATABASE=Data Broadcasting Corp. + +usb:v03EB* + ID_VENDOR_FROM_DATABASE=Atmel Corp. + +usb:v03EBp0902* + ID_MODEL_FROM_DATABASE=4-Port Hub + +usb:v03EBp2002* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v03EBp2015* + ID_MODEL_FROM_DATABASE=at90usbkey sample firmware (HID keyboard) + +usb:v03EBp2018* + ID_MODEL_FROM_DATABASE=at90usbkey sample firmware (CDC ACM) + +usb:v03EBp2019* + ID_MODEL_FROM_DATABASE=stk525 sample firmware (microphone) + +usb:v03EBp201C* + ID_MODEL_FROM_DATABASE=at90usbkey sample firmware (HID mouse) + +usb:v03EBp201D* + ID_MODEL_FROM_DATABASE=at90usbkey sample firmware (HID generic) + +usb:v03EBp2022* + ID_MODEL_FROM_DATABASE=at90usbkey sample firmware (composite device) + +usb:v03EBp2040* + ID_MODEL_FROM_DATABASE=LUFA Test PID + +usb:v03EBp2041* + ID_MODEL_FROM_DATABASE=LUFA Mouse Demo Application + +usb:v03EBp2042* + ID_MODEL_FROM_DATABASE=LUFA Keyboard Demo Application + +usb:v03EBp2043* + ID_MODEL_FROM_DATABASE=LUFA Joystick Demo Application + +usb:v03EBp2044* + ID_MODEL_FROM_DATABASE=LUFA CDC Demo Application + +usb:v03EBp2045* + ID_MODEL_FROM_DATABASE=LUFA Mass Storage Demo Application + +usb:v03EBp2046* + ID_MODEL_FROM_DATABASE=LUFA Audio Output Demo Application + +usb:v03EBp2047* + ID_MODEL_FROM_DATABASE=LUFA Audio Input Demo Application + +usb:v03EBp2048* + ID_MODEL_FROM_DATABASE=LUFA MIDI Demo Application + +usb:v03EBp2049* + ID_MODEL_FROM_DATABASE=Stripe Snoop Magnetic Stripe Reader + +usb:v03EBp204A* + ID_MODEL_FROM_DATABASE=LUFA CDC Class Bootloader + +usb:v03EBp204B* + ID_MODEL_FROM_DATABASE=LUFA USB to Serial Adapter Project + +usb:v03EBp204C* + ID_MODEL_FROM_DATABASE=LUFA RNDIS Demo Application + +usb:v03EBp204D* + ID_MODEL_FROM_DATABASE=LUFA Combined Mouse and Keyboard Demo Application + +usb:v03EBp204E* + ID_MODEL_FROM_DATABASE=LUFA Dual CDC Demo Application + +usb:v03EBp204F* + ID_MODEL_FROM_DATABASE=LUFA Generic HID Demo Application + +usb:v03EBp2060* + ID_MODEL_FROM_DATABASE=Benito Programmer Project + +usb:v03EBp2061* + ID_MODEL_FROM_DATABASE=LUFA Combined Mass Storage and Keyboard Demo Application + +usb:v03EBp2062* + ID_MODEL_FROM_DATABASE=LUFA Combined CDC and Mouse Demo Application + +usb:v03EBp2063* + ID_MODEL_FROM_DATABASE=LUFA Datalogger Device + +usb:v03EBp2064* + ID_MODEL_FROM_DATABASE=Interfaceless Control-Only LUFA Devices + +usb:v03EBp2065* + ID_MODEL_FROM_DATABASE=LUFA Test and Measurement Demo Application + +usb:v03EBp2066* + ID_MODEL_FROM_DATABASE=LUFA Multiple Report HID Demo + +usb:v03EBp2068* + ID_MODEL_FROM_DATABASE=LUFA Virtual Serial/Mass Storage Demo + +usb:v03EBp2069* + ID_MODEL_FROM_DATABASE=LUFA Webserver Project + +usb:v03EBp2103* + ID_MODEL_FROM_DATABASE=JTAG ICE mkII + +usb:v03EBp2104* + ID_MODEL_FROM_DATABASE=AVR ISP mkII + +usb:v03EBp2105* + ID_MODEL_FROM_DATABASE=AVRONE! + +usb:v03EBp2106* + ID_MODEL_FROM_DATABASE=STK600 development board + +usb:v03EBp2107* + ID_MODEL_FROM_DATABASE=AVR Dragon + +usb:v03EBp2109* + ID_MODEL_FROM_DATABASE=STK541 ZigBee Development Board + +usb:v03EBp210D* + ID_MODEL_FROM_DATABASE=XPLAIN evaluation kit (CDC ACM) + +usb:v03EBp2122* + ID_MODEL_FROM_DATABASE=XMEGA-A1 Explained evaluation kit + +usb:v03EBp2310* + ID_MODEL_FROM_DATABASE=EVK11xx evaluation board + +usb:v03EBp2FE4* + ID_MODEL_FROM_DATABASE=ATxmega32A4U DFU bootloader + +usb:v03EBp2FFB* + ID_MODEL_FROM_DATABASE=at90usb AVR DFU bootloader + +usb:v03EBp2FFD* + ID_MODEL_FROM_DATABASE=at89c5130/c5131 DFU bootloader + +usb:v03EBp2FFF* + ID_MODEL_FROM_DATABASE=at89c5132/c51snd1c DFU bootloader + +usb:v03EBp3301* + ID_MODEL_FROM_DATABASE=at43301 4-Port Hub + +usb:v03EBp3312* + ID_MODEL_FROM_DATABASE=4-Port Hub + +usb:v03EBp4102* + ID_MODEL_FROM_DATABASE=AirVast W-Buddie WN210 + +usb:v03EBp5601* + ID_MODEL_FROM_DATABASE=at76c510 Prism-II 802.11b Access Point + +usb:v03EBp5603* + ID_MODEL_FROM_DATABASE=Cisco 7920 WiFi IP Phone + +usb:v03EBp6119* + ID_MODEL_FROM_DATABASE=AT91SAM CDC Demo Application + +usb:v03EBp6124* + ID_MODEL_FROM_DATABASE=at91sam SAMBA bootloader + +usb:v03EBp6127* + ID_MODEL_FROM_DATABASE=AT91SAM HID Keyboard Demo Application + +usb:v03EBp6129* + ID_MODEL_FROM_DATABASE=AT91SAM Mass Storage Demo Application + +usb:v03EBp6200* + ID_MODEL_FROM_DATABASE=AT91SAM HID Mouse Demo Application + +usb:v03EBp7603* + ID_MODEL_FROM_DATABASE=D-Link DWL-120 802.11b Wireless Adapter [Atmel at76c503a] + +usb:v03EBp7604* + ID_MODEL_FROM_DATABASE=at76c503a 802.11b Adapter + +usb:v03EBp7605* + ID_MODEL_FROM_DATABASE=at76c503a 802.11b Adapter + +usb:v03EBp7606* + ID_MODEL_FROM_DATABASE=at76c505 802.11b Adapter + +usb:v03EBp7611* + ID_MODEL_FROM_DATABASE=at76c510 rfmd2948 802.11b Access Point + +usb:v03EBp7613* + ID_MODEL_FROM_DATABASE=WL-1130 USB + +usb:v03EBp7614* + ID_MODEL_FROM_DATABASE=AT76c505a Wireless Adapter + +usb:v03EBp7615* + ID_MODEL_FROM_DATABASE=AT76C505AMX Wireless Adapter + +usb:v03EBp7617* + ID_MODEL_FROM_DATABASE=AT76C505AS Wireless Adapter + +usb:v03EBp7800* + ID_MODEL_FROM_DATABASE=Mini Album + +usb:v03EBpFF07* + ID_MODEL_FROM_DATABASE=Tux Droid fish dongle + +usb:v03EC* + ID_VENDOR_FROM_DATABASE=Iwatsu America, Inc. + +usb:v03ED* + ID_VENDOR_FROM_DATABASE=Mitel Corp. + +usb:v03EE* + ID_VENDOR_FROM_DATABASE=Mitsumi + +usb:v03EEp0000* + ID_MODEL_FROM_DATABASE=CD-R/RW Drive + +usb:v03EEp2501* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v03EEp2502* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v03EEp5609* + ID_MODEL_FROM_DATABASE=Japanese Keyboard + +usb:v03EEp641F* + ID_MODEL_FROM_DATABASE=WIF-0402C Bluetooth Adapter + +usb:v03EEp6438* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v03EEp6440* + ID_MODEL_FROM_DATABASE=WML-C52APR Bluetooth Adapter + +usb:v03EEp6901* + ID_MODEL_FROM_DATABASE=SmartDisk FDD + +usb:v03EEp6902* + ID_MODEL_FROM_DATABASE=Floppy Disk Drive + +usb:v03EEp7500* + ID_MODEL_FROM_DATABASE=CD-R/RW + +usb:v03EEpFFFF* + ID_MODEL_FROM_DATABASE=Dongle with BlueCore in DFU mode + +usb:v03F0* + ID_VENDOR_FROM_DATABASE=Hewlett-Packard + +usb:v03F0p0004* + ID_MODEL_FROM_DATABASE=DeskJet 895c + +usb:v03F0p0011* + ID_MODEL_FROM_DATABASE=OfficeJet G55 + +usb:v03F0p0012* + ID_MODEL_FROM_DATABASE=DeskJet 1125C Printer Port + +usb:v03F0p0024* + ID_MODEL_FROM_DATABASE=KU-0316 Keyboard + +usb:v03F0p002A* + ID_MODEL_FROM_DATABASE=LaserJet P1102 + +usb:v03F0p0101* + ID_MODEL_FROM_DATABASE=ScanJet 4100c + +usb:v03F0p0102* + ID_MODEL_FROM_DATABASE=PhotoSmart S20 + +usb:v03F0p0104* + ID_MODEL_FROM_DATABASE=DeskJet 880c/970c + +usb:v03F0p0105* + ID_MODEL_FROM_DATABASE=ScanJet 4200c + +usb:v03F0p0107* + ID_MODEL_FROM_DATABASE=CD-Writer Plus + +usb:v03F0p010C* + ID_MODEL_FROM_DATABASE=Multimedia Keyboard Hub + +usb:v03F0p0111* + ID_MODEL_FROM_DATABASE=G55xi Printer/Scanner/Copier + +usb:v03F0p0117* + ID_MODEL_FROM_DATABASE=LaserJet 3200 + +usb:v03F0p011C* + ID_MODEL_FROM_DATABASE=hn210w 802.11b Adapter + +usb:v03F0p011D* + ID_MODEL_FROM_DATABASE=Bluetooth 1.2 Interface [Broadcom BCM2035] + +usb:v03F0p0121* + ID_MODEL_FROM_DATABASE=HP49g+ Calculator + +usb:v03F0p0122* + ID_MODEL_FROM_DATABASE=HID Internet Keyboard + +usb:v03F0p0201* + ID_MODEL_FROM_DATABASE=ScanJet 6200c + +usb:v03F0p0202* + ID_MODEL_FROM_DATABASE=PhotoSmart S20 + +usb:v03F0p0204* + ID_MODEL_FROM_DATABASE=DeskJet 815c + +usb:v03F0p0205* + ID_MODEL_FROM_DATABASE=ScanJet 3300c + +usb:v03F0p0207* + ID_MODEL_FROM_DATABASE=CD-Writer Plus 8200e + +usb:v03F0p020C* + ID_MODEL_FROM_DATABASE=Multimedia Keyboard + +usb:v03F0p0211* + ID_MODEL_FROM_DATABASE=OfficeJet G85 + +usb:v03F0p0212* + ID_MODEL_FROM_DATABASE=DeskJet 1220C + +usb:v03F0p0217* + ID_MODEL_FROM_DATABASE=LaserJet 2200 + +usb:v03F0p0218* + ID_MODEL_FROM_DATABASE=APOLLO P2500/2600 + +usb:v03F0p0304* + ID_MODEL_FROM_DATABASE=DeskJet 810c/812c + +usb:v03F0p0305* + ID_MODEL_FROM_DATABASE=ScanJet 4300c + +usb:v03F0p0307* + ID_MODEL_FROM_DATABASE=CD-Writer+ CD-4e + +usb:v03F0p0311* + ID_MODEL_FROM_DATABASE=OfficeJet G85xi + +usb:v03F0p0312* + ID_MODEL_FROM_DATABASE=Color Inkjet CP1700 + +usb:v03F0p0314* + ID_MODEL_FROM_DATABASE=designjet 30/130 series + +usb:v03F0p0317* + ID_MODEL_FROM_DATABASE=LaserJet 1200 + +usb:v03F0p0324* + ID_MODEL_FROM_DATABASE=SK-2885 keyboard + +usb:v03F0p0401* + ID_MODEL_FROM_DATABASE=ScanJet 5200c + +usb:v03F0p0404* + ID_MODEL_FROM_DATABASE=DeskJet 830c/832c + +usb:v03F0p0405* + ID_MODEL_FROM_DATABASE=ScanJet 3400cse + +usb:v03F0p0411* + ID_MODEL_FROM_DATABASE=OfficeJet G95 + +usb:v03F0p0412* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v03F0p0417* + ID_MODEL_FROM_DATABASE=LaserJet 1200 series + +usb:v03F0p0423* + ID_MODEL_FROM_DATABASE=HS-COMBO Cardreader + +usb:v03F0p0504* + ID_MODEL_FROM_DATABASE=DeskJet 885c + +usb:v03F0p0505* + ID_MODEL_FROM_DATABASE=ScanJet 2100c + +usb:v03F0p0507* + ID_MODEL_FROM_DATABASE=DVD+RW + +usb:v03F0p050C* + ID_MODEL_FROM_DATABASE=5219 Wireless Keyboard + +usb:v03F0p0511* + ID_MODEL_FROM_DATABASE=OfficeJet K60 + +usb:v03F0p0512* + ID_MODEL_FROM_DATABASE=DeckJet 450 + +usb:v03F0p0517* + ID_MODEL_FROM_DATABASE=LaserJet 1000 + +usb:v03F0p051D* + ID_MODEL_FROM_DATABASE=Bluetooth Interface + +usb:v03F0p0601* + ID_MODEL_FROM_DATABASE=ScanJet 6300c + +usb:v03F0p0604* + ID_MODEL_FROM_DATABASE=DeskJet 840c + +usb:v03F0p0605* + ID_MODEL_FROM_DATABASE=ScanJet 2200c + +usb:v03F0p0611* + ID_MODEL_FROM_DATABASE=OfficeJet K60xi + +usb:v03F0p0612* + ID_MODEL_FROM_DATABASE=business inkjet 3000 + +usb:v03F0p0624* + ID_MODEL_FROM_DATABASE=Bluetooth Dongle + +usb:v03F0p0701* + ID_MODEL_FROM_DATABASE=ScanJet 5300c/5370c + +usb:v03F0p0704* + ID_MODEL_FROM_DATABASE=DeskJet 825c + +usb:v03F0p0705* + ID_MODEL_FROM_DATABASE=ScanJet 4400c + +usb:v03F0p0711* + ID_MODEL_FROM_DATABASE=OfficeJet K80 + +usb:v03F0p0712* + ID_MODEL_FROM_DATABASE=DeskJet 1180c + +usb:v03F0p0714* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v03F0p0801* + ID_MODEL_FROM_DATABASE=ScanJet 7400c + +usb:v03F0p0804* + ID_MODEL_FROM_DATABASE=DeskJet 816c + +usb:v03F0p0805* + ID_MODEL_FROM_DATABASE=HP4470C + +usb:v03F0p0811* + ID_MODEL_FROM_DATABASE=OfficeJet K80xi + +usb:v03F0p0817* + ID_MODEL_FROM_DATABASE=LaserJet 3300 + +usb:v03F0p0901* + ID_MODEL_FROM_DATABASE=ScanJet 2300c + +usb:v03F0p0904* + ID_MODEL_FROM_DATABASE=DeskJet 845c + +usb:v03F0p0912* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v03F0p0917* + ID_MODEL_FROM_DATABASE=LaserJet 3330 + +usb:v03F0p0924* + ID_MODEL_FROM_DATABASE=Modular Smartcard Keyboard + +usb:v03F0p0A01* + ID_MODEL_FROM_DATABASE=ScanJet 2400c + +usb:v03F0p0A17* + ID_MODEL_FROM_DATABASE=color LaserJet 3700 + +usb:v03F0p0B01* + ID_MODEL_FROM_DATABASE=ScanJet 82x0C + +usb:v03F0p0B0C* + ID_MODEL_FROM_DATABASE=Wireless Keyboard and Optical Mouse receiver + +usb:v03F0p0B17* + ID_MODEL_FROM_DATABASE=LaserJet 2300d + +usb:v03F0p0C17* + ID_MODEL_FROM_DATABASE=LaserJet 1010 + +usb:v03F0p0C24* + ID_MODEL_FROM_DATABASE=Bluetooth Dongle + +usb:v03F0p0D12* + ID_MODEL_FROM_DATABASE=OfficeJet 9100 series + +usb:v03F0p0D17* + ID_MODEL_FROM_DATABASE=LaserJet 1012 + +usb:v03F0p0E17* + ID_MODEL_FROM_DATABASE=LaserJet 1015 + +usb:v03F0p0F0C* + ID_MODEL_FROM_DATABASE=Wireless Keyboard and Optical Mouse receiver + +usb:v03F0p0F11* + ID_MODEL_FROM_DATABASE=OfficeJet V40 + +usb:v03F0p0F12* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v03F0p0F17* + ID_MODEL_FROM_DATABASE=LaserJet 1150 + +usb:v03F0p1001* + ID_MODEL_FROM_DATABASE=Photo Scanner 1000 + +usb:v03F0p1002* + ID_MODEL_FROM_DATABASE=PhotoSmart 140 series + +usb:v03F0p1004* + ID_MODEL_FROM_DATABASE=DeskJet 970c/970cse + +usb:v03F0p1005* + ID_MODEL_FROM_DATABASE=ScanJet 5400c + +usb:v03F0p1011* + ID_MODEL_FROM_DATABASE=OfficeJet V40xi + +usb:v03F0p1016* + ID_MODEL_FROM_DATABASE=Jornada 548 / iPAQ HW6515 Pocket PC + +usb:v03F0p1017* + ID_MODEL_FROM_DATABASE=LaserJet 1300 + +usb:v03F0p1024* + ID_MODEL_FROM_DATABASE=Smart Card Keyboard + +usb:v03F0p1027* + ID_MODEL_FROM_DATABASE=Virtual keyboard and mouse + +usb:v03F0p1102* + ID_MODEL_FROM_DATABASE=PhotoSmart 240 series + +usb:v03F0p1104* + ID_MODEL_FROM_DATABASE=DeskJet 959c + +usb:v03F0p1105* + ID_MODEL_FROM_DATABASE=ScanJet 5470c/5490c + +usb:v03F0p1111* + ID_MODEL_FROM_DATABASE=OfficeJet v60 + +usb:v03F0p1116* + ID_MODEL_FROM_DATABASE=Jornada 568 Pocket PC + +usb:v03F0p1117* + ID_MODEL_FROM_DATABASE=LaserJet 1300n + +usb:v03F0p1151* + ID_MODEL_FROM_DATABASE=PSC-750xi Printer/Scanner/Copier + +usb:v03F0p1202* + ID_MODEL_FROM_DATABASE=PhotoSmart 320 series + +usb:v03F0p1204* + ID_MODEL_FROM_DATABASE=DeskJet 930c + +usb:v03F0p1205* + ID_MODEL_FROM_DATABASE=ScanJet 4500C/5550C + +usb:v03F0p1211* + ID_MODEL_FROM_DATABASE=OfficeJet v60xi + +usb:v03F0p1217* + ID_MODEL_FROM_DATABASE=LaserJet 2300L + +usb:v03F0p1302* + ID_MODEL_FROM_DATABASE=PhotoSmart 370 series + +usb:v03F0p1305* + ID_MODEL_FROM_DATABASE=ScanJet 4570c + +usb:v03F0p1311* + ID_MODEL_FROM_DATABASE=OfficeJet V30 + +usb:v03F0p1312* + ID_MODEL_FROM_DATABASE=DeskJet 460 + +usb:v03F0p1317* + ID_MODEL_FROM_DATABASE=LaserJet 1005 + +usb:v03F0p1327* + ID_MODEL_FROM_DATABASE=iLO Virtual Hub + +usb:v03F0p1405* + ID_MODEL_FROM_DATABASE=ScanJet 3670 + +usb:v03F0p1411* + ID_MODEL_FROM_DATABASE=PSC 750 + +usb:v03F0p1424* + ID_MODEL_FROM_DATABASE=f2105 Monitor Hub + +usb:v03F0p1502* + ID_MODEL_FROM_DATABASE=PhotoSmart 420 series + +usb:v03F0p1504* + ID_MODEL_FROM_DATABASE=DeskJet 920c + +usb:v03F0p150C* + ID_MODEL_FROM_DATABASE=Mood Lighting (Microchip Technology Inc.) + +usb:v03F0p1511* + ID_MODEL_FROM_DATABASE=PSC 750xi + +usb:v03F0p1512* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v03F0p1517* + ID_MODEL_FROM_DATABASE=color LaserJet 3500 + +usb:v03F0p1524* + ID_MODEL_FROM_DATABASE=Smart Card Keyboard - KR + +usb:v03F0p1602* + ID_MODEL_FROM_DATABASE=PhotoSmart 330 series + +usb:v03F0p1604* + ID_MODEL_FROM_DATABASE=DeskJet 940c + +usb:v03F0p1605* + ID_MODEL_FROM_DATABASE=ScanJet 5530C PhotoSmart + +usb:v03F0p1611* + ID_MODEL_FROM_DATABASE=psc 780 + +usb:v03F0p1617* + ID_MODEL_FROM_DATABASE=LaserJet 3015 + +usb:v03F0p161D* + ID_MODEL_FROM_DATABASE=Wireless Rechargeable Optical Mouse (HID) + +usb:v03F0p1624* + ID_MODEL_FROM_DATABASE=Smart Card Keyboard - JP + +usb:v03F0p1702* + ID_MODEL_FROM_DATABASE=PhotoSmart 380 series + +usb:v03F0p1704* + ID_MODEL_FROM_DATABASE=DeskJet 948C + +usb:v03F0p1705* + ID_MODEL_FROM_DATABASE=ScanJet 5590 + +usb:v03F0p1711* + ID_MODEL_FROM_DATABASE=psc 780xi + +usb:v03F0p1712* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v03F0p1717* + ID_MODEL_FROM_DATABASE=LaserJet 3020 + +usb:v03F0p171D* + ID_MODEL_FROM_DATABASE=Bluetooth 2.0 Interface [Broadcom BCM2045] + +usb:v03F0p1801* + ID_MODEL_FROM_DATABASE=Inkjet P-2000U + +usb:v03F0p1802* + ID_MODEL_FROM_DATABASE=PhotoSmart 470 series + +usb:v03F0p1804* + ID_MODEL_FROM_DATABASE=DeskJet 916C + +usb:v03F0p1805* + ID_MODEL_FROM_DATABASE=ScanJet 7650 + +usb:v03F0p1811* + ID_MODEL_FROM_DATABASE=PSC 720 + +usb:v03F0p1812* + ID_MODEL_FROM_DATABASE=OfficeJet Pro K550 + +usb:v03F0p1817* + ID_MODEL_FROM_DATABASE=LaserJet 3030 + +usb:v03F0p181D* + ID_MODEL_FROM_DATABASE=Bluetooth 2.0 Interface + +usb:v03F0p1902* + ID_MODEL_FROM_DATABASE=PhotoSmart A430 series + +usb:v03F0p1904* + ID_MODEL_FROM_DATABASE=DeskJet 3820 + +usb:v03F0p1911* + ID_MODEL_FROM_DATABASE=OfficeJet V45 + +usb:v03F0p1917* + ID_MODEL_FROM_DATABASE=LaserJet 3380 + +usb:v03F0p1A02* + ID_MODEL_FROM_DATABASE=PhotoSmart A510 series + +usb:v03F0p1A11* + ID_MODEL_FROM_DATABASE=OfficeJet 5100 series + +usb:v03F0p1A17* + ID_MODEL_FROM_DATABASE=color LaserJet 4650 + +usb:v03F0p1B02* + ID_MODEL_FROM_DATABASE=PhotoSmart A610 series + +usb:v03F0p1B04* + ID_MODEL_FROM_DATABASE=DeskJet 3810 + +usb:v03F0p1B05* + ID_MODEL_FROM_DATABASE=ScanJet 4850C/4890C + +usb:v03F0p1B07* + ID_MODEL_FROM_DATABASE=Premium Starter Webcam + +usb:v03F0p1C02* + ID_MODEL_FROM_DATABASE=PhotoSmart A710 series + +usb:v03F0p1C17* + ID_MODEL_FROM_DATABASE=Color LaserJet 2550l + +usb:v03F0p1D02* + ID_MODEL_FROM_DATABASE=PhotoSmart A310 series + +usb:v03F0p1D17* + ID_MODEL_FROM_DATABASE=LaserJet 1320 + +usb:v03F0p1E02* + ID_MODEL_FROM_DATABASE=PhotoSmart A320 Printer series + +usb:v03F0p1E11* + ID_MODEL_FROM_DATABASE=PSC-950 + +usb:v03F0p1E17* + ID_MODEL_FROM_DATABASE=LaserJet 1160 series + +usb:v03F0p1F02* + ID_MODEL_FROM_DATABASE=PhotoSmart A440 Printer series + +usb:v03F0p1F11* + ID_MODEL_FROM_DATABASE=PSC 920 + +usb:v03F0p1F12* + ID_MODEL_FROM_DATABASE=OfficeJet Pro K5300 + +usb:v03F0p1F17* + ID_MODEL_FROM_DATABASE=color LaserJet 5550 + +usb:v03F0p1F1D* + ID_MODEL_FROM_DATABASE=un2400 Gobi Wireless Modem + +usb:v03F0p2001* + ID_MODEL_FROM_DATABASE=Floppy + +usb:v03F0p2002* + ID_MODEL_FROM_DATABASE=Hub + +usb:v03F0p2004* + ID_MODEL_FROM_DATABASE=DeskJet 640c + +usb:v03F0p2005* + ID_MODEL_FROM_DATABASE=ScanJet 3570c + +usb:v03F0p2012* + ID_MODEL_FROM_DATABASE=OfficeJet Pro K5400 + +usb:v03F0p201D* + ID_MODEL_FROM_DATABASE=un2400 Gobi Wireless Modem (QDL mode) + +usb:v03F0p2102* + ID_MODEL_FROM_DATABASE=PhotoSmart 7345 + +usb:v03F0p2104* + ID_MODEL_FROM_DATABASE=DeskJet 630c + +usb:v03F0p2112* + ID_MODEL_FROM_DATABASE=OfficeJet Pro L7500 + +usb:v03F0p211D* + ID_MODEL_FROM_DATABASE=Sierra MC5725 [ev2210] + +usb:v03F0p2202* + ID_MODEL_FROM_DATABASE=PhotoSmart 7600 series + +usb:v03F0p2205* + ID_MODEL_FROM_DATABASE=ScanJet 3500c + +usb:v03F0p2212* + ID_MODEL_FROM_DATABASE=OfficeJet Pro L7600 + +usb:v03F0p2217* + ID_MODEL_FROM_DATABASE=color LaserJet 9500 MFP + +usb:v03F0p2302* + ID_MODEL_FROM_DATABASE=PhotoSmart 7600 series + +usb:v03F0p2304* + ID_MODEL_FROM_DATABASE=DeskJet 656c + +usb:v03F0p2305* + ID_MODEL_FROM_DATABASE=ScanJet 3970c + +usb:v03F0p2311* + ID_MODEL_FROM_DATABASE=OfficeJet d series + +usb:v03F0p2312* + ID_MODEL_FROM_DATABASE=OfficeJet Pro L7700 + +usb:v03F0p2317* + ID_MODEL_FROM_DATABASE=LaserJet 4350 + +usb:v03F0p231D* + ID_MODEL_FROM_DATABASE=4 GB Flash Drive + +usb:v03F0p2402* + ID_MODEL_FROM_DATABASE=PhotoSmart 7700 series + +usb:v03F0p2404* + ID_MODEL_FROM_DATABASE=Deskjet F2280 series + +usb:v03F0p2405* + ID_MODEL_FROM_DATABASE=ScanJet 4070 PhotoSmart + +usb:v03F0p2417* + ID_MODEL_FROM_DATABASE=LaserJet 4250 + +usb:v03F0p241D* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem (QDL mode) + +usb:v03F0p2424* + ID_MODEL_FROM_DATABASE=LP1965 19" Monitor Hub + +usb:v03F0p2502* + ID_MODEL_FROM_DATABASE=PhotoSmart 7700 series + +usb:v03F0p2504* + ID_MODEL_FROM_DATABASE=DeskJet F4200 series + +usb:v03F0p2505* + ID_MODEL_FROM_DATABASE=ScanJet 3770 + +usb:v03F0p2512* + ID_MODEL_FROM_DATABASE=OfficeJet Pro L7300 + +usb:v03F0p2517* + ID_MODEL_FROM_DATABASE=LaserJet 2410 + +usb:v03F0p251D* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem + +usb:v03F0p2524* + ID_MODEL_FROM_DATABASE=LP3065 30" Monitor Hub + +usb:v03F0p2602* + ID_MODEL_FROM_DATABASE=PhotoSmart A520 series + +usb:v03F0p2605* + ID_MODEL_FROM_DATABASE=ScanJet 3800c + +usb:v03F0p2611* + ID_MODEL_FROM_DATABASE=OfficeJet 7100 series + +usb:v03F0p2617* + ID_MODEL_FROM_DATABASE=Color LaserJet 2820 series + +usb:v03F0p2624* + ID_MODEL_FROM_DATABASE=Pole Display (HP522 2 x 20 Line Display) + +usb:v03F0p2702* + ID_MODEL_FROM_DATABASE=PhotoSmart A620 series + +usb:v03F0p2704* + ID_MODEL_FROM_DATABASE=DeskJet 915 + +usb:v03F0p2717* + ID_MODEL_FROM_DATABASE=Color LaserJet 2830 + +usb:v03F0p2811* + ID_MODEL_FROM_DATABASE=PSC-2100 + +usb:v03F0p2817* + ID_MODEL_FROM_DATABASE=Color LaserJet 2840 + +usb:v03F0p2902* + ID_MODEL_FROM_DATABASE=PhotoSmart A820 series + +usb:v03F0p2911* + ID_MODEL_FROM_DATABASE=PSC 2200 + +usb:v03F0p2917* + ID_MODEL_FROM_DATABASE=LaserJet 2420 + +usb:v03F0p2A11* + ID_MODEL_FROM_DATABASE=PSC 2150 series + +usb:v03F0p2A17* + ID_MODEL_FROM_DATABASE=LaserJet 2430 + +usb:v03F0p2B11* + ID_MODEL_FROM_DATABASE=PSC 2170 series + +usb:v03F0p2B17* + ID_MODEL_FROM_DATABASE=LaserJet 1020 + +usb:v03F0p2C12* + ID_MODEL_FROM_DATABASE=Officejet J4680 + +usb:v03F0p2C17* + ID_MODEL_FROM_DATABASE=LaserJet 1022 + +usb:v03F0p2C24* + ID_MODEL_FROM_DATABASE=Logitech M-UAL-96 Mouse + +usb:v03F0p2D05* + ID_MODEL_FROM_DATABASE=Scanjet 7000 + +usb:v03F0p2D11* + ID_MODEL_FROM_DATABASE=OfficeJet 6110 + +usb:v03F0p2D17* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v03F0p2E11* + ID_MODEL_FROM_DATABASE=PSC 1000 + +usb:v03F0p2E17* + ID_MODEL_FROM_DATABASE=LaserJet 2600n + +usb:v03F0p2E24* + ID_MODEL_FROM_DATABASE=LP2275w Monitor Hub + +usb:v03F0p2F11* + ID_MODEL_FROM_DATABASE=PSC 1200 + +usb:v03F0p2F17* + ID_MODEL_FROM_DATABASE=EWS 2605dn + +usb:v03F0p2F24* + ID_MODEL_FROM_DATABASE=LP2475w Monitor Hub + +usb:v03F0p3002* + ID_MODEL_FROM_DATABASE=PhotoSmart P1000 + +usb:v03F0p3004* + ID_MODEL_FROM_DATABASE=DeskJet 980c + +usb:v03F0p3005* + ID_MODEL_FROM_DATABASE=ScanJet 4670v + +usb:v03F0p3011* + ID_MODEL_FROM_DATABASE=PSC 1100 series + +usb:v03F0p3017* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v03F0p3102* + ID_MODEL_FROM_DATABASE=PhotoSmart P1100 Printer w/ Card Reader + +usb:v03F0p3104* + ID_MODEL_FROM_DATABASE=DeskJet 960c + +usb:v03F0p3111* + ID_MODEL_FROM_DATABASE=OfficeJet 4100 series + +usb:v03F0p3117* + ID_MODEL_FROM_DATABASE=EWS 2605dtn + +usb:v03F0p311D* + ID_MODEL_FROM_DATABASE=Atheros AR9285 Malbec Bluetooth Adapter + +usb:v03F0p3202* + ID_MODEL_FROM_DATABASE=PhotoSmart 1215 + +usb:v03F0p3207* + ID_MODEL_FROM_DATABASE=4 GB flash drive + +usb:v03F0p3211* + ID_MODEL_FROM_DATABASE=OfficeJet 4105 series + +usb:v03F0p3217* + ID_MODEL_FROM_DATABASE=LaserJet 3050 + +usb:v03F0p3302* + ID_MODEL_FROM_DATABASE=PhotoSmart 1218 + +usb:v03F0p3304* + ID_MODEL_FROM_DATABASE=DeskJet 990c + +usb:v03F0p3312* + ID_MODEL_FROM_DATABASE=OfficeJet J6410 + +usb:v03F0p3317* + ID_MODEL_FROM_DATABASE=LaserJet 3052 + +usb:v03F0p3402* + ID_MODEL_FROM_DATABASE=PhotoSmart 1115 + +usb:v03F0p3404* + ID_MODEL_FROM_DATABASE=DeskJet 6122 + +usb:v03F0p3417* + ID_MODEL_FROM_DATABASE=LaserJet 3055 + +usb:v03F0p3502* + ID_MODEL_FROM_DATABASE=PhotoSmart 230 + +usb:v03F0p3504* + ID_MODEL_FROM_DATABASE=DeskJet 6127c + +usb:v03F0p3511* + ID_MODEL_FROM_DATABASE=PSC 2300 + +usb:v03F0p3517* + ID_MODEL_FROM_DATABASE=LaserJet 3390 + +usb:v03F0p3602* + ID_MODEL_FROM_DATABASE=PhotoSmart 1315 + +usb:v03F0p3611* + ID_MODEL_FROM_DATABASE=PSC 2410 PhotoSmart + +usb:v03F0p3617* + ID_MODEL_FROM_DATABASE=Color LaserJet 2605 + +usb:v03F0p3711* + ID_MODEL_FROM_DATABASE=PSC 2500 + +usb:v03F0p3717* + ID_MODEL_FROM_DATABASE=EWS UPD + +usb:v03F0p3724* + ID_MODEL_FROM_DATABASE=Webcam + +usb:v03F0p3802* + ID_MODEL_FROM_DATABASE=PhotoSmart 100 + +usb:v03F0p3807* + ID_MODEL_FROM_DATABASE=c485w Flash Drive + +usb:v03F0p3817* + ID_MODEL_FROM_DATABASE=LaserJet P2015 series + +usb:v03F0p3902* + ID_MODEL_FROM_DATABASE=PhotoSmart 130 + +usb:v03F0p3A02* + ID_MODEL_FROM_DATABASE=PhotoSmart 7150 + +usb:v03F0p3A11* + ID_MODEL_FROM_DATABASE=OfficeJet 5500 series + +usb:v03F0p3A17* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v03F0p3B02* + ID_MODEL_FROM_DATABASE=PhotoSmart 7150~ + +usb:v03F0p3B05* + ID_MODEL_FROM_DATABASE=Scanjet N8460 + +usb:v03F0p3B11* + ID_MODEL_FROM_DATABASE=PSC 1300 series + +usb:v03F0p3B17* + ID_MODEL_FROM_DATABASE=LaserJet M1005 MFP + +usb:v03F0p3C02* + ID_MODEL_FROM_DATABASE=PhotoSmart 7350 + +usb:v03F0p3C11* + ID_MODEL_FROM_DATABASE=PSC 1358 + +usb:v03F0p3C17* + ID_MODEL_FROM_DATABASE=EWS UPD + +usb:v03F0p3D02* + ID_MODEL_FROM_DATABASE=PhotoSmart 7350~ + +usb:v03F0p3D11* + ID_MODEL_FROM_DATABASE=OfficeJet 4215 + +usb:v03F0p3D17* + ID_MODEL_FROM_DATABASE=LaserJet P1005 + +usb:v03F0p3E02* + ID_MODEL_FROM_DATABASE=PhotoSmart 7550 + +usb:v03F0p3E17* + ID_MODEL_FROM_DATABASE=LaserJet P1006 + +usb:v03F0p3F02* + ID_MODEL_FROM_DATABASE=PhotoSmart 7550~ + +usb:v03F0p3F11* + ID_MODEL_FROM_DATABASE=PSC-1315/PSC-1317 + +usb:v03F0p4002* + ID_MODEL_FROM_DATABASE=PhotoSmart 635/715/720/735/935 (storage) + +usb:v03F0p4004* + ID_MODEL_FROM_DATABASE=cp1160 + +usb:v03F0p4102* + ID_MODEL_FROM_DATABASE=PhotoSmart 618 + +usb:v03F0p4105* + ID_MODEL_FROM_DATABASE=ScanJet 4370 + +usb:v03F0p4111* + ID_MODEL_FROM_DATABASE=OfficeJet 7200 series + +usb:v03F0p4117* + ID_MODEL_FROM_DATABASE=LaserJet 1018 + +usb:v03F0p4202* + ID_MODEL_FROM_DATABASE=PhotoSmart 812 + +usb:v03F0p4205* + ID_MODEL_FROM_DATABASE=ScanJet G3010 + +usb:v03F0p4211* + ID_MODEL_FROM_DATABASE=OfficeJet 7300 series + +usb:v03F0p4217* + ID_MODEL_FROM_DATABASE=EWS CM1015 + +usb:v03F0p4302* + ID_MODEL_FROM_DATABASE=PhotoSmart 850 (ptp) + +usb:v03F0p4305* + ID_MODEL_FROM_DATABASE=ScanJet G3110 + +usb:v03F0p4311* + ID_MODEL_FROM_DATABASE=OfficeJet 7400 series + +usb:v03F0p4317* + ID_MODEL_FROM_DATABASE=Color LaserJet CM1017 + +usb:v03F0p4402* + ID_MODEL_FROM_DATABASE=PhotoSmart 935 (ptp) + +usb:v03F0p4417* + ID_MODEL_FROM_DATABASE=EWS UPD + +usb:v03F0p4502* + ID_MODEL_FROM_DATABASE=PhotoSmart 945 (PTP mode) + +usb:v03F0p4505* + ID_MODEL_FROM_DATABASE=ScanJet G4010 + +usb:v03F0p4507* + ID_MODEL_FROM_DATABASE=External HDD + +usb:v03F0p4511* + ID_MODEL_FROM_DATABASE=PhotoSmart 2600 + +usb:v03F0p4512* + ID_MODEL_FROM_DATABASE=E709n [Officejet 6500 Wireless] + +usb:v03F0p4517* + ID_MODEL_FROM_DATABASE=EWS UPD + +usb:v03F0p4605* + ID_MODEL_FROM_DATABASE=ScanJet G4050 + +usb:v03F0p4611* + ID_MODEL_FROM_DATABASE=PhotoSmart 2700 + +usb:v03F0p4717* + ID_MODEL_FROM_DATABASE=Color LaserJet CP1215 + +usb:v03F0p4811* + ID_MODEL_FROM_DATABASE=PSC 1600 + +usb:v03F0p4911* + ID_MODEL_FROM_DATABASE=PSC 2350 + +usb:v03F0p4B11* + ID_MODEL_FROM_DATABASE=OfficeJet 6200 + +usb:v03F0p4C11* + ID_MODEL_FROM_DATABASE=PSC 1500 series + +usb:v03F0p4C17* + ID_MODEL_FROM_DATABASE=EWS UPD + +usb:v03F0p4D11* + ID_MODEL_FROM_DATABASE=PSC 1400 + +usb:v03F0p4D17* + ID_MODEL_FROM_DATABASE=EWS UPD + +usb:v03F0p4E11* + ID_MODEL_FROM_DATABASE=PhotoSmart 2570 series + +usb:v03F0p4F11* + ID_MODEL_FROM_DATABASE=OfficeJet 5600 (USBHUB) + +usb:v03F0p4F17* + ID_MODEL_FROM_DATABASE=Color LaserJet CM1312 MFP + +usb:v03F0p5004* + ID_MODEL_FROM_DATABASE=DeskJet 995c + +usb:v03F0p5011* + ID_MODEL_FROM_DATABASE=PhotoSmart 3100 series + +usb:v03F0p5017* + ID_MODEL_FROM_DATABASE=EWS UPD + +usb:v03F0p5111* + ID_MODEL_FROM_DATABASE=PhotoSmart 3200 series + +usb:v03F0p5211* + ID_MODEL_FROM_DATABASE=PhotoSmart 3300 series + +usb:v03F0p5311* + ID_MODEL_FROM_DATABASE=OfficeJet 6300 + +usb:v03F0p5312* + ID_MODEL_FROM_DATABASE=Officejet Pro 8500A + +usb:v03F0p5411* + ID_MODEL_FROM_DATABASE=OfficeJet 4300 + +usb:v03F0p5511* + ID_MODEL_FROM_DATABASE=DeskJet F300 series + +usb:v03F0p5611* + ID_MODEL_FROM_DATABASE=PhotoSmart C3180 + +usb:v03F0p5617* + ID_MODEL_FROM_DATABASE=LaserJet M1120 MFP + +usb:v03F0p5711* + ID_MODEL_FROM_DATABASE=PhotoSmart C4100 series + +usb:v03F0p5717* + ID_MODEL_FROM_DATABASE=LaserJet M1120n MFP + +usb:v03F0p5811* + ID_MODEL_FROM_DATABASE=PhotoSmart C5100 series + +usb:v03F0p5817* + ID_MODEL_FROM_DATABASE=LaserJet M1319f MFP + +usb:v03F0p5911* + ID_MODEL_FROM_DATABASE=PhotoSmart C6180 + +usb:v03F0p5A11* + ID_MODEL_FROM_DATABASE=PhotoSmart C7100 series + +usb:v03F0p5B11* + ID_MODEL_FROM_DATABASE=OfficeJet J2100 series + +usb:v03F0p5C11* + ID_MODEL_FROM_DATABASE=PhotoSmart C4200 Printer series + +usb:v03F0p5C12* + ID_MODEL_FROM_DATABASE=OfficeJet 6700 + +usb:v03F0p5C17* + ID_MODEL_FROM_DATABASE=LaserJet P2055 series + +usb:v03F0p5D11* + ID_MODEL_FROM_DATABASE=PhotoSmart C5200 series + +usb:v03F0p5E11* + ID_MODEL_FROM_DATABASE=PhotoSmart D7400 series + +usb:v03F0p6004* + ID_MODEL_FROM_DATABASE=DeskJet 5550 + +usb:v03F0p6102* + ID_MODEL_FROM_DATABASE=Hewlett Packard Digital Camera + +usb:v03F0p6104* + ID_MODEL_FROM_DATABASE=DeskJet 5650c + +usb:v03F0p6117* + ID_MODEL_FROM_DATABASE=color LaserJet 3550 + +usb:v03F0p6202* + ID_MODEL_FROM_DATABASE=PhotoSmart 215 + +usb:v03F0p6204* + ID_MODEL_FROM_DATABASE=DeskJet 5150c + +usb:v03F0p6217* + ID_MODEL_FROM_DATABASE=Color LaserJet 4700 + +usb:v03F0p6302* + ID_MODEL_FROM_DATABASE=PhotoSmart 318/612 + +usb:v03F0p6317* + ID_MODEL_FROM_DATABASE=Color LaserJet 4730mfp + +usb:v03F0p6402* + ID_MODEL_FROM_DATABASE=PhotoSmart 715 (ptp) + +usb:v03F0p6411* + ID_MODEL_FROM_DATABASE=PhotoSmart C8100 series + +usb:v03F0p6417* + ID_MODEL_FROM_DATABASE=LaserJet 5200 + +usb:v03F0p6502* + ID_MODEL_FROM_DATABASE=PhotoSmart 120 (ptp) + +usb:v03F0p6511* + ID_MODEL_FROM_DATABASE=PhotoSmart C7200 series + +usb:v03F0p6602* + ID_MODEL_FROM_DATABASE=PhotoSmart 320 + +usb:v03F0p6611* + ID_MODEL_FROM_DATABASE=PhotoSmart C4380 series + +usb:v03F0p6617* + ID_MODEL_FROM_DATABASE=LaserJet 5200L + +usb:v03F0p6702* + ID_MODEL_FROM_DATABASE=PhotoSmart 720 (ptp) + +usb:v03F0p6717* + ID_MODEL_FROM_DATABASE=Color LaserJet 3000 + +usb:v03F0p6802* + ID_MODEL_FROM_DATABASE=PhotoSmart 620 (ptp) + +usb:v03F0p6811* + ID_MODEL_FROM_DATABASE=PhotoSmart D5300 series + +usb:v03F0p6817* + ID_MODEL_FROM_DATABASE=Color LaserJet 3800 + +usb:v03F0p6911* + ID_MODEL_FROM_DATABASE=PhotoSmart D7200 series + +usb:v03F0p6917* + ID_MODEL_FROM_DATABASE=Color LaserJet 3600 + +usb:v03F0p6A02* + ID_MODEL_FROM_DATABASE=PhotoSmart 735 (ptp) + +usb:v03F0p6A11* + ID_MODEL_FROM_DATABASE=PhotoSmart C6200 series + +usb:v03F0p6A17* + ID_MODEL_FROM_DATABASE=LaserJet 4240 + +usb:v03F0p6B02* + ID_MODEL_FROM_DATABASE=PhotoSmart R707 (PTP mode) + +usb:v03F0p6B11* + ID_MODEL_FROM_DATABASE=Photosmart C4500 series + +usb:v03F0p6C17* + ID_MODEL_FROM_DATABASE=Color LaserJet 4610 + +usb:v03F0p6F17* + ID_MODEL_FROM_DATABASE=Color LaserJet CP6015 series + +usb:v03F0p7004* + ID_MODEL_FROM_DATABASE=DeskJet 3320c + +usb:v03F0p7102* + ID_MODEL_FROM_DATABASE=PhotoSmart 635 (PTP mode) + +usb:v03F0p7104* + ID_MODEL_FROM_DATABASE=DeskJet 3420c + +usb:v03F0p7117* + ID_MODEL_FROM_DATABASE=CM8060 Color MFP with Edgeline Technology + +usb:v03F0p7202* + ID_MODEL_FROM_DATABASE=PhotoSmart 43x (ptp) + +usb:v03F0p7204* + ID_MODEL_FROM_DATABASE=DeskJet 36xx + +usb:v03F0p7217* + ID_MODEL_FROM_DATABASE=LaserJet M5035 MFP + +usb:v03F0p7302* + ID_MODEL_FROM_DATABASE=PhotoSmart M307 (PTP mode) + +usb:v03F0p7304* + ID_MODEL_FROM_DATABASE=DeskJet 35xx + +usb:v03F0p7311* + ID_MODEL_FROM_DATABASE=Photosmart Premium C309 + +usb:v03F0p7317* + ID_MODEL_FROM_DATABASE=LaserJet P3005 + +usb:v03F0p7404* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v03F0p7417* + ID_MODEL_FROM_DATABASE=LaserJet M4345 MFP + +usb:v03F0p7504* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v03F0p7517* + ID_MODEL_FROM_DATABASE=LaserJet M3035 MFP + +usb:v03F0p7604* + ID_MODEL_FROM_DATABASE=DeskJet 3940 + +usb:v03F0p7611* + ID_MODEL_FROM_DATABASE=DeskJet F2492 All-in-One + +usb:v03F0p7617* + ID_MODEL_FROM_DATABASE=LaserJet P3004 + +usb:v03F0p7702* + ID_MODEL_FROM_DATABASE=PhotoSmart R817 (PTP mode) + +usb:v03F0p7704* + ID_MODEL_FROM_DATABASE=DeskJet D4100 + +usb:v03F0p7717* + ID_MODEL_FROM_DATABASE=CM8050 Color MFP with Edgeline Technology + +usb:v03F0p7804* + ID_MODEL_FROM_DATABASE=DeskJet D1360 + +usb:v03F0p7817* + ID_MODEL_FROM_DATABASE=Color LaserJet CP3505 + +usb:v03F0p7917* + ID_MODEL_FROM_DATABASE=LaserJet M5025 MFP + +usb:v03F0p7A02* + ID_MODEL_FROM_DATABASE=PhotoSmart M415 (PTP mode) + +usb:v03F0p7A04* + ID_MODEL_FROM_DATABASE=DeskJet D2460 + +usb:v03F0p7A17* + ID_MODEL_FROM_DATABASE=LaserJet M3027 MFP + +usb:v03F0p7B02* + ID_MODEL_FROM_DATABASE=PhotoSmart M23 (PTP mode) + +usb:v03F0p7B17* + ID_MODEL_FROM_DATABASE=Color LaserJet CP4005 + +usb:v03F0p7C17* + ID_MODEL_FROM_DATABASE=Color LaserJet CM6040 series + +usb:v03F0p7D04* + ID_MODEL_FROM_DATABASE=DeskJet F2100 Printer series + +usb:v03F0p7D17* + ID_MODEL_FROM_DATABASE=Color LaserJet CM4730 MFP + +usb:v03F0p7E04* + ID_MODEL_FROM_DATABASE=DeskJet F4100 Printer series + +usb:v03F0p8017* + ID_MODEL_FROM_DATABASE=LaserJet P4515 + +usb:v03F0p8104* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v03F0p8117* + ID_MODEL_FROM_DATABASE=LaserJet P4015 + +usb:v03F0p811C* + ID_MODEL_FROM_DATABASE=Ethernet HN210E + +usb:v03F0p8204* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v03F0p8207* + ID_MODEL_FROM_DATABASE=FHA-3510 2.4GHz Wireless Optical Mobile Mouse + +usb:v03F0p8217* + ID_MODEL_FROM_DATABASE=LaserJet P4014 + +usb:v03F0p8317* + ID_MODEL_FROM_DATABASE=LaserJet M9050 MFP + +usb:v03F0p8404* + ID_MODEL_FROM_DATABASE=DeskJet 6800 series + +usb:v03F0p8417* + ID_MODEL_FROM_DATABASE=LaserJet M9040 MFP + +usb:v03F0p8504* + ID_MODEL_FROM_DATABASE=DeskJet 6600 series + +usb:v03F0p8604* + ID_MODEL_FROM_DATABASE=DeskJet 5440 + +usb:v03F0p8607* + ID_MODEL_FROM_DATABASE=Optical Mobile Mouse + +usb:v03F0p8704* + ID_MODEL_FROM_DATABASE=DeskJet 5940 + +usb:v03F0p8711* + ID_MODEL_FROM_DATABASE=Deskjet 2050 J510 + +usb:v03F0p8804* + ID_MODEL_FROM_DATABASE=DeskJet 6980 series + +usb:v03F0p8904* + ID_MODEL_FROM_DATABASE=DeskJet 6940 series + +usb:v03F0p8C07* + ID_MODEL_FROM_DATABASE=Digital Stereo Headset + +usb:v03F0p8C11* + ID_MODEL_FROM_DATABASE=Deskjet F4500 series + +usb:v03F0p9002* + ID_MODEL_FROM_DATABASE=PhotoSmart M437 + +usb:v03F0p9102* + ID_MODEL_FROM_DATABASE=PhotoSmart M537 + +usb:v03F0p9302* + ID_MODEL_FROM_DATABASE=PhotoSmart R930 series + +usb:v03F0p9402* + ID_MODEL_FROM_DATABASE=PhotoSmart R837 + +usb:v03F0p9502* + ID_MODEL_FROM_DATABASE=PhotoSmart R840 series + +usb:v03F0p9602* + ID_MODEL_FROM_DATABASE=PhotoSmart M730 series + +usb:v03F0p9702* + ID_MODEL_FROM_DATABASE=PhotoSmart R740 series + +usb:v03F0p9802* + ID_MODEL_FROM_DATABASE=PhotoSmart Mz60 series + +usb:v03F0p9902* + ID_MODEL_FROM_DATABASE=PhotoSmart M630 series + +usb:v03F0p9A02* + ID_MODEL_FROM_DATABASE=PhotoSmart E330 series + +usb:v03F0p9B02* + ID_MODEL_FROM_DATABASE=PhotoSmart M540 series + +usb:v03F0p9B07* + ID_MODEL_FROM_DATABASE=Portable Drive + +usb:v03F0p9C02* + ID_MODEL_FROM_DATABASE=PhotoSmart M440 series + +usb:v03F0pA004* + ID_MODEL_FROM_DATABASE=DeskJet 5850c + +usb:v03F0pA011* + ID_MODEL_FROM_DATABASE=Deskjet 3050A + +usb:v03F0pB002* + ID_MODEL_FROM_DATABASE=PhotoSmart 7200 series + +usb:v03F0pB102* + ID_MODEL_FROM_DATABASE=PhotoSmart 7200 series + +usb:v03F0pB107* + ID_MODEL_FROM_DATABASE=v255w/c310w Flash Drive + +usb:v03F0pB116* + ID_MODEL_FROM_DATABASE=Webcam + +usb:v03F0pB202* + ID_MODEL_FROM_DATABASE=PhotoSmart 7600 series + +usb:v03F0pB302* + ID_MODEL_FROM_DATABASE=PhotoSmart 7600 series + +usb:v03F0pB402* + ID_MODEL_FROM_DATABASE=PhotoSmart 7700 series + +usb:v03F0pB502* + ID_MODEL_FROM_DATABASE=PhotoSmart 7700 series + +usb:v03F0pB602* + ID_MODEL_FROM_DATABASE=PhotoSmart 7900 series + +usb:v03F0pB702* + ID_MODEL_FROM_DATABASE=PhotoSmart 7900 series + +usb:v03F0pB802* + ID_MODEL_FROM_DATABASE=PhotoSmart 7400 series + +usb:v03F0pB902* + ID_MODEL_FROM_DATABASE=PhotoSmart 7800 series + +usb:v03F0pBA02* + ID_MODEL_FROM_DATABASE=PhotoSmart 8100 series + +usb:v03F0pBB02* + ID_MODEL_FROM_DATABASE=PhotoSmart 8400 series + +usb:v03F0pBC02* + ID_MODEL_FROM_DATABASE=PhotoSmart 8700 series + +usb:v03F0pBD02* + ID_MODEL_FROM_DATABASE=PhotoSmart Pro B9100 series + +usb:v03F0pBEF4* + ID_MODEL_FROM_DATABASE=NEC Picty760 + +usb:v03F0pC002* + ID_MODEL_FROM_DATABASE=PhotoSmart 7800 series + +usb:v03F0pC102* + ID_MODEL_FROM_DATABASE=PhotoSmart 8000 series + +usb:v03F0pC202* + ID_MODEL_FROM_DATABASE=PhotoSmart 8200 series + +usb:v03F0pC302* + ID_MODEL_FROM_DATABASE=DeskJet D2300 + +usb:v03F0pC402* + ID_MODEL_FROM_DATABASE=PhotoSmart D5100 series + +usb:v03F0pC502* + ID_MODEL_FROM_DATABASE=PhotoSmart D6100 series + +usb:v03F0pC602* + ID_MODEL_FROM_DATABASE=PhotoSmart D7100 series + +usb:v03F0pC702* + ID_MODEL_FROM_DATABASE=PhotoSmart D7300 series + +usb:v03F0pC802* + ID_MODEL_FROM_DATABASE=PhotoSmart D5060 Printer + +usb:v03F0pD104* + ID_MODEL_FROM_DATABASE=Bluetooth Dongle + +usb:v03F0pEFBE* + ID_MODEL_FROM_DATABASE=NEC Picty900 + +usb:v03F0pF0BE* + ID_MODEL_FROM_DATABASE=NEC Picty920 + +usb:v03F0pF1BE* + ID_MODEL_FROM_DATABASE=NEC Picty800 + +usb:v03F1* + ID_VENDOR_FROM_DATABASE=Genoa Technology + +usb:v03F2* + ID_VENDOR_FROM_DATABASE=Oak Technology, Inc. + +usb:v03F3* + ID_VENDOR_FROM_DATABASE=Adaptec, Inc. + +usb:v03F3p0020* + ID_MODEL_FROM_DATABASE=AWN-8020 WLAN [Intersil PRISM 2.5] + +usb:v03F3p0080* + ID_MODEL_FROM_DATABASE=AVC-1100 Audio Capture + +usb:v03F3p0083* + ID_MODEL_FROM_DATABASE=AVC-2200 Device + +usb:v03F3p0087* + ID_MODEL_FROM_DATABASE=AVC-2210 Loader + +usb:v03F3p0088* + ID_MODEL_FROM_DATABASE=AVC-2210 Device + +usb:v03F3p008B* + ID_MODEL_FROM_DATABASE=AVC-2310 Loader + +usb:v03F3p008C* + ID_MODEL_FROM_DATABASE=AVC-2310 Device + +usb:v03F3p0094* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v03F3p009B* + ID_MODEL_FROM_DATABASE=AVC-1410 GameBridge TV NTSC + +usb:v03F3p2000* + ID_MODEL_FROM_DATABASE=USBXchange + +usb:v03F3p2001* + ID_MODEL_FROM_DATABASE=USBXchange Adapter + +usb:v03F3p2002* + ID_MODEL_FROM_DATABASE=USB2-Xchange + +usb:v03F3p2003* + ID_MODEL_FROM_DATABASE=USB2-Xchange Adapter + +usb:v03F3p4000* + ID_MODEL_FROM_DATABASE=4-port hub + +usb:v03F3pADCC* + ID_MODEL_FROM_DATABASE=Composite Device Support + +usb:v03F4* + ID_VENDOR_FROM_DATABASE=Diebold, Inc. + +usb:v03F5* + ID_VENDOR_FROM_DATABASE=Siemens Electromechanical + +usb:v03F8* + ID_VENDOR_FROM_DATABASE=Epson Imaging Technology Center + +usb:v03F9* + ID_VENDOR_FROM_DATABASE=KeyTronic Corp. + +usb:v03F9p0100* + ID_MODEL_FROM_DATABASE=KT-2001 Keyboard + +usb:v03F9p0101* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v03F9p0102* + ID_MODEL_FROM_DATABASE=Keyboard Mouse + +usb:v03FB* + ID_VENDOR_FROM_DATABASE=OPTi, Inc. + +usb:v03FC* + ID_VENDOR_FROM_DATABASE=Elitegroup Computer Systems + +usb:v03FD* + ID_VENDOR_FROM_DATABASE=Xilinx, Inc. + +usb:v03FE* + ID_VENDOR_FROM_DATABASE=Farallon Comunications + +usb:v0400* + ID_VENDOR_FROM_DATABASE=National Semiconductor Corp. + +usb:v0400p05DC* + ID_MODEL_FROM_DATABASE=Rigol Technologies DS1000USB Oscilloscope + +usb:v0400p0807* + ID_MODEL_FROM_DATABASE=Bluetooth Dongle + +usb:v0400p080A* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0400p09C4* + ID_MODEL_FROM_DATABASE=Rigol Technologies DG1022 Arbitrary Waveform Generator + +usb:v0400p1000* + ID_MODEL_FROM_DATABASE=Mustek BearPaw 1200 Scanner + +usb:v0400p1001* + ID_MODEL_FROM_DATABASE=Mustek BearPaw 2400 Scanner + +usb:v0400p1237* + ID_MODEL_FROM_DATABASE=Hub + +usb:v0400pA000* + ID_MODEL_FROM_DATABASE=Smart Display Reference Device + +usb:v0400pC359* + ID_MODEL_FROM_DATABASE=Logitech Harmony + +usb:v0400pC35B* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v0400pC55D* + ID_MODEL_FROM_DATABASE=Rigol Technologies DS5000USB Oscilloscope + +usb:v0401* + ID_VENDOR_FROM_DATABASE=National Registry, Inc. + +usb:v0402* + ID_VENDOR_FROM_DATABASE=ALi Corp. + +usb:v0402p5462* + ID_MODEL_FROM_DATABASE=M5462 IDE Controller + +usb:v0402p5602* + ID_MODEL_FROM_DATABASE=M5602 Video Camera Controller + +usb:v0402p5603* + ID_MODEL_FROM_DATABASE=M5603 Video Camera Controller + +usb:v0402p5606* + ID_MODEL_FROM_DATABASE=M5606 Video Camera Controller [UVC] + +usb:v0402p5621* + ID_MODEL_FROM_DATABASE=M5621 High-Speed IDE Controller + +usb:v0402p5623* + ID_MODEL_FROM_DATABASE=M5623 Scanner Controller + +usb:v0402p5627* + ID_MODEL_FROM_DATABASE=Welland ME-740PS USB2 3.5" Power Saving Enclosure + +usb:v0402p5632* + ID_MODEL_FROM_DATABASE=M5632 Host-to-Host Link + +usb:v0402p5635* + ID_MODEL_FROM_DATABASE=M5635 Flash Card Reader + +usb:v0402p5636* + ID_MODEL_FROM_DATABASE=USB 2.0 Storage Device + +usb:v0402p5637* + ID_MODEL_FROM_DATABASE=M5637 IDE Controller + +usb:v0402p5661* + ID_MODEL_FROM_DATABASE=M5661 MP3 player + +usb:v0402p5667* + ID_MODEL_FROM_DATABASE=M5667 MP3 player + +usb:v0402p9665* + ID_MODEL_FROM_DATABASE=Gateway Webcam + +usb:v0403* + ID_VENDOR_FROM_DATABASE=Future Technology Devices International, Ltd + +usb:v0403p0000* + ID_MODEL_FROM_DATABASE=H4SMK 7 Port Hub + +usb:v0403p0232* + ID_MODEL_FROM_DATABASE=Serial Converter + +usb:v0403p1060* + ID_MODEL_FROM_DATABASE=JTAG adapter + +usb:v0403p6001* + ID_MODEL_FROM_DATABASE=FT232 USB-Serial (UART) IC + +usb:v0403p6002* + ID_MODEL_FROM_DATABASE=Lumel PD12 + +usb:v0403p6007* + ID_MODEL_FROM_DATABASE=Serial Converter + +usb:v0403p6008* + ID_MODEL_FROM_DATABASE=Serial Converter + +usb:v0403p6009* + ID_MODEL_FROM_DATABASE=Serial Converter + +usb:v0403p6010* + ID_MODEL_FROM_DATABASE=FT2232C Dual USB-UART/FIFO IC + +usb:v0403p6011* + ID_MODEL_FROM_DATABASE=FT4232H Quad HS USB-UART/FIFO IC + +usb:v0403p6014* + ID_MODEL_FROM_DATABASE=FT232H Single HS USB-UART/FIFO IC + +usb:v0403p6015* + ID_MODEL_FROM_DATABASE=Bridge(I2C/SPI/UART/FIFO) + +usb:v0403p8028* + ID_MODEL_FROM_DATABASE=Dev board JTAG (FT232H based) + +usb:v0403p8040* + ID_MODEL_FROM_DATABASE=4 Port Hub + +usb:v0403p8070* + ID_MODEL_FROM_DATABASE=7 Port Hub + +usb:v0403p8370* + ID_MODEL_FROM_DATABASE=7 Port Hub + +usb:v0403p8371* + ID_MODEL_FROM_DATABASE=PS/2 Keyboard And Mouse + +usb:v0403p8372* + ID_MODEL_FROM_DATABASE=FT8U100AX Serial Port + +usb:v0403p8A28* + ID_MODEL_FROM_DATABASE=Rainforest Automation ZigBee Controller + +usb:v0403p8A98* + ID_MODEL_FROM_DATABASE=TIAO Multi-Protocol Adapter + +usb:v0403p9E90* + ID_MODEL_FROM_DATABASE=Marvell OpenRD Base/Client + +usb:v0403p9F80* + ID_MODEL_FROM_DATABASE=Ewert Energy Systems CANdapter + +usb:v0403pA6D0* + ID_MODEL_FROM_DATABASE=Texas Instruments XDS100v2 JTAG / BeagleBone A3 + +usb:v0403pA951* + ID_MODEL_FROM_DATABASE=HCP HIT GSM/GPRS modem [Cinterion MC55i] + +usb:v0403pABB8* + ID_MODEL_FROM_DATABASE=Lego Mindstorms NXTCam + +usb:v0403pB810* + ID_MODEL_FROM_DATABASE=US Interface Navigator (CAT and 2nd PTT lines) + +usb:v0403pB811* + ID_MODEL_FROM_DATABASE=US Interface Navigator (WKEY and FSK lines) + +usb:v0403pB812* + ID_MODEL_FROM_DATABASE=US Interface Navigator (RS232 and CONFIG lines) + +usb:v0403pB9B0* + ID_MODEL_FROM_DATABASE=Fujitsu SK-16FX-100PMC V1.1 + +usb:v0403pBAF8* + ID_MODEL_FROM_DATABASE=Amontec JTAGkey + +usb:v0403pBCD8* + ID_MODEL_FROM_DATABASE=Stellaris Development Board + +usb:v0403pBCD9* + ID_MODEL_FROM_DATABASE=Stellaris Evaluation Board + +usb:v0403pBCDA* + ID_MODEL_FROM_DATABASE=Stellaris ICDI Board + +usb:v0403pBDC8* + ID_MODEL_FROM_DATABASE=Egnite GmbH - JTAG/RS-232 adapter + +usb:v0403pBFD8* + ID_MODEL_FROM_DATABASE=OpenDCC + +usb:v0403pBFD9* + ID_MODEL_FROM_DATABASE=OpenDCC (Sniffer) + +usb:v0403pBFDA* + ID_MODEL_FROM_DATABASE=OpenDCC (Throttle) + +usb:v0403pBFDB* + ID_MODEL_FROM_DATABASE=OpenDCC (Gateway) + +usb:v0403pBFDC* + ID_MODEL_FROM_DATABASE=OpenDCC (GBM) + +usb:v0403pC630* + ID_MODEL_FROM_DATABASE=lcd2usb interface + +usb:v0403pC631* + ID_MODEL_FROM_DATABASE=i2c-tiny-usb interface + +usb:v0403pC632* + ID_MODEL_FROM_DATABASE=xu1541 c64 floppy drive interface + +usb:v0403pC633* + ID_MODEL_FROM_DATABASE=TinyCrypt dongle + +usb:v0403pC634* + ID_MODEL_FROM_DATABASE=glcd2usb interface + +usb:v0403pC7D0* + ID_MODEL_FROM_DATABASE=RR-CirKits LocoBuffer-USB + +usb:v0403pC8B8* + ID_MODEL_FROM_DATABASE=Alpermann+Velte MTD TCU + +usb:v0403pC8B9* + ID_MODEL_FROM_DATABASE=Alpermann+Velte MTD TCU 1HE + +usb:v0403pC8BA* + ID_MODEL_FROM_DATABASE=Alpermann+Velte Rubidium H1 + +usb:v0403pC8BB* + ID_MODEL_FROM_DATABASE=Alpermann+Velte Rubidium H3 + +usb:v0403pC8BC* + ID_MODEL_FROM_DATABASE=Alpermann+Velte Rubidium S1 + +usb:v0403pC8BD* + ID_MODEL_FROM_DATABASE=Alpermann+Velte Rubidium T1 + +usb:v0403pC8BE* + ID_MODEL_FROM_DATABASE=Alpermann+Velte Rubidium D1 + +usb:v0403pCC48* + ID_MODEL_FROM_DATABASE=Tactrix OpenPort 1.3 Mitsubishi + +usb:v0403pCC49* + ID_MODEL_FROM_DATABASE=Tactrix OpenPort 1.3 Subaru + +usb:v0403pCC4A* + ID_MODEL_FROM_DATABASE=Tactrix OpenPort 1.3 Universal + +usb:v0403pCFF8* + ID_MODEL_FROM_DATABASE=Amontec JTAGkey + +usb:v0403pD010* + ID_MODEL_FROM_DATABASE=SCS PTC-IIusb + +usb:v0403pD011* + ID_MODEL_FROM_DATABASE=SCS Position-Tracker/TNC + +usb:v0403pD012* + ID_MODEL_FROM_DATABASE=SCS DRAGON 1 + +usb:v0403pD013* + ID_MODEL_FROM_DATABASE=SCS DRAGON 1 + +usb:v0403pD491* + ID_MODEL_FROM_DATABASE=Zolix Omni 1509 monochromator + +usb:v0403pD578* + ID_MODEL_FROM_DATABASE=Accesio USB-COM-4SM + +usb:v0403pD6F8* + ID_MODEL_FROM_DATABASE=UNI Black BOX + +usb:v0403pD738* + ID_MODEL_FROM_DATABASE=Propox JTAGcable II + +usb:v0403pD739* + ID_MODEL_FROM_DATABASE=Propox ISPcable III + +usb:v0403pD9A9* + ID_MODEL_FROM_DATABASE=Actisense USG-1 NMEA Serial Gateway + +usb:v0403pD9AA* + ID_MODEL_FROM_DATABASE=Actisense NGT-1 NMEA2000 PC Interface + +usb:v0403pE0D0* + ID_MODEL_FROM_DATABASE=Total Phase Aardvark I2C/SPI Host Adapter + +usb:v0403pE521* + ID_MODEL_FROM_DATABASE=EVER Sinline XL Series UPS + +usb:v0403pE6C8* + ID_MODEL_FROM_DATABASE=PYRAMID Computer GmbH LCD + +usb:v0403pE700* + ID_MODEL_FROM_DATABASE=Elster Unicom III Optical Probe + +usb:v0403pE729* + ID_MODEL_FROM_DATABASE=Segway Robotic Mobility Platforms 200 + +usb:v0403pE888* + ID_MODEL_FROM_DATABASE=Expert ISDN Control USB + +usb:v0403pE889* + ID_MODEL_FROM_DATABASE=USB-RS232 OptoBridge + +usb:v0403pE88A* + ID_MODEL_FROM_DATABASE=Expert mouseCLOCK USB II + +usb:v0403pE88B* + ID_MODEL_FROM_DATABASE=Precision Clock MSF USB + +usb:v0403pE88C* + ID_MODEL_FROM_DATABASE=Expert mouseCLOCK USB II HBG + +usb:v0403pE8D8* + ID_MODEL_FROM_DATABASE=Aaronia AG Spectran Spectrum Analyzer + +usb:v0403pE8DC* + ID_MODEL_FROM_DATABASE=Aaronia AG UBBV Preamplifier + +usb:v0403pEA90* + ID_MODEL_FROM_DATABASE=Eclo 1-Wire Adapter + +usb:v0403pED71* + ID_MODEL_FROM_DATABASE=HAMEG HO870 Serial Port + +usb:v0403pED72* + ID_MODEL_FROM_DATABASE=HAMEG HO720 Serial Port + +usb:v0403pED73* + ID_MODEL_FROM_DATABASE=HAMEG HO730 Serial Port + +usb:v0403pED74* + ID_MODEL_FROM_DATABASE=HAMEG HO820 Serial Port + +usb:v0403pEF10* + ID_MODEL_FROM_DATABASE=FT1245BL + +usb:v0403pF070* + ID_MODEL_FROM_DATABASE=Serial Converter 422/485 [Vardaan VEUSB422R3] + +usb:v0403pF1A0* + ID_MODEL_FROM_DATABASE=Asix PRESTO Programmer + +usb:v0403pF208* + ID_MODEL_FROM_DATABASE=Papenmeier Braille-Display + +usb:v0403pF3C0* + ID_MODEL_FROM_DATABASE=4N-GALAXY Serial Converter + +usb:v0403pF608* + ID_MODEL_FROM_DATABASE=CTI USB-485-Mini + +usb:v0403pF60B* + ID_MODEL_FROM_DATABASE=CTI USB-Nano-485 + +usb:v0403pF680* + ID_MODEL_FROM_DATABASE=Suunto Sports Instrument + +usb:v0403pF758* + ID_MODEL_FROM_DATABASE=GW Instek GDS-8x0 Oscilloscope + +usb:v0403pF7C0* + ID_MODEL_FROM_DATABASE=ZeitControl Cardsystems TagTracer MIFARE + +usb:v0403pF850* + ID_MODEL_FROM_DATABASE=USB-UIRT (Universal Infrared Receiver+Transmitter) + +usb:v0403pF918* + ID_MODEL_FROM_DATABASE=Ant8 Logic Probe + +usb:v0403pFA00* + ID_MODEL_FROM_DATABASE=Matrix Orbital USB Serial + +usb:v0403pFA01* + ID_MODEL_FROM_DATABASE=Matrix Orbital MX2 or MX3 + +usb:v0403pFA02* + ID_MODEL_FROM_DATABASE=Matrix Orbital MX4 or MX5 + +usb:v0403pFA03* + ID_MODEL_FROM_DATABASE=Matrix Orbital VK/LK202 Family + +usb:v0403pFA04* + ID_MODEL_FROM_DATABASE=Matrix Orbital VK/LK204 Family + +usb:v0403pFA20* + ID_MODEL_FROM_DATABASE=Ross-Tech HEX-USB + +usb:v0403pFC08* + ID_MODEL_FROM_DATABASE=Crystalfontz CFA-632 USB LCD + +usb:v0403pFC09* + ID_MODEL_FROM_DATABASE=Crystalfontz CFA-634 USB LCD + +usb:v0403pFC0B* + ID_MODEL_FROM_DATABASE=Crystalfontz CFA-633 USB LCD + +usb:v0403pFC0C* + ID_MODEL_FROM_DATABASE=Crystalfontz CFA-631 USB LCD + +usb:v0403pFC0D* + ID_MODEL_FROM_DATABASE=Crystalfontz CFA-635 USB LCD + +usb:v0403pFC82* + ID_MODEL_FROM_DATABASE=SEMC DSS-20/DSS-25 SyncStation + +usb:v0403pFD48* + ID_MODEL_FROM_DATABASE=ShipModul MiniPlex-4xUSB NMEA Multiplexer + +usb:v0403pFD49* + ID_MODEL_FROM_DATABASE=ShipModul MiniPlex-4xUSB-AIS NMEA Multiplexer + +usb:v0403pFF08* + ID_MODEL_FROM_DATABASE=ToolHouse LoopBack Adapter + +usb:v0403pFF18* + ID_MODEL_FROM_DATABASE=ScienceScope Logbook ML + +usb:v0403pFF19* + ID_MODEL_FROM_DATABASE=Logbook Bus + +usb:v0403pFF1A* + ID_MODEL_FROM_DATABASE=Logbook Bus + +usb:v0403pFF1B* + ID_MODEL_FROM_DATABASE=Logbook Bus + +usb:v0403pFF1C* + ID_MODEL_FROM_DATABASE=ScienceScope Logbook LS + +usb:v0403pFF1D* + ID_MODEL_FROM_DATABASE=ScienceScope Logbook HS + +usb:v0403pFF1E* + ID_MODEL_FROM_DATABASE=Logbook Bus + +usb:v0403pFF1F* + ID_MODEL_FROM_DATABASE=Logbook Bus + +usb:v0404* + ID_VENDOR_FROM_DATABASE=NCR Corp. + +usb:v0404p0202* + ID_MODEL_FROM_DATABASE=78XX Scanner + +usb:v0404p0203* + ID_MODEL_FROM_DATABASE=78XX Scanner - Embedded System + +usb:v0404p0310* + ID_MODEL_FROM_DATABASE=K590 Printer, Self-Service + +usb:v0404p0311* + ID_MODEL_FROM_DATABASE=7167 Printer, Receipt/Slip + +usb:v0404p0312* + ID_MODEL_FROM_DATABASE=7197 Printer Receipt + +usb:v0404p0320* + ID_MODEL_FROM_DATABASE=5932-USB Keyboard + +usb:v0404p0321* + ID_MODEL_FROM_DATABASE=5953-USB Dynakey + +usb:v0404p0322* + ID_MODEL_FROM_DATABASE=5932-USB Enhanced Keyboard + +usb:v0404p0323* + ID_MODEL_FROM_DATABASE=5932-USB Enhanced Keyboard, Flash-Recovery/Download + +usb:v0404p0324* + ID_MODEL_FROM_DATABASE=5953-USB Enhanced Dynakey + +usb:v0404p0325* + ID_MODEL_FROM_DATABASE=5953-USB Enhanced Dynakey Flash-Recovery/Download + +usb:v0404p0328* + ID_MODEL_FROM_DATABASE=K016: USB-MSR ISO 3-track MSR: POS Standard (See HID pages) + +usb:v0404p0329* + ID_MODEL_FROM_DATABASE=K018: USB-MSR JIS 2-Track MSR: POS Standard + +usb:v0404p032A* + ID_MODEL_FROM_DATABASE=K016: USB-MSR ISO 3-Track MSR: HID Keyboard Mode + +usb:v0404p032B* + ID_MODEL_FROM_DATABASE=K016/K018: USB-MSR Flash-Recovery/Download + +usb:v0405* + ID_VENDOR_FROM_DATABASE=Synopsys, Inc. + +usb:v0406* + ID_VENDOR_FROM_DATABASE=Fujitsu-ICL Computers + +usb:v0407* + ID_VENDOR_FROM_DATABASE=Fujitsu Personal Systems, Inc. + +usb:v0408* + ID_VENDOR_FROM_DATABASE=Quanta Computer, Inc. + +usb:v0408p0103* + ID_MODEL_FROM_DATABASE=FV TouchCam N1 (Audio) + +usb:v0408p030C* + ID_MODEL_FROM_DATABASE=HP Webcam + +usb:v0408p03B2* + ID_MODEL_FROM_DATABASE=HP Webcam + +usb:v0408p1030* + ID_MODEL_FROM_DATABASE=FV TouchCam N1 (Video) + +usb:v0408p3000* + ID_MODEL_FROM_DATABASE=Optical dual-touch panel + +usb:v0408p3001* + ID_MODEL_FROM_DATABASE=Optical Touch Screen + +usb:v0409* + ID_VENDOR_FROM_DATABASE=NEC Corp. + +usb:v0409p0011* + ID_MODEL_FROM_DATABASE=PC98 Series Layout Keyboard Mouse + +usb:v0409p0012* + ID_MODEL_FROM_DATABASE=ATerm IT75DSU ISDN TA + +usb:v0409p0014* + ID_MODEL_FROM_DATABASE=Japanese Keyboard + +usb:v0409p0019* + ID_MODEL_FROM_DATABASE=109 Japanese Keyboard with Bus-Powered Hub + +usb:v0409p001A* + ID_MODEL_FROM_DATABASE=PC98 Series Layout Keyboard with Bus-Powered Hub + +usb:v0409p0025* + ID_MODEL_FROM_DATABASE=Mini Keyboard with Bus-Powered Hub + +usb:v0409p0027* + ID_MODEL_FROM_DATABASE=MultiSync Monitor + +usb:v0409p002C* + ID_MODEL_FROM_DATABASE=Clik!-USB Drive + +usb:v0409p0034* + ID_MODEL_FROM_DATABASE=109 Japanese Keyboard with One-touch start buttons + +usb:v0409p003F* + ID_MODEL_FROM_DATABASE=Wireless Keyboard with One-touch start buttons + +usb:v0409p0040* + ID_MODEL_FROM_DATABASE=Floppy + +usb:v0409p004E* + ID_MODEL_FROM_DATABASE=SuperScript 1400 Series + +usb:v0409p004F* + ID_MODEL_FROM_DATABASE=Wireless Keyboard with One-touch start buttons + +usb:v0409p0050* + ID_MODEL_FROM_DATABASE=7-port hub + +usb:v0409p0058* + ID_MODEL_FROM_DATABASE=HighSpeed Hub + +usb:v0409p0059* + ID_MODEL_FROM_DATABASE=HighSpeed Hub + +usb:v0409p005A* + ID_MODEL_FROM_DATABASE=HighSpeed Hub + +usb:v0409p006A* + ID_MODEL_FROM_DATABASE=Conceptronic USB Harddisk Box + +usb:v0409p007D* + ID_MODEL_FROM_DATABASE=MINICUBE2 + +usb:v0409p007E* + ID_MODEL_FROM_DATABASE=PG-FP5 Flash Memory Programmer + +usb:v0409p0081* + ID_MODEL_FROM_DATABASE=SuperScript 1400 Series + +usb:v0409p0082* + ID_MODEL_FROM_DATABASE=SuperScript 1400 Series + +usb:v0409p0094* + ID_MODEL_FROM_DATABASE=Japanese Keyboard with One-touch start buttons + +usb:v0409p0095* + ID_MODEL_FROM_DATABASE=Japanese Keyboard + +usb:v0409p00A9* + ID_MODEL_FROM_DATABASE=AtermIT21L 128K Support Standard + +usb:v0409p00AA* + ID_MODEL_FROM_DATABASE=AtermITX72 128K Support Standard + +usb:v0409p00AB* + ID_MODEL_FROM_DATABASE=AtermITX62 128K Support Standard + +usb:v0409p00AC* + ID_MODEL_FROM_DATABASE=AtermIT42 128K Support Standard + +usb:v0409p00AE* + ID_MODEL_FROM_DATABASE=INSMATEV70G-MAX Standard + +usb:v0409p00AF* + ID_MODEL_FROM_DATABASE=AtermITX70 128K Support Standard + +usb:v0409p00B0* + ID_MODEL_FROM_DATABASE=AtermITX80 128K Support Standard + +usb:v0409p00B2* + ID_MODEL_FROM_DATABASE=AtermITX80D 128K Support Standard + +usb:v0409p00C0* + ID_MODEL_FROM_DATABASE=Wireless Remocon + +usb:v0409p00F7* + ID_MODEL_FROM_DATABASE=Smart Display PK-SD10 + +usb:v0409p011D* + ID_MODEL_FROM_DATABASE=e228 Mobile Phone + +usb:v0409p0203* + ID_MODEL_FROM_DATABASE=HID Audio Controls + +usb:v0409p021D* + ID_MODEL_FROM_DATABASE=Aterm WL54SU2 802.11g Wireless Adapter [Atheros AR5523] + +usb:v0409p0248* + ID_MODEL_FROM_DATABASE=Aterm PA-WL54GU + +usb:v0409p0249* + ID_MODEL_FROM_DATABASE=Aterm WL300NU-G + +usb:v0409p02B4* + ID_MODEL_FROM_DATABASE=Aterm WL300NU-AG + +usb:v0409p02B6* + ID_MODEL_FROM_DATABASE=Aterm WL300NU-GS 802.11n Wireless Adapter + +usb:v0409p0300* + ID_MODEL_FROM_DATABASE=LifeTouch Note + +usb:v0409p0301* + ID_MODEL_FROM_DATABASE=LifeTouch Note (debug mode) + +usb:v0409p55AA* + ID_MODEL_FROM_DATABASE=Hub + +usb:v0409p55AB* + ID_MODEL_FROM_DATABASE=Hub [iMac/iTouch kbd] + +usb:v0409p8010* + ID_MODEL_FROM_DATABASE=Intellibase Hub + +usb:v0409p8011* + ID_MODEL_FROM_DATABASE=Intellibase Hub + +usb:v0409pEFBE* + ID_MODEL_FROM_DATABASE=P!cty 900 [HP DJ] + +usb:v0409pF0BE* + ID_MODEL_FROM_DATABASE=P!cty 920 [HP DJ 812c] + +usb:v040A* + ID_VENDOR_FROM_DATABASE=Kodak Co. + +usb:v040Ap0001* + ID_MODEL_FROM_DATABASE=DVC-323 + +usb:v040Ap0002* + ID_MODEL_FROM_DATABASE=DVC-325 + +usb:v040Ap0100* + ID_MODEL_FROM_DATABASE=DC-220 + +usb:v040Ap0110* + ID_MODEL_FROM_DATABASE=DC-260 + +usb:v040Ap0111* + ID_MODEL_FROM_DATABASE=DC-265 + +usb:v040Ap0112* + ID_MODEL_FROM_DATABASE=DC-290 + +usb:v040Ap0120* + ID_MODEL_FROM_DATABASE=DC-240 + +usb:v040Ap0121* + ID_MODEL_FROM_DATABASE=DC-240 (PTP firmware) + +usb:v040Ap0130* + ID_MODEL_FROM_DATABASE=DC-280 + +usb:v040Ap0131* + ID_MODEL_FROM_DATABASE=DC-5000 + +usb:v040Ap0132* + ID_MODEL_FROM_DATABASE=DC-3400 + +usb:v040Ap0140* + ID_MODEL_FROM_DATABASE=DC-4800 + +usb:v040Ap0160* + ID_MODEL_FROM_DATABASE=DC4800 + +usb:v040Ap0170* + ID_MODEL_FROM_DATABASE=DX3900 + +usb:v040Ap0200* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0300* + ID_MODEL_FROM_DATABASE=EZ-200 + +usb:v040Ap0400* + ID_MODEL_FROM_DATABASE=MC3 + +usb:v040Ap0402* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0403* + ID_MODEL_FROM_DATABASE=Z7590 + +usb:v040Ap0500* + ID_MODEL_FROM_DATABASE=DX3500 + +usb:v040Ap0510* + ID_MODEL_FROM_DATABASE=DX3600 + +usb:v040Ap0525* + ID_MODEL_FROM_DATABASE=DX3215 + +usb:v040Ap0530* + ID_MODEL_FROM_DATABASE=DX3700 + +usb:v040Ap0535* + ID_MODEL_FROM_DATABASE=EasyShare CX4230 Camera + +usb:v040Ap0540* + ID_MODEL_FROM_DATABASE=LS420 + +usb:v040Ap0550* + ID_MODEL_FROM_DATABASE=DX4900 + +usb:v040Ap0555* + ID_MODEL_FROM_DATABASE=DX4330 + +usb:v040Ap0560* + ID_MODEL_FROM_DATABASE=CX4200 + +usb:v040Ap0565* + ID_MODEL_FROM_DATABASE=CX4210 + +usb:v040Ap0566* + ID_MODEL_FROM_DATABASE=CX4300 + +usb:v040Ap0567* + ID_MODEL_FROM_DATABASE=LS753 + +usb:v040Ap0568* + ID_MODEL_FROM_DATABASE=LS443 + +usb:v040Ap0569* + ID_MODEL_FROM_DATABASE=LS663 + +usb:v040Ap0570* + ID_MODEL_FROM_DATABASE=DX6340 + +usb:v040Ap0571* + ID_MODEL_FROM_DATABASE=CX6330 + +usb:v040Ap0572* + ID_MODEL_FROM_DATABASE=DX6440 + +usb:v040Ap0573* + ID_MODEL_FROM_DATABASE=CX6230 + +usb:v040Ap0574* + ID_MODEL_FROM_DATABASE=CX6200 + +usb:v040Ap0575* + ID_MODEL_FROM_DATABASE=DX6490 + +usb:v040Ap0576* + ID_MODEL_FROM_DATABASE=DX4530 + +usb:v040Ap0577* + ID_MODEL_FROM_DATABASE=DX7630 + +usb:v040Ap0578* + ID_MODEL_FROM_DATABASE=CX7300/CX7310 + +usb:v040Ap0579* + ID_MODEL_FROM_DATABASE=CX7220 + +usb:v040Ap057A* + ID_MODEL_FROM_DATABASE=CX7330 + +usb:v040Ap057B* + ID_MODEL_FROM_DATABASE=CX7430 + +usb:v040Ap057C* + ID_MODEL_FROM_DATABASE=CX7530 + +usb:v040Ap057D* + ID_MODEL_FROM_DATABASE=DX7440 + +usb:v040Ap057E* + ID_MODEL_FROM_DATABASE=C300 + +usb:v040Ap057F* + ID_MODEL_FROM_DATABASE=DX7590 + +usb:v040Ap0580* + ID_MODEL_FROM_DATABASE=Z730 + +usb:v040Ap0581* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0582* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0583* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0584* + ID_MODEL_FROM_DATABASE=CX6445 + +usb:v040Ap0585* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0586* + ID_MODEL_FROM_DATABASE=CX7525 + +usb:v040Ap0587* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0588* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0589* + ID_MODEL_FROM_DATABASE=EasyShare C360 + +usb:v040Ap058A* + ID_MODEL_FROM_DATABASE=C310 + +usb:v040Ap058B* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap058C* + ID_MODEL_FROM_DATABASE=C330 + +usb:v040Ap058D* + ID_MODEL_FROM_DATABASE=C340 + +usb:v040Ap058E* + ID_MODEL_FROM_DATABASE=V530 + +usb:v040Ap058F* + ID_MODEL_FROM_DATABASE=V550 + +usb:v040Ap0590* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0591* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0592* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0593* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0594* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0595* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0596* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0597* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap0598* + ID_MODEL_FROM_DATABASE=EASYSHARE M1033 digital camera + +usb:v040Ap0599* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap059A* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap059B* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap059C* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap059D* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap059E* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap059F* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05A0* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05A1* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05A2* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05A3* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05A4* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05A5* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05A6* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05A7* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05A8* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05A9* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05AA* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05AB* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05AC* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05AD* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05AE* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05AF* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05B0* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05B1* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05B2* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05B3* + ID_MODEL_FROM_DATABASE=EasyShare Z710 Camera + +usb:v040Ap05B4* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05B5* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05B6* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05B7* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05B8* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05B9* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05BA* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05BB* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05BC* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05BD* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05BE* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05BF* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05C0* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05C1* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05C2* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05C3* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05C4* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05C5* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v040Ap05C8* + ID_MODEL_FROM_DATABASE=EASYSHARE Z1485 IS Digital Camera + +usb:v040Ap05D3* + ID_MODEL_FROM_DATABASE=EasyShare M320 Camera + +usb:v040Ap05D4* + ID_MODEL_FROM_DATABASE=EasyShare C180 Digital Camera + +usb:v040Ap1001* + ID_MODEL_FROM_DATABASE=EasyShare SV811 Digital Picture Frame + +usb:v040Ap4000* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v040Ap4022* + ID_MODEL_FROM_DATABASE=1400 Digital Photo Printer + +usb:v040Ap4056* + ID_MODEL_FROM_DATABASE=ESP 7200 Series AiO + +usb:v040Ap4109* + ID_MODEL_FROM_DATABASE=EasyShare Printer Dock Series 3 + +usb:v040Ap410D* + ID_MODEL_FROM_DATABASE=EasyShare G600 Printer Dock + +usb:v040Ap5010* + ID_MODEL_FROM_DATABASE=Wireless Adapter + +usb:v040Ap5012* + ID_MODEL_FROM_DATABASE=DBT-220 Bluetooth Adapter + +usb:v040Ap6001* + ID_MODEL_FROM_DATABASE=i30 + +usb:v040Ap6002* + ID_MODEL_FROM_DATABASE=i40 + +usb:v040Ap6003* + ID_MODEL_FROM_DATABASE=i50 + +usb:v040Ap6004* + ID_MODEL_FROM_DATABASE=i60 + +usb:v040Ap6005* + ID_MODEL_FROM_DATABASE=i80 + +usb:v040B* + ID_VENDOR_FROM_DATABASE=Weltrend Semiconductor + +usb:v040Bp6510* + ID_MODEL_FROM_DATABASE=Weltrend Bar Code Reader + +usb:v040Bp6520* + ID_MODEL_FROM_DATABASE=XBOX Xploder + +usb:v040Bp6533* + ID_MODEL_FROM_DATABASE=Speed-Link Competition Pro + +usb:v040Bp6543* + ID_MODEL_FROM_DATABASE=Manhattan Magnetic Card Strip Reader + +usb:v040C* + ID_VENDOR_FROM_DATABASE=VTech Computers, Ltd + +usb:v040D* + ID_VENDOR_FROM_DATABASE=VIA Technologies, Inc. + +usb:v040Dp3184* + ID_MODEL_FROM_DATABASE=VNT VT6656 USB-802.11 Wireless LAN Adapter + +usb:v040Dp6205* + ID_MODEL_FROM_DATABASE=USB 2.0 Card Reader + +usb:v040E* + ID_VENDOR_FROM_DATABASE=MCCI + +usb:v040F* + ID_VENDOR_FROM_DATABASE=Echo Speech Corp. + +usb:v0411* + ID_VENDOR_FROM_DATABASE=BUFFALO INC. (formerly MelCo., Inc.) + +usb:v0411p0001* + ID_MODEL_FROM_DATABASE=LUA-TX Ethernet [pegasus] + +usb:v0411p0005* + ID_MODEL_FROM_DATABASE=LUA-TX Ethernet + +usb:v0411p0006* + ID_MODEL_FROM_DATABASE=WLI-USB-L11 Wireless LAN Adapter + +usb:v0411p0009* + ID_MODEL_FROM_DATABASE=LUA2-TX Ethernet + +usb:v0411p000B* + ID_MODEL_FROM_DATABASE=WLI-USB-L11G-WR Wireless LAN Adapter + +usb:v0411p000D* + ID_MODEL_FROM_DATABASE=WLI-USB-L11G Wireless LAN Adapter + +usb:v0411p0012* + ID_MODEL_FROM_DATABASE=LUA-KTX Ethernet + +usb:v0411p0013* + ID_MODEL_FROM_DATABASE=USB2-IDE Adapter + +usb:v0411p0016* + ID_MODEL_FROM_DATABASE=WLI-USB-S11 802.11b Adapter + +usb:v0411p0018* + ID_MODEL_FROM_DATABASE=USB2-IDE Adapter + +usb:v0411p001C* + ID_MODEL_FROM_DATABASE=USB-IDE Bridge: DUB-PxxG + +usb:v0411p0027* + ID_MODEL_FROM_DATABASE=WLI-USB-KS11G 802.11b Adapter + +usb:v0411p002A* + ID_MODEL_FROM_DATABASE=SMSC USB97C202 "HD-HB300V2-EU" + +usb:v0411p003D* + ID_MODEL_FROM_DATABASE=LUA-U2-KTX Ethernet + +usb:v0411p0044* + ID_MODEL_FROM_DATABASE=WLI-USB-KB11 Wireless LAN Adapter + +usb:v0411p004B* + ID_MODEL_FROM_DATABASE=WLI-USB-G54 802.11g Adapter [Broadcom 4320 USB] + +usb:v0411p004D* + ID_MODEL_FROM_DATABASE=WLI-USB-B11 Wireless LAN Adapter + +usb:v0411p0050* + ID_MODEL_FROM_DATABASE=WLI2-USB2-G54 Wireless LAN Adapter + +usb:v0411p005E* + ID_MODEL_FROM_DATABASE=WLI-U2-KG54-YB WLAN + +usb:v0411p0065* + ID_MODEL_FROM_DATABASE=Python2 WDM Encoder + +usb:v0411p0066* + ID_MODEL_FROM_DATABASE=WLI-U2-KG54 WLAN + +usb:v0411p0067* + ID_MODEL_FROM_DATABASE=WLI-U2-KG54-AI WLAN + +usb:v0411p006E* + ID_MODEL_FROM_DATABASE=LUA-U2-GT 10/100/1000 Ethernet Adapter + +usb:v0411p0089* + ID_MODEL_FROM_DATABASE=RUF-C/U2 Flash Drive + +usb:v0411p008B* + ID_MODEL_FROM_DATABASE=Nintendo Wi-Fi + +usb:v0411p0091* + ID_MODEL_FROM_DATABASE=WLI-U2-KAMG54 Wireless LAN Adapter + +usb:v0411p0092* + ID_MODEL_FROM_DATABASE=WLI-U2-KAMG54 Bootloader + +usb:v0411p0097* + ID_MODEL_FROM_DATABASE=WLI-U2-KG54-BB + +usb:v0411p00A9* + ID_MODEL_FROM_DATABASE=WLI-U2-AMG54HP Wireless LAN Adapter + +usb:v0411p00AA* + ID_MODEL_FROM_DATABASE=WLI-U2-AMG54HP Bootloader + +usb:v0411p00B3* + ID_MODEL_FROM_DATABASE=PC-OP-RS1 RemoteStation + +usb:v0411p00BC* + ID_MODEL_FROM_DATABASE=WLI-U2-KG125S 802.11g Adapter [Broadcom 4320 USB] + +usb:v0411p00CA* + ID_MODEL_FROM_DATABASE=802.11n Network Adapter + +usb:v0411p00CB* + ID_MODEL_FROM_DATABASE=WLI-U2-G300N 802.11n Adapter + +usb:v0411p00D8* + ID_MODEL_FROM_DATABASE=WLI-U2-SG54HP + +usb:v0411p00D9* + ID_MODEL_FROM_DATABASE=WLI-U2-G54HP + +usb:v0411p00DA* + ID_MODEL_FROM_DATABASE=WLI-U2-KG54L 802.11bg [ZyDAS ZD1211B] + +usb:v0411p00DB* + ID_MODEL_FROM_DATABASE=External Hard Drive HD-PF32OU2 [Buffalo Ministation] + +usb:v0411p00E8* + ID_MODEL_FROM_DATABASE=WLI-UC-G300N Wireless LAN Adapter [Ralink RT2870] + +usb:v0411p0105* + ID_MODEL_FROM_DATABASE=External Hard Drive HD-CEU2 [Drive Station] + +usb:v0411p012E* + ID_MODEL_FROM_DATABASE=WLI-UC-AG300N Wireless LAN Adapter + +usb:v0411p0148* + ID_MODEL_FROM_DATABASE=WLI-UC-G300HP Wireless LAN Adapter + +usb:v0411p0150* + ID_MODEL_FROM_DATABASE=WLP-UC-AG300 Wireless LAN Adapter + +usb:v0411p0157* + ID_MODEL_FROM_DATABASE=External Hard Drive HD-PEU2 + +usb:v0411p0158* + ID_MODEL_FROM_DATABASE=WLI-UC-GNHP Wireless LAN Adapter + +usb:v0411p015D* + ID_MODEL_FROM_DATABASE=WLI-UC-GN Wireless LAN Adapter [Ralink RT3070] + +usb:v0411p016F* + ID_MODEL_FROM_DATABASE=WLI-UC-G301N Wireless LAN Adapter [Ralink RT3072] + +usb:v0411p017F* + ID_MODEL_FROM_DATABASE=Sony UWA-BR100 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] + +usb:v0411p019E* + ID_MODEL_FROM_DATABASE=WLI-UC-GNP Wireless LAN Adapter + +usb:v0411p01A1* + ID_MODEL_FROM_DATABASE=MiniStation Metro + +usb:v0411p01A2* + ID_MODEL_FROM_DATABASE=WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070] + +usb:v0411p01DC* + ID_MODEL_FROM_DATABASE=Ultra-Slim Portable DVD Writer (DVSM-PC58U2V) + +usb:v0411p01DE* + ID_MODEL_FROM_DATABASE=External Hard Drive HD-PCTU3 [Buffalo MiniStation] + +usb:v0411p01EE* + ID_MODEL_FROM_DATABASE=WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070] + +usb:v0411p01F1* + ID_MODEL_FROM_DATABASE=SATA Adapter [HD-LBU3] + +usb:v0411p01FD* + ID_MODEL_FROM_DATABASE=WLI-UC-G450 Wireless LAN Adapter + +usb:v0412* + ID_VENDOR_FROM_DATABASE=Award Software International + +usb:v0413* + ID_VENDOR_FROM_DATABASE=Leadtek Research, Inc. + +usb:v0413p1310* + ID_MODEL_FROM_DATABASE=WinFast TV - NTSC + FM + +usb:v0413p1311* + ID_MODEL_FROM_DATABASE=WinFast TV - NTSC + MTS + FM + +usb:v0413p1312* + ID_MODEL_FROM_DATABASE=WinFast TV - PAL BG + FM + +usb:v0413p1313* + ID_MODEL_FROM_DATABASE=WinFast TV - PAL BG+TXT + FM + +usb:v0413p1314* + ID_MODEL_FROM_DATABASE=WinFast TV Audio - PHP PAL I + +usb:v0413p1315* + ID_MODEL_FROM_DATABASE=WinFast TV Audio - PHP PAL I+TXT + +usb:v0413p1316* + ID_MODEL_FROM_DATABASE=WinFast TV Audio - PHP PAL DK + +usb:v0413p1317* + ID_MODEL_FROM_DATABASE=WinFast TV Audio - PHP PAL DK+TXT + +usb:v0413p1318* + ID_MODEL_FROM_DATABASE=WinFast TV - PAL I/DK + FM + +usb:v0413p1319* + ID_MODEL_FROM_DATABASE=WinFast TV - PAL N + FM + +usb:v0413p131A* + ID_MODEL_FROM_DATABASE=WinFast TV Audio - PHP SECAM LL + +usb:v0413p131B* + ID_MODEL_FROM_DATABASE=WinFast TV Audio - PHP SECAM LL+TXT + +usb:v0413p131C* + ID_MODEL_FROM_DATABASE=WinFast TV Audio - PHP SECAM DK + +usb:v0413p131D* + ID_MODEL_FROM_DATABASE=WinFast TV - SECAM DK + TXT + FM + +usb:v0413p131E* + ID_MODEL_FROM_DATABASE=WinFast TV - NTSC Japan + FM + +usb:v0413p1320* + ID_MODEL_FROM_DATABASE=WinFast TV - NTSC + +usb:v0413p1321* + ID_MODEL_FROM_DATABASE=WinFast TV - NTSC + MTS + +usb:v0413p1322* + ID_MODEL_FROM_DATABASE=WinFast TV - PAL BG + +usb:v0413p1323* + ID_MODEL_FROM_DATABASE=WinFast TV - PAL BG+TXT + +usb:v0413p1324* + ID_MODEL_FROM_DATABASE=WinFast TV Audio - PHP PAL I + +usb:v0413p1325* + ID_MODEL_FROM_DATABASE=WinFast TV Audio - PHP PAL I+TXT + +usb:v0413p1326* + ID_MODEL_FROM_DATABASE=WinFast TV Audio - PHP PAL DK + +usb:v0413p1327* + ID_MODEL_FROM_DATABASE=WinFast TV Audio - PHP PAL DK+TXT + +usb:v0413p1328* + ID_MODEL_FROM_DATABASE=WinFast TV - PAL I/DK + +usb:v0413p1329* + ID_MODEL_FROM_DATABASE=WinFast TV - PAL N + +usb:v0413p132A* + ID_MODEL_FROM_DATABASE=WinFast TV Audio - PHP SECAM LL + +usb:v0413p132B* + ID_MODEL_FROM_DATABASE=WinFast TV Audio - PHP SECAM LL+TXT + +usb:v0413p132C* + ID_MODEL_FROM_DATABASE=WinFast TV Audio - PHP SECAM DK + +usb:v0413p132D* + ID_MODEL_FROM_DATABASE=WinFast TV - SECAM DK + TXT + +usb:v0413p132E* + ID_MODEL_FROM_DATABASE=WinFast TV - NTSC Japan + +usb:v0413p6023* + ID_MODEL_FROM_DATABASE=EMP Audio Device + +usb:v0413p6024* + ID_MODEL_FROM_DATABASE=WinFast PalmTop/Novo TV Video + +usb:v0413p6025* + ID_MODEL_FROM_DATABASE=WinFast DTV Dongle (cold state) + +usb:v0413p6026* + ID_MODEL_FROM_DATABASE=WinFast DTV Dongle (warm state) + +usb:v0413p6029* + ID_MODEL_FROM_DATABASE=WinFast DTV Dongle Gold + +usb:v0413p6125* + ID_MODEL_FROM_DATABASE=WinFast DTV Dongle + +usb:v0413p6126* + ID_MODEL_FROM_DATABASE=WinFast DTV Dongle BDA Driver + +usb:v0413p6A03* + ID_MODEL_FROM_DATABASE=RTL2832 [WinFast DTV Dongle Mini] + +usb:v0413p6F00* + ID_MODEL_FROM_DATABASE=WinFast DTV Dongle (STK7700P based) + +usb:v0414* + ID_VENDOR_FROM_DATABASE=Giga-Byte Technology Co., Ltd + +usb:v0416* + ID_VENDOR_FROM_DATABASE=Winbond Electronics Corp. + +usb:v0416p0035* + ID_MODEL_FROM_DATABASE=W89C35 802.11bg WLAN Adapter + +usb:v0416p0101* + ID_MODEL_FROM_DATABASE=Hub + +usb:v0416p0961* + ID_MODEL_FROM_DATABASE=AVL Flash Card Reader + +usb:v0416p3810* + ID_MODEL_FROM_DATABASE=Smart Card Controller + +usb:v0416p3811* + ID_MODEL_FROM_DATABASE=Generic Controller - Single interface + +usb:v0416p3812* + ID_MODEL_FROM_DATABASE=Smart Card Controller_2Interface + +usb:v0416p3813* + ID_MODEL_FROM_DATABASE=Panel Display + +usb:v0416p5011* + ID_MODEL_FROM_DATABASE=Virtual Com Port + +usb:v0416p5518* + ID_MODEL_FROM_DATABASE=4-Port Hub + +usb:v0416p551A* + ID_MODEL_FROM_DATABASE=PC Sync Keypad + +usb:v0416p551B* + ID_MODEL_FROM_DATABASE=PC Async Keypad + +usb:v0416p551C* + ID_MODEL_FROM_DATABASE=Sync Tenkey + +usb:v0416p551D* + ID_MODEL_FROM_DATABASE=Async Tenkey + +usb:v0416p551E* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v0416p551F* + ID_MODEL_FROM_DATABASE=Keyboard w/ Sys and Media + +usb:v0416p5521* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v0416p6481* + ID_MODEL_FROM_DATABASE=16-bit Scanner + +usb:v0416p7721* + ID_MODEL_FROM_DATABASE=Memory Stick Reader/Writer + +usb:v0416p7722* + ID_MODEL_FROM_DATABASE=Memory Stick Reader/Writer + +usb:v0416p7723* + ID_MODEL_FROM_DATABASE=SD Card Reader + +usb:v0417* + ID_VENDOR_FROM_DATABASE=Symbios Logic + +usb:v0418* + ID_VENDOR_FROM_DATABASE=AST Research + +usb:v0419* + ID_VENDOR_FROM_DATABASE=Samsung Info. Systems America, Inc. + +usb:v0419p0001* + ID_MODEL_FROM_DATABASE=IrDA Remote Controller / Creative Cordless Mouse + +usb:v0419p0600* + ID_MODEL_FROM_DATABASE=Desktop Wireless 6000 + +usb:v0419p3001* + ID_MODEL_FROM_DATABASE=Xerox P1202 Laser Printer + +usb:v0419p3003* + ID_MODEL_FROM_DATABASE=Olivetti PG L12L + +usb:v0419p3201* + ID_MODEL_FROM_DATABASE=Docuprint P8ex + +usb:v0419p3404* + ID_MODEL_FROM_DATABASE=SCX-5x12 series + +usb:v0419p3406* + ID_MODEL_FROM_DATABASE=MFP 830 series + +usb:v0419p3407* + ID_MODEL_FROM_DATABASE=ML-912 + +usb:v0419p3601* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v0419p3602* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v0419p4602* + ID_MODEL_FROM_DATABASE=Remote NDIS Network Device + +usb:v0419p8001* + ID_MODEL_FROM_DATABASE=Hub + +usb:v0419p8002* + ID_MODEL_FROM_DATABASE=SyncMaster HID Monitor Control + +usb:v0419pAA03* + ID_MODEL_FROM_DATABASE=SDAS-3 MP3 Player + +usb:v041A* + ID_VENDOR_FROM_DATABASE=Phoenix Technologies, Ltd + +usb:v041B* + ID_VENDOR_FROM_DATABASE=d'TV + +usb:v041D* + ID_VENDOR_FROM_DATABASE=S3, Inc. + +usb:v041E* + ID_VENDOR_FROM_DATABASE=Creative Technology, Ltd + +usb:v041Ep1002* + ID_MODEL_FROM_DATABASE=Nomad II + +usb:v041Ep1003* + ID_MODEL_FROM_DATABASE=Blaster GamePad Cobra + +usb:v041Ep1050* + ID_MODEL_FROM_DATABASE=GamePad Cobra + +usb:v041Ep1053* + ID_MODEL_FROM_DATABASE=Mouse Gamer HD7600L + +usb:v041Ep200C* + ID_MODEL_FROM_DATABASE=MuVo V100 + +usb:v041Ep2020* + ID_MODEL_FROM_DATABASE=Zen X-Fi 2 + +usb:v041Ep2029* + ID_MODEL_FROM_DATABASE=ZiiO + +usb:v041Ep2801* + ID_MODEL_FROM_DATABASE=Prodikeys PC-MIDI multifunction keyboard + +usb:v041Ep3000* + ID_MODEL_FROM_DATABASE=SoundBlaster Extigy + +usb:v041Ep3002* + ID_MODEL_FROM_DATABASE=SB External Composite Device + +usb:v041Ep3010* + ID_MODEL_FROM_DATABASE=SoundBlaster MP3+ + +usb:v041Ep3014* + ID_MODEL_FROM_DATABASE=SB External Composite Device + +usb:v041Ep3015* + ID_MODEL_FROM_DATABASE=Sound Blaster Digital Music LX + +usb:v041Ep3020* + ID_MODEL_FROM_DATABASE=SoundBlaster Audigy 2 NX + +usb:v041Ep3030* + ID_MODEL_FROM_DATABASE=SB External Composite Device + +usb:v041Ep3040* + ID_MODEL_FROM_DATABASE=SoundBlaster Live! 24-bit External SB0490 + +usb:v041Ep3060* + ID_MODEL_FROM_DATABASE=Sound Blaster Audigy 2 ZS External + +usb:v041Ep3061* + ID_MODEL_FROM_DATABASE=SoundBlaster Audigy 2 ZS Video Editor + +usb:v041Ep3090* + ID_MODEL_FROM_DATABASE=Sound Blaster Digital Music SX + +usb:v041Ep30D3* + ID_MODEL_FROM_DATABASE=Sound Blaster Play! + +usb:v041Ep3121* + ID_MODEL_FROM_DATABASE=WoW tap chat + +usb:v041Ep3220* + ID_MODEL_FROM_DATABASE=Sound Blaster Tactic(3D) Sigma sound card + +usb:v041Ep3F00* + ID_MODEL_FROM_DATABASE=E-Mu Xboard 25 MIDI Controller + +usb:v041Ep3F02* + ID_MODEL_FROM_DATABASE=E-Mu 0202 + +usb:v041Ep3F04* + ID_MODEL_FROM_DATABASE=E-Mu 0404 + +usb:v041Ep3F07* + ID_MODEL_FROM_DATABASE=E-Mu Xmidi 1x1 + +usb:v041Ep4003* + ID_MODEL_FROM_DATABASE=VideoBlaster Webcam Go Plus [W9967CF] + +usb:v041Ep4004* + ID_MODEL_FROM_DATABASE=Nomad II MG + +usb:v041Ep4005* + ID_MODEL_FROM_DATABASE=Webcam Blaster Go ES + +usb:v041Ep4007* + ID_MODEL_FROM_DATABASE=Go Mini + +usb:v041Ep400A* + ID_MODEL_FROM_DATABASE=PC-Cam 300 + +usb:v041Ep400B* + ID_MODEL_FROM_DATABASE=PC-Cam 600 + +usb:v041Ep400C* + ID_MODEL_FROM_DATABASE=Webcam 5 [pwc] + +usb:v041Ep400D* + ID_MODEL_FROM_DATABASE=Webcam PD1001 + +usb:v041Ep400F* + ID_MODEL_FROM_DATABASE=PC-CAM 550 (Composite) + +usb:v041Ep4011* + ID_MODEL_FROM_DATABASE=Webcam PRO eX + +usb:v041Ep4012* + ID_MODEL_FROM_DATABASE=PC-CAM350 + +usb:v041Ep4013* + ID_MODEL_FROM_DATABASE=PC-Cam 750 + +usb:v041Ep4015* + ID_MODEL_FROM_DATABASE=CardCam Value + +usb:v041Ep4016* + ID_MODEL_FROM_DATABASE=CardCam + +usb:v041Ep4017* + ID_MODEL_FROM_DATABASE=Webcam Mobile [PD1090] + +usb:v041Ep4018* + ID_MODEL_FROM_DATABASE=Webcam Vista [PD1100] + +usb:v041Ep4019* + ID_MODEL_FROM_DATABASE=Audio Device + +usb:v041Ep401A* + ID_MODEL_FROM_DATABASE=Webcam Vista [PD1100] + +usb:v041Ep401C* + ID_MODEL_FROM_DATABASE=Webcam NX [PD1110] + +usb:v041Ep401D* + ID_MODEL_FROM_DATABASE=Webcam NX Ultra + +usb:v041Ep401E* + ID_MODEL_FROM_DATABASE=Webcam NX Pro + +usb:v041Ep401F* + ID_MODEL_FROM_DATABASE=Webcam Notebook [PD1171] + +usb:v041Ep4020* + ID_MODEL_FROM_DATABASE=Webcam NX + +usb:v041Ep4021* + ID_MODEL_FROM_DATABASE=Webcam NX Ultra + +usb:v041Ep4022* + ID_MODEL_FROM_DATABASE=Webcam NX Pro + +usb:v041Ep4028* + ID_MODEL_FROM_DATABASE=Vista Plus cam [VF0090] + +usb:v041Ep4029* + ID_MODEL_FROM_DATABASE=Webcam Live! + +usb:v041Ep402F* + ID_MODEL_FROM_DATABASE=DC-CAM 3000Z + +usb:v041Ep4034* + ID_MODEL_FROM_DATABASE=Webcam Instant + +usb:v041Ep4035* + ID_MODEL_FROM_DATABASE=Webcam Instant + +usb:v041Ep4036* + ID_MODEL_FROM_DATABASE=Webcam Live!/Live! Pro + +usb:v041Ep4037* + ID_MODEL_FROM_DATABASE=Webcam Live! + +usb:v041Ep4038* + ID_MODEL_FROM_DATABASE=ORITE CCD Webcam [PC370R] + +usb:v041Ep4039* + ID_MODEL_FROM_DATABASE=Webcam Live! Effects + +usb:v041Ep403A* + ID_MODEL_FROM_DATABASE=Webcam NX Pro 2 + +usb:v041Ep403B* + ID_MODEL_FROM_DATABASE=Creative Webcam Vista [VF0010] + +usb:v041Ep403C* + ID_MODEL_FROM_DATABASE=Webcam Live! Ultra + +usb:v041Ep403D* + ID_MODEL_FROM_DATABASE=Webcam Notebook Ultra + +usb:v041Ep403E* + ID_MODEL_FROM_DATABASE=Webcam Vista Plus + +usb:v041Ep4041* + ID_MODEL_FROM_DATABASE=Webcam Live! Motion + +usb:v041Ep4043* + ID_MODEL_FROM_DATABASE=Vibra Plus Webcam + +usb:v041Ep4045* + ID_MODEL_FROM_DATABASE=Live! Cam Voice + +usb:v041Ep4049* + ID_MODEL_FROM_DATABASE=Live! Cam Voice + +usb:v041Ep4051* + ID_MODEL_FROM_DATABASE=Live! Cam Notebook Pro [VF0250] + +usb:v041Ep4052* + ID_MODEL_FROM_DATABASE=Live! Cam Vista IM + +usb:v041Ep4053* + ID_MODEL_FROM_DATABASE=Live! Cam Video IM + +usb:v041Ep4054* + ID_MODEL_FROM_DATABASE=Live! Cam Video IM + +usb:v041Ep4055* + ID_MODEL_FROM_DATABASE=Live! Cam Video IM Pro + +usb:v041Ep4056* + ID_MODEL_FROM_DATABASE=Live! Cam Video IM Pro + +usb:v041Ep4057* + ID_MODEL_FROM_DATABASE=Live! Cam Optia + +usb:v041Ep4058* + ID_MODEL_FROM_DATABASE=Live! Cam Optia AF + +usb:v041Ep4061* + ID_MODEL_FROM_DATABASE=Live! Cam Notebook Pro [VF0400] + +usb:v041Ep4063* + ID_MODEL_FROM_DATABASE=Live! Cam Video IM Pro + +usb:v041Ep4068* + ID_MODEL_FROM_DATABASE=Live! Cam Notebook [VF0470] + +usb:v041Ep406C* + ID_MODEL_FROM_DATABASE=Live! Cam Sync [VF0520] + +usb:v041Ep4083* + ID_MODEL_FROM_DATABASE=Live! Cam Socialize [VF0640] + +usb:v041Ep4087* + ID_MODEL_FROM_DATABASE=Live! Cam Socialize HD 1080 [VF0680] + +usb:v041Ep4088* + ID_MODEL_FROM_DATABASE=Live! Cam Chat HD [VF0700] + +usb:v041Ep4100* + ID_MODEL_FROM_DATABASE=Nomad Jukebox 2 + +usb:v041Ep4101* + ID_MODEL_FROM_DATABASE=Nomad Jukebox 3 + +usb:v041Ep4102* + ID_MODEL_FROM_DATABASE=NOMAD MuVo^2 + +usb:v041Ep4106* + ID_MODEL_FROM_DATABASE=Nomad MuVo + +usb:v041Ep4107* + ID_MODEL_FROM_DATABASE=NOMAD MuVo + +usb:v041Ep4108* + ID_MODEL_FROM_DATABASE=Nomad Jukebox Zen + +usb:v041Ep4109* + ID_MODEL_FROM_DATABASE=Nomad Jukebox Zen NX + +usb:v041Ep410B* + ID_MODEL_FROM_DATABASE=Nomad Jukebox Zen USB 2.0 + +usb:v041Ep410C* + ID_MODEL_FROM_DATABASE=Nomad MuVo NX + +usb:v041Ep410F* + ID_MODEL_FROM_DATABASE=NOMAD MuVo^2 (Flash) + +usb:v041Ep4110* + ID_MODEL_FROM_DATABASE=Nomad Jukebox Zen Xtra + +usb:v041Ep4111* + ID_MODEL_FROM_DATABASE=Dell Digital Jukebox + +usb:v041Ep4116* + ID_MODEL_FROM_DATABASE=MuVo^2 + +usb:v041Ep4117* + ID_MODEL_FROM_DATABASE=Nomad MuVo TX + +usb:v041Ep411B* + ID_MODEL_FROM_DATABASE=Zen Touch + +usb:v041Ep411C* + ID_MODEL_FROM_DATABASE=Nomad MuVo USB 2.0 + +usb:v041Ep411D* + ID_MODEL_FROM_DATABASE=Zen + +usb:v041Ep411E* + ID_MODEL_FROM_DATABASE=Zen Micro + +usb:v041Ep4120* + ID_MODEL_FROM_DATABASE=Nomad MuVo TX FM + +usb:v041Ep4123* + ID_MODEL_FROM_DATABASE=Zen Portable Media Center + +usb:v041Ep4124* + ID_MODEL_FROM_DATABASE=MuVo^2 FM (uHDD) + +usb:v041Ep4126* + ID_MODEL_FROM_DATABASE=Dell DJ (2nd gen) + +usb:v041Ep4127* + ID_MODEL_FROM_DATABASE=Dell DJ + +usb:v041Ep4128* + ID_MODEL_FROM_DATABASE=NOMAD Jukebox Zen Xtra (mtp) + +usb:v041Ep412B* + ID_MODEL_FROM_DATABASE=MuVo N200 with FM radio + +usb:v041Ep412F* + ID_MODEL_FROM_DATABASE=Dell Digital Jukebox 2.Gen + +usb:v041Ep4130* + ID_MODEL_FROM_DATABASE=Zen Micro (mtp) + +usb:v041Ep4131* + ID_MODEL_FROM_DATABASE=DAP-HD0014 [Zen Touch] (MTP) + +usb:v041Ep4133* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v041Ep4134* + ID_MODEL_FROM_DATABASE=Zen Neeon + +usb:v041Ep4136* + ID_MODEL_FROM_DATABASE=Zen Sleek + +usb:v041Ep4137* + ID_MODEL_FROM_DATABASE=Zen Sleek (mtp) + +usb:v041Ep4139* + ID_MODEL_FROM_DATABASE=Zen Nano Plus + +usb:v041Ep413C* + ID_MODEL_FROM_DATABASE=Zen MicroPhoto + +usb:v041Ep4150* + ID_MODEL_FROM_DATABASE=Zen V (MTP) + +usb:v041Ep4151* + ID_MODEL_FROM_DATABASE=Zen Vision:M (mtp) + +usb:v041Ep4152* + ID_MODEL_FROM_DATABASE=Zen V Plus + +usb:v041Ep4153* + ID_MODEL_FROM_DATABASE=Zen Vision W + +usb:v041Ep4154* + ID_MODEL_FROM_DATABASE=Zen Stone + +usb:v041Ep4155* + ID_MODEL_FROM_DATABASE=Zen Stone plus + +usb:v041Ep4157* + ID_MODEL_FROM_DATABASE=Zen (MTP) + +usb:v041Ep500F* + ID_MODEL_FROM_DATABASE=Broadband Blaster 8012U-V + +usb:v041Ep5015* + ID_MODEL_FROM_DATABASE=TECOM Bluetooth Device + +usb:v041EpFFFF* + ID_MODEL_FROM_DATABASE=Webcam Live! Ultra + +usb:v041F* + ID_VENDOR_FROM_DATABASE=LCS Telegraphics + +usb:v0420* + ID_VENDOR_FROM_DATABASE=Chips and Technologies + +usb:v0420p1307* + ID_MODEL_FROM_DATABASE=Celly SIM Card Reader + +usb:v0421* + ID_VENDOR_FROM_DATABASE=Nokia Mobile Phones + +usb:v0421p0001* + ID_MODEL_FROM_DATABASE=E61i (PC Suite mode) + +usb:v0421p0018* + ID_MODEL_FROM_DATABASE=6288 GSM Smartphone + +usb:v0421p0019* + ID_MODEL_FROM_DATABASE=6288 GSM Smartphone (imaging mode) + +usb:v0421p001A* + ID_MODEL_FROM_DATABASE=6288 GSM Smartphone (file transfer mode) + +usb:v0421p0024* + ID_MODEL_FROM_DATABASE=5610 XpressMusic (Storage mode) + +usb:v0421p0025* + ID_MODEL_FROM_DATABASE=5610 XpressMusic (PC Suite mode) + +usb:v0421p0028* + ID_MODEL_FROM_DATABASE=5610 XpressMusic (Imaging mode) + +usb:v0421p002D* + ID_MODEL_FROM_DATABASE=6120 Phone (Mass storage mode) + +usb:v0421p002E* + ID_MODEL_FROM_DATABASE=6120 Phone (Media-Player mode) + +usb:v0421p002F* + ID_MODEL_FROM_DATABASE=6120 Phone (PC-Suite mode) + +usb:v0421p0042* + ID_MODEL_FROM_DATABASE=E51 (PC Suite mode) + +usb:v0421p0064* + ID_MODEL_FROM_DATABASE=3109c GSM Phone + +usb:v0421p006B* + ID_MODEL_FROM_DATABASE=5310 Xpress Music (PC Suite mode) + +usb:v0421p006C* + ID_MODEL_FROM_DATABASE=5310 Xpress music (Storage mode) + +usb:v0421p006D* + ID_MODEL_FROM_DATABASE=N95 (Storage mode) + +usb:v0421p006E* + ID_MODEL_FROM_DATABASE=N95 (Multimedia mode) + +usb:v0421p006F* + ID_MODEL_FROM_DATABASE=N95 (Printing mode) + +usb:v0421p0070* + ID_MODEL_FROM_DATABASE=N95 (PC Suite mode) + +usb:v0421p0096* + ID_MODEL_FROM_DATABASE=N810 Internet Tablet + +usb:v0421p00AA* + ID_MODEL_FROM_DATABASE=E71 (Mass storage mode) + +usb:v0421p00AB* + ID_MODEL_FROM_DATABASE=E71 (PC Suite mode) + +usb:v0421p00E4* + ID_MODEL_FROM_DATABASE=E71 (Media transfer mode) + +usb:v0421p0103* + ID_MODEL_FROM_DATABASE=ADL Flashing Engine AVALON Parent + +usb:v0421p0104* + ID_MODEL_FROM_DATABASE=ADL Re-Flashing Engine Parent + +usb:v0421p0105* + ID_MODEL_FROM_DATABASE=Nokia Firmware Upgrade Mode + +usb:v0421p0106* + ID_MODEL_FROM_DATABASE=ROM Parent + +usb:v0421p0154* + ID_MODEL_FROM_DATABASE=5800 XpressMusic (PC Suite mode) + +usb:v0421p0155* + ID_MODEL_FROM_DATABASE=5800 XpressMusic (Multimedia mode) + +usb:v0421p0156* + ID_MODEL_FROM_DATABASE=5800 XpressMusic (Storage mode) + +usb:v0421p0157* + ID_MODEL_FROM_DATABASE=5800 XpressMusic (Imaging mode) + +usb:v0421p0199* + ID_MODEL_FROM_DATABASE=6700 Classic (msc) + +usb:v0421p019A* + ID_MODEL_FROM_DATABASE=6700 Classic (PC Suite) + +usb:v0421p019B* + ID_MODEL_FROM_DATABASE=6700 Classic (mtp) + +usb:v0421p01B0* + ID_MODEL_FROM_DATABASE=6303 classic Phone (PC Suite mode) + +usb:v0421p01B1* + ID_MODEL_FROM_DATABASE=6303 classic Phone (Mass storage mode) + +usb:v0421p01B2* + ID_MODEL_FROM_DATABASE=6303 classic Phone (Printing and media mode) + +usb:v0421p01C7* + ID_MODEL_FROM_DATABASE=N900 (Storage Mode) + +usb:v0421p01C8* + ID_MODEL_FROM_DATABASE=N900 (PC-Suite Mode) + +usb:v0421p0228* + ID_MODEL_FROM_DATABASE=5530 XpressMusic + +usb:v0421p023A* + ID_MODEL_FROM_DATABASE=6730 Classic + +usb:v0421p026A* + ID_MODEL_FROM_DATABASE=N97 (mass storage) + +usb:v0421p026B* + ID_MODEL_FROM_DATABASE=N97 (Multimedia) + +usb:v0421p026C* + ID_MODEL_FROM_DATABASE=N97 (PC Suite) + +usb:v0421p026D* + ID_MODEL_FROM_DATABASE=N97 (Pictures) + +usb:v0421p0295* + ID_MODEL_FROM_DATABASE=660i/6600i Slide Phone (Mass Storage) + +usb:v0421p0297* + ID_MODEL_FROM_DATABASE=660i/6600i Slide Phone (Still Image) + +usb:v0421p02E1* + ID_MODEL_FROM_DATABASE=5230 (Storage mode) + +usb:v0421p02E2* + ID_MODEL_FROM_DATABASE=5230 (Multimedia mode) + +usb:v0421p02E3* + ID_MODEL_FROM_DATABASE=5230 (PC-Suite mode) + +usb:v0421p02E4* + ID_MODEL_FROM_DATABASE=5230 (Imaging mode) + +usb:v0421p0360* + ID_MODEL_FROM_DATABASE=C1-01 Ovi Suite Mode + +usb:v0421p03A4* + ID_MODEL_FROM_DATABASE=C5 (Storage mode) + +usb:v0421p03C0* + ID_MODEL_FROM_DATABASE=C7-00 + +usb:v0421p03D1* + ID_MODEL_FROM_DATABASE=N950 + +usb:v0421p0400* + ID_MODEL_FROM_DATABASE=7600 Phone Parent + +usb:v0421p0401* + ID_MODEL_FROM_DATABASE=6650 GSM Phone + +usb:v0421p0402* + ID_MODEL_FROM_DATABASE=6255 Phone Parent + +usb:v0421p0404* + ID_MODEL_FROM_DATABASE=5510 + +usb:v0421p0405* + ID_MODEL_FROM_DATABASE=9500 GSM Communicator + +usb:v0421p0407* + ID_MODEL_FROM_DATABASE=Music Player HDR-1(tm) + +usb:v0421p040B* + ID_MODEL_FROM_DATABASE=N-Gage GSM Phone + +usb:v0421p040D* + ID_MODEL_FROM_DATABASE=6620 Phone Parent + +usb:v0421p040E* + ID_MODEL_FROM_DATABASE=6651 Phone Parent + +usb:v0421p040F* + ID_MODEL_FROM_DATABASE=6230 GSM Phone + +usb:v0421p0410* + ID_MODEL_FROM_DATABASE=6630 Imaging Smartphone + +usb:v0421p0411* + ID_MODEL_FROM_DATABASE=7610 Phone Parent + +usb:v0421p0413* + ID_MODEL_FROM_DATABASE=6260 Phone Parent + +usb:v0421p0414* + ID_MODEL_FROM_DATABASE=7370 + +usb:v0421p0415* + ID_MODEL_FROM_DATABASE=9300 GSM Smartphone + +usb:v0421p0416* + ID_MODEL_FROM_DATABASE=6170 Phone Parent + +usb:v0421p0417* + ID_MODEL_FROM_DATABASE=7270 Phone Parent + +usb:v0421p0418* + ID_MODEL_FROM_DATABASE=E70 (PC Suite mode) + +usb:v0421p0419* + ID_MODEL_FROM_DATABASE=E60 (PC Suite mode) + +usb:v0421p041A* + ID_MODEL_FROM_DATABASE=9500 GSM Communicator (RNDIS) + +usb:v0421p041B* + ID_MODEL_FROM_DATABASE=9300 GSM Smartphone (RNDIS) + +usb:v0421p041C* + ID_MODEL_FROM_DATABASE=7710 Phone Parent + +usb:v0421p041D* + ID_MODEL_FROM_DATABASE=6670 Phone Parent + +usb:v0421p041E* + ID_MODEL_FROM_DATABASE=6680 + +usb:v0421p041F* + ID_MODEL_FROM_DATABASE=6235 Phone Parent + +usb:v0421p0421* + ID_MODEL_FROM_DATABASE=3230 Phone Parent + +usb:v0421p0422* + ID_MODEL_FROM_DATABASE=6681 Phone Parent + +usb:v0421p0423* + ID_MODEL_FROM_DATABASE=6682 Phone Parent + +usb:v0421p0428* + ID_MODEL_FROM_DATABASE=6230i Modem + +usb:v0421p0429* + ID_MODEL_FROM_DATABASE=6230i MultiMedia Card + +usb:v0421p0431* + ID_MODEL_FROM_DATABASE=770 Internet Tablet + +usb:v0421p0432* + ID_MODEL_FROM_DATABASE=N90 Phone Parent + +usb:v0421p0435* + ID_MODEL_FROM_DATABASE=E70 (IP Passthrough/RNDIS mode) + +usb:v0421p0436* + ID_MODEL_FROM_DATABASE=E60 (IP Passthrough/RNDIS mode) + +usb:v0421p0437* + ID_MODEL_FROM_DATABASE=6265 Phone Parent + +usb:v0421p043A* + ID_MODEL_FROM_DATABASE=N70 USB Phone Parent + +usb:v0421p043B* + ID_MODEL_FROM_DATABASE=3155 Phone Parent + +usb:v0421p043C* + ID_MODEL_FROM_DATABASE=6155 Phone Parent + +usb:v0421p043D* + ID_MODEL_FROM_DATABASE=6270 Phone Parent + +usb:v0421p0443* + ID_MODEL_FROM_DATABASE=N70 Phone Parent + +usb:v0421p0444* + ID_MODEL_FROM_DATABASE=N91 + +usb:v0421p044C* + ID_MODEL_FROM_DATABASE=NM850iG Phone Parent + +usb:v0421p044D* + ID_MODEL_FROM_DATABASE=E61 (PC Suite mode) + +usb:v0421p044E* + ID_MODEL_FROM_DATABASE=E61 (Data Exchange mode) + +usb:v0421p044F* + ID_MODEL_FROM_DATABASE=E61 (IP Passthrough/RNDIS mode) + +usb:v0421p0453* + ID_MODEL_FROM_DATABASE=9300 Phone Parent + +usb:v0421p0456* + ID_MODEL_FROM_DATABASE=6111 Phone Parent + +usb:v0421p0457* + ID_MODEL_FROM_DATABASE=6111 Phone (Printing mode) + +usb:v0421p045A* + ID_MODEL_FROM_DATABASE=6280 Phone Parent + +usb:v0421p045D* + ID_MODEL_FROM_DATABASE=6282 Phone Parent + +usb:v0421p046E* + ID_MODEL_FROM_DATABASE=6110 Navigator + +usb:v0421p0471* + ID_MODEL_FROM_DATABASE=6110 Navigator + +usb:v0421p0485* + ID_MODEL_FROM_DATABASE=MTP Device + +usb:v0421p04B9* + ID_MODEL_FROM_DATABASE=5300 + +usb:v0421p04BC* + ID_MODEL_FROM_DATABASE=5200 (Nokia mode) + +usb:v0421p04BD* + ID_MODEL_FROM_DATABASE=5200 (Storage mode) + +usb:v0421p04BE* + ID_MODEL_FROM_DATABASE=5200 (MTP mode) + +usb:v0421p04C3* + ID_MODEL_FROM_DATABASE=N800 Internet Tablet + +usb:v0421p04CE* + ID_MODEL_FROM_DATABASE=E90 Communicator (PC Suite mode) + +usb:v0421p04CF* + ID_MODEL_FROM_DATABASE=E90 Communicator (Storage mode) + +usb:v0421p04F0* + ID_MODEL_FROM_DATABASE=Nokia N95 (PC Suite mode) + +usb:v0421p04F9* + ID_MODEL_FROM_DATABASE=6300 (PC Suite mode) + +usb:v0421p0508* + ID_MODEL_FROM_DATABASE=E65 (PC Suite mode) + +usb:v0421p0509* + ID_MODEL_FROM_DATABASE=E65 (Storage mode) + +usb:v0421p0518* + ID_MODEL_FROM_DATABASE=N9 Phone + +usb:v0421p0600* + ID_MODEL_FROM_DATABASE=Digital Pen SU-1B + +usb:v0421p0610* + ID_MODEL_FROM_DATABASE=CS-15 (Internet Stick 3G modem) + +usb:v0421p0661* + ID_MODEL_FROM_DATABASE=Lumia 920 + +usb:v0421p0800* + ID_MODEL_FROM_DATABASE=Connectivity Cable DKU-5 + +usb:v0421p0801* + ID_MODEL_FROM_DATABASE=Data Cable DKU-6 + +usb:v0421p0802* + ID_MODEL_FROM_DATABASE=CA-42 Phone Parent + +usb:v0422* + ID_VENDOR_FROM_DATABASE=ADI Systems, Inc. + +usb:v0423* + ID_VENDOR_FROM_DATABASE=Computer Access Technology Corp. + +usb:v0423p000A* + ID_MODEL_FROM_DATABASE=NetMate Ethernet + +usb:v0423p000C* + ID_MODEL_FROM_DATABASE=NetMate2 Ethernet + +usb:v0423p000D* + ID_MODEL_FROM_DATABASE=USB Chief Analyzer + +usb:v0423p0100* + ID_MODEL_FROM_DATABASE=Generic Universal Protocol Analyzer + +usb:v0423p0101* + ID_MODEL_FROM_DATABASE=UPA USBTracer + +usb:v0423p0200* + ID_MODEL_FROM_DATABASE=Generic 10K Universal Protocol Analyzer + +usb:v0423p020A* + ID_MODEL_FROM_DATABASE=PETracer ML + +usb:v0423p0300* + ID_MODEL_FROM_DATABASE=Generic Universal Protocol Analyzer + +usb:v0423p0301* + ID_MODEL_FROM_DATABASE=2500H Tracer Trainer + +usb:v0423p030A* + ID_MODEL_FROM_DATABASE=PETracer x1 + +usb:v0423p1237* + ID_MODEL_FROM_DATABASE=Andromeda Hub + +usb:v0424* + ID_VENDOR_FROM_DATABASE=Standard Microsystems Corp. + +usb:v0424p0001* + ID_MODEL_FROM_DATABASE=Integrated Hub + +usb:v0424p0ACD* + ID_MODEL_FROM_DATABASE=Sitecom Internal Multi Memory reader/writer MD-005 + +usb:v0424p0FDC* + ID_MODEL_FROM_DATABASE=Floppy + +usb:v0424p10CD* + ID_MODEL_FROM_DATABASE=Sitecom Internal Multi Memory reader/writer MD-005 + +usb:v0424p2020* + ID_MODEL_FROM_DATABASE=USB Hub + +usb:v0424p20CD* + ID_MODEL_FROM_DATABASE=Sitecom Internal Multi Memory reader/writer MD-005 + +usb:v0424p20FC* + ID_MODEL_FROM_DATABASE=6-in-1 Card Reader + +usb:v0424p2228* + ID_MODEL_FROM_DATABASE=9-in-2 Card Reader + +usb:v0424p223A* + ID_MODEL_FROM_DATABASE=8-in-1 Card Reader + +usb:v0424p2503* + ID_MODEL_FROM_DATABASE=USB 2.0 Hub + +usb:v0424p2504* + ID_MODEL_FROM_DATABASE=USB 2.0 Hub + +usb:v0424p2507* + ID_MODEL_FROM_DATABASE=hub + +usb:v0424p2512* + ID_MODEL_FROM_DATABASE=USB 2.0 Hub + +usb:v0424p2513* + ID_MODEL_FROM_DATABASE=2.0 Hub + +usb:v0424p2514* + ID_MODEL_FROM_DATABASE=USB 2.0 Hub + +usb:v0424p2517* + ID_MODEL_FROM_DATABASE=Hub + +usb:v0424p2524* + ID_MODEL_FROM_DATABASE=USB MultiSwitch Hub + +usb:v0424p2602* + ID_MODEL_FROM_DATABASE=USB 2.0 Hub + +usb:v0424p2640* + ID_MODEL_FROM_DATABASE=USB 2.0 Hub + +usb:v0424p4060* + ID_MODEL_FROM_DATABASE=Ultra Fast Media Reader + +usb:v0424p4064* + ID_MODEL_FROM_DATABASE=Ultra Fast Media Reader + +usb:v0424p7500* + ID_MODEL_FROM_DATABASE=LAN7500 Ethernet 10/100/1000 Adapter + +usb:v0424p9512* + ID_MODEL_FROM_DATABASE=LAN9500 Ethernet 10/100 Adapter / SMSC9512/9514 Hub + +usb:v0424pA700* + ID_MODEL_FROM_DATABASE=2 Port Hub + +usb:v0424pEC00* + ID_MODEL_FROM_DATABASE=SMSC9512/9514 Fast Ethernet Adapter + +usb:v0425* + ID_VENDOR_FROM_DATABASE=Motorola Semiconductors HK, Ltd + +usb:v0425p0101* + ID_MODEL_FROM_DATABASE=G-Tech Wireless Mouse & Keyboard + +usb:v0425pF102* + ID_MODEL_FROM_DATABASE=G-Tech U+P Wireless Mouse + +usb:v0426* + ID_VENDOR_FROM_DATABASE=Integrated Device Technology, Inc. + +usb:v0426p0426* + ID_MODEL_FROM_DATABASE=WDM Driver + +usb:v0427* + ID_VENDOR_FROM_DATABASE=Motorola Electronics Taiwan, Ltd + +usb:v0428* + ID_VENDOR_FROM_DATABASE=Advanced Gravis Computer Tech, Ltd + +usb:v0428p4001* + ID_MODEL_FROM_DATABASE=GamePad Pro + +usb:v0429* + ID_VENDOR_FROM_DATABASE=Cirrus Logic + +usb:v042A* + ID_VENDOR_FROM_DATABASE=Ericsson Austrian, AG + +usb:v042B* + ID_VENDOR_FROM_DATABASE=Intel Corp. + +usb:v042Bp9316* + ID_MODEL_FROM_DATABASE=8x931Hx Customer Hub + +usb:v042C* + ID_VENDOR_FROM_DATABASE=Innovative Semiconductors, Inc. + +usb:v042D* + ID_VENDOR_FROM_DATABASE=Micronics + +usb:v042E* + ID_VENDOR_FROM_DATABASE=Acer, Inc. + +usb:v042Ep0380* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v042F* + ID_VENDOR_FROM_DATABASE=Molex, Inc. + +usb:v0430* + ID_VENDOR_FROM_DATABASE=Sun Microsystems, Inc. + +usb:v0430p0002* + ID_MODEL_FROM_DATABASE=109 Keyboard + +usb:v0430p0005* + ID_MODEL_FROM_DATABASE=Type 6 Keyboard + +usb:v0430p000A* + ID_MODEL_FROM_DATABASE=109 Japanese Keyboard + +usb:v0430p000B* + ID_MODEL_FROM_DATABASE=109 Japanese Keyboard + +usb:v0430p0082* + ID_MODEL_FROM_DATABASE=109 Japanese Keyboard + +usb:v0430p0083* + ID_MODEL_FROM_DATABASE=109 Japanese Keyboard + +usb:v0430p00A2* + ID_MODEL_FROM_DATABASE=Type 7 Keyboard + +usb:v0430p0100* + ID_MODEL_FROM_DATABASE=3-button Mouse + +usb:v0430p100E* + ID_MODEL_FROM_DATABASE=24.1" LCD Monitor v4 / FID-638 Mouse + +usb:v0430p36BA* + ID_MODEL_FROM_DATABASE=Bus Powered Hub + +usb:v0430pA101* + ID_MODEL_FROM_DATABASE=remote key/mouse for P3 chip + +usb:v0430pA102* + ID_MODEL_FROM_DATABASE=remote key/mouse/storage for P3 chip + +usb:v0430pA103* + ID_MODEL_FROM_DATABASE=remote storage for P3 chip + +usb:v0430pA4A2* + ID_MODEL_FROM_DATABASE=Ethernet (RNDIS and CDC ethernet) + +usb:v0430pCDAB* + ID_MODEL_FROM_DATABASE=Raritan KVM dongle + +usb:v0431* + ID_VENDOR_FROM_DATABASE=Itac Systems, Inc. + +usb:v0431p0100* + ID_MODEL_FROM_DATABASE=Mouse-Trak 3-button Track Ball + +usb:v0432* + ID_VENDOR_FROM_DATABASE=Unisys Corp. + +usb:v0433* + ID_VENDOR_FROM_DATABASE=Alps Electric, Inc. + +usb:v0433p1101* + ID_MODEL_FROM_DATABASE=IBM Game Controller + +usb:v0433pABAB* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v0434* + ID_VENDOR_FROM_DATABASE=Samsung Info. Systems America, Inc. + +usb:v0435* + ID_VENDOR_FROM_DATABASE=Hyundai Electronics America + +usb:v0436* + ID_VENDOR_FROM_DATABASE=Taugagreining HF + +usb:v0436p0005* + ID_MODEL_FROM_DATABASE=CameraMate (DPCM_USB) + +usb:v0437* + ID_VENDOR_FROM_DATABASE=Framatome Connectors USA + +usb:v0438* + ID_VENDOR_FROM_DATABASE=Advanced Micro Devices, Inc. + +usb:v0439* + ID_VENDOR_FROM_DATABASE=Voice Technologies Group + +usb:v043D* + ID_VENDOR_FROM_DATABASE=Lexmark International, Inc. + +usb:v043Dp0001* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp0002* + ID_MODEL_FROM_DATABASE=Optra E310 Printer + +usb:v043Dp0003* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp0004* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp0005* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp0006* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp0007* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp0008* + ID_MODEL_FROM_DATABASE=Inkjet Color Printer + +usb:v043Dp0009* + ID_MODEL_FROM_DATABASE=Optra S2450 Printer + +usb:v043Dp000A* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp000B* + ID_MODEL_FROM_DATABASE=Inkjet Color Printer + +usb:v043Dp000C* + ID_MODEL_FROM_DATABASE=Optra E312 Printer + +usb:v043Dp000D* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp000E* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp000F* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp0010* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp0011* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp0012* + ID_MODEL_FROM_DATABASE=Inkjet Color Printer + +usb:v043Dp0013* + ID_MODEL_FROM_DATABASE=Inkjet Color Printer + +usb:v043Dp0014* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp0015* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp0016* + ID_MODEL_FROM_DATABASE=Z12 Color Jetprinter + +usb:v043Dp0017* + ID_MODEL_FROM_DATABASE=Z32 printer + +usb:v043Dp0018* + ID_MODEL_FROM_DATABASE=Z52 Printer + +usb:v043Dp0019* + ID_MODEL_FROM_DATABASE=Forms Printer + +usb:v043Dp001A* + ID_MODEL_FROM_DATABASE=Z65 Printer + +usb:v043Dp001B* + ID_MODEL_FROM_DATABASE=InkJet Photo Printer + +usb:v043Dp001C* + ID_MODEL_FROM_DATABASE=Kodak Personal Picture Maker 200 Printer + +usb:v043Dp001D* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp001E* + ID_MODEL_FROM_DATABASE=InkJet Photo Printer + +usb:v043Dp001F* + ID_MODEL_FROM_DATABASE=Kodak Personal Picture Maker 200 Card Reader + +usb:v043Dp0020* + ID_MODEL_FROM_DATABASE=Z51 Printer + +usb:v043Dp0021* + ID_MODEL_FROM_DATABASE=Z33 Printer + +usb:v043Dp0022* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp0023* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp0024* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp0025* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp0026* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp0027* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp0028* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp0029* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp002A* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp002B* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp002C* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp002D* + ID_MODEL_FROM_DATABASE=X70/X73 Scan/Print/Copy + +usb:v043Dp002E* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp002F* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0030* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0031* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0032* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0033* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0034* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0035* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0036* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0037* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0038* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0039* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp003A* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp003B* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp003C* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp003D* + ID_MODEL_FROM_DATABASE=X83 Scan/Print/Copy + +usb:v043Dp003E* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp003F* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0040* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0041* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0042* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0043* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0044* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0045* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0046* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0047* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0048* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp0049* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp004A* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp004B* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp004C* + ID_MODEL_FROM_DATABASE=Scan Print Copy + +usb:v043Dp004D* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp004E* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp004F* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp0050* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp0051* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp0052* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp0053* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp0054* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp0057* + ID_MODEL_FROM_DATABASE=Z35 Printer + +usb:v043Dp0058* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v043Dp005A* + ID_MODEL_FROM_DATABASE=X63 + +usb:v043Dp005C* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp0060* + ID_MODEL_FROM_DATABASE=X74/X75 Scanner + +usb:v043Dp0061* + ID_MODEL_FROM_DATABASE=X74 Hub + +usb:v043Dp0065* + ID_MODEL_FROM_DATABASE=X5130 + +usb:v043Dp0069* + ID_MODEL_FROM_DATABASE=X74/X75 Printer + +usb:v043Dp006D* + ID_MODEL_FROM_DATABASE=X125 + +usb:v043Dp006E* + ID_MODEL_FROM_DATABASE=C510 + +usb:v043Dp0072* + ID_MODEL_FROM_DATABASE=X6170 Printer + +usb:v043Dp0073* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp0078* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp0079* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp007A* + ID_MODEL_FROM_DATABASE=Generic Hub + +usb:v043Dp007B* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp007C* + ID_MODEL_FROM_DATABASE=X1110/X1130/X1140/X1150/X1170/X1180/X1185 + +usb:v043Dp007D* + ID_MODEL_FROM_DATABASE=Photo 3150 + +usb:v043Dp008A* + ID_MODEL_FROM_DATABASE=4200 series + +usb:v043Dp008B* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp008C* + ID_MODEL_FROM_DATABASE=to CF/SM/SD/MS Card Reader + +usb:v043Dp008E* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp008F* + ID_MODEL_FROM_DATABASE=X422 + +usb:v043Dp0093* + ID_MODEL_FROM_DATABASE=X5250 + +usb:v043Dp0095* + ID_MODEL_FROM_DATABASE=E220 Printer + +usb:v043Dp0096* + ID_MODEL_FROM_DATABASE=2200 series + +usb:v043Dp0097* + ID_MODEL_FROM_DATABASE=P6250 + +usb:v043Dp0098* + ID_MODEL_FROM_DATABASE=7100 series + +usb:v043Dp009E* + ID_MODEL_FROM_DATABASE=P910 series Human Interface Device + +usb:v043Dp009F* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp00A9* + ID_MODEL_FROM_DATABASE=IBM Infoprint 1410 MFP + +usb:v043Dp00AB* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp00B2* + ID_MODEL_FROM_DATABASE=3300 series + +usb:v043Dp00B8* + ID_MODEL_FROM_DATABASE=7300 series + +usb:v043Dp00B9* + ID_MODEL_FROM_DATABASE=8300 series + +usb:v043Dp00BA* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp00BB* + ID_MODEL_FROM_DATABASE=2300 series + +usb:v043Dp00BD* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v043Dp00BE* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v043Dp00BF* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v043Dp00C0* + ID_MODEL_FROM_DATABASE=6300 series + +usb:v043Dp00C1* + ID_MODEL_FROM_DATABASE=4300 series + +usb:v043Dp00C7* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v043Dp00C8* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v043Dp00C9* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v043Dp00CB* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v043Dp00CC* + ID_MODEL_FROM_DATABASE=E120(n) + +usb:v043Dp00D0* + ID_MODEL_FROM_DATABASE=9300 series + +usb:v043Dp00D3* + ID_MODEL_FROM_DATABASE=X340 Scanner + +usb:v043Dp00D4* + ID_MODEL_FROM_DATABASE=X342n Scanner + +usb:v043Dp00D5* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v043Dp00D6* + ID_MODEL_FROM_DATABASE=X340 Scanner + +usb:v043Dp00E8* + ID_MODEL_FROM_DATABASE=X642e + +usb:v043Dp00E9* + ID_MODEL_FROM_DATABASE=2400 series + +usb:v043Dp00F6* + ID_MODEL_FROM_DATABASE=3400 series + +usb:v043Dp00F7* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp00FF* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v043Dp010B* + ID_MODEL_FROM_DATABASE=2500 series + +usb:v043Dp010D* + ID_MODEL_FROM_DATABASE=3500-4500 series + +usb:v043Dp010F* + ID_MODEL_FROM_DATABASE=6500 series + +usb:v043Dp0142* + ID_MODEL_FROM_DATABASE=X3650 (Printer, Scanner, Copier) + +usb:v043Dp4303* + ID_MODEL_FROM_DATABASE=Xerox WorkCentre Pro 412 + +usb:v043E* + ID_VENDOR_FROM_DATABASE=LG Electronics USA, Inc. + +usb:v043Ep3001* + ID_MODEL_FROM_DATABASE=AN-WF100 802.11abgn Wireless Adapter [Broadcom BCM4323] + +usb:v043Ep42BD* + ID_MODEL_FROM_DATABASE=Flatron 795FT Plus Monitor + +usb:v043Ep4A4D* + ID_MODEL_FROM_DATABASE=Flatron 915FT Plus Monitor + +usb:v043Ep7001* + ID_MODEL_FROM_DATABASE=MF-PD100 Soul Digital MP3 Player + +usb:v043Ep7013* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v043Ep8484* + ID_MODEL_FROM_DATABASE=LPC-U30 Webcam II + +usb:v043Ep8585* + ID_MODEL_FROM_DATABASE=LPC-UC35 Webcam + +usb:v043Ep8888* + ID_MODEL_FROM_DATABASE=Electronics VCS Camera II(LPC-U20) + +usb:v043Ep9800* + ID_MODEL_FROM_DATABASE=Remote Control Receiver_iMON + +usb:v043Ep9803* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v043Ep9804* + ID_MODEL_FROM_DATABASE=DMB Receiver Control + +usb:v043Ep9C01* + ID_MODEL_FROM_DATABASE=LGE Sync + +usb:v043F* + ID_VENDOR_FROM_DATABASE=RadiSys Corp. + +usb:v0440* + ID_VENDOR_FROM_DATABASE=Eizo Nanao Corp. + +usb:v0441* + ID_VENDOR_FROM_DATABASE=Winbond Systems Lab. + +usb:v0441p1456* + ID_MODEL_FROM_DATABASE=Hub + +usb:v0442* + ID_VENDOR_FROM_DATABASE=Ericsson, Inc. + +usb:v0442pABBA* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0443* + ID_VENDOR_FROM_DATABASE=Gateway, Inc. + +usb:v0443p000E* + ID_MODEL_FROM_DATABASE=Multimedia Keyboard + +usb:v0443p002E* + ID_MODEL_FROM_DATABASE=Millennium Keyboard + +usb:v0445* + ID_VENDOR_FROM_DATABASE=Lucent Technologies, Inc. + +usb:v0446* + ID_VENDOR_FROM_DATABASE=NMB Technologies Corp. + +usb:v0446p6781* + ID_MODEL_FROM_DATABASE=Keyboard with PS/2 Mouse Port + +usb:v0446p6782* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v0447* + ID_VENDOR_FROM_DATABASE=Momentum Microsystems + +usb:v044A* + ID_VENDOR_FROM_DATABASE=Shamrock Tech. Co., Ltd + +usb:v044B* + ID_VENDOR_FROM_DATABASE=WSI + +usb:v044C* + ID_VENDOR_FROM_DATABASE=CCL/ITRI + +usb:v044D* + ID_VENDOR_FROM_DATABASE=Siemens Nixdorf AG + +usb:v044E* + ID_VENDOR_FROM_DATABASE=Alps Electric Co., Ltd + +usb:v044Ep1104* + ID_MODEL_FROM_DATABASE=Japanese Keyboard + +usb:v044Ep2002* + ID_MODEL_FROM_DATABASE=MD-5500 Printer + +usb:v044Ep2014* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v044Ep3001* + ID_MODEL_FROM_DATABASE=UGTZ4 Bluetooth + +usb:v044Ep3002* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v044Ep3003* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v044Ep3004* + ID_MODEL_FROM_DATABASE=Bluetooth Adapter + +usb:v044Ep3005* + ID_MODEL_FROM_DATABASE=Integrated Bluetooth Device + +usb:v044Ep3006* + ID_MODEL_FROM_DATABASE=Bluetooth Adapter + +usb:v044Ep3007* + ID_MODEL_FROM_DATABASE=Bluetooth Controller (ALPS/UGX) + +usb:v044Ep300C* + ID_MODEL_FROM_DATABASE=Bluetooth Controller (ALPS/UGPZ6) + +usb:v044Ep300D* + ID_MODEL_FROM_DATABASE=Bluetooth Controller (ALPS/UGPZ6) + +usb:v044Ep3010* + ID_MODEL_FROM_DATABASE=Bluetooth Adapter + +usb:v044Ep3017* + ID_MODEL_FROM_DATABASE=BCM2046 Bluetooth Device + +usb:v044EpFFFF* + ID_MODEL_FROM_DATABASE=Compaq Bluetooth Multiport Module + +usb:v044F* + ID_VENDOR_FROM_DATABASE=ThrustMaster, Inc. + +usb:v044Fp0400* + ID_MODEL_FROM_DATABASE=HOTAS Cougar + +usb:v044Fp044F* + ID_MODEL_FROM_DATABASE=GP XID + +usb:v044FpA003* + ID_MODEL_FROM_DATABASE=Rage 3D Game Pad + +usb:v044FpA01B* + ID_MODEL_FROM_DATABASE=PK-GP301 Driving Wheel + +usb:v044FpA0A0* + ID_MODEL_FROM_DATABASE=Top Gun Joystick + +usb:v044FpA0A1* + ID_MODEL_FROM_DATABASE=Top Gun Joystick (rev2) + +usb:v044FpA0A3* + ID_MODEL_FROM_DATABASE=Fusion Digital GamePad + +usb:v044FpA201* + ID_MODEL_FROM_DATABASE=PK-GP201 PlayStick + +usb:v044FpB108* + ID_MODEL_FROM_DATABASE=T-Flight Hotas X Flight Stick + +usb:v044FpB10A* + ID_MODEL_FROM_DATABASE=T.16000M Joystick + +usb:v044FpB203* + ID_MODEL_FROM_DATABASE=360 Modena Pro Wheel + +usb:v044FpB300* + ID_MODEL_FROM_DATABASE=Firestorm Dual Power + +usb:v044FpB304* + ID_MODEL_FROM_DATABASE=Firestorm Dual Power + +usb:v044FpB307* + ID_MODEL_FROM_DATABASE=vibrating Upad + +usb:v044FpB30B* + ID_MODEL_FROM_DATABASE=Wireless VibrationPad + +usb:v044FpB315* + ID_MODEL_FROM_DATABASE=Firestorm Dual Analog 3 + +usb:v044FpB323* + ID_MODEL_FROM_DATABASE=Dual Trigger 3-in-1 (PC Mode) + +usb:v044FpB324* + ID_MODEL_FROM_DATABASE=Dual Trigger 3-in-1 (PS3 Mode) + +usb:v044FpB603* + ID_MODEL_FROM_DATABASE=force feedback Wheel + +usb:v044FpB605* + ID_MODEL_FROM_DATABASE=force feedback Racing Wheel + +usb:v044FpB651* + ID_MODEL_FROM_DATABASE=Ferrari GT Rumble Force Wheel + +usb:v044FpB653* + ID_MODEL_FROM_DATABASE=RGT Force Feedback Clutch Racing Wheel + +usb:v044FpB654* + ID_MODEL_FROM_DATABASE=Ferrari GT Force Feedback Wheel + +usb:v044FpB700* + ID_MODEL_FROM_DATABASE=Tacticalboard + +usb:v0450* + ID_VENDOR_FROM_DATABASE=DFI, Inc. + +usb:v0451* + ID_VENDOR_FROM_DATABASE=Texas Instruments, Inc. + +usb:v0451p1234* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0451p1428* + ID_MODEL_FROM_DATABASE=Hub + +usb:v0451p1446* + ID_MODEL_FROM_DATABASE=TUSB2040/2070 Hub + +usb:v0451p16A6* + ID_MODEL_FROM_DATABASE=BM-USBD1 BlueRobin RF heart rate sensor receiver + +usb:v0451p2036* + ID_MODEL_FROM_DATABASE=TUSB2036 Hub + +usb:v0451p2046* + ID_MODEL_FROM_DATABASE=TUSB2046 Hub + +usb:v0451p2077* + ID_MODEL_FROM_DATABASE=TUSB2077 Hub + +usb:v0451p3410* + ID_MODEL_FROM_DATABASE=TUSB3410 Microcontroller + +usb:v0451p3F00* + ID_MODEL_FROM_DATABASE=OMAP1610 + +usb:v0451p3F02* + ID_MODEL_FROM_DATABASE=SMC WSKP100 Wi-Fi Phone + +usb:v0451p5409* + ID_MODEL_FROM_DATABASE=Frontier Labs NEX IA+ Digital Audio Player + +usb:v0451p6000* + ID_MODEL_FROM_DATABASE=AU5 ADSL Modem (pre-reenum) + +usb:v0451p6001* + ID_MODEL_FROM_DATABASE=AU5 ADSL Modem + +usb:v0451p6060* + ID_MODEL_FROM_DATABASE=RNDIS/BeWAN ADSL2+ + +usb:v0451p6070* + ID_MODEL_FROM_DATABASE=RNDIS/BeWAN ADSL2+ + +usb:v0451p625F* + ID_MODEL_FROM_DATABASE=TUSB6250 ATA Bridge + +usb:v0451p8042* + ID_MODEL_FROM_DATABASE=Hub + +usb:v0451pDBC0* + ID_MODEL_FROM_DATABASE=Device Bay Controller + +usb:v0451pE001* + ID_MODEL_FROM_DATABASE=GraphLink + +usb:v0451pE003* + ID_MODEL_FROM_DATABASE=TI-84 Plus Calculator + +usb:v0451pE004* + ID_MODEL_FROM_DATABASE=TI-89 Titanium Calculator + +usb:v0451pE008* + ID_MODEL_FROM_DATABASE=TI-84 Plus Silver Calculator + +usb:v0451pF430* + ID_MODEL_FROM_DATABASE=MSP-FET430UIF JTAG Tool + +usb:v0451pF432* + ID_MODEL_FROM_DATABASE=eZ430 Development Tool + +usb:v0451pFFFF* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0452* + ID_VENDOR_FROM_DATABASE=Mitsubishi Electronics America, Inc. + +usb:v0452p0021* + ID_MODEL_FROM_DATABASE=HID Monitor Controls + +usb:v0452p0050* + ID_MODEL_FROM_DATABASE=Diamond Pro 900u CRT Monitor + +usb:v0452p0051* + ID_MODEL_FROM_DATABASE=Integrated Hub + +usb:v0453* + ID_VENDOR_FROM_DATABASE=CMD Technology + +usb:v0453p6781* + ID_MODEL_FROM_DATABASE=NMB Keyboard + +usb:v0453p6783* + ID_MODEL_FROM_DATABASE=Chicony Composite Keyboard + +usb:v0454* + ID_VENDOR_FROM_DATABASE=Vobis Microcomputer AG + +usb:v0455* + ID_VENDOR_FROM_DATABASE=Telematics International, Inc. + +usb:v0456* + ID_VENDOR_FROM_DATABASE=Analog Devices, Inc. + +usb:v0456pF000* + ID_MODEL_FROM_DATABASE=FT2232 JTAG ICE [gnICE] + +usb:v0456pF001* + ID_MODEL_FROM_DATABASE=FT2232H Hi-Speed JTAG ICE [gnICE+] + +usb:v0457* + ID_VENDOR_FROM_DATABASE=Silicon Integrated Systems Corp. + +usb:v0457p0150* + ID_MODEL_FROM_DATABASE=Super Talent 1GB Flash Drive + +usb:v0457p0151* + ID_MODEL_FROM_DATABASE=Super Flash 1GB / GXT 64MB Flash Drive + +usb:v0457p0162* + ID_MODEL_FROM_DATABASE=SiS162 usb Wireless LAN Adapter + +usb:v0457p0163* + ID_MODEL_FROM_DATABASE=802.11 Wireless LAN Adapter + +usb:v0457p5401* + ID_MODEL_FROM_DATABASE=Wireless Adapter RO80211GS-USB + +usb:v0458* + ID_VENDOR_FROM_DATABASE=KYE Systems Corp. (Mouse Systems) + +usb:v0458p0001* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v0458p0002* + ID_MODEL_FROM_DATABASE=Genius NetMouse Pro + +usb:v0458p0003* + ID_MODEL_FROM_DATABASE=Genius NetScroll+ + +usb:v0458p0006* + ID_MODEL_FROM_DATABASE=Easy Mouse+ + +usb:v0458p000B* + ID_MODEL_FROM_DATABASE=NetMouse Wheel(P+U) + +usb:v0458p000C* + ID_MODEL_FROM_DATABASE=TACOMA Fingerprint V1.06.01 + +usb:v0458p000E* + ID_MODEL_FROM_DATABASE=VideoCAM Web + +usb:v0458p0013* + ID_MODEL_FROM_DATABASE=TACOMA Fingerprint Mouse V1.06.01 + +usb:v0458p001A* + ID_MODEL_FROM_DATABASE=Genius WebScroll+ + +usb:v0458p0036* + ID_MODEL_FROM_DATABASE=Pocket Mouse LE + +usb:v0458p0039* + ID_MODEL_FROM_DATABASE=NetScroll+ Superior + +usb:v0458p003A* + ID_MODEL_FROM_DATABASE=NetScroll+ Mini Traveler / Genius NetScroll 120 + +usb:v0458p004C* + ID_MODEL_FROM_DATABASE=Slimstar Pro Keyboard + +usb:v0458p0056* + ID_MODEL_FROM_DATABASE=Ergo 300 Mouse + +usb:v0458p0057* + ID_MODEL_FROM_DATABASE=Enhanced Gaming Device + +usb:v0458p0059* + ID_MODEL_FROM_DATABASE=Enhanced Laser Device + +usb:v0458p005A* + ID_MODEL_FROM_DATABASE=Enhanced Device + +usb:v0458p005B* + ID_MODEL_FROM_DATABASE=Enhanced Device + +usb:v0458p005C* + ID_MODEL_FROM_DATABASE=Enhanced Laser Gaming Device + +usb:v0458p005D* + ID_MODEL_FROM_DATABASE=Enhanced Device + +usb:v0458p0061* + ID_MODEL_FROM_DATABASE=Bluetooth Dongle + +usb:v0458p0066* + ID_MODEL_FROM_DATABASE=Genius Traveler 1000 Wireless Mouse + +usb:v0458p0072* + ID_MODEL_FROM_DATABASE=Navigator 335 + +usb:v0458p0083* + ID_MODEL_FROM_DATABASE=Bluetooth Dongle + +usb:v0458p0087* + ID_MODEL_FROM_DATABASE=Ergo 525V Laser Mouse + +usb:v0458p00CA* + ID_MODEL_FROM_DATABASE=Pen Mouse + +usb:v0458p0100* + ID_MODEL_FROM_DATABASE=EasyPen Tablet + +usb:v0458p0101* + ID_MODEL_FROM_DATABASE=CueCat + +usb:v0458p011B* + ID_MODEL_FROM_DATABASE=NetScroll T220 + +usb:v0458p1001* + ID_MODEL_FROM_DATABASE=Joystick + +usb:v0458p1002* + ID_MODEL_FROM_DATABASE=Game Pad + +usb:v0458p1003* + ID_MODEL_FROM_DATABASE=Genius VideoCam + +usb:v0458p1004* + ID_MODEL_FROM_DATABASE=Flight2000 F-23 Joystick + +usb:v0458p100A* + ID_MODEL_FROM_DATABASE=Aashima Technology Trust Sight Fighter Vibration Feedback Joystick + +usb:v0458p2001* + ID_MODEL_FROM_DATABASE=ColorPage-Vivid Pro Scanner + +usb:v0458p2004* + ID_MODEL_FROM_DATABASE=ColorPage-HR6 V1 Scanner + +usb:v0458p2005* + ID_MODEL_FROM_DATABASE=ColorPage-HR6/Vivid3 + +usb:v0458p2007* + ID_MODEL_FROM_DATABASE=ColorPage-HR6 V2 Scanner + +usb:v0458p2008* + ID_MODEL_FROM_DATABASE=ColorPage-HR6 V2 Scanner + +usb:v0458p2009* + ID_MODEL_FROM_DATABASE=ColorPage-HR6A Scanner + +usb:v0458p2011* + ID_MODEL_FROM_DATABASE=ColorPage-Vivid3x Scanner + +usb:v0458p2012* + ID_MODEL_FROM_DATABASE=Plustek Scanner + +usb:v0458p2013* + ID_MODEL_FROM_DATABASE=ColorPage-HR7 Scanner + +usb:v0458p2014* + ID_MODEL_FROM_DATABASE=ColorPage-Vivid4 + +usb:v0458p2015* + ID_MODEL_FROM_DATABASE=ColorPage-HR7LE Scanner + +usb:v0458p2016* + ID_MODEL_FROM_DATABASE=ColorPage-HR6X Scanner + +usb:v0458p2017* + ID_MODEL_FROM_DATABASE=ColorPage-Vivid3xe + +usb:v0458p2018* + ID_MODEL_FROM_DATABASE=ColorPage-HR7X + +usb:v0458p2019* + ID_MODEL_FROM_DATABASE=ColorPage-HR6X Slim + +usb:v0458p201A* + ID_MODEL_FROM_DATABASE=ColorPage-Vivid4xe + +usb:v0458p201B* + ID_MODEL_FROM_DATABASE=ColorPage-Vivid4x + +usb:v0458p201C* + ID_MODEL_FROM_DATABASE=ColorPage-HR8 + +usb:v0458p201D* + ID_MODEL_FROM_DATABASE=ColorPage-Vivid 1200 X + +usb:v0458p201E* + ID_MODEL_FROM_DATABASE=ColorPage-Slim 1200 + +usb:v0458p201F* + ID_MODEL_FROM_DATABASE=ColorPage-Vivid 1200 XE + +usb:v0458p2020* + ID_MODEL_FROM_DATABASE=ColorPage-Slim 1200 USB2 + +usb:v0458p2021* + ID_MODEL_FROM_DATABASE=ColorPage-SF600 + +usb:v0458p3017* + ID_MODEL_FROM_DATABASE=SPEED WHEEL 3 Vibration + +usb:v0458p3018* + ID_MODEL_FROM_DATABASE=Wireless 2.4Ghz Game Pad + +usb:v0458p3019* + ID_MODEL_FROM_DATABASE=10-Button USB Joystick with Vibration + +usb:v0458p301A* + ID_MODEL_FROM_DATABASE=MaxFire G-12U Vibration + +usb:v0458p301D* + ID_MODEL_FROM_DATABASE=Genius MaxFire MiniPad + +usb:v0458p400F* + ID_MODEL_FROM_DATABASE=Genius TVGo DVB-T02Q MCE + +usb:v0458p4012* + ID_MODEL_FROM_DATABASE=TVGo DVB-T03 [AF9015] + +usb:v0458p5003* + ID_MODEL_FROM_DATABASE=G-pen 560 Tablet + +usb:v0458p5004* + ID_MODEL_FROM_DATABASE=G-pen Tablet + +usb:v0458p6001* + ID_MODEL_FROM_DATABASE=GF3000F Ethernet Adapter + +usb:v0458p7004* + ID_MODEL_FROM_DATABASE=VideoCAM Express V2 + +usb:v0458p7006* + ID_MODEL_FROM_DATABASE=Dsc 1.3 Smart Camera Device + +usb:v0458p7007* + ID_MODEL_FROM_DATABASE=VideoCAM Web + +usb:v0458p7009* + ID_MODEL_FROM_DATABASE=G-Shot G312 Still Camera Device + +usb:v0458p700C* + ID_MODEL_FROM_DATABASE=VideoCAM Web V3 + +usb:v0458p700D* + ID_MODEL_FROM_DATABASE=G-Shot G511 Composite Device + +usb:v0458p700F* + ID_MODEL_FROM_DATABASE=VideoCAM Web + +usb:v0458p7012* + ID_MODEL_FROM_DATABASE=WebCAM USB2.0 + +usb:v0458p7014* + ID_MODEL_FROM_DATABASE=VideoCAM Live V3 + +usb:v0458p701C* + ID_MODEL_FROM_DATABASE=G-Shot G512 Still Camera + +usb:v0458p7020* + ID_MODEL_FROM_DATABASE=Sim 321C + +usb:v0458p7025* + ID_MODEL_FROM_DATABASE=Eye 311Q Camera + +usb:v0458p7029* + ID_MODEL_FROM_DATABASE=Genius Look 320s (SN9C201 + HV7131R) + +usb:v0458p702F* + ID_MODEL_FROM_DATABASE=Genius Slim 322 + +usb:v0458p7035* + ID_MODEL_FROM_DATABASE=i-Look 325T Camera + +usb:v0458p7045* + ID_MODEL_FROM_DATABASE=Genius Look 1320 V2 + +usb:v0458p704C* + ID_MODEL_FROM_DATABASE=Genius i-Look 1321 + +usb:v0458p704D* + ID_MODEL_FROM_DATABASE=Slim 1322AF + +usb:v0458p7055* + ID_MODEL_FROM_DATABASE=Slim 2020AF camera + +usb:v0458p705A* + ID_MODEL_FROM_DATABASE=Asus USB2.0 Webcam + +usb:v0458p705C* + ID_MODEL_FROM_DATABASE=Genius iSlim 1300AF + +usb:v0458p7079* + ID_MODEL_FROM_DATABASE=FaceCam 2025R + +usb:v0458p707F* + ID_MODEL_FROM_DATABASE=TVGo DVB-T03 [RTL2832] + +usb:v0459* + ID_VENDOR_FROM_DATABASE=Adobe Systems, Inc. + +usb:v045A* + ID_VENDOR_FROM_DATABASE=SONICblue, Inc. + +usb:v045Ap07DA* + ID_MODEL_FROM_DATABASE=Supra Express 56K modem + +usb:v045Ap0B4A* + ID_MODEL_FROM_DATABASE=SupraMax 2890 56K Modem [Lucent Atlas] + +usb:v045Ap0B68* + ID_MODEL_FROM_DATABASE=SupraMax 56K Modem + +usb:v045Ap5001* + ID_MODEL_FROM_DATABASE=Rio 600 MP3 Player + +usb:v045Ap5002* + ID_MODEL_FROM_DATABASE=Rio 800 MP3 Player + +usb:v045Ap5003* + ID_MODEL_FROM_DATABASE=Nike Psa/Play MP3 Player + +usb:v045Ap5005* + ID_MODEL_FROM_DATABASE=Rio S10 MP3 Player + +usb:v045Ap5006* + ID_MODEL_FROM_DATABASE=Rio S50 MP3 Player + +usb:v045Ap5007* + ID_MODEL_FROM_DATABASE=Rio S35 MP3 Player + +usb:v045Ap5008* + ID_MODEL_FROM_DATABASE=Rio 900 MP3 Player + +usb:v045Ap5009* + ID_MODEL_FROM_DATABASE=Rio S30 MP3 Player + +usb:v045Ap500D* + ID_MODEL_FROM_DATABASE=Fuse MP3 Player + +usb:v045Ap500E* + ID_MODEL_FROM_DATABASE=Chiba MP3 Player + +usb:v045Ap500F* + ID_MODEL_FROM_DATABASE=Cali MP3 Player + +usb:v045Ap5010* + ID_MODEL_FROM_DATABASE=Rio S11 MP3 Player + +usb:v045Ap501C* + ID_MODEL_FROM_DATABASE=Virgin MPF-1000 + +usb:v045Ap501D* + ID_MODEL_FROM_DATABASE=Rio Fuse + +usb:v045Ap501E* + ID_MODEL_FROM_DATABASE=Rio Chiba + +usb:v045Ap501F* + ID_MODEL_FROM_DATABASE=Rio Cali + +usb:v045Ap503F* + ID_MODEL_FROM_DATABASE=Cali256 MP3 Player + +usb:v045Ap5202* + ID_MODEL_FROM_DATABASE=Rio Riot MP3 Player + +usb:v045Ap5210* + ID_MODEL_FROM_DATABASE=Rio Karma Music Player + +usb:v045Ap5220* + ID_MODEL_FROM_DATABASE=Rio Nitrus MP3 Player + +usb:v045Ap5221* + ID_MODEL_FROM_DATABASE=Rio Eigen + +usb:v045B* + ID_VENDOR_FROM_DATABASE=Hitachi, Ltd + +usb:v045Bp0053* + ID_MODEL_FROM_DATABASE=RX610 RX-Stick + +usb:v045D* + ID_VENDOR_FROM_DATABASE=Nortel Networks, Ltd + +usb:v045E* + ID_VENDOR_FROM_DATABASE=Microsoft Corp. + +usb:v045Ep0007* + ID_MODEL_FROM_DATABASE=SideWinder Game Pad + +usb:v045Ep0008* + ID_MODEL_FROM_DATABASE=SideWinder Precision Pro + +usb:v045Ep0009* + ID_MODEL_FROM_DATABASE=IntelliMouse + +usb:v045Ep000B* + ID_MODEL_FROM_DATABASE=Natural Keyboard Elite + +usb:v045Ep000E* + ID_MODEL_FROM_DATABASE=SideWinder® Freestyle Pro + +usb:v045Ep0014* + ID_MODEL_FROM_DATABASE=Digital Sound System 80 + +usb:v045Ep001A* + ID_MODEL_FROM_DATABASE=SideWinder Precision Racing Wheel + +usb:v045Ep001B* + ID_MODEL_FROM_DATABASE=SideWinder Force Feedback 2 Joystick + +usb:v045Ep001C* + ID_MODEL_FROM_DATABASE=Internet Keyboard Pro + +usb:v045Ep001D* + ID_MODEL_FROM_DATABASE=Natural Keyboard Pro + +usb:v045Ep001E* + ID_MODEL_FROM_DATABASE=IntelliMouse Explorer + +usb:v045Ep0023* + ID_MODEL_FROM_DATABASE=Trackball Optical + +usb:v045Ep0024* + ID_MODEL_FROM_DATABASE=Trackball Explorer + +usb:v045Ep0025* + ID_MODEL_FROM_DATABASE=IntelliEye Mouse + +usb:v045Ep0026* + ID_MODEL_FROM_DATABASE=SideWinder GamePad Pro + +usb:v045Ep0027* + ID_MODEL_FROM_DATABASE=SideWinder PnP GamePad + +usb:v045Ep0028* + ID_MODEL_FROM_DATABASE=SideWinder Dual Strike + +usb:v045Ep0029* + ID_MODEL_FROM_DATABASE=IntelliMouse Optical + +usb:v045Ep002B* + ID_MODEL_FROM_DATABASE=Internet Keyboard Pro + +usb:v045Ep002D* + ID_MODEL_FROM_DATABASE=Internet Keyboard + +usb:v045Ep002F* + ID_MODEL_FROM_DATABASE=Integrated Hub + +usb:v045Ep0033* + ID_MODEL_FROM_DATABASE=Sidewinder Strategic Commander + +usb:v045Ep0034* + ID_MODEL_FROM_DATABASE=SideWinder Force Feedback Wheel + +usb:v045Ep0038* + ID_MODEL_FROM_DATABASE=SideWinder Precision 2 + +usb:v045Ep0039* + ID_MODEL_FROM_DATABASE=IntelliMouse Optical + +usb:v045Ep003B* + ID_MODEL_FROM_DATABASE=SideWinder Game Voice + +usb:v045Ep003C* + ID_MODEL_FROM_DATABASE=SideWinder Joystick + +usb:v045Ep0040* + ID_MODEL_FROM_DATABASE=Wheel Mouse Optical + +usb:v045Ep0047* + ID_MODEL_FROM_DATABASE=IntelliMouse Explorer 3.0 + +usb:v045Ep0048* + ID_MODEL_FROM_DATABASE=Office Keyboard 1.0A + +usb:v045Ep0053* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v045Ep0059* + ID_MODEL_FROM_DATABASE=Wireless IntelliMouse Explorer + +usb:v045Ep005C* + ID_MODEL_FROM_DATABASE=Office Keyboard (106/109) + +usb:v045Ep005F* + ID_MODEL_FROM_DATABASE=Wireless MultiMedia Keyboard + +usb:v045Ep0061* + ID_MODEL_FROM_DATABASE=Wireless MultiMedia Keyboard (106/109) + +usb:v045Ep0063* + ID_MODEL_FROM_DATABASE=Wireless Natural MultiMedia Keyboard + +usb:v045Ep0065* + ID_MODEL_FROM_DATABASE=Wireless Natural MultiMedia Keyboard (106/109) + +usb:v045Ep006A* + ID_MODEL_FROM_DATABASE=Wireless Optical Mouse (IntelliPoint) + +usb:v045Ep006D* + ID_MODEL_FROM_DATABASE=eHome Remote Control Keyboard keys + +usb:v045Ep006E* + ID_MODEL_FROM_DATABASE=MN-510 802.11b Wireless Adapter [Intersil ISL3873B] + +usb:v045Ep006F* + ID_MODEL_FROM_DATABASE=Smart Display Reference Device + +usb:v045Ep0070* + ID_MODEL_FROM_DATABASE=Wireless MultiMedia Keyboard + +usb:v045Ep0071* + ID_MODEL_FROM_DATABASE=Wireless MultiMedia Keyboard (106/109) + +usb:v045Ep0072* + ID_MODEL_FROM_DATABASE=Wireless Natural MultiMedia Keyboard + +usb:v045Ep0073* + ID_MODEL_FROM_DATABASE=Wireless Natural MultiMedia Keyboard (106/109) + +usb:v045Ep0079* + ID_MODEL_FROM_DATABASE=IXI Ogo CT-17 handheld device + +usb:v045Ep007A* + ID_MODEL_FROM_DATABASE=10/100 USB NIC + +usb:v045Ep007D* + ID_MODEL_FROM_DATABASE=Notebook Optical Mouse + +usb:v045Ep007E* + ID_MODEL_FROM_DATABASE=Wireless Transceiver for Bluetooth + +usb:v045Ep0080* + ID_MODEL_FROM_DATABASE=Digital Media Pro Keyboard + +usb:v045Ep0083* + ID_MODEL_FROM_DATABASE=Basic Optical Mouse + +usb:v045Ep0084* + ID_MODEL_FROM_DATABASE=Basic Optical Mouse + +usb:v045Ep008A* + ID_MODEL_FROM_DATABASE=Wireless Keyboard and Mouse + +usb:v045Ep008B* + ID_MODEL_FROM_DATABASE=Dual Receiver Wireless Mouse (IntelliPoint) + +usb:v045Ep008C* + ID_MODEL_FROM_DATABASE=Wireless Intellimouse Explorer 2.0 + +usb:v045Ep0095* + ID_MODEL_FROM_DATABASE=IntelliMouse Explorer 4.0 (IntelliPoint) + +usb:v045Ep009C* + ID_MODEL_FROM_DATABASE=Wireless Transceiver for Bluetooth 2.0 + +usb:v045Ep009D* + ID_MODEL_FROM_DATABASE=Wireless Optical Desktop 3.0 + +usb:v045Ep00A0* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v045Ep00A4* + ID_MODEL_FROM_DATABASE=Compact Optical Mouse, model 1016 + +usb:v045Ep00B0* + ID_MODEL_FROM_DATABASE=Digital Media Pro Keyboard + +usb:v045Ep00B4* + ID_MODEL_FROM_DATABASE=Digital Media Keyboard 1.0A + +usb:v045Ep00B9* + ID_MODEL_FROM_DATABASE=Wireless Optical Mouse 3.0 + +usb:v045Ep00BB* + ID_MODEL_FROM_DATABASE=Fingerprint Reader + +usb:v045Ep00BC* + ID_MODEL_FROM_DATABASE=Fingerprint Reader + +usb:v045Ep00BD* + ID_MODEL_FROM_DATABASE=Fingerprint Reader + +usb:v045Ep00C2* + ID_MODEL_FROM_DATABASE=MN-710 802.11g Wireless Adapter [Intersil ISL3886] + +usb:v045Ep00C9* + ID_MODEL_FROM_DATABASE=MTP Device + +usb:v045Ep00CA* + ID_MODEL_FROM_DATABASE=Fingerprint Reader + +usb:v045Ep00CB* + ID_MODEL_FROM_DATABASE=Basic Optical Mouse v2.0 + +usb:v045Ep00CE* + ID_MODEL_FROM_DATABASE=Generic PPC Flash device + +usb:v045Ep00D1* + ID_MODEL_FROM_DATABASE=Optical Mouse with Tilt Wheel + +usb:v045Ep00DA* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v045Ep00DB* + ID_MODEL_FROM_DATABASE=Natural Ergonomic Keyboard 4000 V1.0 + +usb:v045Ep00DD* + ID_MODEL_FROM_DATABASE=Comfort Curve Keyboard 2000 V1.0 + +usb:v045Ep00E1* + ID_MODEL_FROM_DATABASE=Wireless Laser Mouse 6000 Reciever + +usb:v045Ep00F4* + ID_MODEL_FROM_DATABASE=LifeCam VX-6000 (SN9C20x + OV9650) + +usb:v045Ep00F5* + ID_MODEL_FROM_DATABASE=LifeCam VX-3000 + +usb:v045Ep00F6* + ID_MODEL_FROM_DATABASE=Comfort Optical Mouse 1000 + +usb:v045Ep00F7* + ID_MODEL_FROM_DATABASE=LifeCam VX-1000 + +usb:v045Ep00F8* + ID_MODEL_FROM_DATABASE=LifeCam NX-6000 + +usb:v045Ep00F9* + ID_MODEL_FROM_DATABASE=Wireless Desktop Receiver 3.1 + +usb:v045Ep0202* + ID_MODEL_FROM_DATABASE=Xbox Controller + +usb:v045Ep0280* + ID_MODEL_FROM_DATABASE=XBox Device + +usb:v045Ep0283* + ID_MODEL_FROM_DATABASE=Xbox Communicator + +usb:v045Ep0284* + ID_MODEL_FROM_DATABASE=Xbox DVD Playback Kit + +usb:v045Ep0285* + ID_MODEL_FROM_DATABASE=Xbox Controller S + +usb:v045Ep0288* + ID_MODEL_FROM_DATABASE=Xbox Controller S Hub + +usb:v045Ep0289* + ID_MODEL_FROM_DATABASE=Xbox Controller S + +usb:v045Ep028B* + ID_MODEL_FROM_DATABASE=Xbox360 DVD Emulator + +usb:v045Ep028D* + ID_MODEL_FROM_DATABASE=Xbox360 Memory Unit 64MB + +usb:v045Ep028E* + ID_MODEL_FROM_DATABASE=Xbox360 Controller + +usb:v045Ep028F* + ID_MODEL_FROM_DATABASE=Xbox360 Wireless Controller + +usb:v045Ep0290* + ID_MODEL_FROM_DATABASE=Xbox360 Performance Pipe (PIX) + +usb:v045Ep0291* + ID_MODEL_FROM_DATABASE=Xbox 360 Wireless Receiver for Windows + +usb:v045Ep0292* + ID_MODEL_FROM_DATABASE=Xbox360 Wireless Networking Adapter + +usb:v045Ep029C* + ID_MODEL_FROM_DATABASE=Xbox360 HD-DVD Drive + +usb:v045Ep029D* + ID_MODEL_FROM_DATABASE=Xbox360 HD-DVD Drive + +usb:v045Ep029E* + ID_MODEL_FROM_DATABASE=Xbox360 HD-DVD Memory Unit + +usb:v045Ep02A0* + ID_MODEL_FROM_DATABASE=Xbox360 Big Button IR + +usb:v045Ep02A8* + ID_MODEL_FROM_DATABASE=Xbox360 Wireless N Networking Adapter [Atheros AR7010+AR9280] + +usb:v045Ep02AD* + ID_MODEL_FROM_DATABASE=Xbox NUI Audio + +usb:v045Ep02AE* + ID_MODEL_FROM_DATABASE=Xbox NUI Camera + +usb:v045Ep02B0* + ID_MODEL_FROM_DATABASE=Xbox NUI Motor + +usb:v045Ep0400* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0401* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0402* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0403* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0404* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0405* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0406* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0407* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0408* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0409* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep040A* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep040B* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep040C* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep040D* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep040E* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep040F* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0410* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0411* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0412* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0413* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0414* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0415* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0416* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0417* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2002 + +usb:v045Ep0432* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0433* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0434* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0435* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0436* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0437* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0438* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0439* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep043A* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep043B* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep043C* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep043D* + ID_MODEL_FROM_DATABASE=Becker Traffic Assist Highspeed 7934 + +usb:v045Ep043E* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep043F* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0440* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0441* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0442* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0443* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0444* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0445* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0446* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0447* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0448* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0449* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep044A* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep044B* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep044C* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep044D* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep044E* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep044F* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0450* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0451* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0452* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0453* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0454* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0455* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0456* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0457* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0458* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0459* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep045A* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep045B* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep045C* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep045D* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep045E* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep045F* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0460* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0461* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0462* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0463* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0464* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0465* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0466* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0467* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0468* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0469* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep046A* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep046B* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep046C* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep046D* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep046E* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep046F* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0470* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0471* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0472* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0473* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0474* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0475* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0476* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0477* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0478* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep0479* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep047A* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep047B* + ID_MODEL_FROM_DATABASE=Windows Powered Pocket PC 2003 + +usb:v045Ep04C8* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2002 + +usb:v045Ep04C9* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2002 + +usb:v045Ep04CA* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2002 + +usb:v045Ep04CB* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2002 + +usb:v045Ep04CC* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2002 + +usb:v045Ep04CD* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2002 + +usb:v045Ep04CE* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2002 + +usb:v045Ep04D7* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04D8* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04D9* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04DA* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04DB* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04DC* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04DD* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04DE* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04DF* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04E0* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04E1* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04E2* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04E3* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04E4* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04E5* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04E6* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04E7* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04E8* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04E9* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04EA* + ID_MODEL_FROM_DATABASE=Windows Powered Smartphone 2003 + +usb:v045Ep04EC* + ID_MODEL_FROM_DATABASE=Windows Phone (Zune) + +usb:v045Ep063E* + ID_MODEL_FROM_DATABASE=Zune HD Media Player + +usb:v045Ep0640* + ID_MODEL_FROM_DATABASE=KIN Phone + +usb:v045Ep0641* + ID_MODEL_FROM_DATABASE=KIN Phone + +usb:v045Ep0642* + ID_MODEL_FROM_DATABASE=KIN Phone + +usb:v045Ep0707* + ID_MODEL_FROM_DATABASE=Wireless Laser Mouse 8000 + +usb:v045Ep0708* + ID_MODEL_FROM_DATABASE=Transceiver v 3.0 for Bluetooth + +usb:v045Ep070A* + ID_MODEL_FROM_DATABASE=Charon Bluetooth Dongle (DFU) + +usb:v045Ep0710* + ID_MODEL_FROM_DATABASE=Zune Media Player + +usb:v045Ep0713* + ID_MODEL_FROM_DATABASE=Wireless Presenter Mouse 8000 + +usb:v045Ep0719* + ID_MODEL_FROM_DATABASE=Xbox 360 Wireless Adapter + +usb:v045Ep071F* + ID_MODEL_FROM_DATABASE=Mouse/Keyboard 2.4GHz Transceiver V2.0 + +usb:v045Ep0721* + ID_MODEL_FROM_DATABASE=LifeCam NX-3000 (UVC-compliant) + +usb:v045Ep0723* + ID_MODEL_FROM_DATABASE=LifeCam VX-7000 (UVC-compliant) + +usb:v045Ep0724* + ID_MODEL_FROM_DATABASE=SideWinder Mouse + +usb:v045Ep0730* + ID_MODEL_FROM_DATABASE=Digital Media Keyboard 3000 + +usb:v045Ep0734* + ID_MODEL_FROM_DATABASE=Wireless Optical Desktop 700 + +usb:v045Ep0736* + ID_MODEL_FROM_DATABASE=Sidewinder X5 Mouse + +usb:v045Ep0737* + ID_MODEL_FROM_DATABASE=Compact Optical Mouse 500 + +usb:v045Ep0745* + ID_MODEL_FROM_DATABASE=Nano Transceiver v1.0 for Bluetooth + +usb:v045Ep0750* + ID_MODEL_FROM_DATABASE=Wired Keyboard 600 + +usb:v045Ep0752* + ID_MODEL_FROM_DATABASE=Wired Keyboard 400 + +usb:v045Ep075D* + ID_MODEL_FROM_DATABASE=LifeCam Cinema + +usb:v045Ep0766* + ID_MODEL_FROM_DATABASE=LifeCam VX-800 + +usb:v045Ep0768* + ID_MODEL_FROM_DATABASE=Sidewinder X4 + +usb:v045Ep076C* + ID_MODEL_FROM_DATABASE=Comfort Mouse 4500 + +usb:v045Ep076D* + ID_MODEL_FROM_DATABASE=LifeCam HD-5000 + +usb:v045Ep0772* + ID_MODEL_FROM_DATABASE=LifeCam Studio + +usb:v045Ep0779* + ID_MODEL_FROM_DATABASE=LifeCam HD-3000 + +usb:v045Ep930A* + ID_MODEL_FROM_DATABASE=ISOUSB.SYS Intel 82930 Isochronous IO Test Board + +usb:v045EpFFF8* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v045EpFFFF* + ID_MODEL_FROM_DATABASE=Windows CE Mass Storage + +usb:v0460* + ID_VENDOR_FROM_DATABASE=Ace Cad Enterprise Co., Ltd + +usb:v0460p0004* + ID_MODEL_FROM_DATABASE=Tablet (5x3.75) + +usb:v0460p0006* + ID_MODEL_FROM_DATABASE=LCD Tablet (12x9) + +usb:v0460p0008* + ID_MODEL_FROM_DATABASE=Tablet (3x2.25) + +usb:v0461* + ID_VENDOR_FROM_DATABASE=Primax Electronics, Ltd + +usb:v0461p0010* + ID_MODEL_FROM_DATABASE=HP Keyboard + +usb:v0461p0300* + ID_MODEL_FROM_DATABASE=G2-300 Scanner + +usb:v0461p0301* + ID_MODEL_FROM_DATABASE=G2E-300 Scanner + +usb:v0461p0302* + ID_MODEL_FROM_DATABASE=G2-300 #2 Scanner + +usb:v0461p0303* + ID_MODEL_FROM_DATABASE=G2E-300 #2 Scanner + +usb:v0461p0340* + ID_MODEL_FROM_DATABASE=Colorado 9600 Scanner + +usb:v0461p0341* + ID_MODEL_FROM_DATABASE=Colorado 600u Scanner + +usb:v0461p0345* + ID_MODEL_FROM_DATABASE=Visioneer 6200 Scanner + +usb:v0461p0346* + ID_MODEL_FROM_DATABASE=Memorex Maxx 6136u Scanner + +usb:v0461p0347* + ID_MODEL_FROM_DATABASE=Primascan Colorado 2600u/Visioneer 4400 Scanner + +usb:v0461p0360* + ID_MODEL_FROM_DATABASE=Colorado 19200 Scanner + +usb:v0461p0361* + ID_MODEL_FROM_DATABASE=Colorado 1200u Scanner + +usb:v0461p0363* + ID_MODEL_FROM_DATABASE=VistaScan Astra 3600(ENG) + +usb:v0461p0364* + ID_MODEL_FROM_DATABASE=LG Electronics Scanworks 600U Scanner + +usb:v0461p0365* + ID_MODEL_FROM_DATABASE=VistaScan Astra 3600(ENG) + +usb:v0461p0366* + ID_MODEL_FROM_DATABASE=6400 + +usb:v0461p0367* + ID_MODEL_FROM_DATABASE=VistaScan Astra 3600(ENG) + +usb:v0461p0371* + ID_MODEL_FROM_DATABASE=Visioneer Onetouch 8920 Scanner + +usb:v0461p0374* + ID_MODEL_FROM_DATABASE=UMAX Astra 2500 + +usb:v0461p0375* + ID_MODEL_FROM_DATABASE=VistaScan Astra 3600(ENG) + +usb:v0461p0377* + ID_MODEL_FROM_DATABASE=Medion MD 5345 Scanner + +usb:v0461p0378* + ID_MODEL_FROM_DATABASE=VistaScan Astra 3600(ENG) + +usb:v0461p037B* + ID_MODEL_FROM_DATABASE=Medion MD 6190 Scanner + +usb:v0461p037C* + ID_MODEL_FROM_DATABASE=VistaScan Astra 3600(ENG) + +usb:v0461p0380* + ID_MODEL_FROM_DATABASE=G2-600 Scanner + +usb:v0461p0381* + ID_MODEL_FROM_DATABASE=ReadyScan 636i Scanner + +usb:v0461p0382* + ID_MODEL_FROM_DATABASE=G2-600 #2 Scanner + +usb:v0461p0383* + ID_MODEL_FROM_DATABASE=G2E-600 Scanner + +usb:v0461p038A* + ID_MODEL_FROM_DATABASE=UMAX Astra 3000/3600 + +usb:v0461p038B* + ID_MODEL_FROM_DATABASE=Xerox 2400 Onetouch + +usb:v0461p038C* + ID_MODEL_FROM_DATABASE=UMAX Astra 4100 + +usb:v0461p0392* + ID_MODEL_FROM_DATABASE=Medion/Lifetec/Tevion/Cytron MD 6190 + +usb:v0461p03A8* + ID_MODEL_FROM_DATABASE=9420M + +usb:v0461p0813* + ID_MODEL_FROM_DATABASE=IBM UltraPort Camera + +usb:v0461p0815* + ID_MODEL_FROM_DATABASE=Micro Innovations IC200 Webcam + +usb:v0461p0819* + ID_MODEL_FROM_DATABASE=Fujifilm IX-30 Camera [webcam mode] + +usb:v0461p081A* + ID_MODEL_FROM_DATABASE=Fujifilm IX-30 Camera [storage mode] + +usb:v0461p081C* + ID_MODEL_FROM_DATABASE=Elitegroup ECS-C11 Camera + +usb:v0461p081D* + ID_MODEL_FROM_DATABASE=Elitegroup ECS-C11 Storage + +usb:v0461p0A00* + ID_MODEL_FROM_DATABASE=Micro Innovations Web Cam 320 + +usb:v0461p4D01* + ID_MODEL_FROM_DATABASE=Comfort Keyboard + +usb:v0461p4D02* + ID_MODEL_FROM_DATABASE=Mouse-in-a-Box + +usb:v0461p4D03* + ID_MODEL_FROM_DATABASE=Kensington Mouse-in-a-box + +usb:v0461p4D04* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v0461p4D06* + ID_MODEL_FROM_DATABASE=Balless Mouse (HID) + +usb:v0461p4D0F* + ID_MODEL_FROM_DATABASE=HP Optical Mouse + +usb:v0461p4D15* + ID_MODEL_FROM_DATABASE=Dell Optical Mouse + +usb:v0461p4D17* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v0461p4D20* + ID_MODEL_FROM_DATABASE=HP Optical Mouse + +usb:v0461p4D2A* + ID_MODEL_FROM_DATABASE=PoPo Elixir Mouse (HID) + +usb:v0461p4D2B* + ID_MODEL_FROM_DATABASE=Wireless Laser Mini Mouse (HID) + +usb:v0461p4D2C* + ID_MODEL_FROM_DATABASE=PoPo Mini Pointer Mouse (HID) + +usb:v0461p4D2E* + ID_MODEL_FROM_DATABASE=Optical Mobile Mouse (HID) + +usb:v0461p4D51* + ID_MODEL_FROM_DATABASE=0Y357C PMX-MMOCZUL (B) [Dell Laser Mouse] + +usb:v0461p4D62* + ID_MODEL_FROM_DATABASE=HP Laser Mobile Mini Mouse + +usb:v0461p4D75* + ID_MODEL_FROM_DATABASE=Rocketfish RF-FLBTAD Bluetooth Adapter + +usb:v0461p4D81* + ID_MODEL_FROM_DATABASE=Dell N889 Optical Mouse + +usb:v0461p4DE7* + ID_MODEL_FROM_DATABASE=webcam + +usb:v0463* + ID_VENDOR_FROM_DATABASE=MGE UPS Systems + +usb:v0463p0001* + ID_MODEL_FROM_DATABASE=UPS + +usb:v0463pFFFF* + ID_MODEL_FROM_DATABASE=UPS + +usb:v0464* + ID_VENDOR_FROM_DATABASE=AMP/Tycoelectronics Corp. + +usb:v0467* + ID_VENDOR_FROM_DATABASE=AT&T Paradyne + +usb:v0468* + ID_VENDOR_FROM_DATABASE=Wieson Technologies Co., Ltd + +usb:v046A* + ID_VENDOR_FROM_DATABASE=Cherry GmbH + +usb:v046Ap0001* + ID_MODEL_FROM_DATABASE=My3000 Keyboard + +usb:v046Ap0003* + ID_MODEL_FROM_DATABASE=My3000 Hub + +usb:v046Ap0004* + ID_MODEL_FROM_DATABASE=CyBoard Keyboard + +usb:v046Ap0005* + ID_MODEL_FROM_DATABASE=XX33 SmartCard Reader Keyboard + +usb:v046Ap0008* + ID_MODEL_FROM_DATABASE=Wireless Keyboard and Mouse + +usb:v046Ap0010* + ID_MODEL_FROM_DATABASE=SmartBoard XX44 + +usb:v046Ap0011* + ID_MODEL_FROM_DATABASE=G83 (RS 6000) Keyboard + +usb:v046Ap0021* + ID_MODEL_FROM_DATABASE=CyMotion Expert Combo + +usb:v046Ap0023* + ID_MODEL_FROM_DATABASE=CyMotion Master Linux Keyboard G230 + +usb:v046Ap0027* + ID_MODEL_FROM_DATABASE=CyMotion Master Solar Keyboard + +usb:v046Ap002A* + ID_MODEL_FROM_DATABASE=Wireless Mouse & Keyboard + +usb:v046Ap002D* + ID_MODEL_FROM_DATABASE=SmartTerminal XX44 + +usb:v046Ap003E* + ID_MODEL_FROM_DATABASE=SmartTerminal ST-2xxx + +usb:v046Ap0080* + ID_MODEL_FROM_DATABASE=eHealth Terminal ST 1503 + +usb:v046Ap0081* + ID_MODEL_FROM_DATABASE=eHealth Keyboard G87 1504 + +usb:v046Ap0106* + ID_MODEL_FROM_DATABASE=R-300 Wireless Mouse Receiver + +usb:v046B* + ID_VENDOR_FROM_DATABASE=American Megatrends, Inc. + +usb:v046Bp0001* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v046Bp0101* + ID_MODEL_FROM_DATABASE=PS/2 Keyboard, Mouse & Joystick Ports + +usb:v046Bp0301* + ID_MODEL_FROM_DATABASE=USB 1.0 Hub + +usb:v046Bp0500* + ID_MODEL_FROM_DATABASE=Serial & Parallel Ports + +usb:v046BpFF10* + ID_MODEL_FROM_DATABASE=Virtual Keyboard and Mouse + +usb:v046C* + ID_VENDOR_FROM_DATABASE=Toshiba Corp., Digital Media Equipment + +usb:v046D* + ID_VENDOR_FROM_DATABASE=Logitech, Inc. + +usb:v046Dp0082* + ID_MODEL_FROM_DATABASE=Acer Aspire 5672 Webcam + +usb:v046Dp0200* + ID_MODEL_FROM_DATABASE=WingMan Extreme Joystick + +usb:v046Dp0203* + ID_MODEL_FROM_DATABASE=M2452 Keyboard + +usb:v046Dp0301* + ID_MODEL_FROM_DATABASE=M4848 Mouse + +usb:v046Dp0401* + ID_MODEL_FROM_DATABASE=HP PageScan + +usb:v046Dp0402* + ID_MODEL_FROM_DATABASE=NEC PageScan + +usb:v046Dp040F* + ID_MODEL_FROM_DATABASE=Logitech/Storm PageScan + +usb:v046Dp0430* + ID_MODEL_FROM_DATABASE=Mic (Cordless) + +usb:v046Dp0801* + ID_MODEL_FROM_DATABASE=QuickCam Home + +usb:v046Dp0802* + ID_MODEL_FROM_DATABASE=Webcam C200 + +usb:v046Dp0804* + ID_MODEL_FROM_DATABASE=Webcam C250 + +usb:v046Dp0805* + ID_MODEL_FROM_DATABASE=Webcam C300 + +usb:v046Dp0807* + ID_MODEL_FROM_DATABASE=Webcam B500 + +usb:v046Dp0808* + ID_MODEL_FROM_DATABASE=Webcam C600 + +usb:v046Dp0809* + ID_MODEL_FROM_DATABASE=Webcam Pro 9000 + +usb:v046Dp080A* + ID_MODEL_FROM_DATABASE=Portable Webcam C905 + +usb:v046Dp080F* + ID_MODEL_FROM_DATABASE=Webcam C120 + +usb:v046Dp0810* + ID_MODEL_FROM_DATABASE=QuickCam Pro + +usb:v046Dp0819* + ID_MODEL_FROM_DATABASE=Webcam C210 + +usb:v046Dp081B* + ID_MODEL_FROM_DATABASE=Webcam C310 + +usb:v046Dp081D* + ID_MODEL_FROM_DATABASE=HD Webcam C510 + +usb:v046Dp0820* + ID_MODEL_FROM_DATABASE=QuickCam VC + +usb:v046Dp0821* + ID_MODEL_FROM_DATABASE=HD Webcam C910 + +usb:v046Dp0825* + ID_MODEL_FROM_DATABASE=Webcam C270 + +usb:v046Dp0828* + ID_MODEL_FROM_DATABASE=HD Webcam B990 + +usb:v046Dp082D* + ID_MODEL_FROM_DATABASE=HD Pro Webcam C920 + +usb:v046Dp0830* + ID_MODEL_FROM_DATABASE=QuickClip + +usb:v046Dp0840* + ID_MODEL_FROM_DATABASE=QuickCam Express + +usb:v046Dp0850* + ID_MODEL_FROM_DATABASE=QuickCam Web + +usb:v046Dp0870* + ID_MODEL_FROM_DATABASE=QuickCam Express + +usb:v046Dp0890* + ID_MODEL_FROM_DATABASE=QuickCam Traveler + +usb:v046Dp0892* + ID_MODEL_FROM_DATABASE=OrbiCam + +usb:v046Dp0894* + ID_MODEL_FROM_DATABASE=CrystalCam + +usb:v046Dp0895* + ID_MODEL_FROM_DATABASE=QuickCam for Dell Notebooks + +usb:v046Dp0896* + ID_MODEL_FROM_DATABASE=OrbiCam + +usb:v046Dp0897* + ID_MODEL_FROM_DATABASE=QuickCam for Dell Notebooks + +usb:v046Dp0899* + ID_MODEL_FROM_DATABASE=QuickCam for Dell Notebooks + +usb:v046Dp089D* + ID_MODEL_FROM_DATABASE=QuickCam E2500 series + +usb:v046Dp08A0* + ID_MODEL_FROM_DATABASE=QuickCam IM + +usb:v046Dp08A1* + ID_MODEL_FROM_DATABASE=QuickCam IM with sound + +usb:v046Dp08A2* + ID_MODEL_FROM_DATABASE=Labtec Webcam Pro + +usb:v046Dp08A3* + ID_MODEL_FROM_DATABASE=QuickCam QuickCam Chat + +usb:v046Dp08A6* + ID_MODEL_FROM_DATABASE=QuickCam IM + +usb:v046Dp08A7* + ID_MODEL_FROM_DATABASE=QuickCam Image + +usb:v046Dp08A9* + ID_MODEL_FROM_DATABASE=Notebook Deluxe + +usb:v046Dp08AA* + ID_MODEL_FROM_DATABASE=Labtec Notebooks + +usb:v046Dp08AC* + ID_MODEL_FROM_DATABASE=QuickCam Cool + +usb:v046Dp08AD* + ID_MODEL_FROM_DATABASE=QuickCam Communicate STX + +usb:v046Dp08AE* + ID_MODEL_FROM_DATABASE=QuickCam for Notebooks + +usb:v046Dp08AF* + ID_MODEL_FROM_DATABASE=QuickCam Easy/Cool + +usb:v046Dp08B0* + ID_MODEL_FROM_DATABASE=QuickCam 3000 Pro [pwc] + +usb:v046Dp08B1* + ID_MODEL_FROM_DATABASE=QuickCam Notebook Pro + +usb:v046Dp08B2* + ID_MODEL_FROM_DATABASE=QuickCam Pro 4000 + +usb:v046Dp08B3* + ID_MODEL_FROM_DATABASE=QuickCam Zoom + +usb:v046Dp08B4* + ID_MODEL_FROM_DATABASE=QuickCam Zoom + +usb:v046Dp08B5* + ID_MODEL_FROM_DATABASE=QuickCam Sphere + +usb:v046Dp08B9* + ID_MODEL_FROM_DATABASE=QuickCam IM + +usb:v046Dp08BD* + ID_MODEL_FROM_DATABASE=Microphone (Pro 4000) + +usb:v046Dp08C0* + ID_MODEL_FROM_DATABASE=QuickCam Pro 3000 + +usb:v046Dp08C1* + ID_MODEL_FROM_DATABASE=QuickCam Fusion + +usb:v046Dp08C2* + ID_MODEL_FROM_DATABASE=QuickCam PTZ + +usb:v046Dp08C3* + ID_MODEL_FROM_DATABASE=Camera (Notebooks Pro) + +usb:v046Dp08C5* + ID_MODEL_FROM_DATABASE=QuickCam Pro 5000 + +usb:v046Dp08C6* + ID_MODEL_FROM_DATABASE=QuickCam for DELL Notebooks + +usb:v046Dp08C7* + ID_MODEL_FROM_DATABASE=QuickCam OEM Cisco VT Camera II + +usb:v046Dp08C9* + ID_MODEL_FROM_DATABASE=QuickCam Ultra Vision + +usb:v046Dp08CA* + ID_MODEL_FROM_DATABASE=Mic (Fusion) + +usb:v046Dp08CB* + ID_MODEL_FROM_DATABASE=Mic (Notebooks Pro) + +usb:v046Dp08CC* + ID_MODEL_FROM_DATABASE=Mic (PTZ) + +usb:v046Dp08CE* + ID_MODEL_FROM_DATABASE=QuickCam Pro 5000 + +usb:v046Dp08CF* + ID_MODEL_FROM_DATABASE=QuickCam UpdateMe + +usb:v046Dp08D0* + ID_MODEL_FROM_DATABASE=QuickCam Express + +usb:v046Dp08D7* + ID_MODEL_FROM_DATABASE=QuickCam Communicate STX + +usb:v046Dp08D8* + ID_MODEL_FROM_DATABASE=QuickCam for Notebook Deluxe + +usb:v046Dp08D9* + ID_MODEL_FROM_DATABASE=QuickCam IM/Connect + +usb:v046Dp08DA* + ID_MODEL_FROM_DATABASE=QuickCam Messanger + +usb:v046Dp08DD* + ID_MODEL_FROM_DATABASE=QuickCam for Notebooks + +usb:v046Dp08E0* + ID_MODEL_FROM_DATABASE=QuickCam Express + +usb:v046Dp08E1* + ID_MODEL_FROM_DATABASE=Labtec Webcam + +usb:v046Dp08F0* + ID_MODEL_FROM_DATABASE=QuickCam Messenger + +usb:v046Dp08F1* + ID_MODEL_FROM_DATABASE=QuickCam Express + +usb:v046Dp08F2* + ID_MODEL_FROM_DATABASE=Microphone (Messenger) + +usb:v046Dp08F3* + ID_MODEL_FROM_DATABASE=QuickCam Express + +usb:v046Dp08F4* + ID_MODEL_FROM_DATABASE=Labtec Webcam + +usb:v046Dp08F5* + ID_MODEL_FROM_DATABASE=QuickCam Messenger Communicate + +usb:v046Dp08F6* + ID_MODEL_FROM_DATABASE=QuickCam Messenger Plus + +usb:v046Dp0900* + ID_MODEL_FROM_DATABASE=ClickSmart 310 + +usb:v046Dp0901* + ID_MODEL_FROM_DATABASE=ClickSmart 510 + +usb:v046Dp0903* + ID_MODEL_FROM_DATABASE=ClickSmart 820 + +usb:v046Dp0905* + ID_MODEL_FROM_DATABASE=ClickSmart 820 + +usb:v046Dp0910* + ID_MODEL_FROM_DATABASE=QuickCam Cordless + +usb:v046Dp0920* + ID_MODEL_FROM_DATABASE=QuickCam Express + +usb:v046Dp0921* + ID_MODEL_FROM_DATABASE=Labtec Webcam + +usb:v046Dp0922* + ID_MODEL_FROM_DATABASE=QuickCam Live + +usb:v046Dp0928* + ID_MODEL_FROM_DATABASE=QuickCam Express + +usb:v046Dp0929* + ID_MODEL_FROM_DATABASE=Labtec Webcam Pro + +usb:v046Dp092A* + ID_MODEL_FROM_DATABASE=QuickCam for Notebooks + +usb:v046Dp092B* + ID_MODEL_FROM_DATABASE=Labtec Webcam Plus + +usb:v046Dp092C* + ID_MODEL_FROM_DATABASE=QuickCam Chat + +usb:v046Dp092D* + ID_MODEL_FROM_DATABASE=QuickCam Express / Go + +usb:v046Dp092E* + ID_MODEL_FROM_DATABASE=QuickCam Chat + +usb:v046Dp092F* + ID_MODEL_FROM_DATABASE=QuickCam Express Plus + +usb:v046Dp0950* + ID_MODEL_FROM_DATABASE=Pocket Camera + +usb:v046Dp0960* + ID_MODEL_FROM_DATABASE=ClickSmart 420 + +usb:v046Dp0970* + ID_MODEL_FROM_DATABASE=Pocket750 + +usb:v046Dp0990* + ID_MODEL_FROM_DATABASE=QuickCam Pro 9000 + +usb:v046Dp0991* + ID_MODEL_FROM_DATABASE=QuickCam Pro for Notebooks + +usb:v046Dp0992* + ID_MODEL_FROM_DATABASE=QuickCam Communicate Deluxe + +usb:v046Dp0994* + ID_MODEL_FROM_DATABASE=QuickCam Orbit/Sphere AF + +usb:v046Dp09A1* + ID_MODEL_FROM_DATABASE=QuickCam Communicate MP/S5500 + +usb:v046Dp09A2* + ID_MODEL_FROM_DATABASE=QuickCam Communicate Deluxe/S7500 + +usb:v046Dp09A4* + ID_MODEL_FROM_DATABASE=QuickCam E 3500 + +usb:v046Dp09A5* + ID_MODEL_FROM_DATABASE=Quickcam 3000 For Business + +usb:v046Dp09A6* + ID_MODEL_FROM_DATABASE=QuickCam Vision Pro + +usb:v046Dp09B0* + ID_MODEL_FROM_DATABASE=Acer OrbiCam + +usb:v046Dp09B2* + ID_MODEL_FROM_DATABASE=Fujitsu Webcam + +usb:v046Dp09C0* + ID_MODEL_FROM_DATABASE=QuickCam for Dell Notebooks Mic + +usb:v046Dp09C1* + ID_MODEL_FROM_DATABASE=QuickCam Deluxe for Notebooks + +usb:v046Dp0A01* + ID_MODEL_FROM_DATABASE=USB Headset + +usb:v046Dp0A02* + ID_MODEL_FROM_DATABASE=Premium Stereo USB Headset 350 + +usb:v046Dp0A03* + ID_MODEL_FROM_DATABASE=Logitech USB Microphone + +usb:v046Dp0A04* + ID_MODEL_FROM_DATABASE=V20 portable speakers (USB powered) + +usb:v046Dp0A07* + ID_MODEL_FROM_DATABASE=Z-10 Speakers + +usb:v046Dp0A0B* + ID_MODEL_FROM_DATABASE=ClearChat Pro USB + +usb:v046Dp0A0C* + ID_MODEL_FROM_DATABASE=Clear Chat Comfort USB Headset + +usb:v046Dp0A13* + ID_MODEL_FROM_DATABASE=Z-5 Speakers + +usb:v046Dp0A17* + ID_MODEL_FROM_DATABASE=G330 Headset + +usb:v046Dp0A1F* + ID_MODEL_FROM_DATABASE=G930 + +usb:v046Dp0B02* + ID_MODEL_FROM_DATABASE=C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode) + +usb:v046Dp8801* + ID_MODEL_FROM_DATABASE=Video Camera + +usb:v046DpB305* + ID_MODEL_FROM_DATABASE=BT Mini-Receiver + +usb:v046DpBFE4* + ID_MODEL_FROM_DATABASE=Premium Optical Wheel Mouse + +usb:v046DpC000* + ID_MODEL_FROM_DATABASE=N43 [Pilot Mouse] + +usb:v046DpC001* + ID_MODEL_FROM_DATABASE=N48/M-BB48 [FirstMouse Plus] + +usb:v046DpC002* + ID_MODEL_FROM_DATABASE=M-BA47 [MouseMan Plus] + +usb:v046DpC003* + ID_MODEL_FROM_DATABASE=MouseMan + +usb:v046DpC004* + ID_MODEL_FROM_DATABASE=WingMan Gaming Mouse + +usb:v046DpC005* + ID_MODEL_FROM_DATABASE=WingMan Gaming Wheel Mouse + +usb:v046DpC00B* + ID_MODEL_FROM_DATABASE=MouseMan Wheel + +usb:v046DpC00C* + ID_MODEL_FROM_DATABASE=Optical Wheel Mouse + +usb:v046DpC00D* + ID_MODEL_FROM_DATABASE=MouseMan Wheel+ + +usb:v046DpC00E* + ID_MODEL_FROM_DATABASE=M-BJ58/M-BJ69 Optical Wheel Mouse + +usb:v046DpC00F* + ID_MODEL_FROM_DATABASE=MouseMan Traveler/Mobile + +usb:v046DpC011* + ID_MODEL_FROM_DATABASE=Optical MouseMan + +usb:v046DpC012* + ID_MODEL_FROM_DATABASE=Mouseman Dual Optical + +usb:v046DpC014* + ID_MODEL_FROM_DATABASE=Corded Workstation Mouse + +usb:v046DpC015* + ID_MODEL_FROM_DATABASE=Corded Workstation Mouse + +usb:v046DpC016* + ID_MODEL_FROM_DATABASE=Optical Wheel Mouse + +usb:v046DpC018* + ID_MODEL_FROM_DATABASE=Optical Wheel Mouse + +usb:v046DpC019* + ID_MODEL_FROM_DATABASE=Optical Tilt Wheel Mouse + +usb:v046DpC01A* + ID_MODEL_FROM_DATABASE=M-BQ85 Optical Wheel Mouse + +usb:v046DpC01B* + ID_MODEL_FROM_DATABASE=MX310 Optical Mouse + +usb:v046DpC01C* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v046DpC01D* + ID_MODEL_FROM_DATABASE=MX510 Optical Mouse + +usb:v046DpC01E* + ID_MODEL_FROM_DATABASE=MX518 Optical Mouse + +usb:v046DpC024* + ID_MODEL_FROM_DATABASE=MX300 Optical Mouse + +usb:v046DpC025* + ID_MODEL_FROM_DATABASE=MX500 Optical Mouse + +usb:v046DpC030* + ID_MODEL_FROM_DATABASE=iFeel Mouse + +usb:v046DpC031* + ID_MODEL_FROM_DATABASE=iFeel Mouse+ + +usb:v046DpC032* + ID_MODEL_FROM_DATABASE=MouseMan iFeel + +usb:v046DpC033* + ID_MODEL_FROM_DATABASE=iFeel MouseMan+ + +usb:v046DpC034* + ID_MODEL_FROM_DATABASE=MouseMan Optical + +usb:v046DpC035* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v046DpC036* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v046DpC037* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v046DpC038* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v046DpC03D* + ID_MODEL_FROM_DATABASE=M-BT96a Pilot Optical Mouse + +usb:v046DpC03E* + ID_MODEL_FROM_DATABASE=Premium Optical Wheel Mouse (M-BT58) + +usb:v046DpC03F* + ID_MODEL_FROM_DATABASE=M-BT85 [UltraX Optical Mouse] + +usb:v046DpC040* + ID_MODEL_FROM_DATABASE=Corded Tilt-Wheel Mouse + +usb:v046DpC041* + ID_MODEL_FROM_DATABASE=G5 Laser Mouse + +usb:v046DpC042* + ID_MODEL_FROM_DATABASE=G3 Laser Mouse + +usb:v046DpC043* + ID_MODEL_FROM_DATABASE=MX320/MX400 Laser Mouse + +usb:v046DpC044* + ID_MODEL_FROM_DATABASE=LX3 Optical Mouse + +usb:v046DpC045* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v046DpC046* + ID_MODEL_FROM_DATABASE=RX1000 Laser Mouse + +usb:v046DpC047* + ID_MODEL_FROM_DATABASE=Laser Mouse M-UAL120 + +usb:v046DpC048* + ID_MODEL_FROM_DATABASE=G9 Laser Mouse + +usb:v046DpC049* + ID_MODEL_FROM_DATABASE=G5 Laser Mouse + +usb:v046DpC050* + ID_MODEL_FROM_DATABASE=RX 250 Optical Mouse + +usb:v046DpC051* + ID_MODEL_FROM_DATABASE=G3 (MX518) Optical Mouse + +usb:v046DpC053* + ID_MODEL_FROM_DATABASE=Laser Mouse + +usb:v046DpC054* + ID_MODEL_FROM_DATABASE=Bluetooth mini-receiver + +usb:v046DpC058* + ID_MODEL_FROM_DATABASE=M115 Mouse + +usb:v046DpC05A* + ID_MODEL_FROM_DATABASE=M90/M100 Optical Mouse + +usb:v046DpC05B* + ID_MODEL_FROM_DATABASE=M-U0004 810-001317 [B110 Optical USB Mouse] + +usb:v046DpC05D* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v046DpC05F* + ID_MODEL_FROM_DATABASE=M115 Optical Mouse + +usb:v046DpC061* + ID_MODEL_FROM_DATABASE=RX1500 Laser Mouse + +usb:v046DpC062* + ID_MODEL_FROM_DATABASE=M-UAS144 [LS1 Laser Mouse] + +usb:v046DpC063* + ID_MODEL_FROM_DATABASE=DELL Laser Mouse + +usb:v046DpC068* + ID_MODEL_FROM_DATABASE=G500 Laser Mouse + +usb:v046DpC069* + ID_MODEL_FROM_DATABASE=M500 Laser Mouse + +usb:v046DpC06A* + ID_MODEL_FROM_DATABASE=USB Optical Mouse + +usb:v046DpC06B* + ID_MODEL_FROM_DATABASE=G700 Wireless Gaming Mouse + +usb:v046DpC06C* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v046DpC101* + ID_MODEL_FROM_DATABASE=UltraX Media Remote + +usb:v046DpC110* + ID_MODEL_FROM_DATABASE=Harmony 785/885 Remote + +usb:v046DpC111* + ID_MODEL_FROM_DATABASE=Harmony 525 Remote + +usb:v046DpC112* + ID_MODEL_FROM_DATABASE=Harmony 890 Remote + +usb:v046DpC11F* + ID_MODEL_FROM_DATABASE=Harmony 900/1100 Remote + +usb:v046DpC121* + ID_MODEL_FROM_DATABASE=Harmony One Remote + +usb:v046DpC122* + ID_MODEL_FROM_DATABASE=Harmony 700 Remote + +usb:v046DpC124* + ID_MODEL_FROM_DATABASE=Harmony 300 Remote + +usb:v046DpC125* + ID_MODEL_FROM_DATABASE=Harmony 200 Remote + +usb:v046DpC201* + ID_MODEL_FROM_DATABASE=WingMan Extreme Joystick with Throttle + +usb:v046DpC202* + ID_MODEL_FROM_DATABASE=WingMan Formula + +usb:v046DpC207* + ID_MODEL_FROM_DATABASE=WingMan Extreme Digital 3D + +usb:v046DpC208* + ID_MODEL_FROM_DATABASE=WingMan Gamepad Extreme + +usb:v046DpC209* + ID_MODEL_FROM_DATABASE=WingMan Gamepad + +usb:v046DpC20A* + ID_MODEL_FROM_DATABASE=WingMan RumblePad + +usb:v046DpC20B* + ID_MODEL_FROM_DATABASE=WingMan Action Pad + +usb:v046DpC20C* + ID_MODEL_FROM_DATABASE=WingMan Precision + +usb:v046DpC20D* + ID_MODEL_FROM_DATABASE=WingMan Attack 2 + +usb:v046DpC20E* + ID_MODEL_FROM_DATABASE=WingMan Formula GP + +usb:v046DpC211* + ID_MODEL_FROM_DATABASE=iTouch Cordless Reciever + +usb:v046DpC212* + ID_MODEL_FROM_DATABASE=WingMan Extreme Digital 3D + +usb:v046DpC213* + ID_MODEL_FROM_DATABASE=J-UH16 (Freedom 2.4 Cordless Joystick) + +usb:v046DpC214* + ID_MODEL_FROM_DATABASE=ATK3 (Attack III Joystick) + +usb:v046DpC215* + ID_MODEL_FROM_DATABASE=Extreme 3D Pro + +usb:v046DpC216* + ID_MODEL_FROM_DATABASE=Dual Action Gamepad + +usb:v046DpC218* + ID_MODEL_FROM_DATABASE=Logitech RumblePad 2 USB + +usb:v046DpC219* + ID_MODEL_FROM_DATABASE=Cordless RumblePad 2 + +usb:v046DpC21A* + ID_MODEL_FROM_DATABASE=Precision Gamepad + +usb:v046DpC21C* + ID_MODEL_FROM_DATABASE=G13 Advanced Gameboard + +usb:v046DpC21D* + ID_MODEL_FROM_DATABASE=F310 Gamepad [XInput Mode] + +usb:v046DpC21E* + ID_MODEL_FROM_DATABASE=F510 Gamepad [XInput Mode] + +usb:v046DpC21F* + ID_MODEL_FROM_DATABASE=F710 Wireless Gamepad [XInput Mode] + +usb:v046DpC221* + ID_MODEL_FROM_DATABASE=G11/G15 Keyboard / Keyboard + +usb:v046DpC222* + ID_MODEL_FROM_DATABASE=G15 Keyboard / LCD + +usb:v046DpC223* + ID_MODEL_FROM_DATABASE=G11/G15 Keyboard / USB Hub + +usb:v046DpC225* + ID_MODEL_FROM_DATABASE=G11/G15 Keyboard / G keys + +usb:v046DpC226* + ID_MODEL_FROM_DATABASE=G15 Refresh Keyboard + +usb:v046DpC227* + ID_MODEL_FROM_DATABASE=G15 Refresh Keyboard + +usb:v046DpC22A* + ID_MODEL_FROM_DATABASE=Gaming Keyboard G110 + +usb:v046DpC22B* + ID_MODEL_FROM_DATABASE=Gaming Keyboard G110 G-keys + +usb:v046DpC22D* + ID_MODEL_FROM_DATABASE=G510 Gaming Keyboard + +usb:v046DpC22E* + ID_MODEL_FROM_DATABASE=G510 Gaming Keyboard onboard audio + +usb:v046DpC245* + ID_MODEL_FROM_DATABASE=G400 Optical Mouse + +usb:v046DpC246* + ID_MODEL_FROM_DATABASE=Gaming Mouse G300 + +usb:v046DpC281* + ID_MODEL_FROM_DATABASE=WingMan Force + +usb:v046DpC283* + ID_MODEL_FROM_DATABASE=WingMan Force 3D + +usb:v046DpC285* + ID_MODEL_FROM_DATABASE=WingMan Strike Force 3D + +usb:v046DpC286* + ID_MODEL_FROM_DATABASE=Force 3D Pro + +usb:v046DpC287* + ID_MODEL_FROM_DATABASE=Flight System G940 + +usb:v046DpC291* + ID_MODEL_FROM_DATABASE=WingMan Formula Force + +usb:v046DpC293* + ID_MODEL_FROM_DATABASE=WingMan Formula Force GP + +usb:v046DpC294* + ID_MODEL_FROM_DATABASE=Driving Force + +usb:v046DpC295* + ID_MODEL_FROM_DATABASE=Momo Force Steering Wheel + +usb:v046DpC298* + ID_MODEL_FROM_DATABASE=Driving Force Pro + +usb:v046DpC299* + ID_MODEL_FROM_DATABASE=G25 Racing Wheel + +usb:v046DpC29B* + ID_MODEL_FROM_DATABASE=G27 Racing Wheel + +usb:v046DpC29C* + ID_MODEL_FROM_DATABASE=Speed Force Wireless Wheel for Wii + +usb:v046DpC2A0* + ID_MODEL_FROM_DATABASE=Wingman Force Feedback Mouse + +usb:v046DpC2A1* + ID_MODEL_FROM_DATABASE=WingMan Force Feedback Mouse + +usb:v046DpC301* + ID_MODEL_FROM_DATABASE=iTouch Keyboard + +usb:v046DpC302* + ID_MODEL_FROM_DATABASE=iTouch Pro Keyboard + +usb:v046DpC303* + ID_MODEL_FROM_DATABASE=iTouch Keyboard + +usb:v046DpC305* + ID_MODEL_FROM_DATABASE=Internet Keyboard + +usb:v046DpC307* + ID_MODEL_FROM_DATABASE=Internet Keyboard + +usb:v046DpC308* + ID_MODEL_FROM_DATABASE=Internet Navigator Keyboard + +usb:v046DpC309* + ID_MODEL_FROM_DATABASE=Internet Keyboard + +usb:v046DpC30A* + ID_MODEL_FROM_DATABASE=iTouch Composite + +usb:v046DpC30B* + ID_MODEL_FROM_DATABASE=NetPlay Keyboard + +usb:v046DpC30C* + ID_MODEL_FROM_DATABASE=Internet Keys (X) + +usb:v046DpC30D* + ID_MODEL_FROM_DATABASE=Internet Keys + +usb:v046DpC30E* + ID_MODEL_FROM_DATABASE=UltraX Keyboard (Y-BL49) + +usb:v046DpC30F* + ID_MODEL_FROM_DATABASE=Logicool HID-Compliant Keyboard (106 key) + +usb:v046DpC311* + ID_MODEL_FROM_DATABASE=Y-UF49 [Internet Pro Keyboard] + +usb:v046DpC312* + ID_MODEL_FROM_DATABASE=DeLuxe 250 Keyboard + +usb:v046DpC313* + ID_MODEL_FROM_DATABASE=Internet 350 Keyboard + +usb:v046DpC315* + ID_MODEL_FROM_DATABASE=Classic Keyboard 200 + +usb:v046DpC316* + ID_MODEL_FROM_DATABASE=HID-Compliant Keyboard + +usb:v046DpC317* + ID_MODEL_FROM_DATABASE=Wave Corded Keyboard + +usb:v046DpC318* + ID_MODEL_FROM_DATABASE=Illuminated Keyboard + +usb:v046DpC31A* + ID_MODEL_FROM_DATABASE=Comfort Wave 450 + +usb:v046DpC31B* + ID_MODEL_FROM_DATABASE=Compact Keyboard K300 + +usb:v046DpC31C* + ID_MODEL_FROM_DATABASE=Keyboard K120 for Business + +usb:v046DpC31D* + ID_MODEL_FROM_DATABASE=Media Keyboard K200 + +usb:v046DpC401* + ID_MODEL_FROM_DATABASE=TrackMan Marble Wheel + +usb:v046DpC402* + ID_MODEL_FROM_DATABASE=Marble Mouse (2-button) + +usb:v046DpC403* + ID_MODEL_FROM_DATABASE=Turbo TrackMan Marble FX + +usb:v046DpC404* + ID_MODEL_FROM_DATABASE=TrackMan Wheel + +usb:v046DpC408* + ID_MODEL_FROM_DATABASE=Marble Mouse (4-button) + +usb:v046DpC501* + ID_MODEL_FROM_DATABASE=Cordless Mouse Receiver + +usb:v046DpC502* + ID_MODEL_FROM_DATABASE=Cordless Mouse & iTouch Keys + +usb:v046DpC503* + ID_MODEL_FROM_DATABASE=Cordless Mouse+Keyboard Receiver + +usb:v046DpC504* + ID_MODEL_FROM_DATABASE=Cordless Mouse+Keyboard Receiver + +usb:v046DpC505* + ID_MODEL_FROM_DATABASE=Cordless Mouse+Keyboard Receiver + +usb:v046DpC506* + ID_MODEL_FROM_DATABASE=MX700 Cordless Mouse Receiver + +usb:v046DpC508* + ID_MODEL_FROM_DATABASE=Cordless Trackball + +usb:v046DpC509* + ID_MODEL_FROM_DATABASE=Cordless Keyboard & Mouse + +usb:v046DpC50A* + ID_MODEL_FROM_DATABASE=Cordless Mouse + +usb:v046DpC50B* + ID_MODEL_FROM_DATABASE=Cordless Desktop Optical + +usb:v046DpC50C* + ID_MODEL_FROM_DATABASE=Cordless Desktop S510 + +usb:v046DpC50D* + ID_MODEL_FROM_DATABASE=Cordless Mouse + +usb:v046DpC50E* + ID_MODEL_FROM_DATABASE=Cordless Mouse Receiver + +usb:v046DpC510* + ID_MODEL_FROM_DATABASE=Cordless Mouse + +usb:v046DpC512* + ID_MODEL_FROM_DATABASE=LX-700 Cordless Desktop Receiver + +usb:v046DpC513* + ID_MODEL_FROM_DATABASE=MX3000 Cordless Desktop Receiver + +usb:v046DpC514* + ID_MODEL_FROM_DATABASE=Cordless Mouse + +usb:v046DpC515* + ID_MODEL_FROM_DATABASE=Cordless 2.4 GHz Presenter Presentation remote control + +usb:v046DpC517* + ID_MODEL_FROM_DATABASE=LX710 Cordless Desktop Laser + +usb:v046DpC518* + ID_MODEL_FROM_DATABASE=MX610 Laser Cordless Mouse + +usb:v046DpC51A* + ID_MODEL_FROM_DATABASE=MX Revolution/G7 Cordless Mouse + +usb:v046DpC51B* + ID_MODEL_FROM_DATABASE=V220 Cordless Optical Mouse for Notebooks + +usb:v046DpC521* + ID_MODEL_FROM_DATABASE=Cordless Mouse Receiver + +usb:v046DpC525* + ID_MODEL_FROM_DATABASE=MX Revolution Cordless Mouse + +usb:v046DpC526* + ID_MODEL_FROM_DATABASE=Nano Receiver + +usb:v046DpC529* + ID_MODEL_FROM_DATABASE=Logitech Keyboard + Mice + +usb:v046DpC52B* + ID_MODEL_FROM_DATABASE=Unifying Receiver + +usb:v046DpC52F* + ID_MODEL_FROM_DATABASE=Unifying Receiver + +usb:v046DpC532* + ID_MODEL_FROM_DATABASE=Unifying Receiver + +usb:v046DpC623* + ID_MODEL_FROM_DATABASE=3Dconnexion Space Traveller 3D Mouse + +usb:v046DpC625* + ID_MODEL_FROM_DATABASE=3Dconnexion Space Pilot 3D Mouse + +usb:v046DpC626* + ID_MODEL_FROM_DATABASE=3Dconnexion Space Navigator 3D Mouse + +usb:v046DpC627* + ID_MODEL_FROM_DATABASE=3Dconnexion Space Explorer 3D Mouse + +usb:v046DpC702* + ID_MODEL_FROM_DATABASE=Cordless Presenter + +usb:v046DpC703* + ID_MODEL_FROM_DATABASE=Elite Keyboard Y-RP20 + Mouse MX900 (Bluetooth) + +usb:v046DpC704* + ID_MODEL_FROM_DATABASE=diNovo Wireless Desktop + +usb:v046DpC705* + ID_MODEL_FROM_DATABASE=MX900 Bluetooth Wireless Hub (C-UJ16A) + +usb:v046DpC707* + ID_MODEL_FROM_DATABASE=Bluetooth wireless hub + +usb:v046DpC708* + ID_MODEL_FROM_DATABASE=Bluetooth wireless hub + +usb:v046DpC709* + ID_MODEL_FROM_DATABASE=BT Mini-Receiver (HCI mode) + +usb:v046DpC70A* + ID_MODEL_FROM_DATABASE=MX5000 Cordless Desktop + +usb:v046DpC70B* + ID_MODEL_FROM_DATABASE=BT Mini-Receiver (HID proxy mode) + +usb:v046DpC70C* + ID_MODEL_FROM_DATABASE=BT Mini-Receiver (HID proxy mode) + +usb:v046DpC70D* + ID_MODEL_FROM_DATABASE=Bluetooth wireless hub + +usb:v046DpC70E* + ID_MODEL_FROM_DATABASE=MX1000 Bluetooth Laser Mouse + +usb:v046DpC70F* + ID_MODEL_FROM_DATABASE=Bluetooth wireless hub + +usb:v046DpC712* + ID_MODEL_FROM_DATABASE=Bluetooth wireless hub + +usb:v046DpC714* + ID_MODEL_FROM_DATABASE=diNovo Edge Keyboard + +usb:v046DpC715* + ID_MODEL_FROM_DATABASE=Bluetooth wireless hub + +usb:v046DpC71A* + ID_MODEL_FROM_DATABASE=Bluetooth wireless hub + +usb:v046DpC71D* + ID_MODEL_FROM_DATABASE=Bluetooth wireless hub + +usb:v046DpC71F* + ID_MODEL_FROM_DATABASE=diNovo Mini Wireless Keyboard + +usb:v046DpC720* + ID_MODEL_FROM_DATABASE=Bluetooth wireless hub + +usb:v046DpCA03* + ID_MODEL_FROM_DATABASE=MOMO Racing + +usb:v046DpCA04* + ID_MODEL_FROM_DATABASE=Formula Vibration Feedback Wheel + +usb:v046DpCAB1* + ID_MODEL_FROM_DATABASE=Cordless Keyboard for Wii HID Receiver + +usb:v046DpD001* + ID_MODEL_FROM_DATABASE=QuickCam Pro + +usb:v046E* + ID_VENDOR_FROM_DATABASE=Behavior Tech. Computer Corp. + +usb:v046Ep0100* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v046Ep3001* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v046Ep3002* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v046Ep3003* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v046Ep3005* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v046Ep3008* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v046Ep5250* + ID_MODEL_FROM_DATABASE=KeyMaestro Multimedia Keyboard + +usb:v046Ep5273* + ID_MODEL_FROM_DATABASE=KeyMaestro Multimedia Keyboard + +usb:v046Ep52E6* + ID_MODEL_FROM_DATABASE=Cordless Mouse + +usb:v046Ep5308* + ID_MODEL_FROM_DATABASE=KeyMaestro Keyboard + +usb:v046Ep5408* + ID_MODEL_FROM_DATABASE=KeyMaestro Multimedia Keyboard/Hub + +usb:v046Ep5500* + ID_MODEL_FROM_DATABASE=Portable Keyboard 86+9 keys (Model 6100C US) + +usb:v046Ep5720* + ID_MODEL_FROM_DATABASE=Smart Card Reader + +usb:v046Ep6782* + ID_MODEL_FROM_DATABASE=BTC 7932 mouse+keyboard + +usb:v046F* + ID_VENDOR_FROM_DATABASE=Crystal Semiconductor + +usb:v0471* + ID_VENDOR_FROM_DATABASE=Philips (or NXP) + +usb:v0471p0101* + ID_MODEL_FROM_DATABASE=DSS350 Digital Speaker System + +usb:v0471p0104* + ID_MODEL_FROM_DATABASE=DSS330 Digital Speaker System [uda1321] + +usb:v0471p0105* + ID_MODEL_FROM_DATABASE=UDA1321 + +usb:v0471p014F* + ID_MODEL_FROM_DATABASE=GoGear SA9200 + +usb:v0471p0160* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v0471p0161* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v0471p0163* + ID_MODEL_FROM_DATABASE=GoGear SA1100 + +usb:v0471p0164* + ID_MODEL_FROM_DATABASE=GoGear SA1110/02 + +usb:v0471p0165* + ID_MODEL_FROM_DATABASE=GoGear SA1330 + +usb:v0471p0201* + ID_MODEL_FROM_DATABASE=Hub + +usb:v0471p0222* + ID_MODEL_FROM_DATABASE=Creative Nomad Jukebox + +usb:v0471p0302* + ID_MODEL_FROM_DATABASE=PCA645VC Webcam [pwc] + +usb:v0471p0303* + ID_MODEL_FROM_DATABASE=PCA646VC Webcam [pwc] + +usb:v0471p0304* + ID_MODEL_FROM_DATABASE=Askey VC010 Webcam [pwc] + +usb:v0471p0307* + ID_MODEL_FROM_DATABASE=PCVC675K Webcam [pwc] + +usb:v0471p0308* + ID_MODEL_FROM_DATABASE=PCVC680K Webcam [pwc] + +usb:v0471p030B* + ID_MODEL_FROM_DATABASE=PC VGA Camera (Vesta Fun) + +usb:v0471p030C* + ID_MODEL_FROM_DATABASE=PCVC690K Webcam [pwc] + +usb:v0471p0310* + ID_MODEL_FROM_DATABASE=PCVC730K Webcam [pwc] + +usb:v0471p0311* + ID_MODEL_FROM_DATABASE=PCVC740K ToUcam Pro [pwc] + +usb:v0471p0312* + ID_MODEL_FROM_DATABASE=PCVC750K Webcam [pwc] + +usb:v0471p0314* + ID_MODEL_FROM_DATABASE=DMVC 1000K + +usb:v0471p0316* + ID_MODEL_FROM_DATABASE=DMVC 2000K Video Capture + +usb:v0471p0321* + ID_MODEL_FROM_DATABASE=FunCam + +usb:v0471p0322* + ID_MODEL_FROM_DATABASE=DMVC1300K PC Camera + +usb:v0471p0325* + ID_MODEL_FROM_DATABASE=SPC 200NC PC Camera + +usb:v0471p0326* + ID_MODEL_FROM_DATABASE=SPC 300NC PC Camera + +usb:v0471p0327* + ID_MODEL_FROM_DATABASE=Webcam SPC 6000 NC (Webcam w/ mic) + +usb:v0471p0328* + ID_MODEL_FROM_DATABASE=SPC 700NC PC Camera + +usb:v0471p0329* + ID_MODEL_FROM_DATABASE=SPC 900NC PC Camera / ORITE CCD Webcam(PC370R) + +usb:v0471p032D* + ID_MODEL_FROM_DATABASE=SPC 210NC PC Camera + +usb:v0471p032E* + ID_MODEL_FROM_DATABASE=SPC 315NC PC Camera + +usb:v0471p0330* + ID_MODEL_FROM_DATABASE=SPC 710NC PC Camera + +usb:v0471p0331* + ID_MODEL_FROM_DATABASE=SPC 1300NC PC Camera + +usb:v0471p0332* + ID_MODEL_FROM_DATABASE=SPC 1000NC PC Camera + +usb:v0471p0333* + ID_MODEL_FROM_DATABASE=SPC 620NC PC Camera + +usb:v0471p0334* + ID_MODEL_FROM_DATABASE=SPC 520/525NC PC Camera + +usb:v0471p0401* + ID_MODEL_FROM_DATABASE=Semiconductors CICT Keyboard + +usb:v0471p0402* + ID_MODEL_FROM_DATABASE=PS/2 Mouse on Semiconductors CICT Keyboard + +usb:v0471p0406* + ID_MODEL_FROM_DATABASE=15 inch Detachable Monitor + +usb:v0471p0407* + ID_MODEL_FROM_DATABASE=10 inch Mobile Monitor + +usb:v0471p0408* + ID_MODEL_FROM_DATABASE=SG3WA1/74 802.11b WLAN Adapter [Atmel AT76C503A] + +usb:v0471p0471* + ID_MODEL_FROM_DATABASE=Digital Speaker System + +usb:v0471p0601* + ID_MODEL_FROM_DATABASE=OVU1020 IR Dongle (Kbd+Mouse) + +usb:v0471p0602* + ID_MODEL_FROM_DATABASE=ATI Remote Wonder II Input Device + +usb:v0471p0603* + ID_MODEL_FROM_DATABASE=ATI Remote Wonder II Controller + +usb:v0471p0608* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v0471p060A* + ID_MODEL_FROM_DATABASE=TSU9600 Remote Control + +usb:v0471p060C* + ID_MODEL_FROM_DATABASE=Consumer Infrared Transceiver (HP) + +usb:v0471p060D* + ID_MODEL_FROM_DATABASE=Consumer Infrared Transceiver (SRM5100) + +usb:v0471p060E* + ID_MODEL_FROM_DATABASE=RF Dongle + +usb:v0471p060F* + ID_MODEL_FROM_DATABASE=Consumer Infrared Transceiver + +usb:v0471p0613* + ID_MODEL_FROM_DATABASE=Infrared Transceiver + +usb:v0471p0617* + ID_MODEL_FROM_DATABASE=IEEE802.15.4 RF Dongle + +usb:v0471p0619* + ID_MODEL_FROM_DATABASE=TSU9400 Remote Control + +usb:v0471p0666* + ID_MODEL_FROM_DATABASE=Hantek DDS-3005 Arbitrary Waveform Generator + +usb:v0471p0700* + ID_MODEL_FROM_DATABASE=Semiconductors CICT Hub + +usb:v0471p0701* + ID_MODEL_FROM_DATABASE=150P1 TFT Display + +usb:v0471p0809* + ID_MODEL_FROM_DATABASE=AVNET Bluetooth Device + +usb:v0471p0811* + ID_MODEL_FROM_DATABASE=JR24 CDRW + +usb:v0471p0814* + ID_MODEL_FROM_DATABASE=DCCX38/P data cable + +usb:v0471p0815* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v0471p0844* + ID_MODEL_FROM_DATABASE=SA2111/02 1GB Flash Audio Player + +usb:v0471p084A* + ID_MODEL_FROM_DATABASE=GoGear SA3125 + +usb:v0471p084E* + ID_MODEL_FROM_DATABASE=GoGear SA60xx (mtp) + +usb:v0471p0888* + ID_MODEL_FROM_DATABASE=Hantek DDS-3005 Arbitrary Waveform Generator + +usb:v0471p1103* + ID_MODEL_FROM_DATABASE=Digital Speaker System + +usb:v0471p1120* + ID_MODEL_FROM_DATABASE=Creative Rhomba MP3 player + +usb:v0471p1125* + ID_MODEL_FROM_DATABASE=Nike psa[128max Player + +usb:v0471p1137* + ID_MODEL_FROM_DATABASE=HDD065 MP3 player + +usb:v0471p1201* + ID_MODEL_FROM_DATABASE=Arima Bluetooth Device + +usb:v0471p1230* + ID_MODEL_FROM_DATABASE=Wireless Adapter 11g + +usb:v0471p1232* + ID_MODEL_FROM_DATABASE=SNU6500 Wireless Adapter + +usb:v0471p1233* + ID_MODEL_FROM_DATABASE=Wireless Adapter Bootloader Download + +usb:v0471p1236* + ID_MODEL_FROM_DATABASE=SNU5600 802.11bg + +usb:v0471p1237* + ID_MODEL_FROM_DATABASE=TalkTalk SNU5630NS/05 802.11bg + +usb:v0471p1552* + ID_MODEL_FROM_DATABASE=ISP 1581 Hi-Speed USB MPEG2 Encoder Reference Kit + +usb:v0471p1801* + ID_MODEL_FROM_DATABASE=Diva MP3 player + +usb:v0471p200A* + ID_MODEL_FROM_DATABASE=Wireless Network Adapter + +usb:v0471p200F* + ID_MODEL_FROM_DATABASE=802.11n Wireless Adapter + +usb:v0471p2021* + ID_MODEL_FROM_DATABASE=SDE3273FC/97 2.5" SATA HDD Enclosure [INIC-1608L] + +usb:v0471p2022* + ID_MODEL_FROM_DATABASE=GoGear SA52XX + +usb:v0471p2034* + ID_MODEL_FROM_DATABASE=Webcam SPC530NC + +usb:v0471p2036* + ID_MODEL_FROM_DATABASE=Webcam SPC1030NC + +usb:v0471p203F* + ID_MODEL_FROM_DATABASE=TSU9200 Remote Control + +usb:v0471p2046* + ID_MODEL_FROM_DATABASE=TSU9800 Remote Control + +usb:v0471p204E* + ID_MODEL_FROM_DATABASE=GoGear RaGa (SA1942/02) + +usb:v0471p205E* + ID_MODEL_FROM_DATABASE=TSU9300 Remote Control + +usb:v0471p206C* + ID_MODEL_FROM_DATABASE=MCE IR Receiver - Spinel plusf0r ASUS + +usb:v0471p2070* + ID_MODEL_FROM_DATABASE=GoGear Mix + +usb:v0471p2076* + ID_MODEL_FROM_DATABASE=GoGear Aria + +usb:v0471p2079* + ID_MODEL_FROM_DATABASE=GoGear Opus + +usb:v0471p2088* + ID_MODEL_FROM_DATABASE=MCE IR Receiver with ALS- Spinel plus for ASUS + +usb:v0471p209E* + ID_MODEL_FROM_DATABASE=PTA01 Wireless Adapter + +usb:v0471p20B6* + ID_MODEL_FROM_DATABASE=GoGear Vibe + +usb:v0471p20D0* + ID_MODEL_FROM_DATABASE=SPZ2000 Webcam [PixArt PAC7332] + +usb:v0471p20E3* + ID_MODEL_FROM_DATABASE=GoGear Raga + +usb:v0471p262C* + ID_MODEL_FROM_DATABASE=SPC230NC Webcam + +usb:v0471p485D* + ID_MODEL_FROM_DATABASE=Senselock SenseIV v2.x + +usb:v0471pDF55* + ID_MODEL_FROM_DATABASE=LPCXpresso LPC-Link + +usb:v0472* + ID_VENDOR_FROM_DATABASE=Chicony Electronics Co., Ltd + +usb:v0472p0065* + ID_MODEL_FROM_DATABASE=PFU-65 Keyboard [Chicony] + +usb:v0472pB086* + ID_MODEL_FROM_DATABASE=Asus USB2.0 Webcam + +usb:v0472pB091* + ID_MODEL_FROM_DATABASE=Webcam + +usb:v0473* + ID_VENDOR_FROM_DATABASE=Sanyo Information Business Co., Ltd + +usb:v0474* + ID_VENDOR_FROM_DATABASE=Sanyo Electric Co., Ltd + +usb:v0474p0110* + ID_MODEL_FROM_DATABASE=Digital Voice Recorder R200 + +usb:v0474p0217* + ID_MODEL_FROM_DATABASE=Xacti J2 + +usb:v0474p022F* + ID_MODEL_FROM_DATABASE=C5 Digital Media Camera (mass storage mode) + +usb:v0474p0230* + ID_MODEL_FROM_DATABASE=C5 Digital Media Camera (PictBridge mode) + +usb:v0474p0231* + ID_MODEL_FROM_DATABASE=C5 Digital Media Camera (PC control mode) + +usb:v0474p0401* + ID_MODEL_FROM_DATABASE=Optical Drive + +usb:v0474p0701* + ID_MODEL_FROM_DATABASE=SCP-4900 Cellphone + +usb:v0474p071F* + ID_MODEL_FROM_DATABASE=Usb Com Port Enumerator + +usb:v0474p0722* + ID_MODEL_FROM_DATABASE=W33SA Camera + +usb:v0475* + ID_VENDOR_FROM_DATABASE=Relisys/Teco Information System + +usb:v0475p0100* + ID_MODEL_FROM_DATABASE=NEC Petiscan + +usb:v0475p0103* + ID_MODEL_FROM_DATABASE=Eclipse 1200U/Episode + +usb:v0475p0210* + ID_MODEL_FROM_DATABASE=Scorpio Ultra 3 + +usb:v0476* + ID_VENDOR_FROM_DATABASE=AESP + +usb:v0477* + ID_VENDOR_FROM_DATABASE=Seagate Technology, Inc. + +usb:v0478* + ID_VENDOR_FROM_DATABASE=Connectix Corp. + +usb:v0478p0001* + ID_MODEL_FROM_DATABASE=QuickCam + +usb:v0478p0002* + ID_MODEL_FROM_DATABASE=QuickClip + +usb:v0478p0003* + ID_MODEL_FROM_DATABASE=QuickCam Pro + +usb:v0479* + ID_VENDOR_FROM_DATABASE=Advanced Peripheral Laboratories + +usb:v047A* + ID_VENDOR_FROM_DATABASE=Semtech Corp. + +usb:v047Ap0004* + ID_MODEL_FROM_DATABASE=ScreenCoder UR7HCTS2-USB + +usb:v047B* + ID_VENDOR_FROM_DATABASE=Silitek Corp. + +usb:v047Bp0001* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v047Bp0002* + ID_MODEL_FROM_DATABASE=Keyboard and Mouse + +usb:v047Bp0011* + ID_MODEL_FROM_DATABASE=SK-1688U Keyboard + +usb:v047Bp00F9* + ID_MODEL_FROM_DATABASE=SK-1789u Keyboard + +usb:v047Bp0101* + ID_MODEL_FROM_DATABASE=BlueTooth Keyboard and Mouse + +usb:v047Bp020B* + ID_MODEL_FROM_DATABASE=SK-3105 SmartCard Reader + +usb:v047Bp050E* + ID_MODEL_FROM_DATABASE=Internet Compact Keyboard + +usb:v047Bp1000* + ID_MODEL_FROM_DATABASE=Trust Office Scan USB 19200 + +usb:v047Bp1002* + ID_MODEL_FROM_DATABASE=HP ScanJet 4300c Parallel Port + +usb:v047C* + ID_VENDOR_FROM_DATABASE=Dell Computer Corp. + +usb:v047D* + ID_VENDOR_FROM_DATABASE=Kensington + +usb:v047Dp1001* + ID_MODEL_FROM_DATABASE=Mouse*in*a*Box + +usb:v047Dp1002* + ID_MODEL_FROM_DATABASE=Expert Mouse Pro + +usb:v047Dp1003* + ID_MODEL_FROM_DATABASE=Orbit TrackBall + +usb:v047Dp1004* + ID_MODEL_FROM_DATABASE=MouseWorks + +usb:v047Dp1005* + ID_MODEL_FROM_DATABASE=TurboBall + +usb:v047Dp1006* + ID_MODEL_FROM_DATABASE=TurboRing + +usb:v047Dp1009* + ID_MODEL_FROM_DATABASE=Orbit TrackBall for Mac + +usb:v047Dp1012* + ID_MODEL_FROM_DATABASE=PocketMouse + +usb:v047Dp1013* + ID_MODEL_FROM_DATABASE=Mouse*in*a*Box Optical Pro + +usb:v047Dp1014* + ID_MODEL_FROM_DATABASE=Expert Mouse Pro Wireless + +usb:v047Dp1015* + ID_MODEL_FROM_DATABASE=Expert Mouse + +usb:v047Dp1016* + ID_MODEL_FROM_DATABASE=ADB/USB Orbit + +usb:v047Dp1018* + ID_MODEL_FROM_DATABASE=Studio Mouse + +usb:v047Dp101D* + ID_MODEL_FROM_DATABASE=Mouse*in*a*Box Optical Pro + +usb:v047Dp101E* + ID_MODEL_FROM_DATABASE=Studio Mouse Wireless + +usb:v047Dp101F* + ID_MODEL_FROM_DATABASE=PocketMouse Pro + +usb:v047Dp1020* + ID_MODEL_FROM_DATABASE=Expert Mouse Trackball + +usb:v047Dp1021* + ID_MODEL_FROM_DATABASE=Expert Mouse Wireless + +usb:v047Dp1022* + ID_MODEL_FROM_DATABASE=Orbit Optical + +usb:v047Dp1023* + ID_MODEL_FROM_DATABASE=Pocket Mouse Pro Wireless + +usb:v047Dp1024* + ID_MODEL_FROM_DATABASE=PocketMouse + +usb:v047Dp1025* + ID_MODEL_FROM_DATABASE=Mouse*in*a*Box Optical Elite Wireless + +usb:v047Dp1026* + ID_MODEL_FROM_DATABASE=Pocket Mouse Pro + +usb:v047Dp1027* + ID_MODEL_FROM_DATABASE=StudioMouse + +usb:v047Dp1028* + ID_MODEL_FROM_DATABASE=StudioMouse Wireless + +usb:v047Dp1029* + ID_MODEL_FROM_DATABASE=Mouse*in*a*Box Optical Elite + +usb:v047Dp102A* + ID_MODEL_FROM_DATABASE=Mouse*in*a*Box Optical + +usb:v047Dp102B* + ID_MODEL_FROM_DATABASE=PocketMouse + +usb:v047Dp102C* + ID_MODEL_FROM_DATABASE=Iridio + +usb:v047Dp102D* + ID_MODEL_FROM_DATABASE=Pilot Optical + +usb:v047Dp102E* + ID_MODEL_FROM_DATABASE=Pilot Optical Pro + +usb:v047Dp102F* + ID_MODEL_FROM_DATABASE=Pilot Optical Pro Wireless + +usb:v047Dp1042* + ID_MODEL_FROM_DATABASE=Ci25m Notebook Optical Mouse [Diamond Eye Precision] + +usb:v047Dp1043* + ID_MODEL_FROM_DATABASE=Ci65m Wireless Notebook Optical Mouse + +usb:v047Dp104A* + ID_MODEL_FROM_DATABASE=PilotMouse Mini Retractable + +usb:v047Dp105D* + ID_MODEL_FROM_DATABASE=PocketMouse Bluetooth + +usb:v047Dp105E* + ID_MODEL_FROM_DATABASE=Bluetooth EDR Dongle + +usb:v047Dp1061* + ID_MODEL_FROM_DATABASE=PocketMouse Grip + +usb:v047Dp1062* + ID_MODEL_FROM_DATABASE=PocketMouse Max + +usb:v047Dp1063* + ID_MODEL_FROM_DATABASE=PocketMouse Max Wireless + +usb:v047Dp1064* + ID_MODEL_FROM_DATABASE=PocketMouse 2.0 Wireless + +usb:v047Dp1065* + ID_MODEL_FROM_DATABASE=PocketMouse 2.0 + +usb:v047Dp1066* + ID_MODEL_FROM_DATABASE=PocketMouse Max Glow + +usb:v047Dp1067* + ID_MODEL_FROM_DATABASE=ValueMouse + +usb:v047Dp1068* + ID_MODEL_FROM_DATABASE=ValueOpt White + +usb:v047Dp1069* + ID_MODEL_FROM_DATABASE=ValueOpt Black + +usb:v047Dp106A* + ID_MODEL_FROM_DATABASE=PilotMouse Laser Wireless Mini + +usb:v047Dp106B* + ID_MODEL_FROM_DATABASE=PilotMouse Laser - 3 Button + +usb:v047Dp106C* + ID_MODEL_FROM_DATABASE=PilotMouse Laser - Gaming + +usb:v047Dp106D* + ID_MODEL_FROM_DATABASE=PilotMouse Laser - Wired + +usb:v047Dp106E* + ID_MODEL_FROM_DATABASE=PilotMouse Micro Laser + +usb:v047Dp1070* + ID_MODEL_FROM_DATABASE=ValueOpt Travel + +usb:v047Dp1071* + ID_MODEL_FROM_DATABASE=ValueOpt RF TX + +usb:v047Dp1072* + ID_MODEL_FROM_DATABASE=PocketMouse Colour + +usb:v047Dp1073* + ID_MODEL_FROM_DATABASE=PilotMouse Laser - 6 Button + +usb:v047Dp1074* + ID_MODEL_FROM_DATABASE=PilotMouse Laser Wireless Mini + +usb:v047Dp1075* + ID_MODEL_FROM_DATABASE=SlimBlade Presenter Media Mouse + +usb:v047Dp1076* + ID_MODEL_FROM_DATABASE=SlimBlade Media Mouse + +usb:v047Dp1077* + ID_MODEL_FROM_DATABASE=SlimBlade Presenter Mouse + +usb:v047Dp1152* + ID_MODEL_FROM_DATABASE=Bluetooth EDR Dongle + +usb:v047Dp2002* + ID_MODEL_FROM_DATABASE=Optical Elite Wireless + +usb:v047Dp2010* + ID_MODEL_FROM_DATABASE=Wireless Presentation Remote + +usb:v047Dp2012* + ID_MODEL_FROM_DATABASE=Wireless Presenter with Laser Pointer + +usb:v047Dp2021* + ID_MODEL_FROM_DATABASE=PilotBoard Wireless + +usb:v047Dp2030* + ID_MODEL_FROM_DATABASE=PilotBoard Wireless + +usb:v047Dp2034* + ID_MODEL_FROM_DATABASE=SlimBlade Media Notebook Set + +usb:v047Dp2041* + ID_MODEL_FROM_DATABASE=SlimBlade Trackball + +usb:v047Dp2048* + ID_MODEL_FROM_DATABASE=Orbit Trackball with Scroll Ring + +usb:v047Dp4003* + ID_MODEL_FROM_DATABASE=Gravis Xterminator Digital Gamepad + +usb:v047Dp4005* + ID_MODEL_FROM_DATABASE=Gravis Eliminator GamePad Pro + +usb:v047Dp4006* + ID_MODEL_FROM_DATABASE=Gravis Eliminator AfterShock + +usb:v047Dp4007* + ID_MODEL_FROM_DATABASE=Gravis Xterminator Force + +usb:v047Dp4008* + ID_MODEL_FROM_DATABASE=Gravis Destroyer TiltPad + +usb:v047Dp5001* + ID_MODEL_FROM_DATABASE=Cabo I Camera + +usb:v047Dp5002* + ID_MODEL_FROM_DATABASE=VideoCam CABO II + +usb:v047Dp5003* + ID_MODEL_FROM_DATABASE=VideoCam + +usb:v047E* + ID_VENDOR_FROM_DATABASE=Agere Systems, Inc. (Lucent) + +usb:v047Ep0300* + ID_MODEL_FROM_DATABASE=ORiNOCO Card + +usb:v047Ep1001* + ID_MODEL_FROM_DATABASE=USS720 Parallel Port + +usb:v047Ep2892* + ID_MODEL_FROM_DATABASE=Systems Soft Modem + +usb:v047EpBAD1* + ID_MODEL_FROM_DATABASE=Lucent 56k Modem + +usb:v047EpF101* + ID_MODEL_FROM_DATABASE=Atlas Modem + +usb:v047F* + ID_VENDOR_FROM_DATABASE=Plantronics, Inc. + +usb:v047Fp0101* + ID_MODEL_FROM_DATABASE=Bulk Driver + +usb:v047Fp0301* + ID_MODEL_FROM_DATABASE=Bulk Driver + +usb:v047Fp0411* + ID_MODEL_FROM_DATABASE=Savi Office Base Station + +usb:v047Fp0CA1* + ID_MODEL_FROM_DATABASE=USB DSP v4 Audio Interface + +usb:v047Fp4254* + ID_MODEL_FROM_DATABASE=BUA-100 Bluetooth Adapter + +usb:v047FpAC01* + ID_MODEL_FROM_DATABASE=Savi 7xx + +usb:v047FpAD01* + ID_MODEL_FROM_DATABASE=GameCom 777 5.1 Headset + +usb:v0480* + ID_VENDOR_FROM_DATABASE=Toshiba America Info. Systems, Inc. + +usb:v0480p0001* + ID_MODEL_FROM_DATABASE=InTouch Module + +usb:v0480p0004* + ID_MODEL_FROM_DATABASE=InTouch Module + +usb:v0480p0011* + ID_MODEL_FROM_DATABASE=InTouch Module + +usb:v0480p0014* + ID_MODEL_FROM_DATABASE=InTouch Module + +usb:v0480pA007* + ID_MODEL_FROM_DATABASE=External Disk USB 3.0 + +usb:v0481* + ID_VENDOR_FROM_DATABASE=Zenith Data Systems + +usb:v0482* + ID_VENDOR_FROM_DATABASE=Kyocera Corp. + +usb:v0482p000E* + ID_MODEL_FROM_DATABASE=FS-1020D Printer + +usb:v0482p0100* + ID_MODEL_FROM_DATABASE=Finecam S3x + +usb:v0482p0101* + ID_MODEL_FROM_DATABASE=Finecam S4 + +usb:v0482p0103* + ID_MODEL_FROM_DATABASE=Finecam S5 + +usb:v0482p0105* + ID_MODEL_FROM_DATABASE=Finecam L3 + +usb:v0482p0106* + ID_MODEL_FROM_DATABASE=Finecam + +usb:v0482p0107* + ID_MODEL_FROM_DATABASE=Digital Camera Device + +usb:v0482p0108* + ID_MODEL_FROM_DATABASE=Digital Camera Device + +usb:v0482p0203* + ID_MODEL_FROM_DATABASE=AH-K3001V + +usb:v0482p0204* + ID_MODEL_FROM_DATABASE=iBurst Terminal + +usb:v0483* + ID_VENDOR_FROM_DATABASE=STMicroelectronics + +usb:v0483p0137* + ID_MODEL_FROM_DATABASE=BeWAN ADSL USB ST (blue or green) + +usb:v0483p0138* + ID_MODEL_FROM_DATABASE=Unicorn II (ST70138B + MTC-20174TQ chipset) + +usb:v0483p1307* + ID_MODEL_FROM_DATABASE=Cytronix 6in1 Card Reader + +usb:v0483p163D* + ID_MODEL_FROM_DATABASE=Cool Icam Digi-MP3 + +usb:v0483p2015* + ID_MODEL_FROM_DATABASE=TouchChip® Fingerprint Reader + +usb:v0483p2016* + ID_MODEL_FROM_DATABASE=Fingerprint Reader + +usb:v0483p2017* + ID_MODEL_FROM_DATABASE=Biometric Smart Card Reader + +usb:v0483p2018* + ID_MODEL_FROM_DATABASE=BioSimKey + +usb:v0483p2302* + ID_MODEL_FROM_DATABASE=Portable Flash Device (PFD) + +usb:v0483p3744* + ID_MODEL_FROM_DATABASE=STLINK Pseudo disk + +usb:v0483p3747* + ID_MODEL_FROM_DATABASE=ST Micro Connect Lite + +usb:v0483p3748* + ID_MODEL_FROM_DATABASE=ST-LINK/V2 + +usb:v0483p4810* + ID_MODEL_FROM_DATABASE=ISDN adapter + +usb:v0483p481D* + ID_MODEL_FROM_DATABASE=BT Digital Access adapter + +usb:v0483p5000* + ID_MODEL_FROM_DATABASE=ST Micro/Ergenic ERG BT-002 Bluetooth Adapter + +usb:v0483p5001* + ID_MODEL_FROM_DATABASE=ST Micro Bluetooth Device + +usb:v0483p5710* + ID_MODEL_FROM_DATABASE=Joystick in FS Mode + +usb:v0483p5721* + ID_MODEL_FROM_DATABASE=Hantek DDS-3X25 Arbitrary Waveform Generator + +usb:v0483p5740* + ID_MODEL_FROM_DATABASE=STM32F407 + +usb:v0483p7270* + ID_MODEL_FROM_DATABASE=ST Micro Serial Bridge + +usb:v0483p7554* + ID_MODEL_FROM_DATABASE=56k SoftModem + +usb:v0483pDF11* + ID_MODEL_FROM_DATABASE=STM Device in DFU Mode + +usb:v0483pFF10* + ID_MODEL_FROM_DATABASE=Swann ST56 Modem + +usb:v0484* + ID_VENDOR_FROM_DATABASE=Specialix + +usb:v0485* + ID_VENDOR_FROM_DATABASE=Nokia Monitors + +usb:v0486* + ID_VENDOR_FROM_DATABASE=ASUS Computers, Inc. + +usb:v0486p0185* + ID_MODEL_FROM_DATABASE=EeePC T91MT HID Touch Panel + +usb:v0487* + ID_VENDOR_FROM_DATABASE=Stewart Connector + +usb:v0488* + ID_VENDOR_FROM_DATABASE=Cirque Corp. + +usb:v0489* + ID_VENDOR_FROM_DATABASE=Foxconn / Hon Hai + +usb:v0489p0502* + ID_MODEL_FROM_DATABASE=SmartMedia Card Reader Firmware Loader + +usb:v0489p0503* + ID_MODEL_FROM_DATABASE=SmartMedia Card Reader + +usb:v0489pD00C* + ID_MODEL_FROM_DATABASE=Rollei Compactline (Storage Mode) + +usb:v0489pD00E* + ID_MODEL_FROM_DATABASE=Rollei Compactline (Video Mode) + +usb:v0489pE000* + ID_MODEL_FROM_DATABASE=T-Com TC 300 + +usb:v0489pE003* + ID_MODEL_FROM_DATABASE=Pirelli DP-L10 + +usb:v0489pE00D* + ID_MODEL_FROM_DATABASE=Broadcom Bluetooth 2.1 Device + +usb:v0489pE00F* + ID_MODEL_FROM_DATABASE=Foxconn T77H114 BCM2070 [Single-Chip Bluetooth 2.1 + EDR Adapter] + +usb:v0489pE016* + ID_MODEL_FROM_DATABASE=Ubee PXU1900 WiMAX Adapter [Beceem BCSM250] + +usb:v0489pE02C* + ID_MODEL_FROM_DATABASE=Atheros AR5BBU12 Bluetooth Device + +usb:v048A* + ID_VENDOR_FROM_DATABASE=S-MOS Systems, Inc. + +usb:v048C* + ID_VENDOR_FROM_DATABASE=Alps Electric Ireland, Ltd + +usb:v048D* + ID_VENDOR_FROM_DATABASE=Integrated Technology Express, Inc. + +usb:v048Dp1165* + ID_MODEL_FROM_DATABASE=IT1165 Flash Controller + +usb:v048Dp1336* + ID_MODEL_FROM_DATABASE=SD/MMC Cardreader + +usb:v048Dp1345* + ID_MODEL_FROM_DATABASE=Multi Cardreader + +usb:v048Dp9006* + ID_MODEL_FROM_DATABASE=IT9135 BDA Afatech DVB-T HDTV Dongle + +usb:v048Dp9009* + ID_MODEL_FROM_DATABASE=Zolid HD DVD Maker + +usb:v048Dp9135* + ID_MODEL_FROM_DATABASE=Zolid Mini DVB-T Stick + +usb:v048F* + ID_VENDOR_FROM_DATABASE=Eicon Tech. + +usb:v0490* + ID_VENDOR_FROM_DATABASE=United Microelectronics Corp. + +usb:v0491* + ID_VENDOR_FROM_DATABASE=Capetronic + +usb:v0491p0003* + ID_MODEL_FROM_DATABASE=Taxan Monitor Control + +usb:v0492* + ID_VENDOR_FROM_DATABASE=Samsung SemiConductor, Inc. + +usb:v0492p0140* + ID_MODEL_FROM_DATABASE=MP3 player + +usb:v0492p0141* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v0493* + ID_VENDOR_FROM_DATABASE=MAG Technology Co., Ltd + +usb:v0495* + ID_VENDOR_FROM_DATABASE=ESS Technology, Inc. + +usb:v0496* + ID_VENDOR_FROM_DATABASE=Micron Electronics + +usb:v0497* + ID_VENDOR_FROM_DATABASE=Smile International + +usb:v0497pC001* + ID_MODEL_FROM_DATABASE=Camera Device + +usb:v0498* + ID_VENDOR_FROM_DATABASE=Capetronic (Kaohsiung) Corp. + +usb:v0499* + ID_VENDOR_FROM_DATABASE=Yamaha Corp. + +usb:v0499p1000* + ID_MODEL_FROM_DATABASE=UX256 MIDI I/F + +usb:v0499p1001* + ID_MODEL_FROM_DATABASE=MU1000 + +usb:v0499p1002* + ID_MODEL_FROM_DATABASE=MU2000 + +usb:v0499p1003* + ID_MODEL_FROM_DATABASE=MU500 + +usb:v0499p1004* + ID_MODEL_FROM_DATABASE=UW500 + +usb:v0499p1005* + ID_MODEL_FROM_DATABASE=MOTIF6 + +usb:v0499p1006* + ID_MODEL_FROM_DATABASE=MOTIF7 + +usb:v0499p1007* + ID_MODEL_FROM_DATABASE=MOTIF8 + +usb:v0499p1008* + ID_MODEL_FROM_DATABASE=UX96 MIDI I/F + +usb:v0499p1009* + ID_MODEL_FROM_DATABASE=UX16 MIDI I/F + +usb:v0499p100A* + ID_MODEL_FROM_DATABASE=EOS BX + +usb:v0499p100C* + ID_MODEL_FROM_DATABASE=UC-MX + +usb:v0499p100D* + ID_MODEL_FROM_DATABASE=UC-KX + +usb:v0499p100E* + ID_MODEL_FROM_DATABASE=S08 + +usb:v0499p100F* + ID_MODEL_FROM_DATABASE=CLP-150 + +usb:v0499p1010* + ID_MODEL_FROM_DATABASE=CLP-170 + +usb:v0499p1011* + ID_MODEL_FROM_DATABASE=P-250 + +usb:v0499p1012* + ID_MODEL_FROM_DATABASE=TYROS + +usb:v0499p1013* + ID_MODEL_FROM_DATABASE=PF-500 + +usb:v0499p1014* + ID_MODEL_FROM_DATABASE=S90 + +usb:v0499p1015* + ID_MODEL_FROM_DATABASE=MOTIF-R + +usb:v0499p1016* + ID_MODEL_FROM_DATABASE=MDP-5 + +usb:v0499p1017* + ID_MODEL_FROM_DATABASE=CVP-204 + +usb:v0499p1018* + ID_MODEL_FROM_DATABASE=CVP-206 + +usb:v0499p1019* + ID_MODEL_FROM_DATABASE=CVP-208 + +usb:v0499p101A* + ID_MODEL_FROM_DATABASE=CVP-210 + +usb:v0499p101B* + ID_MODEL_FROM_DATABASE=PSR-1100 + +usb:v0499p101C* + ID_MODEL_FROM_DATABASE=PSR-2100 + +usb:v0499p101D* + ID_MODEL_FROM_DATABASE=CLP-175 + +usb:v0499p101E* + ID_MODEL_FROM_DATABASE=PSR-K1 + +usb:v0499p101F* + ID_MODEL_FROM_DATABASE=EZ-J24 + +usb:v0499p1020* + ID_MODEL_FROM_DATABASE=EZ-250i + +usb:v0499p1021* + ID_MODEL_FROM_DATABASE=MOTIF ES 6 + +usb:v0499p1022* + ID_MODEL_FROM_DATABASE=MOTIF ES 7 + +usb:v0499p1023* + ID_MODEL_FROM_DATABASE=MOTIF ES 8 + +usb:v0499p1024* + ID_MODEL_FROM_DATABASE=CVP-301 + +usb:v0499p1025* + ID_MODEL_FROM_DATABASE=CVP-303 + +usb:v0499p1026* + ID_MODEL_FROM_DATABASE=CVP-305 + +usb:v0499p1027* + ID_MODEL_FROM_DATABASE=CVP-307 + +usb:v0499p1028* + ID_MODEL_FROM_DATABASE=CVP-309 + +usb:v0499p1029* + ID_MODEL_FROM_DATABASE=CVP-309GP + +usb:v0499p102A* + ID_MODEL_FROM_DATABASE=PSR-1500 + +usb:v0499p102B* + ID_MODEL_FROM_DATABASE=PSR-3000 + +usb:v0499p102E* + ID_MODEL_FROM_DATABASE=ELS-01/01C + +usb:v0499p1030* + ID_MODEL_FROM_DATABASE=PSR-295/293 + +usb:v0499p1031* + ID_MODEL_FROM_DATABASE=DGX-205/203 + +usb:v0499p1032* + ID_MODEL_FROM_DATABASE=DGX-305 + +usb:v0499p1033* + ID_MODEL_FROM_DATABASE=DGX-505 + +usb:v0499p1037* + ID_MODEL_FROM_DATABASE=PSR-E403 + +usb:v0499p103C* + ID_MODEL_FROM_DATABASE=MOTIF-RACK ES + +usb:v0499p1054* + ID_MODEL_FROM_DATABASE=S90XS Keyboard/Music Synthesizer + +usb:v0499p2000* + ID_MODEL_FROM_DATABASE=DGP-7 + +usb:v0499p2001* + ID_MODEL_FROM_DATABASE=DGP-5 + +usb:v0499p3001* + ID_MODEL_FROM_DATABASE=YST-MS55D USB Speaker + +usb:v0499p3003* + ID_MODEL_FROM_DATABASE=YST-M45D USB Speaker + +usb:v0499p4000* + ID_MODEL_FROM_DATABASE=NetVolante RTA54i Broadband&ISDN Router + +usb:v0499p4001* + ID_MODEL_FROM_DATABASE=NetVolante RTW65b Broadband Wireless Router + +usb:v0499p4002* + ID_MODEL_FROM_DATABASE=NetVolante RTW65i Broadband&ISDN Wireless Router + +usb:v0499p4004* + ID_MODEL_FROM_DATABASE=NetVolante RTA55i Broadband VoIP Router + +usb:v0499p5000* + ID_MODEL_FROM_DATABASE=CS1D + +usb:v0499p5001* + ID_MODEL_FROM_DATABASE=DSP1D + +usb:v0499p5002* + ID_MODEL_FROM_DATABASE=DME32 + +usb:v0499p5003* + ID_MODEL_FROM_DATABASE=DM2000 + +usb:v0499p5004* + ID_MODEL_FROM_DATABASE=02R96 + +usb:v0499p5005* + ID_MODEL_FROM_DATABASE=ACU16-C + +usb:v0499p5006* + ID_MODEL_FROM_DATABASE=NHB32-C + +usb:v0499p5007* + ID_MODEL_FROM_DATABASE=DM1000 + +usb:v0499p5008* + ID_MODEL_FROM_DATABASE=01V96 + +usb:v0499p5009* + ID_MODEL_FROM_DATABASE=SPX2000 + +usb:v0499p500A* + ID_MODEL_FROM_DATABASE=PM5D + +usb:v0499p500B* + ID_MODEL_FROM_DATABASE=DME64N + +usb:v0499p500C* + ID_MODEL_FROM_DATABASE=DME24N + +usb:v0499p6001* + ID_MODEL_FROM_DATABASE=CRW2200UX Lightspeed 2 External CD-RW Drive + +usb:v0499p7000* + ID_MODEL_FROM_DATABASE=DTX + +usb:v0499p7010* + ID_MODEL_FROM_DATABASE=UB99 + +usb:v049A* + ID_VENDOR_FROM_DATABASE=Gandalf Technologies, Ltd + +usb:v049B* + ID_VENDOR_FROM_DATABASE=Curtis Computer Products + +usb:v049C* + ID_VENDOR_FROM_DATABASE=Acer Advanced Labs, Inc. + +usb:v049Cp0002* + ID_MODEL_FROM_DATABASE=Keyboard (???) + +usb:v049D* + ID_VENDOR_FROM_DATABASE=VLSI Technology + +usb:v049F* + ID_VENDOR_FROM_DATABASE=Compaq Computer Corp. + +usb:v049Fp0002* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v049Fp0003* + ID_MODEL_FROM_DATABASE=iPAQ PocketPC + +usb:v049Fp000E* + ID_MODEL_FROM_DATABASE=Internet Keyboard + +usb:v049Fp0012* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v049Fp0018* + ID_MODEL_FROM_DATABASE=PA-1/PA-2 MP3 Player + +usb:v049Fp0019* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v049Fp001A* + ID_MODEL_FROM_DATABASE=S4 100 Scanner + +usb:v049Fp001E* + ID_MODEL_FROM_DATABASE=IJ650 Inkjet Printer + +usb:v049Fp001F* + ID_MODEL_FROM_DATABASE=WL215 Adapter + +usb:v049Fp0021* + ID_MODEL_FROM_DATABASE=S200 Scanner + +usb:v049Fp0027* + ID_MODEL_FROM_DATABASE=Bluetooth Multiport Module by Compaq + +usb:v049Fp002A* + ID_MODEL_FROM_DATABASE=1400P Inkjet Printer + +usb:v049Fp002B* + ID_MODEL_FROM_DATABASE=A3000 + +usb:v049Fp002C* + ID_MODEL_FROM_DATABASE=Lexmark X125 + +usb:v049Fp0032* + ID_MODEL_FROM_DATABASE=802.11b Adapter [ipaq h5400] + +usb:v049Fp0033* + ID_MODEL_FROM_DATABASE=Wireless LAN MultiPort W100 [Intersil PRISM 2.5] + +usb:v049Fp0036* + ID_MODEL_FROM_DATABASE=Bluetooth Multiport Module + +usb:v049Fp0051* + ID_MODEL_FROM_DATABASE=KU-0133 Easy Access Interner Keyboard + +usb:v049Fp0076* + ID_MODEL_FROM_DATABASE=Wireless LAN MultiPort W200 + +usb:v049Fp0080* + ID_MODEL_FROM_DATABASE=GPRS Multiport + +usb:v049Fp0086* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v049Fp504A* + ID_MODEL_FROM_DATABASE=Personal Jukebox PJB100 + +usb:v049Fp505A* + ID_MODEL_FROM_DATABASE=Linux-USB "CDC Subset" Device, or Itsy (experimental) + +usb:v049Fp8511* + ID_MODEL_FROM_DATABASE=iPAQ Networking 10/100 Ethernet [pegasus2] + +usb:v04A0* + ID_VENDOR_FROM_DATABASE=Digital Equipment Corp. + +usb:v04A1* + ID_VENDOR_FROM_DATABASE=SystemSoft Corp. + +usb:v04A1pFFF0* + ID_MODEL_FROM_DATABASE=Telex Composite Device + +usb:v04A2* + ID_VENDOR_FROM_DATABASE=FirePower Systems + +usb:v04A3* + ID_VENDOR_FROM_DATABASE=Trident Microsystems, Inc. + +usb:v04A4* + ID_VENDOR_FROM_DATABASE=Hitachi, Ltd + +usb:v04A4p0004* + ID_MODEL_FROM_DATABASE=DVD-CAM DZ-MV100A Camcorder + +usb:v04A4p001E* + ID_MODEL_FROM_DATABASE=DVDCAM USB HS Interface + +usb:v04A5* + ID_VENDOR_FROM_DATABASE=Acer Peripherals Inc. (now BenQ Corp.) + +usb:v04A5p0001* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v04A5p0002* + ID_MODEL_FROM_DATABASE=API Ergo K/B + +usb:v04A5p0003* + ID_MODEL_FROM_DATABASE=API Generic K/B Mouse + +usb:v04A5p12A6* + ID_MODEL_FROM_DATABASE=AcerScan C310U + +usb:v04A5p1A20* + ID_MODEL_FROM_DATABASE=Prisa 310U + +usb:v04A5p1A2A* + ID_MODEL_FROM_DATABASE=Prisa 620U + +usb:v04A5p2022* + ID_MODEL_FROM_DATABASE=Prisa 320U/340U + +usb:v04A5p2040* + ID_MODEL_FROM_DATABASE=Prisa 620UT + +usb:v04A5p205E* + ID_MODEL_FROM_DATABASE=ScanPrisa 640BU + +usb:v04A5p2060* + ID_MODEL_FROM_DATABASE=Prisa 620U+/640U + +usb:v04A5p207E* + ID_MODEL_FROM_DATABASE=Prisa 640BU + +usb:v04A5p209E* + ID_MODEL_FROM_DATABASE=ScanPrisa 640BT + +usb:v04A5p20AE* + ID_MODEL_FROM_DATABASE=S2W 3000U + +usb:v04A5p20B0* + ID_MODEL_FROM_DATABASE=S2W 3300U/4300U + +usb:v04A5p20BE* + ID_MODEL_FROM_DATABASE=Prisa 640BT + +usb:v04A5p20C0* + ID_MODEL_FROM_DATABASE=Prisa 1240UT + +usb:v04A5p20DE* + ID_MODEL_FROM_DATABASE=S2W 4300U+ + +usb:v04A5p20F8* + ID_MODEL_FROM_DATABASE=Benq 5000 + +usb:v04A5p20FC* + ID_MODEL_FROM_DATABASE=Benq 5000 + +usb:v04A5p20FE* + ID_MODEL_FROM_DATABASE=SW2 5300U + +usb:v04A5p2137* + ID_MODEL_FROM_DATABASE=Benq 5150/5250 + +usb:v04A5p2202* + ID_MODEL_FROM_DATABASE=Benq 7400UT + +usb:v04A5p2311* + ID_MODEL_FROM_DATABASE=Benq 5560 + +usb:v04A5p3003* + ID_MODEL_FROM_DATABASE=Benq Webcam + +usb:v04A5p3008* + ID_MODEL_FROM_DATABASE=Benq 1500 + +usb:v04A5p300A* + ID_MODEL_FROM_DATABASE=Benq 3410 + +usb:v04A5p300C* + ID_MODEL_FROM_DATABASE=Benq 1016 + +usb:v04A5p3019* + ID_MODEL_FROM_DATABASE=Benq DC C40 + +usb:v04A5p4000* + ID_MODEL_FROM_DATABASE=P30 Composite Device + +usb:v04A5p4013* + ID_MODEL_FROM_DATABASE=BenQ-Siemens EF82/SL91 + +usb:v04A5p4044* + ID_MODEL_FROM_DATABASE=BenQ-Siemens SF71 + +usb:v04A5p4045* + ID_MODEL_FROM_DATABASE=BenQ-Siemens E81 + +usb:v04A5p4048* + ID_MODEL_FROM_DATABASE=BenQ M7 + +usb:v04A5p6001* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p6002* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p6003* + ID_MODEL_FROM_DATABASE=ATA/ATAPI Adapter + +usb:v04A5p6004* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p6005* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p6006* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p6007* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p6008* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p6009* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p600A* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p600B* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p600C* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p600D* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p600E* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p600F* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p6010* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p6011* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p6012* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p6013* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p6014* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p6015* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v04A5p6125* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v04A5p6180* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v04A5p6200* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v04A5p7500* + ID_MODEL_FROM_DATABASE=Hi-Speed Mass Storage Device + +usb:v04A5p9000* + ID_MODEL_FROM_DATABASE=AWL300 Wireless Adapter + +usb:v04A5p9001* + ID_MODEL_FROM_DATABASE=AWL400 Wireless Adapter + +usb:v04A5p9213* + ID_MODEL_FROM_DATABASE=Kbd Hub + +usb:v04A6* + ID_VENDOR_FROM_DATABASE=Nokia Display Products + +usb:v04A6p00B9* + ID_MODEL_FROM_DATABASE=Audio + +usb:v04A6p0180* + ID_MODEL_FROM_DATABASE=Hub Type P + +usb:v04A6p0181* + ID_MODEL_FROM_DATABASE=HID Monitor Controls + +usb:v04A7* + ID_VENDOR_FROM_DATABASE=Visioneer + +usb:v04A7p0100* + ID_MODEL_FROM_DATABASE=StrobePro + +usb:v04A7p0101* + ID_MODEL_FROM_DATABASE=Strobe Pro Scanner (1.01) + +usb:v04A7p0102* + ID_MODEL_FROM_DATABASE=StrobePro Scanner + +usb:v04A7p0211* + ID_MODEL_FROM_DATABASE=OneTouch 7600 Scanner + +usb:v04A7p0221* + ID_MODEL_FROM_DATABASE=OneTouch 5300 Scanner + +usb:v04A7p0223* + ID_MODEL_FROM_DATABASE=OneTouch 8200 + +usb:v04A7p0224* + ID_MODEL_FROM_DATABASE=OneTouch 4800 USB/Microtek Scanport 3000 + +usb:v04A7p0225* + ID_MODEL_FROM_DATABASE=VistaScan Astra 3600(ENG) + +usb:v04A7p0226* + ID_MODEL_FROM_DATABASE=OneTouch 5300 USB + +usb:v04A7p0229* + ID_MODEL_FROM_DATABASE=OneTouch 7100 + +usb:v04A7p022A* + ID_MODEL_FROM_DATABASE=OneTouch 6600 + +usb:v04A7p022C* + ID_MODEL_FROM_DATABASE=OneTouch 9000/9020 + +usb:v04A7p0231* + ID_MODEL_FROM_DATABASE=6100 Scanner + +usb:v04A7p0311* + ID_MODEL_FROM_DATABASE=6200 EPP/USB Scanner + +usb:v04A7p0321* + ID_MODEL_FROM_DATABASE=OneTouch 8100 EPP/USB Scanner + +usb:v04A7p0331* + ID_MODEL_FROM_DATABASE=OneTouch 8600 EPP/USB Scanner + +usb:v04A7p0341* + ID_MODEL_FROM_DATABASE=6400 + +usb:v04A7p0361* + ID_MODEL_FROM_DATABASE=VistaScan Astra 3600(ENG) + +usb:v04A7p0362* + ID_MODEL_FROM_DATABASE=OneTouch 9320 + +usb:v04A7p0371* + ID_MODEL_FROM_DATABASE=OneTouch 8700/8920 + +usb:v04A7p0380* + ID_MODEL_FROM_DATABASE=OneTouch 7700 + +usb:v04A7p0382* + ID_MODEL_FROM_DATABASE=Photo Port 7700 + +usb:v04A7p0390* + ID_MODEL_FROM_DATABASE=9650 + +usb:v04A7p03A0* + ID_MODEL_FROM_DATABASE=Xerox 4800 One Touch + +usb:v04A7p0410* + ID_MODEL_FROM_DATABASE=OneTouch Pro 8800/8820 + +usb:v04A7p0421* + ID_MODEL_FROM_DATABASE=9450 USB + +usb:v04A7p0423* + ID_MODEL_FROM_DATABASE=9750 Scanner + +usb:v04A7p0424* + ID_MODEL_FROM_DATABASE=Strobe XP 450 + +usb:v04A7p0425* + ID_MODEL_FROM_DATABASE=Strobe XP 100 + +usb:v04A7p0426* + ID_MODEL_FROM_DATABASE=Strobe XP 200 + +usb:v04A7p0427* + ID_MODEL_FROM_DATABASE=Strobe XP 100 + +usb:v04A7p0444* + ID_MODEL_FROM_DATABASE=OneTouch 7300 + +usb:v04A7p0445* + ID_MODEL_FROM_DATABASE=CardReader 100 + +usb:v04A7p0446* + ID_MODEL_FROM_DATABASE=Xerox DocuMate 510 + +usb:v04A7p0447* + ID_MODEL_FROM_DATABASE=XEROX DocuMate 520 + +usb:v04A7p0448* + ID_MODEL_FROM_DATABASE=XEROX DocuMate 250 + +usb:v04A7p0449* + ID_MODEL_FROM_DATABASE=Xerox DocuMate 252 + +usb:v04A7p044A* + ID_MODEL_FROM_DATABASE=Xerox 6400 + +usb:v04A7p044C* + ID_MODEL_FROM_DATABASE=Xerox DocuMate 262 + +usb:v04A7p0474* + ID_MODEL_FROM_DATABASE=Strobe XP 300 + +usb:v04A7p0475* + ID_MODEL_FROM_DATABASE=Xerox DocuMate 272 + +usb:v04A7p0478* + ID_MODEL_FROM_DATABASE=Strobe XP 220 + +usb:v04A7p0479* + ID_MODEL_FROM_DATABASE=Strobe XP 470 + +usb:v04A7p047A* + ID_MODEL_FROM_DATABASE=9450 + +usb:v04A7p047B* + ID_MODEL_FROM_DATABASE=9650 + +usb:v04A7p047D* + ID_MODEL_FROM_DATABASE=9420 + +usb:v04A7p0480* + ID_MODEL_FROM_DATABASE=9520 + +usb:v04A7p048F* + ID_MODEL_FROM_DATABASE=Strobe XP 470 + +usb:v04A7p0491* + ID_MODEL_FROM_DATABASE=Strobe XP 450 + +usb:v04A7p0493* + ID_MODEL_FROM_DATABASE=9750 + +usb:v04A7p0494* + ID_MODEL_FROM_DATABASE=Strobe XP 120 + +usb:v04A7p0497* + ID_MODEL_FROM_DATABASE=Patriot 430 + +usb:v04A7p0498* + ID_MODEL_FROM_DATABASE=Patriot 680 + +usb:v04A7p0499* + ID_MODEL_FROM_DATABASE=Patriot 780 + +usb:v04A7p049B* + ID_MODEL_FROM_DATABASE=Strobe XP 100 + +usb:v04A7p04A0* + ID_MODEL_FROM_DATABASE=7400 + +usb:v04A7p04AC* + ID_MODEL_FROM_DATABASE=Xerox Travel Scanner 100 + +usb:v04A8* + ID_VENDOR_FROM_DATABASE=Multivideo Labs, Inc. + +usb:v04A8p0101* + ID_MODEL_FROM_DATABASE=Hub + +usb:v04A8p0303* + ID_MODEL_FROM_DATABASE=Peripheral Switch + +usb:v04A8p0404* + ID_MODEL_FROM_DATABASE=Peripheral Switch + +usb:v04A9* + ID_VENDOR_FROM_DATABASE=Canon, Inc. + +usb:v04A9p1005* + ID_MODEL_FROM_DATABASE=BJ Printer Hub + +usb:v04A9p1035* + ID_MODEL_FROM_DATABASE=PD Printer Storage + +usb:v04A9p1050* + ID_MODEL_FROM_DATABASE=BJC-8200 + +usb:v04A9p1051* + ID_MODEL_FROM_DATABASE=BJC-3000 Color Printer + +usb:v04A9p1052* + ID_MODEL_FROM_DATABASE=BJC-6100 + +usb:v04A9p1053* + ID_MODEL_FROM_DATABASE=BJC-6200 + +usb:v04A9p1054* + ID_MODEL_FROM_DATABASE=BJC-6500 + +usb:v04A9p1055* + ID_MODEL_FROM_DATABASE=BJC-85 + +usb:v04A9p1056* + ID_MODEL_FROM_DATABASE=BJC-2110 Color Printer + +usb:v04A9p1057* + ID_MODEL_FROM_DATABASE=LR1 + +usb:v04A9p105A* + ID_MODEL_FROM_DATABASE=BJC-55 + +usb:v04A9p105B* + ID_MODEL_FROM_DATABASE=S600 Printer + +usb:v04A9p105C* + ID_MODEL_FROM_DATABASE=S400 + +usb:v04A9p105D* + ID_MODEL_FROM_DATABASE=S450 Printer + +usb:v04A9p105E* + ID_MODEL_FROM_DATABASE=S800 + +usb:v04A9p1062* + ID_MODEL_FROM_DATABASE=S500 Printer + +usb:v04A9p1063* + ID_MODEL_FROM_DATABASE=S4500 + +usb:v04A9p1064* + ID_MODEL_FROM_DATABASE=S300 Printer + +usb:v04A9p1065* + ID_MODEL_FROM_DATABASE=S100 + +usb:v04A9p1066* + ID_MODEL_FROM_DATABASE=S630 + +usb:v04A9p1067* + ID_MODEL_FROM_DATABASE=S900 + +usb:v04A9p1068* + ID_MODEL_FROM_DATABASE=S9000 + +usb:v04A9p1069* + ID_MODEL_FROM_DATABASE=S820 + +usb:v04A9p106A* + ID_MODEL_FROM_DATABASE=S200 Printer + +usb:v04A9p106B* + ID_MODEL_FROM_DATABASE=S520 Printer + +usb:v04A9p106D* + ID_MODEL_FROM_DATABASE=S750 Printer + +usb:v04A9p106E* + ID_MODEL_FROM_DATABASE=S820D + +usb:v04A9p1070* + ID_MODEL_FROM_DATABASE=S530D + +usb:v04A9p1072* + ID_MODEL_FROM_DATABASE=I850 Printer + +usb:v04A9p1073* + ID_MODEL_FROM_DATABASE=I550 Printer + +usb:v04A9p1074* + ID_MODEL_FROM_DATABASE=S330 Printer + +usb:v04A9p1076* + ID_MODEL_FROM_DATABASE=i70 + +usb:v04A9p1077* + ID_MODEL_FROM_DATABASE=i950 + +usb:v04A9p107A* + ID_MODEL_FROM_DATABASE=S830D + +usb:v04A9p107B* + ID_MODEL_FROM_DATABASE=i320 + +usb:v04A9p107C* + ID_MODEL_FROM_DATABASE=i470D + +usb:v04A9p107D* + ID_MODEL_FROM_DATABASE=i9100 + +usb:v04A9p107E* + ID_MODEL_FROM_DATABASE=i450 + +usb:v04A9p107F* + ID_MODEL_FROM_DATABASE=i860 + +usb:v04A9p1082* + ID_MODEL_FROM_DATABASE=i350 + +usb:v04A9p1084* + ID_MODEL_FROM_DATABASE=i250 + +usb:v04A9p1085* + ID_MODEL_FROM_DATABASE=i255 + +usb:v04A9p1086* + ID_MODEL_FROM_DATABASE=i560 + +usb:v04A9p1088* + ID_MODEL_FROM_DATABASE=i965 + +usb:v04A9p108A* + ID_MODEL_FROM_DATABASE=i455 + +usb:v04A9p108B* + ID_MODEL_FROM_DATABASE=i900D + +usb:v04A9p108C* + ID_MODEL_FROM_DATABASE=i475D + +usb:v04A9p108D* + ID_MODEL_FROM_DATABASE=PIXMA iP2000 + +usb:v04A9p108F* + ID_MODEL_FROM_DATABASE=i80 + +usb:v04A9p1090* + ID_MODEL_FROM_DATABASE=i9900 Photo Printer + +usb:v04A9p1091* + ID_MODEL_FROM_DATABASE=PIXMA iP1500 + +usb:v04A9p1093* + ID_MODEL_FROM_DATABASE=PIXMA iP4000 + +usb:v04A9p1094* + ID_MODEL_FROM_DATABASE=PIXMA iP3000x Printer + +usb:v04A9p1095* + ID_MODEL_FROM_DATABASE=PIXMA iP6000D + +usb:v04A9p1097* + ID_MODEL_FROM_DATABASE=PIXMA iP5000 + +usb:v04A9p1098* + ID_MODEL_FROM_DATABASE=PIXMA iP1000 + +usb:v04A9p1099* + ID_MODEL_FROM_DATABASE=PIXMA iP8500 + +usb:v04A9p109C* + ID_MODEL_FROM_DATABASE=PIXMA iP4000R + +usb:v04A9p109D* + ID_MODEL_FROM_DATABASE=iP90 + +usb:v04A9p10A0* + ID_MODEL_FROM_DATABASE=PIXMA iP1600 Printer + +usb:v04A9p10A2* + ID_MODEL_FROM_DATABASE=iP4200 + +usb:v04A9p10A4* + ID_MODEL_FROM_DATABASE=iP5200R + +usb:v04A9p10A5* + ID_MODEL_FROM_DATABASE=iP5200 + +usb:v04A9p10A7* + ID_MODEL_FROM_DATABASE=iP6210D + +usb:v04A9p10A8* + ID_MODEL_FROM_DATABASE=iP6220D + +usb:v04A9p10A9* + ID_MODEL_FROM_DATABASE=iP6600D + +usb:v04A9p10B6* + ID_MODEL_FROM_DATABASE=PIXMA iP4300 Printer + +usb:v04A9p10C2* + ID_MODEL_FROM_DATABASE=PIXMA iP1800 Printer + +usb:v04A9p10C4* + ID_MODEL_FROM_DATABASE=Pixma iP4500 Printer + +usb:v04A9p1404* + ID_MODEL_FROM_DATABASE=W6400PG + +usb:v04A9p1405* + ID_MODEL_FROM_DATABASE=W8400PG + +usb:v04A9p150F* + ID_MODEL_FROM_DATABASE=BIJ2350 PCL + +usb:v04A9p1510* + ID_MODEL_FROM_DATABASE=BIJ1350 PCL + +usb:v04A9p1512* + ID_MODEL_FROM_DATABASE=BIJ1350D PCL + +usb:v04A9p1601* + ID_MODEL_FROM_DATABASE=DR-2080C Scanner + +usb:v04A9p1607* + ID_MODEL_FROM_DATABASE=DR-6080 Scanner + +usb:v04A9p1700* + ID_MODEL_FROM_DATABASE=PIXMA MP110 Scanner + +usb:v04A9p1701* + ID_MODEL_FROM_DATABASE=PIXMA MP130 Scanner + +usb:v04A9p1702* + ID_MODEL_FROM_DATABASE=MP410 Composite + +usb:v04A9p1703* + ID_MODEL_FROM_DATABASE=MP430 Composite + +usb:v04A9p1704* + ID_MODEL_FROM_DATABASE=MP330 Composite + +usb:v04A9p1706* + ID_MODEL_FROM_DATABASE=PIXMA MP750 Scanner + +usb:v04A9p1707* + ID_MODEL_FROM_DATABASE=PIXMA MP780 Scanner + +usb:v04A9p1708* + ID_MODEL_FROM_DATABASE=PIXMA MP760 Scanner + +usb:v04A9p1709* + ID_MODEL_FROM_DATABASE=PIXMA MP150 Scanner + +usb:v04A9p170A* + ID_MODEL_FROM_DATABASE=PIXMA MP170 Scanner + +usb:v04A9p170B* + ID_MODEL_FROM_DATABASE=PIXMA MP450 Scanner + +usb:v04A9p170C* + ID_MODEL_FROM_DATABASE=PIXMA MP500 Scanner + +usb:v04A9p170D* + ID_MODEL_FROM_DATABASE=PIXMA MP800 Scanner + +usb:v04A9p170E* + ID_MODEL_FROM_DATABASE=MP800R + +usb:v04A9p1710* + ID_MODEL_FROM_DATABASE=MP950 + +usb:v04A9p1712* + ID_MODEL_FROM_DATABASE=MP530 + +usb:v04A9p1713* + ID_MODEL_FROM_DATABASE=PIXMA MP830 Scanner + +usb:v04A9p1714* + ID_MODEL_FROM_DATABASE=MP160 + +usb:v04A9p1715* + ID_MODEL_FROM_DATABASE=MP180 Storage + +usb:v04A9p1716* + ID_MODEL_FROM_DATABASE=MP460 Composite + +usb:v04A9p1717* + ID_MODEL_FROM_DATABASE=MP510 + +usb:v04A9p1718* + ID_MODEL_FROM_DATABASE=MP600 Storage + +usb:v04A9p171A* + ID_MODEL_FROM_DATABASE=MP810 Storage + +usb:v04A9p171B* + ID_MODEL_FROM_DATABASE=MP960 + +usb:v04A9p1721* + ID_MODEL_FROM_DATABASE=MP210 ser + +usb:v04A9p1723* + ID_MODEL_FROM_DATABASE=MP470 ser + +usb:v04A9p1725* + ID_MODEL_FROM_DATABASE=MP610 ser + +usb:v04A9p1726* + ID_MODEL_FROM_DATABASE=MP970 ser + +usb:v04A9p1727* + ID_MODEL_FROM_DATABASE=MX300 ser + +usb:v04A9p1728* + ID_MODEL_FROM_DATABASE=MX310 ser + +usb:v04A9p1729* + ID_MODEL_FROM_DATABASE=MX700 ser + +usb:v04A9p172B* + ID_MODEL_FROM_DATABASE=MP140 ser + +usb:v04A9p173E* + ID_MODEL_FROM_DATABASE=MP560 + +usb:v04A9p173F* + ID_MODEL_FROM_DATABASE=Pixma MP640 Multifunction device + +usb:v04A9p1748* + ID_MODEL_FROM_DATABASE=Pixma MG5150 + +usb:v04A9p174D* + ID_MODEL_FROM_DATABASE=MX360 ser + +usb:v04A9p1900* + ID_MODEL_FROM_DATABASE=CanoScan LiDE 90 + +usb:v04A9p1901* + ID_MODEL_FROM_DATABASE=CanoScan 8800F + +usb:v04A9p1904* + ID_MODEL_FROM_DATABASE=CanoScan LiDE 100 + +usb:v04A9p1905* + ID_MODEL_FROM_DATABASE=CanoScan LiDE 200 + +usb:v04A9p1906* + ID_MODEL_FROM_DATABASE=CanoScan 5600F + +usb:v04A9p1907* + ID_MODEL_FROM_DATABASE=CanoScan LiDE 700F + +usb:v04A9p1909* + ID_MODEL_FROM_DATABASE=CanoScan LiDE 110 + +usb:v04A9p190A* + ID_MODEL_FROM_DATABASE=CanoScan LiDE 210 + +usb:v04A9p2200* + ID_MODEL_FROM_DATABASE=CanoScan LiDE 25 + +usb:v04A9p2201* + ID_MODEL_FROM_DATABASE=CanoScan FB320U + +usb:v04A9p2202* + ID_MODEL_FROM_DATABASE=CanoScan FB620U + +usb:v04A9p2204* + ID_MODEL_FROM_DATABASE=CanoScan FB630U + +usb:v04A9p2205* + ID_MODEL_FROM_DATABASE=CanoScan FB1210U + +usb:v04A9p2206* + ID_MODEL_FROM_DATABASE=CanoScan N650U/N656U + +usb:v04A9p2207* + ID_MODEL_FROM_DATABASE=CanoScan 1220U + +usb:v04A9p2208* + ID_MODEL_FROM_DATABASE=CanoScan D660U + +usb:v04A9p220A* + ID_MODEL_FROM_DATABASE=CanoScan D2400UF + +usb:v04A9p220B* + ID_MODEL_FROM_DATABASE=CanoScan D646U + +usb:v04A9p220C* + ID_MODEL_FROM_DATABASE=CanoScan D1250U2 + +usb:v04A9p220D* + ID_MODEL_FROM_DATABASE=CanoScan N670U/N676U/LiDE 20 + +usb:v04A9p220E* + ID_MODEL_FROM_DATABASE=CanoScan N1240U/LiDE 30 + +usb:v04A9p220F* + ID_MODEL_FROM_DATABASE=CanoScan 8000F + +usb:v04A9p2210* + ID_MODEL_FROM_DATABASE=CanoScan 9900F + +usb:v04A9p2212* + ID_MODEL_FROM_DATABASE=CanoScan 5000F + +usb:v04A9p2213* + ID_MODEL_FROM_DATABASE=CanoScan LiDE 50/LiDE 35/LiDE 40 + +usb:v04A9p2214* + ID_MODEL_FROM_DATABASE=CanoScan LiDE 80 + +usb:v04A9p2215* + ID_MODEL_FROM_DATABASE=CanoScan 3000/3000F/3000ex + +usb:v04A9p2216* + ID_MODEL_FROM_DATABASE=CanoScan 3200F + +usb:v04A9p2217* + ID_MODEL_FROM_DATABASE=CanoScan 5200F + +usb:v04A9p2219* + ID_MODEL_FROM_DATABASE=CanoScan 9950F + +usb:v04A9p221B* + ID_MODEL_FROM_DATABASE=CanoScan 4200F + +usb:v04A9p221C* + ID_MODEL_FROM_DATABASE=CanoScan LiDE 60 + +usb:v04A9p221E* + ID_MODEL_FROM_DATABASE=CanoScan 8400F + +usb:v04A9p221F* + ID_MODEL_FROM_DATABASE=CanoScan LiDE 500F + +usb:v04A9p2220* + ID_MODEL_FROM_DATABASE=CanoScan LIDE 25 + +usb:v04A9p2224* + ID_MODEL_FROM_DATABASE=CanoScan LiDE 600F + +usb:v04A9p2225* + ID_MODEL_FROM_DATABASE=CanoScan LiDE 70 + +usb:v04A9p2228* + ID_MODEL_FROM_DATABASE=CanoScan 4400F + +usb:v04A9p2602* + ID_MODEL_FROM_DATABASE=MultiPASS C555 + +usb:v04A9p2603* + ID_MODEL_FROM_DATABASE=MultiPASS C755 + +usb:v04A9p260A* + ID_MODEL_FROM_DATABASE=CAPT Printer + +usb:v04A9p260E* + ID_MODEL_FROM_DATABASE=LBP-2000 + +usb:v04A9p2610* + ID_MODEL_FROM_DATABASE=MPC600F + +usb:v04A9p2611* + ID_MODEL_FROM_DATABASE=SmartBase MPC400 + +usb:v04A9p2612* + ID_MODEL_FROM_DATABASE=MultiPASS C855 + +usb:v04A9p2617* + ID_MODEL_FROM_DATABASE=CAPT Printer + +usb:v04A9p261A* + ID_MODEL_FROM_DATABASE=iR1600 + +usb:v04A9p261B* + ID_MODEL_FROM_DATABASE=iR1610 + +usb:v04A9p261C* + ID_MODEL_FROM_DATABASE=iC2300 + +usb:v04A9p261F* + ID_MODEL_FROM_DATABASE=MPC200 Printer + +usb:v04A9p2621* + ID_MODEL_FROM_DATABASE=iR2000 + +usb:v04A9p2622* + ID_MODEL_FROM_DATABASE=iR2010 + +usb:v04A9p2623* + ID_MODEL_FROM_DATABASE=FAX-B180C + +usb:v04A9p2629* + ID_MODEL_FROM_DATABASE=FAXPHONE L75 + +usb:v04A9p262B* + ID_MODEL_FROM_DATABASE=LaserShot LBP-1120 Printer + +usb:v04A9p262D* + ID_MODEL_FROM_DATABASE=iR C3200 + +usb:v04A9p262F* + ID_MODEL_FROM_DATABASE=MultiPASS MP730 + +usb:v04A9p2630* + ID_MODEL_FROM_DATABASE=MultiPASS MP700 + +usb:v04A9p2631* + ID_MODEL_FROM_DATABASE=LASER CLASS 700 + +usb:v04A9p2632* + ID_MODEL_FROM_DATABASE=FAX-L2000 + +usb:v04A9p2635* + ID_MODEL_FROM_DATABASE=MPC190 + +usb:v04A9p2637* + ID_MODEL_FROM_DATABASE=iR C6800 + +usb:v04A9p2638* + ID_MODEL_FROM_DATABASE=iR C3100 + +usb:v04A9p263C* + ID_MODEL_FROM_DATABASE=Smartbase MP360 + +usb:v04A9p263D* + ID_MODEL_FROM_DATABASE=MP370 + +usb:v04A9p263E* + ID_MODEL_FROM_DATABASE=MP390 FAX + +usb:v04A9p263F* + ID_MODEL_FROM_DATABASE=MP375 + +usb:v04A9p2646* + ID_MODEL_FROM_DATABASE=MF5530 Scanner Device V1.9.1 + +usb:v04A9p2647* + ID_MODEL_FROM_DATABASE=MF5550 Composite + +usb:v04A9p264D* + ID_MODEL_FROM_DATABASE=PIXMA MP710 + +usb:v04A9p264E* + ID_MODEL_FROM_DATABASE=MF5630 + +usb:v04A9p264F* + ID_MODEL_FROM_DATABASE=MF5650 (FAX) + +usb:v04A9p2650* + ID_MODEL_FROM_DATABASE=iR 6800C EUR + +usb:v04A9p2651* + ID_MODEL_FROM_DATABASE=iR 3100C EUR + +usb:v04A9p2655* + ID_MODEL_FROM_DATABASE=FP-L170/MF350/L380/L398 + +usb:v04A9p2659* + ID_MODEL_FROM_DATABASE=MF8100 + +usb:v04A9p265B* + ID_MODEL_FROM_DATABASE=CAPT Printer + +usb:v04A9p265C* + ID_MODEL_FROM_DATABASE=iR C3220 + +usb:v04A9p265D* + ID_MODEL_FROM_DATABASE=MF5730 + +usb:v04A9p265E* + ID_MODEL_FROM_DATABASE=MF5750 + +usb:v04A9p265F* + ID_MODEL_FROM_DATABASE=MF5770 + +usb:v04A9p2660* + ID_MODEL_FROM_DATABASE=MF3110 + +usb:v04A9p2663* + ID_MODEL_FROM_DATABASE=iR3570/iR4570 + +usb:v04A9p2664* + ID_MODEL_FROM_DATABASE=iR2270/iR2870 + +usb:v04A9p2665* + ID_MODEL_FROM_DATABASE=iR C2620 + +usb:v04A9p2666* + ID_MODEL_FROM_DATABASE=iR C5800 + +usb:v04A9p2667* + ID_MODEL_FROM_DATABASE=iR85PLUS + +usb:v04A9p2669* + ID_MODEL_FROM_DATABASE=iR105PLUS + +usb:v04A9p266A* + ID_MODEL_FROM_DATABASE=CAPT Device + +usb:v04A9p266B* + ID_MODEL_FROM_DATABASE=iR8070 + +usb:v04A9p266C* + ID_MODEL_FROM_DATABASE=iR9070 + +usb:v04A9p266D* + ID_MODEL_FROM_DATABASE=iR 5800C EUR + +usb:v04A9p266E* + ID_MODEL_FROM_DATABASE=CAPT Device + +usb:v04A9p266F* + ID_MODEL_FROM_DATABASE=iR2230 + +usb:v04A9p2670* + ID_MODEL_FROM_DATABASE=iR3530 + +usb:v04A9p2671* + ID_MODEL_FROM_DATABASE=iR5570/iR6570 + +usb:v04A9p2672* + ID_MODEL_FROM_DATABASE=iR C3170 + +usb:v04A9p2673* + ID_MODEL_FROM_DATABASE=iR 3170C EUR + +usb:v04A9p2674* + ID_MODEL_FROM_DATABASE=L120 + +usb:v04A9p2675* + ID_MODEL_FROM_DATABASE=iR2830 + +usb:v04A9p2676* + ID_MODEL_FROM_DATABASE=CAPT Device + +usb:v04A9p2677* + ID_MODEL_FROM_DATABASE=iR C2570 + +usb:v04A9p2678* + ID_MODEL_FROM_DATABASE=iR 2570C EUR + +usb:v04A9p2679* + ID_MODEL_FROM_DATABASE=CAPT Device + +usb:v04A9p267A* + ID_MODEL_FROM_DATABASE=iR2016 + +usb:v04A9p267B* + ID_MODEL_FROM_DATABASE=iR2020 + +usb:v04A9p267D* + ID_MODEL_FROM_DATABASE=MF7100 series + +usb:v04A9p2684* + ID_MODEL_FROM_DATABASE=MF3200 series + +usb:v04A9p2686* + ID_MODEL_FROM_DATABASE=MF6500 series + +usb:v04A9p2687* + ID_MODEL_FROM_DATABASE=iR4530 + +usb:v04A9p2688* + ID_MODEL_FROM_DATABASE=LBP3460 + +usb:v04A9p268C* + ID_MODEL_FROM_DATABASE=iR C6870 + +usb:v04A9p268D* + ID_MODEL_FROM_DATABASE=iR 6870C EUR + +usb:v04A9p268E* + ID_MODEL_FROM_DATABASE=iR C5870 + +usb:v04A9p268F* + ID_MODEL_FROM_DATABASE=iR 5870C EUR + +usb:v04A9p2691* + ID_MODEL_FROM_DATABASE=iR7105 + +usb:v04A9p26A3* + ID_MODEL_FROM_DATABASE=MF4100 series + +usb:v04A9p26B0* + ID_MODEL_FROM_DATABASE=MF4600 series + +usb:v04A9p26B4* + ID_MODEL_FROM_DATABASE=MF4010 series + +usb:v04A9p26B5* + ID_MODEL_FROM_DATABASE=MF4200 series + +usb:v04A9p26DA* + ID_MODEL_FROM_DATABASE=LBP3010B printer + +usb:v04A9p26E6* + ID_MODEL_FROM_DATABASE=iR1024 + +usb:v04A9p2737* + ID_MODEL_FROM_DATABASE=MF4410 + +usb:v04A9p3041* + ID_MODEL_FROM_DATABASE=PowerShot S10 + +usb:v04A9p3042* + ID_MODEL_FROM_DATABASE=CanoScan FS4000US Film Scanner + +usb:v04A9p3043* + ID_MODEL_FROM_DATABASE=PowerShot S20 + +usb:v04A9p3044* + ID_MODEL_FROM_DATABASE=EOS D30 + +usb:v04A9p3045* + ID_MODEL_FROM_DATABASE=PowerShot S100 + +usb:v04A9p3046* + ID_MODEL_FROM_DATABASE=IXY Digital + +usb:v04A9p3047* + ID_MODEL_FROM_DATABASE=Digital IXUS + +usb:v04A9p3048* + ID_MODEL_FROM_DATABASE=PowerShot G1 + +usb:v04A9p3049* + ID_MODEL_FROM_DATABASE=PowerShot Pro90 IS + +usb:v04A9p304A* + ID_MODEL_FROM_DATABASE=CP-10 + +usb:v04A9p304B* + ID_MODEL_FROM_DATABASE=IXY Digital 300 + +usb:v04A9p304C* + ID_MODEL_FROM_DATABASE=PowerShot S300 + +usb:v04A9p304D* + ID_MODEL_FROM_DATABASE=Digital IXUS 300 + +usb:v04A9p304E* + ID_MODEL_FROM_DATABASE=PowerShot A20 + +usb:v04A9p304F* + ID_MODEL_FROM_DATABASE=PowerShot A10 + +usb:v04A9p3050* + ID_MODEL_FROM_DATABASE=PowerShot unknown 1 + +usb:v04A9p3051* + ID_MODEL_FROM_DATABASE=PowerShot S110 + +usb:v04A9p3052* + ID_MODEL_FROM_DATABASE=Digital IXUS V + +usb:v04A9p3055* + ID_MODEL_FROM_DATABASE=PowerShot G2 + +usb:v04A9p3056* + ID_MODEL_FROM_DATABASE=PowerShot S40 + +usb:v04A9p3057* + ID_MODEL_FROM_DATABASE=PowerShot S30 + +usb:v04A9p3058* + ID_MODEL_FROM_DATABASE=PowerShot A40 + +usb:v04A9p3059* + ID_MODEL_FROM_DATABASE=PowerShot A30 + +usb:v04A9p305B* + ID_MODEL_FROM_DATABASE=ZR45MC Digital Camcorder + +usb:v04A9p305C* + ID_MODEL_FROM_DATABASE=PowerShot unknown 2 + +usb:v04A9p3060* + ID_MODEL_FROM_DATABASE=EOS D60 + +usb:v04A9p3061* + ID_MODEL_FROM_DATABASE=PowerShot A100 + +usb:v04A9p3062* + ID_MODEL_FROM_DATABASE=PowerShot A200 + +usb:v04A9p3063* + ID_MODEL_FROM_DATABASE=CP-100 + +usb:v04A9p3065* + ID_MODEL_FROM_DATABASE=PowerShot S200 + +usb:v04A9p3066* + ID_MODEL_FROM_DATABASE=Digital IXUS 330 + +usb:v04A9p3067* + ID_MODEL_FROM_DATABASE=MV550i Digital Video Camera + +usb:v04A9p3069* + ID_MODEL_FROM_DATABASE=PowerShot G3 + +usb:v04A9p306A* + ID_MODEL_FROM_DATABASE=Digital unknown 3 + +usb:v04A9p306B* + ID_MODEL_FROM_DATABASE=MVX2i Digital Video Camera + +usb:v04A9p306C* + ID_MODEL_FROM_DATABASE=PowerShot S45 + +usb:v04A9p306D* + ID_MODEL_FROM_DATABASE=PowerShot S45 PtP Mode + +usb:v04A9p306E* + ID_MODEL_FROM_DATABASE=PowerShot G3 (normal mode) + +usb:v04A9p306F* + ID_MODEL_FROM_DATABASE=PowerShot G3 (ptp) + +usb:v04A9p3070* + ID_MODEL_FROM_DATABASE=PowerShot S230 + +usb:v04A9p3071* + ID_MODEL_FROM_DATABASE=PowerShot S230 (ptp) + +usb:v04A9p3072* + ID_MODEL_FROM_DATABASE=PowerShot SD100 / Digital IXUS II (ptp) + +usb:v04A9p3073* + ID_MODEL_FROM_DATABASE=PowerShot A70 (ptp) + +usb:v04A9p3074* + ID_MODEL_FROM_DATABASE=PowerShot A60 (ptp) + +usb:v04A9p3075* + ID_MODEL_FROM_DATABASE=IXUS 400 Camera + +usb:v04A9p3076* + ID_MODEL_FROM_DATABASE=PowerShot A300 + +usb:v04A9p3077* + ID_MODEL_FROM_DATABASE=PowerShot S50 + +usb:v04A9p3078* + ID_MODEL_FROM_DATABASE=ZR70MC Digital Camcorder + +usb:v04A9p307A* + ID_MODEL_FROM_DATABASE=MV650i (normal mode) + +usb:v04A9p307B* + ID_MODEL_FROM_DATABASE=MV630i Digital Video Camera + +usb:v04A9p307C* + ID_MODEL_FROM_DATABASE=CP-200 + +usb:v04A9p307D* + ID_MODEL_FROM_DATABASE=CP-300 + +usb:v04A9p307F* + ID_MODEL_FROM_DATABASE=Optura 20 + +usb:v04A9p3080* + ID_MODEL_FROM_DATABASE=MVX150i (normal mode) / Optura 20 (normal mode) + +usb:v04A9p3081* + ID_MODEL_FROM_DATABASE=Optura 10 + +usb:v04A9p3082* + ID_MODEL_FROM_DATABASE=MVX100i / Optura 10 + +usb:v04A9p3083* + ID_MODEL_FROM_DATABASE=EOS 10D + +usb:v04A9p3084* + ID_MODEL_FROM_DATABASE=EOS 300D / EOS Digital Rebel + +usb:v04A9p3085* + ID_MODEL_FROM_DATABASE=PowerShot G5 + +usb:v04A9p3087* + ID_MODEL_FROM_DATABASE=Elura 50 (PTP mode) + +usb:v04A9p3088* + ID_MODEL_FROM_DATABASE=Elura 50 (normal mode) + +usb:v04A9p308D* + ID_MODEL_FROM_DATABASE=MVX3i + +usb:v04A9p308E* + ID_MODEL_FROM_DATABASE=FV M1 (normal mode) / MVX 3i (normal mode) / Optura Xi (normal mode) + +usb:v04A9p3093* + ID_MODEL_FROM_DATABASE=Optura 300 + +usb:v04A9p3096* + ID_MODEL_FROM_DATABASE=IXY DV M2 (normal mode) / MVX 10i (normal mode) + +usb:v04A9p3099* + ID_MODEL_FROM_DATABASE=EOS 300D (ptp) + +usb:v04A9p309A* + ID_MODEL_FROM_DATABASE=PowerShot A80 + +usb:v04A9p309B* + ID_MODEL_FROM_DATABASE=Digital IXUS (ptp) + +usb:v04A9p309C* + ID_MODEL_FROM_DATABASE=PowerShot S1 IS + +usb:v04A9p309D* + ID_MODEL_FROM_DATABASE=Powershot Pro 1 + +usb:v04A9p309F* + ID_MODEL_FROM_DATABASE=Camera + +usb:v04A9p30A0* + ID_MODEL_FROM_DATABASE=Camera + +usb:v04A9p30A1* + ID_MODEL_FROM_DATABASE=Camera + +usb:v04A9p30A2* + ID_MODEL_FROM_DATABASE=Camera + +usb:v04A9p30A8* + ID_MODEL_FROM_DATABASE=Elura 60E/Optura 40 (ptp) + +usb:v04A9p30A9* + ID_MODEL_FROM_DATABASE=MVX25i (normal mode) / Optura 40 (normal mode) + +usb:v04A9p30B1* + ID_MODEL_FROM_DATABASE=PowerShot S70 (normal mode) / PowerShot S70 (PTP mode) + +usb:v04A9p30B2* + ID_MODEL_FROM_DATABASE=PowerShot S60 (normal mode) / PowerShot S60 (PTP mode) + +usb:v04A9p30B3* + ID_MODEL_FROM_DATABASE=PowerShot G6 (normal mode) / PowerShot G6 (PTP mode) + +usb:v04A9p30B4* + ID_MODEL_FROM_DATABASE=PowerShot S500 + +usb:v04A9p30B5* + ID_MODEL_FROM_DATABASE=PowerShot A75 + +usb:v04A9p30B6* + ID_MODEL_FROM_DATABASE=Digital IXUS II2 / Digital IXUS II2 (PTP mode) / PowerShot SD110 (PTP mode) / PowerShot SD110 Digital ELPH + +usb:v04A9p30B7* + ID_MODEL_FROM_DATABASE=PowerShot A400 / PowerShot A400 (PTP mode) + +usb:v04A9p30B8* + ID_MODEL_FROM_DATABASE=PowerShot A310 / PowerShot A310 (PTP mode) + +usb:v04A9p30B9* + ID_MODEL_FROM_DATABASE=Powershot A85 + +usb:v04A9p30BA* + ID_MODEL_FROM_DATABASE=PowerShot S410 Digital Elph + +usb:v04A9p30BB* + ID_MODEL_FROM_DATABASE=PowerShot A95 + +usb:v04A9p30BD* + ID_MODEL_FROM_DATABASE=CP-220 + +usb:v04A9p30BE* + ID_MODEL_FROM_DATABASE=CP-330 + +usb:v04A9p30BF* + ID_MODEL_FROM_DATABASE=Digital IXUS 40 + +usb:v04A9p30C0* + ID_MODEL_FROM_DATABASE=Digital IXUS 30 (PTP mode) / PowerShot SD200 (PTP mode) + +usb:v04A9p30C1* + ID_MODEL_FROM_DATABASE=Digital IXUS 50 (normal mode) / IXY Digital 55 (normal mode) / PowerShot A520 (PTP mode) / PowerShot SD400 (normal mode) + +usb:v04A9p30C2* + ID_MODEL_FROM_DATABASE=PowerShot A510 (normal mode) / PowerShot A510 (PTP mode) + +usb:v04A9p30C4* + ID_MODEL_FROM_DATABASE=Digital IXUS i5 (normal mode) / IXY Digital L2 (normal mode) / PowerShot SD20 (normal mode) + +usb:v04A9p30EA* + ID_MODEL_FROM_DATABASE=EOS 1D Mark II (PTP mode) + +usb:v04A9p30EB* + ID_MODEL_FROM_DATABASE=EOS 20D + +usb:v04A9p30EC* + ID_MODEL_FROM_DATABASE=EOS 20D (ptp) + +usb:v04A9p30EE* + ID_MODEL_FROM_DATABASE=EOS 350D + +usb:v04A9p30EF* + ID_MODEL_FROM_DATABASE=EOS 350D (ptp) + +usb:v04A9p30F0* + ID_MODEL_FROM_DATABASE=PowerShot S2 IS (PTP mode) + +usb:v04A9p30F2* + ID_MODEL_FROM_DATABASE=Digital IXUS 700 (normal mode) / Digital IXUS 700 (PTP mode) / IXY Digital 600 (normal mode) / PowerShot SD500 (normal mode) / PowerShot SD500 (PTP mode) + +usb:v04A9p30F4* + ID_MODEL_FROM_DATABASE=PowerShot SD30 / Ixus iZoom / IXY DIGITAL L3 + +usb:v04A9p30F5* + ID_MODEL_FROM_DATABASE=SELPHY CP500 + +usb:v04A9p30F6* + ID_MODEL_FROM_DATABASE=SELPHY CP400 + +usb:v04A9p30F8* + ID_MODEL_FROM_DATABASE=Powershot A430 + +usb:v04A9p30F9* + ID_MODEL_FROM_DATABASE=PowerShot A410 (PTP mode) + +usb:v04A9p30FA* + ID_MODEL_FROM_DATABASE=PowerShot S80 + +usb:v04A9p30FC* + ID_MODEL_FROM_DATABASE=PowerShot A620 (PTP mode) + +usb:v04A9p30FD* + ID_MODEL_FROM_DATABASE=PowerShot A610 (normal mode)/PowerShot A610 (PTP mode) + +usb:v04A9p30FE* + ID_MODEL_FROM_DATABASE=Digital IXUS 65 (PTP mode)/PowerShot SD630 (PTP mode) + +usb:v04A9p30FF* + ID_MODEL_FROM_DATABASE=Digital IXUS 55 (PTP mode)/PowerShot SD450 (PTP mode) + +usb:v04A9p3100* + ID_MODEL_FROM_DATABASE=PowerShot TX1 + +usb:v04A9p310B* + ID_MODEL_FROM_DATABASE=SELPHY CP600 + +usb:v04A9p310E* + ID_MODEL_FROM_DATABASE=Digital IXUS 50 (PTP mode) + +usb:v04A9p3110* + ID_MODEL_FROM_DATABASE=EOS Digital Rebel XTi + +usb:v04A9p3116* + ID_MODEL_FROM_DATABASE=Digital IXUS 750 / PowerShot SD550 (PTP mode) + +usb:v04A9p3117* + ID_MODEL_FROM_DATABASE=PowerShot A700 + +usb:v04A9p3119* + ID_MODEL_FROM_DATABASE=PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS + +usb:v04A9p311B* + ID_MODEL_FROM_DATABASE=PowerShot A540 + +usb:v04A9p3127* + ID_MODEL_FROM_DATABASE=SELPHY CP710 + +usb:v04A9p3128* + ID_MODEL_FROM_DATABASE=SELPHY CP510 + +usb:v04A9p312D* + ID_MODEL_FROM_DATABASE=Elura 100 + +usb:v04A9p3138* + ID_MODEL_FROM_DATABASE=PowerShot A710 IS + +usb:v04A9p3141* + ID_MODEL_FROM_DATABASE=SELPHY ES1 + +usb:v04A9p3142* + ID_MODEL_FROM_DATABASE=SELPHY CP730 + +usb:v04A9p3143* + ID_MODEL_FROM_DATABASE=SELPHY CP720 + +usb:v04A9p3145* + ID_MODEL_FROM_DATABASE=EOS 450D + +usb:v04A9p3147* + ID_MODEL_FROM_DATABASE=EOS 1Ds Mark III + +usb:v04A9p314F* + ID_MODEL_FROM_DATABASE=Powershot SD1000 + +usb:v04A9p3155* + ID_MODEL_FROM_DATABASE=PowerShot A450 + +usb:v04A9p315A* + ID_MODEL_FROM_DATABASE=PowerShot G9 + +usb:v04A9p315D* + ID_MODEL_FROM_DATABASE=PowerShot A720 + +usb:v04A9p3160* + ID_MODEL_FROM_DATABASE=Digital IXUS 860 IS + +usb:v04A9p3170* + ID_MODEL_FROM_DATABASE=SELPHY CP750 + +usb:v04A9p3171* + ID_MODEL_FROM_DATABASE=SELPHY CP740 + +usb:v04A9p3175* + ID_MODEL_FROM_DATABASE=IXY Digital 25 IS + +usb:v04A9p3176* + ID_MODEL_FROM_DATABASE=PowerShot A590 + +usb:v04A9p317A* + ID_MODEL_FROM_DATABASE=PC1267 [Powershot A470] + +usb:v04A9p3184* + ID_MODEL_FROM_DATABASE=Digital IXUS 80 IS (PTP mode) + +usb:v04A9p3185* + ID_MODEL_FROM_DATABASE=SELPHY ES2 + +usb:v04A9p3186* + ID_MODEL_FROM_DATABASE=SELPHY ES20 + +usb:v04A9p3192* + ID_MODEL_FROM_DATABASE=PowerShot SX110 IS + +usb:v04A9p319A* + ID_MODEL_FROM_DATABASE=EOS 7D + +usb:v04A9p31AA* + ID_MODEL_FROM_DATABASE=SELPHY CP770 + +usb:v04A9p31AB* + ID_MODEL_FROM_DATABASE=SELPHY CP760 + +usb:v04A9p31AD* + ID_MODEL_FROM_DATABASE=PowerShot E1 + +usb:v04A9p31AF* + ID_MODEL_FROM_DATABASE=SELPHY ES3 + +usb:v04A9p31B0* + ID_MODEL_FROM_DATABASE=SELPHY ES30 + +usb:v04A9p31B1* + ID_MODEL_FROM_DATABASE=SELPHY CP530 + +usb:v04A9p31BC* + ID_MODEL_FROM_DATABASE=PowerShot D10 + +usb:v04A9p31BF* + ID_MODEL_FROM_DATABASE=PowerShot A480 + +usb:v04A9p31C0* + ID_MODEL_FROM_DATABASE=PowerShot SX200 IS + +usb:v04A9p31DD* + ID_MODEL_FROM_DATABASE=SELPHY CP780 + +usb:v04A9p31E5* + ID_MODEL_FROM_DATABASE=Digital IXUS 200 IS + +usb:v04A9p31EE* + ID_MODEL_FROM_DATABASE=SELPHY ES40 + +usb:v04A9p31EF* + ID_MODEL_FROM_DATABASE=PowerShot A495 + +usb:v04A9p31F1* + ID_MODEL_FROM_DATABASE=PowerShot A3100 IS / PowerShot A3150 IS + +usb:v04A9p31F2* + ID_MODEL_FROM_DATABASE=PowerShot A3000 IS + +usb:v04A9p31F3* + ID_MODEL_FROM_DATABASE=PowerShot Digital ELPH SD1400 IS + +usb:v04A9p31F4* + ID_MODEL_FROM_DATABASE=PowerShot SD1300 IS / IXUS 105 + +usb:v04A9p31F5* + ID_MODEL_FROM_DATABASE=Powershot SD3500 IS / IXUS 210 IS + +usb:v04A9p31F6* + ID_MODEL_FROM_DATABASE=PowerShot SX210 IS + +usb:v04A9p31F7* + ID_MODEL_FROM_DATABASE=Powershot SD4000 IS / IXUS 300 HS / IXY 30S + +usb:v04A9p31F8* + ID_MODEL_FROM_DATABASE=Powershot SD4500 IS / IXUS 1000 HS / IXY 50S + +usb:v04A9p31FF* + ID_MODEL_FROM_DATABASE=Digital IXUS 55 + +usb:v04A9p3209* + ID_MODEL_FROM_DATABASE=Vixia HF S21 A + +usb:v04A9p3210* + ID_MODEL_FROM_DATABASE=Powershot SX30 IS + +usb:v04A9p3211* + ID_MODEL_FROM_DATABASE=PowerShot SX130 IS + +usb:v04A9p3212* + ID_MODEL_FROM_DATABASE=Powershot S95 + +usb:v04A9p3214* + ID_MODEL_FROM_DATABASE=SELPHY CP800 + +usb:v04A9p3218* + ID_MODEL_FROM_DATABASE=EOS 600D / Rebel T3i (ptp) + +usb:v04A9p3223* + ID_MODEL_FROM_DATABASE=PowerShot A3300 IS + +usb:v04A9p3224* + ID_MODEL_FROM_DATABASE=PowerShot A3200 IS + +usb:v04A9p3226* + ID_MODEL_FROM_DATABASE=PowerShow A800 + +usb:v04A9p3228* + ID_MODEL_FROM_DATABASE=PowerShot SX230 HS + +usb:v04A9p3229* + ID_MODEL_FROM_DATABASE=PowerShot ELPH 300 HS / IXUS 220 HS + +usb:v04A9p322A* + ID_MODEL_FROM_DATABASE=PowerShot A2200 + +usb:v04A9p322B* + ID_MODEL_FROM_DATABASE=Powershot A1200 + +usb:v04A9p3233* + ID_MODEL_FROM_DATABASE=PowerShot G1 X + +usb:v04A9p3234* + ID_MODEL_FROM_DATABASE=PowerShot SX150 IS + +usb:v04A9p3236* + ID_MODEL_FROM_DATABASE=PowerShot S100 + +usb:v04A9p3237* + ID_MODEL_FROM_DATABASE=PowerShot ELPH 310 HS / IXUS 230 HS + +usb:v04A9p3238* + ID_MODEL_FROM_DATABASE=PowerShot SX40 HS + +usb:v04A9p323B* + ID_MODEL_FROM_DATABASE=EOS Rebel T4i + +usb:v04A9p323E* + ID_MODEL_FROM_DATABASE=PowerShot A1300 + +usb:v04A9p323F* + ID_MODEL_FROM_DATABASE=PowerShot A810 + +usb:v04A9p3240* + ID_MODEL_FROM_DATABASE=PowerShot ELPH 320 HS / IXUS 240 HS + +usb:v04A9p3241* + ID_MODEL_FROM_DATABASE=PowerShot ELPH 110 HS / IXUS 125 HS + +usb:v04A9p3243* + ID_MODEL_FROM_DATABASE=PowerShot A4000 IS + +usb:v04A9p3244* + ID_MODEL_FROM_DATABASE=PowerShot SX260 HS + +usb:v04A9p3245* + ID_MODEL_FROM_DATABASE=PowerShot SX240 HS + +usb:v04A9p3247* + ID_MODEL_FROM_DATABASE=PowerShot ELPH 520 HS / IXUS 500 HS + +usb:v04A9p3248* + ID_MODEL_FROM_DATABASE=PowerShot A3400 IS + +usb:v04A9p3249* + ID_MODEL_FROM_DATABASE=PowerShot A2400 IS + +usb:v04A9p324A* + ID_MODEL_FROM_DATABASE=PowerShot A2300 + +usb:v04A9p3255* + ID_MODEL_FROM_DATABASE=SELPHY CP900 + +usb:v04A9p3256* + ID_MODEL_FROM_DATABASE=SELPHY CP810 + +usb:v04A9p3258* + ID_MODEL_FROM_DATABASE=PowerShot G15 + +usb:v04A9p3259* + ID_MODEL_FROM_DATABASE=PowerShot SX50 HS + +usb:v04A9p325A* + ID_MODEL_FROM_DATABASE=PowerShot SX160 IS + +usb:v04A9p325B* + ID_MODEL_FROM_DATABASE=PowerShot S110 + +usb:v04A9p325C* + ID_MODEL_FROM_DATABASE=PowerShot SX500 IS + +usb:v04AA* + ID_VENDOR_FROM_DATABASE=DaeWoo Telecom, Ltd + +usb:v04AB* + ID_VENDOR_FROM_DATABASE=Chromatic Research + +usb:v04AC* + ID_VENDOR_FROM_DATABASE=Micro Audiometrics Corp. + +usb:v04AD* + ID_VENDOR_FROM_DATABASE=Dooin Electronics + +usb:v04ADp2501* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v04AF* + ID_VENDOR_FROM_DATABASE=Winnov L.P. + +usb:v04B0* + ID_VENDOR_FROM_DATABASE=Nikon Corp. + +usb:v04B0p0102* + ID_MODEL_FROM_DATABASE=Coolpix 990 + +usb:v04B0p0103* + ID_MODEL_FROM_DATABASE=Coolpix 880 + +usb:v04B0p0104* + ID_MODEL_FROM_DATABASE=Coolpix 995 + +usb:v04B0p0106* + ID_MODEL_FROM_DATABASE=Coolpix 775 + +usb:v04B0p0107* + ID_MODEL_FROM_DATABASE=Coolpix 5000 + +usb:v04B0p0108* + ID_MODEL_FROM_DATABASE=Coolpix 2500 + +usb:v04B0p0109* + ID_MODEL_FROM_DATABASE=Coolpix 2500 (ptp) + +usb:v04B0p010A* + ID_MODEL_FROM_DATABASE=Coolpix 4500 + +usb:v04B0p010B* + ID_MODEL_FROM_DATABASE=Coolpix 4500 (ptp) + +usb:v04B0p010D* + ID_MODEL_FROM_DATABASE=Coolpix 5700 (ptp) + +usb:v04B0p010E* + ID_MODEL_FROM_DATABASE=Coolpix 4300 (storage) + +usb:v04B0p010F* + ID_MODEL_FROM_DATABASE=Coolpix 4300 (ptp) + +usb:v04B0p0110* + ID_MODEL_FROM_DATABASE=Coolpix 3500 (Sierra Mode) + +usb:v04B0p0111* + ID_MODEL_FROM_DATABASE=Coolpix 3500 (ptp) + +usb:v04B0p0112* + ID_MODEL_FROM_DATABASE=Coolpix 885 (ptp) + +usb:v04B0p0113* + ID_MODEL_FROM_DATABASE=Coolpix 5000 (ptp) + +usb:v04B0p0114* + ID_MODEL_FROM_DATABASE=Coolpix 3100 (storage) + +usb:v04B0p0115* + ID_MODEL_FROM_DATABASE=Coolpix 3100 (ptp) + +usb:v04B0p0117* + ID_MODEL_FROM_DATABASE=Coolpix 2100 (ptp) + +usb:v04B0p0119* + ID_MODEL_FROM_DATABASE=Coolpix 5400 (ptp) + +usb:v04B0p011D* + ID_MODEL_FROM_DATABASE=Coolpix 3700 (ptp) + +usb:v04B0p0121* + ID_MODEL_FROM_DATABASE=Coolpix 3200 (ptp) + +usb:v04B0p0122* + ID_MODEL_FROM_DATABASE=Coolpix 2200 (ptp) + +usb:v04B0p0124* + ID_MODEL_FROM_DATABASE=Coolpix 8400 (mass storage mode) + +usb:v04B0p0125* + ID_MODEL_FROM_DATABASE=Coolpix 8400 (ptp) + +usb:v04B0p0126* + ID_MODEL_FROM_DATABASE=Coolpix 8800 + +usb:v04B0p0129* + ID_MODEL_FROM_DATABASE=Coolpix 4800 (ptp) + +usb:v04B0p012C* + ID_MODEL_FROM_DATABASE=Coolpix 4100 (storage) + +usb:v04B0p012D* + ID_MODEL_FROM_DATABASE=Coolpix 4100 (ptp) + +usb:v04B0p012E* + ID_MODEL_FROM_DATABASE=Coolpix 5600 (ptp) + +usb:v04B0p0130* + ID_MODEL_FROM_DATABASE=Coolpix 4600 (ptp) + +usb:v04B0p0135* + ID_MODEL_FROM_DATABASE=Coolpix 5900 (ptp) + +usb:v04B0p0136* + ID_MODEL_FROM_DATABASE=Coolpix 7900 (storage) + +usb:v04B0p0137* + ID_MODEL_FROM_DATABASE=Coolpix 7900 (ptp) + +usb:v04B0p013A* + ID_MODEL_FROM_DATABASE=Coolpix 100 (storage) + +usb:v04B0p013B* + ID_MODEL_FROM_DATABASE=Coolpix 100 (ptp) + +usb:v04B0p0141* + ID_MODEL_FROM_DATABASE=Coolpix P2 (storage) + +usb:v04B0p0142* + ID_MODEL_FROM_DATABASE=Coolpix P2 (ptp) + +usb:v04B0p0163* + ID_MODEL_FROM_DATABASE=Coolpix P5100 (ptp) + +usb:v04B0p0169* + ID_MODEL_FROM_DATABASE=Coolpix P50 (ptp) + +usb:v04B0p0202* + ID_MODEL_FROM_DATABASE=Coolpix SQ (ptp) + +usb:v04B0p0203* + ID_MODEL_FROM_DATABASE=Coolpix 4200 (mass storage mode) + +usb:v04B0p0204* + ID_MODEL_FROM_DATABASE=Coolpix 4200 (ptp) + +usb:v04B0p0205* + ID_MODEL_FROM_DATABASE=Coolpix 5200 (storage) + +usb:v04B0p0206* + ID_MODEL_FROM_DATABASE=Coolpix 5200 (ptp) + +usb:v04B0p0301* + ID_MODEL_FROM_DATABASE=Coolpix 2000 (storage) + +usb:v04B0p0302* + ID_MODEL_FROM_DATABASE=Coolpix 2000 (ptp) + +usb:v04B0p0317* + ID_MODEL_FROM_DATABASE=Coolpix L20 (ptp) + +usb:v04B0p0402* + ID_MODEL_FROM_DATABASE=DSC D100 (ptp) + +usb:v04B0p0403* + ID_MODEL_FROM_DATABASE=D2H (mass storage mode) + +usb:v04B0p0404* + ID_MODEL_FROM_DATABASE=D2H SLR (ptp) + +usb:v04B0p0405* + ID_MODEL_FROM_DATABASE=D70 (mass storage mode) + +usb:v04B0p0406* + ID_MODEL_FROM_DATABASE=DSC D70 (ptp) + +usb:v04B0p0408* + ID_MODEL_FROM_DATABASE=D2X SLR (ptp) + +usb:v04B0p0409* + ID_MODEL_FROM_DATABASE=D50 digital camera + +usb:v04B0p040A* + ID_MODEL_FROM_DATABASE=D50 (ptp) + +usb:v04B0p040C* + ID_MODEL_FROM_DATABASE=D2Hs + +usb:v04B0p040E* + ID_MODEL_FROM_DATABASE=DSC D70s (ptp) + +usb:v04B0p040F* + ID_MODEL_FROM_DATABASE=D200 (mass storage mode) + +usb:v04B0p0410* + ID_MODEL_FROM_DATABASE=D200 (ptp) + +usb:v04B0p0413* + ID_MODEL_FROM_DATABASE=D40 (mass storage mode) + +usb:v04B0p041E* + ID_MODEL_FROM_DATABASE=D60 digital camera (mass storage mode) + +usb:v04B0p0422* + ID_MODEL_FROM_DATABASE=D700 (ptp) + +usb:v04B0p0424* + ID_MODEL_FROM_DATABASE=D3000 + +usb:v04B0p0425* + ID_MODEL_FROM_DATABASE=D300S + +usb:v04B0p042A* + ID_MODEL_FROM_DATABASE=D800 (ptp) + +usb:v04B0p0F03* + ID_MODEL_FROM_DATABASE=PD-10 Wireless Printer Adapter + +usb:v04B0p4000* + ID_MODEL_FROM_DATABASE=Coolscan LS 40 ED + +usb:v04B0p4001* + ID_MODEL_FROM_DATABASE=LS 50 ED/Coolscan V ED + +usb:v04B0p4002* + ID_MODEL_FROM_DATABASE=Super Coolscan LS-5000 ED + +usb:v04B1* + ID_VENDOR_FROM_DATABASE=Pan International + +usb:v04B3* + ID_VENDOR_FROM_DATABASE=IBM Corp. + +usb:v04B3p3003* + ID_MODEL_FROM_DATABASE=Rapid Access III Keyboard + +usb:v04B3p3004* + ID_MODEL_FROM_DATABASE=Media Access Pro Keyboard + +usb:v04B3p300A* + ID_MODEL_FROM_DATABASE=Rapid Access IIIe Keyboard + +usb:v04B3p3016* + ID_MODEL_FROM_DATABASE=UltraNav Keyboard Hub + +usb:v04B3p3018* + ID_MODEL_FROM_DATABASE=UltraNav Keyboard + +usb:v04B3p301B* + ID_MODEL_FROM_DATABASE=SK-8815 Keyboard + +usb:v04B3p301C* + ID_MODEL_FROM_DATABASE=Enhanced Performance Keyboard + +usb:v04B3p3020* + ID_MODEL_FROM_DATABASE=Enhanced Performance Keyboard + +usb:v04B3p3025* + ID_MODEL_FROM_DATABASE=NetVista Full Width Keyboard + +usb:v04B3p3100* + ID_MODEL_FROM_DATABASE=NetVista Mouse + +usb:v04B3p3103* + ID_MODEL_FROM_DATABASE=ScrollPoint Pro Mouse + +usb:v04B3p3104* + ID_MODEL_FROM_DATABASE=ScrollPoint Wireless Mouse + +usb:v04B3p3105* + ID_MODEL_FROM_DATABASE=ScrollPoint Optical (HID) + +usb:v04B3p3107* + ID_MODEL_FROM_DATABASE=ThinkPad 800dpi Optical Travel Mouse + +usb:v04B3p3108* + ID_MODEL_FROM_DATABASE=800dpi Optical Mouse w/ Scroll Point + +usb:v04B3p3109* + ID_MODEL_FROM_DATABASE=Optical ScrollPoint Pro Mouse + +usb:v04B3p310B* + ID_MODEL_FROM_DATABASE=Red Wheel Mouse + +usb:v04B3p310C* + ID_MODEL_FROM_DATABASE=Wheel Mouse + +usb:v04B3p4427* + ID_MODEL_FROM_DATABASE=Portable CD ROM + +usb:v04B3p4482* + ID_MODEL_FROM_DATABASE=Serial Converter + +usb:v04B3p4485* + ID_MODEL_FROM_DATABASE=Serial Converter + +usb:v04B3p4525* + ID_MODEL_FROM_DATABASE=Double sided CRT + +usb:v04B3p4535* + ID_MODEL_FROM_DATABASE=4610 Suremark Printer + +usb:v04B3p4550* + ID_MODEL_FROM_DATABASE=NVRAM (128 KB) + +usb:v04B3p4554* + ID_MODEL_FROM_DATABASE=Cash Drawer + +usb:v04B3p4580* + ID_MODEL_FROM_DATABASE=Hub w/ NVRAM + +usb:v04B3p4581* + ID_MODEL_FROM_DATABASE=4800-2xx Hub w/ Cash Drawer + +usb:v04B3p4604* + ID_MODEL_FROM_DATABASE=Keyboard w/ Card Reader + +usb:v04B3p4671* + ID_MODEL_FROM_DATABASE=4820 LCD w/ MSR/KB + +usb:v04B4* + ID_VENDOR_FROM_DATABASE=Cypress Semiconductor Corp. + +usb:v04B4p0001* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v04B4p0002* + ID_MODEL_FROM_DATABASE=CY7C63x0x Thermometer + +usb:v04B4p0033* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v04B4p0100* + ID_MODEL_FROM_DATABASE=Cino FuzzyScan F760-B + +usb:v04B4p0101* + ID_MODEL_FROM_DATABASE=Keyboard/Hub + +usb:v04B4p0102* + ID_MODEL_FROM_DATABASE=Keyboard with APM + +usb:v04B4p0130* + ID_MODEL_FROM_DATABASE=MyIRC Remote Receiver + +usb:v04B4p0306* + ID_MODEL_FROM_DATABASE=Telephone Receiver + +usb:v04B4p0407* + ID_MODEL_FROM_DATABASE=Optical Skype Mouse + +usb:v04B4p0BAD* + ID_MODEL_FROM_DATABASE=MetaGeek Wi-Spy + +usb:v04B4p1002* + ID_MODEL_FROM_DATABASE=CY7C63001 R100 FM Radio + +usb:v04B4p1006* + ID_MODEL_FROM_DATABASE=Human Interface Device + +usb:v04B4p2050* + ID_MODEL_FROM_DATABASE=hub + +usb:v04B4p2830* + ID_MODEL_FROM_DATABASE=Opera1 DVB-S (cold state) + +usb:v04B4p4381* + ID_MODEL_FROM_DATABASE=SCAPS USC-1 Scanner Controller + +usb:v04B4p4611* + ID_MODEL_FROM_DATABASE=Storage Adapter FX2 (CY) + +usb:v04B4p4616* + ID_MODEL_FROM_DATABASE=Flash Disk (TPP) + +usb:v04B4p5201* + ID_MODEL_FROM_DATABASE=Combi Keyboard-Hub (Hub) + +usb:v04B4p5202* + ID_MODEL_FROM_DATABASE=Combi Keyboard-Hub (Keyboard) + +usb:v04B4p5500* + ID_MODEL_FROM_DATABASE=HID->COM RS232 Adapter + +usb:v04B4p5A9B* + ID_MODEL_FROM_DATABASE=Dacal CD/DVD Library D-101/DC-300/DC-016RW + +usb:v04B4p6370* + ID_MODEL_FROM_DATABASE=ViewMate Desktop Mouse CC2201 + +usb:v04B4p6560* + ID_MODEL_FROM_DATABASE=CY7C65640 USB-2.0 "TetraHub" + +usb:v04B4p6830* + ID_MODEL_FROM_DATABASE=CY7C68300A EZ-USB AT2 USB 2.0 to ATA/ATAPI + +usb:v04B4p6831* + ID_MODEL_FROM_DATABASE=Storage Adapter ISD-300LP (CY) + +usb:v04B4p7417* + ID_MODEL_FROM_DATABASE=Wireless PC Lock/Ultra Mouse + +usb:v04B4p8329* + ID_MODEL_FROM_DATABASE=USB To keyboard/Mouse Converter + +usb:v04B4p8613* + ID_MODEL_FROM_DATABASE=CY7C68013 EZ-USB FX2 USB 2.0 Development Kit + +usb:v04B4p8614* + ID_MODEL_FROM_DATABASE=DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) + +usb:v04B4p861F* + ID_MODEL_FROM_DATABASE=Anysee E30 USB 2.0 DVB-T Receiver + +usb:v04B4pBCA1* + ID_MODEL_FROM_DATABASE=Barcode Reader + +usb:v04B4pCC04* + ID_MODEL_FROM_DATABASE=Centor USB RACIA-ALVAR USB PORT + +usb:v04B4pCC06* + ID_MODEL_FROM_DATABASE=Centor-P RACIA-ALVAR USB PORT + +usb:v04B4pD5D5* + ID_MODEL_FROM_DATABASE=CY7C63x0x Zoltrix Z-Boxer GamePad + +usb:v04B4pDE61* + ID_MODEL_FROM_DATABASE=Barcode Reader + +usb:v04B4pDE64* + ID_MODEL_FROM_DATABASE=Barcode Reader + +usb:v04B4pF000* + ID_MODEL_FROM_DATABASE=CY30700 Licorice evaluation board + +usb:v04B4pF111* + ID_MODEL_FROM_DATABASE=CY8CKIT-002 PSoC MiniProg3 Rev A Program and debug kit + +usb:v04B4pF115* + ID_MODEL_FROM_DATABASE=PSoC FirstTouch Programmer + +usb:v04B4pFD13* + ID_MODEL_FROM_DATABASE=Programmable power socket + +usb:v04B5* + ID_VENDOR_FROM_DATABASE=ROHM LSI Systems USA, LLC + +usb:v04B5p3064* + ID_MODEL_FROM_DATABASE=Hantek DSO-3064 + +usb:v04B6* + ID_VENDOR_FROM_DATABASE=Hint Corp. + +usb:v04B7* + ID_VENDOR_FROM_DATABASE=Compal Electronics, Inc. + +usb:v04B8* + ID_VENDOR_FROM_DATABASE=Seiko Epson Corp. + +usb:v04B8p0001* + ID_MODEL_FROM_DATABASE=Stylus Color 740 / Photo 750 + +usb:v04B8p0002* + ID_MODEL_FROM_DATABASE=ISD Smart Cable for Mac + +usb:v04B8p0003* + ID_MODEL_FROM_DATABASE=ISD Smart Cable + +usb:v04B8p0004* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04B8p0005* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04B8p0006* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04B8p0007* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04B8p0015* + ID_MODEL_FROM_DATABASE=Stylus Photo R3000 + +usb:v04B8p0101* + ID_MODEL_FROM_DATABASE=GT-7000U [Perfection 636] + +usb:v04B8p0102* + ID_MODEL_FROM_DATABASE=GT-2200 + +usb:v04B8p0103* + ID_MODEL_FROM_DATABASE=GT-6600U [Perfection 610] + +usb:v04B8p0104* + ID_MODEL_FROM_DATABASE=GT-7600UF [Perfection 1200U/1200U Photo] + +usb:v04B8p0105* + ID_MODEL_FROM_DATABASE=Stylus Scan 2000 + +usb:v04B8p0106* + ID_MODEL_FROM_DATABASE=Stylus Scan 2500 + +usb:v04B8p0107* + ID_MODEL_FROM_DATABASE=ES-2000 [Expression 1600U] + +usb:v04B8p0108* + ID_MODEL_FROM_DATABASE=CC-700 + +usb:v04B8p0109* + ID_MODEL_FROM_DATABASE=ES-8500 [Expression 1640 XL] + +usb:v04B8p010A* + ID_MODEL_FROM_DATABASE=GT-8700/GT-8700F [Perfection 1640SU/1640SU PHOTO] + +usb:v04B8p010B* + ID_MODEL_FROM_DATABASE=GT-7700U [Perfection 1240U] + +usb:v04B8p010C* + ID_MODEL_FROM_DATABASE=GT-6700U [Perfection 640] + +usb:v04B8p010D* + ID_MODEL_FROM_DATABASE=CC-500L + +usb:v04B8p010E* + ID_MODEL_FROM_DATABASE=ES-2200 [Perfection 1680] + +usb:v04B8p010F* + ID_MODEL_FROM_DATABASE=GT-7200U [Perfection 1250/1250 PHOTO] + +usb:v04B8p0110* + ID_MODEL_FROM_DATABASE=GT-8200U/GT-8200UF [Perfection 1650/1650 PHOTO] + +usb:v04B8p0112* + ID_MODEL_FROM_DATABASE=GT-9700F [Perfection 2450 PHOTO] + +usb:v04B8p0114* + ID_MODEL_FROM_DATABASE=Perfection 660 + +usb:v04B8p0116* + ID_MODEL_FROM_DATABASE=GT-9400UF [Perfection 3170] + +usb:v04B8p0118* + ID_MODEL_FROM_DATABASE=GT-F600 [Perfection 4180] + +usb:v04B8p0119* + ID_MODEL_FROM_DATABASE=GT-X750 [Perfection 4490 Photo] + +usb:v04B8p011A* + ID_MODEL_FROM_DATABASE=CC-550L [1000 ICS] + +usb:v04B8p011B* + ID_MODEL_FROM_DATABASE=GT-9300UF [Perfection 2400 PHOTO] + +usb:v04B8p011C* + ID_MODEL_FROM_DATABASE=GT-9800F [Perfection 3200] + +usb:v04B8p011D* + ID_MODEL_FROM_DATABASE=GT-7300U [Perfection 1260/1260 PHOTO] + +usb:v04B8p011E* + ID_MODEL_FROM_DATABASE=GT-8300UF [Perfection 1660 PHOTO] + +usb:v04B8p011F* + ID_MODEL_FROM_DATABASE=GT-8400UF [Perfection 1670/1670 PHOTO] + +usb:v04B8p0120* + ID_MODEL_FROM_DATABASE=GT-7400U [Perfection 1270] + +usb:v04B8p0121* + ID_MODEL_FROM_DATABASE=GT-F500/GT-F550 [Perfection 2480/2580 PHOTO] + +usb:v04B8p0122* + ID_MODEL_FROM_DATABASE=GT-F520/GT-F570 [Perfection 3590 PHOTO] + +usb:v04B8p0126* + ID_MODEL_FROM_DATABASE=ES-7000H [GT-15000] + +usb:v04B8p0128* + ID_MODEL_FROM_DATABASE=GT-X700 [Perfection 4870] + +usb:v04B8p0129* + ID_MODEL_FROM_DATABASE=ES-10000G [Expression 10000XL] + +usb:v04B8p012A* + ID_MODEL_FROM_DATABASE=GT-X800 [Perfection 4990 PHOTO] + +usb:v04B8p012B* + ID_MODEL_FROM_DATABASE=ES-H300 [GT-2500] + +usb:v04B8p012C* + ID_MODEL_FROM_DATABASE=GT-X900 [Perfection V700/V750 Photo] + +usb:v04B8p012D* + ID_MODEL_FROM_DATABASE=GT-F650 [GT-S600/Perfection V10/V100] + +usb:v04B8p012E* + ID_MODEL_FROM_DATABASE=GT-F670 [Perfection V200 Photo] + +usb:v04B8p012F* + ID_MODEL_FROM_DATABASE=GT-F700 [Perfection V350] + +usb:v04B8p0130* + ID_MODEL_FROM_DATABASE=GT-X770 [Perfection V500] + +usb:v04B8p0131* + ID_MODEL_FROM_DATABASE=GT-F720 [GT-S620/Perfection V30/V300 Photo] + +usb:v04B8p0133* + ID_MODEL_FROM_DATABASE=GT-1500 [GT-D1000] + +usb:v04B8p0135* + ID_MODEL_FROM_DATABASE=GT-X970 + +usb:v04B8p0136* + ID_MODEL_FROM_DATABASE=ES-D400 [GT-S80] + +usb:v04B8p0137* + ID_MODEL_FROM_DATABASE=ES-D200 [GT-S50] + +usb:v04B8p0138* + ID_MODEL_FROM_DATABASE=ES-H7200 [GT-20000] + +usb:v04B8p013A* + ID_MODEL_FROM_DATABASE=GT-X820 [Perfection V600 Photo] + +usb:v04B8p0142* + ID_MODEL_FROM_DATABASE=GT-F730 [GT-S630/Perfection V33/V330 Photo] + +usb:v04B8p0143* + ID_MODEL_FROM_DATABASE=GT-S55 + +usb:v04B8p0144* + ID_MODEL_FROM_DATABASE=GT-S85 + +usb:v04B8p0202* + ID_MODEL_FROM_DATABASE=Receipt Printer M129C/TM-T70 + +usb:v04B8p0401* + ID_MODEL_FROM_DATABASE=CP 800 Digital Camera + +usb:v04B8p0402* + ID_MODEL_FROM_DATABASE=PhotoPC 850z + +usb:v04B8p0403* + ID_MODEL_FROM_DATABASE=PhotoPC 3000z + +usb:v04B8p0509* + ID_MODEL_FROM_DATABASE=JVC PIX-MC10 + +usb:v04B8p0601* + ID_MODEL_FROM_DATABASE=Stylus Photo 875DC Card Reader + +usb:v04B8p0602* + ID_MODEL_FROM_DATABASE=Stylus Photo 895 Card Reader + +usb:v04B8p0801* + ID_MODEL_FROM_DATABASE=CC-600PX [Stylus CX5200/CX5400/CX6600] + +usb:v04B8p0802* + ID_MODEL_FROM_DATABASE=CC-570L [Stylus CX3100/CX3200] + +usb:v04B8p0803* + ID_MODEL_FROM_DATABASE=Printer (Composite Device) + +usb:v04B8p0804* + ID_MODEL_FROM_DATABASE=Storage Device + +usb:v04B8p0805* + ID_MODEL_FROM_DATABASE=Stylus CX6300/CX6400 + +usb:v04B8p0806* + ID_MODEL_FROM_DATABASE=PM-A850 [Stylus Photo RX600/610] + +usb:v04B8p0807* + ID_MODEL_FROM_DATABASE=Stylus Photo RX500/510 + +usb:v04B8p0808* + ID_MODEL_FROM_DATABASE=Stylus CX5200/CX5300/CX5400 + +usb:v04B8p0809* + ID_MODEL_FROM_DATABASE=Storage Device + +usb:v04B8p080A* + ID_MODEL_FROM_DATABASE=F-3200 + +usb:v04B8p080C* + ID_MODEL_FROM_DATABASE=ME100 [Stylus CX1500] + +usb:v04B8p080D* + ID_MODEL_FROM_DATABASE=Stylus CX4500/4600 + +usb:v04B8p080E* + ID_MODEL_FROM_DATABASE=PX-A550 [CX-3500/3600/3650 MFP] + +usb:v04B8p080F* + ID_MODEL_FROM_DATABASE=Stylus Photo RX420/RX425/RX430 + +usb:v04B8p0810* + ID_MODEL_FROM_DATABASE=PM-A900 [Stylus Photo RX700] + +usb:v04B8p0811* + ID_MODEL_FROM_DATABASE=PM-A870 [Stylus Photo RX620/RX630] + +usb:v04B8p0812* + ID_MODEL_FROM_DATABASE=MFP Composite Device + +usb:v04B8p0813* + ID_MODEL_FROM_DATABASE=Stylus CX6500/6600 + +usb:v04B8p0814* + ID_MODEL_FROM_DATABASE=PM-A700 + +usb:v04B8p0815* + ID_MODEL_FROM_DATABASE=LP-A500 [AcuLaser CX1] + +usb:v04B8p0816* + ID_MODEL_FROM_DATABASE=Printer (Composite Device) + +usb:v04B8p0817* + ID_MODEL_FROM_DATABASE=LP-M5500/LP-M5500F + +usb:v04B8p0818* + ID_MODEL_FROM_DATABASE=Stylus CX3700/CX3800/DX3800 + +usb:v04B8p0819* + ID_MODEL_FROM_DATABASE=PX-A650 [Stylus CX4700/CX4800/DX4800/DX4850] + +usb:v04B8p081A* + ID_MODEL_FROM_DATABASE=PM-A750 [Stylus Photo RX520/RX530] + +usb:v04B8p081B* + ID_MODEL_FROM_DATABASE=MFP Composite Device + +usb:v04B8p081C* + ID_MODEL_FROM_DATABASE=PM-A890 [Stylus Photo RX640/RX650] + +usb:v04B8p081D* + ID_MODEL_FROM_DATABASE=PM-A950 + +usb:v04B8p081E* + ID_MODEL_FROM_DATABASE=MFP Composite Device + +usb:v04B8p081F* + ID_MODEL_FROM_DATABASE=Stylus CX7700/7800 + +usb:v04B8p0820* + ID_MODEL_FROM_DATABASE=Stylus CX4100/CX4200/DX4200 + +usb:v04B8p0821* + ID_MODEL_FROM_DATABASE=Stylus CX5700F/CX5800F + +usb:v04B8p0822* + ID_MODEL_FROM_DATABASE=Storage Device + +usb:v04B8p0823* + ID_MODEL_FROM_DATABASE=MFP Composite Device + +usb:v04B8p0824* + ID_MODEL_FROM_DATABASE=Storage Device + +usb:v04B8p0825* + ID_MODEL_FROM_DATABASE=MFP Composite Device + +usb:v04B8p0826* + ID_MODEL_FROM_DATABASE=Storage Device + +usb:v04B8p0827* + ID_MODEL_FROM_DATABASE=PM-A820 [Stylus Photo RX560/RX580/RX585/RX590] + +usb:v04B8p0828* + ID_MODEL_FROM_DATABASE=PM-A970 + +usb:v04B8p0829* + ID_MODEL_FROM_DATABASE=PM-T990 + +usb:v04B8p082A* + ID_MODEL_FROM_DATABASE=PM-A920 + +usb:v04B8p082B* + ID_MODEL_FROM_DATABASE=Stylus CX5900/CX5000/DX5000/DX5050 + +usb:v04B8p082C* + ID_MODEL_FROM_DATABASE=Storage Device + +usb:v04B8p082D* + ID_MODEL_FROM_DATABASE=Storage Device + +usb:v04B8p082E* + ID_MODEL_FROM_DATABASE=PX-A720 [Stylus CX5900/CX6000/DX6000] + +usb:v04B8p082F* + ID_MODEL_FROM_DATABASE=PX-A620 [Stylus CX3900/DX4000/DX4050] + +usb:v04B8p0830* + ID_MODEL_FROM_DATABASE=ME 200 [Stylus CX2800/CX2900] + +usb:v04B8p0831* + ID_MODEL_FROM_DATABASE=Stylus CX6900F/CX7000F/DX7000F + +usb:v04B8p0832* + ID_MODEL_FROM_DATABASE=MFP Composite Device + +usb:v04B8p0833* + ID_MODEL_FROM_DATABASE=LP-M5600 + +usb:v04B8p0834* + ID_MODEL_FROM_DATABASE=LP-M6000 + +usb:v04B8p0835* + ID_MODEL_FROM_DATABASE=AcuLaser CX21 + +usb:v04B8p0836* + ID_MODEL_FROM_DATABASE=PM-T960 + +usb:v04B8p0837* + ID_MODEL_FROM_DATABASE=PM-A940 [Stylus Photo RX680/RX685/RX690] + +usb:v04B8p0838* + ID_MODEL_FROM_DATABASE=PX-A640 [CX7300/CX7400/DX7400] + +usb:v04B8p0839* + ID_MODEL_FROM_DATABASE=PX-A740 [CX8300/CX8400/DX8400] + +usb:v04B8p083A* + ID_MODEL_FROM_DATABASE=PX-FA700 [CX9300F/CX9400Fax/DX9400F] + +usb:v04B8p083B* + ID_MODEL_FROM_DATABASE=MFP Composite Device + +usb:v04B8p083C* + ID_MODEL_FROM_DATABASE=PM-A840S [Stylus Photo RX595/RX610] + +usb:v04B8p083D* + ID_MODEL_FROM_DATABASE=MFP Composite Device + +usb:v04B8p083E* + ID_MODEL_FROM_DATABASE=MFP Composite Device + +usb:v04B8p083F* + ID_MODEL_FROM_DATABASE=Stylus CX4300/CX4400/CX5500/CX5600/DX4400/DX4450 + +usb:v04B8p0841* + ID_MODEL_FROM_DATABASE=PX-401A [ME 300/Stylus NX100] + +usb:v04B8p0843* + ID_MODEL_FROM_DATABASE=LP-M5000 + +usb:v04B8p0844* + ID_MODEL_FROM_DATABASE=EP-901A/EP-901F [Artisan 800/Stylus Photo PX800FW] + +usb:v04B8p0846* + ID_MODEL_FROM_DATABASE=EP-801A [Artisan 700/Stylus Photo PX700W/TX700W] + +usb:v04B8p0847* + ID_MODEL_FROM_DATABASE=PX-601F [ME Office 700FW/Stylus Office BX600FW/TX600FW] + +usb:v04B8p0848* + ID_MODEL_FROM_DATABASE=ME Office 600F/Stylus Office BX300F/TX300F + +usb:v04B8p0849* + ID_MODEL_FROM_DATABASE=Stylus SX205 + +usb:v04B8p084A* + ID_MODEL_FROM_DATABASE=PX-501A [Stylus NX400] + +usb:v04B8p084D* + ID_MODEL_FROM_DATABASE=PX-402A [Stylus SX115/Stylus NX110 Series] + +usb:v04B8p084F* + ID_MODEL_FROM_DATABASE=ME OFFICE 510 + +usb:v04B8p0850* + ID_MODEL_FROM_DATABASE=EP-702A [Stylus Photo PX650/TX650 Series] + +usb:v04B8p0851* + ID_MODEL_FROM_DATABASE=Stylus SX410 + +usb:v04B8p0852* + ID_MODEL_FROM_DATABASE=EP-802A [Artisan 710 Series/Stylus Photo PX710W/TX720W Series] + +usb:v04B8p0853* + ID_MODEL_FROM_DATABASE=EP-902A [Artisan 810 Series/Stylus Photo PX810FW Series] + +usb:v04B8p0854* + ID_MODEL_FROM_DATABASE=ME OFFICE 650FN Series/Stylus Office BX310FN/TX520FN Series + +usb:v04B8p0855* + ID_MODEL_FROM_DATABASE=PX-602F [Stylus Office BX610FW/TX620FW Series] + +usb:v04B8p0856* + ID_MODEL_FROM_DATABASE=PX-502A [Stylus SX515W] + +usb:v04B8p085C* + ID_MODEL_FROM_DATABASE=ME 320/330 Series [Stylus SX125] + +usb:v04B8p085D* + ID_MODEL_FROM_DATABASE=PX-603F [ME OFFICE 960FWD Series/Stylus Office BX625FWD/TX620FWD Series] + +usb:v04B8p085E* + ID_MODEL_FROM_DATABASE=PX-503A [ME OFFICE 900WD Series/Stylus Office BX525WD] + +usb:v04B8p085F* + ID_MODEL_FROM_DATABASE=Stylus Office BX320FW/TX525FW Series + +usb:v04B8p0860* + ID_MODEL_FROM_DATABASE=EP-903A/EP-903F [Artisan 835/Stylus Photo PX820FWD Series] + +usb:v04B8p0861* + ID_MODEL_FROM_DATABASE=EP-803A/EP-803AW [Artisan 725/Stylus Photo PX720WD/TX720WD Series] + +usb:v04B8p0862* + ID_MODEL_FROM_DATABASE=EP-703A [Stylus Photo PX660 Series] + +usb:v04B8p0863* + ID_MODEL_FROM_DATABASE=ME OFFICE 620F Series/Stylus Office BX305F/BX305FW/TX320F + +usb:v04B8p0864* + ID_MODEL_FROM_DATABASE=ME OFFICE 560W Series + +usb:v04B8p0865* + ID_MODEL_FROM_DATABASE=ME OFFICE 520 Series + +usb:v04B8p0866* + ID_MODEL_FROM_DATABASE=AcuLaser MX20DN/MX20DNF/MX21DNF + +usb:v04B8p0869* + ID_MODEL_FROM_DATABASE=PX-1600F + +usb:v04B8p086A* + ID_MODEL_FROM_DATABASE=PX-673F [Stylus Office BX925FWD] + +usb:v04B8p0870* + ID_MODEL_FROM_DATABASE=Stylus Office BX305FW Plus + +usb:v04B8p0871* + ID_MODEL_FROM_DATABASE=K200 Series + +usb:v04B8p0872* + ID_MODEL_FROM_DATABASE=K300 Series + +usb:v04B8p0873* + ID_MODEL_FROM_DATABASE=L200 Series + +usb:v04B8p0878* + ID_MODEL_FROM_DATABASE=EP-704A + +usb:v04B8p0879* + ID_MODEL_FROM_DATABASE=EP-904A/EP-904F [Artisan 837/Stylus Photo PX830FWD Series] + +usb:v04B8p087B* + ID_MODEL_FROM_DATABASE=EP-804A/EP-804AR/EP-804AW [Stylus Photo PX730WD/Artisan 730 Series] + +usb:v04B8p087C* + ID_MODEL_FROM_DATABASE=PX-1700F + +usb:v04B8p087D* + ID_MODEL_FROM_DATABASE=PX-B750F + +usb:v04B8p087F* + ID_MODEL_FROM_DATABASE=PX-403A + +usb:v04B8p0880* + ID_MODEL_FROM_DATABASE=PX-434A [Stylus NX330 Series] + +usb:v04B8p0881* + ID_MODEL_FROM_DATABASE=PX-404A [ME OFFICE 535] + +usb:v04B8p0883* + ID_MODEL_FROM_DATABASE=ME 340 Series/Stylus NX130 Series + +usb:v04B8p0884* + ID_MODEL_FROM_DATABASE=Stylus NX430W Series + +usb:v04B8p0885* + ID_MODEL_FROM_DATABASE=Stylus NX230 Series + +usb:v04B8p088F* + ID_MODEL_FROM_DATABASE=Stylus Office BX635FWD + +usb:v04B8p0890* + ID_MODEL_FROM_DATABASE=ME OFFICE 940FW Series/Stylus Office BX630FW Series + +usb:v04B8p0891* + ID_MODEL_FROM_DATABASE=Stylus Office BX535WD + +usb:v04B8p0892* + ID_MODEL_FROM_DATABASE=Stylus Office BX935FWD + +usb:v04B8p0893* + ID_MODEL_FROM_DATABASE=EP-774A + +usb:v04B9* + ID_VENDOR_FROM_DATABASE=Rainbow Technologies, Inc. + +usb:v04B9p0300* + ID_MODEL_FROM_DATABASE=SafeNet USB SuperPro/UltraPro + +usb:v04B9p1000* + ID_MODEL_FROM_DATABASE=iKey 1000 Token + +usb:v04B9p1001* + ID_MODEL_FROM_DATABASE=iKey 1200 Token + +usb:v04B9p1002* + ID_MODEL_FROM_DATABASE=iKey Token + +usb:v04B9p1003* + ID_MODEL_FROM_DATABASE=iKey Token + +usb:v04B9p1004* + ID_MODEL_FROM_DATABASE=iKey Token + +usb:v04B9p1005* + ID_MODEL_FROM_DATABASE=iKey Token + +usb:v04B9p1006* + ID_MODEL_FROM_DATABASE=iKey Token + +usb:v04B9p1200* + ID_MODEL_FROM_DATABASE=iKey 2000 Token + +usb:v04B9p1201* + ID_MODEL_FROM_DATABASE=iKey Token + +usb:v04B9p1202* + ID_MODEL_FROM_DATABASE=iKey 2032 Token + +usb:v04B9p1203* + ID_MODEL_FROM_DATABASE=iKey Token + +usb:v04B9p1204* + ID_MODEL_FROM_DATABASE=iKey Token + +usb:v04B9p1205* + ID_MODEL_FROM_DATABASE=iKey Token + +usb:v04B9p1206* + ID_MODEL_FROM_DATABASE=iKey 4000 Token + +usb:v04B9p1300* + ID_MODEL_FROM_DATABASE=iKey 3000 Token + +usb:v04B9p1301* + ID_MODEL_FROM_DATABASE=iKey 3000 + +usb:v04B9p1302* + ID_MODEL_FROM_DATABASE=iKey Token + +usb:v04B9p1303* + ID_MODEL_FROM_DATABASE=iKey Token + +usb:v04B9p1304* + ID_MODEL_FROM_DATABASE=iKey Token + +usb:v04B9p1305* + ID_MODEL_FROM_DATABASE=iKey Token + +usb:v04B9p1306* + ID_MODEL_FROM_DATABASE=iKey Token + +usb:v04BA* + ID_VENDOR_FROM_DATABASE=Toucan Systems, Ltd + +usb:v04BB* + ID_VENDOR_FROM_DATABASE=I-O Data Device, Inc. + +usb:v04BBp0101* + ID_MODEL_FROM_DATABASE=USB2-IDE/ATAPI Bridge Adapter + +usb:v04BBp0201* + ID_MODEL_FROM_DATABASE=USB2-IDE/ATAPI Bridge Adapter + +usb:v04BBp0204* + ID_MODEL_FROM_DATABASE=DVD Multi-plus unit iU-CD2 + +usb:v04BBp0206* + ID_MODEL_FROM_DATABASE=DVD Multi-plus unit DVR-UEH8 + +usb:v04BBp0301* + ID_MODEL_FROM_DATABASE=Storage Device + +usb:v04BBp0314* + ID_MODEL_FROM_DATABASE=USB-SSMRW SD-card + +usb:v04BBp0319* + ID_MODEL_FROM_DATABASE=USB2-IDE/ATAPI Bridge Adapter + +usb:v04BBp031A* + ID_MODEL_FROM_DATABASE=USB2-IDE/ATAPI Bridge Adapter + +usb:v04BBp031B* + ID_MODEL_FROM_DATABASE=USB2-IDE/ATAPI Bridge Adapter + +usb:v04BBp031E* + ID_MODEL_FROM_DATABASE=USB-SDRW SD-card + +usb:v04BBp0502* + ID_MODEL_FROM_DATABASE=Nogatech Live! (BT) + +usb:v04BBp0528* + ID_MODEL_FROM_DATABASE=GV-USB Video Capture + +usb:v04BBp0901* + ID_MODEL_FROM_DATABASE=USB ETT + +usb:v04BBp0904* + ID_MODEL_FROM_DATABASE=ET/TX Ethernet [pegasus] + +usb:v04BBp0913* + ID_MODEL_FROM_DATABASE=ET/TX-S Ethernet [pegasus2] + +usb:v04BBp0919* + ID_MODEL_FROM_DATABASE=USB WN-B11 + +usb:v04BBp0922* + ID_MODEL_FROM_DATABASE=IOData AirPort WN-B11/USBS 802.11b + +usb:v04BBp0930* + ID_MODEL_FROM_DATABASE=ETG-US2 + +usb:v04BBp0937* + ID_MODEL_FROM_DATABASE=WN-WAG/USL Wireless LAN Adapter + +usb:v04BBp0938* + ID_MODEL_FROM_DATABASE=WN-G54/USL Wireless LAN Adapter + +usb:v04BBp093B* + ID_MODEL_FROM_DATABASE=WN-GDN/USB + +usb:v04BBp093F* + ID_MODEL_FROM_DATABASE=WNGDNUS2 802.11n + +usb:v04BBp0944* + ID_MODEL_FROM_DATABASE=WHG-AGDN/US Wireless LAN Adapter + +usb:v04BBp0945* + ID_MODEL_FROM_DATABASE=WN-GDN/US3 Wireless LAN Adapter + +usb:v04BBp0947* + ID_MODEL_FROM_DATABASE=WN-G150U Wireless LAN Adapter + +usb:v04BBp0948* + ID_MODEL_FROM_DATABASE=WN-G300U Wireless LAN Adapter + +usb:v04BBp0A03* + ID_MODEL_FROM_DATABASE=Serial USB-RSAQ1 + +usb:v04BBp0A07* + ID_MODEL_FROM_DATABASE=USB2-iCN Adapter + +usb:v04BBp0A08* + ID_MODEL_FROM_DATABASE=USB2-iCN Adapter + +usb:v04BBp0C01* + ID_MODEL_FROM_DATABASE=FM-10 Pro Disk + +usb:v04BD* + ID_VENDOR_FROM_DATABASE=Toshiba Electronics Taiwan Corp. + +usb:v04BE* + ID_VENDOR_FROM_DATABASE=Telia Research AB + +usb:v04BF* + ID_VENDOR_FROM_DATABASE=TDK Corp. + +usb:v04BFp0100* + ID_MODEL_FROM_DATABASE=MediaReader CF + +usb:v04BFp0115* + ID_MODEL_FROM_DATABASE=USB-PDC Adapter UPA9664 + +usb:v04BFp0116* + ID_MODEL_FROM_DATABASE=USB-cdmaOne Adapter UCA1464 + +usb:v04BFp0117* + ID_MODEL_FROM_DATABASE=USB-PHS Adapter UHA6400 + +usb:v04BFp0118* + ID_MODEL_FROM_DATABASE=USB-PHS Adapter UPA6400 + +usb:v04BFp0135* + ID_MODEL_FROM_DATABASE=MediaReader Dual + +usb:v04BFp0202* + ID_MODEL_FROM_DATABASE=73S1121F Smart Card Reader- + +usb:v04BFp0309* + ID_MODEL_FROM_DATABASE=Bluetooth USB dongle + +usb:v04BFp030A* + ID_MODEL_FROM_DATABASE=IBM Bluetooth Ultraport Module + +usb:v04BFp030B* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v04BFp030C* + ID_MODEL_FROM_DATABASE=Ultraport Bluetooth Device + +usb:v04BFp0310* + ID_MODEL_FROM_DATABASE=Integrated Bluetooth + +usb:v04BFp0311* + ID_MODEL_FROM_DATABASE=Integrated Bluetooth Device + +usb:v04BFp0317* + ID_MODEL_FROM_DATABASE=Bluetooth UltraPort Module from IBM + +usb:v04BFp0318* + ID_MODEL_FROM_DATABASE=IBM Integrated Bluetooth + +usb:v04BFp0319* + ID_MODEL_FROM_DATABASE=Bluetooth Adapter + +usb:v04BFp0320* + ID_MODEL_FROM_DATABASE=Bluetooth Adapter + +usb:v04BFp0321* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v04BFp0A28* + ID_MODEL_FROM_DATABASE=INDI AV-IN Device + +usb:v04C1* + ID_VENDOR_FROM_DATABASE=U.S. Robotics (3Com) + +usb:v04C1p0020* + ID_MODEL_FROM_DATABASE=56K Voice Pro + +usb:v04C1p0022* + ID_MODEL_FROM_DATABASE=56K Voice Pro + +usb:v04C1p007E* + ID_MODEL_FROM_DATABASE=ISDN TA + +usb:v04C1p0082* + ID_MODEL_FROM_DATABASE=OfficeConnect Analog Modem + +usb:v04C1p008F* + ID_MODEL_FROM_DATABASE=Pro ISDN TA + +usb:v04C1p0097* + ID_MODEL_FROM_DATABASE=OfficeConnect Analog + +usb:v04C1p009D* + ID_MODEL_FROM_DATABASE=HomeConnect Webcam [vicam] + +usb:v04C1p00A9* + ID_MODEL_FROM_DATABASE=ISDN Pro TA-U + +usb:v04C1p00B9* + ID_MODEL_FROM_DATABASE=HomeConnect IDSL Modem + +usb:v04C1p3021* + ID_MODEL_FROM_DATABASE=56k Voice FaxModem Pro + +usb:v04C2* + ID_VENDOR_FROM_DATABASE=Methode Electronics Far East PTE, Ltd + +usb:v04C3* + ID_VENDOR_FROM_DATABASE=Maxi Switch, Inc. + +usb:v04C3p1102* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v04C3p2102* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v04C4* + ID_VENDOR_FROM_DATABASE=Lockheed Martin Energy Research + +usb:v04C5* + ID_VENDOR_FROM_DATABASE=Fujitsu, Ltd + +usb:v04C5p1029* + ID_MODEL_FROM_DATABASE=fi-4010c Scanner + +usb:v04C5p1033* + ID_MODEL_FROM_DATABASE=fi-4110CU + +usb:v04C5p1041* + ID_MODEL_FROM_DATABASE=fi-4120c Scanner + +usb:v04C5p1042* + ID_MODEL_FROM_DATABASE=fi-4220c Scanner + +usb:v04C5p105B* + ID_MODEL_FROM_DATABASE=AH-F401U Air H device + +usb:v04C5p1096* + ID_MODEL_FROM_DATABASE=fi-5110EOX + +usb:v04C5p1097* + ID_MODEL_FROM_DATABASE=fi-5110C + +usb:v04C5p10AE* + ID_MODEL_FROM_DATABASE=fi-4120C2 + +usb:v04C5p10AF* + ID_MODEL_FROM_DATABASE=fi-4220C2 + +usb:v04C5p10E0* + ID_MODEL_FROM_DATABASE=fi-5120c Scanner + +usb:v04C5p10E1* + ID_MODEL_FROM_DATABASE=fi-5220C + +usb:v04C5p10E7* + ID_MODEL_FROM_DATABASE=fi-5900C + +usb:v04C5p10FE* + ID_MODEL_FROM_DATABASE=S500 + +usb:v04C5p1150* + ID_MODEL_FROM_DATABASE=fi-6230 + +usb:v04C6* + ID_VENDOR_FROM_DATABASE=Toshiba America Electronic Components + +usb:v04C7* + ID_VENDOR_FROM_DATABASE=Micro Macro Technologies + +usb:v04C8* + ID_VENDOR_FROM_DATABASE=Konica Corp. + +usb:v04C8p0720* + ID_MODEL_FROM_DATABASE=Digital Color Camera + +usb:v04C8p0721* + ID_MODEL_FROM_DATABASE=e-miniD Camera + +usb:v04C8p0722* + ID_MODEL_FROM_DATABASE=e-mini + +usb:v04C8p0723* + ID_MODEL_FROM_DATABASE=KD-200Z Camera + +usb:v04C8p0726* + ID_MODEL_FROM_DATABASE=KD-310Z Camera + +usb:v04C8p0728* + ID_MODEL_FROM_DATABASE=Revio C2 Mass Storage Device + +usb:v04C8p0729* + ID_MODEL_FROM_DATABASE=Revio C2 Digital Camera + +usb:v04C8p072C* + ID_MODEL_FROM_DATABASE=Revio KD20M + +usb:v04C8p072D* + ID_MODEL_FROM_DATABASE=Revio KD410Z + +usb:v04CA* + ID_VENDOR_FROM_DATABASE=Lite-On Technology Corp. + +usb:v04CAp1766* + ID_MODEL_FROM_DATABASE=HID Monitor Controls + +usb:v04CAp9304* + ID_MODEL_FROM_DATABASE=Hub + +usb:v04CApF01C* + ID_MODEL_FROM_DATABASE=TT1280DA DVB-T TV Tuner + +usb:v04CB* + ID_VENDOR_FROM_DATABASE=Fuji Photo Film Co., Ltd + +usb:v04CBp0100* + ID_MODEL_FROM_DATABASE=FinePix 30i/40i/50i, A101/201, 1300/2200, 1400/2400/2600/2800/4500/4700/4800/4900/6800/6900 Zoom + +usb:v04CBp0103* + ID_MODEL_FROM_DATABASE=FinePix NX-500/NX-700 printer + +usb:v04CBp0104* + ID_MODEL_FROM_DATABASE=FinePix A101, 2600/2800/4800/6800 Zoom (PC CAM) + +usb:v04CBp0108* + ID_MODEL_FROM_DATABASE=FinePix F601 Zoom (DSC) + +usb:v04CBp0109* + ID_MODEL_FROM_DATABASE=FinePix F601 Zoom (PC CAM) + +usb:v04CBp010A* + ID_MODEL_FROM_DATABASE=FinePix S602 (Pro) Zoom (DSC) + +usb:v04CBp010B* + ID_MODEL_FROM_DATABASE=FinePix S602 (Pro) Zoom (PC CAM) + +usb:v04CBp010D* + ID_MODEL_FROM_DATABASE=FinePix Digital Camera 020531 + +usb:v04CBp010E* + ID_MODEL_FROM_DATABASE=FinePix F402 Zoom (DSC) + +usb:v04CBp010F* + ID_MODEL_FROM_DATABASE=FinePix F402 Zoom (PC CAM) + +usb:v04CBp0110* + ID_MODEL_FROM_DATABASE=FinePix M603 Zoom (DSC) + +usb:v04CBp0111* + ID_MODEL_FROM_DATABASE=FinePix M603 Zoom (PC CAM) + +usb:v04CBp0112* + ID_MODEL_FROM_DATABASE=FinePix A202, A200 Zoom (DSC) + +usb:v04CBp0113* + ID_MODEL_FROM_DATABASE=FinePix A202, A200 Zoom (PC CAM) + +usb:v04CBp0114* + ID_MODEL_FROM_DATABASE=FinePix F401 Zoom (DSC) + +usb:v04CBp0115* + ID_MODEL_FROM_DATABASE=FinePix F401 Zoom (PC CAM) + +usb:v04CBp0116* + ID_MODEL_FROM_DATABASE=FinePix A203 Zoom (DSC) + +usb:v04CBp0117* + ID_MODEL_FROM_DATABASE=FinePix A203 Zoom (PC CAM) + +usb:v04CBp0118* + ID_MODEL_FROM_DATABASE=FinePix A303 Zoom (DSC) + +usb:v04CBp0119* + ID_MODEL_FROM_DATABASE=FinePix A303 Zoom (PC CAM) + +usb:v04CBp011A* + ID_MODEL_FROM_DATABASE=FinePix S304/3800 Zoom (DSC) + +usb:v04CBp011B* + ID_MODEL_FROM_DATABASE=FinePix S304/3800 Zoom (PC CAM) + +usb:v04CBp011C* + ID_MODEL_FROM_DATABASE=FinePix A204/2650 Zoom (DSC) + +usb:v04CBp011D* + ID_MODEL_FROM_DATABASE=FinePix A204/2650 Zoom (PC CAM) + +usb:v04CBp0120* + ID_MODEL_FROM_DATABASE=FinePix F700 Zoom (DSC) + +usb:v04CBp0121* + ID_MODEL_FROM_DATABASE=FinePix F700 Zoom (PC CAM) + +usb:v04CBp0122* + ID_MODEL_FROM_DATABASE=FinePix F410 Zoom (DSC) + +usb:v04CBp0123* + ID_MODEL_FROM_DATABASE=FinePix F410 Zoom (PC CAM) + +usb:v04CBp0124* + ID_MODEL_FROM_DATABASE=FinePix A310 Zoom (DSC) + +usb:v04CBp0125* + ID_MODEL_FROM_DATABASE=FinePix A310 Zoom (PC CAM) + +usb:v04CBp0126* + ID_MODEL_FROM_DATABASE=FinePix A210 Zoom (DSC) + +usb:v04CBp0127* + ID_MODEL_FROM_DATABASE=FinePix A210 Zoom (PC CAM) + +usb:v04CBp0128* + ID_MODEL_FROM_DATABASE=FinePix A205(S) Zoom (DSC) + +usb:v04CBp0129* + ID_MODEL_FROM_DATABASE=FinePix A205(S) Zoom (PC CAM) + +usb:v04CBp012A* + ID_MODEL_FROM_DATABASE=FinePix F610 Zoom (DSC) + +usb:v04CBp012B* + ID_MODEL_FROM_DATABASE=FinePix Digital Camera 030513 + +usb:v04CBp012C* + ID_MODEL_FROM_DATABASE=FinePix S7000 Zoom (DSC) + +usb:v04CBp012D* + ID_MODEL_FROM_DATABASE=FinePix S7000 Zoom (PC CAM) + +usb:v04CBp012F* + ID_MODEL_FROM_DATABASE=FinePix Digital Camera 030731 + +usb:v04CBp0130* + ID_MODEL_FROM_DATABASE=FinePix S5000 Zoom (DSC) + +usb:v04CBp0131* + ID_MODEL_FROM_DATABASE=FinePix S5000 Zoom (PC CAM) + +usb:v04CBp013B* + ID_MODEL_FROM_DATABASE=FinePix Digital Camera 030722 + +usb:v04CBp013C* + ID_MODEL_FROM_DATABASE=FinePix S3000 Zoom (DSC) + +usb:v04CBp013D* + ID_MODEL_FROM_DATABASE=FinePix S3000 Zoom (PC CAM) + +usb:v04CBp013E* + ID_MODEL_FROM_DATABASE=FinePix F420 Zoom (DSC) + +usb:v04CBp013F* + ID_MODEL_FROM_DATABASE=FinePix F420 Zoom (PC CAM) + +usb:v04CBp0142* + ID_MODEL_FROM_DATABASE=FinePix S7000 Zoom (PTP) + +usb:v04CBp0148* + ID_MODEL_FROM_DATABASE=FinePix A330 Zoom (DSC) + +usb:v04CBp0149* + ID_MODEL_FROM_DATABASE=FinePix A330 Zoom (UVC) + +usb:v04CBp014A* + ID_MODEL_FROM_DATABASE=FinePix A330 Zoom (PTP) + +usb:v04CBp014B* + ID_MODEL_FROM_DATABASE=FinePix A340 Zoom (DSC) + +usb:v04CBp014C* + ID_MODEL_FROM_DATABASE=FinePix A340 Zoom (UVC) + +usb:v04CBp0159* + ID_MODEL_FROM_DATABASE=FinePix F710 Zoom (DSC) + +usb:v04CBp0165* + ID_MODEL_FROM_DATABASE=FinePix S3500 Zoom (DSC) + +usb:v04CBp0168* + ID_MODEL_FROM_DATABASE=FinePix E500 Zoom (DSC) + +usb:v04CBp0169* + ID_MODEL_FROM_DATABASE=FinePix E500 Zoom (UVC) + +usb:v04CBp016B* + ID_MODEL_FROM_DATABASE=FinePix E510 Zoom (DSC) + +usb:v04CBp016C* + ID_MODEL_FROM_DATABASE=FinePix E510 Zoom (PC CAM) + +usb:v04CBp016E* + ID_MODEL_FROM_DATABASE=FinePix S5500 Zoom (DSC) + +usb:v04CBp016F* + ID_MODEL_FROM_DATABASE=FinePix S5500 Zoom (UVC) + +usb:v04CBp0171* + ID_MODEL_FROM_DATABASE=FinePix E550 Zoom (DSC) + +usb:v04CBp0172* + ID_MODEL_FROM_DATABASE=FinePix E550 Zoom (UVC) + +usb:v04CBp0177* + ID_MODEL_FROM_DATABASE=FinePix F10 (DSC) + +usb:v04CBp0179* + ID_MODEL_FROM_DATABASE=Finepix F10 (PTP) + +usb:v04CBp0186* + ID_MODEL_FROM_DATABASE=FinePix S5200/S5600 Zoom (DSC) + +usb:v04CBp0188* + ID_MODEL_FROM_DATABASE=FinePix S5200/S5600 Zoom (PTP) + +usb:v04CBp018E* + ID_MODEL_FROM_DATABASE=FinePix S9500 Zoom (DSC) + +usb:v04CBp018F* + ID_MODEL_FROM_DATABASE=FinePix S9500 Zoom (PTP) + +usb:v04CBp0192* + ID_MODEL_FROM_DATABASE=FinePix E900 Zoom (DSC) + +usb:v04CBp0193* + ID_MODEL_FROM_DATABASE=FinePix E900 Zoom (PTP) + +usb:v04CBp019B* + ID_MODEL_FROM_DATABASE=FinePix F30 (PTP) + +usb:v04CBp01AF* + ID_MODEL_FROM_DATABASE=FinePix A700 (PTP) + +usb:v04CBp01BF* + ID_MODEL_FROM_DATABASE=FinePix F6000fd/S6500fd Zoom (PTP) + +usb:v04CBp01C0* + ID_MODEL_FROM_DATABASE=FinePix F20 (PTP) + +usb:v04CBp01C1* + ID_MODEL_FROM_DATABASE=FinePix F31fd (PTP) + +usb:v04CBp01C4* + ID_MODEL_FROM_DATABASE=FinePix S5700 Zoom (PTP) + +usb:v04CBp01C5* + ID_MODEL_FROM_DATABASE=FinePix F40fd (PTP) + +usb:v04CBp01C6* + ID_MODEL_FROM_DATABASE=FinePix A820 Zoom (PTP) + +usb:v04CBp01D2* + ID_MODEL_FROM_DATABASE=FinePix A800 Zoom (PTP) + +usb:v04CBp01D3* + ID_MODEL_FROM_DATABASE=FinePix A920 (PTP) + +usb:v04CBp01D4* + ID_MODEL_FROM_DATABASE=FinePix F50fd (PTP) + +usb:v04CBp01D5* + ID_MODEL_FROM_DATABASE=FinePix F47 (PTP) + +usb:v04CBp01F7* + ID_MODEL_FROM_DATABASE=FinePix J250 (PTP) + +usb:v04CBp01FD* + ID_MODEL_FROM_DATABASE=A160 + +usb:v04CBp023E* + ID_MODEL_FROM_DATABASE=FinePix AX300 + +usb:v04CBp0240* + ID_MODEL_FROM_DATABASE=FinePix S2950 Digital Camera + +usb:v04CBp0241* + ID_MODEL_FROM_DATABASE=FinePix S3200 Digital Camera + +usb:v04CBp0278* + ID_MODEL_FROM_DATABASE=FinePix JV300 + +usb:v04CC* + ID_VENDOR_FROM_DATABASE=ST-Ericsson + +usb:v04CCp1122* + ID_MODEL_FROM_DATABASE=Hub + +usb:v04CCp1520* + ID_MODEL_FROM_DATABASE=USB 2.0 Hub (Avocent KVM) + +usb:v04CCp1521* + ID_MODEL_FROM_DATABASE=USB 2.0 Hub + +usb:v04CCp1A62* + ID_MODEL_FROM_DATABASE=GW Instek GSP-830 Spectrum Analyzer (HID) + +usb:v04CCp2323* + ID_MODEL_FROM_DATABASE=Ux500 serial debug port + +usb:v04CCp2533* + ID_MODEL_FROM_DATABASE=NFC device (PN533) + +usb:v04CCp8116* + ID_MODEL_FROM_DATABASE=Camera + +usb:v04CD* + ID_VENDOR_FROM_DATABASE=Tatung Co. Of America + +usb:v04CE* + ID_VENDOR_FROM_DATABASE=ScanLogic Corp. + +usb:v04CEp0002* + ID_MODEL_FROM_DATABASE=SL11R-IDE IDE Bridge + +usb:v04CEp0100* + ID_MODEL_FROM_DATABASE=USB2PRN Printer Class + +usb:v04CEp0300* + ID_MODEL_FROM_DATABASE=Phantom 336CX - C3 scanner + +usb:v04CEp04CE* + ID_MODEL_FROM_DATABASE=SL11DEMO, VID: 0x4ce, PID: 0x4ce + +usb:v04CEp07D1* + ID_MODEL_FROM_DATABASE=SL11R, VID: 0x4ce, PID: 0x07D1 + +usb:v04CF* + ID_VENDOR_FROM_DATABASE=Myson Century, Inc. + +usb:v04CFp0022* + ID_MODEL_FROM_DATABASE=OCZ Alchemy Series Elixir II Keyboard + +usb:v04CFp0800* + ID_MODEL_FROM_DATABASE=MTP800 Mass Storage Device + +usb:v04CFp8810* + ID_MODEL_FROM_DATABASE=CS8810 Mass Storage Device + +usb:v04CFp8811* + ID_MODEL_FROM_DATABASE=CS8811 Mass Storage Device + +usb:v04CFp8813* + ID_MODEL_FROM_DATABASE=CS8813 Mass Storage Device + +usb:v04CFp8818* + ID_MODEL_FROM_DATABASE=USB2.0 to ATAPI Bridge Controller + +usb:v04CFp8819* + ID_MODEL_FROM_DATABASE=USB 2.0 SD/MMC Reader + +usb:v04CFp9920* + ID_MODEL_FROM_DATABASE=CS8819A2-114 Mass Storage Device + +usb:v04D0* + ID_VENDOR_FROM_DATABASE=Digi International + +usb:v04D1* + ID_VENDOR_FROM_DATABASE=ITT Canon + +usb:v04D2* + ID_VENDOR_FROM_DATABASE=Altec Lansing Technologies + +usb:v04D2p0070* + ID_MODEL_FROM_DATABASE=ADA70 Speakers + +usb:v04D2p0305* + ID_MODEL_FROM_DATABASE=Non-Compliant Audio Device + +usb:v04D2p0311* + ID_MODEL_FROM_DATABASE=ADA-310 Speakers + +usb:v04D2p2060* + ID_MODEL_FROM_DATABASE=Claritel-i750 - vp + +usb:v04D2pFF05* + ID_MODEL_FROM_DATABASE=ADA-305 Speakers + +usb:v04D2pFF47* + ID_MODEL_FROM_DATABASE=Lansing HID Audio Controls + +usb:v04D2pFF49* + ID_MODEL_FROM_DATABASE=Lansing HID Audio Controls + +usb:v04D3* + ID_VENDOR_FROM_DATABASE=VidUS, Inc. + +usb:v04D4* + ID_VENDOR_FROM_DATABASE=LSI Logic, Inc. + +usb:v04D5* + ID_VENDOR_FROM_DATABASE=Forte Technologies, Inc. + +usb:v04D6* + ID_VENDOR_FROM_DATABASE=Mentor Graphics + +usb:v04D7* + ID_VENDOR_FROM_DATABASE=Oki Semiconductor + +usb:v04D7p1BE4* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v04D8* + ID_VENDOR_FROM_DATABASE=Microchip Technology, Inc. + +usb:v04D8p0002* + ID_MODEL_FROM_DATABASE=PicoLCD 20x2 + +usb:v04D8p0003* + ID_MODEL_FROM_DATABASE=PICkit 2 Microcontroller Programmer + +usb:v04D8p000A* + ID_MODEL_FROM_DATABASE=CDC RS-232 Emulation Demo + +usb:v04D8p000B* + ID_MODEL_FROM_DATABASE=PIC18F2550 (32K Flashable 10 Channel, 10 Bit A/D USB Microcontroller) + +usb:v04D8p0032* + ID_MODEL_FROM_DATABASE=PICkit1 + +usb:v04D8p0033* + ID_MODEL_FROM_DATABASE=PICkit2 + +usb:v04D8p0036* + ID_MODEL_FROM_DATABASE=PICkit Serial Analyzer + +usb:v04D8p00E0* + ID_MODEL_FROM_DATABASE=PIC32 Starter Board + +usb:v04D8p0A04* + ID_MODEL_FROM_DATABASE=AGP LIN Serial Analyzer + +usb:v04D8p8000* + ID_MODEL_FROM_DATABASE=In-Circuit Debugger + +usb:v04D8p8001* + ID_MODEL_FROM_DATABASE=ICD2 in-circuit debugger + +usb:v04D8p8101* + ID_MODEL_FROM_DATABASE=PIC24F Starter Kit + +usb:v04D8p8107* + ID_MODEL_FROM_DATABASE=Microstick II + +usb:v04D8p900A* + ID_MODEL_FROM_DATABASE=PICkit3 + +usb:v04D8pC001* + ID_MODEL_FROM_DATABASE=PicoLCD 20x4 + +usb:v04D8pF8DA* + ID_MODEL_FROM_DATABASE=Hughski Ltd. ColorHug + +usb:v04D8pFAFF* + ID_MODEL_FROM_DATABASE=Dangerous Prototypes BusPirate v4 Bootloader mode + +usb:v04D8pFB00* + ID_MODEL_FROM_DATABASE=Dangerous Prototypes BusPirate v4 + +usb:v04D8pFBB2* + ID_MODEL_FROM_DATABASE=GCUSB-nStep stepper motor controller + +usb:v04D8pFBBA* + ID_MODEL_FROM_DATABASE=DiscFerret Magnetic Disc Analyser (bootloader mode) + +usb:v04D8pFBBB* + ID_MODEL_FROM_DATABASE=DiscFerret Magnetic Disc Analyser (active mode) + +usb:v04D8pFC92* + ID_MODEL_FROM_DATABASE=Open Bench Logic Sniffer + +usb:v04D8pFFEF* + ID_MODEL_FROM_DATABASE=PICoPLC [APStech] + +usb:v04D9* + ID_VENDOR_FROM_DATABASE=Holtek Semiconductor, Inc. + +usb:v04D9p0022* + ID_MODEL_FROM_DATABASE=Portable Keyboard + +usb:v04D9p048E* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v04D9p0499* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v04D9p1203* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v04D9p1400* + ID_MODEL_FROM_DATABASE=PS/2 keyboard + mouse controller + +usb:v04D9p1503* + ID_MODEL_FROM_DATABASE=Shortboard Lefty + +usb:v04D9p1603* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v04D9p2013* + ID_MODEL_FROM_DATABASE=Keyboard [Das Keyboard] + +usb:v04D9p2221* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v04D9p2323* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v04D9p2832* + ID_MODEL_FROM_DATABASE=1channel Telephone line recorder + +usb:v04D9pA055* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v04DA* + ID_VENDOR_FROM_DATABASE=Panasonic (Matsushita) + +usb:v04DAp0901* + ID_MODEL_FROM_DATABASE=LS-120 Camera + +usb:v04DAp0912* + ID_MODEL_FROM_DATABASE=SDR-S10 + +usb:v04DAp0B01* + ID_MODEL_FROM_DATABASE=CD-R/RW Drive + +usb:v04DAp0B03* + ID_MODEL_FROM_DATABASE=SuperDisk 240MB + +usb:v04DAp0D01* + ID_MODEL_FROM_DATABASE=CD-R Drive KXL-840AN + +usb:v04DAp0D09* + ID_MODEL_FROM_DATABASE=CD-R Drive KXL-RW32AN + +usb:v04DAp0D0A* + ID_MODEL_FROM_DATABASE=CD-R Drive KXL-CB20AN + +usb:v04DAp0D0D* + ID_MODEL_FROM_DATABASE=CDRCB03 + +usb:v04DAp0D0E* + ID_MODEL_FROM_DATABASE=DVD-ROM & CD-R/RW + +usb:v04DAp0F40* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04DAp104D* + ID_MODEL_FROM_DATABASE=Elite Panaboard UB-T880 (HID) + +usb:v04DAp104E* + ID_MODEL_FROM_DATABASE=Elite Panaboard Pen Adaptor (HID) + +usb:v04DAp1500* + ID_MODEL_FROM_DATABASE=MFSUSB Driver + +usb:v04DAp1800* + ID_MODEL_FROM_DATABASE=DY-WL10 802.11abgn Adapter [Broadcom BCM4323] + +usb:v04DAp1B00* + ID_MODEL_FROM_DATABASE=MultiMediaCard + +usb:v04DAp2121* + ID_MODEL_FROM_DATABASE=EB-VS6 + +usb:v04DAp2316* + ID_MODEL_FROM_DATABASE=DVC Mass Storage Device + +usb:v04DAp2317* + ID_MODEL_FROM_DATABASE=DVC USB-SERIAL Driver for WinXP + +usb:v04DAp2318* + ID_MODEL_FROM_DATABASE=NV-GS11/230/250 (webcam mode) + +usb:v04DAp2319* + ID_MODEL_FROM_DATABASE=NV-GS15 (webcam mode) + +usb:v04DAp231A* + ID_MODEL_FROM_DATABASE=NV-GS11/230/250 (DV mode) + +usb:v04DAp231D* + ID_MODEL_FROM_DATABASE=DVC Web Camera Device + +usb:v04DAp231E* + ID_MODEL_FROM_DATABASE=DVC DV Stream Device + +usb:v04DAp2372* + ID_MODEL_FROM_DATABASE=Lumix Camera (Storage mode) + +usb:v04DAp2374* + ID_MODEL_FROM_DATABASE=Lumix Camera (PTP mode) + +usb:v04DAp2451* + ID_MODEL_FROM_DATABASE=HDC-SD9 + +usb:v04DAp2497* + ID_MODEL_FROM_DATABASE=HDC-TM700 + +usb:v04DAp250C* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem (QDL mode) + +usb:v04DAp250D* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem + +usb:v04DAp3904* + ID_MODEL_FROM_DATABASE=N5HBZ0000055 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] + +usb:v04DAp3C04* + ID_MODEL_FROM_DATABASE=JT-P100MR-20 [ePassport Reader] + +usb:v04DB* + ID_VENDOR_FROM_DATABASE=Hypertec Pty, Ltd + +usb:v04DC* + ID_VENDOR_FROM_DATABASE=Huan Hsin Holdings, Ltd + +usb:v04DD* + ID_VENDOR_FROM_DATABASE=Sharp Corp. + +usb:v04DDp13A6* + ID_MODEL_FROM_DATABASE=MFC2000 + +usb:v04DDp6006* + ID_MODEL_FROM_DATABASE=AL-1216 + +usb:v04DDp6007* + ID_MODEL_FROM_DATABASE=AL-1045 + +usb:v04DDp6008* + ID_MODEL_FROM_DATABASE=AL-1255 + +usb:v04DDp6009* + ID_MODEL_FROM_DATABASE=AL-1530CS + +usb:v04DDp600A* + ID_MODEL_FROM_DATABASE=AL-1540CS + +usb:v04DDp600B* + ID_MODEL_FROM_DATABASE=AL-1456 + +usb:v04DDp600C* + ID_MODEL_FROM_DATABASE=AL-1555 + +usb:v04DDp600D* + ID_MODEL_FROM_DATABASE=AL-1225 + +usb:v04DDp600E* + ID_MODEL_FROM_DATABASE=AL-1551CS + +usb:v04DDp600F* + ID_MODEL_FROM_DATABASE=AR-122E + +usb:v04DDp6010* + ID_MODEL_FROM_DATABASE=AR-152E + +usb:v04DDp6011* + ID_MODEL_FROM_DATABASE=AR-157E + +usb:v04DDp6012* + ID_MODEL_FROM_DATABASE=SN-1045 + +usb:v04DDp6013* + ID_MODEL_FROM_DATABASE=SN-1255 + +usb:v04DDp6014* + ID_MODEL_FROM_DATABASE=SN-1456 + +usb:v04DDp6015* + ID_MODEL_FROM_DATABASE=SN-1555 + +usb:v04DDp6016* + ID_MODEL_FROM_DATABASE=AR-153E + +usb:v04DDp6017* + ID_MODEL_FROM_DATABASE=AR-122E N + +usb:v04DDp6018* + ID_MODEL_FROM_DATABASE=AR-153E N + +usb:v04DDp6019* + ID_MODEL_FROM_DATABASE=AR-152E N + +usb:v04DDp601A* + ID_MODEL_FROM_DATABASE=AR-157E N + +usb:v04DDp601B* + ID_MODEL_FROM_DATABASE=AL-1217 + +usb:v04DDp601C* + ID_MODEL_FROM_DATABASE=AL-1226 + +usb:v04DDp601D* + ID_MODEL_FROM_DATABASE=AR-123E + +usb:v04DDp6021* + ID_MODEL_FROM_DATABASE=IS01 + +usb:v04DDp7002* + ID_MODEL_FROM_DATABASE=DVC Ver.1.0 + +usb:v04DDp7004* + ID_MODEL_FROM_DATABASE=VE-CG40U Digital Still Camera + +usb:v04DDp7005* + ID_MODEL_FROM_DATABASE=VE-CG30 Digital Still Camera + +usb:v04DDp7007* + ID_MODEL_FROM_DATABASE=VL-Z7S Digital Camcorder + +usb:v04DDp8004* + ID_MODEL_FROM_DATABASE=Zaurus SL-5000D/SL-5500 PDA + +usb:v04DDp8005* + ID_MODEL_FROM_DATABASE=Zaurus A-300 + +usb:v04DDp8006* + ID_MODEL_FROM_DATABASE=Zaurus SL-B500/SL-5600 PDA + +usb:v04DDp8007* + ID_MODEL_FROM_DATABASE=Zaurus C-700 PDA + +usb:v04DDp9009* + ID_MODEL_FROM_DATABASE=AR-M160 + +usb:v04DDp9014* + ID_MODEL_FROM_DATABASE=IM-DR80 Portable NetMD Player + +usb:v04DDp9031* + ID_MODEL_FROM_DATABASE=Zaurus C-750/C-760/C-860/SL-C3000 PDA + +usb:v04DDp9032* + ID_MODEL_FROM_DATABASE=Zaurus SL-6000 + +usb:v04DDp903A* + ID_MODEL_FROM_DATABASE=GSM GPRS + +usb:v04DDp9050* + ID_MODEL_FROM_DATABASE=Zaurus C-860 PDA + +usb:v04DDp9056* + ID_MODEL_FROM_DATABASE=Viewcam Z + +usb:v04DDp9073* + ID_MODEL_FROM_DATABASE=AM-900 + +usb:v04DDp9074* + ID_MODEL_FROM_DATABASE=GSM GPRS + +usb:v04DDp90A9* + ID_MODEL_FROM_DATABASE=Sharp Composite + +usb:v04DDp90D0* + ID_MODEL_FROM_DATABASE=USB-to-Serial Comm. Port + +usb:v04DDp90F2* + ID_MODEL_FROM_DATABASE=Sharp 3G GSM USB Control + +usb:v04DDp9120* + ID_MODEL_FROM_DATABASE=WS004SH + +usb:v04DDp9122* + ID_MODEL_FROM_DATABASE=WS007SH + +usb:v04DDp9123* + ID_MODEL_FROM_DATABASE=W-ZERO3 ES Smartphone + +usb:v04DDp91A3* + ID_MODEL_FROM_DATABASE=922SH Internet Machine + +usb:v04DDp939A* + ID_MODEL_FROM_DATABASE=IS03 + +usb:v04DE* + ID_VENDOR_FROM_DATABASE=MindShare, Inc. + +usb:v04DF* + ID_VENDOR_FROM_DATABASE=Interlink Electronics + +usb:v04E1* + ID_VENDOR_FROM_DATABASE=Iiyama North America, Inc. + +usb:v04E1p0201* + ID_MODEL_FROM_DATABASE=Monitor Hub + +usb:v04E2* + ID_VENDOR_FROM_DATABASE=Exar Corp. + +usb:v04E3* + ID_VENDOR_FROM_DATABASE=Zilog, Inc. + +usb:v04E4* + ID_VENDOR_FROM_DATABASE=ACC Microelectronics + +usb:v04E5* + ID_VENDOR_FROM_DATABASE=Promise Technology + +usb:v04E6* + ID_VENDOR_FROM_DATABASE=SCM Microsystems, Inc. + +usb:v04E6p0001* + ID_MODEL_FROM_DATABASE=E-USB ATA Bridge + +usb:v04E6p0002* + ID_MODEL_FROM_DATABASE=eUSCSI SCSI Bridge + +usb:v04E6p0003* + ID_MODEL_FROM_DATABASE=eUSB SmartMedia Card Reader + +usb:v04E6p0005* + ID_MODEL_FROM_DATABASE=eUSB SmartMedia/CompactFlash Card Reader + +usb:v04E6p0006* + ID_MODEL_FROM_DATABASE=eUSB SmartMedia Card Reader + +usb:v04E6p0007* + ID_MODEL_FROM_DATABASE=Hifd + +usb:v04E6p0009* + ID_MODEL_FROM_DATABASE=eUSB ATA/ATAPI Adapter + +usb:v04E6p000A* + ID_MODEL_FROM_DATABASE=eUSB CompactFlash Adapter + +usb:v04E6p000B* + ID_MODEL_FROM_DATABASE=eUSCSI Bridge + +usb:v04E6p000C* + ID_MODEL_FROM_DATABASE=eUSCSI Bridge + +usb:v04E6p000D* + ID_MODEL_FROM_DATABASE=Dazzle MS + +usb:v04E6p0012* + ID_MODEL_FROM_DATABASE=Dazzle SD/MMC + +usb:v04E6p0101* + ID_MODEL_FROM_DATABASE=eUSB ATA Bridge (Sony Spressa USB CDRW) + +usb:v04E6p0311* + ID_MODEL_FROM_DATABASE=Dazzle DM-CF + +usb:v04E6p0312* + ID_MODEL_FROM_DATABASE=Dazzle DM-SD/MMC + +usb:v04E6p0313* + ID_MODEL_FROM_DATABASE=Dazzle SM + +usb:v04E6p0314* + ID_MODEL_FROM_DATABASE=Dazzle MS + +usb:v04E6p0322* + ID_MODEL_FROM_DATABASE=e-Film Reader-5 + +usb:v04E6p0325* + ID_MODEL_FROM_DATABASE=eUSB ORCA Quad Reader + +usb:v04E6p0327* + ID_MODEL_FROM_DATABASE=Digital Media Reader + +usb:v04E6p03FE* + ID_MODEL_FROM_DATABASE=DMHS2 DFU Adapter + +usb:v04E6p0406* + ID_MODEL_FROM_DATABASE=eUSB SmartDM Reader + +usb:v04E6p04E6* + ID_MODEL_FROM_DATABASE=eUSB DFU Adapter + +usb:v04E6p04E7* + ID_MODEL_FROM_DATABASE=STCII DFU Adapter + +usb:v04E6p04E8* + ID_MODEL_FROM_DATABASE=eUSBDM DFU Adapter + +usb:v04E6p04E9* + ID_MODEL_FROM_DATABASE=DM-E DFU Adapter + +usb:v04E6p0500* + ID_MODEL_FROM_DATABASE=Veridicom 5thSense Fingerprint Sensor and eUSB SmartCard + +usb:v04E6p0701* + ID_MODEL_FROM_DATABASE=DCS200 Loader Device + +usb:v04E6p0702* + ID_MODEL_FROM_DATABASE=DVD Creation Station 200 + +usb:v04E6p0703* + ID_MODEL_FROM_DATABASE=DVC100 Loader Device + +usb:v04E6p0704* + ID_MODEL_FROM_DATABASE=Digital Video Creator 100 + +usb:v04E6p1001* + ID_MODEL_FROM_DATABASE=SCR300 Smart Card Reader + +usb:v04E6p1010* + ID_MODEL_FROM_DATABASE=USBAT-2 CompactFlash Card Reader + +usb:v04E6p1014* + ID_MODEL_FROM_DATABASE=e-Film Reader-3 + +usb:v04E6p1020* + ID_MODEL_FROM_DATABASE=USBAT ATA/ATAPI Adapter + +usb:v04E6p2007* + ID_MODEL_FROM_DATABASE=RSA SecurID ComboReader + +usb:v04E6p2009* + ID_MODEL_FROM_DATABASE=Citibank Smart Card Reader + +usb:v04E6p200A* + ID_MODEL_FROM_DATABASE=Reflex v.2 Smart Card Reader + +usb:v04E6p200D* + ID_MODEL_FROM_DATABASE=STR391 Reader + +usb:v04E6p5111* + ID_MODEL_FROM_DATABASE=SCR331-DI SmartCard Reader + +usb:v04E6p5113* + ID_MODEL_FROM_DATABASE=SCR333 SmartCard Reader + +usb:v04E6p5114* + ID_MODEL_FROM_DATABASE=SCR331-DI SmartCard Reader + +usb:v04E6p5115* + ID_MODEL_FROM_DATABASE=SCR335 SmartCard Reader + +usb:v04E6p5116* + ID_MODEL_FROM_DATABASE=SCR331-LC1 / SCR3310 SmartCard Reader + +usb:v04E6p5117* + ID_MODEL_FROM_DATABASE=SCR3320 - Smart Card Reader + +usb:v04E6p5118* + ID_MODEL_FROM_DATABASE=Expresscard SIM Card Reader + +usb:v04E6p5119* + ID_MODEL_FROM_DATABASE=SCR3340 - ExpressCard54 Smart Card Reader + +usb:v04E6p511B* + ID_MODEL_FROM_DATABASE=SmartCard Reader + +usb:v04E6p511D* + ID_MODEL_FROM_DATABASE=SCR3311 Smart Card Reader + +usb:v04E6p5120* + ID_MODEL_FROM_DATABASE=SCR331-DI SmartCard Reader + +usb:v04E6p5121* + ID_MODEL_FROM_DATABASE=SDI010 Smart Card Reader + +usb:v04E6p5151* + ID_MODEL_FROM_DATABASE=SCR338 Keyboard Smart Card Reader + +usb:v04E6p5292* + ID_MODEL_FROM_DATABASE=SCL011 RFID reader + +usb:v04E6p5410* + ID_MODEL_FROM_DATABASE=SCR35xx Smart Card Reader + +usb:v04E6pE000* + ID_MODEL_FROM_DATABASE=SCRx31 Reader + +usb:v04E6pE001* + ID_MODEL_FROM_DATABASE=SCR331 SmartCard Reader + +usb:v04E6pE003* + ID_MODEL_FROM_DATABASE=SPR532 PinPad SmartCard Reader + +usb:v04E7* + ID_VENDOR_FROM_DATABASE=Elo TouchSystems + +usb:v04E7p0001* + ID_MODEL_FROM_DATABASE=TouchScreen + +usb:v04E7p0002* + ID_MODEL_FROM_DATABASE=Touchmonitor Interface 2600 Rev 2 + +usb:v04E7p0004* + ID_MODEL_FROM_DATABASE=4000U CarrollTouch® Touchmonitor Interface + +usb:v04E7p0007* + ID_MODEL_FROM_DATABASE=2500U IntelliTouch® Touchmonitor Interface + +usb:v04E7p0008* + ID_MODEL_FROM_DATABASE=3000U AccuTouch® Touchmonitor Interface + +usb:v04E7p0009* + ID_MODEL_FROM_DATABASE=4000U CarrollTouch® Touchmonitor Interface + +usb:v04E7p0020* + ID_MODEL_FROM_DATABASE=Touchscreen Interface (2700) + +usb:v04E7p0021* + ID_MODEL_FROM_DATABASE=Touchmonitor Interface + +usb:v04E7p0030* + ID_MODEL_FROM_DATABASE=4500U CarrollTouch® Touchmonitor Interface + +usb:v04E7p0032* + ID_MODEL_FROM_DATABASE=Touchmonitor Interface + +usb:v04E7p0033* + ID_MODEL_FROM_DATABASE=Touchmonitor Interface + +usb:v04E7p0041* + ID_MODEL_FROM_DATABASE=5010 Surface Capacitive Touchmonitor Interface + +usb:v04E7p0042* + ID_MODEL_FROM_DATABASE=Touchmonitor Interface + +usb:v04E7p0050* + ID_MODEL_FROM_DATABASE=2216 AccuTouch® Touchmonitor Interface + +usb:v04E7p0071* + ID_MODEL_FROM_DATABASE=Touchmonitor Interface + +usb:v04E7p0072* + ID_MODEL_FROM_DATABASE=Touchmonitor Interface + +usb:v04E7p0081* + ID_MODEL_FROM_DATABASE=Touchmonitor Interface + +usb:v04E7p0082* + ID_MODEL_FROM_DATABASE=Touchmonitor Interface + +usb:v04E7p00FF* + ID_MODEL_FROM_DATABASE=Touchmonitor Interface + +usb:v04E8* + ID_VENDOR_FROM_DATABASE=Samsung Electronics Co., Ltd + +usb:v04E8p0100* + ID_MODEL_FROM_DATABASE=Kingston Flash Drive (128MB) + +usb:v04E8p0110* + ID_MODEL_FROM_DATABASE=Connect3D Flash Drive + +usb:v04E8p0111* + ID_MODEL_FROM_DATABASE=Connect3D Flash Drive + +usb:v04E8p0300* + ID_MODEL_FROM_DATABASE=E2530 Phone (Mass storage mode) + +usb:v04E8p1003* + ID_MODEL_FROM_DATABASE=MP3 Player and Recorder + +usb:v04E8p1006* + ID_MODEL_FROM_DATABASE=SDC-200Z + +usb:v04E8p130C* + ID_MODEL_FROM_DATABASE=NX100 + +usb:v04E8p1F06* + ID_MODEL_FROM_DATABASE=HX-MU064DA portable harddisk + +usb:v04E8p2018* + ID_MODEL_FROM_DATABASE=WIS09ABGN LinkStick Wireless LAN Adapter + +usb:v04E8p2035* + ID_MODEL_FROM_DATABASE=Digital Photo Frame Mass Storage + +usb:v04E8p2036* + ID_MODEL_FROM_DATABASE=Digital Photo Frame Mini Monitor + +usb:v04E8p3004* + ID_MODEL_FROM_DATABASE=ML-4600 + +usb:v04E8p3005* + ID_MODEL_FROM_DATABASE=Docuprint P1210 + +usb:v04E8p3008* + ID_MODEL_FROM_DATABASE=ML-6060 laser printer + +usb:v04E8p300C* + ID_MODEL_FROM_DATABASE=ML-1210 Printer + +usb:v04E8p300E* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v04E8p3104* + ID_MODEL_FROM_DATABASE=ML-3550N + +usb:v04E8p3210* + ID_MODEL_FROM_DATABASE=ML-5200A Laser Printer + +usb:v04E8p3226* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v04E8p3228* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v04E8p322A* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v04E8p322C* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v04E8p3230* + ID_MODEL_FROM_DATABASE=ML-1440 + +usb:v04E8p3232* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v04E8p3236* + ID_MODEL_FROM_DATABASE=ML-1450 + +usb:v04E8p3238* + ID_MODEL_FROM_DATABASE=ML-1430 + +usb:v04E8p323A* + ID_MODEL_FROM_DATABASE=ML-1710 Printer + +usb:v04E8p323B* + ID_MODEL_FROM_DATABASE=Phaser 3130 + +usb:v04E8p323C* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v04E8p323D* + ID_MODEL_FROM_DATABASE=Phaser 3120 + +usb:v04E8p323E* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v04E8p3240* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v04E8p3242* + ID_MODEL_FROM_DATABASE=ML-1510 Laser Printer + +usb:v04E8p3248* + ID_MODEL_FROM_DATABASE=Color Laser Printer + +usb:v04E8p324A* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v04E8p324C* + ID_MODEL_FROM_DATABASE=ML-1740 Printer + +usb:v04E8p324D* + ID_MODEL_FROM_DATABASE=Phaser 3121 + +usb:v04E8p3256* + ID_MODEL_FROM_DATABASE=ML-1520 Laser Printer + +usb:v04E8p325B* + ID_MODEL_FROM_DATABASE=Xerox Phaser 3117 Laser Printer + +usb:v04E8p325F* + ID_MODEL_FROM_DATABASE=Phaser 3425 Laser Printer + +usb:v04E8p3260* + ID_MODEL_FROM_DATABASE=CLP-510 Color Laser Printer + +usb:v04E8p3268* + ID_MODEL_FROM_DATABASE=ML-1610 Mono Laser Printer + +usb:v04E8p326C* + ID_MODEL_FROM_DATABASE=ML-2010P Mono Laser Printer + +usb:v04E8p3276* + ID_MODEL_FROM_DATABASE=ML-3050/ML-3051 Laser Printer + +usb:v04E8p328E* + ID_MODEL_FROM_DATABASE=CLP-310 Color Laser Printer + +usb:v04E8p3292* + ID_MODEL_FROM_DATABASE=ML-1640 Series Laser Printer + +usb:v04E8p3296* + ID_MODEL_FROM_DATABASE=ML-2580N Mono Laser Printer + +usb:v04E8p3297* + ID_MODEL_FROM_DATABASE=ML-191x/ML-252x Laser Printer + +usb:v04E8p329F* + ID_MODEL_FROM_DATABASE=CLP-325 Color Laser Printer + +usb:v04E8p330C* + ID_MODEL_FROM_DATABASE=ML-1865 + +usb:v04E8p3310* + ID_MODEL_FROM_DATABASE=ML-331x Series Laser Printer + +usb:v04E8p3315* + ID_MODEL_FROM_DATABASE=ML-2540 Series Laser Printer + +usb:v04E8p3409* + ID_MODEL_FROM_DATABASE=SCX-4216F Scanner + +usb:v04E8p340C* + ID_MODEL_FROM_DATABASE=SCX-5x15 series + +usb:v04E8p340D* + ID_MODEL_FROM_DATABASE=SCX-6x20 series + +usb:v04E8p340E* + ID_MODEL_FROM_DATABASE=MFP 560 series + +usb:v04E8p340F* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v04E8p3412* + ID_MODEL_FROM_DATABASE=SCX-4x20 series + +usb:v04E8p3413* + ID_MODEL_FROM_DATABASE=SCX-4100 Scanner + +usb:v04E8p3415* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v04E8p3419* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v04E8p341A* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v04E8p341B* + ID_MODEL_FROM_DATABASE=SCX-4200 series + +usb:v04E8p341C* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v04E8p341D* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v04E8p341F* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v04E8p3420* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v04E8p3426* + ID_MODEL_FROM_DATABASE=SCX-4500 Laser Printer + +usb:v04E8p344F* + ID_MODEL_FROM_DATABASE=SCX-3400 Series + +usb:v04E8p3605* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v04E8p3606* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v04E8p3609* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v04E8p3902* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v04E8p3903* + ID_MODEL_FROM_DATABASE=Xerox WorkCentre XK50cx + +usb:v04E8p390F* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v04E8p3911* + ID_MODEL_FROM_DATABASE=SCX-1020 series + +usb:v04E8p4005* + ID_MODEL_FROM_DATABASE=GT-S8000 Jet (msc) + +usb:v04E8p4F1F* + ID_MODEL_FROM_DATABASE=GT-S8000 Jet (mtp) + +usb:v04E8p5000* + ID_MODEL_FROM_DATABASE=YP-MF series + +usb:v04E8p5001* + ID_MODEL_FROM_DATABASE=YP-100 + +usb:v04E8p5002* + ID_MODEL_FROM_DATABASE=YP-30 + +usb:v04E8p5003* + ID_MODEL_FROM_DATABASE=YP-700 + +usb:v04E8p5004* + ID_MODEL_FROM_DATABASE=YP-30 + +usb:v04E8p5005* + ID_MODEL_FROM_DATABASE=YP-300 + +usb:v04E8p5006* + ID_MODEL_FROM_DATABASE=YP-750 + +usb:v04E8p500D* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v04E8p5010* + ID_MODEL_FROM_DATABASE=Yepp YP-35 + +usb:v04E8p5011* + ID_MODEL_FROM_DATABASE=YP-780 + +usb:v04E8p5013* + ID_MODEL_FROM_DATABASE=YP-60 + +usb:v04E8p5015* + ID_MODEL_FROM_DATABASE=yepp upgrade + +usb:v04E8p501B* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v04E8p5021* + ID_MODEL_FROM_DATABASE=Yepp YP-ST5 + +usb:v04E8p5026* + ID_MODEL_FROM_DATABASE=YP-MT6V + +usb:v04E8p5027* + ID_MODEL_FROM_DATABASE=YP-T7 + +usb:v04E8p502B* + ID_MODEL_FROM_DATABASE=YP-F1 + +usb:v04E8p5032* + ID_MODEL_FROM_DATABASE=YP-J70 + +usb:v04E8p503B* + ID_MODEL_FROM_DATABASE=YP-U1 MP3 Player + +usb:v04E8p503D* + ID_MODEL_FROM_DATABASE=YP-T7F + +usb:v04E8p5041* + ID_MODEL_FROM_DATABASE=YP-Z5 + +usb:v04E8p5050* + ID_MODEL_FROM_DATABASE=YP-U2 MP3 Player + +usb:v04E8p5051* + ID_MODEL_FROM_DATABASE=YP-F2R + +usb:v04E8p5055* + ID_MODEL_FROM_DATABASE=YP-T9 + +usb:v04E8p507D* + ID_MODEL_FROM_DATABASE=YP-U3 (mtp) + +usb:v04E8p507F* + ID_MODEL_FROM_DATABASE=YP-T9J + +usb:v04E8p5080* + ID_MODEL_FROM_DATABASE=Yepp YP-K3 (msc) + +usb:v04E8p5081* + ID_MODEL_FROM_DATABASE=Yepp YP-K3 (mtp) + +usb:v04E8p5082* + ID_MODEL_FROM_DATABASE=YP-P2 (msc) + +usb:v04E8p5083* + ID_MODEL_FROM_DATABASE=YP-P2 (mtp) + +usb:v04E8p508A* + ID_MODEL_FROM_DATABASE=YP-T10 + +usb:v04E8p508B* + ID_MODEL_FROM_DATABASE=YP-S5 MP3 Player + +usb:v04E8p508C* + ID_MODEL_FROM_DATABASE=YP-S5 + +usb:v04E8p5090* + ID_MODEL_FROM_DATABASE=YP-S3 (msc) + +usb:v04E8p5091* + ID_MODEL_FROM_DATABASE=YP-S3 (mtp) + +usb:v04E8p5092* + ID_MODEL_FROM_DATABASE=YP-U4 (msc) + +usb:v04E8p5093* + ID_MODEL_FROM_DATABASE=YP-U4 (mtp) + +usb:v04E8p5095* + ID_MODEL_FROM_DATABASE=YP-S2 + +usb:v04E8p510F* + ID_MODEL_FROM_DATABASE=YP-R1 + +usb:v04E8p5119* + ID_MODEL_FROM_DATABASE=Yepp YP-P3 + +usb:v04E8p511C* + ID_MODEL_FROM_DATABASE=YP-Q2 + +usb:v04E8p5121* + ID_MODEL_FROM_DATABASE=YP-U5 + +usb:v04E8p5123* + ID_MODEL_FROM_DATABASE=Yepp YP-M1 + +usb:v04E8p5A00* + ID_MODEL_FROM_DATABASE=YP-NEU + +usb:v04E8p5A01* + ID_MODEL_FROM_DATABASE=YP-NDU + +usb:v04E8p5A03* + ID_MODEL_FROM_DATABASE=Yepp MP3 Player + +usb:v04E8p5A04* + ID_MODEL_FROM_DATABASE=YP-800 + +usb:v04E8p5A08* + ID_MODEL_FROM_DATABASE=YP-90 + +usb:v04E8p5A0F* + ID_MODEL_FROM_DATABASE=Meizu M6 MiniPlayer + +usb:v04E8p5B01* + ID_MODEL_FROM_DATABASE=Memory Stick Reader/Writer + +usb:v04E8p5B02* + ID_MODEL_FROM_DATABASE=Memory Stick Reader/Writer + +usb:v04E8p5B03* + ID_MODEL_FROM_DATABASE=Memory Stick Reader/Writer + +usb:v04E8p5B04* + ID_MODEL_FROM_DATABASE=Memory Stick Reader/Writer + +usb:v04E8p5B05* + ID_MODEL_FROM_DATABASE=Memory Stick Reader/Writer + +usb:v04E8p5B11* + ID_MODEL_FROM_DATABASE=SEW-2001u Card + +usb:v04E8p5F00* + ID_MODEL_FROM_DATABASE=NEXiO Sync + +usb:v04E8p5F01* + ID_MODEL_FROM_DATABASE=NEXiO Sync + +usb:v04E8p5F02* + ID_MODEL_FROM_DATABASE=NEXiO Sync + +usb:v04E8p5F03* + ID_MODEL_FROM_DATABASE=NEXiO Sync + +usb:v04E8p5F04* + ID_MODEL_FROM_DATABASE=NEXiO Sync + +usb:v04E8p5F05* + ID_MODEL_FROM_DATABASE=STORY Station 1TB + +usb:v04E8p6032* + ID_MODEL_FROM_DATABASE=G2 Portable hard drive + +usb:v04E8p60B3* + ID_MODEL_FROM_DATABASE=M2 Portable Hard Drive + +usb:v04E8p60C4* + ID_MODEL_FROM_DATABASE=M2 Portable Hard Drive USB 3.0 + +usb:v04E8p6601* + ID_MODEL_FROM_DATABASE=Mobile Phone + +usb:v04E8p6602* + ID_MODEL_FROM_DATABASE=Galaxy + +usb:v04E8p6603* + ID_MODEL_FROM_DATABASE=Galaxy + +usb:v04E8p6611* + ID_MODEL_FROM_DATABASE=MITs Sync + +usb:v04E8p6613* + ID_MODEL_FROM_DATABASE=MITs Sync + +usb:v04E8p6615* + ID_MODEL_FROM_DATABASE=MITs Sync + +usb:v04E8p6617* + ID_MODEL_FROM_DATABASE=MITs Sync + +usb:v04E8p6619* + ID_MODEL_FROM_DATABASE=MITs Sync + +usb:v04E8p661B* + ID_MODEL_FROM_DATABASE=MITs Sync + +usb:v04E8p661E* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v04E8p6620* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v04E8p6622* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v04E8p6624* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v04E8p662E* + ID_MODEL_FROM_DATABASE=MITs Sync + +usb:v04E8p6630* + ID_MODEL_FROM_DATABASE=MITs Sync + +usb:v04E8p6632* + ID_MODEL_FROM_DATABASE=MITs Sync + +usb:v04E8p663E* + ID_MODEL_FROM_DATABASE=D900e Phone + +usb:v04E8p663F* + ID_MODEL_FROM_DATABASE=SGH-E720/SGH-E840 + +usb:v04E8p6640* + ID_MODEL_FROM_DATABASE=Usb Modem Enumerator + +usb:v04E8p6651* + ID_MODEL_FROM_DATABASE=i8510 Innov8 + +usb:v04E8p6702* + ID_MODEL_FROM_DATABASE=X830 + +usb:v04E8p6708* + ID_MODEL_FROM_DATABASE=U600 Phone + +usb:v04E8p6709* + ID_MODEL_FROM_DATABASE=U600 + +usb:v04E8p6734* + ID_MODEL_FROM_DATABASE=Juke + +usb:v04E8p6759* + ID_MODEL_FROM_DATABASE=D900e Media Player + +usb:v04E8p675A* + ID_MODEL_FROM_DATABASE=D900e Mass Storage + +usb:v04E8p675B* + ID_MODEL_FROM_DATABASE=D900e Camera + +usb:v04E8p6772* + ID_MODEL_FROM_DATABASE=Standalone LTE device (Trial) + +usb:v04E8p6795* + ID_MODEL_FROM_DATABASE=S5230 + +usb:v04E8p6802* + ID_MODEL_FROM_DATABASE=Standalone HSPA device + +usb:v04E8p6806* + ID_MODEL_FROM_DATABASE=Composite LTE device (Trial) + +usb:v04E8p6807* + ID_MODEL_FROM_DATABASE=Composite HSPA device + +usb:v04E8p681C* + ID_MODEL_FROM_DATABASE=Galaxy Portal/Spica/S + +usb:v04E8p681D* + ID_MODEL_FROM_DATABASE=Galaxy Portal/Spica Android Phone + +usb:v04E8p6843* + ID_MODEL_FROM_DATABASE=E2530 Phone (Samsung Kies mode) + +usb:v04E8p684E* + ID_MODEL_FROM_DATABASE=Wave (GT-S8500) + +usb:v04E8p685B* + ID_MODEL_FROM_DATABASE=GT-I9100 Phone [Galaxy S II] (mass storage mode) + +usb:v04E8p685C* + ID_MODEL_FROM_DATABASE=GT-I9250 Phone [Galaxy Nexus] + +usb:v04E8p685D* + ID_MODEL_FROM_DATABASE=GT-I9100 Phone [Galaxy S II] (Download mode) + +usb:v04E8p685E* + ID_MODEL_FROM_DATABASE=GT-I9100 Phone [Galaxy S II] (USB Debugging mode) + +usb:v04E8p6860* + ID_MODEL_FROM_DATABASE=GT-I9100 Phone [Galaxy S II], GT-I9300 Phone [Galaxy S III], GT-P7500 [Galaxy Tab 10.1] + +usb:v04E8p6865* + ID_MODEL_FROM_DATABASE=GT-I9300 Phone [Galaxy S III] (PTP mode) + +usb:v04E8p6866* + ID_MODEL_FROM_DATABASE=GT-I9300 Phone [Galaxy S III] (debugging mode) + +usb:v04E8p6875* + ID_MODEL_FROM_DATABASE=GT-B3710 Standalone LTE device (Commercial) + +usb:v04E8p6876* + ID_MODEL_FROM_DATABASE=GT-B3710 LTE Modem + +usb:v04E8p6877* + ID_MODEL_FROM_DATABASE=Galaxy S + +usb:v04E8p6888* + ID_MODEL_FROM_DATABASE=GT-B3730 Composite LTE device (Commercial) + +usb:v04E8p6889* + ID_MODEL_FROM_DATABASE=GT-B3730 Composite LTE device (Commercial) + +usb:v04E8p689A* + ID_MODEL_FROM_DATABASE=LTE Storage Driver [CMC2xx] + +usb:v04E8p689E* + ID_MODEL_FROM_DATABASE=GT-S5670 [Galaxy Fit] + +usb:v04E8p68AA* + ID_MODEL_FROM_DATABASE=Reality + +usb:v04E8p7011* + ID_MODEL_FROM_DATABASE=SEW-2003U Card + +usb:v04E8p7021* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v04E8p7061* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v04E8p7080* + ID_MODEL_FROM_DATABASE=Anycall SCH-W580 + +usb:v04E8p7081* + ID_MODEL_FROM_DATABASE=Human Interface Device + +usb:v04E8p8001* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v04E8pE020* + ID_MODEL_FROM_DATABASE=SERI E02 SCOM 6200 UMTS Phone + +usb:v04E8pE021* + ID_MODEL_FROM_DATABASE=SERI E02 SCOM 6200 Virtual UARTs + +usb:v04E8pE022* + ID_MODEL_FROM_DATABASE=SERI E02 SCOM 6200 Flash Load Disk + +usb:v04E8pF000* + ID_MODEL_FROM_DATABASE=Intensity 3 (Mass Storage Mode) + +usb:v04E8pFF30* + ID_MODEL_FROM_DATABASE=SG_iMON + +usb:v04E9* + ID_VENDOR_FROM_DATABASE=PC-Tel, Inc. + +usb:v04EA* + ID_VENDOR_FROM_DATABASE=Brooktree Corp. + +usb:v04EB* + ID_VENDOR_FROM_DATABASE=Northstar Systems, Inc. + +usb:v04EBpE004* + ID_MODEL_FROM_DATABASE=eHome Infrared Transceiver + +usb:v04EC* + ID_VENDOR_FROM_DATABASE=Tokyo Electron Device, Ltd + +usb:v04ED* + ID_VENDOR_FROM_DATABASE=Annabooks + +usb:v04EF* + ID_VENDOR_FROM_DATABASE=Pacific Electronic International, Inc. + +usb:v04F0* + ID_VENDOR_FROM_DATABASE=Daewoo Electronics Co., Ltd + +usb:v04F1* + ID_VENDOR_FROM_DATABASE=Victor Company of Japan, Ltd + +usb:v04F1p0001* + ID_MODEL_FROM_DATABASE=GC-QX3 Digital Still Camera + +usb:v04F1p0004* + ID_MODEL_FROM_DATABASE=GR-DVL815U Digital Video Camera + +usb:v04F1p0006* + ID_MODEL_FROM_DATABASE=DV Camera Storage + +usb:v04F1p0008* + ID_MODEL_FROM_DATABASE=GZ-MG30AA/MC500E Digital Video Camera + +usb:v04F1p0009* + ID_MODEL_FROM_DATABASE=GR-DX25EK Digital Video Camera + +usb:v04F1p000A* + ID_MODEL_FROM_DATABASE=GR-D72 Digital Video Camera + +usb:v04F1p1001* + ID_MODEL_FROM_DATABASE=GC-A50 Camera Device + +usb:v04F1p3008* + ID_MODEL_FROM_DATABASE=MP-PRX1 Ethernet + +usb:v04F1p3009* + ID_MODEL_FROM_DATABASE=MP-XP7250 WLAN Adapter + +usb:v04F2* + ID_VENDOR_FROM_DATABASE=Chicony Electronics Co., Ltd + +usb:v04F2p0001* + ID_MODEL_FROM_DATABASE=KU-8933 Keyboard + +usb:v04F2p0002* + ID_MODEL_FROM_DATABASE=NT68P81 Keyboard + +usb:v04F2p0110* + ID_MODEL_FROM_DATABASE=KU-2971 Keyboard + +usb:v04F2p0111* + ID_MODEL_FROM_DATABASE=KU-9908 Keyboard + +usb:v04F2p0112* + ID_MODEL_FROM_DATABASE=KU-8933 Keyboard with PS/2 Mouse port + +usb:v04F2p0116* + ID_MODEL_FROM_DATABASE=KU-2971/KU-0325 Keyboard + +usb:v04F2p0200* + ID_MODEL_FROM_DATABASE=KBR-0108 + +usb:v04F2p0201* + ID_MODEL_FROM_DATABASE=Gaming Keyboard KPD0250 + +usb:v04F2p0220* + ID_MODEL_FROM_DATABASE=Wireless HID Receiver + +usb:v04F2p0402* + ID_MODEL_FROM_DATABASE=Genius LuxeMate i200 Keyboard + +usb:v04F2p0403* + ID_MODEL_FROM_DATABASE=KU-0420 keyboard + +usb:v04F2p0418* + ID_MODEL_FROM_DATABASE=KU-0418 Tactical Pad + +usb:v04F2p0760* + ID_MODEL_FROM_DATABASE=Acer KU-0760 Keyboard + +usb:v04F2p0841* + ID_MODEL_FROM_DATABASE=HP Multimedia Keyboard + +usb:v04F2p0860* + ID_MODEL_FROM_DATABASE=2.4G Multimedia Wireless Kit + +usb:v04F2pA001* + ID_MODEL_FROM_DATABASE=E-Video DC-100 Camera + +usb:v04F2pA120* + ID_MODEL_FROM_DATABASE=ORITE CCD Webcam(PC370R) + +usb:v04F2pA121* + ID_MODEL_FROM_DATABASE=ORITE CCD Webcam(PC370R) + +usb:v04F2pA122* + ID_MODEL_FROM_DATABASE=ORITE CCD Webcam(PC370R) + +usb:v04F2pA123* + ID_MODEL_FROM_DATABASE=ORITE CCD Webcam(PC370R) + +usb:v04F2pA124* + ID_MODEL_FROM_DATABASE=ORITE CCD Webcam(PC370R) + +usb:v04F2pA128* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C202 + OV7663 + EEPROM) + +usb:v04F2pA133* + ID_MODEL_FROM_DATABASE=Gateway Webcam + +usb:v04F2pA136* + ID_MODEL_FROM_DATABASE=LabTec Webcam 5500 + +usb:v04F2pA204* + ID_MODEL_FROM_DATABASE=DSC WIA Device (1300) + +usb:v04F2pA208* + ID_MODEL_FROM_DATABASE=DSC WIA Device (2320) + +usb:v04F2pA209* + ID_MODEL_FROM_DATABASE=Labtec DC-2320 + +usb:v04F2pA20A* + ID_MODEL_FROM_DATABASE=DSC WIA Device (3310) + +usb:v04F2pA20C* + ID_MODEL_FROM_DATABASE=DSC WIA Device (3320) + +usb:v04F2pA210* + ID_MODEL_FROM_DATABASE=Audio Device + +usb:v04F2pB008* + ID_MODEL_FROM_DATABASE=USB 2.0 Camera + +usb:v04F2pB009* + ID_MODEL_FROM_DATABASE=Integrated Camera + +usb:v04F2pB010* + ID_MODEL_FROM_DATABASE=Integrated Camera + +usb:v04F2pB012* + ID_MODEL_FROM_DATABASE=1.3 MPixel UVC Webcam + +usb:v04F2pB013* + ID_MODEL_FROM_DATABASE=USB 2.0 Camera + +usb:v04F2pB015* + ID_MODEL_FROM_DATABASE=VGA 24fps UVC Webcam + +usb:v04F2pB016* + ID_MODEL_FROM_DATABASE=VGA 30fps UVC Webcam + +usb:v04F2pB018* + ID_MODEL_FROM_DATABASE=2M UVC Webcam + +usb:v04F2pB021* + ID_MODEL_FROM_DATABASE=ViewSonic 1.3M, USB2.0 Webcam + +usb:v04F2pB022* + ID_MODEL_FROM_DATABASE=Gateway USB 2.0 Webcam + +usb:v04F2pB023* + ID_MODEL_FROM_DATABASE=Gateway USB 2.0 Webcam + +usb:v04F2pB024* + ID_MODEL_FROM_DATABASE=USB 2.0 Webcam + +usb:v04F2pB025* + ID_MODEL_FROM_DATABASE=Camera + +usb:v04F2pB027* + ID_MODEL_FROM_DATABASE=Gateway USB 2.0 Webcam + +usb:v04F2pB028* + ID_MODEL_FROM_DATABASE=VGA UVC Webcam + +usb:v04F2pB029* + ID_MODEL_FROM_DATABASE=1.3M UVC Webcam + +usb:v04F2pB036* + ID_MODEL_FROM_DATABASE=Asus Integrated 0.3M UVC Webcam + +usb:v04F2pB044* + ID_MODEL_FROM_DATABASE=Acer CrystalEye Webcam + +usb:v04F2pB057* + ID_MODEL_FROM_DATABASE=integrated USB webcam + +usb:v04F2pB059* + ID_MODEL_FROM_DATABASE=CKF7037 HP webcam + +usb:v04F2pB071* + ID_MODEL_FROM_DATABASE=2.0M UVC Webcam / CNF7129 + +usb:v04F2pB091* + ID_MODEL_FROM_DATABASE=Webcam + +usb:v04F2pB104* + ID_MODEL_FROM_DATABASE=CNF7069 Webcam + +usb:v04F2pB107* + ID_MODEL_FROM_DATABASE=CNF7070 Webcam + +usb:v04F2pB14C* + ID_MODEL_FROM_DATABASE=CNF8050 Webcam + +usb:v04F2pB15C* + ID_MODEL_FROM_DATABASE=Sony Vaio Integrated Camera + +usb:v04F2pB175* + ID_MODEL_FROM_DATABASE=4-Port Hub + +usb:v04F2pB1AA* + ID_MODEL_FROM_DATABASE=Webcam-101 + +usb:v04F2pB1B4* + ID_MODEL_FROM_DATABASE=Lenovo Integrated Camera + +usb:v04F2pB1B9* + ID_MODEL_FROM_DATABASE=Asus Integrated Webcam + +usb:v04F2pB1CF* + ID_MODEL_FROM_DATABASE=Lenovo Integrated Camera + +usb:v04F2pB1D6* + ID_MODEL_FROM_DATABASE=CNF9055 Toshiba Webcam + +usb:v04F2pB213* + ID_MODEL_FROM_DATABASE=Fujitsu Integrated Camera + +usb:v04F2pB217* + ID_MODEL_FROM_DATABASE=Lenovo Integrated Camera (0.3MP) + +usb:v04F2pB221* + ID_MODEL_FROM_DATABASE=integrated camera + +usb:v04F2pB230* + ID_MODEL_FROM_DATABASE=Integrated HP HD Webcam + +usb:v04F2pB257* + ID_MODEL_FROM_DATABASE=Lenovo Integrated Camera + +usb:v04F2pB26B* + ID_MODEL_FROM_DATABASE=Sony Visual Communication Camera + +usb:v04F2pB272* + ID_MODEL_FROM_DATABASE=Lenovo EasyCamera + +usb:v04F2pB2B0* + ID_MODEL_FROM_DATABASE=Camera + +usb:v04F2pB2B9* + ID_MODEL_FROM_DATABASE=Lenovo Integrated Camera UVC + +usb:v04F2pB2EA* + ID_MODEL_FROM_DATABASE=Integrated Camera [ThinkPad] + +usb:v04F2pB330* + ID_MODEL_FROM_DATABASE=Asus 720p CMOS webcam + +usb:v04F3* + ID_VENDOR_FROM_DATABASE=Elan Microelectronics Corp. + +usb:v04F3p0103* + ID_MODEL_FROM_DATABASE=ActiveJet K-2024 Multimedia Keyboard + +usb:v04F3p01A4* + ID_MODEL_FROM_DATABASE=Wireless Keyboard + +usb:v04F3p0210* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v04F3p0212* + ID_MODEL_FROM_DATABASE=Laser Mouse + +usb:v04F3p0214* + ID_MODEL_FROM_DATABASE=Lynx M9 Optical Mouse + +usb:v04F3p0230* + ID_MODEL_FROM_DATABASE=3D Optical Mouse + +usb:v04F3p0232* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v04F3p02F4* + ID_MODEL_FROM_DATABASE=2.4G Cordless Mouse + +usb:v04F3p04A0* + ID_MODEL_FROM_DATABASE=Dream Cheeky Stress/Panic Button + +usb:v04F4* + ID_VENDOR_FROM_DATABASE=Harting Elektronik, Inc. + +usb:v04F5* + ID_VENDOR_FROM_DATABASE=Fujitsu-ICL Systems, Inc. + +usb:v04F6* + ID_VENDOR_FROM_DATABASE=Norand Corp. + +usb:v04F7* + ID_VENDOR_FROM_DATABASE=Newnex Technology Corp. + +usb:v04F8* + ID_VENDOR_FROM_DATABASE=FuturePlus Systems + +usb:v04F9* + ID_VENDOR_FROM_DATABASE=Brother Industries, Ltd + +usb:v04F9p0002* + ID_MODEL_FROM_DATABASE=HL-1050 Laser Printer + +usb:v04F9p0005* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p0006* + ID_MODEL_FROM_DATABASE=HL-1240 Laser Printer + +usb:v04F9p0007* + ID_MODEL_FROM_DATABASE=HL-1250 Laser Printer + +usb:v04F9p0008* + ID_MODEL_FROM_DATABASE=HL-1270 Laser Printer + +usb:v04F9p0009* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p000A* + ID_MODEL_FROM_DATABASE=P2500 series + +usb:v04F9p000B* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p000C* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p000D* + ID_MODEL_FROM_DATABASE=HL-1440 Laser Printer + +usb:v04F9p000E* + ID_MODEL_FROM_DATABASE=HL-1450 series + +usb:v04F9p000F* + ID_MODEL_FROM_DATABASE=HL-1470N series + +usb:v04F9p0010* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p0011* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p0012* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p0013* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p0014* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p0015* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p0016* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p0017* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p0018* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p001A* + ID_MODEL_FROM_DATABASE=HL-1430 Laser Printer + +usb:v04F9p001C* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p001E* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p0020* + ID_MODEL_FROM_DATABASE=HL-5130 series + +usb:v04F9p0021* + ID_MODEL_FROM_DATABASE=HL-5140 series + +usb:v04F9p0022* + ID_MODEL_FROM_DATABASE=HL-5150D series + +usb:v04F9p0023* + ID_MODEL_FROM_DATABASE=HL-5170DN series + +usb:v04F9p0024* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p0025* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p0027* + ID_MODEL_FROM_DATABASE=HL-2030 Laser Printer + +usb:v04F9p0028* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p0029* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p002A* + ID_MODEL_FROM_DATABASE=HL-52x0 series + +usb:v04F9p002B* + ID_MODEL_FROM_DATABASE=HL-5250DN Printer + +usb:v04F9p002C* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p002D* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p0039* + ID_MODEL_FROM_DATABASE=HL-5340 series + +usb:v04F9p0042* + ID_MODEL_FROM_DATABASE=HL-2270DW Laser Printer + +usb:v04F9p0100* + ID_MODEL_FROM_DATABASE=MFC8600/9650 series + +usb:v04F9p0101* + ID_MODEL_FROM_DATABASE=MFC9600/9870 series + +usb:v04F9p0102* + ID_MODEL_FROM_DATABASE=MFC9750/1200 series + +usb:v04F9p0104* + ID_MODEL_FROM_DATABASE=MFC-8300J + +usb:v04F9p0105* + ID_MODEL_FROM_DATABASE=MFC-9600J + +usb:v04F9p0106* + ID_MODEL_FROM_DATABASE=MFC-7300C + +usb:v04F9p0107* + ID_MODEL_FROM_DATABASE=MFC-7400C + +usb:v04F9p0108* + ID_MODEL_FROM_DATABASE=MFC-9200C + +usb:v04F9p0109* + ID_MODEL_FROM_DATABASE=MFC-830 + +usb:v04F9p010A* + ID_MODEL_FROM_DATABASE=MFC-840 + +usb:v04F9p010B* + ID_MODEL_FROM_DATABASE=MFC-860 + +usb:v04F9p010C* + ID_MODEL_FROM_DATABASE=MFC-7400J + +usb:v04F9p010D* + ID_MODEL_FROM_DATABASE=MFC-9200J + +usb:v04F9p010E* + ID_MODEL_FROM_DATABASE=MFC3100C Scanner + +usb:v04F9p010F* + ID_MODEL_FROM_DATABASE=MFC 5100C + +usb:v04F9p0110* + ID_MODEL_FROM_DATABASE=MFC4800 Scanner + +usb:v04F9p0111* + ID_MODEL_FROM_DATABASE=MFC 6800 + +usb:v04F9p0112* + ID_MODEL_FROM_DATABASE=DCP1000 Port(FaxModem) + +usb:v04F9p0113* + ID_MODEL_FROM_DATABASE=MFC-8500 + +usb:v04F9p0114* + ID_MODEL_FROM_DATABASE=MFC9700 Port(FaxModem) + +usb:v04F9p0115* + ID_MODEL_FROM_DATABASE=MFC9800 Scanner + +usb:v04F9p0116* + ID_MODEL_FROM_DATABASE=DCP1400 Scanner + +usb:v04F9p0119* + ID_MODEL_FROM_DATABASE=MFC-9660 + +usb:v04F9p011B* + ID_MODEL_FROM_DATABASE=MFC-9880 + +usb:v04F9p011C* + ID_MODEL_FROM_DATABASE=MFC-9760 + +usb:v04F9p011D* + ID_MODEL_FROM_DATABASE=MFC-9070 + +usb:v04F9p011E* + ID_MODEL_FROM_DATABASE=MFC-9180 + +usb:v04F9p011F* + ID_MODEL_FROM_DATABASE=MFC-9160 + +usb:v04F9p0120* + ID_MODEL_FROM_DATABASE=MFC580 Port(FaxModem) + +usb:v04F9p0121* + ID_MODEL_FROM_DATABASE=MFC-590 + +usb:v04F9p0122* + ID_MODEL_FROM_DATABASE=MFC-5100J + +usb:v04F9p0129* + ID_MODEL_FROM_DATABASE=Imagistics 2500 (MFC-8640D clone) + +usb:v04F9p012F* + ID_MODEL_FROM_DATABASE=FAX-4750e + +usb:v04F9p0132* + ID_MODEL_FROM_DATABASE=MFC-5200C RemovableDisk + +usb:v04F9p0135* + ID_MODEL_FROM_DATABASE=MFC-100 Scanner + +usb:v04F9p0136* + ID_MODEL_FROM_DATABASE=MFC-150CL Scanner + +usb:v04F9p013C* + ID_MODEL_FROM_DATABASE=MFC-890 Port + +usb:v04F9p013D* + ID_MODEL_FROM_DATABASE=MFC-5200J Printer + +usb:v04F9p013E* + ID_MODEL_FROM_DATABASE=MFC-4420C RemovableDisk + +usb:v04F9p013F* + ID_MODEL_FROM_DATABASE=MFC-4820C RemovableDisk + +usb:v04F9p0140* + ID_MODEL_FROM_DATABASE=DCP-8020 + +usb:v04F9p0141* + ID_MODEL_FROM_DATABASE=DCP-8025D + +usb:v04F9p0142* + ID_MODEL_FROM_DATABASE=MFC-8420 + +usb:v04F9p0143* + ID_MODEL_FROM_DATABASE=MFC-8820D + +usb:v04F9p0144* + ID_MODEL_FROM_DATABASE=DCP-4020C RemovableDisk + +usb:v04F9p0146* + ID_MODEL_FROM_DATABASE=MFC-3220C + +usb:v04F9p0147* + ID_MODEL_FROM_DATABASE=FAX-1820C Printer + +usb:v04F9p0148* + ID_MODEL_FROM_DATABASE=MFC-3320CN Printer + +usb:v04F9p0149* + ID_MODEL_FROM_DATABASE=FAX-1920CN Printer + +usb:v04F9p014A* + ID_MODEL_FROM_DATABASE=MFC-3420C + +usb:v04F9p014B* + ID_MODEL_FROM_DATABASE=MFC-3820CN + +usb:v04F9p014D* + ID_MODEL_FROM_DATABASE=FAX-1815C Printer + +usb:v04F9p014E* + ID_MODEL_FROM_DATABASE=MFC-8820J + +usb:v04F9p0150* + ID_MODEL_FROM_DATABASE=MFC-8220 Port(FaxModem) + +usb:v04F9p0151* + ID_MODEL_FROM_DATABASE=MFC-8210J + +usb:v04F9p0157* + ID_MODEL_FROM_DATABASE=MFC-3420J Printer + +usb:v04F9p0158* + ID_MODEL_FROM_DATABASE=MFC-3820JN Port(FaxModem) + +usb:v04F9p015D* + ID_MODEL_FROM_DATABASE=MFC Composite Device + +usb:v04F9p015E* + ID_MODEL_FROM_DATABASE=DCP-8045D + +usb:v04F9p015F* + ID_MODEL_FROM_DATABASE=MFC-8440 + +usb:v04F9p0160* + ID_MODEL_FROM_DATABASE=MFC-8840D + +usb:v04F9p0161* + ID_MODEL_FROM_DATABASE=MFC-210C + +usb:v04F9p0162* + ID_MODEL_FROM_DATABASE=MFC-420CN Remote Setup Port + +usb:v04F9p0163* + ID_MODEL_FROM_DATABASE=MFC-410CN RemovableDisk + +usb:v04F9p0165* + ID_MODEL_FROM_DATABASE=MFC-620CN + +usb:v04F9p0166* + ID_MODEL_FROM_DATABASE=MFC-610CLN RemovableDisk + +usb:v04F9p0168* + ID_MODEL_FROM_DATABASE=MFC-620CLN + +usb:v04F9p0169* + ID_MODEL_FROM_DATABASE=DCP-110C RemovableDisk + +usb:v04F9p016B* + ID_MODEL_FROM_DATABASE=DCP-310CN RemovableDisk + +usb:v04F9p016C* + ID_MODEL_FROM_DATABASE=FAX-2440C Printer + +usb:v04F9p016D* + ID_MODEL_FROM_DATABASE=MFC-5440CN + +usb:v04F9p016E* + ID_MODEL_FROM_DATABASE=MFC-5840CN Remote Setup Port + +usb:v04F9p0170* + ID_MODEL_FROM_DATABASE=FAX-1840C Printer + +usb:v04F9p0171* + ID_MODEL_FROM_DATABASE=FAX-1835C Printer + +usb:v04F9p0172* + ID_MODEL_FROM_DATABASE=FAX-1940CN Printer + +usb:v04F9p0173* + ID_MODEL_FROM_DATABASE=MFC-3240C Remote Setup Port + +usb:v04F9p0174* + ID_MODEL_FROM_DATABASE=MFC-3340CN RemovableDisk + +usb:v04F9p017B* + ID_MODEL_FROM_DATABASE=Imagistics sx2100 + +usb:v04F9p0180* + ID_MODEL_FROM_DATABASE=MFC-7420 + +usb:v04F9p0181* + ID_MODEL_FROM_DATABASE=MFC-7820N Port(FaxModem) + +usb:v04F9p0182* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v04F9p0183* + ID_MODEL_FROM_DATABASE=DCP-7020 + +usb:v04F9p0184* + ID_MODEL_FROM_DATABASE=DCP-7025 Printer + +usb:v04F9p0185* + ID_MODEL_FROM_DATABASE=MFC-7220 Printer + +usb:v04F9p0186* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v04F9p0187* + ID_MODEL_FROM_DATABASE=FAX-2820 Printer + +usb:v04F9p0188* + ID_MODEL_FROM_DATABASE=FAX-2920 Printer + +usb:v04F9p018A* + ID_MODEL_FROM_DATABASE=MFC-9420CN + +usb:v04F9p018C* + ID_MODEL_FROM_DATABASE=DCP-115C + +usb:v04F9p018D* + ID_MODEL_FROM_DATABASE=DCP-116C + +usb:v04F9p018E* + ID_MODEL_FROM_DATABASE=DCP-117C + +usb:v04F9p018F* + ID_MODEL_FROM_DATABASE=DCP-118C + +usb:v04F9p0190* + ID_MODEL_FROM_DATABASE=DCP-120C + +usb:v04F9p0191* + ID_MODEL_FROM_DATABASE=DCP-315CN + +usb:v04F9p0192* + ID_MODEL_FROM_DATABASE=DCP-340CW + +usb:v04F9p0193* + ID_MODEL_FROM_DATABASE=MFC-215C + +usb:v04F9p0194* + ID_MODEL_FROM_DATABASE=MFC-425CN + +usb:v04F9p0195* + ID_MODEL_FROM_DATABASE=MFC-820CW Remote Setup Port + +usb:v04F9p0196* + ID_MODEL_FROM_DATABASE=MFC-820CN Remote Setup Port + +usb:v04F9p0197* + ID_MODEL_FROM_DATABASE=MFC-640CW + +usb:v04F9p019A* + ID_MODEL_FROM_DATABASE=MFC-840CLN Remote Setup Port + +usb:v04F9p01A2* + ID_MODEL_FROM_DATABASE=MFC-8640D + +usb:v04F9p01A3* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v04F9p01A4* + ID_MODEL_FROM_DATABASE=DCP-8065DN Printer + +usb:v04F9p01A5* + ID_MODEL_FROM_DATABASE=MFC-8460N Port(FaxModem) + +usb:v04F9p01A6* + ID_MODEL_FROM_DATABASE=MFC-8860DN Port(FaxModem) + +usb:v04F9p01A7* + ID_MODEL_FROM_DATABASE=MFC-8870DW Printer + +usb:v04F9p01A8* + ID_MODEL_FROM_DATABASE=DCP-130C + +usb:v04F9p01A9* + ID_MODEL_FROM_DATABASE=DCP-330C + +usb:v04F9p01AA* + ID_MODEL_FROM_DATABASE=DCP-540CN + +usb:v04F9p01AB* + ID_MODEL_FROM_DATABASE=MFC-240C + +usb:v04F9p01AE* + ID_MODEL_FROM_DATABASE=DCP-750CW RemovableDisk + +usb:v04F9p01AF* + ID_MODEL_FROM_DATABASE=MFC-440CN + +usb:v04F9p01B0* + ID_MODEL_FROM_DATABASE=MFC-660CN + +usb:v04F9p01B1* + ID_MODEL_FROM_DATABASE=MFC-665CW Remote Setup Port + +usb:v04F9p01B2* + ID_MODEL_FROM_DATABASE=MFC-845CW Remote Setup Port + +usb:v04F9p01B4* + ID_MODEL_FROM_DATABASE=MFC-460CN Remote Setup Port + +usb:v04F9p01B5* + ID_MODEL_FROM_DATABASE=MFC-630CD + +usb:v04F9p01B6* + ID_MODEL_FROM_DATABASE=MFC-850CDN + +usb:v04F9p01B7* + ID_MODEL_FROM_DATABASE=MFC-5460CN Remote Setup Port + +usb:v04F9p01B8* + ID_MODEL_FROM_DATABASE=MFC-5860CN + +usb:v04F9p01BA* + ID_MODEL_FROM_DATABASE=MFC-3360C + +usb:v04F9p01BD* + ID_MODEL_FROM_DATABASE=MFC-8660DN + +usb:v04F9p01BE* + ID_MODEL_FROM_DATABASE=DCP-750CN RemovableDisk + +usb:v04F9p01BF* + ID_MODEL_FROM_DATABASE=MFC-860CDN Remote Setup Port + +usb:v04F9p01C0* + ID_MODEL_FROM_DATABASE=DCP-128C + +usb:v04F9p01C1* + ID_MODEL_FROM_DATABASE=DCP-129C + +usb:v04F9p01C2* + ID_MODEL_FROM_DATABASE=DCP-131C + +usb:v04F9p01C3* + ID_MODEL_FROM_DATABASE=DCP-329C + +usb:v04F9p01C4* + ID_MODEL_FROM_DATABASE=DCP-331C + +usb:v04F9p01C5* + ID_MODEL_FROM_DATABASE=MFC-239C + +usb:v04F9p01CA* + ID_MODEL_FROM_DATABASE=MFC-9440CN Remote Setup Port + +usb:v04F9p01CE* + ID_MODEL_FROM_DATABASE=DCP-135C + +usb:v04F9p01CF* + ID_MODEL_FROM_DATABASE=DCP-150C + +usb:v04F9p01D0* + ID_MODEL_FROM_DATABASE=DCP-350C + +usb:v04F9p01D1* + ID_MODEL_FROM_DATABASE=DCP-560CN + +usb:v04F9p01D4* + ID_MODEL_FROM_DATABASE=MFC-230C + +usb:v04F9p01D5* + ID_MODEL_FROM_DATABASE=MFC-235C + +usb:v04F9p01D6* + ID_MODEL_FROM_DATABASE=MFC-260C + +usb:v04F9p01DF* + ID_MODEL_FROM_DATABASE=DCP-155C + +usb:v04F9p01E0* + ID_MODEL_FROM_DATABASE=MFC-265C + +usb:v04F9p01E1* + ID_MODEL_FROM_DATABASE=DCP-153C + +usb:v04F9p01E2* + ID_MODEL_FROM_DATABASE=DCP-157C + +usb:v04F9p01E3* + ID_MODEL_FROM_DATABASE=DCP-353C + +usb:v04F9p01E4* + ID_MODEL_FROM_DATABASE=DCP-357C + +usb:v04F9p01E7* + ID_MODEL_FROM_DATABASE=MFC-7340 + +usb:v04F9p01E9* + ID_MODEL_FROM_DATABASE=DCP-7040 + +usb:v04F9p01EA* + ID_MODEL_FROM_DATABASE=DCP-7030 + +usb:v04F9p01EB* + ID_MODEL_FROM_DATABASE=MFC-7320 + +usb:v04F9p01F4* + ID_MODEL_FROM_DATABASE=MFC-5890CN + +usb:v04F9p0223* + ID_MODEL_FROM_DATABASE=DCP-365CN + +usb:v04F9p0248* + ID_MODEL_FROM_DATABASE=DCP-7055 scanner/printer + +usb:v04F9p1000* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p1002* + ID_MODEL_FROM_DATABASE=Printer + +usb:v04F9p2002* + ID_MODEL_FROM_DATABASE=PTUSB Printing + +usb:v04F9p2004* + ID_MODEL_FROM_DATABASE=PT-2300/2310 p-Touch Laber Printer + +usb:v04F9p2015* + ID_MODEL_FROM_DATABASE=QL-500 P-touch label printer + +usb:v04F9p2016* + ID_MODEL_FROM_DATABASE=QL-550 P-touch label printer + +usb:v04F9p201A* + ID_MODEL_FROM_DATABASE=PT-18R P-touch label printer + +usb:v04F9p201B* + ID_MODEL_FROM_DATABASE=QL-650TD P-Touch Label Printer + +usb:v04F9p2027* + ID_MODEL_FROM_DATABASE=QL-560 P-Touch Label Printer + +usb:v04F9p2100* + ID_MODEL_FROM_DATABASE=Card Reader Writer + +usb:v04FA* + ID_VENDOR_FROM_DATABASE=Dallas Semiconductor + +usb:v04FAp2490* + ID_MODEL_FROM_DATABASE=DS1490F 2-in-1 Fob, 1-Wire adapter + +usb:v04FAp4201* + ID_MODEL_FROM_DATABASE=DS4201 Audio DAC + +usb:v04FB* + ID_VENDOR_FROM_DATABASE=Biostar Microtech International Corp. + +usb:v04FC* + ID_VENDOR_FROM_DATABASE=Sunplus Technology Co., Ltd + +usb:v04FCp0003* + ID_MODEL_FROM_DATABASE=CM1092 / Wintech CM-5098 Optical Mouse + +usb:v04FCp0005* + ID_MODEL_FROM_DATABASE=USB OpticalWheel Mouse + +usb:v04FCp0013* + ID_MODEL_FROM_DATABASE=ViewMate Desktop Mouse CC2201 + +usb:v04FCp0015* + ID_MODEL_FROM_DATABASE=ViewMate Desktop Mouse CC2201 + +usb:v04FCp00D3* + ID_MODEL_FROM_DATABASE=00052486 / Laser Mouse M1052 [hama] + +usb:v04FCp0171* + ID_MODEL_FROM_DATABASE=SPCA1527A/SPCA1528 SD card camera (Mass Storage mode) + +usb:v04FCp0201* + ID_MODEL_FROM_DATABASE=RS232C Adapter + +usb:v04FCp0232* + ID_MODEL_FROM_DATABASE=Fingerprint + +usb:v04FCp0538* + ID_MODEL_FROM_DATABASE=Wireless Optical Mouse 2.4G [Bright] + +usb:v04FCp0561* + ID_MODEL_FROM_DATABASE=Flexcam 100 + +usb:v04FCp05D8* + ID_MODEL_FROM_DATABASE=Wireless keyboard/mouse + +usb:v04FCp0C15* + ID_MODEL_FROM_DATABASE=SPIF215A SATA bridge + +usb:v04FCp0C25* + ID_MODEL_FROM_DATABASE=SATALink SPIF225A + +usb:v04FCp1528* + ID_MODEL_FROM_DATABASE=SPCA1527A/SPCA1528 SD card camera (webcam mode) + +usb:v04FCp1533* + ID_MODEL_FROM_DATABASE=Mass Storage + +usb:v04FCp2080* + ID_MODEL_FROM_DATABASE=ASUS Webcam + +usb:v04FCp500C* + ID_MODEL_FROM_DATABASE=CA500C Digital Camera + +usb:v04FCp504A* + ID_MODEL_FROM_DATABASE=Aiptek Mini PenCam 1.3 + +usb:v04FCp504B* + ID_MODEL_FROM_DATABASE=Aiptek Mega PockerCam 1.3/Maxell MaxPocket LE 1.3 + +usb:v04FCp5330* + ID_MODEL_FROM_DATABASE=Digitrex 2110 + +usb:v04FCp5331* + ID_MODEL_FROM_DATABASE=Vivitar Vivicam 10 + +usb:v04FCp5360* + ID_MODEL_FROM_DATABASE=Sunplus Generic Digital Camera + +usb:v04FCp5720* + ID_MODEL_FROM_DATABASE=Card Reader Driver + +usb:v04FCp7333* + ID_MODEL_FROM_DATABASE=Finet Technology Palmpix DC-85 + +usb:v04FCp757A* + ID_MODEL_FROM_DATABASE=Aiptek, MP315 MP3 Player + +usb:v04FCpFFFF* + ID_MODEL_FROM_DATABASE=PureDigital Ritz Disposable + +usb:v04FD* + ID_VENDOR_FROM_DATABASE=Soliton Systems, K.K. + +usb:v04FDp0003* + ID_MODEL_FROM_DATABASE=Smart Card Reader II + +usb:v04FE* + ID_VENDOR_FROM_DATABASE=PFU, Ltd + +usb:v04FF* + ID_VENDOR_FROM_DATABASE=E-CMOS Corp. + +usb:v0500* + ID_VENDOR_FROM_DATABASE=Siam United Hi-Tech + +usb:v0500p0001* + ID_MODEL_FROM_DATABASE=DART Keyboard Mouse + +usb:v0500p0002* + ID_MODEL_FROM_DATABASE=DART-2 Keyboard + +usb:v0501* + ID_VENDOR_FROM_DATABASE=Fujikura DDK, Ltd + +usb:v0502* + ID_VENDOR_FROM_DATABASE=Acer, Inc. + +usb:v0502p0001* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0502p0736* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0502p15B1* + ID_MODEL_FROM_DATABASE=PDA n311 + +usb:v0502p1631* + ID_MODEL_FROM_DATABASE=c10 Series + +usb:v0502p1632* + ID_MODEL_FROM_DATABASE=c20 Series + +usb:v0502p16E1* + ID_MODEL_FROM_DATABASE=n10 Handheld Sync + +usb:v0502p16E2* + ID_MODEL_FROM_DATABASE=n20 Pocket PC Sync + +usb:v0502p16E3* + ID_MODEL_FROM_DATABASE=n30 Handheld Sync + +usb:v0502p3202* + ID_MODEL_FROM_DATABASE=Liquid + +usb:v0502p3203* + ID_MODEL_FROM_DATABASE=Liquid (Debug mode) + +usb:v0502p3317* + ID_MODEL_FROM_DATABASE=Liquid + +usb:v0502p3325* + ID_MODEL_FROM_DATABASE=Iconia tablet A500 + +usb:v0502p3341* + ID_MODEL_FROM_DATABASE=Iconia tablet A500 + +usb:v0502pD001* + ID_MODEL_FROM_DATABASE=Divio NW801/DVC-V6+ Digital Camera + +usb:v0503* + ID_VENDOR_FROM_DATABASE=Hitachi America, Ltd + +usb:v0504* + ID_VENDOR_FROM_DATABASE=Hayes Microcomputer Products + +usb:v0506* + ID_VENDOR_FROM_DATABASE=3Com Corp. + +usb:v0506p009D* + ID_MODEL_FROM_DATABASE=HomeConnect Camera + +usb:v0506p00A0* + ID_MODEL_FROM_DATABASE=3CREB96 Bluetooth Adapter + +usb:v0506p00A1* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0506p00A2* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0506p00DF* + ID_MODEL_FROM_DATABASE=3Com Home Connect lite + +usb:v0506p0100* + ID_MODEL_FROM_DATABASE=HomeConnect ADSL Modem Driver + +usb:v0506p03E8* + ID_MODEL_FROM_DATABASE=3C19250 Ethernet [klsi] + +usb:v0506p0A01* + ID_MODEL_FROM_DATABASE=3CRSHEW696 Wireless Adapter + +usb:v0506p0A11* + ID_MODEL_FROM_DATABASE=3CRWE254G72 802.11g Adapter + +usb:v0506p11F8* + ID_MODEL_FROM_DATABASE=HomeConnect 3C460 + +usb:v0506p2922* + ID_MODEL_FROM_DATABASE=HomeConnect Cable Modem External with + +usb:v0506p3021* + ID_MODEL_FROM_DATABASE=U.S.Robotics 56000 Voice FaxModem Pro + +usb:v0506p4601* + ID_MODEL_FROM_DATABASE=3C460B 10/100 Ethernet Adapter + +usb:v0506pF002* + ID_MODEL_FROM_DATABASE=3CP4218 ADSL Modem (pre-init) + +usb:v0506pF003* + ID_MODEL_FROM_DATABASE=3CP4218 ADSL Modem + +usb:v0506pF100* + ID_MODEL_FROM_DATABASE=3CP4218 ADSL Modem (pre-init) + +usb:v0507* + ID_VENDOR_FROM_DATABASE=Hosiden Corp. + +usb:v0507p0011* + ID_MODEL_FROM_DATABASE=Konami ParaParaParadise Controller + +usb:v0508* + ID_VENDOR_FROM_DATABASE=Clarion Co., Ltd + +usb:v0509* + ID_VENDOR_FROM_DATABASE=Aztech Systems, Ltd + +usb:v0509p0801* + ID_MODEL_FROM_DATABASE=ADSL Modem + +usb:v0509p0802* + ID_MODEL_FROM_DATABASE=ADSL Modem (RFC1483) + +usb:v0509p0806* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v0509p080F* + ID_MODEL_FROM_DATABASE=Binatone ADSL500 Modem Network Interface + +usb:v0509p0812* + ID_MODEL_FROM_DATABASE=Pirelli ADSL Modem Network Interface + +usb:v050A* + ID_VENDOR_FROM_DATABASE=Cinch Connectors + +usb:v050B* + ID_VENDOR_FROM_DATABASE=Cable System International + +usb:v050C* + ID_VENDOR_FROM_DATABASE=InnoMedia, Inc. + +usb:v050D* + ID_VENDOR_FROM_DATABASE=Belkin Components + +usb:v050Dp0004* + ID_MODEL_FROM_DATABASE=Direct Connect + +usb:v050Dp0012* + ID_MODEL_FROM_DATABASE=F8T012 Bluetooth Adapter + +usb:v050Dp0013* + ID_MODEL_FROM_DATABASE=F8T013 Bluetooth Adapter + +usb:v050Dp0017* + ID_MODEL_FROM_DATABASE=B8T017 Bluetooth+EDR 2.1 + +usb:v050Dp003A* + ID_MODEL_FROM_DATABASE=Universal Media Reader + +usb:v050Dp0050* + ID_MODEL_FROM_DATABASE=F5D6050 802.11b Wireless Adapter v2000 [Atmel at76c503a] + +usb:v050Dp0081* + ID_MODEL_FROM_DATABASE=F8T001v2 Bluetooth + +usb:v050Dp0083* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v050Dp0084* + ID_MODEL_FROM_DATABASE=F8T003v2 Bluetooth + +usb:v050Dp0102* + ID_MODEL_FROM_DATABASE=Flip KVM + +usb:v050Dp0103* + ID_MODEL_FROM_DATABASE=F5U103 Serial Adapter [etek] + +usb:v050Dp0106* + ID_MODEL_FROM_DATABASE=VideoBus II Adapter, Video + +usb:v050Dp0108* + ID_MODEL_FROM_DATABASE=F1DE108B KVM + +usb:v050Dp0109* + ID_MODEL_FROM_DATABASE=F5U109/F5U409 PDA Adapter + +usb:v050Dp0115* + ID_MODEL_FROM_DATABASE=SCSI Adapter + +usb:v050Dp0119* + ID_MODEL_FROM_DATABASE=F5U120-PC Dual PS/2 Ports / F5U118-UNV ADB Adapter + +usb:v050Dp0121* + ID_MODEL_FROM_DATABASE=F5D5050 100Mbps Ethernet + +usb:v050Dp0122* + ID_MODEL_FROM_DATABASE=Ethernet Adapter + +usb:v050Dp0131* + ID_MODEL_FROM_DATABASE=Bluetooth Device with trace filter + +usb:v050Dp016A* + ID_MODEL_FROM_DATABASE=Bluetooth Mini Dongle + +usb:v050Dp0200* + ID_MODEL_FROM_DATABASE=Nostromo SpeedPad n52te Gaming Keyboard + +usb:v050Dp0201* + ID_MODEL_FROM_DATABASE=Peripheral Switch + +usb:v050Dp0208* + ID_MODEL_FROM_DATABASE=USBView II Video Adapter [nt1004] + +usb:v050Dp0210* + ID_MODEL_FROM_DATABASE=F5U228 Hi-Speed USB 2.0 DVD Creator + +usb:v050Dp0211* + ID_MODEL_FROM_DATABASE=F5U211 USB 2.0 15-in-1 Media Reader & Writer + +usb:v050Dp0224* + ID_MODEL_FROM_DATABASE=F5U224 USB 2.0 4-Port Hub + +usb:v050Dp0234* + ID_MODEL_FROM_DATABASE=F5U234 USB 2.0 4-Port Hub + +usb:v050Dp0237* + ID_MODEL_FROM_DATABASE=F5U237 USB 2.0 7-Port Hub + +usb:v050Dp0240* + ID_MODEL_FROM_DATABASE=F5U240 USB 2.0 CF Card Reader + +usb:v050Dp0249* + ID_MODEL_FROM_DATABASE=USB 2 Flash Media Device + +usb:v050Dp0257* + ID_MODEL_FROM_DATABASE=F5U257 Serial + +usb:v050Dp0304* + ID_MODEL_FROM_DATABASE=FSU304 USB 2.0 - 4 Ports Hub + +usb:v050Dp0307* + ID_MODEL_FROM_DATABASE=USB 2.0 - 7 ports Hub [FSU307] + +usb:v050Dp0409* + ID_MODEL_FROM_DATABASE=F5U409 Serial + +usb:v050Dp0551* + ID_MODEL_FROM_DATABASE=F6C550-AVR UPS + +usb:v050Dp0706* + ID_MODEL_FROM_DATABASE=2-N-1 7-Port Hub (Lower half) + +usb:v050Dp0802* + ID_MODEL_FROM_DATABASE=Nostromo n40 Gamepad + +usb:v050Dp0803* + ID_MODEL_FROM_DATABASE=Nostromo 1745 GamePad + +usb:v050Dp0805* + ID_MODEL_FROM_DATABASE=Nostromo N50 GamePad + +usb:v050Dp0815* + ID_MODEL_FROM_DATABASE=Nostromo n52 HID SpeedPad Mouse Wheel + +usb:v050Dp0826* + ID_MODEL_FROM_DATABASE=ErgoFit Wireless Optical Mouse (HID) + +usb:v050Dp0980* + ID_MODEL_FROM_DATABASE=HID UPS Battery + +usb:v050Dp1004* + ID_MODEL_FROM_DATABASE=F9L1004 802.11n Surf N300 XR Wireless Adapter [Realtek RTL8192CU] + +usb:v050Dp1102* + ID_MODEL_FROM_DATABASE=F7D1102 N150/Surf Micro Wireless Adapter v1000 [Realtek RTL8188CUS] + +usb:v050Dp1103* + ID_MODEL_FROM_DATABASE=F9L1103 N750 DB 802.11abgn 2x3:3 [Ralink RT3573] + +usb:v050Dp11F2* + ID_MODEL_FROM_DATABASE=ISY Wireless Micro Adapter IWL 2000 [RTL8188CUS] + +usb:v050Dp1202* + ID_MODEL_FROM_DATABASE=F5U120-PC Parallel Printer Port + +usb:v050Dp1203* + ID_MODEL_FROM_DATABASE=F5U120-PC Serial Port + +usb:v050Dp2103* + ID_MODEL_FROM_DATABASE=F7D2102 802.11n N300 Micro Wireless Adapter v3000 [Realtek RTL8192CU] + +usb:v050Dp21F1* + ID_MODEL_FROM_DATABASE=N300 WLAN N Adapter [ISY] + +usb:v050Dp258A* + ID_MODEL_FROM_DATABASE=F5U258 Host to Host cable + +usb:v050Dp3101* + ID_MODEL_FROM_DATABASE=F1DF102U/F1DG102U Flip Hub + +usb:v050Dp3201* + ID_MODEL_FROM_DATABASE=F1DF102U/F1DG102U Flip KVM + +usb:v050Dp4050* + ID_MODEL_FROM_DATABASE=ZD1211B + +usb:v050Dp5055* + ID_MODEL_FROM_DATABASE=F5D5055 Gigabit Network Adapter [AX88xxx] + +usb:v050Dp6050* + ID_MODEL_FROM_DATABASE=F6D6050 802.11abgn Wireless Adapter [Broadcom BCM4323] + +usb:v050Dp6051* + ID_MODEL_FROM_DATABASE=F5D6051 802.11b Wireless Network Adapter [ZyDAS ZD1201] + +usb:v050Dp615A* + ID_MODEL_FROM_DATABASE=F7D4101 / F9L1101 802.11abgn Wireless Adapter [Broadcom BCM4323] + +usb:v050Dp7050* + ID_MODEL_FROM_DATABASE=F5D7050 Wireless G Adapter v1000/v2000 [Intersil ISL3887] + +usb:v050Dp7051* + ID_MODEL_FROM_DATABASE=F5D7051 802.11g Adapter v1000 [Broadcom 4320 USB] + +usb:v050Dp705A* + ID_MODEL_FROM_DATABASE=F5D7050 Wireless G Adapter v3000 [Ralink RT2571W] + +usb:v050Dp705B* + ID_MODEL_FROM_DATABASE=Wireless G Adapter + +usb:v050Dp705C* + ID_MODEL_FROM_DATABASE=F5D7050 Wireless G Adapter v4000 [Zydas ZD1211B] + +usb:v050Dp705E* + ID_MODEL_FROM_DATABASE=F5D7050 Wireless G Adapter v5000 [Realtek RTL8187B] + +usb:v050Dp706A* + ID_MODEL_FROM_DATABASE=2-N-1 7-Port Hub (Upper half) + +usb:v050Dp8053* + ID_MODEL_FROM_DATABASE=F5D8053 N Wireless USB Adapter v1000/v4000 [Ralink RT2870] + +usb:v050Dp805C* + ID_MODEL_FROM_DATABASE=F5D8053 N Wireless Adapter v3000 [Ralink RT2870] + +usb:v050Dp805E* + ID_MODEL_FROM_DATABASE=F5D8053 N Wireless USB Adapter v5000 [Realtek RTL8192U] + +usb:v050Dp815C* + ID_MODEL_FROM_DATABASE=F5D8053 N Wireless USB Adapter v3000 [Ralink RT2870] + +usb:v050Dp815F* + ID_MODEL_FROM_DATABASE=F5D8053 N Wireless USB Adapter v6000 [Realtek RTL8192SU] + +usb:v050Dp825A* + ID_MODEL_FROM_DATABASE=F5D8055 N+ Wireless Adapter v1000 [Ralink RT2870] + +usb:v050Dp825B* + ID_MODEL_FROM_DATABASE=F5D8055 N+ Wireless Adapter v2000 [Ralink RT3072] + +usb:v050Dp845A* + ID_MODEL_FROM_DATABASE=F7D2101 802.11n Surf & Share Wireless Adapter v1000 [Realtek RTL8192SU] + +usb:v050Dp905B* + ID_MODEL_FROM_DATABASE=F5D9050 Wireless G+ MIMO Network Adapter v3000 [Ralink RT2573] + +usb:v050Dp905C* + ID_MODEL_FROM_DATABASE=F5D9050 Wireless G+ MIMO Network Adapter v4000 [Ralink RT2573] + +usb:v050Dp935A* + ID_MODEL_FROM_DATABASE=F6D4050 N150 Enhanced Wireless Network Adapter v1000 [Ralink RT3070] + +usb:v050Dp935B* + ID_MODEL_FROM_DATABASE=F6D4050 N150 Enhanced Wireless Network Adapter v2000 [Ralink RT3070] + +usb:v050Dp945A* + ID_MODEL_FROM_DATABASE=F7D1101 v1 Basic Wireless Adapter [Realtek RTL8188SU] + +usb:v050Dp945B* + ID_MODEL_FROM_DATABASE=F7D1101 v2 Basic Wireless Adapter [Ralink RT3370] + +usb:v050DpD321* + ID_MODEL_FROM_DATABASE=Dynex DX-NUSB 802.11bgn Wireless Adapter [Broadcom BCM43231] + +usb:v050E* + ID_VENDOR_FROM_DATABASE=Neon Technology, Inc. + +usb:v050F* + ID_VENDOR_FROM_DATABASE=KC Technology, Inc. + +usb:v050Fp0001* + ID_MODEL_FROM_DATABASE=Hub + +usb:v050Fp0003* + ID_MODEL_FROM_DATABASE=KC82C160S Hub + +usb:v050Fp0180* + ID_MODEL_FROM_DATABASE=KC-180 IrDA Dongle + +usb:v050Fp0190* + ID_MODEL_FROM_DATABASE=KC2190 USB Host-to-Host cable + +usb:v0510* + ID_VENDOR_FROM_DATABASE=Sejin Electron, Inc. + +usb:v0510p0001* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v0510p1000* + ID_MODEL_FROM_DATABASE=Keyboard with PS/2 Mouse Port + +usb:v0510pE001* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v0511* + ID_VENDOR_FROM_DATABASE=N'Able (DataBook) Technologies, Inc. + +usb:v0511p002B* + ID_MODEL_FROM_DATABASE=AOC DVB + +usb:v0512* + ID_VENDOR_FROM_DATABASE=Hualon Microelectronics Corp. + +usb:v0513* + ID_VENDOR_FROM_DATABASE=digital-X, Inc. + +usb:v0514* + ID_VENDOR_FROM_DATABASE=FCI Electronics + +usb:v0515* + ID_VENDOR_FROM_DATABASE=ACTC + +usb:v0516* + ID_VENDOR_FROM_DATABASE=Longwell Electronics + +usb:v0517* + ID_VENDOR_FROM_DATABASE=Butterfly Communications + +usb:v0518* + ID_VENDOR_FROM_DATABASE=EzKEY Corp. + +usb:v0518p0001* + ID_MODEL_FROM_DATABASE=USB to PS2 Adaptor v1.09 + +usb:v0518p0002* + ID_MODEL_FROM_DATABASE=EZ-9900C Keyboard + +usb:v0519* + ID_VENDOR_FROM_DATABASE=Star Micronics Co., Ltd + +usb:v0519p0003* + ID_MODEL_FROM_DATABASE=TSP100ECO/TSP100II + +usb:v0519pC002* + ID_MODEL_FROM_DATABASE=Xlive Bluetooth XBM-100S MP3 Player + +usb:v051A* + ID_VENDOR_FROM_DATABASE=WYSE Technology + +usb:v051ApA005* + ID_MODEL_FROM_DATABASE=Smart Display Version 9973 + +usb:v051B* + ID_VENDOR_FROM_DATABASE=Silicon Graphics + +usb:v051C* + ID_VENDOR_FROM_DATABASE=Shuttle, Inc. + +usb:v051Cp0005* + ID_MODEL_FROM_DATABASE=VFD Module + +usb:v051CpC001* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v051CpC002* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v051D* + ID_VENDOR_FROM_DATABASE=American Power Conversion + +usb:v051Dp0001* + ID_MODEL_FROM_DATABASE=UPS + +usb:v051Dp0002* + ID_MODEL_FROM_DATABASE=Uninterruptible Power Supply + +usb:v051Dp0003* + ID_MODEL_FROM_DATABASE=UPS + +usb:v051E* + ID_VENDOR_FROM_DATABASE=Scientific Atlanta, Inc. + +usb:v051F* + ID_VENDOR_FROM_DATABASE=IO Systems (Elite Electronics), Inc. + +usb:v0520* + ID_VENDOR_FROM_DATABASE=Taiwan Semiconductor Manufacturing Co. + +usb:v0521* + ID_VENDOR_FROM_DATABASE=Airborn Connectors + +usb:v0522* + ID_VENDOR_FROM_DATABASE=Advanced Connectek, Inc. + +usb:v0523* + ID_VENDOR_FROM_DATABASE=ATEN GmbH + +usb:v0524* + ID_VENDOR_FROM_DATABASE=Sola Electronics + +usb:v0525* + ID_VENDOR_FROM_DATABASE=Netchip Technology, Inc. + +usb:v0525p100D* + ID_MODEL_FROM_DATABASE=RFMD Bluetooth Device + +usb:v0525p1080* + ID_MODEL_FROM_DATABASE=NET1080 USB-USB Bridge + +usb:v0525p1200* + ID_MODEL_FROM_DATABASE=SSDC Adapter II + +usb:v0525p1265* + ID_MODEL_FROM_DATABASE=File-backed Storage Gadget + +usb:v0525pA0F0* + ID_MODEL_FROM_DATABASE=Cambridge Electronic Devices Power1401 mk 2 + +usb:v0525pA140* + ID_MODEL_FROM_DATABASE=USB Clik! 40 + +usb:v0525pA141* + ID_MODEL_FROM_DATABASE=(OME) PocketZip 40 MP3 Player Driver + +usb:v0525pA220* + ID_MODEL_FROM_DATABASE=GVC Bluetooth Wireless Adapter + +usb:v0525pA4A0* + ID_MODEL_FROM_DATABASE=Linux-USB "Gadget Zero" + +usb:v0525pA4A1* + ID_MODEL_FROM_DATABASE=Linux-USB Ethernet Gadget + +usb:v0525pA4A2* + ID_MODEL_FROM_DATABASE=Linux-USB Ethernet/RNDIS Gadget + +usb:v0525pA4A3* + ID_MODEL_FROM_DATABASE=Linux-USB user-mode isochronous source/sink + +usb:v0525pA4A4* + ID_MODEL_FROM_DATABASE=Linux-USB user-mode bulk source/sink + +usb:v0525pA4A5* + ID_MODEL_FROM_DATABASE=Linux-USB File Storage Gadget + +usb:v0525pA4A6* + ID_MODEL_FROM_DATABASE=Linux-USB Serial Gadget + +usb:v0525pA4A7* + ID_MODEL_FROM_DATABASE=Linux-USB Serial Gadget (CDC ACM mode) + +usb:v0525pA4A8* + ID_MODEL_FROM_DATABASE=Linux-USB Printer Gadget + +usb:v0525pA4A9* + ID_MODEL_FROM_DATABASE=Linux-USB OBEX Gadget + +usb:v0525pA4AA* + ID_MODEL_FROM_DATABASE=Linux-USB CDC Composite Gadge (Ethernet and ACM) + +usb:v0526* + ID_VENDOR_FROM_DATABASE=Temic MHS S.A. + +usb:v0527* + ID_VENDOR_FROM_DATABASE=ALTRA + +usb:v0528* + ID_VENDOR_FROM_DATABASE=ATI Technologies, Inc. + +usb:v0528p7561* + ID_MODEL_FROM_DATABASE=TV Wonder + +usb:v0528p7562* + ID_MODEL_FROM_DATABASE=TV Wonder, Edition (FN5) + +usb:v0528p7563* + ID_MODEL_FROM_DATABASE=TV Wonder, Edition (FI) + +usb:v0528p7564* + ID_MODEL_FROM_DATABASE=TV Wonder, Edition (FQ) + +usb:v0528p7565* + ID_MODEL_FROM_DATABASE=TV Wonder, Edition (NTSC+) + +usb:v0528p7566* + ID_MODEL_FROM_DATABASE=TV Wonder, Edition (FN5) + +usb:v0528p7567* + ID_MODEL_FROM_DATABASE=TV Wonder, Edition (FI) + +usb:v0528p7568* + ID_MODEL_FROM_DATABASE=TV Wonder, Edition (FQ) + +usb:v0528p7569* + ID_MODEL_FROM_DATABASE=Live! Pro (A) + +usb:v0528p756A* + ID_MODEL_FROM_DATABASE=Live! Pro Audio (O) + +usb:v0529* + ID_VENDOR_FROM_DATABASE=Aladdin Knowledge Systems + +usb:v0529p0001* + ID_MODEL_FROM_DATABASE=HASP v0.06 + +usb:v0529p030B* + ID_MODEL_FROM_DATABASE=eToken R1 v3.1.3.x + +usb:v0529p0313* + ID_MODEL_FROM_DATABASE=eToken R1 v3.2.3.x + +usb:v0529p031B* + ID_MODEL_FROM_DATABASE=eToken R1 v3.3.3.x + +usb:v0529p0323* + ID_MODEL_FROM_DATABASE=eToken R1 v3.4.3.x + +usb:v0529p0412* + ID_MODEL_FROM_DATABASE=eToken R2 v2.2.4.x + +usb:v0529p041A* + ID_MODEL_FROM_DATABASE=eToken R2 v2.2.4.x + +usb:v0529p0422* + ID_MODEL_FROM_DATABASE=eToken R2 v2.4.4.x + +usb:v0529p042A* + ID_MODEL_FROM_DATABASE=eToken R2 v2.5.4.x + +usb:v0529p050C* + ID_MODEL_FROM_DATABASE=eToken Pro v4.1.5.x + +usb:v0529p0514* + ID_MODEL_FROM_DATABASE=eToken Pro v4.2.5.4 + +usb:v0529p0600* + ID_MODEL_FROM_DATABASE=eToken Pro 64k (4.2) + +usb:v0529p0620* + ID_MODEL_FROM_DATABASE=Token JC + +usb:v052A* + ID_VENDOR_FROM_DATABASE=Crescent Heart Software + +usb:v052B* + ID_VENDOR_FROM_DATABASE=Tekom Technologies, Inc. + +usb:v052Bp0102* + ID_MODEL_FROM_DATABASE=Ca508A HP1020 Camera v.1.3.1.6 + +usb:v052Bp0801* + ID_MODEL_FROM_DATABASE=Yakumo MegaImage 37 + +usb:v052Bp1512* + ID_MODEL_FROM_DATABASE=Yakumo MegaImage IV + +usb:v052Bp1513* + ID_MODEL_FROM_DATABASE=Aosta CX100 Webcam + +usb:v052Bp1514* + ID_MODEL_FROM_DATABASE=Aosta CX100 Webcam Storage + +usb:v052Bp1905* + ID_MODEL_FROM_DATABASE=Yakumo MegaImage 47 + +usb:v052Bp1911* + ID_MODEL_FROM_DATABASE=Yakumo MegaImage 47 SL + +usb:v052Bp2202* + ID_MODEL_FROM_DATABASE=WDM Still Image Capture + +usb:v052Bp2203* + ID_MODEL_FROM_DATABASE=Sound Vision Stream Driver + +usb:v052Bp3A06* + ID_MODEL_FROM_DATABASE=DigiLife DDV-5120A + +usb:v052BpD001* + ID_MODEL_FROM_DATABASE=P35U Camera Capture + +usb:v052C* + ID_VENDOR_FROM_DATABASE=Canon Information Systems, Inc. + +usb:v052D* + ID_VENDOR_FROM_DATABASE=Avid Electronics Corp. + +usb:v052E* + ID_VENDOR_FROM_DATABASE=Standard Microsystems Corp. + +usb:v052F* + ID_VENDOR_FROM_DATABASE=Unicore Software, Inc. + +usb:v0530* + ID_VENDOR_FROM_DATABASE=American Microsystems, Inc. + +usb:v0531* + ID_VENDOR_FROM_DATABASE=Wacom Technology Corp. + +usb:v0532* + ID_VENDOR_FROM_DATABASE=Systech Corp. + +usb:v0533* + ID_VENDOR_FROM_DATABASE=Alcatel Mobile Phones + +usb:v0534* + ID_VENDOR_FROM_DATABASE=Motorola, Inc. + +usb:v0535* + ID_VENDOR_FROM_DATABASE=LIH TZU Electric Co., Ltd + +usb:v0536* + ID_VENDOR_FROM_DATABASE=Hand Held Products (Welch Allyn, Inc.) + +usb:v0536p01A0* + ID_MODEL_FROM_DATABASE=PDT + +usb:v0537* + ID_VENDOR_FROM_DATABASE=Inventec Corp. + +usb:v0538* + ID_VENDOR_FROM_DATABASE=Caldera International, Inc. (SCO) + +usb:v0539* + ID_VENDOR_FROM_DATABASE=Shyh Shiun Terminals Co., Ltd + +usb:v053A* + ID_VENDOR_FROM_DATABASE=PrehKeyTec GmbH + +usb:v053Ap0B00* + ID_MODEL_FROM_DATABASE=Hub + +usb:v053B* + ID_VENDOR_FROM_DATABASE=Global Village Communication + +usb:v053C* + ID_VENDOR_FROM_DATABASE=Institut of Microelectronic & Mechatronic Systems + +usb:v053D* + ID_VENDOR_FROM_DATABASE=Silicon Architect + +usb:v053E* + ID_VENDOR_FROM_DATABASE=Mobility Electronics + +usb:v053F* + ID_VENDOR_FROM_DATABASE=Synopsys, Inc. + +usb:v0540* + ID_VENDOR_FROM_DATABASE=UniAccess AB + +usb:v0540p0101* + ID_MODEL_FROM_DATABASE=Panache Surf ISDN TA + +usb:v0541* + ID_VENDOR_FROM_DATABASE=Sirf Technology, Inc. + +usb:v0543* + ID_VENDOR_FROM_DATABASE=ViewSonic Corp. + +usb:v0543p00FE* + ID_MODEL_FROM_DATABASE=G773 Monitor Hub + +usb:v0543p00FF* + ID_MODEL_FROM_DATABASE=P815 Monitor Hub + +usb:v0543p0BF2* + ID_MODEL_FROM_DATABASE=airpanel V150 Wireless Smart Display + +usb:v0543p0BF3* + ID_MODEL_FROM_DATABASE=airpanel V110 Wireless Smart Display + +usb:v0543p0ED9* + ID_MODEL_FROM_DATABASE=Color Pocket PC V35 + +usb:v0543p0F01* + ID_MODEL_FROM_DATABASE=airsync Wi-Fi Wireless Adapter + +usb:v0543p1527* + ID_MODEL_FROM_DATABASE=Color Pocket PC V36 + +usb:v0543p1529* + ID_MODEL_FROM_DATABASE=Color Pocket PC V37 + +usb:v0543p152B* + ID_MODEL_FROM_DATABASE=Color Pocket PC V38 + +usb:v0543p152E* + ID_MODEL_FROM_DATABASE=Pocket PC + +usb:v0543p1921* + ID_MODEL_FROM_DATABASE=Communicator Pocket PC + +usb:v0543p1922* + ID_MODEL_FROM_DATABASE=Smartphone + +usb:v0543p1923* + ID_MODEL_FROM_DATABASE=Pocket PC V30 + +usb:v0543p1A11* + ID_MODEL_FROM_DATABASE=Wireless 802.11g Adapter + +usb:v0543p1E60* + ID_MODEL_FROM_DATABASE=TA310 - ATSC/NTSC/PAL Driver(PCM4) + +usb:v0543p4153* + ID_MODEL_FROM_DATABASE=ViewSonic G773 Control (?) + +usb:v0544* + ID_VENDOR_FROM_DATABASE=Cristie Electronics, Ltd + +usb:v0545* + ID_VENDOR_FROM_DATABASE=Xirlink, Inc. + +usb:v0545p7333* + ID_MODEL_FROM_DATABASE=Trution Web Camera + +usb:v0545p8002* + ID_MODEL_FROM_DATABASE=IBM NetCamera + +usb:v0545p8009* + ID_MODEL_FROM_DATABASE=Veo PC Camera + +usb:v0545p800C* + ID_MODEL_FROM_DATABASE=Veo Stingray + +usb:v0545p800D* + ID_MODEL_FROM_DATABASE=Veo PC Camera + +usb:v0545p8080* + ID_MODEL_FROM_DATABASE=IBM C-It Webcam + +usb:v0545p808A* + ID_MODEL_FROM_DATABASE=Veo PC Camera + +usb:v0545p808B* + ID_MODEL_FROM_DATABASE=Veo Stingray + +usb:v0545p808D* + ID_MODEL_FROM_DATABASE=Veo PC Camera + +usb:v0545p810A* + ID_MODEL_FROM_DATABASE=Veo Advanced Connect Webcam + +usb:v0545p810B* + ID_MODEL_FROM_DATABASE=Veo PC Camera + +usb:v0545p810C* + ID_MODEL_FROM_DATABASE=Veo PC Camera + +usb:v0545p8135* + ID_MODEL_FROM_DATABASE=Veo Mobile/Advanced Web Camera + +usb:v0545p813A* + ID_MODEL_FROM_DATABASE=Veo PC Camera + +usb:v0545p813B* + ID_MODEL_FROM_DATABASE=Veo PC Camera + +usb:v0545p813C* + ID_MODEL_FROM_DATABASE=Veo Mobile/Advanced Web Camera + +usb:v0545p8333* + ID_MODEL_FROM_DATABASE=Veo Stingray/Connect Web Camera + +usb:v0545p888C* + ID_MODEL_FROM_DATABASE=eVision 123 digital camera + +usb:v0545p888D* + ID_MODEL_FROM_DATABASE=eVision 123 digital camera + +usb:v0546* + ID_VENDOR_FROM_DATABASE=Polaroid Corp. + +usb:v0546p0DAF* + ID_MODEL_FROM_DATABASE=PDC 2300Z + +usb:v0546p1BED* + ID_MODEL_FROM_DATABASE=PDC 1320 Camera + +usb:v0546p3097* + ID_MODEL_FROM_DATABASE=PDC 310 + +usb:v0546p3155* + ID_MODEL_FROM_DATABASE=PDC 3070 Camera + +usb:v0546p3187* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0546p3191* + ID_MODEL_FROM_DATABASE=Ion 80 Camera + +usb:v0546p3273* + ID_MODEL_FROM_DATABASE=PDC 2030 Camera + +usb:v0546p3304* + ID_MODEL_FROM_DATABASE=a500 Digital Camera + +usb:v0546pDCCF* + ID_MODEL_FROM_DATABASE=Sound Vision Stream Driver + +usb:v0547* + ID_VENDOR_FROM_DATABASE=Anchor Chips, Inc. + +usb:v0547p0001* + ID_MODEL_FROM_DATABASE=ICSI Bluetooth Device + +usb:v0547p1002* + ID_MODEL_FROM_DATABASE=Python2 WDM Encoder + +usb:v0547p1006* + ID_MODEL_FROM_DATABASE=Hantek DSO-2100 UF + +usb:v0547p2131* + ID_MODEL_FROM_DATABASE=AN2131 EZUSB Microcontroller + +usb:v0547p2235* + ID_MODEL_FROM_DATABASE=AN2235 EZUSB-FX Microcontroller + +usb:v0547p2710* + ID_MODEL_FROM_DATABASE=EZ-Link Loader (EZLNKLDR.SYS) + +usb:v0547p2720* + ID_MODEL_FROM_DATABASE=AN2720 USB-USB Bridge + +usb:v0547p2727* + ID_MODEL_FROM_DATABASE=Xircom PGUNET USB-USB Bridge + +usb:v0547p2750* + ID_MODEL_FROM_DATABASE=EZ-Link (EZLNKUSB.SYS) + +usb:v0547p2810* + ID_MODEL_FROM_DATABASE=Cypress ATAPI Bridge + +usb:v0547p7777* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0547p9999* + ID_MODEL_FROM_DATABASE=AN2131 uninitialized (?) + +usb:v0548* + ID_VENDOR_FROM_DATABASE=Tyan Computer Corp. + +usb:v0548p1005* + ID_MODEL_FROM_DATABASE=EZ Cart II GameBoy Flash Programmer + +usb:v0549* + ID_VENDOR_FROM_DATABASE=Pixera Corp. + +usb:v054A* + ID_VENDOR_FROM_DATABASE=Fujitsu Microelectronics, Inc. + +usb:v054B* + ID_VENDOR_FROM_DATABASE=New Media Corp. + +usb:v054C* + ID_VENDOR_FROM_DATABASE=Sony Corp. + +usb:v054Cp0001* + ID_MODEL_FROM_DATABASE=HUB + +usb:v054Cp0002* + ID_MODEL_FROM_DATABASE=Standard HUB + +usb:v054Cp0010* + ID_MODEL_FROM_DATABASE=DSC-S30/S70/S75/F505V/F505/FD92/W1 Cybershot/Mavica Digital Camera + +usb:v054Cp0014* + ID_MODEL_FROM_DATABASE=Nogatech USBVision (SY) + +usb:v054Cp0022* + ID_MODEL_FROM_DATABASE=Storage Adapter V2 (TPP) + +usb:v054Cp0023* + ID_MODEL_FROM_DATABASE=CD Writer + +usb:v054Cp0024* + ID_MODEL_FROM_DATABASE=Mavica CD-1000 Camera + +usb:v054Cp0025* + ID_MODEL_FROM_DATABASE=NW-MS7 Walkman MemoryStick Reader + +usb:v054Cp002B* + ID_MODEL_FROM_DATABASE=Portable USB Harddrive V2 + +usb:v054Cp002C* + ID_MODEL_FROM_DATABASE=USB Floppy Disk Drive + +usb:v054Cp002D* + ID_MODEL_FROM_DATABASE=MSAC-US1 MemoryStick Reader + +usb:v054Cp002E* + ID_MODEL_FROM_DATABASE=HandyCam MemoryStick Reader + +usb:v054Cp0030* + ID_MODEL_FROM_DATABASE=Storage Adapter V2 (TPP) + +usb:v054Cp0032* + ID_MODEL_FROM_DATABASE=MemoryStick MSC-U01 Reader + +usb:v054Cp0035* + ID_MODEL_FROM_DATABASE=Network Walkman (E) + +usb:v054Cp0036* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0037* + ID_MODEL_FROM_DATABASE=MG Memory Stick Reader/Writer + +usb:v054Cp0038* + ID_MODEL_FROM_DATABASE=Clie PEG-S300/D PalmOS PDA + +usb:v054Cp0039* + ID_MODEL_FROM_DATABASE=Network Walkman (MS) + +usb:v054Cp003C* + ID_MODEL_FROM_DATABASE=VAIO-MX LCD Control + +usb:v054Cp0045* + ID_MODEL_FROM_DATABASE=Digital Imaging Video + +usb:v054Cp0046* + ID_MODEL_FROM_DATABASE=Network Walkman + +usb:v054Cp004A* + ID_MODEL_FROM_DATABASE=Memory Stick Hi-Fi System + +usb:v054Cp004B* + ID_MODEL_FROM_DATABASE=Memory Stick Reader/Writer + +usb:v054Cp004E* + ID_MODEL_FROM_DATABASE=DSC-xxx (ptp) + +usb:v054Cp0056* + ID_MODEL_FROM_DATABASE=MG Memory Stick Reader/Writer + +usb:v054Cp0058* + ID_MODEL_FROM_DATABASE=Clie PEG-N7x0C PalmOS PDA Mass Storage + +usb:v054Cp0066* + ID_MODEL_FROM_DATABASE=Clie PEG-N7x0C/PEG-T425 PalmOS PDA Serial + +usb:v054Cp0067* + ID_MODEL_FROM_DATABASE=CMR-PC3 Webcam + +usb:v054Cp0069* + ID_MODEL_FROM_DATABASE=Memorystick MSC-U03 Reader + +usb:v054Cp006C* + ID_MODEL_FROM_DATABASE=FeliCa S310 [PaSoRi] + +usb:v054Cp006D* + ID_MODEL_FROM_DATABASE=Clie PEG-T425 PDA Mass Storage + +usb:v054Cp006F* + ID_MODEL_FROM_DATABASE=Network Walkman (EV) + +usb:v054Cp0073* + ID_MODEL_FROM_DATABASE=Storage CRX1750U + +usb:v054Cp0075* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0076* + ID_MODEL_FROM_DATABASE=Storage Adapter ACR-U20 + +usb:v054Cp007C* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp007F* + ID_MODEL_FROM_DATABASE=IC Recorder (MS) + +usb:v054Cp0080* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0081* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0084* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0085* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0086* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp008B* + ID_MODEL_FROM_DATABASE=Micro Vault 64M Mass Storage + +usb:v054Cp0095* + ID_MODEL_FROM_DATABASE=Clie s360 + +usb:v054Cp0099* + ID_MODEL_FROM_DATABASE=Clie NR70 PDA Mass Storage + +usb:v054Cp009A* + ID_MODEL_FROM_DATABASE=Clie NR70 PDA Serial + +usb:v054Cp00AB* + ID_MODEL_FROM_DATABASE=Visual Communication Camera (PCGA-UVC10) + +usb:v054Cp00AF* + ID_MODEL_FROM_DATABASE=DPP-EX Series Digital Photo Printer + +usb:v054Cp00BF* + ID_MODEL_FROM_DATABASE=IC Recorder (S) + +usb:v054Cp00C0* + ID_MODEL_FROM_DATABASE=Handycam DCR-30 + +usb:v054Cp00C6* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp00C7* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp00C8* + ID_MODEL_FROM_DATABASE=MZ-N710 Minidisc Walkman + +usb:v054Cp00C9* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp00CA* + ID_MODEL_FROM_DATABASE=MZ-DN430 Minidisc Walkman + +usb:v054Cp00CB* + ID_MODEL_FROM_DATABASE=MSAC-US20 Memory Stick Reader + +usb:v054Cp00DA* + ID_MODEL_FROM_DATABASE=Clie nx60 + +usb:v054Cp00E8* + ID_MODEL_FROM_DATABASE=Network Walkman (MS) + +usb:v054Cp00E9* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v054Cp00EB* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0101* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0103* + ID_MODEL_FROM_DATABASE=IC Recorder (ST) + +usb:v054Cp0105* + ID_MODEL_FROM_DATABASE=Micro Vault Hub + +usb:v054Cp0107* + ID_MODEL_FROM_DATABASE=VCC-U01 Visual Communication Camera + +usb:v054Cp0110* + ID_MODEL_FROM_DATABASE=Digital Imaging Video + +usb:v054Cp0113* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0116* + ID_MODEL_FROM_DATABASE=IC Recorder (P) + +usb:v054Cp0144* + ID_MODEL_FROM_DATABASE=Clie PEG-TH55 PDA + +usb:v054Cp0147* + ID_MODEL_FROM_DATABASE=Visual Communication Camera (PCGA-UVC11) + +usb:v054Cp014C* + ID_MODEL_FROM_DATABASE=Aiwa AM-NX9 Net MD Music Recorder MDLP + +usb:v054Cp014D* + ID_MODEL_FROM_DATABASE=Memory Stick Reader/Writer + +usb:v054Cp0154* + ID_MODEL_FROM_DATABASE=Eyetoy Audio Device + +usb:v054Cp015F* + ID_MODEL_FROM_DATABASE=IC Recorder (BM) + +usb:v054Cp0169* + ID_MODEL_FROM_DATABASE=Clie PEG-TJ35 PDA Serial + +usb:v054Cp016A* + ID_MODEL_FROM_DATABASE=Clie PEG-TJ35 PDA Mass Storage + +usb:v054Cp016B* + ID_MODEL_FROM_DATABASE=Mobile HDD + +usb:v054Cp016D* + ID_MODEL_FROM_DATABASE=IC Recorder (SX) + +usb:v054Cp016E* + ID_MODEL_FROM_DATABASE=DPP-EX50 Digital Photo Printer + +usb:v054Cp0171* + ID_MODEL_FROM_DATABASE=Fingerprint Sensor 3500 + +usb:v054Cp017E* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp017F* + ID_MODEL_FROM_DATABASE=Hi-MD WALKMAN + +usb:v054Cp0180* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0181* + ID_MODEL_FROM_DATABASE=Hi-MD WALKMAN + +usb:v054Cp0182* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0183* + ID_MODEL_FROM_DATABASE=Hi-MD WALKMAN + +usb:v054Cp0184* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0185* + ID_MODEL_FROM_DATABASE=Hi-MD WALKMAN + +usb:v054Cp0186* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0187* + ID_MODEL_FROM_DATABASE=Hi-MD MZ-NH600 WALKMAN + +usb:v054Cp0188* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp018A* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp018B* + ID_MODEL_FROM_DATABASE=Hi-MD SOUND GATE + +usb:v054Cp019E* + ID_MODEL_FROM_DATABASE=Micro Vault 1.0G Mass Storage + +usb:v054Cp01AD* + ID_MODEL_FROM_DATABASE=ATRAC HDD PA + +usb:v054Cp01BB* + ID_MODEL_FROM_DATABASE=FeliCa S320 [PaSoRi] + +usb:v054Cp01BD* + ID_MODEL_FROM_DATABASE=MRW62E Multi-Card Reader/Writer + +usb:v054Cp01C3* + ID_MODEL_FROM_DATABASE=NW-E55 Network Walkman + +usb:v054Cp01C6* + ID_MODEL_FROM_DATABASE=MEMORY P-AUDIO + +usb:v054Cp01C7* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v054Cp01C8* + ID_MODEL_FROM_DATABASE=PSP Type A + +usb:v054Cp01C9* + ID_MODEL_FROM_DATABASE=PSP Type B + +usb:v054Cp01D0* + ID_MODEL_FROM_DATABASE=DVD+RW External Drive DRU-700A + +usb:v054Cp01D5* + ID_MODEL_FROM_DATABASE=IC RECORDER + +usb:v054Cp01DE* + ID_MODEL_FROM_DATABASE=VRD-VC10 [Video Capture] + +usb:v054Cp01E9* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp01EA* + ID_MODEL_FROM_DATABASE=Hi-MD WALKMAN + +usb:v054Cp01EE* + ID_MODEL_FROM_DATABASE=IC RECORDER + +usb:v054Cp01FA* + ID_MODEL_FROM_DATABASE=IC Recorder (P) + +usb:v054Cp01FB* + ID_MODEL_FROM_DATABASE=NW-E405 Network Walkman + +usb:v054Cp020F* + ID_MODEL_FROM_DATABASE=Device + +usb:v054Cp0210* + ID_MODEL_FROM_DATABASE=ATRAC HDD PA + +usb:v054Cp0219* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp021A* + ID_MODEL_FROM_DATABASE=Hi-MD WALKMAN + +usb:v054Cp021B* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp021C* + ID_MODEL_FROM_DATABASE=Hi-MD WALKMAN + +usb:v054Cp021D* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0227* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v054Cp022C* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp022D* + ID_MODEL_FROM_DATABASE=Hi-MD AUDIO + +usb:v054Cp0233* + ID_MODEL_FROM_DATABASE=ATRAC HDD PA + +usb:v054Cp0236* + ID_MODEL_FROM_DATABASE=Mobile HDD + +usb:v054Cp023B* + ID_MODEL_FROM_DATABASE=DVD+RW External Drive DRU-800UL + +usb:v054Cp023C* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp023D* + ID_MODEL_FROM_DATABASE=Hi-MD WALKMAN + +usb:v054Cp0243* + ID_MODEL_FROM_DATABASE=MicroVault Flash Drive + +usb:v054Cp024B* + ID_MODEL_FROM_DATABASE=Vaio VGX Mouse + +usb:v054Cp0257* + ID_MODEL_FROM_DATABASE=IFU-WLM2 USB Wireless LAN Module (Wireless Mode) + +usb:v054Cp0258* + ID_MODEL_FROM_DATABASE=IFU-WLM2 USB Wireless LAN Module (Memory Mode) + +usb:v054Cp0259* + ID_MODEL_FROM_DATABASE=IC RECORDER + +usb:v054Cp0267* + ID_MODEL_FROM_DATABASE=Tachikoma Device + +usb:v054Cp0268* + ID_MODEL_FROM_DATABASE=Batoh Device / PlayStation 3 Controller + +usb:v054Cp0269* + ID_MODEL_FROM_DATABASE=HDD WALKMAN + +usb:v054Cp026A* + ID_MODEL_FROM_DATABASE=HDD WALKMAN + +usb:v054Cp0271* + ID_MODEL_FROM_DATABASE=IC Recorder (P) + +usb:v054Cp027C* + ID_MODEL_FROM_DATABASE=NETWORK WALKMAN + +usb:v054Cp027E* + ID_MODEL_FROM_DATABASE=SONY Communicator + +usb:v054Cp027F* + ID_MODEL_FROM_DATABASE=IC RECORDER + +usb:v054Cp0286* + ID_MODEL_FROM_DATABASE=Net MD + +usb:v054Cp0287* + ID_MODEL_FROM_DATABASE=Hi-MD WALKMAN + +usb:v054Cp0290* + ID_MODEL_FROM_DATABASE=VGP-UVC100 Visual Communication Camera + +usb:v054Cp029B* + ID_MODEL_FROM_DATABASE=PRS-500 eBook reader + +usb:v054Cp02A5* + ID_MODEL_FROM_DATABASE=MicroVault Flash Drive + +usb:v054Cp02AF* + ID_MODEL_FROM_DATABASE=Handycam DCR-DVD306E + +usb:v054Cp02C4* + ID_MODEL_FROM_DATABASE=Device + +usb:v054Cp02D1* + ID_MODEL_FROM_DATABASE=DVD RW + +usb:v054Cp02D2* + ID_MODEL_FROM_DATABASE=PSP Slim + +usb:v054Cp02E1* + ID_MODEL_FROM_DATABASE=FeliCa S330 [PaSoRi] + +usb:v054Cp02EA* + ID_MODEL_FROM_DATABASE=PlayStation 3 Memory Card Adaptor + +usb:v054Cp02F9* + ID_MODEL_FROM_DATABASE=DSC-H9 + +usb:v054Cp0317* + ID_MODEL_FROM_DATABASE=WALKMAN + +usb:v054Cp031A* + ID_MODEL_FROM_DATABASE=Walkman NWD-B103F + +usb:v054Cp031E* + ID_MODEL_FROM_DATABASE=PRS-300/PRS-505 eBook reader + +usb:v054Cp0325* + ID_MODEL_FROM_DATABASE=NWZ-A818 + +usb:v054Cp033E* + ID_MODEL_FROM_DATABASE=DSC-W120/W290 + +usb:v054Cp0346* + ID_MODEL_FROM_DATABASE=Handycam DCR-SR55E + +usb:v054Cp0348* + ID_MODEL_FROM_DATABASE=HandyCam HDR-TG3E + +usb:v054Cp035B* + ID_MODEL_FROM_DATABASE=Walkman NWZ-A828 + +usb:v054Cp035C* + ID_MODEL_FROM_DATABASE=NWZ-A726/A728/A729 + +usb:v054Cp0382* + ID_MODEL_FROM_DATABASE=Memory Stick PRO-HG Duo Adaptor (MSAC-UAH1) + +usb:v054Cp0385* + ID_MODEL_FROM_DATABASE=Walkman NWZ-E436F + +usb:v054Cp0387* + ID_MODEL_FROM_DATABASE=IC Recorder (P) + +usb:v054Cp03BC* + ID_MODEL_FROM_DATABASE=Webbie HD - MHS-CM1 + +usb:v054Cp03D1* + ID_MODEL_FROM_DATABASE=DPF-X95 + +usb:v054Cp03D3* + ID_MODEL_FROM_DATABASE=DR-BT100CX + +usb:v054Cp03D5* + ID_MODEL_FROM_DATABASE=PlayStation Move motion controller + +usb:v054Cp03FC* + ID_MODEL_FROM_DATABASE=WALKMAN [NWZ-E345] + +usb:v054Cp03FD* + ID_MODEL_FROM_DATABASE=Walkman NWZ-E443 + +usb:v054Cp042F* + ID_MODEL_FROM_DATABASE=PlayStation Move navigation controller + +usb:v054Cp0440* + ID_MODEL_FROM_DATABASE=DSC-H55 + +usb:v054Cp0485* + ID_MODEL_FROM_DATABASE=MHS-PM5 HD camcorder + +usb:v054Cp04CB* + ID_MODEL_FROM_DATABASE=WALKMAN NWZ-E354 + +usb:v054Cp1000* + ID_MODEL_FROM_DATABASE=Wireless Buzz! Receiver + +usb:v054D* + ID_VENDOR_FROM_DATABASE=Try Corp. + +usb:v054E* + ID_VENDOR_FROM_DATABASE=Proside Corp. + +usb:v054F* + ID_VENDOR_FROM_DATABASE=WYSE Technology Taiwan + +usb:v0550* + ID_VENDOR_FROM_DATABASE=Fuji Xerox Co., Ltd + +usb:v0550p0002* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v0550p0004* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v0550p0005* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v0551* + ID_VENDOR_FROM_DATABASE=CompuTrend Systems, Inc. + +usb:v0552* + ID_VENDOR_FROM_DATABASE=Philips Monitors + +usb:v0553* + ID_VENDOR_FROM_DATABASE=STMicroelectronics Imaging Division (VLSI Vision) + +usb:v0553p0001* + ID_MODEL_FROM_DATABASE=TerraCAM + +usb:v0553p0002* + ID_MODEL_FROM_DATABASE=CPiA Webcam + +usb:v0553p0100* + ID_MODEL_FROM_DATABASE=STV0672 Camera + +usb:v0553p0140* + ID_MODEL_FROM_DATABASE=Video Camera + +usb:v0553p0150* + ID_MODEL_FROM_DATABASE=CDE CAM 100 + +usb:v0553p0151* + ID_MODEL_FROM_DATABASE=Digital Blue QX5 Microscope + +usb:v0553p0200* + ID_MODEL_FROM_DATABASE=Dual-mode Camera0 + +usb:v0553p0201* + ID_MODEL_FROM_DATABASE=Dual-mode Camera1 + +usb:v0553p0202* + ID_MODEL_FROM_DATABASE=STV0680 Camera + +usb:v0553p0674* + ID_MODEL_FROM_DATABASE=Multi-mode Camera + +usb:v0553p0679* + ID_MODEL_FROM_DATABASE=NMS Video Camera (Webcam) + +usb:v0553p1002* + ID_MODEL_FROM_DATABASE=Che-ez! Splash + +usb:v0554* + ID_VENDOR_FROM_DATABASE=Dictaphone Corp. + +usb:v0555* + ID_VENDOR_FROM_DATABASE=ANAM S&T Co., Ltd + +usb:v0556* + ID_VENDOR_FROM_DATABASE=Asahi Kasei Microsystems Co., Ltd + +usb:v0556p0001* + ID_MODEL_FROM_DATABASE=AK5370 I/F A/D Converter + +usb:v0557* + ID_VENDOR_FROM_DATABASE=ATEN International Co., Ltd + +usb:v0557p2001* + ID_MODEL_FROM_DATABASE=UC-1284 Printer Port + +usb:v0557p2002* + ID_MODEL_FROM_DATABASE=10Mbps Ethernet [klsi] + +usb:v0557p2004* + ID_MODEL_FROM_DATABASE=UC-100KM PS/2 Mouse and Keyboard adapter + +usb:v0557p2006* + ID_MODEL_FROM_DATABASE=UC-1284B Printer Port + +usb:v0557p2007* + ID_MODEL_FROM_DATABASE=UC-110T 100Mbps Ethernet [pegasus] + +usb:v0557p2008* + ID_MODEL_FROM_DATABASE=UC-232A Serial Port [pl2303] + +usb:v0557p2009* + ID_MODEL_FROM_DATABASE=UC-210T Ethernet + +usb:v0557p2011* + ID_MODEL_FROM_DATABASE=UC-2324 4xSerial Ports [mos7840] + +usb:v0557p2202* + ID_MODEL_FROM_DATABASE=CS124U Miniview II KVM Switch + +usb:v0557p2213* + ID_MODEL_FROM_DATABASE=CS682 2-Port USB 2.0 DVI KVM Switch + +usb:v0557p2221* + ID_MODEL_FROM_DATABASE=Winbond Hermon + +usb:v0557p2404* + ID_MODEL_FROM_DATABASE=4-port switch + +usb:v0557p2600* + ID_MODEL_FROM_DATABASE=IDE Bridge + +usb:v0557p2701* + ID_MODEL_FROM_DATABASE=CE700A KVM Extender + +usb:v0557p4000* + ID_MODEL_FROM_DATABASE=DSB-650 10Mbps Ethernet [klsi] + +usb:v0557p7000* + ID_MODEL_FROM_DATABASE=Hub + +usb:v0557p7820* + ID_MODEL_FROM_DATABASE=UC-2322 2xSerial Ports [mos7820] + +usb:v0558* + ID_VENDOR_FROM_DATABASE=Truevision, Inc. + +usb:v0558p1009* + ID_MODEL_FROM_DATABASE=GW Instek GDS-1000 Oscilloscope + +usb:v0558p100A* + ID_MODEL_FROM_DATABASE=GW Instek GDS-1000A Oscilloscope + +usb:v0558p2009* + ID_MODEL_FROM_DATABASE=GW Instek GDS-2000 Oscilloscope + +usb:v0559* + ID_VENDOR_FROM_DATABASE=Cadence Design Systems, Inc. + +usb:v055A* + ID_VENDOR_FROM_DATABASE=Kenwood USA + +usb:v055B* + ID_VENDOR_FROM_DATABASE=KnowledgeTek, Inc. + +usb:v055C* + ID_VENDOR_FROM_DATABASE=Proton Electronic Ind. + +usb:v055D* + ID_VENDOR_FROM_DATABASE=Samsung Electro-Mechanics Co. + +usb:v055Dp0001* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v055Dp0BB1* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v055Dp1030* + ID_MODEL_FROM_DATABASE=Optical Wheel Mouse (OMS3CB/OMGB30) + +usb:v055Dp1031* + ID_MODEL_FROM_DATABASE=Optical Wheel Mouse (OMA3CB/OMGI30) + +usb:v055Dp1040* + ID_MODEL_FROM_DATABASE=Mouse HID Device + +usb:v055Dp1050* + ID_MODEL_FROM_DATABASE=E-Mail Optical Wheel Mouse (OMS3CE) + +usb:v055Dp1080* + ID_MODEL_FROM_DATABASE=Optical Wheel Mouse (OMS3CH) + +usb:v055Dp2020* + ID_MODEL_FROM_DATABASE=Floppy Disk Drive + +usb:v055Dp6780* + ID_MODEL_FROM_DATABASE=Keyboard V1 + +usb:v055Dp6781* + ID_MODEL_FROM_DATABASE=Keyboard Mouse + +usb:v055Dp8001* + ID_MODEL_FROM_DATABASE=E.M. Hub + +usb:v055Dp9000* + ID_MODEL_FROM_DATABASE=AnyCam [pwc] + +usb:v055Dp9001* + ID_MODEL_FROM_DATABASE=MPC-C30 AnyCam Premium for Notebooks [pwc] + +usb:v055DpA000* + ID_MODEL_FROM_DATABASE=SWL-2100U + +usb:v055DpA010* + ID_MODEL_FROM_DATABASE=WLAN Adapter(SWL-2300) + +usb:v055DpA011* + ID_MODEL_FROM_DATABASE=Boot Device + +usb:v055DpA012* + ID_MODEL_FROM_DATABASE=WLAN Adapter(SWL-2300) + +usb:v055DpA013* + ID_MODEL_FROM_DATABASE=WLAN Adapter(SWL-2350) + +usb:v055DpA230* + ID_MODEL_FROM_DATABASE=Boot Device + +usb:v055DpB000* + ID_MODEL_FROM_DATABASE=11Mbps WLAN Mini Adapter + +usb:v055DpB230* + ID_MODEL_FROM_DATABASE=Netopia 802.11b WLAN Adapter + +usb:v055DpB231* + ID_MODEL_FROM_DATABASE=LG Wireless LAN 11b Adapter + +usb:v055E* + ID_VENDOR_FROM_DATABASE=CTX Opto-Electronics Corp. + +usb:v055F* + ID_VENDOR_FROM_DATABASE=Mustek Systems, Inc. + +usb:v055Fp0001* + ID_MODEL_FROM_DATABASE=ScanExpress 1200 CU + +usb:v055Fp0002* + ID_MODEL_FROM_DATABASE=ScanExpress 600 CU + +usb:v055Fp0003* + ID_MODEL_FROM_DATABASE=ScanExpress 1200 USB + +usb:v055Fp0006* + ID_MODEL_FROM_DATABASE=ScanExpress 1200 UB + +usb:v055Fp0007* + ID_MODEL_FROM_DATABASE=ScanExpress 1200 USB Plus + +usb:v055Fp0008* + ID_MODEL_FROM_DATABASE=ScanExpress 1200 CU Plus + +usb:v055Fp0010* + ID_MODEL_FROM_DATABASE=BearPaw 1200F + +usb:v055Fp0210* + ID_MODEL_FROM_DATABASE=ScanExpress A3 USB + +usb:v055Fp0218* + ID_MODEL_FROM_DATABASE=BearPaw 2400 TA + +usb:v055Fp0219* + ID_MODEL_FROM_DATABASE=BearPaw 2400 TA Plus + +usb:v055Fp021A* + ID_MODEL_FROM_DATABASE=BearPaw 2448 TA Plus + +usb:v055Fp021B* + ID_MODEL_FROM_DATABASE=BearPaw 1200 CU Plus + +usb:v055Fp021C* + ID_MODEL_FROM_DATABASE=BearPaw 1200 CU Plus + +usb:v055Fp021D* + ID_MODEL_FROM_DATABASE=BearPaw 2400 CU Plus + +usb:v055Fp021E* + ID_MODEL_FROM_DATABASE=BearPaw 1200 TA/CS + +usb:v055Fp021F* + ID_MODEL_FROM_DATABASE=SNAPSCAN e22 + +usb:v055Fp0400* + ID_MODEL_FROM_DATABASE=BearPaw 2400 TA Pro + +usb:v055Fp0401* + ID_MODEL_FROM_DATABASE=P 3600 A3 Pro + +usb:v055Fp0408* + ID_MODEL_FROM_DATABASE=BearPaw 2448 CU Pro + +usb:v055Fp0409* + ID_MODEL_FROM_DATABASE=BearPaw 2448 TA Pro + +usb:v055Fp040B* + ID_MODEL_FROM_DATABASE=ScanExpress A3 USB 1200 PRO + +usb:v055Fp0873* + ID_MODEL_FROM_DATABASE=ScanExpress 600 USB + +usb:v055Fp1000* + ID_MODEL_FROM_DATABASE=BearPaw 4800 TA Pro + +usb:v055FpA350* + ID_MODEL_FROM_DATABASE=gSmart 350 Camera + +usb:v055FpA800* + ID_MODEL_FROM_DATABASE=MDC 800 Camera + +usb:v055FpB500* + ID_MODEL_FROM_DATABASE=MDC 3000 Camera + +usb:v055FpC005* + ID_MODEL_FROM_DATABASE=PC CAM 300A + +usb:v055FpC200* + ID_MODEL_FROM_DATABASE=gSmart 300 + +usb:v055FpC211* + ID_MODEL_FROM_DATABASE=Kowa Bs888e Microcamera + +usb:v055FpC220* + ID_MODEL_FROM_DATABASE=gSmart mini + +usb:v055FpC230* + ID_MODEL_FROM_DATABASE=Digicam 330K + +usb:v055FpC232* + ID_MODEL_FROM_DATABASE=MDC3500 Camera + +usb:v055FpC360* + ID_MODEL_FROM_DATABASE=DV 4000 Camera + +usb:v055FpC420* + ID_MODEL_FROM_DATABASE=gSmart mini 2 Camera + +usb:v055FpC430* + ID_MODEL_FROM_DATABASE=gSmart LCD 2 Camera + +usb:v055FpC440* + ID_MODEL_FROM_DATABASE=DV 3000 Camera + +usb:v055FpC520* + ID_MODEL_FROM_DATABASE=gSmart mini 3 Camera + +usb:v055FpC530* + ID_MODEL_FROM_DATABASE=gSmart LCD 2 Camera + +usb:v055FpC540* + ID_MODEL_FROM_DATABASE=gSmart D30 Camera + +usb:v055FpC630* + ID_MODEL_FROM_DATABASE=MDC 4000 Camera + +usb:v055FpC631* + ID_MODEL_FROM_DATABASE=MDC 4000 Camera + +usb:v055FpC650* + ID_MODEL_FROM_DATABASE=MDC 5500Z Camera + +usb:v055FpD001* + ID_MODEL_FROM_DATABASE=WCam 300 + +usb:v055FpD003* + ID_MODEL_FROM_DATABASE=WCam 300A + +usb:v055FpD004* + ID_MODEL_FROM_DATABASE=WCam 300AN + +usb:v0560* + ID_VENDOR_FROM_DATABASE=Interface Corp. + +usb:v0561* + ID_VENDOR_FROM_DATABASE=Oasis Design, Inc. + +usb:v0562* + ID_VENDOR_FROM_DATABASE=Telex Communications, Inc. + +usb:v0562p0001* + ID_MODEL_FROM_DATABASE=Enhanced Microphone + +usb:v0562p0002* + ID_MODEL_FROM_DATABASE=Telex Microphone + +usb:v0563* + ID_VENDOR_FROM_DATABASE=Immersion Corp. + +usb:v0564* + ID_VENDOR_FROM_DATABASE=Kodak Digital Product Center, Japan Ltd. (formerly Chinon Industries Inc.) + +usb:v0565* + ID_VENDOR_FROM_DATABASE=Peracom Networks, Inc. + +usb:v0565p0001* + ID_MODEL_FROM_DATABASE=Serial Port [etek] + +usb:v0565p0002* + ID_MODEL_FROM_DATABASE=Enet Ethernet [klsi] + +usb:v0565p0003* + ID_MODEL_FROM_DATABASE=@Home Networks Ethernet [klsi] + +usb:v0565p0005* + ID_MODEL_FROM_DATABASE=Enet2 Ethernet [klsi] + +usb:v0565p0041* + ID_MODEL_FROM_DATABASE=Peracom Remote NDIS Ethernet Adapter + +usb:v0566* + ID_VENDOR_FROM_DATABASE=Monterey International Corp. + +usb:v0566p0110* + ID_MODEL_FROM_DATABASE=ViewMate Desktop Mouse CC2201 + +usb:v0566p1001* + ID_MODEL_FROM_DATABASE=ViewMate Desktop Mouse CC2201 + +usb:v0566p1002* + ID_MODEL_FROM_DATABASE=ViewMate Desktop Mouse CC2201 + +usb:v0566p1003* + ID_MODEL_FROM_DATABASE=ViewMate Desktop Mouse CC2201 + +usb:v0566p1004* + ID_MODEL_FROM_DATABASE=ViewMate Desktop Mouse CC2201 + +usb:v0566p1005* + ID_MODEL_FROM_DATABASE=ViewMate Desktop Mouse CC2201 + +usb:v0566p1006* + ID_MODEL_FROM_DATABASE=ViewMate Desktop Mouse CC2201 + +usb:v0566p1007* + ID_MODEL_FROM_DATABASE=ViewMate Desktop Mouse CC2201 + +usb:v0566p2800* + ID_MODEL_FROM_DATABASE=MIC K/B + +usb:v0566p2801* + ID_MODEL_FROM_DATABASE=MIC K/B Mouse + +usb:v0566p2802* + ID_MODEL_FROM_DATABASE=Kbd Hub + +usb:v0566p3004* + ID_MODEL_FROM_DATABASE=Genius KB-29E + +usb:v0566p3107* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v0567* + ID_VENDOR_FROM_DATABASE=Xyratex International, Ltd + +usb:v0568* + ID_VENDOR_FROM_DATABASE=Quartz Ingenierie + +usb:v0569* + ID_VENDOR_FROM_DATABASE=SegaSoft + +usb:v056A* + ID_VENDOR_FROM_DATABASE=Wacom Co., Ltd + +usb:v056Ap0000* + ID_MODEL_FROM_DATABASE=PenPartner + +usb:v056Ap0001* + ID_MODEL_FROM_DATABASE=PenPartner 4x5 + +usb:v056Ap0002* + ID_MODEL_FROM_DATABASE=PenPartner 6x8 + +usb:v056Ap0003* + ID_MODEL_FROM_DATABASE=Cintiq Partner + +usb:v056Ap0010* + ID_MODEL_FROM_DATABASE=Graphire + +usb:v056Ap0011* + ID_MODEL_FROM_DATABASE=Graphire 2 4x5 + +usb:v056Ap0012* + ID_MODEL_FROM_DATABASE=Graphire 2 5x7 + +usb:v056Ap0013* + ID_MODEL_FROM_DATABASE=Graphire 3 4x5 + +usb:v056Ap0014* + ID_MODEL_FROM_DATABASE=Graphire 3 6x8 + +usb:v056Ap0015* + ID_MODEL_FROM_DATABASE=Graphire 4 4x5 + +usb:v056Ap0016* + ID_MODEL_FROM_DATABASE=Graphire 4 6x8 + +usb:v056Ap0017* + ID_MODEL_FROM_DATABASE=CTE-450 [Bamboo Fun] + +usb:v056Ap0018* + ID_MODEL_FROM_DATABASE=Bamboo Fun 6x8 + +usb:v056Ap0019* + ID_MODEL_FROM_DATABASE=Bamboo One Medium + +usb:v056Ap0020* + ID_MODEL_FROM_DATABASE=Intuos 4x5 + +usb:v056Ap0021* + ID_MODEL_FROM_DATABASE=Intuos 6x8 + +usb:v056Ap0022* + ID_MODEL_FROM_DATABASE=Intuos 9x12 + +usb:v056Ap0023* + ID_MODEL_FROM_DATABASE=Intuos 12x12 + +usb:v056Ap0024* + ID_MODEL_FROM_DATABASE=Intuos 12x18 + +usb:v056Ap0026* + ID_MODEL_FROM_DATABASE=Intuos5 touch S + +usb:v056Ap0027* + ID_MODEL_FROM_DATABASE=Intuos5 touch M + +usb:v056Ap0028* + ID_MODEL_FROM_DATABASE=Intuos5 touch L + +usb:v056Ap0029* + ID_MODEL_FROM_DATABASE=Intuos5 S + +usb:v056Ap002A* + ID_MODEL_FROM_DATABASE=Intuos5 M + +usb:v056Ap0030* + ID_MODEL_FROM_DATABASE=PL400 + +usb:v056Ap0031* + ID_MODEL_FROM_DATABASE=PL500 + +usb:v056Ap0032* + ID_MODEL_FROM_DATABASE=PL600 + +usb:v056Ap0033* + ID_MODEL_FROM_DATABASE=PL600SX + +usb:v056Ap0034* + ID_MODEL_FROM_DATABASE=PL550 + +usb:v056Ap0035* + ID_MODEL_FROM_DATABASE=PL800 + +usb:v056Ap0037* + ID_MODEL_FROM_DATABASE=PL700 + +usb:v056Ap0038* + ID_MODEL_FROM_DATABASE=PL510 + +usb:v056Ap0039* + ID_MODEL_FROM_DATABASE=DTU-710 + +usb:v056Ap003F* + ID_MODEL_FROM_DATABASE=Cintiq 21UX (DTZ-2100) + +usb:v056Ap0041* + ID_MODEL_FROM_DATABASE=Intuos2 4x5 + +usb:v056Ap0042* + ID_MODEL_FROM_DATABASE=Intuos2 6x8 + +usb:v056Ap0043* + ID_MODEL_FROM_DATABASE=Intuos2 9x12 + +usb:v056Ap0044* + ID_MODEL_FROM_DATABASE=Intuos2 12x12 + +usb:v056Ap0045* + ID_MODEL_FROM_DATABASE=Intuos2 12x18 + +usb:v056Ap0047* + ID_MODEL_FROM_DATABASE=Intuos2 6x8 + +usb:v056Ap0060* + ID_MODEL_FROM_DATABASE=Volito + +usb:v056Ap0061* + ID_MODEL_FROM_DATABASE=PenStation2 + +usb:v056Ap0062* + ID_MODEL_FROM_DATABASE=Volito2 4x5 + +usb:v056Ap0063* + ID_MODEL_FROM_DATABASE=Volito2 2x3 + +usb:v056Ap0064* + ID_MODEL_FROM_DATABASE=PenPartner2 + +usb:v056Ap0065* + ID_MODEL_FROM_DATABASE=Bamboo + +usb:v056Ap0069* + ID_MODEL_FROM_DATABASE=Bamboo One + +usb:v056Ap0081* + ID_MODEL_FROM_DATABASE=Graphire Wireless 6x8 + +usb:v056Ap0090* + ID_MODEL_FROM_DATABASE=TPC90 + +usb:v056Ap0093* + ID_MODEL_FROM_DATABASE=TPC93 + +usb:v056Ap009A* + ID_MODEL_FROM_DATABASE=TPC9A + +usb:v056Ap00B0* + ID_MODEL_FROM_DATABASE=Intuos3 4x5 + +usb:v056Ap00B1* + ID_MODEL_FROM_DATABASE=Intuos3 6x18 + +usb:v056Ap00B2* + ID_MODEL_FROM_DATABASE=Intuos3 9x12 + +usb:v056Ap00B3* + ID_MODEL_FROM_DATABASE=Intuos3 12x12 + +usb:v056Ap00B4* + ID_MODEL_FROM_DATABASE=Intuos3 12x19 + +usb:v056Ap00B5* + ID_MODEL_FROM_DATABASE=Intuos3 6x11 (PTZ-631W) + +usb:v056Ap00B7* + ID_MODEL_FROM_DATABASE=Intuos3 4x6 + +usb:v056Ap00B8* + ID_MODEL_FROM_DATABASE=Intuos4 4x6 + +usb:v056Ap00B9* + ID_MODEL_FROM_DATABASE=Intuos4 6x9 + +usb:v056Ap00BA* + ID_MODEL_FROM_DATABASE=Intuos4 8x13 + +usb:v056Ap00BB* + ID_MODEL_FROM_DATABASE=Intuos4 12x19 + +usb:v056Ap00C0* + ID_MODEL_FROM_DATABASE=DTF-521 + +usb:v056Ap00C4* + ID_MODEL_FROM_DATABASE=DTF-720 + +usb:v056Ap00C5* + ID_MODEL_FROM_DATABASE=Cintiq 20WSX + +usb:v056Ap00C6* + ID_MODEL_FROM_DATABASE=Cintiq 12WX + +usb:v056Ap00C7* + ID_MODEL_FROM_DATABASE=DTU-1931 + +usb:v056Ap00CC* + ID_MODEL_FROM_DATABASE=Cintiq 21UX (DTK-2100) + +usb:v056Ap00D1* + ID_MODEL_FROM_DATABASE=Bamboo Pen & Touch (CTH-460-DE) + +usb:v056Ap00D3* + ID_MODEL_FROM_DATABASE=Bamboo Fun (CTH-661) + +usb:v056Ap00D6* + ID_MODEL_FROM_DATABASE=Bamboo Pen & Touch (CTH-460) + +usb:v056Ap00DB* + ID_MODEL_FROM_DATABASE=Bamboo Fun (CTH-661SE-NL) + +usb:v056Ap00DD* + ID_MODEL_FROM_DATABASE=Bamboo Pen (CTL-470) + +usb:v056Ap00F6* + ID_MODEL_FROM_DATABASE=Cintiq 24HD touch (DTH-2400) touchscreen + +usb:v056Ap00F8* + ID_MODEL_FROM_DATABASE=Cintiq 24HD touch (DTH-2400) tablet + +usb:v056Ap0400* + ID_MODEL_FROM_DATABASE=PenPartner 4x5 + +usb:v056Ap4850* + ID_MODEL_FROM_DATABASE=PenPartner 6x8 + +usb:v056B* + ID_VENDOR_FROM_DATABASE=Decicon, Inc. + +usb:v056C* + ID_VENDOR_FROM_DATABASE=eTEK Labs + +usb:v056Cp0006* + ID_MODEL_FROM_DATABASE=KwikLink Host-Host Connector + +usb:v056Cp8007* + ID_MODEL_FROM_DATABASE=Kwik232 Serial Port + +usb:v056Cp8100* + ID_MODEL_FROM_DATABASE=KwikLink Host-Host Connector + +usb:v056Cp8101* + ID_MODEL_FROM_DATABASE=KwikLink USB-USB Bridge + +usb:v056D* + ID_VENDOR_FROM_DATABASE=EIZO Corp. + +usb:v056Dp0000* + ID_MODEL_FROM_DATABASE=Hub + +usb:v056Dp0001* + ID_MODEL_FROM_DATABASE=Monitor + +usb:v056Dp0002* + ID_MODEL_FROM_DATABASE=HID Monitor Controls + +usb:v056Dp0003* + ID_MODEL_FROM_DATABASE=Device Bay Controller + +usb:v056E* + ID_VENDOR_FROM_DATABASE=Elecom Co., Ltd + +usb:v056Ep0002* + ID_MODEL_FROM_DATABASE=29UO Mouse + +usb:v056Ep0072* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v056Ep200C* + ID_MODEL_FROM_DATABASE=LD-USB/TX + +usb:v056Ep4002* + ID_MODEL_FROM_DATABASE=Laneed 100Mbps Ethernet LD-USB/TX [pegasus] + +usb:v056Ep4005* + ID_MODEL_FROM_DATABASE=LD-USBL/TX + +usb:v056Ep400B* + ID_MODEL_FROM_DATABASE=LD-USB/TX + +usb:v056Ep4010* + ID_MODEL_FROM_DATABASE=LD-USB20 + +usb:v056Ep5003* + ID_MODEL_FROM_DATABASE=UC-SGT + +usb:v056Ep5004* + ID_MODEL_FROM_DATABASE=UC-SGT + +usb:v056Ep6008* + ID_MODEL_FROM_DATABASE=Flash Disk + +usb:v056EpABC1* + ID_MODEL_FROM_DATABASE=LD-USB/TX + +usb:v056F* + ID_VENDOR_FROM_DATABASE=Korea Data Systems Co., Ltd + +usb:v056FpCD00* + ID_MODEL_FROM_DATABASE=CDM-751 CD organizer + +usb:v0570* + ID_VENDOR_FROM_DATABASE=Epson America + +usb:v0571* + ID_VENDOR_FROM_DATABASE=Interex, Inc. + +usb:v0571p0002* + ID_MODEL_FROM_DATABASE=echoFX InterView Lite + +usb:v0572* + ID_VENDOR_FROM_DATABASE=Conexant Systems (Rockwell), Inc. + +usb:v0572p0001* + ID_MODEL_FROM_DATABASE=Ezcam II Webcam + +usb:v0572p0002* + ID_MODEL_FROM_DATABASE=Ezcam II Webcam + +usb:v0572p0040* + ID_MODEL_FROM_DATABASE=Wondereye CP-115 Webcam + +usb:v0572p0041* + ID_MODEL_FROM_DATABASE=Webcam Notebook + +usb:v0572p0042* + ID_MODEL_FROM_DATABASE=Webcam Notebook + +usb:v0572p1232* + ID_MODEL_FROM_DATABASE=V.90 modem + +usb:v0572p1234* + ID_MODEL_FROM_DATABASE=Typhoon Redfun Modem V90 56k + +usb:v0572p1252* + ID_MODEL_FROM_DATABASE=HCF V90 Data Fax Voice Modem + +usb:v0572p1253* + ID_MODEL_FROM_DATABASE=Zoom V.92 Faxmodem + +usb:v0572p1300* + ID_MODEL_FROM_DATABASE=SoftK56 Data Fax Voice CARP + +usb:v0572p1301* + ID_MODEL_FROM_DATABASE=Modem Enumerator + +usb:v0572p1328* + ID_MODEL_FROM_DATABASE=TrendNet TFM-561 modem + +usb:v0572p2000* + ID_MODEL_FROM_DATABASE=SoftGate 802.11 Adapter + +usb:v0572p2002* + ID_MODEL_FROM_DATABASE=SoftGate 802.11 Adapter + +usb:v0572p262A* + ID_MODEL_FROM_DATABASE=tm5600 Video & Audio Grabber Capture + +usb:v0572p8390* + ID_MODEL_FROM_DATABASE=WinFast PalmTop/Novo TV Video + +usb:v0572p8392* + ID_MODEL_FROM_DATABASE=WinFast PalmTop/Novo TV Video + +usb:v0572pCAFC* + ID_MODEL_FROM_DATABASE=CX861xx ROM Boot Loader + +usb:v0572pCAFE* + ID_MODEL_FROM_DATABASE=AccessRunner ADSL Modem + +usb:v0572pCB00* + ID_MODEL_FROM_DATABASE=ADSL Modem + +usb:v0572pCB01* + ID_MODEL_FROM_DATABASE=ADSL Modem + +usb:v0572pCB06* + ID_MODEL_FROM_DATABASE=StarModem Network Interface + +usb:v0573* + ID_VENDOR_FROM_DATABASE=Zoran Co. Personal Media Division (Nogatech) + +usb:v0573p0003* + ID_MODEL_FROM_DATABASE=USBGear USBG-V1 + +usb:v0573p0400* + ID_MODEL_FROM_DATABASE=D-Link V100 + +usb:v0573p0600* + ID_MODEL_FROM_DATABASE=Dazzle USBVision (1006) + +usb:v0573p1300* + ID_MODEL_FROM_DATABASE=leadtek USBVision (1006) + +usb:v0573p2000* + ID_MODEL_FROM_DATABASE=X10 va10a Wireless Camera + +usb:v0573p2001* + ID_MODEL_FROM_DATABASE=Dazzle EmMe (2001) + +usb:v0573p2101* + ID_MODEL_FROM_DATABASE=Zoran Co. PMD (Nogatech) AV-grabber Manhattan + +usb:v0573p2D00* + ID_MODEL_FROM_DATABASE=Osprey 50 + +usb:v0573p2D01* + ID_MODEL_FROM_DATABASE=Hauppauge USB-Live Model 600 + +usb:v0573p3000* + ID_MODEL_FROM_DATABASE=Dazzle MicroCam (NTSC) + +usb:v0573p3001* + ID_MODEL_FROM_DATABASE=Dazzle MicroCam (PAL) + +usb:v0573p4000* + ID_MODEL_FROM_DATABASE=Nogatech TV! (NTSC) + +usb:v0573p4001* + ID_MODEL_FROM_DATABASE=Nogatech TV! (PAL) + +usb:v0573p4002* + ID_MODEL_FROM_DATABASE=Nogatech TV! (PAL-I-) + +usb:v0573p4003* + ID_MODEL_FROM_DATABASE=Nogatech TV! (MF-) + +usb:v0573p4008* + ID_MODEL_FROM_DATABASE=Nogatech TV! (NTSC) (T) + +usb:v0573p4009* + ID_MODEL_FROM_DATABASE=Nogatech TV! (PAL) (T) + +usb:v0573p4010* + ID_MODEL_FROM_DATABASE=Nogatech TV! (NTSC) (A) + +usb:v0573p4100* + ID_MODEL_FROM_DATABASE=USB-TV FM (NTSC) + +usb:v0573p4110* + ID_MODEL_FROM_DATABASE=PNY USB-TV (NTSC) FM + +usb:v0573p4400* + ID_MODEL_FROM_DATABASE=Nogatech TV! Pro (NTSC) + +usb:v0573p4401* + ID_MODEL_FROM_DATABASE=Nogatech TV! Pro (PAL) + +usb:v0573p4450* + ID_MODEL_FROM_DATABASE=PixelView PlayTv-USB PRO (PAL) FM + +usb:v0573p4451* + ID_MODEL_FROM_DATABASE=Nogatech TV! Pro (PAL+) + +usb:v0573p4452* + ID_MODEL_FROM_DATABASE=Nogatech TV! Pro (PAL-I+) + +usb:v0573p4500* + ID_MODEL_FROM_DATABASE=Nogatech TV! Pro (NTSC) + +usb:v0573p4501* + ID_MODEL_FROM_DATABASE=Nogatech TV! Pro (PAL) + +usb:v0573p4550* + ID_MODEL_FROM_DATABASE=ZTV ZT-721 2.4GHz A/V Receiver + +usb:v0573p4551* + ID_MODEL_FROM_DATABASE=Dazzle TV! Pro Audio (P+) + +usb:v0573p4D00* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB USA + +usb:v0573p4D01* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB + +usb:v0573p4D02* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB UK + +usb:v0573p4D03* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB France + +usb:v0573p4D04* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV (PAL D/K) + +usb:v0573p4D10* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB with FM USA radio + +usb:v0573p4D11* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB (PAL) with FM radio + +usb:v0573p4D12* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB UK with FM Radio + +usb:v0573p4D14* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV (PAL D/K FM) + +usb:v0573p4D20* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB II (PAL) with FM radio + +usb:v0573p4D21* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB II (PAL) + +usb:v0573p4D22* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB II (PAL) Model 566 + +usb:v0573p4D23* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB France 4D23 + +usb:v0573p4D24* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV Pro (PAL D/K) + +usb:v0573p4D25* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB Model 40209 rev B234 + +usb:v0573p4D26* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB Model 40209 rev B243 + +usb:v0573p4D27* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB Model 40204 Rev B281 + +usb:v0573p4D28* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB Model 40204 rev B283 + +usb:v0573p4D29* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB Model 40205 rev B298 + +usb:v0573p4D2A* + ID_MODEL_FROM_DATABASE=Hauppague WinTV-USB Model 602 Rev B285 + +usb:v0573p4D2B* + ID_MODEL_FROM_DATABASE=Hauppague WinTV-USB Model 602 Rev B282 + +usb:v0573p4D2C* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV Pro (PAL/SECAM) + +usb:v0573p4D30* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB FM Model 40211 Rev B123 + +usb:v0573p4D31* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB III (PAL) with FM radio Model 568 + +usb:v0573p4D32* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB III (PAL) FM Model 573 + +usb:v0573p4D34* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV Pro (PAL D/K FM) + +usb:v0573p4D35* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB III (PAL) FM Model 597 + +usb:v0573p4D36* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV Pro (PAL B/G FM) + +usb:v0573p4D37* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV-USB Model 40219 rev E189 + +usb:v0573p4D38* + ID_MODEL_FROM_DATABASE=Hauppauge WinTV Pro (NTSC FM) + +usb:v0574* + ID_VENDOR_FROM_DATABASE=City University of Hong Kong + +usb:v0575* + ID_VENDOR_FROM_DATABASE=Philips Creative Display Solutions + +usb:v0576* + ID_VENDOR_FROM_DATABASE=BAFO/Quality Computer Accessories + +usb:v0577* + ID_VENDOR_FROM_DATABASE=ELSA + +usb:v0578* + ID_VENDOR_FROM_DATABASE=Intrinsix Corp. + +usb:v0579* + ID_VENDOR_FROM_DATABASE=GVC Corp. + +usb:v057A* + ID_VENDOR_FROM_DATABASE=Samsung Electronics America + +usb:v057B* + ID_VENDOR_FROM_DATABASE=Y-E Data, Inc. + +usb:v057Bp0000* + ID_MODEL_FROM_DATABASE=FlashBuster-U Floppy + +usb:v057Bp0001* + ID_MODEL_FROM_DATABASE=Tri-Media Reader Floppy + +usb:v057Bp0006* + ID_MODEL_FROM_DATABASE=Tri-Media Reader Card Reader + +usb:v057Bp0010* + ID_MODEL_FROM_DATABASE=Memory Stick Reader Writer + +usb:v057Bp0020* + ID_MODEL_FROM_DATABASE=HEXA Media Drive 6-in-1 Card Reader Writer + +usb:v057Bp0030* + ID_MODEL_FROM_DATABASE=Memory Card Viewer (TV) + +usb:v057C* + ID_VENDOR_FROM_DATABASE=AVM GmbH + +usb:v057Cp0B00* + ID_MODEL_FROM_DATABASE=ISDN-Controller B1 Family + +usb:v057Cp0C00* + ID_MODEL_FROM_DATABASE=ISDN-Controller FRITZ!Card + +usb:v057Cp1000* + ID_MODEL_FROM_DATABASE=ISDN-Controller FRITZ!Card v2.0 + +usb:v057Cp1900* + ID_MODEL_FROM_DATABASE=ISDN-Controller FRITZ!Card v2.1 + +usb:v057Cp2000* + ID_MODEL_FROM_DATABASE=ISDN-Connector FRITZ!X + +usb:v057Cp2200* + ID_MODEL_FROM_DATABASE=BlueFRITZ! + +usb:v057Cp2300* + ID_MODEL_FROM_DATABASE=Teledat X130 DSL + +usb:v057Cp2800* + ID_MODEL_FROM_DATABASE=ISDN-Connector TA + +usb:v057Cp3200* + ID_MODEL_FROM_DATABASE=Teledat X130 DSL + +usb:v057Cp3500* + ID_MODEL_FROM_DATABASE=FRITZ!Card DSL SL + +usb:v057Cp3701* + ID_MODEL_FROM_DATABASE=FRITZ!Box SL + +usb:v057Cp3702* + ID_MODEL_FROM_DATABASE=FRITZ!Box + +usb:v057Cp3800* + ID_MODEL_FROM_DATABASE=BlueFRITZ! Bluetooth Stick + +usb:v057Cp3A00* + ID_MODEL_FROM_DATABASE=FRITZ!Box Fon + +usb:v057Cp3C00* + ID_MODEL_FROM_DATABASE=FRITZ!Box WLAN + +usb:v057Cp3D00* + ID_MODEL_FROM_DATABASE=Fritz!Box + +usb:v057Cp3E01* + ID_MODEL_FROM_DATABASE=FRITZ!Box (Annex A) + +usb:v057Cp4001* + ID_MODEL_FROM_DATABASE=FRITZ!Box Fon (Annex A) + +usb:v057Cp4101* + ID_MODEL_FROM_DATABASE=FRITZ!Box WLAN (Annex A) + +usb:v057Cp4201* + ID_MODEL_FROM_DATABASE=FRITZ!Box Fon WLAN (Annex A) + +usb:v057Cp4601* + ID_MODEL_FROM_DATABASE=Eumex 5520PC (WinXP/2000) + +usb:v057Cp4602* + ID_MODEL_FROM_DATABASE=Eumex 400 (WinXP/2000) + +usb:v057Cp4701* + ID_MODEL_FROM_DATABASE=AVM FRITZ!Box Fon ata + +usb:v057Cp5401* + ID_MODEL_FROM_DATABASE=Eumex 300 IP + +usb:v057Cp5601* + ID_MODEL_FROM_DATABASE=AVM Fritz!WLAN [Texas Instruments TNETW1450] + +usb:v057Cp6201* + ID_MODEL_FROM_DATABASE=AVM Fritz!WLAN v1.1 [Texas Instruments TNETW1450] + +usb:v057Cp62FF* + ID_MODEL_FROM_DATABASE=AVM Fritz!WLAN USB (in CD-ROM-mode) + +usb:v057Cp8401* + ID_MODEL_FROM_DATABASE=Fritz!WLAN N [Atheros AR9001U] + +usb:v057Cp8402* + ID_MODEL_FROM_DATABASE=Fritz!WLAN N 2.4 [Atheros AR9001U] + +usb:v057Cp8403* + ID_MODEL_FROM_DATABASE=Fritz!WLAN N v2 [Atheros AR9271] + +usb:v057Cp84FF* + ID_MODEL_FROM_DATABASE=AVM Fritz!WLAN USB N (in CD-ROM-mode) + +usb:v057D* + ID_VENDOR_FROM_DATABASE=Shark Multimedia, Inc. + +usb:v057E* + ID_VENDOR_FROM_DATABASE=Nintendo Co., Ltd + +usb:v057Ep0305* + ID_MODEL_FROM_DATABASE=Broadcom BCM2045A Bluetooth Radio [Nintendo Wii] + +usb:v057Ep0306* + ID_MODEL_FROM_DATABASE=Wii Remote Controller RVL-003 + +usb:v057F* + ID_VENDOR_FROM_DATABASE=QuickShot, Ltd + +usb:v057Fp6238* + ID_MODEL_FROM_DATABASE=USB StrikePad + +usb:v0580* + ID_VENDOR_FROM_DATABASE=Denron, Inc. + +usb:v0581* + ID_VENDOR_FROM_DATABASE=Racal Data Group + +usb:v0582* + ID_VENDOR_FROM_DATABASE=Roland Corp. + +usb:v0582p0000* + ID_MODEL_FROM_DATABASE=UA-100(G) + +usb:v0582p0002* + ID_MODEL_FROM_DATABASE=UM-4/MPU-64 MIDI Interface + +usb:v0582p0003* + ID_MODEL_FROM_DATABASE=SoundCanvas SC-8850 + +usb:v0582p0004* + ID_MODEL_FROM_DATABASE=U-8 + +usb:v0582p0005* + ID_MODEL_FROM_DATABASE=UM-2(C/EX) + +usb:v0582p0007* + ID_MODEL_FROM_DATABASE=SoundCanvas SC-8820 + +usb:v0582p0008* + ID_MODEL_FROM_DATABASE=PC-300 + +usb:v0582p0009* + ID_MODEL_FROM_DATABASE=UM-1(E/S/X) + +usb:v0582p000B* + ID_MODEL_FROM_DATABASE=SK-500 + +usb:v0582p000C* + ID_MODEL_FROM_DATABASE=SC-D70 + +usb:v0582p0010* + ID_MODEL_FROM_DATABASE=EDIROL UA-5 + +usb:v0582p0011* + ID_MODEL_FROM_DATABASE=Edirol UA-5 Sound Capture + +usb:v0582p0012* + ID_MODEL_FROM_DATABASE=XV-5050 + +usb:v0582p0013* + ID_MODEL_FROM_DATABASE=XV-5050 + +usb:v0582p0014* + ID_MODEL_FROM_DATABASE=EDIROL UM-880 MIDI I/F (native) + +usb:v0582p0015* + ID_MODEL_FROM_DATABASE=EDIROL UM-880 MIDI I/F (generic) + +usb:v0582p0016* + ID_MODEL_FROM_DATABASE=EDIROL SD-90 + +usb:v0582p0017* + ID_MODEL_FROM_DATABASE=EDIROL SD-90 + +usb:v0582p0018* + ID_MODEL_FROM_DATABASE=UA-1A + +usb:v0582p001B* + ID_MODEL_FROM_DATABASE=MMP-2 + +usb:v0582p001C* + ID_MODEL_FROM_DATABASE=MMP-2 + +usb:v0582p001D* + ID_MODEL_FROM_DATABASE=V-SYNTH + +usb:v0582p001E* + ID_MODEL_FROM_DATABASE=V-SYNTH + +usb:v0582p0023* + ID_MODEL_FROM_DATABASE=EDIROL UM-550 + +usb:v0582p0024* + ID_MODEL_FROM_DATABASE=EDIROL UM-550 + +usb:v0582p0025* + ID_MODEL_FROM_DATABASE=EDIROL UA-20 + +usb:v0582p0026* + ID_MODEL_FROM_DATABASE=EDIROL UA-20 + +usb:v0582p0027* + ID_MODEL_FROM_DATABASE=EDIROL SD-20 + +usb:v0582p0028* + ID_MODEL_FROM_DATABASE=EDIROL SD-20 + +usb:v0582p0029* + ID_MODEL_FROM_DATABASE=EDIROL SD-80 + +usb:v0582p002A* + ID_MODEL_FROM_DATABASE=EDIROL SD-80 + +usb:v0582p002B* + ID_MODEL_FROM_DATABASE=EDIROL UA-700 + +usb:v0582p002C* + ID_MODEL_FROM_DATABASE=EDIROL UA-700 + +usb:v0582p002D* + ID_MODEL_FROM_DATABASE=XV-2020 Synthesizer + +usb:v0582p002E* + ID_MODEL_FROM_DATABASE=XV-2020 Synthesizer + +usb:v0582p002F* + ID_MODEL_FROM_DATABASE=VariOS + +usb:v0582p0030* + ID_MODEL_FROM_DATABASE=VariOS + +usb:v0582p0033* + ID_MODEL_FROM_DATABASE=EDIROL PCR + +usb:v0582p0034* + ID_MODEL_FROM_DATABASE=EDIROL PCR + +usb:v0582p0035* + ID_MODEL_FROM_DATABASE=M-1000 + +usb:v0582p0037* + ID_MODEL_FROM_DATABASE=Digital Piano + +usb:v0582p0038* + ID_MODEL_FROM_DATABASE=Digital Piano + +usb:v0582p003B* + ID_MODEL_FROM_DATABASE=BOSS GS-10 + +usb:v0582p003C* + ID_MODEL_FROM_DATABASE=BOSS GS-10 + +usb:v0582p0040* + ID_MODEL_FROM_DATABASE=GI-20 + +usb:v0582p0041* + ID_MODEL_FROM_DATABASE=GI-20 + +usb:v0582p0042* + ID_MODEL_FROM_DATABASE=RS-70 + +usb:v0582p0043* + ID_MODEL_FROM_DATABASE=RS-70 + +usb:v0582p0044* + ID_MODEL_FROM_DATABASE=EDIROL UA-1000 + +usb:v0582p0047* + ID_MODEL_FROM_DATABASE=EDIROL UR-80 WAVE + +usb:v0582p0048* + ID_MODEL_FROM_DATABASE=EDIROL UR-80 MIDI + +usb:v0582p0049* + ID_MODEL_FROM_DATABASE=EDIROL UR-80 WAVE + +usb:v0582p004A* + ID_MODEL_FROM_DATABASE=EDIROL UR-80 MIDI + +usb:v0582p004B* + ID_MODEL_FROM_DATABASE=EDIROL M-100FX + +usb:v0582p004C* + ID_MODEL_FROM_DATABASE=EDIROL PCR-A WAVE + +usb:v0582p004D* + ID_MODEL_FROM_DATABASE=EDIROL PCR-A MIDI + +usb:v0582p004E* + ID_MODEL_FROM_DATABASE=EDIROL PCR-A WAVE + +usb:v0582p004F* + ID_MODEL_FROM_DATABASE=EDIROL PCR-A MIDI + +usb:v0582p0050* + ID_MODEL_FROM_DATABASE=EDIROL UA-3FX + +usb:v0582p0052* + ID_MODEL_FROM_DATABASE=EDIROL UM-1SX + +usb:v0582p0054* + ID_MODEL_FROM_DATABASE=Digital Piano + +usb:v0582p0060* + ID_MODEL_FROM_DATABASE=EXR Series + +usb:v0582p0064* + ID_MODEL_FROM_DATABASE=EDIROL PCR-1 WAVE + +usb:v0582p0065* + ID_MODEL_FROM_DATABASE=EDIROL PCR-1 MIDI + +usb:v0582p0066* + ID_MODEL_FROM_DATABASE=EDIROL PCR-1 WAVE + +usb:v0582p0067* + ID_MODEL_FROM_DATABASE=EDIROL PCR-1 MIDI + +usb:v0582p006A* + ID_MODEL_FROM_DATABASE=SP-606 + +usb:v0582p006B* + ID_MODEL_FROM_DATABASE=SP-606 + +usb:v0582p006D* + ID_MODEL_FROM_DATABASE=FANTOM-X + +usb:v0582p006E* + ID_MODEL_FROM_DATABASE=FANTOM-X + +usb:v0582p0073* + ID_MODEL_FROM_DATABASE=EDIROL UA-25 + +usb:v0582p0074* + ID_MODEL_FROM_DATABASE=EDIROL UA-25 + +usb:v0582p0075* + ID_MODEL_FROM_DATABASE=BOSS DR-880 + +usb:v0582p0076* + ID_MODEL_FROM_DATABASE=BOSS DR-880 + +usb:v0582p007A* + ID_MODEL_FROM_DATABASE=RD + +usb:v0582p007B* + ID_MODEL_FROM_DATABASE=RD + +usb:v0582p007D* + ID_MODEL_FROM_DATABASE=EDIROL UA-101 + +usb:v0582p0080* + ID_MODEL_FROM_DATABASE=G-70 + +usb:v0582p0081* + ID_MODEL_FROM_DATABASE=G-70 + +usb:v0582p0084* + ID_MODEL_FROM_DATABASE=V-SYNTH XT + +usb:v0582p0089* + ID_MODEL_FROM_DATABASE=BOSS GT-PRO + +usb:v0582p008B* + ID_MODEL_FROM_DATABASE=EDIROL PC-50 + +usb:v0582p008C* + ID_MODEL_FROM_DATABASE=EDIROL PC-50 + +usb:v0582p008D* + ID_MODEL_FROM_DATABASE=EDIROL UA-101 USB1 + +usb:v0582p0092* + ID_MODEL_FROM_DATABASE=EDIROL PC-80 WAVE + +usb:v0582p0093* + ID_MODEL_FROM_DATABASE=EDIROL PC-80 MIDI + +usb:v0582p0096* + ID_MODEL_FROM_DATABASE=EDIROL UA-1EX + +usb:v0582p009A* + ID_MODEL_FROM_DATABASE=EDIROL UM-3EX + +usb:v0582p009D* + ID_MODEL_FROM_DATABASE=EDIROL UM-1 + +usb:v0582p00A0* + ID_MODEL_FROM_DATABASE=MD-P1 + +usb:v0582p00A2* + ID_MODEL_FROM_DATABASE=Digital Piano + +usb:v0582p00A3* + ID_MODEL_FROM_DATABASE=EDIROL UA-4FX + +usb:v0582p00A6* + ID_MODEL_FROM_DATABASE=Juno-G + +usb:v0582p00A9* + ID_MODEL_FROM_DATABASE=MC-808 + +usb:v0582p00AD* + ID_MODEL_FROM_DATABASE=SH-201 + +usb:v0582p00B2* + ID_MODEL_FROM_DATABASE=VG-99 + +usb:v0582p00B3* + ID_MODEL_FROM_DATABASE=VG-99 + +usb:v0582p00B7* + ID_MODEL_FROM_DATABASE=BK-7m/VIMA JM-5/8 + +usb:v0582p00C2* + ID_MODEL_FROM_DATABASE=SonicCell + +usb:v0582p00C4* + ID_MODEL_FROM_DATABASE=EDIROL M-16DX + +usb:v0582p00C5* + ID_MODEL_FROM_DATABASE=SP-555 + +usb:v0582p00C7* + ID_MODEL_FROM_DATABASE=V-Synth GT + +usb:v0582p00D1* + ID_MODEL_FROM_DATABASE=Music Atelier + +usb:v0582p00D3* + ID_MODEL_FROM_DATABASE=M-380/400 + +usb:v0582p00DA* + ID_MODEL_FROM_DATABASE=BOSS GT-10 + +usb:v0582p00DB* + ID_MODEL_FROM_DATABASE=BOSS GT-10 Guitar Effects Processor + +usb:v0582p00DC* + ID_MODEL_FROM_DATABASE=BOSS GT-10B + +usb:v0582p00DE* + ID_MODEL_FROM_DATABASE=Fantom G + +usb:v0582p00E6* + ID_MODEL_FROM_DATABASE=EDIROL UA-25EX (Advanced mode) + +usb:v0582p00E7* + ID_MODEL_FROM_DATABASE=EDIROL UA-25EX + +usb:v0582p00E9* + ID_MODEL_FROM_DATABASE=UA-1G + +usb:v0582p00EB* + ID_MODEL_FROM_DATABASE=VS-100 + +usb:v0582p00F6* + ID_MODEL_FROM_DATABASE=GW-8/AX-Synth + +usb:v0582p00F8* + ID_MODEL_FROM_DATABASE=JUNO Series + +usb:v0582p00FC* + ID_MODEL_FROM_DATABASE=VS-700C + +usb:v0582p00FD* + ID_MODEL_FROM_DATABASE=VS-700 + +usb:v0582p00FE* + ID_MODEL_FROM_DATABASE=VS-700 M1 + +usb:v0582p00FF* + ID_MODEL_FROM_DATABASE=VS-700 M2 + +usb:v0582p0100* + ID_MODEL_FROM_DATABASE=VS-700 + +usb:v0582p0101* + ID_MODEL_FROM_DATABASE=VS-700 M2 + +usb:v0582p0102* + ID_MODEL_FROM_DATABASE=VB-99 + +usb:v0582p0104* + ID_MODEL_FROM_DATABASE=UM-1G + +usb:v0582p0106* + ID_MODEL_FROM_DATABASE=UM-2G + +usb:v0582p0108* + ID_MODEL_FROM_DATABASE=UM-3G + +usb:v0582p0109* + ID_MODEL_FROM_DATABASE=eBand JS-8 + +usb:v0582p010D* + ID_MODEL_FROM_DATABASE=A-500S + +usb:v0582p010F* + ID_MODEL_FROM_DATABASE=A-PRO + +usb:v0582p0110* + ID_MODEL_FROM_DATABASE=A-PRO + +usb:v0582p0111* + ID_MODEL_FROM_DATABASE=GAIA SH-01 + +usb:v0582p0113* + ID_MODEL_FROM_DATABASE=ME-25 + +usb:v0582p0114* + ID_MODEL_FROM_DATABASE=SD-50 + +usb:v0582p0116* + ID_MODEL_FROM_DATABASE=WAVE/MP3 RECORDER R-05 + +usb:v0582p0117* + ID_MODEL_FROM_DATABASE=VS-20 + +usb:v0582p0119* + ID_MODEL_FROM_DATABASE=OCTAPAD SPD-30 + +usb:v0582p011C* + ID_MODEL_FROM_DATABASE=Lucina AX-09 + +usb:v0582p011E* + ID_MODEL_FROM_DATABASE=BR-800 + +usb:v0582p0120* + ID_MODEL_FROM_DATABASE=OCTA-CAPTURE + +usb:v0582p0121* + ID_MODEL_FROM_DATABASE=OCTA-CAPTURE + +usb:v0582p0123* + ID_MODEL_FROM_DATABASE=JUNO-Gi + +usb:v0582p0124* + ID_MODEL_FROM_DATABASE=M-300 + +usb:v0582p0127* + ID_MODEL_FROM_DATABASE=GR-55 + +usb:v0582p012A* + ID_MODEL_FROM_DATABASE=UM-ONE + +usb:v0582p012B* + ID_MODEL_FROM_DATABASE=DUO-CAPTURE + +usb:v0582p012F* + ID_MODEL_FROM_DATABASE=QUAD-CAPTURE + +usb:v0582p0130* + ID_MODEL_FROM_DATABASE=MICRO BR BR-80 + +usb:v0582p0132* + ID_MODEL_FROM_DATABASE=TRI-CAPTURE + +usb:v0582p0134* + ID_MODEL_FROM_DATABASE=V-Mixer + +usb:v0582p0138* + ID_MODEL_FROM_DATABASE=Boss RC-300 (Audio mode) + +usb:v0582p0139* + ID_MODEL_FROM_DATABASE=Boss RC-300 (Storage mode) + +usb:v0582p013A* + ID_MODEL_FROM_DATABASE=JUPITER-80 + +usb:v0582p013E* + ID_MODEL_FROM_DATABASE=R-26 + +usb:v0582p0145* + ID_MODEL_FROM_DATABASE=SPD-SX + +usb:v0582p014B* + ID_MODEL_FROM_DATABASE=eBand JS-10 + +usb:v0582p014D* + ID_MODEL_FROM_DATABASE=GT-100 + +usb:v0582p0150* + ID_MODEL_FROM_DATABASE=TD-15 + +usb:v0582p0151* + ID_MODEL_FROM_DATABASE=TD-11 + +usb:v0582p0154* + ID_MODEL_FROM_DATABASE=JUPITER-50 + +usb:v0582p0156* + ID_MODEL_FROM_DATABASE=A-Series + +usb:v0582p0158* + ID_MODEL_FROM_DATABASE=TD-30 + +usb:v0582p0159* + ID_MODEL_FROM_DATABASE=DUO-CAPTURE EX + +usb:v0582p015B* + ID_MODEL_FROM_DATABASE=INTEGRA-7 + +usb:v0582p015D* + ID_MODEL_FROM_DATABASE=R-88 + +usb:v0582p0505* + ID_MODEL_FROM_DATABASE=EDIROL UA-101 + +usb:v0583* + ID_VENDOR_FROM_DATABASE=Padix Co., Ltd (Rockfire) + +usb:v0583p0001* + ID_MODEL_FROM_DATABASE=4 Axis 12 button +POV + +usb:v0583p0002* + ID_MODEL_FROM_DATABASE=4 Axis 12 button +POV + +usb:v0583p2030* + ID_MODEL_FROM_DATABASE=RM-203 USB Nest [mode 1] + +usb:v0583p2031* + ID_MODEL_FROM_DATABASE=RM-203 USB Nest [mode 2] + +usb:v0583p2032* + ID_MODEL_FROM_DATABASE=RM-203 USB Nest [mode 3] + +usb:v0583p2033* + ID_MODEL_FROM_DATABASE=RM-203 USB Nest [mode 4] + +usb:v0583p2050* + ID_MODEL_FROM_DATABASE=PX-205 PSX Bridge + +usb:v0583p205F* + ID_MODEL_FROM_DATABASE=PSX/USB converter + +usb:v0583p206F* + ID_MODEL_FROM_DATABASE=USB, 2-axis 8-button gamepad + +usb:v0583p3050* + ID_MODEL_FROM_DATABASE=QF-305u Gamepad + +usb:v0583p3379* + ID_MODEL_FROM_DATABASE=Rockfire X-Force + +usb:v0583p337F* + ID_MODEL_FROM_DATABASE=Rockfire USB RacingStar Vibra + +usb:v0583p509F* + ID_MODEL_FROM_DATABASE=USB,4-Axis,12-Button with POV + +usb:v0583p5259* + ID_MODEL_FROM_DATABASE=Rockfire USB SkyShuttle Vibra + +usb:v0583p525F* + ID_MODEL_FROM_DATABASE=USB Vibration Pad + +usb:v0583p5308* + ID_MODEL_FROM_DATABASE=USB Wireless VibrationPad + +usb:v0583p5359* + ID_MODEL_FROM_DATABASE=Rockfire USB SkyShuttle Pro + +usb:v0583p535F* + ID_MODEL_FROM_DATABASE=USB,real VibrationPad + +usb:v0583p5659* + ID_MODEL_FROM_DATABASE=Rockfire USB SkyShuttle Vibra + +usb:v0583p565F* + ID_MODEL_FROM_DATABASE=USB VibrationPad + +usb:v0583p6009* + ID_MODEL_FROM_DATABASE=Revenger + +usb:v0583p600F* + ID_MODEL_FROM_DATABASE=USB,GameBoard II + +usb:v0583p6258* + ID_MODEL_FROM_DATABASE=USB, 4-axis, 6-button joystick w/view finder + +usb:v0583p6889* + ID_MODEL_FROM_DATABASE=Windstorm Pro + +usb:v0583p688F* + ID_MODEL_FROM_DATABASE=QF-688uv Windstorm Pro Joystick + +usb:v0583p7070* + ID_MODEL_FROM_DATABASE=QF-707u Bazooka Joystick + +usb:v0583pA000* + ID_MODEL_FROM_DATABASE=MaxFire G-08XU Gamepad + +usb:v0583pA015* + ID_MODEL_FROM_DATABASE=4-Axis,16-Button with POV + +usb:v0583pA019* + ID_MODEL_FROM_DATABASE=USB, Vibration ,4-axis, 8-button joystick w/view finder + +usb:v0583pA020* + ID_MODEL_FROM_DATABASE=USB,4-Axis,10-Button with POV + +usb:v0583pA021* + ID_MODEL_FROM_DATABASE=USB,4-Axis,12-Button with POV + +usb:v0583pA022* + ID_MODEL_FROM_DATABASE=USB,4-Axis,14-Button with POV + +usb:v0583pA023* + ID_MODEL_FROM_DATABASE=USB,4-Axis,16-Button with POV + +usb:v0583pA024* + ID_MODEL_FROM_DATABASE=4axis,12button vibrition audio gamepad + +usb:v0583pA025* + ID_MODEL_FROM_DATABASE=4axis,12button vibrition audio gamepad + +usb:v0583pA130* + ID_MODEL_FROM_DATABASE=USB Wireless 2.4GHz Gamepad + +usb:v0583pA131* + ID_MODEL_FROM_DATABASE=USB Wireless 2.4GHz Joystick + +usb:v0583pA132* + ID_MODEL_FROM_DATABASE=USB Wireless 2.4GHz Wheelpad + +usb:v0583pA133* + ID_MODEL_FROM_DATABASE=USB Wireless 2.4GHz Wheel&Gamepad + +usb:v0583pA202* + ID_MODEL_FROM_DATABASE=ForceFeedbackWheel + +usb:v0583pA209* + ID_MODEL_FROM_DATABASE=MetalStrike FF + +usb:v0583pB000* + ID_MODEL_FROM_DATABASE=USB,4-Axis,12-Button with POV + +usb:v0583pB001* + ID_MODEL_FROM_DATABASE=USB,4-Axis,12-Button with POV + +usb:v0583pB002* + ID_MODEL_FROM_DATABASE=Vibration,12-Button USB Wheel + +usb:v0583pB005* + ID_MODEL_FROM_DATABASE=USB,12-Button Wheel + +usb:v0583pB008* + ID_MODEL_FROM_DATABASE=USB Wireless 2.4GHz Wheel + +usb:v0583pB009* + ID_MODEL_FROM_DATABASE=USB,12-Button Wheel + +usb:v0583pB00A* + ID_MODEL_FROM_DATABASE=PSX/USB converter + +usb:v0583pB00B* + ID_MODEL_FROM_DATABASE=PSX/USB converter + +usb:v0583pB00C* + ID_MODEL_FROM_DATABASE=PSX/USB converter + +usb:v0583pB00D* + ID_MODEL_FROM_DATABASE=PSX/USB converter + +usb:v0583pB00E* + ID_MODEL_FROM_DATABASE=4-Axis,12-Button with POV + +usb:v0583pB00F* + ID_MODEL_FROM_DATABASE=USB,5-Axis,10-Button with POV + +usb:v0583pB010* + ID_MODEL_FROM_DATABASE=MetalStrike Pro + +usb:v0583pB012* + ID_MODEL_FROM_DATABASE=Wireless MetalStrike + +usb:v0583pB013* + ID_MODEL_FROM_DATABASE=USB,Wiress 2.4GHZ Joystick + +usb:v0583pB016* + ID_MODEL_FROM_DATABASE=USB,5-Axis,10-Button with POV + +usb:v0583pB018* + ID_MODEL_FROM_DATABASE=TW6 Wheel + +usb:v0583pFF60* + ID_MODEL_FROM_DATABASE=USB Wireless VibrationPad + +usb:v0584* + ID_VENDOR_FROM_DATABASE=RATOC System, Inc. + +usb:v0584p0008* + ID_MODEL_FROM_DATABASE=Fujifilm MemoryCard ReaderWriter + +usb:v0584p0220* + ID_MODEL_FROM_DATABASE=U2SCX SCSI Converter + +usb:v0584pB000* + ID_MODEL_FROM_DATABASE=REX-USB60 + +usb:v0584pB020* + ID_MODEL_FROM_DATABASE=REX-USB60F + +usb:v0585* + ID_VENDOR_FROM_DATABASE=FlashPoint Technology, Inc. + +usb:v0585p0001* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0585p0002* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0585p0003* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0585p0004* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0585p0005* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0585p0006* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0585p0007* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0585p0008* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0585p0009* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0585p000A* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0585p000B* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0585p000C* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0585p000D* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0585p000E* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0585p000F* + ID_MODEL_FROM_DATABASE=Digital Camera + +usb:v0586* + ID_VENDOR_FROM_DATABASE=ZyXEL Communications Corp. + +usb:v0586p0025* + ID_MODEL_FROM_DATABASE=802.11b/g/n USB Wireless Network Adapter + +usb:v0586p0102* + ID_MODEL_FROM_DATABASE=omni.net II ISDN TA + +usb:v0586p1000* + ID_MODEL_FROM_DATABASE=Omni NET Modem / ISDN TA + +usb:v0586p1500* + ID_MODEL_FROM_DATABASE=Omni 56K Plus + +usb:v0586p2011* + ID_MODEL_FROM_DATABASE=Scorpion-980N keyboard + +usb:v0586p3304* + ID_MODEL_FROM_DATABASE=LAN Modem + +usb:v0586p3309* + ID_MODEL_FROM_DATABASE=ADSL Modem Prestige 600 series + +usb:v0586p330A* + ID_MODEL_FROM_DATABASE=ADSL Modem Interface + +usb:v0586p330E* + ID_MODEL_FROM_DATABASE=USB Broadband ADSL Modem Rev 1.10 + +usb:v0586p3400* + ID_MODEL_FROM_DATABASE=ZyAIR B-220 IEEE 802.11b Adapter + +usb:v0586p3401* + ID_MODEL_FROM_DATABASE=ZyAIR G-220 802.11bg + +usb:v0586p3402* + ID_MODEL_FROM_DATABASE=ZyAIR G-220F 802.11bg + +usb:v0586p3403* + ID_MODEL_FROM_DATABASE=AG-200 802.11abg Wireless Adapter [Atheros AR5523] + +usb:v0586p3407* + ID_MODEL_FROM_DATABASE=G-200 v2 802.11bg + +usb:v0586p3408* + ID_MODEL_FROM_DATABASE=G-260 802.11bg + +usb:v0586p3409* + ID_MODEL_FROM_DATABASE=AG-225H 802.11bg + +usb:v0586p340A* + ID_MODEL_FROM_DATABASE=M-202 802.11bg + +usb:v0586p340C* + ID_MODEL_FROM_DATABASE=G-270S 802.11bg Wireless Adapter [Atheros AR5523] + +usb:v0586p340F* + ID_MODEL_FROM_DATABASE=G-220 v2 802.11bg + +usb:v0586p3410* + ID_MODEL_FROM_DATABASE=ZyAIR G-202 802.11bg + +usb:v0586p3412* + ID_MODEL_FROM_DATABASE=802.11bg + +usb:v0586p3413* + ID_MODEL_FROM_DATABASE=ZyAIR AG-225H v2 802.11bg + +usb:v0586p3415* + ID_MODEL_FROM_DATABASE=G-210H 802.11g Wireless Adapter + +usb:v0586p3416* + ID_MODEL_FROM_DATABASE=NWD-210N 802.11b/g/n-draft wireless adapter + +usb:v0586p3417* + ID_MODEL_FROM_DATABASE=NWD271N 802.11n Wireless Adapter [Atheros AR9001U-(2)NG] + +usb:v0586p3418* + ID_MODEL_FROM_DATABASE=NWD211AN 802.11abgn Wireless Adapter [Ralink RT2870] + +usb:v0586p3419* + ID_MODEL_FROM_DATABASE=G-220 v3 802.11bg Wireless Adapter [ZyDAS ZD1211B] + +usb:v0586p341A* + ID_MODEL_FROM_DATABASE=NWD-270N Wireless N-lite USB Adapter + +usb:v0586p341E* + ID_MODEL_FROM_DATABASE=NWD2105 802.11bgn Wireless Adapter [Ralink RT3070] + +usb:v0586p341F* + ID_MODEL_FROM_DATABASE=NWD2205 802.11n Wireless N Adapter [Realtek RTL8192CU] + +usb:v0586p343E* + ID_MODEL_FROM_DATABASE=N220 802.11bgn Wireless Adapter + +usb:v0587* + ID_VENDOR_FROM_DATABASE=America Kotobuki Electronics Industries, Inc. + +usb:v0588* + ID_VENDOR_FROM_DATABASE=Sapien Design + +usb:v0589* + ID_VENDOR_FROM_DATABASE=Victron + +usb:v058A* + ID_VENDOR_FROM_DATABASE=Nohau Corp. + +usb:v058B* + ID_VENDOR_FROM_DATABASE=Infineon Technologies + +usb:v058Bp001C* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v058C* + ID_VENDOR_FROM_DATABASE=In Focus Systems + +usb:v058Cp0007* + ID_MODEL_FROM_DATABASE=Flash + +usb:v058Cp0008* + ID_MODEL_FROM_DATABASE=LP130 + +usb:v058Cp000A* + ID_MODEL_FROM_DATABASE=LP530 + +usb:v058Cp0010* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp0011* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp0012* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp0013* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp0014* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp0015* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp0016* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp0017* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp0018* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp0019* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp001A* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp001B* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp001C* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp001D* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp001E* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058Cp001F* + ID_MODEL_FROM_DATABASE=Projector + +usb:v058CpFFE5* + ID_MODEL_FROM_DATABASE=IN34 Projector + +usb:v058D* + ID_VENDOR_FROM_DATABASE=Micrel Semiconductor + +usb:v058E* + ID_VENDOR_FROM_DATABASE=Tripath Technology, Inc. + +usb:v058F* + ID_VENDOR_FROM_DATABASE=Alcor Micro Corp. + +usb:v058Fp1234* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v058Fp2412* + ID_MODEL_FROM_DATABASE=SCard R/W CSR-145 + +usb:v058Fp2802* + ID_MODEL_FROM_DATABASE=Monterey Keyboard + +usb:v058Fp5492* + ID_MODEL_FROM_DATABASE=Hub + +usb:v058Fp6232* + ID_MODEL_FROM_DATABASE=Hi-Speed 16-in-1 Flash Card Reader/Writer + +usb:v058Fp6254* + ID_MODEL_FROM_DATABASE=USB Hub + +usb:v058Fp6331* + ID_MODEL_FROM_DATABASE=SD/MMC/MS Card Reader + +usb:v058Fp6332* + ID_MODEL_FROM_DATABASE=Multi-Function Card Reader + +usb:v058Fp6335* + ID_MODEL_FROM_DATABASE=SD/MMC Card Reader + +usb:v058Fp6360* + ID_MODEL_FROM_DATABASE=Multimedia Card Reader + +usb:v058Fp6361* + ID_MODEL_FROM_DATABASE=Multimedia Card Reader + +usb:v058Fp6362* + ID_MODEL_FROM_DATABASE=Flash Card Reader/Writer + +usb:v058Fp6364* + ID_MODEL_FROM_DATABASE=AU6477 Card Reader Controller + +usb:v058Fp6366* + ID_MODEL_FROM_DATABASE=Multi Flash Reader + +usb:v058Fp6377* + ID_MODEL_FROM_DATABASE=Multimedia Card Reader + +usb:v058Fp6386* + ID_MODEL_FROM_DATABASE=Memory Card + +usb:v058Fp6387* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v058Fp6390* + ID_MODEL_FROM_DATABASE=USB 2.0-IDE bridge + +usb:v058Fp9213* + ID_MODEL_FROM_DATABASE=MacAlly Kbd Hub + +usb:v058Fp9215* + ID_MODEL_FROM_DATABASE=AU9814 Hub + +usb:v058Fp9254* + ID_MODEL_FROM_DATABASE=Hub + +usb:v058Fp9310* + ID_MODEL_FROM_DATABASE=Mass Storage (UID4/5A & UID7A) + +usb:v058Fp9320* + ID_MODEL_FROM_DATABASE=Micro Storage Driver for Win98 + +usb:v058Fp9321* + ID_MODEL_FROM_DATABASE=Micro Storage Driver for Win98 + +usb:v058Fp9330* + ID_MODEL_FROM_DATABASE=SD Reader + +usb:v058Fp9331* + ID_MODEL_FROM_DATABASE=Micro Storage Driver for Win98 + +usb:v058Fp9340* + ID_MODEL_FROM_DATABASE=Delkin eFilm Reader-32 + +usb:v058Fp9350* + ID_MODEL_FROM_DATABASE=Delkin eFilm Reader-32 + +usb:v058Fp9360* + ID_MODEL_FROM_DATABASE=8-in-1 Media Card Reader + +usb:v058Fp9361* + ID_MODEL_FROM_DATABASE=Multimedia Card Reader + +usb:v058Fp9368* + ID_MODEL_FROM_DATABASE=Multimedia Card Reader + +usb:v058Fp9380* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v058Fp9382* + ID_MODEL_FROM_DATABASE=Acer/Sweex Flash drive + +usb:v058Fp9384* + ID_MODEL_FROM_DATABASE=qdi U2Disk T209M + +usb:v058Fp9410* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v058Fp9472* + ID_MODEL_FROM_DATABASE=Keyboard Hub + +usb:v058Fp9510* + ID_MODEL_FROM_DATABASE=ChunghwaTL USB02 Smartcard Reader + +usb:v058Fp9520* + ID_MODEL_FROM_DATABASE=EMV Certified Smart Card Reader + +usb:v058Fp9720* + ID_MODEL_FROM_DATABASE=USB-Serial Adapter + +usb:v058FpA014* + ID_MODEL_FROM_DATABASE=Asus Integrated Webcam + +usb:v0590* + ID_VENDOR_FROM_DATABASE=Omron Corp. + +usb:v0590p0004* + ID_MODEL_FROM_DATABASE=Cable Modem + +usb:v0590p000B* + ID_MODEL_FROM_DATABASE=MR56SVS + +usb:v0590p0028* + ID_MODEL_FROM_DATABASE=HJ-720IT / HEM-7080IT-E / HEM-790IT + +usb:v0591* + ID_VENDOR_FROM_DATABASE=Questra Consulting + +usb:v0592* + ID_VENDOR_FROM_DATABASE=Powerware Corp. + +usb:v0592p0002* + ID_MODEL_FROM_DATABASE=UPS (X-Slot) + +usb:v0593* + ID_VENDOR_FROM_DATABASE=Incite + +usb:v0594* + ID_VENDOR_FROM_DATABASE=Princeton Graphic Systems + +usb:v0595* + ID_VENDOR_FROM_DATABASE=Zoran Microelectronics, Ltd + +usb:v0595p1001* + ID_MODEL_FROM_DATABASE=Digitrex DSC-1300/DSC-2100 (mass storage mode) + +usb:v0595p2002* + ID_MODEL_FROM_DATABASE=DIGITAL STILL CAMERA 6M 4X + +usb:v0595p4343* + ID_MODEL_FROM_DATABASE=Digital Camera EX-20 DSC + +usb:v0596* + ID_VENDOR_FROM_DATABASE=MicroTouch Systems, Inc. + +usb:v0596p0001* + ID_MODEL_FROM_DATABASE=Touchscreen + +usb:v0596p0002* + ID_MODEL_FROM_DATABASE=Touch Screen Controller + +usb:v0596p0500* + ID_MODEL_FROM_DATABASE=PCT Multitouch HID Controller + +usb:v0597* + ID_VENDOR_FROM_DATABASE=Trisignal Communications + +usb:v0598* + ID_VENDOR_FROM_DATABASE=Niigata Canotec Co., Inc. + +usb:v0599* + ID_VENDOR_FROM_DATABASE=Brilliance Semiconductor, Inc. + +usb:v059A* + ID_VENDOR_FROM_DATABASE=Spectrum Signal Processing, Inc. + +usb:v059B* + ID_VENDOR_FROM_DATABASE=Iomega Corp. + +usb:v059Bp0001* + ID_MODEL_FROM_DATABASE=Zip 100 (Type 1) + +usb:v059Bp000B* + ID_MODEL_FROM_DATABASE=Zip 100 (Type 2) + +usb:v059Bp0021* + ID_MODEL_FROM_DATABASE=Win98 Disk Controller + +usb:v059Bp0030* + ID_MODEL_FROM_DATABASE=Zip 250 (Ver 1) + +usb:v059Bp0031* + ID_MODEL_FROM_DATABASE=Zip 100 (Type 3) + +usb:v059Bp0032* + ID_MODEL_FROM_DATABASE=Zip 250 (Ver 2) + +usb:v059Bp0034* + ID_MODEL_FROM_DATABASE=Zip 100 Driver + +usb:v059Bp0037* + ID_MODEL_FROM_DATABASE=Zip 750 MB + +usb:v059Bp0040* + ID_MODEL_FROM_DATABASE=SCSI Bridge + +usb:v059Bp0042* + ID_MODEL_FROM_DATABASE=Rev 70 GB + +usb:v059Bp0050* + ID_MODEL_FROM_DATABASE=Zip CD 650 Writer + +usb:v059Bp0053* + ID_MODEL_FROM_DATABASE=CDRW55292EXT CD-RW External Drive + +usb:v059Bp0056* + ID_MODEL_FROM_DATABASE=External CD-RW Drive Enclosure + +usb:v059Bp0057* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v059Bp005D* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v059Bp005F* + ID_MODEL_FROM_DATABASE=CDRW64892EXT3-C CD-RW 52x24x52x External Drive + +usb:v059Bp0060* + ID_MODEL_FROM_DATABASE=PCMCIA PocketZip Dock + +usb:v059Bp0061* + ID_MODEL_FROM_DATABASE=Varo PocketZip 40 MP3 Player + +usb:v059Bp006D* + ID_MODEL_FROM_DATABASE=HipZip MP3 Player + +usb:v059Bp007C* + ID_MODEL_FROM_DATABASE=Ultra Max USB/1394 + +usb:v059Bp007D* + ID_MODEL_FROM_DATABASE=HTC42606 0G9AT00 [Iomega HDD] + +usb:v059Bp007E* + ID_MODEL_FROM_DATABASE=Mini 256MB/512MB Flash Drive [IOM2D5] + +usb:v059Bp00DB* + ID_MODEL_FROM_DATABASE=FotoShow Zip 250 Driver + +usb:v059Bp0150* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v059Bp015D* + ID_MODEL_FROM_DATABASE=Super DVD Writer + +usb:v059Bp0173* + ID_MODEL_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller + +usb:v059Bp0174* + ID_MODEL_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller + +usb:v059Bp0176* + ID_MODEL_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller + +usb:v059Bp0177* + ID_MODEL_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller + +usb:v059Bp0178* + ID_MODEL_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller + +usb:v059Bp0179* + ID_MODEL_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller + +usb:v059Bp017A* + ID_MODEL_FROM_DATABASE=HDD + +usb:v059Bp017B* + ID_MODEL_FROM_DATABASE=HDD/1394A + +usb:v059Bp017C* + ID_MODEL_FROM_DATABASE=HDD/1394B + +usb:v059Bp0251* + ID_MODEL_FROM_DATABASE=Optical + +usb:v059Bp0252* + ID_MODEL_FROM_DATABASE=Optical + +usb:v059Bp0278* + ID_MODEL_FROM_DATABASE=LDHD-UPS [Professional Desktop Hard Drive eSATA / USB2.0] + +usb:v059Bp027A* + ID_MODEL_FROM_DATABASE=LPHD250-U [Portable Hard Drive Silver Series 250 Go] + +usb:v059Bp0470* + ID_MODEL_FROM_DATABASE=Prestige Portable Hard Drive + +usb:v059Bp047A* + ID_MODEL_FROM_DATABASE=Select Portable Hard Drive + +usb:v059Bp0571* + ID_MODEL_FROM_DATABASE=Prestige Portable Hard Drive + +usb:v059Bp0579* + ID_MODEL_FROM_DATABASE=eGo Portable Hard Drive + +usb:v059Bp1052* + ID_MODEL_FROM_DATABASE=DVD+RW External Drive + +usb:v059C* + ID_VENDOR_FROM_DATABASE=A-Trend Technology Co., Ltd + +usb:v059D* + ID_VENDOR_FROM_DATABASE=Advanced Input Devices + +usb:v059E* + ID_VENDOR_FROM_DATABASE=Intelligent Instrumentation + +usb:v059F* + ID_VENDOR_FROM_DATABASE=LaCie, Ltd + +usb:v059Fp0201* + ID_MODEL_FROM_DATABASE=StudioDrive USB2 + +usb:v059Fp0202* + ID_MODEL_FROM_DATABASE=StudioDrive USB2 + +usb:v059Fp0203* + ID_MODEL_FROM_DATABASE=StudioDrive USB2 + +usb:v059Fp0211* + ID_MODEL_FROM_DATABASE=PocketDrive + +usb:v059Fp0212* + ID_MODEL_FROM_DATABASE=PocketDrive + +usb:v059Fp0213* + ID_MODEL_FROM_DATABASE=PocketDrive USB2 + +usb:v059Fp0323* + ID_MODEL_FROM_DATABASE=LaCie d2 Drive USB2 + +usb:v059Fp0421* + ID_MODEL_FROM_DATABASE=Big Disk G465 + +usb:v059Fp0641* + ID_MODEL_FROM_DATABASE=Mobile Hard Drive + +usb:v059Fp1010* + ID_MODEL_FROM_DATABASE=Desktop Hard Drive + +usb:v059Fp1019* + ID_MODEL_FROM_DATABASE=Desktop Hard Drive + +usb:v059Fp1021* + ID_MODEL_FROM_DATABASE=Little Disk + +usb:v059Fp1027* + ID_MODEL_FROM_DATABASE=iamaKey V2 + +usb:v059Fp102A* + ID_MODEL_FROM_DATABASE=Rikiki Hard Drive + +usb:v059Fp1049* + ID_MODEL_FROM_DATABASE=rikiki Harddrive + +usb:v059Fp1052* + ID_MODEL_FROM_DATABASE=P'9220 Mobile Drive + +usb:v059FpA601* + ID_MODEL_FROM_DATABASE=HardDrive + +usb:v059FpA602* + ID_MODEL_FROM_DATABASE=CD R/W + +usb:v05A0* + ID_VENDOR_FROM_DATABASE=Vetronix Corp. + +usb:v05A1* + ID_VENDOR_FROM_DATABASE=USC Corp. + +usb:v05A2* + ID_VENDOR_FROM_DATABASE=Fuji Film Microdevices Co., Ltd + +usb:v05A3* + ID_VENDOR_FROM_DATABASE=ARC International + +usb:v05A3p8388* + ID_MODEL_FROM_DATABASE=Marvell 88W8388 802.11a/b/g WLAN + +usb:v05A4* + ID_VENDOR_FROM_DATABASE=Ortek Technology, Inc. + +usb:v05A4p1000* + ID_MODEL_FROM_DATABASE=WKB-1000S Wireless Ergo Keyboard with Touchpad + +usb:v05A4p2000* + ID_MODEL_FROM_DATABASE=WKB-2000 Wireless Keyboard with Touchpad + +usb:v05A4p9720* + ID_MODEL_FROM_DATABASE=Keyboard Mouse + +usb:v05A4p9722* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v05A4p9731* + ID_MODEL_FROM_DATABASE=MCK-600W/MCK-800USB Keyboard + +usb:v05A4p9783* + ID_MODEL_FROM_DATABASE=Wireless Keypad + +usb:v05A4p9881* + ID_MODEL_FROM_DATABASE=IR receiver [VRC-1100 Vista MCE Remote Control] + +usb:v05A5* + ID_VENDOR_FROM_DATABASE=Sampo Technology Corp. + +usb:v05A6* + ID_VENDOR_FROM_DATABASE=Cisco Systems, Inc. + +usb:v05A6p0001* + ID_MODEL_FROM_DATABASE=CVA124 Cable Voice Adapter (WDM) + +usb:v05A6p0002* + ID_MODEL_FROM_DATABASE=CVA122 Cable Voice Adapter (WDM) + +usb:v05A6p0003* + ID_MODEL_FROM_DATABASE=CVA124E Cable Voice Adapter (WDM) + +usb:v05A6p0004* + ID_MODEL_FROM_DATABASE=CVA122E Cable Voice Adapter (WDM) + +usb:v05A7* + ID_VENDOR_FROM_DATABASE=Bose Corp. + +usb:v05A8* + ID_VENDOR_FROM_DATABASE=Spacetec IMC Corp. + +usb:v05A9* + ID_VENDOR_FROM_DATABASE=OmniVision Technologies, Inc. + +usb:v05A9p0511* + ID_MODEL_FROM_DATABASE=OV511 Webcam + +usb:v05A9p0518* + ID_MODEL_FROM_DATABASE=OV518 Webcam + +usb:v05A9p0519* + ID_MODEL_FROM_DATABASE=OV519 Microphone + +usb:v05A9p1550* + ID_MODEL_FROM_DATABASE=VEHO Filmscanner + +usb:v05A9p2640* + ID_MODEL_FROM_DATABASE=OV2640 Webcam + +usb:v05A9p2643* + ID_MODEL_FROM_DATABASE=Monitor Webcam + +usb:v05A9p264B* + ID_MODEL_FROM_DATABASE=Monitor Webcam + +usb:v05A9p2800* + ID_MODEL_FROM_DATABASE=SuperCAM + +usb:v05A9p4519* + ID_MODEL_FROM_DATABASE=Webcam Classic + +usb:v05A9p7670* + ID_MODEL_FROM_DATABASE=OV7670 Webcam + +usb:v05A9p8519* + ID_MODEL_FROM_DATABASE=OV519 Webcam + +usb:v05A9pA511* + ID_MODEL_FROM_DATABASE=OV511+ Webcam + +usb:v05A9pA518* + ID_MODEL_FROM_DATABASE=D-Link DSB-C310 Webcam + +usb:v05AA* + ID_VENDOR_FROM_DATABASE=Utilux South China, Ltd + +usb:v05AB* + ID_VENDOR_FROM_DATABASE=In-System Design + +usb:v05ABp0002* + ID_MODEL_FROM_DATABASE=Parallel Port + +usb:v05ABp0030* + ID_MODEL_FROM_DATABASE=Storage Adapter V2 (TPP) + +usb:v05ABp0031* + ID_MODEL_FROM_DATABASE=ATA Bridge + +usb:v05ABp0060* + ID_MODEL_FROM_DATABASE=USB 2.0 ATA Bridge + +usb:v05ABp0061* + ID_MODEL_FROM_DATABASE=Storage Adapter V3 (TPP-I) + +usb:v05ABp0101* + ID_MODEL_FROM_DATABASE=Storage Adapter (TPP) + +usb:v05ABp0130* + ID_MODEL_FROM_DATABASE=Compact Flash and Microdrive Reader (TPP) + +usb:v05ABp0200* + ID_MODEL_FROM_DATABASE=USS725 ATA Bridge + +usb:v05ABp0201* + ID_MODEL_FROM_DATABASE=Storage Adapter (TPP) + +usb:v05ABp0202* + ID_MODEL_FROM_DATABASE=ATA Bridge + +usb:v05ABp0300* + ID_MODEL_FROM_DATABASE=Portable Hard Drive (TPP) + +usb:v05ABp0301* + ID_MODEL_FROM_DATABASE=Portable Hard Drive V2 + +usb:v05ABp0350* + ID_MODEL_FROM_DATABASE=Portable Hard Drive (TPP) + +usb:v05ABp0351* + ID_MODEL_FROM_DATABASE=Portable Hard Drive V2 + +usb:v05ABp081A* + ID_MODEL_FROM_DATABASE=ATA Bridge + +usb:v05ABp0CDA* + ID_MODEL_FROM_DATABASE=ATA Bridge for CD-R/RW + +usb:v05ABp1001* + ID_MODEL_FROM_DATABASE=BAYI Printer Class Support + +usb:v05ABp5700* + ID_MODEL_FROM_DATABASE=Storage Adapter V2 (TPP) + +usb:v05ABp5701* + ID_MODEL_FROM_DATABASE=USB Storage Adapter V2 + +usb:v05ABp5901* + ID_MODEL_FROM_DATABASE=Smart Board (TPP) + +usb:v05ABp5A01* + ID_MODEL_FROM_DATABASE=ATI Storage Adapter (TPP) + +usb:v05ABp5D01* + ID_MODEL_FROM_DATABASE=DataBook Adapter (TPP) + +usb:v05AC* + ID_VENDOR_FROM_DATABASE=Apple, Inc. + +usb:v05ACp0201* + ID_MODEL_FROM_DATABASE=USB Keyboard [Alps or Logitech, M2452] + +usb:v05ACp0202* + ID_MODEL_FROM_DATABASE=Keyboard [ALPS] + +usb:v05ACp0205* + ID_MODEL_FROM_DATABASE=Extended Keyboard [Mitsumi] + +usb:v05ACp0206* + ID_MODEL_FROM_DATABASE=Extended Keyboard [Mitsumi] + +usb:v05ACp020B* + ID_MODEL_FROM_DATABASE=Pro Keyboard [Mitsumi, A1048/US layout] + +usb:v05ACp020C* + ID_MODEL_FROM_DATABASE=Extended Keyboard [Mitsumi] + +usb:v05ACp020D* + ID_MODEL_FROM_DATABASE=Pro Keyboard [Mitsumi, A1048/JIS layout] + +usb:v05ACp020E* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) + +usb:v05ACp020F* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) + +usb:v05ACp0214* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) + +usb:v05ACp0215* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) + +usb:v05ACp0216* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) + +usb:v05ACp0217* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) + +usb:v05ACp0218* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) + +usb:v05ACp0219* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) + +usb:v05ACp021A* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) + +usb:v05ACp021B* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) + +usb:v05ACp021C* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) + +usb:v05ACp021D* + ID_MODEL_FROM_DATABASE=Aluminum Mini Keyboard (ANSI) + +usb:v05ACp021E* + ID_MODEL_FROM_DATABASE=Aluminum Mini Keyboard (ISO) + +usb:v05ACp021F* + ID_MODEL_FROM_DATABASE=Aluminum Mini Keyboard (JIS) + +usb:v05ACp0220* + ID_MODEL_FROM_DATABASE=Aluminum Keyboard (ANSI) + +usb:v05ACp0221* + ID_MODEL_FROM_DATABASE=Aluminum Keyboard (ISO) + +usb:v05ACp0222* + ID_MODEL_FROM_DATABASE=Aluminum Keyboard (JIS) + +usb:v05ACp0223* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) + +usb:v05ACp0224* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) + +usb:v05ACp0225* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) + +usb:v05ACp0229* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Pro) (ANSI) + +usb:v05ACp022A* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Pro) (ISO) + +usb:v05ACp022B* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Pro) (JIS) + +usb:v05ACp0230* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Pro 4,1) (ANSI) + +usb:v05ACp0231* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Pro 4,1) (ISO) + +usb:v05ACp0232* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Pro 4,1) (JIS) + +usb:v05ACp0236* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) + +usb:v05ACp0237* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) + +usb:v05ACp0238* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) + +usb:v05ACp023F* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) + +usb:v05ACp0240* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) + +usb:v05ACp0241* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) + +usb:v05ACp0242* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) + +usb:v05ACp0243* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) + +usb:v05ACp0244* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) + +usb:v05ACp0245* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) + +usb:v05ACp0246* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) + +usb:v05ACp0247* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) + +usb:v05ACp024A* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Air) (ISO) + +usb:v05ACp024D* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Air) (ISO) + +usb:v05ACp0250* + ID_MODEL_FROM_DATABASE=Aluminium Keyboard (ISO) + +usb:v05ACp0252* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) + +usb:v05ACp0253* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) + +usb:v05ACp0254* + ID_MODEL_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) + +usb:v05ACp0263* + ID_MODEL_FROM_DATABASE=Apple Internal Keyboard / Trackpad (MacBook Retina) + +usb:v05ACp0301* + ID_MODEL_FROM_DATABASE=USB Mouse [Mitsumi, M4848] + +usb:v05ACp0302* + ID_MODEL_FROM_DATABASE=Optical Mouse [Fujitsu] + +usb:v05ACp0304* + ID_MODEL_FROM_DATABASE=Optical USB Mouse [Mitsumi] + +usb:v05ACp0306* + ID_MODEL_FROM_DATABASE=Optical USB Mouse [Fujitsu] + +usb:v05ACp030A* + ID_MODEL_FROM_DATABASE=Internal Trackpad + +usb:v05ACp030B* + ID_MODEL_FROM_DATABASE=Internal Trackpad + +usb:v05ACp030D* + ID_MODEL_FROM_DATABASE=Magic Mouse + +usb:v05ACp030E* + ID_MODEL_FROM_DATABASE=MC380Z/A [Magic Trackpad] + +usb:v05ACp1000* + ID_MODEL_FROM_DATABASE=Bluetooth HCI MacBookPro (HID mode) + +usb:v05ACp1001* + ID_MODEL_FROM_DATABASE=Keyboard Hub [ALPS] + +usb:v05ACp1002* + ID_MODEL_FROM_DATABASE=Extended Keyboard Hub [Mitsumi] + +usb:v05ACp1003* + ID_MODEL_FROM_DATABASE=Hub in Pro Keyboard [Mitsumi, A1048] + +usb:v05ACp1006* + ID_MODEL_FROM_DATABASE=Hub in Aluminum Keyboard + +usb:v05ACp1101* + ID_MODEL_FROM_DATABASE=Speakers + +usb:v05ACp1105* + ID_MODEL_FROM_DATABASE=Audio in LED Cinema Display + +usb:v05ACp1107* + ID_MODEL_FROM_DATABASE=Thunderbolt Display Audio + +usb:v05ACp1201* + ID_MODEL_FROM_DATABASE=3G iPod + +usb:v05ACp1202* + ID_MODEL_FROM_DATABASE=iPod 2G + +usb:v05ACp1203* + ID_MODEL_FROM_DATABASE=iPod 4.Gen Grayscale 40G + +usb:v05ACp1204* + ID_MODEL_FROM_DATABASE=iPod [Photo] + +usb:v05ACp1205* + ID_MODEL_FROM_DATABASE=iPod Mini 1.Gen/2.Gen + +usb:v05ACp1206* + ID_MODEL_FROM_DATABASE=iPod '06' + +usb:v05ACp1207* + ID_MODEL_FROM_DATABASE=iPod '07' + +usb:v05ACp1208* + ID_MODEL_FROM_DATABASE=iPod '08' + +usb:v05ACp1209* + ID_MODEL_FROM_DATABASE=iPod Video + +usb:v05ACp120A* + ID_MODEL_FROM_DATABASE=iPod Nano + +usb:v05ACp1223* + ID_MODEL_FROM_DATABASE=iPod Classic/Nano 3.Gen (DFU mode) + +usb:v05ACp1224* + ID_MODEL_FROM_DATABASE=iPod Nano 3.Gen (DFU mode) + +usb:v05ACp1225* + ID_MODEL_FROM_DATABASE=iPod Nano 4.Gen (DFU mode) + +usb:v05ACp1227* + ID_MODEL_FROM_DATABASE=Mobile Device (DFU Mode) + +usb:v05ACp1231* + ID_MODEL_FROM_DATABASE=iPod Nano 5.Gen (DFU mode) + +usb:v05ACp1240* + ID_MODEL_FROM_DATABASE=iPod Nano 2.Gen (DFU mode) + +usb:v05ACp1242* + ID_MODEL_FROM_DATABASE=iPod Nano 3.Gen (WTF mode) + +usb:v05ACp1243* + ID_MODEL_FROM_DATABASE=iPod Nano 4.Gen (WTF mode) + +usb:v05ACp1245* + ID_MODEL_FROM_DATABASE=iPod Classic 3.Gen (WTF mode) + +usb:v05ACp1246* + ID_MODEL_FROM_DATABASE=iPod Nano 5.Gen (WTF mode) + +usb:v05ACp1255* + ID_MODEL_FROM_DATABASE=iPod Nano 4.Gen (DFU mode) + +usb:v05ACp1260* + ID_MODEL_FROM_DATABASE=iPod Nano 2.Gen + +usb:v05ACp1261* + ID_MODEL_FROM_DATABASE=iPod Classic + +usb:v05ACp1262* + ID_MODEL_FROM_DATABASE=iPod Nano 3.Gen + +usb:v05ACp1263* + ID_MODEL_FROM_DATABASE=iPod Nano 4.Gen + +usb:v05ACp1265* + ID_MODEL_FROM_DATABASE=iPod Nano 5.Gen + +usb:v05ACp1266* + ID_MODEL_FROM_DATABASE=iPod Nano 6.Gen + +usb:v05ACp1281* + ID_MODEL_FROM_DATABASE=Apple Mobile Device [Recovery Mode] + +usb:v05ACp1290* + ID_MODEL_FROM_DATABASE=iPhone + +usb:v05ACp1291* + ID_MODEL_FROM_DATABASE=iPod Touch 1.Gen + +usb:v05ACp1292* + ID_MODEL_FROM_DATABASE=iPhone 3G + +usb:v05ACp1293* + ID_MODEL_FROM_DATABASE=iPod Touch 2.Gen + +usb:v05ACp1294* + ID_MODEL_FROM_DATABASE=iPhone 3GS + +usb:v05ACp1296* + ID_MODEL_FROM_DATABASE=iPod Touch 3.Gen (8GB) + +usb:v05ACp1297* + ID_MODEL_FROM_DATABASE=iPhone 4 + +usb:v05ACp1299* + ID_MODEL_FROM_DATABASE=iPod Touch 3.Gen + +usb:v05ACp129A* + ID_MODEL_FROM_DATABASE=iPad + +usb:v05ACp129E* + ID_MODEL_FROM_DATABASE=iPod Touch 4.Gen + +usb:v05ACp129F* + ID_MODEL_FROM_DATABASE=iPad 2 + +usb:v05ACp12A0* + ID_MODEL_FROM_DATABASE=iPhone 4S + +usb:v05ACp12A2* + ID_MODEL_FROM_DATABASE=iPad 2 (3G; 64GB) + +usb:v05ACp12A6* + ID_MODEL_FROM_DATABASE=iPad 3 (3G, 16 GB) + +usb:v05ACp12A9* + ID_MODEL_FROM_DATABASE=iPad 2 + +usb:v05ACp12AA* + ID_MODEL_FROM_DATABASE=iPod Touch 5.Gen [A1421] + +usb:v05ACp1300* + ID_MODEL_FROM_DATABASE=iPod Shuffle + +usb:v05ACp1301* + ID_MODEL_FROM_DATABASE=iPod Shuffle 2.Gen + +usb:v05ACp1302* + ID_MODEL_FROM_DATABASE=iPod Shuffle 3.Gen + +usb:v05ACp1303* + ID_MODEL_FROM_DATABASE=iPod Shuffle 4.Gen + +usb:v05ACp1401* + ID_MODEL_FROM_DATABASE=Modem + +usb:v05ACp1402* + ID_MODEL_FROM_DATABASE=Ethernet Adapter [A1277] + +usb:v05ACp1500* + ID_MODEL_FROM_DATABASE=SuperDrive [A1379] + +usb:v05ACp8202* + ID_MODEL_FROM_DATABASE=HCF V.90 Data/Fax Modem + +usb:v05ACp8203* + ID_MODEL_FROM_DATABASE=Bluetooth HCI + +usb:v05ACp8204* + ID_MODEL_FROM_DATABASE=Built-in Bluetooth 2.0+EDR HCI + +usb:v05ACp8205* + ID_MODEL_FROM_DATABASE=Bluetooth HCI + +usb:v05ACp8206* + ID_MODEL_FROM_DATABASE=Bluetooth HCI + +usb:v05ACp820A* + ID_MODEL_FROM_DATABASE=Bluetooth HID Keyboard + +usb:v05ACp820B* + ID_MODEL_FROM_DATABASE=Bluetooth HID Mouse + +usb:v05ACp820F* + ID_MODEL_FROM_DATABASE=Bluetooth HCI + +usb:v05ACp8213* + ID_MODEL_FROM_DATABASE=Bluetooth Host Controller + +usb:v05ACp8215* + ID_MODEL_FROM_DATABASE=Built-in Bluetooth 2.0+EDR HCI + +usb:v05ACp8216* + ID_MODEL_FROM_DATABASE=Bluetooth USB Host Controller + +usb:v05ACp8217* + ID_MODEL_FROM_DATABASE=Bluetooth USB Host Controller + +usb:v05ACp8218* + ID_MODEL_FROM_DATABASE=Bluetooth Host Controller + +usb:v05ACp821A* + ID_MODEL_FROM_DATABASE=Bluetooth Host Controller + +usb:v05ACp821F* + ID_MODEL_FROM_DATABASE=Built-in Bluetooth 2.0+EDR HCI + +usb:v05ACp8240* + ID_MODEL_FROM_DATABASE=Built-in IR Receiver + +usb:v05ACp8241* + ID_MODEL_FROM_DATABASE=Built-in IR Receiver + +usb:v05ACp8242* + ID_MODEL_FROM_DATABASE=Built-in IR Receiver + +usb:v05ACp8286* + ID_MODEL_FROM_DATABASE=Bluetooth Host Controller + +usb:v05ACp8300* + ID_MODEL_FROM_DATABASE=Built-in iSight (no firmware loaded) + +usb:v05ACp8403* + ID_MODEL_FROM_DATABASE=Internal Memory Card Reader + +usb:v05ACp8404* + ID_MODEL_FROM_DATABASE=Internal Memory Card Reader + +usb:v05ACp8501* + ID_MODEL_FROM_DATABASE=Built-in iSight [Micron] + +usb:v05ACp8502* + ID_MODEL_FROM_DATABASE=Built-in iSight + +usb:v05ACp8505* + ID_MODEL_FROM_DATABASE=Built-in iSight + +usb:v05ACp8507* + ID_MODEL_FROM_DATABASE=Built-in iSight + +usb:v05ACp8508* + ID_MODEL_FROM_DATABASE=iSight in LED Cinema Display + +usb:v05ACp8509* + ID_MODEL_FROM_DATABASE=FaceTime HD Camera + +usb:v05ACp850A* + ID_MODEL_FROM_DATABASE=FaceTime Camera + +usb:v05ACp8510* + ID_MODEL_FROM_DATABASE=FaceTime HD Camera (Built-in) + +usb:v05ACp911C* + ID_MODEL_FROM_DATABASE=Hub in A1082 [Cinema HD Display 23"] + +usb:v05ACp912F* + ID_MODEL_FROM_DATABASE=Hub in 30" Cinema Display + +usb:v05ACp9215* + ID_MODEL_FROM_DATABASE=Studio Display 15" + +usb:v05ACp9217* + ID_MODEL_FROM_DATABASE=Studio Display 17" + +usb:v05ACp9218* + ID_MODEL_FROM_DATABASE=Cinema Display 23" + +usb:v05ACp9219* + ID_MODEL_FROM_DATABASE=Cinema Display 20" + +usb:v05ACp921C* + ID_MODEL_FROM_DATABASE=A1082 [Cinema HD Display 23"] + +usb:v05ACp921E* + ID_MODEL_FROM_DATABASE=Cinema Display 24" + +usb:v05ACp9221* + ID_MODEL_FROM_DATABASE=30" Cinema Display + +usb:v05ACp9226* + ID_MODEL_FROM_DATABASE=LED Cinema Display + +usb:v05ACp9227* + ID_MODEL_FROM_DATABASE=Thunderbolt Display + +usb:v05ACp9232* + ID_MODEL_FROM_DATABASE=Cinema HD Display 30" + +usb:v05ACpFFFF* + ID_MODEL_FROM_DATABASE=Bluetooth in DFU mode - Driver + +usb:v05AD* + ID_VENDOR_FROM_DATABASE=Y.C. Cable U.S.A., Inc. + +usb:v05AE* + ID_VENDOR_FROM_DATABASE=Synopsys, Inc. + +usb:v05AF* + ID_VENDOR_FROM_DATABASE=Jing-Mold Enterprise Co., Ltd + +usb:v05AFp0806* + ID_MODEL_FROM_DATABASE=HP SK806A Keyboard + +usb:v05AFp0809* + ID_MODEL_FROM_DATABASE=Wireless Keyboard and Mouse + +usb:v05AFp0821* + ID_MODEL_FROM_DATABASE=IDE to + +usb:v05AFp3062* + ID_MODEL_FROM_DATABASE=Cordless Keyboard + +usb:v05AFp9167* + ID_MODEL_FROM_DATABASE=KB 9151B - 678 + +usb:v05AFp9267* + ID_MODEL_FROM_DATABASE=KB 9251B - 678 Mouse + +usb:v05B0* + ID_VENDOR_FROM_DATABASE=Fountain Technologies, Inc. + +usb:v05B1* + ID_VENDOR_FROM_DATABASE=First International Computer, Inc. + +usb:v05B1p1389* + ID_MODEL_FROM_DATABASE=Bluetooth Wireless Adapter + +usb:v05B4* + ID_VENDOR_FROM_DATABASE=LG Semicon Co., Ltd + +usb:v05B4p4857* + ID_MODEL_FROM_DATABASE=M-Any DAH-210 + +usb:v05B4p6001* + ID_MODEL_FROM_DATABASE=Digisette DUO-MP3 AR-100 + +usb:v05B5* + ID_VENDOR_FROM_DATABASE=Dialogic Corp. + +usb:v05B6* + ID_VENDOR_FROM_DATABASE=Proxima Corp. + +usb:v05B7* + ID_VENDOR_FROM_DATABASE=Medianix Semiconductor, Inc. + +usb:v05B8* + ID_VENDOR_FROM_DATABASE=Agiler, Inc. + +usb:v05B8p3002* + ID_MODEL_FROM_DATABASE=Scroll Mouse + +usb:v05B9* + ID_VENDOR_FROM_DATABASE=Philips Research Laboratories + +usb:v05BA* + ID_VENDOR_FROM_DATABASE=DigitalPersona, Inc. + +usb:v05BAp0007* + ID_MODEL_FROM_DATABASE=Fingerprint Reader + +usb:v05BAp0008* + ID_MODEL_FROM_DATABASE=Fingerprint Reader + +usb:v05BAp000A* + ID_MODEL_FROM_DATABASE=Fingerprint Reader + +usb:v05BB* + ID_VENDOR_FROM_DATABASE=Grey Cell Systems + +usb:v05BC* + ID_VENDOR_FROM_DATABASE=3G Green Green Globe Co., Ltd + +usb:v05BCp0004* + ID_MODEL_FROM_DATABASE=Trackball + +usb:v05BD* + ID_VENDOR_FROM_DATABASE=RAFI GmbH & Co. KG + +usb:v05BE* + ID_VENDOR_FROM_DATABASE=Tyco Electronics (Raychem) + +usb:v05BF* + ID_VENDOR_FROM_DATABASE=S & S Research + +usb:v05C0* + ID_VENDOR_FROM_DATABASE=Keil Software + +usb:v05C1* + ID_VENDOR_FROM_DATABASE=Kawasaki Microelectronics, Inc. + +usb:v05C2* + ID_VENDOR_FROM_DATABASE=Media Phonics (Suisse) S.A. + +usb:v05C5* + ID_VENDOR_FROM_DATABASE=Digi International, Inc. + +usb:v05C5p0002* + ID_MODEL_FROM_DATABASE=AccelePort USB 2 + +usb:v05C5p0004* + ID_MODEL_FROM_DATABASE=AccelePort USB 4 + +usb:v05C5p0008* + ID_MODEL_FROM_DATABASE=AccelePort USB 8 + +usb:v05C6* + ID_VENDOR_FROM_DATABASE=Qualcomm, Inc. + +usb:v05C6p0114* + ID_MODEL_FROM_DATABASE=Select RW-200 CDMA Wireless Modem + +usb:v05C6p1000* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v05C6p3100* + ID_MODEL_FROM_DATABASE=CDMA Wireless Modem/Phone + +usb:v05C6p3196* + ID_MODEL_FROM_DATABASE=CDMA Wireless Modem + +usb:v05C6p3197* + ID_MODEL_FROM_DATABASE=CDMA Wireless Modem/Phone + +usb:v05C6p6000* + ID_MODEL_FROM_DATABASE=Siemens SG75 + +usb:v05C6p6503* + ID_MODEL_FROM_DATABASE=AnyData APE-540H + +usb:v05C6p6613* + ID_MODEL_FROM_DATABASE=Onda H600/N501HS ZTE MF330 + +usb:v05C6p9000* + ID_MODEL_FROM_DATABASE=SIMCom SIM5218 modem + +usb:v05C6p9001* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem + +usb:v05C6p9002* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem + +usb:v05C6p9008* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem (QDL mode) + +usb:v05C6p9018* + ID_MODEL_FROM_DATABASE=Qualcomm HSUSB Device + +usb:v05C6p9025* + ID_MODEL_FROM_DATABASE=Qualcomm HSUSB Device + +usb:v05C6p9201* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem (QDL mode) + +usb:v05C6p9202* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem + +usb:v05C6p9203* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem + +usb:v05C6p9211* + ID_MODEL_FROM_DATABASE=Acer Gobi Wireless Modem (QDL mode) + +usb:v05C6p9212* + ID_MODEL_FROM_DATABASE=Acer Gobi Wireless Modem + +usb:v05C6p9214* + ID_MODEL_FROM_DATABASE=Acer Gobi 2000 Wireless Modem (QDL mode) + +usb:v05C6p9215* + ID_MODEL_FROM_DATABASE=Acer Gobi 2000 Wireless Modem + +usb:v05C6p9221* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem (QDL mode) + +usb:v05C6p9222* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem + +usb:v05C6p9224* + ID_MODEL_FROM_DATABASE=Sony Gobi 2000 Wireless Modem (QDL mode) + +usb:v05C6p9225* + ID_MODEL_FROM_DATABASE=Sony Gobi 2000 Wireless Modem + +usb:v05C6p9231* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem (QDL mode) + +usb:v05C6p9234* + ID_MODEL_FROM_DATABASE=Top Global Gobi 2000 Wireless Modem (QDL mode) + +usb:v05C6p9235* + ID_MODEL_FROM_DATABASE=Top Global Gobi 2000 Wireless Modem + +usb:v05C6p9244* + ID_MODEL_FROM_DATABASE=Samsung Gobi 2000 Wireless Modem (QDL mode) + +usb:v05C6p9245* + ID_MODEL_FROM_DATABASE=Samsung Gobi 2000 Wireless Modem + +usb:v05C6p9264* + ID_MODEL_FROM_DATABASE=Asus Gobi 2000 Wireless Modem (QDL mode) + +usb:v05C6p9265* + ID_MODEL_FROM_DATABASE=Asus Gobi 2000 Wireless Modem + +usb:v05C6p9274* + ID_MODEL_FROM_DATABASE=iRex Technologies Gobi 2000 Wireless Modem (QDL mode) + +usb:v05C6p9275* + ID_MODEL_FROM_DATABASE=iRex Technologies Gobi 2000 Wireless Modem + +usb:v05C7* + ID_VENDOR_FROM_DATABASE=Qtronix Corp. + +usb:v05C7p0113* + ID_MODEL_FROM_DATABASE=PC Line Mouse + +usb:v05C7p1001* + ID_MODEL_FROM_DATABASE=Lynx Mouse + +usb:v05C7p2001* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v05C7p2011* + ID_MODEL_FROM_DATABASE=SCorpius Keyboard + +usb:v05C7p6001* + ID_MODEL_FROM_DATABASE=Ten-Keypad + +usb:v05C8* + ID_VENDOR_FROM_DATABASE=Cheng Uei Precision Industry Co., Ltd (Foxlink) + +usb:v05C8p0103* + ID_MODEL_FROM_DATABASE=FO13FF-65 PC-CAM + +usb:v05C8p021A* + ID_MODEL_FROM_DATABASE=HP Webcam + +usb:v05C8p0318* + ID_MODEL_FROM_DATABASE=Webcam + +usb:v05C8p0403* + ID_MODEL_FROM_DATABASE=Webcam + +usb:v05C9* + ID_VENDOR_FROM_DATABASE=Semtech Corp. + +usb:v05CA* + ID_VENDOR_FROM_DATABASE=Ricoh Co., Ltd + +usb:v05CAp0101* + ID_MODEL_FROM_DATABASE=RDC-5300 Camera + +usb:v05CAp0325* + ID_MODEL_FROM_DATABASE=Caplio GX (ptp) + +usb:v05CAp032D* + ID_MODEL_FROM_DATABASE=Caplio GX 8 (ptp) + +usb:v05CAp032F* + ID_MODEL_FROM_DATABASE=Caplio R3 (ptp) + +usb:v05CAp03A1* + ID_MODEL_FROM_DATABASE=IS200e + +usb:v05CAp0403* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v05CAp0405* + ID_MODEL_FROM_DATABASE=Type 101 + +usb:v05CAp0406* + ID_MODEL_FROM_DATABASE=Type 102 + +usb:v05CAp1803* + ID_MODEL_FROM_DATABASE=V5 camera [R5U870] + +usb:v05CAp1810* + ID_MODEL_FROM_DATABASE=Pavilion Webcam [R5U870] + +usb:v05CAp1812* + ID_MODEL_FROM_DATABASE=Pavilion Webcam + +usb:v05CAp1814* + ID_MODEL_FROM_DATABASE=HD Webcam + +usb:v05CAp1820* + ID_MODEL_FROM_DATABASE=Integrated Webcam + +usb:v05CAp1830* + ID_MODEL_FROM_DATABASE=Visual Communication Camera VGP-VCC2 [R5U870] + +usb:v05CAp1832* + ID_MODEL_FROM_DATABASE=Visual Communication Camera VGP-VCC3 [R5U870] + +usb:v05CAp1833* + ID_MODEL_FROM_DATABASE=Visual Communication Camera VGP-VCC2 [R5U870] + +usb:v05CAp1834* + ID_MODEL_FROM_DATABASE=Visual Communication Camera VGP-VCC2 [R5U870] + +usb:v05CAp1835* + ID_MODEL_FROM_DATABASE=Visual Communication Camera VGP-VCC5 [R5U870] + +usb:v05CAp1836* + ID_MODEL_FROM_DATABASE=Visual Communication Camera VGP-VCC4 [R5U870] + +usb:v05CAp1837* + ID_MODEL_FROM_DATABASE=Visual Communication Camera VGP-VCC4 [R5U870] + +usb:v05CAp1839* + ID_MODEL_FROM_DATABASE=Visual Communication Camera VGP-VCC6 [R5U870] + +usb:v05CAp183A* + ID_MODEL_FROM_DATABASE=Visual Communication Camera VGP-VCC7 [R5U870] + +usb:v05CAp183B* + ID_MODEL_FROM_DATABASE=Visual Communication Camera VGP-VCC8 [R5U870] + +usb:v05CAp183D* + ID_MODEL_FROM_DATABASE=Sony Vaio Integrated Webcam + +usb:v05CAp183E* + ID_MODEL_FROM_DATABASE=Visual Communication Camera VGP-VCC9 [R5U870] + +usb:v05CAp1841* + ID_MODEL_FROM_DATABASE=Fujitsu F01/ Lifebook U810 [R5U870] + +usb:v05CAp1870* + ID_MODEL_FROM_DATABASE=Webcam 1000 + +usb:v05CAp18B0* + ID_MODEL_FROM_DATABASE=Sony Vaio Integrated Webcam + +usb:v05CAp18B1* + ID_MODEL_FROM_DATABASE=Sony Vaio Integrated Webcam + +usb:v05CAp18B3* + ID_MODEL_FROM_DATABASE=Sony Vaio Integrated Webcam + +usb:v05CAp18B5* + ID_MODEL_FROM_DATABASE=Sony Vaio Integrated Webcam + +usb:v05CAp2201* + ID_MODEL_FROM_DATABASE=RDC-7 Camera + +usb:v05CAp2202* + ID_MODEL_FROM_DATABASE=Caplio RR30 + +usb:v05CAp2203* + ID_MODEL_FROM_DATABASE=Caplio 300G + +usb:v05CAp2204* + ID_MODEL_FROM_DATABASE=Caplio G3 + +usb:v05CAp2205* + ID_MODEL_FROM_DATABASE=Caplio RR30 / Medion MD 6126 Camera + +usb:v05CAp2206* + ID_MODEL_FROM_DATABASE=Konica DG-3Z + +usb:v05CAp2207* + ID_MODEL_FROM_DATABASE=Caplio Pro G3 + +usb:v05CAp2208* + ID_MODEL_FROM_DATABASE=Caplio G4 + +usb:v05CAp2209* + ID_MODEL_FROM_DATABASE=Caplio 400G wide + +usb:v05CAp220A* + ID_MODEL_FROM_DATABASE=KONICA MINOLTA DG-4Wide + +usb:v05CAp220B* + ID_MODEL_FROM_DATABASE=Caplio RX + +usb:v05CAp220C* + ID_MODEL_FROM_DATABASE=Caplio GX + +usb:v05CAp220D* + ID_MODEL_FROM_DATABASE=Caplio R1/RZ1 + +usb:v05CAp220E* + ID_MODEL_FROM_DATABASE=Sea & Sea 5000G + +usb:v05CAp220F* + ID_MODEL_FROM_DATABASE=Rollei dr5 / Rollei dr5 (PTP mode) + +usb:v05CAp2211* + ID_MODEL_FROM_DATABASE=Caplio R1S + +usb:v05CAp2212* + ID_MODEL_FROM_DATABASE=Caplio R1v Camera + +usb:v05CAp2213* + ID_MODEL_FROM_DATABASE=Caplio R2 + +usb:v05CAp2214* + ID_MODEL_FROM_DATABASE=Caplio GX 8 + +usb:v05CAp2215* + ID_MODEL_FROM_DATABASE=DSC 725 + +usb:v05CAp2216* + ID_MODEL_FROM_DATABASE=Caplio R3 + +usb:v05CAp2222* + ID_MODEL_FROM_DATABASE=RDC-i500 + +usb:v05CB* + ID_VENDOR_FROM_DATABASE=PowerVision Technologies, Inc. + +usb:v05CBp1483* + ID_MODEL_FROM_DATABASE=PV8630 interface (scanners, webcams) + +usb:v05CC* + ID_VENDOR_FROM_DATABASE=ELSA AG + +usb:v05CCp2100* + ID_MODEL_FROM_DATABASE=MicroLink ISDN Office + +usb:v05CCp2219* + ID_MODEL_FROM_DATABASE=MicroLink ISDN + +usb:v05CCp2265* + ID_MODEL_FROM_DATABASE=MicroLink 56k + +usb:v05CCp2267* + ID_MODEL_FROM_DATABASE=MicroLink 56k (V.250) + +usb:v05CCp2280* + ID_MODEL_FROM_DATABASE=MicroLink 56k Fun + +usb:v05CCp3000* + ID_MODEL_FROM_DATABASE=Micolink USB2Ethernet [pegasus] + +usb:v05CCp3100* + ID_MODEL_FROM_DATABASE=AirLancer USB-11 + +usb:v05CCp3363* + ID_MODEL_FROM_DATABASE=MicroLink ADSL Fun + +usb:v05CD* + ID_VENDOR_FROM_DATABASE=Silicom, Ltd + +usb:v05CE* + ID_VENDOR_FROM_DATABASE=sci-worx GmbH + +usb:v05CF* + ID_VENDOR_FROM_DATABASE=Sung Forn Co., Ltd + +usb:v05D0* + ID_VENDOR_FROM_DATABASE=GE Medical Systems Lunar + +usb:v05D1* + ID_VENDOR_FROM_DATABASE=Brainboxes, Ltd + +usb:v05D1p0003* + ID_MODEL_FROM_DATABASE=Bluetooth Adapter BL-554 + +usb:v05D2* + ID_VENDOR_FROM_DATABASE=Wave Systems Corp. + +usb:v05D3* + ID_VENDOR_FROM_DATABASE=Tohoku Ricoh Co., Ltd + +usb:v05D5* + ID_VENDOR_FROM_DATABASE=Super Gate Technology Co., Ltd + +usb:v05D6* + ID_VENDOR_FROM_DATABASE=Philips Semiconductors, CICT + +usb:v05D7* + ID_VENDOR_FROM_DATABASE=Thomas & Betts Corp. + +usb:v05D7p0099* + ID_MODEL_FROM_DATABASE=10Mbps Ethernet [klsi] + +usb:v05D8* + ID_VENDOR_FROM_DATABASE=Ultima Electronics Corp. + +usb:v05D8p4001* + ID_MODEL_FROM_DATABASE=Artec Ultima 2000 + +usb:v05D8p4002* + ID_MODEL_FROM_DATABASE=Artec Ultima 2000 (GT6801 based)/Lifetec LT9385/ScanMagic 1200 UB Plus Scanner + +usb:v05D8p4003* + ID_MODEL_FROM_DATABASE=Artec E+ 48U + +usb:v05D8p4004* + ID_MODEL_FROM_DATABASE=Artec E+ Pro + +usb:v05D8p4005* + ID_MODEL_FROM_DATABASE=MEM48U + +usb:v05D8p4006* + ID_MODEL_FROM_DATABASE=TRUST EASY WEBSCAN 19200 + +usb:v05D8p4007* + ID_MODEL_FROM_DATABASE=TRUST 240H EASY WEBSCAN GOLD + +usb:v05D8p4008* + ID_MODEL_FROM_DATABASE=Trust Easy Webscan 19200 + +usb:v05D8p4009* + ID_MODEL_FROM_DATABASE=Umax Astraslim + +usb:v05D8p4013* + ID_MODEL_FROM_DATABASE=IT Scan 1200 + +usb:v05D8p8105* + ID_MODEL_FROM_DATABASE=Artec T1 USB TVBOX (cold) + +usb:v05D8p8106* + ID_MODEL_FROM_DATABASE=Artec T1 USB TVBOX (warm) + +usb:v05D8p8107* + ID_MODEL_FROM_DATABASE=Artec T1 USB TVBOX with AN2235 (cold) + +usb:v05D8p8108* + ID_MODEL_FROM_DATABASE=Artec T1 USB TVBOX with AN2235 (warm) + +usb:v05D8p8109* + ID_MODEL_FROM_DATABASE=Artec T1 USB2.0 TVBOX (cold + +usb:v05D9* + ID_VENDOR_FROM_DATABASE=Axiohm Transaction Solutions + +usb:v05D9pA225* + ID_MODEL_FROM_DATABASE=A225 Printer + +usb:v05D9pA758* + ID_MODEL_FROM_DATABASE=A758 Printer + +usb:v05D9pA794* + ID_MODEL_FROM_DATABASE=A794 Printer + +usb:v05DA* + ID_VENDOR_FROM_DATABASE=Microtek International, Inc. + +usb:v05DAp0091* + ID_MODEL_FROM_DATABASE=ScanMaker X6u + +usb:v05DAp0093* + ID_MODEL_FROM_DATABASE=ScanMaker V6USL + +usb:v05DAp0094* + ID_MODEL_FROM_DATABASE=Phantom 336CX/C3 + +usb:v05DAp0099* + ID_MODEL_FROM_DATABASE=ScanMaker X6/X6U + +usb:v05DAp009A* + ID_MODEL_FROM_DATABASE=Phantom C6 + +usb:v05DAp00A0* + ID_MODEL_FROM_DATABASE=Phantom 336CX/C3 (#2) + +usb:v05DAp00A3* + ID_MODEL_FROM_DATABASE=ScanMaker V6USL + +usb:v05DAp00AC* + ID_MODEL_FROM_DATABASE=ScanMaker V6UL + +usb:v05DAp00B6* + ID_MODEL_FROM_DATABASE=ScanMaker V6UPL + +usb:v05DAp00EF* + ID_MODEL_FROM_DATABASE=ScanMaker V6UPL + +usb:v05DAp1006* + ID_MODEL_FROM_DATABASE=Jenoptik JD350 entrance + +usb:v05DAp1011* + ID_MODEL_FROM_DATABASE=NHJ Che-ez! Kiss Digital Camera + +usb:v05DAp1018* + ID_MODEL_FROM_DATABASE=Digital Dream Enigma 1.3 + +usb:v05DAp1020* + ID_MODEL_FROM_DATABASE=Digital Dream l'espion xtra + +usb:v05DAp1025* + ID_MODEL_FROM_DATABASE=Take-it Still Camera Device + +usb:v05DAp1026* + ID_MODEL_FROM_DATABASE=Take-it + +usb:v05DAp1043* + ID_MODEL_FROM_DATABASE=Take-It 1300 DSC Bulk Driver + +usb:v05DAp1045* + ID_MODEL_FROM_DATABASE=Take-it D1 + +usb:v05DAp1047* + ID_MODEL_FROM_DATABASE=Take-it Camera Composite Device + +usb:v05DAp1048* + ID_MODEL_FROM_DATABASE=Take-it Q3 + +usb:v05DAp1049* + ID_MODEL_FROM_DATABASE=3M Still Camera Device + +usb:v05DAp1051* + ID_MODEL_FROM_DATABASE=Camcorder Series + +usb:v05DAp1052* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v05DAp1053* + ID_MODEL_FROM_DATABASE=Take-it DV Composite Device + +usb:v05DAp1054* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v05DAp1055* + ID_MODEL_FROM_DATABASE=Digital Camera Series(536) + +usb:v05DAp1056* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v05DAp1057* + ID_MODEL_FROM_DATABASE=Take-it DSC Camera Device(536) + +usb:v05DAp1058* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v05DAp1059* + ID_MODEL_FROM_DATABASE=Camcorder DSC Series + +usb:v05DAp1060* + ID_MODEL_FROM_DATABASE=Microtek Take-it MV500 + +usb:v05DAp2007* + ID_MODEL_FROM_DATABASE=ArtixScan DI 1210 + +usb:v05DAp200C* + ID_MODEL_FROM_DATABASE=1394_USB2 Scanner + +usb:v05DAp200E* + ID_MODEL_FROM_DATABASE=ArtixScan DI 810 + +usb:v05DAp2017* + ID_MODEL_FROM_DATABASE=UF ICE Scanner + +usb:v05DAp201C* + ID_MODEL_FROM_DATABASE=4800 Scanner + +usb:v05DAp201D* + ID_MODEL_FROM_DATABASE=ArtixScan DI 1610 + +usb:v05DAp201F* + ID_MODEL_FROM_DATABASE=4800 Scanner-ICE + +usb:v05DAp202E* + ID_MODEL_FROM_DATABASE=ArtixScan DI 2020 + +usb:v05DAp208B* + ID_MODEL_FROM_DATABASE=ScanMaker 6800 + +usb:v05DAp208F* + ID_MODEL_FROM_DATABASE=ArtixScan DI 2010 + +usb:v05DAp209E* + ID_MODEL_FROM_DATABASE=ScanMaker 4700LP + +usb:v05DAp20A7* + ID_MODEL_FROM_DATABASE=ScanMaker 5600 + +usb:v05DAp20B0* + ID_MODEL_FROM_DATABASE=ScanMaker X12USL + +usb:v05DAp20B1* + ID_MODEL_FROM_DATABASE=ScanMaker 8700 + +usb:v05DAp20B4* + ID_MODEL_FROM_DATABASE=ScanMaker 4700 + +usb:v05DAp20BD* + ID_MODEL_FROM_DATABASE=ScanMaker 5700 + +usb:v05DAp20C9* + ID_MODEL_FROM_DATABASE=ScanMaker 6700 + +usb:v05DAp20D2* + ID_MODEL_FROM_DATABASE=Microtek ArtixScan 1800f + +usb:v05DAp20D6* + ID_MODEL_FROM_DATABASE=PS4000 + +usb:v05DAp20DE* + ID_MODEL_FROM_DATABASE=ScanMaker 9800XL + +usb:v05DAp20E0* + ID_MODEL_FROM_DATABASE=ScanMaker 9700XL + +usb:v05DAp20ED* + ID_MODEL_FROM_DATABASE=ScanMaker 4700 + +usb:v05DAp20EE* + ID_MODEL_FROM_DATABASE=Micortek ScanMaker X12USL + +usb:v05DAp3008* + ID_MODEL_FROM_DATABASE=Scanner + +usb:v05DAp300A* + ID_MODEL_FROM_DATABASE=4800 ICE Scanner + +usb:v05DAp300B* + ID_MODEL_FROM_DATABASE=4800 Scanner + +usb:v05DAp300F* + ID_MODEL_FROM_DATABASE=MiniScan C5 + +usb:v05DAp3020* + ID_MODEL_FROM_DATABASE=4800dpi Scanner + +usb:v05DAp3021* + ID_MODEL_FROM_DATABASE=1200dpi Scanner + +usb:v05DAp3022* + ID_MODEL_FROM_DATABASE=Scanner 4800dpi + +usb:v05DAp3023* + ID_MODEL_FROM_DATABASE=USB1200II Scanner + +usb:v05DAp30C1* + ID_MODEL_FROM_DATABASE=USB600 Scanner + +usb:v05DAp30CE* + ID_MODEL_FROM_DATABASE=ScanMaker 3800 + +usb:v05DAp30CF* + ID_MODEL_FROM_DATABASE=ScanMaker 4800 + +usb:v05DAp30D4* + ID_MODEL_FROM_DATABASE=USB1200 Scanner + +usb:v05DAp30D8* + ID_MODEL_FROM_DATABASE=Scanner + +usb:v05DAp30D9* + ID_MODEL_FROM_DATABASE=USB2400 Scanner + +usb:v05DAp30E4* + ID_MODEL_FROM_DATABASE=ScanMaker 4100 + +usb:v05DAp30E5* + ID_MODEL_FROM_DATABASE=USB3200 Scanner + +usb:v05DAp30E6* + ID_MODEL_FROM_DATABASE=ScanMaker i320 + +usb:v05DAp40B3* + ID_MODEL_FROM_DATABASE=ScanMaker 3600 + +usb:v05DAp40B8* + ID_MODEL_FROM_DATABASE=ScanMaker 3700 + +usb:v05DAp40C7* + ID_MODEL_FROM_DATABASE=ScanMaker 4600 + +usb:v05DAp40CA* + ID_MODEL_FROM_DATABASE=ScanMaker 3600 + +usb:v05DAp40CB* + ID_MODEL_FROM_DATABASE=ScanMaker 3700 + +usb:v05DAp40DD* + ID_MODEL_FROM_DATABASE=ScanMaker 3750i + +usb:v05DAp40FF* + ID_MODEL_FROM_DATABASE=ScanMaker 3600 + +usb:v05DAp5003* + ID_MODEL_FROM_DATABASE=Goya + +usb:v05DAp5013* + ID_MODEL_FROM_DATABASE=3200 Scanner + +usb:v05DAp80A3* + ID_MODEL_FROM_DATABASE=ScanMaker V6USL (#2) + +usb:v05DAp80AC* + ID_MODEL_FROM_DATABASE=ScanMaker V6UL/SpicyU + +usb:v05DB* + ID_VENDOR_FROM_DATABASE=Sun Corp. (Suntac?) + +usb:v05DBp0003* + ID_MODEL_FROM_DATABASE=SUNTAC U-Cable type D2 + +usb:v05DBp0005* + ID_MODEL_FROM_DATABASE=SUNTAC U-Cable type P1 + +usb:v05DBp0009* + ID_MODEL_FROM_DATABASE=SUNTAC Slipper U + +usb:v05DBp000A* + ID_MODEL_FROM_DATABASE=SUNTAC Ir-Trinity + +usb:v05DBp000B* + ID_MODEL_FROM_DATABASE=SUNTAC U-Cable type A3 + +usb:v05DBp0011* + ID_MODEL_FROM_DATABASE=SUNTAC U-Cable type A4 + +usb:v05DC* + ID_VENDOR_FROM_DATABASE=Lexar Media, Inc. + +usb:v05DCp0001* + ID_MODEL_FROM_DATABASE=jumpSHOT CompactFlash Reader + +usb:v05DCp0002* + ID_MODEL_FROM_DATABASE=JumpShot + +usb:v05DCp0003* + ID_MODEL_FROM_DATABASE=JumpShot + +usb:v05DCp0080* + ID_MODEL_FROM_DATABASE=Jumpdrive Secure 64MB + +usb:v05DCp0081* + ID_MODEL_FROM_DATABASE=RBC Compact Flash Drive + +usb:v05DCp00A7* + ID_MODEL_FROM_DATABASE=JumpDrive Impact + +usb:v05DCp0100* + ID_MODEL_FROM_DATABASE=JumpDrive PRO + +usb:v05DCp0200* + ID_MODEL_FROM_DATABASE=JumpDrive 2.0 Pro + +usb:v05DCp0300* + ID_MODEL_FROM_DATABASE=Jumpdrive Geysr + +usb:v05DCp0301* + ID_MODEL_FROM_DATABASE=JumpDrive Classic + +usb:v05DCp0302* + ID_MODEL_FROM_DATABASE=JD Micro + +usb:v05DCp0303* + ID_MODEL_FROM_DATABASE=JD Micro Pro + +usb:v05DCp0304* + ID_MODEL_FROM_DATABASE=JD Secure II + +usb:v05DCp0310* + ID_MODEL_FROM_DATABASE=JumpDrive + +usb:v05DCp0311* + ID_MODEL_FROM_DATABASE=JumpDrive Classic + +usb:v05DCp0312* + ID_MODEL_FROM_DATABASE=JD Micro + +usb:v05DCp0313* + ID_MODEL_FROM_DATABASE=JD Micro Pro + +usb:v05DCp0320* + ID_MODEL_FROM_DATABASE=JumpDrive + +usb:v05DCp0321* + ID_MODEL_FROM_DATABASE=JD Micro + +usb:v05DCp0322* + ID_MODEL_FROM_DATABASE=JD Micro Pro + +usb:v05DCp0323* + ID_MODEL_FROM_DATABASE=UFC + +usb:v05DCp0330* + ID_MODEL_FROM_DATABASE=JumpDrive Expression + +usb:v05DCp0340* + ID_MODEL_FROM_DATABASE=JumpDrive TAD + +usb:v05DCp0350* + ID_MODEL_FROM_DATABASE=Express Card + +usb:v05DCp0400* + ID_MODEL_FROM_DATABASE=UFDC + +usb:v05DCp0401* + ID_MODEL_FROM_DATABASE=UFDC + +usb:v05DCp0403* + ID_MODEL_FROM_DATABASE=Locked B Device + +usb:v05DCp0405* + ID_MODEL_FROM_DATABASE=Locked C Device + +usb:v05DCp0407* + ID_MODEL_FROM_DATABASE=Locked D Device + +usb:v05DCp0409* + ID_MODEL_FROM_DATABASE=Locked E Device + +usb:v05DCp040B* + ID_MODEL_FROM_DATABASE=Locked F Device + +usb:v05DCp040D* + ID_MODEL_FROM_DATABASE=Locked G Device + +usb:v05DCp040F* + ID_MODEL_FROM_DATABASE=Locked H Device + +usb:v05DCp0410* + ID_MODEL_FROM_DATABASE=JumpDrive + +usb:v05DCp0411* + ID_MODEL_FROM_DATABASE=JumpDrive + +usb:v05DCp0413* + ID_MODEL_FROM_DATABASE=Locked J Device + +usb:v05DCp0415* + ID_MODEL_FROM_DATABASE=Locked K Device + +usb:v05DCp0417* + ID_MODEL_FROM_DATABASE=Locked L Device + +usb:v05DCp0419* + ID_MODEL_FROM_DATABASE=Locked M Device + +usb:v05DCp041B* + ID_MODEL_FROM_DATABASE=Locked N Device + +usb:v05DCp041D* + ID_MODEL_FROM_DATABASE=Locked O Device + +usb:v05DCp041F* + ID_MODEL_FROM_DATABASE=Locked P Device + +usb:v05DCp0420* + ID_MODEL_FROM_DATABASE=JumpDrive + +usb:v05DCp0421* + ID_MODEL_FROM_DATABASE=JumpDrive + +usb:v05DCp0423* + ID_MODEL_FROM_DATABASE=Locked R Device + +usb:v05DCp0425* + ID_MODEL_FROM_DATABASE=Locked S Device + +usb:v05DCp0427* + ID_MODEL_FROM_DATABASE=Locked T Device + +usb:v05DCp0429* + ID_MODEL_FROM_DATABASE=Locked U Device + +usb:v05DCp042B* + ID_MODEL_FROM_DATABASE=Locked V Device + +usb:v05DCp042D* + ID_MODEL_FROM_DATABASE=Locked W Device + +usb:v05DCp042F* + ID_MODEL_FROM_DATABASE=Locked X Device + +usb:v05DCp0431* + ID_MODEL_FROM_DATABASE=Locked Y Device + +usb:v05DCp0433* + ID_MODEL_FROM_DATABASE=Locked Z Device + +usb:v05DCp4D02* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v05DCp4D12* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v05DCp4D30* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v05DCpA300* + ID_MODEL_FROM_DATABASE=JumpDrive2 + +usb:v05DCpA400* + ID_MODEL_FROM_DATABASE=JumpDrive trade; Pro 40-501 + +usb:v05DCpA410* + ID_MODEL_FROM_DATABASE=JumpDrive 128MB/256MB + +usb:v05DCpA411* + ID_MODEL_FROM_DATABASE=JumpDrive Traveler + +usb:v05DCpA420* + ID_MODEL_FROM_DATABASE=JumpDrive Pro + +usb:v05DCpA421* + ID_MODEL_FROM_DATABASE=JumpDrive Pro II + +usb:v05DCpA422* + ID_MODEL_FROM_DATABASE=JumpDrive Micro Pro + +usb:v05DCpA430* + ID_MODEL_FROM_DATABASE=JumpDrive Secure + +usb:v05DCpA431* + ID_MODEL_FROM_DATABASE=JumpDrive Secure II + +usb:v05DCpA432* + ID_MODEL_FROM_DATABASE=JumpDrive Classic + +usb:v05DCpA440* + ID_MODEL_FROM_DATABASE=JumpDrive Lightning + +usb:v05DCpA450* + ID_MODEL_FROM_DATABASE=JumpDrive TouchGuard + +usb:v05DCpA460* + ID_MODEL_FROM_DATABASE=JD Mercury + +usb:v05DCpA501* + ID_MODEL_FROM_DATABASE=JumpDrive Classic + +usb:v05DCpA510* + ID_MODEL_FROM_DATABASE=JumpDrive Sport + +usb:v05DCpA530* + ID_MODEL_FROM_DATABASE=JumpDrive Expression + +usb:v05DCpA531* + ID_MODEL_FROM_DATABASE=JumpDrive Secure II + +usb:v05DCpA560* + ID_MODEL_FROM_DATABASE=JumpDrive FireFly + +usb:v05DCpA701* + ID_MODEL_FROM_DATABASE=JumpDrive FireFly + +usb:v05DCpA731* + ID_MODEL_FROM_DATABASE=JumpDrive FireFly + +usb:v05DCpA790* + ID_MODEL_FROM_DATABASE=JumpDrive 2GB + +usb:v05DCpA811* + ID_MODEL_FROM_DATABASE=16GB Gizmo! + +usb:v05DCpA813* + ID_MODEL_FROM_DATABASE=16gB flash thumb drive + +usb:v05DCpB002* + ID_MODEL_FROM_DATABASE=USB CF Reader + +usb:v05DCpB018* + ID_MODEL_FROM_DATABASE=Multi-Card Reader + +usb:v05DCpB047* + ID_MODEL_FROM_DATABASE=SDHC Reader [RW047-7000] + +usb:v05DCpC753* + ID_MODEL_FROM_DATABASE=JumpDrive TwistTurn + +usb:v05DD* + ID_VENDOR_FROM_DATABASE=Delta Electronics, Inc. + +usb:v05DDpFF31* + ID_MODEL_FROM_DATABASE=AWU-120 + +usb:v05DDpFF32* + ID_MODEL_FROM_DATABASE=FriendlyNET AeroLAN AL2011 + +usb:v05DDpFF35* + ID_MODEL_FROM_DATABASE=PCW 100 - Wireless 802.11b Adapter + +usb:v05DDpFF91* + ID_MODEL_FROM_DATABASE=2Wire PC Port Phoneline 10Mbps Adapter + +usb:v05DF* + ID_VENDOR_FROM_DATABASE=Silicon Vision, Inc. + +usb:v05E0* + ID_VENDOR_FROM_DATABASE=Symbol Technologies + +usb:v05E0p0700* + ID_MODEL_FROM_DATABASE=Bar Code Scanner (CS1504) + +usb:v05E0p0800* + ID_MODEL_FROM_DATABASE=Spectrum24 Wireless LAN Adapter + +usb:v05E0p1200* + ID_MODEL_FROM_DATABASE=Bar Code Scanner + +usb:v05E0p1900* + ID_MODEL_FROM_DATABASE=SNAPI Imaging Device + +usb:v05E0p2000* + ID_MODEL_FROM_DATABASE=MC3090 Rugged Mobile Computer + +usb:v05E0p200D* + ID_MODEL_FROM_DATABASE=MC70 Rugged Mobile Computer + +usb:v05E1* + ID_VENDOR_FROM_DATABASE=Syntek Semiconductor Co., Ltd + +usb:v05E1p0100* + ID_MODEL_FROM_DATABASE=802.11g + Bluetooth Wireless Adapter + +usb:v05E1p0408* + ID_MODEL_FROM_DATABASE=STK1160 Video Capture Device + +usb:v05E1p0500* + ID_MODEL_FROM_DATABASE=DC-112X Webcam + +usb:v05E1p0501* + ID_MODEL_FROM_DATABASE=DC-1125 Webcam + +usb:v05E1p0890* + ID_MODEL_FROM_DATABASE=STK011 Camera + +usb:v05E1p0892* + ID_MODEL_FROM_DATABASE=STK013 Camera + +usb:v05E1p0895* + ID_MODEL_FROM_DATABASE=STK016 Camera + +usb:v05E1p0896* + ID_MODEL_FROM_DATABASE=STK017 Camera + +usb:v05E1p2010* + ID_MODEL_FROM_DATABASE=ARCTIC Sound P261 Headphones + +usb:v05E2* + ID_VENDOR_FROM_DATABASE=ElecVision, Inc. + +usb:v05E3* + ID_VENDOR_FROM_DATABASE=Genesys Logic, Inc. + +usb:v05E3p000A* + ID_MODEL_FROM_DATABASE=Keyboard with PS/2 Port + +usb:v05E3p000B* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v05E3p0100* + ID_MODEL_FROM_DATABASE=Nintendo Game Boy Advance SP + +usb:v05E3p0120* + ID_MODEL_FROM_DATABASE=Pacific Image Electronics PrimeFilm 1800u slide/negative scanner + +usb:v05E3p0131* + ID_MODEL_FROM_DATABASE=CF/SM Reader/Writer + +usb:v05E3p0142* + ID_MODEL_FROM_DATABASE=Multiple Slides Scanner-3600 + +usb:v05E3p0143* + ID_MODEL_FROM_DATABASE=Multiple Frames Film Scanner-36series + +usb:v05E3p0180* + ID_MODEL_FROM_DATABASE=Plustek Scanner + +usb:v05E3p0182* + ID_MODEL_FROM_DATABASE=Wize Media 1000 + +usb:v05E3p0189* + ID_MODEL_FROM_DATABASE=ScanJet 4600 series + +usb:v05E3p018A* + ID_MODEL_FROM_DATABASE=Xerox 6400 + +usb:v05E3p0300* + ID_MODEL_FROM_DATABASE=GLUSB98PT Parallel Port + +usb:v05E3p0301* + ID_MODEL_FROM_DATABASE=USB2LPT Cable Release2 + +usb:v05E3p0406* + ID_MODEL_FROM_DATABASE=Hub + +usb:v05E3p0501* + ID_MODEL_FROM_DATABASE=GL620USB Host-Host interface + +usb:v05E3p0502* + ID_MODEL_FROM_DATABASE=GL620USB-A GeneLink USB-USB Bridge + +usb:v05E3p0503* + ID_MODEL_FROM_DATABASE=Webcam + +usb:v05E3p0504* + ID_MODEL_FROM_DATABASE=HID Keyboard Filter + +usb:v05E3p0604* + ID_MODEL_FROM_DATABASE=USB 1.1 Hub + +usb:v05E3p0605* + ID_MODEL_FROM_DATABASE=USB 2.0 Hub + +usb:v05E3p0606* + ID_MODEL_FROM_DATABASE=USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub + +usb:v05E3p0607* + ID_MODEL_FROM_DATABASE=Logitech G110 Hub + +usb:v05E3p0608* + ID_MODEL_FROM_DATABASE=USB-2.0 4-Port HUB + +usb:v05E3p0610* + ID_MODEL_FROM_DATABASE=4-port hub + +usb:v05E3p0660* + ID_MODEL_FROM_DATABASE=USB 2.0 Hub + +usb:v05E3p0700* + ID_MODEL_FROM_DATABASE=SIIG US2256 CompactFlash Card Reader + +usb:v05E3p0701* + ID_MODEL_FROM_DATABASE=USB 2.0 IDE Adapter + +usb:v05E3p0702* + ID_MODEL_FROM_DATABASE=USB 2.0 IDE Adapter [GL811E] + +usb:v05E3p0703* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v05E3p0704* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v05E3p0705* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v05E3p0706* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v05E3p0707* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v05E3p0708* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v05E3p0709* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v05E3p070A* + ID_MODEL_FROM_DATABASE=Pen Flash + +usb:v05E3p070B* + ID_MODEL_FROM_DATABASE=DMHS1B Rev 3 DFU Adapter + +usb:v05E3p070E* + ID_MODEL_FROM_DATABASE=USB 2.0 Card Reader + +usb:v05E3p070F* + ID_MODEL_FROM_DATABASE=Pen Flash + +usb:v05E3p0710* + ID_MODEL_FROM_DATABASE=USB 2.0 33-in-1 Card Reader + +usb:v05E3p0711* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v05E3p0712* + ID_MODEL_FROM_DATABASE=Delkin Mass Storage Device + +usb:v05E3p0715* + ID_MODEL_FROM_DATABASE=USB 2.0 microSD Reader + +usb:v05E3p0716* + ID_MODEL_FROM_DATABASE=USB 2.0 Multislot Card Reader/Writer + +usb:v05E3p0717* + ID_MODEL_FROM_DATABASE=All-in-1 Card Reader + +usb:v05E3p0718* + ID_MODEL_FROM_DATABASE=IDE/SATA Adapter + +usb:v05E3p0719* + ID_MODEL_FROM_DATABASE=SATA adapter + +usb:v05E3p0723* + ID_MODEL_FROM_DATABASE=GL827L SD/MMC/MS Flash Card Reader + +usb:v05E3p0726* + ID_MODEL_FROM_DATABASE=SD Card Reader + +usb:v05E3p0727* + ID_MODEL_FROM_DATABASE=microSD Reader/Writer + +usb:v05E3p0736* + ID_MODEL_FROM_DATABASE=microSD Reader/Writer + +usb:v05E3p0760* + ID_MODEL_FROM_DATABASE=USB 2.0 Card Reader/Writer + +usb:v05E3p0761* + ID_MODEL_FROM_DATABASE=Genesys Mass Storage Device + +usb:v05E3p0780* + ID_MODEL_FROM_DATABASE=USBFS DFU Adapter + +usb:v05E3p07A0* + ID_MODEL_FROM_DATABASE=Pen Flash + +usb:v05E3p0880* + ID_MODEL_FROM_DATABASE=Wasp (SL-6612) + +usb:v05E3p0927* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v05E3p1205* + ID_MODEL_FROM_DATABASE=Afilias Optical Mouse H3003 / Trust Optical USB MultiColour Mouse MI-2330 + +usb:v05E3pA700* + ID_MODEL_FROM_DATABASE=Pen Flash + +usb:v05E3pF102* + ID_MODEL_FROM_DATABASE=VX7012 TV Box + +usb:v05E3pF103* + ID_MODEL_FROM_DATABASE=VX7012 TV Box + +usb:v05E3pF104* + ID_MODEL_FROM_DATABASE=VX7012 TV Box + +usb:v05E3pFD21* + ID_MODEL_FROM_DATABASE=3M TL20 Temperature Logger + +usb:v05E3pFE00* + ID_MODEL_FROM_DATABASE=Razer Mouse + +usb:v05E4* + ID_VENDOR_FROM_DATABASE=Red Wing Corp. + +usb:v05E5* + ID_VENDOR_FROM_DATABASE=Fuji Electric Co., Ltd + +usb:v05E6* + ID_VENDOR_FROM_DATABASE=Keithley Instruments + +usb:v05E8* + ID_VENDOR_FROM_DATABASE=ICC, Inc. + +usb:v05E9* + ID_VENDOR_FROM_DATABASE=Kawasaki LSI + +usb:v05E9p0008* + ID_MODEL_FROM_DATABASE=KL5KUSB101B Ethernet [klsi] + +usb:v05E9p0009* + ID_MODEL_FROM_DATABASE=Sony 10Mbps Ethernet [pegasus] + +usb:v05E9p000C* + ID_MODEL_FROM_DATABASE=USB-to-RS-232 + +usb:v05E9p000D* + ID_MODEL_FROM_DATABASE=USB-to-RS-232 + +usb:v05E9p0014* + ID_MODEL_FROM_DATABASE=RS-232 J104 + +usb:v05E9p0040* + ID_MODEL_FROM_DATABASE=Ethernet Adapter + +usb:v05E9p2008* + ID_MODEL_FROM_DATABASE=Ethernet Adapter + +usb:v05EB* + ID_VENDOR_FROM_DATABASE=FFC, Ltd + +usb:v05EC* + ID_VENDOR_FROM_DATABASE=COM21, Inc. + +usb:v05EE* + ID_VENDOR_FROM_DATABASE=Cytechinfo Inc. + +usb:v05EF* + ID_VENDOR_FROM_DATABASE=AVB, Inc. [anko?] + +usb:v05EFp020A* + ID_MODEL_FROM_DATABASE=Top Shot Pegasus Joystick + +usb:v05EFp8884* + ID_MODEL_FROM_DATABASE=Mag Turbo Force Wheel + +usb:v05EFp8888* + ID_MODEL_FROM_DATABASE=Top Shot Force Feedback Racing Wheel + +usb:v05F0* + ID_VENDOR_FROM_DATABASE=Canopus Co., Ltd + +usb:v05F0p0101* + ID_MODEL_FROM_DATABASE=DA-Port DAC + +usb:v05F1* + ID_VENDOR_FROM_DATABASE=Compass Communications + +usb:v05F2* + ID_VENDOR_FROM_DATABASE=Dexin Corp., Ltd + +usb:v05F2p0010* + ID_MODEL_FROM_DATABASE=AQ Mouse + +usb:v05F3* + ID_VENDOR_FROM_DATABASE=PI Engineering, Inc. + +usb:v05F3p0007* + ID_MODEL_FROM_DATABASE=Kinesis Advantage PRO MPC/USB Keyboard + +usb:v05F3p0081* + ID_MODEL_FROM_DATABASE=Kinesis Integrated Hub + +usb:v05F3p00FF* + ID_MODEL_FROM_DATABASE=VEC Footpedal + +usb:v05F3p020B* + ID_MODEL_FROM_DATABASE=PS2 Adapter + +usb:v05F3p0232* + ID_MODEL_FROM_DATABASE=X-Keys Switch Interface, Programming Mode + +usb:v05F3p0261* + ID_MODEL_FROM_DATABASE=X-Keys Switch Interface, SPLAT Mode + +usb:v05F3p0264* + ID_MODEL_FROM_DATABASE=X-Keys Switch Interface, Composite Mode + +usb:v05F5* + ID_VENDOR_FROM_DATABASE=Unixtar Technology, Inc. + +usb:v05F6* + ID_VENDOR_FROM_DATABASE=AOC International + +usb:v05F7* + ID_VENDOR_FROM_DATABASE=RFC Distribution(s) PTE, Ltd + +usb:v05F9* + ID_VENDOR_FROM_DATABASE=PSC Scanning, Inc. + +usb:v05F9p1104* + ID_MODEL_FROM_DATABASE=Magellan 2200VS + +usb:v05F9p2206* + ID_MODEL_FROM_DATABASE=Datalogic Gryphon GFS4170 + +usb:v05F9p2602* + ID_MODEL_FROM_DATABASE=Datalogic Magellan 1100i Barcode Scanner + +usb:v05F9p5204* + ID_MODEL_FROM_DATABASE=Datalogic Gryphon GFS4170 (config mode) + +usb:v05FA* + ID_VENDOR_FROM_DATABASE=Siemens Telecommunications Systems, Ltd + +usb:v05FAp3301* + ID_MODEL_FROM_DATABASE=Keyboard with PS/2 Mouse Port + +usb:v05FAp3302* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v05FAp3303* + ID_MODEL_FROM_DATABASE=Keyboard with PS/2 Mouse Port + +usb:v05FC* + ID_VENDOR_FROM_DATABASE=Harman Multimedia + +usb:v05FCp7849* + ID_MODEL_FROM_DATABASE=Harman/Kardon SoundSticks + +usb:v05FD* + ID_VENDOR_FROM_DATABASE=InterAct, Inc. + +usb:v05FDp0239* + ID_MODEL_FROM_DATABASE=SV-239 HammerHead Digital + +usb:v05FDp0251* + ID_MODEL_FROM_DATABASE=Raider Pro + +usb:v05FDp0253* + ID_MODEL_FROM_DATABASE=ProPad 8 Digital + +usb:v05FDp0286* + ID_MODEL_FROM_DATABASE=SV-286 Cyclone Digital + +usb:v05FDp107A* + ID_MODEL_FROM_DATABASE=PowerPad Pro X-Box pad + +usb:v05FDp262A* + ID_MODEL_FROM_DATABASE=3dfx HammerHead FX + +usb:v05FDp262F* + ID_MODEL_FROM_DATABASE=HammerHead Fx + +usb:v05FDpDAAE* + ID_MODEL_FROM_DATABASE=Game Shark + +usb:v05FE* + ID_VENDOR_FROM_DATABASE=Chic Technology Corp. + +usb:v05FEp0001* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v05FEp0003* + ID_MODEL_FROM_DATABASE=Cypress USB Mouse + +usb:v05FEp0005* + ID_MODEL_FROM_DATABASE=Viewmaster 4D Browser Mouse + +usb:v05FEp0007* + ID_MODEL_FROM_DATABASE=Twinhead Mouse + +usb:v05FEp0009* + ID_MODEL_FROM_DATABASE=Inland Pro 4500/5000 Mouse + +usb:v05FEp0011* + ID_MODEL_FROM_DATABASE=Browser Mouse + +usb:v05FEp0014* + ID_MODEL_FROM_DATABASE=Gamepad + +usb:v05FEp1010* + ID_MODEL_FROM_DATABASE=Optical Wireless + +usb:v05FF* + ID_VENDOR_FROM_DATABASE=LeCroy Corp. + +usb:v0600* + ID_VENDOR_FROM_DATABASE=Barco Display Systems + +usb:v0601* + ID_VENDOR_FROM_DATABASE=Jazz Hipster Corp. + +usb:v0601p0003* + ID_MODEL_FROM_DATABASE=Internet Security Co., Ltd. SecureKey + +usb:v0602* + ID_VENDOR_FROM_DATABASE=Vista Imaging, Inc. + +usb:v0602p1001* + ID_MODEL_FROM_DATABASE=ViCam Webcam + +usb:v0603* + ID_VENDOR_FROM_DATABASE=Novatek Microelectronics Corp. + +usb:v0603p00F1* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v0603p6871* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v0604* + ID_VENDOR_FROM_DATABASE=Jean Co., Ltd + +usb:v0605* + ID_VENDOR_FROM_DATABASE=Anchor C&C Co., Ltd + +usb:v0606* + ID_VENDOR_FROM_DATABASE=Royal Information Electronics Co., Ltd + +usb:v0607* + ID_VENDOR_FROM_DATABASE=Bridge Information Co., Ltd + +usb:v0608* + ID_VENDOR_FROM_DATABASE=Genrad Ads + +usb:v0609* + ID_VENDOR_FROM_DATABASE=SMK Manufacturing, Inc. + +usb:v0609p031D* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v0609p0322* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v0609p0334* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v0609pFF12* + ID_MODEL_FROM_DATABASE=SMK Bluetooth Device + +usb:v060A* + ID_VENDOR_FROM_DATABASE=Worthington Data Solutions, Inc. + +usb:v060B* + ID_VENDOR_FROM_DATABASE=Solid Year + +usb:v060Bp0001* + ID_MODEL_FROM_DATABASE=MacAlly Keyboard + +usb:v060Bp0230* + ID_MODEL_FROM_DATABASE=KSK-8003 UX Keyboard + +usb:v060Bp1006* + ID_MODEL_FROM_DATABASE=Japanese Keyboard - 260U + +usb:v060Bp2101* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v060Bp2231* + ID_MODEL_FROM_DATABASE=KSK-6001 UELX Keyboard + +usb:v060Bp2270* + ID_MODEL_FROM_DATABASE=Gigabyte K8100 Aivia Gaming Keyboard + +usb:v060Bp5811* + ID_MODEL_FROM_DATABASE=ACK-571U Wireless Keyboard + +usb:v060Bp5903* + ID_MODEL_FROM_DATABASE=Japanese Keyboard - 595U + +usb:v060Bp6001* + ID_MODEL_FROM_DATABASE=SolidTek USB 2p HUB + +usb:v060Bp6002* + ID_MODEL_FROM_DATABASE=SolidTek USB Keyboard + +usb:v060Bp6003* + ID_MODEL_FROM_DATABASE=Japanese Keyboard - 600HM + +usb:v060Bp6231* + ID_MODEL_FROM_DATABASE=Thermaltake eSPORTS Meka Keyboard + +usb:v060Bp8007* + ID_MODEL_FROM_DATABASE=P-W1G1F12 VER:1 [Macally MegaCam] + +usb:v060BpA001* + ID_MODEL_FROM_DATABASE=Maxwell Compact Pc PM3 + +usb:v060C* + ID_VENDOR_FROM_DATABASE=EEH Datalink GmbH + +usb:v060D* + ID_VENDOR_FROM_DATABASE=Auctor Corp. + +usb:v060E* + ID_VENDOR_FROM_DATABASE=Transmonde Technologies, Inc. + +usb:v060F* + ID_VENDOR_FROM_DATABASE=Joinsoon Electronics Mfg. Co., Ltd + +usb:v0610* + ID_VENDOR_FROM_DATABASE=Costar Electronics, Inc. + +usb:v0611* + ID_VENDOR_FROM_DATABASE=Totoku Electric Co., Ltd + +usb:v0613* + ID_VENDOR_FROM_DATABASE=TransAct Technologies, Inc. + +usb:v0614* + ID_VENDOR_FROM_DATABASE=Bio-Rad Laboratories + +usb:v0615* + ID_VENDOR_FROM_DATABASE=Quabbin Wire & Cable Co., Inc. + +usb:v0616* + ID_VENDOR_FROM_DATABASE=Future Techno Designs PVT, Ltd + +usb:v0617* + ID_VENDOR_FROM_DATABASE=Swiss Federal Insitute of Technology + +usb:v0618* + ID_VENDOR_FROM_DATABASE=MacAlly + +usb:v0618p0101* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v0619* + ID_VENDOR_FROM_DATABASE=Seiko Instruments, Inc. + +usb:v0619p0101* + ID_MODEL_FROM_DATABASE=SLP-100 Driver + +usb:v0619p0102* + ID_MODEL_FROM_DATABASE=SLP-200 Driver + +usb:v0619p0103* + ID_MODEL_FROM_DATABASE=SLP-100N Driver + +usb:v0619p0104* + ID_MODEL_FROM_DATABASE=SLP-200N Driver + +usb:v0619p0105* + ID_MODEL_FROM_DATABASE=SLP-240 Driver + +usb:v0619p0501* + ID_MODEL_FROM_DATABASE=SLP-440 Driver + +usb:v0619p0502* + ID_MODEL_FROM_DATABASE=SLP-450 Driver + +usb:v061A* + ID_VENDOR_FROM_DATABASE=Veridicom International, Inc. + +usb:v061Ap0110* + ID_MODEL_FROM_DATABASE=5thSense Fingerprint Sensor + +usb:v061Ap0200* + ID_MODEL_FROM_DATABASE=FPS200 Fingerprint Sensor + +usb:v061Ap8200* + ID_MODEL_FROM_DATABASE=VKI-A Fingerprint Sensor/Flash Storage (dumb) + +usb:v061Ap9200* + ID_MODEL_FROM_DATABASE=VKI-B Fingerprint Sensor/Flash Storage (smart) + +usb:v061B* + ID_VENDOR_FROM_DATABASE=Promptus Communications, Inc. + +usb:v061C* + ID_VENDOR_FROM_DATABASE=Act Labs, Ltd + +usb:v061D* + ID_VENDOR_FROM_DATABASE=Quatech, Inc. + +usb:v061DpC020* + ID_MODEL_FROM_DATABASE=SSU-100 + +usb:v061E* + ID_VENDOR_FROM_DATABASE=Nissei Electric Co. + +usb:v061Ep0001* + ID_MODEL_FROM_DATABASE=nissei 128DE-USB - + +usb:v061Ep0010* + ID_MODEL_FROM_DATABASE=nissei 128DE-PNA - + +usb:v0620* + ID_VENDOR_FROM_DATABASE=Alaris, Inc. + +usb:v0620p0004* + ID_MODEL_FROM_DATABASE=QuickVideo weeCam + +usb:v0620p0007* + ID_MODEL_FROM_DATABASE=QuickVideo weeCam + +usb:v0620p000A* + ID_MODEL_FROM_DATABASE=QuickVideo weeCam + +usb:v0620p000B* + ID_MODEL_FROM_DATABASE=QuickVideo weeCam + +usb:v0621* + ID_VENDOR_FROM_DATABASE=ODU-Steckverbindungssysteme GmbH & Co. KG + +usb:v0622* + ID_VENDOR_FROM_DATABASE=Iotech, Inc. + +usb:v0623* + ID_VENDOR_FROM_DATABASE=Littelfuse, Inc. + +usb:v0624* + ID_VENDOR_FROM_DATABASE=Avocent Corp. + +usb:v0624p0294* + ID_MODEL_FROM_DATABASE=Dell 03R874 KVM dongle + +usb:v0624p0402* + ID_MODEL_FROM_DATABASE=Cisco Virtual Keyboard and Mouse + +usb:v0624p0403* + ID_MODEL_FROM_DATABASE=Cisco Virtual Mass Storage + +usb:v0625* + ID_VENDOR_FROM_DATABASE=TiMedia Technology Co., Ltd + +usb:v0626* + ID_VENDOR_FROM_DATABASE=Nippon Systems Development Co., Ltd + +usb:v0627* + ID_VENDOR_FROM_DATABASE=Adomax Technology Co., Ltd + +usb:v0628* + ID_VENDOR_FROM_DATABASE=Tasking Software, Inc. + +usb:v0629* + ID_VENDOR_FROM_DATABASE=Zida Technologies, Ltd + +usb:v062A* + ID_VENDOR_FROM_DATABASE=Creative Labs + +usb:v062Ap0000* + ID_MODEL_FROM_DATABASE=Optical mouse + +usb:v062Ap0001* + ID_MODEL_FROM_DATABASE=Notebook Optical Mouse + +usb:v062Ap0102* + ID_MODEL_FROM_DATABASE=Wireless Keyboard/Mouse Combo [MK1152WC] + +usb:v062Ap0201* + ID_MODEL_FROM_DATABASE=Defender Office Keyboard (K7310) S Zodiak KM-9010 + +usb:v062Ap0252* + ID_MODEL_FROM_DATABASE=Emerge Uni-retractable Laser Mouse + +usb:v062Ap3286* + ID_MODEL_FROM_DATABASE=Nano Receiver [Sandstrom Laser Mouse SMWLL11] + +usb:v062Ap6301* + ID_MODEL_FROM_DATABASE=Trust Wireless Optical Mouse MI-4150K + +usb:v062Ap9003* + ID_MODEL_FROM_DATABASE=VoIP Conference Hub (A16GH) + +usb:v062Ap9004* + ID_MODEL_FROM_DATABASE=USR9602 USB Internet Mini Phone + +usb:v062B* + ID_VENDOR_FROM_DATABASE=Greatlink Electronics Taiwan, Ltd + +usb:v062C* + ID_VENDOR_FROM_DATABASE=Institute for Information Industry + +usb:v062D* + ID_VENDOR_FROM_DATABASE=Taiwan Tai-Hao Enterprises Co., Ltd + +usb:v062E* + ID_VENDOR_FROM_DATABASE=Mainsuper Enterprises Co., Ltd + +usb:v062F* + ID_VENDOR_FROM_DATABASE=Sin Sheng Terminal & Machine, Inc. + +usb:v0631* + ID_VENDOR_FROM_DATABASE=JUJO Electronics Corp. + +usb:v0633* + ID_VENDOR_FROM_DATABASE=Cyrix Corp. + +usb:v0634* + ID_VENDOR_FROM_DATABASE=Micron Technology, Inc. + +usb:v0634p0655* + ID_MODEL_FROM_DATABASE=Embedded Mass Storage Drive [RealSSD] + +usb:v0635* + ID_VENDOR_FROM_DATABASE=Methode Electronics, Inc. + +usb:v0636* + ID_VENDOR_FROM_DATABASE=Sierra Imaging, Inc. + +usb:v0636p0003* + ID_MODEL_FROM_DATABASE=Vivicam 35Xx + +usb:v0638* + ID_VENDOR_FROM_DATABASE=Avision, Inc. + +usb:v0638p0268* + ID_MODEL_FROM_DATABASE=iVina 1200U Scanner + +usb:v0638p026A* + ID_MODEL_FROM_DATABASE=Minolta Dimage Scan Dual II AF-2820U (2886) + +usb:v0638p0A10* + ID_MODEL_FROM_DATABASE=iVina FB1600/UMAX Astra 4500 + +usb:v0638p0A13* + ID_MODEL_FROM_DATABASE=AV600U + +usb:v0638p0A15* + ID_MODEL_FROM_DATABASE=Konica Minolta SC-110 + +usb:v0638p0A16* + ID_MODEL_FROM_DATABASE=Konica Minolta SC-215 + +usb:v0638p0A30* + ID_MODEL_FROM_DATABASE=UMAX Astra 6700 Scanner + +usb:v0638p0A41* + ID_MODEL_FROM_DATABASE=Avision AM3000/MF3000 Series + +usb:v0638p0F01* + ID_MODEL_FROM_DATABASE=fi-4010CU + +usb:v0638p4004* + ID_MODEL_FROM_DATABASE=Minolta Dimage Scan Elite II AF-2920 (2888) + +usb:v0639* + ID_VENDOR_FROM_DATABASE=Chrontel, Inc. + +usb:v063A* + ID_VENDOR_FROM_DATABASE=Techwin Corp. + +usb:v063B* + ID_VENDOR_FROM_DATABASE=Taugagreining HF + +usb:v063C* + ID_VENDOR_FROM_DATABASE=Yamaichi Electronics Co., Ltd (Sakura) + +usb:v063D* + ID_VENDOR_FROM_DATABASE=Fong Kai Industrial Co., Ltd + +usb:v063E* + ID_VENDOR_FROM_DATABASE=RealMedia Technology, Inc. + +usb:v063F* + ID_VENDOR_FROM_DATABASE=New Technology Cable, Ltd + +usb:v0640* + ID_VENDOR_FROM_DATABASE=Hitex Development Tools + +usb:v0640p0026* + ID_MODEL_FROM_DATABASE=LPC-Stick + +usb:v0641* + ID_VENDOR_FROM_DATABASE=Woods Industries, Inc. + +usb:v0642* + ID_VENDOR_FROM_DATABASE=VIA Medical Corp. + +usb:v0644* + ID_VENDOR_FROM_DATABASE=TEAC Corp. + +usb:v0644p0000* + ID_MODEL_FROM_DATABASE=Floppy + +usb:v0644p0200* + ID_MODEL_FROM_DATABASE=All-In-One Multi-Card Reader CA200/B/S + +usb:v0644p1000* + ID_MODEL_FROM_DATABASE=CD-ROM Drive + +usb:v0644p800D* + ID_MODEL_FROM_DATABASE=TASCAM Portastudio DP-01FX + +usb:v0644p800E* + ID_MODEL_FROM_DATABASE=TASCAM US-122L + +usb:v0644p8021* + ID_MODEL_FROM_DATABASE=TASCAM US-122mkII + +usb:v0644pD001* + ID_MODEL_FROM_DATABASE=CD-R/RW Unit + +usb:v0644pD002* + ID_MODEL_FROM_DATABASE=CD-R/RW Unit + +usb:v0644pD010* + ID_MODEL_FROM_DATABASE=CD-RW/DVD Unit + +usb:v0645* + ID_VENDOR_FROM_DATABASE=Who? Vision Systems, Inc. + +usb:v0646* + ID_VENDOR_FROM_DATABASE=UMAX + +usb:v0647* + ID_VENDOR_FROM_DATABASE=Acton Research Corp. + +usb:v0647p0100* + ID_MODEL_FROM_DATABASE=ARC SpectraPro UV/VIS/IR Monochromator/Spectrograph + +usb:v0647p0101* + ID_MODEL_FROM_DATABASE=ARC AM-VM Mono Airpath/Vacuum Monochromator/Spectrograph + +usb:v0647p0102* + ID_MODEL_FROM_DATABASE=ARC Inspectrum Mono + +usb:v0647p0103* + ID_MODEL_FROM_DATABASE=ARC Filterwheel + +usb:v0647p03E9* + ID_MODEL_FROM_DATABASE=Inspectrum 128x1024 F VIS Spectrograph + +usb:v0647p03EA* + ID_MODEL_FROM_DATABASE=Inspectrum 256x1024 F VIS Spectrograph + +usb:v0647p03EB* + ID_MODEL_FROM_DATABASE=Inspectrum 128x1024 B VIS Spectrograph + +usb:v0647p03EC* + ID_MODEL_FROM_DATABASE=Inspectrum 256x1024 B VIS Spectrograph + +usb:v0648* + ID_VENDOR_FROM_DATABASE=Inside Out Networks + +usb:v0649* + ID_VENDOR_FROM_DATABASE=Weli Science Co., Ltd + +usb:v064B* + ID_VENDOR_FROM_DATABASE=Analog Devices, Inc. (White Mountain DSP) + +usb:v064Bp0165* + ID_MODEL_FROM_DATABASE=Blackfin 535 [ADZS HPUSB ICE] + +usb:v064C* + ID_VENDOR_FROM_DATABASE=Ji-Haw Industrial Co., Ltd + +usb:v064D* + ID_VENDOR_FROM_DATABASE=TriTech Microelectronics, Ltd + +usb:v064E* + ID_VENDOR_FROM_DATABASE=Suyin Corp. + +usb:v064EpA100* + ID_MODEL_FROM_DATABASE=Acer OrbiCam + +usb:v064EpA101* + ID_MODEL_FROM_DATABASE=Acer CrystalEye Webcam + +usb:v064EpA102* + ID_MODEL_FROM_DATABASE=Acer/Lenovo Webcam [CN0316] + +usb:v064EpA103* + ID_MODEL_FROM_DATABASE=Acer/HP Integrated Webcam [CN0314] + +usb:v064EpA110* + ID_MODEL_FROM_DATABASE=HP Webcam + +usb:v064EpA114* + ID_MODEL_FROM_DATABASE=Lemote Webcam + +usb:v064EpA136* + ID_MODEL_FROM_DATABASE=Asus Integrated Webcam [CN031B] + +usb:v064EpA219* + ID_MODEL_FROM_DATABASE=1.3M WebCam (notebook emachines E730, Acer sub-brand) + +usb:v064EpC107* + ID_MODEL_FROM_DATABASE=HP webcam [dv6-1190en] + +usb:v064EpD101* + ID_MODEL_FROM_DATABASE=Acer CrystalEye Webcam + +usb:v064EpE201* + ID_MODEL_FROM_DATABASE=Lenovo Integrated Webcam + +usb:v064EpE203* + ID_MODEL_FROM_DATABASE=Lenovo Integrated Webcam + +usb:v064EpE258* + ID_MODEL_FROM_DATABASE=HP TrueVision HD Integrated Webcam + +usb:v064EpF102* + ID_MODEL_FROM_DATABASE=Lenovo Integrated Webcam [R5U877] + +usb:v064EpF103* + ID_MODEL_FROM_DATABASE=Lenovo Integrated Webcam [R5U877] + +usb:v064EpF300* + ID_MODEL_FROM_DATABASE=UVC 0.3M Webcam + +usb:v064F* + ID_VENDOR_FROM_DATABASE=WIBU-Systems AG + +usb:v064Fp03E9* + ID_MODEL_FROM_DATABASE=CmStick (article no. 1001) + +usb:v064Fp03F2* + ID_MODEL_FROM_DATABASE=CmStick/M (article no. 1010) + +usb:v064Fp03F3* + ID_MODEL_FROM_DATABASE=CmStick/M (article no. 1011) + +usb:v064Fp0BD7* + ID_MODEL_FROM_DATABASE=BOX/U + +usb:v064Fp0BD8* + ID_MODEL_FROM_DATABASE=BOX/RU + +usb:v0650* + ID_VENDOR_FROM_DATABASE=Dynapro Systems + +usb:v0651* + ID_VENDOR_FROM_DATABASE=Likom Technology Sdn. Bhd. + +usb:v0652* + ID_VENDOR_FROM_DATABASE=Stargate Solutions, Inc. + +usb:v0653* + ID_VENDOR_FROM_DATABASE=CNF, Inc. + +usb:v0654* + ID_VENDOR_FROM_DATABASE=Granite Microsystems, Inc. + +usb:v0654p0005* + ID_MODEL_FROM_DATABASE=Device Bay Controller + +usb:v0654p0006* + ID_MODEL_FROM_DATABASE=Hub + +usb:v0654p0007* + ID_MODEL_FROM_DATABASE=Device Bay Controller + +usb:v0654p0016* + ID_MODEL_FROM_DATABASE=Hub + +usb:v0655* + ID_VENDOR_FROM_DATABASE=Space Shuttle Hi-Tech Co., Ltd + +usb:v0656* + ID_VENDOR_FROM_DATABASE=Glory Mark Electronic, Ltd + +usb:v0657* + ID_VENDOR_FROM_DATABASE=Tekcon Electronics Corp. + +usb:v0658* + ID_VENDOR_FROM_DATABASE=Sigma Designs, Inc. + +usb:v0659* + ID_VENDOR_FROM_DATABASE=Aethra + +usb:v065A* + ID_VENDOR_FROM_DATABASE=Optoelectronics Co., Ltd + +usb:v065Ap0001* + ID_MODEL_FROM_DATABASE=Barcode scanner / NLV-1001 (keyboard mode) + +usb:v065Ap0009* + ID_MODEL_FROM_DATABASE=NLV-1001 (serial mode) / OPN-2001 [Opticon] + +usb:v065B* + ID_VENDOR_FROM_DATABASE=Tracewell Systems + +usb:v065E* + ID_VENDOR_FROM_DATABASE=Silicon Graphics + +usb:v065F* + ID_VENDOR_FROM_DATABASE=Good Way Technology Co., Ltd & GWC technology Inc. + +usb:v0660* + ID_VENDOR_FROM_DATABASE=TSAY-E (BVI) International, Inc. + +usb:v0661* + ID_VENDOR_FROM_DATABASE=Hamamatsu Photonics K.K. + +usb:v0662* + ID_VENDOR_FROM_DATABASE=Kansai Electric Co., Ltd + +usb:v0663* + ID_VENDOR_FROM_DATABASE=Topmax Electronic Co., Ltd + +usb:v0663p0103* + ID_MODEL_FROM_DATABASE=CobraPad + +usb:v0664* + ID_VENDOR_FROM_DATABASE=ET&T Technology Co., Ltd. + +usb:v0664p0301* + ID_MODEL_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen + +usb:v0664p0302* + ID_MODEL_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen + +usb:v0664p0303* + ID_MODEL_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen + +usb:v0664p0304* + ID_MODEL_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen + +usb:v0664p0305* + ID_MODEL_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen + +usb:v0664p0306* + ID_MODEL_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen + +usb:v0664p0307* + ID_MODEL_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen + +usb:v0664p0309* + ID_MODEL_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen + +usb:v0665* + ID_VENDOR_FROM_DATABASE=Cypress Semiconductor + +usb:v0665p5161* + ID_MODEL_FROM_DATABASE=USB to Serial + +usb:v0667* + ID_VENDOR_FROM_DATABASE=Aiwa Co., Ltd + +usb:v0667p0FA1* + ID_MODEL_FROM_DATABASE=TD-U8000 Tape Drive + +usb:v0668* + ID_VENDOR_FROM_DATABASE=WordWand + +usb:v0669* + ID_VENDOR_FROM_DATABASE=Oce' Printing Systems GmbH + +usb:v066A* + ID_VENDOR_FROM_DATABASE=Total Technologies, Ltd + +usb:v066B* + ID_VENDOR_FROM_DATABASE=Linksys, Inc. + +usb:v066Bp0105* + ID_MODEL_FROM_DATABASE=SCM eUSB SmartMedia Card Reader + +usb:v066Bp010A* + ID_MODEL_FROM_DATABASE=Melco MCR-U2 SmartMedia / CompactFlash Reader + +usb:v066Bp200C* + ID_MODEL_FROM_DATABASE=USB10TX + +usb:v066Bp2202* + ID_MODEL_FROM_DATABASE=USB10TX Ethernet [pegasus] + +usb:v066Bp2203* + ID_MODEL_FROM_DATABASE=USB100TX Ethernet [pegasus] + +usb:v066Bp2204* + ID_MODEL_FROM_DATABASE=USB100TX HomePNA Ethernet [pegasus] + +usb:v066Bp2206* + ID_MODEL_FROM_DATABASE=USB Ethernet [pegasus] + +usb:v066Bp2207* + ID_MODEL_FROM_DATABASE=HomeLink Phoneline 10M Network Adapter + +usb:v066Bp2211* + ID_MODEL_FROM_DATABASE=WUSB11 802.11b Adapter + +usb:v066Bp2212* + ID_MODEL_FROM_DATABASE=WUSB11v2.5 802.11b Adapter + +usb:v066Bp2213* + ID_MODEL_FROM_DATABASE=WUSB12v1.1 802.11b Adapter + +usb:v066Bp2219* + ID_MODEL_FROM_DATABASE=Instant Wireless Network Adapter + +usb:v066Bp400B* + ID_MODEL_FROM_DATABASE=USB10TX + +usb:v066D* + ID_VENDOR_FROM_DATABASE=Entrega, Inc. + +usb:v066E* + ID_VENDOR_FROM_DATABASE=Acer Semiconductor America, Inc. + +usb:v066F* + ID_VENDOR_FROM_DATABASE=SigmaTel, Inc. + +usb:v066Fp003B* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp003E* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp003F* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp0040* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp0041* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp0042* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp0043* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp004B* + ID_MODEL_FROM_DATABASE=A-Max PA11 MP3 Player + +usb:v066Fp3400* + ID_MODEL_FROM_DATABASE=STMP3400 D-Major MP3 Player + +usb:v066Fp3410* + ID_MODEL_FROM_DATABASE=STMP3410 D-Major MP3 Player + +usb:v066Fp3500* + ID_MODEL_FROM_DATABASE=Player Recovery Device + +usb:v066Fp3780* + ID_MODEL_FROM_DATABASE=STMP3780/i.MX23 SystemOnChip in RecoveryMode + +usb:v066Fp4200* + ID_MODEL_FROM_DATABASE=STIr4200 IrDA Bridge + +usb:v066Fp4210* + ID_MODEL_FROM_DATABASE=STIr4210 IrDA Bridge + +usb:v066Fp8000* + ID_MODEL_FROM_DATABASE=MSCN MP3 Player + +usb:v066Fp8001* + ID_MODEL_FROM_DATABASE=SigmaTel MSCN Audio Player + +usb:v066Fp8004* + ID_MODEL_FROM_DATABASE=MSCNMMC MP3 Player + +usb:v066Fp8008* + ID_MODEL_FROM_DATABASE=i-Bead 100 MP3 Player + +usb:v066Fp8020* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8034* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8036* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8038* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8056* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8060* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8066* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp807E* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8092* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8096* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp809A* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp80AA* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp80AC* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp80B8* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp80BA* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp80BC* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp80BF* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp80C5* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp80C8* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp80CA* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp80CC* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8104* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8106* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8108* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp810A* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp810C* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8122* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8124* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8126* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8128* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8134* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8136* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8138* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp813A* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp813E* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8140* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8142* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8144* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8146* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8148* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp814C* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8201* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8202* + ID_MODEL_FROM_DATABASE=Jens of Sweden / I-BEAD 150M/150H MP3 player + +usb:v066Fp8203* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8204* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8205* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8206* + ID_MODEL_FROM_DATABASE=Digital MP3 Music Player + +usb:v066Fp8207* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8208* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8209* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp820A* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp820B* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp820C* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp820D* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp820E* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp820F* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8210* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8211* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8212* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8213* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8214* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8215* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8216* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8217* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8218* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8219* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp821A* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp821B* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp821C* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp821D* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp821E* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp821F* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8220* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8221* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8222* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8223* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8224* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8225* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8226* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8227* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8228* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8229* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8230* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp829C* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp82E0* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp8320* + ID_MODEL_FROM_DATABASE=TrekStor i.Beat fun + +usb:v066Fp835D* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp9000* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp9001* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v066Fp9002* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v0670* + ID_VENDOR_FROM_DATABASE=Sequel Imaging + +usb:v0670p0001* + ID_MODEL_FROM_DATABASE=Calibrator + +usb:v0670p0005* + ID_MODEL_FROM_DATABASE=Enable Cable + +usb:v0672* + ID_VENDOR_FROM_DATABASE=Labtec, Inc. + +usb:v0672p1041* + ID_MODEL_FROM_DATABASE=LCS1040 Speaker System + +usb:v0672p5000* + ID_MODEL_FROM_DATABASE=SpaceBall 4000 FLX + +usb:v0673* + ID_VENDOR_FROM_DATABASE=HCL + +usb:v0673p5000* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v0674* + ID_VENDOR_FROM_DATABASE=Key Mouse Electronic Enterprise Co., Ltd + +usb:v0675* + ID_VENDOR_FROM_DATABASE=DrayTek Corp. + +usb:v0675p0110* + ID_MODEL_FROM_DATABASE=Vigor 128 ISDN TA + +usb:v0675p0530* + ID_MODEL_FROM_DATABASE=Vigor530 IEEE 802.11G Adapter (ISL3880+NET2280) + +usb:v0675p0550* + ID_MODEL_FROM_DATABASE=Vigor550 + +usb:v0675p1688* + ID_MODEL_FROM_DATABASE=miniVigor 128 ISDN TA + +usb:v0675p6694* + ID_MODEL_FROM_DATABASE=USB ISDN TA + +usb:v0676* + ID_VENDOR_FROM_DATABASE=Teles AG + +usb:v0677* + ID_VENDOR_FROM_DATABASE=Aiwa Co., Ltd + +usb:v0677p07D5* + ID_MODEL_FROM_DATABASE=TM-ED1285(USB) + +usb:v0677p0FA1* + ID_MODEL_FROM_DATABASE=TD-U8000 Tape Drive + +usb:v0678* + ID_VENDOR_FROM_DATABASE=ACard Technology Corp. + +usb:v067B* + ID_VENDOR_FROM_DATABASE=Prolific Technology, Inc. + +usb:v067Bp0000* + ID_MODEL_FROM_DATABASE=PL2301 USB-USB Bridge + +usb:v067Bp0001* + ID_MODEL_FROM_DATABASE=PL2302 USB-USB Bridge + +usb:v067Bp0307* + ID_MODEL_FROM_DATABASE=Motorola Serial Adapter + +usb:v067Bp04BB* + ID_MODEL_FROM_DATABASE=PL2303 Serial (IODATA USB-RSAQ2) + +usb:v067Bp0600* + ID_MODEL_FROM_DATABASE=IDE Bridge + +usb:v067Bp0610* + ID_MODEL_FROM_DATABASE=Onext EG210U MODEM + +usb:v067Bp0611* + ID_MODEL_FROM_DATABASE=AlDiga AL-11U Quad-band GSM/GPRS/EDGE modem + +usb:v067Bp2303* + ID_MODEL_FROM_DATABASE=PL2303 Serial Port + +usb:v067Bp2305* + ID_MODEL_FROM_DATABASE=PL2305 Parallel Port + +usb:v067Bp2306* + ID_MODEL_FROM_DATABASE=Raylink Bridge Controller + +usb:v067Bp2307* + ID_MODEL_FROM_DATABASE=PL2307 USB-ATAPI4 Bridge + +usb:v067Bp2313* + ID_MODEL_FROM_DATABASE=FITEL PHS U Cable Adaptor + +usb:v067Bp2315* + ID_MODEL_FROM_DATABASE=Flash Disk Embedded Hub + +usb:v067Bp2316* + ID_MODEL_FROM_DATABASE=Flash Disk Security Device + +usb:v067Bp2317* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v067Bp2501* + ID_MODEL_FROM_DATABASE=PL2501 USB-USB Bridge (USB 2.0) + +usb:v067Bp2506* + ID_MODEL_FROM_DATABASE=Kaser 8gB micro hard drive + +usb:v067Bp2507* + ID_MODEL_FROM_DATABASE=PL2507 Hi-speed USB to IDE bridge controller + +usb:v067Bp2515* + ID_MODEL_FROM_DATABASE=Flash Disk Embedded Hub + +usb:v067Bp2517* + ID_MODEL_FROM_DATABASE=Flash Disk Mass Storage Device + +usb:v067Bp2528* + ID_MODEL_FROM_DATABASE=Storage device (8gB thumb drive) + +usb:v067Bp25A1* + ID_MODEL_FROM_DATABASE=PL25A1 Host-Host Bridge + +usb:v067Bp3400* + ID_MODEL_FROM_DATABASE=Hi-Speed Flash Disk with TruePrint AES3400 + +usb:v067Bp3500* + ID_MODEL_FROM_DATABASE=Hi-Speed Flash Disk with TruePrint AES3500 + +usb:v067Bp3507* + ID_MODEL_FROM_DATABASE=PL3507 ATAPI6 Bridge + +usb:v067BpAAA0* + ID_MODEL_FROM_DATABASE=Prolific Pharos + +usb:v067BpAAA2* + ID_MODEL_FROM_DATABASE=PL2303 Serial Adapter (IODATA USB-RSAQ3) + +usb:v067C* + ID_VENDOR_FROM_DATABASE=Efficient Networks, Inc. + +usb:v067Cp1001* + ID_MODEL_FROM_DATABASE=Siemens SpeedStream 100MBps Ethernet + +usb:v067Cp1022* + ID_MODEL_FROM_DATABASE=Siemens SpeedStream 1022 802.11b Adapter + +usb:v067Cp1023* + ID_MODEL_FROM_DATABASE=SpeedStream Wireless + +usb:v067Cp4020* + ID_MODEL_FROM_DATABASE=SpeedStream 4020 ATM/ADSL Installer + +usb:v067Cp4031* + ID_MODEL_FROM_DATABASE=Efficient ADSL Modem + +usb:v067Cp4032* + ID_MODEL_FROM_DATABASE=SpeedStream 4031 ATM/ADSL Installer + +usb:v067Cp4033* + ID_MODEL_FROM_DATABASE=SpeedStream 4031 ATM/ADSL Installer + +usb:v067Cp4060* + ID_MODEL_FROM_DATABASE=Alcatel Speedstream 4060 ADSL Modem + +usb:v067Cp4062* + ID_MODEL_FROM_DATABASE=Efficient Networks 4060 Loader + +usb:v067Cp5667* + ID_MODEL_FROM_DATABASE=Efficient Networks Virtual Bus for ADSL Modem + +usb:v067CpC031* + ID_MODEL_FROM_DATABASE=SpeedStream 4031 ATM/ADSL Installer + +usb:v067CpC032* + ID_MODEL_FROM_DATABASE=SpeedStream 4031 ATM/ADSL Installer + +usb:v067CpC033* + ID_MODEL_FROM_DATABASE=SpeedStream 4031 ATM/ADSL Installer + +usb:v067CpC060* + ID_MODEL_FROM_DATABASE=SpeedStream 4060 Miniport ATM/ADSL Adapter + +usb:v067CpD667* + ID_MODEL_FROM_DATABASE=Efficient Networks Virtual Bus for ADSL Modem + +usb:v067CpE240* + ID_MODEL_FROM_DATABASE=Speedstream Ethernet Adapter E240 + +usb:v067CpE540* + ID_MODEL_FROM_DATABASE=Speedstream Ethernet Adapter E240 + +usb:v067D* + ID_VENDOR_FROM_DATABASE=Hohner Corp. + +usb:v067E* + ID_VENDOR_FROM_DATABASE=Intermec Technologies Corp. + +usb:v067Ep0801* + ID_MODEL_FROM_DATABASE=HID Keyboard, Barcode scanner + +usb:v067Ep0803* + ID_MODEL_FROM_DATABASE=VCP, Barcode scanner + +usb:v067Ep0805* + ID_MODEL_FROM_DATABASE=VCP + UVC, Barcode scanner + +usb:v067Ep1001* + ID_MODEL_FROM_DATABASE=Mobile Computer + +usb:v067F* + ID_VENDOR_FROM_DATABASE=Virata, Ltd + +usb:v067Fp4552* + ID_MODEL_FROM_DATABASE=DSL-200 ADSL Modem + +usb:v067Fp6542* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v067Fp6549* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v067Fp7541* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v0680* + ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Corp., CPP Div. (Avance Logic) + +usb:v0680p0002* + ID_MODEL_FROM_DATABASE=Arowana Optical Wheel Mouse MSOP-01 + +usb:v0681* + ID_VENDOR_FROM_DATABASE=Siemens Information and Communication Products + +usb:v0681p0001* + ID_MODEL_FROM_DATABASE=Dect Base + +usb:v0681p0002* + ID_MODEL_FROM_DATABASE=Gigaset 3075 Passive ISDN + +usb:v0681p0005* + ID_MODEL_FROM_DATABASE=ID-Mouse with Fingerprint Reader + +usb:v0681p0012* + ID_MODEL_FROM_DATABASE=I-Gate 802.11b Adapter + +usb:v0681p001B* + ID_MODEL_FROM_DATABASE=WLL013 + +usb:v0681p001D* + ID_MODEL_FROM_DATABASE=Hipath 1000 + +usb:v0681p0022* + ID_MODEL_FROM_DATABASE=Gigaset SX353 ISDN + +usb:v0681p0026* + ID_MODEL_FROM_DATABASE=DECT Data - Gigaset M34 + +usb:v0681p002B* + ID_MODEL_FROM_DATABASE=A-100-I ADSL Modem + +usb:v0681p002E* + ID_MODEL_FROM_DATABASE=ADSL Router_S-141 + +usb:v0681p0034* + ID_MODEL_FROM_DATABASE=GSM module MC35/ES75 USB Modem + +usb:v0681p3C06* + ID_MODEL_FROM_DATABASE=54g USB Network Adapter + +usb:v0682* + ID_VENDOR_FROM_DATABASE=Victor Company of Japan, Ltd + +usb:v0684* + ID_VENDOR_FROM_DATABASE=Actiontec Electronics, Inc. + +usb:v0685* + ID_VENDOR_FROM_DATABASE=ZD Incorporated + +usb:v0685p7000* + ID_MODEL_FROM_DATABASE=HSDPA Modem + +usb:v0686* + ID_VENDOR_FROM_DATABASE=Minolta Co., Ltd + +usb:v0686p2001* + ID_MODEL_FROM_DATABASE=PagePro 4110W + +usb:v0686p2004* + ID_MODEL_FROM_DATABASE=PagePro 1200W + +usb:v0686p2005* + ID_MODEL_FROM_DATABASE=Magicolor 2300 DL + +usb:v0686p3001* + ID_MODEL_FROM_DATABASE=PagePro 4100 + +usb:v0686p3005* + ID_MODEL_FROM_DATABASE=PagePro 1250E + +usb:v0686p3006* + ID_MODEL_FROM_DATABASE=PagePro 1250W + +usb:v0686p3009* + ID_MODEL_FROM_DATABASE=Magicolor 2300W + +usb:v0686p300B* + ID_MODEL_FROM_DATABASE=PagePro 1350W + +usb:v0686p300C* + ID_MODEL_FROM_DATABASE=PagePro 1300W + +usb:v0686p302E* + ID_MODEL_FROM_DATABASE=Develop D 1650iD PCL + +usb:v0686p3034* + ID_MODEL_FROM_DATABASE=Develop D 2050iD PCL + +usb:v0686p4001* + ID_MODEL_FROM_DATABASE=Dimage 2300 + +usb:v0686p4003* + ID_MODEL_FROM_DATABASE=Dimage 2330 Zoom Camera + +usb:v0686p4004* + ID_MODEL_FROM_DATABASE=Dimage Scan Elite II AF-2920 (2888) + +usb:v0686p4005* + ID_MODEL_FROM_DATABASE=Minolta DiMAGE E201 Mass Storage Device + +usb:v0686p4006* + ID_MODEL_FROM_DATABASE=Dimage 7 Camera + +usb:v0686p4007* + ID_MODEL_FROM_DATABASE=Dimage S304 Camera + +usb:v0686p4008* + ID_MODEL_FROM_DATABASE=Dimage 5 Camera + +usb:v0686p4009* + ID_MODEL_FROM_DATABASE=Dimage X Camera + +usb:v0686p400A* + ID_MODEL_FROM_DATABASE=Dimage S404 Camera + +usb:v0686p400B* + ID_MODEL_FROM_DATABASE=Dimage 7i Camera + +usb:v0686p400C* + ID_MODEL_FROM_DATABASE=Dimage F100 Camera + +usb:v0686p400D* + ID_MODEL_FROM_DATABASE=Dimage Scan Dual III AF-2840 (2889) + +usb:v0686p400E* + ID_MODEL_FROM_DATABASE=Dimage Scan Elite 5400 (2890) + +usb:v0686p400F* + ID_MODEL_FROM_DATABASE=Dimage 7Hi Camera + +usb:v0686p4010* + ID_MODEL_FROM_DATABASE=Dimage Xi Camera + +usb:v0686p4011* + ID_MODEL_FROM_DATABASE=Dimage F300 Camera + +usb:v0686p4012* + ID_MODEL_FROM_DATABASE=Dimage F200 Camera + +usb:v0686p4014* + ID_MODEL_FROM_DATABASE=Dimage S414 Camera + +usb:v0686p4015* + ID_MODEL_FROM_DATABASE=Dimage XT Camera [storage] + +usb:v0686p4016* + ID_MODEL_FROM_DATABASE=Dimage XT Camera [remote mode] + +usb:v0686p4017* + ID_MODEL_FROM_DATABASE=Dimage E223 + +usb:v0686p4018* + ID_MODEL_FROM_DATABASE=Dimage Z1 Camera + +usb:v0686p4019* + ID_MODEL_FROM_DATABASE=Dimage A1 Camera [remote mode] + +usb:v0686p401A* + ID_MODEL_FROM_DATABASE=Dimage A1 Camera [storage] + +usb:v0686p401C* + ID_MODEL_FROM_DATABASE=Dimage X20 Camera + +usb:v0686p401E* + ID_MODEL_FROM_DATABASE=Dimage E323 Camera + +usb:v068A* + ID_VENDOR_FROM_DATABASE=Pertech, Inc. + +usb:v068B* + ID_VENDOR_FROM_DATABASE=Potrans International, Inc. + +usb:v068E* + ID_VENDOR_FROM_DATABASE=CH Products, Inc. + +usb:v068Ep00D3* + ID_MODEL_FROM_DATABASE=OEM 3 axis 5 button joystick + +usb:v068Ep00E2* + ID_MODEL_FROM_DATABASE=HFX OEM Joystick + +usb:v068Ep00F1* + ID_MODEL_FROM_DATABASE=Pro Throttle + +usb:v068Ep00F2* + ID_MODEL_FROM_DATABASE=Flight Sim Pedals + +usb:v068Ep00F3* + ID_MODEL_FROM_DATABASE=Fighterstick + +usb:v068Ep00F4* + ID_MODEL_FROM_DATABASE=Combatstick + +usb:v068Ep00FA* + ID_MODEL_FROM_DATABASE=Flight Sim Pedals + +usb:v068Ep00FF* + ID_MODEL_FROM_DATABASE=Flight Sim Yoke + +usb:v068Ep0500* + ID_MODEL_FROM_DATABASE=GameStick 3D + +usb:v068Ep0501* + ID_MODEL_FROM_DATABASE=CH Pro Pedals + +usb:v068Ep0504* + ID_MODEL_FROM_DATABASE=F-16 Combat Stick + +usb:v0690* + ID_VENDOR_FROM_DATABASE=Golden Bridge Electech, Inc. + +usb:v0693* + ID_VENDOR_FROM_DATABASE=Hagiwara Sys-Com Co., Ltd + +usb:v0693p0002* + ID_MODEL_FROM_DATABASE=FlashGate SmartMedia Card Reader + +usb:v0693p0003* + ID_MODEL_FROM_DATABASE=FlashGate CompactFlash Card Reader + +usb:v0693p0005* + ID_MODEL_FROM_DATABASE=FlashGate + +usb:v0693p0006* + ID_MODEL_FROM_DATABASE=SM PCCard R/W and SPD + +usb:v0693p0007* + ID_MODEL_FROM_DATABASE=FlashGate ME (Authenticated) + +usb:v0693p000A* + ID_MODEL_FROM_DATABASE=SDCard/MMC Reader/Writer + +usb:v0694* + ID_VENDOR_FROM_DATABASE=Lego Group + +usb:v0694p0001* + ID_MODEL_FROM_DATABASE=Mindstorms Tower + +usb:v0694p0002* + ID_MODEL_FROM_DATABASE=Mindstorms NXT + +usb:v0698* + ID_VENDOR_FROM_DATABASE=Chuntex (CTX) + +usb:v0698p1786* + ID_MODEL_FROM_DATABASE=1300ex Monitor + +usb:v0698p2003* + ID_MODEL_FROM_DATABASE=CTX M730V built in Camera + +usb:v0698p9999* + ID_MODEL_FROM_DATABASE=VLxxxx Monitor+Hub + +usb:v0699* + ID_VENDOR_FROM_DATABASE=Tektronix, Inc. + +usb:v069A* + ID_VENDOR_FROM_DATABASE=Askey Computer Corp. + +usb:v069Ap0001* + ID_MODEL_FROM_DATABASE=VC010 Webcam [pwc] + +usb:v069Ap0303* + ID_MODEL_FROM_DATABASE=Cable Modem + +usb:v069Ap0311* + ID_MODEL_FROM_DATABASE=ADSL Router Remote NDIS Device + +usb:v069Ap0318* + ID_MODEL_FROM_DATABASE=Remote NDIS Device + +usb:v069Ap0319* + ID_MODEL_FROM_DATABASE=220V Remote NDIS Device + +usb:v069Ap0320* + ID_MODEL_FROM_DATABASE=IEEE 802.11b Wireless LAN Card + +usb:v069Ap0321* + ID_MODEL_FROM_DATABASE=Dynalink WLL013 / Compex WLU11A 802.11b Adapter + +usb:v069Ap0402* + ID_MODEL_FROM_DATABASE=Scientific Atlanta WebSTAR 100 & 200 series Cable Modem + +usb:v069Ap0811* + ID_MODEL_FROM_DATABASE=BT Virtual Bus for Helium + +usb:v069Ap0821* + ID_MODEL_FROM_DATABASE=BT Voyager 1010 802.11b Adapter + +usb:v069Ap4402* + ID_MODEL_FROM_DATABASE=Scientific Atlanta WebSTAR 2000 series Cable Modem + +usb:v069Ap4403* + ID_MODEL_FROM_DATABASE=Scientific Atlanta WebSTAR 300 series Cable Modem + +usb:v069Ap4501* + ID_MODEL_FROM_DATABASE=Scientific-Atlanta WebSTAR 2000 series Cable Modem + +usb:v069B* + ID_VENDOR_FROM_DATABASE=Thomson, Inc. + +usb:v069Bp0704* + ID_MODEL_FROM_DATABASE=DCM245 Cable Modem + +usb:v069Bp0705* + ID_MODEL_FROM_DATABASE=THG540K Cable Modem + +usb:v069Bp0709* + ID_MODEL_FROM_DATABASE=Lyra PDP2424 + +usb:v069Bp070C* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v069Bp070D* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v069Bp070E* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v069Bp070F* + ID_MODEL_FROM_DATABASE=RCA Lyra RD1071 MP3 Player + +usb:v069Bp0731* + ID_MODEL_FROM_DATABASE=Lyra M200E256 + +usb:v069Bp0761* + ID_MODEL_FROM_DATABASE=RCA H100A + +usb:v069Bp0778* + ID_MODEL_FROM_DATABASE=PEARL USB Device + +usb:v069Bp2220* + ID_MODEL_FROM_DATABASE=RCA Kazoo RD1000 MP3 Player + +usb:v069Bp300A* + ID_MODEL_FROM_DATABASE=RCA Lyra MP3 Player + +usb:v069Bp3012* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v069Bp3013* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v069Bp5557* + ID_MODEL_FROM_DATABASE=RCA CDS6300 + +usb:v069D* + ID_VENDOR_FROM_DATABASE=Hughes Network Systems (HNS) + +usb:v069Dp0001* + ID_MODEL_FROM_DATABASE=Satellite Receiver Device + +usb:v069Dp0002* + ID_MODEL_FROM_DATABASE=Satellite Device + +usb:v069E* + ID_VENDOR_FROM_DATABASE=Welcat Inc. + +usb:v069Ep0005* + ID_MODEL_FROM_DATABASE=Marx CryptoBox v1.2 + +usb:v069F* + ID_VENDOR_FROM_DATABASE=Allied Data Technologies BV + +usb:v069Fp0010* + ID_MODEL_FROM_DATABASE=Tornado Speakerphone FaxModem 56.0 + +usb:v069Fp0011* + ID_MODEL_FROM_DATABASE=Tornado Speakerphone FaxModem 56.0 + +usb:v069Fp1000* + ID_MODEL_FROM_DATABASE=ADT VvBus for CopperJet + +usb:v069Fp1004* + ID_MODEL_FROM_DATABASE=CopperJet 821 RouterPlus + +usb:v06A2* + ID_VENDOR_FROM_DATABASE=Topro Technology, Inc. + +usb:v06A2p0033* + ID_MODEL_FROM_DATABASE=USB Mouse + +usb:v06A3* + ID_VENDOR_FROM_DATABASE=Saitek PLC + +usb:v06A3p0006* + ID_MODEL_FROM_DATABASE=Cyborg Gold Joystick + +usb:v06A3p0109* + ID_MODEL_FROM_DATABASE=P880 Pad + +usb:v06A3p0160* + ID_MODEL_FROM_DATABASE=ST290 Pro + +usb:v06A3p0200* + ID_MODEL_FROM_DATABASE=Xbox Adrenalin Hub + +usb:v06A3p0241* + ID_MODEL_FROM_DATABASE=Xbox Adrenalin Gamepad + +usb:v06A3p0255* + ID_MODEL_FROM_DATABASE=X52 Flight Controller + +usb:v06A3p040B* + ID_MODEL_FROM_DATABASE=P990 Dual Analog Pad + +usb:v06A3p040C* + ID_MODEL_FROM_DATABASE=P2900 Wireless Pad + +usb:v06A3p0422* + ID_MODEL_FROM_DATABASE=ST90 Joystick + +usb:v06A3p0460* + ID_MODEL_FROM_DATABASE=ST290 Pro Flight Stick + +usb:v06A3p0463* + ID_MODEL_FROM_DATABASE=ST290 + +usb:v06A3p0464* + ID_MODEL_FROM_DATABASE=Cyborg Evo + +usb:v06A3p0471* + ID_MODEL_FROM_DATABASE=Cyborg Graphite Stick + +usb:v06A3p0501* + ID_MODEL_FROM_DATABASE=R100 Sports Wheel + +usb:v06A3p0502* + ID_MODEL_FROM_DATABASE=ST200 Stick + +usb:v06A3p0506* + ID_MODEL_FROM_DATABASE=R220 Digital Wheel + +usb:v06A3p051E* + ID_MODEL_FROM_DATABASE=Cyborg Digital II Stick + +usb:v06A3p052D* + ID_MODEL_FROM_DATABASE=P750 Gamepad + +usb:v06A3p053C* + ID_MODEL_FROM_DATABASE=X45 Flight Controller + +usb:v06A3p053F* + ID_MODEL_FROM_DATABASE=X36F Flightstick + +usb:v06A3p056C* + ID_MODEL_FROM_DATABASE=P2000 Tilt Pad + +usb:v06A3p056F* + ID_MODEL_FROM_DATABASE=P2000 Tilt Pad + +usb:v06A3p05D2* + ID_MODEL_FROM_DATABASE=PC Dash 2 + +usb:v06A3p075C* + ID_MODEL_FROM_DATABASE=X52 Flight Controller + +usb:v06A3p0762* + ID_MODEL_FROM_DATABASE=Saitek X52 Pro Flight Control System + +usb:v06A3p0763* + ID_MODEL_FROM_DATABASE=Pro Flight Rudder Pedals + +usb:v06A3p0764* + ID_MODEL_FROM_DATABASE=Flight Pro Combat Rudder + +usb:v06A3p0805* + ID_MODEL_FROM_DATABASE=R440 Force Wheel + +usb:v06A3p0B4E* + ID_MODEL_FROM_DATABASE=Pro Flight Backlit Information Panel + +usb:v06A3p0BAC* + ID_MODEL_FROM_DATABASE=Pro Flight Yoke + +usb:v06A3p0C2D* + ID_MODEL_FROM_DATABASE=Pro Flight Quadrant + +usb:v06A3p0D05* + ID_MODEL_FROM_DATABASE=Pro Flight Radio Panel + +usb:v06A3p0D06* + ID_MODEL_FROM_DATABASE=Flight Pro Multi Panel + +usb:v06A3p0D67* + ID_MODEL_FROM_DATABASE=Pro Flight Switch Panel + +usb:v06A3p1003* + ID_MODEL_FROM_DATABASE=GM2 Action Pad + +usb:v06A3p1009* + ID_MODEL_FROM_DATABASE=Action Pad + +usb:v06A3p100A* + ID_MODEL_FROM_DATABASE=SP550 Pad and Joystick Combo + +usb:v06A3p100B* + ID_MODEL_FROM_DATABASE=SP550 Pad + +usb:v06A3p1509* + ID_MODEL_FROM_DATABASE=P3000 Wireless Pad + +usb:v06A3p1589* + ID_MODEL_FROM_DATABASE=P3000 Wireless Pad + +usb:v06A3p2541* + ID_MODEL_FROM_DATABASE=X45 Flight Controller + +usb:v06A3p3509* + ID_MODEL_FROM_DATABASE=P3000 RF GamePad + +usb:v06A3p353E* + ID_MODEL_FROM_DATABASE=Cyborg Evo Wireless + +usb:v06A3p3589* + ID_MODEL_FROM_DATABASE=P3000 Wireless Pad + +usb:v06A3p35BE* + ID_MODEL_FROM_DATABASE=Cyborg Evo + +usb:v06A3p5509* + ID_MODEL_FROM_DATABASE=P3000 Wireless Pad + +usb:v06A3p712C* + ID_MODEL_FROM_DATABASE=Pro Flight Yoke integrated hub + +usb:v06A3p8000* + ID_MODEL_FROM_DATABASE=Gamers' Keyboard + +usb:v06A3p801E* + ID_MODEL_FROM_DATABASE=Cyborg 3D Digital Stick II + +usb:v06A3p8020* + ID_MODEL_FROM_DATABASE=Eclipse Keyboard + +usb:v06A3p8021* + ID_MODEL_FROM_DATABASE=Eclipse II Keyboard + +usb:v06A3p802D* + ID_MODEL_FROM_DATABASE=P750 Pad + +usb:v06A3p803F* + ID_MODEL_FROM_DATABASE=X36 Flight Controller + +usb:v06A3p806F* + ID_MODEL_FROM_DATABASE=P2000 Tilt Pad + +usb:v06A3p80C0* + ID_MODEL_FROM_DATABASE=Pro Gamer Command Unit + +usb:v06A3p80C1* + ID_MODEL_FROM_DATABASE=Cyborg Command Pad Unit + +usb:v06A3pA2AE* + ID_MODEL_FROM_DATABASE=Pro Flight Instrument Panel + +usb:v06A3pA502* + ID_MODEL_FROM_DATABASE=Gaming Mouse + +usb:v06A3pF518* + ID_MODEL_FROM_DATABASE=P3200 Rumble Force Game Pad + +usb:v06A3pFF04* + ID_MODEL_FROM_DATABASE=R440 Force Wheel + +usb:v06A3pFF0C* + ID_MODEL_FROM_DATABASE=Cyborg Force Rumble Pad + +usb:v06A3pFF0D* + ID_MODEL_FROM_DATABASE=P2600 Rumble Force Pad + +usb:v06A3pFF12* + ID_MODEL_FROM_DATABASE=Cyborg 3D Force Stick + +usb:v06A3pFF17* + ID_MODEL_FROM_DATABASE=ST 330 Rumble Force Stick + +usb:v06A3pFF52* + ID_MODEL_FROM_DATABASE=Cyborg 3D Rumble Force Joystick + +usb:v06A3pFFB5* + ID_MODEL_FROM_DATABASE=Cyborg Evo Force Joystick + +usb:v06A4* + ID_VENDOR_FROM_DATABASE=Xiamen Doowell Electron Co., Ltd + +usb:v06A5* + ID_VENDOR_FROM_DATABASE=Divio + +usb:v06A5p0000* + ID_MODEL_FROM_DATABASE=Typhoon Webcam 100k [nw8000] + +usb:v06A5pD001* + ID_MODEL_FROM_DATABASE=ProLink DS3303u Webcam + +usb:v06A5pD800* + ID_MODEL_FROM_DATABASE=Chicony TwinkleCam + +usb:v06A5pD820* + ID_MODEL_FROM_DATABASE=Wize Media 1000 + +usb:v06A7* + ID_VENDOR_FROM_DATABASE=MicroStore, Inc. + +usb:v06A8* + ID_VENDOR_FROM_DATABASE=Topaz Systems, Inc. + +usb:v06A8p0042* + ID_MODEL_FROM_DATABASE=SignatureGem 1X5 Pad + +usb:v06A8p0043* + ID_MODEL_FROM_DATABASE=SignatureGem 1X5-HID Pad + +usb:v06A9* + ID_VENDOR_FROM_DATABASE=Westell + +usb:v06A9p0005* + ID_MODEL_FROM_DATABASE=WireSpeed Dual Connect Modem + +usb:v06A9p0006* + ID_MODEL_FROM_DATABASE=WireSpeed Dual Connect Modem + +usb:v06A9p000A* + ID_MODEL_FROM_DATABASE=WireSpeed Dual Connect Modem + +usb:v06A9p000B* + ID_MODEL_FROM_DATABASE=WireSpeed Dual Connect Modem + +usb:v06A9p000E* + ID_MODEL_FROM_DATABASE=A90-211WG-01 802.11g Adapter [Intersil ISL3887] + +usb:v06AA* + ID_VENDOR_FROM_DATABASE=Sysgration, Ltd + +usb:v06AC* + ID_VENDOR_FROM_DATABASE=Fujitsu Laboratories of America, Inc. + +usb:v06AD* + ID_VENDOR_FROM_DATABASE=Greatland Electronics Taiwan, Ltd + +usb:v06AE* + ID_VENDOR_FROM_DATABASE=Professional Multimedia Testing Centre + +usb:v06AF* + ID_VENDOR_FROM_DATABASE=Harting, Inc. of North America + +usb:v06B8* + ID_VENDOR_FROM_DATABASE=Pixela Corp. + +usb:v06B9* + ID_VENDOR_FROM_DATABASE=Alcatel Telecom + +usb:v06B9p0120* + ID_MODEL_FROM_DATABASE=SpeedTouch 120g 802.11g Wireless Adapter [Intersil ISL3886] + +usb:v06B9p0121* + ID_MODEL_FROM_DATABASE=SpeedTouch 121g Wireless Dongle + +usb:v06B9p2001* + ID_MODEL_FROM_DATABASE=SPEED TOUCH Card + +usb:v06B9p4061* + ID_MODEL_FROM_DATABASE=SpeedTouch ISDN or ADSL Modem + +usb:v06B9p4062* + ID_MODEL_FROM_DATABASE=SpeedTouch ISDN or ADSL router + +usb:v06B9pA5A5* + ID_MODEL_FROM_DATABASE=DynaMiTe Modem + +usb:v06BA* + ID_VENDOR_FROM_DATABASE=Smooth Cord & Connector Co., Ltd + +usb:v06BB* + ID_VENDOR_FROM_DATABASE=EDA, Inc. + +usb:v06BC* + ID_VENDOR_FROM_DATABASE=Oki Data Corp. + +usb:v06BCp000B* + ID_MODEL_FROM_DATABASE=Okipage 14ex Printer + +usb:v06BCp0027* + ID_MODEL_FROM_DATABASE=Okipage 14e + +usb:v06BCp0A91* + ID_MODEL_FROM_DATABASE=B2500MFP (printer+scanner) + +usb:v06BCp3801* + ID_MODEL_FROM_DATABASE=B6100 Laser Printer + +usb:v06BD* + ID_VENDOR_FROM_DATABASE=AGFA-Gevaert NV + +usb:v06BDp0001* + ID_MODEL_FROM_DATABASE=SnapScan 1212U + +usb:v06BDp0002* + ID_MODEL_FROM_DATABASE=SnapScan 1236U + +usb:v06BDp0100* + ID_MODEL_FROM_DATABASE=SnapScan Touch + +usb:v06BDp0101* + ID_MODEL_FROM_DATABASE=SNAPSCAN ELITE + +usb:v06BDp0200* + ID_MODEL_FROM_DATABASE=ScanMaker 8700 + +usb:v06BDp02BF* + ID_MODEL_FROM_DATABASE=DUOSCAN f40 + +usb:v06BDp0400* + ID_MODEL_FROM_DATABASE=CL30 + +usb:v06BDp0401* + ID_MODEL_FROM_DATABASE=Mass Storage + +usb:v06BDp0403* + ID_MODEL_FROM_DATABASE=ePhoto CL18 Camera + +usb:v06BDp0404* + ID_MODEL_FROM_DATABASE=ePhoto CL20 Camera + +usb:v06BDp2061* + ID_MODEL_FROM_DATABASE=SnapScan 1212U (?) + +usb:v06BDp208D* + ID_MODEL_FROM_DATABASE=Snapscan e40 + +usb:v06BDp208F* + ID_MODEL_FROM_DATABASE=SnapScan e50 + +usb:v06BDp2091* + ID_MODEL_FROM_DATABASE=SnapScan e20 + +usb:v06BDp2093* + ID_MODEL_FROM_DATABASE=SnapScan e10 + +usb:v06BDp2095* + ID_MODEL_FROM_DATABASE=SnapScan e25 + +usb:v06BDp2097* + ID_MODEL_FROM_DATABASE=SnapScan e26 + +usb:v06BDp20FD* + ID_MODEL_FROM_DATABASE=SnapScan e52 + +usb:v06BDp20FF* + ID_MODEL_FROM_DATABASE=SnapScan e42 + +usb:v06BE* + ID_VENDOR_FROM_DATABASE=AME Optimedia Technology Co., Ltd + +usb:v06BEp0800* + ID_MODEL_FROM_DATABASE=Optimedia Camera + +usb:v06BEp1005* + ID_MODEL_FROM_DATABASE=Dazzle DPVM! (1005) + +usb:v06BEpD001* + ID_MODEL_FROM_DATABASE=P35U Camera Capture + +usb:v06BF* + ID_VENDOR_FROM_DATABASE=Leoco Corp. + +usb:v06C2* + ID_VENDOR_FROM_DATABASE=Phidgets Inc. (formerly GLAB) + +usb:v06C2p0030* + ID_MODEL_FROM_DATABASE=PhidgetRFID + +usb:v06C2p0038* + ID_MODEL_FROM_DATABASE=4-Motor PhidgetServo v3.0 + +usb:v06C2p0039* + ID_MODEL_FROM_DATABASE=1-Motor PhidgetServo v3.0 + +usb:v06C2p003A* + ID_MODEL_FROM_DATABASE=8-Motor PhidgetAvancedServo + +usb:v06C2p0040* + ID_MODEL_FROM_DATABASE=PhidgetInterface Kit 0-0-4 + +usb:v06C2p0044* + ID_MODEL_FROM_DATABASE=PhidgetInterface Kit 0-16-16 + +usb:v06C2p0045* + ID_MODEL_FROM_DATABASE=PhidgetInterface Kit 8-8-8 + +usb:v06C2p0048* + ID_MODEL_FROM_DATABASE=PhidgetStepper (Under Development) + +usb:v06C2p0049* + ID_MODEL_FROM_DATABASE=PhidgetTextLED Ver 1.0 + +usb:v06C2p004A* + ID_MODEL_FROM_DATABASE=PhidgetLED Ver 1.0 + +usb:v06C2p004B* + ID_MODEL_FROM_DATABASE=PhidgetEncoder Ver 1.0 + +usb:v06C2p0051* + ID_MODEL_FROM_DATABASE=PhidgetInterface Kit 0-5-7 (Custom) + +usb:v06C2p0052* + ID_MODEL_FROM_DATABASE=PhidgetTextLCD + +usb:v06C2p0053* + ID_MODEL_FROM_DATABASE=PhidgetInterfaceKit 0-8-8 + +usb:v06C2p0058* + ID_MODEL_FROM_DATABASE=PhidgetMotorControl Ver 1.0 + +usb:v06C2p0070* + ID_MODEL_FROM_DATABASE=PhidgetTemperatureSensor Ver 1.0 + +usb:v06C2p0071* + ID_MODEL_FROM_DATABASE=PhidgetAccelerometer Ver 1.0 + +usb:v06C2p0072* + ID_MODEL_FROM_DATABASE=PhidgetWeightSensor Ver 1.0 + +usb:v06C2p0073* + ID_MODEL_FROM_DATABASE=PhidgetHumiditySensor + +usb:v06C2p0074* + ID_MODEL_FROM_DATABASE=PhidgetPHSensor + +usb:v06C2p0075* + ID_MODEL_FROM_DATABASE=PhidgetGyroscope + +usb:v06C4* + ID_VENDOR_FROM_DATABASE=Bizlink International Corp. + +usb:v06C5* + ID_VENDOR_FROM_DATABASE=Hagenuk, GmbH + +usb:v06C6* + ID_VENDOR_FROM_DATABASE=Infowave Software, Inc. + +usb:v06C8* + ID_VENDOR_FROM_DATABASE=SIIG, Inc. + +usb:v06C9* + ID_VENDOR_FROM_DATABASE=Taxan (Europe), Ltd + +usb:v06C9p0005* + ID_MODEL_FROM_DATABASE=Monitor Control + +usb:v06C9p0007* + ID_MODEL_FROM_DATABASE=Monitor Control + +usb:v06C9p0009* + ID_MODEL_FROM_DATABASE=Monitor Control + +usb:v06CA* + ID_VENDOR_FROM_DATABASE=Newer Technology, Inc. + +usb:v06CB* + ID_VENDOR_FROM_DATABASE=Synaptics, Inc. + +usb:v06CBp0001* + ID_MODEL_FROM_DATABASE=TouchPad + +usb:v06CBp0002* + ID_MODEL_FROM_DATABASE=Integrated TouchPad + +usb:v06CBp0003* + ID_MODEL_FROM_DATABASE=cPad + +usb:v06CBp0005* + ID_MODEL_FROM_DATABASE=Touchpad/FPS + +usb:v06CBp0006* + ID_MODEL_FROM_DATABASE=TouchScreen + +usb:v06CBp0007* + ID_MODEL_FROM_DATABASE=USB Styk + +usb:v06CBp0008* + ID_MODEL_FROM_DATABASE=WheelPad + +usb:v06CBp0009* + ID_MODEL_FROM_DATABASE=Composite TouchPad and TrackPoint + +usb:v06CBp000E* + ID_MODEL_FROM_DATABASE=HID Device + +usb:v06CBp0010* + ID_MODEL_FROM_DATABASE=Wireless TouchPad + +usb:v06CBp0013* + ID_MODEL_FROM_DATABASE=DisplayPad + +usb:v06CC* + ID_VENDOR_FROM_DATABASE=Terayon Communication Systems + +usb:v06CCp0101* + ID_MODEL_FROM_DATABASE=Cable Modem + +usb:v06CCp0102* + ID_MODEL_FROM_DATABASE=Cable Modem + +usb:v06CCp0103* + ID_MODEL_FROM_DATABASE=Cable Modem + +usb:v06CCp0104* + ID_MODEL_FROM_DATABASE=Cable Modem + +usb:v06CCp0304* + ID_MODEL_FROM_DATABASE=Cable Modem + +usb:v06CD* + ID_VENDOR_FROM_DATABASE=Keyspan + +usb:v06CDp0101* + ID_MODEL_FROM_DATABASE=USA-28 PDA [no firmware] + +usb:v06CDp0102* + ID_MODEL_FROM_DATABASE=USA-28X PDA [no firmware] + +usb:v06CDp0103* + ID_MODEL_FROM_DATABASE=USA-19 PDA [no firmware] + +usb:v06CDp0104* + ID_MODEL_FROM_DATABASE=PDA [prerenum] + +usb:v06CDp0105* + ID_MODEL_FROM_DATABASE=USA-18X PDA [no firmware] + +usb:v06CDp0106* + ID_MODEL_FROM_DATABASE=USA-19W PDA [no firmware] + +usb:v06CDp0107* + ID_MODEL_FROM_DATABASE=USA-19 PDA + +usb:v06CDp0108* + ID_MODEL_FROM_DATABASE=USA-19W PDA + +usb:v06CDp0109* + ID_MODEL_FROM_DATABASE=USA-49W serial adapter [no firmware] + +usb:v06CDp010A* + ID_MODEL_FROM_DATABASE=USA-49W serial adapter + +usb:v06CDp010B* + ID_MODEL_FROM_DATABASE=USA-19Qi serial adapter [no firmware] + +usb:v06CDp010C* + ID_MODEL_FROM_DATABASE=USA-19Qi serial adapter + +usb:v06CDp010D* + ID_MODEL_FROM_DATABASE=USA-19Q serial Adapter (no firmware) + +usb:v06CDp010E* + ID_MODEL_FROM_DATABASE=USA-19Q serial Adapter + +usb:v06CDp010F* + ID_MODEL_FROM_DATABASE=USA-28 PDA + +usb:v06CDp0110* + ID_MODEL_FROM_DATABASE=USA-28Xb PDA + +usb:v06CDp0111* + ID_MODEL_FROM_DATABASE=USA-18 serial Adapter + +usb:v06CDp0112* + ID_MODEL_FROM_DATABASE=USA-18X PDA + +usb:v06CDp0113* + ID_MODEL_FROM_DATABASE=USA-28Xb PDA [no firmware] + +usb:v06CDp0114* + ID_MODEL_FROM_DATABASE=USA-28Xa PDA [no firmware] + +usb:v06CDp0115* + ID_MODEL_FROM_DATABASE=USA-28Xa PDA + +usb:v06CDp0116* + ID_MODEL_FROM_DATABASE=USA-18XA serial Adapter (no firmware) + +usb:v06CDp0117* + ID_MODEL_FROM_DATABASE=USA-18XA serial Adapter + +usb:v06CDp0118* + ID_MODEL_FROM_DATABASE=USA-19QW PDA [no firmware] + +usb:v06CDp0119* + ID_MODEL_FROM_DATABASE=USA-19QW PDA + +usb:v06CDp011A* + ID_MODEL_FROM_DATABASE=USA-49Wlc serial adapter [no firmware] + +usb:v06CDp011B* + ID_MODEL_FROM_DATABASE=MPR Serial Preloader (MPRQI) + +usb:v06CDp011C* + ID_MODEL_FROM_DATABASE=MPR Serial (MPRQI) + +usb:v06CDp011D* + ID_MODEL_FROM_DATABASE=MPR Serial Preloader (MPRQ) + +usb:v06CDp011E* + ID_MODEL_FROM_DATABASE=MPR Serial (MPRQ) + +usb:v06CDp0121* + ID_MODEL_FROM_DATABASE=USA-19hs serial adapter + +usb:v06CDp012A* + ID_MODEL_FROM_DATABASE=USA-49Wlc serial adapter + +usb:v06CDp0201* + ID_MODEL_FROM_DATABASE=UIA-10 Digital Media Remote [Cypress AN2131SC] + +usb:v06CDp0202* + ID_MODEL_FROM_DATABASE=UIA-11 Digital Media Remote + +usb:v06CE* + ID_VENDOR_FROM_DATABASE=Contec + +usb:v06CEp8311* + ID_MODEL_FROM_DATABASE=COM-1(USB)H + +usb:v06CF* + ID_VENDOR_FROM_DATABASE=SpheronVR AG + +usb:v06CFp1010* + ID_MODEL_FROM_DATABASE=PanoCam 10 + +usb:v06CFp1012* + ID_MODEL_FROM_DATABASE=PanoCam 12/12X + +usb:v06D0* + ID_VENDOR_FROM_DATABASE=LapLink, Inc. + +usb:v06D0p0622* + ID_MODEL_FROM_DATABASE=LapLink Gold USB-USB Bridge [net1080] + +usb:v06D1* + ID_VENDOR_FROM_DATABASE=Daewoo Electronics Co., Ltd + +usb:v06D3* + ID_VENDOR_FROM_DATABASE=Mitsubishi Electric Corp. + +usb:v06D3p0380* + ID_MODEL_FROM_DATABASE=CP8000D Port + +usb:v06D3p0381* + ID_MODEL_FROM_DATABASE=CP770D Port + +usb:v06D3p0385* + ID_MODEL_FROM_DATABASE=CP900D Port + +usb:v06D3p0387* + ID_MODEL_FROM_DATABASE=CP980D Port + +usb:v06D3p038B* + ID_MODEL_FROM_DATABASE=CP3020D Port + +usb:v06D3p038C* + ID_MODEL_FROM_DATABASE=CP900DW(ID) Port + +usb:v06D3p0393* + ID_MODEL_FROM_DATABASE=CP9500D/DW Port + +usb:v06D3p0394* + ID_MODEL_FROM_DATABASE=CP9000D/DW Port + +usb:v06D3p03A1* + ID_MODEL_FROM_DATABASE=CP9550D/DW Port + +usb:v06D4* + ID_VENDOR_FROM_DATABASE=Cisco Systems + +usb:v06D5* + ID_VENDOR_FROM_DATABASE=Toshiba + +usb:v06D5p4000* + ID_MODEL_FROM_DATABASE=Japanese Keyboard + +usb:v06D6* + ID_VENDOR_FROM_DATABASE=Aashima Technology B.V. + +usb:v06D6p0025* + ID_MODEL_FROM_DATABASE=Gamepad + +usb:v06D6p0026* + ID_MODEL_FROM_DATABASE=Predator TH 400 Gamepad + +usb:v06D6p002D* + ID_MODEL_FROM_DATABASE=Trust PowerC@m 350FT + +usb:v06D6p002E* + ID_MODEL_FROM_DATABASE=Trust PowerC@m 350FS + +usb:v06D6p0030* + ID_MODEL_FROM_DATABASE=Trust 710 LCD POWERC@M ZOOM - MSD + +usb:v06D6p0031* + ID_MODEL_FROM_DATABASE=Trust 610/710 LCD POWERC@M ZOOM + +usb:v06D6p003A* + ID_MODEL_FROM_DATABASE=Trust PowerC@m 770Z (mass storage mode) + +usb:v06D6p003B* + ID_MODEL_FROM_DATABASE=Trust PowerC@m 770Z (webcam mode) + +usb:v06D6p003C* + ID_MODEL_FROM_DATABASE=Trust 910z PowerC@m + +usb:v06D6p003F* + ID_MODEL_FROM_DATABASE=Trust 735S POWERC@M ZOOM, WDM DSC Bulk Driver + +usb:v06D6p0050* + ID_MODEL_FROM_DATABASE=Trust 738AV LCD PV Digital Camera + +usb:v06D6p0062* + ID_MODEL_FROM_DATABASE=TRUST 782AV LCD P. V. Video Capture + +usb:v06D6p0066* + ID_MODEL_FROM_DATABASE=TRUST Digital PCTV and Movie Editor + +usb:v06D6p0067* + ID_MODEL_FROM_DATABASE=Trust 350FS POWERC@M FLASH + +usb:v06D6p006B* + ID_MODEL_FROM_DATABASE=TRUST AUDIO VIDEO EDITOR + +usb:v06D7* + ID_VENDOR_FROM_DATABASE=Network Computing Devices (NCD) + +usb:v06D8* + ID_VENDOR_FROM_DATABASE=Technical Marketing Research, Inc. + +usb:v06DA* + ID_VENDOR_FROM_DATABASE=Phoenixtec Power Co., Ltd + +usb:v06DAp0002* + ID_MODEL_FROM_DATABASE=UPS + +usb:v06DAp0003* + ID_MODEL_FROM_DATABASE=1300VA UPS + +usb:v06DB* + ID_VENDOR_FROM_DATABASE=Paradyne + +usb:v06DC* + ID_VENDOR_FROM_DATABASE=Foxlink Image Technology Co., Ltd + +usb:v06DCp0012* + ID_MODEL_FROM_DATABASE=Scan 1200c Scanner + +usb:v06DCp0014* + ID_MODEL_FROM_DATABASE=Prolink Winscan Pro 2448U + +usb:v06DE* + ID_VENDOR_FROM_DATABASE=Heisei Electronics Co., Ltd + +usb:v06E0* + ID_VENDOR_FROM_DATABASE=Multi-Tech Systems, Inc. + +usb:v06E0pF101* + ID_MODEL_FROM_DATABASE=MT5634ZBA-USB MultiModemUSB (old firmware) + +usb:v06E0pF103* + ID_MODEL_FROM_DATABASE=MT5634MU MultiMobileUSB + +usb:v06E0pF104* + ID_MODEL_FROM_DATABASE=MT5634ZBA-USB MultiModemUSB (new firmware) + +usb:v06E0pF107* + ID_MODEL_FROM_DATABASE=MT5634ZBA-USB-V92 MultiModemUSB + +usb:v06E1* + ID_VENDOR_FROM_DATABASE=ADS Technologies, Inc. + +usb:v06E1p0008* + ID_MODEL_FROM_DATABASE=UBS-10BT Ethernet [klsi] + +usb:v06E1p0009* + ID_MODEL_FROM_DATABASE=UBS-10BT Ethernet + +usb:v06E1p0833* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v06E1pA155* + ID_MODEL_FROM_DATABASE=FM Radio Receiver/Instant FM Music (RDX-155-EF) + +usb:v06E1pA160* + ID_MODEL_FROM_DATABASE=Instant Video-To-Go RDX-160 (no firmware) + +usb:v06E1pA161* + ID_MODEL_FROM_DATABASE=Instant Video-To-Go RDX-160 + +usb:v06E1pA190* + ID_MODEL_FROM_DATABASE=Instand VCD Capture + +usb:v06E1pA191* + ID_MODEL_FROM_DATABASE=Instant VideoXpress + +usb:v06E1pA337* + ID_MODEL_FROM_DATABASE=Mini DigitalTV + +usb:v06E1pA701* + ID_MODEL_FROM_DATABASE=DVD Xpress + +usb:v06E1pA708* + ID_MODEL_FROM_DATABASE=saa7114H video input card (Instant VideoMPX) + +usb:v06E1pB337* + ID_MODEL_FROM_DATABASE=Mini DigitalTV + +usb:v06E1pB701* + ID_MODEL_FROM_DATABASE=DVD Xpress B + +usb:v06E4* + ID_VENDOR_FROM_DATABASE=Alcatel Microelectronics + +usb:v06E6* + ID_VENDOR_FROM_DATABASE=Tiger Jet Network, Inc. + +usb:v06E6p0200* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6p0201* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6p0202* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6p0203* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6p0210* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6p0211* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6p0212* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6p031C* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6p031D* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6p031E* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6p3200* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6p3201* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6p3202* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6p3203* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6p7200* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6p7210* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6p7250* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6p825C* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6p831C* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6p831D* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6p831E* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pB200* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pB201* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pB202* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pB210* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pB211* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pB212* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pB250* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pB251* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pB252* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pC200* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pC201* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pC202* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pC203* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pC210* + ID_MODEL_FROM_DATABASE=Personal PhoneGateway + +usb:v06E6pC211* + ID_MODEL_FROM_DATABASE=Personal PhoneGateway + +usb:v06E6pC212* + ID_MODEL_FROM_DATABASE=Personal PhoneGateway + +usb:v06E6pC213* + ID_MODEL_FROM_DATABASE=PPG Device + +usb:v06E6pC25C* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pC290* + ID_MODEL_FROM_DATABASE=PPG Device + +usb:v06E6pC291* + ID_MODEL_FROM_DATABASE=PPG Device + +usb:v06E6pC292* + ID_MODEL_FROM_DATABASE=PPG Device + +usb:v06E6pC293* + ID_MODEL_FROM_DATABASE=Personal PhoneGateway + +usb:v06E6pC31C* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pC39C* + ID_MODEL_FROM_DATABASE=Personal PhoneGateway + +usb:v06E6pC39D* + ID_MODEL_FROM_DATABASE=PPG Device + +usb:v06E6pC39E* + ID_MODEL_FROM_DATABASE=PPG Device + +usb:v06E6pC39F* + ID_MODEL_FROM_DATABASE=PPG Device + +usb:v06E6pC700* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pC701* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pC702* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pC703* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pC710* + ID_MODEL_FROM_DATABASE=VoIP Combo Device + +usb:v06E6pC711* + ID_MODEL_FROM_DATABASE=VoIP Combo + +usb:v06E6pC712* + ID_MODEL_FROM_DATABASE=VoIP Combo Device + +usb:v06E6pC713* + ID_MODEL_FROM_DATABASE=VoIP Combo Device + +usb:v06E6pCF00* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pCF01* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pCF02* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pCF03* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pD210* + ID_MODEL_FROM_DATABASE=Personal PhoneGateway + +usb:v06E6pD211* + ID_MODEL_FROM_DATABASE=PPG Device + +usb:v06E6pD212* + ID_MODEL_FROM_DATABASE=PPG Device + +usb:v06E6pD213* + ID_MODEL_FROM_DATABASE=Personal PhoneGateway + +usb:v06E6pD700* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pD701* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pD702* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pD703* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pD710* + ID_MODEL_FROM_DATABASE=VoIP Combo + +usb:v06E6pD711* + ID_MODEL_FROM_DATABASE=VoIP Combo Device + +usb:v06E6pD712* + ID_MODEL_FROM_DATABASE=VoIP Combo + +usb:v06E6pD713* + ID_MODEL_FROM_DATABASE=VoIP Combo + +usb:v06E6pDF00* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pDF01* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pDF02* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pDF03* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pF200* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pF201* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pF202* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pF203* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pF210* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pF250* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06E6pF252* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pF310* + ID_MODEL_FROM_DATABASE=Internet Phone + +usb:v06E6pF350* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v06EA* + ID_VENDOR_FROM_DATABASE=Sirius Technologies + +usb:v06EAp0001* + ID_MODEL_FROM_DATABASE=NetCom Roadster II 56k + +usb:v06EAp0002* + ID_MODEL_FROM_DATABASE=Roadster II 56k + +usb:v06EB* + ID_VENDOR_FROM_DATABASE=PC Expert Tech. Co., Ltd + +usb:v06EF* + ID_VENDOR_FROM_DATABASE=I.A.C. Geometrische Ingenieurs B.V. + +usb:v06F0* + ID_VENDOR_FROM_DATABASE=T.N.C Industrial Co., Ltd + +usb:v06F0pDE01* + ID_MODEL_FROM_DATABASE=DualCam Video Camera + +usb:v06F0pDE02* + ID_MODEL_FROM_DATABASE=DualCam Still Camera + +usb:v06F1* + ID_VENDOR_FROM_DATABASE=Opcode Systems, Inc. + +usb:v06F1pA011* + ID_MODEL_FROM_DATABASE=SonicPort + +usb:v06F1pA021* + ID_MODEL_FROM_DATABASE=SonicPort Optical + +usb:v06F2* + ID_VENDOR_FROM_DATABASE=Emine Technology Co. + +usb:v06F2p0011* + ID_MODEL_FROM_DATABASE=KVM Switch Keyboard + +usb:v06F6* + ID_VENDOR_FROM_DATABASE=Wintrend Technology Co., Ltd + +usb:v06F7* + ID_VENDOR_FROM_DATABASE=Wailly Technology Ltd + +usb:v06F7p0003* + ID_MODEL_FROM_DATABASE=USB->Din 4 Adaptor + +usb:v06F8* + ID_VENDOR_FROM_DATABASE=Guillemot Corp. + +usb:v06F8p3002* + ID_MODEL_FROM_DATABASE=Hercules Blog Webcam + +usb:v06F8p3004* + ID_MODEL_FROM_DATABASE=Hercules Classic Silver + +usb:v06F8p3005* + ID_MODEL_FROM_DATABASE=Hercules Dualpix Exchange + +usb:v06F8p3007* + ID_MODEL_FROM_DATABASE=Hercules Dualpix Chat and Show + +usb:v06F8p3020* + ID_MODEL_FROM_DATABASE=Hercules Webcam EC300 + +usb:v06F8pA300* + ID_MODEL_FROM_DATABASE=Dual Analog Leader GamePad + +usb:v06F8pB000* + ID_MODEL_FROM_DATABASE=Hercules DJ Console + +usb:v06F8pC000* + ID_MODEL_FROM_DATABASE=Hercules Muse Pocket + +usb:v06F8pD002* + ID_MODEL_FROM_DATABASE=Hercules DJ Console + +usb:v06F8pE000* + ID_MODEL_FROM_DATABASE=HWGUSB2-54 WLAN + +usb:v06F8pE010* + ID_MODEL_FROM_DATABASE=HWGUSB2-54-LB + +usb:v06F8pE020* + ID_MODEL_FROM_DATABASE=HWGUSB2-54V2-AP + +usb:v06F8pE031* + ID_MODEL_FROM_DATABASE=Hercules HWNUm-300 Wireless N mini [Realtek RTL8191SU] + +usb:v06F8pE032* + ID_MODEL_FROM_DATABASE=HWGUm-54 [Hercules Wireless G Ultra Mini Key] + +usb:v06F8pE033* + ID_MODEL_FROM_DATABASE=Hercules HWNUp-150 802.11n Wireless N Pico [Realtek RTL8188CUS] + +usb:v06F9* + ID_VENDOR_FROM_DATABASE=ASYST electronic d.o.o. + +usb:v06FA* + ID_VENDOR_FROM_DATABASE=HSD S.r.L + +usb:v06FC* + ID_VENDOR_FROM_DATABASE=Motorola Semiconductor Products Sector + +usb:v06FD* + ID_VENDOR_FROM_DATABASE=Boston Acoustics + +usb:v06FDp0101* + ID_MODEL_FROM_DATABASE=Audio Device + +usb:v06FDp0102* + ID_MODEL_FROM_DATABASE=Audio Device + +usb:v06FDp0201* + ID_MODEL_FROM_DATABASE=2-piece Audio Device + +usb:v06FE* + ID_VENDOR_FROM_DATABASE=Gallant Computer, Inc. + +usb:v0701* + ID_VENDOR_FROM_DATABASE=Supercomal Wire & Cable SDN. BHD. + +usb:v0703* + ID_VENDOR_FROM_DATABASE=Bvtech Industry, Inc. + +usb:v0705* + ID_VENDOR_FROM_DATABASE=NKK Corp. + +usb:v0706* + ID_VENDOR_FROM_DATABASE=Ariel Corp. + +usb:v0707* + ID_VENDOR_FROM_DATABASE=Standard Microsystems Corp. + +usb:v0707p0100* + ID_MODEL_FROM_DATABASE=2202 Ethernet [klsi] + +usb:v0707p0200* + ID_MODEL_FROM_DATABASE=2202 Ethernet [pegasus] + +usb:v0707p0201* + ID_MODEL_FROM_DATABASE=EZ Connect USB Ethernet + +usb:v0707pEE04* + ID_MODEL_FROM_DATABASE=SMCWUSB32 802.11b Wireless LAN Card + +usb:v0707pEE06* + ID_MODEL_FROM_DATABASE=SMC2862W-G v1 EZ Connect 802.11g Adapter [Intersil ISL3886] + +usb:v0707pEE13* + ID_MODEL_FROM_DATABASE=SMC2862W-G v2 EZ Connect 802.11g Adapter [Intersil ISL3887] + +usb:v0708* + ID_VENDOR_FROM_DATABASE=Putercom Co., Ltd + +usb:v0708p047E* + ID_MODEL_FROM_DATABASE=USB-1284 BRIDGE + +usb:v0709* + ID_VENDOR_FROM_DATABASE=Silicon Systems, Ltd (SSL) + +usb:v070A* + ID_VENDOR_FROM_DATABASE=Oki Electric Industry Co., Ltd + +usb:v070Ap4002* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v070Ap4003* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v070D* + ID_VENDOR_FROM_DATABASE=Comoss Electronic Co., Ltd + +usb:v070E* + ID_VENDOR_FROM_DATABASE=Excel Cell Electronic Co., Ltd + +usb:v0710* + ID_VENDOR_FROM_DATABASE=Connect Tech, Inc. + +usb:v0710p0001* + ID_MODEL_FROM_DATABASE=WhiteHeat (fake ID) + +usb:v0710p8001* + ID_MODEL_FROM_DATABASE=WhiteHeat + +usb:v0711* + ID_VENDOR_FROM_DATABASE=Magic Control Technology Corp. + +usb:v0711p0100* + ID_MODEL_FROM_DATABASE=Hub + +usb:v0711p0180* + ID_MODEL_FROM_DATABASE=IRXpress Infrared Device + +usb:v0711p0181* + ID_MODEL_FROM_DATABASE=IRXpress Infrared Device + +usb:v0711p0200* + ID_MODEL_FROM_DATABASE=BAY-3U1S1P Serial Port + +usb:v0711p0210* + ID_MODEL_FROM_DATABASE=MCT1S Serial Port + +usb:v0711p0230* + ID_MODEL_FROM_DATABASE=MCT-232 Serial Port + +usb:v0711p0231* + ID_MODEL_FROM_DATABASE=PS/2 Mouse Port + +usb:v0711p0232* + ID_MODEL_FROM_DATABASE=Serial On Port + +usb:v0711p0240* + ID_MODEL_FROM_DATABASE=PS/2 to USB Converter + +usb:v0711p0300* + ID_MODEL_FROM_DATABASE=BAY-3U1S1P Parallel Port + +usb:v0711p0302* + ID_MODEL_FROM_DATABASE=Parallel Port + +usb:v0711p0900* + ID_MODEL_FROM_DATABASE=SVGA Adapter + +usb:v0711p5001* + ID_MODEL_FROM_DATABASE=Trigger UV-002BD[Startech USBVGAE] + +usb:v0711p5100* + ID_MODEL_FROM_DATABASE=Magic Control Technology Corp. (USB2VGA dongle) + +usb:v0713* + ID_VENDOR_FROM_DATABASE=Interval Research Corp. + +usb:v0714* + ID_VENDOR_FROM_DATABASE=NewMotion, Inc. + +usb:v0714p0003* + ID_MODEL_FROM_DATABASE=ADB to USB convertor + +usb:v0717* + ID_VENDOR_FROM_DATABASE=ZNK Corp. + +usb:v0718* + ID_VENDOR_FROM_DATABASE=Imation Corp. + +usb:v0718p0002* + ID_MODEL_FROM_DATABASE=SuperDisk 120MB + +usb:v0718p0003* + ID_MODEL_FROM_DATABASE=SuperDisk 120MB (Authenticated) + +usb:v0718p0060* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v0718p0061* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v0718p0062* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v0718p0063* + ID_MODEL_FROM_DATABASE=Swivel Flash Drive + +usb:v0718p0064* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v0718p0065* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v0718p0066* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v0718p0067* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v0718p0068* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v0718p0084* + ID_MODEL_FROM_DATABASE=Flash Drive Mini + +usb:v0718p043C* + ID_MODEL_FROM_DATABASE=Flash drive 16GB [Nano Pro] + +usb:v0718p0582* + ID_MODEL_FROM_DATABASE=Revo Flash Drive + +usb:v0718p0622* + ID_MODEL_FROM_DATABASE=TDK Trans-It 4GB + +usb:v0718p0624* + ID_MODEL_FROM_DATABASE=TDK Trans-It 16GB + +usb:v0718p1120* + ID_MODEL_FROM_DATABASE=RDX External dock (redbud) + +usb:v0718pD000* + ID_MODEL_FROM_DATABASE=Disc Stakka CD/DVD Manager + +usb:v0719* + ID_VENDOR_FROM_DATABASE=Tremon Enterprises Co., Ltd + +usb:v071B* + ID_VENDOR_FROM_DATABASE=Domain Technologies, Inc. + +usb:v071Bp0002* + ID_MODEL_FROM_DATABASE=DTI-56362-USB Digital Interface Unit + +usb:v071Bp0101* + ID_MODEL_FROM_DATABASE=Audio4-USB DSP Data Acquisition Unit + +usb:v071Bp0201* + ID_MODEL_FROM_DATABASE=Audio4-5410 DSP Data Acquisition Unit + +usb:v071Bp0301* + ID_MODEL_FROM_DATABASE=SB-USB JTAG Emulator + +usb:v071Bp3203* + ID_MODEL_FROM_DATABASE=Rockchip Media Player + +usb:v071Bp32BB* + ID_MODEL_FROM_DATABASE=Music Mediatouch + +usb:v071C* + ID_VENDOR_FROM_DATABASE=Xionics Document Technologies, Inc. + +usb:v071D* + ID_VENDOR_FROM_DATABASE=Eicon Networks Corp. + +usb:v071Dp1000* + ID_MODEL_FROM_DATABASE=Diva ISDN TA + +usb:v071Dp1003* + ID_MODEL_FROM_DATABASE=Diva + +usb:v071Dp2000* + ID_MODEL_FROM_DATABASE=Teledat Surf + +usb:v071E* + ID_VENDOR_FROM_DATABASE=Ariston Technologies + +usb:v0723* + ID_VENDOR_FROM_DATABASE=Centillium Communications Corp. + +usb:v0723p0002* + ID_MODEL_FROM_DATABASE=Palladia 300/400 Adsl Modem + +usb:v0726* + ID_VENDOR_FROM_DATABASE=Vanguard International Semiconductor-America + +usb:v0729* + ID_VENDOR_FROM_DATABASE=Amitm + +usb:v0729p1000* + ID_MODEL_FROM_DATABASE=USC-1000 Serial Port + +usb:v072E* + ID_VENDOR_FROM_DATABASE=Sunix Co., Ltd + +usb:v072F* + ID_VENDOR_FROM_DATABASE=Advanced Card Systems, Ltd + +usb:v072Fp0001* + ID_MODEL_FROM_DATABASE=AC1030-based SmartCard Reader + +usb:v072Fp0008* + ID_MODEL_FROM_DATABASE=ACR 80 Smart Card Reader + +usb:v072Fp1000* + ID_MODEL_FROM_DATABASE=PLDT Drive + +usb:v072Fp1001* + ID_MODEL_FROM_DATABASE=PLDT Drive + +usb:v072Fp8002* + ID_MODEL_FROM_DATABASE=AET63 BioTRUSTKey + +usb:v072Fp8003* + ID_MODEL_FROM_DATABASE=ACR120 + +usb:v072Fp8103* + ID_MODEL_FROM_DATABASE=ACR120 + +usb:v072Fp9000* + ID_MODEL_FROM_DATABASE=ACR38 AC1038-based Smart Card Reader + +usb:v072Fp90CC* + ID_MODEL_FROM_DATABASE=ACR38 SmartCard Reader + +usb:v072Fp90CF* + ID_MODEL_FROM_DATABASE=ACR38 SAM Smart Card Reader + +usb:v072Fp90D0* + ID_MODEL_FROM_DATABASE=PertoSmart EMV - Card Reader + +usb:v0731* + ID_VENDOR_FROM_DATABASE=Susteen, Inc. + +usb:v0731p0528* + ID_MODEL_FROM_DATABASE=SonyEricsson DCU-11 Cable + +usb:v0732* + ID_VENDOR_FROM_DATABASE=Goldfull Electronics & Telecommunications Corp. + +usb:v0733* + ID_VENDOR_FROM_DATABASE=ViewQuest Technologies, Inc. + +usb:v0733p0101* + ID_MODEL_FROM_DATABASE=Digital Video Camera + +usb:v0733p0110* + ID_MODEL_FROM_DATABASE=VQ110 Video Camera + +usb:v0733p0401* + ID_MODEL_FROM_DATABASE=CS330 Webcam + +usb:v0733p0402* + ID_MODEL_FROM_DATABASE=M-318B Webcam + +usb:v0733p0430* + ID_MODEL_FROM_DATABASE=Intel Pro Share Webcam + +usb:v0733p0630* + ID_MODEL_FROM_DATABASE=VQ630 Dual Mode Digital Camera(Bulk) + +usb:v0733p0631* + ID_MODEL_FROM_DATABASE=Hercules Dualpix + +usb:v0733p0780* + ID_MODEL_FROM_DATABASE=Smart Cam Deluxe(composite) + +usb:v0733p1310* + ID_MODEL_FROM_DATABASE=Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 + +usb:v0733p1311* + ID_MODEL_FROM_DATABASE=Digital Dream Epsilon 1.3 + +usb:v0733p1314* + ID_MODEL_FROM_DATABASE=Mercury 2.1MEG Deluxe Classic Cam + +usb:v0733p2211* + ID_MODEL_FROM_DATABASE=Jenoptik jdc 21 LCD Camera + +usb:v0733p2221* + ID_MODEL_FROM_DATABASE=Mercury Digital Pro 3.1p + +usb:v0733p3261* + ID_MODEL_FROM_DATABASE=Concord 3045 spca536a Camera + +usb:v0733p3281* + ID_MODEL_FROM_DATABASE=Cyberpix S550V + +usb:v0734* + ID_VENDOR_FROM_DATABASE=Lasat Communications A/S + +usb:v0734p0001* + ID_MODEL_FROM_DATABASE=560V Modem + +usb:v0734p0002* + ID_MODEL_FROM_DATABASE=Lasat 560V Modem + +usb:v0734p043A* + ID_MODEL_FROM_DATABASE=DVS Audio + +usb:v0734p043B* + ID_MODEL_FROM_DATABASE=3DeMon USB Capture + +usb:v0735* + ID_VENDOR_FROM_DATABASE=Asuscom Network + +usb:v0735p2100* + ID_MODEL_FROM_DATABASE=ISDN Adapter + +usb:v0735p2101* + ID_MODEL_FROM_DATABASE=ISDN Adapter + +usb:v0735p6694* + ID_MODEL_FROM_DATABASE=ISDNlink 128K + +usb:v0735pC541* + ID_MODEL_FROM_DATABASE=ISDN TA 280 + +usb:v0736* + ID_VENDOR_FROM_DATABASE=Lorom Industrial Co., Ltd + +usb:v0738* + ID_VENDOR_FROM_DATABASE=Mad Catz, Inc. + +usb:v0738p4507* + ID_MODEL_FROM_DATABASE=XBox Device + +usb:v0738p4516* + ID_MODEL_FROM_DATABASE=XBox Device + +usb:v0738p4520* + ID_MODEL_FROM_DATABASE=XBox Device + +usb:v0738p4526* + ID_MODEL_FROM_DATABASE=XBox Device + +usb:v0738p4536* + ID_MODEL_FROM_DATABASE=XBox Device + +usb:v0738p4540* + ID_MODEL_FROM_DATABASE=XBox Device + +usb:v0738p4556* + ID_MODEL_FROM_DATABASE=XBox Device + +usb:v0738p4566* + ID_MODEL_FROM_DATABASE=XBox Device + +usb:v0738p4576* + ID_MODEL_FROM_DATABASE=XBox Device + +usb:v0738p4586* + ID_MODEL_FROM_DATABASE=XBox Device + +usb:v0738p4588* + ID_MODEL_FROM_DATABASE=XBox Device + +usb:v0738p8818* + ID_MODEL_FROM_DATABASE=Street Fighter IV Arcade FightStick (PS3) + +usb:v073A* + ID_VENDOR_FROM_DATABASE=Chaplet Systems, Inc. + +usb:v073Ap2230* + ID_MODEL_FROM_DATABASE=infrared dongle for remote + +usb:v073B* + ID_VENDOR_FROM_DATABASE=Suncom Technologies + +usb:v073C* + ID_VENDOR_FROM_DATABASE=Industrial Electronic Engineers, Inc. + +usb:v073Cp0305* + ID_MODEL_FROM_DATABASE=Pole Display (PC305-3415 2 x 20 Line Display) + +usb:v073Cp0322* + ID_MODEL_FROM_DATABASE=Pole Display (PC322-3415 2 x 20 Line Display) + +usb:v073Cp0324* + ID_MODEL_FROM_DATABASE=Pole Display (LB324-USB 4 x 20 Line Display) + +usb:v073Cp0330* + ID_MODEL_FROM_DATABASE=Pole Display (P330-3415 2 x 20 Line Display) + +usb:v073Cp0424* + ID_MODEL_FROM_DATABASE=Pole Display (SP324-4415 4 x 20 Line Display) + +usb:v073Cp0450* + ID_MODEL_FROM_DATABASE=Pole Display (L450-USB Graphic Line Display) + +usb:v073Cp0505* + ID_MODEL_FROM_DATABASE=Pole Display (SPC505-3415 2 x 20 Line Display) + +usb:v073Cp0522* + ID_MODEL_FROM_DATABASE=Pole Display (SPC522-3415 2 x 20 Line Display) + +usb:v073Cp0624* + ID_MODEL_FROM_DATABASE=Pole Display (SP324-3415 4 x 20 Line Display) + +usb:v073D* + ID_VENDOR_FROM_DATABASE=Eutron S.p.a. + +usb:v073Dp0005* + ID_MODEL_FROM_DATABASE=Crypto Token + +usb:v073Dp0007* + ID_MODEL_FROM_DATABASE=CryptoIdentity CCID + +usb:v073Dp0025* + ID_MODEL_FROM_DATABASE=SmartKey 3 + +usb:v073Dp0C00* + ID_MODEL_FROM_DATABASE=Pocket Reader + +usb:v073Dp0D00* + ID_MODEL_FROM_DATABASE=StarSign Bio Token 3.0 EU + +usb:v073E* + ID_VENDOR_FROM_DATABASE=NEC, Inc. + +usb:v073Ep0301* + ID_MODEL_FROM_DATABASE=Game Pad + +usb:v0745* + ID_VENDOR_FROM_DATABASE=Syntech Information Co., Ltd + +usb:v0746* + ID_VENDOR_FROM_DATABASE=Onkyo Corp. + +usb:v0746p5500* + ID_MODEL_FROM_DATABASE=SE-U55 Audio Device + +usb:v0747* + ID_VENDOR_FROM_DATABASE=Labway Corp. + +usb:v0748* + ID_VENDOR_FROM_DATABASE=Strong Man Enterprise Co., Ltd + +usb:v0749* + ID_VENDOR_FROM_DATABASE=EVer Electronics Corp. + +usb:v074A* + ID_VENDOR_FROM_DATABASE=Ming Fortune Industry Co., Ltd + +usb:v074B* + ID_VENDOR_FROM_DATABASE=Polestar Tech. Corp. + +usb:v074C* + ID_VENDOR_FROM_DATABASE=C-C-C Group PLC + +usb:v074D* + ID_VENDOR_FROM_DATABASE=Micronas GmbH + +usb:v074Dp3553* + ID_MODEL_FROM_DATABASE=Composite USB-Device + +usb:v074Dp3554* + ID_MODEL_FROM_DATABASE=Composite USB-Device + +usb:v074Dp3556* + ID_MODEL_FROM_DATABASE=Composite USB-Device + +usb:v074E* + ID_VENDOR_FROM_DATABASE=Digital Stream Corp. + +usb:v074Ep0001* + ID_MODEL_FROM_DATABASE=PS/2 Adapter + +usb:v074Ep0002* + ID_MODEL_FROM_DATABASE=PS/2 Adapter + +usb:v0755* + ID_VENDOR_FROM_DATABASE=Aureal Semiconductor + +usb:v0757* + ID_VENDOR_FROM_DATABASE=Network Technologies, Inc. + +usb:v075B* + ID_VENDOR_FROM_DATABASE=Sophisticated Circuits, Inc. + +usb:v075Bp0001* + ID_MODEL_FROM_DATABASE=Kick-off! Watchdog + +usb:v0763* + ID_VENDOR_FROM_DATABASE=Midiman + +usb:v0763p0115* + ID_MODEL_FROM_DATABASE=O2 / KeyRig 25 + +usb:v0763p0117* + ID_MODEL_FROM_DATABASE=Trigger Finger + +usb:v0763p0119* + ID_MODEL_FROM_DATABASE=MidAir + +usb:v0763p0150* + ID_MODEL_FROM_DATABASE=M-Audio Uno + +usb:v0763p0160* + ID_MODEL_FROM_DATABASE=M-Audio 1x1 + +usb:v0763p0192* + ID_MODEL_FROM_DATABASE=M-Audio Keystation 88es + +usb:v0763p0193* + ID_MODEL_FROM_DATABASE=ProKeys 88 + +usb:v0763p0194* + ID_MODEL_FROM_DATABASE=ProKeys 88sx + +usb:v0763p0195* + ID_MODEL_FROM_DATABASE=Oxygen 8 v2 + +usb:v0763p0196* + ID_MODEL_FROM_DATABASE=Oxygen 49 + +usb:v0763p0197* + ID_MODEL_FROM_DATABASE=Oxygen 61 + +usb:v0763p0198* + ID_MODEL_FROM_DATABASE=Axiom 25 + +usb:v0763p0199* + ID_MODEL_FROM_DATABASE=Axiom 49 + +usb:v0763p019A* + ID_MODEL_FROM_DATABASE=Axiom 61 + +usb:v0763p019B* + ID_MODEL_FROM_DATABASE=KeyRig 49 + +usb:v0763p019C* + ID_MODEL_FROM_DATABASE=KeyStudio + +usb:v0763p1001* + ID_MODEL_FROM_DATABASE=MidiSport 2x2 + +usb:v0763p1002* + ID_MODEL_FROM_DATABASE=MidiSport 2x2 + +usb:v0763p1003* + ID_MODEL_FROM_DATABASE=MidiSport 2x2 + +usb:v0763p1010* + ID_MODEL_FROM_DATABASE=MidiSport 1x1 + +usb:v0763p1011* + ID_MODEL_FROM_DATABASE=MidiSport 1x1 + +usb:v0763p1014* + ID_MODEL_FROM_DATABASE=M-Audio Keystation Loader + +usb:v0763p1015* + ID_MODEL_FROM_DATABASE=M-Audio Keystation + +usb:v0763p1020* + ID_MODEL_FROM_DATABASE=Midisport 4x4 + +usb:v0763p1021* + ID_MODEL_FROM_DATABASE=MidiSport 4x4 + +usb:v0763p1030* + ID_MODEL_FROM_DATABASE=Midisport 8x8 + +usb:v0763p1031* + ID_MODEL_FROM_DATABASE=MidiSport 8x8/s Loader + +usb:v0763p1033* + ID_MODEL_FROM_DATABASE=MidiSport 8x8/s + +usb:v0763p1040* + ID_MODEL_FROM_DATABASE=M-Audio MidiSport 2x4 Loader + +usb:v0763p1041* + ID_MODEL_FROM_DATABASE=M-Audio MidiSport 2x4 + +usb:v0763p1110* + ID_MODEL_FROM_DATABASE=MidiSport 1x1 + +usb:v0763p2001* + ID_MODEL_FROM_DATABASE=M Audio Quattro + +usb:v0763p2002* + ID_MODEL_FROM_DATABASE=M Audio Duo + +usb:v0763p2003* + ID_MODEL_FROM_DATABASE=M Audio AudioPhile + +usb:v0763p2004* + ID_MODEL_FROM_DATABASE=M-Audio MobilePre + +usb:v0763p2006* + ID_MODEL_FROM_DATABASE=M-Audio Transit + +usb:v0763p2007* + ID_MODEL_FROM_DATABASE=M-Audio Sonica Theater + +usb:v0763p2008* + ID_MODEL_FROM_DATABASE=M-Audio Ozone + +usb:v0763p200D* + ID_MODEL_FROM_DATABASE=M-Audio OmniStudio + +usb:v0763p200F* + ID_MODEL_FROM_DATABASE=M-Audio MobilePre + +usb:v0763p2010* + ID_MODEL_FROM_DATABASE=M-Audio Fast Track + +usb:v0763p2012* + ID_MODEL_FROM_DATABASE=M-Audio Fast Track Pro + +usb:v0763p2013* + ID_MODEL_FROM_DATABASE=M-Audio JamLab + +usb:v0763p2015* + ID_MODEL_FROM_DATABASE=M-Audio RunTime DFU + +usb:v0763p2016* + ID_MODEL_FROM_DATABASE=M-Audio RunTime DFU + +usb:v0763p2019* + ID_MODEL_FROM_DATABASE=M-Audio Ozone Academic + +usb:v0763p201A* + ID_MODEL_FROM_DATABASE=M-Audio Micro + +usb:v0763p201B* + ID_MODEL_FROM_DATABASE=M-Audio RunTime DFU + +usb:v0763p201D* + ID_MODEL_FROM_DATABASE=M-Audio Producer + +usb:v0763p2024* + ID_MODEL_FROM_DATABASE=M-Audio Fast Track MKII + +usb:v0763p2080* + ID_MODEL_FROM_DATABASE=M-Audio RunTime DFU + +usb:v0763p2081* + ID_MODEL_FROM_DATABASE=M-Audio RunTime DFU / Fast Track Ultra 8R + +usb:v0763p2803* + ID_MODEL_FROM_DATABASE=M-Audio Audiophile DFU + +usb:v0763p2804* + ID_MODEL_FROM_DATABASE=M-Audio MobilePre DFU + +usb:v0763p2806* + ID_MODEL_FROM_DATABASE=M-Audio Transit DFU + +usb:v0763p2815* + ID_MODEL_FROM_DATABASE=M-Audio DFU + +usb:v0763p2816* + ID_MODEL_FROM_DATABASE=M-Audio DFU + +usb:v0763p281B* + ID_MODEL_FROM_DATABASE=M-Audio DFU + +usb:v0763p2880* + ID_MODEL_FROM_DATABASE=M-Audio DFU + +usb:v0763p2881* + ID_MODEL_FROM_DATABASE=M-Audio DFU + +usb:v0764* + ID_VENDOR_FROM_DATABASE=Cyber Power System, Inc. + +usb:v0764p0005* + ID_MODEL_FROM_DATABASE=Cyber Power UPS + +usb:v0764p0501* + ID_MODEL_FROM_DATABASE=CP1500 AVR UPS + +usb:v0765* + ID_VENDOR_FROM_DATABASE=X-Rite, Inc. + +usb:v0765p5001* + ID_MODEL_FROM_DATABASE=Huey PRO Colorimeter + +usb:v0765pD094* + ID_MODEL_FROM_DATABASE=X-Rite DTP94 [Quato Silver Haze Pro] + +usb:v0766* + ID_VENDOR_FROM_DATABASE=Jess-Link Products Co., Ltd + +usb:v0766p001B* + ID_MODEL_FROM_DATABASE=Packard Bell Go + +usb:v0766p0204* + ID_MODEL_FROM_DATABASE=TopSpeed Cyberlink Remote Control + +usb:v0767* + ID_VENDOR_FROM_DATABASE=Tokheim Corp. + +usb:v0768* + ID_VENDOR_FROM_DATABASE=Camtel Technology Corp. + +usb:v0768p0006* + ID_MODEL_FROM_DATABASE=Camtel Technology USB TV Genie Pro FM Model TVB330 + +usb:v0768p0023* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v0769* + ID_VENDOR_FROM_DATABASE=Surecom Technology Corp. + +usb:v0769p11F2* + ID_MODEL_FROM_DATABASE=EP-9001-g 802.11g 54M WLAN Adapter + +usb:v0769p11F3* + ID_MODEL_FROM_DATABASE=RT2570 + +usb:v0769p11F7* + ID_MODEL_FROM_DATABASE=802.11g 54M WLAN Adapter + +usb:v0769p31F3* + ID_MODEL_FROM_DATABASE=RT2573 + +usb:v076A* + ID_VENDOR_FROM_DATABASE=Smart Technology Enablers, Inc. + +usb:v076B* + ID_VENDOR_FROM_DATABASE=OmniKey AG + +usb:v076Bp0596* + ID_MODEL_FROM_DATABASE=CardMan 2020 + +usb:v076Bp1021* + ID_MODEL_FROM_DATABASE=CardMan 1021 + +usb:v076Bp1221* + ID_MODEL_FROM_DATABASE=CardMan 1221 + +usb:v076Bp1784* + ID_MODEL_FROM_DATABASE=CardMan 6020 + +usb:v076Bp3021* + ID_MODEL_FROM_DATABASE=CardMan 3121 + +usb:v076Bp3610* + ID_MODEL_FROM_DATABASE=CardMan 3620 + +usb:v076Bp3621* + ID_MODEL_FROM_DATABASE=CardMan 3621 + +usb:v076Bp3821* + ID_MODEL_FROM_DATABASE=CardMan 3821 + +usb:v076Bp4321* + ID_MODEL_FROM_DATABASE=CardMan 4321 + +usb:v076Bp5121* + ID_MODEL_FROM_DATABASE=CardMan 5121 + +usb:v076Bp5125* + ID_MODEL_FROM_DATABASE=CardMan 5125 + +usb:v076Bp6622* + ID_MODEL_FROM_DATABASE=CardMan 6121 + +usb:v076BpA011* + ID_MODEL_FROM_DATABASE=CCID Smart Card Reader Keyboard + +usb:v076BpA021* + ID_MODEL_FROM_DATABASE=CCID Smart Card Reader + +usb:v076BpA022* + ID_MODEL_FROM_DATABASE=CardMan Smart@Link + +usb:v076BpC000* + ID_MODEL_FROM_DATABASE=CardMan 3x21 CS + +usb:v076BpC001* + ID_MODEL_FROM_DATABASE=CardMan 5121 CS + +usb:v076C* + ID_VENDOR_FROM_DATABASE=Partner Tech + +usb:v076D* + ID_VENDOR_FROM_DATABASE=Denso Corp. + +usb:v076E* + ID_VENDOR_FROM_DATABASE=Kuan Tech Enterprise Co., Ltd + +usb:v076F* + ID_VENDOR_FROM_DATABASE=Jhen Vei Electronic Co., Ltd + +usb:v0770* + ID_VENDOR_FROM_DATABASE=Welch Allyn, Inc - Medical Division + +usb:v0771* + ID_VENDOR_FROM_DATABASE=Observator Instruments BV + +usb:v0771p4455* + ID_MODEL_FROM_DATABASE=OMC45III + +usb:v0771pAE0F* + ID_MODEL_FROM_DATABASE=OMC45III + +usb:v0772* + ID_VENDOR_FROM_DATABASE=Your data Our Care + +usb:v0774* + ID_VENDOR_FROM_DATABASE=AmTRAN Technology Co., Ltd + +usb:v0775* + ID_VENDOR_FROM_DATABASE=Longshine Electronics Corp. + +usb:v0776* + ID_VENDOR_FROM_DATABASE=Inalways Corp. + +usb:v0777* + ID_VENDOR_FROM_DATABASE=Comda Enterprise Corp. + +usb:v0778* + ID_VENDOR_FROM_DATABASE=Volex, Inc. + +usb:v0779* + ID_VENDOR_FROM_DATABASE=Fairchild Semiconductor + +usb:v077A* + ID_VENDOR_FROM_DATABASE=Sankyo Seiki Mfg. Co., Ltd + +usb:v077B* + ID_VENDOR_FROM_DATABASE=Linksys + +usb:v077Bp08BE* + ID_MODEL_FROM_DATABASE=BEFCMU10 v4 Cable Modem + +usb:v077Bp2219* + ID_MODEL_FROM_DATABASE=WUSB11 V2.6 802.11b Adapter + +usb:v077Bp2226* + ID_MODEL_FROM_DATABASE=USB200M 100baseTX Adapter + +usb:v077Bp2227* + ID_MODEL_FROM_DATABASE=Network Everywhere NWU11B + +usb:v077C* + ID_VENDOR_FROM_DATABASE=Forward Electronics Co., Ltd + +usb:v077Cp0005* + ID_MODEL_FROM_DATABASE=NEC Keyboard + +usb:v077D* + ID_VENDOR_FROM_DATABASE=Griffin Technology + +usb:v077Dp0223* + ID_MODEL_FROM_DATABASE=IMic Audio In/Out + +usb:v077Dp0405* + ID_MODEL_FROM_DATABASE=iMate, ADB Adapter + +usb:v077Dp0410* + ID_MODEL_FROM_DATABASE=PowerMate + +usb:v077Dp041A* + ID_MODEL_FROM_DATABASE=PowerWave + +usb:v077Dp04AA* + ID_MODEL_FROM_DATABASE=SoundKnob + +usb:v077Dp07AF* + ID_MODEL_FROM_DATABASE=iMic + +usb:v077Dp1016* + ID_MODEL_FROM_DATABASE=AirClick + +usb:v077Dp627A* + ID_MODEL_FROM_DATABASE=Radio SHARK + +usb:v077F* + ID_VENDOR_FROM_DATABASE=Well Excellent & Most Corp. + +usb:v0780* + ID_VENDOR_FROM_DATABASE=Sagem Monetel GmbH + +usb:v0780p1202* + ID_MODEL_FROM_DATABASE=ORGA 900 Smart Card Terminal Virtual Com Port + +usb:v0780p1302* + ID_MODEL_FROM_DATABASE=ORGA 6000 Smart Card Terminal Virtual Com Port + +usb:v0780p1303* + ID_MODEL_FROM_DATABASE=ORGA 6000 Smart Card Terminal USB RNDIS + +usb:v0780pDF55* + ID_MODEL_FROM_DATABASE=ORGA 900/6000 Smart Card Terminal DFU + +usb:v0781* + ID_VENDOR_FROM_DATABASE=SanDisk Corp. + +usb:v0781p0001* + ID_MODEL_FROM_DATABASE=SDDR-05a ImageMate CompactFlash Reader + +usb:v0781p0002* + ID_MODEL_FROM_DATABASE=SDDR-31 ImageMate II CompactFlash Reader + +usb:v0781p0005* + ID_MODEL_FROM_DATABASE=SDDR-05b (CF II) ImageMate CompactFlash Reader + +usb:v0781p0100* + ID_MODEL_FROM_DATABASE=ImageMate SDDR-12 + +usb:v0781p0200* + ID_MODEL_FROM_DATABASE=SDDR-09 (SSFDC) ImageMate SmartMedia Reader [eusb] + +usb:v0781p0400* + ID_MODEL_FROM_DATABASE=SecureMate SD/MMC Reader + +usb:v0781p0621* + ID_MODEL_FROM_DATABASE=SDDR-86 Imagemate 6-in-1 Reader + +usb:v0781p0720* + ID_MODEL_FROM_DATABASE=Sansa C200 series in recovery mode + +usb:v0781p0729* + ID_MODEL_FROM_DATABASE=Sansa E200 series in recovery mode + +usb:v0781p0810* + ID_MODEL_FROM_DATABASE=SDDR-75 ImageMate CF-SM Reader + +usb:v0781p0830* + ID_MODEL_FROM_DATABASE=ImageMate CF/MMC/SD Reader + +usb:v0781p1234* + ID_MODEL_FROM_DATABASE=Cruzer Mini Flash Drive + +usb:v0781p5150* + ID_MODEL_FROM_DATABASE=SDCZ2 Cruzer Mini Flash Drive (thin) + +usb:v0781p5151* + ID_MODEL_FROM_DATABASE=Cruzer Micro Flash Drive + +usb:v0781p5153* + ID_MODEL_FROM_DATABASE=Cruzer Flash Drive + +usb:v0781p5204* + ID_MODEL_FROM_DATABASE=Cruzer Crossfire + +usb:v0781p5402* + ID_MODEL_FROM_DATABASE=U3 Cruzer Micro + +usb:v0781p5406* + ID_MODEL_FROM_DATABASE=Cruzer Micro U3 + +usb:v0781p5408* + ID_MODEL_FROM_DATABASE=Cruzer Titanium U3 + +usb:v0781p540E* + ID_MODEL_FROM_DATABASE=Cruzer Contour Flash Drive + +usb:v0781p5530* + ID_MODEL_FROM_DATABASE=Cruzer + +usb:v0781p5567* + ID_MODEL_FROM_DATABASE=Cruzer Blade + +usb:v0781p5571* + ID_MODEL_FROM_DATABASE=Cruzer Fit + +usb:v0781p5580* + ID_MODEL_FROM_DATABASE=SDCZ80 Flash Drive + +usb:v0781p5E10* + ID_MODEL_FROM_DATABASE=Encrypted + +usb:v0781p6100* + ID_MODEL_FROM_DATABASE=Ultra II SD Plus 2GB + +usb:v0781p7100* + ID_MODEL_FROM_DATABASE=Cruzer Mini + +usb:v0781p7101* + ID_MODEL_FROM_DATABASE=Pen Flash + +usb:v0781p7102* + ID_MODEL_FROM_DATABASE=Cruzer Mini + +usb:v0781p7103* + ID_MODEL_FROM_DATABASE=Cruzer Mini + +usb:v0781p7104* + ID_MODEL_FROM_DATABASE=Cruzer Micro Mini 256MB Flash Drive + +usb:v0781p7105* + ID_MODEL_FROM_DATABASE=Cruzer Mini + +usb:v0781p7106* + ID_MODEL_FROM_DATABASE=Cruzer Mini + +usb:v0781p7112* + ID_MODEL_FROM_DATABASE=Cruzer Micro 128MB Flash Drive + +usb:v0781p7113* + ID_MODEL_FROM_DATABASE=Cruzer Micro 256MB Flash Drive + +usb:v0781p7114* + ID_MODEL_FROM_DATABASE=Cruzer Mini + +usb:v0781p7115* + ID_MODEL_FROM_DATABASE=Cruzer Mini + +usb:v0781p7301* + ID_MODEL_FROM_DATABASE=Sansa e100 series (mtp) + +usb:v0781p7302* + ID_MODEL_FROM_DATABASE=Sansa e100 series (msc) + +usb:v0781p7400* + ID_MODEL_FROM_DATABASE=Sansa M200 series (mtp) + +usb:v0781p7401* + ID_MODEL_FROM_DATABASE=Sansa M200 series (msc) + +usb:v0781p7420* + ID_MODEL_FROM_DATABASE=Sansa E200 series (mtp) + +usb:v0781p7421* + ID_MODEL_FROM_DATABASE=Sansa E200 Series (msc) + +usb:v0781p7422* + ID_MODEL_FROM_DATABASE=Sansa E200 series v2 (mtp) + +usb:v0781p7423* + ID_MODEL_FROM_DATABASE=Sansa E200 series v2 (msc) + +usb:v0781p7430* + ID_MODEL_FROM_DATABASE=Sansa M200 series + +usb:v0781p7431* + ID_MODEL_FROM_DATABASE=Sansa M200 series V4 (msc) + +usb:v0781p7432* + ID_MODEL_FROM_DATABASE=Sansa Clip (mtp) + +usb:v0781p7433* + ID_MODEL_FROM_DATABASE=Sansa Clip (msc) + +usb:v0781p7434* + ID_MODEL_FROM_DATABASE=Sansa Clip V2 (mtp) + +usb:v0781p7435* + ID_MODEL_FROM_DATABASE=Sansa Clip V2 (msc) + +usb:v0781p7450* + ID_MODEL_FROM_DATABASE=Sansa C250 + +usb:v0781p7451* + ID_MODEL_FROM_DATABASE=Sansa C240 + +usb:v0781p7460* + ID_MODEL_FROM_DATABASE=Sansa Express + +usb:v0781p7480* + ID_MODEL_FROM_DATABASE=Sansa Connect + +usb:v0781p7481* + ID_MODEL_FROM_DATABASE=Sansa Connect (in recovery mode) + +usb:v0781p74B0* + ID_MODEL_FROM_DATABASE=Sansa View (msc) + +usb:v0781p74B1* + ID_MODEL_FROM_DATABASE=Sansa View (mtp) + +usb:v0781p74C0* + ID_MODEL_FROM_DATABASE=Sansa Fuze (mtp) + +usb:v0781p74C1* + ID_MODEL_FROM_DATABASE=Sansa Fuze (msc) + +usb:v0781p74C2* + ID_MODEL_FROM_DATABASE=Sansa Fuze V2 (mtp) + +usb:v0781p74C3* + ID_MODEL_FROM_DATABASE=Sansa Fuze V2 (msc) + +usb:v0781p74D0* + ID_MODEL_FROM_DATABASE=Sansa Clip+ (mtp) + +usb:v0781p74D1* + ID_MODEL_FROM_DATABASE=Sansa Clip+ (msc) + +usb:v0781p8181* + ID_MODEL_FROM_DATABASE=Pen Flash + +usb:v0781p8183* + ID_MODEL_FROM_DATABASE=Hi-Speed Mass Storage Device + +usb:v0781p8185* + ID_MODEL_FROM_DATABASE=SDCZ2 Cruzer Mini Flash Drive (older, thick) + +usb:v0781p8888* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v0781p8889* + ID_MODEL_FROM_DATABASE=SDDR-88 Imagemate 8-in-1 Reader + +usb:v0781p8919* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v0781p8989* + ID_MODEL_FROM_DATABASE=ImageMate 12-in-1 Reader + +usb:v0781p9191* + ID_MODEL_FROM_DATABASE=ImageMate CF + +usb:v0781p9219* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v0781p9292* + ID_MODEL_FROM_DATABASE=ImageMate CF Reader/Writer + +usb:v0781p9393* + ID_MODEL_FROM_DATABASE=ImageMate SD-MMC + +usb:v0781p9595* + ID_MODEL_FROM_DATABASE=ImageMate xD-SM + +usb:v0781p9797* + ID_MODEL_FROM_DATABASE=ImageMate MS-PRO + +usb:v0781p9919* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v0781p9999* + ID_MODEL_FROM_DATABASE=SDDR-99 5-in-1 Reader + +usb:v0781pA7C1* + ID_MODEL_FROM_DATABASE=Storage device (SD card reader) + +usb:v0781pA7E8* + ID_MODEL_FROM_DATABASE=SDDR-113 MicroMate SDHC Reader + +usb:v0781pB2B3* + ID_MODEL_FROM_DATABASE=SDDR-103 MobileMate SD+ Reader + +usb:v0781pB4B5* + ID_MODEL_FROM_DATABASE=SDDR-89 V4 ImageMate 12-in-1 Reader + +usb:v0782* + ID_VENDOR_FROM_DATABASE=Trackerball + +usb:v0783* + ID_VENDOR_FROM_DATABASE=C3PO + +usb:v0783p0003* + ID_MODEL_FROM_DATABASE=LTC31 SmartCard Reader + +usb:v0783p0006* + ID_MODEL_FROM_DATABASE=LTC31v2 + +usb:v0783p0009* + ID_MODEL_FROM_DATABASE=KBR36 + +usb:v0783p0010* + ID_MODEL_FROM_DATABASE=LTC32 + +usb:v0784* + ID_VENDOR_FROM_DATABASE=Vivitar, Inc. + +usb:v0784p0100* + ID_MODEL_FROM_DATABASE=Vivicam 2655 + +usb:v0784p1310* + ID_MODEL_FROM_DATABASE=Vivicam 3305 + +usb:v0784p1688* + ID_MODEL_FROM_DATABASE=Vivicam 3665 + +usb:v0784p1689* + ID_MODEL_FROM_DATABASE=Gateway DC-M42/Labtec DC-505/Vivitar Vivicam 3705 + +usb:v0784p2620* + ID_MODEL_FROM_DATABASE=AOL Photocam Plus + +usb:v0784p2888* + ID_MODEL_FROM_DATABASE=Polaroid DC700 + +usb:v0784p3330* + ID_MODEL_FROM_DATABASE=Nytec ND-3200 Camera + +usb:v0784p4300* + ID_MODEL_FROM_DATABASE=Traveler D1 + +usb:v0784p5260* + ID_MODEL_FROM_DATABASE=Werlisa Sport PX 100 / JVC GC-A33 Camera + +usb:v0784p5300* + ID_MODEL_FROM_DATABASE=Pretec dc530 + +usb:v0785* + ID_VENDOR_FROM_DATABASE=NTT-ME + +usb:v0785p0001* + ID_MODEL_FROM_DATABASE=MN128mini-V ISDN TA + +usb:v0785p0003* + ID_MODEL_FROM_DATABASE=MN128mini-J ISDN TA + +usb:v0789* + ID_VENDOR_FROM_DATABASE=Logitec Corp. + +usb:v0789p0026* + ID_MODEL_FROM_DATABASE=LHD Device + +usb:v0789p0033* + ID_MODEL_FROM_DATABASE=DVD Multi-plus unit LDR-H443SU2 + +usb:v0789p0063* + ID_MODEL_FROM_DATABASE=LDR Device + +usb:v0789p0064* + ID_MODEL_FROM_DATABASE=LDR-R Device + +usb:v0789p00B3* + ID_MODEL_FROM_DATABASE=DVD Multi-plus unit LDR-H443U2 + +usb:v0789p0105* + ID_MODEL_FROM_DATABASE=LAN-TX/U1H2 10/100 Ethernet Adapter [pegasus II] + +usb:v0789p010C* + ID_MODEL_FROM_DATABASE=Realtek RTL8187 Wireless 802.11g 54Mbps Network Adapter + +usb:v0789p0160* + ID_MODEL_FROM_DATABASE=LAN-GTJ/U2A + +usb:v0789p0162* + ID_MODEL_FROM_DATABASE=LAN-WN22/U2 Wireless LAN Adapter + +usb:v0789p0163* + ID_MODEL_FROM_DATABASE=LAN-WN12/U2 Wireless LAN Adapter + +usb:v0789p0164* + ID_MODEL_FROM_DATABASE=LAN-W150/U2M Wireless LAN Adapter + +usb:v0789p0166* + ID_MODEL_FROM_DATABASE=LAN-W300N/U2 Wireless LAN Adapter + +usb:v0789p0168* + ID_MODEL_FROM_DATABASE=LAN-W150N/U2 Wireless LAN Adapter + +usb:v0789p0170* + ID_MODEL_FROM_DATABASE=LAN-W300AN/U2 Wireless LAN Adapter + +usb:v078B* + ID_VENDOR_FROM_DATABASE=Happ Controls, Inc. + +usb:v078Bp0010* + ID_MODEL_FROM_DATABASE=Driving UGCI + +usb:v078Bp0020* + ID_MODEL_FROM_DATABASE=Flying UGCI + +usb:v078Bp0030* + ID_MODEL_FROM_DATABASE=Fighting UGCI + +usb:v078C* + ID_VENDOR_FROM_DATABASE=GTCO/CalComp + +usb:v078Cp0090* + ID_MODEL_FROM_DATABASE=Tablet Adapter + +usb:v078Cp0100* + ID_MODEL_FROM_DATABASE=Tablet Adapter + +usb:v078Cp0200* + ID_MODEL_FROM_DATABASE=Tablet Adapter + +usb:v078Cp0300* + ID_MODEL_FROM_DATABASE=Tablet Adapter + +usb:v078Cp0400* + ID_MODEL_FROM_DATABASE=Digitizer (Whiteboard) + +usb:v078E* + ID_VENDOR_FROM_DATABASE=Brincom, Inc. + +usb:v0790* + ID_VENDOR_FROM_DATABASE=Pro-Image Manufacturing Co., Ltd + +usb:v0791* + ID_VENDOR_FROM_DATABASE=Copartner Wire and Cable Mfg. Corp. + +usb:v0792* + ID_VENDOR_FROM_DATABASE=Axis Communications AB + +usb:v0793* + ID_VENDOR_FROM_DATABASE=Wha Yu Industrial Co., Ltd + +usb:v0794* + ID_VENDOR_FROM_DATABASE=ABL Electronics Corp. + +usb:v0795* + ID_VENDOR_FROM_DATABASE=RealChip, Inc. + +usb:v0796* + ID_VENDOR_FROM_DATABASE=Certicom Corp. + +usb:v0797* + ID_VENDOR_FROM_DATABASE=Grandtech Semiconductor Corp. + +usb:v0797p6801* + ID_MODEL_FROM_DATABASE=Flatbed Scanner + +usb:v0797p6802* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v0797p8001* + ID_MODEL_FROM_DATABASE=SmartCam + +usb:v0797p801A* + ID_MODEL_FROM_DATABASE=Typhoon StyloCam + +usb:v0797p801C* + ID_MODEL_FROM_DATABASE=Meade Binoculars/Camera + +usb:v0797p8901* + ID_MODEL_FROM_DATABASE=ScanHex SX-35a + +usb:v0797p8909* + ID_MODEL_FROM_DATABASE=ScanHex SX-35b + +usb:v0797p8911* + ID_MODEL_FROM_DATABASE=ScanHex SX-35c + +usb:v0798* + ID_VENDOR_FROM_DATABASE=Optelec + +usb:v0798p0001* + ID_MODEL_FROM_DATABASE=Braille Voyager + +usb:v0799* + ID_VENDOR_FROM_DATABASE=Altera + +usb:v0799p7651* + ID_MODEL_FROM_DATABASE=Programming Unit + +usb:v079B* + ID_VENDOR_FROM_DATABASE=Sagem + +usb:v079Bp0027* + ID_MODEL_FROM_DATABASE=USB-Serial Controller + +usb:v079Bp002F* + ID_MODEL_FROM_DATABASE=Mobile + +usb:v079Bp0030* + ID_MODEL_FROM_DATABASE=Mobile Communication Device + +usb:v079Bp0042* + ID_MODEL_FROM_DATABASE=Mobile + +usb:v079Bp004A* + ID_MODEL_FROM_DATABASE=XG-760A 802.11bg + +usb:v079Bp004B* + ID_MODEL_FROM_DATABASE=Wi-Fi 11g adapter + +usb:v079Bp0056* + ID_MODEL_FROM_DATABASE=Agfa AP1100 Photo Printer + +usb:v079Bp005D* + ID_MODEL_FROM_DATABASE=Mobile Mass Storage + +usb:v079Bp0062* + ID_MODEL_FROM_DATABASE=XG-76NA 802.11bg + +usb:v079Bp0078* + ID_MODEL_FROM_DATABASE=Laser Pro Monochrome MFP + +usb:v079D* + ID_VENDOR_FROM_DATABASE=Alfadata Computer Corp. + +usb:v079Dp0201* + ID_MODEL_FROM_DATABASE=GamePort Adapter + +usb:v07A1* + ID_VENDOR_FROM_DATABASE=Digicom S.p.A. + +usb:v07A1pD952* + ID_MODEL_FROM_DATABASE=Palladio USB V.92 Modem + +usb:v07A2* + ID_VENDOR_FROM_DATABASE=National Technical Systems + +usb:v07A3* + ID_VENDOR_FROM_DATABASE=Onnto Corp. + +usb:v07A4* + ID_VENDOR_FROM_DATABASE=Be, Inc. + +usb:v07A6* + ID_VENDOR_FROM_DATABASE=ADMtek, Inc. + +usb:v07A6p07C2* + ID_MODEL_FROM_DATABASE=AN986A Ethernet + +usb:v07A6p0986* + ID_MODEL_FROM_DATABASE=AN986 Pegasus Ethernet + +usb:v07A6p8266* + ID_MODEL_FROM_DATABASE=Infineon WildCard-USB Wireless LAN Adapter + +usb:v07A6p8511* + ID_MODEL_FROM_DATABASE=ADM8511 Pegasus II Ethernet + +usb:v07A6p8513* + ID_MODEL_FROM_DATABASE=AN8513 Ethernet + +usb:v07A6p8515* + ID_MODEL_FROM_DATABASE=AN8515 Ethernet + +usb:v07AA* + ID_VENDOR_FROM_DATABASE=Corega K.K. + +usb:v07AAp0001* + ID_MODEL_FROM_DATABASE=Ether USB-T Ethernet [klsi] + +usb:v07AAp0004* + ID_MODEL_FROM_DATABASE=FEther USB-TX Ethernet [pegasus] + +usb:v07AAp000C* + ID_MODEL_FROM_DATABASE=WirelessLAN USB-11 + +usb:v07AAp000D* + ID_MODEL_FROM_DATABASE=FEther USB-TXS + +usb:v07AAp0011* + ID_MODEL_FROM_DATABASE=Wireless LAN USB-11 mini + +usb:v07AAp0012* + ID_MODEL_FROM_DATABASE=Stick-11 802.11b Adapter + +usb:v07AAp0017* + ID_MODEL_FROM_DATABASE=FEther USB2-TX + +usb:v07AAp0018* + ID_MODEL_FROM_DATABASE=Wireless LAN USB-11 mini 2 + +usb:v07AAp001A* + ID_MODEL_FROM_DATABASE=ULUSB-11 Key + +usb:v07AAp001C* + ID_MODEL_FROM_DATABASE=CG-WLUSB2GTST 802.11g Wireless Adapter [Intersil ISL3887] + +usb:v07AAp002E* + ID_MODEL_FROM_DATABASE=CG-WLUSB2GPX [Ralink RT2571W] + +usb:v07AAp002F* + ID_MODEL_FROM_DATABASE=CG-WLUSB2GNL + +usb:v07AAp0031* + ID_MODEL_FROM_DATABASE=CG-WLUSB2GS 802.11bg [Atheros AR5523] + +usb:v07AAp003C* + ID_MODEL_FROM_DATABASE=CG-WLUSB2GNL + +usb:v07AAp003F* + ID_MODEL_FROM_DATABASE=CG-WLUSB300AGN + +usb:v07AAp0041* + ID_MODEL_FROM_DATABASE=CG-WLUSB300GNS + +usb:v07AAp0042* + ID_MODEL_FROM_DATABASE=CG-WLUSB300GNM + +usb:v07AAp0043* + ID_MODEL_FROM_DATABASE=CG-WLUSB300N rev A2 [Realtek RTL8192U] + +usb:v07AAp0047* + ID_MODEL_FROM_DATABASE=CG-WLUSBNM + +usb:v07AAp0051* + ID_MODEL_FROM_DATABASE=CG-WLUSB300NM + +usb:v07AAp7613* + ID_MODEL_FROM_DATABASE=Stick-11 V2 802.11b Adapter + +usb:v07AAp9601* + ID_MODEL_FROM_DATABASE=FEther USB-TXC + +usb:v07AB* + ID_VENDOR_FROM_DATABASE=Freecom Technologies + +usb:v07ABpFC01* + ID_MODEL_FROM_DATABASE=IDE bridge + +usb:v07ABpFC02* + ID_MODEL_FROM_DATABASE=Cable II USB-2 + +usb:v07ABpFC03* + ID_MODEL_FROM_DATABASE=USB2-IDE IDE bridge + +usb:v07ABpFCD6* + ID_MODEL_FROM_DATABASE=Freecom HD Classic + +usb:v07ABpFCF6* + ID_MODEL_FROM_DATABASE=DataBar 512 MB + +usb:v07ABpFCF8* + ID_MODEL_FROM_DATABASE=Freecom Classic SL Network Drive + +usb:v07ABpFCFE* + ID_MODEL_FROM_DATABASE=Hard Drive 80GB + +usb:v07AF* + ID_VENDOR_FROM_DATABASE=Microtech + +usb:v07AFp0004* + ID_MODEL_FROM_DATABASE=SCSI-DB25 SCSI Bridge [shuttle] + +usb:v07AFp0005* + ID_MODEL_FROM_DATABASE=SCSI-HD50 SCSI Bridge [shuttle] + +usb:v07AFp0006* + ID_MODEL_FROM_DATABASE=CameraMate SmartMedia and CompactFlash Card Reader [eusb/shuttle] + +usb:v07AFpFC01* + ID_MODEL_FROM_DATABASE=Freecom USB-IDE + +usb:v07B0* + ID_VENDOR_FROM_DATABASE=Trust Technologies + +usb:v07B0p0001* + ID_MODEL_FROM_DATABASE=ISDN TA + +usb:v07B0p0002* + ID_MODEL_FROM_DATABASE=ISDN TA128 Plus + +usb:v07B0p0003* + ID_MODEL_FROM_DATABASE=ISDN TA128 Deluxe + +usb:v07B0p0005* + ID_MODEL_FROM_DATABASE=ISDN TA128 SE + +usb:v07B0p0006* + ID_MODEL_FROM_DATABASE=ISDN TA128 CE + +usb:v07B0p0007* + ID_MODEL_FROM_DATABASE=ISDN TA + +usb:v07B0p0008* + ID_MODEL_FROM_DATABASE=ISDN TA + +usb:v07B1* + ID_VENDOR_FROM_DATABASE=IMP, Inc. + +usb:v07B2* + ID_VENDOR_FROM_DATABASE=Motorola BCS, Inc. + +usb:v07B2p0100* + ID_MODEL_FROM_DATABASE=SURFboard Voice over IP Cable Modem + +usb:v07B2p0900* + ID_MODEL_FROM_DATABASE=SURFboard Gateway + +usb:v07B2p0950* + ID_MODEL_FROM_DATABASE=SURFboard SBG950 Gateway + +usb:v07B2p1000* + ID_MODEL_FROM_DATABASE=SURFboard SBG1000 Gateway + +usb:v07B2p4100* + ID_MODEL_FROM_DATABASE=SurfBoard SB4100 Cable Modem + +usb:v07B2p4200* + ID_MODEL_FROM_DATABASE=SurfBoard SB4200 Cable Modem + +usb:v07B2p4210* + ID_MODEL_FROM_DATABASE=SurfBoard 4210 Cable Modem + +usb:v07B2p4220* + ID_MODEL_FROM_DATABASE=SURFboard SB4220 Cable Modem + +usb:v07B2p4500* + ID_MODEL_FROM_DATABASE=CG4500 Communications Gateway + +usb:v07B2p450B* + ID_MODEL_FROM_DATABASE=CG4501 Communications Gateway + +usb:v07B2p450E* + ID_MODEL_FROM_DATABASE=CG4500E Communications Gateway + +usb:v07B2p5100* + ID_MODEL_FROM_DATABASE=SurfBoard SB5100 Cable Modem + +usb:v07B2p5101* + ID_MODEL_FROM_DATABASE=SurfBoard SB5101 Cable Modem + +usb:v07B2p5120* + ID_MODEL_FROM_DATABASE=SurfBoard SB5120 Cable Modem (RNDIS) + +usb:v07B2p5121* + ID_MODEL_FROM_DATABASE=Surfboard 5121 Cable Modem + +usb:v07B2p7030* + ID_MODEL_FROM_DATABASE=WU830G 802.11bg Wireless Adapter [Envara WiND512] + +usb:v07B3* + ID_VENDOR_FROM_DATABASE=Plustek, Inc. + +usb:v07B3p0001* + ID_MODEL_FROM_DATABASE=OpticPro 1212U Scanner + +usb:v07B3p0003* + ID_MODEL_FROM_DATABASE=Scanner + +usb:v07B3p0010* + ID_MODEL_FROM_DATABASE=OpticPro U12 Scanner + +usb:v07B3p0011* + ID_MODEL_FROM_DATABASE=OpticPro U24 Scanner + +usb:v07B3p0013* + ID_MODEL_FROM_DATABASE=OpticPro UT12 Scanner + +usb:v07B3p0014* + ID_MODEL_FROM_DATABASE=Scanner + +usb:v07B3p0015* + ID_MODEL_FROM_DATABASE=OpticPro U24 Scanner + +usb:v07B3p0017* + ID_MODEL_FROM_DATABASE=OpticPro UT12/16/24 Scanner + +usb:v07B3p0204* + ID_MODEL_FROM_DATABASE=Scanner + +usb:v07B3p0400* + ID_MODEL_FROM_DATABASE=OpticPro 1248U Scanner + +usb:v07B3p0401* + ID_MODEL_FROM_DATABASE=OpticPro 1248U Scanner #2 + +usb:v07B3p0403* + ID_MODEL_FROM_DATABASE=OpticPro U16B Scanner + +usb:v07B3p0404* + ID_MODEL_FROM_DATABASE=Scanner + +usb:v07B3p0405* + ID_MODEL_FROM_DATABASE=A8 Namecard-s Controller + +usb:v07B3p0406* + ID_MODEL_FROM_DATABASE=A8 Namecard-D Controller + +usb:v07B3p0410* + ID_MODEL_FROM_DATABASE=Scanner + +usb:v07B3p0412* + ID_MODEL_FROM_DATABASE=Scanner + +usb:v07B3p0413* + ID_MODEL_FROM_DATABASE=OpticSlim 1200 Scanner + +usb:v07B3p0601* + ID_MODEL_FROM_DATABASE=OpticPro ST24 Scanner + +usb:v07B3p0800* + ID_MODEL_FROM_DATABASE=OpticPro ST48 Scanner + +usb:v07B3p0900* + ID_MODEL_FROM_DATABASE=OpticBook 3600 Scanner + +usb:v07B3p090C* + ID_MODEL_FROM_DATABASE=OpticBook 3600 Plus Scanner + +usb:v07B3p0A06* + ID_MODEL_FROM_DATABASE=TVcam VD100 + +usb:v07B3p0B00* + ID_MODEL_FROM_DATABASE=SmartPhoto F50 + +usb:v07B3p0C03* + ID_MODEL_FROM_DATABASE=OpticPro ST64+ Scanner + +usb:v07B3p0C04* + ID_MODEL_FROM_DATABASE=Optic Film 7200i scanner + +usb:v07B3p0C0C* + ID_MODEL_FROM_DATABASE=PL806 Scanner + +usb:v07B3p0C26* + ID_MODEL_FROM_DATABASE=OpticBook 4600 Scanner + +usb:v07B3p0C2B* + ID_MODEL_FROM_DATABASE=Mobile Office D428 Scanner + +usb:v07B3p0E08* + ID_MODEL_FROM_DATABASE=Plustek OpticBook A300 Scanner + +usb:v07B3p1300* + ID_MODEL_FROM_DATABASE=OpticBook 3800 Scanner + +usb:v07B3p1301* + ID_MODEL_FROM_DATABASE=OpticBook 4800 Scanner + +usb:v07B4* + ID_VENDOR_FROM_DATABASE=Olympus Optical Co., Ltd + +usb:v07B4p0100* + ID_MODEL_FROM_DATABASE=Camedia C-2100/C-3000 Ultra Zoom Camera + +usb:v07B4p0102* + ID_MODEL_FROM_DATABASE=Camedia E-10/C-220/C-50 Camera + +usb:v07B4p0105* + ID_MODEL_FROM_DATABASE=Camedia C-310Z/C-700/C-750UZ/C-755/C-765UZ/C-3040/C-4000/C-5050Z/D-560/C-3020Z Zoom Camera + +usb:v07B4p0109* + ID_MODEL_FROM_DATABASE=C-370Z/C-500Z/D-535Z/X-450 + +usb:v07B4p010A* + ID_MODEL_FROM_DATABASE=MAUSB-10 xD and SmartMedia Card Reader + +usb:v07B4p0112* + ID_MODEL_FROM_DATABASE=MAUSB-100 xD Card Reader + +usb:v07B4p0113* + ID_MODEL_FROM_DATABASE=Mju 500 + +usb:v07B4p0114* + ID_MODEL_FROM_DATABASE=C-350Z Camera + +usb:v07B4p0118* + ID_MODEL_FROM_DATABASE=Mju Mini Digital/Mju Digital 500 Camera / Stylus 850 SW + +usb:v07B4p0184* + ID_MODEL_FROM_DATABASE=P-S100 port + +usb:v07B4p0203* + ID_MODEL_FROM_DATABASE=Digital Voice Recorder DW-90 + +usb:v07B4p0206* + ID_MODEL_FROM_DATABASE=Digital Voice Recorder DS-330 + +usb:v07B4p0207* + ID_MODEL_FROM_DATABASE=Digital Voice Recorder & Camera W-10 + +usb:v07B4p0209* + ID_MODEL_FROM_DATABASE=Digital Voice Recorder DM-20 + +usb:v07B4p020D* + ID_MODEL_FROM_DATABASE=Digital Voice Recorder VN-240PC + +usb:v07B4p0244* + ID_MODEL_FROM_DATABASE=Digital Voice Recorder VN-8500PC + +usb:v07B4p0280* + ID_MODEL_FROM_DATABASE=m:robe 100 + +usb:v07B5* + ID_VENDOR_FROM_DATABASE=Mega World International, Ltd + +usb:v07B5p0017* + ID_MODEL_FROM_DATABASE=Joystick + +usb:v07B5p0213* + ID_MODEL_FROM_DATABASE=Thrustmaster Firestorm Digital 3 Gamepad + +usb:v07B5p0312* + ID_MODEL_FROM_DATABASE=Gamepad + +usb:v07B5p9902* + ID_MODEL_FROM_DATABASE=GamePad + +usb:v07B6* + ID_VENDOR_FROM_DATABASE=Marubun Corp. + +usb:v07B7* + ID_VENDOR_FROM_DATABASE=TIME Interconnect, Ltd + +usb:v07B8* + ID_VENDOR_FROM_DATABASE=AboCom Systems Inc + +usb:v07B8p110C* + ID_MODEL_FROM_DATABASE=XX1 + +usb:v07B8p1201* + ID_MODEL_FROM_DATABASE=IEEE 802.11b Adapter + +usb:v07B8p200C* + ID_MODEL_FROM_DATABASE=XX2 + +usb:v07B8p2573* + ID_MODEL_FROM_DATABASE=Wireless LAN Card + +usb:v07B8p2770* + ID_MODEL_FROM_DATABASE=802.11n/b/g Mini Wireless LAN USB2.0 Adapter + +usb:v07B8p2870* + ID_MODEL_FROM_DATABASE=802.11n/b/g Wireless LAN USB2.0 Adapter + +usb:v07B8p3070* + ID_MODEL_FROM_DATABASE=802.11n/b/g Mini Wireless LAN USB2.0 Adapter + +usb:v07B8p3071* + ID_MODEL_FROM_DATABASE=802.11n/b/g Mini Wireless LAN USB2.0 Adapter + +usb:v07B8p3072* + ID_MODEL_FROM_DATABASE=802.11n/b/g Mini Wireless LAN USB2.0 Adapter + +usb:v07B8p4000* + ID_MODEL_FROM_DATABASE=DU-E10 Ethernet [klsi] + +usb:v07B8p4002* + ID_MODEL_FROM_DATABASE=DU-E100 Ethernet [pegasus] + +usb:v07B8p4003* + ID_MODEL_FROM_DATABASE=1/10/100 Ethernet Adapter + +usb:v07B8p4004* + ID_MODEL_FROM_DATABASE=XX4 + +usb:v07B8p4007* + ID_MODEL_FROM_DATABASE=XX5 + +usb:v07B8p400B* + ID_MODEL_FROM_DATABASE=XX6 + +usb:v07B8p400C* + ID_MODEL_FROM_DATABASE=XX7 + +usb:v07B8p401A* + ID_MODEL_FROM_DATABASE=RTL8151 + +usb:v07B8p4102* + ID_MODEL_FROM_DATABASE=USB 1.1 10/100M Fast Ethernet Adapter + +usb:v07B8p4104* + ID_MODEL_FROM_DATABASE=XX9 + +usb:v07B8p420A* + ID_MODEL_FROM_DATABASE=UF200 Ethernet + +usb:v07B8p5301* + ID_MODEL_FROM_DATABASE=GW-US54ZGL 802.11bg + +usb:v07B8p6001* + ID_MODEL_FROM_DATABASE=802.11bg + +usb:v07B8pA001* + ID_MODEL_FROM_DATABASE=WUG2200 802.11g Wireless Adapter [Envara WiND512] + +usb:v07B8pABC1* + ID_MODEL_FROM_DATABASE=DU-E10 Ethernet [pegasus] + +usb:v07B8pB000* + ID_MODEL_FROM_DATABASE=BWU613 + +usb:v07B8pB02A* + ID_MODEL_FROM_DATABASE=AboCom Bluetooth Device + +usb:v07B8pB02B* + ID_MODEL_FROM_DATABASE=Bluetooth dongle + +usb:v07B8pB02C* + ID_MODEL_FROM_DATABASE=BCM92045DG-Flash with trace filter + +usb:v07B8pB02D* + ID_MODEL_FROM_DATABASE=BCM92045DG-Flash with trace filter + +usb:v07B8pB02E* + ID_MODEL_FROM_DATABASE=BCM92045DG-Flash with trace filter + +usb:v07B8pB030* + ID_MODEL_FROM_DATABASE=BCM92045DG-Flash with trace filter + +usb:v07B8pB031* + ID_MODEL_FROM_DATABASE=BCM92045DG-Flash with trace filter + +usb:v07B8pB032* + ID_MODEL_FROM_DATABASE=BCM92045DG-Flash with trace filter + +usb:v07B8pB033* + ID_MODEL_FROM_DATABASE=BCM92045DG-Flash with trace filter + +usb:v07B8pB21A* + ID_MODEL_FROM_DATABASE=WUG2400 802.11g Wireless Adapter [Texas Instruments TNETW1450] + +usb:v07B8pB21B* + ID_MODEL_FROM_DATABASE=HWU54DM + +usb:v07B8pB21C* + ID_MODEL_FROM_DATABASE=RT2573 + +usb:v07B8pB21D* + ID_MODEL_FROM_DATABASE=RT2573 + +usb:v07B8pB21E* + ID_MODEL_FROM_DATABASE=RT2573 + +usb:v07B8pB21F* + ID_MODEL_FROM_DATABASE=WUG2700 + +usb:v07B8pD011* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v07B8pE001* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v07B8pE002* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v07B8pE003* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v07B8pE004* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v07B8pE005* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v07B8pE006* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v07B8pE007* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v07B8pE008* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v07B8pE009* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v07B8pE00A* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v07B8pE4F0* + ID_MODEL_FROM_DATABASE=Card Reader Driver + +usb:v07B8pF101* + ID_MODEL_FROM_DATABASE=DSB-560 Modem [atlas] + +usb:v07BC* + ID_VENDOR_FROM_DATABASE=Canon Computer Systems, Inc. + +usb:v07BD* + ID_VENDOR_FROM_DATABASE=Webgear, Inc. + +usb:v07BE* + ID_VENDOR_FROM_DATABASE=Veridicom + +usb:v07C0* + ID_VENDOR_FROM_DATABASE=Code Mercenaries Hard- und Software GmbH + +usb:v07C0p1113* + ID_MODEL_FROM_DATABASE=JoyWarrior24F8 + +usb:v07C0p1116* + ID_MODEL_FROM_DATABASE=JoyWarrior24F14 + +usb:v07C0p1121* + ID_MODEL_FROM_DATABASE=The Claw + +usb:v07C0p1500* + ID_MODEL_FROM_DATABASE=IO-Warrior 40 + +usb:v07C0p1501* + ID_MODEL_FROM_DATABASE=IO-Warrior 24 + +usb:v07C0p1502* + ID_MODEL_FROM_DATABASE=IO-Warrior 48 + +usb:v07C0p1503* + ID_MODEL_FROM_DATABASE=IO-Warrior 28 + +usb:v07C0p1511* + ID_MODEL_FROM_DATABASE=IO-Warrior 24 Power Vampire + +usb:v07C0p1512* + ID_MODEL_FROM_DATABASE=IO-Warrior 24 Power Vampire + +usb:v07C1* + ID_VENDOR_FROM_DATABASE=Keisokugiken + +usb:v07C1p0068* + ID_MODEL_FROM_DATABASE=HKS-0200 USBDAQ + +usb:v07C4* + ID_VENDOR_FROM_DATABASE=Datafab Systems, Inc. + +usb:v07C4p0102* + ID_MODEL_FROM_DATABASE=USB to LS120 + +usb:v07C4p0103* + ID_MODEL_FROM_DATABASE=USB to IDE + +usb:v07C4p1234* + ID_MODEL_FROM_DATABASE=USB to ATAPI + +usb:v07C4pA000* + ID_MODEL_FROM_DATABASE=CompactFlash Card Reader + +usb:v07C4pA001* + ID_MODEL_FROM_DATABASE=CompactFlash & SmartMedia Card Reader [eusb] + +usb:v07C4pA002* + ID_MODEL_FROM_DATABASE=Disk Drive + +usb:v07C4pA003* + ID_MODEL_FROM_DATABASE=Datafab-based Reader + +usb:v07C4pA004* + ID_MODEL_FROM_DATABASE=USB to MMC Class Drive + +usb:v07C4pA005* + ID_MODEL_FROM_DATABASE=CompactFlash & SmartMedia Card Reader + +usb:v07C4pA006* + ID_MODEL_FROM_DATABASE=SmartMedia Card Reader + +usb:v07C4pA007* + ID_MODEL_FROM_DATABASE=Memory Stick Class Drive + +usb:v07C4pA103* + ID_MODEL_FROM_DATABASE=MDSM-B reader + +usb:v07C4pA107* + ID_MODEL_FROM_DATABASE=USB to Memory Stick (LC1) Drive + +usb:v07C4pA109* + ID_MODEL_FROM_DATABASE=LC1 CompactFlash & SmartMedia Card Reader + +usb:v07C4pA10B* + ID_MODEL_FROM_DATABASE=USB to CF+MS(LC1) + +usb:v07C4pA200* + ID_MODEL_FROM_DATABASE=DF-UT-06 Hama MMC/SD Reader + +usb:v07C4pA400* + ID_MODEL_FROM_DATABASE=CompactFlash & Microdrive Reader + +usb:v07C4pA600* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v07C4pAD01* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v07C4pAE01* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v07C4pAF01* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v07C4pB000* + ID_MODEL_FROM_DATABASE=USB to CF(LC1) + +usb:v07C4pB001* + ID_MODEL_FROM_DATABASE=USB to CF+PCMCIA + +usb:v07C4pB004* + ID_MODEL_FROM_DATABASE=MMC/SD Reader + +usb:v07C4pB006* + ID_MODEL_FROM_DATABASE=USB to PCMCIA + +usb:v07C4pB00A* + ID_MODEL_FROM_DATABASE=USB to CF+SD Drive(LC1) + +usb:v07C4pB00B* + ID_MODEL_FROM_DATABASE=USB to Memory Stick(LC1) + +usb:v07C4pC010* + ID_MODEL_FROM_DATABASE=Kingston FCR-HS2/ATA Card Reader + +usb:v07C5* + ID_VENDOR_FROM_DATABASE=APG Cash Drawer + +usb:v07C6* + ID_VENDOR_FROM_DATABASE=ShareWave, Inc. + +usb:v07C6p0002* + ID_MODEL_FROM_DATABASE=Bodega Wireless Access Point + +usb:v07C6p0003* + ID_MODEL_FROM_DATABASE=Bodega Wireless Network Adapter + +usb:v07C7* + ID_VENDOR_FROM_DATABASE=Powertech Industrial Co., Ltd + +usb:v07C8* + ID_VENDOR_FROM_DATABASE=B.U.G., Inc. + +usb:v07C8p0202* + ID_MODEL_FROM_DATABASE=MN128-SOHO PAL + +usb:v07C9* + ID_VENDOR_FROM_DATABASE=Allied Telesyn International + +usb:v07C9pB100* + ID_MODEL_FROM_DATABASE=AT-USB100 + +usb:v07CA* + ID_VENDOR_FROM_DATABASE=AVerMedia Technologies, Inc. + +usb:v07CAp0002* + ID_MODEL_FROM_DATABASE=AVerTV PVR USB/EZMaker Pro Device + +usb:v07CAp0026* + ID_MODEL_FROM_DATABASE=AVerTV + +usb:v07CAp0337* + ID_MODEL_FROM_DATABASE=A867 DVB-T dongle + +usb:v07CAp0837* + ID_MODEL_FROM_DATABASE=H837 Hybrid ATSC/QAM + +usb:v07CAp1228* + ID_MODEL_FROM_DATABASE=MPEG-2 Capture Device (M038) + +usb:v07CAp1830* + ID_MODEL_FROM_DATABASE=AVerTV Volar Video Capture (H830) + +usb:v07CAp3835* + ID_MODEL_FROM_DATABASE=AVerTV Volar Green HD (A835B) + +usb:v07CAp850A* + ID_MODEL_FROM_DATABASE=AverTV Volar Black HD (A850) + +usb:v07CAp850B* + ID_MODEL_FROM_DATABASE=AverTV Red HD+ (A850T) + +usb:v07CApA309* + ID_MODEL_FROM_DATABASE=AVerTV DVB-T (A309) + +usb:v07CApA801* + ID_MODEL_FROM_DATABASE=AVerTV DVB-T (A800) + +usb:v07CApA815* + ID_MODEL_FROM_DATABASE=AVerTV DVB-T Volar X (A815) + +usb:v07CApA827* + ID_MODEL_FROM_DATABASE=AVerTV Hybrid Volar HX (A827) + +usb:v07CApA867* + ID_MODEL_FROM_DATABASE=AVerTV DVB-T (A867) + +usb:v07CApB800* + ID_MODEL_FROM_DATABASE=MR800 FM Radio + +usb:v07CApE880* + ID_MODEL_FROM_DATABASE=MPEG-2 Capture Device (E880) + +usb:v07CApE882* + ID_MODEL_FROM_DATABASE=MPEG-2 Capture Device (E882) + +usb:v07CB* + ID_VENDOR_FROM_DATABASE=Kingmax Technology, Inc. + +usb:v07CC* + ID_VENDOR_FROM_DATABASE=Carry Computer Eng., Co., Ltd + +usb:v07CCp0000* + ID_MODEL_FROM_DATABASE=CF Card Reader + +usb:v07CCp0001* + ID_MODEL_FROM_DATABASE=Reader (UICSE) + +usb:v07CCp0002* + ID_MODEL_FROM_DATABASE=Reader (UIS) + +usb:v07CCp0003* + ID_MODEL_FROM_DATABASE=SM Card Reader + +usb:v07CCp0004* + ID_MODEL_FROM_DATABASE=SM/CF/PCMCIA Card Reader + +usb:v07CCp0005* + ID_MODEL_FROM_DATABASE=Reader (UISA2SE) + +usb:v07CCp0006* + ID_MODEL_FROM_DATABASE=SM/CF/PCMCIA Card Reader + +usb:v07CCp0007* + ID_MODEL_FROM_DATABASE=Reader (UISA6SE) + +usb:v07CCp000C* + ID_MODEL_FROM_DATABASE=SM/CF Card Reader + +usb:v07CCp000D* + ID_MODEL_FROM_DATABASE=SM/CF Card Reader + +usb:v07CCp000E* + ID_MODEL_FROM_DATABASE=Reader (UISDA) + +usb:v07CCp000F* + ID_MODEL_FROM_DATABASE=Reader (UICLIK) + +usb:v07CCp0010* + ID_MODEL_FROM_DATABASE=Reader (UISMA) + +usb:v07CCp0012* + ID_MODEL_FROM_DATABASE=Reader (UISC6SE-FLASH) + +usb:v07CCp0014* + ID_MODEL_FROM_DATABASE=Litronic Fortezza Reader + +usb:v07CCp0030* + ID_MODEL_FROM_DATABASE=Mass Storage (UISDMC12S) + +usb:v07CCp0040* + ID_MODEL_FROM_DATABASE=Mass Storage (UISDMC13S) + +usb:v07CCp0100* + ID_MODEL_FROM_DATABASE=Reader (UID) + +usb:v07CCp0101* + ID_MODEL_FROM_DATABASE=Reader (UIM) + +usb:v07CCp0102* + ID_MODEL_FROM_DATABASE=Reader (UISDMA) + +usb:v07CCp0103* + ID_MODEL_FROM_DATABASE=Reader (UISDMC) + +usb:v07CCp0104* + ID_MODEL_FROM_DATABASE=Reader (UISDM) + +usb:v07CCp0200* + ID_MODEL_FROM_DATABASE=6-in-1 Card Reader + +usb:v07CCp0201* + ID_MODEL_FROM_DATABASE=Mass Storage (UISDMC1S & UISDMC3S) + +usb:v07CCp0202* + ID_MODEL_FROM_DATABASE=Mass Storage (UISDMC5S) + +usb:v07CCp0203* + ID_MODEL_FROM_DATABASE=Mass Storage (UISMC5S) + +usb:v07CCp0204* + ID_MODEL_FROM_DATABASE=Mass Storage (UIM4/5S & UIM7S) + +usb:v07CCp0205* + ID_MODEL_FROM_DATABASE=Mass Storage (UIS4/5S & UIS7S) + +usb:v07CCp0206* + ID_MODEL_FROM_DATABASE=Mass Storage (UISDMC10S & UISDMC11S) + +usb:v07CCp0207* + ID_MODEL_FROM_DATABASE=Mass Storage (UPIDMA) + +usb:v07CCp0208* + ID_MODEL_FROM_DATABASE=Mass Storage (UCFC II) + +usb:v07CCp0210* + ID_MODEL_FROM_DATABASE=Mass Storage (UPIXXA) + +usb:v07CCp0213* + ID_MODEL_FROM_DATABASE=Mass Storage (UPIDA) + +usb:v07CCp0214* + ID_MODEL_FROM_DATABASE=Mass Storage (UPIMA) + +usb:v07CCp0215* + ID_MODEL_FROM_DATABASE=Mass Storage (UPISA) + +usb:v07CCp0217* + ID_MODEL_FROM_DATABASE=Mass Storage (UPISDMA) + +usb:v07CCp0223* + ID_MODEL_FROM_DATABASE=Mass Storage (UCIDA) + +usb:v07CCp0224* + ID_MODEL_FROM_DATABASE=Mass Storage (UCIMA) + +usb:v07CCp0225* + ID_MODEL_FROM_DATABASE=Mass Storage (UIS7S) + +usb:v07CCp0227* + ID_MODEL_FROM_DATABASE=Mass Storage (UCIDMA) + +usb:v07CCp0234* + ID_MODEL_FROM_DATABASE=Mass Storage (UIM7S) + +usb:v07CCp0235* + ID_MODEL_FROM_DATABASE=Mass Storage (UIS4S-S) + +usb:v07CCp0237* + ID_MODEL_FROM_DATABASE=Velper (UISDMC4S) + +usb:v07CCp0300* + ID_MODEL_FROM_DATABASE=6-in-1 Card Reader + +usb:v07CCp0301* + ID_MODEL_FROM_DATABASE=6-in-1 Card Reader + +usb:v07CCp0303* + ID_MODEL_FROM_DATABASE=Mass Storage (UID10W) + +usb:v07CCp0304* + ID_MODEL_FROM_DATABASE=Mass Storage (UIM10W) + +usb:v07CCp0305* + ID_MODEL_FROM_DATABASE=Mass Storage (UIS10W) + +usb:v07CCp0308* + ID_MODEL_FROM_DATABASE=Mass Storage (UIC10W) + +usb:v07CCp0309* + ID_MODEL_FROM_DATABASE=Mass Storage (UISC3W) + +usb:v07CCp0310* + ID_MODEL_FROM_DATABASE=Mass Storage (UISDMA2W) + +usb:v07CCp0311* + ID_MODEL_FROM_DATABASE=Mass Storage (UISDMC14W) + +usb:v07CCp0320* + ID_MODEL_FROM_DATABASE=Mass Storage (UISDMC4W) + +usb:v07CCp0321* + ID_MODEL_FROM_DATABASE=Mass Storage (UISDMC37W) + +usb:v07CCp0330* + ID_MODEL_FROM_DATABASE=WINTERREADER Reader + +usb:v07CCp0350* + ID_MODEL_FROM_DATABASE=9-in-1 Card Reader + +usb:v07CCp0500* + ID_MODEL_FROM_DATABASE=Mass Storage + +usb:v07CCp0501* + ID_MODEL_FROM_DATABASE=Mass Storage + +usb:v07CD* + ID_VENDOR_FROM_DATABASE=Elektor + +usb:v07CDp0001* + ID_MODEL_FROM_DATABASE=USBuart Serial Port + +usb:v07CF* + ID_VENDOR_FROM_DATABASE=Casio Computer Co., Ltd + +usb:v07CFp1001* + ID_MODEL_FROM_DATABASE=QV-8000SX/5700/3000EX Digicam; Exilim EX-M20 + +usb:v07CFp1003* + ID_MODEL_FROM_DATABASE=Exilim EX-S500 + +usb:v07CFp1004* + ID_MODEL_FROM_DATABASE=Exilim EX-Z120 + +usb:v07CFp1011* + ID_MODEL_FROM_DATABASE=USB-CASIO PC CAMERA + +usb:v07CFp1116* + ID_MODEL_FROM_DATABASE=EXILIM EX-Z19 + +usb:v07CFp1125* + ID_MODEL_FROM_DATABASE=Exilim EX-H10 Digital Camera (mass storage mode) + +usb:v07CFp1133* + ID_MODEL_FROM_DATABASE=Exilim EX-Z350 Digital Camera (mass storage mode) + +usb:v07CFp1225* + ID_MODEL_FROM_DATABASE=Exilim EX-H10 Digital Camera (PictBridge mode) + +usb:v07CFp1233* + ID_MODEL_FROM_DATABASE=Exilim EX-Z350 Digital Camera (PictBridge mode) + +usb:v07CFp2002* + ID_MODEL_FROM_DATABASE=E-125 Cassiopeia Pocket PC + +usb:v07CFp3801* + ID_MODEL_FROM_DATABASE=WMP-1 MP3-Watch + +usb:v07CFp4001* + ID_MODEL_FROM_DATABASE=Label Printer KL-P1000 + +usb:v07CFp4007* + ID_MODEL_FROM_DATABASE=CW50 Device + +usb:v07CFp4104* + ID_MODEL_FROM_DATABASE=Cw75 Device + +usb:v07CFp4107* + ID_MODEL_FROM_DATABASE=CW-L300 Device + +usb:v07CFp4500* + ID_MODEL_FROM_DATABASE=LV-20 Digital Camera + +usb:v07CFp6801* + ID_MODEL_FROM_DATABASE=PL-40R + +usb:v07CFp6802* + ID_MODEL_FROM_DATABASE=MIDI Keyboard + +usb:v07D0* + ID_VENDOR_FROM_DATABASE=Dazzle + +usb:v07D0p0001* + ID_MODEL_FROM_DATABASE=Digital Video Creator I + +usb:v07D0p0002* + ID_MODEL_FROM_DATABASE=Global Village VideoFX Grabber + +usb:v07D0p0003* + ID_MODEL_FROM_DATABASE=Fusion Model DVC-50 Rev 1 (NTSC) + +usb:v07D0p0004* + ID_MODEL_FROM_DATABASE=DVC-800 (PAL) Grabber + +usb:v07D0p0005* + ID_MODEL_FROM_DATABASE=Fusion Video and Audio Ports + +usb:v07D0p0006* + ID_MODEL_FROM_DATABASE=DVC 150 Loader Device + +usb:v07D0p0007* + ID_MODEL_FROM_DATABASE=DVC 150 + +usb:v07D0p0327* + ID_MODEL_FROM_DATABASE=Fusion Digital Media Reader + +usb:v07D0p1001* + ID_MODEL_FROM_DATABASE=DM-FLEX DFU Adapter + +usb:v07D0p1002* + ID_MODEL_FROM_DATABASE=DMHS2 DFU Adapter + +usb:v07D0p1102* + ID_MODEL_FROM_DATABASE=CF Reader/Writer + +usb:v07D0p1103* + ID_MODEL_FROM_DATABASE=SD Reader/Writer + +usb:v07D0p1104* + ID_MODEL_FROM_DATABASE=SM Reader/Writer + +usb:v07D0p1105* + ID_MODEL_FROM_DATABASE=MS Reader/Writer + +usb:v07D0p1106* + ID_MODEL_FROM_DATABASE=xD/SM Reader/Writer + +usb:v07D0p1202* + ID_MODEL_FROM_DATABASE=MultiSlot Reader/Writer + +usb:v07D0p2000* + ID_MODEL_FROM_DATABASE=FX2 DFU Adapter + +usb:v07D0p2001* + ID_MODEL_FROM_DATABASE=eUSB CompactFlash Reader + +usb:v07D0p4100* + ID_MODEL_FROM_DATABASE=Kingsun SF-620 Infrared Adapter + +usb:v07D0p4101* + ID_MODEL_FROM_DATABASE=Connectivity Cable (CA-42 clone) + +usb:v07D0p4959* + ID_MODEL_FROM_DATABASE=Kingsun KS-959 Infrared Adapter + +usb:v07D1* + ID_VENDOR_FROM_DATABASE=D-Link System + +usb:v07D1p13EC* + ID_MODEL_FROM_DATABASE=VvBus for Helium 2xx + +usb:v07D1p13ED* + ID_MODEL_FROM_DATABASE=VvBus for Helium 2xx + +usb:v07D1p13F1* + ID_MODEL_FROM_DATABASE=DSL-302G Modem + +usb:v07D1p13F2* + ID_MODEL_FROM_DATABASE=DSL-502G Router + +usb:v07D1p3300* + ID_MODEL_FROM_DATABASE=DWA-130 802.11n Wireless N Adapter(rev.E) [Realtek RTL8191SU] + +usb:v07D1p3302* + ID_MODEL_FROM_DATABASE=DWA-130 802.11n Wireless N Adapter(rev.C2) [Realtek RTL8191SU] + +usb:v07D1p3303* + ID_MODEL_FROM_DATABASE=DWA-131 802.11n Wireless N Nano Adapter(rev.A1) [Realtek RTL8192SU] + +usb:v07D1p3304* + ID_MODEL_FROM_DATABASE=FR-300USB 802.11bgn Wireless Adapter + +usb:v07D1p3A07* + ID_MODEL_FROM_DATABASE=WUA-2340 RangeBooster G Adapter(rev.A) [Atheros AR5523] + +usb:v07D1p3A08* + ID_MODEL_FROM_DATABASE=WUA-2340 RangeBooster G Adapter(rev.A) (no firmware) [Atheros AR5523] + +usb:v07D1p3A09* + ID_MODEL_FROM_DATABASE=DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.A2) [Atheros AR9170+AR9104] + +usb:v07D1p3A0D* + ID_MODEL_FROM_DATABASE=DWA-120 802.11g Wireless 108G Adapter [Atheros AR5523] + +usb:v07D1p3A0F* + ID_MODEL_FROM_DATABASE=DWA-130 802.11n Wireless N Adapter(rev.D) [Atheros AR9170+AR9102] + +usb:v07D1p3A10* + ID_MODEL_FROM_DATABASE=DWA-126 802.11n Wireless Adapter [Atheros AR9271] + +usb:v07D1p3B01* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter(rev.D) [Marvell 88W8338+88W8010] + +usb:v07D1p3B10* + ID_MODEL_FROM_DATABASE=DWA-142 RangeBooster N Adapter [Marvell 88W8362+88W8060] + +usb:v07D1p3B11* + ID_MODEL_FROM_DATABASE=DWA-130 802.11n Wireless N Adapter(rev.A1) [Marvell 88W8362+88W8060] + +usb:v07D1p3C03* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter(rev.C1) [Ralink RT2571W] + +usb:v07D1p3C04* + ID_MODEL_FROM_DATABASE=WUA-1340 + +usb:v07D1p3C05* + ID_MODEL_FROM_DATABASE=EH103 Wireless G Adapter + +usb:v07D1p3C06* + ID_MODEL_FROM_DATABASE=DWA-111 802.11bg Wireless Adapter [Ralink RT2571W] + +usb:v07D1p3C07* + ID_MODEL_FROM_DATABASE=DWA-110 Wireless G Adapter(rev.A1) [Ralink RT2571W] + +usb:v07D1p3C09* + ID_MODEL_FROM_DATABASE=DWA-140 RangeBooster N Adapter(rev.B1) [Ralink RT2870] + +usb:v07D1p3C0A* + ID_MODEL_FROM_DATABASE=DWA-140 RangeBooster N Adapter(rev.B2) [Ralink RT3072] + +usb:v07D1p3C0B* + ID_MODEL_FROM_DATABASE=DWA-110 Wireless G Adapter(rev.B) [Ralink RT2870] + +usb:v07D1p3C0D* + ID_MODEL_FROM_DATABASE=DWA-125 Wireless N 150 Adapter(rev.A1) [Ralink RT3070] + +usb:v07D1p3C0E* + ID_MODEL_FROM_DATABASE=WUA-2340 RangeBooster G Adapter(rev.B) [Ralink RT2070] + +usb:v07D1p3C0F* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter(rev.E1) [Ralink RT2070] + +usb:v07D1p3C10* + ID_MODEL_FROM_DATABASE=DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.A1) [Atheros AR9170+AR9104] + +usb:v07D1p3C11* + ID_MODEL_FROM_DATABASE=DWA-160 Xtreme N Dual Band USB Adapter(rev.B) [Ralink RT2870] + +usb:v07D1p3C13* + ID_MODEL_FROM_DATABASE=DWA-130 802.11n Wireless N Adapter(rev.B) [Ralink RT2870] + +usb:v07D1p3C15* + ID_MODEL_FROM_DATABASE=DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT2870] + +usb:v07D1p3C16* + ID_MODEL_FROM_DATABASE=DWA-125 Wireless N 150 Adapter(rev.A2) [Ralink RT3070] + +usb:v07D1p3E02* + ID_MODEL_FROM_DATABASE=DWM-156 3.75G HSUPA Adapter + +usb:v07D1p5100* + ID_MODEL_FROM_DATABASE=Remote NDIS Device + +usb:v07D1pA800* + ID_MODEL_FROM_DATABASE=DWM-152 3.75G HSUPA Adapter + +usb:v07D1pF101* + ID_MODEL_FROM_DATABASE=DBT-122 Bluetooth + +usb:v07D1pFC01* + ID_MODEL_FROM_DATABASE=DBT-120 Bluetooth Adapter + +usb:v07D2* + ID_VENDOR_FROM_DATABASE=Aptio Products, Inc. + +usb:v07D3* + ID_VENDOR_FROM_DATABASE=Cyberdata Corp. + +usb:v07D5* + ID_VENDOR_FROM_DATABASE=Radiant Systems + +usb:v07D7* + ID_VENDOR_FROM_DATABASE=GCC Technologies, Inc. + +usb:v07DA* + ID_VENDOR_FROM_DATABASE=Arasan Chip Systems + +usb:v07DE* + ID_VENDOR_FROM_DATABASE=Diamond Multimedia + +usb:v07DEp2820* + ID_MODEL_FROM_DATABASE=VC500 Video Capture Dongle + +usb:v07DF* + ID_VENDOR_FROM_DATABASE=David Electronics Co., Ltd + +usb:v07E1* + ID_VENDOR_FROM_DATABASE=Ambient Technologies, Inc. + +usb:v07E1p5201* + ID_MODEL_FROM_DATABASE=V.90 Modem + +usb:v07E2* + ID_VENDOR_FROM_DATABASE=Elmeg GmbH & Co., Ltd + +usb:v07E3* + ID_VENDOR_FROM_DATABASE=Planex Communications, Inc. + +usb:v07E4* + ID_VENDOR_FROM_DATABASE=Movado Enterprise Co., Ltd + +usb:v07E4p0967* + ID_MODEL_FROM_DATABASE=SCard R/W CSR-145 + +usb:v07E4p0968* + ID_MODEL_FROM_DATABASE=SCard R/W CSR-145 + +usb:v07E5* + ID_VENDOR_FROM_DATABASE=QPS, Inc. + +usb:v07E5p05C2* + ID_MODEL_FROM_DATABASE=IDE-to-USB2.0 PCA + +usb:v07E5p5C01* + ID_MODEL_FROM_DATABASE=Que! CDRW + +usb:v07E6* + ID_VENDOR_FROM_DATABASE=Allied Cable Corp. + +usb:v07E7* + ID_VENDOR_FROM_DATABASE=Mirvo Toys, Inc. + +usb:v07E8* + ID_VENDOR_FROM_DATABASE=Labsystems + +usb:v07EA* + ID_VENDOR_FROM_DATABASE=Iwatsu Electric Co., Ltd + +usb:v07EB* + ID_VENDOR_FROM_DATABASE=Double-H Technology Co., Ltd + +usb:v07EC* + ID_VENDOR_FROM_DATABASE=Taiyo Electric Wire & Cable Co., Ltd + +usb:v07EE* + ID_VENDOR_FROM_DATABASE=Torex Retail (formerly Logware) + +usb:v07EEp0002* + ID_MODEL_FROM_DATABASE=Cash Drawer I/F + +usb:v07EF* + ID_VENDOR_FROM_DATABASE=STSN + +usb:v07EFp0001* + ID_MODEL_FROM_DATABASE=Internet Access Device + +usb:v07F2* + ID_VENDOR_FROM_DATABASE=Microcomputer Applications, Inc. + +usb:v07F2p0001* + ID_MODEL_FROM_DATABASE=KEYLOK II + +usb:v07F6* + ID_VENDOR_FROM_DATABASE=Circuit Assembly Corp. + +usb:v07F7* + ID_VENDOR_FROM_DATABASE=Century Corp. + +usb:v07F7p0005* + ID_MODEL_FROM_DATABASE=ScanLogic/Century Corporation uATA + +usb:v07F7p011E* + ID_MODEL_FROM_DATABASE=Century USB Disk Enclosure + +usb:v07F9* + ID_VENDOR_FROM_DATABASE=Dotop Technology, Inc. + +usb:v07FA* + ID_VENDOR_FROM_DATABASE=DrayTek Corp. + +usb:v07FAp0778* + ID_MODEL_FROM_DATABASE=miniVigor 128 ISDN TA + +usb:v07FAp1012* + ID_MODEL_FROM_DATABASE=BeWAN ADSL USB ST (grey) + +usb:v07FAp1196* + ID_MODEL_FROM_DATABASE=BWIFI-USB54AR 802.11bg + +usb:v07FApA904* + ID_MODEL_FROM_DATABASE=BeWAN ADSL + +usb:v07FApA905* + ID_MODEL_FROM_DATABASE=BeWAN ADSL ST + +usb:v07FD* + ID_VENDOR_FROM_DATABASE=Mark of the Unicorn + +usb:v07FDp0000* + ID_MODEL_FROM_DATABASE=FastLane MIDI Interface + +usb:v07FDp0001* + ID_MODEL_FROM_DATABASE=FastLane Quad MIDI Interface + +usb:v07FDp0002* + ID_MODEL_FROM_DATABASE=MOTU Audio for 64 bit + +usb:v07FF* + ID_VENDOR_FROM_DATABASE=Unknown + +usb:v07FFp00FF* + ID_MODEL_FROM_DATABASE=Portable Hard Drive + +usb:v0801* + ID_VENDOR_FROM_DATABASE=MagTek + +usb:v0801p0001* + ID_MODEL_FROM_DATABASE=Mini Swipe Reader (Keyboard Emulation) + +usb:v0801p0002* + ID_MODEL_FROM_DATABASE=Mini Swipe Reader + +usb:v0801p0003* + ID_MODEL_FROM_DATABASE=Magstripe Insert Reader + +usb:v0802* + ID_VENDOR_FROM_DATABASE=Mako Technologies, LLC + +usb:v0803* + ID_VENDOR_FROM_DATABASE=Zoom Telephonics, Inc. + +usb:v0803p1300* + ID_MODEL_FROM_DATABASE=V92 Faxmodem + +usb:v0803p4310* + ID_MODEL_FROM_DATABASE=4410a Wireless-G Adapter [Intersil ISL3887] + +usb:v0803p4410* + ID_MODEL_FROM_DATABASE=4410b Wireless-G Adapter [ZyDAS ZD1211B] + +usb:v0803p5241* + ID_MODEL_FROM_DATABASE=Cable Modem + +usb:v0803p5551* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v0803p9700* + ID_MODEL_FROM_DATABASE=2986L FaxModem + +usb:v0803p9800* + ID_MODEL_FROM_DATABASE=Cable Modem + +usb:v0803pA312* + ID_MODEL_FROM_DATABASE=Wireless-G + +usb:v0809* + ID_VENDOR_FROM_DATABASE=Genicom Technology, Inc. + +usb:v080A* + ID_VENDOR_FROM_DATABASE=Evermuch Technology Co., Ltd + +usb:v080B* + ID_VENDOR_FROM_DATABASE=Cross Match Technologies + +usb:v080Bp0002* + ID_MODEL_FROM_DATABASE=Fingerprint Scanner (After ReNumeration) + +usb:v080Bp0010* + ID_MODEL_FROM_DATABASE=300LC Series Fingerprint Scanner (Before ReNumeration) + +usb:v080C* + ID_VENDOR_FROM_DATABASE=Datalogic S.p.A. + +usb:v080Cp0300* + ID_MODEL_FROM_DATABASE=Gryphon D120 Barcode Scanner + +usb:v080Cp0400* + ID_MODEL_FROM_DATABASE=Gryphon D120 Barcode Scanner + +usb:v080Cp0500* + ID_MODEL_FROM_DATABASE=Gryphon D120 Barcode Scanner + +usb:v080Cp0600* + ID_MODEL_FROM_DATABASE=Gryphon M100 Barcode Scanner + +usb:v080D* + ID_VENDOR_FROM_DATABASE=Teco Image Systems Co., Ltd + +usb:v080Dp0102* + ID_MODEL_FROM_DATABASE=Hercules Scan@home 48 + +usb:v080Dp0104* + ID_MODEL_FROM_DATABASE=3.2Slim + +usb:v080Dp0110* + ID_MODEL_FROM_DATABASE=UMAX AstraSlim 1200 Scanner + +usb:v0810* + ID_VENDOR_FROM_DATABASE=Personal Communication Systems, Inc. + +usb:v0810p0001* + ID_MODEL_FROM_DATABASE=Dual PSX Adaptor + +usb:v0810p0002* + ID_MODEL_FROM_DATABASE=Dual PCS Adaptor + +usb:v0810p0003* + ID_MODEL_FROM_DATABASE=PlayStation Gamepad + +usb:v0813* + ID_VENDOR_FROM_DATABASE=Mattel, Inc. + +usb:v0813p0001* + ID_MODEL_FROM_DATABASE=Intel Play QX3 Microscope + +usb:v0813p0002* + ID_MODEL_FROM_DATABASE=Dual Mode Camera Plus + +usb:v0819* + ID_VENDOR_FROM_DATABASE=eLicenser + +usb:v0819p0101* + ID_MODEL_FROM_DATABASE=License Management and Copy Protection + +usb:v081A* + ID_VENDOR_FROM_DATABASE=MG Logic + +usb:v081Ap1000* + ID_MODEL_FROM_DATABASE=Duo Pen Tablet + +usb:v081B* + ID_VENDOR_FROM_DATABASE=Indigita Corp. + +usb:v081Bp0600* + ID_MODEL_FROM_DATABASE=Storage Adapter + +usb:v081Bp0601* + ID_MODEL_FROM_DATABASE=Storage Adapter + +usb:v081C* + ID_VENDOR_FROM_DATABASE=Mipsys + +usb:v081E* + ID_VENDOR_FROM_DATABASE=AlphaSmart, Inc. + +usb:v081EpDF00* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0822* + ID_VENDOR_FROM_DATABASE=Reudo Corp. + +usb:v0822p2001* + ID_MODEL_FROM_DATABASE=IRXpress Infrared Device + +usb:v0825* + ID_VENDOR_FROM_DATABASE=GC Protronics + +usb:v0826* + ID_VENDOR_FROM_DATABASE=Data Transit + +usb:v0827* + ID_VENDOR_FROM_DATABASE=BroadLogic, Inc. + +usb:v0828* + ID_VENDOR_FROM_DATABASE=Sato Corp. + +usb:v0829* + ID_VENDOR_FROM_DATABASE=DirecTV Broadband, Inc. (Telocity) + +usb:v082D* + ID_VENDOR_FROM_DATABASE=Handspring + +usb:v082Dp0100* + ID_MODEL_FROM_DATABASE=Visor + +usb:v082Dp0200* + ID_MODEL_FROM_DATABASE=Treo + +usb:v082Dp0300* + ID_MODEL_FROM_DATABASE=Treo 600 + +usb:v082Dp0400* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v082Dp0500* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v082Dp0600* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830* + ID_VENDOR_FROM_DATABASE=Palm, Inc. + +usb:v0830p0001* + ID_MODEL_FROM_DATABASE=m500 + +usb:v0830p0002* + ID_MODEL_FROM_DATABASE=m505 + +usb:v0830p0003* + ID_MODEL_FROM_DATABASE=m515 + +usb:v0830p0004* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0005* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0006* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0010* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0011* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0012* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0013* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0014* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0020* + ID_MODEL_FROM_DATABASE=i705 + +usb:v0830p0021* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0022* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0023* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0024* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0030* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0031* + ID_MODEL_FROM_DATABASE=Tungsten W + +usb:v0830p0032* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0033* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0034* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0040* + ID_MODEL_FROM_DATABASE=m125 + +usb:v0830p0041* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0042* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0043* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0044* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0050* + ID_MODEL_FROM_DATABASE=m130 + +usb:v0830p0051* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0052* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0053* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0054* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0060* + ID_MODEL_FROM_DATABASE=Tungsten C/E/T/T2/T3 / Zire 71 + +usb:v0830p0061* + ID_MODEL_FROM_DATABASE=Lifedrive / Treo 650/680 / Tunsten E2/T5/TX / Centro / Zire 21/31/72 / Z22 + +usb:v0830p0062* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0063* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0064* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0070* + ID_MODEL_FROM_DATABASE=Zire + +usb:v0830p0071* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0072* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0080* + ID_MODEL_FROM_DATABASE=Serial Adapter [for Palm III] + +usb:v0830p0081* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p0082* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0830p00A0* + ID_MODEL_FROM_DATABASE=Treo 800w + +usb:v0830p0101* + ID_MODEL_FROM_DATABASE=Pre + +usb:v0832* + ID_VENDOR_FROM_DATABASE=Kouwell Electronics Corp. + +usb:v0832p5850* + ID_MODEL_FROM_DATABASE=Cable + +usb:v0833* + ID_VENDOR_FROM_DATABASE=Sourcenext Corp. + +usb:v0833p012E* + ID_MODEL_FROM_DATABASE=KeikaiDenwa 8 with charger + +usb:v0833p039F* + ID_MODEL_FROM_DATABASE=KeikaiDenwa 8 + +usb:v0835* + ID_VENDOR_FROM_DATABASE=Action Star Enterprise Co., Ltd + +usb:v0836* + ID_VENDOR_FROM_DATABASE=TrekStor + +usb:v0836p2836* + ID_MODEL_FROM_DATABASE=i.Beat mood + +usb:v0839* + ID_VENDOR_FROM_DATABASE=Samsung Techwin Co., Ltd + +usb:v0839p0005* + ID_MODEL_FROM_DATABASE=Digimax Camera + +usb:v0839p0008* + ID_MODEL_FROM_DATABASE=Digimax 230 Camera + +usb:v0839p0009* + ID_MODEL_FROM_DATABASE=Digimax 340 + +usb:v0839p000A* + ID_MODEL_FROM_DATABASE=Digimax 410 + +usb:v0839p000E* + ID_MODEL_FROM_DATABASE=Digimax 360 + +usb:v0839p0010* + ID_MODEL_FROM_DATABASE=Digimax 300 + +usb:v0839p1003* + ID_MODEL_FROM_DATABASE=Digimax 210SE + +usb:v0839p1005* + ID_MODEL_FROM_DATABASE=Digimax 220 + +usb:v0839p1009* + ID_MODEL_FROM_DATABASE=Digimax V4 + +usb:v0839p1012* + ID_MODEL_FROM_DATABASE=6500 Document Camera + +usb:v0839p1058* + ID_MODEL_FROM_DATABASE=S730 Camera + +usb:v0839p1064* + ID_MODEL_FROM_DATABASE=Digimax D830 Camera + +usb:v0839p1542* + ID_MODEL_FROM_DATABASE=Digimax 50 Duo + +usb:v0839p3000* + ID_MODEL_FROM_DATABASE=Digimax 35 MP3 + +usb:v083A* + ID_VENDOR_FROM_DATABASE=Accton Technology Corp. + +usb:v083Ap1046* + ID_MODEL_FROM_DATABASE=10/100 Ethernet [pegasus] + +usb:v083Ap1060* + ID_MODEL_FROM_DATABASE=HomeLine Adapter + +usb:v083Ap1F4D* + ID_MODEL_FROM_DATABASE=SMC8013WG Broadband Remote NDIS Device + +usb:v083Ap3046* + ID_MODEL_FROM_DATABASE=10/100 Series Adapter + +usb:v083Ap3060* + ID_MODEL_FROM_DATABASE=1/10/100 Adapter + +usb:v083Ap3501* + ID_MODEL_FROM_DATABASE=2664W + +usb:v083Ap3502* + ID_MODEL_FROM_DATABASE=WN3501D Wireless Adapter + +usb:v083Ap3503* + ID_MODEL_FROM_DATABASE=T-Sinus 111 Wireless Adapter + +usb:v083Ap4501* + ID_MODEL_FROM_DATABASE=T-Sinus 154data + +usb:v083Ap4502* + ID_MODEL_FROM_DATABASE=Siemens S30853-S1016-R107 802.11g Wireless Adapter [Intersil ISL3886] + +usb:v083Ap4505* + ID_MODEL_FROM_DATABASE=SMCWUSB-G 802.11bg + +usb:v083Ap4507* + ID_MODEL_FROM_DATABASE=SMCWUSBT-G2 802.11g Wireless Adapter [Atheros AR5523] + +usb:v083Ap4521* + ID_MODEL_FROM_DATABASE=Siemens S30863-S1016-R107-2 802.11g Wireless Adapter [Intersil ISL3887] + +usb:v083Ap5046* + ID_MODEL_FROM_DATABASE=SpeedStream 10/100 Ethernet [pegasus] + +usb:v083Ap5501* + ID_MODEL_FROM_DATABASE=Wireless Adapter 11g + +usb:v083Ap6500* + ID_MODEL_FROM_DATABASE=Cable Modem + +usb:v083Ap6618* + ID_MODEL_FROM_DATABASE=802.11n Wireless Adapter + +usb:v083Ap7511* + ID_MODEL_FROM_DATABASE=Arcadyan 802.11N Wireless Adapter + +usb:v083Ap7512* + ID_MODEL_FROM_DATABASE=Arcadyan 802.11N Wireless Adapter + +usb:v083Ap7522* + ID_MODEL_FROM_DATABASE=Arcadyan 802.11N Wireless Adapter + +usb:v083Ap8522* + ID_MODEL_FROM_DATABASE=Arcadyan 802.11N Wireless Adapter + +usb:v083Ap8541* + ID_MODEL_FROM_DATABASE=WN4501F 802.11g Wireless Adapter [Intersil ISL3887] + +usb:v083ApA512* + ID_MODEL_FROM_DATABASE=Arcadyan 802.11N Wireless Adapter + +usb:v083ApA618* + ID_MODEL_FROM_DATABASE=SMCWUSBS-N EZ Connect N Draft 11n Wireless Adapter [Ralink RT2870] + +usb:v083ApA701* + ID_MODEL_FROM_DATABASE=SMCWUSBS-N3 EZ Connect N Wireless Adapter [Ralink RT3070] + +usb:v083ApB004* + ID_MODEL_FROM_DATABASE=CPWUE001 USB/Ethernet Adapter + +usb:v083ApB522* + ID_MODEL_FROM_DATABASE=SMCWUSBS-N2 EZ Connect N Wireless Adapter [Ralink RT2870] + +usb:v083ApBB01* + ID_MODEL_FROM_DATABASE=BlueExpert Bluetooth Device + +usb:v083ApC003* + ID_MODEL_FROM_DATABASE=802.11b Wireless Adapter + +usb:v083ApC501* + ID_MODEL_FROM_DATABASE=Zoom 4410 Wireless-G [Intersil ISL3887] + +usb:v083ApC561* + ID_MODEL_FROM_DATABASE=802.11a/g Wireless Adapter + +usb:v083ApD522* + ID_MODEL_FROM_DATABASE=Speedport W 102 Stick IEEE 802.11n USB 2.0 Adapter + +usb:v083ApE501* + ID_MODEL_FROM_DATABASE=ZD1211B + +usb:v083ApE503* + ID_MODEL_FROM_DATABASE=Arcadyan WN4501 802.11b/g + +usb:v083ApE506* + ID_MODEL_FROM_DATABASE=WUS-201 802.11bg + +usb:v083ApF501* + ID_MODEL_FROM_DATABASE=802.11g Wireless Adapter + +usb:v083ApF502* + ID_MODEL_FROM_DATABASE=802.11g Wireless Adapter + +usb:v083ApF522* + ID_MODEL_FROM_DATABASE=Arcadyan WN7512 802.11n + +usb:v083F* + ID_VENDOR_FROM_DATABASE=Global Village + +usb:v083FpB100* + ID_MODEL_FROM_DATABASE=TelePort V.90 Fax/Modem + +usb:v0840* + ID_VENDOR_FROM_DATABASE=Argosy Research, Inc. + +usb:v0840p0060* + ID_MODEL_FROM_DATABASE=Storage Adapter Bridge Module + +usb:v0841* + ID_VENDOR_FROM_DATABASE=Rioport.com, Inc. + +usb:v0841p0001* + ID_MODEL_FROM_DATABASE=Rio 500 + +usb:v0844* + ID_VENDOR_FROM_DATABASE=Welland Industrial Co., Ltd + +usb:v0846* + ID_VENDOR_FROM_DATABASE=NetGear, Inc. + +usb:v0846p1001* + ID_MODEL_FROM_DATABASE=EA101 10 Mbps 10BASE-T Ethernet [Kawasaki LSI KL5KLUSB101B] + +usb:v0846p1002* + ID_MODEL_FROM_DATABASE=Ethernet + +usb:v0846p1020* + ID_MODEL_FROM_DATABASE=FA101 Fast Ethernet USB 1.1 + +usb:v0846p1040* + ID_MODEL_FROM_DATABASE=FA120 Fast Ethernet USB 2.0 [Asix AX88172 / AX8817x] + +usb:v0846p4110* + ID_MODEL_FROM_DATABASE=MA111(v1) 802.11b Wireless [Intersil Prism 3.0] + +usb:v0846p4200* + ID_MODEL_FROM_DATABASE=WG121(v1) 54 Mbps Wireless [Intersil ISL3886] + +usb:v0846p4210* + ID_MODEL_FROM_DATABASE=WG121(v2) 54 Mbps Wireless [Intersil ISL3886] + +usb:v0846p4220* + ID_MODEL_FROM_DATABASE=WG111(v1) 54 Mbps Wireless [Intersil ISL3886] + +usb:v0846p4230* + ID_MODEL_FROM_DATABASE=MA111(v2) 802.11b Wireless [SIS SIS 162] + +usb:v0846p4240* + ID_MODEL_FROM_DATABASE=WG111(v1) rev 2 54 Mbps Wireless [Intersil ISL3887] + +usb:v0846p4260* + ID_MODEL_FROM_DATABASE=WG111v3 54 Mbps Wireless [realtek RTL8187B] + +usb:v0846p4300* + ID_MODEL_FROM_DATABASE=WG111U Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX] + +usb:v0846p4301* + ID_MODEL_FROM_DATABASE=WG111U (no firmware) Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX] + +usb:v0846p5F00* + ID_MODEL_FROM_DATABASE=WPN111 802.11g Wireless Adapter [Atheros AR5523] + +usb:v0846p6A00* + ID_MODEL_FROM_DATABASE=WG111v2 54 Mbps Wireless [RealTek RTL8187L] + +usb:v0846p7100* + ID_MODEL_FROM_DATABASE=WN121T RangeMax Next Wireless-N [Marvell TopDog] + +usb:v0846p9000* + ID_MODEL_FROM_DATABASE=WN111(v1) RangeMax Next Wireless [Marvell 88W8362+88W8060] + +usb:v0846p9001* + ID_MODEL_FROM_DATABASE=WN111(v2) RangeMax Next Wireless [Atheros AR9170+AR9101] + +usb:v0846p9010* + ID_MODEL_FROM_DATABASE=WNDA3100v1 802.11abgn [Atheros AR9170+AR9104] + +usb:v0846p9011* + ID_MODEL_FROM_DATABASE=WNDA3100v2 802.11abgn [Broadcom BCM4323] + +usb:v0846p9012* + ID_MODEL_FROM_DATABASE=WNDA4100 802.11abgn 3x3:3 [Ralink RT3573] + +usb:v0846p9018* + ID_MODEL_FROM_DATABASE=WNDA3200 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] + +usb:v0846p9020* + ID_MODEL_FROM_DATABASE=WNA3100(v1) Wireless-N 300 [Broadcom BCM43231] + +usb:v0846p9030* + ID_MODEL_FROM_DATABASE=WNA1100 Wireless-N 150 [Atheros AR9271] + +usb:v0846p9040* + ID_MODEL_FROM_DATABASE=WNA1000 Wireless-N 150 [Atheros AR9170+AR9101] + +usb:v0846p9041* + ID_MODEL_FROM_DATABASE=WNA1000M 802.11bgn [Realtek RTL8188CUS] + +usb:v0846pA001* + ID_MODEL_FROM_DATABASE=PA101 10 Mbps HPNA Home Phoneline RJ-1 + +usb:v084D* + ID_VENDOR_FROM_DATABASE=Minton Optic Industry Co., Inc. + +usb:v084Dp0001* + ID_MODEL_FROM_DATABASE=Jenoptik JD800i + +usb:v084Dp0003* + ID_MODEL_FROM_DATABASE=S-Cam F5/D-Link DSC-350 Digital Camera + +usb:v084Dp0011* + ID_MODEL_FROM_DATABASE=Argus DC3500 Digital Camera + +usb:v084Dp0014* + ID_MODEL_FROM_DATABASE=Praktica DC 32 + +usb:v084Dp0019* + ID_MODEL_FROM_DATABASE=Praktica DPix3000 + +usb:v084Dp0025* + ID_MODEL_FROM_DATABASE=Praktica DC 60 + +usb:v084Dp1001* + ID_MODEL_FROM_DATABASE=ScanHex SX-35d + +usb:v084E* + ID_VENDOR_FROM_DATABASE=KB Gear + +usb:v084Ep0001* + ID_MODEL_FROM_DATABASE=JamCam Camera + +usb:v084Ep1001* + ID_MODEL_FROM_DATABASE=Jam Studio Tablet + +usb:v084Ep1002* + ID_MODEL_FROM_DATABASE=Pablo Tablet + +usb:v084F* + ID_VENDOR_FROM_DATABASE=Empeg + +usb:v084Fp0001* + ID_MODEL_FROM_DATABASE=Empeg-Car Mark I/II Player + +usb:v0850* + ID_VENDOR_FROM_DATABASE=Fast Point Technologies, Inc. + +usb:v0851* + ID_VENDOR_FROM_DATABASE=Macronix International Co., Ltd + +usb:v0851p1542* + ID_MODEL_FROM_DATABASE=SiPix Blink + +usb:v0851p1543* + ID_MODEL_FROM_DATABASE=Maxell WS30 Slim Digital Camera, or Pandigital PI8004W01 digital photo frame + +usb:v0851pA168* + ID_MODEL_FROM_DATABASE=MXIC + +usb:v0852* + ID_VENDOR_FROM_DATABASE=CSEM + +usb:v0853* + ID_VENDOR_FROM_DATABASE=Topre Corporation + +usb:v0853p0100* + ID_MODEL_FROM_DATABASE=HHKB Professional + +usb:v0854* + ID_VENDOR_FROM_DATABASE=ActiveWire, Inc. + +usb:v0854p0100* + ID_MODEL_FROM_DATABASE=I/O Board + +usb:v0854p0101* + ID_MODEL_FROM_DATABASE=I/O Board, rev1 + +usb:v0856* + ID_VENDOR_FROM_DATABASE=B&B Electronics + +usb:v0856pAC01* + ID_MODEL_FROM_DATABASE=uLinks USOTL4 RS422/485 Adapter + +usb:v0858* + ID_VENDOR_FROM_DATABASE=Hitachi Maxell, Ltd + +usb:v0858p3102* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0858pFFFF* + ID_MODEL_FROM_DATABASE=Maxell module with BlueCore in DFU mode + +usb:v0859* + ID_VENDOR_FROM_DATABASE=Minolta Systems Laboratory, Inc. + +usb:v085A* + ID_VENDOR_FROM_DATABASE=Xircom + +usb:v085Ap0001* + ID_MODEL_FROM_DATABASE=Portstation Dual Serial Port + +usb:v085Ap0003* + ID_MODEL_FROM_DATABASE=Portstation Paraller Port + +usb:v085Ap0008* + ID_MODEL_FROM_DATABASE=Ethernet + +usb:v085Ap0009* + ID_MODEL_FROM_DATABASE=Ethernet + +usb:v085Ap000B* + ID_MODEL_FROM_DATABASE=Portstation Dual PS/2 Port + +usb:v085Ap0021* + ID_MODEL_FROM_DATABASE=1 port to Serial Converter + +usb:v085Ap0022* + ID_MODEL_FROM_DATABASE=Parallel Port + +usb:v085Ap0023* + ID_MODEL_FROM_DATABASE=2 port to Serial Converter + +usb:v085Ap0024* + ID_MODEL_FROM_DATABASE=Parallel Port + +usb:v085Ap0027* + ID_MODEL_FROM_DATABASE=1 port to Serial Converter + +usb:v085Ap0028* + ID_MODEL_FROM_DATABASE=PortGear to SCSI Converter + +usb:v085Ap0032* + ID_MODEL_FROM_DATABASE=PortStation SCSI Module + +usb:v085Ap003C* + ID_MODEL_FROM_DATABASE=Bluetooth Adapter + +usb:v085Ap0299* + ID_MODEL_FROM_DATABASE=Colorvision, Inc. Monitor Spyder + +usb:v085Ap8021* + ID_MODEL_FROM_DATABASE=1 port to Serial + +usb:v085Ap8023* + ID_MODEL_FROM_DATABASE=2 port to Serial + +usb:v085Ap8027* + ID_MODEL_FROM_DATABASE=PGSDB9 Serial Port + +usb:v085C* + ID_VENDOR_FROM_DATABASE=ColorVision, Inc. + +usb:v085Cp0200* + ID_MODEL_FROM_DATABASE=Monitor Spyder + +usb:v0862* + ID_VENDOR_FROM_DATABASE=Teletrol Systems, Inc. + +usb:v0863* + ID_VENDOR_FROM_DATABASE=Filanet Corp. + +usb:v0864* + ID_VENDOR_FROM_DATABASE=NetGear, Inc. + +usb:v0864p4100* + ID_MODEL_FROM_DATABASE=MA101 802.11b Adapter + +usb:v0864p4102* + ID_MODEL_FROM_DATABASE=MA101 802.11b Adapter + +usb:v0867* + ID_VENDOR_FROM_DATABASE=Data Translation, Inc. + +usb:v0867p9812* + ID_MODEL_FROM_DATABASE=ECON Data acquisition unit + +usb:v0867p9816* + ID_MODEL_FROM_DATABASE=DT9816 ECON data acquisition module + +usb:v0867p9836* + ID_MODEL_FROM_DATABASE=DT9836 data acquisition card + +usb:v086A* + ID_VENDOR_FROM_DATABASE=Emagic Soft- und Hardware GmbH + +usb:v086Ap0001* + ID_MODEL_FROM_DATABASE=Unitor8 + +usb:v086Ap0002* + ID_MODEL_FROM_DATABASE=AMT8 + +usb:v086Ap0003* + ID_MODEL_FROM_DATABASE=MT4 + +usb:v086C* + ID_VENDOR_FROM_DATABASE=DeTeWe - Deutsche Telephonwerke AG & Co. + +usb:v086Cp1001* + ID_MODEL_FROM_DATABASE=Eumex 504PC ISDN TA + +usb:v086Cp1002* + ID_MODEL_FROM_DATABASE=Eumex 504PC (FlashLoad) + +usb:v086Cp1003* + ID_MODEL_FROM_DATABASE=TA33 ISDN TA + +usb:v086Cp1004* + ID_MODEL_FROM_DATABASE=TA33 (FlashLoad) + +usb:v086Cp1005* + ID_MODEL_FROM_DATABASE=Eumex 604PC HomeNet + +usb:v086Cp1006* + ID_MODEL_FROM_DATABASE=Eumex 604PC HomeNet (FlashLoad) + +usb:v086Cp1007* + ID_MODEL_FROM_DATABASE=Eumex 704PC DSL + +usb:v086Cp1008* + ID_MODEL_FROM_DATABASE=Eumex 704PC DSL (FlashLoad) + +usb:v086Cp1009* + ID_MODEL_FROM_DATABASE=Eumex 724PC DSL + +usb:v086Cp100A* + ID_MODEL_FROM_DATABASE=Eumex 724PC DSL (FlashLoad) + +usb:v086Cp100B* + ID_MODEL_FROM_DATABASE=OpenCom 30 + +usb:v086Cp100C* + ID_MODEL_FROM_DATABASE=OpenCom 30 (FlashLoad) + +usb:v086Cp100D* + ID_MODEL_FROM_DATABASE=BeeTel Home 100 + +usb:v086Cp100E* + ID_MODEL_FROM_DATABASE=BeeTel Home 100 (FlashLoad) + +usb:v086Cp1011* + ID_MODEL_FROM_DATABASE=USB2DECT + +usb:v086Cp1012* + ID_MODEL_FROM_DATABASE=USB2DECT (FlashLoad) + +usb:v086Cp1013* + ID_MODEL_FROM_DATABASE=Eumex 704PC LAN + +usb:v086Cp1014* + ID_MODEL_FROM_DATABASE=Eumex 704PC LAN (FlashLoad) + +usb:v086Cp1019* + ID_MODEL_FROM_DATABASE=Eumex 504 SE + +usb:v086Cp101A* + ID_MODEL_FROM_DATABASE=Eumex 504 SE (Flash-Mode) + +usb:v086Cp1021* + ID_MODEL_FROM_DATABASE=OpenCom 40 + +usb:v086Cp1022* + ID_MODEL_FROM_DATABASE=OpenCom 40 (FlashLoad) + +usb:v086Cp1023* + ID_MODEL_FROM_DATABASE=OpenCom 45 + +usb:v086Cp1024* + ID_MODEL_FROM_DATABASE=OpenCom 45 (FlashLoad) + +usb:v086Cp1025* + ID_MODEL_FROM_DATABASE=Sinus 61 data + +usb:v086Cp1029* + ID_MODEL_FROM_DATABASE=dect BOX + +usb:v086Cp102C* + ID_MODEL_FROM_DATABASE=Eumex 604PC HomeNet [FlashLoad] + +usb:v086Cp1030* + ID_MODEL_FROM_DATABASE=Eumex 704PC DSL [FlashLoad] + +usb:v086Cp1032* + ID_MODEL_FROM_DATABASE=OpenCom 40 [FlashLoad] + +usb:v086Cp1033* + ID_MODEL_FROM_DATABASE=OpenCom 30 plus + +usb:v086Cp1034* + ID_MODEL_FROM_DATABASE=OpenCom 30 plus (FlashLoad) + +usb:v086Cp1041* + ID_MODEL_FROM_DATABASE=Eumex 220PC + +usb:v086Cp1042* + ID_MODEL_FROM_DATABASE=Eumex 220PC (FlashMode) + +usb:v086Cp1055* + ID_MODEL_FROM_DATABASE=Eumex 220 Version 2 ISDN TA + +usb:v086Cp1056* + ID_MODEL_FROM_DATABASE=Eumex 220 Version 2 ISDN TA (Flash-Mode) + +usb:v086Cp2000* + ID_MODEL_FROM_DATABASE=OpenCom 1000 + +usb:v086E* + ID_VENDOR_FROM_DATABASE=System TALKS, Inc. + +usb:v086Ep1920* + ID_MODEL_FROM_DATABASE=SGC-X2UL + +usb:v086F* + ID_VENDOR_FROM_DATABASE=MEC IMEX, Inc. + +usb:v0870* + ID_VENDOR_FROM_DATABASE=Metricom + +usb:v0870p0001* + ID_MODEL_FROM_DATABASE=Ricochet GS + +usb:v0871* + ID_VENDOR_FROM_DATABASE=SanDisk, Inc. + +usb:v0871p0001* + ID_MODEL_FROM_DATABASE=SDDR-01 Compact Flash Reader + +usb:v0871p0002* + ID_MODEL_FROM_DATABASE=SDDR-31 Compact Flash Reader + +usb:v0871p0005* + ID_MODEL_FROM_DATABASE=SDDR-05 Compact Flash Reader + +usb:v0873* + ID_VENDOR_FROM_DATABASE=Xpeed, Inc. + +usb:v0874* + ID_VENDOR_FROM_DATABASE=A-Tec Subsystem, Inc. + +usb:v0879* + ID_VENDOR_FROM_DATABASE=Comtrol Corp. + +usb:v087C* + ID_VENDOR_FROM_DATABASE=Adesso/Kbtek America, Inc. + +usb:v087D* + ID_VENDOR_FROM_DATABASE=Jaton Corp. + +usb:v087Dp5704* + ID_MODEL_FROM_DATABASE=Ethernet + +usb:v087E* + ID_VENDOR_FROM_DATABASE=Fujitsu Computer Products of America + +usb:v087F* + ID_VENDOR_FROM_DATABASE=QualCore Logic Inc. + +usb:v0880* + ID_VENDOR_FROM_DATABASE=APT Technologies, Inc. + +usb:v0883* + ID_VENDOR_FROM_DATABASE=Recording Industry Association of America (RIAA) + +usb:v0885* + ID_VENDOR_FROM_DATABASE=Boca Research, Inc. + +usb:v0886* + ID_VENDOR_FROM_DATABASE=XAC Automation Corp. + +usb:v0886p0630* + ID_MODEL_FROM_DATABASE=Intel PC Camera CS630 + +usb:v0887* + ID_VENDOR_FROM_DATABASE=Hannstar Electronics Corp. + +usb:v088A* + ID_VENDOR_FROM_DATABASE=TechTools + +usb:v088Ap1002* + ID_MODEL_FROM_DATABASE=DigiView DV3100 + +usb:v088B* + ID_VENDOR_FROM_DATABASE=MassWorks, Inc. + +usb:v088Bp4944* + ID_MODEL_FROM_DATABASE=MassWorks ID-75 TouchScreen + +usb:v088C* + ID_VENDOR_FROM_DATABASE=Swecoin AB + +usb:v088Cp2030* + ID_MODEL_FROM_DATABASE=Ticket Printer TTP 2030 + +usb:v088E* + ID_VENDOR_FROM_DATABASE=iLok + +usb:v088Ep5036* + ID_MODEL_FROM_DATABASE=Portable secure storage for software licenses + +usb:v0892* + ID_VENDOR_FROM_DATABASE=DioGraphy, Inc. + +usb:v0892p0101* + ID_MODEL_FROM_DATABASE=Smartdio Reader/Writer + +usb:v0897* + ID_VENDOR_FROM_DATABASE=Lauterbach + +usb:v0897p0002* + ID_MODEL_FROM_DATABASE=Power Debug/Power Debug II + +usb:v089C* + ID_VENDOR_FROM_DATABASE=United Technologies Research Cntr. + +usb:v089D* + ID_VENDOR_FROM_DATABASE=Icron Technologies Corp. + +usb:v089E* + ID_VENDOR_FROM_DATABASE=NST Co., Ltd + +usb:v089F* + ID_VENDOR_FROM_DATABASE=Primex Aerospace Co. + +usb:v08A5* + ID_VENDOR_FROM_DATABASE=e9, Inc. + +usb:v08A6* + ID_VENDOR_FROM_DATABASE=Toshiba TEC + +usb:v08A6p0051* + ID_MODEL_FROM_DATABASE=B-SV4 + +usb:v08A8* + ID_VENDOR_FROM_DATABASE=Andrea Electronics + +usb:v08A9* + ID_VENDOR_FROM_DATABASE=CWAV Inc. + +usb:v08A9p0005* + ID_MODEL_FROM_DATABASE=USBee ZX + +usb:v08A9p0009* + ID_MODEL_FROM_DATABASE=USBee SX + +usb:v08A9p0012* + ID_MODEL_FROM_DATABASE=USBee AX-Standard + +usb:v08A9p0013* + ID_MODEL_FROM_DATABASE=USBee AX-Plus + +usb:v08A9p0014* + ID_MODEL_FROM_DATABASE=USBee AX-Pro + +usb:v08A9p0015* + ID_MODEL_FROM_DATABASE=USBee DX + +usb:v08AE* + ID_VENDOR_FROM_DATABASE=Macally (Mace Group, Inc.) + +usb:v08B4* + ID_VENDOR_FROM_DATABASE=Sorenson Vision, Inc. + +usb:v08B7* + ID_VENDOR_FROM_DATABASE=NATSU + +usb:v08B7p0001* + ID_MODEL_FROM_DATABASE=Playstation adapter + +usb:v08B8* + ID_VENDOR_FROM_DATABASE=J. Gordon Electronic Design, Inc. + +usb:v08B8p01F4* + ID_MODEL_FROM_DATABASE=USBSIMM1 + +usb:v08B9* + ID_VENDOR_FROM_DATABASE=RadioShack Corp. (Tandy) + +usb:v08BB* + ID_VENDOR_FROM_DATABASE=Texas Instruments + +usb:v08BBp2702* + ID_MODEL_FROM_DATABASE=Speakers + +usb:v08BBp2704* + ID_MODEL_FROM_DATABASE=Audio Codec + +usb:v08BBp2706* + ID_MODEL_FROM_DATABASE=PCM2706 Audio Codec + +usb:v08BBp2900* + ID_MODEL_FROM_DATABASE=PCM2900 Audio Codec + +usb:v08BBp2901* + ID_MODEL_FROM_DATABASE=PCM2901 Audio Codec + +usb:v08BBp2902* + ID_MODEL_FROM_DATABASE=PCM2902 Audio Codec + +usb:v08BBp2904* + ID_MODEL_FROM_DATABASE=PCM2904 Audio Codec + +usb:v08BBp2910* + ID_MODEL_FROM_DATABASE=PCM2912 Audio Codec + +usb:v08BBp29B0* + ID_MODEL_FROM_DATABASE=PCM2900B Audio CODEC + +usb:v08BBp29B2* + ID_MODEL_FROM_DATABASE=PCM2902 Audio CODEC + +usb:v08BBp29B3* + ID_MODEL_FROM_DATABASE=PCM2903B Audio CODEC + +usb:v08BBp29B6* + ID_MODEL_FROM_DATABASE=PCM2906B Audio CODEC + +usb:v08BBp29C0* + ID_MODEL_FROM_DATABASE=PCM2900C Audio CODEC + +usb:v08BBp29C2* + ID_MODEL_FROM_DATABASE=PCM2902C Audio CODEC + +usb:v08BBp29C3* + ID_MODEL_FROM_DATABASE=PCM2903C Audio CODEC + +usb:v08BBp29C6* + ID_MODEL_FROM_DATABASE=PCM2906C Audio CODEC + +usb:v08BD* + ID_VENDOR_FROM_DATABASE=Citizen Watch Co., Ltd + +usb:v08BDp0208* + ID_MODEL_FROM_DATABASE=CLP-521 Label Printer + +usb:v08BDp1100* + ID_MODEL_FROM_DATABASE=X1-USB Floppy + +usb:v08C3* + ID_VENDOR_FROM_DATABASE=Precise Biometrics + +usb:v08C3p0001* + ID_MODEL_FROM_DATABASE=100 SC + +usb:v08C3p0002* + ID_MODEL_FROM_DATABASE=100 A + +usb:v08C3p0003* + ID_MODEL_FROM_DATABASE=100 SC BioKeyboard + +usb:v08C3p0006* + ID_MODEL_FROM_DATABASE=100 A BioKeyboard + +usb:v08C3p0100* + ID_MODEL_FROM_DATABASE=100 MC ISP + +usb:v08C3p0101* + ID_MODEL_FROM_DATABASE=100 MC FingerPrint and SmartCard Reader + +usb:v08C3p0300* + ID_MODEL_FROM_DATABASE=100 AX + +usb:v08C3p0400* + ID_MODEL_FROM_DATABASE=100 SC + +usb:v08C3p0401* + ID_MODEL_FROM_DATABASE=150 MC + +usb:v08C3p0402* + ID_MODEL_FROM_DATABASE=200 MC FingerPrint and SmartCard Reader + +usb:v08C3p0404* + ID_MODEL_FROM_DATABASE=100 SC Upgrade + +usb:v08C3p0405* + ID_MODEL_FROM_DATABASE=150 MC Upgrade + +usb:v08C3p0406* + ID_MODEL_FROM_DATABASE=100 MC Upgrade + +usb:v08C4* + ID_VENDOR_FROM_DATABASE=Proxim, Inc. + +usb:v08C4p0100* + ID_MODEL_FROM_DATABASE=Skyline 802.11b Wireless Adapter + +usb:v08C4p02F2* + ID_MODEL_FROM_DATABASE=Farallon Home Phoneline Adapter + +usb:v08C7* + ID_VENDOR_FROM_DATABASE=Key Nice Enterprise Co., Ltd + +usb:v08C8* + ID_VENDOR_FROM_DATABASE=2Wire, Inc. + +usb:v08C9* + ID_VENDOR_FROM_DATABASE=Nippon Telegraph and Telephone Corp. + +usb:v08CA* + ID_VENDOR_FROM_DATABASE=Aiptek International, Inc. + +usb:v08CAp0001* + ID_MODEL_FROM_DATABASE=Tablet + +usb:v08CAp0010* + ID_MODEL_FROM_DATABASE=Tablet + +usb:v08CAp0020* + ID_MODEL_FROM_DATABASE=APT-6000U Tablet + +usb:v08CAp0021* + ID_MODEL_FROM_DATABASE=APT-2 Tablet + +usb:v08CAp0022* + ID_MODEL_FROM_DATABASE=Tablet + +usb:v08CAp0023* + ID_MODEL_FROM_DATABASE=Tablet + +usb:v08CAp0024* + ID_MODEL_FROM_DATABASE=Tablet + +usb:v08CAp0100* + ID_MODEL_FROM_DATABASE=Pen Drive + +usb:v08CAp0102* + ID_MODEL_FROM_DATABASE=DualCam + +usb:v08CAp0103* + ID_MODEL_FROM_DATABASE=Pocket DV Digital Camera + +usb:v08CAp0104* + ID_MODEL_FROM_DATABASE=Pocket DVII + +usb:v08CAp0105* + ID_MODEL_FROM_DATABASE=Mega DV(Disk) + +usb:v08CAp0106* + ID_MODEL_FROM_DATABASE=Pocket DV3100+ + +usb:v08CAp0107* + ID_MODEL_FROM_DATABASE=Pocket DV3100 + +usb:v08CAp0109* + ID_MODEL_FROM_DATABASE=Nisis DV4 Digital Camera + +usb:v08CAp010A* + ID_MODEL_FROM_DATABASE=Trust 738AV LCD PV Mass Storage + +usb:v08CAp0111* + ID_MODEL_FROM_DATABASE=PenCam VGA Plus + +usb:v08CAp2008* + ID_MODEL_FROM_DATABASE=Mini PenCam 2 + +usb:v08CAp2010* + ID_MODEL_FROM_DATABASE=Pocket CAM 3 Mega (webcam) + +usb:v08CAp2011* + ID_MODEL_FROM_DATABASE=Pocket CAM 3 Mega (storage) + +usb:v08CAp2016* + ID_MODEL_FROM_DATABASE=PocketCam 2 Mega + +usb:v08CAp2018* + ID_MODEL_FROM_DATABASE=Pencam SD 2M + +usb:v08CAp2020* + ID_MODEL_FROM_DATABASE=Slim 3000F + +usb:v08CAp2022* + ID_MODEL_FROM_DATABASE=Slim 3200 + +usb:v08CAp2024* + ID_MODEL_FROM_DATABASE=Pocket DV3500 + +usb:v08CAp2028* + ID_MODEL_FROM_DATABASE=Pocket Cam4M + +usb:v08CAp2040* + ID_MODEL_FROM_DATABASE=Pocket DV4100M + +usb:v08CAp2042* + ID_MODEL_FROM_DATABASE=Pocket DV5100M Composite Device + +usb:v08CAp2043* + ID_MODEL_FROM_DATABASE=Pocket DV5100M (Disk) + +usb:v08CAp2060* + ID_MODEL_FROM_DATABASE=Pocket DV5300 + +usb:v08CD* + ID_VENDOR_FROM_DATABASE=Jue Hsun Ind. Corp. + +usb:v08CE* + ID_VENDOR_FROM_DATABASE=Long Well Electronics Corp. + +usb:v08CF* + ID_VENDOR_FROM_DATABASE=Productivity Enhancement Products + +usb:v08D1* + ID_VENDOR_FROM_DATABASE=smartBridges, Inc. + +usb:v08D1p0001* + ID_MODEL_FROM_DATABASE=smartNIC Ethernet [catc] + +usb:v08D1p0003* + ID_MODEL_FROM_DATABASE=smartNIC 2 PnP Ethernet + +usb:v08D3* + ID_VENDOR_FROM_DATABASE=Virtual Ink + +usb:v08D4* + ID_VENDOR_FROM_DATABASE=Fujitsu Siemens Computers + +usb:v08D4p0009* + ID_MODEL_FROM_DATABASE=SCR SmartCard Reader + +usb:v08D8* + ID_VENDOR_FROM_DATABASE=IXXAT Automation GmbH + +usb:v08D8p0002* + ID_MODEL_FROM_DATABASE=USB-to-CAN compact + +usb:v08D8p0003* + ID_MODEL_FROM_DATABASE=USB-to-CAN II + +usb:v08D8p0100* + ID_MODEL_FROM_DATABASE=USB-to-CAN + +usb:v08D9* + ID_VENDOR_FROM_DATABASE=Increment P Corp. + +usb:v08DD* + ID_VENDOR_FROM_DATABASE=Billionton Systems, Inc. + +usb:v08DDp0112* + ID_MODEL_FROM_DATABASE=Wireless LAN Adapter + +usb:v08DDp0113* + ID_MODEL_FROM_DATABASE=Wireless LAN Adapter + +usb:v08DDp0986* + ID_MODEL_FROM_DATABASE=USB-100N Ethernet [pegasus] + +usb:v08DDp0987* + ID_MODEL_FROM_DATABASE=USBLP-100 HomePNA Ethernet [pegasus] + +usb:v08DDp0988* + ID_MODEL_FROM_DATABASE=USBEL-100 Ethernet [pegasus] + +usb:v08DDp1986* + ID_MODEL_FROM_DATABASE=10/100 LAN Adapter + +usb:v08DDp2103* + ID_MODEL_FROM_DATABASE=DVB-T TV-Tuner Card-R + +usb:v08DDp8511* + ID_MODEL_FROM_DATABASE=USBE-100 Ethernet [pegasus2] + +usb:v08DDp90FF* + ID_MODEL_FROM_DATABASE=USB2AR Ethernet + +usb:v08DE* + ID_VENDOR_FROM_DATABASE=??? + +usb:v08DEp7A01* + ID_MODEL_FROM_DATABASE=802.11b Adapter + +usb:v08DF* + ID_VENDOR_FROM_DATABASE=Spyrus, Inc. + +usb:v08DFp0001* + ID_MODEL_FROM_DATABASE=Rosetta Token V1 + +usb:v08DFp0002* + ID_MODEL_FROM_DATABASE=Rosetta Token V2 + +usb:v08DFp0003* + ID_MODEL_FROM_DATABASE=Rosetta Token V3 + +usb:v08DFp0A00* + ID_MODEL_FROM_DATABASE=Lynks Interface + +usb:v08E3* + ID_VENDOR_FROM_DATABASE=Olitec, Inc. + +usb:v08E3p0002* + ID_MODEL_FROM_DATABASE=USB-RS232 Bridge + +usb:v08E3p0100* + ID_MODEL_FROM_DATABASE=Interface ADSL + +usb:v08E3p0101* + ID_MODEL_FROM_DATABASE=Interface ADSL + +usb:v08E3p0102* + ID_MODEL_FROM_DATABASE=ADSL + +usb:v08E3p0301* + ID_MODEL_FROM_DATABASE=RNIS + +usb:v08E4* + ID_VENDOR_FROM_DATABASE=Pioneer Corp. + +usb:v08E5* + ID_VENDOR_FROM_DATABASE=Litronic + +usb:v08E6* + ID_VENDOR_FROM_DATABASE=Gemplus + +usb:v08E6p0001* + ID_MODEL_FROM_DATABASE=GemPC-Touch 430 + +usb:v08E6p0430* + ID_MODEL_FROM_DATABASE=GemPC430 SmartCard Reader + +usb:v08E6p0432* + ID_MODEL_FROM_DATABASE=GemPC432 SmartCard Reader + +usb:v08E6p0435* + ID_MODEL_FROM_DATABASE=GemPC435 SmartCard Reader + +usb:v08E6p0437* + ID_MODEL_FROM_DATABASE=GemPC433 SL SmartCard Reader + +usb:v08E6p1359* + ID_MODEL_FROM_DATABASE=UA SECURE STORAGE TOKEN + +usb:v08E6p2202* + ID_MODEL_FROM_DATABASE=Gem e-Seal Pro Token + +usb:v08E6p3437* + ID_MODEL_FROM_DATABASE=GemPC Twin SmartCard Reader + +usb:v08E6p3438* + ID_MODEL_FROM_DATABASE=GemPC Key SmartCard Reader + +usb:v08E6p3478* + ID_MODEL_FROM_DATABASE=PinPad Smart Card Reader + +usb:v08E6p34EC* + ID_MODEL_FROM_DATABASE=Compact Smart Card Reader Writer + +usb:v08E6p4433* + ID_MODEL_FROM_DATABASE=GemPC433-Swap + +usb:v08E6p5501* + ID_MODEL_FROM_DATABASE=GemProx-PU Contactless Smart Card Reader + +usb:v08E6pACE0* + ID_MODEL_FROM_DATABASE=UA HYBRID TOKEN + +usb:v08E7* + ID_VENDOR_FROM_DATABASE=Pan-International Wire & Cable + +usb:v08E8* + ID_VENDOR_FROM_DATABASE=Integrated Memory Logic + +usb:v08E9* + ID_VENDOR_FROM_DATABASE=Extended Systems, Inc. + +usb:v08E9p0100* + ID_MODEL_FROM_DATABASE=XTNDAccess IrDA Dongle + +usb:v08EA* + ID_VENDOR_FROM_DATABASE=Ericsson, Inc., Blue Ridge Labs + +usb:v08EAp00C9* + ID_MODEL_FROM_DATABASE=ADSL Modem HM120dp Loader + +usb:v08EAp00CA* + ID_MODEL_FROM_DATABASE=ADSL WAN Modem HM120dp + +usb:v08EAp00CE* + ID_MODEL_FROM_DATABASE=HM230d Virtual Bus for Helium + +usb:v08EApABBA* + ID_MODEL_FROM_DATABASE=USB Driver for Bluetooth Wireless Technology + +usb:v08EApABBB* + ID_MODEL_FROM_DATABASE=Bluetooth Device in DFU State + +usb:v08EC* + ID_VENDOR_FROM_DATABASE=M-Systems Flash Disk Pioneers + +usb:v08ECp0001* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v08ECp0002* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v08ECp0005* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v08ECp0008* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v08ECp0010* + ID_MODEL_FROM_DATABASE=DiskOnKey + +usb:v08ECp0011* + ID_MODEL_FROM_DATABASE=DiskOnKey + +usb:v08ECp0012* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v08ECp0014* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v08ECp0015* + ID_MODEL_FROM_DATABASE=Kingston DataTraveler ELITE + +usb:v08ECp0016* + ID_MODEL_FROM_DATABASE=Kingston DataTraveler U3 + +usb:v08ECp0020* + ID_MODEL_FROM_DATABASE=TravelDrive Intuix U3 2GB + +usb:v08ECp0021* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v08ECp0022* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v08ECp0023* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v08ECp0024* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v08ECp0025* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v08ECp0026* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v08ECp0027* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v08ECp0028* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v08ECp0029* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v08ECp0030* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v08ECp0822* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v08ECp0832* + ID_MODEL_FROM_DATABASE=Hi-Speed Mass Storage Device + +usb:v08ECp0834* + ID_MODEL_FROM_DATABASE=M-Disk 220 + +usb:v08ECp0998* + ID_MODEL_FROM_DATABASE=Kingston Data Traveler2.0 Disk Driver + +usb:v08ECp0999* + ID_MODEL_FROM_DATABASE=Kingston Data Traveler2.0 Disk Driver + +usb:v08ECp1000* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v08ECp2000* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v08ECp2038* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v08ECp2039* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v08ECp204A* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v08ECp204B* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v08ED* + ID_VENDOR_FROM_DATABASE=MediaTek Inc. + +usb:v08EDp0002* + ID_MODEL_FROM_DATABASE=CECT M800 memory card + +usb:v08EE* + ID_VENDOR_FROM_DATABASE=CCSI/Hesso + +usb:v08F0* + ID_VENDOR_FROM_DATABASE=Corex Technologies + +usb:v08F1* + ID_VENDOR_FROM_DATABASE=CTI Electronics Corp. + +usb:v08F2* + ID_VENDOR_FROM_DATABASE=Gotop Information Inc. + +usb:v08F2p007F* + ID_MODEL_FROM_DATABASE=Super Q2 Tablet + +usb:v08F5* + ID_VENDOR_FROM_DATABASE=SysTec Co., Ltd + +usb:v08F6* + ID_VENDOR_FROM_DATABASE=Logic 3 International, Ltd + +usb:v08F7* + ID_VENDOR_FROM_DATABASE=Vernier + +usb:v08F7p0001* + ID_MODEL_FROM_DATABASE=LabPro + +usb:v08F7p0002* + ID_MODEL_FROM_DATABASE=EasyTemp/Go!Temp + +usb:v08F7p0003* + ID_MODEL_FROM_DATABASE=Go!Link + +usb:v08F7p0004* + ID_MODEL_FROM_DATABASE=Go!Motion + +usb:v08F8* + ID_VENDOR_FROM_DATABASE=Keen Top International Enterprise Co., Ltd + +usb:v08F9* + ID_VENDOR_FROM_DATABASE=Wipro Technologies + +usb:v08FA* + ID_VENDOR_FROM_DATABASE=Caere + +usb:v08FB* + ID_VENDOR_FROM_DATABASE=Socket Communications + +usb:v08FC* + ID_VENDOR_FROM_DATABASE=Sicon Cable Technology Co., Ltd + +usb:v08FD* + ID_VENDOR_FROM_DATABASE=Digianswer A/S + +usb:v08FDp0001* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v08FF* + ID_VENDOR_FROM_DATABASE=AuthenTec, Inc. + +usb:v08FFp1600* + ID_MODEL_FROM_DATABASE=AES1600 + +usb:v08FFp1610* + ID_MODEL_FROM_DATABASE=AES1600 + +usb:v08FFp1660* + ID_MODEL_FROM_DATABASE=AES1660 Fingerprint Sensor + +usb:v08FFp1680* + ID_MODEL_FROM_DATABASE=AES1660 Fingerprint Sensor + +usb:v08FFp168F* + ID_MODEL_FROM_DATABASE=AES1660 Fingerprint Sensor + +usb:v08FFp2500* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp2501* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp2502* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp2503* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp2504* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp2505* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp2506* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp2507* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp2508* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp2509* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp250A* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp250B* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp250C* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp250D* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp250E* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp250F* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp2510* + ID_MODEL_FROM_DATABASE=AES2510 + +usb:v08FFp2550* + ID_MODEL_FROM_DATABASE=AES2550 Fingerprint Sensor + +usb:v08FFp2580* + ID_MODEL_FROM_DATABASE=AES2501 Fingerprint Sensor + +usb:v08FFp2588* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp2589* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp258A* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp258B* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp258C* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp258D* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp258E* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp258F* + ID_MODEL_FROM_DATABASE=AES2501 + +usb:v08FFp2660* + ID_MODEL_FROM_DATABASE=AES2660 Fingerprint Sensor + +usb:v08FFp2680* + ID_MODEL_FROM_DATABASE=AES2660 Fingerprint Sensor + +usb:v08FFp268F* + ID_MODEL_FROM_DATABASE=AES2660 Fingerprint Sensor + +usb:v08FFp2810* + ID_MODEL_FROM_DATABASE=AES2810 + +usb:v08FFp3400* + ID_MODEL_FROM_DATABASE=AES3400 TruePrint Sensor + +usb:v08FFp3401* + ID_MODEL_FROM_DATABASE=AES3400 Sensor + +usb:v08FFp3402* + ID_MODEL_FROM_DATABASE=AES3400 Sensor + +usb:v08FFp3403* + ID_MODEL_FROM_DATABASE=AES3400 Sensor + +usb:v08FFp3404* + ID_MODEL_FROM_DATABASE=AES3400 TruePrint Sensor + +usb:v08FFp3405* + ID_MODEL_FROM_DATABASE=AES3400 TruePrint Sensor + +usb:v08FFp3406* + ID_MODEL_FROM_DATABASE=AES3400 TruePrint Sensor + +usb:v08FFp3407* + ID_MODEL_FROM_DATABASE=AES3400 TruePrint Sensor + +usb:v08FFp4902* + ID_MODEL_FROM_DATABASE=BioMV with TruePrint AES3500 + +usb:v08FFp4903* + ID_MODEL_FROM_DATABASE=BioMV with TruePrint AES3400 + +usb:v08FFp5500* + ID_MODEL_FROM_DATABASE=AES4000 + +usb:v08FFp5501* + ID_MODEL_FROM_DATABASE=AES4000 TruePrint Sensor + +usb:v08FFp5503* + ID_MODEL_FROM_DATABASE=AES4000 TruePrint Sensor + +usb:v08FFp5505* + ID_MODEL_FROM_DATABASE=AES4000 TruePrint Sensor + +usb:v08FFp5507* + ID_MODEL_FROM_DATABASE=AES4000 TruePrint Sensor + +usb:v08FFp55FF* + ID_MODEL_FROM_DATABASE=AES4000 TruePrint Sensor. + +usb:v08FFp5700* + ID_MODEL_FROM_DATABASE=AES3500 Fingerprint Reader + +usb:v08FFp5701* + ID_MODEL_FROM_DATABASE=AES3500 TruePrint Sensor + +usb:v08FFp5702* + ID_MODEL_FROM_DATABASE=AES3500 TruePrint Sensor + +usb:v08FFp5703* + ID_MODEL_FROM_DATABASE=AES3500 TruePrint Sensor + +usb:v08FFp5704* + ID_MODEL_FROM_DATABASE=AES3500-BZ TruePrint Sensor + +usb:v08FFp5705* + ID_MODEL_FROM_DATABASE=AES3500-BZ TruePrint Sensor + +usb:v08FFp5706* + ID_MODEL_FROM_DATABASE=AES3500-BZ TruePrint Sensor + +usb:v08FFp5707* + ID_MODEL_FROM_DATABASE=AES3500-BZ TruePrint Sensor + +usb:v08FFp5710* + ID_MODEL_FROM_DATABASE=AES3500 TruePrint Sensor + +usb:v08FFp5711* + ID_MODEL_FROM_DATABASE=AES3500 TruePrint Sensor + +usb:v08FFp5712* + ID_MODEL_FROM_DATABASE=AES3500 TruePrint Sensor + +usb:v08FFp5713* + ID_MODEL_FROM_DATABASE=AES3500 TruePrint Sensor + +usb:v08FFp5714* + ID_MODEL_FROM_DATABASE=AES3500-BZ TruePrint Sensor + +usb:v08FFp5715* + ID_MODEL_FROM_DATABASE=AES3500-BZ TruePrint Sensor + +usb:v08FFp5716* + ID_MODEL_FROM_DATABASE=AES3500-BZ TruePrint Sensor + +usb:v08FFp5717* + ID_MODEL_FROM_DATABASE=AES3500-BZ TruePrint Sensor + +usb:v08FFp5730* + ID_MODEL_FROM_DATABASE=AES3500 TruePrint Sensor + +usb:v08FFp5731* + ID_MODEL_FROM_DATABASE=AES3500 TruePrint Sensor + +usb:v08FFp5732* + ID_MODEL_FROM_DATABASE=AES3500 TruePrint Sensor + +usb:v08FFp5733* + ID_MODEL_FROM_DATABASE=AES3500 TruePrint Sensor + +usb:v08FFp5734* + ID_MODEL_FROM_DATABASE=AES3500-BZ TruePrint Sensor + +usb:v08FFp5735* + ID_MODEL_FROM_DATABASE=AES3500-BZ TruePrint Sensor + +usb:v08FFp5736* + ID_MODEL_FROM_DATABASE=AES3500-BZ TruePrint Sensor + +usb:v08FFp5737* + ID_MODEL_FROM_DATABASE=AES3500-BZ TruePrint Sensor + +usb:v08FFpAFE3* + ID_MODEL_FROM_DATABASE=FingerLoc Sensor Module (Anchor) + +usb:v08FFpAFE4* + ID_MODEL_FROM_DATABASE=FingerLoc Sensor Module (Anchor) + +usb:v08FFpAFE5* + ID_MODEL_FROM_DATABASE=FingerLoc Sensor Module (Anchor) + +usb:v08FFpAFE6* + ID_MODEL_FROM_DATABASE=FingerLoc Sensor Module (Anchor) + +usb:v08FFpFFFD* + ID_MODEL_FROM_DATABASE=AES2510 Sensor (USB Emulator) + +usb:v08FFpFFFF* + ID_MODEL_FROM_DATABASE=Sensor (Emulator) + +usb:v0900* + ID_VENDOR_FROM_DATABASE=Pinnacle Systems, Inc. + +usb:v0901* + ID_VENDOR_FROM_DATABASE=VST Technologies + +usb:v0901p0001* + ID_MODEL_FROM_DATABASE=Hard Drive Adapter (TPP) + +usb:v0901p0002* + ID_MODEL_FROM_DATABASE=SigmaDrive Adapter (TPP) + +usb:v0906* + ID_VENDOR_FROM_DATABASE=Faraday Technology Corp. + +usb:v0908* + ID_VENDOR_FROM_DATABASE=ShenZhen SANZHAI Technology Co.,Ltd + +usb:v0908p2701* + ID_MODEL_FROM_DATABASE=Spy Pen VGA + +usb:v0909* + ID_VENDOR_FROM_DATABASE=Audio-Technica Corp. + +usb:v090A* + ID_VENDOR_FROM_DATABASE=Trumpion Microelectronics, Inc. + +usb:v090Ap1001* + ID_MODEL_FROM_DATABASE=T33520 Flash Card Controller + +usb:v090Ap1100* + ID_MODEL_FROM_DATABASE=Comotron C3310 MP3 player + +usb:v090Ap1200* + ID_MODEL_FROM_DATABASE=MP3 player + +usb:v090Ap1540* + ID_MODEL_FROM_DATABASE=Digitex Container Flash Disk + +usb:v090B* + ID_VENDOR_FROM_DATABASE=Neurosmith + +usb:v090C* + ID_VENDOR_FROM_DATABASE=Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) + +usb:v090Cp0371* + ID_MODEL_FROM_DATABASE=Silicon Motion SM371 Camera + +usb:v090Cp0373* + ID_MODEL_FROM_DATABASE=Silicon Motion Camera + +usb:v090Cp037A* + ID_MODEL_FROM_DATABASE=Silicon Motion Camera + +usb:v090Cp037B* + ID_MODEL_FROM_DATABASE=Silicon Motion Camera + +usb:v090Cp1000* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v090Cp1132* + ID_MODEL_FROM_DATABASE=5-in-1 Card Reader + +usb:v090Cp337B* + ID_MODEL_FROM_DATABASE=Silicon Motion Camera + +usb:v090Cp3710* + ID_MODEL_FROM_DATABASE=Silicon Motion Camera + +usb:v090Cp3720* + ID_MODEL_FROM_DATABASE=Silicon Motion Camera + +usb:v090Cp37BC* + ID_MODEL_FROM_DATABASE=HP Webcam-101 Integrated Camera + +usb:v090Cp37C0* + ID_MODEL_FROM_DATABASE=Silicon Motion Camera + +usb:v090Cp6000* + ID_MODEL_FROM_DATABASE=SD/SDHC Card Reader (SG365 / FlexiDrive XC+) + +usb:v090Cp6200* + ID_MODEL_FROM_DATABASE=microSD card reader + +usb:v090Cp71B3* + ID_MODEL_FROM_DATABASE=SM731 Camera + +usb:v090Cp837B* + ID_MODEL_FROM_DATABASE=Silicon Motion Camera + +usb:v090Cp937B* + ID_MODEL_FROM_DATABASE=Silicon Motion Camera + +usb:v090CpB370* + ID_MODEL_FROM_DATABASE=Silicon Motion SM370 Camera + +usb:v090CpB371* + ID_MODEL_FROM_DATABASE=Silicon Motion SM371 Camera + +usb:v090D* + ID_VENDOR_FROM_DATABASE=Multiport Computer Vertriebs GmbH + +usb:v090E* + ID_VENDOR_FROM_DATABASE=Shining Technology, Inc. + +usb:v090F* + ID_VENDOR_FROM_DATABASE=Fujitsu Devices, Inc. + +usb:v0910* + ID_VENDOR_FROM_DATABASE=Alation Systems, Inc. + +usb:v0911* + ID_VENDOR_FROM_DATABASE=Philips Speech Processing + +usb:v0911p149A* + ID_MODEL_FROM_DATABASE=SpeechMike II Pro Plus LFH5276 + +usb:v0911p2512* + ID_MODEL_FROM_DATABASE=SpeechMike Pro + +usb:v0912* + ID_VENDOR_FROM_DATABASE=Voquette, Inc. + +usb:v0915* + ID_VENDOR_FROM_DATABASE=GlobeSpan, Inc. + +usb:v0915p0001* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v0915p0002* + ID_MODEL_FROM_DATABASE=ADSL ATM Modem + +usb:v0915p0005* + ID_MODEL_FROM_DATABASE=LAN Modem + +usb:v0915p2000* + ID_MODEL_FROM_DATABASE=802.11 Adapter + +usb:v0915p2002* + ID_MODEL_FROM_DATABASE=802.11 Adapter + +usb:v0915p8000* + ID_MODEL_FROM_DATABASE=ADSL LAN Modem + +usb:v0915p8005* + ID_MODEL_FROM_DATABASE=DSL-302G Modem + +usb:v0915p8101* + ID_MODEL_FROM_DATABASE=ADSL WAN Modem + +usb:v0915p8102* + ID_MODEL_FROM_DATABASE=DSL-200 ADSL Modem + +usb:v0915p8103* + ID_MODEL_FROM_DATABASE=DSL-200 ADSL Modem + +usb:v0915p8104* + ID_MODEL_FROM_DATABASE=DSL-200 Modem + +usb:v0915p8400* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v0915p8401* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v0915p8402* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v0915p8500* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v0915p8501* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v0917* + ID_VENDOR_FROM_DATABASE=SmartDisk Corp. + +usb:v0917p0001* + ID_MODEL_FROM_DATABASE=eFilm Reader-11 SM/CF + +usb:v0917p0002* + ID_MODEL_FROM_DATABASE=eFilm Reader-11 SM + +usb:v0917p0003* + ID_MODEL_FROM_DATABASE=eFilm Reader-11 CF + +usb:v0917p0200* + ID_MODEL_FROM_DATABASE=FireFly + +usb:v0917p0201* + ID_MODEL_FROM_DATABASE=FireLite + +usb:v0917p0202* + ID_MODEL_FROM_DATABASE=STORAGE ADAPTER (FirePower) + +usb:v0917p0204* + ID_MODEL_FROM_DATABASE=FlashTrax Storage + +usb:v0917p0205* + ID_MODEL_FROM_DATABASE=STORAGE ADAPTER (CrossFire) + +usb:v0917p0206* + ID_MODEL_FROM_DATABASE=FireFly 20G HDD + +usb:v0917p0207* + ID_MODEL_FROM_DATABASE=FireLite + +usb:v0917p020F* + ID_MODEL_FROM_DATABASE=STORAGE ADAPTER (FireLite) + +usb:v0917pDA01* + ID_MODEL_FROM_DATABASE=eFilm Reader-11 Test + +usb:v0917pFFFF* + ID_MODEL_FROM_DATABASE=eFilm Reader-11 (Class/PDR) + +usb:v0919* + ID_VENDOR_FROM_DATABASE=Tiger Electronics + +usb:v0919p0100* + ID_MODEL_FROM_DATABASE=Fast Flicks Digital Camera + +usb:v091E* + ID_VENDOR_FROM_DATABASE=Garmin International + +usb:v091Ep0003* + ID_MODEL_FROM_DATABASE=GPS (various models) + +usb:v091Ep0004* + ID_MODEL_FROM_DATABASE=iQue 3600 + +usb:v091Ep0200* + ID_MODEL_FROM_DATABASE=Data Card Programmer (install) + +usb:v091Ep1200* + ID_MODEL_FROM_DATABASE=Data Card Programmer + +usb:v091Ep21A5* + ID_MODEL_FROM_DATABASE=etrex Cx (msc) + +usb:v091Ep2236* + ID_MODEL_FROM_DATABASE=nuvi 360 + +usb:v091Ep2271* + ID_MODEL_FROM_DATABASE=Edge 605/705 + +usb:v091Ep2295* + ID_MODEL_FROM_DATABASE=Colorado 300 + +usb:v091Ep22B6* + ID_MODEL_FROM_DATABASE=eTrex Vista HCx (Mass Storage mode) + +usb:v091Ep231B* + ID_MODEL_FROM_DATABASE=Oregon 400t + +usb:v091Ep2353* + ID_MODEL_FROM_DATABASE=Nüvi 205T + +usb:v091Ep2380* + ID_MODEL_FROM_DATABASE=Oregon series + +usb:v091Ep23CC* + ID_MODEL_FROM_DATABASE=nüvi 1350 + +usb:v091Ep2459* + ID_MODEL_FROM_DATABASE=GPSmap 62/78 series + +usb:v091Ep2519* + ID_MODEL_FROM_DATABASE=eTrex 30 + +usb:v091Ep2535* + ID_MODEL_FROM_DATABASE=Edge 800 + +usb:v091Ep255B* + ID_MODEL_FROM_DATABASE=Nuvi 2505LM + +usb:v0920* + ID_VENDOR_FROM_DATABASE=Echelon Co. + +usb:v0920p7500* + ID_MODEL_FROM_DATABASE=Network Interface + +usb:v0921* + ID_VENDOR_FROM_DATABASE=GoHubs, Inc. + +usb:v0921p1001* + ID_MODEL_FROM_DATABASE=GoCOM232 Serial + +usb:v0922* + ID_VENDOR_FROM_DATABASE=Dymo-CoStar Corp. + +usb:v0922p0007* + ID_MODEL_FROM_DATABASE=LabelWriter 330 + +usb:v0922p0009* + ID_MODEL_FROM_DATABASE=LabelWriter 310 + +usb:v0922p001A* + ID_MODEL_FROM_DATABASE=LabelWriter 400 Turbo + +usb:v0922p0020* + ID_MODEL_FROM_DATABASE=LabelWriter 450 + +usb:v0923* + ID_VENDOR_FROM_DATABASE=IC Media Corp. + +usb:v0923p010F* + ID_MODEL_FROM_DATABASE=SIIG MobileCam + +usb:v0924* + ID_VENDOR_FROM_DATABASE=Xerox + +usb:v0924p23DD* + ID_MODEL_FROM_DATABASE=DocuPrint M760 (X760_USB) + +usb:v0924p3CE8* + ID_MODEL_FROM_DATABASE=Phaser 3428 Printer + +usb:v0924p3D5B* + ID_MODEL_FROM_DATABASE=Phaser 6115MFP TWAIN Scanner + +usb:v0924p420F* + ID_MODEL_FROM_DATABASE=WorkCentre PE220 Series + +usb:v0924p421F* + ID_MODEL_FROM_DATABASE=M20 Scanner + +usb:v0924p423B* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v0924p4274* + ID_MODEL_FROM_DATABASE=Xerox Phaser 3635MFPX + +usb:v0924pFFEF* + ID_MODEL_FROM_DATABASE=WorkCenter M15 + +usb:v0924pFFFB* + ID_MODEL_FROM_DATABASE=DocuPrint M750 (X750_USB) + +usb:v0925* + ID_VENDOR_FROM_DATABASE=Lakeview Research + +usb:v0925p0005* + ID_MODEL_FROM_DATABASE=Gamtec.,Ltd SmartJoy PLUS Adapter + +usb:v0925p3881* + ID_MODEL_FROM_DATABASE=Saleae Logic + +usb:v0925p8101* + ID_MODEL_FROM_DATABASE=Phidgets, Inc., 1-Motor PhidgetServo v2.0 + +usb:v0925p8104* + ID_MODEL_FROM_DATABASE=Phidgets, Inc., 4-Motor PhidgetServo v2.0 + +usb:v0925p8800* + ID_MODEL_FROM_DATABASE=WiseGroup Ltd, MP-8800 Quad Joypad + +usb:v0925p8866* + ID_MODEL_FROM_DATABASE=WiseGroup Ltd, MP-8866 Dual Joypad + +usb:v0927* + ID_VENDOR_FROM_DATABASE=Summus, Ltd + +usb:v0928* + ID_VENDOR_FROM_DATABASE=PLX Technology, Inc. (formerly Oxford Semiconductor, Ltd) + +usb:v0928p8000* + ID_MODEL_FROM_DATABASE=Firmware uploader + +usb:v0929* + ID_VENDOR_FROM_DATABASE=American Biometric Co. + +usb:v092A* + ID_VENDOR_FROM_DATABASE=Toshiba Information & Industrial Sys. And Services + +usb:v092B* + ID_VENDOR_FROM_DATABASE=Sena Technologies, Inc. + +usb:v092F* + ID_VENDOR_FROM_DATABASE=Northern Embedded Science/CAVNEX + +usb:v092Fp0004* + ID_MODEL_FROM_DATABASE=JTAG-4 + +usb:v092Fp0005* + ID_MODEL_FROM_DATABASE=JTAG-5 + +usb:v0930* + ID_VENDOR_FROM_DATABASE=Toshiba Corp. + +usb:v0930p0009* + ID_MODEL_FROM_DATABASE=Gigabeat F/X (HDD audio player) + +usb:v0930p000C* + ID_MODEL_FROM_DATABASE=Gigabeat F (mtp) + +usb:v0930p0010* + ID_MODEL_FROM_DATABASE=Gigabeat S (mtp) + +usb:v0930p0301* + ID_MODEL_FROM_DATABASE=PCX1100U Cable Modem (WDM) + +usb:v0930p0302* + ID_MODEL_FROM_DATABASE=PCX2000 Cable Modem (WDM) + +usb:v0930p0305* + ID_MODEL_FROM_DATABASE=Cable Modem PCX3000 + +usb:v0930p0307* + ID_MODEL_FROM_DATABASE=Cable Modem PCX2500 + +usb:v0930p0308* + ID_MODEL_FROM_DATABASE=PCX2200 Cable Modem (WDM) + +usb:v0930p0309* + ID_MODEL_FROM_DATABASE=PCX5000 Cable Modem (WDM) + +usb:v0930p030B* + ID_MODEL_FROM_DATABASE=Cable Modem PCX2600 + +usb:v0930p0501* + ID_MODEL_FROM_DATABASE=Bluetooth Controller + +usb:v0930p0502* + ID_MODEL_FROM_DATABASE=Integrated Bluetooth + +usb:v0930p0503* + ID_MODEL_FROM_DATABASE=Bluetooth Controller + +usb:v0930p0505* + ID_MODEL_FROM_DATABASE=Integrated Bluetooth + +usb:v0930p0506* + ID_MODEL_FROM_DATABASE=Integrated Bluetooth + +usb:v0930p0507* + ID_MODEL_FROM_DATABASE=Bluetooth Adapter + +usb:v0930p0508* + ID_MODEL_FROM_DATABASE=Integrated Bluetooth HCI + +usb:v0930p0509* + ID_MODEL_FROM_DATABASE=BT EDR Dongle + +usb:v0930p0706* + ID_MODEL_FROM_DATABASE=PocketPC e740 + +usb:v0930p0707* + ID_MODEL_FROM_DATABASE=Pocket PC e330 Series + +usb:v0930p0708* + ID_MODEL_FROM_DATABASE=Pocket PC e350 Series + +usb:v0930p0709* + ID_MODEL_FROM_DATABASE=Pocket PC e750 Series + +usb:v0930p070A* + ID_MODEL_FROM_DATABASE=Pocket PC e400 Series + +usb:v0930p070B* + ID_MODEL_FROM_DATABASE=Pocket PC e800 Series + +usb:v0930p0A07* + ID_MODEL_FROM_DATABASE=WLM-10U1 802.11abgn Wireless Adapter [Ralink RT3572] + +usb:v0930p0B05* + ID_MODEL_FROM_DATABASE=PX1220E-1G25 External hard drive + +usb:v0930p0B09* + ID_MODEL_FROM_DATABASE=PX1396E-3T01 External hard drive + +usb:v0930p1300* + ID_MODEL_FROM_DATABASE=Wireless Broadband (CDMA EV-DO) SM-Bus Minicard Status Port + +usb:v0930p1301* + ID_MODEL_FROM_DATABASE=Wireless Broadband (CDMA EV-DO) Minicard Status Port + +usb:v0930p1302* + ID_MODEL_FROM_DATABASE=Wireless Broadband (3G HSDPA) SM-Bus Minicard Status Port + +usb:v0930p1303* + ID_MODEL_FROM_DATABASE=Wireless Broadband (3G HSDPA) Minicard Status Port + +usb:v0930p1308* + ID_MODEL_FROM_DATABASE=Broadband (3G HSDPA) SM-Bus Minicard Diagnostics Port + +usb:v0930p130B* + ID_MODEL_FROM_DATABASE=F3507g Mobile Broadband Module + +usb:v0930p130C* + ID_MODEL_FROM_DATABASE=F3607gw Mobile Broadband Module + +usb:v0930p1311* + ID_MODEL_FROM_DATABASE=F3607gw v2 Mobile Broadband Module + +usb:v0930p1400* + ID_MODEL_FROM_DATABASE=Memory Stick 2GB + +usb:v0930p642F* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p6506* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p6507* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p6508* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p6509* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p6510* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p6517* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p6518* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p6519* + ID_MODEL_FROM_DATABASE=Kingston DataTraveler 2.0 USB Stick + +usb:v0930p651A* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p651B* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p651C* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p651D* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p651E* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p651F* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p6520* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p6521* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p6522* + ID_MODEL_FROM_DATABASE=TravelDrive 2C + +usb:v0930p6523* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p6524* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p6525* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p6526* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p6527* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p6528* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p6529* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p652A* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p652B* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p652C* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p652D* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p652F* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p6530* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p6531* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p6532* + ID_MODEL_FROM_DATABASE=256M Stick + +usb:v0930p6533* + ID_MODEL_FROM_DATABASE=512M Stick + +usb:v0930p6534* + ID_MODEL_FROM_DATABASE=TravelDrive + +usb:v0930p653C* + ID_MODEL_FROM_DATABASE=Kingston DataTraveler 2.0 Stick (512M) + +usb:v0930p653D* + ID_MODEL_FROM_DATABASE=Kingston DataTraveler 2.0 Stick (1GB) + +usb:v0930p653E* + ID_MODEL_FROM_DATABASE=Flash Memory + +usb:v0930p6540* + ID_MODEL_FROM_DATABASE=TransMemory Flash Memory + +usb:v0930p6544* + ID_MODEL_FROM_DATABASE=Kingston DataTraveler 2.0 Stick (2GB) + +usb:v0930p6545* + ID_MODEL_FROM_DATABASE=Kingston DataTraveler 102 Flash Drive / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick + +usb:v0931* + ID_VENDOR_FROM_DATABASE=Harmonic Data Systems, Ltd + +usb:v0932* + ID_VENDOR_FROM_DATABASE=Crescentec Corp. + +usb:v0932p0300* + ID_MODEL_FROM_DATABASE=VideoAdvantage + +usb:v0932p0302* + ID_MODEL_FROM_DATABASE=Syntek DC-112X + +usb:v0932p0320* + ID_MODEL_FROM_DATABASE=VideoAdvantage + +usb:v0932p0482* + ID_MODEL_FROM_DATABASE=USB2.0 TVBOX + +usb:v0932p1100* + ID_MODEL_FROM_DATABASE=DC-1100 Video Enhamcement Device + +usb:v0932p1112* + ID_MODEL_FROM_DATABASE=Veo Web Camera + +usb:v0932pA311* + ID_MODEL_FROM_DATABASE=Video Enhancement Device + +usb:v0933* + ID_VENDOR_FROM_DATABASE=Quantum Corp. + +usb:v0934* + ID_VENDOR_FROM_DATABASE=Spirent Communications + +usb:v0936* + ID_VENDOR_FROM_DATABASE=NuTesla + +usb:v0936p0030* + ID_MODEL_FROM_DATABASE=Composite Device, Mass Storage Device (Flash Drive) amd HID + +usb:v0936p003C* + ID_MODEL_FROM_DATABASE=Rhythmedics HID Bootloader + +usb:v0939* + ID_VENDOR_FROM_DATABASE=Lumberg, Inc. + +usb:v0939p0B15* + ID_MODEL_FROM_DATABASE=Toshiba Stor.E Alu 2 1TB (PX1710E-1HJ0) + +usb:v093A* + ID_VENDOR_FROM_DATABASE=Pixart Imaging, Inc. + +usb:v093Ap0007* + ID_MODEL_FROM_DATABASE=CMOS 100K-R Rev. 1.90 + +usb:v093Ap010E* + ID_MODEL_FROM_DATABASE=Digital camera, CD302N/Elta Medi@ digi-cam/HE-501A + +usb:v093Ap010F* + ID_MODEL_FROM_DATABASE=Argus DC-1610/DC-1620/Emprex PCD3600/Philips P44417B keychain camera/Precision Mini,Model HA513A/Vivitar Vivicam 55 + +usb:v093Ap020F* + ID_MODEL_FROM_DATABASE=Bullet Line Photo Viewer + +usb:v093Ap050F* + ID_MODEL_FROM_DATABASE=Mars-Semi Pc-Camera + +usb:v093Ap2460* + ID_MODEL_FROM_DATABASE=Q-TEC WEBCAM 100 + +usb:v093Ap2468* + ID_MODEL_FROM_DATABASE=SoC PC-Camera + +usb:v093Ap2470* + ID_MODEL_FROM_DATABASE=SoC PC-Camera + +usb:v093Ap2471* + ID_MODEL_FROM_DATABASE=SoC PC-Camera + +usb:v093Ap2500* + ID_MODEL_FROM_DATABASE=USB Optical Mouse + +usb:v093Ap2510* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v093Ap2600* + ID_MODEL_FROM_DATABASE=Typhoon Easycam USB 330K (newer)/Typhoon Easycam USB 2.0 VGA 1.3M/Sansun SN-508 + +usb:v093Ap2601* + ID_MODEL_FROM_DATABASE=SPC 610NC Laptop Camera + +usb:v093Ap2603* + ID_MODEL_FROM_DATABASE=PAC7312 Camera + +usb:v093Ap2608* + ID_MODEL_FROM_DATABASE=PAC7311 Trust WB-3300p + +usb:v093Ap260E* + ID_MODEL_FROM_DATABASE=PAC7311 Gigaware VGA PC Camera:Trust WB-3350p:SIGMA cam 2350 + +usb:v093Ap260F* + ID_MODEL_FROM_DATABASE=PAC7311 SnakeCam + +usb:v093Ap2621* + ID_MODEL_FROM_DATABASE=PAC731x Trust Webcam + +usb:v093Ap2624* + ID_MODEL_FROM_DATABASE=Webcam + +usb:v093B* + ID_VENDOR_FROM_DATABASE=Plextor Corp. + +usb:v093Bp0010* + ID_MODEL_FROM_DATABASE=Storage Adapter + +usb:v093Bp0011* + ID_MODEL_FROM_DATABASE=PlexWriter 40/12/40U + +usb:v093Bp0041* + ID_MODEL_FROM_DATABASE=PX-708A DVD RW + +usb:v093Bp0042* + ID_MODEL_FROM_DATABASE=PX-712UF DVD RW + +usb:v093BpA002* + ID_MODEL_FROM_DATABASE=ConvertX M402U XLOADER + +usb:v093BpA003* + ID_MODEL_FROM_DATABASE=ConvertX AV100U A/V Capture Audio + +usb:v093BpA004* + ID_MODEL_FROM_DATABASE=ConvertX TV402U XLOADER + +usb:v093BpA005* + ID_MODEL_FROM_DATABASE=ConvertX TV100U A/V Capture + +usb:v093BpA102* + ID_MODEL_FROM_DATABASE=ConvertX M402U A/V Capture + +usb:v093BpA104* + ID_MODEL_FROM_DATABASE=ConvertX PX-TV402U/NA + +usb:v093C* + ID_VENDOR_FROM_DATABASE=Intrepid Control Systems, Inc. + +usb:v093Cp0601* + ID_MODEL_FROM_DATABASE=ValueCAN + +usb:v093Cp0701* + ID_MODEL_FROM_DATABASE=NeoVI Blue vehicle bus interface + +usb:v093D* + ID_VENDOR_FROM_DATABASE=InnoSync, Inc. + +usb:v093E* + ID_VENDOR_FROM_DATABASE=J.S.T. Mfg. Co., Ltd + +usb:v093F* + ID_VENDOR_FROM_DATABASE=Olympia Telecom Vertriebs GmbH + +usb:v0940* + ID_VENDOR_FROM_DATABASE=Japan Storage Battery Co., Ltd + +usb:v0941* + ID_VENDOR_FROM_DATABASE=Photobit Corp. + +usb:v0942* + ID_VENDOR_FROM_DATABASE=i2Go.com, LLC + +usb:v0943* + ID_VENDOR_FROM_DATABASE=HCL Technologies India Private, Ltd + +usb:v0944* + ID_VENDOR_FROM_DATABASE=KORG, Inc. + +usb:v0944p0001* + ID_MODEL_FROM_DATABASE=PXR4 4-Track Digital Recorder + +usb:v0944p0020* + ID_MODEL_FROM_DATABASE=KAOSS Pad KP3 Dynamic Effect/Sampler + +usb:v0944p0023* + ID_MODEL_FROM_DATABASE=KAOSSILATOR PRO Dynamic Phrase Synthesizer + +usb:v0944p010D* + ID_MODEL_FROM_DATABASE=nanoKEY MIDI keyboard + +usb:v0944p010E* + ID_MODEL_FROM_DATABASE=nanoPAD pad controller + +usb:v0944p010F* + ID_MODEL_FROM_DATABASE=nanoKONTROL studio controller + +usb:v0944p0117* + ID_MODEL_FROM_DATABASE=nanoKONTROL2 MIDI Controller + +usb:v0944p0F03* + ID_MODEL_FROM_DATABASE=K-Series K61P MIDI studio controller + +usb:v0945* + ID_VENDOR_FROM_DATABASE=Pasco Scientific + +usb:v0948* + ID_VENDOR_FROM_DATABASE=Kronauer music in digital + +usb:v0948p0301* + ID_MODEL_FROM_DATABASE=USB Pro (24/48) + +usb:v0948p0302* + ID_MODEL_FROM_DATABASE=USB Pro (24/96 playback) + +usb:v0948p0303* + ID_MODEL_FROM_DATABASE=USB Pro (24/96 record) + +usb:v0948p0304* + ID_MODEL_FROM_DATABASE=USB Pro (16/48) + +usb:v0948p1105* + ID_MODEL_FROM_DATABASE=USB One + +usb:v094B* + ID_VENDOR_FROM_DATABASE=Linkup Systems Corp. + +usb:v094Bp0001* + ID_MODEL_FROM_DATABASE=neonode N2 + +usb:v094D* + ID_VENDOR_FROM_DATABASE=Cable Television Laboratories + +usb:v094F* + ID_VENDOR_FROM_DATABASE=Yano + +usb:v094Fp0101* + ID_MODEL_FROM_DATABASE=U640MO-03 + +usb:v094Fp05FC* + ID_MODEL_FROM_DATABASE=METALWEAR-HDD + +usb:v0951* + ID_VENDOR_FROM_DATABASE=Kingston Technology + +usb:v0951p0008* + ID_MODEL_FROM_DATABASE=Ethernet + +usb:v0951p000A* + ID_MODEL_FROM_DATABASE=KNU101TX 100baseTX Ethernet + +usb:v0951p1600* + ID_MODEL_FROM_DATABASE=DataTraveler II Pen Drive + +usb:v0951p1601* + ID_MODEL_FROM_DATABASE=DataTraveler II+ Pen Drive + +usb:v0951p1602* + ID_MODEL_FROM_DATABASE=DataTraveler Mini + +usb:v0951p1603* + ID_MODEL_FROM_DATABASE=DataTraveler 1GB/2GB Pen Drive + +usb:v0951p1606* + ID_MODEL_FROM_DATABASE=Eee PC 701 SD Card Reader [ENE UB6225] + +usb:v0951p1607* + ID_MODEL_FROM_DATABASE=DataTraveler 100 + +usb:v0951p160D* + ID_MODEL_FROM_DATABASE=DataTraveler Vault Privacy + +usb:v0951p1613* + ID_MODEL_FROM_DATABASE=DataTraveler DT101C Flash Drive + +usb:v0951p1616* + ID_MODEL_FROM_DATABASE=DataTraveler Locker 4GB + +usb:v0951p1621* + ID_MODEL_FROM_DATABASE=DataTraveler 150 (32GB) + +usb:v0951p1624* + ID_MODEL_FROM_DATABASE=DataTraveler G2 + +usb:v0951p1625* + ID_MODEL_FROM_DATABASE=DataTraveler 101 II + +usb:v0951p162A* + ID_MODEL_FROM_DATABASE=DataTraveler 112 4GB Pen Drive + +usb:v0951p162D* + ID_MODEL_FROM_DATABASE=DataTraveler 102 + +usb:v0951p1630* + ID_MODEL_FROM_DATABASE=DataTraveler 200 (32GB) + +usb:v0951p1642* + ID_MODEL_FROM_DATABASE=DT101 G2 + +usb:v0951p1643* + ID_MODEL_FROM_DATABASE=DataTraveler G3 + +usb:v0951p1653* + ID_MODEL_FROM_DATABASE=Data Traveler 100 G2 8 GiB + +usb:v0951p1656* + ID_MODEL_FROM_DATABASE=DataTraveler Ultimate G2 + +usb:v0951p1689* + ID_MODEL_FROM_DATABASE=DataTraveler SE9 + +usb:v0951p168A* + ID_MODEL_FROM_DATABASE=DataTraveler Micro + +usb:v0951p168C* + ID_MODEL_FROM_DATABASE=DT Elite 3.0 + +usb:v0954* + ID_VENDOR_FROM_DATABASE=RPM Systems Corp. + +usb:v0955* + ID_VENDOR_FROM_DATABASE=NVidia Corp. + +usb:v0955p7030* + ID_MODEL_FROM_DATABASE=Tegra 3 (recovery mode) + +usb:v0955p7100* + ID_MODEL_FROM_DATABASE=Notion Ink Adam + +usb:v0956* + ID_VENDOR_FROM_DATABASE=BSquare Corp. + +usb:v0957* + ID_VENDOR_FROM_DATABASE=Agilent Technologies, Inc. + +usb:v0957p0200* + ID_MODEL_FROM_DATABASE=E-Video DC-350 Camera + +usb:v0957p0202* + ID_MODEL_FROM_DATABASE=E-Video DC-350 Camera + +usb:v0957p0518* + ID_MODEL_FROM_DATABASE=82357B GPIB Interface + +usb:v0957p0A07* + ID_MODEL_FROM_DATABASE=34411A Multimeter + +usb:v0957p1745* + ID_MODEL_FROM_DATABASE=Test and Measurement Device (IVI) + +usb:v0957p2918* + ID_MODEL_FROM_DATABASE=U2702A oscilloscope + +usb:v0958* + ID_VENDOR_FROM_DATABASE=CompuLink Research, Inc. + +usb:v0959* + ID_VENDOR_FROM_DATABASE=Cologne Chip AG + +usb:v0959p2BD0* + ID_MODEL_FROM_DATABASE=Intelligent ISDN (Ver. 3.60.04) + +usb:v095A* + ID_VENDOR_FROM_DATABASE=Portsmith + +usb:v095Ap3003* + ID_MODEL_FROM_DATABASE=Express Ethernet + +usb:v095B* + ID_VENDOR_FROM_DATABASE=Medialogic Corp. + +usb:v095C* + ID_VENDOR_FROM_DATABASE=K-Tec Electronics + +usb:v095D* + ID_VENDOR_FROM_DATABASE=Polycom, Inc. + +usb:v095Dp0001* + ID_MODEL_FROM_DATABASE=Polycom ViaVideo + +usb:v0967* + ID_VENDOR_FROM_DATABASE=Acer (??) + +usb:v0967p0204* + ID_MODEL_FROM_DATABASE=WarpLink 802.11b Adapter + +usb:v0968* + ID_VENDOR_FROM_DATABASE=Catalyst Enterprises, Inc. + +usb:v096E* + ID_VENDOR_FROM_DATABASE=Feitian Technologies, Inc. + +usb:v096Ep0120* + ID_MODEL_FROM_DATABASE=Microcosm Ltd Dinkey + +usb:v096Ep0802* + ID_MODEL_FROM_DATABASE=ePass2000 (G&D STARCOS SPK 2.4) + +usb:v096Ep0807* + ID_MODEL_FROM_DATABASE=ePass2003 + +usb:v0971* + ID_VENDOR_FROM_DATABASE=Gretag-Macbeth AG + +usb:v0971p2003* + ID_MODEL_FROM_DATABASE=Eye-One display + +usb:v0971p2005* + ID_MODEL_FROM_DATABASE=Huey + +usb:v0971p2007* + ID_MODEL_FROM_DATABASE=ColorMunki + +usb:v0973* + ID_VENDOR_FROM_DATABASE=Schlumberger + +usb:v0973p0001* + ID_MODEL_FROM_DATABASE=e-gate Smart Card + +usb:v0974* + ID_VENDOR_FROM_DATABASE=Datagraphix, a business unit of Anacomp + +usb:v0975* + ID_VENDOR_FROM_DATABASE=OL'E Communications, Inc. + +usb:v0976* + ID_VENDOR_FROM_DATABASE=Adirondack Wire & Cable + +usb:v0977* + ID_VENDOR_FROM_DATABASE=Lightsurf Technologies + +usb:v0978* + ID_VENDOR_FROM_DATABASE=Beckhoff GmbH + +usb:v0979* + ID_VENDOR_FROM_DATABASE=Jeilin Technology Corp., Ltd + +usb:v0979p0224* + ID_MODEL_FROM_DATABASE=JL2005A Toy Camera + +usb:v0979p0226* + ID_MODEL_FROM_DATABASE=JL2005A Toy Camera + +usb:v0979p0227* + ID_MODEL_FROM_DATABASE=JL2005B/C/D Toy Camera + +usb:v097A* + ID_VENDOR_FROM_DATABASE=Minds At Work LLC + +usb:v097Ap0001* + ID_MODEL_FROM_DATABASE=Digital Wallet + +usb:v097B* + ID_VENDOR_FROM_DATABASE=Knudsen Engineering, Ltd + +usb:v097C* + ID_VENDOR_FROM_DATABASE=Marunix Co., Ltd + +usb:v097D* + ID_VENDOR_FROM_DATABASE=Rosun Technologies, Inc. + +usb:v097E* + ID_VENDOR_FROM_DATABASE=Biopac Systems Inc. + +usb:v097Ep0035* + ID_MODEL_FROM_DATABASE=MP35 v1.0 + +usb:v097F* + ID_VENDOR_FROM_DATABASE=Barun Electronics Co., Ltd + +usb:v0981* + ID_VENDOR_FROM_DATABASE=Oak Technology, Ltd + +usb:v0984* + ID_VENDOR_FROM_DATABASE=Apricorn + +usb:v0984p0040* + ID_MODEL_FROM_DATABASE=SATA Wire (2.5") + +usb:v0984p0200* + ID_MODEL_FROM_DATABASE=Hard Drive Storage (TPP) + +usb:v0985* + ID_VENDOR_FROM_DATABASE=cab Produkttechnik GmbH & Co KG + +usb:v0985p0045* + ID_MODEL_FROM_DATABASE=Mach4/200 Label Printer + +usb:v0985p00A3* + ID_MODEL_FROM_DATABASE=A3/200 or A3/300 Label Printer + +usb:v0986* + ID_VENDOR_FROM_DATABASE=Matsushita Electric Works, Ltd. + +usb:v098C* + ID_VENDOR_FROM_DATABASE=Vitana Corp. + +usb:v098D* + ID_VENDOR_FROM_DATABASE=INDesign + +usb:v098E* + ID_VENDOR_FROM_DATABASE=Integrated Intellectual Property, Inc. + +usb:v098F* + ID_VENDOR_FROM_DATABASE=Kenwood TMI Corp. + +usb:v0993* + ID_VENDOR_FROM_DATABASE=Gemstar eBook Group, Ltd + +usb:v0993p0001* + ID_MODEL_FROM_DATABASE=REB1100 eBook Reader + +usb:v0993p0002* + ID_MODEL_FROM_DATABASE=eBook + +usb:v0996* + ID_VENDOR_FROM_DATABASE=Integrated Telecom Express, Inc. + +usb:v099A* + ID_VENDOR_FROM_DATABASE=Zippy Technology Corp. + +usb:v099Ap0638* + ID_MODEL_FROM_DATABASE=Sanwa Supply Inc. Small Keyboard + +usb:v099Ap610C* + ID_MODEL_FROM_DATABASE=EL-610 Super Mini Electron luminescent Keyboard + +usb:v099Ap7160* + ID_MODEL_FROM_DATABASE=Hyper Slim Keyboard + +usb:v09A3* + ID_VENDOR_FROM_DATABASE=PairGain Technologies + +usb:v09A4* + ID_VENDOR_FROM_DATABASE=Contech Research, Inc. + +usb:v09A5* + ID_VENDOR_FROM_DATABASE=VCON Telecommunications + +usb:v09A6* + ID_VENDOR_FROM_DATABASE=Poinchips + +usb:v09A6p8001* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v09A7* + ID_VENDOR_FROM_DATABASE=Data Transmission Network Corp. + +usb:v09A8* + ID_VENDOR_FROM_DATABASE=Lin Shiung Enterprise Co., Ltd + +usb:v09A9* + ID_VENDOR_FROM_DATABASE=Smart Card Technologies Co., Ltd + +usb:v09AA* + ID_VENDOR_FROM_DATABASE=Intersil Corp. + +usb:v09AAp1000* + ID_MODEL_FROM_DATABASE=Prism GT 802.11b/g Adapter + +usb:v09AAp3642* + ID_MODEL_FROM_DATABASE=Prism 2.x 802.11b Adapter + +usb:v09AB* + ID_VENDOR_FROM_DATABASE=Japan Cash Machine Co., Ltd. + +usb:v09AE* + ID_VENDOR_FROM_DATABASE=Tripp Lite + +usb:v09B2* + ID_VENDOR_FROM_DATABASE=Franklin Electronic Publishers, Inc. + +usb:v09B2p0001* + ID_MODEL_FROM_DATABASE=eBookman Palm Computer + +usb:v09B3* + ID_VENDOR_FROM_DATABASE=Altius Solutions, Inc. + +usb:v09B4* + ID_VENDOR_FROM_DATABASE=MDS Telephone Systems + +usb:v09B5* + ID_VENDOR_FROM_DATABASE=Celltrix Technology Co., Ltd + +usb:v09BC* + ID_VENDOR_FROM_DATABASE=Grundig + +usb:v09BCp0002* + ID_MODEL_FROM_DATABASE=MPaxx MP150 MP3 Player + +usb:v09BE* + ID_VENDOR_FROM_DATABASE=MySmart.Com + +usb:v09BEp0001* + ID_MODEL_FROM_DATABASE=MySmartPad + +usb:v09BF* + ID_VENDOR_FROM_DATABASE=Auerswald GmbH & Co. KG + +usb:v09BFp00C0* + ID_MODEL_FROM_DATABASE=COMpact 2104 ISDN PBX + +usb:v09BFp00DB* + ID_MODEL_FROM_DATABASE=COMpact 4410/2206 ISDN + +usb:v09BFp00DC* + ID_MODEL_FROM_DATABASE=COMpact 4406 DSL (PBX) + +usb:v09BFp00DD* + ID_MODEL_FROM_DATABASE=COMpact 2204 (PBX) + +usb:v09BFp00DE* + ID_MODEL_FROM_DATABASE=COMpact 2104 (Rev.2 PBX) + +usb:v09BFp00E0* + ID_MODEL_FROM_DATABASE=COMmander Business (PBX) + +usb:v09BFp00E2* + ID_MODEL_FROM_DATABASE=COMmander Basic.2 (PBX) + +usb:v09BFp00F1* + ID_MODEL_FROM_DATABASE=COMfort 2000 (System telephone) + +usb:v09BFp00F2* + ID_MODEL_FROM_DATABASE=COMfort 1200 (System telephone) + +usb:v09BFp00F5* + ID_MODEL_FROM_DATABASE=COMfortel 2500 (System telephone) + +usb:v09BFp8000* + ID_MODEL_FROM_DATABASE=COMpact 2104 DSL (DSL modem) + +usb:v09BFp8001* + ID_MODEL_FROM_DATABASE=COMpact 4406 DSL (DSL modem) + +usb:v09BFp8002* + ID_MODEL_FROM_DATABASE=Analog/ISDN Converter (Line converter) + +usb:v09BFp8005* + ID_MODEL_FROM_DATABASE=WG-640 (Automatic event dialer) + +usb:v09C0* + ID_VENDOR_FROM_DATABASE=Genpix Electronics, LLC + +usb:v09C0p0136* + ID_MODEL_FROM_DATABASE=Axon CNS, MultiClamp 700B + +usb:v09C0p0202* + ID_MODEL_FROM_DATABASE=8PSK DVB-S tuner + +usb:v09C0p0203* + ID_MODEL_FROM_DATABASE=Skywalker-1 DVB-S tuner + +usb:v09C0p0204* + ID_MODEL_FROM_DATABASE=Skywalker-CW3K DVB-S tuner + +usb:v09C0p0205* + ID_MODEL_FROM_DATABASE=Skywalker-CW3K DVB-S tuner + +usb:v09C0p0206* + ID_MODEL_FROM_DATABASE=Skywalker-2 DVB-S tuner + +usb:v09C1* + ID_VENDOR_FROM_DATABASE=Arris Interactive LLC + +usb:v09C1p1337* + ID_MODEL_FROM_DATABASE=TOUCHSTONE DEVICE + +usb:v09C2* + ID_VENDOR_FROM_DATABASE=Nisca Corp. + +usb:v09C3* + ID_VENDOR_FROM_DATABASE=ActivCard, Inc. + +usb:v09C3p0007* + ID_MODEL_FROM_DATABASE=Reader V2 + +usb:v09C3p0008* + ID_MODEL_FROM_DATABASE=ZFG-9800-AC SmartCard Reader + +usb:v09C3p0014* + ID_MODEL_FROM_DATABASE=ActivIdentity ActivKey SIM USB Token + +usb:v09C4* + ID_VENDOR_FROM_DATABASE=ACTiSYS Corp. + +usb:v09C4p0011* + ID_MODEL_FROM_DATABASE=ACT-IR2000U IrDA Dongle + +usb:v09C5* + ID_VENDOR_FROM_DATABASE=Memory Corp. + +usb:v09CC* + ID_VENDOR_FROM_DATABASE=Workbit Corp. + +usb:v09CCp0404* + ID_MODEL_FROM_DATABASE=BAFO USB-ATA/ATAPI Bridge Controller + +usb:v09CD* + ID_VENDOR_FROM_DATABASE=Psion Dacom Home Networks, Ltd + +usb:v09CDp2001* + ID_MODEL_FROM_DATABASE=Psion WaveFinder DAB radio receiver + +usb:v09CE* + ID_VENDOR_FROM_DATABASE=City Electronics, Ltd + +usb:v09CF* + ID_VENDOR_FROM_DATABASE=Electronics Testing Center, Taiwan + +usb:v09D1* + ID_VENDOR_FROM_DATABASE=NeoMagic, Inc. + +usb:v09D2* + ID_VENDOR_FROM_DATABASE=Vreelin Engineering, Inc. + +usb:v09D3* + ID_VENDOR_FROM_DATABASE=Com One + +usb:v09D3p0001* + ID_MODEL_FROM_DATABASE=ISDN TA + +usb:v09D7* + ID_VENDOR_FROM_DATABASE=Novatel Wireless + +usb:v09D7p0100* + ID_MODEL_FROM_DATABASE=NovAtel FlexPack GPS receiver + +usb:v09D9* + ID_VENDOR_FROM_DATABASE=KRF Tech, Ltd + +usb:v09DA* + ID_VENDOR_FROM_DATABASE=A4 Tech Co., Ltd + +usb:v09DAp0006* + ID_MODEL_FROM_DATABASE=Optical Mouse WOP-35 / Trust 450L Optical Mouse + +usb:v09DAp000A* + ID_MODEL_FROM_DATABASE=Optical Mouse Opto 510D + +usb:v09DAp000E* + ID_MODEL_FROM_DATABASE=X-F710F Optical Mouse 3xFire Gaming Mouse + +usb:v09DAp0018* + ID_MODEL_FROM_DATABASE=Trust Human Interface Device + +usb:v09DAp001A* + ID_MODEL_FROM_DATABASE=Wireless Mouse & RXM-15 Receiver + +usb:v09DAp002A* + ID_MODEL_FROM_DATABASE=Wireless Optical Mouse NB-30 + +usb:v09DAp022B* + ID_MODEL_FROM_DATABASE=Wireless Mouse (Battery Free) + +usb:v09DAp024F* + ID_MODEL_FROM_DATABASE=RF Receiver and G6-20D Wireless Optical Mouse + +usb:v09DAp0260* + ID_MODEL_FROM_DATABASE=KV-300H Isolation Keyboard + +usb:v09DAp032B* + ID_MODEL_FROM_DATABASE=Wireless Mouse (Battery Free) + +usb:v09DAp8090* + ID_MODEL_FROM_DATABASE=X-718BK Oscar Optical Gaming Mouse + +usb:v09DAp9033* + ID_MODEL_FROM_DATABASE=X-718BK Optical Mouse + +usb:v09DAp9090* + ID_MODEL_FROM_DATABASE=XL-750BK Laser Mouse + +usb:v09DB* + ID_VENDOR_FROM_DATABASE=Measurement Computing Corp. + +usb:v09DBp0075* + ID_MODEL_FROM_DATABASE=MiniLab 1008 + +usb:v09DBp0076* + ID_MODEL_FROM_DATABASE=PMD-1024 + +usb:v09DBp007A* + ID_MODEL_FROM_DATABASE=PMD-1208LS + +usb:v09DBp0081* + ID_MODEL_FROM_DATABASE=USB-1616FS + +usb:v09DBp0082* + ID_MODEL_FROM_DATABASE=USB-1208FS + +usb:v09DBp0088* + ID_MODEL_FROM_DATABASE=USB-1616FS internal hub + +usb:v09DC* + ID_VENDOR_FROM_DATABASE=Aimex Corp. + +usb:v09DD* + ID_VENDOR_FROM_DATABASE=Fellowes, Inc. + +usb:v09DF* + ID_VENDOR_FROM_DATABASE=Addonics Technologies Corp. + +usb:v09E1* + ID_VENDOR_FROM_DATABASE=Intellon Corp. + +usb:v09E1p5121* + ID_MODEL_FROM_DATABASE=MicroLink dLAN + +usb:v09E5* + ID_VENDOR_FROM_DATABASE=Jo-Dan International, Inc. + +usb:v09E6* + ID_VENDOR_FROM_DATABASE=Silutia, Inc. + +usb:v09E7* + ID_VENDOR_FROM_DATABASE=Real 3D, Inc. + +usb:v09E8* + ID_VENDOR_FROM_DATABASE=AKAI Professional M.I. Corp. + +usb:v09E8p0062* + ID_MODEL_FROM_DATABASE=MPD16 MIDI Pad Controller Unit + +usb:v09E8p006D* + ID_MODEL_FROM_DATABASE=EWI electronic wind instrument + +usb:v09E8p0071* + ID_MODEL_FROM_DATABASE=MPK25 MIDI Keyboard + +usb:v09E8p0076* + ID_MODEL_FROM_DATABASE=LPK25 MIDI Keyboard + +usb:v09E9* + ID_VENDOR_FROM_DATABASE=Chen-Source, Inc. + +usb:v09EB* + ID_VENDOR_FROM_DATABASE=IM Networks, Inc. + +usb:v09EBp4331* + ID_MODEL_FROM_DATABASE=iRhythm Tuner Remote + +usb:v09EF* + ID_VENDOR_FROM_DATABASE=Xitel + +usb:v09EFp0101* + ID_MODEL_FROM_DATABASE=MD-Port DG2 MiniDisc Interface + +usb:v09F3* + ID_VENDOR_FROM_DATABASE=GoFlight, Inc. + +usb:v09F3p0018* + ID_MODEL_FROM_DATABASE=GF-46 Multi-Mode Display Module + +usb:v09F3p0028* + ID_MODEL_FROM_DATABASE=RP-48 Combination Pushbutton-Rotary Module + +usb:v09F3p0048* + ID_MODEL_FROM_DATABASE=LGTII - Landing Gear and Trim Control Module + +usb:v09F3p0064* + ID_MODEL_FROM_DATABASE=MCPPro - Airliner Mode Control Panel (Autopilot) + +usb:v09F3p0300* + ID_MODEL_FROM_DATABASE=EFIS - Electronic Flight Information System + +usb:v09F5* + ID_VENDOR_FROM_DATABASE=AresCom + +usb:v09F5p0168* + ID_MODEL_FROM_DATABASE=Network Adapter + +usb:v09F5p0188* + ID_MODEL_FROM_DATABASE=LAN Adapter + +usb:v09F5p0850* + ID_MODEL_FROM_DATABASE=Adapter + +usb:v09F6* + ID_VENDOR_FROM_DATABASE=RocketChips, Inc. + +usb:v09F7* + ID_VENDOR_FROM_DATABASE=Edu-Science (H.K.), Ltd + +usb:v09F8* + ID_VENDOR_FROM_DATABASE=SoftConnex Technologies, Inc. + +usb:v09F9* + ID_VENDOR_FROM_DATABASE=Bay Associates + +usb:v09FA* + ID_VENDOR_FROM_DATABASE=Mtek Vision + +usb:v09FB* + ID_VENDOR_FROM_DATABASE=Altera + +usb:v09FBp6001* + ID_MODEL_FROM_DATABASE=Blaster + +usb:v09FF* + ID_VENDOR_FROM_DATABASE=Gain Technology Corp. + +usb:v0A00* + ID_VENDOR_FROM_DATABASE=Liquid Audio + +usb:v0A01* + ID_VENDOR_FROM_DATABASE=ViA, Inc. + +usb:v0A05* + ID_VENDOR_FROM_DATABASE=Unknown Manufacturer + +usb:v0A05p7211* + ID_MODEL_FROM_DATABASE=hub + +usb:v0A07* + ID_VENDOR_FROM_DATABASE=Ontrak Control Systems Inc. + +usb:v0A07p0064* + ID_MODEL_FROM_DATABASE=ADU100 Data Acquisition Interface + +usb:v0A07p0078* + ID_MODEL_FROM_DATABASE=ADU120 Data Acquisition Interface + +usb:v0A07p0082* + ID_MODEL_FROM_DATABASE=ADU130 Data Acquisition Interface + +usb:v0A07p00C8* + ID_MODEL_FROM_DATABASE=ADU200 Relay I/O Interface + +usb:v0A07p00D0* + ID_MODEL_FROM_DATABASE=ADU208 Relay I/O Interface + +usb:v0A07p00DA* + ID_MODEL_FROM_DATABASE=ADU218 Solid-State Relay I/O Interface + +usb:v0A0B* + ID_VENDOR_FROM_DATABASE=Cybex Computer Products Co. + +usb:v0A11* + ID_VENDOR_FROM_DATABASE=Xentec, Inc. + +usb:v0A12* + ID_VENDOR_FROM_DATABASE=Cambridge Silicon Radio, Ltd + +usb:v0A12p0001* + ID_MODEL_FROM_DATABASE=Bluetooth Dongle (HCI mode) + +usb:v0A12p0002* + ID_MODEL_FROM_DATABASE=Frontline Test Equipment Bluetooth Device + +usb:v0A12p0003* + ID_MODEL_FROM_DATABASE=Nanosira + +usb:v0A12p0004* + ID_MODEL_FROM_DATABASE=Nanosira WHQL Reference Radio + +usb:v0A12p0005* + ID_MODEL_FROM_DATABASE=Nanosira-Multimedia + +usb:v0A12p0006* + ID_MODEL_FROM_DATABASE=Nanosira-Multimedia WHQL Reference Radio + +usb:v0A12p0007* + ID_MODEL_FROM_DATABASE=Nanosira3-ROM + +usb:v0A12p0008* + ID_MODEL_FROM_DATABASE=Nanosira3-ROM + +usb:v0A12p0009* + ID_MODEL_FROM_DATABASE=Nanosira4-EDR WHQL Reference Radio + +usb:v0A12p000A* + ID_MODEL_FROM_DATABASE=Nanosira4-EDR-ROM + +usb:v0A12p000B* + ID_MODEL_FROM_DATABASE=Nanosira5-ROM + +usb:v0A12p0043* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0A12p0100* + ID_MODEL_FROM_DATABASE=Casira with BlueCore2-External Module + +usb:v0A12p0101* + ID_MODEL_FROM_DATABASE=Casira with BlueCore2-Flash Module + +usb:v0A12p0102* + ID_MODEL_FROM_DATABASE=Casira with BlueCore3-Multimedia Module + +usb:v0A12p0103* + ID_MODEL_FROM_DATABASE=Casira with BlueCore3-Flash Module + +usb:v0A12p0104* + ID_MODEL_FROM_DATABASE=Casira with BlueCore4-External Module + +usb:v0A12p0105* + ID_MODEL_FROM_DATABASE=Casira with BlueCore4-Multimedia Module + +usb:v0A12p1000* + ID_MODEL_FROM_DATABASE=Bluetooth Dongle (HID proxy mode) + +usb:v0A12p1010* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0A12p1011* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0A12p1012* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0A12pFFFF* + ID_MODEL_FROM_DATABASE=USB Bluetooth Device in DFU State + +usb:v0A13* + ID_VENDOR_FROM_DATABASE=Telebyte, Inc. + +usb:v0A14* + ID_VENDOR_FROM_DATABASE=Spacelabs Medical, Inc. + +usb:v0A15* + ID_VENDOR_FROM_DATABASE=Scalar Corp. + +usb:v0A16* + ID_VENDOR_FROM_DATABASE=Trek Technology (S) PTE, Ltd + +usb:v0A16p1111* + ID_MODEL_FROM_DATABASE=ThumbDrive + +usb:v0A16p8888* + ID_MODEL_FROM_DATABASE=IBM USB Memory Key + +usb:v0A16p9988* + ID_MODEL_FROM_DATABASE=Trek2000 TD-G2 + +usb:v0A17* + ID_VENDOR_FROM_DATABASE=Pentax Corp. + +usb:v0A17p0004* + ID_MODEL_FROM_DATABASE=Optio 330 + +usb:v0A17p0006* + ID_MODEL_FROM_DATABASE=Optio S + +usb:v0A17p0007* + ID_MODEL_FROM_DATABASE=Optio 550 + +usb:v0A17p0009* + ID_MODEL_FROM_DATABASE=Optio 33WR + +usb:v0A17p000A* + ID_MODEL_FROM_DATABASE=Optio 555 + +usb:v0A17p000C* + ID_MODEL_FROM_DATABASE=Optio 43WR (mass storage mode) + +usb:v0A17p000D* + ID_MODEL_FROM_DATABASE=Optio 43WR + +usb:v0A17p0015* + ID_MODEL_FROM_DATABASE=Optio S40/S5i + +usb:v0A17p003B* + ID_MODEL_FROM_DATABASE=Optio 50 (mass storage mode) + +usb:v0A17p003D* + ID_MODEL_FROM_DATABASE=Optio S55 + +usb:v0A17p0043* + ID_MODEL_FROM_DATABASE=*ist DL + +usb:v0A17p0047* + ID_MODEL_FROM_DATABASE=Optio S60 + +usb:v0A17p0052* + ID_MODEL_FROM_DATABASE=Optio 60 Digital Camera + +usb:v0A17p006E* + ID_MODEL_FROM_DATABASE=K10D + +usb:v0A17p0070* + ID_MODEL_FROM_DATABASE=K100D + +usb:v0A17p0093* + ID_MODEL_FROM_DATABASE=K200D + +usb:v0A17p00A7* + ID_MODEL_FROM_DATABASE=Optio E50 + +usb:v0A17p1001* + ID_MODEL_FROM_DATABASE=EI2000 Camera powered by Digita! + +usb:v0A18* + ID_VENDOR_FROM_DATABASE=Heidelberger Druckmaschinen AG + +usb:v0A19* + ID_VENDOR_FROM_DATABASE=Hua Geng Technologies, Inc. + +usb:v0A21* + ID_VENDOR_FROM_DATABASE=Medtronic Physio Control Corp. + +usb:v0A21p8001* + ID_MODEL_FROM_DATABASE=MMT-7305WW [Medtronic Minimed CareLink] + +usb:v0A22* + ID_VENDOR_FROM_DATABASE=Century Semiconductor USA, Inc. + +usb:v0A27* + ID_VENDOR_FROM_DATABASE=Datacard Group + +usb:v0A27p0102* + ID_MODEL_FROM_DATABASE=SP35 + +usb:v0A2C* + ID_VENDOR_FROM_DATABASE=AK-Modul-Bus Computer GmbH + +usb:v0A2Cp0008* + ID_MODEL_FROM_DATABASE=GPIO Ports + +usb:v0A34* + ID_VENDOR_FROM_DATABASE=TG3 Electronics, Inc. + +usb:v0A34p0101* + ID_MODEL_FROM_DATABASE=TG82tp + +usb:v0A34p0110* + ID_MODEL_FROM_DATABASE=Deck 82-key backlit keyboard + +usb:v0A35* + ID_VENDOR_FROM_DATABASE=Radikal Technologies + +usb:v0A35p002A* + ID_MODEL_FROM_DATABASE=SAC - Software Assigned Controller + +usb:v0A35p008A* + ID_MODEL_FROM_DATABASE=SAC Hub + +usb:v0A39* + ID_VENDOR_FROM_DATABASE=Gilat Satellite Networks, Ltd + +usb:v0A3A* + ID_VENDOR_FROM_DATABASE=PentaMedia Co., Ltd + +usb:v0A3Ap0163* + ID_MODEL_FROM_DATABASE=KN-W510U 1.0 Wireless LAN Adapter + +usb:v0A3C* + ID_VENDOR_FROM_DATABASE=NTT DoCoMo, Inc. + +usb:v0A3D* + ID_VENDOR_FROM_DATABASE=Varo Vision + +usb:v0A3F* + ID_VENDOR_FROM_DATABASE=Swissonic AG + +usb:v0A43* + ID_VENDOR_FROM_DATABASE=Boca Systems, Inc. + +usb:v0A46* + ID_VENDOR_FROM_DATABASE=Davicom Semiconductor, Inc. + +usb:v0A46p0268* + ID_MODEL_FROM_DATABASE=ST268 + +usb:v0A46p6688* + ID_MODEL_FROM_DATABASE=ZT6688 Fast Ethernet Adapter + +usb:v0A46p8515* + ID_MODEL_FROM_DATABASE=ADMtek ADM8515 NIC + +usb:v0A46p9000* + ID_MODEL_FROM_DATABASE=DM9000E Fast Ethernet Adapter + +usb:v0A46p9601* + ID_MODEL_FROM_DATABASE=DM9601 Fast Ethernet Adapter + +usb:v0A47* + ID_VENDOR_FROM_DATABASE=Hirose Electric + +usb:v0A48* + ID_VENDOR_FROM_DATABASE=I/O Interconnect + +usb:v0A48p3233* + ID_MODEL_FROM_DATABASE=Multimedia Card Reader + +usb:v0A48p3239* + ID_MODEL_FROM_DATABASE=Multimedia Card Reader + +usb:v0A48p3258* + ID_MODEL_FROM_DATABASE=Dane Elec zMate SD Reader + +usb:v0A48p3259* + ID_MODEL_FROM_DATABASE=Dane Elec zMate CF Reader + +usb:v0A48p5000* + ID_MODEL_FROM_DATABASE=MediaGear xD-SM + +usb:v0A48p500A* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0A48p500F* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0A48p5010* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0A48p5011* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0A48p5014* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0A48p5020* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0A48p5021* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0A48p5022* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0A48p5023* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0A48p5024* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0A48p5025* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0A4B* + ID_VENDOR_FROM_DATABASE=Fujitsu Media Devices, Ltd + +usb:v0A4C* + ID_VENDOR_FROM_DATABASE=Computex Co., Ltd + +usb:v0A4Cp15D9* + ID_MODEL_FROM_DATABASE=OPTICAL MOUSE + +usb:v0A4D* + ID_VENDOR_FROM_DATABASE=Evolution Electronics, Ltd + +usb:v0A4Dp0064* + ID_MODEL_FROM_DATABASE=MK-225 Driver + +usb:v0A4Dp0065* + ID_MODEL_FROM_DATABASE=MK-225C Driver + +usb:v0A4Dp0066* + ID_MODEL_FROM_DATABASE=MK-225C Driver + +usb:v0A4Dp0067* + ID_MODEL_FROM_DATABASE=MK-425C Driver + +usb:v0A4Dp0078* + ID_MODEL_FROM_DATABASE=MK-37 Driver + +usb:v0A4Dp0079* + ID_MODEL_FROM_DATABASE=MK-37C Driver + +usb:v0A4Dp007A* + ID_MODEL_FROM_DATABASE=MK-37C Driver + +usb:v0A4Dp008C* + ID_MODEL_FROM_DATABASE=TerraTec MIDI MASTER + +usb:v0A4Dp008D* + ID_MODEL_FROM_DATABASE=MK-249C Driver + +usb:v0A4Dp008E* + ID_MODEL_FROM_DATABASE=MK-249C MIDI Keyboard + +usb:v0A4Dp008F* + ID_MODEL_FROM_DATABASE=MK-449C Driver + +usb:v0A4Dp0090* + ID_MODEL_FROM_DATABASE=Keystation 49e Driver + +usb:v0A4Dp0091* + ID_MODEL_FROM_DATABASE=Keystation 61es Driver + +usb:v0A4Dp00A0* + ID_MODEL_FROM_DATABASE=MK-361 Driver + +usb:v0A4Dp00A1* + ID_MODEL_FROM_DATABASE=MK-361C Driver + +usb:v0A4Dp00A2* + ID_MODEL_FROM_DATABASE=MK-361C Driver + +usb:v0A4Dp00A3* + ID_MODEL_FROM_DATABASE=MK-461C MIDI Keyboard + +usb:v0A4Dp00B5* + ID_MODEL_FROM_DATABASE=Keystation Pro 88 Driver + +usb:v0A4Dp00D2* + ID_MODEL_FROM_DATABASE=E-Keys Driver + +usb:v0A4Dp00F0* + ID_MODEL_FROM_DATABASE=UC-16 Driver + +usb:v0A4Dp00F1* + ID_MODEL_FROM_DATABASE=X-Session Driver + +usb:v0A4Dp00F5* + ID_MODEL_FROM_DATABASE=UC-33e MIDI Controller + +usb:v0A4E* + ID_VENDOR_FROM_DATABASE=Steinberg Soft-und Hardware GmbH + +usb:v0A4F* + ID_VENDOR_FROM_DATABASE=Litton Systems, Inc. + +usb:v0A50* + ID_VENDOR_FROM_DATABASE=Mimaki Engineering Co., Ltd + +usb:v0A51* + ID_VENDOR_FROM_DATABASE=Sony Electronics, Inc. + +usb:v0A52* + ID_VENDOR_FROM_DATABASE=Jebsee Electronics Co., Ltd + +usb:v0A53* + ID_VENDOR_FROM_DATABASE=Portable Peripheral Co., Ltd + +usb:v0A53p1000* + ID_MODEL_FROM_DATABASE=Scanner + +usb:v0A53p2000* + ID_MODEL_FROM_DATABASE=Q-Scan A6 Scanner + +usb:v0A53p2001* + ID_MODEL_FROM_DATABASE=Q-Scan A6 Scanner + +usb:v0A53p2013* + ID_MODEL_FROM_DATABASE=Media Drive A6 Scanner + +usb:v0A53p2014* + ID_MODEL_FROM_DATABASE=Media Drive A6 Scanner + +usb:v0A53p2015* + ID_MODEL_FROM_DATABASE=BizCardReader 600C + +usb:v0A53p2016* + ID_MODEL_FROM_DATABASE=BizCardReader 600C + +usb:v0A53p202A* + ID_MODEL_FROM_DATABASE=Scanshell-CSSN + +usb:v0A53p3000* + ID_MODEL_FROM_DATABASE=Q-Scan A8 Scanner + +usb:v0A53p3002* + ID_MODEL_FROM_DATABASE=Q-Scan A8 Reader + +usb:v0A53p3015* + ID_MODEL_FROM_DATABASE=BizCardReader 300G + +usb:v0A53p302A* + ID_MODEL_FROM_DATABASE=LM9832 - PA570 Mini Business Card Scanner [Targus] + +usb:v0A53p5001* + ID_MODEL_FROM_DATABASE=BizCardReader 900C + +usb:v0A5A* + ID_VENDOR_FROM_DATABASE=Electronics For Imaging, Inc. + +usb:v0A5B* + ID_VENDOR_FROM_DATABASE=EAsics NV + +usb:v0A5C* + ID_VENDOR_FROM_DATABASE=Broadcom Corp. + +usb:v0A5Cp0201* + ID_MODEL_FROM_DATABASE=iLine10(tm) Network Adapter + +usb:v0A5Cp2000* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0A5Cp2001* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0A5Cp2009* + ID_MODEL_FROM_DATABASE=BCM2035 Bluetooth + +usb:v0A5Cp200A* + ID_MODEL_FROM_DATABASE=BCM2035 Bluetooth dongle + +usb:v0A5Cp200F* + ID_MODEL_FROM_DATABASE=Bluetooth Controller + +usb:v0A5Cp201D* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0A5Cp201E* + ID_MODEL_FROM_DATABASE=IBM Integrated Bluetooth IV + +usb:v0A5Cp2020* + ID_MODEL_FROM_DATABASE=Bluetooth dongle + +usb:v0A5Cp2021* + ID_MODEL_FROM_DATABASE=BCM2035B3 Bluetooth Adapter + +usb:v0A5Cp2033* + ID_MODEL_FROM_DATABASE=BCM2033 Bluetooth + +usb:v0A5Cp2035* + ID_MODEL_FROM_DATABASE=BCM2035 Bluetooth + +usb:v0A5Cp2038* + ID_MODEL_FROM_DATABASE=Blutonium Device + +usb:v0A5Cp2039* + ID_MODEL_FROM_DATABASE=BCM2045 Bluetooth + +usb:v0A5Cp2045* + ID_MODEL_FROM_DATABASE=Bluetooth Controller + +usb:v0A5Cp2046* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0A5Cp2047* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0A5Cp205E* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0A5Cp2100* + ID_MODEL_FROM_DATABASE=Bluetooth 2.0+eDR dongle + +usb:v0A5Cp2101* + ID_MODEL_FROM_DATABASE=BCM2045 Bluetooth + +usb:v0A5Cp2102* + ID_MODEL_FROM_DATABASE=ANYCOM Blue USB-200/250 + +usb:v0A5Cp2110* + ID_MODEL_FROM_DATABASE=BCM2045B (BDC-2) [Bluetooth Controller] + +usb:v0A5Cp2111* + ID_MODEL_FROM_DATABASE=ANYCOM Blue USB-UHE 200/250 + +usb:v0A5Cp2120* + ID_MODEL_FROM_DATABASE=2045 Bluetooth 2.0 USB-UHE Device with trace filter + +usb:v0A5Cp2121* + ID_MODEL_FROM_DATABASE=BCM2210 Bluetooth + +usb:v0A5Cp2122* + ID_MODEL_FROM_DATABASE=Bluetooth 2.0+EDR dongle + +usb:v0A5Cp2123* + ID_MODEL_FROM_DATABASE=Bluetooth dongle + +usb:v0A5Cp2130* + ID_MODEL_FROM_DATABASE=2045 Bluetooth 2.0 USB-UHE Device with trace filter + +usb:v0A5Cp2131* + ID_MODEL_FROM_DATABASE=2045 Bluetooth 2.0 Device with trace filter + +usb:v0A5Cp2145* + ID_MODEL_FROM_DATABASE=BCM2045B (BDC-2.1) [Bluetooth Controller] + +usb:v0A5Cp2148* + ID_MODEL_FROM_DATABASE=BCM92046DG-CL1ROM Bluetooth 2.1 Adapter + +usb:v0A5Cp2150* + ID_MODEL_FROM_DATABASE=BCM2046 Bluetooth Device + +usb:v0A5Cp2151* + ID_MODEL_FROM_DATABASE=Bluetooth + +usb:v0A5Cp2154* + ID_MODEL_FROM_DATABASE=BCM92046DG-CL1ROM Bluetooth 2.1 UHE Dongle + +usb:v0A5Cp217D* + ID_MODEL_FROM_DATABASE=HP Bluethunder + +usb:v0A5Cp217F* + ID_MODEL_FROM_DATABASE=BCM2045B (BDC-2.1) + +usb:v0A5Cp2198* + ID_MODEL_FROM_DATABASE=Bluetooth 3.0 Device + +usb:v0A5Cp219B* + ID_MODEL_FROM_DATABASE=Bluetooth 2.1 Device + +usb:v0A5Cp21B1* + ID_MODEL_FROM_DATABASE=HP Bluetooth Module + +usb:v0A5Cp21B4* + ID_MODEL_FROM_DATABASE=BCM2070 Bluetooth 2.1 + EDR + +usb:v0A5Cp21B9* + ID_MODEL_FROM_DATABASE=BCM2070 Bluetooth 2.1 + EDR + +usb:v0A5Cp21BA* + ID_MODEL_FROM_DATABASE=BCM2070 Bluetooth 2.1 + EDR + +usb:v0A5Cp21BB* + ID_MODEL_FROM_DATABASE=BCM2070 Bluetooth 2.1 + EDR + +usb:v0A5Cp21BC* + ID_MODEL_FROM_DATABASE=BCM2070 Bluetooth 2.1 + EDR + +usb:v0A5Cp21BD* + ID_MODEL_FROM_DATABASE=BCM2070 Bluetooth 2.1 + EDR + +usb:v0A5Cp21D7* + ID_MODEL_FROM_DATABASE=BCM43142 Bluetooth 4.0 + +usb:v0A5Cp21E1* + ID_MODEL_FROM_DATABASE=HP Portable SoftSailing + +usb:v0A5Cp21E3* + ID_MODEL_FROM_DATABASE=HP Portable Valentine + +usb:v0A5Cp21E6* + ID_MODEL_FROM_DATABASE=BCM20702 Bluetooth 4.0 [ThinkPad] + +usb:v0A5Cp21E8* + ID_MODEL_FROM_DATABASE=BCM20702A0 Bluetooth 4.0 + +usb:v0A5Cp21F1* + ID_MODEL_FROM_DATABASE=HP Portable Bumble Bee + +usb:v0A5Cp22BE* + ID_MODEL_FROM_DATABASE=BCM2070 Bluetooth 3.0 + HS + +usb:v0A5Cp4500* + ID_MODEL_FROM_DATABASE=BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth) + +usb:v0A5Cp4502* + ID_MODEL_FROM_DATABASE=Keyboard (Boot Interface Subclass) + +usb:v0A5Cp4503* + ID_MODEL_FROM_DATABASE=Mouse (Boot Interface Subclass) + +usb:v0A5Cp5800* + ID_MODEL_FROM_DATABASE=BCM5880 Secure Applications Processor + +usb:v0A5Cp5801* + ID_MODEL_FROM_DATABASE=BCM5880 Secure Applications Processor with fingerprint swipe sensor + +usb:v0A5Cp5802* + ID_MODEL_FROM_DATABASE=BCM5880 Secure Applications Processor with fingerprint touch sensor + +usb:v0A5Cp5803* + ID_MODEL_FROM_DATABASE=BCM5880 Secure Applications Processor with secure keyboard + +usb:v0A5Cp6300* + ID_MODEL_FROM_DATABASE=Pirelli Remote NDIS Device + +usb:v0A5CpBD11* + ID_MODEL_FROM_DATABASE=TiVo AG0100 802.11bg Wireless Adapter [Broadcom BCM4320] + +usb:v0A5CpBD13* + ID_MODEL_FROM_DATABASE=BCM4323 802.11abgn Wireless Adapter + +usb:v0A5CpBD17* + ID_MODEL_FROM_DATABASE=BCM43236 802.11abgn Wireless Adapter + +usb:v0A5CpD11B* + ID_MODEL_FROM_DATABASE=Eminent EM4045 [Broadcom 4320 USB] + +usb:v0A5D* + ID_VENDOR_FROM_DATABASE=Diatrend Corp. + +usb:v0A5F* + ID_VENDOR_FROM_DATABASE=Zebra + +usb:v0A5Fp0009* + ID_MODEL_FROM_DATABASE=LP2844 Printer + +usb:v0A5Fp0081* + ID_MODEL_FROM_DATABASE=GK420t Label Printer + +usb:v0A5Fp008B* + ID_MODEL_FROM_DATABASE=HC100 wristbands Printer + +usb:v0A5Fp930A* + ID_MODEL_FROM_DATABASE=Printer + +usb:v0A62* + ID_VENDOR_FROM_DATABASE=MPMan + +usb:v0A62p0010* + ID_MODEL_FROM_DATABASE=MPMan MP-F40 MP3 Player + +usb:v0A66* + ID_VENDOR_FROM_DATABASE=ClearCube Technology + +usb:v0A67* + ID_VENDOR_FROM_DATABASE=Medeli Electronics Co., Ltd + +usb:v0A68* + ID_VENDOR_FROM_DATABASE=Comaide Corp. + +usb:v0A69* + ID_VENDOR_FROM_DATABASE=Chroma ate, Inc. + +usb:v0A6B* + ID_VENDOR_FROM_DATABASE=Green House Co., Ltd + +usb:v0A6Bp0001* + ID_MODEL_FROM_DATABASE=Compact Flash R/W with MP3 player + +usb:v0A6Bp000F* + ID_MODEL_FROM_DATABASE=FlashDisk + +usb:v0A6C* + ID_VENDOR_FROM_DATABASE=Integrated Circuit Systems, Inc. + +usb:v0A6D* + ID_VENDOR_FROM_DATABASE=UPS Manufacturing + +usb:v0A6E* + ID_VENDOR_FROM_DATABASE=Benwin + +usb:v0A6F* + ID_VENDOR_FROM_DATABASE=Core Technology, Inc. + +usb:v0A6Fp0400* + ID_MODEL_FROM_DATABASE=Xanboo + +usb:v0A70* + ID_VENDOR_FROM_DATABASE=International Game Technology + +usb:v0A71* + ID_VENDOR_FROM_DATABASE=VIPColor Technologies USA, Inc. + +usb:v0A71p0001* + ID_MODEL_FROM_DATABASE=VP485 Printer + +usb:v0A72* + ID_VENDOR_FROM_DATABASE=Sanwa Denshi + +usb:v0A73* + ID_VENDOR_FROM_DATABASE=Mackie Designs + +usb:v0A73p0002* + ID_MODEL_FROM_DATABASE=XD-2 [Spike] + +usb:v0A7D* + ID_VENDOR_FROM_DATABASE=NSTL, Inc. + +usb:v0A7E* + ID_VENDOR_FROM_DATABASE=Octagon Systems Corp. + +usb:v0A80* + ID_VENDOR_FROM_DATABASE=Rexon Technology Corp., Ltd + +usb:v0A81* + ID_VENDOR_FROM_DATABASE=Chesen Electronics Corp. + +usb:v0A81p0101* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v0A81p0103* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v0A81p0203* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v0A81p0205* + ID_MODEL_FROM_DATABASE=PS/2 Keyboard+Mouse Adapter + +usb:v0A81p0701* + ID_MODEL_FROM_DATABASE=USB Missile Launcher + +usb:v0A81pFF01* + ID_MODEL_FROM_DATABASE=Wireless Missile Launcher + +usb:v0A82* + ID_VENDOR_FROM_DATABASE=Syscan + +usb:v0A82p4600* + ID_MODEL_FROM_DATABASE=TravelScan 460/464 + +usb:v0A83* + ID_VENDOR_FROM_DATABASE=NextComm, Inc. + +usb:v0A84* + ID_VENDOR_FROM_DATABASE=Maui Innovative Peripherals + +usb:v0A85* + ID_VENDOR_FROM_DATABASE=Idexx Labs + +usb:v0A86* + ID_VENDOR_FROM_DATABASE=NITGen Co., Ltd + +usb:v0A8D* + ID_VENDOR_FROM_DATABASE=Picturetel + +usb:v0A8E* + ID_VENDOR_FROM_DATABASE=Japan Aviation Electronics Industry, Ltd + +usb:v0A8Ep2011* + ID_MODEL_FROM_DATABASE=Filter Driver For JAE XMC R/W + +usb:v0A90* + ID_VENDOR_FROM_DATABASE=Candy Technology Co., Ltd + +usb:v0A91* + ID_VENDOR_FROM_DATABASE=Globlink Technology, Inc. + +usb:v0A91p3801* + ID_MODEL_FROM_DATABASE=Targus PAKP003 Mouse + +usb:v0A92* + ID_VENDOR_FROM_DATABASE=EGO SYStems, Inc. + +usb:v0A92p0011* + ID_MODEL_FROM_DATABASE=SYS WaveTerminal U2A + +usb:v0A92p0021* + ID_MODEL_FROM_DATABASE=GIGAPort + +usb:v0A92p0031* + ID_MODEL_FROM_DATABASE=GIGAPortAG + +usb:v0A92p0053* + ID_MODEL_FROM_DATABASE=AudioTrak Optoplay + +usb:v0A92p0061* + ID_MODEL_FROM_DATABASE=Waveterminal U24 + +usb:v0A92p0071* + ID_MODEL_FROM_DATABASE=MAYA EX7 + +usb:v0A92p0091* + ID_MODEL_FROM_DATABASE=Maya 44 + +usb:v0A92p00B1* + ID_MODEL_FROM_DATABASE=MAYA EX5 + +usb:v0A92p1000* + ID_MODEL_FROM_DATABASE=MIDI Mate + +usb:v0A92p1010* + ID_MODEL_FROM_DATABASE=RoMI/O + +usb:v0A92p1020* + ID_MODEL_FROM_DATABASE=M4U + +usb:v0A92p1030* + ID_MODEL_FROM_DATABASE=M8U + +usb:v0A92p1090* + ID_MODEL_FROM_DATABASE=KeyControl49 + +usb:v0A92p10A0* + ID_MODEL_FROM_DATABASE=KeyControl25 + +usb:v0A93* + ID_VENDOR_FROM_DATABASE=C Technologies AB + +usb:v0A93p0002* + ID_MODEL_FROM_DATABASE=C-Pen 10 + +usb:v0A93p0005* + ID_MODEL_FROM_DATABASE=MyPen Light + +usb:v0A93p000D* + ID_MODEL_FROM_DATABASE=Input Pen + +usb:v0A93p0010* + ID_MODEL_FROM_DATABASE=C-Pen 20 + +usb:v0A93p0A93* + ID_MODEL_FROM_DATABASE=PayPen + +usb:v0A94* + ID_VENDOR_FROM_DATABASE=Intersense + +usb:v0AA3* + ID_VENDOR_FROM_DATABASE=Lava Computer Mfg., Inc. + +usb:v0AA4* + ID_VENDOR_FROM_DATABASE=Develco Elektronik + +usb:v0AA5* + ID_VENDOR_FROM_DATABASE=First International Digital + +usb:v0AA5p0002* + ID_MODEL_FROM_DATABASE=irock! 500 Series + +usb:v0AA5p0801* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v0AA6* + ID_VENDOR_FROM_DATABASE=Perception Digital, Ltd + +usb:v0AA6p0101* + ID_MODEL_FROM_DATABASE=Hercules Jukebox + +usb:v0AA6p1501* + ID_MODEL_FROM_DATABASE=Store 'n' Go HD Drive + +usb:v0AA7* + ID_VENDOR_FROM_DATABASE=Wincor Nixdorf International GmbH + +usb:v0AA7p0100* + ID_MODEL_FROM_DATABASE=POS Keyboard, TA58P-USB + +usb:v0AA7p0101* + ID_MODEL_FROM_DATABASE=POS Keyboard, TA85P-USB + +usb:v0AA7p0102* + ID_MODEL_FROM_DATABASE=POS Keyboard, TA59-USB + +usb:v0AA7p0103* + ID_MODEL_FROM_DATABASE=POS Keyboard, TA60-USB + +usb:v0AA7p0104* + ID_MODEL_FROM_DATABASE=SNIkey Keyboard, SNIKey-KB-USB + +usb:v0AA7p0200* + ID_MODEL_FROM_DATABASE=Operator Display, BA63-USB + +usb:v0AA7p0201* + ID_MODEL_FROM_DATABASE=Operator Display, BA66-USB + +usb:v0AA7p0202* + ID_MODEL_FROM_DATABASE=Operator Display & Scanner, XiCheck-BA63 + +usb:v0AA7p0203* + ID_MODEL_FROM_DATABASE=Operator Display & Scanner, XiCheck-BA66 + +usb:v0AA7p0204* + ID_MODEL_FROM_DATABASE=Graphics Operator Display, BA63GV + +usb:v0AA7p0300* + ID_MODEL_FROM_DATABASE=POS Printer (printer class mode), TH210 + +usb:v0AA7p0301* + ID_MODEL_FROM_DATABASE=POS Printer (native mode), TH210 + +usb:v0AA7p0302* + ID_MODEL_FROM_DATABASE=POS Printer (printer class mode), TH220 + +usb:v0AA7p0303* + ID_MODEL_FROM_DATABASE=POS Printer (native mode), TH220 + +usb:v0AA7p0304* + ID_MODEL_FROM_DATABASE=POS Printer, TH230 + +usb:v0AA7p0305* + ID_MODEL_FROM_DATABASE=Lottery Printer, XiPrintPlus + +usb:v0AA7p0306* + ID_MODEL_FROM_DATABASE=POS Printer (printer class mode), TH320 + +usb:v0AA7p0307* + ID_MODEL_FROM_DATABASE=POS Printer (native mode), TH320 + +usb:v0AA7p0308* + ID_MODEL_FROM_DATABASE=POS Printer (printer class mode), TH420 + +usb:v0AA7p0309* + ID_MODEL_FROM_DATABASE=POS Printer (native mode), TH420 + +usb:v0AA7p030A* + ID_MODEL_FROM_DATABASE=POS Printer, TH200B + +usb:v0AA7p0400* + ID_MODEL_FROM_DATABASE=Lottery Scanner, Xiscan S + +usb:v0AA7p0401* + ID_MODEL_FROM_DATABASE=Lottery Scanner, Xiscan 3 + +usb:v0AA7p0402* + ID_MODEL_FROM_DATABASE=Programmable Magnetic Swipe Card Reader, MSRP-USB + +usb:v0AA7p0500* + ID_MODEL_FROM_DATABASE=IDE Adapter + +usb:v0AA7p0501* + ID_MODEL_FROM_DATABASE=Hub Printer Interface + +usb:v0AA7p0502* + ID_MODEL_FROM_DATABASE=Hub SNIKey Keyboard + +usb:v0AA7p4304* + ID_MODEL_FROM_DATABASE=Banking Printer TP07 + +usb:v0AA7p4305* + ID_MODEL_FROM_DATABASE=Banking Printer TP07c + +usb:v0AA7p4500* + ID_MODEL_FROM_DATABASE=WN Central Special Electronics + +usb:v0AA8* + ID_VENDOR_FROM_DATABASE=TriGem Computer, Inc. + +usb:v0AA8p0060* + ID_MODEL_FROM_DATABASE=TG 11Mbps WLAN Mini Adapter + +usb:v0AA8p1001* + ID_MODEL_FROM_DATABASE=DreamComboM4100 + +usb:v0AA8p3002* + ID_MODEL_FROM_DATABASE=InkJet Color Printer + +usb:v0AA8p8001* + ID_MODEL_FROM_DATABASE=TG_iMON + +usb:v0AA8p8002* + ID_MODEL_FROM_DATABASE=TG_KLOSS + +usb:v0AA8pA001* + ID_MODEL_FROM_DATABASE=TG_X2 + +usb:v0AA8pA002* + ID_MODEL_FROM_DATABASE=TGVFD_KLOSS + +usb:v0AA8pFFDA* + ID_MODEL_FROM_DATABASE=iMON_VFD + +usb:v0AA9* + ID_VENDOR_FROM_DATABASE=Baromtec Co. + +usb:v0AA9pF01B* + ID_MODEL_FROM_DATABASE=Medion MD 6242 MP3 Player + +usb:v0AAA* + ID_VENDOR_FROM_DATABASE=Japan CBM Corp. + +usb:v0AAB* + ID_VENDOR_FROM_DATABASE=Vision Shape Europe SA + +usb:v0AAC* + ID_VENDOR_FROM_DATABASE=iCompression, Inc. + +usb:v0AAD* + ID_VENDOR_FROM_DATABASE=Rohde & Schwarz GmbH & Co. KG + +usb:v0AADp0003* + ID_MODEL_FROM_DATABASE=NRP-Z21 + +usb:v0AADp000C* + ID_MODEL_FROM_DATABASE=NRP-Z11 + +usb:v0AADp0013* + ID_MODEL_FROM_DATABASE=NRP-Z22 + +usb:v0AADp0014* + ID_MODEL_FROM_DATABASE=NRP-Z23 + +usb:v0AADp0015* + ID_MODEL_FROM_DATABASE=NRP-Z24 + +usb:v0AADp0016* + ID_MODEL_FROM_DATABASE=NRP-Z51 + +usb:v0AADp0017* + ID_MODEL_FROM_DATABASE=NRP-Z52 + +usb:v0AADp0018* + ID_MODEL_FROM_DATABASE=NRP-Z55 + +usb:v0AADp0019* + ID_MODEL_FROM_DATABASE=NRP-Z56 + +usb:v0AADp0021* + ID_MODEL_FROM_DATABASE=NRP-Z91 + +usb:v0AADp0023* + ID_MODEL_FROM_DATABASE=NRP-Z81 + +usb:v0AADp002C* + ID_MODEL_FROM_DATABASE=NRP-Z31 + +usb:v0AADp002D* + ID_MODEL_FROM_DATABASE=NRP-Z37 + +usb:v0AADp002F* + ID_MODEL_FROM_DATABASE=NRP-Z27 + +usb:v0AADp0051* + ID_MODEL_FROM_DATABASE=NRP-Z28 + +usb:v0AADp0052* + ID_MODEL_FROM_DATABASE=NRP-Z98 + +usb:v0AADp0062* + ID_MODEL_FROM_DATABASE=NRP-Z92 + +usb:v0AADp0070* + ID_MODEL_FROM_DATABASE=NRP-Z57 + +usb:v0AADp0083* + ID_MODEL_FROM_DATABASE=NRP-Z85 + +usb:v0AADp0095* + ID_MODEL_FROM_DATABASE=NRP-Z86 + +usb:v0AAE* + ID_VENDOR_FROM_DATABASE=NEC infrontia Corp. (Nitsuko) + +usb:v0AAF* + ID_VENDOR_FROM_DATABASE=Digitalway Co., Ltd + +usb:v0AB0* + ID_VENDOR_FROM_DATABASE=Arrow Strong Electronics Co., Ltd + +usb:v0AB1* + ID_VENDOR_FROM_DATABASE=FEIG ELECTRONIC GmbH + +usb:v0AB1p0002* + ID_MODEL_FROM_DATABASE=OBID RFID-Reader + +usb:v0ABA* + ID_VENDOR_FROM_DATABASE=Ellisys + +usb:v0ABAp8001* + ID_MODEL_FROM_DATABASE=Tracker 110 Protocol Analyzer + +usb:v0ABAp8002* + ID_MODEL_FROM_DATABASE=Explorer 200 Protocol Analyzer + +usb:v0ABE* + ID_VENDOR_FROM_DATABASE=Stereo-Link + +usb:v0ABEp0101* + ID_MODEL_FROM_DATABASE=SL1200 DAC + +usb:v0ABF* + ID_VENDOR_FROM_DATABASE=Diolan + +usb:v0ABFp3370* + ID_MODEL_FROM_DATABASE=I2C/SPI Adapter - U2C-12 + +usb:v0AC3* + ID_VENDOR_FROM_DATABASE=Sanyo Semiconductor Company Micro + +usb:v0AC4* + ID_VENDOR_FROM_DATABASE=Leco Corp. + +usb:v0AC5* + ID_VENDOR_FROM_DATABASE=I & C Corp. + +usb:v0AC6* + ID_VENDOR_FROM_DATABASE=Singing Electrons, Inc. + +usb:v0AC7* + ID_VENDOR_FROM_DATABASE=Panwest Corp. + +usb:v0AC8* + ID_VENDOR_FROM_DATABASE=Z-Star Microelectronics Corp. + +usb:v0AC8p0301* + ID_MODEL_FROM_DATABASE=Web Camera + +usb:v0AC8p0302* + ID_MODEL_FROM_DATABASE=ZC0302 Webcam + +usb:v0AC8p0321* + ID_MODEL_FROM_DATABASE=Vimicro generic vc0321 Camera + +usb:v0AC8p0323* + ID_MODEL_FROM_DATABASE=Luxya WC-1200 USB 2.0 Webcam + +usb:v0AC8p0328* + ID_MODEL_FROM_DATABASE=A4Tech PK-130MG + +usb:v0AC8p0336* + ID_MODEL_FROM_DATABASE=Elecom UCAM-DLQ30 + +usb:v0AC8p301B* + ID_MODEL_FROM_DATABASE=ZC0301 Webcam + +usb:v0AC8p303B* + ID_MODEL_FROM_DATABASE=ZC0303 Webcam + +usb:v0AC8p305B* + ID_MODEL_FROM_DATABASE=ZC0305 Webcam + +usb:v0AC8p307B* + ID_MODEL_FROM_DATABASE=USB 1.1 Webcam + +usb:v0AC8p332D* + ID_MODEL_FROM_DATABASE=Vega USB 2.0 Camera + +usb:v0AC8p3343* + ID_MODEL_FROM_DATABASE=Sirius USB 2.0 Camera + +usb:v0AC8p3370* + ID_MODEL_FROM_DATABASE=Traveler TV 6500 SF Dia-scanner + +usb:v0AC8p3420* + ID_MODEL_FROM_DATABASE=Venus USB2.0 Camera + +usb:v0AC8pC001* + ID_MODEL_FROM_DATABASE=Sony embedded vimicro Camera + +usb:v0AC8pC002* + ID_MODEL_FROM_DATABASE=Visual Communication Camera VGP-VCC1 + +usb:v0AC8pC302* + ID_MODEL_FROM_DATABASE=Vega USB 2.0 Camera + +usb:v0AC8pC303* + ID_MODEL_FROM_DATABASE=Saturn USB 2.0 Camera + +usb:v0AC8pC326* + ID_MODEL_FROM_DATABASE=Namuga 1.3M Webcam + +usb:v0AC8pC33F* + ID_MODEL_FROM_DATABASE=Webcam + +usb:v0AC9* + ID_VENDOR_FROM_DATABASE=Micro Solutions, Inc. + +usb:v0AC9p0000* + ID_MODEL_FROM_DATABASE=Backpack CD-ReWriter + +usb:v0AC9p0001* + ID_MODEL_FROM_DATABASE=BACKPACK 2 Cable + +usb:v0AC9p0010* + ID_MODEL_FROM_DATABASE=BACKPACK + +usb:v0AC9p0011* + ID_MODEL_FROM_DATABASE=Backpack 40GB Hard Drive + +usb:v0AC9p0110* + ID_MODEL_FROM_DATABASE=BACKPACK + +usb:v0AC9p0111* + ID_MODEL_FROM_DATABASE=BackPack + +usb:v0AC9p1234* + ID_MODEL_FROM_DATABASE=BACKPACK + +usb:v0ACA* + ID_VENDOR_FROM_DATABASE=OPEN Networks Ltd + +usb:v0ACAp1060* + ID_MODEL_FROM_DATABASE=OPEN NT1 Plus II + +usb:v0ACC* + ID_VENDOR_FROM_DATABASE=Koga Electronics Co. + +usb:v0ACD* + ID_VENDOR_FROM_DATABASE=ID Tech + +usb:v0ACDp0300* + ID_MODEL_FROM_DATABASE=IDT1221U RS-232 Adapter + +usb:v0ACDp0401* + ID_MODEL_FROM_DATABASE=Spectrum III Hybrid Smartcard Reader + +usb:v0ACDp0630* + ID_MODEL_FROM_DATABASE=Spectrum III Mag-Only Insert Reader (SPT3-355 Series) USB-CDC + +usb:v0ACE* + ID_VENDOR_FROM_DATABASE=ZyDAS + +usb:v0ACEp1201* + ID_MODEL_FROM_DATABASE=ZD1201 802.11b + +usb:v0ACEp1211* + ID_MODEL_FROM_DATABASE=ZD1211 802.11g + +usb:v0ACEp1215* + ID_MODEL_FROM_DATABASE=ZD1211B 802.11g + +usb:v0ACEp1221* + ID_MODEL_FROM_DATABASE=ZD1221 802.11n + +usb:v0ACEp1602* + ID_MODEL_FROM_DATABASE=ZyXEL Omni FaxModem 56K + +usb:v0ACEp1608* + ID_MODEL_FROM_DATABASE=ZyXEL Omni FaxModem 56K UNO + +usb:v0ACEp1611* + ID_MODEL_FROM_DATABASE=ZyXEL Omni FaxModem 56K Plus + +usb:v0ACEp2011* + ID_MODEL_FROM_DATABASE=Virtual media for 802.11bg + +usb:v0ACEp20FF* + ID_MODEL_FROM_DATABASE=Virtual media for 802.11bg + +usb:v0ACEpA211* + ID_MODEL_FROM_DATABASE=ZD1211 802.11b/g Wireless Adapter + +usb:v0ACEpB215* + ID_MODEL_FROM_DATABASE=802.11bg + +usb:v0ACF* + ID_VENDOR_FROM_DATABASE=Intoto, Inc. + +usb:v0AD0* + ID_VENDOR_FROM_DATABASE=Intellix Corp. + +usb:v0AD1* + ID_VENDOR_FROM_DATABASE=Remotec Technology, Ltd + +usb:v0AD2* + ID_VENDOR_FROM_DATABASE=Service & Quality Technology Co., Ltd + +usb:v0ADA* + ID_VENDOR_FROM_DATABASE=Data Encryption Systems Ltd. + +usb:v0ADAp0005* + ID_MODEL_FROM_DATABASE=DK2 + +usb:v0AE3* + ID_VENDOR_FROM_DATABASE=Allion Computer, Inc. + +usb:v0AE4* + ID_VENDOR_FROM_DATABASE=Taito Corp. + +usb:v0AE7* + ID_VENDOR_FROM_DATABASE=Neodym Systems, Inc. + +usb:v0AE8* + ID_VENDOR_FROM_DATABASE=System Support Co., Ltd + +usb:v0AE9* + ID_VENDOR_FROM_DATABASE=North Shore Circuit Design L.L.P. + +usb:v0AEA* + ID_VENDOR_FROM_DATABASE=SciEssence, LLC + +usb:v0AEB* + ID_VENDOR_FROM_DATABASE=TTP Communications, Ltd + +usb:v0AEC* + ID_VENDOR_FROM_DATABASE=Neodio Technologies Corp. + +usb:v0AECp2101* + ID_MODEL_FROM_DATABASE=SmartMedia Card Reader + +usb:v0AECp2102* + ID_MODEL_FROM_DATABASE=CompactFlash Card Reader + +usb:v0AECp2103* + ID_MODEL_FROM_DATABASE=MMC/SD Card Reader + +usb:v0AECp2104* + ID_MODEL_FROM_DATABASE=MemoryStick Card Reader + +usb:v0AECp2201* + ID_MODEL_FROM_DATABASE=SmartMedia+CompactFlash Card Reader + +usb:v0AECp2202* + ID_MODEL_FROM_DATABASE=SmartMedia+MMC/SD Card Reader + +usb:v0AECp2203* + ID_MODEL_FROM_DATABASE=SmartMedia+MemoryStick Card Reader + +usb:v0AECp2204* + ID_MODEL_FROM_DATABASE=CompactFlash+MMC/SD Card Reader + +usb:v0AECp2205* + ID_MODEL_FROM_DATABASE=CompactFlash+MemoryStick Card Reader + +usb:v0AECp2206* + ID_MODEL_FROM_DATABASE=MMC/SD+MemoryStick Card Reader + +usb:v0AECp2301* + ID_MODEL_FROM_DATABASE=SmartMedia+CompactFlash+MMC/SD Card Reader + +usb:v0AECp2302* + ID_MODEL_FROM_DATABASE=SmartMedia+CompactFlash+MemoryStick Card Reader + +usb:v0AECp2303* + ID_MODEL_FROM_DATABASE=SmartMedia+MMC/SD+MemoryStick Card Reader + +usb:v0AECp2304* + ID_MODEL_FROM_DATABASE=CompactFlash+MMC/SD+MemoryStick Card Reader + +usb:v0AECp3016* + ID_MODEL_FROM_DATABASE=MMC/SD+Memory Stick Card Reader + +usb:v0AECp3050* + ID_MODEL_FROM_DATABASE=ND3050 8-in-1 Card Reader + +usb:v0AECp3060* + ID_MODEL_FROM_DATABASE=1.1 FS Card Reader + +usb:v0AECp3101* + ID_MODEL_FROM_DATABASE=MMC/SD Card Reader + +usb:v0AECp3102* + ID_MODEL_FROM_DATABASE=MemoryStick Card Reader + +usb:v0AECp3201* + ID_MODEL_FROM_DATABASE=MMC/SD+MemoryStick Card Reader + +usb:v0AECp3216* + ID_MODEL_FROM_DATABASE=HS Card Reader + +usb:v0AECp3260* + ID_MODEL_FROM_DATABASE=7-in-1 Card Reader + +usb:v0AECp5010* + ID_MODEL_FROM_DATABASE=ND5010 Card Reader + +usb:v0AF0* + ID_VENDOR_FROM_DATABASE=Option + +usb:v0AF0p5000* + ID_MODEL_FROM_DATABASE=UMTS Card + +usb:v0AF0p6000* + ID_MODEL_FROM_DATABASE=GlobeTrotter 3G datacard + +usb:v0AF0p6300* + ID_MODEL_FROM_DATABASE=GT 3G Quad UMTS/GPRS Card + +usb:v0AF0p6600* + ID_MODEL_FROM_DATABASE=GlobeTrotter 3G+ datacard + +usb:v0AF0p6711* + ID_MODEL_FROM_DATABASE=GlobeTrotter Express 7.2 v2 + +usb:v0AF0p6971* + ID_MODEL_FROM_DATABASE=Globetrotter HSDPA Modem + +usb:v0AF0p7251* + ID_MODEL_FROM_DATABASE=Globetrotter HSUPA Modem (aka iCON HSUPA E) + +usb:v0AF0p7501* + ID_MODEL_FROM_DATABASE=Globetrotter HSUPA Modem (icon 411 aka "Vodafone K3760") + +usb:v0AF0p7601* + ID_MODEL_FROM_DATABASE=Globetrotter MO40x 3G Modem (GTM 382) + +usb:v0AF0p7701* + ID_MODEL_FROM_DATABASE=Globetrotter HSUPA Modem (aka icon 451) + +usb:v0AF0pD055* + ID_MODEL_FROM_DATABASE=Globetrotter GI0505 [iCON 505] + +usb:v0AF6* + ID_VENDOR_FROM_DATABASE=Silver I Co., Ltd + +usb:v0AF7* + ID_VENDOR_FROM_DATABASE=B2C2, Inc. + +usb:v0AF7p0101* + ID_MODEL_FROM_DATABASE=Digital TV USB Receiver (DVB-S/T/C / ATSC) + +usb:v0AF9* + ID_VENDOR_FROM_DATABASE=Hama, Inc. + +usb:v0AF9p0010* + ID_MODEL_FROM_DATABASE=USB SightCam 100 + +usb:v0AF9p0011* + ID_MODEL_FROM_DATABASE=Micro Innovations IC50C Webcam + +usb:v0AFC* + ID_VENDOR_FROM_DATABASE=Zaptronix Ltd + +usb:v0AFD* + ID_VENDOR_FROM_DATABASE=Tateno Dennou, Inc. + +usb:v0AFE* + ID_VENDOR_FROM_DATABASE=Cummins Engine Co. + +usb:v0AFF* + ID_VENDOR_FROM_DATABASE=Jump Zone Network Products, Inc. + +usb:v0B00* + ID_VENDOR_FROM_DATABASE=INGENICO + +usb:v0B05* + ID_VENDOR_FROM_DATABASE=ASUSTek Computer, Inc. + +usb:v0B05p1101* + ID_MODEL_FROM_DATABASE=Mass Storage (UISDMC4S) + +usb:v0B05p1706* + ID_MODEL_FROM_DATABASE=WL-167G v1 802.11g Adapter [Ralink RT2571] + +usb:v0B05p1707* + ID_MODEL_FROM_DATABASE=WL-167G v1 802.11g Adapter [Ralink RT2571] + +usb:v0B05p1708* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0B05p170B* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0B05p170C* + ID_MODEL_FROM_DATABASE=WL-159g 802.11bg + +usb:v0B05p170D* + ID_MODEL_FROM_DATABASE=802.11b/g Wireless Network Adapter + +usb:v0B05p1712* + ID_MODEL_FROM_DATABASE=BT-183 Bluetooth 2.0+EDR adapter + +usb:v0B05p1715* + ID_MODEL_FROM_DATABASE=2045 Bluetooth 2.0 Device with trace filter + +usb:v0B05p1716* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0B05p1717* + ID_MODEL_FROM_DATABASE=WL169gE 802.11g Adapter [Broadcom 4320 USB] + +usb:v0B05p171B* + ID_MODEL_FROM_DATABASE=A9T wireless 802.11bg + +usb:v0B05p171C* + ID_MODEL_FROM_DATABASE=802.11b/g Wireless Network Adapter + +usb:v0B05p171F* + ID_MODEL_FROM_DATABASE=My Cinema U3000 Mini [DiBcom DiB7700P] + +usb:v0B05p1723* + ID_MODEL_FROM_DATABASE=WL-167G v2 802.11g Adapter [Ralink RT2571W] + +usb:v0B05p1724* + ID_MODEL_FROM_DATABASE=RT2573 + +usb:v0B05p1726* + ID_MODEL_FROM_DATABASE=Laptop OLED Display + +usb:v0B05p172A* + ID_MODEL_FROM_DATABASE=ASUS 802.11n Network Adapter + +usb:v0B05p172B* + ID_MODEL_FROM_DATABASE=802.11n Network Adapter + +usb:v0B05p1731* + ID_MODEL_FROM_DATABASE=802.11n Network Adapter + +usb:v0B05p1732* + ID_MODEL_FROM_DATABASE=802.11n Network Adapter + +usb:v0B05p1734* + ID_MODEL_FROM_DATABASE=ASUS AF-200 + +usb:v0B05p173C* + ID_MODEL_FROM_DATABASE=BT-183 Bluetooth 2.0 + +usb:v0B05p173F* + ID_MODEL_FROM_DATABASE=My Cinema U3100 Mini + +usb:v0B05p1742* + ID_MODEL_FROM_DATABASE=802.11n Network Adapter + +usb:v0B05p1743* + ID_MODEL_FROM_DATABASE=Xonar U1 Audio Station + +usb:v0B05p1751* + ID_MODEL_FROM_DATABASE=BT-253 Bluetooth Adapter + +usb:v0B05p175B* + ID_MODEL_FROM_DATABASE=Laptop OLED Display + +usb:v0B05p1760* + ID_MODEL_FROM_DATABASE=802.11n Network Adapter + +usb:v0B05p1761* + ID_MODEL_FROM_DATABASE=USB-N11 802.11n Network Adapter [Ralink RT2870] + +usb:v0B05p1774* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem (QDL mode) + +usb:v0B05p1776* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem + +usb:v0B05p1779* + ID_MODEL_FROM_DATABASE=My Cinema U3100 Mini Plus [AF9035A] + +usb:v0B05p1784* + ID_MODEL_FROM_DATABASE=USB-N13 802.11n Network Adapter (rev. A1) [Ralink RT3072] + +usb:v0B05p1786* + ID_MODEL_FROM_DATABASE=USB-N10 802.11n Network Adapter [Realtek RTL8188SU] + +usb:v0B05p1791* + ID_MODEL_FROM_DATABASE=WL-167G v3 802.11n Adapter [Realtek RTL8188SU] + +usb:v0B05p179D* + ID_MODEL_FROM_DATABASE=USB-N53 802.11abgn Network Adapter [Ralink RT3572] + +usb:v0B05p179E* + ID_MODEL_FROM_DATABASE=Eee Note EA800 (network mode) + +usb:v0B05p179F* + ID_MODEL_FROM_DATABASE=Eee Note EA800 (tablet mode) + +usb:v0B05p17A1* + ID_MODEL_FROM_DATABASE=Eee Note EA800 (mass storage mode) + +usb:v0B05p17AB* + ID_MODEL_FROM_DATABASE=USB-N13 802.11n Network Adapter (rev. B1) [Realtek RTL8192CU] + +usb:v0B05p4C80* + ID_MODEL_FROM_DATABASE=Transformer Pad TF300TG + +usb:v0B05p4C90* + ID_MODEL_FROM_DATABASE=Transformer Pad Infinity TF700 + +usb:v0B05p4C91* + ID_MODEL_FROM_DATABASE=Transformer Pad Infinity TF700 (Debug mode) + +usb:v0B05p4D00* + ID_MODEL_FROM_DATABASE=Transformer Prime TF201 + +usb:v0B05p4D01* + ID_MODEL_FROM_DATABASE=Transformer Prime TF201 (debug mode) + +usb:v0B05p4DAF* + ID_MODEL_FROM_DATABASE=Transformer Pad Infinity TF700 (Fastboot) + +usb:v0B05p6101* + ID_MODEL_FROM_DATABASE=Cable Modem + +usb:v0B05p620A* + ID_MODEL_FROM_DATABASE=Remote NDIS Device + +usb:v0B05pB700* + ID_MODEL_FROM_DATABASE=Broadcom Bluetooth 2.1 + +usb:v0B0B* + ID_VENDOR_FROM_DATABASE=Datamax-O'Neil + +usb:v0B0Bp106E* + ID_MODEL_FROM_DATABASE=Datamax E-4304 + +usb:v0B0C* + ID_VENDOR_FROM_DATABASE=Todos AB + +usb:v0B0Cp0009* + ID_MODEL_FROM_DATABASE=Todos Argos Mini II Smart Card Reader + +usb:v0B0Cp001E* + ID_MODEL_FROM_DATABASE=e.dentifier2 (ABN AMRO electronic banking card reader NL) + +usb:v0B0Cp002E* + ID_MODEL_FROM_DATABASE=C200 smartcard controller (Nordea card reader) + +usb:v0B0Cp003F* + ID_MODEL_FROM_DATABASE=Todos C400 smartcard controller (Handelsbanken card reader) + +usb:v0B0Cp0050* + ID_MODEL_FROM_DATABASE=Argos Mini II Smart Card Reader (CCID) + +usb:v0B0D* + ID_VENDOR_FROM_DATABASE=ProjectLab + +usb:v0B0Dp0000* + ID_MODEL_FROM_DATABASE=CenturyCD + +usb:v0B0E* + ID_VENDOR_FROM_DATABASE=GN Netcom + +usb:v0B0Ep1022* + ID_MODEL_FROM_DATABASE=Jabra PRO 9450, Type 9400BS (DECT Headset) + +usb:v0B0Ep620C* + ID_MODEL_FROM_DATABASE=Jabra BT620s + +usb:v0B0F* + ID_VENDOR_FROM_DATABASE=AVID Technology + +usb:v0B10* + ID_VENDOR_FROM_DATABASE=Pcally + +usb:v0B11* + ID_VENDOR_FROM_DATABASE=I Tech Solutions Co., Ltd + +usb:v0B1E* + ID_VENDOR_FROM_DATABASE=Electronic Warfare Assoc., Inc. (EWA) + +usb:v0B1Ep8007* + ID_MODEL_FROM_DATABASE=Blackhawk USB560-BP JTAG Emulator + +usb:v0B1F* + ID_VENDOR_FROM_DATABASE=Insyde Software Corp. + +usb:v0B20* + ID_VENDOR_FROM_DATABASE=TransDimension, Inc. + +usb:v0B21* + ID_VENDOR_FROM_DATABASE=Yokogawa Electric Corp. + +usb:v0B22* + ID_VENDOR_FROM_DATABASE=Japan System Development Co., Ltd + +usb:v0B23* + ID_VENDOR_FROM_DATABASE=Pan-Asia Electronics Co., Ltd + +usb:v0B24* + ID_VENDOR_FROM_DATABASE=Link Evolution Corp. + +usb:v0B27* + ID_VENDOR_FROM_DATABASE=Ritek Corp. + +usb:v0B28* + ID_VENDOR_FROM_DATABASE=Kenwood Corp. + +usb:v0B2C* + ID_VENDOR_FROM_DATABASE=Village Center, Inc. + +usb:v0B30* + ID_VENDOR_FROM_DATABASE=PNY Technologies, Inc. + +usb:v0B30p0006* + ID_MODEL_FROM_DATABASE=SM Media-Shuttle Card Reader + +usb:v0B33* + ID_VENDOR_FROM_DATABASE=Contour Design, Inc. + +usb:v0B33p0020* + ID_MODEL_FROM_DATABASE=ShuttleXpress + +usb:v0B37* + ID_VENDOR_FROM_DATABASE=Hitachi ULSI Systems Co., Ltd + +usb:v0B38* + ID_VENDOR_FROM_DATABASE=Gear Head + +usb:v0B38p0003* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v0B38p0010* + ID_MODEL_FROM_DATABASE=107-Key Keyboard + +usb:v0B39* + ID_VENDOR_FROM_DATABASE=Omnidirectional Control Technology, Inc. + +usb:v0B39p0001* + ID_MODEL_FROM_DATABASE=Composite USB PS2 Converter + +usb:v0B39p0109* + ID_MODEL_FROM_DATABASE=USB TO Ethernet + +usb:v0B39p0421* + ID_MODEL_FROM_DATABASE=Serial + +usb:v0B39p0801* + ID_MODEL_FROM_DATABASE=USB-Parallel Bridge + +usb:v0B39p0901* + ID_MODEL_FROM_DATABASE=OCT To Fast Ethernet Converter + +usb:v0B39p0C03* + ID_MODEL_FROM_DATABASE=LAN DOCK Serial Converter + +usb:v0B3A* + ID_VENDOR_FROM_DATABASE=IPaxess + +usb:v0B3B* + ID_VENDOR_FROM_DATABASE=Tekram Technology Co., Ltd + +usb:v0B3Bp0163* + ID_MODEL_FROM_DATABASE=TL-WN320G 1.0 WLAN Adapter + +usb:v0B3Bp1601* + ID_MODEL_FROM_DATABASE=Allnet 0193 802.11b Adapter + +usb:v0B3Bp1602* + ID_MODEL_FROM_DATABASE=ZyXEL ZyAIR B200 802.11b Adapter + +usb:v0B3Bp1612* + ID_MODEL_FROM_DATABASE=AIR.Mate 2@net 802.11b Adapter + +usb:v0B3Bp1613* + ID_MODEL_FROM_DATABASE=802.11b Wireless LAN Adapter + +usb:v0B3Bp1620* + ID_MODEL_FROM_DATABASE=Allnet Wireless Network Adapter [Envara WiND512] + +usb:v0B3Bp1630* + ID_MODEL_FROM_DATABASE=QuickWLAN 802.11bg + +usb:v0B3Bp5630* + ID_MODEL_FROM_DATABASE=802.11bg + +usb:v0B3Bp6630* + ID_MODEL_FROM_DATABASE=ZD1211 + +usb:v0B3C* + ID_VENDOR_FROM_DATABASE=Olivetti Techcenter + +usb:v0B3CpA010* + ID_MODEL_FROM_DATABASE=Simple_Way Printer/Scanner/Copier + +usb:v0B3CpC000* + ID_MODEL_FROM_DATABASE=Olicard 100 + +usb:v0B3CpC700* + ID_MODEL_FROM_DATABASE=Olicard 100 (Mass Storage mode) + +usb:v0B3E* + ID_VENDOR_FROM_DATABASE=Kikusui Electronics Corp. + +usb:v0B41* + ID_VENDOR_FROM_DATABASE=Hal Corp. + +usb:v0B41p0011* + ID_MODEL_FROM_DATABASE=Crossam2+USB IR commander + +usb:v0B43* + ID_VENDOR_FROM_DATABASE=Play.com, Inc. + +usb:v0B43p0003* + ID_MODEL_FROM_DATABASE=PS2 Controller Converter + +usb:v0B43p0005* + ID_MODEL_FROM_DATABASE=GameCube Adaptor + +usb:v0B47* + ID_VENDOR_FROM_DATABASE=Sportbug.com, Inc. + +usb:v0B48* + ID_VENDOR_FROM_DATABASE=TechnoTrend AG + +usb:v0B48p1003* + ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge USB-Nova + +usb:v0B48p1004* + ID_MODEL_FROM_DATABASE=TT-PCline + +usb:v0B48p1005* + ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge USB-Nova + +usb:v0B48p1006* + ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DEC3000-s + +usb:v0B48p1007* + ID_MODEL_FROM_DATABASE=TT-micro plus Device + +usb:v0B48p1008* + ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DEC2000-t + +usb:v0B48p1009* + ID_MODEL_FROM_DATABASE=Technotrend/Hauppauge DEC2540-t + +usb:v0B48p3001* + ID_MODEL_FROM_DATABASE=DVB-S receiver + +usb:v0B48p3002* + ID_MODEL_FROM_DATABASE=DVB-C receiver + +usb:v0B48p3003* + ID_MODEL_FROM_DATABASE=DVB-T receiver + +usb:v0B48p3004* + ID_MODEL_FROM_DATABASE=TT TV-Stick + +usb:v0B48p3005* + ID_MODEL_FROM_DATABASE=TT TV-Stick (8kB EEPROM) + +usb:v0B48p3006* + ID_MODEL_FROM_DATABASE=TT-connect S-2400 DVB-S receiver + +usb:v0B48p3007* + ID_MODEL_FROM_DATABASE=TT-connect S2-3600 + +usb:v0B48p3008* + ID_MODEL_FROM_DATABASE=TT-connect + +usb:v0B48p3009* + ID_MODEL_FROM_DATABASE=TT-connect S-2400 DVB-S receiver (8kB EEPROM) + +usb:v0B48p300A* + ID_MODEL_FROM_DATABASE=TT-connect S2-3650 CI + +usb:v0B48p300B* + ID_MODEL_FROM_DATABASE=TT-connect C-3650 CI + +usb:v0B48p300C* + ID_MODEL_FROM_DATABASE=TT-connect T-3650 CI + +usb:v0B48p300D* + ID_MODEL_FROM_DATABASE=TT-connect CT-3650 CI + +usb:v0B48p300E* + ID_MODEL_FROM_DATABASE=TT-connect C-2400 + +usb:v0B49* + ID_VENDOR_FROM_DATABASE=ASCII Corp. + +usb:v0B49p064F* + ID_MODEL_FROM_DATABASE=Trance Vibrator + +usb:v0B4B* + ID_VENDOR_FROM_DATABASE=Pine Corp. Ltd. + +usb:v0B4Bp0100* + ID_MODEL_FROM_DATABASE=D'music MP3 Player + +usb:v0B4D* + ID_VENDOR_FROM_DATABASE=Graphtec America, Inc. + +usb:v0B4Dp110A* + ID_MODEL_FROM_DATABASE=Graphtec CC200-20 + +usb:v0B4E* + ID_VENDOR_FROM_DATABASE=Musical Electronics, Ltd + +usb:v0B4Ep6500* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v0B4Ep8028* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v0B4Ep8920* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v0B50* + ID_VENDOR_FROM_DATABASE=Dumpries Co., Ltd + +usb:v0B51* + ID_VENDOR_FROM_DATABASE=Comfort Keyboard Co. + +usb:v0B51p0020* + ID_MODEL_FROM_DATABASE=Comfort Keyboard + +usb:v0B52* + ID_VENDOR_FROM_DATABASE=Colorado MicroDisplay, Inc. + +usb:v0B54* + ID_VENDOR_FROM_DATABASE=Sinbon Electronics Co., Ltd + +usb:v0B56* + ID_VENDOR_FROM_DATABASE=TYI Systems, Ltd + +usb:v0B57* + ID_VENDOR_FROM_DATABASE=Beijing HanwangTechnology Co., Ltd + +usb:v0B59* + ID_VENDOR_FROM_DATABASE=Lake Communications, Ltd + +usb:v0B5A* + ID_VENDOR_FROM_DATABASE=Corel Corp. + +usb:v0B5F* + ID_VENDOR_FROM_DATABASE=Green Electronics Co., Ltd + +usb:v0B60* + ID_VENDOR_FROM_DATABASE=Nsine, Ltd + +usb:v0B61* + ID_VENDOR_FROM_DATABASE=NEC Viewtechnology, Ltd + +usb:v0B62* + ID_VENDOR_FROM_DATABASE=Orange Micro, Inc. + +usb:v0B62p000B* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0B62p0059* + ID_MODEL_FROM_DATABASE=iBOT2 Webcam + +usb:v0B63* + ID_VENDOR_FROM_DATABASE=ADLink Technology, Inc. + +usb:v0B64* + ID_VENDOR_FROM_DATABASE=Wonderful Wire Cable Co., Ltd + +usb:v0B65* + ID_VENDOR_FROM_DATABASE=Expert Magnetics Corp. + +usb:v0B69* + ID_VENDOR_FROM_DATABASE=CacheVision + +usb:v0B6A* + ID_VENDOR_FROM_DATABASE=Maxim Integrated Products + +usb:v0B6ApA132* + ID_MODEL_FROM_DATABASE=WUP-005 [Nintendo Wii U Pro Controller] + +usb:v0B6F* + ID_VENDOR_FROM_DATABASE=Nagano Japan Radio Co., Ltd + +usb:v0B70* + ID_VENDOR_FROM_DATABASE=PortalPlayer, Inc. + +usb:v0B70p00BA* + ID_MODEL_FROM_DATABASE=iRiver H10 20GB + +usb:v0B71* + ID_VENDOR_FROM_DATABASE=SHIN-EI Sangyo Co., Ltd + +usb:v0B72* + ID_VENDOR_FROM_DATABASE=Embedded Wireless Technology Co., Ltd + +usb:v0B73* + ID_VENDOR_FROM_DATABASE=Computone Corp. + +usb:v0B75* + ID_VENDOR_FROM_DATABASE=Roland DG Corp. + +usb:v0B79* + ID_VENDOR_FROM_DATABASE=Sunrise Telecom, Inc. + +usb:v0B7A* + ID_VENDOR_FROM_DATABASE=Zeevo, Inc. + +usb:v0B7Ap07D0* + ID_MODEL_FROM_DATABASE=Bluetooth Dongle + +usb:v0B7B* + ID_VENDOR_FROM_DATABASE=Taiko Denki Co., Ltd + +usb:v0B7C* + ID_VENDOR_FROM_DATABASE=ITRAN Communications, Ltd + +usb:v0B7D* + ID_VENDOR_FROM_DATABASE=Astrodesign, Inc. + +usb:v0B81* + ID_VENDOR_FROM_DATABASE=id3 Semiconductors + +usb:v0B81p0001* + ID_MODEL_FROM_DATABASE=Biothentic II smartcard reader with fingerprint sensor + +usb:v0B81p0002* + ID_MODEL_FROM_DATABASE=DFU-Enabled Devices (DFU) + +usb:v0B81p0012* + ID_MODEL_FROM_DATABASE=BioPAD biometric module (DFU + CDC) + +usb:v0B81p0102* + ID_MODEL_FROM_DATABASE=Certis V1 fingerprint reader + +usb:v0B81p0103* + ID_MODEL_FROM_DATABASE=Certis V2 fingerprint reader + +usb:v0B81p0200* + ID_MODEL_FROM_DATABASE=CL1356T / CL1356T5 / CL1356A smartcard readers (CCID) + +usb:v0B81p0201* + ID_MODEL_FROM_DATABASE=CL1356T / CL1356T5 / CL1356A smartcard readers (DFU + CCID) + +usb:v0B81p0220* + ID_MODEL_FROM_DATABASE=CL1356A FFPJP smartcard reader (CCID + HID) + +usb:v0B81p0221* + ID_MODEL_FROM_DATABASE=CL1356A smartcard reader (DFU + CCID + HID) + +usb:v0B84* + ID_VENDOR_FROM_DATABASE=Rextron Technology, Inc. + +usb:v0B85* + ID_VENDOR_FROM_DATABASE=Elkat Electronics, Sdn., Bhd. + +usb:v0B86* + ID_VENDOR_FROM_DATABASE=Exputer Systems, Inc. + +usb:v0B86p5100* + ID_MODEL_FROM_DATABASE=XMC5100 Zippy Drive + +usb:v0B86p5110* + ID_MODEL_FROM_DATABASE=XMC5110 Flash Drive + +usb:v0B86p5200* + ID_MODEL_FROM_DATABASE=XMC5200 Zippy Drive + +usb:v0B86p5201* + ID_MODEL_FROM_DATABASE=XMC5200 Zippy Drive + +usb:v0B86p5202* + ID_MODEL_FROM_DATABASE=XMC5200 Zippy Drive + +usb:v0B86p5280* + ID_MODEL_FROM_DATABASE=XMC5280 Storage Drive + +usb:v0B86pFFF0* + ID_MODEL_FROM_DATABASE=ISP5200 Debugger + +usb:v0B87* + ID_VENDOR_FROM_DATABASE=Plus-One I & T, Inc. + +usb:v0B88* + ID_VENDOR_FROM_DATABASE=Sigma Koki Co., Ltd, Technology Center + +usb:v0B89* + ID_VENDOR_FROM_DATABASE=Advanced Digital Broadcast, Ltd + +usb:v0B8C* + ID_VENDOR_FROM_DATABASE=SMART Technologies Inc. + +usb:v0B8Cp0001* + ID_MODEL_FROM_DATABASE=Interactive Whiteboard Controller (SB6) (HID) + +usb:v0B8Cp00C3* + ID_MODEL_FROM_DATABASE=Sympodium ID350 + +usb:v0B95* + ID_VENDOR_FROM_DATABASE=ASIX Electronics Corp. + +usb:v0B95p1720* + ID_MODEL_FROM_DATABASE=10/100 Ethernet + +usb:v0B95p1780* + ID_MODEL_FROM_DATABASE=AX88178 + +usb:v0B95p7720* + ID_MODEL_FROM_DATABASE=AX88772 + +usb:v0B95p772A* + ID_MODEL_FROM_DATABASE=AX88772A Fast Ethernet + +usb:v0B95p772B* + ID_MODEL_FROM_DATABASE=AX88772B + +usb:v0B95p7E2B* + ID_MODEL_FROM_DATABASE=AX88772B + +usb:v0B96* + ID_VENDOR_FROM_DATABASE=Sewon Telecom + +usb:v0B97* + ID_VENDOR_FROM_DATABASE=O2 Micro, Inc. + +usb:v0B97p7732* + ID_MODEL_FROM_DATABASE=Smart Card Reader + +usb:v0B97p7761* + ID_MODEL_FROM_DATABASE=Oz776 1.1 Hub + +usb:v0B97p7762* + ID_MODEL_FROM_DATABASE=Oz776 SmartCard Reader + +usb:v0B97p7772* + ID_MODEL_FROM_DATABASE=OZ776 CCID Smartcard Reader + +usb:v0B98* + ID_VENDOR_FROM_DATABASE=Playmates Toys, Inc. + +usb:v0B99* + ID_VENDOR_FROM_DATABASE=Audio International, Inc. + +usb:v0B9B* + ID_VENDOR_FROM_DATABASE=Dipl.-Ing. Stefan Kunde + +usb:v0B9Bp4012* + ID_MODEL_FROM_DATABASE=Reflex RC-controller Interface + +usb:v0B9D* + ID_VENDOR_FROM_DATABASE=Softprotec Co. + +usb:v0B9F* + ID_VENDOR_FROM_DATABASE=Chippo Technologies + +usb:v0BAF* + ID_VENDOR_FROM_DATABASE=U.S. Robotics + +usb:v0BAFp00E5* + ID_MODEL_FROM_DATABASE=USR6000 + +usb:v0BAFp00EB* + ID_MODEL_FROM_DATABASE=USR1120 802.11b Adapter + +usb:v0BAFp00EC* + ID_MODEL_FROM_DATABASE=56K Faxmodem + +usb:v0BAFp00F1* + ID_MODEL_FROM_DATABASE=SureConnect ADSL ATM Adapter + +usb:v0BAFp00F2* + ID_MODEL_FROM_DATABASE=SureConnect ADSL Loader + +usb:v0BAFp00F5* + ID_MODEL_FROM_DATABASE=SureConnect ADSL ATM Adapter + +usb:v0BAFp00F6* + ID_MODEL_FROM_DATABASE=SureConnect ADSL Loader + +usb:v0BAFp00F7* + ID_MODEL_FROM_DATABASE=SureConnect ADSL ATM Adapter + +usb:v0BAFp00F8* + ID_MODEL_FROM_DATABASE=SureConnect ADSL Loader + +usb:v0BAFp00F9* + ID_MODEL_FROM_DATABASE=SureConnect ADSL ATM Adapter + +usb:v0BAFp00FA* + ID_MODEL_FROM_DATABASE=SureConnect ADSL Loader + +usb:v0BAFp00FB* + ID_MODEL_FROM_DATABASE=SureConnect ADSL Ethernet/USB Router + +usb:v0BAFp0111* + ID_MODEL_FROM_DATABASE=USR5420 802.11g Adapter [Broadcom 4320 USB] + +usb:v0BAFp0118* + ID_MODEL_FROM_DATABASE=U5 802.11g Adapter + +usb:v0BAFp011B* + ID_MODEL_FROM_DATABASE=Wireless MAXg Adapter [Broadcom 4320] + +usb:v0BAFp0121* + ID_MODEL_FROM_DATABASE=USR5423 802.11bg Wireless Adapter [ZyDAS ZD1211B] + +usb:v0BAFp6112* + ID_MODEL_FROM_DATABASE=FaxModem Model 5633 + +usb:v0BB0* + ID_VENDOR_FROM_DATABASE=Concord Camera Corp. + +usb:v0BB0p0100* + ID_MODEL_FROM_DATABASE=Sound Vision Stream + +usb:v0BB0p5007* + ID_MODEL_FROM_DATABASE=3340z/Rollei DC3100 + +usb:v0BB1* + ID_VENDOR_FROM_DATABASE=Infinilink Corp. + +usb:v0BB2* + ID_VENDOR_FROM_DATABASE=Ambit Microsystems Corp. + +usb:v0BB2p0302* + ID_MODEL_FROM_DATABASE=U10H010 802.11b Wireless Adapter [Intersil PRISM 3] + +usb:v0BB2p6098* + ID_MODEL_FROM_DATABASE=USB Cable Modem + +usb:v0BB3* + ID_VENDOR_FROM_DATABASE=Ofuji Technology + +usb:v0BB4* + ID_VENDOR_FROM_DATABASE=HTC (High Tech Computer Corp.) + +usb:v0BB4p00CE* + ID_MODEL_FROM_DATABASE=mmO2 XDA GSM/GPRS Pocket PC + +usb:v0BB4p00CF* + ID_MODEL_FROM_DATABASE=SPV C500 Smart Phone + +usb:v0BB4p0A01* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A02* + ID_MODEL_FROM_DATABASE=Himalaya GSM/GPRS Pocket PC + +usb:v0BB4p0A03* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A04* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A05* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A06* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A07* + ID_MODEL_FROM_DATABASE=Magician PocketPC SmartPhone / O2 XDA + +usb:v0BB4p0A08* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A09* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A0A* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A0B* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A0C* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A0D* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A0E* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A0F* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A10* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A11* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A12* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A13* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A14* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A15* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A16* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A17* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A18* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A19* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A1A* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A1B* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A1C* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A1D* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A1E* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A1F* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A20* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A21* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A22* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A23* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A24* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A25* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A26* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A27* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A28* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A29* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A2A* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A2B* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A2C* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A2D* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A2E* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A2F* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A30* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A31* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A32* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A33* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A34* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A35* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A36* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A37* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A38* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A39* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A3A* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A3B* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A3C* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A3D* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A3E* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A3F* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A40* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A41* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A42* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A43* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A44* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A45* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A46* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A47* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A48* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A49* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A4A* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A4B* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A4C* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A4D* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A4E* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A4F* + ID_MODEL_FROM_DATABASE=PocketPC Sync + +usb:v0BB4p0A50* + ID_MODEL_FROM_DATABASE=HTC SmartPhone Sync + +usb:v0BB4p0A51* + ID_MODEL_FROM_DATABASE=SPV C400 / T-Mobile SDA GSM/GPRS Pocket PC + +usb:v0BB4p0A52* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A53* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A54* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A55* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A56* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A57* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A58* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A59* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A5A* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A5B* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A5C* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A5D* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A5E* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A5F* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A60* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A61* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A62* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A63* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A64* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A65* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A66* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A67* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A68* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A69* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A6A* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A6B* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A6C* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A6D* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A6E* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A6F* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A70* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A71* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A72* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A73* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A74* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A75* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A76* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A77* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A78* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A79* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A7A* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A7B* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A7C* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A7D* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A7E* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A7F* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A80* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A81* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A82* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A83* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A84* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A85* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A86* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A87* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A88* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A89* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A8A* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A8B* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A8C* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A8D* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A8E* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A8F* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A90* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A91* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A92* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A93* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A94* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A95* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A96* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A97* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A98* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A99* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A9A* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A9B* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A9C* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A9D* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A9E* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0A9F* + ID_MODEL_FROM_DATABASE=SmartPhone Sync + +usb:v0BB4p0B03* + ID_MODEL_FROM_DATABASE=Ozone Mobile Broadband + +usb:v0BB4p0B04* + ID_MODEL_FROM_DATABASE=Hermes / TyTN / T-Mobile MDA Vario II / O2 Xda Trion + +usb:v0BB4p0B05* + ID_MODEL_FROM_DATABASE=P3600 + +usb:v0BB4p0B06* + ID_MODEL_FROM_DATABASE=Athena / Advantage x7500 / Dopod U1000 / T-Mobile AMEO + +usb:v0BB4p0B0C* + ID_MODEL_FROM_DATABASE=Elf / Touch / P3450 / T-Mobile MDA Touch / O2 Xda Nova / Dopod S1 + +usb:v0BB4p0B1F* + ID_MODEL_FROM_DATABASE=Sony Ericsson XPERIA X1 + +usb:v0BB4p0B2F* + ID_MODEL_FROM_DATABASE=Rhodium + +usb:v0BB4p0B51* + ID_MODEL_FROM_DATABASE=Qtek 8310 mobile phone [Tornado Noble] + +usb:v0BB4p0BCE* + ID_MODEL_FROM_DATABASE=Vario MDA + +usb:v0BB4p0C01* + ID_MODEL_FROM_DATABASE=Dream / ADP1 / G1 / Magic / Tattoo + +usb:v0BB4p0C02* + ID_MODEL_FROM_DATABASE=Dream / ADP1 / G1 / Magic / Tattoo (Debug) + +usb:v0BB4p0C13* + ID_MODEL_FROM_DATABASE=Diamond + +usb:v0BB4p0C1F* + ID_MODEL_FROM_DATABASE=Sony Ericsson XPERIA X1 + +usb:v0BB4p0C5F* + ID_MODEL_FROM_DATABASE=Snap + +usb:v0BB4p0C86* + ID_MODEL_FROM_DATABASE=Sensation + +usb:v0BB4p0C87* + ID_MODEL_FROM_DATABASE=Desire (debug) + +usb:v0BB4p0C8D* + ID_MODEL_FROM_DATABASE=EVO 4G (debug) + +usb:v0BB4p0C91* + ID_MODEL_FROM_DATABASE=Vision + +usb:v0BB4p0C94* + ID_MODEL_FROM_DATABASE=Vision + +usb:v0BB4p0C97* + ID_MODEL_FROM_DATABASE=Legend + +usb:v0BB4p0C99* + ID_MODEL_FROM_DATABASE=Desire (debug) + +usb:v0BB4p0C9E* + ID_MODEL_FROM_DATABASE=Incredible + +usb:v0BB4p0CA2* + ID_MODEL_FROM_DATABASE=Desire HD (debug mode) + +usb:v0BB4p0CA5* + ID_MODEL_FROM_DATABASE=Android Phone [Evo Shift 4G] + +usb:v0BB4p0FF8* + ID_MODEL_FROM_DATABASE=Desire HD (Tethering Mode) + +usb:v0BB4p0FF9* + ID_MODEL_FROM_DATABASE=Desire / Desire HD / Hero / Thunderbolt (Charge Mode) + +usb:v0BB4p0FFE* + ID_MODEL_FROM_DATABASE=Desire HD (modem mode) + +usb:v0BB4p0FFF* + ID_MODEL_FROM_DATABASE=Android Fastboot Bootloader + +usb:v0BB5* + ID_VENDOR_FROM_DATABASE=Murata Manufacturing Co., Ltd + +usb:v0BB6* + ID_VENDOR_FROM_DATABASE=Network Alchemy + +usb:v0BB7* + ID_VENDOR_FROM_DATABASE=Joytech Computer Co., Ltd + +usb:v0BB8* + ID_VENDOR_FROM_DATABASE=Hitachi Semiconductor and Devices Sales Co., Ltd + +usb:v0BB9* + ID_VENDOR_FROM_DATABASE=Eiger M&C Co., Ltd + +usb:v0BBA* + ID_VENDOR_FROM_DATABASE=ZAccess Systems + +usb:v0BBB* + ID_VENDOR_FROM_DATABASE=General Meters Corp. + +usb:v0BBC* + ID_VENDOR_FROM_DATABASE=Assistive Technology, Inc. + +usb:v0BBD* + ID_VENDOR_FROM_DATABASE=System Connection, Inc. + +usb:v0BC0* + ID_VENDOR_FROM_DATABASE=Knilink Technology, Inc. + +usb:v0BC1* + ID_VENDOR_FROM_DATABASE=Fuw Yng Electronics Co., Ltd + +usb:v0BC2* + ID_VENDOR_FROM_DATABASE=Seagate RSS LLC + +usb:v0BC2p0502* + ID_MODEL_FROM_DATABASE=ST3300601CB-RK 300 GB External Hard Drive + +usb:v0BC2p0503* + ID_MODEL_FROM_DATABASE=ST3250824A [Barracuda 7200.9] + +usb:v0BC2p2000* + ID_MODEL_FROM_DATABASE=Storage Adapter V3 (TPP) + +usb:v0BC2p2200* + ID_MODEL_FROM_DATABASE=FreeAgent Go FW + +usb:v0BC2p2300* + ID_MODEL_FROM_DATABASE=Expansion Portable + +usb:v0BC2p2320* + ID_MODEL_FROM_DATABASE=USB 3.0 bridge [Portable Expansion Drive] + +usb:v0BC2p3320* + ID_MODEL_FROM_DATABASE=SRD00F2 [Expansion Desktop Drive] + +usb:v0BC2p3332* + ID_MODEL_FROM_DATABASE=Expansion + +usb:v0BC2p5021* + ID_MODEL_FROM_DATABASE=FreeAgent GoFlex USB 2.0 + +usb:v0BC2p5031* + ID_MODEL_FROM_DATABASE=FreeAgent GoFlex USB 3.0 + +usb:v0BC2p50A1* + ID_MODEL_FROM_DATABASE=FreeAgent GoFlex Desk + +usb:v0BC2p50A5* + ID_MODEL_FROM_DATABASE=FreeAgent GoFlex Desk USB 3.0 + +usb:v0BC2p5121* + ID_MODEL_FROM_DATABASE=FreeAgent GoFlex + +usb:v0BC2p5161* + ID_MODEL_FROM_DATABASE=FreeAgent GoFlex dock + +usb:v0BC2pA003* + ID_MODEL_FROM_DATABASE=Backup Plus + +usb:v0BC3* + ID_VENDOR_FROM_DATABASE=IPWireless, Inc. + +usb:v0BC3p0001* + ID_MODEL_FROM_DATABASE=UMTS-TDD (TD-CDMA) modem + +usb:v0BC4* + ID_VENDOR_FROM_DATABASE=Microcube Corp. + +usb:v0BC5* + ID_VENDOR_FROM_DATABASE=JCN Co., Ltd + +usb:v0BC6* + ID_VENDOR_FROM_DATABASE=ExWAY, Inc. + +usb:v0BC7* + ID_VENDOR_FROM_DATABASE=X10 Wireless Technology, Inc. + +usb:v0BC7p0001* + ID_MODEL_FROM_DATABASE=ActiveHome (ACPI-compliant) + +usb:v0BC7p0002* + ID_MODEL_FROM_DATABASE=Firecracker Interface (ACPI-compliant) + +usb:v0BC7p0003* + ID_MODEL_FROM_DATABASE=VGA Video Sender (ACPI-compliant) + +usb:v0BC7p0004* + ID_MODEL_FROM_DATABASE=X10 Receiver + +usb:v0BC7p0005* + ID_MODEL_FROM_DATABASE=Wireless Transceiver (ACPI-compliant) + +usb:v0BC7p0006* + ID_MODEL_FROM_DATABASE=Wireless Transceiver (ACPI-compliant) + +usb:v0BC7p0007* + ID_MODEL_FROM_DATABASE=Wireless Transceiver (ACPI-compliant) + +usb:v0BC7p0008* + ID_MODEL_FROM_DATABASE=Wireless Transceiver (ACPI-compliant) + +usb:v0BC7p0009* + ID_MODEL_FROM_DATABASE=Wireless Transceiver (ACPI-compliant) + +usb:v0BC7p000A* + ID_MODEL_FROM_DATABASE=Wireless Transceiver (ACPI-compliant) + +usb:v0BC7p000B* + ID_MODEL_FROM_DATABASE=Transceiver (ACPI-compliant) + +usb:v0BC7p000C* + ID_MODEL_FROM_DATABASE=Transceiver (ACPI-compliant) + +usb:v0BC7p000D* + ID_MODEL_FROM_DATABASE=Transceiver (ACPI-compliant) + +usb:v0BC7p000E* + ID_MODEL_FROM_DATABASE=Transceiver (ACPI-compliant) + +usb:v0BC7p000F* + ID_MODEL_FROM_DATABASE=Transceiver (ACPI-compliant) + +usb:v0BC8* + ID_VENDOR_FROM_DATABASE=Telmax Communications + +usb:v0BC9* + ID_VENDOR_FROM_DATABASE=ECI Telecom, Ltd + +usb:v0BCA* + ID_VENDOR_FROM_DATABASE=Startek Engineering, Inc. + +usb:v0BCB* + ID_VENDOR_FROM_DATABASE=Perfect Technic Enterprise Co., Ltd + +usb:v0BD7* + ID_VENDOR_FROM_DATABASE=Andrew Pargeter & Associates + +usb:v0BD7pA021* + ID_MODEL_FROM_DATABASE=Amptek DP4 multichannel signal analyzer + +usb:v0BDA* + ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Corp. + +usb:v0BDAp0103* + ID_MODEL_FROM_DATABASE=USB 2.0 Card Reader + +usb:v0BDAp0104* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0106* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0107* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0108* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0111* + ID_MODEL_FROM_DATABASE=RTS5111 Card Reader Controller + +usb:v0BDAp0113* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0115* + ID_MODEL_FROM_DATABASE=Mass Storage Device (Multicard Reader) + +usb:v0BDAp0116* + ID_MODEL_FROM_DATABASE=RTS5116 Card Reader Controller + +usb:v0BDAp0117* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0118* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0119* + ID_MODEL_FROM_DATABASE=Storage Device (SD card reader) + +usb:v0BDAp0129* + ID_MODEL_FROM_DATABASE=RTS5129 Card Reader Controller + +usb:v0BDAp0138* + ID_MODEL_FROM_DATABASE=RTS5138 Card Reader Controller + +usb:v0BDAp0139* + ID_MODEL_FROM_DATABASE=RTS5139 Card Reader Controller + +usb:v0BDAp0151* + ID_MODEL_FROM_DATABASE=Mass Storage Device (Multicard Reader) + +usb:v0BDAp0152* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0153* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0156* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0157* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0158* + ID_MODEL_FROM_DATABASE=USB 2.0 multicard reader + +usb:v0BDAp0159* + ID_MODEL_FROM_DATABASE=RTS5159 Card Reader Controller + +usb:v0BDAp0161* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0168* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0169* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0171* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0176* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0178* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0BDAp0184* + ID_MODEL_FROM_DATABASE=RTS5182 Card Reader + +usb:v0BDAp0186* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v0BDAp2831* + ID_MODEL_FROM_DATABASE=RTL2831U DVB-T + +usb:v0BDAp2832* + ID_MODEL_FROM_DATABASE=RTL2832U DVB-T + +usb:v0BDAp2838* + ID_MODEL_FROM_DATABASE=RTL2838 DVB-T + +usb:v0BDAp8150* + ID_MODEL_FROM_DATABASE=RTL8150 Fast Ethernet Adapter + +usb:v0BDAp8151* + ID_MODEL_FROM_DATABASE=RTL8151 Adapteon Business Mobile Networks BV + +usb:v0BDAp8171* + ID_MODEL_FROM_DATABASE=RTL8188SU 802.11n WLAN Adapter + +usb:v0BDAp8172* + ID_MODEL_FROM_DATABASE=RTL8191SU 802.11n WLAN Adapter + +usb:v0BDAp8174* + ID_MODEL_FROM_DATABASE=RTL8192SU 802.11n WLAN Adapter + +usb:v0BDAp8176* + ID_MODEL_FROM_DATABASE=RTL8188CUS 802.11n WLAN Adapter + +usb:v0BDAp8178* + ID_MODEL_FROM_DATABASE=RTL8192CU 802.11n WLAN Adapter + +usb:v0BDAp817F* + ID_MODEL_FROM_DATABASE=RTL8188RU 802.11n WLAN Adapter + +usb:v0BDAp8187* + ID_MODEL_FROM_DATABASE=RTL8187 Wireless Adapter + +usb:v0BDAp8189* + ID_MODEL_FROM_DATABASE=RTL8187B Wireless 802.11g 54Mbps Network Adapter + +usb:v0BDAp8192* + ID_MODEL_FROM_DATABASE=RTL8191SU 802.11n Wireless Adapter + +usb:v0BDAp8193* + ID_MODEL_FROM_DATABASE=RTL8192DU 802.11an WLAN Adapter + +usb:v0BDAp8197* + ID_MODEL_FROM_DATABASE=RTL8187B Wireless Adapter + +usb:v0BDAp8198* + ID_MODEL_FROM_DATABASE=RTL8187B Wireless Adapter + +usb:v0BDAp8199* + ID_MODEL_FROM_DATABASE=RTL8187SU 802.11g WLAN Adapter + +usb:v0BDB* + ID_VENDOR_FROM_DATABASE=Ericsson Business Mobile Networks BV + +usb:v0BDBp1000* + ID_MODEL_FROM_DATABASE=BV Bluetooth Device + +usb:v0BDBp1002* + ID_MODEL_FROM_DATABASE=Bluetooth Device 1.2 + +usb:v0BDBp1049* + ID_MODEL_FROM_DATABASE=C3607w Mobile Broadband Module + +usb:v0BDBp1900* + ID_MODEL_FROM_DATABASE=F3507g Mobile Broadband Module + +usb:v0BDBp1902* + ID_MODEL_FROM_DATABASE=F3507g v2 Mobile Broadband Module + +usb:v0BDBp1904* + ID_MODEL_FROM_DATABASE=F3607gw Mobile Broadband Module + +usb:v0BDBp1905* + ID_MODEL_FROM_DATABASE=F3607gw v2 Mobile Broadband Module + +usb:v0BDBp1906* + ID_MODEL_FROM_DATABASE=F3607gw v3 Mobile Broadband Module + +usb:v0BDBp1909* + ID_MODEL_FROM_DATABASE=F3307 v2 Mobile Broadband Module + +usb:v0BDBp190A* + ID_MODEL_FROM_DATABASE=F3307 Mobile Broadband Module + +usb:v0BDBp190B* + ID_MODEL_FROM_DATABASE=C3607w v2 Mobile Broadband Module + +usb:v0BDC* + ID_VENDOR_FROM_DATABASE=Y Media Corp. + +usb:v0BDD* + ID_VENDOR_FROM_DATABASE=Orange PCS + +usb:v0BE2* + ID_VENDOR_FROM_DATABASE=Kanda Tsushin Kogyo Co., Ltd + +usb:v0BE3* + ID_VENDOR_FROM_DATABASE=TOYO Corp. + +usb:v0BE4* + ID_VENDOR_FROM_DATABASE=Elka International, Ltd + +usb:v0BE5* + ID_VENDOR_FROM_DATABASE=DOME imaging systems, Inc. + +usb:v0BE6* + ID_VENDOR_FROM_DATABASE=Dong Guan Humen Wonderful Wire Cable Factory + +usb:v0BED* + ID_VENDOR_FROM_DATABASE=MEI + +usb:v0BEDp1100* + ID_MODEL_FROM_DATABASE=CASHFLOW SC + +usb:v0BEDp1101* + ID_MODEL_FROM_DATABASE=Series 2000 Combo Acceptor + +usb:v0BEE* + ID_VENDOR_FROM_DATABASE=LTK Industries, Ltd + +usb:v0BEF* + ID_VENDOR_FROM_DATABASE=Way2Call Communications + +usb:v0BF0* + ID_VENDOR_FROM_DATABASE=Pace Micro Technology PLC + +usb:v0BF1* + ID_VENDOR_FROM_DATABASE=Intracom S.A. + +usb:v0BF1p0001* + ID_MODEL_FROM_DATABASE=netMod Driver Ver 2.4.17 (CAPI) + +usb:v0BF1p0002* + ID_MODEL_FROM_DATABASE=netMod Driver Ver 2.4 (CAPI) + +usb:v0BF1p0003* + ID_MODEL_FROM_DATABASE=netMod Driver Ver 2.4 (CAPI) + +usb:v0BF2* + ID_VENDOR_FROM_DATABASE=Konexx + +usb:v0BF6* + ID_VENDOR_FROM_DATABASE=Addonics Technologies, Inc. + +usb:v0BF6p0103* + ID_MODEL_FROM_DATABASE=Storage Device + +usb:v0BF6p1234* + ID_MODEL_FROM_DATABASE=Storage Device + +usb:v0BF6pA000* + ID_MODEL_FROM_DATABASE=Cable 205 (TPP) + +usb:v0BF6pA001* + ID_MODEL_FROM_DATABASE=Cable 205 + +usb:v0BF6pA002* + ID_MODEL_FROM_DATABASE=IDE Bridge + +usb:v0BF7* + ID_VENDOR_FROM_DATABASE=Sunny Giken, Inc. + +usb:v0BF8* + ID_VENDOR_FROM_DATABASE=Fujitsu Siemens Computers + +usb:v0BF8p1001* + ID_MODEL_FROM_DATABASE=Fujitsu Pocket Loox 600 PDA + +usb:v0BF8p1006* + ID_MODEL_FROM_DATABASE=SmartCard Reader 2A + +usb:v0BF8p1007* + ID_MODEL_FROM_DATABASE=Connect2Air E-5400 802.11g Wireless Adapter + +usb:v0BF8p1009* + ID_MODEL_FROM_DATABASE=Connect2Air E-5400 D1700 802.11g Wireless Adapter [Intersil ISL3887] + +usb:v0BF8p100C* + ID_MODEL_FROM_DATABASE=Keyboard FSC KBPC PX + +usb:v0BF8p100F* + ID_MODEL_FROM_DATABASE=miniCard D2301 802.11bg Wireless Module [SiS 163U] + +usb:v0BFD* + ID_VENDOR_FROM_DATABASE=Kvaser AB + +usb:v0BFDp0004* + ID_MODEL_FROM_DATABASE=USBcan II + +usb:v0BFDp000B* + ID_MODEL_FROM_DATABASE=Leaf Light HS + +usb:v0BFDp000E* + ID_MODEL_FROM_DATABASE=Leaf SemiPro HS + +usb:v0C04* + ID_VENDOR_FROM_DATABASE=MOTO Development Group, Inc. + +usb:v0C05* + ID_VENDOR_FROM_DATABASE=Appian Graphics + +usb:v0C06* + ID_VENDOR_FROM_DATABASE=Hasbro Games, Inc. + +usb:v0C07* + ID_VENDOR_FROM_DATABASE=Infinite Data Storage, Ltd + +usb:v0C08* + ID_VENDOR_FROM_DATABASE=Agate + +usb:v0C08p0378* + ID_MODEL_FROM_DATABASE=Q 16MB Storage Device + +usb:v0C09* + ID_VENDOR_FROM_DATABASE=Comjet Information System + +usb:v0C09pA5A5* + ID_MODEL_FROM_DATABASE=Litto Version USB2.0 + +usb:v0C0A* + ID_VENDOR_FROM_DATABASE=Highpoint Technologies, Inc. + +usb:v0C0B* + ID_VENDOR_FROM_DATABASE=Dura Micro, Inc. (Acomdata) + +usb:v0C0Bp27CB* + ID_MODEL_FROM_DATABASE=6-in-1 Flash Reader and Writer + +usb:v0C0Bp27D7* + ID_MODEL_FROM_DATABASE=Multi Memory reader/writer MD-005 + +usb:v0C0Bp27DA* + ID_MODEL_FROM_DATABASE=Multi Memory reader/writer MD-005 + +usb:v0C0Bp27DC* + ID_MODEL_FROM_DATABASE=Multi Memory reader/writer MD-005 + +usb:v0C0Bp27E7* + ID_MODEL_FROM_DATABASE=3,5'' HDD case MD-231 + +usb:v0C0Bp27EE* + ID_MODEL_FROM_DATABASE=3,5'' HDD case MD-231 + +usb:v0C0Bp2814* + ID_MODEL_FROM_DATABASE=3,5'' HDD case MD-231 + +usb:v0C0Bp2815* + ID_MODEL_FROM_DATABASE=3,5'' HDD case MD-231 + +usb:v0C0Bp281D* + ID_MODEL_FROM_DATABASE=3,5'' HDD case MD-231 + +usb:v0C0Bp5FAB* + ID_MODEL_FROM_DATABASE=Storage Adaptor + +usb:v0C0BpA109* + ID_MODEL_FROM_DATABASE=CF/SM Reader and Writer + +usb:v0C0BpA10C* + ID_MODEL_FROM_DATABASE=SD/MS Reader and Writer + +usb:v0C0BpB001* + ID_MODEL_FROM_DATABASE=USB 2.0 Mass Storage IDE adapter + +usb:v0C0BpB004* + ID_MODEL_FROM_DATABASE=MMC/SD Reader and Writer + +usb:v0C12* + ID_VENDOR_FROM_DATABASE=Zeroplus + +usb:v0C12p0005* + ID_MODEL_FROM_DATABASE=PSX Vibration Feedback Converter + +usb:v0C12p0030* + ID_MODEL_FROM_DATABASE=PSX Vibration Feedback Converter + +usb:v0C12p700E* + ID_MODEL_FROM_DATABASE=Logic Analyzer (LAP-C-16032) + +usb:v0C12p8801* + ID_MODEL_FROM_DATABASE=Xbox Controller + +usb:v0C12p8802* + ID_MODEL_FROM_DATABASE=Xbox Controller + +usb:v0C12p8809* + ID_MODEL_FROM_DATABASE=Red Octane Ignition Xbox DDR Pad + +usb:v0C12p880A* + ID_MODEL_FROM_DATABASE=Pelican Eclipse PL-2023 + +usb:v0C12p8810* + ID_MODEL_FROM_DATABASE=Xbox Controller + +usb:v0C12p9902* + ID_MODEL_FROM_DATABASE=VibraX + +usb:v0C15* + ID_VENDOR_FROM_DATABASE=Iris Graphics + +usb:v0C16* + ID_VENDOR_FROM_DATABASE=Gyration, Inc. + +usb:v0C16p0002* + ID_MODEL_FROM_DATABASE=RF Technology Receiver + +usb:v0C16p0003* + ID_MODEL_FROM_DATABASE=RF Technology Receiver + +usb:v0C16p0008* + ID_MODEL_FROM_DATABASE=RF Technology Receiver + +usb:v0C16p0080* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v0C16p0081* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v0C17* + ID_VENDOR_FROM_DATABASE=Cyberboard A/S + +usb:v0C18* + ID_VENDOR_FROM_DATABASE=SynerTek Korea, Inc. + +usb:v0C19* + ID_VENDOR_FROM_DATABASE=cyberPIXIE, Inc. + +usb:v0C1A* + ID_VENDOR_FROM_DATABASE=Silicon Motion, Inc. + +usb:v0C1B* + ID_VENDOR_FROM_DATABASE=MIPS Technologies + +usb:v0C1C* + ID_VENDOR_FROM_DATABASE=Hang Zhou Silan Electronics Co., Ltd + +usb:v0C22* + ID_VENDOR_FROM_DATABASE=Tally Printer Corp. + +usb:v0C23* + ID_VENDOR_FROM_DATABASE=Lernout + Hauspie + +usb:v0C24* + ID_VENDOR_FROM_DATABASE=Taiyo Yuden + +usb:v0C24p0001* + ID_MODEL_FROM_DATABASE=Bluetooth Adaptor + +usb:v0C24p0002* + ID_MODEL_FROM_DATABASE=Bluetooth Device2 + +usb:v0C24p0005* + ID_MODEL_FROM_DATABASE=Bluetooth Device(BC04-External) + +usb:v0C24p000B* + ID_MODEL_FROM_DATABASE=Bluetooth Device(BC04-External) + +usb:v0C24p000C* + ID_MODEL_FROM_DATABASE=Bluetooth Adaptor + +usb:v0C24p000E* + ID_MODEL_FROM_DATABASE=Bluetooth Device(BC04-External) + +usb:v0C24p000F* + ID_MODEL_FROM_DATABASE=Bluetooth Device (V2.0+EDR) + +usb:v0C24p0010* + ID_MODEL_FROM_DATABASE=Bluetooth Device(BC04-External) + +usb:v0C24p0012* + ID_MODEL_FROM_DATABASE=Bluetooth Device(BC04-External) + +usb:v0C24p0018* + ID_MODEL_FROM_DATABASE=Bluetooth Device(BC04-External) + +usb:v0C24p0019* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0C24p0021* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0C24p0C24* + ID_MODEL_FROM_DATABASE=Bluetooth Device(SAMPLE) + +usb:v0C24pFFFF* + ID_MODEL_FROM_DATABASE=Bluetooth module with BlueCore in DFU mode + +usb:v0C25* + ID_VENDOR_FROM_DATABASE=Sampo Corp. + +usb:v0C25p0310* + ID_MODEL_FROM_DATABASE=Scream Cam + +usb:v0C26* + ID_VENDOR_FROM_DATABASE=Prolific Technology Inc. + +usb:v0C26p0018* + ID_MODEL_FROM_DATABASE=USB-Serial Controller [Icom Inc. OPC-478UC] + +usb:v0C27* + ID_VENDOR_FROM_DATABASE=RFIDeas, Inc + +usb:v0C27p3BFA* + ID_MODEL_FROM_DATABASE=pcProx Card Reader + +usb:v0C2E* + ID_VENDOR_FROM_DATABASE=Metrologic Instruments + +usb:v0C2Ep0007* + ID_MODEL_FROM_DATABASE=Metrologic MS7120 Barcode Scanner (IBM SurePOS mode) + +usb:v0C2Ep0200* + ID_MODEL_FROM_DATABASE=Metrologic Scanner + +usb:v0C2Ep0204* + ID_MODEL_FROM_DATABASE=Metrologic MS7120 Barcode Scanner (keyboard mode) + +usb:v0C2Ep0206* + ID_MODEL_FROM_DATABASE=Metrologic MS4980 Barcode Scanner + +usb:v0C2Ep0700* + ID_MODEL_FROM_DATABASE=Metrologic MS7120 Barcode Scanner (uni-directional serial mode) + +usb:v0C2Ep0720* + ID_MODEL_FROM_DATABASE=Metrologic MS7120 Barcode Scanner (bi-directional serial mode) + +usb:v0C2Ep0B61* + ID_MODEL_FROM_DATABASE=Vuquest 3310g + +usb:v0C2Ep0B6A* + ID_MODEL_FROM_DATABASE=Vuquest 3310 Area-Imaging Scanner + +usb:v0C35* + ID_VENDOR_FROM_DATABASE=Eagletron, Inc. + +usb:v0C36* + ID_VENDOR_FROM_DATABASE=E Ink Corp. + +usb:v0C37* + ID_VENDOR_FROM_DATABASE=e.Digital + +usb:v0C38* + ID_VENDOR_FROM_DATABASE=Der An Electric Wire & Cable Co., Ltd + +usb:v0C39* + ID_VENDOR_FROM_DATABASE=IFR + +usb:v0C3A* + ID_VENDOR_FROM_DATABASE=Furui Precise Component (Kunshan) Co., Ltd + +usb:v0C3B* + ID_VENDOR_FROM_DATABASE=Komatsu, Ltd + +usb:v0C3C* + ID_VENDOR_FROM_DATABASE=Radius Co., Ltd + +usb:v0C3D* + ID_VENDOR_FROM_DATABASE=Innocom, Inc. + +usb:v0C3E* + ID_VENDOR_FROM_DATABASE=Nextcell, Inc. + +usb:v0C44* + ID_VENDOR_FROM_DATABASE=Motorola iDEN + +usb:v0C44p0021* + ID_MODEL_FROM_DATABASE=iDEN P2k0 Device + +usb:v0C44p0022* + ID_MODEL_FROM_DATABASE=iDEN P2k1 Device + +usb:v0C44p03A2* + ID_MODEL_FROM_DATABASE=iDEN Smartphone + +usb:v0C44p41D9* + ID_MODEL_FROM_DATABASE=i1 phone + +usb:v0C45* + ID_VENDOR_FROM_DATABASE=Microdia + +usb:v0C45p0011* + ID_MODEL_FROM_DATABASE=EBUDDY + +usb:v0C45p1018* + ID_MODEL_FROM_DATABASE=Compact Flash storage memory card reader + +usb:v0C45p1020* + ID_MODEL_FROM_DATABASE=Mass Storage Reader + +usb:v0C45p1028* + ID_MODEL_FROM_DATABASE=Mass Storage Reader + +usb:v0C45p1030* + ID_MODEL_FROM_DATABASE=Mass Storage Reader + +usb:v0C45p1031* + ID_MODEL_FROM_DATABASE=Sonix Mass Storage Device + +usb:v0C45p1032* + ID_MODEL_FROM_DATABASE=Mass Storage Reader + +usb:v0C45p1033* + ID_MODEL_FROM_DATABASE=Sonix Mass Storage Device + +usb:v0C45p1034* + ID_MODEL_FROM_DATABASE=Mass Storage Reader + +usb:v0C45p1035* + ID_MODEL_FROM_DATABASE=Mass Storage Reader + +usb:v0C45p1036* + ID_MODEL_FROM_DATABASE=Mass Storage Reader + +usb:v0C45p1037* + ID_MODEL_FROM_DATABASE=Sonix Mass Storage Device + +usb:v0C45p1050* + ID_MODEL_FROM_DATABASE=CF Card Reader + +usb:v0C45p1058* + ID_MODEL_FROM_DATABASE=HDD Reader + +usb:v0C45p1060* + ID_MODEL_FROM_DATABASE=iFlash SM-Direct Card Reader + +usb:v0C45p1061* + ID_MODEL_FROM_DATABASE=Mass Storage Reader + +usb:v0C45p1062* + ID_MODEL_FROM_DATABASE=Mass Storage Reader + +usb:v0C45p1063* + ID_MODEL_FROM_DATABASE=Sonix Mass Storage Device + +usb:v0C45p1064* + ID_MODEL_FROM_DATABASE=Mass Storage Reader + +usb:v0C45p1065* + ID_MODEL_FROM_DATABASE=Mass Storage Reader + +usb:v0C45p1066* + ID_MODEL_FROM_DATABASE=Mass Storage Reader + +usb:v0C45p1067* + ID_MODEL_FROM_DATABASE=Mass Storage Reader + +usb:v0C45p1158* + ID_MODEL_FROM_DATABASE=A56AK + +usb:v0C45p184C* + ID_MODEL_FROM_DATABASE=VoIP Phone + +usb:v0C45p6001* + ID_MODEL_FROM_DATABASE=Genius VideoCAM NB + +usb:v0C45p6005* + ID_MODEL_FROM_DATABASE=Sweex Mini Webcam + +usb:v0C45p6007* + ID_MODEL_FROM_DATABASE=VideoCAM Eye + +usb:v0C45p6009* + ID_MODEL_FROM_DATABASE=VideoCAM ExpressII + +usb:v0C45p600D* + ID_MODEL_FROM_DATABASE=TwinkleCam USB camera + +usb:v0C45p6011* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C102) + +usb:v0C45p6019* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C102) + +usb:v0C45p6024* + ID_MODEL_FROM_DATABASE=VideoCAM ExpressII + +usb:v0C45p6025* + ID_MODEL_FROM_DATABASE=VideoCAM ExpressII + +usb:v0C45p6028* + ID_MODEL_FROM_DATABASE=Typhoon Easycam USB 330K (older) + +usb:v0C45p6029* + ID_MODEL_FROM_DATABASE=Triplex i-mini PC Camera + +usb:v0C45p602A* + ID_MODEL_FROM_DATABASE=Meade ETX-105EC Camera + +usb:v0C45p602B* + ID_MODEL_FROM_DATABASE=VideoCAM NB 300 + +usb:v0C45p602C* + ID_MODEL_FROM_DATABASE=Clas Ohlson TWC-30XOP Webcam + +usb:v0C45p602D* + ID_MODEL_FROM_DATABASE=VideoCAM ExpressII + +usb:v0C45p602E* + ID_MODEL_FROM_DATABASE=VideoCAM Messenger + +usb:v0C45p6030* + ID_MODEL_FROM_DATABASE=VideoCAM ExpressII + +usb:v0C45p603F* + ID_MODEL_FROM_DATABASE=VideoCAM ExpressII + +usb:v0C45p6040* + ID_MODEL_FROM_DATABASE=CCD PC Camera (PC390A) + +usb:v0C45p606A* + ID_MODEL_FROM_DATABASE=CCD PC Camera (PC390A) + +usb:v0C45p607A* + ID_MODEL_FROM_DATABASE=CCD PC Camera (PC390A) + +usb:v0C45p607B* + ID_MODEL_FROM_DATABASE=Win2 PC Camera + +usb:v0C45p607C* + ID_MODEL_FROM_DATABASE=CCD PC Camera (PC390A) + +usb:v0C45p607E* + ID_MODEL_FROM_DATABASE=CCD PC Camera (PC390A) + +usb:v0C45p6080* + ID_MODEL_FROM_DATABASE=Audio (Microphone) + +usb:v0C45p6082* + ID_MODEL_FROM_DATABASE=VideoCAM Look + +usb:v0C45p6083* + ID_MODEL_FROM_DATABASE=VideoCAM Look + +usb:v0C45p608C* + ID_MODEL_FROM_DATABASE=VideoCAM Look + +usb:v0C45p608E* + ID_MODEL_FROM_DATABASE=VideoCAM Look + +usb:v0C45p608F* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C103 + OV7630) + +usb:v0C45p60A8* + ID_MODEL_FROM_DATABASE=VideoCAM Look + +usb:v0C45p60AA* + ID_MODEL_FROM_DATABASE=VideoCAM Look + +usb:v0C45p60AB* + ID_MODEL_FROM_DATABASE=PC Camera + +usb:v0C45p60AF* + ID_MODEL_FROM_DATABASE=VideoCAM Look + +usb:v0C45p60B0* + ID_MODEL_FROM_DATABASE=Genius VideoCam Look + +usb:v0C45p60C0* + ID_MODEL_FROM_DATABASE=PC Camera with Mic (SN9C105) + +usb:v0C45p60C8* + ID_MODEL_FROM_DATABASE=Win2 PC Camera + +usb:v0C45p60CC* + ID_MODEL_FROM_DATABASE=PC Camera with Mic (SN9C105) + +usb:v0C45p60EC* + ID_MODEL_FROM_DATABASE=PC Camera with Mic (SN9C105) + +usb:v0C45p60EF* + ID_MODEL_FROM_DATABASE=Win2 PC Camera + +usb:v0C45p60FA* + ID_MODEL_FROM_DATABASE=PC Camera with Mic (SN9C105) + +usb:v0C45p60FB* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v0C45p60FC* + ID_MODEL_FROM_DATABASE=PC Camera with Mic (SN9C105) + +usb:v0C45p60FE* + ID_MODEL_FROM_DATABASE=Audio (Microphone) + +usb:v0C45p6108* + ID_MODEL_FROM_DATABASE=Win2 PC Camera + +usb:v0C45p6122* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C110) + +usb:v0C45p6123* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C110) + +usb:v0C45p6128* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C325 + OM6802) + +usb:v0C45p612A* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C325) + +usb:v0C45p612C* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C110) + +usb:v0C45p612E* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C110) + +usb:v0C45p612F* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C110) + +usb:v0C45p6130* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C120) + +usb:v0C45p6138* + ID_MODEL_FROM_DATABASE=Win2 PC Camera + +usb:v0C45p613A* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C120) + +usb:v0C45p613B* + ID_MODEL_FROM_DATABASE=Win2 PC Camera + +usb:v0C45p613C* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C120) + +usb:v0C45p613E* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C120) + +usb:v0C45p6143* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C120 + SP80708) + +usb:v0C45p6240* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + MI1300) + +usb:v0C45p6242* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + MI1310) + +usb:v0C45p6243* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + S5K4AAFX) + +usb:v0C45p6248* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + OV9655) + +usb:v0C45p624B* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + CX1332) + +usb:v0C45p624C* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + MI1320) + +usb:v0C45p624E* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + SOI968) + +usb:v0C45p624F* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + OV9650) + +usb:v0C45p6251* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + OV9650) + +usb:v0C45p6253* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + OV9650) + +usb:v0C45p6260* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + OV7670ISP) + +usb:v0C45p6262* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + OM6802) + +usb:v0C45p6270* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + MI0360/MT9V011 or MI0360SOC/MT9V111) U-CAM PC Camera NE878, Whitcom WHC017, ... + +usb:v0C45p627A* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + S5K53BEB) + +usb:v0C45p627B* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + OV7660) + +usb:v0C45p627C* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + HV7131R) + +usb:v0C45p627F* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + OV965x + EEPROM) + +usb:v0C45p6280* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + MI1300) + +usb:v0C45p6282* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + MI1310) + +usb:v0C45p6283* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + S5K4AAFX) + +usb:v0C45p6288* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + OV9655) + +usb:v0C45p628A* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + ICM107) + +usb:v0C45p628B* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + CX1332) + +usb:v0C45p628C* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + MI1320) + +usb:v0C45p628E* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + SOI968) + +usb:v0C45p628F* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + OV9650) + +usb:v0C45p62A0* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + OV7670ISP) + +usb:v0C45p62A2* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + OM6802) + +usb:v0C45p62B0* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + MI0360/MT9V011 or MI0360SOC/MT9V111) + +usb:v0C45p62B3* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + OV9655) + +usb:v0C45p62BA* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + S5K53BEB) + +usb:v0C45p62BB* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + OV7660) + +usb:v0C45p62BC* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + HV7131R) + +usb:v0C45p62BE* + ID_MODEL_FROM_DATABASE=PC Camera with Microphone (SN9C202 + OV7663) + +usb:v0C45p62C0* + ID_MODEL_FROM_DATABASE=Sonix USB 2.0 Camera + +usb:v0C45p62E0* + ID_MODEL_FROM_DATABASE=MSI Starcam Racer + +usb:v0C45p6310* + ID_MODEL_FROM_DATABASE=Sonix USB 2.0 Camera + +usb:v0C45p63E0* + ID_MODEL_FROM_DATABASE=Sonix Integrated Webcam + +usb:v0C45p63F1* + ID_MODEL_FROM_DATABASE=Integrated Webcam + +usb:v0C45p63F8* + ID_MODEL_FROM_DATABASE=Sonix Integrated Webcam + +usb:v0C45p6409* + ID_MODEL_FROM_DATABASE=Webcam + +usb:v0C45p6413* + ID_MODEL_FROM_DATABASE=Integrated Webcam + +usb:v0C45p6417* + ID_MODEL_FROM_DATABASE=Integrated Webcam + +usb:v0C45p641D* + ID_MODEL_FROM_DATABASE=1.3 MPixel Integrated Webcam + +usb:v0C45p6480* + ID_MODEL_FROM_DATABASE=Sonix 1.3 MP Laptop Integrated Webcam + +usb:v0C45p648B* + ID_MODEL_FROM_DATABASE=Integrated Webcam + +usb:v0C45p64BD* + ID_MODEL_FROM_DATABASE=Sony Visual Communication Camera + +usb:v0C45p7402* + ID_MODEL_FROM_DATABASE=TEMPerHUM Temperature & Humidity Sensor + +usb:v0C45p7403* + ID_MODEL_FROM_DATABASE=Foot Switch + +usb:v0C45p8000* + ID_MODEL_FROM_DATABASE=DC31VC + +usb:v0C45p8006* + ID_MODEL_FROM_DATABASE=Dual Mode Camera (8006 VGA) + +usb:v0C45p800A* + ID_MODEL_FROM_DATABASE=Vivitar Vivicam3350B + +usb:v0C46* + ID_VENDOR_FROM_DATABASE=WaveRider Communications, Inc. + +usb:v0C4A* + ID_VENDOR_FROM_DATABASE=ALGE-TIMING GmbH + +usb:v0C4Ap0889* + ID_MODEL_FROM_DATABASE=Timy + +usb:v0C4Ap088A* + ID_MODEL_FROM_DATABASE=Timy 2 + +usb:v0C4B* + ID_VENDOR_FROM_DATABASE=Reiner SCT Kartensysteme GmbH + +usb:v0C4Bp0100* + ID_MODEL_FROM_DATABASE=cyberJack e-com/pinpad + +usb:v0C4Bp0300* + ID_MODEL_FROM_DATABASE=cyberJack pinpad(a) + +usb:v0C4Bp0501* + ID_MODEL_FROM_DATABASE=cyberJack RFID comfort dual interface smartcard reader + +usb:v0C4Bp9102* + ID_MODEL_FROM_DATABASE=cyberJack RFID basis contactless smartcard reader + +usb:v0C4C* + ID_VENDOR_FROM_DATABASE=Needham's Electronics + +usb:v0C4Cp0021* + ID_MODEL_FROM_DATABASE=EMP-21 Universal Programmer + +usb:v0C52* + ID_VENDOR_FROM_DATABASE=Sealevel Systems, Inc. + +usb:v0C52p2101* + ID_MODEL_FROM_DATABASE=SeaLINK+232 + +usb:v0C52p2102* + ID_MODEL_FROM_DATABASE=SeaLINK+485 + +usb:v0C52p2103* + ID_MODEL_FROM_DATABASE=SeaLINK+232I + +usb:v0C52p2104* + ID_MODEL_FROM_DATABASE=SeaLINK+485I + +usb:v0C52p2211* + ID_MODEL_FROM_DATABASE=SeaPORT+2/232 (Port 1) + +usb:v0C52p2212* + ID_MODEL_FROM_DATABASE=SeaPORT+2/485 (Port 1) + +usb:v0C52p2213* + ID_MODEL_FROM_DATABASE=SeaPORT+2 (Port 1) + +usb:v0C52p2221* + ID_MODEL_FROM_DATABASE=SeaPORT+2/232 (Port 2) + +usb:v0C52p2222* + ID_MODEL_FROM_DATABASE=SeaPORT+2/485 (Port 2) + +usb:v0C52p2223* + ID_MODEL_FROM_DATABASE=SeaPORT+2 (Port 2) + +usb:v0C52p2411* + ID_MODEL_FROM_DATABASE=SeaPORT+4/232 (Port 1) + +usb:v0C52p2412* + ID_MODEL_FROM_DATABASE=SeaPORT+4/485 (Port 1) + +usb:v0C52p2413* + ID_MODEL_FROM_DATABASE=SeaPORT+4 (Port 1) + +usb:v0C52p2421* + ID_MODEL_FROM_DATABASE=SeaPORT+4/232 (Port 2) + +usb:v0C52p2422* + ID_MODEL_FROM_DATABASE=SeaPORT+4/485 (Port 2) + +usb:v0C52p2423* + ID_MODEL_FROM_DATABASE=SeaPORT+4 (Port 2) + +usb:v0C52p2431* + ID_MODEL_FROM_DATABASE=SeaPORT+4/232 (Port 3) + +usb:v0C52p2432* + ID_MODEL_FROM_DATABASE=SeaPORT+4/485 (Port 3) + +usb:v0C52p2433* + ID_MODEL_FROM_DATABASE=SeaPORT+4 (Port 3) + +usb:v0C52p2441* + ID_MODEL_FROM_DATABASE=SeaPORT+4/232 (Port 4) + +usb:v0C52p2442* + ID_MODEL_FROM_DATABASE=SeaPORT+4/485 (Port 4) + +usb:v0C52p2443* + ID_MODEL_FROM_DATABASE=SeaPORT+4 (Port 4) + +usb:v0C52p2811* + ID_MODEL_FROM_DATABASE=SeaLINK+8/232 (Port 1) + +usb:v0C52p2812* + ID_MODEL_FROM_DATABASE=SeaLINK+8/485 (Port 1) + +usb:v0C52p2813* + ID_MODEL_FROM_DATABASE=SeaLINK+8 (Port 1) + +usb:v0C52p2821* + ID_MODEL_FROM_DATABASE=SeaLINK+8/232 (Port 2) + +usb:v0C52p2822* + ID_MODEL_FROM_DATABASE=SeaLINK+8/485 (Port 2) + +usb:v0C52p2823* + ID_MODEL_FROM_DATABASE=SeaLINK+8 (Port 2) + +usb:v0C52p2831* + ID_MODEL_FROM_DATABASE=SeaLINK+8/232 (Port 3) + +usb:v0C52p2832* + ID_MODEL_FROM_DATABASE=SeaLINK+8/485 (Port 3) + +usb:v0C52p2833* + ID_MODEL_FROM_DATABASE=SeaLINK+8 (Port 3) + +usb:v0C52p2841* + ID_MODEL_FROM_DATABASE=SeaLINK+8/232 (Port 4) + +usb:v0C52p2842* + ID_MODEL_FROM_DATABASE=SeaLINK+8/485 (Port 4) + +usb:v0C52p2843* + ID_MODEL_FROM_DATABASE=SeaLINK+8 (Port 4) + +usb:v0C52p2851* + ID_MODEL_FROM_DATABASE=SeaLINK+8/232 (Port 5) + +usb:v0C52p2852* + ID_MODEL_FROM_DATABASE=SeaLINK+8/485 (Port 5) + +usb:v0C52p2853* + ID_MODEL_FROM_DATABASE=SeaLINK+8 (Port 5) + +usb:v0C52p2861* + ID_MODEL_FROM_DATABASE=SeaLINK+8/232 (Port 6) + +usb:v0C52p2862* + ID_MODEL_FROM_DATABASE=SeaLINK+8/485 (Port 6) + +usb:v0C52p2863* + ID_MODEL_FROM_DATABASE=SeaLINK+8 (Port 6) + +usb:v0C52p2871* + ID_MODEL_FROM_DATABASE=SeaLINK+8/232 (Port 7) + +usb:v0C52p2872* + ID_MODEL_FROM_DATABASE=SeaLINK+8/485 (Port 7) + +usb:v0C52p2873* + ID_MODEL_FROM_DATABASE=SeaLINK+8 (Port 7) + +usb:v0C52p2881* + ID_MODEL_FROM_DATABASE=SeaLINK+8/232 (Port 8) + +usb:v0C52p2882* + ID_MODEL_FROM_DATABASE=SeaLINK+8/485 (Port 8) + +usb:v0C52p2883* + ID_MODEL_FROM_DATABASE=SeaLINK+8 (Port 8) + +usb:v0C52p9020* + ID_MODEL_FROM_DATABASE=SeaLINK+422 + +usb:v0C52pA02A* + ID_MODEL_FROM_DATABASE=SeaLINK+8 (Port 1+2) + +usb:v0C52pA02B* + ID_MODEL_FROM_DATABASE=SeaLINK+8 (Port 3+4) + +usb:v0C52pA02C* + ID_MODEL_FROM_DATABASE=SeaLINK+8 (Port 5+6) + +usb:v0C52pA02D* + ID_MODEL_FROM_DATABASE=SeaLINK+8 (Port 7+8) + +usb:v0C53* + ID_VENDOR_FROM_DATABASE=ViewPLUS, Inc. + +usb:v0C54* + ID_VENDOR_FROM_DATABASE=Glory, Ltd + +usb:v0C55* + ID_VENDOR_FROM_DATABASE=Spectrum Digital, Inc. + +usb:v0C55p0510* + ID_MODEL_FROM_DATABASE=Spectrum Digital XDS510 JTAG Debugger + +usb:v0C55p0540* + ID_MODEL_FROM_DATABASE=SPI540 + +usb:v0C55p5416* + ID_MODEL_FROM_DATABASE=TMS320C5416 DSK + +usb:v0C55p6416* + ID_MODEL_FROM_DATABASE=TMS320C6416 DDB + +usb:v0C56* + ID_VENDOR_FROM_DATABASE=Billion Bright, Ltd + +usb:v0C57* + ID_VENDOR_FROM_DATABASE=Imaginative Design Operation Co., Ltd + +usb:v0C58* + ID_VENDOR_FROM_DATABASE=Vidar Systems Corp. + +usb:v0C59* + ID_VENDOR_FROM_DATABASE=Dong Guan Shinko Wire Co., Ltd + +usb:v0C5A* + ID_VENDOR_FROM_DATABASE=TRS International Mfg., Inc. + +usb:v0C5E* + ID_VENDOR_FROM_DATABASE=Xytronix Research & Design + +usb:v0C60* + ID_VENDOR_FROM_DATABASE=Apogee Electronics Corp. + +usb:v0C62* + ID_VENDOR_FROM_DATABASE=Chant Sincere Co., Ltd + +usb:v0C63* + ID_VENDOR_FROM_DATABASE=Toko, Inc. + +usb:v0C64* + ID_VENDOR_FROM_DATABASE=Signality System Engineering Co., Ltd + +usb:v0C65* + ID_VENDOR_FROM_DATABASE=Eminence Enterprise Co., Ltd + +usb:v0C66* + ID_VENDOR_FROM_DATABASE=Rexon Electronics Corp. + +usb:v0C67* + ID_VENDOR_FROM_DATABASE=Concept Telecom, Ltd + +usb:v0C6A* + ID_VENDOR_FROM_DATABASE=ACS + +usb:v0C6Ap0005* + ID_MODEL_FROM_DATABASE=Color 320 x 240 LCD Display Terminal with Touchscreen + +usb:v0C6C* + ID_VENDOR_FROM_DATABASE=JETI Technische Instrumente GmbH + +usb:v0C6Cp04B2* + ID_MODEL_FROM_DATABASE=Specbos 1201 + +usb:v0C70* + ID_VENDOR_FROM_DATABASE=MCT Elektronikladen + +usb:v0C70p0000* + ID_MODEL_FROM_DATABASE=USB08 Development board + +usb:v0C70p0747* + ID_MODEL_FROM_DATABASE=Eye Movement Recorder [Visagraph]/[ReadAlyzer] + +usb:v0C72* + ID_VENDOR_FROM_DATABASE=PEAK System + +usb:v0C72p000C* + ID_MODEL_FROM_DATABASE=PCAN-USB + +usb:v0C72p000D* + ID_MODEL_FROM_DATABASE=PCAN Pro + +usb:v0C74* + ID_VENDOR_FROM_DATABASE=Optronic Laboratories Inc. + +usb:v0C74p0002* + ID_MODEL_FROM_DATABASE=OL 700-30 Goniometer + +usb:v0C76* + ID_VENDOR_FROM_DATABASE=JMTek, LLC. + +usb:v0C76p0001* + ID_MODEL_FROM_DATABASE=Mass Storage Controller + +usb:v0C76p0002* + ID_MODEL_FROM_DATABASE=Mass Storage Controller + +usb:v0C76p0003* + ID_MODEL_FROM_DATABASE=USBdisk + +usb:v0C76p0004* + ID_MODEL_FROM_DATABASE=Mass Storage Controller + +usb:v0C76p0005* + ID_MODEL_FROM_DATABASE=Transcend Flash disk + +usb:v0C76p0006* + ID_MODEL_FROM_DATABASE=Transcend JetFlash + +usb:v0C76p0007* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0C76p1600* + ID_MODEL_FROM_DATABASE=Ion Quick Play LP turntable + +usb:v0C76p1605* + ID_MODEL_FROM_DATABASE=SSS Headphone Set + +usb:v0C76p1607* + ID_MODEL_FROM_DATABASE=audio controller + +usb:v0C77* + ID_VENDOR_FROM_DATABASE=Sipix Group, Ltd + +usb:v0C77p1001* + ID_MODEL_FROM_DATABASE=SiPix Web2 + +usb:v0C77p1002* + ID_MODEL_FROM_DATABASE=SiPix SC2100 + +usb:v0C77p1010* + ID_MODEL_FROM_DATABASE=SiPix Snap + +usb:v0C77p1011* + ID_MODEL_FROM_DATABASE=SiPix Blink 2 + +usb:v0C77p1015* + ID_MODEL_FROM_DATABASE=SiPix CAMeleon + +usb:v0C78* + ID_VENDOR_FROM_DATABASE=Detto Corp. + +usb:v0C79* + ID_VENDOR_FROM_DATABASE=NuConnex Technologies Pte., Ltd + +usb:v0C7A* + ID_VENDOR_FROM_DATABASE=Wing-Span Enterprise Co., Ltd + +usb:v0C86* + ID_VENDOR_FROM_DATABASE=NDA Technologies, Inc. + +usb:v0C88* + ID_VENDOR_FROM_DATABASE=Kyocera Wireless Corp. + +usb:v0C88p0021* + ID_MODEL_FROM_DATABASE=Handheld + +usb:v0C88p17DA* + ID_MODEL_FROM_DATABASE=Qualcomm Kyocera CDMA Technologies MSM + +usb:v0C89* + ID_VENDOR_FROM_DATABASE=Honda Tsushin Kogyo Co., Ltd + +usb:v0C8A* + ID_VENDOR_FROM_DATABASE=Pathway Connectivity, Inc. + +usb:v0C8B* + ID_VENDOR_FROM_DATABASE=Wavefly Corp. + +usb:v0C8C* + ID_VENDOR_FROM_DATABASE=Coactive Networks + +usb:v0C8D* + ID_VENDOR_FROM_DATABASE=Tempo + +usb:v0C8E* + ID_VENDOR_FROM_DATABASE=Cesscom Co., Ltd + +usb:v0C8Ep6000* + ID_MODEL_FROM_DATABASE=Luxian Series + +usb:v0C8F* + ID_VENDOR_FROM_DATABASE=Applied Microsystems + +usb:v0C94* + ID_VENDOR_FROM_DATABASE=Cryptera + +usb:v0C94pA000* + ID_MODEL_FROM_DATABASE=EPP 1217 + +usb:v0C98* + ID_VENDOR_FROM_DATABASE=Berkshire Products, Inc. + +usb:v0C98p1140* + ID_MODEL_FROM_DATABASE=USB PC Watchdog + +usb:v0C99* + ID_VENDOR_FROM_DATABASE=Innochips Co., Ltd + +usb:v0C9A* + ID_VENDOR_FROM_DATABASE=Hanwool Robotics Corp. + +usb:v0C9B* + ID_VENDOR_FROM_DATABASE=Jobin Yvon, Inc. + +usb:v0C9D* + ID_VENDOR_FROM_DATABASE=SemTek + +usb:v0C9Dp0170* + ID_MODEL_FROM_DATABASE=3873 Manual Insert card reader + +usb:v0CA2* + ID_VENDOR_FROM_DATABASE=Zyfer + +usb:v0CA3* + ID_VENDOR_FROM_DATABASE=Sega Corp. + +usb:v0CA4* + ID_VENDOR_FROM_DATABASE=ST&T Instrument Corp. + +usb:v0CA5* + ID_VENDOR_FROM_DATABASE=BAE Systems Canada, Inc. + +usb:v0CA6* + ID_VENDOR_FROM_DATABASE=Castles Technology Co., Ltd + +usb:v0CA6p0010* + ID_MODEL_FROM_DATABASE=EZUSB PC/SC Smart Card Reader + +usb:v0CA6p0050* + ID_MODEL_FROM_DATABASE=EZ220PU Reader Controller + +usb:v0CA6p1077* + ID_MODEL_FROM_DATABASE=Bludrive Family Smart Card Reader + +usb:v0CA6p107E* + ID_MODEL_FROM_DATABASE=Reader Controller + +usb:v0CA6p2010* + ID_MODEL_FROM_DATABASE=myPad110 PC/SC Smart Card Reader + +usb:v0CA6p3050* + ID_MODEL_FROM_DATABASE=EZ710 Smart Card Reader + +usb:v0CA7* + ID_VENDOR_FROM_DATABASE=Information Systems Laboratories + +usb:v0CAD* + ID_VENDOR_FROM_DATABASE=Motorola CGISS + +usb:v0CADp9001* + ID_MODEL_FROM_DATABASE=PowerPad Pocket PC Device + +usb:v0CAE* + ID_VENDOR_FROM_DATABASE=Ascom Business Systems, Ltd + +usb:v0CAF* + ID_VENDOR_FROM_DATABASE=Buslink + +usb:v0CAFp2507* + ID_MODEL_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller + +usb:v0CAFp2515* + ID_MODEL_FROM_DATABASE=Flash Disk Embedded Hub + +usb:v0CAFp2516* + ID_MODEL_FROM_DATABASE=Flash Disk Security Device + +usb:v0CAFp2517* + ID_MODEL_FROM_DATABASE=Flash Disk Mass Storage Device + +usb:v0CAFp25C7* + ID_MODEL_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller + +usb:v0CAFp3A00* + ID_MODEL_FROM_DATABASE=Hard Drive + +usb:v0CAFp3A20* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0CAFp3ACD* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0CB0* + ID_VENDOR_FROM_DATABASE=Flying Pig Systems + +usb:v0CB1* + ID_VENDOR_FROM_DATABASE=Innovonics, Inc. + +usb:v0CB6* + ID_VENDOR_FROM_DATABASE=Celestix Networks, Pte., Ltd + +usb:v0CB7* + ID_VENDOR_FROM_DATABASE=Singatron Enterprise Co., Ltd + +usb:v0CB8* + ID_VENDOR_FROM_DATABASE=Opticis Co., Ltd + +usb:v0CBA* + ID_VENDOR_FROM_DATABASE=Trust Electronic (Shanghai) Co., Ltd + +usb:v0CBB* + ID_VENDOR_FROM_DATABASE=Shanghai Darong Electronics Co., Ltd + +usb:v0CBC* + ID_VENDOR_FROM_DATABASE=Palmax Technology Co., Ltd + +usb:v0CBCp0101* + ID_MODEL_FROM_DATABASE=Pocket PC P6C + +usb:v0CBCp0201* + ID_MODEL_FROM_DATABASE=Personal Digital Assistant + +usb:v0CBCp0301* + ID_MODEL_FROM_DATABASE=Personal Digital Assistant P6M+ + +usb:v0CBCp0401* + ID_MODEL_FROM_DATABASE=Pocket PC + +usb:v0CBD* + ID_VENDOR_FROM_DATABASE=Pentel Co., Ltd (Electronics Equipment Div.) + +usb:v0CBE* + ID_VENDOR_FROM_DATABASE=Keryx Technologies, Inc. + +usb:v0CBF* + ID_VENDOR_FROM_DATABASE=Union Genius Computer Co., Ltd + +usb:v0CC0* + ID_VENDOR_FROM_DATABASE=Kuon Yi Industrial Corp. + +usb:v0CC1* + ID_VENDOR_FROM_DATABASE=Given Imaging, Ltd + +usb:v0CC2* + ID_VENDOR_FROM_DATABASE=Timex Corp. + +usb:v0CC3* + ID_VENDOR_FROM_DATABASE=Rimage Corp. + +usb:v0CC4* + ID_VENDOR_FROM_DATABASE=emsys GmbH + +usb:v0CC5* + ID_VENDOR_FROM_DATABASE=Sendo + +usb:v0CC6* + ID_VENDOR_FROM_DATABASE=Intermagic Corp. + +usb:v0CC7* + ID_VENDOR_FROM_DATABASE=Kontron Medical AG + +usb:v0CC8* + ID_VENDOR_FROM_DATABASE=Technotools Corp. + +usb:v0CC9* + ID_VENDOR_FROM_DATABASE=BroadMAX Technologies, Inc. + +usb:v0CCA* + ID_VENDOR_FROM_DATABASE=Amphenol + +usb:v0CCB* + ID_VENDOR_FROM_DATABASE=SKNet Co., Ltd + +usb:v0CCC* + ID_VENDOR_FROM_DATABASE=Domex Technology Corp. + +usb:v0CCD* + ID_VENDOR_FROM_DATABASE=TerraTec Electronic GmbH + +usb:v0CCDp0012* + ID_MODEL_FROM_DATABASE=PHASE 26 + +usb:v0CCDp0013* + ID_MODEL_FROM_DATABASE=PHASE 26 + +usb:v0CCDp0014* + ID_MODEL_FROM_DATABASE=PHASE 26 + +usb:v0CCDp0015* + ID_MODEL_FROM_DATABASE=Flash Update for TerraTec PHASE 26 + +usb:v0CCDp0021* + ID_MODEL_FROM_DATABASE=Cameo Grabster 200 + +usb:v0CCDp0023* + ID_MODEL_FROM_DATABASE=Mystify Claw + +usb:v0CCDp0028* + ID_MODEL_FROM_DATABASE=Aureon 5.1 MkII + +usb:v0CCDp0032* + ID_MODEL_FROM_DATABASE=MIDI HUBBLE + +usb:v0CCDp0035* + ID_MODEL_FROM_DATABASE=Miditech Play'n Roll + +usb:v0CCDp0036* + ID_MODEL_FROM_DATABASE=Cinergy 250 Audio + +usb:v0CCDp0037* + ID_MODEL_FROM_DATABASE=Cinergy 250 Audio + +usb:v0CCDp0038* + ID_MODEL_FROM_DATABASE=Cinergy T² DVB-T Receiver + +usb:v0CCDp0039* + ID_MODEL_FROM_DATABASE=Grabster AV 400 + +usb:v0CCDp003B* + ID_MODEL_FROM_DATABASE=Cinergy 400 + +usb:v0CCDp003C* + ID_MODEL_FROM_DATABASE=Grabster AV 250 + +usb:v0CCDp0042* + ID_MODEL_FROM_DATABASE=Cinergy Hybrid T XS + +usb:v0CCDp0043* + ID_MODEL_FROM_DATABASE=Cinergy T XS + +usb:v0CCDp004E* + ID_MODEL_FROM_DATABASE=Cinergy T XS + +usb:v0CCDp004F* + ID_MODEL_FROM_DATABASE=Cinergy Analog XS + +usb:v0CCDp0055* + ID_MODEL_FROM_DATABASE=Cinergy T XE (Version 1, AF9005) + +usb:v0CCDp005C* + ID_MODEL_FROM_DATABASE=Cinergy T² + +usb:v0CCDp0069* + ID_MODEL_FROM_DATABASE=Cinergy T XE (Version 2, AF9015) + +usb:v0CCDp006B* + ID_MODEL_FROM_DATABASE=Cinergy HT PVR (EU) + +usb:v0CCDp0072* + ID_MODEL_FROM_DATABASE=Cinergy Hybrid T + +usb:v0CCDp0077* + ID_MODEL_FROM_DATABASE=Aureon Dual USB + +usb:v0CCDp0078* + ID_MODEL_FROM_DATABASE=Cinergy T XXS + +usb:v0CCDp0086* + ID_MODEL_FROM_DATABASE=Cinergy Hybrid XE + +usb:v0CCDp008E* + ID_MODEL_FROM_DATABASE=Cinergy HTC XS + +usb:v0CCDp0097* + ID_MODEL_FROM_DATABASE=Cinergy T RC MKII + +usb:v0CCDp0099* + ID_MODEL_FROM_DATABASE=AfaTech 9015 [Cinergy T Stick Dual] + +usb:v0CCDp00A5* + ID_MODEL_FROM_DATABASE=Cinergy Hybrid Stick + +usb:v0CCDp00A9* + ID_MODEL_FROM_DATABASE=RTL2838 DVB-T COFDM Demodulator [TerraTec Cinergy T Stick Black] + +usb:v0CCDp00B3* + ID_MODEL_FROM_DATABASE=NOXON DAB/DAB+ Stick + +usb:v0CCDp10A7* + ID_MODEL_FROM_DATABASE=TerraTec G3 + +usb:v0CD4* + ID_VENDOR_FROM_DATABASE=Bang Olufsen + +usb:v0CD4p0101* + ID_MODEL_FROM_DATABASE=BeolinkPC2 + +usb:v0CD5* + ID_VENDOR_FROM_DATABASE=LabJack Corporation + +usb:v0CD5p0003* + ID_MODEL_FROM_DATABASE=U3 + +usb:v0CD5p0009* + ID_MODEL_FROM_DATABASE=UE9 + +usb:v0CD7* + ID_VENDOR_FROM_DATABASE=NewChip S.r.l. + +usb:v0CD8* + ID_VENDOR_FROM_DATABASE=JS Digitech, Inc. + +usb:v0CD8p2007* + ID_MODEL_FROM_DATABASE=Smart Card Reader/JSTU-9700 + +usb:v0CD9* + ID_VENDOR_FROM_DATABASE=Hitachi Shin Din Cable, Ltd + +usb:v0CDE* + ID_VENDOR_FROM_DATABASE=Z-Com + +usb:v0CDEp0001* + ID_MODEL_FROM_DATABASE=XI-750 802.11b Wireless Adapter [Atmel AT76C503A] + +usb:v0CDEp0002* + ID_MODEL_FROM_DATABASE=XI-725/726 Prism2.5 802.11b Adapter + +usb:v0CDEp0003* + ID_MODEL_FROM_DATABASE=Sagem 802.11b Dongle + +usb:v0CDEp0004* + ID_MODEL_FROM_DATABASE=Sagem 802.11b Dongle + +usb:v0CDEp0005* + ID_MODEL_FROM_DATABASE=XI-735 Prism3 802.11b Adapter + +usb:v0CDEp0006* + ID_MODEL_FROM_DATABASE=XG-300 802.11b Adapter + +usb:v0CDEp0008* + ID_MODEL_FROM_DATABASE=XG-703A 802.11g Wireless Adapter [Intersil ISL3887] + +usb:v0CDEp0009* + ID_MODEL_FROM_DATABASE=(ZD1211)IEEE 802.11b+g Adapter + +usb:v0CDEp0011* + ID_MODEL_FROM_DATABASE=ZD1211 + +usb:v0CDEp0012* + ID_MODEL_FROM_DATABASE=AR5523 + +usb:v0CDEp0013* + ID_MODEL_FROM_DATABASE=AR5523 driver (no firmware) + +usb:v0CDEp0014* + ID_MODEL_FROM_DATABASE=NB 802.11g Wireless LAN Adapter(3887A) + +usb:v0CDEp0015* + ID_MODEL_FROM_DATABASE=XG-705A 802.11g Wireless Adapter [Intersil ISL3887] + +usb:v0CDEp0016* + ID_MODEL_FROM_DATABASE=NB 802.11g Wireless LAN Adapter(3887A) + +usb:v0CDEp0018* + ID_MODEL_FROM_DATABASE=NB 802.11a/b/g Wireless LAN Adapter(3887A) + +usb:v0CDEp001A* + ID_MODEL_FROM_DATABASE=802.11bg + +usb:v0CDEp001C* + ID_MODEL_FROM_DATABASE=802.11b/g Wireless Network Adapter + +usb:v0CDEp0020* + ID_MODEL_FROM_DATABASE=AG-760A 802.11abg Wireless Adapter [ZyDAS ZD1211B] + +usb:v0CDEp0022* + ID_MODEL_FROM_DATABASE=802.11b/g/n Wireless Network Adapter + +usb:v0CDEp0023* + ID_MODEL_FROM_DATABASE=UB81 802.11bgn + +usb:v0CDEp0025* + ID_MODEL_FROM_DATABASE=802.11b/g/n USB Wireless Network Adapter + +usb:v0CDEp0026* + ID_MODEL_FROM_DATABASE=UB82 802.11abgn + +usb:v0CDEp0027* + ID_MODEL_FROM_DATABASE=Sphairon Homelink 1202 802.11n Wireless Adapter [Atheros AR9170] + +usb:v0CE5* + ID_VENDOR_FROM_DATABASE=Validation Technologies International + +usb:v0CE5p0003* + ID_MODEL_FROM_DATABASE=Matrix + +usb:v0CE9* + ID_VENDOR_FROM_DATABASE=pico Technology + +usb:v0CE9p1001* + ID_MODEL_FROM_DATABASE=PicoScope3000 series PC Oscilloscope + +usb:v0CF1* + ID_VENDOR_FROM_DATABASE=e-Conn Electronic Co., Ltd + +usb:v0CF2* + ID_VENDOR_FROM_DATABASE=ENE Technology, Inc. + +usb:v0CF2p6220* + ID_MODEL_FROM_DATABASE=SD Card Reader (SG361) + +usb:v0CF2p6225* + ID_MODEL_FROM_DATABASE=SD card reader (UB6225) + +usb:v0CF2p6250* + ID_MODEL_FROM_DATABASE=SD card reader (UB6250) + +usb:v0CF3* + ID_VENDOR_FROM_DATABASE=Atheros Communications, Inc. + +usb:v0CF3p0001* + ID_MODEL_FROM_DATABASE=AR5523 + +usb:v0CF3p0002* + ID_MODEL_FROM_DATABASE=AR5523 (no firmware) + +usb:v0CF3p0003* + ID_MODEL_FROM_DATABASE=AR5523 + +usb:v0CF3p0004* + ID_MODEL_FROM_DATABASE=AR5523 (no firmware) + +usb:v0CF3p0005* + ID_MODEL_FROM_DATABASE=AR5523 + +usb:v0CF3p0006* + ID_MODEL_FROM_DATABASE=AR5523 (no firmware) + +usb:v0CF3p1001* + ID_MODEL_FROM_DATABASE=Thomson TG121N [Atheros AR9001U-(2)NG] + +usb:v0CF3p1002* + ID_MODEL_FROM_DATABASE=TP-Link TL-WN821N v2 802.11n [Atheros AR9170] + +usb:v0CF3p1006* + ID_MODEL_FROM_DATABASE=TP-Link TL-WN322G v3 / TL-WN422G v2 802.11g [Atheros AR9271] + +usb:v0CF3p1010* + ID_MODEL_FROM_DATABASE=3Com 3CRUSBN275 802.11abgn Wireless Adapter [Atheros AR9170] + +usb:v0CF3p20FF* + ID_MODEL_FROM_DATABASE=AR7010 (no firmware) + +usb:v0CF3p3000* + ID_MODEL_FROM_DATABASE=AR3011 Bluetooth (no firmware) + +usb:v0CF3p3002* + ID_MODEL_FROM_DATABASE=AR3011 Bluetooth + +usb:v0CF3p3005* + ID_MODEL_FROM_DATABASE=AR3011 Bluetooth + +usb:v0CF3p3008* + ID_MODEL_FROM_DATABASE=Bluetooth (AR3011) + +usb:v0CF3p7015* + ID_MODEL_FROM_DATABASE=TP-Link TL-WN821N v3 802.11n [Atheros AR7010+AR9287] + +usb:v0CF3p9170* + ID_MODEL_FROM_DATABASE=AR9170 802.11n + +usb:v0CF3p9271* + ID_MODEL_FROM_DATABASE=AR9271 802.11n + +usb:v0CF3pB002* + ID_MODEL_FROM_DATABASE=Ubiquiti WiFiStation 802.11n [Atheros AR9271] + +usb:v0CF3pB003* + ID_MODEL_FROM_DATABASE=Ubiquiti WiFiStationEXT 802.11n [Atheros AR9271] + +usb:v0CF4* + ID_VENDOR_FROM_DATABASE=Fomtex Corp. + +usb:v0CF5* + ID_VENDOR_FROM_DATABASE=Cellink Co., Ltd + +usb:v0CF6* + ID_VENDOR_FROM_DATABASE=Compucable Corp. + +usb:v0CF7* + ID_VENDOR_FROM_DATABASE=ishoni Networks + +usb:v0CF8* + ID_VENDOR_FROM_DATABASE=Clarisys, Inc. + +usb:v0CF8p0750* + ID_MODEL_FROM_DATABASE=Claritel-i750 - vp + +usb:v0CF9* + ID_VENDOR_FROM_DATABASE=Central System Research Co., Ltd + +usb:v0CFA* + ID_VENDOR_FROM_DATABASE=Inviso, Inc. + +usb:v0CFC* + ID_VENDOR_FROM_DATABASE=Minolta-QMS, Inc. + +usb:v0CFCp2301* + ID_MODEL_FROM_DATABASE=Magicolor 2300 DL + +usb:v0CFCp2350* + ID_MODEL_FROM_DATABASE=Magicolor 2350EN/3300 + +usb:v0CFCp3100* + ID_MODEL_FROM_DATABASE=Magicolor 3100 + +usb:v0CFCp7300* + ID_MODEL_FROM_DATABASE=Magicolor 5450/5550 + +usb:v0CFF* + ID_VENDOR_FROM_DATABASE=SAFA MEDIA Co., Ltd. + +usb:v0CFFp0320* + ID_MODEL_FROM_DATABASE=SR-380N + +usb:v0D06* + ID_VENDOR_FROM_DATABASE=telos EDV Systementwicklung GmbH + +usb:v0D08* + ID_VENDOR_FROM_DATABASE=UTStarcom + +usb:v0D08p0602* + ID_MODEL_FROM_DATABASE=DV007 [serial] + +usb:v0D08p0603* + ID_MODEL_FROM_DATABASE=DV007 [storage] + +usb:v0D0B* + ID_VENDOR_FROM_DATABASE=Contemporary Controls + +usb:v0D0C* + ID_VENDOR_FROM_DATABASE=Astron Electronics Co., Ltd + +usb:v0D0D* + ID_VENDOR_FROM_DATABASE=MKNet Corp. + +usb:v0D0E* + ID_VENDOR_FROM_DATABASE=Hybrid Networks, Inc. + +usb:v0D0F* + ID_VENDOR_FROM_DATABASE=Feng Shin Cable Co., Ltd + +usb:v0D10* + ID_VENDOR_FROM_DATABASE=Elastic Networks + +usb:v0D10p0001* + ID_MODEL_FROM_DATABASE=StormPort (WDM) + +usb:v0D11* + ID_VENDOR_FROM_DATABASE=Maspro Denkoh Corp. + +usb:v0D12* + ID_VENDOR_FROM_DATABASE=Hansol Electronics, Inc. + +usb:v0D13* + ID_VENDOR_FROM_DATABASE=BMF Corp. + +usb:v0D14* + ID_VENDOR_FROM_DATABASE=Array Comm, Inc. + +usb:v0D15* + ID_VENDOR_FROM_DATABASE=OnStream b.v. + +usb:v0D16* + ID_VENDOR_FROM_DATABASE=Hi-Touch Imaging Technologies Co., Ltd + +usb:v0D16p0001* + ID_MODEL_FROM_DATABASE=PhotoShuttle + +usb:v0D16p0002* + ID_MODEL_FROM_DATABASE=Photo Printer 730 series + +usb:v0D16p0004* + ID_MODEL_FROM_DATABASE=Photo Printer 63xPL/PS + +usb:v0D16p0100* + ID_MODEL_FROM_DATABASE=Photo Printer 63xPL/PS + +usb:v0D16p0102* + ID_MODEL_FROM_DATABASE=Photo Printer 64xPS + +usb:v0D16p0103* + ID_MODEL_FROM_DATABASE=Photo Printer 730 series + +usb:v0D16p0104* + ID_MODEL_FROM_DATABASE=Photo Printer 63xPL/PS + +usb:v0D16p0105* + ID_MODEL_FROM_DATABASE=Photo Printer 64xPS + +usb:v0D16p0200* + ID_MODEL_FROM_DATABASE=Photo Printer 64xDL + +usb:v0D17* + ID_VENDOR_FROM_DATABASE=NALTEC, Inc. + +usb:v0D18* + ID_VENDOR_FROM_DATABASE=coaXmedia + +usb:v0D19* + ID_VENDOR_FROM_DATABASE=Hank Connection Industrial Co., Ltd + +usb:v0D28* + ID_VENDOR_FROM_DATABASE=NXP + +usb:v0D28p0204* + ID_MODEL_FROM_DATABASE=LPC1768 + +usb:v0D32* + ID_VENDOR_FROM_DATABASE=Leo Hui Electric Wire & Cable Co., Ltd + +usb:v0D33* + ID_VENDOR_FROM_DATABASE=AirSpeak, Inc. + +usb:v0D34* + ID_VENDOR_FROM_DATABASE=Rearden Steel Technologies + +usb:v0D35* + ID_VENDOR_FROM_DATABASE=Dah Kun Co., Ltd + +usb:v0D3A* + ID_VENDOR_FROM_DATABASE=Posiflex Technologies, Inc. + +usb:v0D3C* + ID_VENDOR_FROM_DATABASE=Sri Cable Technology, Ltd + +usb:v0D3D* + ID_VENDOR_FROM_DATABASE=Tangtop Technology Co., Ltd + +usb:v0D3Dp0001* + ID_MODEL_FROM_DATABASE=HID Keyboard + +usb:v0D3E* + ID_VENDOR_FROM_DATABASE=Fitcom, inc. + +usb:v0D3F* + ID_VENDOR_FROM_DATABASE=MTS Systems Corp. + +usb:v0D40* + ID_VENDOR_FROM_DATABASE=Ascor, Inc. + +usb:v0D41* + ID_VENDOR_FROM_DATABASE=Ta Yun Terminals Industrial Co., Ltd + +usb:v0D42* + ID_VENDOR_FROM_DATABASE=Full Der Co., Ltd + +usb:v0D46* + ID_VENDOR_FROM_DATABASE=Kobil Systems GmbH + +usb:v0D46p2012* + ID_MODEL_FROM_DATABASE=KAAN Standard Plus (Smartcard reader) + +usb:v0D46p3003* + ID_MODEL_FROM_DATABASE=mIDentity Light / KAAN SIM III + +usb:v0D46p4000* + ID_MODEL_FROM_DATABASE=mIDentity (mass storage) + +usb:v0D46p4001* + ID_MODEL_FROM_DATABASE=mIDentity Basic/Classic (composite device) + +usb:v0D46p4081* + ID_MODEL_FROM_DATABASE=mIDentity Basic/Classic (installationless) + +usb:v0D48* + ID_VENDOR_FROM_DATABASE=Promethean Limited + +usb:v0D48p0001* + ID_MODEL_FROM_DATABASE=ACTIVboard + +usb:v0D48p0004* + ID_MODEL_FROM_DATABASE=ACTIVboard + +usb:v0D48p0100* + ID_MODEL_FROM_DATABASE=Audio + +usb:v0D49* + ID_VENDOR_FROM_DATABASE=Maxtor + +usb:v0D49p3000* + ID_MODEL_FROM_DATABASE=Drive + +usb:v0D49p3010* + ID_MODEL_FROM_DATABASE=3000LE Drive + +usb:v0D49p3100* + ID_MODEL_FROM_DATABASE=Hi-Speed USB-IDE Bridge Controller + +usb:v0D49p3200* + ID_MODEL_FROM_DATABASE=Personal Storage 3200 + +usb:v0D49p5000* + ID_MODEL_FROM_DATABASE=5000XT Drive + +usb:v0D49p5010* + ID_MODEL_FROM_DATABASE=5000LE Drive + +usb:v0D49p5020* + ID_MODEL_FROM_DATABASE=Mobile Hard Disk Drive + +usb:v0D49p7000* + ID_MODEL_FROM_DATABASE=OneTouch + +usb:v0D49p7010* + ID_MODEL_FROM_DATABASE=OneTouch + +usb:v0D49p7100* + ID_MODEL_FROM_DATABASE=OneTouch II 300GB External Hard Disk + +usb:v0D49p7410* + ID_MODEL_FROM_DATABASE=Mobile Hard Disk Drive (1TB) + +usb:v0D49p7450* + ID_MODEL_FROM_DATABASE=Basics Portable USB Device + +usb:v0D4A* + ID_VENDOR_FROM_DATABASE=NF Corp. + +usb:v0D4B* + ID_VENDOR_FROM_DATABASE=Grape Systems, Inc. + +usb:v0D4C* + ID_VENDOR_FROM_DATABASE=Tedas AG + +usb:v0D4D* + ID_VENDOR_FROM_DATABASE=Coherent, Inc. + +usb:v0D4E* + ID_VENDOR_FROM_DATABASE=Agere Systems Netherland BV + +usb:v0D4Ep047A* + ID_MODEL_FROM_DATABASE=WLAN Card + +usb:v0D4Ep1000* + ID_MODEL_FROM_DATABASE=Wireless Card Model 0801 + +usb:v0D4Ep1001* + ID_MODEL_FROM_DATABASE=Wireless Card Model 0802 + +usb:v0D4F* + ID_VENDOR_FROM_DATABASE=EADS Airbus France + +usb:v0D50* + ID_VENDOR_FROM_DATABASE=Cleware GmbH + +usb:v0D50p0011* + ID_MODEL_FROM_DATABASE=USB-Temp2 Thermometer + +usb:v0D51* + ID_VENDOR_FROM_DATABASE=Volex (Asia) Pte., Ltd + +usb:v0D53* + ID_VENDOR_FROM_DATABASE=HMI Co., Ltd + +usb:v0D54* + ID_VENDOR_FROM_DATABASE=Holon Corp. + +usb:v0D55* + ID_VENDOR_FROM_DATABASE=ASKA Technologies, Inc. + +usb:v0D56* + ID_VENDOR_FROM_DATABASE=AVLAB Technology, Inc. + +usb:v0D57* + ID_VENDOR_FROM_DATABASE=Solomon Microtech, Ltd + +usb:v0D5C* + ID_VENDOR_FROM_DATABASE=SMC Networks, Inc. + +usb:v0D5CpA001* + ID_MODEL_FROM_DATABASE=SMC2662W (v1) EZ Connect 802.11b Wireless Adapter [Atmel AT76C503A] + +usb:v0D5CpA002* + ID_MODEL_FROM_DATABASE=SMC2662W v2 / SMC2662W-AR / Belkin F5D6050 [Atmel at76c503a] + +usb:v0D5E* + ID_VENDOR_FROM_DATABASE=Myacom, Ltd + +usb:v0D5Ep2346* + ID_MODEL_FROM_DATABASE=BT Digital Access adapter + +usb:v0D5F* + ID_VENDOR_FROM_DATABASE=CSI, Inc. + +usb:v0D60* + ID_VENDOR_FROM_DATABASE=IVL Technologies, Ltd + +usb:v0D61* + ID_VENDOR_FROM_DATABASE=Meilu Electronics (Shenzhen) Co., Ltd + +usb:v0D62* + ID_VENDOR_FROM_DATABASE=Darfon Electronics Corp. + +usb:v0D62p0003* + ID_MODEL_FROM_DATABASE=Smartcard Reader + +usb:v0D62p0004* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v0D62p001C* + ID_MODEL_FROM_DATABASE=Benq X120 Internet Keyboard Pro + +usb:v0D62p0306* + ID_MODEL_FROM_DATABASE=M530 Mouse + +usb:v0D62p0800* + ID_MODEL_FROM_DATABASE=Magic Wheel + +usb:v0D62p2021* + ID_MODEL_FROM_DATABASE=AM805 Keyboard + +usb:v0D62p2026* + ID_MODEL_FROM_DATABASE=TECOM Bluetooth Device + +usb:v0D62p2050* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v0D62p2106* + ID_MODEL_FROM_DATABASE=Dell L20U Multimedia Keyboard + +usb:v0D62pA100* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v0D63* + ID_VENDOR_FROM_DATABASE=Fritz Gegauf AG + +usb:v0D64* + ID_VENDOR_FROM_DATABASE=DXG Technology Corp. + +usb:v0D64p0105* + ID_MODEL_FROM_DATABASE=Dual Mode Digital Camera 1.3M + +usb:v0D64p0107* + ID_MODEL_FROM_DATABASE=Horus MT-409 Camera + +usb:v0D64p0108* + ID_MODEL_FROM_DATABASE=Dual Mode Digital Camera + +usb:v0D64p0202* + ID_MODEL_FROM_DATABASE=Dual Mode Video Camera Device + +usb:v0D64p0303* + ID_MODEL_FROM_DATABASE=DXG-305V Camera + +usb:v0D64p1001* + ID_MODEL_FROM_DATABASE=SiPix Stylecam/UMAX AstraPix 320s + +usb:v0D64p1002* + ID_MODEL_FROM_DATABASE=Fashion Cam 01 Dual-Mode DSC (Video Camera) + +usb:v0D64p1003* + ID_MODEL_FROM_DATABASE=Fashion Cam Dual-Mode DSC (Controller) + +usb:v0D64p1021* + ID_MODEL_FROM_DATABASE=D-Link DSC 350F + +usb:v0D64p1208* + ID_MODEL_FROM_DATABASE=Dual Mode Still Camera Device + +usb:v0D64p2208* + ID_MODEL_FROM_DATABASE=Mass Storage + +usb:v0D64p3105* + ID_MODEL_FROM_DATABASE=Dual Mode Digital Camera Disk + +usb:v0D64p3108* + ID_MODEL_FROM_DATABASE=Digicam Mass Storage Device + +usb:v0D65* + ID_VENDOR_FROM_DATABASE=KMJP Co., Ltd + +usb:v0D66* + ID_VENDOR_FROM_DATABASE=TMT + +usb:v0D67* + ID_VENDOR_FROM_DATABASE=Advanet, Inc. + +usb:v0D68* + ID_VENDOR_FROM_DATABASE=Super Link Electronics Co., Ltd + +usb:v0D69* + ID_VENDOR_FROM_DATABASE=NSI + +usb:v0D6A* + ID_VENDOR_FROM_DATABASE=Megapower International Corp. + +usb:v0D6B* + ID_VENDOR_FROM_DATABASE=And-Or Logic + +usb:v0D70* + ID_VENDOR_FROM_DATABASE=Try Computer Co., Ltd + +usb:v0D71* + ID_VENDOR_FROM_DATABASE=Hirakawa Hewtech Corp. + +usb:v0D72* + ID_VENDOR_FROM_DATABASE=Winmate Communication, Inc. + +usb:v0D73* + ID_VENDOR_FROM_DATABASE=Hit's Communications, Inc. + +usb:v0D76* + ID_VENDOR_FROM_DATABASE=MFP Korea, Inc. + +usb:v0D77* + ID_VENDOR_FROM_DATABASE=Power Sentry/Newpoint + +usb:v0D78* + ID_VENDOR_FROM_DATABASE=Japan Distributor Corp. + +usb:v0D7A* + ID_VENDOR_FROM_DATABASE=MARX Datentechnik GmbH + +usb:v0D7B* + ID_VENDOR_FROM_DATABASE=Wellco Technology Co., Ltd + +usb:v0D7C* + ID_VENDOR_FROM_DATABASE=Taiwan Line Tek Electronic Co., Ltd + +usb:v0D7D* + ID_VENDOR_FROM_DATABASE=Phison Electronics Corp. + +usb:v0D7Dp0100* + ID_MODEL_FROM_DATABASE=PS1001/1011/1006/1026 Flash Disk + +usb:v0D7Dp0110* + ID_MODEL_FROM_DATABASE=Gigabyte FlexDrive + +usb:v0D7Dp0120* + ID_MODEL_FROM_DATABASE=Disk Pro 64MB + +usb:v0D7Dp0124* + ID_MODEL_FROM_DATABASE=GIGABYTE Disk + +usb:v0D7Dp0240* + ID_MODEL_FROM_DATABASE=I/O-Magic/Transcend 6-in-1 Card Reader + +usb:v0D7Dp110E* + ID_MODEL_FROM_DATABASE=NEC uPD720121/130 USB-ATA/ATAPI Bridge + +usb:v0D7Dp1240* + ID_MODEL_FROM_DATABASE=Apacer 6-in-1 Card Reader 2.0 + +usb:v0D7Dp1270* + ID_MODEL_FROM_DATABASE=Wolverine SixPac 6000 + +usb:v0D7Dp1300* + ID_MODEL_FROM_DATABASE=Flash Disk + +usb:v0D7Dp1320* + ID_MODEL_FROM_DATABASE=PS2031 Flash Disk + +usb:v0D7Dp1400* + ID_MODEL_FROM_DATABASE=Attache 256MB USB 2.0 Flash Drive + +usb:v0D7Dp1420* + ID_MODEL_FROM_DATABASE=PS2044 Pen Drive + +usb:v0D7Dp1470* + ID_MODEL_FROM_DATABASE=Vosonic X's-Drive II+ VP2160 + +usb:v0D7Dp1620* + ID_MODEL_FROM_DATABASE=USB Disk Pro + +usb:v0D7Dp1900* + ID_MODEL_FROM_DATABASE=USB Thumb Drive + +usb:v0D7E* + ID_VENDOR_FROM_DATABASE=American Computer & Digital Components + +usb:v0D7Ep2507* + ID_MODEL_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller + +usb:v0D7Ep2517* + ID_MODEL_FROM_DATABASE=Hi-Speed Mass Storage Device + +usb:v0D7Ep25C7* + ID_MODEL_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller + +usb:v0D7F* + ID_VENDOR_FROM_DATABASE=Essential Reality LLC + +usb:v0D7Fp0100* + ID_MODEL_FROM_DATABASE=P5 Glove glove controller + +usb:v0D80* + ID_VENDOR_FROM_DATABASE=H.R. Silvine Electronics, Inc. + +usb:v0D81* + ID_VENDOR_FROM_DATABASE=TechnoVision + +usb:v0D83* + ID_VENDOR_FROM_DATABASE=Think Outside, Inc. + +usb:v0D87* + ID_VENDOR_FROM_DATABASE=Dolby Laboratories Inc. + +usb:v0D89* + ID_VENDOR_FROM_DATABASE=Oz Software + +usb:v0D8A* + ID_VENDOR_FROM_DATABASE=King Jim Co., Ltd + +usb:v0D8Ap0101* + ID_MODEL_FROM_DATABASE=TEPRA PRO + +usb:v0D8B* + ID_VENDOR_FROM_DATABASE=Ascom Telecommunications, Ltd + +usb:v0D8C* + ID_VENDOR_FROM_DATABASE=C-Media Electronics, Inc. + +usb:v0D8Cp0001* + ID_MODEL_FROM_DATABASE=Audio Device + +usb:v0D8Cp0002* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v0D8Cp0003* + ID_MODEL_FROM_DATABASE=Sound Device + +usb:v0D8Cp0006* + ID_MODEL_FROM_DATABASE=Storm HP-USB500 5.1 Headset + +usb:v0D8Cp000C* + ID_MODEL_FROM_DATABASE=Audio Adapter + +usb:v0D8Cp000D* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v0D8Cp000E* + ID_MODEL_FROM_DATABASE=Audio Adapter (Planet UP-100, Genius G-Talk) + +usb:v0D8Cp001F* + ID_MODEL_FROM_DATABASE=CM108 Audio Controller + +usb:v0D8Cp0102* + ID_MODEL_FROM_DATABASE=CM106 Like Sound Device + +usb:v0D8Cp0103* + ID_MODEL_FROM_DATABASE=CM102-A+/102S+ Audio Controller + +usb:v0D8Cp0104* + ID_MODEL_FROM_DATABASE=CM103+ Audio Controller + +usb:v0D8Cp0105* + ID_MODEL_FROM_DATABASE=CM108 Audio Controller + +usb:v0D8Cp0107* + ID_MODEL_FROM_DATABASE=CM108 Audio Controller + +usb:v0D8Cp010F* + ID_MODEL_FROM_DATABASE=CM108 Audio Controller + +usb:v0D8Cp0115* + ID_MODEL_FROM_DATABASE=CM108 Audio Controller + +usb:v0D8Cp013C* + ID_MODEL_FROM_DATABASE=CM108 Audio Controller + +usb:v0D8Cp0201* + ID_MODEL_FROM_DATABASE=CM6501 + +usb:v0D8Cp5000* + ID_MODEL_FROM_DATABASE=Mass Storage Controller + +usb:v0D8Cp5200* + ID_MODEL_FROM_DATABASE=Mass Storage Controller(0D8C,5200) + +usb:v0D8CpB213* + ID_MODEL_FROM_DATABASE=USB Phone CM109 (aka CT2000,VPT1000) + +usb:v0D8D* + ID_VENDOR_FROM_DATABASE=Promotion & Display Technology, Ltd + +usb:v0D8Dp0234* + ID_MODEL_FROM_DATABASE=V-234 Composite Device + +usb:v0D8Dp0550* + ID_MODEL_FROM_DATABASE=V-550 Composite Device + +usb:v0D8Dp0551* + ID_MODEL_FROM_DATABASE=V-551 Composite Device + +usb:v0D8Dp0552* + ID_MODEL_FROM_DATABASE=V-552 Composite Device + +usb:v0D8Dp0651* + ID_MODEL_FROM_DATABASE=V-651 Composite Device + +usb:v0D8Dp0652* + ID_MODEL_FROM_DATABASE=V-652 Composite Device + +usb:v0D8Dp0653* + ID_MODEL_FROM_DATABASE=V-653 Composite Device + +usb:v0D8Dp0654* + ID_MODEL_FROM_DATABASE=V-654 Composite Device + +usb:v0D8Dp0655* + ID_MODEL_FROM_DATABASE=V-655 Composite Device + +usb:v0D8Dp0656* + ID_MODEL_FROM_DATABASE=V-656 Composite Device + +usb:v0D8Dp0657* + ID_MODEL_FROM_DATABASE=V-657 Composite Device + +usb:v0D8Dp0658* + ID_MODEL_FROM_DATABASE=V-658 Composite Device + +usb:v0D8Dp0659* + ID_MODEL_FROM_DATABASE=V-659 Composite Device + +usb:v0D8Dp0660* + ID_MODEL_FROM_DATABASE=V-660 Composite Device + +usb:v0D8Dp0661* + ID_MODEL_FROM_DATABASE=V-661 Composite Device + +usb:v0D8Dp0662* + ID_MODEL_FROM_DATABASE=V-662 Composite Device + +usb:v0D8Dp0850* + ID_MODEL_FROM_DATABASE=V-850 Composite Device + +usb:v0D8Dp0851* + ID_MODEL_FROM_DATABASE=V-851 Composite Device + +usb:v0D8Dp0852* + ID_MODEL_FROM_DATABASE=V-852 Composite Device + +usb:v0D8Dp0901* + ID_MODEL_FROM_DATABASE=V-901 Composite Device + +usb:v0D8Dp0902* + ID_MODEL_FROM_DATABASE=V-902 Composite Device + +usb:v0D8Dp0903* + ID_MODEL_FROM_DATABASE=V-903 Composite Device + +usb:v0D8Dp4754* + ID_MODEL_FROM_DATABASE=Voyager DMP Composite Device + +usb:v0D8DpBB00* + ID_MODEL_FROM_DATABASE=Bloomberg Composite Device + +usb:v0D8DpBB01* + ID_MODEL_FROM_DATABASE=Bloomberg Composite Device + +usb:v0D8DpBB02* + ID_MODEL_FROM_DATABASE=Bloomberg Composite Device + +usb:v0D8DpBB03* + ID_MODEL_FROM_DATABASE=Bloomberg Composite Device + +usb:v0D8DpBB04* + ID_MODEL_FROM_DATABASE=Bloomberg Composite Device + +usb:v0D8DpBB05* + ID_MODEL_FROM_DATABASE=Bloomberg Composite Device + +usb:v0D8DpFFFE* + ID_MODEL_FROM_DATABASE=Global Tuner Composite Device + +usb:v0D8DpFFFF* + ID_MODEL_FROM_DATABASE=Voyager DMP Composite Device + +usb:v0D8E* + ID_VENDOR_FROM_DATABASE=Global Sun Technology, Inc. + +usb:v0D8Ep0163* + ID_MODEL_FROM_DATABASE=802.11g 54 Mbps Wireless Dongle + +usb:v0D8Ep1621* + ID_MODEL_FROM_DATABASE=802.11b Wireless Adapter + +usb:v0D8Ep3762* + ID_MODEL_FROM_DATABASE=Cohiba 802.11g Wireless Mini adapter [Intersil ISL3887] + +usb:v0D8Ep3763* + ID_MODEL_FROM_DATABASE=802.11g Wireless dongle + +usb:v0D8Ep7100* + ID_MODEL_FROM_DATABASE=802.11b Adapter + +usb:v0D8Ep7110* + ID_MODEL_FROM_DATABASE=WL-210 / WU210P 802.11b Wireless Adapter [Atmel AT76C503A] + +usb:v0D8Ep7605* + ID_MODEL_FROM_DATABASE=TRENDnet TEW-224UB 802.11b Wireless Adapter [Atmel AT76C503A] + +usb:v0D8Ep7801* + ID_MODEL_FROM_DATABASE=AR5523 + +usb:v0D8Ep7802* + ID_MODEL_FROM_DATABASE=AR5523 (no firmware) + +usb:v0D8Ep7811* + ID_MODEL_FROM_DATABASE=AR5523 + +usb:v0D8Ep7812* + ID_MODEL_FROM_DATABASE=AR5523 (no firmware) + +usb:v0D8Ep7A01* + ID_MODEL_FROM_DATABASE=PRISM25 802.11b Adapter + +usb:v0D8F* + ID_VENDOR_FROM_DATABASE=Pitney Bowes + +usb:v0D90* + ID_VENDOR_FROM_DATABASE=Sure-Fire Electrical Corp. + +usb:v0D96* + ID_VENDOR_FROM_DATABASE=Skanhex Technology, Inc. + +usb:v0D96p0000* + ID_MODEL_FROM_DATABASE=Jenoptik JD350 video + +usb:v0D96p3300* + ID_MODEL_FROM_DATABASE=SX330z Camera + +usb:v0D96p4100* + ID_MODEL_FROM_DATABASE=SX410z Camera + +usb:v0D96p4102* + ID_MODEL_FROM_DATABASE=MD 9700 Camera + +usb:v0D96p4104* + ID_MODEL_FROM_DATABASE=Jenoptik JD-4100z3s + +usb:v0D96p410A* + ID_MODEL_FROM_DATABASE=Medion 9801/Novatech SX-410z + +usb:v0D96p5200* + ID_MODEL_FROM_DATABASE=SX-520z Camera + +usb:v0D97* + ID_VENDOR_FROM_DATABASE=Santa Barbara Instrument Group + +usb:v0D97p0001* + ID_MODEL_FROM_DATABASE=SBIG Astronomy Camera (without firmware) + +usb:v0D97p0101* + ID_MODEL_FROM_DATABASE=SBIG Astronomy Camera (with firmware) + +usb:v0D98* + ID_VENDOR_FROM_DATABASE=Mars Semiconductor Corp. + +usb:v0D98p0300* + ID_MODEL_FROM_DATABASE=Avaya Wireless Card + +usb:v0D98p1007* + ID_MODEL_FROM_DATABASE=Discovery Kids Digital Camera + +usb:v0D99* + ID_VENDOR_FROM_DATABASE=Trazer Technologies, Inc. + +usb:v0D9A* + ID_VENDOR_FROM_DATABASE=RTX Telecom AS + +usb:v0D9Ap0001* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0D9B* + ID_VENDOR_FROM_DATABASE=Tat Shing Electrical Co. + +usb:v0D9C* + ID_VENDOR_FROM_DATABASE=Chee Chen Hi-Technology Co., Ltd + +usb:v0D9D* + ID_VENDOR_FROM_DATABASE=Sanwa Supply, Inc. + +usb:v0D9E* + ID_VENDOR_FROM_DATABASE=Avaya + +usb:v0D9Ep0300* + ID_MODEL_FROM_DATABASE=Wireless Card + +usb:v0D9F* + ID_VENDOR_FROM_DATABASE=Powercom Co., Ltd + +usb:v0D9Fp0001* + ID_MODEL_FROM_DATABASE=Uninterruptible Power Supply + +usb:v0D9Fp0002* + ID_MODEL_FROM_DATABASE=Black Knight PRO / WOW Uninterruptible Power Supply (Cypress HID->COM RS232) + +usb:v0D9Fp00A2* + ID_MODEL_FROM_DATABASE=Imperial Uninterruptible Power Supply (HID PDC) + +usb:v0D9Fp00A3* + ID_MODEL_FROM_DATABASE=Smart King PRO Uninterruptible Power Supply (HID PDC) + +usb:v0D9Fp00A4* + ID_MODEL_FROM_DATABASE=WOW Uninterruptible Power Supply (HID PDC) + +usb:v0D9Fp00A5* + ID_MODEL_FROM_DATABASE=Vanguard Uninterruptible Power Supply (HID PDC) + +usb:v0D9Fp00A6* + ID_MODEL_FROM_DATABASE=Black Knight PRO Uninterruptible Power Supply (HID PDC) + +usb:v0DA0* + ID_VENDOR_FROM_DATABASE=Danger Research + +usb:v0DA1* + ID_VENDOR_FROM_DATABASE=Suzhou Peter's Precise Industrial Co., Ltd + +usb:v0DA2* + ID_VENDOR_FROM_DATABASE=Land Instruments International, Ltd + +usb:v0DA3* + ID_VENDOR_FROM_DATABASE=Nippon Electro-Sensory Devices Corp. + +usb:v0DA4* + ID_VENDOR_FROM_DATABASE=Polar Electro OY + +usb:v0DA4p0001* + ID_MODEL_FROM_DATABASE=Interface + +usb:v0DA7* + ID_VENDOR_FROM_DATABASE=IOGear, Inc. + +usb:v0DA8* + ID_VENDOR_FROM_DATABASE=softDSP Co., Ltd + +usb:v0DA8p0001* + ID_MODEL_FROM_DATABASE=SDS 200A Oscilloscope + +usb:v0DAB* + ID_VENDOR_FROM_DATABASE=Cubig Group + +usb:v0DABp0100* + ID_MODEL_FROM_DATABASE=DVR/CVR-M140 MP3 Player + +usb:v0DAD* + ID_VENDOR_FROM_DATABASE=Westover Scientific + +usb:v0DB0* + ID_VENDOR_FROM_DATABASE=Micro Star International + +usb:v0DB0p1020* + ID_MODEL_FROM_DATABASE=PC2PC WLAN Card + +usb:v0DB0p1967* + ID_MODEL_FROM_DATABASE=Bluetooth Dongle + +usb:v0DB0p3801* + ID_MODEL_FROM_DATABASE=Motorola Bluetooth 2.1+EDR Device + +usb:v0DB0p4011* + ID_MODEL_FROM_DATABASE=Medion Flash XL V2.0 Card Reader + +usb:v0DB0p4023* + ID_MODEL_FROM_DATABASE=Lexar Mobile Card Reader + +usb:v0DB0p4600* + ID_MODEL_FROM_DATABASE=802.11b/g Turbo Wireless Adapter + +usb:v0DB0p5501* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0DB0p5502* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0DB0p5513* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v0DB0p5515* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v0DB0p5516* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v0DB0p5580* + ID_MODEL_FROM_DATABASE=Mega Sky 580 DVB-T Tuner [M902x] + +usb:v0DB0p5581* + ID_MODEL_FROM_DATABASE=Mega Sky 580 DVB-T Tuner [GL861] + +usb:v0DB0p6823* + ID_MODEL_FROM_DATABASE=UB11B/MS-6823 802.11b Wi-Fi adapter + +usb:v0DB0p6826* + ID_MODEL_FROM_DATABASE=IEEE 802.11g Wireless Network Adapter + +usb:v0DB0p6855* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0DB0p6861* + ID_MODEL_FROM_DATABASE=MSI-6861 802.11g WiFi adapter + +usb:v0DB0p6865* + ID_MODEL_FROM_DATABASE=RT2570 + +usb:v0DB0p6869* + ID_MODEL_FROM_DATABASE=RT2570 + +usb:v0DB0p6874* + ID_MODEL_FROM_DATABASE=RT2573 + +usb:v0DB0p6877* + ID_MODEL_FROM_DATABASE=RT2573 + +usb:v0DB0p6881* + ID_MODEL_FROM_DATABASE=Bluetooth Class I EDR Device + +usb:v0DB0p688A* + ID_MODEL_FROM_DATABASE=Bluetooth Class I EDR Device + +usb:v0DB0p6899* + ID_MODEL_FROM_DATABASE=802.11bgn 1T1R Mini Card Wireless Adapter + +usb:v0DB0p6970* + ID_MODEL_FROM_DATABASE=MS-6970 BToes Bluetooth adapter + +usb:v0DB0p697A* + ID_MODEL_FROM_DATABASE=Bluetooth Dongle + +usb:v0DB0p6982* + ID_MODEL_FROM_DATABASE=Medion Flash XL Card Reader + +usb:v0DB0pA861* + ID_MODEL_FROM_DATABASE=RT2573 + +usb:v0DB0pA874* + ID_MODEL_FROM_DATABASE=RT2573 + +usb:v0DB0pA970* + ID_MODEL_FROM_DATABASE=Bluetooth dongle + +usb:v0DB0pA97A* + ID_MODEL_FROM_DATABASE=Bluetooth EDR Device + +usb:v0DB0pB970* + ID_MODEL_FROM_DATABASE=Bluetooth EDR Device + +usb:v0DB0pB97A* + ID_MODEL_FROM_DATABASE=Bluetooth EDR Device + +usb:v0DB1* + ID_VENDOR_FROM_DATABASE=Wen Te Electronics Co., Ltd + +usb:v0DB2* + ID_VENDOR_FROM_DATABASE=Shian Hwi Plug Parts, Plastic Factory + +usb:v0DB3* + ID_VENDOR_FROM_DATABASE=Tekram Technology Co., Ltd + +usb:v0DB4* + ID_VENDOR_FROM_DATABASE=Chung Fu Chen Yeh Enterprise Corp. + +usb:v0DB7* + ID_VENDOR_FROM_DATABASE=ELCON Systemtechnik + +usb:v0DB7p0002* + ID_MODEL_FROM_DATABASE=Goldpfeil P-LAN + +usb:v0DBC* + ID_VENDOR_FROM_DATABASE=A&D Medical + +usb:v0DBCp0003* + ID_MODEL_FROM_DATABASE=AND Serial Cable [AND Smart Cable] + +usb:v0DBE* + ID_VENDOR_FROM_DATABASE=Jiuh Shiuh Precision Industry Co., Ltd + +usb:v0DBF* + ID_VENDOR_FROM_DATABASE=Jess-Link International + +usb:v0DBFp0002* + ID_MODEL_FROM_DATABASE=SmartDongle Security Key + +usb:v0DBFp0200* + ID_MODEL_FROM_DATABASE=HDD Storage Solution + +usb:v0DBFp021B* + ID_MODEL_FROM_DATABASE=USB-2.0 IDE Adapter + +usb:v0DBFp0300* + ID_MODEL_FROM_DATABASE=Storage Adapter + +usb:v0DBFp0333* + ID_MODEL_FROM_DATABASE=Storage Adapter + +usb:v0DBFp0707* + ID_MODEL_FROM_DATABASE=ZIV Drive + +usb:v0DC0* + ID_VENDOR_FROM_DATABASE=G7 Solutions (formerly Great Notions) + +usb:v0DC1* + ID_VENDOR_FROM_DATABASE=Tamagawa Seiki Co., Ltd + +usb:v0DC3* + ID_VENDOR_FROM_DATABASE=Athena Smartcard Solutions, Inc. + +usb:v0DC3p0801* + ID_MODEL_FROM_DATABASE=ASEDrive III + +usb:v0DC3p0802* + ID_MODEL_FROM_DATABASE=ASEDrive IIIe + +usb:v0DC3p1104* + ID_MODEL_FROM_DATABASE=ASEDrive IIIe KB + +usb:v0DC3p1701* + ID_MODEL_FROM_DATABASE=ASEKey + +usb:v0DC3p1702* + ID_MODEL_FROM_DATABASE=ASEKey + +usb:v0DC4* + ID_VENDOR_FROM_DATABASE=Macpower Peripherals, Ltd + +usb:v0DC4p0040* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0DC4p0041* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0DC4p0042* + ID_MODEL_FROM_DATABASE=Mass Storage Device + +usb:v0DC4p0101* + ID_MODEL_FROM_DATABASE=Hi-Speed Mass Storage Device + +usb:v0DC4p020A* + ID_MODEL_FROM_DATABASE=Oyen Digital MiniPro 2.5" hard drive enclosure + +usb:v0DC5* + ID_VENDOR_FROM_DATABASE=SDK Co., Ltd + +usb:v0DC6* + ID_VENDOR_FROM_DATABASE=Precision Squared Technology Corp. + +usb:v0DC6p2301* + ID_MODEL_FROM_DATABASE=Wireless Touchpad Keyboard + +usb:v0DC7* + ID_VENDOR_FROM_DATABASE=First Cable Line, Inc. + +usb:v0DCD* + ID_VENDOR_FROM_DATABASE=NetworkFab Corp. + +usb:v0DCDp0001* + ID_MODEL_FROM_DATABASE=Remote Interface Adapter + +usb:v0DCDp0002* + ID_MODEL_FROM_DATABASE=High Bandwidth Codec + +usb:v0DD0* + ID_VENDOR_FROM_DATABASE=Access Solutions + +usb:v0DD0p1002* + ID_MODEL_FROM_DATABASE=Triple Talk Speech Synthesizer + +usb:v0DD1* + ID_VENDOR_FROM_DATABASE=Contek Electronics Co., Ltd + +usb:v0DD2* + ID_VENDOR_FROM_DATABASE=Power Quotient International Co., Ltd + +usb:v0DD2p0003* + ID_MODEL_FROM_DATABASE=Mass Storage (P) + +usb:v0DD3* + ID_VENDOR_FROM_DATABASE=MediaQ + +usb:v0DD4* + ID_VENDOR_FROM_DATABASE=Custom Engineering SPA + +usb:v0DD5* + ID_VENDOR_FROM_DATABASE=California Micro Devices + +usb:v0DD7* + ID_VENDOR_FROM_DATABASE=Kocom Co., Ltd + +usb:v0DD8* + ID_VENDOR_FROM_DATABASE=Netac Technology Co., Ltd + +usb:v0DD8p1060* + ID_MODEL_FROM_DATABASE=USB-CF-Card + +usb:v0DD8pE007* + ID_MODEL_FROM_DATABASE=OnlyDisk U222 Pendrive + +usb:v0DD8pF607* + ID_MODEL_FROM_DATABASE=OnlyDisk U208 1G flash drive [U-SAFE] + +usb:v0DD9* + ID_VENDOR_FROM_DATABASE=HighSpeed Surfing + +usb:v0DDA* + ID_VENDOR_FROM_DATABASE=Integrated Circuit Solution, Inc. + +usb:v0DDAp0001* + ID_MODEL_FROM_DATABASE=Multi-Card Reader 6in1 + +usb:v0DDAp0002* + ID_MODEL_FROM_DATABASE=Multi-Card Reader 7in1 + +usb:v0DDAp0003* + ID_MODEL_FROM_DATABASE=Flash Disk + +usb:v0DDAp0005* + ID_MODEL_FROM_DATABASE=Internal Multi-Card Reader 6in1 + +usb:v0DDAp0008* + ID_MODEL_FROM_DATABASE=SD single card reader + +usb:v0DDAp0009* + ID_MODEL_FROM_DATABASE=MS single card reader + +usb:v0DDAp000A* + ID_MODEL_FROM_DATABASE=MS+SD Dual Card Reader + +usb:v0DDAp000B* + ID_MODEL_FROM_DATABASE=SM single card reader + +usb:v0DDAp0101* + ID_MODEL_FROM_DATABASE=All-In-One Card Reader + +usb:v0DDAp0102* + ID_MODEL_FROM_DATABASE=All-In-One Card Reader + +usb:v0DDAp0301* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v0DDAp0302* + ID_MODEL_FROM_DATABASE=Multi-Card MP3 Player + +usb:v0DDAp1001* + ID_MODEL_FROM_DATABASE=Multi-Flash Disk + +usb:v0DDAp2001* + ID_MODEL_FROM_DATABASE=Multi-Card Reader + +usb:v0DDAp2002* + ID_MODEL_FROM_DATABASE=Q018 default PID + +usb:v0DDAp2003* + ID_MODEL_FROM_DATABASE=Multi-Card Reader + +usb:v0DDAp2005* + ID_MODEL_FROM_DATABASE=Datalux DLX-1611 16in1 Card Reader + +usb:v0DDAp2006* + ID_MODEL_FROM_DATABASE=All-In-One Card Reader + +usb:v0DDAp2007* + ID_MODEL_FROM_DATABASE=USB to ATAPI bridge + +usb:v0DDAp2008* + ID_MODEL_FROM_DATABASE=All-In-One Card Reader + +usb:v0DDAp2013* + ID_MODEL_FROM_DATABASE=SD/MS Combo Card Reader + +usb:v0DDAp2014* + ID_MODEL_FROM_DATABASE=SD/MS Single Card Reader + +usb:v0DDAp2023* + ID_MODEL_FROM_DATABASE=card reader SD/MS DEMO board with ICSI brand name (MaskROM version) + +usb:v0DDAp2024* + ID_MODEL_FROM_DATABASE=card reader SD/MS DEMO board with Generic brand name (MaskROM version) + +usb:v0DDAp2026* + ID_MODEL_FROM_DATABASE=USB2.0 Card Reader + +usb:v0DDAp2027* + ID_MODEL_FROM_DATABASE=USB 2.0 Card Reader + +usb:v0DDAp2315* + ID_MODEL_FROM_DATABASE=UFD MP3 player (model 2) + +usb:v0DDAp2318* + ID_MODEL_FROM_DATABASE=UFD MP3 player (model 1) + +usb:v0DDAp2321* + ID_MODEL_FROM_DATABASE=UFD MP3 player + +usb:v0DDB* + ID_VENDOR_FROM_DATABASE=Tamarack, Inc. + +usb:v0DDD* + ID_VENDOR_FROM_DATABASE=Datelink Technology Co., Ltd + +usb:v0DDE* + ID_VENDOR_FROM_DATABASE=Ubicom, Inc. + +usb:v0DE0* + ID_VENDOR_FROM_DATABASE=BD Consumer Healthcare + +usb:v0DE7* + ID_VENDOR_FROM_DATABASE=USBmicro + +usb:v0DE7p0191* + ID_MODEL_FROM_DATABASE=U401 Interface card + +usb:v0DE7p01A5* + ID_MODEL_FROM_DATABASE=U421 interface card + +usb:v0DE7p01C3* + ID_MODEL_FROM_DATABASE=U451 relay interface card + +usb:v0DEA* + ID_VENDOR_FROM_DATABASE=UTECH Electronic (D.G.) Co., Ltd. + +usb:v0DED* + ID_VENDOR_FROM_DATABASE=Novasonics + +usb:v0DEE* + ID_VENDOR_FROM_DATABASE=Lifetime Memory Products + +usb:v0DEEp4010* + ID_MODEL_FROM_DATABASE=Storage Adapter + +usb:v0DEF* + ID_VENDOR_FROM_DATABASE=Full Rise Electronic Co., Ltd + +usb:v0DF4* + ID_VENDOR_FROM_DATABASE=NET&SYS + +usb:v0DF4p0201* + ID_MODEL_FROM_DATABASE=MNG-2005 + +usb:v0DF6* + ID_VENDOR_FROM_DATABASE=Sitecom Europe B.V. + +usb:v0DF6p0001* + ID_MODEL_FROM_DATABASE=C-Media VOIP Device + +usb:v0DF6p0004* + ID_MODEL_FROM_DATABASE=Bluetooth 2.0 Adapter 100m + +usb:v0DF6p0007* + ID_MODEL_FROM_DATABASE=Bluetooth 2.0 Adapter 10m + +usb:v0DF6p000B* + ID_MODEL_FROM_DATABASE=Bluetooth 2.0 Adapter DFU + +usb:v0DF6p000D* + ID_MODEL_FROM_DATABASE=WL-168 Wireless Network Adapter 54g + +usb:v0DF6p0017* + ID_MODEL_FROM_DATABASE=WL-182 Wireless-N Network USB Card + +usb:v0DF6p0019* + ID_MODEL_FROM_DATABASE=Bluetooth 2.0 adapter 10m CN-512v2 001 + +usb:v0DF6p001A* + ID_MODEL_FROM_DATABASE=Bluetooth 2.0 adapter 100m CN-521v2 001 + +usb:v0DF6p002B* + ID_MODEL_FROM_DATABASE=WL-188 Wireless Network 300N USB Adapter + +usb:v0DF6p002C* + ID_MODEL_FROM_DATABASE=WL-301 Wireless Network 300N USB Adapter + +usb:v0DF6p002D* + ID_MODEL_FROM_DATABASE=WL-302 Wireless Network 300N USB dongle + +usb:v0DF6p0036* + ID_MODEL_FROM_DATABASE=WL-603 Wireless Adapter + +usb:v0DF6p0039* + ID_MODEL_FROM_DATABASE=WL-315 Wireless-N USB Adapter + +usb:v0DF6p003B* + ID_MODEL_FROM_DATABASE=WL-321 Wireless USB Gaming Adapter 300N + +usb:v0DF6p003C* + ID_MODEL_FROM_DATABASE=WL-323 Wireless-N USB Adapter + +usb:v0DF6p003D* + ID_MODEL_FROM_DATABASE=WL-324 Wireless USB Adapter 300N + +usb:v0DF6p003E* + ID_MODEL_FROM_DATABASE=WL-343 Wireless USB Adapter 150N X1 + +usb:v0DF6p003F* + ID_MODEL_FROM_DATABASE=WL-608 Wireless USB Adapter 54g + +usb:v0DF6p0040* + ID_MODEL_FROM_DATABASE=WL-344 Wireless Adapter 300N X2 [Ralink RT3071] + +usb:v0DF6p0041* + ID_MODEL_FROM_DATABASE=WL-329 Wireless Dualband USB adapter 300N + +usb:v0DF6p0042* + ID_MODEL_FROM_DATABASE=WL-345 Wireless USB adapter 300N X3 + +usb:v0DF6p0045* + ID_MODEL_FROM_DATABASE=WL-353 Wireless USB Adapter 150N Nano + +usb:v0DF6p0047* + ID_MODEL_FROM_DATABASE=WL-352v1 Wireless USB Adapter 300N 002 + +usb:v0DF6p0048* + ID_MODEL_FROM_DATABASE=WL-349v1 Wireless Adapter 150N 002 [Ralink RT3070] + +usb:v0DF6p0049* + ID_MODEL_FROM_DATABASE=WL-356 Wireless Adapter 300N + +usb:v0DF6p004A* + ID_MODEL_FROM_DATABASE=WL-358v1 Wireless Micro USB Adapter 300N X3 002 + +usb:v0DF6p004B* + ID_MODEL_FROM_DATABASE=WL-349v3 Wireless Micro Adapter 150N X1 [Realtek RTL8192SU] + +usb:v0DF6p004C* + ID_MODEL_FROM_DATABASE=WL-352 802.11n Adapter [Realtek RTL8191SU] + +usb:v0DF6p0050* + ID_MODEL_FROM_DATABASE=WL-349v4 Wireless Micro Adapter 150N X1 [Ralink RT3370] + +usb:v0DF6p0056* + ID_MODEL_FROM_DATABASE=LN-031 10/100/1000 Ethernet Adapter + +usb:v0DF6p005D* + ID_MODEL_FROM_DATABASE=WLA-2000 v1.001 WLAN [RTL8191SU] + +usb:v0DF6p0060* + ID_MODEL_FROM_DATABASE=WLA-4000 802.11bgn [Ralink RT3072] + +usb:v0DF6p0062* + ID_MODEL_FROM_DATABASE=WLA-5000 802.11abgn [Ralink RT3572] + +usb:v0DF6p061C* + ID_MODEL_FROM_DATABASE=LN-028 Network USB 2.0 Adapter + +usb:v0DF6p21F4* + ID_MODEL_FROM_DATABASE=44 St Bluetooth Device + +usb:v0DF6p2200* + ID_MODEL_FROM_DATABASE=Sitecom bluetooth2.0 class 2 dongle CN-512 + +usb:v0DF6p2208* + ID_MODEL_FROM_DATABASE=Sitecom bluetooth2.0 class 2 dongle CN-520 + +usb:v0DF6p2209* + ID_MODEL_FROM_DATABASE=Sitecom bluetooth2.0 class 1 dongle CN-521 + +usb:v0DF6p9071* + ID_MODEL_FROM_DATABASE=WL-113 rev 1 Wireless Network USB Adapter + +usb:v0DF6p9075* + ID_MODEL_FROM_DATABASE=WL-117 Hi-Speed USB Adapter + +usb:v0DF6p90AC* + ID_MODEL_FROM_DATABASE=WL-172 Wireless Network USB Adapter 54g Turbo + +usb:v0DF6p9712* + ID_MODEL_FROM_DATABASE=WL-113 rev 2 Wireless Network USB Adapter + +usb:v0DF7* + ID_VENDOR_FROM_DATABASE=Mobile Action Technology, Inc. + +usb:v0DF7p0620* + ID_MODEL_FROM_DATABASE=MA-620 Infrared Adapter + +usb:v0DF7p0700* + ID_MODEL_FROM_DATABASE=MA-700 Bluetooth Adapter + +usb:v0DF7p0720* + ID_MODEL_FROM_DATABASE=MA-720 Bluetooth Adapter + +usb:v0DF7p0722* + ID_MODEL_FROM_DATABASE=Bluetooth Dongle + +usb:v0DF7p0730* + ID_MODEL_FROM_DATABASE=MA-730/MA-730G Bluetooth Adapter + +usb:v0DF7p0800* + ID_MODEL_FROM_DATABASE=Data Cable + +usb:v0DF7p0820* + ID_MODEL_FROM_DATABASE=Data Cable + +usb:v0DF7p0900* + ID_MODEL_FROM_DATABASE=MA i-gotU Travel Logger GPS + +usb:v0DF7p1800* + ID_MODEL_FROM_DATABASE=Generic Card Reader + +usb:v0DF7p1802* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v0DFA* + ID_VENDOR_FROM_DATABASE=Toyo Communication Equipment Co., Ltd + +usb:v0DFC* + ID_VENDOR_FROM_DATABASE=GeneralTouch Technology Co., Ltd + +usb:v0DFCp0001* + ID_MODEL_FROM_DATABASE=Touchscreen + +usb:v0E03* + ID_VENDOR_FROM_DATABASE=Nippon Systemware Co., Ltd + +usb:v0E08* + ID_VENDOR_FROM_DATABASE=Winbest Technology Co., Ltd + +usb:v0E0B* + ID_VENDOR_FROM_DATABASE=Amigo Technology Inc. + +usb:v0E0Bp9031* + ID_MODEL_FROM_DATABASE=802.11n Wireless USB Card + +usb:v0E0Bp9041* + ID_MODEL_FROM_DATABASE=802.11n Wireless USB Card + +usb:v0E0C* + ID_VENDOR_FROM_DATABASE=Gesytec + +usb:v0E0Cp0101* + ID_MODEL_FROM_DATABASE=LonUSB LonTalk Network Adapter + +usb:v0E0F* + ID_VENDOR_FROM_DATABASE=VMware, Inc. + +usb:v0E0Fp0001* + ID_MODEL_FROM_DATABASE=Device + +usb:v0E0Fp0002* + ID_MODEL_FROM_DATABASE=Virtual USB Hub + +usb:v0E0Fp0003* + ID_MODEL_FROM_DATABASE=Virtual Mouse + +usb:v0E0Fp0004* + ID_MODEL_FROM_DATABASE=Virtual CCID + +usb:v0E0Fp0005* + ID_MODEL_FROM_DATABASE=Virtual Mass Storage + +usb:v0E0Fp0006* + ID_MODEL_FROM_DATABASE=Virtual Keyboard + +usb:v0E0FpF80A* + ID_MODEL_FROM_DATABASE=Smoker FX2 + +usb:v0E16* + ID_VENDOR_FROM_DATABASE=JMTek, LLC + +usb:v0E17* + ID_VENDOR_FROM_DATABASE=Walex Electronic, Ltd + +usb:v0E1A* + ID_VENDOR_FROM_DATABASE=Unisys + +usb:v0E1B* + ID_VENDOR_FROM_DATABASE=Crewave + +usb:v0E20* + ID_VENDOR_FROM_DATABASE=Pegasus Technologies Ltd. + +usb:v0E20p0101* + ID_MODEL_FROM_DATABASE=NoteTaker + +usb:v0E21* + ID_VENDOR_FROM_DATABASE=Cowon Systems, Inc. + +usb:v0E21p0300* + ID_MODEL_FROM_DATABASE=iAudio CW200 + +usb:v0E21p0400* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v0E21p0500* + ID_MODEL_FROM_DATABASE=iAudio M3 + +usb:v0E21p0510* + ID_MODEL_FROM_DATABASE=iAudio X5, subpack USB port + +usb:v0E21p0513* + ID_MODEL_FROM_DATABASE=iAudio X5, side USB port + +usb:v0E21p0520* + ID_MODEL_FROM_DATABASE=iAudio M5, side USB port + +usb:v0E21p0601* + ID_MODEL_FROM_DATABASE=iAudio G3 + +usb:v0E21p0681* + ID_MODEL_FROM_DATABASE=iAUDIO E2 + +usb:v0E21p0700* + ID_MODEL_FROM_DATABASE=iAudio U3 + +usb:v0E21p0751* + ID_MODEL_FROM_DATABASE=iAudio 7 + +usb:v0E21p0760* + ID_MODEL_FROM_DATABASE=iAUDIO U5 / iAUDIO G2 + +usb:v0E21p0800* + ID_MODEL_FROM_DATABASE=Cowon D2 (UMS mode) + +usb:v0E21p0801* + ID_MODEL_FROM_DATABASE=Cowon D2 (MTP mode) + +usb:v0E21p0910* + ID_MODEL_FROM_DATABASE=iAUDIO 9 + +usb:v0E21p0920* + ID_MODEL_FROM_DATABASE=J3 + +usb:v0E22* + ID_VENDOR_FROM_DATABASE=Symbian Ltd. + +usb:v0E23* + ID_VENDOR_FROM_DATABASE=Liou Yuane Enterprise Co., Ltd + +usb:v0E25* + ID_VENDOR_FROM_DATABASE=VinChip Systems, Inc. + +usb:v0E26* + ID_VENDOR_FROM_DATABASE=J-Phone East Co., Ltd + +usb:v0E30* + ID_VENDOR_FROM_DATABASE=HeartMath LLC + +usb:v0E34* + ID_VENDOR_FROM_DATABASE=Micro Computer Control Corp. + +usb:v0E35* + ID_VENDOR_FROM_DATABASE=3Pea Technologies, Inc. + +usb:v0E36* + ID_VENDOR_FROM_DATABASE=TiePie engineering + +usb:v0E36p0008* + ID_MODEL_FROM_DATABASE=Handyscope HS3 + +usb:v0E36p0009* + ID_MODEL_FROM_DATABASE=Handyscope HS3 (br) + +usb:v0E36p000A* + ID_MODEL_FROM_DATABASE=Handyscope HS4 + +usb:v0E36p000B* + ID_MODEL_FROM_DATABASE=Handyscope HS4 (br) + +usb:v0E36p000E* + ID_MODEL_FROM_DATABASE=Handyscope HS4-DIFF + +usb:v0E36p000F* + ID_MODEL_FROM_DATABASE=Handyscope HS4-DIFF (br) + +usb:v0E36p0010* + ID_MODEL_FROM_DATABASE=Handyscope HS2 + +usb:v0E36p0011* + ID_MODEL_FROM_DATABASE=TiePieSCOPE HS805 (br) + +usb:v0E36p0012* + ID_MODEL_FROM_DATABASE=TiePieSCOPE HS805 + +usb:v0E36p0013* + ID_MODEL_FROM_DATABASE=Handyprobe HP3 + +usb:v0E36p0014* + ID_MODEL_FROM_DATABASE=Handyprobe HP3 + +usb:v0E36p0018* + ID_MODEL_FROM_DATABASE=Handyprobe HP2 + +usb:v0E36p001B* + ID_MODEL_FROM_DATABASE=Handyscope HS5 + +usb:v0E36p0042* + ID_MODEL_FROM_DATABASE=TiePieSCOPE HS801 + +usb:v0E36p00FD* + ID_MODEL_FROM_DATABASE=USB To Parallel adapter + +usb:v0E36p00FE* + ID_MODEL_FROM_DATABASE=USB To Parallel adapter + +usb:v0E38* + ID_VENDOR_FROM_DATABASE=Stratitec, Inc. + +usb:v0E39* + ID_VENDOR_FROM_DATABASE=Smart Modular Technologies, Inc. + +usb:v0E39p0137* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v0E3A* + ID_VENDOR_FROM_DATABASE=Neostar Technology Co., Ltd + +usb:v0E3Ap1100* + ID_MODEL_FROM_DATABASE=CW-1100 Wireless Network Adapter + +usb:v0E3B* + ID_VENDOR_FROM_DATABASE=Mansella, Ltd + +usb:v0E41* + ID_VENDOR_FROM_DATABASE=Line6, Inc. + +usb:v0E41p4147* + ID_MODEL_FROM_DATABASE=TonePort GX + +usb:v0E41p414D* + ID_MODEL_FROM_DATABASE=Pod HD500 + +usb:v0E41p4156* + ID_MODEL_FROM_DATABASE=POD HD Desktop + +usb:v0E41p4250* + ID_MODEL_FROM_DATABASE=BassPODxt + +usb:v0E41p4252* + ID_MODEL_FROM_DATABASE=BassPODxt Pro + +usb:v0E41p4642* + ID_MODEL_FROM_DATABASE=BassPODxt Live + +usb:v0E41p4650* + ID_MODEL_FROM_DATABASE=PODxt Live + +usb:v0E41p4750* + ID_MODEL_FROM_DATABASE=GuitarPort + +usb:v0E41p5044* + ID_MODEL_FROM_DATABASE=PODxt + +usb:v0E41p5050* + ID_MODEL_FROM_DATABASE=PODxt Pro + +usb:v0E41p534D* + ID_MODEL_FROM_DATABASE=SeaMonkey + +usb:v0E44* + ID_VENDOR_FROM_DATABASE=Sun-Riseful Technology Co., Ltd. + +usb:v0E48* + ID_VENDOR_FROM_DATABASE=Julia Corp., Ltd + +usb:v0E48p0100* + ID_MODEL_FROM_DATABASE=CardPro SmartCard Reader + +usb:v0E4A* + ID_VENDOR_FROM_DATABASE=Shenzhen Bao Hing Electric Wire & Cable Mfr. Co. + +usb:v0E4C* + ID_VENDOR_FROM_DATABASE=Radica Games, Ltd + +usb:v0E4Cp1097* + ID_MODEL_FROM_DATABASE=Gamester Controller + +usb:v0E4Cp2390* + ID_MODEL_FROM_DATABASE=Games Jtech Controller + +usb:v0E4Cp7288* + ID_MODEL_FROM_DATABASE=funkey reader + +usb:v0E50* + ID_VENDOR_FROM_DATABASE=TechnoData Interware + +usb:v0E50p0002* + ID_MODEL_FROM_DATABASE=Matrixlock Dongle (HID) + +usb:v0E55* + ID_VENDOR_FROM_DATABASE=Speed Dragon Multimedia, Ltd + +usb:v0E55p110A* + ID_MODEL_FROM_DATABASE=Tanic S110-SG1 + ISSC IS1002N [Slow Infra-Red (SIR) & Bluetooth 1.2 (Class 2) Adapter] + +usb:v0E55p110B* + ID_MODEL_FROM_DATABASE=MS3303H USB-to-Serial Bridge + +usb:v0E56* + ID_VENDOR_FROM_DATABASE=Kingston Technology Company, Inc. + +usb:v0E56p6021* + ID_MODEL_FROM_DATABASE=K-PEX 100 + +usb:v0E5A* + ID_VENDOR_FROM_DATABASE=Active Co., Ltd + +usb:v0E5B* + ID_VENDOR_FROM_DATABASE=Union Power Information Industrial Co., Ltd + +usb:v0E5C* + ID_VENDOR_FROM_DATABASE=Bitland Information Technology Co., Ltd + +usb:v0E5Cp6118* + ID_MODEL_FROM_DATABASE=LCD Device + +usb:v0E5Cp6119* + ID_MODEL_FROM_DATABASE=remote receive and control device + +usb:v0E5Cp6441* + ID_MODEL_FROM_DATABASE=C-Media Sound Device + +usb:v0E5D* + ID_VENDOR_FROM_DATABASE=Neltron Industrial Co., Ltd + +usb:v0E5E* + ID_VENDOR_FROM_DATABASE=Conwise Technology Co., Ltd. + +usb:v0E5Ep6622* + ID_MODEL_FROM_DATABASE=CW6622 + +usb:v0E66* + ID_VENDOR_FROM_DATABASE=Hawking Technologies + +usb:v0E66p0001* + ID_MODEL_FROM_DATABASE=HWUN1 Hi-Gain Wireless-300N Adapter w/ Upgradable Antenna [Ralink RT2870] + +usb:v0E66p0003* + ID_MODEL_FROM_DATABASE=HWDN1 Hi-Gain Wireless-300N Dish Adapter [Ralink RT2870] + +usb:v0E66p0009* + ID_MODEL_FROM_DATABASE=HWUN2 Hi-Gain Wireless-150N Adapter w/ Upgradable Antenna [Ralink RT2770] + +usb:v0E66p000B* + ID_MODEL_FROM_DATABASE=HWDN2 Hi-Gain Wireless-150N Dish Adapter [Ralink RT2770] + +usb:v0E66p0013* + ID_MODEL_FROM_DATABASE=HWUN3 Hi-Gain Wireless-N Adapter [Ralink RT3070] + +usb:v0E66p0015* + ID_MODEL_FROM_DATABASE=HWDN2 Rev. E Hi-Gain Wireless-150N Dish Adapter [Realtek RTL8191SU] + +usb:v0E66p0017* + ID_MODEL_FROM_DATABASE=HAWNU1 Hi-Gain Wireless-150N Network Adapter with Range Amplifier [Ralink RT3070] + +usb:v0E66p0018* + ID_MODEL_FROM_DATABASE=Wireless-N Network Adapter [Ralink RT2870] + +usb:v0E66p400B* + ID_MODEL_FROM_DATABASE=UF100 10/100 Network Adapter + +usb:v0E66p400C* + ID_MODEL_FROM_DATABASE=UF100 Ethernet [pegasus2] + +usb:v0E67* + ID_VENDOR_FROM_DATABASE=Fossil, Inc. + +usb:v0E67p0002* + ID_MODEL_FROM_DATABASE=Wrist PDA + +usb:v0E6A* + ID_VENDOR_FROM_DATABASE=Megawin Technology Co., Ltd + +usb:v0E6Ap0101* + ID_MODEL_FROM_DATABASE=MA100 [USB-UART Bridge IC] + +usb:v0E6Ap6001* + ID_MODEL_FROM_DATABASE=GEMBIRD Flexible keyboard KB-109F-B-DE + +usb:v0E6F* + ID_VENDOR_FROM_DATABASE=Logic3 + +usb:v0E6Fp0003* + ID_MODEL_FROM_DATABASE=Freebird wireless Controller + +usb:v0E6Fp0005* + ID_MODEL_FROM_DATABASE=Eclipse wireless Controller + +usb:v0E6Fp0006* + ID_MODEL_FROM_DATABASE=Edge wireless Controller + +usb:v0E70* + ID_VENDOR_FROM_DATABASE=Tokyo Electronic Industry Co., Ltd + +usb:v0E72* + ID_VENDOR_FROM_DATABASE=Hsi-Chin Electronics Co., Ltd + +usb:v0E75* + ID_VENDOR_FROM_DATABASE=TVS Electronics, Ltd + +usb:v0E79* + ID_VENDOR_FROM_DATABASE=Archos, Inc. + +usb:v0E79p1106* + ID_MODEL_FROM_DATABASE=Pocket Media Assistant - PMA400 + +usb:v0E79p1204* + ID_MODEL_FROM_DATABASE=Gmini XS 200 + +usb:v0E79p1306* + ID_MODEL_FROM_DATABASE=504 Portable Multimedia Player + +usb:v0E79p1330* + ID_MODEL_FROM_DATABASE=5 Tablet + +usb:v0E79p1332* + ID_MODEL_FROM_DATABASE=5 IMT + +usb:v0E79p1416* + ID_MODEL_FROM_DATABASE=32 IT + +usb:v0E79p1417* + ID_MODEL_FROM_DATABASE=A43 IT + +usb:v0E79p150E* + ID_MODEL_FROM_DATABASE=80 G9 + +usb:v0E7B* + ID_VENDOR_FROM_DATABASE=On-Tech Industry Co., Ltd + +usb:v0E7E* + ID_VENDOR_FROM_DATABASE=Gmate, Inc. + +usb:v0E7Ep0001* + ID_MODEL_FROM_DATABASE=Yopy 3000 PDA + +usb:v0E7Ep1001* + ID_MODEL_FROM_DATABASE=YP3X00 PDA + +usb:v0E82* + ID_VENDOR_FROM_DATABASE=Ching Tai Electric Wire & Cable Co., Ltd + +usb:v0E83* + ID_VENDOR_FROM_DATABASE=Shin An Wire & Cable Co. + +usb:v0E8C* + ID_VENDOR_FROM_DATABASE=Well Force Electronic Co., Ltd + +usb:v0E8D* + ID_VENDOR_FROM_DATABASE=MediaTek Inc. + +usb:v0E8Dp0003* + ID_MODEL_FROM_DATABASE=MT6227 phone + +usb:v0E8Dp0004* + ID_MODEL_FROM_DATABASE=MT6227 phone + +usb:v0E8Dp0023* + ID_MODEL_FROM_DATABASE=S103 + +usb:v0E8Dp1806* + ID_MODEL_FROM_DATABASE=Samsung SE-208AB Slim Portable DVD Writer + +usb:v0E8Dp1836* + ID_MODEL_FROM_DATABASE=Samsung SE-S084 Super WriteMaster Slim External DVD writer + +usb:v0E8Dp3329* + ID_MODEL_FROM_DATABASE=Qstarz BT-Q1000XT + +usb:v0E8F* + ID_VENDOR_FROM_DATABASE=GreenAsia Inc. + +usb:v0E8Fp0003* + ID_MODEL_FROM_DATABASE=MaxFire Blaze2 + +usb:v0E8Fp0012* + ID_MODEL_FROM_DATABASE=USB Wireless 2.4GHz Gamepad + +usb:v0E8Fp0016* + ID_MODEL_FROM_DATABASE=4 port USB 1.1 hub UH-174 + +usb:v0E8Fp0020* + ID_MODEL_FROM_DATABASE=USB to PS/2 Adapter + +usb:v0E8Fp0021* + ID_MODEL_FROM_DATABASE=Multimedia Keyboard Controller + +usb:v0E8Fp0201* + ID_MODEL_FROM_DATABASE=SmartJoy Frag Xpad/PS2 adaptor + +usb:v0E90* + ID_VENDOR_FROM_DATABASE=WiebeTech, LLC + +usb:v0E90p0100* + ID_MODEL_FROM_DATABASE=Storage Adapter V1 + +usb:v0E91* + ID_VENDOR_FROM_DATABASE=VTech Engineering Canada, Ltd + +usb:v0E92* + ID_VENDOR_FROM_DATABASE=C's Glory Enterprise Co., Ltd + +usb:v0E93* + ID_VENDOR_FROM_DATABASE=eM Technics Co., Ltd + +usb:v0E95* + ID_VENDOR_FROM_DATABASE=Future Technology Co., Ltd + +usb:v0E96* + ID_VENDOR_FROM_DATABASE=Aplux Communications, Ltd + +usb:v0E96pC001* + ID_MODEL_FROM_DATABASE=TRUST 380 USB2 SPACEC@M + +usb:v0E97* + ID_VENDOR_FROM_DATABASE=Fingerworks, Inc. + +usb:v0E97p0908* + ID_MODEL_FROM_DATABASE=Composite HID (Keyboard and Mouse) + +usb:v0E98* + ID_VENDOR_FROM_DATABASE=Advanced Analogic Technologies, Inc. + +usb:v0E99* + ID_VENDOR_FROM_DATABASE=Parallel Dice Co., Ltd + +usb:v0E9A* + ID_VENDOR_FROM_DATABASE=TA HSING Industries, Ltd + +usb:v0E9B* + ID_VENDOR_FROM_DATABASE=ADTEC Corp. + +usb:v0E9C* + ID_VENDOR_FROM_DATABASE=Streamzap, Inc. + +usb:v0E9Cp0000* + ID_MODEL_FROM_DATABASE=Streamzap Remote Control + +usb:v0E9F* + ID_VENDOR_FROM_DATABASE=Tamura Corp. + +usb:v0EA0* + ID_VENDOR_FROM_DATABASE=Ours Technology, Inc. + +usb:v0EA0p2126* + ID_MODEL_FROM_DATABASE=7-in-1 Card Reader + +usb:v0EA0p2153* + ID_MODEL_FROM_DATABASE=SD Card Reader Key + +usb:v0EA0p2168* + ID_MODEL_FROM_DATABASE=Transcend JetFlash 2.0 / Astone USB Drive + +usb:v0EA0p6803* + ID_MODEL_FROM_DATABASE=OTI-6803 Flash Disk + +usb:v0EA0p6808* + ID_MODEL_FROM_DATABASE=OTI-6808 Flash Disk + +usb:v0EA0p6828* + ID_MODEL_FROM_DATABASE=OTI-6828 Flash Disk + +usb:v0EA0p6858* + ID_MODEL_FROM_DATABASE=OTi-6858 serial adapter + +usb:v0EA6* + ID_VENDOR_FROM_DATABASE=Nihon Computer Co., Ltd + +usb:v0EA7* + ID_VENDOR_FROM_DATABASE=MSL Enterprises Corp. + +usb:v0EA8* + ID_VENDOR_FROM_DATABASE=CenDyne, Inc. + +usb:v0EAD* + ID_VENDOR_FROM_DATABASE=Humax Co., Ltd + +usb:v0EB0* + ID_VENDOR_FROM_DATABASE=NovaTech + +usb:v0EB0p9020* + ID_MODEL_FROM_DATABASE=NovaTech NV-902W + +usb:v0EB0p9021* + ID_MODEL_FROM_DATABASE=RT2573 + +usb:v0EB1* + ID_VENDOR_FROM_DATABASE=WIS Technologies, Inc. + +usb:v0EB1p6666* + ID_MODEL_FROM_DATABASE=WinFast WalkieTV TV Loader + +usb:v0EB1p6668* + ID_MODEL_FROM_DATABASE=WinFast WalkieTV TV Loader + +usb:v0EB1p7007* + ID_MODEL_FROM_DATABASE=WinFast WalkieTV WDM Capture + +usb:v0EB2* + ID_VENDOR_FROM_DATABASE=Y-S Electronic Co., Ltd + +usb:v0EB3* + ID_VENDOR_FROM_DATABASE=Saint Technology Corp. + +usb:v0EB7* + ID_VENDOR_FROM_DATABASE=Endor AG + +usb:v0EB8* + ID_VENDOR_FROM_DATABASE=Mettler Toledo + +usb:v0EB8pF000* + ID_MODEL_FROM_DATABASE=PS60 Scale + +usb:v0EBE* + ID_VENDOR_FROM_DATABASE=VWeb Corp. + +usb:v0EBF* + ID_VENDOR_FROM_DATABASE=Omega Technology of Taiwan, Inc. + +usb:v0EC0* + ID_VENDOR_FROM_DATABASE=LHI Technology (China) Co., Ltd + +usb:v0EC1* + ID_VENDOR_FROM_DATABASE=Abit Computer Corp. + +usb:v0EC2* + ID_VENDOR_FROM_DATABASE=Sweetray Industrial, Ltd + +usb:v0EC3* + ID_VENDOR_FROM_DATABASE=Axell Co., Ltd + +usb:v0EC4* + ID_VENDOR_FROM_DATABASE=Ballracing Developments, Ltd + +usb:v0EC5* + ID_VENDOR_FROM_DATABASE=GT Information System Co., Ltd + +usb:v0EC6* + ID_VENDOR_FROM_DATABASE=InnoVISION Multimedia, Ltd + +usb:v0EC7* + ID_VENDOR_FROM_DATABASE=Theta Link Corp. + +usb:v0EC7p1008* + ID_MODEL_FROM_DATABASE=So., Show 301 Digital Camera + +usb:v0ECD* + ID_VENDOR_FROM_DATABASE=Lite-On IT Corp. + +usb:v0ECDp1400* + ID_MODEL_FROM_DATABASE=CD\RW 40X + +usb:v0ECDpA100* + ID_MODEL_FROM_DATABASE=LDW-411SX DVD/CD Rewritable Drive + +usb:v0ECE* + ID_VENDOR_FROM_DATABASE=TaiSol Electronics Co., Ltd + +usb:v0ECF* + ID_VENDOR_FROM_DATABASE=Phogenix Imaging, LLC + +usb:v0ED1* + ID_VENDOR_FROM_DATABASE=WinMaxGroup + +usb:v0ED1p6660* + ID_MODEL_FROM_DATABASE=Flash Disk 64M-C + +usb:v0ED1p6680* + ID_MODEL_FROM_DATABASE=Flash Disk 64M-B + +usb:v0ED1p7634* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v0ED2* + ID_VENDOR_FROM_DATABASE=Kyoto Micro Computer Co., Ltd + +usb:v0ED3* + ID_VENDOR_FROM_DATABASE=Wing-Tech Enterprise Co., Ltd + +usb:v0ED5* + ID_VENDOR_FROM_DATABASE=Fiberbyte + +usb:v0ED5pE000* + ID_MODEL_FROM_DATABASE=USB-inSync Device + +usb:v0ED5pF000* + ID_MODEL_FROM_DATABASE=Fiberbyte USB-inSync Device + +usb:v0ED5pF201* + ID_MODEL_FROM_DATABASE=Fiberbyte USB-inSync DAQ-2500X + +usb:v0EDA* + ID_VENDOR_FROM_DATABASE=Noriake Itron Corp. + +usb:v0EDF* + ID_VENDOR_FROM_DATABASE=e-MDT Co., Ltd + +usb:v0EDFp2060* + ID_MODEL_FROM_DATABASE=FID irock! 100 Series + +usb:v0EE0* + ID_VENDOR_FROM_DATABASE=Shima Seiki Mfg., Ltd + +usb:v0EE1* + ID_VENDOR_FROM_DATABASE=Sarotech Co., Ltd + +usb:v0EE2* + ID_VENDOR_FROM_DATABASE=AMI Semiconductor, Inc. + +usb:v0EE3* + ID_VENDOR_FROM_DATABASE=ComTrue Technology Corp. + +usb:v0EE3p1000* + ID_MODEL_FROM_DATABASE=Image Tank 1.5 + +usb:v0EE4* + ID_VENDOR_FROM_DATABASE=Sunrich Technology, Ltd + +usb:v0EEE* + ID_VENDOR_FROM_DATABASE=Digital Stream Technology, Inc. + +usb:v0EEEp8810* + ID_MODEL_FROM_DATABASE=Mass Storage Drive + +usb:v0EEF* + ID_VENDOR_FROM_DATABASE=D-WAV Scientific Co., Ltd + +usb:v0EEFp0001* + ID_MODEL_FROM_DATABASE=eGalax TouchScreen + +usb:v0EEFp0002* + ID_MODEL_FROM_DATABASE=Touchscreen Controller(Professional) + +usb:v0EF0* + ID_VENDOR_FROM_DATABASE=Hitachi Cable, Ltd + +usb:v0EF1* + ID_VENDOR_FROM_DATABASE=Aichi Micro Intelligent Corp. + +usb:v0EF2* + ID_VENDOR_FROM_DATABASE=I/O Magic Corp. + +usb:v0EF3* + ID_VENDOR_FROM_DATABASE=Lynn Products, Inc. + +usb:v0EF4* + ID_VENDOR_FROM_DATABASE=DSI Datotech + +usb:v0EF5* + ID_VENDOR_FROM_DATABASE=PointChips + +usb:v0EF5p2202* + ID_MODEL_FROM_DATABASE=Flash Disk + +usb:v0EF5p2366* + ID_MODEL_FROM_DATABASE=Flash Disk + +usb:v0EF6* + ID_VENDOR_FROM_DATABASE=Yield Microelectronics Corp. + +usb:v0EF7* + ID_VENDOR_FROM_DATABASE=SM Tech Co., Ltd (Tulip) + +usb:v0EFD* + ID_VENDOR_FROM_DATABASE=Oasis Semiconductor + +usb:v0EFE* + ID_VENDOR_FROM_DATABASE=Wem Technology, Inc. + +usb:v0F03* + ID_VENDOR_FROM_DATABASE=Unitek UPS Systems + +usb:v0F03p0001* + ID_MODEL_FROM_DATABASE=Alpha 1200Sx + +usb:v0F06* + ID_VENDOR_FROM_DATABASE=Visual Frontier Enterprise Co., Ltd + +usb:v0F08* + ID_VENDOR_FROM_DATABASE=CSL Wire & Plug (Shen Zhen) Co. + +usb:v0F0C* + ID_VENDOR_FROM_DATABASE=CAS Corp. + +usb:v0F0D* + ID_VENDOR_FROM_DATABASE=Hori Co., Ltd + +usb:v0F0Dp0011* + ID_MODEL_FROM_DATABASE=Real Arcade Pro 3 + +usb:v0F0E* + ID_VENDOR_FROM_DATABASE=Energy Full Corp. + +usb:v0F11* + ID_VENDOR_FROM_DATABASE=LD Didactic GmbH + +usb:v0F11p1000* + ID_MODEL_FROM_DATABASE=CASSY-S + +usb:v0F11p1010* + ID_MODEL_FROM_DATABASE=Pocket-CASSY + +usb:v0F11p1020* + ID_MODEL_FROM_DATABASE=Mobile-CASSY + +usb:v0F11p1080* + ID_MODEL_FROM_DATABASE=Joule and Wattmeter + +usb:v0F11p1081* + ID_MODEL_FROM_DATABASE=Digital Multimeter P + +usb:v0F11p1090* + ID_MODEL_FROM_DATABASE=UMI P + +usb:v0F11p1100* + ID_MODEL_FROM_DATABASE=X-Ray Apparatus + +usb:v0F11p1101* + ID_MODEL_FROM_DATABASE=X-Ray Apparatus + +usb:v0F11p1200* + ID_MODEL_FROM_DATABASE=VideoCom + +usb:v0F11p2000* + ID_MODEL_FROM_DATABASE=COM3LAB + +usb:v0F11p2010* + ID_MODEL_FROM_DATABASE=Terminal Adapter + +usb:v0F11p2020* + ID_MODEL_FROM_DATABASE=Network Analyser + +usb:v0F11p2030* + ID_MODEL_FROM_DATABASE=Converter Control Unit + +usb:v0F11p2040* + ID_MODEL_FROM_DATABASE=Machine Test System + +usb:v0F12* + ID_VENDOR_FROM_DATABASE=Mars Engineering Corp. + +usb:v0F13* + ID_VENDOR_FROM_DATABASE=Acetek Technology Co., Ltd + +usb:v0F18* + ID_VENDOR_FROM_DATABASE=Finger Lakes Instrumentation + +usb:v0F18p0002* + ID_MODEL_FROM_DATABASE=CCD + +usb:v0F18p0006* + ID_MODEL_FROM_DATABASE=Focuser + +usb:v0F18p0007* + ID_MODEL_FROM_DATABASE=Filter Wheel + +usb:v0F18p000A* + ID_MODEL_FROM_DATABASE=ProLine CCD + +usb:v0F18p000B* + ID_MODEL_FROM_DATABASE=Color Filter Wheel 4 + +usb:v0F18p000C* + ID_MODEL_FROM_DATABASE=PDF2 + +usb:v0F18p000D* + ID_MODEL_FROM_DATABASE=Guider + +usb:v0F19* + ID_VENDOR_FROM_DATABASE=Oracom Co., Ltd + +usb:v0F1B* + ID_VENDOR_FROM_DATABASE=Onset Computer Corp. + +usb:v0F1C* + ID_VENDOR_FROM_DATABASE=Funai Electric Co., Ltd + +usb:v0F1D* + ID_VENDOR_FROM_DATABASE=Iwill Corp. + +usb:v0F21* + ID_VENDOR_FROM_DATABASE=IOI Technology Corp. + +usb:v0F22* + ID_VENDOR_FROM_DATABASE=Senior Industries, Inc. + +usb:v0F23* + ID_VENDOR_FROM_DATABASE=Leader Tech Manufacturer Co., Ltd + +usb:v0F24* + ID_VENDOR_FROM_DATABASE=Flex-P Industries, Snd., Bhd. + +usb:v0F2D* + ID_VENDOR_FROM_DATABASE=ViPower, Inc. + +usb:v0F2E* + ID_VENDOR_FROM_DATABASE=Geniality Maple Technology Co., Ltd + +usb:v0F2F* + ID_VENDOR_FROM_DATABASE=Priva Design Services + +usb:v0F30* + ID_VENDOR_FROM_DATABASE=Jess Technology Co., Ltd + +usb:v0F30p001C* + ID_MODEL_FROM_DATABASE=PS3 Guitar Controller Dongle + +usb:v0F30p0110* + ID_MODEL_FROM_DATABASE=Dual Analog Rumble Pad + +usb:v0F30p0111* + ID_MODEL_FROM_DATABASE=Colour Rumble Pad + +usb:v0F30p0208* + ID_MODEL_FROM_DATABASE=Xbox & PC Gamepad + +usb:v0F31* + ID_VENDOR_FROM_DATABASE=Chrysalis Development + +usb:v0F32* + ID_VENDOR_FROM_DATABASE=YFC-BonEagle Electric Co., Ltd + +usb:v0F37* + ID_VENDOR_FROM_DATABASE=Kokuyo Co., Ltd + +usb:v0F38* + ID_VENDOR_FROM_DATABASE=Nien-Yi Industrial Corp. + +usb:v0F3D* + ID_VENDOR_FROM_DATABASE=Airprime, Incorporated + +usb:v0F3Dp0112* + ID_MODEL_FROM_DATABASE=CDMA 1xEVDO PC Card, PC 5220 + +usb:v0F41* + ID_VENDOR_FROM_DATABASE=RDC Semiconductor Co., Ltd + +usb:v0F42* + ID_VENDOR_FROM_DATABASE=Nital Consulting Services, Inc. + +usb:v0F44* + ID_VENDOR_FROM_DATABASE=Polhemus + +usb:v0F44pEF11* + ID_MODEL_FROM_DATABASE=Patriot (firmware not loaded) + +usb:v0F44pEF12* + ID_MODEL_FROM_DATABASE=Patriot + +usb:v0F44pFF11* + ID_MODEL_FROM_DATABASE=Liberty (firmware not loaded) + +usb:v0F44pFF12* + ID_MODEL_FROM_DATABASE=Liberty + +usb:v0F4B* + ID_VENDOR_FROM_DATABASE=St. John Technology Co., Ltd + +usb:v0F4C* + ID_VENDOR_FROM_DATABASE=WorldWide Cable Opto Corp. + +usb:v0F4D* + ID_VENDOR_FROM_DATABASE=Microtune, Inc. + +usb:v0F4Dp1000* + ID_MODEL_FROM_DATABASE=Bluetooth Dongle + +usb:v0F4E* + ID_VENDOR_FROM_DATABASE=Freedom Scientific + +usb:v0F52* + ID_VENDOR_FROM_DATABASE=Wing Key Electrical Co., Ltd + +usb:v0F53* + ID_VENDOR_FROM_DATABASE=Dongguan White Horse Cable Factory, Ltd + +usb:v0F54* + ID_VENDOR_FROM_DATABASE=Kawai Musical Instruments Mfg. Co., Ltd + +usb:v0F55* + ID_VENDOR_FROM_DATABASE=AmbiCom, Inc. + +usb:v0F5C* + ID_VENDOR_FROM_DATABASE=Prairiecomm, Inc. + +usb:v0F5D* + ID_VENDOR_FROM_DATABASE=NewAge International, LLC + +usb:v0F5Dp9455* + ID_MODEL_FROM_DATABASE=Compact Drive + +usb:v0F5F* + ID_VENDOR_FROM_DATABASE=Key Technology Corp. + +usb:v0F60* + ID_VENDOR_FROM_DATABASE=NTK, Ltd + +usb:v0F61* + ID_VENDOR_FROM_DATABASE=Varian, Inc. + +usb:v0F62* + ID_VENDOR_FROM_DATABASE=Acrox Technologies Co., Ltd + +usb:v0F62p1001* + ID_MODEL_FROM_DATABASE=Targus Mini Trackball Optical Mouse + +usb:v0F63* + ID_VENDOR_FROM_DATABASE=LeapFrog Enterprises + +usb:v0F63p0010* + ID_MODEL_FROM_DATABASE=Leapster Explorer + +usb:v0F63p0500* + ID_MODEL_FROM_DATABASE=Fly Fusion + +usb:v0F63p0600* + ID_MODEL_FROM_DATABASE=Leap Port Turbo + +usb:v0F63p0700* + ID_MODEL_FROM_DATABASE=POGO + +usb:v0F63p0800* + ID_MODEL_FROM_DATABASE=Didj + +usb:v0F63p0900* + ID_MODEL_FROM_DATABASE=TAGSchool + +usb:v0F63p0A00* + ID_MODEL_FROM_DATABASE=Leapster 2 + +usb:v0F63p0B00* + ID_MODEL_FROM_DATABASE=Crammer + +usb:v0F63p0C00* + ID_MODEL_FROM_DATABASE=Tag Jr + +usb:v0F63p0D00* + ID_MODEL_FROM_DATABASE=My Pal Scout + +usb:v0F63p0E00* + ID_MODEL_FROM_DATABASE=Tag32 + +usb:v0F63p0F00* + ID_MODEL_FROM_DATABASE=Tag64 + +usb:v0F63p1000* + ID_MODEL_FROM_DATABASE=Kiwi16 + +usb:v0F63p1100* + ID_MODEL_FROM_DATABASE=Leapster L2x + +usb:v0F63p1111* + ID_MODEL_FROM_DATABASE=Fly Fusion + +usb:v0F63p1300* + ID_MODEL_FROM_DATABASE=Didj UK/France (Leapster Advance) + +usb:v0F68* + ID_VENDOR_FROM_DATABASE=Kobe Steel, Ltd + +usb:v0F69* + ID_VENDOR_FROM_DATABASE=Dionex Corp. + +usb:v0F6A* + ID_VENDOR_FROM_DATABASE=Vibren Technologies, Inc. + +usb:v0F6E* + ID_VENDOR_FROM_DATABASE=INTELLIGENT SYSTEMS + +usb:v0F6Ep0100* + ID_MODEL_FROM_DATABASE=GameBoy Color Emulator + +usb:v0F6Ep0201* + ID_MODEL_FROM_DATABASE=GameBoy Advance Flash Gang Writer + +usb:v0F6Ep0202* + ID_MODEL_FROM_DATABASE=GameBoy Advance Capture + +usb:v0F6Ep0300* + ID_MODEL_FROM_DATABASE=Gamecube DOL Viewer + +usb:v0F6Ep0400* + ID_MODEL_FROM_DATABASE=NDS Emulator + +usb:v0F6Ep0401* + ID_MODEL_FROM_DATABASE=NDS UIC + +usb:v0F6Ep0402* + ID_MODEL_FROM_DATABASE=NDS Writer + +usb:v0F6Ep0403* + ID_MODEL_FROM_DATABASE=NDS Capture + +usb:v0F6Ep0404* + ID_MODEL_FROM_DATABASE=NDS Emulator (Lite) + +usb:v0F73* + ID_VENDOR_FROM_DATABASE=DFI + +usb:v0F7C* + ID_VENDOR_FROM_DATABASE=DQ Technology, Inc. + +usb:v0F7D* + ID_VENDOR_FROM_DATABASE=NetBotz, Inc. + +usb:v0F7E* + ID_VENDOR_FROM_DATABASE=Fluke Corp. + +usb:v0F88* + ID_VENDOR_FROM_DATABASE=VTech Holdings, Ltd + +usb:v0F88p3012* + ID_MODEL_FROM_DATABASE=RT2570 + +usb:v0F88p3014* + ID_MODEL_FROM_DATABASE=ZD1211B + +usb:v0F8B* + ID_VENDOR_FROM_DATABASE=Yazaki Corp. + +usb:v0F8C* + ID_VENDOR_FROM_DATABASE=Young Generation International Corp. + +usb:v0F8D* + ID_VENDOR_FROM_DATABASE=Uniwill Computer Corp. + +usb:v0F8E* + ID_VENDOR_FROM_DATABASE=Kingnet Technology Co., Ltd + +usb:v0F8F* + ID_VENDOR_FROM_DATABASE=Soma Networks + +usb:v0F97* + ID_VENDOR_FROM_DATABASE=CviLux Corp. + +usb:v0F98* + ID_VENDOR_FROM_DATABASE=CyberBank Corp. + +usb:v0F9C* + ID_VENDOR_FROM_DATABASE=Hyun Won, Inc. + +usb:v0F9Cp0301* + ID_MODEL_FROM_DATABASE=M-Any Premium DAH-610 MP3/WMA Player + +usb:v0F9Cp0332* + ID_MODEL_FROM_DATABASE=mobiBLU DAH-1200 MP3/Ogg Player + +usb:v0F9E* + ID_VENDOR_FROM_DATABASE=Lucent Technologies + +usb:v0FA3* + ID_VENDOR_FROM_DATABASE=Starconn Electronic Co., Ltd + +usb:v0FA4* + ID_VENDOR_FROM_DATABASE=ATL Technology + +usb:v0FA5* + ID_VENDOR_FROM_DATABASE=Sotec Co., Ltd + +usb:v0FA7* + ID_VENDOR_FROM_DATABASE=Epox Computer Co., Ltd + +usb:v0FA8* + ID_VENDOR_FROM_DATABASE=Logic Controls, Inc. + +usb:v0FAF* + ID_VENDOR_FROM_DATABASE=Winpoint Electronic Corp. + +usb:v0FB0* + ID_VENDOR_FROM_DATABASE=Haurtian Wire & Cable Co., Ltd + +usb:v0FB1* + ID_VENDOR_FROM_DATABASE=Inclose Design, Inc. + +usb:v0FB2* + ID_VENDOR_FROM_DATABASE=Juan-Chern Industrial Co., Ltd + +usb:v0FB6* + ID_VENDOR_FROM_DATABASE=Heber Ltd + +usb:v0FB6p3FC3* + ID_MODEL_FROM_DATABASE=Firefly X10i I/O Board (with firmware) + +usb:v0FB6p3FC4* + ID_MODEL_FROM_DATABASE=Firefly X10i I/O Board (without firmware) + +usb:v0FB8* + ID_VENDOR_FROM_DATABASE=Wistron Corp. + +usb:v0FB8p0002* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v0FB9* + ID_VENDOR_FROM_DATABASE=AACom Corp. + +usb:v0FBA* + ID_VENDOR_FROM_DATABASE=San Shing Electronics Co., Ltd + +usb:v0FBB* + ID_VENDOR_FROM_DATABASE=Bitwise Systems, Inc. + +usb:v0FC1* + ID_VENDOR_FROM_DATABASE=Mitac Internatinal Corp. + +usb:v0FC2* + ID_VENDOR_FROM_DATABASE=Plug and Jack Industrial, Inc. + +usb:v0FC5* + ID_VENDOR_FROM_DATABASE=Delcom Engineering + +usb:v0FC5p1222* + ID_MODEL_FROM_DATABASE=I/O Development Board + +usb:v0FC6* + ID_VENDOR_FROM_DATABASE=Dataplus Supplies, Inc. + +usb:v0FCA* + ID_VENDOR_FROM_DATABASE=Research In Motion, Ltd. + +usb:v0FCAp0001* + ID_MODEL_FROM_DATABASE=Blackberry Handheld + +usb:v0FCAp0004* + ID_MODEL_FROM_DATABASE=Blackberry Handheld + +usb:v0FCAp0006* + ID_MODEL_FROM_DATABASE=Blackberry Pearl + +usb:v0FCAp0008* + ID_MODEL_FROM_DATABASE=Blackberry Pearl + +usb:v0FCAp8001* + ID_MODEL_FROM_DATABASE=Blackberry Handheld + +usb:v0FCAp8004* + ID_MODEL_FROM_DATABASE=Blackberry Handheld + +usb:v0FCAp8007* + ID_MODEL_FROM_DATABASE=Blackberry Handheld + +usb:v0FCAp8010* + ID_MODEL_FROM_DATABASE=Blackberry Playbook (Connect to Windows mode) + +usb:v0FCAp8011* + ID_MODEL_FROM_DATABASE=Blackberry Playbook (Connect to Mac mode) + +usb:v0FCAp8020* + ID_MODEL_FROM_DATABASE=Blackberry Playbook (CD-Rom mode) + +usb:v0FCE* + ID_VENDOR_FROM_DATABASE=Sony Ericsson Mobile Communications AB + +usb:v0FCEp0076* + ID_MODEL_FROM_DATABASE=W910i (Multimedia mode) + +usb:v0FCEp00AF* + ID_MODEL_FROM_DATABASE=V640i Phone [PTP Camera] + +usb:v0FCEp00D4* + ID_MODEL_FROM_DATABASE=C902 [MTP] + +usb:v0FCEp00D9* + ID_MODEL_FROM_DATABASE=C702 Phone + +usb:v0FCEp0112* + ID_MODEL_FROM_DATABASE=W995 Walkman Phone + +usb:v0FCEp015A* + ID_MODEL_FROM_DATABASE=Xperia Pro [Media Transfer Protocol] + +usb:v0FCEp0166* + ID_MODEL_FROM_DATABASE=Xperia Mini Pro + +usb:v0FCEp0169* + ID_MODEL_FROM_DATABASE=Xperia S + +usb:v0FCEp0172* + ID_MODEL_FROM_DATABASE=Xperia P + +usb:v0FCEp0177* + ID_MODEL_FROM_DATABASE=Xperia Ion [Mass Storage] + +usb:v0FCEp0DDE* + ID_MODEL_FROM_DATABASE=Xperia Mini Pro Bootloader + +usb:v0FCEp1010* + ID_MODEL_FROM_DATABASE=WMC Modem + +usb:v0FCEp10AF* + ID_MODEL_FROM_DATABASE=V640i Phone [PictBridge] + +usb:v0FCEp10D4* + ID_MODEL_FROM_DATABASE=C902 Phone [PictBridge] + +usb:v0FCEp2105* + ID_MODEL_FROM_DATABASE=W715 Phone + +usb:v0FCEp2137* + ID_MODEL_FROM_DATABASE=Xperia X10 mini (USB debug) + +usb:v0FCEp2138* + ID_MODEL_FROM_DATABASE=Xperia X10 mini pro (Debug) + +usb:v0FCEp2149* + ID_MODEL_FROM_DATABASE=Xperia X8 (debug) + +usb:v0FCEp3137* + ID_MODEL_FROM_DATABASE=Xperia X10 mini + +usb:v0FCEp3138* + ID_MODEL_FROM_DATABASE=Xperia X10 mini pro + +usb:v0FCEp3149* + ID_MODEL_FROM_DATABASE=Xperia X8 + +usb:v0FCEp5177* + ID_MODEL_FROM_DATABASE=Xperia Ion [Debug Mode] + +usb:v0FCEp614F* + ID_MODEL_FROM_DATABASE=Xperia X12 (debug mode) + +usb:v0FCEp6166* + ID_MODEL_FROM_DATABASE=Xperia Mini Pro + +usb:v0FCEp715A* + ID_MODEL_FROM_DATABASE=Xperia Pro [Tethering] + +usb:v0FCEp7177* + ID_MODEL_FROM_DATABASE=Xperia Ion [Tethering] + +usb:v0FCEp8004* + ID_MODEL_FROM_DATABASE=9000 Phone [Mass Storage] + +usb:v0FCEpADDE* + ID_MODEL_FROM_DATABASE=Boot loader + +usb:v0FCEpD008* + ID_MODEL_FROM_DATABASE=V800-Vodafone 802SE Phone + +usb:v0FCEpD016* + ID_MODEL_FROM_DATABASE=K750i Phone + +usb:v0FCEpD017* + ID_MODEL_FROM_DATABASE=K608i Phone + +usb:v0FCEpD019* + ID_MODEL_FROM_DATABASE=VDC EGPRS Modem + +usb:v0FCEpD025* + ID_MODEL_FROM_DATABASE=520 WMC Data Modem + +usb:v0FCEpD028* + ID_MODEL_FROM_DATABASE=W800i + +usb:v0FCEpD038* + ID_MODEL_FROM_DATABASE=W850i Phone + +usb:v0FCEpD039* + ID_MODEL_FROM_DATABASE=K800i (phone mode) + +usb:v0FCEpD041* + ID_MODEL_FROM_DATABASE=K510i Phone + +usb:v0FCEpD042* + ID_MODEL_FROM_DATABASE=W810i Phone + +usb:v0FCEpD043* + ID_MODEL_FROM_DATABASE=V630i Phone + +usb:v0FCEpD046* + ID_MODEL_FROM_DATABASE=K610i Phone + +usb:v0FCEpD065* + ID_MODEL_FROM_DATABASE=W960i Phone (PC Suite) + +usb:v0FCEpD076* + ID_MODEL_FROM_DATABASE=W910i (Phone mode) + +usb:v0FCEpD089* + ID_MODEL_FROM_DATABASE=W580i Phone (mass storage) + +usb:v0FCEpD0A1* + ID_MODEL_FROM_DATABASE=K810 + +usb:v0FCEpD0AF* + ID_MODEL_FROM_DATABASE=V640i Phone + +usb:v0FCEpD0CF* + ID_MODEL_FROM_DATABASE=MD300 Mobile Broadband Modem + +usb:v0FCEpD0D4* + ID_MODEL_FROM_DATABASE=C902 Phone [Modem] + +usb:v0FCEpD0E1* + ID_MODEL_FROM_DATABASE=MD400 Mobile Broadband Modem + +usb:v0FCEpD12E* + ID_MODEL_FROM_DATABASE=Xperia X10 + +usb:v0FCEpE000* + ID_MODEL_FROM_DATABASE=K810 (PictBridge mode) + +usb:v0FCEpE039* + ID_MODEL_FROM_DATABASE=K800i (msc mode) + +usb:v0FCEpE042* + ID_MODEL_FROM_DATABASE=W810i Phone + +usb:v0FCEpE043* + ID_MODEL_FROM_DATABASE=V630i Phone [Mass Storage] + +usb:v0FCEpE075* + ID_MODEL_FROM_DATABASE=K850i + +usb:v0FCEpE076* + ID_MODEL_FROM_DATABASE=W910i (Mass storage) + +usb:v0FCEpE089* + ID_MODEL_FROM_DATABASE=W580i Phone + +usb:v0FCEpE090* + ID_MODEL_FROM_DATABASE=W200 Phone (Mass Storage) + +usb:v0FCEpE0A1* + ID_MODEL_FROM_DATABASE=K810 (Mass Storage mode) + +usb:v0FCEpE0A3* + ID_MODEL_FROM_DATABASE=W660i + +usb:v0FCEpE0AF* + ID_MODEL_FROM_DATABASE=V640i Phone [Mass Storage] + +usb:v0FCEpE0D4* + ID_MODEL_FROM_DATABASE=C902 Phone [Mass Storage] + +usb:v0FCEpE0EF* + ID_MODEL_FROM_DATABASE=C905 Phone [Mass Storage] + +usb:v0FCEpE0F3* + ID_MODEL_FROM_DATABASE=W595 + +usb:v0FCEpE105* + ID_MODEL_FROM_DATABASE=W705 + +usb:v0FCEpE112* + ID_MODEL_FROM_DATABASE=W995 Phone (Mass Storage) + +usb:v0FCEpE12E* + ID_MODEL_FROM_DATABASE=X10i Phone + +usb:v0FCEpE133* + ID_MODEL_FROM_DATABASE=Vivaz + +usb:v0FCEpE14F* + ID_MODEL_FROM_DATABASE=Xperia Arc/X12 + +usb:v0FCEpE15A* + ID_MODEL_FROM_DATABASE=Xperia Pro [Mass Storage Class] + +usb:v0FCEpE161* + ID_MODEL_FROM_DATABASE=Xperia Ray + +usb:v0FCEpE166* + ID_MODEL_FROM_DATABASE=Xperia Mini Pro + +usb:v0FCEpE167* + ID_MODEL_FROM_DATABASE=XPERIA mini + +usb:v0FCF* + ID_VENDOR_FROM_DATABASE=Dynastream Innovations, Inc. + +usb:v0FCFp1003* + ID_MODEL_FROM_DATABASE=ANT Development Board + +usb:v0FCFp1004* + ID_MODEL_FROM_DATABASE=ANT2USB + +usb:v0FCFp1006* + ID_MODEL_FROM_DATABASE=ANT Development Board + +usb:v0FCFp1008* + ID_MODEL_FROM_DATABASE=Mini stick Suunto + +usb:v0FD0* + ID_VENDOR_FROM_DATABASE=Tulip Computers B.V. + +usb:v0FD1* + ID_VENDOR_FROM_DATABASE=Giant Electronics Ltd. + +usb:v0FD4* + ID_VENDOR_FROM_DATABASE=Tenovis GmbH & Co., KG + +usb:v0FD5* + ID_VENDOR_FROM_DATABASE=Direct Access Technology, Inc. + +usb:v0FD9* + ID_VENDOR_FROM_DATABASE=Elgato Systems GmbH + +usb:v0FD9p0011* + ID_MODEL_FROM_DATABASE=EyeTV Diversity + +usb:v0FD9p0018* + ID_MODEL_FROM_DATABASE=EyeTV Hybrid + +usb:v0FD9p0020* + ID_MODEL_FROM_DATABASE=EyeTV DTT Deluxe + +usb:v0FD9p0021* + ID_MODEL_FROM_DATABASE=EyeTV DTT + +usb:v0FD9p002A* + ID_MODEL_FROM_DATABASE=EyeTV Sat + +usb:v0FD9p002C* + ID_MODEL_FROM_DATABASE=EyeTV DTT Deluxe v2 + +usb:v0FD9p0033* + ID_MODEL_FROM_DATABASE=Video Capture + +usb:v0FD9p0037* + ID_MODEL_FROM_DATABASE=Video Capture v2 + +usb:v0FDA* + ID_VENDOR_FROM_DATABASE=Quantec Networks GmbH + +usb:v0FDAp0100* + ID_MODEL_FROM_DATABASE=quanton flight control + +usb:v0FDC* + ID_VENDOR_FROM_DATABASE=Micro Plus + +usb:v0FE0* + ID_VENDOR_FROM_DATABASE=Osterhout Design Group + +usb:v0FE0p0100* + ID_MODEL_FROM_DATABASE=Bluetooth Mouse + +usb:v0FE0p0101* + ID_MODEL_FROM_DATABASE=Bluetooth IMU + +usb:v0FE0p0200* + ID_MODEL_FROM_DATABASE=Bluetooth Keypad + +usb:v0FE4* + ID_VENDOR_FROM_DATABASE=IN-Tech Electronics, Ltd + +usb:v0FE5* + ID_VENDOR_FROM_DATABASE=Greenconn (U.S.A.), Inc. + +usb:v0FE6* + ID_VENDOR_FROM_DATABASE=Kontron (Industrial Computer Source / ICS Advent) + +usb:v0FE6p8101* + ID_MODEL_FROM_DATABASE=DM9601 Fast Ethernet Adapter + +usb:v0FE6p811E* + ID_MODEL_FROM_DATABASE=Parallel Adapter + +usb:v0FE6p9700* + ID_MODEL_FROM_DATABASE=DM9601 Fast Ethernet Adapter + +usb:v0FE9* + ID_VENDOR_FROM_DATABASE=DVICO + +usb:v0FE9p4020* + ID_MODEL_FROM_DATABASE=TViX M-6500 + +usb:v0FE9pDB00* + ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T (MT352+LgZ201) (uninitialized) + +usb:v0FE9pDB01* + ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T (MT352+LgZ201) (initialized) + +usb:v0FE9pDB10* + ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T (MT352+Thomson7579) (uninitialized) + +usb:v0FE9pDB11* + ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T (MT352+Thomson7579) (initialized) + +usb:v0FE9pDB78* + ID_MODEL_FROM_DATABASE=FusionHDTV DVB-T Dual Digital 4 (ZL10353+xc2028/xc3028) (initialized) + +usb:v0FEA* + ID_VENDOR_FROM_DATABASE=United Computer Accessories + +usb:v0FEB* + ID_VENDOR_FROM_DATABASE=CRS Electronic Co., Ltd + +usb:v0FEC* + ID_VENDOR_FROM_DATABASE=UMC Electronics Co., Ltd + +usb:v0FED* + ID_VENDOR_FROM_DATABASE=Access Co., Ltd + +usb:v0FEE* + ID_VENDOR_FROM_DATABASE=Xsido Corp. + +usb:v0FEF* + ID_VENDOR_FROM_DATABASE=MJ Research, Inc. + +usb:v0FF6* + ID_VENDOR_FROM_DATABASE=Core Valley Co., Ltd + +usb:v0FF7* + ID_VENDOR_FROM_DATABASE=CHI SHING Computer Accessories Co., Ltd + +usb:v0FFC* + ID_VENDOR_FROM_DATABASE=Clavia DMI AB + +usb:v0FFCp0021* + ID_MODEL_FROM_DATABASE=Nord Stage 2 + +usb:v0FFF* + ID_VENDOR_FROM_DATABASE=Aopen, Inc. + +usb:v1000* + ID_VENDOR_FROM_DATABASE=Speed Tech Corp. + +usb:v1001* + ID_VENDOR_FROM_DATABASE=Ritronics Components (S) Pte., Ltd + +usb:v1003* + ID_VENDOR_FROM_DATABASE=Sigma Corp. + +usb:v1003p0003* + ID_MODEL_FROM_DATABASE=SD14 + +usb:v1003p0100* + ID_MODEL_FROM_DATABASE=SD9/SD10 + +usb:v1004* + ID_VENDOR_FROM_DATABASE=LG Electronics, Inc. + +usb:v1004p1FAE* + ID_MODEL_FROM_DATABASE=U8120 3G Cellphone + +usb:v1004p6000* + ID_MODEL_FROM_DATABASE=Various Mobile Phones + +usb:v1004p6005* + ID_MODEL_FROM_DATABASE=T5100 + +usb:v1004p6018* + ID_MODEL_FROM_DATABASE=GM360/GD510/GW520/KP501 + +usb:v1004p618E* + ID_MODEL_FROM_DATABASE=Ally/Optimus One/Vortex (debug mode) + +usb:v1004p618F* + ID_MODEL_FROM_DATABASE=Ally/Optimus One + +usb:v1004p61C6* + ID_MODEL_FROM_DATABASE=Vortex (msc) + +usb:v1004p61CC* + ID_MODEL_FROM_DATABASE=Optimus S + +usb:v1004p61FC* + ID_MODEL_FROM_DATABASE=Optimus 3 + +usb:v1004p6800* + ID_MODEL_FROM_DATABASE=CDMA Modem + +usb:v1004p7000* + ID_MODEL_FROM_DATABASE=LG LDP-7024D(LD)USB + +usb:v1004pA400* + ID_MODEL_FROM_DATABASE=Renoir (KC910) + +usb:v1005* + ID_VENDOR_FROM_DATABASE=Apacer Technology, Inc. + +usb:v1005p1001* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v1005p1004* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v1005p1006* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v1005pB113* + ID_MODEL_FROM_DATABASE=Handy Steno 2.0/HT203 + +usb:v1005pB223* + ID_MODEL_FROM_DATABASE=CD-RW + 6in1 Card Reader Digital Storage / Converter + +usb:v1006* + ID_VENDOR_FROM_DATABASE=iRiver, Ltd. + +usb:v1006p3001* + ID_MODEL_FROM_DATABASE=iHP-100 + +usb:v1006p3002* + ID_MODEL_FROM_DATABASE=iHP-120/140 MP3 Player + +usb:v1006p3003* + ID_MODEL_FROM_DATABASE=H320/H340 + +usb:v1006p3004* + ID_MODEL_FROM_DATABASE=H340 (mtp) + +usb:v1009* + ID_VENDOR_FROM_DATABASE=Emuzed, Inc. + +usb:v1009p000E* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v1009p0013* + ID_MODEL_FROM_DATABASE=Angel MPEG Device + +usb:v1009p0015* + ID_MODEL_FROM_DATABASE=Lumanate Wave PAL SECAM DVBT Device + +usb:v1009p0016* + ID_MODEL_FROM_DATABASE=Lumanate Wave NTSC/ATSC Combo Device + +usb:v100A* + ID_VENDOR_FROM_DATABASE=AV Chaseway, Ltd + +usb:v100Ap2402* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v100Ap2404* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v100Ap2405* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v100Ap2406* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v100ApA0C0* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v100B* + ID_VENDOR_FROM_DATABASE=Chou Chin Industrial Co., Ltd + +usb:v100D* + ID_VENDOR_FROM_DATABASE=Netopia, Inc. + +usb:v100Dp3342* + ID_MODEL_FROM_DATABASE=Cayman 3352 DSL Modem + +usb:v100Dp3382* + ID_MODEL_FROM_DATABASE=3380 Series Network Interface + +usb:v100Dp6072* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v100Dp9031* + ID_MODEL_FROM_DATABASE=Motorola 802.11n Dualband USB Wireless Adapter + +usb:v100Dp9032* + ID_MODEL_FROM_DATABASE=Motorola 802.11n 5G USB Wireless Adapter + +usb:v100DpCB01* + ID_MODEL_FROM_DATABASE=Cayman 3341 Ethernet DSL Router + +usb:v1010* + ID_VENDOR_FROM_DATABASE=Fukuda Denshi Co., Ltd + +usb:v1011* + ID_VENDOR_FROM_DATABASE=Mobile Media Tech. + +usb:v1011p0001* + ID_MODEL_FROM_DATABASE=AccFast Mp3 + +usb:v1012* + ID_VENDOR_FROM_DATABASE=SDKM Fibres, Wires & Cables Berhad + +usb:v1013* + ID_VENDOR_FROM_DATABASE=TST-Touchless Sensor Technology AG + +usb:v1014* + ID_VENDOR_FROM_DATABASE=Densitron Technologies PLC + +usb:v1015* + ID_VENDOR_FROM_DATABASE=Softronics Pty., Ltd + +usb:v1016* + ID_VENDOR_FROM_DATABASE=Xiamen Hung's Enterprise Co., Ltd + +usb:v1017* + ID_VENDOR_FROM_DATABASE=Speedy Industrial Supplies, Pte., Ltd + +usb:v1019* + ID_VENDOR_FROM_DATABASE=Elitegroup Computer Systems (ECS) + +usb:v1019p0C55* + ID_MODEL_FROM_DATABASE=Flash Reader, Desknote UCR-61S2B + +usb:v1019p0F38* + ID_MODEL_FROM_DATABASE=Infrared Receiver + +usb:v1020* + ID_VENDOR_FROM_DATABASE=Labtec + +usb:v1020p0006* + ID_MODEL_FROM_DATABASE=Wireless Keyboard + +usb:v1020p000A* + ID_MODEL_FROM_DATABASE=Wireless Optical Mouse + +usb:v1020p0106* + ID_MODEL_FROM_DATABASE=Wireless Optical Mouse + +usb:v1022* + ID_VENDOR_FROM_DATABASE=Shinko Shoji Co., Ltd + +usb:v1025* + ID_VENDOR_FROM_DATABASE=Hyper-Paltek + +usb:v1025p005E* + ID_MODEL_FROM_DATABASE=USB DVB-T device + +usb:v1025p005F* + ID_MODEL_FROM_DATABASE=USB DVB-T device + +usb:v1025p0300* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v1025p0350* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v1026* + ID_VENDOR_FROM_DATABASE=Newly Corp. + +usb:v1027* + ID_VENDOR_FROM_DATABASE=Time Domain + +usb:v1028* + ID_VENDOR_FROM_DATABASE=Inovys Corp. + +usb:v1029* + ID_VENDOR_FROM_DATABASE=Atlantic Coast Telesys + +usb:v102A* + ID_VENDOR_FROM_DATABASE=Ramos Technology Co., Ltd + +usb:v102B* + ID_VENDOR_FROM_DATABASE=Infotronic America, Inc. + +usb:v102C* + ID_VENDOR_FROM_DATABASE=Etoms Electronics Corp. + +usb:v102Cp6151* + ID_MODEL_FROM_DATABASE=Q-Cam Sangha CIF + +usb:v102Cp6251* + ID_MODEL_FROM_DATABASE=Q-Cam VGA + +usb:v102D* + ID_VENDOR_FROM_DATABASE=Winic Corp. + +usb:v1031* + ID_VENDOR_FROM_DATABASE=Comax Technology, Inc. + +usb:v1032* + ID_VENDOR_FROM_DATABASE=C-One Technology Corp. + +usb:v1033* + ID_VENDOR_FROM_DATABASE=Nucam Corp. + +usb:v1033p0068* + ID_MODEL_FROM_DATABASE=3,5'' HDD case MD-231 + +usb:v1038* + ID_VENDOR_FROM_DATABASE=Ideazon, Inc. + +usb:v1038p0100* + ID_MODEL_FROM_DATABASE=Zboard + +usb:v1039* + ID_VENDOR_FROM_DATABASE=devolo AG + +usb:v1039p0824* + ID_MODEL_FROM_DATABASE=1866 802.11bg [Texas Instruments TNETW1450] + +usb:v1039p2140* + ID_MODEL_FROM_DATABASE=dsl+ 1100 duo + +usb:v103D* + ID_VENDOR_FROM_DATABASE=Stanton + +usb:v103Dp0100* + ID_MODEL_FROM_DATABASE=ScratchAmp + +usb:v103Dp0101* + ID_MODEL_FROM_DATABASE=ScratchAmp + +usb:v1043* + ID_VENDOR_FROM_DATABASE=iCreate Technologies Corp. + +usb:v1043p160F* + ID_MODEL_FROM_DATABASE=Wireless Network Adapter + +usb:v1043p4901* + ID_MODEL_FROM_DATABASE=AV-836 Video Capture Device + +usb:v1043p8006* + ID_MODEL_FROM_DATABASE=Flash Disk 32-256 MB + +usb:v1043p8012* + ID_MODEL_FROM_DATABASE=Flash Disk 256 MB + +usb:v1044* + ID_VENDOR_FROM_DATABASE=Chu Yuen Enterprise Co., Ltd + +usb:v1044p7001* + ID_MODEL_FROM_DATABASE=Gigabyte U7000 DVB-T tuner + +usb:v1044p7002* + ID_MODEL_FROM_DATABASE=Gigabyte U8000 DVB-T tuner + +usb:v1044p7004* + ID_MODEL_FROM_DATABASE=Gigabyte U7100 DVB-T tuner + +usb:v1044p7005* + ID_MODEL_FROM_DATABASE=Gigabyte U7200 DVB-T tuner [AF9035] + +usb:v1044p7006* + ID_MODEL_FROM_DATABASE=Gigabyte U6000 DVB-T tuner [em2863] + +usb:v1044p8001* + ID_MODEL_FROM_DATABASE=GN-54G + +usb:v1044p8002* + ID_MODEL_FROM_DATABASE=GN-BR402W + +usb:v1044p8003* + ID_MODEL_FROM_DATABASE=GN-WLBM101 + +usb:v1044p8004* + ID_MODEL_FROM_DATABASE=GN-WLBZ101 802.11b Adapter + +usb:v1044p8005* + ID_MODEL_FROM_DATABASE=GN-WLBZ201 802.11b Adapter + +usb:v1044p8006* + ID_MODEL_FROM_DATABASE=GN-WBZB-M 802.11b Adapter + +usb:v1044p8007* + ID_MODEL_FROM_DATABASE=GN-WBKG + +usb:v1044p8008* + ID_MODEL_FROM_DATABASE=GN-WB01GS + +usb:v1044p800A* + ID_MODEL_FROM_DATABASE=GN-WI05GS + +usb:v1044p800B* + ID_MODEL_FROM_DATABASE=GN-WB30N 802.11n WLAN Card + +usb:v1044p800C* + ID_MODEL_FROM_DATABASE=GN-WB31N 802.11n USB WLAN Card + +usb:v1044p800D* + ID_MODEL_FROM_DATABASE=GN-WB32L 802.11n USB WLAN Card + +usb:v1046* + ID_VENDOR_FROM_DATABASE=Winbond Electronics Corp. [hex] + +usb:v1046p6694* + ID_MODEL_FROM_DATABASE=Generic W6694 USB + +usb:v1046p8901* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v1046p9967* + ID_MODEL_FROM_DATABASE=W9967CF/W9968CF Webcam IC + +usb:v1048* + ID_VENDOR_FROM_DATABASE=Targus Group International + +usb:v104B* + ID_VENDOR_FROM_DATABASE=Mylex / Buslogic + +usb:v104C* + ID_VENDOR_FROM_DATABASE=AMCO TEC International, Inc. + +usb:v104D* + ID_VENDOR_FROM_DATABASE=Newport Corporation + +usb:v104Dp1003* + ID_MODEL_FROM_DATABASE=Model-52 LED Light Source Power Supply and Driver + +usb:v104F* + ID_VENDOR_FROM_DATABASE=WB Electronics + +usb:v104Fp0001* + ID_MODEL_FROM_DATABASE=Infinity Phoenix + +usb:v104Fp0002* + ID_MODEL_FROM_DATABASE=Smartmouse + +usb:v104Fp0003* + ID_MODEL_FROM_DATABASE=FunProgrammer + +usb:v104Fp0004* + ID_MODEL_FROM_DATABASE=Infinity Unlimited + +usb:v104Fp0006* + ID_MODEL_FROM_DATABASE=Infinity Smart + +usb:v104Fp0007* + ID_MODEL_FROM_DATABASE=Infinity Smart module + +usb:v104Fp0008* + ID_MODEL_FROM_DATABASE=Infinity CryptoKey + +usb:v104Fp0009* + ID_MODEL_FROM_DATABASE=RE-BL PlayStation 3 IR-to-Bluetooth converter + +usb:v1050* + ID_VENDOR_FROM_DATABASE=Yubico.com + +usb:v1050p0010* + ID_MODEL_FROM_DATABASE=Yubikey + +usb:v1053* + ID_VENDOR_FROM_DATABASE=Immanuel Electronics Co., Ltd + +usb:v1054* + ID_VENDOR_FROM_DATABASE=BMS International Beheer N.V. + +usb:v1054p5004* + ID_MODEL_FROM_DATABASE=DSL 7420 Loader + +usb:v1054p5005* + ID_MODEL_FROM_DATABASE=DSL 7420 LAN Modem + +usb:v1055* + ID_VENDOR_FROM_DATABASE=Complex Micro Interconnection Co., Ltd + +usb:v1056* + ID_VENDOR_FROM_DATABASE=Hsin Chen Ent Co., Ltd + +usb:v1057* + ID_VENDOR_FROM_DATABASE=ON Semiconductor + +usb:v1058* + ID_VENDOR_FROM_DATABASE=Western Digital Technologies, Inc. + +usb:v1058p0200* + ID_MODEL_FROM_DATABASE=FireWire USB Combo + +usb:v1058p0400* + ID_MODEL_FROM_DATABASE=External HDD + +usb:v1058p0500* + ID_MODEL_FROM_DATABASE=hub + +usb:v1058p0702* + ID_MODEL_FROM_DATABASE=Passport External HDD + +usb:v1058p0704* + ID_MODEL_FROM_DATABASE=Passport External HDD + +usb:v1058p070A* + ID_MODEL_FROM_DATABASE=My Passport Essential SE + +usb:v1058p071A* + ID_MODEL_FROM_DATABASE=My Passport 1TB + +usb:v1058p0740* + ID_MODEL_FROM_DATABASE=My Passport + +usb:v1058p0742* + ID_MODEL_FROM_DATABASE=My Passport Essential SE + +usb:v1058p0748* + ID_MODEL_FROM_DATABASE=My Passport 1TB USB 3.0 + +usb:v1058p0900* + ID_MODEL_FROM_DATABASE=MyBook Essential External HDD + +usb:v1058p0901* + ID_MODEL_FROM_DATABASE=MyBook External HDD + +usb:v1058p0903* + ID_MODEL_FROM_DATABASE=My Book Premium Edition + +usb:v1058p0910* + ID_MODEL_FROM_DATABASE=MyBook Essential External HDD + +usb:v1058p1001* + ID_MODEL_FROM_DATABASE=External Hard Disk [Elements] + +usb:v1058p1003* + ID_MODEL_FROM_DATABASE=Elements 1000 GB + +usb:v1058p1010* + ID_MODEL_FROM_DATABASE=Elements External HDD + +usb:v1058p1021* + ID_MODEL_FROM_DATABASE=Elements 2TB + +usb:v1058p1023* + ID_MODEL_FROM_DATABASE=Elements SE + +usb:v1058p1103* + ID_MODEL_FROM_DATABASE=My Book Studio + +usb:v1058p1104* + ID_MODEL_FROM_DATABASE=MyBook Mirror Edition External HDD + +usb:v1058p1105* + ID_MODEL_FROM_DATABASE=My Book Studio II + +usb:v1058p1123* + ID_MODEL_FROM_DATABASE=My Book 3.0 + +usb:v1058p1140* + ID_MODEL_FROM_DATABASE=My Book Essential USB3.0 + +usb:v1059* + ID_VENDOR_FROM_DATABASE=Giesecke & Devrient GmbH + +usb:v1059p000B* + ID_MODEL_FROM_DATABASE=StarSign Bio Token 3.0 + +usb:v105C* + ID_VENDOR_FROM_DATABASE=Hong Ji Electric Wire & Cable (Dongguan) Co., Ltd + +usb:v105D* + ID_VENDOR_FROM_DATABASE=Delkin Devices, Inc. + +usb:v105E* + ID_VENDOR_FROM_DATABASE=Valence Semiconductor Design, Ltd + +usb:v105F* + ID_VENDOR_FROM_DATABASE=Chin Shong Enterprise Co., Ltd + +usb:v1060* + ID_VENDOR_FROM_DATABASE=Easthome Industrial Co., Ltd + +usb:v1063* + ID_VENDOR_FROM_DATABASE=Motorola Electronics Taiwan, Ltd [hex] + +usb:v1063p1555* + ID_MODEL_FROM_DATABASE=MC141555 Hub + +usb:v1063p4100* + ID_MODEL_FROM_DATABASE=SB4100 USB Cable Modem + +usb:v1065* + ID_VENDOR_FROM_DATABASE=CCYU Technology + +usb:v1065p0020* + ID_MODEL_FROM_DATABASE=USB-DVR2 Dev Board + +usb:v1065p2136* + ID_MODEL_FROM_DATABASE=EasyDisk ED1064 + +usb:v106A* + ID_VENDOR_FROM_DATABASE=Loyal Legend, Ltd + +usb:v106C* + ID_VENDOR_FROM_DATABASE=Curitel Communications, Inc. + +usb:v106Cp1101* + ID_MODEL_FROM_DATABASE=CDMA 2000 1xRTT USB modem (HX-550C) + +usb:v106Cp1102* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp1103* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp1104* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp1105* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v106Cp1106* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp1301* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v106Cp1302* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp1303* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp1304* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp1401* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v106Cp1402* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp1403* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp1501* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp1502* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp1503* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp1601* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp1602* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp1603* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp2101* + ID_MODEL_FROM_DATABASE=AudioVox 8900 Cell Phone + +usb:v106Cp2102* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp2103* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp2301* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp2302* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp2303* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp2401* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp2402* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp2403* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp2501* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp2502* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp2503* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp2601* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp2602* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp2603* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp3701* + ID_MODEL_FROM_DATABASE=Broadband Wireless modem + +usb:v106Cp3702* + ID_MODEL_FROM_DATABASE=Pantech PX-500 + +usb:v106Cp3714* + ID_MODEL_FROM_DATABASE=PANTECH USB MODEM [UM175] + +usb:v106Cp3716* + ID_MODEL_FROM_DATABASE=UMW190 Modem + +usb:v106Cp3721* + ID_MODEL_FROM_DATABASE=Option Beemo (GI0801) LTE surfstick + +usb:v106Cp3B14* + ID_MODEL_FROM_DATABASE=Option Beemo (GI0801) LTE surfstick + +usb:v106Cp3EB4* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp4101* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp4102* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp4301* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v106Cp4302* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp4401* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v106Cp4402* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp4501* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp4502* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp4601* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v106Cp4602* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp5101* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp5102* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp5301* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp5302* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp5401* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp5402* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp5501* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp5502* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp5601* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106Cp5602* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106Cp7101* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v106Cp7102* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106CpA000* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106CpA001* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106CpC100* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106CpC200* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106CpC500* + ID_MODEL_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) + +usb:v106CpE200* + ID_MODEL_FROM_DATABASE=Packet Service + +usb:v106D* + ID_VENDOR_FROM_DATABASE=San Chieh Manufacturing, Ltd + +usb:v106E* + ID_VENDOR_FROM_DATABASE=ConectL + +usb:v106F* + ID_VENDOR_FROM_DATABASE=Money Controls + +usb:v106Fp0009* + ID_MODEL_FROM_DATABASE=CT10x Coin Transaction + +usb:v106Fp000A* + ID_MODEL_FROM_DATABASE=CR10x Coin Recycler + +usb:v1076* + ID_VENDOR_FROM_DATABASE=GCT Semiconductor, Inc. + +usb:v1076p0031* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v1076p0032* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v107B* + ID_VENDOR_FROM_DATABASE=Gateway, Inc. + +usb:v107Bp3009* + ID_MODEL_FROM_DATABASE=eHome Infrared Transceiver + +usb:v107Bp55B2* + ID_MODEL_FROM_DATABASE=WBU-110 802.11b Wireless Adapter [Intersil PRISM 3] + +usb:v107Bp55F2* + ID_MODEL_FROM_DATABASE=WGU-210 802.11g Adapter [Intersil ISL3886] + +usb:v107D* + ID_VENDOR_FROM_DATABASE=Arlec Australia, Ltd + +usb:v107E* + ID_VENDOR_FROM_DATABASE=Midoriya Electric Co., Ltd + +usb:v107F* + ID_VENDOR_FROM_DATABASE=KidzMouse, Inc. + +usb:v1082* + ID_VENDOR_FROM_DATABASE=Shin-Etsukaken Co., Ltd + +usb:v1083* + ID_VENDOR_FROM_DATABASE=Canon Electronics, Inc. + +usb:v1083p162C* + ID_MODEL_FROM_DATABASE=P-150 Scanner + +usb:v1084* + ID_VENDOR_FROM_DATABASE=Pantech Co., Ltd + +usb:v108A* + ID_VENDOR_FROM_DATABASE=Chloride Power Protection + +usb:v108B* + ID_VENDOR_FROM_DATABASE=Grand-tek Technology Co., Ltd + +usb:v108C* + ID_VENDOR_FROM_DATABASE=Robert Bosch GmbH + +usb:v108E* + ID_VENDOR_FROM_DATABASE=Lotes Co., Ltd. + +usb:v1099* + ID_VENDOR_FROM_DATABASE=Surface Optics Corp. + +usb:v109A* + ID_VENDOR_FROM_DATABASE=DATASOFT Systems GmbH + +usb:v109F* + ID_VENDOR_FROM_DATABASE=eSOL Co., Ltd + +usb:v109Fp3163* + ID_MODEL_FROM_DATABASE=Trigem Mobile SmartDisplay84 + +usb:v109Fp3164* + ID_MODEL_FROM_DATABASE=Trigem Mobile SmartDisplay121 + +usb:v10A0* + ID_VENDOR_FROM_DATABASE=Hirotech, Inc. + +usb:v10A3* + ID_VENDOR_FROM_DATABASE=Mitsubishi Materials Corp. + +usb:v10A9* + ID_VENDOR_FROM_DATABASE=SK Teletech Co., Ltd + +usb:v10A9p1102* + ID_MODEL_FROM_DATABASE=Sky Love Actually IM-U460K + +usb:v10A9p1104* + ID_MODEL_FROM_DATABASE=Sky Vega IM-A650S + +usb:v10A9p6021* + ID_MODEL_FROM_DATABASE=SIRIUS alpha + +usb:v10AA* + ID_VENDOR_FROM_DATABASE=Cables To Go + +usb:v10AB* + ID_VENDOR_FROM_DATABASE=USI Co., Ltd + +usb:v10ABp1002* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v10ABp1003* + ID_MODEL_FROM_DATABASE=BC02-EXT in DFU + +usb:v10ABp1005* + ID_MODEL_FROM_DATABASE=Bluetooth Adptr + +usb:v10ABp1006* + ID_MODEL_FROM_DATABASE=BC04-EXT in DFU + +usb:v10ABp10C5* + ID_MODEL_FROM_DATABASE=Sony-Ericsson / Samsung DataCable + +usb:v10AC* + ID_VENDOR_FROM_DATABASE=Honeywell, Inc. + +usb:v10AE* + ID_VENDOR_FROM_DATABASE=Princeton Technology Corp. + +usb:v10AF* + ID_VENDOR_FROM_DATABASE=Liebert Corp. + +usb:v10AFp0000* + ID_MODEL_FROM_DATABASE=UPS + +usb:v10AFp0001* + ID_MODEL_FROM_DATABASE=PowerSure PSA UPS + +usb:v10AFp0002* + ID_MODEL_FROM_DATABASE=PowerSure PST UPS + +usb:v10AFp0003* + ID_MODEL_FROM_DATABASE=PowerSure PSP UPS + +usb:v10AFp0004* + ID_MODEL_FROM_DATABASE=PowerSure PSI UPS + +usb:v10AFp0005* + ID_MODEL_FROM_DATABASE=UPStation GXT 2U UPS + +usb:v10AFp0006* + ID_MODEL_FROM_DATABASE=UPStation GXT UPS + +usb:v10AFp0007* + ID_MODEL_FROM_DATABASE=Nfinity Power Systems UPS + +usb:v10AFp0008* + ID_MODEL_FROM_DATABASE=PowerSure Interactive UPS + +usb:v10B5* + ID_VENDOR_FROM_DATABASE=Comodo (PLX?) + +usb:v10B5p9060* + ID_MODEL_FROM_DATABASE=Test Board + +usb:v10B8* + ID_VENDOR_FROM_DATABASE=DiBcom + +usb:v10B8p0BB8* + ID_MODEL_FROM_DATABASE=DiBcom USB DVB-T reference design (MOD300) (cold) + +usb:v10B8p0BB9* + ID_MODEL_FROM_DATABASE=DiBcom USB DVB-T reference design (MOD300) (warm) + +usb:v10B8p0BC6* + ID_MODEL_FROM_DATABASE=DiBcom USB2.0 DVB-T reference design (MOD3000P) (cold) + +usb:v10B8p0BC7* + ID_MODEL_FROM_DATABASE=DiBcom USB2.0 DVB-T reference design (MOD3000P) (warm) + +usb:v10BB* + ID_VENDOR_FROM_DATABASE=TM Technology, Inc. + +usb:v10BC* + ID_VENDOR_FROM_DATABASE=Dinging Technology Co., Ltd + +usb:v10BD* + ID_VENDOR_FROM_DATABASE=TMT Technology, Inc. + +usb:v10BDp1427* + ID_MODEL_FROM_DATABASE=Ethernet + +usb:v10BF* + ID_VENDOR_FROM_DATABASE=SmartHome + +usb:v10BFp0001* + ID_MODEL_FROM_DATABASE=SmartHome PowerLinc + +usb:v10C4* + ID_VENDOR_FROM_DATABASE=Cygnal Integrated Products, Inc. + +usb:v10C4p0002* + ID_MODEL_FROM_DATABASE=F32x USBXpress Device + +usb:v10C4p0003* + ID_MODEL_FROM_DATABASE=CommandIR + +usb:v10C4p8030* + ID_MODEL_FROM_DATABASE=K4JRG Ham Radio devices + +usb:v10C4p8044* + ID_MODEL_FROM_DATABASE=USB Debug Adapter + +usb:v10C4p804E* + ID_MODEL_FROM_DATABASE=Software Bisque Paramount ME + +usb:v10C4p80A9* + ID_MODEL_FROM_DATABASE=CP210x to UART Bridge Controller + +usb:v10C4p80CA* + ID_MODEL_FROM_DATABASE=ATM2400 Sensor Device + +usb:v10C4p813F* + ID_MODEL_FROM_DATABASE=tams EasyControl + +usb:v10C4p8149* + ID_MODEL_FROM_DATABASE=West Mountain Radio Computerized Battery Analyzer + +usb:v10C4p814A* + ID_MODEL_FROM_DATABASE=West Mountain Radio RIGblaster P&P + +usb:v10C4p814B* + ID_MODEL_FROM_DATABASE=West Mountain Radio RIGtalk + +usb:v10C4p818A* + ID_MODEL_FROM_DATABASE=Silicon Labs FM Radio Reference Design + +usb:v10C4p81E8* + ID_MODEL_FROM_DATABASE=Zephyr BioHarness + +usb:v10C4p8460* + ID_MODEL_FROM_DATABASE=Sangoma Wanpipe VoiceTime + +usb:v10C4p8461* + ID_MODEL_FROM_DATABASE=Sangoma U100 + +usb:v10C4p8477* + ID_MODEL_FROM_DATABASE=Balluff RFID Reader + +usb:v10C4p8605* + ID_MODEL_FROM_DATABASE=dilitronics ESoLUX solar lighting controller + +usb:v10C4p86BC* + ID_MODEL_FROM_DATABASE=C8051F34x AudioDelay [AD-340] + +usb:v10C4p8789* + ID_MODEL_FROM_DATABASE=C8051F34x Extender & EDID MGR [EMX-DVI] + +usb:v10C4p87BE* + ID_MODEL_FROM_DATABASE=C8051F34x HDMI Audio Extractor [EMX-HD-AUD] + +usb:v10C4p8863* + ID_MODEL_FROM_DATABASE=C8051F34x Bootloader + +usb:v10C4pEA60* + ID_MODEL_FROM_DATABASE=CP210x UART Bridge / myAVR mySmartUSB light + +usb:v10C4pEA61* + ID_MODEL_FROM_DATABASE=CP210x UART Bridge + +usb:v10C4pEA70* + ID_MODEL_FROM_DATABASE=CP210x UART Bridge + +usb:v10C4pEA80* + ID_MODEL_FROM_DATABASE=CP210x UART Bridge + +usb:v10C5* + ID_VENDOR_FROM_DATABASE=Sanei Electric, Inc. + +usb:v10C5p819A* + ID_MODEL_FROM_DATABASE=FM Radio + +usb:v10C6* + ID_VENDOR_FROM_DATABASE=Intec, Inc. + +usb:v10CB* + ID_VENDOR_FROM_DATABASE=Eratech + +usb:v10CC* + ID_VENDOR_FROM_DATABASE=GBM Connector Co., Ltd + +usb:v10CCp1101* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v10CD* + ID_VENDOR_FROM_DATABASE=Kycon, Inc. + +usb:v10CE* + ID_VENDOR_FROM_DATABASE=Silicon Labs + +usb:v10CEpEA6A* + ID_MODEL_FROM_DATABASE=MobiData EDGE USB Modem + +usb:v10CF* + ID_VENDOR_FROM_DATABASE=Velleman Components, Inc. + +usb:v10CFp2011* + ID_MODEL_FROM_DATABASE=R-Engine MPEG2 encoder/decoder + +usb:v10CFp5500* + ID_MODEL_FROM_DATABASE=8055 Experiment Interface Board (address=0) + +usb:v10CFp5501* + ID_MODEL_FROM_DATABASE=8055 Experiment Interface Board (address=1) + +usb:v10CFp5502* + ID_MODEL_FROM_DATABASE=8055 Experiment Interface Board (address=2) + +usb:v10CFp5503* + ID_MODEL_FROM_DATABASE=8055 Experiment Interface Board (address=3) + +usb:v10D1* + ID_VENDOR_FROM_DATABASE=Hottinger Baldwin Measurement + +usb:v10D1p0101* + ID_MODEL_FROM_DATABASE=USB-Module for Spider8, CP32 + +usb:v10D1p0202* + ID_MODEL_FROM_DATABASE=CP22 - Communication Processor + +usb:v10D1p0301* + ID_MODEL_FROM_DATABASE=CP42 - Communication Processor + +usb:v10D4* + ID_VENDOR_FROM_DATABASE=Man Boon Manufactory, Ltd + +usb:v10D5* + ID_VENDOR_FROM_DATABASE=Uni Class Technology Co., Ltd + +usb:v10D5p5552* + ID_MODEL_FROM_DATABASE=KVM Human Interface Composite Device (Keyboard/Mouse ports) + +usb:v10D5p55A2* + ID_MODEL_FROM_DATABASE=2Port KVMSwitcher + +usb:v10D6* + ID_VENDOR_FROM_DATABASE=Actions Semiconductor Co., Ltd + +usb:v10D6p1000* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v10D6p1100* + ID_MODEL_FROM_DATABASE=MPMan MP-Ki 128 MP3 Player/Recorder + +usb:v10D6p1101* + ID_MODEL_FROM_DATABASE=D-Wave 2GB MP4 Player / AK1025 MP3/MP4 Player + +usb:v10D6p2200* + ID_MODEL_FROM_DATABASE=Acer MP-120 MP3 player + +usb:v10D6p8888* + ID_MODEL_FROM_DATABASE=ADFU Device + +usb:v10D6pFF51* + ID_MODEL_FROM_DATABASE=ADFU Device + +usb:v10D6pFF61* + ID_MODEL_FROM_DATABASE=MP4 Player + +usb:v10D6pFF66* + ID_MODEL_FROM_DATABASE=Craig 2GB MP3/Video Player + +usb:v10DE* + ID_VENDOR_FROM_DATABASE=Authenex, Inc. + +usb:v10DF* + ID_VENDOR_FROM_DATABASE=In-Win Development, Inc. + +usb:v10DFp0500* + ID_MODEL_FROM_DATABASE=iAPP CR-e500 Card reader + +usb:v10E0* + ID_VENDOR_FROM_DATABASE=Post-Op Video, Inc. + +usb:v10E1* + ID_VENDOR_FROM_DATABASE=CablePlus, Ltd + +usb:v10E2* + ID_VENDOR_FROM_DATABASE=Nada Electronics, Ltd + +usb:v10EC* + ID_VENDOR_FROM_DATABASE=Vast Technologies, Inc. + +usb:v10F0* + ID_VENDOR_FROM_DATABASE=Nexio Co., Ltd + +usb:v10F0p2002* + ID_MODEL_FROM_DATABASE=iNexio Touchscreen controller + +usb:v10F1* + ID_VENDOR_FROM_DATABASE=Importek + +usb:v10F1p1A08* + ID_MODEL_FROM_DATABASE=Internal Webcam + +usb:v10F1p1A1E* + ID_MODEL_FROM_DATABASE=Laptop Integrated Webcam 1.3M + +usb:v10F1p1A2A* + ID_MODEL_FROM_DATABASE=Laptop Integrated Webcam + +usb:v10F5* + ID_VENDOR_FROM_DATABASE=Turtle Beach + +usb:v10F5p0200* + ID_MODEL_FROM_DATABASE=Audio Advantage Roadie + +usb:v10FB* + ID_VENDOR_FROM_DATABASE=Pictos Technologies, Inc. + +usb:v10FD* + ID_VENDOR_FROM_DATABASE=Anubis Electronics, Ltd + +usb:v10FDp7E50* + ID_MODEL_FROM_DATABASE=FlyCam Usb 100 + +usb:v10FDp804D* + ID_MODEL_FROM_DATABASE=Typhoon Webshot II Webcam [zc0301] + +usb:v10FDp8050* + ID_MODEL_FROM_DATABASE=FlyCAM-USB 300 XP2 + +usb:v10FDpDE00* + ID_MODEL_FROM_DATABASE=WinFast WalkieTV WDM Capture Driver. + +usb:v10FE* + ID_VENDOR_FROM_DATABASE=Thrane & Thrane + +usb:v10FEp000C* + ID_MODEL_FROM_DATABASE=TT-3750 BGAN-XL Radio Module + +usb:v1100* + ID_VENDOR_FROM_DATABASE=VirTouch, Ltd + +usb:v1100p0001* + ID_MODEL_FROM_DATABASE=VTPlayer VTP-1 Braille Mouse + +usb:v1101* + ID_VENDOR_FROM_DATABASE=EasyPass Industrial Co., Ltd + +usb:v1101p0001* + ID_MODEL_FROM_DATABASE=FSK Electronics Super GSM Reader + +usb:v1108* + ID_VENDOR_FROM_DATABASE=Brightcom Technologies, Ltd + +usb:v110A* + ID_VENDOR_FROM_DATABASE=Moxa Technologies Co., Ltd. + +usb:v110Ap1250* + ID_MODEL_FROM_DATABASE=UPort 1250 2-Port RS-232/422/485 + +usb:v110Ap1251* + ID_MODEL_FROM_DATABASE=UPort 1250I 2-Port RS-232/422/485 with Isolation + +usb:v110Ap1410* + ID_MODEL_FROM_DATABASE=UPort 1410 4-Port RS-232 + +usb:v110Ap1450* + ID_MODEL_FROM_DATABASE=UPort 1450 4-Port RS-232/422/485 + +usb:v110Ap1451* + ID_MODEL_FROM_DATABASE=UPort 1450I 4-Port RS-232/422/485 with Isolation + +usb:v110Ap1613* + ID_MODEL_FROM_DATABASE=UPort 1610-16 16-Port RS-232 + +usb:v110Ap1618* + ID_MODEL_FROM_DATABASE=UPort 1610-8 8-Port RS-232 + +usb:v110Ap1653* + ID_MODEL_FROM_DATABASE=UPort 1650-16 16-Port RS-232/422/485 + +usb:v110Ap1658* + ID_MODEL_FROM_DATABASE=UPort 1650-8 8-Port RS-232/422/485 + +usb:v1110* + ID_VENDOR_FROM_DATABASE=Analog Devices Canada, Ltd (Allied Telesyn) + +usb:v1110p5C01* + ID_MODEL_FROM_DATABASE=Huawei MT-882 Remote NDIS Network Device + +usb:v1110p6489* + ID_MODEL_FROM_DATABASE=ADSL ETH/USB RTR + +usb:v1110p9000* + ID_MODEL_FROM_DATABASE=ADSL LAN Adapter + +usb:v1110p9001* + ID_MODEL_FROM_DATABASE=ADSL Loader + +usb:v1110p900F* + ID_MODEL_FROM_DATABASE=AT-AR215 DSL Modem + +usb:v1110p9010* + ID_MODEL_FROM_DATABASE=AT-AR215 DSL Modem + +usb:v1110p9021* + ID_MODEL_FROM_DATABASE=ADSL WAN Adapter + +usb:v1110p9022* + ID_MODEL_FROM_DATABASE=ADSL Loader + +usb:v1110p9023* + ID_MODEL_FROM_DATABASE=ADSL WAN Adapter + +usb:v1110p9024* + ID_MODEL_FROM_DATABASE=ADSL Loader + +usb:v1110p9031* + ID_MODEL_FROM_DATABASE=ADSL LAN Adapter + +usb:v1110p9032* + ID_MODEL_FROM_DATABASE=ADSL Loader + +usb:v1111* + ID_VENDOR_FROM_DATABASE=Pandora International Ltd. + +usb:v1111p8888* + ID_MODEL_FROM_DATABASE=Evolution Device + +usb:v1112* + ID_VENDOR_FROM_DATABASE=YM ELECTRIC CO., Ltd + +usb:v1113* + ID_VENDOR_FROM_DATABASE=Medion AG + +usb:v1113pA0A2* + ID_MODEL_FROM_DATABASE=Active Sync device + +usb:v111E* + ID_VENDOR_FROM_DATABASE=VSO Electric Co., Ltd + +usb:v112A* + ID_VENDOR_FROM_DATABASE=RedRat + +usb:v112Ap0001* + ID_MODEL_FROM_DATABASE=RedRat3 IR Transceiver + +usb:v112Ap0005* + ID_MODEL_FROM_DATABASE=RedRat3II IR Transceiver + +usb:v112E* + ID_VENDOR_FROM_DATABASE=Master Hill Electric Wire and Cable Co., Ltd + +usb:v112F* + ID_VENDOR_FROM_DATABASE=Cellon International, Inc. + +usb:v1130* + ID_VENDOR_FROM_DATABASE=Tenx Technology, Inc. + +usb:v1130p0002* + ID_MODEL_FROM_DATABASE=iBuddy + +usb:v1130p0202* + ID_MODEL_FROM_DATABASE=Rocket Launcher + +usb:v1130p6604* + ID_MODEL_FROM_DATABASE=MCE IR-Receiver + +usb:v1130p660C* + ID_MODEL_FROM_DATABASE=Foot Pedal/Thermometer + +usb:v1130p6806* + ID_MODEL_FROM_DATABASE=Keychain photo frame + +usb:v1130pC301* + ID_MODEL_FROM_DATABASE=Digital Photo viewer [Wallet Pix] + +usb:v1130pF211* + ID_MODEL_FROM_DATABASE=TP6911 Audio Headset + +usb:v1131* + ID_VENDOR_FROM_DATABASE=Integrated System Solution Corp. + +usb:v1131p1001* + ID_MODEL_FROM_DATABASE=KY-BT100 Bluetooth Adapter + +usb:v1131p1002* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v1131p1003* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v1131p1004* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v1132* + ID_VENDOR_FROM_DATABASE=Toshiba Corp., Digital Media Equipment [hex] + +usb:v1132p4331* + ID_MODEL_FROM_DATABASE=PDR-M4/M5/M70 Digital Camera + +usb:v1132p4332* + ID_MODEL_FROM_DATABASE=PDR-M60 Digital Camera + +usb:v1132p4333* + ID_MODEL_FROM_DATABASE=PDR-M2300/PDR-M700 + +usb:v1132p4334* + ID_MODEL_FROM_DATABASE=PDR-M65 + +usb:v1132p4335* + ID_MODEL_FROM_DATABASE=PDR-M61 + +usb:v1132p4337* + ID_MODEL_FROM_DATABASE=PDR-M11 + +usb:v1132p4338* + ID_MODEL_FROM_DATABASE=PDR-M25 + +usb:v1136* + ID_VENDOR_FROM_DATABASE=CTS Electronincs + +usb:v1136p3131* + ID_MODEL_FROM_DATABASE=CTS LS515 + +usb:v113C* + ID_VENDOR_FROM_DATABASE=Arin Tech Co., Ltd + +usb:v113D* + ID_VENDOR_FROM_DATABASE=Mapower Electronics Co., Ltd + +usb:v1141* + ID_VENDOR_FROM_DATABASE=V One Multimedia, Pte., Ltd + +usb:v1142* + ID_VENDOR_FROM_DATABASE=CyberScan Technologies, Inc. + +usb:v1145* + ID_VENDOR_FROM_DATABASE=Japan Radio Company + +usb:v1145p0001* + ID_MODEL_FROM_DATABASE=AirH PHONE AH-J3001V/J3002V + +usb:v1146* + ID_VENDOR_FROM_DATABASE=Shimane SANYO Electric Co., Ltd. + +usb:v1147* + ID_VENDOR_FROM_DATABASE=Ever Great Electric Wire and Cable Co., Ltd + +usb:v114B* + ID_VENDOR_FROM_DATABASE=Sphairon Access Systems GmbH + +usb:v114Bp0110* + ID_MODEL_FROM_DATABASE=Turbolink UB801R WLAN Adapter + +usb:v114Bp0150* + ID_MODEL_FROM_DATABASE=Turbolink UB801RE Wireless 802.11g 54Mbps Network Adapter [RTL8187] + +usb:v114C* + ID_VENDOR_FROM_DATABASE=Tinius Olsen Testing Machine Co., Inc. + +usb:v114D* + ID_VENDOR_FROM_DATABASE=Alpha Imaging Technology Corp. + +usb:v114F* + ID_VENDOR_FROM_DATABASE=Wavecom + +usb:v115B* + ID_VENDOR_FROM_DATABASE=Salix Technology Co., Ltd. + +usb:v1162* + ID_VENDOR_FROM_DATABASE=Secugen Corp. + +usb:v1163* + ID_VENDOR_FROM_DATABASE=DeLorme Publishing, Inc. + +usb:v1163p0100* + ID_MODEL_FROM_DATABASE=Earthmate GPS (orig) + +usb:v1163p0200* + ID_MODEL_FROM_DATABASE=Earthmate GPS (LT-20, LT-40) + +usb:v1163p2020* + ID_MODEL_FROM_DATABASE=Earthmate GPS (PN-40) + +usb:v1164* + ID_VENDOR_FROM_DATABASE=YUAN High-Tech Development Co., Ltd + +usb:v1164p0300* + ID_MODEL_FROM_DATABASE=ELSAVISION 460D + +usb:v1164p0601* + ID_MODEL_FROM_DATABASE=Analog TV Tuner + +usb:v1164p0900* + ID_MODEL_FROM_DATABASE=TigerBird BMP837 USB2.0 WDM Encoder + +usb:v1164p0BC7* + ID_MODEL_FROM_DATABASE=Digital TV Tuner + +usb:v1164p521B* + ID_MODEL_FROM_DATABASE=MC521A mini Card ATSC Tuner + +usb:v1164p6601* + ID_MODEL_FROM_DATABASE=Digital TV Tuner Card [RTL2832U] + +usb:v1165* + ID_VENDOR_FROM_DATABASE=Telson Electronics Co., Ltd + +usb:v1166* + ID_VENDOR_FROM_DATABASE=Bantam Interactive Technologies + +usb:v1167* + ID_VENDOR_FROM_DATABASE=Salient Systems Corp. + +usb:v1168* + ID_VENDOR_FROM_DATABASE=BizConn International Corp. + +usb:v116E* + ID_VENDOR_FROM_DATABASE=Gigastorage Corp. + +usb:v116F* + ID_VENDOR_FROM_DATABASE=Silicon 10 Technology Corp. + +usb:v116Fp0005* + ID_MODEL_FROM_DATABASE=Flash Card Reader + +usb:v116FpC108* + ID_MODEL_FROM_DATABASE=Flash Card Reader + +usb:v116FpC109* + ID_MODEL_FROM_DATABASE=Flash Card Reader + +usb:v1175* + ID_VENDOR_FROM_DATABASE=Shengyih Steel Mold Co., Ltd + +usb:v117D* + ID_VENDOR_FROM_DATABASE=Santa Electronic, Inc. + +usb:v117E* + ID_VENDOR_FROM_DATABASE=JNC, Inc. + +usb:v1182* + ID_VENDOR_FROM_DATABASE=Venture Corp., Ltd + +usb:v1183* + ID_VENDOR_FROM_DATABASE=Compaq Computer Corp. [hex] (Digital Dream ??) + +usb:v1183p0001* + ID_MODEL_FROM_DATABASE=DigitalDream l'espion XS + +usb:v1183p19C7* + ID_MODEL_FROM_DATABASE=ISDN TA + +usb:v1183p4008* + ID_MODEL_FROM_DATABASE=56k FaxModem + +usb:v1183p504A* + ID_MODEL_FROM_DATABASE=PJB-100 Personal Jukebox + +usb:v1184* + ID_VENDOR_FROM_DATABASE=Kyocera Elco Corp. + +usb:v1188* + ID_VENDOR_FROM_DATABASE=Bloomberg L.P. + +usb:v1189* + ID_VENDOR_FROM_DATABASE=Acer Communications & Multimedia + +usb:v1189p0893* + ID_MODEL_FROM_DATABASE=EP-1427X-2 Ethernet Adapter [Acer] + +usb:v118F* + ID_VENDOR_FROM_DATABASE=You Yang Technology Co., Ltd + +usb:v1190* + ID_VENDOR_FROM_DATABASE=Tripace + +usb:v1191* + ID_VENDOR_FROM_DATABASE=Loyalty Founder Enterprise Co., Ltd + +usb:v1196* + ID_VENDOR_FROM_DATABASE=Yankee Robotics, LLC + +usb:v1196p0010* + ID_MODEL_FROM_DATABASE=Trifid Camera without code + +usb:v1196p0011* + ID_MODEL_FROM_DATABASE=Trifid Camera + +usb:v1197* + ID_VENDOR_FROM_DATABASE=Technoimagia Co., Ltd + +usb:v1198* + ID_VENDOR_FROM_DATABASE=StarShine Technology Corp. + +usb:v1199* + ID_VENDOR_FROM_DATABASE=Sierra Wireless, Inc. + +usb:v1199p0019* + ID_MODEL_FROM_DATABASE=AC595U + +usb:v1199p0021* + ID_MODEL_FROM_DATABASE=AC597E + +usb:v1199p0024* + ID_MODEL_FROM_DATABASE=MC5727 CDMA modem + +usb:v1199p0110* + ID_MODEL_FROM_DATABASE=Composite Device + +usb:v1199p0112* + ID_MODEL_FROM_DATABASE=CDMA 1xEVDO PC Card, AirCard 580 + +usb:v1199p0120* + ID_MODEL_FROM_DATABASE=AC595U + +usb:v1199p0218* + ID_MODEL_FROM_DATABASE=MC5720 Wireless Modem + +usb:v1199p6467* + ID_MODEL_FROM_DATABASE=MP Series Network Adapter + +usb:v1199p6468* + ID_MODEL_FROM_DATABASE=MP Series Network Adapter + +usb:v1199p6469* + ID_MODEL_FROM_DATABASE=MP Series Network Adapter + +usb:v1199p6802* + ID_MODEL_FROM_DATABASE=MC8755 Device + +usb:v1199p6803* + ID_MODEL_FROM_DATABASE=MC8765 Device + +usb:v1199p6804* + ID_MODEL_FROM_DATABASE=MC8755 Device + +usb:v1199p6805* + ID_MODEL_FROM_DATABASE=MC8765 Device + +usb:v1199p6812* + ID_MODEL_FROM_DATABASE=MC8775 Device + +usb:v1199p6820* + ID_MODEL_FROM_DATABASE=AC875 Device + +usb:v1199p6832* + ID_MODEL_FROM_DATABASE=MC8780 Device + +usb:v1199p6833* + ID_MODEL_FROM_DATABASE=MC8781 Device + +usb:v1199p683A* + ID_MODEL_FROM_DATABASE=MC8785 Device + +usb:v1199p683C* + ID_MODEL_FROM_DATABASE=MC8790 Device + +usb:v1199p6850* + ID_MODEL_FROM_DATABASE=AirCard 880 Device + +usb:v1199p6851* + ID_MODEL_FROM_DATABASE=AirCard 881 Device + +usb:v1199p6852* + ID_MODEL_FROM_DATABASE=AirCard 880E Device + +usb:v1199p6853* + ID_MODEL_FROM_DATABASE=AirCard 881E Device + +usb:v1199p6854* + ID_MODEL_FROM_DATABASE=AirCard 885 Device + +usb:v1199p6856* + ID_MODEL_FROM_DATABASE=ATT "USB Connect 881" + +usb:v1199p6870* + ID_MODEL_FROM_DATABASE=MC8780 Device + +usb:v1199p6871* + ID_MODEL_FROM_DATABASE=MC8781 Device + +usb:v1199p6893* + ID_MODEL_FROM_DATABASE=MC8777 Device + +usb:v1199p68A3* + ID_MODEL_FROM_DATABASE=MC8700 Modem + +usb:v1199p68AA* + ID_MODEL_FROM_DATABASE=4G LTE adapter + +usb:v1199p9000* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem (QDL mode) + +usb:v1199p9001* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem + +usb:v1199p9002* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem + +usb:v1199p9003* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem + +usb:v1199p9004* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem + +usb:v1199p9005* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem + +usb:v1199p9006* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem + +usb:v1199p9007* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem + +usb:v1199p9008* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem + +usb:v1199p9009* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem + +usb:v1199p900A* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem + +usb:v119A* + ID_VENDOR_FROM_DATABASE=ZHAN QI Technology Co., Ltd + +usb:v119B* + ID_VENDOR_FROM_DATABASE=ruwido austria GmbH + +usb:v119Bp0400* + ID_MODEL_FROM_DATABASE=Infrared Keyboard V2.01 + +usb:v11A0* + ID_VENDOR_FROM_DATABASE=Chipcon AS + +usb:v11A0pEB11* + ID_MODEL_FROM_DATABASE=CC2400EB 2.0 ZigBee Sniffer + +usb:v11A3* + ID_VENDOR_FROM_DATABASE=Technovas Co., Ltd + +usb:v11A3p8031* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v11A3p8032* + ID_MODEL_FROM_DATABASE=MP3 Player + +usb:v11AA* + ID_VENDOR_FROM_DATABASE=GlobalMedia Group, LLC + +usb:v11AAp1518* + ID_MODEL_FROM_DATABASE=iREZ K2 + +usb:v11AB* + ID_VENDOR_FROM_DATABASE=Exito Electronics Co., Ltd + +usb:v11AC* + ID_VENDOR_FROM_DATABASE=Nike + +usb:v11ACp6565* + ID_MODEL_FROM_DATABASE=FuelBand + +usb:v11B0* + ID_VENDOR_FROM_DATABASE=ATECH FLASH TECHNOLOGY + +usb:v11C5* + ID_VENDOR_FROM_DATABASE=Inmax + +usb:v11C5p0521* + ID_MODEL_FROM_DATABASE=IMT-0521 Smartcard Reader + +usb:v11DB* + ID_VENDOR_FROM_DATABASE=Topfield Co., Ltd. + +usb:v11DBp1000* + ID_MODEL_FROM_DATABASE=PVR + +usb:v11DBp1100* + ID_MODEL_FROM_DATABASE=PVR + +usb:v11E6* + ID_VENDOR_FROM_DATABASE=K.I. Technology Co. Ltd. + +usb:v11F5* + ID_VENDOR_FROM_DATABASE=Siemens AG + +usb:v11F5p0001* + ID_MODEL_FROM_DATABASE=SX1 + +usb:v11F5p0003* + ID_MODEL_FROM_DATABASE=Mobile phone USB cable + +usb:v11F5p0004* + ID_MODEL_FROM_DATABASE=X75 + +usb:v11F5p0005* + ID_MODEL_FROM_DATABASE=SXG75/EF81 + +usb:v11F5p0008* + ID_MODEL_FROM_DATABASE=UMTS/HSDPA Data Card + +usb:v11F6* + ID_VENDOR_FROM_DATABASE=Prolific + +usb:v11F6p2001* + ID_MODEL_FROM_DATABASE=Willcom WSIM + +usb:v11F7* + ID_VENDOR_FROM_DATABASE=Alcatel (?) + +usb:v11F7p02DF* + ID_MODEL_FROM_DATABASE=TD10 Mobile phone USB cable + +usb:v1203* + ID_VENDOR_FROM_DATABASE=TSC Auto ID Technology Co., Ltd + +usb:v1203p0140* + ID_MODEL_FROM_DATABASE=TTP-245C + +usb:v1209* + ID_VENDOR_FROM_DATABASE=InterBiometrics + +usb:v1209p1001* + ID_MODEL_FROM_DATABASE=USB Hub + +usb:v1209p1002* + ID_MODEL_FROM_DATABASE=USB Relais + +usb:v1209p1003* + ID_MODEL_FROM_DATABASE=IBSecureCam-P + +usb:v1209p1004* + ID_MODEL_FROM_DATABASE=IBSecureCam-O + +usb:v1209p1005* + ID_MODEL_FROM_DATABASE=IBSecureCam-N + +usb:v120E* + ID_VENDOR_FROM_DATABASE=Hudson Soft Co., Ltd + +usb:v120F* + ID_VENDOR_FROM_DATABASE=Magellan + +usb:v120Fp524E* + ID_MODEL_FROM_DATABASE=RoadMate 1475T + +usb:v120Fp5260* + ID_MODEL_FROM_DATABASE=Triton Handheld GPS Receiver (300/400/500/1500/2000) + +usb:v1210* + ID_VENDOR_FROM_DATABASE=DigiTech + +usb:v1210p001B* + ID_MODEL_FROM_DATABASE=RP155 Guitar Multi-Effects Processor + +usb:v1210p001C* + ID_MODEL_FROM_DATABASE=RP255 Guitar Multi-Effects Processor + +usb:v121E* + ID_VENDOR_FROM_DATABASE=Jungsoft Co., Ltd + +usb:v121Ep3403* + ID_MODEL_FROM_DATABASE=Muzio JM250 Audio Player + +usb:v1223* + ID_VENDOR_FROM_DATABASE=SKYCABLE ENTERPRISE. CO., LTD. + +usb:v1230* + ID_VENDOR_FROM_DATABASE=Chipidea-Microelectronica, S.A. + +usb:v1233* + ID_VENDOR_FROM_DATABASE=Denver Electronics + +usb:v1233p5677* + ID_MODEL_FROM_DATABASE=FUSB200 mp3 player + +usb:v1234* + ID_VENDOR_FROM_DATABASE=Brain Actuated Technologies + +usb:v1234p0000* + ID_MODEL_FROM_DATABASE=Neural Impulse Actuator Prototype 1.0 [NIA] + +usb:v1234p4321* + ID_MODEL_FROM_DATABASE=Human Interface Device + +usb:v1234pED02* + ID_MODEL_FROM_DATABASE=Emotiv EPOC Developer Headset Wireless Dongle + +usb:v1235* + ID_VENDOR_FROM_DATABASE=Novation EMS + +usb:v1235p0001* + ID_MODEL_FROM_DATABASE=ReMOTE Audio/XStation + +usb:v1235p0002* + ID_MODEL_FROM_DATABASE=Speedio + +usb:v1235p0003* + ID_MODEL_FROM_DATABASE=ReMOTE ZeRO SL + +usb:v1235p4661* + ID_MODEL_FROM_DATABASE=ReMOTE25 + +usb:v1235p8006* + ID_MODEL_FROM_DATABASE=Focusrite Scarlett 2i2 + +usb:v1241* + ID_VENDOR_FROM_DATABASE=Belkin + +usb:v1241p0504* + ID_MODEL_FROM_DATABASE=Wireless Trackball Keyboard + +usb:v1241p1111* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v1241p1122* + ID_MODEL_FROM_DATABASE=Typhoon Stream Optical Mouse USB+PS/2 + +usb:v1241p1155* + ID_MODEL_FROM_DATABASE=PS2/USB Browser Combo Mouse + +usb:v1241p1166* + ID_MODEL_FROM_DATABASE=MI-2150 Trust Mouse + +usb:v1241p1177* + ID_MODEL_FROM_DATABASE=F8E842-DL Mouse + +usb:v1241p1503* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v1241p1603* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v1241pF767* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v124A* + ID_VENDOR_FROM_DATABASE=AirVast + +usb:v124Ap168B* + ID_MODEL_FROM_DATABASE=PRISM3 WLAN Adapter + +usb:v124Ap4017* + ID_MODEL_FROM_DATABASE=PC-Chips 802.11b Adapter + +usb:v124Ap4023* + ID_MODEL_FROM_DATABASE=WM168g 802.11bg Wireless Adapter [Intersil ISL3886] + +usb:v124Ap4025* + ID_MODEL_FROM_DATABASE=IOGear GWU513 v2 802.11bg Wireless Adapter [Intersil ISL3887] + +usb:v124B* + ID_VENDOR_FROM_DATABASE=Nyko (Honey Bee) + +usb:v124Bp4D01* + ID_MODEL_FROM_DATABASE=Airflo EX Joystick + +usb:v124C* + ID_VENDOR_FROM_DATABASE=MXI - Memory Experts International, Inc. + +usb:v124Cp3200* + ID_MODEL_FROM_DATABASE=Stealth MXP 1GB + +usb:v125C* + ID_VENDOR_FROM_DATABASE=Apogee Inc. + +usb:v125Cp0010* + ID_MODEL_FROM_DATABASE=Alta series CCD + +usb:v125F* + ID_VENDOR_FROM_DATABASE=A-DATA Technology Co., Ltd. + +usb:v125Fp312A* + ID_MODEL_FROM_DATABASE=Superior S102 + +usb:v125Fp312B* + ID_MODEL_FROM_DATABASE=Superior S102 Pro + +usb:v125FpA91A* + ID_MODEL_FROM_DATABASE=Portable HDD CH91 + +usb:v125FpC08A* + ID_MODEL_FROM_DATABASE=C008 Flash Drive + +usb:v125FpC81A* + ID_MODEL_FROM_DATABASE=Flash drive + +usb:v125FpC93A* + ID_MODEL_FROM_DATABASE=4GB Pen Drive + +usb:v125FpC96A* + ID_MODEL_FROM_DATABASE=C906 Flash Drive + +usb:v1260* + ID_VENDOR_FROM_DATABASE=Standard Microsystems Corp. + +usb:v1260pEE22* + ID_MODEL_FROM_DATABASE=SMC2862W-G v3 EZ Connect 802.11g Adapter [Intersil ISL3887] + +usb:v1264* + ID_VENDOR_FROM_DATABASE=Covidien Energy-based Devices + +usb:v1266* + ID_VENDOR_FROM_DATABASE=Pirelli Broadband Solutions + +usb:v1266p6302* + ID_MODEL_FROM_DATABASE=Fastweb DRG A226M ADSL Router + +usb:v1267* + ID_VENDOR_FROM_DATABASE=Logic3 / SpectraVideo plc + +usb:v1267p0103* + ID_MODEL_FROM_DATABASE=G-720 Keyboard + +usb:v1267p0201* + ID_MODEL_FROM_DATABASE=A4Tech SWOP-3 Mouse + +usb:v1267p0210* + ID_MODEL_FROM_DATABASE=LG Optical Mouse 3D-310 + +usb:v1267pA001* + ID_MODEL_FROM_DATABASE=JP260 PC Game Pad + +usb:v1267pC002* + ID_MODEL_FROM_DATABASE=Wireless Optical Mouse + +usb:v126C* + ID_VENDOR_FROM_DATABASE=Aristocrat Technologies + +usb:v126D* + ID_VENDOR_FROM_DATABASE=Bel Stewart + +usb:v126E* + ID_VENDOR_FROM_DATABASE=Strobe Data, Inc. + +usb:v126F* + ID_VENDOR_FROM_DATABASE=TwinMOS + +usb:v126Fp0163* + ID_MODEL_FROM_DATABASE=Storage device (2gB thumb drive) + +usb:v126Fp1325* + ID_MODEL_FROM_DATABASE=Mobile Disk + +usb:v126Fp2168* + ID_MODEL_FROM_DATABASE=Mobile Disk III + +usb:v126FpA006* + ID_MODEL_FROM_DATABASE=G240 802.11bg + +usb:v1274* + ID_VENDOR_FROM_DATABASE=Ensoniq + +usb:v1275* + ID_VENDOR_FROM_DATABASE=Xaxero Marine Software Engineering, Ltd. + +usb:v1275p0002* + ID_MODEL_FROM_DATABASE=WeatherFax 2000 Demodulator + +usb:v1275p0080* + ID_MODEL_FROM_DATABASE=SkyEye Weather Satellite Receiver + +usb:v1278* + ID_VENDOR_FROM_DATABASE=Starlight Xpress + +usb:v1278p0105* + ID_MODEL_FROM_DATABASE=SXV-M5 + +usb:v1278p0107* + ID_MODEL_FROM_DATABASE=SXV-M7 + +usb:v1278p0109* + ID_MODEL_FROM_DATABASE=SXV-M9 + +usb:v1278p0110* + ID_MODEL_FROM_DATABASE=SXVF-H16 + +usb:v1278p0115* + ID_MODEL_FROM_DATABASE=SXVF-H5 + +usb:v1278p0119* + ID_MODEL_FROM_DATABASE=SXV-H9 + +usb:v1278p0135* + ID_MODEL_FROM_DATABASE=SXVF-H35 + +usb:v1278p0136* + ID_MODEL_FROM_DATABASE=SXVF-H36 + +usb:v1278p0200* + ID_MODEL_FROM_DATABASE=SXV interface for paraller MX cameras + +usb:v1278p0305* + ID_MODEL_FROM_DATABASE=SXV-M5C + +usb:v1278p0307* + ID_MODEL_FROM_DATABASE=SXV-M7C + +usb:v1278p0319* + ID_MODEL_FROM_DATABASE=SXV-H9C + +usb:v1278p0325* + ID_MODEL_FROM_DATABASE=SXV-M25C + +usb:v1278p0326* + ID_MODEL_FROM_DATABASE=SXVR-M26C + +usb:v1278p0507* + ID_MODEL_FROM_DATABASE=Lodestar autoguider + +usb:v1278p0517* + ID_MODEL_FROM_DATABASE=CoStar + +usb:v1283* + ID_VENDOR_FROM_DATABASE=zebris Medical GmbH + +usb:v1283p0100* + ID_MODEL_FROM_DATABASE=USB-RS232 Adaptor + +usb:v1283p0110* + ID_MODEL_FROM_DATABASE=CMS20 + +usb:v1283p0111* + ID_MODEL_FROM_DATABASE=CMS 10 + +usb:v1283p0112* + ID_MODEL_FROM_DATABASE=CMS 05 + +usb:v1283p0114* + ID_MODEL_FROM_DATABASE=ARCUS digma PC-Interface + +usb:v1283p0115* + ID_MODEL_FROM_DATABASE=SAM Axioquick recorder + +usb:v1283p0116* + ID_MODEL_FROM_DATABASE=SAM Axioquick recorder + +usb:v1283p0120* + ID_MODEL_FROM_DATABASE=emed-X + +usb:v1283p0121* + ID_MODEL_FROM_DATABASE=emed-AT + +usb:v1283p0130* + ID_MODEL_FROM_DATABASE=PDM + +usb:v1283p0150* + ID_MODEL_FROM_DATABASE=CMS10GI (Golf) + +usb:v1286* + ID_VENDOR_FROM_DATABASE=Marvell Semiconductor, Inc. + +usb:v1286p1FAB* + ID_MODEL_FROM_DATABASE=88W8338 [Libertas] 802.11g + +usb:v1286p2001* + ID_MODEL_FROM_DATABASE=88W8388 802.11a/b/g WLAN + +usb:v1286p2006* + ID_MODEL_FROM_DATABASE=88W8362 802.11n WLAN + +usb:v1286p8001* + ID_MODEL_FROM_DATABASE=BLOB boot loader firmware + +usb:v1291* + ID_VENDOR_FROM_DATABASE=Qualcomm Flarion Technologies, Inc. / Leadtek Research, Inc. + +usb:v1291p0010* + ID_MODEL_FROM_DATABASE=FDM 2xxx Flash-OFDM modem + +usb:v1291p0011* + ID_MODEL_FROM_DATABASE=LR7F06/LR7F14 Flash-OFDM modem + +usb:v1292* + ID_VENDOR_FROM_DATABASE=Innomedia + +usb:v1292p0258* + ID_MODEL_FROM_DATABASE=Creative Labs VoIP Blaster + +usb:v1293* + ID_VENDOR_FROM_DATABASE=Belkin Components [hex] + +usb:v1293p0002* + ID_MODEL_FROM_DATABASE=F5U002 Parallel Port [uss720] + +usb:v1293p2101* + ID_MODEL_FROM_DATABASE=104-key keyboard + +usb:v1294* + ID_VENDOR_FROM_DATABASE=RISO KAGAKU CORP. + +usb:v129B* + ID_VENDOR_FROM_DATABASE=CyberTAN Technology + +usb:v129Bp160B* + ID_MODEL_FROM_DATABASE=Siemens S30853-S1031-R351 802.11g Wireless Adapter [Atheros AR5523] + +usb:v129Bp160C* + ID_MODEL_FROM_DATABASE=Siemens S30853-S1038-R351 802.11g Wireless Adapter [Atheros AR5523] + +usb:v129Bp1666* + ID_MODEL_FROM_DATABASE=TG54USB 802.11bg + +usb:v129Bp1667* + ID_MODEL_FROM_DATABASE=802.11bg + +usb:v129Bp1828* + ID_MODEL_FROM_DATABASE=Gigaset USB Adapter 300 + +usb:v12A7* + ID_VENDOR_FROM_DATABASE=Trendchip Technologies Corp. + +usb:v12AB* + ID_VENDOR_FROM_DATABASE=Honey Bee Electronic International Ltd. + +usb:v12B8* + ID_VENDOR_FROM_DATABASE=Zhejiang Xinya Electronic Technology Co., Ltd. + +usb:v12B9* + ID_VENDOR_FROM_DATABASE=E28 + +usb:v12BA* + ID_VENDOR_FROM_DATABASE=Licensed by Sony Computer Entertainment America + +usb:v12BAp00FF* + ID_MODEL_FROM_DATABASE=Rocksmith Guitar Adapter + +usb:v12BAp0100* + ID_MODEL_FROM_DATABASE=RedOctane Guitar for PlayStation(R)3 + +usb:v12BAp0120* + ID_MODEL_FROM_DATABASE=RedOctane Drum Kit for PlayStation(R)3 + +usb:v12BAp0200* + ID_MODEL_FROM_DATABASE=Harmonix Guitar for PlayStation(R)3 + +usb:v12BAp0210* + ID_MODEL_FROM_DATABASE=Harmonix Drum Kit for PlayStation(R)3 + +usb:v12C4* + ID_VENDOR_FROM_DATABASE=Autocue Group Ltd + +usb:v12C4p0006* + ID_MODEL_FROM_DATABASE=Teleprompter Two-button Hand Control (v1) + +usb:v12C4p0008* + ID_MODEL_FROM_DATABASE=Teleprompter Foot Control (v1) + +usb:v12D1* + ID_VENDOR_FROM_DATABASE=Huawei Technologies Co., Ltd. + +usb:v12D1p1001* + ID_MODEL_FROM_DATABASE=E169/E620/E800 HSDPA Modem + +usb:v12D1p1003* + ID_MODEL_FROM_DATABASE=E220 HSDPA Modem / E230/E270/E870 HSDPA/HSUPA Modem + +usb:v12D1p1004* + ID_MODEL_FROM_DATABASE=E220 (bis) + +usb:v12D1p1009* + ID_MODEL_FROM_DATABASE=U120 + +usb:v12D1p1010* + ID_MODEL_FROM_DATABASE=ETS2252+ CDMA Fixed Wireless Terminal + +usb:v12D1p1021* + ID_MODEL_FROM_DATABASE=U8520 + +usb:v12D1p1035* + ID_MODEL_FROM_DATABASE=U8120 + +usb:v12D1p1037* + ID_MODEL_FROM_DATABASE=Ideos + +usb:v12D1p1038* + ID_MODEL_FROM_DATABASE=Ideos (debug mode) + +usb:v12D1p1039* + ID_MODEL_FROM_DATABASE=Ideos (tethering mode) + +usb:v12D1p1406* + ID_MODEL_FROM_DATABASE=E1750 + +usb:v12D1p140B* + ID_MODEL_FROM_DATABASE=EC1260 Wireless Data Modem HSD USB Card + +usb:v12D1p140C* + ID_MODEL_FROM_DATABASE=E180v + +usb:v12D1p1412* + ID_MODEL_FROM_DATABASE=EC168c + +usb:v12D1p1436* + ID_MODEL_FROM_DATABASE=E173 3G Modem (modem-mode) + +usb:v12D1p1446* + ID_MODEL_FROM_DATABASE=E1552/E1800/E173 (HSPA modem) + +usb:v12D1p1465* + ID_MODEL_FROM_DATABASE=K3765 HSPA + +usb:v12D1p14C3* + ID_MODEL_FROM_DATABASE=K5005 Vodafone LTE/UMTS/GSM Modem/Networkcard + +usb:v12D1p14C8* + ID_MODEL_FROM_DATABASE=K5005 Vodafone LTE/UMTS/GSM MOdem/Networkcard + +usb:v12D1p14C9* + ID_MODEL_FROM_DATABASE=K3770 3G Modem + +usb:v12D1p14D1* + ID_MODEL_FROM_DATABASE=K3770 3G Modem (Mass Storage Mode) + +usb:v12D1p14F1* + ID_MODEL_FROM_DATABASE=Gobi 3000 HSPA+ Modem + +usb:v12D1p1501* + ID_MODEL_FROM_DATABASE=Pulse + +usb:v12D1p1505* + ID_MODEL_FROM_DATABASE=E398 LTE/UMTS/GSM Modem/Networkcard + +usb:v12D1p1506* + ID_MODEL_FROM_DATABASE=E398 LTE/UMTS/GSM Modem/Networkcard + +usb:v12D1p150A* + ID_MODEL_FROM_DATABASE=E398 LTE/UMTS/GSM Modem/Networkcard + +usb:v12D1p1520* + ID_MODEL_FROM_DATABASE=K3765 HSPA + +usb:v12D1p1521* + ID_MODEL_FROM_DATABASE=K4505 HSPA+ + +usb:v12D1p1805* + ID_MODEL_FROM_DATABASE=AT&T Go Phone U2800A phone + +usb:v12D1p1C05* + ID_MODEL_FROM_DATABASE=E173s 3G broadband stick (modem on) + +usb:v12D1p1C0B* + ID_MODEL_FROM_DATABASE=E173s 3G broadband stick (modem off) + +usb:v12D1p1D50* + ID_MODEL_FROM_DATABASE=ET302s TD-SCDMA/TD-HSDPA Mobile Broadband + +usb:v12D1p380B* + ID_MODEL_FROM_DATABASE=WiMAX USB modem(s) + +usb:v12D2* + ID_VENDOR_FROM_DATABASE=LINE TECH INDUSTRIAL CO., LTD. + +usb:v12D6* + ID_VENDOR_FROM_DATABASE=EMS Dr. Thomas Wuensche + +usb:v12D6p0444* + ID_MODEL_FROM_DATABASE=CPC-USB/ARM7 + +usb:v12D6p0888* + ID_MODEL_FROM_DATABASE=CPC-USB/M16C + +usb:v12D7* + ID_VENDOR_FROM_DATABASE=BETTER WIRE FACTORY CO., LTD. + +usb:v12E6* + ID_VENDOR_FROM_DATABASE=Waldorf Music GmbH + +usb:v12E6p0013* + ID_MODEL_FROM_DATABASE=Blofeld + +usb:v12EF* + ID_VENDOR_FROM_DATABASE=Tapwave, Inc. + +usb:v12EFp0100* + ID_MODEL_FROM_DATABASE=Tapwave Handheld [Tapwave Zodiac] + +usb:v12F5* + ID_VENDOR_FROM_DATABASE=Dynamic System Electronics Corp. + +usb:v12F7* + ID_VENDOR_FROM_DATABASE=Memorex Products, Inc. + +usb:v12F7p1A00* + ID_MODEL_FROM_DATABASE=TD Classic 003B + +usb:v12F7p1E23* + ID_MODEL_FROM_DATABASE=TravelDrive 2007 Flash Drive + +usb:v12FD* + ID_VENDOR_FROM_DATABASE=AIN Comm. Technology Co., Ltd + +usb:v12FDp1001* + ID_MODEL_FROM_DATABASE=AWU2000b 802.11b Stick + +usb:v12FF* + ID_VENDOR_FROM_DATABASE=Fascinating Electronics, Inc. + +usb:v12FFp0101* + ID_MODEL_FROM_DATABASE=Advanced RC Servo Controller + +usb:v1307* + ID_VENDOR_FROM_DATABASE=Transcend Information, Inc. + +usb:v1307p0163* + ID_MODEL_FROM_DATABASE=256MB/512MB/1GB Flash Drive + +usb:v1307p0165* + ID_MODEL_FROM_DATABASE=2GB/4GB Flash Drive + +usb:v1307p0190* + ID_MODEL_FROM_DATABASE=Ut190 8 GB Flash Drive with MicroSD reader + +usb:v1307p0310* + ID_MODEL_FROM_DATABASE=SD/MicroSD CardReader [hama] + +usb:v1307p0330* + ID_MODEL_FROM_DATABASE=63-in-1 Multi-Card Reader/Writer + +usb:v1307p0361* + ID_MODEL_FROM_DATABASE=CR-75: 51-in-1 Card Reader/Writer [Sakar] + +usb:v1307p1169* + ID_MODEL_FROM_DATABASE=TS2GJF210 JetFlash 210 2GB + +usb:v1307p1171* + ID_MODEL_FROM_DATABASE=Fingerprint Reader + +usb:v1308* + ID_VENDOR_FROM_DATABASE=Shuttle, Inc. + +usb:v1308p0003* + ID_MODEL_FROM_DATABASE=VFD Module + +usb:v1308pC001* + ID_MODEL_FROM_DATABASE=eHome Infrared Transceiver + +usb:v1310* + ID_VENDOR_FROM_DATABASE=Roper + +usb:v1310p0001* + ID_MODEL_FROM_DATABASE=Class 1 Bluetooth Dongle + +usb:v1312* + ID_VENDOR_FROM_DATABASE=ICS Electronics + +usb:v1313* + ID_VENDOR_FROM_DATABASE=ThorLabs + +usb:v1313p8070* + ID_MODEL_FROM_DATABASE=PM100D + +usb:v131D* + ID_VENDOR_FROM_DATABASE=Natural Point + +usb:v131Dp0155* + ID_MODEL_FROM_DATABASE=TrackIR 3 Pro Head Tracker + +usb:v131Dp0156* + ID_MODEL_FROM_DATABASE=TrackIR 4 Pro Head Tracker + +usb:v132A* + ID_VENDOR_FROM_DATABASE=Envara Inc. + +usb:v132Ap1502* + ID_MODEL_FROM_DATABASE=WiND 802.11abg / 802.11bg WLAN + +usb:v132B* + ID_VENDOR_FROM_DATABASE=Konica Minolta + +usb:v132Bp0000* + ID_MODEL_FROM_DATABASE=Dimage A2 Camera + +usb:v132Bp0001* + ID_MODEL_FROM_DATABASE=Minolta DiMAGE A2 (ptp) + +usb:v132Bp0003* + ID_MODEL_FROM_DATABASE=Dimage Xg Camera + +usb:v132Bp0006* + ID_MODEL_FROM_DATABASE=Dimage Z2 Camera + +usb:v132Bp0007* + ID_MODEL_FROM_DATABASE=Minolta DiMAGE Z2 (PictBridge mode) + +usb:v132Bp0008* + ID_MODEL_FROM_DATABASE=Dimage X21 Camera + +usb:v132Bp000A* + ID_MODEL_FROM_DATABASE=Dimage Scan Dual IV AF-3200 (2891) + +usb:v132Bp000B* + ID_MODEL_FROM_DATABASE=Dimage Z10 Camera + +usb:v132Bp000D* + ID_MODEL_FROM_DATABASE=Dimage X50 Camera [storage?] + +usb:v132Bp000F* + ID_MODEL_FROM_DATABASE=Dimage X50 Camera [p2p?] + +usb:v132Bp0010* + ID_MODEL_FROM_DATABASE=Dimage G600 Camera + +usb:v132Bp0012* + ID_MODEL_FROM_DATABASE=Dimage Scan Elite 5400 II (2892) + +usb:v132Bp0013* + ID_MODEL_FROM_DATABASE=Dimage X31 Camera + +usb:v132Bp0015* + ID_MODEL_FROM_DATABASE=Dimage G530 Camera + +usb:v132Bp0017* + ID_MODEL_FROM_DATABASE=Dimage Z3 Camera + +usb:v132Bp0018* + ID_MODEL_FROM_DATABASE=Minolta DiMAGE Z3 (PictBridge mode) + +usb:v132Bp0019* + ID_MODEL_FROM_DATABASE=Dimage A200 Camera + +usb:v132Bp0021* + ID_MODEL_FROM_DATABASE=Dimage Z5 Camera + +usb:v132Bp0022* + ID_MODEL_FROM_DATABASE=Minolta DiMAGE Z5 (PictBridge mode) + +usb:v132Bp002C* + ID_MODEL_FROM_DATABASE=Dynax 5D camera + +usb:v132Bp2001* + ID_MODEL_FROM_DATABASE=Magicolor 2400w + +usb:v132Bp2004* + ID_MODEL_FROM_DATABASE=Magicolor 5430DL + +usb:v132Bp2005* + ID_MODEL_FROM_DATABASE=Magicolor 2430 DL + +usb:v132Bp2029* + ID_MODEL_FROM_DATABASE=Magicolor 5440DL + +usb:v132Bp2030* + ID_MODEL_FROM_DATABASE=PagePro 1350E(N) + +usb:v132Bp2033* + ID_MODEL_FROM_DATABASE=PagePro 1400W + +usb:v132Bp2043* + ID_MODEL_FROM_DATABASE=Magicolor 2530DL + +usb:v132Bp2045* + ID_MODEL_FROM_DATABASE=Magicolor 2500W + +usb:v132Bp2049* + ID_MODEL_FROM_DATABASE=Magicolor 2490MF + +usb:v1342* + ID_VENDOR_FROM_DATABASE=Mobility + +usb:v1342p0200* + ID_MODEL_FROM_DATABASE=EasiDock 200 Hub + +usb:v1342p0201* + ID_MODEL_FROM_DATABASE=EasiDock 200 Keyboard and Mouse Port + +usb:v1342p0202* + ID_MODEL_FROM_DATABASE=EasiDock 200 Serial Port + +usb:v1342p0203* + ID_MODEL_FROM_DATABASE=EasiDock 200 Printer Port + +usb:v1342p0204* + ID_MODEL_FROM_DATABASE=Ethernet + +usb:v1342p0304* + ID_MODEL_FROM_DATABASE=EasiDock Ethernet + +usb:v1345* + ID_VENDOR_FROM_DATABASE=Sino Lite Technology Corp. + +usb:v1345p001C* + ID_MODEL_FROM_DATABASE=Xbox Controller Hub + +usb:v1345p6006* + ID_MODEL_FROM_DATABASE=Defender Wireless Controller + +usb:v1347* + ID_VENDOR_FROM_DATABASE=Moravian Instruments + +usb:v1347p0400* + ID_MODEL_FROM_DATABASE=G2CCD USB 1.1 obsolete + +usb:v1347p0401* + ID_MODEL_FROM_DATABASE=G2CCD-S with Sony ICX285 CCD + +usb:v1347p0402* + ID_MODEL_FROM_DATABASE=G2CCD2 + +usb:v1347p0403* + ID_MODEL_FROM_DATABASE=G2/G3CCD-I KAI CCD + +usb:v1347p0404* + ID_MODEL_FROM_DATABASE=G2/G3/G4 CCD-F KAF CCD + +usb:v1347p0410* + ID_MODEL_FROM_DATABASE=G1-0400 CCD + +usb:v1347p0411* + ID_MODEL_FROM_DATABASE=G1-0800 CCD + +usb:v1347p0412* + ID_MODEL_FROM_DATABASE=G1-0300 CCD + +usb:v1347p0413* + ID_MODEL_FROM_DATABASE=G1-2000 CCD + +usb:v1347p0414* + ID_MODEL_FROM_DATABASE=G1-1400 CCD + +usb:v1348* + ID_VENDOR_FROM_DATABASE=Katsuragawa Electric Co., Ltd. + +usb:v134C* + ID_VENDOR_FROM_DATABASE=PanJit International Inc. + +usb:v134Cp0001* + ID_MODEL_FROM_DATABASE=Touch Panel Controller + +usb:v134Cp0002* + ID_MODEL_FROM_DATABASE=Touch Panel Controller + +usb:v134Cp0003* + ID_MODEL_FROM_DATABASE=Touch Panel Controller + +usb:v134Cp0004* + ID_MODEL_FROM_DATABASE=Touch Panel Controller + +usb:v134E* + ID_VENDOR_FROM_DATABASE=Digby's Bitpile, Inc. DBA D Bit + +usb:v1357* + ID_VENDOR_FROM_DATABASE=P&E Microcomputer Systems + +usb:v1357p0503* + ID_MODEL_FROM_DATABASE=USB-ML-12 HCS08/HCS12 Multilink + +usb:v1357p0504* + ID_MODEL_FROM_DATABASE=DEMOJM + +usb:v1366* + ID_VENDOR_FROM_DATABASE=SEGGER + +usb:v1366p0101* + ID_MODEL_FROM_DATABASE=J-Link ARM + +usb:v136B* + ID_VENDOR_FROM_DATABASE=STEC + +usb:v1370* + ID_VENDOR_FROM_DATABASE=Swissbit + +usb:v1370p0323* + ID_MODEL_FROM_DATABASE=Swissmemory cirrusWHITE + +usb:v1370p6828* + ID_MODEL_FROM_DATABASE=Victorinox Flash Drive + +usb:v1371* + ID_VENDOR_FROM_DATABASE=CNet Technology Inc. + +usb:v1371p0001* + ID_MODEL_FROM_DATABASE=CNUSB-611AR Wireless Adapter-G [AT76C503] + +usb:v1371p0002* + ID_MODEL_FROM_DATABASE=CNUSB-611AR Wireless Adapter-G [AT76C503] (FiberLine WL-240U) + +usb:v1371p0013* + ID_MODEL_FROM_DATABASE=CNUSB-611 Wireless Adapter [AT76C505] + +usb:v1371p0014* + ID_MODEL_FROM_DATABASE=CNUSB-611 Wireless Adapter [AT76C505] (FiberLine WL-240U) + +usb:v1371p5743* + ID_MODEL_FROM_DATABASE=CNUSB-611 (D) Wireless Adapter [AT76C503] + +usb:v1371p9022* + ID_MODEL_FROM_DATABASE=CWD-854 [RT2573] + +usb:v1371p9032* + ID_MODEL_FROM_DATABASE=CWD-854 rev F + +usb:v1371p9401* + ID_MODEL_FROM_DATABASE=CWD-854 Wireless 802.11g 54Mbps Network Adapter [RTL8187] + +usb:v1376* + ID_VENDOR_FROM_DATABASE=Vimtron Electronics Co., Ltd. + +usb:v137B* + ID_VENDOR_FROM_DATABASE=SCAPS GmbH + +usb:v137Bp0002* + ID_MODEL_FROM_DATABASE=SCAPS USC-2 Scanner Controller + +usb:v1385* + ID_VENDOR_FROM_DATABASE=Netgear, Inc + +usb:v1385p4250* + ID_MODEL_FROM_DATABASE=WG111T + +usb:v1385p4251* + ID_MODEL_FROM_DATABASE=WG111T (no firmware) + +usb:v1385p5F00* + ID_MODEL_FROM_DATABASE=WPN111 RangeMax(TM) Wireless USB 2.0 Adapter + +usb:v1385p5F01* + ID_MODEL_FROM_DATABASE=WPN111 (no firmware) + +usb:v1385p5F02* + ID_MODEL_FROM_DATABASE=WPN111 (no firmware) + +usb:v1385p6E00* + ID_MODEL_FROM_DATABASE=WPNT121 802.11g 240Mbps Wireless Adapter [Airgo AGN300] + +usb:v138A* + ID_VENDOR_FROM_DATABASE=Validity Sensors, Inc. + +usb:v138Ap0001* + ID_MODEL_FROM_DATABASE=VFS101 Fingerprint Reader + +usb:v138Ap0005* + ID_MODEL_FROM_DATABASE=VFS301 Fingerprint Reader + +usb:v138Ap0007* + ID_MODEL_FROM_DATABASE=VFS451 Fingerprint Reader + +usb:v138Ap0008* + ID_MODEL_FROM_DATABASE=VFS300 Fingerprint Reader + +usb:v138Ap0011* + ID_MODEL_FROM_DATABASE=VFS5011 Fingerprint Reader + +usb:v138Ap0018* + ID_MODEL_FROM_DATABASE=Fingerprint scanner + +usb:v138Ap003C* + ID_MODEL_FROM_DATABASE=VFS471 Fingerprint Reader + +usb:v138E* + ID_VENDOR_FROM_DATABASE=Jungo LTD + +usb:v138Ep9000* + ID_MODEL_FROM_DATABASE=Raisonance S.A. STM32 ARM evaluation board + +usb:v1390* + ID_VENDOR_FROM_DATABASE=TOMTOM B.V. + +usb:v1390p0001* + ID_MODEL_FROM_DATABASE=GO 520 T/GO 630/ONE XL (v9) + +usb:v1391* + ID_VENDOR_FROM_DATABASE=IdealTEK, Inc. + +usb:v1391p1000* + ID_MODEL_FROM_DATABASE=URTC-1000 + +usb:v1395* + ID_VENDOR_FROM_DATABASE=Sennheiser Communications + +usb:v1395p3556* + ID_MODEL_FROM_DATABASE=USB Headset + +usb:v1397* + ID_VENDOR_FROM_DATABASE=BEHRINGER International GmbH + +usb:v1397p00BC* + ID_MODEL_FROM_DATABASE=BCF2000 + +usb:v1398* + ID_VENDOR_FROM_DATABASE=Q-tec + +usb:v1398p2103* + ID_MODEL_FROM_DATABASE=USB 2.0 Storage Device + +usb:v13AD* + ID_VENDOR_FROM_DATABASE=Baltech + +usb:v13ADp9999* + ID_MODEL_FROM_DATABASE=Card reader + +usb:v13B0* + ID_VENDOR_FROM_DATABASE=PerkinElmer Optoelectronics + +usb:v13B0p000A* + ID_MODEL_FROM_DATABASE=Alesis Photon X25 MIDI Controller + +usb:v13B1* + ID_VENDOR_FROM_DATABASE=Linksys + +usb:v13B1p000A* + ID_MODEL_FROM_DATABASE=WUSB54G v2 802.11g Adapter [Intersil ISL3887] + +usb:v13B1p000B* + ID_MODEL_FROM_DATABASE=WUSB11 v4.0 802.11b Adapter [ALi M4301] + +usb:v13B1p000C* + ID_MODEL_FROM_DATABASE=WUSB54AG 802.11a/g Adapter [Intersil ISL3887] + +usb:v13B1p000D* + ID_MODEL_FROM_DATABASE=WUSB54G v4 802.11g Adapter [Ralink RT2500USB] + +usb:v13B1p000E* + ID_MODEL_FROM_DATABASE=WUSB54GS v1 802.11g Adapter [Broadcom 4320 USB] + +usb:v13B1p0011* + ID_MODEL_FROM_DATABASE=WUSB54GP v4.0 802.11g Adapter [Ralink RT2500USB] + +usb:v13B1p0014* + ID_MODEL_FROM_DATABASE=WUSB54GS v2 802.11g Adapter [Broadcom 4320 USB] + +usb:v13B1p0018* + ID_MODEL_FROM_DATABASE=USB200M 10/100 Ethernet Adapter + +usb:v13B1p001A* + ID_MODEL_FROM_DATABASE=HU200TS Wireless Adapter + +usb:v13B1p001E* + ID_MODEL_FROM_DATABASE=WUSBF54G 802.11bg + +usb:v13B1p0020* + ID_MODEL_FROM_DATABASE=WUSB54GC v1 802.11g Adapter [Ralink RT73] + +usb:v13B1p0022* + ID_MODEL_FROM_DATABASE=WUSB54GX4 802.11g 240Mbps Wireless Adapter [Airgo AGN300] + +usb:v13B1p0023* + ID_MODEL_FROM_DATABASE=WUSB54GR + +usb:v13B1p0024* + ID_MODEL_FROM_DATABASE=WUSBF54G v1.1 802.11bg + +usb:v13B1p0026* + ID_MODEL_FROM_DATABASE=WUSB54GSC v1 802.11g Adapter [Broadcom 4320 USB] + +usb:v13B1p0028* + ID_MODEL_FROM_DATABASE=WUSB200 802.11g Adapter [Ralink RT2671] + +usb:v13B1p0029* + ID_MODEL_FROM_DATABASE=WUSB300N 802.11bgn Wireless Adapter [Marvell 88W8362+88W8060] + +usb:v13B1p002F* + ID_MODEL_FROM_DATABASE=AE1000 v1 802.11n [Ralink RT3572] + +usb:v13B1p0031* + ID_MODEL_FROM_DATABASE=AM10 v1 802.11n [Ralink RT3072] + +usb:v13B1p0039* + ID_MODEL_FROM_DATABASE=AE1200 802.11bgn Wireless Adapter [Broadcom BCM43235] + +usb:v13B1p003A* + ID_MODEL_FROM_DATABASE=AE2500 802.11abgn Wireless Adapter [Broadcom BCM43236] + +usb:v13B1p13B1* + ID_MODEL_FROM_DATABASE=WUSB200: Wireless-G Business Network Adapter with Rangebooster + +usb:v13B2* + ID_VENDOR_FROM_DATABASE=Alesis + +usb:v13B2p0030* + ID_MODEL_FROM_DATABASE=Multimix 8 + +usb:v13B3* + ID_VENDOR_FROM_DATABASE=Nippon Dics Co., Ltd. + +usb:v13BA* + ID_VENDOR_FROM_DATABASE=PCPlay + +usb:v13BAp0001* + ID_MODEL_FROM_DATABASE=König Electronic CMP-KEYPAD12 Numeric Keypad + +usb:v13BAp0017* + ID_MODEL_FROM_DATABASE=PS/2 Keyboard+Mouse Adapter + +usb:v13BAp0018* + ID_MODEL_FROM_DATABASE=Barcode PCP-BCG4209 + +usb:v13BE* + ID_VENDOR_FROM_DATABASE=Ricoh Printing Systems, Ltd. + +usb:v13CA* + ID_VENDOR_FROM_DATABASE=JyeTai Precision Industrial Co., Ltd. + +usb:v13CF* + ID_VENDOR_FROM_DATABASE=Wisair Ltd. + +usb:v13CFp1200* + ID_MODEL_FROM_DATABASE=Olidata Wireless Multimedia Adapter + +usb:v13D0* + ID_VENDOR_FROM_DATABASE=Techsan Electronics Co., Ltd. + +usb:v13D0p2282* + ID_MODEL_FROM_DATABASE=TechniSat DVB-PC TV Star 2 + +usb:v13D1* + ID_VENDOR_FROM_DATABASE=A-Max Technology Macao Commercial Offshore Co. Ltd. + +usb:v13D1p7019* + ID_MODEL_FROM_DATABASE=MD 82288 + +usb:v13D1pABE6* + ID_MODEL_FROM_DATABASE=Wireless 802.11g 54Mbps Network Adapter [RTL8187] + +usb:v13D2* + ID_VENDOR_FROM_DATABASE=Shark Multimedia + +usb:v13D2p0400* + ID_MODEL_FROM_DATABASE=Pocket Ethernet [klsi] + +usb:v13D3* + ID_VENDOR_FROM_DATABASE=IMC Networks + +usb:v13D3p3201* + ID_MODEL_FROM_DATABASE=VisionDTV USB-Ter/HAMA USB DVB-T device cold + +usb:v13D3p3202* + ID_MODEL_FROM_DATABASE=VisionDTV USB-Ter/HAMA USB DVB-T device warm + +usb:v13D3p3203* + ID_MODEL_FROM_DATABASE=DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) + +usb:v13D3p3204* + ID_MODEL_FROM_DATABASE=DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) + +usb:v13D3p3205* + ID_MODEL_FROM_DATABASE=DNTV Live! Tiny USB2 BDA (No Remote) + +usb:v13D3p3206* + ID_MODEL_FROM_DATABASE=DNTV Live! Tiny USB2 BDA (No Remote) + +usb:v13D3p3207* + ID_MODEL_FROM_DATABASE=DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) + +usb:v13D3p3208* + ID_MODEL_FROM_DATABASE=DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) + +usb:v13D3p3209* + ID_MODEL_FROM_DATABASE=DTV-DVB UDST7022BDA DVB-S Box(Without HID) + +usb:v13D3p3211* + ID_MODEL_FROM_DATABASE=DTV-DVB Hybrid Analog/Capture / Pinnacle PCTV 310e + +usb:v13D3p3212* + ID_MODEL_FROM_DATABASE=DTV-DVB UDTT704C - DVBT/NTSC/PAL Driver(PCM4) + +usb:v13D3p3213* + ID_MODEL_FROM_DATABASE=DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver (PCM4) + +usb:v13D3p3214* + ID_MODEL_FROM_DATABASE=DTV-DVB UDTT704F -(MiniCard) DVBT/NTSC/PAL Driver(Without HID) + +usb:v13D3p3215* + ID_MODEL_FROM_DATABASE=DTV-DVB UDAT7240 - ATSC/NTSC/PAL Driver(PCM4) + +usb:v13D3p3216* + ID_MODEL_FROM_DATABASE=DTV-DVB UDTT 7047-USB 2.0 DVB-T Driver + +usb:v13D3p3217* + ID_MODEL_FROM_DATABASE=Digital-TV Receiver. + +usb:v13D3p3219* + ID_MODEL_FROM_DATABASE=DTV-DVB UDTT7049 - DVB-T Driver(Without HID) + +usb:v13D3p3220* + ID_MODEL_FROM_DATABASE=DTV-DVB UDTT 7047M-USB 2.0 DVB-T Driver + +usb:v13D3p3223* + ID_MODEL_FROM_DATABASE=DNTV Live! Tiny USB2 BDA (No Remote) + +usb:v13D3p3224* + ID_MODEL_FROM_DATABASE=DNTV Live! Tiny USB2 BDA (No Remote) + +usb:v13D3p3226* + ID_MODEL_FROM_DATABASE=DigitalNow TinyTwin DVB-T Receiver + +usb:v13D3p3234* + ID_MODEL_FROM_DATABASE=DVB-T FTA Half Minicard [RTL2832U] + +usb:v13D3p3236* + ID_MODEL_FROM_DATABASE=DTV-DVB UDTT 7047A-USB 2.0 DVB-T Driver + +usb:v13D3p3237* + ID_MODEL_FROM_DATABASE=DTV-DVB UDTT 704J - dual DVB-T Driver + +usb:v13D3p3239* + ID_MODEL_FROM_DATABASE=DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver(Without HID) + +usb:v13D3p3240* + ID_MODEL_FROM_DATABASE=DTV-DVB UDXTTM6010 - A/D Driver(Without HID) + +usb:v13D3p3241* + ID_MODEL_FROM_DATABASE=DTV-DVB UDXTTM6010 - A/D Driver(Without HID) + +usb:v13D3p3242* + ID_MODEL_FROM_DATABASE=DTV-DVB UDAT7240LP - ATSC/NTSC/PAL Driver(Without HID) + +usb:v13D3p3243* + ID_MODEL_FROM_DATABASE=DTV-DVB UDXTTM6010 - A/D Driver(Without HID) + +usb:v13D3p3244* + ID_MODEL_FROM_DATABASE=DTV-DVB UDTT 7047Z-USB 2.0 DVB-T Driver + +usb:v13D3p3247* + ID_MODEL_FROM_DATABASE=802.11 n/g/b Wireless LAN Adapter + +usb:v13D3p3249* + ID_MODEL_FROM_DATABASE=Internal Bluetooth + +usb:v13D3p3262* + ID_MODEL_FROM_DATABASE=802.11 n/g/b Wireless LAN USB Adapter + +usb:v13D3p3273* + ID_MODEL_FROM_DATABASE=802.11 n/g/b Wireless LAN USB Mini-Card + +usb:v13D3p3274* + ID_MODEL_FROM_DATABASE=DVB-T Dongle [RTL2832U] + +usb:v13D3p3282* + ID_MODEL_FROM_DATABASE=DVB-T + GPS Minicard [RTL2832U] + +usb:v13D3p3284* + ID_MODEL_FROM_DATABASE=Wireless LAN USB Mini-Card + +usb:v13D3p3304* + ID_MODEL_FROM_DATABASE=Asus Integrated Bluetooth module [AR3011] + +usb:v13D3p3306* + ID_MODEL_FROM_DATABASE=Mediao 802.11n WLAN [Realtek RTL8191SU] + +usb:v13D3p3315* + ID_MODEL_FROM_DATABASE=Bluetooth module + +usb:v13D3p3375* + ID_MODEL_FROM_DATABASE=Atheros AR3012 Bluetooth 4.0 Adapter + +usb:v13D3p5070* + ID_MODEL_FROM_DATABASE=Webcam + +usb:v13D3p5111* + ID_MODEL_FROM_DATABASE=Integrated Webcam + +usb:v13D3p5115* + ID_MODEL_FROM_DATABASE=Integrated Webcam + +usb:v13D3p5116* + ID_MODEL_FROM_DATABASE=Integrated Webcam + +usb:v13D3p5126* + ID_MODEL_FROM_DATABASE=PC Cam + +usb:v13D3p5702* + ID_MODEL_FROM_DATABASE=UVC VGA Webcam + +usb:v13D3p5710* + ID_MODEL_FROM_DATABASE=UVC VGA Webcam + +usb:v13D3p5716* + ID_MODEL_FROM_DATABASE=UVC VGA Webcam + +usb:v13D3p7020* + ID_MODEL_FROM_DATABASE=DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) + +usb:v13D3p7022* + ID_MODEL_FROM_DATABASE=DTV-DVB UDST7022BDA DVB-S Box(Without HID) + +usb:v13DC* + ID_VENDOR_FROM_DATABASE=ALEREON, INC. + +usb:v13DD* + ID_VENDOR_FROM_DATABASE=i.Tech Dynamic Limited + +usb:v13E1* + ID_VENDOR_FROM_DATABASE=Kaibo Wire & Cable (Shenzhen) Co., Ltd. + +usb:v13E5* + ID_VENDOR_FROM_DATABASE=Rane + +usb:v13E5p0001* + ID_MODEL_FROM_DATABASE=SL-1 + +usb:v13E5p0003* + ID_MODEL_FROM_DATABASE=TTM 57SL + +usb:v13E6* + ID_VENDOR_FROM_DATABASE=TechnoScope Co., Ltd. + +usb:v13EA* + ID_VENDOR_FROM_DATABASE=Hengstler + +usb:v13EAp0001* + ID_MODEL_FROM_DATABASE=C-56 Thermal Printer + +usb:v13EC* + ID_VENDOR_FROM_DATABASE=Zydacron + +usb:v13ECp0006* + ID_MODEL_FROM_DATABASE=HID Remote Control + +usb:v13EE* + ID_VENDOR_FROM_DATABASE=MosArt + +usb:v13EEp0003* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v13FD* + ID_VENDOR_FROM_DATABASE=Initio Corporation + +usb:v13FDp0840* + ID_MODEL_FROM_DATABASE=INIC-1618L SATA + +usb:v13FDp0841* + ID_MODEL_FROM_DATABASE=Samsung SE-T084M DVD-RW + +usb:v13FDp1340* + ID_MODEL_FROM_DATABASE=Hi-Speed USB to SATA Bridge + +usb:v13FDp160F* + ID_MODEL_FROM_DATABASE=RocketFish SATA Bridge [INIC-1611] + +usb:v13FDp1640* + ID_MODEL_FROM_DATABASE=INIC-1610L SATA Bridge + +usb:v13FDp1840* + ID_MODEL_FROM_DATABASE=INIC-1608 SATA bridge + +usb:v13FE* + ID_VENDOR_FROM_DATABASE=Kingston Technology Company Inc. + +usb:v13FEp1A00* + ID_MODEL_FROM_DATABASE=512MB/1GB Flash Drive + +usb:v13FEp1A23* + ID_MODEL_FROM_DATABASE=512MB Flash Drive + +usb:v13FEp1D00* + ID_MODEL_FROM_DATABASE=DataTraveler 2.0 1GB/4GB Flash Drive / Patriot Xporter 4GB Flash Drive + +usb:v13FEp1E00* + ID_MODEL_FROM_DATABASE=Flash Drive 2 GB [ICIDU 2 GB] + +usb:v13FEp1E50* + ID_MODEL_FROM_DATABASE=U3 Smart Drive + +usb:v13FEp1F00* + ID_MODEL_FROM_DATABASE=DataTraveler 2.0 4GB Flash Drive / Patriot Xporter 32GB (PEF32GUSB) Flash Drive + +usb:v13FEp1F23* + ID_MODEL_FROM_DATABASE=2Gb + +usb:v13FEp2240* + ID_MODEL_FROM_DATABASE=microSD card reader + +usb:v13FEp3100* + ID_MODEL_FROM_DATABASE=2/4 GB stick + +usb:v13FEp3123* + ID_MODEL_FROM_DATABASE=Verbatim STORE N GO 4GB + +usb:v13FEp3800* + ID_MODEL_FROM_DATABASE=Rage XT Flash Drive + +usb:v13FEp3E00* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v13FEp5100* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v1400* + ID_VENDOR_FROM_DATABASE=Axxion Group Corp. + +usb:v1402* + ID_VENDOR_FROM_DATABASE=Bowe Bell & Howell + +usb:v1403* + ID_VENDOR_FROM_DATABASE=Sitronix + +usb:v1403p0001* + ID_MODEL_FROM_DATABASE=Digital Photo Frame + +usb:v140E* + ID_VENDOR_FROM_DATABASE=Telechips, Inc. + +usb:v140EpB011* + ID_MODEL_FROM_DATABASE=TCC780X-based player (USB Boot mode) + +usb:v140EpB021* + ID_MODEL_FROM_DATABASE=TCC77X-based players (USB Boot mode) + +usb:v1410* + ID_VENDOR_FROM_DATABASE=Novatel Wireless + +usb:v1410p1110* + ID_MODEL_FROM_DATABASE=Merlin S620 + +usb:v1410p1120* + ID_MODEL_FROM_DATABASE=Merlin EX720 + +usb:v1410p1130* + ID_MODEL_FROM_DATABASE=Merlin S720 + +usb:v1410p1400* + ID_MODEL_FROM_DATABASE=Merlin U730/U740 (Vodafone) + +usb:v1410p1410* + ID_MODEL_FROM_DATABASE=Merlin U740 (non-Vodafone) + +usb:v1410p1430* + ID_MODEL_FROM_DATABASE=Merlin XU870 + +usb:v1410p1450* + ID_MODEL_FROM_DATABASE=Merlin X950D + +usb:v1410p2110* + ID_MODEL_FROM_DATABASE=Ovation U720/MCD3000 + +usb:v1410p2410* + ID_MODEL_FROM_DATABASE=Expedite EU740 + +usb:v1410p2420* + ID_MODEL_FROM_DATABASE=Expedite EU850D/EU860D/EU870D + +usb:v1410p4100* + ID_MODEL_FROM_DATABASE=U727 + +usb:v1410p4400* + ID_MODEL_FROM_DATABASE=Ovation MC930D/MC950D + +usb:v1410p9010* + ID_MODEL_FROM_DATABASE=Expedite E362 + +usb:v1410pA001* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem + +usb:v1410pA008* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem (QDL mode) + +usb:v1410pB001* + ID_MODEL_FROM_DATABASE=Ovation MC551 + +usb:v1415* + ID_VENDOR_FROM_DATABASE=Nam Tai E&E Products Ltd. or OmniVision Technologies, Inc. + +usb:v1415p0000* + ID_MODEL_FROM_DATABASE=Sony SingStar USBMIC + +usb:v1415p0020* + ID_MODEL_FROM_DATABASE=Sony Wireless SingStar + +usb:v1415p2000* + ID_MODEL_FROM_DATABASE=Sony Playstation Eye + +usb:v1419* + ID_VENDOR_FROM_DATABASE=ABILITY ENTERPRISE CO., LTD. + +usb:v1429* + ID_VENDOR_FROM_DATABASE=Vega Technologies Industrial (Austria) Co. + +usb:v142A* + ID_VENDOR_FROM_DATABASE=Thales E-Transactions + +usb:v142Ap0003* + ID_MODEL_FROM_DATABASE=Artema Hybrid + +usb:v142Ap0005* + ID_MODEL_FROM_DATABASE=Artema Modular + +usb:v142Ap0043* + ID_MODEL_FROM_DATABASE=medCompact + +usb:v142B* + ID_VENDOR_FROM_DATABASE=Arbiter Systems, Inc. + +usb:v142Bp03A5* + ID_MODEL_FROM_DATABASE=933A Portable Power Sentinel + +usb:v1430* + ID_VENDOR_FROM_DATABASE=RedOctane + +usb:v1430p0150* + ID_MODEL_FROM_DATABASE=wireless receiver for skylanders wii + +usb:v1430p4734* + ID_MODEL_FROM_DATABASE=Guitar Hero4 hub + +usb:v1430p474B* + ID_MODEL_FROM_DATABASE=Guitar Hero MIDI interface + +usb:v1431* + ID_VENDOR_FROM_DATABASE=Pertech Resources, Inc. + +usb:v1435* + ID_VENDOR_FROM_DATABASE=Wistron NeWeb + +usb:v1435p0427* + ID_MODEL_FROM_DATABASE=UR054g 802.11g Wireless Adapter [Intersil ISL3887] + +usb:v1435p0711* + ID_MODEL_FROM_DATABASE=UR055G 802.11bg + +usb:v1435p0804* + ID_MODEL_FROM_DATABASE=AR9170+AR9104 802.11abgn Wireless Adapter + +usb:v1435p0826* + ID_MODEL_FROM_DATABASE=AR5523 + +usb:v1435p0827* + ID_MODEL_FROM_DATABASE=AR5523 (no firmware) + +usb:v1435p0828* + ID_MODEL_FROM_DATABASE=AR5523 + +usb:v1435p0829* + ID_MODEL_FROM_DATABASE=AR5523 (no firmware) + +usb:v1436* + ID_VENDOR_FROM_DATABASE=Denali Software, Inc. + +usb:v143C* + ID_VENDOR_FROM_DATABASE=Altek Corporation + +usb:v1443* + ID_VENDOR_FROM_DATABASE=Digilent + +usb:v1443p0007* + ID_MODEL_FROM_DATABASE=Development board JTAG + +usb:v1446* + ID_VENDOR_FROM_DATABASE=X.J.GROUP + +usb:v1446p6A73* + ID_MODEL_FROM_DATABASE=Stamps.com Model 510 5LB Scale + +usb:v1453* + ID_VENDOR_FROM_DATABASE=Radio Shack + +usb:v1453p4026* + ID_MODEL_FROM_DATABASE=26-183 Serial Cable + +usb:v1456* + ID_VENDOR_FROM_DATABASE=Extending Wire & Cable Co., Ltd. + +usb:v1457* + ID_VENDOR_FROM_DATABASE=First International Computer, Inc. + +usb:v1457p5117* + ID_MODEL_FROM_DATABASE=OpenMoko Neo1973 kernel usbnet (g_ether, CDC Ethernet) mode + +usb:v1457p5118* + ID_MODEL_FROM_DATABASE=OpenMoko Neo1973 Debug board (V2+) + +usb:v1457p5119* + ID_MODEL_FROM_DATABASE=OpenMoko Neo1973 u-boot cdc_acm serial port + +usb:v1457p5120* + ID_MODEL_FROM_DATABASE=OpenMoko Neo1973 u-boot usbtty generic serial + +usb:v1457p5121* + ID_MODEL_FROM_DATABASE=OpenMoko Neo1973 kernel mass storage (g_storage) mode + +usb:v1457p5122* + ID_MODEL_FROM_DATABASE=OpenMoko Neo1973 / Neo Freerunner kernel cdc_ether USB network + +usb:v1457p5123* + ID_MODEL_FROM_DATABASE=OpenMoko Neo1973 internal USB CSR4 module + +usb:v1457p5124* + ID_MODEL_FROM_DATABASE=OpenMoko Neo1973 Bluetooth Device ID service + +usb:v145F* + ID_VENDOR_FROM_DATABASE=Trust + +usb:v145Fp0106* + ID_MODEL_FROM_DATABASE=Trust K56 V92 USB Modem + +usb:v145Fp013D* + ID_MODEL_FROM_DATABASE=PC Camera (SN9C201 + OV7660) + +usb:v145Fp013F* + ID_MODEL_FROM_DATABASE=Megapixel Auto Focus Webcam + +usb:v145Fp0142* + ID_MODEL_FROM_DATABASE=WB-6250X Webcam + +usb:v145Fp015A* + ID_MODEL_FROM_DATABASE=WB-8300X 2MP Webcam + +usb:v145Fp0161* + ID_MODEL_FROM_DATABASE=15901 802.11bg Wireless Adapter [Realtek RTL8187L] + +usb:v145Fp0167* + ID_MODEL_FROM_DATABASE=Widescreen 3MP Webcam + +usb:v145Fp0176* + ID_MODEL_FROM_DATABASE=Isla Keyboard + +usb:v1460* + ID_VENDOR_FROM_DATABASE=Tatung Co. + +usb:v1460p9150* + ID_MODEL_FROM_DATABASE=eHome Infrared Transceiver + +usb:v1461* + ID_VENDOR_FROM_DATABASE=Staccato Communications + +usb:v1462* + ID_VENDOR_FROM_DATABASE=Micro Star International + +usb:v1462p5512* + ID_MODEL_FROM_DATABASE=MegaStick-1 Flash Stick + +usb:v1462p8807* + ID_MODEL_FROM_DATABASE=DIGIVOX mini III [af9015] + +usb:v1472* + ID_VENDOR_FROM_DATABASE=Huawei-3Com + +usb:v1472p0007* + ID_MODEL_FROM_DATABASE=Aolynk WUB300g [ZyDAS ZD1211] + +usb:v1472p0009* + ID_MODEL_FROM_DATABASE=Aolynk WUB320g + +usb:v147A* + ID_VENDOR_FROM_DATABASE=Formosa Industrial Computing, Inc. + +usb:v147ApE015* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v147ApE016* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v147ApE017* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v147ApE018* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v147ApE02C* + ID_MODEL_FROM_DATABASE=Infrared Receiver + +usb:v147ApE03A* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v147ApE03C* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v147ApE03E* + ID_MODEL_FROM_DATABASE=Infrared Receiver [IR605A/Q] + +usb:v147E* + ID_VENDOR_FROM_DATABASE=Upek + +usb:v147Ep1000* + ID_MODEL_FROM_DATABASE=Biometric Touchchip/Touchstrip Fingerprint Sensor + +usb:v147Ep1001* + ID_MODEL_FROM_DATABASE=TCS5B Fingerprint sensor + +usb:v147Ep1002* + ID_MODEL_FROM_DATABASE=Biometric Touchchip/Touchstrip Fingerprint Sensor + +usb:v147Ep2016* + ID_MODEL_FROM_DATABASE=Biometric Touchchip/Touchstrip Fingerprint Sensor + +usb:v147Ep2020* + ID_MODEL_FROM_DATABASE=TouchChip Fingerprint Coprocessor (WBF advanced mode) + +usb:v147Ep3000* + ID_MODEL_FROM_DATABASE=TCS1C EIM/Cypress Fingerprint sensor + +usb:v147Ep3001* + ID_MODEL_FROM_DATABASE=TCS1C EIM/STM32 Fingerprint sensor + +usb:v147F* + ID_VENDOR_FROM_DATABASE=Hama GmbH & Co., KG + +usb:v1482* + ID_VENDOR_FROM_DATABASE=Vaillant + +usb:v1482p1005* + ID_MODEL_FROM_DATABASE=VRD PC-Interface + +usb:v1484* + ID_VENDOR_FROM_DATABASE=Elsa AG [hex] + +usb:v1484p1746* + ID_MODEL_FROM_DATABASE=Ecomo 19H99 Monitor + +usb:v1484p7616* + ID_MODEL_FROM_DATABASE=Elsa Hub + +usb:v1485* + ID_VENDOR_FROM_DATABASE=Silicom + +usb:v1485p0001* + ID_MODEL_FROM_DATABASE=U2E + +usb:v1485p0002* + ID_MODEL_FROM_DATABASE=Psion Gold Port Ethernet + +usb:v1487* + ID_VENDOR_FROM_DATABASE=DSP Group, Ltd. + +usb:v148E* + ID_VENDOR_FROM_DATABASE=EVATRONIX SA + +usb:v148F* + ID_VENDOR_FROM_DATABASE=Ralink Technology, Corp. + +usb:v148Fp1706* + ID_MODEL_FROM_DATABASE=RT2500USB Wireless Adapter + +usb:v148Fp2070* + ID_MODEL_FROM_DATABASE=RT2070 Wireless Adapter + +usb:v148Fp2570* + ID_MODEL_FROM_DATABASE=RT2570 Wireless Adapter + +usb:v148Fp2573* + ID_MODEL_FROM_DATABASE=RT2501/RT2573 Wireless Adapter + +usb:v148Fp2671* + ID_MODEL_FROM_DATABASE=RT2601/RT2671 Wireless Adapter + +usb:v148Fp2770* + ID_MODEL_FROM_DATABASE=RT2770 Wireless Adapter + +usb:v148Fp2870* + ID_MODEL_FROM_DATABASE=RT2870 Wireless Adapter + +usb:v148Fp3070* + ID_MODEL_FROM_DATABASE=RT2870/RT3070 Wireless Adapter + +usb:v148Fp3071* + ID_MODEL_FROM_DATABASE=RT3071 Wireless Adapter + +usb:v148Fp3072* + ID_MODEL_FROM_DATABASE=RT3072 Wireless Adapter + +usb:v148Fp3370* + ID_MODEL_FROM_DATABASE=RT3370 Wireless Adapter + +usb:v148Fp3572* + ID_MODEL_FROM_DATABASE=RT3572 Wireless Adapter + +usb:v148Fp3573* + ID_MODEL_FROM_DATABASE=RT3573 Wireless Adapter + +usb:v148Fp5370* + ID_MODEL_FROM_DATABASE=RT5370 Wireless Adapter + +usb:v148Fp5372* + ID_MODEL_FROM_DATABASE=RT5372 Wireless Adapter + +usb:v148Fp5572* + ID_MODEL_FROM_DATABASE=RT5572 Wireless Adapter + +usb:v148Fp9020* + ID_MODEL_FROM_DATABASE=RT2500USB Wireless Adapter + +usb:v148Fp9021* + ID_MODEL_FROM_DATABASE=RT2501USB Wireless Adapter + +usb:v1491* + ID_VENDOR_FROM_DATABASE=Futronic Technology Co. Ltd. + +usb:v1491p0020* + ID_MODEL_FROM_DATABASE=FS81 Fingerprint Scanner Module + +usb:v1493* + ID_VENDOR_FROM_DATABASE=Suunto + +usb:v1497* + ID_VENDOR_FROM_DATABASE=Panstrong Company Ltd. + +usb:v1498* + ID_VENDOR_FROM_DATABASE=Microtek International Inc. + +usb:v1498pA090* + ID_MODEL_FROM_DATABASE=DVB-T Tuner + +usb:v149A* + ID_VENDOR_FROM_DATABASE=Imagination Technologies + +usb:v149Ap2107* + ID_MODEL_FROM_DATABASE=DBX1 DSP core + +usb:v14AA* + ID_VENDOR_FROM_DATABASE=WideView Technology Inc. + +usb:v14AAp0001* + ID_MODEL_FROM_DATABASE=Avermedia AverTV DVBT USB1.1 (cold) + +usb:v14AAp0002* + ID_MODEL_FROM_DATABASE=Avermedia AverTV DVBT USB1.1 (warm) + +usb:v14AAp0201* + ID_MODEL_FROM_DATABASE=AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (cold) + +usb:v14AAp0221* + ID_MODEL_FROM_DATABASE=WT-220U DVB-T dongle + +usb:v14AAp022B* + ID_MODEL_FROM_DATABASE=WT-220U DVB-T dongle + +usb:v14AAp0301* + ID_MODEL_FROM_DATABASE=AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (warm) + +usb:v14AD* + ID_VENDOR_FROM_DATABASE=CTK Corporation + +usb:v14AE* + ID_VENDOR_FROM_DATABASE=Printronix Inc. + +usb:v14AF* + ID_VENDOR_FROM_DATABASE=ATP Electronics Inc. + +usb:v14B0* + ID_VENDOR_FROM_DATABASE=StarTech.com Ltd. + +usb:v14B2* + ID_VENDOR_FROM_DATABASE=Ralink Technology, Corp. + +usb:v14B2p3A93* + ID_MODEL_FROM_DATABASE=Topcom 802.11bg Wireless Adapter [Atheros AR5523] + +usb:v14B2p3A95* + ID_MODEL_FROM_DATABASE=Toshiba WUS-G06G-JT 802.11bg Wireless Adapter [Atheros AR5523] + +usb:v14B2p3A98* + ID_MODEL_FROM_DATABASE=Airlink101 AWLL4130 802.11bg Wireless Adapter [Atheros AR5523] + +usb:v14B2p3C02* + ID_MODEL_FROM_DATABASE=Conceptronic C54RU v2 802.11bg Wireless Adapter [Ralink RT2571] + +usb:v14B2p3C05* + ID_MODEL_FROM_DATABASE=rt2570 802.11g WLAN + +usb:v14B2p3C06* + ID_MODEL_FROM_DATABASE=Conceptronic C300RU v1 802.11bgn Wireless Adapter [Ralink RT2870] + +usb:v14B2p3C07* + ID_MODEL_FROM_DATABASE=802.11n adapter + +usb:v14B2p3C09* + ID_MODEL_FROM_DATABASE=802.11n adapter + +usb:v14B2p3C22* + ID_MODEL_FROM_DATABASE=Conceptronic C54RU v3 802.11bg Wireless Adapter [Ralink RT2571W] + +usb:v14B2p3C23* + ID_MODEL_FROM_DATABASE=Airlink101 AWLL6080 802.11bgn Wireless Adapter [Ralink RT2870] + +usb:v14B2p3C24* + ID_MODEL_FROM_DATABASE=NEC NP01LM 802.11abg Wireless Adapter [Ralink RT2571W] + +usb:v14B2p3C25* + ID_MODEL_FROM_DATABASE=DrayTek Vigor N61 802.11bgn Wireless Adapter [Ralink RT2870] + +usb:v14B2p3C27* + ID_MODEL_FROM_DATABASE=Airlink101 AWLL6070 802.11bgn Wireless Adapter [Ralink RT2770] + +usb:v14B2p3C28* + ID_MODEL_FROM_DATABASE=Conceptronic C300RU v2 802.11bgn Wireless Adapter [Ralink RT2770] + +usb:v14B2p3C2B* + ID_MODEL_FROM_DATABASE=NEC NP02LM 802.11bgn Wireless Adapter [Ralink RT3072] + +usb:v14B2p3C2C* + ID_MODEL_FROM_DATABASE=Keebox W150NU 802.11bgn Wireless Adapter [Ralink RT3070] + +usb:v14C0* + ID_VENDOR_FROM_DATABASE=Rockwell Automation, Inc. + +usb:v14C2* + ID_VENDOR_FROM_DATABASE=Gemlight Computer, Ltd + +usb:v14C2p0250* + ID_MODEL_FROM_DATABASE=Storage Adapter V2 + +usb:v14C2p0350* + ID_MODEL_FROM_DATABASE=Storage Adapter V2 + +usb:v14C8* + ID_VENDOR_FROM_DATABASE=Zytronic + +usb:v14CD* + ID_VENDOR_FROM_DATABASE=Super Top + +usb:v14CDp121C* + ID_MODEL_FROM_DATABASE=microSD card reader + +usb:v14CDp123A* + ID_MODEL_FROM_DATABASE=SD/MMC/RS-MMC Card Reader + +usb:v14CDp125C* + ID_MODEL_FROM_DATABASE=SD card reader + +usb:v14CDp127B* + ID_MODEL_FROM_DATABASE=SDXC Reader + +usb:v14CDp6116* + ID_MODEL_FROM_DATABASE=M6116 SATA Bridge + +usb:v14CDp6600* + ID_MODEL_FROM_DATABASE=USB 2.0 IDE DEVICE + +usb:v14CDp6700* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v14CDp6900* + ID_MODEL_FROM_DATABASE=Card Reader + +usb:v14CDp8123* + ID_MODEL_FROM_DATABASE=SD MMC Reader + +usb:v14CDp8125* + ID_MODEL_FROM_DATABASE=SD MMC Reader + +usb:v14D8* + ID_VENDOR_FROM_DATABASE=JAMER INDUSTRIES CO., LTD. + +usb:v14DD* + ID_VENDOR_FROM_DATABASE=Raritan Computer, Inc. + +usb:v14DDp1007* + ID_MODEL_FROM_DATABASE=D2CIM-VUSB KVM connector + +usb:v14E1* + ID_VENDOR_FROM_DATABASE=Dialogue Technology Corp. + +usb:v14E1p5000* + ID_MODEL_FROM_DATABASE=PenMount 5000 Touch Controller + +usb:v14E5* + ID_VENDOR_FROM_DATABASE=SAIN Information & Communications Co., Ltd. + +usb:v14EA* + ID_VENDOR_FROM_DATABASE=Planex Communications + +usb:v14EApAB10* + ID_MODEL_FROM_DATABASE=GW-US54GZ + +usb:v14EApAB11* + ID_MODEL_FROM_DATABASE=GU-1000T + +usb:v14EApAB13* + ID_MODEL_FROM_DATABASE=GW-US54Mini 802.11bg + +usb:v14ED* + ID_VENDOR_FROM_DATABASE=Shure Inc. + +usb:v14EDp29B6* + ID_MODEL_FROM_DATABASE=X2u Adapter + +usb:v14F7* + ID_VENDOR_FROM_DATABASE=TechniSat Digital GmbH + +usb:v14F7p0001* + ID_MODEL_FROM_DATABASE=SkyStar 2 HD CI + +usb:v14F7p0002* + ID_MODEL_FROM_DATABASE=SkyStar 2 HD CI + +usb:v14F7p0003* + ID_MODEL_FROM_DATABASE=CableStar Combo HD CI + +usb:v14F7p0004* + ID_MODEL_FROM_DATABASE=AirStar TeleStick 2 + +usb:v14F7p0500* + ID_MODEL_FROM_DATABASE=DVB-PC TV Star HD + +usb:v1500* + ID_VENDOR_FROM_DATABASE=Ellisys + +usb:v1501* + ID_VENDOR_FROM_DATABASE=Pine-Tum Enterprise Co., Ltd. + +usb:v1509* + ID_VENDOR_FROM_DATABASE=First International Computer, Inc. + +usb:v1509p9242* + ID_MODEL_FROM_DATABASE=eHome Infrared Transceiver + +usb:v1513* + ID_VENDOR_FROM_DATABASE=medMobile + +usb:v1513p0444* + ID_MODEL_FROM_DATABASE=medMobile + +usb:v1514* + ID_VENDOR_FROM_DATABASE=Actel + +usb:v1514p2003* + ID_MODEL_FROM_DATABASE=FlashPro3 Programmer + +usb:v1514p2004* + ID_MODEL_FROM_DATABASE=FlashPro3 Programmer + +usb:v1514p2005* + ID_MODEL_FROM_DATABASE=FlashPro3 Programmer + +usb:v1516* + ID_VENDOR_FROM_DATABASE=CompUSA + +usb:v1516p1603* + ID_MODEL_FROM_DATABASE=Flash Drive + +usb:v1516p8628* + ID_MODEL_FROM_DATABASE=Pen Drive + +usb:v1518* + ID_VENDOR_FROM_DATABASE=Cheshire Engineering Corp. + +usb:v1518p0001* + ID_MODEL_FROM_DATABASE=HDReye High Dynamic Range Camera + +usb:v1518p0002* + ID_MODEL_FROM_DATABASE=HDReye (before firmware loads) + +usb:v1520* + ID_VENDOR_FROM_DATABASE=Bitwire Corp. + +usb:v1524* + ID_VENDOR_FROM_DATABASE=ENE Technology Inc + +usb:v1524p6680* + ID_MODEL_FROM_DATABASE=UTS 6680 + +usb:v1527* + ID_VENDOR_FROM_DATABASE=Silicon Portals + +usb:v1527p0200* + ID_MODEL_FROM_DATABASE=YAP Phone (no firmware) + +usb:v1527p0201* + ID_MODEL_FROM_DATABASE=YAP Phone + +usb:v1529* + ID_VENDOR_FROM_DATABASE=UBIQUAM Co., Ltd. + +usb:v1529p3100* + ID_MODEL_FROM_DATABASE=CDMA 1xRTT USB Modem (U-100/105/200/300/520) + +usb:v152A* + ID_VENDOR_FROM_DATABASE=Thesycon Systemsoftware & Consulting GmbH + +usb:v152D* + ID_VENDOR_FROM_DATABASE=JMicron Technology Corp. / JMicron USA Technology Corp. + +usb:v152Dp0539* + ID_MODEL_FROM_DATABASE=JMS539 SuperSpeed SATA II 3.0G Bridge + +usb:v152Dp2329* + ID_MODEL_FROM_DATABASE=JM20329 SATA Bridge + +usb:v152Dp2335* + ID_MODEL_FROM_DATABASE=ATA/ATAPI Bridge + +usb:v152Dp2336* + ID_MODEL_FROM_DATABASE=Hard Disk Drive + +usb:v152Dp2337* + ID_MODEL_FROM_DATABASE=ATA/ATAPI Bridge + +usb:v152Dp2338* + ID_MODEL_FROM_DATABASE=JM20337 Hi-Speed USB to SATA & PATA Combo Bridge + +usb:v152Dp2339* + ID_MODEL_FROM_DATABASE=JM20339 SATA Bridge + +usb:v152Dp2352* + ID_MODEL_FROM_DATABASE=ATA/ATAPI Bridge + +usb:v152Dp2509* + ID_MODEL_FROM_DATABASE=JMS539 SuperSpeed SATA II 3.0G Bridge + +usb:v152E* + ID_VENDOR_FROM_DATABASE=LG (HLDS) + +usb:v152Ep2507* + ID_MODEL_FROM_DATABASE=PL-2507 IDE Controller + +usb:v152EpE001* + ID_MODEL_FROM_DATABASE=GSA-5120D DVD-RW + +usb:v1532* + ID_VENDOR_FROM_DATABASE=Razer USA, Ltd + +usb:v1532p0001* + ID_MODEL_FROM_DATABASE=RZ01-020300 Optical Mouse [Diamondback] + +usb:v1532p0003* + ID_MODEL_FROM_DATABASE=Krait Mouse + +usb:v1532p0007* + ID_MODEL_FROM_DATABASE=DeathAdder Mouse + +usb:v1532p0013* + ID_MODEL_FROM_DATABASE=Orochi mouse + +usb:v1532p0016* + ID_MODEL_FROM_DATABASE=DeathAdder Mouse + +usb:v1532p0017* + ID_MODEL_FROM_DATABASE=RZ01-0035 Laser Gaming Mouse [Imperator] + +usb:v1532p001C* + ID_MODEL_FROM_DATABASE=RZ01-0036 Optical Gaming Mouse [Abyssus] + +usb:v1532p0024* + ID_MODEL_FROM_DATABASE=Razer Mamba + +usb:v1532p0036* + ID_MODEL_FROM_DATABASE=RZ01-0075, Gaming Mouse [Naga Hex] + +usb:v1532p0101* + ID_MODEL_FROM_DATABASE=Copperhead Mouse + +usb:v1532p0102* + ID_MODEL_FROM_DATABASE=Tarantula Keyboard + +usb:v1532p0109* + ID_MODEL_FROM_DATABASE=Lycosa Keyboard + +usb:v1532p0300* + ID_MODEL_FROM_DATABASE=RZ06-0063 Motion Sensing Controllers [Hydra] + +usb:v1546* + ID_VENDOR_FROM_DATABASE=U-Blox AG + +usb:v1547* + ID_VENDOR_FROM_DATABASE=SG Intec Ltd & Co KG + +usb:v1547p1000* + ID_MODEL_FROM_DATABASE=SG-Lock[U2] + +usb:v154A* + ID_VENDOR_FROM_DATABASE=Celectronic GmbH + +usb:v154Ap8180* + ID_MODEL_FROM_DATABASE=CARD STAR/medic2 + +usb:v154B* + ID_VENDOR_FROM_DATABASE=PNY + +usb:v154Bp0010* + ID_MODEL_FROM_DATABASE=USB 2.0 Flash Drive + +usb:v154Bp004D* + ID_MODEL_FROM_DATABASE=8 GB Flash Drive + +usb:v154Bp0057* + ID_MODEL_FROM_DATABASE=32GB Micro Slide Attache Flash Drive + +usb:v154Bp6545* + ID_MODEL_FROM_DATABASE=FD Device + +usb:v154D* + ID_VENDOR_FROM_DATABASE=ConnectCounty Holdings Berhad + +usb:v154E* + ID_VENDOR_FROM_DATABASE=D&M Holdings, Inc. (Denon/Marantz) + +usb:v154Ep3000* + ID_MODEL_FROM_DATABASE=Marantz RC9001 Remote Control + +usb:v154F* + ID_VENDOR_FROM_DATABASE=SNBC CO., Ltd + +usb:v1554* + ID_VENDOR_FROM_DATABASE=Prolink Microsystems Corp. + +usb:v1554p5010* + ID_MODEL_FROM_DATABASE=PV-D231U(RN)-F [PixelView PlayTV SBTVD Full-Seg] + +usb:v1557* + ID_VENDOR_FROM_DATABASE=OQO + +usb:v1557p0002* + ID_MODEL_FROM_DATABASE=model 01 WiFi interface + +usb:v1557p0003* + ID_MODEL_FROM_DATABASE=model 01 Bluetooth interface + +usb:v1557p0A80* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem (QDL mode) + +usb:v1557p7720* + ID_MODEL_FROM_DATABASE=model 01+ Ethernet + +usb:v1557p8150* + ID_MODEL_FROM_DATABASE=model 01 Ethernet interface + +usb:v1568* + ID_VENDOR_FROM_DATABASE=Sunf Pu Technology Co., Ltd + +usb:v156F* + ID_VENDOR_FROM_DATABASE=Quantum Corporation + +usb:v1570* + ID_VENDOR_FROM_DATABASE=ALLTOP TECHNOLOGY CO., LTD. + +usb:v157B* + ID_VENDOR_FROM_DATABASE=Ketron SRL + +usb:v157E* + ID_VENDOR_FROM_DATABASE=TRENDnet + +usb:v157Ep3006* + ID_MODEL_FROM_DATABASE=TEW-444UB EU [TRENDnet] + +usb:v157Ep3007* + ID_MODEL_FROM_DATABASE=TEW-444UB EU (no firmware) + +usb:v157Ep300A* + ID_MODEL_FROM_DATABASE=TEW-429UB 802.11bg + +usb:v157Ep300B* + ID_MODEL_FROM_DATABASE=TEW-429UB 802.11bg + +usb:v157Ep300C* + ID_MODEL_FROM_DATABASE=TEW-429UF A1 802.11bg Wireless Adapter [ZyDAS ZD1211B] + +usb:v157Ep300D* + ID_MODEL_FROM_DATABASE=TEW-429UB C1 802.11bg + +usb:v157Ep300E* + ID_MODEL_FROM_DATABASE=SMC SMCWUSB-N 802.11bgn 2x2:2 Wireless Adapter [Ralink RT2870] + +usb:v157Ep3012* + ID_MODEL_FROM_DATABASE=TEW-604UB 802.11bg Wireless Adapter [Atheros AR5523] + +usb:v157Ep3013* + ID_MODEL_FROM_DATABASE=TEW-645UB 802.11bgn 1x2:2 Wireless Adapter [Ralink RT2770] + +usb:v157Ep3204* + ID_MODEL_FROM_DATABASE=Allnet ALL0298 v2 802.11bg + +usb:v157Ep3205* + ID_MODEL_FROM_DATABASE=Allnet ALL0283 [AR5523] + +usb:v157Ep3206* + ID_MODEL_FROM_DATABASE=Allnet ALL0283 [AR5523](no firmware) + +usb:v157Ep3207* + ID_MODEL_FROM_DATABASE=TEW-509UB A1 802.11abg Wireless Adapter [ZyDAS ZD1211] + +usb:v157Ep3208* + ID_MODEL_FROM_DATABASE=TEW-509UB 1.1R 802.11abg Wireless Adapter + +usb:v1582* + ID_VENDOR_FROM_DATABASE=Fiberline + +usb:v1582p6003* + ID_MODEL_FROM_DATABASE=WL-430U 802.11bg + +usb:v1587* + ID_VENDOR_FROM_DATABASE=SMA Technologie AG + +usb:v158D* + ID_VENDOR_FROM_DATABASE=Oakley Inc. + +usb:v158E* + ID_VENDOR_FROM_DATABASE=JDS Uniphase Corporation (JDSU) + +usb:v158Ep0820* + ID_MODEL_FROM_DATABASE=SmartPocket Class Device + +usb:v1598* + ID_VENDOR_FROM_DATABASE=Kunshan Guoji Electronics Co., Ltd. + +usb:v15A2* + ID_VENDOR_FROM_DATABASE=Freescale Semiconductor, Inc. + +usb:v15A2p003B* + ID_MODEL_FROM_DATABASE=USB2CAN Application for ColdFire DEMOJM board + +usb:v15A2p0042* + ID_MODEL_FROM_DATABASE=OSBDM - Debug Port + +usb:v15A2p004F* + ID_MODEL_FROM_DATABASE=i.MX28 SystemOnChip in RecoveryMode + +usb:v15A2p0052* + ID_MODEL_FROM_DATABASE=i.MX50 SystemOnChip in RecoveryMode + +usb:v15A2p0054* + ID_MODEL_FROM_DATABASE=i.MX6Q SystemOnChip in RecoveryMode + +usb:v15A4* + ID_VENDOR_FROM_DATABASE=Afatech Technologies, Inc. + +usb:v15A4p1000* + ID_MODEL_FROM_DATABASE=AF9015/AF9035 DVB-T stick + +usb:v15A4p1001* + ID_MODEL_FROM_DATABASE=AF9015/AF9035 DVB-T stick + +usb:v15A4p1336* + ID_MODEL_FROM_DATABASE=SDHC/MicroSD/MMC/MS/M2/CF/XD Flash Card Reader + +usb:v15A4p9015* + ID_MODEL_FROM_DATABASE=AF9015 DVB-T USB2.0 stick + +usb:v15A4p9016* + ID_MODEL_FROM_DATABASE=AF9015 DVB-T USB2.0 stick + +usb:v15A8* + ID_VENDOR_FROM_DATABASE=Teams Power Limited + +usb:v15A9* + ID_VENDOR_FROM_DATABASE=Gemtek + +usb:v15A9p0002* + ID_MODEL_FROM_DATABASE=SparkLAN WL-682 802.11bg Wireless Adapter [Intersil ISL3887] + +usb:v15A9p0004* + ID_MODEL_FROM_DATABASE=WUBR-177G [Ralink RT2571W] + +usb:v15A9p0006* + ID_MODEL_FROM_DATABASE=Wireless 11n USB Adapter + +usb:v15A9p0010* + ID_MODEL_FROM_DATABASE=802.11n USB Wireless Card + +usb:v15A9p0012* + ID_MODEL_FROM_DATABASE=WUBR-208N 802.11abgn Wireless Adapter [Ralink RT2870] + +usb:v15AA* + ID_VENDOR_FROM_DATABASE=Gearway Electronics (Dong Guan) Co., Ltd. + +usb:v15AD* + ID_VENDOR_FROM_DATABASE=VMware Inc. + +usb:v15BA* + ID_VENDOR_FROM_DATABASE=Olimex Ltd. + +usb:v15BAp0003* + ID_MODEL_FROM_DATABASE=OpenOCD JTAG + +usb:v15BAp0004* + ID_MODEL_FROM_DATABASE=OpenOCD JTAG TINY + +usb:v15BAp002A* + ID_MODEL_FROM_DATABASE=ARM-USB-TINY-H JTAG interface + +usb:v15BAp002B* + ID_MODEL_FROM_DATABASE=ARM-USB-OCD-H JTAG+RS232 + +usb:v15C0* + ID_VENDOR_FROM_DATABASE=XL Imaging + +usb:v15C0p0001* + ID_MODEL_FROM_DATABASE=2M pixel Microscope Camera + +usb:v15C0p0002* + ID_MODEL_FROM_DATABASE=3M pixel Microscope Camera + +usb:v15C0p0003* + ID_MODEL_FROM_DATABASE=1.3M pixel Microscope Camera (mono) + +usb:v15C0p0004* + ID_MODEL_FROM_DATABASE=1.3M pixel Microscope Camera (colour) + +usb:v15C0p0005* + ID_MODEL_FROM_DATABASE=3M pixel Microscope Camera (Mk 2) + +usb:v15C0p0006* + ID_MODEL_FROM_DATABASE=2M pixel Microscope Camera (with capture button) + +usb:v15C0p0007* + ID_MODEL_FROM_DATABASE=3M pixel Microscope Camera (with capture button) + +usb:v15C0p0008* + ID_MODEL_FROM_DATABASE=1.3M pixel Microscope Camera (colour, with capture button) + +usb:v15C0p0009* + ID_MODEL_FROM_DATABASE=1.3M pixel Microscope Camera (colour, with capture button) + +usb:v15C0p000A* + ID_MODEL_FROM_DATABASE=2M pixel Microscope Camera (Mk 2) + +usb:v15C0p0010* + ID_MODEL_FROM_DATABASE=1.3M pixel "Tinycam" + +usb:v15C0p0101* + ID_MODEL_FROM_DATABASE=3M pixel Microscope Camera + +usb:v15C2* + ID_VENDOR_FROM_DATABASE=SoundGraph Inc. + +usb:v15C2p0036* + ID_MODEL_FROM_DATABASE=LC16M VFD Display/IR Receiver + +usb:v15C2p0038* + ID_MODEL_FROM_DATABASE=GD01 MX LCD Display/IR Receiver + +usb:v15C2pFFDA* + ID_MODEL_FROM_DATABASE=iMON PAD Remote Controller + +usb:v15C2pFFDC* + ID_MODEL_FROM_DATABASE=iMON PAD Remote Controller + +usb:v15C5* + ID_VENDOR_FROM_DATABASE=Advance Multimedia Internet Technology Inc. (AMIT) + +usb:v15C5p0008* + ID_MODEL_FROM_DATABASE=WL532U 802.11g Adapter + +usb:v15C6* + ID_VENDOR_FROM_DATABASE=Laboratoires MXM + +usb:v15C6p1000* + ID_MODEL_FROM_DATABASE=DigistimSP (cold) + +usb:v15C6p1001* + ID_MODEL_FROM_DATABASE=DigistimSP (warm) + +usb:v15C6p1002* + ID_MODEL_FROM_DATABASE=DigimapSP USB (cold) + +usb:v15C6p1003* + ID_MODEL_FROM_DATABASE=DigimapSP USB (warm) + +usb:v15C6p1004* + ID_MODEL_FROM_DATABASE=DigistimSP (cold) + +usb:v15C6p1005* + ID_MODEL_FROM_DATABASE=DigistimSP (warm) + +usb:v15C6p1100* + ID_MODEL_FROM_DATABASE=Odyssee (cold) + +usb:v15C6p1101* + ID_MODEL_FROM_DATABASE=Odyssee (warm) + +usb:v15C6p1200* + ID_MODEL_FROM_DATABASE=Digispy + +usb:v15C8* + ID_VENDOR_FROM_DATABASE=KTF Technologies + +usb:v15C8p3201* + ID_MODEL_FROM_DATABASE=EVER EV-W100/EV-W250 + +usb:v15C9* + ID_VENDOR_FROM_DATABASE=D-Box Technologies + +usb:v15CA* + ID_VENDOR_FROM_DATABASE=Textech International Ltd. + +usb:v15CAp00C3* + ID_MODEL_FROM_DATABASE=Mini Optical Mouse + +usb:v15CAp0101* + ID_MODEL_FROM_DATABASE=MIDI Interface cable + +usb:v15CAp1806* + ID_MODEL_FROM_DATABASE=MIDI Interface cable + +usb:v15D5* + ID_VENDOR_FROM_DATABASE=Coulomb Electronics Ltd. + +usb:v15D9* + ID_VENDOR_FROM_DATABASE=Trust International B.V. + +usb:v15D9p0A33* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v15D9p0A37* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v15D9p0A41* + ID_MODEL_FROM_DATABASE=MI-2540D [Optical mouse] + +usb:v15D9p0A4C* + ID_MODEL_FROM_DATABASE=USB+PS/2 Optical Mouse + +usb:v15D9p0A4D* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v15DC* + ID_VENDOR_FROM_DATABASE=Hynix Semiconductor Inc. + +usb:v15E0* + ID_VENDOR_FROM_DATABASE=Seong Ji Industrial Co., Ltd. + +usb:v15E1* + ID_VENDOR_FROM_DATABASE=RSA + +usb:v15E1p2007* + ID_MODEL_FROM_DATABASE=RSA SecurID (R) Authenticator + +usb:v15E4* + ID_VENDOR_FROM_DATABASE=Numark + +usb:v15E4p0024* + ID_MODEL_FROM_DATABASE=Mixtrack + +usb:v15E8* + ID_VENDOR_FROM_DATABASE=SohoWare + +usb:v15E8p9100* + ID_MODEL_FROM_DATABASE=NUB100 Ethernet [pegasus] + +usb:v15E8p9110* + ID_MODEL_FROM_DATABASE=10/100 USB Ethernet + +usb:v15E9* + ID_VENDOR_FROM_DATABASE=Pacific Digital Corp. + +usb:v15E9p04CE* + ID_MODEL_FROM_DATABASE=MemoryFrame MF-570 + +usb:v15E9p1968* + ID_MODEL_FROM_DATABASE=MemoryFrame MF-570 + +usb:v15E9p1969* + ID_MODEL_FROM_DATABASE=Digital Frame + +usb:v15EC* + ID_VENDOR_FROM_DATABASE=Belcarra Technologies Corp. + +usb:v15F4* + ID_VENDOR_FROM_DATABASE=HanfTek + +usb:v15F4p0001* + ID_MODEL_FROM_DATABASE=HanfTek UMT-010 USB2.0 DVB-T (cold) + +usb:v15F4p0025* + ID_MODEL_FROM_DATABASE=HanfTek UMT-010 USB2.0 DVB-T (warm) + +usb:v1604* + ID_VENDOR_FROM_DATABASE=Tascam + +usb:v1604p8000* + ID_MODEL_FROM_DATABASE=US-428 Audio/Midi Controller (without fw) + +usb:v1604p8001* + ID_MODEL_FROM_DATABASE=US-428 Audio/Midi Controller + +usb:v1604p8004* + ID_MODEL_FROM_DATABASE=US-224 Audio/Midi Controller (without fw) + +usb:v1604p8005* + ID_MODEL_FROM_DATABASE=US-224 Audio/Midi Controller + +usb:v1604p8006* + ID_MODEL_FROM_DATABASE=US-122 Audio/Midi Interface (without fw) + +usb:v1604p8007* + ID_MODEL_FROM_DATABASE=US-122 Audio/Midi Interface + +usb:v1606* + ID_VENDOR_FROM_DATABASE=Umax + +usb:v1606p0002* + ID_MODEL_FROM_DATABASE=Astra 1236U Scanner + +usb:v1606p0010* + ID_MODEL_FROM_DATABASE=Astra 1220U + +usb:v1606p0030* + ID_MODEL_FROM_DATABASE=Astra 1600U/2000U + +usb:v1606p0050* + ID_MODEL_FROM_DATABASE=Scanner + +usb:v1606p0060* + ID_MODEL_FROM_DATABASE=Astra 3400/3450 + +usb:v1606p0070* + ID_MODEL_FROM_DATABASE=Astra 4400/4450 + +usb:v1606p0130* + ID_MODEL_FROM_DATABASE=Astra 2100U + +usb:v1606p0160* + ID_MODEL_FROM_DATABASE=Astra 5400U + +usb:v1606p0170* + ID_MODEL_FROM_DATABASE=Uniscan D50 + +usb:v1606p0230* + ID_MODEL_FROM_DATABASE=Astra 2200/2200SU + +usb:v1606p0350* + ID_MODEL_FROM_DATABASE=Astra 4800/4850 Scanner + +usb:v1606p1030* + ID_MODEL_FROM_DATABASE=Astra 4000U + +usb:v1606p1220* + ID_MODEL_FROM_DATABASE=Genesys Logic Scanner Controller NT5.0 + +usb:v1606p2010* + ID_MODEL_FROM_DATABASE=AstraCam Digital Camera + +usb:v1606p2020* + ID_MODEL_FROM_DATABASE=AstraCam 1000 + +usb:v1606p2030* + ID_MODEL_FROM_DATABASE=AstraCam 1800 Digital Camera + +usb:v1608* + ID_VENDOR_FROM_DATABASE=Inside Out Networks [hex] + +usb:v1608p0001* + ID_MODEL_FROM_DATABASE=EdgePort/4 Serial Port + +usb:v1608p0002* + ID_MODEL_FROM_DATABASE=Edgeport/8 + +usb:v1608p0003* + ID_MODEL_FROM_DATABASE=Rapidport/4 + +usb:v1608p0004* + ID_MODEL_FROM_DATABASE=Edgeport/4 + +usb:v1608p0005* + ID_MODEL_FROM_DATABASE=Edgeport/2 + +usb:v1608p0006* + ID_MODEL_FROM_DATABASE=Edgeport/4i + +usb:v1608p0007* + ID_MODEL_FROM_DATABASE=Edgeport/2i + +usb:v1608p0008* + ID_MODEL_FROM_DATABASE=Edgeport/8 + +usb:v1608p000C* + ID_MODEL_FROM_DATABASE=Edgeport/421 + +usb:v1608p000D* + ID_MODEL_FROM_DATABASE=Edgeport/21 + +usb:v1608p000E* + ID_MODEL_FROM_DATABASE=Edgeport/4 + +usb:v1608p000F* + ID_MODEL_FROM_DATABASE=Edgeport/8 + +usb:v1608p0010* + ID_MODEL_FROM_DATABASE=Edgeport/2 + +usb:v1608p0011* + ID_MODEL_FROM_DATABASE=Edgeport/4 + +usb:v1608p0012* + ID_MODEL_FROM_DATABASE=Edgeport/416 + +usb:v1608p0014* + ID_MODEL_FROM_DATABASE=Edgeport/8i + +usb:v1608p0018* + ID_MODEL_FROM_DATABASE=Edgeport/412 + +usb:v1608p0019* + ID_MODEL_FROM_DATABASE=Edgeport/412 + +usb:v1608p001A* + ID_MODEL_FROM_DATABASE=Edgeport/2+2i + +usb:v1608p0101* + ID_MODEL_FROM_DATABASE=Edgeport/4 + +usb:v1608p0105* + ID_MODEL_FROM_DATABASE=Edgeport/2 + +usb:v1608p0106* + ID_MODEL_FROM_DATABASE=Edgeport/4i + +usb:v1608p0107* + ID_MODEL_FROM_DATABASE=Edgeport/2i + +usb:v1608p010C* + ID_MODEL_FROM_DATABASE=Edgeport/421 + +usb:v1608p010D* + ID_MODEL_FROM_DATABASE=Edgeport/21 + +usb:v1608p0110* + ID_MODEL_FROM_DATABASE=Edgeport/2 + +usb:v1608p0111* + ID_MODEL_FROM_DATABASE=Edgeport/4 + +usb:v1608p0112* + ID_MODEL_FROM_DATABASE=Edgeport/416 + +usb:v1608p0114* + ID_MODEL_FROM_DATABASE=Edgeport/8i + +usb:v1608p0201* + ID_MODEL_FROM_DATABASE=Edgeport/4 + +usb:v1608p0203* + ID_MODEL_FROM_DATABASE=Rapidport/4 + +usb:v1608p0204* + ID_MODEL_FROM_DATABASE=Edgeport/4 + +usb:v1608p0205* + ID_MODEL_FROM_DATABASE=Edgeport/2 + +usb:v1608p0206* + ID_MODEL_FROM_DATABASE=Edgeport/4i + +usb:v1608p0207* + ID_MODEL_FROM_DATABASE=Edgeport/2i + +usb:v1608p020C* + ID_MODEL_FROM_DATABASE=Edgeport/421 + +usb:v1608p020D* + ID_MODEL_FROM_DATABASE=Edgeport/21 + +usb:v1608p020E* + ID_MODEL_FROM_DATABASE=Edgeport/4 + +usb:v1608p020F* + ID_MODEL_FROM_DATABASE=Edgeport/8 + +usb:v1608p0210* + ID_MODEL_FROM_DATABASE=Edgeport/2 + +usb:v1608p0211* + ID_MODEL_FROM_DATABASE=Edgeport/4 + +usb:v1608p0212* + ID_MODEL_FROM_DATABASE=Edgeport/416 + +usb:v1608p0214* + ID_MODEL_FROM_DATABASE=Edgeport/8i + +usb:v1608p0215* + ID_MODEL_FROM_DATABASE=Edgeport/1 + +usb:v1608p0216* + ID_MODEL_FROM_DATABASE=EPOS/44 + +usb:v1608p0217* + ID_MODEL_FROM_DATABASE=Edgeport/42 + +usb:v1608p021A* + ID_MODEL_FROM_DATABASE=Edgeport/2+2i + +usb:v1608p021B* + ID_MODEL_FROM_DATABASE=Edgeport/2c + +usb:v1608p021C* + ID_MODEL_FROM_DATABASE=Edgeport/221c + +usb:v1608p021D* + ID_MODEL_FROM_DATABASE=Edgeport/22c + +usb:v1608p021E* + ID_MODEL_FROM_DATABASE=Edgeport/21c + +usb:v1608p021F* + ID_MODEL_FROM_DATABASE=Edgeport/62 + +usb:v1608p0240* + ID_MODEL_FROM_DATABASE=Edgeport/1 + +usb:v1608p0241* + ID_MODEL_FROM_DATABASE=Edgeport/1i + +usb:v1608p0242* + ID_MODEL_FROM_DATABASE=Edgeport/4s + +usb:v1608p0243* + ID_MODEL_FROM_DATABASE=Edgeport/8s + +usb:v1608p0244* + ID_MODEL_FROM_DATABASE=Edgeport/8 + +usb:v1608p0245* + ID_MODEL_FROM_DATABASE=Edgeport/22c + +usb:v1608p0301* + ID_MODEL_FROM_DATABASE=Watchport/P + +usb:v1608p0302* + ID_MODEL_FROM_DATABASE=Watchport/M + +usb:v1608p0303* + ID_MODEL_FROM_DATABASE=Watchport/W + +usb:v1608p0304* + ID_MODEL_FROM_DATABASE=Watchport/T + +usb:v1608p0305* + ID_MODEL_FROM_DATABASE=Watchport/H + +usb:v1608p0306* + ID_MODEL_FROM_DATABASE=Watchport/E + +usb:v1608p0307* + ID_MODEL_FROM_DATABASE=Watchport/L + +usb:v1608p0308* + ID_MODEL_FROM_DATABASE=Watchport/R + +usb:v1608p0309* + ID_MODEL_FROM_DATABASE=Watchport/A + +usb:v1608p030A* + ID_MODEL_FROM_DATABASE=Watchport/D + +usb:v1608p030B* + ID_MODEL_FROM_DATABASE=Watchport/D + +usb:v1608p030C* + ID_MODEL_FROM_DATABASE=Power Management Port + +usb:v1608p030E* + ID_MODEL_FROM_DATABASE=Power Management Port + +usb:v1608p030F* + ID_MODEL_FROM_DATABASE=Watchport/G + +usb:v1608p0310* + ID_MODEL_FROM_DATABASE=Watchport/Tc + +usb:v1608p0311* + ID_MODEL_FROM_DATABASE=Watchport/Hc + +usb:v1608p1403* + ID_MODEL_FROM_DATABASE=MultiTech Systems MT4X56 Modem + +usb:v1608p1A17* + ID_MODEL_FROM_DATABASE=Agilent Technologies (E6473) + +usb:v160A* + ID_VENDOR_FROM_DATABASE=VIA Technologies, Inc. + +usb:v160Ap3184* + ID_MODEL_FROM_DATABASE=VIA VNT-6656 [WiFi 802.11b/g USB Dongle] + +usb:v160E* + ID_VENDOR_FROM_DATABASE=INRO + +usb:v160Ep0001* + ID_MODEL_FROM_DATABASE=E2USBKey + +usb:v1614* + ID_VENDOR_FROM_DATABASE=Amoi Electronics + +usb:v1614p0404* + ID_MODEL_FROM_DATABASE=WMA9109 UMTS Phone + +usb:v1614p0600* + ID_MODEL_FROM_DATABASE=Vodafone VDA GPS / Toschiba Protege G710 + +usb:v1614p0804* + ID_MODEL_FROM_DATABASE=WP-S1 Phone + +usb:v1619* + ID_VENDOR_FROM_DATABASE=L & K Precision Technology Co., Ltd. + +usb:v1621* + ID_VENDOR_FROM_DATABASE=Wionics Research + +usb:v1628* + ID_VENDOR_FROM_DATABASE=Stonestreet One, Inc. + +usb:v162A* + ID_VENDOR_FROM_DATABASE=Airgo Networks Inc. + +usb:v162F* + ID_VENDOR_FROM_DATABASE=WiQuest Communications, Inc. + +usb:v1630* + ID_VENDOR_FROM_DATABASE=2Wire, Inc. + +usb:v1630p0005* + ID_MODEL_FROM_DATABASE=802.11g Wireless Adapter [Intersil ISL3886] + +usb:v1630p0011* + ID_MODEL_FROM_DATABASE=PC Port 10 Mps Adapter + +usb:v1630pFF81* + ID_MODEL_FROM_DATABASE=802.11b Wireless Adapter [Lucent/Agere Hermes I] + +usb:v1631* + ID_VENDOR_FROM_DATABASE=Good Way Technology + +usb:v1631p6200* + ID_MODEL_FROM_DATABASE=GWUSB2E + +usb:v1631pC019* + ID_MODEL_FROM_DATABASE=RT2573 + +usb:v1645* + ID_VENDOR_FROM_DATABASE=Cross Match Technologies GmbH + +usb:v1645p0001* + ID_MODEL_FROM_DATABASE=1S Serial Port + +usb:v1645p0002* + ID_MODEL_FROM_DATABASE=2S Serial Port + +usb:v1645p0003* + ID_MODEL_FROM_DATABASE=1S25 Serial Port + +usb:v1645p0004* + ID_MODEL_FROM_DATABASE=4S Serial Port + +usb:v1645p0005* + ID_MODEL_FROM_DATABASE=E45 Ethernet [klsi] + +usb:v1645p0006* + ID_MODEL_FROM_DATABASE=Parallel Port + +usb:v1645p0007* + ID_MODEL_FROM_DATABASE=U1-SC25 SCSI + +usb:v1645p0008* + ID_MODEL_FROM_DATABASE=Ethernet + +usb:v1645p0016* + ID_MODEL_FROM_DATABASE=Bi-directional to Parallel Printer Converter + +usb:v1645p0080* + ID_MODEL_FROM_DATABASE=1 port to Serial Converter + +usb:v1645p0081* + ID_MODEL_FROM_DATABASE=1 port to Serial Converter + +usb:v1645p0093* + ID_MODEL_FROM_DATABASE=1S9 Serial Port + +usb:v1645p8000* + ID_MODEL_FROM_DATABASE=EZ-USB + +usb:v1645p8001* + ID_MODEL_FROM_DATABASE=1 port to Serial + +usb:v1645p8002* + ID_MODEL_FROM_DATABASE=2x Serial Port + +usb:v1645p8003* + ID_MODEL_FROM_DATABASE=1 port to Serial + +usb:v1645p8004* + ID_MODEL_FROM_DATABASE=2U4S serial/usb hub + +usb:v1645p8005* + ID_MODEL_FROM_DATABASE=Ethernet + +usb:v1645p8080* + ID_MODEL_FROM_DATABASE=1 port to Serial + +usb:v1645p8081* + ID_MODEL_FROM_DATABASE=1 port to Serial + +usb:v1645p8093* + ID_MODEL_FROM_DATABASE=PortGear Serial Port + +usb:v1649* + ID_VENDOR_FROM_DATABASE=SofTec Microsystems + +usb:v1649p0102* + ID_MODEL_FROM_DATABASE=uDART In-Circuit Debugger + +usb:v1649p0200* + ID_MODEL_FROM_DATABASE=SpYder USBSPYDER08 + +usb:v164A* + ID_VENDOR_FROM_DATABASE=ChipX + +usb:v164C* + ID_VENDOR_FROM_DATABASE=Matrix Vision GmbH + +usb:v164Cp0101* + ID_MODEL_FROM_DATABASE=mvBlueFOX camera (no firmware) + +usb:v164Cp0103* + ID_MODEL_FROM_DATABASE=mvBlueFOX camera + +usb:v164Cp0201* + ID_MODEL_FROM_DATABASE=mvBlueLYNX-X intelligent camera (bootloader) + +usb:v164Cp0203* + ID_MODEL_FROM_DATABASE=mvBlueLYNX-X intelligent camera + +usb:v1657* + ID_VENDOR_FROM_DATABASE=Struck Innovative Systeme GmbH + +usb:v1657p3150* + ID_MODEL_FROM_DATABASE=SIS3150 USB2.0 to VME interface + +usb:v165B* + ID_VENDOR_FROM_DATABASE=Frontier Design Group + +usb:v165Bp8101* + ID_MODEL_FROM_DATABASE=Tranzport Control Surface + +usb:v165BpFAD1* + ID_MODEL_FROM_DATABASE=Alphatrack Control Surface + +usb:v165C* + ID_VENDOR_FROM_DATABASE=Kondo Kagaku + +usb:v165Cp0002* + ID_MODEL_FROM_DATABASE=Serial Adapter + +usb:v1660* + ID_VENDOR_FROM_DATABASE=Creatix Polymedia GmbH + +usb:v1668* + ID_VENDOR_FROM_DATABASE=Actiontec Electronics, Inc. [hex] + +usb:v1668p0009* + ID_MODEL_FROM_DATABASE=Gateway + +usb:v1668p0333* + ID_MODEL_FROM_DATABASE=Modem + +usb:v1668p0358* + ID_MODEL_FROM_DATABASE=InternetPhoneWizard + +usb:v1668p0405* + ID_MODEL_FROM_DATABASE=Gateway + +usb:v1668p0408* + ID_MODEL_FROM_DATABASE=Prism2.5 802.11b Adapter + +usb:v1668p0413* + ID_MODEL_FROM_DATABASE=Gateway + +usb:v1668p0421* + ID_MODEL_FROM_DATABASE=Prism2.5 802.11b Adapter + +usb:v1668p0441* + ID_MODEL_FROM_DATABASE=IBM Integrated Bluetooth II + +usb:v1668p0500* + ID_MODEL_FROM_DATABASE=BTM200B BlueTooth Adapter + +usb:v1668p1050* + ID_MODEL_FROM_DATABASE=802UIG-1 802.11g Wireless Mini Adapter [Intersil ISL3887] + +usb:v1668p1200* + ID_MODEL_FROM_DATABASE=802AIN Wireless N Network Adapter [Atheros AR9170+AR9101] + +usb:v1668p1441* + ID_MODEL_FROM_DATABASE=IBM Integrated Bluetooth II + +usb:v1668p2441* + ID_MODEL_FROM_DATABASE=BMDC-2 IBM Bluetooth III w.56k + +usb:v1668p3441* + ID_MODEL_FROM_DATABASE=IBM Integrated Bluetooth III + +usb:v1668p6010* + ID_MODEL_FROM_DATABASE=Gateway + +usb:v1668p6097* + ID_MODEL_FROM_DATABASE=802.11b Wireless Adapter + +usb:v1668p6106* + ID_MODEL_FROM_DATABASE=802UI3(B) 802.11b Wireless Adapter [Intersil PRISM 3] + +usb:v1668p7605* + ID_MODEL_FROM_DATABASE=UAT1 Wireless Ethernet Adapter + +usb:v1669* + ID_VENDOR_FROM_DATABASE=PiKRON Ltd. [hex] + +usb:v1669p1001* + ID_MODEL_FROM_DATABASE=uLan2USB Converter - PS1 protocol + +usb:v166A* + ID_VENDOR_FROM_DATABASE=Clipsal + +usb:v166Ap0101* + ID_MODEL_FROM_DATABASE=C-Bus Multi-room Audio Matrix Switcher + +usb:v166Ap0201* + ID_MODEL_FROM_DATABASE=C-Bus Pascal Automation Controller + +usb:v166Ap0301* + ID_MODEL_FROM_DATABASE=C-Bus Wireless PC Interface + +usb:v166Ap0303* + ID_MODEL_FROM_DATABASE=C-Bus interface + +usb:v166Ap0304* + ID_MODEL_FROM_DATABASE=C-Bus Black and White Touchscreen + +usb:v166Ap0305* + ID_MODEL_FROM_DATABASE=C-Bus Spectrum Colour Touchscreen + +usb:v166Ap0401* + ID_MODEL_FROM_DATABASE=C-Bus Architectural Dimmer + +usb:v1677* + ID_VENDOR_FROM_DATABASE=China Huada Integrated Circuit Design (Group) Co., Ltd. (CIDC Group) + +usb:v1677p0103* + ID_MODEL_FROM_DATABASE=Token + +usb:v1679* + ID_VENDOR_FROM_DATABASE=Total Phase + +usb:v1679p2001* + ID_MODEL_FROM_DATABASE=Beagle Protocol Analyzer + +usb:v1679p2002* + ID_MODEL_FROM_DATABASE=Cheetah SPI Host Adapter + +usb:v1680* + ID_VENDOR_FROM_DATABASE=Golden Bridge Electech Inc. + +usb:v1680pA332* + ID_MODEL_FROM_DATABASE=DVB-T Dongle [RTL2832U] + +usb:v1681* + ID_VENDOR_FROM_DATABASE=Prevo Technologies, Inc. + +usb:v1681p0001* + ID_MODEL_FROM_DATABASE=Tuner's Dashboard + +usb:v1681p0002* + ID_MODEL_FROM_DATABASE=Tubachron + +usb:v1682* + ID_VENDOR_FROM_DATABASE=Maxwise Production Enterprise Ltd. + +usb:v1684* + ID_VENDOR_FROM_DATABASE=Godspeed Computer Corp. + +usb:v1685* + ID_VENDOR_FROM_DATABASE=Delock + +usb:v1685p0200* + ID_MODEL_FROM_DATABASE=Infrared adapter + +usb:v1686* + ID_VENDOR_FROM_DATABASE=ZOOM Corporation + +usb:v1686p0045* + ID_MODEL_FROM_DATABASE=H4 Digital Recorder + +usb:v1687* + ID_VENDOR_FROM_DATABASE=Kingmax Digital Inc. + +usb:v1687p5289* + ID_MODEL_FROM_DATABASE=FlashDisk + +usb:v1687p6211* + ID_MODEL_FROM_DATABASE=FlashDisk + +usb:v1688* + ID_VENDOR_FROM_DATABASE=Saab AB + +usb:v1689* + ID_VENDOR_FROM_DATABASE=Razer USA, Ltd + +usb:v1689pFD00* + ID_MODEL_FROM_DATABASE=Onza Tournament Edition controller + +usb:v168C* + ID_VENDOR_FROM_DATABASE=Atheros Communications + +usb:v168Cp0001* + ID_MODEL_FROM_DATABASE=AR5523 + +usb:v168Cp0002* + ID_MODEL_FROM_DATABASE=AR5523 (no firmware) + +usb:v1690* + ID_VENDOR_FROM_DATABASE=Askey Computer Corp. [hex] + +usb:v1690p0001* + ID_MODEL_FROM_DATABASE=Arcaze Gamepad + +usb:v1690p0101* + ID_MODEL_FROM_DATABASE=Creative Modem Blaster DE5670 + +usb:v1690p0102* + ID_MODEL_FROM_DATABASE=V1456 VQE-R2 Modem [conexant] + +usb:v1690p0103* + ID_MODEL_FROM_DATABASE=1456 VQE-R3 Modem [conexant] + +usb:v1690p0104* + ID_MODEL_FROM_DATABASE=HCF V90 Data Fax RTAD Modem + +usb:v1690p0107* + ID_MODEL_FROM_DATABASE=HCF V.90 Data,Fax,RTAD Modem + +usb:v1690p0109* + ID_MODEL_FROM_DATABASE=MagicXpress V.90 Pocket Modem [conexant] + +usb:v1690p0203* + ID_MODEL_FROM_DATABASE=Voyager ADSL Modem Loader + +usb:v1690p0204* + ID_MODEL_FROM_DATABASE=Voyager ADSL Modem + +usb:v1690p0205* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v1690p0206* + ID_MODEL_FROM_DATABASE=GlobeSpan ADSL WAN Modem + +usb:v1690p0208* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v1690p0209* + ID_MODEL_FROM_DATABASE=Voyager 100 ADSL Modem + +usb:v1690p0211* + ID_MODEL_FROM_DATABASE=Globespan Virata ADSL LAN Modem + +usb:v1690p0212* + ID_MODEL_FROM_DATABASE=DSL Modem + +usb:v1690p0213* + ID_MODEL_FROM_DATABASE=HM121d DSL Modem + +usb:v1690p0214* + ID_MODEL_FROM_DATABASE=HM121d DSL Modem + +usb:v1690p0215* + ID_MODEL_FROM_DATABASE=Voyager 105 ADSL Modem + +usb:v1690p0701* + ID_MODEL_FROM_DATABASE=WLAN + +usb:v1690p0710* + ID_MODEL_FROM_DATABASE=SMCWUSBT-G + +usb:v1690p0711* + ID_MODEL_FROM_DATABASE=SMCWUSBT-G (no firmware) + +usb:v1690p0712* + ID_MODEL_FROM_DATABASE=AR5523 + +usb:v1690p0713* + ID_MODEL_FROM_DATABASE=AR5523 (no firmware) + +usb:v1690p0715* + ID_MODEL_FROM_DATABASE=Name: Voyager 1055 Laptop 802.11g Adapter [Broadcom 4320] + +usb:v1690p0722* + ID_MODEL_FROM_DATABASE=RT2573 + +usb:v1690p0726* + ID_MODEL_FROM_DATABASE=Wi-Fi Wireless LAN Adapter + +usb:v1690p0740* + ID_MODEL_FROM_DATABASE=802.11n Wireless LAN Card + +usb:v1690p0901* + ID_MODEL_FROM_DATABASE=Voyager 205 ADSL Router + +usb:v1696* + ID_VENDOR_FROM_DATABASE=Hitachi Video and Information System, Inc. + +usb:v1697* + ID_VENDOR_FROM_DATABASE=VTec Test, Inc. + +usb:v16A5* + ID_VENDOR_FROM_DATABASE=Shenzhen Zhengerya Cable Co., Ltd. + +usb:v16A6* + ID_VENDOR_FROM_DATABASE=Unigraf + +usb:v16A6p3000* + ID_MODEL_FROM_DATABASE=VTG-3xxx Video Test Generator family + +usb:v16A6p4000* + ID_MODEL_FROM_DATABASE=VTG-4xxx Video Test Generator family + +usb:v16A6p5000* + ID_MODEL_FROM_DATABASE=VTG-5xxx Video Test Generator family + +usb:v16A6p5001* + ID_MODEL_FROM_DATABASE=VTG-5xxx Special (update) mode of VTG-5xxx family + +usb:v16AB* + ID_VENDOR_FROM_DATABASE=Global Sun Technology + +usb:v16ABp7801* + ID_MODEL_FROM_DATABASE=AR5523 + +usb:v16ABp7802* + ID_MODEL_FROM_DATABASE=AR5523 (no firmware) + +usb:v16ABp7811* + ID_MODEL_FROM_DATABASE=AR5523 + +usb:v16ABp7812* + ID_MODEL_FROM_DATABASE=AR5523 (no firmware) + +usb:v16AC* + ID_VENDOR_FROM_DATABASE=Dongguan ChingLung Wire & Cable Co., Ltd. + +usb:v16B4* + ID_VENDOR_FROM_DATABASE=iStation + +usb:v16B4p0801* + ID_MODEL_FROM_DATABASE=U43 + +usb:v16B5* + ID_VENDOR_FROM_DATABASE=Persentec, Inc. + +usb:v16B5p0002* + ID_MODEL_FROM_DATABASE=Otto driving companion + +usb:v16C0* + ID_VENDOR_FROM_DATABASE=Van Ooijen Technische Informatica + +usb:v16C0p03E8* + ID_MODEL_FROM_DATABASE=free for internal lab use 1000 + +usb:v16C0p03E9* + ID_MODEL_FROM_DATABASE=free for internal lab use 1001 + +usb:v16C0p03EA* + ID_MODEL_FROM_DATABASE=free for internal lab use 1002 + +usb:v16C0p03EB* + ID_MODEL_FROM_DATABASE=free for internal lab use 1003 + +usb:v16C0p03EC* + ID_MODEL_FROM_DATABASE=free for internal lab use 1004 + +usb:v16C0p03ED* + ID_MODEL_FROM_DATABASE=free for internal lab use 1005 + +usb:v16C0p03EE* + ID_MODEL_FROM_DATABASE=free for internal lab use 1006 + +usb:v16C0p03EF* + ID_MODEL_FROM_DATABASE=free for internal lab use 1007 + +usb:v16C0p03F0* + ID_MODEL_FROM_DATABASE=free for internal lab use 1008 + +usb:v16C0p03F1* + ID_MODEL_FROM_DATABASE=free for internal lab use 1009 + +usb:v16C0p0477* + ID_MODEL_FROM_DATABASE=Teensy Rebootor + +usb:v16C0p0478* + ID_MODEL_FROM_DATABASE=Teensy Halfkay Bootloader + +usb:v16C0p0479* + ID_MODEL_FROM_DATABASE=Teensy Debug + +usb:v16C0p047A* + ID_MODEL_FROM_DATABASE=Teensy Serial + +usb:v16C0p047B* + ID_MODEL_FROM_DATABASE=Teensy Serial+Debug + +usb:v16C0p047C* + ID_MODEL_FROM_DATABASE=Teensy Keyboard + +usb:v16C0p047D* + ID_MODEL_FROM_DATABASE=Teensy Keyboard+Debug + +usb:v16C0p047E* + ID_MODEL_FROM_DATABASE=Teensy Mouse + +usb:v16C0p047F* + ID_MODEL_FROM_DATABASE=Teensy Mouse+Debug + +usb:v16C0p0480* + ID_MODEL_FROM_DATABASE=Teensy RawHID + +usb:v16C0p0481* + ID_MODEL_FROM_DATABASE=Teensy RawHID+Debug + +usb:v16C0p0482* + ID_MODEL_FROM_DATABASE=Teensyduino Keyboard+Mouse+Joystick + +usb:v16C0p0483* + ID_MODEL_FROM_DATABASE=Teensyduino Serial + +usb:v16C0p0484* + ID_MODEL_FROM_DATABASE=Teensyduino Disk + +usb:v16C0p0485* + ID_MODEL_FROM_DATABASE=Teensyduino MIDI + +usb:v16C0p0486* + ID_MODEL_FROM_DATABASE=Teensyduino RawHID + +usb:v16C0p0487* + ID_MODEL_FROM_DATABASE=Teensyduino Serial+Keyboard+Mouse+Joystick + +usb:v16C0p0488* + ID_MODEL_FROM_DATABASE=Teensyduino Flight Sim Controls + +usb:v16C0p05DC* + ID_MODEL_FROM_DATABASE=shared ID for use with libusb + +usb:v16C0p05DD* + ID_MODEL_FROM_DATABASE=BlackcatUSB2 + +usb:v16C0p05DF* + ID_MODEL_FROM_DATABASE=HID device except mice, keyboards, and joysticks + +usb:v16C0p05E1* + ID_MODEL_FROM_DATABASE=Free shared USB VID/PID pair for CDC devices + +usb:v16C0p05E4* + ID_MODEL_FROM_DATABASE=Free shared USB VID/PID pair for MIDI devices + +usb:v16C0p06B4* + ID_MODEL_FROM_DATABASE=USB2LPT with 2 interfaces + +usb:v16C0p06B5* + ID_MODEL_FROM_DATABASE=USB2LPT with 3 interfaces (native, HID, printer) + +usb:v16C0p076B* + ID_MODEL_FROM_DATABASE=OpenPCD 13.56MHz RFID Reader + +usb:v16C0p076C* + ID_MODEL_FROM_DATABASE=OpenPICC 13.56MHz RFID Simulator (native) + +usb:v16C0p08AC* + ID_MODEL_FROM_DATABASE=OpenBeacon USB stick + +usb:v16C0p08CA* + ID_MODEL_FROM_DATABASE=Alpermann+Velte Universal Display + +usb:v16C0p08CB* + ID_MODEL_FROM_DATABASE=Alpermann+Velte Studio Clock + +usb:v16C0p08CC* + ID_MODEL_FROM_DATABASE=Alpermann+Velte SAM7S MT Boot Loader + +usb:v16C0p08CD* + ID_MODEL_FROM_DATABASE=Alpermann+Velte SAM7X MT Boot Loader + +usb:v16C0p0A32* + ID_MODEL_FROM_DATABASE=jbmedia Light-Manager Pro + +usb:v16C0p27D8* + ID_MODEL_FROM_DATABASE=libusb-bound devices + +usb:v16C0p27D9* + ID_MODEL_FROM_DATABASE=HID device except mice, keyboards, and joysticks + +usb:v16C0p27DA* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v16C0p27DB* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v16C0p27DC* + ID_MODEL_FROM_DATABASE=Joystick + +usb:v16C0p27DD* + ID_MODEL_FROM_DATABASE=CDC-ACM class devices (modems) + +usb:v16C0p27DE* + ID_MODEL_FROM_DATABASE=MIDI class devices + +usb:v16C0p294A* + ID_MODEL_FROM_DATABASE=Eye Movement Recorder [Visagraph] + +usb:v16C0p294B* + ID_MODEL_FROM_DATABASE=Eye Movement Recorder [ReadAlyzer] + +usb:v16CA* + ID_VENDOR_FROM_DATABASE=Wireless Cables, Inc. + +usb:v16CAp1502* + ID_MODEL_FROM_DATABASE=Bluetooth Dongle + +usb:v16CC* + ID_VENDOR_FROM_DATABASE=silex technology, Inc. + +usb:v16D0* + ID_VENDOR_FROM_DATABASE=MCS + +usb:v16D0p0498* + ID_MODEL_FROM_DATABASE=Braintechnology USB-LPS + +usb:v16D0p0504* + ID_MODEL_FROM_DATABASE=RETRO Innovations ZoomFloppy + +usb:v16D0p054B* + ID_MODEL_FROM_DATABASE=GrauTec ReelBox OLED Display (external) + +usb:v16D0p05BE* + ID_MODEL_FROM_DATABASE=EasyLogic Board + +usb:v16D0p0753* + ID_MODEL_FROM_DATABASE=Digistump DigiSpark + +usb:v16D0p075C* + ID_MODEL_FROM_DATABASE=AB-1.x UAC1 [Audio Widget] + +usb:v16D0p075D* + ID_MODEL_FROM_DATABASE=AB-1.x UAC2 [Audio Widget] + +usb:v16D3* + ID_VENDOR_FROM_DATABASE=Frontline Test Equipment, Inc. + +usb:v16D5* + ID_VENDOR_FROM_DATABASE=AnyDATA Corporation + +usb:v16D5p6202* + ID_MODEL_FROM_DATABASE=CDMA/UMTS/GPRS modem + +usb:v16D5p6501* + ID_MODEL_FROM_DATABASE=CDMA 2000 1xRTT/EV-DO Modem + +usb:v16D5p6502* + ID_MODEL_FROM_DATABASE=CDMA/UMTS/GPRS modem + +usb:v16D6* + ID_VENDOR_FROM_DATABASE=JABLOCOM s.r.o. + +usb:v16D6p8000* + ID_MODEL_FROM_DATABASE=GDP-04 desktop phone + +usb:v16D6p8001* + ID_MODEL_FROM_DATABASE=EYE-02 + +usb:v16D6p8003* + ID_MODEL_FROM_DATABASE=GDP-04 modem + +usb:v16D6p8004* + ID_MODEL_FROM_DATABASE=Bootloader + +usb:v16D6p8005* + ID_MODEL_FROM_DATABASE=GDP-04i + +usb:v16D6p8007* + ID_MODEL_FROM_DATABASE=BTP-06 modem + +usb:v16D8* + ID_VENDOR_FROM_DATABASE=CMOTECH Co., Ltd. + +usb:v16D8p5141* + ID_MODEL_FROM_DATABASE=CMOTECH CDMA Technologies modem + +usb:v16D8p5533* + ID_MODEL_FROM_DATABASE=CCU-550 CDMA EV-DO modem + +usb:v16D8p5543* + ID_MODEL_FROM_DATABASE=CDMA 2000 1xRTT/1xEVDO modem + +usb:v16D8p6280* + ID_MODEL_FROM_DATABASE=CMOTECH CDMA Technologies modem + +usb:v16D8p6803* + ID_MODEL_FROM_DATABASE=CNU-680 CDMA EV-DO modem + +usb:v16D8p8001* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem (QDL mode) + +usb:v16D8p8002* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem + +usb:v16DC* + ID_VENDOR_FROM_DATABASE=Wiener, Plein & Baus + +usb:v16DCp0001* + ID_MODEL_FROM_DATABASE=CC + +usb:v16DCp000B* + ID_MODEL_FROM_DATABASE=VM + +usb:v16DCp0010* + ID_MODEL_FROM_DATABASE=PL512 Power Supply System + +usb:v16DCp0011* + ID_MODEL_FROM_DATABASE=MARATON Power Supply System + +usb:v16DCp0012* + ID_MODEL_FROM_DATABASE=MPOD Multi Channel Power Supply System + +usb:v16DCp0015* + ID_MODEL_FROM_DATABASE=CML Control, Measurement and Data Logging System + +usb:v16DF* + ID_VENDOR_FROM_DATABASE=King Billion Electronics Co., Ltd. + +usb:v16F0* + ID_VENDOR_FROM_DATABASE=GN ReSound A/S + +usb:v16F0p0001* + ID_MODEL_FROM_DATABASE=Speedlink Programming Interface + +usb:v16F0p0003* + ID_MODEL_FROM_DATABASE=Airlink Wireless Programming Interface + +usb:v16F5* + ID_VENDOR_FROM_DATABASE=Futurelogic Inc. + +usb:v1706* + ID_VENDOR_FROM_DATABASE=BlueView Technologies, Inc. + +usb:v1707* + ID_VENDOR_FROM_DATABASE=ARTIMI + +usb:v170B* + ID_VENDOR_FROM_DATABASE=Swissonic + +usb:v170Bp0011* + ID_MODEL_FROM_DATABASE=MIDI-USB 1x1 + +usb:v170D* + ID_VENDOR_FROM_DATABASE=Avnera + +usb:v1725* + ID_VENDOR_FROM_DATABASE=Vitesse Semiconductor + +usb:v1726* + ID_VENDOR_FROM_DATABASE=Axesstel, Inc. + +usb:v1726p1000* + ID_MODEL_FROM_DATABASE=wireless modem + +usb:v1726p2000* + ID_MODEL_FROM_DATABASE=wireless modem + +usb:v1726p3000* + ID_MODEL_FROM_DATABASE=wireless modem + +usb:v172F* + ID_VENDOR_FROM_DATABASE=Waltop International Corp. + +usb:v172Fp0022* + ID_MODEL_FROM_DATABASE=Tablet + +usb:v172Fp0024* + ID_MODEL_FROM_DATABASE=Tablet + +usb:v172Fp0025* + ID_MODEL_FROM_DATABASE=Tablet + +usb:v172Fp0026* + ID_MODEL_FROM_DATABASE=Tablet + +usb:v172Fp0031* + ID_MODEL_FROM_DATABASE=Slim Tablet 12.1" + +usb:v172Fp0032* + ID_MODEL_FROM_DATABASE=Slim Tablet 5.8" + +usb:v172Fp0034* + ID_MODEL_FROM_DATABASE=Slim Tablet 12.1" + +usb:v172Fp0038* + ID_MODEL_FROM_DATABASE=Genius G-Pen F509 + +usb:v172Fp0500* + ID_MODEL_FROM_DATABASE=Media Tablet 14.1" + +usb:v172Fp0501* + ID_MODEL_FROM_DATABASE=Media Tablet 10.6" + +usb:v172Fp0502* + ID_MODEL_FROM_DATABASE=Sirius Battery Free Tablet + +usb:v1733* + ID_VENDOR_FROM_DATABASE=Cellink Technology Co., Ltd + +usb:v1733p0101* + ID_MODEL_FROM_DATABASE=RF Wireless Optical Mouse OP-701 + +usb:v1736* + ID_VENDOR_FROM_DATABASE=CANON IMAGING SYSTEM TECHNOLOGIES INC. + +usb:v1737* + ID_VENDOR_FROM_DATABASE=Linksys + +usb:v1737p0039* + ID_MODEL_FROM_DATABASE=USB1000 Gigabit Notebook Adapter + +usb:v1737p0070* + ID_MODEL_FROM_DATABASE=WUSB100 v1 RangePlus Wireless Network Adapter [Ralink RT2870] + +usb:v1737p0071* + ID_MODEL_FROM_DATABASE=WUSB600N v1 Dual-Band Wireless-N Network Adapter [Ralink RT2870] + +usb:v1737p0073* + ID_MODEL_FROM_DATABASE=WUSB54GC v2 802.11g Adapter [Realtek RTL8187B] + +usb:v1737p0075* + ID_MODEL_FROM_DATABASE=WUSB54GSC v2 802.11g Adapter [Broadcom 4326U] + +usb:v1737p0077* + ID_MODEL_FROM_DATABASE=WUSB54GC v3 802.11g Adapter [Ralink RT2070L] + +usb:v1737p0078* + ID_MODEL_FROM_DATABASE=WUSB100 v2 RangePlus Wireless Network Adapter [Ralink RT3070] + +usb:v1737p0079* + ID_MODEL_FROM_DATABASE=WUSB600N v2 Dual-Band Wireless-N Network Adapter [Ralink RT3572] + +usb:v1740* + ID_VENDOR_FROM_DATABASE=Senao + +usb:v1740p0605* + ID_MODEL_FROM_DATABASE=LevelOne WUA-0605 N_Max Wireless USB Adapter + +usb:v1740p0615* + ID_MODEL_FROM_DATABASE=LevelOne WUA-0615 N_Max Wireless USB Adapter + +usb:v1740p1000* + ID_MODEL_FROM_DATABASE=NUB-350 802.11g Wireless Adapter [Intersil ISL3887] + +usb:v1740p2000* + ID_MODEL_FROM_DATABASE=NUB-8301 802.11bg + +usb:v1740p3701* + ID_MODEL_FROM_DATABASE=EUB-3701 EXT 802.11g Wireless Adapter [Ralink RT2571W] + +usb:v1740p9603* + ID_MODEL_FROM_DATABASE=RTL8188S WLAN Adapter + +usb:v1740p9701* + ID_MODEL_FROM_DATABASE=EnGenius 802.11n Wireless USB Adapter + +usb:v1740p9702* + ID_MODEL_FROM_DATABASE=EnGenius 802.11n Wireless USB Adapter + +usb:v1740p9703* + ID_MODEL_FROM_DATABASE=EnGenius 802.11n Wireless USB Adapter + +usb:v1740p9705* + ID_MODEL_FROM_DATABASE=EnGenius 802.11n Wireless USB Adapter + +usb:v1740p9706* + ID_MODEL_FROM_DATABASE=EUB9706 802.11n Wireless Adapter [Ralink RT3072] + +usb:v1740p9801* + ID_MODEL_FROM_DATABASE=EUB9801 802.11abgn Wireless Adapter [Ralink RT3572] + +usb:v1743* + ID_VENDOR_FROM_DATABASE=General Atomics + +usb:v174C* + ID_VENDOR_FROM_DATABASE=ASMedia Technology Inc. + +usb:v174Cp5106* + ID_MODEL_FROM_DATABASE=Transcend StoreJet 25M3 + +usb:v174Cp55AA* + ID_MODEL_FROM_DATABASE=ASMedia 2105 SATA bridge + +usb:v174F* + ID_VENDOR_FROM_DATABASE=Syntek + +usb:v174Fp1105* + ID_MODEL_FROM_DATABASE=SM-MS/Pro-MMC-XD Card Reader + +usb:v174Fp110B* + ID_MODEL_FROM_DATABASE=HP Webcam + +usb:v174Fp1403* + ID_MODEL_FROM_DATABASE=Integrated Webcam + +usb:v174Fp1404* + ID_MODEL_FROM_DATABASE=USB Camera device, 1.3 MPixel Web Cam + +usb:v174Fp5212* + ID_MODEL_FROM_DATABASE=USB 2.0 UVC PC Camera + +usb:v174Fp5A11* + ID_MODEL_FROM_DATABASE=PC Camera + +usb:v174Fp5A31* + ID_MODEL_FROM_DATABASE=Sonix USB 2.0 Camera + +usb:v174Fp5A35* + ID_MODEL_FROM_DATABASE=Sonix 1.3MPixel USB 2.0 Camera + +usb:v174Fp6A31* + ID_MODEL_FROM_DATABASE=Web Cam - Asus A8J, F3S, F5R, VX2S, V1S + +usb:v174Fp6A33* + ID_MODEL_FROM_DATABASE=Web Cam - Asus F3SA, F9J, F9S + +usb:v174Fp6A51* + ID_MODEL_FROM_DATABASE=2.0MPixel Web Cam - Asus Z96J, Z96S, S96S + +usb:v174Fp6A54* + ID_MODEL_FROM_DATABASE=Web Cam + +usb:v174Fp6D51* + ID_MODEL_FROM_DATABASE=2.0Mpixel Web Cam - Eurocom D900C + +usb:v174Fp8A12* + ID_MODEL_FROM_DATABASE=Syntek 0.3MPixel USB 2.0 UVC PC Camera + +usb:v174Fp8A33* + ID_MODEL_FROM_DATABASE=Syntek USB 2.0 UVC PC Camera + +usb:v174FpA311* + ID_MODEL_FROM_DATABASE=1.3MPixel Web Cam - Asus A3A, A6J, A6K, A6M, A6R, A6T, A6V, A7T, A7sv, A7U + +usb:v174FpA312* + ID_MODEL_FROM_DATABASE=1.3MPixel Web Cam + +usb:v174FpA821* + ID_MODEL_FROM_DATABASE=Web Cam - Packard Bell BU45, PB Easynote MX66-208W + +usb:v174FpAA11* + ID_MODEL_FROM_DATABASE=Web Cam + +usb:v1753* + ID_VENDOR_FROM_DATABASE=GERTEC Telecomunicacoes Ltda. + +usb:v1753pC901* + ID_MODEL_FROM_DATABASE=PPC900 Pinpad Terminal + +usb:v1759* + ID_VENDOR_FROM_DATABASE=LucidPort Technology, Inc. + +usb:v1761* + ID_VENDOR_FROM_DATABASE=ASUSTek Computer, Inc. (wrong ID) + +usb:v1761p0B05* + ID_MODEL_FROM_DATABASE=802.11n Network Adapter (wrong ID - swapped vendor and device) + +usb:v1772* + ID_VENDOR_FROM_DATABASE=System Level Solutions, Inc. + +usb:v1776* + ID_VENDOR_FROM_DATABASE=Arowana + +usb:v1776p501C* + ID_MODEL_FROM_DATABASE=300K CMOS Camera + +usb:v177F* + ID_VENDOR_FROM_DATABASE=Sweex + +usb:v177Fp0004* + ID_MODEL_FROM_DATABASE=MM004V5 Photo Key Chain (Digital Photo Frame) 1.5" + +usb:v177Fp0153* + ID_MODEL_FROM_DATABASE=LW153 802.11n Adapter [ralink rt3070] + +usb:v177Fp0154* + ID_MODEL_FROM_DATABASE=LW154 802.11bgn (1x1:1) Wireless Adapter [Realtek RTL8188SU] + +usb:v177Fp0313* + ID_MODEL_FROM_DATABASE=LW313 802.11n Adapter [ralink rt2770 + rt2720] + +usb:v1781* + ID_VENDOR_FROM_DATABASE=Multiple Vendors + +usb:v1781p083E* + ID_MODEL_FROM_DATABASE=MetaGeek Wi-Spy + +usb:v1781p083F* + ID_MODEL_FROM_DATABASE=MetaGeek Wi-Spy 2.4x + +usb:v1781p0938* + ID_MODEL_FROM_DATABASE=Iguanaworks USB IR Transceiver + +usb:v1781p0C30* + ID_MODEL_FROM_DATABASE=Telldus TellStick + +usb:v1781p0C31* + ID_MODEL_FROM_DATABASE=Telldus TellStick Duo + +usb:v1781p0C9F* + ID_MODEL_FROM_DATABASE=USBtiny + +usb:v1782* + ID_VENDOR_FROM_DATABASE=Spreadtrum Communications Inc. + +usb:v1784* + ID_VENDOR_FROM_DATABASE=TopSeed Technology Corp. + +usb:v1784p0001* + ID_MODEL_FROM_DATABASE=eHome Infrared Transceiver + +usb:v1784p0004* + ID_MODEL_FROM_DATABASE=RF Combo Device + +usb:v1784p0006* + ID_MODEL_FROM_DATABASE=eHome Infrared Transceiver + +usb:v1784p0007* + ID_MODEL_FROM_DATABASE=eHome Infrared Transceiver + +usb:v1784p0008* + ID_MODEL_FROM_DATABASE=eHome Infrared Transceiver + +usb:v1784p000A* + ID_MODEL_FROM_DATABASE=eHome Infrared Transceiver + +usb:v1784p0011* + ID_MODEL_FROM_DATABASE=eHome Infrared Transceiver + +usb:v1787* + ID_VENDOR_FROM_DATABASE=ATI AIB + +usb:v1788* + ID_VENDOR_FROM_DATABASE=ShenZhen Litkconn Technology Co., Ltd. + +usb:v1796* + ID_VENDOR_FROM_DATABASE=Printrex, Inc. + +usb:v1797* + ID_VENDOR_FROM_DATABASE=JALCO CO., LTD. + +usb:v1799* + ID_VENDOR_FROM_DATABASE=Belkin Components + +usb:v1799p7051* + ID_MODEL_FROM_DATABASE=F5D7051 802.11g Adapter v1000 [Broadcom 4320] + +usb:v1799p8051* + ID_MODEL_FROM_DATABASE=F5D8051 v2 802.11bgn Wireless Adapter [Marvell 88W8362] + +usb:v179D* + ID_VENDOR_FROM_DATABASE=Ricavision International, Inc. + +usb:v179Dp0010* + ID_MODEL_FROM_DATABASE=Internal Infrared Transceiver + +usb:v17A0* + ID_VENDOR_FROM_DATABASE=Samson Technologies Corp. + +usb:v17A0p0001* + ID_MODEL_FROM_DATABASE=C01U condenser microphone + +usb:v17A0p0002* + ID_MODEL_FROM_DATABASE=Q1U dynamic microphone + +usb:v17A0p0100* + ID_MODEL_FROM_DATABASE=C03U multi-pattern microphone + +usb:v17A0p0101* + ID_MODEL_FROM_DATABASE=UB1 boundary microphone + +usb:v17A0p0200* + ID_MODEL_FROM_DATABASE=StudioDock monitors (internal hub) + +usb:v17A0p0201* + ID_MODEL_FROM_DATABASE=StudioDock monitors (audio) + +usb:v17A0p0301* + ID_MODEL_FROM_DATABASE=Q2U handheld microphone with XLR + +usb:v17A0p0302* + ID_MODEL_FROM_DATABASE=GoMic compact condenser microphone + +usb:v17A0p0310* + ID_MODEL_FROM_DATABASE=Meteor condenser microphone + +usb:v17A4* + ID_VENDOR_FROM_DATABASE=Concept2 + +usb:v17A4p0001* + ID_MODEL_FROM_DATABASE=Performance Monitor 3 + +usb:v17A4p0002* + ID_MODEL_FROM_DATABASE=Performance Monitor 4 + +usb:v17A5* + ID_VENDOR_FROM_DATABASE=Advanced Connection Technology Inc. + +usb:v17A7* + ID_VENDOR_FROM_DATABASE=MICOMSOFT CO., LTD. + +usb:v17A8* + ID_VENDOR_FROM_DATABASE=Kamstrup A/S + +usb:v17A8p0001* + ID_MODEL_FROM_DATABASE=Optical Eye/3-wire + +usb:v17A8p0005* + ID_MODEL_FROM_DATABASE=M-Bus Master MultiPort 250D + +usb:v17B3* + ID_VENDOR_FROM_DATABASE=Grey Innovation + +usb:v17B3p0004* + ID_MODEL_FROM_DATABASE=Linux-USB Midi Gadget + +usb:v17BA* + ID_VENDOR_FROM_DATABASE=SAURIS GmbH + +usb:v17BAp0001* + ID_MODEL_FROM_DATABASE=SAU510-USB [no firmware] + +usb:v17BAp0510* + ID_MODEL_FROM_DATABASE=SAU510-USB and SAU510-USB plus JTAG Emulators + +usb:v17BAp0511* + ID_MODEL_FROM_DATABASE=SAU510-USB Iso Plus JTAG Emulator + +usb:v17BAp0520* + ID_MODEL_FROM_DATABASE=SAU510-USB Nano JTAG Emulator + +usb:v17BAp1511* + ID_MODEL_FROM_DATABASE=Onboard Emulator on SAUModule development kit + +usb:v17C3* + ID_VENDOR_FROM_DATABASE=Singim International Corp. + +usb:v17CC* + ID_VENDOR_FROM_DATABASE=Native Instruments + +usb:v17CCp041C* + ID_MODEL_FROM_DATABASE=Audio 2 DJ + +usb:v17CCp0808* + ID_MODEL_FROM_DATABASE=Maschine Controller + +usb:v17CCp0815* + ID_MODEL_FROM_DATABASE=Audio Kontrol 1 + +usb:v17CCp0839* + ID_MODEL_FROM_DATABASE=Audio 4 DJ + +usb:v17CCp0D8D* + ID_MODEL_FROM_DATABASE=Guitarrig Mobile + +usb:v17CCp1915* + ID_MODEL_FROM_DATABASE=Session I/O + +usb:v17CCp1940* + ID_MODEL_FROM_DATABASE=RigKontrol3 + +usb:v17CCp1969* + ID_MODEL_FROM_DATABASE=RigKontrol2 + +usb:v17CCp1978* + ID_MODEL_FROM_DATABASE=Audio 8 DJ + +usb:v17CCp2280* + ID_MODEL_FROM_DATABASE=Medion MDPNA1500 in card reader mode + +usb:v17CCp2305* + ID_MODEL_FROM_DATABASE=Traktor Kontrol X1 + +usb:v17CCp4711* + ID_MODEL_FROM_DATABASE=Kore Controller + +usb:v17CCp4712* + ID_MODEL_FROM_DATABASE=Kore Controller 2 + +usb:v17CCpBAFF* + ID_MODEL_FROM_DATABASE=Traktor Kontrol S4 + +usb:v17CF* + ID_VENDOR_FROM_DATABASE=Hip Hing Cable & Plug Mfy. Ltd. + +usb:v17D0* + ID_VENDOR_FROM_DATABASE=Sanford L.P. + +usb:v17D3* + ID_VENDOR_FROM_DATABASE=Korea Techtron Co., Ltd. + +usb:v17E9* + ID_VENDOR_FROM_DATABASE=DisplayLink + +usb:v17E9p0051* + ID_MODEL_FROM_DATABASE=USB VGA Adaptor + +usb:v17E9p0377* + ID_MODEL_FROM_DATABASE=Plugable UD-160-A (M) + +usb:v17E9p0378* + ID_MODEL_FROM_DATABASE=Plugable UGA-2K-A + +usb:v17E9p0379* + ID_MODEL_FROM_DATABASE=Plugable UGA-125 + +usb:v17E9p037A* + ID_MODEL_FROM_DATABASE=Plugable UGA-165 + +usb:v17E9p037B* + ID_MODEL_FROM_DATABASE=Plugable USB-VGA-165 + +usb:v17E9p037C* + ID_MODEL_FROM_DATABASE=Plugable DC-125 + +usb:v17E9p037D* + ID_MODEL_FROM_DATABASE=Plugable USB2-HDMI-165 + +usb:v17E9p430A* + ID_MODEL_FROM_DATABASE=HP Port Replicator (Composite Device) + +usb:v17EB* + ID_VENDOR_FROM_DATABASE=Cornice, Inc. + +usb:v17EF* + ID_VENDOR_FROM_DATABASE=Lenovo + +usb:v17EFp1003* + ID_MODEL_FROM_DATABASE=Integrated Smart Card Reader + +usb:v17EFp1004* + ID_MODEL_FROM_DATABASE=Integrated Webcam + +usb:v17EFp100A* + ID_MODEL_FROM_DATABASE=ThinkPad Mini Dock Plus Series 3 + +usb:v17EFp3815* + ID_MODEL_FROM_DATABASE=ChipsBnk 2GB USB Stick + +usb:v17EFp4802* + ID_MODEL_FROM_DATABASE=Lenovo Vc0323+MI1310_SOC Camera + +usb:v17EFp4807* + ID_MODEL_FROM_DATABASE=UVC Camera + +usb:v17EFp480C* + ID_MODEL_FROM_DATABASE=Integrated Webcam + +usb:v17EFp480D* + ID_MODEL_FROM_DATABASE=Integrated Webcam [R5U877] + +usb:v17EFp480E* + ID_MODEL_FROM_DATABASE=Integrated Webcam [R5U877] + +usb:v17EFp480F* + ID_MODEL_FROM_DATABASE=Integrated Webcam [R5U877] + +usb:v17EFp4810* + ID_MODEL_FROM_DATABASE=Integrated Webcam [R5U877] + +usb:v17EFp4811* + ID_MODEL_FROM_DATABASE=Integrated Webcam [R5U877] + +usb:v17EFp4812* + ID_MODEL_FROM_DATABASE=Integrated Webcam [R5U877] + +usb:v17EFp4813* + ID_MODEL_FROM_DATABASE=Integrated Webcam [R5U877] + +usb:v17EFp4814* + ID_MODEL_FROM_DATABASE=Integrated Webcam [R5U877] + +usb:v17EFp4815* + ID_MODEL_FROM_DATABASE=Integrated Webcam [R5U877] + +usb:v17EFp481C* + ID_MODEL_FROM_DATABASE=Integrated Webcam + +usb:v17EFp481D* + ID_MODEL_FROM_DATABASE=Integrated Webcam + +usb:v17EFp6007* + ID_MODEL_FROM_DATABASE=Smartcard Keyboard + +usb:v17EFp6009* + ID_MODEL_FROM_DATABASE=ThinkPad Keyboard with TrackPoint + +usb:v17EFp6014* + ID_MODEL_FROM_DATABASE=Mini Wireless Keyboard N5901 + +usb:v17EFp7423* + ID_MODEL_FROM_DATABASE=IdeaPad A1 Tablet + +usb:v17EFp7435* + ID_MODEL_FROM_DATABASE=A789 (Mass Storage mode, with debug) + +usb:v17EFp743A* + ID_MODEL_FROM_DATABASE=A789 (Mass Storage mode) + +usb:v17EFp7497* + ID_MODEL_FROM_DATABASE=A789 (MTP mode) + +usb:v17EFp7498* + ID_MODEL_FROM_DATABASE=A789 (MTP mode, with debug) + +usb:v17EFp749A* + ID_MODEL_FROM_DATABASE=A789 (PTP mode) + +usb:v17EFp749B* + ID_MODEL_FROM_DATABASE=A789 (PTP mode, with debug) + +usb:v17F4* + ID_VENDOR_FROM_DATABASE=WaveSense + +usb:v17F4pAAAA* + ID_MODEL_FROM_DATABASE=Jazz Blood Glucose Meter + +usb:v17F5* + ID_VENDOR_FROM_DATABASE=K.K. Rocky + +usb:v17F6* + ID_VENDOR_FROM_DATABASE=Unicomp, Inc + +usb:v17F6p0709* + ID_MODEL_FROM_DATABASE=Model M Keyboard + +usb:v1809* + ID_VENDOR_FROM_DATABASE=Advantech + +usb:v1809p4604* + ID_MODEL_FROM_DATABASE=USB-4604 + +usb:v1809p4761* + ID_MODEL_FROM_DATABASE=USB-4761 Portable Data Acquisition Module + +usb:v1822* + ID_VENDOR_FROM_DATABASE=Twinhan + +usb:v1822p3201* + ID_MODEL_FROM_DATABASE=VisionDTV USB-Ter/HAMA USB DVB-T device cold + +usb:v1822p3202* + ID_MODEL_FROM_DATABASE=VisionDTV USB-Ter/HAMA USB DVB-T device warm + +usb:v1831* + ID_VENDOR_FROM_DATABASE=Gwo Jinn Industries Co., Ltd. + +usb:v1832* + ID_VENDOR_FROM_DATABASE=Huizhou Shenghua Industrial Co., Ltd. + +usb:v183D* + ID_VENDOR_FROM_DATABASE=VIVOphone + +usb:v183Dp0010* + ID_MODEL_FROM_DATABASE=VoiceKey + +usb:v1843* + ID_VENDOR_FROM_DATABASE=Vaisala + +usb:v1849* + ID_VENDOR_FROM_DATABASE=ASRock Incorporation + +usb:v1852* + ID_VENDOR_FROM_DATABASE=GYROCOM C&C Co., LTD + +usb:v1852p7922* + ID_MODEL_FROM_DATABASE=Audiotrak DR.DAC2 DX [GYROCOM C&C] + +usb:v1854* + ID_VENDOR_FROM_DATABASE=Memory Devices Ltd. + +usb:v185B* + ID_VENDOR_FROM_DATABASE=Compro + +usb:v185Bp3020* + ID_MODEL_FROM_DATABASE=K100 Infrared Receiver + +usb:v185Bp3082* + ID_MODEL_FROM_DATABASE=K100 Infrared Receiver v2 + +usb:v185BpD000* + ID_MODEL_FROM_DATABASE=Compro Videomate DVB-U2000 - DVB-T USB cold + +usb:v185BpD001* + ID_MODEL_FROM_DATABASE=Compro Videomate DVB-U2000 - DVB-T USB warm + +usb:v1861* + ID_VENDOR_FROM_DATABASE=Tech Technology Industrial Company + +usb:v1862* + ID_VENDOR_FROM_DATABASE=Teridian Semiconductor Corp. + +usb:v1870* + ID_VENDOR_FROM_DATABASE=Nexio Co., Ltd + +usb:v1870p0001* + ID_MODEL_FROM_DATABASE=iNexio Touchscreen controller + +usb:v1871* + ID_VENDOR_FROM_DATABASE=Aveo Technology Corp. + +usb:v1871p0101* + ID_MODEL_FROM_DATABASE=UVC camera (Bresser microscope) + +usb:v1871p0D01* + ID_MODEL_FROM_DATABASE=USB2.0 Camera + +usb:v1873* + ID_VENDOR_FROM_DATABASE=Navilock + +usb:v1873pEE93* + ID_MODEL_FROM_DATABASE=EasyLogger + +usb:v187C* + ID_VENDOR_FROM_DATABASE=Alienware Corporation + +usb:v187Cp0600* + ID_MODEL_FROM_DATABASE=Dual Compatible Game Pad + +usb:v187F* + ID_VENDOR_FROM_DATABASE=Siano Mobile Silicon + +usb:v187Fp0010* + ID_MODEL_FROM_DATABASE=Stallar Board + +usb:v187Fp0100* + ID_MODEL_FROM_DATABASE=Stallar Board + +usb:v187Fp0200* + ID_MODEL_FROM_DATABASE=Nova A + +usb:v187Fp0201* + ID_MODEL_FROM_DATABASE=Nova B + +usb:v187Fp0202* + ID_MODEL_FROM_DATABASE=Nice + +usb:v187Fp0300* + ID_MODEL_FROM_DATABASE=Vega + +usb:v187Fp0301* + ID_MODEL_FROM_DATABASE=VeNice + +usb:v1892* + ID_VENDOR_FROM_DATABASE=Vast Technologies, Inc. + +usb:v1894* + ID_VENDOR_FROM_DATABASE=Topseed + +usb:v1894p5632* + ID_MODEL_FROM_DATABASE=Atek Tote Remote + +usb:v1894p5641* + ID_MODEL_FROM_DATABASE=TSAM-004 Presentation Remote + +usb:v1897* + ID_VENDOR_FROM_DATABASE=Evertop Wire Cable Co. + +usb:v189F* + ID_VENDOR_FROM_DATABASE=3Shape A/S + +usb:v189Fp0002* + ID_MODEL_FROM_DATABASE=Legato2 3D Scanner + +usb:v18A4* + ID_VENDOR_FROM_DATABASE=CSSN + +usb:v18A4p0001* + ID_MODEL_FROM_DATABASE=Snapshell IDR + +usb:v18A5* + ID_VENDOR_FROM_DATABASE=Verbatim, Ltd + +usb:v18A5p0214* + ID_MODEL_FROM_DATABASE=Portable Hard Drive + +usb:v18A5p0216* + ID_MODEL_FROM_DATABASE=External Hard Drive + +usb:v18A5p0218* + ID_MODEL_FROM_DATABASE=External Hard Drive + +usb:v18A5p0227* + ID_MODEL_FROM_DATABASE=Pocket Hard Drive + +usb:v18A5p022B* + ID_MODEL_FROM_DATABASE=Portable Hard Drive (Store'n'Go) + +usb:v18A5p0237* + ID_MODEL_FROM_DATABASE=Portable Harddrive (500 GB) + +usb:v18A5p0302* + ID_MODEL_FROM_DATABASE=32GB Flash Drive + +usb:v18B1* + ID_VENDOR_FROM_DATABASE=Petalynx + +usb:v18B1p0037* + ID_MODEL_FROM_DATABASE=Maxter Remote Control + +usb:v18B4* + ID_VENDOR_FROM_DATABASE=e3C Technologies + +usb:v18B4p1001* + ID_MODEL_FROM_DATABASE=DUTV007 + +usb:v18B4p1002* + ID_MODEL_FROM_DATABASE=EC168 (v5) based USB DVB-T receiver + +usb:v18B4p1689* + ID_MODEL_FROM_DATABASE=DUTV009 + +usb:v18B4pFFFA* + ID_MODEL_FROM_DATABASE=EC168 (v2) based USB DVB-T receiver + +usb:v18B4pFFFB* + ID_MODEL_FROM_DATABASE=EC168 (v3) based USB DVB-T receiver + +usb:v18B6* + ID_VENDOR_FROM_DATABASE=Mikkon Technology Limited + +usb:v18B7* + ID_VENDOR_FROM_DATABASE=Zotek Electronic Co., Ltd. + +usb:v18C5* + ID_VENDOR_FROM_DATABASE=AMIT Technology, Inc. + +usb:v18C5p0002* + ID_MODEL_FROM_DATABASE=CG-WLUSB2GO + +usb:v18C5p0008* + ID_MODEL_FROM_DATABASE=CG-WLUSB2GNR Corega Wireless USB Adapter + +usb:v18C5p0012* + ID_MODEL_FROM_DATABASE=CG-WLUSB10 Corega Wireless USB Adapter + +usb:v18CD* + ID_VENDOR_FROM_DATABASE=Ecamm + +usb:v18CDpCAFE* + ID_MODEL_FROM_DATABASE=Pico iMage + +usb:v18D1* + ID_VENDOR_FROM_DATABASE=Google Inc. + +usb:v18D1p0D02* + ID_MODEL_FROM_DATABASE=Celkon A88 + +usb:v18D1p2D00* + ID_MODEL_FROM_DATABASE=Android-powered device in accessory mode + +usb:v18D1p2D01* + ID_MODEL_FROM_DATABASE=Android-powered device in accessory mode with ADB support + +usb:v18D1p4E11* + ID_MODEL_FROM_DATABASE=Nexus One + +usb:v18D1p4E12* + ID_MODEL_FROM_DATABASE=Nexus One (debug) + +usb:v18D1p4E13* + ID_MODEL_FROM_DATABASE=Nexus One (tether) + +usb:v18D1p4E20* + ID_MODEL_FROM_DATABASE=Nexus S (fastboot) + +usb:v18D1p4E21* + ID_MODEL_FROM_DATABASE=Nexus S + +usb:v18D1p4E22* + ID_MODEL_FROM_DATABASE=Nexus S (debug) + +usb:v18D1p4E24* + ID_MODEL_FROM_DATABASE=Nexus S (tether) + +usb:v18D1p4E40* + ID_MODEL_FROM_DATABASE=Nexus 7 (fastboot) + +usb:v18D1p4E41* + ID_MODEL_FROM_DATABASE=ASUS Nexus 7 (MTP modus) + +usb:v18D1p4E42* + ID_MODEL_FROM_DATABASE=Nexus 7 (debug) + +usb:v18D1p4E43* + ID_MODEL_FROM_DATABASE=ASUS Nexus 7 (PTP modus) + +usb:v18D1p4EE1* + ID_MODEL_FROM_DATABASE=Nexus 4 + +usb:v18D1p4EE2* + ID_MODEL_FROM_DATABASE=Nexus 4 (debug) + +usb:v18D1p4EE3* + ID_MODEL_FROM_DATABASE=Nexus 4 (tether) + +usb:v18D1p4EE4* + ID_MODEL_FROM_DATABASE=Nexus 4 (debug + tether) + +usb:v18D1p7102* + ID_MODEL_FROM_DATABASE=Toshiba Thrive tablet + +usb:v18D1pB004* + ID_MODEL_FROM_DATABASE=Pandigital / B&N Novel 9" tablet + +usb:v18D5* + ID_VENDOR_FROM_DATABASE=Starline International Group Limited + +usb:v18D9* + ID_VENDOR_FROM_DATABASE=Kaba + +usb:v18D9p01A0* + ID_MODEL_FROM_DATABASE=B-Net 91 07 + +usb:v18DC* + ID_VENDOR_FROM_DATABASE=LKC Technologies, Inc. + +usb:v18DD* + ID_VENDOR_FROM_DATABASE=Planon System Solutions Inc. + +usb:v18DDp1000* + ID_MODEL_FROM_DATABASE=DocuPen RC800 + +usb:v18E3* + ID_VENDOR_FROM_DATABASE=Fitipower Integrated Technology Inc + +usb:v18E3p7102* + ID_MODEL_FROM_DATABASE=Multi Card Reader (Internal) + +usb:v18E3p9101* + ID_MODEL_FROM_DATABASE=All-in-1 Card Reader + +usb:v18E3p9102* + ID_MODEL_FROM_DATABASE=Multi Card Reader + +usb:v18E3p9512* + ID_MODEL_FROM_DATABASE=Webcam + +usb:v18E8* + ID_VENDOR_FROM_DATABASE=Qcom + +usb:v18E8p6144* + ID_MODEL_FROM_DATABASE=LR802UA 802.11b Wireless Adapter [ALi M4301AU] + +usb:v18E8p6196* + ID_MODEL_FROM_DATABASE=RT2573 + +usb:v18E8p6229* + ID_MODEL_FROM_DATABASE=RT2573 + +usb:v18E8p6232* + ID_MODEL_FROM_DATABASE=Wireless 802.11g 54Mbps Network Adapter [RTL8187] + +usb:v18EA* + ID_VENDOR_FROM_DATABASE=Matrox Graphics, Inc. + +usb:v18EAp0002* + ID_MODEL_FROM_DATABASE=DualHead2Go [Analog Edition] + +usb:v18EAp0004* + ID_MODEL_FROM_DATABASE=TripleHead2Go [Digital Edition] + +usb:v18EC* + ID_VENDOR_FROM_DATABASE=Arkmicro Technologies Inc. + +usb:v18ECp3118* + ID_MODEL_FROM_DATABASE=USB to IrDA adapter [ARK3116T] + +usb:v18ECp3188* + ID_MODEL_FROM_DATABASE=ARK3188 UVC Webcam + +usb:v18ECp3299* + ID_MODEL_FROM_DATABASE=Webcam Carrefour + +usb:v18ECp3366* + ID_MODEL_FROM_DATABASE=Bresser Biolux NV + +usb:v18FD* + ID_VENDOR_FROM_DATABASE=FineArch Inc. + +usb:v1908* + ID_VENDOR_FROM_DATABASE=GEMBIRD + +usb:v1908p1320* + ID_MODEL_FROM_DATABASE=PhotoFrame PF-15-1 + +usb:v190D* + ID_VENDOR_FROM_DATABASE=Motorola GSG + +usb:v1914* + ID_VENDOR_FROM_DATABASE=Alco Digital Devices Limited + +usb:v1915* + ID_VENDOR_FROM_DATABASE=Nordic Semiconductor ASA + +usb:v1915p2233* + ID_MODEL_FROM_DATABASE=Linksys WUSB11 v2.8 802.11b Adapter [Atmel AT76C505] + +usb:v1915p2234* + ID_MODEL_FROM_DATABASE=Linksys WUSB54G v1 OEM 802.11g Adapter [Intersil ISL3886] + +usb:v1915p2235* + ID_MODEL_FROM_DATABASE=Linksys WUSB54GP v1 OEM 802.11g Adapter [Intersil ISL3886] + +usb:v1915p2236* + ID_MODEL_FROM_DATABASE=Linksys WUSB11 v3.0 802.11b Adapter [Intersil PRISM 3] + +usb:v1926* + ID_VENDOR_FROM_DATABASE=NextWindow + +usb:v1926p0003* + ID_MODEL_FROM_DATABASE=1900 HID Touchscreen + +usb:v1926p0006* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0064* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0065* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0066* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0067* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0068* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0069* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0071* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0072* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0073* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0074* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0075* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0076* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0077* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0078* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0079* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p007A* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p007E* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p007F* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0080* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0081* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0082* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0083* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0084* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0085* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0086* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v1926p0087* + ID_MODEL_FROM_DATABASE=1950 HID Touchscreen + +usb:v192F* + ID_VENDOR_FROM_DATABASE=Avago Technologies, Pte. + +usb:v192Fp0000* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v192Fp0416* + ID_MODEL_FROM_DATABASE=ADNS-5700 Optical Mouse Controller (3-button) + +usb:v192Fp0616* + ID_MODEL_FROM_DATABASE=ADNS-5700 Optical Mouse Controller (5-button) + +usb:v1930* + ID_VENDOR_FROM_DATABASE=Shenzhen Xianhe Technology Co., Ltd. + +usb:v1931* + ID_VENDOR_FROM_DATABASE=Ningbo Broad Telecommunication Co., Ltd. + +usb:v1934* + ID_VENDOR_FROM_DATABASE=Feature Integration Technology Inc. (Fintek) + +usb:v1934p0602* + ID_MODEL_FROM_DATABASE=F71610 or F71612 Consumer Infrared Receiver/Transceiver + +usb:v1934p0702* + ID_MODEL_FROM_DATABASE=Integrated Consumer Infrared Receiver/Transceiver + +usb:v1934p5168* + ID_MODEL_FROM_DATABASE=F71610A or F71612A Consumer Infrared Receiver/Transceiver + +usb:v1941* + ID_VENDOR_FROM_DATABASE=Dream Link + +usb:v1941p8021* + ID_MODEL_FROM_DATABASE=WH1080 Weather Station / USB Missile Launcher + +usb:v1943* + ID_VENDOR_FROM_DATABASE=Sensoray Co., Inc. + +usb:v1943p2250* + ID_MODEL_FROM_DATABASE=Model 2250 MPEG and JPEG Capture Card + +usb:v1943p2253* + ID_MODEL_FROM_DATABASE=Model 2253 Audio/Video Codec Card + +usb:v1943p2255* + ID_MODEL_FROM_DATABASE=Model 2255 4 Channel Capture Card + +usb:v1943p2257* + ID_MODEL_FROM_DATABASE=Model 2257 4 Channel Capture Card + +usb:v1943pA250* + ID_MODEL_FROM_DATABASE=Model 2250 MPEG and JPEG Capture Card (cold) + +usb:v1943pA253* + ID_MODEL_FROM_DATABASE=Model 2253 Audio/Video Codec Card (cold) + +usb:v1949* + ID_VENDOR_FROM_DATABASE=Lab126, Inc. + +usb:v1949p0002* + ID_MODEL_FROM_DATABASE=Amazon Kindle + +usb:v1949p0004* + ID_MODEL_FROM_DATABASE=Amazon Kindle 3/4/Paperwhite + +usb:v1949p0006* + ID_MODEL_FROM_DATABASE=Kindle Fire + +usb:v1949p0008* + ID_MODEL_FROM_DATABASE=Amazon Kindle Fire HD 8.9" + +usb:v194F* + ID_VENDOR_FROM_DATABASE=PreSonus Audio Electronics, Inc. + +usb:v194Fp0101* + ID_MODEL_FROM_DATABASE=AudioBox 22 VSL + +usb:v194Fp0102* + ID_MODEL_FROM_DATABASE=AudioBox 44 VSL + +usb:v194Fp0103* + ID_MODEL_FROM_DATABASE=AudioBox 1818 VSL + +usb:v194Fp0301* + ID_MODEL_FROM_DATABASE=AudioBox + +usb:v1951* + ID_VENDOR_FROM_DATABASE=Hyperstone AG + +usb:v1953* + ID_VENDOR_FROM_DATABASE=Ironkey Inc. + +usb:v1954* + ID_VENDOR_FROM_DATABASE=Radiient Technologies + +usb:v195D* + ID_VENDOR_FROM_DATABASE=Itron Technology iONE + +usb:v195Dp7002* + ID_MODEL_FROM_DATABASE=Libra-Q11 IR remote + +usb:v195Dp7006* + ID_MODEL_FROM_DATABASE=Libra-Q26 / 1.0 Remote + +usb:v195Dp7777* + ID_MODEL_FROM_DATABASE=Scorpius wireless keyboard + +usb:v195Dp7779* + ID_MODEL_FROM_DATABASE=Scorpius-P20MT + +usb:v1965* + ID_VENDOR_FROM_DATABASE=Uniden Corporation + +usb:v1965p0016* + ID_MODEL_FROM_DATABASE=HomePatrol-1 + +usb:v1967* + ID_VENDOR_FROM_DATABASE=CASIO HITACHI Mobile Communications Co., Ltd. + +usb:v196B* + ID_VENDOR_FROM_DATABASE=Wispro Technology Inc. + +usb:v1970* + ID_VENDOR_FROM_DATABASE=Dane-Elec Corp. USA + +usb:v1970p0000* + ID_MODEL_FROM_DATABASE=Z Mate 16GB + +usb:v1975* + ID_VENDOR_FROM_DATABASE=Dongguan Guneetal Wire & Cable Co., Ltd. + +usb:v1976* + ID_VENDOR_FROM_DATABASE=Chipsbrand Microelectronics (HK) Co., Ltd. + +usb:v1976p6025* + ID_MODEL_FROM_DATABASE=Flash Drive 512 MB + +usb:v1977* + ID_VENDOR_FROM_DATABASE=T-Logic + +usb:v1977p0111* + ID_MODEL_FROM_DATABASE=TL203 MP3 Player and Voice Recorder + +usb:v197D* + ID_VENDOR_FROM_DATABASE=Leuze electronic + +usb:v197Dp0222* + ID_MODEL_FROM_DATABASE=BCL 508i + +usb:v1989* + ID_VENDOR_FROM_DATABASE=Nuconn Technology Corp. + +usb:v198F* + ID_VENDOR_FROM_DATABASE=Beceem Communications Inc. + +usb:v198Fp0210* + ID_MODEL_FROM_DATABASE=BCS200 WiMAX Adapter + +usb:v198Fp0220* + ID_MODEL_FROM_DATABASE=BCSM250 WiMAX Adapter + +usb:v1990* + ID_VENDOR_FROM_DATABASE=Acron Precision Industrial Co., Ltd. + +usb:v1995* + ID_VENDOR_FROM_DATABASE=Trillium Technology Pty. Ltd. + +usb:v1995p3202* + ID_MODEL_FROM_DATABASE=REC-ADPT-USB (recorder) + +usb:v1995p3203* + ID_MODEL_FROM_DATABASE=REC-A-ADPT-USB (recorder) + +usb:v199B* + ID_VENDOR_FROM_DATABASE=MicroStrain, Inc. + +usb:v199Bp3065* + ID_MODEL_FROM_DATABASE=3DM-GX3-25 Orientation Sensor + +usb:v199E* + ID_VENDOR_FROM_DATABASE=The Imaging Source Europe GmbH + +usb:v199Ep8101* + ID_MODEL_FROM_DATABASE=DFx 21BU04 Camera + +usb:v199F* + ID_VENDOR_FROM_DATABASE=Benica Corporation + +usb:v19A8* + ID_VENDOR_FROM_DATABASE=Biforst Technology Inc. + +usb:v19AB* + ID_VENDOR_FROM_DATABASE=Bodelin + +usb:v19ABp1000* + ID_MODEL_FROM_DATABASE=ProScope HR + +usb:v19AF* + ID_VENDOR_FROM_DATABASE=S Life + +usb:v19AFp6611* + ID_MODEL_FROM_DATABASE=Celestia VoIP Phone + +usb:v19B2* + ID_VENDOR_FROM_DATABASE=Batronix + +usb:v19B2p0010* + ID_MODEL_FROM_DATABASE=BX32 Batupo + +usb:v19B2p0011* + ID_MODEL_FROM_DATABASE=BX32P Barlino + +usb:v19B2p0012* + ID_MODEL_FROM_DATABASE=BX40 Bagero + +usb:v19B2p0013* + ID_MODEL_FROM_DATABASE=BX48 Batego + +usb:v19B4* + ID_VENDOR_FROM_DATABASE=Celestron + +usb:v19B4p0002* + ID_MODEL_FROM_DATABASE=SkyScout Personal Planetarium + +usb:v19B4p0101* + ID_MODEL_FROM_DATABASE=Handheld Digital Microscope 44302 + +usb:v19B5* + ID_VENDOR_FROM_DATABASE=B & W Group + +usb:v19B6* + ID_VENDOR_FROM_DATABASE=Infotech Logistic, LLC + +usb:v19B9* + ID_VENDOR_FROM_DATABASE=Data Robotics + +usb:v19B9p8D20* + ID_MODEL_FROM_DATABASE=Drobo Elite + +usb:v19C2* + ID_VENDOR_FROM_DATABASE=Futuba + +usb:v19C2p6A11* + ID_MODEL_FROM_DATABASE=MDM166A Fluorescent Display + +usb:v19CA* + ID_VENDOR_FROM_DATABASE=Mindtribe + +usb:v19CAp0001* + ID_MODEL_FROM_DATABASE=Sandio 3D HID Mouse + +usb:v19CF* + ID_VENDOR_FROM_DATABASE=Parrot SA + +usb:v19D2* + ID_VENDOR_FROM_DATABASE=ZTE WCDMA Technologies MSM + +usb:v19D2p0001* + ID_MODEL_FROM_DATABASE=CDMA Wireless Modem + +usb:v19D2p0002* + ID_MODEL_FROM_DATABASE=MF632/ONDA ET502HS/MT505UP + +usb:v19D2p0007* + ID_MODEL_FROM_DATABASE=TU25 WiMAX Adapter [Beceem BCS200] + +usb:v19D2p0031* + ID_MODEL_FROM_DATABASE=MF110/MF627/MF636 + +usb:v19D2p0063* + ID_MODEL_FROM_DATABASE=K3565-Z HSDPA + +usb:v19D2p0064* + ID_MODEL_FROM_DATABASE=MF627 AU + +usb:v19D2p0083* + ID_MODEL_FROM_DATABASE=MF190 + +usb:v19D2p0103* + ID_MODEL_FROM_DATABASE=MF112 + +usb:v19D2p0104* + ID_MODEL_FROM_DATABASE=K4505-Z + +usb:v19D2p0146* + ID_MODEL_FROM_DATABASE=MF 195E (HSPA+ Modem) + +usb:v19D2p0167* + ID_MODEL_FROM_DATABASE=MF820 4G LTE + +usb:v19D2p0172* + ID_MODEL_FROM_DATABASE=AX226 WIMAX MODEM (After Modeswitch) + +usb:v19D2p0325* + ID_MODEL_FROM_DATABASE=LTE4G O2 ZTE MF821D LTE/UMTS/GSM Modem/Networkcard + +usb:v19D2p0326* + ID_MODEL_FROM_DATABASE=LTE4G O2 ZTE MF821D LTE/UMTS/GSM Modem/Networkcard + +usb:v19D2p1008* + ID_MODEL_FROM_DATABASE=K3570-Z + +usb:v19D2p1010* + ID_MODEL_FROM_DATABASE=K3571-Z + +usb:v19D2p1017* + ID_MODEL_FROM_DATABASE=K5006-Z vodafone LTE/UMTS/GSM Modem/Networkcard + +usb:v19D2p1018* + ID_MODEL_FROM_DATABASE=K5006-Z vodafone LTE/UMTS/GSM Modem/Networkcard + +usb:v19D2p1203* + ID_MODEL_FROM_DATABASE=MF691 [ T-Mobile webConnect Rocket 2.0] + +usb:v19D2p1217* + ID_MODEL_FROM_DATABASE=MF652 + +usb:v19D2p1218* + ID_MODEL_FROM_DATABASE=MF652 + +usb:v19D2p2000* + ID_MODEL_FROM_DATABASE=MF627/MF628/MF628+/MF636+ HSDPA/HSUPA + +usb:v19D2pFFF2* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem (QDL mode) + +usb:v19D2pFFF3* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem + +usb:v19E1* + ID_VENDOR_FROM_DATABASE=WeiDuan Electronic Accessory (S.Z.) Co., Ltd. + +usb:v19E8* + ID_VENDOR_FROM_DATABASE=Industrial Technology Research Institute + +usb:v19EF* + ID_VENDOR_FROM_DATABASE=Pak Heng Technology (Shenzhen) Co., Ltd. + +usb:v19F7* + ID_VENDOR_FROM_DATABASE=RODE Microphones + +usb:v19F7p0001* + ID_MODEL_FROM_DATABASE=Podcaster + +usb:v19FA* + ID_VENDOR_FROM_DATABASE=Gampaq Co.Ltd + +usb:v19FAp0703* + ID_MODEL_FROM_DATABASE=Steering Wheel + +usb:v19FF* + ID_VENDOR_FROM_DATABASE=Dynex + +usb:v19FFp0102* + ID_MODEL_FROM_DATABASE=1.3MP Webcam + +usb:v19FFp0201* + ID_MODEL_FROM_DATABASE=Rocketfish Wireless 2.4G Laser Mouse + +usb:v1A08* + ID_VENDOR_FROM_DATABASE=Bellwood International, Inc. + +usb:v1A0A* + ID_VENDOR_FROM_DATABASE=USB-IF non-workshop + +usb:v1A0ApBADD* + ID_MODEL_FROM_DATABASE=USB OTG Compliance test device + +usb:v1A12* + ID_VENDOR_FROM_DATABASE=KES Co., Ltd. + +usb:v1A1D* + ID_VENDOR_FROM_DATABASE=Veho + +usb:v1A1Dp0407* + ID_MODEL_FROM_DATABASE=Mimi WiFi speakers + +usb:v1A25* + ID_VENDOR_FROM_DATABASE=Amphenol East Asia Ltd. + +usb:v1A2A* + ID_VENDOR_FROM_DATABASE=Seagate Branded Solutions + +usb:v1A2C* + ID_VENDOR_FROM_DATABASE=China Resource Semico Co., Ltd + +usb:v1A2Cp0021* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v1A2Cp0024* + ID_MODEL_FROM_DATABASE=Multimedia Keyboard + +usb:v1A32* + ID_VENDOR_FROM_DATABASE=Quanta Microsystems, Inc. + +usb:v1A32p0304* + ID_MODEL_FROM_DATABASE=802.11n Wireless LAN Card + +usb:v1A34* + ID_VENDOR_FROM_DATABASE=ACRUX + +usb:v1A34p0802* + ID_MODEL_FROM_DATABASE=Gamepad + +usb:v1A36* + ID_VENDOR_FROM_DATABASE=Biwin Technology Ltd. + +usb:v1A40* + ID_VENDOR_FROM_DATABASE=Terminus Technology Inc. + +usb:v1A40p0101* + ID_MODEL_FROM_DATABASE=4-Port HUB + +usb:v1A40p0201* + ID_MODEL_FROM_DATABASE=FE 2.1 7-port Hub + +usb:v1A41* + ID_VENDOR_FROM_DATABASE=Action Electronics Co., Ltd. + +usb:v1A44* + ID_VENDOR_FROM_DATABASE=VASCO Data Security International + +usb:v1A44p0001* + ID_MODEL_FROM_DATABASE=Digipass 905 SmartCard Reader + +usb:v1A4A* + ID_VENDOR_FROM_DATABASE=Silicon Image + +usb:v1A4B* + ID_VENDOR_FROM_DATABASE=SafeBoot International B.V. + +usb:v1A5A* + ID_VENDOR_FROM_DATABASE=Tandberg Data + +usb:v1A61* + ID_VENDOR_FROM_DATABASE=Abbott Diabetes Care + +usb:v1A61p3410* + ID_MODEL_FROM_DATABASE=CoPilot System Cable + +usb:v1A6A* + ID_VENDOR_FROM_DATABASE=Spansion Inc. + +usb:v1A6D* + ID_VENDOR_FROM_DATABASE=SamYoung Electronics Co., Ltd + +usb:v1A6E* + ID_VENDOR_FROM_DATABASE=Global Unichip Corp. + +usb:v1A6F* + ID_VENDOR_FROM_DATABASE=Sagem Orga GmbH + +usb:v1A72* + ID_VENDOR_FROM_DATABASE=Physik Instrumente + +usb:v1A72p1008* + ID_MODEL_FROM_DATABASE=E-861 PiezoWalk NEXACT Controller + +usb:v1A79* + ID_VENDOR_FROM_DATABASE=Bayer Health Care LLC + +usb:v1A7B* + ID_VENDOR_FROM_DATABASE=Lumberg Connect GmbH & Co. KG + +usb:v1A7C* + ID_VENDOR_FROM_DATABASE=Evoluent + +usb:v1A7Cp0068* + ID_MODEL_FROM_DATABASE=VerticalMouse 3 + +usb:v1A7Cp0168* + ID_MODEL_FROM_DATABASE=VerticalMouse 3 Wireless + +usb:v1A7Cp0191* + ID_MODEL_FROM_DATABASE=VerticalMouse 4 + +usb:v1A81* + ID_VENDOR_FROM_DATABASE=Holtek Semiconductor, Inc. + +usb:v1A81p2203* + ID_MODEL_FROM_DATABASE=Laser Gaming mouse + +usb:v1A81p2204* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v1A81p2205* + ID_MODEL_FROM_DATABASE=Laser Mouse + +usb:v1A86* + ID_VENDOR_FROM_DATABASE=QinHeng Electronics + +usb:v1A86p5512* + ID_MODEL_FROM_DATABASE=CH341 in EPP/MEM/I2C mode, EPP/I2C adapter + +usb:v1A86p5523* + ID_MODEL_FROM_DATABASE=CH341 in serial mode, usb to serial port converter + +usb:v1A86p5584* + ID_MODEL_FROM_DATABASE=CH341 in parallel mode, usb to printer port converter + +usb:v1A86p7523* + ID_MODEL_FROM_DATABASE=HL-340 USB-Serial adapter + +usb:v1A86p752D* + ID_MODEL_FROM_DATABASE=CH345 MIDI adapter + +usb:v1A86p7584* + ID_MODEL_FROM_DATABASE=CH340S + +usb:v1A86pE008* + ID_MODEL_FROM_DATABASE=HID-based serial adapater + +usb:v1A89* + ID_VENDOR_FROM_DATABASE=Dynalith Systems Co., Ltd. + +usb:v1A8B* + ID_VENDOR_FROM_DATABASE=SGS Taiwan Ltd. + +usb:v1A8D* + ID_VENDOR_FROM_DATABASE=BandRich, Inc. + +usb:v1A8Dp1002* + ID_MODEL_FROM_DATABASE=BandLuxe 3.5G HSDPA Adapter + +usb:v1A8Dp1009* + ID_MODEL_FROM_DATABASE=BandLuxe 3.5G HSPA Adapter + +usb:v1A8Dp100D* + ID_MODEL_FROM_DATABASE=4G LTE adapter + +usb:v1A98* + ID_VENDOR_FROM_DATABASE=Leica Camera AG + +usb:v1AA4* + ID_VENDOR_FROM_DATABASE=Data Drive Thru, Inc. + +usb:v1AA5* + ID_VENDOR_FROM_DATABASE=UBeacon Technologies, Inc. + +usb:v1AA6* + ID_VENDOR_FROM_DATABASE=eFortune Technology Corp. + +usb:v1AAD* + ID_VENDOR_FROM_DATABASE=KeeTouch + +usb:v1AADp0001* + ID_MODEL_FROM_DATABASE=Touchscreen + +usb:v1AB1* + ID_VENDOR_FROM_DATABASE=Rigol Technologies + +usb:v1AB1p0588* + ID_MODEL_FROM_DATABASE=DS1000 SERIES + +usb:v1ACB* + ID_VENDOR_FROM_DATABASE=Salcomp Plc + +usb:v1AD1* + ID_VENDOR_FROM_DATABASE=Desay Wire Co., Ltd. + +usb:v1AD4* + ID_VENDOR_FROM_DATABASE=APS + +usb:v1AD4p0002* + ID_MODEL_FROM_DATABASE=KM290-HRS + +usb:v1ADB* + ID_VENDOR_FROM_DATABASE=SEL C662 Serial Cable + +usb:v1AE4* + ID_VENDOR_FROM_DATABASE=ic-design Reinhard Gottinger GmbH + +usb:v1AE7* + ID_VENDOR_FROM_DATABASE=X-TENSIONS + +usb:v1AE7p0381* + ID_MODEL_FROM_DATABASE=VS-DVB-T 380U (af9015 based) + +usb:v1AE7p2001* + ID_MODEL_FROM_DATABASE=SpeedLink Snappy Mic webcam (SL-6825-SBK) + +usb:v1AE7p9003* + ID_MODEL_FROM_DATABASE=SpeedLink Vicious And Devine Laplace webcam, white (VD-1504-SWT) + +usb:v1AE7p9004* + ID_MODEL_FROM_DATABASE=SpeedLink Vicious And Devine Laplace webcam, black (VD-1504-SBK) + +usb:v1AED* + ID_VENDOR_FROM_DATABASE=High Top Precision Electronic Co., Ltd. + +usb:v1AEF* + ID_VENDOR_FROM_DATABASE=Conntech Electronic (Suzhou) Corporation + +usb:v1AF1* + ID_VENDOR_FROM_DATABASE=Connect One Ltd. + +usb:v1AFE* + ID_VENDOR_FROM_DATABASE=A. Eberle GmbH & Co. KG + +usb:v1AFEp0001* + ID_MODEL_FROM_DATABASE=PQ Box 100 + +usb:v1B04* + ID_VENDOR_FROM_DATABASE=Meilhaus Electronic GmbH + +usb:v1B04p0630* + ID_MODEL_FROM_DATABASE=ME-630 + +usb:v1B04p0940* + ID_MODEL_FROM_DATABASE=ME-94 + +usb:v1B04p0950* + ID_MODEL_FROM_DATABASE=ME-95 + +usb:v1B04p0960* + ID_MODEL_FROM_DATABASE=ME-96 + +usb:v1B04p1000* + ID_MODEL_FROM_DATABASE=ME-1000 + +usb:v1B04p100A* + ID_MODEL_FROM_DATABASE=ME-1000 + +usb:v1B04p100B* + ID_MODEL_FROM_DATABASE=ME-1000 + +usb:v1B04p1400* + ID_MODEL_FROM_DATABASE=ME-1400 + +usb:v1B04p140A* + ID_MODEL_FROM_DATABASE=ME-1400A + +usb:v1B04p140B* + ID_MODEL_FROM_DATABASE=ME-1400B + +usb:v1B04p140C* + ID_MODEL_FROM_DATABASE=ME-1400C + +usb:v1B04p140D* + ID_MODEL_FROM_DATABASE=ME-1400D + +usb:v1B04p140E* + ID_MODEL_FROM_DATABASE=ME-1400E + +usb:v1B04p14EA* + ID_MODEL_FROM_DATABASE=ME-1400EA + +usb:v1B04p14EB* + ID_MODEL_FROM_DATABASE=ME-1400EB + +usb:v1B04p1604* + ID_MODEL_FROM_DATABASE=ME-1600/4U + +usb:v1B04p1608* + ID_MODEL_FROM_DATABASE=ME-1600/8U + +usb:v1B04p160C* + ID_MODEL_FROM_DATABASE=ME-1600/12U + +usb:v1B04p160F* + ID_MODEL_FROM_DATABASE=ME-1600/16U + +usb:v1B04p168F* + ID_MODEL_FROM_DATABASE=ME-1600/16U8I + +usb:v1B04p4610* + ID_MODEL_FROM_DATABASE=ME-4610 + +usb:v1B04p4650* + ID_MODEL_FROM_DATABASE=ME-4650 + +usb:v1B04p4660* + ID_MODEL_FROM_DATABASE=ME-4660 + +usb:v1B04p4661* + ID_MODEL_FROM_DATABASE=ME-4660I + +usb:v1B04p4662* + ID_MODEL_FROM_DATABASE=ME-4660 + +usb:v1B04p4663* + ID_MODEL_FROM_DATABASE=ME-4660I + +usb:v1B04p4670* + ID_MODEL_FROM_DATABASE=ME-4670 + +usb:v1B04p4671* + ID_MODEL_FROM_DATABASE=ME-4670I + +usb:v1B04p4672* + ID_MODEL_FROM_DATABASE=ME-4670S + +usb:v1B04p4673* + ID_MODEL_FROM_DATABASE=ME-4670IS + +usb:v1B04p4680* + ID_MODEL_FROM_DATABASE=ME-4680 + +usb:v1B04p4681* + ID_MODEL_FROM_DATABASE=ME-4680I + +usb:v1B04p4682* + ID_MODEL_FROM_DATABASE=ME-4680S + +usb:v1B04p4683* + ID_MODEL_FROM_DATABASE=ME-4680IS + +usb:v1B04p6004* + ID_MODEL_FROM_DATABASE=ME-6000/4 + +usb:v1B04p6008* + ID_MODEL_FROM_DATABASE=ME-6000/8 + +usb:v1B04p600F* + ID_MODEL_FROM_DATABASE=ME-6000/16 + +usb:v1B04p6014* + ID_MODEL_FROM_DATABASE=ME-6000I/4 + +usb:v1B04p6018* + ID_MODEL_FROM_DATABASE=ME-6000I/8 + +usb:v1B04p601F* + ID_MODEL_FROM_DATABASE=ME-6000I/16 + +usb:v1B04p6034* + ID_MODEL_FROM_DATABASE=ME-6000ISLE/4 + +usb:v1B04p6038* + ID_MODEL_FROM_DATABASE=ME-6000ISLE/8 + +usb:v1B04p603F* + ID_MODEL_FROM_DATABASE=ME-6000ISLE/16 + +usb:v1B04p6044* + ID_MODEL_FROM_DATABASE=ME-6000/4/DIO + +usb:v1B04p6048* + ID_MODEL_FROM_DATABASE=ME-6000/8/DIO + +usb:v1B04p604F* + ID_MODEL_FROM_DATABASE=ME-6000/16/DIO + +usb:v1B04p6054* + ID_MODEL_FROM_DATABASE=ME-6000I/4/DIO + +usb:v1B04p6058* + ID_MODEL_FROM_DATABASE=ME-6000I/8/DIO + +usb:v1B04p605F* + ID_MODEL_FROM_DATABASE=ME-6000I/16/DIO + +usb:v1B04p6074* + ID_MODEL_FROM_DATABASE=ME-6000ISLE/4/DIO + +usb:v1B04p6078* + ID_MODEL_FROM_DATABASE=ME-6000ISLE/8/DIO + +usb:v1B04p607F* + ID_MODEL_FROM_DATABASE=ME-6000ISLE/16/DIO + +usb:v1B04p6104* + ID_MODEL_FROM_DATABASE=ME-6100/4 + +usb:v1B04p6108* + ID_MODEL_FROM_DATABASE=ME-6100/8 + +usb:v1B04p610F* + ID_MODEL_FROM_DATABASE=ME-6100/16 + +usb:v1B04p6114* + ID_MODEL_FROM_DATABASE=ME-6100I/4 + +usb:v1B04p6118* + ID_MODEL_FROM_DATABASE=ME-6100I/8 + +usb:v1B04p611F* + ID_MODEL_FROM_DATABASE=ME-6100I/16 + +usb:v1B04p6134* + ID_MODEL_FROM_DATABASE=ME-6100ISLE/4 + +usb:v1B04p6138* + ID_MODEL_FROM_DATABASE=ME-6100ISLE/8 + +usb:v1B04p613F* + ID_MODEL_FROM_DATABASE=ME-6100ISLE/16 + +usb:v1B04p6144* + ID_MODEL_FROM_DATABASE=ME-6100/4/DIO + +usb:v1B04p6148* + ID_MODEL_FROM_DATABASE=ME-6100/8/DIO + +usb:v1B04p614F* + ID_MODEL_FROM_DATABASE=ME-6100/16/DIO + +usb:v1B04p6154* + ID_MODEL_FROM_DATABASE=ME-6100I/4/DIO + +usb:v1B04p6158* + ID_MODEL_FROM_DATABASE=ME-6100I/8/DIO + +usb:v1B04p615F* + ID_MODEL_FROM_DATABASE=ME-6100I/16/DIO + +usb:v1B04p6174* + ID_MODEL_FROM_DATABASE=ME-6100ISLE/4/DIO + +usb:v1B04p6178* + ID_MODEL_FROM_DATABASE=ME-6100ISLE/8/DIO + +usb:v1B04p617F* + ID_MODEL_FROM_DATABASE=ME-6100ISLE/16/DIO + +usb:v1B04p6259* + ID_MODEL_FROM_DATABASE=ME-6200I/9/DIO + +usb:v1B04p6359* + ID_MODEL_FROM_DATABASE=ME-6300I/9/DIO + +usb:v1B04p810A* + ID_MODEL_FROM_DATABASE=ME-8100A + +usb:v1B04p810B* + ID_MODEL_FROM_DATABASE=ME-8100B + +usb:v1B04p820A* + ID_MODEL_FROM_DATABASE=ME-8200A + +usb:v1B04p820B* + ID_MODEL_FROM_DATABASE=ME-8200B + +usb:v1B0E* + ID_VENDOR_FROM_DATABASE=BLUTRONICS S.r.l. + +usb:v1B0Ep1078* + ID_MODEL_FROM_DATABASE=BLUDRIVE II CCID + +usb:v1B0Ep1079* + ID_MODEL_FROM_DATABASE=BLUDRIVE II CCID + +usb:v1B0Ep1080* + ID_MODEL_FROM_DATABASE=WRITECHIP II CCID + +usb:v1B1C* + ID_VENDOR_FROM_DATABASE=Corsair + +usb:v1B1Cp0890* + ID_MODEL_FROM_DATABASE=Flash Padlock + +usb:v1B1Cp0A00* + ID_MODEL_FROM_DATABASE=SP2500 Speakers + +usb:v1B1Cp0A60* + ID_MODEL_FROM_DATABASE=Vengeance K60 Keyboard + +usb:v1B1Cp1A01* + ID_MODEL_FROM_DATABASE=Flash Voyager GT + +usb:v1B1Cp1A0A* + ID_MODEL_FROM_DATABASE=Survivor Stealth Flash Drive + +usb:v1B1Cp1A90* + ID_MODEL_FROM_DATABASE=Flash Voyager GT + +usb:v1B20* + ID_VENDOR_FROM_DATABASE=MStar Semiconductor, Inc. + +usb:v1B22* + ID_VENDOR_FROM_DATABASE=WiLinx Corp. + +usb:v1B26* + ID_VENDOR_FROM_DATABASE=Cellex Power Products, Inc. + +usb:v1B27* + ID_VENDOR_FROM_DATABASE=Current Electronics Inc. + +usb:v1B28* + ID_VENDOR_FROM_DATABASE=NAVIsis Inc. + +usb:v1B32* + ID_VENDOR_FROM_DATABASE=Ugobe Life Forms, Inc. + +usb:v1B32p0064* + ID_MODEL_FROM_DATABASE=Pleo robotic dinosaur + +usb:v1B36* + ID_VENDOR_FROM_DATABASE=ViXS Systems, Inc. + +usb:v1B3B* + ID_VENDOR_FROM_DATABASE=iPassion Technology Inc. + +usb:v1B3Bp2933* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2935* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2936* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2937* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2938* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2939* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2950* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2951* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2952* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2953* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2955* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2956* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2957* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2958* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2959* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2960* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2961* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2962* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2963* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2965* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2966* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2967* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2968* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3Bp2969* + ID_MODEL_FROM_DATABASE=PC Camera/Webcam controller + +usb:v1B3F* + ID_VENDOR_FROM_DATABASE=Generalplus Technology Inc. + +usb:v1B3Fp0C52* + ID_MODEL_FROM_DATABASE=808 Camera #9 (mass storage mode) + +usb:v1B3Fp2002* + ID_MODEL_FROM_DATABASE=808 Camera #9 (web-cam mode) + +usb:v1B47* + ID_VENDOR_FROM_DATABASE=Energizer Holdings, Inc. + +usb:v1B47p0001* + ID_MODEL_FROM_DATABASE=CHUSB Duo Charger (NiMH AA/AAA USB smart charger) + +usb:v1B48* + ID_VENDOR_FROM_DATABASE=Plastron Precision Co., Ltd. + +usb:v1B59* + ID_VENDOR_FROM_DATABASE=K.S. Terminals Inc. + +usb:v1B5A* + ID_VENDOR_FROM_DATABASE=Chao Zhou Kai Yuan Electric Co., Ltd. + +usb:v1B65* + ID_VENDOR_FROM_DATABASE=The Hong Kong Standards and Testing Centre Ltd. + +usb:v1B72* + ID_VENDOR_FROM_DATABASE=ATERGI TECHNOLOGY CO., LTD. + +usb:v1B73* + ID_VENDOR_FROM_DATABASE=Fresco Logic + +usb:v1B73p1000* + ID_MODEL_FROM_DATABASE=xHC1 Controller + +usb:v1B75* + ID_VENDOR_FROM_DATABASE=Ovislink Corp. + +usb:v1B75p3072* + ID_MODEL_FROM_DATABASE=AirLive WN-360USB adapter + +usb:v1B75p8171* + ID_MODEL_FROM_DATABASE=WN-370USB 802.11bgn Wireless Adapter [Realtek RTL8188SU] + +usb:v1B75p8187* + ID_MODEL_FROM_DATABASE=AirLive WL-1600USB 802.11g Adapter [Realtek RTL8187L] + +usb:v1B75p9170* + ID_MODEL_FROM_DATABASE=AirLive X.USB 802.11abgn [Atheros AR9170+AR9104] + +usb:v1B75pA200* + ID_MODEL_FROM_DATABASE=AirLive WN-200USB wireless 11b/g/n dongle + +usb:v1B76* + ID_VENDOR_FROM_DATABASE=Legend Silicon Corp. + +usb:v1B80* + ID_VENDOR_FROM_DATABASE=Afatech + +usb:v1B80pC810* + ID_MODEL_FROM_DATABASE=MC810 [af9015] + +usb:v1B80pD393* + ID_MODEL_FROM_DATABASE=DVB-T receiver [RTL2832U] + +usb:v1B80pD396* + ID_MODEL_FROM_DATABASE=UB396-T [RTL2832U] + +usb:v1B80pD397* + ID_MODEL_FROM_DATABASE=DVB-T receiver [RTL2832U] + +usb:v1B80pD398* + ID_MODEL_FROM_DATABASE=DVB-T receiver [RTL2832U] + +usb:v1B80pD700* + ID_MODEL_FROM_DATABASE=FM Radio SnapMusic Mobile 700 (FM700) + +usb:v1B80pE297* + ID_MODEL_FROM_DATABASE=Conceptronic DVB-T CTVDIGRCU V3.0 + +usb:v1B80pE383* + ID_MODEL_FROM_DATABASE=DVB-T UB383-T [af9015] + +usb:v1B80pE385* + ID_MODEL_FROM_DATABASE=DVB-T UB385-T [af9015] + +usb:v1B80pE386* + ID_MODEL_FROM_DATABASE=DVB-T UB385-T [af9015] + +usb:v1B80pE399* + ID_MODEL_FROM_DATABASE=DVB-T KWorld PlusTV 399U [af9015] + +usb:v1B80pE39A* + ID_MODEL_FROM_DATABASE=DVB-T395U [af9015] + +usb:v1B80pE39B* + ID_MODEL_FROM_DATABASE=DVB-T395U [af9015] + +usb:v1B80pE401* + ID_MODEL_FROM_DATABASE=Sveon STV22 DVB-T [af9015] + +usb:v1B80pE409* + ID_MODEL_FROM_DATABASE=IT9137FN Dual DVB-T [KWorld UB499-2T] + +usb:v1B86* + ID_VENDOR_FROM_DATABASE=Dongguan Guanshang Electronics Co., Ltd. + +usb:v1B88* + ID_VENDOR_FROM_DATABASE=ShenMing Electron (Dong Guan) Co., Ltd. + +usb:v1B8C* + ID_VENDOR_FROM_DATABASE=Altium Limited + +usb:v1B8D* + ID_VENDOR_FROM_DATABASE=e-MOVE Technology Co., Ltd. + +usb:v1B8E* + ID_VENDOR_FROM_DATABASE=Amlogic, Inc. + +usb:v1B8F* + ID_VENDOR_FROM_DATABASE=MA LABS, Inc. + +usb:v1B96* + ID_VENDOR_FROM_DATABASE=N-Trig + +usb:v1B96p0001* + ID_MODEL_FROM_DATABASE=Duosense Transparent Electromagnetic Digitizer + +usb:v1B98* + ID_VENDOR_FROM_DATABASE=YMax Communications Corp. + +usb:v1B99* + ID_VENDOR_FROM_DATABASE=Shenzhen Yuanchuan Electronic + +usb:v1BA1* + ID_VENDOR_FROM_DATABASE=JINQ CHERN ENTERPRISE CO., LTD. + +usb:v1BA2* + ID_VENDOR_FROM_DATABASE=Lite Metals & Plastic (Shenzhen) Co., Ltd. + +usb:v1BA4* + ID_VENDOR_FROM_DATABASE=Ember Corporation + +usb:v1BA4p0001* + ID_MODEL_FROM_DATABASE=InSight USB Link + +usb:v1BA6* + ID_VENDOR_FROM_DATABASE=Abilis Systems + +usb:v1BA8* + ID_VENDOR_FROM_DATABASE=China Telecommunication Technology Labs + +usb:v1BAD* + ID_VENDOR_FROM_DATABASE=Harmonix Music + +usb:v1BADp0002* + ID_MODEL_FROM_DATABASE=Guitar for Xbox 360 + +usb:v1BADp0003* + ID_MODEL_FROM_DATABASE=Drum Kit for Xbox 360 + +usb:v1BAE* + ID_VENDOR_FROM_DATABASE=Vuzix Corporation + +usb:v1BAEp0002* + ID_MODEL_FROM_DATABASE=VR920 Immersive Eyewear + +usb:v1BBB* + ID_VENDOR_FROM_DATABASE=T & A Mobile Phones + +usb:v1BC4* + ID_VENDOR_FROM_DATABASE=Ford Motor Co. + +usb:v1BC5* + ID_VENDOR_FROM_DATABASE=AVIXE Technology (China) Ltd. + +usb:v1BC7* + ID_VENDOR_FROM_DATABASE=Telit + +usb:v1BC7p0020* + ID_MODEL_FROM_DATABASE=HE863 + +usb:v1BC7p0021* + ID_MODEL_FROM_DATABASE=HE910 + +usb:v1BC7p1003* + ID_MODEL_FROM_DATABASE=UC864-E + +usb:v1BC7p1004* + ID_MODEL_FROM_DATABASE=UC864-G + +usb:v1BC7p1005* + ID_MODEL_FROM_DATABASE=CC864-DUAL + +usb:v1BC7p1006* + ID_MODEL_FROM_DATABASE=CC864-SINGLE + +usb:v1BC7p1010* + ID_MODEL_FROM_DATABASE=DE910-DUAL + +usb:v1BCE* + ID_VENDOR_FROM_DATABASE=Contac Cable Industrial Limited + +usb:v1BCF* + ID_VENDOR_FROM_DATABASE=Sunplus Innovation Technology Inc. + +usb:v1BCFp0007* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v1BCFp053A* + ID_MODEL_FROM_DATABASE=Targa Silvercrest OMC807-C optische Funkmaus + +usb:v1BCFp05C5* + ID_MODEL_FROM_DATABASE=SPRF2413A [2.4GHz Wireless Keyboard/Mouse Receiver] + +usb:v1BCFp05CF* + ID_MODEL_FROM_DATABASE=Micro keyboard & mouse receiver + +usb:v1BCFp0C31* + ID_MODEL_FROM_DATABASE=SPIF30x Serial-ATA bridge + +usb:v1BCFp2885* + ID_MODEL_FROM_DATABASE=ASUS Webcam + +usb:v1BCFp2888* + ID_MODEL_FROM_DATABASE=HP Universal Camera + +usb:v1BD0* + ID_VENDOR_FROM_DATABASE=Hangzhou Riyue Electronic Co., Ltd. + +usb:v1BD5* + ID_VENDOR_FROM_DATABASE=BG Systems, Inc. + +usb:v1BDE* + ID_VENDOR_FROM_DATABASE=P-TWO INDUSTRIES, INC. + +usb:v1BEF* + ID_VENDOR_FROM_DATABASE=Shenzhen Tongyuan Network-Communication Cables Co., Ltd + +usb:v1BF0* + ID_VENDOR_FROM_DATABASE=RealVision Inc. + +usb:v1BF5* + ID_VENDOR_FROM_DATABASE=Extranet Systems Inc. + +usb:v1BF6* + ID_VENDOR_FROM_DATABASE=Orient Semiconductor Electronics, Ltd. + +usb:v1BFD* + ID_VENDOR_FROM_DATABASE=TouchPack + +usb:v1BFDp1268* + ID_MODEL_FROM_DATABASE=Touch Screen + +usb:v1BFDp1368* + ID_MODEL_FROM_DATABASE=Touch Screen + +usb:v1BFDp1568* + ID_MODEL_FROM_DATABASE=Capacitive Touch Screen + +usb:v1BFDp1668* + ID_MODEL_FROM_DATABASE=IR Touch Screen + +usb:v1BFDp1688* + ID_MODEL_FROM_DATABASE=Resistive Touch Screen + +usb:v1BFDp2968* + ID_MODEL_FROM_DATABASE=Touch Screen + +usb:v1BFDp5968* + ID_MODEL_FROM_DATABASE=Touch Screen + +usb:v1BFDp6968* + ID_MODEL_FROM_DATABASE=Touch Screen + +usb:v1C02* + ID_VENDOR_FROM_DATABASE=Kreton Corporation + +usb:v1C04* + ID_VENDOR_FROM_DATABASE=QNAP System Inc. + +usb:v1C0C* + ID_VENDOR_FROM_DATABASE=Ionics EMS, Inc. + +usb:v1C0Cp0102* + ID_MODEL_FROM_DATABASE=Plug Computer + +usb:v1C0D* + ID_VENDOR_FROM_DATABASE=Relm Wireless + +usb:v1C10* + ID_VENDOR_FROM_DATABASE=Lanterra Industrial Co., Ltd. + +usb:v1C13* + ID_VENDOR_FROM_DATABASE=ALECTRONIC LIMITED + +usb:v1C1A* + ID_VENDOR_FROM_DATABASE=Datel Electronics Ltd. + +usb:v1C1B* + ID_VENDOR_FROM_DATABASE=Volkswagen of America, Inc. + +usb:v1C1F* + ID_VENDOR_FROM_DATABASE=Goldvish S.A. + +usb:v1C20* + ID_VENDOR_FROM_DATABASE=Fuji Electric Device Technology Co., Ltd. + +usb:v1C21* + ID_VENDOR_FROM_DATABASE=ADDMM LLC + +usb:v1C22* + ID_VENDOR_FROM_DATABASE=ZHONGSHAN CHIANG YU ELECTRIC CO., LTD. + +usb:v1C26* + ID_VENDOR_FROM_DATABASE=Shanghai Haiying Electronics Co., Ltd. + +usb:v1C27* + ID_VENDOR_FROM_DATABASE=HuiYang D & S Cable Co., Ltd. + +usb:v1C31* + ID_VENDOR_FROM_DATABASE=LS Cable Ltd. + +usb:v1C34* + ID_VENDOR_FROM_DATABASE=SpringCard + +usb:v1C34p7241* + ID_MODEL_FROM_DATABASE=Prox'N'Roll RFID Scanner + +usb:v1C37* + ID_VENDOR_FROM_DATABASE=Authorizer Technologies, Inc. + +usb:v1C3D* + ID_VENDOR_FROM_DATABASE=NONIN MEDICAL INC. + +usb:v1C3E* + ID_VENDOR_FROM_DATABASE=Wep Peripherals + +usb:v1C40* + ID_VENDOR_FROM_DATABASE=EZPrototypes + +usb:v1C40p0533* + ID_MODEL_FROM_DATABASE=TiltStick + +usb:v1C40p0534* + ID_MODEL_FROM_DATABASE=i2c-tiny-usb interface + +usb:v1C40p0535* + ID_MODEL_FROM_DATABASE=glcd2usb interface + +usb:v1C40p0536* + ID_MODEL_FROM_DATABASE=Swiss ColorPAL + +usb:v1C49* + ID_VENDOR_FROM_DATABASE=Cherng Weei Technology Corp. + +usb:v1C4F* + ID_VENDOR_FROM_DATABASE=SiGma Micro + +usb:v1C4Fp0002* + ID_MODEL_FROM_DATABASE=Keyboard TRACER Gamma Ivory + +usb:v1C4Fp0003* + ID_MODEL_FROM_DATABASE=HID controller + +usb:v1C4Fp000E* + ID_MODEL_FROM_DATABASE=Genius KB-120 Keyboard + +usb:v1C4Fp0026* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v1C4Fp3000* + ID_MODEL_FROM_DATABASE=Micro USB Web Camera + +usb:v1C4Fp3002* + ID_MODEL_FROM_DATABASE=WebCam SiGma Micro + +usb:v1C6B* + ID_VENDOR_FROM_DATABASE=Philips & Lite-ON Digital Solutions Corporation + +usb:v1C6BpA222* + ID_MODEL_FROM_DATABASE=DVD Writer Slimtype eTAU108 + +usb:v1C6C* + ID_VENDOR_FROM_DATABASE=Skydigital Inc. + +usb:v1C73* + ID_VENDOR_FROM_DATABASE=AMT + +usb:v1C73p861F* + ID_MODEL_FROM_DATABASE=Anysee E30 USB 2.0 DVB-T Receiver + +usb:v1C77* + ID_VENDOR_FROM_DATABASE=Kaetat Industrial Co., Ltd. + +usb:v1C78* + ID_VENDOR_FROM_DATABASE=Datascope Corp. + +usb:v1C79* + ID_VENDOR_FROM_DATABASE=Unigen Corporation + +usb:v1C7A* + ID_VENDOR_FROM_DATABASE=LighTuning Technology Inc. + +usb:v1C7Ap0801* + ID_MODEL_FROM_DATABASE=Fingerprint Reader + +usb:v1C7B* + ID_VENDOR_FROM_DATABASE=LUXSHARE PRECISION INDUSTRY (SHENZHEN) CO., LTD. + +usb:v1C83* + ID_VENDOR_FROM_DATABASE=Schomäcker GmbH + +usb:v1C83p0001* + ID_MODEL_FROM_DATABASE=RS150 V2 + +usb:v1C87* + ID_VENDOR_FROM_DATABASE=2N TELEKOMUNIKACE a.s. + +usb:v1C88* + ID_VENDOR_FROM_DATABASE=Somagic, Inc. + +usb:v1C88p0007* + ID_MODEL_FROM_DATABASE=SMI Grabber (EasyCAP DC60+ clone) (no firmware) [SMI-2021CBE] + +usb:v1C88p003C* + ID_MODEL_FROM_DATABASE=SMI Grabber (EasyCAP DC60+ clone) [SMI-2021CBE] + +usb:v1C89* + ID_VENDOR_FROM_DATABASE=HONGKONG WEIDIDA ELECTRON LIMITED + +usb:v1C8E* + ID_VENDOR_FROM_DATABASE=ASTRON INTERNATIONAL CORP. + +usb:v1C98* + ID_VENDOR_FROM_DATABASE=ALPINE ELECTRONICS, INC. + +usb:v1C9E* + ID_VENDOR_FROM_DATABASE=OMEGA TECHNOLOGY + +usb:v1C9Ep6061* + ID_MODEL_FROM_DATABASE=WL-72B 3.5G MODEM + +usb:v1CA0* + ID_VENDOR_FROM_DATABASE=ACCARIO Inc. + +usb:v1CA1* + ID_VENDOR_FROM_DATABASE=Symwave + +usb:v1CA1p18AB* + ID_MODEL_FROM_DATABASE=SATA bridge + +usb:v1CAC* + ID_VENDOR_FROM_DATABASE=Kinstone + +usb:v1CACpA332* + ID_MODEL_FROM_DATABASE=C8 Webcam + +usb:v1CACpB288* + ID_MODEL_FROM_DATABASE=C18 Webcam + +usb:v1CB3* + ID_VENDOR_FROM_DATABASE=Aces Electronic Co., Ltd. + +usb:v1CB4* + ID_VENDOR_FROM_DATABASE=OPEX CORPORATION + +usb:v1CB6* + ID_VENDOR_FROM_DATABASE=IdeaCom Technology Inc. + +usb:v1CB6p6681* + ID_MODEL_FROM_DATABASE=IDC6681 + +usb:v1CBE* + ID_VENDOR_FROM_DATABASE=Luminary Micro Inc. + +usb:v1CBEp00FD* + ID_MODEL_FROM_DATABASE=In-Circuit Debug Interface + +usb:v1CBEp00FF* + ID_MODEL_FROM_DATABASE=Stellaris ROM DFU Bootloader + +usb:v1CBF* + ID_VENDOR_FROM_DATABASE=FORTAT SKYMARK INDUSTRIAL COMPANY + +usb:v1CC0* + ID_VENDOR_FROM_DATABASE=PlantSense + +usb:v1CCA* + ID_VENDOR_FROM_DATABASE=NextWave Broadband Inc. + +usb:v1CCD* + ID_VENDOR_FROM_DATABASE=Bodatong Technology (Shenzhen) Co., Ltd. + +usb:v1CD4* + ID_VENDOR_FROM_DATABASE=adp corporation + +usb:v1CD5* + ID_VENDOR_FROM_DATABASE=Firecomms Ltd. + +usb:v1CD6* + ID_VENDOR_FROM_DATABASE=Antonio Precise Products Manufactory Ltd. + +usb:v1CDE* + ID_VENDOR_FROM_DATABASE=Telecommunications Technology Association (TTA) + +usb:v1CDF* + ID_VENDOR_FROM_DATABASE=WonTen Technology Co., Ltd. + +usb:v1CE0* + ID_VENDOR_FROM_DATABASE=EDIMAX TECHNOLOGY CO., LTD. + +usb:v1CE1* + ID_VENDOR_FROM_DATABASE=Amphenol KAE + +usb:v1CF1* + ID_VENDOR_FROM_DATABASE=Dresden Elektronik + +usb:v1CF1p0001* + ID_MODEL_FROM_DATABASE=Sensor Terminal Board + +usb:v1CF1p0004* + ID_MODEL_FROM_DATABASE=Wireless Handheld Terminal + +usb:v1CF1p0017* + ID_MODEL_FROM_DATABASE=deRFusbSniffer 2.4 GHz + +usb:v1CF1p0018* + ID_MODEL_FROM_DATABASE=deRFusb24E001 + +usb:v1CF1p0019* + ID_MODEL_FROM_DATABASE=deRFusb14E001 + +usb:v1CF1p001A* + ID_MODEL_FROM_DATABASE=deRFusb23E00 + +usb:v1CF1p001B* + ID_MODEL_FROM_DATABASE=deRFusb13E00 + +usb:v1CF1p001C* + ID_MODEL_FROM_DATABASE=deRFnode + +usb:v1CF1p001D* + ID_MODEL_FROM_DATABASE=deRFnode / gateway + +usb:v1CF1p0022* + ID_MODEL_FROM_DATABASE=deUSB level shifter + +usb:v1CF1p0023* + ID_MODEL_FROM_DATABASE=deRFusbSniffer Sub-GHz + +usb:v1CF1p0025* + ID_MODEL_FROM_DATABASE=deRFusb23E06 + +usb:v1CF1p0027* + ID_MODEL_FROM_DATABASE=deRFusb13E06 + +usb:v1CFC* + ID_VENDOR_FROM_DATABASE=ANDES TECHNOLOGY CORPORATION + +usb:v1CFD* + ID_VENDOR_FROM_DATABASE=Flextronics Digital Design Japan, LTD. + +usb:v1D03* + ID_VENDOR_FROM_DATABASE=iCON + +usb:v1D03p0028* + ID_MODEL_FROM_DATABASE=iCreativ MIDI Controller + +usb:v1D07* + ID_VENDOR_FROM_DATABASE=Solid-Motion + +usb:v1D08* + ID_VENDOR_FROM_DATABASE=NINGBO HENTEK DRAGON ELECTRONICS CO., LTD. + +usb:v1D09* + ID_VENDOR_FROM_DATABASE=TechFaith Wireless Technology Limited + +usb:v1D09p1026* + ID_MODEL_FROM_DATABASE=HSUPA Modem FLYING-LARK46-VER0.07 [Flying Angel] + +usb:v1D0A* + ID_VENDOR_FROM_DATABASE=Johnson Controls, Inc. The Automotive Business Unit + +usb:v1D0B* + ID_VENDOR_FROM_DATABASE=HAN HUA CABLE & WIRE TECHNOLOGY (J.X.) CO., LTD. + +usb:v1D0F* + ID_VENDOR_FROM_DATABASE=Sonix Technology Co., Ltd. + +usb:v1D14* + ID_VENDOR_FROM_DATABASE=ALPHA-SAT TECHNOLOGY LIMITED + +usb:v1D17* + ID_VENDOR_FROM_DATABASE=C-Thru Music Ltd. + +usb:v1D17p0001* + ID_MODEL_FROM_DATABASE=AXiS-49 Harmonic Table MIDI Keyboard + +usb:v1D19* + ID_VENDOR_FROM_DATABASE=Dexatek Technology Ltd. + +usb:v1D19p1101* + ID_MODEL_FROM_DATABASE=DK DVB-T Dongle + +usb:v1D19p1102* + ID_MODEL_FROM_DATABASE=DK mini DVB-T Dongle + +usb:v1D19p1103* + ID_MODEL_FROM_DATABASE=DK 5217 DVB-T Dongle + +usb:v1D19p6105* + ID_MODEL_FROM_DATABASE=Video grabber + +usb:v1D19p8202* + ID_MODEL_FROM_DATABASE=DK DVBC/T DONGLE + +usb:v1D1F* + ID_VENDOR_FROM_DATABASE=Diostech Co., Ltd. + +usb:v1D20* + ID_VENDOR_FROM_DATABASE=SAMTACK INC. + +usb:v1D27* + ID_VENDOR_FROM_DATABASE=ASUS + +usb:v1D34* + ID_VENDOR_FROM_DATABASE=Dream Cheeky + +usb:v1D34p0001* + ID_MODEL_FROM_DATABASE=Dream Cheeky Fidget + +usb:v1D34p0004* + ID_MODEL_FROM_DATABASE=Dream Cheeky Webmail Notifier + +usb:v1D34p0008* + ID_MODEL_FROM_DATABASE=Dream Cheeky button + +usb:v1D34p000A* + ID_MODEL_FROM_DATABASE=Dream Cheeky Mailbox Friends Alert + +usb:v1D34p000D* + ID_MODEL_FROM_DATABASE=Dream Cheeky Big Red Button + +usb:v1D34p0013* + ID_MODEL_FROM_DATABASE=Dream Cheeky LED Message Board + +usb:v1D4D* + ID_VENDOR_FROM_DATABASE=PEGATRON CORPORATION + +usb:v1D4Dp0002* + ID_MODEL_FROM_DATABASE=Ralink RT2770/2720 802.11b/g/n Wireless LAN Mini-USB Device + +usb:v1D4Dp000C* + ID_MODEL_FROM_DATABASE=Ralink RT3070 802.11b/g/n Wireless Lan USB Device + +usb:v1D4Dp000E* + ID_MODEL_FROM_DATABASE=Ralink RT3070 802.11b/g/n Wireless Lan USB Device + +usb:v1D50* + ID_VENDOR_FROM_DATABASE=OpenMoko, Inc. + +usb:v1D50p5119* + ID_MODEL_FROM_DATABASE=GTA01/GTA02 U-Boot Bootloader + +usb:v1D50p602B* + ID_MODEL_FROM_DATABASE=FPGALink + +usb:v1D57* + ID_VENDOR_FROM_DATABASE=Xenta + +usb:v1D57p0005* + ID_MODEL_FROM_DATABASE=Wireless Receiver (Keyboard and Mouse) + +usb:v1D57p0006* + ID_MODEL_FROM_DATABASE=Wireless Receiver (RC Laser Pointer) + +usb:v1D57p000C* + ID_MODEL_FROM_DATABASE=Optical Mouse + +usb:v1D57p2400* + ID_MODEL_FROM_DATABASE=Wireless Mouse Receiver + +usb:v1D57p32DA* + ID_MODEL_FROM_DATABASE=2.4GHz Receiver (Keyboard and Mouse) + +usb:v1D57p83D0* + ID_MODEL_FROM_DATABASE=Click-mouse! + +usb:v1D57pAC01* + ID_MODEL_FROM_DATABASE=Wireless Receiver (Keyboard and Mouse) + +usb:v1D57pAD02* + ID_MODEL_FROM_DATABASE=SE340D PC Remote Control + +usb:v1D57pAF01* + ID_MODEL_FROM_DATABASE=AUVIO Universal Remote Receiver for PlayStation 3 + +usb:v1D5B* + ID_VENDOR_FROM_DATABASE=Smartronix, Inc. + +usb:v1D6B* + ID_VENDOR_FROM_DATABASE=Linux Foundation + +usb:v1D6Bp0001* + ID_MODEL_FROM_DATABASE=1.1 root hub + +usb:v1D6Bp0002* + ID_MODEL_FROM_DATABASE=2.0 root hub + +usb:v1D6Bp0003* + ID_MODEL_FROM_DATABASE=3.0 root hub + +usb:v1D6Bp0100* + ID_MODEL_FROM_DATABASE=PTP Gadget + +usb:v1D6Bp0101* + ID_MODEL_FROM_DATABASE=Audio Gadget + +usb:v1D6Bp0102* + ID_MODEL_FROM_DATABASE=EEM Gadget + +usb:v1D6Bp0103* + ID_MODEL_FROM_DATABASE=NCM (Ethernet) Gadget + +usb:v1D6Bp0104* + ID_MODEL_FROM_DATABASE=Multifunction Composite Gadget + +usb:v1D6Bp0105* + ID_MODEL_FROM_DATABASE=FunctionFS Gadget + +usb:v1D6Bp0200* + ID_MODEL_FROM_DATABASE=Qemu Audio Device + +usb:v1DE1* + ID_VENDOR_FROM_DATABASE=Actions Microelectronics Co. + +usb:v1DE1p1101* + ID_MODEL_FROM_DATABASE=Generic Display Device (Mass storage mode) + +usb:v1DE1pC101* + ID_MODEL_FROM_DATABASE=Generic Display Device + +usb:v1E0E* + ID_VENDOR_FROM_DATABASE=Qualcomm / Option + +usb:v1E0EpF000* + ID_MODEL_FROM_DATABASE=iCON 210 UMTS Surfstick + +usb:v1E10* + ID_VENDOR_FROM_DATABASE=Point Grey Research, Inc. + +usb:v1E10p2004* + ID_MODEL_FROM_DATABASE=Sony 1.3MP 1/3" ICX445 IIDC video camera [Chameleon] + +usb:v1E17* + ID_VENDOR_FROM_DATABASE=Mirion Technologies Dosimetry Services Division + +usb:v1E17p0001* + ID_MODEL_FROM_DATABASE=instadose dosimeter + +usb:v1E1D* + ID_VENDOR_FROM_DATABASE=Lumension Security + +usb:v1E1Dp0165* + ID_MODEL_FROM_DATABASE=Secure Pen drive + +usb:v1E1F* + ID_VENDOR_FROM_DATABASE=INVIA + +usb:v1E29* + ID_VENDOR_FROM_DATABASE=Festo AG & Co. KG + +usb:v1E29p0101* + ID_MODEL_FROM_DATABASE=CPX Adapter + +usb:v1E29p0102* + ID_MODEL_FROM_DATABASE=CPX Adapter >=HW10.09 [CP2102] + +usb:v1E29p0401* + ID_MODEL_FROM_DATABASE=iL3-TP [AT90USB646] + +usb:v1E29p0402* + ID_MODEL_FROM_DATABASE=FTDI232 [EasyPort] + +usb:v1E29p0403* + ID_MODEL_FROM_DATABASE=FTDI232 [EasyPort Mini] + +usb:v1E29p0404* + ID_MODEL_FROM_DATABASE=FTDI232 [Netzteil-GL] + +usb:v1E29p0405* + ID_MODEL_FROM_DATABASE=FTDI232 [MotorPrüfstand] + +usb:v1E29p0406* + ID_MODEL_FROM_DATABASE=STM32F103 [EasyKit] + +usb:v1E29p0407* + ID_MODEL_FROM_DATABASE=LPC2378 [Robotino] + +usb:v1E29p0408* + ID_MODEL_FROM_DATABASE=LPC2378 [Robotino-Arm] + +usb:v1E29p0409* + ID_MODEL_FROM_DATABASE=LPC2378 [Robotino-Arm Bootloader] + +usb:v1E29p040A* + ID_MODEL_FROM_DATABASE=LPC2378 [Robotino Bootloader] + +usb:v1E29p040B* + ID_MODEL_FROM_DATABASE=LPC2378 [Robotino XT] + +usb:v1E29p040C* + ID_MODEL_FROM_DATABASE=LPC2378 [Robotino XT Bootloader] + +usb:v1E29p040D* + ID_MODEL_FROM_DATABASE=LPC2378 [Robotino 3] + +usb:v1E29p040E* + ID_MODEL_FROM_DATABASE=LPC2378 [Robotino 3 Bootloader] + +usb:v1E29p0501* + ID_MODEL_FROM_DATABASE=CP2102 [CMSP] + +usb:v1E29p0601* + ID_MODEL_FROM_DATABASE=CMMP-AS + +usb:v1E3D* + ID_VENDOR_FROM_DATABASE=Chipsbank Microelectronics Co., Ltd + +usb:v1E3Dp2093* + ID_MODEL_FROM_DATABASE=CBM209x Flash Drive (OEM) + +usb:v1E3Dp4082* + ID_MODEL_FROM_DATABASE=CBM4082 SD Card Reader + +usb:v1E41* + ID_VENDOR_FROM_DATABASE=Cleverscope + +usb:v1E41p0001* + ID_MODEL_FROM_DATABASE=CS328A PC Oscilloscope + +usb:v1E4E* + ID_VENDOR_FROM_DATABASE=Cubeternet + +usb:v1E4Ep0100* + ID_MODEL_FROM_DATABASE=WebCam + +usb:v1E4Ep0102* + ID_MODEL_FROM_DATABASE=GL-UPC822 UVC WebCam + +usb:v1E54* + ID_VENDOR_FROM_DATABASE=TypeMatrix + +usb:v1E54p2030* + ID_MODEL_FROM_DATABASE=2030 USB Keyboard + +usb:v1E68* + ID_VENDOR_FROM_DATABASE=TrekStor GmbH & Co. KG + +usb:v1E68p001B* + ID_MODEL_FROM_DATABASE=DataStation maxi g.u + +usb:v1E71* + ID_VENDOR_FROM_DATABASE=NZXT + +usb:v1E71p0001* + ID_MODEL_FROM_DATABASE=Avatar Optical Mouse + +usb:v1E74* + ID_VENDOR_FROM_DATABASE=Coby Electronics Corporation + +usb:v1E74p2211* + ID_MODEL_FROM_DATABASE=MP300 + +usb:v1E74p2647* + ID_MODEL_FROM_DATABASE=2 GB 2 Go Video MP3 Player [MP601-2G] + +usb:v1E74p2659* + ID_MODEL_FROM_DATABASE=Coby 4GB Go Video MP3 Player [MP620-4G] + +usb:v1E74p4641* + ID_MODEL_FROM_DATABASE=A8705 MP3/Video Player + +usb:v1E74p6511* + ID_MODEL_FROM_DATABASE=MP705-8G MP3 player + +usb:v1E74p6512* + ID_MODEL_FROM_DATABASE=MP705-4G + +usb:v1E74p7111* + ID_MODEL_FROM_DATABASE=MP957 Music and Video Player + +usb:v1E7D* + ID_VENDOR_FROM_DATABASE=ROCCAT + +usb:v1E7Dp2C24* + ID_MODEL_FROM_DATABASE=Pyra Mouse (wired) + +usb:v1E7Dp2CED* + ID_MODEL_FROM_DATABASE=Kone Mouse + +usb:v1E7Dp2CF6* + ID_MODEL_FROM_DATABASE=Pyra Mouse (wireless) + +usb:v1E7Dp2D50* + ID_MODEL_FROM_DATABASE=Kova+ Mouse + +usb:v1E7Dp2D51* + ID_MODEL_FROM_DATABASE=Kone+ Mouse + +usb:v1E7Dp30D4* + ID_MODEL_FROM_DATABASE=Arvo Keyboard + +usb:v1EBB* + ID_VENDOR_FROM_DATABASE=NuCORE Technology, Inc. + +usb:v1EDA* + ID_VENDOR_FROM_DATABASE=AirTies Wireless Networks + +usb:v1EDAp2012* + ID_MODEL_FROM_DATABASE=Air2210 54 Mbps Wireless Adapter + +usb:v1EDAp2210* + ID_MODEL_FROM_DATABASE=Air2210 54 Mbps Wireless Adapter + +usb:v1EDAp2310* + ID_MODEL_FROM_DATABASE=Air2310 150 Mbps Wireless Adapter + +usb:v1EDAp2410* + ID_MODEL_FROM_DATABASE=Air2410 300 Mbps Wireless Adapter + +usb:v1EDB* + ID_VENDOR_FROM_DATABASE=Blackmagic design + +usb:v1EDBpBD3B* + ID_MODEL_FROM_DATABASE=Intensity Shuttle + +usb:v1EE8* + ID_VENDOR_FROM_DATABASE=ONDA COMMUNICATION S.p.a. + +usb:v1EE8p0014* + ID_MODEL_FROM_DATABASE=MT833UP + +usb:v1EF6* + ID_VENDOR_FROM_DATABASE=EADS Deutschland GmbH + +usb:v1EF6p5064* + ID_MODEL_FROM_DATABASE=FDR Interface + +usb:v1EF6p5648* + ID_MODEL_FROM_DATABASE=RIU CSMU/BSD + +usb:v1EF6p564A* + ID_MODEL_FROM_DATABASE=Cassidian RIU CSMU/BSD Simulator + +usb:v1F28* + ID_VENDOR_FROM_DATABASE=Cal-Comp + +usb:v1F28p0020* + ID_MODEL_FROM_DATABASE=CDMA USB Modem A600 + +usb:v1F28p0021* + ID_MODEL_FROM_DATABASE=CD INSTALLER USB Device + +usb:v1F44* + ID_VENDOR_FROM_DATABASE=The Neat Company + +usb:v1F44p0001* + ID_MODEL_FROM_DATABASE=NM-1000 scanner + +usb:v1F48* + ID_VENDOR_FROM_DATABASE=H-TRONIC GmbH + +usb:v1F48p0627* + ID_MODEL_FROM_DATABASE=Data capturing system + +usb:v1F48p0628* + ID_MODEL_FROM_DATABASE=Data capturing and control module + +usb:v1F4D* + ID_VENDOR_FROM_DATABASE=G-Tek Electronics Group + +usb:v1F4DpB803* + ID_MODEL_FROM_DATABASE=Lifeview LV5TDLX DVB-T [RTL2832U] + +usb:v1F6F* + ID_VENDOR_FROM_DATABASE=Aliph + +usb:v1F6Fp0023* + ID_MODEL_FROM_DATABASE=Jawbone Jambox + +usb:v1F6Fp8000* + ID_MODEL_FROM_DATABASE=Jawbone Jambox - Updating + +usb:v1F75* + ID_VENDOR_FROM_DATABASE=Innostor Technology Corporation + +usb:v1F75p0888* + ID_MODEL_FROM_DATABASE=IS888 SATA Storage Controller + +usb:v1F75p0902* + ID_MODEL_FROM_DATABASE=IS902 UFD controller + +usb:v1F82* + ID_VENDOR_FROM_DATABASE=TANDBERG + +usb:v1F82p0001* + ID_MODEL_FROM_DATABASE=PrecisionHD Camera + +usb:v1F84* + ID_VENDOR_FROM_DATABASE=Alere, Inc. + +usb:v1F87* + ID_VENDOR_FROM_DATABASE=Stantum + +usb:v1F87p0002* + ID_MODEL_FROM_DATABASE=Multi-touch HID Controller + +usb:v1F9B* + ID_VENDOR_FROM_DATABASE=Ubiquiti Networks, Inc. + +usb:v1F9Bp0241* + ID_MODEL_FROM_DATABASE=AirView2-EXT + +usb:v1FAB* + ID_VENDOR_FROM_DATABASE=Samsung Opto-Electroncs Co., Ltd. + +usb:v1FABp104D* + ID_MODEL_FROM_DATABASE=ES65 + +usb:v1FBD* + ID_VENDOR_FROM_DATABASE=Delphin Technology AG + +usb:v1FBDp0001* + ID_MODEL_FROM_DATABASE=Expert Key - Data aquisition system + +usb:v1FC9* + ID_VENDOR_FROM_DATABASE=NXP Semiconductors + +usb:v1FC9p0003* + ID_MODEL_FROM_DATABASE=LPC1343 + +usb:v1FC9p010B* + ID_MODEL_FROM_DATABASE=PR533 + +usb:v1FDE* + ID_VENDOR_FROM_DATABASE=ILX Lightwave Corporation + +usb:v1FDEp0001* + ID_MODEL_FROM_DATABASE=UART Bridge + +usb:v1FE7* + ID_VENDOR_FROM_DATABASE=Vertex Wireless Co., Ltd. + +usb:v1FE7p1000* + ID_MODEL_FROM_DATABASE=VW100 series CDMA EV-DO Rev.A modem + +usb:v1FF7* + ID_VENDOR_FROM_DATABASE=CVT Electronics.Co.,Ltd + +usb:v1FF7p0013* + ID_MODEL_FROM_DATABASE=CVTouch Screen (HID) + +usb:v1FF7p001A* + ID_MODEL_FROM_DATABASE=Human Interface Device + +usb:v1FFF* + ID_VENDOR_FROM_DATABASE=Ideofy Inc. + +usb:v2001* + ID_VENDOR_FROM_DATABASE=D-Link Corp. + +usb:v2001p0001* + ID_MODEL_FROM_DATABASE=DWL-120 WIRELESS ADAPTER + +usb:v2001p0201* + ID_MODEL_FROM_DATABASE=DHN-120 10Mb Home Phoneline Adapter + +usb:v2001p1A00* + ID_MODEL_FROM_DATABASE=DUB-E100 Fast Ethernet Adapter(rev.A) [ASIX AX88172] + +usb:v2001p1A02* + ID_MODEL_FROM_DATABASE=DUB-E100 Fast Ethernet Adapter(rev.C1) [ASIX AX88772] + +usb:v2001p200C* + ID_MODEL_FROM_DATABASE=10/100 Ethernet + +usb:v2001p3200* + ID_MODEL_FROM_DATABASE=DWL-120 802.11b Wireless Adapter(rev.E1) [Atmel at76c503a] + +usb:v2001p3301* + ID_MODEL_FROM_DATABASE=DWA-130 802.11n Wireless N Adapter(rev.C1) [Realtek RTL8192U] + +usb:v2001p3306* + ID_MODEL_FROM_DATABASE=DWL-G122 Wireless Adapter(rev.F1) [Realtek RTL8188SU] + +usb:v2001p3308* + ID_MODEL_FROM_DATABASE=DWA-121 802.11n Wireless N 150 Pico Adapter [Realtek RTL8188CUS] + +usb:v2001p3309* + ID_MODEL_FROM_DATABASE=DWA-135 802.11n Wireless N Adapter(rev.A1) [Realtek RTL8192CU] + +usb:v2001p330A* + ID_MODEL_FROM_DATABASE=DWA-133 802.11n Wireless N Adapter [Realtek RTL8192CU] + +usb:v2001p3500* + ID_MODEL_FROM_DATABASE=Elitegroup Computer Systems WLAN card WL-162 + +usb:v2001p3700* + ID_MODEL_FROM_DATABASE=DWL-122 802.11b [Intersil Prism 3] + +usb:v2001p3701* + ID_MODEL_FROM_DATABASE=DWL-G120 Spinnaker 802.11g [Intersil ISL3886] + +usb:v2001p3702* + ID_MODEL_FROM_DATABASE=DWL-120 802.11b Wireless Adapter(rev.F) [Intersil ISL3871] + +usb:v2001p3703* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter(rev.A1) [Intersil ISL3880] + +usb:v2001p3704* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter(rev.A2) [Intersil ISL3887] + +usb:v2001p3705* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G120 Wireless Adapter(rev.C) [Intersil ISL3887] + +usb:v2001p3761* + ID_MODEL_FROM_DATABASE=IEEE 802.11g USB2.0 Wireless Network Adapter-PN + +usb:v2001p3A00* + ID_MODEL_FROM_DATABASE=DWL-AG132 [Atheros AR5523] + +usb:v2001p3A01* + ID_MODEL_FROM_DATABASE=DWL-AG132 (no firmware) [Atheros AR5523] + +usb:v2001p3A02* + ID_MODEL_FROM_DATABASE=DWL-G132 [Atheros AR5523] + +usb:v2001p3A03* + ID_MODEL_FROM_DATABASE=DWL-G132 (no firmware) [Atheros AR5523] + +usb:v2001p3A04* + ID_MODEL_FROM_DATABASE=DWL-AG122 [Atheros AR5523] + +usb:v2001p3A05* + ID_MODEL_FROM_DATABASE=DWL-AG122 (no firmware) [Atheros AR5523] + +usb:v2001p3A80* + ID_MODEL_FROM_DATABASE=AirPlus Xtreme G DWL-G132 Wireless Adapter + +usb:v2001p3A81* + ID_MODEL_FROM_DATABASE=predator Bootloader Download + +usb:v2001p3A82* + ID_MODEL_FROM_DATABASE=AirPremier AG DWL-AG132 Wireless Adapter + +usb:v2001p3A83* + ID_MODEL_FROM_DATABASE=predator Bootloader Download + +usb:v2001p3B00* + ID_MODEL_FROM_DATABASE=AirPlus DWL-120+ Wireless Adapter [Texas Instruments ACX100USB] + +usb:v2001p3B01* + ID_MODEL_FROM_DATABASE=WLAN Boot Device + +usb:v2001p3C00* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter(rev.B1) [Ralink RT2571] + +usb:v2001p3C01* + ID_MODEL_FROM_DATABASE=AirPlus AG DWL-AG122 Wireless Adapter + +usb:v2001p3C02* + ID_MODEL_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter + +usb:v2001p3C05* + ID_MODEL_FROM_DATABASE=DUB-E100 Fast Ethernet Adapter(rev.B1) [ASIX AX88772] + +usb:v2001p3C15* + ID_MODEL_FROM_DATABASE=DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT5372] + +usb:v2001p3C17* + ID_MODEL_FROM_DATABASE=DWA-123 Wireless N 150 Adapter(rev.A1) [Ralink RT3370] + +usb:v2001p3C19* + ID_MODEL_FROM_DATABASE=DWA-125 Wireless N 150 Adapter(rev.A3) [Ralink RT5370] + +usb:v2001p3C1A* + ID_MODEL_FROM_DATABASE=DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.B2) [Ralink RT5572] + +usb:v2001p3C1B* + ID_MODEL_FROM_DATABASE=DWA-127 Wireless N 150 High-Gain Adapter(rev.A1) [Ralink RT3070] + +usb:v2001p4000* + ID_MODEL_FROM_DATABASE=DSB-650C Ethernet [klsi] + +usb:v2001p4001* + ID_MODEL_FROM_DATABASE=DSB-650TX Ethernet [pegasus] + +usb:v2001p4002* + ID_MODEL_FROM_DATABASE=DSB-650TX Ethernet [pegasus] + +usb:v2001p4003* + ID_MODEL_FROM_DATABASE=DSB-650TX-PNA Ethernet [pegasus] + +usb:v2001p400B* + ID_MODEL_FROM_DATABASE=10/100 Ethernet + +usb:v2001p4102* + ID_MODEL_FROM_DATABASE=10/100 Ethernet + +usb:v2001p5100* + ID_MODEL_FROM_DATABASE=DSL-200 ADSL ATM Modem + +usb:v2001p5102* + ID_MODEL_FROM_DATABASE=DSL-200 ADSL Loader + +usb:v2001p5B00* + ID_MODEL_FROM_DATABASE=Remote NDIS Network Device + +usb:v2001p9414* + ID_MODEL_FROM_DATABASE=Cable Modem + +usb:v2001p9B00* + ID_MODEL_FROM_DATABASE=Broadband Cable Modem Remote NDIS Device + +usb:v2001pABC1* + ID_MODEL_FROM_DATABASE=DSB-650 Ethernet [pegasus] + +usb:v2001pF013* + ID_MODEL_FROM_DATABASE=DLink 7 port USB2.0 Hub + +usb:v2001pF103* + ID_MODEL_FROM_DATABASE=DUB-H7 7-port USB 2.0 hub + +usb:v2001pF10D* + ID_MODEL_FROM_DATABASE=Accent Communications Modem + +usb:v2001pF110* + ID_MODEL_FROM_DATABASE=DUB-AV300 A/V Capture + +usb:v2001pF111* + ID_MODEL_FROM_DATABASE=DBT-122 Bluetooth adapter + +usb:v2001pF112* + ID_MODEL_FROM_DATABASE=DUB-T210 Audio Device + +usb:v2001pF116* + ID_MODEL_FROM_DATABASE=Formosa 2 + +usb:v2001pF117* + ID_MODEL_FROM_DATABASE=Formosa 3 + +usb:v2001pF118* + ID_MODEL_FROM_DATABASE=Formosa 4 + +usb:v2002* + ID_VENDOR_FROM_DATABASE=DAP Technologies + +usb:v200C* + ID_VENDOR_FROM_DATABASE=Reloop + +usb:v200Cp100B* + ID_MODEL_FROM_DATABASE=Play audio soundcard + +usb:v2013* + ID_VENDOR_FROM_DATABASE=PCTV Systems + +usb:v2013p0245* + ID_MODEL_FROM_DATABASE=PCTV 73ESE + +usb:v2013p0246* + ID_MODEL_FROM_DATABASE=PCTV 74E + +usb:v2013p0248* + ID_MODEL_FROM_DATABASE=PCTV 282E + +usb:v2013p024F* + ID_MODEL_FROM_DATABASE=nanoStick T2 290e + +usb:v2019* + ID_VENDOR_FROM_DATABASE=PLANEX + +usb:v2019p3220* + ID_MODEL_FROM_DATABASE=GW-US11S WLAN [Atmel AT76C503A] + +usb:v2019p4901* + ID_MODEL_FROM_DATABASE=GW-USSuper300 802.11bgn Wireless Adapter [Realtek RTL8191SU] + +usb:v2019p4903* + ID_MODEL_FROM_DATABASE=GW-USFang300 802.11abgn Wireless Adapter [Realtek RTL8192DU] + +usb:v2019p4904* + ID_MODEL_FROM_DATABASE=GW-USUltra300 802.11abgn Wireless Adapter [Realtek RTL8192DU] + +usb:v2019p5303* + ID_MODEL_FROM_DATABASE=GW-US54GXS 802.11bg + +usb:v2019p5304* + ID_MODEL_FROM_DATABASE=GWUS300 802.11n + +usb:v2019pAB01* + ID_MODEL_FROM_DATABASE=GW-US54HP + +usb:v2019pAB24* + ID_MODEL_FROM_DATABASE=GW-US300MiniS + +usb:v2019pAB25* + ID_MODEL_FROM_DATABASE=GW-USMini2N 802.11n Wireless Adapter [Ralink RT2870] + +usb:v2019pAB28* + ID_MODEL_FROM_DATABASE=GW-USNano + +usb:v2019pAB29* + ID_MODEL_FROM_DATABASE=GW-USMicro300 + +usb:v2019pAB2A* + ID_MODEL_FROM_DATABASE=GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS] + +usb:v2019pAB2B* + ID_MODEL_FROM_DATABASE=GW-USEco300 802.11bgn Wireless Adapter [Realtek RTL8192CU] + +usb:v2019pAB2C* + ID_MODEL_FROM_DATABASE=GW-USDual300 802.11abgn Wireless Adapter [Realtek RTL8192DU] + +usb:v2019pAB50* + ID_MODEL_FROM_DATABASE=GW-US54Mini2 + +usb:v2019pC002* + ID_MODEL_FROM_DATABASE=GW-US54SG + +usb:v2019pC007* + ID_MODEL_FROM_DATABASE=GW-US54GZL + +usb:v2019pED02* + ID_MODEL_FROM_DATABASE=GW-USMM + +usb:v2019pED06* + ID_MODEL_FROM_DATABASE=GW-US300MiniW 802.11bgn Wireless Adapter + +usb:v2019pED10* + ID_MODEL_FROM_DATABASE=GW-US300Mini2 + +usb:v2019pED14* + ID_MODEL_FROM_DATABASE=GW-USMicroN + +usb:v2019pED16* + ID_MODEL_FROM_DATABASE=GW-USMicroN2W 802.11bgn Wireless Adapter [Realtek RTL8188SU] + +usb:v2019pED17* + ID_MODEL_FROM_DATABASE=GW-USValue-EZ 802.11n Wireless Adapter [Realtek RTL8188CUS] + +usb:v2019pED18* + ID_MODEL_FROM_DATABASE=GW-USHyper300 / GW-USH300N 802.11bgn Wireless Adapter [Realtek RTL8191SU] + +usb:v2040* + ID_VENDOR_FROM_DATABASE=Hauppauge + +usb:v2040p0C80* + ID_MODEL_FROM_DATABASE=Windham + +usb:v2040p0C90* + ID_MODEL_FROM_DATABASE=Windham + +usb:v2040p1700* + ID_MODEL_FROM_DATABASE=CataMount + +usb:v2040p1800* + ID_MODEL_FROM_DATABASE=Okemo A + +usb:v2040p1801* + ID_MODEL_FROM_DATABASE=Okemo B + +usb:v2040p2000* + ID_MODEL_FROM_DATABASE=Tiger Minicard + +usb:v2040p2009* + ID_MODEL_FROM_DATABASE=Tiger Minicard R2 + +usb:v2040p200A* + ID_MODEL_FROM_DATABASE=Tiger Minicard + +usb:v2040p2010* + ID_MODEL_FROM_DATABASE=Tiger Minicard + +usb:v2040p2011* + ID_MODEL_FROM_DATABASE=WinTV MiniCard [Dell Digital TV Receiver] + +usb:v2040p2019* + ID_MODEL_FROM_DATABASE=Tiger Minicard + +usb:v2040p2400* + ID_MODEL_FROM_DATABASE=WinTV PVR USB2 (Model 24019) + +usb:v2040p4700* + ID_MODEL_FROM_DATABASE=WinTV Nova-S-USB2 + +usb:v2040p4902* + ID_MODEL_FROM_DATABASE=HD PVR + +usb:v2040p4903* + ID_MODEL_FROM_DATABASE=HS PVR + +usb:v2040p4982* + ID_MODEL_FROM_DATABASE=HD PVR + +usb:v2040p5500* + ID_MODEL_FROM_DATABASE=Windham + +usb:v2040p5510* + ID_MODEL_FROM_DATABASE=Windham + +usb:v2040p5520* + ID_MODEL_FROM_DATABASE=Windham + +usb:v2040p5530* + ID_MODEL_FROM_DATABASE=Windham + +usb:v2040p5580* + ID_MODEL_FROM_DATABASE=Windham + +usb:v2040p5590* + ID_MODEL_FROM_DATABASE=Windham + +usb:v2040p6500* + ID_MODEL_FROM_DATABASE=WinTV HVR-900 + +usb:v2040p6502* + ID_MODEL_FROM_DATABASE=WinTV HVR-900 + +usb:v2040p6503* + ID_MODEL_FROM_DATABASE=WinTV HVR-930 + +usb:v2040p6513* + ID_MODEL_FROM_DATABASE=WinTV HVR-980 + +usb:v2040p7050* + ID_MODEL_FROM_DATABASE=Nova-T Stick + +usb:v2040p7060* + ID_MODEL_FROM_DATABASE=Nova-T Stick 2 + +usb:v2040p7070* + ID_MODEL_FROM_DATABASE=Nova-T Stick 3 + +usb:v2040p7240* + ID_MODEL_FROM_DATABASE=WinTV HVR-850 + +usb:v2040p8400* + ID_MODEL_FROM_DATABASE=WinTV Nova-T-500 + +usb:v2040p9300* + ID_MODEL_FROM_DATABASE=WinTV NOVA-T USB2 (cold) + +usb:v2040p9301* + ID_MODEL_FROM_DATABASE=WinTV NOVA-T USB2 (warm) + +usb:v2040p9941* + ID_MODEL_FROM_DATABASE=WinTV Nova-T-500 + +usb:v2040p9950* + ID_MODEL_FROM_DATABASE=WinTV Nova-T-500 + +usb:v2040pB910* + ID_MODEL_FROM_DATABASE=Windham + +usb:v2040pB980* + ID_MODEL_FROM_DATABASE=Windham + +usb:v2040pB990* + ID_MODEL_FROM_DATABASE=Windham + +usb:v2040pC000* + ID_MODEL_FROM_DATABASE=Windham + +usb:v2040pC010* + ID_MODEL_FROM_DATABASE=Windham + +usb:v2047* + ID_VENDOR_FROM_DATABASE=Texas Instruments + +usb:v2047p0200* + ID_MODEL_FROM_DATABASE=MSP430 USB HID Bootstrap Loader + +usb:v2080* + ID_VENDOR_FROM_DATABASE=Barnes & Noble + +usb:v2080p0001* + ID_MODEL_FROM_DATABASE=nook + +usb:v2080p0002* + ID_MODEL_FROM_DATABASE=NOOKcolor + +usb:v2080p0003* + ID_MODEL_FROM_DATABASE=NOOK Simple Touch + +usb:v2080p0004* + ID_MODEL_FROM_DATABASE=NOOK Tablet + +usb:v2087* + ID_VENDOR_FROM_DATABASE=Cando + +usb:v2087p0A01* + ID_MODEL_FROM_DATABASE=Multi Touch Panel + +usb:v2087p0A02* + ID_MODEL_FROM_DATABASE=Multi Touch Panel + +usb:v2087p0B03* + ID_MODEL_FROM_DATABASE=Multi Touch Panel + +usb:v20A0* + ID_VENDOR_FROM_DATABASE=Clay Logic + +usb:v20A0p4123* + ID_MODEL_FROM_DATABASE=IKALOGIC SCANALOGIC 2 + +usb:v20A0p414A* + ID_MODEL_FROM_DATABASE=MDE SPI Interface + +usb:v20A0p415A* + ID_MODEL_FROM_DATABASE=OpenPilot + +usb:v20A0p415B* + ID_MODEL_FROM_DATABASE=CopterControl + +usb:v20A0p415C* + ID_MODEL_FROM_DATABASE=PipXtreme + +usb:v20B1* + ID_VENDOR_FROM_DATABASE=XMOS Ltd + +usb:v20B1p10AD* + ID_MODEL_FROM_DATABASE=XUSB Loader + +usb:v20B1pF7D1* + ID_MODEL_FROM_DATABASE=XTAG2 - JTAG Adapter + +usb:v20B3* + ID_VENDOR_FROM_DATABASE=Hanvon + +usb:v20B3p0A18* + ID_MODEL_FROM_DATABASE=10.1 Touch screen overlay + +usb:v20B7* + ID_VENDOR_FROM_DATABASE=Qi Hardware + +usb:v20B7p0713* + ID_MODEL_FROM_DATABASE=Milkymist JTAG/serial + +usb:v20B7p1540* + ID_MODEL_FROM_DATABASE=ben-wpan, AT86RF230-based + +usb:v20B7p1DB5* + ID_MODEL_FROM_DATABASE=IDBG in DFU mode + +usb:v20B7p1DB6* + ID_MODEL_FROM_DATABASE=IDBG in normal mode + +usb:v20B7pC25B* + ID_MODEL_FROM_DATABASE=C2 Dongle + +usb:v20B7pCB72* + ID_MODEL_FROM_DATABASE=ben-wpan, cntr + +usb:v20DF* + ID_VENDOR_FROM_DATABASE=Simtec Electronics + +usb:v20DFp0001* + ID_MODEL_FROM_DATABASE=Entropy Key [UDEKEY01] + +usb:v20F4* + ID_VENDOR_FROM_DATABASE=TRENDnet + +usb:v20F4p648B* + ID_MODEL_FROM_DATABASE=TEW-648UBM 802.11n 150Mbps Micro Wireless N Adapter [Realtek RTL8188CUS] + +usb:v2101* + ID_VENDOR_FROM_DATABASE=ActionStar + +usb:v2101p0201* + ID_MODEL_FROM_DATABASE=SIIG 4-to-2 Printer Switch + +usb:v2162* + ID_VENDOR_FROM_DATABASE=Creative (?) + +usb:v2162p2031* + ID_MODEL_FROM_DATABASE=Network Blaster Wireless Adapter + +usb:v2162p500C* + ID_MODEL_FROM_DATABASE=DE5771 Modem Blaster + +usb:v2162p8001* + ID_MODEL_FROM_DATABASE=Broadxent BritePort DSL Bridge 8010U + +usb:v2184* + ID_VENDOR_FROM_DATABASE=GW Instek + +usb:v2184p0005* + ID_MODEL_FROM_DATABASE=GDS-3000 Oscilloscope + +usb:v2184p0006* + ID_MODEL_FROM_DATABASE=GDS-3000 Oscilloscope + +usb:v2184p0011* + ID_MODEL_FROM_DATABASE=AFG Function Generator (CDC) + +usb:v21A1* + ID_VENDOR_FROM_DATABASE=Emotiv Systems Pty. Ltd. + +usb:v21A1p0001* + ID_MODEL_FROM_DATABASE=EPOC Consumer Headset Wireless Dongle + +usb:v21D6* + ID_VENDOR_FROM_DATABASE=Agecodagis SARL + +usb:v21D6p0002* + ID_MODEL_FROM_DATABASE=Seismic recorder [Tellus] + +usb:v2222* + ID_VENDOR_FROM_DATABASE=MacAlly + +usb:v2222p0004* + ID_MODEL_FROM_DATABASE=iWebKey Keyboard + +usb:v2222p2520* + ID_MODEL_FROM_DATABASE=Mini Tablet + +usb:v2222p4050* + ID_MODEL_FROM_DATABASE=AirStick joystick + +usb:v2227* + ID_VENDOR_FROM_DATABASE=SAMWOO Enterprise + +usb:v2227p3105* + ID_MODEL_FROM_DATABASE=SKYDATA SKD-U100 + +usb:v2233* + ID_VENDOR_FROM_DATABASE=RadioShack Corporation + +usb:v2233p6323* + ID_MODEL_FROM_DATABASE=USB Electronic Scale + +usb:v2237* + ID_VENDOR_FROM_DATABASE=Kobo Inc. + +usb:v2237p4161* + ID_MODEL_FROM_DATABASE=eReader White + +usb:v22A6* + ID_VENDOR_FROM_DATABASE=Pie Digital, Inc. + +usb:v22A6pFFFF* + ID_MODEL_FROM_DATABASE=PieKey "beta" 4GB model 4E4F41482E4F5247 (SM3251Q BB) + +usb:v22B8* + ID_VENDOR_FROM_DATABASE=Motorola PCS + +usb:v22B8p0001* + ID_MODEL_FROM_DATABASE=Wally 2.2 chipset + +usb:v22B8p0002* + ID_MODEL_FROM_DATABASE=Wally 2.4 chipset + +usb:v22B8p0005* + ID_MODEL_FROM_DATABASE=V.60c/V.60i GSM Phone + +usb:v22B8p0830* + ID_MODEL_FROM_DATABASE=2386C-HT820 + +usb:v22B8p0833* + ID_MODEL_FROM_DATABASE=2386C-HT820 [Flash Mode] + +usb:v22B8p0850* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v22B8p1001* + ID_MODEL_FROM_DATABASE=Patriot 1.0 (GSM) chipset + +usb:v22B8p1002* + ID_MODEL_FROM_DATABASE=Patriot 2.0 chipset + +usb:v22B8p1005* + ID_MODEL_FROM_DATABASE=T280e GSM/GPRS Phone + +usb:v22B8p1101* + ID_MODEL_FROM_DATABASE=Patriot 1.0 (TDMA) chipset + +usb:v22B8p1801* + ID_MODEL_FROM_DATABASE=Rainbow chipset flash + +usb:v22B8p2035* + ID_MODEL_FROM_DATABASE=Bluetooth Device + +usb:v22B8p2805* + ID_MODEL_FROM_DATABASE=GSM Modem + +usb:v22B8p2821* + ID_MODEL_FROM_DATABASE=T720 GSM Phone + +usb:v22B8p2822* + ID_MODEL_FROM_DATABASE=V.120e GSM Phone + +usb:v22B8p2823* + ID_MODEL_FROM_DATABASE=Flash Interface + +usb:v22B8p2A01* + ID_MODEL_FROM_DATABASE=MSM6050 chipset + +usb:v22B8p2A02* + ID_MODEL_FROM_DATABASE=CDMA modem + +usb:v22B8p2A03* + ID_MODEL_FROM_DATABASE=MSM6050 chipset flash + +usb:v22B8p2A21* + ID_MODEL_FROM_DATABASE=V710 GSM Phone (P2K) + +usb:v22B8p2A22* + ID_MODEL_FROM_DATABASE=V710 GSM Phone (AT) + +usb:v22B8p2A23* + ID_MODEL_FROM_DATABASE=MSM6100 chipset flash + +usb:v22B8p2A41* + ID_MODEL_FROM_DATABASE=MSM6300 chipset + +usb:v22B8p2A42* + ID_MODEL_FROM_DATABASE=Usb Modem + +usb:v22B8p2A43* + ID_MODEL_FROM_DATABASE=MSM6300 chipset flash + +usb:v22B8p2A61* + ID_MODEL_FROM_DATABASE=E815 GSM Phone (P2K) + +usb:v22B8p2A62* + ID_MODEL_FROM_DATABASE=E815 GSM Phone (AT) + +usb:v22B8p2A63* + ID_MODEL_FROM_DATABASE=MSM6500 chipset flash + +usb:v22B8p2A81* + ID_MODEL_FROM_DATABASE=MSM6025 chipset + +usb:v22B8p2A83* + ID_MODEL_FROM_DATABASE=MSM6025 chipset flash + +usb:v22B8p2AC1* + ID_MODEL_FROM_DATABASE=MSM6100 chipset + +usb:v22B8p2AC3* + ID_MODEL_FROM_DATABASE=MSM6100 chipset flash + +usb:v22B8p2D78* + ID_MODEL_FROM_DATABASE=XT300[SPICE] + +usb:v22B8p3001* + ID_MODEL_FROM_DATABASE=A835/E1000 GSM Phone (P2K) + +usb:v22B8p3002* + ID_MODEL_FROM_DATABASE=A835/E1000 GSM Phone (AT) + +usb:v22B8p3801* + ID_MODEL_FROM_DATABASE=C350L/C450 (P2K) + +usb:v22B8p3802* + ID_MODEL_FROM_DATABASE=C330/C350L/C450/EZX GSM Phone (AT) + +usb:v22B8p3803* + ID_MODEL_FROM_DATABASE=Neptune LT chipset flash + +usb:v22B8p4001* + ID_MODEL_FROM_DATABASE=OMAP 1.0 chipset + +usb:v22B8p4002* + ID_MODEL_FROM_DATABASE=A920/A925 UMTS Phone + +usb:v22B8p4003* + ID_MODEL_FROM_DATABASE=OMAP 1.0 chipset flash + +usb:v22B8p4008* + ID_MODEL_FROM_DATABASE=OMAP 1.0 chipset RDL + +usb:v22B8p41D6* + ID_MODEL_FROM_DATABASE=Droid X (Windows media mode) + +usb:v22B8p41D9* + ID_MODEL_FROM_DATABASE=Droid/Milestone + +usb:v22B8p41DB* + ID_MODEL_FROM_DATABASE=Droid/Milestone (Debug mode) + +usb:v22B8p41DE* + ID_MODEL_FROM_DATABASE=Droid X (PC mode) + +usb:v22B8p4204* + ID_MODEL_FROM_DATABASE=MPx200 Smartphone + +usb:v22B8p4214* + ID_MODEL_FROM_DATABASE=MPc GSM + +usb:v22B8p4224* + ID_MODEL_FROM_DATABASE=MPx220 Smartphone + +usb:v22B8p4234* + ID_MODEL_FROM_DATABASE=MPc CDMA + +usb:v22B8p4244* + ID_MODEL_FROM_DATABASE=MPx100 Smartphone + +usb:v22B8p4285* + ID_MODEL_FROM_DATABASE=Droid X (Mass storage) + +usb:v22B8p4801* + ID_MODEL_FROM_DATABASE=Neptune LTS chipset + +usb:v22B8p4803* + ID_MODEL_FROM_DATABASE=Neptune LTS chipset flash + +usb:v22B8p4810* + ID_MODEL_FROM_DATABASE=Triplet GSM Phone (storage) + +usb:v22B8p4901* + ID_MODEL_FROM_DATABASE=Triplet GSM Phone (P2K) + +usb:v22B8p4902* + ID_MODEL_FROM_DATABASE=Triplet GSM Phone (AT) + +usb:v22B8p4903* + ID_MODEL_FROM_DATABASE=Neptune LTE chipset flash + +usb:v22B8p4A01* + ID_MODEL_FROM_DATABASE=Neptune LTX chipset + +usb:v22B8p4A03* + ID_MODEL_FROM_DATABASE=Neptune LTX chipset flash + +usb:v22B8p4A32* + ID_MODEL_FROM_DATABASE=L6-imode Phone + +usb:v22B8p5801* + ID_MODEL_FROM_DATABASE=Neptune ULS chipset + +usb:v22B8p5803* + ID_MODEL_FROM_DATABASE=Neptune ULS chipset flash + +usb:v22B8p5901* + ID_MODEL_FROM_DATABASE=Neptune VLT chipset + +usb:v22B8p5903* + ID_MODEL_FROM_DATABASE=Neptune VLT chipset flash + +usb:v22B8p6001* + ID_MODEL_FROM_DATABASE=Dalhart EZX + +usb:v22B8p6003* + ID_MODEL_FROM_DATABASE=Dalhart flash + +usb:v22B8p6004* + ID_MODEL_FROM_DATABASE=EZX GSM Phone (CDC Net) + +usb:v22B8p6006* + ID_MODEL_FROM_DATABASE=MOTOROKR E6 + +usb:v22B8p6008* + ID_MODEL_FROM_DATABASE=Dalhart RDL + +usb:v22B8p6009* + ID_MODEL_FROM_DATABASE=EZX GSM Phone (P2K) + +usb:v22B8p600A* + ID_MODEL_FROM_DATABASE=Dalhart EZX config 17 + +usb:v22B8p600B* + ID_MODEL_FROM_DATABASE=Dalhart EZX config 18 + +usb:v22B8p600C* + ID_MODEL_FROM_DATABASE=EZX GSM Phone (USBLAN) + +usb:v22B8p6021* + ID_MODEL_FROM_DATABASE=JUIX chipset + +usb:v22B8p6023* + ID_MODEL_FROM_DATABASE=JUIX chipset flash + +usb:v22B8p6026* + ID_MODEL_FROM_DATABASE=Flash RAM Downloader/miniOS + +usb:v22B8p6027* + ID_MODEL_FROM_DATABASE=USBLAN + +usb:v22B8p604C* + ID_MODEL_FROM_DATABASE=EZX GSM Phone (Storage) + +usb:v22B8p6101* + ID_MODEL_FROM_DATABASE=Talon integrated chipset + +usb:v22B8p6401* + ID_MODEL_FROM_DATABASE=Argon chipset + +usb:v22B8p6403* + ID_MODEL_FROM_DATABASE=Argon chipset flash + +usb:v22B8p6415* + ID_MODEL_FROM_DATABASE=ROKR Z6 (MTP mode) + +usb:v22B8p6604* + ID_MODEL_FROM_DATABASE=Washington CDMA Phone + +usb:v22B8p6631* + ID_MODEL_FROM_DATABASE=CDC Modem + +usb:v22B8p7001* + ID_MODEL_FROM_DATABASE=Q Smartphone + +usb:v22B8pFE01* + ID_MODEL_FROM_DATABASE=StarTAC III MS900 + +usb:v22B9* + ID_VENDOR_FROM_DATABASE=eTurboTouch Technology, Inc. + +usb:v22B9p0006* + ID_MODEL_FROM_DATABASE=Touch Screen + +usb:v22BA* + ID_VENDOR_FROM_DATABASE=Technology Innovation Holdings, Ltd + +usb:v2304* + ID_VENDOR_FROM_DATABASE=Pinnacle Systems, Inc. + +usb:v2304p0109* + ID_MODEL_FROM_DATABASE=Studio PCTV USB (SECAM) + +usb:v2304p0110* + ID_MODEL_FROM_DATABASE=Studio PCTV USB (PAL) + +usb:v2304p0111* + ID_MODEL_FROM_DATABASE=Miro PCTV USB + +usb:v2304p0112* + ID_MODEL_FROM_DATABASE=Studio PCTV USB (NTSC) with FM radio + +usb:v2304p0201* + ID_MODEL_FROM_DATABASE=Systems MovieBox Device + +usb:v2304p0204* + ID_MODEL_FROM_DATABASE=MovieBox USB_B + +usb:v2304p0205* + ID_MODEL_FROM_DATABASE=DVC 150B + +usb:v2304p0206* + ID_MODEL_FROM_DATABASE=Systems MovieBox Deluxe Device + +usb:v2304p0207* + ID_MODEL_FROM_DATABASE=Dazzle DVC90 Video Device + +usb:v2304p0208* + ID_MODEL_FROM_DATABASE=Studio PCTV USB2 + +usb:v2304p020E* + ID_MODEL_FROM_DATABASE=PCTV 200e + +usb:v2304p020F* + ID_MODEL_FROM_DATABASE=PCTV 400e BDA Device + +usb:v2304p0210* + ID_MODEL_FROM_DATABASE=Studio PCTV USB (PAL) with FM radio + +usb:v2304p0212* + ID_MODEL_FROM_DATABASE=Studio PCTV USB (NTSC) + +usb:v2304p0213* + ID_MODEL_FROM_DATABASE=500-USB Device + +usb:v2304p0214* + ID_MODEL_FROM_DATABASE=Studio PCTV USB (PAL) with FM radio + +usb:v2304p0216* + ID_MODEL_FROM_DATABASE=PCTV 60e + +usb:v2304p0219* + ID_MODEL_FROM_DATABASE=PCTV 260e + +usb:v2304p021A* + ID_MODEL_FROM_DATABASE=Dazzle DVC100 Audio Device + +usb:v2304p021B* + ID_MODEL_FROM_DATABASE=Dazzle DVC130/DVC170 + +usb:v2304p021D* + ID_MODEL_FROM_DATABASE=Dazzle DVC130 + +usb:v2304p021E* + ID_MODEL_FROM_DATABASE=Dazzle DVC170 + +usb:v2304p021F* + ID_MODEL_FROM_DATABASE=PCTV Sat HDTV Pro BDA Device + +usb:v2304p0222* + ID_MODEL_FROM_DATABASE=PCTV Sat Pro BDA Device + +usb:v2304p0223* + ID_MODEL_FROM_DATABASE=DazzleTV Sat BDA Device + +usb:v2304p0225* + ID_MODEL_FROM_DATABASE=Remote Kit Infrared Transceiver + +usb:v2304p0226* + ID_MODEL_FROM_DATABASE=PCTV 330e + +usb:v2304p0227* + ID_MODEL_FROM_DATABASE=PCTV for Mac, HD Stick + +usb:v2304p0228* + ID_MODEL_FROM_DATABASE=PCTV DVB-T Flash Stick + +usb:v2304p0229* + ID_MODEL_FROM_DATABASE=PCTV Dual DVB-T 2001e + +usb:v2304p022A* + ID_MODEL_FROM_DATABASE=PCTV 160e + +usb:v2304p022B* + ID_MODEL_FROM_DATABASE=PCTV 71e [Afatech AF9015] + +usb:v2304p0232* + ID_MODEL_FROM_DATABASE=PCTV 170e + +usb:v2304p0236* + ID_MODEL_FROM_DATABASE=PCTV 72e [DiBcom DiB7000PC] + +usb:v2304p0237* + ID_MODEL_FROM_DATABASE=PCTV 73e [DiBcom DiB7000PC] + +usb:v2304p023A* + ID_MODEL_FROM_DATABASE=PCTV 801e + +usb:v2304p023B* + ID_MODEL_FROM_DATABASE=PCTV 801e SE + +usb:v2304p023D* + ID_MODEL_FROM_DATABASE=PCTV 340e + +usb:v2304p023E* + ID_MODEL_FROM_DATABASE=PCTV 340e SE + +usb:v2304p0300* + ID_MODEL_FROM_DATABASE=Studio Linx Video input cable (NTSC) + +usb:v2304p0301* + ID_MODEL_FROM_DATABASE=Studio Linx Video input cable (PAL) + +usb:v2304p0302* + ID_MODEL_FROM_DATABASE=Dazzle DVC120 + +usb:v2304p0419* + ID_MODEL_FROM_DATABASE=PCTV Bungee USB (PAL) with FM radio + +usb:v2304p061D* + ID_MODEL_FROM_DATABASE=PCTV Deluxe (NTSC) Device + +usb:v2304p061E* + ID_MODEL_FROM_DATABASE=PCTV Deluxe (PAL) Device + +usb:v2318* + ID_VENDOR_FROM_DATABASE=Shining Technologies, Inc. [hex] + +usb:v2318p0011* + ID_MODEL_FROM_DATABASE=CitiDISK Jr. IDE Enclosure + +usb:v2341* + ID_VENDOR_FROM_DATABASE=Arduino SA + +usb:v2341p0001* + ID_MODEL_FROM_DATABASE=Uno (CDC ACM) + +usb:v2341p0010* + ID_MODEL_FROM_DATABASE=Mega 2560 (CDC ACM) + +usb:v2341p003B* + ID_MODEL_FROM_DATABASE=Serial Adapter (CDC ACM) + +usb:v2341p003F* + ID_MODEL_FROM_DATABASE=Mega ADK (CDC ACM) + +usb:v2341p0042* + ID_MODEL_FROM_DATABASE=Mega 2560 R3 (CDC ACM) + +usb:v2341p0043* + ID_MODEL_FROM_DATABASE=Uno R3 (CDC ACM) + +usb:v2341p0044* + ID_MODEL_FROM_DATABASE=Mega ADK R3 (CDC ACM) + +usb:v2341p0045* + ID_MODEL_FROM_DATABASE=Serial R3 (CDC ACM) + +usb:v2341p8036* + ID_MODEL_FROM_DATABASE=Leonardo (CDC ACM, HID) + +usb:v2373* + ID_VENDOR_FROM_DATABASE=Pumatronix Ltda + +usb:v2373p0001* + ID_MODEL_FROM_DATABASE=5 MegaPixel Digital Still Camera [DSC5M] + +usb:v2375* + ID_VENDOR_FROM_DATABASE=Digit@lway, Inc. + +usb:v2375p0001* + ID_MODEL_FROM_DATABASE=Digital Audio Player + +usb:v2406* + ID_VENDOR_FROM_DATABASE=SANHO Digital Electronics Co., Ltd. + +usb:v2406p6688* + ID_MODEL_FROM_DATABASE=PD7X Portable Storage + +usb:v2443* + ID_VENDOR_FROM_DATABASE=Aessent Technology Ltd + +usb:v2443p00DC* + ID_MODEL_FROM_DATABASE=aes220 FPGA Mini-Module + +usb:v2478* + ID_VENDOR_FROM_DATABASE=Tripp-Lite + +usb:v2478p2008* + ID_MODEL_FROM_DATABASE=U209-000-R Serial Port + +usb:v2632* + ID_VENDOR_FROM_DATABASE=TwinMOS + +usb:v2632p3209* + ID_MODEL_FROM_DATABASE=7-in-1 Card Reader + +usb:v2650* + ID_VENDOR_FROM_DATABASE=Electronics For Imaging, Inc. [hex] + +usb:v2659* + ID_VENDOR_FROM_DATABASE=Sundtek + +usb:v2659p1101* + ID_MODEL_FROM_DATABASE=TNT DVB-T/DAB/DAB+/FM + +usb:v2659p1201* + ID_MODEL_FROM_DATABASE=FM Transmitter/Receiver + +usb:v2659p1202* + ID_MODEL_FROM_DATABASE=MediaTV Analog/FM/DVB-T + +usb:v2659p1203* + ID_MODEL_FROM_DATABASE=MediaTV Analog/FM/DVB-T MiniPCIe + +usb:v2659p1204* + ID_MODEL_FROM_DATABASE=MediaTV Analog/FM/ATSC + +usb:v2659p1205* + ID_MODEL_FROM_DATABASE=SkyTV Ultimate V + +usb:v2659p1206* + ID_MODEL_FROM_DATABASE=MediaTV DVB-T MiniPCIe + +usb:v2659p1207* + ID_MODEL_FROM_DATABASE=Sundtek HD Capture + +usb:v2659p1208* + ID_MODEL_FROM_DATABASE=Sundtek SkyTV Ultimate III + +usb:v2659p1209* + ID_MODEL_FROM_DATABASE=MediaTV Analog/FM/ATSC MiniPCIe + +usb:v2659p1210* + ID_MODEL_FROM_DATABASE=MediaTV Pro III (EU) + +usb:v2659p1211* + ID_MODEL_FROM_DATABASE=MediaTV Pro III (US) + +usb:v2659p1212* + ID_MODEL_FROM_DATABASE=MediaTV Pro III MiniPCIe (EU) + +usb:v2659p1213* + ID_MODEL_FROM_DATABASE=MediaTV Pro III MiniPCIe (US) + +usb:v2730* + ID_VENDOR_FROM_DATABASE=Citizen + +usb:v2730p200F* + ID_MODEL_FROM_DATABASE=CT-S310 Label printer + +usb:v2735* + ID_VENDOR_FROM_DATABASE=DigitalWay + +usb:v2735p0003* + ID_MODEL_FROM_DATABASE=MPIO HS100 + +usb:v2735p1001* + ID_MODEL_FROM_DATABASE=MPIO FY200 + +usb:v2735p1002* + ID_MODEL_FROM_DATABASE=MPIO FL100 + +usb:v2735p1003* + ID_MODEL_FROM_DATABASE=MPIO FD100 + +usb:v2735p1004* + ID_MODEL_FROM_DATABASE=MPIO HD200 + +usb:v2735p1005* + ID_MODEL_FROM_DATABASE=MPIO HD300 + +usb:v2735p1006* + ID_MODEL_FROM_DATABASE=MPIO FG100 + +usb:v2735p1007* + ID_MODEL_FROM_DATABASE=MPIO FG130 + +usb:v2735p1008* + ID_MODEL_FROM_DATABASE=MPIO FY300 + +usb:v2735p1009* + ID_MODEL_FROM_DATABASE=MPIO FY400 + +usb:v2735p100A* + ID_MODEL_FROM_DATABASE=MPIO FL300 + +usb:v2735p100B* + ID_MODEL_FROM_DATABASE=MPIO HS200 + +usb:v2735p100C* + ID_MODEL_FROM_DATABASE=MPIO FL350 + +usb:v2735p100D* + ID_MODEL_FROM_DATABASE=MPIO FY500 + +usb:v2735p100E* + ID_MODEL_FROM_DATABASE=MPIO FY500 + +usb:v2735p100F* + ID_MODEL_FROM_DATABASE=MPIO FY600 + +usb:v2735p1012* + ID_MODEL_FROM_DATABASE=MPIO FL400 + +usb:v2735p1013* + ID_MODEL_FROM_DATABASE=MPIO HD400 + +usb:v2735p1014* + ID_MODEL_FROM_DATABASE=MPIO HD400 + +usb:v2735p1016* + ID_MODEL_FROM_DATABASE=MPIO FY700 + +usb:v2735p1017* + ID_MODEL_FROM_DATABASE=MPIO FY700 + +usb:v2735p1018* + ID_MODEL_FROM_DATABASE=MPIO FY800 + +usb:v2735p1019* + ID_MODEL_FROM_DATABASE=MPIO FY800 + +usb:v2735p101A* + ID_MODEL_FROM_DATABASE=MPIO FY900 + +usb:v2735p101B* + ID_MODEL_FROM_DATABASE=MPIO FY900 + +usb:v2735p102B* + ID_MODEL_FROM_DATABASE=MPIO FL500 + +usb:v2735p102C* + ID_MODEL_FROM_DATABASE=MPIO FL500 + +usb:v2735p103F* + ID_MODEL_FROM_DATABASE=MPIO FY570 + +usb:v2735p1040* + ID_MODEL_FROM_DATABASE=MPIO FY570 + +usb:v2735p1041* + ID_MODEL_FROM_DATABASE=MPIO FY670 + +usb:v2735p1042* + ID_MODEL_FROM_DATABASE=MPIO FY670 + +usb:v2735p1043* + ID_MODEL_FROM_DATABASE=HCT HMD-180A + +usb:v2735p1044* + ID_MODEL_FROM_DATABASE=HCT HMD-180A + +usb:v2770* + ID_VENDOR_FROM_DATABASE=NHJ, Ltd + +usb:v2770p0A01* + ID_MODEL_FROM_DATABASE=ScanJet 4600 series + +usb:v2770p905C* + ID_MODEL_FROM_DATABASE=Che-Ez Snap SNAP-U/Digigr8/Soundstar TDC-35 + +usb:v2770p9060* + ID_MODEL_FROM_DATABASE=A130 + +usb:v2770p9120* + ID_MODEL_FROM_DATABASE=Che-ez! Snap / iClick Tiny VGA Digital Camera + +usb:v2770p9130* + ID_MODEL_FROM_DATABASE=TCG 501 + +usb:v2770p913C* + ID_MODEL_FROM_DATABASE=Argus DC-1730 + +usb:v2770p9150* + ID_MODEL_FROM_DATABASE=Mini Cam + +usb:v2770p9153* + ID_MODEL_FROM_DATABASE=iClick 5X + +usb:v2770p915D* + ID_MODEL_FROM_DATABASE=Cyberpix S-210S / Little Tikes My Real Digital Camera + +usb:v2770p930B* + ID_MODEL_FROM_DATABASE=CCD Webcam(PC370R) + +usb:v2770p930C* + ID_MODEL_FROM_DATABASE=CCD Webcam(PC370R) + +usb:v2821* + ID_VENDOR_FROM_DATABASE=ASUSTek Computer Inc. + +usb:v2821p0161* + ID_MODEL_FROM_DATABASE=WL-161 802.11b Wireless Adapter [SiS 162U] + +usb:v2821p160F* + ID_MODEL_FROM_DATABASE=WL-160g 802.11g Wireless Adapter [Envara WiND512] + +usb:v2821p3300* + ID_MODEL_FROM_DATABASE=WL-140 / Hawking HWU36D 802.11b Wireless Adapter [Intersil PRISM 3] + +usb:v2899* + ID_VENDOR_FROM_DATABASE=Toptronic Industrial Co., Ltd + +usb:v2899p012C* + ID_MODEL_FROM_DATABASE=Camera Device + +usb:v2C02* + ID_VENDOR_FROM_DATABASE=Planex Communications + +usb:v2C02p14EA* + ID_MODEL_FROM_DATABASE=GW-US11H WLAN + +usb:v2C1A* + ID_VENDOR_FROM_DATABASE=Dolphin Peripherals + +usb:v2C1Ap0000* + ID_MODEL_FROM_DATABASE=Wireless Optical Mouse + +usb:v2FB2* + ID_VENDOR_FROM_DATABASE=Fujitsu, Ltd + +usb:v3125* + ID_VENDOR_FROM_DATABASE=Eagletron + +usb:v3125p0001* + ID_MODEL_FROM_DATABASE=TrackerPod Camera Stand + +usb:v3176* + ID_VENDOR_FROM_DATABASE=Whanam Electronics Co., Ltd + +usb:v3275* + ID_VENDOR_FROM_DATABASE=VidzMedia Pte Ltd + +usb:v3275p4FB1* + ID_MODEL_FROM_DATABASE=MonsterTV P2H + +usb:v3334* + ID_VENDOR_FROM_DATABASE=AEI + +usb:v3334p1701* + ID_MODEL_FROM_DATABASE=Fast Ethernet + +usb:v3340* + ID_VENDOR_FROM_DATABASE=Yakumo + +usb:v3340p043A* + ID_MODEL_FROM_DATABASE=Mio A701 DigiWalker PPCPhone + +usb:v3340p0E3A* + ID_MODEL_FROM_DATABASE=Pocket PC 300 GPS SL / Typhoon MyGuide 3500 + +usb:v3340pA0A3* + ID_MODEL_FROM_DATABASE=deltaX 5 BT (D) PDA + +usb:v3504* + ID_VENDOR_FROM_DATABASE=Micro Star + +usb:v3504pF110* + ID_MODEL_FROM_DATABASE=Security Key + +usb:v3538* + ID_VENDOR_FROM_DATABASE=Power Quotient International Co., Ltd + +usb:v3538p0001* + ID_MODEL_FROM_DATABASE=Travel Flash + +usb:v3538p0015* + ID_MODEL_FROM_DATABASE=Mass Storge Device + +usb:v3538p0022* + ID_MODEL_FROM_DATABASE=Hi-Speed Mass Storage Device + +usb:v3538p0042* + ID_MODEL_FROM_DATABASE=Cool Drive U339 Flash Disk + +usb:v3538p0054* + ID_MODEL_FROM_DATABASE=Flash Drive (2GB) + +usb:v3579* + ID_VENDOR_FROM_DATABASE=DIVA + +usb:v3579p6901* + ID_MODEL_FROM_DATABASE=Media Reader + +usb:v3636* + ID_VENDOR_FROM_DATABASE=InVibro + +usb:v3838* + ID_VENDOR_FROM_DATABASE=WEM + +usb:v3838p0001* + ID_MODEL_FROM_DATABASE=5-in-1 Card Reader + +usb:v3923* + ID_VENDOR_FROM_DATABASE=National Instruments Corp. + +usb:v3923p12C0* + ID_MODEL_FROM_DATABASE=DAQPad-6020E + +usb:v3923p12D0* + ID_MODEL_FROM_DATABASE=DAQPad-6507 + +usb:v3923p12E0* + ID_MODEL_FROM_DATABASE=NI 4350 + +usb:v3923p12F0* + ID_MODEL_FROM_DATABASE=NI 5102 + +usb:v3923p1750* + ID_MODEL_FROM_DATABASE=DAQPad-6508 + +usb:v3923p17B0* + ID_MODEL_FROM_DATABASE=USB-ISA-Bridge + +usb:v3923p1820* + ID_MODEL_FROM_DATABASE=DAQPad-6020E (68 pin I/O) + +usb:v3923p1830* + ID_MODEL_FROM_DATABASE=DAQPad-6020E (BNC) + +usb:v3923p1F00* + ID_MODEL_FROM_DATABASE=DAQPad-6024E + +usb:v3923p1F10* + ID_MODEL_FROM_DATABASE=DAQPad-6024E + +usb:v3923p1F20* + ID_MODEL_FROM_DATABASE=DAQPad-6025E + +usb:v3923p1F30* + ID_MODEL_FROM_DATABASE=DAQPad-6025E + +usb:v3923p1F40* + ID_MODEL_FROM_DATABASE=DAQPad-6036E + +usb:v3923p1F50* + ID_MODEL_FROM_DATABASE=DAQPad-6036E + +usb:v3923p2F80* + ID_MODEL_FROM_DATABASE=DAQPad-6052E + +usb:v3923p2F90* + ID_MODEL_FROM_DATABASE=DAQPad-6052E + +usb:v3923p702B* + ID_MODEL_FROM_DATABASE=GPIB-USB-B + +usb:v3923p703C* + ID_MODEL_FROM_DATABASE=USB-485 RS485 Cable + +usb:v3923p709B* + ID_MODEL_FROM_DATABASE=GPIB-USB-HS + +usb:v3923p7254* + ID_MODEL_FROM_DATABASE=NI MIO (data acquisition card) firmware updater + +usb:v3923p729E* + ID_MODEL_FROM_DATABASE=USB-6251 (OEM) data acquisition card + +usb:v40BB* + ID_VENDOR_FROM_DATABASE=I-O Data + +usb:v40BBp0A09* + ID_MODEL_FROM_DATABASE=USB2.0-SCSI Bridge USB2-SC + +usb:v4101* + ID_VENDOR_FROM_DATABASE=i-rocks + +usb:v4101p1301* + ID_MODEL_FROM_DATABASE=IR-2510 usb phone + +usb:v4102* + ID_VENDOR_FROM_DATABASE=iRiver, Ltd. + +usb:v4102p1001* + ID_MODEL_FROM_DATABASE=iFP-100 series mp3 player + +usb:v4102p1003* + ID_MODEL_FROM_DATABASE=iFP-300 series mp3 player + +usb:v4102p1005* + ID_MODEL_FROM_DATABASE=iFP-500 series mp3 player + +usb:v4102p1007* + ID_MODEL_FROM_DATABASE=iFP-700 series mp3/ogg vorbis player + +usb:v4102p1008* + ID_MODEL_FROM_DATABASE=iFP-800 series mp3/ogg vorbis player + +usb:v4102p100A* + ID_MODEL_FROM_DATABASE=iFP-1000 series mp3/ogg vorbis player + +usb:v4102p1014* + ID_MODEL_FROM_DATABASE=T20 series mp3/ogg vorbis player (ums firmware) + +usb:v4102p1019* + ID_MODEL_FROM_DATABASE=T30 + +usb:v4102p1034* + ID_MODEL_FROM_DATABASE=T60 + +usb:v4102p1040* + ID_MODEL_FROM_DATABASE=M1Player + +usb:v4102p1041* + ID_MODEL_FROM_DATABASE=E100 (ums) + +usb:v4102p1101* + ID_MODEL_FROM_DATABASE=iFP-100 series mp3 player (ums firmware) + +usb:v4102p1103* + ID_MODEL_FROM_DATABASE=iFP-300 series mp3 player (ums firmware) + +usb:v4102p1105* + ID_MODEL_FROM_DATABASE=iFP-500 series mp3 player (ums firmware) + +usb:v4102p1113* + ID_MODEL_FROM_DATABASE=T10 (alternate) + +usb:v4102p1117* + ID_MODEL_FROM_DATABASE=T10 + +usb:v4102p1119* + ID_MODEL_FROM_DATABASE=T30 series mp3/ogg/wma player + +usb:v4102p1141* + ID_MODEL_FROM_DATABASE=E100 (mtp) + +usb:v4102p2002* + ID_MODEL_FROM_DATABASE=H10 6GB + +usb:v4102p2101* + ID_MODEL_FROM_DATABASE=H10 20GB (mtp) + +usb:v4102p2102* + ID_MODEL_FROM_DATABASE=H10 5GB (mtp) + +usb:v4102p2105* + ID_MODEL_FROM_DATABASE=H10 5/6GB (mtp) + +usb:v413C* + ID_VENDOR_FROM_DATABASE=Dell Computer Corp. + +usb:v413Cp0000* + ID_MODEL_FROM_DATABASE=DRAC 5 Virtual Keyboard and Mouse + +usb:v413Cp0001* + ID_MODEL_FROM_DATABASE=DRAC 5 Virtual Media + +usb:v413Cp0058* + ID_MODEL_FROM_DATABASE=Port Replicator + +usb:v413Cp1001* + ID_MODEL_FROM_DATABASE=Keyboard Hub + +usb:v413Cp1002* + ID_MODEL_FROM_DATABASE=Keyboard Hub + +usb:v413Cp1003* + ID_MODEL_FROM_DATABASE=Keyboard Hub + +usb:v413Cp1005* + ID_MODEL_FROM_DATABASE=Multimedia Pro Keyboard Hub + +usb:v413Cp2001* + ID_MODEL_FROM_DATABASE=Keyboard HID Support + +usb:v413Cp2002* + ID_MODEL_FROM_DATABASE=SK-8125 Keyboard + +usb:v413Cp2003* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v413Cp2005* + ID_MODEL_FROM_DATABASE=RT7D50 Keyboard + +usb:v413Cp2010* + ID_MODEL_FROM_DATABASE=Keyboard + +usb:v413Cp2011* + ID_MODEL_FROM_DATABASE=Multimedia Pro Keyboard + +usb:v413Cp2100* + ID_MODEL_FROM_DATABASE=SK-3106 Keyboard + +usb:v413Cp2101* + ID_MODEL_FROM_DATABASE=SmartCard Reader Keyboard + +usb:v413Cp2105* + ID_MODEL_FROM_DATABASE=Model L100 Keyboard + +usb:v413Cp2106* + ID_MODEL_FROM_DATABASE=Dell QuietKey Keyboard + +usb:v413Cp2500* + ID_MODEL_FROM_DATABASE=DRAC4 Remote Access Card + +usb:v413Cp2513* + ID_MODEL_FROM_DATABASE=internal USB Hub of E-Port Replicator + +usb:v413Cp3010* + ID_MODEL_FROM_DATABASE=Optical Wheel Mouse + +usb:v413Cp3012* + ID_MODEL_FROM_DATABASE=Optical Wheel Mouse + +usb:v413Cp3016* + ID_MODEL_FROM_DATABASE=Optical 5-Button Wheel Mouse + +usb:v413Cp3200* + ID_MODEL_FROM_DATABASE=Mouse + +usb:v413Cp4001* + ID_MODEL_FROM_DATABASE=Axim X5 + +usb:v413Cp4002* + ID_MODEL_FROM_DATABASE=Axim X3 + +usb:v413Cp4003* + ID_MODEL_FROM_DATABASE=Axim X30 + +usb:v413Cp4004* + ID_MODEL_FROM_DATABASE=Axim Sync + +usb:v413Cp4005* + ID_MODEL_FROM_DATABASE=Axim Sync + +usb:v413Cp4006* + ID_MODEL_FROM_DATABASE=Axim Sync + +usb:v413Cp4007* + ID_MODEL_FROM_DATABASE=Axim Sync + +usb:v413Cp4008* + ID_MODEL_FROM_DATABASE=Axim Sync + +usb:v413Cp4009* + ID_MODEL_FROM_DATABASE=Axim Sync + +usb:v413Cp4011* + ID_MODEL_FROM_DATABASE=Axim X51v + +usb:v413Cp5103* + ID_MODEL_FROM_DATABASE=AIO Printer A940 + +usb:v413Cp5105* + ID_MODEL_FROM_DATABASE=AIO Printer A920 + +usb:v413Cp5107* + ID_MODEL_FROM_DATABASE=AIO Printer A960 + +usb:v413Cp5109* + ID_MODEL_FROM_DATABASE=Photo AIO Printer 922 + +usb:v413Cp5110* + ID_MODEL_FROM_DATABASE=Photo AIO Printer 962 + +usb:v413Cp5111* + ID_MODEL_FROM_DATABASE=Photo AIO Printer 942 + +usb:v413Cp5112* + ID_MODEL_FROM_DATABASE=Photo AIO Printer 924 + +usb:v413Cp5113* + ID_MODEL_FROM_DATABASE=Photo AIO Printer 944 + +usb:v413Cp5114* + ID_MODEL_FROM_DATABASE=Photo AIO Printer 964 + +usb:v413Cp5115* + ID_MODEL_FROM_DATABASE=Photo AIO Printer 926 + +usb:v413Cp5116* + ID_MODEL_FROM_DATABASE=AIO Printer 946 + +usb:v413Cp5117* + ID_MODEL_FROM_DATABASE=Photo AIO Printer 966 + +usb:v413Cp5118* + ID_MODEL_FROM_DATABASE=AIO 810 + +usb:v413Cp5124* + ID_MODEL_FROM_DATABASE=Laser MFP 1815 + +usb:v413Cp5128* + ID_MODEL_FROM_DATABASE=Photo AIO 928 + +usb:v413Cp5200* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v413Cp5202* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v413Cp5203* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v413Cp5210* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v413Cp5211* + ID_MODEL_FROM_DATABASE=1110 Laser Printer + +usb:v413Cp5220* + ID_MODEL_FROM_DATABASE=Laser MFP 1600n + +usb:v413Cp5225* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v413Cp5226* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v413Cp5300* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v413Cp5400* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v413Cp5401* + ID_MODEL_FROM_DATABASE=Laser Printer + +usb:v413Cp5513* + ID_MODEL_FROM_DATABASE=WLA3310 Wireless Adapter [Intersil ISL3887] + +usb:v413Cp5601* + ID_MODEL_FROM_DATABASE=Laser Printer 3100cn + +usb:v413Cp5602* + ID_MODEL_FROM_DATABASE=Laser Printer 3000cn + +usb:v413Cp5631* + ID_MODEL_FROM_DATABASE=Laser Printer 5100cn + +usb:v413Cp5905* + ID_MODEL_FROM_DATABASE=Printing Support + +usb:v413Cp8000* + ID_MODEL_FROM_DATABASE=BC02 Bluetooth Adapter + +usb:v413Cp8010* + ID_MODEL_FROM_DATABASE=TrueMobile Bluetooth Module in + +usb:v413Cp8100* + ID_MODEL_FROM_DATABASE=TrueMobile 1180 802.11b Adapter [Intersil PRISM 3] + +usb:v413Cp8102* + ID_MODEL_FROM_DATABASE=TrueMobile 1300 802.11g Wireless Adapter [Intersil ISL3880] + +usb:v413Cp8103* + ID_MODEL_FROM_DATABASE=Wireless 350 Bluetooth + +usb:v413Cp8104* + ID_MODEL_FROM_DATABASE=Wireless 1450 Dual-band (802.11a/b/g) Adapter [Intersil ISL3887] + +usb:v413Cp8105* + ID_MODEL_FROM_DATABASE=U2 in HID - Driver + +usb:v413Cp8106* + ID_MODEL_FROM_DATABASE=Wireless 350 Bluetooth Internal Card in + +usb:v413Cp8110* + ID_MODEL_FROM_DATABASE=Wireless 3xx Bluetooth Internal Card + +usb:v413Cp8111* + ID_MODEL_FROM_DATABASE=Wireless 3xx Bluetooth Internal Card in + +usb:v413Cp8114* + ID_MODEL_FROM_DATABASE=Wireless 5700 Mobile Broadband (CDMA EV-DO) Minicard Modem + +usb:v413Cp8115* + ID_MODEL_FROM_DATABASE=Wireless 5500 Mobile Broadband (3G HSDPA) Minicard Modem + +usb:v413Cp8116* + ID_MODEL_FROM_DATABASE=Wireless 5505 Mobile Broadband (3G HSDPA) Minicard Modem + +usb:v413Cp8117* + ID_MODEL_FROM_DATABASE=Wireless 5700 Mobile Broadband (CDMA EV-DO) Expresscard Modem + +usb:v413Cp8118* + ID_MODEL_FROM_DATABASE=Wireless 5510 Mobile Broadband (3G HSDPA) Expresscard Status Port + +usb:v413Cp8120* + ID_MODEL_FROM_DATABASE=Bluetooth adapter + +usb:v413Cp8121* + ID_MODEL_FROM_DATABASE=Eastfold in HID + +usb:v413Cp8122* + ID_MODEL_FROM_DATABASE=Eastfold in DFU + +usb:v413Cp8123* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v413Cp8124* + ID_MODEL_FROM_DATABASE=eHome Infrared Receiver + +usb:v413Cp8126* + ID_MODEL_FROM_DATABASE=Wireless 355 Bluetooth + +usb:v413Cp8127* + ID_MODEL_FROM_DATABASE=Wireless 355 Module with Bluetooth 2.0 + EDR Technology. + +usb:v413Cp8128* + ID_MODEL_FROM_DATABASE=Wireless 5700-Sprint Mobile Broadband (CDMA EV-DO) Mini-Card Status Port + +usb:v413Cp8129* + ID_MODEL_FROM_DATABASE=Wireless 5700-Telus Mobile Broadband (CDMA EV-DO) Mini-Card Status Port + +usb:v413Cp8131* + ID_MODEL_FROM_DATABASE=Wireless 360 Bluetooth 2.0 + EDR module. + +usb:v413Cp8133* + ID_MODEL_FROM_DATABASE=Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port + +usb:v413Cp8134* + ID_MODEL_FROM_DATABASE=Wireless 5720 Sprint Mobile Broadband (EVDO Rev-A) Minicard Status Port + +usb:v413Cp8135* + ID_MODEL_FROM_DATABASE=Wireless 5720 TELUS Mobile Broadband (EVDO Rev-A) Minicard Diagnostics Port + +usb:v413Cp8136* + ID_MODEL_FROM_DATABASE=Wireless 5520 Cingular Mobile Broadband (3G HSDPA) Minicard Diagnostics Port + +usb:v413Cp8137* + ID_MODEL_FROM_DATABASE=Wireless 5520 Voda L Mobile Broadband (3G HSDPA) Minicard Status Port + +usb:v413Cp8138* + ID_MODEL_FROM_DATABASE=Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard EAP-SIM Port + +usb:v413Cp8140* + ID_MODEL_FROM_DATABASE=Wireless 360 Bluetooth + +usb:v413Cp8142* + ID_MODEL_FROM_DATABASE=Mobile 360 in DFU + +usb:v413Cp8147* + ID_MODEL_FROM_DATABASE=F3507g Mobile Broadband Module + +usb:v413Cp8156* + ID_MODEL_FROM_DATABASE=Wireless 370 Bluetooth Mini-card + +usb:v413Cp8157* + ID_MODEL_FROM_DATABASE=Integrated Keyboard + +usb:v413Cp8158* + ID_MODEL_FROM_DATABASE=Integrated Touchpad / Trackstick + +usb:v413Cp8160* + ID_MODEL_FROM_DATABASE=Wireless 365 Bluetooth + +usb:v413Cp8161* + ID_MODEL_FROM_DATABASE=Integrated Keyboard + +usb:v413Cp8162* + ID_MODEL_FROM_DATABASE=Integrated Touchpad [Synaptics] + +usb:v413Cp8171* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem (QDL mode) + +usb:v413Cp8172* + ID_MODEL_FROM_DATABASE=Gobi Wireless Modem + +usb:v413Cp8183* + ID_MODEL_FROM_DATABASE=F3607gw Mobile Broadband Module + +usb:v413Cp8184* + ID_MODEL_FROM_DATABASE=F3607gw v2 Mobile Broadband Module + +usb:v413Cp8185* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem (QDL mode) + +usb:v413Cp8186* + ID_MODEL_FROM_DATABASE=Gobi 2000 Wireless Modem + +usb:v413Cp8187* + ID_MODEL_FROM_DATABASE=DW375 Bluetooth Module + +usb:v413Cp8501* + ID_MODEL_FROM_DATABASE=Bluetooth Adapter + +usb:v413Cp9500* + ID_MODEL_FROM_DATABASE=USB CP210x UART Bridge Controller [DW700] + +usb:v413CpA001* + ID_MODEL_FROM_DATABASE=Hub + +usb:v413CpA005* + ID_MODEL_FROM_DATABASE=Internal 2.0 Hub + +usb:v413CpA700* + ID_MODEL_FROM_DATABASE=Hub (in 1905FP LCD Monitor) + +usb:v4146* + ID_VENDOR_FROM_DATABASE=USBest Technology + +usb:v4146p9281* + ID_MODEL_FROM_DATABASE=Iomega Micro Mini 128MB Flash Drive + +usb:v4146pBA01* + ID_MODEL_FROM_DATABASE=Intuix Flash Drive + +usb:v4242* + ID_VENDOR_FROM_DATABASE=USB Design by Example + +usb:v4242p4201* + ID_MODEL_FROM_DATABASE=Buttons and Lights HID device + +usb:v4242p4220* + ID_MODEL_FROM_DATABASE=Echo 1 Camera + +usb:v4317* + ID_VENDOR_FROM_DATABASE=Broadcom Corp. + +usb:v4317p0700* + ID_MODEL_FROM_DATABASE=U.S. Robotics USR5426 802.11g Adapter + +usb:v4317p0701* + ID_MODEL_FROM_DATABASE=U.S. Robotics USR5425 Wireless MAXg Adapter + +usb:v4317p0711* + ID_MODEL_FROM_DATABASE=Belkin F5D7051 v3000 802.11g + +usb:v4317p0720* + ID_MODEL_FROM_DATABASE=Dynex DX-BUSB + +usb:v4348* + ID_VENDOR_FROM_DATABASE=WinChipHead + +usb:v4348p5523* + ID_MODEL_FROM_DATABASE=USB->RS 232 adapter with Prolifec PL 2303 chipset + +usb:v4348p5537* + ID_MODEL_FROM_DATABASE=13.56Mhz RFID Card Reader and Writer + +usb:v4348p5584* + ID_MODEL_FROM_DATABASE=CH34x printer adapter cable + +usb:v4572* + ID_VENDOR_FROM_DATABASE=Shuttle, Inc. + +usb:v4572p4572* + ID_MODEL_FROM_DATABASE=Shuttle PN31 Remote + +usb:v4586* + ID_VENDOR_FROM_DATABASE=Panram + +usb:v4586p1026* + ID_MODEL_FROM_DATABASE=Crystal Bar Flash Drive + +usb:v4670* + ID_VENDOR_FROM_DATABASE=EMS Production + +usb:v4670p9394* + ID_MODEL_FROM_DATABASE=Game Cube USB Memory Adaptor 64M + +usb:v4752* + ID_VENDOR_FROM_DATABASE=Miditech + +usb:v4752p0011* + ID_MODEL_FROM_DATABASE=Midistart-2 + +usb:v4757* + ID_VENDOR_FROM_DATABASE=GW Instek + +usb:v4757p2009* + ID_MODEL_FROM_DATABASE=PEL-2000 Series Electronic Load (CDC) + +usb:v4757p2010* + ID_MODEL_FROM_DATABASE=PEL-2000 Series Electronic Load (CDC) + +usb:v4766* + ID_VENDOR_FROM_DATABASE=Aceeca + +usb:v4766p0001* + ID_MODEL_FROM_DATABASE=MEZ1000 RDA + +usb:v4855* + ID_VENDOR_FROM_DATABASE=Memorex + +usb:v4855p7288* + ID_MODEL_FROM_DATABASE=Ultra Traveldrive 160G 2.5" HDD + +usb:v4971* + ID_VENDOR_FROM_DATABASE=SimpleTech + +usb:v4971pCB01* + ID_MODEL_FROM_DATABASE=SP-U25/120G + +usb:v4971pCE17* + ID_MODEL_FROM_DATABASE=1TB SimpleDrive II USB External Hard Drive + +usb:v4D46* + ID_VENDOR_FROM_DATABASE=Musical Fidelity + +usb:v4D46p0001* + ID_MODEL_FROM_DATABASE=V-Link + +usb:v4D46p0002* + ID_MODEL_FROM_DATABASE=V-DAC II + +usb:v5032* + ID_VENDOR_FROM_DATABASE=Grandtec + +usb:v5032p0BB8* + ID_MODEL_FROM_DATABASE=Grandtec USB1.1 DVB-T (cold) + +usb:v5032p0BB9* + ID_MODEL_FROM_DATABASE=Grandtec USB1.1 DVB-T (warm) + +usb:v5032p0FA0* + ID_MODEL_FROM_DATABASE=Grandtec USB1.1 DVB-T (cold) + +usb:v5032p0FA1* + ID_MODEL_FROM_DATABASE=Grandtec USB1.1 DVB-T (warm) + +usb:v5041* + ID_VENDOR_FROM_DATABASE=Linksys (?) + +usb:v5041p2234* + ID_MODEL_FROM_DATABASE=WUSB54G v1 802.11g Adapter [Intersil ISL3886] + +usb:v5041p2235* + ID_MODEL_FROM_DATABASE=WUSB54GP v1 802.11g Adapter [Intersil ISL3886] + +usb:v50C2* + ID_VENDOR_FROM_DATABASE=Averatec (?) + +usb:v50C2p4013* + ID_MODEL_FROM_DATABASE=WLAN Adapter + +usb:v5173* + ID_VENDOR_FROM_DATABASE=Sweex + +usb:v5173p1809* + ID_MODEL_FROM_DATABASE=ZD1211 + +usb:v5219* + ID_VENDOR_FROM_DATABASE=I-Tetra + +usb:v5219p1001* + ID_MODEL_FROM_DATABASE=Cetus CDC Device + +usb:v5345* + ID_VENDOR_FROM_DATABASE=Owon + +usb:v5345p1234* + ID_MODEL_FROM_DATABASE=PDS6062T Oscilloscope + +usb:v544D* + ID_VENDOR_FROM_DATABASE=Transmeta Corp. + +usb:v5543* + ID_VENDOR_FROM_DATABASE=UC-Logic Technology Corp. + +usb:v5543p0002* + ID_MODEL_FROM_DATABASE=SuperPen WP3325U Tablet + +usb:v5543p0003* + ID_MODEL_FROM_DATABASE=Tablet WP4030U + +usb:v5543p0004* + ID_MODEL_FROM_DATABASE=Tablet WP5540U + +usb:v5543p0005* + ID_MODEL_FROM_DATABASE=Tablet WP8060U + +usb:v5543p0041* + ID_MODEL_FROM_DATABASE=Genius PenSketch 6x8 Tablet + +usb:v5543p0042* + ID_MODEL_FROM_DATABASE=Tablet PF1209 + +usb:v5543p0064* + ID_MODEL_FROM_DATABASE=Aiptek HyperPen 10000U + +usb:v5555* + ID_VENDOR_FROM_DATABASE=Epiphan Systems Inc. + +usb:v5555p1110* + ID_MODEL_FROM_DATABASE=VGA2USB + +usb:v5555p1120* + ID_MODEL_FROM_DATABASE=KVM2USB + +usb:v5555p2222* + ID_MODEL_FROM_DATABASE=DVI2USB + +usb:v5555p3333* + ID_MODEL_FROM_DATABASE=VGA2USB Pro + +usb:v5555p3337* + ID_MODEL_FROM_DATABASE=KVM2USB Pro + +usb:v5555p3340* + ID_MODEL_FROM_DATABASE=VGA2USB LR + +usb:v5555p3344* + ID_MODEL_FROM_DATABASE=KVM2USB LR + +usb:v5555p3411* + ID_MODEL_FROM_DATABASE=DVI2USB Solo + +usb:v5555p3422* + ID_MODEL_FROM_DATABASE=DVI2USB Duo + +usb:v55AA* + ID_VENDOR_FROM_DATABASE=OnSpec Electronic, Inc. + +usb:v55AAp0015* + ID_MODEL_FROM_DATABASE=Hard Drive + +usb:v55AAp0102* + ID_MODEL_FROM_DATABASE=SuperDisk + +usb:v55AAp0103* + ID_MODEL_FROM_DATABASE=IDE Hard Drive + +usb:v55AAp0201* + ID_MODEL_FROM_DATABASE=DDI to Reader-19 + +usb:v55AAp1234* + ID_MODEL_FROM_DATABASE=ATAPI Bridge + +usb:v55AApA103* + ID_MODEL_FROM_DATABASE=Sandisk SDDR-55 SmartMedia Card Reader + +usb:v55AApB000* + ID_MODEL_FROM_DATABASE=USB to CompactFlash Card Reader + +usb:v55AApB004* + ID_MODEL_FROM_DATABASE=OnSpec MMC/SD Reader/Writer + +usb:v55AApB00B* + ID_MODEL_FROM_DATABASE=USB to Memory Stick Card Reader + +usb:v55AApB00C* + ID_MODEL_FROM_DATABASE=USB to SmartMedia Card Reader + +usb:v55AApB012* + ID_MODEL_FROM_DATABASE=Mitsumi FA402M 8-in-2 Card Reader + +usb:v55AApB200* + ID_MODEL_FROM_DATABASE=Compact Flash Reader + +usb:v55AApB204* + ID_MODEL_FROM_DATABASE=MMC/ SD Reader + +usb:v55AApB207* + ID_MODEL_FROM_DATABASE=Memory Stick Reader + +usb:v5656* + ID_VENDOR_FROM_DATABASE=Uni-Trend Group Limited + +usb:v5656p0832* + ID_MODEL_FROM_DATABASE=UT2000/UT3000 Digital Storage Oscilloscope + +usb:v595A* + ID_VENDOR_FROM_DATABASE=IRTOUCHSYSTEMS Co. Ltd. + +usb:v595Ap0001* + ID_MODEL_FROM_DATABASE=Touchscreen + +usb:v5986* + ID_VENDOR_FROM_DATABASE=Acer, Inc + +usb:v5986p0100* + ID_MODEL_FROM_DATABASE=Orbicam + +usb:v5986p0101* + ID_MODEL_FROM_DATABASE=USB2.0 Camera + +usb:v5986p0102* + ID_MODEL_FROM_DATABASE=Crystal Eye Webcam + +usb:v5986p01A6* + ID_MODEL_FROM_DATABASE=Lenovo Integrated Webcam + +usb:v5986p01A7* + ID_MODEL_FROM_DATABASE=Lenovo Integrated Webcam + +usb:v5986p01A9* + ID_MODEL_FROM_DATABASE=Lenovo Integrated Webcam + +usb:v5986p0200* + ID_MODEL_FROM_DATABASE=OrbiCam + +usb:v5986p0203* + ID_MODEL_FROM_DATABASE=BisonCam NB Pro 1300 + +usb:v5986p0241* + ID_MODEL_FROM_DATABASE=BisonCam, NB Pro + +usb:v5986p02D0* + ID_MODEL_FROM_DATABASE=Lenovo Integrated Webcam [R5U877] + +usb:v5986p03D0* + ID_MODEL_FROM_DATABASE=Lenovo Integrated Webcam [R5U877] + +usb:v5A57* + ID_VENDOR_FROM_DATABASE=Zinwell + +usb:v5A57p0260* + ID_MODEL_FROM_DATABASE=RT2570 + +usb:v5A57p0280* + ID_MODEL_FROM_DATABASE=802.11a/b/g/n USB Wireless LAN Card + +usb:v5A57p0282* + ID_MODEL_FROM_DATABASE=802.11b/g/n USB Wireless LAN Card + +usb:v5A57p0283* + ID_MODEL_FROM_DATABASE=802.11b/g/n USB Wireless LAN Card + +usb:v5A57p0284* + ID_MODEL_FROM_DATABASE=802.11a/b/g/n USB Wireless LAN Card + +usb:v5A57p0290* + ID_MODEL_FROM_DATABASE=ZW-N290 802.11n [Realtek RTL8192SU] + +usb:v5A57p5257* + ID_MODEL_FROM_DATABASE=Metronic 495257 wifi 802.11ng + +usb:v6000* + ID_VENDOR_FROM_DATABASE=Beholder International Ltd. + +usb:v6000pDEC0* + ID_MODEL_FROM_DATABASE=TV Wander + +usb:v6000pDEC1* + ID_MODEL_FROM_DATABASE=TV Voyage + +usb:v601A* + ID_VENDOR_FROM_DATABASE=Ingenic Semiconductor Ltd. + +usb:v601Ap4740* + ID_MODEL_FROM_DATABASE=XBurst Jz4740 boot mode + +usb:v6189* + ID_VENDOR_FROM_DATABASE=Sitecom + +usb:v6189p182D* + ID_MODEL_FROM_DATABASE=USB 2.0 Ethernet + +usb:v6189p2068* + ID_MODEL_FROM_DATABASE=USB to serial cable (v2) + +usb:v6253* + ID_VENDOR_FROM_DATABASE=TwinHan Technology Co., Ltd + +usb:v6253p0100* + ID_MODEL_FROM_DATABASE=Ir reciver f. remote control + +usb:v636C* + ID_VENDOR_FROM_DATABASE=CoreLogic, Inc. + +usb:v6472* + ID_VENDOR_FROM_DATABASE=Unknown (Sony?) + +usb:v6472p01C8* + ID_MODEL_FROM_DATABASE=PlayStation Portable [Mass Storage] + +usb:v6547* + ID_VENDOR_FROM_DATABASE=Arkmicro Technologies Inc. + +usb:v6547p0232* + ID_MODEL_FROM_DATABASE=ARK3116 Serial + +usb:v6615* + ID_VENDOR_FROM_DATABASE=IRTOUCHSYSTEMS Co. Ltd. + +usb:v6615p0001* + ID_MODEL_FROM_DATABASE=Touchscreen + +usb:v6666* + ID_VENDOR_FROM_DATABASE=Prototype product Vendor ID + +usb:v6666p0667* + ID_MODEL_FROM_DATABASE=WiseGroup Smart Joy PSX, PS-PC Smart JoyPad + +usb:v6666p2667* + ID_MODEL_FROM_DATABASE=JCOP BlueZ Smartcard reader + +usb:v6666p8802* + ID_MODEL_FROM_DATABASE=SmartJoy Dual Plus PS2 converter + +usb:v6666p8804* + ID_MODEL_FROM_DATABASE=WiseGroup SuperJoy Box 5 + +usb:v6677* + ID_VENDOR_FROM_DATABASE=WiseGroup, Ltd. + +usb:v6677p8802* + ID_MODEL_FROM_DATABASE=SmartJoy Dual Plus PS2 converter + +usb:v6677p8811* + ID_MODEL_FROM_DATABASE=Deluxe Dance Mat + +usb:v6891* + ID_VENDOR_FROM_DATABASE=3Com + +usb:v6891pA727* + ID_MODEL_FROM_DATABASE=3CRUSB10075 802.11bg [ZyDAS ZD1211] + +usb:v695C* + ID_VENDOR_FROM_DATABASE=Opera1 + +usb:v695Cp3829* + ID_MODEL_FROM_DATABASE=Opera1 DVB-S (warm state) + +usb:v6993* + ID_VENDOR_FROM_DATABASE=Yealink Network Technology Co., Ltd. + +usb:v6993pB001* + ID_MODEL_FROM_DATABASE=VoIP Phone + +usb:v6A75* + ID_VENDOR_FROM_DATABASE=Shanghai Jujo Electronics Co., Ltd + +usb:v7104* + ID_VENDOR_FROM_DATABASE=CME (Central Music Co.) + +usb:v7104p2202* + ID_MODEL_FROM_DATABASE=UF5/UF6/UF7/UF8 MIDI Master Keyboard + +usb:v726C* + ID_VENDOR_FROM_DATABASE=StackFoundry LLC + +usb:v726Cp2149* + ID_MODEL_FROM_DATABASE=EntropyKing Random Number Generator + +usb:v734C* + ID_VENDOR_FROM_DATABASE=TBS Technologies China + +usb:v734Cp5920* + ID_MODEL_FROM_DATABASE=Q-Box II DVB-S2 HD + +usb:v734Cp5928* + ID_MODEL_FROM_DATABASE=Q-Box II DVB-S2 HD + +usb:v7392* + ID_VENDOR_FROM_DATABASE=Edimax Technology Co., Ltd + +usb:v7392p7711* + ID_MODEL_FROM_DATABASE=EW-7711UTn nLite Wireless Adapter [Ralink RT2870] + +usb:v7392p7717* + ID_MODEL_FROM_DATABASE=EW-7717UN 802.11n Wireless Adapter [Ralink RT2870] + +usb:v7392p7718* + ID_MODEL_FROM_DATABASE=EW-7718UN 802.11n Wireless Adapter [Ralink RT2870] + +usb:v7392p7722* + ID_MODEL_FROM_DATABASE=EW-7722UTn 802.11n Wireless Adapter [Ralink RT307x] + +usb:v7392p7811* + ID_MODEL_FROM_DATABASE=EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS] + +usb:v8086* + ID_VENDOR_FROM_DATABASE=Intel Corp. + +usb:v8086p0001* + ID_MODEL_FROM_DATABASE=AnyPoint (TM) Home Network 1.6 Mbps Wireless Adapter + +usb:v8086p0044* + ID_MODEL_FROM_DATABASE=CPU DRAM Controller + +usb:v8086p0046* + ID_MODEL_FROM_DATABASE=HD Graphics + +usb:v8086p0100* + ID_MODEL_FROM_DATABASE=Personal Audio Player 3000 + +usb:v8086p0101* + ID_MODEL_FROM_DATABASE=Personal Audio Player 3000 + +usb:v8086p0110* + ID_MODEL_FROM_DATABASE=Easy PC Camera + +usb:v8086p0120* + ID_MODEL_FROM_DATABASE=PC Camera CS120 + +usb:v8086p0180* + ID_MODEL_FROM_DATABASE=WiMAX Connection 2400m + +usb:v8086p0181* + ID_MODEL_FROM_DATABASE=WiMAX Connection 2400m + +usb:v8086p0182* + ID_MODEL_FROM_DATABASE=WiMAX Connection 2400m + +usb:v8086p0186* + ID_MODEL_FROM_DATABASE=WiMAX Connection 2400m + +usb:v8086p0188* + ID_MODEL_FROM_DATABASE=WiMAX Connection 2400m + +usb:v8086p0200* + ID_MODEL_FROM_DATABASE=AnyPoint(TM) Wireless II Network 11Mbps Adapter [Atmel AT76C503A] + +usb:v8086p0431* + ID_MODEL_FROM_DATABASE=Intel Pro Video PC Camera + +usb:v8086p0510* + ID_MODEL_FROM_DATABASE=Digital Movie Creator + +usb:v8086p0630* + ID_MODEL_FROM_DATABASE=Pocket PC Camera + +usb:v8086p0780* + ID_MODEL_FROM_DATABASE=CS780 Microphone Input + +usb:v8086p07D3* + ID_MODEL_FROM_DATABASE=BLOB boot loader firmware + +usb:v8086p0DAD* + ID_MODEL_FROM_DATABASE=Cherry MiniatureCard Keyboard + +usb:v8086p1010* + ID_MODEL_FROM_DATABASE=AnyPoint(TM) Home Network 10 Mbps Phoneline Adapter + +usb:v8086p110A* + ID_MODEL_FROM_DATABASE=Bluetooth Controller from (Ericsson P4A) + +usb:v8086p110B* + ID_MODEL_FROM_DATABASE=Bluetooth Controller from (Intel/CSR) + +usb:v8086p1110* + ID_MODEL_FROM_DATABASE=PRO/Wireless LAN Module + +usb:v8086p1111* + ID_MODEL_FROM_DATABASE=PRO/Wireless 2011B 802.11b Adapter [Intersil PRISM 2.5] + +usb:v8086p1134* + ID_MODEL_FROM_DATABASE=Hollister Mobile Monitor + +usb:v8086p1139* + ID_MODEL_FROM_DATABASE=In-Target Probe (ITP) + +usb:v8086p1234* + ID_MODEL_FROM_DATABASE=Prototype Reader/Writer + +usb:v8086p1403* + ID_MODEL_FROM_DATABASE=WiMAX Connection 2400m + +usb:v8086p1405* + ID_MODEL_FROM_DATABASE=WiMAX Connection 2400m + +usb:v8086p1406* + ID_MODEL_FROM_DATABASE=WiMAX Connection 2400m + +usb:v8086p2448* + ID_MODEL_FROM_DATABASE=82801 PCI Bridge + +usb:v8086p3100* + ID_MODEL_FROM_DATABASE=PRO/DSL 3220 Modem - WAN + +usb:v8086p3101* + ID_MODEL_FROM_DATABASE=PRO/DSL 3220 Modem + +usb:v8086p3240* + ID_MODEL_FROM_DATABASE=AnyPoint® 3240 Modem - WAN + +usb:v8086p3241* + ID_MODEL_FROM_DATABASE=AnyPoint® 3240 Modem + +usb:v8086p8602* + ID_MODEL_FROM_DATABASE=Miniature Card Slot + +usb:v8086p9303* + ID_MODEL_FROM_DATABASE=Intel 8x930Hx Hub + +usb:v8086p9500* + ID_MODEL_FROM_DATABASE=CE 9500 DVB-T + +usb:v8086p9890* + ID_MODEL_FROM_DATABASE=82930 Test Board + +usb:v8086pBEEF* + ID_MODEL_FROM_DATABASE=SCM Miniature Card Reader/Writer + +usb:v8086pC013* + ID_MODEL_FROM_DATABASE=Wireless HID Station + +usb:v8086pF001* + ID_MODEL_FROM_DATABASE=XScale PXA27x Bulverde flash + +usb:v8086pF1A5* + ID_MODEL_FROM_DATABASE=Z-U130 [Value Solid State Drive] + +usb:v8087* + ID_VENDOR_FROM_DATABASE=Intel Corp. + +usb:v8087p0020* + ID_MODEL_FROM_DATABASE=Integrated Rate Matching Hub + +usb:v8087p0024* + ID_MODEL_FROM_DATABASE=Integrated Rate Matching Hub + +usb:v80EE* + ID_VENDOR_FROM_DATABASE=VirtualBox + +usb:v80EEp0021* + ID_MODEL_FROM_DATABASE=USB Tablet + +usb:v8282* + ID_VENDOR_FROM_DATABASE=Keio + +usb:v8282p3201* + ID_MODEL_FROM_DATABASE=Retro Adapter + +usb:v8282p3301* + ID_MODEL_FROM_DATABASE=Retro Adapter Mouse + +usb:v8341* + ID_VENDOR_FROM_DATABASE=EGO Systems, Inc. + +usb:v8341p2000* + ID_MODEL_FROM_DATABASE=Flashdisk + +usb:v9016* + ID_VENDOR_FROM_DATABASE=Sitecom + +usb:v9016p182D* + ID_MODEL_FROM_DATABASE=WL-022 802.11b Adapter + +usb:v9022* + ID_VENDOR_FROM_DATABASE=TeVii Technology Ltd. + +usb:v9022pD630* + ID_MODEL_FROM_DATABASE=DVB-S S630 + +usb:v9022pD650* + ID_MODEL_FROM_DATABASE=DVB-S2 S650 + +usb:v9022pD660* + ID_MODEL_FROM_DATABASE=DVB-S2 S660 + +usb:v9148* + ID_VENDOR_FROM_DATABASE=GeoLab, Ltd + +usb:v9148p0004* + ID_MODEL_FROM_DATABASE=R3 Compatible Device + +usb:v9710* + ID_VENDOR_FROM_DATABASE=MosChip Semiconductor + +usb:v9710p7703* + ID_MODEL_FROM_DATABASE=MCS7703 Serial Port Adapter + +usb:v9710p7705* + ID_MODEL_FROM_DATABASE=MCS7705 Parallel port adapter + +usb:v9710p7715* + ID_MODEL_FROM_DATABASE=MCS7715 Parallel and serial port adapter + +usb:v9710p7717* + ID_MODEL_FROM_DATABASE=MCS7717 3-port hub with serial and parallel adapter + +usb:v9710p7720* + ID_MODEL_FROM_DATABASE=MCS7720 Dual serial port adapter + +usb:v9710p7730* + ID_MODEL_FROM_DATABASE=MCS7730 10/100 Mbps Ethernet adapter + +usb:v9710p7780* + ID_MODEL_FROM_DATABASE=MCS7780 4Mbps Fast IrDA Adapter + +usb:v9710p7830* + ID_MODEL_FROM_DATABASE=MCS7830 10/100 Mbps Ethernet adapter + +usb:v9710p7832* + ID_MODEL_FROM_DATABASE=MCS7832 10/100 Mbps Ethernet adapter + +usb:v9710p7840* + ID_MODEL_FROM_DATABASE=MCS7820/MCS7840 2/4 port serial adapter + +usb:v99FA* + ID_VENDOR_FROM_DATABASE=Grandtec + +usb:v99FAp8988* + ID_MODEL_FROM_DATABASE=V.cap Camera Device + +usb:v9AC4* + ID_VENDOR_FROM_DATABASE=J. Westhues + +usb:v9AC4p4B8F* + ID_MODEL_FROM_DATABASE=ProxMark-3 RFID Instrument + +usb:vA128* + ID_VENDOR_FROM_DATABASE=AnMo Electronics Corp. / Dino-Lite (?) + +usb:vA128p0610* + ID_MODEL_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C201 + HV7131R) + +usb:vA128p0611* + ID_MODEL_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C201 + HV7131R) + +usb:vA128p0612* + ID_MODEL_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C120 + HV7131R) + +usb:vA128p0613* + ID_MODEL_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C201 + HV7131R) + +usb:vA128p0614* + ID_MODEL_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) + +usb:vA128p0615* + ID_MODEL_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) + +usb:vA128p0616* + ID_MODEL_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C120 + HV7131R) + +usb:vA128p0617* + ID_MODEL_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) + +usb:vA128p0618* + ID_MODEL_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C201 + HV7131R) + +usb:vA168* + ID_VENDOR_FROM_DATABASE=AnMo Electronics Corporation + +usb:vA168p0610* + ID_MODEL_FROM_DATABASE=Dino-Lite Digital Microscope + +usb:vA168p0611* + ID_MODEL_FROM_DATABASE=Dino-Lite Digital Microscope + +usb:vA168p0613* + ID_MODEL_FROM_DATABASE=Dino-Lite Digital Microscope + +usb:vA168p0614* + ID_MODEL_FROM_DATABASE=Dino-Lite Pro Digital Microscope + +usb:vA168p0615* + ID_MODEL_FROM_DATABASE=Dino-Lite Pro Digital Microscope + +usb:vA168p0617* + ID_MODEL_FROM_DATABASE=Dino-Lite Pro Digital Microscope + +usb:vA168p0618* + ID_MODEL_FROM_DATABASE=Dino-Lite Digital Microscope + +usb:vA600* + ID_VENDOR_FROM_DATABASE=Asix + +usb:vA600pE110* + ID_MODEL_FROM_DATABASE=OK1ZIA Davac 4.x + +usb:vA727* + ID_VENDOR_FROM_DATABASE=3Com + +usb:vA727p6893* + ID_MODEL_FROM_DATABASE=3CRUSB20075 OfficeConnect Wireless 108Mbps 11g Adapter [Atheros AR5523] + +usb:vA727p6895* + ID_MODEL_FROM_DATABASE=AR5523 + +usb:vA727p6897* + ID_MODEL_FROM_DATABASE=AR5523 + +usb:vABCD* + ID_VENDOR_FROM_DATABASE=Unknown + +usb:vABCDpCDEE* + ID_MODEL_FROM_DATABASE=Petcam + +usb:vC251* + ID_VENDOR_FROM_DATABASE=Keil Software, Inc. + +usb:vC251p2710* + ID_MODEL_FROM_DATABASE=ULink + +usb:vCACE* + ID_VENDOR_FROM_DATABASE=CACE Technologies Inc. + +usb:vCACEp0002* + ID_MODEL_FROM_DATABASE=AirPCAP Classic 802.11 packet capture adapter + +usb:vCACEp0300* + ID_MODEL_FROM_DATABASE=AirPcap NX [Atheros AR9001U-(2)NG] + +usb:vD209* + ID_VENDOR_FROM_DATABASE=Ultimarc + +usb:vD209p0301* + ID_MODEL_FROM_DATABASE=I-PAC Arcade Control Interface + +usb:vD209p0501* + ID_MODEL_FROM_DATABASE=Ultra-Stik Ultimarc Ultra-Stik Player 1 + +usb:vE4E4* + ID_VENDOR_FROM_DATABASE=Xorcom Ltd. + +usb:vE4E4p1130* + ID_MODEL_FROM_DATABASE=Astribank series + +usb:vE4E4p1131* + ID_MODEL_FROM_DATABASE=Astribank series + +usb:vE4E4p1132* + ID_MODEL_FROM_DATABASE=Astribank series + +usb:vE4E4p1140* + ID_MODEL_FROM_DATABASE=Astribank series + +usb:vE4E4p1141* + ID_MODEL_FROM_DATABASE=Astribank series + +usb:vE4E4p1142* + ID_MODEL_FROM_DATABASE=Astribank series + +usb:vE4E4p1150* + ID_MODEL_FROM_DATABASE=Astribank series + +usb:vE4E4p1151* + ID_MODEL_FROM_DATABASE=Astribank series + +usb:vE4E4p1152* + ID_MODEL_FROM_DATABASE=Astribank series + +usb:vE4E4p1160* + ID_MODEL_FROM_DATABASE=Astribank 2 series + +usb:vE4E4p1161* + ID_MODEL_FROM_DATABASE=Astribank 2 series + +usb:vE4E4p1162* + ID_MODEL_FROM_DATABASE=Astribank 2 series + +usb:vEB03* + ID_VENDOR_FROM_DATABASE=MakingThings + +usb:vEB03p0920* + ID_MODEL_FROM_DATABASE=Make Controller Kit + +usb:vEB1A* + ID_VENDOR_FROM_DATABASE=eMPIA Technology, Inc. + +usb:vEB1Ap17DE* + ID_MODEL_FROM_DATABASE=KWorld V-Stream XPERT DTV - DVB-T USB cold + +usb:vEB1Ap17DF* + ID_MODEL_FROM_DATABASE=KWorld V-Stream XPERT DTV - DVB-T USB warm + +usb:vEB1Ap2571* + ID_MODEL_FROM_DATABASE=M035 Compact Web Cam + +usb:vEB1Ap2710* + ID_MODEL_FROM_DATABASE=SilverCrest Webcam + +usb:vEB1Ap2750* + ID_MODEL_FROM_DATABASE=ECS Elitegroup G220 integrated Webcam + +usb:vEB1Ap2761* + ID_MODEL_FROM_DATABASE=EeePC 701 integrated Webcam + +usb:vEB1Ap2776* + ID_MODEL_FROM_DATABASE=Combined audio and video input device + +usb:vEB1Ap2800* + ID_MODEL_FROM_DATABASE=Terratec Cinergy 200 + +usb:vEB1Ap2801* + ID_MODEL_FROM_DATABASE=GrabBeeX+ Video Encoder + +usb:vEB1Ap2863* + ID_MODEL_FROM_DATABASE=Video Grabber + +usb:vEB1Ap2870* + ID_MODEL_FROM_DATABASE=Pinnacle PCTV Stick + +usb:vEB1Ap2881* + ID_MODEL_FROM_DATABASE=EM2881 Video Controller + +usb:vEB1Ap50A3* + ID_MODEL_FROM_DATABASE=Gadmei UTV380 TV Box + +usb:vEB1Ap50A6* + ID_MODEL_FROM_DATABASE=Gadmei UTV330 TV Box + +usb:vEB1ApE355* + ID_MODEL_FROM_DATABASE=KWorld DVB-T 355U Digital TV Dongle + +usb:vEB2A* + ID_VENDOR_FROM_DATABASE=KWorld + +usb:vF003* + ID_VENDOR_FROM_DATABASE=Hewlett Packard + +usb:vF003p6002* + ID_MODEL_FROM_DATABASE=PhotoSmart C500 + +usb:vF4EC* + ID_VENDOR_FROM_DATABASE=Atten Electronics / Siglent Technologies + +usb:vF4ECpEE38* + ID_MODEL_FROM_DATABASE=Digital Storage Oscilloscope diff --git a/hwdb/20-usb-vendor-product.hwdb b/hwdb/20-usb-vendor-product.hwdb deleted file mode 100644 index ad29a762d9..0000000000 --- a/hwdb/20-usb-vendor-product.hwdb +++ /dev/null @@ -1,49014 +0,0 @@ -# This file is part of systemd. -# -# Data imported from: http://www.linux-usb.org/usb.ids - -usb:v0001* - ID_VENDOR_FROM_DATABASE=Fry's Electronics - -usb:v0001p142B* - ID_PRODUCT_FROM_DATABASE=Arbiter Systems, Inc. - -usb:v0001p7778* - ID_PRODUCT_FROM_DATABASE=Counterfeit flash drive [Kingston] - -usb:v0002* - ID_VENDOR_FROM_DATABASE=Ingram - -usb:v0003* - ID_VENDOR_FROM_DATABASE=Club Mac - -usb:v0004* - ID_VENDOR_FROM_DATABASE=Nebraska Furniture Mart - -usb:v0053* - ID_VENDOR_FROM_DATABASE=Planex - -usb:v0053p5301* - ID_PRODUCT_FROM_DATABASE=GW-US54ZGL 802.11bg - -usb:v0079* - ID_VENDOR_FROM_DATABASE=DragonRise Inc. - -usb:v0079p0006* - ID_PRODUCT_FROM_DATABASE=Generic USB Joystick - -usb:v0079p0011* - ID_PRODUCT_FROM_DATABASE=Gamepad - -usb:v0105* - ID_VENDOR_FROM_DATABASE=Trust International B.V. - -usb:v0105p145F* - ID_PRODUCT_FROM_DATABASE=NW-3100 802.11b/g 54Mbps Wireless Network Adapter [zd1211] - -usb:v0145* - ID_VENDOR_FROM_DATABASE=Unknown - -usb:v0145p0112* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v017C* - ID_VENDOR_FROM_DATABASE=MLK - -usb:v017Cp145F* - ID_PRODUCT_FROM_DATABASE=Trust Deskset - -usb:v0204* - ID_VENDOR_FROM_DATABASE=Chipsbank Microelectronics Co., Ltd - -usb:v0204p6025* - ID_PRODUCT_FROM_DATABASE=CBM2080 Flash drive controller - -usb:v0204p6026* - ID_PRODUCT_FROM_DATABASE=CBM1180 Flash drive controller - -usb:v0218* - ID_VENDOR_FROM_DATABASE=Hangzhou Worlde - -usb:v0218p0301* - ID_PRODUCT_FROM_DATABASE=MIDI Port - -usb:v02AD* - ID_VENDOR_FROM_DATABASE=HUMAX Co., Ltd. - -usb:v02ADp138C* - ID_PRODUCT_FROM_DATABASE=PVR Mass Storage - -usb:v0300* - ID_VENDOR_FROM_DATABASE=MM300 eBook Reader - -usb:v0324* - ID_VENDOR_FROM_DATABASE=OCZ Technology Inc - -usb:v0324pBC06* - ID_PRODUCT_FROM_DATABASE=OCZ ATV USB 2.0 Flash Drive - -usb:v0324pBC08* - ID_PRODUCT_FROM_DATABASE=OCZ Rally2/ATV USB 2.0 Flash Drive - -usb:v0325* - ID_VENDOR_FROM_DATABASE=OCZ Technology Inc - -usb:v0325pAC02* - ID_PRODUCT_FROM_DATABASE=ATV Turbo / Rally2 Dual Channel USB 2.0 Flash Drive - -usb:v0386* - ID_VENDOR_FROM_DATABASE=LTS - -usb:v0386p0001* - ID_PRODUCT_FROM_DATABASE=PSX for USB Converter - -usb:v03D9* - ID_VENDOR_FROM_DATABASE=Shenzhen Sinote Tech-Electron Co., Ltd - -usb:v03D9p0499* - ID_PRODUCT_FROM_DATABASE=SE340D PC Remote Control - -usb:v03DA* - ID_VENDOR_FROM_DATABASE=Bernd Walter Computer Technology - -usb:v03DAp0002* - ID_PRODUCT_FROM_DATABASE=HD44780 LCD interface - -usb:v03E8* - ID_VENDOR_FROM_DATABASE=EndPoints, Inc. - -usb:v03E8p0004* - ID_PRODUCT_FROM_DATABASE=SE401 Webcam - -usb:v03E8p0008* - ID_PRODUCT_FROM_DATABASE=101 Ethernet [klsi] - -usb:v03E8p0015* - ID_PRODUCT_FROM_DATABASE=ATAPI Enclosure - -usb:v03E8p2123* - ID_PRODUCT_FROM_DATABASE=SiPix StyleCam Deluxe - -usb:v03E8p8004* - ID_PRODUCT_FROM_DATABASE=Aox 99001 - -usb:v03E9* - ID_VENDOR_FROM_DATABASE=Thesys Microelectronics - -usb:v03EA* - ID_VENDOR_FROM_DATABASE=Data Broadcasting Corp. - -usb:v03EB* - ID_VENDOR_FROM_DATABASE=Atmel Corp. - -usb:v03EBp0902* - ID_PRODUCT_FROM_DATABASE=4-Port Hub - -usb:v03EBp2002* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v03EBp2015* - ID_PRODUCT_FROM_DATABASE=at90usbkey sample firmware (HID keyboard) - -usb:v03EBp2018* - ID_PRODUCT_FROM_DATABASE=at90usbkey sample firmware (CDC ACM) - -usb:v03EBp2019* - ID_PRODUCT_FROM_DATABASE=stk525 sample firmware (microphone) - -usb:v03EBp201C* - ID_PRODUCT_FROM_DATABASE=at90usbkey sample firmware (HID mouse) - -usb:v03EBp201D* - ID_PRODUCT_FROM_DATABASE=at90usbkey sample firmware (HID generic) - -usb:v03EBp2022* - ID_PRODUCT_FROM_DATABASE=at90usbkey sample firmware (composite device) - -usb:v03EBp2040* - ID_PRODUCT_FROM_DATABASE=LUFA Test PID - -usb:v03EBp2041* - ID_PRODUCT_FROM_DATABASE=LUFA Mouse Demo Application - -usb:v03EBp2042* - ID_PRODUCT_FROM_DATABASE=LUFA Keyboard Demo Application - -usb:v03EBp2043* - ID_PRODUCT_FROM_DATABASE=LUFA Joystick Demo Application - -usb:v03EBp2044* - ID_PRODUCT_FROM_DATABASE=LUFA CDC Demo Application - -usb:v03EBp2045* - ID_PRODUCT_FROM_DATABASE=LUFA Mass Storage Demo Application - -usb:v03EBp2046* - ID_PRODUCT_FROM_DATABASE=LUFA Audio Output Demo Application - -usb:v03EBp2047* - ID_PRODUCT_FROM_DATABASE=LUFA Audio Input Demo Application - -usb:v03EBp2048* - ID_PRODUCT_FROM_DATABASE=LUFA MIDI Demo Application - -usb:v03EBp2049* - ID_PRODUCT_FROM_DATABASE=Stripe Snoop Magnetic Stripe Reader - -usb:v03EBp204A* - ID_PRODUCT_FROM_DATABASE=LUFA CDC Class Bootloader - -usb:v03EBp204B* - ID_PRODUCT_FROM_DATABASE=LUFA USB to Serial Adapter Project - -usb:v03EBp204C* - ID_PRODUCT_FROM_DATABASE=LUFA RNDIS Demo Application - -usb:v03EBp204D* - ID_PRODUCT_FROM_DATABASE=LUFA Combined Mouse and Keyboard Demo Application - -usb:v03EBp204E* - ID_PRODUCT_FROM_DATABASE=LUFA Dual CDC Demo Application - -usb:v03EBp204F* - ID_PRODUCT_FROM_DATABASE=LUFA Generic HID Demo Application - -usb:v03EBp2060* - ID_PRODUCT_FROM_DATABASE=Benito Programmer Project - -usb:v03EBp2061* - ID_PRODUCT_FROM_DATABASE=LUFA Combined Mass Storage and Keyboard Demo Application - -usb:v03EBp2062* - ID_PRODUCT_FROM_DATABASE=LUFA Combined CDC and Mouse Demo Application - -usb:v03EBp2063* - ID_PRODUCT_FROM_DATABASE=LUFA Datalogger Device - -usb:v03EBp2064* - ID_PRODUCT_FROM_DATABASE=Interfaceless Control-Only LUFA Devices - -usb:v03EBp2065* - ID_PRODUCT_FROM_DATABASE=LUFA Test and Measurement Demo Application - -usb:v03EBp2066* - ID_PRODUCT_FROM_DATABASE=LUFA Multiple Report HID Demo - -usb:v03EBp2068* - ID_PRODUCT_FROM_DATABASE=LUFA Virtual Serial/Mass Storage Demo - -usb:v03EBp2069* - ID_PRODUCT_FROM_DATABASE=LUFA Webserver Project - -usb:v03EBp2103* - ID_PRODUCT_FROM_DATABASE=JTAG ICE mkII - -usb:v03EBp2104* - ID_PRODUCT_FROM_DATABASE=AVR ISP mkII - -usb:v03EBp2105* - ID_PRODUCT_FROM_DATABASE=AVRONE! - -usb:v03EBp2106* - ID_PRODUCT_FROM_DATABASE=STK600 development board - -usb:v03EBp2107* - ID_PRODUCT_FROM_DATABASE=AVR Dragon - -usb:v03EBp2109* - ID_PRODUCT_FROM_DATABASE=STK541 ZigBee Development Board - -usb:v03EBp210D* - ID_PRODUCT_FROM_DATABASE=XPLAIN evaluation kit (CDC ACM) - -usb:v03EBp2122* - ID_PRODUCT_FROM_DATABASE=XMEGA-A1 Explained evaluation kit - -usb:v03EBp2310* - ID_PRODUCT_FROM_DATABASE=EVK11xx evaluation board - -usb:v03EBp2FE4* - ID_PRODUCT_FROM_DATABASE=ATxmega32A4U DFU bootloader - -usb:v03EBp2FFB* - ID_PRODUCT_FROM_DATABASE=at90usb AVR DFU bootloader - -usb:v03EBp2FFD* - ID_PRODUCT_FROM_DATABASE=at89c5130/c5131 DFU bootloader - -usb:v03EBp2FFF* - ID_PRODUCT_FROM_DATABASE=at89c5132/c51snd1c DFU bootloader - -usb:v03EBp3301* - ID_PRODUCT_FROM_DATABASE=at43301 4-Port Hub - -usb:v03EBp3312* - ID_PRODUCT_FROM_DATABASE=4-Port Hub - -usb:v03EBp4102* - ID_PRODUCT_FROM_DATABASE=AirVast W-Buddie WN210 - -usb:v03EBp5601* - ID_PRODUCT_FROM_DATABASE=at76c510 Prism-II 802.11b Access Point - -usb:v03EBp5603* - ID_PRODUCT_FROM_DATABASE=Cisco 7920 WiFi IP Phone - -usb:v03EBp6119* - ID_PRODUCT_FROM_DATABASE=AT91SAM CDC Demo Application - -usb:v03EBp6124* - ID_PRODUCT_FROM_DATABASE=at91sam SAMBA bootloader - -usb:v03EBp6127* - ID_PRODUCT_FROM_DATABASE=AT91SAM HID Keyboard Demo Application - -usb:v03EBp6129* - ID_PRODUCT_FROM_DATABASE=AT91SAM Mass Storage Demo Application - -usb:v03EBp6200* - ID_PRODUCT_FROM_DATABASE=AT91SAM HID Mouse Demo Application - -usb:v03EBp7603* - ID_PRODUCT_FROM_DATABASE=D-Link DWL-120 802.11b Wireless Adapter [Atmel at76c503a] - -usb:v03EBp7604* - ID_PRODUCT_FROM_DATABASE=at76c503a 802.11b Adapter - -usb:v03EBp7605* - ID_PRODUCT_FROM_DATABASE=at76c503a 802.11b Adapter - -usb:v03EBp7606* - ID_PRODUCT_FROM_DATABASE=at76c505 802.11b Adapter - -usb:v03EBp7611* - ID_PRODUCT_FROM_DATABASE=at76c510 rfmd2948 802.11b Access Point - -usb:v03EBp7613* - ID_PRODUCT_FROM_DATABASE=WL-1130 USB - -usb:v03EBp7614* - ID_PRODUCT_FROM_DATABASE=AT76c505a Wireless Adapter - -usb:v03EBp7615* - ID_PRODUCT_FROM_DATABASE=AT76C505AMX Wireless Adapter - -usb:v03EBp7617* - ID_PRODUCT_FROM_DATABASE=AT76C505AS Wireless Adapter - -usb:v03EBp7800* - ID_PRODUCT_FROM_DATABASE=Mini Album - -usb:v03EBpFF07* - ID_PRODUCT_FROM_DATABASE=Tux Droid fish dongle - -usb:v03EC* - ID_VENDOR_FROM_DATABASE=Iwatsu America, Inc. - -usb:v03ED* - ID_VENDOR_FROM_DATABASE=Mitel Corp. - -usb:v03EE* - ID_VENDOR_FROM_DATABASE=Mitsumi - -usb:v03EEp0000* - ID_PRODUCT_FROM_DATABASE=CD-R/RW Drive - -usb:v03EEp2501* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v03EEp2502* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v03EEp5609* - ID_PRODUCT_FROM_DATABASE=Japanese Keyboard - -usb:v03EEp641F* - ID_PRODUCT_FROM_DATABASE=WIF-0402C Bluetooth Adapter - -usb:v03EEp6438* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v03EEp6440* - ID_PRODUCT_FROM_DATABASE=WML-C52APR Bluetooth Adapter - -usb:v03EEp6901* - ID_PRODUCT_FROM_DATABASE=SmartDisk FDD - -usb:v03EEp6902* - ID_PRODUCT_FROM_DATABASE=Floppy Disk Drive - -usb:v03EEp7500* - ID_PRODUCT_FROM_DATABASE=CD-R/RW - -usb:v03EEpFFFF* - ID_PRODUCT_FROM_DATABASE=Dongle with BlueCore in DFU mode - -usb:v03F0* - ID_VENDOR_FROM_DATABASE=Hewlett-Packard - -usb:v03F0p0004* - ID_PRODUCT_FROM_DATABASE=DeskJet 895c - -usb:v03F0p0011* - ID_PRODUCT_FROM_DATABASE=OfficeJet G55 - -usb:v03F0p0012* - ID_PRODUCT_FROM_DATABASE=DeskJet 1125C Printer Port - -usb:v03F0p0024* - ID_PRODUCT_FROM_DATABASE=KU-0316 Keyboard - -usb:v03F0p002A* - ID_PRODUCT_FROM_DATABASE=LaserJet P1102 - -usb:v03F0p0101* - ID_PRODUCT_FROM_DATABASE=ScanJet 4100c - -usb:v03F0p0102* - ID_PRODUCT_FROM_DATABASE=PhotoSmart S20 - -usb:v03F0p0104* - ID_PRODUCT_FROM_DATABASE=DeskJet 880c/970c - -usb:v03F0p0105* - ID_PRODUCT_FROM_DATABASE=ScanJet 4200c - -usb:v03F0p0107* - ID_PRODUCT_FROM_DATABASE=CD-Writer Plus - -usb:v03F0p010C* - ID_PRODUCT_FROM_DATABASE=Multimedia Keyboard Hub - -usb:v03F0p0111* - ID_PRODUCT_FROM_DATABASE=G55xi Printer/Scanner/Copier - -usb:v03F0p0117* - ID_PRODUCT_FROM_DATABASE=LaserJet 3200 - -usb:v03F0p011C* - ID_PRODUCT_FROM_DATABASE=hn210w 802.11b Adapter - -usb:v03F0p011D* - ID_PRODUCT_FROM_DATABASE=Bluetooth 1.2 Interface [Broadcom BCM2035] - -usb:v03F0p0121* - ID_PRODUCT_FROM_DATABASE=HP49g+ Calculator - -usb:v03F0p0122* - ID_PRODUCT_FROM_DATABASE=HID Internet Keyboard - -usb:v03F0p0201* - ID_PRODUCT_FROM_DATABASE=ScanJet 6200c - -usb:v03F0p0202* - ID_PRODUCT_FROM_DATABASE=PhotoSmart S20 - -usb:v03F0p0204* - ID_PRODUCT_FROM_DATABASE=DeskJet 815c - -usb:v03F0p0205* - ID_PRODUCT_FROM_DATABASE=ScanJet 3300c - -usb:v03F0p0207* - ID_PRODUCT_FROM_DATABASE=CD-Writer Plus 8200e - -usb:v03F0p020C* - ID_PRODUCT_FROM_DATABASE=Multimedia Keyboard - -usb:v03F0p0211* - ID_PRODUCT_FROM_DATABASE=OfficeJet G85 - -usb:v03F0p0212* - ID_PRODUCT_FROM_DATABASE=DeskJet 1220C - -usb:v03F0p0217* - ID_PRODUCT_FROM_DATABASE=LaserJet 2200 - -usb:v03F0p0218* - ID_PRODUCT_FROM_DATABASE=APOLLO P2500/2600 - -usb:v03F0p0304* - ID_PRODUCT_FROM_DATABASE=DeskJet 810c/812c - -usb:v03F0p0305* - ID_PRODUCT_FROM_DATABASE=ScanJet 4300c - -usb:v03F0p0307* - ID_PRODUCT_FROM_DATABASE=CD-Writer+ CD-4e - -usb:v03F0p0311* - ID_PRODUCT_FROM_DATABASE=OfficeJet G85xi - -usb:v03F0p0312* - ID_PRODUCT_FROM_DATABASE=Color Inkjet CP1700 - -usb:v03F0p0314* - ID_PRODUCT_FROM_DATABASE=designjet 30/130 series - -usb:v03F0p0317* - ID_PRODUCT_FROM_DATABASE=LaserJet 1200 - -usb:v03F0p0324* - ID_PRODUCT_FROM_DATABASE=SK-2885 keyboard - -usb:v03F0p0401* - ID_PRODUCT_FROM_DATABASE=ScanJet 5200c - -usb:v03F0p0404* - ID_PRODUCT_FROM_DATABASE=DeskJet 830c/832c - -usb:v03F0p0405* - ID_PRODUCT_FROM_DATABASE=ScanJet 3400cse - -usb:v03F0p0411* - ID_PRODUCT_FROM_DATABASE=OfficeJet G95 - -usb:v03F0p0412* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v03F0p0417* - ID_PRODUCT_FROM_DATABASE=LaserJet 1200 series - -usb:v03F0p0423* - ID_PRODUCT_FROM_DATABASE=HS-COMBO Cardreader - -usb:v03F0p0504* - ID_PRODUCT_FROM_DATABASE=DeskJet 885c - -usb:v03F0p0505* - ID_PRODUCT_FROM_DATABASE=ScanJet 2100c - -usb:v03F0p0507* - ID_PRODUCT_FROM_DATABASE=DVD+RW - -usb:v03F0p050C* - ID_PRODUCT_FROM_DATABASE=5219 Wireless Keyboard - -usb:v03F0p0511* - ID_PRODUCT_FROM_DATABASE=OfficeJet K60 - -usb:v03F0p0512* - ID_PRODUCT_FROM_DATABASE=DeckJet 450 - -usb:v03F0p0517* - ID_PRODUCT_FROM_DATABASE=LaserJet 1000 - -usb:v03F0p051D* - ID_PRODUCT_FROM_DATABASE=Bluetooth Interface - -usb:v03F0p0601* - ID_PRODUCT_FROM_DATABASE=ScanJet 6300c - -usb:v03F0p0604* - ID_PRODUCT_FROM_DATABASE=DeskJet 840c - -usb:v03F0p0605* - ID_PRODUCT_FROM_DATABASE=ScanJet 2200c - -usb:v03F0p0611* - ID_PRODUCT_FROM_DATABASE=OfficeJet K60xi - -usb:v03F0p0612* - ID_PRODUCT_FROM_DATABASE=business inkjet 3000 - -usb:v03F0p0624* - ID_PRODUCT_FROM_DATABASE=Bluetooth Dongle - -usb:v03F0p0701* - ID_PRODUCT_FROM_DATABASE=ScanJet 5300c/5370c - -usb:v03F0p0704* - ID_PRODUCT_FROM_DATABASE=DeskJet 825c - -usb:v03F0p0705* - ID_PRODUCT_FROM_DATABASE=ScanJet 4400c - -usb:v03F0p0711* - ID_PRODUCT_FROM_DATABASE=OfficeJet K80 - -usb:v03F0p0712* - ID_PRODUCT_FROM_DATABASE=DeskJet 1180c - -usb:v03F0p0714* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v03F0p0801* - ID_PRODUCT_FROM_DATABASE=ScanJet 7400c - -usb:v03F0p0804* - ID_PRODUCT_FROM_DATABASE=DeskJet 816c - -usb:v03F0p0805* - ID_PRODUCT_FROM_DATABASE=HP4470C - -usb:v03F0p0811* - ID_PRODUCT_FROM_DATABASE=OfficeJet K80xi - -usb:v03F0p0817* - ID_PRODUCT_FROM_DATABASE=LaserJet 3300 - -usb:v03F0p0901* - ID_PRODUCT_FROM_DATABASE=ScanJet 2300c - -usb:v03F0p0904* - ID_PRODUCT_FROM_DATABASE=DeskJet 845c - -usb:v03F0p0912* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v03F0p0917* - ID_PRODUCT_FROM_DATABASE=LaserJet 3330 - -usb:v03F0p0924* - ID_PRODUCT_FROM_DATABASE=Modular Smartcard Keyboard - -usb:v03F0p0A01* - ID_PRODUCT_FROM_DATABASE=ScanJet 2400c - -usb:v03F0p0A17* - ID_PRODUCT_FROM_DATABASE=color LaserJet 3700 - -usb:v03F0p0B01* - ID_PRODUCT_FROM_DATABASE=ScanJet 82x0C - -usb:v03F0p0B0C* - ID_PRODUCT_FROM_DATABASE=Wireless Keyboard and Optical Mouse receiver - -usb:v03F0p0B17* - ID_PRODUCT_FROM_DATABASE=LaserJet 2300d - -usb:v03F0p0C17* - ID_PRODUCT_FROM_DATABASE=LaserJet 1010 - -usb:v03F0p0C24* - ID_PRODUCT_FROM_DATABASE=Bluetooth Dongle - -usb:v03F0p0D12* - ID_PRODUCT_FROM_DATABASE=OfficeJet 9100 series - -usb:v03F0p0D17* - ID_PRODUCT_FROM_DATABASE=LaserJet 1012 - -usb:v03F0p0E17* - ID_PRODUCT_FROM_DATABASE=LaserJet 1015 - -usb:v03F0p0F0C* - ID_PRODUCT_FROM_DATABASE=Wireless Keyboard and Optical Mouse receiver - -usb:v03F0p0F11* - ID_PRODUCT_FROM_DATABASE=OfficeJet V40 - -usb:v03F0p0F12* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v03F0p0F17* - ID_PRODUCT_FROM_DATABASE=LaserJet 1150 - -usb:v03F0p1001* - ID_PRODUCT_FROM_DATABASE=Photo Scanner 1000 - -usb:v03F0p1002* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 140 series - -usb:v03F0p1004* - ID_PRODUCT_FROM_DATABASE=DeskJet 970c/970cse - -usb:v03F0p1005* - ID_PRODUCT_FROM_DATABASE=ScanJet 5400c - -usb:v03F0p1011* - ID_PRODUCT_FROM_DATABASE=OfficeJet V40xi - -usb:v03F0p1016* - ID_PRODUCT_FROM_DATABASE=Jornada 548 / iPAQ HW6515 Pocket PC - -usb:v03F0p1017* - ID_PRODUCT_FROM_DATABASE=LaserJet 1300 - -usb:v03F0p1024* - ID_PRODUCT_FROM_DATABASE=Smart Card Keyboard - -usb:v03F0p1027* - ID_PRODUCT_FROM_DATABASE=Virtual keyboard and mouse - -usb:v03F0p1102* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 240 series - -usb:v03F0p1104* - ID_PRODUCT_FROM_DATABASE=DeskJet 959c - -usb:v03F0p1105* - ID_PRODUCT_FROM_DATABASE=ScanJet 5470c/5490c - -usb:v03F0p1111* - ID_PRODUCT_FROM_DATABASE=OfficeJet v60 - -usb:v03F0p1116* - ID_PRODUCT_FROM_DATABASE=Jornada 568 Pocket PC - -usb:v03F0p1117* - ID_PRODUCT_FROM_DATABASE=LaserJet 1300n - -usb:v03F0p1151* - ID_PRODUCT_FROM_DATABASE=PSC-750xi Printer/Scanner/Copier - -usb:v03F0p1202* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 320 series - -usb:v03F0p1204* - ID_PRODUCT_FROM_DATABASE=DeskJet 930c - -usb:v03F0p1205* - ID_PRODUCT_FROM_DATABASE=ScanJet 4500C/5550C - -usb:v03F0p1211* - ID_PRODUCT_FROM_DATABASE=OfficeJet v60xi - -usb:v03F0p1217* - ID_PRODUCT_FROM_DATABASE=LaserJet 2300L - -usb:v03F0p1302* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 370 series - -usb:v03F0p1305* - ID_PRODUCT_FROM_DATABASE=ScanJet 4570c - -usb:v03F0p1311* - ID_PRODUCT_FROM_DATABASE=OfficeJet V30 - -usb:v03F0p1312* - ID_PRODUCT_FROM_DATABASE=DeskJet 460 - -usb:v03F0p1317* - ID_PRODUCT_FROM_DATABASE=LaserJet 1005 - -usb:v03F0p1327* - ID_PRODUCT_FROM_DATABASE=iLO Virtual Hub - -usb:v03F0p1405* - ID_PRODUCT_FROM_DATABASE=ScanJet 3670 - -usb:v03F0p1411* - ID_PRODUCT_FROM_DATABASE=PSC 750 - -usb:v03F0p1424* - ID_PRODUCT_FROM_DATABASE=f2105 Monitor Hub - -usb:v03F0p1502* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 420 series - -usb:v03F0p1504* - ID_PRODUCT_FROM_DATABASE=DeskJet 920c - -usb:v03F0p150C* - ID_PRODUCT_FROM_DATABASE=Mood Lighting (Microchip Technology Inc.) - -usb:v03F0p1511* - ID_PRODUCT_FROM_DATABASE=PSC 750xi - -usb:v03F0p1512* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v03F0p1517* - ID_PRODUCT_FROM_DATABASE=color LaserJet 3500 - -usb:v03F0p1524* - ID_PRODUCT_FROM_DATABASE=Smart Card Keyboard - KR - -usb:v03F0p1602* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 330 series - -usb:v03F0p1604* - ID_PRODUCT_FROM_DATABASE=DeskJet 940c - -usb:v03F0p1605* - ID_PRODUCT_FROM_DATABASE=ScanJet 5530C PhotoSmart - -usb:v03F0p1611* - ID_PRODUCT_FROM_DATABASE=psc 780 - -usb:v03F0p1617* - ID_PRODUCT_FROM_DATABASE=LaserJet 3015 - -usb:v03F0p161D* - ID_PRODUCT_FROM_DATABASE=Wireless Rechargeable Optical Mouse (HID) - -usb:v03F0p1624* - ID_PRODUCT_FROM_DATABASE=Smart Card Keyboard - JP - -usb:v03F0p1702* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 380 series - -usb:v03F0p1704* - ID_PRODUCT_FROM_DATABASE=DeskJet 948C - -usb:v03F0p1705* - ID_PRODUCT_FROM_DATABASE=ScanJet 5590 - -usb:v03F0p1711* - ID_PRODUCT_FROM_DATABASE=psc 780xi - -usb:v03F0p1712* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v03F0p1717* - ID_PRODUCT_FROM_DATABASE=LaserJet 3020 - -usb:v03F0p171D* - ID_PRODUCT_FROM_DATABASE=Bluetooth 2.0 Interface [Broadcom BCM2045] - -usb:v03F0p1801* - ID_PRODUCT_FROM_DATABASE=Inkjet P-2000U - -usb:v03F0p1802* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 470 series - -usb:v03F0p1804* - ID_PRODUCT_FROM_DATABASE=DeskJet 916C - -usb:v03F0p1805* - ID_PRODUCT_FROM_DATABASE=ScanJet 7650 - -usb:v03F0p1811* - ID_PRODUCT_FROM_DATABASE=PSC 720 - -usb:v03F0p1812* - ID_PRODUCT_FROM_DATABASE=OfficeJet Pro K550 - -usb:v03F0p1817* - ID_PRODUCT_FROM_DATABASE=LaserJet 3030 - -usb:v03F0p181D* - ID_PRODUCT_FROM_DATABASE=Bluetooth 2.0 Interface - -usb:v03F0p1902* - ID_PRODUCT_FROM_DATABASE=PhotoSmart A430 series - -usb:v03F0p1904* - ID_PRODUCT_FROM_DATABASE=DeskJet 3820 - -usb:v03F0p1911* - ID_PRODUCT_FROM_DATABASE=OfficeJet V45 - -usb:v03F0p1917* - ID_PRODUCT_FROM_DATABASE=LaserJet 3380 - -usb:v03F0p1A02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart A510 series - -usb:v03F0p1A11* - ID_PRODUCT_FROM_DATABASE=OfficeJet 5100 series - -usb:v03F0p1A17* - ID_PRODUCT_FROM_DATABASE=color LaserJet 4650 - -usb:v03F0p1B02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart A610 series - -usb:v03F0p1B04* - ID_PRODUCT_FROM_DATABASE=DeskJet 3810 - -usb:v03F0p1B05* - ID_PRODUCT_FROM_DATABASE=ScanJet 4850C/4890C - -usb:v03F0p1B07* - ID_PRODUCT_FROM_DATABASE=Premium Starter Webcam - -usb:v03F0p1C02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart A710 series - -usb:v03F0p1C17* - ID_PRODUCT_FROM_DATABASE=Color LaserJet 2550l - -usb:v03F0p1D02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart A310 series - -usb:v03F0p1D17* - ID_PRODUCT_FROM_DATABASE=LaserJet 1320 - -usb:v03F0p1E02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart A320 Printer series - -usb:v03F0p1E11* - ID_PRODUCT_FROM_DATABASE=PSC-950 - -usb:v03F0p1E17* - ID_PRODUCT_FROM_DATABASE=LaserJet 1160 series - -usb:v03F0p1F02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart A440 Printer series - -usb:v03F0p1F11* - ID_PRODUCT_FROM_DATABASE=PSC 920 - -usb:v03F0p1F12* - ID_PRODUCT_FROM_DATABASE=OfficeJet Pro K5300 - -usb:v03F0p1F17* - ID_PRODUCT_FROM_DATABASE=color LaserJet 5550 - -usb:v03F0p1F1D* - ID_PRODUCT_FROM_DATABASE=un2400 Gobi Wireless Modem - -usb:v03F0p2001* - ID_PRODUCT_FROM_DATABASE=Floppy - -usb:v03F0p2002* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v03F0p2004* - ID_PRODUCT_FROM_DATABASE=DeskJet 640c - -usb:v03F0p2005* - ID_PRODUCT_FROM_DATABASE=ScanJet 3570c - -usb:v03F0p2012* - ID_PRODUCT_FROM_DATABASE=OfficeJet Pro K5400 - -usb:v03F0p201D* - ID_PRODUCT_FROM_DATABASE=un2400 Gobi Wireless Modem (QDL mode) - -usb:v03F0p2102* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7345 - -usb:v03F0p2104* - ID_PRODUCT_FROM_DATABASE=DeskJet 630c - -usb:v03F0p2112* - ID_PRODUCT_FROM_DATABASE=OfficeJet Pro L7500 - -usb:v03F0p211D* - ID_PRODUCT_FROM_DATABASE=Sierra MC5725 [ev2210] - -usb:v03F0p2202* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7600 series - -usb:v03F0p2205* - ID_PRODUCT_FROM_DATABASE=ScanJet 3500c - -usb:v03F0p2212* - ID_PRODUCT_FROM_DATABASE=OfficeJet Pro L7600 - -usb:v03F0p2217* - ID_PRODUCT_FROM_DATABASE=color LaserJet 9500 MFP - -usb:v03F0p2302* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7600 series - -usb:v03F0p2304* - ID_PRODUCT_FROM_DATABASE=DeskJet 656c - -usb:v03F0p2305* - ID_PRODUCT_FROM_DATABASE=ScanJet 3970c - -usb:v03F0p2311* - ID_PRODUCT_FROM_DATABASE=OfficeJet d series - -usb:v03F0p2312* - ID_PRODUCT_FROM_DATABASE=OfficeJet Pro L7700 - -usb:v03F0p2317* - ID_PRODUCT_FROM_DATABASE=LaserJet 4350 - -usb:v03F0p231D* - ID_PRODUCT_FROM_DATABASE=4 GB Flash Drive - -usb:v03F0p2402* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7700 series - -usb:v03F0p2404* - ID_PRODUCT_FROM_DATABASE=Deskjet F2280 series - -usb:v03F0p2405* - ID_PRODUCT_FROM_DATABASE=ScanJet 4070 PhotoSmart - -usb:v03F0p2417* - ID_PRODUCT_FROM_DATABASE=LaserJet 4250 - -usb:v03F0p241D* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem (QDL mode) - -usb:v03F0p2424* - ID_PRODUCT_FROM_DATABASE=LP1965 19" Monitor Hub - -usb:v03F0p2502* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7700 series - -usb:v03F0p2504* - ID_PRODUCT_FROM_DATABASE=DeskJet F4200 series - -usb:v03F0p2505* - ID_PRODUCT_FROM_DATABASE=ScanJet 3770 - -usb:v03F0p2512* - ID_PRODUCT_FROM_DATABASE=OfficeJet Pro L7300 - -usb:v03F0p2517* - ID_PRODUCT_FROM_DATABASE=LaserJet 2410 - -usb:v03F0p251D* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem - -usb:v03F0p2524* - ID_PRODUCT_FROM_DATABASE=LP3065 30" Monitor Hub - -usb:v03F0p2602* - ID_PRODUCT_FROM_DATABASE=PhotoSmart A520 series - -usb:v03F0p2605* - ID_PRODUCT_FROM_DATABASE=ScanJet 3800c - -usb:v03F0p2611* - ID_PRODUCT_FROM_DATABASE=OfficeJet 7100 series - -usb:v03F0p2617* - ID_PRODUCT_FROM_DATABASE=Color LaserJet 2820 series - -usb:v03F0p2624* - ID_PRODUCT_FROM_DATABASE=Pole Display (HP522 2 x 20 Line Display) - -usb:v03F0p2702* - ID_PRODUCT_FROM_DATABASE=PhotoSmart A620 series - -usb:v03F0p2704* - ID_PRODUCT_FROM_DATABASE=DeskJet 915 - -usb:v03F0p2717* - ID_PRODUCT_FROM_DATABASE=Color LaserJet 2830 - -usb:v03F0p2811* - ID_PRODUCT_FROM_DATABASE=PSC-2100 - -usb:v03F0p2817* - ID_PRODUCT_FROM_DATABASE=Color LaserJet 2840 - -usb:v03F0p2902* - ID_PRODUCT_FROM_DATABASE=PhotoSmart A820 series - -usb:v03F0p2911* - ID_PRODUCT_FROM_DATABASE=PSC 2200 - -usb:v03F0p2917* - ID_PRODUCT_FROM_DATABASE=LaserJet 2420 - -usb:v03F0p2A11* - ID_PRODUCT_FROM_DATABASE=PSC 2150 series - -usb:v03F0p2A17* - ID_PRODUCT_FROM_DATABASE=LaserJet 2430 - -usb:v03F0p2B11* - ID_PRODUCT_FROM_DATABASE=PSC 2170 series - -usb:v03F0p2B17* - ID_PRODUCT_FROM_DATABASE=LaserJet 1020 - -usb:v03F0p2C12* - ID_PRODUCT_FROM_DATABASE=Officejet J4680 - -usb:v03F0p2C17* - ID_PRODUCT_FROM_DATABASE=LaserJet 1022 - -usb:v03F0p2C24* - ID_PRODUCT_FROM_DATABASE=Logitech M-UAL-96 Mouse - -usb:v03F0p2D05* - ID_PRODUCT_FROM_DATABASE=Scanjet 7000 - -usb:v03F0p2D11* - ID_PRODUCT_FROM_DATABASE=OfficeJet 6110 - -usb:v03F0p2D17* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v03F0p2E11* - ID_PRODUCT_FROM_DATABASE=PSC 1000 - -usb:v03F0p2E17* - ID_PRODUCT_FROM_DATABASE=LaserJet 2600n - -usb:v03F0p2E24* - ID_PRODUCT_FROM_DATABASE=LP2275w Monitor Hub - -usb:v03F0p2F11* - ID_PRODUCT_FROM_DATABASE=PSC 1200 - -usb:v03F0p2F17* - ID_PRODUCT_FROM_DATABASE=EWS 2605dn - -usb:v03F0p2F24* - ID_PRODUCT_FROM_DATABASE=LP2475w Monitor Hub - -usb:v03F0p3002* - ID_PRODUCT_FROM_DATABASE=PhotoSmart P1000 - -usb:v03F0p3004* - ID_PRODUCT_FROM_DATABASE=DeskJet 980c - -usb:v03F0p3005* - ID_PRODUCT_FROM_DATABASE=ScanJet 4670v - -usb:v03F0p3011* - ID_PRODUCT_FROM_DATABASE=PSC 1100 series - -usb:v03F0p3017* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v03F0p3102* - ID_PRODUCT_FROM_DATABASE=PhotoSmart P1100 Printer w/ Card Reader - -usb:v03F0p3104* - ID_PRODUCT_FROM_DATABASE=DeskJet 960c - -usb:v03F0p3111* - ID_PRODUCT_FROM_DATABASE=OfficeJet 4100 series - -usb:v03F0p3117* - ID_PRODUCT_FROM_DATABASE=EWS 2605dtn - -usb:v03F0p311D* - ID_PRODUCT_FROM_DATABASE=Atheros AR9285 Malbec Bluetooth Adapter - -usb:v03F0p3202* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 1215 - -usb:v03F0p3207* - ID_PRODUCT_FROM_DATABASE=4 GB flash drive - -usb:v03F0p3211* - ID_PRODUCT_FROM_DATABASE=OfficeJet 4105 series - -usb:v03F0p3217* - ID_PRODUCT_FROM_DATABASE=LaserJet 3050 - -usb:v03F0p3302* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 1218 - -usb:v03F0p3304* - ID_PRODUCT_FROM_DATABASE=DeskJet 990c - -usb:v03F0p3312* - ID_PRODUCT_FROM_DATABASE=OfficeJet J6410 - -usb:v03F0p3317* - ID_PRODUCT_FROM_DATABASE=LaserJet 3052 - -usb:v03F0p3402* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 1115 - -usb:v03F0p3404* - ID_PRODUCT_FROM_DATABASE=DeskJet 6122 - -usb:v03F0p3417* - ID_PRODUCT_FROM_DATABASE=LaserJet 3055 - -usb:v03F0p3502* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 230 - -usb:v03F0p3504* - ID_PRODUCT_FROM_DATABASE=DeskJet 6127c - -usb:v03F0p3511* - ID_PRODUCT_FROM_DATABASE=PSC 2300 - -usb:v03F0p3517* - ID_PRODUCT_FROM_DATABASE=LaserJet 3390 - -usb:v03F0p3602* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 1315 - -usb:v03F0p3611* - ID_PRODUCT_FROM_DATABASE=PSC 2410 PhotoSmart - -usb:v03F0p3617* - ID_PRODUCT_FROM_DATABASE=Color LaserJet 2605 - -usb:v03F0p3711* - ID_PRODUCT_FROM_DATABASE=PSC 2500 - -usb:v03F0p3717* - ID_PRODUCT_FROM_DATABASE=EWS UPD - -usb:v03F0p3724* - ID_PRODUCT_FROM_DATABASE=Webcam - -usb:v03F0p3802* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 100 - -usb:v03F0p3807* - ID_PRODUCT_FROM_DATABASE=c485w Flash Drive - -usb:v03F0p3817* - ID_PRODUCT_FROM_DATABASE=LaserJet P2015 series - -usb:v03F0p3902* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 130 - -usb:v03F0p3A02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7150 - -usb:v03F0p3A11* - ID_PRODUCT_FROM_DATABASE=OfficeJet 5500 series - -usb:v03F0p3A17* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v03F0p3B02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7150~ - -usb:v03F0p3B05* - ID_PRODUCT_FROM_DATABASE=Scanjet N8460 - -usb:v03F0p3B11* - ID_PRODUCT_FROM_DATABASE=PSC 1300 series - -usb:v03F0p3B17* - ID_PRODUCT_FROM_DATABASE=LaserJet M1005 MFP - -usb:v03F0p3C02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7350 - -usb:v03F0p3C11* - ID_PRODUCT_FROM_DATABASE=PSC 1358 - -usb:v03F0p3C17* - ID_PRODUCT_FROM_DATABASE=EWS UPD - -usb:v03F0p3D02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7350~ - -usb:v03F0p3D11* - ID_PRODUCT_FROM_DATABASE=OfficeJet 4215 - -usb:v03F0p3D17* - ID_PRODUCT_FROM_DATABASE=LaserJet P1005 - -usb:v03F0p3E02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7550 - -usb:v03F0p3E17* - ID_PRODUCT_FROM_DATABASE=LaserJet P1006 - -usb:v03F0p3F02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7550~ - -usb:v03F0p3F11* - ID_PRODUCT_FROM_DATABASE=PSC-1315/PSC-1317 - -usb:v03F0p4002* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 635/715/720/735/935 (storage) - -usb:v03F0p4004* - ID_PRODUCT_FROM_DATABASE=cp1160 - -usb:v03F0p4102* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 618 - -usb:v03F0p4105* - ID_PRODUCT_FROM_DATABASE=ScanJet 4370 - -usb:v03F0p4111* - ID_PRODUCT_FROM_DATABASE=OfficeJet 7200 series - -usb:v03F0p4117* - ID_PRODUCT_FROM_DATABASE=LaserJet 1018 - -usb:v03F0p4202* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 812 - -usb:v03F0p4205* - ID_PRODUCT_FROM_DATABASE=ScanJet G3010 - -usb:v03F0p4211* - ID_PRODUCT_FROM_DATABASE=OfficeJet 7300 series - -usb:v03F0p4217* - ID_PRODUCT_FROM_DATABASE=EWS CM1015 - -usb:v03F0p4302* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 850 (ptp) - -usb:v03F0p4305* - ID_PRODUCT_FROM_DATABASE=ScanJet G3110 - -usb:v03F0p4311* - ID_PRODUCT_FROM_DATABASE=OfficeJet 7400 series - -usb:v03F0p4317* - ID_PRODUCT_FROM_DATABASE=Color LaserJet CM1017 - -usb:v03F0p4402* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 935 (ptp) - -usb:v03F0p4417* - ID_PRODUCT_FROM_DATABASE=EWS UPD - -usb:v03F0p4502* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 945 (PTP mode) - -usb:v03F0p4505* - ID_PRODUCT_FROM_DATABASE=ScanJet G4010 - -usb:v03F0p4507* - ID_PRODUCT_FROM_DATABASE=External HDD - -usb:v03F0p4511* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 2600 - -usb:v03F0p4512* - ID_PRODUCT_FROM_DATABASE=E709n [Officejet 6500 Wireless] - -usb:v03F0p4517* - ID_PRODUCT_FROM_DATABASE=EWS UPD - -usb:v03F0p4605* - ID_PRODUCT_FROM_DATABASE=ScanJet G4050 - -usb:v03F0p4611* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 2700 - -usb:v03F0p4717* - ID_PRODUCT_FROM_DATABASE=Color LaserJet CP1215 - -usb:v03F0p4811* - ID_PRODUCT_FROM_DATABASE=PSC 1600 - -usb:v03F0p4911* - ID_PRODUCT_FROM_DATABASE=PSC 2350 - -usb:v03F0p4B11* - ID_PRODUCT_FROM_DATABASE=OfficeJet 6200 - -usb:v03F0p4C11* - ID_PRODUCT_FROM_DATABASE=PSC 1500 series - -usb:v03F0p4C17* - ID_PRODUCT_FROM_DATABASE=EWS UPD - -usb:v03F0p4D11* - ID_PRODUCT_FROM_DATABASE=PSC 1400 - -usb:v03F0p4D17* - ID_PRODUCT_FROM_DATABASE=EWS UPD - -usb:v03F0p4E11* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 2570 series - -usb:v03F0p4F11* - ID_PRODUCT_FROM_DATABASE=OfficeJet 5600 (USBHUB) - -usb:v03F0p4F17* - ID_PRODUCT_FROM_DATABASE=Color LaserJet CM1312 MFP - -usb:v03F0p5004* - ID_PRODUCT_FROM_DATABASE=DeskJet 995c - -usb:v03F0p5011* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 3100 series - -usb:v03F0p5017* - ID_PRODUCT_FROM_DATABASE=EWS UPD - -usb:v03F0p5111* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 3200 series - -usb:v03F0p5211* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 3300 series - -usb:v03F0p5311* - ID_PRODUCT_FROM_DATABASE=OfficeJet 6300 - -usb:v03F0p5312* - ID_PRODUCT_FROM_DATABASE=Officejet Pro 8500A - -usb:v03F0p5411* - ID_PRODUCT_FROM_DATABASE=OfficeJet 4300 - -usb:v03F0p5511* - ID_PRODUCT_FROM_DATABASE=DeskJet F300 series - -usb:v03F0p5611* - ID_PRODUCT_FROM_DATABASE=PhotoSmart C3180 - -usb:v03F0p5617* - ID_PRODUCT_FROM_DATABASE=LaserJet M1120 MFP - -usb:v03F0p5711* - ID_PRODUCT_FROM_DATABASE=PhotoSmart C4100 series - -usb:v03F0p5717* - ID_PRODUCT_FROM_DATABASE=LaserJet M1120n MFP - -usb:v03F0p5811* - ID_PRODUCT_FROM_DATABASE=PhotoSmart C5100 series - -usb:v03F0p5817* - ID_PRODUCT_FROM_DATABASE=LaserJet M1319f MFP - -usb:v03F0p5911* - ID_PRODUCT_FROM_DATABASE=PhotoSmart C6180 - -usb:v03F0p5A11* - ID_PRODUCT_FROM_DATABASE=PhotoSmart C7100 series - -usb:v03F0p5B11* - ID_PRODUCT_FROM_DATABASE=OfficeJet J2100 series - -usb:v03F0p5C11* - ID_PRODUCT_FROM_DATABASE=PhotoSmart C4200 Printer series - -usb:v03F0p5C12* - ID_PRODUCT_FROM_DATABASE=OfficeJet 6700 - -usb:v03F0p5C17* - ID_PRODUCT_FROM_DATABASE=LaserJet P2055 series - -usb:v03F0p5D11* - ID_PRODUCT_FROM_DATABASE=PhotoSmart C5200 series - -usb:v03F0p5E11* - ID_PRODUCT_FROM_DATABASE=PhotoSmart D7400 series - -usb:v03F0p6004* - ID_PRODUCT_FROM_DATABASE=DeskJet 5550 - -usb:v03F0p6102* - ID_PRODUCT_FROM_DATABASE=Hewlett Packard Digital Camera - -usb:v03F0p6104* - ID_PRODUCT_FROM_DATABASE=DeskJet 5650c - -usb:v03F0p6117* - ID_PRODUCT_FROM_DATABASE=color LaserJet 3550 - -usb:v03F0p6202* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 215 - -usb:v03F0p6204* - ID_PRODUCT_FROM_DATABASE=DeskJet 5150c - -usb:v03F0p6217* - ID_PRODUCT_FROM_DATABASE=Color LaserJet 4700 - -usb:v03F0p6302* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 318/612 - -usb:v03F0p6317* - ID_PRODUCT_FROM_DATABASE=Color LaserJet 4730mfp - -usb:v03F0p6402* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 715 (ptp) - -usb:v03F0p6411* - ID_PRODUCT_FROM_DATABASE=PhotoSmart C8100 series - -usb:v03F0p6417* - ID_PRODUCT_FROM_DATABASE=LaserJet 5200 - -usb:v03F0p6502* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 120 (ptp) - -usb:v03F0p6511* - ID_PRODUCT_FROM_DATABASE=PhotoSmart C7200 series - -usb:v03F0p6602* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 320 - -usb:v03F0p6611* - ID_PRODUCT_FROM_DATABASE=PhotoSmart C4380 series - -usb:v03F0p6617* - ID_PRODUCT_FROM_DATABASE=LaserJet 5200L - -usb:v03F0p6702* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 720 (ptp) - -usb:v03F0p6717* - ID_PRODUCT_FROM_DATABASE=Color LaserJet 3000 - -usb:v03F0p6802* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 620 (ptp) - -usb:v03F0p6811* - ID_PRODUCT_FROM_DATABASE=PhotoSmart D5300 series - -usb:v03F0p6817* - ID_PRODUCT_FROM_DATABASE=Color LaserJet 3800 - -usb:v03F0p6911* - ID_PRODUCT_FROM_DATABASE=PhotoSmart D7200 series - -usb:v03F0p6917* - ID_PRODUCT_FROM_DATABASE=Color LaserJet 3600 - -usb:v03F0p6A02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 735 (ptp) - -usb:v03F0p6A11* - ID_PRODUCT_FROM_DATABASE=PhotoSmart C6200 series - -usb:v03F0p6A17* - ID_PRODUCT_FROM_DATABASE=LaserJet 4240 - -usb:v03F0p6B02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart R707 (PTP mode) - -usb:v03F0p6B11* - ID_PRODUCT_FROM_DATABASE=Photosmart C4500 series - -usb:v03F0p6C17* - ID_PRODUCT_FROM_DATABASE=Color LaserJet 4610 - -usb:v03F0p6F17* - ID_PRODUCT_FROM_DATABASE=Color LaserJet CP6015 series - -usb:v03F0p7004* - ID_PRODUCT_FROM_DATABASE=DeskJet 3320c - -usb:v03F0p7102* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 635 (PTP mode) - -usb:v03F0p7104* - ID_PRODUCT_FROM_DATABASE=DeskJet 3420c - -usb:v03F0p7117* - ID_PRODUCT_FROM_DATABASE=CM8060 Color MFP with Edgeline Technology - -usb:v03F0p7202* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 43x (ptp) - -usb:v03F0p7204* - ID_PRODUCT_FROM_DATABASE=DeskJet 36xx - -usb:v03F0p7217* - ID_PRODUCT_FROM_DATABASE=LaserJet M5035 MFP - -usb:v03F0p7302* - ID_PRODUCT_FROM_DATABASE=PhotoSmart M307 (PTP mode) - -usb:v03F0p7304* - ID_PRODUCT_FROM_DATABASE=DeskJet 35xx - -usb:v03F0p7311* - ID_PRODUCT_FROM_DATABASE=Photosmart Premium C309 - -usb:v03F0p7317* - ID_PRODUCT_FROM_DATABASE=LaserJet P3005 - -usb:v03F0p7404* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v03F0p7417* - ID_PRODUCT_FROM_DATABASE=LaserJet M4345 MFP - -usb:v03F0p7504* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v03F0p7517* - ID_PRODUCT_FROM_DATABASE=LaserJet M3035 MFP - -usb:v03F0p7604* - ID_PRODUCT_FROM_DATABASE=DeskJet 3940 - -usb:v03F0p7611* - ID_PRODUCT_FROM_DATABASE=DeskJet F2492 All-in-One - -usb:v03F0p7617* - ID_PRODUCT_FROM_DATABASE=LaserJet P3004 - -usb:v03F0p7702* - ID_PRODUCT_FROM_DATABASE=PhotoSmart R817 (PTP mode) - -usb:v03F0p7704* - ID_PRODUCT_FROM_DATABASE=DeskJet D4100 - -usb:v03F0p7717* - ID_PRODUCT_FROM_DATABASE=CM8050 Color MFP with Edgeline Technology - -usb:v03F0p7804* - ID_PRODUCT_FROM_DATABASE=DeskJet D1360 - -usb:v03F0p7817* - ID_PRODUCT_FROM_DATABASE=Color LaserJet CP3505 - -usb:v03F0p7917* - ID_PRODUCT_FROM_DATABASE=LaserJet M5025 MFP - -usb:v03F0p7A02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart M415 (PTP mode) - -usb:v03F0p7A04* - ID_PRODUCT_FROM_DATABASE=DeskJet D2460 - -usb:v03F0p7A17* - ID_PRODUCT_FROM_DATABASE=LaserJet M3027 MFP - -usb:v03F0p7B02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart M23 (PTP mode) - -usb:v03F0p7B17* - ID_PRODUCT_FROM_DATABASE=Color LaserJet CP4005 - -usb:v03F0p7C17* - ID_PRODUCT_FROM_DATABASE=Color LaserJet CM6040 series - -usb:v03F0p7D04* - ID_PRODUCT_FROM_DATABASE=DeskJet F2100 Printer series - -usb:v03F0p7D17* - ID_PRODUCT_FROM_DATABASE=Color LaserJet CM4730 MFP - -usb:v03F0p7E04* - ID_PRODUCT_FROM_DATABASE=DeskJet F4100 Printer series - -usb:v03F0p8017* - ID_PRODUCT_FROM_DATABASE=LaserJet P4515 - -usb:v03F0p8104* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v03F0p8117* - ID_PRODUCT_FROM_DATABASE=LaserJet P4015 - -usb:v03F0p811C* - ID_PRODUCT_FROM_DATABASE=Ethernet HN210E - -usb:v03F0p8204* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v03F0p8207* - ID_PRODUCT_FROM_DATABASE=FHA-3510 2.4GHz Wireless Optical Mobile Mouse - -usb:v03F0p8217* - ID_PRODUCT_FROM_DATABASE=LaserJet P4014 - -usb:v03F0p8317* - ID_PRODUCT_FROM_DATABASE=LaserJet M9050 MFP - -usb:v03F0p8404* - ID_PRODUCT_FROM_DATABASE=DeskJet 6800 series - -usb:v03F0p8417* - ID_PRODUCT_FROM_DATABASE=LaserJet M9040 MFP - -usb:v03F0p8504* - ID_PRODUCT_FROM_DATABASE=DeskJet 6600 series - -usb:v03F0p8604* - ID_PRODUCT_FROM_DATABASE=DeskJet 5440 - -usb:v03F0p8607* - ID_PRODUCT_FROM_DATABASE=Optical Mobile Mouse - -usb:v03F0p8704* - ID_PRODUCT_FROM_DATABASE=DeskJet 5940 - -usb:v03F0p8711* - ID_PRODUCT_FROM_DATABASE=Deskjet 2050 J510 - -usb:v03F0p8804* - ID_PRODUCT_FROM_DATABASE=DeskJet 6980 series - -usb:v03F0p8904* - ID_PRODUCT_FROM_DATABASE=DeskJet 6940 series - -usb:v03F0p8C07* - ID_PRODUCT_FROM_DATABASE=Digital Stereo Headset - -usb:v03F0p8C11* - ID_PRODUCT_FROM_DATABASE=Deskjet F4500 series - -usb:v03F0p9002* - ID_PRODUCT_FROM_DATABASE=PhotoSmart M437 - -usb:v03F0p9102* - ID_PRODUCT_FROM_DATABASE=PhotoSmart M537 - -usb:v03F0p9302* - ID_PRODUCT_FROM_DATABASE=PhotoSmart R930 series - -usb:v03F0p9402* - ID_PRODUCT_FROM_DATABASE=PhotoSmart R837 - -usb:v03F0p9502* - ID_PRODUCT_FROM_DATABASE=PhotoSmart R840 series - -usb:v03F0p9602* - ID_PRODUCT_FROM_DATABASE=PhotoSmart M730 series - -usb:v03F0p9702* - ID_PRODUCT_FROM_DATABASE=PhotoSmart R740 series - -usb:v03F0p9802* - ID_PRODUCT_FROM_DATABASE=PhotoSmart Mz60 series - -usb:v03F0p9902* - ID_PRODUCT_FROM_DATABASE=PhotoSmart M630 series - -usb:v03F0p9A02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart E330 series - -usb:v03F0p9B02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart M540 series - -usb:v03F0p9B07* - ID_PRODUCT_FROM_DATABASE=Portable Drive - -usb:v03F0p9C02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart M440 series - -usb:v03F0pA004* - ID_PRODUCT_FROM_DATABASE=DeskJet 5850c - -usb:v03F0pA011* - ID_PRODUCT_FROM_DATABASE=Deskjet 3050A - -usb:v03F0pB002* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7200 series - -usb:v03F0pB102* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7200 series - -usb:v03F0pB107* - ID_PRODUCT_FROM_DATABASE=v255w/c310w Flash Drive - -usb:v03F0pB116* - ID_PRODUCT_FROM_DATABASE=Webcam - -usb:v03F0pB202* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7600 series - -usb:v03F0pB302* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7600 series - -usb:v03F0pB402* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7700 series - -usb:v03F0pB502* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7700 series - -usb:v03F0pB602* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7900 series - -usb:v03F0pB702* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7900 series - -usb:v03F0pB802* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7400 series - -usb:v03F0pB902* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7800 series - -usb:v03F0pBA02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 8100 series - -usb:v03F0pBB02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 8400 series - -usb:v03F0pBC02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 8700 series - -usb:v03F0pBD02* - ID_PRODUCT_FROM_DATABASE=PhotoSmart Pro B9100 series - -usb:v03F0pBEF4* - ID_PRODUCT_FROM_DATABASE=NEC Picty760 - -usb:v03F0pC002* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 7800 series - -usb:v03F0pC102* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 8000 series - -usb:v03F0pC202* - ID_PRODUCT_FROM_DATABASE=PhotoSmart 8200 series - -usb:v03F0pC302* - ID_PRODUCT_FROM_DATABASE=DeskJet D2300 - -usb:v03F0pC402* - ID_PRODUCT_FROM_DATABASE=PhotoSmart D5100 series - -usb:v03F0pC502* - ID_PRODUCT_FROM_DATABASE=PhotoSmart D6100 series - -usb:v03F0pC602* - ID_PRODUCT_FROM_DATABASE=PhotoSmart D7100 series - -usb:v03F0pC702* - ID_PRODUCT_FROM_DATABASE=PhotoSmart D7300 series - -usb:v03F0pC802* - ID_PRODUCT_FROM_DATABASE=PhotoSmart D5060 Printer - -usb:v03F0pD104* - ID_PRODUCT_FROM_DATABASE=Bluetooth Dongle - -usb:v03F0pEFBE* - ID_PRODUCT_FROM_DATABASE=NEC Picty900 - -usb:v03F0pF0BE* - ID_PRODUCT_FROM_DATABASE=NEC Picty920 - -usb:v03F0pF1BE* - ID_PRODUCT_FROM_DATABASE=NEC Picty800 - -usb:v03F1* - ID_VENDOR_FROM_DATABASE=Genoa Technology - -usb:v03F2* - ID_VENDOR_FROM_DATABASE=Oak Technology, Inc. - -usb:v03F3* - ID_VENDOR_FROM_DATABASE=Adaptec, Inc. - -usb:v03F3p0020* - ID_PRODUCT_FROM_DATABASE=AWN-8020 WLAN [Intersil PRISM 2.5] - -usb:v03F3p0080* - ID_PRODUCT_FROM_DATABASE=AVC-1100 Audio Capture - -usb:v03F3p0083* - ID_PRODUCT_FROM_DATABASE=AVC-2200 Device - -usb:v03F3p0087* - ID_PRODUCT_FROM_DATABASE=AVC-2210 Loader - -usb:v03F3p0088* - ID_PRODUCT_FROM_DATABASE=AVC-2210 Device - -usb:v03F3p008B* - ID_PRODUCT_FROM_DATABASE=AVC-2310 Loader - -usb:v03F3p008C* - ID_PRODUCT_FROM_DATABASE=AVC-2310 Device - -usb:v03F3p0094* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v03F3p009B* - ID_PRODUCT_FROM_DATABASE=AVC-1410 GameBridge TV NTSC - -usb:v03F3p2000* - ID_PRODUCT_FROM_DATABASE=USBXchange - -usb:v03F3p2001* - ID_PRODUCT_FROM_DATABASE=USBXchange Adapter - -usb:v03F3p2002* - ID_PRODUCT_FROM_DATABASE=USB2-Xchange - -usb:v03F3p2003* - ID_PRODUCT_FROM_DATABASE=USB2-Xchange Adapter - -usb:v03F3p4000* - ID_PRODUCT_FROM_DATABASE=4-port hub - -usb:v03F3pADCC* - ID_PRODUCT_FROM_DATABASE=Composite Device Support - -usb:v03F4* - ID_VENDOR_FROM_DATABASE=Diebold, Inc. - -usb:v03F5* - ID_VENDOR_FROM_DATABASE=Siemens Electromechanical - -usb:v03F8* - ID_VENDOR_FROM_DATABASE=Epson Imaging Technology Center - -usb:v03F9* - ID_VENDOR_FROM_DATABASE=KeyTronic Corp. - -usb:v03F9p0100* - ID_PRODUCT_FROM_DATABASE=KT-2001 Keyboard - -usb:v03F9p0101* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v03F9p0102* - ID_PRODUCT_FROM_DATABASE=Keyboard Mouse - -usb:v03FB* - ID_VENDOR_FROM_DATABASE=OPTi, Inc. - -usb:v03FC* - ID_VENDOR_FROM_DATABASE=Elitegroup Computer Systems - -usb:v03FD* - ID_VENDOR_FROM_DATABASE=Xilinx, Inc. - -usb:v03FE* - ID_VENDOR_FROM_DATABASE=Farallon Comunications - -usb:v0400* - ID_VENDOR_FROM_DATABASE=National Semiconductor Corp. - -usb:v0400p05DC* - ID_PRODUCT_FROM_DATABASE=Rigol Technologies DS1000USB Oscilloscope - -usb:v0400p0807* - ID_PRODUCT_FROM_DATABASE=Bluetooth Dongle - -usb:v0400p080A* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0400p09C4* - ID_PRODUCT_FROM_DATABASE=Rigol Technologies DG1022 Arbitrary Waveform Generator - -usb:v0400p1000* - ID_PRODUCT_FROM_DATABASE=Mustek BearPaw 1200 Scanner - -usb:v0400p1001* - ID_PRODUCT_FROM_DATABASE=Mustek BearPaw 2400 Scanner - -usb:v0400p1237* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v0400pA000* - ID_PRODUCT_FROM_DATABASE=Smart Display Reference Device - -usb:v0400pC359* - ID_PRODUCT_FROM_DATABASE=Logitech Harmony - -usb:v0400pC35B* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v0400pC55D* - ID_PRODUCT_FROM_DATABASE=Rigol Technologies DS5000USB Oscilloscope - -usb:v0401* - ID_VENDOR_FROM_DATABASE=National Registry, Inc. - -usb:v0402* - ID_VENDOR_FROM_DATABASE=ALi Corp. - -usb:v0402p5462* - ID_PRODUCT_FROM_DATABASE=M5462 IDE Controller - -usb:v0402p5602* - ID_PRODUCT_FROM_DATABASE=M5602 Video Camera Controller - -usb:v0402p5603* - ID_PRODUCT_FROM_DATABASE=M5603 Video Camera Controller - -usb:v0402p5606* - ID_PRODUCT_FROM_DATABASE=M5606 Video Camera Controller [UVC] - -usb:v0402p5621* - ID_PRODUCT_FROM_DATABASE=M5621 High-Speed IDE Controller - -usb:v0402p5623* - ID_PRODUCT_FROM_DATABASE=M5623 Scanner Controller - -usb:v0402p5627* - ID_PRODUCT_FROM_DATABASE=Welland ME-740PS USB2 3.5" Power Saving Enclosure - -usb:v0402p5632* - ID_PRODUCT_FROM_DATABASE=M5632 Host-to-Host Link - -usb:v0402p5635* - ID_PRODUCT_FROM_DATABASE=M5635 Flash Card Reader - -usb:v0402p5636* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Storage Device - -usb:v0402p5637* - ID_PRODUCT_FROM_DATABASE=M5637 IDE Controller - -usb:v0402p5661* - ID_PRODUCT_FROM_DATABASE=M5661 MP3 player - -usb:v0402p5667* - ID_PRODUCT_FROM_DATABASE=M5667 MP3 player - -usb:v0402p9665* - ID_PRODUCT_FROM_DATABASE=Gateway Webcam - -usb:v0403* - ID_VENDOR_FROM_DATABASE=Future Technology Devices International, Ltd - -usb:v0403p0000* - ID_PRODUCT_FROM_DATABASE=H4SMK 7 Port Hub - -usb:v0403p0232* - ID_PRODUCT_FROM_DATABASE=Serial Converter - -usb:v0403p1060* - ID_PRODUCT_FROM_DATABASE=JTAG adapter - -usb:v0403p6001* - ID_PRODUCT_FROM_DATABASE=FT232 USB-Serial (UART) IC - -usb:v0403p6002* - ID_PRODUCT_FROM_DATABASE=Lumel PD12 - -usb:v0403p6007* - ID_PRODUCT_FROM_DATABASE=Serial Converter - -usb:v0403p6008* - ID_PRODUCT_FROM_DATABASE=Serial Converter - -usb:v0403p6009* - ID_PRODUCT_FROM_DATABASE=Serial Converter - -usb:v0403p6010* - ID_PRODUCT_FROM_DATABASE=FT2232C Dual USB-UART/FIFO IC - -usb:v0403p6011* - ID_PRODUCT_FROM_DATABASE=FT4232H Quad HS USB-UART/FIFO IC - -usb:v0403p6014* - ID_PRODUCT_FROM_DATABASE=FT232H Single HS USB-UART/FIFO IC - -usb:v0403p6015* - ID_PRODUCT_FROM_DATABASE=Bridge(I2C/SPI/UART/FIFO) - -usb:v0403p8028* - ID_PRODUCT_FROM_DATABASE=Dev board JTAG (FT232H based) - -usb:v0403p8040* - ID_PRODUCT_FROM_DATABASE=4 Port Hub - -usb:v0403p8070* - ID_PRODUCT_FROM_DATABASE=7 Port Hub - -usb:v0403p8370* - ID_PRODUCT_FROM_DATABASE=7 Port Hub - -usb:v0403p8371* - ID_PRODUCT_FROM_DATABASE=PS/2 Keyboard And Mouse - -usb:v0403p8372* - ID_PRODUCT_FROM_DATABASE=FT8U100AX Serial Port - -usb:v0403p8A28* - ID_PRODUCT_FROM_DATABASE=Rainforest Automation ZigBee Controller - -usb:v0403p8A98* - ID_PRODUCT_FROM_DATABASE=TIAO Multi-Protocol Adapter - -usb:v0403p9E90* - ID_PRODUCT_FROM_DATABASE=Marvell OpenRD Base/Client - -usb:v0403p9F80* - ID_PRODUCT_FROM_DATABASE=Ewert Energy Systems CANdapter - -usb:v0403pA6D0* - ID_PRODUCT_FROM_DATABASE=Texas Instruments XDS100v2 JTAG / BeagleBone A3 - -usb:v0403pA951* - ID_PRODUCT_FROM_DATABASE=HCP HIT GSM/GPRS modem [Cinterion MC55i] - -usb:v0403pABB8* - ID_PRODUCT_FROM_DATABASE=Lego Mindstorms NXTCam - -usb:v0403pB810* - ID_PRODUCT_FROM_DATABASE=US Interface Navigator (CAT and 2nd PTT lines) - -usb:v0403pB811* - ID_PRODUCT_FROM_DATABASE=US Interface Navigator (WKEY and FSK lines) - -usb:v0403pB812* - ID_PRODUCT_FROM_DATABASE=US Interface Navigator (RS232 and CONFIG lines) - -usb:v0403pB9B0* - ID_PRODUCT_FROM_DATABASE=Fujitsu SK-16FX-100PMC V1.1 - -usb:v0403pBAF8* - ID_PRODUCT_FROM_DATABASE=Amontec JTAGkey - -usb:v0403pBCD8* - ID_PRODUCT_FROM_DATABASE=Stellaris Development Board - -usb:v0403pBCD9* - ID_PRODUCT_FROM_DATABASE=Stellaris Evaluation Board - -usb:v0403pBCDA* - ID_PRODUCT_FROM_DATABASE=Stellaris ICDI Board - -usb:v0403pBDC8* - ID_PRODUCT_FROM_DATABASE=Egnite GmbH - JTAG/RS-232 adapter - -usb:v0403pBFD8* - ID_PRODUCT_FROM_DATABASE=OpenDCC - -usb:v0403pBFD9* - ID_PRODUCT_FROM_DATABASE=OpenDCC (Sniffer) - -usb:v0403pBFDA* - ID_PRODUCT_FROM_DATABASE=OpenDCC (Throttle) - -usb:v0403pBFDB* - ID_PRODUCT_FROM_DATABASE=OpenDCC (Gateway) - -usb:v0403pBFDC* - ID_PRODUCT_FROM_DATABASE=OpenDCC (GBM) - -usb:v0403pC630* - ID_PRODUCT_FROM_DATABASE=lcd2usb interface - -usb:v0403pC631* - ID_PRODUCT_FROM_DATABASE=i2c-tiny-usb interface - -usb:v0403pC632* - ID_PRODUCT_FROM_DATABASE=xu1541 c64 floppy drive interface - -usb:v0403pC633* - ID_PRODUCT_FROM_DATABASE=TinyCrypt dongle - -usb:v0403pC634* - ID_PRODUCT_FROM_DATABASE=glcd2usb interface - -usb:v0403pC7D0* - ID_PRODUCT_FROM_DATABASE=RR-CirKits LocoBuffer-USB - -usb:v0403pC8B8* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte MTD TCU - -usb:v0403pC8B9* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte MTD TCU 1HE - -usb:v0403pC8BA* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte Rubidium H1 - -usb:v0403pC8BB* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte Rubidium H3 - -usb:v0403pC8BC* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte Rubidium S1 - -usb:v0403pC8BD* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte Rubidium T1 - -usb:v0403pC8BE* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte Rubidium D1 - -usb:v0403pCC48* - ID_PRODUCT_FROM_DATABASE=Tactrix OpenPort 1.3 Mitsubishi - -usb:v0403pCC49* - ID_PRODUCT_FROM_DATABASE=Tactrix OpenPort 1.3 Subaru - -usb:v0403pCC4A* - ID_PRODUCT_FROM_DATABASE=Tactrix OpenPort 1.3 Universal - -usb:v0403pCFF8* - ID_PRODUCT_FROM_DATABASE=Amontec JTAGkey - -usb:v0403pD010* - ID_PRODUCT_FROM_DATABASE=SCS PTC-IIusb - -usb:v0403pD011* - ID_PRODUCT_FROM_DATABASE=SCS Position-Tracker/TNC - -usb:v0403pD012* - ID_PRODUCT_FROM_DATABASE=SCS DRAGON 1 - -usb:v0403pD013* - ID_PRODUCT_FROM_DATABASE=SCS DRAGON 1 - -usb:v0403pD491* - ID_PRODUCT_FROM_DATABASE=Zolix Omni 1509 monochromator - -usb:v0403pD578* - ID_PRODUCT_FROM_DATABASE=Accesio USB-COM-4SM - -usb:v0403pD6F8* - ID_PRODUCT_FROM_DATABASE=UNI Black BOX - -usb:v0403pD738* - ID_PRODUCT_FROM_DATABASE=Propox JTAGcable II - -usb:v0403pD739* - ID_PRODUCT_FROM_DATABASE=Propox ISPcable III - -usb:v0403pD9A9* - ID_PRODUCT_FROM_DATABASE=Actisense USG-1 NMEA Serial Gateway - -usb:v0403pD9AA* - ID_PRODUCT_FROM_DATABASE=Actisense NGT-1 NMEA2000 PC Interface - -usb:v0403pE0D0* - ID_PRODUCT_FROM_DATABASE=Total Phase Aardvark I2C/SPI Host Adapter - -usb:v0403pE521* - ID_PRODUCT_FROM_DATABASE=EVER Sinline XL Series UPS - -usb:v0403pE6C8* - ID_PRODUCT_FROM_DATABASE=PYRAMID Computer GmbH LCD - -usb:v0403pE700* - ID_PRODUCT_FROM_DATABASE=Elster Unicom III Optical Probe - -usb:v0403pE729* - ID_PRODUCT_FROM_DATABASE=Segway Robotic Mobility Platforms 200 - -usb:v0403pE888* - ID_PRODUCT_FROM_DATABASE=Expert ISDN Control USB - -usb:v0403pE889* - ID_PRODUCT_FROM_DATABASE=USB-RS232 OptoBridge - -usb:v0403pE88A* - ID_PRODUCT_FROM_DATABASE=Expert mouseCLOCK USB II - -usb:v0403pE88B* - ID_PRODUCT_FROM_DATABASE=Precision Clock MSF USB - -usb:v0403pE88C* - ID_PRODUCT_FROM_DATABASE=Expert mouseCLOCK USB II HBG - -usb:v0403pE8D8* - ID_PRODUCT_FROM_DATABASE=Aaronia AG Spectran Spectrum Analyzer - -usb:v0403pE8DC* - ID_PRODUCT_FROM_DATABASE=Aaronia AG UBBV Preamplifier - -usb:v0403pEA90* - ID_PRODUCT_FROM_DATABASE=Eclo 1-Wire Adapter - -usb:v0403pED71* - ID_PRODUCT_FROM_DATABASE=HAMEG HO870 Serial Port - -usb:v0403pED72* - ID_PRODUCT_FROM_DATABASE=HAMEG HO720 Serial Port - -usb:v0403pED73* - ID_PRODUCT_FROM_DATABASE=HAMEG HO730 Serial Port - -usb:v0403pED74* - ID_PRODUCT_FROM_DATABASE=HAMEG HO820 Serial Port - -usb:v0403pEF10* - ID_PRODUCT_FROM_DATABASE=FT1245BL - -usb:v0403pF070* - ID_PRODUCT_FROM_DATABASE=Serial Converter 422/485 [Vardaan VEUSB422R3] - -usb:v0403pF1A0* - ID_PRODUCT_FROM_DATABASE=Asix PRESTO Programmer - -usb:v0403pF208* - ID_PRODUCT_FROM_DATABASE=Papenmeier Braille-Display - -usb:v0403pF3C0* - ID_PRODUCT_FROM_DATABASE=4N-GALAXY Serial Converter - -usb:v0403pF608* - ID_PRODUCT_FROM_DATABASE=CTI USB-485-Mini - -usb:v0403pF60B* - ID_PRODUCT_FROM_DATABASE=CTI USB-Nano-485 - -usb:v0403pF680* - ID_PRODUCT_FROM_DATABASE=Suunto Sports Instrument - -usb:v0403pF758* - ID_PRODUCT_FROM_DATABASE=GW Instek GDS-8x0 Oscilloscope - -usb:v0403pF7C0* - ID_PRODUCT_FROM_DATABASE=ZeitControl Cardsystems TagTracer MIFARE - -usb:v0403pF850* - ID_PRODUCT_FROM_DATABASE=USB-UIRT (Universal Infrared Receiver+Transmitter) - -usb:v0403pF918* - ID_PRODUCT_FROM_DATABASE=Ant8 Logic Probe - -usb:v0403pFA00* - ID_PRODUCT_FROM_DATABASE=Matrix Orbital USB Serial - -usb:v0403pFA01* - ID_PRODUCT_FROM_DATABASE=Matrix Orbital MX2 or MX3 - -usb:v0403pFA02* - ID_PRODUCT_FROM_DATABASE=Matrix Orbital MX4 or MX5 - -usb:v0403pFA03* - ID_PRODUCT_FROM_DATABASE=Matrix Orbital VK/LK202 Family - -usb:v0403pFA04* - ID_PRODUCT_FROM_DATABASE=Matrix Orbital VK/LK204 Family - -usb:v0403pFA20* - ID_PRODUCT_FROM_DATABASE=Ross-Tech HEX-USB - -usb:v0403pFC08* - ID_PRODUCT_FROM_DATABASE=Crystalfontz CFA-632 USB LCD - -usb:v0403pFC09* - ID_PRODUCT_FROM_DATABASE=Crystalfontz CFA-634 USB LCD - -usb:v0403pFC0B* - ID_PRODUCT_FROM_DATABASE=Crystalfontz CFA-633 USB LCD - -usb:v0403pFC0C* - ID_PRODUCT_FROM_DATABASE=Crystalfontz CFA-631 USB LCD - -usb:v0403pFC0D* - ID_PRODUCT_FROM_DATABASE=Crystalfontz CFA-635 USB LCD - -usb:v0403pFC82* - ID_PRODUCT_FROM_DATABASE=SEMC DSS-20/DSS-25 SyncStation - -usb:v0403pFD48* - ID_PRODUCT_FROM_DATABASE=ShipModul MiniPlex-4xUSB NMEA Multiplexer - -usb:v0403pFD49* - ID_PRODUCT_FROM_DATABASE=ShipModul MiniPlex-4xUSB-AIS NMEA Multiplexer - -usb:v0403pFF08* - ID_PRODUCT_FROM_DATABASE=ToolHouse LoopBack Adapter - -usb:v0403pFF18* - ID_PRODUCT_FROM_DATABASE=ScienceScope Logbook ML - -usb:v0403pFF19* - ID_PRODUCT_FROM_DATABASE=Logbook Bus - -usb:v0403pFF1A* - ID_PRODUCT_FROM_DATABASE=Logbook Bus - -usb:v0403pFF1B* - ID_PRODUCT_FROM_DATABASE=Logbook Bus - -usb:v0403pFF1C* - ID_PRODUCT_FROM_DATABASE=ScienceScope Logbook LS - -usb:v0403pFF1D* - ID_PRODUCT_FROM_DATABASE=ScienceScope Logbook HS - -usb:v0403pFF1E* - ID_PRODUCT_FROM_DATABASE=Logbook Bus - -usb:v0403pFF1F* - ID_PRODUCT_FROM_DATABASE=Logbook Bus - -usb:v0404* - ID_VENDOR_FROM_DATABASE=NCR Corp. - -usb:v0404p0202* - ID_PRODUCT_FROM_DATABASE=78XX Scanner - -usb:v0404p0203* - ID_PRODUCT_FROM_DATABASE=78XX Scanner - Embedded System - -usb:v0404p0310* - ID_PRODUCT_FROM_DATABASE=K590 Printer, Self-Service - -usb:v0404p0311* - ID_PRODUCT_FROM_DATABASE=7167 Printer, Receipt/Slip - -usb:v0404p0312* - ID_PRODUCT_FROM_DATABASE=7197 Printer Receipt - -usb:v0404p0320* - ID_PRODUCT_FROM_DATABASE=5932-USB Keyboard - -usb:v0404p0321* - ID_PRODUCT_FROM_DATABASE=5953-USB Dynakey - -usb:v0404p0322* - ID_PRODUCT_FROM_DATABASE=5932-USB Enhanced Keyboard - -usb:v0404p0323* - ID_PRODUCT_FROM_DATABASE=5932-USB Enhanced Keyboard, Flash-Recovery/Download - -usb:v0404p0324* - ID_PRODUCT_FROM_DATABASE=5953-USB Enhanced Dynakey - -usb:v0404p0325* - ID_PRODUCT_FROM_DATABASE=5953-USB Enhanced Dynakey Flash-Recovery/Download - -usb:v0404p0328* - ID_PRODUCT_FROM_DATABASE=K016: USB-MSR ISO 3-track MSR: POS Standard (See HID pages) - -usb:v0404p0329* - ID_PRODUCT_FROM_DATABASE=K018: USB-MSR JIS 2-Track MSR: POS Standard - -usb:v0404p032A* - ID_PRODUCT_FROM_DATABASE=K016: USB-MSR ISO 3-Track MSR: HID Keyboard Mode - -usb:v0404p032B* - ID_PRODUCT_FROM_DATABASE=K016/K018: USB-MSR Flash-Recovery/Download - -usb:v0405* - ID_VENDOR_FROM_DATABASE=Synopsys, Inc. - -usb:v0406* - ID_VENDOR_FROM_DATABASE=Fujitsu-ICL Computers - -usb:v0407* - ID_VENDOR_FROM_DATABASE=Fujitsu Personal Systems, Inc. - -usb:v0408* - ID_VENDOR_FROM_DATABASE=Quanta Computer, Inc. - -usb:v0408p0103* - ID_PRODUCT_FROM_DATABASE=FV TouchCam N1 (Audio) - -usb:v0408p030C* - ID_PRODUCT_FROM_DATABASE=HP Webcam - -usb:v0408p03B2* - ID_PRODUCT_FROM_DATABASE=HP Webcam - -usb:v0408p1030* - ID_PRODUCT_FROM_DATABASE=FV TouchCam N1 (Video) - -usb:v0408p3000* - ID_PRODUCT_FROM_DATABASE=Optical dual-touch panel - -usb:v0408p3001* - ID_PRODUCT_FROM_DATABASE=Optical Touch Screen - -usb:v0409* - ID_VENDOR_FROM_DATABASE=NEC Corp. - -usb:v0409p0011* - ID_PRODUCT_FROM_DATABASE=PC98 Series Layout Keyboard Mouse - -usb:v0409p0012* - ID_PRODUCT_FROM_DATABASE=ATerm IT75DSU ISDN TA - -usb:v0409p0014* - ID_PRODUCT_FROM_DATABASE=Japanese Keyboard - -usb:v0409p0019* - ID_PRODUCT_FROM_DATABASE=109 Japanese Keyboard with Bus-Powered Hub - -usb:v0409p001A* - ID_PRODUCT_FROM_DATABASE=PC98 Series Layout Keyboard with Bus-Powered Hub - -usb:v0409p0025* - ID_PRODUCT_FROM_DATABASE=Mini Keyboard with Bus-Powered Hub - -usb:v0409p0027* - ID_PRODUCT_FROM_DATABASE=MultiSync Monitor - -usb:v0409p002C* - ID_PRODUCT_FROM_DATABASE=Clik!-USB Drive - -usb:v0409p0034* - ID_PRODUCT_FROM_DATABASE=109 Japanese Keyboard with One-touch start buttons - -usb:v0409p003F* - ID_PRODUCT_FROM_DATABASE=Wireless Keyboard with One-touch start buttons - -usb:v0409p0040* - ID_PRODUCT_FROM_DATABASE=Floppy - -usb:v0409p004E* - ID_PRODUCT_FROM_DATABASE=SuperScript 1400 Series - -usb:v0409p004F* - ID_PRODUCT_FROM_DATABASE=Wireless Keyboard with One-touch start buttons - -usb:v0409p0050* - ID_PRODUCT_FROM_DATABASE=7-port hub - -usb:v0409p0058* - ID_PRODUCT_FROM_DATABASE=HighSpeed Hub - -usb:v0409p0059* - ID_PRODUCT_FROM_DATABASE=HighSpeed Hub - -usb:v0409p005A* - ID_PRODUCT_FROM_DATABASE=HighSpeed Hub - -usb:v0409p006A* - ID_PRODUCT_FROM_DATABASE=Conceptronic USB Harddisk Box - -usb:v0409p007D* - ID_PRODUCT_FROM_DATABASE=MINICUBE2 - -usb:v0409p007E* - ID_PRODUCT_FROM_DATABASE=PG-FP5 Flash Memory Programmer - -usb:v0409p0081* - ID_PRODUCT_FROM_DATABASE=SuperScript 1400 Series - -usb:v0409p0082* - ID_PRODUCT_FROM_DATABASE=SuperScript 1400 Series - -usb:v0409p0094* - ID_PRODUCT_FROM_DATABASE=Japanese Keyboard with One-touch start buttons - -usb:v0409p0095* - ID_PRODUCT_FROM_DATABASE=Japanese Keyboard - -usb:v0409p00A9* - ID_PRODUCT_FROM_DATABASE=AtermIT21L 128K Support Standard - -usb:v0409p00AA* - ID_PRODUCT_FROM_DATABASE=AtermITX72 128K Support Standard - -usb:v0409p00AB* - ID_PRODUCT_FROM_DATABASE=AtermITX62 128K Support Standard - -usb:v0409p00AC* - ID_PRODUCT_FROM_DATABASE=AtermIT42 128K Support Standard - -usb:v0409p00AE* - ID_PRODUCT_FROM_DATABASE=INSMATEV70G-MAX Standard - -usb:v0409p00AF* - ID_PRODUCT_FROM_DATABASE=AtermITX70 128K Support Standard - -usb:v0409p00B0* - ID_PRODUCT_FROM_DATABASE=AtermITX80 128K Support Standard - -usb:v0409p00B2* - ID_PRODUCT_FROM_DATABASE=AtermITX80D 128K Support Standard - -usb:v0409p00C0* - ID_PRODUCT_FROM_DATABASE=Wireless Remocon - -usb:v0409p00F7* - ID_PRODUCT_FROM_DATABASE=Smart Display PK-SD10 - -usb:v0409p011D* - ID_PRODUCT_FROM_DATABASE=e228 Mobile Phone - -usb:v0409p0203* - ID_PRODUCT_FROM_DATABASE=HID Audio Controls - -usb:v0409p021D* - ID_PRODUCT_FROM_DATABASE=Aterm WL54SU2 802.11g Wireless Adapter [Atheros AR5523] - -usb:v0409p0248* - ID_PRODUCT_FROM_DATABASE=Aterm PA-WL54GU - -usb:v0409p0249* - ID_PRODUCT_FROM_DATABASE=Aterm WL300NU-G - -usb:v0409p02B4* - ID_PRODUCT_FROM_DATABASE=Aterm WL300NU-AG - -usb:v0409p02B6* - ID_PRODUCT_FROM_DATABASE=Aterm WL300NU-GS 802.11n Wireless Adapter - -usb:v0409p0300* - ID_PRODUCT_FROM_DATABASE=LifeTouch Note - -usb:v0409p0301* - ID_PRODUCT_FROM_DATABASE=LifeTouch Note (debug mode) - -usb:v0409p55AA* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v0409p55AB* - ID_PRODUCT_FROM_DATABASE=Hub [iMac/iTouch kbd] - -usb:v0409p8010* - ID_PRODUCT_FROM_DATABASE=Intellibase Hub - -usb:v0409p8011* - ID_PRODUCT_FROM_DATABASE=Intellibase Hub - -usb:v0409pEFBE* - ID_PRODUCT_FROM_DATABASE=P!cty 900 [HP DJ] - -usb:v0409pF0BE* - ID_PRODUCT_FROM_DATABASE=P!cty 920 [HP DJ 812c] - -usb:v040A* - ID_VENDOR_FROM_DATABASE=Kodak Co. - -usb:v040Ap0001* - ID_PRODUCT_FROM_DATABASE=DVC-323 - -usb:v040Ap0002* - ID_PRODUCT_FROM_DATABASE=DVC-325 - -usb:v040Ap0100* - ID_PRODUCT_FROM_DATABASE=DC-220 - -usb:v040Ap0110* - ID_PRODUCT_FROM_DATABASE=DC-260 - -usb:v040Ap0111* - ID_PRODUCT_FROM_DATABASE=DC-265 - -usb:v040Ap0112* - ID_PRODUCT_FROM_DATABASE=DC-290 - -usb:v040Ap0120* - ID_PRODUCT_FROM_DATABASE=DC-240 - -usb:v040Ap0121* - ID_PRODUCT_FROM_DATABASE=DC-240 (PTP firmware) - -usb:v040Ap0130* - ID_PRODUCT_FROM_DATABASE=DC-280 - -usb:v040Ap0131* - ID_PRODUCT_FROM_DATABASE=DC-5000 - -usb:v040Ap0132* - ID_PRODUCT_FROM_DATABASE=DC-3400 - -usb:v040Ap0140* - ID_PRODUCT_FROM_DATABASE=DC-4800 - -usb:v040Ap0160* - ID_PRODUCT_FROM_DATABASE=DC4800 - -usb:v040Ap0170* - ID_PRODUCT_FROM_DATABASE=DX3900 - -usb:v040Ap0200* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0300* - ID_PRODUCT_FROM_DATABASE=EZ-200 - -usb:v040Ap0400* - ID_PRODUCT_FROM_DATABASE=MC3 - -usb:v040Ap0402* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0403* - ID_PRODUCT_FROM_DATABASE=Z7590 - -usb:v040Ap0500* - ID_PRODUCT_FROM_DATABASE=DX3500 - -usb:v040Ap0510* - ID_PRODUCT_FROM_DATABASE=DX3600 - -usb:v040Ap0525* - ID_PRODUCT_FROM_DATABASE=DX3215 - -usb:v040Ap0530* - ID_PRODUCT_FROM_DATABASE=DX3700 - -usb:v040Ap0535* - ID_PRODUCT_FROM_DATABASE=EasyShare CX4230 Camera - -usb:v040Ap0540* - ID_PRODUCT_FROM_DATABASE=LS420 - -usb:v040Ap0550* - ID_PRODUCT_FROM_DATABASE=DX4900 - -usb:v040Ap0555* - ID_PRODUCT_FROM_DATABASE=DX4330 - -usb:v040Ap0560* - ID_PRODUCT_FROM_DATABASE=CX4200 - -usb:v040Ap0565* - ID_PRODUCT_FROM_DATABASE=CX4210 - -usb:v040Ap0566* - ID_PRODUCT_FROM_DATABASE=CX4300 - -usb:v040Ap0567* - ID_PRODUCT_FROM_DATABASE=LS753 - -usb:v040Ap0568* - ID_PRODUCT_FROM_DATABASE=LS443 - -usb:v040Ap0569* - ID_PRODUCT_FROM_DATABASE=LS663 - -usb:v040Ap0570* - ID_PRODUCT_FROM_DATABASE=DX6340 - -usb:v040Ap0571* - ID_PRODUCT_FROM_DATABASE=CX6330 - -usb:v040Ap0572* - ID_PRODUCT_FROM_DATABASE=DX6440 - -usb:v040Ap0573* - ID_PRODUCT_FROM_DATABASE=CX6230 - -usb:v040Ap0574* - ID_PRODUCT_FROM_DATABASE=CX6200 - -usb:v040Ap0575* - ID_PRODUCT_FROM_DATABASE=DX6490 - -usb:v040Ap0576* - ID_PRODUCT_FROM_DATABASE=DX4530 - -usb:v040Ap0577* - ID_PRODUCT_FROM_DATABASE=DX7630 - -usb:v040Ap0578* - ID_PRODUCT_FROM_DATABASE=CX7300/CX7310 - -usb:v040Ap0579* - ID_PRODUCT_FROM_DATABASE=CX7220 - -usb:v040Ap057A* - ID_PRODUCT_FROM_DATABASE=CX7330 - -usb:v040Ap057B* - ID_PRODUCT_FROM_DATABASE=CX7430 - -usb:v040Ap057C* - ID_PRODUCT_FROM_DATABASE=CX7530 - -usb:v040Ap057D* - ID_PRODUCT_FROM_DATABASE=DX7440 - -usb:v040Ap057E* - ID_PRODUCT_FROM_DATABASE=C300 - -usb:v040Ap057F* - ID_PRODUCT_FROM_DATABASE=DX7590 - -usb:v040Ap0580* - ID_PRODUCT_FROM_DATABASE=Z730 - -usb:v040Ap0581* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0582* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0583* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0584* - ID_PRODUCT_FROM_DATABASE=CX6445 - -usb:v040Ap0585* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0586* - ID_PRODUCT_FROM_DATABASE=CX7525 - -usb:v040Ap0587* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0588* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0589* - ID_PRODUCT_FROM_DATABASE=EasyShare C360 - -usb:v040Ap058A* - ID_PRODUCT_FROM_DATABASE=C310 - -usb:v040Ap058B* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap058C* - ID_PRODUCT_FROM_DATABASE=C330 - -usb:v040Ap058D* - ID_PRODUCT_FROM_DATABASE=C340 - -usb:v040Ap058E* - ID_PRODUCT_FROM_DATABASE=V530 - -usb:v040Ap058F* - ID_PRODUCT_FROM_DATABASE=V550 - -usb:v040Ap0590* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0591* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0592* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0593* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0594* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0595* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0596* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0597* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap0598* - ID_PRODUCT_FROM_DATABASE=EASYSHARE M1033 digital camera - -usb:v040Ap0599* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap059A* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap059B* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap059C* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap059D* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap059E* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap059F* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05A0* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05A1* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05A2* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05A3* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05A4* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05A5* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05A6* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05A7* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05A8* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05A9* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05AA* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05AB* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05AC* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05AD* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05AE* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05AF* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05B0* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05B1* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05B2* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05B3* - ID_PRODUCT_FROM_DATABASE=EasyShare Z710 Camera - -usb:v040Ap05B4* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05B5* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05B6* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05B7* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05B8* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05B9* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05BA* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05BB* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05BC* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05BD* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05BE* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05BF* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05C0* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05C1* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05C2* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05C3* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05C4* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05C5* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v040Ap05C8* - ID_PRODUCT_FROM_DATABASE=EASYSHARE Z1485 IS Digital Camera - -usb:v040Ap05D3* - ID_PRODUCT_FROM_DATABASE=EasyShare M320 Camera - -usb:v040Ap05D4* - ID_PRODUCT_FROM_DATABASE=EasyShare C180 Digital Camera - -usb:v040Ap1001* - ID_PRODUCT_FROM_DATABASE=EasyShare SV811 Digital Picture Frame - -usb:v040Ap4000* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v040Ap4022* - ID_PRODUCT_FROM_DATABASE=1400 Digital Photo Printer - -usb:v040Ap4056* - ID_PRODUCT_FROM_DATABASE=ESP 7200 Series AiO - -usb:v040Ap4109* - ID_PRODUCT_FROM_DATABASE=EasyShare Printer Dock Series 3 - -usb:v040Ap410D* - ID_PRODUCT_FROM_DATABASE=EasyShare G600 Printer Dock - -usb:v040Ap5010* - ID_PRODUCT_FROM_DATABASE=Wireless Adapter - -usb:v040Ap5012* - ID_PRODUCT_FROM_DATABASE=DBT-220 Bluetooth Adapter - -usb:v040Ap6001* - ID_PRODUCT_FROM_DATABASE=i30 - -usb:v040Ap6002* - ID_PRODUCT_FROM_DATABASE=i40 - -usb:v040Ap6003* - ID_PRODUCT_FROM_DATABASE=i50 - -usb:v040Ap6004* - ID_PRODUCT_FROM_DATABASE=i60 - -usb:v040Ap6005* - ID_PRODUCT_FROM_DATABASE=i80 - -usb:v040B* - ID_VENDOR_FROM_DATABASE=Weltrend Semiconductor - -usb:v040Bp6510* - ID_PRODUCT_FROM_DATABASE=Weltrend Bar Code Reader - -usb:v040Bp6520* - ID_PRODUCT_FROM_DATABASE=XBOX Xploder - -usb:v040Bp6533* - ID_PRODUCT_FROM_DATABASE=Speed-Link Competition Pro - -usb:v040Bp6543* - ID_PRODUCT_FROM_DATABASE=Manhattan Magnetic Card Strip Reader - -usb:v040C* - ID_VENDOR_FROM_DATABASE=VTech Computers, Ltd - -usb:v040D* - ID_VENDOR_FROM_DATABASE=VIA Technologies, Inc. - -usb:v040Dp3184* - ID_PRODUCT_FROM_DATABASE=VNT VT6656 USB-802.11 Wireless LAN Adapter - -usb:v040Dp6205* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Card Reader - -usb:v040E* - ID_VENDOR_FROM_DATABASE=MCCI - -usb:v040F* - ID_VENDOR_FROM_DATABASE=Echo Speech Corp. - -usb:v0411* - ID_VENDOR_FROM_DATABASE=BUFFALO INC. (formerly MelCo., Inc.) - -usb:v0411p0001* - ID_PRODUCT_FROM_DATABASE=LUA-TX Ethernet [pegasus] - -usb:v0411p0005* - ID_PRODUCT_FROM_DATABASE=LUA-TX Ethernet - -usb:v0411p0006* - ID_PRODUCT_FROM_DATABASE=WLI-USB-L11 Wireless LAN Adapter - -usb:v0411p0009* - ID_PRODUCT_FROM_DATABASE=LUA2-TX Ethernet - -usb:v0411p000B* - ID_PRODUCT_FROM_DATABASE=WLI-USB-L11G-WR Wireless LAN Adapter - -usb:v0411p000D* - ID_PRODUCT_FROM_DATABASE=WLI-USB-L11G Wireless LAN Adapter - -usb:v0411p0012* - ID_PRODUCT_FROM_DATABASE=LUA-KTX Ethernet - -usb:v0411p0013* - ID_PRODUCT_FROM_DATABASE=USB2-IDE Adapter - -usb:v0411p0016* - ID_PRODUCT_FROM_DATABASE=WLI-USB-S11 802.11b Adapter - -usb:v0411p0018* - ID_PRODUCT_FROM_DATABASE=USB2-IDE Adapter - -usb:v0411p001C* - ID_PRODUCT_FROM_DATABASE=USB-IDE Bridge: DUB-PxxG - -usb:v0411p0027* - ID_PRODUCT_FROM_DATABASE=WLI-USB-KS11G 802.11b Adapter - -usb:v0411p002A* - ID_PRODUCT_FROM_DATABASE=SMSC USB97C202 "HD-HB300V2-EU" - -usb:v0411p003D* - ID_PRODUCT_FROM_DATABASE=LUA-U2-KTX Ethernet - -usb:v0411p0044* - ID_PRODUCT_FROM_DATABASE=WLI-USB-KB11 Wireless LAN Adapter - -usb:v0411p004B* - ID_PRODUCT_FROM_DATABASE=WLI-USB-G54 802.11g Adapter [Broadcom 4320 USB] - -usb:v0411p004D* - ID_PRODUCT_FROM_DATABASE=WLI-USB-B11 Wireless LAN Adapter - -usb:v0411p0050* - ID_PRODUCT_FROM_DATABASE=WLI2-USB2-G54 Wireless LAN Adapter - -usb:v0411p005E* - ID_PRODUCT_FROM_DATABASE=WLI-U2-KG54-YB WLAN - -usb:v0411p0065* - ID_PRODUCT_FROM_DATABASE=Python2 WDM Encoder - -usb:v0411p0066* - ID_PRODUCT_FROM_DATABASE=WLI-U2-KG54 WLAN - -usb:v0411p0067* - ID_PRODUCT_FROM_DATABASE=WLI-U2-KG54-AI WLAN - -usb:v0411p006E* - ID_PRODUCT_FROM_DATABASE=LUA-U2-GT 10/100/1000 Ethernet Adapter - -usb:v0411p0089* - ID_PRODUCT_FROM_DATABASE=RUF-C/U2 Flash Drive - -usb:v0411p008B* - ID_PRODUCT_FROM_DATABASE=Nintendo Wi-Fi - -usb:v0411p0091* - ID_PRODUCT_FROM_DATABASE=WLI-U2-KAMG54 Wireless LAN Adapter - -usb:v0411p0092* - ID_PRODUCT_FROM_DATABASE=WLI-U2-KAMG54 Bootloader - -usb:v0411p0097* - ID_PRODUCT_FROM_DATABASE=WLI-U2-KG54-BB - -usb:v0411p00A9* - ID_PRODUCT_FROM_DATABASE=WLI-U2-AMG54HP Wireless LAN Adapter - -usb:v0411p00AA* - ID_PRODUCT_FROM_DATABASE=WLI-U2-AMG54HP Bootloader - -usb:v0411p00B3* - ID_PRODUCT_FROM_DATABASE=PC-OP-RS1 RemoteStation - -usb:v0411p00BC* - ID_PRODUCT_FROM_DATABASE=WLI-U2-KG125S 802.11g Adapter [Broadcom 4320 USB] - -usb:v0411p00CA* - ID_PRODUCT_FROM_DATABASE=802.11n Network Adapter - -usb:v0411p00CB* - ID_PRODUCT_FROM_DATABASE=WLI-U2-G300N 802.11n Adapter - -usb:v0411p00D8* - ID_PRODUCT_FROM_DATABASE=WLI-U2-SG54HP - -usb:v0411p00D9* - ID_PRODUCT_FROM_DATABASE=WLI-U2-G54HP - -usb:v0411p00DA* - ID_PRODUCT_FROM_DATABASE=WLI-U2-KG54L 802.11bg [ZyDAS ZD1211B] - -usb:v0411p00DB* - ID_PRODUCT_FROM_DATABASE=External Hard Drive HD-PF32OU2 [Buffalo Ministation] - -usb:v0411p00E8* - ID_PRODUCT_FROM_DATABASE=WLI-UC-G300N Wireless LAN Adapter [Ralink RT2870] - -usb:v0411p0105* - ID_PRODUCT_FROM_DATABASE=External Hard Drive HD-CEU2 [Drive Station] - -usb:v0411p012E* - ID_PRODUCT_FROM_DATABASE=WLI-UC-AG300N Wireless LAN Adapter - -usb:v0411p0148* - ID_PRODUCT_FROM_DATABASE=WLI-UC-G300HP Wireless LAN Adapter - -usb:v0411p0150* - ID_PRODUCT_FROM_DATABASE=WLP-UC-AG300 Wireless LAN Adapter - -usb:v0411p0157* - ID_PRODUCT_FROM_DATABASE=External Hard Drive HD-PEU2 - -usb:v0411p0158* - ID_PRODUCT_FROM_DATABASE=WLI-UC-GNHP Wireless LAN Adapter - -usb:v0411p015D* - ID_PRODUCT_FROM_DATABASE=WLI-UC-GN Wireless LAN Adapter [Ralink RT3070] - -usb:v0411p016F* - ID_PRODUCT_FROM_DATABASE=WLI-UC-G301N Wireless LAN Adapter [Ralink RT3072] - -usb:v0411p017F* - ID_PRODUCT_FROM_DATABASE=Sony UWA-BR100 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] - -usb:v0411p019E* - ID_PRODUCT_FROM_DATABASE=WLI-UC-GNP Wireless LAN Adapter - -usb:v0411p01A1* - ID_PRODUCT_FROM_DATABASE=MiniStation Metro - -usb:v0411p01A2* - ID_PRODUCT_FROM_DATABASE=WLI-UC-GNM Wireless LAN Adapter [Ralink RT8070] - -usb:v0411p01DC* - ID_PRODUCT_FROM_DATABASE=Ultra-Slim Portable DVD Writer (DVSM-PC58U2V) - -usb:v0411p01DE* - ID_PRODUCT_FROM_DATABASE=External Hard Drive HD-PCTU3 [Buffalo MiniStation] - -usb:v0411p01EE* - ID_PRODUCT_FROM_DATABASE=WLI-UC-GNM2 Wireless LAN Adapter [Ralink RT3070] - -usb:v0411p01F1* - ID_PRODUCT_FROM_DATABASE=SATA Adapter [HD-LBU3] - -usb:v0411p01FD* - ID_PRODUCT_FROM_DATABASE=WLI-UC-G450 Wireless LAN Adapter - -usb:v0412* - ID_VENDOR_FROM_DATABASE=Award Software International - -usb:v0413* - ID_VENDOR_FROM_DATABASE=Leadtek Research, Inc. - -usb:v0413p1310* - ID_PRODUCT_FROM_DATABASE=WinFast TV - NTSC + FM - -usb:v0413p1311* - ID_PRODUCT_FROM_DATABASE=WinFast TV - NTSC + MTS + FM - -usb:v0413p1312* - ID_PRODUCT_FROM_DATABASE=WinFast TV - PAL BG + FM - -usb:v0413p1313* - ID_PRODUCT_FROM_DATABASE=WinFast TV - PAL BG+TXT + FM - -usb:v0413p1314* - ID_PRODUCT_FROM_DATABASE=WinFast TV Audio - PHP PAL I - -usb:v0413p1315* - ID_PRODUCT_FROM_DATABASE=WinFast TV Audio - PHP PAL I+TXT - -usb:v0413p1316* - ID_PRODUCT_FROM_DATABASE=WinFast TV Audio - PHP PAL DK - -usb:v0413p1317* - ID_PRODUCT_FROM_DATABASE=WinFast TV Audio - PHP PAL DK+TXT - -usb:v0413p1318* - ID_PRODUCT_FROM_DATABASE=WinFast TV - PAL I/DK + FM - -usb:v0413p1319* - ID_PRODUCT_FROM_DATABASE=WinFast TV - PAL N + FM - -usb:v0413p131A* - ID_PRODUCT_FROM_DATABASE=WinFast TV Audio - PHP SECAM LL - -usb:v0413p131B* - ID_PRODUCT_FROM_DATABASE=WinFast TV Audio - PHP SECAM LL+TXT - -usb:v0413p131C* - ID_PRODUCT_FROM_DATABASE=WinFast TV Audio - PHP SECAM DK - -usb:v0413p131D* - ID_PRODUCT_FROM_DATABASE=WinFast TV - SECAM DK + TXT + FM - -usb:v0413p131E* - ID_PRODUCT_FROM_DATABASE=WinFast TV - NTSC Japan + FM - -usb:v0413p1320* - ID_PRODUCT_FROM_DATABASE=WinFast TV - NTSC - -usb:v0413p1321* - ID_PRODUCT_FROM_DATABASE=WinFast TV - NTSC + MTS - -usb:v0413p1322* - ID_PRODUCT_FROM_DATABASE=WinFast TV - PAL BG - -usb:v0413p1323* - ID_PRODUCT_FROM_DATABASE=WinFast TV - PAL BG+TXT - -usb:v0413p1324* - ID_PRODUCT_FROM_DATABASE=WinFast TV Audio - PHP PAL I - -usb:v0413p1325* - ID_PRODUCT_FROM_DATABASE=WinFast TV Audio - PHP PAL I+TXT - -usb:v0413p1326* - ID_PRODUCT_FROM_DATABASE=WinFast TV Audio - PHP PAL DK - -usb:v0413p1327* - ID_PRODUCT_FROM_DATABASE=WinFast TV Audio - PHP PAL DK+TXT - -usb:v0413p1328* - ID_PRODUCT_FROM_DATABASE=WinFast TV - PAL I/DK - -usb:v0413p1329* - ID_PRODUCT_FROM_DATABASE=WinFast TV - PAL N - -usb:v0413p132A* - ID_PRODUCT_FROM_DATABASE=WinFast TV Audio - PHP SECAM LL - -usb:v0413p132B* - ID_PRODUCT_FROM_DATABASE=WinFast TV Audio - PHP SECAM LL+TXT - -usb:v0413p132C* - ID_PRODUCT_FROM_DATABASE=WinFast TV Audio - PHP SECAM DK - -usb:v0413p132D* - ID_PRODUCT_FROM_DATABASE=WinFast TV - SECAM DK + TXT - -usb:v0413p132E* - ID_PRODUCT_FROM_DATABASE=WinFast TV - NTSC Japan - -usb:v0413p6023* - ID_PRODUCT_FROM_DATABASE=EMP Audio Device - -usb:v0413p6024* - ID_PRODUCT_FROM_DATABASE=WinFast PalmTop/Novo TV Video - -usb:v0413p6025* - ID_PRODUCT_FROM_DATABASE=WinFast DTV Dongle (cold state) - -usb:v0413p6026* - ID_PRODUCT_FROM_DATABASE=WinFast DTV Dongle (warm state) - -usb:v0413p6029* - ID_PRODUCT_FROM_DATABASE=WinFast DTV Dongle Gold - -usb:v0413p6125* - ID_PRODUCT_FROM_DATABASE=WinFast DTV Dongle - -usb:v0413p6126* - ID_PRODUCT_FROM_DATABASE=WinFast DTV Dongle BDA Driver - -usb:v0413p6A03* - ID_PRODUCT_FROM_DATABASE=RTL2832 [WinFast DTV Dongle Mini] - -usb:v0413p6F00* - ID_PRODUCT_FROM_DATABASE=WinFast DTV Dongle (STK7700P based) - -usb:v0414* - ID_VENDOR_FROM_DATABASE=Giga-Byte Technology Co., Ltd - -usb:v0416* - ID_VENDOR_FROM_DATABASE=Winbond Electronics Corp. - -usb:v0416p0035* - ID_PRODUCT_FROM_DATABASE=W89C35 802.11bg WLAN Adapter - -usb:v0416p0101* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v0416p0961* - ID_PRODUCT_FROM_DATABASE=AVL Flash Card Reader - -usb:v0416p3810* - ID_PRODUCT_FROM_DATABASE=Smart Card Controller - -usb:v0416p3811* - ID_PRODUCT_FROM_DATABASE=Generic Controller - Single interface - -usb:v0416p3812* - ID_PRODUCT_FROM_DATABASE=Smart Card Controller_2Interface - -usb:v0416p3813* - ID_PRODUCT_FROM_DATABASE=Panel Display - -usb:v0416p5011* - ID_PRODUCT_FROM_DATABASE=Virtual Com Port - -usb:v0416p5518* - ID_PRODUCT_FROM_DATABASE=4-Port Hub - -usb:v0416p551A* - ID_PRODUCT_FROM_DATABASE=PC Sync Keypad - -usb:v0416p551B* - ID_PRODUCT_FROM_DATABASE=PC Async Keypad - -usb:v0416p551C* - ID_PRODUCT_FROM_DATABASE=Sync Tenkey - -usb:v0416p551D* - ID_PRODUCT_FROM_DATABASE=Async Tenkey - -usb:v0416p551E* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v0416p551F* - ID_PRODUCT_FROM_DATABASE=Keyboard w/ Sys and Media - -usb:v0416p5521* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v0416p6481* - ID_PRODUCT_FROM_DATABASE=16-bit Scanner - -usb:v0416p7721* - ID_PRODUCT_FROM_DATABASE=Memory Stick Reader/Writer - -usb:v0416p7722* - ID_PRODUCT_FROM_DATABASE=Memory Stick Reader/Writer - -usb:v0416p7723* - ID_PRODUCT_FROM_DATABASE=SD Card Reader - -usb:v0417* - ID_VENDOR_FROM_DATABASE=Symbios Logic - -usb:v0418* - ID_VENDOR_FROM_DATABASE=AST Research - -usb:v0419* - ID_VENDOR_FROM_DATABASE=Samsung Info. Systems America, Inc. - -usb:v0419p0001* - ID_PRODUCT_FROM_DATABASE=IrDA Remote Controller / Creative Cordless Mouse - -usb:v0419p0600* - ID_PRODUCT_FROM_DATABASE=Desktop Wireless 6000 - -usb:v0419p3001* - ID_PRODUCT_FROM_DATABASE=Xerox P1202 Laser Printer - -usb:v0419p3003* - ID_PRODUCT_FROM_DATABASE=Olivetti PG L12L - -usb:v0419p3201* - ID_PRODUCT_FROM_DATABASE=Docuprint P8ex - -usb:v0419p3404* - ID_PRODUCT_FROM_DATABASE=SCX-5x12 series - -usb:v0419p3406* - ID_PRODUCT_FROM_DATABASE=MFP 830 series - -usb:v0419p3407* - ID_PRODUCT_FROM_DATABASE=ML-912 - -usb:v0419p3601* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v0419p3602* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v0419p4602* - ID_PRODUCT_FROM_DATABASE=Remote NDIS Network Device - -usb:v0419p8001* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v0419p8002* - ID_PRODUCT_FROM_DATABASE=SyncMaster HID Monitor Control - -usb:v0419pAA03* - ID_PRODUCT_FROM_DATABASE=SDAS-3 MP3 Player - -usb:v041A* - ID_VENDOR_FROM_DATABASE=Phoenix Technologies, Ltd - -usb:v041B* - ID_VENDOR_FROM_DATABASE=d'TV - -usb:v041D* - ID_VENDOR_FROM_DATABASE=S3, Inc. - -usb:v041E* - ID_VENDOR_FROM_DATABASE=Creative Technology, Ltd - -usb:v041Ep1002* - ID_PRODUCT_FROM_DATABASE=Nomad II - -usb:v041Ep1003* - ID_PRODUCT_FROM_DATABASE=Blaster GamePad Cobra - -usb:v041Ep1050* - ID_PRODUCT_FROM_DATABASE=GamePad Cobra - -usb:v041Ep1053* - ID_PRODUCT_FROM_DATABASE=Mouse Gamer HD7600L - -usb:v041Ep200C* - ID_PRODUCT_FROM_DATABASE=MuVo V100 - -usb:v041Ep2020* - ID_PRODUCT_FROM_DATABASE=Zen X-Fi 2 - -usb:v041Ep2029* - ID_PRODUCT_FROM_DATABASE=ZiiO - -usb:v041Ep2801* - ID_PRODUCT_FROM_DATABASE=Prodikeys PC-MIDI multifunction keyboard - -usb:v041Ep3000* - ID_PRODUCT_FROM_DATABASE=SoundBlaster Extigy - -usb:v041Ep3002* - ID_PRODUCT_FROM_DATABASE=SB External Composite Device - -usb:v041Ep3010* - ID_PRODUCT_FROM_DATABASE=SoundBlaster MP3+ - -usb:v041Ep3014* - ID_PRODUCT_FROM_DATABASE=SB External Composite Device - -usb:v041Ep3015* - ID_PRODUCT_FROM_DATABASE=Sound Blaster Digital Music LX - -usb:v041Ep3020* - ID_PRODUCT_FROM_DATABASE=SoundBlaster Audigy 2 NX - -usb:v041Ep3030* - ID_PRODUCT_FROM_DATABASE=SB External Composite Device - -usb:v041Ep3040* - ID_PRODUCT_FROM_DATABASE=SoundBlaster Live! 24-bit External SB0490 - -usb:v041Ep3060* - ID_PRODUCT_FROM_DATABASE=Sound Blaster Audigy 2 ZS External - -usb:v041Ep3061* - ID_PRODUCT_FROM_DATABASE=SoundBlaster Audigy 2 ZS Video Editor - -usb:v041Ep3090* - ID_PRODUCT_FROM_DATABASE=Sound Blaster Digital Music SX - -usb:v041Ep30D3* - ID_PRODUCT_FROM_DATABASE=Sound Blaster Play! - -usb:v041Ep3121* - ID_PRODUCT_FROM_DATABASE=WoW tap chat - -usb:v041Ep3220* - ID_PRODUCT_FROM_DATABASE=Sound Blaster Tactic(3D) Sigma sound card - -usb:v041Ep3F00* - ID_PRODUCT_FROM_DATABASE=E-Mu Xboard 25 MIDI Controller - -usb:v041Ep3F02* - ID_PRODUCT_FROM_DATABASE=E-Mu 0202 - -usb:v041Ep3F04* - ID_PRODUCT_FROM_DATABASE=E-Mu 0404 - -usb:v041Ep3F07* - ID_PRODUCT_FROM_DATABASE=E-Mu Xmidi 1x1 - -usb:v041Ep4003* - ID_PRODUCT_FROM_DATABASE=VideoBlaster Webcam Go Plus [W9967CF] - -usb:v041Ep4004* - ID_PRODUCT_FROM_DATABASE=Nomad II MG - -usb:v041Ep4005* - ID_PRODUCT_FROM_DATABASE=Webcam Blaster Go ES - -usb:v041Ep4007* - ID_PRODUCT_FROM_DATABASE=Go Mini - -usb:v041Ep400A* - ID_PRODUCT_FROM_DATABASE=PC-Cam 300 - -usb:v041Ep400B* - ID_PRODUCT_FROM_DATABASE=PC-Cam 600 - -usb:v041Ep400C* - ID_PRODUCT_FROM_DATABASE=Webcam 5 [pwc] - -usb:v041Ep400D* - ID_PRODUCT_FROM_DATABASE=Webcam PD1001 - -usb:v041Ep400F* - ID_PRODUCT_FROM_DATABASE=PC-CAM 550 (Composite) - -usb:v041Ep4011* - ID_PRODUCT_FROM_DATABASE=Webcam PRO eX - -usb:v041Ep4012* - ID_PRODUCT_FROM_DATABASE=PC-CAM350 - -usb:v041Ep4013* - ID_PRODUCT_FROM_DATABASE=PC-Cam 750 - -usb:v041Ep4015* - ID_PRODUCT_FROM_DATABASE=CardCam Value - -usb:v041Ep4016* - ID_PRODUCT_FROM_DATABASE=CardCam - -usb:v041Ep4017* - ID_PRODUCT_FROM_DATABASE=Webcam Mobile [PD1090] - -usb:v041Ep4018* - ID_PRODUCT_FROM_DATABASE=Webcam Vista [PD1100] - -usb:v041Ep4019* - ID_PRODUCT_FROM_DATABASE=Audio Device - -usb:v041Ep401A* - ID_PRODUCT_FROM_DATABASE=Webcam Vista [PD1100] - -usb:v041Ep401C* - ID_PRODUCT_FROM_DATABASE=Webcam NX [PD1110] - -usb:v041Ep401D* - ID_PRODUCT_FROM_DATABASE=Webcam NX Ultra - -usb:v041Ep401E* - ID_PRODUCT_FROM_DATABASE=Webcam NX Pro - -usb:v041Ep401F* - ID_PRODUCT_FROM_DATABASE=Webcam Notebook [PD1171] - -usb:v041Ep4020* - ID_PRODUCT_FROM_DATABASE=Webcam NX - -usb:v041Ep4021* - ID_PRODUCT_FROM_DATABASE=Webcam NX Ultra - -usb:v041Ep4022* - ID_PRODUCT_FROM_DATABASE=Webcam NX Pro - -usb:v041Ep4028* - ID_PRODUCT_FROM_DATABASE=Vista Plus cam [VF0090] - -usb:v041Ep4029* - ID_PRODUCT_FROM_DATABASE=Webcam Live! - -usb:v041Ep402F* - ID_PRODUCT_FROM_DATABASE=DC-CAM 3000Z - -usb:v041Ep4034* - ID_PRODUCT_FROM_DATABASE=Webcam Instant - -usb:v041Ep4035* - ID_PRODUCT_FROM_DATABASE=Webcam Instant - -usb:v041Ep4036* - ID_PRODUCT_FROM_DATABASE=Webcam Live!/Live! Pro - -usb:v041Ep4037* - ID_PRODUCT_FROM_DATABASE=Webcam Live! - -usb:v041Ep4038* - ID_PRODUCT_FROM_DATABASE=ORITE CCD Webcam [PC370R] - -usb:v041Ep4039* - ID_PRODUCT_FROM_DATABASE=Webcam Live! Effects - -usb:v041Ep403A* - ID_PRODUCT_FROM_DATABASE=Webcam NX Pro 2 - -usb:v041Ep403B* - ID_PRODUCT_FROM_DATABASE=Creative Webcam Vista [VF0010] - -usb:v041Ep403C* - ID_PRODUCT_FROM_DATABASE=Webcam Live! Ultra - -usb:v041Ep403D* - ID_PRODUCT_FROM_DATABASE=Webcam Notebook Ultra - -usb:v041Ep403E* - ID_PRODUCT_FROM_DATABASE=Webcam Vista Plus - -usb:v041Ep4041* - ID_PRODUCT_FROM_DATABASE=Webcam Live! Motion - -usb:v041Ep4043* - ID_PRODUCT_FROM_DATABASE=Vibra Plus Webcam - -usb:v041Ep4045* - ID_PRODUCT_FROM_DATABASE=Live! Cam Voice - -usb:v041Ep4049* - ID_PRODUCT_FROM_DATABASE=Live! Cam Voice - -usb:v041Ep4051* - ID_PRODUCT_FROM_DATABASE=Live! Cam Notebook Pro [VF0250] - -usb:v041Ep4052* - ID_PRODUCT_FROM_DATABASE=Live! Cam Vista IM - -usb:v041Ep4053* - ID_PRODUCT_FROM_DATABASE=Live! Cam Video IM - -usb:v041Ep4054* - ID_PRODUCT_FROM_DATABASE=Live! Cam Video IM - -usb:v041Ep4055* - ID_PRODUCT_FROM_DATABASE=Live! Cam Video IM Pro - -usb:v041Ep4056* - ID_PRODUCT_FROM_DATABASE=Live! Cam Video IM Pro - -usb:v041Ep4057* - ID_PRODUCT_FROM_DATABASE=Live! Cam Optia - -usb:v041Ep4058* - ID_PRODUCT_FROM_DATABASE=Live! Cam Optia AF - -usb:v041Ep4061* - ID_PRODUCT_FROM_DATABASE=Live! Cam Notebook Pro [VF0400] - -usb:v041Ep4063* - ID_PRODUCT_FROM_DATABASE=Live! Cam Video IM Pro - -usb:v041Ep4068* - ID_PRODUCT_FROM_DATABASE=Live! Cam Notebook [VF0470] - -usb:v041Ep406C* - ID_PRODUCT_FROM_DATABASE=Live! Cam Sync [VF0520] - -usb:v041Ep4083* - ID_PRODUCT_FROM_DATABASE=Live! Cam Socialize [VF0640] - -usb:v041Ep4087* - ID_PRODUCT_FROM_DATABASE=Live! Cam Socialize HD 1080 [VF0680] - -usb:v041Ep4088* - ID_PRODUCT_FROM_DATABASE=Live! Cam Chat HD [VF0700] - -usb:v041Ep4100* - ID_PRODUCT_FROM_DATABASE=Nomad Jukebox 2 - -usb:v041Ep4101* - ID_PRODUCT_FROM_DATABASE=Nomad Jukebox 3 - -usb:v041Ep4102* - ID_PRODUCT_FROM_DATABASE=NOMAD MuVo^2 - -usb:v041Ep4106* - ID_PRODUCT_FROM_DATABASE=Nomad MuVo - -usb:v041Ep4107* - ID_PRODUCT_FROM_DATABASE=NOMAD MuVo - -usb:v041Ep4108* - ID_PRODUCT_FROM_DATABASE=Nomad Jukebox Zen - -usb:v041Ep4109* - ID_PRODUCT_FROM_DATABASE=Nomad Jukebox Zen NX - -usb:v041Ep410B* - ID_PRODUCT_FROM_DATABASE=Nomad Jukebox Zen USB 2.0 - -usb:v041Ep410C* - ID_PRODUCT_FROM_DATABASE=Nomad MuVo NX - -usb:v041Ep410F* - ID_PRODUCT_FROM_DATABASE=NOMAD MuVo^2 (Flash) - -usb:v041Ep4110* - ID_PRODUCT_FROM_DATABASE=Nomad Jukebox Zen Xtra - -usb:v041Ep4111* - ID_PRODUCT_FROM_DATABASE=Dell Digital Jukebox - -usb:v041Ep4116* - ID_PRODUCT_FROM_DATABASE=MuVo^2 - -usb:v041Ep4117* - ID_PRODUCT_FROM_DATABASE=Nomad MuVo TX - -usb:v041Ep411B* - ID_PRODUCT_FROM_DATABASE=Zen Touch - -usb:v041Ep411C* - ID_PRODUCT_FROM_DATABASE=Nomad MuVo USB 2.0 - -usb:v041Ep411D* - ID_PRODUCT_FROM_DATABASE=Zen - -usb:v041Ep411E* - ID_PRODUCT_FROM_DATABASE=Zen Micro - -usb:v041Ep4120* - ID_PRODUCT_FROM_DATABASE=Nomad MuVo TX FM - -usb:v041Ep4123* - ID_PRODUCT_FROM_DATABASE=Zen Portable Media Center - -usb:v041Ep4124* - ID_PRODUCT_FROM_DATABASE=MuVo^2 FM (uHDD) - -usb:v041Ep4126* - ID_PRODUCT_FROM_DATABASE=Dell DJ (2nd gen) - -usb:v041Ep4127* - ID_PRODUCT_FROM_DATABASE=Dell DJ - -usb:v041Ep4128* - ID_PRODUCT_FROM_DATABASE=NOMAD Jukebox Zen Xtra (mtp) - -usb:v041Ep412B* - ID_PRODUCT_FROM_DATABASE=MuVo N200 with FM radio - -usb:v041Ep412F* - ID_PRODUCT_FROM_DATABASE=Dell Digital Jukebox 2.Gen - -usb:v041Ep4130* - ID_PRODUCT_FROM_DATABASE=Zen Micro (mtp) - -usb:v041Ep4131* - ID_PRODUCT_FROM_DATABASE=DAP-HD0014 [Zen Touch] (MTP) - -usb:v041Ep4133* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v041Ep4134* - ID_PRODUCT_FROM_DATABASE=Zen Neeon - -usb:v041Ep4136* - ID_PRODUCT_FROM_DATABASE=Zen Sleek - -usb:v041Ep4137* - ID_PRODUCT_FROM_DATABASE=Zen Sleek (mtp) - -usb:v041Ep4139* - ID_PRODUCT_FROM_DATABASE=Zen Nano Plus - -usb:v041Ep413C* - ID_PRODUCT_FROM_DATABASE=Zen MicroPhoto - -usb:v041Ep4150* - ID_PRODUCT_FROM_DATABASE=Zen V (MTP) - -usb:v041Ep4151* - ID_PRODUCT_FROM_DATABASE=Zen Vision:M (mtp) - -usb:v041Ep4152* - ID_PRODUCT_FROM_DATABASE=Zen V Plus - -usb:v041Ep4153* - ID_PRODUCT_FROM_DATABASE=Zen Vision W - -usb:v041Ep4154* - ID_PRODUCT_FROM_DATABASE=Zen Stone - -usb:v041Ep4155* - ID_PRODUCT_FROM_DATABASE=Zen Stone plus - -usb:v041Ep4157* - ID_PRODUCT_FROM_DATABASE=Zen (MTP) - -usb:v041Ep500F* - ID_PRODUCT_FROM_DATABASE=Broadband Blaster 8012U-V - -usb:v041Ep5015* - ID_PRODUCT_FROM_DATABASE=TECOM Bluetooth Device - -usb:v041EpFFFF* - ID_PRODUCT_FROM_DATABASE=Webcam Live! Ultra - -usb:v041F* - ID_VENDOR_FROM_DATABASE=LCS Telegraphics - -usb:v0420* - ID_VENDOR_FROM_DATABASE=Chips and Technologies - -usb:v0420p1307* - ID_PRODUCT_FROM_DATABASE=Celly SIM Card Reader - -usb:v0421* - ID_VENDOR_FROM_DATABASE=Nokia Mobile Phones - -usb:v0421p0001* - ID_PRODUCT_FROM_DATABASE=E61i (PC Suite mode) - -usb:v0421p0018* - ID_PRODUCT_FROM_DATABASE=6288 GSM Smartphone - -usb:v0421p0019* - ID_PRODUCT_FROM_DATABASE=6288 GSM Smartphone (imaging mode) - -usb:v0421p001A* - ID_PRODUCT_FROM_DATABASE=6288 GSM Smartphone (file transfer mode) - -usb:v0421p0024* - ID_PRODUCT_FROM_DATABASE=5610 XpressMusic (Storage mode) - -usb:v0421p0025* - ID_PRODUCT_FROM_DATABASE=5610 XpressMusic (PC Suite mode) - -usb:v0421p0028* - ID_PRODUCT_FROM_DATABASE=5610 XpressMusic (Imaging mode) - -usb:v0421p002D* - ID_PRODUCT_FROM_DATABASE=6120 Phone (Mass storage mode) - -usb:v0421p002E* - ID_PRODUCT_FROM_DATABASE=6120 Phone (Media-Player mode) - -usb:v0421p002F* - ID_PRODUCT_FROM_DATABASE=6120 Phone (PC-Suite mode) - -usb:v0421p0042* - ID_PRODUCT_FROM_DATABASE=E51 (PC Suite mode) - -usb:v0421p0064* - ID_PRODUCT_FROM_DATABASE=3109c GSM Phone - -usb:v0421p006B* - ID_PRODUCT_FROM_DATABASE=5310 Xpress Music (PC Suite mode) - -usb:v0421p006C* - ID_PRODUCT_FROM_DATABASE=5310 Xpress music (Storage mode) - -usb:v0421p006D* - ID_PRODUCT_FROM_DATABASE=N95 (Storage mode) - -usb:v0421p006E* - ID_PRODUCT_FROM_DATABASE=N95 (Multimedia mode) - -usb:v0421p006F* - ID_PRODUCT_FROM_DATABASE=N95 (Printing mode) - -usb:v0421p0070* - ID_PRODUCT_FROM_DATABASE=N95 (PC Suite mode) - -usb:v0421p0096* - ID_PRODUCT_FROM_DATABASE=N810 Internet Tablet - -usb:v0421p00AA* - ID_PRODUCT_FROM_DATABASE=E71 (Mass storage mode) - -usb:v0421p00AB* - ID_PRODUCT_FROM_DATABASE=E71 (PC Suite mode) - -usb:v0421p00E4* - ID_PRODUCT_FROM_DATABASE=E71 (Media transfer mode) - -usb:v0421p0103* - ID_PRODUCT_FROM_DATABASE=ADL Flashing Engine AVALON Parent - -usb:v0421p0104* - ID_PRODUCT_FROM_DATABASE=ADL Re-Flashing Engine Parent - -usb:v0421p0105* - ID_PRODUCT_FROM_DATABASE=Nokia Firmware Upgrade Mode - -usb:v0421p0106* - ID_PRODUCT_FROM_DATABASE=ROM Parent - -usb:v0421p0154* - ID_PRODUCT_FROM_DATABASE=5800 XpressMusic (PC Suite mode) - -usb:v0421p0155* - ID_PRODUCT_FROM_DATABASE=5800 XpressMusic (Multimedia mode) - -usb:v0421p0156* - ID_PRODUCT_FROM_DATABASE=5800 XpressMusic (Storage mode) - -usb:v0421p0157* - ID_PRODUCT_FROM_DATABASE=5800 XpressMusic (Imaging mode) - -usb:v0421p0199* - ID_PRODUCT_FROM_DATABASE=6700 Classic (msc) - -usb:v0421p019A* - ID_PRODUCT_FROM_DATABASE=6700 Classic (PC Suite) - -usb:v0421p019B* - ID_PRODUCT_FROM_DATABASE=6700 Classic (mtp) - -usb:v0421p01B0* - ID_PRODUCT_FROM_DATABASE=6303 classic Phone (PC Suite mode) - -usb:v0421p01B1* - ID_PRODUCT_FROM_DATABASE=6303 classic Phone (Mass storage mode) - -usb:v0421p01B2* - ID_PRODUCT_FROM_DATABASE=6303 classic Phone (Printing and media mode) - -usb:v0421p01C7* - ID_PRODUCT_FROM_DATABASE=N900 (Storage Mode) - -usb:v0421p01C8* - ID_PRODUCT_FROM_DATABASE=N900 (PC-Suite Mode) - -usb:v0421p0228* - ID_PRODUCT_FROM_DATABASE=5530 XpressMusic - -usb:v0421p023A* - ID_PRODUCT_FROM_DATABASE=6730 Classic - -usb:v0421p026A* - ID_PRODUCT_FROM_DATABASE=N97 (mass storage) - -usb:v0421p026B* - ID_PRODUCT_FROM_DATABASE=N97 (Multimedia) - -usb:v0421p026C* - ID_PRODUCT_FROM_DATABASE=N97 (PC Suite) - -usb:v0421p026D* - ID_PRODUCT_FROM_DATABASE=N97 (Pictures) - -usb:v0421p0295* - ID_PRODUCT_FROM_DATABASE=660i/6600i Slide Phone (Mass Storage) - -usb:v0421p0297* - ID_PRODUCT_FROM_DATABASE=660i/6600i Slide Phone (Still Image) - -usb:v0421p02E1* - ID_PRODUCT_FROM_DATABASE=5230 (Storage mode) - -usb:v0421p02E2* - ID_PRODUCT_FROM_DATABASE=5230 (Multimedia mode) - -usb:v0421p02E3* - ID_PRODUCT_FROM_DATABASE=5230 (PC-Suite mode) - -usb:v0421p02E4* - ID_PRODUCT_FROM_DATABASE=5230 (Imaging mode) - -usb:v0421p0360* - ID_PRODUCT_FROM_DATABASE=C1-01 Ovi Suite Mode - -usb:v0421p03A4* - ID_PRODUCT_FROM_DATABASE=C5 (Storage mode) - -usb:v0421p03C0* - ID_PRODUCT_FROM_DATABASE=C7-00 - -usb:v0421p03D1* - ID_PRODUCT_FROM_DATABASE=N950 - -usb:v0421p0400* - ID_PRODUCT_FROM_DATABASE=7600 Phone Parent - -usb:v0421p0401* - ID_PRODUCT_FROM_DATABASE=6650 GSM Phone - -usb:v0421p0402* - ID_PRODUCT_FROM_DATABASE=6255 Phone Parent - -usb:v0421p0404* - ID_PRODUCT_FROM_DATABASE=5510 - -usb:v0421p0405* - ID_PRODUCT_FROM_DATABASE=9500 GSM Communicator - -usb:v0421p0407* - ID_PRODUCT_FROM_DATABASE=Music Player HDR-1(tm) - -usb:v0421p040B* - ID_PRODUCT_FROM_DATABASE=N-Gage GSM Phone - -usb:v0421p040D* - ID_PRODUCT_FROM_DATABASE=6620 Phone Parent - -usb:v0421p040E* - ID_PRODUCT_FROM_DATABASE=6651 Phone Parent - -usb:v0421p040F* - ID_PRODUCT_FROM_DATABASE=6230 GSM Phone - -usb:v0421p0410* - ID_PRODUCT_FROM_DATABASE=6630 Imaging Smartphone - -usb:v0421p0411* - ID_PRODUCT_FROM_DATABASE=7610 Phone Parent - -usb:v0421p0413* - ID_PRODUCT_FROM_DATABASE=6260 Phone Parent - -usb:v0421p0414* - ID_PRODUCT_FROM_DATABASE=7370 - -usb:v0421p0415* - ID_PRODUCT_FROM_DATABASE=9300 GSM Smartphone - -usb:v0421p0416* - ID_PRODUCT_FROM_DATABASE=6170 Phone Parent - -usb:v0421p0417* - ID_PRODUCT_FROM_DATABASE=7270 Phone Parent - -usb:v0421p0418* - ID_PRODUCT_FROM_DATABASE=E70 (PC Suite mode) - -usb:v0421p0419* - ID_PRODUCT_FROM_DATABASE=E60 (PC Suite mode) - -usb:v0421p041A* - ID_PRODUCT_FROM_DATABASE=9500 GSM Communicator (RNDIS) - -usb:v0421p041B* - ID_PRODUCT_FROM_DATABASE=9300 GSM Smartphone (RNDIS) - -usb:v0421p041C* - ID_PRODUCT_FROM_DATABASE=7710 Phone Parent - -usb:v0421p041D* - ID_PRODUCT_FROM_DATABASE=6670 Phone Parent - -usb:v0421p041E* - ID_PRODUCT_FROM_DATABASE=6680 - -usb:v0421p041F* - ID_PRODUCT_FROM_DATABASE=6235 Phone Parent - -usb:v0421p0421* - ID_PRODUCT_FROM_DATABASE=3230 Phone Parent - -usb:v0421p0422* - ID_PRODUCT_FROM_DATABASE=6681 Phone Parent - -usb:v0421p0423* - ID_PRODUCT_FROM_DATABASE=6682 Phone Parent - -usb:v0421p0428* - ID_PRODUCT_FROM_DATABASE=6230i Modem - -usb:v0421p0429* - ID_PRODUCT_FROM_DATABASE=6230i MultiMedia Card - -usb:v0421p0431* - ID_PRODUCT_FROM_DATABASE=770 Internet Tablet - -usb:v0421p0432* - ID_PRODUCT_FROM_DATABASE=N90 Phone Parent - -usb:v0421p0435* - ID_PRODUCT_FROM_DATABASE=E70 (IP Passthrough/RNDIS mode) - -usb:v0421p0436* - ID_PRODUCT_FROM_DATABASE=E60 (IP Passthrough/RNDIS mode) - -usb:v0421p0437* - ID_PRODUCT_FROM_DATABASE=6265 Phone Parent - -usb:v0421p043A* - ID_PRODUCT_FROM_DATABASE=N70 USB Phone Parent - -usb:v0421p043B* - ID_PRODUCT_FROM_DATABASE=3155 Phone Parent - -usb:v0421p043C* - ID_PRODUCT_FROM_DATABASE=6155 Phone Parent - -usb:v0421p043D* - ID_PRODUCT_FROM_DATABASE=6270 Phone Parent - -usb:v0421p0443* - ID_PRODUCT_FROM_DATABASE=N70 Phone Parent - -usb:v0421p0444* - ID_PRODUCT_FROM_DATABASE=N91 - -usb:v0421p044C* - ID_PRODUCT_FROM_DATABASE=NM850iG Phone Parent - -usb:v0421p044D* - ID_PRODUCT_FROM_DATABASE=E61 (PC Suite mode) - -usb:v0421p044E* - ID_PRODUCT_FROM_DATABASE=E61 (Data Exchange mode) - -usb:v0421p044F* - ID_PRODUCT_FROM_DATABASE=E61 (IP Passthrough/RNDIS mode) - -usb:v0421p0453* - ID_PRODUCT_FROM_DATABASE=9300 Phone Parent - -usb:v0421p0456* - ID_PRODUCT_FROM_DATABASE=6111 Phone Parent - -usb:v0421p0457* - ID_PRODUCT_FROM_DATABASE=6111 Phone (Printing mode) - -usb:v0421p045A* - ID_PRODUCT_FROM_DATABASE=6280 Phone Parent - -usb:v0421p045D* - ID_PRODUCT_FROM_DATABASE=6282 Phone Parent - -usb:v0421p046E* - ID_PRODUCT_FROM_DATABASE=6110 Navigator - -usb:v0421p0471* - ID_PRODUCT_FROM_DATABASE=6110 Navigator - -usb:v0421p0485* - ID_PRODUCT_FROM_DATABASE=MTP Device - -usb:v0421p04B9* - ID_PRODUCT_FROM_DATABASE=5300 - -usb:v0421p04BC* - ID_PRODUCT_FROM_DATABASE=5200 (Nokia mode) - -usb:v0421p04BD* - ID_PRODUCT_FROM_DATABASE=5200 (Storage mode) - -usb:v0421p04BE* - ID_PRODUCT_FROM_DATABASE=5200 (MTP mode) - -usb:v0421p04C3* - ID_PRODUCT_FROM_DATABASE=N800 Internet Tablet - -usb:v0421p04CE* - ID_PRODUCT_FROM_DATABASE=E90 Communicator (PC Suite mode) - -usb:v0421p04CF* - ID_PRODUCT_FROM_DATABASE=E90 Communicator (Storage mode) - -usb:v0421p04F0* - ID_PRODUCT_FROM_DATABASE=Nokia N95 (PC Suite mode) - -usb:v0421p04F9* - ID_PRODUCT_FROM_DATABASE=6300 (PC Suite mode) - -usb:v0421p0508* - ID_PRODUCT_FROM_DATABASE=E65 (PC Suite mode) - -usb:v0421p0509* - ID_PRODUCT_FROM_DATABASE=E65 (Storage mode) - -usb:v0421p0518* - ID_PRODUCT_FROM_DATABASE=N9 Phone - -usb:v0421p0600* - ID_PRODUCT_FROM_DATABASE=Digital Pen SU-1B - -usb:v0421p0610* - ID_PRODUCT_FROM_DATABASE=CS-15 (Internet Stick 3G modem) - -usb:v0421p0661* - ID_PRODUCT_FROM_DATABASE=Lumia 920 - -usb:v0421p0800* - ID_PRODUCT_FROM_DATABASE=Connectivity Cable DKU-5 - -usb:v0421p0801* - ID_PRODUCT_FROM_DATABASE=Data Cable DKU-6 - -usb:v0421p0802* - ID_PRODUCT_FROM_DATABASE=CA-42 Phone Parent - -usb:v0422* - ID_VENDOR_FROM_DATABASE=ADI Systems, Inc. - -usb:v0423* - ID_VENDOR_FROM_DATABASE=Computer Access Technology Corp. - -usb:v0423p000A* - ID_PRODUCT_FROM_DATABASE=NetMate Ethernet - -usb:v0423p000C* - ID_PRODUCT_FROM_DATABASE=NetMate2 Ethernet - -usb:v0423p000D* - ID_PRODUCT_FROM_DATABASE=USB Chief Analyzer - -usb:v0423p0100* - ID_PRODUCT_FROM_DATABASE=Generic Universal Protocol Analyzer - -usb:v0423p0101* - ID_PRODUCT_FROM_DATABASE=UPA USBTracer - -usb:v0423p0200* - ID_PRODUCT_FROM_DATABASE=Generic 10K Universal Protocol Analyzer - -usb:v0423p020A* - ID_PRODUCT_FROM_DATABASE=PETracer ML - -usb:v0423p0300* - ID_PRODUCT_FROM_DATABASE=Generic Universal Protocol Analyzer - -usb:v0423p0301* - ID_PRODUCT_FROM_DATABASE=2500H Tracer Trainer - -usb:v0423p030A* - ID_PRODUCT_FROM_DATABASE=PETracer x1 - -usb:v0423p1237* - ID_PRODUCT_FROM_DATABASE=Andromeda Hub - -usb:v0424* - ID_VENDOR_FROM_DATABASE=Standard Microsystems Corp. - -usb:v0424p0001* - ID_PRODUCT_FROM_DATABASE=Integrated Hub - -usb:v0424p0ACD* - ID_PRODUCT_FROM_DATABASE=Sitecom Internal Multi Memory reader/writer MD-005 - -usb:v0424p0FDC* - ID_PRODUCT_FROM_DATABASE=Floppy - -usb:v0424p10CD* - ID_PRODUCT_FROM_DATABASE=Sitecom Internal Multi Memory reader/writer MD-005 - -usb:v0424p2020* - ID_PRODUCT_FROM_DATABASE=USB Hub - -usb:v0424p20CD* - ID_PRODUCT_FROM_DATABASE=Sitecom Internal Multi Memory reader/writer MD-005 - -usb:v0424p20FC* - ID_PRODUCT_FROM_DATABASE=6-in-1 Card Reader - -usb:v0424p2228* - ID_PRODUCT_FROM_DATABASE=9-in-2 Card Reader - -usb:v0424p223A* - ID_PRODUCT_FROM_DATABASE=8-in-1 Card Reader - -usb:v0424p2503* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Hub - -usb:v0424p2504* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Hub - -usb:v0424p2507* - ID_PRODUCT_FROM_DATABASE=hub - -usb:v0424p2512* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Hub - -usb:v0424p2513* - ID_PRODUCT_FROM_DATABASE=2.0 Hub - -usb:v0424p2514* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Hub - -usb:v0424p2517* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v0424p2524* - ID_PRODUCT_FROM_DATABASE=USB MultiSwitch Hub - -usb:v0424p2602* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Hub - -usb:v0424p2640* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Hub - -usb:v0424p4060* - ID_PRODUCT_FROM_DATABASE=Ultra Fast Media Reader - -usb:v0424p4064* - ID_PRODUCT_FROM_DATABASE=Ultra Fast Media Reader - -usb:v0424p7500* - ID_PRODUCT_FROM_DATABASE=LAN7500 Ethernet 10/100/1000 Adapter - -usb:v0424p9512* - ID_PRODUCT_FROM_DATABASE=LAN9500 Ethernet 10/100 Adapter / SMSC9512/9514 Hub - -usb:v0424pA700* - ID_PRODUCT_FROM_DATABASE=2 Port Hub - -usb:v0424pEC00* - ID_PRODUCT_FROM_DATABASE=SMSC9512/9514 Fast Ethernet Adapter - -usb:v0425* - ID_VENDOR_FROM_DATABASE=Motorola Semiconductors HK, Ltd - -usb:v0425p0101* - ID_PRODUCT_FROM_DATABASE=G-Tech Wireless Mouse & Keyboard - -usb:v0425pF102* - ID_PRODUCT_FROM_DATABASE=G-Tech U+P Wireless Mouse - -usb:v0426* - ID_VENDOR_FROM_DATABASE=Integrated Device Technology, Inc. - -usb:v0426p0426* - ID_PRODUCT_FROM_DATABASE=WDM Driver - -usb:v0427* - ID_VENDOR_FROM_DATABASE=Motorola Electronics Taiwan, Ltd - -usb:v0428* - ID_VENDOR_FROM_DATABASE=Advanced Gravis Computer Tech, Ltd - -usb:v0428p4001* - ID_PRODUCT_FROM_DATABASE=GamePad Pro - -usb:v0429* - ID_VENDOR_FROM_DATABASE=Cirrus Logic - -usb:v042A* - ID_VENDOR_FROM_DATABASE=Ericsson Austrian, AG - -usb:v042B* - ID_VENDOR_FROM_DATABASE=Intel Corp. - -usb:v042Bp9316* - ID_PRODUCT_FROM_DATABASE=8x931Hx Customer Hub - -usb:v042C* - ID_VENDOR_FROM_DATABASE=Innovative Semiconductors, Inc. - -usb:v042D* - ID_VENDOR_FROM_DATABASE=Micronics - -usb:v042E* - ID_VENDOR_FROM_DATABASE=Acer, Inc. - -usb:v042Ep0380* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v042F* - ID_VENDOR_FROM_DATABASE=Molex, Inc. - -usb:v0430* - ID_VENDOR_FROM_DATABASE=Sun Microsystems, Inc. - -usb:v0430p0002* - ID_PRODUCT_FROM_DATABASE=109 Keyboard - -usb:v0430p0005* - ID_PRODUCT_FROM_DATABASE=Type 6 Keyboard - -usb:v0430p000A* - ID_PRODUCT_FROM_DATABASE=109 Japanese Keyboard - -usb:v0430p000B* - ID_PRODUCT_FROM_DATABASE=109 Japanese Keyboard - -usb:v0430p0082* - ID_PRODUCT_FROM_DATABASE=109 Japanese Keyboard - -usb:v0430p0083* - ID_PRODUCT_FROM_DATABASE=109 Japanese Keyboard - -usb:v0430p00A2* - ID_PRODUCT_FROM_DATABASE=Type 7 Keyboard - -usb:v0430p0100* - ID_PRODUCT_FROM_DATABASE=3-button Mouse - -usb:v0430p100E* - ID_PRODUCT_FROM_DATABASE=24.1" LCD Monitor v4 / FID-638 Mouse - -usb:v0430p36BA* - ID_PRODUCT_FROM_DATABASE=Bus Powered Hub - -usb:v0430pA101* - ID_PRODUCT_FROM_DATABASE=remote key/mouse for P3 chip - -usb:v0430pA102* - ID_PRODUCT_FROM_DATABASE=remote key/mouse/storage for P3 chip - -usb:v0430pA103* - ID_PRODUCT_FROM_DATABASE=remote storage for P3 chip - -usb:v0430pA4A2* - ID_PRODUCT_FROM_DATABASE=Ethernet (RNDIS and CDC ethernet) - -usb:v0430pCDAB* - ID_PRODUCT_FROM_DATABASE=Raritan KVM dongle - -usb:v0431* - ID_VENDOR_FROM_DATABASE=Itac Systems, Inc. - -usb:v0431p0100* - ID_PRODUCT_FROM_DATABASE=Mouse-Trak 3-button Track Ball - -usb:v0432* - ID_VENDOR_FROM_DATABASE=Unisys Corp. - -usb:v0433* - ID_VENDOR_FROM_DATABASE=Alps Electric, Inc. - -usb:v0433p1101* - ID_PRODUCT_FROM_DATABASE=IBM Game Controller - -usb:v0433pABAB* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v0434* - ID_VENDOR_FROM_DATABASE=Samsung Info. Systems America, Inc. - -usb:v0435* - ID_VENDOR_FROM_DATABASE=Hyundai Electronics America - -usb:v0436* - ID_VENDOR_FROM_DATABASE=Taugagreining HF - -usb:v0436p0005* - ID_PRODUCT_FROM_DATABASE=CameraMate (DPCM_USB) - -usb:v0437* - ID_VENDOR_FROM_DATABASE=Framatome Connectors USA - -usb:v0438* - ID_VENDOR_FROM_DATABASE=Advanced Micro Devices, Inc. - -usb:v0439* - ID_VENDOR_FROM_DATABASE=Voice Technologies Group - -usb:v043D* - ID_VENDOR_FROM_DATABASE=Lexmark International, Inc. - -usb:v043Dp0001* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp0002* - ID_PRODUCT_FROM_DATABASE=Optra E310 Printer - -usb:v043Dp0003* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp0004* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp0005* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp0006* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp0007* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp0008* - ID_PRODUCT_FROM_DATABASE=Inkjet Color Printer - -usb:v043Dp0009* - ID_PRODUCT_FROM_DATABASE=Optra S2450 Printer - -usb:v043Dp000A* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp000B* - ID_PRODUCT_FROM_DATABASE=Inkjet Color Printer - -usb:v043Dp000C* - ID_PRODUCT_FROM_DATABASE=Optra E312 Printer - -usb:v043Dp000D* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp000E* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp000F* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp0010* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp0011* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp0012* - ID_PRODUCT_FROM_DATABASE=Inkjet Color Printer - -usb:v043Dp0013* - ID_PRODUCT_FROM_DATABASE=Inkjet Color Printer - -usb:v043Dp0014* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp0015* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp0016* - ID_PRODUCT_FROM_DATABASE=Z12 Color Jetprinter - -usb:v043Dp0017* - ID_PRODUCT_FROM_DATABASE=Z32 printer - -usb:v043Dp0018* - ID_PRODUCT_FROM_DATABASE=Z52 Printer - -usb:v043Dp0019* - ID_PRODUCT_FROM_DATABASE=Forms Printer - -usb:v043Dp001A* - ID_PRODUCT_FROM_DATABASE=Z65 Printer - -usb:v043Dp001B* - ID_PRODUCT_FROM_DATABASE=InkJet Photo Printer - -usb:v043Dp001C* - ID_PRODUCT_FROM_DATABASE=Kodak Personal Picture Maker 200 Printer - -usb:v043Dp001D* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp001E* - ID_PRODUCT_FROM_DATABASE=InkJet Photo Printer - -usb:v043Dp001F* - ID_PRODUCT_FROM_DATABASE=Kodak Personal Picture Maker 200 Card Reader - -usb:v043Dp0020* - ID_PRODUCT_FROM_DATABASE=Z51 Printer - -usb:v043Dp0021* - ID_PRODUCT_FROM_DATABASE=Z33 Printer - -usb:v043Dp0022* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp0023* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp0024* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp0025* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp0026* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp0027* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp0028* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp0029* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp002A* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp002B* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp002C* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp002D* - ID_PRODUCT_FROM_DATABASE=X70/X73 Scan/Print/Copy - -usb:v043Dp002E* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp002F* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0030* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0031* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0032* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0033* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0034* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0035* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0036* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0037* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0038* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0039* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp003A* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp003B* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp003C* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp003D* - ID_PRODUCT_FROM_DATABASE=X83 Scan/Print/Copy - -usb:v043Dp003E* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp003F* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0040* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0041* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0042* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0043* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0044* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0045* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0046* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0047* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0048* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp0049* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp004A* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp004B* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp004C* - ID_PRODUCT_FROM_DATABASE=Scan Print Copy - -usb:v043Dp004D* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp004E* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp004F* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp0050* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp0051* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp0052* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp0053* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp0054* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp0057* - ID_PRODUCT_FROM_DATABASE=Z35 Printer - -usb:v043Dp0058* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v043Dp005A* - ID_PRODUCT_FROM_DATABASE=X63 - -usb:v043Dp005C* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp0060* - ID_PRODUCT_FROM_DATABASE=X74/X75 Scanner - -usb:v043Dp0061* - ID_PRODUCT_FROM_DATABASE=X74 Hub - -usb:v043Dp0065* - ID_PRODUCT_FROM_DATABASE=X5130 - -usb:v043Dp0069* - ID_PRODUCT_FROM_DATABASE=X74/X75 Printer - -usb:v043Dp006D* - ID_PRODUCT_FROM_DATABASE=X125 - -usb:v043Dp006E* - ID_PRODUCT_FROM_DATABASE=C510 - -usb:v043Dp0072* - ID_PRODUCT_FROM_DATABASE=X6170 Printer - -usb:v043Dp0073* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp0078* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp0079* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp007A* - ID_PRODUCT_FROM_DATABASE=Generic Hub - -usb:v043Dp007B* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp007C* - ID_PRODUCT_FROM_DATABASE=X1110/X1130/X1140/X1150/X1170/X1180/X1185 - -usb:v043Dp007D* - ID_PRODUCT_FROM_DATABASE=Photo 3150 - -usb:v043Dp008A* - ID_PRODUCT_FROM_DATABASE=4200 series - -usb:v043Dp008B* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp008C* - ID_PRODUCT_FROM_DATABASE=to CF/SM/SD/MS Card Reader - -usb:v043Dp008E* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp008F* - ID_PRODUCT_FROM_DATABASE=X422 - -usb:v043Dp0093* - ID_PRODUCT_FROM_DATABASE=X5250 - -usb:v043Dp0095* - ID_PRODUCT_FROM_DATABASE=E220 Printer - -usb:v043Dp0096* - ID_PRODUCT_FROM_DATABASE=2200 series - -usb:v043Dp0097* - ID_PRODUCT_FROM_DATABASE=P6250 - -usb:v043Dp0098* - ID_PRODUCT_FROM_DATABASE=7100 series - -usb:v043Dp009E* - ID_PRODUCT_FROM_DATABASE=P910 series Human Interface Device - -usb:v043Dp009F* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp00A9* - ID_PRODUCT_FROM_DATABASE=IBM Infoprint 1410 MFP - -usb:v043Dp00AB* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp00B2* - ID_PRODUCT_FROM_DATABASE=3300 series - -usb:v043Dp00B8* - ID_PRODUCT_FROM_DATABASE=7300 series - -usb:v043Dp00B9* - ID_PRODUCT_FROM_DATABASE=8300 series - -usb:v043Dp00BA* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp00BB* - ID_PRODUCT_FROM_DATABASE=2300 series - -usb:v043Dp00BD* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v043Dp00BE* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v043Dp00BF* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v043Dp00C0* - ID_PRODUCT_FROM_DATABASE=6300 series - -usb:v043Dp00C1* - ID_PRODUCT_FROM_DATABASE=4300 series - -usb:v043Dp00C7* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v043Dp00C8* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v043Dp00C9* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v043Dp00CB* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v043Dp00CC* - ID_PRODUCT_FROM_DATABASE=E120(n) - -usb:v043Dp00D0* - ID_PRODUCT_FROM_DATABASE=9300 series - -usb:v043Dp00D3* - ID_PRODUCT_FROM_DATABASE=X340 Scanner - -usb:v043Dp00D4* - ID_PRODUCT_FROM_DATABASE=X342n Scanner - -usb:v043Dp00D5* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v043Dp00D6* - ID_PRODUCT_FROM_DATABASE=X340 Scanner - -usb:v043Dp00E8* - ID_PRODUCT_FROM_DATABASE=X642e - -usb:v043Dp00E9* - ID_PRODUCT_FROM_DATABASE=2400 series - -usb:v043Dp00F6* - ID_PRODUCT_FROM_DATABASE=3400 series - -usb:v043Dp00F7* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp00FF* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v043Dp010B* - ID_PRODUCT_FROM_DATABASE=2500 series - -usb:v043Dp010D* - ID_PRODUCT_FROM_DATABASE=3500-4500 series - -usb:v043Dp010F* - ID_PRODUCT_FROM_DATABASE=6500 series - -usb:v043Dp0142* - ID_PRODUCT_FROM_DATABASE=X3650 (Printer, Scanner, Copier) - -usb:v043Dp4303* - ID_PRODUCT_FROM_DATABASE=Xerox WorkCentre Pro 412 - -usb:v043E* - ID_VENDOR_FROM_DATABASE=LG Electronics USA, Inc. - -usb:v043Ep3001* - ID_PRODUCT_FROM_DATABASE=AN-WF100 802.11abgn Wireless Adapter [Broadcom BCM4323] - -usb:v043Ep42BD* - ID_PRODUCT_FROM_DATABASE=Flatron 795FT Plus Monitor - -usb:v043Ep4A4D* - ID_PRODUCT_FROM_DATABASE=Flatron 915FT Plus Monitor - -usb:v043Ep7001* - ID_PRODUCT_FROM_DATABASE=MF-PD100 Soul Digital MP3 Player - -usb:v043Ep7013* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v043Ep8484* - ID_PRODUCT_FROM_DATABASE=LPC-U30 Webcam II - -usb:v043Ep8585* - ID_PRODUCT_FROM_DATABASE=LPC-UC35 Webcam - -usb:v043Ep8888* - ID_PRODUCT_FROM_DATABASE=Electronics VCS Camera II(LPC-U20) - -usb:v043Ep9800* - ID_PRODUCT_FROM_DATABASE=Remote Control Receiver_iMON - -usb:v043Ep9803* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v043Ep9804* - ID_PRODUCT_FROM_DATABASE=DMB Receiver Control - -usb:v043Ep9C01* - ID_PRODUCT_FROM_DATABASE=LGE Sync - -usb:v043F* - ID_VENDOR_FROM_DATABASE=RadiSys Corp. - -usb:v0440* - ID_VENDOR_FROM_DATABASE=Eizo Nanao Corp. - -usb:v0441* - ID_VENDOR_FROM_DATABASE=Winbond Systems Lab. - -usb:v0441p1456* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v0442* - ID_VENDOR_FROM_DATABASE=Ericsson, Inc. - -usb:v0442pABBA* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0443* - ID_VENDOR_FROM_DATABASE=Gateway, Inc. - -usb:v0443p000E* - ID_PRODUCT_FROM_DATABASE=Multimedia Keyboard - -usb:v0443p002E* - ID_PRODUCT_FROM_DATABASE=Millennium Keyboard - -usb:v0445* - ID_VENDOR_FROM_DATABASE=Lucent Technologies, Inc. - -usb:v0446* - ID_VENDOR_FROM_DATABASE=NMB Technologies Corp. - -usb:v0446p6781* - ID_PRODUCT_FROM_DATABASE=Keyboard with PS/2 Mouse Port - -usb:v0446p6782* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v0447* - ID_VENDOR_FROM_DATABASE=Momentum Microsystems - -usb:v044A* - ID_VENDOR_FROM_DATABASE=Shamrock Tech. Co., Ltd - -usb:v044B* - ID_VENDOR_FROM_DATABASE=WSI - -usb:v044C* - ID_VENDOR_FROM_DATABASE=CCL/ITRI - -usb:v044D* - ID_VENDOR_FROM_DATABASE=Siemens Nixdorf AG - -usb:v044E* - ID_VENDOR_FROM_DATABASE=Alps Electric Co., Ltd - -usb:v044Ep1104* - ID_PRODUCT_FROM_DATABASE=Japanese Keyboard - -usb:v044Ep2002* - ID_PRODUCT_FROM_DATABASE=MD-5500 Printer - -usb:v044Ep2014* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v044Ep3001* - ID_PRODUCT_FROM_DATABASE=UGTZ4 Bluetooth - -usb:v044Ep3002* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v044Ep3003* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v044Ep3004* - ID_PRODUCT_FROM_DATABASE=Bluetooth Adapter - -usb:v044Ep3005* - ID_PRODUCT_FROM_DATABASE=Integrated Bluetooth Device - -usb:v044Ep3006* - ID_PRODUCT_FROM_DATABASE=Bluetooth Adapter - -usb:v044Ep3007* - ID_PRODUCT_FROM_DATABASE=Bluetooth Controller (ALPS/UGX) - -usb:v044Ep300C* - ID_PRODUCT_FROM_DATABASE=Bluetooth Controller (ALPS/UGPZ6) - -usb:v044Ep300D* - ID_PRODUCT_FROM_DATABASE=Bluetooth Controller (ALPS/UGPZ6) - -usb:v044Ep3010* - ID_PRODUCT_FROM_DATABASE=Bluetooth Adapter - -usb:v044Ep3017* - ID_PRODUCT_FROM_DATABASE=BCM2046 Bluetooth Device - -usb:v044EpFFFF* - ID_PRODUCT_FROM_DATABASE=Compaq Bluetooth Multiport Module - -usb:v044F* - ID_VENDOR_FROM_DATABASE=ThrustMaster, Inc. - -usb:v044Fp0400* - ID_PRODUCT_FROM_DATABASE=HOTAS Cougar - -usb:v044Fp044F* - ID_PRODUCT_FROM_DATABASE=GP XID - -usb:v044FpA003* - ID_PRODUCT_FROM_DATABASE=Rage 3D Game Pad - -usb:v044FpA01B* - ID_PRODUCT_FROM_DATABASE=PK-GP301 Driving Wheel - -usb:v044FpA0A0* - ID_PRODUCT_FROM_DATABASE=Top Gun Joystick - -usb:v044FpA0A1* - ID_PRODUCT_FROM_DATABASE=Top Gun Joystick (rev2) - -usb:v044FpA0A3* - ID_PRODUCT_FROM_DATABASE=Fusion Digital GamePad - -usb:v044FpA201* - ID_PRODUCT_FROM_DATABASE=PK-GP201 PlayStick - -usb:v044FpB108* - ID_PRODUCT_FROM_DATABASE=T-Flight Hotas X Flight Stick - -usb:v044FpB10A* - ID_PRODUCT_FROM_DATABASE=T.16000M Joystick - -usb:v044FpB203* - ID_PRODUCT_FROM_DATABASE=360 Modena Pro Wheel - -usb:v044FpB300* - ID_PRODUCT_FROM_DATABASE=Firestorm Dual Power - -usb:v044FpB304* - ID_PRODUCT_FROM_DATABASE=Firestorm Dual Power - -usb:v044FpB307* - ID_PRODUCT_FROM_DATABASE=vibrating Upad - -usb:v044FpB30B* - ID_PRODUCT_FROM_DATABASE=Wireless VibrationPad - -usb:v044FpB315* - ID_PRODUCT_FROM_DATABASE=Firestorm Dual Analog 3 - -usb:v044FpB323* - ID_PRODUCT_FROM_DATABASE=Dual Trigger 3-in-1 (PC Mode) - -usb:v044FpB324* - ID_PRODUCT_FROM_DATABASE=Dual Trigger 3-in-1 (PS3 Mode) - -usb:v044FpB603* - ID_PRODUCT_FROM_DATABASE=force feedback Wheel - -usb:v044FpB605* - ID_PRODUCT_FROM_DATABASE=force feedback Racing Wheel - -usb:v044FpB651* - ID_PRODUCT_FROM_DATABASE=Ferrari GT Rumble Force Wheel - -usb:v044FpB653* - ID_PRODUCT_FROM_DATABASE=RGT Force Feedback Clutch Racing Wheel - -usb:v044FpB654* - ID_PRODUCT_FROM_DATABASE=Ferrari GT Force Feedback Wheel - -usb:v044FpB700* - ID_PRODUCT_FROM_DATABASE=Tacticalboard - -usb:v0450* - ID_VENDOR_FROM_DATABASE=DFI, Inc. - -usb:v0451* - ID_VENDOR_FROM_DATABASE=Texas Instruments, Inc. - -usb:v0451p1234* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0451p1428* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v0451p1446* - ID_PRODUCT_FROM_DATABASE=TUSB2040/2070 Hub - -usb:v0451p16A6* - ID_PRODUCT_FROM_DATABASE=BM-USBD1 BlueRobin RF heart rate sensor receiver - -usb:v0451p2036* - ID_PRODUCT_FROM_DATABASE=TUSB2036 Hub - -usb:v0451p2046* - ID_PRODUCT_FROM_DATABASE=TUSB2046 Hub - -usb:v0451p2077* - ID_PRODUCT_FROM_DATABASE=TUSB2077 Hub - -usb:v0451p3410* - ID_PRODUCT_FROM_DATABASE=TUSB3410 Microcontroller - -usb:v0451p3F00* - ID_PRODUCT_FROM_DATABASE=OMAP1610 - -usb:v0451p3F02* - ID_PRODUCT_FROM_DATABASE=SMC WSKP100 Wi-Fi Phone - -usb:v0451p5409* - ID_PRODUCT_FROM_DATABASE=Frontier Labs NEX IA+ Digital Audio Player - -usb:v0451p6000* - ID_PRODUCT_FROM_DATABASE=AU5 ADSL Modem (pre-reenum) - -usb:v0451p6001* - ID_PRODUCT_FROM_DATABASE=AU5 ADSL Modem - -usb:v0451p6060* - ID_PRODUCT_FROM_DATABASE=RNDIS/BeWAN ADSL2+ - -usb:v0451p6070* - ID_PRODUCT_FROM_DATABASE=RNDIS/BeWAN ADSL2+ - -usb:v0451p625F* - ID_PRODUCT_FROM_DATABASE=TUSB6250 ATA Bridge - -usb:v0451p8042* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v0451pDBC0* - ID_PRODUCT_FROM_DATABASE=Device Bay Controller - -usb:v0451pE001* - ID_PRODUCT_FROM_DATABASE=GraphLink - -usb:v0451pE003* - ID_PRODUCT_FROM_DATABASE=TI-84 Plus Calculator - -usb:v0451pE004* - ID_PRODUCT_FROM_DATABASE=TI-89 Titanium Calculator - -usb:v0451pE008* - ID_PRODUCT_FROM_DATABASE=TI-84 Plus Silver Calculator - -usb:v0451pF430* - ID_PRODUCT_FROM_DATABASE=MSP-FET430UIF JTAG Tool - -usb:v0451pF432* - ID_PRODUCT_FROM_DATABASE=eZ430 Development Tool - -usb:v0451pFFFF* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0452* - ID_VENDOR_FROM_DATABASE=Mitsubishi Electronics America, Inc. - -usb:v0452p0021* - ID_PRODUCT_FROM_DATABASE=HID Monitor Controls - -usb:v0452p0050* - ID_PRODUCT_FROM_DATABASE=Diamond Pro 900u CRT Monitor - -usb:v0452p0051* - ID_PRODUCT_FROM_DATABASE=Integrated Hub - -usb:v0453* - ID_VENDOR_FROM_DATABASE=CMD Technology - -usb:v0453p6781* - ID_PRODUCT_FROM_DATABASE=NMB Keyboard - -usb:v0453p6783* - ID_PRODUCT_FROM_DATABASE=Chicony Composite Keyboard - -usb:v0454* - ID_VENDOR_FROM_DATABASE=Vobis Microcomputer AG - -usb:v0455* - ID_VENDOR_FROM_DATABASE=Telematics International, Inc. - -usb:v0456* - ID_VENDOR_FROM_DATABASE=Analog Devices, Inc. - -usb:v0456pF000* - ID_PRODUCT_FROM_DATABASE=FT2232 JTAG ICE [gnICE] - -usb:v0456pF001* - ID_PRODUCT_FROM_DATABASE=FT2232H Hi-Speed JTAG ICE [gnICE+] - -usb:v0457* - ID_VENDOR_FROM_DATABASE=Silicon Integrated Systems Corp. - -usb:v0457p0150* - ID_PRODUCT_FROM_DATABASE=Super Talent 1GB Flash Drive - -usb:v0457p0151* - ID_PRODUCT_FROM_DATABASE=Super Flash 1GB / GXT 64MB Flash Drive - -usb:v0457p0162* - ID_PRODUCT_FROM_DATABASE=SiS162 usb Wireless LAN Adapter - -usb:v0457p0163* - ID_PRODUCT_FROM_DATABASE=802.11 Wireless LAN Adapter - -usb:v0457p5401* - ID_PRODUCT_FROM_DATABASE=Wireless Adapter RO80211GS-USB - -usb:v0458* - ID_VENDOR_FROM_DATABASE=KYE Systems Corp. (Mouse Systems) - -usb:v0458p0001* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v0458p0002* - ID_PRODUCT_FROM_DATABASE=Genius NetMouse Pro - -usb:v0458p0003* - ID_PRODUCT_FROM_DATABASE=Genius NetScroll+ - -usb:v0458p0006* - ID_PRODUCT_FROM_DATABASE=Easy Mouse+ - -usb:v0458p000B* - ID_PRODUCT_FROM_DATABASE=NetMouse Wheel(P+U) - -usb:v0458p000C* - ID_PRODUCT_FROM_DATABASE=TACOMA Fingerprint V1.06.01 - -usb:v0458p000E* - ID_PRODUCT_FROM_DATABASE=VideoCAM Web - -usb:v0458p0013* - ID_PRODUCT_FROM_DATABASE=TACOMA Fingerprint Mouse V1.06.01 - -usb:v0458p001A* - ID_PRODUCT_FROM_DATABASE=Genius WebScroll+ - -usb:v0458p0036* - ID_PRODUCT_FROM_DATABASE=Pocket Mouse LE - -usb:v0458p0039* - ID_PRODUCT_FROM_DATABASE=NetScroll+ Superior - -usb:v0458p003A* - ID_PRODUCT_FROM_DATABASE=NetScroll+ Mini Traveler / Genius NetScroll 120 - -usb:v0458p004C* - ID_PRODUCT_FROM_DATABASE=Slimstar Pro Keyboard - -usb:v0458p0056* - ID_PRODUCT_FROM_DATABASE=Ergo 300 Mouse - -usb:v0458p0057* - ID_PRODUCT_FROM_DATABASE=Enhanced Gaming Device - -usb:v0458p0059* - ID_PRODUCT_FROM_DATABASE=Enhanced Laser Device - -usb:v0458p005A* - ID_PRODUCT_FROM_DATABASE=Enhanced Device - -usb:v0458p005B* - ID_PRODUCT_FROM_DATABASE=Enhanced Device - -usb:v0458p005C* - ID_PRODUCT_FROM_DATABASE=Enhanced Laser Gaming Device - -usb:v0458p005D* - ID_PRODUCT_FROM_DATABASE=Enhanced Device - -usb:v0458p0061* - ID_PRODUCT_FROM_DATABASE=Bluetooth Dongle - -usb:v0458p0066* - ID_PRODUCT_FROM_DATABASE=Genius Traveler 1000 Wireless Mouse - -usb:v0458p0072* - ID_PRODUCT_FROM_DATABASE=Navigator 335 - -usb:v0458p0083* - ID_PRODUCT_FROM_DATABASE=Bluetooth Dongle - -usb:v0458p0087* - ID_PRODUCT_FROM_DATABASE=Ergo 525V Laser Mouse - -usb:v0458p00CA* - ID_PRODUCT_FROM_DATABASE=Pen Mouse - -usb:v0458p0100* - ID_PRODUCT_FROM_DATABASE=EasyPen Tablet - -usb:v0458p0101* - ID_PRODUCT_FROM_DATABASE=CueCat - -usb:v0458p011B* - ID_PRODUCT_FROM_DATABASE=NetScroll T220 - -usb:v0458p1001* - ID_PRODUCT_FROM_DATABASE=Joystick - -usb:v0458p1002* - ID_PRODUCT_FROM_DATABASE=Game Pad - -usb:v0458p1003* - ID_PRODUCT_FROM_DATABASE=Genius VideoCam - -usb:v0458p1004* - ID_PRODUCT_FROM_DATABASE=Flight2000 F-23 Joystick - -usb:v0458p100A* - ID_PRODUCT_FROM_DATABASE=Aashima Technology Trust Sight Fighter Vibration Feedback Joystick - -usb:v0458p2001* - ID_PRODUCT_FROM_DATABASE=ColorPage-Vivid Pro Scanner - -usb:v0458p2004* - ID_PRODUCT_FROM_DATABASE=ColorPage-HR6 V1 Scanner - -usb:v0458p2005* - ID_PRODUCT_FROM_DATABASE=ColorPage-HR6/Vivid3 - -usb:v0458p2007* - ID_PRODUCT_FROM_DATABASE=ColorPage-HR6 V2 Scanner - -usb:v0458p2008* - ID_PRODUCT_FROM_DATABASE=ColorPage-HR6 V2 Scanner - -usb:v0458p2009* - ID_PRODUCT_FROM_DATABASE=ColorPage-HR6A Scanner - -usb:v0458p2011* - ID_PRODUCT_FROM_DATABASE=ColorPage-Vivid3x Scanner - -usb:v0458p2012* - ID_PRODUCT_FROM_DATABASE=Plustek Scanner - -usb:v0458p2013* - ID_PRODUCT_FROM_DATABASE=ColorPage-HR7 Scanner - -usb:v0458p2014* - ID_PRODUCT_FROM_DATABASE=ColorPage-Vivid4 - -usb:v0458p2015* - ID_PRODUCT_FROM_DATABASE=ColorPage-HR7LE Scanner - -usb:v0458p2016* - ID_PRODUCT_FROM_DATABASE=ColorPage-HR6X Scanner - -usb:v0458p2017* - ID_PRODUCT_FROM_DATABASE=ColorPage-Vivid3xe - -usb:v0458p2018* - ID_PRODUCT_FROM_DATABASE=ColorPage-HR7X - -usb:v0458p2019* - ID_PRODUCT_FROM_DATABASE=ColorPage-HR6X Slim - -usb:v0458p201A* - ID_PRODUCT_FROM_DATABASE=ColorPage-Vivid4xe - -usb:v0458p201B* - ID_PRODUCT_FROM_DATABASE=ColorPage-Vivid4x - -usb:v0458p201C* - ID_PRODUCT_FROM_DATABASE=ColorPage-HR8 - -usb:v0458p201D* - ID_PRODUCT_FROM_DATABASE=ColorPage-Vivid 1200 X - -usb:v0458p201E* - ID_PRODUCT_FROM_DATABASE=ColorPage-Slim 1200 - -usb:v0458p201F* - ID_PRODUCT_FROM_DATABASE=ColorPage-Vivid 1200 XE - -usb:v0458p2020* - ID_PRODUCT_FROM_DATABASE=ColorPage-Slim 1200 USB2 - -usb:v0458p2021* - ID_PRODUCT_FROM_DATABASE=ColorPage-SF600 - -usb:v0458p3017* - ID_PRODUCT_FROM_DATABASE=SPEED WHEEL 3 Vibration - -usb:v0458p3018* - ID_PRODUCT_FROM_DATABASE=Wireless 2.4Ghz Game Pad - -usb:v0458p3019* - ID_PRODUCT_FROM_DATABASE=10-Button USB Joystick with Vibration - -usb:v0458p301A* - ID_PRODUCT_FROM_DATABASE=MaxFire G-12U Vibration - -usb:v0458p301D* - ID_PRODUCT_FROM_DATABASE=Genius MaxFire MiniPad - -usb:v0458p400F* - ID_PRODUCT_FROM_DATABASE=Genius TVGo DVB-T02Q MCE - -usb:v0458p4012* - ID_PRODUCT_FROM_DATABASE=TVGo DVB-T03 [AF9015] - -usb:v0458p5003* - ID_PRODUCT_FROM_DATABASE=G-pen 560 Tablet - -usb:v0458p5004* - ID_PRODUCT_FROM_DATABASE=G-pen Tablet - -usb:v0458p6001* - ID_PRODUCT_FROM_DATABASE=GF3000F Ethernet Adapter - -usb:v0458p7004* - ID_PRODUCT_FROM_DATABASE=VideoCAM Express V2 - -usb:v0458p7006* - ID_PRODUCT_FROM_DATABASE=Dsc 1.3 Smart Camera Device - -usb:v0458p7007* - ID_PRODUCT_FROM_DATABASE=VideoCAM Web - -usb:v0458p7009* - ID_PRODUCT_FROM_DATABASE=G-Shot G312 Still Camera Device - -usb:v0458p700C* - ID_PRODUCT_FROM_DATABASE=VideoCAM Web V3 - -usb:v0458p700D* - ID_PRODUCT_FROM_DATABASE=G-Shot G511 Composite Device - -usb:v0458p700F* - ID_PRODUCT_FROM_DATABASE=VideoCAM Web - -usb:v0458p7012* - ID_PRODUCT_FROM_DATABASE=WebCAM USB2.0 - -usb:v0458p7014* - ID_PRODUCT_FROM_DATABASE=VideoCAM Live V3 - -usb:v0458p701C* - ID_PRODUCT_FROM_DATABASE=G-Shot G512 Still Camera - -usb:v0458p7020* - ID_PRODUCT_FROM_DATABASE=Sim 321C - -usb:v0458p7025* - ID_PRODUCT_FROM_DATABASE=Eye 311Q Camera - -usb:v0458p7029* - ID_PRODUCT_FROM_DATABASE=Genius Look 320s (SN9C201 + HV7131R) - -usb:v0458p702F* - ID_PRODUCT_FROM_DATABASE=Genius Slim 322 - -usb:v0458p7035* - ID_PRODUCT_FROM_DATABASE=i-Look 325T Camera - -usb:v0458p7045* - ID_PRODUCT_FROM_DATABASE=Genius Look 1320 V2 - -usb:v0458p704C* - ID_PRODUCT_FROM_DATABASE=Genius i-Look 1321 - -usb:v0458p704D* - ID_PRODUCT_FROM_DATABASE=Slim 1322AF - -usb:v0458p7055* - ID_PRODUCT_FROM_DATABASE=Slim 2020AF camera - -usb:v0458p705A* - ID_PRODUCT_FROM_DATABASE=Asus USB2.0 Webcam - -usb:v0458p705C* - ID_PRODUCT_FROM_DATABASE=Genius iSlim 1300AF - -usb:v0458p7079* - ID_PRODUCT_FROM_DATABASE=FaceCam 2025R - -usb:v0458p707F* - ID_PRODUCT_FROM_DATABASE=TVGo DVB-T03 [RTL2832] - -usb:v0459* - ID_VENDOR_FROM_DATABASE=Adobe Systems, Inc. - -usb:v045A* - ID_VENDOR_FROM_DATABASE=SONICblue, Inc. - -usb:v045Ap07DA* - ID_PRODUCT_FROM_DATABASE=Supra Express 56K modem - -usb:v045Ap0B4A* - ID_PRODUCT_FROM_DATABASE=SupraMax 2890 56K Modem [Lucent Atlas] - -usb:v045Ap0B68* - ID_PRODUCT_FROM_DATABASE=SupraMax 56K Modem - -usb:v045Ap5001* - ID_PRODUCT_FROM_DATABASE=Rio 600 MP3 Player - -usb:v045Ap5002* - ID_PRODUCT_FROM_DATABASE=Rio 800 MP3 Player - -usb:v045Ap5003* - ID_PRODUCT_FROM_DATABASE=Nike Psa/Play MP3 Player - -usb:v045Ap5005* - ID_PRODUCT_FROM_DATABASE=Rio S10 MP3 Player - -usb:v045Ap5006* - ID_PRODUCT_FROM_DATABASE=Rio S50 MP3 Player - -usb:v045Ap5007* - ID_PRODUCT_FROM_DATABASE=Rio S35 MP3 Player - -usb:v045Ap5008* - ID_PRODUCT_FROM_DATABASE=Rio 900 MP3 Player - -usb:v045Ap5009* - ID_PRODUCT_FROM_DATABASE=Rio S30 MP3 Player - -usb:v045Ap500D* - ID_PRODUCT_FROM_DATABASE=Fuse MP3 Player - -usb:v045Ap500E* - ID_PRODUCT_FROM_DATABASE=Chiba MP3 Player - -usb:v045Ap500F* - ID_PRODUCT_FROM_DATABASE=Cali MP3 Player - -usb:v045Ap5010* - ID_PRODUCT_FROM_DATABASE=Rio S11 MP3 Player - -usb:v045Ap501C* - ID_PRODUCT_FROM_DATABASE=Virgin MPF-1000 - -usb:v045Ap501D* - ID_PRODUCT_FROM_DATABASE=Rio Fuse - -usb:v045Ap501E* - ID_PRODUCT_FROM_DATABASE=Rio Chiba - -usb:v045Ap501F* - ID_PRODUCT_FROM_DATABASE=Rio Cali - -usb:v045Ap503F* - ID_PRODUCT_FROM_DATABASE=Cali256 MP3 Player - -usb:v045Ap5202* - ID_PRODUCT_FROM_DATABASE=Rio Riot MP3 Player - -usb:v045Ap5210* - ID_PRODUCT_FROM_DATABASE=Rio Karma Music Player - -usb:v045Ap5220* - ID_PRODUCT_FROM_DATABASE=Rio Nitrus MP3 Player - -usb:v045Ap5221* - ID_PRODUCT_FROM_DATABASE=Rio Eigen - -usb:v045B* - ID_VENDOR_FROM_DATABASE=Hitachi, Ltd - -usb:v045Bp0053* - ID_PRODUCT_FROM_DATABASE=RX610 RX-Stick - -usb:v045D* - ID_VENDOR_FROM_DATABASE=Nortel Networks, Ltd - -usb:v045E* - ID_VENDOR_FROM_DATABASE=Microsoft Corp. - -usb:v045Ep0007* - ID_PRODUCT_FROM_DATABASE=SideWinder Game Pad - -usb:v045Ep0008* - ID_PRODUCT_FROM_DATABASE=SideWinder Precision Pro - -usb:v045Ep0009* - ID_PRODUCT_FROM_DATABASE=IntelliMouse - -usb:v045Ep000B* - ID_PRODUCT_FROM_DATABASE=Natural Keyboard Elite - -usb:v045Ep000E* - ID_PRODUCT_FROM_DATABASE=SideWinder® Freestyle Pro - -usb:v045Ep0014* - ID_PRODUCT_FROM_DATABASE=Digital Sound System 80 - -usb:v045Ep001A* - ID_PRODUCT_FROM_DATABASE=SideWinder Precision Racing Wheel - -usb:v045Ep001B* - ID_PRODUCT_FROM_DATABASE=SideWinder Force Feedback 2 Joystick - -usb:v045Ep001C* - ID_PRODUCT_FROM_DATABASE=Internet Keyboard Pro - -usb:v045Ep001D* - ID_PRODUCT_FROM_DATABASE=Natural Keyboard Pro - -usb:v045Ep001E* - ID_PRODUCT_FROM_DATABASE=IntelliMouse Explorer - -usb:v045Ep0023* - ID_PRODUCT_FROM_DATABASE=Trackball Optical - -usb:v045Ep0024* - ID_PRODUCT_FROM_DATABASE=Trackball Explorer - -usb:v045Ep0025* - ID_PRODUCT_FROM_DATABASE=IntelliEye Mouse - -usb:v045Ep0026* - ID_PRODUCT_FROM_DATABASE=SideWinder GamePad Pro - -usb:v045Ep0027* - ID_PRODUCT_FROM_DATABASE=SideWinder PnP GamePad - -usb:v045Ep0028* - ID_PRODUCT_FROM_DATABASE=SideWinder Dual Strike - -usb:v045Ep0029* - ID_PRODUCT_FROM_DATABASE=IntelliMouse Optical - -usb:v045Ep002B* - ID_PRODUCT_FROM_DATABASE=Internet Keyboard Pro - -usb:v045Ep002D* - ID_PRODUCT_FROM_DATABASE=Internet Keyboard - -usb:v045Ep002F* - ID_PRODUCT_FROM_DATABASE=Integrated Hub - -usb:v045Ep0033* - ID_PRODUCT_FROM_DATABASE=Sidewinder Strategic Commander - -usb:v045Ep0034* - ID_PRODUCT_FROM_DATABASE=SideWinder Force Feedback Wheel - -usb:v045Ep0038* - ID_PRODUCT_FROM_DATABASE=SideWinder Precision 2 - -usb:v045Ep0039* - ID_PRODUCT_FROM_DATABASE=IntelliMouse Optical - -usb:v045Ep003B* - ID_PRODUCT_FROM_DATABASE=SideWinder Game Voice - -usb:v045Ep003C* - ID_PRODUCT_FROM_DATABASE=SideWinder Joystick - -usb:v045Ep0040* - ID_PRODUCT_FROM_DATABASE=Wheel Mouse Optical - -usb:v045Ep0047* - ID_PRODUCT_FROM_DATABASE=IntelliMouse Explorer 3.0 - -usb:v045Ep0048* - ID_PRODUCT_FROM_DATABASE=Office Keyboard 1.0A - -usb:v045Ep0053* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v045Ep0059* - ID_PRODUCT_FROM_DATABASE=Wireless IntelliMouse Explorer - -usb:v045Ep005C* - ID_PRODUCT_FROM_DATABASE=Office Keyboard (106/109) - -usb:v045Ep005F* - ID_PRODUCT_FROM_DATABASE=Wireless MultiMedia Keyboard - -usb:v045Ep0061* - ID_PRODUCT_FROM_DATABASE=Wireless MultiMedia Keyboard (106/109) - -usb:v045Ep0063* - ID_PRODUCT_FROM_DATABASE=Wireless Natural MultiMedia Keyboard - -usb:v045Ep0065* - ID_PRODUCT_FROM_DATABASE=Wireless Natural MultiMedia Keyboard (106/109) - -usb:v045Ep006A* - ID_PRODUCT_FROM_DATABASE=Wireless Optical Mouse (IntelliPoint) - -usb:v045Ep006D* - ID_PRODUCT_FROM_DATABASE=eHome Remote Control Keyboard keys - -usb:v045Ep006E* - ID_PRODUCT_FROM_DATABASE=MN-510 802.11b Wireless Adapter [Intersil ISL3873B] - -usb:v045Ep006F* - ID_PRODUCT_FROM_DATABASE=Smart Display Reference Device - -usb:v045Ep0070* - ID_PRODUCT_FROM_DATABASE=Wireless MultiMedia Keyboard - -usb:v045Ep0071* - ID_PRODUCT_FROM_DATABASE=Wireless MultiMedia Keyboard (106/109) - -usb:v045Ep0072* - ID_PRODUCT_FROM_DATABASE=Wireless Natural MultiMedia Keyboard - -usb:v045Ep0073* - ID_PRODUCT_FROM_DATABASE=Wireless Natural MultiMedia Keyboard (106/109) - -usb:v045Ep0079* - ID_PRODUCT_FROM_DATABASE=IXI Ogo CT-17 handheld device - -usb:v045Ep007A* - ID_PRODUCT_FROM_DATABASE=10/100 USB NIC - -usb:v045Ep007D* - ID_PRODUCT_FROM_DATABASE=Notebook Optical Mouse - -usb:v045Ep007E* - ID_PRODUCT_FROM_DATABASE=Wireless Transceiver for Bluetooth - -usb:v045Ep0080* - ID_PRODUCT_FROM_DATABASE=Digital Media Pro Keyboard - -usb:v045Ep0083* - ID_PRODUCT_FROM_DATABASE=Basic Optical Mouse - -usb:v045Ep0084* - ID_PRODUCT_FROM_DATABASE=Basic Optical Mouse - -usb:v045Ep008A* - ID_PRODUCT_FROM_DATABASE=Wireless Keyboard and Mouse - -usb:v045Ep008B* - ID_PRODUCT_FROM_DATABASE=Dual Receiver Wireless Mouse (IntelliPoint) - -usb:v045Ep008C* - ID_PRODUCT_FROM_DATABASE=Wireless Intellimouse Explorer 2.0 - -usb:v045Ep0095* - ID_PRODUCT_FROM_DATABASE=IntelliMouse Explorer 4.0 (IntelliPoint) - -usb:v045Ep009C* - ID_PRODUCT_FROM_DATABASE=Wireless Transceiver for Bluetooth 2.0 - -usb:v045Ep009D* - ID_PRODUCT_FROM_DATABASE=Wireless Optical Desktop 3.0 - -usb:v045Ep00A0* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v045Ep00A4* - ID_PRODUCT_FROM_DATABASE=Compact Optical Mouse, model 1016 - -usb:v045Ep00B0* - ID_PRODUCT_FROM_DATABASE=Digital Media Pro Keyboard - -usb:v045Ep00B4* - ID_PRODUCT_FROM_DATABASE=Digital Media Keyboard 1.0A - -usb:v045Ep00B9* - ID_PRODUCT_FROM_DATABASE=Wireless Optical Mouse 3.0 - -usb:v045Ep00BB* - ID_PRODUCT_FROM_DATABASE=Fingerprint Reader - -usb:v045Ep00BC* - ID_PRODUCT_FROM_DATABASE=Fingerprint Reader - -usb:v045Ep00BD* - ID_PRODUCT_FROM_DATABASE=Fingerprint Reader - -usb:v045Ep00C2* - ID_PRODUCT_FROM_DATABASE=MN-710 802.11g Wireless Adapter [Intersil ISL3886] - -usb:v045Ep00C9* - ID_PRODUCT_FROM_DATABASE=MTP Device - -usb:v045Ep00CA* - ID_PRODUCT_FROM_DATABASE=Fingerprint Reader - -usb:v045Ep00CB* - ID_PRODUCT_FROM_DATABASE=Basic Optical Mouse v2.0 - -usb:v045Ep00CE* - ID_PRODUCT_FROM_DATABASE=Generic PPC Flash device - -usb:v045Ep00D1* - ID_PRODUCT_FROM_DATABASE=Optical Mouse with Tilt Wheel - -usb:v045Ep00DA* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v045Ep00DB* - ID_PRODUCT_FROM_DATABASE=Natural Ergonomic Keyboard 4000 V1.0 - -usb:v045Ep00DD* - ID_PRODUCT_FROM_DATABASE=Comfort Curve Keyboard 2000 V1.0 - -usb:v045Ep00E1* - ID_PRODUCT_FROM_DATABASE=Wireless Laser Mouse 6000 Reciever - -usb:v045Ep00F4* - ID_PRODUCT_FROM_DATABASE=LifeCam VX-6000 (SN9C20x + OV9650) - -usb:v045Ep00F5* - ID_PRODUCT_FROM_DATABASE=LifeCam VX-3000 - -usb:v045Ep00F6* - ID_PRODUCT_FROM_DATABASE=Comfort Optical Mouse 1000 - -usb:v045Ep00F7* - ID_PRODUCT_FROM_DATABASE=LifeCam VX-1000 - -usb:v045Ep00F8* - ID_PRODUCT_FROM_DATABASE=LifeCam NX-6000 - -usb:v045Ep00F9* - ID_PRODUCT_FROM_DATABASE=Wireless Desktop Receiver 3.1 - -usb:v045Ep0202* - ID_PRODUCT_FROM_DATABASE=Xbox Controller - -usb:v045Ep0280* - ID_PRODUCT_FROM_DATABASE=XBox Device - -usb:v045Ep0283* - ID_PRODUCT_FROM_DATABASE=Xbox Communicator - -usb:v045Ep0284* - ID_PRODUCT_FROM_DATABASE=Xbox DVD Playback Kit - -usb:v045Ep0285* - ID_PRODUCT_FROM_DATABASE=Xbox Controller S - -usb:v045Ep0288* - ID_PRODUCT_FROM_DATABASE=Xbox Controller S Hub - -usb:v045Ep0289* - ID_PRODUCT_FROM_DATABASE=Xbox Controller S - -usb:v045Ep028B* - ID_PRODUCT_FROM_DATABASE=Xbox360 DVD Emulator - -usb:v045Ep028D* - ID_PRODUCT_FROM_DATABASE=Xbox360 Memory Unit 64MB - -usb:v045Ep028E* - ID_PRODUCT_FROM_DATABASE=Xbox360 Controller - -usb:v045Ep028F* - ID_PRODUCT_FROM_DATABASE=Xbox360 Wireless Controller - -usb:v045Ep0290* - ID_PRODUCT_FROM_DATABASE=Xbox360 Performance Pipe (PIX) - -usb:v045Ep0291* - ID_PRODUCT_FROM_DATABASE=Xbox 360 Wireless Receiver for Windows - -usb:v045Ep0292* - ID_PRODUCT_FROM_DATABASE=Xbox360 Wireless Networking Adapter - -usb:v045Ep029C* - ID_PRODUCT_FROM_DATABASE=Xbox360 HD-DVD Drive - -usb:v045Ep029D* - ID_PRODUCT_FROM_DATABASE=Xbox360 HD-DVD Drive - -usb:v045Ep029E* - ID_PRODUCT_FROM_DATABASE=Xbox360 HD-DVD Memory Unit - -usb:v045Ep02A0* - ID_PRODUCT_FROM_DATABASE=Xbox360 Big Button IR - -usb:v045Ep02A8* - ID_PRODUCT_FROM_DATABASE=Xbox360 Wireless N Networking Adapter [Atheros AR7010+AR9280] - -usb:v045Ep02AD* - ID_PRODUCT_FROM_DATABASE=Xbox NUI Audio - -usb:v045Ep02AE* - ID_PRODUCT_FROM_DATABASE=Xbox NUI Camera - -usb:v045Ep02B0* - ID_PRODUCT_FROM_DATABASE=Xbox NUI Motor - -usb:v045Ep0400* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0401* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0402* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0403* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0404* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0405* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0406* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0407* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0408* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0409* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep040A* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep040B* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep040C* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep040D* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep040E* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep040F* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0410* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0411* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0412* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0413* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0414* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0415* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0416* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0417* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2002 - -usb:v045Ep0432* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0433* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0434* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0435* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0436* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0437* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0438* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0439* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep043A* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep043B* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep043C* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep043D* - ID_PRODUCT_FROM_DATABASE=Becker Traffic Assist Highspeed 7934 - -usb:v045Ep043E* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep043F* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0440* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0441* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0442* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0443* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0444* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0445* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0446* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0447* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0448* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0449* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep044A* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep044B* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep044C* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep044D* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep044E* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep044F* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0450* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0451* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0452* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0453* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0454* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0455* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0456* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0457* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0458* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0459* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep045A* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep045B* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep045C* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep045D* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep045E* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep045F* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0460* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0461* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0462* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0463* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0464* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0465* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0466* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0467* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0468* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0469* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep046A* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep046B* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep046C* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep046D* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep046E* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep046F* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0470* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0471* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0472* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0473* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0474* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0475* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0476* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0477* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0478* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep0479* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep047A* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep047B* - ID_PRODUCT_FROM_DATABASE=Windows Powered Pocket PC 2003 - -usb:v045Ep04C8* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2002 - -usb:v045Ep04C9* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2002 - -usb:v045Ep04CA* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2002 - -usb:v045Ep04CB* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2002 - -usb:v045Ep04CC* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2002 - -usb:v045Ep04CD* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2002 - -usb:v045Ep04CE* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2002 - -usb:v045Ep04D7* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04D8* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04D9* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04DA* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04DB* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04DC* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04DD* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04DE* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04DF* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04E0* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04E1* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04E2* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04E3* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04E4* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04E5* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04E6* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04E7* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04E8* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04E9* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04EA* - ID_PRODUCT_FROM_DATABASE=Windows Powered Smartphone 2003 - -usb:v045Ep04EC* - ID_PRODUCT_FROM_DATABASE=Windows Phone (Zune) - -usb:v045Ep063E* - ID_PRODUCT_FROM_DATABASE=Zune HD Media Player - -usb:v045Ep0640* - ID_PRODUCT_FROM_DATABASE=KIN Phone - -usb:v045Ep0641* - ID_PRODUCT_FROM_DATABASE=KIN Phone - -usb:v045Ep0642* - ID_PRODUCT_FROM_DATABASE=KIN Phone - -usb:v045Ep0707* - ID_PRODUCT_FROM_DATABASE=Wireless Laser Mouse 8000 - -usb:v045Ep0708* - ID_PRODUCT_FROM_DATABASE=Transceiver v 3.0 for Bluetooth - -usb:v045Ep070A* - ID_PRODUCT_FROM_DATABASE=Charon Bluetooth Dongle (DFU) - -usb:v045Ep0710* - ID_PRODUCT_FROM_DATABASE=Zune Media Player - -usb:v045Ep0713* - ID_PRODUCT_FROM_DATABASE=Wireless Presenter Mouse 8000 - -usb:v045Ep0719* - ID_PRODUCT_FROM_DATABASE=Xbox 360 Wireless Adapter - -usb:v045Ep071F* - ID_PRODUCT_FROM_DATABASE=Mouse/Keyboard 2.4GHz Transceiver V2.0 - -usb:v045Ep0721* - ID_PRODUCT_FROM_DATABASE=LifeCam NX-3000 (UVC-compliant) - -usb:v045Ep0723* - ID_PRODUCT_FROM_DATABASE=LifeCam VX-7000 (UVC-compliant) - -usb:v045Ep0724* - ID_PRODUCT_FROM_DATABASE=SideWinder Mouse - -usb:v045Ep0730* - ID_PRODUCT_FROM_DATABASE=Digital Media Keyboard 3000 - -usb:v045Ep0734* - ID_PRODUCT_FROM_DATABASE=Wireless Optical Desktop 700 - -usb:v045Ep0736* - ID_PRODUCT_FROM_DATABASE=Sidewinder X5 Mouse - -usb:v045Ep0737* - ID_PRODUCT_FROM_DATABASE=Compact Optical Mouse 500 - -usb:v045Ep0745* - ID_PRODUCT_FROM_DATABASE=Nano Transceiver v1.0 for Bluetooth - -usb:v045Ep0750* - ID_PRODUCT_FROM_DATABASE=Wired Keyboard 600 - -usb:v045Ep0752* - ID_PRODUCT_FROM_DATABASE=Wired Keyboard 400 - -usb:v045Ep075D* - ID_PRODUCT_FROM_DATABASE=LifeCam Cinema - -usb:v045Ep0766* - ID_PRODUCT_FROM_DATABASE=LifeCam VX-800 - -usb:v045Ep0768* - ID_PRODUCT_FROM_DATABASE=Sidewinder X4 - -usb:v045Ep076C* - ID_PRODUCT_FROM_DATABASE=Comfort Mouse 4500 - -usb:v045Ep076D* - ID_PRODUCT_FROM_DATABASE=LifeCam HD-5000 - -usb:v045Ep0772* - ID_PRODUCT_FROM_DATABASE=LifeCam Studio - -usb:v045Ep0779* - ID_PRODUCT_FROM_DATABASE=LifeCam HD-3000 - -usb:v045Ep930A* - ID_PRODUCT_FROM_DATABASE=ISOUSB.SYS Intel 82930 Isochronous IO Test Board - -usb:v045EpFFF8* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v045EpFFFF* - ID_PRODUCT_FROM_DATABASE=Windows CE Mass Storage - -usb:v0460* - ID_VENDOR_FROM_DATABASE=Ace Cad Enterprise Co., Ltd - -usb:v0460p0004* - ID_PRODUCT_FROM_DATABASE=Tablet (5x3.75) - -usb:v0460p0006* - ID_PRODUCT_FROM_DATABASE=LCD Tablet (12x9) - -usb:v0460p0008* - ID_PRODUCT_FROM_DATABASE=Tablet (3x2.25) - -usb:v0461* - ID_VENDOR_FROM_DATABASE=Primax Electronics, Ltd - -usb:v0461p0010* - ID_PRODUCT_FROM_DATABASE=HP Keyboard - -usb:v0461p0300* - ID_PRODUCT_FROM_DATABASE=G2-300 Scanner - -usb:v0461p0301* - ID_PRODUCT_FROM_DATABASE=G2E-300 Scanner - -usb:v0461p0302* - ID_PRODUCT_FROM_DATABASE=G2-300 #2 Scanner - -usb:v0461p0303* - ID_PRODUCT_FROM_DATABASE=G2E-300 #2 Scanner - -usb:v0461p0340* - ID_PRODUCT_FROM_DATABASE=Colorado 9600 Scanner - -usb:v0461p0341* - ID_PRODUCT_FROM_DATABASE=Colorado 600u Scanner - -usb:v0461p0345* - ID_PRODUCT_FROM_DATABASE=Visioneer 6200 Scanner - -usb:v0461p0346* - ID_PRODUCT_FROM_DATABASE=Memorex Maxx 6136u Scanner - -usb:v0461p0347* - ID_PRODUCT_FROM_DATABASE=Primascan Colorado 2600u/Visioneer 4400 Scanner - -usb:v0461p0360* - ID_PRODUCT_FROM_DATABASE=Colorado 19200 Scanner - -usb:v0461p0361* - ID_PRODUCT_FROM_DATABASE=Colorado 1200u Scanner - -usb:v0461p0363* - ID_PRODUCT_FROM_DATABASE=VistaScan Astra 3600(ENG) - -usb:v0461p0364* - ID_PRODUCT_FROM_DATABASE=LG Electronics Scanworks 600U Scanner - -usb:v0461p0365* - ID_PRODUCT_FROM_DATABASE=VistaScan Astra 3600(ENG) - -usb:v0461p0366* - ID_PRODUCT_FROM_DATABASE=6400 - -usb:v0461p0367* - ID_PRODUCT_FROM_DATABASE=VistaScan Astra 3600(ENG) - -usb:v0461p0371* - ID_PRODUCT_FROM_DATABASE=Visioneer Onetouch 8920 Scanner - -usb:v0461p0374* - ID_PRODUCT_FROM_DATABASE=UMAX Astra 2500 - -usb:v0461p0375* - ID_PRODUCT_FROM_DATABASE=VistaScan Astra 3600(ENG) - -usb:v0461p0377* - ID_PRODUCT_FROM_DATABASE=Medion MD 5345 Scanner - -usb:v0461p0378* - ID_PRODUCT_FROM_DATABASE=VistaScan Astra 3600(ENG) - -usb:v0461p037B* - ID_PRODUCT_FROM_DATABASE=Medion MD 6190 Scanner - -usb:v0461p037C* - ID_PRODUCT_FROM_DATABASE=VistaScan Astra 3600(ENG) - -usb:v0461p0380* - ID_PRODUCT_FROM_DATABASE=G2-600 Scanner - -usb:v0461p0381* - ID_PRODUCT_FROM_DATABASE=ReadyScan 636i Scanner - -usb:v0461p0382* - ID_PRODUCT_FROM_DATABASE=G2-600 #2 Scanner - -usb:v0461p0383* - ID_PRODUCT_FROM_DATABASE=G2E-600 Scanner - -usb:v0461p038A* - ID_PRODUCT_FROM_DATABASE=UMAX Astra 3000/3600 - -usb:v0461p038B* - ID_PRODUCT_FROM_DATABASE=Xerox 2400 Onetouch - -usb:v0461p038C* - ID_PRODUCT_FROM_DATABASE=UMAX Astra 4100 - -usb:v0461p0392* - ID_PRODUCT_FROM_DATABASE=Medion/Lifetec/Tevion/Cytron MD 6190 - -usb:v0461p03A8* - ID_PRODUCT_FROM_DATABASE=9420M - -usb:v0461p0813* - ID_PRODUCT_FROM_DATABASE=IBM UltraPort Camera - -usb:v0461p0815* - ID_PRODUCT_FROM_DATABASE=Micro Innovations IC200 Webcam - -usb:v0461p0819* - ID_PRODUCT_FROM_DATABASE=Fujifilm IX-30 Camera [webcam mode] - -usb:v0461p081A* - ID_PRODUCT_FROM_DATABASE=Fujifilm IX-30 Camera [storage mode] - -usb:v0461p081C* - ID_PRODUCT_FROM_DATABASE=Elitegroup ECS-C11 Camera - -usb:v0461p081D* - ID_PRODUCT_FROM_DATABASE=Elitegroup ECS-C11 Storage - -usb:v0461p0A00* - ID_PRODUCT_FROM_DATABASE=Micro Innovations Web Cam 320 - -usb:v0461p4D01* - ID_PRODUCT_FROM_DATABASE=Comfort Keyboard - -usb:v0461p4D02* - ID_PRODUCT_FROM_DATABASE=Mouse-in-a-Box - -usb:v0461p4D03* - ID_PRODUCT_FROM_DATABASE=Kensington Mouse-in-a-box - -usb:v0461p4D04* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v0461p4D06* - ID_PRODUCT_FROM_DATABASE=Balless Mouse (HID) - -usb:v0461p4D0F* - ID_PRODUCT_FROM_DATABASE=HP Optical Mouse - -usb:v0461p4D15* - ID_PRODUCT_FROM_DATABASE=Dell Optical Mouse - -usb:v0461p4D17* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v0461p4D20* - ID_PRODUCT_FROM_DATABASE=HP Optical Mouse - -usb:v0461p4D2A* - ID_PRODUCT_FROM_DATABASE=PoPo Elixir Mouse (HID) - -usb:v0461p4D2B* - ID_PRODUCT_FROM_DATABASE=Wireless Laser Mini Mouse (HID) - -usb:v0461p4D2C* - ID_PRODUCT_FROM_DATABASE=PoPo Mini Pointer Mouse (HID) - -usb:v0461p4D2E* - ID_PRODUCT_FROM_DATABASE=Optical Mobile Mouse (HID) - -usb:v0461p4D51* - ID_PRODUCT_FROM_DATABASE=0Y357C PMX-MMOCZUL (B) [Dell Laser Mouse] - -usb:v0461p4D62* - ID_PRODUCT_FROM_DATABASE=HP Laser Mobile Mini Mouse - -usb:v0461p4D75* - ID_PRODUCT_FROM_DATABASE=Rocketfish RF-FLBTAD Bluetooth Adapter - -usb:v0461p4D81* - ID_PRODUCT_FROM_DATABASE=Dell N889 Optical Mouse - -usb:v0461p4DE7* - ID_PRODUCT_FROM_DATABASE=webcam - -usb:v0463* - ID_VENDOR_FROM_DATABASE=MGE UPS Systems - -usb:v0463p0001* - ID_PRODUCT_FROM_DATABASE=UPS - -usb:v0463pFFFF* - ID_PRODUCT_FROM_DATABASE=UPS - -usb:v0464* - ID_VENDOR_FROM_DATABASE=AMP/Tycoelectronics Corp. - -usb:v0467* - ID_VENDOR_FROM_DATABASE=AT&T Paradyne - -usb:v0468* - ID_VENDOR_FROM_DATABASE=Wieson Technologies Co., Ltd - -usb:v046A* - ID_VENDOR_FROM_DATABASE=Cherry GmbH - -usb:v046Ap0001* - ID_PRODUCT_FROM_DATABASE=My3000 Keyboard - -usb:v046Ap0003* - ID_PRODUCT_FROM_DATABASE=My3000 Hub - -usb:v046Ap0004* - ID_PRODUCT_FROM_DATABASE=CyBoard Keyboard - -usb:v046Ap0005* - ID_PRODUCT_FROM_DATABASE=XX33 SmartCard Reader Keyboard - -usb:v046Ap0008* - ID_PRODUCT_FROM_DATABASE=Wireless Keyboard and Mouse - -usb:v046Ap0010* - ID_PRODUCT_FROM_DATABASE=SmartBoard XX44 - -usb:v046Ap0011* - ID_PRODUCT_FROM_DATABASE=G83 (RS 6000) Keyboard - -usb:v046Ap0021* - ID_PRODUCT_FROM_DATABASE=CyMotion Expert Combo - -usb:v046Ap0023* - ID_PRODUCT_FROM_DATABASE=CyMotion Master Linux Keyboard G230 - -usb:v046Ap0027* - ID_PRODUCT_FROM_DATABASE=CyMotion Master Solar Keyboard - -usb:v046Ap002A* - ID_PRODUCT_FROM_DATABASE=Wireless Mouse & Keyboard - -usb:v046Ap002D* - ID_PRODUCT_FROM_DATABASE=SmartTerminal XX44 - -usb:v046Ap003E* - ID_PRODUCT_FROM_DATABASE=SmartTerminal ST-2xxx - -usb:v046Ap0080* - ID_PRODUCT_FROM_DATABASE=eHealth Terminal ST 1503 - -usb:v046Ap0081* - ID_PRODUCT_FROM_DATABASE=eHealth Keyboard G87 1504 - -usb:v046Ap0106* - ID_PRODUCT_FROM_DATABASE=R-300 Wireless Mouse Receiver - -usb:v046B* - ID_VENDOR_FROM_DATABASE=American Megatrends, Inc. - -usb:v046Bp0001* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v046Bp0101* - ID_PRODUCT_FROM_DATABASE=PS/2 Keyboard, Mouse & Joystick Ports - -usb:v046Bp0301* - ID_PRODUCT_FROM_DATABASE=USB 1.0 Hub - -usb:v046Bp0500* - ID_PRODUCT_FROM_DATABASE=Serial & Parallel Ports - -usb:v046BpFF10* - ID_PRODUCT_FROM_DATABASE=Virtual Keyboard and Mouse - -usb:v046C* - ID_VENDOR_FROM_DATABASE=Toshiba Corp., Digital Media Equipment - -usb:v046D* - ID_VENDOR_FROM_DATABASE=Logitech, Inc. - -usb:v046Dp0082* - ID_PRODUCT_FROM_DATABASE=Acer Aspire 5672 Webcam - -usb:v046Dp0200* - ID_PRODUCT_FROM_DATABASE=WingMan Extreme Joystick - -usb:v046Dp0203* - ID_PRODUCT_FROM_DATABASE=M2452 Keyboard - -usb:v046Dp0301* - ID_PRODUCT_FROM_DATABASE=M4848 Mouse - -usb:v046Dp0401* - ID_PRODUCT_FROM_DATABASE=HP PageScan - -usb:v046Dp0402* - ID_PRODUCT_FROM_DATABASE=NEC PageScan - -usb:v046Dp040F* - ID_PRODUCT_FROM_DATABASE=Logitech/Storm PageScan - -usb:v046Dp0430* - ID_PRODUCT_FROM_DATABASE=Mic (Cordless) - -usb:v046Dp0801* - ID_PRODUCT_FROM_DATABASE=QuickCam Home - -usb:v046Dp0802* - ID_PRODUCT_FROM_DATABASE=Webcam C200 - -usb:v046Dp0804* - ID_PRODUCT_FROM_DATABASE=Webcam C250 - -usb:v046Dp0805* - ID_PRODUCT_FROM_DATABASE=Webcam C300 - -usb:v046Dp0807* - ID_PRODUCT_FROM_DATABASE=Webcam B500 - -usb:v046Dp0808* - ID_PRODUCT_FROM_DATABASE=Webcam C600 - -usb:v046Dp0809* - ID_PRODUCT_FROM_DATABASE=Webcam Pro 9000 - -usb:v046Dp080A* - ID_PRODUCT_FROM_DATABASE=Portable Webcam C905 - -usb:v046Dp080F* - ID_PRODUCT_FROM_DATABASE=Webcam C120 - -usb:v046Dp0810* - ID_PRODUCT_FROM_DATABASE=QuickCam Pro - -usb:v046Dp0819* - ID_PRODUCT_FROM_DATABASE=Webcam C210 - -usb:v046Dp081B* - ID_PRODUCT_FROM_DATABASE=Webcam C310 - -usb:v046Dp081D* - ID_PRODUCT_FROM_DATABASE=HD Webcam C510 - -usb:v046Dp0820* - ID_PRODUCT_FROM_DATABASE=QuickCam VC - -usb:v046Dp0821* - ID_PRODUCT_FROM_DATABASE=HD Webcam C910 - -usb:v046Dp0825* - ID_PRODUCT_FROM_DATABASE=Webcam C270 - -usb:v046Dp0828* - ID_PRODUCT_FROM_DATABASE=HD Webcam B990 - -usb:v046Dp082D* - ID_PRODUCT_FROM_DATABASE=HD Pro Webcam C920 - -usb:v046Dp0830* - ID_PRODUCT_FROM_DATABASE=QuickClip - -usb:v046Dp0840* - ID_PRODUCT_FROM_DATABASE=QuickCam Express - -usb:v046Dp0850* - ID_PRODUCT_FROM_DATABASE=QuickCam Web - -usb:v046Dp0870* - ID_PRODUCT_FROM_DATABASE=QuickCam Express - -usb:v046Dp0890* - ID_PRODUCT_FROM_DATABASE=QuickCam Traveler - -usb:v046Dp0892* - ID_PRODUCT_FROM_DATABASE=OrbiCam - -usb:v046Dp0894* - ID_PRODUCT_FROM_DATABASE=CrystalCam - -usb:v046Dp0895* - ID_PRODUCT_FROM_DATABASE=QuickCam for Dell Notebooks - -usb:v046Dp0896* - ID_PRODUCT_FROM_DATABASE=OrbiCam - -usb:v046Dp0897* - ID_PRODUCT_FROM_DATABASE=QuickCam for Dell Notebooks - -usb:v046Dp0899* - ID_PRODUCT_FROM_DATABASE=QuickCam for Dell Notebooks - -usb:v046Dp089D* - ID_PRODUCT_FROM_DATABASE=QuickCam E2500 series - -usb:v046Dp08A0* - ID_PRODUCT_FROM_DATABASE=QuickCam IM - -usb:v046Dp08A1* - ID_PRODUCT_FROM_DATABASE=QuickCam IM with sound - -usb:v046Dp08A2* - ID_PRODUCT_FROM_DATABASE=Labtec Webcam Pro - -usb:v046Dp08A3* - ID_PRODUCT_FROM_DATABASE=QuickCam QuickCam Chat - -usb:v046Dp08A6* - ID_PRODUCT_FROM_DATABASE=QuickCam IM - -usb:v046Dp08A7* - ID_PRODUCT_FROM_DATABASE=QuickCam Image - -usb:v046Dp08A9* - ID_PRODUCT_FROM_DATABASE=Notebook Deluxe - -usb:v046Dp08AA* - ID_PRODUCT_FROM_DATABASE=Labtec Notebooks - -usb:v046Dp08AC* - ID_PRODUCT_FROM_DATABASE=QuickCam Cool - -usb:v046Dp08AD* - ID_PRODUCT_FROM_DATABASE=QuickCam Communicate STX - -usb:v046Dp08AE* - ID_PRODUCT_FROM_DATABASE=QuickCam for Notebooks - -usb:v046Dp08AF* - ID_PRODUCT_FROM_DATABASE=QuickCam Easy/Cool - -usb:v046Dp08B0* - ID_PRODUCT_FROM_DATABASE=QuickCam 3000 Pro [pwc] - -usb:v046Dp08B1* - ID_PRODUCT_FROM_DATABASE=QuickCam Notebook Pro - -usb:v046Dp08B2* - ID_PRODUCT_FROM_DATABASE=QuickCam Pro 4000 - -usb:v046Dp08B3* - ID_PRODUCT_FROM_DATABASE=QuickCam Zoom - -usb:v046Dp08B4* - ID_PRODUCT_FROM_DATABASE=QuickCam Zoom - -usb:v046Dp08B5* - ID_PRODUCT_FROM_DATABASE=QuickCam Sphere - -usb:v046Dp08B9* - ID_PRODUCT_FROM_DATABASE=QuickCam IM - -usb:v046Dp08BD* - ID_PRODUCT_FROM_DATABASE=Microphone (Pro 4000) - -usb:v046Dp08C0* - ID_PRODUCT_FROM_DATABASE=QuickCam Pro 3000 - -usb:v046Dp08C1* - ID_PRODUCT_FROM_DATABASE=QuickCam Fusion - -usb:v046Dp08C2* - ID_PRODUCT_FROM_DATABASE=QuickCam PTZ - -usb:v046Dp08C3* - ID_PRODUCT_FROM_DATABASE=Camera (Notebooks Pro) - -usb:v046Dp08C5* - ID_PRODUCT_FROM_DATABASE=QuickCam Pro 5000 - -usb:v046Dp08C6* - ID_PRODUCT_FROM_DATABASE=QuickCam for DELL Notebooks - -usb:v046Dp08C7* - ID_PRODUCT_FROM_DATABASE=QuickCam OEM Cisco VT Camera II - -usb:v046Dp08C9* - ID_PRODUCT_FROM_DATABASE=QuickCam Ultra Vision - -usb:v046Dp08CA* - ID_PRODUCT_FROM_DATABASE=Mic (Fusion) - -usb:v046Dp08CB* - ID_PRODUCT_FROM_DATABASE=Mic (Notebooks Pro) - -usb:v046Dp08CC* - ID_PRODUCT_FROM_DATABASE=Mic (PTZ) - -usb:v046Dp08CE* - ID_PRODUCT_FROM_DATABASE=QuickCam Pro 5000 - -usb:v046Dp08CF* - ID_PRODUCT_FROM_DATABASE=QuickCam UpdateMe - -usb:v046Dp08D0* - ID_PRODUCT_FROM_DATABASE=QuickCam Express - -usb:v046Dp08D7* - ID_PRODUCT_FROM_DATABASE=QuickCam Communicate STX - -usb:v046Dp08D8* - ID_PRODUCT_FROM_DATABASE=QuickCam for Notebook Deluxe - -usb:v046Dp08D9* - ID_PRODUCT_FROM_DATABASE=QuickCam IM/Connect - -usb:v046Dp08DA* - ID_PRODUCT_FROM_DATABASE=QuickCam Messanger - -usb:v046Dp08DD* - ID_PRODUCT_FROM_DATABASE=QuickCam for Notebooks - -usb:v046Dp08E0* - ID_PRODUCT_FROM_DATABASE=QuickCam Express - -usb:v046Dp08E1* - ID_PRODUCT_FROM_DATABASE=Labtec Webcam - -usb:v046Dp08F0* - ID_PRODUCT_FROM_DATABASE=QuickCam Messenger - -usb:v046Dp08F1* - ID_PRODUCT_FROM_DATABASE=QuickCam Express - -usb:v046Dp08F2* - ID_PRODUCT_FROM_DATABASE=Microphone (Messenger) - -usb:v046Dp08F3* - ID_PRODUCT_FROM_DATABASE=QuickCam Express - -usb:v046Dp08F4* - ID_PRODUCT_FROM_DATABASE=Labtec Webcam - -usb:v046Dp08F5* - ID_PRODUCT_FROM_DATABASE=QuickCam Messenger Communicate - -usb:v046Dp08F6* - ID_PRODUCT_FROM_DATABASE=QuickCam Messenger Plus - -usb:v046Dp0900* - ID_PRODUCT_FROM_DATABASE=ClickSmart 310 - -usb:v046Dp0901* - ID_PRODUCT_FROM_DATABASE=ClickSmart 510 - -usb:v046Dp0903* - ID_PRODUCT_FROM_DATABASE=ClickSmart 820 - -usb:v046Dp0905* - ID_PRODUCT_FROM_DATABASE=ClickSmart 820 - -usb:v046Dp0910* - ID_PRODUCT_FROM_DATABASE=QuickCam Cordless - -usb:v046Dp0920* - ID_PRODUCT_FROM_DATABASE=QuickCam Express - -usb:v046Dp0921* - ID_PRODUCT_FROM_DATABASE=Labtec Webcam - -usb:v046Dp0922* - ID_PRODUCT_FROM_DATABASE=QuickCam Live - -usb:v046Dp0928* - ID_PRODUCT_FROM_DATABASE=QuickCam Express - -usb:v046Dp0929* - ID_PRODUCT_FROM_DATABASE=Labtec Webcam Pro - -usb:v046Dp092A* - ID_PRODUCT_FROM_DATABASE=QuickCam for Notebooks - -usb:v046Dp092B* - ID_PRODUCT_FROM_DATABASE=Labtec Webcam Plus - -usb:v046Dp092C* - ID_PRODUCT_FROM_DATABASE=QuickCam Chat - -usb:v046Dp092D* - ID_PRODUCT_FROM_DATABASE=QuickCam Express / Go - -usb:v046Dp092E* - ID_PRODUCT_FROM_DATABASE=QuickCam Chat - -usb:v046Dp092F* - ID_PRODUCT_FROM_DATABASE=QuickCam Express Plus - -usb:v046Dp0950* - ID_PRODUCT_FROM_DATABASE=Pocket Camera - -usb:v046Dp0960* - ID_PRODUCT_FROM_DATABASE=ClickSmart 420 - -usb:v046Dp0970* - ID_PRODUCT_FROM_DATABASE=Pocket750 - -usb:v046Dp0990* - ID_PRODUCT_FROM_DATABASE=QuickCam Pro 9000 - -usb:v046Dp0991* - ID_PRODUCT_FROM_DATABASE=QuickCam Pro for Notebooks - -usb:v046Dp0992* - ID_PRODUCT_FROM_DATABASE=QuickCam Communicate Deluxe - -usb:v046Dp0994* - ID_PRODUCT_FROM_DATABASE=QuickCam Orbit/Sphere AF - -usb:v046Dp09A1* - ID_PRODUCT_FROM_DATABASE=QuickCam Communicate MP/S5500 - -usb:v046Dp09A2* - ID_PRODUCT_FROM_DATABASE=QuickCam Communicate Deluxe/S7500 - -usb:v046Dp09A4* - ID_PRODUCT_FROM_DATABASE=QuickCam E 3500 - -usb:v046Dp09A5* - ID_PRODUCT_FROM_DATABASE=Quickcam 3000 For Business - -usb:v046Dp09A6* - ID_PRODUCT_FROM_DATABASE=QuickCam Vision Pro - -usb:v046Dp09B0* - ID_PRODUCT_FROM_DATABASE=Acer OrbiCam - -usb:v046Dp09B2* - ID_PRODUCT_FROM_DATABASE=Fujitsu Webcam - -usb:v046Dp09C0* - ID_PRODUCT_FROM_DATABASE=QuickCam for Dell Notebooks Mic - -usb:v046Dp09C1* - ID_PRODUCT_FROM_DATABASE=QuickCam Deluxe for Notebooks - -usb:v046Dp0A01* - ID_PRODUCT_FROM_DATABASE=USB Headset - -usb:v046Dp0A02* - ID_PRODUCT_FROM_DATABASE=Premium Stereo USB Headset 350 - -usb:v046Dp0A03* - ID_PRODUCT_FROM_DATABASE=Logitech USB Microphone - -usb:v046Dp0A04* - ID_PRODUCT_FROM_DATABASE=V20 portable speakers (USB powered) - -usb:v046Dp0A07* - ID_PRODUCT_FROM_DATABASE=Z-10 Speakers - -usb:v046Dp0A0B* - ID_PRODUCT_FROM_DATABASE=ClearChat Pro USB - -usb:v046Dp0A0C* - ID_PRODUCT_FROM_DATABASE=Clear Chat Comfort USB Headset - -usb:v046Dp0A13* - ID_PRODUCT_FROM_DATABASE=Z-5 Speakers - -usb:v046Dp0A17* - ID_PRODUCT_FROM_DATABASE=G330 Headset - -usb:v046Dp0A1F* - ID_PRODUCT_FROM_DATABASE=G930 - -usb:v046Dp0B02* - ID_PRODUCT_FROM_DATABASE=C-UV35 [Bluetooth Mini-Receiver] (HID proxy mode) - -usb:v046Dp8801* - ID_PRODUCT_FROM_DATABASE=Video Camera - -usb:v046DpB305* - ID_PRODUCT_FROM_DATABASE=BT Mini-Receiver - -usb:v046DpBFE4* - ID_PRODUCT_FROM_DATABASE=Premium Optical Wheel Mouse - -usb:v046DpC000* - ID_PRODUCT_FROM_DATABASE=N43 [Pilot Mouse] - -usb:v046DpC001* - ID_PRODUCT_FROM_DATABASE=N48/M-BB48 [FirstMouse Plus] - -usb:v046DpC002* - ID_PRODUCT_FROM_DATABASE=M-BA47 [MouseMan Plus] - -usb:v046DpC003* - ID_PRODUCT_FROM_DATABASE=MouseMan - -usb:v046DpC004* - ID_PRODUCT_FROM_DATABASE=WingMan Gaming Mouse - -usb:v046DpC005* - ID_PRODUCT_FROM_DATABASE=WingMan Gaming Wheel Mouse - -usb:v046DpC00B* - ID_PRODUCT_FROM_DATABASE=MouseMan Wheel - -usb:v046DpC00C* - ID_PRODUCT_FROM_DATABASE=Optical Wheel Mouse - -usb:v046DpC00D* - ID_PRODUCT_FROM_DATABASE=MouseMan Wheel+ - -usb:v046DpC00E* - ID_PRODUCT_FROM_DATABASE=M-BJ58/M-BJ69 Optical Wheel Mouse - -usb:v046DpC00F* - ID_PRODUCT_FROM_DATABASE=MouseMan Traveler/Mobile - -usb:v046DpC011* - ID_PRODUCT_FROM_DATABASE=Optical MouseMan - -usb:v046DpC012* - ID_PRODUCT_FROM_DATABASE=Mouseman Dual Optical - -usb:v046DpC014* - ID_PRODUCT_FROM_DATABASE=Corded Workstation Mouse - -usb:v046DpC015* - ID_PRODUCT_FROM_DATABASE=Corded Workstation Mouse - -usb:v046DpC016* - ID_PRODUCT_FROM_DATABASE=Optical Wheel Mouse - -usb:v046DpC018* - ID_PRODUCT_FROM_DATABASE=Optical Wheel Mouse - -usb:v046DpC019* - ID_PRODUCT_FROM_DATABASE=Optical Tilt Wheel Mouse - -usb:v046DpC01A* - ID_PRODUCT_FROM_DATABASE=M-BQ85 Optical Wheel Mouse - -usb:v046DpC01B* - ID_PRODUCT_FROM_DATABASE=MX310 Optical Mouse - -usb:v046DpC01C* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v046DpC01D* - ID_PRODUCT_FROM_DATABASE=MX510 Optical Mouse - -usb:v046DpC01E* - ID_PRODUCT_FROM_DATABASE=MX518 Optical Mouse - -usb:v046DpC024* - ID_PRODUCT_FROM_DATABASE=MX300 Optical Mouse - -usb:v046DpC025* - ID_PRODUCT_FROM_DATABASE=MX500 Optical Mouse - -usb:v046DpC030* - ID_PRODUCT_FROM_DATABASE=iFeel Mouse - -usb:v046DpC031* - ID_PRODUCT_FROM_DATABASE=iFeel Mouse+ - -usb:v046DpC032* - ID_PRODUCT_FROM_DATABASE=MouseMan iFeel - -usb:v046DpC033* - ID_PRODUCT_FROM_DATABASE=iFeel MouseMan+ - -usb:v046DpC034* - ID_PRODUCT_FROM_DATABASE=MouseMan Optical - -usb:v046DpC035* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v046DpC036* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v046DpC037* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v046DpC038* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v046DpC03D* - ID_PRODUCT_FROM_DATABASE=M-BT96a Pilot Optical Mouse - -usb:v046DpC03E* - ID_PRODUCT_FROM_DATABASE=Premium Optical Wheel Mouse (M-BT58) - -usb:v046DpC03F* - ID_PRODUCT_FROM_DATABASE=M-BT85 [UltraX Optical Mouse] - -usb:v046DpC040* - ID_PRODUCT_FROM_DATABASE=Corded Tilt-Wheel Mouse - -usb:v046DpC041* - ID_PRODUCT_FROM_DATABASE=G5 Laser Mouse - -usb:v046DpC042* - ID_PRODUCT_FROM_DATABASE=G3 Laser Mouse - -usb:v046DpC043* - ID_PRODUCT_FROM_DATABASE=MX320/MX400 Laser Mouse - -usb:v046DpC044* - ID_PRODUCT_FROM_DATABASE=LX3 Optical Mouse - -usb:v046DpC045* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v046DpC046* - ID_PRODUCT_FROM_DATABASE=RX1000 Laser Mouse - -usb:v046DpC047* - ID_PRODUCT_FROM_DATABASE=Laser Mouse M-UAL120 - -usb:v046DpC048* - ID_PRODUCT_FROM_DATABASE=G9 Laser Mouse - -usb:v046DpC049* - ID_PRODUCT_FROM_DATABASE=G5 Laser Mouse - -usb:v046DpC050* - ID_PRODUCT_FROM_DATABASE=RX 250 Optical Mouse - -usb:v046DpC051* - ID_PRODUCT_FROM_DATABASE=G3 (MX518) Optical Mouse - -usb:v046DpC053* - ID_PRODUCT_FROM_DATABASE=Laser Mouse - -usb:v046DpC054* - ID_PRODUCT_FROM_DATABASE=Bluetooth mini-receiver - -usb:v046DpC058* - ID_PRODUCT_FROM_DATABASE=M115 Mouse - -usb:v046DpC05A* - ID_PRODUCT_FROM_DATABASE=M90/M100 Optical Mouse - -usb:v046DpC05B* - ID_PRODUCT_FROM_DATABASE=M-U0004 810-001317 [B110 Optical USB Mouse] - -usb:v046DpC05D* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v046DpC05F* - ID_PRODUCT_FROM_DATABASE=M115 Optical Mouse - -usb:v046DpC061* - ID_PRODUCT_FROM_DATABASE=RX1500 Laser Mouse - -usb:v046DpC062* - ID_PRODUCT_FROM_DATABASE=M-UAS144 [LS1 Laser Mouse] - -usb:v046DpC063* - ID_PRODUCT_FROM_DATABASE=DELL Laser Mouse - -usb:v046DpC068* - ID_PRODUCT_FROM_DATABASE=G500 Laser Mouse - -usb:v046DpC069* - ID_PRODUCT_FROM_DATABASE=M500 Laser Mouse - -usb:v046DpC06A* - ID_PRODUCT_FROM_DATABASE=USB Optical Mouse - -usb:v046DpC06B* - ID_PRODUCT_FROM_DATABASE=G700 Wireless Gaming Mouse - -usb:v046DpC06C* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v046DpC101* - ID_PRODUCT_FROM_DATABASE=UltraX Media Remote - -usb:v046DpC110* - ID_PRODUCT_FROM_DATABASE=Harmony 785/885 Remote - -usb:v046DpC111* - ID_PRODUCT_FROM_DATABASE=Harmony 525 Remote - -usb:v046DpC112* - ID_PRODUCT_FROM_DATABASE=Harmony 890 Remote - -usb:v046DpC11F* - ID_PRODUCT_FROM_DATABASE=Harmony 900/1100 Remote - -usb:v046DpC121* - ID_PRODUCT_FROM_DATABASE=Harmony One Remote - -usb:v046DpC122* - ID_PRODUCT_FROM_DATABASE=Harmony 700 Remote - -usb:v046DpC124* - ID_PRODUCT_FROM_DATABASE=Harmony 300 Remote - -usb:v046DpC125* - ID_PRODUCT_FROM_DATABASE=Harmony 200 Remote - -usb:v046DpC201* - ID_PRODUCT_FROM_DATABASE=WingMan Extreme Joystick with Throttle - -usb:v046DpC202* - ID_PRODUCT_FROM_DATABASE=WingMan Formula - -usb:v046DpC207* - ID_PRODUCT_FROM_DATABASE=WingMan Extreme Digital 3D - -usb:v046DpC208* - ID_PRODUCT_FROM_DATABASE=WingMan Gamepad Extreme - -usb:v046DpC209* - ID_PRODUCT_FROM_DATABASE=WingMan Gamepad - -usb:v046DpC20A* - ID_PRODUCT_FROM_DATABASE=WingMan RumblePad - -usb:v046DpC20B* - ID_PRODUCT_FROM_DATABASE=WingMan Action Pad - -usb:v046DpC20C* - ID_PRODUCT_FROM_DATABASE=WingMan Precision - -usb:v046DpC20D* - ID_PRODUCT_FROM_DATABASE=WingMan Attack 2 - -usb:v046DpC20E* - ID_PRODUCT_FROM_DATABASE=WingMan Formula GP - -usb:v046DpC211* - ID_PRODUCT_FROM_DATABASE=iTouch Cordless Reciever - -usb:v046DpC212* - ID_PRODUCT_FROM_DATABASE=WingMan Extreme Digital 3D - -usb:v046DpC213* - ID_PRODUCT_FROM_DATABASE=J-UH16 (Freedom 2.4 Cordless Joystick) - -usb:v046DpC214* - ID_PRODUCT_FROM_DATABASE=ATK3 (Attack III Joystick) - -usb:v046DpC215* - ID_PRODUCT_FROM_DATABASE=Extreme 3D Pro - -usb:v046DpC216* - ID_PRODUCT_FROM_DATABASE=Dual Action Gamepad - -usb:v046DpC218* - ID_PRODUCT_FROM_DATABASE=Logitech RumblePad 2 USB - -usb:v046DpC219* - ID_PRODUCT_FROM_DATABASE=Cordless RumblePad 2 - -usb:v046DpC21A* - ID_PRODUCT_FROM_DATABASE=Precision Gamepad - -usb:v046DpC21C* - ID_PRODUCT_FROM_DATABASE=G13 Advanced Gameboard - -usb:v046DpC21D* - ID_PRODUCT_FROM_DATABASE=F310 Gamepad [XInput Mode] - -usb:v046DpC21E* - ID_PRODUCT_FROM_DATABASE=F510 Gamepad [XInput Mode] - -usb:v046DpC21F* - ID_PRODUCT_FROM_DATABASE=F710 Wireless Gamepad [XInput Mode] - -usb:v046DpC221* - ID_PRODUCT_FROM_DATABASE=G11/G15 Keyboard / Keyboard - -usb:v046DpC222* - ID_PRODUCT_FROM_DATABASE=G15 Keyboard / LCD - -usb:v046DpC223* - ID_PRODUCT_FROM_DATABASE=G11/G15 Keyboard / USB Hub - -usb:v046DpC225* - ID_PRODUCT_FROM_DATABASE=G11/G15 Keyboard / G keys - -usb:v046DpC226* - ID_PRODUCT_FROM_DATABASE=G15 Refresh Keyboard - -usb:v046DpC227* - ID_PRODUCT_FROM_DATABASE=G15 Refresh Keyboard - -usb:v046DpC22A* - ID_PRODUCT_FROM_DATABASE=Gaming Keyboard G110 - -usb:v046DpC22B* - ID_PRODUCT_FROM_DATABASE=Gaming Keyboard G110 G-keys - -usb:v046DpC22D* - ID_PRODUCT_FROM_DATABASE=G510 Gaming Keyboard - -usb:v046DpC22E* - ID_PRODUCT_FROM_DATABASE=G510 Gaming Keyboard onboard audio - -usb:v046DpC245* - ID_PRODUCT_FROM_DATABASE=G400 Optical Mouse - -usb:v046DpC246* - ID_PRODUCT_FROM_DATABASE=Gaming Mouse G300 - -usb:v046DpC281* - ID_PRODUCT_FROM_DATABASE=WingMan Force - -usb:v046DpC283* - ID_PRODUCT_FROM_DATABASE=WingMan Force 3D - -usb:v046DpC285* - ID_PRODUCT_FROM_DATABASE=WingMan Strike Force 3D - -usb:v046DpC286* - ID_PRODUCT_FROM_DATABASE=Force 3D Pro - -usb:v046DpC287* - ID_PRODUCT_FROM_DATABASE=Flight System G940 - -usb:v046DpC291* - ID_PRODUCT_FROM_DATABASE=WingMan Formula Force - -usb:v046DpC293* - ID_PRODUCT_FROM_DATABASE=WingMan Formula Force GP - -usb:v046DpC294* - ID_PRODUCT_FROM_DATABASE=Driving Force - -usb:v046DpC295* - ID_PRODUCT_FROM_DATABASE=Momo Force Steering Wheel - -usb:v046DpC298* - ID_PRODUCT_FROM_DATABASE=Driving Force Pro - -usb:v046DpC299* - ID_PRODUCT_FROM_DATABASE=G25 Racing Wheel - -usb:v046DpC29B* - ID_PRODUCT_FROM_DATABASE=G27 Racing Wheel - -usb:v046DpC29C* - ID_PRODUCT_FROM_DATABASE=Speed Force Wireless Wheel for Wii - -usb:v046DpC2A0* - ID_PRODUCT_FROM_DATABASE=Wingman Force Feedback Mouse - -usb:v046DpC2A1* - ID_PRODUCT_FROM_DATABASE=WingMan Force Feedback Mouse - -usb:v046DpC301* - ID_PRODUCT_FROM_DATABASE=iTouch Keyboard - -usb:v046DpC302* - ID_PRODUCT_FROM_DATABASE=iTouch Pro Keyboard - -usb:v046DpC303* - ID_PRODUCT_FROM_DATABASE=iTouch Keyboard - -usb:v046DpC305* - ID_PRODUCT_FROM_DATABASE=Internet Keyboard - -usb:v046DpC307* - ID_PRODUCT_FROM_DATABASE=Internet Keyboard - -usb:v046DpC308* - ID_PRODUCT_FROM_DATABASE=Internet Navigator Keyboard - -usb:v046DpC309* - ID_PRODUCT_FROM_DATABASE=Internet Keyboard - -usb:v046DpC30A* - ID_PRODUCT_FROM_DATABASE=iTouch Composite - -usb:v046DpC30B* - ID_PRODUCT_FROM_DATABASE=NetPlay Keyboard - -usb:v046DpC30C* - ID_PRODUCT_FROM_DATABASE=Internet Keys (X) - -usb:v046DpC30D* - ID_PRODUCT_FROM_DATABASE=Internet Keys - -usb:v046DpC30E* - ID_PRODUCT_FROM_DATABASE=UltraX Keyboard (Y-BL49) - -usb:v046DpC30F* - ID_PRODUCT_FROM_DATABASE=Logicool HID-Compliant Keyboard (106 key) - -usb:v046DpC311* - ID_PRODUCT_FROM_DATABASE=Y-UF49 [Internet Pro Keyboard] - -usb:v046DpC312* - ID_PRODUCT_FROM_DATABASE=DeLuxe 250 Keyboard - -usb:v046DpC313* - ID_PRODUCT_FROM_DATABASE=Internet 350 Keyboard - -usb:v046DpC315* - ID_PRODUCT_FROM_DATABASE=Classic Keyboard 200 - -usb:v046DpC316* - ID_PRODUCT_FROM_DATABASE=HID-Compliant Keyboard - -usb:v046DpC317* - ID_PRODUCT_FROM_DATABASE=Wave Corded Keyboard - -usb:v046DpC318* - ID_PRODUCT_FROM_DATABASE=Illuminated Keyboard - -usb:v046DpC31A* - ID_PRODUCT_FROM_DATABASE=Comfort Wave 450 - -usb:v046DpC31B* - ID_PRODUCT_FROM_DATABASE=Compact Keyboard K300 - -usb:v046DpC31C* - ID_PRODUCT_FROM_DATABASE=Keyboard K120 for Business - -usb:v046DpC31D* - ID_PRODUCT_FROM_DATABASE=Media Keyboard K200 - -usb:v046DpC401* - ID_PRODUCT_FROM_DATABASE=TrackMan Marble Wheel - -usb:v046DpC402* - ID_PRODUCT_FROM_DATABASE=Marble Mouse (2-button) - -usb:v046DpC403* - ID_PRODUCT_FROM_DATABASE=Turbo TrackMan Marble FX - -usb:v046DpC404* - ID_PRODUCT_FROM_DATABASE=TrackMan Wheel - -usb:v046DpC408* - ID_PRODUCT_FROM_DATABASE=Marble Mouse (4-button) - -usb:v046DpC501* - ID_PRODUCT_FROM_DATABASE=Cordless Mouse Receiver - -usb:v046DpC502* - ID_PRODUCT_FROM_DATABASE=Cordless Mouse & iTouch Keys - -usb:v046DpC503* - ID_PRODUCT_FROM_DATABASE=Cordless Mouse+Keyboard Receiver - -usb:v046DpC504* - ID_PRODUCT_FROM_DATABASE=Cordless Mouse+Keyboard Receiver - -usb:v046DpC505* - ID_PRODUCT_FROM_DATABASE=Cordless Mouse+Keyboard Receiver - -usb:v046DpC506* - ID_PRODUCT_FROM_DATABASE=MX700 Cordless Mouse Receiver - -usb:v046DpC508* - ID_PRODUCT_FROM_DATABASE=Cordless Trackball - -usb:v046DpC509* - ID_PRODUCT_FROM_DATABASE=Cordless Keyboard & Mouse - -usb:v046DpC50A* - ID_PRODUCT_FROM_DATABASE=Cordless Mouse - -usb:v046DpC50B* - ID_PRODUCT_FROM_DATABASE=Cordless Desktop Optical - -usb:v046DpC50C* - ID_PRODUCT_FROM_DATABASE=Cordless Desktop S510 - -usb:v046DpC50D* - ID_PRODUCT_FROM_DATABASE=Cordless Mouse - -usb:v046DpC50E* - ID_PRODUCT_FROM_DATABASE=Cordless Mouse Receiver - -usb:v046DpC510* - ID_PRODUCT_FROM_DATABASE=Cordless Mouse - -usb:v046DpC512* - ID_PRODUCT_FROM_DATABASE=LX-700 Cordless Desktop Receiver - -usb:v046DpC513* - ID_PRODUCT_FROM_DATABASE=MX3000 Cordless Desktop Receiver - -usb:v046DpC514* - ID_PRODUCT_FROM_DATABASE=Cordless Mouse - -usb:v046DpC515* - ID_PRODUCT_FROM_DATABASE=Cordless 2.4 GHz Presenter Presentation remote control - -usb:v046DpC517* - ID_PRODUCT_FROM_DATABASE=LX710 Cordless Desktop Laser - -usb:v046DpC518* - ID_PRODUCT_FROM_DATABASE=MX610 Laser Cordless Mouse - -usb:v046DpC51A* - ID_PRODUCT_FROM_DATABASE=MX Revolution/G7 Cordless Mouse - -usb:v046DpC51B* - ID_PRODUCT_FROM_DATABASE=V220 Cordless Optical Mouse for Notebooks - -usb:v046DpC521* - ID_PRODUCT_FROM_DATABASE=Cordless Mouse Receiver - -usb:v046DpC525* - ID_PRODUCT_FROM_DATABASE=MX Revolution Cordless Mouse - -usb:v046DpC526* - ID_PRODUCT_FROM_DATABASE=Nano Receiver - -usb:v046DpC529* - ID_PRODUCT_FROM_DATABASE=Logitech Keyboard + Mice - -usb:v046DpC52B* - ID_PRODUCT_FROM_DATABASE=Unifying Receiver - -usb:v046DpC52F* - ID_PRODUCT_FROM_DATABASE=Unifying Receiver - -usb:v046DpC532* - ID_PRODUCT_FROM_DATABASE=Unifying Receiver - -usb:v046DpC623* - ID_PRODUCT_FROM_DATABASE=3Dconnexion Space Traveller 3D Mouse - -usb:v046DpC625* - ID_PRODUCT_FROM_DATABASE=3Dconnexion Space Pilot 3D Mouse - -usb:v046DpC626* - ID_PRODUCT_FROM_DATABASE=3Dconnexion Space Navigator 3D Mouse - -usb:v046DpC627* - ID_PRODUCT_FROM_DATABASE=3Dconnexion Space Explorer 3D Mouse - -usb:v046DpC702* - ID_PRODUCT_FROM_DATABASE=Cordless Presenter - -usb:v046DpC703* - ID_PRODUCT_FROM_DATABASE=Elite Keyboard Y-RP20 + Mouse MX900 (Bluetooth) - -usb:v046DpC704* - ID_PRODUCT_FROM_DATABASE=diNovo Wireless Desktop - -usb:v046DpC705* - ID_PRODUCT_FROM_DATABASE=MX900 Bluetooth Wireless Hub (C-UJ16A) - -usb:v046DpC707* - ID_PRODUCT_FROM_DATABASE=Bluetooth wireless hub - -usb:v046DpC708* - ID_PRODUCT_FROM_DATABASE=Bluetooth wireless hub - -usb:v046DpC709* - ID_PRODUCT_FROM_DATABASE=BT Mini-Receiver (HCI mode) - -usb:v046DpC70A* - ID_PRODUCT_FROM_DATABASE=MX5000 Cordless Desktop - -usb:v046DpC70B* - ID_PRODUCT_FROM_DATABASE=BT Mini-Receiver (HID proxy mode) - -usb:v046DpC70C* - ID_PRODUCT_FROM_DATABASE=BT Mini-Receiver (HID proxy mode) - -usb:v046DpC70D* - ID_PRODUCT_FROM_DATABASE=Bluetooth wireless hub - -usb:v046DpC70E* - ID_PRODUCT_FROM_DATABASE=MX1000 Bluetooth Laser Mouse - -usb:v046DpC70F* - ID_PRODUCT_FROM_DATABASE=Bluetooth wireless hub - -usb:v046DpC712* - ID_PRODUCT_FROM_DATABASE=Bluetooth wireless hub - -usb:v046DpC714* - ID_PRODUCT_FROM_DATABASE=diNovo Edge Keyboard - -usb:v046DpC715* - ID_PRODUCT_FROM_DATABASE=Bluetooth wireless hub - -usb:v046DpC71A* - ID_PRODUCT_FROM_DATABASE=Bluetooth wireless hub - -usb:v046DpC71D* - ID_PRODUCT_FROM_DATABASE=Bluetooth wireless hub - -usb:v046DpC71F* - ID_PRODUCT_FROM_DATABASE=diNovo Mini Wireless Keyboard - -usb:v046DpC720* - ID_PRODUCT_FROM_DATABASE=Bluetooth wireless hub - -usb:v046DpCA03* - ID_PRODUCT_FROM_DATABASE=MOMO Racing - -usb:v046DpCA04* - ID_PRODUCT_FROM_DATABASE=Formula Vibration Feedback Wheel - -usb:v046DpCAB1* - ID_PRODUCT_FROM_DATABASE=Cordless Keyboard for Wii HID Receiver - -usb:v046DpD001* - ID_PRODUCT_FROM_DATABASE=QuickCam Pro - -usb:v046E* - ID_VENDOR_FROM_DATABASE=Behavior Tech. Computer Corp. - -usb:v046Ep0100* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v046Ep3001* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v046Ep3002* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v046Ep3003* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v046Ep3005* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v046Ep3008* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v046Ep5250* - ID_PRODUCT_FROM_DATABASE=KeyMaestro Multimedia Keyboard - -usb:v046Ep5273* - ID_PRODUCT_FROM_DATABASE=KeyMaestro Multimedia Keyboard - -usb:v046Ep52E6* - ID_PRODUCT_FROM_DATABASE=Cordless Mouse - -usb:v046Ep5308* - ID_PRODUCT_FROM_DATABASE=KeyMaestro Keyboard - -usb:v046Ep5408* - ID_PRODUCT_FROM_DATABASE=KeyMaestro Multimedia Keyboard/Hub - -usb:v046Ep5500* - ID_PRODUCT_FROM_DATABASE=Portable Keyboard 86+9 keys (Model 6100C US) - -usb:v046Ep5720* - ID_PRODUCT_FROM_DATABASE=Smart Card Reader - -usb:v046Ep6782* - ID_PRODUCT_FROM_DATABASE=BTC 7932 mouse+keyboard - -usb:v046F* - ID_VENDOR_FROM_DATABASE=Crystal Semiconductor - -usb:v0471* - ID_VENDOR_FROM_DATABASE=Philips (or NXP) - -usb:v0471p0101* - ID_PRODUCT_FROM_DATABASE=DSS350 Digital Speaker System - -usb:v0471p0104* - ID_PRODUCT_FROM_DATABASE=DSS330 Digital Speaker System [uda1321] - -usb:v0471p0105* - ID_PRODUCT_FROM_DATABASE=UDA1321 - -usb:v0471p014F* - ID_PRODUCT_FROM_DATABASE=GoGear SA9200 - -usb:v0471p0160* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v0471p0161* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v0471p0163* - ID_PRODUCT_FROM_DATABASE=GoGear SA1100 - -usb:v0471p0164* - ID_PRODUCT_FROM_DATABASE=GoGear SA1110/02 - -usb:v0471p0165* - ID_PRODUCT_FROM_DATABASE=GoGear SA1330 - -usb:v0471p0201* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v0471p0222* - ID_PRODUCT_FROM_DATABASE=Creative Nomad Jukebox - -usb:v0471p0302* - ID_PRODUCT_FROM_DATABASE=PCA645VC Webcam [pwc] - -usb:v0471p0303* - ID_PRODUCT_FROM_DATABASE=PCA646VC Webcam [pwc] - -usb:v0471p0304* - ID_PRODUCT_FROM_DATABASE=Askey VC010 Webcam [pwc] - -usb:v0471p0307* - ID_PRODUCT_FROM_DATABASE=PCVC675K Webcam [pwc] - -usb:v0471p0308* - ID_PRODUCT_FROM_DATABASE=PCVC680K Webcam [pwc] - -usb:v0471p030B* - ID_PRODUCT_FROM_DATABASE=PC VGA Camera (Vesta Fun) - -usb:v0471p030C* - ID_PRODUCT_FROM_DATABASE=PCVC690K Webcam [pwc] - -usb:v0471p0310* - ID_PRODUCT_FROM_DATABASE=PCVC730K Webcam [pwc] - -usb:v0471p0311* - ID_PRODUCT_FROM_DATABASE=PCVC740K ToUcam Pro [pwc] - -usb:v0471p0312* - ID_PRODUCT_FROM_DATABASE=PCVC750K Webcam [pwc] - -usb:v0471p0314* - ID_PRODUCT_FROM_DATABASE=DMVC 1000K - -usb:v0471p0316* - ID_PRODUCT_FROM_DATABASE=DMVC 2000K Video Capture - -usb:v0471p0321* - ID_PRODUCT_FROM_DATABASE=FunCam - -usb:v0471p0322* - ID_PRODUCT_FROM_DATABASE=DMVC1300K PC Camera - -usb:v0471p0325* - ID_PRODUCT_FROM_DATABASE=SPC 200NC PC Camera - -usb:v0471p0326* - ID_PRODUCT_FROM_DATABASE=SPC 300NC PC Camera - -usb:v0471p0327* - ID_PRODUCT_FROM_DATABASE=Webcam SPC 6000 NC (Webcam w/ mic) - -usb:v0471p0328* - ID_PRODUCT_FROM_DATABASE=SPC 700NC PC Camera - -usb:v0471p0329* - ID_PRODUCT_FROM_DATABASE=SPC 900NC PC Camera / ORITE CCD Webcam(PC370R) - -usb:v0471p032D* - ID_PRODUCT_FROM_DATABASE=SPC 210NC PC Camera - -usb:v0471p032E* - ID_PRODUCT_FROM_DATABASE=SPC 315NC PC Camera - -usb:v0471p0330* - ID_PRODUCT_FROM_DATABASE=SPC 710NC PC Camera - -usb:v0471p0331* - ID_PRODUCT_FROM_DATABASE=SPC 1300NC PC Camera - -usb:v0471p0332* - ID_PRODUCT_FROM_DATABASE=SPC 1000NC PC Camera - -usb:v0471p0333* - ID_PRODUCT_FROM_DATABASE=SPC 620NC PC Camera - -usb:v0471p0334* - ID_PRODUCT_FROM_DATABASE=SPC 520/525NC PC Camera - -usb:v0471p0401* - ID_PRODUCT_FROM_DATABASE=Semiconductors CICT Keyboard - -usb:v0471p0402* - ID_PRODUCT_FROM_DATABASE=PS/2 Mouse on Semiconductors CICT Keyboard - -usb:v0471p0406* - ID_PRODUCT_FROM_DATABASE=15 inch Detachable Monitor - -usb:v0471p0407* - ID_PRODUCT_FROM_DATABASE=10 inch Mobile Monitor - -usb:v0471p0408* - ID_PRODUCT_FROM_DATABASE=SG3WA1/74 802.11b WLAN Adapter [Atmel AT76C503A] - -usb:v0471p0471* - ID_PRODUCT_FROM_DATABASE=Digital Speaker System - -usb:v0471p0601* - ID_PRODUCT_FROM_DATABASE=OVU1020 IR Dongle (Kbd+Mouse) - -usb:v0471p0602* - ID_PRODUCT_FROM_DATABASE=ATI Remote Wonder II Input Device - -usb:v0471p0603* - ID_PRODUCT_FROM_DATABASE=ATI Remote Wonder II Controller - -usb:v0471p0608* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v0471p060A* - ID_PRODUCT_FROM_DATABASE=TSU9600 Remote Control - -usb:v0471p060C* - ID_PRODUCT_FROM_DATABASE=Consumer Infrared Transceiver (HP) - -usb:v0471p060D* - ID_PRODUCT_FROM_DATABASE=Consumer Infrared Transceiver (SRM5100) - -usb:v0471p060E* - ID_PRODUCT_FROM_DATABASE=RF Dongle - -usb:v0471p060F* - ID_PRODUCT_FROM_DATABASE=Consumer Infrared Transceiver - -usb:v0471p0613* - ID_PRODUCT_FROM_DATABASE=Infrared Transceiver - -usb:v0471p0617* - ID_PRODUCT_FROM_DATABASE=IEEE802.15.4 RF Dongle - -usb:v0471p0619* - ID_PRODUCT_FROM_DATABASE=TSU9400 Remote Control - -usb:v0471p0666* - ID_PRODUCT_FROM_DATABASE=Hantek DDS-3005 Arbitrary Waveform Generator - -usb:v0471p0700* - ID_PRODUCT_FROM_DATABASE=Semiconductors CICT Hub - -usb:v0471p0701* - ID_PRODUCT_FROM_DATABASE=150P1 TFT Display - -usb:v0471p0809* - ID_PRODUCT_FROM_DATABASE=AVNET Bluetooth Device - -usb:v0471p0811* - ID_PRODUCT_FROM_DATABASE=JR24 CDRW - -usb:v0471p0814* - ID_PRODUCT_FROM_DATABASE=DCCX38/P data cable - -usb:v0471p0815* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v0471p0844* - ID_PRODUCT_FROM_DATABASE=SA2111/02 1GB Flash Audio Player - -usb:v0471p084A* - ID_PRODUCT_FROM_DATABASE=GoGear SA3125 - -usb:v0471p084E* - ID_PRODUCT_FROM_DATABASE=GoGear SA60xx (mtp) - -usb:v0471p0888* - ID_PRODUCT_FROM_DATABASE=Hantek DDS-3005 Arbitrary Waveform Generator - -usb:v0471p1103* - ID_PRODUCT_FROM_DATABASE=Digital Speaker System - -usb:v0471p1120* - ID_PRODUCT_FROM_DATABASE=Creative Rhomba MP3 player - -usb:v0471p1125* - ID_PRODUCT_FROM_DATABASE=Nike psa[128max Player - -usb:v0471p1137* - ID_PRODUCT_FROM_DATABASE=HDD065 MP3 player - -usb:v0471p1201* - ID_PRODUCT_FROM_DATABASE=Arima Bluetooth Device - -usb:v0471p1230* - ID_PRODUCT_FROM_DATABASE=Wireless Adapter 11g - -usb:v0471p1232* - ID_PRODUCT_FROM_DATABASE=SNU6500 Wireless Adapter - -usb:v0471p1233* - ID_PRODUCT_FROM_DATABASE=Wireless Adapter Bootloader Download - -usb:v0471p1236* - ID_PRODUCT_FROM_DATABASE=SNU5600 802.11bg - -usb:v0471p1237* - ID_PRODUCT_FROM_DATABASE=TalkTalk SNU5630NS/05 802.11bg - -usb:v0471p1552* - ID_PRODUCT_FROM_DATABASE=ISP 1581 Hi-Speed USB MPEG2 Encoder Reference Kit - -usb:v0471p1801* - ID_PRODUCT_FROM_DATABASE=Diva MP3 player - -usb:v0471p200A* - ID_PRODUCT_FROM_DATABASE=Wireless Network Adapter - -usb:v0471p200F* - ID_PRODUCT_FROM_DATABASE=802.11n Wireless Adapter - -usb:v0471p2021* - ID_PRODUCT_FROM_DATABASE=SDE3273FC/97 2.5" SATA HDD Enclosure [INIC-1608L] - -usb:v0471p2022* - ID_PRODUCT_FROM_DATABASE=GoGear SA52XX - -usb:v0471p2034* - ID_PRODUCT_FROM_DATABASE=Webcam SPC530NC - -usb:v0471p2036* - ID_PRODUCT_FROM_DATABASE=Webcam SPC1030NC - -usb:v0471p203F* - ID_PRODUCT_FROM_DATABASE=TSU9200 Remote Control - -usb:v0471p2046* - ID_PRODUCT_FROM_DATABASE=TSU9800 Remote Control - -usb:v0471p204E* - ID_PRODUCT_FROM_DATABASE=GoGear RaGa (SA1942/02) - -usb:v0471p205E* - ID_PRODUCT_FROM_DATABASE=TSU9300 Remote Control - -usb:v0471p206C* - ID_PRODUCT_FROM_DATABASE=MCE IR Receiver - Spinel plusf0r ASUS - -usb:v0471p2070* - ID_PRODUCT_FROM_DATABASE=GoGear Mix - -usb:v0471p2076* - ID_PRODUCT_FROM_DATABASE=GoGear Aria - -usb:v0471p2079* - ID_PRODUCT_FROM_DATABASE=GoGear Opus - -usb:v0471p2088* - ID_PRODUCT_FROM_DATABASE=MCE IR Receiver with ALS- Spinel plus for ASUS - -usb:v0471p209E* - ID_PRODUCT_FROM_DATABASE=PTA01 Wireless Adapter - -usb:v0471p20B6* - ID_PRODUCT_FROM_DATABASE=GoGear Vibe - -usb:v0471p20D0* - ID_PRODUCT_FROM_DATABASE=SPZ2000 Webcam [PixArt PAC7332] - -usb:v0471p20E3* - ID_PRODUCT_FROM_DATABASE=GoGear Raga - -usb:v0471p262C* - ID_PRODUCT_FROM_DATABASE=SPC230NC Webcam - -usb:v0471p485D* - ID_PRODUCT_FROM_DATABASE=Senselock SenseIV v2.x - -usb:v0471pDF55* - ID_PRODUCT_FROM_DATABASE=LPCXpresso LPC-Link - -usb:v0472* - ID_VENDOR_FROM_DATABASE=Chicony Electronics Co., Ltd - -usb:v0472p0065* - ID_PRODUCT_FROM_DATABASE=PFU-65 Keyboard [Chicony] - -usb:v0472pB086* - ID_PRODUCT_FROM_DATABASE=Asus USB2.0 Webcam - -usb:v0472pB091* - ID_PRODUCT_FROM_DATABASE=Webcam - -usb:v0473* - ID_VENDOR_FROM_DATABASE=Sanyo Information Business Co., Ltd - -usb:v0474* - ID_VENDOR_FROM_DATABASE=Sanyo Electric Co., Ltd - -usb:v0474p0110* - ID_PRODUCT_FROM_DATABASE=Digital Voice Recorder R200 - -usb:v0474p0217* - ID_PRODUCT_FROM_DATABASE=Xacti J2 - -usb:v0474p022F* - ID_PRODUCT_FROM_DATABASE=C5 Digital Media Camera (mass storage mode) - -usb:v0474p0230* - ID_PRODUCT_FROM_DATABASE=C5 Digital Media Camera (PictBridge mode) - -usb:v0474p0231* - ID_PRODUCT_FROM_DATABASE=C5 Digital Media Camera (PC control mode) - -usb:v0474p0401* - ID_PRODUCT_FROM_DATABASE=Optical Drive - -usb:v0474p0701* - ID_PRODUCT_FROM_DATABASE=SCP-4900 Cellphone - -usb:v0474p071F* - ID_PRODUCT_FROM_DATABASE=Usb Com Port Enumerator - -usb:v0474p0722* - ID_PRODUCT_FROM_DATABASE=W33SA Camera - -usb:v0475* - ID_VENDOR_FROM_DATABASE=Relisys/Teco Information System - -usb:v0475p0100* - ID_PRODUCT_FROM_DATABASE=NEC Petiscan - -usb:v0475p0103* - ID_PRODUCT_FROM_DATABASE=Eclipse 1200U/Episode - -usb:v0475p0210* - ID_PRODUCT_FROM_DATABASE=Scorpio Ultra 3 - -usb:v0476* - ID_VENDOR_FROM_DATABASE=AESP - -usb:v0477* - ID_VENDOR_FROM_DATABASE=Seagate Technology, Inc. - -usb:v0478* - ID_VENDOR_FROM_DATABASE=Connectix Corp. - -usb:v0478p0001* - ID_PRODUCT_FROM_DATABASE=QuickCam - -usb:v0478p0002* - ID_PRODUCT_FROM_DATABASE=QuickClip - -usb:v0478p0003* - ID_PRODUCT_FROM_DATABASE=QuickCam Pro - -usb:v0479* - ID_VENDOR_FROM_DATABASE=Advanced Peripheral Laboratories - -usb:v047A* - ID_VENDOR_FROM_DATABASE=Semtech Corp. - -usb:v047Ap0004* - ID_PRODUCT_FROM_DATABASE=ScreenCoder UR7HCTS2-USB - -usb:v047B* - ID_VENDOR_FROM_DATABASE=Silitek Corp. - -usb:v047Bp0001* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v047Bp0002* - ID_PRODUCT_FROM_DATABASE=Keyboard and Mouse - -usb:v047Bp0011* - ID_PRODUCT_FROM_DATABASE=SK-1688U Keyboard - -usb:v047Bp00F9* - ID_PRODUCT_FROM_DATABASE=SK-1789u Keyboard - -usb:v047Bp0101* - ID_PRODUCT_FROM_DATABASE=BlueTooth Keyboard and Mouse - -usb:v047Bp020B* - ID_PRODUCT_FROM_DATABASE=SK-3105 SmartCard Reader - -usb:v047Bp050E* - ID_PRODUCT_FROM_DATABASE=Internet Compact Keyboard - -usb:v047Bp1000* - ID_PRODUCT_FROM_DATABASE=Trust Office Scan USB 19200 - -usb:v047Bp1002* - ID_PRODUCT_FROM_DATABASE=HP ScanJet 4300c Parallel Port - -usb:v047C* - ID_VENDOR_FROM_DATABASE=Dell Computer Corp. - -usb:v047D* - ID_VENDOR_FROM_DATABASE=Kensington - -usb:v047Dp1001* - ID_PRODUCT_FROM_DATABASE=Mouse*in*a*Box - -usb:v047Dp1002* - ID_PRODUCT_FROM_DATABASE=Expert Mouse Pro - -usb:v047Dp1003* - ID_PRODUCT_FROM_DATABASE=Orbit TrackBall - -usb:v047Dp1004* - ID_PRODUCT_FROM_DATABASE=MouseWorks - -usb:v047Dp1005* - ID_PRODUCT_FROM_DATABASE=TurboBall - -usb:v047Dp1006* - ID_PRODUCT_FROM_DATABASE=TurboRing - -usb:v047Dp1009* - ID_PRODUCT_FROM_DATABASE=Orbit TrackBall for Mac - -usb:v047Dp1012* - ID_PRODUCT_FROM_DATABASE=PocketMouse - -usb:v047Dp1013* - ID_PRODUCT_FROM_DATABASE=Mouse*in*a*Box Optical Pro - -usb:v047Dp1014* - ID_PRODUCT_FROM_DATABASE=Expert Mouse Pro Wireless - -usb:v047Dp1015* - ID_PRODUCT_FROM_DATABASE=Expert Mouse - -usb:v047Dp1016* - ID_PRODUCT_FROM_DATABASE=ADB/USB Orbit - -usb:v047Dp1018* - ID_PRODUCT_FROM_DATABASE=Studio Mouse - -usb:v047Dp101D* - ID_PRODUCT_FROM_DATABASE=Mouse*in*a*Box Optical Pro - -usb:v047Dp101E* - ID_PRODUCT_FROM_DATABASE=Studio Mouse Wireless - -usb:v047Dp101F* - ID_PRODUCT_FROM_DATABASE=PocketMouse Pro - -usb:v047Dp1020* - ID_PRODUCT_FROM_DATABASE=Expert Mouse Trackball - -usb:v047Dp1021* - ID_PRODUCT_FROM_DATABASE=Expert Mouse Wireless - -usb:v047Dp1022* - ID_PRODUCT_FROM_DATABASE=Orbit Optical - -usb:v047Dp1023* - ID_PRODUCT_FROM_DATABASE=Pocket Mouse Pro Wireless - -usb:v047Dp1024* - ID_PRODUCT_FROM_DATABASE=PocketMouse - -usb:v047Dp1025* - ID_PRODUCT_FROM_DATABASE=Mouse*in*a*Box Optical Elite Wireless - -usb:v047Dp1026* - ID_PRODUCT_FROM_DATABASE=Pocket Mouse Pro - -usb:v047Dp1027* - ID_PRODUCT_FROM_DATABASE=StudioMouse - -usb:v047Dp1028* - ID_PRODUCT_FROM_DATABASE=StudioMouse Wireless - -usb:v047Dp1029* - ID_PRODUCT_FROM_DATABASE=Mouse*in*a*Box Optical Elite - -usb:v047Dp102A* - ID_PRODUCT_FROM_DATABASE=Mouse*in*a*Box Optical - -usb:v047Dp102B* - ID_PRODUCT_FROM_DATABASE=PocketMouse - -usb:v047Dp102C* - ID_PRODUCT_FROM_DATABASE=Iridio - -usb:v047Dp102D* - ID_PRODUCT_FROM_DATABASE=Pilot Optical - -usb:v047Dp102E* - ID_PRODUCT_FROM_DATABASE=Pilot Optical Pro - -usb:v047Dp102F* - ID_PRODUCT_FROM_DATABASE=Pilot Optical Pro Wireless - -usb:v047Dp1042* - ID_PRODUCT_FROM_DATABASE=Ci25m Notebook Optical Mouse [Diamond Eye Precision] - -usb:v047Dp1043* - ID_PRODUCT_FROM_DATABASE=Ci65m Wireless Notebook Optical Mouse - -usb:v047Dp104A* - ID_PRODUCT_FROM_DATABASE=PilotMouse Mini Retractable - -usb:v047Dp105D* - ID_PRODUCT_FROM_DATABASE=PocketMouse Bluetooth - -usb:v047Dp105E* - ID_PRODUCT_FROM_DATABASE=Bluetooth EDR Dongle - -usb:v047Dp1061* - ID_PRODUCT_FROM_DATABASE=PocketMouse Grip - -usb:v047Dp1062* - ID_PRODUCT_FROM_DATABASE=PocketMouse Max - -usb:v047Dp1063* - ID_PRODUCT_FROM_DATABASE=PocketMouse Max Wireless - -usb:v047Dp1064* - ID_PRODUCT_FROM_DATABASE=PocketMouse 2.0 Wireless - -usb:v047Dp1065* - ID_PRODUCT_FROM_DATABASE=PocketMouse 2.0 - -usb:v047Dp1066* - ID_PRODUCT_FROM_DATABASE=PocketMouse Max Glow - -usb:v047Dp1067* - ID_PRODUCT_FROM_DATABASE=ValueMouse - -usb:v047Dp1068* - ID_PRODUCT_FROM_DATABASE=ValueOpt White - -usb:v047Dp1069* - ID_PRODUCT_FROM_DATABASE=ValueOpt Black - -usb:v047Dp106A* - ID_PRODUCT_FROM_DATABASE=PilotMouse Laser Wireless Mini - -usb:v047Dp106B* - ID_PRODUCT_FROM_DATABASE=PilotMouse Laser - 3 Button - -usb:v047Dp106C* - ID_PRODUCT_FROM_DATABASE=PilotMouse Laser - Gaming - -usb:v047Dp106D* - ID_PRODUCT_FROM_DATABASE=PilotMouse Laser - Wired - -usb:v047Dp106E* - ID_PRODUCT_FROM_DATABASE=PilotMouse Micro Laser - -usb:v047Dp1070* - ID_PRODUCT_FROM_DATABASE=ValueOpt Travel - -usb:v047Dp1071* - ID_PRODUCT_FROM_DATABASE=ValueOpt RF TX - -usb:v047Dp1072* - ID_PRODUCT_FROM_DATABASE=PocketMouse Colour - -usb:v047Dp1073* - ID_PRODUCT_FROM_DATABASE=PilotMouse Laser - 6 Button - -usb:v047Dp1074* - ID_PRODUCT_FROM_DATABASE=PilotMouse Laser Wireless Mini - -usb:v047Dp1075* - ID_PRODUCT_FROM_DATABASE=SlimBlade Presenter Media Mouse - -usb:v047Dp1076* - ID_PRODUCT_FROM_DATABASE=SlimBlade Media Mouse - -usb:v047Dp1077* - ID_PRODUCT_FROM_DATABASE=SlimBlade Presenter Mouse - -usb:v047Dp1152* - ID_PRODUCT_FROM_DATABASE=Bluetooth EDR Dongle - -usb:v047Dp2002* - ID_PRODUCT_FROM_DATABASE=Optical Elite Wireless - -usb:v047Dp2010* - ID_PRODUCT_FROM_DATABASE=Wireless Presentation Remote - -usb:v047Dp2012* - ID_PRODUCT_FROM_DATABASE=Wireless Presenter with Laser Pointer - -usb:v047Dp2021* - ID_PRODUCT_FROM_DATABASE=PilotBoard Wireless - -usb:v047Dp2030* - ID_PRODUCT_FROM_DATABASE=PilotBoard Wireless - -usb:v047Dp2034* - ID_PRODUCT_FROM_DATABASE=SlimBlade Media Notebook Set - -usb:v047Dp2041* - ID_PRODUCT_FROM_DATABASE=SlimBlade Trackball - -usb:v047Dp2048* - ID_PRODUCT_FROM_DATABASE=Orbit Trackball with Scroll Ring - -usb:v047Dp4003* - ID_PRODUCT_FROM_DATABASE=Gravis Xterminator Digital Gamepad - -usb:v047Dp4005* - ID_PRODUCT_FROM_DATABASE=Gravis Eliminator GamePad Pro - -usb:v047Dp4006* - ID_PRODUCT_FROM_DATABASE=Gravis Eliminator AfterShock - -usb:v047Dp4007* - ID_PRODUCT_FROM_DATABASE=Gravis Xterminator Force - -usb:v047Dp4008* - ID_PRODUCT_FROM_DATABASE=Gravis Destroyer TiltPad - -usb:v047Dp5001* - ID_PRODUCT_FROM_DATABASE=Cabo I Camera - -usb:v047Dp5002* - ID_PRODUCT_FROM_DATABASE=VideoCam CABO II - -usb:v047Dp5003* - ID_PRODUCT_FROM_DATABASE=VideoCam - -usb:v047E* - ID_VENDOR_FROM_DATABASE=Agere Systems, Inc. (Lucent) - -usb:v047Ep0300* - ID_PRODUCT_FROM_DATABASE=ORiNOCO Card - -usb:v047Ep1001* - ID_PRODUCT_FROM_DATABASE=USS720 Parallel Port - -usb:v047Ep2892* - ID_PRODUCT_FROM_DATABASE=Systems Soft Modem - -usb:v047EpBAD1* - ID_PRODUCT_FROM_DATABASE=Lucent 56k Modem - -usb:v047EpF101* - ID_PRODUCT_FROM_DATABASE=Atlas Modem - -usb:v047F* - ID_VENDOR_FROM_DATABASE=Plantronics, Inc. - -usb:v047Fp0101* - ID_PRODUCT_FROM_DATABASE=Bulk Driver - -usb:v047Fp0301* - ID_PRODUCT_FROM_DATABASE=Bulk Driver - -usb:v047Fp0411* - ID_PRODUCT_FROM_DATABASE=Savi Office Base Station - -usb:v047Fp0CA1* - ID_PRODUCT_FROM_DATABASE=USB DSP v4 Audio Interface - -usb:v047Fp4254* - ID_PRODUCT_FROM_DATABASE=BUA-100 Bluetooth Adapter - -usb:v047FpAC01* - ID_PRODUCT_FROM_DATABASE=Savi 7xx - -usb:v047FpAD01* - ID_PRODUCT_FROM_DATABASE=GameCom 777 5.1 Headset - -usb:v0480* - ID_VENDOR_FROM_DATABASE=Toshiba America Info. Systems, Inc. - -usb:v0480p0001* - ID_PRODUCT_FROM_DATABASE=InTouch Module - -usb:v0480p0004* - ID_PRODUCT_FROM_DATABASE=InTouch Module - -usb:v0480p0011* - ID_PRODUCT_FROM_DATABASE=InTouch Module - -usb:v0480p0014* - ID_PRODUCT_FROM_DATABASE=InTouch Module - -usb:v0480pA007* - ID_PRODUCT_FROM_DATABASE=External Disk USB 3.0 - -usb:v0481* - ID_VENDOR_FROM_DATABASE=Zenith Data Systems - -usb:v0482* - ID_VENDOR_FROM_DATABASE=Kyocera Corp. - -usb:v0482p000E* - ID_PRODUCT_FROM_DATABASE=FS-1020D Printer - -usb:v0482p0100* - ID_PRODUCT_FROM_DATABASE=Finecam S3x - -usb:v0482p0101* - ID_PRODUCT_FROM_DATABASE=Finecam S4 - -usb:v0482p0103* - ID_PRODUCT_FROM_DATABASE=Finecam S5 - -usb:v0482p0105* - ID_PRODUCT_FROM_DATABASE=Finecam L3 - -usb:v0482p0106* - ID_PRODUCT_FROM_DATABASE=Finecam - -usb:v0482p0107* - ID_PRODUCT_FROM_DATABASE=Digital Camera Device - -usb:v0482p0108* - ID_PRODUCT_FROM_DATABASE=Digital Camera Device - -usb:v0482p0203* - ID_PRODUCT_FROM_DATABASE=AH-K3001V - -usb:v0482p0204* - ID_PRODUCT_FROM_DATABASE=iBurst Terminal - -usb:v0483* - ID_VENDOR_FROM_DATABASE=STMicroelectronics - -usb:v0483p0137* - ID_PRODUCT_FROM_DATABASE=BeWAN ADSL USB ST (blue or green) - -usb:v0483p0138* - ID_PRODUCT_FROM_DATABASE=Unicorn II (ST70138B + MTC-20174TQ chipset) - -usb:v0483p1307* - ID_PRODUCT_FROM_DATABASE=Cytronix 6in1 Card Reader - -usb:v0483p163D* - ID_PRODUCT_FROM_DATABASE=Cool Icam Digi-MP3 - -usb:v0483p2015* - ID_PRODUCT_FROM_DATABASE=TouchChip® Fingerprint Reader - -usb:v0483p2016* - ID_PRODUCT_FROM_DATABASE=Fingerprint Reader - -usb:v0483p2017* - ID_PRODUCT_FROM_DATABASE=Biometric Smart Card Reader - -usb:v0483p2018* - ID_PRODUCT_FROM_DATABASE=BioSimKey - -usb:v0483p2302* - ID_PRODUCT_FROM_DATABASE=Portable Flash Device (PFD) - -usb:v0483p3744* - ID_PRODUCT_FROM_DATABASE=STLINK Pseudo disk - -usb:v0483p3747* - ID_PRODUCT_FROM_DATABASE=ST Micro Connect Lite - -usb:v0483p3748* - ID_PRODUCT_FROM_DATABASE=ST-LINK/V2 - -usb:v0483p4810* - ID_PRODUCT_FROM_DATABASE=ISDN adapter - -usb:v0483p481D* - ID_PRODUCT_FROM_DATABASE=BT Digital Access adapter - -usb:v0483p5000* - ID_PRODUCT_FROM_DATABASE=ST Micro/Ergenic ERG BT-002 Bluetooth Adapter - -usb:v0483p5001* - ID_PRODUCT_FROM_DATABASE=ST Micro Bluetooth Device - -usb:v0483p5710* - ID_PRODUCT_FROM_DATABASE=Joystick in FS Mode - -usb:v0483p5721* - ID_PRODUCT_FROM_DATABASE=Hantek DDS-3X25 Arbitrary Waveform Generator - -usb:v0483p5740* - ID_PRODUCT_FROM_DATABASE=STM32F407 - -usb:v0483p7270* - ID_PRODUCT_FROM_DATABASE=ST Micro Serial Bridge - -usb:v0483p7554* - ID_PRODUCT_FROM_DATABASE=56k SoftModem - -usb:v0483pDF11* - ID_PRODUCT_FROM_DATABASE=STM Device in DFU Mode - -usb:v0483pFF10* - ID_PRODUCT_FROM_DATABASE=Swann ST56 Modem - -usb:v0484* - ID_VENDOR_FROM_DATABASE=Specialix - -usb:v0485* - ID_VENDOR_FROM_DATABASE=Nokia Monitors - -usb:v0486* - ID_VENDOR_FROM_DATABASE=ASUS Computers, Inc. - -usb:v0486p0185* - ID_PRODUCT_FROM_DATABASE=EeePC T91MT HID Touch Panel - -usb:v0487* - ID_VENDOR_FROM_DATABASE=Stewart Connector - -usb:v0488* - ID_VENDOR_FROM_DATABASE=Cirque Corp. - -usb:v0489* - ID_VENDOR_FROM_DATABASE=Foxconn / Hon Hai - -usb:v0489p0502* - ID_PRODUCT_FROM_DATABASE=SmartMedia Card Reader Firmware Loader - -usb:v0489p0503* - ID_PRODUCT_FROM_DATABASE=SmartMedia Card Reader - -usb:v0489pD00C* - ID_PRODUCT_FROM_DATABASE=Rollei Compactline (Storage Mode) - -usb:v0489pD00E* - ID_PRODUCT_FROM_DATABASE=Rollei Compactline (Video Mode) - -usb:v0489pE000* - ID_PRODUCT_FROM_DATABASE=T-Com TC 300 - -usb:v0489pE003* - ID_PRODUCT_FROM_DATABASE=Pirelli DP-L10 - -usb:v0489pE00D* - ID_PRODUCT_FROM_DATABASE=Broadcom Bluetooth 2.1 Device - -usb:v0489pE00F* - ID_PRODUCT_FROM_DATABASE=Foxconn T77H114 BCM2070 [Single-Chip Bluetooth 2.1 + EDR Adapter] - -usb:v0489pE016* - ID_PRODUCT_FROM_DATABASE=Ubee PXU1900 WiMAX Adapter [Beceem BCSM250] - -usb:v0489pE02C* - ID_PRODUCT_FROM_DATABASE=Atheros AR5BBU12 Bluetooth Device - -usb:v048A* - ID_VENDOR_FROM_DATABASE=S-MOS Systems, Inc. - -usb:v048C* - ID_VENDOR_FROM_DATABASE=Alps Electric Ireland, Ltd - -usb:v048D* - ID_VENDOR_FROM_DATABASE=Integrated Technology Express, Inc. - -usb:v048Dp1165* - ID_PRODUCT_FROM_DATABASE=IT1165 Flash Controller - -usb:v048Dp1336* - ID_PRODUCT_FROM_DATABASE=SD/MMC Cardreader - -usb:v048Dp1345* - ID_PRODUCT_FROM_DATABASE=Multi Cardreader - -usb:v048Dp9006* - ID_PRODUCT_FROM_DATABASE=IT9135 BDA Afatech DVB-T HDTV Dongle - -usb:v048Dp9009* - ID_PRODUCT_FROM_DATABASE=Zolid HD DVD Maker - -usb:v048Dp9135* - ID_PRODUCT_FROM_DATABASE=Zolid Mini DVB-T Stick - -usb:v048F* - ID_VENDOR_FROM_DATABASE=Eicon Tech. - -usb:v0490* - ID_VENDOR_FROM_DATABASE=United Microelectronics Corp. - -usb:v0491* - ID_VENDOR_FROM_DATABASE=Capetronic - -usb:v0491p0003* - ID_PRODUCT_FROM_DATABASE=Taxan Monitor Control - -usb:v0492* - ID_VENDOR_FROM_DATABASE=Samsung SemiConductor, Inc. - -usb:v0492p0140* - ID_PRODUCT_FROM_DATABASE=MP3 player - -usb:v0492p0141* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v0493* - ID_VENDOR_FROM_DATABASE=MAG Technology Co., Ltd - -usb:v0495* - ID_VENDOR_FROM_DATABASE=ESS Technology, Inc. - -usb:v0496* - ID_VENDOR_FROM_DATABASE=Micron Electronics - -usb:v0497* - ID_VENDOR_FROM_DATABASE=Smile International - -usb:v0497pC001* - ID_PRODUCT_FROM_DATABASE=Camera Device - -usb:v0498* - ID_VENDOR_FROM_DATABASE=Capetronic (Kaohsiung) Corp. - -usb:v0499* - ID_VENDOR_FROM_DATABASE=Yamaha Corp. - -usb:v0499p1000* - ID_PRODUCT_FROM_DATABASE=UX256 MIDI I/F - -usb:v0499p1001* - ID_PRODUCT_FROM_DATABASE=MU1000 - -usb:v0499p1002* - ID_PRODUCT_FROM_DATABASE=MU2000 - -usb:v0499p1003* - ID_PRODUCT_FROM_DATABASE=MU500 - -usb:v0499p1004* - ID_PRODUCT_FROM_DATABASE=UW500 - -usb:v0499p1005* - ID_PRODUCT_FROM_DATABASE=MOTIF6 - -usb:v0499p1006* - ID_PRODUCT_FROM_DATABASE=MOTIF7 - -usb:v0499p1007* - ID_PRODUCT_FROM_DATABASE=MOTIF8 - -usb:v0499p1008* - ID_PRODUCT_FROM_DATABASE=UX96 MIDI I/F - -usb:v0499p1009* - ID_PRODUCT_FROM_DATABASE=UX16 MIDI I/F - -usb:v0499p100A* - ID_PRODUCT_FROM_DATABASE=EOS BX - -usb:v0499p100C* - ID_PRODUCT_FROM_DATABASE=UC-MX - -usb:v0499p100D* - ID_PRODUCT_FROM_DATABASE=UC-KX - -usb:v0499p100E* - ID_PRODUCT_FROM_DATABASE=S08 - -usb:v0499p100F* - ID_PRODUCT_FROM_DATABASE=CLP-150 - -usb:v0499p1010* - ID_PRODUCT_FROM_DATABASE=CLP-170 - -usb:v0499p1011* - ID_PRODUCT_FROM_DATABASE=P-250 - -usb:v0499p1012* - ID_PRODUCT_FROM_DATABASE=TYROS - -usb:v0499p1013* - ID_PRODUCT_FROM_DATABASE=PF-500 - -usb:v0499p1014* - ID_PRODUCT_FROM_DATABASE=S90 - -usb:v0499p1015* - ID_PRODUCT_FROM_DATABASE=MOTIF-R - -usb:v0499p1016* - ID_PRODUCT_FROM_DATABASE=MDP-5 - -usb:v0499p1017* - ID_PRODUCT_FROM_DATABASE=CVP-204 - -usb:v0499p1018* - ID_PRODUCT_FROM_DATABASE=CVP-206 - -usb:v0499p1019* - ID_PRODUCT_FROM_DATABASE=CVP-208 - -usb:v0499p101A* - ID_PRODUCT_FROM_DATABASE=CVP-210 - -usb:v0499p101B* - ID_PRODUCT_FROM_DATABASE=PSR-1100 - -usb:v0499p101C* - ID_PRODUCT_FROM_DATABASE=PSR-2100 - -usb:v0499p101D* - ID_PRODUCT_FROM_DATABASE=CLP-175 - -usb:v0499p101E* - ID_PRODUCT_FROM_DATABASE=PSR-K1 - -usb:v0499p101F* - ID_PRODUCT_FROM_DATABASE=EZ-J24 - -usb:v0499p1020* - ID_PRODUCT_FROM_DATABASE=EZ-250i - -usb:v0499p1021* - ID_PRODUCT_FROM_DATABASE=MOTIF ES 6 - -usb:v0499p1022* - ID_PRODUCT_FROM_DATABASE=MOTIF ES 7 - -usb:v0499p1023* - ID_PRODUCT_FROM_DATABASE=MOTIF ES 8 - -usb:v0499p1024* - ID_PRODUCT_FROM_DATABASE=CVP-301 - -usb:v0499p1025* - ID_PRODUCT_FROM_DATABASE=CVP-303 - -usb:v0499p1026* - ID_PRODUCT_FROM_DATABASE=CVP-305 - -usb:v0499p1027* - ID_PRODUCT_FROM_DATABASE=CVP-307 - -usb:v0499p1028* - ID_PRODUCT_FROM_DATABASE=CVP-309 - -usb:v0499p1029* - ID_PRODUCT_FROM_DATABASE=CVP-309GP - -usb:v0499p102A* - ID_PRODUCT_FROM_DATABASE=PSR-1500 - -usb:v0499p102B* - ID_PRODUCT_FROM_DATABASE=PSR-3000 - -usb:v0499p102E* - ID_PRODUCT_FROM_DATABASE=ELS-01/01C - -usb:v0499p1030* - ID_PRODUCT_FROM_DATABASE=PSR-295/293 - -usb:v0499p1031* - ID_PRODUCT_FROM_DATABASE=DGX-205/203 - -usb:v0499p1032* - ID_PRODUCT_FROM_DATABASE=DGX-305 - -usb:v0499p1033* - ID_PRODUCT_FROM_DATABASE=DGX-505 - -usb:v0499p1037* - ID_PRODUCT_FROM_DATABASE=PSR-E403 - -usb:v0499p103C* - ID_PRODUCT_FROM_DATABASE=MOTIF-RACK ES - -usb:v0499p1054* - ID_PRODUCT_FROM_DATABASE=S90XS Keyboard/Music Synthesizer - -usb:v0499p2000* - ID_PRODUCT_FROM_DATABASE=DGP-7 - -usb:v0499p2001* - ID_PRODUCT_FROM_DATABASE=DGP-5 - -usb:v0499p3001* - ID_PRODUCT_FROM_DATABASE=YST-MS55D USB Speaker - -usb:v0499p3003* - ID_PRODUCT_FROM_DATABASE=YST-M45D USB Speaker - -usb:v0499p4000* - ID_PRODUCT_FROM_DATABASE=NetVolante RTA54i Broadband&ISDN Router - -usb:v0499p4001* - ID_PRODUCT_FROM_DATABASE=NetVolante RTW65b Broadband Wireless Router - -usb:v0499p4002* - ID_PRODUCT_FROM_DATABASE=NetVolante RTW65i Broadband&ISDN Wireless Router - -usb:v0499p4004* - ID_PRODUCT_FROM_DATABASE=NetVolante RTA55i Broadband VoIP Router - -usb:v0499p5000* - ID_PRODUCT_FROM_DATABASE=CS1D - -usb:v0499p5001* - ID_PRODUCT_FROM_DATABASE=DSP1D - -usb:v0499p5002* - ID_PRODUCT_FROM_DATABASE=DME32 - -usb:v0499p5003* - ID_PRODUCT_FROM_DATABASE=DM2000 - -usb:v0499p5004* - ID_PRODUCT_FROM_DATABASE=02R96 - -usb:v0499p5005* - ID_PRODUCT_FROM_DATABASE=ACU16-C - -usb:v0499p5006* - ID_PRODUCT_FROM_DATABASE=NHB32-C - -usb:v0499p5007* - ID_PRODUCT_FROM_DATABASE=DM1000 - -usb:v0499p5008* - ID_PRODUCT_FROM_DATABASE=01V96 - -usb:v0499p5009* - ID_PRODUCT_FROM_DATABASE=SPX2000 - -usb:v0499p500A* - ID_PRODUCT_FROM_DATABASE=PM5D - -usb:v0499p500B* - ID_PRODUCT_FROM_DATABASE=DME64N - -usb:v0499p500C* - ID_PRODUCT_FROM_DATABASE=DME24N - -usb:v0499p6001* - ID_PRODUCT_FROM_DATABASE=CRW2200UX Lightspeed 2 External CD-RW Drive - -usb:v0499p7000* - ID_PRODUCT_FROM_DATABASE=DTX - -usb:v0499p7010* - ID_PRODUCT_FROM_DATABASE=UB99 - -usb:v049A* - ID_VENDOR_FROM_DATABASE=Gandalf Technologies, Ltd - -usb:v049B* - ID_VENDOR_FROM_DATABASE=Curtis Computer Products - -usb:v049C* - ID_VENDOR_FROM_DATABASE=Acer Advanced Labs, Inc. - -usb:v049Cp0002* - ID_PRODUCT_FROM_DATABASE=Keyboard (???) - -usb:v049D* - ID_VENDOR_FROM_DATABASE=VLSI Technology - -usb:v049F* - ID_VENDOR_FROM_DATABASE=Compaq Computer Corp. - -usb:v049Fp0002* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v049Fp0003* - ID_PRODUCT_FROM_DATABASE=iPAQ PocketPC - -usb:v049Fp000E* - ID_PRODUCT_FROM_DATABASE=Internet Keyboard - -usb:v049Fp0012* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v049Fp0018* - ID_PRODUCT_FROM_DATABASE=PA-1/PA-2 MP3 Player - -usb:v049Fp0019* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v049Fp001A* - ID_PRODUCT_FROM_DATABASE=S4 100 Scanner - -usb:v049Fp001E* - ID_PRODUCT_FROM_DATABASE=IJ650 Inkjet Printer - -usb:v049Fp001F* - ID_PRODUCT_FROM_DATABASE=WL215 Adapter - -usb:v049Fp0021* - ID_PRODUCT_FROM_DATABASE=S200 Scanner - -usb:v049Fp0027* - ID_PRODUCT_FROM_DATABASE=Bluetooth Multiport Module by Compaq - -usb:v049Fp002A* - ID_PRODUCT_FROM_DATABASE=1400P Inkjet Printer - -usb:v049Fp002B* - ID_PRODUCT_FROM_DATABASE=A3000 - -usb:v049Fp002C* - ID_PRODUCT_FROM_DATABASE=Lexmark X125 - -usb:v049Fp0032* - ID_PRODUCT_FROM_DATABASE=802.11b Adapter [ipaq h5400] - -usb:v049Fp0033* - ID_PRODUCT_FROM_DATABASE=Wireless LAN MultiPort W100 [Intersil PRISM 2.5] - -usb:v049Fp0036* - ID_PRODUCT_FROM_DATABASE=Bluetooth Multiport Module - -usb:v049Fp0051* - ID_PRODUCT_FROM_DATABASE=KU-0133 Easy Access Interner Keyboard - -usb:v049Fp0076* - ID_PRODUCT_FROM_DATABASE=Wireless LAN MultiPort W200 - -usb:v049Fp0080* - ID_PRODUCT_FROM_DATABASE=GPRS Multiport - -usb:v049Fp0086* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v049Fp504A* - ID_PRODUCT_FROM_DATABASE=Personal Jukebox PJB100 - -usb:v049Fp505A* - ID_PRODUCT_FROM_DATABASE=Linux-USB "CDC Subset" Device, or Itsy (experimental) - -usb:v049Fp8511* - ID_PRODUCT_FROM_DATABASE=iPAQ Networking 10/100 Ethernet [pegasus2] - -usb:v04A0* - ID_VENDOR_FROM_DATABASE=Digital Equipment Corp. - -usb:v04A1* - ID_VENDOR_FROM_DATABASE=SystemSoft Corp. - -usb:v04A1pFFF0* - ID_PRODUCT_FROM_DATABASE=Telex Composite Device - -usb:v04A2* - ID_VENDOR_FROM_DATABASE=FirePower Systems - -usb:v04A3* - ID_VENDOR_FROM_DATABASE=Trident Microsystems, Inc. - -usb:v04A4* - ID_VENDOR_FROM_DATABASE=Hitachi, Ltd - -usb:v04A4p0004* - ID_PRODUCT_FROM_DATABASE=DVD-CAM DZ-MV100A Camcorder - -usb:v04A4p001E* - ID_PRODUCT_FROM_DATABASE=DVDCAM USB HS Interface - -usb:v04A5* - ID_VENDOR_FROM_DATABASE=Acer Peripherals Inc. (now BenQ Corp.) - -usb:v04A5p0001* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v04A5p0002* - ID_PRODUCT_FROM_DATABASE=API Ergo K/B - -usb:v04A5p0003* - ID_PRODUCT_FROM_DATABASE=API Generic K/B Mouse - -usb:v04A5p12A6* - ID_PRODUCT_FROM_DATABASE=AcerScan C310U - -usb:v04A5p1A20* - ID_PRODUCT_FROM_DATABASE=Prisa 310U - -usb:v04A5p1A2A* - ID_PRODUCT_FROM_DATABASE=Prisa 620U - -usb:v04A5p2022* - ID_PRODUCT_FROM_DATABASE=Prisa 320U/340U - -usb:v04A5p2040* - ID_PRODUCT_FROM_DATABASE=Prisa 620UT - -usb:v04A5p205E* - ID_PRODUCT_FROM_DATABASE=ScanPrisa 640BU - -usb:v04A5p2060* - ID_PRODUCT_FROM_DATABASE=Prisa 620U+/640U - -usb:v04A5p207E* - ID_PRODUCT_FROM_DATABASE=Prisa 640BU - -usb:v04A5p209E* - ID_PRODUCT_FROM_DATABASE=ScanPrisa 640BT - -usb:v04A5p20AE* - ID_PRODUCT_FROM_DATABASE=S2W 3000U - -usb:v04A5p20B0* - ID_PRODUCT_FROM_DATABASE=S2W 3300U/4300U - -usb:v04A5p20BE* - ID_PRODUCT_FROM_DATABASE=Prisa 640BT - -usb:v04A5p20C0* - ID_PRODUCT_FROM_DATABASE=Prisa 1240UT - -usb:v04A5p20DE* - ID_PRODUCT_FROM_DATABASE=S2W 4300U+ - -usb:v04A5p20F8* - ID_PRODUCT_FROM_DATABASE=Benq 5000 - -usb:v04A5p20FC* - ID_PRODUCT_FROM_DATABASE=Benq 5000 - -usb:v04A5p20FE* - ID_PRODUCT_FROM_DATABASE=SW2 5300U - -usb:v04A5p2137* - ID_PRODUCT_FROM_DATABASE=Benq 5150/5250 - -usb:v04A5p2202* - ID_PRODUCT_FROM_DATABASE=Benq 7400UT - -usb:v04A5p2311* - ID_PRODUCT_FROM_DATABASE=Benq 5560 - -usb:v04A5p3003* - ID_PRODUCT_FROM_DATABASE=Benq Webcam - -usb:v04A5p3008* - ID_PRODUCT_FROM_DATABASE=Benq 1500 - -usb:v04A5p300A* - ID_PRODUCT_FROM_DATABASE=Benq 3410 - -usb:v04A5p300C* - ID_PRODUCT_FROM_DATABASE=Benq 1016 - -usb:v04A5p3019* - ID_PRODUCT_FROM_DATABASE=Benq DC C40 - -usb:v04A5p4000* - ID_PRODUCT_FROM_DATABASE=P30 Composite Device - -usb:v04A5p4013* - ID_PRODUCT_FROM_DATABASE=BenQ-Siemens EF82/SL91 - -usb:v04A5p4044* - ID_PRODUCT_FROM_DATABASE=BenQ-Siemens SF71 - -usb:v04A5p4045* - ID_PRODUCT_FROM_DATABASE=BenQ-Siemens E81 - -usb:v04A5p4048* - ID_PRODUCT_FROM_DATABASE=BenQ M7 - -usb:v04A5p6001* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p6002* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p6003* - ID_PRODUCT_FROM_DATABASE=ATA/ATAPI Adapter - -usb:v04A5p6004* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p6005* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p6006* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p6007* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p6008* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p6009* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p600A* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p600B* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p600C* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p600D* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p600E* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p600F* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p6010* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p6011* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p6012* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p6013* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p6014* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p6015* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v04A5p6125* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v04A5p6180* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v04A5p6200* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v04A5p7500* - ID_PRODUCT_FROM_DATABASE=Hi-Speed Mass Storage Device - -usb:v04A5p9000* - ID_PRODUCT_FROM_DATABASE=AWL300 Wireless Adapter - -usb:v04A5p9001* - ID_PRODUCT_FROM_DATABASE=AWL400 Wireless Adapter - -usb:v04A5p9213* - ID_PRODUCT_FROM_DATABASE=Kbd Hub - -usb:v04A6* - ID_VENDOR_FROM_DATABASE=Nokia Display Products - -usb:v04A6p00B9* - ID_PRODUCT_FROM_DATABASE=Audio - -usb:v04A6p0180* - ID_PRODUCT_FROM_DATABASE=Hub Type P - -usb:v04A6p0181* - ID_PRODUCT_FROM_DATABASE=HID Monitor Controls - -usb:v04A7* - ID_VENDOR_FROM_DATABASE=Visioneer - -usb:v04A7p0100* - ID_PRODUCT_FROM_DATABASE=StrobePro - -usb:v04A7p0101* - ID_PRODUCT_FROM_DATABASE=Strobe Pro Scanner (1.01) - -usb:v04A7p0102* - ID_PRODUCT_FROM_DATABASE=StrobePro Scanner - -usb:v04A7p0211* - ID_PRODUCT_FROM_DATABASE=OneTouch 7600 Scanner - -usb:v04A7p0221* - ID_PRODUCT_FROM_DATABASE=OneTouch 5300 Scanner - -usb:v04A7p0223* - ID_PRODUCT_FROM_DATABASE=OneTouch 8200 - -usb:v04A7p0224* - ID_PRODUCT_FROM_DATABASE=OneTouch 4800 USB/Microtek Scanport 3000 - -usb:v04A7p0225* - ID_PRODUCT_FROM_DATABASE=VistaScan Astra 3600(ENG) - -usb:v04A7p0226* - ID_PRODUCT_FROM_DATABASE=OneTouch 5300 USB - -usb:v04A7p0229* - ID_PRODUCT_FROM_DATABASE=OneTouch 7100 - -usb:v04A7p022A* - ID_PRODUCT_FROM_DATABASE=OneTouch 6600 - -usb:v04A7p022C* - ID_PRODUCT_FROM_DATABASE=OneTouch 9000/9020 - -usb:v04A7p0231* - ID_PRODUCT_FROM_DATABASE=6100 Scanner - -usb:v04A7p0311* - ID_PRODUCT_FROM_DATABASE=6200 EPP/USB Scanner - -usb:v04A7p0321* - ID_PRODUCT_FROM_DATABASE=OneTouch 8100 EPP/USB Scanner - -usb:v04A7p0331* - ID_PRODUCT_FROM_DATABASE=OneTouch 8600 EPP/USB Scanner - -usb:v04A7p0341* - ID_PRODUCT_FROM_DATABASE=6400 - -usb:v04A7p0361* - ID_PRODUCT_FROM_DATABASE=VistaScan Astra 3600(ENG) - -usb:v04A7p0362* - ID_PRODUCT_FROM_DATABASE=OneTouch 9320 - -usb:v04A7p0371* - ID_PRODUCT_FROM_DATABASE=OneTouch 8700/8920 - -usb:v04A7p0380* - ID_PRODUCT_FROM_DATABASE=OneTouch 7700 - -usb:v04A7p0382* - ID_PRODUCT_FROM_DATABASE=Photo Port 7700 - -usb:v04A7p0390* - ID_PRODUCT_FROM_DATABASE=9650 - -usb:v04A7p03A0* - ID_PRODUCT_FROM_DATABASE=Xerox 4800 One Touch - -usb:v04A7p0410* - ID_PRODUCT_FROM_DATABASE=OneTouch Pro 8800/8820 - -usb:v04A7p0421* - ID_PRODUCT_FROM_DATABASE=9450 USB - -usb:v04A7p0423* - ID_PRODUCT_FROM_DATABASE=9750 Scanner - -usb:v04A7p0424* - ID_PRODUCT_FROM_DATABASE=Strobe XP 450 - -usb:v04A7p0425* - ID_PRODUCT_FROM_DATABASE=Strobe XP 100 - -usb:v04A7p0426* - ID_PRODUCT_FROM_DATABASE=Strobe XP 200 - -usb:v04A7p0427* - ID_PRODUCT_FROM_DATABASE=Strobe XP 100 - -usb:v04A7p0444* - ID_PRODUCT_FROM_DATABASE=OneTouch 7300 - -usb:v04A7p0445* - ID_PRODUCT_FROM_DATABASE=CardReader 100 - -usb:v04A7p0446* - ID_PRODUCT_FROM_DATABASE=Xerox DocuMate 510 - -usb:v04A7p0447* - ID_PRODUCT_FROM_DATABASE=XEROX DocuMate 520 - -usb:v04A7p0448* - ID_PRODUCT_FROM_DATABASE=XEROX DocuMate 250 - -usb:v04A7p0449* - ID_PRODUCT_FROM_DATABASE=Xerox DocuMate 252 - -usb:v04A7p044A* - ID_PRODUCT_FROM_DATABASE=Xerox 6400 - -usb:v04A7p044C* - ID_PRODUCT_FROM_DATABASE=Xerox DocuMate 262 - -usb:v04A7p0474* - ID_PRODUCT_FROM_DATABASE=Strobe XP 300 - -usb:v04A7p0475* - ID_PRODUCT_FROM_DATABASE=Xerox DocuMate 272 - -usb:v04A7p0478* - ID_PRODUCT_FROM_DATABASE=Strobe XP 220 - -usb:v04A7p0479* - ID_PRODUCT_FROM_DATABASE=Strobe XP 470 - -usb:v04A7p047A* - ID_PRODUCT_FROM_DATABASE=9450 - -usb:v04A7p047B* - ID_PRODUCT_FROM_DATABASE=9650 - -usb:v04A7p047D* - ID_PRODUCT_FROM_DATABASE=9420 - -usb:v04A7p0480* - ID_PRODUCT_FROM_DATABASE=9520 - -usb:v04A7p048F* - ID_PRODUCT_FROM_DATABASE=Strobe XP 470 - -usb:v04A7p0491* - ID_PRODUCT_FROM_DATABASE=Strobe XP 450 - -usb:v04A7p0493* - ID_PRODUCT_FROM_DATABASE=9750 - -usb:v04A7p0494* - ID_PRODUCT_FROM_DATABASE=Strobe XP 120 - -usb:v04A7p0497* - ID_PRODUCT_FROM_DATABASE=Patriot 430 - -usb:v04A7p0498* - ID_PRODUCT_FROM_DATABASE=Patriot 680 - -usb:v04A7p0499* - ID_PRODUCT_FROM_DATABASE=Patriot 780 - -usb:v04A7p049B* - ID_PRODUCT_FROM_DATABASE=Strobe XP 100 - -usb:v04A7p04A0* - ID_PRODUCT_FROM_DATABASE=7400 - -usb:v04A7p04AC* - ID_PRODUCT_FROM_DATABASE=Xerox Travel Scanner 100 - -usb:v04A8* - ID_VENDOR_FROM_DATABASE=Multivideo Labs, Inc. - -usb:v04A8p0101* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v04A8p0303* - ID_PRODUCT_FROM_DATABASE=Peripheral Switch - -usb:v04A8p0404* - ID_PRODUCT_FROM_DATABASE=Peripheral Switch - -usb:v04A9* - ID_VENDOR_FROM_DATABASE=Canon, Inc. - -usb:v04A9p1005* - ID_PRODUCT_FROM_DATABASE=BJ Printer Hub - -usb:v04A9p1035* - ID_PRODUCT_FROM_DATABASE=PD Printer Storage - -usb:v04A9p1050* - ID_PRODUCT_FROM_DATABASE=BJC-8200 - -usb:v04A9p1051* - ID_PRODUCT_FROM_DATABASE=BJC-3000 Color Printer - -usb:v04A9p1052* - ID_PRODUCT_FROM_DATABASE=BJC-6100 - -usb:v04A9p1053* - ID_PRODUCT_FROM_DATABASE=BJC-6200 - -usb:v04A9p1054* - ID_PRODUCT_FROM_DATABASE=BJC-6500 - -usb:v04A9p1055* - ID_PRODUCT_FROM_DATABASE=BJC-85 - -usb:v04A9p1056* - ID_PRODUCT_FROM_DATABASE=BJC-2110 Color Printer - -usb:v04A9p1057* - ID_PRODUCT_FROM_DATABASE=LR1 - -usb:v04A9p105A* - ID_PRODUCT_FROM_DATABASE=BJC-55 - -usb:v04A9p105B* - ID_PRODUCT_FROM_DATABASE=S600 Printer - -usb:v04A9p105C* - ID_PRODUCT_FROM_DATABASE=S400 - -usb:v04A9p105D* - ID_PRODUCT_FROM_DATABASE=S450 Printer - -usb:v04A9p105E* - ID_PRODUCT_FROM_DATABASE=S800 - -usb:v04A9p1062* - ID_PRODUCT_FROM_DATABASE=S500 Printer - -usb:v04A9p1063* - ID_PRODUCT_FROM_DATABASE=S4500 - -usb:v04A9p1064* - ID_PRODUCT_FROM_DATABASE=S300 Printer - -usb:v04A9p1065* - ID_PRODUCT_FROM_DATABASE=S100 - -usb:v04A9p1066* - ID_PRODUCT_FROM_DATABASE=S630 - -usb:v04A9p1067* - ID_PRODUCT_FROM_DATABASE=S900 - -usb:v04A9p1068* - ID_PRODUCT_FROM_DATABASE=S9000 - -usb:v04A9p1069* - ID_PRODUCT_FROM_DATABASE=S820 - -usb:v04A9p106A* - ID_PRODUCT_FROM_DATABASE=S200 Printer - -usb:v04A9p106B* - ID_PRODUCT_FROM_DATABASE=S520 Printer - -usb:v04A9p106D* - ID_PRODUCT_FROM_DATABASE=S750 Printer - -usb:v04A9p106E* - ID_PRODUCT_FROM_DATABASE=S820D - -usb:v04A9p1070* - ID_PRODUCT_FROM_DATABASE=S530D - -usb:v04A9p1072* - ID_PRODUCT_FROM_DATABASE=I850 Printer - -usb:v04A9p1073* - ID_PRODUCT_FROM_DATABASE=I550 Printer - -usb:v04A9p1074* - ID_PRODUCT_FROM_DATABASE=S330 Printer - -usb:v04A9p1076* - ID_PRODUCT_FROM_DATABASE=i70 - -usb:v04A9p1077* - ID_PRODUCT_FROM_DATABASE=i950 - -usb:v04A9p107A* - ID_PRODUCT_FROM_DATABASE=S830D - -usb:v04A9p107B* - ID_PRODUCT_FROM_DATABASE=i320 - -usb:v04A9p107C* - ID_PRODUCT_FROM_DATABASE=i470D - -usb:v04A9p107D* - ID_PRODUCT_FROM_DATABASE=i9100 - -usb:v04A9p107E* - ID_PRODUCT_FROM_DATABASE=i450 - -usb:v04A9p107F* - ID_PRODUCT_FROM_DATABASE=i860 - -usb:v04A9p1082* - ID_PRODUCT_FROM_DATABASE=i350 - -usb:v04A9p1084* - ID_PRODUCT_FROM_DATABASE=i250 - -usb:v04A9p1085* - ID_PRODUCT_FROM_DATABASE=i255 - -usb:v04A9p1086* - ID_PRODUCT_FROM_DATABASE=i560 - -usb:v04A9p1088* - ID_PRODUCT_FROM_DATABASE=i965 - -usb:v04A9p108A* - ID_PRODUCT_FROM_DATABASE=i455 - -usb:v04A9p108B* - ID_PRODUCT_FROM_DATABASE=i900D - -usb:v04A9p108C* - ID_PRODUCT_FROM_DATABASE=i475D - -usb:v04A9p108D* - ID_PRODUCT_FROM_DATABASE=PIXMA iP2000 - -usb:v04A9p108F* - ID_PRODUCT_FROM_DATABASE=i80 - -usb:v04A9p1090* - ID_PRODUCT_FROM_DATABASE=i9900 Photo Printer - -usb:v04A9p1091* - ID_PRODUCT_FROM_DATABASE=PIXMA iP1500 - -usb:v04A9p1093* - ID_PRODUCT_FROM_DATABASE=PIXMA iP4000 - -usb:v04A9p1094* - ID_PRODUCT_FROM_DATABASE=PIXMA iP3000x Printer - -usb:v04A9p1095* - ID_PRODUCT_FROM_DATABASE=PIXMA iP6000D - -usb:v04A9p1097* - ID_PRODUCT_FROM_DATABASE=PIXMA iP5000 - -usb:v04A9p1098* - ID_PRODUCT_FROM_DATABASE=PIXMA iP1000 - -usb:v04A9p1099* - ID_PRODUCT_FROM_DATABASE=PIXMA iP8500 - -usb:v04A9p109C* - ID_PRODUCT_FROM_DATABASE=PIXMA iP4000R - -usb:v04A9p109D* - ID_PRODUCT_FROM_DATABASE=iP90 - -usb:v04A9p10A0* - ID_PRODUCT_FROM_DATABASE=PIXMA iP1600 Printer - -usb:v04A9p10A2* - ID_PRODUCT_FROM_DATABASE=iP4200 - -usb:v04A9p10A4* - ID_PRODUCT_FROM_DATABASE=iP5200R - -usb:v04A9p10A5* - ID_PRODUCT_FROM_DATABASE=iP5200 - -usb:v04A9p10A7* - ID_PRODUCT_FROM_DATABASE=iP6210D - -usb:v04A9p10A8* - ID_PRODUCT_FROM_DATABASE=iP6220D - -usb:v04A9p10A9* - ID_PRODUCT_FROM_DATABASE=iP6600D - -usb:v04A9p10B6* - ID_PRODUCT_FROM_DATABASE=PIXMA iP4300 Printer - -usb:v04A9p10C2* - ID_PRODUCT_FROM_DATABASE=PIXMA iP1800 Printer - -usb:v04A9p10C4* - ID_PRODUCT_FROM_DATABASE=Pixma iP4500 Printer - -usb:v04A9p1404* - ID_PRODUCT_FROM_DATABASE=W6400PG - -usb:v04A9p1405* - ID_PRODUCT_FROM_DATABASE=W8400PG - -usb:v04A9p150F* - ID_PRODUCT_FROM_DATABASE=BIJ2350 PCL - -usb:v04A9p1510* - ID_PRODUCT_FROM_DATABASE=BIJ1350 PCL - -usb:v04A9p1512* - ID_PRODUCT_FROM_DATABASE=BIJ1350D PCL - -usb:v04A9p1601* - ID_PRODUCT_FROM_DATABASE=DR-2080C Scanner - -usb:v04A9p1607* - ID_PRODUCT_FROM_DATABASE=DR-6080 Scanner - -usb:v04A9p1700* - ID_PRODUCT_FROM_DATABASE=PIXMA MP110 Scanner - -usb:v04A9p1701* - ID_PRODUCT_FROM_DATABASE=PIXMA MP130 Scanner - -usb:v04A9p1702* - ID_PRODUCT_FROM_DATABASE=MP410 Composite - -usb:v04A9p1703* - ID_PRODUCT_FROM_DATABASE=MP430 Composite - -usb:v04A9p1704* - ID_PRODUCT_FROM_DATABASE=MP330 Composite - -usb:v04A9p1706* - ID_PRODUCT_FROM_DATABASE=PIXMA MP750 Scanner - -usb:v04A9p1707* - ID_PRODUCT_FROM_DATABASE=PIXMA MP780 Scanner - -usb:v04A9p1708* - ID_PRODUCT_FROM_DATABASE=PIXMA MP760 Scanner - -usb:v04A9p1709* - ID_PRODUCT_FROM_DATABASE=PIXMA MP150 Scanner - -usb:v04A9p170A* - ID_PRODUCT_FROM_DATABASE=PIXMA MP170 Scanner - -usb:v04A9p170B* - ID_PRODUCT_FROM_DATABASE=PIXMA MP450 Scanner - -usb:v04A9p170C* - ID_PRODUCT_FROM_DATABASE=PIXMA MP500 Scanner - -usb:v04A9p170D* - ID_PRODUCT_FROM_DATABASE=PIXMA MP800 Scanner - -usb:v04A9p170E* - ID_PRODUCT_FROM_DATABASE=MP800R - -usb:v04A9p1710* - ID_PRODUCT_FROM_DATABASE=MP950 - -usb:v04A9p1712* - ID_PRODUCT_FROM_DATABASE=MP530 - -usb:v04A9p1713* - ID_PRODUCT_FROM_DATABASE=PIXMA MP830 Scanner - -usb:v04A9p1714* - ID_PRODUCT_FROM_DATABASE=MP160 - -usb:v04A9p1715* - ID_PRODUCT_FROM_DATABASE=MP180 Storage - -usb:v04A9p1716* - ID_PRODUCT_FROM_DATABASE=MP460 Composite - -usb:v04A9p1717* - ID_PRODUCT_FROM_DATABASE=MP510 - -usb:v04A9p1718* - ID_PRODUCT_FROM_DATABASE=MP600 Storage - -usb:v04A9p171A* - ID_PRODUCT_FROM_DATABASE=MP810 Storage - -usb:v04A9p171B* - ID_PRODUCT_FROM_DATABASE=MP960 - -usb:v04A9p1721* - ID_PRODUCT_FROM_DATABASE=MP210 ser - -usb:v04A9p1723* - ID_PRODUCT_FROM_DATABASE=MP470 ser - -usb:v04A9p1725* - ID_PRODUCT_FROM_DATABASE=MP610 ser - -usb:v04A9p1726* - ID_PRODUCT_FROM_DATABASE=MP970 ser - -usb:v04A9p1727* - ID_PRODUCT_FROM_DATABASE=MX300 ser - -usb:v04A9p1728* - ID_PRODUCT_FROM_DATABASE=MX310 ser - -usb:v04A9p1729* - ID_PRODUCT_FROM_DATABASE=MX700 ser - -usb:v04A9p172B* - ID_PRODUCT_FROM_DATABASE=MP140 ser - -usb:v04A9p173E* - ID_PRODUCT_FROM_DATABASE=MP560 - -usb:v04A9p173F* - ID_PRODUCT_FROM_DATABASE=Pixma MP640 Multifunction device - -usb:v04A9p1748* - ID_PRODUCT_FROM_DATABASE=Pixma MG5150 - -usb:v04A9p174D* - ID_PRODUCT_FROM_DATABASE=MX360 ser - -usb:v04A9p1900* - ID_PRODUCT_FROM_DATABASE=CanoScan LiDE 90 - -usb:v04A9p1901* - ID_PRODUCT_FROM_DATABASE=CanoScan 8800F - -usb:v04A9p1904* - ID_PRODUCT_FROM_DATABASE=CanoScan LiDE 100 - -usb:v04A9p1905* - ID_PRODUCT_FROM_DATABASE=CanoScan LiDE 200 - -usb:v04A9p1906* - ID_PRODUCT_FROM_DATABASE=CanoScan 5600F - -usb:v04A9p1907* - ID_PRODUCT_FROM_DATABASE=CanoScan LiDE 700F - -usb:v04A9p1909* - ID_PRODUCT_FROM_DATABASE=CanoScan LiDE 110 - -usb:v04A9p190A* - ID_PRODUCT_FROM_DATABASE=CanoScan LiDE 210 - -usb:v04A9p2200* - ID_PRODUCT_FROM_DATABASE=CanoScan LiDE 25 - -usb:v04A9p2201* - ID_PRODUCT_FROM_DATABASE=CanoScan FB320U - -usb:v04A9p2202* - ID_PRODUCT_FROM_DATABASE=CanoScan FB620U - -usb:v04A9p2204* - ID_PRODUCT_FROM_DATABASE=CanoScan FB630U - -usb:v04A9p2205* - ID_PRODUCT_FROM_DATABASE=CanoScan FB1210U - -usb:v04A9p2206* - ID_PRODUCT_FROM_DATABASE=CanoScan N650U/N656U - -usb:v04A9p2207* - ID_PRODUCT_FROM_DATABASE=CanoScan 1220U - -usb:v04A9p2208* - ID_PRODUCT_FROM_DATABASE=CanoScan D660U - -usb:v04A9p220A* - ID_PRODUCT_FROM_DATABASE=CanoScan D2400UF - -usb:v04A9p220B* - ID_PRODUCT_FROM_DATABASE=CanoScan D646U - -usb:v04A9p220C* - ID_PRODUCT_FROM_DATABASE=CanoScan D1250U2 - -usb:v04A9p220D* - ID_PRODUCT_FROM_DATABASE=CanoScan N670U/N676U/LiDE 20 - -usb:v04A9p220E* - ID_PRODUCT_FROM_DATABASE=CanoScan N1240U/LiDE 30 - -usb:v04A9p220F* - ID_PRODUCT_FROM_DATABASE=CanoScan 8000F - -usb:v04A9p2210* - ID_PRODUCT_FROM_DATABASE=CanoScan 9900F - -usb:v04A9p2212* - ID_PRODUCT_FROM_DATABASE=CanoScan 5000F - -usb:v04A9p2213* - ID_PRODUCT_FROM_DATABASE=CanoScan LiDE 50/LiDE 35/LiDE 40 - -usb:v04A9p2214* - ID_PRODUCT_FROM_DATABASE=CanoScan LiDE 80 - -usb:v04A9p2215* - ID_PRODUCT_FROM_DATABASE=CanoScan 3000/3000F/3000ex - -usb:v04A9p2216* - ID_PRODUCT_FROM_DATABASE=CanoScan 3200F - -usb:v04A9p2217* - ID_PRODUCT_FROM_DATABASE=CanoScan 5200F - -usb:v04A9p2219* - ID_PRODUCT_FROM_DATABASE=CanoScan 9950F - -usb:v04A9p221B* - ID_PRODUCT_FROM_DATABASE=CanoScan 4200F - -usb:v04A9p221C* - ID_PRODUCT_FROM_DATABASE=CanoScan LiDE 60 - -usb:v04A9p221E* - ID_PRODUCT_FROM_DATABASE=CanoScan 8400F - -usb:v04A9p221F* - ID_PRODUCT_FROM_DATABASE=CanoScan LiDE 500F - -usb:v04A9p2220* - ID_PRODUCT_FROM_DATABASE=CanoScan LIDE 25 - -usb:v04A9p2224* - ID_PRODUCT_FROM_DATABASE=CanoScan LiDE 600F - -usb:v04A9p2225* - ID_PRODUCT_FROM_DATABASE=CanoScan LiDE 70 - -usb:v04A9p2228* - ID_PRODUCT_FROM_DATABASE=CanoScan 4400F - -usb:v04A9p2602* - ID_PRODUCT_FROM_DATABASE=MultiPASS C555 - -usb:v04A9p2603* - ID_PRODUCT_FROM_DATABASE=MultiPASS C755 - -usb:v04A9p260A* - ID_PRODUCT_FROM_DATABASE=CAPT Printer - -usb:v04A9p260E* - ID_PRODUCT_FROM_DATABASE=LBP-2000 - -usb:v04A9p2610* - ID_PRODUCT_FROM_DATABASE=MPC600F - -usb:v04A9p2611* - ID_PRODUCT_FROM_DATABASE=SmartBase MPC400 - -usb:v04A9p2612* - ID_PRODUCT_FROM_DATABASE=MultiPASS C855 - -usb:v04A9p2617* - ID_PRODUCT_FROM_DATABASE=CAPT Printer - -usb:v04A9p261A* - ID_PRODUCT_FROM_DATABASE=iR1600 - -usb:v04A9p261B* - ID_PRODUCT_FROM_DATABASE=iR1610 - -usb:v04A9p261C* - ID_PRODUCT_FROM_DATABASE=iC2300 - -usb:v04A9p261F* - ID_PRODUCT_FROM_DATABASE=MPC200 Printer - -usb:v04A9p2621* - ID_PRODUCT_FROM_DATABASE=iR2000 - -usb:v04A9p2622* - ID_PRODUCT_FROM_DATABASE=iR2010 - -usb:v04A9p2623* - ID_PRODUCT_FROM_DATABASE=FAX-B180C - -usb:v04A9p2629* - ID_PRODUCT_FROM_DATABASE=FAXPHONE L75 - -usb:v04A9p262B* - ID_PRODUCT_FROM_DATABASE=LaserShot LBP-1120 Printer - -usb:v04A9p262D* - ID_PRODUCT_FROM_DATABASE=iR C3200 - -usb:v04A9p262F* - ID_PRODUCT_FROM_DATABASE=MultiPASS MP730 - -usb:v04A9p2630* - ID_PRODUCT_FROM_DATABASE=MultiPASS MP700 - -usb:v04A9p2631* - ID_PRODUCT_FROM_DATABASE=LASER CLASS 700 - -usb:v04A9p2632* - ID_PRODUCT_FROM_DATABASE=FAX-L2000 - -usb:v04A9p2635* - ID_PRODUCT_FROM_DATABASE=MPC190 - -usb:v04A9p2637* - ID_PRODUCT_FROM_DATABASE=iR C6800 - -usb:v04A9p2638* - ID_PRODUCT_FROM_DATABASE=iR C3100 - -usb:v04A9p263C* - ID_PRODUCT_FROM_DATABASE=Smartbase MP360 - -usb:v04A9p263D* - ID_PRODUCT_FROM_DATABASE=MP370 - -usb:v04A9p263E* - ID_PRODUCT_FROM_DATABASE=MP390 FAX - -usb:v04A9p263F* - ID_PRODUCT_FROM_DATABASE=MP375 - -usb:v04A9p2646* - ID_PRODUCT_FROM_DATABASE=MF5530 Scanner Device V1.9.1 - -usb:v04A9p2647* - ID_PRODUCT_FROM_DATABASE=MF5550 Composite - -usb:v04A9p264D* - ID_PRODUCT_FROM_DATABASE=PIXMA MP710 - -usb:v04A9p264E* - ID_PRODUCT_FROM_DATABASE=MF5630 - -usb:v04A9p264F* - ID_PRODUCT_FROM_DATABASE=MF5650 (FAX) - -usb:v04A9p2650* - ID_PRODUCT_FROM_DATABASE=iR 6800C EUR - -usb:v04A9p2651* - ID_PRODUCT_FROM_DATABASE=iR 3100C EUR - -usb:v04A9p2655* - ID_PRODUCT_FROM_DATABASE=FP-L170/MF350/L380/L398 - -usb:v04A9p2659* - ID_PRODUCT_FROM_DATABASE=MF8100 - -usb:v04A9p265B* - ID_PRODUCT_FROM_DATABASE=CAPT Printer - -usb:v04A9p265C* - ID_PRODUCT_FROM_DATABASE=iR C3220 - -usb:v04A9p265D* - ID_PRODUCT_FROM_DATABASE=MF5730 - -usb:v04A9p265E* - ID_PRODUCT_FROM_DATABASE=MF5750 - -usb:v04A9p265F* - ID_PRODUCT_FROM_DATABASE=MF5770 - -usb:v04A9p2660* - ID_PRODUCT_FROM_DATABASE=MF3110 - -usb:v04A9p2663* - ID_PRODUCT_FROM_DATABASE=iR3570/iR4570 - -usb:v04A9p2664* - ID_PRODUCT_FROM_DATABASE=iR2270/iR2870 - -usb:v04A9p2665* - ID_PRODUCT_FROM_DATABASE=iR C2620 - -usb:v04A9p2666* - ID_PRODUCT_FROM_DATABASE=iR C5800 - -usb:v04A9p2667* - ID_PRODUCT_FROM_DATABASE=iR85PLUS - -usb:v04A9p2669* - ID_PRODUCT_FROM_DATABASE=iR105PLUS - -usb:v04A9p266A* - ID_PRODUCT_FROM_DATABASE=CAPT Device - -usb:v04A9p266B* - ID_PRODUCT_FROM_DATABASE=iR8070 - -usb:v04A9p266C* - ID_PRODUCT_FROM_DATABASE=iR9070 - -usb:v04A9p266D* - ID_PRODUCT_FROM_DATABASE=iR 5800C EUR - -usb:v04A9p266E* - ID_PRODUCT_FROM_DATABASE=CAPT Device - -usb:v04A9p266F* - ID_PRODUCT_FROM_DATABASE=iR2230 - -usb:v04A9p2670* - ID_PRODUCT_FROM_DATABASE=iR3530 - -usb:v04A9p2671* - ID_PRODUCT_FROM_DATABASE=iR5570/iR6570 - -usb:v04A9p2672* - ID_PRODUCT_FROM_DATABASE=iR C3170 - -usb:v04A9p2673* - ID_PRODUCT_FROM_DATABASE=iR 3170C EUR - -usb:v04A9p2674* - ID_PRODUCT_FROM_DATABASE=L120 - -usb:v04A9p2675* - ID_PRODUCT_FROM_DATABASE=iR2830 - -usb:v04A9p2676* - ID_PRODUCT_FROM_DATABASE=CAPT Device - -usb:v04A9p2677* - ID_PRODUCT_FROM_DATABASE=iR C2570 - -usb:v04A9p2678* - ID_PRODUCT_FROM_DATABASE=iR 2570C EUR - -usb:v04A9p2679* - ID_PRODUCT_FROM_DATABASE=CAPT Device - -usb:v04A9p267A* - ID_PRODUCT_FROM_DATABASE=iR2016 - -usb:v04A9p267B* - ID_PRODUCT_FROM_DATABASE=iR2020 - -usb:v04A9p267D* - ID_PRODUCT_FROM_DATABASE=MF7100 series - -usb:v04A9p2684* - ID_PRODUCT_FROM_DATABASE=MF3200 series - -usb:v04A9p2686* - ID_PRODUCT_FROM_DATABASE=MF6500 series - -usb:v04A9p2687* - ID_PRODUCT_FROM_DATABASE=iR4530 - -usb:v04A9p2688* - ID_PRODUCT_FROM_DATABASE=LBP3460 - -usb:v04A9p268C* - ID_PRODUCT_FROM_DATABASE=iR C6870 - -usb:v04A9p268D* - ID_PRODUCT_FROM_DATABASE=iR 6870C EUR - -usb:v04A9p268E* - ID_PRODUCT_FROM_DATABASE=iR C5870 - -usb:v04A9p268F* - ID_PRODUCT_FROM_DATABASE=iR 5870C EUR - -usb:v04A9p2691* - ID_PRODUCT_FROM_DATABASE=iR7105 - -usb:v04A9p26A3* - ID_PRODUCT_FROM_DATABASE=MF4100 series - -usb:v04A9p26B0* - ID_PRODUCT_FROM_DATABASE=MF4600 series - -usb:v04A9p26B4* - ID_PRODUCT_FROM_DATABASE=MF4010 series - -usb:v04A9p26B5* - ID_PRODUCT_FROM_DATABASE=MF4200 series - -usb:v04A9p26DA* - ID_PRODUCT_FROM_DATABASE=LBP3010B printer - -usb:v04A9p26E6* - ID_PRODUCT_FROM_DATABASE=iR1024 - -usb:v04A9p2737* - ID_PRODUCT_FROM_DATABASE=MF4410 - -usb:v04A9p3041* - ID_PRODUCT_FROM_DATABASE=PowerShot S10 - -usb:v04A9p3042* - ID_PRODUCT_FROM_DATABASE=CanoScan FS4000US Film Scanner - -usb:v04A9p3043* - ID_PRODUCT_FROM_DATABASE=PowerShot S20 - -usb:v04A9p3044* - ID_PRODUCT_FROM_DATABASE=EOS D30 - -usb:v04A9p3045* - ID_PRODUCT_FROM_DATABASE=PowerShot S100 - -usb:v04A9p3046* - ID_PRODUCT_FROM_DATABASE=IXY Digital - -usb:v04A9p3047* - ID_PRODUCT_FROM_DATABASE=Digital IXUS - -usb:v04A9p3048* - ID_PRODUCT_FROM_DATABASE=PowerShot G1 - -usb:v04A9p3049* - ID_PRODUCT_FROM_DATABASE=PowerShot Pro90 IS - -usb:v04A9p304A* - ID_PRODUCT_FROM_DATABASE=CP-10 - -usb:v04A9p304B* - ID_PRODUCT_FROM_DATABASE=IXY Digital 300 - -usb:v04A9p304C* - ID_PRODUCT_FROM_DATABASE=PowerShot S300 - -usb:v04A9p304D* - ID_PRODUCT_FROM_DATABASE=Digital IXUS 300 - -usb:v04A9p304E* - ID_PRODUCT_FROM_DATABASE=PowerShot A20 - -usb:v04A9p304F* - ID_PRODUCT_FROM_DATABASE=PowerShot A10 - -usb:v04A9p3050* - ID_PRODUCT_FROM_DATABASE=PowerShot unknown 1 - -usb:v04A9p3051* - ID_PRODUCT_FROM_DATABASE=PowerShot S110 - -usb:v04A9p3052* - ID_PRODUCT_FROM_DATABASE=Digital IXUS V - -usb:v04A9p3055* - ID_PRODUCT_FROM_DATABASE=PowerShot G2 - -usb:v04A9p3056* - ID_PRODUCT_FROM_DATABASE=PowerShot S40 - -usb:v04A9p3057* - ID_PRODUCT_FROM_DATABASE=PowerShot S30 - -usb:v04A9p3058* - ID_PRODUCT_FROM_DATABASE=PowerShot A40 - -usb:v04A9p3059* - ID_PRODUCT_FROM_DATABASE=PowerShot A30 - -usb:v04A9p305B* - ID_PRODUCT_FROM_DATABASE=ZR45MC Digital Camcorder - -usb:v04A9p305C* - ID_PRODUCT_FROM_DATABASE=PowerShot unknown 2 - -usb:v04A9p3060* - ID_PRODUCT_FROM_DATABASE=EOS D60 - -usb:v04A9p3061* - ID_PRODUCT_FROM_DATABASE=PowerShot A100 - -usb:v04A9p3062* - ID_PRODUCT_FROM_DATABASE=PowerShot A200 - -usb:v04A9p3063* - ID_PRODUCT_FROM_DATABASE=CP-100 - -usb:v04A9p3065* - ID_PRODUCT_FROM_DATABASE=PowerShot S200 - -usb:v04A9p3066* - ID_PRODUCT_FROM_DATABASE=Digital IXUS 330 - -usb:v04A9p3067* - ID_PRODUCT_FROM_DATABASE=MV550i Digital Video Camera - -usb:v04A9p3069* - ID_PRODUCT_FROM_DATABASE=PowerShot G3 - -usb:v04A9p306A* - ID_PRODUCT_FROM_DATABASE=Digital unknown 3 - -usb:v04A9p306B* - ID_PRODUCT_FROM_DATABASE=MVX2i Digital Video Camera - -usb:v04A9p306C* - ID_PRODUCT_FROM_DATABASE=PowerShot S45 - -usb:v04A9p306D* - ID_PRODUCT_FROM_DATABASE=PowerShot S45 PtP Mode - -usb:v04A9p306E* - ID_PRODUCT_FROM_DATABASE=PowerShot G3 (normal mode) - -usb:v04A9p306F* - ID_PRODUCT_FROM_DATABASE=PowerShot G3 (ptp) - -usb:v04A9p3070* - ID_PRODUCT_FROM_DATABASE=PowerShot S230 - -usb:v04A9p3071* - ID_PRODUCT_FROM_DATABASE=PowerShot S230 (ptp) - -usb:v04A9p3072* - ID_PRODUCT_FROM_DATABASE=PowerShot SD100 / Digital IXUS II (ptp) - -usb:v04A9p3073* - ID_PRODUCT_FROM_DATABASE=PowerShot A70 (ptp) - -usb:v04A9p3074* - ID_PRODUCT_FROM_DATABASE=PowerShot A60 (ptp) - -usb:v04A9p3075* - ID_PRODUCT_FROM_DATABASE=IXUS 400 Camera - -usb:v04A9p3076* - ID_PRODUCT_FROM_DATABASE=PowerShot A300 - -usb:v04A9p3077* - ID_PRODUCT_FROM_DATABASE=PowerShot S50 - -usb:v04A9p3078* - ID_PRODUCT_FROM_DATABASE=ZR70MC Digital Camcorder - -usb:v04A9p307A* - ID_PRODUCT_FROM_DATABASE=MV650i (normal mode) - -usb:v04A9p307B* - ID_PRODUCT_FROM_DATABASE=MV630i Digital Video Camera - -usb:v04A9p307C* - ID_PRODUCT_FROM_DATABASE=CP-200 - -usb:v04A9p307D* - ID_PRODUCT_FROM_DATABASE=CP-300 - -usb:v04A9p307F* - ID_PRODUCT_FROM_DATABASE=Optura 20 - -usb:v04A9p3080* - ID_PRODUCT_FROM_DATABASE=MVX150i (normal mode) / Optura 20 (normal mode) - -usb:v04A9p3081* - ID_PRODUCT_FROM_DATABASE=Optura 10 - -usb:v04A9p3082* - ID_PRODUCT_FROM_DATABASE=MVX100i / Optura 10 - -usb:v04A9p3083* - ID_PRODUCT_FROM_DATABASE=EOS 10D - -usb:v04A9p3084* - ID_PRODUCT_FROM_DATABASE=EOS 300D / EOS Digital Rebel - -usb:v04A9p3085* - ID_PRODUCT_FROM_DATABASE=PowerShot G5 - -usb:v04A9p3087* - ID_PRODUCT_FROM_DATABASE=Elura 50 (PTP mode) - -usb:v04A9p3088* - ID_PRODUCT_FROM_DATABASE=Elura 50 (normal mode) - -usb:v04A9p308D* - ID_PRODUCT_FROM_DATABASE=MVX3i - -usb:v04A9p308E* - ID_PRODUCT_FROM_DATABASE=FV M1 (normal mode) / MVX 3i (normal mode) / Optura Xi (normal mode) - -usb:v04A9p3093* - ID_PRODUCT_FROM_DATABASE=Optura 300 - -usb:v04A9p3096* - ID_PRODUCT_FROM_DATABASE=IXY DV M2 (normal mode) / MVX 10i (normal mode) - -usb:v04A9p3099* - ID_PRODUCT_FROM_DATABASE=EOS 300D (ptp) - -usb:v04A9p309A* - ID_PRODUCT_FROM_DATABASE=PowerShot A80 - -usb:v04A9p309B* - ID_PRODUCT_FROM_DATABASE=Digital IXUS (ptp) - -usb:v04A9p309C* - ID_PRODUCT_FROM_DATABASE=PowerShot S1 IS - -usb:v04A9p309D* - ID_PRODUCT_FROM_DATABASE=Powershot Pro 1 - -usb:v04A9p309F* - ID_PRODUCT_FROM_DATABASE=Camera - -usb:v04A9p30A0* - ID_PRODUCT_FROM_DATABASE=Camera - -usb:v04A9p30A1* - ID_PRODUCT_FROM_DATABASE=Camera - -usb:v04A9p30A2* - ID_PRODUCT_FROM_DATABASE=Camera - -usb:v04A9p30A8* - ID_PRODUCT_FROM_DATABASE=Elura 60E/Optura 40 (ptp) - -usb:v04A9p30A9* - ID_PRODUCT_FROM_DATABASE=MVX25i (normal mode) / Optura 40 (normal mode) - -usb:v04A9p30B1* - ID_PRODUCT_FROM_DATABASE=PowerShot S70 (normal mode) / PowerShot S70 (PTP mode) - -usb:v04A9p30B2* - ID_PRODUCT_FROM_DATABASE=PowerShot S60 (normal mode) / PowerShot S60 (PTP mode) - -usb:v04A9p30B3* - ID_PRODUCT_FROM_DATABASE=PowerShot G6 (normal mode) / PowerShot G6 (PTP mode) - -usb:v04A9p30B4* - ID_PRODUCT_FROM_DATABASE=PowerShot S500 - -usb:v04A9p30B5* - ID_PRODUCT_FROM_DATABASE=PowerShot A75 - -usb:v04A9p30B6* - ID_PRODUCT_FROM_DATABASE=Digital IXUS II2 / Digital IXUS II2 (PTP mode) / PowerShot SD110 (PTP mode) / PowerShot SD110 Digital ELPH - -usb:v04A9p30B7* - ID_PRODUCT_FROM_DATABASE=PowerShot A400 / PowerShot A400 (PTP mode) - -usb:v04A9p30B8* - ID_PRODUCT_FROM_DATABASE=PowerShot A310 / PowerShot A310 (PTP mode) - -usb:v04A9p30B9* - ID_PRODUCT_FROM_DATABASE=Powershot A85 - -usb:v04A9p30BA* - ID_PRODUCT_FROM_DATABASE=PowerShot S410 Digital Elph - -usb:v04A9p30BB* - ID_PRODUCT_FROM_DATABASE=PowerShot A95 - -usb:v04A9p30BD* - ID_PRODUCT_FROM_DATABASE=CP-220 - -usb:v04A9p30BE* - ID_PRODUCT_FROM_DATABASE=CP-330 - -usb:v04A9p30BF* - ID_PRODUCT_FROM_DATABASE=Digital IXUS 40 - -usb:v04A9p30C0* - ID_PRODUCT_FROM_DATABASE=Digital IXUS 30 (PTP mode) / PowerShot SD200 (PTP mode) - -usb:v04A9p30C1* - ID_PRODUCT_FROM_DATABASE=Digital IXUS 50 (normal mode) / IXY Digital 55 (normal mode) / PowerShot A520 (PTP mode) / PowerShot SD400 (normal mode) - -usb:v04A9p30C2* - ID_PRODUCT_FROM_DATABASE=PowerShot A510 (normal mode) / PowerShot A510 (PTP mode) - -usb:v04A9p30C4* - ID_PRODUCT_FROM_DATABASE=Digital IXUS i5 (normal mode) / IXY Digital L2 (normal mode) / PowerShot SD20 (normal mode) - -usb:v04A9p30EA* - ID_PRODUCT_FROM_DATABASE=EOS 1D Mark II (PTP mode) - -usb:v04A9p30EB* - ID_PRODUCT_FROM_DATABASE=EOS 20D - -usb:v04A9p30EC* - ID_PRODUCT_FROM_DATABASE=EOS 20D (ptp) - -usb:v04A9p30EE* - ID_PRODUCT_FROM_DATABASE=EOS 350D - -usb:v04A9p30EF* - ID_PRODUCT_FROM_DATABASE=EOS 350D (ptp) - -usb:v04A9p30F0* - ID_PRODUCT_FROM_DATABASE=PowerShot S2 IS (PTP mode) - -usb:v04A9p30F2* - ID_PRODUCT_FROM_DATABASE=Digital IXUS 700 (normal mode) / Digital IXUS 700 (PTP mode) / IXY Digital 600 (normal mode) / PowerShot SD500 (normal mode) / PowerShot SD500 (PTP mode) - -usb:v04A9p30F4* - ID_PRODUCT_FROM_DATABASE=PowerShot SD30 / Ixus iZoom / IXY DIGITAL L3 - -usb:v04A9p30F5* - ID_PRODUCT_FROM_DATABASE=SELPHY CP500 - -usb:v04A9p30F6* - ID_PRODUCT_FROM_DATABASE=SELPHY CP400 - -usb:v04A9p30F8* - ID_PRODUCT_FROM_DATABASE=Powershot A430 - -usb:v04A9p30F9* - ID_PRODUCT_FROM_DATABASE=PowerShot A410 (PTP mode) - -usb:v04A9p30FA* - ID_PRODUCT_FROM_DATABASE=PowerShot S80 - -usb:v04A9p30FC* - ID_PRODUCT_FROM_DATABASE=PowerShot A620 (PTP mode) - -usb:v04A9p30FD* - ID_PRODUCT_FROM_DATABASE=PowerShot A610 (normal mode)/PowerShot A610 (PTP mode) - -usb:v04A9p30FE* - ID_PRODUCT_FROM_DATABASE=Digital IXUS 65 (PTP mode)/PowerShot SD630 (PTP mode) - -usb:v04A9p30FF* - ID_PRODUCT_FROM_DATABASE=Digital IXUS 55 (PTP mode)/PowerShot SD450 (PTP mode) - -usb:v04A9p3100* - ID_PRODUCT_FROM_DATABASE=PowerShot TX1 - -usb:v04A9p310B* - ID_PRODUCT_FROM_DATABASE=SELPHY CP600 - -usb:v04A9p310E* - ID_PRODUCT_FROM_DATABASE=Digital IXUS 50 (PTP mode) - -usb:v04A9p3110* - ID_PRODUCT_FROM_DATABASE=EOS Digital Rebel XTi - -usb:v04A9p3116* - ID_PRODUCT_FROM_DATABASE=Digital IXUS 750 / PowerShot SD550 (PTP mode) - -usb:v04A9p3117* - ID_PRODUCT_FROM_DATABASE=PowerShot A700 - -usb:v04A9p3119* - ID_PRODUCT_FROM_DATABASE=PowerShot SD700 IS / Digital IXUS 800 IS / IXY Digital 800 IS - -usb:v04A9p311B* - ID_PRODUCT_FROM_DATABASE=PowerShot A540 - -usb:v04A9p3127* - ID_PRODUCT_FROM_DATABASE=SELPHY CP710 - -usb:v04A9p3128* - ID_PRODUCT_FROM_DATABASE=SELPHY CP510 - -usb:v04A9p312D* - ID_PRODUCT_FROM_DATABASE=Elura 100 - -usb:v04A9p3138* - ID_PRODUCT_FROM_DATABASE=PowerShot A710 IS - -usb:v04A9p3141* - ID_PRODUCT_FROM_DATABASE=SELPHY ES1 - -usb:v04A9p3142* - ID_PRODUCT_FROM_DATABASE=SELPHY CP730 - -usb:v04A9p3143* - ID_PRODUCT_FROM_DATABASE=SELPHY CP720 - -usb:v04A9p3145* - ID_PRODUCT_FROM_DATABASE=EOS 450D - -usb:v04A9p3147* - ID_PRODUCT_FROM_DATABASE=EOS 1Ds Mark III - -usb:v04A9p314F* - ID_PRODUCT_FROM_DATABASE=Powershot SD1000 - -usb:v04A9p3155* - ID_PRODUCT_FROM_DATABASE=PowerShot A450 - -usb:v04A9p315A* - ID_PRODUCT_FROM_DATABASE=PowerShot G9 - -usb:v04A9p315D* - ID_PRODUCT_FROM_DATABASE=PowerShot A720 - -usb:v04A9p3160* - ID_PRODUCT_FROM_DATABASE=Digital IXUS 860 IS - -usb:v04A9p3170* - ID_PRODUCT_FROM_DATABASE=SELPHY CP750 - -usb:v04A9p3171* - ID_PRODUCT_FROM_DATABASE=SELPHY CP740 - -usb:v04A9p3175* - ID_PRODUCT_FROM_DATABASE=IXY Digital 25 IS - -usb:v04A9p3176* - ID_PRODUCT_FROM_DATABASE=PowerShot A590 - -usb:v04A9p317A* - ID_PRODUCT_FROM_DATABASE=PC1267 [Powershot A470] - -usb:v04A9p3184* - ID_PRODUCT_FROM_DATABASE=Digital IXUS 80 IS (PTP mode) - -usb:v04A9p3185* - ID_PRODUCT_FROM_DATABASE=SELPHY ES2 - -usb:v04A9p3186* - ID_PRODUCT_FROM_DATABASE=SELPHY ES20 - -usb:v04A9p3192* - ID_PRODUCT_FROM_DATABASE=PowerShot SX110 IS - -usb:v04A9p319A* - ID_PRODUCT_FROM_DATABASE=EOS 7D - -usb:v04A9p31AA* - ID_PRODUCT_FROM_DATABASE=SELPHY CP770 - -usb:v04A9p31AB* - ID_PRODUCT_FROM_DATABASE=SELPHY CP760 - -usb:v04A9p31AD* - ID_PRODUCT_FROM_DATABASE=PowerShot E1 - -usb:v04A9p31AF* - ID_PRODUCT_FROM_DATABASE=SELPHY ES3 - -usb:v04A9p31B0* - ID_PRODUCT_FROM_DATABASE=SELPHY ES30 - -usb:v04A9p31B1* - ID_PRODUCT_FROM_DATABASE=SELPHY CP530 - -usb:v04A9p31BC* - ID_PRODUCT_FROM_DATABASE=PowerShot D10 - -usb:v04A9p31BF* - ID_PRODUCT_FROM_DATABASE=PowerShot A480 - -usb:v04A9p31C0* - ID_PRODUCT_FROM_DATABASE=PowerShot SX200 IS - -usb:v04A9p31DD* - ID_PRODUCT_FROM_DATABASE=SELPHY CP780 - -usb:v04A9p31E5* - ID_PRODUCT_FROM_DATABASE=Digital IXUS 200 IS - -usb:v04A9p31EE* - ID_PRODUCT_FROM_DATABASE=SELPHY ES40 - -usb:v04A9p31EF* - ID_PRODUCT_FROM_DATABASE=PowerShot A495 - -usb:v04A9p31F1* - ID_PRODUCT_FROM_DATABASE=PowerShot A3100 IS / PowerShot A3150 IS - -usb:v04A9p31F2* - ID_PRODUCT_FROM_DATABASE=PowerShot A3000 IS - -usb:v04A9p31F3* - ID_PRODUCT_FROM_DATABASE=PowerShot Digital ELPH SD1400 IS - -usb:v04A9p31F4* - ID_PRODUCT_FROM_DATABASE=PowerShot SD1300 IS / IXUS 105 - -usb:v04A9p31F5* - ID_PRODUCT_FROM_DATABASE=Powershot SD3500 IS / IXUS 210 IS - -usb:v04A9p31F6* - ID_PRODUCT_FROM_DATABASE=PowerShot SX210 IS - -usb:v04A9p31F7* - ID_PRODUCT_FROM_DATABASE=Powershot SD4000 IS / IXUS 300 HS / IXY 30S - -usb:v04A9p31F8* - ID_PRODUCT_FROM_DATABASE=Powershot SD4500 IS / IXUS 1000 HS / IXY 50S - -usb:v04A9p31FF* - ID_PRODUCT_FROM_DATABASE=Digital IXUS 55 - -usb:v04A9p3209* - ID_PRODUCT_FROM_DATABASE=Vixia HF S21 A - -usb:v04A9p3210* - ID_PRODUCT_FROM_DATABASE=Powershot SX30 IS - -usb:v04A9p3211* - ID_PRODUCT_FROM_DATABASE=PowerShot SX130 IS - -usb:v04A9p3212* - ID_PRODUCT_FROM_DATABASE=Powershot S95 - -usb:v04A9p3214* - ID_PRODUCT_FROM_DATABASE=SELPHY CP800 - -usb:v04A9p3218* - ID_PRODUCT_FROM_DATABASE=EOS 600D / Rebel T3i (ptp) - -usb:v04A9p3223* - ID_PRODUCT_FROM_DATABASE=PowerShot A3300 IS - -usb:v04A9p3224* - ID_PRODUCT_FROM_DATABASE=PowerShot A3200 IS - -usb:v04A9p3226* - ID_PRODUCT_FROM_DATABASE=PowerShow A800 - -usb:v04A9p3228* - ID_PRODUCT_FROM_DATABASE=PowerShot SX230 HS - -usb:v04A9p3229* - ID_PRODUCT_FROM_DATABASE=PowerShot ELPH 300 HS / IXUS 220 HS - -usb:v04A9p322A* - ID_PRODUCT_FROM_DATABASE=PowerShot A2200 - -usb:v04A9p322B* - ID_PRODUCT_FROM_DATABASE=Powershot A1200 - -usb:v04A9p3233* - ID_PRODUCT_FROM_DATABASE=PowerShot G1 X - -usb:v04A9p3234* - ID_PRODUCT_FROM_DATABASE=PowerShot SX150 IS - -usb:v04A9p3236* - ID_PRODUCT_FROM_DATABASE=PowerShot S100 - -usb:v04A9p3237* - ID_PRODUCT_FROM_DATABASE=PowerShot ELPH 310 HS / IXUS 230 HS - -usb:v04A9p3238* - ID_PRODUCT_FROM_DATABASE=PowerShot SX40 HS - -usb:v04A9p323B* - ID_PRODUCT_FROM_DATABASE=EOS Rebel T4i - -usb:v04A9p323E* - ID_PRODUCT_FROM_DATABASE=PowerShot A1300 - -usb:v04A9p323F* - ID_PRODUCT_FROM_DATABASE=PowerShot A810 - -usb:v04A9p3240* - ID_PRODUCT_FROM_DATABASE=PowerShot ELPH 320 HS / IXUS 240 HS - -usb:v04A9p3241* - ID_PRODUCT_FROM_DATABASE=PowerShot ELPH 110 HS / IXUS 125 HS - -usb:v04A9p3243* - ID_PRODUCT_FROM_DATABASE=PowerShot A4000 IS - -usb:v04A9p3244* - ID_PRODUCT_FROM_DATABASE=PowerShot SX260 HS - -usb:v04A9p3245* - ID_PRODUCT_FROM_DATABASE=PowerShot SX240 HS - -usb:v04A9p3247* - ID_PRODUCT_FROM_DATABASE=PowerShot ELPH 520 HS / IXUS 500 HS - -usb:v04A9p3248* - ID_PRODUCT_FROM_DATABASE=PowerShot A3400 IS - -usb:v04A9p3249* - ID_PRODUCT_FROM_DATABASE=PowerShot A2400 IS - -usb:v04A9p324A* - ID_PRODUCT_FROM_DATABASE=PowerShot A2300 - -usb:v04A9p3255* - ID_PRODUCT_FROM_DATABASE=SELPHY CP900 - -usb:v04A9p3256* - ID_PRODUCT_FROM_DATABASE=SELPHY CP810 - -usb:v04A9p3258* - ID_PRODUCT_FROM_DATABASE=PowerShot G15 - -usb:v04A9p3259* - ID_PRODUCT_FROM_DATABASE=PowerShot SX50 HS - -usb:v04A9p325A* - ID_PRODUCT_FROM_DATABASE=PowerShot SX160 IS - -usb:v04A9p325B* - ID_PRODUCT_FROM_DATABASE=PowerShot S110 - -usb:v04A9p325C* - ID_PRODUCT_FROM_DATABASE=PowerShot SX500 IS - -usb:v04AA* - ID_VENDOR_FROM_DATABASE=DaeWoo Telecom, Ltd - -usb:v04AB* - ID_VENDOR_FROM_DATABASE=Chromatic Research - -usb:v04AC* - ID_VENDOR_FROM_DATABASE=Micro Audiometrics Corp. - -usb:v04AD* - ID_VENDOR_FROM_DATABASE=Dooin Electronics - -usb:v04ADp2501* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v04AF* - ID_VENDOR_FROM_DATABASE=Winnov L.P. - -usb:v04B0* - ID_VENDOR_FROM_DATABASE=Nikon Corp. - -usb:v04B0p0102* - ID_PRODUCT_FROM_DATABASE=Coolpix 990 - -usb:v04B0p0103* - ID_PRODUCT_FROM_DATABASE=Coolpix 880 - -usb:v04B0p0104* - ID_PRODUCT_FROM_DATABASE=Coolpix 995 - -usb:v04B0p0106* - ID_PRODUCT_FROM_DATABASE=Coolpix 775 - -usb:v04B0p0107* - ID_PRODUCT_FROM_DATABASE=Coolpix 5000 - -usb:v04B0p0108* - ID_PRODUCT_FROM_DATABASE=Coolpix 2500 - -usb:v04B0p0109* - ID_PRODUCT_FROM_DATABASE=Coolpix 2500 (ptp) - -usb:v04B0p010A* - ID_PRODUCT_FROM_DATABASE=Coolpix 4500 - -usb:v04B0p010B* - ID_PRODUCT_FROM_DATABASE=Coolpix 4500 (ptp) - -usb:v04B0p010D* - ID_PRODUCT_FROM_DATABASE=Coolpix 5700 (ptp) - -usb:v04B0p010E* - ID_PRODUCT_FROM_DATABASE=Coolpix 4300 (storage) - -usb:v04B0p010F* - ID_PRODUCT_FROM_DATABASE=Coolpix 4300 (ptp) - -usb:v04B0p0110* - ID_PRODUCT_FROM_DATABASE=Coolpix 3500 (Sierra Mode) - -usb:v04B0p0111* - ID_PRODUCT_FROM_DATABASE=Coolpix 3500 (ptp) - -usb:v04B0p0112* - ID_PRODUCT_FROM_DATABASE=Coolpix 885 (ptp) - -usb:v04B0p0113* - ID_PRODUCT_FROM_DATABASE=Coolpix 5000 (ptp) - -usb:v04B0p0114* - ID_PRODUCT_FROM_DATABASE=Coolpix 3100 (storage) - -usb:v04B0p0115* - ID_PRODUCT_FROM_DATABASE=Coolpix 3100 (ptp) - -usb:v04B0p0117* - ID_PRODUCT_FROM_DATABASE=Coolpix 2100 (ptp) - -usb:v04B0p0119* - ID_PRODUCT_FROM_DATABASE=Coolpix 5400 (ptp) - -usb:v04B0p011D* - ID_PRODUCT_FROM_DATABASE=Coolpix 3700 (ptp) - -usb:v04B0p0121* - ID_PRODUCT_FROM_DATABASE=Coolpix 3200 (ptp) - -usb:v04B0p0122* - ID_PRODUCT_FROM_DATABASE=Coolpix 2200 (ptp) - -usb:v04B0p0124* - ID_PRODUCT_FROM_DATABASE=Coolpix 8400 (mass storage mode) - -usb:v04B0p0125* - ID_PRODUCT_FROM_DATABASE=Coolpix 8400 (ptp) - -usb:v04B0p0126* - ID_PRODUCT_FROM_DATABASE=Coolpix 8800 - -usb:v04B0p0129* - ID_PRODUCT_FROM_DATABASE=Coolpix 4800 (ptp) - -usb:v04B0p012C* - ID_PRODUCT_FROM_DATABASE=Coolpix 4100 (storage) - -usb:v04B0p012D* - ID_PRODUCT_FROM_DATABASE=Coolpix 4100 (ptp) - -usb:v04B0p012E* - ID_PRODUCT_FROM_DATABASE=Coolpix 5600 (ptp) - -usb:v04B0p0130* - ID_PRODUCT_FROM_DATABASE=Coolpix 4600 (ptp) - -usb:v04B0p0135* - ID_PRODUCT_FROM_DATABASE=Coolpix 5900 (ptp) - -usb:v04B0p0136* - ID_PRODUCT_FROM_DATABASE=Coolpix 7900 (storage) - -usb:v04B0p0137* - ID_PRODUCT_FROM_DATABASE=Coolpix 7900 (ptp) - -usb:v04B0p013A* - ID_PRODUCT_FROM_DATABASE=Coolpix 100 (storage) - -usb:v04B0p013B* - ID_PRODUCT_FROM_DATABASE=Coolpix 100 (ptp) - -usb:v04B0p0141* - ID_PRODUCT_FROM_DATABASE=Coolpix P2 (storage) - -usb:v04B0p0142* - ID_PRODUCT_FROM_DATABASE=Coolpix P2 (ptp) - -usb:v04B0p0163* - ID_PRODUCT_FROM_DATABASE=Coolpix P5100 (ptp) - -usb:v04B0p0169* - ID_PRODUCT_FROM_DATABASE=Coolpix P50 (ptp) - -usb:v04B0p0202* - ID_PRODUCT_FROM_DATABASE=Coolpix SQ (ptp) - -usb:v04B0p0203* - ID_PRODUCT_FROM_DATABASE=Coolpix 4200 (mass storage mode) - -usb:v04B0p0204* - ID_PRODUCT_FROM_DATABASE=Coolpix 4200 (ptp) - -usb:v04B0p0205* - ID_PRODUCT_FROM_DATABASE=Coolpix 5200 (storage) - -usb:v04B0p0206* - ID_PRODUCT_FROM_DATABASE=Coolpix 5200 (ptp) - -usb:v04B0p0301* - ID_PRODUCT_FROM_DATABASE=Coolpix 2000 (storage) - -usb:v04B0p0302* - ID_PRODUCT_FROM_DATABASE=Coolpix 2000 (ptp) - -usb:v04B0p0317* - ID_PRODUCT_FROM_DATABASE=Coolpix L20 (ptp) - -usb:v04B0p0402* - ID_PRODUCT_FROM_DATABASE=DSC D100 (ptp) - -usb:v04B0p0403* - ID_PRODUCT_FROM_DATABASE=D2H (mass storage mode) - -usb:v04B0p0404* - ID_PRODUCT_FROM_DATABASE=D2H SLR (ptp) - -usb:v04B0p0405* - ID_PRODUCT_FROM_DATABASE=D70 (mass storage mode) - -usb:v04B0p0406* - ID_PRODUCT_FROM_DATABASE=DSC D70 (ptp) - -usb:v04B0p0408* - ID_PRODUCT_FROM_DATABASE=D2X SLR (ptp) - -usb:v04B0p0409* - ID_PRODUCT_FROM_DATABASE=D50 digital camera - -usb:v04B0p040A* - ID_PRODUCT_FROM_DATABASE=D50 (ptp) - -usb:v04B0p040C* - ID_PRODUCT_FROM_DATABASE=D2Hs - -usb:v04B0p040E* - ID_PRODUCT_FROM_DATABASE=DSC D70s (ptp) - -usb:v04B0p040F* - ID_PRODUCT_FROM_DATABASE=D200 (mass storage mode) - -usb:v04B0p0410* - ID_PRODUCT_FROM_DATABASE=D200 (ptp) - -usb:v04B0p0413* - ID_PRODUCT_FROM_DATABASE=D40 (mass storage mode) - -usb:v04B0p041E* - ID_PRODUCT_FROM_DATABASE=D60 digital camera (mass storage mode) - -usb:v04B0p0422* - ID_PRODUCT_FROM_DATABASE=D700 (ptp) - -usb:v04B0p0424* - ID_PRODUCT_FROM_DATABASE=D3000 - -usb:v04B0p0425* - ID_PRODUCT_FROM_DATABASE=D300S - -usb:v04B0p042A* - ID_PRODUCT_FROM_DATABASE=D800 (ptp) - -usb:v04B0p0F03* - ID_PRODUCT_FROM_DATABASE=PD-10 Wireless Printer Adapter - -usb:v04B0p4000* - ID_PRODUCT_FROM_DATABASE=Coolscan LS 40 ED - -usb:v04B0p4001* - ID_PRODUCT_FROM_DATABASE=LS 50 ED/Coolscan V ED - -usb:v04B0p4002* - ID_PRODUCT_FROM_DATABASE=Super Coolscan LS-5000 ED - -usb:v04B1* - ID_VENDOR_FROM_DATABASE=Pan International - -usb:v04B3* - ID_VENDOR_FROM_DATABASE=IBM Corp. - -usb:v04B3p3003* - ID_PRODUCT_FROM_DATABASE=Rapid Access III Keyboard - -usb:v04B3p3004* - ID_PRODUCT_FROM_DATABASE=Media Access Pro Keyboard - -usb:v04B3p300A* - ID_PRODUCT_FROM_DATABASE=Rapid Access IIIe Keyboard - -usb:v04B3p3016* - ID_PRODUCT_FROM_DATABASE=UltraNav Keyboard Hub - -usb:v04B3p3018* - ID_PRODUCT_FROM_DATABASE=UltraNav Keyboard - -usb:v04B3p301B* - ID_PRODUCT_FROM_DATABASE=SK-8815 Keyboard - -usb:v04B3p301C* - ID_PRODUCT_FROM_DATABASE=Enhanced Performance Keyboard - -usb:v04B3p3020* - ID_PRODUCT_FROM_DATABASE=Enhanced Performance Keyboard - -usb:v04B3p3025* - ID_PRODUCT_FROM_DATABASE=NetVista Full Width Keyboard - -usb:v04B3p3100* - ID_PRODUCT_FROM_DATABASE=NetVista Mouse - -usb:v04B3p3103* - ID_PRODUCT_FROM_DATABASE=ScrollPoint Pro Mouse - -usb:v04B3p3104* - ID_PRODUCT_FROM_DATABASE=ScrollPoint Wireless Mouse - -usb:v04B3p3105* - ID_PRODUCT_FROM_DATABASE=ScrollPoint Optical (HID) - -usb:v04B3p3107* - ID_PRODUCT_FROM_DATABASE=ThinkPad 800dpi Optical Travel Mouse - -usb:v04B3p3108* - ID_PRODUCT_FROM_DATABASE=800dpi Optical Mouse w/ Scroll Point - -usb:v04B3p3109* - ID_PRODUCT_FROM_DATABASE=Optical ScrollPoint Pro Mouse - -usb:v04B3p310B* - ID_PRODUCT_FROM_DATABASE=Red Wheel Mouse - -usb:v04B3p310C* - ID_PRODUCT_FROM_DATABASE=Wheel Mouse - -usb:v04B3p4427* - ID_PRODUCT_FROM_DATABASE=Portable CD ROM - -usb:v04B3p4482* - ID_PRODUCT_FROM_DATABASE=Serial Converter - -usb:v04B3p4485* - ID_PRODUCT_FROM_DATABASE=Serial Converter - -usb:v04B3p4525* - ID_PRODUCT_FROM_DATABASE=Double sided CRT - -usb:v04B3p4535* - ID_PRODUCT_FROM_DATABASE=4610 Suremark Printer - -usb:v04B3p4550* - ID_PRODUCT_FROM_DATABASE=NVRAM (128 KB) - -usb:v04B3p4554* - ID_PRODUCT_FROM_DATABASE=Cash Drawer - -usb:v04B3p4580* - ID_PRODUCT_FROM_DATABASE=Hub w/ NVRAM - -usb:v04B3p4581* - ID_PRODUCT_FROM_DATABASE=4800-2xx Hub w/ Cash Drawer - -usb:v04B3p4604* - ID_PRODUCT_FROM_DATABASE=Keyboard w/ Card Reader - -usb:v04B3p4671* - ID_PRODUCT_FROM_DATABASE=4820 LCD w/ MSR/KB - -usb:v04B4* - ID_VENDOR_FROM_DATABASE=Cypress Semiconductor Corp. - -usb:v04B4p0001* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v04B4p0002* - ID_PRODUCT_FROM_DATABASE=CY7C63x0x Thermometer - -usb:v04B4p0033* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v04B4p0100* - ID_PRODUCT_FROM_DATABASE=Cino FuzzyScan F760-B - -usb:v04B4p0101* - ID_PRODUCT_FROM_DATABASE=Keyboard/Hub - -usb:v04B4p0102* - ID_PRODUCT_FROM_DATABASE=Keyboard with APM - -usb:v04B4p0130* - ID_PRODUCT_FROM_DATABASE=MyIRC Remote Receiver - -usb:v04B4p0306* - ID_PRODUCT_FROM_DATABASE=Telephone Receiver - -usb:v04B4p0407* - ID_PRODUCT_FROM_DATABASE=Optical Skype Mouse - -usb:v04B4p0BAD* - ID_PRODUCT_FROM_DATABASE=MetaGeek Wi-Spy - -usb:v04B4p1002* - ID_PRODUCT_FROM_DATABASE=CY7C63001 R100 FM Radio - -usb:v04B4p1006* - ID_PRODUCT_FROM_DATABASE=Human Interface Device - -usb:v04B4p2050* - ID_PRODUCT_FROM_DATABASE=hub - -usb:v04B4p2830* - ID_PRODUCT_FROM_DATABASE=Opera1 DVB-S (cold state) - -usb:v04B4p4381* - ID_PRODUCT_FROM_DATABASE=SCAPS USC-1 Scanner Controller - -usb:v04B4p4611* - ID_PRODUCT_FROM_DATABASE=Storage Adapter FX2 (CY) - -usb:v04B4p4616* - ID_PRODUCT_FROM_DATABASE=Flash Disk (TPP) - -usb:v04B4p5201* - ID_PRODUCT_FROM_DATABASE=Combi Keyboard-Hub (Hub) - -usb:v04B4p5202* - ID_PRODUCT_FROM_DATABASE=Combi Keyboard-Hub (Keyboard) - -usb:v04B4p5500* - ID_PRODUCT_FROM_DATABASE=HID->COM RS232 Adapter - -usb:v04B4p5A9B* - ID_PRODUCT_FROM_DATABASE=Dacal CD/DVD Library D-101/DC-300/DC-016RW - -usb:v04B4p6370* - ID_PRODUCT_FROM_DATABASE=ViewMate Desktop Mouse CC2201 - -usb:v04B4p6560* - ID_PRODUCT_FROM_DATABASE=CY7C65640 USB-2.0 "TetraHub" - -usb:v04B4p6830* - ID_PRODUCT_FROM_DATABASE=CY7C68300A EZ-USB AT2 USB 2.0 to ATA/ATAPI - -usb:v04B4p6831* - ID_PRODUCT_FROM_DATABASE=Storage Adapter ISD-300LP (CY) - -usb:v04B4p7417* - ID_PRODUCT_FROM_DATABASE=Wireless PC Lock/Ultra Mouse - -usb:v04B4p8329* - ID_PRODUCT_FROM_DATABASE=USB To keyboard/Mouse Converter - -usb:v04B4p8613* - ID_PRODUCT_FROM_DATABASE=CY7C68013 EZ-USB FX2 USB 2.0 Development Kit - -usb:v04B4p8614* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - -usb:v04B4p861F* - ID_PRODUCT_FROM_DATABASE=Anysee E30 USB 2.0 DVB-T Receiver - -usb:v04B4pBCA1* - ID_PRODUCT_FROM_DATABASE=Barcode Reader - -usb:v04B4pCC04* - ID_PRODUCT_FROM_DATABASE=Centor USB RACIA-ALVAR USB PORT - -usb:v04B4pCC06* - ID_PRODUCT_FROM_DATABASE=Centor-P RACIA-ALVAR USB PORT - -usb:v04B4pD5D5* - ID_PRODUCT_FROM_DATABASE=CY7C63x0x Zoltrix Z-Boxer GamePad - -usb:v04B4pDE61* - ID_PRODUCT_FROM_DATABASE=Barcode Reader - -usb:v04B4pDE64* - ID_PRODUCT_FROM_DATABASE=Barcode Reader - -usb:v04B4pF000* - ID_PRODUCT_FROM_DATABASE=CY30700 Licorice evaluation board - -usb:v04B4pF111* - ID_PRODUCT_FROM_DATABASE=CY8CKIT-002 PSoC MiniProg3 Rev A Program and debug kit - -usb:v04B4pF115* - ID_PRODUCT_FROM_DATABASE=PSoC FirstTouch Programmer - -usb:v04B4pFD13* - ID_PRODUCT_FROM_DATABASE=Programmable power socket - -usb:v04B5* - ID_VENDOR_FROM_DATABASE=ROHM LSI Systems USA, LLC - -usb:v04B5p3064* - ID_PRODUCT_FROM_DATABASE=Hantek DSO-3064 - -usb:v04B6* - ID_VENDOR_FROM_DATABASE=Hint Corp. - -usb:v04B7* - ID_VENDOR_FROM_DATABASE=Compal Electronics, Inc. - -usb:v04B8* - ID_VENDOR_FROM_DATABASE=Seiko Epson Corp. - -usb:v04B8p0001* - ID_PRODUCT_FROM_DATABASE=Stylus Color 740 / Photo 750 - -usb:v04B8p0002* - ID_PRODUCT_FROM_DATABASE=ISD Smart Cable for Mac - -usb:v04B8p0003* - ID_PRODUCT_FROM_DATABASE=ISD Smart Cable - -usb:v04B8p0004* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04B8p0005* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04B8p0006* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04B8p0007* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04B8p0015* - ID_PRODUCT_FROM_DATABASE=Stylus Photo R3000 - -usb:v04B8p0101* - ID_PRODUCT_FROM_DATABASE=GT-7000U [Perfection 636] - -usb:v04B8p0102* - ID_PRODUCT_FROM_DATABASE=GT-2200 - -usb:v04B8p0103* - ID_PRODUCT_FROM_DATABASE=GT-6600U [Perfection 610] - -usb:v04B8p0104* - ID_PRODUCT_FROM_DATABASE=GT-7600UF [Perfection 1200U/1200U Photo] - -usb:v04B8p0105* - ID_PRODUCT_FROM_DATABASE=Stylus Scan 2000 - -usb:v04B8p0106* - ID_PRODUCT_FROM_DATABASE=Stylus Scan 2500 - -usb:v04B8p0107* - ID_PRODUCT_FROM_DATABASE=ES-2000 [Expression 1600U] - -usb:v04B8p0108* - ID_PRODUCT_FROM_DATABASE=CC-700 - -usb:v04B8p0109* - ID_PRODUCT_FROM_DATABASE=ES-8500 [Expression 1640 XL] - -usb:v04B8p010A* - ID_PRODUCT_FROM_DATABASE=GT-8700/GT-8700F [Perfection 1640SU/1640SU PHOTO] - -usb:v04B8p010B* - ID_PRODUCT_FROM_DATABASE=GT-7700U [Perfection 1240U] - -usb:v04B8p010C* - ID_PRODUCT_FROM_DATABASE=GT-6700U [Perfection 640] - -usb:v04B8p010D* - ID_PRODUCT_FROM_DATABASE=CC-500L - -usb:v04B8p010E* - ID_PRODUCT_FROM_DATABASE=ES-2200 [Perfection 1680] - -usb:v04B8p010F* - ID_PRODUCT_FROM_DATABASE=GT-7200U [Perfection 1250/1250 PHOTO] - -usb:v04B8p0110* - ID_PRODUCT_FROM_DATABASE=GT-8200U/GT-8200UF [Perfection 1650/1650 PHOTO] - -usb:v04B8p0112* - ID_PRODUCT_FROM_DATABASE=GT-9700F [Perfection 2450 PHOTO] - -usb:v04B8p0114* - ID_PRODUCT_FROM_DATABASE=Perfection 660 - -usb:v04B8p0116* - ID_PRODUCT_FROM_DATABASE=GT-9400UF [Perfection 3170] - -usb:v04B8p0118* - ID_PRODUCT_FROM_DATABASE=GT-F600 [Perfection 4180] - -usb:v04B8p0119* - ID_PRODUCT_FROM_DATABASE=GT-X750 [Perfection 4490 Photo] - -usb:v04B8p011A* - ID_PRODUCT_FROM_DATABASE=CC-550L [1000 ICS] - -usb:v04B8p011B* - ID_PRODUCT_FROM_DATABASE=GT-9300UF [Perfection 2400 PHOTO] - -usb:v04B8p011C* - ID_PRODUCT_FROM_DATABASE=GT-9800F [Perfection 3200] - -usb:v04B8p011D* - ID_PRODUCT_FROM_DATABASE=GT-7300U [Perfection 1260/1260 PHOTO] - -usb:v04B8p011E* - ID_PRODUCT_FROM_DATABASE=GT-8300UF [Perfection 1660 PHOTO] - -usb:v04B8p011F* - ID_PRODUCT_FROM_DATABASE=GT-8400UF [Perfection 1670/1670 PHOTO] - -usb:v04B8p0120* - ID_PRODUCT_FROM_DATABASE=GT-7400U [Perfection 1270] - -usb:v04B8p0121* - ID_PRODUCT_FROM_DATABASE=GT-F500/GT-F550 [Perfection 2480/2580 PHOTO] - -usb:v04B8p0122* - ID_PRODUCT_FROM_DATABASE=GT-F520/GT-F570 [Perfection 3590 PHOTO] - -usb:v04B8p0126* - ID_PRODUCT_FROM_DATABASE=ES-7000H [GT-15000] - -usb:v04B8p0128* - ID_PRODUCT_FROM_DATABASE=GT-X700 [Perfection 4870] - -usb:v04B8p0129* - ID_PRODUCT_FROM_DATABASE=ES-10000G [Expression 10000XL] - -usb:v04B8p012A* - ID_PRODUCT_FROM_DATABASE=GT-X800 [Perfection 4990 PHOTO] - -usb:v04B8p012B* - ID_PRODUCT_FROM_DATABASE=ES-H300 [GT-2500] - -usb:v04B8p012C* - ID_PRODUCT_FROM_DATABASE=GT-X900 [Perfection V700/V750 Photo] - -usb:v04B8p012D* - ID_PRODUCT_FROM_DATABASE=GT-F650 [GT-S600/Perfection V10/V100] - -usb:v04B8p012E* - ID_PRODUCT_FROM_DATABASE=GT-F670 [Perfection V200 Photo] - -usb:v04B8p012F* - ID_PRODUCT_FROM_DATABASE=GT-F700 [Perfection V350] - -usb:v04B8p0130* - ID_PRODUCT_FROM_DATABASE=GT-X770 [Perfection V500] - -usb:v04B8p0131* - ID_PRODUCT_FROM_DATABASE=GT-F720 [GT-S620/Perfection V30/V300 Photo] - -usb:v04B8p0133* - ID_PRODUCT_FROM_DATABASE=GT-1500 [GT-D1000] - -usb:v04B8p0135* - ID_PRODUCT_FROM_DATABASE=GT-X970 - -usb:v04B8p0136* - ID_PRODUCT_FROM_DATABASE=ES-D400 [GT-S80] - -usb:v04B8p0137* - ID_PRODUCT_FROM_DATABASE=ES-D200 [GT-S50] - -usb:v04B8p0138* - ID_PRODUCT_FROM_DATABASE=ES-H7200 [GT-20000] - -usb:v04B8p013A* - ID_PRODUCT_FROM_DATABASE=GT-X820 [Perfection V600 Photo] - -usb:v04B8p0142* - ID_PRODUCT_FROM_DATABASE=GT-F730 [GT-S630/Perfection V33/V330 Photo] - -usb:v04B8p0143* - ID_PRODUCT_FROM_DATABASE=GT-S55 - -usb:v04B8p0144* - ID_PRODUCT_FROM_DATABASE=GT-S85 - -usb:v04B8p0202* - ID_PRODUCT_FROM_DATABASE=Receipt Printer M129C/TM-T70 - -usb:v04B8p0401* - ID_PRODUCT_FROM_DATABASE=CP 800 Digital Camera - -usb:v04B8p0402* - ID_PRODUCT_FROM_DATABASE=PhotoPC 850z - -usb:v04B8p0403* - ID_PRODUCT_FROM_DATABASE=PhotoPC 3000z - -usb:v04B8p0509* - ID_PRODUCT_FROM_DATABASE=JVC PIX-MC10 - -usb:v04B8p0601* - ID_PRODUCT_FROM_DATABASE=Stylus Photo 875DC Card Reader - -usb:v04B8p0602* - ID_PRODUCT_FROM_DATABASE=Stylus Photo 895 Card Reader - -usb:v04B8p0801* - ID_PRODUCT_FROM_DATABASE=CC-600PX [Stylus CX5200/CX5400/CX6600] - -usb:v04B8p0802* - ID_PRODUCT_FROM_DATABASE=CC-570L [Stylus CX3100/CX3200] - -usb:v04B8p0803* - ID_PRODUCT_FROM_DATABASE=Printer (Composite Device) - -usb:v04B8p0804* - ID_PRODUCT_FROM_DATABASE=Storage Device - -usb:v04B8p0805* - ID_PRODUCT_FROM_DATABASE=Stylus CX6300/CX6400 - -usb:v04B8p0806* - ID_PRODUCT_FROM_DATABASE=PM-A850 [Stylus Photo RX600/610] - -usb:v04B8p0807* - ID_PRODUCT_FROM_DATABASE=Stylus Photo RX500/510 - -usb:v04B8p0808* - ID_PRODUCT_FROM_DATABASE=Stylus CX5200/CX5300/CX5400 - -usb:v04B8p0809* - ID_PRODUCT_FROM_DATABASE=Storage Device - -usb:v04B8p080A* - ID_PRODUCT_FROM_DATABASE=F-3200 - -usb:v04B8p080C* - ID_PRODUCT_FROM_DATABASE=ME100 [Stylus CX1500] - -usb:v04B8p080D* - ID_PRODUCT_FROM_DATABASE=Stylus CX4500/4600 - -usb:v04B8p080E* - ID_PRODUCT_FROM_DATABASE=PX-A550 [CX-3500/3600/3650 MFP] - -usb:v04B8p080F* - ID_PRODUCT_FROM_DATABASE=Stylus Photo RX420/RX425/RX430 - -usb:v04B8p0810* - ID_PRODUCT_FROM_DATABASE=PM-A900 [Stylus Photo RX700] - -usb:v04B8p0811* - ID_PRODUCT_FROM_DATABASE=PM-A870 [Stylus Photo RX620/RX630] - -usb:v04B8p0812* - ID_PRODUCT_FROM_DATABASE=MFP Composite Device - -usb:v04B8p0813* - ID_PRODUCT_FROM_DATABASE=Stylus CX6500/6600 - -usb:v04B8p0814* - ID_PRODUCT_FROM_DATABASE=PM-A700 - -usb:v04B8p0815* - ID_PRODUCT_FROM_DATABASE=LP-A500 [AcuLaser CX1] - -usb:v04B8p0816* - ID_PRODUCT_FROM_DATABASE=Printer (Composite Device) - -usb:v04B8p0817* - ID_PRODUCT_FROM_DATABASE=LP-M5500/LP-M5500F - -usb:v04B8p0818* - ID_PRODUCT_FROM_DATABASE=Stylus CX3700/CX3800/DX3800 - -usb:v04B8p0819* - ID_PRODUCT_FROM_DATABASE=PX-A650 [Stylus CX4700/CX4800/DX4800/DX4850] - -usb:v04B8p081A* - ID_PRODUCT_FROM_DATABASE=PM-A750 [Stylus Photo RX520/RX530] - -usb:v04B8p081B* - ID_PRODUCT_FROM_DATABASE=MFP Composite Device - -usb:v04B8p081C* - ID_PRODUCT_FROM_DATABASE=PM-A890 [Stylus Photo RX640/RX650] - -usb:v04B8p081D* - ID_PRODUCT_FROM_DATABASE=PM-A950 - -usb:v04B8p081E* - ID_PRODUCT_FROM_DATABASE=MFP Composite Device - -usb:v04B8p081F* - ID_PRODUCT_FROM_DATABASE=Stylus CX7700/7800 - -usb:v04B8p0820* - ID_PRODUCT_FROM_DATABASE=Stylus CX4100/CX4200/DX4200 - -usb:v04B8p0821* - ID_PRODUCT_FROM_DATABASE=Stylus CX5700F/CX5800F - -usb:v04B8p0822* - ID_PRODUCT_FROM_DATABASE=Storage Device - -usb:v04B8p0823* - ID_PRODUCT_FROM_DATABASE=MFP Composite Device - -usb:v04B8p0824* - ID_PRODUCT_FROM_DATABASE=Storage Device - -usb:v04B8p0825* - ID_PRODUCT_FROM_DATABASE=MFP Composite Device - -usb:v04B8p0826* - ID_PRODUCT_FROM_DATABASE=Storage Device - -usb:v04B8p0827* - ID_PRODUCT_FROM_DATABASE=PM-A820 [Stylus Photo RX560/RX580/RX585/RX590] - -usb:v04B8p0828* - ID_PRODUCT_FROM_DATABASE=PM-A970 - -usb:v04B8p0829* - ID_PRODUCT_FROM_DATABASE=PM-T990 - -usb:v04B8p082A* - ID_PRODUCT_FROM_DATABASE=PM-A920 - -usb:v04B8p082B* - ID_PRODUCT_FROM_DATABASE=Stylus CX5900/CX5000/DX5000/DX5050 - -usb:v04B8p082C* - ID_PRODUCT_FROM_DATABASE=Storage Device - -usb:v04B8p082D* - ID_PRODUCT_FROM_DATABASE=Storage Device - -usb:v04B8p082E* - ID_PRODUCT_FROM_DATABASE=PX-A720 [Stylus CX5900/CX6000/DX6000] - -usb:v04B8p082F* - ID_PRODUCT_FROM_DATABASE=PX-A620 [Stylus CX3900/DX4000/DX4050] - -usb:v04B8p0830* - ID_PRODUCT_FROM_DATABASE=ME 200 [Stylus CX2800/CX2900] - -usb:v04B8p0831* - ID_PRODUCT_FROM_DATABASE=Stylus CX6900F/CX7000F/DX7000F - -usb:v04B8p0832* - ID_PRODUCT_FROM_DATABASE=MFP Composite Device - -usb:v04B8p0833* - ID_PRODUCT_FROM_DATABASE=LP-M5600 - -usb:v04B8p0834* - ID_PRODUCT_FROM_DATABASE=LP-M6000 - -usb:v04B8p0835* - ID_PRODUCT_FROM_DATABASE=AcuLaser CX21 - -usb:v04B8p0836* - ID_PRODUCT_FROM_DATABASE=PM-T960 - -usb:v04B8p0837* - ID_PRODUCT_FROM_DATABASE=PM-A940 [Stylus Photo RX680/RX685/RX690] - -usb:v04B8p0838* - ID_PRODUCT_FROM_DATABASE=PX-A640 [CX7300/CX7400/DX7400] - -usb:v04B8p0839* - ID_PRODUCT_FROM_DATABASE=PX-A740 [CX8300/CX8400/DX8400] - -usb:v04B8p083A* - ID_PRODUCT_FROM_DATABASE=PX-FA700 [CX9300F/CX9400Fax/DX9400F] - -usb:v04B8p083B* - ID_PRODUCT_FROM_DATABASE=MFP Composite Device - -usb:v04B8p083C* - ID_PRODUCT_FROM_DATABASE=PM-A840S [Stylus Photo RX595/RX610] - -usb:v04B8p083D* - ID_PRODUCT_FROM_DATABASE=MFP Composite Device - -usb:v04B8p083E* - ID_PRODUCT_FROM_DATABASE=MFP Composite Device - -usb:v04B8p083F* - ID_PRODUCT_FROM_DATABASE=Stylus CX4300/CX4400/CX5500/CX5600/DX4400/DX4450 - -usb:v04B8p0841* - ID_PRODUCT_FROM_DATABASE=PX-401A [ME 300/Stylus NX100] - -usb:v04B8p0843* - ID_PRODUCT_FROM_DATABASE=LP-M5000 - -usb:v04B8p0844* - ID_PRODUCT_FROM_DATABASE=EP-901A/EP-901F [Artisan 800/Stylus Photo PX800FW] - -usb:v04B8p0846* - ID_PRODUCT_FROM_DATABASE=EP-801A [Artisan 700/Stylus Photo PX700W/TX700W] - -usb:v04B8p0847* - ID_PRODUCT_FROM_DATABASE=PX-601F [ME Office 700FW/Stylus Office BX600FW/TX600FW] - -usb:v04B8p0848* - ID_PRODUCT_FROM_DATABASE=ME Office 600F/Stylus Office BX300F/TX300F - -usb:v04B8p0849* - ID_PRODUCT_FROM_DATABASE=Stylus SX205 - -usb:v04B8p084A* - ID_PRODUCT_FROM_DATABASE=PX-501A [Stylus NX400] - -usb:v04B8p084D* - ID_PRODUCT_FROM_DATABASE=PX-402A [Stylus SX115/Stylus NX110 Series] - -usb:v04B8p084F* - ID_PRODUCT_FROM_DATABASE=ME OFFICE 510 - -usb:v04B8p0850* - ID_PRODUCT_FROM_DATABASE=EP-702A [Stylus Photo PX650/TX650 Series] - -usb:v04B8p0851* - ID_PRODUCT_FROM_DATABASE=Stylus SX410 - -usb:v04B8p0852* - ID_PRODUCT_FROM_DATABASE=EP-802A [Artisan 710 Series/Stylus Photo PX710W/TX720W Series] - -usb:v04B8p0853* - ID_PRODUCT_FROM_DATABASE=EP-902A [Artisan 810 Series/Stylus Photo PX810FW Series] - -usb:v04B8p0854* - ID_PRODUCT_FROM_DATABASE=ME OFFICE 650FN Series/Stylus Office BX310FN/TX520FN Series - -usb:v04B8p0855* - ID_PRODUCT_FROM_DATABASE=PX-602F [Stylus Office BX610FW/TX620FW Series] - -usb:v04B8p0856* - ID_PRODUCT_FROM_DATABASE=PX-502A [Stylus SX515W] - -usb:v04B8p085C* - ID_PRODUCT_FROM_DATABASE=ME 320/330 Series [Stylus SX125] - -usb:v04B8p085D* - ID_PRODUCT_FROM_DATABASE=PX-603F [ME OFFICE 960FWD Series/Stylus Office BX625FWD/TX620FWD Series] - -usb:v04B8p085E* - ID_PRODUCT_FROM_DATABASE=PX-503A [ME OFFICE 900WD Series/Stylus Office BX525WD] - -usb:v04B8p085F* - ID_PRODUCT_FROM_DATABASE=Stylus Office BX320FW/TX525FW Series - -usb:v04B8p0860* - ID_PRODUCT_FROM_DATABASE=EP-903A/EP-903F [Artisan 835/Stylus Photo PX820FWD Series] - -usb:v04B8p0861* - ID_PRODUCT_FROM_DATABASE=EP-803A/EP-803AW [Artisan 725/Stylus Photo PX720WD/TX720WD Series] - -usb:v04B8p0862* - ID_PRODUCT_FROM_DATABASE=EP-703A [Stylus Photo PX660 Series] - -usb:v04B8p0863* - ID_PRODUCT_FROM_DATABASE=ME OFFICE 620F Series/Stylus Office BX305F/BX305FW/TX320F - -usb:v04B8p0864* - ID_PRODUCT_FROM_DATABASE=ME OFFICE 560W Series - -usb:v04B8p0865* - ID_PRODUCT_FROM_DATABASE=ME OFFICE 520 Series - -usb:v04B8p0866* - ID_PRODUCT_FROM_DATABASE=AcuLaser MX20DN/MX20DNF/MX21DNF - -usb:v04B8p0869* - ID_PRODUCT_FROM_DATABASE=PX-1600F - -usb:v04B8p086A* - ID_PRODUCT_FROM_DATABASE=PX-673F [Stylus Office BX925FWD] - -usb:v04B8p0870* - ID_PRODUCT_FROM_DATABASE=Stylus Office BX305FW Plus - -usb:v04B8p0871* - ID_PRODUCT_FROM_DATABASE=K200 Series - -usb:v04B8p0872* - ID_PRODUCT_FROM_DATABASE=K300 Series - -usb:v04B8p0873* - ID_PRODUCT_FROM_DATABASE=L200 Series - -usb:v04B8p0878* - ID_PRODUCT_FROM_DATABASE=EP-704A - -usb:v04B8p0879* - ID_PRODUCT_FROM_DATABASE=EP-904A/EP-904F [Artisan 837/Stylus Photo PX830FWD Series] - -usb:v04B8p087B* - ID_PRODUCT_FROM_DATABASE=EP-804A/EP-804AR/EP-804AW [Stylus Photo PX730WD/Artisan 730 Series] - -usb:v04B8p087C* - ID_PRODUCT_FROM_DATABASE=PX-1700F - -usb:v04B8p087D* - ID_PRODUCT_FROM_DATABASE=PX-B750F - -usb:v04B8p087F* - ID_PRODUCT_FROM_DATABASE=PX-403A - -usb:v04B8p0880* - ID_PRODUCT_FROM_DATABASE=PX-434A [Stylus NX330 Series] - -usb:v04B8p0881* - ID_PRODUCT_FROM_DATABASE=PX-404A [ME OFFICE 535] - -usb:v04B8p0883* - ID_PRODUCT_FROM_DATABASE=ME 340 Series/Stylus NX130 Series - -usb:v04B8p0884* - ID_PRODUCT_FROM_DATABASE=Stylus NX430W Series - -usb:v04B8p0885* - ID_PRODUCT_FROM_DATABASE=Stylus NX230 Series - -usb:v04B8p088F* - ID_PRODUCT_FROM_DATABASE=Stylus Office BX635FWD - -usb:v04B8p0890* - ID_PRODUCT_FROM_DATABASE=ME OFFICE 940FW Series/Stylus Office BX630FW Series - -usb:v04B8p0891* - ID_PRODUCT_FROM_DATABASE=Stylus Office BX535WD - -usb:v04B8p0892* - ID_PRODUCT_FROM_DATABASE=Stylus Office BX935FWD - -usb:v04B8p0893* - ID_PRODUCT_FROM_DATABASE=EP-774A - -usb:v04B9* - ID_VENDOR_FROM_DATABASE=Rainbow Technologies, Inc. - -usb:v04B9p0300* - ID_PRODUCT_FROM_DATABASE=SafeNet USB SuperPro/UltraPro - -usb:v04B9p1000* - ID_PRODUCT_FROM_DATABASE=iKey 1000 Token - -usb:v04B9p1001* - ID_PRODUCT_FROM_DATABASE=iKey 1200 Token - -usb:v04B9p1002* - ID_PRODUCT_FROM_DATABASE=iKey Token - -usb:v04B9p1003* - ID_PRODUCT_FROM_DATABASE=iKey Token - -usb:v04B9p1004* - ID_PRODUCT_FROM_DATABASE=iKey Token - -usb:v04B9p1005* - ID_PRODUCT_FROM_DATABASE=iKey Token - -usb:v04B9p1006* - ID_PRODUCT_FROM_DATABASE=iKey Token - -usb:v04B9p1200* - ID_PRODUCT_FROM_DATABASE=iKey 2000 Token - -usb:v04B9p1201* - ID_PRODUCT_FROM_DATABASE=iKey Token - -usb:v04B9p1202* - ID_PRODUCT_FROM_DATABASE=iKey 2032 Token - -usb:v04B9p1203* - ID_PRODUCT_FROM_DATABASE=iKey Token - -usb:v04B9p1204* - ID_PRODUCT_FROM_DATABASE=iKey Token - -usb:v04B9p1205* - ID_PRODUCT_FROM_DATABASE=iKey Token - -usb:v04B9p1206* - ID_PRODUCT_FROM_DATABASE=iKey 4000 Token - -usb:v04B9p1300* - ID_PRODUCT_FROM_DATABASE=iKey 3000 Token - -usb:v04B9p1301* - ID_PRODUCT_FROM_DATABASE=iKey 3000 - -usb:v04B9p1302* - ID_PRODUCT_FROM_DATABASE=iKey Token - -usb:v04B9p1303* - ID_PRODUCT_FROM_DATABASE=iKey Token - -usb:v04B9p1304* - ID_PRODUCT_FROM_DATABASE=iKey Token - -usb:v04B9p1305* - ID_PRODUCT_FROM_DATABASE=iKey Token - -usb:v04B9p1306* - ID_PRODUCT_FROM_DATABASE=iKey Token - -usb:v04BA* - ID_VENDOR_FROM_DATABASE=Toucan Systems, Ltd - -usb:v04BB* - ID_VENDOR_FROM_DATABASE=I-O Data Device, Inc. - -usb:v04BBp0101* - ID_PRODUCT_FROM_DATABASE=USB2-IDE/ATAPI Bridge Adapter - -usb:v04BBp0201* - ID_PRODUCT_FROM_DATABASE=USB2-IDE/ATAPI Bridge Adapter - -usb:v04BBp0204* - ID_PRODUCT_FROM_DATABASE=DVD Multi-plus unit iU-CD2 - -usb:v04BBp0206* - ID_PRODUCT_FROM_DATABASE=DVD Multi-plus unit DVR-UEH8 - -usb:v04BBp0301* - ID_PRODUCT_FROM_DATABASE=Storage Device - -usb:v04BBp0314* - ID_PRODUCT_FROM_DATABASE=USB-SSMRW SD-card - -usb:v04BBp0319* - ID_PRODUCT_FROM_DATABASE=USB2-IDE/ATAPI Bridge Adapter - -usb:v04BBp031A* - ID_PRODUCT_FROM_DATABASE=USB2-IDE/ATAPI Bridge Adapter - -usb:v04BBp031B* - ID_PRODUCT_FROM_DATABASE=USB2-IDE/ATAPI Bridge Adapter - -usb:v04BBp031E* - ID_PRODUCT_FROM_DATABASE=USB-SDRW SD-card - -usb:v04BBp0502* - ID_PRODUCT_FROM_DATABASE=Nogatech Live! (BT) - -usb:v04BBp0528* - ID_PRODUCT_FROM_DATABASE=GV-USB Video Capture - -usb:v04BBp0901* - ID_PRODUCT_FROM_DATABASE=USB ETT - -usb:v04BBp0904* - ID_PRODUCT_FROM_DATABASE=ET/TX Ethernet [pegasus] - -usb:v04BBp0913* - ID_PRODUCT_FROM_DATABASE=ET/TX-S Ethernet [pegasus2] - -usb:v04BBp0919* - ID_PRODUCT_FROM_DATABASE=USB WN-B11 - -usb:v04BBp0922* - ID_PRODUCT_FROM_DATABASE=IOData AirPort WN-B11/USBS 802.11b - -usb:v04BBp0930* - ID_PRODUCT_FROM_DATABASE=ETG-US2 - -usb:v04BBp0937* - ID_PRODUCT_FROM_DATABASE=WN-WAG/USL Wireless LAN Adapter - -usb:v04BBp0938* - ID_PRODUCT_FROM_DATABASE=WN-G54/USL Wireless LAN Adapter - -usb:v04BBp093B* - ID_PRODUCT_FROM_DATABASE=WN-GDN/USB - -usb:v04BBp093F* - ID_PRODUCT_FROM_DATABASE=WNGDNUS2 802.11n - -usb:v04BBp0944* - ID_PRODUCT_FROM_DATABASE=WHG-AGDN/US Wireless LAN Adapter - -usb:v04BBp0945* - ID_PRODUCT_FROM_DATABASE=WN-GDN/US3 Wireless LAN Adapter - -usb:v04BBp0947* - ID_PRODUCT_FROM_DATABASE=WN-G150U Wireless LAN Adapter - -usb:v04BBp0948* - ID_PRODUCT_FROM_DATABASE=WN-G300U Wireless LAN Adapter - -usb:v04BBp0A03* - ID_PRODUCT_FROM_DATABASE=Serial USB-RSAQ1 - -usb:v04BBp0A07* - ID_PRODUCT_FROM_DATABASE=USB2-iCN Adapter - -usb:v04BBp0A08* - ID_PRODUCT_FROM_DATABASE=USB2-iCN Adapter - -usb:v04BBp0C01* - ID_PRODUCT_FROM_DATABASE=FM-10 Pro Disk - -usb:v04BD* - ID_VENDOR_FROM_DATABASE=Toshiba Electronics Taiwan Corp. - -usb:v04BE* - ID_VENDOR_FROM_DATABASE=Telia Research AB - -usb:v04BF* - ID_VENDOR_FROM_DATABASE=TDK Corp. - -usb:v04BFp0100* - ID_PRODUCT_FROM_DATABASE=MediaReader CF - -usb:v04BFp0115* - ID_PRODUCT_FROM_DATABASE=USB-PDC Adapter UPA9664 - -usb:v04BFp0116* - ID_PRODUCT_FROM_DATABASE=USB-cdmaOne Adapter UCA1464 - -usb:v04BFp0117* - ID_PRODUCT_FROM_DATABASE=USB-PHS Adapter UHA6400 - -usb:v04BFp0118* - ID_PRODUCT_FROM_DATABASE=USB-PHS Adapter UPA6400 - -usb:v04BFp0135* - ID_PRODUCT_FROM_DATABASE=MediaReader Dual - -usb:v04BFp0202* - ID_PRODUCT_FROM_DATABASE=73S1121F Smart Card Reader- - -usb:v04BFp0309* - ID_PRODUCT_FROM_DATABASE=Bluetooth USB dongle - -usb:v04BFp030A* - ID_PRODUCT_FROM_DATABASE=IBM Bluetooth Ultraport Module - -usb:v04BFp030B* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v04BFp030C* - ID_PRODUCT_FROM_DATABASE=Ultraport Bluetooth Device - -usb:v04BFp0310* - ID_PRODUCT_FROM_DATABASE=Integrated Bluetooth - -usb:v04BFp0311* - ID_PRODUCT_FROM_DATABASE=Integrated Bluetooth Device - -usb:v04BFp0317* - ID_PRODUCT_FROM_DATABASE=Bluetooth UltraPort Module from IBM - -usb:v04BFp0318* - ID_PRODUCT_FROM_DATABASE=IBM Integrated Bluetooth - -usb:v04BFp0319* - ID_PRODUCT_FROM_DATABASE=Bluetooth Adapter - -usb:v04BFp0320* - ID_PRODUCT_FROM_DATABASE=Bluetooth Adapter - -usb:v04BFp0321* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v04BFp0A28* - ID_PRODUCT_FROM_DATABASE=INDI AV-IN Device - -usb:v04C1* - ID_VENDOR_FROM_DATABASE=U.S. Robotics (3Com) - -usb:v04C1p0020* - ID_PRODUCT_FROM_DATABASE=56K Voice Pro - -usb:v04C1p0022* - ID_PRODUCT_FROM_DATABASE=56K Voice Pro - -usb:v04C1p007E* - ID_PRODUCT_FROM_DATABASE=ISDN TA - -usb:v04C1p0082* - ID_PRODUCT_FROM_DATABASE=OfficeConnect Analog Modem - -usb:v04C1p008F* - ID_PRODUCT_FROM_DATABASE=Pro ISDN TA - -usb:v04C1p0097* - ID_PRODUCT_FROM_DATABASE=OfficeConnect Analog - -usb:v04C1p009D* - ID_PRODUCT_FROM_DATABASE=HomeConnect Webcam [vicam] - -usb:v04C1p00A9* - ID_PRODUCT_FROM_DATABASE=ISDN Pro TA-U - -usb:v04C1p00B9* - ID_PRODUCT_FROM_DATABASE=HomeConnect IDSL Modem - -usb:v04C1p3021* - ID_PRODUCT_FROM_DATABASE=56k Voice FaxModem Pro - -usb:v04C2* - ID_VENDOR_FROM_DATABASE=Methode Electronics Far East PTE, Ltd - -usb:v04C3* - ID_VENDOR_FROM_DATABASE=Maxi Switch, Inc. - -usb:v04C3p1102* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v04C3p2102* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v04C4* - ID_VENDOR_FROM_DATABASE=Lockheed Martin Energy Research - -usb:v04C5* - ID_VENDOR_FROM_DATABASE=Fujitsu, Ltd - -usb:v04C5p1029* - ID_PRODUCT_FROM_DATABASE=fi-4010c Scanner - -usb:v04C5p1033* - ID_PRODUCT_FROM_DATABASE=fi-4110CU - -usb:v04C5p1041* - ID_PRODUCT_FROM_DATABASE=fi-4120c Scanner - -usb:v04C5p1042* - ID_PRODUCT_FROM_DATABASE=fi-4220c Scanner - -usb:v04C5p105B* - ID_PRODUCT_FROM_DATABASE=AH-F401U Air H device - -usb:v04C5p1096* - ID_PRODUCT_FROM_DATABASE=fi-5110EOX - -usb:v04C5p1097* - ID_PRODUCT_FROM_DATABASE=fi-5110C - -usb:v04C5p10AE* - ID_PRODUCT_FROM_DATABASE=fi-4120C2 - -usb:v04C5p10AF* - ID_PRODUCT_FROM_DATABASE=fi-4220C2 - -usb:v04C5p10E0* - ID_PRODUCT_FROM_DATABASE=fi-5120c Scanner - -usb:v04C5p10E1* - ID_PRODUCT_FROM_DATABASE=fi-5220C - -usb:v04C5p10E7* - ID_PRODUCT_FROM_DATABASE=fi-5900C - -usb:v04C5p10FE* - ID_PRODUCT_FROM_DATABASE=S500 - -usb:v04C5p1150* - ID_PRODUCT_FROM_DATABASE=fi-6230 - -usb:v04C6* - ID_VENDOR_FROM_DATABASE=Toshiba America Electronic Components - -usb:v04C7* - ID_VENDOR_FROM_DATABASE=Micro Macro Technologies - -usb:v04C8* - ID_VENDOR_FROM_DATABASE=Konica Corp. - -usb:v04C8p0720* - ID_PRODUCT_FROM_DATABASE=Digital Color Camera - -usb:v04C8p0721* - ID_PRODUCT_FROM_DATABASE=e-miniD Camera - -usb:v04C8p0722* - ID_PRODUCT_FROM_DATABASE=e-mini - -usb:v04C8p0723* - ID_PRODUCT_FROM_DATABASE=KD-200Z Camera - -usb:v04C8p0726* - ID_PRODUCT_FROM_DATABASE=KD-310Z Camera - -usb:v04C8p0728* - ID_PRODUCT_FROM_DATABASE=Revio C2 Mass Storage Device - -usb:v04C8p0729* - ID_PRODUCT_FROM_DATABASE=Revio C2 Digital Camera - -usb:v04C8p072C* - ID_PRODUCT_FROM_DATABASE=Revio KD20M - -usb:v04C8p072D* - ID_PRODUCT_FROM_DATABASE=Revio KD410Z - -usb:v04CA* - ID_VENDOR_FROM_DATABASE=Lite-On Technology Corp. - -usb:v04CAp1766* - ID_PRODUCT_FROM_DATABASE=HID Monitor Controls - -usb:v04CAp9304* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v04CApF01C* - ID_PRODUCT_FROM_DATABASE=TT1280DA DVB-T TV Tuner - -usb:v04CB* - ID_VENDOR_FROM_DATABASE=Fuji Photo Film Co., Ltd - -usb:v04CBp0100* - ID_PRODUCT_FROM_DATABASE=FinePix 30i/40i/50i, A101/201, 1300/2200, 1400/2400/2600/2800/4500/4700/4800/4900/6800/6900 Zoom - -usb:v04CBp0103* - ID_PRODUCT_FROM_DATABASE=FinePix NX-500/NX-700 printer - -usb:v04CBp0104* - ID_PRODUCT_FROM_DATABASE=FinePix A101, 2600/2800/4800/6800 Zoom (PC CAM) - -usb:v04CBp0108* - ID_PRODUCT_FROM_DATABASE=FinePix F601 Zoom (DSC) - -usb:v04CBp0109* - ID_PRODUCT_FROM_DATABASE=FinePix F601 Zoom (PC CAM) - -usb:v04CBp010A* - ID_PRODUCT_FROM_DATABASE=FinePix S602 (Pro) Zoom (DSC) - -usb:v04CBp010B* - ID_PRODUCT_FROM_DATABASE=FinePix S602 (Pro) Zoom (PC CAM) - -usb:v04CBp010D* - ID_PRODUCT_FROM_DATABASE=FinePix Digital Camera 020531 - -usb:v04CBp010E* - ID_PRODUCT_FROM_DATABASE=FinePix F402 Zoom (DSC) - -usb:v04CBp010F* - ID_PRODUCT_FROM_DATABASE=FinePix F402 Zoom (PC CAM) - -usb:v04CBp0110* - ID_PRODUCT_FROM_DATABASE=FinePix M603 Zoom (DSC) - -usb:v04CBp0111* - ID_PRODUCT_FROM_DATABASE=FinePix M603 Zoom (PC CAM) - -usb:v04CBp0112* - ID_PRODUCT_FROM_DATABASE=FinePix A202, A200 Zoom (DSC) - -usb:v04CBp0113* - ID_PRODUCT_FROM_DATABASE=FinePix A202, A200 Zoom (PC CAM) - -usb:v04CBp0114* - ID_PRODUCT_FROM_DATABASE=FinePix F401 Zoom (DSC) - -usb:v04CBp0115* - ID_PRODUCT_FROM_DATABASE=FinePix F401 Zoom (PC CAM) - -usb:v04CBp0116* - ID_PRODUCT_FROM_DATABASE=FinePix A203 Zoom (DSC) - -usb:v04CBp0117* - ID_PRODUCT_FROM_DATABASE=FinePix A203 Zoom (PC CAM) - -usb:v04CBp0118* - ID_PRODUCT_FROM_DATABASE=FinePix A303 Zoom (DSC) - -usb:v04CBp0119* - ID_PRODUCT_FROM_DATABASE=FinePix A303 Zoom (PC CAM) - -usb:v04CBp011A* - ID_PRODUCT_FROM_DATABASE=FinePix S304/3800 Zoom (DSC) - -usb:v04CBp011B* - ID_PRODUCT_FROM_DATABASE=FinePix S304/3800 Zoom (PC CAM) - -usb:v04CBp011C* - ID_PRODUCT_FROM_DATABASE=FinePix A204/2650 Zoom (DSC) - -usb:v04CBp011D* - ID_PRODUCT_FROM_DATABASE=FinePix A204/2650 Zoom (PC CAM) - -usb:v04CBp0120* - ID_PRODUCT_FROM_DATABASE=FinePix F700 Zoom (DSC) - -usb:v04CBp0121* - ID_PRODUCT_FROM_DATABASE=FinePix F700 Zoom (PC CAM) - -usb:v04CBp0122* - ID_PRODUCT_FROM_DATABASE=FinePix F410 Zoom (DSC) - -usb:v04CBp0123* - ID_PRODUCT_FROM_DATABASE=FinePix F410 Zoom (PC CAM) - -usb:v04CBp0124* - ID_PRODUCT_FROM_DATABASE=FinePix A310 Zoom (DSC) - -usb:v04CBp0125* - ID_PRODUCT_FROM_DATABASE=FinePix A310 Zoom (PC CAM) - -usb:v04CBp0126* - ID_PRODUCT_FROM_DATABASE=FinePix A210 Zoom (DSC) - -usb:v04CBp0127* - ID_PRODUCT_FROM_DATABASE=FinePix A210 Zoom (PC CAM) - -usb:v04CBp0128* - ID_PRODUCT_FROM_DATABASE=FinePix A205(S) Zoom (DSC) - -usb:v04CBp0129* - ID_PRODUCT_FROM_DATABASE=FinePix A205(S) Zoom (PC CAM) - -usb:v04CBp012A* - ID_PRODUCT_FROM_DATABASE=FinePix F610 Zoom (DSC) - -usb:v04CBp012B* - ID_PRODUCT_FROM_DATABASE=FinePix Digital Camera 030513 - -usb:v04CBp012C* - ID_PRODUCT_FROM_DATABASE=FinePix S7000 Zoom (DSC) - -usb:v04CBp012D* - ID_PRODUCT_FROM_DATABASE=FinePix S7000 Zoom (PC CAM) - -usb:v04CBp012F* - ID_PRODUCT_FROM_DATABASE=FinePix Digital Camera 030731 - -usb:v04CBp0130* - ID_PRODUCT_FROM_DATABASE=FinePix S5000 Zoom (DSC) - -usb:v04CBp0131* - ID_PRODUCT_FROM_DATABASE=FinePix S5000 Zoom (PC CAM) - -usb:v04CBp013B* - ID_PRODUCT_FROM_DATABASE=FinePix Digital Camera 030722 - -usb:v04CBp013C* - ID_PRODUCT_FROM_DATABASE=FinePix S3000 Zoom (DSC) - -usb:v04CBp013D* - ID_PRODUCT_FROM_DATABASE=FinePix S3000 Zoom (PC CAM) - -usb:v04CBp013E* - ID_PRODUCT_FROM_DATABASE=FinePix F420 Zoom (DSC) - -usb:v04CBp013F* - ID_PRODUCT_FROM_DATABASE=FinePix F420 Zoom (PC CAM) - -usb:v04CBp0142* - ID_PRODUCT_FROM_DATABASE=FinePix S7000 Zoom (PTP) - -usb:v04CBp0148* - ID_PRODUCT_FROM_DATABASE=FinePix A330 Zoom (DSC) - -usb:v04CBp0149* - ID_PRODUCT_FROM_DATABASE=FinePix A330 Zoom (UVC) - -usb:v04CBp014A* - ID_PRODUCT_FROM_DATABASE=FinePix A330 Zoom (PTP) - -usb:v04CBp014B* - ID_PRODUCT_FROM_DATABASE=FinePix A340 Zoom (DSC) - -usb:v04CBp014C* - ID_PRODUCT_FROM_DATABASE=FinePix A340 Zoom (UVC) - -usb:v04CBp0159* - ID_PRODUCT_FROM_DATABASE=FinePix F710 Zoom (DSC) - -usb:v04CBp0165* - ID_PRODUCT_FROM_DATABASE=FinePix S3500 Zoom (DSC) - -usb:v04CBp0168* - ID_PRODUCT_FROM_DATABASE=FinePix E500 Zoom (DSC) - -usb:v04CBp0169* - ID_PRODUCT_FROM_DATABASE=FinePix E500 Zoom (UVC) - -usb:v04CBp016B* - ID_PRODUCT_FROM_DATABASE=FinePix E510 Zoom (DSC) - -usb:v04CBp016C* - ID_PRODUCT_FROM_DATABASE=FinePix E510 Zoom (PC CAM) - -usb:v04CBp016E* - ID_PRODUCT_FROM_DATABASE=FinePix S5500 Zoom (DSC) - -usb:v04CBp016F* - ID_PRODUCT_FROM_DATABASE=FinePix S5500 Zoom (UVC) - -usb:v04CBp0171* - ID_PRODUCT_FROM_DATABASE=FinePix E550 Zoom (DSC) - -usb:v04CBp0172* - ID_PRODUCT_FROM_DATABASE=FinePix E550 Zoom (UVC) - -usb:v04CBp0177* - ID_PRODUCT_FROM_DATABASE=FinePix F10 (DSC) - -usb:v04CBp0179* - ID_PRODUCT_FROM_DATABASE=Finepix F10 (PTP) - -usb:v04CBp0186* - ID_PRODUCT_FROM_DATABASE=FinePix S5200/S5600 Zoom (DSC) - -usb:v04CBp0188* - ID_PRODUCT_FROM_DATABASE=FinePix S5200/S5600 Zoom (PTP) - -usb:v04CBp018E* - ID_PRODUCT_FROM_DATABASE=FinePix S9500 Zoom (DSC) - -usb:v04CBp018F* - ID_PRODUCT_FROM_DATABASE=FinePix S9500 Zoom (PTP) - -usb:v04CBp0192* - ID_PRODUCT_FROM_DATABASE=FinePix E900 Zoom (DSC) - -usb:v04CBp0193* - ID_PRODUCT_FROM_DATABASE=FinePix E900 Zoom (PTP) - -usb:v04CBp019B* - ID_PRODUCT_FROM_DATABASE=FinePix F30 (PTP) - -usb:v04CBp01AF* - ID_PRODUCT_FROM_DATABASE=FinePix A700 (PTP) - -usb:v04CBp01BF* - ID_PRODUCT_FROM_DATABASE=FinePix F6000fd/S6500fd Zoom (PTP) - -usb:v04CBp01C0* - ID_PRODUCT_FROM_DATABASE=FinePix F20 (PTP) - -usb:v04CBp01C1* - ID_PRODUCT_FROM_DATABASE=FinePix F31fd (PTP) - -usb:v04CBp01C4* - ID_PRODUCT_FROM_DATABASE=FinePix S5700 Zoom (PTP) - -usb:v04CBp01C5* - ID_PRODUCT_FROM_DATABASE=FinePix F40fd (PTP) - -usb:v04CBp01C6* - ID_PRODUCT_FROM_DATABASE=FinePix A820 Zoom (PTP) - -usb:v04CBp01D2* - ID_PRODUCT_FROM_DATABASE=FinePix A800 Zoom (PTP) - -usb:v04CBp01D3* - ID_PRODUCT_FROM_DATABASE=FinePix A920 (PTP) - -usb:v04CBp01D4* - ID_PRODUCT_FROM_DATABASE=FinePix F50fd (PTP) - -usb:v04CBp01D5* - ID_PRODUCT_FROM_DATABASE=FinePix F47 (PTP) - -usb:v04CBp01F7* - ID_PRODUCT_FROM_DATABASE=FinePix J250 (PTP) - -usb:v04CBp01FD* - ID_PRODUCT_FROM_DATABASE=A160 - -usb:v04CBp023E* - ID_PRODUCT_FROM_DATABASE=FinePix AX300 - -usb:v04CBp0240* - ID_PRODUCT_FROM_DATABASE=FinePix S2950 Digital Camera - -usb:v04CBp0241* - ID_PRODUCT_FROM_DATABASE=FinePix S3200 Digital Camera - -usb:v04CBp0278* - ID_PRODUCT_FROM_DATABASE=FinePix JV300 - -usb:v04CC* - ID_VENDOR_FROM_DATABASE=ST-Ericsson - -usb:v04CCp1122* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v04CCp1520* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Hub (Avocent KVM) - -usb:v04CCp1521* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Hub - -usb:v04CCp1A62* - ID_PRODUCT_FROM_DATABASE=GW Instek GSP-830 Spectrum Analyzer (HID) - -usb:v04CCp2323* - ID_PRODUCT_FROM_DATABASE=Ux500 serial debug port - -usb:v04CCp2533* - ID_PRODUCT_FROM_DATABASE=NFC device (PN533) - -usb:v04CCp8116* - ID_PRODUCT_FROM_DATABASE=Camera - -usb:v04CD* - ID_VENDOR_FROM_DATABASE=Tatung Co. Of America - -usb:v04CE* - ID_VENDOR_FROM_DATABASE=ScanLogic Corp. - -usb:v04CEp0002* - ID_PRODUCT_FROM_DATABASE=SL11R-IDE IDE Bridge - -usb:v04CEp0100* - ID_PRODUCT_FROM_DATABASE=USB2PRN Printer Class - -usb:v04CEp0300* - ID_PRODUCT_FROM_DATABASE=Phantom 336CX - C3 scanner - -usb:v04CEp04CE* - ID_PRODUCT_FROM_DATABASE=SL11DEMO, VID: 0x4ce, PID: 0x4ce - -usb:v04CEp07D1* - ID_PRODUCT_FROM_DATABASE=SL11R, VID: 0x4ce, PID: 0x07D1 - -usb:v04CF* - ID_VENDOR_FROM_DATABASE=Myson Century, Inc. - -usb:v04CFp0022* - ID_PRODUCT_FROM_DATABASE=OCZ Alchemy Series Elixir II Keyboard - -usb:v04CFp0800* - ID_PRODUCT_FROM_DATABASE=MTP800 Mass Storage Device - -usb:v04CFp8810* - ID_PRODUCT_FROM_DATABASE=CS8810 Mass Storage Device - -usb:v04CFp8811* - ID_PRODUCT_FROM_DATABASE=CS8811 Mass Storage Device - -usb:v04CFp8813* - ID_PRODUCT_FROM_DATABASE=CS8813 Mass Storage Device - -usb:v04CFp8818* - ID_PRODUCT_FROM_DATABASE=USB2.0 to ATAPI Bridge Controller - -usb:v04CFp8819* - ID_PRODUCT_FROM_DATABASE=USB 2.0 SD/MMC Reader - -usb:v04CFp9920* - ID_PRODUCT_FROM_DATABASE=CS8819A2-114 Mass Storage Device - -usb:v04D0* - ID_VENDOR_FROM_DATABASE=Digi International - -usb:v04D1* - ID_VENDOR_FROM_DATABASE=ITT Canon - -usb:v04D2* - ID_VENDOR_FROM_DATABASE=Altec Lansing Technologies - -usb:v04D2p0070* - ID_PRODUCT_FROM_DATABASE=ADA70 Speakers - -usb:v04D2p0305* - ID_PRODUCT_FROM_DATABASE=Non-Compliant Audio Device - -usb:v04D2p0311* - ID_PRODUCT_FROM_DATABASE=ADA-310 Speakers - -usb:v04D2p2060* - ID_PRODUCT_FROM_DATABASE=Claritel-i750 - vp - -usb:v04D2pFF05* - ID_PRODUCT_FROM_DATABASE=ADA-305 Speakers - -usb:v04D2pFF47* - ID_PRODUCT_FROM_DATABASE=Lansing HID Audio Controls - -usb:v04D2pFF49* - ID_PRODUCT_FROM_DATABASE=Lansing HID Audio Controls - -usb:v04D3* - ID_VENDOR_FROM_DATABASE=VidUS, Inc. - -usb:v04D4* - ID_VENDOR_FROM_DATABASE=LSI Logic, Inc. - -usb:v04D5* - ID_VENDOR_FROM_DATABASE=Forte Technologies, Inc. - -usb:v04D6* - ID_VENDOR_FROM_DATABASE=Mentor Graphics - -usb:v04D7* - ID_VENDOR_FROM_DATABASE=Oki Semiconductor - -usb:v04D7p1BE4* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v04D8* - ID_VENDOR_FROM_DATABASE=Microchip Technology, Inc. - -usb:v04D8p0002* - ID_PRODUCT_FROM_DATABASE=PicoLCD 20x2 - -usb:v04D8p0003* - ID_PRODUCT_FROM_DATABASE=PICkit 2 Microcontroller Programmer - -usb:v04D8p000A* - ID_PRODUCT_FROM_DATABASE=CDC RS-232 Emulation Demo - -usb:v04D8p000B* - ID_PRODUCT_FROM_DATABASE=PIC18F2550 (32K Flashable 10 Channel, 10 Bit A/D USB Microcontroller) - -usb:v04D8p0032* - ID_PRODUCT_FROM_DATABASE=PICkit1 - -usb:v04D8p0033* - ID_PRODUCT_FROM_DATABASE=PICkit2 - -usb:v04D8p0036* - ID_PRODUCT_FROM_DATABASE=PICkit Serial Analyzer - -usb:v04D8p00E0* - ID_PRODUCT_FROM_DATABASE=PIC32 Starter Board - -usb:v04D8p0A04* - ID_PRODUCT_FROM_DATABASE=AGP LIN Serial Analyzer - -usb:v04D8p8000* - ID_PRODUCT_FROM_DATABASE=In-Circuit Debugger - -usb:v04D8p8001* - ID_PRODUCT_FROM_DATABASE=ICD2 in-circuit debugger - -usb:v04D8p8101* - ID_PRODUCT_FROM_DATABASE=PIC24F Starter Kit - -usb:v04D8p8107* - ID_PRODUCT_FROM_DATABASE=Microstick II - -usb:v04D8p900A* - ID_PRODUCT_FROM_DATABASE=PICkit3 - -usb:v04D8pC001* - ID_PRODUCT_FROM_DATABASE=PicoLCD 20x4 - -usb:v04D8pF8DA* - ID_PRODUCT_FROM_DATABASE=Hughski Ltd. ColorHug - -usb:v04D8pFAFF* - ID_PRODUCT_FROM_DATABASE=Dangerous Prototypes BusPirate v4 Bootloader mode - -usb:v04D8pFB00* - ID_PRODUCT_FROM_DATABASE=Dangerous Prototypes BusPirate v4 - -usb:v04D8pFBB2* - ID_PRODUCT_FROM_DATABASE=GCUSB-nStep stepper motor controller - -usb:v04D8pFBBA* - ID_PRODUCT_FROM_DATABASE=DiscFerret Magnetic Disc Analyser (bootloader mode) - -usb:v04D8pFBBB* - ID_PRODUCT_FROM_DATABASE=DiscFerret Magnetic Disc Analyser (active mode) - -usb:v04D8pFC92* - ID_PRODUCT_FROM_DATABASE=Open Bench Logic Sniffer - -usb:v04D8pFFEF* - ID_PRODUCT_FROM_DATABASE=PICoPLC [APStech] - -usb:v04D9* - ID_VENDOR_FROM_DATABASE=Holtek Semiconductor, Inc. - -usb:v04D9p0022* - ID_PRODUCT_FROM_DATABASE=Portable Keyboard - -usb:v04D9p048E* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v04D9p0499* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v04D9p1203* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v04D9p1400* - ID_PRODUCT_FROM_DATABASE=PS/2 keyboard + mouse controller - -usb:v04D9p1503* - ID_PRODUCT_FROM_DATABASE=Shortboard Lefty - -usb:v04D9p1603* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v04D9p2013* - ID_PRODUCT_FROM_DATABASE=Keyboard [Das Keyboard] - -usb:v04D9p2221* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v04D9p2323* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v04D9p2832* - ID_PRODUCT_FROM_DATABASE=1channel Telephone line recorder - -usb:v04D9pA055* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v04DA* - ID_VENDOR_FROM_DATABASE=Panasonic (Matsushita) - -usb:v04DAp0901* - ID_PRODUCT_FROM_DATABASE=LS-120 Camera - -usb:v04DAp0912* - ID_PRODUCT_FROM_DATABASE=SDR-S10 - -usb:v04DAp0B01* - ID_PRODUCT_FROM_DATABASE=CD-R/RW Drive - -usb:v04DAp0B03* - ID_PRODUCT_FROM_DATABASE=SuperDisk 240MB - -usb:v04DAp0D01* - ID_PRODUCT_FROM_DATABASE=CD-R Drive KXL-840AN - -usb:v04DAp0D09* - ID_PRODUCT_FROM_DATABASE=CD-R Drive KXL-RW32AN - -usb:v04DAp0D0A* - ID_PRODUCT_FROM_DATABASE=CD-R Drive KXL-CB20AN - -usb:v04DAp0D0D* - ID_PRODUCT_FROM_DATABASE=CDRCB03 - -usb:v04DAp0D0E* - ID_PRODUCT_FROM_DATABASE=DVD-ROM & CD-R/RW - -usb:v04DAp0F40* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04DAp104D* - ID_PRODUCT_FROM_DATABASE=Elite Panaboard UB-T880 (HID) - -usb:v04DAp104E* - ID_PRODUCT_FROM_DATABASE=Elite Panaboard Pen Adaptor (HID) - -usb:v04DAp1500* - ID_PRODUCT_FROM_DATABASE=MFSUSB Driver - -usb:v04DAp1800* - ID_PRODUCT_FROM_DATABASE=DY-WL10 802.11abgn Adapter [Broadcom BCM4323] - -usb:v04DAp1B00* - ID_PRODUCT_FROM_DATABASE=MultiMediaCard - -usb:v04DAp2121* - ID_PRODUCT_FROM_DATABASE=EB-VS6 - -usb:v04DAp2316* - ID_PRODUCT_FROM_DATABASE=DVC Mass Storage Device - -usb:v04DAp2317* - ID_PRODUCT_FROM_DATABASE=DVC USB-SERIAL Driver for WinXP - -usb:v04DAp2318* - ID_PRODUCT_FROM_DATABASE=NV-GS11/230/250 (webcam mode) - -usb:v04DAp2319* - ID_PRODUCT_FROM_DATABASE=NV-GS15 (webcam mode) - -usb:v04DAp231A* - ID_PRODUCT_FROM_DATABASE=NV-GS11/230/250 (DV mode) - -usb:v04DAp231D* - ID_PRODUCT_FROM_DATABASE=DVC Web Camera Device - -usb:v04DAp231E* - ID_PRODUCT_FROM_DATABASE=DVC DV Stream Device - -usb:v04DAp2372* - ID_PRODUCT_FROM_DATABASE=Lumix Camera (Storage mode) - -usb:v04DAp2374* - ID_PRODUCT_FROM_DATABASE=Lumix Camera (PTP mode) - -usb:v04DAp2451* - ID_PRODUCT_FROM_DATABASE=HDC-SD9 - -usb:v04DAp2497* - ID_PRODUCT_FROM_DATABASE=HDC-TM700 - -usb:v04DAp250C* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem (QDL mode) - -usb:v04DAp250D* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem - -usb:v04DAp3904* - ID_PRODUCT_FROM_DATABASE=N5HBZ0000055 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] - -usb:v04DAp3C04* - ID_PRODUCT_FROM_DATABASE=JT-P100MR-20 [ePassport Reader] - -usb:v04DB* - ID_VENDOR_FROM_DATABASE=Hypertec Pty, Ltd - -usb:v04DC* - ID_VENDOR_FROM_DATABASE=Huan Hsin Holdings, Ltd - -usb:v04DD* - ID_VENDOR_FROM_DATABASE=Sharp Corp. - -usb:v04DDp13A6* - ID_PRODUCT_FROM_DATABASE=MFC2000 - -usb:v04DDp6006* - ID_PRODUCT_FROM_DATABASE=AL-1216 - -usb:v04DDp6007* - ID_PRODUCT_FROM_DATABASE=AL-1045 - -usb:v04DDp6008* - ID_PRODUCT_FROM_DATABASE=AL-1255 - -usb:v04DDp6009* - ID_PRODUCT_FROM_DATABASE=AL-1530CS - -usb:v04DDp600A* - ID_PRODUCT_FROM_DATABASE=AL-1540CS - -usb:v04DDp600B* - ID_PRODUCT_FROM_DATABASE=AL-1456 - -usb:v04DDp600C* - ID_PRODUCT_FROM_DATABASE=AL-1555 - -usb:v04DDp600D* - ID_PRODUCT_FROM_DATABASE=AL-1225 - -usb:v04DDp600E* - ID_PRODUCT_FROM_DATABASE=AL-1551CS - -usb:v04DDp600F* - ID_PRODUCT_FROM_DATABASE=AR-122E - -usb:v04DDp6010* - ID_PRODUCT_FROM_DATABASE=AR-152E - -usb:v04DDp6011* - ID_PRODUCT_FROM_DATABASE=AR-157E - -usb:v04DDp6012* - ID_PRODUCT_FROM_DATABASE=SN-1045 - -usb:v04DDp6013* - ID_PRODUCT_FROM_DATABASE=SN-1255 - -usb:v04DDp6014* - ID_PRODUCT_FROM_DATABASE=SN-1456 - -usb:v04DDp6015* - ID_PRODUCT_FROM_DATABASE=SN-1555 - -usb:v04DDp6016* - ID_PRODUCT_FROM_DATABASE=AR-153E - -usb:v04DDp6017* - ID_PRODUCT_FROM_DATABASE=AR-122E N - -usb:v04DDp6018* - ID_PRODUCT_FROM_DATABASE=AR-153E N - -usb:v04DDp6019* - ID_PRODUCT_FROM_DATABASE=AR-152E N - -usb:v04DDp601A* - ID_PRODUCT_FROM_DATABASE=AR-157E N - -usb:v04DDp601B* - ID_PRODUCT_FROM_DATABASE=AL-1217 - -usb:v04DDp601C* - ID_PRODUCT_FROM_DATABASE=AL-1226 - -usb:v04DDp601D* - ID_PRODUCT_FROM_DATABASE=AR-123E - -usb:v04DDp6021* - ID_PRODUCT_FROM_DATABASE=IS01 - -usb:v04DDp7002* - ID_PRODUCT_FROM_DATABASE=DVC Ver.1.0 - -usb:v04DDp7004* - ID_PRODUCT_FROM_DATABASE=VE-CG40U Digital Still Camera - -usb:v04DDp7005* - ID_PRODUCT_FROM_DATABASE=VE-CG30 Digital Still Camera - -usb:v04DDp7007* - ID_PRODUCT_FROM_DATABASE=VL-Z7S Digital Camcorder - -usb:v04DDp8004* - ID_PRODUCT_FROM_DATABASE=Zaurus SL-5000D/SL-5500 PDA - -usb:v04DDp8005* - ID_PRODUCT_FROM_DATABASE=Zaurus A-300 - -usb:v04DDp8006* - ID_PRODUCT_FROM_DATABASE=Zaurus SL-B500/SL-5600 PDA - -usb:v04DDp8007* - ID_PRODUCT_FROM_DATABASE=Zaurus C-700 PDA - -usb:v04DDp9009* - ID_PRODUCT_FROM_DATABASE=AR-M160 - -usb:v04DDp9014* - ID_PRODUCT_FROM_DATABASE=IM-DR80 Portable NetMD Player - -usb:v04DDp9031* - ID_PRODUCT_FROM_DATABASE=Zaurus C-750/C-760/C-860/SL-C3000 PDA - -usb:v04DDp9032* - ID_PRODUCT_FROM_DATABASE=Zaurus SL-6000 - -usb:v04DDp903A* - ID_PRODUCT_FROM_DATABASE=GSM GPRS - -usb:v04DDp9050* - ID_PRODUCT_FROM_DATABASE=Zaurus C-860 PDA - -usb:v04DDp9056* - ID_PRODUCT_FROM_DATABASE=Viewcam Z - -usb:v04DDp9073* - ID_PRODUCT_FROM_DATABASE=AM-900 - -usb:v04DDp9074* - ID_PRODUCT_FROM_DATABASE=GSM GPRS - -usb:v04DDp90A9* - ID_PRODUCT_FROM_DATABASE=Sharp Composite - -usb:v04DDp90D0* - ID_PRODUCT_FROM_DATABASE=USB-to-Serial Comm. Port - -usb:v04DDp90F2* - ID_PRODUCT_FROM_DATABASE=Sharp 3G GSM USB Control - -usb:v04DDp9120* - ID_PRODUCT_FROM_DATABASE=WS004SH - -usb:v04DDp9122* - ID_PRODUCT_FROM_DATABASE=WS007SH - -usb:v04DDp9123* - ID_PRODUCT_FROM_DATABASE=W-ZERO3 ES Smartphone - -usb:v04DDp91A3* - ID_PRODUCT_FROM_DATABASE=922SH Internet Machine - -usb:v04DDp939A* - ID_PRODUCT_FROM_DATABASE=IS03 - -usb:v04DE* - ID_VENDOR_FROM_DATABASE=MindShare, Inc. - -usb:v04DF* - ID_VENDOR_FROM_DATABASE=Interlink Electronics - -usb:v04E1* - ID_VENDOR_FROM_DATABASE=Iiyama North America, Inc. - -usb:v04E1p0201* - ID_PRODUCT_FROM_DATABASE=Monitor Hub - -usb:v04E2* - ID_VENDOR_FROM_DATABASE=Exar Corp. - -usb:v04E3* - ID_VENDOR_FROM_DATABASE=Zilog, Inc. - -usb:v04E4* - ID_VENDOR_FROM_DATABASE=ACC Microelectronics - -usb:v04E5* - ID_VENDOR_FROM_DATABASE=Promise Technology - -usb:v04E6* - ID_VENDOR_FROM_DATABASE=SCM Microsystems, Inc. - -usb:v04E6p0001* - ID_PRODUCT_FROM_DATABASE=E-USB ATA Bridge - -usb:v04E6p0002* - ID_PRODUCT_FROM_DATABASE=eUSCSI SCSI Bridge - -usb:v04E6p0003* - ID_PRODUCT_FROM_DATABASE=eUSB SmartMedia Card Reader - -usb:v04E6p0005* - ID_PRODUCT_FROM_DATABASE=eUSB SmartMedia/CompactFlash Card Reader - -usb:v04E6p0006* - ID_PRODUCT_FROM_DATABASE=eUSB SmartMedia Card Reader - -usb:v04E6p0007* - ID_PRODUCT_FROM_DATABASE=Hifd - -usb:v04E6p0009* - ID_PRODUCT_FROM_DATABASE=eUSB ATA/ATAPI Adapter - -usb:v04E6p000A* - ID_PRODUCT_FROM_DATABASE=eUSB CompactFlash Adapter - -usb:v04E6p000B* - ID_PRODUCT_FROM_DATABASE=eUSCSI Bridge - -usb:v04E6p000C* - ID_PRODUCT_FROM_DATABASE=eUSCSI Bridge - -usb:v04E6p000D* - ID_PRODUCT_FROM_DATABASE=Dazzle MS - -usb:v04E6p0012* - ID_PRODUCT_FROM_DATABASE=Dazzle SD/MMC - -usb:v04E6p0101* - ID_PRODUCT_FROM_DATABASE=eUSB ATA Bridge (Sony Spressa USB CDRW) - -usb:v04E6p0311* - ID_PRODUCT_FROM_DATABASE=Dazzle DM-CF - -usb:v04E6p0312* - ID_PRODUCT_FROM_DATABASE=Dazzle DM-SD/MMC - -usb:v04E6p0313* - ID_PRODUCT_FROM_DATABASE=Dazzle SM - -usb:v04E6p0314* - ID_PRODUCT_FROM_DATABASE=Dazzle MS - -usb:v04E6p0322* - ID_PRODUCT_FROM_DATABASE=e-Film Reader-5 - -usb:v04E6p0325* - ID_PRODUCT_FROM_DATABASE=eUSB ORCA Quad Reader - -usb:v04E6p0327* - ID_PRODUCT_FROM_DATABASE=Digital Media Reader - -usb:v04E6p03FE* - ID_PRODUCT_FROM_DATABASE=DMHS2 DFU Adapter - -usb:v04E6p0406* - ID_PRODUCT_FROM_DATABASE=eUSB SmartDM Reader - -usb:v04E6p04E6* - ID_PRODUCT_FROM_DATABASE=eUSB DFU Adapter - -usb:v04E6p04E7* - ID_PRODUCT_FROM_DATABASE=STCII DFU Adapter - -usb:v04E6p04E8* - ID_PRODUCT_FROM_DATABASE=eUSBDM DFU Adapter - -usb:v04E6p04E9* - ID_PRODUCT_FROM_DATABASE=DM-E DFU Adapter - -usb:v04E6p0500* - ID_PRODUCT_FROM_DATABASE=Veridicom 5thSense Fingerprint Sensor and eUSB SmartCard - -usb:v04E6p0701* - ID_PRODUCT_FROM_DATABASE=DCS200 Loader Device - -usb:v04E6p0702* - ID_PRODUCT_FROM_DATABASE=DVD Creation Station 200 - -usb:v04E6p0703* - ID_PRODUCT_FROM_DATABASE=DVC100 Loader Device - -usb:v04E6p0704* - ID_PRODUCT_FROM_DATABASE=Digital Video Creator 100 - -usb:v04E6p1001* - ID_PRODUCT_FROM_DATABASE=SCR300 Smart Card Reader - -usb:v04E6p1010* - ID_PRODUCT_FROM_DATABASE=USBAT-2 CompactFlash Card Reader - -usb:v04E6p1014* - ID_PRODUCT_FROM_DATABASE=e-Film Reader-3 - -usb:v04E6p1020* - ID_PRODUCT_FROM_DATABASE=USBAT ATA/ATAPI Adapter - -usb:v04E6p2007* - ID_PRODUCT_FROM_DATABASE=RSA SecurID ComboReader - -usb:v04E6p2009* - ID_PRODUCT_FROM_DATABASE=Citibank Smart Card Reader - -usb:v04E6p200A* - ID_PRODUCT_FROM_DATABASE=Reflex v.2 Smart Card Reader - -usb:v04E6p200D* - ID_PRODUCT_FROM_DATABASE=STR391 Reader - -usb:v04E6p5111* - ID_PRODUCT_FROM_DATABASE=SCR331-DI SmartCard Reader - -usb:v04E6p5113* - ID_PRODUCT_FROM_DATABASE=SCR333 SmartCard Reader - -usb:v04E6p5114* - ID_PRODUCT_FROM_DATABASE=SCR331-DI SmartCard Reader - -usb:v04E6p5115* - ID_PRODUCT_FROM_DATABASE=SCR335 SmartCard Reader - -usb:v04E6p5116* - ID_PRODUCT_FROM_DATABASE=SCR331-LC1 / SCR3310 SmartCard Reader - -usb:v04E6p5117* - ID_PRODUCT_FROM_DATABASE=SCR3320 - Smart Card Reader - -usb:v04E6p5118* - ID_PRODUCT_FROM_DATABASE=Expresscard SIM Card Reader - -usb:v04E6p5119* - ID_PRODUCT_FROM_DATABASE=SCR3340 - ExpressCard54 Smart Card Reader - -usb:v04E6p511B* - ID_PRODUCT_FROM_DATABASE=SmartCard Reader - -usb:v04E6p511D* - ID_PRODUCT_FROM_DATABASE=SCR3311 Smart Card Reader - -usb:v04E6p5120* - ID_PRODUCT_FROM_DATABASE=SCR331-DI SmartCard Reader - -usb:v04E6p5121* - ID_PRODUCT_FROM_DATABASE=SDI010 Smart Card Reader - -usb:v04E6p5151* - ID_PRODUCT_FROM_DATABASE=SCR338 Keyboard Smart Card Reader - -usb:v04E6p5292* - ID_PRODUCT_FROM_DATABASE=SCL011 RFID reader - -usb:v04E6p5410* - ID_PRODUCT_FROM_DATABASE=SCR35xx Smart Card Reader - -usb:v04E6pE000* - ID_PRODUCT_FROM_DATABASE=SCRx31 Reader - -usb:v04E6pE001* - ID_PRODUCT_FROM_DATABASE=SCR331 SmartCard Reader - -usb:v04E6pE003* - ID_PRODUCT_FROM_DATABASE=SPR532 PinPad SmartCard Reader - -usb:v04E7* - ID_VENDOR_FROM_DATABASE=Elo TouchSystems - -usb:v04E7p0001* - ID_PRODUCT_FROM_DATABASE=TouchScreen - -usb:v04E7p0002* - ID_PRODUCT_FROM_DATABASE=Touchmonitor Interface 2600 Rev 2 - -usb:v04E7p0004* - ID_PRODUCT_FROM_DATABASE=4000U CarrollTouch® Touchmonitor Interface - -usb:v04E7p0007* - ID_PRODUCT_FROM_DATABASE=2500U IntelliTouch® Touchmonitor Interface - -usb:v04E7p0008* - ID_PRODUCT_FROM_DATABASE=3000U AccuTouch® Touchmonitor Interface - -usb:v04E7p0009* - ID_PRODUCT_FROM_DATABASE=4000U CarrollTouch® Touchmonitor Interface - -usb:v04E7p0020* - ID_PRODUCT_FROM_DATABASE=Touchscreen Interface (2700) - -usb:v04E7p0021* - ID_PRODUCT_FROM_DATABASE=Touchmonitor Interface - -usb:v04E7p0030* - ID_PRODUCT_FROM_DATABASE=4500U CarrollTouch® Touchmonitor Interface - -usb:v04E7p0032* - ID_PRODUCT_FROM_DATABASE=Touchmonitor Interface - -usb:v04E7p0033* - ID_PRODUCT_FROM_DATABASE=Touchmonitor Interface - -usb:v04E7p0041* - ID_PRODUCT_FROM_DATABASE=5010 Surface Capacitive Touchmonitor Interface - -usb:v04E7p0042* - ID_PRODUCT_FROM_DATABASE=Touchmonitor Interface - -usb:v04E7p0050* - ID_PRODUCT_FROM_DATABASE=2216 AccuTouch® Touchmonitor Interface - -usb:v04E7p0071* - ID_PRODUCT_FROM_DATABASE=Touchmonitor Interface - -usb:v04E7p0072* - ID_PRODUCT_FROM_DATABASE=Touchmonitor Interface - -usb:v04E7p0081* - ID_PRODUCT_FROM_DATABASE=Touchmonitor Interface - -usb:v04E7p0082* - ID_PRODUCT_FROM_DATABASE=Touchmonitor Interface - -usb:v04E7p00FF* - ID_PRODUCT_FROM_DATABASE=Touchmonitor Interface - -usb:v04E8* - ID_VENDOR_FROM_DATABASE=Samsung Electronics Co., Ltd - -usb:v04E8p0100* - ID_PRODUCT_FROM_DATABASE=Kingston Flash Drive (128MB) - -usb:v04E8p0110* - ID_PRODUCT_FROM_DATABASE=Connect3D Flash Drive - -usb:v04E8p0111* - ID_PRODUCT_FROM_DATABASE=Connect3D Flash Drive - -usb:v04E8p0300* - ID_PRODUCT_FROM_DATABASE=E2530 Phone (Mass storage mode) - -usb:v04E8p1003* - ID_PRODUCT_FROM_DATABASE=MP3 Player and Recorder - -usb:v04E8p1006* - ID_PRODUCT_FROM_DATABASE=SDC-200Z - -usb:v04E8p130C* - ID_PRODUCT_FROM_DATABASE=NX100 - -usb:v04E8p1F06* - ID_PRODUCT_FROM_DATABASE=HX-MU064DA portable harddisk - -usb:v04E8p2018* - ID_PRODUCT_FROM_DATABASE=WIS09ABGN LinkStick Wireless LAN Adapter - -usb:v04E8p2035* - ID_PRODUCT_FROM_DATABASE=Digital Photo Frame Mass Storage - -usb:v04E8p2036* - ID_PRODUCT_FROM_DATABASE=Digital Photo Frame Mini Monitor - -usb:v04E8p3004* - ID_PRODUCT_FROM_DATABASE=ML-4600 - -usb:v04E8p3005* - ID_PRODUCT_FROM_DATABASE=Docuprint P1210 - -usb:v04E8p3008* - ID_PRODUCT_FROM_DATABASE=ML-6060 laser printer - -usb:v04E8p300C* - ID_PRODUCT_FROM_DATABASE=ML-1210 Printer - -usb:v04E8p300E* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v04E8p3104* - ID_PRODUCT_FROM_DATABASE=ML-3550N - -usb:v04E8p3210* - ID_PRODUCT_FROM_DATABASE=ML-5200A Laser Printer - -usb:v04E8p3226* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v04E8p3228* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v04E8p322A* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v04E8p322C* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v04E8p3230* - ID_PRODUCT_FROM_DATABASE=ML-1440 - -usb:v04E8p3232* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v04E8p3236* - ID_PRODUCT_FROM_DATABASE=ML-1450 - -usb:v04E8p3238* - ID_PRODUCT_FROM_DATABASE=ML-1430 - -usb:v04E8p323A* - ID_PRODUCT_FROM_DATABASE=ML-1710 Printer - -usb:v04E8p323B* - ID_PRODUCT_FROM_DATABASE=Phaser 3130 - -usb:v04E8p323C* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v04E8p323D* - ID_PRODUCT_FROM_DATABASE=Phaser 3120 - -usb:v04E8p323E* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v04E8p3240* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v04E8p3242* - ID_PRODUCT_FROM_DATABASE=ML-1510 Laser Printer - -usb:v04E8p3248* - ID_PRODUCT_FROM_DATABASE=Color Laser Printer - -usb:v04E8p324A* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v04E8p324C* - ID_PRODUCT_FROM_DATABASE=ML-1740 Printer - -usb:v04E8p324D* - ID_PRODUCT_FROM_DATABASE=Phaser 3121 - -usb:v04E8p3256* - ID_PRODUCT_FROM_DATABASE=ML-1520 Laser Printer - -usb:v04E8p325B* - ID_PRODUCT_FROM_DATABASE=Xerox Phaser 3117 Laser Printer - -usb:v04E8p325F* - ID_PRODUCT_FROM_DATABASE=Phaser 3425 Laser Printer - -usb:v04E8p3260* - ID_PRODUCT_FROM_DATABASE=CLP-510 Color Laser Printer - -usb:v04E8p3268* - ID_PRODUCT_FROM_DATABASE=ML-1610 Mono Laser Printer - -usb:v04E8p326C* - ID_PRODUCT_FROM_DATABASE=ML-2010P Mono Laser Printer - -usb:v04E8p3276* - ID_PRODUCT_FROM_DATABASE=ML-3050/ML-3051 Laser Printer - -usb:v04E8p328E* - ID_PRODUCT_FROM_DATABASE=CLP-310 Color Laser Printer - -usb:v04E8p3292* - ID_PRODUCT_FROM_DATABASE=ML-1640 Series Laser Printer - -usb:v04E8p3296* - ID_PRODUCT_FROM_DATABASE=ML-2580N Mono Laser Printer - -usb:v04E8p3297* - ID_PRODUCT_FROM_DATABASE=ML-191x/ML-252x Laser Printer - -usb:v04E8p329F* - ID_PRODUCT_FROM_DATABASE=CLP-325 Color Laser Printer - -usb:v04E8p330C* - ID_PRODUCT_FROM_DATABASE=ML-1865 - -usb:v04E8p3310* - ID_PRODUCT_FROM_DATABASE=ML-331x Series Laser Printer - -usb:v04E8p3315* - ID_PRODUCT_FROM_DATABASE=ML-2540 Series Laser Printer - -usb:v04E8p3409* - ID_PRODUCT_FROM_DATABASE=SCX-4216F Scanner - -usb:v04E8p340C* - ID_PRODUCT_FROM_DATABASE=SCX-5x15 series - -usb:v04E8p340D* - ID_PRODUCT_FROM_DATABASE=SCX-6x20 series - -usb:v04E8p340E* - ID_PRODUCT_FROM_DATABASE=MFP 560 series - -usb:v04E8p340F* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v04E8p3412* - ID_PRODUCT_FROM_DATABASE=SCX-4x20 series - -usb:v04E8p3413* - ID_PRODUCT_FROM_DATABASE=SCX-4100 Scanner - -usb:v04E8p3415* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v04E8p3419* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v04E8p341A* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v04E8p341B* - ID_PRODUCT_FROM_DATABASE=SCX-4200 series - -usb:v04E8p341C* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v04E8p341D* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v04E8p341F* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v04E8p3420* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v04E8p3426* - ID_PRODUCT_FROM_DATABASE=SCX-4500 Laser Printer - -usb:v04E8p344F* - ID_PRODUCT_FROM_DATABASE=SCX-3400 Series - -usb:v04E8p3605* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v04E8p3606* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v04E8p3609* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v04E8p3902* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v04E8p3903* - ID_PRODUCT_FROM_DATABASE=Xerox WorkCentre XK50cx - -usb:v04E8p390F* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v04E8p3911* - ID_PRODUCT_FROM_DATABASE=SCX-1020 series - -usb:v04E8p4005* - ID_PRODUCT_FROM_DATABASE=GT-S8000 Jet (msc) - -usb:v04E8p4F1F* - ID_PRODUCT_FROM_DATABASE=GT-S8000 Jet (mtp) - -usb:v04E8p5000* - ID_PRODUCT_FROM_DATABASE=YP-MF series - -usb:v04E8p5001* - ID_PRODUCT_FROM_DATABASE=YP-100 - -usb:v04E8p5002* - ID_PRODUCT_FROM_DATABASE=YP-30 - -usb:v04E8p5003* - ID_PRODUCT_FROM_DATABASE=YP-700 - -usb:v04E8p5004* - ID_PRODUCT_FROM_DATABASE=YP-30 - -usb:v04E8p5005* - ID_PRODUCT_FROM_DATABASE=YP-300 - -usb:v04E8p5006* - ID_PRODUCT_FROM_DATABASE=YP-750 - -usb:v04E8p500D* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v04E8p5010* - ID_PRODUCT_FROM_DATABASE=Yepp YP-35 - -usb:v04E8p5011* - ID_PRODUCT_FROM_DATABASE=YP-780 - -usb:v04E8p5013* - ID_PRODUCT_FROM_DATABASE=YP-60 - -usb:v04E8p5015* - ID_PRODUCT_FROM_DATABASE=yepp upgrade - -usb:v04E8p501B* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v04E8p5021* - ID_PRODUCT_FROM_DATABASE=Yepp YP-ST5 - -usb:v04E8p5026* - ID_PRODUCT_FROM_DATABASE=YP-MT6V - -usb:v04E8p5027* - ID_PRODUCT_FROM_DATABASE=YP-T7 - -usb:v04E8p502B* - ID_PRODUCT_FROM_DATABASE=YP-F1 - -usb:v04E8p5032* - ID_PRODUCT_FROM_DATABASE=YP-J70 - -usb:v04E8p503B* - ID_PRODUCT_FROM_DATABASE=YP-U1 MP3 Player - -usb:v04E8p503D* - ID_PRODUCT_FROM_DATABASE=YP-T7F - -usb:v04E8p5041* - ID_PRODUCT_FROM_DATABASE=YP-Z5 - -usb:v04E8p5050* - ID_PRODUCT_FROM_DATABASE=YP-U2 MP3 Player - -usb:v04E8p5051* - ID_PRODUCT_FROM_DATABASE=YP-F2R - -usb:v04E8p5055* - ID_PRODUCT_FROM_DATABASE=YP-T9 - -usb:v04E8p507D* - ID_PRODUCT_FROM_DATABASE=YP-U3 (mtp) - -usb:v04E8p507F* - ID_PRODUCT_FROM_DATABASE=YP-T9J - -usb:v04E8p5080* - ID_PRODUCT_FROM_DATABASE=Yepp YP-K3 (msc) - -usb:v04E8p5081* - ID_PRODUCT_FROM_DATABASE=Yepp YP-K3 (mtp) - -usb:v04E8p5082* - ID_PRODUCT_FROM_DATABASE=YP-P2 (msc) - -usb:v04E8p5083* - ID_PRODUCT_FROM_DATABASE=YP-P2 (mtp) - -usb:v04E8p508A* - ID_PRODUCT_FROM_DATABASE=YP-T10 - -usb:v04E8p508B* - ID_PRODUCT_FROM_DATABASE=YP-S5 MP3 Player - -usb:v04E8p508C* - ID_PRODUCT_FROM_DATABASE=YP-S5 - -usb:v04E8p5090* - ID_PRODUCT_FROM_DATABASE=YP-S3 (msc) - -usb:v04E8p5091* - ID_PRODUCT_FROM_DATABASE=YP-S3 (mtp) - -usb:v04E8p5092* - ID_PRODUCT_FROM_DATABASE=YP-U4 (msc) - -usb:v04E8p5093* - ID_PRODUCT_FROM_DATABASE=YP-U4 (mtp) - -usb:v04E8p5095* - ID_PRODUCT_FROM_DATABASE=YP-S2 - -usb:v04E8p510F* - ID_PRODUCT_FROM_DATABASE=YP-R1 - -usb:v04E8p5119* - ID_PRODUCT_FROM_DATABASE=Yepp YP-P3 - -usb:v04E8p511C* - ID_PRODUCT_FROM_DATABASE=YP-Q2 - -usb:v04E8p5121* - ID_PRODUCT_FROM_DATABASE=YP-U5 - -usb:v04E8p5123* - ID_PRODUCT_FROM_DATABASE=Yepp YP-M1 - -usb:v04E8p5A00* - ID_PRODUCT_FROM_DATABASE=YP-NEU - -usb:v04E8p5A01* - ID_PRODUCT_FROM_DATABASE=YP-NDU - -usb:v04E8p5A03* - ID_PRODUCT_FROM_DATABASE=Yepp MP3 Player - -usb:v04E8p5A04* - ID_PRODUCT_FROM_DATABASE=YP-800 - -usb:v04E8p5A08* - ID_PRODUCT_FROM_DATABASE=YP-90 - -usb:v04E8p5A0F* - ID_PRODUCT_FROM_DATABASE=Meizu M6 MiniPlayer - -usb:v04E8p5B01* - ID_PRODUCT_FROM_DATABASE=Memory Stick Reader/Writer - -usb:v04E8p5B02* - ID_PRODUCT_FROM_DATABASE=Memory Stick Reader/Writer - -usb:v04E8p5B03* - ID_PRODUCT_FROM_DATABASE=Memory Stick Reader/Writer - -usb:v04E8p5B04* - ID_PRODUCT_FROM_DATABASE=Memory Stick Reader/Writer - -usb:v04E8p5B05* - ID_PRODUCT_FROM_DATABASE=Memory Stick Reader/Writer - -usb:v04E8p5B11* - ID_PRODUCT_FROM_DATABASE=SEW-2001u Card - -usb:v04E8p5F00* - ID_PRODUCT_FROM_DATABASE=NEXiO Sync - -usb:v04E8p5F01* - ID_PRODUCT_FROM_DATABASE=NEXiO Sync - -usb:v04E8p5F02* - ID_PRODUCT_FROM_DATABASE=NEXiO Sync - -usb:v04E8p5F03* - ID_PRODUCT_FROM_DATABASE=NEXiO Sync - -usb:v04E8p5F04* - ID_PRODUCT_FROM_DATABASE=NEXiO Sync - -usb:v04E8p5F05* - ID_PRODUCT_FROM_DATABASE=STORY Station 1TB - -usb:v04E8p6032* - ID_PRODUCT_FROM_DATABASE=G2 Portable hard drive - -usb:v04E8p60B3* - ID_PRODUCT_FROM_DATABASE=M2 Portable Hard Drive - -usb:v04E8p60C4* - ID_PRODUCT_FROM_DATABASE=M2 Portable Hard Drive USB 3.0 - -usb:v04E8p6601* - ID_PRODUCT_FROM_DATABASE=Mobile Phone - -usb:v04E8p6602* - ID_PRODUCT_FROM_DATABASE=Galaxy - -usb:v04E8p6603* - ID_PRODUCT_FROM_DATABASE=Galaxy - -usb:v04E8p6611* - ID_PRODUCT_FROM_DATABASE=MITs Sync - -usb:v04E8p6613* - ID_PRODUCT_FROM_DATABASE=MITs Sync - -usb:v04E8p6615* - ID_PRODUCT_FROM_DATABASE=MITs Sync - -usb:v04E8p6617* - ID_PRODUCT_FROM_DATABASE=MITs Sync - -usb:v04E8p6619* - ID_PRODUCT_FROM_DATABASE=MITs Sync - -usb:v04E8p661B* - ID_PRODUCT_FROM_DATABASE=MITs Sync - -usb:v04E8p661E* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v04E8p6620* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v04E8p6622* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v04E8p6624* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v04E8p662E* - ID_PRODUCT_FROM_DATABASE=MITs Sync - -usb:v04E8p6630* - ID_PRODUCT_FROM_DATABASE=MITs Sync - -usb:v04E8p6632* - ID_PRODUCT_FROM_DATABASE=MITs Sync - -usb:v04E8p663E* - ID_PRODUCT_FROM_DATABASE=D900e Phone - -usb:v04E8p663F* - ID_PRODUCT_FROM_DATABASE=SGH-E720/SGH-E840 - -usb:v04E8p6640* - ID_PRODUCT_FROM_DATABASE=Usb Modem Enumerator - -usb:v04E8p6651* - ID_PRODUCT_FROM_DATABASE=i8510 Innov8 - -usb:v04E8p6702* - ID_PRODUCT_FROM_DATABASE=X830 - -usb:v04E8p6708* - ID_PRODUCT_FROM_DATABASE=U600 Phone - -usb:v04E8p6709* - ID_PRODUCT_FROM_DATABASE=U600 - -usb:v04E8p6734* - ID_PRODUCT_FROM_DATABASE=Juke - -usb:v04E8p6759* - ID_PRODUCT_FROM_DATABASE=D900e Media Player - -usb:v04E8p675A* - ID_PRODUCT_FROM_DATABASE=D900e Mass Storage - -usb:v04E8p675B* - ID_PRODUCT_FROM_DATABASE=D900e Camera - -usb:v04E8p6772* - ID_PRODUCT_FROM_DATABASE=Standalone LTE device (Trial) - -usb:v04E8p6795* - ID_PRODUCT_FROM_DATABASE=S5230 - -usb:v04E8p6802* - ID_PRODUCT_FROM_DATABASE=Standalone HSPA device - -usb:v04E8p6806* - ID_PRODUCT_FROM_DATABASE=Composite LTE device (Trial) - -usb:v04E8p6807* - ID_PRODUCT_FROM_DATABASE=Composite HSPA device - -usb:v04E8p681C* - ID_PRODUCT_FROM_DATABASE=Galaxy Portal/Spica/S - -usb:v04E8p681D* - ID_PRODUCT_FROM_DATABASE=Galaxy Portal/Spica Android Phone - -usb:v04E8p6843* - ID_PRODUCT_FROM_DATABASE=E2530 Phone (Samsung Kies mode) - -usb:v04E8p684E* - ID_PRODUCT_FROM_DATABASE=Wave (GT-S8500) - -usb:v04E8p685B* - ID_PRODUCT_FROM_DATABASE=GT-I9100 Phone [Galaxy S II] (mass storage mode) - -usb:v04E8p685C* - ID_PRODUCT_FROM_DATABASE=GT-I9250 Phone [Galaxy Nexus] - -usb:v04E8p685D* - ID_PRODUCT_FROM_DATABASE=GT-I9100 Phone [Galaxy S II] (Download mode) - -usb:v04E8p685E* - ID_PRODUCT_FROM_DATABASE=GT-I9100 Phone [Galaxy S II] (USB Debugging mode) - -usb:v04E8p6860* - ID_PRODUCT_FROM_DATABASE=GT-I9100 Phone [Galaxy S II], GT-I9300 Phone [Galaxy S III], GT-P7500 [Galaxy Tab 10.1] - -usb:v04E8p6865* - ID_PRODUCT_FROM_DATABASE=GT-I9300 Phone [Galaxy S III] (PTP mode) - -usb:v04E8p6866* - ID_PRODUCT_FROM_DATABASE=GT-I9300 Phone [Galaxy S III] (debugging mode) - -usb:v04E8p6875* - ID_PRODUCT_FROM_DATABASE=GT-B3710 Standalone LTE device (Commercial) - -usb:v04E8p6876* - ID_PRODUCT_FROM_DATABASE=GT-B3710 LTE Modem - -usb:v04E8p6877* - ID_PRODUCT_FROM_DATABASE=Galaxy S - -usb:v04E8p6888* - ID_PRODUCT_FROM_DATABASE=GT-B3730 Composite LTE device (Commercial) - -usb:v04E8p6889* - ID_PRODUCT_FROM_DATABASE=GT-B3730 Composite LTE device (Commercial) - -usb:v04E8p689A* - ID_PRODUCT_FROM_DATABASE=LTE Storage Driver [CMC2xx] - -usb:v04E8p689E* - ID_PRODUCT_FROM_DATABASE=GT-S5670 [Galaxy Fit] - -usb:v04E8p68AA* - ID_PRODUCT_FROM_DATABASE=Reality - -usb:v04E8p7011* - ID_PRODUCT_FROM_DATABASE=SEW-2003U Card - -usb:v04E8p7021* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v04E8p7061* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v04E8p7080* - ID_PRODUCT_FROM_DATABASE=Anycall SCH-W580 - -usb:v04E8p7081* - ID_PRODUCT_FROM_DATABASE=Human Interface Device - -usb:v04E8p8001* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v04E8pE020* - ID_PRODUCT_FROM_DATABASE=SERI E02 SCOM 6200 UMTS Phone - -usb:v04E8pE021* - ID_PRODUCT_FROM_DATABASE=SERI E02 SCOM 6200 Virtual UARTs - -usb:v04E8pE022* - ID_PRODUCT_FROM_DATABASE=SERI E02 SCOM 6200 Flash Load Disk - -usb:v04E8pF000* - ID_PRODUCT_FROM_DATABASE=Intensity 3 (Mass Storage Mode) - -usb:v04E8pFF30* - ID_PRODUCT_FROM_DATABASE=SG_iMON - -usb:v04E9* - ID_VENDOR_FROM_DATABASE=PC-Tel, Inc. - -usb:v04EA* - ID_VENDOR_FROM_DATABASE=Brooktree Corp. - -usb:v04EB* - ID_VENDOR_FROM_DATABASE=Northstar Systems, Inc. - -usb:v04EBpE004* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Transceiver - -usb:v04EC* - ID_VENDOR_FROM_DATABASE=Tokyo Electron Device, Ltd - -usb:v04ED* - ID_VENDOR_FROM_DATABASE=Annabooks - -usb:v04EF* - ID_VENDOR_FROM_DATABASE=Pacific Electronic International, Inc. - -usb:v04F0* - ID_VENDOR_FROM_DATABASE=Daewoo Electronics Co., Ltd - -usb:v04F1* - ID_VENDOR_FROM_DATABASE=Victor Company of Japan, Ltd - -usb:v04F1p0001* - ID_PRODUCT_FROM_DATABASE=GC-QX3 Digital Still Camera - -usb:v04F1p0004* - ID_PRODUCT_FROM_DATABASE=GR-DVL815U Digital Video Camera - -usb:v04F1p0006* - ID_PRODUCT_FROM_DATABASE=DV Camera Storage - -usb:v04F1p0008* - ID_PRODUCT_FROM_DATABASE=GZ-MG30AA/MC500E Digital Video Camera - -usb:v04F1p0009* - ID_PRODUCT_FROM_DATABASE=GR-DX25EK Digital Video Camera - -usb:v04F1p000A* - ID_PRODUCT_FROM_DATABASE=GR-D72 Digital Video Camera - -usb:v04F1p1001* - ID_PRODUCT_FROM_DATABASE=GC-A50 Camera Device - -usb:v04F1p3008* - ID_PRODUCT_FROM_DATABASE=MP-PRX1 Ethernet - -usb:v04F1p3009* - ID_PRODUCT_FROM_DATABASE=MP-XP7250 WLAN Adapter - -usb:v04F2* - ID_VENDOR_FROM_DATABASE=Chicony Electronics Co., Ltd - -usb:v04F2p0001* - ID_PRODUCT_FROM_DATABASE=KU-8933 Keyboard - -usb:v04F2p0002* - ID_PRODUCT_FROM_DATABASE=NT68P81 Keyboard - -usb:v04F2p0110* - ID_PRODUCT_FROM_DATABASE=KU-2971 Keyboard - -usb:v04F2p0111* - ID_PRODUCT_FROM_DATABASE=KU-9908 Keyboard - -usb:v04F2p0112* - ID_PRODUCT_FROM_DATABASE=KU-8933 Keyboard with PS/2 Mouse port - -usb:v04F2p0116* - ID_PRODUCT_FROM_DATABASE=KU-2971/KU-0325 Keyboard - -usb:v04F2p0200* - ID_PRODUCT_FROM_DATABASE=KBR-0108 - -usb:v04F2p0201* - ID_PRODUCT_FROM_DATABASE=Gaming Keyboard KPD0250 - -usb:v04F2p0220* - ID_PRODUCT_FROM_DATABASE=Wireless HID Receiver - -usb:v04F2p0402* - ID_PRODUCT_FROM_DATABASE=Genius LuxeMate i200 Keyboard - -usb:v04F2p0403* - ID_PRODUCT_FROM_DATABASE=KU-0420 keyboard - -usb:v04F2p0418* - ID_PRODUCT_FROM_DATABASE=KU-0418 Tactical Pad - -usb:v04F2p0760* - ID_PRODUCT_FROM_DATABASE=Acer KU-0760 Keyboard - -usb:v04F2p0841* - ID_PRODUCT_FROM_DATABASE=HP Multimedia Keyboard - -usb:v04F2p0860* - ID_PRODUCT_FROM_DATABASE=2.4G Multimedia Wireless Kit - -usb:v04F2pA001* - ID_PRODUCT_FROM_DATABASE=E-Video DC-100 Camera - -usb:v04F2pA120* - ID_PRODUCT_FROM_DATABASE=ORITE CCD Webcam(PC370R) - -usb:v04F2pA121* - ID_PRODUCT_FROM_DATABASE=ORITE CCD Webcam(PC370R) - -usb:v04F2pA122* - ID_PRODUCT_FROM_DATABASE=ORITE CCD Webcam(PC370R) - -usb:v04F2pA123* - ID_PRODUCT_FROM_DATABASE=ORITE CCD Webcam(PC370R) - -usb:v04F2pA124* - ID_PRODUCT_FROM_DATABASE=ORITE CCD Webcam(PC370R) - -usb:v04F2pA128* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C202 + OV7663 + EEPROM) - -usb:v04F2pA133* - ID_PRODUCT_FROM_DATABASE=Gateway Webcam - -usb:v04F2pA136* - ID_PRODUCT_FROM_DATABASE=LabTec Webcam 5500 - -usb:v04F2pA204* - ID_PRODUCT_FROM_DATABASE=DSC WIA Device (1300) - -usb:v04F2pA208* - ID_PRODUCT_FROM_DATABASE=DSC WIA Device (2320) - -usb:v04F2pA209* - ID_PRODUCT_FROM_DATABASE=Labtec DC-2320 - -usb:v04F2pA20A* - ID_PRODUCT_FROM_DATABASE=DSC WIA Device (3310) - -usb:v04F2pA20C* - ID_PRODUCT_FROM_DATABASE=DSC WIA Device (3320) - -usb:v04F2pA210* - ID_PRODUCT_FROM_DATABASE=Audio Device - -usb:v04F2pB008* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Camera - -usb:v04F2pB009* - ID_PRODUCT_FROM_DATABASE=Integrated Camera - -usb:v04F2pB010* - ID_PRODUCT_FROM_DATABASE=Integrated Camera - -usb:v04F2pB012* - ID_PRODUCT_FROM_DATABASE=1.3 MPixel UVC Webcam - -usb:v04F2pB013* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Camera - -usb:v04F2pB015* - ID_PRODUCT_FROM_DATABASE=VGA 24fps UVC Webcam - -usb:v04F2pB016* - ID_PRODUCT_FROM_DATABASE=VGA 30fps UVC Webcam - -usb:v04F2pB018* - ID_PRODUCT_FROM_DATABASE=2M UVC Webcam - -usb:v04F2pB021* - ID_PRODUCT_FROM_DATABASE=ViewSonic 1.3M, USB2.0 Webcam - -usb:v04F2pB022* - ID_PRODUCT_FROM_DATABASE=Gateway USB 2.0 Webcam - -usb:v04F2pB023* - ID_PRODUCT_FROM_DATABASE=Gateway USB 2.0 Webcam - -usb:v04F2pB024* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Webcam - -usb:v04F2pB025* - ID_PRODUCT_FROM_DATABASE=Camera - -usb:v04F2pB027* - ID_PRODUCT_FROM_DATABASE=Gateway USB 2.0 Webcam - -usb:v04F2pB028* - ID_PRODUCT_FROM_DATABASE=VGA UVC Webcam - -usb:v04F2pB029* - ID_PRODUCT_FROM_DATABASE=1.3M UVC Webcam - -usb:v04F2pB036* - ID_PRODUCT_FROM_DATABASE=Asus Integrated 0.3M UVC Webcam - -usb:v04F2pB044* - ID_PRODUCT_FROM_DATABASE=Acer CrystalEye Webcam - -usb:v04F2pB057* - ID_PRODUCT_FROM_DATABASE=integrated USB webcam - -usb:v04F2pB059* - ID_PRODUCT_FROM_DATABASE=CKF7037 HP webcam - -usb:v04F2pB071* - ID_PRODUCT_FROM_DATABASE=2.0M UVC Webcam / CNF7129 - -usb:v04F2pB091* - ID_PRODUCT_FROM_DATABASE=Webcam - -usb:v04F2pB104* - ID_PRODUCT_FROM_DATABASE=CNF7069 Webcam - -usb:v04F2pB107* - ID_PRODUCT_FROM_DATABASE=CNF7070 Webcam - -usb:v04F2pB14C* - ID_PRODUCT_FROM_DATABASE=CNF8050 Webcam - -usb:v04F2pB15C* - ID_PRODUCT_FROM_DATABASE=Sony Vaio Integrated Camera - -usb:v04F2pB175* - ID_PRODUCT_FROM_DATABASE=4-Port Hub - -usb:v04F2pB1AA* - ID_PRODUCT_FROM_DATABASE=Webcam-101 - -usb:v04F2pB1B4* - ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Camera - -usb:v04F2pB1B9* - ID_PRODUCT_FROM_DATABASE=Asus Integrated Webcam - -usb:v04F2pB1CF* - ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Camera - -usb:v04F2pB1D6* - ID_PRODUCT_FROM_DATABASE=CNF9055 Toshiba Webcam - -usb:v04F2pB213* - ID_PRODUCT_FROM_DATABASE=Fujitsu Integrated Camera - -usb:v04F2pB217* - ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Camera (0.3MP) - -usb:v04F2pB221* - ID_PRODUCT_FROM_DATABASE=integrated camera - -usb:v04F2pB230* - ID_PRODUCT_FROM_DATABASE=Integrated HP HD Webcam - -usb:v04F2pB257* - ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Camera - -usb:v04F2pB26B* - ID_PRODUCT_FROM_DATABASE=Sony Visual Communication Camera - -usb:v04F2pB272* - ID_PRODUCT_FROM_DATABASE=Lenovo EasyCamera - -usb:v04F2pB2B0* - ID_PRODUCT_FROM_DATABASE=Camera - -usb:v04F2pB2B9* - ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Camera UVC - -usb:v04F2pB2EA* - ID_PRODUCT_FROM_DATABASE=Integrated Camera [ThinkPad] - -usb:v04F2pB330* - ID_PRODUCT_FROM_DATABASE=Asus 720p CMOS webcam - -usb:v04F3* - ID_VENDOR_FROM_DATABASE=Elan Microelectronics Corp. - -usb:v04F3p0103* - ID_PRODUCT_FROM_DATABASE=ActiveJet K-2024 Multimedia Keyboard - -usb:v04F3p01A4* - ID_PRODUCT_FROM_DATABASE=Wireless Keyboard - -usb:v04F3p0210* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v04F3p0212* - ID_PRODUCT_FROM_DATABASE=Laser Mouse - -usb:v04F3p0214* - ID_PRODUCT_FROM_DATABASE=Lynx M9 Optical Mouse - -usb:v04F3p0230* - ID_PRODUCT_FROM_DATABASE=3D Optical Mouse - -usb:v04F3p0232* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v04F3p02F4* - ID_PRODUCT_FROM_DATABASE=2.4G Cordless Mouse - -usb:v04F3p04A0* - ID_PRODUCT_FROM_DATABASE=Dream Cheeky Stress/Panic Button - -usb:v04F4* - ID_VENDOR_FROM_DATABASE=Harting Elektronik, Inc. - -usb:v04F5* - ID_VENDOR_FROM_DATABASE=Fujitsu-ICL Systems, Inc. - -usb:v04F6* - ID_VENDOR_FROM_DATABASE=Norand Corp. - -usb:v04F7* - ID_VENDOR_FROM_DATABASE=Newnex Technology Corp. - -usb:v04F8* - ID_VENDOR_FROM_DATABASE=FuturePlus Systems - -usb:v04F9* - ID_VENDOR_FROM_DATABASE=Brother Industries, Ltd - -usb:v04F9p0002* - ID_PRODUCT_FROM_DATABASE=HL-1050 Laser Printer - -usb:v04F9p0005* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p0006* - ID_PRODUCT_FROM_DATABASE=HL-1240 Laser Printer - -usb:v04F9p0007* - ID_PRODUCT_FROM_DATABASE=HL-1250 Laser Printer - -usb:v04F9p0008* - ID_PRODUCT_FROM_DATABASE=HL-1270 Laser Printer - -usb:v04F9p0009* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p000A* - ID_PRODUCT_FROM_DATABASE=P2500 series - -usb:v04F9p000B* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p000C* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p000D* - ID_PRODUCT_FROM_DATABASE=HL-1440 Laser Printer - -usb:v04F9p000E* - ID_PRODUCT_FROM_DATABASE=HL-1450 series - -usb:v04F9p000F* - ID_PRODUCT_FROM_DATABASE=HL-1470N series - -usb:v04F9p0010* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p0011* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p0012* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p0013* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p0014* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p0015* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p0016* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p0017* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p0018* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p001A* - ID_PRODUCT_FROM_DATABASE=HL-1430 Laser Printer - -usb:v04F9p001C* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p001E* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p0020* - ID_PRODUCT_FROM_DATABASE=HL-5130 series - -usb:v04F9p0021* - ID_PRODUCT_FROM_DATABASE=HL-5140 series - -usb:v04F9p0022* - ID_PRODUCT_FROM_DATABASE=HL-5150D series - -usb:v04F9p0023* - ID_PRODUCT_FROM_DATABASE=HL-5170DN series - -usb:v04F9p0024* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p0025* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p0027* - ID_PRODUCT_FROM_DATABASE=HL-2030 Laser Printer - -usb:v04F9p0028* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p0029* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p002A* - ID_PRODUCT_FROM_DATABASE=HL-52x0 series - -usb:v04F9p002B* - ID_PRODUCT_FROM_DATABASE=HL-5250DN Printer - -usb:v04F9p002C* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p002D* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p0039* - ID_PRODUCT_FROM_DATABASE=HL-5340 series - -usb:v04F9p0042* - ID_PRODUCT_FROM_DATABASE=HL-2270DW Laser Printer - -usb:v04F9p0100* - ID_PRODUCT_FROM_DATABASE=MFC8600/9650 series - -usb:v04F9p0101* - ID_PRODUCT_FROM_DATABASE=MFC9600/9870 series - -usb:v04F9p0102* - ID_PRODUCT_FROM_DATABASE=MFC9750/1200 series - -usb:v04F9p0104* - ID_PRODUCT_FROM_DATABASE=MFC-8300J - -usb:v04F9p0105* - ID_PRODUCT_FROM_DATABASE=MFC-9600J - -usb:v04F9p0106* - ID_PRODUCT_FROM_DATABASE=MFC-7300C - -usb:v04F9p0107* - ID_PRODUCT_FROM_DATABASE=MFC-7400C - -usb:v04F9p0108* - ID_PRODUCT_FROM_DATABASE=MFC-9200C - -usb:v04F9p0109* - ID_PRODUCT_FROM_DATABASE=MFC-830 - -usb:v04F9p010A* - ID_PRODUCT_FROM_DATABASE=MFC-840 - -usb:v04F9p010B* - ID_PRODUCT_FROM_DATABASE=MFC-860 - -usb:v04F9p010C* - ID_PRODUCT_FROM_DATABASE=MFC-7400J - -usb:v04F9p010D* - ID_PRODUCT_FROM_DATABASE=MFC-9200J - -usb:v04F9p010E* - ID_PRODUCT_FROM_DATABASE=MFC3100C Scanner - -usb:v04F9p010F* - ID_PRODUCT_FROM_DATABASE=MFC 5100C - -usb:v04F9p0110* - ID_PRODUCT_FROM_DATABASE=MFC4800 Scanner - -usb:v04F9p0111* - ID_PRODUCT_FROM_DATABASE=MFC 6800 - -usb:v04F9p0112* - ID_PRODUCT_FROM_DATABASE=DCP1000 Port(FaxModem) - -usb:v04F9p0113* - ID_PRODUCT_FROM_DATABASE=MFC-8500 - -usb:v04F9p0114* - ID_PRODUCT_FROM_DATABASE=MFC9700 Port(FaxModem) - -usb:v04F9p0115* - ID_PRODUCT_FROM_DATABASE=MFC9800 Scanner - -usb:v04F9p0116* - ID_PRODUCT_FROM_DATABASE=DCP1400 Scanner - -usb:v04F9p0119* - ID_PRODUCT_FROM_DATABASE=MFC-9660 - -usb:v04F9p011B* - ID_PRODUCT_FROM_DATABASE=MFC-9880 - -usb:v04F9p011C* - ID_PRODUCT_FROM_DATABASE=MFC-9760 - -usb:v04F9p011D* - ID_PRODUCT_FROM_DATABASE=MFC-9070 - -usb:v04F9p011E* - ID_PRODUCT_FROM_DATABASE=MFC-9180 - -usb:v04F9p011F* - ID_PRODUCT_FROM_DATABASE=MFC-9160 - -usb:v04F9p0120* - ID_PRODUCT_FROM_DATABASE=MFC580 Port(FaxModem) - -usb:v04F9p0121* - ID_PRODUCT_FROM_DATABASE=MFC-590 - -usb:v04F9p0122* - ID_PRODUCT_FROM_DATABASE=MFC-5100J - -usb:v04F9p0129* - ID_PRODUCT_FROM_DATABASE=Imagistics 2500 (MFC-8640D clone) - -usb:v04F9p012F* - ID_PRODUCT_FROM_DATABASE=FAX-4750e - -usb:v04F9p0132* - ID_PRODUCT_FROM_DATABASE=MFC-5200C RemovableDisk - -usb:v04F9p0135* - ID_PRODUCT_FROM_DATABASE=MFC-100 Scanner - -usb:v04F9p0136* - ID_PRODUCT_FROM_DATABASE=MFC-150CL Scanner - -usb:v04F9p013C* - ID_PRODUCT_FROM_DATABASE=MFC-890 Port - -usb:v04F9p013D* - ID_PRODUCT_FROM_DATABASE=MFC-5200J Printer - -usb:v04F9p013E* - ID_PRODUCT_FROM_DATABASE=MFC-4420C RemovableDisk - -usb:v04F9p013F* - ID_PRODUCT_FROM_DATABASE=MFC-4820C RemovableDisk - -usb:v04F9p0140* - ID_PRODUCT_FROM_DATABASE=DCP-8020 - -usb:v04F9p0141* - ID_PRODUCT_FROM_DATABASE=DCP-8025D - -usb:v04F9p0142* - ID_PRODUCT_FROM_DATABASE=MFC-8420 - -usb:v04F9p0143* - ID_PRODUCT_FROM_DATABASE=MFC-8820D - -usb:v04F9p0144* - ID_PRODUCT_FROM_DATABASE=DCP-4020C RemovableDisk - -usb:v04F9p0146* - ID_PRODUCT_FROM_DATABASE=MFC-3220C - -usb:v04F9p0147* - ID_PRODUCT_FROM_DATABASE=FAX-1820C Printer - -usb:v04F9p0148* - ID_PRODUCT_FROM_DATABASE=MFC-3320CN Printer - -usb:v04F9p0149* - ID_PRODUCT_FROM_DATABASE=FAX-1920CN Printer - -usb:v04F9p014A* - ID_PRODUCT_FROM_DATABASE=MFC-3420C - -usb:v04F9p014B* - ID_PRODUCT_FROM_DATABASE=MFC-3820CN - -usb:v04F9p014D* - ID_PRODUCT_FROM_DATABASE=FAX-1815C Printer - -usb:v04F9p014E* - ID_PRODUCT_FROM_DATABASE=MFC-8820J - -usb:v04F9p0150* - ID_PRODUCT_FROM_DATABASE=MFC-8220 Port(FaxModem) - -usb:v04F9p0151* - ID_PRODUCT_FROM_DATABASE=MFC-8210J - -usb:v04F9p0157* - ID_PRODUCT_FROM_DATABASE=MFC-3420J Printer - -usb:v04F9p0158* - ID_PRODUCT_FROM_DATABASE=MFC-3820JN Port(FaxModem) - -usb:v04F9p015D* - ID_PRODUCT_FROM_DATABASE=MFC Composite Device - -usb:v04F9p015E* - ID_PRODUCT_FROM_DATABASE=DCP-8045D - -usb:v04F9p015F* - ID_PRODUCT_FROM_DATABASE=MFC-8440 - -usb:v04F9p0160* - ID_PRODUCT_FROM_DATABASE=MFC-8840D - -usb:v04F9p0161* - ID_PRODUCT_FROM_DATABASE=MFC-210C - -usb:v04F9p0162* - ID_PRODUCT_FROM_DATABASE=MFC-420CN Remote Setup Port - -usb:v04F9p0163* - ID_PRODUCT_FROM_DATABASE=MFC-410CN RemovableDisk - -usb:v04F9p0165* - ID_PRODUCT_FROM_DATABASE=MFC-620CN - -usb:v04F9p0166* - ID_PRODUCT_FROM_DATABASE=MFC-610CLN RemovableDisk - -usb:v04F9p0168* - ID_PRODUCT_FROM_DATABASE=MFC-620CLN - -usb:v04F9p0169* - ID_PRODUCT_FROM_DATABASE=DCP-110C RemovableDisk - -usb:v04F9p016B* - ID_PRODUCT_FROM_DATABASE=DCP-310CN RemovableDisk - -usb:v04F9p016C* - ID_PRODUCT_FROM_DATABASE=FAX-2440C Printer - -usb:v04F9p016D* - ID_PRODUCT_FROM_DATABASE=MFC-5440CN - -usb:v04F9p016E* - ID_PRODUCT_FROM_DATABASE=MFC-5840CN Remote Setup Port - -usb:v04F9p0170* - ID_PRODUCT_FROM_DATABASE=FAX-1840C Printer - -usb:v04F9p0171* - ID_PRODUCT_FROM_DATABASE=FAX-1835C Printer - -usb:v04F9p0172* - ID_PRODUCT_FROM_DATABASE=FAX-1940CN Printer - -usb:v04F9p0173* - ID_PRODUCT_FROM_DATABASE=MFC-3240C Remote Setup Port - -usb:v04F9p0174* - ID_PRODUCT_FROM_DATABASE=MFC-3340CN RemovableDisk - -usb:v04F9p017B* - ID_PRODUCT_FROM_DATABASE=Imagistics sx2100 - -usb:v04F9p0180* - ID_PRODUCT_FROM_DATABASE=MFC-7420 - -usb:v04F9p0181* - ID_PRODUCT_FROM_DATABASE=MFC-7820N Port(FaxModem) - -usb:v04F9p0182* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v04F9p0183* - ID_PRODUCT_FROM_DATABASE=DCP-7020 - -usb:v04F9p0184* - ID_PRODUCT_FROM_DATABASE=DCP-7025 Printer - -usb:v04F9p0185* - ID_PRODUCT_FROM_DATABASE=MFC-7220 Printer - -usb:v04F9p0186* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v04F9p0187* - ID_PRODUCT_FROM_DATABASE=FAX-2820 Printer - -usb:v04F9p0188* - ID_PRODUCT_FROM_DATABASE=FAX-2920 Printer - -usb:v04F9p018A* - ID_PRODUCT_FROM_DATABASE=MFC-9420CN - -usb:v04F9p018C* - ID_PRODUCT_FROM_DATABASE=DCP-115C - -usb:v04F9p018D* - ID_PRODUCT_FROM_DATABASE=DCP-116C - -usb:v04F9p018E* - ID_PRODUCT_FROM_DATABASE=DCP-117C - -usb:v04F9p018F* - ID_PRODUCT_FROM_DATABASE=DCP-118C - -usb:v04F9p0190* - ID_PRODUCT_FROM_DATABASE=DCP-120C - -usb:v04F9p0191* - ID_PRODUCT_FROM_DATABASE=DCP-315CN - -usb:v04F9p0192* - ID_PRODUCT_FROM_DATABASE=DCP-340CW - -usb:v04F9p0193* - ID_PRODUCT_FROM_DATABASE=MFC-215C - -usb:v04F9p0194* - ID_PRODUCT_FROM_DATABASE=MFC-425CN - -usb:v04F9p0195* - ID_PRODUCT_FROM_DATABASE=MFC-820CW Remote Setup Port - -usb:v04F9p0196* - ID_PRODUCT_FROM_DATABASE=MFC-820CN Remote Setup Port - -usb:v04F9p0197* - ID_PRODUCT_FROM_DATABASE=MFC-640CW - -usb:v04F9p019A* - ID_PRODUCT_FROM_DATABASE=MFC-840CLN Remote Setup Port - -usb:v04F9p01A2* - ID_PRODUCT_FROM_DATABASE=MFC-8640D - -usb:v04F9p01A3* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v04F9p01A4* - ID_PRODUCT_FROM_DATABASE=DCP-8065DN Printer - -usb:v04F9p01A5* - ID_PRODUCT_FROM_DATABASE=MFC-8460N Port(FaxModem) - -usb:v04F9p01A6* - ID_PRODUCT_FROM_DATABASE=MFC-8860DN Port(FaxModem) - -usb:v04F9p01A7* - ID_PRODUCT_FROM_DATABASE=MFC-8870DW Printer - -usb:v04F9p01A8* - ID_PRODUCT_FROM_DATABASE=DCP-130C - -usb:v04F9p01A9* - ID_PRODUCT_FROM_DATABASE=DCP-330C - -usb:v04F9p01AA* - ID_PRODUCT_FROM_DATABASE=DCP-540CN - -usb:v04F9p01AB* - ID_PRODUCT_FROM_DATABASE=MFC-240C - -usb:v04F9p01AE* - ID_PRODUCT_FROM_DATABASE=DCP-750CW RemovableDisk - -usb:v04F9p01AF* - ID_PRODUCT_FROM_DATABASE=MFC-440CN - -usb:v04F9p01B0* - ID_PRODUCT_FROM_DATABASE=MFC-660CN - -usb:v04F9p01B1* - ID_PRODUCT_FROM_DATABASE=MFC-665CW Remote Setup Port - -usb:v04F9p01B2* - ID_PRODUCT_FROM_DATABASE=MFC-845CW Remote Setup Port - -usb:v04F9p01B4* - ID_PRODUCT_FROM_DATABASE=MFC-460CN Remote Setup Port - -usb:v04F9p01B5* - ID_PRODUCT_FROM_DATABASE=MFC-630CD - -usb:v04F9p01B6* - ID_PRODUCT_FROM_DATABASE=MFC-850CDN - -usb:v04F9p01B7* - ID_PRODUCT_FROM_DATABASE=MFC-5460CN Remote Setup Port - -usb:v04F9p01B8* - ID_PRODUCT_FROM_DATABASE=MFC-5860CN - -usb:v04F9p01BA* - ID_PRODUCT_FROM_DATABASE=MFC-3360C - -usb:v04F9p01BD* - ID_PRODUCT_FROM_DATABASE=MFC-8660DN - -usb:v04F9p01BE* - ID_PRODUCT_FROM_DATABASE=DCP-750CN RemovableDisk - -usb:v04F9p01BF* - ID_PRODUCT_FROM_DATABASE=MFC-860CDN Remote Setup Port - -usb:v04F9p01C0* - ID_PRODUCT_FROM_DATABASE=DCP-128C - -usb:v04F9p01C1* - ID_PRODUCT_FROM_DATABASE=DCP-129C - -usb:v04F9p01C2* - ID_PRODUCT_FROM_DATABASE=DCP-131C - -usb:v04F9p01C3* - ID_PRODUCT_FROM_DATABASE=DCP-329C - -usb:v04F9p01C4* - ID_PRODUCT_FROM_DATABASE=DCP-331C - -usb:v04F9p01C5* - ID_PRODUCT_FROM_DATABASE=MFC-239C - -usb:v04F9p01CA* - ID_PRODUCT_FROM_DATABASE=MFC-9440CN Remote Setup Port - -usb:v04F9p01CE* - ID_PRODUCT_FROM_DATABASE=DCP-135C - -usb:v04F9p01CF* - ID_PRODUCT_FROM_DATABASE=DCP-150C - -usb:v04F9p01D0* - ID_PRODUCT_FROM_DATABASE=DCP-350C - -usb:v04F9p01D1* - ID_PRODUCT_FROM_DATABASE=DCP-560CN - -usb:v04F9p01D4* - ID_PRODUCT_FROM_DATABASE=MFC-230C - -usb:v04F9p01D5* - ID_PRODUCT_FROM_DATABASE=MFC-235C - -usb:v04F9p01D6* - ID_PRODUCT_FROM_DATABASE=MFC-260C - -usb:v04F9p01DF* - ID_PRODUCT_FROM_DATABASE=DCP-155C - -usb:v04F9p01E0* - ID_PRODUCT_FROM_DATABASE=MFC-265C - -usb:v04F9p01E1* - ID_PRODUCT_FROM_DATABASE=DCP-153C - -usb:v04F9p01E2* - ID_PRODUCT_FROM_DATABASE=DCP-157C - -usb:v04F9p01E3* - ID_PRODUCT_FROM_DATABASE=DCP-353C - -usb:v04F9p01E4* - ID_PRODUCT_FROM_DATABASE=DCP-357C - -usb:v04F9p01E7* - ID_PRODUCT_FROM_DATABASE=MFC-7340 - -usb:v04F9p01E9* - ID_PRODUCT_FROM_DATABASE=DCP-7040 - -usb:v04F9p01EA* - ID_PRODUCT_FROM_DATABASE=DCP-7030 - -usb:v04F9p01EB* - ID_PRODUCT_FROM_DATABASE=MFC-7320 - -usb:v04F9p01F4* - ID_PRODUCT_FROM_DATABASE=MFC-5890CN - -usb:v04F9p0223* - ID_PRODUCT_FROM_DATABASE=DCP-365CN - -usb:v04F9p0248* - ID_PRODUCT_FROM_DATABASE=DCP-7055 scanner/printer - -usb:v04F9p1000* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p1002* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v04F9p2002* - ID_PRODUCT_FROM_DATABASE=PTUSB Printing - -usb:v04F9p2004* - ID_PRODUCT_FROM_DATABASE=PT-2300/2310 p-Touch Laber Printer - -usb:v04F9p2015* - ID_PRODUCT_FROM_DATABASE=QL-500 P-touch label printer - -usb:v04F9p2016* - ID_PRODUCT_FROM_DATABASE=QL-550 P-touch label printer - -usb:v04F9p201A* - ID_PRODUCT_FROM_DATABASE=PT-18R P-touch label printer - -usb:v04F9p201B* - ID_PRODUCT_FROM_DATABASE=QL-650TD P-Touch Label Printer - -usb:v04F9p2027* - ID_PRODUCT_FROM_DATABASE=QL-560 P-Touch Label Printer - -usb:v04F9p2100* - ID_PRODUCT_FROM_DATABASE=Card Reader Writer - -usb:v04FA* - ID_VENDOR_FROM_DATABASE=Dallas Semiconductor - -usb:v04FAp2490* - ID_PRODUCT_FROM_DATABASE=DS1490F 2-in-1 Fob, 1-Wire adapter - -usb:v04FAp4201* - ID_PRODUCT_FROM_DATABASE=DS4201 Audio DAC - -usb:v04FB* - ID_VENDOR_FROM_DATABASE=Biostar Microtech International Corp. - -usb:v04FC* - ID_VENDOR_FROM_DATABASE=Sunplus Technology Co., Ltd - -usb:v04FCp0003* - ID_PRODUCT_FROM_DATABASE=CM1092 / Wintech CM-5098 Optical Mouse - -usb:v04FCp0005* - ID_PRODUCT_FROM_DATABASE=USB OpticalWheel Mouse - -usb:v04FCp0013* - ID_PRODUCT_FROM_DATABASE=ViewMate Desktop Mouse CC2201 - -usb:v04FCp0015* - ID_PRODUCT_FROM_DATABASE=ViewMate Desktop Mouse CC2201 - -usb:v04FCp00D3* - ID_PRODUCT_FROM_DATABASE=00052486 / Laser Mouse M1052 [hama] - -usb:v04FCp0171* - ID_PRODUCT_FROM_DATABASE=SPCA1527A/SPCA1528 SD card camera (Mass Storage mode) - -usb:v04FCp0201* - ID_PRODUCT_FROM_DATABASE=RS232C Adapter - -usb:v04FCp0232* - ID_PRODUCT_FROM_DATABASE=Fingerprint - -usb:v04FCp0538* - ID_PRODUCT_FROM_DATABASE=Wireless Optical Mouse 2.4G [Bright] - -usb:v04FCp0561* - ID_PRODUCT_FROM_DATABASE=Flexcam 100 - -usb:v04FCp05D8* - ID_PRODUCT_FROM_DATABASE=Wireless keyboard/mouse - -usb:v04FCp0C15* - ID_PRODUCT_FROM_DATABASE=SPIF215A SATA bridge - -usb:v04FCp0C25* - ID_PRODUCT_FROM_DATABASE=SATALink SPIF225A - -usb:v04FCp1528* - ID_PRODUCT_FROM_DATABASE=SPCA1527A/SPCA1528 SD card camera (webcam mode) - -usb:v04FCp1533* - ID_PRODUCT_FROM_DATABASE=Mass Storage - -usb:v04FCp2080* - ID_PRODUCT_FROM_DATABASE=ASUS Webcam - -usb:v04FCp500C* - ID_PRODUCT_FROM_DATABASE=CA500C Digital Camera - -usb:v04FCp504A* - ID_PRODUCT_FROM_DATABASE=Aiptek Mini PenCam 1.3 - -usb:v04FCp504B* - ID_PRODUCT_FROM_DATABASE=Aiptek Mega PockerCam 1.3/Maxell MaxPocket LE 1.3 - -usb:v04FCp5330* - ID_PRODUCT_FROM_DATABASE=Digitrex 2110 - -usb:v04FCp5331* - ID_PRODUCT_FROM_DATABASE=Vivitar Vivicam 10 - -usb:v04FCp5360* - ID_PRODUCT_FROM_DATABASE=Sunplus Generic Digital Camera - -usb:v04FCp5720* - ID_PRODUCT_FROM_DATABASE=Card Reader Driver - -usb:v04FCp7333* - ID_PRODUCT_FROM_DATABASE=Finet Technology Palmpix DC-85 - -usb:v04FCp757A* - ID_PRODUCT_FROM_DATABASE=Aiptek, MP315 MP3 Player - -usb:v04FCpFFFF* - ID_PRODUCT_FROM_DATABASE=PureDigital Ritz Disposable - -usb:v04FD* - ID_VENDOR_FROM_DATABASE=Soliton Systems, K.K. - -usb:v04FDp0003* - ID_PRODUCT_FROM_DATABASE=Smart Card Reader II - -usb:v04FE* - ID_VENDOR_FROM_DATABASE=PFU, Ltd - -usb:v04FF* - ID_VENDOR_FROM_DATABASE=E-CMOS Corp. - -usb:v0500* - ID_VENDOR_FROM_DATABASE=Siam United Hi-Tech - -usb:v0500p0001* - ID_PRODUCT_FROM_DATABASE=DART Keyboard Mouse - -usb:v0500p0002* - ID_PRODUCT_FROM_DATABASE=DART-2 Keyboard - -usb:v0501* - ID_VENDOR_FROM_DATABASE=Fujikura DDK, Ltd - -usb:v0502* - ID_VENDOR_FROM_DATABASE=Acer, Inc. - -usb:v0502p0001* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0502p0736* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0502p15B1* - ID_PRODUCT_FROM_DATABASE=PDA n311 - -usb:v0502p1631* - ID_PRODUCT_FROM_DATABASE=c10 Series - -usb:v0502p1632* - ID_PRODUCT_FROM_DATABASE=c20 Series - -usb:v0502p16E1* - ID_PRODUCT_FROM_DATABASE=n10 Handheld Sync - -usb:v0502p16E2* - ID_PRODUCT_FROM_DATABASE=n20 Pocket PC Sync - -usb:v0502p16E3* - ID_PRODUCT_FROM_DATABASE=n30 Handheld Sync - -usb:v0502p3202* - ID_PRODUCT_FROM_DATABASE=Liquid - -usb:v0502p3203* - ID_PRODUCT_FROM_DATABASE=Liquid (Debug mode) - -usb:v0502p3317* - ID_PRODUCT_FROM_DATABASE=Liquid - -usb:v0502p3325* - ID_PRODUCT_FROM_DATABASE=Iconia tablet A500 - -usb:v0502p3341* - ID_PRODUCT_FROM_DATABASE=Iconia tablet A500 - -usb:v0502pD001* - ID_PRODUCT_FROM_DATABASE=Divio NW801/DVC-V6+ Digital Camera - -usb:v0503* - ID_VENDOR_FROM_DATABASE=Hitachi America, Ltd - -usb:v0504* - ID_VENDOR_FROM_DATABASE=Hayes Microcomputer Products - -usb:v0506* - ID_VENDOR_FROM_DATABASE=3Com Corp. - -usb:v0506p009D* - ID_PRODUCT_FROM_DATABASE=HomeConnect Camera - -usb:v0506p00A0* - ID_PRODUCT_FROM_DATABASE=3CREB96 Bluetooth Adapter - -usb:v0506p00A1* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0506p00A2* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0506p00DF* - ID_PRODUCT_FROM_DATABASE=3Com Home Connect lite - -usb:v0506p0100* - ID_PRODUCT_FROM_DATABASE=HomeConnect ADSL Modem Driver - -usb:v0506p03E8* - ID_PRODUCT_FROM_DATABASE=3C19250 Ethernet [klsi] - -usb:v0506p0A01* - ID_PRODUCT_FROM_DATABASE=3CRSHEW696 Wireless Adapter - -usb:v0506p0A11* - ID_PRODUCT_FROM_DATABASE=3CRWE254G72 802.11g Adapter - -usb:v0506p11F8* - ID_PRODUCT_FROM_DATABASE=HomeConnect 3C460 - -usb:v0506p2922* - ID_PRODUCT_FROM_DATABASE=HomeConnect Cable Modem External with - -usb:v0506p3021* - ID_PRODUCT_FROM_DATABASE=U.S.Robotics 56000 Voice FaxModem Pro - -usb:v0506p4601* - ID_PRODUCT_FROM_DATABASE=3C460B 10/100 Ethernet Adapter - -usb:v0506pF002* - ID_PRODUCT_FROM_DATABASE=3CP4218 ADSL Modem (pre-init) - -usb:v0506pF003* - ID_PRODUCT_FROM_DATABASE=3CP4218 ADSL Modem - -usb:v0506pF100* - ID_PRODUCT_FROM_DATABASE=3CP4218 ADSL Modem (pre-init) - -usb:v0507* - ID_VENDOR_FROM_DATABASE=Hosiden Corp. - -usb:v0507p0011* - ID_PRODUCT_FROM_DATABASE=Konami ParaParaParadise Controller - -usb:v0508* - ID_VENDOR_FROM_DATABASE=Clarion Co., Ltd - -usb:v0509* - ID_VENDOR_FROM_DATABASE=Aztech Systems, Ltd - -usb:v0509p0801* - ID_PRODUCT_FROM_DATABASE=ADSL Modem - -usb:v0509p0802* - ID_PRODUCT_FROM_DATABASE=ADSL Modem (RFC1483) - -usb:v0509p0806* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v0509p080F* - ID_PRODUCT_FROM_DATABASE=Binatone ADSL500 Modem Network Interface - -usb:v0509p0812* - ID_PRODUCT_FROM_DATABASE=Pirelli ADSL Modem Network Interface - -usb:v050A* - ID_VENDOR_FROM_DATABASE=Cinch Connectors - -usb:v050B* - ID_VENDOR_FROM_DATABASE=Cable System International - -usb:v050C* - ID_VENDOR_FROM_DATABASE=InnoMedia, Inc. - -usb:v050D* - ID_VENDOR_FROM_DATABASE=Belkin Components - -usb:v050Dp0004* - ID_PRODUCT_FROM_DATABASE=Direct Connect - -usb:v050Dp0012* - ID_PRODUCT_FROM_DATABASE=F8T012 Bluetooth Adapter - -usb:v050Dp0013* - ID_PRODUCT_FROM_DATABASE=F8T013 Bluetooth Adapter - -usb:v050Dp0017* - ID_PRODUCT_FROM_DATABASE=B8T017 Bluetooth+EDR 2.1 - -usb:v050Dp003A* - ID_PRODUCT_FROM_DATABASE=Universal Media Reader - -usb:v050Dp0050* - ID_PRODUCT_FROM_DATABASE=F5D6050 802.11b Wireless Adapter v2000 [Atmel at76c503a] - -usb:v050Dp0081* - ID_PRODUCT_FROM_DATABASE=F8T001v2 Bluetooth - -usb:v050Dp0083* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v050Dp0084* - ID_PRODUCT_FROM_DATABASE=F8T003v2 Bluetooth - -usb:v050Dp0102* - ID_PRODUCT_FROM_DATABASE=Flip KVM - -usb:v050Dp0103* - ID_PRODUCT_FROM_DATABASE=F5U103 Serial Adapter [etek] - -usb:v050Dp0106* - ID_PRODUCT_FROM_DATABASE=VideoBus II Adapter, Video - -usb:v050Dp0108* - ID_PRODUCT_FROM_DATABASE=F1DE108B KVM - -usb:v050Dp0109* - ID_PRODUCT_FROM_DATABASE=F5U109/F5U409 PDA Adapter - -usb:v050Dp0115* - ID_PRODUCT_FROM_DATABASE=SCSI Adapter - -usb:v050Dp0119* - ID_PRODUCT_FROM_DATABASE=F5U120-PC Dual PS/2 Ports / F5U118-UNV ADB Adapter - -usb:v050Dp0121* - ID_PRODUCT_FROM_DATABASE=F5D5050 100Mbps Ethernet - -usb:v050Dp0122* - ID_PRODUCT_FROM_DATABASE=Ethernet Adapter - -usb:v050Dp0131* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device with trace filter - -usb:v050Dp016A* - ID_PRODUCT_FROM_DATABASE=Bluetooth Mini Dongle - -usb:v050Dp0200* - ID_PRODUCT_FROM_DATABASE=Nostromo SpeedPad n52te Gaming Keyboard - -usb:v050Dp0201* - ID_PRODUCT_FROM_DATABASE=Peripheral Switch - -usb:v050Dp0208* - ID_PRODUCT_FROM_DATABASE=USBView II Video Adapter [nt1004] - -usb:v050Dp0210* - ID_PRODUCT_FROM_DATABASE=F5U228 Hi-Speed USB 2.0 DVD Creator - -usb:v050Dp0211* - ID_PRODUCT_FROM_DATABASE=F5U211 USB 2.0 15-in-1 Media Reader & Writer - -usb:v050Dp0224* - ID_PRODUCT_FROM_DATABASE=F5U224 USB 2.0 4-Port Hub - -usb:v050Dp0234* - ID_PRODUCT_FROM_DATABASE=F5U234 USB 2.0 4-Port Hub - -usb:v050Dp0237* - ID_PRODUCT_FROM_DATABASE=F5U237 USB 2.0 7-Port Hub - -usb:v050Dp0240* - ID_PRODUCT_FROM_DATABASE=F5U240 USB 2.0 CF Card Reader - -usb:v050Dp0249* - ID_PRODUCT_FROM_DATABASE=USB 2 Flash Media Device - -usb:v050Dp0257* - ID_PRODUCT_FROM_DATABASE=F5U257 Serial - -usb:v050Dp0304* - ID_PRODUCT_FROM_DATABASE=FSU304 USB 2.0 - 4 Ports Hub - -usb:v050Dp0307* - ID_PRODUCT_FROM_DATABASE=USB 2.0 - 7 ports Hub [FSU307] - -usb:v050Dp0409* - ID_PRODUCT_FROM_DATABASE=F5U409 Serial - -usb:v050Dp0551* - ID_PRODUCT_FROM_DATABASE=F6C550-AVR UPS - -usb:v050Dp0706* - ID_PRODUCT_FROM_DATABASE=2-N-1 7-Port Hub (Lower half) - -usb:v050Dp0802* - ID_PRODUCT_FROM_DATABASE=Nostromo n40 Gamepad - -usb:v050Dp0803* - ID_PRODUCT_FROM_DATABASE=Nostromo 1745 GamePad - -usb:v050Dp0805* - ID_PRODUCT_FROM_DATABASE=Nostromo N50 GamePad - -usb:v050Dp0815* - ID_PRODUCT_FROM_DATABASE=Nostromo n52 HID SpeedPad Mouse Wheel - -usb:v050Dp0826* - ID_PRODUCT_FROM_DATABASE=ErgoFit Wireless Optical Mouse (HID) - -usb:v050Dp0980* - ID_PRODUCT_FROM_DATABASE=HID UPS Battery - -usb:v050Dp1004* - ID_PRODUCT_FROM_DATABASE=F9L1004 802.11n Surf N300 XR Wireless Adapter [Realtek RTL8192CU] - -usb:v050Dp1102* - ID_PRODUCT_FROM_DATABASE=F7D1102 N150/Surf Micro Wireless Adapter v1000 [Realtek RTL8188CUS] - -usb:v050Dp1103* - ID_PRODUCT_FROM_DATABASE=F9L1103 N750 DB 802.11abgn 2x3:3 [Ralink RT3573] - -usb:v050Dp11F2* - ID_PRODUCT_FROM_DATABASE=ISY Wireless Micro Adapter IWL 2000 [RTL8188CUS] - -usb:v050Dp1202* - ID_PRODUCT_FROM_DATABASE=F5U120-PC Parallel Printer Port - -usb:v050Dp1203* - ID_PRODUCT_FROM_DATABASE=F5U120-PC Serial Port - -usb:v050Dp2103* - ID_PRODUCT_FROM_DATABASE=F7D2102 802.11n N300 Micro Wireless Adapter v3000 [Realtek RTL8192CU] - -usb:v050Dp21F1* - ID_PRODUCT_FROM_DATABASE=N300 WLAN N Adapter [ISY] - -usb:v050Dp258A* - ID_PRODUCT_FROM_DATABASE=F5U258 Host to Host cable - -usb:v050Dp3101* - ID_PRODUCT_FROM_DATABASE=F1DF102U/F1DG102U Flip Hub - -usb:v050Dp3201* - ID_PRODUCT_FROM_DATABASE=F1DF102U/F1DG102U Flip KVM - -usb:v050Dp4050* - ID_PRODUCT_FROM_DATABASE=ZD1211B - -usb:v050Dp5055* - ID_PRODUCT_FROM_DATABASE=F5D5055 Gigabit Network Adapter [AX88xxx] - -usb:v050Dp6050* - ID_PRODUCT_FROM_DATABASE=F6D6050 802.11abgn Wireless Adapter [Broadcom BCM4323] - -usb:v050Dp6051* - ID_PRODUCT_FROM_DATABASE=F5D6051 802.11b Wireless Network Adapter [ZyDAS ZD1201] - -usb:v050Dp615A* - ID_PRODUCT_FROM_DATABASE=F7D4101 / F9L1101 802.11abgn Wireless Adapter [Broadcom BCM4323] - -usb:v050Dp7050* - ID_PRODUCT_FROM_DATABASE=F5D7050 Wireless G Adapter v1000/v2000 [Intersil ISL3887] - -usb:v050Dp7051* - ID_PRODUCT_FROM_DATABASE=F5D7051 802.11g Adapter v1000 [Broadcom 4320 USB] - -usb:v050Dp705A* - ID_PRODUCT_FROM_DATABASE=F5D7050 Wireless G Adapter v3000 [Ralink RT2571W] - -usb:v050Dp705B* - ID_PRODUCT_FROM_DATABASE=Wireless G Adapter - -usb:v050Dp705C* - ID_PRODUCT_FROM_DATABASE=F5D7050 Wireless G Adapter v4000 [Zydas ZD1211B] - -usb:v050Dp705E* - ID_PRODUCT_FROM_DATABASE=F5D7050 Wireless G Adapter v5000 [Realtek RTL8187B] - -usb:v050Dp706A* - ID_PRODUCT_FROM_DATABASE=2-N-1 7-Port Hub (Upper half) - -usb:v050Dp8053* - ID_PRODUCT_FROM_DATABASE=F5D8053 N Wireless USB Adapter v1000/v4000 [Ralink RT2870] - -usb:v050Dp805C* - ID_PRODUCT_FROM_DATABASE=F5D8053 N Wireless Adapter v3000 [Ralink RT2870] - -usb:v050Dp805E* - ID_PRODUCT_FROM_DATABASE=F5D8053 N Wireless USB Adapter v5000 [Realtek RTL8192U] - -usb:v050Dp815C* - ID_PRODUCT_FROM_DATABASE=F5D8053 N Wireless USB Adapter v3000 [Ralink RT2870] - -usb:v050Dp815F* - ID_PRODUCT_FROM_DATABASE=F5D8053 N Wireless USB Adapter v6000 [Realtek RTL8192SU] - -usb:v050Dp825A* - ID_PRODUCT_FROM_DATABASE=F5D8055 N+ Wireless Adapter v1000 [Ralink RT2870] - -usb:v050Dp825B* - ID_PRODUCT_FROM_DATABASE=F5D8055 N+ Wireless Adapter v2000 [Ralink RT3072] - -usb:v050Dp845A* - ID_PRODUCT_FROM_DATABASE=F7D2101 802.11n Surf & Share Wireless Adapter v1000 [Realtek RTL8192SU] - -usb:v050Dp905B* - ID_PRODUCT_FROM_DATABASE=F5D9050 Wireless G+ MIMO Network Adapter v3000 [Ralink RT2573] - -usb:v050Dp905C* - ID_PRODUCT_FROM_DATABASE=F5D9050 Wireless G+ MIMO Network Adapter v4000 [Ralink RT2573] - -usb:v050Dp935A* - ID_PRODUCT_FROM_DATABASE=F6D4050 N150 Enhanced Wireless Network Adapter v1000 [Ralink RT3070] - -usb:v050Dp935B* - ID_PRODUCT_FROM_DATABASE=F6D4050 N150 Enhanced Wireless Network Adapter v2000 [Ralink RT3070] - -usb:v050Dp945A* - ID_PRODUCT_FROM_DATABASE=F7D1101 v1 Basic Wireless Adapter [Realtek RTL8188SU] - -usb:v050Dp945B* - ID_PRODUCT_FROM_DATABASE=F7D1101 v2 Basic Wireless Adapter [Ralink RT3370] - -usb:v050DpD321* - ID_PRODUCT_FROM_DATABASE=Dynex DX-NUSB 802.11bgn Wireless Adapter [Broadcom BCM43231] - -usb:v050E* - ID_VENDOR_FROM_DATABASE=Neon Technology, Inc. - -usb:v050F* - ID_VENDOR_FROM_DATABASE=KC Technology, Inc. - -usb:v050Fp0001* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v050Fp0003* - ID_PRODUCT_FROM_DATABASE=KC82C160S Hub - -usb:v050Fp0180* - ID_PRODUCT_FROM_DATABASE=KC-180 IrDA Dongle - -usb:v050Fp0190* - ID_PRODUCT_FROM_DATABASE=KC2190 USB Host-to-Host cable - -usb:v0510* - ID_VENDOR_FROM_DATABASE=Sejin Electron, Inc. - -usb:v0510p0001* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v0510p1000* - ID_PRODUCT_FROM_DATABASE=Keyboard with PS/2 Mouse Port - -usb:v0510pE001* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v0511* - ID_VENDOR_FROM_DATABASE=N'Able (DataBook) Technologies, Inc. - -usb:v0511p002B* - ID_PRODUCT_FROM_DATABASE=AOC DVB - -usb:v0512* - ID_VENDOR_FROM_DATABASE=Hualon Microelectronics Corp. - -usb:v0513* - ID_VENDOR_FROM_DATABASE=digital-X, Inc. - -usb:v0514* - ID_VENDOR_FROM_DATABASE=FCI Electronics - -usb:v0515* - ID_VENDOR_FROM_DATABASE=ACTC - -usb:v0516* - ID_VENDOR_FROM_DATABASE=Longwell Electronics - -usb:v0517* - ID_VENDOR_FROM_DATABASE=Butterfly Communications - -usb:v0518* - ID_VENDOR_FROM_DATABASE=EzKEY Corp. - -usb:v0518p0001* - ID_PRODUCT_FROM_DATABASE=USB to PS2 Adaptor v1.09 - -usb:v0518p0002* - ID_PRODUCT_FROM_DATABASE=EZ-9900C Keyboard - -usb:v0519* - ID_VENDOR_FROM_DATABASE=Star Micronics Co., Ltd - -usb:v0519p0003* - ID_PRODUCT_FROM_DATABASE=TSP100ECO/TSP100II - -usb:v0519pC002* - ID_PRODUCT_FROM_DATABASE=Xlive Bluetooth XBM-100S MP3 Player - -usb:v051A* - ID_VENDOR_FROM_DATABASE=WYSE Technology - -usb:v051ApA005* - ID_PRODUCT_FROM_DATABASE=Smart Display Version 9973 - -usb:v051B* - ID_VENDOR_FROM_DATABASE=Silicon Graphics - -usb:v051C* - ID_VENDOR_FROM_DATABASE=Shuttle, Inc. - -usb:v051Cp0005* - ID_PRODUCT_FROM_DATABASE=VFD Module - -usb:v051CpC001* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v051CpC002* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v051D* - ID_VENDOR_FROM_DATABASE=American Power Conversion - -usb:v051Dp0001* - ID_PRODUCT_FROM_DATABASE=UPS - -usb:v051Dp0002* - ID_PRODUCT_FROM_DATABASE=Uninterruptible Power Supply - -usb:v051Dp0003* - ID_PRODUCT_FROM_DATABASE=UPS - -usb:v051E* - ID_VENDOR_FROM_DATABASE=Scientific Atlanta, Inc. - -usb:v051F* - ID_VENDOR_FROM_DATABASE=IO Systems (Elite Electronics), Inc. - -usb:v0520* - ID_VENDOR_FROM_DATABASE=Taiwan Semiconductor Manufacturing Co. - -usb:v0521* - ID_VENDOR_FROM_DATABASE=Airborn Connectors - -usb:v0522* - ID_VENDOR_FROM_DATABASE=Advanced Connectek, Inc. - -usb:v0523* - ID_VENDOR_FROM_DATABASE=ATEN GmbH - -usb:v0524* - ID_VENDOR_FROM_DATABASE=Sola Electronics - -usb:v0525* - ID_VENDOR_FROM_DATABASE=Netchip Technology, Inc. - -usb:v0525p100D* - ID_PRODUCT_FROM_DATABASE=RFMD Bluetooth Device - -usb:v0525p1080* - ID_PRODUCT_FROM_DATABASE=NET1080 USB-USB Bridge - -usb:v0525p1200* - ID_PRODUCT_FROM_DATABASE=SSDC Adapter II - -usb:v0525p1265* - ID_PRODUCT_FROM_DATABASE=File-backed Storage Gadget - -usb:v0525pA0F0* - ID_PRODUCT_FROM_DATABASE=Cambridge Electronic Devices Power1401 mk 2 - -usb:v0525pA140* - ID_PRODUCT_FROM_DATABASE=USB Clik! 40 - -usb:v0525pA141* - ID_PRODUCT_FROM_DATABASE=(OME) PocketZip 40 MP3 Player Driver - -usb:v0525pA220* - ID_PRODUCT_FROM_DATABASE=GVC Bluetooth Wireless Adapter - -usb:v0525pA4A0* - ID_PRODUCT_FROM_DATABASE=Linux-USB "Gadget Zero" - -usb:v0525pA4A1* - ID_PRODUCT_FROM_DATABASE=Linux-USB Ethernet Gadget - -usb:v0525pA4A2* - ID_PRODUCT_FROM_DATABASE=Linux-USB Ethernet/RNDIS Gadget - -usb:v0525pA4A3* - ID_PRODUCT_FROM_DATABASE=Linux-USB user-mode isochronous source/sink - -usb:v0525pA4A4* - ID_PRODUCT_FROM_DATABASE=Linux-USB user-mode bulk source/sink - -usb:v0525pA4A5* - ID_PRODUCT_FROM_DATABASE=Linux-USB File Storage Gadget - -usb:v0525pA4A6* - ID_PRODUCT_FROM_DATABASE=Linux-USB Serial Gadget - -usb:v0525pA4A7* - ID_PRODUCT_FROM_DATABASE=Linux-USB Serial Gadget (CDC ACM mode) - -usb:v0525pA4A8* - ID_PRODUCT_FROM_DATABASE=Linux-USB Printer Gadget - -usb:v0525pA4A9* - ID_PRODUCT_FROM_DATABASE=Linux-USB OBEX Gadget - -usb:v0525pA4AA* - ID_PRODUCT_FROM_DATABASE=Linux-USB CDC Composite Gadge (Ethernet and ACM) - -usb:v0526* - ID_VENDOR_FROM_DATABASE=Temic MHS S.A. - -usb:v0527* - ID_VENDOR_FROM_DATABASE=ALTRA - -usb:v0528* - ID_VENDOR_FROM_DATABASE=ATI Technologies, Inc. - -usb:v0528p7561* - ID_PRODUCT_FROM_DATABASE=TV Wonder - -usb:v0528p7562* - ID_PRODUCT_FROM_DATABASE=TV Wonder, Edition (FN5) - -usb:v0528p7563* - ID_PRODUCT_FROM_DATABASE=TV Wonder, Edition (FI) - -usb:v0528p7564* - ID_PRODUCT_FROM_DATABASE=TV Wonder, Edition (FQ) - -usb:v0528p7565* - ID_PRODUCT_FROM_DATABASE=TV Wonder, Edition (NTSC+) - -usb:v0528p7566* - ID_PRODUCT_FROM_DATABASE=TV Wonder, Edition (FN5) - -usb:v0528p7567* - ID_PRODUCT_FROM_DATABASE=TV Wonder, Edition (FI) - -usb:v0528p7568* - ID_PRODUCT_FROM_DATABASE=TV Wonder, Edition (FQ) - -usb:v0528p7569* - ID_PRODUCT_FROM_DATABASE=Live! Pro (A) - -usb:v0528p756A* - ID_PRODUCT_FROM_DATABASE=Live! Pro Audio (O) - -usb:v0529* - ID_VENDOR_FROM_DATABASE=Aladdin Knowledge Systems - -usb:v0529p0001* - ID_PRODUCT_FROM_DATABASE=HASP v0.06 - -usb:v0529p030B* - ID_PRODUCT_FROM_DATABASE=eToken R1 v3.1.3.x - -usb:v0529p0313* - ID_PRODUCT_FROM_DATABASE=eToken R1 v3.2.3.x - -usb:v0529p031B* - ID_PRODUCT_FROM_DATABASE=eToken R1 v3.3.3.x - -usb:v0529p0323* - ID_PRODUCT_FROM_DATABASE=eToken R1 v3.4.3.x - -usb:v0529p0412* - ID_PRODUCT_FROM_DATABASE=eToken R2 v2.2.4.x - -usb:v0529p041A* - ID_PRODUCT_FROM_DATABASE=eToken R2 v2.2.4.x - -usb:v0529p0422* - ID_PRODUCT_FROM_DATABASE=eToken R2 v2.4.4.x - -usb:v0529p042A* - ID_PRODUCT_FROM_DATABASE=eToken R2 v2.5.4.x - -usb:v0529p050C* - ID_PRODUCT_FROM_DATABASE=eToken Pro v4.1.5.x - -usb:v0529p0514* - ID_PRODUCT_FROM_DATABASE=eToken Pro v4.2.5.4 - -usb:v0529p0600* - ID_PRODUCT_FROM_DATABASE=eToken Pro 64k (4.2) - -usb:v0529p0620* - ID_PRODUCT_FROM_DATABASE=Token JC - -usb:v052A* - ID_VENDOR_FROM_DATABASE=Crescent Heart Software - -usb:v052B* - ID_VENDOR_FROM_DATABASE=Tekom Technologies, Inc. - -usb:v052Bp0102* - ID_PRODUCT_FROM_DATABASE=Ca508A HP1020 Camera v.1.3.1.6 - -usb:v052Bp0801* - ID_PRODUCT_FROM_DATABASE=Yakumo MegaImage 37 - -usb:v052Bp1512* - ID_PRODUCT_FROM_DATABASE=Yakumo MegaImage IV - -usb:v052Bp1513* - ID_PRODUCT_FROM_DATABASE=Aosta CX100 Webcam - -usb:v052Bp1514* - ID_PRODUCT_FROM_DATABASE=Aosta CX100 Webcam Storage - -usb:v052Bp1905* - ID_PRODUCT_FROM_DATABASE=Yakumo MegaImage 47 - -usb:v052Bp1911* - ID_PRODUCT_FROM_DATABASE=Yakumo MegaImage 47 SL - -usb:v052Bp2202* - ID_PRODUCT_FROM_DATABASE=WDM Still Image Capture - -usb:v052Bp2203* - ID_PRODUCT_FROM_DATABASE=Sound Vision Stream Driver - -usb:v052Bp3A06* - ID_PRODUCT_FROM_DATABASE=DigiLife DDV-5120A - -usb:v052BpD001* - ID_PRODUCT_FROM_DATABASE=P35U Camera Capture - -usb:v052C* - ID_VENDOR_FROM_DATABASE=Canon Information Systems, Inc. - -usb:v052D* - ID_VENDOR_FROM_DATABASE=Avid Electronics Corp. - -usb:v052E* - ID_VENDOR_FROM_DATABASE=Standard Microsystems Corp. - -usb:v052F* - ID_VENDOR_FROM_DATABASE=Unicore Software, Inc. - -usb:v0530* - ID_VENDOR_FROM_DATABASE=American Microsystems, Inc. - -usb:v0531* - ID_VENDOR_FROM_DATABASE=Wacom Technology Corp. - -usb:v0532* - ID_VENDOR_FROM_DATABASE=Systech Corp. - -usb:v0533* - ID_VENDOR_FROM_DATABASE=Alcatel Mobile Phones - -usb:v0534* - ID_VENDOR_FROM_DATABASE=Motorola, Inc. - -usb:v0535* - ID_VENDOR_FROM_DATABASE=LIH TZU Electric Co., Ltd - -usb:v0536* - ID_VENDOR_FROM_DATABASE=Hand Held Products (Welch Allyn, Inc.) - -usb:v0536p01A0* - ID_PRODUCT_FROM_DATABASE=PDT - -usb:v0537* - ID_VENDOR_FROM_DATABASE=Inventec Corp. - -usb:v0538* - ID_VENDOR_FROM_DATABASE=Caldera International, Inc. (SCO) - -usb:v0539* - ID_VENDOR_FROM_DATABASE=Shyh Shiun Terminals Co., Ltd - -usb:v053A* - ID_VENDOR_FROM_DATABASE=PrehKeyTec GmbH - -usb:v053Ap0B00* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v053B* - ID_VENDOR_FROM_DATABASE=Global Village Communication - -usb:v053C* - ID_VENDOR_FROM_DATABASE=Institut of Microelectronic & Mechatronic Systems - -usb:v053D* - ID_VENDOR_FROM_DATABASE=Silicon Architect - -usb:v053E* - ID_VENDOR_FROM_DATABASE=Mobility Electronics - -usb:v053F* - ID_VENDOR_FROM_DATABASE=Synopsys, Inc. - -usb:v0540* - ID_VENDOR_FROM_DATABASE=UniAccess AB - -usb:v0540p0101* - ID_PRODUCT_FROM_DATABASE=Panache Surf ISDN TA - -usb:v0541* - ID_VENDOR_FROM_DATABASE=Sirf Technology, Inc. - -usb:v0543* - ID_VENDOR_FROM_DATABASE=ViewSonic Corp. - -usb:v0543p00FE* - ID_PRODUCT_FROM_DATABASE=G773 Monitor Hub - -usb:v0543p00FF* - ID_PRODUCT_FROM_DATABASE=P815 Monitor Hub - -usb:v0543p0BF2* - ID_PRODUCT_FROM_DATABASE=airpanel V150 Wireless Smart Display - -usb:v0543p0BF3* - ID_PRODUCT_FROM_DATABASE=airpanel V110 Wireless Smart Display - -usb:v0543p0ED9* - ID_PRODUCT_FROM_DATABASE=Color Pocket PC V35 - -usb:v0543p0F01* - ID_PRODUCT_FROM_DATABASE=airsync Wi-Fi Wireless Adapter - -usb:v0543p1527* - ID_PRODUCT_FROM_DATABASE=Color Pocket PC V36 - -usb:v0543p1529* - ID_PRODUCT_FROM_DATABASE=Color Pocket PC V37 - -usb:v0543p152B* - ID_PRODUCT_FROM_DATABASE=Color Pocket PC V38 - -usb:v0543p152E* - ID_PRODUCT_FROM_DATABASE=Pocket PC - -usb:v0543p1921* - ID_PRODUCT_FROM_DATABASE=Communicator Pocket PC - -usb:v0543p1922* - ID_PRODUCT_FROM_DATABASE=Smartphone - -usb:v0543p1923* - ID_PRODUCT_FROM_DATABASE=Pocket PC V30 - -usb:v0543p1A11* - ID_PRODUCT_FROM_DATABASE=Wireless 802.11g Adapter - -usb:v0543p1E60* - ID_PRODUCT_FROM_DATABASE=TA310 - ATSC/NTSC/PAL Driver(PCM4) - -usb:v0543p4153* - ID_PRODUCT_FROM_DATABASE=ViewSonic G773 Control (?) - -usb:v0544* - ID_VENDOR_FROM_DATABASE=Cristie Electronics, Ltd - -usb:v0545* - ID_VENDOR_FROM_DATABASE=Xirlink, Inc. - -usb:v0545p7333* - ID_PRODUCT_FROM_DATABASE=Trution Web Camera - -usb:v0545p8002* - ID_PRODUCT_FROM_DATABASE=IBM NetCamera - -usb:v0545p8009* - ID_PRODUCT_FROM_DATABASE=Veo PC Camera - -usb:v0545p800C* - ID_PRODUCT_FROM_DATABASE=Veo Stingray - -usb:v0545p800D* - ID_PRODUCT_FROM_DATABASE=Veo PC Camera - -usb:v0545p8080* - ID_PRODUCT_FROM_DATABASE=IBM C-It Webcam - -usb:v0545p808A* - ID_PRODUCT_FROM_DATABASE=Veo PC Camera - -usb:v0545p808B* - ID_PRODUCT_FROM_DATABASE=Veo Stingray - -usb:v0545p808D* - ID_PRODUCT_FROM_DATABASE=Veo PC Camera - -usb:v0545p810A* - ID_PRODUCT_FROM_DATABASE=Veo Advanced Connect Webcam - -usb:v0545p810B* - ID_PRODUCT_FROM_DATABASE=Veo PC Camera - -usb:v0545p810C* - ID_PRODUCT_FROM_DATABASE=Veo PC Camera - -usb:v0545p8135* - ID_PRODUCT_FROM_DATABASE=Veo Mobile/Advanced Web Camera - -usb:v0545p813A* - ID_PRODUCT_FROM_DATABASE=Veo PC Camera - -usb:v0545p813B* - ID_PRODUCT_FROM_DATABASE=Veo PC Camera - -usb:v0545p813C* - ID_PRODUCT_FROM_DATABASE=Veo Mobile/Advanced Web Camera - -usb:v0545p8333* - ID_PRODUCT_FROM_DATABASE=Veo Stingray/Connect Web Camera - -usb:v0545p888C* - ID_PRODUCT_FROM_DATABASE=eVision 123 digital camera - -usb:v0545p888D* - ID_PRODUCT_FROM_DATABASE=eVision 123 digital camera - -usb:v0546* - ID_VENDOR_FROM_DATABASE=Polaroid Corp. - -usb:v0546p0DAF* - ID_PRODUCT_FROM_DATABASE=PDC 2300Z - -usb:v0546p1BED* - ID_PRODUCT_FROM_DATABASE=PDC 1320 Camera - -usb:v0546p3097* - ID_PRODUCT_FROM_DATABASE=PDC 310 - -usb:v0546p3155* - ID_PRODUCT_FROM_DATABASE=PDC 3070 Camera - -usb:v0546p3187* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0546p3191* - ID_PRODUCT_FROM_DATABASE=Ion 80 Camera - -usb:v0546p3273* - ID_PRODUCT_FROM_DATABASE=PDC 2030 Camera - -usb:v0546p3304* - ID_PRODUCT_FROM_DATABASE=a500 Digital Camera - -usb:v0546pDCCF* - ID_PRODUCT_FROM_DATABASE=Sound Vision Stream Driver - -usb:v0547* - ID_VENDOR_FROM_DATABASE=Anchor Chips, Inc. - -usb:v0547p0001* - ID_PRODUCT_FROM_DATABASE=ICSI Bluetooth Device - -usb:v0547p1002* - ID_PRODUCT_FROM_DATABASE=Python2 WDM Encoder - -usb:v0547p1006* - ID_PRODUCT_FROM_DATABASE=Hantek DSO-2100 UF - -usb:v0547p2131* - ID_PRODUCT_FROM_DATABASE=AN2131 EZUSB Microcontroller - -usb:v0547p2235* - ID_PRODUCT_FROM_DATABASE=AN2235 EZUSB-FX Microcontroller - -usb:v0547p2710* - ID_PRODUCT_FROM_DATABASE=EZ-Link Loader (EZLNKLDR.SYS) - -usb:v0547p2720* - ID_PRODUCT_FROM_DATABASE=AN2720 USB-USB Bridge - -usb:v0547p2727* - ID_PRODUCT_FROM_DATABASE=Xircom PGUNET USB-USB Bridge - -usb:v0547p2750* - ID_PRODUCT_FROM_DATABASE=EZ-Link (EZLNKUSB.SYS) - -usb:v0547p2810* - ID_PRODUCT_FROM_DATABASE=Cypress ATAPI Bridge - -usb:v0547p7777* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0547p9999* - ID_PRODUCT_FROM_DATABASE=AN2131 uninitialized (?) - -usb:v0548* - ID_VENDOR_FROM_DATABASE=Tyan Computer Corp. - -usb:v0548p1005* - ID_PRODUCT_FROM_DATABASE=EZ Cart II GameBoy Flash Programmer - -usb:v0549* - ID_VENDOR_FROM_DATABASE=Pixera Corp. - -usb:v054A* - ID_VENDOR_FROM_DATABASE=Fujitsu Microelectronics, Inc. - -usb:v054B* - ID_VENDOR_FROM_DATABASE=New Media Corp. - -usb:v054C* - ID_VENDOR_FROM_DATABASE=Sony Corp. - -usb:v054Cp0001* - ID_PRODUCT_FROM_DATABASE=HUB - -usb:v054Cp0002* - ID_PRODUCT_FROM_DATABASE=Standard HUB - -usb:v054Cp0010* - ID_PRODUCT_FROM_DATABASE=DSC-S30/S70/S75/F505V/F505/FD92/W1 Cybershot/Mavica Digital Camera - -usb:v054Cp0014* - ID_PRODUCT_FROM_DATABASE=Nogatech USBVision (SY) - -usb:v054Cp0022* - ID_PRODUCT_FROM_DATABASE=Storage Adapter V2 (TPP) - -usb:v054Cp0023* - ID_PRODUCT_FROM_DATABASE=CD Writer - -usb:v054Cp0024* - ID_PRODUCT_FROM_DATABASE=Mavica CD-1000 Camera - -usb:v054Cp0025* - ID_PRODUCT_FROM_DATABASE=NW-MS7 Walkman MemoryStick Reader - -usb:v054Cp002B* - ID_PRODUCT_FROM_DATABASE=Portable USB Harddrive V2 - -usb:v054Cp002C* - ID_PRODUCT_FROM_DATABASE=USB Floppy Disk Drive - -usb:v054Cp002D* - ID_PRODUCT_FROM_DATABASE=MSAC-US1 MemoryStick Reader - -usb:v054Cp002E* - ID_PRODUCT_FROM_DATABASE=HandyCam MemoryStick Reader - -usb:v054Cp0030* - ID_PRODUCT_FROM_DATABASE=Storage Adapter V2 (TPP) - -usb:v054Cp0032* - ID_PRODUCT_FROM_DATABASE=MemoryStick MSC-U01 Reader - -usb:v054Cp0035* - ID_PRODUCT_FROM_DATABASE=Network Walkman (E) - -usb:v054Cp0036* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0037* - ID_PRODUCT_FROM_DATABASE=MG Memory Stick Reader/Writer - -usb:v054Cp0038* - ID_PRODUCT_FROM_DATABASE=Clie PEG-S300/D PalmOS PDA - -usb:v054Cp0039* - ID_PRODUCT_FROM_DATABASE=Network Walkman (MS) - -usb:v054Cp003C* - ID_PRODUCT_FROM_DATABASE=VAIO-MX LCD Control - -usb:v054Cp0045* - ID_PRODUCT_FROM_DATABASE=Digital Imaging Video - -usb:v054Cp0046* - ID_PRODUCT_FROM_DATABASE=Network Walkman - -usb:v054Cp004A* - ID_PRODUCT_FROM_DATABASE=Memory Stick Hi-Fi System - -usb:v054Cp004B* - ID_PRODUCT_FROM_DATABASE=Memory Stick Reader/Writer - -usb:v054Cp004E* - ID_PRODUCT_FROM_DATABASE=DSC-xxx (ptp) - -usb:v054Cp0056* - ID_PRODUCT_FROM_DATABASE=MG Memory Stick Reader/Writer - -usb:v054Cp0058* - ID_PRODUCT_FROM_DATABASE=Clie PEG-N7x0C PalmOS PDA Mass Storage - -usb:v054Cp0066* - ID_PRODUCT_FROM_DATABASE=Clie PEG-N7x0C/PEG-T425 PalmOS PDA Serial - -usb:v054Cp0067* - ID_PRODUCT_FROM_DATABASE=CMR-PC3 Webcam - -usb:v054Cp0069* - ID_PRODUCT_FROM_DATABASE=Memorystick MSC-U03 Reader - -usb:v054Cp006C* - ID_PRODUCT_FROM_DATABASE=FeliCa S310 [PaSoRi] - -usb:v054Cp006D* - ID_PRODUCT_FROM_DATABASE=Clie PEG-T425 PDA Mass Storage - -usb:v054Cp006F* - ID_PRODUCT_FROM_DATABASE=Network Walkman (EV) - -usb:v054Cp0073* - ID_PRODUCT_FROM_DATABASE=Storage CRX1750U - -usb:v054Cp0075* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0076* - ID_PRODUCT_FROM_DATABASE=Storage Adapter ACR-U20 - -usb:v054Cp007C* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp007F* - ID_PRODUCT_FROM_DATABASE=IC Recorder (MS) - -usb:v054Cp0080* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0081* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0084* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0085* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0086* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp008B* - ID_PRODUCT_FROM_DATABASE=Micro Vault 64M Mass Storage - -usb:v054Cp0095* - ID_PRODUCT_FROM_DATABASE=Clie s360 - -usb:v054Cp0099* - ID_PRODUCT_FROM_DATABASE=Clie NR70 PDA Mass Storage - -usb:v054Cp009A* - ID_PRODUCT_FROM_DATABASE=Clie NR70 PDA Serial - -usb:v054Cp00AB* - ID_PRODUCT_FROM_DATABASE=Visual Communication Camera (PCGA-UVC10) - -usb:v054Cp00AF* - ID_PRODUCT_FROM_DATABASE=DPP-EX Series Digital Photo Printer - -usb:v054Cp00BF* - ID_PRODUCT_FROM_DATABASE=IC Recorder (S) - -usb:v054Cp00C0* - ID_PRODUCT_FROM_DATABASE=Handycam DCR-30 - -usb:v054Cp00C6* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp00C7* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp00C8* - ID_PRODUCT_FROM_DATABASE=MZ-N710 Minidisc Walkman - -usb:v054Cp00C9* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp00CA* - ID_PRODUCT_FROM_DATABASE=MZ-DN430 Minidisc Walkman - -usb:v054Cp00CB* - ID_PRODUCT_FROM_DATABASE=MSAC-US20 Memory Stick Reader - -usb:v054Cp00DA* - ID_PRODUCT_FROM_DATABASE=Clie nx60 - -usb:v054Cp00E8* - ID_PRODUCT_FROM_DATABASE=Network Walkman (MS) - -usb:v054Cp00E9* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v054Cp00EB* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0101* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0103* - ID_PRODUCT_FROM_DATABASE=IC Recorder (ST) - -usb:v054Cp0105* - ID_PRODUCT_FROM_DATABASE=Micro Vault Hub - -usb:v054Cp0107* - ID_PRODUCT_FROM_DATABASE=VCC-U01 Visual Communication Camera - -usb:v054Cp0110* - ID_PRODUCT_FROM_DATABASE=Digital Imaging Video - -usb:v054Cp0113* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0116* - ID_PRODUCT_FROM_DATABASE=IC Recorder (P) - -usb:v054Cp0144* - ID_PRODUCT_FROM_DATABASE=Clie PEG-TH55 PDA - -usb:v054Cp0147* - ID_PRODUCT_FROM_DATABASE=Visual Communication Camera (PCGA-UVC11) - -usb:v054Cp014C* - ID_PRODUCT_FROM_DATABASE=Aiwa AM-NX9 Net MD Music Recorder MDLP - -usb:v054Cp014D* - ID_PRODUCT_FROM_DATABASE=Memory Stick Reader/Writer - -usb:v054Cp0154* - ID_PRODUCT_FROM_DATABASE=Eyetoy Audio Device - -usb:v054Cp015F* - ID_PRODUCT_FROM_DATABASE=IC Recorder (BM) - -usb:v054Cp0169* - ID_PRODUCT_FROM_DATABASE=Clie PEG-TJ35 PDA Serial - -usb:v054Cp016A* - ID_PRODUCT_FROM_DATABASE=Clie PEG-TJ35 PDA Mass Storage - -usb:v054Cp016B* - ID_PRODUCT_FROM_DATABASE=Mobile HDD - -usb:v054Cp016D* - ID_PRODUCT_FROM_DATABASE=IC Recorder (SX) - -usb:v054Cp016E* - ID_PRODUCT_FROM_DATABASE=DPP-EX50 Digital Photo Printer - -usb:v054Cp0171* - ID_PRODUCT_FROM_DATABASE=Fingerprint Sensor 3500 - -usb:v054Cp017E* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp017F* - ID_PRODUCT_FROM_DATABASE=Hi-MD WALKMAN - -usb:v054Cp0180* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0181* - ID_PRODUCT_FROM_DATABASE=Hi-MD WALKMAN - -usb:v054Cp0182* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0183* - ID_PRODUCT_FROM_DATABASE=Hi-MD WALKMAN - -usb:v054Cp0184* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0185* - ID_PRODUCT_FROM_DATABASE=Hi-MD WALKMAN - -usb:v054Cp0186* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0187* - ID_PRODUCT_FROM_DATABASE=Hi-MD MZ-NH600 WALKMAN - -usb:v054Cp0188* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp018A* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp018B* - ID_PRODUCT_FROM_DATABASE=Hi-MD SOUND GATE - -usb:v054Cp019E* - ID_PRODUCT_FROM_DATABASE=Micro Vault 1.0G Mass Storage - -usb:v054Cp01AD* - ID_PRODUCT_FROM_DATABASE=ATRAC HDD PA - -usb:v054Cp01BB* - ID_PRODUCT_FROM_DATABASE=FeliCa S320 [PaSoRi] - -usb:v054Cp01BD* - ID_PRODUCT_FROM_DATABASE=MRW62E Multi-Card Reader/Writer - -usb:v054Cp01C3* - ID_PRODUCT_FROM_DATABASE=NW-E55 Network Walkman - -usb:v054Cp01C6* - ID_PRODUCT_FROM_DATABASE=MEMORY P-AUDIO - -usb:v054Cp01C7* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v054Cp01C8* - ID_PRODUCT_FROM_DATABASE=PSP Type A - -usb:v054Cp01C9* - ID_PRODUCT_FROM_DATABASE=PSP Type B - -usb:v054Cp01D0* - ID_PRODUCT_FROM_DATABASE=DVD+RW External Drive DRU-700A - -usb:v054Cp01D5* - ID_PRODUCT_FROM_DATABASE=IC RECORDER - -usb:v054Cp01DE* - ID_PRODUCT_FROM_DATABASE=VRD-VC10 [Video Capture] - -usb:v054Cp01E9* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp01EA* - ID_PRODUCT_FROM_DATABASE=Hi-MD WALKMAN - -usb:v054Cp01EE* - ID_PRODUCT_FROM_DATABASE=IC RECORDER - -usb:v054Cp01FA* - ID_PRODUCT_FROM_DATABASE=IC Recorder (P) - -usb:v054Cp01FB* - ID_PRODUCT_FROM_DATABASE=NW-E405 Network Walkman - -usb:v054Cp020F* - ID_PRODUCT_FROM_DATABASE=Device - -usb:v054Cp0210* - ID_PRODUCT_FROM_DATABASE=ATRAC HDD PA - -usb:v054Cp0219* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp021A* - ID_PRODUCT_FROM_DATABASE=Hi-MD WALKMAN - -usb:v054Cp021B* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp021C* - ID_PRODUCT_FROM_DATABASE=Hi-MD WALKMAN - -usb:v054Cp021D* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0227* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v054Cp022C* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp022D* - ID_PRODUCT_FROM_DATABASE=Hi-MD AUDIO - -usb:v054Cp0233* - ID_PRODUCT_FROM_DATABASE=ATRAC HDD PA - -usb:v054Cp0236* - ID_PRODUCT_FROM_DATABASE=Mobile HDD - -usb:v054Cp023B* - ID_PRODUCT_FROM_DATABASE=DVD+RW External Drive DRU-800UL - -usb:v054Cp023C* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp023D* - ID_PRODUCT_FROM_DATABASE=Hi-MD WALKMAN - -usb:v054Cp0243* - ID_PRODUCT_FROM_DATABASE=MicroVault Flash Drive - -usb:v054Cp024B* - ID_PRODUCT_FROM_DATABASE=Vaio VGX Mouse - -usb:v054Cp0257* - ID_PRODUCT_FROM_DATABASE=IFU-WLM2 USB Wireless LAN Module (Wireless Mode) - -usb:v054Cp0258* - ID_PRODUCT_FROM_DATABASE=IFU-WLM2 USB Wireless LAN Module (Memory Mode) - -usb:v054Cp0259* - ID_PRODUCT_FROM_DATABASE=IC RECORDER - -usb:v054Cp0267* - ID_PRODUCT_FROM_DATABASE=Tachikoma Device - -usb:v054Cp0268* - ID_PRODUCT_FROM_DATABASE=Batoh Device / PlayStation 3 Controller - -usb:v054Cp0269* - ID_PRODUCT_FROM_DATABASE=HDD WALKMAN - -usb:v054Cp026A* - ID_PRODUCT_FROM_DATABASE=HDD WALKMAN - -usb:v054Cp0271* - ID_PRODUCT_FROM_DATABASE=IC Recorder (P) - -usb:v054Cp027C* - ID_PRODUCT_FROM_DATABASE=NETWORK WALKMAN - -usb:v054Cp027E* - ID_PRODUCT_FROM_DATABASE=SONY Communicator - -usb:v054Cp027F* - ID_PRODUCT_FROM_DATABASE=IC RECORDER - -usb:v054Cp0286* - ID_PRODUCT_FROM_DATABASE=Net MD - -usb:v054Cp0287* - ID_PRODUCT_FROM_DATABASE=Hi-MD WALKMAN - -usb:v054Cp0290* - ID_PRODUCT_FROM_DATABASE=VGP-UVC100 Visual Communication Camera - -usb:v054Cp029B* - ID_PRODUCT_FROM_DATABASE=PRS-500 eBook reader - -usb:v054Cp02A5* - ID_PRODUCT_FROM_DATABASE=MicroVault Flash Drive - -usb:v054Cp02AF* - ID_PRODUCT_FROM_DATABASE=Handycam DCR-DVD306E - -usb:v054Cp02C4* - ID_PRODUCT_FROM_DATABASE=Device - -usb:v054Cp02D1* - ID_PRODUCT_FROM_DATABASE=DVD RW - -usb:v054Cp02D2* - ID_PRODUCT_FROM_DATABASE=PSP Slim - -usb:v054Cp02E1* - ID_PRODUCT_FROM_DATABASE=FeliCa S330 [PaSoRi] - -usb:v054Cp02EA* - ID_PRODUCT_FROM_DATABASE=PlayStation 3 Memory Card Adaptor - -usb:v054Cp02F9* - ID_PRODUCT_FROM_DATABASE=DSC-H9 - -usb:v054Cp0317* - ID_PRODUCT_FROM_DATABASE=WALKMAN - -usb:v054Cp031A* - ID_PRODUCT_FROM_DATABASE=Walkman NWD-B103F - -usb:v054Cp031E* - ID_PRODUCT_FROM_DATABASE=PRS-300/PRS-505 eBook reader - -usb:v054Cp0325* - ID_PRODUCT_FROM_DATABASE=NWZ-A818 - -usb:v054Cp033E* - ID_PRODUCT_FROM_DATABASE=DSC-W120/W290 - -usb:v054Cp0346* - ID_PRODUCT_FROM_DATABASE=Handycam DCR-SR55E - -usb:v054Cp0348* - ID_PRODUCT_FROM_DATABASE=HandyCam HDR-TG3E - -usb:v054Cp035B* - ID_PRODUCT_FROM_DATABASE=Walkman NWZ-A828 - -usb:v054Cp035C* - ID_PRODUCT_FROM_DATABASE=NWZ-A726/A728/A729 - -usb:v054Cp0382* - ID_PRODUCT_FROM_DATABASE=Memory Stick PRO-HG Duo Adaptor (MSAC-UAH1) - -usb:v054Cp0385* - ID_PRODUCT_FROM_DATABASE=Walkman NWZ-E436F - -usb:v054Cp0387* - ID_PRODUCT_FROM_DATABASE=IC Recorder (P) - -usb:v054Cp03BC* - ID_PRODUCT_FROM_DATABASE=Webbie HD - MHS-CM1 - -usb:v054Cp03D1* - ID_PRODUCT_FROM_DATABASE=DPF-X95 - -usb:v054Cp03D3* - ID_PRODUCT_FROM_DATABASE=DR-BT100CX - -usb:v054Cp03D5* - ID_PRODUCT_FROM_DATABASE=PlayStation Move motion controller - -usb:v054Cp03FC* - ID_PRODUCT_FROM_DATABASE=WALKMAN [NWZ-E345] - -usb:v054Cp03FD* - ID_PRODUCT_FROM_DATABASE=Walkman NWZ-E443 - -usb:v054Cp042F* - ID_PRODUCT_FROM_DATABASE=PlayStation Move navigation controller - -usb:v054Cp0440* - ID_PRODUCT_FROM_DATABASE=DSC-H55 - -usb:v054Cp0485* - ID_PRODUCT_FROM_DATABASE=MHS-PM5 HD camcorder - -usb:v054Cp04CB* - ID_PRODUCT_FROM_DATABASE=WALKMAN NWZ-E354 - -usb:v054Cp1000* - ID_PRODUCT_FROM_DATABASE=Wireless Buzz! Receiver - -usb:v054D* - ID_VENDOR_FROM_DATABASE=Try Corp. - -usb:v054E* - ID_VENDOR_FROM_DATABASE=Proside Corp. - -usb:v054F* - ID_VENDOR_FROM_DATABASE=WYSE Technology Taiwan - -usb:v0550* - ID_VENDOR_FROM_DATABASE=Fuji Xerox Co., Ltd - -usb:v0550p0002* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v0550p0004* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v0550p0005* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v0551* - ID_VENDOR_FROM_DATABASE=CompuTrend Systems, Inc. - -usb:v0552* - ID_VENDOR_FROM_DATABASE=Philips Monitors - -usb:v0553* - ID_VENDOR_FROM_DATABASE=STMicroelectronics Imaging Division (VLSI Vision) - -usb:v0553p0001* - ID_PRODUCT_FROM_DATABASE=TerraCAM - -usb:v0553p0002* - ID_PRODUCT_FROM_DATABASE=CPiA Webcam - -usb:v0553p0100* - ID_PRODUCT_FROM_DATABASE=STV0672 Camera - -usb:v0553p0140* - ID_PRODUCT_FROM_DATABASE=Video Camera - -usb:v0553p0150* - ID_PRODUCT_FROM_DATABASE=CDE CAM 100 - -usb:v0553p0151* - ID_PRODUCT_FROM_DATABASE=Digital Blue QX5 Microscope - -usb:v0553p0200* - ID_PRODUCT_FROM_DATABASE=Dual-mode Camera0 - -usb:v0553p0201* - ID_PRODUCT_FROM_DATABASE=Dual-mode Camera1 - -usb:v0553p0202* - ID_PRODUCT_FROM_DATABASE=STV0680 Camera - -usb:v0553p0674* - ID_PRODUCT_FROM_DATABASE=Multi-mode Camera - -usb:v0553p0679* - ID_PRODUCT_FROM_DATABASE=NMS Video Camera (Webcam) - -usb:v0553p1002* - ID_PRODUCT_FROM_DATABASE=Che-ez! Splash - -usb:v0554* - ID_VENDOR_FROM_DATABASE=Dictaphone Corp. - -usb:v0555* - ID_VENDOR_FROM_DATABASE=ANAM S&T Co., Ltd - -usb:v0556* - ID_VENDOR_FROM_DATABASE=Asahi Kasei Microsystems Co., Ltd - -usb:v0556p0001* - ID_PRODUCT_FROM_DATABASE=AK5370 I/F A/D Converter - -usb:v0557* - ID_VENDOR_FROM_DATABASE=ATEN International Co., Ltd - -usb:v0557p2001* - ID_PRODUCT_FROM_DATABASE=UC-1284 Printer Port - -usb:v0557p2002* - ID_PRODUCT_FROM_DATABASE=10Mbps Ethernet [klsi] - -usb:v0557p2004* - ID_PRODUCT_FROM_DATABASE=UC-100KM PS/2 Mouse and Keyboard adapter - -usb:v0557p2006* - ID_PRODUCT_FROM_DATABASE=UC-1284B Printer Port - -usb:v0557p2007* - ID_PRODUCT_FROM_DATABASE=UC-110T 100Mbps Ethernet [pegasus] - -usb:v0557p2008* - ID_PRODUCT_FROM_DATABASE=UC-232A Serial Port [pl2303] - -usb:v0557p2009* - ID_PRODUCT_FROM_DATABASE=UC-210T Ethernet - -usb:v0557p2011* - ID_PRODUCT_FROM_DATABASE=UC-2324 4xSerial Ports [mos7840] - -usb:v0557p2202* - ID_PRODUCT_FROM_DATABASE=CS124U Miniview II KVM Switch - -usb:v0557p2213* - ID_PRODUCT_FROM_DATABASE=CS682 2-Port USB 2.0 DVI KVM Switch - -usb:v0557p2221* - ID_PRODUCT_FROM_DATABASE=Winbond Hermon - -usb:v0557p2404* - ID_PRODUCT_FROM_DATABASE=4-port switch - -usb:v0557p2600* - ID_PRODUCT_FROM_DATABASE=IDE Bridge - -usb:v0557p2701* - ID_PRODUCT_FROM_DATABASE=CE700A KVM Extender - -usb:v0557p4000* - ID_PRODUCT_FROM_DATABASE=DSB-650 10Mbps Ethernet [klsi] - -usb:v0557p7000* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v0557p7820* - ID_PRODUCT_FROM_DATABASE=UC-2322 2xSerial Ports [mos7820] - -usb:v0558* - ID_VENDOR_FROM_DATABASE=Truevision, Inc. - -usb:v0558p1009* - ID_PRODUCT_FROM_DATABASE=GW Instek GDS-1000 Oscilloscope - -usb:v0558p100A* - ID_PRODUCT_FROM_DATABASE=GW Instek GDS-1000A Oscilloscope - -usb:v0558p2009* - ID_PRODUCT_FROM_DATABASE=GW Instek GDS-2000 Oscilloscope - -usb:v0559* - ID_VENDOR_FROM_DATABASE=Cadence Design Systems, Inc. - -usb:v055A* - ID_VENDOR_FROM_DATABASE=Kenwood USA - -usb:v055B* - ID_VENDOR_FROM_DATABASE=KnowledgeTek, Inc. - -usb:v055C* - ID_VENDOR_FROM_DATABASE=Proton Electronic Ind. - -usb:v055D* - ID_VENDOR_FROM_DATABASE=Samsung Electro-Mechanics Co. - -usb:v055Dp0001* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v055Dp0BB1* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v055Dp1030* - ID_PRODUCT_FROM_DATABASE=Optical Wheel Mouse (OMS3CB/OMGB30) - -usb:v055Dp1031* - ID_PRODUCT_FROM_DATABASE=Optical Wheel Mouse (OMA3CB/OMGI30) - -usb:v055Dp1040* - ID_PRODUCT_FROM_DATABASE=Mouse HID Device - -usb:v055Dp1050* - ID_PRODUCT_FROM_DATABASE=E-Mail Optical Wheel Mouse (OMS3CE) - -usb:v055Dp1080* - ID_PRODUCT_FROM_DATABASE=Optical Wheel Mouse (OMS3CH) - -usb:v055Dp2020* - ID_PRODUCT_FROM_DATABASE=Floppy Disk Drive - -usb:v055Dp6780* - ID_PRODUCT_FROM_DATABASE=Keyboard V1 - -usb:v055Dp6781* - ID_PRODUCT_FROM_DATABASE=Keyboard Mouse - -usb:v055Dp8001* - ID_PRODUCT_FROM_DATABASE=E.M. Hub - -usb:v055Dp9000* - ID_PRODUCT_FROM_DATABASE=AnyCam [pwc] - -usb:v055Dp9001* - ID_PRODUCT_FROM_DATABASE=MPC-C30 AnyCam Premium for Notebooks [pwc] - -usb:v055DpA000* - ID_PRODUCT_FROM_DATABASE=SWL-2100U - -usb:v055DpA010* - ID_PRODUCT_FROM_DATABASE=WLAN Adapter(SWL-2300) - -usb:v055DpA011* - ID_PRODUCT_FROM_DATABASE=Boot Device - -usb:v055DpA012* - ID_PRODUCT_FROM_DATABASE=WLAN Adapter(SWL-2300) - -usb:v055DpA013* - ID_PRODUCT_FROM_DATABASE=WLAN Adapter(SWL-2350) - -usb:v055DpA230* - ID_PRODUCT_FROM_DATABASE=Boot Device - -usb:v055DpB000* - ID_PRODUCT_FROM_DATABASE=11Mbps WLAN Mini Adapter - -usb:v055DpB230* - ID_PRODUCT_FROM_DATABASE=Netopia 802.11b WLAN Adapter - -usb:v055DpB231* - ID_PRODUCT_FROM_DATABASE=LG Wireless LAN 11b Adapter - -usb:v055E* - ID_VENDOR_FROM_DATABASE=CTX Opto-Electronics Corp. - -usb:v055F* - ID_VENDOR_FROM_DATABASE=Mustek Systems, Inc. - -usb:v055Fp0001* - ID_PRODUCT_FROM_DATABASE=ScanExpress 1200 CU - -usb:v055Fp0002* - ID_PRODUCT_FROM_DATABASE=ScanExpress 600 CU - -usb:v055Fp0003* - ID_PRODUCT_FROM_DATABASE=ScanExpress 1200 USB - -usb:v055Fp0006* - ID_PRODUCT_FROM_DATABASE=ScanExpress 1200 UB - -usb:v055Fp0007* - ID_PRODUCT_FROM_DATABASE=ScanExpress 1200 USB Plus - -usb:v055Fp0008* - ID_PRODUCT_FROM_DATABASE=ScanExpress 1200 CU Plus - -usb:v055Fp0010* - ID_PRODUCT_FROM_DATABASE=BearPaw 1200F - -usb:v055Fp0210* - ID_PRODUCT_FROM_DATABASE=ScanExpress A3 USB - -usb:v055Fp0218* - ID_PRODUCT_FROM_DATABASE=BearPaw 2400 TA - -usb:v055Fp0219* - ID_PRODUCT_FROM_DATABASE=BearPaw 2400 TA Plus - -usb:v055Fp021A* - ID_PRODUCT_FROM_DATABASE=BearPaw 2448 TA Plus - -usb:v055Fp021B* - ID_PRODUCT_FROM_DATABASE=BearPaw 1200 CU Plus - -usb:v055Fp021C* - ID_PRODUCT_FROM_DATABASE=BearPaw 1200 CU Plus - -usb:v055Fp021D* - ID_PRODUCT_FROM_DATABASE=BearPaw 2400 CU Plus - -usb:v055Fp021E* - ID_PRODUCT_FROM_DATABASE=BearPaw 1200 TA/CS - -usb:v055Fp021F* - ID_PRODUCT_FROM_DATABASE=SNAPSCAN e22 - -usb:v055Fp0400* - ID_PRODUCT_FROM_DATABASE=BearPaw 2400 TA Pro - -usb:v055Fp0401* - ID_PRODUCT_FROM_DATABASE=P 3600 A3 Pro - -usb:v055Fp0408* - ID_PRODUCT_FROM_DATABASE=BearPaw 2448 CU Pro - -usb:v055Fp0409* - ID_PRODUCT_FROM_DATABASE=BearPaw 2448 TA Pro - -usb:v055Fp040B* - ID_PRODUCT_FROM_DATABASE=ScanExpress A3 USB 1200 PRO - -usb:v055Fp0873* - ID_PRODUCT_FROM_DATABASE=ScanExpress 600 USB - -usb:v055Fp1000* - ID_PRODUCT_FROM_DATABASE=BearPaw 4800 TA Pro - -usb:v055FpA350* - ID_PRODUCT_FROM_DATABASE=gSmart 350 Camera - -usb:v055FpA800* - ID_PRODUCT_FROM_DATABASE=MDC 800 Camera - -usb:v055FpB500* - ID_PRODUCT_FROM_DATABASE=MDC 3000 Camera - -usb:v055FpC005* - ID_PRODUCT_FROM_DATABASE=PC CAM 300A - -usb:v055FpC200* - ID_PRODUCT_FROM_DATABASE=gSmart 300 - -usb:v055FpC211* - ID_PRODUCT_FROM_DATABASE=Kowa Bs888e Microcamera - -usb:v055FpC220* - ID_PRODUCT_FROM_DATABASE=gSmart mini - -usb:v055FpC230* - ID_PRODUCT_FROM_DATABASE=Digicam 330K - -usb:v055FpC232* - ID_PRODUCT_FROM_DATABASE=MDC3500 Camera - -usb:v055FpC360* - ID_PRODUCT_FROM_DATABASE=DV 4000 Camera - -usb:v055FpC420* - ID_PRODUCT_FROM_DATABASE=gSmart mini 2 Camera - -usb:v055FpC430* - ID_PRODUCT_FROM_DATABASE=gSmart LCD 2 Camera - -usb:v055FpC440* - ID_PRODUCT_FROM_DATABASE=DV 3000 Camera - -usb:v055FpC520* - ID_PRODUCT_FROM_DATABASE=gSmart mini 3 Camera - -usb:v055FpC530* - ID_PRODUCT_FROM_DATABASE=gSmart LCD 2 Camera - -usb:v055FpC540* - ID_PRODUCT_FROM_DATABASE=gSmart D30 Camera - -usb:v055FpC630* - ID_PRODUCT_FROM_DATABASE=MDC 4000 Camera - -usb:v055FpC631* - ID_PRODUCT_FROM_DATABASE=MDC 4000 Camera - -usb:v055FpC650* - ID_PRODUCT_FROM_DATABASE=MDC 5500Z Camera - -usb:v055FpD001* - ID_PRODUCT_FROM_DATABASE=WCam 300 - -usb:v055FpD003* - ID_PRODUCT_FROM_DATABASE=WCam 300A - -usb:v055FpD004* - ID_PRODUCT_FROM_DATABASE=WCam 300AN - -usb:v0560* - ID_VENDOR_FROM_DATABASE=Interface Corp. - -usb:v0561* - ID_VENDOR_FROM_DATABASE=Oasis Design, Inc. - -usb:v0562* - ID_VENDOR_FROM_DATABASE=Telex Communications, Inc. - -usb:v0562p0001* - ID_PRODUCT_FROM_DATABASE=Enhanced Microphone - -usb:v0562p0002* - ID_PRODUCT_FROM_DATABASE=Telex Microphone - -usb:v0563* - ID_VENDOR_FROM_DATABASE=Immersion Corp. - -usb:v0564* - ID_VENDOR_FROM_DATABASE=Kodak Digital Product Center, Japan Ltd. (formerly Chinon Industries Inc.) - -usb:v0565* - ID_VENDOR_FROM_DATABASE=Peracom Networks, Inc. - -usb:v0565p0001* - ID_PRODUCT_FROM_DATABASE=Serial Port [etek] - -usb:v0565p0002* - ID_PRODUCT_FROM_DATABASE=Enet Ethernet [klsi] - -usb:v0565p0003* - ID_PRODUCT_FROM_DATABASE=@Home Networks Ethernet [klsi] - -usb:v0565p0005* - ID_PRODUCT_FROM_DATABASE=Enet2 Ethernet [klsi] - -usb:v0565p0041* - ID_PRODUCT_FROM_DATABASE=Peracom Remote NDIS Ethernet Adapter - -usb:v0566* - ID_VENDOR_FROM_DATABASE=Monterey International Corp. - -usb:v0566p0110* - ID_PRODUCT_FROM_DATABASE=ViewMate Desktop Mouse CC2201 - -usb:v0566p1001* - ID_PRODUCT_FROM_DATABASE=ViewMate Desktop Mouse CC2201 - -usb:v0566p1002* - ID_PRODUCT_FROM_DATABASE=ViewMate Desktop Mouse CC2201 - -usb:v0566p1003* - ID_PRODUCT_FROM_DATABASE=ViewMate Desktop Mouse CC2201 - -usb:v0566p1004* - ID_PRODUCT_FROM_DATABASE=ViewMate Desktop Mouse CC2201 - -usb:v0566p1005* - ID_PRODUCT_FROM_DATABASE=ViewMate Desktop Mouse CC2201 - -usb:v0566p1006* - ID_PRODUCT_FROM_DATABASE=ViewMate Desktop Mouse CC2201 - -usb:v0566p1007* - ID_PRODUCT_FROM_DATABASE=ViewMate Desktop Mouse CC2201 - -usb:v0566p2800* - ID_PRODUCT_FROM_DATABASE=MIC K/B - -usb:v0566p2801* - ID_PRODUCT_FROM_DATABASE=MIC K/B Mouse - -usb:v0566p2802* - ID_PRODUCT_FROM_DATABASE=Kbd Hub - -usb:v0566p3004* - ID_PRODUCT_FROM_DATABASE=Genius KB-29E - -usb:v0566p3107* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v0567* - ID_VENDOR_FROM_DATABASE=Xyratex International, Ltd - -usb:v0568* - ID_VENDOR_FROM_DATABASE=Quartz Ingenierie - -usb:v0569* - ID_VENDOR_FROM_DATABASE=SegaSoft - -usb:v056A* - ID_VENDOR_FROM_DATABASE=Wacom Co., Ltd - -usb:v056Ap0000* - ID_PRODUCT_FROM_DATABASE=PenPartner - -usb:v056Ap0001* - ID_PRODUCT_FROM_DATABASE=PenPartner 4x5 - -usb:v056Ap0002* - ID_PRODUCT_FROM_DATABASE=PenPartner 6x8 - -usb:v056Ap0003* - ID_PRODUCT_FROM_DATABASE=Cintiq Partner - -usb:v056Ap0010* - ID_PRODUCT_FROM_DATABASE=Graphire - -usb:v056Ap0011* - ID_PRODUCT_FROM_DATABASE=Graphire 2 4x5 - -usb:v056Ap0012* - ID_PRODUCT_FROM_DATABASE=Graphire 2 5x7 - -usb:v056Ap0013* - ID_PRODUCT_FROM_DATABASE=Graphire 3 4x5 - -usb:v056Ap0014* - ID_PRODUCT_FROM_DATABASE=Graphire 3 6x8 - -usb:v056Ap0015* - ID_PRODUCT_FROM_DATABASE=Graphire 4 4x5 - -usb:v056Ap0016* - ID_PRODUCT_FROM_DATABASE=Graphire 4 6x8 - -usb:v056Ap0017* - ID_PRODUCT_FROM_DATABASE=CTE-450 [Bamboo Fun] - -usb:v056Ap0018* - ID_PRODUCT_FROM_DATABASE=Bamboo Fun 6x8 - -usb:v056Ap0019* - ID_PRODUCT_FROM_DATABASE=Bamboo One Medium - -usb:v056Ap0020* - ID_PRODUCT_FROM_DATABASE=Intuos 4x5 - -usb:v056Ap0021* - ID_PRODUCT_FROM_DATABASE=Intuos 6x8 - -usb:v056Ap0022* - ID_PRODUCT_FROM_DATABASE=Intuos 9x12 - -usb:v056Ap0023* - ID_PRODUCT_FROM_DATABASE=Intuos 12x12 - -usb:v056Ap0024* - ID_PRODUCT_FROM_DATABASE=Intuos 12x18 - -usb:v056Ap0026* - ID_PRODUCT_FROM_DATABASE=Intuos5 touch S - -usb:v056Ap0027* - ID_PRODUCT_FROM_DATABASE=Intuos5 touch M - -usb:v056Ap0028* - ID_PRODUCT_FROM_DATABASE=Intuos5 touch L - -usb:v056Ap0029* - ID_PRODUCT_FROM_DATABASE=Intuos5 S - -usb:v056Ap002A* - ID_PRODUCT_FROM_DATABASE=Intuos5 M - -usb:v056Ap0030* - ID_PRODUCT_FROM_DATABASE=PL400 - -usb:v056Ap0031* - ID_PRODUCT_FROM_DATABASE=PL500 - -usb:v056Ap0032* - ID_PRODUCT_FROM_DATABASE=PL600 - -usb:v056Ap0033* - ID_PRODUCT_FROM_DATABASE=PL600SX - -usb:v056Ap0034* - ID_PRODUCT_FROM_DATABASE=PL550 - -usb:v056Ap0035* - ID_PRODUCT_FROM_DATABASE=PL800 - -usb:v056Ap0037* - ID_PRODUCT_FROM_DATABASE=PL700 - -usb:v056Ap0038* - ID_PRODUCT_FROM_DATABASE=PL510 - -usb:v056Ap0039* - ID_PRODUCT_FROM_DATABASE=DTU-710 - -usb:v056Ap003F* - ID_PRODUCT_FROM_DATABASE=Cintiq 21UX (DTZ-2100) - -usb:v056Ap0041* - ID_PRODUCT_FROM_DATABASE=Intuos2 4x5 - -usb:v056Ap0042* - ID_PRODUCT_FROM_DATABASE=Intuos2 6x8 - -usb:v056Ap0043* - ID_PRODUCT_FROM_DATABASE=Intuos2 9x12 - -usb:v056Ap0044* - ID_PRODUCT_FROM_DATABASE=Intuos2 12x12 - -usb:v056Ap0045* - ID_PRODUCT_FROM_DATABASE=Intuos2 12x18 - -usb:v056Ap0047* - ID_PRODUCT_FROM_DATABASE=Intuos2 6x8 - -usb:v056Ap0060* - ID_PRODUCT_FROM_DATABASE=Volito - -usb:v056Ap0061* - ID_PRODUCT_FROM_DATABASE=PenStation2 - -usb:v056Ap0062* - ID_PRODUCT_FROM_DATABASE=Volito2 4x5 - -usb:v056Ap0063* - ID_PRODUCT_FROM_DATABASE=Volito2 2x3 - -usb:v056Ap0064* - ID_PRODUCT_FROM_DATABASE=PenPartner2 - -usb:v056Ap0065* - ID_PRODUCT_FROM_DATABASE=Bamboo - -usb:v056Ap0069* - ID_PRODUCT_FROM_DATABASE=Bamboo One - -usb:v056Ap0081* - ID_PRODUCT_FROM_DATABASE=Graphire Wireless 6x8 - -usb:v056Ap0090* - ID_PRODUCT_FROM_DATABASE=TPC90 - -usb:v056Ap0093* - ID_PRODUCT_FROM_DATABASE=TPC93 - -usb:v056Ap009A* - ID_PRODUCT_FROM_DATABASE=TPC9A - -usb:v056Ap00B0* - ID_PRODUCT_FROM_DATABASE=Intuos3 4x5 - -usb:v056Ap00B1* - ID_PRODUCT_FROM_DATABASE=Intuos3 6x18 - -usb:v056Ap00B2* - ID_PRODUCT_FROM_DATABASE=Intuos3 9x12 - -usb:v056Ap00B3* - ID_PRODUCT_FROM_DATABASE=Intuos3 12x12 - -usb:v056Ap00B4* - ID_PRODUCT_FROM_DATABASE=Intuos3 12x19 - -usb:v056Ap00B5* - ID_PRODUCT_FROM_DATABASE=Intuos3 6x11 (PTZ-631W) - -usb:v056Ap00B7* - ID_PRODUCT_FROM_DATABASE=Intuos3 4x6 - -usb:v056Ap00B8* - ID_PRODUCT_FROM_DATABASE=Intuos4 4x6 - -usb:v056Ap00B9* - ID_PRODUCT_FROM_DATABASE=Intuos4 6x9 - -usb:v056Ap00BA* - ID_PRODUCT_FROM_DATABASE=Intuos4 8x13 - -usb:v056Ap00BB* - ID_PRODUCT_FROM_DATABASE=Intuos4 12x19 - -usb:v056Ap00C0* - ID_PRODUCT_FROM_DATABASE=DTF-521 - -usb:v056Ap00C4* - ID_PRODUCT_FROM_DATABASE=DTF-720 - -usb:v056Ap00C5* - ID_PRODUCT_FROM_DATABASE=Cintiq 20WSX - -usb:v056Ap00C6* - ID_PRODUCT_FROM_DATABASE=Cintiq 12WX - -usb:v056Ap00C7* - ID_PRODUCT_FROM_DATABASE=DTU-1931 - -usb:v056Ap00CC* - ID_PRODUCT_FROM_DATABASE=Cintiq 21UX (DTK-2100) - -usb:v056Ap00D1* - ID_PRODUCT_FROM_DATABASE=Bamboo Pen & Touch (CTH-460-DE) - -usb:v056Ap00D3* - ID_PRODUCT_FROM_DATABASE=Bamboo Fun (CTH-661) - -usb:v056Ap00D6* - ID_PRODUCT_FROM_DATABASE=Bamboo Pen & Touch (CTH-460) - -usb:v056Ap00DB* - ID_PRODUCT_FROM_DATABASE=Bamboo Fun (CTH-661SE-NL) - -usb:v056Ap00DD* - ID_PRODUCT_FROM_DATABASE=Bamboo Pen (CTL-470) - -usb:v056Ap00F6* - ID_PRODUCT_FROM_DATABASE=Cintiq 24HD touch (DTH-2400) touchscreen - -usb:v056Ap00F8* - ID_PRODUCT_FROM_DATABASE=Cintiq 24HD touch (DTH-2400) tablet - -usb:v056Ap0400* - ID_PRODUCT_FROM_DATABASE=PenPartner 4x5 - -usb:v056Ap4850* - ID_PRODUCT_FROM_DATABASE=PenPartner 6x8 - -usb:v056B* - ID_VENDOR_FROM_DATABASE=Decicon, Inc. - -usb:v056C* - ID_VENDOR_FROM_DATABASE=eTEK Labs - -usb:v056Cp0006* - ID_PRODUCT_FROM_DATABASE=KwikLink Host-Host Connector - -usb:v056Cp8007* - ID_PRODUCT_FROM_DATABASE=Kwik232 Serial Port - -usb:v056Cp8100* - ID_PRODUCT_FROM_DATABASE=KwikLink Host-Host Connector - -usb:v056Cp8101* - ID_PRODUCT_FROM_DATABASE=KwikLink USB-USB Bridge - -usb:v056D* - ID_VENDOR_FROM_DATABASE=EIZO Corp. - -usb:v056Dp0000* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v056Dp0001* - ID_PRODUCT_FROM_DATABASE=Monitor - -usb:v056Dp0002* - ID_PRODUCT_FROM_DATABASE=HID Monitor Controls - -usb:v056Dp0003* - ID_PRODUCT_FROM_DATABASE=Device Bay Controller - -usb:v056E* - ID_VENDOR_FROM_DATABASE=Elecom Co., Ltd - -usb:v056Ep0002* - ID_PRODUCT_FROM_DATABASE=29UO Mouse - -usb:v056Ep0072* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v056Ep200C* - ID_PRODUCT_FROM_DATABASE=LD-USB/TX - -usb:v056Ep4002* - ID_PRODUCT_FROM_DATABASE=Laneed 100Mbps Ethernet LD-USB/TX [pegasus] - -usb:v056Ep4005* - ID_PRODUCT_FROM_DATABASE=LD-USBL/TX - -usb:v056Ep400B* - ID_PRODUCT_FROM_DATABASE=LD-USB/TX - -usb:v056Ep4010* - ID_PRODUCT_FROM_DATABASE=LD-USB20 - -usb:v056Ep5003* - ID_PRODUCT_FROM_DATABASE=UC-SGT - -usb:v056Ep5004* - ID_PRODUCT_FROM_DATABASE=UC-SGT - -usb:v056Ep6008* - ID_PRODUCT_FROM_DATABASE=Flash Disk - -usb:v056EpABC1* - ID_PRODUCT_FROM_DATABASE=LD-USB/TX - -usb:v056F* - ID_VENDOR_FROM_DATABASE=Korea Data Systems Co., Ltd - -usb:v056FpCD00* - ID_PRODUCT_FROM_DATABASE=CDM-751 CD organizer - -usb:v0570* - ID_VENDOR_FROM_DATABASE=Epson America - -usb:v0571* - ID_VENDOR_FROM_DATABASE=Interex, Inc. - -usb:v0571p0002* - ID_PRODUCT_FROM_DATABASE=echoFX InterView Lite - -usb:v0572* - ID_VENDOR_FROM_DATABASE=Conexant Systems (Rockwell), Inc. - -usb:v0572p0001* - ID_PRODUCT_FROM_DATABASE=Ezcam II Webcam - -usb:v0572p0002* - ID_PRODUCT_FROM_DATABASE=Ezcam II Webcam - -usb:v0572p0040* - ID_PRODUCT_FROM_DATABASE=Wondereye CP-115 Webcam - -usb:v0572p0041* - ID_PRODUCT_FROM_DATABASE=Webcam Notebook - -usb:v0572p0042* - ID_PRODUCT_FROM_DATABASE=Webcam Notebook - -usb:v0572p1232* - ID_PRODUCT_FROM_DATABASE=V.90 modem - -usb:v0572p1234* - ID_PRODUCT_FROM_DATABASE=Typhoon Redfun Modem V90 56k - -usb:v0572p1252* - ID_PRODUCT_FROM_DATABASE=HCF V90 Data Fax Voice Modem - -usb:v0572p1253* - ID_PRODUCT_FROM_DATABASE=Zoom V.92 Faxmodem - -usb:v0572p1300* - ID_PRODUCT_FROM_DATABASE=SoftK56 Data Fax Voice CARP - -usb:v0572p1301* - ID_PRODUCT_FROM_DATABASE=Modem Enumerator - -usb:v0572p1328* - ID_PRODUCT_FROM_DATABASE=TrendNet TFM-561 modem - -usb:v0572p2000* - ID_PRODUCT_FROM_DATABASE=SoftGate 802.11 Adapter - -usb:v0572p2002* - ID_PRODUCT_FROM_DATABASE=SoftGate 802.11 Adapter - -usb:v0572p262A* - ID_PRODUCT_FROM_DATABASE=tm5600 Video & Audio Grabber Capture - -usb:v0572p8390* - ID_PRODUCT_FROM_DATABASE=WinFast PalmTop/Novo TV Video - -usb:v0572p8392* - ID_PRODUCT_FROM_DATABASE=WinFast PalmTop/Novo TV Video - -usb:v0572pCAFC* - ID_PRODUCT_FROM_DATABASE=CX861xx ROM Boot Loader - -usb:v0572pCAFE* - ID_PRODUCT_FROM_DATABASE=AccessRunner ADSL Modem - -usb:v0572pCB00* - ID_PRODUCT_FROM_DATABASE=ADSL Modem - -usb:v0572pCB01* - ID_PRODUCT_FROM_DATABASE=ADSL Modem - -usb:v0572pCB06* - ID_PRODUCT_FROM_DATABASE=StarModem Network Interface - -usb:v0573* - ID_VENDOR_FROM_DATABASE=Zoran Co. Personal Media Division (Nogatech) - -usb:v0573p0003* - ID_PRODUCT_FROM_DATABASE=USBGear USBG-V1 - -usb:v0573p0400* - ID_PRODUCT_FROM_DATABASE=D-Link V100 - -usb:v0573p0600* - ID_PRODUCT_FROM_DATABASE=Dazzle USBVision (1006) - -usb:v0573p1300* - ID_PRODUCT_FROM_DATABASE=leadtek USBVision (1006) - -usb:v0573p2000* - ID_PRODUCT_FROM_DATABASE=X10 va10a Wireless Camera - -usb:v0573p2001* - ID_PRODUCT_FROM_DATABASE=Dazzle EmMe (2001) - -usb:v0573p2101* - ID_PRODUCT_FROM_DATABASE=Zoran Co. PMD (Nogatech) AV-grabber Manhattan - -usb:v0573p2D00* - ID_PRODUCT_FROM_DATABASE=Osprey 50 - -usb:v0573p2D01* - ID_PRODUCT_FROM_DATABASE=Hauppauge USB-Live Model 600 - -usb:v0573p3000* - ID_PRODUCT_FROM_DATABASE=Dazzle MicroCam (NTSC) - -usb:v0573p3001* - ID_PRODUCT_FROM_DATABASE=Dazzle MicroCam (PAL) - -usb:v0573p4000* - ID_PRODUCT_FROM_DATABASE=Nogatech TV! (NTSC) - -usb:v0573p4001* - ID_PRODUCT_FROM_DATABASE=Nogatech TV! (PAL) - -usb:v0573p4002* - ID_PRODUCT_FROM_DATABASE=Nogatech TV! (PAL-I-) - -usb:v0573p4003* - ID_PRODUCT_FROM_DATABASE=Nogatech TV! (MF-) - -usb:v0573p4008* - ID_PRODUCT_FROM_DATABASE=Nogatech TV! (NTSC) (T) - -usb:v0573p4009* - ID_PRODUCT_FROM_DATABASE=Nogatech TV! (PAL) (T) - -usb:v0573p4010* - ID_PRODUCT_FROM_DATABASE=Nogatech TV! (NTSC) (A) - -usb:v0573p4100* - ID_PRODUCT_FROM_DATABASE=USB-TV FM (NTSC) - -usb:v0573p4110* - ID_PRODUCT_FROM_DATABASE=PNY USB-TV (NTSC) FM - -usb:v0573p4400* - ID_PRODUCT_FROM_DATABASE=Nogatech TV! Pro (NTSC) - -usb:v0573p4401* - ID_PRODUCT_FROM_DATABASE=Nogatech TV! Pro (PAL) - -usb:v0573p4450* - ID_PRODUCT_FROM_DATABASE=PixelView PlayTv-USB PRO (PAL) FM - -usb:v0573p4451* - ID_PRODUCT_FROM_DATABASE=Nogatech TV! Pro (PAL+) - -usb:v0573p4452* - ID_PRODUCT_FROM_DATABASE=Nogatech TV! Pro (PAL-I+) - -usb:v0573p4500* - ID_PRODUCT_FROM_DATABASE=Nogatech TV! Pro (NTSC) - -usb:v0573p4501* - ID_PRODUCT_FROM_DATABASE=Nogatech TV! Pro (PAL) - -usb:v0573p4550* - ID_PRODUCT_FROM_DATABASE=ZTV ZT-721 2.4GHz A/V Receiver - -usb:v0573p4551* - ID_PRODUCT_FROM_DATABASE=Dazzle TV! Pro Audio (P+) - -usb:v0573p4D00* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB USA - -usb:v0573p4D01* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB - -usb:v0573p4D02* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB UK - -usb:v0573p4D03* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB France - -usb:v0573p4D04* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV (PAL D/K) - -usb:v0573p4D10* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB with FM USA radio - -usb:v0573p4D11* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB (PAL) with FM radio - -usb:v0573p4D12* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB UK with FM Radio - -usb:v0573p4D14* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV (PAL D/K FM) - -usb:v0573p4D20* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB II (PAL) with FM radio - -usb:v0573p4D21* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB II (PAL) - -usb:v0573p4D22* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB II (PAL) Model 566 - -usb:v0573p4D23* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB France 4D23 - -usb:v0573p4D24* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV Pro (PAL D/K) - -usb:v0573p4D25* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB Model 40209 rev B234 - -usb:v0573p4D26* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB Model 40209 rev B243 - -usb:v0573p4D27* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB Model 40204 Rev B281 - -usb:v0573p4D28* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB Model 40204 rev B283 - -usb:v0573p4D29* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB Model 40205 rev B298 - -usb:v0573p4D2A* - ID_PRODUCT_FROM_DATABASE=Hauppague WinTV-USB Model 602 Rev B285 - -usb:v0573p4D2B* - ID_PRODUCT_FROM_DATABASE=Hauppague WinTV-USB Model 602 Rev B282 - -usb:v0573p4D2C* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV Pro (PAL/SECAM) - -usb:v0573p4D30* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB FM Model 40211 Rev B123 - -usb:v0573p4D31* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB III (PAL) with FM radio Model 568 - -usb:v0573p4D32* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB III (PAL) FM Model 573 - -usb:v0573p4D34* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV Pro (PAL D/K FM) - -usb:v0573p4D35* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB III (PAL) FM Model 597 - -usb:v0573p4D36* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV Pro (PAL B/G FM) - -usb:v0573p4D37* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV-USB Model 40219 rev E189 - -usb:v0573p4D38* - ID_PRODUCT_FROM_DATABASE=Hauppauge WinTV Pro (NTSC FM) - -usb:v0574* - ID_VENDOR_FROM_DATABASE=City University of Hong Kong - -usb:v0575* - ID_VENDOR_FROM_DATABASE=Philips Creative Display Solutions - -usb:v0576* - ID_VENDOR_FROM_DATABASE=BAFO/Quality Computer Accessories - -usb:v0577* - ID_VENDOR_FROM_DATABASE=ELSA - -usb:v0578* - ID_VENDOR_FROM_DATABASE=Intrinsix Corp. - -usb:v0579* - ID_VENDOR_FROM_DATABASE=GVC Corp. - -usb:v057A* - ID_VENDOR_FROM_DATABASE=Samsung Electronics America - -usb:v057B* - ID_VENDOR_FROM_DATABASE=Y-E Data, Inc. - -usb:v057Bp0000* - ID_PRODUCT_FROM_DATABASE=FlashBuster-U Floppy - -usb:v057Bp0001* - ID_PRODUCT_FROM_DATABASE=Tri-Media Reader Floppy - -usb:v057Bp0006* - ID_PRODUCT_FROM_DATABASE=Tri-Media Reader Card Reader - -usb:v057Bp0010* - ID_PRODUCT_FROM_DATABASE=Memory Stick Reader Writer - -usb:v057Bp0020* - ID_PRODUCT_FROM_DATABASE=HEXA Media Drive 6-in-1 Card Reader Writer - -usb:v057Bp0030* - ID_PRODUCT_FROM_DATABASE=Memory Card Viewer (TV) - -usb:v057C* - ID_VENDOR_FROM_DATABASE=AVM GmbH - -usb:v057Cp0B00* - ID_PRODUCT_FROM_DATABASE=ISDN-Controller B1 Family - -usb:v057Cp0C00* - ID_PRODUCT_FROM_DATABASE=ISDN-Controller FRITZ!Card - -usb:v057Cp1000* - ID_PRODUCT_FROM_DATABASE=ISDN-Controller FRITZ!Card v2.0 - -usb:v057Cp1900* - ID_PRODUCT_FROM_DATABASE=ISDN-Controller FRITZ!Card v2.1 - -usb:v057Cp2000* - ID_PRODUCT_FROM_DATABASE=ISDN-Connector FRITZ!X - -usb:v057Cp2200* - ID_PRODUCT_FROM_DATABASE=BlueFRITZ! - -usb:v057Cp2300* - ID_PRODUCT_FROM_DATABASE=Teledat X130 DSL - -usb:v057Cp2800* - ID_PRODUCT_FROM_DATABASE=ISDN-Connector TA - -usb:v057Cp3200* - ID_PRODUCT_FROM_DATABASE=Teledat X130 DSL - -usb:v057Cp3500* - ID_PRODUCT_FROM_DATABASE=FRITZ!Card DSL SL - -usb:v057Cp3701* - ID_PRODUCT_FROM_DATABASE=FRITZ!Box SL - -usb:v057Cp3702* - ID_PRODUCT_FROM_DATABASE=FRITZ!Box - -usb:v057Cp3800* - ID_PRODUCT_FROM_DATABASE=BlueFRITZ! Bluetooth Stick - -usb:v057Cp3A00* - ID_PRODUCT_FROM_DATABASE=FRITZ!Box Fon - -usb:v057Cp3C00* - ID_PRODUCT_FROM_DATABASE=FRITZ!Box WLAN - -usb:v057Cp3D00* - ID_PRODUCT_FROM_DATABASE=Fritz!Box - -usb:v057Cp3E01* - ID_PRODUCT_FROM_DATABASE=FRITZ!Box (Annex A) - -usb:v057Cp4001* - ID_PRODUCT_FROM_DATABASE=FRITZ!Box Fon (Annex A) - -usb:v057Cp4101* - ID_PRODUCT_FROM_DATABASE=FRITZ!Box WLAN (Annex A) - -usb:v057Cp4201* - ID_PRODUCT_FROM_DATABASE=FRITZ!Box Fon WLAN (Annex A) - -usb:v057Cp4601* - ID_PRODUCT_FROM_DATABASE=Eumex 5520PC (WinXP/2000) - -usb:v057Cp4602* - ID_PRODUCT_FROM_DATABASE=Eumex 400 (WinXP/2000) - -usb:v057Cp4701* - ID_PRODUCT_FROM_DATABASE=AVM FRITZ!Box Fon ata - -usb:v057Cp5401* - ID_PRODUCT_FROM_DATABASE=Eumex 300 IP - -usb:v057Cp5601* - ID_PRODUCT_FROM_DATABASE=AVM Fritz!WLAN [Texas Instruments TNETW1450] - -usb:v057Cp6201* - ID_PRODUCT_FROM_DATABASE=AVM Fritz!WLAN v1.1 [Texas Instruments TNETW1450] - -usb:v057Cp62FF* - ID_PRODUCT_FROM_DATABASE=AVM Fritz!WLAN USB (in CD-ROM-mode) - -usb:v057Cp8401* - ID_PRODUCT_FROM_DATABASE=Fritz!WLAN N [Atheros AR9001U] - -usb:v057Cp8402* - ID_PRODUCT_FROM_DATABASE=Fritz!WLAN N 2.4 [Atheros AR9001U] - -usb:v057Cp8403* - ID_PRODUCT_FROM_DATABASE=Fritz!WLAN N v2 [Atheros AR9271] - -usb:v057Cp84FF* - ID_PRODUCT_FROM_DATABASE=AVM Fritz!WLAN USB N (in CD-ROM-mode) - -usb:v057D* - ID_VENDOR_FROM_DATABASE=Shark Multimedia, Inc. - -usb:v057E* - ID_VENDOR_FROM_DATABASE=Nintendo Co., Ltd - -usb:v057Ep0305* - ID_PRODUCT_FROM_DATABASE=Broadcom BCM2045A Bluetooth Radio [Nintendo Wii] - -usb:v057Ep0306* - ID_PRODUCT_FROM_DATABASE=Wii Remote Controller RVL-003 - -usb:v057F* - ID_VENDOR_FROM_DATABASE=QuickShot, Ltd - -usb:v057Fp6238* - ID_PRODUCT_FROM_DATABASE=USB StrikePad - -usb:v0580* - ID_VENDOR_FROM_DATABASE=Denron, Inc. - -usb:v0581* - ID_VENDOR_FROM_DATABASE=Racal Data Group - -usb:v0582* - ID_VENDOR_FROM_DATABASE=Roland Corp. - -usb:v0582p0000* - ID_PRODUCT_FROM_DATABASE=UA-100(G) - -usb:v0582p0002* - ID_PRODUCT_FROM_DATABASE=UM-4/MPU-64 MIDI Interface - -usb:v0582p0003* - ID_PRODUCT_FROM_DATABASE=SoundCanvas SC-8850 - -usb:v0582p0004* - ID_PRODUCT_FROM_DATABASE=U-8 - -usb:v0582p0005* - ID_PRODUCT_FROM_DATABASE=UM-2(C/EX) - -usb:v0582p0007* - ID_PRODUCT_FROM_DATABASE=SoundCanvas SC-8820 - -usb:v0582p0008* - ID_PRODUCT_FROM_DATABASE=PC-300 - -usb:v0582p0009* - ID_PRODUCT_FROM_DATABASE=UM-1(E/S/X) - -usb:v0582p000B* - ID_PRODUCT_FROM_DATABASE=SK-500 - -usb:v0582p000C* - ID_PRODUCT_FROM_DATABASE=SC-D70 - -usb:v0582p0010* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-5 - -usb:v0582p0011* - ID_PRODUCT_FROM_DATABASE=Edirol UA-5 Sound Capture - -usb:v0582p0012* - ID_PRODUCT_FROM_DATABASE=XV-5050 - -usb:v0582p0013* - ID_PRODUCT_FROM_DATABASE=XV-5050 - -usb:v0582p0014* - ID_PRODUCT_FROM_DATABASE=EDIROL UM-880 MIDI I/F (native) - -usb:v0582p0015* - ID_PRODUCT_FROM_DATABASE=EDIROL UM-880 MIDI I/F (generic) - -usb:v0582p0016* - ID_PRODUCT_FROM_DATABASE=EDIROL SD-90 - -usb:v0582p0017* - ID_PRODUCT_FROM_DATABASE=EDIROL SD-90 - -usb:v0582p0018* - ID_PRODUCT_FROM_DATABASE=UA-1A - -usb:v0582p001B* - ID_PRODUCT_FROM_DATABASE=MMP-2 - -usb:v0582p001C* - ID_PRODUCT_FROM_DATABASE=MMP-2 - -usb:v0582p001D* - ID_PRODUCT_FROM_DATABASE=V-SYNTH - -usb:v0582p001E* - ID_PRODUCT_FROM_DATABASE=V-SYNTH - -usb:v0582p0023* - ID_PRODUCT_FROM_DATABASE=EDIROL UM-550 - -usb:v0582p0024* - ID_PRODUCT_FROM_DATABASE=EDIROL UM-550 - -usb:v0582p0025* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-20 - -usb:v0582p0026* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-20 - -usb:v0582p0027* - ID_PRODUCT_FROM_DATABASE=EDIROL SD-20 - -usb:v0582p0028* - ID_PRODUCT_FROM_DATABASE=EDIROL SD-20 - -usb:v0582p0029* - ID_PRODUCT_FROM_DATABASE=EDIROL SD-80 - -usb:v0582p002A* - ID_PRODUCT_FROM_DATABASE=EDIROL SD-80 - -usb:v0582p002B* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-700 - -usb:v0582p002C* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-700 - -usb:v0582p002D* - ID_PRODUCT_FROM_DATABASE=XV-2020 Synthesizer - -usb:v0582p002E* - ID_PRODUCT_FROM_DATABASE=XV-2020 Synthesizer - -usb:v0582p002F* - ID_PRODUCT_FROM_DATABASE=VariOS - -usb:v0582p0030* - ID_PRODUCT_FROM_DATABASE=VariOS - -usb:v0582p0033* - ID_PRODUCT_FROM_DATABASE=EDIROL PCR - -usb:v0582p0034* - ID_PRODUCT_FROM_DATABASE=EDIROL PCR - -usb:v0582p0035* - ID_PRODUCT_FROM_DATABASE=M-1000 - -usb:v0582p0037* - ID_PRODUCT_FROM_DATABASE=Digital Piano - -usb:v0582p0038* - ID_PRODUCT_FROM_DATABASE=Digital Piano - -usb:v0582p003B* - ID_PRODUCT_FROM_DATABASE=BOSS GS-10 - -usb:v0582p003C* - ID_PRODUCT_FROM_DATABASE=BOSS GS-10 - -usb:v0582p0040* - ID_PRODUCT_FROM_DATABASE=GI-20 - -usb:v0582p0041* - ID_PRODUCT_FROM_DATABASE=GI-20 - -usb:v0582p0042* - ID_PRODUCT_FROM_DATABASE=RS-70 - -usb:v0582p0043* - ID_PRODUCT_FROM_DATABASE=RS-70 - -usb:v0582p0044* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-1000 - -usb:v0582p0047* - ID_PRODUCT_FROM_DATABASE=EDIROL UR-80 WAVE - -usb:v0582p0048* - ID_PRODUCT_FROM_DATABASE=EDIROL UR-80 MIDI - -usb:v0582p0049* - ID_PRODUCT_FROM_DATABASE=EDIROL UR-80 WAVE - -usb:v0582p004A* - ID_PRODUCT_FROM_DATABASE=EDIROL UR-80 MIDI - -usb:v0582p004B* - ID_PRODUCT_FROM_DATABASE=EDIROL M-100FX - -usb:v0582p004C* - ID_PRODUCT_FROM_DATABASE=EDIROL PCR-A WAVE - -usb:v0582p004D* - ID_PRODUCT_FROM_DATABASE=EDIROL PCR-A MIDI - -usb:v0582p004E* - ID_PRODUCT_FROM_DATABASE=EDIROL PCR-A WAVE - -usb:v0582p004F* - ID_PRODUCT_FROM_DATABASE=EDIROL PCR-A MIDI - -usb:v0582p0050* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-3FX - -usb:v0582p0052* - ID_PRODUCT_FROM_DATABASE=EDIROL UM-1SX - -usb:v0582p0054* - ID_PRODUCT_FROM_DATABASE=Digital Piano - -usb:v0582p0060* - ID_PRODUCT_FROM_DATABASE=EXR Series - -usb:v0582p0064* - ID_PRODUCT_FROM_DATABASE=EDIROL PCR-1 WAVE - -usb:v0582p0065* - ID_PRODUCT_FROM_DATABASE=EDIROL PCR-1 MIDI - -usb:v0582p0066* - ID_PRODUCT_FROM_DATABASE=EDIROL PCR-1 WAVE - -usb:v0582p0067* - ID_PRODUCT_FROM_DATABASE=EDIROL PCR-1 MIDI - -usb:v0582p006A* - ID_PRODUCT_FROM_DATABASE=SP-606 - -usb:v0582p006B* - ID_PRODUCT_FROM_DATABASE=SP-606 - -usb:v0582p006D* - ID_PRODUCT_FROM_DATABASE=FANTOM-X - -usb:v0582p006E* - ID_PRODUCT_FROM_DATABASE=FANTOM-X - -usb:v0582p0073* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-25 - -usb:v0582p0074* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-25 - -usb:v0582p0075* - ID_PRODUCT_FROM_DATABASE=BOSS DR-880 - -usb:v0582p0076* - ID_PRODUCT_FROM_DATABASE=BOSS DR-880 - -usb:v0582p007A* - ID_PRODUCT_FROM_DATABASE=RD - -usb:v0582p007B* - ID_PRODUCT_FROM_DATABASE=RD - -usb:v0582p007D* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-101 - -usb:v0582p0080* - ID_PRODUCT_FROM_DATABASE=G-70 - -usb:v0582p0081* - ID_PRODUCT_FROM_DATABASE=G-70 - -usb:v0582p0084* - ID_PRODUCT_FROM_DATABASE=V-SYNTH XT - -usb:v0582p0089* - ID_PRODUCT_FROM_DATABASE=BOSS GT-PRO - -usb:v0582p008B* - ID_PRODUCT_FROM_DATABASE=EDIROL PC-50 - -usb:v0582p008C* - ID_PRODUCT_FROM_DATABASE=EDIROL PC-50 - -usb:v0582p008D* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-101 USB1 - -usb:v0582p0092* - ID_PRODUCT_FROM_DATABASE=EDIROL PC-80 WAVE - -usb:v0582p0093* - ID_PRODUCT_FROM_DATABASE=EDIROL PC-80 MIDI - -usb:v0582p0096* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-1EX - -usb:v0582p009A* - ID_PRODUCT_FROM_DATABASE=EDIROL UM-3EX - -usb:v0582p009D* - ID_PRODUCT_FROM_DATABASE=EDIROL UM-1 - -usb:v0582p00A0* - ID_PRODUCT_FROM_DATABASE=MD-P1 - -usb:v0582p00A2* - ID_PRODUCT_FROM_DATABASE=Digital Piano - -usb:v0582p00A3* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-4FX - -usb:v0582p00A6* - ID_PRODUCT_FROM_DATABASE=Juno-G - -usb:v0582p00A9* - ID_PRODUCT_FROM_DATABASE=MC-808 - -usb:v0582p00AD* - ID_PRODUCT_FROM_DATABASE=SH-201 - -usb:v0582p00B2* - ID_PRODUCT_FROM_DATABASE=VG-99 - -usb:v0582p00B3* - ID_PRODUCT_FROM_DATABASE=VG-99 - -usb:v0582p00B7* - ID_PRODUCT_FROM_DATABASE=BK-7m/VIMA JM-5/8 - -usb:v0582p00C2* - ID_PRODUCT_FROM_DATABASE=SonicCell - -usb:v0582p00C4* - ID_PRODUCT_FROM_DATABASE=EDIROL M-16DX - -usb:v0582p00C5* - ID_PRODUCT_FROM_DATABASE=SP-555 - -usb:v0582p00C7* - ID_PRODUCT_FROM_DATABASE=V-Synth GT - -usb:v0582p00D1* - ID_PRODUCT_FROM_DATABASE=Music Atelier - -usb:v0582p00D3* - ID_PRODUCT_FROM_DATABASE=M-380/400 - -usb:v0582p00DA* - ID_PRODUCT_FROM_DATABASE=BOSS GT-10 - -usb:v0582p00DB* - ID_PRODUCT_FROM_DATABASE=BOSS GT-10 Guitar Effects Processor - -usb:v0582p00DC* - ID_PRODUCT_FROM_DATABASE=BOSS GT-10B - -usb:v0582p00DE* - ID_PRODUCT_FROM_DATABASE=Fantom G - -usb:v0582p00E6* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-25EX (Advanced mode) - -usb:v0582p00E7* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-25EX - -usb:v0582p00E9* - ID_PRODUCT_FROM_DATABASE=UA-1G - -usb:v0582p00EB* - ID_PRODUCT_FROM_DATABASE=VS-100 - -usb:v0582p00F6* - ID_PRODUCT_FROM_DATABASE=GW-8/AX-Synth - -usb:v0582p00F8* - ID_PRODUCT_FROM_DATABASE=JUNO Series - -usb:v0582p00FC* - ID_PRODUCT_FROM_DATABASE=VS-700C - -usb:v0582p00FD* - ID_PRODUCT_FROM_DATABASE=VS-700 - -usb:v0582p00FE* - ID_PRODUCT_FROM_DATABASE=VS-700 M1 - -usb:v0582p00FF* - ID_PRODUCT_FROM_DATABASE=VS-700 M2 - -usb:v0582p0100* - ID_PRODUCT_FROM_DATABASE=VS-700 - -usb:v0582p0101* - ID_PRODUCT_FROM_DATABASE=VS-700 M2 - -usb:v0582p0102* - ID_PRODUCT_FROM_DATABASE=VB-99 - -usb:v0582p0104* - ID_PRODUCT_FROM_DATABASE=UM-1G - -usb:v0582p0106* - ID_PRODUCT_FROM_DATABASE=UM-2G - -usb:v0582p0108* - ID_PRODUCT_FROM_DATABASE=UM-3G - -usb:v0582p0109* - ID_PRODUCT_FROM_DATABASE=eBand JS-8 - -usb:v0582p010D* - ID_PRODUCT_FROM_DATABASE=A-500S - -usb:v0582p010F* - ID_PRODUCT_FROM_DATABASE=A-PRO - -usb:v0582p0110* - ID_PRODUCT_FROM_DATABASE=A-PRO - -usb:v0582p0111* - ID_PRODUCT_FROM_DATABASE=GAIA SH-01 - -usb:v0582p0113* - ID_PRODUCT_FROM_DATABASE=ME-25 - -usb:v0582p0114* - ID_PRODUCT_FROM_DATABASE=SD-50 - -usb:v0582p0116* - ID_PRODUCT_FROM_DATABASE=WAVE/MP3 RECORDER R-05 - -usb:v0582p0117* - ID_PRODUCT_FROM_DATABASE=VS-20 - -usb:v0582p0119* - ID_PRODUCT_FROM_DATABASE=OCTAPAD SPD-30 - -usb:v0582p011C* - ID_PRODUCT_FROM_DATABASE=Lucina AX-09 - -usb:v0582p011E* - ID_PRODUCT_FROM_DATABASE=BR-800 - -usb:v0582p0120* - ID_PRODUCT_FROM_DATABASE=OCTA-CAPTURE - -usb:v0582p0121* - ID_PRODUCT_FROM_DATABASE=OCTA-CAPTURE - -usb:v0582p0123* - ID_PRODUCT_FROM_DATABASE=JUNO-Gi - -usb:v0582p0124* - ID_PRODUCT_FROM_DATABASE=M-300 - -usb:v0582p0127* - ID_PRODUCT_FROM_DATABASE=GR-55 - -usb:v0582p012A* - ID_PRODUCT_FROM_DATABASE=UM-ONE - -usb:v0582p012B* - ID_PRODUCT_FROM_DATABASE=DUO-CAPTURE - -usb:v0582p012F* - ID_PRODUCT_FROM_DATABASE=QUAD-CAPTURE - -usb:v0582p0130* - ID_PRODUCT_FROM_DATABASE=MICRO BR BR-80 - -usb:v0582p0132* - ID_PRODUCT_FROM_DATABASE=TRI-CAPTURE - -usb:v0582p0134* - ID_PRODUCT_FROM_DATABASE=V-Mixer - -usb:v0582p0138* - ID_PRODUCT_FROM_DATABASE=Boss RC-300 (Audio mode) - -usb:v0582p0139* - ID_PRODUCT_FROM_DATABASE=Boss RC-300 (Storage mode) - -usb:v0582p013A* - ID_PRODUCT_FROM_DATABASE=JUPITER-80 - -usb:v0582p013E* - ID_PRODUCT_FROM_DATABASE=R-26 - -usb:v0582p0145* - ID_PRODUCT_FROM_DATABASE=SPD-SX - -usb:v0582p014B* - ID_PRODUCT_FROM_DATABASE=eBand JS-10 - -usb:v0582p014D* - ID_PRODUCT_FROM_DATABASE=GT-100 - -usb:v0582p0150* - ID_PRODUCT_FROM_DATABASE=TD-15 - -usb:v0582p0151* - ID_PRODUCT_FROM_DATABASE=TD-11 - -usb:v0582p0154* - ID_PRODUCT_FROM_DATABASE=JUPITER-50 - -usb:v0582p0156* - ID_PRODUCT_FROM_DATABASE=A-Series - -usb:v0582p0158* - ID_PRODUCT_FROM_DATABASE=TD-30 - -usb:v0582p0159* - ID_PRODUCT_FROM_DATABASE=DUO-CAPTURE EX - -usb:v0582p015B* - ID_PRODUCT_FROM_DATABASE=INTEGRA-7 - -usb:v0582p015D* - ID_PRODUCT_FROM_DATABASE=R-88 - -usb:v0582p0505* - ID_PRODUCT_FROM_DATABASE=EDIROL UA-101 - -usb:v0583* - ID_VENDOR_FROM_DATABASE=Padix Co., Ltd (Rockfire) - -usb:v0583p0001* - ID_PRODUCT_FROM_DATABASE=4 Axis 12 button +POV - -usb:v0583p0002* - ID_PRODUCT_FROM_DATABASE=4 Axis 12 button +POV - -usb:v0583p2030* - ID_PRODUCT_FROM_DATABASE=RM-203 USB Nest [mode 1] - -usb:v0583p2031* - ID_PRODUCT_FROM_DATABASE=RM-203 USB Nest [mode 2] - -usb:v0583p2032* - ID_PRODUCT_FROM_DATABASE=RM-203 USB Nest [mode 3] - -usb:v0583p2033* - ID_PRODUCT_FROM_DATABASE=RM-203 USB Nest [mode 4] - -usb:v0583p2050* - ID_PRODUCT_FROM_DATABASE=PX-205 PSX Bridge - -usb:v0583p205F* - ID_PRODUCT_FROM_DATABASE=PSX/USB converter - -usb:v0583p206F* - ID_PRODUCT_FROM_DATABASE=USB, 2-axis 8-button gamepad - -usb:v0583p3050* - ID_PRODUCT_FROM_DATABASE=QF-305u Gamepad - -usb:v0583p3379* - ID_PRODUCT_FROM_DATABASE=Rockfire X-Force - -usb:v0583p337F* - ID_PRODUCT_FROM_DATABASE=Rockfire USB RacingStar Vibra - -usb:v0583p509F* - ID_PRODUCT_FROM_DATABASE=USB,4-Axis,12-Button with POV - -usb:v0583p5259* - ID_PRODUCT_FROM_DATABASE=Rockfire USB SkyShuttle Vibra - -usb:v0583p525F* - ID_PRODUCT_FROM_DATABASE=USB Vibration Pad - -usb:v0583p5308* - ID_PRODUCT_FROM_DATABASE=USB Wireless VibrationPad - -usb:v0583p5359* - ID_PRODUCT_FROM_DATABASE=Rockfire USB SkyShuttle Pro - -usb:v0583p535F* - ID_PRODUCT_FROM_DATABASE=USB,real VibrationPad - -usb:v0583p5659* - ID_PRODUCT_FROM_DATABASE=Rockfire USB SkyShuttle Vibra - -usb:v0583p565F* - ID_PRODUCT_FROM_DATABASE=USB VibrationPad - -usb:v0583p6009* - ID_PRODUCT_FROM_DATABASE=Revenger - -usb:v0583p600F* - ID_PRODUCT_FROM_DATABASE=USB,GameBoard II - -usb:v0583p6258* - ID_PRODUCT_FROM_DATABASE=USB, 4-axis, 6-button joystick w/view finder - -usb:v0583p6889* - ID_PRODUCT_FROM_DATABASE=Windstorm Pro - -usb:v0583p688F* - ID_PRODUCT_FROM_DATABASE=QF-688uv Windstorm Pro Joystick - -usb:v0583p7070* - ID_PRODUCT_FROM_DATABASE=QF-707u Bazooka Joystick - -usb:v0583pA000* - ID_PRODUCT_FROM_DATABASE=MaxFire G-08XU Gamepad - -usb:v0583pA015* - ID_PRODUCT_FROM_DATABASE=4-Axis,16-Button with POV - -usb:v0583pA019* - ID_PRODUCT_FROM_DATABASE=USB, Vibration ,4-axis, 8-button joystick w/view finder - -usb:v0583pA020* - ID_PRODUCT_FROM_DATABASE=USB,4-Axis,10-Button with POV - -usb:v0583pA021* - ID_PRODUCT_FROM_DATABASE=USB,4-Axis,12-Button with POV - -usb:v0583pA022* - ID_PRODUCT_FROM_DATABASE=USB,4-Axis,14-Button with POV - -usb:v0583pA023* - ID_PRODUCT_FROM_DATABASE=USB,4-Axis,16-Button with POV - -usb:v0583pA024* - ID_PRODUCT_FROM_DATABASE=4axis,12button vibrition audio gamepad - -usb:v0583pA025* - ID_PRODUCT_FROM_DATABASE=4axis,12button vibrition audio gamepad - -usb:v0583pA130* - ID_PRODUCT_FROM_DATABASE=USB Wireless 2.4GHz Gamepad - -usb:v0583pA131* - ID_PRODUCT_FROM_DATABASE=USB Wireless 2.4GHz Joystick - -usb:v0583pA132* - ID_PRODUCT_FROM_DATABASE=USB Wireless 2.4GHz Wheelpad - -usb:v0583pA133* - ID_PRODUCT_FROM_DATABASE=USB Wireless 2.4GHz Wheel&Gamepad - -usb:v0583pA202* - ID_PRODUCT_FROM_DATABASE=ForceFeedbackWheel - -usb:v0583pA209* - ID_PRODUCT_FROM_DATABASE=MetalStrike FF - -usb:v0583pB000* - ID_PRODUCT_FROM_DATABASE=USB,4-Axis,12-Button with POV - -usb:v0583pB001* - ID_PRODUCT_FROM_DATABASE=USB,4-Axis,12-Button with POV - -usb:v0583pB002* - ID_PRODUCT_FROM_DATABASE=Vibration,12-Button USB Wheel - -usb:v0583pB005* - ID_PRODUCT_FROM_DATABASE=USB,12-Button Wheel - -usb:v0583pB008* - ID_PRODUCT_FROM_DATABASE=USB Wireless 2.4GHz Wheel - -usb:v0583pB009* - ID_PRODUCT_FROM_DATABASE=USB,12-Button Wheel - -usb:v0583pB00A* - ID_PRODUCT_FROM_DATABASE=PSX/USB converter - -usb:v0583pB00B* - ID_PRODUCT_FROM_DATABASE=PSX/USB converter - -usb:v0583pB00C* - ID_PRODUCT_FROM_DATABASE=PSX/USB converter - -usb:v0583pB00D* - ID_PRODUCT_FROM_DATABASE=PSX/USB converter - -usb:v0583pB00E* - ID_PRODUCT_FROM_DATABASE=4-Axis,12-Button with POV - -usb:v0583pB00F* - ID_PRODUCT_FROM_DATABASE=USB,5-Axis,10-Button with POV - -usb:v0583pB010* - ID_PRODUCT_FROM_DATABASE=MetalStrike Pro - -usb:v0583pB012* - ID_PRODUCT_FROM_DATABASE=Wireless MetalStrike - -usb:v0583pB013* - ID_PRODUCT_FROM_DATABASE=USB,Wiress 2.4GHZ Joystick - -usb:v0583pB016* - ID_PRODUCT_FROM_DATABASE=USB,5-Axis,10-Button with POV - -usb:v0583pB018* - ID_PRODUCT_FROM_DATABASE=TW6 Wheel - -usb:v0583pFF60* - ID_PRODUCT_FROM_DATABASE=USB Wireless VibrationPad - -usb:v0584* - ID_VENDOR_FROM_DATABASE=RATOC System, Inc. - -usb:v0584p0008* - ID_PRODUCT_FROM_DATABASE=Fujifilm MemoryCard ReaderWriter - -usb:v0584p0220* - ID_PRODUCT_FROM_DATABASE=U2SCX SCSI Converter - -usb:v0584pB000* - ID_PRODUCT_FROM_DATABASE=REX-USB60 - -usb:v0584pB020* - ID_PRODUCT_FROM_DATABASE=REX-USB60F - -usb:v0585* - ID_VENDOR_FROM_DATABASE=FlashPoint Technology, Inc. - -usb:v0585p0001* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0585p0002* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0585p0003* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0585p0004* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0585p0005* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0585p0006* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0585p0007* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0585p0008* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0585p0009* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0585p000A* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0585p000B* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0585p000C* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0585p000D* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0585p000E* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0585p000F* - ID_PRODUCT_FROM_DATABASE=Digital Camera - -usb:v0586* - ID_VENDOR_FROM_DATABASE=ZyXEL Communications Corp. - -usb:v0586p0025* - ID_PRODUCT_FROM_DATABASE=802.11b/g/n USB Wireless Network Adapter - -usb:v0586p0102* - ID_PRODUCT_FROM_DATABASE=omni.net II ISDN TA - -usb:v0586p1000* - ID_PRODUCT_FROM_DATABASE=Omni NET Modem / ISDN TA - -usb:v0586p1500* - ID_PRODUCT_FROM_DATABASE=Omni 56K Plus - -usb:v0586p2011* - ID_PRODUCT_FROM_DATABASE=Scorpion-980N keyboard - -usb:v0586p3304* - ID_PRODUCT_FROM_DATABASE=LAN Modem - -usb:v0586p3309* - ID_PRODUCT_FROM_DATABASE=ADSL Modem Prestige 600 series - -usb:v0586p330A* - ID_PRODUCT_FROM_DATABASE=ADSL Modem Interface - -usb:v0586p330E* - ID_PRODUCT_FROM_DATABASE=USB Broadband ADSL Modem Rev 1.10 - -usb:v0586p3400* - ID_PRODUCT_FROM_DATABASE=ZyAIR B-220 IEEE 802.11b Adapter - -usb:v0586p3401* - ID_PRODUCT_FROM_DATABASE=ZyAIR G-220 802.11bg - -usb:v0586p3402* - ID_PRODUCT_FROM_DATABASE=ZyAIR G-220F 802.11bg - -usb:v0586p3403* - ID_PRODUCT_FROM_DATABASE=AG-200 802.11abg Wireless Adapter [Atheros AR5523] - -usb:v0586p3407* - ID_PRODUCT_FROM_DATABASE=G-200 v2 802.11bg - -usb:v0586p3408* - ID_PRODUCT_FROM_DATABASE=G-260 802.11bg - -usb:v0586p3409* - ID_PRODUCT_FROM_DATABASE=AG-225H 802.11bg - -usb:v0586p340A* - ID_PRODUCT_FROM_DATABASE=M-202 802.11bg - -usb:v0586p340C* - ID_PRODUCT_FROM_DATABASE=G-270S 802.11bg Wireless Adapter [Atheros AR5523] - -usb:v0586p340F* - ID_PRODUCT_FROM_DATABASE=G-220 v2 802.11bg - -usb:v0586p3410* - ID_PRODUCT_FROM_DATABASE=ZyAIR G-202 802.11bg - -usb:v0586p3412* - ID_PRODUCT_FROM_DATABASE=802.11bg - -usb:v0586p3413* - ID_PRODUCT_FROM_DATABASE=ZyAIR AG-225H v2 802.11bg - -usb:v0586p3415* - ID_PRODUCT_FROM_DATABASE=G-210H 802.11g Wireless Adapter - -usb:v0586p3416* - ID_PRODUCT_FROM_DATABASE=NWD-210N 802.11b/g/n-draft wireless adapter - -usb:v0586p3417* - ID_PRODUCT_FROM_DATABASE=NWD271N 802.11n Wireless Adapter [Atheros AR9001U-(2)NG] - -usb:v0586p3418* - ID_PRODUCT_FROM_DATABASE=NWD211AN 802.11abgn Wireless Adapter [Ralink RT2870] - -usb:v0586p3419* - ID_PRODUCT_FROM_DATABASE=G-220 v3 802.11bg Wireless Adapter [ZyDAS ZD1211B] - -usb:v0586p341A* - ID_PRODUCT_FROM_DATABASE=NWD-270N Wireless N-lite USB Adapter - -usb:v0586p341E* - ID_PRODUCT_FROM_DATABASE=NWD2105 802.11bgn Wireless Adapter [Ralink RT3070] - -usb:v0586p341F* - ID_PRODUCT_FROM_DATABASE=NWD2205 802.11n Wireless N Adapter [Realtek RTL8192CU] - -usb:v0586p343E* - ID_PRODUCT_FROM_DATABASE=N220 802.11bgn Wireless Adapter - -usb:v0587* - ID_VENDOR_FROM_DATABASE=America Kotobuki Electronics Industries, Inc. - -usb:v0588* - ID_VENDOR_FROM_DATABASE=Sapien Design - -usb:v0589* - ID_VENDOR_FROM_DATABASE=Victron - -usb:v058A* - ID_VENDOR_FROM_DATABASE=Nohau Corp. - -usb:v058B* - ID_VENDOR_FROM_DATABASE=Infineon Technologies - -usb:v058Bp001C* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v058C* - ID_VENDOR_FROM_DATABASE=In Focus Systems - -usb:v058Cp0007* - ID_PRODUCT_FROM_DATABASE=Flash - -usb:v058Cp0008* - ID_PRODUCT_FROM_DATABASE=LP130 - -usb:v058Cp000A* - ID_PRODUCT_FROM_DATABASE=LP530 - -usb:v058Cp0010* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp0011* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp0012* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp0013* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp0014* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp0015* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp0016* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp0017* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp0018* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp0019* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp001A* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp001B* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp001C* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp001D* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp001E* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058Cp001F* - ID_PRODUCT_FROM_DATABASE=Projector - -usb:v058CpFFE5* - ID_PRODUCT_FROM_DATABASE=IN34 Projector - -usb:v058D* - ID_VENDOR_FROM_DATABASE=Micrel Semiconductor - -usb:v058E* - ID_VENDOR_FROM_DATABASE=Tripath Technology, Inc. - -usb:v058F* - ID_VENDOR_FROM_DATABASE=Alcor Micro Corp. - -usb:v058Fp1234* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v058Fp2412* - ID_PRODUCT_FROM_DATABASE=SCard R/W CSR-145 - -usb:v058Fp2802* - ID_PRODUCT_FROM_DATABASE=Monterey Keyboard - -usb:v058Fp5492* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v058Fp6232* - ID_PRODUCT_FROM_DATABASE=Hi-Speed 16-in-1 Flash Card Reader/Writer - -usb:v058Fp6254* - ID_PRODUCT_FROM_DATABASE=USB Hub - -usb:v058Fp6331* - ID_PRODUCT_FROM_DATABASE=SD/MMC/MS Card Reader - -usb:v058Fp6332* - ID_PRODUCT_FROM_DATABASE=Multi-Function Card Reader - -usb:v058Fp6335* - ID_PRODUCT_FROM_DATABASE=SD/MMC Card Reader - -usb:v058Fp6360* - ID_PRODUCT_FROM_DATABASE=Multimedia Card Reader - -usb:v058Fp6361* - ID_PRODUCT_FROM_DATABASE=Multimedia Card Reader - -usb:v058Fp6362* - ID_PRODUCT_FROM_DATABASE=Flash Card Reader/Writer - -usb:v058Fp6364* - ID_PRODUCT_FROM_DATABASE=AU6477 Card Reader Controller - -usb:v058Fp6366* - ID_PRODUCT_FROM_DATABASE=Multi Flash Reader - -usb:v058Fp6377* - ID_PRODUCT_FROM_DATABASE=Multimedia Card Reader - -usb:v058Fp6386* - ID_PRODUCT_FROM_DATABASE=Memory Card - -usb:v058Fp6387* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v058Fp6390* - ID_PRODUCT_FROM_DATABASE=USB 2.0-IDE bridge - -usb:v058Fp9213* - ID_PRODUCT_FROM_DATABASE=MacAlly Kbd Hub - -usb:v058Fp9215* - ID_PRODUCT_FROM_DATABASE=AU9814 Hub - -usb:v058Fp9254* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v058Fp9310* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UID4/5A & UID7A) - -usb:v058Fp9320* - ID_PRODUCT_FROM_DATABASE=Micro Storage Driver for Win98 - -usb:v058Fp9321* - ID_PRODUCT_FROM_DATABASE=Micro Storage Driver for Win98 - -usb:v058Fp9330* - ID_PRODUCT_FROM_DATABASE=SD Reader - -usb:v058Fp9331* - ID_PRODUCT_FROM_DATABASE=Micro Storage Driver for Win98 - -usb:v058Fp9340* - ID_PRODUCT_FROM_DATABASE=Delkin eFilm Reader-32 - -usb:v058Fp9350* - ID_PRODUCT_FROM_DATABASE=Delkin eFilm Reader-32 - -usb:v058Fp9360* - ID_PRODUCT_FROM_DATABASE=8-in-1 Media Card Reader - -usb:v058Fp9361* - ID_PRODUCT_FROM_DATABASE=Multimedia Card Reader - -usb:v058Fp9368* - ID_PRODUCT_FROM_DATABASE=Multimedia Card Reader - -usb:v058Fp9380* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v058Fp9382* - ID_PRODUCT_FROM_DATABASE=Acer/Sweex Flash drive - -usb:v058Fp9384* - ID_PRODUCT_FROM_DATABASE=qdi U2Disk T209M - -usb:v058Fp9410* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v058Fp9472* - ID_PRODUCT_FROM_DATABASE=Keyboard Hub - -usb:v058Fp9510* - ID_PRODUCT_FROM_DATABASE=ChunghwaTL USB02 Smartcard Reader - -usb:v058Fp9520* - ID_PRODUCT_FROM_DATABASE=EMV Certified Smart Card Reader - -usb:v058Fp9720* - ID_PRODUCT_FROM_DATABASE=USB-Serial Adapter - -usb:v058FpA014* - ID_PRODUCT_FROM_DATABASE=Asus Integrated Webcam - -usb:v0590* - ID_VENDOR_FROM_DATABASE=Omron Corp. - -usb:v0590p0004* - ID_PRODUCT_FROM_DATABASE=Cable Modem - -usb:v0590p000B* - ID_PRODUCT_FROM_DATABASE=MR56SVS - -usb:v0590p0028* - ID_PRODUCT_FROM_DATABASE=HJ-720IT / HEM-7080IT-E / HEM-790IT - -usb:v0591* - ID_VENDOR_FROM_DATABASE=Questra Consulting - -usb:v0592* - ID_VENDOR_FROM_DATABASE=Powerware Corp. - -usb:v0592p0002* - ID_PRODUCT_FROM_DATABASE=UPS (X-Slot) - -usb:v0593* - ID_VENDOR_FROM_DATABASE=Incite - -usb:v0594* - ID_VENDOR_FROM_DATABASE=Princeton Graphic Systems - -usb:v0595* - ID_VENDOR_FROM_DATABASE=Zoran Microelectronics, Ltd - -usb:v0595p1001* - ID_PRODUCT_FROM_DATABASE=Digitrex DSC-1300/DSC-2100 (mass storage mode) - -usb:v0595p2002* - ID_PRODUCT_FROM_DATABASE=DIGITAL STILL CAMERA 6M 4X - -usb:v0595p4343* - ID_PRODUCT_FROM_DATABASE=Digital Camera EX-20 DSC - -usb:v0596* - ID_VENDOR_FROM_DATABASE=MicroTouch Systems, Inc. - -usb:v0596p0001* - ID_PRODUCT_FROM_DATABASE=Touchscreen - -usb:v0596p0002* - ID_PRODUCT_FROM_DATABASE=Touch Screen Controller - -usb:v0596p0500* - ID_PRODUCT_FROM_DATABASE=PCT Multitouch HID Controller - -usb:v0597* - ID_VENDOR_FROM_DATABASE=Trisignal Communications - -usb:v0598* - ID_VENDOR_FROM_DATABASE=Niigata Canotec Co., Inc. - -usb:v0599* - ID_VENDOR_FROM_DATABASE=Brilliance Semiconductor, Inc. - -usb:v059A* - ID_VENDOR_FROM_DATABASE=Spectrum Signal Processing, Inc. - -usb:v059B* - ID_VENDOR_FROM_DATABASE=Iomega Corp. - -usb:v059Bp0001* - ID_PRODUCT_FROM_DATABASE=Zip 100 (Type 1) - -usb:v059Bp000B* - ID_PRODUCT_FROM_DATABASE=Zip 100 (Type 2) - -usb:v059Bp0021* - ID_PRODUCT_FROM_DATABASE=Win98 Disk Controller - -usb:v059Bp0030* - ID_PRODUCT_FROM_DATABASE=Zip 250 (Ver 1) - -usb:v059Bp0031* - ID_PRODUCT_FROM_DATABASE=Zip 100 (Type 3) - -usb:v059Bp0032* - ID_PRODUCT_FROM_DATABASE=Zip 250 (Ver 2) - -usb:v059Bp0034* - ID_PRODUCT_FROM_DATABASE=Zip 100 Driver - -usb:v059Bp0037* - ID_PRODUCT_FROM_DATABASE=Zip 750 MB - -usb:v059Bp0040* - ID_PRODUCT_FROM_DATABASE=SCSI Bridge - -usb:v059Bp0042* - ID_PRODUCT_FROM_DATABASE=Rev 70 GB - -usb:v059Bp0050* - ID_PRODUCT_FROM_DATABASE=Zip CD 650 Writer - -usb:v059Bp0053* - ID_PRODUCT_FROM_DATABASE=CDRW55292EXT CD-RW External Drive - -usb:v059Bp0056* - ID_PRODUCT_FROM_DATABASE=External CD-RW Drive Enclosure - -usb:v059Bp0057* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v059Bp005D* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v059Bp005F* - ID_PRODUCT_FROM_DATABASE=CDRW64892EXT3-C CD-RW 52x24x52x External Drive - -usb:v059Bp0060* - ID_PRODUCT_FROM_DATABASE=PCMCIA PocketZip Dock - -usb:v059Bp0061* - ID_PRODUCT_FROM_DATABASE=Varo PocketZip 40 MP3 Player - -usb:v059Bp006D* - ID_PRODUCT_FROM_DATABASE=HipZip MP3 Player - -usb:v059Bp007C* - ID_PRODUCT_FROM_DATABASE=Ultra Max USB/1394 - -usb:v059Bp007D* - ID_PRODUCT_FROM_DATABASE=HTC42606 0G9AT00 [Iomega HDD] - -usb:v059Bp007E* - ID_PRODUCT_FROM_DATABASE=Mini 256MB/512MB Flash Drive [IOM2D5] - -usb:v059Bp00DB* - ID_PRODUCT_FROM_DATABASE=FotoShow Zip 250 Driver - -usb:v059Bp0150* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v059Bp015D* - ID_PRODUCT_FROM_DATABASE=Super DVD Writer - -usb:v059Bp0173* - ID_PRODUCT_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller - -usb:v059Bp0174* - ID_PRODUCT_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller - -usb:v059Bp0176* - ID_PRODUCT_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller - -usb:v059Bp0177* - ID_PRODUCT_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller - -usb:v059Bp0178* - ID_PRODUCT_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller - -usb:v059Bp0179* - ID_PRODUCT_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller - -usb:v059Bp017A* - ID_PRODUCT_FROM_DATABASE=HDD - -usb:v059Bp017B* - ID_PRODUCT_FROM_DATABASE=HDD/1394A - -usb:v059Bp017C* - ID_PRODUCT_FROM_DATABASE=HDD/1394B - -usb:v059Bp0251* - ID_PRODUCT_FROM_DATABASE=Optical - -usb:v059Bp0252* - ID_PRODUCT_FROM_DATABASE=Optical - -usb:v059Bp0278* - ID_PRODUCT_FROM_DATABASE=LDHD-UPS [Professional Desktop Hard Drive eSATA / USB2.0] - -usb:v059Bp027A* - ID_PRODUCT_FROM_DATABASE=LPHD250-U [Portable Hard Drive Silver Series 250 Go] - -usb:v059Bp0470* - ID_PRODUCT_FROM_DATABASE=Prestige Portable Hard Drive - -usb:v059Bp047A* - ID_PRODUCT_FROM_DATABASE=Select Portable Hard Drive - -usb:v059Bp0571* - ID_PRODUCT_FROM_DATABASE=Prestige Portable Hard Drive - -usb:v059Bp0579* - ID_PRODUCT_FROM_DATABASE=eGo Portable Hard Drive - -usb:v059Bp1052* - ID_PRODUCT_FROM_DATABASE=DVD+RW External Drive - -usb:v059C* - ID_VENDOR_FROM_DATABASE=A-Trend Technology Co., Ltd - -usb:v059D* - ID_VENDOR_FROM_DATABASE=Advanced Input Devices - -usb:v059E* - ID_VENDOR_FROM_DATABASE=Intelligent Instrumentation - -usb:v059F* - ID_VENDOR_FROM_DATABASE=LaCie, Ltd - -usb:v059Fp0201* - ID_PRODUCT_FROM_DATABASE=StudioDrive USB2 - -usb:v059Fp0202* - ID_PRODUCT_FROM_DATABASE=StudioDrive USB2 - -usb:v059Fp0203* - ID_PRODUCT_FROM_DATABASE=StudioDrive USB2 - -usb:v059Fp0211* - ID_PRODUCT_FROM_DATABASE=PocketDrive - -usb:v059Fp0212* - ID_PRODUCT_FROM_DATABASE=PocketDrive - -usb:v059Fp0213* - ID_PRODUCT_FROM_DATABASE=PocketDrive USB2 - -usb:v059Fp0323* - ID_PRODUCT_FROM_DATABASE=LaCie d2 Drive USB2 - -usb:v059Fp0421* - ID_PRODUCT_FROM_DATABASE=Big Disk G465 - -usb:v059Fp0641* - ID_PRODUCT_FROM_DATABASE=Mobile Hard Drive - -usb:v059Fp1010* - ID_PRODUCT_FROM_DATABASE=Desktop Hard Drive - -usb:v059Fp1019* - ID_PRODUCT_FROM_DATABASE=Desktop Hard Drive - -usb:v059Fp1021* - ID_PRODUCT_FROM_DATABASE=Little Disk - -usb:v059Fp1027* - ID_PRODUCT_FROM_DATABASE=iamaKey V2 - -usb:v059Fp102A* - ID_PRODUCT_FROM_DATABASE=Rikiki Hard Drive - -usb:v059Fp1049* - ID_PRODUCT_FROM_DATABASE=rikiki Harddrive - -usb:v059Fp1052* - ID_PRODUCT_FROM_DATABASE=P'9220 Mobile Drive - -usb:v059FpA601* - ID_PRODUCT_FROM_DATABASE=HardDrive - -usb:v059FpA602* - ID_PRODUCT_FROM_DATABASE=CD R/W - -usb:v05A0* - ID_VENDOR_FROM_DATABASE=Vetronix Corp. - -usb:v05A1* - ID_VENDOR_FROM_DATABASE=USC Corp. - -usb:v05A2* - ID_VENDOR_FROM_DATABASE=Fuji Film Microdevices Co., Ltd - -usb:v05A3* - ID_VENDOR_FROM_DATABASE=ARC International - -usb:v05A3p8388* - ID_PRODUCT_FROM_DATABASE=Marvell 88W8388 802.11a/b/g WLAN - -usb:v05A4* - ID_VENDOR_FROM_DATABASE=Ortek Technology, Inc. - -usb:v05A4p1000* - ID_PRODUCT_FROM_DATABASE=WKB-1000S Wireless Ergo Keyboard with Touchpad - -usb:v05A4p2000* - ID_PRODUCT_FROM_DATABASE=WKB-2000 Wireless Keyboard with Touchpad - -usb:v05A4p9720* - ID_PRODUCT_FROM_DATABASE=Keyboard Mouse - -usb:v05A4p9722* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v05A4p9731* - ID_PRODUCT_FROM_DATABASE=MCK-600W/MCK-800USB Keyboard - -usb:v05A4p9783* - ID_PRODUCT_FROM_DATABASE=Wireless Keypad - -usb:v05A4p9881* - ID_PRODUCT_FROM_DATABASE=IR receiver [VRC-1100 Vista MCE Remote Control] - -usb:v05A5* - ID_VENDOR_FROM_DATABASE=Sampo Technology Corp. - -usb:v05A6* - ID_VENDOR_FROM_DATABASE=Cisco Systems, Inc. - -usb:v05A6p0001* - ID_PRODUCT_FROM_DATABASE=CVA124 Cable Voice Adapter (WDM) - -usb:v05A6p0002* - ID_PRODUCT_FROM_DATABASE=CVA122 Cable Voice Adapter (WDM) - -usb:v05A6p0003* - ID_PRODUCT_FROM_DATABASE=CVA124E Cable Voice Adapter (WDM) - -usb:v05A6p0004* - ID_PRODUCT_FROM_DATABASE=CVA122E Cable Voice Adapter (WDM) - -usb:v05A7* - ID_VENDOR_FROM_DATABASE=Bose Corp. - -usb:v05A8* - ID_VENDOR_FROM_DATABASE=Spacetec IMC Corp. - -usb:v05A9* - ID_VENDOR_FROM_DATABASE=OmniVision Technologies, Inc. - -usb:v05A9p0511* - ID_PRODUCT_FROM_DATABASE=OV511 Webcam - -usb:v05A9p0518* - ID_PRODUCT_FROM_DATABASE=OV518 Webcam - -usb:v05A9p0519* - ID_PRODUCT_FROM_DATABASE=OV519 Microphone - -usb:v05A9p1550* - ID_PRODUCT_FROM_DATABASE=VEHO Filmscanner - -usb:v05A9p2640* - ID_PRODUCT_FROM_DATABASE=OV2640 Webcam - -usb:v05A9p2643* - ID_PRODUCT_FROM_DATABASE=Monitor Webcam - -usb:v05A9p264B* - ID_PRODUCT_FROM_DATABASE=Monitor Webcam - -usb:v05A9p2800* - ID_PRODUCT_FROM_DATABASE=SuperCAM - -usb:v05A9p4519* - ID_PRODUCT_FROM_DATABASE=Webcam Classic - -usb:v05A9p7670* - ID_PRODUCT_FROM_DATABASE=OV7670 Webcam - -usb:v05A9p8519* - ID_PRODUCT_FROM_DATABASE=OV519 Webcam - -usb:v05A9pA511* - ID_PRODUCT_FROM_DATABASE=OV511+ Webcam - -usb:v05A9pA518* - ID_PRODUCT_FROM_DATABASE=D-Link DSB-C310 Webcam - -usb:v05AA* - ID_VENDOR_FROM_DATABASE=Utilux South China, Ltd - -usb:v05AB* - ID_VENDOR_FROM_DATABASE=In-System Design - -usb:v05ABp0002* - ID_PRODUCT_FROM_DATABASE=Parallel Port - -usb:v05ABp0030* - ID_PRODUCT_FROM_DATABASE=Storage Adapter V2 (TPP) - -usb:v05ABp0031* - ID_PRODUCT_FROM_DATABASE=ATA Bridge - -usb:v05ABp0060* - ID_PRODUCT_FROM_DATABASE=USB 2.0 ATA Bridge - -usb:v05ABp0061* - ID_PRODUCT_FROM_DATABASE=Storage Adapter V3 (TPP-I) - -usb:v05ABp0101* - ID_PRODUCT_FROM_DATABASE=Storage Adapter (TPP) - -usb:v05ABp0130* - ID_PRODUCT_FROM_DATABASE=Compact Flash and Microdrive Reader (TPP) - -usb:v05ABp0200* - ID_PRODUCT_FROM_DATABASE=USS725 ATA Bridge - -usb:v05ABp0201* - ID_PRODUCT_FROM_DATABASE=Storage Adapter (TPP) - -usb:v05ABp0202* - ID_PRODUCT_FROM_DATABASE=ATA Bridge - -usb:v05ABp0300* - ID_PRODUCT_FROM_DATABASE=Portable Hard Drive (TPP) - -usb:v05ABp0301* - ID_PRODUCT_FROM_DATABASE=Portable Hard Drive V2 - -usb:v05ABp0350* - ID_PRODUCT_FROM_DATABASE=Portable Hard Drive (TPP) - -usb:v05ABp0351* - ID_PRODUCT_FROM_DATABASE=Portable Hard Drive V2 - -usb:v05ABp081A* - ID_PRODUCT_FROM_DATABASE=ATA Bridge - -usb:v05ABp0CDA* - ID_PRODUCT_FROM_DATABASE=ATA Bridge for CD-R/RW - -usb:v05ABp1001* - ID_PRODUCT_FROM_DATABASE=BAYI Printer Class Support - -usb:v05ABp5700* - ID_PRODUCT_FROM_DATABASE=Storage Adapter V2 (TPP) - -usb:v05ABp5701* - ID_PRODUCT_FROM_DATABASE=USB Storage Adapter V2 - -usb:v05ABp5901* - ID_PRODUCT_FROM_DATABASE=Smart Board (TPP) - -usb:v05ABp5A01* - ID_PRODUCT_FROM_DATABASE=ATI Storage Adapter (TPP) - -usb:v05ABp5D01* - ID_PRODUCT_FROM_DATABASE=DataBook Adapter (TPP) - -usb:v05AC* - ID_VENDOR_FROM_DATABASE=Apple, Inc. - -usb:v05ACp0201* - ID_PRODUCT_FROM_DATABASE=USB Keyboard [Alps or Logitech, M2452] - -usb:v05ACp0202* - ID_PRODUCT_FROM_DATABASE=Keyboard [ALPS] - -usb:v05ACp0205* - ID_PRODUCT_FROM_DATABASE=Extended Keyboard [Mitsumi] - -usb:v05ACp0206* - ID_PRODUCT_FROM_DATABASE=Extended Keyboard [Mitsumi] - -usb:v05ACp020B* - ID_PRODUCT_FROM_DATABASE=Pro Keyboard [Mitsumi, A1048/US layout] - -usb:v05ACp020C* - ID_PRODUCT_FROM_DATABASE=Extended Keyboard [Mitsumi] - -usb:v05ACp020D* - ID_PRODUCT_FROM_DATABASE=Pro Keyboard [Mitsumi, A1048/JIS layout] - -usb:v05ACp020E* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) - -usb:v05ACp020F* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) - -usb:v05ACp0214* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) - -usb:v05ACp0215* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) - -usb:v05ACp0216* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) - -usb:v05ACp0217* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) - -usb:v05ACp0218* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) - -usb:v05ACp0219* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) - -usb:v05ACp021A* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) - -usb:v05ACp021B* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) - -usb:v05ACp021C* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) - -usb:v05ACp021D* - ID_PRODUCT_FROM_DATABASE=Aluminum Mini Keyboard (ANSI) - -usb:v05ACp021E* - ID_PRODUCT_FROM_DATABASE=Aluminum Mini Keyboard (ISO) - -usb:v05ACp021F* - ID_PRODUCT_FROM_DATABASE=Aluminum Mini Keyboard (JIS) - -usb:v05ACp0220* - ID_PRODUCT_FROM_DATABASE=Aluminum Keyboard (ANSI) - -usb:v05ACp0221* - ID_PRODUCT_FROM_DATABASE=Aluminum Keyboard (ISO) - -usb:v05ACp0222* - ID_PRODUCT_FROM_DATABASE=Aluminum Keyboard (JIS) - -usb:v05ACp0223* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) - -usb:v05ACp0224* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) - -usb:v05ACp0225* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) - -usb:v05ACp0229* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Pro) (ANSI) - -usb:v05ACp022A* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Pro) (ISO) - -usb:v05ACp022B* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Pro) (JIS) - -usb:v05ACp0230* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Pro 4,1) (ANSI) - -usb:v05ACp0231* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Pro 4,1) (ISO) - -usb:v05ACp0232* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Pro 4,1) (JIS) - -usb:v05ACp0236* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) - -usb:v05ACp0237* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) - -usb:v05ACp0238* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) - -usb:v05ACp023F* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) - -usb:v05ACp0240* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) - -usb:v05ACp0241* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) - -usb:v05ACp0242* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) - -usb:v05ACp0243* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) - -usb:v05ACp0244* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) - -usb:v05ACp0245* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) - -usb:v05ACp0246* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) - -usb:v05ACp0247* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) - -usb:v05ACp024A* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Air) (ISO) - -usb:v05ACp024D* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (MacBook Air) (ISO) - -usb:v05ACp0250* - ID_PRODUCT_FROM_DATABASE=Aluminium Keyboard (ISO) - -usb:v05ACp0252* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ANSI) - -usb:v05ACp0253* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (ISO) - -usb:v05ACp0254* - ID_PRODUCT_FROM_DATABASE=Internal Keyboard/Trackpad (JIS) - -usb:v05ACp0263* - ID_PRODUCT_FROM_DATABASE=Apple Internal Keyboard / Trackpad (MacBook Retina) - -usb:v05ACp0301* - ID_PRODUCT_FROM_DATABASE=USB Mouse [Mitsumi, M4848] - -usb:v05ACp0302* - ID_PRODUCT_FROM_DATABASE=Optical Mouse [Fujitsu] - -usb:v05ACp0304* - ID_PRODUCT_FROM_DATABASE=Optical USB Mouse [Mitsumi] - -usb:v05ACp0306* - ID_PRODUCT_FROM_DATABASE=Optical USB Mouse [Fujitsu] - -usb:v05ACp030A* - ID_PRODUCT_FROM_DATABASE=Internal Trackpad - -usb:v05ACp030B* - ID_PRODUCT_FROM_DATABASE=Internal Trackpad - -usb:v05ACp030D* - ID_PRODUCT_FROM_DATABASE=Magic Mouse - -usb:v05ACp030E* - ID_PRODUCT_FROM_DATABASE=MC380Z/A [Magic Trackpad] - -usb:v05ACp1000* - ID_PRODUCT_FROM_DATABASE=Bluetooth HCI MacBookPro (HID mode) - -usb:v05ACp1001* - ID_PRODUCT_FROM_DATABASE=Keyboard Hub [ALPS] - -usb:v05ACp1002* - ID_PRODUCT_FROM_DATABASE=Extended Keyboard Hub [Mitsumi] - -usb:v05ACp1003* - ID_PRODUCT_FROM_DATABASE=Hub in Pro Keyboard [Mitsumi, A1048] - -usb:v05ACp1006* - ID_PRODUCT_FROM_DATABASE=Hub in Aluminum Keyboard - -usb:v05ACp1101* - ID_PRODUCT_FROM_DATABASE=Speakers - -usb:v05ACp1105* - ID_PRODUCT_FROM_DATABASE=Audio in LED Cinema Display - -usb:v05ACp1107* - ID_PRODUCT_FROM_DATABASE=Thunderbolt Display Audio - -usb:v05ACp1201* - ID_PRODUCT_FROM_DATABASE=3G iPod - -usb:v05ACp1202* - ID_PRODUCT_FROM_DATABASE=iPod 2G - -usb:v05ACp1203* - ID_PRODUCT_FROM_DATABASE=iPod 4.Gen Grayscale 40G - -usb:v05ACp1204* - ID_PRODUCT_FROM_DATABASE=iPod [Photo] - -usb:v05ACp1205* - ID_PRODUCT_FROM_DATABASE=iPod Mini 1.Gen/2.Gen - -usb:v05ACp1206* - ID_PRODUCT_FROM_DATABASE=iPod '06' - -usb:v05ACp1207* - ID_PRODUCT_FROM_DATABASE=iPod '07' - -usb:v05ACp1208* - ID_PRODUCT_FROM_DATABASE=iPod '08' - -usb:v05ACp1209* - ID_PRODUCT_FROM_DATABASE=iPod Video - -usb:v05ACp120A* - ID_PRODUCT_FROM_DATABASE=iPod Nano - -usb:v05ACp1223* - ID_PRODUCT_FROM_DATABASE=iPod Classic/Nano 3.Gen (DFU mode) - -usb:v05ACp1224* - ID_PRODUCT_FROM_DATABASE=iPod Nano 3.Gen (DFU mode) - -usb:v05ACp1225* - ID_PRODUCT_FROM_DATABASE=iPod Nano 4.Gen (DFU mode) - -usb:v05ACp1227* - ID_PRODUCT_FROM_DATABASE=Mobile Device (DFU Mode) - -usb:v05ACp1231* - ID_PRODUCT_FROM_DATABASE=iPod Nano 5.Gen (DFU mode) - -usb:v05ACp1240* - ID_PRODUCT_FROM_DATABASE=iPod Nano 2.Gen (DFU mode) - -usb:v05ACp1242* - ID_PRODUCT_FROM_DATABASE=iPod Nano 3.Gen (WTF mode) - -usb:v05ACp1243* - ID_PRODUCT_FROM_DATABASE=iPod Nano 4.Gen (WTF mode) - -usb:v05ACp1245* - ID_PRODUCT_FROM_DATABASE=iPod Classic 3.Gen (WTF mode) - -usb:v05ACp1246* - ID_PRODUCT_FROM_DATABASE=iPod Nano 5.Gen (WTF mode) - -usb:v05ACp1255* - ID_PRODUCT_FROM_DATABASE=iPod Nano 4.Gen (DFU mode) - -usb:v05ACp1260* - ID_PRODUCT_FROM_DATABASE=iPod Nano 2.Gen - -usb:v05ACp1261* - ID_PRODUCT_FROM_DATABASE=iPod Classic - -usb:v05ACp1262* - ID_PRODUCT_FROM_DATABASE=iPod Nano 3.Gen - -usb:v05ACp1263* - ID_PRODUCT_FROM_DATABASE=iPod Nano 4.Gen - -usb:v05ACp1265* - ID_PRODUCT_FROM_DATABASE=iPod Nano 5.Gen - -usb:v05ACp1266* - ID_PRODUCT_FROM_DATABASE=iPod Nano 6.Gen - -usb:v05ACp1281* - ID_PRODUCT_FROM_DATABASE=Apple Mobile Device [Recovery Mode] - -usb:v05ACp1290* - ID_PRODUCT_FROM_DATABASE=iPhone - -usb:v05ACp1291* - ID_PRODUCT_FROM_DATABASE=iPod Touch 1.Gen - -usb:v05ACp1292* - ID_PRODUCT_FROM_DATABASE=iPhone 3G - -usb:v05ACp1293* - ID_PRODUCT_FROM_DATABASE=iPod Touch 2.Gen - -usb:v05ACp1294* - ID_PRODUCT_FROM_DATABASE=iPhone 3GS - -usb:v05ACp1296* - ID_PRODUCT_FROM_DATABASE=iPod Touch 3.Gen (8GB) - -usb:v05ACp1297* - ID_PRODUCT_FROM_DATABASE=iPhone 4 - -usb:v05ACp1299* - ID_PRODUCT_FROM_DATABASE=iPod Touch 3.Gen - -usb:v05ACp129A* - ID_PRODUCT_FROM_DATABASE=iPad - -usb:v05ACp129E* - ID_PRODUCT_FROM_DATABASE=iPod Touch 4.Gen - -usb:v05ACp129F* - ID_PRODUCT_FROM_DATABASE=iPad 2 - -usb:v05ACp12A0* - ID_PRODUCT_FROM_DATABASE=iPhone 4S - -usb:v05ACp12A2* - ID_PRODUCT_FROM_DATABASE=iPad 2 (3G; 64GB) - -usb:v05ACp12A6* - ID_PRODUCT_FROM_DATABASE=iPad 3 (3G, 16 GB) - -usb:v05ACp12A9* - ID_PRODUCT_FROM_DATABASE=iPad 2 - -usb:v05ACp12AA* - ID_PRODUCT_FROM_DATABASE=iPod Touch 5.Gen [A1421] - -usb:v05ACp1300* - ID_PRODUCT_FROM_DATABASE=iPod Shuffle - -usb:v05ACp1301* - ID_PRODUCT_FROM_DATABASE=iPod Shuffle 2.Gen - -usb:v05ACp1302* - ID_PRODUCT_FROM_DATABASE=iPod Shuffle 3.Gen - -usb:v05ACp1303* - ID_PRODUCT_FROM_DATABASE=iPod Shuffle 4.Gen - -usb:v05ACp1401* - ID_PRODUCT_FROM_DATABASE=Modem - -usb:v05ACp1402* - ID_PRODUCT_FROM_DATABASE=Ethernet Adapter [A1277] - -usb:v05ACp1500* - ID_PRODUCT_FROM_DATABASE=SuperDrive [A1379] - -usb:v05ACp8202* - ID_PRODUCT_FROM_DATABASE=HCF V.90 Data/Fax Modem - -usb:v05ACp8203* - ID_PRODUCT_FROM_DATABASE=Bluetooth HCI - -usb:v05ACp8204* - ID_PRODUCT_FROM_DATABASE=Built-in Bluetooth 2.0+EDR HCI - -usb:v05ACp8205* - ID_PRODUCT_FROM_DATABASE=Bluetooth HCI - -usb:v05ACp8206* - ID_PRODUCT_FROM_DATABASE=Bluetooth HCI - -usb:v05ACp820A* - ID_PRODUCT_FROM_DATABASE=Bluetooth HID Keyboard - -usb:v05ACp820B* - ID_PRODUCT_FROM_DATABASE=Bluetooth HID Mouse - -usb:v05ACp820F* - ID_PRODUCT_FROM_DATABASE=Bluetooth HCI - -usb:v05ACp8213* - ID_PRODUCT_FROM_DATABASE=Bluetooth Host Controller - -usb:v05ACp8215* - ID_PRODUCT_FROM_DATABASE=Built-in Bluetooth 2.0+EDR HCI - -usb:v05ACp8216* - ID_PRODUCT_FROM_DATABASE=Bluetooth USB Host Controller - -usb:v05ACp8217* - ID_PRODUCT_FROM_DATABASE=Bluetooth USB Host Controller - -usb:v05ACp8218* - ID_PRODUCT_FROM_DATABASE=Bluetooth Host Controller - -usb:v05ACp821A* - ID_PRODUCT_FROM_DATABASE=Bluetooth Host Controller - -usb:v05ACp821F* - ID_PRODUCT_FROM_DATABASE=Built-in Bluetooth 2.0+EDR HCI - -usb:v05ACp8240* - ID_PRODUCT_FROM_DATABASE=Built-in IR Receiver - -usb:v05ACp8241* - ID_PRODUCT_FROM_DATABASE=Built-in IR Receiver - -usb:v05ACp8242* - ID_PRODUCT_FROM_DATABASE=Built-in IR Receiver - -usb:v05ACp8286* - ID_PRODUCT_FROM_DATABASE=Bluetooth Host Controller - -usb:v05ACp8300* - ID_PRODUCT_FROM_DATABASE=Built-in iSight (no firmware loaded) - -usb:v05ACp8403* - ID_PRODUCT_FROM_DATABASE=Internal Memory Card Reader - -usb:v05ACp8404* - ID_PRODUCT_FROM_DATABASE=Internal Memory Card Reader - -usb:v05ACp8501* - ID_PRODUCT_FROM_DATABASE=Built-in iSight [Micron] - -usb:v05ACp8502* - ID_PRODUCT_FROM_DATABASE=Built-in iSight - -usb:v05ACp8505* - ID_PRODUCT_FROM_DATABASE=Built-in iSight - -usb:v05ACp8507* - ID_PRODUCT_FROM_DATABASE=Built-in iSight - -usb:v05ACp8508* - ID_PRODUCT_FROM_DATABASE=iSight in LED Cinema Display - -usb:v05ACp8509* - ID_PRODUCT_FROM_DATABASE=FaceTime HD Camera - -usb:v05ACp850A* - ID_PRODUCT_FROM_DATABASE=FaceTime Camera - -usb:v05ACp8510* - ID_PRODUCT_FROM_DATABASE=FaceTime HD Camera (Built-in) - -usb:v05ACp911C* - ID_PRODUCT_FROM_DATABASE=Hub in A1082 [Cinema HD Display 23"] - -usb:v05ACp912F* - ID_PRODUCT_FROM_DATABASE=Hub in 30" Cinema Display - -usb:v05ACp9215* - ID_PRODUCT_FROM_DATABASE=Studio Display 15" - -usb:v05ACp9217* - ID_PRODUCT_FROM_DATABASE=Studio Display 17" - -usb:v05ACp9218* - ID_PRODUCT_FROM_DATABASE=Cinema Display 23" - -usb:v05ACp9219* - ID_PRODUCT_FROM_DATABASE=Cinema Display 20" - -usb:v05ACp921C* - ID_PRODUCT_FROM_DATABASE=A1082 [Cinema HD Display 23"] - -usb:v05ACp921E* - ID_PRODUCT_FROM_DATABASE=Cinema Display 24" - -usb:v05ACp9221* - ID_PRODUCT_FROM_DATABASE=30" Cinema Display - -usb:v05ACp9226* - ID_PRODUCT_FROM_DATABASE=LED Cinema Display - -usb:v05ACp9227* - ID_PRODUCT_FROM_DATABASE=Thunderbolt Display - -usb:v05ACp9232* - ID_PRODUCT_FROM_DATABASE=Cinema HD Display 30" - -usb:v05ACpFFFF* - ID_PRODUCT_FROM_DATABASE=Bluetooth in DFU mode - Driver - -usb:v05AD* - ID_VENDOR_FROM_DATABASE=Y.C. Cable U.S.A., Inc. - -usb:v05AE* - ID_VENDOR_FROM_DATABASE=Synopsys, Inc. - -usb:v05AF* - ID_VENDOR_FROM_DATABASE=Jing-Mold Enterprise Co., Ltd - -usb:v05AFp0806* - ID_PRODUCT_FROM_DATABASE=HP SK806A Keyboard - -usb:v05AFp0809* - ID_PRODUCT_FROM_DATABASE=Wireless Keyboard and Mouse - -usb:v05AFp0821* - ID_PRODUCT_FROM_DATABASE=IDE to - -usb:v05AFp3062* - ID_PRODUCT_FROM_DATABASE=Cordless Keyboard - -usb:v05AFp9167* - ID_PRODUCT_FROM_DATABASE=KB 9151B - 678 - -usb:v05AFp9267* - ID_PRODUCT_FROM_DATABASE=KB 9251B - 678 Mouse - -usb:v05B0* - ID_VENDOR_FROM_DATABASE=Fountain Technologies, Inc. - -usb:v05B1* - ID_VENDOR_FROM_DATABASE=First International Computer, Inc. - -usb:v05B1p1389* - ID_PRODUCT_FROM_DATABASE=Bluetooth Wireless Adapter - -usb:v05B4* - ID_VENDOR_FROM_DATABASE=LG Semicon Co., Ltd - -usb:v05B4p4857* - ID_PRODUCT_FROM_DATABASE=M-Any DAH-210 - -usb:v05B4p6001* - ID_PRODUCT_FROM_DATABASE=Digisette DUO-MP3 AR-100 - -usb:v05B5* - ID_VENDOR_FROM_DATABASE=Dialogic Corp. - -usb:v05B6* - ID_VENDOR_FROM_DATABASE=Proxima Corp. - -usb:v05B7* - ID_VENDOR_FROM_DATABASE=Medianix Semiconductor, Inc. - -usb:v05B8* - ID_VENDOR_FROM_DATABASE=Agiler, Inc. - -usb:v05B8p3002* - ID_PRODUCT_FROM_DATABASE=Scroll Mouse - -usb:v05B9* - ID_VENDOR_FROM_DATABASE=Philips Research Laboratories - -usb:v05BA* - ID_VENDOR_FROM_DATABASE=DigitalPersona, Inc. - -usb:v05BAp0007* - ID_PRODUCT_FROM_DATABASE=Fingerprint Reader - -usb:v05BAp0008* - ID_PRODUCT_FROM_DATABASE=Fingerprint Reader - -usb:v05BAp000A* - ID_PRODUCT_FROM_DATABASE=Fingerprint Reader - -usb:v05BB* - ID_VENDOR_FROM_DATABASE=Grey Cell Systems - -usb:v05BC* - ID_VENDOR_FROM_DATABASE=3G Green Green Globe Co., Ltd - -usb:v05BCp0004* - ID_PRODUCT_FROM_DATABASE=Trackball - -usb:v05BD* - ID_VENDOR_FROM_DATABASE=RAFI GmbH & Co. KG - -usb:v05BE* - ID_VENDOR_FROM_DATABASE=Tyco Electronics (Raychem) - -usb:v05BF* - ID_VENDOR_FROM_DATABASE=S & S Research - -usb:v05C0* - ID_VENDOR_FROM_DATABASE=Keil Software - -usb:v05C1* - ID_VENDOR_FROM_DATABASE=Kawasaki Microelectronics, Inc. - -usb:v05C2* - ID_VENDOR_FROM_DATABASE=Media Phonics (Suisse) S.A. - -usb:v05C5* - ID_VENDOR_FROM_DATABASE=Digi International, Inc. - -usb:v05C5p0002* - ID_PRODUCT_FROM_DATABASE=AccelePort USB 2 - -usb:v05C5p0004* - ID_PRODUCT_FROM_DATABASE=AccelePort USB 4 - -usb:v05C5p0008* - ID_PRODUCT_FROM_DATABASE=AccelePort USB 8 - -usb:v05C6* - ID_VENDOR_FROM_DATABASE=Qualcomm, Inc. - -usb:v05C6p0114* - ID_PRODUCT_FROM_DATABASE=Select RW-200 CDMA Wireless Modem - -usb:v05C6p1000* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v05C6p3100* - ID_PRODUCT_FROM_DATABASE=CDMA Wireless Modem/Phone - -usb:v05C6p3196* - ID_PRODUCT_FROM_DATABASE=CDMA Wireless Modem - -usb:v05C6p3197* - ID_PRODUCT_FROM_DATABASE=CDMA Wireless Modem/Phone - -usb:v05C6p6000* - ID_PRODUCT_FROM_DATABASE=Siemens SG75 - -usb:v05C6p6503* - ID_PRODUCT_FROM_DATABASE=AnyData APE-540H - -usb:v05C6p6613* - ID_PRODUCT_FROM_DATABASE=Onda H600/N501HS ZTE MF330 - -usb:v05C6p9000* - ID_PRODUCT_FROM_DATABASE=SIMCom SIM5218 modem - -usb:v05C6p9001* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem - -usb:v05C6p9002* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem - -usb:v05C6p9008* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem (QDL mode) - -usb:v05C6p9018* - ID_PRODUCT_FROM_DATABASE=Qualcomm HSUSB Device - -usb:v05C6p9025* - ID_PRODUCT_FROM_DATABASE=Qualcomm HSUSB Device - -usb:v05C6p9201* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem (QDL mode) - -usb:v05C6p9202* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem - -usb:v05C6p9203* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem - -usb:v05C6p9211* - ID_PRODUCT_FROM_DATABASE=Acer Gobi Wireless Modem (QDL mode) - -usb:v05C6p9212* - ID_PRODUCT_FROM_DATABASE=Acer Gobi Wireless Modem - -usb:v05C6p9214* - ID_PRODUCT_FROM_DATABASE=Acer Gobi 2000 Wireless Modem (QDL mode) - -usb:v05C6p9215* - ID_PRODUCT_FROM_DATABASE=Acer Gobi 2000 Wireless Modem - -usb:v05C6p9221* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem (QDL mode) - -usb:v05C6p9222* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem - -usb:v05C6p9224* - ID_PRODUCT_FROM_DATABASE=Sony Gobi 2000 Wireless Modem (QDL mode) - -usb:v05C6p9225* - ID_PRODUCT_FROM_DATABASE=Sony Gobi 2000 Wireless Modem - -usb:v05C6p9231* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem (QDL mode) - -usb:v05C6p9234* - ID_PRODUCT_FROM_DATABASE=Top Global Gobi 2000 Wireless Modem (QDL mode) - -usb:v05C6p9235* - ID_PRODUCT_FROM_DATABASE=Top Global Gobi 2000 Wireless Modem - -usb:v05C6p9244* - ID_PRODUCT_FROM_DATABASE=Samsung Gobi 2000 Wireless Modem (QDL mode) - -usb:v05C6p9245* - ID_PRODUCT_FROM_DATABASE=Samsung Gobi 2000 Wireless Modem - -usb:v05C6p9264* - ID_PRODUCT_FROM_DATABASE=Asus Gobi 2000 Wireless Modem (QDL mode) - -usb:v05C6p9265* - ID_PRODUCT_FROM_DATABASE=Asus Gobi 2000 Wireless Modem - -usb:v05C6p9274* - ID_PRODUCT_FROM_DATABASE=iRex Technologies Gobi 2000 Wireless Modem (QDL mode) - -usb:v05C6p9275* - ID_PRODUCT_FROM_DATABASE=iRex Technologies Gobi 2000 Wireless Modem - -usb:v05C7* - ID_VENDOR_FROM_DATABASE=Qtronix Corp. - -usb:v05C7p0113* - ID_PRODUCT_FROM_DATABASE=PC Line Mouse - -usb:v05C7p1001* - ID_PRODUCT_FROM_DATABASE=Lynx Mouse - -usb:v05C7p2001* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v05C7p2011* - ID_PRODUCT_FROM_DATABASE=SCorpius Keyboard - -usb:v05C7p6001* - ID_PRODUCT_FROM_DATABASE=Ten-Keypad - -usb:v05C8* - ID_VENDOR_FROM_DATABASE=Cheng Uei Precision Industry Co., Ltd (Foxlink) - -usb:v05C8p0103* - ID_PRODUCT_FROM_DATABASE=FO13FF-65 PC-CAM - -usb:v05C8p021A* - ID_PRODUCT_FROM_DATABASE=HP Webcam - -usb:v05C8p0318* - ID_PRODUCT_FROM_DATABASE=Webcam - -usb:v05C8p0403* - ID_PRODUCT_FROM_DATABASE=Webcam - -usb:v05C9* - ID_VENDOR_FROM_DATABASE=Semtech Corp. - -usb:v05CA* - ID_VENDOR_FROM_DATABASE=Ricoh Co., Ltd - -usb:v05CAp0101* - ID_PRODUCT_FROM_DATABASE=RDC-5300 Camera - -usb:v05CAp0325* - ID_PRODUCT_FROM_DATABASE=Caplio GX (ptp) - -usb:v05CAp032D* - ID_PRODUCT_FROM_DATABASE=Caplio GX 8 (ptp) - -usb:v05CAp032F* - ID_PRODUCT_FROM_DATABASE=Caplio R3 (ptp) - -usb:v05CAp03A1* - ID_PRODUCT_FROM_DATABASE=IS200e - -usb:v05CAp0403* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v05CAp0405* - ID_PRODUCT_FROM_DATABASE=Type 101 - -usb:v05CAp0406* - ID_PRODUCT_FROM_DATABASE=Type 102 - -usb:v05CAp1803* - ID_PRODUCT_FROM_DATABASE=V5 camera [R5U870] - -usb:v05CAp1810* - ID_PRODUCT_FROM_DATABASE=Pavilion Webcam [R5U870] - -usb:v05CAp1812* - ID_PRODUCT_FROM_DATABASE=Pavilion Webcam - -usb:v05CAp1814* - ID_PRODUCT_FROM_DATABASE=HD Webcam - -usb:v05CAp1820* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam - -usb:v05CAp1830* - ID_PRODUCT_FROM_DATABASE=Visual Communication Camera VGP-VCC2 [R5U870] - -usb:v05CAp1832* - ID_PRODUCT_FROM_DATABASE=Visual Communication Camera VGP-VCC3 [R5U870] - -usb:v05CAp1833* - ID_PRODUCT_FROM_DATABASE=Visual Communication Camera VGP-VCC2 [R5U870] - -usb:v05CAp1834* - ID_PRODUCT_FROM_DATABASE=Visual Communication Camera VGP-VCC2 [R5U870] - -usb:v05CAp1835* - ID_PRODUCT_FROM_DATABASE=Visual Communication Camera VGP-VCC5 [R5U870] - -usb:v05CAp1836* - ID_PRODUCT_FROM_DATABASE=Visual Communication Camera VGP-VCC4 [R5U870] - -usb:v05CAp1837* - ID_PRODUCT_FROM_DATABASE=Visual Communication Camera VGP-VCC4 [R5U870] - -usb:v05CAp1839* - ID_PRODUCT_FROM_DATABASE=Visual Communication Camera VGP-VCC6 [R5U870] - -usb:v05CAp183A* - ID_PRODUCT_FROM_DATABASE=Visual Communication Camera VGP-VCC7 [R5U870] - -usb:v05CAp183B* - ID_PRODUCT_FROM_DATABASE=Visual Communication Camera VGP-VCC8 [R5U870] - -usb:v05CAp183D* - ID_PRODUCT_FROM_DATABASE=Sony Vaio Integrated Webcam - -usb:v05CAp183E* - ID_PRODUCT_FROM_DATABASE=Visual Communication Camera VGP-VCC9 [R5U870] - -usb:v05CAp1841* - ID_PRODUCT_FROM_DATABASE=Fujitsu F01/ Lifebook U810 [R5U870] - -usb:v05CAp1870* - ID_PRODUCT_FROM_DATABASE=Webcam 1000 - -usb:v05CAp18B0* - ID_PRODUCT_FROM_DATABASE=Sony Vaio Integrated Webcam - -usb:v05CAp18B1* - ID_PRODUCT_FROM_DATABASE=Sony Vaio Integrated Webcam - -usb:v05CAp18B3* - ID_PRODUCT_FROM_DATABASE=Sony Vaio Integrated Webcam - -usb:v05CAp18B5* - ID_PRODUCT_FROM_DATABASE=Sony Vaio Integrated Webcam - -usb:v05CAp2201* - ID_PRODUCT_FROM_DATABASE=RDC-7 Camera - -usb:v05CAp2202* - ID_PRODUCT_FROM_DATABASE=Caplio RR30 - -usb:v05CAp2203* - ID_PRODUCT_FROM_DATABASE=Caplio 300G - -usb:v05CAp2204* - ID_PRODUCT_FROM_DATABASE=Caplio G3 - -usb:v05CAp2205* - ID_PRODUCT_FROM_DATABASE=Caplio RR30 / Medion MD 6126 Camera - -usb:v05CAp2206* - ID_PRODUCT_FROM_DATABASE=Konica DG-3Z - -usb:v05CAp2207* - ID_PRODUCT_FROM_DATABASE=Caplio Pro G3 - -usb:v05CAp2208* - ID_PRODUCT_FROM_DATABASE=Caplio G4 - -usb:v05CAp2209* - ID_PRODUCT_FROM_DATABASE=Caplio 400G wide - -usb:v05CAp220A* - ID_PRODUCT_FROM_DATABASE=KONICA MINOLTA DG-4Wide - -usb:v05CAp220B* - ID_PRODUCT_FROM_DATABASE=Caplio RX - -usb:v05CAp220C* - ID_PRODUCT_FROM_DATABASE=Caplio GX - -usb:v05CAp220D* - ID_PRODUCT_FROM_DATABASE=Caplio R1/RZ1 - -usb:v05CAp220E* - ID_PRODUCT_FROM_DATABASE=Sea & Sea 5000G - -usb:v05CAp220F* - ID_PRODUCT_FROM_DATABASE=Rollei dr5 / Rollei dr5 (PTP mode) - -usb:v05CAp2211* - ID_PRODUCT_FROM_DATABASE=Caplio R1S - -usb:v05CAp2212* - ID_PRODUCT_FROM_DATABASE=Caplio R1v Camera - -usb:v05CAp2213* - ID_PRODUCT_FROM_DATABASE=Caplio R2 - -usb:v05CAp2214* - ID_PRODUCT_FROM_DATABASE=Caplio GX 8 - -usb:v05CAp2215* - ID_PRODUCT_FROM_DATABASE=DSC 725 - -usb:v05CAp2216* - ID_PRODUCT_FROM_DATABASE=Caplio R3 - -usb:v05CAp2222* - ID_PRODUCT_FROM_DATABASE=RDC-i500 - -usb:v05CB* - ID_VENDOR_FROM_DATABASE=PowerVision Technologies, Inc. - -usb:v05CBp1483* - ID_PRODUCT_FROM_DATABASE=PV8630 interface (scanners, webcams) - -usb:v05CC* - ID_VENDOR_FROM_DATABASE=ELSA AG - -usb:v05CCp2100* - ID_PRODUCT_FROM_DATABASE=MicroLink ISDN Office - -usb:v05CCp2219* - ID_PRODUCT_FROM_DATABASE=MicroLink ISDN - -usb:v05CCp2265* - ID_PRODUCT_FROM_DATABASE=MicroLink 56k - -usb:v05CCp2267* - ID_PRODUCT_FROM_DATABASE=MicroLink 56k (V.250) - -usb:v05CCp2280* - ID_PRODUCT_FROM_DATABASE=MicroLink 56k Fun - -usb:v05CCp3000* - ID_PRODUCT_FROM_DATABASE=Micolink USB2Ethernet [pegasus] - -usb:v05CCp3100* - ID_PRODUCT_FROM_DATABASE=AirLancer USB-11 - -usb:v05CCp3363* - ID_PRODUCT_FROM_DATABASE=MicroLink ADSL Fun - -usb:v05CD* - ID_VENDOR_FROM_DATABASE=Silicom, Ltd - -usb:v05CE* - ID_VENDOR_FROM_DATABASE=sci-worx GmbH - -usb:v05CF* - ID_VENDOR_FROM_DATABASE=Sung Forn Co., Ltd - -usb:v05D0* - ID_VENDOR_FROM_DATABASE=GE Medical Systems Lunar - -usb:v05D1* - ID_VENDOR_FROM_DATABASE=Brainboxes, Ltd - -usb:v05D1p0003* - ID_PRODUCT_FROM_DATABASE=Bluetooth Adapter BL-554 - -usb:v05D2* - ID_VENDOR_FROM_DATABASE=Wave Systems Corp. - -usb:v05D3* - ID_VENDOR_FROM_DATABASE=Tohoku Ricoh Co., Ltd - -usb:v05D5* - ID_VENDOR_FROM_DATABASE=Super Gate Technology Co., Ltd - -usb:v05D6* - ID_VENDOR_FROM_DATABASE=Philips Semiconductors, CICT - -usb:v05D7* - ID_VENDOR_FROM_DATABASE=Thomas & Betts Corp. - -usb:v05D7p0099* - ID_PRODUCT_FROM_DATABASE=10Mbps Ethernet [klsi] - -usb:v05D8* - ID_VENDOR_FROM_DATABASE=Ultima Electronics Corp. - -usb:v05D8p4001* - ID_PRODUCT_FROM_DATABASE=Artec Ultima 2000 - -usb:v05D8p4002* - ID_PRODUCT_FROM_DATABASE=Artec Ultima 2000 (GT6801 based)/Lifetec LT9385/ScanMagic 1200 UB Plus Scanner - -usb:v05D8p4003* - ID_PRODUCT_FROM_DATABASE=Artec E+ 48U - -usb:v05D8p4004* - ID_PRODUCT_FROM_DATABASE=Artec E+ Pro - -usb:v05D8p4005* - ID_PRODUCT_FROM_DATABASE=MEM48U - -usb:v05D8p4006* - ID_PRODUCT_FROM_DATABASE=TRUST EASY WEBSCAN 19200 - -usb:v05D8p4007* - ID_PRODUCT_FROM_DATABASE=TRUST 240H EASY WEBSCAN GOLD - -usb:v05D8p4008* - ID_PRODUCT_FROM_DATABASE=Trust Easy Webscan 19200 - -usb:v05D8p4009* - ID_PRODUCT_FROM_DATABASE=Umax Astraslim - -usb:v05D8p4013* - ID_PRODUCT_FROM_DATABASE=IT Scan 1200 - -usb:v05D8p8105* - ID_PRODUCT_FROM_DATABASE=Artec T1 USB TVBOX (cold) - -usb:v05D8p8106* - ID_PRODUCT_FROM_DATABASE=Artec T1 USB TVBOX (warm) - -usb:v05D8p8107* - ID_PRODUCT_FROM_DATABASE=Artec T1 USB TVBOX with AN2235 (cold) - -usb:v05D8p8108* - ID_PRODUCT_FROM_DATABASE=Artec T1 USB TVBOX with AN2235 (warm) - -usb:v05D8p8109* - ID_PRODUCT_FROM_DATABASE=Artec T1 USB2.0 TVBOX (cold - -usb:v05D9* - ID_VENDOR_FROM_DATABASE=Axiohm Transaction Solutions - -usb:v05D9pA225* - ID_PRODUCT_FROM_DATABASE=A225 Printer - -usb:v05D9pA758* - ID_PRODUCT_FROM_DATABASE=A758 Printer - -usb:v05D9pA794* - ID_PRODUCT_FROM_DATABASE=A794 Printer - -usb:v05DA* - ID_VENDOR_FROM_DATABASE=Microtek International, Inc. - -usb:v05DAp0091* - ID_PRODUCT_FROM_DATABASE=ScanMaker X6u - -usb:v05DAp0093* - ID_PRODUCT_FROM_DATABASE=ScanMaker V6USL - -usb:v05DAp0094* - ID_PRODUCT_FROM_DATABASE=Phantom 336CX/C3 - -usb:v05DAp0099* - ID_PRODUCT_FROM_DATABASE=ScanMaker X6/X6U - -usb:v05DAp009A* - ID_PRODUCT_FROM_DATABASE=Phantom C6 - -usb:v05DAp00A0* - ID_PRODUCT_FROM_DATABASE=Phantom 336CX/C3 (#2) - -usb:v05DAp00A3* - ID_PRODUCT_FROM_DATABASE=ScanMaker V6USL - -usb:v05DAp00AC* - ID_PRODUCT_FROM_DATABASE=ScanMaker V6UL - -usb:v05DAp00B6* - ID_PRODUCT_FROM_DATABASE=ScanMaker V6UPL - -usb:v05DAp00EF* - ID_PRODUCT_FROM_DATABASE=ScanMaker V6UPL - -usb:v05DAp1006* - ID_PRODUCT_FROM_DATABASE=Jenoptik JD350 entrance - -usb:v05DAp1011* - ID_PRODUCT_FROM_DATABASE=NHJ Che-ez! Kiss Digital Camera - -usb:v05DAp1018* - ID_PRODUCT_FROM_DATABASE=Digital Dream Enigma 1.3 - -usb:v05DAp1020* - ID_PRODUCT_FROM_DATABASE=Digital Dream l'espion xtra - -usb:v05DAp1025* - ID_PRODUCT_FROM_DATABASE=Take-it Still Camera Device - -usb:v05DAp1026* - ID_PRODUCT_FROM_DATABASE=Take-it - -usb:v05DAp1043* - ID_PRODUCT_FROM_DATABASE=Take-It 1300 DSC Bulk Driver - -usb:v05DAp1045* - ID_PRODUCT_FROM_DATABASE=Take-it D1 - -usb:v05DAp1047* - ID_PRODUCT_FROM_DATABASE=Take-it Camera Composite Device - -usb:v05DAp1048* - ID_PRODUCT_FROM_DATABASE=Take-it Q3 - -usb:v05DAp1049* - ID_PRODUCT_FROM_DATABASE=3M Still Camera Device - -usb:v05DAp1051* - ID_PRODUCT_FROM_DATABASE=Camcorder Series - -usb:v05DAp1052* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v05DAp1053* - ID_PRODUCT_FROM_DATABASE=Take-it DV Composite Device - -usb:v05DAp1054* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v05DAp1055* - ID_PRODUCT_FROM_DATABASE=Digital Camera Series(536) - -usb:v05DAp1056* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v05DAp1057* - ID_PRODUCT_FROM_DATABASE=Take-it DSC Camera Device(536) - -usb:v05DAp1058* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v05DAp1059* - ID_PRODUCT_FROM_DATABASE=Camcorder DSC Series - -usb:v05DAp1060* - ID_PRODUCT_FROM_DATABASE=Microtek Take-it MV500 - -usb:v05DAp2007* - ID_PRODUCT_FROM_DATABASE=ArtixScan DI 1210 - -usb:v05DAp200C* - ID_PRODUCT_FROM_DATABASE=1394_USB2 Scanner - -usb:v05DAp200E* - ID_PRODUCT_FROM_DATABASE=ArtixScan DI 810 - -usb:v05DAp2017* - ID_PRODUCT_FROM_DATABASE=UF ICE Scanner - -usb:v05DAp201C* - ID_PRODUCT_FROM_DATABASE=4800 Scanner - -usb:v05DAp201D* - ID_PRODUCT_FROM_DATABASE=ArtixScan DI 1610 - -usb:v05DAp201F* - ID_PRODUCT_FROM_DATABASE=4800 Scanner-ICE - -usb:v05DAp202E* - ID_PRODUCT_FROM_DATABASE=ArtixScan DI 2020 - -usb:v05DAp208B* - ID_PRODUCT_FROM_DATABASE=ScanMaker 6800 - -usb:v05DAp208F* - ID_PRODUCT_FROM_DATABASE=ArtixScan DI 2010 - -usb:v05DAp209E* - ID_PRODUCT_FROM_DATABASE=ScanMaker 4700LP - -usb:v05DAp20A7* - ID_PRODUCT_FROM_DATABASE=ScanMaker 5600 - -usb:v05DAp20B0* - ID_PRODUCT_FROM_DATABASE=ScanMaker X12USL - -usb:v05DAp20B1* - ID_PRODUCT_FROM_DATABASE=ScanMaker 8700 - -usb:v05DAp20B4* - ID_PRODUCT_FROM_DATABASE=ScanMaker 4700 - -usb:v05DAp20BD* - ID_PRODUCT_FROM_DATABASE=ScanMaker 5700 - -usb:v05DAp20C9* - ID_PRODUCT_FROM_DATABASE=ScanMaker 6700 - -usb:v05DAp20D2* - ID_PRODUCT_FROM_DATABASE=Microtek ArtixScan 1800f - -usb:v05DAp20D6* - ID_PRODUCT_FROM_DATABASE=PS4000 - -usb:v05DAp20DE* - ID_PRODUCT_FROM_DATABASE=ScanMaker 9800XL - -usb:v05DAp20E0* - ID_PRODUCT_FROM_DATABASE=ScanMaker 9700XL - -usb:v05DAp20ED* - ID_PRODUCT_FROM_DATABASE=ScanMaker 4700 - -usb:v05DAp20EE* - ID_PRODUCT_FROM_DATABASE=Micortek ScanMaker X12USL - -usb:v05DAp3008* - ID_PRODUCT_FROM_DATABASE=Scanner - -usb:v05DAp300A* - ID_PRODUCT_FROM_DATABASE=4800 ICE Scanner - -usb:v05DAp300B* - ID_PRODUCT_FROM_DATABASE=4800 Scanner - -usb:v05DAp300F* - ID_PRODUCT_FROM_DATABASE=MiniScan C5 - -usb:v05DAp3020* - ID_PRODUCT_FROM_DATABASE=4800dpi Scanner - -usb:v05DAp3021* - ID_PRODUCT_FROM_DATABASE=1200dpi Scanner - -usb:v05DAp3022* - ID_PRODUCT_FROM_DATABASE=Scanner 4800dpi - -usb:v05DAp3023* - ID_PRODUCT_FROM_DATABASE=USB1200II Scanner - -usb:v05DAp30C1* - ID_PRODUCT_FROM_DATABASE=USB600 Scanner - -usb:v05DAp30CE* - ID_PRODUCT_FROM_DATABASE=ScanMaker 3800 - -usb:v05DAp30CF* - ID_PRODUCT_FROM_DATABASE=ScanMaker 4800 - -usb:v05DAp30D4* - ID_PRODUCT_FROM_DATABASE=USB1200 Scanner - -usb:v05DAp30D8* - ID_PRODUCT_FROM_DATABASE=Scanner - -usb:v05DAp30D9* - ID_PRODUCT_FROM_DATABASE=USB2400 Scanner - -usb:v05DAp30E4* - ID_PRODUCT_FROM_DATABASE=ScanMaker 4100 - -usb:v05DAp30E5* - ID_PRODUCT_FROM_DATABASE=USB3200 Scanner - -usb:v05DAp30E6* - ID_PRODUCT_FROM_DATABASE=ScanMaker i320 - -usb:v05DAp40B3* - ID_PRODUCT_FROM_DATABASE=ScanMaker 3600 - -usb:v05DAp40B8* - ID_PRODUCT_FROM_DATABASE=ScanMaker 3700 - -usb:v05DAp40C7* - ID_PRODUCT_FROM_DATABASE=ScanMaker 4600 - -usb:v05DAp40CA* - ID_PRODUCT_FROM_DATABASE=ScanMaker 3600 - -usb:v05DAp40CB* - ID_PRODUCT_FROM_DATABASE=ScanMaker 3700 - -usb:v05DAp40DD* - ID_PRODUCT_FROM_DATABASE=ScanMaker 3750i - -usb:v05DAp40FF* - ID_PRODUCT_FROM_DATABASE=ScanMaker 3600 - -usb:v05DAp5003* - ID_PRODUCT_FROM_DATABASE=Goya - -usb:v05DAp5013* - ID_PRODUCT_FROM_DATABASE=3200 Scanner - -usb:v05DAp80A3* - ID_PRODUCT_FROM_DATABASE=ScanMaker V6USL (#2) - -usb:v05DAp80AC* - ID_PRODUCT_FROM_DATABASE=ScanMaker V6UL/SpicyU - -usb:v05DB* - ID_VENDOR_FROM_DATABASE=Sun Corp. (Suntac?) - -usb:v05DBp0003* - ID_PRODUCT_FROM_DATABASE=SUNTAC U-Cable type D2 - -usb:v05DBp0005* - ID_PRODUCT_FROM_DATABASE=SUNTAC U-Cable type P1 - -usb:v05DBp0009* - ID_PRODUCT_FROM_DATABASE=SUNTAC Slipper U - -usb:v05DBp000A* - ID_PRODUCT_FROM_DATABASE=SUNTAC Ir-Trinity - -usb:v05DBp000B* - ID_PRODUCT_FROM_DATABASE=SUNTAC U-Cable type A3 - -usb:v05DBp0011* - ID_PRODUCT_FROM_DATABASE=SUNTAC U-Cable type A4 - -usb:v05DC* - ID_VENDOR_FROM_DATABASE=Lexar Media, Inc. - -usb:v05DCp0001* - ID_PRODUCT_FROM_DATABASE=jumpSHOT CompactFlash Reader - -usb:v05DCp0002* - ID_PRODUCT_FROM_DATABASE=JumpShot - -usb:v05DCp0003* - ID_PRODUCT_FROM_DATABASE=JumpShot - -usb:v05DCp0080* - ID_PRODUCT_FROM_DATABASE=Jumpdrive Secure 64MB - -usb:v05DCp0081* - ID_PRODUCT_FROM_DATABASE=RBC Compact Flash Drive - -usb:v05DCp00A7* - ID_PRODUCT_FROM_DATABASE=JumpDrive Impact - -usb:v05DCp0100* - ID_PRODUCT_FROM_DATABASE=JumpDrive PRO - -usb:v05DCp0200* - ID_PRODUCT_FROM_DATABASE=JumpDrive 2.0 Pro - -usb:v05DCp0300* - ID_PRODUCT_FROM_DATABASE=Jumpdrive Geysr - -usb:v05DCp0301* - ID_PRODUCT_FROM_DATABASE=JumpDrive Classic - -usb:v05DCp0302* - ID_PRODUCT_FROM_DATABASE=JD Micro - -usb:v05DCp0303* - ID_PRODUCT_FROM_DATABASE=JD Micro Pro - -usb:v05DCp0304* - ID_PRODUCT_FROM_DATABASE=JD Secure II - -usb:v05DCp0310* - ID_PRODUCT_FROM_DATABASE=JumpDrive - -usb:v05DCp0311* - ID_PRODUCT_FROM_DATABASE=JumpDrive Classic - -usb:v05DCp0312* - ID_PRODUCT_FROM_DATABASE=JD Micro - -usb:v05DCp0313* - ID_PRODUCT_FROM_DATABASE=JD Micro Pro - -usb:v05DCp0320* - ID_PRODUCT_FROM_DATABASE=JumpDrive - -usb:v05DCp0321* - ID_PRODUCT_FROM_DATABASE=JD Micro - -usb:v05DCp0322* - ID_PRODUCT_FROM_DATABASE=JD Micro Pro - -usb:v05DCp0323* - ID_PRODUCT_FROM_DATABASE=UFC - -usb:v05DCp0330* - ID_PRODUCT_FROM_DATABASE=JumpDrive Expression - -usb:v05DCp0340* - ID_PRODUCT_FROM_DATABASE=JumpDrive TAD - -usb:v05DCp0350* - ID_PRODUCT_FROM_DATABASE=Express Card - -usb:v05DCp0400* - ID_PRODUCT_FROM_DATABASE=UFDC - -usb:v05DCp0401* - ID_PRODUCT_FROM_DATABASE=UFDC - -usb:v05DCp0403* - ID_PRODUCT_FROM_DATABASE=Locked B Device - -usb:v05DCp0405* - ID_PRODUCT_FROM_DATABASE=Locked C Device - -usb:v05DCp0407* - ID_PRODUCT_FROM_DATABASE=Locked D Device - -usb:v05DCp0409* - ID_PRODUCT_FROM_DATABASE=Locked E Device - -usb:v05DCp040B* - ID_PRODUCT_FROM_DATABASE=Locked F Device - -usb:v05DCp040D* - ID_PRODUCT_FROM_DATABASE=Locked G Device - -usb:v05DCp040F* - ID_PRODUCT_FROM_DATABASE=Locked H Device - -usb:v05DCp0410* - ID_PRODUCT_FROM_DATABASE=JumpDrive - -usb:v05DCp0411* - ID_PRODUCT_FROM_DATABASE=JumpDrive - -usb:v05DCp0413* - ID_PRODUCT_FROM_DATABASE=Locked J Device - -usb:v05DCp0415* - ID_PRODUCT_FROM_DATABASE=Locked K Device - -usb:v05DCp0417* - ID_PRODUCT_FROM_DATABASE=Locked L Device - -usb:v05DCp0419* - ID_PRODUCT_FROM_DATABASE=Locked M Device - -usb:v05DCp041B* - ID_PRODUCT_FROM_DATABASE=Locked N Device - -usb:v05DCp041D* - ID_PRODUCT_FROM_DATABASE=Locked O Device - -usb:v05DCp041F* - ID_PRODUCT_FROM_DATABASE=Locked P Device - -usb:v05DCp0420* - ID_PRODUCT_FROM_DATABASE=JumpDrive - -usb:v05DCp0421* - ID_PRODUCT_FROM_DATABASE=JumpDrive - -usb:v05DCp0423* - ID_PRODUCT_FROM_DATABASE=Locked R Device - -usb:v05DCp0425* - ID_PRODUCT_FROM_DATABASE=Locked S Device - -usb:v05DCp0427* - ID_PRODUCT_FROM_DATABASE=Locked T Device - -usb:v05DCp0429* - ID_PRODUCT_FROM_DATABASE=Locked U Device - -usb:v05DCp042B* - ID_PRODUCT_FROM_DATABASE=Locked V Device - -usb:v05DCp042D* - ID_PRODUCT_FROM_DATABASE=Locked W Device - -usb:v05DCp042F* - ID_PRODUCT_FROM_DATABASE=Locked X Device - -usb:v05DCp0431* - ID_PRODUCT_FROM_DATABASE=Locked Y Device - -usb:v05DCp0433* - ID_PRODUCT_FROM_DATABASE=Locked Z Device - -usb:v05DCp4D02* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v05DCp4D12* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v05DCp4D30* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v05DCpA300* - ID_PRODUCT_FROM_DATABASE=JumpDrive2 - -usb:v05DCpA400* - ID_PRODUCT_FROM_DATABASE=JumpDrive trade; Pro 40-501 - -usb:v05DCpA410* - ID_PRODUCT_FROM_DATABASE=JumpDrive 128MB/256MB - -usb:v05DCpA411* - ID_PRODUCT_FROM_DATABASE=JumpDrive Traveler - -usb:v05DCpA420* - ID_PRODUCT_FROM_DATABASE=JumpDrive Pro - -usb:v05DCpA421* - ID_PRODUCT_FROM_DATABASE=JumpDrive Pro II - -usb:v05DCpA422* - ID_PRODUCT_FROM_DATABASE=JumpDrive Micro Pro - -usb:v05DCpA430* - ID_PRODUCT_FROM_DATABASE=JumpDrive Secure - -usb:v05DCpA431* - ID_PRODUCT_FROM_DATABASE=JumpDrive Secure II - -usb:v05DCpA432* - ID_PRODUCT_FROM_DATABASE=JumpDrive Classic - -usb:v05DCpA440* - ID_PRODUCT_FROM_DATABASE=JumpDrive Lightning - -usb:v05DCpA450* - ID_PRODUCT_FROM_DATABASE=JumpDrive TouchGuard - -usb:v05DCpA460* - ID_PRODUCT_FROM_DATABASE=JD Mercury - -usb:v05DCpA501* - ID_PRODUCT_FROM_DATABASE=JumpDrive Classic - -usb:v05DCpA510* - ID_PRODUCT_FROM_DATABASE=JumpDrive Sport - -usb:v05DCpA530* - ID_PRODUCT_FROM_DATABASE=JumpDrive Expression - -usb:v05DCpA531* - ID_PRODUCT_FROM_DATABASE=JumpDrive Secure II - -usb:v05DCpA560* - ID_PRODUCT_FROM_DATABASE=JumpDrive FireFly - -usb:v05DCpA701* - ID_PRODUCT_FROM_DATABASE=JumpDrive FireFly - -usb:v05DCpA731* - ID_PRODUCT_FROM_DATABASE=JumpDrive FireFly - -usb:v05DCpA790* - ID_PRODUCT_FROM_DATABASE=JumpDrive 2GB - -usb:v05DCpA811* - ID_PRODUCT_FROM_DATABASE=16GB Gizmo! - -usb:v05DCpA813* - ID_PRODUCT_FROM_DATABASE=16gB flash thumb drive - -usb:v05DCpB002* - ID_PRODUCT_FROM_DATABASE=USB CF Reader - -usb:v05DCpB018* - ID_PRODUCT_FROM_DATABASE=Multi-Card Reader - -usb:v05DCpB047* - ID_PRODUCT_FROM_DATABASE=SDHC Reader [RW047-7000] - -usb:v05DCpC753* - ID_PRODUCT_FROM_DATABASE=JumpDrive TwistTurn - -usb:v05DD* - ID_VENDOR_FROM_DATABASE=Delta Electronics, Inc. - -usb:v05DDpFF31* - ID_PRODUCT_FROM_DATABASE=AWU-120 - -usb:v05DDpFF32* - ID_PRODUCT_FROM_DATABASE=FriendlyNET AeroLAN AL2011 - -usb:v05DDpFF35* - ID_PRODUCT_FROM_DATABASE=PCW 100 - Wireless 802.11b Adapter - -usb:v05DDpFF91* - ID_PRODUCT_FROM_DATABASE=2Wire PC Port Phoneline 10Mbps Adapter - -usb:v05DF* - ID_VENDOR_FROM_DATABASE=Silicon Vision, Inc. - -usb:v05E0* - ID_VENDOR_FROM_DATABASE=Symbol Technologies - -usb:v05E0p0700* - ID_PRODUCT_FROM_DATABASE=Bar Code Scanner (CS1504) - -usb:v05E0p0800* - ID_PRODUCT_FROM_DATABASE=Spectrum24 Wireless LAN Adapter - -usb:v05E0p1200* - ID_PRODUCT_FROM_DATABASE=Bar Code Scanner - -usb:v05E0p1900* - ID_PRODUCT_FROM_DATABASE=SNAPI Imaging Device - -usb:v05E0p2000* - ID_PRODUCT_FROM_DATABASE=MC3090 Rugged Mobile Computer - -usb:v05E0p200D* - ID_PRODUCT_FROM_DATABASE=MC70 Rugged Mobile Computer - -usb:v05E1* - ID_VENDOR_FROM_DATABASE=Syntek Semiconductor Co., Ltd - -usb:v05E1p0100* - ID_PRODUCT_FROM_DATABASE=802.11g + Bluetooth Wireless Adapter - -usb:v05E1p0408* - ID_PRODUCT_FROM_DATABASE=STK1160 Video Capture Device - -usb:v05E1p0500* - ID_PRODUCT_FROM_DATABASE=DC-112X Webcam - -usb:v05E1p0501* - ID_PRODUCT_FROM_DATABASE=DC-1125 Webcam - -usb:v05E1p0890* - ID_PRODUCT_FROM_DATABASE=STK011 Camera - -usb:v05E1p0892* - ID_PRODUCT_FROM_DATABASE=STK013 Camera - -usb:v05E1p0895* - ID_PRODUCT_FROM_DATABASE=STK016 Camera - -usb:v05E1p0896* - ID_PRODUCT_FROM_DATABASE=STK017 Camera - -usb:v05E1p2010* - ID_PRODUCT_FROM_DATABASE=ARCTIC Sound P261 Headphones - -usb:v05E2* - ID_VENDOR_FROM_DATABASE=ElecVision, Inc. - -usb:v05E3* - ID_VENDOR_FROM_DATABASE=Genesys Logic, Inc. - -usb:v05E3p000A* - ID_PRODUCT_FROM_DATABASE=Keyboard with PS/2 Port - -usb:v05E3p000B* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v05E3p0100* - ID_PRODUCT_FROM_DATABASE=Nintendo Game Boy Advance SP - -usb:v05E3p0120* - ID_PRODUCT_FROM_DATABASE=Pacific Image Electronics PrimeFilm 1800u slide/negative scanner - -usb:v05E3p0131* - ID_PRODUCT_FROM_DATABASE=CF/SM Reader/Writer - -usb:v05E3p0142* - ID_PRODUCT_FROM_DATABASE=Multiple Slides Scanner-3600 - -usb:v05E3p0143* - ID_PRODUCT_FROM_DATABASE=Multiple Frames Film Scanner-36series - -usb:v05E3p0180* - ID_PRODUCT_FROM_DATABASE=Plustek Scanner - -usb:v05E3p0182* - ID_PRODUCT_FROM_DATABASE=Wize Media 1000 - -usb:v05E3p0189* - ID_PRODUCT_FROM_DATABASE=ScanJet 4600 series - -usb:v05E3p018A* - ID_PRODUCT_FROM_DATABASE=Xerox 6400 - -usb:v05E3p0300* - ID_PRODUCT_FROM_DATABASE=GLUSB98PT Parallel Port - -usb:v05E3p0301* - ID_PRODUCT_FROM_DATABASE=USB2LPT Cable Release2 - -usb:v05E3p0406* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v05E3p0501* - ID_PRODUCT_FROM_DATABASE=GL620USB Host-Host interface - -usb:v05E3p0502* - ID_PRODUCT_FROM_DATABASE=GL620USB-A GeneLink USB-USB Bridge - -usb:v05E3p0503* - ID_PRODUCT_FROM_DATABASE=Webcam - -usb:v05E3p0504* - ID_PRODUCT_FROM_DATABASE=HID Keyboard Filter - -usb:v05E3p0604* - ID_PRODUCT_FROM_DATABASE=USB 1.1 Hub - -usb:v05E3p0605* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Hub - -usb:v05E3p0606* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Hub / D-Link DUB-H4 USB 2.0 Hub - -usb:v05E3p0607* - ID_PRODUCT_FROM_DATABASE=Logitech G110 Hub - -usb:v05E3p0608* - ID_PRODUCT_FROM_DATABASE=USB-2.0 4-Port HUB - -usb:v05E3p0610* - ID_PRODUCT_FROM_DATABASE=4-port hub - -usb:v05E3p0660* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Hub - -usb:v05E3p0700* - ID_PRODUCT_FROM_DATABASE=SIIG US2256 CompactFlash Card Reader - -usb:v05E3p0701* - ID_PRODUCT_FROM_DATABASE=USB 2.0 IDE Adapter - -usb:v05E3p0702* - ID_PRODUCT_FROM_DATABASE=USB 2.0 IDE Adapter [GL811E] - -usb:v05E3p0703* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v05E3p0704* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v05E3p0705* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v05E3p0706* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v05E3p0707* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v05E3p0708* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v05E3p0709* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v05E3p070A* - ID_PRODUCT_FROM_DATABASE=Pen Flash - -usb:v05E3p070B* - ID_PRODUCT_FROM_DATABASE=DMHS1B Rev 3 DFU Adapter - -usb:v05E3p070E* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Card Reader - -usb:v05E3p070F* - ID_PRODUCT_FROM_DATABASE=Pen Flash - -usb:v05E3p0710* - ID_PRODUCT_FROM_DATABASE=USB 2.0 33-in-1 Card Reader - -usb:v05E3p0711* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v05E3p0712* - ID_PRODUCT_FROM_DATABASE=Delkin Mass Storage Device - -usb:v05E3p0715* - ID_PRODUCT_FROM_DATABASE=USB 2.0 microSD Reader - -usb:v05E3p0716* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Multislot Card Reader/Writer - -usb:v05E3p0717* - ID_PRODUCT_FROM_DATABASE=All-in-1 Card Reader - -usb:v05E3p0718* - ID_PRODUCT_FROM_DATABASE=IDE/SATA Adapter - -usb:v05E3p0719* - ID_PRODUCT_FROM_DATABASE=SATA adapter - -usb:v05E3p0723* - ID_PRODUCT_FROM_DATABASE=GL827L SD/MMC/MS Flash Card Reader - -usb:v05E3p0726* - ID_PRODUCT_FROM_DATABASE=SD Card Reader - -usb:v05E3p0727* - ID_PRODUCT_FROM_DATABASE=microSD Reader/Writer - -usb:v05E3p0736* - ID_PRODUCT_FROM_DATABASE=microSD Reader/Writer - -usb:v05E3p0760* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Card Reader/Writer - -usb:v05E3p0761* - ID_PRODUCT_FROM_DATABASE=Genesys Mass Storage Device - -usb:v05E3p0780* - ID_PRODUCT_FROM_DATABASE=USBFS DFU Adapter - -usb:v05E3p07A0* - ID_PRODUCT_FROM_DATABASE=Pen Flash - -usb:v05E3p0880* - ID_PRODUCT_FROM_DATABASE=Wasp (SL-6612) - -usb:v05E3p0927* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v05E3p1205* - ID_PRODUCT_FROM_DATABASE=Afilias Optical Mouse H3003 / Trust Optical USB MultiColour Mouse MI-2330 - -usb:v05E3pA700* - ID_PRODUCT_FROM_DATABASE=Pen Flash - -usb:v05E3pF102* - ID_PRODUCT_FROM_DATABASE=VX7012 TV Box - -usb:v05E3pF103* - ID_PRODUCT_FROM_DATABASE=VX7012 TV Box - -usb:v05E3pF104* - ID_PRODUCT_FROM_DATABASE=VX7012 TV Box - -usb:v05E3pFD21* - ID_PRODUCT_FROM_DATABASE=3M TL20 Temperature Logger - -usb:v05E3pFE00* - ID_PRODUCT_FROM_DATABASE=Razer Mouse - -usb:v05E4* - ID_VENDOR_FROM_DATABASE=Red Wing Corp. - -usb:v05E5* - ID_VENDOR_FROM_DATABASE=Fuji Electric Co., Ltd - -usb:v05E6* - ID_VENDOR_FROM_DATABASE=Keithley Instruments - -usb:v05E8* - ID_VENDOR_FROM_DATABASE=ICC, Inc. - -usb:v05E9* - ID_VENDOR_FROM_DATABASE=Kawasaki LSI - -usb:v05E9p0008* - ID_PRODUCT_FROM_DATABASE=KL5KUSB101B Ethernet [klsi] - -usb:v05E9p0009* - ID_PRODUCT_FROM_DATABASE=Sony 10Mbps Ethernet [pegasus] - -usb:v05E9p000C* - ID_PRODUCT_FROM_DATABASE=USB-to-RS-232 - -usb:v05E9p000D* - ID_PRODUCT_FROM_DATABASE=USB-to-RS-232 - -usb:v05E9p0014* - ID_PRODUCT_FROM_DATABASE=RS-232 J104 - -usb:v05E9p0040* - ID_PRODUCT_FROM_DATABASE=Ethernet Adapter - -usb:v05E9p2008* - ID_PRODUCT_FROM_DATABASE=Ethernet Adapter - -usb:v05EB* - ID_VENDOR_FROM_DATABASE=FFC, Ltd - -usb:v05EC* - ID_VENDOR_FROM_DATABASE=COM21, Inc. - -usb:v05EE* - ID_VENDOR_FROM_DATABASE=Cytechinfo Inc. - -usb:v05EF* - ID_VENDOR_FROM_DATABASE=AVB, Inc. [anko?] - -usb:v05EFp020A* - ID_PRODUCT_FROM_DATABASE=Top Shot Pegasus Joystick - -usb:v05EFp8884* - ID_PRODUCT_FROM_DATABASE=Mag Turbo Force Wheel - -usb:v05EFp8888* - ID_PRODUCT_FROM_DATABASE=Top Shot Force Feedback Racing Wheel - -usb:v05F0* - ID_VENDOR_FROM_DATABASE=Canopus Co., Ltd - -usb:v05F0p0101* - ID_PRODUCT_FROM_DATABASE=DA-Port DAC - -usb:v05F1* - ID_VENDOR_FROM_DATABASE=Compass Communications - -usb:v05F2* - ID_VENDOR_FROM_DATABASE=Dexin Corp., Ltd - -usb:v05F2p0010* - ID_PRODUCT_FROM_DATABASE=AQ Mouse - -usb:v05F3* - ID_VENDOR_FROM_DATABASE=PI Engineering, Inc. - -usb:v05F3p0007* - ID_PRODUCT_FROM_DATABASE=Kinesis Advantage PRO MPC/USB Keyboard - -usb:v05F3p0081* - ID_PRODUCT_FROM_DATABASE=Kinesis Integrated Hub - -usb:v05F3p00FF* - ID_PRODUCT_FROM_DATABASE=VEC Footpedal - -usb:v05F3p020B* - ID_PRODUCT_FROM_DATABASE=PS2 Adapter - -usb:v05F3p0232* - ID_PRODUCT_FROM_DATABASE=X-Keys Switch Interface, Programming Mode - -usb:v05F3p0261* - ID_PRODUCT_FROM_DATABASE=X-Keys Switch Interface, SPLAT Mode - -usb:v05F3p0264* - ID_PRODUCT_FROM_DATABASE=X-Keys Switch Interface, Composite Mode - -usb:v05F5* - ID_VENDOR_FROM_DATABASE=Unixtar Technology, Inc. - -usb:v05F6* - ID_VENDOR_FROM_DATABASE=AOC International - -usb:v05F7* - ID_VENDOR_FROM_DATABASE=RFC Distribution(s) PTE, Ltd - -usb:v05F9* - ID_VENDOR_FROM_DATABASE=PSC Scanning, Inc. - -usb:v05F9p1104* - ID_PRODUCT_FROM_DATABASE=Magellan 2200VS - -usb:v05F9p2206* - ID_PRODUCT_FROM_DATABASE=Datalogic Gryphon GFS4170 - -usb:v05F9p2602* - ID_PRODUCT_FROM_DATABASE=Datalogic Magellan 1100i Barcode Scanner - -usb:v05F9p5204* - ID_PRODUCT_FROM_DATABASE=Datalogic Gryphon GFS4170 (config mode) - -usb:v05FA* - ID_VENDOR_FROM_DATABASE=Siemens Telecommunications Systems, Ltd - -usb:v05FAp3301* - ID_PRODUCT_FROM_DATABASE=Keyboard with PS/2 Mouse Port - -usb:v05FAp3302* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v05FAp3303* - ID_PRODUCT_FROM_DATABASE=Keyboard with PS/2 Mouse Port - -usb:v05FC* - ID_VENDOR_FROM_DATABASE=Harman Multimedia - -usb:v05FCp7849* - ID_PRODUCT_FROM_DATABASE=Harman/Kardon SoundSticks - -usb:v05FD* - ID_VENDOR_FROM_DATABASE=InterAct, Inc. - -usb:v05FDp0239* - ID_PRODUCT_FROM_DATABASE=SV-239 HammerHead Digital - -usb:v05FDp0251* - ID_PRODUCT_FROM_DATABASE=Raider Pro - -usb:v05FDp0253* - ID_PRODUCT_FROM_DATABASE=ProPad 8 Digital - -usb:v05FDp0286* - ID_PRODUCT_FROM_DATABASE=SV-286 Cyclone Digital - -usb:v05FDp107A* - ID_PRODUCT_FROM_DATABASE=PowerPad Pro X-Box pad - -usb:v05FDp262A* - ID_PRODUCT_FROM_DATABASE=3dfx HammerHead FX - -usb:v05FDp262F* - ID_PRODUCT_FROM_DATABASE=HammerHead Fx - -usb:v05FDpDAAE* - ID_PRODUCT_FROM_DATABASE=Game Shark - -usb:v05FE* - ID_VENDOR_FROM_DATABASE=Chic Technology Corp. - -usb:v05FEp0001* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v05FEp0003* - ID_PRODUCT_FROM_DATABASE=Cypress USB Mouse - -usb:v05FEp0005* - ID_PRODUCT_FROM_DATABASE=Viewmaster 4D Browser Mouse - -usb:v05FEp0007* - ID_PRODUCT_FROM_DATABASE=Twinhead Mouse - -usb:v05FEp0009* - ID_PRODUCT_FROM_DATABASE=Inland Pro 4500/5000 Mouse - -usb:v05FEp0011* - ID_PRODUCT_FROM_DATABASE=Browser Mouse - -usb:v05FEp0014* - ID_PRODUCT_FROM_DATABASE=Gamepad - -usb:v05FEp1010* - ID_PRODUCT_FROM_DATABASE=Optical Wireless - -usb:v05FF* - ID_VENDOR_FROM_DATABASE=LeCroy Corp. - -usb:v0600* - ID_VENDOR_FROM_DATABASE=Barco Display Systems - -usb:v0601* - ID_VENDOR_FROM_DATABASE=Jazz Hipster Corp. - -usb:v0601p0003* - ID_PRODUCT_FROM_DATABASE=Internet Security Co., Ltd. SecureKey - -usb:v0602* - ID_VENDOR_FROM_DATABASE=Vista Imaging, Inc. - -usb:v0602p1001* - ID_PRODUCT_FROM_DATABASE=ViCam Webcam - -usb:v0603* - ID_VENDOR_FROM_DATABASE=Novatek Microelectronics Corp. - -usb:v0603p00F1* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v0603p6871* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v0604* - ID_VENDOR_FROM_DATABASE=Jean Co., Ltd - -usb:v0605* - ID_VENDOR_FROM_DATABASE=Anchor C&C Co., Ltd - -usb:v0606* - ID_VENDOR_FROM_DATABASE=Royal Information Electronics Co., Ltd - -usb:v0607* - ID_VENDOR_FROM_DATABASE=Bridge Information Co., Ltd - -usb:v0608* - ID_VENDOR_FROM_DATABASE=Genrad Ads - -usb:v0609* - ID_VENDOR_FROM_DATABASE=SMK Manufacturing, Inc. - -usb:v0609p031D* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v0609p0322* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v0609p0334* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v0609pFF12* - ID_PRODUCT_FROM_DATABASE=SMK Bluetooth Device - -usb:v060A* - ID_VENDOR_FROM_DATABASE=Worthington Data Solutions, Inc. - -usb:v060B* - ID_VENDOR_FROM_DATABASE=Solid Year - -usb:v060Bp0001* - ID_PRODUCT_FROM_DATABASE=MacAlly Keyboard - -usb:v060Bp0230* - ID_PRODUCT_FROM_DATABASE=KSK-8003 UX Keyboard - -usb:v060Bp1006* - ID_PRODUCT_FROM_DATABASE=Japanese Keyboard - 260U - -usb:v060Bp2101* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v060Bp2231* - ID_PRODUCT_FROM_DATABASE=KSK-6001 UELX Keyboard - -usb:v060Bp2270* - ID_PRODUCT_FROM_DATABASE=Gigabyte K8100 Aivia Gaming Keyboard - -usb:v060Bp5811* - ID_PRODUCT_FROM_DATABASE=ACK-571U Wireless Keyboard - -usb:v060Bp5903* - ID_PRODUCT_FROM_DATABASE=Japanese Keyboard - 595U - -usb:v060Bp6001* - ID_PRODUCT_FROM_DATABASE=SolidTek USB 2p HUB - -usb:v060Bp6002* - ID_PRODUCT_FROM_DATABASE=SolidTek USB Keyboard - -usb:v060Bp6003* - ID_PRODUCT_FROM_DATABASE=Japanese Keyboard - 600HM - -usb:v060Bp6231* - ID_PRODUCT_FROM_DATABASE=Thermaltake eSPORTS Meka Keyboard - -usb:v060Bp8007* - ID_PRODUCT_FROM_DATABASE=P-W1G1F12 VER:1 [Macally MegaCam] - -usb:v060BpA001* - ID_PRODUCT_FROM_DATABASE=Maxwell Compact Pc PM3 - -usb:v060C* - ID_VENDOR_FROM_DATABASE=EEH Datalink GmbH - -usb:v060D* - ID_VENDOR_FROM_DATABASE=Auctor Corp. - -usb:v060E* - ID_VENDOR_FROM_DATABASE=Transmonde Technologies, Inc. - -usb:v060F* - ID_VENDOR_FROM_DATABASE=Joinsoon Electronics Mfg. Co., Ltd - -usb:v0610* - ID_VENDOR_FROM_DATABASE=Costar Electronics, Inc. - -usb:v0611* - ID_VENDOR_FROM_DATABASE=Totoku Electric Co., Ltd - -usb:v0613* - ID_VENDOR_FROM_DATABASE=TransAct Technologies, Inc. - -usb:v0614* - ID_VENDOR_FROM_DATABASE=Bio-Rad Laboratories - -usb:v0615* - ID_VENDOR_FROM_DATABASE=Quabbin Wire & Cable Co., Inc. - -usb:v0616* - ID_VENDOR_FROM_DATABASE=Future Techno Designs PVT, Ltd - -usb:v0617* - ID_VENDOR_FROM_DATABASE=Swiss Federal Insitute of Technology - -usb:v0618* - ID_VENDOR_FROM_DATABASE=MacAlly - -usb:v0618p0101* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v0619* - ID_VENDOR_FROM_DATABASE=Seiko Instruments, Inc. - -usb:v0619p0101* - ID_PRODUCT_FROM_DATABASE=SLP-100 Driver - -usb:v0619p0102* - ID_PRODUCT_FROM_DATABASE=SLP-200 Driver - -usb:v0619p0103* - ID_PRODUCT_FROM_DATABASE=SLP-100N Driver - -usb:v0619p0104* - ID_PRODUCT_FROM_DATABASE=SLP-200N Driver - -usb:v0619p0105* - ID_PRODUCT_FROM_DATABASE=SLP-240 Driver - -usb:v0619p0501* - ID_PRODUCT_FROM_DATABASE=SLP-440 Driver - -usb:v0619p0502* - ID_PRODUCT_FROM_DATABASE=SLP-450 Driver - -usb:v061A* - ID_VENDOR_FROM_DATABASE=Veridicom International, Inc. - -usb:v061Ap0110* - ID_PRODUCT_FROM_DATABASE=5thSense Fingerprint Sensor - -usb:v061Ap0200* - ID_PRODUCT_FROM_DATABASE=FPS200 Fingerprint Sensor - -usb:v061Ap8200* - ID_PRODUCT_FROM_DATABASE=VKI-A Fingerprint Sensor/Flash Storage (dumb) - -usb:v061Ap9200* - ID_PRODUCT_FROM_DATABASE=VKI-B Fingerprint Sensor/Flash Storage (smart) - -usb:v061B* - ID_VENDOR_FROM_DATABASE=Promptus Communications, Inc. - -usb:v061C* - ID_VENDOR_FROM_DATABASE=Act Labs, Ltd - -usb:v061D* - ID_VENDOR_FROM_DATABASE=Quatech, Inc. - -usb:v061DpC020* - ID_PRODUCT_FROM_DATABASE=SSU-100 - -usb:v061E* - ID_VENDOR_FROM_DATABASE=Nissei Electric Co. - -usb:v061Ep0001* - ID_PRODUCT_FROM_DATABASE=nissei 128DE-USB - - -usb:v061Ep0010* - ID_PRODUCT_FROM_DATABASE=nissei 128DE-PNA - - -usb:v0620* - ID_VENDOR_FROM_DATABASE=Alaris, Inc. - -usb:v0620p0004* - ID_PRODUCT_FROM_DATABASE=QuickVideo weeCam - -usb:v0620p0007* - ID_PRODUCT_FROM_DATABASE=QuickVideo weeCam - -usb:v0620p000A* - ID_PRODUCT_FROM_DATABASE=QuickVideo weeCam - -usb:v0620p000B* - ID_PRODUCT_FROM_DATABASE=QuickVideo weeCam - -usb:v0621* - ID_VENDOR_FROM_DATABASE=ODU-Steckverbindungssysteme GmbH & Co. KG - -usb:v0622* - ID_VENDOR_FROM_DATABASE=Iotech, Inc. - -usb:v0623* - ID_VENDOR_FROM_DATABASE=Littelfuse, Inc. - -usb:v0624* - ID_VENDOR_FROM_DATABASE=Avocent Corp. - -usb:v0624p0294* - ID_PRODUCT_FROM_DATABASE=Dell 03R874 KVM dongle - -usb:v0624p0402* - ID_PRODUCT_FROM_DATABASE=Cisco Virtual Keyboard and Mouse - -usb:v0624p0403* - ID_PRODUCT_FROM_DATABASE=Cisco Virtual Mass Storage - -usb:v0625* - ID_VENDOR_FROM_DATABASE=TiMedia Technology Co., Ltd - -usb:v0626* - ID_VENDOR_FROM_DATABASE=Nippon Systems Development Co., Ltd - -usb:v0627* - ID_VENDOR_FROM_DATABASE=Adomax Technology Co., Ltd - -usb:v0628* - ID_VENDOR_FROM_DATABASE=Tasking Software, Inc. - -usb:v0629* - ID_VENDOR_FROM_DATABASE=Zida Technologies, Ltd - -usb:v062A* - ID_VENDOR_FROM_DATABASE=Creative Labs - -usb:v062Ap0000* - ID_PRODUCT_FROM_DATABASE=Optical mouse - -usb:v062Ap0001* - ID_PRODUCT_FROM_DATABASE=Notebook Optical Mouse - -usb:v062Ap0102* - ID_PRODUCT_FROM_DATABASE=Wireless Keyboard/Mouse Combo [MK1152WC] - -usb:v062Ap0201* - ID_PRODUCT_FROM_DATABASE=Defender Office Keyboard (K7310) S Zodiak KM-9010 - -usb:v062Ap0252* - ID_PRODUCT_FROM_DATABASE=Emerge Uni-retractable Laser Mouse - -usb:v062Ap3286* - ID_PRODUCT_FROM_DATABASE=Nano Receiver [Sandstrom Laser Mouse SMWLL11] - -usb:v062Ap6301* - ID_PRODUCT_FROM_DATABASE=Trust Wireless Optical Mouse MI-4150K - -usb:v062Ap9003* - ID_PRODUCT_FROM_DATABASE=VoIP Conference Hub (A16GH) - -usb:v062Ap9004* - ID_PRODUCT_FROM_DATABASE=USR9602 USB Internet Mini Phone - -usb:v062B* - ID_VENDOR_FROM_DATABASE=Greatlink Electronics Taiwan, Ltd - -usb:v062C* - ID_VENDOR_FROM_DATABASE=Institute for Information Industry - -usb:v062D* - ID_VENDOR_FROM_DATABASE=Taiwan Tai-Hao Enterprises Co., Ltd - -usb:v062E* - ID_VENDOR_FROM_DATABASE=Mainsuper Enterprises Co., Ltd - -usb:v062F* - ID_VENDOR_FROM_DATABASE=Sin Sheng Terminal & Machine, Inc. - -usb:v0631* - ID_VENDOR_FROM_DATABASE=JUJO Electronics Corp. - -usb:v0633* - ID_VENDOR_FROM_DATABASE=Cyrix Corp. - -usb:v0634* - ID_VENDOR_FROM_DATABASE=Micron Technology, Inc. - -usb:v0634p0655* - ID_PRODUCT_FROM_DATABASE=Embedded Mass Storage Drive [RealSSD] - -usb:v0635* - ID_VENDOR_FROM_DATABASE=Methode Electronics, Inc. - -usb:v0636* - ID_VENDOR_FROM_DATABASE=Sierra Imaging, Inc. - -usb:v0636p0003* - ID_PRODUCT_FROM_DATABASE=Vivicam 35Xx - -usb:v0638* - ID_VENDOR_FROM_DATABASE=Avision, Inc. - -usb:v0638p0268* - ID_PRODUCT_FROM_DATABASE=iVina 1200U Scanner - -usb:v0638p026A* - ID_PRODUCT_FROM_DATABASE=Minolta Dimage Scan Dual II AF-2820U (2886) - -usb:v0638p0A10* - ID_PRODUCT_FROM_DATABASE=iVina FB1600/UMAX Astra 4500 - -usb:v0638p0A13* - ID_PRODUCT_FROM_DATABASE=AV600U - -usb:v0638p0A15* - ID_PRODUCT_FROM_DATABASE=Konica Minolta SC-110 - -usb:v0638p0A16* - ID_PRODUCT_FROM_DATABASE=Konica Minolta SC-215 - -usb:v0638p0A30* - ID_PRODUCT_FROM_DATABASE=UMAX Astra 6700 Scanner - -usb:v0638p0A41* - ID_PRODUCT_FROM_DATABASE=Avision AM3000/MF3000 Series - -usb:v0638p0F01* - ID_PRODUCT_FROM_DATABASE=fi-4010CU - -usb:v0638p4004* - ID_PRODUCT_FROM_DATABASE=Minolta Dimage Scan Elite II AF-2920 (2888) - -usb:v0639* - ID_VENDOR_FROM_DATABASE=Chrontel, Inc. - -usb:v063A* - ID_VENDOR_FROM_DATABASE=Techwin Corp. - -usb:v063B* - ID_VENDOR_FROM_DATABASE=Taugagreining HF - -usb:v063C* - ID_VENDOR_FROM_DATABASE=Yamaichi Electronics Co., Ltd (Sakura) - -usb:v063D* - ID_VENDOR_FROM_DATABASE=Fong Kai Industrial Co., Ltd - -usb:v063E* - ID_VENDOR_FROM_DATABASE=RealMedia Technology, Inc. - -usb:v063F* - ID_VENDOR_FROM_DATABASE=New Technology Cable, Ltd - -usb:v0640* - ID_VENDOR_FROM_DATABASE=Hitex Development Tools - -usb:v0640p0026* - ID_PRODUCT_FROM_DATABASE=LPC-Stick - -usb:v0641* - ID_VENDOR_FROM_DATABASE=Woods Industries, Inc. - -usb:v0642* - ID_VENDOR_FROM_DATABASE=VIA Medical Corp. - -usb:v0644* - ID_VENDOR_FROM_DATABASE=TEAC Corp. - -usb:v0644p0000* - ID_PRODUCT_FROM_DATABASE=Floppy - -usb:v0644p0200* - ID_PRODUCT_FROM_DATABASE=All-In-One Multi-Card Reader CA200/B/S - -usb:v0644p1000* - ID_PRODUCT_FROM_DATABASE=CD-ROM Drive - -usb:v0644p800D* - ID_PRODUCT_FROM_DATABASE=TASCAM Portastudio DP-01FX - -usb:v0644p800E* - ID_PRODUCT_FROM_DATABASE=TASCAM US-122L - -usb:v0644p8021* - ID_PRODUCT_FROM_DATABASE=TASCAM US-122mkII - -usb:v0644pD001* - ID_PRODUCT_FROM_DATABASE=CD-R/RW Unit - -usb:v0644pD002* - ID_PRODUCT_FROM_DATABASE=CD-R/RW Unit - -usb:v0644pD010* - ID_PRODUCT_FROM_DATABASE=CD-RW/DVD Unit - -usb:v0645* - ID_VENDOR_FROM_DATABASE=Who? Vision Systems, Inc. - -usb:v0646* - ID_VENDOR_FROM_DATABASE=UMAX - -usb:v0647* - ID_VENDOR_FROM_DATABASE=Acton Research Corp. - -usb:v0647p0100* - ID_PRODUCT_FROM_DATABASE=ARC SpectraPro UV/VIS/IR Monochromator/Spectrograph - -usb:v0647p0101* - ID_PRODUCT_FROM_DATABASE=ARC AM-VM Mono Airpath/Vacuum Monochromator/Spectrograph - -usb:v0647p0102* - ID_PRODUCT_FROM_DATABASE=ARC Inspectrum Mono - -usb:v0647p0103* - ID_PRODUCT_FROM_DATABASE=ARC Filterwheel - -usb:v0647p03E9* - ID_PRODUCT_FROM_DATABASE=Inspectrum 128x1024 F VIS Spectrograph - -usb:v0647p03EA* - ID_PRODUCT_FROM_DATABASE=Inspectrum 256x1024 F VIS Spectrograph - -usb:v0647p03EB* - ID_PRODUCT_FROM_DATABASE=Inspectrum 128x1024 B VIS Spectrograph - -usb:v0647p03EC* - ID_PRODUCT_FROM_DATABASE=Inspectrum 256x1024 B VIS Spectrograph - -usb:v0648* - ID_VENDOR_FROM_DATABASE=Inside Out Networks - -usb:v0649* - ID_VENDOR_FROM_DATABASE=Weli Science Co., Ltd - -usb:v064B* - ID_VENDOR_FROM_DATABASE=Analog Devices, Inc. (White Mountain DSP) - -usb:v064Bp0165* - ID_PRODUCT_FROM_DATABASE=Blackfin 535 [ADZS HPUSB ICE] - -usb:v064C* - ID_VENDOR_FROM_DATABASE=Ji-Haw Industrial Co., Ltd - -usb:v064D* - ID_VENDOR_FROM_DATABASE=TriTech Microelectronics, Ltd - -usb:v064E* - ID_VENDOR_FROM_DATABASE=Suyin Corp. - -usb:v064EpA100* - ID_PRODUCT_FROM_DATABASE=Acer OrbiCam - -usb:v064EpA101* - ID_PRODUCT_FROM_DATABASE=Acer CrystalEye Webcam - -usb:v064EpA102* - ID_PRODUCT_FROM_DATABASE=Acer/Lenovo Webcam [CN0316] - -usb:v064EpA103* - ID_PRODUCT_FROM_DATABASE=Acer/HP Integrated Webcam [CN0314] - -usb:v064EpA110* - ID_PRODUCT_FROM_DATABASE=HP Webcam - -usb:v064EpA114* - ID_PRODUCT_FROM_DATABASE=Lemote Webcam - -usb:v064EpA136* - ID_PRODUCT_FROM_DATABASE=Asus Integrated Webcam [CN031B] - -usb:v064EpA219* - ID_PRODUCT_FROM_DATABASE=1.3M WebCam (notebook emachines E730, Acer sub-brand) - -usb:v064EpC107* - ID_PRODUCT_FROM_DATABASE=HP webcam [dv6-1190en] - -usb:v064EpD101* - ID_PRODUCT_FROM_DATABASE=Acer CrystalEye Webcam - -usb:v064EpE201* - ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Webcam - -usb:v064EpE203* - ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Webcam - -usb:v064EpE258* - ID_PRODUCT_FROM_DATABASE=HP TrueVision HD Integrated Webcam - -usb:v064EpF102* - ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Webcam [R5U877] - -usb:v064EpF103* - ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Webcam [R5U877] - -usb:v064EpF300* - ID_PRODUCT_FROM_DATABASE=UVC 0.3M Webcam - -usb:v064F* - ID_VENDOR_FROM_DATABASE=WIBU-Systems AG - -usb:v064Fp03E9* - ID_PRODUCT_FROM_DATABASE=CmStick (article no. 1001) - -usb:v064Fp03F2* - ID_PRODUCT_FROM_DATABASE=CmStick/M (article no. 1010) - -usb:v064Fp03F3* - ID_PRODUCT_FROM_DATABASE=CmStick/M (article no. 1011) - -usb:v064Fp0BD7* - ID_PRODUCT_FROM_DATABASE=BOX/U - -usb:v064Fp0BD8* - ID_PRODUCT_FROM_DATABASE=BOX/RU - -usb:v0650* - ID_VENDOR_FROM_DATABASE=Dynapro Systems - -usb:v0651* - ID_VENDOR_FROM_DATABASE=Likom Technology Sdn. Bhd. - -usb:v0652* - ID_VENDOR_FROM_DATABASE=Stargate Solutions, Inc. - -usb:v0653* - ID_VENDOR_FROM_DATABASE=CNF, Inc. - -usb:v0654* - ID_VENDOR_FROM_DATABASE=Granite Microsystems, Inc. - -usb:v0654p0005* - ID_PRODUCT_FROM_DATABASE=Device Bay Controller - -usb:v0654p0006* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v0654p0007* - ID_PRODUCT_FROM_DATABASE=Device Bay Controller - -usb:v0654p0016* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v0655* - ID_VENDOR_FROM_DATABASE=Space Shuttle Hi-Tech Co., Ltd - -usb:v0656* - ID_VENDOR_FROM_DATABASE=Glory Mark Electronic, Ltd - -usb:v0657* - ID_VENDOR_FROM_DATABASE=Tekcon Electronics Corp. - -usb:v0658* - ID_VENDOR_FROM_DATABASE=Sigma Designs, Inc. - -usb:v0659* - ID_VENDOR_FROM_DATABASE=Aethra - -usb:v065A* - ID_VENDOR_FROM_DATABASE=Optoelectronics Co., Ltd - -usb:v065Ap0001* - ID_PRODUCT_FROM_DATABASE=Barcode scanner / NLV-1001 (keyboard mode) - -usb:v065Ap0009* - ID_PRODUCT_FROM_DATABASE=NLV-1001 (serial mode) / OPN-2001 [Opticon] - -usb:v065B* - ID_VENDOR_FROM_DATABASE=Tracewell Systems - -usb:v065E* - ID_VENDOR_FROM_DATABASE=Silicon Graphics - -usb:v065F* - ID_VENDOR_FROM_DATABASE=Good Way Technology Co., Ltd & GWC technology Inc. - -usb:v0660* - ID_VENDOR_FROM_DATABASE=TSAY-E (BVI) International, Inc. - -usb:v0661* - ID_VENDOR_FROM_DATABASE=Hamamatsu Photonics K.K. - -usb:v0662* - ID_VENDOR_FROM_DATABASE=Kansai Electric Co., Ltd - -usb:v0663* - ID_VENDOR_FROM_DATABASE=Topmax Electronic Co., Ltd - -usb:v0663p0103* - ID_PRODUCT_FROM_DATABASE=CobraPad - -usb:v0664* - ID_VENDOR_FROM_DATABASE=ET&T Technology Co., Ltd. - -usb:v0664p0301* - ID_PRODUCT_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen - -usb:v0664p0302* - ID_PRODUCT_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen - -usb:v0664p0303* - ID_PRODUCT_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen - -usb:v0664p0304* - ID_PRODUCT_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen - -usb:v0664p0305* - ID_PRODUCT_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen - -usb:v0664p0306* - ID_PRODUCT_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen - -usb:v0664p0307* - ID_PRODUCT_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen - -usb:v0664p0309* - ID_PRODUCT_FROM_DATABASE=Groovy Technology Corp. GTouch Touch Screen - -usb:v0665* - ID_VENDOR_FROM_DATABASE=Cypress Semiconductor - -usb:v0665p5161* - ID_PRODUCT_FROM_DATABASE=USB to Serial - -usb:v0667* - ID_VENDOR_FROM_DATABASE=Aiwa Co., Ltd - -usb:v0667p0FA1* - ID_PRODUCT_FROM_DATABASE=TD-U8000 Tape Drive - -usb:v0668* - ID_VENDOR_FROM_DATABASE=WordWand - -usb:v0669* - ID_VENDOR_FROM_DATABASE=Oce' Printing Systems GmbH - -usb:v066A* - ID_VENDOR_FROM_DATABASE=Total Technologies, Ltd - -usb:v066B* - ID_VENDOR_FROM_DATABASE=Linksys, Inc. - -usb:v066Bp0105* - ID_PRODUCT_FROM_DATABASE=SCM eUSB SmartMedia Card Reader - -usb:v066Bp010A* - ID_PRODUCT_FROM_DATABASE=Melco MCR-U2 SmartMedia / CompactFlash Reader - -usb:v066Bp200C* - ID_PRODUCT_FROM_DATABASE=USB10TX - -usb:v066Bp2202* - ID_PRODUCT_FROM_DATABASE=USB10TX Ethernet [pegasus] - -usb:v066Bp2203* - ID_PRODUCT_FROM_DATABASE=USB100TX Ethernet [pegasus] - -usb:v066Bp2204* - ID_PRODUCT_FROM_DATABASE=USB100TX HomePNA Ethernet [pegasus] - -usb:v066Bp2206* - ID_PRODUCT_FROM_DATABASE=USB Ethernet [pegasus] - -usb:v066Bp2207* - ID_PRODUCT_FROM_DATABASE=HomeLink Phoneline 10M Network Adapter - -usb:v066Bp2211* - ID_PRODUCT_FROM_DATABASE=WUSB11 802.11b Adapter - -usb:v066Bp2212* - ID_PRODUCT_FROM_DATABASE=WUSB11v2.5 802.11b Adapter - -usb:v066Bp2213* - ID_PRODUCT_FROM_DATABASE=WUSB12v1.1 802.11b Adapter - -usb:v066Bp2219* - ID_PRODUCT_FROM_DATABASE=Instant Wireless Network Adapter - -usb:v066Bp400B* - ID_PRODUCT_FROM_DATABASE=USB10TX - -usb:v066D* - ID_VENDOR_FROM_DATABASE=Entrega, Inc. - -usb:v066E* - ID_VENDOR_FROM_DATABASE=Acer Semiconductor America, Inc. - -usb:v066F* - ID_VENDOR_FROM_DATABASE=SigmaTel, Inc. - -usb:v066Fp003B* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp003E* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp003F* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp0040* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp0041* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp0042* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp0043* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp004B* - ID_PRODUCT_FROM_DATABASE=A-Max PA11 MP3 Player - -usb:v066Fp3400* - ID_PRODUCT_FROM_DATABASE=STMP3400 D-Major MP3 Player - -usb:v066Fp3410* - ID_PRODUCT_FROM_DATABASE=STMP3410 D-Major MP3 Player - -usb:v066Fp3500* - ID_PRODUCT_FROM_DATABASE=Player Recovery Device - -usb:v066Fp3780* - ID_PRODUCT_FROM_DATABASE=STMP3780/i.MX23 SystemOnChip in RecoveryMode - -usb:v066Fp4200* - ID_PRODUCT_FROM_DATABASE=STIr4200 IrDA Bridge - -usb:v066Fp4210* - ID_PRODUCT_FROM_DATABASE=STIr4210 IrDA Bridge - -usb:v066Fp8000* - ID_PRODUCT_FROM_DATABASE=MSCN MP3 Player - -usb:v066Fp8001* - ID_PRODUCT_FROM_DATABASE=SigmaTel MSCN Audio Player - -usb:v066Fp8004* - ID_PRODUCT_FROM_DATABASE=MSCNMMC MP3 Player - -usb:v066Fp8008* - ID_PRODUCT_FROM_DATABASE=i-Bead 100 MP3 Player - -usb:v066Fp8020* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8034* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8036* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8038* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8056* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8060* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8066* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp807E* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8092* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8096* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp809A* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp80AA* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp80AC* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp80B8* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp80BA* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp80BC* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp80BF* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp80C5* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp80C8* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp80CA* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp80CC* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8104* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8106* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8108* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp810A* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp810C* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8122* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8124* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8126* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8128* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8134* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8136* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8138* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp813A* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp813E* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8140* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8142* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8144* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8146* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8148* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp814C* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8201* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8202* - ID_PRODUCT_FROM_DATABASE=Jens of Sweden / I-BEAD 150M/150H MP3 player - -usb:v066Fp8203* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8204* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8205* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8206* - ID_PRODUCT_FROM_DATABASE=Digital MP3 Music Player - -usb:v066Fp8207* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8208* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8209* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp820A* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp820B* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp820C* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp820D* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp820E* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp820F* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8210* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8211* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8212* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8213* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8214* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8215* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8216* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8217* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8218* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8219* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp821A* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp821B* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp821C* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp821D* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp821E* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp821F* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8220* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8221* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8222* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8223* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8224* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8225* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8226* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8227* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8228* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8229* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8230* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp829C* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp82E0* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp8320* - ID_PRODUCT_FROM_DATABASE=TrekStor i.Beat fun - -usb:v066Fp835D* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp9000* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp9001* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v066Fp9002* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v0670* - ID_VENDOR_FROM_DATABASE=Sequel Imaging - -usb:v0670p0001* - ID_PRODUCT_FROM_DATABASE=Calibrator - -usb:v0670p0005* - ID_PRODUCT_FROM_DATABASE=Enable Cable - -usb:v0672* - ID_VENDOR_FROM_DATABASE=Labtec, Inc. - -usb:v0672p1041* - ID_PRODUCT_FROM_DATABASE=LCS1040 Speaker System - -usb:v0672p5000* - ID_PRODUCT_FROM_DATABASE=SpaceBall 4000 FLX - -usb:v0673* - ID_VENDOR_FROM_DATABASE=HCL - -usb:v0673p5000* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v0674* - ID_VENDOR_FROM_DATABASE=Key Mouse Electronic Enterprise Co., Ltd - -usb:v0675* - ID_VENDOR_FROM_DATABASE=DrayTek Corp. - -usb:v0675p0110* - ID_PRODUCT_FROM_DATABASE=Vigor 128 ISDN TA - -usb:v0675p0530* - ID_PRODUCT_FROM_DATABASE=Vigor530 IEEE 802.11G Adapter (ISL3880+NET2280) - -usb:v0675p0550* - ID_PRODUCT_FROM_DATABASE=Vigor550 - -usb:v0675p1688* - ID_PRODUCT_FROM_DATABASE=miniVigor 128 ISDN TA - -usb:v0675p6694* - ID_PRODUCT_FROM_DATABASE=USB ISDN TA - -usb:v0676* - ID_VENDOR_FROM_DATABASE=Teles AG - -usb:v0677* - ID_VENDOR_FROM_DATABASE=Aiwa Co., Ltd - -usb:v0677p07D5* - ID_PRODUCT_FROM_DATABASE=TM-ED1285(USB) - -usb:v0677p0FA1* - ID_PRODUCT_FROM_DATABASE=TD-U8000 Tape Drive - -usb:v0678* - ID_VENDOR_FROM_DATABASE=ACard Technology Corp. - -usb:v067B* - ID_VENDOR_FROM_DATABASE=Prolific Technology, Inc. - -usb:v067Bp0000* - ID_PRODUCT_FROM_DATABASE=PL2301 USB-USB Bridge - -usb:v067Bp0001* - ID_PRODUCT_FROM_DATABASE=PL2302 USB-USB Bridge - -usb:v067Bp0307* - ID_PRODUCT_FROM_DATABASE=Motorola Serial Adapter - -usb:v067Bp04BB* - ID_PRODUCT_FROM_DATABASE=PL2303 Serial (IODATA USB-RSAQ2) - -usb:v067Bp0600* - ID_PRODUCT_FROM_DATABASE=IDE Bridge - -usb:v067Bp0610* - ID_PRODUCT_FROM_DATABASE=Onext EG210U MODEM - -usb:v067Bp0611* - ID_PRODUCT_FROM_DATABASE=AlDiga AL-11U Quad-band GSM/GPRS/EDGE modem - -usb:v067Bp2303* - ID_PRODUCT_FROM_DATABASE=PL2303 Serial Port - -usb:v067Bp2305* - ID_PRODUCT_FROM_DATABASE=PL2305 Parallel Port - -usb:v067Bp2306* - ID_PRODUCT_FROM_DATABASE=Raylink Bridge Controller - -usb:v067Bp2307* - ID_PRODUCT_FROM_DATABASE=PL2307 USB-ATAPI4 Bridge - -usb:v067Bp2313* - ID_PRODUCT_FROM_DATABASE=FITEL PHS U Cable Adaptor - -usb:v067Bp2315* - ID_PRODUCT_FROM_DATABASE=Flash Disk Embedded Hub - -usb:v067Bp2316* - ID_PRODUCT_FROM_DATABASE=Flash Disk Security Device - -usb:v067Bp2317* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v067Bp2501* - ID_PRODUCT_FROM_DATABASE=PL2501 USB-USB Bridge (USB 2.0) - -usb:v067Bp2506* - ID_PRODUCT_FROM_DATABASE=Kaser 8gB micro hard drive - -usb:v067Bp2507* - ID_PRODUCT_FROM_DATABASE=PL2507 Hi-speed USB to IDE bridge controller - -usb:v067Bp2515* - ID_PRODUCT_FROM_DATABASE=Flash Disk Embedded Hub - -usb:v067Bp2517* - ID_PRODUCT_FROM_DATABASE=Flash Disk Mass Storage Device - -usb:v067Bp2528* - ID_PRODUCT_FROM_DATABASE=Storage device (8gB thumb drive) - -usb:v067Bp25A1* - ID_PRODUCT_FROM_DATABASE=PL25A1 Host-Host Bridge - -usb:v067Bp3400* - ID_PRODUCT_FROM_DATABASE=Hi-Speed Flash Disk with TruePrint AES3400 - -usb:v067Bp3500* - ID_PRODUCT_FROM_DATABASE=Hi-Speed Flash Disk with TruePrint AES3500 - -usb:v067Bp3507* - ID_PRODUCT_FROM_DATABASE=PL3507 ATAPI6 Bridge - -usb:v067BpAAA0* - ID_PRODUCT_FROM_DATABASE=Prolific Pharos - -usb:v067BpAAA2* - ID_PRODUCT_FROM_DATABASE=PL2303 Serial Adapter (IODATA USB-RSAQ3) - -usb:v067C* - ID_VENDOR_FROM_DATABASE=Efficient Networks, Inc. - -usb:v067Cp1001* - ID_PRODUCT_FROM_DATABASE=Siemens SpeedStream 100MBps Ethernet - -usb:v067Cp1022* - ID_PRODUCT_FROM_DATABASE=Siemens SpeedStream 1022 802.11b Adapter - -usb:v067Cp1023* - ID_PRODUCT_FROM_DATABASE=SpeedStream Wireless - -usb:v067Cp4020* - ID_PRODUCT_FROM_DATABASE=SpeedStream 4020 ATM/ADSL Installer - -usb:v067Cp4031* - ID_PRODUCT_FROM_DATABASE=Efficient ADSL Modem - -usb:v067Cp4032* - ID_PRODUCT_FROM_DATABASE=SpeedStream 4031 ATM/ADSL Installer - -usb:v067Cp4033* - ID_PRODUCT_FROM_DATABASE=SpeedStream 4031 ATM/ADSL Installer - -usb:v067Cp4060* - ID_PRODUCT_FROM_DATABASE=Alcatel Speedstream 4060 ADSL Modem - -usb:v067Cp4062* - ID_PRODUCT_FROM_DATABASE=Efficient Networks 4060 Loader - -usb:v067Cp5667* - ID_PRODUCT_FROM_DATABASE=Efficient Networks Virtual Bus for ADSL Modem - -usb:v067CpC031* - ID_PRODUCT_FROM_DATABASE=SpeedStream 4031 ATM/ADSL Installer - -usb:v067CpC032* - ID_PRODUCT_FROM_DATABASE=SpeedStream 4031 ATM/ADSL Installer - -usb:v067CpC033* - ID_PRODUCT_FROM_DATABASE=SpeedStream 4031 ATM/ADSL Installer - -usb:v067CpC060* - ID_PRODUCT_FROM_DATABASE=SpeedStream 4060 Miniport ATM/ADSL Adapter - -usb:v067CpD667* - ID_PRODUCT_FROM_DATABASE=Efficient Networks Virtual Bus for ADSL Modem - -usb:v067CpE240* - ID_PRODUCT_FROM_DATABASE=Speedstream Ethernet Adapter E240 - -usb:v067CpE540* - ID_PRODUCT_FROM_DATABASE=Speedstream Ethernet Adapter E240 - -usb:v067D* - ID_VENDOR_FROM_DATABASE=Hohner Corp. - -usb:v067E* - ID_VENDOR_FROM_DATABASE=Intermec Technologies Corp. - -usb:v067Ep0801* - ID_PRODUCT_FROM_DATABASE=HID Keyboard, Barcode scanner - -usb:v067Ep0803* - ID_PRODUCT_FROM_DATABASE=VCP, Barcode scanner - -usb:v067Ep0805* - ID_PRODUCT_FROM_DATABASE=VCP + UVC, Barcode scanner - -usb:v067Ep1001* - ID_PRODUCT_FROM_DATABASE=Mobile Computer - -usb:v067F* - ID_VENDOR_FROM_DATABASE=Virata, Ltd - -usb:v067Fp4552* - ID_PRODUCT_FROM_DATABASE=DSL-200 ADSL Modem - -usb:v067Fp6542* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v067Fp6549* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v067Fp7541* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v0680* - ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Corp., CPP Div. (Avance Logic) - -usb:v0680p0002* - ID_PRODUCT_FROM_DATABASE=Arowana Optical Wheel Mouse MSOP-01 - -usb:v0681* - ID_VENDOR_FROM_DATABASE=Siemens Information and Communication Products - -usb:v0681p0001* - ID_PRODUCT_FROM_DATABASE=Dect Base - -usb:v0681p0002* - ID_PRODUCT_FROM_DATABASE=Gigaset 3075 Passive ISDN - -usb:v0681p0005* - ID_PRODUCT_FROM_DATABASE=ID-Mouse with Fingerprint Reader - -usb:v0681p0012* - ID_PRODUCT_FROM_DATABASE=I-Gate 802.11b Adapter - -usb:v0681p001B* - ID_PRODUCT_FROM_DATABASE=WLL013 - -usb:v0681p001D* - ID_PRODUCT_FROM_DATABASE=Hipath 1000 - -usb:v0681p0022* - ID_PRODUCT_FROM_DATABASE=Gigaset SX353 ISDN - -usb:v0681p0026* - ID_PRODUCT_FROM_DATABASE=DECT Data - Gigaset M34 - -usb:v0681p002B* - ID_PRODUCT_FROM_DATABASE=A-100-I ADSL Modem - -usb:v0681p002E* - ID_PRODUCT_FROM_DATABASE=ADSL Router_S-141 - -usb:v0681p0034* - ID_PRODUCT_FROM_DATABASE=GSM module MC35/ES75 USB Modem - -usb:v0681p3C06* - ID_PRODUCT_FROM_DATABASE=54g USB Network Adapter - -usb:v0682* - ID_VENDOR_FROM_DATABASE=Victor Company of Japan, Ltd - -usb:v0684* - ID_VENDOR_FROM_DATABASE=Actiontec Electronics, Inc. - -usb:v0685* - ID_VENDOR_FROM_DATABASE=ZD Incorporated - -usb:v0685p7000* - ID_PRODUCT_FROM_DATABASE=HSDPA Modem - -usb:v0686* - ID_VENDOR_FROM_DATABASE=Minolta Co., Ltd - -usb:v0686p2001* - ID_PRODUCT_FROM_DATABASE=PagePro 4110W - -usb:v0686p2004* - ID_PRODUCT_FROM_DATABASE=PagePro 1200W - -usb:v0686p2005* - ID_PRODUCT_FROM_DATABASE=Magicolor 2300 DL - -usb:v0686p3001* - ID_PRODUCT_FROM_DATABASE=PagePro 4100 - -usb:v0686p3005* - ID_PRODUCT_FROM_DATABASE=PagePro 1250E - -usb:v0686p3006* - ID_PRODUCT_FROM_DATABASE=PagePro 1250W - -usb:v0686p3009* - ID_PRODUCT_FROM_DATABASE=Magicolor 2300W - -usb:v0686p300B* - ID_PRODUCT_FROM_DATABASE=PagePro 1350W - -usb:v0686p300C* - ID_PRODUCT_FROM_DATABASE=PagePro 1300W - -usb:v0686p302E* - ID_PRODUCT_FROM_DATABASE=Develop D 1650iD PCL - -usb:v0686p3034* - ID_PRODUCT_FROM_DATABASE=Develop D 2050iD PCL - -usb:v0686p4001* - ID_PRODUCT_FROM_DATABASE=Dimage 2300 - -usb:v0686p4003* - ID_PRODUCT_FROM_DATABASE=Dimage 2330 Zoom Camera - -usb:v0686p4004* - ID_PRODUCT_FROM_DATABASE=Dimage Scan Elite II AF-2920 (2888) - -usb:v0686p4005* - ID_PRODUCT_FROM_DATABASE=Minolta DiMAGE E201 Mass Storage Device - -usb:v0686p4006* - ID_PRODUCT_FROM_DATABASE=Dimage 7 Camera - -usb:v0686p4007* - ID_PRODUCT_FROM_DATABASE=Dimage S304 Camera - -usb:v0686p4008* - ID_PRODUCT_FROM_DATABASE=Dimage 5 Camera - -usb:v0686p4009* - ID_PRODUCT_FROM_DATABASE=Dimage X Camera - -usb:v0686p400A* - ID_PRODUCT_FROM_DATABASE=Dimage S404 Camera - -usb:v0686p400B* - ID_PRODUCT_FROM_DATABASE=Dimage 7i Camera - -usb:v0686p400C* - ID_PRODUCT_FROM_DATABASE=Dimage F100 Camera - -usb:v0686p400D* - ID_PRODUCT_FROM_DATABASE=Dimage Scan Dual III AF-2840 (2889) - -usb:v0686p400E* - ID_PRODUCT_FROM_DATABASE=Dimage Scan Elite 5400 (2890) - -usb:v0686p400F* - ID_PRODUCT_FROM_DATABASE=Dimage 7Hi Camera - -usb:v0686p4010* - ID_PRODUCT_FROM_DATABASE=Dimage Xi Camera - -usb:v0686p4011* - ID_PRODUCT_FROM_DATABASE=Dimage F300 Camera - -usb:v0686p4012* - ID_PRODUCT_FROM_DATABASE=Dimage F200 Camera - -usb:v0686p4014* - ID_PRODUCT_FROM_DATABASE=Dimage S414 Camera - -usb:v0686p4015* - ID_PRODUCT_FROM_DATABASE=Dimage XT Camera [storage] - -usb:v0686p4016* - ID_PRODUCT_FROM_DATABASE=Dimage XT Camera [remote mode] - -usb:v0686p4017* - ID_PRODUCT_FROM_DATABASE=Dimage E223 - -usb:v0686p4018* - ID_PRODUCT_FROM_DATABASE=Dimage Z1 Camera - -usb:v0686p4019* - ID_PRODUCT_FROM_DATABASE=Dimage A1 Camera [remote mode] - -usb:v0686p401A* - ID_PRODUCT_FROM_DATABASE=Dimage A1 Camera [storage] - -usb:v0686p401C* - ID_PRODUCT_FROM_DATABASE=Dimage X20 Camera - -usb:v0686p401E* - ID_PRODUCT_FROM_DATABASE=Dimage E323 Camera - -usb:v068A* - ID_VENDOR_FROM_DATABASE=Pertech, Inc. - -usb:v068B* - ID_VENDOR_FROM_DATABASE=Potrans International, Inc. - -usb:v068E* - ID_VENDOR_FROM_DATABASE=CH Products, Inc. - -usb:v068Ep00D3* - ID_PRODUCT_FROM_DATABASE=OEM 3 axis 5 button joystick - -usb:v068Ep00E2* - ID_PRODUCT_FROM_DATABASE=HFX OEM Joystick - -usb:v068Ep00F1* - ID_PRODUCT_FROM_DATABASE=Pro Throttle - -usb:v068Ep00F2* - ID_PRODUCT_FROM_DATABASE=Flight Sim Pedals - -usb:v068Ep00F3* - ID_PRODUCT_FROM_DATABASE=Fighterstick - -usb:v068Ep00F4* - ID_PRODUCT_FROM_DATABASE=Combatstick - -usb:v068Ep00FA* - ID_PRODUCT_FROM_DATABASE=Flight Sim Pedals - -usb:v068Ep00FF* - ID_PRODUCT_FROM_DATABASE=Flight Sim Yoke - -usb:v068Ep0500* - ID_PRODUCT_FROM_DATABASE=GameStick 3D - -usb:v068Ep0501* - ID_PRODUCT_FROM_DATABASE=CH Pro Pedals - -usb:v068Ep0504* - ID_PRODUCT_FROM_DATABASE=F-16 Combat Stick - -usb:v0690* - ID_VENDOR_FROM_DATABASE=Golden Bridge Electech, Inc. - -usb:v0693* - ID_VENDOR_FROM_DATABASE=Hagiwara Sys-Com Co., Ltd - -usb:v0693p0002* - ID_PRODUCT_FROM_DATABASE=FlashGate SmartMedia Card Reader - -usb:v0693p0003* - ID_PRODUCT_FROM_DATABASE=FlashGate CompactFlash Card Reader - -usb:v0693p0005* - ID_PRODUCT_FROM_DATABASE=FlashGate - -usb:v0693p0006* - ID_PRODUCT_FROM_DATABASE=SM PCCard R/W and SPD - -usb:v0693p0007* - ID_PRODUCT_FROM_DATABASE=FlashGate ME (Authenticated) - -usb:v0693p000A* - ID_PRODUCT_FROM_DATABASE=SDCard/MMC Reader/Writer - -usb:v0694* - ID_VENDOR_FROM_DATABASE=Lego Group - -usb:v0694p0001* - ID_PRODUCT_FROM_DATABASE=Mindstorms Tower - -usb:v0694p0002* - ID_PRODUCT_FROM_DATABASE=Mindstorms NXT - -usb:v0698* - ID_VENDOR_FROM_DATABASE=Chuntex (CTX) - -usb:v0698p1786* - ID_PRODUCT_FROM_DATABASE=1300ex Monitor - -usb:v0698p2003* - ID_PRODUCT_FROM_DATABASE=CTX M730V built in Camera - -usb:v0698p9999* - ID_PRODUCT_FROM_DATABASE=VLxxxx Monitor+Hub - -usb:v0699* - ID_VENDOR_FROM_DATABASE=Tektronix, Inc. - -usb:v069A* - ID_VENDOR_FROM_DATABASE=Askey Computer Corp. - -usb:v069Ap0001* - ID_PRODUCT_FROM_DATABASE=VC010 Webcam [pwc] - -usb:v069Ap0303* - ID_PRODUCT_FROM_DATABASE=Cable Modem - -usb:v069Ap0311* - ID_PRODUCT_FROM_DATABASE=ADSL Router Remote NDIS Device - -usb:v069Ap0318* - ID_PRODUCT_FROM_DATABASE=Remote NDIS Device - -usb:v069Ap0319* - ID_PRODUCT_FROM_DATABASE=220V Remote NDIS Device - -usb:v069Ap0320* - ID_PRODUCT_FROM_DATABASE=IEEE 802.11b Wireless LAN Card - -usb:v069Ap0321* - ID_PRODUCT_FROM_DATABASE=Dynalink WLL013 / Compex WLU11A 802.11b Adapter - -usb:v069Ap0402* - ID_PRODUCT_FROM_DATABASE=Scientific Atlanta WebSTAR 100 & 200 series Cable Modem - -usb:v069Ap0811* - ID_PRODUCT_FROM_DATABASE=BT Virtual Bus for Helium - -usb:v069Ap0821* - ID_PRODUCT_FROM_DATABASE=BT Voyager 1010 802.11b Adapter - -usb:v069Ap4402* - ID_PRODUCT_FROM_DATABASE=Scientific Atlanta WebSTAR 2000 series Cable Modem - -usb:v069Ap4403* - ID_PRODUCT_FROM_DATABASE=Scientific Atlanta WebSTAR 300 series Cable Modem - -usb:v069Ap4501* - ID_PRODUCT_FROM_DATABASE=Scientific-Atlanta WebSTAR 2000 series Cable Modem - -usb:v069B* - ID_VENDOR_FROM_DATABASE=Thomson, Inc. - -usb:v069Bp0704* - ID_PRODUCT_FROM_DATABASE=DCM245 Cable Modem - -usb:v069Bp0705* - ID_PRODUCT_FROM_DATABASE=THG540K Cable Modem - -usb:v069Bp0709* - ID_PRODUCT_FROM_DATABASE=Lyra PDP2424 - -usb:v069Bp070C* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v069Bp070D* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v069Bp070E* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v069Bp070F* - ID_PRODUCT_FROM_DATABASE=RCA Lyra RD1071 MP3 Player - -usb:v069Bp0731* - ID_PRODUCT_FROM_DATABASE=Lyra M200E256 - -usb:v069Bp0761* - ID_PRODUCT_FROM_DATABASE=RCA H100A - -usb:v069Bp0778* - ID_PRODUCT_FROM_DATABASE=PEARL USB Device - -usb:v069Bp2220* - ID_PRODUCT_FROM_DATABASE=RCA Kazoo RD1000 MP3 Player - -usb:v069Bp300A* - ID_PRODUCT_FROM_DATABASE=RCA Lyra MP3 Player - -usb:v069Bp3012* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v069Bp3013* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v069Bp5557* - ID_PRODUCT_FROM_DATABASE=RCA CDS6300 - -usb:v069D* - ID_VENDOR_FROM_DATABASE=Hughes Network Systems (HNS) - -usb:v069Dp0001* - ID_PRODUCT_FROM_DATABASE=Satellite Receiver Device - -usb:v069Dp0002* - ID_PRODUCT_FROM_DATABASE=Satellite Device - -usb:v069E* - ID_VENDOR_FROM_DATABASE=Welcat Inc. - -usb:v069Ep0005* - ID_PRODUCT_FROM_DATABASE=Marx CryptoBox v1.2 - -usb:v069F* - ID_VENDOR_FROM_DATABASE=Allied Data Technologies BV - -usb:v069Fp0010* - ID_PRODUCT_FROM_DATABASE=Tornado Speakerphone FaxModem 56.0 - -usb:v069Fp0011* - ID_PRODUCT_FROM_DATABASE=Tornado Speakerphone FaxModem 56.0 - -usb:v069Fp1000* - ID_PRODUCT_FROM_DATABASE=ADT VvBus for CopperJet - -usb:v069Fp1004* - ID_PRODUCT_FROM_DATABASE=CopperJet 821 RouterPlus - -usb:v06A2* - ID_VENDOR_FROM_DATABASE=Topro Technology, Inc. - -usb:v06A2p0033* - ID_PRODUCT_FROM_DATABASE=USB Mouse - -usb:v06A3* - ID_VENDOR_FROM_DATABASE=Saitek PLC - -usb:v06A3p0006* - ID_PRODUCT_FROM_DATABASE=Cyborg Gold Joystick - -usb:v06A3p0109* - ID_PRODUCT_FROM_DATABASE=P880 Pad - -usb:v06A3p0160* - ID_PRODUCT_FROM_DATABASE=ST290 Pro - -usb:v06A3p0200* - ID_PRODUCT_FROM_DATABASE=Xbox Adrenalin Hub - -usb:v06A3p0241* - ID_PRODUCT_FROM_DATABASE=Xbox Adrenalin Gamepad - -usb:v06A3p0255* - ID_PRODUCT_FROM_DATABASE=X52 Flight Controller - -usb:v06A3p040B* - ID_PRODUCT_FROM_DATABASE=P990 Dual Analog Pad - -usb:v06A3p040C* - ID_PRODUCT_FROM_DATABASE=P2900 Wireless Pad - -usb:v06A3p0422* - ID_PRODUCT_FROM_DATABASE=ST90 Joystick - -usb:v06A3p0460* - ID_PRODUCT_FROM_DATABASE=ST290 Pro Flight Stick - -usb:v06A3p0463* - ID_PRODUCT_FROM_DATABASE=ST290 - -usb:v06A3p0464* - ID_PRODUCT_FROM_DATABASE=Cyborg Evo - -usb:v06A3p0471* - ID_PRODUCT_FROM_DATABASE=Cyborg Graphite Stick - -usb:v06A3p0501* - ID_PRODUCT_FROM_DATABASE=R100 Sports Wheel - -usb:v06A3p0502* - ID_PRODUCT_FROM_DATABASE=ST200 Stick - -usb:v06A3p0506* - ID_PRODUCT_FROM_DATABASE=R220 Digital Wheel - -usb:v06A3p051E* - ID_PRODUCT_FROM_DATABASE=Cyborg Digital II Stick - -usb:v06A3p052D* - ID_PRODUCT_FROM_DATABASE=P750 Gamepad - -usb:v06A3p053C* - ID_PRODUCT_FROM_DATABASE=X45 Flight Controller - -usb:v06A3p053F* - ID_PRODUCT_FROM_DATABASE=X36F Flightstick - -usb:v06A3p056C* - ID_PRODUCT_FROM_DATABASE=P2000 Tilt Pad - -usb:v06A3p056F* - ID_PRODUCT_FROM_DATABASE=P2000 Tilt Pad - -usb:v06A3p05D2* - ID_PRODUCT_FROM_DATABASE=PC Dash 2 - -usb:v06A3p075C* - ID_PRODUCT_FROM_DATABASE=X52 Flight Controller - -usb:v06A3p0762* - ID_PRODUCT_FROM_DATABASE=Saitek X52 Pro Flight Control System - -usb:v06A3p0763* - ID_PRODUCT_FROM_DATABASE=Pro Flight Rudder Pedals - -usb:v06A3p0764* - ID_PRODUCT_FROM_DATABASE=Flight Pro Combat Rudder - -usb:v06A3p0805* - ID_PRODUCT_FROM_DATABASE=R440 Force Wheel - -usb:v06A3p0B4E* - ID_PRODUCT_FROM_DATABASE=Pro Flight Backlit Information Panel - -usb:v06A3p0BAC* - ID_PRODUCT_FROM_DATABASE=Pro Flight Yoke - -usb:v06A3p0C2D* - ID_PRODUCT_FROM_DATABASE=Pro Flight Quadrant - -usb:v06A3p0D05* - ID_PRODUCT_FROM_DATABASE=Pro Flight Radio Panel - -usb:v06A3p0D06* - ID_PRODUCT_FROM_DATABASE=Flight Pro Multi Panel - -usb:v06A3p0D67* - ID_PRODUCT_FROM_DATABASE=Pro Flight Switch Panel - -usb:v06A3p1003* - ID_PRODUCT_FROM_DATABASE=GM2 Action Pad - -usb:v06A3p1009* - ID_PRODUCT_FROM_DATABASE=Action Pad - -usb:v06A3p100A* - ID_PRODUCT_FROM_DATABASE=SP550 Pad and Joystick Combo - -usb:v06A3p100B* - ID_PRODUCT_FROM_DATABASE=SP550 Pad - -usb:v06A3p1509* - ID_PRODUCT_FROM_DATABASE=P3000 Wireless Pad - -usb:v06A3p1589* - ID_PRODUCT_FROM_DATABASE=P3000 Wireless Pad - -usb:v06A3p2541* - ID_PRODUCT_FROM_DATABASE=X45 Flight Controller - -usb:v06A3p3509* - ID_PRODUCT_FROM_DATABASE=P3000 RF GamePad - -usb:v06A3p353E* - ID_PRODUCT_FROM_DATABASE=Cyborg Evo Wireless - -usb:v06A3p3589* - ID_PRODUCT_FROM_DATABASE=P3000 Wireless Pad - -usb:v06A3p35BE* - ID_PRODUCT_FROM_DATABASE=Cyborg Evo - -usb:v06A3p5509* - ID_PRODUCT_FROM_DATABASE=P3000 Wireless Pad - -usb:v06A3p712C* - ID_PRODUCT_FROM_DATABASE=Pro Flight Yoke integrated hub - -usb:v06A3p8000* - ID_PRODUCT_FROM_DATABASE=Gamers' Keyboard - -usb:v06A3p801E* - ID_PRODUCT_FROM_DATABASE=Cyborg 3D Digital Stick II - -usb:v06A3p8020* - ID_PRODUCT_FROM_DATABASE=Eclipse Keyboard - -usb:v06A3p8021* - ID_PRODUCT_FROM_DATABASE=Eclipse II Keyboard - -usb:v06A3p802D* - ID_PRODUCT_FROM_DATABASE=P750 Pad - -usb:v06A3p803F* - ID_PRODUCT_FROM_DATABASE=X36 Flight Controller - -usb:v06A3p806F* - ID_PRODUCT_FROM_DATABASE=P2000 Tilt Pad - -usb:v06A3p80C0* - ID_PRODUCT_FROM_DATABASE=Pro Gamer Command Unit - -usb:v06A3p80C1* - ID_PRODUCT_FROM_DATABASE=Cyborg Command Pad Unit - -usb:v06A3pA2AE* - ID_PRODUCT_FROM_DATABASE=Pro Flight Instrument Panel - -usb:v06A3pA502* - ID_PRODUCT_FROM_DATABASE=Gaming Mouse - -usb:v06A3pF518* - ID_PRODUCT_FROM_DATABASE=P3200 Rumble Force Game Pad - -usb:v06A3pFF04* - ID_PRODUCT_FROM_DATABASE=R440 Force Wheel - -usb:v06A3pFF0C* - ID_PRODUCT_FROM_DATABASE=Cyborg Force Rumble Pad - -usb:v06A3pFF0D* - ID_PRODUCT_FROM_DATABASE=P2600 Rumble Force Pad - -usb:v06A3pFF12* - ID_PRODUCT_FROM_DATABASE=Cyborg 3D Force Stick - -usb:v06A3pFF17* - ID_PRODUCT_FROM_DATABASE=ST 330 Rumble Force Stick - -usb:v06A3pFF52* - ID_PRODUCT_FROM_DATABASE=Cyborg 3D Rumble Force Joystick - -usb:v06A3pFFB5* - ID_PRODUCT_FROM_DATABASE=Cyborg Evo Force Joystick - -usb:v06A4* - ID_VENDOR_FROM_DATABASE=Xiamen Doowell Electron Co., Ltd - -usb:v06A5* - ID_VENDOR_FROM_DATABASE=Divio - -usb:v06A5p0000* - ID_PRODUCT_FROM_DATABASE=Typhoon Webcam 100k [nw8000] - -usb:v06A5pD001* - ID_PRODUCT_FROM_DATABASE=ProLink DS3303u Webcam - -usb:v06A5pD800* - ID_PRODUCT_FROM_DATABASE=Chicony TwinkleCam - -usb:v06A5pD820* - ID_PRODUCT_FROM_DATABASE=Wize Media 1000 - -usb:v06A7* - ID_VENDOR_FROM_DATABASE=MicroStore, Inc. - -usb:v06A8* - ID_VENDOR_FROM_DATABASE=Topaz Systems, Inc. - -usb:v06A8p0042* - ID_PRODUCT_FROM_DATABASE=SignatureGem 1X5 Pad - -usb:v06A8p0043* - ID_PRODUCT_FROM_DATABASE=SignatureGem 1X5-HID Pad - -usb:v06A9* - ID_VENDOR_FROM_DATABASE=Westell - -usb:v06A9p0005* - ID_PRODUCT_FROM_DATABASE=WireSpeed Dual Connect Modem - -usb:v06A9p0006* - ID_PRODUCT_FROM_DATABASE=WireSpeed Dual Connect Modem - -usb:v06A9p000A* - ID_PRODUCT_FROM_DATABASE=WireSpeed Dual Connect Modem - -usb:v06A9p000B* - ID_PRODUCT_FROM_DATABASE=WireSpeed Dual Connect Modem - -usb:v06A9p000E* - ID_PRODUCT_FROM_DATABASE=A90-211WG-01 802.11g Adapter [Intersil ISL3887] - -usb:v06AA* - ID_VENDOR_FROM_DATABASE=Sysgration, Ltd - -usb:v06AC* - ID_VENDOR_FROM_DATABASE=Fujitsu Laboratories of America, Inc. - -usb:v06AD* - ID_VENDOR_FROM_DATABASE=Greatland Electronics Taiwan, Ltd - -usb:v06AE* - ID_VENDOR_FROM_DATABASE=Professional Multimedia Testing Centre - -usb:v06AF* - ID_VENDOR_FROM_DATABASE=Harting, Inc. of North America - -usb:v06B8* - ID_VENDOR_FROM_DATABASE=Pixela Corp. - -usb:v06B9* - ID_VENDOR_FROM_DATABASE=Alcatel Telecom - -usb:v06B9p0120* - ID_PRODUCT_FROM_DATABASE=SpeedTouch 120g 802.11g Wireless Adapter [Intersil ISL3886] - -usb:v06B9p0121* - ID_PRODUCT_FROM_DATABASE=SpeedTouch 121g Wireless Dongle - -usb:v06B9p2001* - ID_PRODUCT_FROM_DATABASE=SPEED TOUCH Card - -usb:v06B9p4061* - ID_PRODUCT_FROM_DATABASE=SpeedTouch ISDN or ADSL Modem - -usb:v06B9p4062* - ID_PRODUCT_FROM_DATABASE=SpeedTouch ISDN or ADSL router - -usb:v06B9pA5A5* - ID_PRODUCT_FROM_DATABASE=DynaMiTe Modem - -usb:v06BA* - ID_VENDOR_FROM_DATABASE=Smooth Cord & Connector Co., Ltd - -usb:v06BB* - ID_VENDOR_FROM_DATABASE=EDA, Inc. - -usb:v06BC* - ID_VENDOR_FROM_DATABASE=Oki Data Corp. - -usb:v06BCp000B* - ID_PRODUCT_FROM_DATABASE=Okipage 14ex Printer - -usb:v06BCp0027* - ID_PRODUCT_FROM_DATABASE=Okipage 14e - -usb:v06BCp0A91* - ID_PRODUCT_FROM_DATABASE=B2500MFP (printer+scanner) - -usb:v06BCp3801* - ID_PRODUCT_FROM_DATABASE=B6100 Laser Printer - -usb:v06BD* - ID_VENDOR_FROM_DATABASE=AGFA-Gevaert NV - -usb:v06BDp0001* - ID_PRODUCT_FROM_DATABASE=SnapScan 1212U - -usb:v06BDp0002* - ID_PRODUCT_FROM_DATABASE=SnapScan 1236U - -usb:v06BDp0100* - ID_PRODUCT_FROM_DATABASE=SnapScan Touch - -usb:v06BDp0101* - ID_PRODUCT_FROM_DATABASE=SNAPSCAN ELITE - -usb:v06BDp0200* - ID_PRODUCT_FROM_DATABASE=ScanMaker 8700 - -usb:v06BDp02BF* - ID_PRODUCT_FROM_DATABASE=DUOSCAN f40 - -usb:v06BDp0400* - ID_PRODUCT_FROM_DATABASE=CL30 - -usb:v06BDp0401* - ID_PRODUCT_FROM_DATABASE=Mass Storage - -usb:v06BDp0403* - ID_PRODUCT_FROM_DATABASE=ePhoto CL18 Camera - -usb:v06BDp0404* - ID_PRODUCT_FROM_DATABASE=ePhoto CL20 Camera - -usb:v06BDp2061* - ID_PRODUCT_FROM_DATABASE=SnapScan 1212U (?) - -usb:v06BDp208D* - ID_PRODUCT_FROM_DATABASE=Snapscan e40 - -usb:v06BDp208F* - ID_PRODUCT_FROM_DATABASE=SnapScan e50 - -usb:v06BDp2091* - ID_PRODUCT_FROM_DATABASE=SnapScan e20 - -usb:v06BDp2093* - ID_PRODUCT_FROM_DATABASE=SnapScan e10 - -usb:v06BDp2095* - ID_PRODUCT_FROM_DATABASE=SnapScan e25 - -usb:v06BDp2097* - ID_PRODUCT_FROM_DATABASE=SnapScan e26 - -usb:v06BDp20FD* - ID_PRODUCT_FROM_DATABASE=SnapScan e52 - -usb:v06BDp20FF* - ID_PRODUCT_FROM_DATABASE=SnapScan e42 - -usb:v06BE* - ID_VENDOR_FROM_DATABASE=AME Optimedia Technology Co., Ltd - -usb:v06BEp0800* - ID_PRODUCT_FROM_DATABASE=Optimedia Camera - -usb:v06BEp1005* - ID_PRODUCT_FROM_DATABASE=Dazzle DPVM! (1005) - -usb:v06BEpD001* - ID_PRODUCT_FROM_DATABASE=P35U Camera Capture - -usb:v06BF* - ID_VENDOR_FROM_DATABASE=Leoco Corp. - -usb:v06C2* - ID_VENDOR_FROM_DATABASE=Phidgets Inc. (formerly GLAB) - -usb:v06C2p0030* - ID_PRODUCT_FROM_DATABASE=PhidgetRFID - -usb:v06C2p0038* - ID_PRODUCT_FROM_DATABASE=4-Motor PhidgetServo v3.0 - -usb:v06C2p0039* - ID_PRODUCT_FROM_DATABASE=1-Motor PhidgetServo v3.0 - -usb:v06C2p003A* - ID_PRODUCT_FROM_DATABASE=8-Motor PhidgetAvancedServo - -usb:v06C2p0040* - ID_PRODUCT_FROM_DATABASE=PhidgetInterface Kit 0-0-4 - -usb:v06C2p0044* - ID_PRODUCT_FROM_DATABASE=PhidgetInterface Kit 0-16-16 - -usb:v06C2p0045* - ID_PRODUCT_FROM_DATABASE=PhidgetInterface Kit 8-8-8 - -usb:v06C2p0048* - ID_PRODUCT_FROM_DATABASE=PhidgetStepper (Under Development) - -usb:v06C2p0049* - ID_PRODUCT_FROM_DATABASE=PhidgetTextLED Ver 1.0 - -usb:v06C2p004A* - ID_PRODUCT_FROM_DATABASE=PhidgetLED Ver 1.0 - -usb:v06C2p004B* - ID_PRODUCT_FROM_DATABASE=PhidgetEncoder Ver 1.0 - -usb:v06C2p0051* - ID_PRODUCT_FROM_DATABASE=PhidgetInterface Kit 0-5-7 (Custom) - -usb:v06C2p0052* - ID_PRODUCT_FROM_DATABASE=PhidgetTextLCD - -usb:v06C2p0053* - ID_PRODUCT_FROM_DATABASE=PhidgetInterfaceKit 0-8-8 - -usb:v06C2p0058* - ID_PRODUCT_FROM_DATABASE=PhidgetMotorControl Ver 1.0 - -usb:v06C2p0070* - ID_PRODUCT_FROM_DATABASE=PhidgetTemperatureSensor Ver 1.0 - -usb:v06C2p0071* - ID_PRODUCT_FROM_DATABASE=PhidgetAccelerometer Ver 1.0 - -usb:v06C2p0072* - ID_PRODUCT_FROM_DATABASE=PhidgetWeightSensor Ver 1.0 - -usb:v06C2p0073* - ID_PRODUCT_FROM_DATABASE=PhidgetHumiditySensor - -usb:v06C2p0074* - ID_PRODUCT_FROM_DATABASE=PhidgetPHSensor - -usb:v06C2p0075* - ID_PRODUCT_FROM_DATABASE=PhidgetGyroscope - -usb:v06C4* - ID_VENDOR_FROM_DATABASE=Bizlink International Corp. - -usb:v06C5* - ID_VENDOR_FROM_DATABASE=Hagenuk, GmbH - -usb:v06C6* - ID_VENDOR_FROM_DATABASE=Infowave Software, Inc. - -usb:v06C8* - ID_VENDOR_FROM_DATABASE=SIIG, Inc. - -usb:v06C9* - ID_VENDOR_FROM_DATABASE=Taxan (Europe), Ltd - -usb:v06C9p0005* - ID_PRODUCT_FROM_DATABASE=Monitor Control - -usb:v06C9p0007* - ID_PRODUCT_FROM_DATABASE=Monitor Control - -usb:v06C9p0009* - ID_PRODUCT_FROM_DATABASE=Monitor Control - -usb:v06CA* - ID_VENDOR_FROM_DATABASE=Newer Technology, Inc. - -usb:v06CB* - ID_VENDOR_FROM_DATABASE=Synaptics, Inc. - -usb:v06CBp0001* - ID_PRODUCT_FROM_DATABASE=TouchPad - -usb:v06CBp0002* - ID_PRODUCT_FROM_DATABASE=Integrated TouchPad - -usb:v06CBp0003* - ID_PRODUCT_FROM_DATABASE=cPad - -usb:v06CBp0005* - ID_PRODUCT_FROM_DATABASE=Touchpad/FPS - -usb:v06CBp0006* - ID_PRODUCT_FROM_DATABASE=TouchScreen - -usb:v06CBp0007* - ID_PRODUCT_FROM_DATABASE=USB Styk - -usb:v06CBp0008* - ID_PRODUCT_FROM_DATABASE=WheelPad - -usb:v06CBp0009* - ID_PRODUCT_FROM_DATABASE=Composite TouchPad and TrackPoint - -usb:v06CBp000E* - ID_PRODUCT_FROM_DATABASE=HID Device - -usb:v06CBp0010* - ID_PRODUCT_FROM_DATABASE=Wireless TouchPad - -usb:v06CBp0013* - ID_PRODUCT_FROM_DATABASE=DisplayPad - -usb:v06CC* - ID_VENDOR_FROM_DATABASE=Terayon Communication Systems - -usb:v06CCp0101* - ID_PRODUCT_FROM_DATABASE=Cable Modem - -usb:v06CCp0102* - ID_PRODUCT_FROM_DATABASE=Cable Modem - -usb:v06CCp0103* - ID_PRODUCT_FROM_DATABASE=Cable Modem - -usb:v06CCp0104* - ID_PRODUCT_FROM_DATABASE=Cable Modem - -usb:v06CCp0304* - ID_PRODUCT_FROM_DATABASE=Cable Modem - -usb:v06CD* - ID_VENDOR_FROM_DATABASE=Keyspan - -usb:v06CDp0101* - ID_PRODUCT_FROM_DATABASE=USA-28 PDA [no firmware] - -usb:v06CDp0102* - ID_PRODUCT_FROM_DATABASE=USA-28X PDA [no firmware] - -usb:v06CDp0103* - ID_PRODUCT_FROM_DATABASE=USA-19 PDA [no firmware] - -usb:v06CDp0104* - ID_PRODUCT_FROM_DATABASE=PDA [prerenum] - -usb:v06CDp0105* - ID_PRODUCT_FROM_DATABASE=USA-18X PDA [no firmware] - -usb:v06CDp0106* - ID_PRODUCT_FROM_DATABASE=USA-19W PDA [no firmware] - -usb:v06CDp0107* - ID_PRODUCT_FROM_DATABASE=USA-19 PDA - -usb:v06CDp0108* - ID_PRODUCT_FROM_DATABASE=USA-19W PDA - -usb:v06CDp0109* - ID_PRODUCT_FROM_DATABASE=USA-49W serial adapter [no firmware] - -usb:v06CDp010A* - ID_PRODUCT_FROM_DATABASE=USA-49W serial adapter - -usb:v06CDp010B* - ID_PRODUCT_FROM_DATABASE=USA-19Qi serial adapter [no firmware] - -usb:v06CDp010C* - ID_PRODUCT_FROM_DATABASE=USA-19Qi serial adapter - -usb:v06CDp010D* - ID_PRODUCT_FROM_DATABASE=USA-19Q serial Adapter (no firmware) - -usb:v06CDp010E* - ID_PRODUCT_FROM_DATABASE=USA-19Q serial Adapter - -usb:v06CDp010F* - ID_PRODUCT_FROM_DATABASE=USA-28 PDA - -usb:v06CDp0110* - ID_PRODUCT_FROM_DATABASE=USA-28Xb PDA - -usb:v06CDp0111* - ID_PRODUCT_FROM_DATABASE=USA-18 serial Adapter - -usb:v06CDp0112* - ID_PRODUCT_FROM_DATABASE=USA-18X PDA - -usb:v06CDp0113* - ID_PRODUCT_FROM_DATABASE=USA-28Xb PDA [no firmware] - -usb:v06CDp0114* - ID_PRODUCT_FROM_DATABASE=USA-28Xa PDA [no firmware] - -usb:v06CDp0115* - ID_PRODUCT_FROM_DATABASE=USA-28Xa PDA - -usb:v06CDp0116* - ID_PRODUCT_FROM_DATABASE=USA-18XA serial Adapter (no firmware) - -usb:v06CDp0117* - ID_PRODUCT_FROM_DATABASE=USA-18XA serial Adapter - -usb:v06CDp0118* - ID_PRODUCT_FROM_DATABASE=USA-19QW PDA [no firmware] - -usb:v06CDp0119* - ID_PRODUCT_FROM_DATABASE=USA-19QW PDA - -usb:v06CDp011A* - ID_PRODUCT_FROM_DATABASE=USA-49Wlc serial adapter [no firmware] - -usb:v06CDp011B* - ID_PRODUCT_FROM_DATABASE=MPR Serial Preloader (MPRQI) - -usb:v06CDp011C* - ID_PRODUCT_FROM_DATABASE=MPR Serial (MPRQI) - -usb:v06CDp011D* - ID_PRODUCT_FROM_DATABASE=MPR Serial Preloader (MPRQ) - -usb:v06CDp011E* - ID_PRODUCT_FROM_DATABASE=MPR Serial (MPRQ) - -usb:v06CDp0121* - ID_PRODUCT_FROM_DATABASE=USA-19hs serial adapter - -usb:v06CDp012A* - ID_PRODUCT_FROM_DATABASE=USA-49Wlc serial adapter - -usb:v06CDp0201* - ID_PRODUCT_FROM_DATABASE=UIA-10 Digital Media Remote [Cypress AN2131SC] - -usb:v06CDp0202* - ID_PRODUCT_FROM_DATABASE=UIA-11 Digital Media Remote - -usb:v06CE* - ID_VENDOR_FROM_DATABASE=Contec - -usb:v06CEp8311* - ID_PRODUCT_FROM_DATABASE=COM-1(USB)H - -usb:v06CF* - ID_VENDOR_FROM_DATABASE=SpheronVR AG - -usb:v06CFp1010* - ID_PRODUCT_FROM_DATABASE=PanoCam 10 - -usb:v06CFp1012* - ID_PRODUCT_FROM_DATABASE=PanoCam 12/12X - -usb:v06D0* - ID_VENDOR_FROM_DATABASE=LapLink, Inc. - -usb:v06D0p0622* - ID_PRODUCT_FROM_DATABASE=LapLink Gold USB-USB Bridge [net1080] - -usb:v06D1* - ID_VENDOR_FROM_DATABASE=Daewoo Electronics Co., Ltd - -usb:v06D3* - ID_VENDOR_FROM_DATABASE=Mitsubishi Electric Corp. - -usb:v06D3p0380* - ID_PRODUCT_FROM_DATABASE=CP8000D Port - -usb:v06D3p0381* - ID_PRODUCT_FROM_DATABASE=CP770D Port - -usb:v06D3p0385* - ID_PRODUCT_FROM_DATABASE=CP900D Port - -usb:v06D3p0387* - ID_PRODUCT_FROM_DATABASE=CP980D Port - -usb:v06D3p038B* - ID_PRODUCT_FROM_DATABASE=CP3020D Port - -usb:v06D3p038C* - ID_PRODUCT_FROM_DATABASE=CP900DW(ID) Port - -usb:v06D3p0393* - ID_PRODUCT_FROM_DATABASE=CP9500D/DW Port - -usb:v06D3p0394* - ID_PRODUCT_FROM_DATABASE=CP9000D/DW Port - -usb:v06D3p03A1* - ID_PRODUCT_FROM_DATABASE=CP9550D/DW Port - -usb:v06D4* - ID_VENDOR_FROM_DATABASE=Cisco Systems - -usb:v06D5* - ID_VENDOR_FROM_DATABASE=Toshiba - -usb:v06D5p4000* - ID_PRODUCT_FROM_DATABASE=Japanese Keyboard - -usb:v06D6* - ID_VENDOR_FROM_DATABASE=Aashima Technology B.V. - -usb:v06D6p0025* - ID_PRODUCT_FROM_DATABASE=Gamepad - -usb:v06D6p0026* - ID_PRODUCT_FROM_DATABASE=Predator TH 400 Gamepad - -usb:v06D6p002D* - ID_PRODUCT_FROM_DATABASE=Trust PowerC@m 350FT - -usb:v06D6p002E* - ID_PRODUCT_FROM_DATABASE=Trust PowerC@m 350FS - -usb:v06D6p0030* - ID_PRODUCT_FROM_DATABASE=Trust 710 LCD POWERC@M ZOOM - MSD - -usb:v06D6p0031* - ID_PRODUCT_FROM_DATABASE=Trust 610/710 LCD POWERC@M ZOOM - -usb:v06D6p003A* - ID_PRODUCT_FROM_DATABASE=Trust PowerC@m 770Z (mass storage mode) - -usb:v06D6p003B* - ID_PRODUCT_FROM_DATABASE=Trust PowerC@m 770Z (webcam mode) - -usb:v06D6p003C* - ID_PRODUCT_FROM_DATABASE=Trust 910z PowerC@m - -usb:v06D6p003F* - ID_PRODUCT_FROM_DATABASE=Trust 735S POWERC@M ZOOM, WDM DSC Bulk Driver - -usb:v06D6p0050* - ID_PRODUCT_FROM_DATABASE=Trust 738AV LCD PV Digital Camera - -usb:v06D6p0062* - ID_PRODUCT_FROM_DATABASE=TRUST 782AV LCD P. V. Video Capture - -usb:v06D6p0066* - ID_PRODUCT_FROM_DATABASE=TRUST Digital PCTV and Movie Editor - -usb:v06D6p0067* - ID_PRODUCT_FROM_DATABASE=Trust 350FS POWERC@M FLASH - -usb:v06D6p006B* - ID_PRODUCT_FROM_DATABASE=TRUST AUDIO VIDEO EDITOR - -usb:v06D7* - ID_VENDOR_FROM_DATABASE=Network Computing Devices (NCD) - -usb:v06D8* - ID_VENDOR_FROM_DATABASE=Technical Marketing Research, Inc. - -usb:v06DA* - ID_VENDOR_FROM_DATABASE=Phoenixtec Power Co., Ltd - -usb:v06DAp0002* - ID_PRODUCT_FROM_DATABASE=UPS - -usb:v06DAp0003* - ID_PRODUCT_FROM_DATABASE=1300VA UPS - -usb:v06DB* - ID_VENDOR_FROM_DATABASE=Paradyne - -usb:v06DC* - ID_VENDOR_FROM_DATABASE=Foxlink Image Technology Co., Ltd - -usb:v06DCp0012* - ID_PRODUCT_FROM_DATABASE=Scan 1200c Scanner - -usb:v06DCp0014* - ID_PRODUCT_FROM_DATABASE=Prolink Winscan Pro 2448U - -usb:v06DE* - ID_VENDOR_FROM_DATABASE=Heisei Electronics Co., Ltd - -usb:v06E0* - ID_VENDOR_FROM_DATABASE=Multi-Tech Systems, Inc. - -usb:v06E0pF101* - ID_PRODUCT_FROM_DATABASE=MT5634ZBA-USB MultiModemUSB (old firmware) - -usb:v06E0pF103* - ID_PRODUCT_FROM_DATABASE=MT5634MU MultiMobileUSB - -usb:v06E0pF104* - ID_PRODUCT_FROM_DATABASE=MT5634ZBA-USB MultiModemUSB (new firmware) - -usb:v06E0pF107* - ID_PRODUCT_FROM_DATABASE=MT5634ZBA-USB-V92 MultiModemUSB - -usb:v06E1* - ID_VENDOR_FROM_DATABASE=ADS Technologies, Inc. - -usb:v06E1p0008* - ID_PRODUCT_FROM_DATABASE=UBS-10BT Ethernet [klsi] - -usb:v06E1p0009* - ID_PRODUCT_FROM_DATABASE=UBS-10BT Ethernet - -usb:v06E1p0833* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v06E1pA155* - ID_PRODUCT_FROM_DATABASE=FM Radio Receiver/Instant FM Music (RDX-155-EF) - -usb:v06E1pA160* - ID_PRODUCT_FROM_DATABASE=Instant Video-To-Go RDX-160 (no firmware) - -usb:v06E1pA161* - ID_PRODUCT_FROM_DATABASE=Instant Video-To-Go RDX-160 - -usb:v06E1pA190* - ID_PRODUCT_FROM_DATABASE=Instand VCD Capture - -usb:v06E1pA191* - ID_PRODUCT_FROM_DATABASE=Instant VideoXpress - -usb:v06E1pA337* - ID_PRODUCT_FROM_DATABASE=Mini DigitalTV - -usb:v06E1pA701* - ID_PRODUCT_FROM_DATABASE=DVD Xpress - -usb:v06E1pA708* - ID_PRODUCT_FROM_DATABASE=saa7114H video input card (Instant VideoMPX) - -usb:v06E1pB337* - ID_PRODUCT_FROM_DATABASE=Mini DigitalTV - -usb:v06E1pB701* - ID_PRODUCT_FROM_DATABASE=DVD Xpress B - -usb:v06E4* - ID_VENDOR_FROM_DATABASE=Alcatel Microelectronics - -usb:v06E6* - ID_VENDOR_FROM_DATABASE=Tiger Jet Network, Inc. - -usb:v06E6p0200* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6p0201* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6p0202* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6p0203* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6p0210* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6p0211* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6p0212* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6p031C* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6p031D* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6p031E* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6p3200* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6p3201* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6p3202* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6p3203* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6p7200* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6p7210* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6p7250* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6p825C* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6p831C* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6p831D* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6p831E* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pB200* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pB201* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pB202* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pB210* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pB211* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pB212* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pB250* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pB251* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pB252* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pC200* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pC201* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pC202* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pC203* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pC210* - ID_PRODUCT_FROM_DATABASE=Personal PhoneGateway - -usb:v06E6pC211* - ID_PRODUCT_FROM_DATABASE=Personal PhoneGateway - -usb:v06E6pC212* - ID_PRODUCT_FROM_DATABASE=Personal PhoneGateway - -usb:v06E6pC213* - ID_PRODUCT_FROM_DATABASE=PPG Device - -usb:v06E6pC25C* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pC290* - ID_PRODUCT_FROM_DATABASE=PPG Device - -usb:v06E6pC291* - ID_PRODUCT_FROM_DATABASE=PPG Device - -usb:v06E6pC292* - ID_PRODUCT_FROM_DATABASE=PPG Device - -usb:v06E6pC293* - ID_PRODUCT_FROM_DATABASE=Personal PhoneGateway - -usb:v06E6pC31C* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pC39C* - ID_PRODUCT_FROM_DATABASE=Personal PhoneGateway - -usb:v06E6pC39D* - ID_PRODUCT_FROM_DATABASE=PPG Device - -usb:v06E6pC39E* - ID_PRODUCT_FROM_DATABASE=PPG Device - -usb:v06E6pC39F* - ID_PRODUCT_FROM_DATABASE=PPG Device - -usb:v06E6pC700* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pC701* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pC702* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pC703* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pC710* - ID_PRODUCT_FROM_DATABASE=VoIP Combo Device - -usb:v06E6pC711* - ID_PRODUCT_FROM_DATABASE=VoIP Combo - -usb:v06E6pC712* - ID_PRODUCT_FROM_DATABASE=VoIP Combo Device - -usb:v06E6pC713* - ID_PRODUCT_FROM_DATABASE=VoIP Combo Device - -usb:v06E6pCF00* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pCF01* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pCF02* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pCF03* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pD210* - ID_PRODUCT_FROM_DATABASE=Personal PhoneGateway - -usb:v06E6pD211* - ID_PRODUCT_FROM_DATABASE=PPG Device - -usb:v06E6pD212* - ID_PRODUCT_FROM_DATABASE=PPG Device - -usb:v06E6pD213* - ID_PRODUCT_FROM_DATABASE=Personal PhoneGateway - -usb:v06E6pD700* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pD701* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pD702* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pD703* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pD710* - ID_PRODUCT_FROM_DATABASE=VoIP Combo - -usb:v06E6pD711* - ID_PRODUCT_FROM_DATABASE=VoIP Combo Device - -usb:v06E6pD712* - ID_PRODUCT_FROM_DATABASE=VoIP Combo - -usb:v06E6pD713* - ID_PRODUCT_FROM_DATABASE=VoIP Combo - -usb:v06E6pDF00* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pDF01* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pDF02* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pDF03* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pF200* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pF201* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pF202* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pF203* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pF210* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pF250* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06E6pF252* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pF310* - ID_PRODUCT_FROM_DATABASE=Internet Phone - -usb:v06E6pF350* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v06EA* - ID_VENDOR_FROM_DATABASE=Sirius Technologies - -usb:v06EAp0001* - ID_PRODUCT_FROM_DATABASE=NetCom Roadster II 56k - -usb:v06EAp0002* - ID_PRODUCT_FROM_DATABASE=Roadster II 56k - -usb:v06EB* - ID_VENDOR_FROM_DATABASE=PC Expert Tech. Co., Ltd - -usb:v06EF* - ID_VENDOR_FROM_DATABASE=I.A.C. Geometrische Ingenieurs B.V. - -usb:v06F0* - ID_VENDOR_FROM_DATABASE=T.N.C Industrial Co., Ltd - -usb:v06F0pDE01* - ID_PRODUCT_FROM_DATABASE=DualCam Video Camera - -usb:v06F0pDE02* - ID_PRODUCT_FROM_DATABASE=DualCam Still Camera - -usb:v06F1* - ID_VENDOR_FROM_DATABASE=Opcode Systems, Inc. - -usb:v06F1pA011* - ID_PRODUCT_FROM_DATABASE=SonicPort - -usb:v06F1pA021* - ID_PRODUCT_FROM_DATABASE=SonicPort Optical - -usb:v06F2* - ID_VENDOR_FROM_DATABASE=Emine Technology Co. - -usb:v06F2p0011* - ID_PRODUCT_FROM_DATABASE=KVM Switch Keyboard - -usb:v06F6* - ID_VENDOR_FROM_DATABASE=Wintrend Technology Co., Ltd - -usb:v06F7* - ID_VENDOR_FROM_DATABASE=Wailly Technology Ltd - -usb:v06F7p0003* - ID_PRODUCT_FROM_DATABASE=USB->Din 4 Adaptor - -usb:v06F8* - ID_VENDOR_FROM_DATABASE=Guillemot Corp. - -usb:v06F8p3002* - ID_PRODUCT_FROM_DATABASE=Hercules Blog Webcam - -usb:v06F8p3004* - ID_PRODUCT_FROM_DATABASE=Hercules Classic Silver - -usb:v06F8p3005* - ID_PRODUCT_FROM_DATABASE=Hercules Dualpix Exchange - -usb:v06F8p3007* - ID_PRODUCT_FROM_DATABASE=Hercules Dualpix Chat and Show - -usb:v06F8p3020* - ID_PRODUCT_FROM_DATABASE=Hercules Webcam EC300 - -usb:v06F8pA300* - ID_PRODUCT_FROM_DATABASE=Dual Analog Leader GamePad - -usb:v06F8pB000* - ID_PRODUCT_FROM_DATABASE=Hercules DJ Console - -usb:v06F8pC000* - ID_PRODUCT_FROM_DATABASE=Hercules Muse Pocket - -usb:v06F8pD002* - ID_PRODUCT_FROM_DATABASE=Hercules DJ Console - -usb:v06F8pE000* - ID_PRODUCT_FROM_DATABASE=HWGUSB2-54 WLAN - -usb:v06F8pE010* - ID_PRODUCT_FROM_DATABASE=HWGUSB2-54-LB - -usb:v06F8pE020* - ID_PRODUCT_FROM_DATABASE=HWGUSB2-54V2-AP - -usb:v06F8pE031* - ID_PRODUCT_FROM_DATABASE=Hercules HWNUm-300 Wireless N mini [Realtek RTL8191SU] - -usb:v06F8pE032* - ID_PRODUCT_FROM_DATABASE=HWGUm-54 [Hercules Wireless G Ultra Mini Key] - -usb:v06F8pE033* - ID_PRODUCT_FROM_DATABASE=Hercules HWNUp-150 802.11n Wireless N Pico [Realtek RTL8188CUS] - -usb:v06F9* - ID_VENDOR_FROM_DATABASE=ASYST electronic d.o.o. - -usb:v06FA* - ID_VENDOR_FROM_DATABASE=HSD S.r.L - -usb:v06FC* - ID_VENDOR_FROM_DATABASE=Motorola Semiconductor Products Sector - -usb:v06FD* - ID_VENDOR_FROM_DATABASE=Boston Acoustics - -usb:v06FDp0101* - ID_PRODUCT_FROM_DATABASE=Audio Device - -usb:v06FDp0102* - ID_PRODUCT_FROM_DATABASE=Audio Device - -usb:v06FDp0201* - ID_PRODUCT_FROM_DATABASE=2-piece Audio Device - -usb:v06FE* - ID_VENDOR_FROM_DATABASE=Gallant Computer, Inc. - -usb:v0701* - ID_VENDOR_FROM_DATABASE=Supercomal Wire & Cable SDN. BHD. - -usb:v0703* - ID_VENDOR_FROM_DATABASE=Bvtech Industry, Inc. - -usb:v0705* - ID_VENDOR_FROM_DATABASE=NKK Corp. - -usb:v0706* - ID_VENDOR_FROM_DATABASE=Ariel Corp. - -usb:v0707* - ID_VENDOR_FROM_DATABASE=Standard Microsystems Corp. - -usb:v0707p0100* - ID_PRODUCT_FROM_DATABASE=2202 Ethernet [klsi] - -usb:v0707p0200* - ID_PRODUCT_FROM_DATABASE=2202 Ethernet [pegasus] - -usb:v0707p0201* - ID_PRODUCT_FROM_DATABASE=EZ Connect USB Ethernet - -usb:v0707pEE04* - ID_PRODUCT_FROM_DATABASE=SMCWUSB32 802.11b Wireless LAN Card - -usb:v0707pEE06* - ID_PRODUCT_FROM_DATABASE=SMC2862W-G v1 EZ Connect 802.11g Adapter [Intersil ISL3886] - -usb:v0707pEE13* - ID_PRODUCT_FROM_DATABASE=SMC2862W-G v2 EZ Connect 802.11g Adapter [Intersil ISL3887] - -usb:v0708* - ID_VENDOR_FROM_DATABASE=Putercom Co., Ltd - -usb:v0708p047E* - ID_PRODUCT_FROM_DATABASE=USB-1284 BRIDGE - -usb:v0709* - ID_VENDOR_FROM_DATABASE=Silicon Systems, Ltd (SSL) - -usb:v070A* - ID_VENDOR_FROM_DATABASE=Oki Electric Industry Co., Ltd - -usb:v070Ap4002* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v070Ap4003* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v070D* - ID_VENDOR_FROM_DATABASE=Comoss Electronic Co., Ltd - -usb:v070E* - ID_VENDOR_FROM_DATABASE=Excel Cell Electronic Co., Ltd - -usb:v0710* - ID_VENDOR_FROM_DATABASE=Connect Tech, Inc. - -usb:v0710p0001* - ID_PRODUCT_FROM_DATABASE=WhiteHeat (fake ID) - -usb:v0710p8001* - ID_PRODUCT_FROM_DATABASE=WhiteHeat - -usb:v0711* - ID_VENDOR_FROM_DATABASE=Magic Control Technology Corp. - -usb:v0711p0100* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v0711p0180* - ID_PRODUCT_FROM_DATABASE=IRXpress Infrared Device - -usb:v0711p0181* - ID_PRODUCT_FROM_DATABASE=IRXpress Infrared Device - -usb:v0711p0200* - ID_PRODUCT_FROM_DATABASE=BAY-3U1S1P Serial Port - -usb:v0711p0210* - ID_PRODUCT_FROM_DATABASE=MCT1S Serial Port - -usb:v0711p0230* - ID_PRODUCT_FROM_DATABASE=MCT-232 Serial Port - -usb:v0711p0231* - ID_PRODUCT_FROM_DATABASE=PS/2 Mouse Port - -usb:v0711p0232* - ID_PRODUCT_FROM_DATABASE=Serial On Port - -usb:v0711p0240* - ID_PRODUCT_FROM_DATABASE=PS/2 to USB Converter - -usb:v0711p0300* - ID_PRODUCT_FROM_DATABASE=BAY-3U1S1P Parallel Port - -usb:v0711p0302* - ID_PRODUCT_FROM_DATABASE=Parallel Port - -usb:v0711p0900* - ID_PRODUCT_FROM_DATABASE=SVGA Adapter - -usb:v0711p5001* - ID_PRODUCT_FROM_DATABASE=Trigger UV-002BD[Startech USBVGAE] - -usb:v0711p5100* - ID_PRODUCT_FROM_DATABASE=Magic Control Technology Corp. (USB2VGA dongle) - -usb:v0713* - ID_VENDOR_FROM_DATABASE=Interval Research Corp. - -usb:v0714* - ID_VENDOR_FROM_DATABASE=NewMotion, Inc. - -usb:v0714p0003* - ID_PRODUCT_FROM_DATABASE=ADB to USB convertor - -usb:v0717* - ID_VENDOR_FROM_DATABASE=ZNK Corp. - -usb:v0718* - ID_VENDOR_FROM_DATABASE=Imation Corp. - -usb:v0718p0002* - ID_PRODUCT_FROM_DATABASE=SuperDisk 120MB - -usb:v0718p0003* - ID_PRODUCT_FROM_DATABASE=SuperDisk 120MB (Authenticated) - -usb:v0718p0060* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v0718p0061* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v0718p0062* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v0718p0063* - ID_PRODUCT_FROM_DATABASE=Swivel Flash Drive - -usb:v0718p0064* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v0718p0065* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v0718p0066* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v0718p0067* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v0718p0068* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v0718p0084* - ID_PRODUCT_FROM_DATABASE=Flash Drive Mini - -usb:v0718p043C* - ID_PRODUCT_FROM_DATABASE=Flash drive 16GB [Nano Pro] - -usb:v0718p0582* - ID_PRODUCT_FROM_DATABASE=Revo Flash Drive - -usb:v0718p0622* - ID_PRODUCT_FROM_DATABASE=TDK Trans-It 4GB - -usb:v0718p0624* - ID_PRODUCT_FROM_DATABASE=TDK Trans-It 16GB - -usb:v0718p1120* - ID_PRODUCT_FROM_DATABASE=RDX External dock (redbud) - -usb:v0718pD000* - ID_PRODUCT_FROM_DATABASE=Disc Stakka CD/DVD Manager - -usb:v0719* - ID_VENDOR_FROM_DATABASE=Tremon Enterprises Co., Ltd - -usb:v071B* - ID_VENDOR_FROM_DATABASE=Domain Technologies, Inc. - -usb:v071Bp0002* - ID_PRODUCT_FROM_DATABASE=DTI-56362-USB Digital Interface Unit - -usb:v071Bp0101* - ID_PRODUCT_FROM_DATABASE=Audio4-USB DSP Data Acquisition Unit - -usb:v071Bp0201* - ID_PRODUCT_FROM_DATABASE=Audio4-5410 DSP Data Acquisition Unit - -usb:v071Bp0301* - ID_PRODUCT_FROM_DATABASE=SB-USB JTAG Emulator - -usb:v071Bp3203* - ID_PRODUCT_FROM_DATABASE=Rockchip Media Player - -usb:v071Bp32BB* - ID_PRODUCT_FROM_DATABASE=Music Mediatouch - -usb:v071C* - ID_VENDOR_FROM_DATABASE=Xionics Document Technologies, Inc. - -usb:v071D* - ID_VENDOR_FROM_DATABASE=Eicon Networks Corp. - -usb:v071Dp1000* - ID_PRODUCT_FROM_DATABASE=Diva ISDN TA - -usb:v071Dp1003* - ID_PRODUCT_FROM_DATABASE=Diva - -usb:v071Dp2000* - ID_PRODUCT_FROM_DATABASE=Teledat Surf - -usb:v071E* - ID_VENDOR_FROM_DATABASE=Ariston Technologies - -usb:v0723* - ID_VENDOR_FROM_DATABASE=Centillium Communications Corp. - -usb:v0723p0002* - ID_PRODUCT_FROM_DATABASE=Palladia 300/400 Adsl Modem - -usb:v0726* - ID_VENDOR_FROM_DATABASE=Vanguard International Semiconductor-America - -usb:v0729* - ID_VENDOR_FROM_DATABASE=Amitm - -usb:v0729p1000* - ID_PRODUCT_FROM_DATABASE=USC-1000 Serial Port - -usb:v072E* - ID_VENDOR_FROM_DATABASE=Sunix Co., Ltd - -usb:v072F* - ID_VENDOR_FROM_DATABASE=Advanced Card Systems, Ltd - -usb:v072Fp0001* - ID_PRODUCT_FROM_DATABASE=AC1030-based SmartCard Reader - -usb:v072Fp0008* - ID_PRODUCT_FROM_DATABASE=ACR 80 Smart Card Reader - -usb:v072Fp1000* - ID_PRODUCT_FROM_DATABASE=PLDT Drive - -usb:v072Fp1001* - ID_PRODUCT_FROM_DATABASE=PLDT Drive - -usb:v072Fp8002* - ID_PRODUCT_FROM_DATABASE=AET63 BioTRUSTKey - -usb:v072Fp8003* - ID_PRODUCT_FROM_DATABASE=ACR120 - -usb:v072Fp8103* - ID_PRODUCT_FROM_DATABASE=ACR120 - -usb:v072Fp9000* - ID_PRODUCT_FROM_DATABASE=ACR38 AC1038-based Smart Card Reader - -usb:v072Fp90CC* - ID_PRODUCT_FROM_DATABASE=ACR38 SmartCard Reader - -usb:v072Fp90CF* - ID_PRODUCT_FROM_DATABASE=ACR38 SAM Smart Card Reader - -usb:v072Fp90D0* - ID_PRODUCT_FROM_DATABASE=PertoSmart EMV - Card Reader - -usb:v0731* - ID_VENDOR_FROM_DATABASE=Susteen, Inc. - -usb:v0731p0528* - ID_PRODUCT_FROM_DATABASE=SonyEricsson DCU-11 Cable - -usb:v0732* - ID_VENDOR_FROM_DATABASE=Goldfull Electronics & Telecommunications Corp. - -usb:v0733* - ID_VENDOR_FROM_DATABASE=ViewQuest Technologies, Inc. - -usb:v0733p0101* - ID_PRODUCT_FROM_DATABASE=Digital Video Camera - -usb:v0733p0110* - ID_PRODUCT_FROM_DATABASE=VQ110 Video Camera - -usb:v0733p0401* - ID_PRODUCT_FROM_DATABASE=CS330 Webcam - -usb:v0733p0402* - ID_PRODUCT_FROM_DATABASE=M-318B Webcam - -usb:v0733p0430* - ID_PRODUCT_FROM_DATABASE=Intel Pro Share Webcam - -usb:v0733p0630* - ID_PRODUCT_FROM_DATABASE=VQ630 Dual Mode Digital Camera(Bulk) - -usb:v0733p0631* - ID_PRODUCT_FROM_DATABASE=Hercules Dualpix - -usb:v0733p0780* - ID_PRODUCT_FROM_DATABASE=Smart Cam Deluxe(composite) - -usb:v0733p1310* - ID_PRODUCT_FROM_DATABASE=Epsilon 1.3/Jenoptik JD C1.3/UMAX AstraPix 470 - -usb:v0733p1311* - ID_PRODUCT_FROM_DATABASE=Digital Dream Epsilon 1.3 - -usb:v0733p1314* - ID_PRODUCT_FROM_DATABASE=Mercury 2.1MEG Deluxe Classic Cam - -usb:v0733p2211* - ID_PRODUCT_FROM_DATABASE=Jenoptik jdc 21 LCD Camera - -usb:v0733p2221* - ID_PRODUCT_FROM_DATABASE=Mercury Digital Pro 3.1p - -usb:v0733p3261* - ID_PRODUCT_FROM_DATABASE=Concord 3045 spca536a Camera - -usb:v0733p3281* - ID_PRODUCT_FROM_DATABASE=Cyberpix S550V - -usb:v0734* - ID_VENDOR_FROM_DATABASE=Lasat Communications A/S - -usb:v0734p0001* - ID_PRODUCT_FROM_DATABASE=560V Modem - -usb:v0734p0002* - ID_PRODUCT_FROM_DATABASE=Lasat 560V Modem - -usb:v0734p043A* - ID_PRODUCT_FROM_DATABASE=DVS Audio - -usb:v0734p043B* - ID_PRODUCT_FROM_DATABASE=3DeMon USB Capture - -usb:v0735* - ID_VENDOR_FROM_DATABASE=Asuscom Network - -usb:v0735p2100* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter - -usb:v0735p2101* - ID_PRODUCT_FROM_DATABASE=ISDN Adapter - -usb:v0735p6694* - ID_PRODUCT_FROM_DATABASE=ISDNlink 128K - -usb:v0735pC541* - ID_PRODUCT_FROM_DATABASE=ISDN TA 280 - -usb:v0736* - ID_VENDOR_FROM_DATABASE=Lorom Industrial Co., Ltd - -usb:v0738* - ID_VENDOR_FROM_DATABASE=Mad Catz, Inc. - -usb:v0738p4507* - ID_PRODUCT_FROM_DATABASE=XBox Device - -usb:v0738p4516* - ID_PRODUCT_FROM_DATABASE=XBox Device - -usb:v0738p4520* - ID_PRODUCT_FROM_DATABASE=XBox Device - -usb:v0738p4526* - ID_PRODUCT_FROM_DATABASE=XBox Device - -usb:v0738p4536* - ID_PRODUCT_FROM_DATABASE=XBox Device - -usb:v0738p4540* - ID_PRODUCT_FROM_DATABASE=XBox Device - -usb:v0738p4556* - ID_PRODUCT_FROM_DATABASE=XBox Device - -usb:v0738p4566* - ID_PRODUCT_FROM_DATABASE=XBox Device - -usb:v0738p4576* - ID_PRODUCT_FROM_DATABASE=XBox Device - -usb:v0738p4586* - ID_PRODUCT_FROM_DATABASE=XBox Device - -usb:v0738p4588* - ID_PRODUCT_FROM_DATABASE=XBox Device - -usb:v0738p8818* - ID_PRODUCT_FROM_DATABASE=Street Fighter IV Arcade FightStick (PS3) - -usb:v073A* - ID_VENDOR_FROM_DATABASE=Chaplet Systems, Inc. - -usb:v073Ap2230* - ID_PRODUCT_FROM_DATABASE=infrared dongle for remote - -usb:v073B* - ID_VENDOR_FROM_DATABASE=Suncom Technologies - -usb:v073C* - ID_VENDOR_FROM_DATABASE=Industrial Electronic Engineers, Inc. - -usb:v073Cp0305* - ID_PRODUCT_FROM_DATABASE=Pole Display (PC305-3415 2 x 20 Line Display) - -usb:v073Cp0322* - ID_PRODUCT_FROM_DATABASE=Pole Display (PC322-3415 2 x 20 Line Display) - -usb:v073Cp0324* - ID_PRODUCT_FROM_DATABASE=Pole Display (LB324-USB 4 x 20 Line Display) - -usb:v073Cp0330* - ID_PRODUCT_FROM_DATABASE=Pole Display (P330-3415 2 x 20 Line Display) - -usb:v073Cp0424* - ID_PRODUCT_FROM_DATABASE=Pole Display (SP324-4415 4 x 20 Line Display) - -usb:v073Cp0450* - ID_PRODUCT_FROM_DATABASE=Pole Display (L450-USB Graphic Line Display) - -usb:v073Cp0505* - ID_PRODUCT_FROM_DATABASE=Pole Display (SPC505-3415 2 x 20 Line Display) - -usb:v073Cp0522* - ID_PRODUCT_FROM_DATABASE=Pole Display (SPC522-3415 2 x 20 Line Display) - -usb:v073Cp0624* - ID_PRODUCT_FROM_DATABASE=Pole Display (SP324-3415 4 x 20 Line Display) - -usb:v073D* - ID_VENDOR_FROM_DATABASE=Eutron S.p.a. - -usb:v073Dp0005* - ID_PRODUCT_FROM_DATABASE=Crypto Token - -usb:v073Dp0007* - ID_PRODUCT_FROM_DATABASE=CryptoIdentity CCID - -usb:v073Dp0025* - ID_PRODUCT_FROM_DATABASE=SmartKey 3 - -usb:v073Dp0C00* - ID_PRODUCT_FROM_DATABASE=Pocket Reader - -usb:v073Dp0D00* - ID_PRODUCT_FROM_DATABASE=StarSign Bio Token 3.0 EU - -usb:v073E* - ID_VENDOR_FROM_DATABASE=NEC, Inc. - -usb:v073Ep0301* - ID_PRODUCT_FROM_DATABASE=Game Pad - -usb:v0745* - ID_VENDOR_FROM_DATABASE=Syntech Information Co., Ltd - -usb:v0746* - ID_VENDOR_FROM_DATABASE=Onkyo Corp. - -usb:v0746p5500* - ID_PRODUCT_FROM_DATABASE=SE-U55 Audio Device - -usb:v0747* - ID_VENDOR_FROM_DATABASE=Labway Corp. - -usb:v0748* - ID_VENDOR_FROM_DATABASE=Strong Man Enterprise Co., Ltd - -usb:v0749* - ID_VENDOR_FROM_DATABASE=EVer Electronics Corp. - -usb:v074A* - ID_VENDOR_FROM_DATABASE=Ming Fortune Industry Co., Ltd - -usb:v074B* - ID_VENDOR_FROM_DATABASE=Polestar Tech. Corp. - -usb:v074C* - ID_VENDOR_FROM_DATABASE=C-C-C Group PLC - -usb:v074D* - ID_VENDOR_FROM_DATABASE=Micronas GmbH - -usb:v074Dp3553* - ID_PRODUCT_FROM_DATABASE=Composite USB-Device - -usb:v074Dp3554* - ID_PRODUCT_FROM_DATABASE=Composite USB-Device - -usb:v074Dp3556* - ID_PRODUCT_FROM_DATABASE=Composite USB-Device - -usb:v074E* - ID_VENDOR_FROM_DATABASE=Digital Stream Corp. - -usb:v074Ep0001* - ID_PRODUCT_FROM_DATABASE=PS/2 Adapter - -usb:v074Ep0002* - ID_PRODUCT_FROM_DATABASE=PS/2 Adapter - -usb:v0755* - ID_VENDOR_FROM_DATABASE=Aureal Semiconductor - -usb:v0757* - ID_VENDOR_FROM_DATABASE=Network Technologies, Inc. - -usb:v075B* - ID_VENDOR_FROM_DATABASE=Sophisticated Circuits, Inc. - -usb:v075Bp0001* - ID_PRODUCT_FROM_DATABASE=Kick-off! Watchdog - -usb:v0763* - ID_VENDOR_FROM_DATABASE=Midiman - -usb:v0763p0115* - ID_PRODUCT_FROM_DATABASE=O2 / KeyRig 25 - -usb:v0763p0117* - ID_PRODUCT_FROM_DATABASE=Trigger Finger - -usb:v0763p0119* - ID_PRODUCT_FROM_DATABASE=MidAir - -usb:v0763p0150* - ID_PRODUCT_FROM_DATABASE=M-Audio Uno - -usb:v0763p0160* - ID_PRODUCT_FROM_DATABASE=M-Audio 1x1 - -usb:v0763p0192* - ID_PRODUCT_FROM_DATABASE=M-Audio Keystation 88es - -usb:v0763p0193* - ID_PRODUCT_FROM_DATABASE=ProKeys 88 - -usb:v0763p0194* - ID_PRODUCT_FROM_DATABASE=ProKeys 88sx - -usb:v0763p0195* - ID_PRODUCT_FROM_DATABASE=Oxygen 8 v2 - -usb:v0763p0196* - ID_PRODUCT_FROM_DATABASE=Oxygen 49 - -usb:v0763p0197* - ID_PRODUCT_FROM_DATABASE=Oxygen 61 - -usb:v0763p0198* - ID_PRODUCT_FROM_DATABASE=Axiom 25 - -usb:v0763p0199* - ID_PRODUCT_FROM_DATABASE=Axiom 49 - -usb:v0763p019A* - ID_PRODUCT_FROM_DATABASE=Axiom 61 - -usb:v0763p019B* - ID_PRODUCT_FROM_DATABASE=KeyRig 49 - -usb:v0763p019C* - ID_PRODUCT_FROM_DATABASE=KeyStudio - -usb:v0763p1001* - ID_PRODUCT_FROM_DATABASE=MidiSport 2x2 - -usb:v0763p1002* - ID_PRODUCT_FROM_DATABASE=MidiSport 2x2 - -usb:v0763p1003* - ID_PRODUCT_FROM_DATABASE=MidiSport 2x2 - -usb:v0763p1010* - ID_PRODUCT_FROM_DATABASE=MidiSport 1x1 - -usb:v0763p1011* - ID_PRODUCT_FROM_DATABASE=MidiSport 1x1 - -usb:v0763p1014* - ID_PRODUCT_FROM_DATABASE=M-Audio Keystation Loader - -usb:v0763p1015* - ID_PRODUCT_FROM_DATABASE=M-Audio Keystation - -usb:v0763p1020* - ID_PRODUCT_FROM_DATABASE=Midisport 4x4 - -usb:v0763p1021* - ID_PRODUCT_FROM_DATABASE=MidiSport 4x4 - -usb:v0763p1030* - ID_PRODUCT_FROM_DATABASE=Midisport 8x8 - -usb:v0763p1031* - ID_PRODUCT_FROM_DATABASE=MidiSport 8x8/s Loader - -usb:v0763p1033* - ID_PRODUCT_FROM_DATABASE=MidiSport 8x8/s - -usb:v0763p1040* - ID_PRODUCT_FROM_DATABASE=M-Audio MidiSport 2x4 Loader - -usb:v0763p1041* - ID_PRODUCT_FROM_DATABASE=M-Audio MidiSport 2x4 - -usb:v0763p1110* - ID_PRODUCT_FROM_DATABASE=MidiSport 1x1 - -usb:v0763p2001* - ID_PRODUCT_FROM_DATABASE=M Audio Quattro - -usb:v0763p2002* - ID_PRODUCT_FROM_DATABASE=M Audio Duo - -usb:v0763p2003* - ID_PRODUCT_FROM_DATABASE=M Audio AudioPhile - -usb:v0763p2004* - ID_PRODUCT_FROM_DATABASE=M-Audio MobilePre - -usb:v0763p2006* - ID_PRODUCT_FROM_DATABASE=M-Audio Transit - -usb:v0763p2007* - ID_PRODUCT_FROM_DATABASE=M-Audio Sonica Theater - -usb:v0763p2008* - ID_PRODUCT_FROM_DATABASE=M-Audio Ozone - -usb:v0763p200D* - ID_PRODUCT_FROM_DATABASE=M-Audio OmniStudio - -usb:v0763p200F* - ID_PRODUCT_FROM_DATABASE=M-Audio MobilePre - -usb:v0763p2010* - ID_PRODUCT_FROM_DATABASE=M-Audio Fast Track - -usb:v0763p2012* - ID_PRODUCT_FROM_DATABASE=M-Audio Fast Track Pro - -usb:v0763p2013* - ID_PRODUCT_FROM_DATABASE=M-Audio JamLab - -usb:v0763p2015* - ID_PRODUCT_FROM_DATABASE=M-Audio RunTime DFU - -usb:v0763p2016* - ID_PRODUCT_FROM_DATABASE=M-Audio RunTime DFU - -usb:v0763p2019* - ID_PRODUCT_FROM_DATABASE=M-Audio Ozone Academic - -usb:v0763p201A* - ID_PRODUCT_FROM_DATABASE=M-Audio Micro - -usb:v0763p201B* - ID_PRODUCT_FROM_DATABASE=M-Audio RunTime DFU - -usb:v0763p201D* - ID_PRODUCT_FROM_DATABASE=M-Audio Producer - -usb:v0763p2024* - ID_PRODUCT_FROM_DATABASE=M-Audio Fast Track MKII - -usb:v0763p2080* - ID_PRODUCT_FROM_DATABASE=M-Audio RunTime DFU - -usb:v0763p2081* - ID_PRODUCT_FROM_DATABASE=M-Audio RunTime DFU / Fast Track Ultra 8R - -usb:v0763p2803* - ID_PRODUCT_FROM_DATABASE=M-Audio Audiophile DFU - -usb:v0763p2804* - ID_PRODUCT_FROM_DATABASE=M-Audio MobilePre DFU - -usb:v0763p2806* - ID_PRODUCT_FROM_DATABASE=M-Audio Transit DFU - -usb:v0763p2815* - ID_PRODUCT_FROM_DATABASE=M-Audio DFU - -usb:v0763p2816* - ID_PRODUCT_FROM_DATABASE=M-Audio DFU - -usb:v0763p281B* - ID_PRODUCT_FROM_DATABASE=M-Audio DFU - -usb:v0763p2880* - ID_PRODUCT_FROM_DATABASE=M-Audio DFU - -usb:v0763p2881* - ID_PRODUCT_FROM_DATABASE=M-Audio DFU - -usb:v0764* - ID_VENDOR_FROM_DATABASE=Cyber Power System, Inc. - -usb:v0764p0005* - ID_PRODUCT_FROM_DATABASE=Cyber Power UPS - -usb:v0764p0501* - ID_PRODUCT_FROM_DATABASE=CP1500 AVR UPS - -usb:v0765* - ID_VENDOR_FROM_DATABASE=X-Rite, Inc. - -usb:v0765p5001* - ID_PRODUCT_FROM_DATABASE=Huey PRO Colorimeter - -usb:v0765pD094* - ID_PRODUCT_FROM_DATABASE=X-Rite DTP94 [Quato Silver Haze Pro] - -usb:v0766* - ID_VENDOR_FROM_DATABASE=Jess-Link Products Co., Ltd - -usb:v0766p001B* - ID_PRODUCT_FROM_DATABASE=Packard Bell Go - -usb:v0766p0204* - ID_PRODUCT_FROM_DATABASE=TopSpeed Cyberlink Remote Control - -usb:v0767* - ID_VENDOR_FROM_DATABASE=Tokheim Corp. - -usb:v0768* - ID_VENDOR_FROM_DATABASE=Camtel Technology Corp. - -usb:v0768p0006* - ID_PRODUCT_FROM_DATABASE=Camtel Technology USB TV Genie Pro FM Model TVB330 - -usb:v0768p0023* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v0769* - ID_VENDOR_FROM_DATABASE=Surecom Technology Corp. - -usb:v0769p11F2* - ID_PRODUCT_FROM_DATABASE=EP-9001-g 802.11g 54M WLAN Adapter - -usb:v0769p11F3* - ID_PRODUCT_FROM_DATABASE=RT2570 - -usb:v0769p11F7* - ID_PRODUCT_FROM_DATABASE=802.11g 54M WLAN Adapter - -usb:v0769p31F3* - ID_PRODUCT_FROM_DATABASE=RT2573 - -usb:v076A* - ID_VENDOR_FROM_DATABASE=Smart Technology Enablers, Inc. - -usb:v076B* - ID_VENDOR_FROM_DATABASE=OmniKey AG - -usb:v076Bp0596* - ID_PRODUCT_FROM_DATABASE=CardMan 2020 - -usb:v076Bp1021* - ID_PRODUCT_FROM_DATABASE=CardMan 1021 - -usb:v076Bp1221* - ID_PRODUCT_FROM_DATABASE=CardMan 1221 - -usb:v076Bp1784* - ID_PRODUCT_FROM_DATABASE=CardMan 6020 - -usb:v076Bp3021* - ID_PRODUCT_FROM_DATABASE=CardMan 3121 - -usb:v076Bp3610* - ID_PRODUCT_FROM_DATABASE=CardMan 3620 - -usb:v076Bp3621* - ID_PRODUCT_FROM_DATABASE=CardMan 3621 - -usb:v076Bp3821* - ID_PRODUCT_FROM_DATABASE=CardMan 3821 - -usb:v076Bp4321* - ID_PRODUCT_FROM_DATABASE=CardMan 4321 - -usb:v076Bp5121* - ID_PRODUCT_FROM_DATABASE=CardMan 5121 - -usb:v076Bp5125* - ID_PRODUCT_FROM_DATABASE=CardMan 5125 - -usb:v076Bp6622* - ID_PRODUCT_FROM_DATABASE=CardMan 6121 - -usb:v076BpA011* - ID_PRODUCT_FROM_DATABASE=CCID Smart Card Reader Keyboard - -usb:v076BpA021* - ID_PRODUCT_FROM_DATABASE=CCID Smart Card Reader - -usb:v076BpA022* - ID_PRODUCT_FROM_DATABASE=CardMan Smart@Link - -usb:v076BpC000* - ID_PRODUCT_FROM_DATABASE=CardMan 3x21 CS - -usb:v076BpC001* - ID_PRODUCT_FROM_DATABASE=CardMan 5121 CS - -usb:v076C* - ID_VENDOR_FROM_DATABASE=Partner Tech - -usb:v076D* - ID_VENDOR_FROM_DATABASE=Denso Corp. - -usb:v076E* - ID_VENDOR_FROM_DATABASE=Kuan Tech Enterprise Co., Ltd - -usb:v076F* - ID_VENDOR_FROM_DATABASE=Jhen Vei Electronic Co., Ltd - -usb:v0770* - ID_VENDOR_FROM_DATABASE=Welch Allyn, Inc - Medical Division - -usb:v0771* - ID_VENDOR_FROM_DATABASE=Observator Instruments BV - -usb:v0771p4455* - ID_PRODUCT_FROM_DATABASE=OMC45III - -usb:v0771pAE0F* - ID_PRODUCT_FROM_DATABASE=OMC45III - -usb:v0772* - ID_VENDOR_FROM_DATABASE=Your data Our Care - -usb:v0774* - ID_VENDOR_FROM_DATABASE=AmTRAN Technology Co., Ltd - -usb:v0775* - ID_VENDOR_FROM_DATABASE=Longshine Electronics Corp. - -usb:v0776* - ID_VENDOR_FROM_DATABASE=Inalways Corp. - -usb:v0777* - ID_VENDOR_FROM_DATABASE=Comda Enterprise Corp. - -usb:v0778* - ID_VENDOR_FROM_DATABASE=Volex, Inc. - -usb:v0779* - ID_VENDOR_FROM_DATABASE=Fairchild Semiconductor - -usb:v077A* - ID_VENDOR_FROM_DATABASE=Sankyo Seiki Mfg. Co., Ltd - -usb:v077B* - ID_VENDOR_FROM_DATABASE=Linksys - -usb:v077Bp08BE* - ID_PRODUCT_FROM_DATABASE=BEFCMU10 v4 Cable Modem - -usb:v077Bp2219* - ID_PRODUCT_FROM_DATABASE=WUSB11 V2.6 802.11b Adapter - -usb:v077Bp2226* - ID_PRODUCT_FROM_DATABASE=USB200M 100baseTX Adapter - -usb:v077Bp2227* - ID_PRODUCT_FROM_DATABASE=Network Everywhere NWU11B - -usb:v077C* - ID_VENDOR_FROM_DATABASE=Forward Electronics Co., Ltd - -usb:v077Cp0005* - ID_PRODUCT_FROM_DATABASE=NEC Keyboard - -usb:v077D* - ID_VENDOR_FROM_DATABASE=Griffin Technology - -usb:v077Dp0223* - ID_PRODUCT_FROM_DATABASE=IMic Audio In/Out - -usb:v077Dp0405* - ID_PRODUCT_FROM_DATABASE=iMate, ADB Adapter - -usb:v077Dp0410* - ID_PRODUCT_FROM_DATABASE=PowerMate - -usb:v077Dp041A* - ID_PRODUCT_FROM_DATABASE=PowerWave - -usb:v077Dp04AA* - ID_PRODUCT_FROM_DATABASE=SoundKnob - -usb:v077Dp07AF* - ID_PRODUCT_FROM_DATABASE=iMic - -usb:v077Dp1016* - ID_PRODUCT_FROM_DATABASE=AirClick - -usb:v077Dp627A* - ID_PRODUCT_FROM_DATABASE=Radio SHARK - -usb:v077F* - ID_VENDOR_FROM_DATABASE=Well Excellent & Most Corp. - -usb:v0780* - ID_VENDOR_FROM_DATABASE=Sagem Monetel GmbH - -usb:v0780p1202* - ID_PRODUCT_FROM_DATABASE=ORGA 900 Smart Card Terminal Virtual Com Port - -usb:v0780p1302* - ID_PRODUCT_FROM_DATABASE=ORGA 6000 Smart Card Terminal Virtual Com Port - -usb:v0780p1303* - ID_PRODUCT_FROM_DATABASE=ORGA 6000 Smart Card Terminal USB RNDIS - -usb:v0780pDF55* - ID_PRODUCT_FROM_DATABASE=ORGA 900/6000 Smart Card Terminal DFU - -usb:v0781* - ID_VENDOR_FROM_DATABASE=SanDisk Corp. - -usb:v0781p0001* - ID_PRODUCT_FROM_DATABASE=SDDR-05a ImageMate CompactFlash Reader - -usb:v0781p0002* - ID_PRODUCT_FROM_DATABASE=SDDR-31 ImageMate II CompactFlash Reader - -usb:v0781p0005* - ID_PRODUCT_FROM_DATABASE=SDDR-05b (CF II) ImageMate CompactFlash Reader - -usb:v0781p0100* - ID_PRODUCT_FROM_DATABASE=ImageMate SDDR-12 - -usb:v0781p0200* - ID_PRODUCT_FROM_DATABASE=SDDR-09 (SSFDC) ImageMate SmartMedia Reader [eusb] - -usb:v0781p0400* - ID_PRODUCT_FROM_DATABASE=SecureMate SD/MMC Reader - -usb:v0781p0621* - ID_PRODUCT_FROM_DATABASE=SDDR-86 Imagemate 6-in-1 Reader - -usb:v0781p0720* - ID_PRODUCT_FROM_DATABASE=Sansa C200 series in recovery mode - -usb:v0781p0729* - ID_PRODUCT_FROM_DATABASE=Sansa E200 series in recovery mode - -usb:v0781p0810* - ID_PRODUCT_FROM_DATABASE=SDDR-75 ImageMate CF-SM Reader - -usb:v0781p0830* - ID_PRODUCT_FROM_DATABASE=ImageMate CF/MMC/SD Reader - -usb:v0781p1234* - ID_PRODUCT_FROM_DATABASE=Cruzer Mini Flash Drive - -usb:v0781p5150* - ID_PRODUCT_FROM_DATABASE=SDCZ2 Cruzer Mini Flash Drive (thin) - -usb:v0781p5151* - ID_PRODUCT_FROM_DATABASE=Cruzer Micro Flash Drive - -usb:v0781p5153* - ID_PRODUCT_FROM_DATABASE=Cruzer Flash Drive - -usb:v0781p5204* - ID_PRODUCT_FROM_DATABASE=Cruzer Crossfire - -usb:v0781p5402* - ID_PRODUCT_FROM_DATABASE=U3 Cruzer Micro - -usb:v0781p5406* - ID_PRODUCT_FROM_DATABASE=Cruzer Micro U3 - -usb:v0781p5408* - ID_PRODUCT_FROM_DATABASE=Cruzer Titanium U3 - -usb:v0781p540E* - ID_PRODUCT_FROM_DATABASE=Cruzer Contour Flash Drive - -usb:v0781p5530* - ID_PRODUCT_FROM_DATABASE=Cruzer - -usb:v0781p5567* - ID_PRODUCT_FROM_DATABASE=Cruzer Blade - -usb:v0781p5571* - ID_PRODUCT_FROM_DATABASE=Cruzer Fit - -usb:v0781p5580* - ID_PRODUCT_FROM_DATABASE=SDCZ80 Flash Drive - -usb:v0781p5E10* - ID_PRODUCT_FROM_DATABASE=Encrypted - -usb:v0781p6100* - ID_PRODUCT_FROM_DATABASE=Ultra II SD Plus 2GB - -usb:v0781p7100* - ID_PRODUCT_FROM_DATABASE=Cruzer Mini - -usb:v0781p7101* - ID_PRODUCT_FROM_DATABASE=Pen Flash - -usb:v0781p7102* - ID_PRODUCT_FROM_DATABASE=Cruzer Mini - -usb:v0781p7103* - ID_PRODUCT_FROM_DATABASE=Cruzer Mini - -usb:v0781p7104* - ID_PRODUCT_FROM_DATABASE=Cruzer Micro Mini 256MB Flash Drive - -usb:v0781p7105* - ID_PRODUCT_FROM_DATABASE=Cruzer Mini - -usb:v0781p7106* - ID_PRODUCT_FROM_DATABASE=Cruzer Mini - -usb:v0781p7112* - ID_PRODUCT_FROM_DATABASE=Cruzer Micro 128MB Flash Drive - -usb:v0781p7113* - ID_PRODUCT_FROM_DATABASE=Cruzer Micro 256MB Flash Drive - -usb:v0781p7114* - ID_PRODUCT_FROM_DATABASE=Cruzer Mini - -usb:v0781p7115* - ID_PRODUCT_FROM_DATABASE=Cruzer Mini - -usb:v0781p7301* - ID_PRODUCT_FROM_DATABASE=Sansa e100 series (mtp) - -usb:v0781p7302* - ID_PRODUCT_FROM_DATABASE=Sansa e100 series (msc) - -usb:v0781p7400* - ID_PRODUCT_FROM_DATABASE=Sansa M200 series (mtp) - -usb:v0781p7401* - ID_PRODUCT_FROM_DATABASE=Sansa M200 series (msc) - -usb:v0781p7420* - ID_PRODUCT_FROM_DATABASE=Sansa E200 series (mtp) - -usb:v0781p7421* - ID_PRODUCT_FROM_DATABASE=Sansa E200 Series (msc) - -usb:v0781p7422* - ID_PRODUCT_FROM_DATABASE=Sansa E200 series v2 (mtp) - -usb:v0781p7423* - ID_PRODUCT_FROM_DATABASE=Sansa E200 series v2 (msc) - -usb:v0781p7430* - ID_PRODUCT_FROM_DATABASE=Sansa M200 series - -usb:v0781p7431* - ID_PRODUCT_FROM_DATABASE=Sansa M200 series V4 (msc) - -usb:v0781p7432* - ID_PRODUCT_FROM_DATABASE=Sansa Clip (mtp) - -usb:v0781p7433* - ID_PRODUCT_FROM_DATABASE=Sansa Clip (msc) - -usb:v0781p7434* - ID_PRODUCT_FROM_DATABASE=Sansa Clip V2 (mtp) - -usb:v0781p7435* - ID_PRODUCT_FROM_DATABASE=Sansa Clip V2 (msc) - -usb:v0781p7450* - ID_PRODUCT_FROM_DATABASE=Sansa C250 - -usb:v0781p7451* - ID_PRODUCT_FROM_DATABASE=Sansa C240 - -usb:v0781p7460* - ID_PRODUCT_FROM_DATABASE=Sansa Express - -usb:v0781p7480* - ID_PRODUCT_FROM_DATABASE=Sansa Connect - -usb:v0781p7481* - ID_PRODUCT_FROM_DATABASE=Sansa Connect (in recovery mode) - -usb:v0781p74B0* - ID_PRODUCT_FROM_DATABASE=Sansa View (msc) - -usb:v0781p74B1* - ID_PRODUCT_FROM_DATABASE=Sansa View (mtp) - -usb:v0781p74C0* - ID_PRODUCT_FROM_DATABASE=Sansa Fuze (mtp) - -usb:v0781p74C1* - ID_PRODUCT_FROM_DATABASE=Sansa Fuze (msc) - -usb:v0781p74C2* - ID_PRODUCT_FROM_DATABASE=Sansa Fuze V2 (mtp) - -usb:v0781p74C3* - ID_PRODUCT_FROM_DATABASE=Sansa Fuze V2 (msc) - -usb:v0781p74D0* - ID_PRODUCT_FROM_DATABASE=Sansa Clip+ (mtp) - -usb:v0781p74D1* - ID_PRODUCT_FROM_DATABASE=Sansa Clip+ (msc) - -usb:v0781p8181* - ID_PRODUCT_FROM_DATABASE=Pen Flash - -usb:v0781p8183* - ID_PRODUCT_FROM_DATABASE=Hi-Speed Mass Storage Device - -usb:v0781p8185* - ID_PRODUCT_FROM_DATABASE=SDCZ2 Cruzer Mini Flash Drive (older, thick) - -usb:v0781p8888* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v0781p8889* - ID_PRODUCT_FROM_DATABASE=SDDR-88 Imagemate 8-in-1 Reader - -usb:v0781p8919* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v0781p8989* - ID_PRODUCT_FROM_DATABASE=ImageMate 12-in-1 Reader - -usb:v0781p9191* - ID_PRODUCT_FROM_DATABASE=ImageMate CF - -usb:v0781p9219* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v0781p9292* - ID_PRODUCT_FROM_DATABASE=ImageMate CF Reader/Writer - -usb:v0781p9393* - ID_PRODUCT_FROM_DATABASE=ImageMate SD-MMC - -usb:v0781p9595* - ID_PRODUCT_FROM_DATABASE=ImageMate xD-SM - -usb:v0781p9797* - ID_PRODUCT_FROM_DATABASE=ImageMate MS-PRO - -usb:v0781p9919* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v0781p9999* - ID_PRODUCT_FROM_DATABASE=SDDR-99 5-in-1 Reader - -usb:v0781pA7C1* - ID_PRODUCT_FROM_DATABASE=Storage device (SD card reader) - -usb:v0781pA7E8* - ID_PRODUCT_FROM_DATABASE=SDDR-113 MicroMate SDHC Reader - -usb:v0781pB2B3* - ID_PRODUCT_FROM_DATABASE=SDDR-103 MobileMate SD+ Reader - -usb:v0781pB4B5* - ID_PRODUCT_FROM_DATABASE=SDDR-89 V4 ImageMate 12-in-1 Reader - -usb:v0782* - ID_VENDOR_FROM_DATABASE=Trackerball - -usb:v0783* - ID_VENDOR_FROM_DATABASE=C3PO - -usb:v0783p0003* - ID_PRODUCT_FROM_DATABASE=LTC31 SmartCard Reader - -usb:v0783p0006* - ID_PRODUCT_FROM_DATABASE=LTC31v2 - -usb:v0783p0009* - ID_PRODUCT_FROM_DATABASE=KBR36 - -usb:v0783p0010* - ID_PRODUCT_FROM_DATABASE=LTC32 - -usb:v0784* - ID_VENDOR_FROM_DATABASE=Vivitar, Inc. - -usb:v0784p0100* - ID_PRODUCT_FROM_DATABASE=Vivicam 2655 - -usb:v0784p1310* - ID_PRODUCT_FROM_DATABASE=Vivicam 3305 - -usb:v0784p1688* - ID_PRODUCT_FROM_DATABASE=Vivicam 3665 - -usb:v0784p1689* - ID_PRODUCT_FROM_DATABASE=Gateway DC-M42/Labtec DC-505/Vivitar Vivicam 3705 - -usb:v0784p2620* - ID_PRODUCT_FROM_DATABASE=AOL Photocam Plus - -usb:v0784p2888* - ID_PRODUCT_FROM_DATABASE=Polaroid DC700 - -usb:v0784p3330* - ID_PRODUCT_FROM_DATABASE=Nytec ND-3200 Camera - -usb:v0784p4300* - ID_PRODUCT_FROM_DATABASE=Traveler D1 - -usb:v0784p5260* - ID_PRODUCT_FROM_DATABASE=Werlisa Sport PX 100 / JVC GC-A33 Camera - -usb:v0784p5300* - ID_PRODUCT_FROM_DATABASE=Pretec dc530 - -usb:v0785* - ID_VENDOR_FROM_DATABASE=NTT-ME - -usb:v0785p0001* - ID_PRODUCT_FROM_DATABASE=MN128mini-V ISDN TA - -usb:v0785p0003* - ID_PRODUCT_FROM_DATABASE=MN128mini-J ISDN TA - -usb:v0789* - ID_VENDOR_FROM_DATABASE=Logitec Corp. - -usb:v0789p0026* - ID_PRODUCT_FROM_DATABASE=LHD Device - -usb:v0789p0033* - ID_PRODUCT_FROM_DATABASE=DVD Multi-plus unit LDR-H443SU2 - -usb:v0789p0063* - ID_PRODUCT_FROM_DATABASE=LDR Device - -usb:v0789p0064* - ID_PRODUCT_FROM_DATABASE=LDR-R Device - -usb:v0789p00B3* - ID_PRODUCT_FROM_DATABASE=DVD Multi-plus unit LDR-H443U2 - -usb:v0789p0105* - ID_PRODUCT_FROM_DATABASE=LAN-TX/U1H2 10/100 Ethernet Adapter [pegasus II] - -usb:v0789p010C* - ID_PRODUCT_FROM_DATABASE=Realtek RTL8187 Wireless 802.11g 54Mbps Network Adapter - -usb:v0789p0160* - ID_PRODUCT_FROM_DATABASE=LAN-GTJ/U2A - -usb:v0789p0162* - ID_PRODUCT_FROM_DATABASE=LAN-WN22/U2 Wireless LAN Adapter - -usb:v0789p0163* - ID_PRODUCT_FROM_DATABASE=LAN-WN12/U2 Wireless LAN Adapter - -usb:v0789p0164* - ID_PRODUCT_FROM_DATABASE=LAN-W150/U2M Wireless LAN Adapter - -usb:v0789p0166* - ID_PRODUCT_FROM_DATABASE=LAN-W300N/U2 Wireless LAN Adapter - -usb:v0789p0168* - ID_PRODUCT_FROM_DATABASE=LAN-W150N/U2 Wireless LAN Adapter - -usb:v0789p0170* - ID_PRODUCT_FROM_DATABASE=LAN-W300AN/U2 Wireless LAN Adapter - -usb:v078B* - ID_VENDOR_FROM_DATABASE=Happ Controls, Inc. - -usb:v078Bp0010* - ID_PRODUCT_FROM_DATABASE=Driving UGCI - -usb:v078Bp0020* - ID_PRODUCT_FROM_DATABASE=Flying UGCI - -usb:v078Bp0030* - ID_PRODUCT_FROM_DATABASE=Fighting UGCI - -usb:v078C* - ID_VENDOR_FROM_DATABASE=GTCO/CalComp - -usb:v078Cp0090* - ID_PRODUCT_FROM_DATABASE=Tablet Adapter - -usb:v078Cp0100* - ID_PRODUCT_FROM_DATABASE=Tablet Adapter - -usb:v078Cp0200* - ID_PRODUCT_FROM_DATABASE=Tablet Adapter - -usb:v078Cp0300* - ID_PRODUCT_FROM_DATABASE=Tablet Adapter - -usb:v078Cp0400* - ID_PRODUCT_FROM_DATABASE=Digitizer (Whiteboard) - -usb:v078E* - ID_VENDOR_FROM_DATABASE=Brincom, Inc. - -usb:v0790* - ID_VENDOR_FROM_DATABASE=Pro-Image Manufacturing Co., Ltd - -usb:v0791* - ID_VENDOR_FROM_DATABASE=Copartner Wire and Cable Mfg. Corp. - -usb:v0792* - ID_VENDOR_FROM_DATABASE=Axis Communications AB - -usb:v0793* - ID_VENDOR_FROM_DATABASE=Wha Yu Industrial Co., Ltd - -usb:v0794* - ID_VENDOR_FROM_DATABASE=ABL Electronics Corp. - -usb:v0795* - ID_VENDOR_FROM_DATABASE=RealChip, Inc. - -usb:v0796* - ID_VENDOR_FROM_DATABASE=Certicom Corp. - -usb:v0797* - ID_VENDOR_FROM_DATABASE=Grandtech Semiconductor Corp. - -usb:v0797p6801* - ID_PRODUCT_FROM_DATABASE=Flatbed Scanner - -usb:v0797p6802* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v0797p8001* - ID_PRODUCT_FROM_DATABASE=SmartCam - -usb:v0797p801A* - ID_PRODUCT_FROM_DATABASE=Typhoon StyloCam - -usb:v0797p801C* - ID_PRODUCT_FROM_DATABASE=Meade Binoculars/Camera - -usb:v0797p8901* - ID_PRODUCT_FROM_DATABASE=ScanHex SX-35a - -usb:v0797p8909* - ID_PRODUCT_FROM_DATABASE=ScanHex SX-35b - -usb:v0797p8911* - ID_PRODUCT_FROM_DATABASE=ScanHex SX-35c - -usb:v0798* - ID_VENDOR_FROM_DATABASE=Optelec - -usb:v0798p0001* - ID_PRODUCT_FROM_DATABASE=Braille Voyager - -usb:v0799* - ID_VENDOR_FROM_DATABASE=Altera - -usb:v0799p7651* - ID_PRODUCT_FROM_DATABASE=Programming Unit - -usb:v079B* - ID_VENDOR_FROM_DATABASE=Sagem - -usb:v079Bp0027* - ID_PRODUCT_FROM_DATABASE=USB-Serial Controller - -usb:v079Bp002F* - ID_PRODUCT_FROM_DATABASE=Mobile - -usb:v079Bp0030* - ID_PRODUCT_FROM_DATABASE=Mobile Communication Device - -usb:v079Bp0042* - ID_PRODUCT_FROM_DATABASE=Mobile - -usb:v079Bp004A* - ID_PRODUCT_FROM_DATABASE=XG-760A 802.11bg - -usb:v079Bp004B* - ID_PRODUCT_FROM_DATABASE=Wi-Fi 11g adapter - -usb:v079Bp0056* - ID_PRODUCT_FROM_DATABASE=Agfa AP1100 Photo Printer - -usb:v079Bp005D* - ID_PRODUCT_FROM_DATABASE=Mobile Mass Storage - -usb:v079Bp0062* - ID_PRODUCT_FROM_DATABASE=XG-76NA 802.11bg - -usb:v079Bp0078* - ID_PRODUCT_FROM_DATABASE=Laser Pro Monochrome MFP - -usb:v079D* - ID_VENDOR_FROM_DATABASE=Alfadata Computer Corp. - -usb:v079Dp0201* - ID_PRODUCT_FROM_DATABASE=GamePort Adapter - -usb:v07A1* - ID_VENDOR_FROM_DATABASE=Digicom S.p.A. - -usb:v07A1pD952* - ID_PRODUCT_FROM_DATABASE=Palladio USB V.92 Modem - -usb:v07A2* - ID_VENDOR_FROM_DATABASE=National Technical Systems - -usb:v07A3* - ID_VENDOR_FROM_DATABASE=Onnto Corp. - -usb:v07A4* - ID_VENDOR_FROM_DATABASE=Be, Inc. - -usb:v07A6* - ID_VENDOR_FROM_DATABASE=ADMtek, Inc. - -usb:v07A6p07C2* - ID_PRODUCT_FROM_DATABASE=AN986A Ethernet - -usb:v07A6p0986* - ID_PRODUCT_FROM_DATABASE=AN986 Pegasus Ethernet - -usb:v07A6p8266* - ID_PRODUCT_FROM_DATABASE=Infineon WildCard-USB Wireless LAN Adapter - -usb:v07A6p8511* - ID_PRODUCT_FROM_DATABASE=ADM8511 Pegasus II Ethernet - -usb:v07A6p8513* - ID_PRODUCT_FROM_DATABASE=AN8513 Ethernet - -usb:v07A6p8515* - ID_PRODUCT_FROM_DATABASE=AN8515 Ethernet - -usb:v07AA* - ID_VENDOR_FROM_DATABASE=Corega K.K. - -usb:v07AAp0001* - ID_PRODUCT_FROM_DATABASE=Ether USB-T Ethernet [klsi] - -usb:v07AAp0004* - ID_PRODUCT_FROM_DATABASE=FEther USB-TX Ethernet [pegasus] - -usb:v07AAp000C* - ID_PRODUCT_FROM_DATABASE=WirelessLAN USB-11 - -usb:v07AAp000D* - ID_PRODUCT_FROM_DATABASE=FEther USB-TXS - -usb:v07AAp0011* - ID_PRODUCT_FROM_DATABASE=Wireless LAN USB-11 mini - -usb:v07AAp0012* - ID_PRODUCT_FROM_DATABASE=Stick-11 802.11b Adapter - -usb:v07AAp0017* - ID_PRODUCT_FROM_DATABASE=FEther USB2-TX - -usb:v07AAp0018* - ID_PRODUCT_FROM_DATABASE=Wireless LAN USB-11 mini 2 - -usb:v07AAp001A* - ID_PRODUCT_FROM_DATABASE=ULUSB-11 Key - -usb:v07AAp001C* - ID_PRODUCT_FROM_DATABASE=CG-WLUSB2GTST 802.11g Wireless Adapter [Intersil ISL3887] - -usb:v07AAp002E* - ID_PRODUCT_FROM_DATABASE=CG-WLUSB2GPX [Ralink RT2571W] - -usb:v07AAp002F* - ID_PRODUCT_FROM_DATABASE=CG-WLUSB2GNL - -usb:v07AAp0031* - ID_PRODUCT_FROM_DATABASE=CG-WLUSB2GS 802.11bg [Atheros AR5523] - -usb:v07AAp003C* - ID_PRODUCT_FROM_DATABASE=CG-WLUSB2GNL - -usb:v07AAp003F* - ID_PRODUCT_FROM_DATABASE=CG-WLUSB300AGN - -usb:v07AAp0041* - ID_PRODUCT_FROM_DATABASE=CG-WLUSB300GNS - -usb:v07AAp0042* - ID_PRODUCT_FROM_DATABASE=CG-WLUSB300GNM - -usb:v07AAp0043* - ID_PRODUCT_FROM_DATABASE=CG-WLUSB300N rev A2 [Realtek RTL8192U] - -usb:v07AAp0047* - ID_PRODUCT_FROM_DATABASE=CG-WLUSBNM - -usb:v07AAp0051* - ID_PRODUCT_FROM_DATABASE=CG-WLUSB300NM - -usb:v07AAp7613* - ID_PRODUCT_FROM_DATABASE=Stick-11 V2 802.11b Adapter - -usb:v07AAp9601* - ID_PRODUCT_FROM_DATABASE=FEther USB-TXC - -usb:v07AB* - ID_VENDOR_FROM_DATABASE=Freecom Technologies - -usb:v07ABpFC01* - ID_PRODUCT_FROM_DATABASE=IDE bridge - -usb:v07ABpFC02* - ID_PRODUCT_FROM_DATABASE=Cable II USB-2 - -usb:v07ABpFC03* - ID_PRODUCT_FROM_DATABASE=USB2-IDE IDE bridge - -usb:v07ABpFCD6* - ID_PRODUCT_FROM_DATABASE=Freecom HD Classic - -usb:v07ABpFCF6* - ID_PRODUCT_FROM_DATABASE=DataBar 512 MB - -usb:v07ABpFCF8* - ID_PRODUCT_FROM_DATABASE=Freecom Classic SL Network Drive - -usb:v07ABpFCFE* - ID_PRODUCT_FROM_DATABASE=Hard Drive 80GB - -usb:v07AF* - ID_VENDOR_FROM_DATABASE=Microtech - -usb:v07AFp0004* - ID_PRODUCT_FROM_DATABASE=SCSI-DB25 SCSI Bridge [shuttle] - -usb:v07AFp0005* - ID_PRODUCT_FROM_DATABASE=SCSI-HD50 SCSI Bridge [shuttle] - -usb:v07AFp0006* - ID_PRODUCT_FROM_DATABASE=CameraMate SmartMedia and CompactFlash Card Reader [eusb/shuttle] - -usb:v07AFpFC01* - ID_PRODUCT_FROM_DATABASE=Freecom USB-IDE - -usb:v07B0* - ID_VENDOR_FROM_DATABASE=Trust Technologies - -usb:v07B0p0001* - ID_PRODUCT_FROM_DATABASE=ISDN TA - -usb:v07B0p0002* - ID_PRODUCT_FROM_DATABASE=ISDN TA128 Plus - -usb:v07B0p0003* - ID_PRODUCT_FROM_DATABASE=ISDN TA128 Deluxe - -usb:v07B0p0005* - ID_PRODUCT_FROM_DATABASE=ISDN TA128 SE - -usb:v07B0p0006* - ID_PRODUCT_FROM_DATABASE=ISDN TA128 CE - -usb:v07B0p0007* - ID_PRODUCT_FROM_DATABASE=ISDN TA - -usb:v07B0p0008* - ID_PRODUCT_FROM_DATABASE=ISDN TA - -usb:v07B1* - ID_VENDOR_FROM_DATABASE=IMP, Inc. - -usb:v07B2* - ID_VENDOR_FROM_DATABASE=Motorola BCS, Inc. - -usb:v07B2p0100* - ID_PRODUCT_FROM_DATABASE=SURFboard Voice over IP Cable Modem - -usb:v07B2p0900* - ID_PRODUCT_FROM_DATABASE=SURFboard Gateway - -usb:v07B2p0950* - ID_PRODUCT_FROM_DATABASE=SURFboard SBG950 Gateway - -usb:v07B2p1000* - ID_PRODUCT_FROM_DATABASE=SURFboard SBG1000 Gateway - -usb:v07B2p4100* - ID_PRODUCT_FROM_DATABASE=SurfBoard SB4100 Cable Modem - -usb:v07B2p4200* - ID_PRODUCT_FROM_DATABASE=SurfBoard SB4200 Cable Modem - -usb:v07B2p4210* - ID_PRODUCT_FROM_DATABASE=SurfBoard 4210 Cable Modem - -usb:v07B2p4220* - ID_PRODUCT_FROM_DATABASE=SURFboard SB4220 Cable Modem - -usb:v07B2p4500* - ID_PRODUCT_FROM_DATABASE=CG4500 Communications Gateway - -usb:v07B2p450B* - ID_PRODUCT_FROM_DATABASE=CG4501 Communications Gateway - -usb:v07B2p450E* - ID_PRODUCT_FROM_DATABASE=CG4500E Communications Gateway - -usb:v07B2p5100* - ID_PRODUCT_FROM_DATABASE=SurfBoard SB5100 Cable Modem - -usb:v07B2p5101* - ID_PRODUCT_FROM_DATABASE=SurfBoard SB5101 Cable Modem - -usb:v07B2p5120* - ID_PRODUCT_FROM_DATABASE=SurfBoard SB5120 Cable Modem (RNDIS) - -usb:v07B2p5121* - ID_PRODUCT_FROM_DATABASE=Surfboard 5121 Cable Modem - -usb:v07B2p7030* - ID_PRODUCT_FROM_DATABASE=WU830G 802.11bg Wireless Adapter [Envara WiND512] - -usb:v07B3* - ID_VENDOR_FROM_DATABASE=Plustek, Inc. - -usb:v07B3p0001* - ID_PRODUCT_FROM_DATABASE=OpticPro 1212U Scanner - -usb:v07B3p0003* - ID_PRODUCT_FROM_DATABASE=Scanner - -usb:v07B3p0010* - ID_PRODUCT_FROM_DATABASE=OpticPro U12 Scanner - -usb:v07B3p0011* - ID_PRODUCT_FROM_DATABASE=OpticPro U24 Scanner - -usb:v07B3p0013* - ID_PRODUCT_FROM_DATABASE=OpticPro UT12 Scanner - -usb:v07B3p0014* - ID_PRODUCT_FROM_DATABASE=Scanner - -usb:v07B3p0015* - ID_PRODUCT_FROM_DATABASE=OpticPro U24 Scanner - -usb:v07B3p0017* - ID_PRODUCT_FROM_DATABASE=OpticPro UT12/16/24 Scanner - -usb:v07B3p0204* - ID_PRODUCT_FROM_DATABASE=Scanner - -usb:v07B3p0400* - ID_PRODUCT_FROM_DATABASE=OpticPro 1248U Scanner - -usb:v07B3p0401* - ID_PRODUCT_FROM_DATABASE=OpticPro 1248U Scanner #2 - -usb:v07B3p0403* - ID_PRODUCT_FROM_DATABASE=OpticPro U16B Scanner - -usb:v07B3p0404* - ID_PRODUCT_FROM_DATABASE=Scanner - -usb:v07B3p0405* - ID_PRODUCT_FROM_DATABASE=A8 Namecard-s Controller - -usb:v07B3p0406* - ID_PRODUCT_FROM_DATABASE=A8 Namecard-D Controller - -usb:v07B3p0410* - ID_PRODUCT_FROM_DATABASE=Scanner - -usb:v07B3p0412* - ID_PRODUCT_FROM_DATABASE=Scanner - -usb:v07B3p0413* - ID_PRODUCT_FROM_DATABASE=OpticSlim 1200 Scanner - -usb:v07B3p0601* - ID_PRODUCT_FROM_DATABASE=OpticPro ST24 Scanner - -usb:v07B3p0800* - ID_PRODUCT_FROM_DATABASE=OpticPro ST48 Scanner - -usb:v07B3p0900* - ID_PRODUCT_FROM_DATABASE=OpticBook 3600 Scanner - -usb:v07B3p090C* - ID_PRODUCT_FROM_DATABASE=OpticBook 3600 Plus Scanner - -usb:v07B3p0A06* - ID_PRODUCT_FROM_DATABASE=TVcam VD100 - -usb:v07B3p0B00* - ID_PRODUCT_FROM_DATABASE=SmartPhoto F50 - -usb:v07B3p0C03* - ID_PRODUCT_FROM_DATABASE=OpticPro ST64+ Scanner - -usb:v07B3p0C04* - ID_PRODUCT_FROM_DATABASE=Optic Film 7200i scanner - -usb:v07B3p0C0C* - ID_PRODUCT_FROM_DATABASE=PL806 Scanner - -usb:v07B3p0C26* - ID_PRODUCT_FROM_DATABASE=OpticBook 4600 Scanner - -usb:v07B3p0C2B* - ID_PRODUCT_FROM_DATABASE=Mobile Office D428 Scanner - -usb:v07B3p0E08* - ID_PRODUCT_FROM_DATABASE=Plustek OpticBook A300 Scanner - -usb:v07B3p1300* - ID_PRODUCT_FROM_DATABASE=OpticBook 3800 Scanner - -usb:v07B3p1301* - ID_PRODUCT_FROM_DATABASE=OpticBook 4800 Scanner - -usb:v07B4* - ID_VENDOR_FROM_DATABASE=Olympus Optical Co., Ltd - -usb:v07B4p0100* - ID_PRODUCT_FROM_DATABASE=Camedia C-2100/C-3000 Ultra Zoom Camera - -usb:v07B4p0102* - ID_PRODUCT_FROM_DATABASE=Camedia E-10/C-220/C-50 Camera - -usb:v07B4p0105* - ID_PRODUCT_FROM_DATABASE=Camedia C-310Z/C-700/C-750UZ/C-755/C-765UZ/C-3040/C-4000/C-5050Z/D-560/C-3020Z Zoom Camera - -usb:v07B4p0109* - ID_PRODUCT_FROM_DATABASE=C-370Z/C-500Z/D-535Z/X-450 - -usb:v07B4p010A* - ID_PRODUCT_FROM_DATABASE=MAUSB-10 xD and SmartMedia Card Reader - -usb:v07B4p0112* - ID_PRODUCT_FROM_DATABASE=MAUSB-100 xD Card Reader - -usb:v07B4p0113* - ID_PRODUCT_FROM_DATABASE=Mju 500 - -usb:v07B4p0114* - ID_PRODUCT_FROM_DATABASE=C-350Z Camera - -usb:v07B4p0118* - ID_PRODUCT_FROM_DATABASE=Mju Mini Digital/Mju Digital 500 Camera / Stylus 850 SW - -usb:v07B4p0184* - ID_PRODUCT_FROM_DATABASE=P-S100 port - -usb:v07B4p0203* - ID_PRODUCT_FROM_DATABASE=Digital Voice Recorder DW-90 - -usb:v07B4p0206* - ID_PRODUCT_FROM_DATABASE=Digital Voice Recorder DS-330 - -usb:v07B4p0207* - ID_PRODUCT_FROM_DATABASE=Digital Voice Recorder & Camera W-10 - -usb:v07B4p0209* - ID_PRODUCT_FROM_DATABASE=Digital Voice Recorder DM-20 - -usb:v07B4p020D* - ID_PRODUCT_FROM_DATABASE=Digital Voice Recorder VN-240PC - -usb:v07B4p0244* - ID_PRODUCT_FROM_DATABASE=Digital Voice Recorder VN-8500PC - -usb:v07B4p0280* - ID_PRODUCT_FROM_DATABASE=m:robe 100 - -usb:v07B5* - ID_VENDOR_FROM_DATABASE=Mega World International, Ltd - -usb:v07B5p0017* - ID_PRODUCT_FROM_DATABASE=Joystick - -usb:v07B5p0213* - ID_PRODUCT_FROM_DATABASE=Thrustmaster Firestorm Digital 3 Gamepad - -usb:v07B5p0312* - ID_PRODUCT_FROM_DATABASE=Gamepad - -usb:v07B5p9902* - ID_PRODUCT_FROM_DATABASE=GamePad - -usb:v07B6* - ID_VENDOR_FROM_DATABASE=Marubun Corp. - -usb:v07B7* - ID_VENDOR_FROM_DATABASE=TIME Interconnect, Ltd - -usb:v07B8* - ID_VENDOR_FROM_DATABASE=AboCom Systems Inc - -usb:v07B8p110C* - ID_PRODUCT_FROM_DATABASE=XX1 - -usb:v07B8p1201* - ID_PRODUCT_FROM_DATABASE=IEEE 802.11b Adapter - -usb:v07B8p200C* - ID_PRODUCT_FROM_DATABASE=XX2 - -usb:v07B8p2573* - ID_PRODUCT_FROM_DATABASE=Wireless LAN Card - -usb:v07B8p2770* - ID_PRODUCT_FROM_DATABASE=802.11n/b/g Mini Wireless LAN USB2.0 Adapter - -usb:v07B8p2870* - ID_PRODUCT_FROM_DATABASE=802.11n/b/g Wireless LAN USB2.0 Adapter - -usb:v07B8p3070* - ID_PRODUCT_FROM_DATABASE=802.11n/b/g Mini Wireless LAN USB2.0 Adapter - -usb:v07B8p3071* - ID_PRODUCT_FROM_DATABASE=802.11n/b/g Mini Wireless LAN USB2.0 Adapter - -usb:v07B8p3072* - ID_PRODUCT_FROM_DATABASE=802.11n/b/g Mini Wireless LAN USB2.0 Adapter - -usb:v07B8p4000* - ID_PRODUCT_FROM_DATABASE=DU-E10 Ethernet [klsi] - -usb:v07B8p4002* - ID_PRODUCT_FROM_DATABASE=DU-E100 Ethernet [pegasus] - -usb:v07B8p4003* - ID_PRODUCT_FROM_DATABASE=1/10/100 Ethernet Adapter - -usb:v07B8p4004* - ID_PRODUCT_FROM_DATABASE=XX4 - -usb:v07B8p4007* - ID_PRODUCT_FROM_DATABASE=XX5 - -usb:v07B8p400B* - ID_PRODUCT_FROM_DATABASE=XX6 - -usb:v07B8p400C* - ID_PRODUCT_FROM_DATABASE=XX7 - -usb:v07B8p401A* - ID_PRODUCT_FROM_DATABASE=RTL8151 - -usb:v07B8p4102* - ID_PRODUCT_FROM_DATABASE=USB 1.1 10/100M Fast Ethernet Adapter - -usb:v07B8p4104* - ID_PRODUCT_FROM_DATABASE=XX9 - -usb:v07B8p420A* - ID_PRODUCT_FROM_DATABASE=UF200 Ethernet - -usb:v07B8p5301* - ID_PRODUCT_FROM_DATABASE=GW-US54ZGL 802.11bg - -usb:v07B8p6001* - ID_PRODUCT_FROM_DATABASE=802.11bg - -usb:v07B8pA001* - ID_PRODUCT_FROM_DATABASE=WUG2200 802.11g Wireless Adapter [Envara WiND512] - -usb:v07B8pABC1* - ID_PRODUCT_FROM_DATABASE=DU-E10 Ethernet [pegasus] - -usb:v07B8pB000* - ID_PRODUCT_FROM_DATABASE=BWU613 - -usb:v07B8pB02A* - ID_PRODUCT_FROM_DATABASE=AboCom Bluetooth Device - -usb:v07B8pB02B* - ID_PRODUCT_FROM_DATABASE=Bluetooth dongle - -usb:v07B8pB02C* - ID_PRODUCT_FROM_DATABASE=BCM92045DG-Flash with trace filter - -usb:v07B8pB02D* - ID_PRODUCT_FROM_DATABASE=BCM92045DG-Flash with trace filter - -usb:v07B8pB02E* - ID_PRODUCT_FROM_DATABASE=BCM92045DG-Flash with trace filter - -usb:v07B8pB030* - ID_PRODUCT_FROM_DATABASE=BCM92045DG-Flash with trace filter - -usb:v07B8pB031* - ID_PRODUCT_FROM_DATABASE=BCM92045DG-Flash with trace filter - -usb:v07B8pB032* - ID_PRODUCT_FROM_DATABASE=BCM92045DG-Flash with trace filter - -usb:v07B8pB033* - ID_PRODUCT_FROM_DATABASE=BCM92045DG-Flash with trace filter - -usb:v07B8pB21A* - ID_PRODUCT_FROM_DATABASE=WUG2400 802.11g Wireless Adapter [Texas Instruments TNETW1450] - -usb:v07B8pB21B* - ID_PRODUCT_FROM_DATABASE=HWU54DM - -usb:v07B8pB21C* - ID_PRODUCT_FROM_DATABASE=RT2573 - -usb:v07B8pB21D* - ID_PRODUCT_FROM_DATABASE=RT2573 - -usb:v07B8pB21E* - ID_PRODUCT_FROM_DATABASE=RT2573 - -usb:v07B8pB21F* - ID_PRODUCT_FROM_DATABASE=WUG2700 - -usb:v07B8pD011* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v07B8pE001* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v07B8pE002* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v07B8pE003* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v07B8pE004* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v07B8pE005* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v07B8pE006* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v07B8pE007* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v07B8pE008* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v07B8pE009* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v07B8pE00A* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v07B8pE4F0* - ID_PRODUCT_FROM_DATABASE=Card Reader Driver - -usb:v07B8pF101* - ID_PRODUCT_FROM_DATABASE=DSB-560 Modem [atlas] - -usb:v07BC* - ID_VENDOR_FROM_DATABASE=Canon Computer Systems, Inc. - -usb:v07BD* - ID_VENDOR_FROM_DATABASE=Webgear, Inc. - -usb:v07BE* - ID_VENDOR_FROM_DATABASE=Veridicom - -usb:v07C0* - ID_VENDOR_FROM_DATABASE=Code Mercenaries Hard- und Software GmbH - -usb:v07C0p1113* - ID_PRODUCT_FROM_DATABASE=JoyWarrior24F8 - -usb:v07C0p1116* - ID_PRODUCT_FROM_DATABASE=JoyWarrior24F14 - -usb:v07C0p1121* - ID_PRODUCT_FROM_DATABASE=The Claw - -usb:v07C0p1500* - ID_PRODUCT_FROM_DATABASE=IO-Warrior 40 - -usb:v07C0p1501* - ID_PRODUCT_FROM_DATABASE=IO-Warrior 24 - -usb:v07C0p1502* - ID_PRODUCT_FROM_DATABASE=IO-Warrior 48 - -usb:v07C0p1503* - ID_PRODUCT_FROM_DATABASE=IO-Warrior 28 - -usb:v07C0p1511* - ID_PRODUCT_FROM_DATABASE=IO-Warrior 24 Power Vampire - -usb:v07C0p1512* - ID_PRODUCT_FROM_DATABASE=IO-Warrior 24 Power Vampire - -usb:v07C1* - ID_VENDOR_FROM_DATABASE=Keisokugiken - -usb:v07C1p0068* - ID_PRODUCT_FROM_DATABASE=HKS-0200 USBDAQ - -usb:v07C4* - ID_VENDOR_FROM_DATABASE=Datafab Systems, Inc. - -usb:v07C4p0102* - ID_PRODUCT_FROM_DATABASE=USB to LS120 - -usb:v07C4p0103* - ID_PRODUCT_FROM_DATABASE=USB to IDE - -usb:v07C4p1234* - ID_PRODUCT_FROM_DATABASE=USB to ATAPI - -usb:v07C4pA000* - ID_PRODUCT_FROM_DATABASE=CompactFlash Card Reader - -usb:v07C4pA001* - ID_PRODUCT_FROM_DATABASE=CompactFlash & SmartMedia Card Reader [eusb] - -usb:v07C4pA002* - ID_PRODUCT_FROM_DATABASE=Disk Drive - -usb:v07C4pA003* - ID_PRODUCT_FROM_DATABASE=Datafab-based Reader - -usb:v07C4pA004* - ID_PRODUCT_FROM_DATABASE=USB to MMC Class Drive - -usb:v07C4pA005* - ID_PRODUCT_FROM_DATABASE=CompactFlash & SmartMedia Card Reader - -usb:v07C4pA006* - ID_PRODUCT_FROM_DATABASE=SmartMedia Card Reader - -usb:v07C4pA007* - ID_PRODUCT_FROM_DATABASE=Memory Stick Class Drive - -usb:v07C4pA103* - ID_PRODUCT_FROM_DATABASE=MDSM-B reader - -usb:v07C4pA107* - ID_PRODUCT_FROM_DATABASE=USB to Memory Stick (LC1) Drive - -usb:v07C4pA109* - ID_PRODUCT_FROM_DATABASE=LC1 CompactFlash & SmartMedia Card Reader - -usb:v07C4pA10B* - ID_PRODUCT_FROM_DATABASE=USB to CF+MS(LC1) - -usb:v07C4pA200* - ID_PRODUCT_FROM_DATABASE=DF-UT-06 Hama MMC/SD Reader - -usb:v07C4pA400* - ID_PRODUCT_FROM_DATABASE=CompactFlash & Microdrive Reader - -usb:v07C4pA600* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v07C4pAD01* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v07C4pAE01* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v07C4pAF01* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v07C4pB000* - ID_PRODUCT_FROM_DATABASE=USB to CF(LC1) - -usb:v07C4pB001* - ID_PRODUCT_FROM_DATABASE=USB to CF+PCMCIA - -usb:v07C4pB004* - ID_PRODUCT_FROM_DATABASE=MMC/SD Reader - -usb:v07C4pB006* - ID_PRODUCT_FROM_DATABASE=USB to PCMCIA - -usb:v07C4pB00A* - ID_PRODUCT_FROM_DATABASE=USB to CF+SD Drive(LC1) - -usb:v07C4pB00B* - ID_PRODUCT_FROM_DATABASE=USB to Memory Stick(LC1) - -usb:v07C4pC010* - ID_PRODUCT_FROM_DATABASE=Kingston FCR-HS2/ATA Card Reader - -usb:v07C5* - ID_VENDOR_FROM_DATABASE=APG Cash Drawer - -usb:v07C6* - ID_VENDOR_FROM_DATABASE=ShareWave, Inc. - -usb:v07C6p0002* - ID_PRODUCT_FROM_DATABASE=Bodega Wireless Access Point - -usb:v07C6p0003* - ID_PRODUCT_FROM_DATABASE=Bodega Wireless Network Adapter - -usb:v07C7* - ID_VENDOR_FROM_DATABASE=Powertech Industrial Co., Ltd - -usb:v07C8* - ID_VENDOR_FROM_DATABASE=B.U.G., Inc. - -usb:v07C8p0202* - ID_PRODUCT_FROM_DATABASE=MN128-SOHO PAL - -usb:v07C9* - ID_VENDOR_FROM_DATABASE=Allied Telesyn International - -usb:v07C9pB100* - ID_PRODUCT_FROM_DATABASE=AT-USB100 - -usb:v07CA* - ID_VENDOR_FROM_DATABASE=AVerMedia Technologies, Inc. - -usb:v07CAp0002* - ID_PRODUCT_FROM_DATABASE=AVerTV PVR USB/EZMaker Pro Device - -usb:v07CAp0026* - ID_PRODUCT_FROM_DATABASE=AVerTV - -usb:v07CAp0337* - ID_PRODUCT_FROM_DATABASE=A867 DVB-T dongle - -usb:v07CAp0837* - ID_PRODUCT_FROM_DATABASE=H837 Hybrid ATSC/QAM - -usb:v07CAp1228* - ID_PRODUCT_FROM_DATABASE=MPEG-2 Capture Device (M038) - -usb:v07CAp1830* - ID_PRODUCT_FROM_DATABASE=AVerTV Volar Video Capture (H830) - -usb:v07CAp3835* - ID_PRODUCT_FROM_DATABASE=AVerTV Volar Green HD (A835B) - -usb:v07CAp850A* - ID_PRODUCT_FROM_DATABASE=AverTV Volar Black HD (A850) - -usb:v07CAp850B* - ID_PRODUCT_FROM_DATABASE=AverTV Red HD+ (A850T) - -usb:v07CApA309* - ID_PRODUCT_FROM_DATABASE=AVerTV DVB-T (A309) - -usb:v07CApA801* - ID_PRODUCT_FROM_DATABASE=AVerTV DVB-T (A800) - -usb:v07CApA815* - ID_PRODUCT_FROM_DATABASE=AVerTV DVB-T Volar X (A815) - -usb:v07CApA827* - ID_PRODUCT_FROM_DATABASE=AVerTV Hybrid Volar HX (A827) - -usb:v07CApA867* - ID_PRODUCT_FROM_DATABASE=AVerTV DVB-T (A867) - -usb:v07CApB800* - ID_PRODUCT_FROM_DATABASE=MR800 FM Radio - -usb:v07CApE880* - ID_PRODUCT_FROM_DATABASE=MPEG-2 Capture Device (E880) - -usb:v07CApE882* - ID_PRODUCT_FROM_DATABASE=MPEG-2 Capture Device (E882) - -usb:v07CB* - ID_VENDOR_FROM_DATABASE=Kingmax Technology, Inc. - -usb:v07CC* - ID_VENDOR_FROM_DATABASE=Carry Computer Eng., Co., Ltd - -usb:v07CCp0000* - ID_PRODUCT_FROM_DATABASE=CF Card Reader - -usb:v07CCp0001* - ID_PRODUCT_FROM_DATABASE=Reader (UICSE) - -usb:v07CCp0002* - ID_PRODUCT_FROM_DATABASE=Reader (UIS) - -usb:v07CCp0003* - ID_PRODUCT_FROM_DATABASE=SM Card Reader - -usb:v07CCp0004* - ID_PRODUCT_FROM_DATABASE=SM/CF/PCMCIA Card Reader - -usb:v07CCp0005* - ID_PRODUCT_FROM_DATABASE=Reader (UISA2SE) - -usb:v07CCp0006* - ID_PRODUCT_FROM_DATABASE=SM/CF/PCMCIA Card Reader - -usb:v07CCp0007* - ID_PRODUCT_FROM_DATABASE=Reader (UISA6SE) - -usb:v07CCp000C* - ID_PRODUCT_FROM_DATABASE=SM/CF Card Reader - -usb:v07CCp000D* - ID_PRODUCT_FROM_DATABASE=SM/CF Card Reader - -usb:v07CCp000E* - ID_PRODUCT_FROM_DATABASE=Reader (UISDA) - -usb:v07CCp000F* - ID_PRODUCT_FROM_DATABASE=Reader (UICLIK) - -usb:v07CCp0010* - ID_PRODUCT_FROM_DATABASE=Reader (UISMA) - -usb:v07CCp0012* - ID_PRODUCT_FROM_DATABASE=Reader (UISC6SE-FLASH) - -usb:v07CCp0014* - ID_PRODUCT_FROM_DATABASE=Litronic Fortezza Reader - -usb:v07CCp0030* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UISDMC12S) - -usb:v07CCp0040* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UISDMC13S) - -usb:v07CCp0100* - ID_PRODUCT_FROM_DATABASE=Reader (UID) - -usb:v07CCp0101* - ID_PRODUCT_FROM_DATABASE=Reader (UIM) - -usb:v07CCp0102* - ID_PRODUCT_FROM_DATABASE=Reader (UISDMA) - -usb:v07CCp0103* - ID_PRODUCT_FROM_DATABASE=Reader (UISDMC) - -usb:v07CCp0104* - ID_PRODUCT_FROM_DATABASE=Reader (UISDM) - -usb:v07CCp0200* - ID_PRODUCT_FROM_DATABASE=6-in-1 Card Reader - -usb:v07CCp0201* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UISDMC1S & UISDMC3S) - -usb:v07CCp0202* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UISDMC5S) - -usb:v07CCp0203* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UISMC5S) - -usb:v07CCp0204* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UIM4/5S & UIM7S) - -usb:v07CCp0205* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UIS4/5S & UIS7S) - -usb:v07CCp0206* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UISDMC10S & UISDMC11S) - -usb:v07CCp0207* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UPIDMA) - -usb:v07CCp0208* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UCFC II) - -usb:v07CCp0210* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UPIXXA) - -usb:v07CCp0213* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UPIDA) - -usb:v07CCp0214* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UPIMA) - -usb:v07CCp0215* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UPISA) - -usb:v07CCp0217* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UPISDMA) - -usb:v07CCp0223* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UCIDA) - -usb:v07CCp0224* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UCIMA) - -usb:v07CCp0225* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UIS7S) - -usb:v07CCp0227* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UCIDMA) - -usb:v07CCp0234* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UIM7S) - -usb:v07CCp0235* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UIS4S-S) - -usb:v07CCp0237* - ID_PRODUCT_FROM_DATABASE=Velper (UISDMC4S) - -usb:v07CCp0300* - ID_PRODUCT_FROM_DATABASE=6-in-1 Card Reader - -usb:v07CCp0301* - ID_PRODUCT_FROM_DATABASE=6-in-1 Card Reader - -usb:v07CCp0303* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UID10W) - -usb:v07CCp0304* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UIM10W) - -usb:v07CCp0305* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UIS10W) - -usb:v07CCp0308* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UIC10W) - -usb:v07CCp0309* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UISC3W) - -usb:v07CCp0310* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UISDMA2W) - -usb:v07CCp0311* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UISDMC14W) - -usb:v07CCp0320* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UISDMC4W) - -usb:v07CCp0321* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UISDMC37W) - -usb:v07CCp0330* - ID_PRODUCT_FROM_DATABASE=WINTERREADER Reader - -usb:v07CCp0350* - ID_PRODUCT_FROM_DATABASE=9-in-1 Card Reader - -usb:v07CCp0500* - ID_PRODUCT_FROM_DATABASE=Mass Storage - -usb:v07CCp0501* - ID_PRODUCT_FROM_DATABASE=Mass Storage - -usb:v07CD* - ID_VENDOR_FROM_DATABASE=Elektor - -usb:v07CDp0001* - ID_PRODUCT_FROM_DATABASE=USBuart Serial Port - -usb:v07CF* - ID_VENDOR_FROM_DATABASE=Casio Computer Co., Ltd - -usb:v07CFp1001* - ID_PRODUCT_FROM_DATABASE=QV-8000SX/5700/3000EX Digicam; Exilim EX-M20 - -usb:v07CFp1003* - ID_PRODUCT_FROM_DATABASE=Exilim EX-S500 - -usb:v07CFp1004* - ID_PRODUCT_FROM_DATABASE=Exilim EX-Z120 - -usb:v07CFp1011* - ID_PRODUCT_FROM_DATABASE=USB-CASIO PC CAMERA - -usb:v07CFp1116* - ID_PRODUCT_FROM_DATABASE=EXILIM EX-Z19 - -usb:v07CFp1125* - ID_PRODUCT_FROM_DATABASE=Exilim EX-H10 Digital Camera (mass storage mode) - -usb:v07CFp1133* - ID_PRODUCT_FROM_DATABASE=Exilim EX-Z350 Digital Camera (mass storage mode) - -usb:v07CFp1225* - ID_PRODUCT_FROM_DATABASE=Exilim EX-H10 Digital Camera (PictBridge mode) - -usb:v07CFp1233* - ID_PRODUCT_FROM_DATABASE=Exilim EX-Z350 Digital Camera (PictBridge mode) - -usb:v07CFp2002* - ID_PRODUCT_FROM_DATABASE=E-125 Cassiopeia Pocket PC - -usb:v07CFp3801* - ID_PRODUCT_FROM_DATABASE=WMP-1 MP3-Watch - -usb:v07CFp4001* - ID_PRODUCT_FROM_DATABASE=Label Printer KL-P1000 - -usb:v07CFp4007* - ID_PRODUCT_FROM_DATABASE=CW50 Device - -usb:v07CFp4104* - ID_PRODUCT_FROM_DATABASE=Cw75 Device - -usb:v07CFp4107* - ID_PRODUCT_FROM_DATABASE=CW-L300 Device - -usb:v07CFp4500* - ID_PRODUCT_FROM_DATABASE=LV-20 Digital Camera - -usb:v07CFp6801* - ID_PRODUCT_FROM_DATABASE=PL-40R - -usb:v07CFp6802* - ID_PRODUCT_FROM_DATABASE=MIDI Keyboard - -usb:v07D0* - ID_VENDOR_FROM_DATABASE=Dazzle - -usb:v07D0p0001* - ID_PRODUCT_FROM_DATABASE=Digital Video Creator I - -usb:v07D0p0002* - ID_PRODUCT_FROM_DATABASE=Global Village VideoFX Grabber - -usb:v07D0p0003* - ID_PRODUCT_FROM_DATABASE=Fusion Model DVC-50 Rev 1 (NTSC) - -usb:v07D0p0004* - ID_PRODUCT_FROM_DATABASE=DVC-800 (PAL) Grabber - -usb:v07D0p0005* - ID_PRODUCT_FROM_DATABASE=Fusion Video and Audio Ports - -usb:v07D0p0006* - ID_PRODUCT_FROM_DATABASE=DVC 150 Loader Device - -usb:v07D0p0007* - ID_PRODUCT_FROM_DATABASE=DVC 150 - -usb:v07D0p0327* - ID_PRODUCT_FROM_DATABASE=Fusion Digital Media Reader - -usb:v07D0p1001* - ID_PRODUCT_FROM_DATABASE=DM-FLEX DFU Adapter - -usb:v07D0p1002* - ID_PRODUCT_FROM_DATABASE=DMHS2 DFU Adapter - -usb:v07D0p1102* - ID_PRODUCT_FROM_DATABASE=CF Reader/Writer - -usb:v07D0p1103* - ID_PRODUCT_FROM_DATABASE=SD Reader/Writer - -usb:v07D0p1104* - ID_PRODUCT_FROM_DATABASE=SM Reader/Writer - -usb:v07D0p1105* - ID_PRODUCT_FROM_DATABASE=MS Reader/Writer - -usb:v07D0p1106* - ID_PRODUCT_FROM_DATABASE=xD/SM Reader/Writer - -usb:v07D0p1202* - ID_PRODUCT_FROM_DATABASE=MultiSlot Reader/Writer - -usb:v07D0p2000* - ID_PRODUCT_FROM_DATABASE=FX2 DFU Adapter - -usb:v07D0p2001* - ID_PRODUCT_FROM_DATABASE=eUSB CompactFlash Reader - -usb:v07D0p4100* - ID_PRODUCT_FROM_DATABASE=Kingsun SF-620 Infrared Adapter - -usb:v07D0p4101* - ID_PRODUCT_FROM_DATABASE=Connectivity Cable (CA-42 clone) - -usb:v07D0p4959* - ID_PRODUCT_FROM_DATABASE=Kingsun KS-959 Infrared Adapter - -usb:v07D1* - ID_VENDOR_FROM_DATABASE=D-Link System - -usb:v07D1p13EC* - ID_PRODUCT_FROM_DATABASE=VvBus for Helium 2xx - -usb:v07D1p13ED* - ID_PRODUCT_FROM_DATABASE=VvBus for Helium 2xx - -usb:v07D1p13F1* - ID_PRODUCT_FROM_DATABASE=DSL-302G Modem - -usb:v07D1p13F2* - ID_PRODUCT_FROM_DATABASE=DSL-502G Router - -usb:v07D1p3300* - ID_PRODUCT_FROM_DATABASE=DWA-130 802.11n Wireless N Adapter(rev.E) [Realtek RTL8191SU] - -usb:v07D1p3302* - ID_PRODUCT_FROM_DATABASE=DWA-130 802.11n Wireless N Adapter(rev.C2) [Realtek RTL8191SU] - -usb:v07D1p3303* - ID_PRODUCT_FROM_DATABASE=DWA-131 802.11n Wireless N Nano Adapter(rev.A1) [Realtek RTL8192SU] - -usb:v07D1p3304* - ID_PRODUCT_FROM_DATABASE=FR-300USB 802.11bgn Wireless Adapter - -usb:v07D1p3A07* - ID_PRODUCT_FROM_DATABASE=WUA-2340 RangeBooster G Adapter(rev.A) [Atheros AR5523] - -usb:v07D1p3A08* - ID_PRODUCT_FROM_DATABASE=WUA-2340 RangeBooster G Adapter(rev.A) (no firmware) [Atheros AR5523] - -usb:v07D1p3A09* - ID_PRODUCT_FROM_DATABASE=DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.A2) [Atheros AR9170+AR9104] - -usb:v07D1p3A0D* - ID_PRODUCT_FROM_DATABASE=DWA-120 802.11g Wireless 108G Adapter [Atheros AR5523] - -usb:v07D1p3A0F* - ID_PRODUCT_FROM_DATABASE=DWA-130 802.11n Wireless N Adapter(rev.D) [Atheros AR9170+AR9102] - -usb:v07D1p3A10* - ID_PRODUCT_FROM_DATABASE=DWA-126 802.11n Wireless Adapter [Atheros AR9271] - -usb:v07D1p3B01* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter(rev.D) [Marvell 88W8338+88W8010] - -usb:v07D1p3B10* - ID_PRODUCT_FROM_DATABASE=DWA-142 RangeBooster N Adapter [Marvell 88W8362+88W8060] - -usb:v07D1p3B11* - ID_PRODUCT_FROM_DATABASE=DWA-130 802.11n Wireless N Adapter(rev.A1) [Marvell 88W8362+88W8060] - -usb:v07D1p3C03* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter(rev.C1) [Ralink RT2571W] - -usb:v07D1p3C04* - ID_PRODUCT_FROM_DATABASE=WUA-1340 - -usb:v07D1p3C05* - ID_PRODUCT_FROM_DATABASE=EH103 Wireless G Adapter - -usb:v07D1p3C06* - ID_PRODUCT_FROM_DATABASE=DWA-111 802.11bg Wireless Adapter [Ralink RT2571W] - -usb:v07D1p3C07* - ID_PRODUCT_FROM_DATABASE=DWA-110 Wireless G Adapter(rev.A1) [Ralink RT2571W] - -usb:v07D1p3C09* - ID_PRODUCT_FROM_DATABASE=DWA-140 RangeBooster N Adapter(rev.B1) [Ralink RT2870] - -usb:v07D1p3C0A* - ID_PRODUCT_FROM_DATABASE=DWA-140 RangeBooster N Adapter(rev.B2) [Ralink RT3072] - -usb:v07D1p3C0B* - ID_PRODUCT_FROM_DATABASE=DWA-110 Wireless G Adapter(rev.B) [Ralink RT2870] - -usb:v07D1p3C0D* - ID_PRODUCT_FROM_DATABASE=DWA-125 Wireless N 150 Adapter(rev.A1) [Ralink RT3070] - -usb:v07D1p3C0E* - ID_PRODUCT_FROM_DATABASE=WUA-2340 RangeBooster G Adapter(rev.B) [Ralink RT2070] - -usb:v07D1p3C0F* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter(rev.E1) [Ralink RT2070] - -usb:v07D1p3C10* - ID_PRODUCT_FROM_DATABASE=DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.A1) [Atheros AR9170+AR9104] - -usb:v07D1p3C11* - ID_PRODUCT_FROM_DATABASE=DWA-160 Xtreme N Dual Band USB Adapter(rev.B) [Ralink RT2870] - -usb:v07D1p3C13* - ID_PRODUCT_FROM_DATABASE=DWA-130 802.11n Wireless N Adapter(rev.B) [Ralink RT2870] - -usb:v07D1p3C15* - ID_PRODUCT_FROM_DATABASE=DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT2870] - -usb:v07D1p3C16* - ID_PRODUCT_FROM_DATABASE=DWA-125 Wireless N 150 Adapter(rev.A2) [Ralink RT3070] - -usb:v07D1p3E02* - ID_PRODUCT_FROM_DATABASE=DWM-156 3.75G HSUPA Adapter - -usb:v07D1p5100* - ID_PRODUCT_FROM_DATABASE=Remote NDIS Device - -usb:v07D1pA800* - ID_PRODUCT_FROM_DATABASE=DWM-152 3.75G HSUPA Adapter - -usb:v07D1pF101* - ID_PRODUCT_FROM_DATABASE=DBT-122 Bluetooth - -usb:v07D1pFC01* - ID_PRODUCT_FROM_DATABASE=DBT-120 Bluetooth Adapter - -usb:v07D2* - ID_VENDOR_FROM_DATABASE=Aptio Products, Inc. - -usb:v07D3* - ID_VENDOR_FROM_DATABASE=Cyberdata Corp. - -usb:v07D5* - ID_VENDOR_FROM_DATABASE=Radiant Systems - -usb:v07D7* - ID_VENDOR_FROM_DATABASE=GCC Technologies, Inc. - -usb:v07DA* - ID_VENDOR_FROM_DATABASE=Arasan Chip Systems - -usb:v07DE* - ID_VENDOR_FROM_DATABASE=Diamond Multimedia - -usb:v07DEp2820* - ID_PRODUCT_FROM_DATABASE=VC500 Video Capture Dongle - -usb:v07DF* - ID_VENDOR_FROM_DATABASE=David Electronics Co., Ltd - -usb:v07E1* - ID_VENDOR_FROM_DATABASE=Ambient Technologies, Inc. - -usb:v07E1p5201* - ID_PRODUCT_FROM_DATABASE=V.90 Modem - -usb:v07E2* - ID_VENDOR_FROM_DATABASE=Elmeg GmbH & Co., Ltd - -usb:v07E3* - ID_VENDOR_FROM_DATABASE=Planex Communications, Inc. - -usb:v07E4* - ID_VENDOR_FROM_DATABASE=Movado Enterprise Co., Ltd - -usb:v07E4p0967* - ID_PRODUCT_FROM_DATABASE=SCard R/W CSR-145 - -usb:v07E4p0968* - ID_PRODUCT_FROM_DATABASE=SCard R/W CSR-145 - -usb:v07E5* - ID_VENDOR_FROM_DATABASE=QPS, Inc. - -usb:v07E5p05C2* - ID_PRODUCT_FROM_DATABASE=IDE-to-USB2.0 PCA - -usb:v07E5p5C01* - ID_PRODUCT_FROM_DATABASE=Que! CDRW - -usb:v07E6* - ID_VENDOR_FROM_DATABASE=Allied Cable Corp. - -usb:v07E7* - ID_VENDOR_FROM_DATABASE=Mirvo Toys, Inc. - -usb:v07E8* - ID_VENDOR_FROM_DATABASE=Labsystems - -usb:v07EA* - ID_VENDOR_FROM_DATABASE=Iwatsu Electric Co., Ltd - -usb:v07EB* - ID_VENDOR_FROM_DATABASE=Double-H Technology Co., Ltd - -usb:v07EC* - ID_VENDOR_FROM_DATABASE=Taiyo Electric Wire & Cable Co., Ltd - -usb:v07EE* - ID_VENDOR_FROM_DATABASE=Torex Retail (formerly Logware) - -usb:v07EEp0002* - ID_PRODUCT_FROM_DATABASE=Cash Drawer I/F - -usb:v07EF* - ID_VENDOR_FROM_DATABASE=STSN - -usb:v07EFp0001* - ID_PRODUCT_FROM_DATABASE=Internet Access Device - -usb:v07F2* - ID_VENDOR_FROM_DATABASE=Microcomputer Applications, Inc. - -usb:v07F2p0001* - ID_PRODUCT_FROM_DATABASE=KEYLOK II - -usb:v07F6* - ID_VENDOR_FROM_DATABASE=Circuit Assembly Corp. - -usb:v07F7* - ID_VENDOR_FROM_DATABASE=Century Corp. - -usb:v07F7p0005* - ID_PRODUCT_FROM_DATABASE=ScanLogic/Century Corporation uATA - -usb:v07F7p011E* - ID_PRODUCT_FROM_DATABASE=Century USB Disk Enclosure - -usb:v07F9* - ID_VENDOR_FROM_DATABASE=Dotop Technology, Inc. - -usb:v07FA* - ID_VENDOR_FROM_DATABASE=DrayTek Corp. - -usb:v07FAp0778* - ID_PRODUCT_FROM_DATABASE=miniVigor 128 ISDN TA - -usb:v07FAp1012* - ID_PRODUCT_FROM_DATABASE=BeWAN ADSL USB ST (grey) - -usb:v07FAp1196* - ID_PRODUCT_FROM_DATABASE=BWIFI-USB54AR 802.11bg - -usb:v07FApA904* - ID_PRODUCT_FROM_DATABASE=BeWAN ADSL - -usb:v07FApA905* - ID_PRODUCT_FROM_DATABASE=BeWAN ADSL ST - -usb:v07FD* - ID_VENDOR_FROM_DATABASE=Mark of the Unicorn - -usb:v07FDp0000* - ID_PRODUCT_FROM_DATABASE=FastLane MIDI Interface - -usb:v07FDp0001* - ID_PRODUCT_FROM_DATABASE=FastLane Quad MIDI Interface - -usb:v07FDp0002* - ID_PRODUCT_FROM_DATABASE=MOTU Audio for 64 bit - -usb:v07FF* - ID_VENDOR_FROM_DATABASE=Unknown - -usb:v07FFp00FF* - ID_PRODUCT_FROM_DATABASE=Portable Hard Drive - -usb:v0801* - ID_VENDOR_FROM_DATABASE=MagTek - -usb:v0801p0001* - ID_PRODUCT_FROM_DATABASE=Mini Swipe Reader (Keyboard Emulation) - -usb:v0801p0002* - ID_PRODUCT_FROM_DATABASE=Mini Swipe Reader - -usb:v0801p0003* - ID_PRODUCT_FROM_DATABASE=Magstripe Insert Reader - -usb:v0802* - ID_VENDOR_FROM_DATABASE=Mako Technologies, LLC - -usb:v0803* - ID_VENDOR_FROM_DATABASE=Zoom Telephonics, Inc. - -usb:v0803p1300* - ID_PRODUCT_FROM_DATABASE=V92 Faxmodem - -usb:v0803p4310* - ID_PRODUCT_FROM_DATABASE=4410a Wireless-G Adapter [Intersil ISL3887] - -usb:v0803p4410* - ID_PRODUCT_FROM_DATABASE=4410b Wireless-G Adapter [ZyDAS ZD1211B] - -usb:v0803p5241* - ID_PRODUCT_FROM_DATABASE=Cable Modem - -usb:v0803p5551* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v0803p9700* - ID_PRODUCT_FROM_DATABASE=2986L FaxModem - -usb:v0803p9800* - ID_PRODUCT_FROM_DATABASE=Cable Modem - -usb:v0803pA312* - ID_PRODUCT_FROM_DATABASE=Wireless-G - -usb:v0809* - ID_VENDOR_FROM_DATABASE=Genicom Technology, Inc. - -usb:v080A* - ID_VENDOR_FROM_DATABASE=Evermuch Technology Co., Ltd - -usb:v080B* - ID_VENDOR_FROM_DATABASE=Cross Match Technologies - -usb:v080Bp0002* - ID_PRODUCT_FROM_DATABASE=Fingerprint Scanner (After ReNumeration) - -usb:v080Bp0010* - ID_PRODUCT_FROM_DATABASE=300LC Series Fingerprint Scanner (Before ReNumeration) - -usb:v080C* - ID_VENDOR_FROM_DATABASE=Datalogic S.p.A. - -usb:v080Cp0300* - ID_PRODUCT_FROM_DATABASE=Gryphon D120 Barcode Scanner - -usb:v080Cp0400* - ID_PRODUCT_FROM_DATABASE=Gryphon D120 Barcode Scanner - -usb:v080Cp0500* - ID_PRODUCT_FROM_DATABASE=Gryphon D120 Barcode Scanner - -usb:v080Cp0600* - ID_PRODUCT_FROM_DATABASE=Gryphon M100 Barcode Scanner - -usb:v080D* - ID_VENDOR_FROM_DATABASE=Teco Image Systems Co., Ltd - -usb:v080Dp0102* - ID_PRODUCT_FROM_DATABASE=Hercules Scan@home 48 - -usb:v080Dp0104* - ID_PRODUCT_FROM_DATABASE=3.2Slim - -usb:v080Dp0110* - ID_PRODUCT_FROM_DATABASE=UMAX AstraSlim 1200 Scanner - -usb:v0810* - ID_VENDOR_FROM_DATABASE=Personal Communication Systems, Inc. - -usb:v0810p0001* - ID_PRODUCT_FROM_DATABASE=Dual PSX Adaptor - -usb:v0810p0002* - ID_PRODUCT_FROM_DATABASE=Dual PCS Adaptor - -usb:v0810p0003* - ID_PRODUCT_FROM_DATABASE=PlayStation Gamepad - -usb:v0813* - ID_VENDOR_FROM_DATABASE=Mattel, Inc. - -usb:v0813p0001* - ID_PRODUCT_FROM_DATABASE=Intel Play QX3 Microscope - -usb:v0813p0002* - ID_PRODUCT_FROM_DATABASE=Dual Mode Camera Plus - -usb:v0819* - ID_VENDOR_FROM_DATABASE=eLicenser - -usb:v0819p0101* - ID_PRODUCT_FROM_DATABASE=License Management and Copy Protection - -usb:v081A* - ID_VENDOR_FROM_DATABASE=MG Logic - -usb:v081Ap1000* - ID_PRODUCT_FROM_DATABASE=Duo Pen Tablet - -usb:v081B* - ID_VENDOR_FROM_DATABASE=Indigita Corp. - -usb:v081Bp0600* - ID_PRODUCT_FROM_DATABASE=Storage Adapter - -usb:v081Bp0601* - ID_PRODUCT_FROM_DATABASE=Storage Adapter - -usb:v081C* - ID_VENDOR_FROM_DATABASE=Mipsys - -usb:v081E* - ID_VENDOR_FROM_DATABASE=AlphaSmart, Inc. - -usb:v081EpDF00* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0822* - ID_VENDOR_FROM_DATABASE=Reudo Corp. - -usb:v0822p2001* - ID_PRODUCT_FROM_DATABASE=IRXpress Infrared Device - -usb:v0825* - ID_VENDOR_FROM_DATABASE=GC Protronics - -usb:v0826* - ID_VENDOR_FROM_DATABASE=Data Transit - -usb:v0827* - ID_VENDOR_FROM_DATABASE=BroadLogic, Inc. - -usb:v0828* - ID_VENDOR_FROM_DATABASE=Sato Corp. - -usb:v0829* - ID_VENDOR_FROM_DATABASE=DirecTV Broadband, Inc. (Telocity) - -usb:v082D* - ID_VENDOR_FROM_DATABASE=Handspring - -usb:v082Dp0100* - ID_PRODUCT_FROM_DATABASE=Visor - -usb:v082Dp0200* - ID_PRODUCT_FROM_DATABASE=Treo - -usb:v082Dp0300* - ID_PRODUCT_FROM_DATABASE=Treo 600 - -usb:v082Dp0400* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v082Dp0500* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v082Dp0600* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830* - ID_VENDOR_FROM_DATABASE=Palm, Inc. - -usb:v0830p0001* - ID_PRODUCT_FROM_DATABASE=m500 - -usb:v0830p0002* - ID_PRODUCT_FROM_DATABASE=m505 - -usb:v0830p0003* - ID_PRODUCT_FROM_DATABASE=m515 - -usb:v0830p0004* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0005* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0006* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0010* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0011* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0012* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0013* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0014* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0020* - ID_PRODUCT_FROM_DATABASE=i705 - -usb:v0830p0021* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0022* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0023* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0024* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0030* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0031* - ID_PRODUCT_FROM_DATABASE=Tungsten W - -usb:v0830p0032* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0033* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0034* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0040* - ID_PRODUCT_FROM_DATABASE=m125 - -usb:v0830p0041* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0042* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0043* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0044* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0050* - ID_PRODUCT_FROM_DATABASE=m130 - -usb:v0830p0051* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0052* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0053* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0054* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0060* - ID_PRODUCT_FROM_DATABASE=Tungsten C/E/T/T2/T3 / Zire 71 - -usb:v0830p0061* - ID_PRODUCT_FROM_DATABASE=Lifedrive / Treo 650/680 / Tunsten E2/T5/TX / Centro / Zire 21/31/72 / Z22 - -usb:v0830p0062* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0063* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0064* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0070* - ID_PRODUCT_FROM_DATABASE=Zire - -usb:v0830p0071* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0072* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0080* - ID_PRODUCT_FROM_DATABASE=Serial Adapter [for Palm III] - -usb:v0830p0081* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p0082* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0830p00A0* - ID_PRODUCT_FROM_DATABASE=Treo 800w - -usb:v0830p0101* - ID_PRODUCT_FROM_DATABASE=Pre - -usb:v0832* - ID_VENDOR_FROM_DATABASE=Kouwell Electronics Corp. - -usb:v0832p5850* - ID_PRODUCT_FROM_DATABASE=Cable - -usb:v0833* - ID_VENDOR_FROM_DATABASE=Sourcenext Corp. - -usb:v0833p012E* - ID_PRODUCT_FROM_DATABASE=KeikaiDenwa 8 with charger - -usb:v0833p039F* - ID_PRODUCT_FROM_DATABASE=KeikaiDenwa 8 - -usb:v0835* - ID_VENDOR_FROM_DATABASE=Action Star Enterprise Co., Ltd - -usb:v0836* - ID_VENDOR_FROM_DATABASE=TrekStor - -usb:v0836p2836* - ID_PRODUCT_FROM_DATABASE=i.Beat mood - -usb:v0839* - ID_VENDOR_FROM_DATABASE=Samsung Techwin Co., Ltd - -usb:v0839p0005* - ID_PRODUCT_FROM_DATABASE=Digimax Camera - -usb:v0839p0008* - ID_PRODUCT_FROM_DATABASE=Digimax 230 Camera - -usb:v0839p0009* - ID_PRODUCT_FROM_DATABASE=Digimax 340 - -usb:v0839p000A* - ID_PRODUCT_FROM_DATABASE=Digimax 410 - -usb:v0839p000E* - ID_PRODUCT_FROM_DATABASE=Digimax 360 - -usb:v0839p0010* - ID_PRODUCT_FROM_DATABASE=Digimax 300 - -usb:v0839p1003* - ID_PRODUCT_FROM_DATABASE=Digimax 210SE - -usb:v0839p1005* - ID_PRODUCT_FROM_DATABASE=Digimax 220 - -usb:v0839p1009* - ID_PRODUCT_FROM_DATABASE=Digimax V4 - -usb:v0839p1012* - ID_PRODUCT_FROM_DATABASE=6500 Document Camera - -usb:v0839p1058* - ID_PRODUCT_FROM_DATABASE=S730 Camera - -usb:v0839p1064* - ID_PRODUCT_FROM_DATABASE=Digimax D830 Camera - -usb:v0839p1542* - ID_PRODUCT_FROM_DATABASE=Digimax 50 Duo - -usb:v0839p3000* - ID_PRODUCT_FROM_DATABASE=Digimax 35 MP3 - -usb:v083A* - ID_VENDOR_FROM_DATABASE=Accton Technology Corp. - -usb:v083Ap1046* - ID_PRODUCT_FROM_DATABASE=10/100 Ethernet [pegasus] - -usb:v083Ap1060* - ID_PRODUCT_FROM_DATABASE=HomeLine Adapter - -usb:v083Ap1F4D* - ID_PRODUCT_FROM_DATABASE=SMC8013WG Broadband Remote NDIS Device - -usb:v083Ap3046* - ID_PRODUCT_FROM_DATABASE=10/100 Series Adapter - -usb:v083Ap3060* - ID_PRODUCT_FROM_DATABASE=1/10/100 Adapter - -usb:v083Ap3501* - ID_PRODUCT_FROM_DATABASE=2664W - -usb:v083Ap3502* - ID_PRODUCT_FROM_DATABASE=WN3501D Wireless Adapter - -usb:v083Ap3503* - ID_PRODUCT_FROM_DATABASE=T-Sinus 111 Wireless Adapter - -usb:v083Ap4501* - ID_PRODUCT_FROM_DATABASE=T-Sinus 154data - -usb:v083Ap4502* - ID_PRODUCT_FROM_DATABASE=Siemens S30853-S1016-R107 802.11g Wireless Adapter [Intersil ISL3886] - -usb:v083Ap4505* - ID_PRODUCT_FROM_DATABASE=SMCWUSB-G 802.11bg - -usb:v083Ap4507* - ID_PRODUCT_FROM_DATABASE=SMCWUSBT-G2 802.11g Wireless Adapter [Atheros AR5523] - -usb:v083Ap4521* - ID_PRODUCT_FROM_DATABASE=Siemens S30863-S1016-R107-2 802.11g Wireless Adapter [Intersil ISL3887] - -usb:v083Ap5046* - ID_PRODUCT_FROM_DATABASE=SpeedStream 10/100 Ethernet [pegasus] - -usb:v083Ap5501* - ID_PRODUCT_FROM_DATABASE=Wireless Adapter 11g - -usb:v083Ap6500* - ID_PRODUCT_FROM_DATABASE=Cable Modem - -usb:v083Ap6618* - ID_PRODUCT_FROM_DATABASE=802.11n Wireless Adapter - -usb:v083Ap7511* - ID_PRODUCT_FROM_DATABASE=Arcadyan 802.11N Wireless Adapter - -usb:v083Ap7512* - ID_PRODUCT_FROM_DATABASE=Arcadyan 802.11N Wireless Adapter - -usb:v083Ap7522* - ID_PRODUCT_FROM_DATABASE=Arcadyan 802.11N Wireless Adapter - -usb:v083Ap8522* - ID_PRODUCT_FROM_DATABASE=Arcadyan 802.11N Wireless Adapter - -usb:v083Ap8541* - ID_PRODUCT_FROM_DATABASE=WN4501F 802.11g Wireless Adapter [Intersil ISL3887] - -usb:v083ApA512* - ID_PRODUCT_FROM_DATABASE=Arcadyan 802.11N Wireless Adapter - -usb:v083ApA618* - ID_PRODUCT_FROM_DATABASE=SMCWUSBS-N EZ Connect N Draft 11n Wireless Adapter [Ralink RT2870] - -usb:v083ApA701* - ID_PRODUCT_FROM_DATABASE=SMCWUSBS-N3 EZ Connect N Wireless Adapter [Ralink RT3070] - -usb:v083ApB004* - ID_PRODUCT_FROM_DATABASE=CPWUE001 USB/Ethernet Adapter - -usb:v083ApB522* - ID_PRODUCT_FROM_DATABASE=SMCWUSBS-N2 EZ Connect N Wireless Adapter [Ralink RT2870] - -usb:v083ApBB01* - ID_PRODUCT_FROM_DATABASE=BlueExpert Bluetooth Device - -usb:v083ApC003* - ID_PRODUCT_FROM_DATABASE=802.11b Wireless Adapter - -usb:v083ApC501* - ID_PRODUCT_FROM_DATABASE=Zoom 4410 Wireless-G [Intersil ISL3887] - -usb:v083ApC561* - ID_PRODUCT_FROM_DATABASE=802.11a/g Wireless Adapter - -usb:v083ApD522* - ID_PRODUCT_FROM_DATABASE=Speedport W 102 Stick IEEE 802.11n USB 2.0 Adapter - -usb:v083ApE501* - ID_PRODUCT_FROM_DATABASE=ZD1211B - -usb:v083ApE503* - ID_PRODUCT_FROM_DATABASE=Arcadyan WN4501 802.11b/g - -usb:v083ApE506* - ID_PRODUCT_FROM_DATABASE=WUS-201 802.11bg - -usb:v083ApF501* - ID_PRODUCT_FROM_DATABASE=802.11g Wireless Adapter - -usb:v083ApF502* - ID_PRODUCT_FROM_DATABASE=802.11g Wireless Adapter - -usb:v083ApF522* - ID_PRODUCT_FROM_DATABASE=Arcadyan WN7512 802.11n - -usb:v083F* - ID_VENDOR_FROM_DATABASE=Global Village - -usb:v083FpB100* - ID_PRODUCT_FROM_DATABASE=TelePort V.90 Fax/Modem - -usb:v0840* - ID_VENDOR_FROM_DATABASE=Argosy Research, Inc. - -usb:v0840p0060* - ID_PRODUCT_FROM_DATABASE=Storage Adapter Bridge Module - -usb:v0841* - ID_VENDOR_FROM_DATABASE=Rioport.com, Inc. - -usb:v0841p0001* - ID_PRODUCT_FROM_DATABASE=Rio 500 - -usb:v0844* - ID_VENDOR_FROM_DATABASE=Welland Industrial Co., Ltd - -usb:v0846* - ID_VENDOR_FROM_DATABASE=NetGear, Inc. - -usb:v0846p1001* - ID_PRODUCT_FROM_DATABASE=EA101 10 Mbps 10BASE-T Ethernet [Kawasaki LSI KL5KLUSB101B] - -usb:v0846p1002* - ID_PRODUCT_FROM_DATABASE=Ethernet - -usb:v0846p1020* - ID_PRODUCT_FROM_DATABASE=FA101 Fast Ethernet USB 1.1 - -usb:v0846p1040* - ID_PRODUCT_FROM_DATABASE=FA120 Fast Ethernet USB 2.0 [Asix AX88172 / AX8817x] - -usb:v0846p4110* - ID_PRODUCT_FROM_DATABASE=MA111(v1) 802.11b Wireless [Intersil Prism 3.0] - -usb:v0846p4200* - ID_PRODUCT_FROM_DATABASE=WG121(v1) 54 Mbps Wireless [Intersil ISL3886] - -usb:v0846p4210* - ID_PRODUCT_FROM_DATABASE=WG121(v2) 54 Mbps Wireless [Intersil ISL3886] - -usb:v0846p4220* - ID_PRODUCT_FROM_DATABASE=WG111(v1) 54 Mbps Wireless [Intersil ISL3886] - -usb:v0846p4230* - ID_PRODUCT_FROM_DATABASE=MA111(v2) 802.11b Wireless [SIS SIS 162] - -usb:v0846p4240* - ID_PRODUCT_FROM_DATABASE=WG111(v1) rev 2 54 Mbps Wireless [Intersil ISL3887] - -usb:v0846p4260* - ID_PRODUCT_FROM_DATABASE=WG111v3 54 Mbps Wireless [realtek RTL8187B] - -usb:v0846p4300* - ID_PRODUCT_FROM_DATABASE=WG111U Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX] - -usb:v0846p4301* - ID_PRODUCT_FROM_DATABASE=WG111U (no firmware) Double 108 Mbps Wireless [Atheros AR5004X / AR5005UX] - -usb:v0846p5F00* - ID_PRODUCT_FROM_DATABASE=WPN111 802.11g Wireless Adapter [Atheros AR5523] - -usb:v0846p6A00* - ID_PRODUCT_FROM_DATABASE=WG111v2 54 Mbps Wireless [RealTek RTL8187L] - -usb:v0846p7100* - ID_PRODUCT_FROM_DATABASE=WN121T RangeMax Next Wireless-N [Marvell TopDog] - -usb:v0846p9000* - ID_PRODUCT_FROM_DATABASE=WN111(v1) RangeMax Next Wireless [Marvell 88W8362+88W8060] - -usb:v0846p9001* - ID_PRODUCT_FROM_DATABASE=WN111(v2) RangeMax Next Wireless [Atheros AR9170+AR9101] - -usb:v0846p9010* - ID_PRODUCT_FROM_DATABASE=WNDA3100v1 802.11abgn [Atheros AR9170+AR9104] - -usb:v0846p9011* - ID_PRODUCT_FROM_DATABASE=WNDA3100v2 802.11abgn [Broadcom BCM4323] - -usb:v0846p9012* - ID_PRODUCT_FROM_DATABASE=WNDA4100 802.11abgn 3x3:3 [Ralink RT3573] - -usb:v0846p9018* - ID_PRODUCT_FROM_DATABASE=WNDA3200 802.11abgn Wireless Adapter [Atheros AR7010+AR9280] - -usb:v0846p9020* - ID_PRODUCT_FROM_DATABASE=WNA3100(v1) Wireless-N 300 [Broadcom BCM43231] - -usb:v0846p9030* - ID_PRODUCT_FROM_DATABASE=WNA1100 Wireless-N 150 [Atheros AR9271] - -usb:v0846p9040* - ID_PRODUCT_FROM_DATABASE=WNA1000 Wireless-N 150 [Atheros AR9170+AR9101] - -usb:v0846p9041* - ID_PRODUCT_FROM_DATABASE=WNA1000M 802.11bgn [Realtek RTL8188CUS] - -usb:v0846pA001* - ID_PRODUCT_FROM_DATABASE=PA101 10 Mbps HPNA Home Phoneline RJ-1 - -usb:v084D* - ID_VENDOR_FROM_DATABASE=Minton Optic Industry Co., Inc. - -usb:v084Dp0001* - ID_PRODUCT_FROM_DATABASE=Jenoptik JD800i - -usb:v084Dp0003* - ID_PRODUCT_FROM_DATABASE=S-Cam F5/D-Link DSC-350 Digital Camera - -usb:v084Dp0011* - ID_PRODUCT_FROM_DATABASE=Argus DC3500 Digital Camera - -usb:v084Dp0014* - ID_PRODUCT_FROM_DATABASE=Praktica DC 32 - -usb:v084Dp0019* - ID_PRODUCT_FROM_DATABASE=Praktica DPix3000 - -usb:v084Dp0025* - ID_PRODUCT_FROM_DATABASE=Praktica DC 60 - -usb:v084Dp1001* - ID_PRODUCT_FROM_DATABASE=ScanHex SX-35d - -usb:v084E* - ID_VENDOR_FROM_DATABASE=KB Gear - -usb:v084Ep0001* - ID_PRODUCT_FROM_DATABASE=JamCam Camera - -usb:v084Ep1001* - ID_PRODUCT_FROM_DATABASE=Jam Studio Tablet - -usb:v084Ep1002* - ID_PRODUCT_FROM_DATABASE=Pablo Tablet - -usb:v084F* - ID_VENDOR_FROM_DATABASE=Empeg - -usb:v084Fp0001* - ID_PRODUCT_FROM_DATABASE=Empeg-Car Mark I/II Player - -usb:v0850* - ID_VENDOR_FROM_DATABASE=Fast Point Technologies, Inc. - -usb:v0851* - ID_VENDOR_FROM_DATABASE=Macronix International Co., Ltd - -usb:v0851p1542* - ID_PRODUCT_FROM_DATABASE=SiPix Blink - -usb:v0851p1543* - ID_PRODUCT_FROM_DATABASE=Maxell WS30 Slim Digital Camera, or Pandigital PI8004W01 digital photo frame - -usb:v0851pA168* - ID_PRODUCT_FROM_DATABASE=MXIC - -usb:v0852* - ID_VENDOR_FROM_DATABASE=CSEM - -usb:v0853* - ID_VENDOR_FROM_DATABASE=Topre Corporation - -usb:v0853p0100* - ID_PRODUCT_FROM_DATABASE=HHKB Professional - -usb:v0854* - ID_VENDOR_FROM_DATABASE=ActiveWire, Inc. - -usb:v0854p0100* - ID_PRODUCT_FROM_DATABASE=I/O Board - -usb:v0854p0101* - ID_PRODUCT_FROM_DATABASE=I/O Board, rev1 - -usb:v0856* - ID_VENDOR_FROM_DATABASE=B&B Electronics - -usb:v0856pAC01* - ID_PRODUCT_FROM_DATABASE=uLinks USOTL4 RS422/485 Adapter - -usb:v0858* - ID_VENDOR_FROM_DATABASE=Hitachi Maxell, Ltd - -usb:v0858p3102* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0858pFFFF* - ID_PRODUCT_FROM_DATABASE=Maxell module with BlueCore in DFU mode - -usb:v0859* - ID_VENDOR_FROM_DATABASE=Minolta Systems Laboratory, Inc. - -usb:v085A* - ID_VENDOR_FROM_DATABASE=Xircom - -usb:v085Ap0001* - ID_PRODUCT_FROM_DATABASE=Portstation Dual Serial Port - -usb:v085Ap0003* - ID_PRODUCT_FROM_DATABASE=Portstation Paraller Port - -usb:v085Ap0008* - ID_PRODUCT_FROM_DATABASE=Ethernet - -usb:v085Ap0009* - ID_PRODUCT_FROM_DATABASE=Ethernet - -usb:v085Ap000B* - ID_PRODUCT_FROM_DATABASE=Portstation Dual PS/2 Port - -usb:v085Ap0021* - ID_PRODUCT_FROM_DATABASE=1 port to Serial Converter - -usb:v085Ap0022* - ID_PRODUCT_FROM_DATABASE=Parallel Port - -usb:v085Ap0023* - ID_PRODUCT_FROM_DATABASE=2 port to Serial Converter - -usb:v085Ap0024* - ID_PRODUCT_FROM_DATABASE=Parallel Port - -usb:v085Ap0027* - ID_PRODUCT_FROM_DATABASE=1 port to Serial Converter - -usb:v085Ap0028* - ID_PRODUCT_FROM_DATABASE=PortGear to SCSI Converter - -usb:v085Ap0032* - ID_PRODUCT_FROM_DATABASE=PortStation SCSI Module - -usb:v085Ap003C* - ID_PRODUCT_FROM_DATABASE=Bluetooth Adapter - -usb:v085Ap0299* - ID_PRODUCT_FROM_DATABASE=Colorvision, Inc. Monitor Spyder - -usb:v085Ap8021* - ID_PRODUCT_FROM_DATABASE=1 port to Serial - -usb:v085Ap8023* - ID_PRODUCT_FROM_DATABASE=2 port to Serial - -usb:v085Ap8027* - ID_PRODUCT_FROM_DATABASE=PGSDB9 Serial Port - -usb:v085C* - ID_VENDOR_FROM_DATABASE=ColorVision, Inc. - -usb:v085Cp0200* - ID_PRODUCT_FROM_DATABASE=Monitor Spyder - -usb:v0862* - ID_VENDOR_FROM_DATABASE=Teletrol Systems, Inc. - -usb:v0863* - ID_VENDOR_FROM_DATABASE=Filanet Corp. - -usb:v0864* - ID_VENDOR_FROM_DATABASE=NetGear, Inc. - -usb:v0864p4100* - ID_PRODUCT_FROM_DATABASE=MA101 802.11b Adapter - -usb:v0864p4102* - ID_PRODUCT_FROM_DATABASE=MA101 802.11b Adapter - -usb:v0867* - ID_VENDOR_FROM_DATABASE=Data Translation, Inc. - -usb:v0867p9812* - ID_PRODUCT_FROM_DATABASE=ECON Data acquisition unit - -usb:v0867p9816* - ID_PRODUCT_FROM_DATABASE=DT9816 ECON data acquisition module - -usb:v0867p9836* - ID_PRODUCT_FROM_DATABASE=DT9836 data acquisition card - -usb:v086A* - ID_VENDOR_FROM_DATABASE=Emagic Soft- und Hardware GmbH - -usb:v086Ap0001* - ID_PRODUCT_FROM_DATABASE=Unitor8 - -usb:v086Ap0002* - ID_PRODUCT_FROM_DATABASE=AMT8 - -usb:v086Ap0003* - ID_PRODUCT_FROM_DATABASE=MT4 - -usb:v086C* - ID_VENDOR_FROM_DATABASE=DeTeWe - Deutsche Telephonwerke AG & Co. - -usb:v086Cp1001* - ID_PRODUCT_FROM_DATABASE=Eumex 504PC ISDN TA - -usb:v086Cp1002* - ID_PRODUCT_FROM_DATABASE=Eumex 504PC (FlashLoad) - -usb:v086Cp1003* - ID_PRODUCT_FROM_DATABASE=TA33 ISDN TA - -usb:v086Cp1004* - ID_PRODUCT_FROM_DATABASE=TA33 (FlashLoad) - -usb:v086Cp1005* - ID_PRODUCT_FROM_DATABASE=Eumex 604PC HomeNet - -usb:v086Cp1006* - ID_PRODUCT_FROM_DATABASE=Eumex 604PC HomeNet (FlashLoad) - -usb:v086Cp1007* - ID_PRODUCT_FROM_DATABASE=Eumex 704PC DSL - -usb:v086Cp1008* - ID_PRODUCT_FROM_DATABASE=Eumex 704PC DSL (FlashLoad) - -usb:v086Cp1009* - ID_PRODUCT_FROM_DATABASE=Eumex 724PC DSL - -usb:v086Cp100A* - ID_PRODUCT_FROM_DATABASE=Eumex 724PC DSL (FlashLoad) - -usb:v086Cp100B* - ID_PRODUCT_FROM_DATABASE=OpenCom 30 - -usb:v086Cp100C* - ID_PRODUCT_FROM_DATABASE=OpenCom 30 (FlashLoad) - -usb:v086Cp100D* - ID_PRODUCT_FROM_DATABASE=BeeTel Home 100 - -usb:v086Cp100E* - ID_PRODUCT_FROM_DATABASE=BeeTel Home 100 (FlashLoad) - -usb:v086Cp1011* - ID_PRODUCT_FROM_DATABASE=USB2DECT - -usb:v086Cp1012* - ID_PRODUCT_FROM_DATABASE=USB2DECT (FlashLoad) - -usb:v086Cp1013* - ID_PRODUCT_FROM_DATABASE=Eumex 704PC LAN - -usb:v086Cp1014* - ID_PRODUCT_FROM_DATABASE=Eumex 704PC LAN (FlashLoad) - -usb:v086Cp1019* - ID_PRODUCT_FROM_DATABASE=Eumex 504 SE - -usb:v086Cp101A* - ID_PRODUCT_FROM_DATABASE=Eumex 504 SE (Flash-Mode) - -usb:v086Cp1021* - ID_PRODUCT_FROM_DATABASE=OpenCom 40 - -usb:v086Cp1022* - ID_PRODUCT_FROM_DATABASE=OpenCom 40 (FlashLoad) - -usb:v086Cp1023* - ID_PRODUCT_FROM_DATABASE=OpenCom 45 - -usb:v086Cp1024* - ID_PRODUCT_FROM_DATABASE=OpenCom 45 (FlashLoad) - -usb:v086Cp1025* - ID_PRODUCT_FROM_DATABASE=Sinus 61 data - -usb:v086Cp1029* - ID_PRODUCT_FROM_DATABASE=dect BOX - -usb:v086Cp102C* - ID_PRODUCT_FROM_DATABASE=Eumex 604PC HomeNet [FlashLoad] - -usb:v086Cp1030* - ID_PRODUCT_FROM_DATABASE=Eumex 704PC DSL [FlashLoad] - -usb:v086Cp1032* - ID_PRODUCT_FROM_DATABASE=OpenCom 40 [FlashLoad] - -usb:v086Cp1033* - ID_PRODUCT_FROM_DATABASE=OpenCom 30 plus - -usb:v086Cp1034* - ID_PRODUCT_FROM_DATABASE=OpenCom 30 plus (FlashLoad) - -usb:v086Cp1041* - ID_PRODUCT_FROM_DATABASE=Eumex 220PC - -usb:v086Cp1042* - ID_PRODUCT_FROM_DATABASE=Eumex 220PC (FlashMode) - -usb:v086Cp1055* - ID_PRODUCT_FROM_DATABASE=Eumex 220 Version 2 ISDN TA - -usb:v086Cp1056* - ID_PRODUCT_FROM_DATABASE=Eumex 220 Version 2 ISDN TA (Flash-Mode) - -usb:v086Cp2000* - ID_PRODUCT_FROM_DATABASE=OpenCom 1000 - -usb:v086E* - ID_VENDOR_FROM_DATABASE=System TALKS, Inc. - -usb:v086Ep1920* - ID_PRODUCT_FROM_DATABASE=SGC-X2UL - -usb:v086F* - ID_VENDOR_FROM_DATABASE=MEC IMEX, Inc. - -usb:v0870* - ID_VENDOR_FROM_DATABASE=Metricom - -usb:v0870p0001* - ID_PRODUCT_FROM_DATABASE=Ricochet GS - -usb:v0871* - ID_VENDOR_FROM_DATABASE=SanDisk, Inc. - -usb:v0871p0001* - ID_PRODUCT_FROM_DATABASE=SDDR-01 Compact Flash Reader - -usb:v0871p0002* - ID_PRODUCT_FROM_DATABASE=SDDR-31 Compact Flash Reader - -usb:v0871p0005* - ID_PRODUCT_FROM_DATABASE=SDDR-05 Compact Flash Reader - -usb:v0873* - ID_VENDOR_FROM_DATABASE=Xpeed, Inc. - -usb:v0874* - ID_VENDOR_FROM_DATABASE=A-Tec Subsystem, Inc. - -usb:v0879* - ID_VENDOR_FROM_DATABASE=Comtrol Corp. - -usb:v087C* - ID_VENDOR_FROM_DATABASE=Adesso/Kbtek America, Inc. - -usb:v087D* - ID_VENDOR_FROM_DATABASE=Jaton Corp. - -usb:v087Dp5704* - ID_PRODUCT_FROM_DATABASE=Ethernet - -usb:v087E* - ID_VENDOR_FROM_DATABASE=Fujitsu Computer Products of America - -usb:v087F* - ID_VENDOR_FROM_DATABASE=QualCore Logic Inc. - -usb:v0880* - ID_VENDOR_FROM_DATABASE=APT Technologies, Inc. - -usb:v0883* - ID_VENDOR_FROM_DATABASE=Recording Industry Association of America (RIAA) - -usb:v0885* - ID_VENDOR_FROM_DATABASE=Boca Research, Inc. - -usb:v0886* - ID_VENDOR_FROM_DATABASE=XAC Automation Corp. - -usb:v0886p0630* - ID_PRODUCT_FROM_DATABASE=Intel PC Camera CS630 - -usb:v0887* - ID_VENDOR_FROM_DATABASE=Hannstar Electronics Corp. - -usb:v088A* - ID_VENDOR_FROM_DATABASE=TechTools - -usb:v088Ap1002* - ID_PRODUCT_FROM_DATABASE=DigiView DV3100 - -usb:v088B* - ID_VENDOR_FROM_DATABASE=MassWorks, Inc. - -usb:v088Bp4944* - ID_PRODUCT_FROM_DATABASE=MassWorks ID-75 TouchScreen - -usb:v088C* - ID_VENDOR_FROM_DATABASE=Swecoin AB - -usb:v088Cp2030* - ID_PRODUCT_FROM_DATABASE=Ticket Printer TTP 2030 - -usb:v088E* - ID_VENDOR_FROM_DATABASE=iLok - -usb:v088Ep5036* - ID_PRODUCT_FROM_DATABASE=Portable secure storage for software licenses - -usb:v0892* - ID_VENDOR_FROM_DATABASE=DioGraphy, Inc. - -usb:v0892p0101* - ID_PRODUCT_FROM_DATABASE=Smartdio Reader/Writer - -usb:v0897* - ID_VENDOR_FROM_DATABASE=Lauterbach - -usb:v0897p0002* - ID_PRODUCT_FROM_DATABASE=Power Debug/Power Debug II - -usb:v089C* - ID_VENDOR_FROM_DATABASE=United Technologies Research Cntr. - -usb:v089D* - ID_VENDOR_FROM_DATABASE=Icron Technologies Corp. - -usb:v089E* - ID_VENDOR_FROM_DATABASE=NST Co., Ltd - -usb:v089F* - ID_VENDOR_FROM_DATABASE=Primex Aerospace Co. - -usb:v08A5* - ID_VENDOR_FROM_DATABASE=e9, Inc. - -usb:v08A6* - ID_VENDOR_FROM_DATABASE=Toshiba TEC - -usb:v08A6p0051* - ID_PRODUCT_FROM_DATABASE=B-SV4 - -usb:v08A8* - ID_VENDOR_FROM_DATABASE=Andrea Electronics - -usb:v08A9* - ID_VENDOR_FROM_DATABASE=CWAV Inc. - -usb:v08A9p0005* - ID_PRODUCT_FROM_DATABASE=USBee ZX - -usb:v08A9p0009* - ID_PRODUCT_FROM_DATABASE=USBee SX - -usb:v08A9p0012* - ID_PRODUCT_FROM_DATABASE=USBee AX-Standard - -usb:v08A9p0013* - ID_PRODUCT_FROM_DATABASE=USBee AX-Plus - -usb:v08A9p0014* - ID_PRODUCT_FROM_DATABASE=USBee AX-Pro - -usb:v08A9p0015* - ID_PRODUCT_FROM_DATABASE=USBee DX - -usb:v08AE* - ID_VENDOR_FROM_DATABASE=Macally (Mace Group, Inc.) - -usb:v08B4* - ID_VENDOR_FROM_DATABASE=Sorenson Vision, Inc. - -usb:v08B7* - ID_VENDOR_FROM_DATABASE=NATSU - -usb:v08B7p0001* - ID_PRODUCT_FROM_DATABASE=Playstation adapter - -usb:v08B8* - ID_VENDOR_FROM_DATABASE=J. Gordon Electronic Design, Inc. - -usb:v08B8p01F4* - ID_PRODUCT_FROM_DATABASE=USBSIMM1 - -usb:v08B9* - ID_VENDOR_FROM_DATABASE=RadioShack Corp. (Tandy) - -usb:v08BB* - ID_VENDOR_FROM_DATABASE=Texas Instruments - -usb:v08BBp2702* - ID_PRODUCT_FROM_DATABASE=Speakers - -usb:v08BBp2704* - ID_PRODUCT_FROM_DATABASE=Audio Codec - -usb:v08BBp2706* - ID_PRODUCT_FROM_DATABASE=PCM2706 Audio Codec - -usb:v08BBp2900* - ID_PRODUCT_FROM_DATABASE=PCM2900 Audio Codec - -usb:v08BBp2901* - ID_PRODUCT_FROM_DATABASE=PCM2901 Audio Codec - -usb:v08BBp2902* - ID_PRODUCT_FROM_DATABASE=PCM2902 Audio Codec - -usb:v08BBp2904* - ID_PRODUCT_FROM_DATABASE=PCM2904 Audio Codec - -usb:v08BBp2910* - ID_PRODUCT_FROM_DATABASE=PCM2912 Audio Codec - -usb:v08BBp29B0* - ID_PRODUCT_FROM_DATABASE=PCM2900B Audio CODEC - -usb:v08BBp29B2* - ID_PRODUCT_FROM_DATABASE=PCM2902 Audio CODEC - -usb:v08BBp29B3* - ID_PRODUCT_FROM_DATABASE=PCM2903B Audio CODEC - -usb:v08BBp29B6* - ID_PRODUCT_FROM_DATABASE=PCM2906B Audio CODEC - -usb:v08BBp29C0* - ID_PRODUCT_FROM_DATABASE=PCM2900C Audio CODEC - -usb:v08BBp29C2* - ID_PRODUCT_FROM_DATABASE=PCM2902C Audio CODEC - -usb:v08BBp29C3* - ID_PRODUCT_FROM_DATABASE=PCM2903C Audio CODEC - -usb:v08BBp29C6* - ID_PRODUCT_FROM_DATABASE=PCM2906C Audio CODEC - -usb:v08BD* - ID_VENDOR_FROM_DATABASE=Citizen Watch Co., Ltd - -usb:v08BDp0208* - ID_PRODUCT_FROM_DATABASE=CLP-521 Label Printer - -usb:v08BDp1100* - ID_PRODUCT_FROM_DATABASE=X1-USB Floppy - -usb:v08C3* - ID_VENDOR_FROM_DATABASE=Precise Biometrics - -usb:v08C3p0001* - ID_PRODUCT_FROM_DATABASE=100 SC - -usb:v08C3p0002* - ID_PRODUCT_FROM_DATABASE=100 A - -usb:v08C3p0003* - ID_PRODUCT_FROM_DATABASE=100 SC BioKeyboard - -usb:v08C3p0006* - ID_PRODUCT_FROM_DATABASE=100 A BioKeyboard - -usb:v08C3p0100* - ID_PRODUCT_FROM_DATABASE=100 MC ISP - -usb:v08C3p0101* - ID_PRODUCT_FROM_DATABASE=100 MC FingerPrint and SmartCard Reader - -usb:v08C3p0300* - ID_PRODUCT_FROM_DATABASE=100 AX - -usb:v08C3p0400* - ID_PRODUCT_FROM_DATABASE=100 SC - -usb:v08C3p0401* - ID_PRODUCT_FROM_DATABASE=150 MC - -usb:v08C3p0402* - ID_PRODUCT_FROM_DATABASE=200 MC FingerPrint and SmartCard Reader - -usb:v08C3p0404* - ID_PRODUCT_FROM_DATABASE=100 SC Upgrade - -usb:v08C3p0405* - ID_PRODUCT_FROM_DATABASE=150 MC Upgrade - -usb:v08C3p0406* - ID_PRODUCT_FROM_DATABASE=100 MC Upgrade - -usb:v08C4* - ID_VENDOR_FROM_DATABASE=Proxim, Inc. - -usb:v08C4p0100* - ID_PRODUCT_FROM_DATABASE=Skyline 802.11b Wireless Adapter - -usb:v08C4p02F2* - ID_PRODUCT_FROM_DATABASE=Farallon Home Phoneline Adapter - -usb:v08C7* - ID_VENDOR_FROM_DATABASE=Key Nice Enterprise Co., Ltd - -usb:v08C8* - ID_VENDOR_FROM_DATABASE=2Wire, Inc. - -usb:v08C9* - ID_VENDOR_FROM_DATABASE=Nippon Telegraph and Telephone Corp. - -usb:v08CA* - ID_VENDOR_FROM_DATABASE=Aiptek International, Inc. - -usb:v08CAp0001* - ID_PRODUCT_FROM_DATABASE=Tablet - -usb:v08CAp0010* - ID_PRODUCT_FROM_DATABASE=Tablet - -usb:v08CAp0020* - ID_PRODUCT_FROM_DATABASE=APT-6000U Tablet - -usb:v08CAp0021* - ID_PRODUCT_FROM_DATABASE=APT-2 Tablet - -usb:v08CAp0022* - ID_PRODUCT_FROM_DATABASE=Tablet - -usb:v08CAp0023* - ID_PRODUCT_FROM_DATABASE=Tablet - -usb:v08CAp0024* - ID_PRODUCT_FROM_DATABASE=Tablet - -usb:v08CAp0100* - ID_PRODUCT_FROM_DATABASE=Pen Drive - -usb:v08CAp0102* - ID_PRODUCT_FROM_DATABASE=DualCam - -usb:v08CAp0103* - ID_PRODUCT_FROM_DATABASE=Pocket DV Digital Camera - -usb:v08CAp0104* - ID_PRODUCT_FROM_DATABASE=Pocket DVII - -usb:v08CAp0105* - ID_PRODUCT_FROM_DATABASE=Mega DV(Disk) - -usb:v08CAp0106* - ID_PRODUCT_FROM_DATABASE=Pocket DV3100+ - -usb:v08CAp0107* - ID_PRODUCT_FROM_DATABASE=Pocket DV3100 - -usb:v08CAp0109* - ID_PRODUCT_FROM_DATABASE=Nisis DV4 Digital Camera - -usb:v08CAp010A* - ID_PRODUCT_FROM_DATABASE=Trust 738AV LCD PV Mass Storage - -usb:v08CAp0111* - ID_PRODUCT_FROM_DATABASE=PenCam VGA Plus - -usb:v08CAp2008* - ID_PRODUCT_FROM_DATABASE=Mini PenCam 2 - -usb:v08CAp2010* - ID_PRODUCT_FROM_DATABASE=Pocket CAM 3 Mega (webcam) - -usb:v08CAp2011* - ID_PRODUCT_FROM_DATABASE=Pocket CAM 3 Mega (storage) - -usb:v08CAp2016* - ID_PRODUCT_FROM_DATABASE=PocketCam 2 Mega - -usb:v08CAp2018* - ID_PRODUCT_FROM_DATABASE=Pencam SD 2M - -usb:v08CAp2020* - ID_PRODUCT_FROM_DATABASE=Slim 3000F - -usb:v08CAp2022* - ID_PRODUCT_FROM_DATABASE=Slim 3200 - -usb:v08CAp2024* - ID_PRODUCT_FROM_DATABASE=Pocket DV3500 - -usb:v08CAp2028* - ID_PRODUCT_FROM_DATABASE=Pocket Cam4M - -usb:v08CAp2040* - ID_PRODUCT_FROM_DATABASE=Pocket DV4100M - -usb:v08CAp2042* - ID_PRODUCT_FROM_DATABASE=Pocket DV5100M Composite Device - -usb:v08CAp2043* - ID_PRODUCT_FROM_DATABASE=Pocket DV5100M (Disk) - -usb:v08CAp2060* - ID_PRODUCT_FROM_DATABASE=Pocket DV5300 - -usb:v08CD* - ID_VENDOR_FROM_DATABASE=Jue Hsun Ind. Corp. - -usb:v08CE* - ID_VENDOR_FROM_DATABASE=Long Well Electronics Corp. - -usb:v08CF* - ID_VENDOR_FROM_DATABASE=Productivity Enhancement Products - -usb:v08D1* - ID_VENDOR_FROM_DATABASE=smartBridges, Inc. - -usb:v08D1p0001* - ID_PRODUCT_FROM_DATABASE=smartNIC Ethernet [catc] - -usb:v08D1p0003* - ID_PRODUCT_FROM_DATABASE=smartNIC 2 PnP Ethernet - -usb:v08D3* - ID_VENDOR_FROM_DATABASE=Virtual Ink - -usb:v08D4* - ID_VENDOR_FROM_DATABASE=Fujitsu Siemens Computers - -usb:v08D4p0009* - ID_PRODUCT_FROM_DATABASE=SCR SmartCard Reader - -usb:v08D8* - ID_VENDOR_FROM_DATABASE=IXXAT Automation GmbH - -usb:v08D8p0002* - ID_PRODUCT_FROM_DATABASE=USB-to-CAN compact - -usb:v08D8p0003* - ID_PRODUCT_FROM_DATABASE=USB-to-CAN II - -usb:v08D8p0100* - ID_PRODUCT_FROM_DATABASE=USB-to-CAN - -usb:v08D9* - ID_VENDOR_FROM_DATABASE=Increment P Corp. - -usb:v08DD* - ID_VENDOR_FROM_DATABASE=Billionton Systems, Inc. - -usb:v08DDp0112* - ID_PRODUCT_FROM_DATABASE=Wireless LAN Adapter - -usb:v08DDp0113* - ID_PRODUCT_FROM_DATABASE=Wireless LAN Adapter - -usb:v08DDp0986* - ID_PRODUCT_FROM_DATABASE=USB-100N Ethernet [pegasus] - -usb:v08DDp0987* - ID_PRODUCT_FROM_DATABASE=USBLP-100 HomePNA Ethernet [pegasus] - -usb:v08DDp0988* - ID_PRODUCT_FROM_DATABASE=USBEL-100 Ethernet [pegasus] - -usb:v08DDp1986* - ID_PRODUCT_FROM_DATABASE=10/100 LAN Adapter - -usb:v08DDp2103* - ID_PRODUCT_FROM_DATABASE=DVB-T TV-Tuner Card-R - -usb:v08DDp8511* - ID_PRODUCT_FROM_DATABASE=USBE-100 Ethernet [pegasus2] - -usb:v08DDp90FF* - ID_PRODUCT_FROM_DATABASE=USB2AR Ethernet - -usb:v08DE* - ID_VENDOR_FROM_DATABASE=??? - -usb:v08DEp7A01* - ID_PRODUCT_FROM_DATABASE=802.11b Adapter - -usb:v08DF* - ID_VENDOR_FROM_DATABASE=Spyrus, Inc. - -usb:v08DFp0001* - ID_PRODUCT_FROM_DATABASE=Rosetta Token V1 - -usb:v08DFp0002* - ID_PRODUCT_FROM_DATABASE=Rosetta Token V2 - -usb:v08DFp0003* - ID_PRODUCT_FROM_DATABASE=Rosetta Token V3 - -usb:v08DFp0A00* - ID_PRODUCT_FROM_DATABASE=Lynks Interface - -usb:v08E3* - ID_VENDOR_FROM_DATABASE=Olitec, Inc. - -usb:v08E3p0002* - ID_PRODUCT_FROM_DATABASE=USB-RS232 Bridge - -usb:v08E3p0100* - ID_PRODUCT_FROM_DATABASE=Interface ADSL - -usb:v08E3p0101* - ID_PRODUCT_FROM_DATABASE=Interface ADSL - -usb:v08E3p0102* - ID_PRODUCT_FROM_DATABASE=ADSL - -usb:v08E3p0301* - ID_PRODUCT_FROM_DATABASE=RNIS - -usb:v08E4* - ID_VENDOR_FROM_DATABASE=Pioneer Corp. - -usb:v08E5* - ID_VENDOR_FROM_DATABASE=Litronic - -usb:v08E6* - ID_VENDOR_FROM_DATABASE=Gemplus - -usb:v08E6p0001* - ID_PRODUCT_FROM_DATABASE=GemPC-Touch 430 - -usb:v08E6p0430* - ID_PRODUCT_FROM_DATABASE=GemPC430 SmartCard Reader - -usb:v08E6p0432* - ID_PRODUCT_FROM_DATABASE=GemPC432 SmartCard Reader - -usb:v08E6p0435* - ID_PRODUCT_FROM_DATABASE=GemPC435 SmartCard Reader - -usb:v08E6p0437* - ID_PRODUCT_FROM_DATABASE=GemPC433 SL SmartCard Reader - -usb:v08E6p1359* - ID_PRODUCT_FROM_DATABASE=UA SECURE STORAGE TOKEN - -usb:v08E6p2202* - ID_PRODUCT_FROM_DATABASE=Gem e-Seal Pro Token - -usb:v08E6p3437* - ID_PRODUCT_FROM_DATABASE=GemPC Twin SmartCard Reader - -usb:v08E6p3438* - ID_PRODUCT_FROM_DATABASE=GemPC Key SmartCard Reader - -usb:v08E6p3478* - ID_PRODUCT_FROM_DATABASE=PinPad Smart Card Reader - -usb:v08E6p34EC* - ID_PRODUCT_FROM_DATABASE=Compact Smart Card Reader Writer - -usb:v08E6p4433* - ID_PRODUCT_FROM_DATABASE=GemPC433-Swap - -usb:v08E6p5501* - ID_PRODUCT_FROM_DATABASE=GemProx-PU Contactless Smart Card Reader - -usb:v08E6pACE0* - ID_PRODUCT_FROM_DATABASE=UA HYBRID TOKEN - -usb:v08E7* - ID_VENDOR_FROM_DATABASE=Pan-International Wire & Cable - -usb:v08E8* - ID_VENDOR_FROM_DATABASE=Integrated Memory Logic - -usb:v08E9* - ID_VENDOR_FROM_DATABASE=Extended Systems, Inc. - -usb:v08E9p0100* - ID_PRODUCT_FROM_DATABASE=XTNDAccess IrDA Dongle - -usb:v08EA* - ID_VENDOR_FROM_DATABASE=Ericsson, Inc., Blue Ridge Labs - -usb:v08EAp00C9* - ID_PRODUCT_FROM_DATABASE=ADSL Modem HM120dp Loader - -usb:v08EAp00CA* - ID_PRODUCT_FROM_DATABASE=ADSL WAN Modem HM120dp - -usb:v08EAp00CE* - ID_PRODUCT_FROM_DATABASE=HM230d Virtual Bus for Helium - -usb:v08EApABBA* - ID_PRODUCT_FROM_DATABASE=USB Driver for Bluetooth Wireless Technology - -usb:v08EApABBB* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device in DFU State - -usb:v08EC* - ID_VENDOR_FROM_DATABASE=M-Systems Flash Disk Pioneers - -usb:v08ECp0001* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v08ECp0002* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v08ECp0005* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v08ECp0008* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v08ECp0010* - ID_PRODUCT_FROM_DATABASE=DiskOnKey - -usb:v08ECp0011* - ID_PRODUCT_FROM_DATABASE=DiskOnKey - -usb:v08ECp0012* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v08ECp0014* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v08ECp0015* - ID_PRODUCT_FROM_DATABASE=Kingston DataTraveler ELITE - -usb:v08ECp0016* - ID_PRODUCT_FROM_DATABASE=Kingston DataTraveler U3 - -usb:v08ECp0020* - ID_PRODUCT_FROM_DATABASE=TravelDrive Intuix U3 2GB - -usb:v08ECp0021* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v08ECp0022* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v08ECp0023* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v08ECp0024* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v08ECp0025* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v08ECp0026* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v08ECp0027* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v08ECp0028* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v08ECp0029* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v08ECp0030* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v08ECp0822* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v08ECp0832* - ID_PRODUCT_FROM_DATABASE=Hi-Speed Mass Storage Device - -usb:v08ECp0834* - ID_PRODUCT_FROM_DATABASE=M-Disk 220 - -usb:v08ECp0998* - ID_PRODUCT_FROM_DATABASE=Kingston Data Traveler2.0 Disk Driver - -usb:v08ECp0999* - ID_PRODUCT_FROM_DATABASE=Kingston Data Traveler2.0 Disk Driver - -usb:v08ECp1000* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v08ECp2000* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v08ECp2038* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v08ECp2039* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v08ECp204A* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v08ECp204B* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v08ED* - ID_VENDOR_FROM_DATABASE=MediaTek Inc. - -usb:v08EDp0002* - ID_PRODUCT_FROM_DATABASE=CECT M800 memory card - -usb:v08EE* - ID_VENDOR_FROM_DATABASE=CCSI/Hesso - -usb:v08F0* - ID_VENDOR_FROM_DATABASE=Corex Technologies - -usb:v08F1* - ID_VENDOR_FROM_DATABASE=CTI Electronics Corp. - -usb:v08F2* - ID_VENDOR_FROM_DATABASE=Gotop Information Inc. - -usb:v08F2p007F* - ID_PRODUCT_FROM_DATABASE=Super Q2 Tablet - -usb:v08F5* - ID_VENDOR_FROM_DATABASE=SysTec Co., Ltd - -usb:v08F6* - ID_VENDOR_FROM_DATABASE=Logic 3 International, Ltd - -usb:v08F7* - ID_VENDOR_FROM_DATABASE=Vernier - -usb:v08F7p0001* - ID_PRODUCT_FROM_DATABASE=LabPro - -usb:v08F7p0002* - ID_PRODUCT_FROM_DATABASE=EasyTemp/Go!Temp - -usb:v08F7p0003* - ID_PRODUCT_FROM_DATABASE=Go!Link - -usb:v08F7p0004* - ID_PRODUCT_FROM_DATABASE=Go!Motion - -usb:v08F8* - ID_VENDOR_FROM_DATABASE=Keen Top International Enterprise Co., Ltd - -usb:v08F9* - ID_VENDOR_FROM_DATABASE=Wipro Technologies - -usb:v08FA* - ID_VENDOR_FROM_DATABASE=Caere - -usb:v08FB* - ID_VENDOR_FROM_DATABASE=Socket Communications - -usb:v08FC* - ID_VENDOR_FROM_DATABASE=Sicon Cable Technology Co., Ltd - -usb:v08FD* - ID_VENDOR_FROM_DATABASE=Digianswer A/S - -usb:v08FDp0001* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v08FF* - ID_VENDOR_FROM_DATABASE=AuthenTec, Inc. - -usb:v08FFp1600* - ID_PRODUCT_FROM_DATABASE=AES1600 - -usb:v08FFp1610* - ID_PRODUCT_FROM_DATABASE=AES1600 - -usb:v08FFp1660* - ID_PRODUCT_FROM_DATABASE=AES1660 Fingerprint Sensor - -usb:v08FFp1680* - ID_PRODUCT_FROM_DATABASE=AES1660 Fingerprint Sensor - -usb:v08FFp168F* - ID_PRODUCT_FROM_DATABASE=AES1660 Fingerprint Sensor - -usb:v08FFp2500* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp2501* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp2502* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp2503* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp2504* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp2505* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp2506* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp2507* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp2508* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp2509* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp250A* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp250B* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp250C* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp250D* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp250E* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp250F* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp2510* - ID_PRODUCT_FROM_DATABASE=AES2510 - -usb:v08FFp2550* - ID_PRODUCT_FROM_DATABASE=AES2550 Fingerprint Sensor - -usb:v08FFp2580* - ID_PRODUCT_FROM_DATABASE=AES2501 Fingerprint Sensor - -usb:v08FFp2588* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp2589* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp258A* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp258B* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp258C* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp258D* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp258E* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp258F* - ID_PRODUCT_FROM_DATABASE=AES2501 - -usb:v08FFp2660* - ID_PRODUCT_FROM_DATABASE=AES2660 Fingerprint Sensor - -usb:v08FFp2680* - ID_PRODUCT_FROM_DATABASE=AES2660 Fingerprint Sensor - -usb:v08FFp268F* - ID_PRODUCT_FROM_DATABASE=AES2660 Fingerprint Sensor - -usb:v08FFp2810* - ID_PRODUCT_FROM_DATABASE=AES2810 - -usb:v08FFp3400* - ID_PRODUCT_FROM_DATABASE=AES3400 TruePrint Sensor - -usb:v08FFp3401* - ID_PRODUCT_FROM_DATABASE=AES3400 Sensor - -usb:v08FFp3402* - ID_PRODUCT_FROM_DATABASE=AES3400 Sensor - -usb:v08FFp3403* - ID_PRODUCT_FROM_DATABASE=AES3400 Sensor - -usb:v08FFp3404* - ID_PRODUCT_FROM_DATABASE=AES3400 TruePrint Sensor - -usb:v08FFp3405* - ID_PRODUCT_FROM_DATABASE=AES3400 TruePrint Sensor - -usb:v08FFp3406* - ID_PRODUCT_FROM_DATABASE=AES3400 TruePrint Sensor - -usb:v08FFp3407* - ID_PRODUCT_FROM_DATABASE=AES3400 TruePrint Sensor - -usb:v08FFp4902* - ID_PRODUCT_FROM_DATABASE=BioMV with TruePrint AES3500 - -usb:v08FFp4903* - ID_PRODUCT_FROM_DATABASE=BioMV with TruePrint AES3400 - -usb:v08FFp5500* - ID_PRODUCT_FROM_DATABASE=AES4000 - -usb:v08FFp5501* - ID_PRODUCT_FROM_DATABASE=AES4000 TruePrint Sensor - -usb:v08FFp5503* - ID_PRODUCT_FROM_DATABASE=AES4000 TruePrint Sensor - -usb:v08FFp5505* - ID_PRODUCT_FROM_DATABASE=AES4000 TruePrint Sensor - -usb:v08FFp5507* - ID_PRODUCT_FROM_DATABASE=AES4000 TruePrint Sensor - -usb:v08FFp55FF* - ID_PRODUCT_FROM_DATABASE=AES4000 TruePrint Sensor. - -usb:v08FFp5700* - ID_PRODUCT_FROM_DATABASE=AES3500 Fingerprint Reader - -usb:v08FFp5701* - ID_PRODUCT_FROM_DATABASE=AES3500 TruePrint Sensor - -usb:v08FFp5702* - ID_PRODUCT_FROM_DATABASE=AES3500 TruePrint Sensor - -usb:v08FFp5703* - ID_PRODUCT_FROM_DATABASE=AES3500 TruePrint Sensor - -usb:v08FFp5704* - ID_PRODUCT_FROM_DATABASE=AES3500-BZ TruePrint Sensor - -usb:v08FFp5705* - ID_PRODUCT_FROM_DATABASE=AES3500-BZ TruePrint Sensor - -usb:v08FFp5706* - ID_PRODUCT_FROM_DATABASE=AES3500-BZ TruePrint Sensor - -usb:v08FFp5707* - ID_PRODUCT_FROM_DATABASE=AES3500-BZ TruePrint Sensor - -usb:v08FFp5710* - ID_PRODUCT_FROM_DATABASE=AES3500 TruePrint Sensor - -usb:v08FFp5711* - ID_PRODUCT_FROM_DATABASE=AES3500 TruePrint Sensor - -usb:v08FFp5712* - ID_PRODUCT_FROM_DATABASE=AES3500 TruePrint Sensor - -usb:v08FFp5713* - ID_PRODUCT_FROM_DATABASE=AES3500 TruePrint Sensor - -usb:v08FFp5714* - ID_PRODUCT_FROM_DATABASE=AES3500-BZ TruePrint Sensor - -usb:v08FFp5715* - ID_PRODUCT_FROM_DATABASE=AES3500-BZ TruePrint Sensor - -usb:v08FFp5716* - ID_PRODUCT_FROM_DATABASE=AES3500-BZ TruePrint Sensor - -usb:v08FFp5717* - ID_PRODUCT_FROM_DATABASE=AES3500-BZ TruePrint Sensor - -usb:v08FFp5730* - ID_PRODUCT_FROM_DATABASE=AES3500 TruePrint Sensor - -usb:v08FFp5731* - ID_PRODUCT_FROM_DATABASE=AES3500 TruePrint Sensor - -usb:v08FFp5732* - ID_PRODUCT_FROM_DATABASE=AES3500 TruePrint Sensor - -usb:v08FFp5733* - ID_PRODUCT_FROM_DATABASE=AES3500 TruePrint Sensor - -usb:v08FFp5734* - ID_PRODUCT_FROM_DATABASE=AES3500-BZ TruePrint Sensor - -usb:v08FFp5735* - ID_PRODUCT_FROM_DATABASE=AES3500-BZ TruePrint Sensor - -usb:v08FFp5736* - ID_PRODUCT_FROM_DATABASE=AES3500-BZ TruePrint Sensor - -usb:v08FFp5737* - ID_PRODUCT_FROM_DATABASE=AES3500-BZ TruePrint Sensor - -usb:v08FFpAFE3* - ID_PRODUCT_FROM_DATABASE=FingerLoc Sensor Module (Anchor) - -usb:v08FFpAFE4* - ID_PRODUCT_FROM_DATABASE=FingerLoc Sensor Module (Anchor) - -usb:v08FFpAFE5* - ID_PRODUCT_FROM_DATABASE=FingerLoc Sensor Module (Anchor) - -usb:v08FFpAFE6* - ID_PRODUCT_FROM_DATABASE=FingerLoc Sensor Module (Anchor) - -usb:v08FFpFFFD* - ID_PRODUCT_FROM_DATABASE=AES2510 Sensor (USB Emulator) - -usb:v08FFpFFFF* - ID_PRODUCT_FROM_DATABASE=Sensor (Emulator) - -usb:v0900* - ID_VENDOR_FROM_DATABASE=Pinnacle Systems, Inc. - -usb:v0901* - ID_VENDOR_FROM_DATABASE=VST Technologies - -usb:v0901p0001* - ID_PRODUCT_FROM_DATABASE=Hard Drive Adapter (TPP) - -usb:v0901p0002* - ID_PRODUCT_FROM_DATABASE=SigmaDrive Adapter (TPP) - -usb:v0906* - ID_VENDOR_FROM_DATABASE=Faraday Technology Corp. - -usb:v0908* - ID_VENDOR_FROM_DATABASE=ShenZhen SANZHAI Technology Co.,Ltd - -usb:v0908p2701* - ID_PRODUCT_FROM_DATABASE=Spy Pen VGA - -usb:v0909* - ID_VENDOR_FROM_DATABASE=Audio-Technica Corp. - -usb:v090A* - ID_VENDOR_FROM_DATABASE=Trumpion Microelectronics, Inc. - -usb:v090Ap1001* - ID_PRODUCT_FROM_DATABASE=T33520 Flash Card Controller - -usb:v090Ap1100* - ID_PRODUCT_FROM_DATABASE=Comotron C3310 MP3 player - -usb:v090Ap1200* - ID_PRODUCT_FROM_DATABASE=MP3 player - -usb:v090Ap1540* - ID_PRODUCT_FROM_DATABASE=Digitex Container Flash Disk - -usb:v090B* - ID_VENDOR_FROM_DATABASE=Neurosmith - -usb:v090C* - ID_VENDOR_FROM_DATABASE=Silicon Motion, Inc. - Taiwan (formerly Feiya Technology Corp.) - -usb:v090Cp0371* - ID_PRODUCT_FROM_DATABASE=Silicon Motion SM371 Camera - -usb:v090Cp0373* - ID_PRODUCT_FROM_DATABASE=Silicon Motion Camera - -usb:v090Cp037A* - ID_PRODUCT_FROM_DATABASE=Silicon Motion Camera - -usb:v090Cp037B* - ID_PRODUCT_FROM_DATABASE=Silicon Motion Camera - -usb:v090Cp1000* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v090Cp1132* - ID_PRODUCT_FROM_DATABASE=5-in-1 Card Reader - -usb:v090Cp337B* - ID_PRODUCT_FROM_DATABASE=Silicon Motion Camera - -usb:v090Cp3710* - ID_PRODUCT_FROM_DATABASE=Silicon Motion Camera - -usb:v090Cp3720* - ID_PRODUCT_FROM_DATABASE=Silicon Motion Camera - -usb:v090Cp37BC* - ID_PRODUCT_FROM_DATABASE=HP Webcam-101 Integrated Camera - -usb:v090Cp37C0* - ID_PRODUCT_FROM_DATABASE=Silicon Motion Camera - -usb:v090Cp6000* - ID_PRODUCT_FROM_DATABASE=SD/SDHC Card Reader (SG365 / FlexiDrive XC+) - -usb:v090Cp6200* - ID_PRODUCT_FROM_DATABASE=microSD card reader - -usb:v090Cp71B3* - ID_PRODUCT_FROM_DATABASE=SM731 Camera - -usb:v090Cp837B* - ID_PRODUCT_FROM_DATABASE=Silicon Motion Camera - -usb:v090Cp937B* - ID_PRODUCT_FROM_DATABASE=Silicon Motion Camera - -usb:v090CpB370* - ID_PRODUCT_FROM_DATABASE=Silicon Motion SM370 Camera - -usb:v090CpB371* - ID_PRODUCT_FROM_DATABASE=Silicon Motion SM371 Camera - -usb:v090D* - ID_VENDOR_FROM_DATABASE=Multiport Computer Vertriebs GmbH - -usb:v090E* - ID_VENDOR_FROM_DATABASE=Shining Technology, Inc. - -usb:v090F* - ID_VENDOR_FROM_DATABASE=Fujitsu Devices, Inc. - -usb:v0910* - ID_VENDOR_FROM_DATABASE=Alation Systems, Inc. - -usb:v0911* - ID_VENDOR_FROM_DATABASE=Philips Speech Processing - -usb:v0911p149A* - ID_PRODUCT_FROM_DATABASE=SpeechMike II Pro Plus LFH5276 - -usb:v0911p2512* - ID_PRODUCT_FROM_DATABASE=SpeechMike Pro - -usb:v0912* - ID_VENDOR_FROM_DATABASE=Voquette, Inc. - -usb:v0915* - ID_VENDOR_FROM_DATABASE=GlobeSpan, Inc. - -usb:v0915p0001* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v0915p0002* - ID_PRODUCT_FROM_DATABASE=ADSL ATM Modem - -usb:v0915p0005* - ID_PRODUCT_FROM_DATABASE=LAN Modem - -usb:v0915p2000* - ID_PRODUCT_FROM_DATABASE=802.11 Adapter - -usb:v0915p2002* - ID_PRODUCT_FROM_DATABASE=802.11 Adapter - -usb:v0915p8000* - ID_PRODUCT_FROM_DATABASE=ADSL LAN Modem - -usb:v0915p8005* - ID_PRODUCT_FROM_DATABASE=DSL-302G Modem - -usb:v0915p8101* - ID_PRODUCT_FROM_DATABASE=ADSL WAN Modem - -usb:v0915p8102* - ID_PRODUCT_FROM_DATABASE=DSL-200 ADSL Modem - -usb:v0915p8103* - ID_PRODUCT_FROM_DATABASE=DSL-200 ADSL Modem - -usb:v0915p8104* - ID_PRODUCT_FROM_DATABASE=DSL-200 Modem - -usb:v0915p8400* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v0915p8401* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v0915p8402* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v0915p8500* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v0915p8501* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v0917* - ID_VENDOR_FROM_DATABASE=SmartDisk Corp. - -usb:v0917p0001* - ID_PRODUCT_FROM_DATABASE=eFilm Reader-11 SM/CF - -usb:v0917p0002* - ID_PRODUCT_FROM_DATABASE=eFilm Reader-11 SM - -usb:v0917p0003* - ID_PRODUCT_FROM_DATABASE=eFilm Reader-11 CF - -usb:v0917p0200* - ID_PRODUCT_FROM_DATABASE=FireFly - -usb:v0917p0201* - ID_PRODUCT_FROM_DATABASE=FireLite - -usb:v0917p0202* - ID_PRODUCT_FROM_DATABASE=STORAGE ADAPTER (FirePower) - -usb:v0917p0204* - ID_PRODUCT_FROM_DATABASE=FlashTrax Storage - -usb:v0917p0205* - ID_PRODUCT_FROM_DATABASE=STORAGE ADAPTER (CrossFire) - -usb:v0917p0206* - ID_PRODUCT_FROM_DATABASE=FireFly 20G HDD - -usb:v0917p0207* - ID_PRODUCT_FROM_DATABASE=FireLite - -usb:v0917p020F* - ID_PRODUCT_FROM_DATABASE=STORAGE ADAPTER (FireLite) - -usb:v0917pDA01* - ID_PRODUCT_FROM_DATABASE=eFilm Reader-11 Test - -usb:v0917pFFFF* - ID_PRODUCT_FROM_DATABASE=eFilm Reader-11 (Class/PDR) - -usb:v0919* - ID_VENDOR_FROM_DATABASE=Tiger Electronics - -usb:v0919p0100* - ID_PRODUCT_FROM_DATABASE=Fast Flicks Digital Camera - -usb:v091E* - ID_VENDOR_FROM_DATABASE=Garmin International - -usb:v091Ep0003* - ID_PRODUCT_FROM_DATABASE=GPS (various models) - -usb:v091Ep0004* - ID_PRODUCT_FROM_DATABASE=iQue 3600 - -usb:v091Ep0200* - ID_PRODUCT_FROM_DATABASE=Data Card Programmer (install) - -usb:v091Ep1200* - ID_PRODUCT_FROM_DATABASE=Data Card Programmer - -usb:v091Ep21A5* - ID_PRODUCT_FROM_DATABASE=etrex Cx (msc) - -usb:v091Ep2236* - ID_PRODUCT_FROM_DATABASE=nuvi 360 - -usb:v091Ep2271* - ID_PRODUCT_FROM_DATABASE=Edge 605/705 - -usb:v091Ep2295* - ID_PRODUCT_FROM_DATABASE=Colorado 300 - -usb:v091Ep22B6* - ID_PRODUCT_FROM_DATABASE=eTrex Vista HCx (Mass Storage mode) - -usb:v091Ep231B* - ID_PRODUCT_FROM_DATABASE=Oregon 400t - -usb:v091Ep2353* - ID_PRODUCT_FROM_DATABASE=Nüvi 205T - -usb:v091Ep2380* - ID_PRODUCT_FROM_DATABASE=Oregon series - -usb:v091Ep23CC* - ID_PRODUCT_FROM_DATABASE=nüvi 1350 - -usb:v091Ep2459* - ID_PRODUCT_FROM_DATABASE=GPSmap 62/78 series - -usb:v091Ep2519* - ID_PRODUCT_FROM_DATABASE=eTrex 30 - -usb:v091Ep2535* - ID_PRODUCT_FROM_DATABASE=Edge 800 - -usb:v091Ep255B* - ID_PRODUCT_FROM_DATABASE=Nuvi 2505LM - -usb:v0920* - ID_VENDOR_FROM_DATABASE=Echelon Co. - -usb:v0920p7500* - ID_PRODUCT_FROM_DATABASE=Network Interface - -usb:v0921* - ID_VENDOR_FROM_DATABASE=GoHubs, Inc. - -usb:v0921p1001* - ID_PRODUCT_FROM_DATABASE=GoCOM232 Serial - -usb:v0922* - ID_VENDOR_FROM_DATABASE=Dymo-CoStar Corp. - -usb:v0922p0007* - ID_PRODUCT_FROM_DATABASE=LabelWriter 330 - -usb:v0922p0009* - ID_PRODUCT_FROM_DATABASE=LabelWriter 310 - -usb:v0922p001A* - ID_PRODUCT_FROM_DATABASE=LabelWriter 400 Turbo - -usb:v0922p0020* - ID_PRODUCT_FROM_DATABASE=LabelWriter 450 - -usb:v0923* - ID_VENDOR_FROM_DATABASE=IC Media Corp. - -usb:v0923p010F* - ID_PRODUCT_FROM_DATABASE=SIIG MobileCam - -usb:v0924* - ID_VENDOR_FROM_DATABASE=Xerox - -usb:v0924p23DD* - ID_PRODUCT_FROM_DATABASE=DocuPrint M760 (X760_USB) - -usb:v0924p3CE8* - ID_PRODUCT_FROM_DATABASE=Phaser 3428 Printer - -usb:v0924p3D5B* - ID_PRODUCT_FROM_DATABASE=Phaser 6115MFP TWAIN Scanner - -usb:v0924p420F* - ID_PRODUCT_FROM_DATABASE=WorkCentre PE220 Series - -usb:v0924p421F* - ID_PRODUCT_FROM_DATABASE=M20 Scanner - -usb:v0924p423B* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v0924p4274* - ID_PRODUCT_FROM_DATABASE=Xerox Phaser 3635MFPX - -usb:v0924pFFEF* - ID_PRODUCT_FROM_DATABASE=WorkCenter M15 - -usb:v0924pFFFB* - ID_PRODUCT_FROM_DATABASE=DocuPrint M750 (X750_USB) - -usb:v0925* - ID_VENDOR_FROM_DATABASE=Lakeview Research - -usb:v0925p0005* - ID_PRODUCT_FROM_DATABASE=Gamtec.,Ltd SmartJoy PLUS Adapter - -usb:v0925p3881* - ID_PRODUCT_FROM_DATABASE=Saleae Logic - -usb:v0925p8101* - ID_PRODUCT_FROM_DATABASE=Phidgets, Inc., 1-Motor PhidgetServo v2.0 - -usb:v0925p8104* - ID_PRODUCT_FROM_DATABASE=Phidgets, Inc., 4-Motor PhidgetServo v2.0 - -usb:v0925p8800* - ID_PRODUCT_FROM_DATABASE=WiseGroup Ltd, MP-8800 Quad Joypad - -usb:v0925p8866* - ID_PRODUCT_FROM_DATABASE=WiseGroup Ltd, MP-8866 Dual Joypad - -usb:v0927* - ID_VENDOR_FROM_DATABASE=Summus, Ltd - -usb:v0928* - ID_VENDOR_FROM_DATABASE=PLX Technology, Inc. (formerly Oxford Semiconductor, Ltd) - -usb:v0928p8000* - ID_PRODUCT_FROM_DATABASE=Firmware uploader - -usb:v0929* - ID_VENDOR_FROM_DATABASE=American Biometric Co. - -usb:v092A* - ID_VENDOR_FROM_DATABASE=Toshiba Information & Industrial Sys. And Services - -usb:v092B* - ID_VENDOR_FROM_DATABASE=Sena Technologies, Inc. - -usb:v092F* - ID_VENDOR_FROM_DATABASE=Northern Embedded Science/CAVNEX - -usb:v092Fp0004* - ID_PRODUCT_FROM_DATABASE=JTAG-4 - -usb:v092Fp0005* - ID_PRODUCT_FROM_DATABASE=JTAG-5 - -usb:v0930* - ID_VENDOR_FROM_DATABASE=Toshiba Corp. - -usb:v0930p0009* - ID_PRODUCT_FROM_DATABASE=Gigabeat F/X (HDD audio player) - -usb:v0930p000C* - ID_PRODUCT_FROM_DATABASE=Gigabeat F (mtp) - -usb:v0930p0010* - ID_PRODUCT_FROM_DATABASE=Gigabeat S (mtp) - -usb:v0930p0301* - ID_PRODUCT_FROM_DATABASE=PCX1100U Cable Modem (WDM) - -usb:v0930p0302* - ID_PRODUCT_FROM_DATABASE=PCX2000 Cable Modem (WDM) - -usb:v0930p0305* - ID_PRODUCT_FROM_DATABASE=Cable Modem PCX3000 - -usb:v0930p0307* - ID_PRODUCT_FROM_DATABASE=Cable Modem PCX2500 - -usb:v0930p0308* - ID_PRODUCT_FROM_DATABASE=PCX2200 Cable Modem (WDM) - -usb:v0930p0309* - ID_PRODUCT_FROM_DATABASE=PCX5000 Cable Modem (WDM) - -usb:v0930p030B* - ID_PRODUCT_FROM_DATABASE=Cable Modem PCX2600 - -usb:v0930p0501* - ID_PRODUCT_FROM_DATABASE=Bluetooth Controller - -usb:v0930p0502* - ID_PRODUCT_FROM_DATABASE=Integrated Bluetooth - -usb:v0930p0503* - ID_PRODUCT_FROM_DATABASE=Bluetooth Controller - -usb:v0930p0505* - ID_PRODUCT_FROM_DATABASE=Integrated Bluetooth - -usb:v0930p0506* - ID_PRODUCT_FROM_DATABASE=Integrated Bluetooth - -usb:v0930p0507* - ID_PRODUCT_FROM_DATABASE=Bluetooth Adapter - -usb:v0930p0508* - ID_PRODUCT_FROM_DATABASE=Integrated Bluetooth HCI - -usb:v0930p0509* - ID_PRODUCT_FROM_DATABASE=BT EDR Dongle - -usb:v0930p0706* - ID_PRODUCT_FROM_DATABASE=PocketPC e740 - -usb:v0930p0707* - ID_PRODUCT_FROM_DATABASE=Pocket PC e330 Series - -usb:v0930p0708* - ID_PRODUCT_FROM_DATABASE=Pocket PC e350 Series - -usb:v0930p0709* - ID_PRODUCT_FROM_DATABASE=Pocket PC e750 Series - -usb:v0930p070A* - ID_PRODUCT_FROM_DATABASE=Pocket PC e400 Series - -usb:v0930p070B* - ID_PRODUCT_FROM_DATABASE=Pocket PC e800 Series - -usb:v0930p0A07* - ID_PRODUCT_FROM_DATABASE=WLM-10U1 802.11abgn Wireless Adapter [Ralink RT3572] - -usb:v0930p0B05* - ID_PRODUCT_FROM_DATABASE=PX1220E-1G25 External hard drive - -usb:v0930p0B09* - ID_PRODUCT_FROM_DATABASE=PX1396E-3T01 External hard drive - -usb:v0930p1300* - ID_PRODUCT_FROM_DATABASE=Wireless Broadband (CDMA EV-DO) SM-Bus Minicard Status Port - -usb:v0930p1301* - ID_PRODUCT_FROM_DATABASE=Wireless Broadband (CDMA EV-DO) Minicard Status Port - -usb:v0930p1302* - ID_PRODUCT_FROM_DATABASE=Wireless Broadband (3G HSDPA) SM-Bus Minicard Status Port - -usb:v0930p1303* - ID_PRODUCT_FROM_DATABASE=Wireless Broadband (3G HSDPA) Minicard Status Port - -usb:v0930p1308* - ID_PRODUCT_FROM_DATABASE=Broadband (3G HSDPA) SM-Bus Minicard Diagnostics Port - -usb:v0930p130B* - ID_PRODUCT_FROM_DATABASE=F3507g Mobile Broadband Module - -usb:v0930p130C* - ID_PRODUCT_FROM_DATABASE=F3607gw Mobile Broadband Module - -usb:v0930p1311* - ID_PRODUCT_FROM_DATABASE=F3607gw v2 Mobile Broadband Module - -usb:v0930p1400* - ID_PRODUCT_FROM_DATABASE=Memory Stick 2GB - -usb:v0930p642F* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p6506* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p6507* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p6508* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p6509* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p6510* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p6517* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p6518* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p6519* - ID_PRODUCT_FROM_DATABASE=Kingston DataTraveler 2.0 USB Stick - -usb:v0930p651A* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p651B* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p651C* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p651D* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p651E* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p651F* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p6520* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p6521* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p6522* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2C - -usb:v0930p6523* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p6524* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p6525* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p6526* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p6527* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p6528* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p6529* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p652A* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p652B* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p652C* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p652D* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p652F* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p6530* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p6531* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p6532* - ID_PRODUCT_FROM_DATABASE=256M Stick - -usb:v0930p6533* - ID_PRODUCT_FROM_DATABASE=512M Stick - -usb:v0930p6534* - ID_PRODUCT_FROM_DATABASE=TravelDrive - -usb:v0930p653C* - ID_PRODUCT_FROM_DATABASE=Kingston DataTraveler 2.0 Stick (512M) - -usb:v0930p653D* - ID_PRODUCT_FROM_DATABASE=Kingston DataTraveler 2.0 Stick (1GB) - -usb:v0930p653E* - ID_PRODUCT_FROM_DATABASE=Flash Memory - -usb:v0930p6540* - ID_PRODUCT_FROM_DATABASE=TransMemory Flash Memory - -usb:v0930p6544* - ID_PRODUCT_FROM_DATABASE=Kingston DataTraveler 2.0 Stick (2GB) - -usb:v0930p6545* - ID_PRODUCT_FROM_DATABASE=Kingston DataTraveler 102 Flash Drive / HEMA Flash Drive 2 GB / PNY Attache 4GB Stick - -usb:v0931* - ID_VENDOR_FROM_DATABASE=Harmonic Data Systems, Ltd - -usb:v0932* - ID_VENDOR_FROM_DATABASE=Crescentec Corp. - -usb:v0932p0300* - ID_PRODUCT_FROM_DATABASE=VideoAdvantage - -usb:v0932p0302* - ID_PRODUCT_FROM_DATABASE=Syntek DC-112X - -usb:v0932p0320* - ID_PRODUCT_FROM_DATABASE=VideoAdvantage - -usb:v0932p0482* - ID_PRODUCT_FROM_DATABASE=USB2.0 TVBOX - -usb:v0932p1100* - ID_PRODUCT_FROM_DATABASE=DC-1100 Video Enhamcement Device - -usb:v0932p1112* - ID_PRODUCT_FROM_DATABASE=Veo Web Camera - -usb:v0932pA311* - ID_PRODUCT_FROM_DATABASE=Video Enhancement Device - -usb:v0933* - ID_VENDOR_FROM_DATABASE=Quantum Corp. - -usb:v0934* - ID_VENDOR_FROM_DATABASE=Spirent Communications - -usb:v0936* - ID_VENDOR_FROM_DATABASE=NuTesla - -usb:v0936p0030* - ID_PRODUCT_FROM_DATABASE=Composite Device, Mass Storage Device (Flash Drive) amd HID - -usb:v0936p003C* - ID_PRODUCT_FROM_DATABASE=Rhythmedics HID Bootloader - -usb:v0939* - ID_VENDOR_FROM_DATABASE=Lumberg, Inc. - -usb:v0939p0B15* - ID_PRODUCT_FROM_DATABASE=Toshiba Stor.E Alu 2 1TB (PX1710E-1HJ0) - -usb:v093A* - ID_VENDOR_FROM_DATABASE=Pixart Imaging, Inc. - -usb:v093Ap0007* - ID_PRODUCT_FROM_DATABASE=CMOS 100K-R Rev. 1.90 - -usb:v093Ap010E* - ID_PRODUCT_FROM_DATABASE=Digital camera, CD302N/Elta Medi@ digi-cam/HE-501A - -usb:v093Ap010F* - ID_PRODUCT_FROM_DATABASE=Argus DC-1610/DC-1620/Emprex PCD3600/Philips P44417B keychain camera/Precision Mini,Model HA513A/Vivitar Vivicam 55 - -usb:v093Ap020F* - ID_PRODUCT_FROM_DATABASE=Bullet Line Photo Viewer - -usb:v093Ap050F* - ID_PRODUCT_FROM_DATABASE=Mars-Semi Pc-Camera - -usb:v093Ap2460* - ID_PRODUCT_FROM_DATABASE=Q-TEC WEBCAM 100 - -usb:v093Ap2468* - ID_PRODUCT_FROM_DATABASE=SoC PC-Camera - -usb:v093Ap2470* - ID_PRODUCT_FROM_DATABASE=SoC PC-Camera - -usb:v093Ap2471* - ID_PRODUCT_FROM_DATABASE=SoC PC-Camera - -usb:v093Ap2500* - ID_PRODUCT_FROM_DATABASE=USB Optical Mouse - -usb:v093Ap2510* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v093Ap2600* - ID_PRODUCT_FROM_DATABASE=Typhoon Easycam USB 330K (newer)/Typhoon Easycam USB 2.0 VGA 1.3M/Sansun SN-508 - -usb:v093Ap2601* - ID_PRODUCT_FROM_DATABASE=SPC 610NC Laptop Camera - -usb:v093Ap2603* - ID_PRODUCT_FROM_DATABASE=PAC7312 Camera - -usb:v093Ap2608* - ID_PRODUCT_FROM_DATABASE=PAC7311 Trust WB-3300p - -usb:v093Ap260E* - ID_PRODUCT_FROM_DATABASE=PAC7311 Gigaware VGA PC Camera:Trust WB-3350p:SIGMA cam 2350 - -usb:v093Ap260F* - ID_PRODUCT_FROM_DATABASE=PAC7311 SnakeCam - -usb:v093Ap2621* - ID_PRODUCT_FROM_DATABASE=PAC731x Trust Webcam - -usb:v093Ap2624* - ID_PRODUCT_FROM_DATABASE=Webcam - -usb:v093B* - ID_VENDOR_FROM_DATABASE=Plextor Corp. - -usb:v093Bp0010* - ID_PRODUCT_FROM_DATABASE=Storage Adapter - -usb:v093Bp0011* - ID_PRODUCT_FROM_DATABASE=PlexWriter 40/12/40U - -usb:v093Bp0041* - ID_PRODUCT_FROM_DATABASE=PX-708A DVD RW - -usb:v093Bp0042* - ID_PRODUCT_FROM_DATABASE=PX-712UF DVD RW - -usb:v093BpA002* - ID_PRODUCT_FROM_DATABASE=ConvertX M402U XLOADER - -usb:v093BpA003* - ID_PRODUCT_FROM_DATABASE=ConvertX AV100U A/V Capture Audio - -usb:v093BpA004* - ID_PRODUCT_FROM_DATABASE=ConvertX TV402U XLOADER - -usb:v093BpA005* - ID_PRODUCT_FROM_DATABASE=ConvertX TV100U A/V Capture - -usb:v093BpA102* - ID_PRODUCT_FROM_DATABASE=ConvertX M402U A/V Capture - -usb:v093BpA104* - ID_PRODUCT_FROM_DATABASE=ConvertX PX-TV402U/NA - -usb:v093C* - ID_VENDOR_FROM_DATABASE=Intrepid Control Systems, Inc. - -usb:v093Cp0601* - ID_PRODUCT_FROM_DATABASE=ValueCAN - -usb:v093Cp0701* - ID_PRODUCT_FROM_DATABASE=NeoVI Blue vehicle bus interface - -usb:v093D* - ID_VENDOR_FROM_DATABASE=InnoSync, Inc. - -usb:v093E* - ID_VENDOR_FROM_DATABASE=J.S.T. Mfg. Co., Ltd - -usb:v093F* - ID_VENDOR_FROM_DATABASE=Olympia Telecom Vertriebs GmbH - -usb:v0940* - ID_VENDOR_FROM_DATABASE=Japan Storage Battery Co., Ltd - -usb:v0941* - ID_VENDOR_FROM_DATABASE=Photobit Corp. - -usb:v0942* - ID_VENDOR_FROM_DATABASE=i2Go.com, LLC - -usb:v0943* - ID_VENDOR_FROM_DATABASE=HCL Technologies India Private, Ltd - -usb:v0944* - ID_VENDOR_FROM_DATABASE=KORG, Inc. - -usb:v0944p0001* - ID_PRODUCT_FROM_DATABASE=PXR4 4-Track Digital Recorder - -usb:v0944p0020* - ID_PRODUCT_FROM_DATABASE=KAOSS Pad KP3 Dynamic Effect/Sampler - -usb:v0944p0023* - ID_PRODUCT_FROM_DATABASE=KAOSSILATOR PRO Dynamic Phrase Synthesizer - -usb:v0944p010D* - ID_PRODUCT_FROM_DATABASE=nanoKEY MIDI keyboard - -usb:v0944p010E* - ID_PRODUCT_FROM_DATABASE=nanoPAD pad controller - -usb:v0944p010F* - ID_PRODUCT_FROM_DATABASE=nanoKONTROL studio controller - -usb:v0944p0117* - ID_PRODUCT_FROM_DATABASE=nanoKONTROL2 MIDI Controller - -usb:v0944p0F03* - ID_PRODUCT_FROM_DATABASE=K-Series K61P MIDI studio controller - -usb:v0945* - ID_VENDOR_FROM_DATABASE=Pasco Scientific - -usb:v0948* - ID_VENDOR_FROM_DATABASE=Kronauer music in digital - -usb:v0948p0301* - ID_PRODUCT_FROM_DATABASE=USB Pro (24/48) - -usb:v0948p0302* - ID_PRODUCT_FROM_DATABASE=USB Pro (24/96 playback) - -usb:v0948p0303* - ID_PRODUCT_FROM_DATABASE=USB Pro (24/96 record) - -usb:v0948p0304* - ID_PRODUCT_FROM_DATABASE=USB Pro (16/48) - -usb:v0948p1105* - ID_PRODUCT_FROM_DATABASE=USB One - -usb:v094B* - ID_VENDOR_FROM_DATABASE=Linkup Systems Corp. - -usb:v094Bp0001* - ID_PRODUCT_FROM_DATABASE=neonode N2 - -usb:v094D* - ID_VENDOR_FROM_DATABASE=Cable Television Laboratories - -usb:v094F* - ID_VENDOR_FROM_DATABASE=Yano - -usb:v094Fp0101* - ID_PRODUCT_FROM_DATABASE=U640MO-03 - -usb:v094Fp05FC* - ID_PRODUCT_FROM_DATABASE=METALWEAR-HDD - -usb:v0951* - ID_VENDOR_FROM_DATABASE=Kingston Technology - -usb:v0951p0008* - ID_PRODUCT_FROM_DATABASE=Ethernet - -usb:v0951p000A* - ID_PRODUCT_FROM_DATABASE=KNU101TX 100baseTX Ethernet - -usb:v0951p1600* - ID_PRODUCT_FROM_DATABASE=DataTraveler II Pen Drive - -usb:v0951p1601* - ID_PRODUCT_FROM_DATABASE=DataTraveler II+ Pen Drive - -usb:v0951p1602* - ID_PRODUCT_FROM_DATABASE=DataTraveler Mini - -usb:v0951p1603* - ID_PRODUCT_FROM_DATABASE=DataTraveler 1GB/2GB Pen Drive - -usb:v0951p1606* - ID_PRODUCT_FROM_DATABASE=Eee PC 701 SD Card Reader [ENE UB6225] - -usb:v0951p1607* - ID_PRODUCT_FROM_DATABASE=DataTraveler 100 - -usb:v0951p160D* - ID_PRODUCT_FROM_DATABASE=DataTraveler Vault Privacy - -usb:v0951p1613* - ID_PRODUCT_FROM_DATABASE=DataTraveler DT101C Flash Drive - -usb:v0951p1616* - ID_PRODUCT_FROM_DATABASE=DataTraveler Locker 4GB - -usb:v0951p1621* - ID_PRODUCT_FROM_DATABASE=DataTraveler 150 (32GB) - -usb:v0951p1624* - ID_PRODUCT_FROM_DATABASE=DataTraveler G2 - -usb:v0951p1625* - ID_PRODUCT_FROM_DATABASE=DataTraveler 101 II - -usb:v0951p162A* - ID_PRODUCT_FROM_DATABASE=DataTraveler 112 4GB Pen Drive - -usb:v0951p162D* - ID_PRODUCT_FROM_DATABASE=DataTraveler 102 - -usb:v0951p1630* - ID_PRODUCT_FROM_DATABASE=DataTraveler 200 (32GB) - -usb:v0951p1642* - ID_PRODUCT_FROM_DATABASE=DT101 G2 - -usb:v0951p1643* - ID_PRODUCT_FROM_DATABASE=DataTraveler G3 - -usb:v0951p1653* - ID_PRODUCT_FROM_DATABASE=Data Traveler 100 G2 8 GiB - -usb:v0951p1656* - ID_PRODUCT_FROM_DATABASE=DataTraveler Ultimate G2 - -usb:v0951p1689* - ID_PRODUCT_FROM_DATABASE=DataTraveler SE9 - -usb:v0951p168A* - ID_PRODUCT_FROM_DATABASE=DataTraveler Micro - -usb:v0951p168C* - ID_PRODUCT_FROM_DATABASE=DT Elite 3.0 - -usb:v0954* - ID_VENDOR_FROM_DATABASE=RPM Systems Corp. - -usb:v0955* - ID_VENDOR_FROM_DATABASE=NVidia Corp. - -usb:v0955p7030* - ID_PRODUCT_FROM_DATABASE=Tegra 3 (recovery mode) - -usb:v0955p7100* - ID_PRODUCT_FROM_DATABASE=Notion Ink Adam - -usb:v0956* - ID_VENDOR_FROM_DATABASE=BSquare Corp. - -usb:v0957* - ID_VENDOR_FROM_DATABASE=Agilent Technologies, Inc. - -usb:v0957p0200* - ID_PRODUCT_FROM_DATABASE=E-Video DC-350 Camera - -usb:v0957p0202* - ID_PRODUCT_FROM_DATABASE=E-Video DC-350 Camera - -usb:v0957p0518* - ID_PRODUCT_FROM_DATABASE=82357B GPIB Interface - -usb:v0957p0A07* - ID_PRODUCT_FROM_DATABASE=34411A Multimeter - -usb:v0957p1745* - ID_PRODUCT_FROM_DATABASE=Test and Measurement Device (IVI) - -usb:v0957p2918* - ID_PRODUCT_FROM_DATABASE=U2702A oscilloscope - -usb:v0958* - ID_VENDOR_FROM_DATABASE=CompuLink Research, Inc. - -usb:v0959* - ID_VENDOR_FROM_DATABASE=Cologne Chip AG - -usb:v0959p2BD0* - ID_PRODUCT_FROM_DATABASE=Intelligent ISDN (Ver. 3.60.04) - -usb:v095A* - ID_VENDOR_FROM_DATABASE=Portsmith - -usb:v095Ap3003* - ID_PRODUCT_FROM_DATABASE=Express Ethernet - -usb:v095B* - ID_VENDOR_FROM_DATABASE=Medialogic Corp. - -usb:v095C* - ID_VENDOR_FROM_DATABASE=K-Tec Electronics - -usb:v095D* - ID_VENDOR_FROM_DATABASE=Polycom, Inc. - -usb:v095Dp0001* - ID_PRODUCT_FROM_DATABASE=Polycom ViaVideo - -usb:v0967* - ID_VENDOR_FROM_DATABASE=Acer (??) - -usb:v0967p0204* - ID_PRODUCT_FROM_DATABASE=WarpLink 802.11b Adapter - -usb:v0968* - ID_VENDOR_FROM_DATABASE=Catalyst Enterprises, Inc. - -usb:v096E* - ID_VENDOR_FROM_DATABASE=Feitian Technologies, Inc. - -usb:v096Ep0120* - ID_PRODUCT_FROM_DATABASE=Microcosm Ltd Dinkey - -usb:v096Ep0802* - ID_PRODUCT_FROM_DATABASE=ePass2000 (G&D STARCOS SPK 2.4) - -usb:v096Ep0807* - ID_PRODUCT_FROM_DATABASE=ePass2003 - -usb:v0971* - ID_VENDOR_FROM_DATABASE=Gretag-Macbeth AG - -usb:v0971p2003* - ID_PRODUCT_FROM_DATABASE=Eye-One display - -usb:v0971p2005* - ID_PRODUCT_FROM_DATABASE=Huey - -usb:v0971p2007* - ID_PRODUCT_FROM_DATABASE=ColorMunki - -usb:v0973* - ID_VENDOR_FROM_DATABASE=Schlumberger - -usb:v0973p0001* - ID_PRODUCT_FROM_DATABASE=e-gate Smart Card - -usb:v0974* - ID_VENDOR_FROM_DATABASE=Datagraphix, a business unit of Anacomp - -usb:v0975* - ID_VENDOR_FROM_DATABASE=OL'E Communications, Inc. - -usb:v0976* - ID_VENDOR_FROM_DATABASE=Adirondack Wire & Cable - -usb:v0977* - ID_VENDOR_FROM_DATABASE=Lightsurf Technologies - -usb:v0978* - ID_VENDOR_FROM_DATABASE=Beckhoff GmbH - -usb:v0979* - ID_VENDOR_FROM_DATABASE=Jeilin Technology Corp., Ltd - -usb:v0979p0224* - ID_PRODUCT_FROM_DATABASE=JL2005A Toy Camera - -usb:v0979p0226* - ID_PRODUCT_FROM_DATABASE=JL2005A Toy Camera - -usb:v0979p0227* - ID_PRODUCT_FROM_DATABASE=JL2005B/C/D Toy Camera - -usb:v097A* - ID_VENDOR_FROM_DATABASE=Minds At Work LLC - -usb:v097Ap0001* - ID_PRODUCT_FROM_DATABASE=Digital Wallet - -usb:v097B* - ID_VENDOR_FROM_DATABASE=Knudsen Engineering, Ltd - -usb:v097C* - ID_VENDOR_FROM_DATABASE=Marunix Co., Ltd - -usb:v097D* - ID_VENDOR_FROM_DATABASE=Rosun Technologies, Inc. - -usb:v097E* - ID_VENDOR_FROM_DATABASE=Biopac Systems Inc. - -usb:v097Ep0035* - ID_PRODUCT_FROM_DATABASE=MP35 v1.0 - -usb:v097F* - ID_VENDOR_FROM_DATABASE=Barun Electronics Co., Ltd - -usb:v0981* - ID_VENDOR_FROM_DATABASE=Oak Technology, Ltd - -usb:v0984* - ID_VENDOR_FROM_DATABASE=Apricorn - -usb:v0984p0040* - ID_PRODUCT_FROM_DATABASE=SATA Wire (2.5") - -usb:v0984p0200* - ID_PRODUCT_FROM_DATABASE=Hard Drive Storage (TPP) - -usb:v0985* - ID_VENDOR_FROM_DATABASE=cab Produkttechnik GmbH & Co KG - -usb:v0985p0045* - ID_PRODUCT_FROM_DATABASE=Mach4/200 Label Printer - -usb:v0985p00A3* - ID_PRODUCT_FROM_DATABASE=A3/200 or A3/300 Label Printer - -usb:v0986* - ID_VENDOR_FROM_DATABASE=Matsushita Electric Works, Ltd. - -usb:v098C* - ID_VENDOR_FROM_DATABASE=Vitana Corp. - -usb:v098D* - ID_VENDOR_FROM_DATABASE=INDesign - -usb:v098E* - ID_VENDOR_FROM_DATABASE=Integrated Intellectual Property, Inc. - -usb:v098F* - ID_VENDOR_FROM_DATABASE=Kenwood TMI Corp. - -usb:v0993* - ID_VENDOR_FROM_DATABASE=Gemstar eBook Group, Ltd - -usb:v0993p0001* - ID_PRODUCT_FROM_DATABASE=REB1100 eBook Reader - -usb:v0993p0002* - ID_PRODUCT_FROM_DATABASE=eBook - -usb:v0996* - ID_VENDOR_FROM_DATABASE=Integrated Telecom Express, Inc. - -usb:v099A* - ID_VENDOR_FROM_DATABASE=Zippy Technology Corp. - -usb:v099Ap0638* - ID_PRODUCT_FROM_DATABASE=Sanwa Supply Inc. Small Keyboard - -usb:v099Ap610C* - ID_PRODUCT_FROM_DATABASE=EL-610 Super Mini Electron luminescent Keyboard - -usb:v099Ap7160* - ID_PRODUCT_FROM_DATABASE=Hyper Slim Keyboard - -usb:v09A3* - ID_VENDOR_FROM_DATABASE=PairGain Technologies - -usb:v09A4* - ID_VENDOR_FROM_DATABASE=Contech Research, Inc. - -usb:v09A5* - ID_VENDOR_FROM_DATABASE=VCON Telecommunications - -usb:v09A6* - ID_VENDOR_FROM_DATABASE=Poinchips - -usb:v09A6p8001* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v09A7* - ID_VENDOR_FROM_DATABASE=Data Transmission Network Corp. - -usb:v09A8* - ID_VENDOR_FROM_DATABASE=Lin Shiung Enterprise Co., Ltd - -usb:v09A9* - ID_VENDOR_FROM_DATABASE=Smart Card Technologies Co., Ltd - -usb:v09AA* - ID_VENDOR_FROM_DATABASE=Intersil Corp. - -usb:v09AAp1000* - ID_PRODUCT_FROM_DATABASE=Prism GT 802.11b/g Adapter - -usb:v09AAp3642* - ID_PRODUCT_FROM_DATABASE=Prism 2.x 802.11b Adapter - -usb:v09AB* - ID_VENDOR_FROM_DATABASE=Japan Cash Machine Co., Ltd. - -usb:v09AE* - ID_VENDOR_FROM_DATABASE=Tripp Lite - -usb:v09B2* - ID_VENDOR_FROM_DATABASE=Franklin Electronic Publishers, Inc. - -usb:v09B2p0001* - ID_PRODUCT_FROM_DATABASE=eBookman Palm Computer - -usb:v09B3* - ID_VENDOR_FROM_DATABASE=Altius Solutions, Inc. - -usb:v09B4* - ID_VENDOR_FROM_DATABASE=MDS Telephone Systems - -usb:v09B5* - ID_VENDOR_FROM_DATABASE=Celltrix Technology Co., Ltd - -usb:v09BC* - ID_VENDOR_FROM_DATABASE=Grundig - -usb:v09BCp0002* - ID_PRODUCT_FROM_DATABASE=MPaxx MP150 MP3 Player - -usb:v09BE* - ID_VENDOR_FROM_DATABASE=MySmart.Com - -usb:v09BEp0001* - ID_PRODUCT_FROM_DATABASE=MySmartPad - -usb:v09BF* - ID_VENDOR_FROM_DATABASE=Auerswald GmbH & Co. KG - -usb:v09BFp00C0* - ID_PRODUCT_FROM_DATABASE=COMpact 2104 ISDN PBX - -usb:v09BFp00DB* - ID_PRODUCT_FROM_DATABASE=COMpact 4410/2206 ISDN - -usb:v09BFp00DC* - ID_PRODUCT_FROM_DATABASE=COMpact 4406 DSL (PBX) - -usb:v09BFp00DD* - ID_PRODUCT_FROM_DATABASE=COMpact 2204 (PBX) - -usb:v09BFp00DE* - ID_PRODUCT_FROM_DATABASE=COMpact 2104 (Rev.2 PBX) - -usb:v09BFp00E0* - ID_PRODUCT_FROM_DATABASE=COMmander Business (PBX) - -usb:v09BFp00E2* - ID_PRODUCT_FROM_DATABASE=COMmander Basic.2 (PBX) - -usb:v09BFp00F1* - ID_PRODUCT_FROM_DATABASE=COMfort 2000 (System telephone) - -usb:v09BFp00F2* - ID_PRODUCT_FROM_DATABASE=COMfort 1200 (System telephone) - -usb:v09BFp00F5* - ID_PRODUCT_FROM_DATABASE=COMfortel 2500 (System telephone) - -usb:v09BFp8000* - ID_PRODUCT_FROM_DATABASE=COMpact 2104 DSL (DSL modem) - -usb:v09BFp8001* - ID_PRODUCT_FROM_DATABASE=COMpact 4406 DSL (DSL modem) - -usb:v09BFp8002* - ID_PRODUCT_FROM_DATABASE=Analog/ISDN Converter (Line converter) - -usb:v09BFp8005* - ID_PRODUCT_FROM_DATABASE=WG-640 (Automatic event dialer) - -usb:v09C0* - ID_VENDOR_FROM_DATABASE=Genpix Electronics, LLC - -usb:v09C0p0136* - ID_PRODUCT_FROM_DATABASE=Axon CNS, MultiClamp 700B - -usb:v09C0p0202* - ID_PRODUCT_FROM_DATABASE=8PSK DVB-S tuner - -usb:v09C0p0203* - ID_PRODUCT_FROM_DATABASE=Skywalker-1 DVB-S tuner - -usb:v09C0p0204* - ID_PRODUCT_FROM_DATABASE=Skywalker-CW3K DVB-S tuner - -usb:v09C0p0205* - ID_PRODUCT_FROM_DATABASE=Skywalker-CW3K DVB-S tuner - -usb:v09C0p0206* - ID_PRODUCT_FROM_DATABASE=Skywalker-2 DVB-S tuner - -usb:v09C1* - ID_VENDOR_FROM_DATABASE=Arris Interactive LLC - -usb:v09C1p1337* - ID_PRODUCT_FROM_DATABASE=TOUCHSTONE DEVICE - -usb:v09C2* - ID_VENDOR_FROM_DATABASE=Nisca Corp. - -usb:v09C3* - ID_VENDOR_FROM_DATABASE=ActivCard, Inc. - -usb:v09C3p0007* - ID_PRODUCT_FROM_DATABASE=Reader V2 - -usb:v09C3p0008* - ID_PRODUCT_FROM_DATABASE=ZFG-9800-AC SmartCard Reader - -usb:v09C3p0014* - ID_PRODUCT_FROM_DATABASE=ActivIdentity ActivKey SIM USB Token - -usb:v09C4* - ID_VENDOR_FROM_DATABASE=ACTiSYS Corp. - -usb:v09C4p0011* - ID_PRODUCT_FROM_DATABASE=ACT-IR2000U IrDA Dongle - -usb:v09C5* - ID_VENDOR_FROM_DATABASE=Memory Corp. - -usb:v09CC* - ID_VENDOR_FROM_DATABASE=Workbit Corp. - -usb:v09CCp0404* - ID_PRODUCT_FROM_DATABASE=BAFO USB-ATA/ATAPI Bridge Controller - -usb:v09CD* - ID_VENDOR_FROM_DATABASE=Psion Dacom Home Networks, Ltd - -usb:v09CDp2001* - ID_PRODUCT_FROM_DATABASE=Psion WaveFinder DAB radio receiver - -usb:v09CE* - ID_VENDOR_FROM_DATABASE=City Electronics, Ltd - -usb:v09CF* - ID_VENDOR_FROM_DATABASE=Electronics Testing Center, Taiwan - -usb:v09D1* - ID_VENDOR_FROM_DATABASE=NeoMagic, Inc. - -usb:v09D2* - ID_VENDOR_FROM_DATABASE=Vreelin Engineering, Inc. - -usb:v09D3* - ID_VENDOR_FROM_DATABASE=Com One - -usb:v09D3p0001* - ID_PRODUCT_FROM_DATABASE=ISDN TA - -usb:v09D7* - ID_VENDOR_FROM_DATABASE=Novatel Wireless - -usb:v09D7p0100* - ID_PRODUCT_FROM_DATABASE=NovAtel FlexPack GPS receiver - -usb:v09D9* - ID_VENDOR_FROM_DATABASE=KRF Tech, Ltd - -usb:v09DA* - ID_VENDOR_FROM_DATABASE=A4 Tech Co., Ltd - -usb:v09DAp0006* - ID_PRODUCT_FROM_DATABASE=Optical Mouse WOP-35 / Trust 450L Optical Mouse - -usb:v09DAp000A* - ID_PRODUCT_FROM_DATABASE=Optical Mouse Opto 510D - -usb:v09DAp000E* - ID_PRODUCT_FROM_DATABASE=X-F710F Optical Mouse 3xFire Gaming Mouse - -usb:v09DAp0018* - ID_PRODUCT_FROM_DATABASE=Trust Human Interface Device - -usb:v09DAp001A* - ID_PRODUCT_FROM_DATABASE=Wireless Mouse & RXM-15 Receiver - -usb:v09DAp002A* - ID_PRODUCT_FROM_DATABASE=Wireless Optical Mouse NB-30 - -usb:v09DAp022B* - ID_PRODUCT_FROM_DATABASE=Wireless Mouse (Battery Free) - -usb:v09DAp024F* - ID_PRODUCT_FROM_DATABASE=RF Receiver and G6-20D Wireless Optical Mouse - -usb:v09DAp0260* - ID_PRODUCT_FROM_DATABASE=KV-300H Isolation Keyboard - -usb:v09DAp032B* - ID_PRODUCT_FROM_DATABASE=Wireless Mouse (Battery Free) - -usb:v09DAp8090* - ID_PRODUCT_FROM_DATABASE=X-718BK Oscar Optical Gaming Mouse - -usb:v09DAp9033* - ID_PRODUCT_FROM_DATABASE=X-718BK Optical Mouse - -usb:v09DAp9090* - ID_PRODUCT_FROM_DATABASE=XL-750BK Laser Mouse - -usb:v09DB* - ID_VENDOR_FROM_DATABASE=Measurement Computing Corp. - -usb:v09DBp0075* - ID_PRODUCT_FROM_DATABASE=MiniLab 1008 - -usb:v09DBp0076* - ID_PRODUCT_FROM_DATABASE=PMD-1024 - -usb:v09DBp007A* - ID_PRODUCT_FROM_DATABASE=PMD-1208LS - -usb:v09DBp0081* - ID_PRODUCT_FROM_DATABASE=USB-1616FS - -usb:v09DBp0082* - ID_PRODUCT_FROM_DATABASE=USB-1208FS - -usb:v09DBp0088* - ID_PRODUCT_FROM_DATABASE=USB-1616FS internal hub - -usb:v09DC* - ID_VENDOR_FROM_DATABASE=Aimex Corp. - -usb:v09DD* - ID_VENDOR_FROM_DATABASE=Fellowes, Inc. - -usb:v09DF* - ID_VENDOR_FROM_DATABASE=Addonics Technologies Corp. - -usb:v09E1* - ID_VENDOR_FROM_DATABASE=Intellon Corp. - -usb:v09E1p5121* - ID_PRODUCT_FROM_DATABASE=MicroLink dLAN - -usb:v09E5* - ID_VENDOR_FROM_DATABASE=Jo-Dan International, Inc. - -usb:v09E6* - ID_VENDOR_FROM_DATABASE=Silutia, Inc. - -usb:v09E7* - ID_VENDOR_FROM_DATABASE=Real 3D, Inc. - -usb:v09E8* - ID_VENDOR_FROM_DATABASE=AKAI Professional M.I. Corp. - -usb:v09E8p0062* - ID_PRODUCT_FROM_DATABASE=MPD16 MIDI Pad Controller Unit - -usb:v09E8p006D* - ID_PRODUCT_FROM_DATABASE=EWI electronic wind instrument - -usb:v09E8p0071* - ID_PRODUCT_FROM_DATABASE=MPK25 MIDI Keyboard - -usb:v09E8p0076* - ID_PRODUCT_FROM_DATABASE=LPK25 MIDI Keyboard - -usb:v09E9* - ID_VENDOR_FROM_DATABASE=Chen-Source, Inc. - -usb:v09EB* - ID_VENDOR_FROM_DATABASE=IM Networks, Inc. - -usb:v09EBp4331* - ID_PRODUCT_FROM_DATABASE=iRhythm Tuner Remote - -usb:v09EF* - ID_VENDOR_FROM_DATABASE=Xitel - -usb:v09EFp0101* - ID_PRODUCT_FROM_DATABASE=MD-Port DG2 MiniDisc Interface - -usb:v09F3* - ID_VENDOR_FROM_DATABASE=GoFlight, Inc. - -usb:v09F3p0018* - ID_PRODUCT_FROM_DATABASE=GF-46 Multi-Mode Display Module - -usb:v09F3p0028* - ID_PRODUCT_FROM_DATABASE=RP-48 Combination Pushbutton-Rotary Module - -usb:v09F3p0048* - ID_PRODUCT_FROM_DATABASE=LGTII - Landing Gear and Trim Control Module - -usb:v09F3p0064* - ID_PRODUCT_FROM_DATABASE=MCPPro - Airliner Mode Control Panel (Autopilot) - -usb:v09F3p0300* - ID_PRODUCT_FROM_DATABASE=EFIS - Electronic Flight Information System - -usb:v09F5* - ID_VENDOR_FROM_DATABASE=AresCom - -usb:v09F5p0168* - ID_PRODUCT_FROM_DATABASE=Network Adapter - -usb:v09F5p0188* - ID_PRODUCT_FROM_DATABASE=LAN Adapter - -usb:v09F5p0850* - ID_PRODUCT_FROM_DATABASE=Adapter - -usb:v09F6* - ID_VENDOR_FROM_DATABASE=RocketChips, Inc. - -usb:v09F7* - ID_VENDOR_FROM_DATABASE=Edu-Science (H.K.), Ltd - -usb:v09F8* - ID_VENDOR_FROM_DATABASE=SoftConnex Technologies, Inc. - -usb:v09F9* - ID_VENDOR_FROM_DATABASE=Bay Associates - -usb:v09FA* - ID_VENDOR_FROM_DATABASE=Mtek Vision - -usb:v09FB* - ID_VENDOR_FROM_DATABASE=Altera - -usb:v09FBp6001* - ID_PRODUCT_FROM_DATABASE=Blaster - -usb:v09FF* - ID_VENDOR_FROM_DATABASE=Gain Technology Corp. - -usb:v0A00* - ID_VENDOR_FROM_DATABASE=Liquid Audio - -usb:v0A01* - ID_VENDOR_FROM_DATABASE=ViA, Inc. - -usb:v0A05* - ID_VENDOR_FROM_DATABASE=Unknown Manufacturer - -usb:v0A05p7211* - ID_PRODUCT_FROM_DATABASE=hub - -usb:v0A07* - ID_VENDOR_FROM_DATABASE=Ontrak Control Systems Inc. - -usb:v0A07p0064* - ID_PRODUCT_FROM_DATABASE=ADU100 Data Acquisition Interface - -usb:v0A07p0078* - ID_PRODUCT_FROM_DATABASE=ADU120 Data Acquisition Interface - -usb:v0A07p0082* - ID_PRODUCT_FROM_DATABASE=ADU130 Data Acquisition Interface - -usb:v0A07p00C8* - ID_PRODUCT_FROM_DATABASE=ADU200 Relay I/O Interface - -usb:v0A07p00D0* - ID_PRODUCT_FROM_DATABASE=ADU208 Relay I/O Interface - -usb:v0A07p00DA* - ID_PRODUCT_FROM_DATABASE=ADU218 Solid-State Relay I/O Interface - -usb:v0A0B* - ID_VENDOR_FROM_DATABASE=Cybex Computer Products Co. - -usb:v0A11* - ID_VENDOR_FROM_DATABASE=Xentec, Inc. - -usb:v0A12* - ID_VENDOR_FROM_DATABASE=Cambridge Silicon Radio, Ltd - -usb:v0A12p0001* - ID_PRODUCT_FROM_DATABASE=Bluetooth Dongle (HCI mode) - -usb:v0A12p0002* - ID_PRODUCT_FROM_DATABASE=Frontline Test Equipment Bluetooth Device - -usb:v0A12p0003* - ID_PRODUCT_FROM_DATABASE=Nanosira - -usb:v0A12p0004* - ID_PRODUCT_FROM_DATABASE=Nanosira WHQL Reference Radio - -usb:v0A12p0005* - ID_PRODUCT_FROM_DATABASE=Nanosira-Multimedia - -usb:v0A12p0006* - ID_PRODUCT_FROM_DATABASE=Nanosira-Multimedia WHQL Reference Radio - -usb:v0A12p0007* - ID_PRODUCT_FROM_DATABASE=Nanosira3-ROM - -usb:v0A12p0008* - ID_PRODUCT_FROM_DATABASE=Nanosira3-ROM - -usb:v0A12p0009* - ID_PRODUCT_FROM_DATABASE=Nanosira4-EDR WHQL Reference Radio - -usb:v0A12p000A* - ID_PRODUCT_FROM_DATABASE=Nanosira4-EDR-ROM - -usb:v0A12p000B* - ID_PRODUCT_FROM_DATABASE=Nanosira5-ROM - -usb:v0A12p0043* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0A12p0100* - ID_PRODUCT_FROM_DATABASE=Casira with BlueCore2-External Module - -usb:v0A12p0101* - ID_PRODUCT_FROM_DATABASE=Casira with BlueCore2-Flash Module - -usb:v0A12p0102* - ID_PRODUCT_FROM_DATABASE=Casira with BlueCore3-Multimedia Module - -usb:v0A12p0103* - ID_PRODUCT_FROM_DATABASE=Casira with BlueCore3-Flash Module - -usb:v0A12p0104* - ID_PRODUCT_FROM_DATABASE=Casira with BlueCore4-External Module - -usb:v0A12p0105* - ID_PRODUCT_FROM_DATABASE=Casira with BlueCore4-Multimedia Module - -usb:v0A12p1000* - ID_PRODUCT_FROM_DATABASE=Bluetooth Dongle (HID proxy mode) - -usb:v0A12p1010* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0A12p1011* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0A12p1012* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0A12pFFFF* - ID_PRODUCT_FROM_DATABASE=USB Bluetooth Device in DFU State - -usb:v0A13* - ID_VENDOR_FROM_DATABASE=Telebyte, Inc. - -usb:v0A14* - ID_VENDOR_FROM_DATABASE=Spacelabs Medical, Inc. - -usb:v0A15* - ID_VENDOR_FROM_DATABASE=Scalar Corp. - -usb:v0A16* - ID_VENDOR_FROM_DATABASE=Trek Technology (S) PTE, Ltd - -usb:v0A16p1111* - ID_PRODUCT_FROM_DATABASE=ThumbDrive - -usb:v0A16p8888* - ID_PRODUCT_FROM_DATABASE=IBM USB Memory Key - -usb:v0A16p9988* - ID_PRODUCT_FROM_DATABASE=Trek2000 TD-G2 - -usb:v0A17* - ID_VENDOR_FROM_DATABASE=Pentax Corp. - -usb:v0A17p0004* - ID_PRODUCT_FROM_DATABASE=Optio 330 - -usb:v0A17p0006* - ID_PRODUCT_FROM_DATABASE=Optio S - -usb:v0A17p0007* - ID_PRODUCT_FROM_DATABASE=Optio 550 - -usb:v0A17p0009* - ID_PRODUCT_FROM_DATABASE=Optio 33WR - -usb:v0A17p000A* - ID_PRODUCT_FROM_DATABASE=Optio 555 - -usb:v0A17p000C* - ID_PRODUCT_FROM_DATABASE=Optio 43WR (mass storage mode) - -usb:v0A17p000D* - ID_PRODUCT_FROM_DATABASE=Optio 43WR - -usb:v0A17p0015* - ID_PRODUCT_FROM_DATABASE=Optio S40/S5i - -usb:v0A17p003B* - ID_PRODUCT_FROM_DATABASE=Optio 50 (mass storage mode) - -usb:v0A17p003D* - ID_PRODUCT_FROM_DATABASE=Optio S55 - -usb:v0A17p0043* - ID_PRODUCT_FROM_DATABASE=*ist DL - -usb:v0A17p0047* - ID_PRODUCT_FROM_DATABASE=Optio S60 - -usb:v0A17p0052* - ID_PRODUCT_FROM_DATABASE=Optio 60 Digital Camera - -usb:v0A17p006E* - ID_PRODUCT_FROM_DATABASE=K10D - -usb:v0A17p0070* - ID_PRODUCT_FROM_DATABASE=K100D - -usb:v0A17p0093* - ID_PRODUCT_FROM_DATABASE=K200D - -usb:v0A17p00A7* - ID_PRODUCT_FROM_DATABASE=Optio E50 - -usb:v0A17p1001* - ID_PRODUCT_FROM_DATABASE=EI2000 Camera powered by Digita! - -usb:v0A18* - ID_VENDOR_FROM_DATABASE=Heidelberger Druckmaschinen AG - -usb:v0A19* - ID_VENDOR_FROM_DATABASE=Hua Geng Technologies, Inc. - -usb:v0A21* - ID_VENDOR_FROM_DATABASE=Medtronic Physio Control Corp. - -usb:v0A21p8001* - ID_PRODUCT_FROM_DATABASE=MMT-7305WW [Medtronic Minimed CareLink] - -usb:v0A22* - ID_VENDOR_FROM_DATABASE=Century Semiconductor USA, Inc. - -usb:v0A27* - ID_VENDOR_FROM_DATABASE=Datacard Group - -usb:v0A27p0102* - ID_PRODUCT_FROM_DATABASE=SP35 - -usb:v0A2C* - ID_VENDOR_FROM_DATABASE=AK-Modul-Bus Computer GmbH - -usb:v0A2Cp0008* - ID_PRODUCT_FROM_DATABASE=GPIO Ports - -usb:v0A34* - ID_VENDOR_FROM_DATABASE=TG3 Electronics, Inc. - -usb:v0A34p0101* - ID_PRODUCT_FROM_DATABASE=TG82tp - -usb:v0A34p0110* - ID_PRODUCT_FROM_DATABASE=Deck 82-key backlit keyboard - -usb:v0A35* - ID_VENDOR_FROM_DATABASE=Radikal Technologies - -usb:v0A35p002A* - ID_PRODUCT_FROM_DATABASE=SAC - Software Assigned Controller - -usb:v0A35p008A* - ID_PRODUCT_FROM_DATABASE=SAC Hub - -usb:v0A39* - ID_VENDOR_FROM_DATABASE=Gilat Satellite Networks, Ltd - -usb:v0A3A* - ID_VENDOR_FROM_DATABASE=PentaMedia Co., Ltd - -usb:v0A3Ap0163* - ID_PRODUCT_FROM_DATABASE=KN-W510U 1.0 Wireless LAN Adapter - -usb:v0A3C* - ID_VENDOR_FROM_DATABASE=NTT DoCoMo, Inc. - -usb:v0A3D* - ID_VENDOR_FROM_DATABASE=Varo Vision - -usb:v0A3F* - ID_VENDOR_FROM_DATABASE=Swissonic AG - -usb:v0A43* - ID_VENDOR_FROM_DATABASE=Boca Systems, Inc. - -usb:v0A46* - ID_VENDOR_FROM_DATABASE=Davicom Semiconductor, Inc. - -usb:v0A46p0268* - ID_PRODUCT_FROM_DATABASE=ST268 - -usb:v0A46p6688* - ID_PRODUCT_FROM_DATABASE=ZT6688 Fast Ethernet Adapter - -usb:v0A46p8515* - ID_PRODUCT_FROM_DATABASE=ADMtek ADM8515 NIC - -usb:v0A46p9000* - ID_PRODUCT_FROM_DATABASE=DM9000E Fast Ethernet Adapter - -usb:v0A46p9601* - ID_PRODUCT_FROM_DATABASE=DM9601 Fast Ethernet Adapter - -usb:v0A47* - ID_VENDOR_FROM_DATABASE=Hirose Electric - -usb:v0A48* - ID_VENDOR_FROM_DATABASE=I/O Interconnect - -usb:v0A48p3233* - ID_PRODUCT_FROM_DATABASE=Multimedia Card Reader - -usb:v0A48p3239* - ID_PRODUCT_FROM_DATABASE=Multimedia Card Reader - -usb:v0A48p3258* - ID_PRODUCT_FROM_DATABASE=Dane Elec zMate SD Reader - -usb:v0A48p3259* - ID_PRODUCT_FROM_DATABASE=Dane Elec zMate CF Reader - -usb:v0A48p5000* - ID_PRODUCT_FROM_DATABASE=MediaGear xD-SM - -usb:v0A48p500A* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0A48p500F* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0A48p5010* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0A48p5011* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0A48p5014* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0A48p5020* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0A48p5021* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0A48p5022* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0A48p5023* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0A48p5024* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0A48p5025* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0A4B* - ID_VENDOR_FROM_DATABASE=Fujitsu Media Devices, Ltd - -usb:v0A4C* - ID_VENDOR_FROM_DATABASE=Computex Co., Ltd - -usb:v0A4Cp15D9* - ID_PRODUCT_FROM_DATABASE=OPTICAL MOUSE - -usb:v0A4D* - ID_VENDOR_FROM_DATABASE=Evolution Electronics, Ltd - -usb:v0A4Dp0064* - ID_PRODUCT_FROM_DATABASE=MK-225 Driver - -usb:v0A4Dp0065* - ID_PRODUCT_FROM_DATABASE=MK-225C Driver - -usb:v0A4Dp0066* - ID_PRODUCT_FROM_DATABASE=MK-225C Driver - -usb:v0A4Dp0067* - ID_PRODUCT_FROM_DATABASE=MK-425C Driver - -usb:v0A4Dp0078* - ID_PRODUCT_FROM_DATABASE=MK-37 Driver - -usb:v0A4Dp0079* - ID_PRODUCT_FROM_DATABASE=MK-37C Driver - -usb:v0A4Dp007A* - ID_PRODUCT_FROM_DATABASE=MK-37C Driver - -usb:v0A4Dp008C* - ID_PRODUCT_FROM_DATABASE=TerraTec MIDI MASTER - -usb:v0A4Dp008D* - ID_PRODUCT_FROM_DATABASE=MK-249C Driver - -usb:v0A4Dp008E* - ID_PRODUCT_FROM_DATABASE=MK-249C MIDI Keyboard - -usb:v0A4Dp008F* - ID_PRODUCT_FROM_DATABASE=MK-449C Driver - -usb:v0A4Dp0090* - ID_PRODUCT_FROM_DATABASE=Keystation 49e Driver - -usb:v0A4Dp0091* - ID_PRODUCT_FROM_DATABASE=Keystation 61es Driver - -usb:v0A4Dp00A0* - ID_PRODUCT_FROM_DATABASE=MK-361 Driver - -usb:v0A4Dp00A1* - ID_PRODUCT_FROM_DATABASE=MK-361C Driver - -usb:v0A4Dp00A2* - ID_PRODUCT_FROM_DATABASE=MK-361C Driver - -usb:v0A4Dp00A3* - ID_PRODUCT_FROM_DATABASE=MK-461C MIDI Keyboard - -usb:v0A4Dp00B5* - ID_PRODUCT_FROM_DATABASE=Keystation Pro 88 Driver - -usb:v0A4Dp00D2* - ID_PRODUCT_FROM_DATABASE=E-Keys Driver - -usb:v0A4Dp00F0* - ID_PRODUCT_FROM_DATABASE=UC-16 Driver - -usb:v0A4Dp00F1* - ID_PRODUCT_FROM_DATABASE=X-Session Driver - -usb:v0A4Dp00F5* - ID_PRODUCT_FROM_DATABASE=UC-33e MIDI Controller - -usb:v0A4E* - ID_VENDOR_FROM_DATABASE=Steinberg Soft-und Hardware GmbH - -usb:v0A4F* - ID_VENDOR_FROM_DATABASE=Litton Systems, Inc. - -usb:v0A50* - ID_VENDOR_FROM_DATABASE=Mimaki Engineering Co., Ltd - -usb:v0A51* - ID_VENDOR_FROM_DATABASE=Sony Electronics, Inc. - -usb:v0A52* - ID_VENDOR_FROM_DATABASE=Jebsee Electronics Co., Ltd - -usb:v0A53* - ID_VENDOR_FROM_DATABASE=Portable Peripheral Co., Ltd - -usb:v0A53p1000* - ID_PRODUCT_FROM_DATABASE=Scanner - -usb:v0A53p2000* - ID_PRODUCT_FROM_DATABASE=Q-Scan A6 Scanner - -usb:v0A53p2001* - ID_PRODUCT_FROM_DATABASE=Q-Scan A6 Scanner - -usb:v0A53p2013* - ID_PRODUCT_FROM_DATABASE=Media Drive A6 Scanner - -usb:v0A53p2014* - ID_PRODUCT_FROM_DATABASE=Media Drive A6 Scanner - -usb:v0A53p2015* - ID_PRODUCT_FROM_DATABASE=BizCardReader 600C - -usb:v0A53p2016* - ID_PRODUCT_FROM_DATABASE=BizCardReader 600C - -usb:v0A53p202A* - ID_PRODUCT_FROM_DATABASE=Scanshell-CSSN - -usb:v0A53p3000* - ID_PRODUCT_FROM_DATABASE=Q-Scan A8 Scanner - -usb:v0A53p3002* - ID_PRODUCT_FROM_DATABASE=Q-Scan A8 Reader - -usb:v0A53p3015* - ID_PRODUCT_FROM_DATABASE=BizCardReader 300G - -usb:v0A53p302A* - ID_PRODUCT_FROM_DATABASE=LM9832 - PA570 Mini Business Card Scanner [Targus] - -usb:v0A53p5001* - ID_PRODUCT_FROM_DATABASE=BizCardReader 900C - -usb:v0A5A* - ID_VENDOR_FROM_DATABASE=Electronics For Imaging, Inc. - -usb:v0A5B* - ID_VENDOR_FROM_DATABASE=EAsics NV - -usb:v0A5C* - ID_VENDOR_FROM_DATABASE=Broadcom Corp. - -usb:v0A5Cp0201* - ID_PRODUCT_FROM_DATABASE=iLine10(tm) Network Adapter - -usb:v0A5Cp2000* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0A5Cp2001* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0A5Cp2009* - ID_PRODUCT_FROM_DATABASE=BCM2035 Bluetooth - -usb:v0A5Cp200A* - ID_PRODUCT_FROM_DATABASE=BCM2035 Bluetooth dongle - -usb:v0A5Cp200F* - ID_PRODUCT_FROM_DATABASE=Bluetooth Controller - -usb:v0A5Cp201D* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0A5Cp201E* - ID_PRODUCT_FROM_DATABASE=IBM Integrated Bluetooth IV - -usb:v0A5Cp2020* - ID_PRODUCT_FROM_DATABASE=Bluetooth dongle - -usb:v0A5Cp2021* - ID_PRODUCT_FROM_DATABASE=BCM2035B3 Bluetooth Adapter - -usb:v0A5Cp2033* - ID_PRODUCT_FROM_DATABASE=BCM2033 Bluetooth - -usb:v0A5Cp2035* - ID_PRODUCT_FROM_DATABASE=BCM2035 Bluetooth - -usb:v0A5Cp2038* - ID_PRODUCT_FROM_DATABASE=Blutonium Device - -usb:v0A5Cp2039* - ID_PRODUCT_FROM_DATABASE=BCM2045 Bluetooth - -usb:v0A5Cp2045* - ID_PRODUCT_FROM_DATABASE=Bluetooth Controller - -usb:v0A5Cp2046* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0A5Cp2047* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0A5Cp205E* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0A5Cp2100* - ID_PRODUCT_FROM_DATABASE=Bluetooth 2.0+eDR dongle - -usb:v0A5Cp2101* - ID_PRODUCT_FROM_DATABASE=BCM2045 Bluetooth - -usb:v0A5Cp2102* - ID_PRODUCT_FROM_DATABASE=ANYCOM Blue USB-200/250 - -usb:v0A5Cp2110* - ID_PRODUCT_FROM_DATABASE=BCM2045B (BDC-2) [Bluetooth Controller] - -usb:v0A5Cp2111* - ID_PRODUCT_FROM_DATABASE=ANYCOM Blue USB-UHE 200/250 - -usb:v0A5Cp2120* - ID_PRODUCT_FROM_DATABASE=2045 Bluetooth 2.0 USB-UHE Device with trace filter - -usb:v0A5Cp2121* - ID_PRODUCT_FROM_DATABASE=BCM2210 Bluetooth - -usb:v0A5Cp2122* - ID_PRODUCT_FROM_DATABASE=Bluetooth 2.0+EDR dongle - -usb:v0A5Cp2123* - ID_PRODUCT_FROM_DATABASE=Bluetooth dongle - -usb:v0A5Cp2130* - ID_PRODUCT_FROM_DATABASE=2045 Bluetooth 2.0 USB-UHE Device with trace filter - -usb:v0A5Cp2131* - ID_PRODUCT_FROM_DATABASE=2045 Bluetooth 2.0 Device with trace filter - -usb:v0A5Cp2145* - ID_PRODUCT_FROM_DATABASE=BCM2045B (BDC-2.1) [Bluetooth Controller] - -usb:v0A5Cp2148* - ID_PRODUCT_FROM_DATABASE=BCM92046DG-CL1ROM Bluetooth 2.1 Adapter - -usb:v0A5Cp2150* - ID_PRODUCT_FROM_DATABASE=BCM2046 Bluetooth Device - -usb:v0A5Cp2151* - ID_PRODUCT_FROM_DATABASE=Bluetooth - -usb:v0A5Cp2154* - ID_PRODUCT_FROM_DATABASE=BCM92046DG-CL1ROM Bluetooth 2.1 UHE Dongle - -usb:v0A5Cp217D* - ID_PRODUCT_FROM_DATABASE=HP Bluethunder - -usb:v0A5Cp217F* - ID_PRODUCT_FROM_DATABASE=BCM2045B (BDC-2.1) - -usb:v0A5Cp2198* - ID_PRODUCT_FROM_DATABASE=Bluetooth 3.0 Device - -usb:v0A5Cp219B* - ID_PRODUCT_FROM_DATABASE=Bluetooth 2.1 Device - -usb:v0A5Cp21B1* - ID_PRODUCT_FROM_DATABASE=HP Bluetooth Module - -usb:v0A5Cp21B4* - ID_PRODUCT_FROM_DATABASE=BCM2070 Bluetooth 2.1 + EDR - -usb:v0A5Cp21B9* - ID_PRODUCT_FROM_DATABASE=BCM2070 Bluetooth 2.1 + EDR - -usb:v0A5Cp21BA* - ID_PRODUCT_FROM_DATABASE=BCM2070 Bluetooth 2.1 + EDR - -usb:v0A5Cp21BB* - ID_PRODUCT_FROM_DATABASE=BCM2070 Bluetooth 2.1 + EDR - -usb:v0A5Cp21BC* - ID_PRODUCT_FROM_DATABASE=BCM2070 Bluetooth 2.1 + EDR - -usb:v0A5Cp21BD* - ID_PRODUCT_FROM_DATABASE=BCM2070 Bluetooth 2.1 + EDR - -usb:v0A5Cp21D7* - ID_PRODUCT_FROM_DATABASE=BCM43142 Bluetooth 4.0 - -usb:v0A5Cp21E1* - ID_PRODUCT_FROM_DATABASE=HP Portable SoftSailing - -usb:v0A5Cp21E3* - ID_PRODUCT_FROM_DATABASE=HP Portable Valentine - -usb:v0A5Cp21E6* - ID_PRODUCT_FROM_DATABASE=BCM20702 Bluetooth 4.0 [ThinkPad] - -usb:v0A5Cp21E8* - ID_PRODUCT_FROM_DATABASE=BCM20702A0 Bluetooth 4.0 - -usb:v0A5Cp21F1* - ID_PRODUCT_FROM_DATABASE=HP Portable Bumble Bee - -usb:v0A5Cp22BE* - ID_PRODUCT_FROM_DATABASE=BCM2070 Bluetooth 3.0 + HS - -usb:v0A5Cp4500* - ID_PRODUCT_FROM_DATABASE=BCM2046B1 USB 2.0 Hub (part of BCM2046 Bluetooth) - -usb:v0A5Cp4502* - ID_PRODUCT_FROM_DATABASE=Keyboard (Boot Interface Subclass) - -usb:v0A5Cp4503* - ID_PRODUCT_FROM_DATABASE=Mouse (Boot Interface Subclass) - -usb:v0A5Cp5800* - ID_PRODUCT_FROM_DATABASE=BCM5880 Secure Applications Processor - -usb:v0A5Cp5801* - ID_PRODUCT_FROM_DATABASE=BCM5880 Secure Applications Processor with fingerprint swipe sensor - -usb:v0A5Cp5802* - ID_PRODUCT_FROM_DATABASE=BCM5880 Secure Applications Processor with fingerprint touch sensor - -usb:v0A5Cp5803* - ID_PRODUCT_FROM_DATABASE=BCM5880 Secure Applications Processor with secure keyboard - -usb:v0A5Cp6300* - ID_PRODUCT_FROM_DATABASE=Pirelli Remote NDIS Device - -usb:v0A5CpBD11* - ID_PRODUCT_FROM_DATABASE=TiVo AG0100 802.11bg Wireless Adapter [Broadcom BCM4320] - -usb:v0A5CpBD13* - ID_PRODUCT_FROM_DATABASE=BCM4323 802.11abgn Wireless Adapter - -usb:v0A5CpBD17* - ID_PRODUCT_FROM_DATABASE=BCM43236 802.11abgn Wireless Adapter - -usb:v0A5CpD11B* - ID_PRODUCT_FROM_DATABASE=Eminent EM4045 [Broadcom 4320 USB] - -usb:v0A5D* - ID_VENDOR_FROM_DATABASE=Diatrend Corp. - -usb:v0A5F* - ID_VENDOR_FROM_DATABASE=Zebra - -usb:v0A5Fp0009* - ID_PRODUCT_FROM_DATABASE=LP2844 Printer - -usb:v0A5Fp0081* - ID_PRODUCT_FROM_DATABASE=GK420t Label Printer - -usb:v0A5Fp008B* - ID_PRODUCT_FROM_DATABASE=HC100 wristbands Printer - -usb:v0A5Fp930A* - ID_PRODUCT_FROM_DATABASE=Printer - -usb:v0A62* - ID_VENDOR_FROM_DATABASE=MPMan - -usb:v0A62p0010* - ID_PRODUCT_FROM_DATABASE=MPMan MP-F40 MP3 Player - -usb:v0A66* - ID_VENDOR_FROM_DATABASE=ClearCube Technology - -usb:v0A67* - ID_VENDOR_FROM_DATABASE=Medeli Electronics Co., Ltd - -usb:v0A68* - ID_VENDOR_FROM_DATABASE=Comaide Corp. - -usb:v0A69* - ID_VENDOR_FROM_DATABASE=Chroma ate, Inc. - -usb:v0A6B* - ID_VENDOR_FROM_DATABASE=Green House Co., Ltd - -usb:v0A6Bp0001* - ID_PRODUCT_FROM_DATABASE=Compact Flash R/W with MP3 player - -usb:v0A6Bp000F* - ID_PRODUCT_FROM_DATABASE=FlashDisk - -usb:v0A6C* - ID_VENDOR_FROM_DATABASE=Integrated Circuit Systems, Inc. - -usb:v0A6D* - ID_VENDOR_FROM_DATABASE=UPS Manufacturing - -usb:v0A6E* - ID_VENDOR_FROM_DATABASE=Benwin - -usb:v0A6F* - ID_VENDOR_FROM_DATABASE=Core Technology, Inc. - -usb:v0A6Fp0400* - ID_PRODUCT_FROM_DATABASE=Xanboo - -usb:v0A70* - ID_VENDOR_FROM_DATABASE=International Game Technology - -usb:v0A71* - ID_VENDOR_FROM_DATABASE=VIPColor Technologies USA, Inc. - -usb:v0A71p0001* - ID_PRODUCT_FROM_DATABASE=VP485 Printer - -usb:v0A72* - ID_VENDOR_FROM_DATABASE=Sanwa Denshi - -usb:v0A73* - ID_VENDOR_FROM_DATABASE=Mackie Designs - -usb:v0A73p0002* - ID_PRODUCT_FROM_DATABASE=XD-2 [Spike] - -usb:v0A7D* - ID_VENDOR_FROM_DATABASE=NSTL, Inc. - -usb:v0A7E* - ID_VENDOR_FROM_DATABASE=Octagon Systems Corp. - -usb:v0A80* - ID_VENDOR_FROM_DATABASE=Rexon Technology Corp., Ltd - -usb:v0A81* - ID_VENDOR_FROM_DATABASE=Chesen Electronics Corp. - -usb:v0A81p0101* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v0A81p0103* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v0A81p0203* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v0A81p0205* - ID_PRODUCT_FROM_DATABASE=PS/2 Keyboard+Mouse Adapter - -usb:v0A81p0701* - ID_PRODUCT_FROM_DATABASE=USB Missile Launcher - -usb:v0A81pFF01* - ID_PRODUCT_FROM_DATABASE=Wireless Missile Launcher - -usb:v0A82* - ID_VENDOR_FROM_DATABASE=Syscan - -usb:v0A82p4600* - ID_PRODUCT_FROM_DATABASE=TravelScan 460/464 - -usb:v0A83* - ID_VENDOR_FROM_DATABASE=NextComm, Inc. - -usb:v0A84* - ID_VENDOR_FROM_DATABASE=Maui Innovative Peripherals - -usb:v0A85* - ID_VENDOR_FROM_DATABASE=Idexx Labs - -usb:v0A86* - ID_VENDOR_FROM_DATABASE=NITGen Co., Ltd - -usb:v0A8D* - ID_VENDOR_FROM_DATABASE=Picturetel - -usb:v0A8E* - ID_VENDOR_FROM_DATABASE=Japan Aviation Electronics Industry, Ltd - -usb:v0A8Ep2011* - ID_PRODUCT_FROM_DATABASE=Filter Driver For JAE XMC R/W - -usb:v0A90* - ID_VENDOR_FROM_DATABASE=Candy Technology Co., Ltd - -usb:v0A91* - ID_VENDOR_FROM_DATABASE=Globlink Technology, Inc. - -usb:v0A91p3801* - ID_PRODUCT_FROM_DATABASE=Targus PAKP003 Mouse - -usb:v0A92* - ID_VENDOR_FROM_DATABASE=EGO SYStems, Inc. - -usb:v0A92p0011* - ID_PRODUCT_FROM_DATABASE=SYS WaveTerminal U2A - -usb:v0A92p0021* - ID_PRODUCT_FROM_DATABASE=GIGAPort - -usb:v0A92p0031* - ID_PRODUCT_FROM_DATABASE=GIGAPortAG - -usb:v0A92p0053* - ID_PRODUCT_FROM_DATABASE=AudioTrak Optoplay - -usb:v0A92p0061* - ID_PRODUCT_FROM_DATABASE=Waveterminal U24 - -usb:v0A92p0071* - ID_PRODUCT_FROM_DATABASE=MAYA EX7 - -usb:v0A92p0091* - ID_PRODUCT_FROM_DATABASE=Maya 44 - -usb:v0A92p00B1* - ID_PRODUCT_FROM_DATABASE=MAYA EX5 - -usb:v0A92p1000* - ID_PRODUCT_FROM_DATABASE=MIDI Mate - -usb:v0A92p1010* - ID_PRODUCT_FROM_DATABASE=RoMI/O - -usb:v0A92p1020* - ID_PRODUCT_FROM_DATABASE=M4U - -usb:v0A92p1030* - ID_PRODUCT_FROM_DATABASE=M8U - -usb:v0A92p1090* - ID_PRODUCT_FROM_DATABASE=KeyControl49 - -usb:v0A92p10A0* - ID_PRODUCT_FROM_DATABASE=KeyControl25 - -usb:v0A93* - ID_VENDOR_FROM_DATABASE=C Technologies AB - -usb:v0A93p0002* - ID_PRODUCT_FROM_DATABASE=C-Pen 10 - -usb:v0A93p0005* - ID_PRODUCT_FROM_DATABASE=MyPen Light - -usb:v0A93p000D* - ID_PRODUCT_FROM_DATABASE=Input Pen - -usb:v0A93p0010* - ID_PRODUCT_FROM_DATABASE=C-Pen 20 - -usb:v0A93p0A93* - ID_PRODUCT_FROM_DATABASE=PayPen - -usb:v0A94* - ID_VENDOR_FROM_DATABASE=Intersense - -usb:v0AA3* - ID_VENDOR_FROM_DATABASE=Lava Computer Mfg., Inc. - -usb:v0AA4* - ID_VENDOR_FROM_DATABASE=Develco Elektronik - -usb:v0AA5* - ID_VENDOR_FROM_DATABASE=First International Digital - -usb:v0AA5p0002* - ID_PRODUCT_FROM_DATABASE=irock! 500 Series - -usb:v0AA5p0801* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v0AA6* - ID_VENDOR_FROM_DATABASE=Perception Digital, Ltd - -usb:v0AA6p0101* - ID_PRODUCT_FROM_DATABASE=Hercules Jukebox - -usb:v0AA6p1501* - ID_PRODUCT_FROM_DATABASE=Store 'n' Go HD Drive - -usb:v0AA7* - ID_VENDOR_FROM_DATABASE=Wincor Nixdorf International GmbH - -usb:v0AA7p0100* - ID_PRODUCT_FROM_DATABASE=POS Keyboard, TA58P-USB - -usb:v0AA7p0101* - ID_PRODUCT_FROM_DATABASE=POS Keyboard, TA85P-USB - -usb:v0AA7p0102* - ID_PRODUCT_FROM_DATABASE=POS Keyboard, TA59-USB - -usb:v0AA7p0103* - ID_PRODUCT_FROM_DATABASE=POS Keyboard, TA60-USB - -usb:v0AA7p0104* - ID_PRODUCT_FROM_DATABASE=SNIkey Keyboard, SNIKey-KB-USB - -usb:v0AA7p0200* - ID_PRODUCT_FROM_DATABASE=Operator Display, BA63-USB - -usb:v0AA7p0201* - ID_PRODUCT_FROM_DATABASE=Operator Display, BA66-USB - -usb:v0AA7p0202* - ID_PRODUCT_FROM_DATABASE=Operator Display & Scanner, XiCheck-BA63 - -usb:v0AA7p0203* - ID_PRODUCT_FROM_DATABASE=Operator Display & Scanner, XiCheck-BA66 - -usb:v0AA7p0204* - ID_PRODUCT_FROM_DATABASE=Graphics Operator Display, BA63GV - -usb:v0AA7p0300* - ID_PRODUCT_FROM_DATABASE=POS Printer (printer class mode), TH210 - -usb:v0AA7p0301* - ID_PRODUCT_FROM_DATABASE=POS Printer (native mode), TH210 - -usb:v0AA7p0302* - ID_PRODUCT_FROM_DATABASE=POS Printer (printer class mode), TH220 - -usb:v0AA7p0303* - ID_PRODUCT_FROM_DATABASE=POS Printer (native mode), TH220 - -usb:v0AA7p0304* - ID_PRODUCT_FROM_DATABASE=POS Printer, TH230 - -usb:v0AA7p0305* - ID_PRODUCT_FROM_DATABASE=Lottery Printer, XiPrintPlus - -usb:v0AA7p0306* - ID_PRODUCT_FROM_DATABASE=POS Printer (printer class mode), TH320 - -usb:v0AA7p0307* - ID_PRODUCT_FROM_DATABASE=POS Printer (native mode), TH320 - -usb:v0AA7p0308* - ID_PRODUCT_FROM_DATABASE=POS Printer (printer class mode), TH420 - -usb:v0AA7p0309* - ID_PRODUCT_FROM_DATABASE=POS Printer (native mode), TH420 - -usb:v0AA7p030A* - ID_PRODUCT_FROM_DATABASE=POS Printer, TH200B - -usb:v0AA7p0400* - ID_PRODUCT_FROM_DATABASE=Lottery Scanner, Xiscan S - -usb:v0AA7p0401* - ID_PRODUCT_FROM_DATABASE=Lottery Scanner, Xiscan 3 - -usb:v0AA7p0402* - ID_PRODUCT_FROM_DATABASE=Programmable Magnetic Swipe Card Reader, MSRP-USB - -usb:v0AA7p0500* - ID_PRODUCT_FROM_DATABASE=IDE Adapter - -usb:v0AA7p0501* - ID_PRODUCT_FROM_DATABASE=Hub Printer Interface - -usb:v0AA7p0502* - ID_PRODUCT_FROM_DATABASE=Hub SNIKey Keyboard - -usb:v0AA7p4304* - ID_PRODUCT_FROM_DATABASE=Banking Printer TP07 - -usb:v0AA7p4305* - ID_PRODUCT_FROM_DATABASE=Banking Printer TP07c - -usb:v0AA7p4500* - ID_PRODUCT_FROM_DATABASE=WN Central Special Electronics - -usb:v0AA8* - ID_VENDOR_FROM_DATABASE=TriGem Computer, Inc. - -usb:v0AA8p0060* - ID_PRODUCT_FROM_DATABASE=TG 11Mbps WLAN Mini Adapter - -usb:v0AA8p1001* - ID_PRODUCT_FROM_DATABASE=DreamComboM4100 - -usb:v0AA8p3002* - ID_PRODUCT_FROM_DATABASE=InkJet Color Printer - -usb:v0AA8p8001* - ID_PRODUCT_FROM_DATABASE=TG_iMON - -usb:v0AA8p8002* - ID_PRODUCT_FROM_DATABASE=TG_KLOSS - -usb:v0AA8pA001* - ID_PRODUCT_FROM_DATABASE=TG_X2 - -usb:v0AA8pA002* - ID_PRODUCT_FROM_DATABASE=TGVFD_KLOSS - -usb:v0AA8pFFDA* - ID_PRODUCT_FROM_DATABASE=iMON_VFD - -usb:v0AA9* - ID_VENDOR_FROM_DATABASE=Baromtec Co. - -usb:v0AA9pF01B* - ID_PRODUCT_FROM_DATABASE=Medion MD 6242 MP3 Player - -usb:v0AAA* - ID_VENDOR_FROM_DATABASE=Japan CBM Corp. - -usb:v0AAB* - ID_VENDOR_FROM_DATABASE=Vision Shape Europe SA - -usb:v0AAC* - ID_VENDOR_FROM_DATABASE=iCompression, Inc. - -usb:v0AAD* - ID_VENDOR_FROM_DATABASE=Rohde & Schwarz GmbH & Co. KG - -usb:v0AADp0003* - ID_PRODUCT_FROM_DATABASE=NRP-Z21 - -usb:v0AADp000C* - ID_PRODUCT_FROM_DATABASE=NRP-Z11 - -usb:v0AADp0013* - ID_PRODUCT_FROM_DATABASE=NRP-Z22 - -usb:v0AADp0014* - ID_PRODUCT_FROM_DATABASE=NRP-Z23 - -usb:v0AADp0015* - ID_PRODUCT_FROM_DATABASE=NRP-Z24 - -usb:v0AADp0016* - ID_PRODUCT_FROM_DATABASE=NRP-Z51 - -usb:v0AADp0017* - ID_PRODUCT_FROM_DATABASE=NRP-Z52 - -usb:v0AADp0018* - ID_PRODUCT_FROM_DATABASE=NRP-Z55 - -usb:v0AADp0019* - ID_PRODUCT_FROM_DATABASE=NRP-Z56 - -usb:v0AADp0021* - ID_PRODUCT_FROM_DATABASE=NRP-Z91 - -usb:v0AADp0023* - ID_PRODUCT_FROM_DATABASE=NRP-Z81 - -usb:v0AADp002C* - ID_PRODUCT_FROM_DATABASE=NRP-Z31 - -usb:v0AADp002D* - ID_PRODUCT_FROM_DATABASE=NRP-Z37 - -usb:v0AADp002F* - ID_PRODUCT_FROM_DATABASE=NRP-Z27 - -usb:v0AADp0051* - ID_PRODUCT_FROM_DATABASE=NRP-Z28 - -usb:v0AADp0052* - ID_PRODUCT_FROM_DATABASE=NRP-Z98 - -usb:v0AADp0062* - ID_PRODUCT_FROM_DATABASE=NRP-Z92 - -usb:v0AADp0070* - ID_PRODUCT_FROM_DATABASE=NRP-Z57 - -usb:v0AADp0083* - ID_PRODUCT_FROM_DATABASE=NRP-Z85 - -usb:v0AADp0095* - ID_PRODUCT_FROM_DATABASE=NRP-Z86 - -usb:v0AAE* - ID_VENDOR_FROM_DATABASE=NEC infrontia Corp. (Nitsuko) - -usb:v0AAF* - ID_VENDOR_FROM_DATABASE=Digitalway Co., Ltd - -usb:v0AB0* - ID_VENDOR_FROM_DATABASE=Arrow Strong Electronics Co., Ltd - -usb:v0AB1* - ID_VENDOR_FROM_DATABASE=FEIG ELECTRONIC GmbH - -usb:v0AB1p0002* - ID_PRODUCT_FROM_DATABASE=OBID RFID-Reader - -usb:v0ABA* - ID_VENDOR_FROM_DATABASE=Ellisys - -usb:v0ABAp8001* - ID_PRODUCT_FROM_DATABASE=Tracker 110 Protocol Analyzer - -usb:v0ABAp8002* - ID_PRODUCT_FROM_DATABASE=Explorer 200 Protocol Analyzer - -usb:v0ABE* - ID_VENDOR_FROM_DATABASE=Stereo-Link - -usb:v0ABEp0101* - ID_PRODUCT_FROM_DATABASE=SL1200 DAC - -usb:v0ABF* - ID_VENDOR_FROM_DATABASE=Diolan - -usb:v0ABFp3370* - ID_PRODUCT_FROM_DATABASE=I2C/SPI Adapter - U2C-12 - -usb:v0AC3* - ID_VENDOR_FROM_DATABASE=Sanyo Semiconductor Company Micro - -usb:v0AC4* - ID_VENDOR_FROM_DATABASE=Leco Corp. - -usb:v0AC5* - ID_VENDOR_FROM_DATABASE=I & C Corp. - -usb:v0AC6* - ID_VENDOR_FROM_DATABASE=Singing Electrons, Inc. - -usb:v0AC7* - ID_VENDOR_FROM_DATABASE=Panwest Corp. - -usb:v0AC8* - ID_VENDOR_FROM_DATABASE=Z-Star Microelectronics Corp. - -usb:v0AC8p0301* - ID_PRODUCT_FROM_DATABASE=Web Camera - -usb:v0AC8p0302* - ID_PRODUCT_FROM_DATABASE=ZC0302 Webcam - -usb:v0AC8p0321* - ID_PRODUCT_FROM_DATABASE=Vimicro generic vc0321 Camera - -usb:v0AC8p0323* - ID_PRODUCT_FROM_DATABASE=Luxya WC-1200 USB 2.0 Webcam - -usb:v0AC8p0328* - ID_PRODUCT_FROM_DATABASE=A4Tech PK-130MG - -usb:v0AC8p0336* - ID_PRODUCT_FROM_DATABASE=Elecom UCAM-DLQ30 - -usb:v0AC8p301B* - ID_PRODUCT_FROM_DATABASE=ZC0301 Webcam - -usb:v0AC8p303B* - ID_PRODUCT_FROM_DATABASE=ZC0303 Webcam - -usb:v0AC8p305B* - ID_PRODUCT_FROM_DATABASE=ZC0305 Webcam - -usb:v0AC8p307B* - ID_PRODUCT_FROM_DATABASE=USB 1.1 Webcam - -usb:v0AC8p332D* - ID_PRODUCT_FROM_DATABASE=Vega USB 2.0 Camera - -usb:v0AC8p3343* - ID_PRODUCT_FROM_DATABASE=Sirius USB 2.0 Camera - -usb:v0AC8p3370* - ID_PRODUCT_FROM_DATABASE=Traveler TV 6500 SF Dia-scanner - -usb:v0AC8p3420* - ID_PRODUCT_FROM_DATABASE=Venus USB2.0 Camera - -usb:v0AC8pC001* - ID_PRODUCT_FROM_DATABASE=Sony embedded vimicro Camera - -usb:v0AC8pC002* - ID_PRODUCT_FROM_DATABASE=Visual Communication Camera VGP-VCC1 - -usb:v0AC8pC302* - ID_PRODUCT_FROM_DATABASE=Vega USB 2.0 Camera - -usb:v0AC8pC303* - ID_PRODUCT_FROM_DATABASE=Saturn USB 2.0 Camera - -usb:v0AC8pC326* - ID_PRODUCT_FROM_DATABASE=Namuga 1.3M Webcam - -usb:v0AC8pC33F* - ID_PRODUCT_FROM_DATABASE=Webcam - -usb:v0AC9* - ID_VENDOR_FROM_DATABASE=Micro Solutions, Inc. - -usb:v0AC9p0000* - ID_PRODUCT_FROM_DATABASE=Backpack CD-ReWriter - -usb:v0AC9p0001* - ID_PRODUCT_FROM_DATABASE=BACKPACK 2 Cable - -usb:v0AC9p0010* - ID_PRODUCT_FROM_DATABASE=BACKPACK - -usb:v0AC9p0011* - ID_PRODUCT_FROM_DATABASE=Backpack 40GB Hard Drive - -usb:v0AC9p0110* - ID_PRODUCT_FROM_DATABASE=BACKPACK - -usb:v0AC9p0111* - ID_PRODUCT_FROM_DATABASE=BackPack - -usb:v0AC9p1234* - ID_PRODUCT_FROM_DATABASE=BACKPACK - -usb:v0ACA* - ID_VENDOR_FROM_DATABASE=OPEN Networks Ltd - -usb:v0ACAp1060* - ID_PRODUCT_FROM_DATABASE=OPEN NT1 Plus II - -usb:v0ACC* - ID_VENDOR_FROM_DATABASE=Koga Electronics Co. - -usb:v0ACD* - ID_VENDOR_FROM_DATABASE=ID Tech - -usb:v0ACDp0300* - ID_PRODUCT_FROM_DATABASE=IDT1221U RS-232 Adapter - -usb:v0ACDp0401* - ID_PRODUCT_FROM_DATABASE=Spectrum III Hybrid Smartcard Reader - -usb:v0ACDp0630* - ID_PRODUCT_FROM_DATABASE=Spectrum III Mag-Only Insert Reader (SPT3-355 Series) USB-CDC - -usb:v0ACE* - ID_VENDOR_FROM_DATABASE=ZyDAS - -usb:v0ACEp1201* - ID_PRODUCT_FROM_DATABASE=ZD1201 802.11b - -usb:v0ACEp1211* - ID_PRODUCT_FROM_DATABASE=ZD1211 802.11g - -usb:v0ACEp1215* - ID_PRODUCT_FROM_DATABASE=ZD1211B 802.11g - -usb:v0ACEp1221* - ID_PRODUCT_FROM_DATABASE=ZD1221 802.11n - -usb:v0ACEp1602* - ID_PRODUCT_FROM_DATABASE=ZyXEL Omni FaxModem 56K - -usb:v0ACEp1608* - ID_PRODUCT_FROM_DATABASE=ZyXEL Omni FaxModem 56K UNO - -usb:v0ACEp1611* - ID_PRODUCT_FROM_DATABASE=ZyXEL Omni FaxModem 56K Plus - -usb:v0ACEp2011* - ID_PRODUCT_FROM_DATABASE=Virtual media for 802.11bg - -usb:v0ACEp20FF* - ID_PRODUCT_FROM_DATABASE=Virtual media for 802.11bg - -usb:v0ACEpA211* - ID_PRODUCT_FROM_DATABASE=ZD1211 802.11b/g Wireless Adapter - -usb:v0ACEpB215* - ID_PRODUCT_FROM_DATABASE=802.11bg - -usb:v0ACF* - ID_VENDOR_FROM_DATABASE=Intoto, Inc. - -usb:v0AD0* - ID_VENDOR_FROM_DATABASE=Intellix Corp. - -usb:v0AD1* - ID_VENDOR_FROM_DATABASE=Remotec Technology, Ltd - -usb:v0AD2* - ID_VENDOR_FROM_DATABASE=Service & Quality Technology Co., Ltd - -usb:v0ADA* - ID_VENDOR_FROM_DATABASE=Data Encryption Systems Ltd. - -usb:v0ADAp0005* - ID_PRODUCT_FROM_DATABASE=DK2 - -usb:v0AE3* - ID_VENDOR_FROM_DATABASE=Allion Computer, Inc. - -usb:v0AE4* - ID_VENDOR_FROM_DATABASE=Taito Corp. - -usb:v0AE7* - ID_VENDOR_FROM_DATABASE=Neodym Systems, Inc. - -usb:v0AE8* - ID_VENDOR_FROM_DATABASE=System Support Co., Ltd - -usb:v0AE9* - ID_VENDOR_FROM_DATABASE=North Shore Circuit Design L.L.P. - -usb:v0AEA* - ID_VENDOR_FROM_DATABASE=SciEssence, LLC - -usb:v0AEB* - ID_VENDOR_FROM_DATABASE=TTP Communications, Ltd - -usb:v0AEC* - ID_VENDOR_FROM_DATABASE=Neodio Technologies Corp. - -usb:v0AECp2101* - ID_PRODUCT_FROM_DATABASE=SmartMedia Card Reader - -usb:v0AECp2102* - ID_PRODUCT_FROM_DATABASE=CompactFlash Card Reader - -usb:v0AECp2103* - ID_PRODUCT_FROM_DATABASE=MMC/SD Card Reader - -usb:v0AECp2104* - ID_PRODUCT_FROM_DATABASE=MemoryStick Card Reader - -usb:v0AECp2201* - ID_PRODUCT_FROM_DATABASE=SmartMedia+CompactFlash Card Reader - -usb:v0AECp2202* - ID_PRODUCT_FROM_DATABASE=SmartMedia+MMC/SD Card Reader - -usb:v0AECp2203* - ID_PRODUCT_FROM_DATABASE=SmartMedia+MemoryStick Card Reader - -usb:v0AECp2204* - ID_PRODUCT_FROM_DATABASE=CompactFlash+MMC/SD Card Reader - -usb:v0AECp2205* - ID_PRODUCT_FROM_DATABASE=CompactFlash+MemoryStick Card Reader - -usb:v0AECp2206* - ID_PRODUCT_FROM_DATABASE=MMC/SD+MemoryStick Card Reader - -usb:v0AECp2301* - ID_PRODUCT_FROM_DATABASE=SmartMedia+CompactFlash+MMC/SD Card Reader - -usb:v0AECp2302* - ID_PRODUCT_FROM_DATABASE=SmartMedia+CompactFlash+MemoryStick Card Reader - -usb:v0AECp2303* - ID_PRODUCT_FROM_DATABASE=SmartMedia+MMC/SD+MemoryStick Card Reader - -usb:v0AECp2304* - ID_PRODUCT_FROM_DATABASE=CompactFlash+MMC/SD+MemoryStick Card Reader - -usb:v0AECp3016* - ID_PRODUCT_FROM_DATABASE=MMC/SD+Memory Stick Card Reader - -usb:v0AECp3050* - ID_PRODUCT_FROM_DATABASE=ND3050 8-in-1 Card Reader - -usb:v0AECp3060* - ID_PRODUCT_FROM_DATABASE=1.1 FS Card Reader - -usb:v0AECp3101* - ID_PRODUCT_FROM_DATABASE=MMC/SD Card Reader - -usb:v0AECp3102* - ID_PRODUCT_FROM_DATABASE=MemoryStick Card Reader - -usb:v0AECp3201* - ID_PRODUCT_FROM_DATABASE=MMC/SD+MemoryStick Card Reader - -usb:v0AECp3216* - ID_PRODUCT_FROM_DATABASE=HS Card Reader - -usb:v0AECp3260* - ID_PRODUCT_FROM_DATABASE=7-in-1 Card Reader - -usb:v0AECp5010* - ID_PRODUCT_FROM_DATABASE=ND5010 Card Reader - -usb:v0AF0* - ID_VENDOR_FROM_DATABASE=Option - -usb:v0AF0p5000* - ID_PRODUCT_FROM_DATABASE=UMTS Card - -usb:v0AF0p6000* - ID_PRODUCT_FROM_DATABASE=GlobeTrotter 3G datacard - -usb:v0AF0p6300* - ID_PRODUCT_FROM_DATABASE=GT 3G Quad UMTS/GPRS Card - -usb:v0AF0p6600* - ID_PRODUCT_FROM_DATABASE=GlobeTrotter 3G+ datacard - -usb:v0AF0p6711* - ID_PRODUCT_FROM_DATABASE=GlobeTrotter Express 7.2 v2 - -usb:v0AF0p6971* - ID_PRODUCT_FROM_DATABASE=Globetrotter HSDPA Modem - -usb:v0AF0p7251* - ID_PRODUCT_FROM_DATABASE=Globetrotter HSUPA Modem (aka iCON HSUPA E) - -usb:v0AF0p7501* - ID_PRODUCT_FROM_DATABASE=Globetrotter HSUPA Modem (icon 411 aka "Vodafone K3760") - -usb:v0AF0p7601* - ID_PRODUCT_FROM_DATABASE=Globetrotter MO40x 3G Modem (GTM 382) - -usb:v0AF0p7701* - ID_PRODUCT_FROM_DATABASE=Globetrotter HSUPA Modem (aka icon 451) - -usb:v0AF0pD055* - ID_PRODUCT_FROM_DATABASE=Globetrotter GI0505 [iCON 505] - -usb:v0AF6* - ID_VENDOR_FROM_DATABASE=Silver I Co., Ltd - -usb:v0AF7* - ID_VENDOR_FROM_DATABASE=B2C2, Inc. - -usb:v0AF7p0101* - ID_PRODUCT_FROM_DATABASE=Digital TV USB Receiver (DVB-S/T/C / ATSC) - -usb:v0AF9* - ID_VENDOR_FROM_DATABASE=Hama, Inc. - -usb:v0AF9p0010* - ID_PRODUCT_FROM_DATABASE=USB SightCam 100 - -usb:v0AF9p0011* - ID_PRODUCT_FROM_DATABASE=Micro Innovations IC50C Webcam - -usb:v0AFC* - ID_VENDOR_FROM_DATABASE=Zaptronix Ltd - -usb:v0AFD* - ID_VENDOR_FROM_DATABASE=Tateno Dennou, Inc. - -usb:v0AFE* - ID_VENDOR_FROM_DATABASE=Cummins Engine Co. - -usb:v0AFF* - ID_VENDOR_FROM_DATABASE=Jump Zone Network Products, Inc. - -usb:v0B00* - ID_VENDOR_FROM_DATABASE=INGENICO - -usb:v0B05* - ID_VENDOR_FROM_DATABASE=ASUSTek Computer, Inc. - -usb:v0B05p1101* - ID_PRODUCT_FROM_DATABASE=Mass Storage (UISDMC4S) - -usb:v0B05p1706* - ID_PRODUCT_FROM_DATABASE=WL-167G v1 802.11g Adapter [Ralink RT2571] - -usb:v0B05p1707* - ID_PRODUCT_FROM_DATABASE=WL-167G v1 802.11g Adapter [Ralink RT2571] - -usb:v0B05p1708* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0B05p170B* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0B05p170C* - ID_PRODUCT_FROM_DATABASE=WL-159g 802.11bg - -usb:v0B05p170D* - ID_PRODUCT_FROM_DATABASE=802.11b/g Wireless Network Adapter - -usb:v0B05p1712* - ID_PRODUCT_FROM_DATABASE=BT-183 Bluetooth 2.0+EDR adapter - -usb:v0B05p1715* - ID_PRODUCT_FROM_DATABASE=2045 Bluetooth 2.0 Device with trace filter - -usb:v0B05p1716* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0B05p1717* - ID_PRODUCT_FROM_DATABASE=WL169gE 802.11g Adapter [Broadcom 4320 USB] - -usb:v0B05p171B* - ID_PRODUCT_FROM_DATABASE=A9T wireless 802.11bg - -usb:v0B05p171C* - ID_PRODUCT_FROM_DATABASE=802.11b/g Wireless Network Adapter - -usb:v0B05p171F* - ID_PRODUCT_FROM_DATABASE=My Cinema U3000 Mini [DiBcom DiB7700P] - -usb:v0B05p1723* - ID_PRODUCT_FROM_DATABASE=WL-167G v2 802.11g Adapter [Ralink RT2571W] - -usb:v0B05p1724* - ID_PRODUCT_FROM_DATABASE=RT2573 - -usb:v0B05p1726* - ID_PRODUCT_FROM_DATABASE=Laptop OLED Display - -usb:v0B05p172A* - ID_PRODUCT_FROM_DATABASE=ASUS 802.11n Network Adapter - -usb:v0B05p172B* - ID_PRODUCT_FROM_DATABASE=802.11n Network Adapter - -usb:v0B05p1731* - ID_PRODUCT_FROM_DATABASE=802.11n Network Adapter - -usb:v0B05p1732* - ID_PRODUCT_FROM_DATABASE=802.11n Network Adapter - -usb:v0B05p1734* - ID_PRODUCT_FROM_DATABASE=ASUS AF-200 - -usb:v0B05p173C* - ID_PRODUCT_FROM_DATABASE=BT-183 Bluetooth 2.0 - -usb:v0B05p173F* - ID_PRODUCT_FROM_DATABASE=My Cinema U3100 Mini - -usb:v0B05p1742* - ID_PRODUCT_FROM_DATABASE=802.11n Network Adapter - -usb:v0B05p1743* - ID_PRODUCT_FROM_DATABASE=Xonar U1 Audio Station - -usb:v0B05p1751* - ID_PRODUCT_FROM_DATABASE=BT-253 Bluetooth Adapter - -usb:v0B05p175B* - ID_PRODUCT_FROM_DATABASE=Laptop OLED Display - -usb:v0B05p1760* - ID_PRODUCT_FROM_DATABASE=802.11n Network Adapter - -usb:v0B05p1761* - ID_PRODUCT_FROM_DATABASE=USB-N11 802.11n Network Adapter [Ralink RT2870] - -usb:v0B05p1774* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem (QDL mode) - -usb:v0B05p1776* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem - -usb:v0B05p1779* - ID_PRODUCT_FROM_DATABASE=My Cinema U3100 Mini Plus [AF9035A] - -usb:v0B05p1784* - ID_PRODUCT_FROM_DATABASE=USB-N13 802.11n Network Adapter (rev. A1) [Ralink RT3072] - -usb:v0B05p1786* - ID_PRODUCT_FROM_DATABASE=USB-N10 802.11n Network Adapter [Realtek RTL8188SU] - -usb:v0B05p1791* - ID_PRODUCT_FROM_DATABASE=WL-167G v3 802.11n Adapter [Realtek RTL8188SU] - -usb:v0B05p179D* - ID_PRODUCT_FROM_DATABASE=USB-N53 802.11abgn Network Adapter [Ralink RT3572] - -usb:v0B05p179E* - ID_PRODUCT_FROM_DATABASE=Eee Note EA800 (network mode) - -usb:v0B05p179F* - ID_PRODUCT_FROM_DATABASE=Eee Note EA800 (tablet mode) - -usb:v0B05p17A1* - ID_PRODUCT_FROM_DATABASE=Eee Note EA800 (mass storage mode) - -usb:v0B05p17AB* - ID_PRODUCT_FROM_DATABASE=USB-N13 802.11n Network Adapter (rev. B1) [Realtek RTL8192CU] - -usb:v0B05p4C80* - ID_PRODUCT_FROM_DATABASE=Transformer Pad TF300TG - -usb:v0B05p4C90* - ID_PRODUCT_FROM_DATABASE=Transformer Pad Infinity TF700 - -usb:v0B05p4C91* - ID_PRODUCT_FROM_DATABASE=Transformer Pad Infinity TF700 (Debug mode) - -usb:v0B05p4D00* - ID_PRODUCT_FROM_DATABASE=Transformer Prime TF201 - -usb:v0B05p4D01* - ID_PRODUCT_FROM_DATABASE=Transformer Prime TF201 (debug mode) - -usb:v0B05p4DAF* - ID_PRODUCT_FROM_DATABASE=Transformer Pad Infinity TF700 (Fastboot) - -usb:v0B05p6101* - ID_PRODUCT_FROM_DATABASE=Cable Modem - -usb:v0B05p620A* - ID_PRODUCT_FROM_DATABASE=Remote NDIS Device - -usb:v0B05pB700* - ID_PRODUCT_FROM_DATABASE=Broadcom Bluetooth 2.1 - -usb:v0B0B* - ID_VENDOR_FROM_DATABASE=Datamax-O'Neil - -usb:v0B0Bp106E* - ID_PRODUCT_FROM_DATABASE=Datamax E-4304 - -usb:v0B0C* - ID_VENDOR_FROM_DATABASE=Todos AB - -usb:v0B0Cp0009* - ID_PRODUCT_FROM_DATABASE=Todos Argos Mini II Smart Card Reader - -usb:v0B0Cp001E* - ID_PRODUCT_FROM_DATABASE=e.dentifier2 (ABN AMRO electronic banking card reader NL) - -usb:v0B0Cp002E* - ID_PRODUCT_FROM_DATABASE=C200 smartcard controller (Nordea card reader) - -usb:v0B0Cp003F* - ID_PRODUCT_FROM_DATABASE=Todos C400 smartcard controller (Handelsbanken card reader) - -usb:v0B0Cp0050* - ID_PRODUCT_FROM_DATABASE=Argos Mini II Smart Card Reader (CCID) - -usb:v0B0D* - ID_VENDOR_FROM_DATABASE=ProjectLab - -usb:v0B0Dp0000* - ID_PRODUCT_FROM_DATABASE=CenturyCD - -usb:v0B0E* - ID_VENDOR_FROM_DATABASE=GN Netcom - -usb:v0B0Ep1022* - ID_PRODUCT_FROM_DATABASE=Jabra PRO 9450, Type 9400BS (DECT Headset) - -usb:v0B0Ep620C* - ID_PRODUCT_FROM_DATABASE=Jabra BT620s - -usb:v0B0F* - ID_VENDOR_FROM_DATABASE=AVID Technology - -usb:v0B10* - ID_VENDOR_FROM_DATABASE=Pcally - -usb:v0B11* - ID_VENDOR_FROM_DATABASE=I Tech Solutions Co., Ltd - -usb:v0B1E* - ID_VENDOR_FROM_DATABASE=Electronic Warfare Assoc., Inc. (EWA) - -usb:v0B1Ep8007* - ID_PRODUCT_FROM_DATABASE=Blackhawk USB560-BP JTAG Emulator - -usb:v0B1F* - ID_VENDOR_FROM_DATABASE=Insyde Software Corp. - -usb:v0B20* - ID_VENDOR_FROM_DATABASE=TransDimension, Inc. - -usb:v0B21* - ID_VENDOR_FROM_DATABASE=Yokogawa Electric Corp. - -usb:v0B22* - ID_VENDOR_FROM_DATABASE=Japan System Development Co., Ltd - -usb:v0B23* - ID_VENDOR_FROM_DATABASE=Pan-Asia Electronics Co., Ltd - -usb:v0B24* - ID_VENDOR_FROM_DATABASE=Link Evolution Corp. - -usb:v0B27* - ID_VENDOR_FROM_DATABASE=Ritek Corp. - -usb:v0B28* - ID_VENDOR_FROM_DATABASE=Kenwood Corp. - -usb:v0B2C* - ID_VENDOR_FROM_DATABASE=Village Center, Inc. - -usb:v0B30* - ID_VENDOR_FROM_DATABASE=PNY Technologies, Inc. - -usb:v0B30p0006* - ID_PRODUCT_FROM_DATABASE=SM Media-Shuttle Card Reader - -usb:v0B33* - ID_VENDOR_FROM_DATABASE=Contour Design, Inc. - -usb:v0B33p0020* - ID_PRODUCT_FROM_DATABASE=ShuttleXpress - -usb:v0B37* - ID_VENDOR_FROM_DATABASE=Hitachi ULSI Systems Co., Ltd - -usb:v0B38* - ID_VENDOR_FROM_DATABASE=Gear Head - -usb:v0B38p0003* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v0B38p0010* - ID_PRODUCT_FROM_DATABASE=107-Key Keyboard - -usb:v0B39* - ID_VENDOR_FROM_DATABASE=Omnidirectional Control Technology, Inc. - -usb:v0B39p0001* - ID_PRODUCT_FROM_DATABASE=Composite USB PS2 Converter - -usb:v0B39p0109* - ID_PRODUCT_FROM_DATABASE=USB TO Ethernet - -usb:v0B39p0421* - ID_PRODUCT_FROM_DATABASE=Serial - -usb:v0B39p0801* - ID_PRODUCT_FROM_DATABASE=USB-Parallel Bridge - -usb:v0B39p0901* - ID_PRODUCT_FROM_DATABASE=OCT To Fast Ethernet Converter - -usb:v0B39p0C03* - ID_PRODUCT_FROM_DATABASE=LAN DOCK Serial Converter - -usb:v0B3A* - ID_VENDOR_FROM_DATABASE=IPaxess - -usb:v0B3B* - ID_VENDOR_FROM_DATABASE=Tekram Technology Co., Ltd - -usb:v0B3Bp0163* - ID_PRODUCT_FROM_DATABASE=TL-WN320G 1.0 WLAN Adapter - -usb:v0B3Bp1601* - ID_PRODUCT_FROM_DATABASE=Allnet 0193 802.11b Adapter - -usb:v0B3Bp1602* - ID_PRODUCT_FROM_DATABASE=ZyXEL ZyAIR B200 802.11b Adapter - -usb:v0B3Bp1612* - ID_PRODUCT_FROM_DATABASE=AIR.Mate 2@net 802.11b Adapter - -usb:v0B3Bp1613* - ID_PRODUCT_FROM_DATABASE=802.11b Wireless LAN Adapter - -usb:v0B3Bp1620* - ID_PRODUCT_FROM_DATABASE=Allnet Wireless Network Adapter [Envara WiND512] - -usb:v0B3Bp1630* - ID_PRODUCT_FROM_DATABASE=QuickWLAN 802.11bg - -usb:v0B3Bp5630* - ID_PRODUCT_FROM_DATABASE=802.11bg - -usb:v0B3Bp6630* - ID_PRODUCT_FROM_DATABASE=ZD1211 - -usb:v0B3C* - ID_VENDOR_FROM_DATABASE=Olivetti Techcenter - -usb:v0B3CpA010* - ID_PRODUCT_FROM_DATABASE=Simple_Way Printer/Scanner/Copier - -usb:v0B3CpC000* - ID_PRODUCT_FROM_DATABASE=Olicard 100 - -usb:v0B3CpC700* - ID_PRODUCT_FROM_DATABASE=Olicard 100 (Mass Storage mode) - -usb:v0B3E* - ID_VENDOR_FROM_DATABASE=Kikusui Electronics Corp. - -usb:v0B41* - ID_VENDOR_FROM_DATABASE=Hal Corp. - -usb:v0B41p0011* - ID_PRODUCT_FROM_DATABASE=Crossam2+USB IR commander - -usb:v0B43* - ID_VENDOR_FROM_DATABASE=Play.com, Inc. - -usb:v0B43p0003* - ID_PRODUCT_FROM_DATABASE=PS2 Controller Converter - -usb:v0B43p0005* - ID_PRODUCT_FROM_DATABASE=GameCube Adaptor - -usb:v0B47* - ID_VENDOR_FROM_DATABASE=Sportbug.com, Inc. - -usb:v0B48* - ID_VENDOR_FROM_DATABASE=TechnoTrend AG - -usb:v0B48p1003* - ID_PRODUCT_FROM_DATABASE=Technotrend/Hauppauge USB-Nova - -usb:v0B48p1004* - ID_PRODUCT_FROM_DATABASE=TT-PCline - -usb:v0B48p1005* - ID_PRODUCT_FROM_DATABASE=Technotrend/Hauppauge USB-Nova - -usb:v0B48p1006* - ID_PRODUCT_FROM_DATABASE=Technotrend/Hauppauge DEC3000-s - -usb:v0B48p1007* - ID_PRODUCT_FROM_DATABASE=TT-micro plus Device - -usb:v0B48p1008* - ID_PRODUCT_FROM_DATABASE=Technotrend/Hauppauge DEC2000-t - -usb:v0B48p1009* - ID_PRODUCT_FROM_DATABASE=Technotrend/Hauppauge DEC2540-t - -usb:v0B48p3001* - ID_PRODUCT_FROM_DATABASE=DVB-S receiver - -usb:v0B48p3002* - ID_PRODUCT_FROM_DATABASE=DVB-C receiver - -usb:v0B48p3003* - ID_PRODUCT_FROM_DATABASE=DVB-T receiver - -usb:v0B48p3004* - ID_PRODUCT_FROM_DATABASE=TT TV-Stick - -usb:v0B48p3005* - ID_PRODUCT_FROM_DATABASE=TT TV-Stick (8kB EEPROM) - -usb:v0B48p3006* - ID_PRODUCT_FROM_DATABASE=TT-connect S-2400 DVB-S receiver - -usb:v0B48p3007* - ID_PRODUCT_FROM_DATABASE=TT-connect S2-3600 - -usb:v0B48p3008* - ID_PRODUCT_FROM_DATABASE=TT-connect - -usb:v0B48p3009* - ID_PRODUCT_FROM_DATABASE=TT-connect S-2400 DVB-S receiver (8kB EEPROM) - -usb:v0B48p300A* - ID_PRODUCT_FROM_DATABASE=TT-connect S2-3650 CI - -usb:v0B48p300B* - ID_PRODUCT_FROM_DATABASE=TT-connect C-3650 CI - -usb:v0B48p300C* - ID_PRODUCT_FROM_DATABASE=TT-connect T-3650 CI - -usb:v0B48p300D* - ID_PRODUCT_FROM_DATABASE=TT-connect CT-3650 CI - -usb:v0B48p300E* - ID_PRODUCT_FROM_DATABASE=TT-connect C-2400 - -usb:v0B49* - ID_VENDOR_FROM_DATABASE=ASCII Corp. - -usb:v0B49p064F* - ID_PRODUCT_FROM_DATABASE=Trance Vibrator - -usb:v0B4B* - ID_VENDOR_FROM_DATABASE=Pine Corp. Ltd. - -usb:v0B4Bp0100* - ID_PRODUCT_FROM_DATABASE=D'music MP3 Player - -usb:v0B4D* - ID_VENDOR_FROM_DATABASE=Graphtec America, Inc. - -usb:v0B4Dp110A* - ID_PRODUCT_FROM_DATABASE=Graphtec CC200-20 - -usb:v0B4E* - ID_VENDOR_FROM_DATABASE=Musical Electronics, Ltd - -usb:v0B4Ep6500* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v0B4Ep8028* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v0B4Ep8920* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v0B50* - ID_VENDOR_FROM_DATABASE=Dumpries Co., Ltd - -usb:v0B51* - ID_VENDOR_FROM_DATABASE=Comfort Keyboard Co. - -usb:v0B51p0020* - ID_PRODUCT_FROM_DATABASE=Comfort Keyboard - -usb:v0B52* - ID_VENDOR_FROM_DATABASE=Colorado MicroDisplay, Inc. - -usb:v0B54* - ID_VENDOR_FROM_DATABASE=Sinbon Electronics Co., Ltd - -usb:v0B56* - ID_VENDOR_FROM_DATABASE=TYI Systems, Ltd - -usb:v0B57* - ID_VENDOR_FROM_DATABASE=Beijing HanwangTechnology Co., Ltd - -usb:v0B59* - ID_VENDOR_FROM_DATABASE=Lake Communications, Ltd - -usb:v0B5A* - ID_VENDOR_FROM_DATABASE=Corel Corp. - -usb:v0B5F* - ID_VENDOR_FROM_DATABASE=Green Electronics Co., Ltd - -usb:v0B60* - ID_VENDOR_FROM_DATABASE=Nsine, Ltd - -usb:v0B61* - ID_VENDOR_FROM_DATABASE=NEC Viewtechnology, Ltd - -usb:v0B62* - ID_VENDOR_FROM_DATABASE=Orange Micro, Inc. - -usb:v0B62p000B* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0B62p0059* - ID_PRODUCT_FROM_DATABASE=iBOT2 Webcam - -usb:v0B63* - ID_VENDOR_FROM_DATABASE=ADLink Technology, Inc. - -usb:v0B64* - ID_VENDOR_FROM_DATABASE=Wonderful Wire Cable Co., Ltd - -usb:v0B65* - ID_VENDOR_FROM_DATABASE=Expert Magnetics Corp. - -usb:v0B69* - ID_VENDOR_FROM_DATABASE=CacheVision - -usb:v0B6A* - ID_VENDOR_FROM_DATABASE=Maxim Integrated Products - -usb:v0B6ApA132* - ID_PRODUCT_FROM_DATABASE=WUP-005 [Nintendo Wii U Pro Controller] - -usb:v0B6F* - ID_VENDOR_FROM_DATABASE=Nagano Japan Radio Co., Ltd - -usb:v0B70* - ID_VENDOR_FROM_DATABASE=PortalPlayer, Inc. - -usb:v0B70p00BA* - ID_PRODUCT_FROM_DATABASE=iRiver H10 20GB - -usb:v0B71* - ID_VENDOR_FROM_DATABASE=SHIN-EI Sangyo Co., Ltd - -usb:v0B72* - ID_VENDOR_FROM_DATABASE=Embedded Wireless Technology Co., Ltd - -usb:v0B73* - ID_VENDOR_FROM_DATABASE=Computone Corp. - -usb:v0B75* - ID_VENDOR_FROM_DATABASE=Roland DG Corp. - -usb:v0B79* - ID_VENDOR_FROM_DATABASE=Sunrise Telecom, Inc. - -usb:v0B7A* - ID_VENDOR_FROM_DATABASE=Zeevo, Inc. - -usb:v0B7Ap07D0* - ID_PRODUCT_FROM_DATABASE=Bluetooth Dongle - -usb:v0B7B* - ID_VENDOR_FROM_DATABASE=Taiko Denki Co., Ltd - -usb:v0B7C* - ID_VENDOR_FROM_DATABASE=ITRAN Communications, Ltd - -usb:v0B7D* - ID_VENDOR_FROM_DATABASE=Astrodesign, Inc. - -usb:v0B81* - ID_VENDOR_FROM_DATABASE=id3 Semiconductors - -usb:v0B81p0001* - ID_PRODUCT_FROM_DATABASE=Biothentic II smartcard reader with fingerprint sensor - -usb:v0B81p0002* - ID_PRODUCT_FROM_DATABASE=DFU-Enabled Devices (DFU) - -usb:v0B81p0012* - ID_PRODUCT_FROM_DATABASE=BioPAD biometric module (DFU + CDC) - -usb:v0B81p0102* - ID_PRODUCT_FROM_DATABASE=Certis V1 fingerprint reader - -usb:v0B81p0103* - ID_PRODUCT_FROM_DATABASE=Certis V2 fingerprint reader - -usb:v0B81p0200* - ID_PRODUCT_FROM_DATABASE=CL1356T / CL1356T5 / CL1356A smartcard readers (CCID) - -usb:v0B81p0201* - ID_PRODUCT_FROM_DATABASE=CL1356T / CL1356T5 / CL1356A smartcard readers (DFU + CCID) - -usb:v0B81p0220* - ID_PRODUCT_FROM_DATABASE=CL1356A FFPJP smartcard reader (CCID + HID) - -usb:v0B81p0221* - ID_PRODUCT_FROM_DATABASE=CL1356A smartcard reader (DFU + CCID + HID) - -usb:v0B84* - ID_VENDOR_FROM_DATABASE=Rextron Technology, Inc. - -usb:v0B85* - ID_VENDOR_FROM_DATABASE=Elkat Electronics, Sdn., Bhd. - -usb:v0B86* - ID_VENDOR_FROM_DATABASE=Exputer Systems, Inc. - -usb:v0B86p5100* - ID_PRODUCT_FROM_DATABASE=XMC5100 Zippy Drive - -usb:v0B86p5110* - ID_PRODUCT_FROM_DATABASE=XMC5110 Flash Drive - -usb:v0B86p5200* - ID_PRODUCT_FROM_DATABASE=XMC5200 Zippy Drive - -usb:v0B86p5201* - ID_PRODUCT_FROM_DATABASE=XMC5200 Zippy Drive - -usb:v0B86p5202* - ID_PRODUCT_FROM_DATABASE=XMC5200 Zippy Drive - -usb:v0B86p5280* - ID_PRODUCT_FROM_DATABASE=XMC5280 Storage Drive - -usb:v0B86pFFF0* - ID_PRODUCT_FROM_DATABASE=ISP5200 Debugger - -usb:v0B87* - ID_VENDOR_FROM_DATABASE=Plus-One I & T, Inc. - -usb:v0B88* - ID_VENDOR_FROM_DATABASE=Sigma Koki Co., Ltd, Technology Center - -usb:v0B89* - ID_VENDOR_FROM_DATABASE=Advanced Digital Broadcast, Ltd - -usb:v0B8C* - ID_VENDOR_FROM_DATABASE=SMART Technologies Inc. - -usb:v0B8Cp0001* - ID_PRODUCT_FROM_DATABASE=Interactive Whiteboard Controller (SB6) (HID) - -usb:v0B8Cp00C3* - ID_PRODUCT_FROM_DATABASE=Sympodium ID350 - -usb:v0B95* - ID_VENDOR_FROM_DATABASE=ASIX Electronics Corp. - -usb:v0B95p1720* - ID_PRODUCT_FROM_DATABASE=10/100 Ethernet - -usb:v0B95p1780* - ID_PRODUCT_FROM_DATABASE=AX88178 - -usb:v0B95p7720* - ID_PRODUCT_FROM_DATABASE=AX88772 - -usb:v0B95p772A* - ID_PRODUCT_FROM_DATABASE=AX88772A Fast Ethernet - -usb:v0B95p772B* - ID_PRODUCT_FROM_DATABASE=AX88772B - -usb:v0B95p7E2B* - ID_PRODUCT_FROM_DATABASE=AX88772B - -usb:v0B96* - ID_VENDOR_FROM_DATABASE=Sewon Telecom - -usb:v0B97* - ID_VENDOR_FROM_DATABASE=O2 Micro, Inc. - -usb:v0B97p7732* - ID_PRODUCT_FROM_DATABASE=Smart Card Reader - -usb:v0B97p7761* - ID_PRODUCT_FROM_DATABASE=Oz776 1.1 Hub - -usb:v0B97p7762* - ID_PRODUCT_FROM_DATABASE=Oz776 SmartCard Reader - -usb:v0B97p7772* - ID_PRODUCT_FROM_DATABASE=OZ776 CCID Smartcard Reader - -usb:v0B98* - ID_VENDOR_FROM_DATABASE=Playmates Toys, Inc. - -usb:v0B99* - ID_VENDOR_FROM_DATABASE=Audio International, Inc. - -usb:v0B9B* - ID_VENDOR_FROM_DATABASE=Dipl.-Ing. Stefan Kunde - -usb:v0B9Bp4012* - ID_PRODUCT_FROM_DATABASE=Reflex RC-controller Interface - -usb:v0B9D* - ID_VENDOR_FROM_DATABASE=Softprotec Co. - -usb:v0B9F* - ID_VENDOR_FROM_DATABASE=Chippo Technologies - -usb:v0BAF* - ID_VENDOR_FROM_DATABASE=U.S. Robotics - -usb:v0BAFp00E5* - ID_PRODUCT_FROM_DATABASE=USR6000 - -usb:v0BAFp00EB* - ID_PRODUCT_FROM_DATABASE=USR1120 802.11b Adapter - -usb:v0BAFp00EC* - ID_PRODUCT_FROM_DATABASE=56K Faxmodem - -usb:v0BAFp00F1* - ID_PRODUCT_FROM_DATABASE=SureConnect ADSL ATM Adapter - -usb:v0BAFp00F2* - ID_PRODUCT_FROM_DATABASE=SureConnect ADSL Loader - -usb:v0BAFp00F5* - ID_PRODUCT_FROM_DATABASE=SureConnect ADSL ATM Adapter - -usb:v0BAFp00F6* - ID_PRODUCT_FROM_DATABASE=SureConnect ADSL Loader - -usb:v0BAFp00F7* - ID_PRODUCT_FROM_DATABASE=SureConnect ADSL ATM Adapter - -usb:v0BAFp00F8* - ID_PRODUCT_FROM_DATABASE=SureConnect ADSL Loader - -usb:v0BAFp00F9* - ID_PRODUCT_FROM_DATABASE=SureConnect ADSL ATM Adapter - -usb:v0BAFp00FA* - ID_PRODUCT_FROM_DATABASE=SureConnect ADSL Loader - -usb:v0BAFp00FB* - ID_PRODUCT_FROM_DATABASE=SureConnect ADSL Ethernet/USB Router - -usb:v0BAFp0111* - ID_PRODUCT_FROM_DATABASE=USR5420 802.11g Adapter [Broadcom 4320 USB] - -usb:v0BAFp0118* - ID_PRODUCT_FROM_DATABASE=U5 802.11g Adapter - -usb:v0BAFp011B* - ID_PRODUCT_FROM_DATABASE=Wireless MAXg Adapter [Broadcom 4320] - -usb:v0BAFp0121* - ID_PRODUCT_FROM_DATABASE=USR5423 802.11bg Wireless Adapter [ZyDAS ZD1211B] - -usb:v0BAFp6112* - ID_PRODUCT_FROM_DATABASE=FaxModem Model 5633 - -usb:v0BB0* - ID_VENDOR_FROM_DATABASE=Concord Camera Corp. - -usb:v0BB0p0100* - ID_PRODUCT_FROM_DATABASE=Sound Vision Stream - -usb:v0BB0p5007* - ID_PRODUCT_FROM_DATABASE=3340z/Rollei DC3100 - -usb:v0BB1* - ID_VENDOR_FROM_DATABASE=Infinilink Corp. - -usb:v0BB2* - ID_VENDOR_FROM_DATABASE=Ambit Microsystems Corp. - -usb:v0BB2p0302* - ID_PRODUCT_FROM_DATABASE=U10H010 802.11b Wireless Adapter [Intersil PRISM 3] - -usb:v0BB2p6098* - ID_PRODUCT_FROM_DATABASE=USB Cable Modem - -usb:v0BB3* - ID_VENDOR_FROM_DATABASE=Ofuji Technology - -usb:v0BB4* - ID_VENDOR_FROM_DATABASE=HTC (High Tech Computer Corp.) - -usb:v0BB4p00CE* - ID_PRODUCT_FROM_DATABASE=mmO2 XDA GSM/GPRS Pocket PC - -usb:v0BB4p00CF* - ID_PRODUCT_FROM_DATABASE=SPV C500 Smart Phone - -usb:v0BB4p0A01* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A02* - ID_PRODUCT_FROM_DATABASE=Himalaya GSM/GPRS Pocket PC - -usb:v0BB4p0A03* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A04* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A05* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A06* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A07* - ID_PRODUCT_FROM_DATABASE=Magician PocketPC SmartPhone / O2 XDA - -usb:v0BB4p0A08* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A09* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A0A* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A0B* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A0C* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A0D* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A0E* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A0F* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A10* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A11* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A12* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A13* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A14* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A15* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A16* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A17* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A18* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A19* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A1A* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A1B* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A1C* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A1D* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A1E* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A1F* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A20* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A21* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A22* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A23* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A24* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A25* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A26* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A27* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A28* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A29* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A2A* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A2B* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A2C* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A2D* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A2E* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A2F* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A30* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A31* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A32* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A33* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A34* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A35* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A36* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A37* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A38* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A39* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A3A* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A3B* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A3C* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A3D* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A3E* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A3F* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A40* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A41* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A42* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A43* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A44* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A45* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A46* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A47* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A48* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A49* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A4A* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A4B* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A4C* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A4D* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A4E* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A4F* - ID_PRODUCT_FROM_DATABASE=PocketPC Sync - -usb:v0BB4p0A50* - ID_PRODUCT_FROM_DATABASE=HTC SmartPhone Sync - -usb:v0BB4p0A51* - ID_PRODUCT_FROM_DATABASE=SPV C400 / T-Mobile SDA GSM/GPRS Pocket PC - -usb:v0BB4p0A52* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A53* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A54* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A55* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A56* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A57* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A58* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A59* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A5A* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A5B* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A5C* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A5D* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A5E* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A5F* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A60* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A61* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A62* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A63* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A64* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A65* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A66* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A67* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A68* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A69* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A6A* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A6B* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A6C* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A6D* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A6E* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A6F* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A70* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A71* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A72* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A73* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A74* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A75* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A76* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A77* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A78* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A79* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A7A* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A7B* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A7C* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A7D* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A7E* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A7F* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A80* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A81* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A82* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A83* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A84* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A85* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A86* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A87* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A88* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A89* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A8A* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A8B* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A8C* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A8D* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A8E* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A8F* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A90* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A91* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A92* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A93* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A94* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A95* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A96* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A97* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A98* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A99* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A9A* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A9B* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A9C* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A9D* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A9E* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0A9F* - ID_PRODUCT_FROM_DATABASE=SmartPhone Sync - -usb:v0BB4p0B03* - ID_PRODUCT_FROM_DATABASE=Ozone Mobile Broadband - -usb:v0BB4p0B04* - ID_PRODUCT_FROM_DATABASE=Hermes / TyTN / T-Mobile MDA Vario II / O2 Xda Trion - -usb:v0BB4p0B05* - ID_PRODUCT_FROM_DATABASE=P3600 - -usb:v0BB4p0B06* - ID_PRODUCT_FROM_DATABASE=Athena / Advantage x7500 / Dopod U1000 / T-Mobile AMEO - -usb:v0BB4p0B0C* - ID_PRODUCT_FROM_DATABASE=Elf / Touch / P3450 / T-Mobile MDA Touch / O2 Xda Nova / Dopod S1 - -usb:v0BB4p0B1F* - ID_PRODUCT_FROM_DATABASE=Sony Ericsson XPERIA X1 - -usb:v0BB4p0B2F* - ID_PRODUCT_FROM_DATABASE=Rhodium - -usb:v0BB4p0B51* - ID_PRODUCT_FROM_DATABASE=Qtek 8310 mobile phone [Tornado Noble] - -usb:v0BB4p0BCE* - ID_PRODUCT_FROM_DATABASE=Vario MDA - -usb:v0BB4p0C01* - ID_PRODUCT_FROM_DATABASE=Dream / ADP1 / G1 / Magic / Tattoo - -usb:v0BB4p0C02* - ID_PRODUCT_FROM_DATABASE=Dream / ADP1 / G1 / Magic / Tattoo (Debug) - -usb:v0BB4p0C13* - ID_PRODUCT_FROM_DATABASE=Diamond - -usb:v0BB4p0C1F* - ID_PRODUCT_FROM_DATABASE=Sony Ericsson XPERIA X1 - -usb:v0BB4p0C5F* - ID_PRODUCT_FROM_DATABASE=Snap - -usb:v0BB4p0C86* - ID_PRODUCT_FROM_DATABASE=Sensation - -usb:v0BB4p0C87* - ID_PRODUCT_FROM_DATABASE=Desire (debug) - -usb:v0BB4p0C8D* - ID_PRODUCT_FROM_DATABASE=EVO 4G (debug) - -usb:v0BB4p0C91* - ID_PRODUCT_FROM_DATABASE=Vision - -usb:v0BB4p0C94* - ID_PRODUCT_FROM_DATABASE=Vision - -usb:v0BB4p0C97* - ID_PRODUCT_FROM_DATABASE=Legend - -usb:v0BB4p0C99* - ID_PRODUCT_FROM_DATABASE=Desire (debug) - -usb:v0BB4p0C9E* - ID_PRODUCT_FROM_DATABASE=Incredible - -usb:v0BB4p0CA2* - ID_PRODUCT_FROM_DATABASE=Desire HD (debug mode) - -usb:v0BB4p0CA5* - ID_PRODUCT_FROM_DATABASE=Android Phone [Evo Shift 4G] - -usb:v0BB4p0FF8* - ID_PRODUCT_FROM_DATABASE=Desire HD (Tethering Mode) - -usb:v0BB4p0FF9* - ID_PRODUCT_FROM_DATABASE=Desire / Desire HD / Hero / Thunderbolt (Charge Mode) - -usb:v0BB4p0FFE* - ID_PRODUCT_FROM_DATABASE=Desire HD (modem mode) - -usb:v0BB4p0FFF* - ID_PRODUCT_FROM_DATABASE=Android Fastboot Bootloader - -usb:v0BB5* - ID_VENDOR_FROM_DATABASE=Murata Manufacturing Co., Ltd - -usb:v0BB6* - ID_VENDOR_FROM_DATABASE=Network Alchemy - -usb:v0BB7* - ID_VENDOR_FROM_DATABASE=Joytech Computer Co., Ltd - -usb:v0BB8* - ID_VENDOR_FROM_DATABASE=Hitachi Semiconductor and Devices Sales Co., Ltd - -usb:v0BB9* - ID_VENDOR_FROM_DATABASE=Eiger M&C Co., Ltd - -usb:v0BBA* - ID_VENDOR_FROM_DATABASE=ZAccess Systems - -usb:v0BBB* - ID_VENDOR_FROM_DATABASE=General Meters Corp. - -usb:v0BBC* - ID_VENDOR_FROM_DATABASE=Assistive Technology, Inc. - -usb:v0BBD* - ID_VENDOR_FROM_DATABASE=System Connection, Inc. - -usb:v0BC0* - ID_VENDOR_FROM_DATABASE=Knilink Technology, Inc. - -usb:v0BC1* - ID_VENDOR_FROM_DATABASE=Fuw Yng Electronics Co., Ltd - -usb:v0BC2* - ID_VENDOR_FROM_DATABASE=Seagate RSS LLC - -usb:v0BC2p0502* - ID_PRODUCT_FROM_DATABASE=ST3300601CB-RK 300 GB External Hard Drive - -usb:v0BC2p0503* - ID_PRODUCT_FROM_DATABASE=ST3250824A [Barracuda 7200.9] - -usb:v0BC2p2000* - ID_PRODUCT_FROM_DATABASE=Storage Adapter V3 (TPP) - -usb:v0BC2p2200* - ID_PRODUCT_FROM_DATABASE=FreeAgent Go FW - -usb:v0BC2p2300* - ID_PRODUCT_FROM_DATABASE=Expansion Portable - -usb:v0BC2p2320* - ID_PRODUCT_FROM_DATABASE=USB 3.0 bridge [Portable Expansion Drive] - -usb:v0BC2p3320* - ID_PRODUCT_FROM_DATABASE=SRD00F2 [Expansion Desktop Drive] - -usb:v0BC2p3332* - ID_PRODUCT_FROM_DATABASE=Expansion - -usb:v0BC2p5021* - ID_PRODUCT_FROM_DATABASE=FreeAgent GoFlex USB 2.0 - -usb:v0BC2p5031* - ID_PRODUCT_FROM_DATABASE=FreeAgent GoFlex USB 3.0 - -usb:v0BC2p50A1* - ID_PRODUCT_FROM_DATABASE=FreeAgent GoFlex Desk - -usb:v0BC2p50A5* - ID_PRODUCT_FROM_DATABASE=FreeAgent GoFlex Desk USB 3.0 - -usb:v0BC2p5121* - ID_PRODUCT_FROM_DATABASE=FreeAgent GoFlex - -usb:v0BC2p5161* - ID_PRODUCT_FROM_DATABASE=FreeAgent GoFlex dock - -usb:v0BC2pA003* - ID_PRODUCT_FROM_DATABASE=Backup Plus - -usb:v0BC3* - ID_VENDOR_FROM_DATABASE=IPWireless, Inc. - -usb:v0BC3p0001* - ID_PRODUCT_FROM_DATABASE=UMTS-TDD (TD-CDMA) modem - -usb:v0BC4* - ID_VENDOR_FROM_DATABASE=Microcube Corp. - -usb:v0BC5* - ID_VENDOR_FROM_DATABASE=JCN Co., Ltd - -usb:v0BC6* - ID_VENDOR_FROM_DATABASE=ExWAY, Inc. - -usb:v0BC7* - ID_VENDOR_FROM_DATABASE=X10 Wireless Technology, Inc. - -usb:v0BC7p0001* - ID_PRODUCT_FROM_DATABASE=ActiveHome (ACPI-compliant) - -usb:v0BC7p0002* - ID_PRODUCT_FROM_DATABASE=Firecracker Interface (ACPI-compliant) - -usb:v0BC7p0003* - ID_PRODUCT_FROM_DATABASE=VGA Video Sender (ACPI-compliant) - -usb:v0BC7p0004* - ID_PRODUCT_FROM_DATABASE=X10 Receiver - -usb:v0BC7p0005* - ID_PRODUCT_FROM_DATABASE=Wireless Transceiver (ACPI-compliant) - -usb:v0BC7p0006* - ID_PRODUCT_FROM_DATABASE=Wireless Transceiver (ACPI-compliant) - -usb:v0BC7p0007* - ID_PRODUCT_FROM_DATABASE=Wireless Transceiver (ACPI-compliant) - -usb:v0BC7p0008* - ID_PRODUCT_FROM_DATABASE=Wireless Transceiver (ACPI-compliant) - -usb:v0BC7p0009* - ID_PRODUCT_FROM_DATABASE=Wireless Transceiver (ACPI-compliant) - -usb:v0BC7p000A* - ID_PRODUCT_FROM_DATABASE=Wireless Transceiver (ACPI-compliant) - -usb:v0BC7p000B* - ID_PRODUCT_FROM_DATABASE=Transceiver (ACPI-compliant) - -usb:v0BC7p000C* - ID_PRODUCT_FROM_DATABASE=Transceiver (ACPI-compliant) - -usb:v0BC7p000D* - ID_PRODUCT_FROM_DATABASE=Transceiver (ACPI-compliant) - -usb:v0BC7p000E* - ID_PRODUCT_FROM_DATABASE=Transceiver (ACPI-compliant) - -usb:v0BC7p000F* - ID_PRODUCT_FROM_DATABASE=Transceiver (ACPI-compliant) - -usb:v0BC8* - ID_VENDOR_FROM_DATABASE=Telmax Communications - -usb:v0BC9* - ID_VENDOR_FROM_DATABASE=ECI Telecom, Ltd - -usb:v0BCA* - ID_VENDOR_FROM_DATABASE=Startek Engineering, Inc. - -usb:v0BCB* - ID_VENDOR_FROM_DATABASE=Perfect Technic Enterprise Co., Ltd - -usb:v0BD7* - ID_VENDOR_FROM_DATABASE=Andrew Pargeter & Associates - -usb:v0BD7pA021* - ID_PRODUCT_FROM_DATABASE=Amptek DP4 multichannel signal analyzer - -usb:v0BDA* - ID_VENDOR_FROM_DATABASE=Realtek Semiconductor Corp. - -usb:v0BDAp0103* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Card Reader - -usb:v0BDAp0104* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0106* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0107* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0108* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0111* - ID_PRODUCT_FROM_DATABASE=RTS5111 Card Reader Controller - -usb:v0BDAp0113* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0115* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device (Multicard Reader) - -usb:v0BDAp0116* - ID_PRODUCT_FROM_DATABASE=RTS5116 Card Reader Controller - -usb:v0BDAp0117* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0118* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0119* - ID_PRODUCT_FROM_DATABASE=Storage Device (SD card reader) - -usb:v0BDAp0129* - ID_PRODUCT_FROM_DATABASE=RTS5129 Card Reader Controller - -usb:v0BDAp0138* - ID_PRODUCT_FROM_DATABASE=RTS5138 Card Reader Controller - -usb:v0BDAp0139* - ID_PRODUCT_FROM_DATABASE=RTS5139 Card Reader Controller - -usb:v0BDAp0151* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device (Multicard Reader) - -usb:v0BDAp0152* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0153* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0156* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0157* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0158* - ID_PRODUCT_FROM_DATABASE=USB 2.0 multicard reader - -usb:v0BDAp0159* - ID_PRODUCT_FROM_DATABASE=RTS5159 Card Reader Controller - -usb:v0BDAp0161* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0168* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0169* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0171* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0176* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0178* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0BDAp0184* - ID_PRODUCT_FROM_DATABASE=RTS5182 Card Reader - -usb:v0BDAp0186* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v0BDAp2831* - ID_PRODUCT_FROM_DATABASE=RTL2831U DVB-T - -usb:v0BDAp2832* - ID_PRODUCT_FROM_DATABASE=RTL2832U DVB-T - -usb:v0BDAp2838* - ID_PRODUCT_FROM_DATABASE=RTL2838 DVB-T - -usb:v0BDAp8150* - ID_PRODUCT_FROM_DATABASE=RTL8150 Fast Ethernet Adapter - -usb:v0BDAp8151* - ID_PRODUCT_FROM_DATABASE=RTL8151 Adapteon Business Mobile Networks BV - -usb:v0BDAp8171* - ID_PRODUCT_FROM_DATABASE=RTL8188SU 802.11n WLAN Adapter - -usb:v0BDAp8172* - ID_PRODUCT_FROM_DATABASE=RTL8191SU 802.11n WLAN Adapter - -usb:v0BDAp8174* - ID_PRODUCT_FROM_DATABASE=RTL8192SU 802.11n WLAN Adapter - -usb:v0BDAp8176* - ID_PRODUCT_FROM_DATABASE=RTL8188CUS 802.11n WLAN Adapter - -usb:v0BDAp8178* - ID_PRODUCT_FROM_DATABASE=RTL8192CU 802.11n WLAN Adapter - -usb:v0BDAp817F* - ID_PRODUCT_FROM_DATABASE=RTL8188RU 802.11n WLAN Adapter - -usb:v0BDAp8187* - ID_PRODUCT_FROM_DATABASE=RTL8187 Wireless Adapter - -usb:v0BDAp8189* - ID_PRODUCT_FROM_DATABASE=RTL8187B Wireless 802.11g 54Mbps Network Adapter - -usb:v0BDAp8192* - ID_PRODUCT_FROM_DATABASE=RTL8191SU 802.11n Wireless Adapter - -usb:v0BDAp8193* - ID_PRODUCT_FROM_DATABASE=RTL8192DU 802.11an WLAN Adapter - -usb:v0BDAp8197* - ID_PRODUCT_FROM_DATABASE=RTL8187B Wireless Adapter - -usb:v0BDAp8198* - ID_PRODUCT_FROM_DATABASE=RTL8187B Wireless Adapter - -usb:v0BDAp8199* - ID_PRODUCT_FROM_DATABASE=RTL8187SU 802.11g WLAN Adapter - -usb:v0BDB* - ID_VENDOR_FROM_DATABASE=Ericsson Business Mobile Networks BV - -usb:v0BDBp1000* - ID_PRODUCT_FROM_DATABASE=BV Bluetooth Device - -usb:v0BDBp1002* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device 1.2 - -usb:v0BDBp1049* - ID_PRODUCT_FROM_DATABASE=C3607w Mobile Broadband Module - -usb:v0BDBp1900* - ID_PRODUCT_FROM_DATABASE=F3507g Mobile Broadband Module - -usb:v0BDBp1902* - ID_PRODUCT_FROM_DATABASE=F3507g v2 Mobile Broadband Module - -usb:v0BDBp1904* - ID_PRODUCT_FROM_DATABASE=F3607gw Mobile Broadband Module - -usb:v0BDBp1905* - ID_PRODUCT_FROM_DATABASE=F3607gw v2 Mobile Broadband Module - -usb:v0BDBp1906* - ID_PRODUCT_FROM_DATABASE=F3607gw v3 Mobile Broadband Module - -usb:v0BDBp1909* - ID_PRODUCT_FROM_DATABASE=F3307 v2 Mobile Broadband Module - -usb:v0BDBp190A* - ID_PRODUCT_FROM_DATABASE=F3307 Mobile Broadband Module - -usb:v0BDBp190B* - ID_PRODUCT_FROM_DATABASE=C3607w v2 Mobile Broadband Module - -usb:v0BDC* - ID_VENDOR_FROM_DATABASE=Y Media Corp. - -usb:v0BDD* - ID_VENDOR_FROM_DATABASE=Orange PCS - -usb:v0BE2* - ID_VENDOR_FROM_DATABASE=Kanda Tsushin Kogyo Co., Ltd - -usb:v0BE3* - ID_VENDOR_FROM_DATABASE=TOYO Corp. - -usb:v0BE4* - ID_VENDOR_FROM_DATABASE=Elka International, Ltd - -usb:v0BE5* - ID_VENDOR_FROM_DATABASE=DOME imaging systems, Inc. - -usb:v0BE6* - ID_VENDOR_FROM_DATABASE=Dong Guan Humen Wonderful Wire Cable Factory - -usb:v0BED* - ID_VENDOR_FROM_DATABASE=MEI - -usb:v0BEDp1100* - ID_PRODUCT_FROM_DATABASE=CASHFLOW SC - -usb:v0BEDp1101* - ID_PRODUCT_FROM_DATABASE=Series 2000 Combo Acceptor - -usb:v0BEE* - ID_VENDOR_FROM_DATABASE=LTK Industries, Ltd - -usb:v0BEF* - ID_VENDOR_FROM_DATABASE=Way2Call Communications - -usb:v0BF0* - ID_VENDOR_FROM_DATABASE=Pace Micro Technology PLC - -usb:v0BF1* - ID_VENDOR_FROM_DATABASE=Intracom S.A. - -usb:v0BF1p0001* - ID_PRODUCT_FROM_DATABASE=netMod Driver Ver 2.4.17 (CAPI) - -usb:v0BF1p0002* - ID_PRODUCT_FROM_DATABASE=netMod Driver Ver 2.4 (CAPI) - -usb:v0BF1p0003* - ID_PRODUCT_FROM_DATABASE=netMod Driver Ver 2.4 (CAPI) - -usb:v0BF2* - ID_VENDOR_FROM_DATABASE=Konexx - -usb:v0BF6* - ID_VENDOR_FROM_DATABASE=Addonics Technologies, Inc. - -usb:v0BF6p0103* - ID_PRODUCT_FROM_DATABASE=Storage Device - -usb:v0BF6p1234* - ID_PRODUCT_FROM_DATABASE=Storage Device - -usb:v0BF6pA000* - ID_PRODUCT_FROM_DATABASE=Cable 205 (TPP) - -usb:v0BF6pA001* - ID_PRODUCT_FROM_DATABASE=Cable 205 - -usb:v0BF6pA002* - ID_PRODUCT_FROM_DATABASE=IDE Bridge - -usb:v0BF7* - ID_VENDOR_FROM_DATABASE=Sunny Giken, Inc. - -usb:v0BF8* - ID_VENDOR_FROM_DATABASE=Fujitsu Siemens Computers - -usb:v0BF8p1001* - ID_PRODUCT_FROM_DATABASE=Fujitsu Pocket Loox 600 PDA - -usb:v0BF8p1006* - ID_PRODUCT_FROM_DATABASE=SmartCard Reader 2A - -usb:v0BF8p1007* - ID_PRODUCT_FROM_DATABASE=Connect2Air E-5400 802.11g Wireless Adapter - -usb:v0BF8p1009* - ID_PRODUCT_FROM_DATABASE=Connect2Air E-5400 D1700 802.11g Wireless Adapter [Intersil ISL3887] - -usb:v0BF8p100C* - ID_PRODUCT_FROM_DATABASE=Keyboard FSC KBPC PX - -usb:v0BF8p100F* - ID_PRODUCT_FROM_DATABASE=miniCard D2301 802.11bg Wireless Module [SiS 163U] - -usb:v0BFD* - ID_VENDOR_FROM_DATABASE=Kvaser AB - -usb:v0BFDp0004* - ID_PRODUCT_FROM_DATABASE=USBcan II - -usb:v0BFDp000B* - ID_PRODUCT_FROM_DATABASE=Leaf Light HS - -usb:v0BFDp000E* - ID_PRODUCT_FROM_DATABASE=Leaf SemiPro HS - -usb:v0C04* - ID_VENDOR_FROM_DATABASE=MOTO Development Group, Inc. - -usb:v0C05* - ID_VENDOR_FROM_DATABASE=Appian Graphics - -usb:v0C06* - ID_VENDOR_FROM_DATABASE=Hasbro Games, Inc. - -usb:v0C07* - ID_VENDOR_FROM_DATABASE=Infinite Data Storage, Ltd - -usb:v0C08* - ID_VENDOR_FROM_DATABASE=Agate - -usb:v0C08p0378* - ID_PRODUCT_FROM_DATABASE=Q 16MB Storage Device - -usb:v0C09* - ID_VENDOR_FROM_DATABASE=Comjet Information System - -usb:v0C09pA5A5* - ID_PRODUCT_FROM_DATABASE=Litto Version USB2.0 - -usb:v0C0A* - ID_VENDOR_FROM_DATABASE=Highpoint Technologies, Inc. - -usb:v0C0B* - ID_VENDOR_FROM_DATABASE=Dura Micro, Inc. (Acomdata) - -usb:v0C0Bp27CB* - ID_PRODUCT_FROM_DATABASE=6-in-1 Flash Reader and Writer - -usb:v0C0Bp27D7* - ID_PRODUCT_FROM_DATABASE=Multi Memory reader/writer MD-005 - -usb:v0C0Bp27DA* - ID_PRODUCT_FROM_DATABASE=Multi Memory reader/writer MD-005 - -usb:v0C0Bp27DC* - ID_PRODUCT_FROM_DATABASE=Multi Memory reader/writer MD-005 - -usb:v0C0Bp27E7* - ID_PRODUCT_FROM_DATABASE=3,5'' HDD case MD-231 - -usb:v0C0Bp27EE* - ID_PRODUCT_FROM_DATABASE=3,5'' HDD case MD-231 - -usb:v0C0Bp2814* - ID_PRODUCT_FROM_DATABASE=3,5'' HDD case MD-231 - -usb:v0C0Bp2815* - ID_PRODUCT_FROM_DATABASE=3,5'' HDD case MD-231 - -usb:v0C0Bp281D* - ID_PRODUCT_FROM_DATABASE=3,5'' HDD case MD-231 - -usb:v0C0Bp5FAB* - ID_PRODUCT_FROM_DATABASE=Storage Adaptor - -usb:v0C0BpA109* - ID_PRODUCT_FROM_DATABASE=CF/SM Reader and Writer - -usb:v0C0BpA10C* - ID_PRODUCT_FROM_DATABASE=SD/MS Reader and Writer - -usb:v0C0BpB001* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Mass Storage IDE adapter - -usb:v0C0BpB004* - ID_PRODUCT_FROM_DATABASE=MMC/SD Reader and Writer - -usb:v0C12* - ID_VENDOR_FROM_DATABASE=Zeroplus - -usb:v0C12p0005* - ID_PRODUCT_FROM_DATABASE=PSX Vibration Feedback Converter - -usb:v0C12p0030* - ID_PRODUCT_FROM_DATABASE=PSX Vibration Feedback Converter - -usb:v0C12p700E* - ID_PRODUCT_FROM_DATABASE=Logic Analyzer (LAP-C-16032) - -usb:v0C12p8801* - ID_PRODUCT_FROM_DATABASE=Xbox Controller - -usb:v0C12p8802* - ID_PRODUCT_FROM_DATABASE=Xbox Controller - -usb:v0C12p8809* - ID_PRODUCT_FROM_DATABASE=Red Octane Ignition Xbox DDR Pad - -usb:v0C12p880A* - ID_PRODUCT_FROM_DATABASE=Pelican Eclipse PL-2023 - -usb:v0C12p8810* - ID_PRODUCT_FROM_DATABASE=Xbox Controller - -usb:v0C12p9902* - ID_PRODUCT_FROM_DATABASE=VibraX - -usb:v0C15* - ID_VENDOR_FROM_DATABASE=Iris Graphics - -usb:v0C16* - ID_VENDOR_FROM_DATABASE=Gyration, Inc. - -usb:v0C16p0002* - ID_PRODUCT_FROM_DATABASE=RF Technology Receiver - -usb:v0C16p0003* - ID_PRODUCT_FROM_DATABASE=RF Technology Receiver - -usb:v0C16p0008* - ID_PRODUCT_FROM_DATABASE=RF Technology Receiver - -usb:v0C16p0080* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v0C16p0081* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v0C17* - ID_VENDOR_FROM_DATABASE=Cyberboard A/S - -usb:v0C18* - ID_VENDOR_FROM_DATABASE=SynerTek Korea, Inc. - -usb:v0C19* - ID_VENDOR_FROM_DATABASE=cyberPIXIE, Inc. - -usb:v0C1A* - ID_VENDOR_FROM_DATABASE=Silicon Motion, Inc. - -usb:v0C1B* - ID_VENDOR_FROM_DATABASE=MIPS Technologies - -usb:v0C1C* - ID_VENDOR_FROM_DATABASE=Hang Zhou Silan Electronics Co., Ltd - -usb:v0C22* - ID_VENDOR_FROM_DATABASE=Tally Printer Corp. - -usb:v0C23* - ID_VENDOR_FROM_DATABASE=Lernout + Hauspie - -usb:v0C24* - ID_VENDOR_FROM_DATABASE=Taiyo Yuden - -usb:v0C24p0001* - ID_PRODUCT_FROM_DATABASE=Bluetooth Adaptor - -usb:v0C24p0002* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device2 - -usb:v0C24p0005* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device(BC04-External) - -usb:v0C24p000B* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device(BC04-External) - -usb:v0C24p000C* - ID_PRODUCT_FROM_DATABASE=Bluetooth Adaptor - -usb:v0C24p000E* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device(BC04-External) - -usb:v0C24p000F* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device (V2.0+EDR) - -usb:v0C24p0010* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device(BC04-External) - -usb:v0C24p0012* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device(BC04-External) - -usb:v0C24p0018* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device(BC04-External) - -usb:v0C24p0019* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0C24p0021* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0C24p0C24* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device(SAMPLE) - -usb:v0C24pFFFF* - ID_PRODUCT_FROM_DATABASE=Bluetooth module with BlueCore in DFU mode - -usb:v0C25* - ID_VENDOR_FROM_DATABASE=Sampo Corp. - -usb:v0C25p0310* - ID_PRODUCT_FROM_DATABASE=Scream Cam - -usb:v0C26* - ID_VENDOR_FROM_DATABASE=Prolific Technology Inc. - -usb:v0C26p0018* - ID_PRODUCT_FROM_DATABASE=USB-Serial Controller [Icom Inc. OPC-478UC] - -usb:v0C27* - ID_VENDOR_FROM_DATABASE=RFIDeas, Inc - -usb:v0C27p3BFA* - ID_PRODUCT_FROM_DATABASE=pcProx Card Reader - -usb:v0C2E* - ID_VENDOR_FROM_DATABASE=Metrologic Instruments - -usb:v0C2Ep0007* - ID_PRODUCT_FROM_DATABASE=Metrologic MS7120 Barcode Scanner (IBM SurePOS mode) - -usb:v0C2Ep0200* - ID_PRODUCT_FROM_DATABASE=Metrologic Scanner - -usb:v0C2Ep0204* - ID_PRODUCT_FROM_DATABASE=Metrologic MS7120 Barcode Scanner (keyboard mode) - -usb:v0C2Ep0206* - ID_PRODUCT_FROM_DATABASE=Metrologic MS4980 Barcode Scanner - -usb:v0C2Ep0700* - ID_PRODUCT_FROM_DATABASE=Metrologic MS7120 Barcode Scanner (uni-directional serial mode) - -usb:v0C2Ep0720* - ID_PRODUCT_FROM_DATABASE=Metrologic MS7120 Barcode Scanner (bi-directional serial mode) - -usb:v0C2Ep0B61* - ID_PRODUCT_FROM_DATABASE=Vuquest 3310g - -usb:v0C2Ep0B6A* - ID_PRODUCT_FROM_DATABASE=Vuquest 3310 Area-Imaging Scanner - -usb:v0C35* - ID_VENDOR_FROM_DATABASE=Eagletron, Inc. - -usb:v0C36* - ID_VENDOR_FROM_DATABASE=E Ink Corp. - -usb:v0C37* - ID_VENDOR_FROM_DATABASE=e.Digital - -usb:v0C38* - ID_VENDOR_FROM_DATABASE=Der An Electric Wire & Cable Co., Ltd - -usb:v0C39* - ID_VENDOR_FROM_DATABASE=IFR - -usb:v0C3A* - ID_VENDOR_FROM_DATABASE=Furui Precise Component (Kunshan) Co., Ltd - -usb:v0C3B* - ID_VENDOR_FROM_DATABASE=Komatsu, Ltd - -usb:v0C3C* - ID_VENDOR_FROM_DATABASE=Radius Co., Ltd - -usb:v0C3D* - ID_VENDOR_FROM_DATABASE=Innocom, Inc. - -usb:v0C3E* - ID_VENDOR_FROM_DATABASE=Nextcell, Inc. - -usb:v0C44* - ID_VENDOR_FROM_DATABASE=Motorola iDEN - -usb:v0C44p0021* - ID_PRODUCT_FROM_DATABASE=iDEN P2k0 Device - -usb:v0C44p0022* - ID_PRODUCT_FROM_DATABASE=iDEN P2k1 Device - -usb:v0C44p03A2* - ID_PRODUCT_FROM_DATABASE=iDEN Smartphone - -usb:v0C44p41D9* - ID_PRODUCT_FROM_DATABASE=i1 phone - -usb:v0C45* - ID_VENDOR_FROM_DATABASE=Microdia - -usb:v0C45p0011* - ID_PRODUCT_FROM_DATABASE=EBUDDY - -usb:v0C45p1018* - ID_PRODUCT_FROM_DATABASE=Compact Flash storage memory card reader - -usb:v0C45p1020* - ID_PRODUCT_FROM_DATABASE=Mass Storage Reader - -usb:v0C45p1028* - ID_PRODUCT_FROM_DATABASE=Mass Storage Reader - -usb:v0C45p1030* - ID_PRODUCT_FROM_DATABASE=Mass Storage Reader - -usb:v0C45p1031* - ID_PRODUCT_FROM_DATABASE=Sonix Mass Storage Device - -usb:v0C45p1032* - ID_PRODUCT_FROM_DATABASE=Mass Storage Reader - -usb:v0C45p1033* - ID_PRODUCT_FROM_DATABASE=Sonix Mass Storage Device - -usb:v0C45p1034* - ID_PRODUCT_FROM_DATABASE=Mass Storage Reader - -usb:v0C45p1035* - ID_PRODUCT_FROM_DATABASE=Mass Storage Reader - -usb:v0C45p1036* - ID_PRODUCT_FROM_DATABASE=Mass Storage Reader - -usb:v0C45p1037* - ID_PRODUCT_FROM_DATABASE=Sonix Mass Storage Device - -usb:v0C45p1050* - ID_PRODUCT_FROM_DATABASE=CF Card Reader - -usb:v0C45p1058* - ID_PRODUCT_FROM_DATABASE=HDD Reader - -usb:v0C45p1060* - ID_PRODUCT_FROM_DATABASE=iFlash SM-Direct Card Reader - -usb:v0C45p1061* - ID_PRODUCT_FROM_DATABASE=Mass Storage Reader - -usb:v0C45p1062* - ID_PRODUCT_FROM_DATABASE=Mass Storage Reader - -usb:v0C45p1063* - ID_PRODUCT_FROM_DATABASE=Sonix Mass Storage Device - -usb:v0C45p1064* - ID_PRODUCT_FROM_DATABASE=Mass Storage Reader - -usb:v0C45p1065* - ID_PRODUCT_FROM_DATABASE=Mass Storage Reader - -usb:v0C45p1066* - ID_PRODUCT_FROM_DATABASE=Mass Storage Reader - -usb:v0C45p1067* - ID_PRODUCT_FROM_DATABASE=Mass Storage Reader - -usb:v0C45p1158* - ID_PRODUCT_FROM_DATABASE=A56AK - -usb:v0C45p184C* - ID_PRODUCT_FROM_DATABASE=VoIP Phone - -usb:v0C45p6001* - ID_PRODUCT_FROM_DATABASE=Genius VideoCAM NB - -usb:v0C45p6005* - ID_PRODUCT_FROM_DATABASE=Sweex Mini Webcam - -usb:v0C45p6007* - ID_PRODUCT_FROM_DATABASE=VideoCAM Eye - -usb:v0C45p6009* - ID_PRODUCT_FROM_DATABASE=VideoCAM ExpressII - -usb:v0C45p600D* - ID_PRODUCT_FROM_DATABASE=TwinkleCam USB camera - -usb:v0C45p6011* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C102) - -usb:v0C45p6019* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C102) - -usb:v0C45p6024* - ID_PRODUCT_FROM_DATABASE=VideoCAM ExpressII - -usb:v0C45p6025* - ID_PRODUCT_FROM_DATABASE=VideoCAM ExpressII - -usb:v0C45p6028* - ID_PRODUCT_FROM_DATABASE=Typhoon Easycam USB 330K (older) - -usb:v0C45p6029* - ID_PRODUCT_FROM_DATABASE=Triplex i-mini PC Camera - -usb:v0C45p602A* - ID_PRODUCT_FROM_DATABASE=Meade ETX-105EC Camera - -usb:v0C45p602B* - ID_PRODUCT_FROM_DATABASE=VideoCAM NB 300 - -usb:v0C45p602C* - ID_PRODUCT_FROM_DATABASE=Clas Ohlson TWC-30XOP Webcam - -usb:v0C45p602D* - ID_PRODUCT_FROM_DATABASE=VideoCAM ExpressII - -usb:v0C45p602E* - ID_PRODUCT_FROM_DATABASE=VideoCAM Messenger - -usb:v0C45p6030* - ID_PRODUCT_FROM_DATABASE=VideoCAM ExpressII - -usb:v0C45p603F* - ID_PRODUCT_FROM_DATABASE=VideoCAM ExpressII - -usb:v0C45p6040* - ID_PRODUCT_FROM_DATABASE=CCD PC Camera (PC390A) - -usb:v0C45p606A* - ID_PRODUCT_FROM_DATABASE=CCD PC Camera (PC390A) - -usb:v0C45p607A* - ID_PRODUCT_FROM_DATABASE=CCD PC Camera (PC390A) - -usb:v0C45p607B* - ID_PRODUCT_FROM_DATABASE=Win2 PC Camera - -usb:v0C45p607C* - ID_PRODUCT_FROM_DATABASE=CCD PC Camera (PC390A) - -usb:v0C45p607E* - ID_PRODUCT_FROM_DATABASE=CCD PC Camera (PC390A) - -usb:v0C45p6080* - ID_PRODUCT_FROM_DATABASE=Audio (Microphone) - -usb:v0C45p6082* - ID_PRODUCT_FROM_DATABASE=VideoCAM Look - -usb:v0C45p6083* - ID_PRODUCT_FROM_DATABASE=VideoCAM Look - -usb:v0C45p608C* - ID_PRODUCT_FROM_DATABASE=VideoCAM Look - -usb:v0C45p608E* - ID_PRODUCT_FROM_DATABASE=VideoCAM Look - -usb:v0C45p608F* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C103 + OV7630) - -usb:v0C45p60A8* - ID_PRODUCT_FROM_DATABASE=VideoCAM Look - -usb:v0C45p60AA* - ID_PRODUCT_FROM_DATABASE=VideoCAM Look - -usb:v0C45p60AB* - ID_PRODUCT_FROM_DATABASE=PC Camera - -usb:v0C45p60AF* - ID_PRODUCT_FROM_DATABASE=VideoCAM Look - -usb:v0C45p60B0* - ID_PRODUCT_FROM_DATABASE=Genius VideoCam Look - -usb:v0C45p60C0* - ID_PRODUCT_FROM_DATABASE=PC Camera with Mic (SN9C105) - -usb:v0C45p60C8* - ID_PRODUCT_FROM_DATABASE=Win2 PC Camera - -usb:v0C45p60CC* - ID_PRODUCT_FROM_DATABASE=PC Camera with Mic (SN9C105) - -usb:v0C45p60EC* - ID_PRODUCT_FROM_DATABASE=PC Camera with Mic (SN9C105) - -usb:v0C45p60EF* - ID_PRODUCT_FROM_DATABASE=Win2 PC Camera - -usb:v0C45p60FA* - ID_PRODUCT_FROM_DATABASE=PC Camera with Mic (SN9C105) - -usb:v0C45p60FB* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v0C45p60FC* - ID_PRODUCT_FROM_DATABASE=PC Camera with Mic (SN9C105) - -usb:v0C45p60FE* - ID_PRODUCT_FROM_DATABASE=Audio (Microphone) - -usb:v0C45p6108* - ID_PRODUCT_FROM_DATABASE=Win2 PC Camera - -usb:v0C45p6122* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C110) - -usb:v0C45p6123* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C110) - -usb:v0C45p6128* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C325 + OM6802) - -usb:v0C45p612A* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C325) - -usb:v0C45p612C* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C110) - -usb:v0C45p612E* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C110) - -usb:v0C45p612F* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C110) - -usb:v0C45p6130* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C120) - -usb:v0C45p6138* - ID_PRODUCT_FROM_DATABASE=Win2 PC Camera - -usb:v0C45p613A* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C120) - -usb:v0C45p613B* - ID_PRODUCT_FROM_DATABASE=Win2 PC Camera - -usb:v0C45p613C* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C120) - -usb:v0C45p613E* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C120) - -usb:v0C45p6143* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C120 + SP80708) - -usb:v0C45p6240* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + MI1300) - -usb:v0C45p6242* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + MI1310) - -usb:v0C45p6243* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + S5K4AAFX) - -usb:v0C45p6248* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + OV9655) - -usb:v0C45p624B* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + CX1332) - -usb:v0C45p624C* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + MI1320) - -usb:v0C45p624E* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + SOI968) - -usb:v0C45p624F* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + OV9650) - -usb:v0C45p6251* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + OV9650) - -usb:v0C45p6253* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + OV9650) - -usb:v0C45p6260* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + OV7670ISP) - -usb:v0C45p6262* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + OM6802) - -usb:v0C45p6270* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + MI0360/MT9V011 or MI0360SOC/MT9V111) U-CAM PC Camera NE878, Whitcom WHC017, ... - -usb:v0C45p627A* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + S5K53BEB) - -usb:v0C45p627B* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + OV7660) - -usb:v0C45p627C* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + HV7131R) - -usb:v0C45p627F* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + OV965x + EEPROM) - -usb:v0C45p6280* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + MI1300) - -usb:v0C45p6282* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + MI1310) - -usb:v0C45p6283* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + S5K4AAFX) - -usb:v0C45p6288* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + OV9655) - -usb:v0C45p628A* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + ICM107) - -usb:v0C45p628B* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + CX1332) - -usb:v0C45p628C* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + MI1320) - -usb:v0C45p628E* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + SOI968) - -usb:v0C45p628F* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + OV9650) - -usb:v0C45p62A0* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + OV7670ISP) - -usb:v0C45p62A2* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + OM6802) - -usb:v0C45p62B0* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + MI0360/MT9V011 or MI0360SOC/MT9V111) - -usb:v0C45p62B3* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + OV9655) - -usb:v0C45p62BA* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + S5K53BEB) - -usb:v0C45p62BB* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + OV7660) - -usb:v0C45p62BC* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + HV7131R) - -usb:v0C45p62BE* - ID_PRODUCT_FROM_DATABASE=PC Camera with Microphone (SN9C202 + OV7663) - -usb:v0C45p62C0* - ID_PRODUCT_FROM_DATABASE=Sonix USB 2.0 Camera - -usb:v0C45p62E0* - ID_PRODUCT_FROM_DATABASE=MSI Starcam Racer - -usb:v0C45p6310* - ID_PRODUCT_FROM_DATABASE=Sonix USB 2.0 Camera - -usb:v0C45p63E0* - ID_PRODUCT_FROM_DATABASE=Sonix Integrated Webcam - -usb:v0C45p63F1* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam - -usb:v0C45p63F8* - ID_PRODUCT_FROM_DATABASE=Sonix Integrated Webcam - -usb:v0C45p6409* - ID_PRODUCT_FROM_DATABASE=Webcam - -usb:v0C45p6413* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam - -usb:v0C45p6417* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam - -usb:v0C45p641D* - ID_PRODUCT_FROM_DATABASE=1.3 MPixel Integrated Webcam - -usb:v0C45p6480* - ID_PRODUCT_FROM_DATABASE=Sonix 1.3 MP Laptop Integrated Webcam - -usb:v0C45p648B* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam - -usb:v0C45p64BD* - ID_PRODUCT_FROM_DATABASE=Sony Visual Communication Camera - -usb:v0C45p7402* - ID_PRODUCT_FROM_DATABASE=TEMPerHUM Temperature & Humidity Sensor - -usb:v0C45p7403* - ID_PRODUCT_FROM_DATABASE=Foot Switch - -usb:v0C45p8000* - ID_PRODUCT_FROM_DATABASE=DC31VC - -usb:v0C45p8006* - ID_PRODUCT_FROM_DATABASE=Dual Mode Camera (8006 VGA) - -usb:v0C45p800A* - ID_PRODUCT_FROM_DATABASE=Vivitar Vivicam3350B - -usb:v0C46* - ID_VENDOR_FROM_DATABASE=WaveRider Communications, Inc. - -usb:v0C4A* - ID_VENDOR_FROM_DATABASE=ALGE-TIMING GmbH - -usb:v0C4Ap0889* - ID_PRODUCT_FROM_DATABASE=Timy - -usb:v0C4Ap088A* - ID_PRODUCT_FROM_DATABASE=Timy 2 - -usb:v0C4B* - ID_VENDOR_FROM_DATABASE=Reiner SCT Kartensysteme GmbH - -usb:v0C4Bp0100* - ID_PRODUCT_FROM_DATABASE=cyberJack e-com/pinpad - -usb:v0C4Bp0300* - ID_PRODUCT_FROM_DATABASE=cyberJack pinpad(a) - -usb:v0C4Bp0501* - ID_PRODUCT_FROM_DATABASE=cyberJack RFID comfort dual interface smartcard reader - -usb:v0C4Bp9102* - ID_PRODUCT_FROM_DATABASE=cyberJack RFID basis contactless smartcard reader - -usb:v0C4C* - ID_VENDOR_FROM_DATABASE=Needham's Electronics - -usb:v0C4Cp0021* - ID_PRODUCT_FROM_DATABASE=EMP-21 Universal Programmer - -usb:v0C52* - ID_VENDOR_FROM_DATABASE=Sealevel Systems, Inc. - -usb:v0C52p2101* - ID_PRODUCT_FROM_DATABASE=SeaLINK+232 - -usb:v0C52p2102* - ID_PRODUCT_FROM_DATABASE=SeaLINK+485 - -usb:v0C52p2103* - ID_PRODUCT_FROM_DATABASE=SeaLINK+232I - -usb:v0C52p2104* - ID_PRODUCT_FROM_DATABASE=SeaLINK+485I - -usb:v0C52p2211* - ID_PRODUCT_FROM_DATABASE=SeaPORT+2/232 (Port 1) - -usb:v0C52p2212* - ID_PRODUCT_FROM_DATABASE=SeaPORT+2/485 (Port 1) - -usb:v0C52p2213* - ID_PRODUCT_FROM_DATABASE=SeaPORT+2 (Port 1) - -usb:v0C52p2221* - ID_PRODUCT_FROM_DATABASE=SeaPORT+2/232 (Port 2) - -usb:v0C52p2222* - ID_PRODUCT_FROM_DATABASE=SeaPORT+2/485 (Port 2) - -usb:v0C52p2223* - ID_PRODUCT_FROM_DATABASE=SeaPORT+2 (Port 2) - -usb:v0C52p2411* - ID_PRODUCT_FROM_DATABASE=SeaPORT+4/232 (Port 1) - -usb:v0C52p2412* - ID_PRODUCT_FROM_DATABASE=SeaPORT+4/485 (Port 1) - -usb:v0C52p2413* - ID_PRODUCT_FROM_DATABASE=SeaPORT+4 (Port 1) - -usb:v0C52p2421* - ID_PRODUCT_FROM_DATABASE=SeaPORT+4/232 (Port 2) - -usb:v0C52p2422* - ID_PRODUCT_FROM_DATABASE=SeaPORT+4/485 (Port 2) - -usb:v0C52p2423* - ID_PRODUCT_FROM_DATABASE=SeaPORT+4 (Port 2) - -usb:v0C52p2431* - ID_PRODUCT_FROM_DATABASE=SeaPORT+4/232 (Port 3) - -usb:v0C52p2432* - ID_PRODUCT_FROM_DATABASE=SeaPORT+4/485 (Port 3) - -usb:v0C52p2433* - ID_PRODUCT_FROM_DATABASE=SeaPORT+4 (Port 3) - -usb:v0C52p2441* - ID_PRODUCT_FROM_DATABASE=SeaPORT+4/232 (Port 4) - -usb:v0C52p2442* - ID_PRODUCT_FROM_DATABASE=SeaPORT+4/485 (Port 4) - -usb:v0C52p2443* - ID_PRODUCT_FROM_DATABASE=SeaPORT+4 (Port 4) - -usb:v0C52p2811* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/232 (Port 1) - -usb:v0C52p2812* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/485 (Port 1) - -usb:v0C52p2813* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8 (Port 1) - -usb:v0C52p2821* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/232 (Port 2) - -usb:v0C52p2822* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/485 (Port 2) - -usb:v0C52p2823* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8 (Port 2) - -usb:v0C52p2831* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/232 (Port 3) - -usb:v0C52p2832* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/485 (Port 3) - -usb:v0C52p2833* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8 (Port 3) - -usb:v0C52p2841* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/232 (Port 4) - -usb:v0C52p2842* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/485 (Port 4) - -usb:v0C52p2843* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8 (Port 4) - -usb:v0C52p2851* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/232 (Port 5) - -usb:v0C52p2852* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/485 (Port 5) - -usb:v0C52p2853* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8 (Port 5) - -usb:v0C52p2861* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/232 (Port 6) - -usb:v0C52p2862* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/485 (Port 6) - -usb:v0C52p2863* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8 (Port 6) - -usb:v0C52p2871* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/232 (Port 7) - -usb:v0C52p2872* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/485 (Port 7) - -usb:v0C52p2873* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8 (Port 7) - -usb:v0C52p2881* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/232 (Port 8) - -usb:v0C52p2882* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8/485 (Port 8) - -usb:v0C52p2883* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8 (Port 8) - -usb:v0C52p9020* - ID_PRODUCT_FROM_DATABASE=SeaLINK+422 - -usb:v0C52pA02A* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8 (Port 1+2) - -usb:v0C52pA02B* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8 (Port 3+4) - -usb:v0C52pA02C* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8 (Port 5+6) - -usb:v0C52pA02D* - ID_PRODUCT_FROM_DATABASE=SeaLINK+8 (Port 7+8) - -usb:v0C53* - ID_VENDOR_FROM_DATABASE=ViewPLUS, Inc. - -usb:v0C54* - ID_VENDOR_FROM_DATABASE=Glory, Ltd - -usb:v0C55* - ID_VENDOR_FROM_DATABASE=Spectrum Digital, Inc. - -usb:v0C55p0510* - ID_PRODUCT_FROM_DATABASE=Spectrum Digital XDS510 JTAG Debugger - -usb:v0C55p0540* - ID_PRODUCT_FROM_DATABASE=SPI540 - -usb:v0C55p5416* - ID_PRODUCT_FROM_DATABASE=TMS320C5416 DSK - -usb:v0C55p6416* - ID_PRODUCT_FROM_DATABASE=TMS320C6416 DDB - -usb:v0C56* - ID_VENDOR_FROM_DATABASE=Billion Bright, Ltd - -usb:v0C57* - ID_VENDOR_FROM_DATABASE=Imaginative Design Operation Co., Ltd - -usb:v0C58* - ID_VENDOR_FROM_DATABASE=Vidar Systems Corp. - -usb:v0C59* - ID_VENDOR_FROM_DATABASE=Dong Guan Shinko Wire Co., Ltd - -usb:v0C5A* - ID_VENDOR_FROM_DATABASE=TRS International Mfg., Inc. - -usb:v0C5E* - ID_VENDOR_FROM_DATABASE=Xytronix Research & Design - -usb:v0C60* - ID_VENDOR_FROM_DATABASE=Apogee Electronics Corp. - -usb:v0C62* - ID_VENDOR_FROM_DATABASE=Chant Sincere Co., Ltd - -usb:v0C63* - ID_VENDOR_FROM_DATABASE=Toko, Inc. - -usb:v0C64* - ID_VENDOR_FROM_DATABASE=Signality System Engineering Co., Ltd - -usb:v0C65* - ID_VENDOR_FROM_DATABASE=Eminence Enterprise Co., Ltd - -usb:v0C66* - ID_VENDOR_FROM_DATABASE=Rexon Electronics Corp. - -usb:v0C67* - ID_VENDOR_FROM_DATABASE=Concept Telecom, Ltd - -usb:v0C6A* - ID_VENDOR_FROM_DATABASE=ACS - -usb:v0C6Ap0005* - ID_PRODUCT_FROM_DATABASE=Color 320 x 240 LCD Display Terminal with Touchscreen - -usb:v0C6C* - ID_VENDOR_FROM_DATABASE=JETI Technische Instrumente GmbH - -usb:v0C6Cp04B2* - ID_PRODUCT_FROM_DATABASE=Specbos 1201 - -usb:v0C70* - ID_VENDOR_FROM_DATABASE=MCT Elektronikladen - -usb:v0C70p0000* - ID_PRODUCT_FROM_DATABASE=USB08 Development board - -usb:v0C70p0747* - ID_PRODUCT_FROM_DATABASE=Eye Movement Recorder [Visagraph]/[ReadAlyzer] - -usb:v0C72* - ID_VENDOR_FROM_DATABASE=PEAK System - -usb:v0C72p000C* - ID_PRODUCT_FROM_DATABASE=PCAN-USB - -usb:v0C72p000D* - ID_PRODUCT_FROM_DATABASE=PCAN Pro - -usb:v0C74* - ID_VENDOR_FROM_DATABASE=Optronic Laboratories Inc. - -usb:v0C74p0002* - ID_PRODUCT_FROM_DATABASE=OL 700-30 Goniometer - -usb:v0C76* - ID_VENDOR_FROM_DATABASE=JMTek, LLC. - -usb:v0C76p0001* - ID_PRODUCT_FROM_DATABASE=Mass Storage Controller - -usb:v0C76p0002* - ID_PRODUCT_FROM_DATABASE=Mass Storage Controller - -usb:v0C76p0003* - ID_PRODUCT_FROM_DATABASE=USBdisk - -usb:v0C76p0004* - ID_PRODUCT_FROM_DATABASE=Mass Storage Controller - -usb:v0C76p0005* - ID_PRODUCT_FROM_DATABASE=Transcend Flash disk - -usb:v0C76p0006* - ID_PRODUCT_FROM_DATABASE=Transcend JetFlash - -usb:v0C76p0007* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0C76p1600* - ID_PRODUCT_FROM_DATABASE=Ion Quick Play LP turntable - -usb:v0C76p1605* - ID_PRODUCT_FROM_DATABASE=SSS Headphone Set - -usb:v0C76p1607* - ID_PRODUCT_FROM_DATABASE=audio controller - -usb:v0C77* - ID_VENDOR_FROM_DATABASE=Sipix Group, Ltd - -usb:v0C77p1001* - ID_PRODUCT_FROM_DATABASE=SiPix Web2 - -usb:v0C77p1002* - ID_PRODUCT_FROM_DATABASE=SiPix SC2100 - -usb:v0C77p1010* - ID_PRODUCT_FROM_DATABASE=SiPix Snap - -usb:v0C77p1011* - ID_PRODUCT_FROM_DATABASE=SiPix Blink 2 - -usb:v0C77p1015* - ID_PRODUCT_FROM_DATABASE=SiPix CAMeleon - -usb:v0C78* - ID_VENDOR_FROM_DATABASE=Detto Corp. - -usb:v0C79* - ID_VENDOR_FROM_DATABASE=NuConnex Technologies Pte., Ltd - -usb:v0C7A* - ID_VENDOR_FROM_DATABASE=Wing-Span Enterprise Co., Ltd - -usb:v0C86* - ID_VENDOR_FROM_DATABASE=NDA Technologies, Inc. - -usb:v0C88* - ID_VENDOR_FROM_DATABASE=Kyocera Wireless Corp. - -usb:v0C88p0021* - ID_PRODUCT_FROM_DATABASE=Handheld - -usb:v0C88p17DA* - ID_PRODUCT_FROM_DATABASE=Qualcomm Kyocera CDMA Technologies MSM - -usb:v0C89* - ID_VENDOR_FROM_DATABASE=Honda Tsushin Kogyo Co., Ltd - -usb:v0C8A* - ID_VENDOR_FROM_DATABASE=Pathway Connectivity, Inc. - -usb:v0C8B* - ID_VENDOR_FROM_DATABASE=Wavefly Corp. - -usb:v0C8C* - ID_VENDOR_FROM_DATABASE=Coactive Networks - -usb:v0C8D* - ID_VENDOR_FROM_DATABASE=Tempo - -usb:v0C8E* - ID_VENDOR_FROM_DATABASE=Cesscom Co., Ltd - -usb:v0C8Ep6000* - ID_PRODUCT_FROM_DATABASE=Luxian Series - -usb:v0C8F* - ID_VENDOR_FROM_DATABASE=Applied Microsystems - -usb:v0C94* - ID_VENDOR_FROM_DATABASE=Cryptera - -usb:v0C94pA000* - ID_PRODUCT_FROM_DATABASE=EPP 1217 - -usb:v0C98* - ID_VENDOR_FROM_DATABASE=Berkshire Products, Inc. - -usb:v0C98p1140* - ID_PRODUCT_FROM_DATABASE=USB PC Watchdog - -usb:v0C99* - ID_VENDOR_FROM_DATABASE=Innochips Co., Ltd - -usb:v0C9A* - ID_VENDOR_FROM_DATABASE=Hanwool Robotics Corp. - -usb:v0C9B* - ID_VENDOR_FROM_DATABASE=Jobin Yvon, Inc. - -usb:v0C9D* - ID_VENDOR_FROM_DATABASE=SemTek - -usb:v0C9Dp0170* - ID_PRODUCT_FROM_DATABASE=3873 Manual Insert card reader - -usb:v0CA2* - ID_VENDOR_FROM_DATABASE=Zyfer - -usb:v0CA3* - ID_VENDOR_FROM_DATABASE=Sega Corp. - -usb:v0CA4* - ID_VENDOR_FROM_DATABASE=ST&T Instrument Corp. - -usb:v0CA5* - ID_VENDOR_FROM_DATABASE=BAE Systems Canada, Inc. - -usb:v0CA6* - ID_VENDOR_FROM_DATABASE=Castles Technology Co., Ltd - -usb:v0CA6p0010* - ID_PRODUCT_FROM_DATABASE=EZUSB PC/SC Smart Card Reader - -usb:v0CA6p0050* - ID_PRODUCT_FROM_DATABASE=EZ220PU Reader Controller - -usb:v0CA6p1077* - ID_PRODUCT_FROM_DATABASE=Bludrive Family Smart Card Reader - -usb:v0CA6p107E* - ID_PRODUCT_FROM_DATABASE=Reader Controller - -usb:v0CA6p2010* - ID_PRODUCT_FROM_DATABASE=myPad110 PC/SC Smart Card Reader - -usb:v0CA6p3050* - ID_PRODUCT_FROM_DATABASE=EZ710 Smart Card Reader - -usb:v0CA7* - ID_VENDOR_FROM_DATABASE=Information Systems Laboratories - -usb:v0CAD* - ID_VENDOR_FROM_DATABASE=Motorola CGISS - -usb:v0CADp9001* - ID_PRODUCT_FROM_DATABASE=PowerPad Pocket PC Device - -usb:v0CAE* - ID_VENDOR_FROM_DATABASE=Ascom Business Systems, Ltd - -usb:v0CAF* - ID_VENDOR_FROM_DATABASE=Buslink - -usb:v0CAFp2507* - ID_PRODUCT_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller - -usb:v0CAFp2515* - ID_PRODUCT_FROM_DATABASE=Flash Disk Embedded Hub - -usb:v0CAFp2516* - ID_PRODUCT_FROM_DATABASE=Flash Disk Security Device - -usb:v0CAFp2517* - ID_PRODUCT_FROM_DATABASE=Flash Disk Mass Storage Device - -usb:v0CAFp25C7* - ID_PRODUCT_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller - -usb:v0CAFp3A00* - ID_PRODUCT_FROM_DATABASE=Hard Drive - -usb:v0CAFp3A20* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0CAFp3ACD* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0CB0* - ID_VENDOR_FROM_DATABASE=Flying Pig Systems - -usb:v0CB1* - ID_VENDOR_FROM_DATABASE=Innovonics, Inc. - -usb:v0CB6* - ID_VENDOR_FROM_DATABASE=Celestix Networks, Pte., Ltd - -usb:v0CB7* - ID_VENDOR_FROM_DATABASE=Singatron Enterprise Co., Ltd - -usb:v0CB8* - ID_VENDOR_FROM_DATABASE=Opticis Co., Ltd - -usb:v0CBA* - ID_VENDOR_FROM_DATABASE=Trust Electronic (Shanghai) Co., Ltd - -usb:v0CBB* - ID_VENDOR_FROM_DATABASE=Shanghai Darong Electronics Co., Ltd - -usb:v0CBC* - ID_VENDOR_FROM_DATABASE=Palmax Technology Co., Ltd - -usb:v0CBCp0101* - ID_PRODUCT_FROM_DATABASE=Pocket PC P6C - -usb:v0CBCp0201* - ID_PRODUCT_FROM_DATABASE=Personal Digital Assistant - -usb:v0CBCp0301* - ID_PRODUCT_FROM_DATABASE=Personal Digital Assistant P6M+ - -usb:v0CBCp0401* - ID_PRODUCT_FROM_DATABASE=Pocket PC - -usb:v0CBD* - ID_VENDOR_FROM_DATABASE=Pentel Co., Ltd (Electronics Equipment Div.) - -usb:v0CBE* - ID_VENDOR_FROM_DATABASE=Keryx Technologies, Inc. - -usb:v0CBF* - ID_VENDOR_FROM_DATABASE=Union Genius Computer Co., Ltd - -usb:v0CC0* - ID_VENDOR_FROM_DATABASE=Kuon Yi Industrial Corp. - -usb:v0CC1* - ID_VENDOR_FROM_DATABASE=Given Imaging, Ltd - -usb:v0CC2* - ID_VENDOR_FROM_DATABASE=Timex Corp. - -usb:v0CC3* - ID_VENDOR_FROM_DATABASE=Rimage Corp. - -usb:v0CC4* - ID_VENDOR_FROM_DATABASE=emsys GmbH - -usb:v0CC5* - ID_VENDOR_FROM_DATABASE=Sendo - -usb:v0CC6* - ID_VENDOR_FROM_DATABASE=Intermagic Corp. - -usb:v0CC7* - ID_VENDOR_FROM_DATABASE=Kontron Medical AG - -usb:v0CC8* - ID_VENDOR_FROM_DATABASE=Technotools Corp. - -usb:v0CC9* - ID_VENDOR_FROM_DATABASE=BroadMAX Technologies, Inc. - -usb:v0CCA* - ID_VENDOR_FROM_DATABASE=Amphenol - -usb:v0CCB* - ID_VENDOR_FROM_DATABASE=SKNet Co., Ltd - -usb:v0CCC* - ID_VENDOR_FROM_DATABASE=Domex Technology Corp. - -usb:v0CCD* - ID_VENDOR_FROM_DATABASE=TerraTec Electronic GmbH - -usb:v0CCDp0012* - ID_PRODUCT_FROM_DATABASE=PHASE 26 - -usb:v0CCDp0013* - ID_PRODUCT_FROM_DATABASE=PHASE 26 - -usb:v0CCDp0014* - ID_PRODUCT_FROM_DATABASE=PHASE 26 - -usb:v0CCDp0015* - ID_PRODUCT_FROM_DATABASE=Flash Update for TerraTec PHASE 26 - -usb:v0CCDp0021* - ID_PRODUCT_FROM_DATABASE=Cameo Grabster 200 - -usb:v0CCDp0023* - ID_PRODUCT_FROM_DATABASE=Mystify Claw - -usb:v0CCDp0028* - ID_PRODUCT_FROM_DATABASE=Aureon 5.1 MkII - -usb:v0CCDp0032* - ID_PRODUCT_FROM_DATABASE=MIDI HUBBLE - -usb:v0CCDp0035* - ID_PRODUCT_FROM_DATABASE=Miditech Play'n Roll - -usb:v0CCDp0036* - ID_PRODUCT_FROM_DATABASE=Cinergy 250 Audio - -usb:v0CCDp0037* - ID_PRODUCT_FROM_DATABASE=Cinergy 250 Audio - -usb:v0CCDp0038* - ID_PRODUCT_FROM_DATABASE=Cinergy T² DVB-T Receiver - -usb:v0CCDp0039* - ID_PRODUCT_FROM_DATABASE=Grabster AV 400 - -usb:v0CCDp003B* - ID_PRODUCT_FROM_DATABASE=Cinergy 400 - -usb:v0CCDp003C* - ID_PRODUCT_FROM_DATABASE=Grabster AV 250 - -usb:v0CCDp0042* - ID_PRODUCT_FROM_DATABASE=Cinergy Hybrid T XS - -usb:v0CCDp0043* - ID_PRODUCT_FROM_DATABASE=Cinergy T XS - -usb:v0CCDp004E* - ID_PRODUCT_FROM_DATABASE=Cinergy T XS - -usb:v0CCDp004F* - ID_PRODUCT_FROM_DATABASE=Cinergy Analog XS - -usb:v0CCDp0055* - ID_PRODUCT_FROM_DATABASE=Cinergy T XE (Version 1, AF9005) - -usb:v0CCDp005C* - ID_PRODUCT_FROM_DATABASE=Cinergy T² - -usb:v0CCDp0069* - ID_PRODUCT_FROM_DATABASE=Cinergy T XE (Version 2, AF9015) - -usb:v0CCDp006B* - ID_PRODUCT_FROM_DATABASE=Cinergy HT PVR (EU) - -usb:v0CCDp0072* - ID_PRODUCT_FROM_DATABASE=Cinergy Hybrid T - -usb:v0CCDp0077* - ID_PRODUCT_FROM_DATABASE=Aureon Dual USB - -usb:v0CCDp0078* - ID_PRODUCT_FROM_DATABASE=Cinergy T XXS - -usb:v0CCDp0086* - ID_PRODUCT_FROM_DATABASE=Cinergy Hybrid XE - -usb:v0CCDp008E* - ID_PRODUCT_FROM_DATABASE=Cinergy HTC XS - -usb:v0CCDp0097* - ID_PRODUCT_FROM_DATABASE=Cinergy T RC MKII - -usb:v0CCDp0099* - ID_PRODUCT_FROM_DATABASE=AfaTech 9015 [Cinergy T Stick Dual] - -usb:v0CCDp00A5* - ID_PRODUCT_FROM_DATABASE=Cinergy Hybrid Stick - -usb:v0CCDp00A9* - ID_PRODUCT_FROM_DATABASE=RTL2838 DVB-T COFDM Demodulator [TerraTec Cinergy T Stick Black] - -usb:v0CCDp00B3* - ID_PRODUCT_FROM_DATABASE=NOXON DAB/DAB+ Stick - -usb:v0CCDp10A7* - ID_PRODUCT_FROM_DATABASE=TerraTec G3 - -usb:v0CD4* - ID_VENDOR_FROM_DATABASE=Bang Olufsen - -usb:v0CD4p0101* - ID_PRODUCT_FROM_DATABASE=BeolinkPC2 - -usb:v0CD5* - ID_VENDOR_FROM_DATABASE=LabJack Corporation - -usb:v0CD5p0003* - ID_PRODUCT_FROM_DATABASE=U3 - -usb:v0CD5p0009* - ID_PRODUCT_FROM_DATABASE=UE9 - -usb:v0CD7* - ID_VENDOR_FROM_DATABASE=NewChip S.r.l. - -usb:v0CD8* - ID_VENDOR_FROM_DATABASE=JS Digitech, Inc. - -usb:v0CD8p2007* - ID_PRODUCT_FROM_DATABASE=Smart Card Reader/JSTU-9700 - -usb:v0CD9* - ID_VENDOR_FROM_DATABASE=Hitachi Shin Din Cable, Ltd - -usb:v0CDE* - ID_VENDOR_FROM_DATABASE=Z-Com - -usb:v0CDEp0001* - ID_PRODUCT_FROM_DATABASE=XI-750 802.11b Wireless Adapter [Atmel AT76C503A] - -usb:v0CDEp0002* - ID_PRODUCT_FROM_DATABASE=XI-725/726 Prism2.5 802.11b Adapter - -usb:v0CDEp0003* - ID_PRODUCT_FROM_DATABASE=Sagem 802.11b Dongle - -usb:v0CDEp0004* - ID_PRODUCT_FROM_DATABASE=Sagem 802.11b Dongle - -usb:v0CDEp0005* - ID_PRODUCT_FROM_DATABASE=XI-735 Prism3 802.11b Adapter - -usb:v0CDEp0006* - ID_PRODUCT_FROM_DATABASE=XG-300 802.11b Adapter - -usb:v0CDEp0008* - ID_PRODUCT_FROM_DATABASE=XG-703A 802.11g Wireless Adapter [Intersil ISL3887] - -usb:v0CDEp0009* - ID_PRODUCT_FROM_DATABASE=(ZD1211)IEEE 802.11b+g Adapter - -usb:v0CDEp0011* - ID_PRODUCT_FROM_DATABASE=ZD1211 - -usb:v0CDEp0012* - ID_PRODUCT_FROM_DATABASE=AR5523 - -usb:v0CDEp0013* - ID_PRODUCT_FROM_DATABASE=AR5523 driver (no firmware) - -usb:v0CDEp0014* - ID_PRODUCT_FROM_DATABASE=NB 802.11g Wireless LAN Adapter(3887A) - -usb:v0CDEp0015* - ID_PRODUCT_FROM_DATABASE=XG-705A 802.11g Wireless Adapter [Intersil ISL3887] - -usb:v0CDEp0016* - ID_PRODUCT_FROM_DATABASE=NB 802.11g Wireless LAN Adapter(3887A) - -usb:v0CDEp0018* - ID_PRODUCT_FROM_DATABASE=NB 802.11a/b/g Wireless LAN Adapter(3887A) - -usb:v0CDEp001A* - ID_PRODUCT_FROM_DATABASE=802.11bg - -usb:v0CDEp001C* - ID_PRODUCT_FROM_DATABASE=802.11b/g Wireless Network Adapter - -usb:v0CDEp0020* - ID_PRODUCT_FROM_DATABASE=AG-760A 802.11abg Wireless Adapter [ZyDAS ZD1211B] - -usb:v0CDEp0022* - ID_PRODUCT_FROM_DATABASE=802.11b/g/n Wireless Network Adapter - -usb:v0CDEp0023* - ID_PRODUCT_FROM_DATABASE=UB81 802.11bgn - -usb:v0CDEp0025* - ID_PRODUCT_FROM_DATABASE=802.11b/g/n USB Wireless Network Adapter - -usb:v0CDEp0026* - ID_PRODUCT_FROM_DATABASE=UB82 802.11abgn - -usb:v0CDEp0027* - ID_PRODUCT_FROM_DATABASE=Sphairon Homelink 1202 802.11n Wireless Adapter [Atheros AR9170] - -usb:v0CE5* - ID_VENDOR_FROM_DATABASE=Validation Technologies International - -usb:v0CE5p0003* - ID_PRODUCT_FROM_DATABASE=Matrix - -usb:v0CE9* - ID_VENDOR_FROM_DATABASE=pico Technology - -usb:v0CE9p1001* - ID_PRODUCT_FROM_DATABASE=PicoScope3000 series PC Oscilloscope - -usb:v0CF1* - ID_VENDOR_FROM_DATABASE=e-Conn Electronic Co., Ltd - -usb:v0CF2* - ID_VENDOR_FROM_DATABASE=ENE Technology, Inc. - -usb:v0CF2p6220* - ID_PRODUCT_FROM_DATABASE=SD Card Reader (SG361) - -usb:v0CF2p6225* - ID_PRODUCT_FROM_DATABASE=SD card reader (UB6225) - -usb:v0CF2p6250* - ID_PRODUCT_FROM_DATABASE=SD card reader (UB6250) - -usb:v0CF3* - ID_VENDOR_FROM_DATABASE=Atheros Communications, Inc. - -usb:v0CF3p0001* - ID_PRODUCT_FROM_DATABASE=AR5523 - -usb:v0CF3p0002* - ID_PRODUCT_FROM_DATABASE=AR5523 (no firmware) - -usb:v0CF3p0003* - ID_PRODUCT_FROM_DATABASE=AR5523 - -usb:v0CF3p0004* - ID_PRODUCT_FROM_DATABASE=AR5523 (no firmware) - -usb:v0CF3p0005* - ID_PRODUCT_FROM_DATABASE=AR5523 - -usb:v0CF3p0006* - ID_PRODUCT_FROM_DATABASE=AR5523 (no firmware) - -usb:v0CF3p1001* - ID_PRODUCT_FROM_DATABASE=Thomson TG121N [Atheros AR9001U-(2)NG] - -usb:v0CF3p1002* - ID_PRODUCT_FROM_DATABASE=TP-Link TL-WN821N v2 802.11n [Atheros AR9170] - -usb:v0CF3p1006* - ID_PRODUCT_FROM_DATABASE=TP-Link TL-WN322G v3 / TL-WN422G v2 802.11g [Atheros AR9271] - -usb:v0CF3p1010* - ID_PRODUCT_FROM_DATABASE=3Com 3CRUSBN275 802.11abgn Wireless Adapter [Atheros AR9170] - -usb:v0CF3p20FF* - ID_PRODUCT_FROM_DATABASE=AR7010 (no firmware) - -usb:v0CF3p3000* - ID_PRODUCT_FROM_DATABASE=AR3011 Bluetooth (no firmware) - -usb:v0CF3p3002* - ID_PRODUCT_FROM_DATABASE=AR3011 Bluetooth - -usb:v0CF3p3005* - ID_PRODUCT_FROM_DATABASE=AR3011 Bluetooth - -usb:v0CF3p3008* - ID_PRODUCT_FROM_DATABASE=Bluetooth (AR3011) - -usb:v0CF3p7015* - ID_PRODUCT_FROM_DATABASE=TP-Link TL-WN821N v3 802.11n [Atheros AR7010+AR9287] - -usb:v0CF3p9170* - ID_PRODUCT_FROM_DATABASE=AR9170 802.11n - -usb:v0CF3p9271* - ID_PRODUCT_FROM_DATABASE=AR9271 802.11n - -usb:v0CF3pB002* - ID_PRODUCT_FROM_DATABASE=Ubiquiti WiFiStation 802.11n [Atheros AR9271] - -usb:v0CF3pB003* - ID_PRODUCT_FROM_DATABASE=Ubiquiti WiFiStationEXT 802.11n [Atheros AR9271] - -usb:v0CF4* - ID_VENDOR_FROM_DATABASE=Fomtex Corp. - -usb:v0CF5* - ID_VENDOR_FROM_DATABASE=Cellink Co., Ltd - -usb:v0CF6* - ID_VENDOR_FROM_DATABASE=Compucable Corp. - -usb:v0CF7* - ID_VENDOR_FROM_DATABASE=ishoni Networks - -usb:v0CF8* - ID_VENDOR_FROM_DATABASE=Clarisys, Inc. - -usb:v0CF8p0750* - ID_PRODUCT_FROM_DATABASE=Claritel-i750 - vp - -usb:v0CF9* - ID_VENDOR_FROM_DATABASE=Central System Research Co., Ltd - -usb:v0CFA* - ID_VENDOR_FROM_DATABASE=Inviso, Inc. - -usb:v0CFC* - ID_VENDOR_FROM_DATABASE=Minolta-QMS, Inc. - -usb:v0CFCp2301* - ID_PRODUCT_FROM_DATABASE=Magicolor 2300 DL - -usb:v0CFCp2350* - ID_PRODUCT_FROM_DATABASE=Magicolor 2350EN/3300 - -usb:v0CFCp3100* - ID_PRODUCT_FROM_DATABASE=Magicolor 3100 - -usb:v0CFCp7300* - ID_PRODUCT_FROM_DATABASE=Magicolor 5450/5550 - -usb:v0CFF* - ID_VENDOR_FROM_DATABASE=SAFA MEDIA Co., Ltd. - -usb:v0CFFp0320* - ID_PRODUCT_FROM_DATABASE=SR-380N - -usb:v0D06* - ID_VENDOR_FROM_DATABASE=telos EDV Systementwicklung GmbH - -usb:v0D08* - ID_VENDOR_FROM_DATABASE=UTStarcom - -usb:v0D08p0602* - ID_PRODUCT_FROM_DATABASE=DV007 [serial] - -usb:v0D08p0603* - ID_PRODUCT_FROM_DATABASE=DV007 [storage] - -usb:v0D0B* - ID_VENDOR_FROM_DATABASE=Contemporary Controls - -usb:v0D0C* - ID_VENDOR_FROM_DATABASE=Astron Electronics Co., Ltd - -usb:v0D0D* - ID_VENDOR_FROM_DATABASE=MKNet Corp. - -usb:v0D0E* - ID_VENDOR_FROM_DATABASE=Hybrid Networks, Inc. - -usb:v0D0F* - ID_VENDOR_FROM_DATABASE=Feng Shin Cable Co., Ltd - -usb:v0D10* - ID_VENDOR_FROM_DATABASE=Elastic Networks - -usb:v0D10p0001* - ID_PRODUCT_FROM_DATABASE=StormPort (WDM) - -usb:v0D11* - ID_VENDOR_FROM_DATABASE=Maspro Denkoh Corp. - -usb:v0D12* - ID_VENDOR_FROM_DATABASE=Hansol Electronics, Inc. - -usb:v0D13* - ID_VENDOR_FROM_DATABASE=BMF Corp. - -usb:v0D14* - ID_VENDOR_FROM_DATABASE=Array Comm, Inc. - -usb:v0D15* - ID_VENDOR_FROM_DATABASE=OnStream b.v. - -usb:v0D16* - ID_VENDOR_FROM_DATABASE=Hi-Touch Imaging Technologies Co., Ltd - -usb:v0D16p0001* - ID_PRODUCT_FROM_DATABASE=PhotoShuttle - -usb:v0D16p0002* - ID_PRODUCT_FROM_DATABASE=Photo Printer 730 series - -usb:v0D16p0004* - ID_PRODUCT_FROM_DATABASE=Photo Printer 63xPL/PS - -usb:v0D16p0100* - ID_PRODUCT_FROM_DATABASE=Photo Printer 63xPL/PS - -usb:v0D16p0102* - ID_PRODUCT_FROM_DATABASE=Photo Printer 64xPS - -usb:v0D16p0103* - ID_PRODUCT_FROM_DATABASE=Photo Printer 730 series - -usb:v0D16p0104* - ID_PRODUCT_FROM_DATABASE=Photo Printer 63xPL/PS - -usb:v0D16p0105* - ID_PRODUCT_FROM_DATABASE=Photo Printer 64xPS - -usb:v0D16p0200* - ID_PRODUCT_FROM_DATABASE=Photo Printer 64xDL - -usb:v0D17* - ID_VENDOR_FROM_DATABASE=NALTEC, Inc. - -usb:v0D18* - ID_VENDOR_FROM_DATABASE=coaXmedia - -usb:v0D19* - ID_VENDOR_FROM_DATABASE=Hank Connection Industrial Co., Ltd - -usb:v0D28* - ID_VENDOR_FROM_DATABASE=NXP - -usb:v0D28p0204* - ID_PRODUCT_FROM_DATABASE=LPC1768 - -usb:v0D32* - ID_VENDOR_FROM_DATABASE=Leo Hui Electric Wire & Cable Co., Ltd - -usb:v0D33* - ID_VENDOR_FROM_DATABASE=AirSpeak, Inc. - -usb:v0D34* - ID_VENDOR_FROM_DATABASE=Rearden Steel Technologies - -usb:v0D35* - ID_VENDOR_FROM_DATABASE=Dah Kun Co., Ltd - -usb:v0D3A* - ID_VENDOR_FROM_DATABASE=Posiflex Technologies, Inc. - -usb:v0D3C* - ID_VENDOR_FROM_DATABASE=Sri Cable Technology, Ltd - -usb:v0D3D* - ID_VENDOR_FROM_DATABASE=Tangtop Technology Co., Ltd - -usb:v0D3Dp0001* - ID_PRODUCT_FROM_DATABASE=HID Keyboard - -usb:v0D3E* - ID_VENDOR_FROM_DATABASE=Fitcom, inc. - -usb:v0D3F* - ID_VENDOR_FROM_DATABASE=MTS Systems Corp. - -usb:v0D40* - ID_VENDOR_FROM_DATABASE=Ascor, Inc. - -usb:v0D41* - ID_VENDOR_FROM_DATABASE=Ta Yun Terminals Industrial Co., Ltd - -usb:v0D42* - ID_VENDOR_FROM_DATABASE=Full Der Co., Ltd - -usb:v0D46* - ID_VENDOR_FROM_DATABASE=Kobil Systems GmbH - -usb:v0D46p2012* - ID_PRODUCT_FROM_DATABASE=KAAN Standard Plus (Smartcard reader) - -usb:v0D46p3003* - ID_PRODUCT_FROM_DATABASE=mIDentity Light / KAAN SIM III - -usb:v0D46p4000* - ID_PRODUCT_FROM_DATABASE=mIDentity (mass storage) - -usb:v0D46p4001* - ID_PRODUCT_FROM_DATABASE=mIDentity Basic/Classic (composite device) - -usb:v0D46p4081* - ID_PRODUCT_FROM_DATABASE=mIDentity Basic/Classic (installationless) - -usb:v0D48* - ID_VENDOR_FROM_DATABASE=Promethean Limited - -usb:v0D48p0001* - ID_PRODUCT_FROM_DATABASE=ACTIVboard - -usb:v0D48p0004* - ID_PRODUCT_FROM_DATABASE=ACTIVboard - -usb:v0D48p0100* - ID_PRODUCT_FROM_DATABASE=Audio - -usb:v0D49* - ID_VENDOR_FROM_DATABASE=Maxtor - -usb:v0D49p3000* - ID_PRODUCT_FROM_DATABASE=Drive - -usb:v0D49p3010* - ID_PRODUCT_FROM_DATABASE=3000LE Drive - -usb:v0D49p3100* - ID_PRODUCT_FROM_DATABASE=Hi-Speed USB-IDE Bridge Controller - -usb:v0D49p3200* - ID_PRODUCT_FROM_DATABASE=Personal Storage 3200 - -usb:v0D49p5000* - ID_PRODUCT_FROM_DATABASE=5000XT Drive - -usb:v0D49p5010* - ID_PRODUCT_FROM_DATABASE=5000LE Drive - -usb:v0D49p5020* - ID_PRODUCT_FROM_DATABASE=Mobile Hard Disk Drive - -usb:v0D49p7000* - ID_PRODUCT_FROM_DATABASE=OneTouch - -usb:v0D49p7010* - ID_PRODUCT_FROM_DATABASE=OneTouch - -usb:v0D49p7100* - ID_PRODUCT_FROM_DATABASE=OneTouch II 300GB External Hard Disk - -usb:v0D49p7410* - ID_PRODUCT_FROM_DATABASE=Mobile Hard Disk Drive (1TB) - -usb:v0D49p7450* - ID_PRODUCT_FROM_DATABASE=Basics Portable USB Device - -usb:v0D4A* - ID_VENDOR_FROM_DATABASE=NF Corp. - -usb:v0D4B* - ID_VENDOR_FROM_DATABASE=Grape Systems, Inc. - -usb:v0D4C* - ID_VENDOR_FROM_DATABASE=Tedas AG - -usb:v0D4D* - ID_VENDOR_FROM_DATABASE=Coherent, Inc. - -usb:v0D4E* - ID_VENDOR_FROM_DATABASE=Agere Systems Netherland BV - -usb:v0D4Ep047A* - ID_PRODUCT_FROM_DATABASE=WLAN Card - -usb:v0D4Ep1000* - ID_PRODUCT_FROM_DATABASE=Wireless Card Model 0801 - -usb:v0D4Ep1001* - ID_PRODUCT_FROM_DATABASE=Wireless Card Model 0802 - -usb:v0D4F* - ID_VENDOR_FROM_DATABASE=EADS Airbus France - -usb:v0D50* - ID_VENDOR_FROM_DATABASE=Cleware GmbH - -usb:v0D50p0011* - ID_PRODUCT_FROM_DATABASE=USB-Temp2 Thermometer - -usb:v0D51* - ID_VENDOR_FROM_DATABASE=Volex (Asia) Pte., Ltd - -usb:v0D53* - ID_VENDOR_FROM_DATABASE=HMI Co., Ltd - -usb:v0D54* - ID_VENDOR_FROM_DATABASE=Holon Corp. - -usb:v0D55* - ID_VENDOR_FROM_DATABASE=ASKA Technologies, Inc. - -usb:v0D56* - ID_VENDOR_FROM_DATABASE=AVLAB Technology, Inc. - -usb:v0D57* - ID_VENDOR_FROM_DATABASE=Solomon Microtech, Ltd - -usb:v0D5C* - ID_VENDOR_FROM_DATABASE=SMC Networks, Inc. - -usb:v0D5CpA001* - ID_PRODUCT_FROM_DATABASE=SMC2662W (v1) EZ Connect 802.11b Wireless Adapter [Atmel AT76C503A] - -usb:v0D5CpA002* - ID_PRODUCT_FROM_DATABASE=SMC2662W v2 / SMC2662W-AR / Belkin F5D6050 [Atmel at76c503a] - -usb:v0D5E* - ID_VENDOR_FROM_DATABASE=Myacom, Ltd - -usb:v0D5Ep2346* - ID_PRODUCT_FROM_DATABASE=BT Digital Access adapter - -usb:v0D5F* - ID_VENDOR_FROM_DATABASE=CSI, Inc. - -usb:v0D60* - ID_VENDOR_FROM_DATABASE=IVL Technologies, Ltd - -usb:v0D61* - ID_VENDOR_FROM_DATABASE=Meilu Electronics (Shenzhen) Co., Ltd - -usb:v0D62* - ID_VENDOR_FROM_DATABASE=Darfon Electronics Corp. - -usb:v0D62p0003* - ID_PRODUCT_FROM_DATABASE=Smartcard Reader - -usb:v0D62p0004* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v0D62p001C* - ID_PRODUCT_FROM_DATABASE=Benq X120 Internet Keyboard Pro - -usb:v0D62p0306* - ID_PRODUCT_FROM_DATABASE=M530 Mouse - -usb:v0D62p0800* - ID_PRODUCT_FROM_DATABASE=Magic Wheel - -usb:v0D62p2021* - ID_PRODUCT_FROM_DATABASE=AM805 Keyboard - -usb:v0D62p2026* - ID_PRODUCT_FROM_DATABASE=TECOM Bluetooth Device - -usb:v0D62p2050* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v0D62p2106* - ID_PRODUCT_FROM_DATABASE=Dell L20U Multimedia Keyboard - -usb:v0D62pA100* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v0D63* - ID_VENDOR_FROM_DATABASE=Fritz Gegauf AG - -usb:v0D64* - ID_VENDOR_FROM_DATABASE=DXG Technology Corp. - -usb:v0D64p0105* - ID_PRODUCT_FROM_DATABASE=Dual Mode Digital Camera 1.3M - -usb:v0D64p0107* - ID_PRODUCT_FROM_DATABASE=Horus MT-409 Camera - -usb:v0D64p0108* - ID_PRODUCT_FROM_DATABASE=Dual Mode Digital Camera - -usb:v0D64p0202* - ID_PRODUCT_FROM_DATABASE=Dual Mode Video Camera Device - -usb:v0D64p0303* - ID_PRODUCT_FROM_DATABASE=DXG-305V Camera - -usb:v0D64p1001* - ID_PRODUCT_FROM_DATABASE=SiPix Stylecam/UMAX AstraPix 320s - -usb:v0D64p1002* - ID_PRODUCT_FROM_DATABASE=Fashion Cam 01 Dual-Mode DSC (Video Camera) - -usb:v0D64p1003* - ID_PRODUCT_FROM_DATABASE=Fashion Cam Dual-Mode DSC (Controller) - -usb:v0D64p1021* - ID_PRODUCT_FROM_DATABASE=D-Link DSC 350F - -usb:v0D64p1208* - ID_PRODUCT_FROM_DATABASE=Dual Mode Still Camera Device - -usb:v0D64p2208* - ID_PRODUCT_FROM_DATABASE=Mass Storage - -usb:v0D64p3105* - ID_PRODUCT_FROM_DATABASE=Dual Mode Digital Camera Disk - -usb:v0D64p3108* - ID_PRODUCT_FROM_DATABASE=Digicam Mass Storage Device - -usb:v0D65* - ID_VENDOR_FROM_DATABASE=KMJP Co., Ltd - -usb:v0D66* - ID_VENDOR_FROM_DATABASE=TMT - -usb:v0D67* - ID_VENDOR_FROM_DATABASE=Advanet, Inc. - -usb:v0D68* - ID_VENDOR_FROM_DATABASE=Super Link Electronics Co., Ltd - -usb:v0D69* - ID_VENDOR_FROM_DATABASE=NSI - -usb:v0D6A* - ID_VENDOR_FROM_DATABASE=Megapower International Corp. - -usb:v0D6B* - ID_VENDOR_FROM_DATABASE=And-Or Logic - -usb:v0D70* - ID_VENDOR_FROM_DATABASE=Try Computer Co., Ltd - -usb:v0D71* - ID_VENDOR_FROM_DATABASE=Hirakawa Hewtech Corp. - -usb:v0D72* - ID_VENDOR_FROM_DATABASE=Winmate Communication, Inc. - -usb:v0D73* - ID_VENDOR_FROM_DATABASE=Hit's Communications, Inc. - -usb:v0D76* - ID_VENDOR_FROM_DATABASE=MFP Korea, Inc. - -usb:v0D77* - ID_VENDOR_FROM_DATABASE=Power Sentry/Newpoint - -usb:v0D78* - ID_VENDOR_FROM_DATABASE=Japan Distributor Corp. - -usb:v0D7A* - ID_VENDOR_FROM_DATABASE=MARX Datentechnik GmbH - -usb:v0D7B* - ID_VENDOR_FROM_DATABASE=Wellco Technology Co., Ltd - -usb:v0D7C* - ID_VENDOR_FROM_DATABASE=Taiwan Line Tek Electronic Co., Ltd - -usb:v0D7D* - ID_VENDOR_FROM_DATABASE=Phison Electronics Corp. - -usb:v0D7Dp0100* - ID_PRODUCT_FROM_DATABASE=PS1001/1011/1006/1026 Flash Disk - -usb:v0D7Dp0110* - ID_PRODUCT_FROM_DATABASE=Gigabyte FlexDrive - -usb:v0D7Dp0120* - ID_PRODUCT_FROM_DATABASE=Disk Pro 64MB - -usb:v0D7Dp0124* - ID_PRODUCT_FROM_DATABASE=GIGABYTE Disk - -usb:v0D7Dp0240* - ID_PRODUCT_FROM_DATABASE=I/O-Magic/Transcend 6-in-1 Card Reader - -usb:v0D7Dp110E* - ID_PRODUCT_FROM_DATABASE=NEC uPD720121/130 USB-ATA/ATAPI Bridge - -usb:v0D7Dp1240* - ID_PRODUCT_FROM_DATABASE=Apacer 6-in-1 Card Reader 2.0 - -usb:v0D7Dp1270* - ID_PRODUCT_FROM_DATABASE=Wolverine SixPac 6000 - -usb:v0D7Dp1300* - ID_PRODUCT_FROM_DATABASE=Flash Disk - -usb:v0D7Dp1320* - ID_PRODUCT_FROM_DATABASE=PS2031 Flash Disk - -usb:v0D7Dp1400* - ID_PRODUCT_FROM_DATABASE=Attache 256MB USB 2.0 Flash Drive - -usb:v0D7Dp1420* - ID_PRODUCT_FROM_DATABASE=PS2044 Pen Drive - -usb:v0D7Dp1470* - ID_PRODUCT_FROM_DATABASE=Vosonic X's-Drive II+ VP2160 - -usb:v0D7Dp1620* - ID_PRODUCT_FROM_DATABASE=USB Disk Pro - -usb:v0D7Dp1900* - ID_PRODUCT_FROM_DATABASE=USB Thumb Drive - -usb:v0D7E* - ID_VENDOR_FROM_DATABASE=American Computer & Digital Components - -usb:v0D7Ep2507* - ID_PRODUCT_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller - -usb:v0D7Ep2517* - ID_PRODUCT_FROM_DATABASE=Hi-Speed Mass Storage Device - -usb:v0D7Ep25C7* - ID_PRODUCT_FROM_DATABASE=Hi-Speed USB-to-IDE Bridge Controller - -usb:v0D7F* - ID_VENDOR_FROM_DATABASE=Essential Reality LLC - -usb:v0D7Fp0100* - ID_PRODUCT_FROM_DATABASE=P5 Glove glove controller - -usb:v0D80* - ID_VENDOR_FROM_DATABASE=H.R. Silvine Electronics, Inc. - -usb:v0D81* - ID_VENDOR_FROM_DATABASE=TechnoVision - -usb:v0D83* - ID_VENDOR_FROM_DATABASE=Think Outside, Inc. - -usb:v0D87* - ID_VENDOR_FROM_DATABASE=Dolby Laboratories Inc. - -usb:v0D89* - ID_VENDOR_FROM_DATABASE=Oz Software - -usb:v0D8A* - ID_VENDOR_FROM_DATABASE=King Jim Co., Ltd - -usb:v0D8Ap0101* - ID_PRODUCT_FROM_DATABASE=TEPRA PRO - -usb:v0D8B* - ID_VENDOR_FROM_DATABASE=Ascom Telecommunications, Ltd - -usb:v0D8C* - ID_VENDOR_FROM_DATABASE=C-Media Electronics, Inc. - -usb:v0D8Cp0001* - ID_PRODUCT_FROM_DATABASE=Audio Device - -usb:v0D8Cp0002* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v0D8Cp0003* - ID_PRODUCT_FROM_DATABASE=Sound Device - -usb:v0D8Cp0006* - ID_PRODUCT_FROM_DATABASE=Storm HP-USB500 5.1 Headset - -usb:v0D8Cp000C* - ID_PRODUCT_FROM_DATABASE=Audio Adapter - -usb:v0D8Cp000D* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v0D8Cp000E* - ID_PRODUCT_FROM_DATABASE=Audio Adapter (Planet UP-100, Genius G-Talk) - -usb:v0D8Cp001F* - ID_PRODUCT_FROM_DATABASE=CM108 Audio Controller - -usb:v0D8Cp0102* - ID_PRODUCT_FROM_DATABASE=CM106 Like Sound Device - -usb:v0D8Cp0103* - ID_PRODUCT_FROM_DATABASE=CM102-A+/102S+ Audio Controller - -usb:v0D8Cp0104* - ID_PRODUCT_FROM_DATABASE=CM103+ Audio Controller - -usb:v0D8Cp0105* - ID_PRODUCT_FROM_DATABASE=CM108 Audio Controller - -usb:v0D8Cp0107* - ID_PRODUCT_FROM_DATABASE=CM108 Audio Controller - -usb:v0D8Cp010F* - ID_PRODUCT_FROM_DATABASE=CM108 Audio Controller - -usb:v0D8Cp0115* - ID_PRODUCT_FROM_DATABASE=CM108 Audio Controller - -usb:v0D8Cp013C* - ID_PRODUCT_FROM_DATABASE=CM108 Audio Controller - -usb:v0D8Cp0201* - ID_PRODUCT_FROM_DATABASE=CM6501 - -usb:v0D8Cp5000* - ID_PRODUCT_FROM_DATABASE=Mass Storage Controller - -usb:v0D8Cp5200* - ID_PRODUCT_FROM_DATABASE=Mass Storage Controller(0D8C,5200) - -usb:v0D8CpB213* - ID_PRODUCT_FROM_DATABASE=USB Phone CM109 (aka CT2000,VPT1000) - -usb:v0D8D* - ID_VENDOR_FROM_DATABASE=Promotion & Display Technology, Ltd - -usb:v0D8Dp0234* - ID_PRODUCT_FROM_DATABASE=V-234 Composite Device - -usb:v0D8Dp0550* - ID_PRODUCT_FROM_DATABASE=V-550 Composite Device - -usb:v0D8Dp0551* - ID_PRODUCT_FROM_DATABASE=V-551 Composite Device - -usb:v0D8Dp0552* - ID_PRODUCT_FROM_DATABASE=V-552 Composite Device - -usb:v0D8Dp0651* - ID_PRODUCT_FROM_DATABASE=V-651 Composite Device - -usb:v0D8Dp0652* - ID_PRODUCT_FROM_DATABASE=V-652 Composite Device - -usb:v0D8Dp0653* - ID_PRODUCT_FROM_DATABASE=V-653 Composite Device - -usb:v0D8Dp0654* - ID_PRODUCT_FROM_DATABASE=V-654 Composite Device - -usb:v0D8Dp0655* - ID_PRODUCT_FROM_DATABASE=V-655 Composite Device - -usb:v0D8Dp0656* - ID_PRODUCT_FROM_DATABASE=V-656 Composite Device - -usb:v0D8Dp0657* - ID_PRODUCT_FROM_DATABASE=V-657 Composite Device - -usb:v0D8Dp0658* - ID_PRODUCT_FROM_DATABASE=V-658 Composite Device - -usb:v0D8Dp0659* - ID_PRODUCT_FROM_DATABASE=V-659 Composite Device - -usb:v0D8Dp0660* - ID_PRODUCT_FROM_DATABASE=V-660 Composite Device - -usb:v0D8Dp0661* - ID_PRODUCT_FROM_DATABASE=V-661 Composite Device - -usb:v0D8Dp0662* - ID_PRODUCT_FROM_DATABASE=V-662 Composite Device - -usb:v0D8Dp0850* - ID_PRODUCT_FROM_DATABASE=V-850 Composite Device - -usb:v0D8Dp0851* - ID_PRODUCT_FROM_DATABASE=V-851 Composite Device - -usb:v0D8Dp0852* - ID_PRODUCT_FROM_DATABASE=V-852 Composite Device - -usb:v0D8Dp0901* - ID_PRODUCT_FROM_DATABASE=V-901 Composite Device - -usb:v0D8Dp0902* - ID_PRODUCT_FROM_DATABASE=V-902 Composite Device - -usb:v0D8Dp0903* - ID_PRODUCT_FROM_DATABASE=V-903 Composite Device - -usb:v0D8Dp4754* - ID_PRODUCT_FROM_DATABASE=Voyager DMP Composite Device - -usb:v0D8DpBB00* - ID_PRODUCT_FROM_DATABASE=Bloomberg Composite Device - -usb:v0D8DpBB01* - ID_PRODUCT_FROM_DATABASE=Bloomberg Composite Device - -usb:v0D8DpBB02* - ID_PRODUCT_FROM_DATABASE=Bloomberg Composite Device - -usb:v0D8DpBB03* - ID_PRODUCT_FROM_DATABASE=Bloomberg Composite Device - -usb:v0D8DpBB04* - ID_PRODUCT_FROM_DATABASE=Bloomberg Composite Device - -usb:v0D8DpBB05* - ID_PRODUCT_FROM_DATABASE=Bloomberg Composite Device - -usb:v0D8DpFFFE* - ID_PRODUCT_FROM_DATABASE=Global Tuner Composite Device - -usb:v0D8DpFFFF* - ID_PRODUCT_FROM_DATABASE=Voyager DMP Composite Device - -usb:v0D8E* - ID_VENDOR_FROM_DATABASE=Global Sun Technology, Inc. - -usb:v0D8Ep0163* - ID_PRODUCT_FROM_DATABASE=802.11g 54 Mbps Wireless Dongle - -usb:v0D8Ep1621* - ID_PRODUCT_FROM_DATABASE=802.11b Wireless Adapter - -usb:v0D8Ep3762* - ID_PRODUCT_FROM_DATABASE=Cohiba 802.11g Wireless Mini adapter [Intersil ISL3887] - -usb:v0D8Ep3763* - ID_PRODUCT_FROM_DATABASE=802.11g Wireless dongle - -usb:v0D8Ep7100* - ID_PRODUCT_FROM_DATABASE=802.11b Adapter - -usb:v0D8Ep7110* - ID_PRODUCT_FROM_DATABASE=WL-210 / WU210P 802.11b Wireless Adapter [Atmel AT76C503A] - -usb:v0D8Ep7605* - ID_PRODUCT_FROM_DATABASE=TRENDnet TEW-224UB 802.11b Wireless Adapter [Atmel AT76C503A] - -usb:v0D8Ep7801* - ID_PRODUCT_FROM_DATABASE=AR5523 - -usb:v0D8Ep7802* - ID_PRODUCT_FROM_DATABASE=AR5523 (no firmware) - -usb:v0D8Ep7811* - ID_PRODUCT_FROM_DATABASE=AR5523 - -usb:v0D8Ep7812* - ID_PRODUCT_FROM_DATABASE=AR5523 (no firmware) - -usb:v0D8Ep7A01* - ID_PRODUCT_FROM_DATABASE=PRISM25 802.11b Adapter - -usb:v0D8F* - ID_VENDOR_FROM_DATABASE=Pitney Bowes - -usb:v0D90* - ID_VENDOR_FROM_DATABASE=Sure-Fire Electrical Corp. - -usb:v0D96* - ID_VENDOR_FROM_DATABASE=Skanhex Technology, Inc. - -usb:v0D96p0000* - ID_PRODUCT_FROM_DATABASE=Jenoptik JD350 video - -usb:v0D96p3300* - ID_PRODUCT_FROM_DATABASE=SX330z Camera - -usb:v0D96p4100* - ID_PRODUCT_FROM_DATABASE=SX410z Camera - -usb:v0D96p4102* - ID_PRODUCT_FROM_DATABASE=MD 9700 Camera - -usb:v0D96p4104* - ID_PRODUCT_FROM_DATABASE=Jenoptik JD-4100z3s - -usb:v0D96p410A* - ID_PRODUCT_FROM_DATABASE=Medion 9801/Novatech SX-410z - -usb:v0D96p5200* - ID_PRODUCT_FROM_DATABASE=SX-520z Camera - -usb:v0D97* - ID_VENDOR_FROM_DATABASE=Santa Barbara Instrument Group - -usb:v0D97p0001* - ID_PRODUCT_FROM_DATABASE=SBIG Astronomy Camera (without firmware) - -usb:v0D97p0101* - ID_PRODUCT_FROM_DATABASE=SBIG Astronomy Camera (with firmware) - -usb:v0D98* - ID_VENDOR_FROM_DATABASE=Mars Semiconductor Corp. - -usb:v0D98p0300* - ID_PRODUCT_FROM_DATABASE=Avaya Wireless Card - -usb:v0D98p1007* - ID_PRODUCT_FROM_DATABASE=Discovery Kids Digital Camera - -usb:v0D99* - ID_VENDOR_FROM_DATABASE=Trazer Technologies, Inc. - -usb:v0D9A* - ID_VENDOR_FROM_DATABASE=RTX Telecom AS - -usb:v0D9Ap0001* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0D9B* - ID_VENDOR_FROM_DATABASE=Tat Shing Electrical Co. - -usb:v0D9C* - ID_VENDOR_FROM_DATABASE=Chee Chen Hi-Technology Co., Ltd - -usb:v0D9D* - ID_VENDOR_FROM_DATABASE=Sanwa Supply, Inc. - -usb:v0D9E* - ID_VENDOR_FROM_DATABASE=Avaya - -usb:v0D9Ep0300* - ID_PRODUCT_FROM_DATABASE=Wireless Card - -usb:v0D9F* - ID_VENDOR_FROM_DATABASE=Powercom Co., Ltd - -usb:v0D9Fp0001* - ID_PRODUCT_FROM_DATABASE=Uninterruptible Power Supply - -usb:v0D9Fp0002* - ID_PRODUCT_FROM_DATABASE=Black Knight PRO / WOW Uninterruptible Power Supply (Cypress HID->COM RS232) - -usb:v0D9Fp00A2* - ID_PRODUCT_FROM_DATABASE=Imperial Uninterruptible Power Supply (HID PDC) - -usb:v0D9Fp00A3* - ID_PRODUCT_FROM_DATABASE=Smart King PRO Uninterruptible Power Supply (HID PDC) - -usb:v0D9Fp00A4* - ID_PRODUCT_FROM_DATABASE=WOW Uninterruptible Power Supply (HID PDC) - -usb:v0D9Fp00A5* - ID_PRODUCT_FROM_DATABASE=Vanguard Uninterruptible Power Supply (HID PDC) - -usb:v0D9Fp00A6* - ID_PRODUCT_FROM_DATABASE=Black Knight PRO Uninterruptible Power Supply (HID PDC) - -usb:v0DA0* - ID_VENDOR_FROM_DATABASE=Danger Research - -usb:v0DA1* - ID_VENDOR_FROM_DATABASE=Suzhou Peter's Precise Industrial Co., Ltd - -usb:v0DA2* - ID_VENDOR_FROM_DATABASE=Land Instruments International, Ltd - -usb:v0DA3* - ID_VENDOR_FROM_DATABASE=Nippon Electro-Sensory Devices Corp. - -usb:v0DA4* - ID_VENDOR_FROM_DATABASE=Polar Electro OY - -usb:v0DA4p0001* - ID_PRODUCT_FROM_DATABASE=Interface - -usb:v0DA7* - ID_VENDOR_FROM_DATABASE=IOGear, Inc. - -usb:v0DA8* - ID_VENDOR_FROM_DATABASE=softDSP Co., Ltd - -usb:v0DA8p0001* - ID_PRODUCT_FROM_DATABASE=SDS 200A Oscilloscope - -usb:v0DAB* - ID_VENDOR_FROM_DATABASE=Cubig Group - -usb:v0DABp0100* - ID_PRODUCT_FROM_DATABASE=DVR/CVR-M140 MP3 Player - -usb:v0DAD* - ID_VENDOR_FROM_DATABASE=Westover Scientific - -usb:v0DB0* - ID_VENDOR_FROM_DATABASE=Micro Star International - -usb:v0DB0p1020* - ID_PRODUCT_FROM_DATABASE=PC2PC WLAN Card - -usb:v0DB0p1967* - ID_PRODUCT_FROM_DATABASE=Bluetooth Dongle - -usb:v0DB0p3801* - ID_PRODUCT_FROM_DATABASE=Motorola Bluetooth 2.1+EDR Device - -usb:v0DB0p4011* - ID_PRODUCT_FROM_DATABASE=Medion Flash XL V2.0 Card Reader - -usb:v0DB0p4023* - ID_PRODUCT_FROM_DATABASE=Lexar Mobile Card Reader - -usb:v0DB0p4600* - ID_PRODUCT_FROM_DATABASE=802.11b/g Turbo Wireless Adapter - -usb:v0DB0p5501* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0DB0p5502* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0DB0p5513* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v0DB0p5515* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v0DB0p5516* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v0DB0p5580* - ID_PRODUCT_FROM_DATABASE=Mega Sky 580 DVB-T Tuner [M902x] - -usb:v0DB0p5581* - ID_PRODUCT_FROM_DATABASE=Mega Sky 580 DVB-T Tuner [GL861] - -usb:v0DB0p6823* - ID_PRODUCT_FROM_DATABASE=UB11B/MS-6823 802.11b Wi-Fi adapter - -usb:v0DB0p6826* - ID_PRODUCT_FROM_DATABASE=IEEE 802.11g Wireless Network Adapter - -usb:v0DB0p6855* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0DB0p6861* - ID_PRODUCT_FROM_DATABASE=MSI-6861 802.11g WiFi adapter - -usb:v0DB0p6865* - ID_PRODUCT_FROM_DATABASE=RT2570 - -usb:v0DB0p6869* - ID_PRODUCT_FROM_DATABASE=RT2570 - -usb:v0DB0p6874* - ID_PRODUCT_FROM_DATABASE=RT2573 - -usb:v0DB0p6877* - ID_PRODUCT_FROM_DATABASE=RT2573 - -usb:v0DB0p6881* - ID_PRODUCT_FROM_DATABASE=Bluetooth Class I EDR Device - -usb:v0DB0p688A* - ID_PRODUCT_FROM_DATABASE=Bluetooth Class I EDR Device - -usb:v0DB0p6899* - ID_PRODUCT_FROM_DATABASE=802.11bgn 1T1R Mini Card Wireless Adapter - -usb:v0DB0p6970* - ID_PRODUCT_FROM_DATABASE=MS-6970 BToes Bluetooth adapter - -usb:v0DB0p697A* - ID_PRODUCT_FROM_DATABASE=Bluetooth Dongle - -usb:v0DB0p6982* - ID_PRODUCT_FROM_DATABASE=Medion Flash XL Card Reader - -usb:v0DB0pA861* - ID_PRODUCT_FROM_DATABASE=RT2573 - -usb:v0DB0pA874* - ID_PRODUCT_FROM_DATABASE=RT2573 - -usb:v0DB0pA970* - ID_PRODUCT_FROM_DATABASE=Bluetooth dongle - -usb:v0DB0pA97A* - ID_PRODUCT_FROM_DATABASE=Bluetooth EDR Device - -usb:v0DB0pB970* - ID_PRODUCT_FROM_DATABASE=Bluetooth EDR Device - -usb:v0DB0pB97A* - ID_PRODUCT_FROM_DATABASE=Bluetooth EDR Device - -usb:v0DB1* - ID_VENDOR_FROM_DATABASE=Wen Te Electronics Co., Ltd - -usb:v0DB2* - ID_VENDOR_FROM_DATABASE=Shian Hwi Plug Parts, Plastic Factory - -usb:v0DB3* - ID_VENDOR_FROM_DATABASE=Tekram Technology Co., Ltd - -usb:v0DB4* - ID_VENDOR_FROM_DATABASE=Chung Fu Chen Yeh Enterprise Corp. - -usb:v0DB7* - ID_VENDOR_FROM_DATABASE=ELCON Systemtechnik - -usb:v0DB7p0002* - ID_PRODUCT_FROM_DATABASE=Goldpfeil P-LAN - -usb:v0DBC* - ID_VENDOR_FROM_DATABASE=A&D Medical - -usb:v0DBCp0003* - ID_PRODUCT_FROM_DATABASE=AND Serial Cable [AND Smart Cable] - -usb:v0DBE* - ID_VENDOR_FROM_DATABASE=Jiuh Shiuh Precision Industry Co., Ltd - -usb:v0DBF* - ID_VENDOR_FROM_DATABASE=Jess-Link International - -usb:v0DBFp0002* - ID_PRODUCT_FROM_DATABASE=SmartDongle Security Key - -usb:v0DBFp0200* - ID_PRODUCT_FROM_DATABASE=HDD Storage Solution - -usb:v0DBFp021B* - ID_PRODUCT_FROM_DATABASE=USB-2.0 IDE Adapter - -usb:v0DBFp0300* - ID_PRODUCT_FROM_DATABASE=Storage Adapter - -usb:v0DBFp0333* - ID_PRODUCT_FROM_DATABASE=Storage Adapter - -usb:v0DBFp0707* - ID_PRODUCT_FROM_DATABASE=ZIV Drive - -usb:v0DC0* - ID_VENDOR_FROM_DATABASE=G7 Solutions (formerly Great Notions) - -usb:v0DC1* - ID_VENDOR_FROM_DATABASE=Tamagawa Seiki Co., Ltd - -usb:v0DC3* - ID_VENDOR_FROM_DATABASE=Athena Smartcard Solutions, Inc. - -usb:v0DC3p0801* - ID_PRODUCT_FROM_DATABASE=ASEDrive III - -usb:v0DC3p0802* - ID_PRODUCT_FROM_DATABASE=ASEDrive IIIe - -usb:v0DC3p1104* - ID_PRODUCT_FROM_DATABASE=ASEDrive IIIe KB - -usb:v0DC3p1701* - ID_PRODUCT_FROM_DATABASE=ASEKey - -usb:v0DC3p1702* - ID_PRODUCT_FROM_DATABASE=ASEKey - -usb:v0DC4* - ID_VENDOR_FROM_DATABASE=Macpower Peripherals, Ltd - -usb:v0DC4p0040* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0DC4p0041* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0DC4p0042* - ID_PRODUCT_FROM_DATABASE=Mass Storage Device - -usb:v0DC4p0101* - ID_PRODUCT_FROM_DATABASE=Hi-Speed Mass Storage Device - -usb:v0DC4p020A* - ID_PRODUCT_FROM_DATABASE=Oyen Digital MiniPro 2.5" hard drive enclosure - -usb:v0DC5* - ID_VENDOR_FROM_DATABASE=SDK Co., Ltd - -usb:v0DC6* - ID_VENDOR_FROM_DATABASE=Precision Squared Technology Corp. - -usb:v0DC6p2301* - ID_PRODUCT_FROM_DATABASE=Wireless Touchpad Keyboard - -usb:v0DC7* - ID_VENDOR_FROM_DATABASE=First Cable Line, Inc. - -usb:v0DCD* - ID_VENDOR_FROM_DATABASE=NetworkFab Corp. - -usb:v0DCDp0001* - ID_PRODUCT_FROM_DATABASE=Remote Interface Adapter - -usb:v0DCDp0002* - ID_PRODUCT_FROM_DATABASE=High Bandwidth Codec - -usb:v0DD0* - ID_VENDOR_FROM_DATABASE=Access Solutions - -usb:v0DD0p1002* - ID_PRODUCT_FROM_DATABASE=Triple Talk Speech Synthesizer - -usb:v0DD1* - ID_VENDOR_FROM_DATABASE=Contek Electronics Co., Ltd - -usb:v0DD2* - ID_VENDOR_FROM_DATABASE=Power Quotient International Co., Ltd - -usb:v0DD2p0003* - ID_PRODUCT_FROM_DATABASE=Mass Storage (P) - -usb:v0DD3* - ID_VENDOR_FROM_DATABASE=MediaQ - -usb:v0DD4* - ID_VENDOR_FROM_DATABASE=Custom Engineering SPA - -usb:v0DD5* - ID_VENDOR_FROM_DATABASE=California Micro Devices - -usb:v0DD7* - ID_VENDOR_FROM_DATABASE=Kocom Co., Ltd - -usb:v0DD8* - ID_VENDOR_FROM_DATABASE=Netac Technology Co., Ltd - -usb:v0DD8p1060* - ID_PRODUCT_FROM_DATABASE=USB-CF-Card - -usb:v0DD8pE007* - ID_PRODUCT_FROM_DATABASE=OnlyDisk U222 Pendrive - -usb:v0DD8pF607* - ID_PRODUCT_FROM_DATABASE=OnlyDisk U208 1G flash drive [U-SAFE] - -usb:v0DD9* - ID_VENDOR_FROM_DATABASE=HighSpeed Surfing - -usb:v0DDA* - ID_VENDOR_FROM_DATABASE=Integrated Circuit Solution, Inc. - -usb:v0DDAp0001* - ID_PRODUCT_FROM_DATABASE=Multi-Card Reader 6in1 - -usb:v0DDAp0002* - ID_PRODUCT_FROM_DATABASE=Multi-Card Reader 7in1 - -usb:v0DDAp0003* - ID_PRODUCT_FROM_DATABASE=Flash Disk - -usb:v0DDAp0005* - ID_PRODUCT_FROM_DATABASE=Internal Multi-Card Reader 6in1 - -usb:v0DDAp0008* - ID_PRODUCT_FROM_DATABASE=SD single card reader - -usb:v0DDAp0009* - ID_PRODUCT_FROM_DATABASE=MS single card reader - -usb:v0DDAp000A* - ID_PRODUCT_FROM_DATABASE=MS+SD Dual Card Reader - -usb:v0DDAp000B* - ID_PRODUCT_FROM_DATABASE=SM single card reader - -usb:v0DDAp0101* - ID_PRODUCT_FROM_DATABASE=All-In-One Card Reader - -usb:v0DDAp0102* - ID_PRODUCT_FROM_DATABASE=All-In-One Card Reader - -usb:v0DDAp0301* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v0DDAp0302* - ID_PRODUCT_FROM_DATABASE=Multi-Card MP3 Player - -usb:v0DDAp1001* - ID_PRODUCT_FROM_DATABASE=Multi-Flash Disk - -usb:v0DDAp2001* - ID_PRODUCT_FROM_DATABASE=Multi-Card Reader - -usb:v0DDAp2002* - ID_PRODUCT_FROM_DATABASE=Q018 default PID - -usb:v0DDAp2003* - ID_PRODUCT_FROM_DATABASE=Multi-Card Reader - -usb:v0DDAp2005* - ID_PRODUCT_FROM_DATABASE=Datalux DLX-1611 16in1 Card Reader - -usb:v0DDAp2006* - ID_PRODUCT_FROM_DATABASE=All-In-One Card Reader - -usb:v0DDAp2007* - ID_PRODUCT_FROM_DATABASE=USB to ATAPI bridge - -usb:v0DDAp2008* - ID_PRODUCT_FROM_DATABASE=All-In-One Card Reader - -usb:v0DDAp2013* - ID_PRODUCT_FROM_DATABASE=SD/MS Combo Card Reader - -usb:v0DDAp2014* - ID_PRODUCT_FROM_DATABASE=SD/MS Single Card Reader - -usb:v0DDAp2023* - ID_PRODUCT_FROM_DATABASE=card reader SD/MS DEMO board with ICSI brand name (MaskROM version) - -usb:v0DDAp2024* - ID_PRODUCT_FROM_DATABASE=card reader SD/MS DEMO board with Generic brand name (MaskROM version) - -usb:v0DDAp2026* - ID_PRODUCT_FROM_DATABASE=USB2.0 Card Reader - -usb:v0DDAp2027* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Card Reader - -usb:v0DDAp2315* - ID_PRODUCT_FROM_DATABASE=UFD MP3 player (model 2) - -usb:v0DDAp2318* - ID_PRODUCT_FROM_DATABASE=UFD MP3 player (model 1) - -usb:v0DDAp2321* - ID_PRODUCT_FROM_DATABASE=UFD MP3 player - -usb:v0DDB* - ID_VENDOR_FROM_DATABASE=Tamarack, Inc. - -usb:v0DDD* - ID_VENDOR_FROM_DATABASE=Datelink Technology Co., Ltd - -usb:v0DDE* - ID_VENDOR_FROM_DATABASE=Ubicom, Inc. - -usb:v0DE0* - ID_VENDOR_FROM_DATABASE=BD Consumer Healthcare - -usb:v0DE7* - ID_VENDOR_FROM_DATABASE=USBmicro - -usb:v0DE7p0191* - ID_PRODUCT_FROM_DATABASE=U401 Interface card - -usb:v0DE7p01A5* - ID_PRODUCT_FROM_DATABASE=U421 interface card - -usb:v0DE7p01C3* - ID_PRODUCT_FROM_DATABASE=U451 relay interface card - -usb:v0DEA* - ID_VENDOR_FROM_DATABASE=UTECH Electronic (D.G.) Co., Ltd. - -usb:v0DED* - ID_VENDOR_FROM_DATABASE=Novasonics - -usb:v0DEE* - ID_VENDOR_FROM_DATABASE=Lifetime Memory Products - -usb:v0DEEp4010* - ID_PRODUCT_FROM_DATABASE=Storage Adapter - -usb:v0DEF* - ID_VENDOR_FROM_DATABASE=Full Rise Electronic Co., Ltd - -usb:v0DF4* - ID_VENDOR_FROM_DATABASE=NET&SYS - -usb:v0DF4p0201* - ID_PRODUCT_FROM_DATABASE=MNG-2005 - -usb:v0DF6* - ID_VENDOR_FROM_DATABASE=Sitecom Europe B.V. - -usb:v0DF6p0001* - ID_PRODUCT_FROM_DATABASE=C-Media VOIP Device - -usb:v0DF6p0004* - ID_PRODUCT_FROM_DATABASE=Bluetooth 2.0 Adapter 100m - -usb:v0DF6p0007* - ID_PRODUCT_FROM_DATABASE=Bluetooth 2.0 Adapter 10m - -usb:v0DF6p000B* - ID_PRODUCT_FROM_DATABASE=Bluetooth 2.0 Adapter DFU - -usb:v0DF6p000D* - ID_PRODUCT_FROM_DATABASE=WL-168 Wireless Network Adapter 54g - -usb:v0DF6p0017* - ID_PRODUCT_FROM_DATABASE=WL-182 Wireless-N Network USB Card - -usb:v0DF6p0019* - ID_PRODUCT_FROM_DATABASE=Bluetooth 2.0 adapter 10m CN-512v2 001 - -usb:v0DF6p001A* - ID_PRODUCT_FROM_DATABASE=Bluetooth 2.0 adapter 100m CN-521v2 001 - -usb:v0DF6p002B* - ID_PRODUCT_FROM_DATABASE=WL-188 Wireless Network 300N USB Adapter - -usb:v0DF6p002C* - ID_PRODUCT_FROM_DATABASE=WL-301 Wireless Network 300N USB Adapter - -usb:v0DF6p002D* - ID_PRODUCT_FROM_DATABASE=WL-302 Wireless Network 300N USB dongle - -usb:v0DF6p0036* - ID_PRODUCT_FROM_DATABASE=WL-603 Wireless Adapter - -usb:v0DF6p0039* - ID_PRODUCT_FROM_DATABASE=WL-315 Wireless-N USB Adapter - -usb:v0DF6p003B* - ID_PRODUCT_FROM_DATABASE=WL-321 Wireless USB Gaming Adapter 300N - -usb:v0DF6p003C* - ID_PRODUCT_FROM_DATABASE=WL-323 Wireless-N USB Adapter - -usb:v0DF6p003D* - ID_PRODUCT_FROM_DATABASE=WL-324 Wireless USB Adapter 300N - -usb:v0DF6p003E* - ID_PRODUCT_FROM_DATABASE=WL-343 Wireless USB Adapter 150N X1 - -usb:v0DF6p003F* - ID_PRODUCT_FROM_DATABASE=WL-608 Wireless USB Adapter 54g - -usb:v0DF6p0040* - ID_PRODUCT_FROM_DATABASE=WL-344 Wireless Adapter 300N X2 [Ralink RT3071] - -usb:v0DF6p0041* - ID_PRODUCT_FROM_DATABASE=WL-329 Wireless Dualband USB adapter 300N - -usb:v0DF6p0042* - ID_PRODUCT_FROM_DATABASE=WL-345 Wireless USB adapter 300N X3 - -usb:v0DF6p0045* - ID_PRODUCT_FROM_DATABASE=WL-353 Wireless USB Adapter 150N Nano - -usb:v0DF6p0047* - ID_PRODUCT_FROM_DATABASE=WL-352v1 Wireless USB Adapter 300N 002 - -usb:v0DF6p0048* - ID_PRODUCT_FROM_DATABASE=WL-349v1 Wireless Adapter 150N 002 [Ralink RT3070] - -usb:v0DF6p0049* - ID_PRODUCT_FROM_DATABASE=WL-356 Wireless Adapter 300N - -usb:v0DF6p004A* - ID_PRODUCT_FROM_DATABASE=WL-358v1 Wireless Micro USB Adapter 300N X3 002 - -usb:v0DF6p004B* - ID_PRODUCT_FROM_DATABASE=WL-349v3 Wireless Micro Adapter 150N X1 [Realtek RTL8192SU] - -usb:v0DF6p004C* - ID_PRODUCT_FROM_DATABASE=WL-352 802.11n Adapter [Realtek RTL8191SU] - -usb:v0DF6p0050* - ID_PRODUCT_FROM_DATABASE=WL-349v4 Wireless Micro Adapter 150N X1 [Ralink RT3370] - -usb:v0DF6p0056* - ID_PRODUCT_FROM_DATABASE=LN-031 10/100/1000 Ethernet Adapter - -usb:v0DF6p005D* - ID_PRODUCT_FROM_DATABASE=WLA-2000 v1.001 WLAN [RTL8191SU] - -usb:v0DF6p0060* - ID_PRODUCT_FROM_DATABASE=WLA-4000 802.11bgn [Ralink RT3072] - -usb:v0DF6p0062* - ID_PRODUCT_FROM_DATABASE=WLA-5000 802.11abgn [Ralink RT3572] - -usb:v0DF6p061C* - ID_PRODUCT_FROM_DATABASE=LN-028 Network USB 2.0 Adapter - -usb:v0DF6p21F4* - ID_PRODUCT_FROM_DATABASE=44 St Bluetooth Device - -usb:v0DF6p2200* - ID_PRODUCT_FROM_DATABASE=Sitecom bluetooth2.0 class 2 dongle CN-512 - -usb:v0DF6p2208* - ID_PRODUCT_FROM_DATABASE=Sitecom bluetooth2.0 class 2 dongle CN-520 - -usb:v0DF6p2209* - ID_PRODUCT_FROM_DATABASE=Sitecom bluetooth2.0 class 1 dongle CN-521 - -usb:v0DF6p9071* - ID_PRODUCT_FROM_DATABASE=WL-113 rev 1 Wireless Network USB Adapter - -usb:v0DF6p9075* - ID_PRODUCT_FROM_DATABASE=WL-117 Hi-Speed USB Adapter - -usb:v0DF6p90AC* - ID_PRODUCT_FROM_DATABASE=WL-172 Wireless Network USB Adapter 54g Turbo - -usb:v0DF6p9712* - ID_PRODUCT_FROM_DATABASE=WL-113 rev 2 Wireless Network USB Adapter - -usb:v0DF7* - ID_VENDOR_FROM_DATABASE=Mobile Action Technology, Inc. - -usb:v0DF7p0620* - ID_PRODUCT_FROM_DATABASE=MA-620 Infrared Adapter - -usb:v0DF7p0700* - ID_PRODUCT_FROM_DATABASE=MA-700 Bluetooth Adapter - -usb:v0DF7p0720* - ID_PRODUCT_FROM_DATABASE=MA-720 Bluetooth Adapter - -usb:v0DF7p0722* - ID_PRODUCT_FROM_DATABASE=Bluetooth Dongle - -usb:v0DF7p0730* - ID_PRODUCT_FROM_DATABASE=MA-730/MA-730G Bluetooth Adapter - -usb:v0DF7p0800* - ID_PRODUCT_FROM_DATABASE=Data Cable - -usb:v0DF7p0820* - ID_PRODUCT_FROM_DATABASE=Data Cable - -usb:v0DF7p0900* - ID_PRODUCT_FROM_DATABASE=MA i-gotU Travel Logger GPS - -usb:v0DF7p1800* - ID_PRODUCT_FROM_DATABASE=Generic Card Reader - -usb:v0DF7p1802* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v0DFA* - ID_VENDOR_FROM_DATABASE=Toyo Communication Equipment Co., Ltd - -usb:v0DFC* - ID_VENDOR_FROM_DATABASE=GeneralTouch Technology Co., Ltd - -usb:v0DFCp0001* - ID_PRODUCT_FROM_DATABASE=Touchscreen - -usb:v0E03* - ID_VENDOR_FROM_DATABASE=Nippon Systemware Co., Ltd - -usb:v0E08* - ID_VENDOR_FROM_DATABASE=Winbest Technology Co., Ltd - -usb:v0E0B* - ID_VENDOR_FROM_DATABASE=Amigo Technology Inc. - -usb:v0E0Bp9031* - ID_PRODUCT_FROM_DATABASE=802.11n Wireless USB Card - -usb:v0E0Bp9041* - ID_PRODUCT_FROM_DATABASE=802.11n Wireless USB Card - -usb:v0E0C* - ID_VENDOR_FROM_DATABASE=Gesytec - -usb:v0E0Cp0101* - ID_PRODUCT_FROM_DATABASE=LonUSB LonTalk Network Adapter - -usb:v0E0F* - ID_VENDOR_FROM_DATABASE=VMware, Inc. - -usb:v0E0Fp0001* - ID_PRODUCT_FROM_DATABASE=Device - -usb:v0E0Fp0002* - ID_PRODUCT_FROM_DATABASE=Virtual USB Hub - -usb:v0E0Fp0003* - ID_PRODUCT_FROM_DATABASE=Virtual Mouse - -usb:v0E0Fp0004* - ID_PRODUCT_FROM_DATABASE=Virtual CCID - -usb:v0E0Fp0005* - ID_PRODUCT_FROM_DATABASE=Virtual Mass Storage - -usb:v0E0Fp0006* - ID_PRODUCT_FROM_DATABASE=Virtual Keyboard - -usb:v0E0FpF80A* - ID_PRODUCT_FROM_DATABASE=Smoker FX2 - -usb:v0E16* - ID_VENDOR_FROM_DATABASE=JMTek, LLC - -usb:v0E17* - ID_VENDOR_FROM_DATABASE=Walex Electronic, Ltd - -usb:v0E1A* - ID_VENDOR_FROM_DATABASE=Unisys - -usb:v0E1B* - ID_VENDOR_FROM_DATABASE=Crewave - -usb:v0E20* - ID_VENDOR_FROM_DATABASE=Pegasus Technologies Ltd. - -usb:v0E20p0101* - ID_PRODUCT_FROM_DATABASE=NoteTaker - -usb:v0E21* - ID_VENDOR_FROM_DATABASE=Cowon Systems, Inc. - -usb:v0E21p0300* - ID_PRODUCT_FROM_DATABASE=iAudio CW200 - -usb:v0E21p0400* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v0E21p0500* - ID_PRODUCT_FROM_DATABASE=iAudio M3 - -usb:v0E21p0510* - ID_PRODUCT_FROM_DATABASE=iAudio X5, subpack USB port - -usb:v0E21p0513* - ID_PRODUCT_FROM_DATABASE=iAudio X5, side USB port - -usb:v0E21p0520* - ID_PRODUCT_FROM_DATABASE=iAudio M5, side USB port - -usb:v0E21p0601* - ID_PRODUCT_FROM_DATABASE=iAudio G3 - -usb:v0E21p0681* - ID_PRODUCT_FROM_DATABASE=iAUDIO E2 - -usb:v0E21p0700* - ID_PRODUCT_FROM_DATABASE=iAudio U3 - -usb:v0E21p0751* - ID_PRODUCT_FROM_DATABASE=iAudio 7 - -usb:v0E21p0760* - ID_PRODUCT_FROM_DATABASE=iAUDIO U5 / iAUDIO G2 - -usb:v0E21p0800* - ID_PRODUCT_FROM_DATABASE=Cowon D2 (UMS mode) - -usb:v0E21p0801* - ID_PRODUCT_FROM_DATABASE=Cowon D2 (MTP mode) - -usb:v0E21p0910* - ID_PRODUCT_FROM_DATABASE=iAUDIO 9 - -usb:v0E21p0920* - ID_PRODUCT_FROM_DATABASE=J3 - -usb:v0E22* - ID_VENDOR_FROM_DATABASE=Symbian Ltd. - -usb:v0E23* - ID_VENDOR_FROM_DATABASE=Liou Yuane Enterprise Co., Ltd - -usb:v0E25* - ID_VENDOR_FROM_DATABASE=VinChip Systems, Inc. - -usb:v0E26* - ID_VENDOR_FROM_DATABASE=J-Phone East Co., Ltd - -usb:v0E30* - ID_VENDOR_FROM_DATABASE=HeartMath LLC - -usb:v0E34* - ID_VENDOR_FROM_DATABASE=Micro Computer Control Corp. - -usb:v0E35* - ID_VENDOR_FROM_DATABASE=3Pea Technologies, Inc. - -usb:v0E36* - ID_VENDOR_FROM_DATABASE=TiePie engineering - -usb:v0E36p0008* - ID_PRODUCT_FROM_DATABASE=Handyscope HS3 - -usb:v0E36p0009* - ID_PRODUCT_FROM_DATABASE=Handyscope HS3 (br) - -usb:v0E36p000A* - ID_PRODUCT_FROM_DATABASE=Handyscope HS4 - -usb:v0E36p000B* - ID_PRODUCT_FROM_DATABASE=Handyscope HS4 (br) - -usb:v0E36p000E* - ID_PRODUCT_FROM_DATABASE=Handyscope HS4-DIFF - -usb:v0E36p000F* - ID_PRODUCT_FROM_DATABASE=Handyscope HS4-DIFF (br) - -usb:v0E36p0010* - ID_PRODUCT_FROM_DATABASE=Handyscope HS2 - -usb:v0E36p0011* - ID_PRODUCT_FROM_DATABASE=TiePieSCOPE HS805 (br) - -usb:v0E36p0012* - ID_PRODUCT_FROM_DATABASE=TiePieSCOPE HS805 - -usb:v0E36p0013* - ID_PRODUCT_FROM_DATABASE=Handyprobe HP3 - -usb:v0E36p0014* - ID_PRODUCT_FROM_DATABASE=Handyprobe HP3 - -usb:v0E36p0018* - ID_PRODUCT_FROM_DATABASE=Handyprobe HP2 - -usb:v0E36p001B* - ID_PRODUCT_FROM_DATABASE=Handyscope HS5 - -usb:v0E36p0042* - ID_PRODUCT_FROM_DATABASE=TiePieSCOPE HS801 - -usb:v0E36p00FD* - ID_PRODUCT_FROM_DATABASE=USB To Parallel adapter - -usb:v0E36p00FE* - ID_PRODUCT_FROM_DATABASE=USB To Parallel adapter - -usb:v0E38* - ID_VENDOR_FROM_DATABASE=Stratitec, Inc. - -usb:v0E39* - ID_VENDOR_FROM_DATABASE=Smart Modular Technologies, Inc. - -usb:v0E39p0137* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v0E3A* - ID_VENDOR_FROM_DATABASE=Neostar Technology Co., Ltd - -usb:v0E3Ap1100* - ID_PRODUCT_FROM_DATABASE=CW-1100 Wireless Network Adapter - -usb:v0E3B* - ID_VENDOR_FROM_DATABASE=Mansella, Ltd - -usb:v0E41* - ID_VENDOR_FROM_DATABASE=Line6, Inc. - -usb:v0E41p4147* - ID_PRODUCT_FROM_DATABASE=TonePort GX - -usb:v0E41p414D* - ID_PRODUCT_FROM_DATABASE=Pod HD500 - -usb:v0E41p4156* - ID_PRODUCT_FROM_DATABASE=POD HD Desktop - -usb:v0E41p4250* - ID_PRODUCT_FROM_DATABASE=BassPODxt - -usb:v0E41p4252* - ID_PRODUCT_FROM_DATABASE=BassPODxt Pro - -usb:v0E41p4642* - ID_PRODUCT_FROM_DATABASE=BassPODxt Live - -usb:v0E41p4650* - ID_PRODUCT_FROM_DATABASE=PODxt Live - -usb:v0E41p4750* - ID_PRODUCT_FROM_DATABASE=GuitarPort - -usb:v0E41p5044* - ID_PRODUCT_FROM_DATABASE=PODxt - -usb:v0E41p5050* - ID_PRODUCT_FROM_DATABASE=PODxt Pro - -usb:v0E41p534D* - ID_PRODUCT_FROM_DATABASE=SeaMonkey - -usb:v0E44* - ID_VENDOR_FROM_DATABASE=Sun-Riseful Technology Co., Ltd. - -usb:v0E48* - ID_VENDOR_FROM_DATABASE=Julia Corp., Ltd - -usb:v0E48p0100* - ID_PRODUCT_FROM_DATABASE=CardPro SmartCard Reader - -usb:v0E4A* - ID_VENDOR_FROM_DATABASE=Shenzhen Bao Hing Electric Wire & Cable Mfr. Co. - -usb:v0E4C* - ID_VENDOR_FROM_DATABASE=Radica Games, Ltd - -usb:v0E4Cp1097* - ID_PRODUCT_FROM_DATABASE=Gamester Controller - -usb:v0E4Cp2390* - ID_PRODUCT_FROM_DATABASE=Games Jtech Controller - -usb:v0E4Cp7288* - ID_PRODUCT_FROM_DATABASE=funkey reader - -usb:v0E50* - ID_VENDOR_FROM_DATABASE=TechnoData Interware - -usb:v0E50p0002* - ID_PRODUCT_FROM_DATABASE=Matrixlock Dongle (HID) - -usb:v0E55* - ID_VENDOR_FROM_DATABASE=Speed Dragon Multimedia, Ltd - -usb:v0E55p110A* - ID_PRODUCT_FROM_DATABASE=Tanic S110-SG1 + ISSC IS1002N [Slow Infra-Red (SIR) & Bluetooth 1.2 (Class 2) Adapter] - -usb:v0E55p110B* - ID_PRODUCT_FROM_DATABASE=MS3303H USB-to-Serial Bridge - -usb:v0E56* - ID_VENDOR_FROM_DATABASE=Kingston Technology Company, Inc. - -usb:v0E56p6021* - ID_PRODUCT_FROM_DATABASE=K-PEX 100 - -usb:v0E5A* - ID_VENDOR_FROM_DATABASE=Active Co., Ltd - -usb:v0E5B* - ID_VENDOR_FROM_DATABASE=Union Power Information Industrial Co., Ltd - -usb:v0E5C* - ID_VENDOR_FROM_DATABASE=Bitland Information Technology Co., Ltd - -usb:v0E5Cp6118* - ID_PRODUCT_FROM_DATABASE=LCD Device - -usb:v0E5Cp6119* - ID_PRODUCT_FROM_DATABASE=remote receive and control device - -usb:v0E5Cp6441* - ID_PRODUCT_FROM_DATABASE=C-Media Sound Device - -usb:v0E5D* - ID_VENDOR_FROM_DATABASE=Neltron Industrial Co., Ltd - -usb:v0E5E* - ID_VENDOR_FROM_DATABASE=Conwise Technology Co., Ltd. - -usb:v0E5Ep6622* - ID_PRODUCT_FROM_DATABASE=CW6622 - -usb:v0E66* - ID_VENDOR_FROM_DATABASE=Hawking Technologies - -usb:v0E66p0001* - ID_PRODUCT_FROM_DATABASE=HWUN1 Hi-Gain Wireless-300N Adapter w/ Upgradable Antenna [Ralink RT2870] - -usb:v0E66p0003* - ID_PRODUCT_FROM_DATABASE=HWDN1 Hi-Gain Wireless-300N Dish Adapter [Ralink RT2870] - -usb:v0E66p0009* - ID_PRODUCT_FROM_DATABASE=HWUN2 Hi-Gain Wireless-150N Adapter w/ Upgradable Antenna [Ralink RT2770] - -usb:v0E66p000B* - ID_PRODUCT_FROM_DATABASE=HWDN2 Hi-Gain Wireless-150N Dish Adapter [Ralink RT2770] - -usb:v0E66p0013* - ID_PRODUCT_FROM_DATABASE=HWUN3 Hi-Gain Wireless-N Adapter [Ralink RT3070] - -usb:v0E66p0015* - ID_PRODUCT_FROM_DATABASE=HWDN2 Rev. E Hi-Gain Wireless-150N Dish Adapter [Realtek RTL8191SU] - -usb:v0E66p0017* - ID_PRODUCT_FROM_DATABASE=HAWNU1 Hi-Gain Wireless-150N Network Adapter with Range Amplifier [Ralink RT3070] - -usb:v0E66p0018* - ID_PRODUCT_FROM_DATABASE=Wireless-N Network Adapter [Ralink RT2870] - -usb:v0E66p400B* - ID_PRODUCT_FROM_DATABASE=UF100 10/100 Network Adapter - -usb:v0E66p400C* - ID_PRODUCT_FROM_DATABASE=UF100 Ethernet [pegasus2] - -usb:v0E67* - ID_VENDOR_FROM_DATABASE=Fossil, Inc. - -usb:v0E67p0002* - ID_PRODUCT_FROM_DATABASE=Wrist PDA - -usb:v0E6A* - ID_VENDOR_FROM_DATABASE=Megawin Technology Co., Ltd - -usb:v0E6Ap0101* - ID_PRODUCT_FROM_DATABASE=MA100 [USB-UART Bridge IC] - -usb:v0E6Ap6001* - ID_PRODUCT_FROM_DATABASE=GEMBIRD Flexible keyboard KB-109F-B-DE - -usb:v0E6F* - ID_VENDOR_FROM_DATABASE=Logic3 - -usb:v0E6Fp0003* - ID_PRODUCT_FROM_DATABASE=Freebird wireless Controller - -usb:v0E6Fp0005* - ID_PRODUCT_FROM_DATABASE=Eclipse wireless Controller - -usb:v0E6Fp0006* - ID_PRODUCT_FROM_DATABASE=Edge wireless Controller - -usb:v0E70* - ID_VENDOR_FROM_DATABASE=Tokyo Electronic Industry Co., Ltd - -usb:v0E72* - ID_VENDOR_FROM_DATABASE=Hsi-Chin Electronics Co., Ltd - -usb:v0E75* - ID_VENDOR_FROM_DATABASE=TVS Electronics, Ltd - -usb:v0E79* - ID_VENDOR_FROM_DATABASE=Archos, Inc. - -usb:v0E79p1106* - ID_PRODUCT_FROM_DATABASE=Pocket Media Assistant - PMA400 - -usb:v0E79p1204* - ID_PRODUCT_FROM_DATABASE=Gmini XS 200 - -usb:v0E79p1306* - ID_PRODUCT_FROM_DATABASE=504 Portable Multimedia Player - -usb:v0E79p1330* - ID_PRODUCT_FROM_DATABASE=5 Tablet - -usb:v0E79p1332* - ID_PRODUCT_FROM_DATABASE=5 IMT - -usb:v0E79p1416* - ID_PRODUCT_FROM_DATABASE=32 IT - -usb:v0E79p1417* - ID_PRODUCT_FROM_DATABASE=A43 IT - -usb:v0E79p150E* - ID_PRODUCT_FROM_DATABASE=80 G9 - -usb:v0E7B* - ID_VENDOR_FROM_DATABASE=On-Tech Industry Co., Ltd - -usb:v0E7E* - ID_VENDOR_FROM_DATABASE=Gmate, Inc. - -usb:v0E7Ep0001* - ID_PRODUCT_FROM_DATABASE=Yopy 3000 PDA - -usb:v0E7Ep1001* - ID_PRODUCT_FROM_DATABASE=YP3X00 PDA - -usb:v0E82* - ID_VENDOR_FROM_DATABASE=Ching Tai Electric Wire & Cable Co., Ltd - -usb:v0E83* - ID_VENDOR_FROM_DATABASE=Shin An Wire & Cable Co. - -usb:v0E8C* - ID_VENDOR_FROM_DATABASE=Well Force Electronic Co., Ltd - -usb:v0E8D* - ID_VENDOR_FROM_DATABASE=MediaTek Inc. - -usb:v0E8Dp0003* - ID_PRODUCT_FROM_DATABASE=MT6227 phone - -usb:v0E8Dp0004* - ID_PRODUCT_FROM_DATABASE=MT6227 phone - -usb:v0E8Dp0023* - ID_PRODUCT_FROM_DATABASE=S103 - -usb:v0E8Dp1806* - ID_PRODUCT_FROM_DATABASE=Samsung SE-208AB Slim Portable DVD Writer - -usb:v0E8Dp1836* - ID_PRODUCT_FROM_DATABASE=Samsung SE-S084 Super WriteMaster Slim External DVD writer - -usb:v0E8Dp3329* - ID_PRODUCT_FROM_DATABASE=Qstarz BT-Q1000XT - -usb:v0E8F* - ID_VENDOR_FROM_DATABASE=GreenAsia Inc. - -usb:v0E8Fp0003* - ID_PRODUCT_FROM_DATABASE=MaxFire Blaze2 - -usb:v0E8Fp0012* - ID_PRODUCT_FROM_DATABASE=USB Wireless 2.4GHz Gamepad - -usb:v0E8Fp0016* - ID_PRODUCT_FROM_DATABASE=4 port USB 1.1 hub UH-174 - -usb:v0E8Fp0020* - ID_PRODUCT_FROM_DATABASE=USB to PS/2 Adapter - -usb:v0E8Fp0021* - ID_PRODUCT_FROM_DATABASE=Multimedia Keyboard Controller - -usb:v0E8Fp0201* - ID_PRODUCT_FROM_DATABASE=SmartJoy Frag Xpad/PS2 adaptor - -usb:v0E90* - ID_VENDOR_FROM_DATABASE=WiebeTech, LLC - -usb:v0E90p0100* - ID_PRODUCT_FROM_DATABASE=Storage Adapter V1 - -usb:v0E91* - ID_VENDOR_FROM_DATABASE=VTech Engineering Canada, Ltd - -usb:v0E92* - ID_VENDOR_FROM_DATABASE=C's Glory Enterprise Co., Ltd - -usb:v0E93* - ID_VENDOR_FROM_DATABASE=eM Technics Co., Ltd - -usb:v0E95* - ID_VENDOR_FROM_DATABASE=Future Technology Co., Ltd - -usb:v0E96* - ID_VENDOR_FROM_DATABASE=Aplux Communications, Ltd - -usb:v0E96pC001* - ID_PRODUCT_FROM_DATABASE=TRUST 380 USB2 SPACEC@M - -usb:v0E97* - ID_VENDOR_FROM_DATABASE=Fingerworks, Inc. - -usb:v0E97p0908* - ID_PRODUCT_FROM_DATABASE=Composite HID (Keyboard and Mouse) - -usb:v0E98* - ID_VENDOR_FROM_DATABASE=Advanced Analogic Technologies, Inc. - -usb:v0E99* - ID_VENDOR_FROM_DATABASE=Parallel Dice Co., Ltd - -usb:v0E9A* - ID_VENDOR_FROM_DATABASE=TA HSING Industries, Ltd - -usb:v0E9B* - ID_VENDOR_FROM_DATABASE=ADTEC Corp. - -usb:v0E9C* - ID_VENDOR_FROM_DATABASE=Streamzap, Inc. - -usb:v0E9Cp0000* - ID_PRODUCT_FROM_DATABASE=Streamzap Remote Control - -usb:v0E9F* - ID_VENDOR_FROM_DATABASE=Tamura Corp. - -usb:v0EA0* - ID_VENDOR_FROM_DATABASE=Ours Technology, Inc. - -usb:v0EA0p2126* - ID_PRODUCT_FROM_DATABASE=7-in-1 Card Reader - -usb:v0EA0p2153* - ID_PRODUCT_FROM_DATABASE=SD Card Reader Key - -usb:v0EA0p2168* - ID_PRODUCT_FROM_DATABASE=Transcend JetFlash 2.0 / Astone USB Drive - -usb:v0EA0p6803* - ID_PRODUCT_FROM_DATABASE=OTI-6803 Flash Disk - -usb:v0EA0p6808* - ID_PRODUCT_FROM_DATABASE=OTI-6808 Flash Disk - -usb:v0EA0p6828* - ID_PRODUCT_FROM_DATABASE=OTI-6828 Flash Disk - -usb:v0EA0p6858* - ID_PRODUCT_FROM_DATABASE=OTi-6858 serial adapter - -usb:v0EA6* - ID_VENDOR_FROM_DATABASE=Nihon Computer Co., Ltd - -usb:v0EA7* - ID_VENDOR_FROM_DATABASE=MSL Enterprises Corp. - -usb:v0EA8* - ID_VENDOR_FROM_DATABASE=CenDyne, Inc. - -usb:v0EAD* - ID_VENDOR_FROM_DATABASE=Humax Co., Ltd - -usb:v0EB0* - ID_VENDOR_FROM_DATABASE=NovaTech - -usb:v0EB0p9020* - ID_PRODUCT_FROM_DATABASE=NovaTech NV-902W - -usb:v0EB0p9021* - ID_PRODUCT_FROM_DATABASE=RT2573 - -usb:v0EB1* - ID_VENDOR_FROM_DATABASE=WIS Technologies, Inc. - -usb:v0EB1p6666* - ID_PRODUCT_FROM_DATABASE=WinFast WalkieTV TV Loader - -usb:v0EB1p6668* - ID_PRODUCT_FROM_DATABASE=WinFast WalkieTV TV Loader - -usb:v0EB1p7007* - ID_PRODUCT_FROM_DATABASE=WinFast WalkieTV WDM Capture - -usb:v0EB2* - ID_VENDOR_FROM_DATABASE=Y-S Electronic Co., Ltd - -usb:v0EB3* - ID_VENDOR_FROM_DATABASE=Saint Technology Corp. - -usb:v0EB7* - ID_VENDOR_FROM_DATABASE=Endor AG - -usb:v0EB8* - ID_VENDOR_FROM_DATABASE=Mettler Toledo - -usb:v0EB8pF000* - ID_PRODUCT_FROM_DATABASE=PS60 Scale - -usb:v0EBE* - ID_VENDOR_FROM_DATABASE=VWeb Corp. - -usb:v0EBF* - ID_VENDOR_FROM_DATABASE=Omega Technology of Taiwan, Inc. - -usb:v0EC0* - ID_VENDOR_FROM_DATABASE=LHI Technology (China) Co., Ltd - -usb:v0EC1* - ID_VENDOR_FROM_DATABASE=Abit Computer Corp. - -usb:v0EC2* - ID_VENDOR_FROM_DATABASE=Sweetray Industrial, Ltd - -usb:v0EC3* - ID_VENDOR_FROM_DATABASE=Axell Co., Ltd - -usb:v0EC4* - ID_VENDOR_FROM_DATABASE=Ballracing Developments, Ltd - -usb:v0EC5* - ID_VENDOR_FROM_DATABASE=GT Information System Co., Ltd - -usb:v0EC6* - ID_VENDOR_FROM_DATABASE=InnoVISION Multimedia, Ltd - -usb:v0EC7* - ID_VENDOR_FROM_DATABASE=Theta Link Corp. - -usb:v0EC7p1008* - ID_PRODUCT_FROM_DATABASE=So., Show 301 Digital Camera - -usb:v0ECD* - ID_VENDOR_FROM_DATABASE=Lite-On IT Corp. - -usb:v0ECDp1400* - ID_PRODUCT_FROM_DATABASE=CD\RW 40X - -usb:v0ECDpA100* - ID_PRODUCT_FROM_DATABASE=LDW-411SX DVD/CD Rewritable Drive - -usb:v0ECE* - ID_VENDOR_FROM_DATABASE=TaiSol Electronics Co., Ltd - -usb:v0ECF* - ID_VENDOR_FROM_DATABASE=Phogenix Imaging, LLC - -usb:v0ED1* - ID_VENDOR_FROM_DATABASE=WinMaxGroup - -usb:v0ED1p6660* - ID_PRODUCT_FROM_DATABASE=Flash Disk 64M-C - -usb:v0ED1p6680* - ID_PRODUCT_FROM_DATABASE=Flash Disk 64M-B - -usb:v0ED1p7634* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v0ED2* - ID_VENDOR_FROM_DATABASE=Kyoto Micro Computer Co., Ltd - -usb:v0ED3* - ID_VENDOR_FROM_DATABASE=Wing-Tech Enterprise Co., Ltd - -usb:v0ED5* - ID_VENDOR_FROM_DATABASE=Fiberbyte - -usb:v0ED5pE000* - ID_PRODUCT_FROM_DATABASE=USB-inSync Device - -usb:v0ED5pF000* - ID_PRODUCT_FROM_DATABASE=Fiberbyte USB-inSync Device - -usb:v0ED5pF201* - ID_PRODUCT_FROM_DATABASE=Fiberbyte USB-inSync DAQ-2500X - -usb:v0EDA* - ID_VENDOR_FROM_DATABASE=Noriake Itron Corp. - -usb:v0EDF* - ID_VENDOR_FROM_DATABASE=e-MDT Co., Ltd - -usb:v0EDFp2060* - ID_PRODUCT_FROM_DATABASE=FID irock! 100 Series - -usb:v0EE0* - ID_VENDOR_FROM_DATABASE=Shima Seiki Mfg., Ltd - -usb:v0EE1* - ID_VENDOR_FROM_DATABASE=Sarotech Co., Ltd - -usb:v0EE2* - ID_VENDOR_FROM_DATABASE=AMI Semiconductor, Inc. - -usb:v0EE3* - ID_VENDOR_FROM_DATABASE=ComTrue Technology Corp. - -usb:v0EE3p1000* - ID_PRODUCT_FROM_DATABASE=Image Tank 1.5 - -usb:v0EE4* - ID_VENDOR_FROM_DATABASE=Sunrich Technology, Ltd - -usb:v0EEE* - ID_VENDOR_FROM_DATABASE=Digital Stream Technology, Inc. - -usb:v0EEEp8810* - ID_PRODUCT_FROM_DATABASE=Mass Storage Drive - -usb:v0EEF* - ID_VENDOR_FROM_DATABASE=D-WAV Scientific Co., Ltd - -usb:v0EEFp0001* - ID_PRODUCT_FROM_DATABASE=eGalax TouchScreen - -usb:v0EEFp0002* - ID_PRODUCT_FROM_DATABASE=Touchscreen Controller(Professional) - -usb:v0EF0* - ID_VENDOR_FROM_DATABASE=Hitachi Cable, Ltd - -usb:v0EF1* - ID_VENDOR_FROM_DATABASE=Aichi Micro Intelligent Corp. - -usb:v0EF2* - ID_VENDOR_FROM_DATABASE=I/O Magic Corp. - -usb:v0EF3* - ID_VENDOR_FROM_DATABASE=Lynn Products, Inc. - -usb:v0EF4* - ID_VENDOR_FROM_DATABASE=DSI Datotech - -usb:v0EF5* - ID_VENDOR_FROM_DATABASE=PointChips - -usb:v0EF5p2202* - ID_PRODUCT_FROM_DATABASE=Flash Disk - -usb:v0EF5p2366* - ID_PRODUCT_FROM_DATABASE=Flash Disk - -usb:v0EF6* - ID_VENDOR_FROM_DATABASE=Yield Microelectronics Corp. - -usb:v0EF7* - ID_VENDOR_FROM_DATABASE=SM Tech Co., Ltd (Tulip) - -usb:v0EFD* - ID_VENDOR_FROM_DATABASE=Oasis Semiconductor - -usb:v0EFE* - ID_VENDOR_FROM_DATABASE=Wem Technology, Inc. - -usb:v0F03* - ID_VENDOR_FROM_DATABASE=Unitek UPS Systems - -usb:v0F03p0001* - ID_PRODUCT_FROM_DATABASE=Alpha 1200Sx - -usb:v0F06* - ID_VENDOR_FROM_DATABASE=Visual Frontier Enterprise Co., Ltd - -usb:v0F08* - ID_VENDOR_FROM_DATABASE=CSL Wire & Plug (Shen Zhen) Co. - -usb:v0F0C* - ID_VENDOR_FROM_DATABASE=CAS Corp. - -usb:v0F0D* - ID_VENDOR_FROM_DATABASE=Hori Co., Ltd - -usb:v0F0Dp0011* - ID_PRODUCT_FROM_DATABASE=Real Arcade Pro 3 - -usb:v0F0E* - ID_VENDOR_FROM_DATABASE=Energy Full Corp. - -usb:v0F11* - ID_VENDOR_FROM_DATABASE=LD Didactic GmbH - -usb:v0F11p1000* - ID_PRODUCT_FROM_DATABASE=CASSY-S - -usb:v0F11p1010* - ID_PRODUCT_FROM_DATABASE=Pocket-CASSY - -usb:v0F11p1020* - ID_PRODUCT_FROM_DATABASE=Mobile-CASSY - -usb:v0F11p1080* - ID_PRODUCT_FROM_DATABASE=Joule and Wattmeter - -usb:v0F11p1081* - ID_PRODUCT_FROM_DATABASE=Digital Multimeter P - -usb:v0F11p1090* - ID_PRODUCT_FROM_DATABASE=UMI P - -usb:v0F11p1100* - ID_PRODUCT_FROM_DATABASE=X-Ray Apparatus - -usb:v0F11p1101* - ID_PRODUCT_FROM_DATABASE=X-Ray Apparatus - -usb:v0F11p1200* - ID_PRODUCT_FROM_DATABASE=VideoCom - -usb:v0F11p2000* - ID_PRODUCT_FROM_DATABASE=COM3LAB - -usb:v0F11p2010* - ID_PRODUCT_FROM_DATABASE=Terminal Adapter - -usb:v0F11p2020* - ID_PRODUCT_FROM_DATABASE=Network Analyser - -usb:v0F11p2030* - ID_PRODUCT_FROM_DATABASE=Converter Control Unit - -usb:v0F11p2040* - ID_PRODUCT_FROM_DATABASE=Machine Test System - -usb:v0F12* - ID_VENDOR_FROM_DATABASE=Mars Engineering Corp. - -usb:v0F13* - ID_VENDOR_FROM_DATABASE=Acetek Technology Co., Ltd - -usb:v0F18* - ID_VENDOR_FROM_DATABASE=Finger Lakes Instrumentation - -usb:v0F18p0002* - ID_PRODUCT_FROM_DATABASE=CCD - -usb:v0F18p0006* - ID_PRODUCT_FROM_DATABASE=Focuser - -usb:v0F18p0007* - ID_PRODUCT_FROM_DATABASE=Filter Wheel - -usb:v0F18p000A* - ID_PRODUCT_FROM_DATABASE=ProLine CCD - -usb:v0F18p000B* - ID_PRODUCT_FROM_DATABASE=Color Filter Wheel 4 - -usb:v0F18p000C* - ID_PRODUCT_FROM_DATABASE=PDF2 - -usb:v0F18p000D* - ID_PRODUCT_FROM_DATABASE=Guider - -usb:v0F19* - ID_VENDOR_FROM_DATABASE=Oracom Co., Ltd - -usb:v0F1B* - ID_VENDOR_FROM_DATABASE=Onset Computer Corp. - -usb:v0F1C* - ID_VENDOR_FROM_DATABASE=Funai Electric Co., Ltd - -usb:v0F1D* - ID_VENDOR_FROM_DATABASE=Iwill Corp. - -usb:v0F21* - ID_VENDOR_FROM_DATABASE=IOI Technology Corp. - -usb:v0F22* - ID_VENDOR_FROM_DATABASE=Senior Industries, Inc. - -usb:v0F23* - ID_VENDOR_FROM_DATABASE=Leader Tech Manufacturer Co., Ltd - -usb:v0F24* - ID_VENDOR_FROM_DATABASE=Flex-P Industries, Snd., Bhd. - -usb:v0F2D* - ID_VENDOR_FROM_DATABASE=ViPower, Inc. - -usb:v0F2E* - ID_VENDOR_FROM_DATABASE=Geniality Maple Technology Co., Ltd - -usb:v0F2F* - ID_VENDOR_FROM_DATABASE=Priva Design Services - -usb:v0F30* - ID_VENDOR_FROM_DATABASE=Jess Technology Co., Ltd - -usb:v0F30p001C* - ID_PRODUCT_FROM_DATABASE=PS3 Guitar Controller Dongle - -usb:v0F30p0110* - ID_PRODUCT_FROM_DATABASE=Dual Analog Rumble Pad - -usb:v0F30p0111* - ID_PRODUCT_FROM_DATABASE=Colour Rumble Pad - -usb:v0F30p0208* - ID_PRODUCT_FROM_DATABASE=Xbox & PC Gamepad - -usb:v0F31* - ID_VENDOR_FROM_DATABASE=Chrysalis Development - -usb:v0F32* - ID_VENDOR_FROM_DATABASE=YFC-BonEagle Electric Co., Ltd - -usb:v0F37* - ID_VENDOR_FROM_DATABASE=Kokuyo Co., Ltd - -usb:v0F38* - ID_VENDOR_FROM_DATABASE=Nien-Yi Industrial Corp. - -usb:v0F3D* - ID_VENDOR_FROM_DATABASE=Airprime, Incorporated - -usb:v0F3Dp0112* - ID_PRODUCT_FROM_DATABASE=CDMA 1xEVDO PC Card, PC 5220 - -usb:v0F41* - ID_VENDOR_FROM_DATABASE=RDC Semiconductor Co., Ltd - -usb:v0F42* - ID_VENDOR_FROM_DATABASE=Nital Consulting Services, Inc. - -usb:v0F44* - ID_VENDOR_FROM_DATABASE=Polhemus - -usb:v0F44pEF11* - ID_PRODUCT_FROM_DATABASE=Patriot (firmware not loaded) - -usb:v0F44pEF12* - ID_PRODUCT_FROM_DATABASE=Patriot - -usb:v0F44pFF11* - ID_PRODUCT_FROM_DATABASE=Liberty (firmware not loaded) - -usb:v0F44pFF12* - ID_PRODUCT_FROM_DATABASE=Liberty - -usb:v0F4B* - ID_VENDOR_FROM_DATABASE=St. John Technology Co., Ltd - -usb:v0F4C* - ID_VENDOR_FROM_DATABASE=WorldWide Cable Opto Corp. - -usb:v0F4D* - ID_VENDOR_FROM_DATABASE=Microtune, Inc. - -usb:v0F4Dp1000* - ID_PRODUCT_FROM_DATABASE=Bluetooth Dongle - -usb:v0F4E* - ID_VENDOR_FROM_DATABASE=Freedom Scientific - -usb:v0F52* - ID_VENDOR_FROM_DATABASE=Wing Key Electrical Co., Ltd - -usb:v0F53* - ID_VENDOR_FROM_DATABASE=Dongguan White Horse Cable Factory, Ltd - -usb:v0F54* - ID_VENDOR_FROM_DATABASE=Kawai Musical Instruments Mfg. Co., Ltd - -usb:v0F55* - ID_VENDOR_FROM_DATABASE=AmbiCom, Inc. - -usb:v0F5C* - ID_VENDOR_FROM_DATABASE=Prairiecomm, Inc. - -usb:v0F5D* - ID_VENDOR_FROM_DATABASE=NewAge International, LLC - -usb:v0F5Dp9455* - ID_PRODUCT_FROM_DATABASE=Compact Drive - -usb:v0F5F* - ID_VENDOR_FROM_DATABASE=Key Technology Corp. - -usb:v0F60* - ID_VENDOR_FROM_DATABASE=NTK, Ltd - -usb:v0F61* - ID_VENDOR_FROM_DATABASE=Varian, Inc. - -usb:v0F62* - ID_VENDOR_FROM_DATABASE=Acrox Technologies Co., Ltd - -usb:v0F62p1001* - ID_PRODUCT_FROM_DATABASE=Targus Mini Trackball Optical Mouse - -usb:v0F63* - ID_VENDOR_FROM_DATABASE=LeapFrog Enterprises - -usb:v0F63p0010* - ID_PRODUCT_FROM_DATABASE=Leapster Explorer - -usb:v0F63p0500* - ID_PRODUCT_FROM_DATABASE=Fly Fusion - -usb:v0F63p0600* - ID_PRODUCT_FROM_DATABASE=Leap Port Turbo - -usb:v0F63p0700* - ID_PRODUCT_FROM_DATABASE=POGO - -usb:v0F63p0800* - ID_PRODUCT_FROM_DATABASE=Didj - -usb:v0F63p0900* - ID_PRODUCT_FROM_DATABASE=TAGSchool - -usb:v0F63p0A00* - ID_PRODUCT_FROM_DATABASE=Leapster 2 - -usb:v0F63p0B00* - ID_PRODUCT_FROM_DATABASE=Crammer - -usb:v0F63p0C00* - ID_PRODUCT_FROM_DATABASE=Tag Jr - -usb:v0F63p0D00* - ID_PRODUCT_FROM_DATABASE=My Pal Scout - -usb:v0F63p0E00* - ID_PRODUCT_FROM_DATABASE=Tag32 - -usb:v0F63p0F00* - ID_PRODUCT_FROM_DATABASE=Tag64 - -usb:v0F63p1000* - ID_PRODUCT_FROM_DATABASE=Kiwi16 - -usb:v0F63p1100* - ID_PRODUCT_FROM_DATABASE=Leapster L2x - -usb:v0F63p1111* - ID_PRODUCT_FROM_DATABASE=Fly Fusion - -usb:v0F63p1300* - ID_PRODUCT_FROM_DATABASE=Didj UK/France (Leapster Advance) - -usb:v0F68* - ID_VENDOR_FROM_DATABASE=Kobe Steel, Ltd - -usb:v0F69* - ID_VENDOR_FROM_DATABASE=Dionex Corp. - -usb:v0F6A* - ID_VENDOR_FROM_DATABASE=Vibren Technologies, Inc. - -usb:v0F6E* - ID_VENDOR_FROM_DATABASE=INTELLIGENT SYSTEMS - -usb:v0F6Ep0100* - ID_PRODUCT_FROM_DATABASE=GameBoy Color Emulator - -usb:v0F6Ep0201* - ID_PRODUCT_FROM_DATABASE=GameBoy Advance Flash Gang Writer - -usb:v0F6Ep0202* - ID_PRODUCT_FROM_DATABASE=GameBoy Advance Capture - -usb:v0F6Ep0300* - ID_PRODUCT_FROM_DATABASE=Gamecube DOL Viewer - -usb:v0F6Ep0400* - ID_PRODUCT_FROM_DATABASE=NDS Emulator - -usb:v0F6Ep0401* - ID_PRODUCT_FROM_DATABASE=NDS UIC - -usb:v0F6Ep0402* - ID_PRODUCT_FROM_DATABASE=NDS Writer - -usb:v0F6Ep0403* - ID_PRODUCT_FROM_DATABASE=NDS Capture - -usb:v0F6Ep0404* - ID_PRODUCT_FROM_DATABASE=NDS Emulator (Lite) - -usb:v0F73* - ID_VENDOR_FROM_DATABASE=DFI - -usb:v0F7C* - ID_VENDOR_FROM_DATABASE=DQ Technology, Inc. - -usb:v0F7D* - ID_VENDOR_FROM_DATABASE=NetBotz, Inc. - -usb:v0F7E* - ID_VENDOR_FROM_DATABASE=Fluke Corp. - -usb:v0F88* - ID_VENDOR_FROM_DATABASE=VTech Holdings, Ltd - -usb:v0F88p3012* - ID_PRODUCT_FROM_DATABASE=RT2570 - -usb:v0F88p3014* - ID_PRODUCT_FROM_DATABASE=ZD1211B - -usb:v0F8B* - ID_VENDOR_FROM_DATABASE=Yazaki Corp. - -usb:v0F8C* - ID_VENDOR_FROM_DATABASE=Young Generation International Corp. - -usb:v0F8D* - ID_VENDOR_FROM_DATABASE=Uniwill Computer Corp. - -usb:v0F8E* - ID_VENDOR_FROM_DATABASE=Kingnet Technology Co., Ltd - -usb:v0F8F* - ID_VENDOR_FROM_DATABASE=Soma Networks - -usb:v0F97* - ID_VENDOR_FROM_DATABASE=CviLux Corp. - -usb:v0F98* - ID_VENDOR_FROM_DATABASE=CyberBank Corp. - -usb:v0F9C* - ID_VENDOR_FROM_DATABASE=Hyun Won, Inc. - -usb:v0F9Cp0301* - ID_PRODUCT_FROM_DATABASE=M-Any Premium DAH-610 MP3/WMA Player - -usb:v0F9Cp0332* - ID_PRODUCT_FROM_DATABASE=mobiBLU DAH-1200 MP3/Ogg Player - -usb:v0F9E* - ID_VENDOR_FROM_DATABASE=Lucent Technologies - -usb:v0FA3* - ID_VENDOR_FROM_DATABASE=Starconn Electronic Co., Ltd - -usb:v0FA4* - ID_VENDOR_FROM_DATABASE=ATL Technology - -usb:v0FA5* - ID_VENDOR_FROM_DATABASE=Sotec Co., Ltd - -usb:v0FA7* - ID_VENDOR_FROM_DATABASE=Epox Computer Co., Ltd - -usb:v0FA8* - ID_VENDOR_FROM_DATABASE=Logic Controls, Inc. - -usb:v0FAF* - ID_VENDOR_FROM_DATABASE=Winpoint Electronic Corp. - -usb:v0FB0* - ID_VENDOR_FROM_DATABASE=Haurtian Wire & Cable Co., Ltd - -usb:v0FB1* - ID_VENDOR_FROM_DATABASE=Inclose Design, Inc. - -usb:v0FB2* - ID_VENDOR_FROM_DATABASE=Juan-Chern Industrial Co., Ltd - -usb:v0FB6* - ID_VENDOR_FROM_DATABASE=Heber Ltd - -usb:v0FB6p3FC3* - ID_PRODUCT_FROM_DATABASE=Firefly X10i I/O Board (with firmware) - -usb:v0FB6p3FC4* - ID_PRODUCT_FROM_DATABASE=Firefly X10i I/O Board (without firmware) - -usb:v0FB8* - ID_VENDOR_FROM_DATABASE=Wistron Corp. - -usb:v0FB8p0002* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v0FB9* - ID_VENDOR_FROM_DATABASE=AACom Corp. - -usb:v0FBA* - ID_VENDOR_FROM_DATABASE=San Shing Electronics Co., Ltd - -usb:v0FBB* - ID_VENDOR_FROM_DATABASE=Bitwise Systems, Inc. - -usb:v0FC1* - ID_VENDOR_FROM_DATABASE=Mitac Internatinal Corp. - -usb:v0FC2* - ID_VENDOR_FROM_DATABASE=Plug and Jack Industrial, Inc. - -usb:v0FC5* - ID_VENDOR_FROM_DATABASE=Delcom Engineering - -usb:v0FC5p1222* - ID_PRODUCT_FROM_DATABASE=I/O Development Board - -usb:v0FC6* - ID_VENDOR_FROM_DATABASE=Dataplus Supplies, Inc. - -usb:v0FCA* - ID_VENDOR_FROM_DATABASE=Research In Motion, Ltd. - -usb:v0FCAp0001* - ID_PRODUCT_FROM_DATABASE=Blackberry Handheld - -usb:v0FCAp0004* - ID_PRODUCT_FROM_DATABASE=Blackberry Handheld - -usb:v0FCAp0006* - ID_PRODUCT_FROM_DATABASE=Blackberry Pearl - -usb:v0FCAp0008* - ID_PRODUCT_FROM_DATABASE=Blackberry Pearl - -usb:v0FCAp8001* - ID_PRODUCT_FROM_DATABASE=Blackberry Handheld - -usb:v0FCAp8004* - ID_PRODUCT_FROM_DATABASE=Blackberry Handheld - -usb:v0FCAp8007* - ID_PRODUCT_FROM_DATABASE=Blackberry Handheld - -usb:v0FCAp8010* - ID_PRODUCT_FROM_DATABASE=Blackberry Playbook (Connect to Windows mode) - -usb:v0FCAp8011* - ID_PRODUCT_FROM_DATABASE=Blackberry Playbook (Connect to Mac mode) - -usb:v0FCAp8020* - ID_PRODUCT_FROM_DATABASE=Blackberry Playbook (CD-Rom mode) - -usb:v0FCE* - ID_VENDOR_FROM_DATABASE=Sony Ericsson Mobile Communications AB - -usb:v0FCEp0076* - ID_PRODUCT_FROM_DATABASE=W910i (Multimedia mode) - -usb:v0FCEp00AF* - ID_PRODUCT_FROM_DATABASE=V640i Phone [PTP Camera] - -usb:v0FCEp00D4* - ID_PRODUCT_FROM_DATABASE=C902 [MTP] - -usb:v0FCEp00D9* - ID_PRODUCT_FROM_DATABASE=C702 Phone - -usb:v0FCEp0112* - ID_PRODUCT_FROM_DATABASE=W995 Walkman Phone - -usb:v0FCEp015A* - ID_PRODUCT_FROM_DATABASE=Xperia Pro [Media Transfer Protocol] - -usb:v0FCEp0166* - ID_PRODUCT_FROM_DATABASE=Xperia Mini Pro - -usb:v0FCEp0169* - ID_PRODUCT_FROM_DATABASE=Xperia S - -usb:v0FCEp0172* - ID_PRODUCT_FROM_DATABASE=Xperia P - -usb:v0FCEp0177* - ID_PRODUCT_FROM_DATABASE=Xperia Ion [Mass Storage] - -usb:v0FCEp0DDE* - ID_PRODUCT_FROM_DATABASE=Xperia Mini Pro Bootloader - -usb:v0FCEp1010* - ID_PRODUCT_FROM_DATABASE=WMC Modem - -usb:v0FCEp10AF* - ID_PRODUCT_FROM_DATABASE=V640i Phone [PictBridge] - -usb:v0FCEp10D4* - ID_PRODUCT_FROM_DATABASE=C902 Phone [PictBridge] - -usb:v0FCEp2105* - ID_PRODUCT_FROM_DATABASE=W715 Phone - -usb:v0FCEp2137* - ID_PRODUCT_FROM_DATABASE=Xperia X10 mini (USB debug) - -usb:v0FCEp2138* - ID_PRODUCT_FROM_DATABASE=Xperia X10 mini pro (Debug) - -usb:v0FCEp2149* - ID_PRODUCT_FROM_DATABASE=Xperia X8 (debug) - -usb:v0FCEp3137* - ID_PRODUCT_FROM_DATABASE=Xperia X10 mini - -usb:v0FCEp3138* - ID_PRODUCT_FROM_DATABASE=Xperia X10 mini pro - -usb:v0FCEp3149* - ID_PRODUCT_FROM_DATABASE=Xperia X8 - -usb:v0FCEp5177* - ID_PRODUCT_FROM_DATABASE=Xperia Ion [Debug Mode] - -usb:v0FCEp614F* - ID_PRODUCT_FROM_DATABASE=Xperia X12 (debug mode) - -usb:v0FCEp6166* - ID_PRODUCT_FROM_DATABASE=Xperia Mini Pro - -usb:v0FCEp715A* - ID_PRODUCT_FROM_DATABASE=Xperia Pro [Tethering] - -usb:v0FCEp7177* - ID_PRODUCT_FROM_DATABASE=Xperia Ion [Tethering] - -usb:v0FCEp8004* - ID_PRODUCT_FROM_DATABASE=9000 Phone [Mass Storage] - -usb:v0FCEpADDE* - ID_PRODUCT_FROM_DATABASE=Boot loader - -usb:v0FCEpD008* - ID_PRODUCT_FROM_DATABASE=V800-Vodafone 802SE Phone - -usb:v0FCEpD016* - ID_PRODUCT_FROM_DATABASE=K750i Phone - -usb:v0FCEpD017* - ID_PRODUCT_FROM_DATABASE=K608i Phone - -usb:v0FCEpD019* - ID_PRODUCT_FROM_DATABASE=VDC EGPRS Modem - -usb:v0FCEpD025* - ID_PRODUCT_FROM_DATABASE=520 WMC Data Modem - -usb:v0FCEpD028* - ID_PRODUCT_FROM_DATABASE=W800i - -usb:v0FCEpD038* - ID_PRODUCT_FROM_DATABASE=W850i Phone - -usb:v0FCEpD039* - ID_PRODUCT_FROM_DATABASE=K800i (phone mode) - -usb:v0FCEpD041* - ID_PRODUCT_FROM_DATABASE=K510i Phone - -usb:v0FCEpD042* - ID_PRODUCT_FROM_DATABASE=W810i Phone - -usb:v0FCEpD043* - ID_PRODUCT_FROM_DATABASE=V630i Phone - -usb:v0FCEpD046* - ID_PRODUCT_FROM_DATABASE=K610i Phone - -usb:v0FCEpD065* - ID_PRODUCT_FROM_DATABASE=W960i Phone (PC Suite) - -usb:v0FCEpD076* - ID_PRODUCT_FROM_DATABASE=W910i (Phone mode) - -usb:v0FCEpD089* - ID_PRODUCT_FROM_DATABASE=W580i Phone (mass storage) - -usb:v0FCEpD0A1* - ID_PRODUCT_FROM_DATABASE=K810 - -usb:v0FCEpD0AF* - ID_PRODUCT_FROM_DATABASE=V640i Phone - -usb:v0FCEpD0CF* - ID_PRODUCT_FROM_DATABASE=MD300 Mobile Broadband Modem - -usb:v0FCEpD0D4* - ID_PRODUCT_FROM_DATABASE=C902 Phone [Modem] - -usb:v0FCEpD0E1* - ID_PRODUCT_FROM_DATABASE=MD400 Mobile Broadband Modem - -usb:v0FCEpD12E* - ID_PRODUCT_FROM_DATABASE=Xperia X10 - -usb:v0FCEpE000* - ID_PRODUCT_FROM_DATABASE=K810 (PictBridge mode) - -usb:v0FCEpE039* - ID_PRODUCT_FROM_DATABASE=K800i (msc mode) - -usb:v0FCEpE042* - ID_PRODUCT_FROM_DATABASE=W810i Phone - -usb:v0FCEpE043* - ID_PRODUCT_FROM_DATABASE=V630i Phone [Mass Storage] - -usb:v0FCEpE075* - ID_PRODUCT_FROM_DATABASE=K850i - -usb:v0FCEpE076* - ID_PRODUCT_FROM_DATABASE=W910i (Mass storage) - -usb:v0FCEpE089* - ID_PRODUCT_FROM_DATABASE=W580i Phone - -usb:v0FCEpE090* - ID_PRODUCT_FROM_DATABASE=W200 Phone (Mass Storage) - -usb:v0FCEpE0A1* - ID_PRODUCT_FROM_DATABASE=K810 (Mass Storage mode) - -usb:v0FCEpE0A3* - ID_PRODUCT_FROM_DATABASE=W660i - -usb:v0FCEpE0AF* - ID_PRODUCT_FROM_DATABASE=V640i Phone [Mass Storage] - -usb:v0FCEpE0D4* - ID_PRODUCT_FROM_DATABASE=C902 Phone [Mass Storage] - -usb:v0FCEpE0EF* - ID_PRODUCT_FROM_DATABASE=C905 Phone [Mass Storage] - -usb:v0FCEpE0F3* - ID_PRODUCT_FROM_DATABASE=W595 - -usb:v0FCEpE105* - ID_PRODUCT_FROM_DATABASE=W705 - -usb:v0FCEpE112* - ID_PRODUCT_FROM_DATABASE=W995 Phone (Mass Storage) - -usb:v0FCEpE12E* - ID_PRODUCT_FROM_DATABASE=X10i Phone - -usb:v0FCEpE133* - ID_PRODUCT_FROM_DATABASE=Vivaz - -usb:v0FCEpE14F* - ID_PRODUCT_FROM_DATABASE=Xperia Arc/X12 - -usb:v0FCEpE15A* - ID_PRODUCT_FROM_DATABASE=Xperia Pro [Mass Storage Class] - -usb:v0FCEpE161* - ID_PRODUCT_FROM_DATABASE=Xperia Ray - -usb:v0FCEpE166* - ID_PRODUCT_FROM_DATABASE=Xperia Mini Pro - -usb:v0FCEpE167* - ID_PRODUCT_FROM_DATABASE=XPERIA mini - -usb:v0FCF* - ID_VENDOR_FROM_DATABASE=Dynastream Innovations, Inc. - -usb:v0FCFp1003* - ID_PRODUCT_FROM_DATABASE=ANT Development Board - -usb:v0FCFp1004* - ID_PRODUCT_FROM_DATABASE=ANT2USB - -usb:v0FCFp1006* - ID_PRODUCT_FROM_DATABASE=ANT Development Board - -usb:v0FCFp1008* - ID_PRODUCT_FROM_DATABASE=Mini stick Suunto - -usb:v0FD0* - ID_VENDOR_FROM_DATABASE=Tulip Computers B.V. - -usb:v0FD1* - ID_VENDOR_FROM_DATABASE=Giant Electronics Ltd. - -usb:v0FD4* - ID_VENDOR_FROM_DATABASE=Tenovis GmbH & Co., KG - -usb:v0FD5* - ID_VENDOR_FROM_DATABASE=Direct Access Technology, Inc. - -usb:v0FD9* - ID_VENDOR_FROM_DATABASE=Elgato Systems GmbH - -usb:v0FD9p0011* - ID_PRODUCT_FROM_DATABASE=EyeTV Diversity - -usb:v0FD9p0018* - ID_PRODUCT_FROM_DATABASE=EyeTV Hybrid - -usb:v0FD9p0020* - ID_PRODUCT_FROM_DATABASE=EyeTV DTT Deluxe - -usb:v0FD9p0021* - ID_PRODUCT_FROM_DATABASE=EyeTV DTT - -usb:v0FD9p002A* - ID_PRODUCT_FROM_DATABASE=EyeTV Sat - -usb:v0FD9p002C* - ID_PRODUCT_FROM_DATABASE=EyeTV DTT Deluxe v2 - -usb:v0FD9p0033* - ID_PRODUCT_FROM_DATABASE=Video Capture - -usb:v0FD9p0037* - ID_PRODUCT_FROM_DATABASE=Video Capture v2 - -usb:v0FDA* - ID_VENDOR_FROM_DATABASE=Quantec Networks GmbH - -usb:v0FDAp0100* - ID_PRODUCT_FROM_DATABASE=quanton flight control - -usb:v0FDC* - ID_VENDOR_FROM_DATABASE=Micro Plus - -usb:v0FE0* - ID_VENDOR_FROM_DATABASE=Osterhout Design Group - -usb:v0FE0p0100* - ID_PRODUCT_FROM_DATABASE=Bluetooth Mouse - -usb:v0FE0p0101* - ID_PRODUCT_FROM_DATABASE=Bluetooth IMU - -usb:v0FE0p0200* - ID_PRODUCT_FROM_DATABASE=Bluetooth Keypad - -usb:v0FE4* - ID_VENDOR_FROM_DATABASE=IN-Tech Electronics, Ltd - -usb:v0FE5* - ID_VENDOR_FROM_DATABASE=Greenconn (U.S.A.), Inc. - -usb:v0FE6* - ID_VENDOR_FROM_DATABASE=Kontron (Industrial Computer Source / ICS Advent) - -usb:v0FE6p8101* - ID_PRODUCT_FROM_DATABASE=DM9601 Fast Ethernet Adapter - -usb:v0FE6p811E* - ID_PRODUCT_FROM_DATABASE=Parallel Adapter - -usb:v0FE6p9700* - ID_PRODUCT_FROM_DATABASE=DM9601 Fast Ethernet Adapter - -usb:v0FE9* - ID_VENDOR_FROM_DATABASE=DVICO - -usb:v0FE9p4020* - ID_PRODUCT_FROM_DATABASE=TViX M-6500 - -usb:v0FE9pDB00* - ID_PRODUCT_FROM_DATABASE=FusionHDTV DVB-T (MT352+LgZ201) (uninitialized) - -usb:v0FE9pDB01* - ID_PRODUCT_FROM_DATABASE=FusionHDTV DVB-T (MT352+LgZ201) (initialized) - -usb:v0FE9pDB10* - ID_PRODUCT_FROM_DATABASE=FusionHDTV DVB-T (MT352+Thomson7579) (uninitialized) - -usb:v0FE9pDB11* - ID_PRODUCT_FROM_DATABASE=FusionHDTV DVB-T (MT352+Thomson7579) (initialized) - -usb:v0FE9pDB78* - ID_PRODUCT_FROM_DATABASE=FusionHDTV DVB-T Dual Digital 4 (ZL10353+xc2028/xc3028) (initialized) - -usb:v0FEA* - ID_VENDOR_FROM_DATABASE=United Computer Accessories - -usb:v0FEB* - ID_VENDOR_FROM_DATABASE=CRS Electronic Co., Ltd - -usb:v0FEC* - ID_VENDOR_FROM_DATABASE=UMC Electronics Co., Ltd - -usb:v0FED* - ID_VENDOR_FROM_DATABASE=Access Co., Ltd - -usb:v0FEE* - ID_VENDOR_FROM_DATABASE=Xsido Corp. - -usb:v0FEF* - ID_VENDOR_FROM_DATABASE=MJ Research, Inc. - -usb:v0FF6* - ID_VENDOR_FROM_DATABASE=Core Valley Co., Ltd - -usb:v0FF7* - ID_VENDOR_FROM_DATABASE=CHI SHING Computer Accessories Co., Ltd - -usb:v0FFC* - ID_VENDOR_FROM_DATABASE=Clavia DMI AB - -usb:v0FFCp0021* - ID_PRODUCT_FROM_DATABASE=Nord Stage 2 - -usb:v0FFF* - ID_VENDOR_FROM_DATABASE=Aopen, Inc. - -usb:v1000* - ID_VENDOR_FROM_DATABASE=Speed Tech Corp. - -usb:v1001* - ID_VENDOR_FROM_DATABASE=Ritronics Components (S) Pte., Ltd - -usb:v1003* - ID_VENDOR_FROM_DATABASE=Sigma Corp. - -usb:v1003p0003* - ID_PRODUCT_FROM_DATABASE=SD14 - -usb:v1003p0100* - ID_PRODUCT_FROM_DATABASE=SD9/SD10 - -usb:v1004* - ID_VENDOR_FROM_DATABASE=LG Electronics, Inc. - -usb:v1004p1FAE* - ID_PRODUCT_FROM_DATABASE=U8120 3G Cellphone - -usb:v1004p6000* - ID_PRODUCT_FROM_DATABASE=Various Mobile Phones - -usb:v1004p6005* - ID_PRODUCT_FROM_DATABASE=T5100 - -usb:v1004p6018* - ID_PRODUCT_FROM_DATABASE=GM360/GD510/GW520/KP501 - -usb:v1004p618E* - ID_PRODUCT_FROM_DATABASE=Ally/Optimus One/Vortex (debug mode) - -usb:v1004p618F* - ID_PRODUCT_FROM_DATABASE=Ally/Optimus One - -usb:v1004p61C6* - ID_PRODUCT_FROM_DATABASE=Vortex (msc) - -usb:v1004p61CC* - ID_PRODUCT_FROM_DATABASE=Optimus S - -usb:v1004p61FC* - ID_PRODUCT_FROM_DATABASE=Optimus 3 - -usb:v1004p6800* - ID_PRODUCT_FROM_DATABASE=CDMA Modem - -usb:v1004p7000* - ID_PRODUCT_FROM_DATABASE=LG LDP-7024D(LD)USB - -usb:v1004pA400* - ID_PRODUCT_FROM_DATABASE=Renoir (KC910) - -usb:v1005* - ID_VENDOR_FROM_DATABASE=Apacer Technology, Inc. - -usb:v1005p1001* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v1005p1004* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v1005p1006* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v1005pB113* - ID_PRODUCT_FROM_DATABASE=Handy Steno 2.0/HT203 - -usb:v1005pB223* - ID_PRODUCT_FROM_DATABASE=CD-RW + 6in1 Card Reader Digital Storage / Converter - -usb:v1006* - ID_VENDOR_FROM_DATABASE=iRiver, Ltd. - -usb:v1006p3001* - ID_PRODUCT_FROM_DATABASE=iHP-100 - -usb:v1006p3002* - ID_PRODUCT_FROM_DATABASE=iHP-120/140 MP3 Player - -usb:v1006p3003* - ID_PRODUCT_FROM_DATABASE=H320/H340 - -usb:v1006p3004* - ID_PRODUCT_FROM_DATABASE=H340 (mtp) - -usb:v1009* - ID_VENDOR_FROM_DATABASE=Emuzed, Inc. - -usb:v1009p000E* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v1009p0013* - ID_PRODUCT_FROM_DATABASE=Angel MPEG Device - -usb:v1009p0015* - ID_PRODUCT_FROM_DATABASE=Lumanate Wave PAL SECAM DVBT Device - -usb:v1009p0016* - ID_PRODUCT_FROM_DATABASE=Lumanate Wave NTSC/ATSC Combo Device - -usb:v100A* - ID_VENDOR_FROM_DATABASE=AV Chaseway, Ltd - -usb:v100Ap2402* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v100Ap2404* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v100Ap2405* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v100Ap2406* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v100ApA0C0* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v100B* - ID_VENDOR_FROM_DATABASE=Chou Chin Industrial Co., Ltd - -usb:v100D* - ID_VENDOR_FROM_DATABASE=Netopia, Inc. - -usb:v100Dp3342* - ID_PRODUCT_FROM_DATABASE=Cayman 3352 DSL Modem - -usb:v100Dp3382* - ID_PRODUCT_FROM_DATABASE=3380 Series Network Interface - -usb:v100Dp6072* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v100Dp9031* - ID_PRODUCT_FROM_DATABASE=Motorola 802.11n Dualband USB Wireless Adapter - -usb:v100Dp9032* - ID_PRODUCT_FROM_DATABASE=Motorola 802.11n 5G USB Wireless Adapter - -usb:v100DpCB01* - ID_PRODUCT_FROM_DATABASE=Cayman 3341 Ethernet DSL Router - -usb:v1010* - ID_VENDOR_FROM_DATABASE=Fukuda Denshi Co., Ltd - -usb:v1011* - ID_VENDOR_FROM_DATABASE=Mobile Media Tech. - -usb:v1011p0001* - ID_PRODUCT_FROM_DATABASE=AccFast Mp3 - -usb:v1012* - ID_VENDOR_FROM_DATABASE=SDKM Fibres, Wires & Cables Berhad - -usb:v1013* - ID_VENDOR_FROM_DATABASE=TST-Touchless Sensor Technology AG - -usb:v1014* - ID_VENDOR_FROM_DATABASE=Densitron Technologies PLC - -usb:v1015* - ID_VENDOR_FROM_DATABASE=Softronics Pty., Ltd - -usb:v1016* - ID_VENDOR_FROM_DATABASE=Xiamen Hung's Enterprise Co., Ltd - -usb:v1017* - ID_VENDOR_FROM_DATABASE=Speedy Industrial Supplies, Pte., Ltd - -usb:v1019* - ID_VENDOR_FROM_DATABASE=Elitegroup Computer Systems (ECS) - -usb:v1019p0C55* - ID_PRODUCT_FROM_DATABASE=Flash Reader, Desknote UCR-61S2B - -usb:v1019p0F38* - ID_PRODUCT_FROM_DATABASE=Infrared Receiver - -usb:v1020* - ID_VENDOR_FROM_DATABASE=Labtec - -usb:v1020p0006* - ID_PRODUCT_FROM_DATABASE=Wireless Keyboard - -usb:v1020p000A* - ID_PRODUCT_FROM_DATABASE=Wireless Optical Mouse - -usb:v1020p0106* - ID_PRODUCT_FROM_DATABASE=Wireless Optical Mouse - -usb:v1022* - ID_VENDOR_FROM_DATABASE=Shinko Shoji Co., Ltd - -usb:v1025* - ID_VENDOR_FROM_DATABASE=Hyper-Paltek - -usb:v1025p005E* - ID_PRODUCT_FROM_DATABASE=USB DVB-T device - -usb:v1025p005F* - ID_PRODUCT_FROM_DATABASE=USB DVB-T device - -usb:v1025p0300* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v1025p0350* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v1026* - ID_VENDOR_FROM_DATABASE=Newly Corp. - -usb:v1027* - ID_VENDOR_FROM_DATABASE=Time Domain - -usb:v1028* - ID_VENDOR_FROM_DATABASE=Inovys Corp. - -usb:v1029* - ID_VENDOR_FROM_DATABASE=Atlantic Coast Telesys - -usb:v102A* - ID_VENDOR_FROM_DATABASE=Ramos Technology Co., Ltd - -usb:v102B* - ID_VENDOR_FROM_DATABASE=Infotronic America, Inc. - -usb:v102C* - ID_VENDOR_FROM_DATABASE=Etoms Electronics Corp. - -usb:v102Cp6151* - ID_PRODUCT_FROM_DATABASE=Q-Cam Sangha CIF - -usb:v102Cp6251* - ID_PRODUCT_FROM_DATABASE=Q-Cam VGA - -usb:v102D* - ID_VENDOR_FROM_DATABASE=Winic Corp. - -usb:v1031* - ID_VENDOR_FROM_DATABASE=Comax Technology, Inc. - -usb:v1032* - ID_VENDOR_FROM_DATABASE=C-One Technology Corp. - -usb:v1033* - ID_VENDOR_FROM_DATABASE=Nucam Corp. - -usb:v1033p0068* - ID_PRODUCT_FROM_DATABASE=3,5'' HDD case MD-231 - -usb:v1038* - ID_VENDOR_FROM_DATABASE=Ideazon, Inc. - -usb:v1038p0100* - ID_PRODUCT_FROM_DATABASE=Zboard - -usb:v1039* - ID_VENDOR_FROM_DATABASE=devolo AG - -usb:v1039p0824* - ID_PRODUCT_FROM_DATABASE=1866 802.11bg [Texas Instruments TNETW1450] - -usb:v1039p2140* - ID_PRODUCT_FROM_DATABASE=dsl+ 1100 duo - -usb:v103D* - ID_VENDOR_FROM_DATABASE=Stanton - -usb:v103Dp0100* - ID_PRODUCT_FROM_DATABASE=ScratchAmp - -usb:v103Dp0101* - ID_PRODUCT_FROM_DATABASE=ScratchAmp - -usb:v1043* - ID_VENDOR_FROM_DATABASE=iCreate Technologies Corp. - -usb:v1043p160F* - ID_PRODUCT_FROM_DATABASE=Wireless Network Adapter - -usb:v1043p4901* - ID_PRODUCT_FROM_DATABASE=AV-836 Video Capture Device - -usb:v1043p8006* - ID_PRODUCT_FROM_DATABASE=Flash Disk 32-256 MB - -usb:v1043p8012* - ID_PRODUCT_FROM_DATABASE=Flash Disk 256 MB - -usb:v1044* - ID_VENDOR_FROM_DATABASE=Chu Yuen Enterprise Co., Ltd - -usb:v1044p7001* - ID_PRODUCT_FROM_DATABASE=Gigabyte U7000 DVB-T tuner - -usb:v1044p7002* - ID_PRODUCT_FROM_DATABASE=Gigabyte U8000 DVB-T tuner - -usb:v1044p7004* - ID_PRODUCT_FROM_DATABASE=Gigabyte U7100 DVB-T tuner - -usb:v1044p7005* - ID_PRODUCT_FROM_DATABASE=Gigabyte U7200 DVB-T tuner [AF9035] - -usb:v1044p7006* - ID_PRODUCT_FROM_DATABASE=Gigabyte U6000 DVB-T tuner [em2863] - -usb:v1044p8001* - ID_PRODUCT_FROM_DATABASE=GN-54G - -usb:v1044p8002* - ID_PRODUCT_FROM_DATABASE=GN-BR402W - -usb:v1044p8003* - ID_PRODUCT_FROM_DATABASE=GN-WLBM101 - -usb:v1044p8004* - ID_PRODUCT_FROM_DATABASE=GN-WLBZ101 802.11b Adapter - -usb:v1044p8005* - ID_PRODUCT_FROM_DATABASE=GN-WLBZ201 802.11b Adapter - -usb:v1044p8006* - ID_PRODUCT_FROM_DATABASE=GN-WBZB-M 802.11b Adapter - -usb:v1044p8007* - ID_PRODUCT_FROM_DATABASE=GN-WBKG - -usb:v1044p8008* - ID_PRODUCT_FROM_DATABASE=GN-WB01GS - -usb:v1044p800A* - ID_PRODUCT_FROM_DATABASE=GN-WI05GS - -usb:v1044p800B* - ID_PRODUCT_FROM_DATABASE=GN-WB30N 802.11n WLAN Card - -usb:v1044p800C* - ID_PRODUCT_FROM_DATABASE=GN-WB31N 802.11n USB WLAN Card - -usb:v1044p800D* - ID_PRODUCT_FROM_DATABASE=GN-WB32L 802.11n USB WLAN Card - -usb:v1046* - ID_VENDOR_FROM_DATABASE=Winbond Electronics Corp. [hex] - -usb:v1046p6694* - ID_PRODUCT_FROM_DATABASE=Generic W6694 USB - -usb:v1046p8901* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v1046p9967* - ID_PRODUCT_FROM_DATABASE=W9967CF/W9968CF Webcam IC - -usb:v1048* - ID_VENDOR_FROM_DATABASE=Targus Group International - -usb:v104B* - ID_VENDOR_FROM_DATABASE=Mylex / Buslogic - -usb:v104C* - ID_VENDOR_FROM_DATABASE=AMCO TEC International, Inc. - -usb:v104D* - ID_VENDOR_FROM_DATABASE=Newport Corporation - -usb:v104Dp1003* - ID_PRODUCT_FROM_DATABASE=Model-52 LED Light Source Power Supply and Driver - -usb:v104F* - ID_VENDOR_FROM_DATABASE=WB Electronics - -usb:v104Fp0001* - ID_PRODUCT_FROM_DATABASE=Infinity Phoenix - -usb:v104Fp0002* - ID_PRODUCT_FROM_DATABASE=Smartmouse - -usb:v104Fp0003* - ID_PRODUCT_FROM_DATABASE=FunProgrammer - -usb:v104Fp0004* - ID_PRODUCT_FROM_DATABASE=Infinity Unlimited - -usb:v104Fp0006* - ID_PRODUCT_FROM_DATABASE=Infinity Smart - -usb:v104Fp0007* - ID_PRODUCT_FROM_DATABASE=Infinity Smart module - -usb:v104Fp0008* - ID_PRODUCT_FROM_DATABASE=Infinity CryptoKey - -usb:v104Fp0009* - ID_PRODUCT_FROM_DATABASE=RE-BL PlayStation 3 IR-to-Bluetooth converter - -usb:v1050* - ID_VENDOR_FROM_DATABASE=Yubico.com - -usb:v1050p0010* - ID_PRODUCT_FROM_DATABASE=Yubikey - -usb:v1053* - ID_VENDOR_FROM_DATABASE=Immanuel Electronics Co., Ltd - -usb:v1054* - ID_VENDOR_FROM_DATABASE=BMS International Beheer N.V. - -usb:v1054p5004* - ID_PRODUCT_FROM_DATABASE=DSL 7420 Loader - -usb:v1054p5005* - ID_PRODUCT_FROM_DATABASE=DSL 7420 LAN Modem - -usb:v1055* - ID_VENDOR_FROM_DATABASE=Complex Micro Interconnection Co., Ltd - -usb:v1056* - ID_VENDOR_FROM_DATABASE=Hsin Chen Ent Co., Ltd - -usb:v1057* - ID_VENDOR_FROM_DATABASE=ON Semiconductor - -usb:v1058* - ID_VENDOR_FROM_DATABASE=Western Digital Technologies, Inc. - -usb:v1058p0200* - ID_PRODUCT_FROM_DATABASE=FireWire USB Combo - -usb:v1058p0400* - ID_PRODUCT_FROM_DATABASE=External HDD - -usb:v1058p0500* - ID_PRODUCT_FROM_DATABASE=hub - -usb:v1058p0702* - ID_PRODUCT_FROM_DATABASE=Passport External HDD - -usb:v1058p0704* - ID_PRODUCT_FROM_DATABASE=Passport External HDD - -usb:v1058p070A* - ID_PRODUCT_FROM_DATABASE=My Passport Essential SE - -usb:v1058p071A* - ID_PRODUCT_FROM_DATABASE=My Passport 1TB - -usb:v1058p0740* - ID_PRODUCT_FROM_DATABASE=My Passport - -usb:v1058p0742* - ID_PRODUCT_FROM_DATABASE=My Passport Essential SE - -usb:v1058p0748* - ID_PRODUCT_FROM_DATABASE=My Passport 1TB USB 3.0 - -usb:v1058p0900* - ID_PRODUCT_FROM_DATABASE=MyBook Essential External HDD - -usb:v1058p0901* - ID_PRODUCT_FROM_DATABASE=MyBook External HDD - -usb:v1058p0903* - ID_PRODUCT_FROM_DATABASE=My Book Premium Edition - -usb:v1058p0910* - ID_PRODUCT_FROM_DATABASE=MyBook Essential External HDD - -usb:v1058p1001* - ID_PRODUCT_FROM_DATABASE=External Hard Disk [Elements] - -usb:v1058p1003* - ID_PRODUCT_FROM_DATABASE=Elements 1000 GB - -usb:v1058p1010* - ID_PRODUCT_FROM_DATABASE=Elements External HDD - -usb:v1058p1021* - ID_PRODUCT_FROM_DATABASE=Elements 2TB - -usb:v1058p1023* - ID_PRODUCT_FROM_DATABASE=Elements SE - -usb:v1058p1103* - ID_PRODUCT_FROM_DATABASE=My Book Studio - -usb:v1058p1104* - ID_PRODUCT_FROM_DATABASE=MyBook Mirror Edition External HDD - -usb:v1058p1105* - ID_PRODUCT_FROM_DATABASE=My Book Studio II - -usb:v1058p1123* - ID_PRODUCT_FROM_DATABASE=My Book 3.0 - -usb:v1058p1140* - ID_PRODUCT_FROM_DATABASE=My Book Essential USB3.0 - -usb:v1059* - ID_VENDOR_FROM_DATABASE=Giesecke & Devrient GmbH - -usb:v1059p000B* - ID_PRODUCT_FROM_DATABASE=StarSign Bio Token 3.0 - -usb:v105C* - ID_VENDOR_FROM_DATABASE=Hong Ji Electric Wire & Cable (Dongguan) Co., Ltd - -usb:v105D* - ID_VENDOR_FROM_DATABASE=Delkin Devices, Inc. - -usb:v105E* - ID_VENDOR_FROM_DATABASE=Valence Semiconductor Design, Ltd - -usb:v105F* - ID_VENDOR_FROM_DATABASE=Chin Shong Enterprise Co., Ltd - -usb:v1060* - ID_VENDOR_FROM_DATABASE=Easthome Industrial Co., Ltd - -usb:v1063* - ID_VENDOR_FROM_DATABASE=Motorola Electronics Taiwan, Ltd [hex] - -usb:v1063p1555* - ID_PRODUCT_FROM_DATABASE=MC141555 Hub - -usb:v1063p4100* - ID_PRODUCT_FROM_DATABASE=SB4100 USB Cable Modem - -usb:v1065* - ID_VENDOR_FROM_DATABASE=CCYU Technology - -usb:v1065p0020* - ID_PRODUCT_FROM_DATABASE=USB-DVR2 Dev Board - -usb:v1065p2136* - ID_PRODUCT_FROM_DATABASE=EasyDisk ED1064 - -usb:v106A* - ID_VENDOR_FROM_DATABASE=Loyal Legend, Ltd - -usb:v106C* - ID_VENDOR_FROM_DATABASE=Curitel Communications, Inc. - -usb:v106Cp1101* - ID_PRODUCT_FROM_DATABASE=CDMA 2000 1xRTT USB modem (HX-550C) - -usb:v106Cp1102* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp1103* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp1104* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp1105* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v106Cp1106* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp1301* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v106Cp1302* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp1303* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp1304* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp1401* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v106Cp1402* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp1403* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp1501* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp1502* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp1503* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp1601* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp1602* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp1603* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp2101* - ID_PRODUCT_FROM_DATABASE=AudioVox 8900 Cell Phone - -usb:v106Cp2102* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp2103* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp2301* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp2302* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp2303* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp2401* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp2402* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp2403* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp2501* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp2502* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp2503* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp2601* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp2602* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp2603* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp3701* - ID_PRODUCT_FROM_DATABASE=Broadband Wireless modem - -usb:v106Cp3702* - ID_PRODUCT_FROM_DATABASE=Pantech PX-500 - -usb:v106Cp3714* - ID_PRODUCT_FROM_DATABASE=PANTECH USB MODEM [UM175] - -usb:v106Cp3716* - ID_PRODUCT_FROM_DATABASE=UMW190 Modem - -usb:v106Cp3721* - ID_PRODUCT_FROM_DATABASE=Option Beemo (GI0801) LTE surfstick - -usb:v106Cp3B14* - ID_PRODUCT_FROM_DATABASE=Option Beemo (GI0801) LTE surfstick - -usb:v106Cp3EB4* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp4101* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp4102* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp4301* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v106Cp4302* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp4401* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v106Cp4402* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp4501* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp4502* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp4601* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v106Cp4602* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp5101* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp5102* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp5301* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp5302* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp5401* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp5402* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp5501* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp5502* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp5601* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106Cp5602* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106Cp7101* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v106Cp7102* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106CpA000* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106CpA001* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106CpC100* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106CpC200* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106CpC500* - ID_PRODUCT_FROM_DATABASE=Packet Service Diagnostic Serial Port (WDM) - -usb:v106CpE200* - ID_PRODUCT_FROM_DATABASE=Packet Service - -usb:v106D* - ID_VENDOR_FROM_DATABASE=San Chieh Manufacturing, Ltd - -usb:v106E* - ID_VENDOR_FROM_DATABASE=ConectL - -usb:v106F* - ID_VENDOR_FROM_DATABASE=Money Controls - -usb:v106Fp0009* - ID_PRODUCT_FROM_DATABASE=CT10x Coin Transaction - -usb:v106Fp000A* - ID_PRODUCT_FROM_DATABASE=CR10x Coin Recycler - -usb:v1076* - ID_VENDOR_FROM_DATABASE=GCT Semiconductor, Inc. - -usb:v1076p0031* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v1076p0032* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v107B* - ID_VENDOR_FROM_DATABASE=Gateway, Inc. - -usb:v107Bp3009* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Transceiver - -usb:v107Bp55B2* - ID_PRODUCT_FROM_DATABASE=WBU-110 802.11b Wireless Adapter [Intersil PRISM 3] - -usb:v107Bp55F2* - ID_PRODUCT_FROM_DATABASE=WGU-210 802.11g Adapter [Intersil ISL3886] - -usb:v107D* - ID_VENDOR_FROM_DATABASE=Arlec Australia, Ltd - -usb:v107E* - ID_VENDOR_FROM_DATABASE=Midoriya Electric Co., Ltd - -usb:v107F* - ID_VENDOR_FROM_DATABASE=KidzMouse, Inc. - -usb:v1082* - ID_VENDOR_FROM_DATABASE=Shin-Etsukaken Co., Ltd - -usb:v1083* - ID_VENDOR_FROM_DATABASE=Canon Electronics, Inc. - -usb:v1083p162C* - ID_PRODUCT_FROM_DATABASE=P-150 Scanner - -usb:v1084* - ID_VENDOR_FROM_DATABASE=Pantech Co., Ltd - -usb:v108A* - ID_VENDOR_FROM_DATABASE=Chloride Power Protection - -usb:v108B* - ID_VENDOR_FROM_DATABASE=Grand-tek Technology Co., Ltd - -usb:v108C* - ID_VENDOR_FROM_DATABASE=Robert Bosch GmbH - -usb:v108E* - ID_VENDOR_FROM_DATABASE=Lotes Co., Ltd. - -usb:v1099* - ID_VENDOR_FROM_DATABASE=Surface Optics Corp. - -usb:v109A* - ID_VENDOR_FROM_DATABASE=DATASOFT Systems GmbH - -usb:v109F* - ID_VENDOR_FROM_DATABASE=eSOL Co., Ltd - -usb:v109Fp3163* - ID_PRODUCT_FROM_DATABASE=Trigem Mobile SmartDisplay84 - -usb:v109Fp3164* - ID_PRODUCT_FROM_DATABASE=Trigem Mobile SmartDisplay121 - -usb:v10A0* - ID_VENDOR_FROM_DATABASE=Hirotech, Inc. - -usb:v10A3* - ID_VENDOR_FROM_DATABASE=Mitsubishi Materials Corp. - -usb:v10A9* - ID_VENDOR_FROM_DATABASE=SK Teletech Co., Ltd - -usb:v10A9p1102* - ID_PRODUCT_FROM_DATABASE=Sky Love Actually IM-U460K - -usb:v10A9p1104* - ID_PRODUCT_FROM_DATABASE=Sky Vega IM-A650S - -usb:v10A9p6021* - ID_PRODUCT_FROM_DATABASE=SIRIUS alpha - -usb:v10AA* - ID_VENDOR_FROM_DATABASE=Cables To Go - -usb:v10AB* - ID_VENDOR_FROM_DATABASE=USI Co., Ltd - -usb:v10ABp1002* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v10ABp1003* - ID_PRODUCT_FROM_DATABASE=BC02-EXT in DFU - -usb:v10ABp1005* - ID_PRODUCT_FROM_DATABASE=Bluetooth Adptr - -usb:v10ABp1006* - ID_PRODUCT_FROM_DATABASE=BC04-EXT in DFU - -usb:v10ABp10C5* - ID_PRODUCT_FROM_DATABASE=Sony-Ericsson / Samsung DataCable - -usb:v10AC* - ID_VENDOR_FROM_DATABASE=Honeywell, Inc. - -usb:v10AE* - ID_VENDOR_FROM_DATABASE=Princeton Technology Corp. - -usb:v10AF* - ID_VENDOR_FROM_DATABASE=Liebert Corp. - -usb:v10AFp0000* - ID_PRODUCT_FROM_DATABASE=UPS - -usb:v10AFp0001* - ID_PRODUCT_FROM_DATABASE=PowerSure PSA UPS - -usb:v10AFp0002* - ID_PRODUCT_FROM_DATABASE=PowerSure PST UPS - -usb:v10AFp0003* - ID_PRODUCT_FROM_DATABASE=PowerSure PSP UPS - -usb:v10AFp0004* - ID_PRODUCT_FROM_DATABASE=PowerSure PSI UPS - -usb:v10AFp0005* - ID_PRODUCT_FROM_DATABASE=UPStation GXT 2U UPS - -usb:v10AFp0006* - ID_PRODUCT_FROM_DATABASE=UPStation GXT UPS - -usb:v10AFp0007* - ID_PRODUCT_FROM_DATABASE=Nfinity Power Systems UPS - -usb:v10AFp0008* - ID_PRODUCT_FROM_DATABASE=PowerSure Interactive UPS - -usb:v10B5* - ID_VENDOR_FROM_DATABASE=Comodo (PLX?) - -usb:v10B5p9060* - ID_PRODUCT_FROM_DATABASE=Test Board - -usb:v10B8* - ID_VENDOR_FROM_DATABASE=DiBcom - -usb:v10B8p0BB8* - ID_PRODUCT_FROM_DATABASE=DiBcom USB DVB-T reference design (MOD300) (cold) - -usb:v10B8p0BB9* - ID_PRODUCT_FROM_DATABASE=DiBcom USB DVB-T reference design (MOD300) (warm) - -usb:v10B8p0BC6* - ID_PRODUCT_FROM_DATABASE=DiBcom USB2.0 DVB-T reference design (MOD3000P) (cold) - -usb:v10B8p0BC7* - ID_PRODUCT_FROM_DATABASE=DiBcom USB2.0 DVB-T reference design (MOD3000P) (warm) - -usb:v10BB* - ID_VENDOR_FROM_DATABASE=TM Technology, Inc. - -usb:v10BC* - ID_VENDOR_FROM_DATABASE=Dinging Technology Co., Ltd - -usb:v10BD* - ID_VENDOR_FROM_DATABASE=TMT Technology, Inc. - -usb:v10BDp1427* - ID_PRODUCT_FROM_DATABASE=Ethernet - -usb:v10BF* - ID_VENDOR_FROM_DATABASE=SmartHome - -usb:v10BFp0001* - ID_PRODUCT_FROM_DATABASE=SmartHome PowerLinc - -usb:v10C4* - ID_VENDOR_FROM_DATABASE=Cygnal Integrated Products, Inc. - -usb:v10C4p0002* - ID_PRODUCT_FROM_DATABASE=F32x USBXpress Device - -usb:v10C4p0003* - ID_PRODUCT_FROM_DATABASE=CommandIR - -usb:v10C4p8030* - ID_PRODUCT_FROM_DATABASE=K4JRG Ham Radio devices - -usb:v10C4p8044* - ID_PRODUCT_FROM_DATABASE=USB Debug Adapter - -usb:v10C4p804E* - ID_PRODUCT_FROM_DATABASE=Software Bisque Paramount ME - -usb:v10C4p80A9* - ID_PRODUCT_FROM_DATABASE=CP210x to UART Bridge Controller - -usb:v10C4p80CA* - ID_PRODUCT_FROM_DATABASE=ATM2400 Sensor Device - -usb:v10C4p813F* - ID_PRODUCT_FROM_DATABASE=tams EasyControl - -usb:v10C4p8149* - ID_PRODUCT_FROM_DATABASE=West Mountain Radio Computerized Battery Analyzer - -usb:v10C4p814A* - ID_PRODUCT_FROM_DATABASE=West Mountain Radio RIGblaster P&P - -usb:v10C4p814B* - ID_PRODUCT_FROM_DATABASE=West Mountain Radio RIGtalk - -usb:v10C4p818A* - ID_PRODUCT_FROM_DATABASE=Silicon Labs FM Radio Reference Design - -usb:v10C4p81E8* - ID_PRODUCT_FROM_DATABASE=Zephyr BioHarness - -usb:v10C4p8460* - ID_PRODUCT_FROM_DATABASE=Sangoma Wanpipe VoiceTime - -usb:v10C4p8461* - ID_PRODUCT_FROM_DATABASE=Sangoma U100 - -usb:v10C4p8477* - ID_PRODUCT_FROM_DATABASE=Balluff RFID Reader - -usb:v10C4p8605* - ID_PRODUCT_FROM_DATABASE=dilitronics ESoLUX solar lighting controller - -usb:v10C4p86BC* - ID_PRODUCT_FROM_DATABASE=C8051F34x AudioDelay [AD-340] - -usb:v10C4p8789* - ID_PRODUCT_FROM_DATABASE=C8051F34x Extender & EDID MGR [EMX-DVI] - -usb:v10C4p87BE* - ID_PRODUCT_FROM_DATABASE=C8051F34x HDMI Audio Extractor [EMX-HD-AUD] - -usb:v10C4p8863* - ID_PRODUCT_FROM_DATABASE=C8051F34x Bootloader - -usb:v10C4pEA60* - ID_PRODUCT_FROM_DATABASE=CP210x UART Bridge / myAVR mySmartUSB light - -usb:v10C4pEA61* - ID_PRODUCT_FROM_DATABASE=CP210x UART Bridge - -usb:v10C4pEA70* - ID_PRODUCT_FROM_DATABASE=CP210x UART Bridge - -usb:v10C4pEA80* - ID_PRODUCT_FROM_DATABASE=CP210x UART Bridge - -usb:v10C5* - ID_VENDOR_FROM_DATABASE=Sanei Electric, Inc. - -usb:v10C5p819A* - ID_PRODUCT_FROM_DATABASE=FM Radio - -usb:v10C6* - ID_VENDOR_FROM_DATABASE=Intec, Inc. - -usb:v10CB* - ID_VENDOR_FROM_DATABASE=Eratech - -usb:v10CC* - ID_VENDOR_FROM_DATABASE=GBM Connector Co., Ltd - -usb:v10CCp1101* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v10CD* - ID_VENDOR_FROM_DATABASE=Kycon, Inc. - -usb:v10CE* - ID_VENDOR_FROM_DATABASE=Silicon Labs - -usb:v10CEpEA6A* - ID_PRODUCT_FROM_DATABASE=MobiData EDGE USB Modem - -usb:v10CF* - ID_VENDOR_FROM_DATABASE=Velleman Components, Inc. - -usb:v10CFp2011* - ID_PRODUCT_FROM_DATABASE=R-Engine MPEG2 encoder/decoder - -usb:v10CFp5500* - ID_PRODUCT_FROM_DATABASE=8055 Experiment Interface Board (address=0) - -usb:v10CFp5501* - ID_PRODUCT_FROM_DATABASE=8055 Experiment Interface Board (address=1) - -usb:v10CFp5502* - ID_PRODUCT_FROM_DATABASE=8055 Experiment Interface Board (address=2) - -usb:v10CFp5503* - ID_PRODUCT_FROM_DATABASE=8055 Experiment Interface Board (address=3) - -usb:v10D1* - ID_VENDOR_FROM_DATABASE=Hottinger Baldwin Measurement - -usb:v10D1p0101* - ID_PRODUCT_FROM_DATABASE=USB-Module for Spider8, CP32 - -usb:v10D1p0202* - ID_PRODUCT_FROM_DATABASE=CP22 - Communication Processor - -usb:v10D1p0301* - ID_PRODUCT_FROM_DATABASE=CP42 - Communication Processor - -usb:v10D4* - ID_VENDOR_FROM_DATABASE=Man Boon Manufactory, Ltd - -usb:v10D5* - ID_VENDOR_FROM_DATABASE=Uni Class Technology Co., Ltd - -usb:v10D5p5552* - ID_PRODUCT_FROM_DATABASE=KVM Human Interface Composite Device (Keyboard/Mouse ports) - -usb:v10D5p55A2* - ID_PRODUCT_FROM_DATABASE=2Port KVMSwitcher - -usb:v10D6* - ID_VENDOR_FROM_DATABASE=Actions Semiconductor Co., Ltd - -usb:v10D6p1000* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v10D6p1100* - ID_PRODUCT_FROM_DATABASE=MPMan MP-Ki 128 MP3 Player/Recorder - -usb:v10D6p1101* - ID_PRODUCT_FROM_DATABASE=D-Wave 2GB MP4 Player / AK1025 MP3/MP4 Player - -usb:v10D6p2200* - ID_PRODUCT_FROM_DATABASE=Acer MP-120 MP3 player - -usb:v10D6p8888* - ID_PRODUCT_FROM_DATABASE=ADFU Device - -usb:v10D6pFF51* - ID_PRODUCT_FROM_DATABASE=ADFU Device - -usb:v10D6pFF61* - ID_PRODUCT_FROM_DATABASE=MP4 Player - -usb:v10D6pFF66* - ID_PRODUCT_FROM_DATABASE=Craig 2GB MP3/Video Player - -usb:v10DE* - ID_VENDOR_FROM_DATABASE=Authenex, Inc. - -usb:v10DF* - ID_VENDOR_FROM_DATABASE=In-Win Development, Inc. - -usb:v10DFp0500* - ID_PRODUCT_FROM_DATABASE=iAPP CR-e500 Card reader - -usb:v10E0* - ID_VENDOR_FROM_DATABASE=Post-Op Video, Inc. - -usb:v10E1* - ID_VENDOR_FROM_DATABASE=CablePlus, Ltd - -usb:v10E2* - ID_VENDOR_FROM_DATABASE=Nada Electronics, Ltd - -usb:v10EC* - ID_VENDOR_FROM_DATABASE=Vast Technologies, Inc. - -usb:v10F0* - ID_VENDOR_FROM_DATABASE=Nexio Co., Ltd - -usb:v10F0p2002* - ID_PRODUCT_FROM_DATABASE=iNexio Touchscreen controller - -usb:v10F1* - ID_VENDOR_FROM_DATABASE=Importek - -usb:v10F1p1A08* - ID_PRODUCT_FROM_DATABASE=Internal Webcam - -usb:v10F1p1A1E* - ID_PRODUCT_FROM_DATABASE=Laptop Integrated Webcam 1.3M - -usb:v10F1p1A2A* - ID_PRODUCT_FROM_DATABASE=Laptop Integrated Webcam - -usb:v10F5* - ID_VENDOR_FROM_DATABASE=Turtle Beach - -usb:v10F5p0200* - ID_PRODUCT_FROM_DATABASE=Audio Advantage Roadie - -usb:v10FB* - ID_VENDOR_FROM_DATABASE=Pictos Technologies, Inc. - -usb:v10FD* - ID_VENDOR_FROM_DATABASE=Anubis Electronics, Ltd - -usb:v10FDp7E50* - ID_PRODUCT_FROM_DATABASE=FlyCam Usb 100 - -usb:v10FDp804D* - ID_PRODUCT_FROM_DATABASE=Typhoon Webshot II Webcam [zc0301] - -usb:v10FDp8050* - ID_PRODUCT_FROM_DATABASE=FlyCAM-USB 300 XP2 - -usb:v10FDpDE00* - ID_PRODUCT_FROM_DATABASE=WinFast WalkieTV WDM Capture Driver. - -usb:v10FE* - ID_VENDOR_FROM_DATABASE=Thrane & Thrane - -usb:v10FEp000C* - ID_PRODUCT_FROM_DATABASE=TT-3750 BGAN-XL Radio Module - -usb:v1100* - ID_VENDOR_FROM_DATABASE=VirTouch, Ltd - -usb:v1100p0001* - ID_PRODUCT_FROM_DATABASE=VTPlayer VTP-1 Braille Mouse - -usb:v1101* - ID_VENDOR_FROM_DATABASE=EasyPass Industrial Co., Ltd - -usb:v1101p0001* - ID_PRODUCT_FROM_DATABASE=FSK Electronics Super GSM Reader - -usb:v1108* - ID_VENDOR_FROM_DATABASE=Brightcom Technologies, Ltd - -usb:v110A* - ID_VENDOR_FROM_DATABASE=Moxa Technologies Co., Ltd. - -usb:v110Ap1250* - ID_PRODUCT_FROM_DATABASE=UPort 1250 2-Port RS-232/422/485 - -usb:v110Ap1251* - ID_PRODUCT_FROM_DATABASE=UPort 1250I 2-Port RS-232/422/485 with Isolation - -usb:v110Ap1410* - ID_PRODUCT_FROM_DATABASE=UPort 1410 4-Port RS-232 - -usb:v110Ap1450* - ID_PRODUCT_FROM_DATABASE=UPort 1450 4-Port RS-232/422/485 - -usb:v110Ap1451* - ID_PRODUCT_FROM_DATABASE=UPort 1450I 4-Port RS-232/422/485 with Isolation - -usb:v110Ap1613* - ID_PRODUCT_FROM_DATABASE=UPort 1610-16 16-Port RS-232 - -usb:v110Ap1618* - ID_PRODUCT_FROM_DATABASE=UPort 1610-8 8-Port RS-232 - -usb:v110Ap1653* - ID_PRODUCT_FROM_DATABASE=UPort 1650-16 16-Port RS-232/422/485 - -usb:v110Ap1658* - ID_PRODUCT_FROM_DATABASE=UPort 1650-8 8-Port RS-232/422/485 - -usb:v1110* - ID_VENDOR_FROM_DATABASE=Analog Devices Canada, Ltd (Allied Telesyn) - -usb:v1110p5C01* - ID_PRODUCT_FROM_DATABASE=Huawei MT-882 Remote NDIS Network Device - -usb:v1110p6489* - ID_PRODUCT_FROM_DATABASE=ADSL ETH/USB RTR - -usb:v1110p9000* - ID_PRODUCT_FROM_DATABASE=ADSL LAN Adapter - -usb:v1110p9001* - ID_PRODUCT_FROM_DATABASE=ADSL Loader - -usb:v1110p900F* - ID_PRODUCT_FROM_DATABASE=AT-AR215 DSL Modem - -usb:v1110p9010* - ID_PRODUCT_FROM_DATABASE=AT-AR215 DSL Modem - -usb:v1110p9021* - ID_PRODUCT_FROM_DATABASE=ADSL WAN Adapter - -usb:v1110p9022* - ID_PRODUCT_FROM_DATABASE=ADSL Loader - -usb:v1110p9023* - ID_PRODUCT_FROM_DATABASE=ADSL WAN Adapter - -usb:v1110p9024* - ID_PRODUCT_FROM_DATABASE=ADSL Loader - -usb:v1110p9031* - ID_PRODUCT_FROM_DATABASE=ADSL LAN Adapter - -usb:v1110p9032* - ID_PRODUCT_FROM_DATABASE=ADSL Loader - -usb:v1111* - ID_VENDOR_FROM_DATABASE=Pandora International Ltd. - -usb:v1111p8888* - ID_PRODUCT_FROM_DATABASE=Evolution Device - -usb:v1112* - ID_VENDOR_FROM_DATABASE=YM ELECTRIC CO., Ltd - -usb:v1113* - ID_VENDOR_FROM_DATABASE=Medion AG - -usb:v1113pA0A2* - ID_PRODUCT_FROM_DATABASE=Active Sync device - -usb:v111E* - ID_VENDOR_FROM_DATABASE=VSO Electric Co., Ltd - -usb:v112A* - ID_VENDOR_FROM_DATABASE=RedRat - -usb:v112Ap0001* - ID_PRODUCT_FROM_DATABASE=RedRat3 IR Transceiver - -usb:v112Ap0005* - ID_PRODUCT_FROM_DATABASE=RedRat3II IR Transceiver - -usb:v112E* - ID_VENDOR_FROM_DATABASE=Master Hill Electric Wire and Cable Co., Ltd - -usb:v112F* - ID_VENDOR_FROM_DATABASE=Cellon International, Inc. - -usb:v1130* - ID_VENDOR_FROM_DATABASE=Tenx Technology, Inc. - -usb:v1130p0002* - ID_PRODUCT_FROM_DATABASE=iBuddy - -usb:v1130p0202* - ID_PRODUCT_FROM_DATABASE=Rocket Launcher - -usb:v1130p6604* - ID_PRODUCT_FROM_DATABASE=MCE IR-Receiver - -usb:v1130p660C* - ID_PRODUCT_FROM_DATABASE=Foot Pedal/Thermometer - -usb:v1130p6806* - ID_PRODUCT_FROM_DATABASE=Keychain photo frame - -usb:v1130pC301* - ID_PRODUCT_FROM_DATABASE=Digital Photo viewer [Wallet Pix] - -usb:v1130pF211* - ID_PRODUCT_FROM_DATABASE=TP6911 Audio Headset - -usb:v1131* - ID_VENDOR_FROM_DATABASE=Integrated System Solution Corp. - -usb:v1131p1001* - ID_PRODUCT_FROM_DATABASE=KY-BT100 Bluetooth Adapter - -usb:v1131p1002* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v1131p1003* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v1131p1004* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v1132* - ID_VENDOR_FROM_DATABASE=Toshiba Corp., Digital Media Equipment [hex] - -usb:v1132p4331* - ID_PRODUCT_FROM_DATABASE=PDR-M4/M5/M70 Digital Camera - -usb:v1132p4332* - ID_PRODUCT_FROM_DATABASE=PDR-M60 Digital Camera - -usb:v1132p4333* - ID_PRODUCT_FROM_DATABASE=PDR-M2300/PDR-M700 - -usb:v1132p4334* - ID_PRODUCT_FROM_DATABASE=PDR-M65 - -usb:v1132p4335* - ID_PRODUCT_FROM_DATABASE=PDR-M61 - -usb:v1132p4337* - ID_PRODUCT_FROM_DATABASE=PDR-M11 - -usb:v1132p4338* - ID_PRODUCT_FROM_DATABASE=PDR-M25 - -usb:v1136* - ID_VENDOR_FROM_DATABASE=CTS Electronincs - -usb:v1136p3131* - ID_PRODUCT_FROM_DATABASE=CTS LS515 - -usb:v113C* - ID_VENDOR_FROM_DATABASE=Arin Tech Co., Ltd - -usb:v113D* - ID_VENDOR_FROM_DATABASE=Mapower Electronics Co., Ltd - -usb:v1141* - ID_VENDOR_FROM_DATABASE=V One Multimedia, Pte., Ltd - -usb:v1142* - ID_VENDOR_FROM_DATABASE=CyberScan Technologies, Inc. - -usb:v1145* - ID_VENDOR_FROM_DATABASE=Japan Radio Company - -usb:v1145p0001* - ID_PRODUCT_FROM_DATABASE=AirH PHONE AH-J3001V/J3002V - -usb:v1146* - ID_VENDOR_FROM_DATABASE=Shimane SANYO Electric Co., Ltd. - -usb:v1147* - ID_VENDOR_FROM_DATABASE=Ever Great Electric Wire and Cable Co., Ltd - -usb:v114B* - ID_VENDOR_FROM_DATABASE=Sphairon Access Systems GmbH - -usb:v114Bp0110* - ID_PRODUCT_FROM_DATABASE=Turbolink UB801R WLAN Adapter - -usb:v114Bp0150* - ID_PRODUCT_FROM_DATABASE=Turbolink UB801RE Wireless 802.11g 54Mbps Network Adapter [RTL8187] - -usb:v114C* - ID_VENDOR_FROM_DATABASE=Tinius Olsen Testing Machine Co., Inc. - -usb:v114D* - ID_VENDOR_FROM_DATABASE=Alpha Imaging Technology Corp. - -usb:v114F* - ID_VENDOR_FROM_DATABASE=Wavecom - -usb:v115B* - ID_VENDOR_FROM_DATABASE=Salix Technology Co., Ltd. - -usb:v1162* - ID_VENDOR_FROM_DATABASE=Secugen Corp. - -usb:v1163* - ID_VENDOR_FROM_DATABASE=DeLorme Publishing, Inc. - -usb:v1163p0100* - ID_PRODUCT_FROM_DATABASE=Earthmate GPS (orig) - -usb:v1163p0200* - ID_PRODUCT_FROM_DATABASE=Earthmate GPS (LT-20, LT-40) - -usb:v1163p2020* - ID_PRODUCT_FROM_DATABASE=Earthmate GPS (PN-40) - -usb:v1164* - ID_VENDOR_FROM_DATABASE=YUAN High-Tech Development Co., Ltd - -usb:v1164p0300* - ID_PRODUCT_FROM_DATABASE=ELSAVISION 460D - -usb:v1164p0601* - ID_PRODUCT_FROM_DATABASE=Analog TV Tuner - -usb:v1164p0900* - ID_PRODUCT_FROM_DATABASE=TigerBird BMP837 USB2.0 WDM Encoder - -usb:v1164p0BC7* - ID_PRODUCT_FROM_DATABASE=Digital TV Tuner - -usb:v1164p521B* - ID_PRODUCT_FROM_DATABASE=MC521A mini Card ATSC Tuner - -usb:v1164p6601* - ID_PRODUCT_FROM_DATABASE=Digital TV Tuner Card [RTL2832U] - -usb:v1165* - ID_VENDOR_FROM_DATABASE=Telson Electronics Co., Ltd - -usb:v1166* - ID_VENDOR_FROM_DATABASE=Bantam Interactive Technologies - -usb:v1167* - ID_VENDOR_FROM_DATABASE=Salient Systems Corp. - -usb:v1168* - ID_VENDOR_FROM_DATABASE=BizConn International Corp. - -usb:v116E* - ID_VENDOR_FROM_DATABASE=Gigastorage Corp. - -usb:v116F* - ID_VENDOR_FROM_DATABASE=Silicon 10 Technology Corp. - -usb:v116Fp0005* - ID_PRODUCT_FROM_DATABASE=Flash Card Reader - -usb:v116FpC108* - ID_PRODUCT_FROM_DATABASE=Flash Card Reader - -usb:v116FpC109* - ID_PRODUCT_FROM_DATABASE=Flash Card Reader - -usb:v1175* - ID_VENDOR_FROM_DATABASE=Shengyih Steel Mold Co., Ltd - -usb:v117D* - ID_VENDOR_FROM_DATABASE=Santa Electronic, Inc. - -usb:v117E* - ID_VENDOR_FROM_DATABASE=JNC, Inc. - -usb:v1182* - ID_VENDOR_FROM_DATABASE=Venture Corp., Ltd - -usb:v1183* - ID_VENDOR_FROM_DATABASE=Compaq Computer Corp. [hex] (Digital Dream ??) - -usb:v1183p0001* - ID_PRODUCT_FROM_DATABASE=DigitalDream l'espion XS - -usb:v1183p19C7* - ID_PRODUCT_FROM_DATABASE=ISDN TA - -usb:v1183p4008* - ID_PRODUCT_FROM_DATABASE=56k FaxModem - -usb:v1183p504A* - ID_PRODUCT_FROM_DATABASE=PJB-100 Personal Jukebox - -usb:v1184* - ID_VENDOR_FROM_DATABASE=Kyocera Elco Corp. - -usb:v1188* - ID_VENDOR_FROM_DATABASE=Bloomberg L.P. - -usb:v1189* - ID_VENDOR_FROM_DATABASE=Acer Communications & Multimedia - -usb:v1189p0893* - ID_PRODUCT_FROM_DATABASE=EP-1427X-2 Ethernet Adapter [Acer] - -usb:v118F* - ID_VENDOR_FROM_DATABASE=You Yang Technology Co., Ltd - -usb:v1190* - ID_VENDOR_FROM_DATABASE=Tripace - -usb:v1191* - ID_VENDOR_FROM_DATABASE=Loyalty Founder Enterprise Co., Ltd - -usb:v1196* - ID_VENDOR_FROM_DATABASE=Yankee Robotics, LLC - -usb:v1196p0010* - ID_PRODUCT_FROM_DATABASE=Trifid Camera without code - -usb:v1196p0011* - ID_PRODUCT_FROM_DATABASE=Trifid Camera - -usb:v1197* - ID_VENDOR_FROM_DATABASE=Technoimagia Co., Ltd - -usb:v1198* - ID_VENDOR_FROM_DATABASE=StarShine Technology Corp. - -usb:v1199* - ID_VENDOR_FROM_DATABASE=Sierra Wireless, Inc. - -usb:v1199p0019* - ID_PRODUCT_FROM_DATABASE=AC595U - -usb:v1199p0021* - ID_PRODUCT_FROM_DATABASE=AC597E - -usb:v1199p0024* - ID_PRODUCT_FROM_DATABASE=MC5727 CDMA modem - -usb:v1199p0110* - ID_PRODUCT_FROM_DATABASE=Composite Device - -usb:v1199p0112* - ID_PRODUCT_FROM_DATABASE=CDMA 1xEVDO PC Card, AirCard 580 - -usb:v1199p0120* - ID_PRODUCT_FROM_DATABASE=AC595U - -usb:v1199p0218* - ID_PRODUCT_FROM_DATABASE=MC5720 Wireless Modem - -usb:v1199p6467* - ID_PRODUCT_FROM_DATABASE=MP Series Network Adapter - -usb:v1199p6468* - ID_PRODUCT_FROM_DATABASE=MP Series Network Adapter - -usb:v1199p6469* - ID_PRODUCT_FROM_DATABASE=MP Series Network Adapter - -usb:v1199p6802* - ID_PRODUCT_FROM_DATABASE=MC8755 Device - -usb:v1199p6803* - ID_PRODUCT_FROM_DATABASE=MC8765 Device - -usb:v1199p6804* - ID_PRODUCT_FROM_DATABASE=MC8755 Device - -usb:v1199p6805* - ID_PRODUCT_FROM_DATABASE=MC8765 Device - -usb:v1199p6812* - ID_PRODUCT_FROM_DATABASE=MC8775 Device - -usb:v1199p6820* - ID_PRODUCT_FROM_DATABASE=AC875 Device - -usb:v1199p6832* - ID_PRODUCT_FROM_DATABASE=MC8780 Device - -usb:v1199p6833* - ID_PRODUCT_FROM_DATABASE=MC8781 Device - -usb:v1199p683A* - ID_PRODUCT_FROM_DATABASE=MC8785 Device - -usb:v1199p683C* - ID_PRODUCT_FROM_DATABASE=MC8790 Device - -usb:v1199p6850* - ID_PRODUCT_FROM_DATABASE=AirCard 880 Device - -usb:v1199p6851* - ID_PRODUCT_FROM_DATABASE=AirCard 881 Device - -usb:v1199p6852* - ID_PRODUCT_FROM_DATABASE=AirCard 880E Device - -usb:v1199p6853* - ID_PRODUCT_FROM_DATABASE=AirCard 881E Device - -usb:v1199p6854* - ID_PRODUCT_FROM_DATABASE=AirCard 885 Device - -usb:v1199p6856* - ID_PRODUCT_FROM_DATABASE=ATT "USB Connect 881" - -usb:v1199p6870* - ID_PRODUCT_FROM_DATABASE=MC8780 Device - -usb:v1199p6871* - ID_PRODUCT_FROM_DATABASE=MC8781 Device - -usb:v1199p6893* - ID_PRODUCT_FROM_DATABASE=MC8777 Device - -usb:v1199p68A3* - ID_PRODUCT_FROM_DATABASE=MC8700 Modem - -usb:v1199p68AA* - ID_PRODUCT_FROM_DATABASE=4G LTE adapter - -usb:v1199p9000* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem (QDL mode) - -usb:v1199p9001* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem - -usb:v1199p9002* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem - -usb:v1199p9003* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem - -usb:v1199p9004* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem - -usb:v1199p9005* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem - -usb:v1199p9006* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem - -usb:v1199p9007* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem - -usb:v1199p9008* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem - -usb:v1199p9009* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem - -usb:v1199p900A* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem - -usb:v119A* - ID_VENDOR_FROM_DATABASE=ZHAN QI Technology Co., Ltd - -usb:v119B* - ID_VENDOR_FROM_DATABASE=ruwido austria GmbH - -usb:v119Bp0400* - ID_PRODUCT_FROM_DATABASE=Infrared Keyboard V2.01 - -usb:v11A0* - ID_VENDOR_FROM_DATABASE=Chipcon AS - -usb:v11A0pEB11* - ID_PRODUCT_FROM_DATABASE=CC2400EB 2.0 ZigBee Sniffer - -usb:v11A3* - ID_VENDOR_FROM_DATABASE=Technovas Co., Ltd - -usb:v11A3p8031* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v11A3p8032* - ID_PRODUCT_FROM_DATABASE=MP3 Player - -usb:v11AA* - ID_VENDOR_FROM_DATABASE=GlobalMedia Group, LLC - -usb:v11AAp1518* - ID_PRODUCT_FROM_DATABASE=iREZ K2 - -usb:v11AB* - ID_VENDOR_FROM_DATABASE=Exito Electronics Co., Ltd - -usb:v11AC* - ID_VENDOR_FROM_DATABASE=Nike - -usb:v11ACp6565* - ID_PRODUCT_FROM_DATABASE=FuelBand - -usb:v11B0* - ID_VENDOR_FROM_DATABASE=ATECH FLASH TECHNOLOGY - -usb:v11C5* - ID_VENDOR_FROM_DATABASE=Inmax - -usb:v11C5p0521* - ID_PRODUCT_FROM_DATABASE=IMT-0521 Smartcard Reader - -usb:v11DB* - ID_VENDOR_FROM_DATABASE=Topfield Co., Ltd. - -usb:v11DBp1000* - ID_PRODUCT_FROM_DATABASE=PVR - -usb:v11DBp1100* - ID_PRODUCT_FROM_DATABASE=PVR - -usb:v11E6* - ID_VENDOR_FROM_DATABASE=K.I. Technology Co. Ltd. - -usb:v11F5* - ID_VENDOR_FROM_DATABASE=Siemens AG - -usb:v11F5p0001* - ID_PRODUCT_FROM_DATABASE=SX1 - -usb:v11F5p0003* - ID_PRODUCT_FROM_DATABASE=Mobile phone USB cable - -usb:v11F5p0004* - ID_PRODUCT_FROM_DATABASE=X75 - -usb:v11F5p0005* - ID_PRODUCT_FROM_DATABASE=SXG75/EF81 - -usb:v11F5p0008* - ID_PRODUCT_FROM_DATABASE=UMTS/HSDPA Data Card - -usb:v11F6* - ID_VENDOR_FROM_DATABASE=Prolific - -usb:v11F6p2001* - ID_PRODUCT_FROM_DATABASE=Willcom WSIM - -usb:v11F7* - ID_VENDOR_FROM_DATABASE=Alcatel (?) - -usb:v11F7p02DF* - ID_PRODUCT_FROM_DATABASE=TD10 Mobile phone USB cable - -usb:v1203* - ID_VENDOR_FROM_DATABASE=TSC Auto ID Technology Co., Ltd - -usb:v1203p0140* - ID_PRODUCT_FROM_DATABASE=TTP-245C - -usb:v1209* - ID_VENDOR_FROM_DATABASE=InterBiometrics - -usb:v1209p1001* - ID_PRODUCT_FROM_DATABASE=USB Hub - -usb:v1209p1002* - ID_PRODUCT_FROM_DATABASE=USB Relais - -usb:v1209p1003* - ID_PRODUCT_FROM_DATABASE=IBSecureCam-P - -usb:v1209p1004* - ID_PRODUCT_FROM_DATABASE=IBSecureCam-O - -usb:v1209p1005* - ID_PRODUCT_FROM_DATABASE=IBSecureCam-N - -usb:v120E* - ID_VENDOR_FROM_DATABASE=Hudson Soft Co., Ltd - -usb:v120F* - ID_VENDOR_FROM_DATABASE=Magellan - -usb:v120Fp524E* - ID_PRODUCT_FROM_DATABASE=RoadMate 1475T - -usb:v120Fp5260* - ID_PRODUCT_FROM_DATABASE=Triton Handheld GPS Receiver (300/400/500/1500/2000) - -usb:v1210* - ID_VENDOR_FROM_DATABASE=DigiTech - -usb:v1210p001B* - ID_PRODUCT_FROM_DATABASE=RP155 Guitar Multi-Effects Processor - -usb:v1210p001C* - ID_PRODUCT_FROM_DATABASE=RP255 Guitar Multi-Effects Processor - -usb:v121E* - ID_VENDOR_FROM_DATABASE=Jungsoft Co., Ltd - -usb:v121Ep3403* - ID_PRODUCT_FROM_DATABASE=Muzio JM250 Audio Player - -usb:v1223* - ID_VENDOR_FROM_DATABASE=SKYCABLE ENTERPRISE. CO., LTD. - -usb:v1230* - ID_VENDOR_FROM_DATABASE=Chipidea-Microelectronica, S.A. - -usb:v1233* - ID_VENDOR_FROM_DATABASE=Denver Electronics - -usb:v1233p5677* - ID_PRODUCT_FROM_DATABASE=FUSB200 mp3 player - -usb:v1234* - ID_VENDOR_FROM_DATABASE=Brain Actuated Technologies - -usb:v1234p0000* - ID_PRODUCT_FROM_DATABASE=Neural Impulse Actuator Prototype 1.0 [NIA] - -usb:v1234p4321* - ID_PRODUCT_FROM_DATABASE=Human Interface Device - -usb:v1234pED02* - ID_PRODUCT_FROM_DATABASE=Emotiv EPOC Developer Headset Wireless Dongle - -usb:v1235* - ID_VENDOR_FROM_DATABASE=Novation EMS - -usb:v1235p0001* - ID_PRODUCT_FROM_DATABASE=ReMOTE Audio/XStation - -usb:v1235p0002* - ID_PRODUCT_FROM_DATABASE=Speedio - -usb:v1235p0003* - ID_PRODUCT_FROM_DATABASE=ReMOTE ZeRO SL - -usb:v1235p4661* - ID_PRODUCT_FROM_DATABASE=ReMOTE25 - -usb:v1235p8006* - ID_PRODUCT_FROM_DATABASE=Focusrite Scarlett 2i2 - -usb:v1241* - ID_VENDOR_FROM_DATABASE=Belkin - -usb:v1241p0504* - ID_PRODUCT_FROM_DATABASE=Wireless Trackball Keyboard - -usb:v1241p1111* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v1241p1122* - ID_PRODUCT_FROM_DATABASE=Typhoon Stream Optical Mouse USB+PS/2 - -usb:v1241p1155* - ID_PRODUCT_FROM_DATABASE=PS2/USB Browser Combo Mouse - -usb:v1241p1166* - ID_PRODUCT_FROM_DATABASE=MI-2150 Trust Mouse - -usb:v1241p1177* - ID_PRODUCT_FROM_DATABASE=F8E842-DL Mouse - -usb:v1241p1503* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v1241p1603* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v1241pF767* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v124A* - ID_VENDOR_FROM_DATABASE=AirVast - -usb:v124Ap168B* - ID_PRODUCT_FROM_DATABASE=PRISM3 WLAN Adapter - -usb:v124Ap4017* - ID_PRODUCT_FROM_DATABASE=PC-Chips 802.11b Adapter - -usb:v124Ap4023* - ID_PRODUCT_FROM_DATABASE=WM168g 802.11bg Wireless Adapter [Intersil ISL3886] - -usb:v124Ap4025* - ID_PRODUCT_FROM_DATABASE=IOGear GWU513 v2 802.11bg Wireless Adapter [Intersil ISL3887] - -usb:v124B* - ID_VENDOR_FROM_DATABASE=Nyko (Honey Bee) - -usb:v124Bp4D01* - ID_PRODUCT_FROM_DATABASE=Airflo EX Joystick - -usb:v124C* - ID_VENDOR_FROM_DATABASE=MXI - Memory Experts International, Inc. - -usb:v124Cp3200* - ID_PRODUCT_FROM_DATABASE=Stealth MXP 1GB - -usb:v125C* - ID_VENDOR_FROM_DATABASE=Apogee Inc. - -usb:v125Cp0010* - ID_PRODUCT_FROM_DATABASE=Alta series CCD - -usb:v125F* - ID_VENDOR_FROM_DATABASE=A-DATA Technology Co., Ltd. - -usb:v125Fp312A* - ID_PRODUCT_FROM_DATABASE=Superior S102 - -usb:v125Fp312B* - ID_PRODUCT_FROM_DATABASE=Superior S102 Pro - -usb:v125FpA91A* - ID_PRODUCT_FROM_DATABASE=Portable HDD CH91 - -usb:v125FpC08A* - ID_PRODUCT_FROM_DATABASE=C008 Flash Drive - -usb:v125FpC81A* - ID_PRODUCT_FROM_DATABASE=Flash drive - -usb:v125FpC93A* - ID_PRODUCT_FROM_DATABASE=4GB Pen Drive - -usb:v125FpC96A* - ID_PRODUCT_FROM_DATABASE=C906 Flash Drive - -usb:v1260* - ID_VENDOR_FROM_DATABASE=Standard Microsystems Corp. - -usb:v1260pEE22* - ID_PRODUCT_FROM_DATABASE=SMC2862W-G v3 EZ Connect 802.11g Adapter [Intersil ISL3887] - -usb:v1264* - ID_VENDOR_FROM_DATABASE=Covidien Energy-based Devices - -usb:v1266* - ID_VENDOR_FROM_DATABASE=Pirelli Broadband Solutions - -usb:v1266p6302* - ID_PRODUCT_FROM_DATABASE=Fastweb DRG A226M ADSL Router - -usb:v1267* - ID_VENDOR_FROM_DATABASE=Logic3 / SpectraVideo plc - -usb:v1267p0103* - ID_PRODUCT_FROM_DATABASE=G-720 Keyboard - -usb:v1267p0201* - ID_PRODUCT_FROM_DATABASE=A4Tech SWOP-3 Mouse - -usb:v1267p0210* - ID_PRODUCT_FROM_DATABASE=LG Optical Mouse 3D-310 - -usb:v1267pA001* - ID_PRODUCT_FROM_DATABASE=JP260 PC Game Pad - -usb:v1267pC002* - ID_PRODUCT_FROM_DATABASE=Wireless Optical Mouse - -usb:v126C* - ID_VENDOR_FROM_DATABASE=Aristocrat Technologies - -usb:v126D* - ID_VENDOR_FROM_DATABASE=Bel Stewart - -usb:v126E* - ID_VENDOR_FROM_DATABASE=Strobe Data, Inc. - -usb:v126F* - ID_VENDOR_FROM_DATABASE=TwinMOS - -usb:v126Fp0163* - ID_PRODUCT_FROM_DATABASE=Storage device (2gB thumb drive) - -usb:v126Fp1325* - ID_PRODUCT_FROM_DATABASE=Mobile Disk - -usb:v126Fp2168* - ID_PRODUCT_FROM_DATABASE=Mobile Disk III - -usb:v126FpA006* - ID_PRODUCT_FROM_DATABASE=G240 802.11bg - -usb:v1274* - ID_VENDOR_FROM_DATABASE=Ensoniq - -usb:v1275* - ID_VENDOR_FROM_DATABASE=Xaxero Marine Software Engineering, Ltd. - -usb:v1275p0002* - ID_PRODUCT_FROM_DATABASE=WeatherFax 2000 Demodulator - -usb:v1275p0080* - ID_PRODUCT_FROM_DATABASE=SkyEye Weather Satellite Receiver - -usb:v1278* - ID_VENDOR_FROM_DATABASE=Starlight Xpress - -usb:v1278p0105* - ID_PRODUCT_FROM_DATABASE=SXV-M5 - -usb:v1278p0107* - ID_PRODUCT_FROM_DATABASE=SXV-M7 - -usb:v1278p0109* - ID_PRODUCT_FROM_DATABASE=SXV-M9 - -usb:v1278p0110* - ID_PRODUCT_FROM_DATABASE=SXVF-H16 - -usb:v1278p0115* - ID_PRODUCT_FROM_DATABASE=SXVF-H5 - -usb:v1278p0119* - ID_PRODUCT_FROM_DATABASE=SXV-H9 - -usb:v1278p0135* - ID_PRODUCT_FROM_DATABASE=SXVF-H35 - -usb:v1278p0136* - ID_PRODUCT_FROM_DATABASE=SXVF-H36 - -usb:v1278p0200* - ID_PRODUCT_FROM_DATABASE=SXV interface for paraller MX cameras - -usb:v1278p0305* - ID_PRODUCT_FROM_DATABASE=SXV-M5C - -usb:v1278p0307* - ID_PRODUCT_FROM_DATABASE=SXV-M7C - -usb:v1278p0319* - ID_PRODUCT_FROM_DATABASE=SXV-H9C - -usb:v1278p0325* - ID_PRODUCT_FROM_DATABASE=SXV-M25C - -usb:v1278p0326* - ID_PRODUCT_FROM_DATABASE=SXVR-M26C - -usb:v1278p0507* - ID_PRODUCT_FROM_DATABASE=Lodestar autoguider - -usb:v1278p0517* - ID_PRODUCT_FROM_DATABASE=CoStar - -usb:v1283* - ID_VENDOR_FROM_DATABASE=zebris Medical GmbH - -usb:v1283p0100* - ID_PRODUCT_FROM_DATABASE=USB-RS232 Adaptor - -usb:v1283p0110* - ID_PRODUCT_FROM_DATABASE=CMS20 - -usb:v1283p0111* - ID_PRODUCT_FROM_DATABASE=CMS 10 - -usb:v1283p0112* - ID_PRODUCT_FROM_DATABASE=CMS 05 - -usb:v1283p0114* - ID_PRODUCT_FROM_DATABASE=ARCUS digma PC-Interface - -usb:v1283p0115* - ID_PRODUCT_FROM_DATABASE=SAM Axioquick recorder - -usb:v1283p0116* - ID_PRODUCT_FROM_DATABASE=SAM Axioquick recorder - -usb:v1283p0120* - ID_PRODUCT_FROM_DATABASE=emed-X - -usb:v1283p0121* - ID_PRODUCT_FROM_DATABASE=emed-AT - -usb:v1283p0130* - ID_PRODUCT_FROM_DATABASE=PDM - -usb:v1283p0150* - ID_PRODUCT_FROM_DATABASE=CMS10GI (Golf) - -usb:v1286* - ID_VENDOR_FROM_DATABASE=Marvell Semiconductor, Inc. - -usb:v1286p1FAB* - ID_PRODUCT_FROM_DATABASE=88W8338 [Libertas] 802.11g - -usb:v1286p2001* - ID_PRODUCT_FROM_DATABASE=88W8388 802.11a/b/g WLAN - -usb:v1286p2006* - ID_PRODUCT_FROM_DATABASE=88W8362 802.11n WLAN - -usb:v1286p8001* - ID_PRODUCT_FROM_DATABASE=BLOB boot loader firmware - -usb:v1291* - ID_VENDOR_FROM_DATABASE=Qualcomm Flarion Technologies, Inc. / Leadtek Research, Inc. - -usb:v1291p0010* - ID_PRODUCT_FROM_DATABASE=FDM 2xxx Flash-OFDM modem - -usb:v1291p0011* - ID_PRODUCT_FROM_DATABASE=LR7F06/LR7F14 Flash-OFDM modem - -usb:v1292* - ID_VENDOR_FROM_DATABASE=Innomedia - -usb:v1292p0258* - ID_PRODUCT_FROM_DATABASE=Creative Labs VoIP Blaster - -usb:v1293* - ID_VENDOR_FROM_DATABASE=Belkin Components [hex] - -usb:v1293p0002* - ID_PRODUCT_FROM_DATABASE=F5U002 Parallel Port [uss720] - -usb:v1293p2101* - ID_PRODUCT_FROM_DATABASE=104-key keyboard - -usb:v1294* - ID_VENDOR_FROM_DATABASE=RISO KAGAKU CORP. - -usb:v129B* - ID_VENDOR_FROM_DATABASE=CyberTAN Technology - -usb:v129Bp160B* - ID_PRODUCT_FROM_DATABASE=Siemens S30853-S1031-R351 802.11g Wireless Adapter [Atheros AR5523] - -usb:v129Bp160C* - ID_PRODUCT_FROM_DATABASE=Siemens S30853-S1038-R351 802.11g Wireless Adapter [Atheros AR5523] - -usb:v129Bp1666* - ID_PRODUCT_FROM_DATABASE=TG54USB 802.11bg - -usb:v129Bp1667* - ID_PRODUCT_FROM_DATABASE=802.11bg - -usb:v129Bp1828* - ID_PRODUCT_FROM_DATABASE=Gigaset USB Adapter 300 - -usb:v12A7* - ID_VENDOR_FROM_DATABASE=Trendchip Technologies Corp. - -usb:v12AB* - ID_VENDOR_FROM_DATABASE=Honey Bee Electronic International Ltd. - -usb:v12B8* - ID_VENDOR_FROM_DATABASE=Zhejiang Xinya Electronic Technology Co., Ltd. - -usb:v12B9* - ID_VENDOR_FROM_DATABASE=E28 - -usb:v12BA* - ID_VENDOR_FROM_DATABASE=Licensed by Sony Computer Entertainment America - -usb:v12BAp00FF* - ID_PRODUCT_FROM_DATABASE=Rocksmith Guitar Adapter - -usb:v12BAp0100* - ID_PRODUCT_FROM_DATABASE=RedOctane Guitar for PlayStation(R)3 - -usb:v12BAp0120* - ID_PRODUCT_FROM_DATABASE=RedOctane Drum Kit for PlayStation(R)3 - -usb:v12BAp0200* - ID_PRODUCT_FROM_DATABASE=Harmonix Guitar for PlayStation(R)3 - -usb:v12BAp0210* - ID_PRODUCT_FROM_DATABASE=Harmonix Drum Kit for PlayStation(R)3 - -usb:v12C4* - ID_VENDOR_FROM_DATABASE=Autocue Group Ltd - -usb:v12C4p0006* - ID_PRODUCT_FROM_DATABASE=Teleprompter Two-button Hand Control (v1) - -usb:v12C4p0008* - ID_PRODUCT_FROM_DATABASE=Teleprompter Foot Control (v1) - -usb:v12D1* - ID_VENDOR_FROM_DATABASE=Huawei Technologies Co., Ltd. - -usb:v12D1p1001* - ID_PRODUCT_FROM_DATABASE=E169/E620/E800 HSDPA Modem - -usb:v12D1p1003* - ID_PRODUCT_FROM_DATABASE=E220 HSDPA Modem / E230/E270/E870 HSDPA/HSUPA Modem - -usb:v12D1p1004* - ID_PRODUCT_FROM_DATABASE=E220 (bis) - -usb:v12D1p1009* - ID_PRODUCT_FROM_DATABASE=U120 - -usb:v12D1p1010* - ID_PRODUCT_FROM_DATABASE=ETS2252+ CDMA Fixed Wireless Terminal - -usb:v12D1p1021* - ID_PRODUCT_FROM_DATABASE=U8520 - -usb:v12D1p1035* - ID_PRODUCT_FROM_DATABASE=U8120 - -usb:v12D1p1037* - ID_PRODUCT_FROM_DATABASE=Ideos - -usb:v12D1p1038* - ID_PRODUCT_FROM_DATABASE=Ideos (debug mode) - -usb:v12D1p1039* - ID_PRODUCT_FROM_DATABASE=Ideos (tethering mode) - -usb:v12D1p1406* - ID_PRODUCT_FROM_DATABASE=E1750 - -usb:v12D1p140B* - ID_PRODUCT_FROM_DATABASE=EC1260 Wireless Data Modem HSD USB Card - -usb:v12D1p140C* - ID_PRODUCT_FROM_DATABASE=E180v - -usb:v12D1p1412* - ID_PRODUCT_FROM_DATABASE=EC168c - -usb:v12D1p1436* - ID_PRODUCT_FROM_DATABASE=E173 3G Modem (modem-mode) - -usb:v12D1p1446* - ID_PRODUCT_FROM_DATABASE=E1552/E1800/E173 (HSPA modem) - -usb:v12D1p1465* - ID_PRODUCT_FROM_DATABASE=K3765 HSPA - -usb:v12D1p14C3* - ID_PRODUCT_FROM_DATABASE=K5005 Vodafone LTE/UMTS/GSM Modem/Networkcard - -usb:v12D1p14C8* - ID_PRODUCT_FROM_DATABASE=K5005 Vodafone LTE/UMTS/GSM MOdem/Networkcard - -usb:v12D1p14C9* - ID_PRODUCT_FROM_DATABASE=K3770 3G Modem - -usb:v12D1p14D1* - ID_PRODUCT_FROM_DATABASE=K3770 3G Modem (Mass Storage Mode) - -usb:v12D1p14F1* - ID_PRODUCT_FROM_DATABASE=Gobi 3000 HSPA+ Modem - -usb:v12D1p1501* - ID_PRODUCT_FROM_DATABASE=Pulse - -usb:v12D1p1505* - ID_PRODUCT_FROM_DATABASE=E398 LTE/UMTS/GSM Modem/Networkcard - -usb:v12D1p1506* - ID_PRODUCT_FROM_DATABASE=E398 LTE/UMTS/GSM Modem/Networkcard - -usb:v12D1p150A* - ID_PRODUCT_FROM_DATABASE=E398 LTE/UMTS/GSM Modem/Networkcard - -usb:v12D1p1520* - ID_PRODUCT_FROM_DATABASE=K3765 HSPA - -usb:v12D1p1521* - ID_PRODUCT_FROM_DATABASE=K4505 HSPA+ - -usb:v12D1p1805* - ID_PRODUCT_FROM_DATABASE=AT&T Go Phone U2800A phone - -usb:v12D1p1C05* - ID_PRODUCT_FROM_DATABASE=E173s 3G broadband stick (modem on) - -usb:v12D1p1C0B* - ID_PRODUCT_FROM_DATABASE=E173s 3G broadband stick (modem off) - -usb:v12D1p1D50* - ID_PRODUCT_FROM_DATABASE=ET302s TD-SCDMA/TD-HSDPA Mobile Broadband - -usb:v12D1p380B* - ID_PRODUCT_FROM_DATABASE=WiMAX USB modem(s) - -usb:v12D2* - ID_VENDOR_FROM_DATABASE=LINE TECH INDUSTRIAL CO., LTD. - -usb:v12D6* - ID_VENDOR_FROM_DATABASE=EMS Dr. Thomas Wuensche - -usb:v12D6p0444* - ID_PRODUCT_FROM_DATABASE=CPC-USB/ARM7 - -usb:v12D6p0888* - ID_PRODUCT_FROM_DATABASE=CPC-USB/M16C - -usb:v12D7* - ID_VENDOR_FROM_DATABASE=BETTER WIRE FACTORY CO., LTD. - -usb:v12E6* - ID_VENDOR_FROM_DATABASE=Waldorf Music GmbH - -usb:v12E6p0013* - ID_PRODUCT_FROM_DATABASE=Blofeld - -usb:v12EF* - ID_VENDOR_FROM_DATABASE=Tapwave, Inc. - -usb:v12EFp0100* - ID_PRODUCT_FROM_DATABASE=Tapwave Handheld [Tapwave Zodiac] - -usb:v12F5* - ID_VENDOR_FROM_DATABASE=Dynamic System Electronics Corp. - -usb:v12F7* - ID_VENDOR_FROM_DATABASE=Memorex Products, Inc. - -usb:v12F7p1A00* - ID_PRODUCT_FROM_DATABASE=TD Classic 003B - -usb:v12F7p1E23* - ID_PRODUCT_FROM_DATABASE=TravelDrive 2007 Flash Drive - -usb:v12FD* - ID_VENDOR_FROM_DATABASE=AIN Comm. Technology Co., Ltd - -usb:v12FDp1001* - ID_PRODUCT_FROM_DATABASE=AWU2000b 802.11b Stick - -usb:v12FF* - ID_VENDOR_FROM_DATABASE=Fascinating Electronics, Inc. - -usb:v12FFp0101* - ID_PRODUCT_FROM_DATABASE=Advanced RC Servo Controller - -usb:v1307* - ID_VENDOR_FROM_DATABASE=Transcend Information, Inc. - -usb:v1307p0163* - ID_PRODUCT_FROM_DATABASE=256MB/512MB/1GB Flash Drive - -usb:v1307p0165* - ID_PRODUCT_FROM_DATABASE=2GB/4GB Flash Drive - -usb:v1307p0190* - ID_PRODUCT_FROM_DATABASE=Ut190 8 GB Flash Drive with MicroSD reader - -usb:v1307p0310* - ID_PRODUCT_FROM_DATABASE=SD/MicroSD CardReader [hama] - -usb:v1307p0330* - ID_PRODUCT_FROM_DATABASE=63-in-1 Multi-Card Reader/Writer - -usb:v1307p0361* - ID_PRODUCT_FROM_DATABASE=CR-75: 51-in-1 Card Reader/Writer [Sakar] - -usb:v1307p1169* - ID_PRODUCT_FROM_DATABASE=TS2GJF210 JetFlash 210 2GB - -usb:v1307p1171* - ID_PRODUCT_FROM_DATABASE=Fingerprint Reader - -usb:v1308* - ID_VENDOR_FROM_DATABASE=Shuttle, Inc. - -usb:v1308p0003* - ID_PRODUCT_FROM_DATABASE=VFD Module - -usb:v1308pC001* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Transceiver - -usb:v1310* - ID_VENDOR_FROM_DATABASE=Roper - -usb:v1310p0001* - ID_PRODUCT_FROM_DATABASE=Class 1 Bluetooth Dongle - -usb:v1312* - ID_VENDOR_FROM_DATABASE=ICS Electronics - -usb:v1313* - ID_VENDOR_FROM_DATABASE=ThorLabs - -usb:v1313p8070* - ID_PRODUCT_FROM_DATABASE=PM100D - -usb:v131D* - ID_VENDOR_FROM_DATABASE=Natural Point - -usb:v131Dp0155* - ID_PRODUCT_FROM_DATABASE=TrackIR 3 Pro Head Tracker - -usb:v131Dp0156* - ID_PRODUCT_FROM_DATABASE=TrackIR 4 Pro Head Tracker - -usb:v132A* - ID_VENDOR_FROM_DATABASE=Envara Inc. - -usb:v132Ap1502* - ID_PRODUCT_FROM_DATABASE=WiND 802.11abg / 802.11bg WLAN - -usb:v132B* - ID_VENDOR_FROM_DATABASE=Konica Minolta - -usb:v132Bp0000* - ID_PRODUCT_FROM_DATABASE=Dimage A2 Camera - -usb:v132Bp0001* - ID_PRODUCT_FROM_DATABASE=Minolta DiMAGE A2 (ptp) - -usb:v132Bp0003* - ID_PRODUCT_FROM_DATABASE=Dimage Xg Camera - -usb:v132Bp0006* - ID_PRODUCT_FROM_DATABASE=Dimage Z2 Camera - -usb:v132Bp0007* - ID_PRODUCT_FROM_DATABASE=Minolta DiMAGE Z2 (PictBridge mode) - -usb:v132Bp0008* - ID_PRODUCT_FROM_DATABASE=Dimage X21 Camera - -usb:v132Bp000A* - ID_PRODUCT_FROM_DATABASE=Dimage Scan Dual IV AF-3200 (2891) - -usb:v132Bp000B* - ID_PRODUCT_FROM_DATABASE=Dimage Z10 Camera - -usb:v132Bp000D* - ID_PRODUCT_FROM_DATABASE=Dimage X50 Camera [storage?] - -usb:v132Bp000F* - ID_PRODUCT_FROM_DATABASE=Dimage X50 Camera [p2p?] - -usb:v132Bp0010* - ID_PRODUCT_FROM_DATABASE=Dimage G600 Camera - -usb:v132Bp0012* - ID_PRODUCT_FROM_DATABASE=Dimage Scan Elite 5400 II (2892) - -usb:v132Bp0013* - ID_PRODUCT_FROM_DATABASE=Dimage X31 Camera - -usb:v132Bp0015* - ID_PRODUCT_FROM_DATABASE=Dimage G530 Camera - -usb:v132Bp0017* - ID_PRODUCT_FROM_DATABASE=Dimage Z3 Camera - -usb:v132Bp0018* - ID_PRODUCT_FROM_DATABASE=Minolta DiMAGE Z3 (PictBridge mode) - -usb:v132Bp0019* - ID_PRODUCT_FROM_DATABASE=Dimage A200 Camera - -usb:v132Bp0021* - ID_PRODUCT_FROM_DATABASE=Dimage Z5 Camera - -usb:v132Bp0022* - ID_PRODUCT_FROM_DATABASE=Minolta DiMAGE Z5 (PictBridge mode) - -usb:v132Bp002C* - ID_PRODUCT_FROM_DATABASE=Dynax 5D camera - -usb:v132Bp2001* - ID_PRODUCT_FROM_DATABASE=Magicolor 2400w - -usb:v132Bp2004* - ID_PRODUCT_FROM_DATABASE=Magicolor 5430DL - -usb:v132Bp2005* - ID_PRODUCT_FROM_DATABASE=Magicolor 2430 DL - -usb:v132Bp2029* - ID_PRODUCT_FROM_DATABASE=Magicolor 5440DL - -usb:v132Bp2030* - ID_PRODUCT_FROM_DATABASE=PagePro 1350E(N) - -usb:v132Bp2033* - ID_PRODUCT_FROM_DATABASE=PagePro 1400W - -usb:v132Bp2043* - ID_PRODUCT_FROM_DATABASE=Magicolor 2530DL - -usb:v132Bp2045* - ID_PRODUCT_FROM_DATABASE=Magicolor 2500W - -usb:v132Bp2049* - ID_PRODUCT_FROM_DATABASE=Magicolor 2490MF - -usb:v1342* - ID_VENDOR_FROM_DATABASE=Mobility - -usb:v1342p0200* - ID_PRODUCT_FROM_DATABASE=EasiDock 200 Hub - -usb:v1342p0201* - ID_PRODUCT_FROM_DATABASE=EasiDock 200 Keyboard and Mouse Port - -usb:v1342p0202* - ID_PRODUCT_FROM_DATABASE=EasiDock 200 Serial Port - -usb:v1342p0203* - ID_PRODUCT_FROM_DATABASE=EasiDock 200 Printer Port - -usb:v1342p0204* - ID_PRODUCT_FROM_DATABASE=Ethernet - -usb:v1342p0304* - ID_PRODUCT_FROM_DATABASE=EasiDock Ethernet - -usb:v1345* - ID_VENDOR_FROM_DATABASE=Sino Lite Technology Corp. - -usb:v1345p001C* - ID_PRODUCT_FROM_DATABASE=Xbox Controller Hub - -usb:v1345p6006* - ID_PRODUCT_FROM_DATABASE=Defender Wireless Controller - -usb:v1347* - ID_VENDOR_FROM_DATABASE=Moravian Instruments - -usb:v1347p0400* - ID_PRODUCT_FROM_DATABASE=G2CCD USB 1.1 obsolete - -usb:v1347p0401* - ID_PRODUCT_FROM_DATABASE=G2CCD-S with Sony ICX285 CCD - -usb:v1347p0402* - ID_PRODUCT_FROM_DATABASE=G2CCD2 - -usb:v1347p0403* - ID_PRODUCT_FROM_DATABASE=G2/G3CCD-I KAI CCD - -usb:v1347p0404* - ID_PRODUCT_FROM_DATABASE=G2/G3/G4 CCD-F KAF CCD - -usb:v1347p0410* - ID_PRODUCT_FROM_DATABASE=G1-0400 CCD - -usb:v1347p0411* - ID_PRODUCT_FROM_DATABASE=G1-0800 CCD - -usb:v1347p0412* - ID_PRODUCT_FROM_DATABASE=G1-0300 CCD - -usb:v1347p0413* - ID_PRODUCT_FROM_DATABASE=G1-2000 CCD - -usb:v1347p0414* - ID_PRODUCT_FROM_DATABASE=G1-1400 CCD - -usb:v1348* - ID_VENDOR_FROM_DATABASE=Katsuragawa Electric Co., Ltd. - -usb:v134C* - ID_VENDOR_FROM_DATABASE=PanJit International Inc. - -usb:v134Cp0001* - ID_PRODUCT_FROM_DATABASE=Touch Panel Controller - -usb:v134Cp0002* - ID_PRODUCT_FROM_DATABASE=Touch Panel Controller - -usb:v134Cp0003* - ID_PRODUCT_FROM_DATABASE=Touch Panel Controller - -usb:v134Cp0004* - ID_PRODUCT_FROM_DATABASE=Touch Panel Controller - -usb:v134E* - ID_VENDOR_FROM_DATABASE=Digby's Bitpile, Inc. DBA D Bit - -usb:v1357* - ID_VENDOR_FROM_DATABASE=P&E Microcomputer Systems - -usb:v1357p0503* - ID_PRODUCT_FROM_DATABASE=USB-ML-12 HCS08/HCS12 Multilink - -usb:v1357p0504* - ID_PRODUCT_FROM_DATABASE=DEMOJM - -usb:v1366* - ID_VENDOR_FROM_DATABASE=SEGGER - -usb:v1366p0101* - ID_PRODUCT_FROM_DATABASE=J-Link ARM - -usb:v136B* - ID_VENDOR_FROM_DATABASE=STEC - -usb:v1370* - ID_VENDOR_FROM_DATABASE=Swissbit - -usb:v1370p0323* - ID_PRODUCT_FROM_DATABASE=Swissmemory cirrusWHITE - -usb:v1370p6828* - ID_PRODUCT_FROM_DATABASE=Victorinox Flash Drive - -usb:v1371* - ID_VENDOR_FROM_DATABASE=CNet Technology Inc. - -usb:v1371p0001* - ID_PRODUCT_FROM_DATABASE=CNUSB-611AR Wireless Adapter-G [AT76C503] - -usb:v1371p0002* - ID_PRODUCT_FROM_DATABASE=CNUSB-611AR Wireless Adapter-G [AT76C503] (FiberLine WL-240U) - -usb:v1371p0013* - ID_PRODUCT_FROM_DATABASE=CNUSB-611 Wireless Adapter [AT76C505] - -usb:v1371p0014* - ID_PRODUCT_FROM_DATABASE=CNUSB-611 Wireless Adapter [AT76C505] (FiberLine WL-240U) - -usb:v1371p5743* - ID_PRODUCT_FROM_DATABASE=CNUSB-611 (D) Wireless Adapter [AT76C503] - -usb:v1371p9022* - ID_PRODUCT_FROM_DATABASE=CWD-854 [RT2573] - -usb:v1371p9032* - ID_PRODUCT_FROM_DATABASE=CWD-854 rev F - -usb:v1371p9401* - ID_PRODUCT_FROM_DATABASE=CWD-854 Wireless 802.11g 54Mbps Network Adapter [RTL8187] - -usb:v1376* - ID_VENDOR_FROM_DATABASE=Vimtron Electronics Co., Ltd. - -usb:v137B* - ID_VENDOR_FROM_DATABASE=SCAPS GmbH - -usb:v137Bp0002* - ID_PRODUCT_FROM_DATABASE=SCAPS USC-2 Scanner Controller - -usb:v1385* - ID_VENDOR_FROM_DATABASE=Netgear, Inc - -usb:v1385p4250* - ID_PRODUCT_FROM_DATABASE=WG111T - -usb:v1385p4251* - ID_PRODUCT_FROM_DATABASE=WG111T (no firmware) - -usb:v1385p5F00* - ID_PRODUCT_FROM_DATABASE=WPN111 RangeMax(TM) Wireless USB 2.0 Adapter - -usb:v1385p5F01* - ID_PRODUCT_FROM_DATABASE=WPN111 (no firmware) - -usb:v1385p5F02* - ID_PRODUCT_FROM_DATABASE=WPN111 (no firmware) - -usb:v1385p6E00* - ID_PRODUCT_FROM_DATABASE=WPNT121 802.11g 240Mbps Wireless Adapter [Airgo AGN300] - -usb:v138A* - ID_VENDOR_FROM_DATABASE=Validity Sensors, Inc. - -usb:v138Ap0001* - ID_PRODUCT_FROM_DATABASE=VFS101 Fingerprint Reader - -usb:v138Ap0005* - ID_PRODUCT_FROM_DATABASE=VFS301 Fingerprint Reader - -usb:v138Ap0007* - ID_PRODUCT_FROM_DATABASE=VFS451 Fingerprint Reader - -usb:v138Ap0008* - ID_PRODUCT_FROM_DATABASE=VFS300 Fingerprint Reader - -usb:v138Ap0011* - ID_PRODUCT_FROM_DATABASE=VFS5011 Fingerprint Reader - -usb:v138Ap0018* - ID_PRODUCT_FROM_DATABASE=Fingerprint scanner - -usb:v138Ap003C* - ID_PRODUCT_FROM_DATABASE=VFS471 Fingerprint Reader - -usb:v138E* - ID_VENDOR_FROM_DATABASE=Jungo LTD - -usb:v138Ep9000* - ID_PRODUCT_FROM_DATABASE=Raisonance S.A. STM32 ARM evaluation board - -usb:v1390* - ID_VENDOR_FROM_DATABASE=TOMTOM B.V. - -usb:v1390p0001* - ID_PRODUCT_FROM_DATABASE=GO 520 T/GO 630/ONE XL (v9) - -usb:v1391* - ID_VENDOR_FROM_DATABASE=IdealTEK, Inc. - -usb:v1391p1000* - ID_PRODUCT_FROM_DATABASE=URTC-1000 - -usb:v1395* - ID_VENDOR_FROM_DATABASE=Sennheiser Communications - -usb:v1395p3556* - ID_PRODUCT_FROM_DATABASE=USB Headset - -usb:v1397* - ID_VENDOR_FROM_DATABASE=BEHRINGER International GmbH - -usb:v1397p00BC* - ID_PRODUCT_FROM_DATABASE=BCF2000 - -usb:v1398* - ID_VENDOR_FROM_DATABASE=Q-tec - -usb:v1398p2103* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Storage Device - -usb:v13AD* - ID_VENDOR_FROM_DATABASE=Baltech - -usb:v13ADp9999* - ID_PRODUCT_FROM_DATABASE=Card reader - -usb:v13B0* - ID_VENDOR_FROM_DATABASE=PerkinElmer Optoelectronics - -usb:v13B0p000A* - ID_PRODUCT_FROM_DATABASE=Alesis Photon X25 MIDI Controller - -usb:v13B1* - ID_VENDOR_FROM_DATABASE=Linksys - -usb:v13B1p000A* - ID_PRODUCT_FROM_DATABASE=WUSB54G v2 802.11g Adapter [Intersil ISL3887] - -usb:v13B1p000B* - ID_PRODUCT_FROM_DATABASE=WUSB11 v4.0 802.11b Adapter [ALi M4301] - -usb:v13B1p000C* - ID_PRODUCT_FROM_DATABASE=WUSB54AG 802.11a/g Adapter [Intersil ISL3887] - -usb:v13B1p000D* - ID_PRODUCT_FROM_DATABASE=WUSB54G v4 802.11g Adapter [Ralink RT2500USB] - -usb:v13B1p000E* - ID_PRODUCT_FROM_DATABASE=WUSB54GS v1 802.11g Adapter [Broadcom 4320 USB] - -usb:v13B1p0011* - ID_PRODUCT_FROM_DATABASE=WUSB54GP v4.0 802.11g Adapter [Ralink RT2500USB] - -usb:v13B1p0014* - ID_PRODUCT_FROM_DATABASE=WUSB54GS v2 802.11g Adapter [Broadcom 4320 USB] - -usb:v13B1p0018* - ID_PRODUCT_FROM_DATABASE=USB200M 10/100 Ethernet Adapter - -usb:v13B1p001A* - ID_PRODUCT_FROM_DATABASE=HU200TS Wireless Adapter - -usb:v13B1p001E* - ID_PRODUCT_FROM_DATABASE=WUSBF54G 802.11bg - -usb:v13B1p0020* - ID_PRODUCT_FROM_DATABASE=WUSB54GC v1 802.11g Adapter [Ralink RT73] - -usb:v13B1p0022* - ID_PRODUCT_FROM_DATABASE=WUSB54GX4 802.11g 240Mbps Wireless Adapter [Airgo AGN300] - -usb:v13B1p0023* - ID_PRODUCT_FROM_DATABASE=WUSB54GR - -usb:v13B1p0024* - ID_PRODUCT_FROM_DATABASE=WUSBF54G v1.1 802.11bg - -usb:v13B1p0026* - ID_PRODUCT_FROM_DATABASE=WUSB54GSC v1 802.11g Adapter [Broadcom 4320 USB] - -usb:v13B1p0028* - ID_PRODUCT_FROM_DATABASE=WUSB200 802.11g Adapter [Ralink RT2671] - -usb:v13B1p0029* - ID_PRODUCT_FROM_DATABASE=WUSB300N 802.11bgn Wireless Adapter [Marvell 88W8362+88W8060] - -usb:v13B1p002F* - ID_PRODUCT_FROM_DATABASE=AE1000 v1 802.11n [Ralink RT3572] - -usb:v13B1p0031* - ID_PRODUCT_FROM_DATABASE=AM10 v1 802.11n [Ralink RT3072] - -usb:v13B1p0039* - ID_PRODUCT_FROM_DATABASE=AE1200 802.11bgn Wireless Adapter [Broadcom BCM43235] - -usb:v13B1p003A* - ID_PRODUCT_FROM_DATABASE=AE2500 802.11abgn Wireless Adapter [Broadcom BCM43236] - -usb:v13B1p13B1* - ID_PRODUCT_FROM_DATABASE=WUSB200: Wireless-G Business Network Adapter with Rangebooster - -usb:v13B2* - ID_VENDOR_FROM_DATABASE=Alesis - -usb:v13B2p0030* - ID_PRODUCT_FROM_DATABASE=Multimix 8 - -usb:v13B3* - ID_VENDOR_FROM_DATABASE=Nippon Dics Co., Ltd. - -usb:v13BA* - ID_VENDOR_FROM_DATABASE=PCPlay - -usb:v13BAp0001* - ID_PRODUCT_FROM_DATABASE=König Electronic CMP-KEYPAD12 Numeric Keypad - -usb:v13BAp0017* - ID_PRODUCT_FROM_DATABASE=PS/2 Keyboard+Mouse Adapter - -usb:v13BAp0018* - ID_PRODUCT_FROM_DATABASE=Barcode PCP-BCG4209 - -usb:v13BE* - ID_VENDOR_FROM_DATABASE=Ricoh Printing Systems, Ltd. - -usb:v13CA* - ID_VENDOR_FROM_DATABASE=JyeTai Precision Industrial Co., Ltd. - -usb:v13CF* - ID_VENDOR_FROM_DATABASE=Wisair Ltd. - -usb:v13CFp1200* - ID_PRODUCT_FROM_DATABASE=Olidata Wireless Multimedia Adapter - -usb:v13D0* - ID_VENDOR_FROM_DATABASE=Techsan Electronics Co., Ltd. - -usb:v13D0p2282* - ID_PRODUCT_FROM_DATABASE=TechniSat DVB-PC TV Star 2 - -usb:v13D1* - ID_VENDOR_FROM_DATABASE=A-Max Technology Macao Commercial Offshore Co. Ltd. - -usb:v13D1p7019* - ID_PRODUCT_FROM_DATABASE=MD 82288 - -usb:v13D1pABE6* - ID_PRODUCT_FROM_DATABASE=Wireless 802.11g 54Mbps Network Adapter [RTL8187] - -usb:v13D2* - ID_VENDOR_FROM_DATABASE=Shark Multimedia - -usb:v13D2p0400* - ID_PRODUCT_FROM_DATABASE=Pocket Ethernet [klsi] - -usb:v13D3* - ID_VENDOR_FROM_DATABASE=IMC Networks - -usb:v13D3p3201* - ID_PRODUCT_FROM_DATABASE=VisionDTV USB-Ter/HAMA USB DVB-T device cold - -usb:v13D3p3202* - ID_PRODUCT_FROM_DATABASE=VisionDTV USB-Ter/HAMA USB DVB-T device warm - -usb:v13D3p3203* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - -usb:v13D3p3204* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - -usb:v13D3p3205* - ID_PRODUCT_FROM_DATABASE=DNTV Live! Tiny USB2 BDA (No Remote) - -usb:v13D3p3206* - ID_PRODUCT_FROM_DATABASE=DNTV Live! Tiny USB2 BDA (No Remote) - -usb:v13D3p3207* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - -usb:v13D3p3208* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - -usb:v13D3p3209* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDST7022BDA DVB-S Box(Without HID) - -usb:v13D3p3211* - ID_PRODUCT_FROM_DATABASE=DTV-DVB Hybrid Analog/Capture / Pinnacle PCTV 310e - -usb:v13D3p3212* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDTT704C - DVBT/NTSC/PAL Driver(PCM4) - -usb:v13D3p3213* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver (PCM4) - -usb:v13D3p3214* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDTT704F -(MiniCard) DVBT/NTSC/PAL Driver(Without HID) - -usb:v13D3p3215* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDAT7240 - ATSC/NTSC/PAL Driver(PCM4) - -usb:v13D3p3216* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDTT 7047-USB 2.0 DVB-T Driver - -usb:v13D3p3217* - ID_PRODUCT_FROM_DATABASE=Digital-TV Receiver. - -usb:v13D3p3219* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDTT7049 - DVB-T Driver(Without HID) - -usb:v13D3p3220* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDTT 7047M-USB 2.0 DVB-T Driver - -usb:v13D3p3223* - ID_PRODUCT_FROM_DATABASE=DNTV Live! Tiny USB2 BDA (No Remote) - -usb:v13D3p3224* - ID_PRODUCT_FROM_DATABASE=DNTV Live! Tiny USB2 BDA (No Remote) - -usb:v13D3p3226* - ID_PRODUCT_FROM_DATABASE=DigitalNow TinyTwin DVB-T Receiver - -usb:v13D3p3234* - ID_PRODUCT_FROM_DATABASE=DVB-T FTA Half Minicard [RTL2832U] - -usb:v13D3p3236* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDTT 7047A-USB 2.0 DVB-T Driver - -usb:v13D3p3237* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDTT 704J - dual DVB-T Driver - -usb:v13D3p3239* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDTT704D - DVBT/NTSC/PAL Driver(Without HID) - -usb:v13D3p3240* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDXTTM6010 - A/D Driver(Without HID) - -usb:v13D3p3241* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDXTTM6010 - A/D Driver(Without HID) - -usb:v13D3p3242* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDAT7240LP - ATSC/NTSC/PAL Driver(Without HID) - -usb:v13D3p3243* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDXTTM6010 - A/D Driver(Without HID) - -usb:v13D3p3244* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDTT 7047Z-USB 2.0 DVB-T Driver - -usb:v13D3p3247* - ID_PRODUCT_FROM_DATABASE=802.11 n/g/b Wireless LAN Adapter - -usb:v13D3p3249* - ID_PRODUCT_FROM_DATABASE=Internal Bluetooth - -usb:v13D3p3262* - ID_PRODUCT_FROM_DATABASE=802.11 n/g/b Wireless LAN USB Adapter - -usb:v13D3p3273* - ID_PRODUCT_FROM_DATABASE=802.11 n/g/b Wireless LAN USB Mini-Card - -usb:v13D3p3274* - ID_PRODUCT_FROM_DATABASE=DVB-T Dongle [RTL2832U] - -usb:v13D3p3282* - ID_PRODUCT_FROM_DATABASE=DVB-T + GPS Minicard [RTL2832U] - -usb:v13D3p3284* - ID_PRODUCT_FROM_DATABASE=Wireless LAN USB Mini-Card - -usb:v13D3p3304* - ID_PRODUCT_FROM_DATABASE=Asus Integrated Bluetooth module [AR3011] - -usb:v13D3p3306* - ID_PRODUCT_FROM_DATABASE=Mediao 802.11n WLAN [Realtek RTL8191SU] - -usb:v13D3p3315* - ID_PRODUCT_FROM_DATABASE=Bluetooth module - -usb:v13D3p3375* - ID_PRODUCT_FROM_DATABASE=Atheros AR3012 Bluetooth 4.0 Adapter - -usb:v13D3p5070* - ID_PRODUCT_FROM_DATABASE=Webcam - -usb:v13D3p5111* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam - -usb:v13D3p5115* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam - -usb:v13D3p5116* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam - -usb:v13D3p5126* - ID_PRODUCT_FROM_DATABASE=PC Cam - -usb:v13D3p5702* - ID_PRODUCT_FROM_DATABASE=UVC VGA Webcam - -usb:v13D3p5710* - ID_PRODUCT_FROM_DATABASE=UVC VGA Webcam - -usb:v13D3p5716* - ID_PRODUCT_FROM_DATABASE=UVC VGA Webcam - -usb:v13D3p7020* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDST7020BDA DVB-S Box(DVBS for MCE2005) - -usb:v13D3p7022* - ID_PRODUCT_FROM_DATABASE=DTV-DVB UDST7022BDA DVB-S Box(Without HID) - -usb:v13DC* - ID_VENDOR_FROM_DATABASE=ALEREON, INC. - -usb:v13DD* - ID_VENDOR_FROM_DATABASE=i.Tech Dynamic Limited - -usb:v13E1* - ID_VENDOR_FROM_DATABASE=Kaibo Wire & Cable (Shenzhen) Co., Ltd. - -usb:v13E5* - ID_VENDOR_FROM_DATABASE=Rane - -usb:v13E5p0001* - ID_PRODUCT_FROM_DATABASE=SL-1 - -usb:v13E5p0003* - ID_PRODUCT_FROM_DATABASE=TTM 57SL - -usb:v13E6* - ID_VENDOR_FROM_DATABASE=TechnoScope Co., Ltd. - -usb:v13EA* - ID_VENDOR_FROM_DATABASE=Hengstler - -usb:v13EAp0001* - ID_PRODUCT_FROM_DATABASE=C-56 Thermal Printer - -usb:v13EC* - ID_VENDOR_FROM_DATABASE=Zydacron - -usb:v13ECp0006* - ID_PRODUCT_FROM_DATABASE=HID Remote Control - -usb:v13EE* - ID_VENDOR_FROM_DATABASE=MosArt - -usb:v13EEp0003* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v13FD* - ID_VENDOR_FROM_DATABASE=Initio Corporation - -usb:v13FDp0840* - ID_PRODUCT_FROM_DATABASE=INIC-1618L SATA - -usb:v13FDp0841* - ID_PRODUCT_FROM_DATABASE=Samsung SE-T084M DVD-RW - -usb:v13FDp1340* - ID_PRODUCT_FROM_DATABASE=Hi-Speed USB to SATA Bridge - -usb:v13FDp160F* - ID_PRODUCT_FROM_DATABASE=RocketFish SATA Bridge [INIC-1611] - -usb:v13FDp1640* - ID_PRODUCT_FROM_DATABASE=INIC-1610L SATA Bridge - -usb:v13FDp1840* - ID_PRODUCT_FROM_DATABASE=INIC-1608 SATA bridge - -usb:v13FE* - ID_VENDOR_FROM_DATABASE=Kingston Technology Company Inc. - -usb:v13FEp1A00* - ID_PRODUCT_FROM_DATABASE=512MB/1GB Flash Drive - -usb:v13FEp1A23* - ID_PRODUCT_FROM_DATABASE=512MB Flash Drive - -usb:v13FEp1D00* - ID_PRODUCT_FROM_DATABASE=DataTraveler 2.0 1GB/4GB Flash Drive / Patriot Xporter 4GB Flash Drive - -usb:v13FEp1E00* - ID_PRODUCT_FROM_DATABASE=Flash Drive 2 GB [ICIDU 2 GB] - -usb:v13FEp1E50* - ID_PRODUCT_FROM_DATABASE=U3 Smart Drive - -usb:v13FEp1F00* - ID_PRODUCT_FROM_DATABASE=DataTraveler 2.0 4GB Flash Drive / Patriot Xporter 32GB (PEF32GUSB) Flash Drive - -usb:v13FEp1F23* - ID_PRODUCT_FROM_DATABASE=2Gb - -usb:v13FEp2240* - ID_PRODUCT_FROM_DATABASE=microSD card reader - -usb:v13FEp3100* - ID_PRODUCT_FROM_DATABASE=2/4 GB stick - -usb:v13FEp3123* - ID_PRODUCT_FROM_DATABASE=Verbatim STORE N GO 4GB - -usb:v13FEp3800* - ID_PRODUCT_FROM_DATABASE=Rage XT Flash Drive - -usb:v13FEp3E00* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v13FEp5100* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v1400* - ID_VENDOR_FROM_DATABASE=Axxion Group Corp. - -usb:v1402* - ID_VENDOR_FROM_DATABASE=Bowe Bell & Howell - -usb:v1403* - ID_VENDOR_FROM_DATABASE=Sitronix - -usb:v1403p0001* - ID_PRODUCT_FROM_DATABASE=Digital Photo Frame - -usb:v140E* - ID_VENDOR_FROM_DATABASE=Telechips, Inc. - -usb:v140EpB011* - ID_PRODUCT_FROM_DATABASE=TCC780X-based player (USB Boot mode) - -usb:v140EpB021* - ID_PRODUCT_FROM_DATABASE=TCC77X-based players (USB Boot mode) - -usb:v1410* - ID_VENDOR_FROM_DATABASE=Novatel Wireless - -usb:v1410p1110* - ID_PRODUCT_FROM_DATABASE=Merlin S620 - -usb:v1410p1120* - ID_PRODUCT_FROM_DATABASE=Merlin EX720 - -usb:v1410p1130* - ID_PRODUCT_FROM_DATABASE=Merlin S720 - -usb:v1410p1400* - ID_PRODUCT_FROM_DATABASE=Merlin U730/U740 (Vodafone) - -usb:v1410p1410* - ID_PRODUCT_FROM_DATABASE=Merlin U740 (non-Vodafone) - -usb:v1410p1430* - ID_PRODUCT_FROM_DATABASE=Merlin XU870 - -usb:v1410p1450* - ID_PRODUCT_FROM_DATABASE=Merlin X950D - -usb:v1410p2110* - ID_PRODUCT_FROM_DATABASE=Ovation U720/MCD3000 - -usb:v1410p2410* - ID_PRODUCT_FROM_DATABASE=Expedite EU740 - -usb:v1410p2420* - ID_PRODUCT_FROM_DATABASE=Expedite EU850D/EU860D/EU870D - -usb:v1410p4100* - ID_PRODUCT_FROM_DATABASE=U727 - -usb:v1410p4400* - ID_PRODUCT_FROM_DATABASE=Ovation MC930D/MC950D - -usb:v1410p9010* - ID_PRODUCT_FROM_DATABASE=Expedite E362 - -usb:v1410pA001* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem - -usb:v1410pA008* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem (QDL mode) - -usb:v1410pB001* - ID_PRODUCT_FROM_DATABASE=Ovation MC551 - -usb:v1415* - ID_VENDOR_FROM_DATABASE=Nam Tai E&E Products Ltd. or OmniVision Technologies, Inc. - -usb:v1415p0000* - ID_PRODUCT_FROM_DATABASE=Sony SingStar USBMIC - -usb:v1415p0020* - ID_PRODUCT_FROM_DATABASE=Sony Wireless SingStar - -usb:v1415p2000* - ID_PRODUCT_FROM_DATABASE=Sony Playstation Eye - -usb:v1419* - ID_VENDOR_FROM_DATABASE=ABILITY ENTERPRISE CO., LTD. - -usb:v1429* - ID_VENDOR_FROM_DATABASE=Vega Technologies Industrial (Austria) Co. - -usb:v142A* - ID_VENDOR_FROM_DATABASE=Thales E-Transactions - -usb:v142Ap0003* - ID_PRODUCT_FROM_DATABASE=Artema Hybrid - -usb:v142Ap0005* - ID_PRODUCT_FROM_DATABASE=Artema Modular - -usb:v142Ap0043* - ID_PRODUCT_FROM_DATABASE=medCompact - -usb:v142B* - ID_VENDOR_FROM_DATABASE=Arbiter Systems, Inc. - -usb:v142Bp03A5* - ID_PRODUCT_FROM_DATABASE=933A Portable Power Sentinel - -usb:v1430* - ID_VENDOR_FROM_DATABASE=RedOctane - -usb:v1430p0150* - ID_PRODUCT_FROM_DATABASE=wireless receiver for skylanders wii - -usb:v1430p4734* - ID_PRODUCT_FROM_DATABASE=Guitar Hero4 hub - -usb:v1430p474B* - ID_PRODUCT_FROM_DATABASE=Guitar Hero MIDI interface - -usb:v1431* - ID_VENDOR_FROM_DATABASE=Pertech Resources, Inc. - -usb:v1435* - ID_VENDOR_FROM_DATABASE=Wistron NeWeb - -usb:v1435p0427* - ID_PRODUCT_FROM_DATABASE=UR054g 802.11g Wireless Adapter [Intersil ISL3887] - -usb:v1435p0711* - ID_PRODUCT_FROM_DATABASE=UR055G 802.11bg - -usb:v1435p0804* - ID_PRODUCT_FROM_DATABASE=AR9170+AR9104 802.11abgn Wireless Adapter - -usb:v1435p0826* - ID_PRODUCT_FROM_DATABASE=AR5523 - -usb:v1435p0827* - ID_PRODUCT_FROM_DATABASE=AR5523 (no firmware) - -usb:v1435p0828* - ID_PRODUCT_FROM_DATABASE=AR5523 - -usb:v1435p0829* - ID_PRODUCT_FROM_DATABASE=AR5523 (no firmware) - -usb:v1436* - ID_VENDOR_FROM_DATABASE=Denali Software, Inc. - -usb:v143C* - ID_VENDOR_FROM_DATABASE=Altek Corporation - -usb:v1443* - ID_VENDOR_FROM_DATABASE=Digilent - -usb:v1443p0007* - ID_PRODUCT_FROM_DATABASE=Development board JTAG - -usb:v1446* - ID_VENDOR_FROM_DATABASE=X.J.GROUP - -usb:v1446p6A73* - ID_PRODUCT_FROM_DATABASE=Stamps.com Model 510 5LB Scale - -usb:v1453* - ID_VENDOR_FROM_DATABASE=Radio Shack - -usb:v1453p4026* - ID_PRODUCT_FROM_DATABASE=26-183 Serial Cable - -usb:v1456* - ID_VENDOR_FROM_DATABASE=Extending Wire & Cable Co., Ltd. - -usb:v1457* - ID_VENDOR_FROM_DATABASE=First International Computer, Inc. - -usb:v1457p5117* - ID_PRODUCT_FROM_DATABASE=OpenMoko Neo1973 kernel usbnet (g_ether, CDC Ethernet) mode - -usb:v1457p5118* - ID_PRODUCT_FROM_DATABASE=OpenMoko Neo1973 Debug board (V2+) - -usb:v1457p5119* - ID_PRODUCT_FROM_DATABASE=OpenMoko Neo1973 u-boot cdc_acm serial port - -usb:v1457p5120* - ID_PRODUCT_FROM_DATABASE=OpenMoko Neo1973 u-boot usbtty generic serial - -usb:v1457p5121* - ID_PRODUCT_FROM_DATABASE=OpenMoko Neo1973 kernel mass storage (g_storage) mode - -usb:v1457p5122* - ID_PRODUCT_FROM_DATABASE=OpenMoko Neo1973 / Neo Freerunner kernel cdc_ether USB network - -usb:v1457p5123* - ID_PRODUCT_FROM_DATABASE=OpenMoko Neo1973 internal USB CSR4 module - -usb:v1457p5124* - ID_PRODUCT_FROM_DATABASE=OpenMoko Neo1973 Bluetooth Device ID service - -usb:v145F* - ID_VENDOR_FROM_DATABASE=Trust - -usb:v145Fp0106* - ID_PRODUCT_FROM_DATABASE=Trust K56 V92 USB Modem - -usb:v145Fp013D* - ID_PRODUCT_FROM_DATABASE=PC Camera (SN9C201 + OV7660) - -usb:v145Fp013F* - ID_PRODUCT_FROM_DATABASE=Megapixel Auto Focus Webcam - -usb:v145Fp0142* - ID_PRODUCT_FROM_DATABASE=WB-6250X Webcam - -usb:v145Fp015A* - ID_PRODUCT_FROM_DATABASE=WB-8300X 2MP Webcam - -usb:v145Fp0161* - ID_PRODUCT_FROM_DATABASE=15901 802.11bg Wireless Adapter [Realtek RTL8187L] - -usb:v145Fp0167* - ID_PRODUCT_FROM_DATABASE=Widescreen 3MP Webcam - -usb:v145Fp0176* - ID_PRODUCT_FROM_DATABASE=Isla Keyboard - -usb:v1460* - ID_VENDOR_FROM_DATABASE=Tatung Co. - -usb:v1460p9150* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Transceiver - -usb:v1461* - ID_VENDOR_FROM_DATABASE=Staccato Communications - -usb:v1462* - ID_VENDOR_FROM_DATABASE=Micro Star International - -usb:v1462p5512* - ID_PRODUCT_FROM_DATABASE=MegaStick-1 Flash Stick - -usb:v1462p8807* - ID_PRODUCT_FROM_DATABASE=DIGIVOX mini III [af9015] - -usb:v1472* - ID_VENDOR_FROM_DATABASE=Huawei-3Com - -usb:v1472p0007* - ID_PRODUCT_FROM_DATABASE=Aolynk WUB300g [ZyDAS ZD1211] - -usb:v1472p0009* - ID_PRODUCT_FROM_DATABASE=Aolynk WUB320g - -usb:v147A* - ID_VENDOR_FROM_DATABASE=Formosa Industrial Computing, Inc. - -usb:v147ApE015* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v147ApE016* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v147ApE017* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v147ApE018* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v147ApE02C* - ID_PRODUCT_FROM_DATABASE=Infrared Receiver - -usb:v147ApE03A* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v147ApE03C* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v147ApE03E* - ID_PRODUCT_FROM_DATABASE=Infrared Receiver [IR605A/Q] - -usb:v147E* - ID_VENDOR_FROM_DATABASE=Upek - -usb:v147Ep1000* - ID_PRODUCT_FROM_DATABASE=Biometric Touchchip/Touchstrip Fingerprint Sensor - -usb:v147Ep1001* - ID_PRODUCT_FROM_DATABASE=TCS5B Fingerprint sensor - -usb:v147Ep1002* - ID_PRODUCT_FROM_DATABASE=Biometric Touchchip/Touchstrip Fingerprint Sensor - -usb:v147Ep2016* - ID_PRODUCT_FROM_DATABASE=Biometric Touchchip/Touchstrip Fingerprint Sensor - -usb:v147Ep2020* - ID_PRODUCT_FROM_DATABASE=TouchChip Fingerprint Coprocessor (WBF advanced mode) - -usb:v147Ep3000* - ID_PRODUCT_FROM_DATABASE=TCS1C EIM/Cypress Fingerprint sensor - -usb:v147Ep3001* - ID_PRODUCT_FROM_DATABASE=TCS1C EIM/STM32 Fingerprint sensor - -usb:v147F* - ID_VENDOR_FROM_DATABASE=Hama GmbH & Co., KG - -usb:v1482* - ID_VENDOR_FROM_DATABASE=Vaillant - -usb:v1482p1005* - ID_PRODUCT_FROM_DATABASE=VRD PC-Interface - -usb:v1484* - ID_VENDOR_FROM_DATABASE=Elsa AG [hex] - -usb:v1484p1746* - ID_PRODUCT_FROM_DATABASE=Ecomo 19H99 Monitor - -usb:v1484p7616* - ID_PRODUCT_FROM_DATABASE=Elsa Hub - -usb:v1485* - ID_VENDOR_FROM_DATABASE=Silicom - -usb:v1485p0001* - ID_PRODUCT_FROM_DATABASE=U2E - -usb:v1485p0002* - ID_PRODUCT_FROM_DATABASE=Psion Gold Port Ethernet - -usb:v1487* - ID_VENDOR_FROM_DATABASE=DSP Group, Ltd. - -usb:v148E* - ID_VENDOR_FROM_DATABASE=EVATRONIX SA - -usb:v148F* - ID_VENDOR_FROM_DATABASE=Ralink Technology, Corp. - -usb:v148Fp1706* - ID_PRODUCT_FROM_DATABASE=RT2500USB Wireless Adapter - -usb:v148Fp2070* - ID_PRODUCT_FROM_DATABASE=RT2070 Wireless Adapter - -usb:v148Fp2570* - ID_PRODUCT_FROM_DATABASE=RT2570 Wireless Adapter - -usb:v148Fp2573* - ID_PRODUCT_FROM_DATABASE=RT2501/RT2573 Wireless Adapter - -usb:v148Fp2671* - ID_PRODUCT_FROM_DATABASE=RT2601/RT2671 Wireless Adapter - -usb:v148Fp2770* - ID_PRODUCT_FROM_DATABASE=RT2770 Wireless Adapter - -usb:v148Fp2870* - ID_PRODUCT_FROM_DATABASE=RT2870 Wireless Adapter - -usb:v148Fp3070* - ID_PRODUCT_FROM_DATABASE=RT2870/RT3070 Wireless Adapter - -usb:v148Fp3071* - ID_PRODUCT_FROM_DATABASE=RT3071 Wireless Adapter - -usb:v148Fp3072* - ID_PRODUCT_FROM_DATABASE=RT3072 Wireless Adapter - -usb:v148Fp3370* - ID_PRODUCT_FROM_DATABASE=RT3370 Wireless Adapter - -usb:v148Fp3572* - ID_PRODUCT_FROM_DATABASE=RT3572 Wireless Adapter - -usb:v148Fp3573* - ID_PRODUCT_FROM_DATABASE=RT3573 Wireless Adapter - -usb:v148Fp5370* - ID_PRODUCT_FROM_DATABASE=RT5370 Wireless Adapter - -usb:v148Fp5372* - ID_PRODUCT_FROM_DATABASE=RT5372 Wireless Adapter - -usb:v148Fp5572* - ID_PRODUCT_FROM_DATABASE=RT5572 Wireless Adapter - -usb:v148Fp9020* - ID_PRODUCT_FROM_DATABASE=RT2500USB Wireless Adapter - -usb:v148Fp9021* - ID_PRODUCT_FROM_DATABASE=RT2501USB Wireless Adapter - -usb:v1491* - ID_VENDOR_FROM_DATABASE=Futronic Technology Co. Ltd. - -usb:v1491p0020* - ID_PRODUCT_FROM_DATABASE=FS81 Fingerprint Scanner Module - -usb:v1493* - ID_VENDOR_FROM_DATABASE=Suunto - -usb:v1497* - ID_VENDOR_FROM_DATABASE=Panstrong Company Ltd. - -usb:v1498* - ID_VENDOR_FROM_DATABASE=Microtek International Inc. - -usb:v1498pA090* - ID_PRODUCT_FROM_DATABASE=DVB-T Tuner - -usb:v149A* - ID_VENDOR_FROM_DATABASE=Imagination Technologies - -usb:v149Ap2107* - ID_PRODUCT_FROM_DATABASE=DBX1 DSP core - -usb:v14AA* - ID_VENDOR_FROM_DATABASE=WideView Technology Inc. - -usb:v14AAp0001* - ID_PRODUCT_FROM_DATABASE=Avermedia AverTV DVBT USB1.1 (cold) - -usb:v14AAp0002* - ID_PRODUCT_FROM_DATABASE=Avermedia AverTV DVBT USB1.1 (warm) - -usb:v14AAp0201* - ID_PRODUCT_FROM_DATABASE=AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (cold) - -usb:v14AAp0221* - ID_PRODUCT_FROM_DATABASE=WT-220U DVB-T dongle - -usb:v14AAp022B* - ID_PRODUCT_FROM_DATABASE=WT-220U DVB-T dongle - -usb:v14AAp0301* - ID_PRODUCT_FROM_DATABASE=AVermedia/Yakumo/Hama/Typhoon DVB-T USB2.0 (warm) - -usb:v14AD* - ID_VENDOR_FROM_DATABASE=CTK Corporation - -usb:v14AE* - ID_VENDOR_FROM_DATABASE=Printronix Inc. - -usb:v14AF* - ID_VENDOR_FROM_DATABASE=ATP Electronics Inc. - -usb:v14B0* - ID_VENDOR_FROM_DATABASE=StarTech.com Ltd. - -usb:v14B2* - ID_VENDOR_FROM_DATABASE=Ralink Technology, Corp. - -usb:v14B2p3A93* - ID_PRODUCT_FROM_DATABASE=Topcom 802.11bg Wireless Adapter [Atheros AR5523] - -usb:v14B2p3A95* - ID_PRODUCT_FROM_DATABASE=Toshiba WUS-G06G-JT 802.11bg Wireless Adapter [Atheros AR5523] - -usb:v14B2p3A98* - ID_PRODUCT_FROM_DATABASE=Airlink101 AWLL4130 802.11bg Wireless Adapter [Atheros AR5523] - -usb:v14B2p3C02* - ID_PRODUCT_FROM_DATABASE=Conceptronic C54RU v2 802.11bg Wireless Adapter [Ralink RT2571] - -usb:v14B2p3C05* - ID_PRODUCT_FROM_DATABASE=rt2570 802.11g WLAN - -usb:v14B2p3C06* - ID_PRODUCT_FROM_DATABASE=Conceptronic C300RU v1 802.11bgn Wireless Adapter [Ralink RT2870] - -usb:v14B2p3C07* - ID_PRODUCT_FROM_DATABASE=802.11n adapter - -usb:v14B2p3C09* - ID_PRODUCT_FROM_DATABASE=802.11n adapter - -usb:v14B2p3C22* - ID_PRODUCT_FROM_DATABASE=Conceptronic C54RU v3 802.11bg Wireless Adapter [Ralink RT2571W] - -usb:v14B2p3C23* - ID_PRODUCT_FROM_DATABASE=Airlink101 AWLL6080 802.11bgn Wireless Adapter [Ralink RT2870] - -usb:v14B2p3C24* - ID_PRODUCT_FROM_DATABASE=NEC NP01LM 802.11abg Wireless Adapter [Ralink RT2571W] - -usb:v14B2p3C25* - ID_PRODUCT_FROM_DATABASE=DrayTek Vigor N61 802.11bgn Wireless Adapter [Ralink RT2870] - -usb:v14B2p3C27* - ID_PRODUCT_FROM_DATABASE=Airlink101 AWLL6070 802.11bgn Wireless Adapter [Ralink RT2770] - -usb:v14B2p3C28* - ID_PRODUCT_FROM_DATABASE=Conceptronic C300RU v2 802.11bgn Wireless Adapter [Ralink RT2770] - -usb:v14B2p3C2B* - ID_PRODUCT_FROM_DATABASE=NEC NP02LM 802.11bgn Wireless Adapter [Ralink RT3072] - -usb:v14B2p3C2C* - ID_PRODUCT_FROM_DATABASE=Keebox W150NU 802.11bgn Wireless Adapter [Ralink RT3070] - -usb:v14C0* - ID_VENDOR_FROM_DATABASE=Rockwell Automation, Inc. - -usb:v14C2* - ID_VENDOR_FROM_DATABASE=Gemlight Computer, Ltd - -usb:v14C2p0250* - ID_PRODUCT_FROM_DATABASE=Storage Adapter V2 - -usb:v14C2p0350* - ID_PRODUCT_FROM_DATABASE=Storage Adapter V2 - -usb:v14C8* - ID_VENDOR_FROM_DATABASE=Zytronic - -usb:v14CD* - ID_VENDOR_FROM_DATABASE=Super Top - -usb:v14CDp121C* - ID_PRODUCT_FROM_DATABASE=microSD card reader - -usb:v14CDp123A* - ID_PRODUCT_FROM_DATABASE=SD/MMC/RS-MMC Card Reader - -usb:v14CDp125C* - ID_PRODUCT_FROM_DATABASE=SD card reader - -usb:v14CDp127B* - ID_PRODUCT_FROM_DATABASE=SDXC Reader - -usb:v14CDp6116* - ID_PRODUCT_FROM_DATABASE=M6116 SATA Bridge - -usb:v14CDp6600* - ID_PRODUCT_FROM_DATABASE=USB 2.0 IDE DEVICE - -usb:v14CDp6700* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v14CDp6900* - ID_PRODUCT_FROM_DATABASE=Card Reader - -usb:v14CDp8123* - ID_PRODUCT_FROM_DATABASE=SD MMC Reader - -usb:v14CDp8125* - ID_PRODUCT_FROM_DATABASE=SD MMC Reader - -usb:v14D8* - ID_VENDOR_FROM_DATABASE=JAMER INDUSTRIES CO., LTD. - -usb:v14DD* - ID_VENDOR_FROM_DATABASE=Raritan Computer, Inc. - -usb:v14DDp1007* - ID_PRODUCT_FROM_DATABASE=D2CIM-VUSB KVM connector - -usb:v14E1* - ID_VENDOR_FROM_DATABASE=Dialogue Technology Corp. - -usb:v14E1p5000* - ID_PRODUCT_FROM_DATABASE=PenMount 5000 Touch Controller - -usb:v14E5* - ID_VENDOR_FROM_DATABASE=SAIN Information & Communications Co., Ltd. - -usb:v14EA* - ID_VENDOR_FROM_DATABASE=Planex Communications - -usb:v14EApAB10* - ID_PRODUCT_FROM_DATABASE=GW-US54GZ - -usb:v14EApAB11* - ID_PRODUCT_FROM_DATABASE=GU-1000T - -usb:v14EApAB13* - ID_PRODUCT_FROM_DATABASE=GW-US54Mini 802.11bg - -usb:v14ED* - ID_VENDOR_FROM_DATABASE=Shure Inc. - -usb:v14EDp29B6* - ID_PRODUCT_FROM_DATABASE=X2u Adapter - -usb:v14F7* - ID_VENDOR_FROM_DATABASE=TechniSat Digital GmbH - -usb:v14F7p0001* - ID_PRODUCT_FROM_DATABASE=SkyStar 2 HD CI - -usb:v14F7p0002* - ID_PRODUCT_FROM_DATABASE=SkyStar 2 HD CI - -usb:v14F7p0003* - ID_PRODUCT_FROM_DATABASE=CableStar Combo HD CI - -usb:v14F7p0004* - ID_PRODUCT_FROM_DATABASE=AirStar TeleStick 2 - -usb:v14F7p0500* - ID_PRODUCT_FROM_DATABASE=DVB-PC TV Star HD - -usb:v1500* - ID_VENDOR_FROM_DATABASE=Ellisys - -usb:v1501* - ID_VENDOR_FROM_DATABASE=Pine-Tum Enterprise Co., Ltd. - -usb:v1509* - ID_VENDOR_FROM_DATABASE=First International Computer, Inc. - -usb:v1509p9242* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Transceiver - -usb:v1513* - ID_VENDOR_FROM_DATABASE=medMobile - -usb:v1513p0444* - ID_PRODUCT_FROM_DATABASE=medMobile - -usb:v1514* - ID_VENDOR_FROM_DATABASE=Actel - -usb:v1514p2003* - ID_PRODUCT_FROM_DATABASE=FlashPro3 Programmer - -usb:v1514p2004* - ID_PRODUCT_FROM_DATABASE=FlashPro3 Programmer - -usb:v1514p2005* - ID_PRODUCT_FROM_DATABASE=FlashPro3 Programmer - -usb:v1516* - ID_VENDOR_FROM_DATABASE=CompUSA - -usb:v1516p1603* - ID_PRODUCT_FROM_DATABASE=Flash Drive - -usb:v1516p8628* - ID_PRODUCT_FROM_DATABASE=Pen Drive - -usb:v1518* - ID_VENDOR_FROM_DATABASE=Cheshire Engineering Corp. - -usb:v1518p0001* - ID_PRODUCT_FROM_DATABASE=HDReye High Dynamic Range Camera - -usb:v1518p0002* - ID_PRODUCT_FROM_DATABASE=HDReye (before firmware loads) - -usb:v1520* - ID_VENDOR_FROM_DATABASE=Bitwire Corp. - -usb:v1524* - ID_VENDOR_FROM_DATABASE=ENE Technology Inc - -usb:v1524p6680* - ID_PRODUCT_FROM_DATABASE=UTS 6680 - -usb:v1527* - ID_VENDOR_FROM_DATABASE=Silicon Portals - -usb:v1527p0200* - ID_PRODUCT_FROM_DATABASE=YAP Phone (no firmware) - -usb:v1527p0201* - ID_PRODUCT_FROM_DATABASE=YAP Phone - -usb:v1529* - ID_VENDOR_FROM_DATABASE=UBIQUAM Co., Ltd. - -usb:v1529p3100* - ID_PRODUCT_FROM_DATABASE=CDMA 1xRTT USB Modem (U-100/105/200/300/520) - -usb:v152A* - ID_VENDOR_FROM_DATABASE=Thesycon Systemsoftware & Consulting GmbH - -usb:v152D* - ID_VENDOR_FROM_DATABASE=JMicron Technology Corp. / JMicron USA Technology Corp. - -usb:v152Dp0539* - ID_PRODUCT_FROM_DATABASE=JMS539 SuperSpeed SATA II 3.0G Bridge - -usb:v152Dp2329* - ID_PRODUCT_FROM_DATABASE=JM20329 SATA Bridge - -usb:v152Dp2335* - ID_PRODUCT_FROM_DATABASE=ATA/ATAPI Bridge - -usb:v152Dp2336* - ID_PRODUCT_FROM_DATABASE=Hard Disk Drive - -usb:v152Dp2337* - ID_PRODUCT_FROM_DATABASE=ATA/ATAPI Bridge - -usb:v152Dp2338* - ID_PRODUCT_FROM_DATABASE=JM20337 Hi-Speed USB to SATA & PATA Combo Bridge - -usb:v152Dp2339* - ID_PRODUCT_FROM_DATABASE=JM20339 SATA Bridge - -usb:v152Dp2352* - ID_PRODUCT_FROM_DATABASE=ATA/ATAPI Bridge - -usb:v152Dp2509* - ID_PRODUCT_FROM_DATABASE=JMS539 SuperSpeed SATA II 3.0G Bridge - -usb:v152E* - ID_VENDOR_FROM_DATABASE=LG (HLDS) - -usb:v152Ep2507* - ID_PRODUCT_FROM_DATABASE=PL-2507 IDE Controller - -usb:v152EpE001* - ID_PRODUCT_FROM_DATABASE=GSA-5120D DVD-RW - -usb:v1532* - ID_VENDOR_FROM_DATABASE=Razer USA, Ltd - -usb:v1532p0001* - ID_PRODUCT_FROM_DATABASE=RZ01-020300 Optical Mouse [Diamondback] - -usb:v1532p0003* - ID_PRODUCT_FROM_DATABASE=Krait Mouse - -usb:v1532p0007* - ID_PRODUCT_FROM_DATABASE=DeathAdder Mouse - -usb:v1532p0013* - ID_PRODUCT_FROM_DATABASE=Orochi mouse - -usb:v1532p0016* - ID_PRODUCT_FROM_DATABASE=DeathAdder Mouse - -usb:v1532p0017* - ID_PRODUCT_FROM_DATABASE=RZ01-0035 Laser Gaming Mouse [Imperator] - -usb:v1532p001C* - ID_PRODUCT_FROM_DATABASE=RZ01-0036 Optical Gaming Mouse [Abyssus] - -usb:v1532p0024* - ID_PRODUCT_FROM_DATABASE=Razer Mamba - -usb:v1532p0036* - ID_PRODUCT_FROM_DATABASE=RZ01-0075, Gaming Mouse [Naga Hex] - -usb:v1532p0101* - ID_PRODUCT_FROM_DATABASE=Copperhead Mouse - -usb:v1532p0102* - ID_PRODUCT_FROM_DATABASE=Tarantula Keyboard - -usb:v1532p0109* - ID_PRODUCT_FROM_DATABASE=Lycosa Keyboard - -usb:v1532p0300* - ID_PRODUCT_FROM_DATABASE=RZ06-0063 Motion Sensing Controllers [Hydra] - -usb:v1546* - ID_VENDOR_FROM_DATABASE=U-Blox AG - -usb:v1547* - ID_VENDOR_FROM_DATABASE=SG Intec Ltd & Co KG - -usb:v1547p1000* - ID_PRODUCT_FROM_DATABASE=SG-Lock[U2] - -usb:v154A* - ID_VENDOR_FROM_DATABASE=Celectronic GmbH - -usb:v154Ap8180* - ID_PRODUCT_FROM_DATABASE=CARD STAR/medic2 - -usb:v154B* - ID_VENDOR_FROM_DATABASE=PNY - -usb:v154Bp0010* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Flash Drive - -usb:v154Bp004D* - ID_PRODUCT_FROM_DATABASE=8 GB Flash Drive - -usb:v154Bp0057* - ID_PRODUCT_FROM_DATABASE=32GB Micro Slide Attache Flash Drive - -usb:v154Bp6545* - ID_PRODUCT_FROM_DATABASE=FD Device - -usb:v154D* - ID_VENDOR_FROM_DATABASE=ConnectCounty Holdings Berhad - -usb:v154E* - ID_VENDOR_FROM_DATABASE=D&M Holdings, Inc. (Denon/Marantz) - -usb:v154Ep3000* - ID_PRODUCT_FROM_DATABASE=Marantz RC9001 Remote Control - -usb:v154F* - ID_VENDOR_FROM_DATABASE=SNBC CO., Ltd - -usb:v1554* - ID_VENDOR_FROM_DATABASE=Prolink Microsystems Corp. - -usb:v1554p5010* - ID_PRODUCT_FROM_DATABASE=PV-D231U(RN)-F [PixelView PlayTV SBTVD Full-Seg] - -usb:v1557* - ID_VENDOR_FROM_DATABASE=OQO - -usb:v1557p0002* - ID_PRODUCT_FROM_DATABASE=model 01 WiFi interface - -usb:v1557p0003* - ID_PRODUCT_FROM_DATABASE=model 01 Bluetooth interface - -usb:v1557p0A80* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem (QDL mode) - -usb:v1557p7720* - ID_PRODUCT_FROM_DATABASE=model 01+ Ethernet - -usb:v1557p8150* - ID_PRODUCT_FROM_DATABASE=model 01 Ethernet interface - -usb:v1568* - ID_VENDOR_FROM_DATABASE=Sunf Pu Technology Co., Ltd - -usb:v156F* - ID_VENDOR_FROM_DATABASE=Quantum Corporation - -usb:v1570* - ID_VENDOR_FROM_DATABASE=ALLTOP TECHNOLOGY CO., LTD. - -usb:v157B* - ID_VENDOR_FROM_DATABASE=Ketron SRL - -usb:v157E* - ID_VENDOR_FROM_DATABASE=TRENDnet - -usb:v157Ep3006* - ID_PRODUCT_FROM_DATABASE=TEW-444UB EU [TRENDnet] - -usb:v157Ep3007* - ID_PRODUCT_FROM_DATABASE=TEW-444UB EU (no firmware) - -usb:v157Ep300A* - ID_PRODUCT_FROM_DATABASE=TEW-429UB 802.11bg - -usb:v157Ep300B* - ID_PRODUCT_FROM_DATABASE=TEW-429UB 802.11bg - -usb:v157Ep300C* - ID_PRODUCT_FROM_DATABASE=TEW-429UF A1 802.11bg Wireless Adapter [ZyDAS ZD1211B] - -usb:v157Ep300D* - ID_PRODUCT_FROM_DATABASE=TEW-429UB C1 802.11bg - -usb:v157Ep300E* - ID_PRODUCT_FROM_DATABASE=SMC SMCWUSB-N 802.11bgn 2x2:2 Wireless Adapter [Ralink RT2870] - -usb:v157Ep3012* - ID_PRODUCT_FROM_DATABASE=TEW-604UB 802.11bg Wireless Adapter [Atheros AR5523] - -usb:v157Ep3013* - ID_PRODUCT_FROM_DATABASE=TEW-645UB 802.11bgn 1x2:2 Wireless Adapter [Ralink RT2770] - -usb:v157Ep3204* - ID_PRODUCT_FROM_DATABASE=Allnet ALL0298 v2 802.11bg - -usb:v157Ep3205* - ID_PRODUCT_FROM_DATABASE=Allnet ALL0283 [AR5523] - -usb:v157Ep3206* - ID_PRODUCT_FROM_DATABASE=Allnet ALL0283 [AR5523](no firmware) - -usb:v157Ep3207* - ID_PRODUCT_FROM_DATABASE=TEW-509UB A1 802.11abg Wireless Adapter [ZyDAS ZD1211] - -usb:v157Ep3208* - ID_PRODUCT_FROM_DATABASE=TEW-509UB 1.1R 802.11abg Wireless Adapter - -usb:v1582* - ID_VENDOR_FROM_DATABASE=Fiberline - -usb:v1582p6003* - ID_PRODUCT_FROM_DATABASE=WL-430U 802.11bg - -usb:v1587* - ID_VENDOR_FROM_DATABASE=SMA Technologie AG - -usb:v158D* - ID_VENDOR_FROM_DATABASE=Oakley Inc. - -usb:v158E* - ID_VENDOR_FROM_DATABASE=JDS Uniphase Corporation (JDSU) - -usb:v158Ep0820* - ID_PRODUCT_FROM_DATABASE=SmartPocket Class Device - -usb:v1598* - ID_VENDOR_FROM_DATABASE=Kunshan Guoji Electronics Co., Ltd. - -usb:v15A2* - ID_VENDOR_FROM_DATABASE=Freescale Semiconductor, Inc. - -usb:v15A2p003B* - ID_PRODUCT_FROM_DATABASE=USB2CAN Application for ColdFire DEMOJM board - -usb:v15A2p0042* - ID_PRODUCT_FROM_DATABASE=OSBDM - Debug Port - -usb:v15A2p004F* - ID_PRODUCT_FROM_DATABASE=i.MX28 SystemOnChip in RecoveryMode - -usb:v15A2p0052* - ID_PRODUCT_FROM_DATABASE=i.MX50 SystemOnChip in RecoveryMode - -usb:v15A2p0054* - ID_PRODUCT_FROM_DATABASE=i.MX6Q SystemOnChip in RecoveryMode - -usb:v15A4* - ID_VENDOR_FROM_DATABASE=Afatech Technologies, Inc. - -usb:v15A4p1000* - ID_PRODUCT_FROM_DATABASE=AF9015/AF9035 DVB-T stick - -usb:v15A4p1001* - ID_PRODUCT_FROM_DATABASE=AF9015/AF9035 DVB-T stick - -usb:v15A4p1336* - ID_PRODUCT_FROM_DATABASE=SDHC/MicroSD/MMC/MS/M2/CF/XD Flash Card Reader - -usb:v15A4p9015* - ID_PRODUCT_FROM_DATABASE=AF9015 DVB-T USB2.0 stick - -usb:v15A4p9016* - ID_PRODUCT_FROM_DATABASE=AF9015 DVB-T USB2.0 stick - -usb:v15A8* - ID_VENDOR_FROM_DATABASE=Teams Power Limited - -usb:v15A9* - ID_VENDOR_FROM_DATABASE=Gemtek - -usb:v15A9p0002* - ID_PRODUCT_FROM_DATABASE=SparkLAN WL-682 802.11bg Wireless Adapter [Intersil ISL3887] - -usb:v15A9p0004* - ID_PRODUCT_FROM_DATABASE=WUBR-177G [Ralink RT2571W] - -usb:v15A9p0006* - ID_PRODUCT_FROM_DATABASE=Wireless 11n USB Adapter - -usb:v15A9p0010* - ID_PRODUCT_FROM_DATABASE=802.11n USB Wireless Card - -usb:v15A9p0012* - ID_PRODUCT_FROM_DATABASE=WUBR-208N 802.11abgn Wireless Adapter [Ralink RT2870] - -usb:v15AA* - ID_VENDOR_FROM_DATABASE=Gearway Electronics (Dong Guan) Co., Ltd. - -usb:v15AD* - ID_VENDOR_FROM_DATABASE=VMware Inc. - -usb:v15BA* - ID_VENDOR_FROM_DATABASE=Olimex Ltd. - -usb:v15BAp0003* - ID_PRODUCT_FROM_DATABASE=OpenOCD JTAG - -usb:v15BAp0004* - ID_PRODUCT_FROM_DATABASE=OpenOCD JTAG TINY - -usb:v15BAp002A* - ID_PRODUCT_FROM_DATABASE=ARM-USB-TINY-H JTAG interface - -usb:v15BAp002B* - ID_PRODUCT_FROM_DATABASE=ARM-USB-OCD-H JTAG+RS232 - -usb:v15C0* - ID_VENDOR_FROM_DATABASE=XL Imaging - -usb:v15C0p0001* - ID_PRODUCT_FROM_DATABASE=2M pixel Microscope Camera - -usb:v15C0p0002* - ID_PRODUCT_FROM_DATABASE=3M pixel Microscope Camera - -usb:v15C0p0003* - ID_PRODUCT_FROM_DATABASE=1.3M pixel Microscope Camera (mono) - -usb:v15C0p0004* - ID_PRODUCT_FROM_DATABASE=1.3M pixel Microscope Camera (colour) - -usb:v15C0p0005* - ID_PRODUCT_FROM_DATABASE=3M pixel Microscope Camera (Mk 2) - -usb:v15C0p0006* - ID_PRODUCT_FROM_DATABASE=2M pixel Microscope Camera (with capture button) - -usb:v15C0p0007* - ID_PRODUCT_FROM_DATABASE=3M pixel Microscope Camera (with capture button) - -usb:v15C0p0008* - ID_PRODUCT_FROM_DATABASE=1.3M pixel Microscope Camera (colour, with capture button) - -usb:v15C0p0009* - ID_PRODUCT_FROM_DATABASE=1.3M pixel Microscope Camera (colour, with capture button) - -usb:v15C0p000A* - ID_PRODUCT_FROM_DATABASE=2M pixel Microscope Camera (Mk 2) - -usb:v15C0p0010* - ID_PRODUCT_FROM_DATABASE=1.3M pixel "Tinycam" - -usb:v15C0p0101* - ID_PRODUCT_FROM_DATABASE=3M pixel Microscope Camera - -usb:v15C2* - ID_VENDOR_FROM_DATABASE=SoundGraph Inc. - -usb:v15C2p0036* - ID_PRODUCT_FROM_DATABASE=LC16M VFD Display/IR Receiver - -usb:v15C2p0038* - ID_PRODUCT_FROM_DATABASE=GD01 MX LCD Display/IR Receiver - -usb:v15C2pFFDA* - ID_PRODUCT_FROM_DATABASE=iMON PAD Remote Controller - -usb:v15C2pFFDC* - ID_PRODUCT_FROM_DATABASE=iMON PAD Remote Controller - -usb:v15C5* - ID_VENDOR_FROM_DATABASE=Advance Multimedia Internet Technology Inc. (AMIT) - -usb:v15C5p0008* - ID_PRODUCT_FROM_DATABASE=WL532U 802.11g Adapter - -usb:v15C6* - ID_VENDOR_FROM_DATABASE=Laboratoires MXM - -usb:v15C6p1000* - ID_PRODUCT_FROM_DATABASE=DigistimSP (cold) - -usb:v15C6p1001* - ID_PRODUCT_FROM_DATABASE=DigistimSP (warm) - -usb:v15C6p1002* - ID_PRODUCT_FROM_DATABASE=DigimapSP USB (cold) - -usb:v15C6p1003* - ID_PRODUCT_FROM_DATABASE=DigimapSP USB (warm) - -usb:v15C6p1004* - ID_PRODUCT_FROM_DATABASE=DigistimSP (cold) - -usb:v15C6p1005* - ID_PRODUCT_FROM_DATABASE=DigistimSP (warm) - -usb:v15C6p1100* - ID_PRODUCT_FROM_DATABASE=Odyssee (cold) - -usb:v15C6p1101* - ID_PRODUCT_FROM_DATABASE=Odyssee (warm) - -usb:v15C6p1200* - ID_PRODUCT_FROM_DATABASE=Digispy - -usb:v15C8* - ID_VENDOR_FROM_DATABASE=KTF Technologies - -usb:v15C8p3201* - ID_PRODUCT_FROM_DATABASE=EVER EV-W100/EV-W250 - -usb:v15C9* - ID_VENDOR_FROM_DATABASE=D-Box Technologies - -usb:v15CA* - ID_VENDOR_FROM_DATABASE=Textech International Ltd. - -usb:v15CAp00C3* - ID_PRODUCT_FROM_DATABASE=Mini Optical Mouse - -usb:v15CAp0101* - ID_PRODUCT_FROM_DATABASE=MIDI Interface cable - -usb:v15CAp1806* - ID_PRODUCT_FROM_DATABASE=MIDI Interface cable - -usb:v15D5* - ID_VENDOR_FROM_DATABASE=Coulomb Electronics Ltd. - -usb:v15D9* - ID_VENDOR_FROM_DATABASE=Trust International B.V. - -usb:v15D9p0A33* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v15D9p0A37* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v15D9p0A41* - ID_PRODUCT_FROM_DATABASE=MI-2540D [Optical mouse] - -usb:v15D9p0A4C* - ID_PRODUCT_FROM_DATABASE=USB+PS/2 Optical Mouse - -usb:v15D9p0A4D* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v15DC* - ID_VENDOR_FROM_DATABASE=Hynix Semiconductor Inc. - -usb:v15E0* - ID_VENDOR_FROM_DATABASE=Seong Ji Industrial Co., Ltd. - -usb:v15E1* - ID_VENDOR_FROM_DATABASE=RSA - -usb:v15E1p2007* - ID_PRODUCT_FROM_DATABASE=RSA SecurID (R) Authenticator - -usb:v15E4* - ID_VENDOR_FROM_DATABASE=Numark - -usb:v15E4p0024* - ID_PRODUCT_FROM_DATABASE=Mixtrack - -usb:v15E8* - ID_VENDOR_FROM_DATABASE=SohoWare - -usb:v15E8p9100* - ID_PRODUCT_FROM_DATABASE=NUB100 Ethernet [pegasus] - -usb:v15E8p9110* - ID_PRODUCT_FROM_DATABASE=10/100 USB Ethernet - -usb:v15E9* - ID_VENDOR_FROM_DATABASE=Pacific Digital Corp. - -usb:v15E9p04CE* - ID_PRODUCT_FROM_DATABASE=MemoryFrame MF-570 - -usb:v15E9p1968* - ID_PRODUCT_FROM_DATABASE=MemoryFrame MF-570 - -usb:v15E9p1969* - ID_PRODUCT_FROM_DATABASE=Digital Frame - -usb:v15EC* - ID_VENDOR_FROM_DATABASE=Belcarra Technologies Corp. - -usb:v15F4* - ID_VENDOR_FROM_DATABASE=HanfTek - -usb:v15F4p0001* - ID_PRODUCT_FROM_DATABASE=HanfTek UMT-010 USB2.0 DVB-T (cold) - -usb:v15F4p0025* - ID_PRODUCT_FROM_DATABASE=HanfTek UMT-010 USB2.0 DVB-T (warm) - -usb:v1604* - ID_VENDOR_FROM_DATABASE=Tascam - -usb:v1604p8000* - ID_PRODUCT_FROM_DATABASE=US-428 Audio/Midi Controller (without fw) - -usb:v1604p8001* - ID_PRODUCT_FROM_DATABASE=US-428 Audio/Midi Controller - -usb:v1604p8004* - ID_PRODUCT_FROM_DATABASE=US-224 Audio/Midi Controller (without fw) - -usb:v1604p8005* - ID_PRODUCT_FROM_DATABASE=US-224 Audio/Midi Controller - -usb:v1604p8006* - ID_PRODUCT_FROM_DATABASE=US-122 Audio/Midi Interface (without fw) - -usb:v1604p8007* - ID_PRODUCT_FROM_DATABASE=US-122 Audio/Midi Interface - -usb:v1606* - ID_VENDOR_FROM_DATABASE=Umax - -usb:v1606p0002* - ID_PRODUCT_FROM_DATABASE=Astra 1236U Scanner - -usb:v1606p0010* - ID_PRODUCT_FROM_DATABASE=Astra 1220U - -usb:v1606p0030* - ID_PRODUCT_FROM_DATABASE=Astra 1600U/2000U - -usb:v1606p0050* - ID_PRODUCT_FROM_DATABASE=Scanner - -usb:v1606p0060* - ID_PRODUCT_FROM_DATABASE=Astra 3400/3450 - -usb:v1606p0070* - ID_PRODUCT_FROM_DATABASE=Astra 4400/4450 - -usb:v1606p0130* - ID_PRODUCT_FROM_DATABASE=Astra 2100U - -usb:v1606p0160* - ID_PRODUCT_FROM_DATABASE=Astra 5400U - -usb:v1606p0170* - ID_PRODUCT_FROM_DATABASE=Uniscan D50 - -usb:v1606p0230* - ID_PRODUCT_FROM_DATABASE=Astra 2200/2200SU - -usb:v1606p0350* - ID_PRODUCT_FROM_DATABASE=Astra 4800/4850 Scanner - -usb:v1606p1030* - ID_PRODUCT_FROM_DATABASE=Astra 4000U - -usb:v1606p1220* - ID_PRODUCT_FROM_DATABASE=Genesys Logic Scanner Controller NT5.0 - -usb:v1606p2010* - ID_PRODUCT_FROM_DATABASE=AstraCam Digital Camera - -usb:v1606p2020* - ID_PRODUCT_FROM_DATABASE=AstraCam 1000 - -usb:v1606p2030* - ID_PRODUCT_FROM_DATABASE=AstraCam 1800 Digital Camera - -usb:v1608* - ID_VENDOR_FROM_DATABASE=Inside Out Networks [hex] - -usb:v1608p0001* - ID_PRODUCT_FROM_DATABASE=EdgePort/4 Serial Port - -usb:v1608p0002* - ID_PRODUCT_FROM_DATABASE=Edgeport/8 - -usb:v1608p0003* - ID_PRODUCT_FROM_DATABASE=Rapidport/4 - -usb:v1608p0004* - ID_PRODUCT_FROM_DATABASE=Edgeport/4 - -usb:v1608p0005* - ID_PRODUCT_FROM_DATABASE=Edgeport/2 - -usb:v1608p0006* - ID_PRODUCT_FROM_DATABASE=Edgeport/4i - -usb:v1608p0007* - ID_PRODUCT_FROM_DATABASE=Edgeport/2i - -usb:v1608p0008* - ID_PRODUCT_FROM_DATABASE=Edgeport/8 - -usb:v1608p000C* - ID_PRODUCT_FROM_DATABASE=Edgeport/421 - -usb:v1608p000D* - ID_PRODUCT_FROM_DATABASE=Edgeport/21 - -usb:v1608p000E* - ID_PRODUCT_FROM_DATABASE=Edgeport/4 - -usb:v1608p000F* - ID_PRODUCT_FROM_DATABASE=Edgeport/8 - -usb:v1608p0010* - ID_PRODUCT_FROM_DATABASE=Edgeport/2 - -usb:v1608p0011* - ID_PRODUCT_FROM_DATABASE=Edgeport/4 - -usb:v1608p0012* - ID_PRODUCT_FROM_DATABASE=Edgeport/416 - -usb:v1608p0014* - ID_PRODUCT_FROM_DATABASE=Edgeport/8i - -usb:v1608p0018* - ID_PRODUCT_FROM_DATABASE=Edgeport/412 - -usb:v1608p0019* - ID_PRODUCT_FROM_DATABASE=Edgeport/412 - -usb:v1608p001A* - ID_PRODUCT_FROM_DATABASE=Edgeport/2+2i - -usb:v1608p0101* - ID_PRODUCT_FROM_DATABASE=Edgeport/4 - -usb:v1608p0105* - ID_PRODUCT_FROM_DATABASE=Edgeport/2 - -usb:v1608p0106* - ID_PRODUCT_FROM_DATABASE=Edgeport/4i - -usb:v1608p0107* - ID_PRODUCT_FROM_DATABASE=Edgeport/2i - -usb:v1608p010C* - ID_PRODUCT_FROM_DATABASE=Edgeport/421 - -usb:v1608p010D* - ID_PRODUCT_FROM_DATABASE=Edgeport/21 - -usb:v1608p0110* - ID_PRODUCT_FROM_DATABASE=Edgeport/2 - -usb:v1608p0111* - ID_PRODUCT_FROM_DATABASE=Edgeport/4 - -usb:v1608p0112* - ID_PRODUCT_FROM_DATABASE=Edgeport/416 - -usb:v1608p0114* - ID_PRODUCT_FROM_DATABASE=Edgeport/8i - -usb:v1608p0201* - ID_PRODUCT_FROM_DATABASE=Edgeport/4 - -usb:v1608p0203* - ID_PRODUCT_FROM_DATABASE=Rapidport/4 - -usb:v1608p0204* - ID_PRODUCT_FROM_DATABASE=Edgeport/4 - -usb:v1608p0205* - ID_PRODUCT_FROM_DATABASE=Edgeport/2 - -usb:v1608p0206* - ID_PRODUCT_FROM_DATABASE=Edgeport/4i - -usb:v1608p0207* - ID_PRODUCT_FROM_DATABASE=Edgeport/2i - -usb:v1608p020C* - ID_PRODUCT_FROM_DATABASE=Edgeport/421 - -usb:v1608p020D* - ID_PRODUCT_FROM_DATABASE=Edgeport/21 - -usb:v1608p020E* - ID_PRODUCT_FROM_DATABASE=Edgeport/4 - -usb:v1608p020F* - ID_PRODUCT_FROM_DATABASE=Edgeport/8 - -usb:v1608p0210* - ID_PRODUCT_FROM_DATABASE=Edgeport/2 - -usb:v1608p0211* - ID_PRODUCT_FROM_DATABASE=Edgeport/4 - -usb:v1608p0212* - ID_PRODUCT_FROM_DATABASE=Edgeport/416 - -usb:v1608p0214* - ID_PRODUCT_FROM_DATABASE=Edgeport/8i - -usb:v1608p0215* - ID_PRODUCT_FROM_DATABASE=Edgeport/1 - -usb:v1608p0216* - ID_PRODUCT_FROM_DATABASE=EPOS/44 - -usb:v1608p0217* - ID_PRODUCT_FROM_DATABASE=Edgeport/42 - -usb:v1608p021A* - ID_PRODUCT_FROM_DATABASE=Edgeport/2+2i - -usb:v1608p021B* - ID_PRODUCT_FROM_DATABASE=Edgeport/2c - -usb:v1608p021C* - ID_PRODUCT_FROM_DATABASE=Edgeport/221c - -usb:v1608p021D* - ID_PRODUCT_FROM_DATABASE=Edgeport/22c - -usb:v1608p021E* - ID_PRODUCT_FROM_DATABASE=Edgeport/21c - -usb:v1608p021F* - ID_PRODUCT_FROM_DATABASE=Edgeport/62 - -usb:v1608p0240* - ID_PRODUCT_FROM_DATABASE=Edgeport/1 - -usb:v1608p0241* - ID_PRODUCT_FROM_DATABASE=Edgeport/1i - -usb:v1608p0242* - ID_PRODUCT_FROM_DATABASE=Edgeport/4s - -usb:v1608p0243* - ID_PRODUCT_FROM_DATABASE=Edgeport/8s - -usb:v1608p0244* - ID_PRODUCT_FROM_DATABASE=Edgeport/8 - -usb:v1608p0245* - ID_PRODUCT_FROM_DATABASE=Edgeport/22c - -usb:v1608p0301* - ID_PRODUCT_FROM_DATABASE=Watchport/P - -usb:v1608p0302* - ID_PRODUCT_FROM_DATABASE=Watchport/M - -usb:v1608p0303* - ID_PRODUCT_FROM_DATABASE=Watchport/W - -usb:v1608p0304* - ID_PRODUCT_FROM_DATABASE=Watchport/T - -usb:v1608p0305* - ID_PRODUCT_FROM_DATABASE=Watchport/H - -usb:v1608p0306* - ID_PRODUCT_FROM_DATABASE=Watchport/E - -usb:v1608p0307* - ID_PRODUCT_FROM_DATABASE=Watchport/L - -usb:v1608p0308* - ID_PRODUCT_FROM_DATABASE=Watchport/R - -usb:v1608p0309* - ID_PRODUCT_FROM_DATABASE=Watchport/A - -usb:v1608p030A* - ID_PRODUCT_FROM_DATABASE=Watchport/D - -usb:v1608p030B* - ID_PRODUCT_FROM_DATABASE=Watchport/D - -usb:v1608p030C* - ID_PRODUCT_FROM_DATABASE=Power Management Port - -usb:v1608p030E* - ID_PRODUCT_FROM_DATABASE=Power Management Port - -usb:v1608p030F* - ID_PRODUCT_FROM_DATABASE=Watchport/G - -usb:v1608p0310* - ID_PRODUCT_FROM_DATABASE=Watchport/Tc - -usb:v1608p0311* - ID_PRODUCT_FROM_DATABASE=Watchport/Hc - -usb:v1608p1403* - ID_PRODUCT_FROM_DATABASE=MultiTech Systems MT4X56 Modem - -usb:v1608p1A17* - ID_PRODUCT_FROM_DATABASE=Agilent Technologies (E6473) - -usb:v160A* - ID_VENDOR_FROM_DATABASE=VIA Technologies, Inc. - -usb:v160Ap3184* - ID_PRODUCT_FROM_DATABASE=VIA VNT-6656 [WiFi 802.11b/g USB Dongle] - -usb:v160E* - ID_VENDOR_FROM_DATABASE=INRO - -usb:v160Ep0001* - ID_PRODUCT_FROM_DATABASE=E2USBKey - -usb:v1614* - ID_VENDOR_FROM_DATABASE=Amoi Electronics - -usb:v1614p0404* - ID_PRODUCT_FROM_DATABASE=WMA9109 UMTS Phone - -usb:v1614p0600* - ID_PRODUCT_FROM_DATABASE=Vodafone VDA GPS / Toschiba Protege G710 - -usb:v1614p0804* - ID_PRODUCT_FROM_DATABASE=WP-S1 Phone - -usb:v1619* - ID_VENDOR_FROM_DATABASE=L & K Precision Technology Co., Ltd. - -usb:v1621* - ID_VENDOR_FROM_DATABASE=Wionics Research - -usb:v1628* - ID_VENDOR_FROM_DATABASE=Stonestreet One, Inc. - -usb:v162A* - ID_VENDOR_FROM_DATABASE=Airgo Networks Inc. - -usb:v162F* - ID_VENDOR_FROM_DATABASE=WiQuest Communications, Inc. - -usb:v1630* - ID_VENDOR_FROM_DATABASE=2Wire, Inc. - -usb:v1630p0005* - ID_PRODUCT_FROM_DATABASE=802.11g Wireless Adapter [Intersil ISL3886] - -usb:v1630p0011* - ID_PRODUCT_FROM_DATABASE=PC Port 10 Mps Adapter - -usb:v1630pFF81* - ID_PRODUCT_FROM_DATABASE=802.11b Wireless Adapter [Lucent/Agere Hermes I] - -usb:v1631* - ID_VENDOR_FROM_DATABASE=Good Way Technology - -usb:v1631p6200* - ID_PRODUCT_FROM_DATABASE=GWUSB2E - -usb:v1631pC019* - ID_PRODUCT_FROM_DATABASE=RT2573 - -usb:v1645* - ID_VENDOR_FROM_DATABASE=Cross Match Technologies GmbH - -usb:v1645p0001* - ID_PRODUCT_FROM_DATABASE=1S Serial Port - -usb:v1645p0002* - ID_PRODUCT_FROM_DATABASE=2S Serial Port - -usb:v1645p0003* - ID_PRODUCT_FROM_DATABASE=1S25 Serial Port - -usb:v1645p0004* - ID_PRODUCT_FROM_DATABASE=4S Serial Port - -usb:v1645p0005* - ID_PRODUCT_FROM_DATABASE=E45 Ethernet [klsi] - -usb:v1645p0006* - ID_PRODUCT_FROM_DATABASE=Parallel Port - -usb:v1645p0007* - ID_PRODUCT_FROM_DATABASE=U1-SC25 SCSI - -usb:v1645p0008* - ID_PRODUCT_FROM_DATABASE=Ethernet - -usb:v1645p0016* - ID_PRODUCT_FROM_DATABASE=Bi-directional to Parallel Printer Converter - -usb:v1645p0080* - ID_PRODUCT_FROM_DATABASE=1 port to Serial Converter - -usb:v1645p0081* - ID_PRODUCT_FROM_DATABASE=1 port to Serial Converter - -usb:v1645p0093* - ID_PRODUCT_FROM_DATABASE=1S9 Serial Port - -usb:v1645p8000* - ID_PRODUCT_FROM_DATABASE=EZ-USB - -usb:v1645p8001* - ID_PRODUCT_FROM_DATABASE=1 port to Serial - -usb:v1645p8002* - ID_PRODUCT_FROM_DATABASE=2x Serial Port - -usb:v1645p8003* - ID_PRODUCT_FROM_DATABASE=1 port to Serial - -usb:v1645p8004* - ID_PRODUCT_FROM_DATABASE=2U4S serial/usb hub - -usb:v1645p8005* - ID_PRODUCT_FROM_DATABASE=Ethernet - -usb:v1645p8080* - ID_PRODUCT_FROM_DATABASE=1 port to Serial - -usb:v1645p8081* - ID_PRODUCT_FROM_DATABASE=1 port to Serial - -usb:v1645p8093* - ID_PRODUCT_FROM_DATABASE=PortGear Serial Port - -usb:v1649* - ID_VENDOR_FROM_DATABASE=SofTec Microsystems - -usb:v1649p0102* - ID_PRODUCT_FROM_DATABASE=uDART In-Circuit Debugger - -usb:v1649p0200* - ID_PRODUCT_FROM_DATABASE=SpYder USBSPYDER08 - -usb:v164A* - ID_VENDOR_FROM_DATABASE=ChipX - -usb:v164C* - ID_VENDOR_FROM_DATABASE=Matrix Vision GmbH - -usb:v164Cp0101* - ID_PRODUCT_FROM_DATABASE=mvBlueFOX camera (no firmware) - -usb:v164Cp0103* - ID_PRODUCT_FROM_DATABASE=mvBlueFOX camera - -usb:v164Cp0201* - ID_PRODUCT_FROM_DATABASE=mvBlueLYNX-X intelligent camera (bootloader) - -usb:v164Cp0203* - ID_PRODUCT_FROM_DATABASE=mvBlueLYNX-X intelligent camera - -usb:v1657* - ID_VENDOR_FROM_DATABASE=Struck Innovative Systeme GmbH - -usb:v1657p3150* - ID_PRODUCT_FROM_DATABASE=SIS3150 USB2.0 to VME interface - -usb:v165B* - ID_VENDOR_FROM_DATABASE=Frontier Design Group - -usb:v165Bp8101* - ID_PRODUCT_FROM_DATABASE=Tranzport Control Surface - -usb:v165BpFAD1* - ID_PRODUCT_FROM_DATABASE=Alphatrack Control Surface - -usb:v165C* - ID_VENDOR_FROM_DATABASE=Kondo Kagaku - -usb:v165Cp0002* - ID_PRODUCT_FROM_DATABASE=Serial Adapter - -usb:v1660* - ID_VENDOR_FROM_DATABASE=Creatix Polymedia GmbH - -usb:v1668* - ID_VENDOR_FROM_DATABASE=Actiontec Electronics, Inc. [hex] - -usb:v1668p0009* - ID_PRODUCT_FROM_DATABASE=Gateway - -usb:v1668p0333* - ID_PRODUCT_FROM_DATABASE=Modem - -usb:v1668p0358* - ID_PRODUCT_FROM_DATABASE=InternetPhoneWizard - -usb:v1668p0405* - ID_PRODUCT_FROM_DATABASE=Gateway - -usb:v1668p0408* - ID_PRODUCT_FROM_DATABASE=Prism2.5 802.11b Adapter - -usb:v1668p0413* - ID_PRODUCT_FROM_DATABASE=Gateway - -usb:v1668p0421* - ID_PRODUCT_FROM_DATABASE=Prism2.5 802.11b Adapter - -usb:v1668p0441* - ID_PRODUCT_FROM_DATABASE=IBM Integrated Bluetooth II - -usb:v1668p0500* - ID_PRODUCT_FROM_DATABASE=BTM200B BlueTooth Adapter - -usb:v1668p1050* - ID_PRODUCT_FROM_DATABASE=802UIG-1 802.11g Wireless Mini Adapter [Intersil ISL3887] - -usb:v1668p1200* - ID_PRODUCT_FROM_DATABASE=802AIN Wireless N Network Adapter [Atheros AR9170+AR9101] - -usb:v1668p1441* - ID_PRODUCT_FROM_DATABASE=IBM Integrated Bluetooth II - -usb:v1668p2441* - ID_PRODUCT_FROM_DATABASE=BMDC-2 IBM Bluetooth III w.56k - -usb:v1668p3441* - ID_PRODUCT_FROM_DATABASE=IBM Integrated Bluetooth III - -usb:v1668p6010* - ID_PRODUCT_FROM_DATABASE=Gateway - -usb:v1668p6097* - ID_PRODUCT_FROM_DATABASE=802.11b Wireless Adapter - -usb:v1668p6106* - ID_PRODUCT_FROM_DATABASE=802UI3(B) 802.11b Wireless Adapter [Intersil PRISM 3] - -usb:v1668p7605* - ID_PRODUCT_FROM_DATABASE=UAT1 Wireless Ethernet Adapter - -usb:v1669* - ID_VENDOR_FROM_DATABASE=PiKRON Ltd. [hex] - -usb:v1669p1001* - ID_PRODUCT_FROM_DATABASE=uLan2USB Converter - PS1 protocol - -usb:v166A* - ID_VENDOR_FROM_DATABASE=Clipsal - -usb:v166Ap0101* - ID_PRODUCT_FROM_DATABASE=C-Bus Multi-room Audio Matrix Switcher - -usb:v166Ap0201* - ID_PRODUCT_FROM_DATABASE=C-Bus Pascal Automation Controller - -usb:v166Ap0301* - ID_PRODUCT_FROM_DATABASE=C-Bus Wireless PC Interface - -usb:v166Ap0303* - ID_PRODUCT_FROM_DATABASE=C-Bus interface - -usb:v166Ap0304* - ID_PRODUCT_FROM_DATABASE=C-Bus Black and White Touchscreen - -usb:v166Ap0305* - ID_PRODUCT_FROM_DATABASE=C-Bus Spectrum Colour Touchscreen - -usb:v166Ap0401* - ID_PRODUCT_FROM_DATABASE=C-Bus Architectural Dimmer - -usb:v1677* - ID_VENDOR_FROM_DATABASE=China Huada Integrated Circuit Design (Group) Co., Ltd. (CIDC Group) - -usb:v1677p0103* - ID_PRODUCT_FROM_DATABASE=Token - -usb:v1679* - ID_VENDOR_FROM_DATABASE=Total Phase - -usb:v1679p2001* - ID_PRODUCT_FROM_DATABASE=Beagle Protocol Analyzer - -usb:v1679p2002* - ID_PRODUCT_FROM_DATABASE=Cheetah SPI Host Adapter - -usb:v1680* - ID_VENDOR_FROM_DATABASE=Golden Bridge Electech Inc. - -usb:v1680pA332* - ID_PRODUCT_FROM_DATABASE=DVB-T Dongle [RTL2832U] - -usb:v1681* - ID_VENDOR_FROM_DATABASE=Prevo Technologies, Inc. - -usb:v1681p0001* - ID_PRODUCT_FROM_DATABASE=Tuner's Dashboard - -usb:v1681p0002* - ID_PRODUCT_FROM_DATABASE=Tubachron - -usb:v1682* - ID_VENDOR_FROM_DATABASE=Maxwise Production Enterprise Ltd. - -usb:v1684* - ID_VENDOR_FROM_DATABASE=Godspeed Computer Corp. - -usb:v1685* - ID_VENDOR_FROM_DATABASE=Delock - -usb:v1685p0200* - ID_PRODUCT_FROM_DATABASE=Infrared adapter - -usb:v1686* - ID_VENDOR_FROM_DATABASE=ZOOM Corporation - -usb:v1686p0045* - ID_PRODUCT_FROM_DATABASE=H4 Digital Recorder - -usb:v1687* - ID_VENDOR_FROM_DATABASE=Kingmax Digital Inc. - -usb:v1687p5289* - ID_PRODUCT_FROM_DATABASE=FlashDisk - -usb:v1687p6211* - ID_PRODUCT_FROM_DATABASE=FlashDisk - -usb:v1688* - ID_VENDOR_FROM_DATABASE=Saab AB - -usb:v1689* - ID_VENDOR_FROM_DATABASE=Razer USA, Ltd - -usb:v1689pFD00* - ID_PRODUCT_FROM_DATABASE=Onza Tournament Edition controller - -usb:v168C* - ID_VENDOR_FROM_DATABASE=Atheros Communications - -usb:v168Cp0001* - ID_PRODUCT_FROM_DATABASE=AR5523 - -usb:v168Cp0002* - ID_PRODUCT_FROM_DATABASE=AR5523 (no firmware) - -usb:v1690* - ID_VENDOR_FROM_DATABASE=Askey Computer Corp. [hex] - -usb:v1690p0001* - ID_PRODUCT_FROM_DATABASE=Arcaze Gamepad - -usb:v1690p0101* - ID_PRODUCT_FROM_DATABASE=Creative Modem Blaster DE5670 - -usb:v1690p0102* - ID_PRODUCT_FROM_DATABASE=V1456 VQE-R2 Modem [conexant] - -usb:v1690p0103* - ID_PRODUCT_FROM_DATABASE=1456 VQE-R3 Modem [conexant] - -usb:v1690p0104* - ID_PRODUCT_FROM_DATABASE=HCF V90 Data Fax RTAD Modem - -usb:v1690p0107* - ID_PRODUCT_FROM_DATABASE=HCF V.90 Data,Fax,RTAD Modem - -usb:v1690p0109* - ID_PRODUCT_FROM_DATABASE=MagicXpress V.90 Pocket Modem [conexant] - -usb:v1690p0203* - ID_PRODUCT_FROM_DATABASE=Voyager ADSL Modem Loader - -usb:v1690p0204* - ID_PRODUCT_FROM_DATABASE=Voyager ADSL Modem - -usb:v1690p0205* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v1690p0206* - ID_PRODUCT_FROM_DATABASE=GlobeSpan ADSL WAN Modem - -usb:v1690p0208* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v1690p0209* - ID_PRODUCT_FROM_DATABASE=Voyager 100 ADSL Modem - -usb:v1690p0211* - ID_PRODUCT_FROM_DATABASE=Globespan Virata ADSL LAN Modem - -usb:v1690p0212* - ID_PRODUCT_FROM_DATABASE=DSL Modem - -usb:v1690p0213* - ID_PRODUCT_FROM_DATABASE=HM121d DSL Modem - -usb:v1690p0214* - ID_PRODUCT_FROM_DATABASE=HM121d DSL Modem - -usb:v1690p0215* - ID_PRODUCT_FROM_DATABASE=Voyager 105 ADSL Modem - -usb:v1690p0701* - ID_PRODUCT_FROM_DATABASE=WLAN - -usb:v1690p0710* - ID_PRODUCT_FROM_DATABASE=SMCWUSBT-G - -usb:v1690p0711* - ID_PRODUCT_FROM_DATABASE=SMCWUSBT-G (no firmware) - -usb:v1690p0712* - ID_PRODUCT_FROM_DATABASE=AR5523 - -usb:v1690p0713* - ID_PRODUCT_FROM_DATABASE=AR5523 (no firmware) - -usb:v1690p0715* - ID_PRODUCT_FROM_DATABASE=Name: Voyager 1055 Laptop 802.11g Adapter [Broadcom 4320] - -usb:v1690p0722* - ID_PRODUCT_FROM_DATABASE=RT2573 - -usb:v1690p0726* - ID_PRODUCT_FROM_DATABASE=Wi-Fi Wireless LAN Adapter - -usb:v1690p0740* - ID_PRODUCT_FROM_DATABASE=802.11n Wireless LAN Card - -usb:v1690p0901* - ID_PRODUCT_FROM_DATABASE=Voyager 205 ADSL Router - -usb:v1696* - ID_VENDOR_FROM_DATABASE=Hitachi Video and Information System, Inc. - -usb:v1697* - ID_VENDOR_FROM_DATABASE=VTec Test, Inc. - -usb:v16A5* - ID_VENDOR_FROM_DATABASE=Shenzhen Zhengerya Cable Co., Ltd. - -usb:v16A6* - ID_VENDOR_FROM_DATABASE=Unigraf - -usb:v16A6p3000* - ID_PRODUCT_FROM_DATABASE=VTG-3xxx Video Test Generator family - -usb:v16A6p4000* - ID_PRODUCT_FROM_DATABASE=VTG-4xxx Video Test Generator family - -usb:v16A6p5000* - ID_PRODUCT_FROM_DATABASE=VTG-5xxx Video Test Generator family - -usb:v16A6p5001* - ID_PRODUCT_FROM_DATABASE=VTG-5xxx Special (update) mode of VTG-5xxx family - -usb:v16AB* - ID_VENDOR_FROM_DATABASE=Global Sun Technology - -usb:v16ABp7801* - ID_PRODUCT_FROM_DATABASE=AR5523 - -usb:v16ABp7802* - ID_PRODUCT_FROM_DATABASE=AR5523 (no firmware) - -usb:v16ABp7811* - ID_PRODUCT_FROM_DATABASE=AR5523 - -usb:v16ABp7812* - ID_PRODUCT_FROM_DATABASE=AR5523 (no firmware) - -usb:v16AC* - ID_VENDOR_FROM_DATABASE=Dongguan ChingLung Wire & Cable Co., Ltd. - -usb:v16B4* - ID_VENDOR_FROM_DATABASE=iStation - -usb:v16B4p0801* - ID_PRODUCT_FROM_DATABASE=U43 - -usb:v16B5* - ID_VENDOR_FROM_DATABASE=Persentec, Inc. - -usb:v16B5p0002* - ID_PRODUCT_FROM_DATABASE=Otto driving companion - -usb:v16C0* - ID_VENDOR_FROM_DATABASE=Van Ooijen Technische Informatica - -usb:v16C0p03E8* - ID_PRODUCT_FROM_DATABASE=free for internal lab use 1000 - -usb:v16C0p03E9* - ID_PRODUCT_FROM_DATABASE=free for internal lab use 1001 - -usb:v16C0p03EA* - ID_PRODUCT_FROM_DATABASE=free for internal lab use 1002 - -usb:v16C0p03EB* - ID_PRODUCT_FROM_DATABASE=free for internal lab use 1003 - -usb:v16C0p03EC* - ID_PRODUCT_FROM_DATABASE=free for internal lab use 1004 - -usb:v16C0p03ED* - ID_PRODUCT_FROM_DATABASE=free for internal lab use 1005 - -usb:v16C0p03EE* - ID_PRODUCT_FROM_DATABASE=free for internal lab use 1006 - -usb:v16C0p03EF* - ID_PRODUCT_FROM_DATABASE=free for internal lab use 1007 - -usb:v16C0p03F0* - ID_PRODUCT_FROM_DATABASE=free for internal lab use 1008 - -usb:v16C0p03F1* - ID_PRODUCT_FROM_DATABASE=free for internal lab use 1009 - -usb:v16C0p0477* - ID_PRODUCT_FROM_DATABASE=Teensy Rebootor - -usb:v16C0p0478* - ID_PRODUCT_FROM_DATABASE=Teensy Halfkay Bootloader - -usb:v16C0p0479* - ID_PRODUCT_FROM_DATABASE=Teensy Debug - -usb:v16C0p047A* - ID_PRODUCT_FROM_DATABASE=Teensy Serial - -usb:v16C0p047B* - ID_PRODUCT_FROM_DATABASE=Teensy Serial+Debug - -usb:v16C0p047C* - ID_PRODUCT_FROM_DATABASE=Teensy Keyboard - -usb:v16C0p047D* - ID_PRODUCT_FROM_DATABASE=Teensy Keyboard+Debug - -usb:v16C0p047E* - ID_PRODUCT_FROM_DATABASE=Teensy Mouse - -usb:v16C0p047F* - ID_PRODUCT_FROM_DATABASE=Teensy Mouse+Debug - -usb:v16C0p0480* - ID_PRODUCT_FROM_DATABASE=Teensy RawHID - -usb:v16C0p0481* - ID_PRODUCT_FROM_DATABASE=Teensy RawHID+Debug - -usb:v16C0p0482* - ID_PRODUCT_FROM_DATABASE=Teensyduino Keyboard+Mouse+Joystick - -usb:v16C0p0483* - ID_PRODUCT_FROM_DATABASE=Teensyduino Serial - -usb:v16C0p0484* - ID_PRODUCT_FROM_DATABASE=Teensyduino Disk - -usb:v16C0p0485* - ID_PRODUCT_FROM_DATABASE=Teensyduino MIDI - -usb:v16C0p0486* - ID_PRODUCT_FROM_DATABASE=Teensyduino RawHID - -usb:v16C0p0487* - ID_PRODUCT_FROM_DATABASE=Teensyduino Serial+Keyboard+Mouse+Joystick - -usb:v16C0p0488* - ID_PRODUCT_FROM_DATABASE=Teensyduino Flight Sim Controls - -usb:v16C0p05DC* - ID_PRODUCT_FROM_DATABASE=shared ID for use with libusb - -usb:v16C0p05DD* - ID_PRODUCT_FROM_DATABASE=BlackcatUSB2 - -usb:v16C0p05DF* - ID_PRODUCT_FROM_DATABASE=HID device except mice, keyboards, and joysticks - -usb:v16C0p05E1* - ID_PRODUCT_FROM_DATABASE=Free shared USB VID/PID pair for CDC devices - -usb:v16C0p05E4* - ID_PRODUCT_FROM_DATABASE=Free shared USB VID/PID pair for MIDI devices - -usb:v16C0p06B4* - ID_PRODUCT_FROM_DATABASE=USB2LPT with 2 interfaces - -usb:v16C0p06B5* - ID_PRODUCT_FROM_DATABASE=USB2LPT with 3 interfaces (native, HID, printer) - -usb:v16C0p076B* - ID_PRODUCT_FROM_DATABASE=OpenPCD 13.56MHz RFID Reader - -usb:v16C0p076C* - ID_PRODUCT_FROM_DATABASE=OpenPICC 13.56MHz RFID Simulator (native) - -usb:v16C0p08AC* - ID_PRODUCT_FROM_DATABASE=OpenBeacon USB stick - -usb:v16C0p08CA* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte Universal Display - -usb:v16C0p08CB* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte Studio Clock - -usb:v16C0p08CC* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte SAM7S MT Boot Loader - -usb:v16C0p08CD* - ID_PRODUCT_FROM_DATABASE=Alpermann+Velte SAM7X MT Boot Loader - -usb:v16C0p0A32* - ID_PRODUCT_FROM_DATABASE=jbmedia Light-Manager Pro - -usb:v16C0p27D8* - ID_PRODUCT_FROM_DATABASE=libusb-bound devices - -usb:v16C0p27D9* - ID_PRODUCT_FROM_DATABASE=HID device except mice, keyboards, and joysticks - -usb:v16C0p27DA* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v16C0p27DB* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v16C0p27DC* - ID_PRODUCT_FROM_DATABASE=Joystick - -usb:v16C0p27DD* - ID_PRODUCT_FROM_DATABASE=CDC-ACM class devices (modems) - -usb:v16C0p27DE* - ID_PRODUCT_FROM_DATABASE=MIDI class devices - -usb:v16C0p294A* - ID_PRODUCT_FROM_DATABASE=Eye Movement Recorder [Visagraph] - -usb:v16C0p294B* - ID_PRODUCT_FROM_DATABASE=Eye Movement Recorder [ReadAlyzer] - -usb:v16CA* - ID_VENDOR_FROM_DATABASE=Wireless Cables, Inc. - -usb:v16CAp1502* - ID_PRODUCT_FROM_DATABASE=Bluetooth Dongle - -usb:v16CC* - ID_VENDOR_FROM_DATABASE=silex technology, Inc. - -usb:v16D0* - ID_VENDOR_FROM_DATABASE=MCS - -usb:v16D0p0498* - ID_PRODUCT_FROM_DATABASE=Braintechnology USB-LPS - -usb:v16D0p0504* - ID_PRODUCT_FROM_DATABASE=RETRO Innovations ZoomFloppy - -usb:v16D0p054B* - ID_PRODUCT_FROM_DATABASE=GrauTec ReelBox OLED Display (external) - -usb:v16D0p05BE* - ID_PRODUCT_FROM_DATABASE=EasyLogic Board - -usb:v16D0p0753* - ID_PRODUCT_FROM_DATABASE=Digistump DigiSpark - -usb:v16D0p075C* - ID_PRODUCT_FROM_DATABASE=AB-1.x UAC1 [Audio Widget] - -usb:v16D0p075D* - ID_PRODUCT_FROM_DATABASE=AB-1.x UAC2 [Audio Widget] - -usb:v16D3* - ID_VENDOR_FROM_DATABASE=Frontline Test Equipment, Inc. - -usb:v16D5* - ID_VENDOR_FROM_DATABASE=AnyDATA Corporation - -usb:v16D5p6202* - ID_PRODUCT_FROM_DATABASE=CDMA/UMTS/GPRS modem - -usb:v16D5p6501* - ID_PRODUCT_FROM_DATABASE=CDMA 2000 1xRTT/EV-DO Modem - -usb:v16D5p6502* - ID_PRODUCT_FROM_DATABASE=CDMA/UMTS/GPRS modem - -usb:v16D6* - ID_VENDOR_FROM_DATABASE=JABLOCOM s.r.o. - -usb:v16D6p8000* - ID_PRODUCT_FROM_DATABASE=GDP-04 desktop phone - -usb:v16D6p8001* - ID_PRODUCT_FROM_DATABASE=EYE-02 - -usb:v16D6p8003* - ID_PRODUCT_FROM_DATABASE=GDP-04 modem - -usb:v16D6p8004* - ID_PRODUCT_FROM_DATABASE=Bootloader - -usb:v16D6p8005* - ID_PRODUCT_FROM_DATABASE=GDP-04i - -usb:v16D6p8007* - ID_PRODUCT_FROM_DATABASE=BTP-06 modem - -usb:v16D8* - ID_VENDOR_FROM_DATABASE=CMOTECH Co., Ltd. - -usb:v16D8p5141* - ID_PRODUCT_FROM_DATABASE=CMOTECH CDMA Technologies modem - -usb:v16D8p5533* - ID_PRODUCT_FROM_DATABASE=CCU-550 CDMA EV-DO modem - -usb:v16D8p5543* - ID_PRODUCT_FROM_DATABASE=CDMA 2000 1xRTT/1xEVDO modem - -usb:v16D8p6280* - ID_PRODUCT_FROM_DATABASE=CMOTECH CDMA Technologies modem - -usb:v16D8p6803* - ID_PRODUCT_FROM_DATABASE=CNU-680 CDMA EV-DO modem - -usb:v16D8p8001* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem (QDL mode) - -usb:v16D8p8002* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem - -usb:v16DC* - ID_VENDOR_FROM_DATABASE=Wiener, Plein & Baus - -usb:v16DCp0001* - ID_PRODUCT_FROM_DATABASE=CC - -usb:v16DCp000B* - ID_PRODUCT_FROM_DATABASE=VM - -usb:v16DCp0010* - ID_PRODUCT_FROM_DATABASE=PL512 Power Supply System - -usb:v16DCp0011* - ID_PRODUCT_FROM_DATABASE=MARATON Power Supply System - -usb:v16DCp0012* - ID_PRODUCT_FROM_DATABASE=MPOD Multi Channel Power Supply System - -usb:v16DCp0015* - ID_PRODUCT_FROM_DATABASE=CML Control, Measurement and Data Logging System - -usb:v16DF* - ID_VENDOR_FROM_DATABASE=King Billion Electronics Co., Ltd. - -usb:v16F0* - ID_VENDOR_FROM_DATABASE=GN ReSound A/S - -usb:v16F0p0001* - ID_PRODUCT_FROM_DATABASE=Speedlink Programming Interface - -usb:v16F0p0003* - ID_PRODUCT_FROM_DATABASE=Airlink Wireless Programming Interface - -usb:v16F5* - ID_VENDOR_FROM_DATABASE=Futurelogic Inc. - -usb:v1706* - ID_VENDOR_FROM_DATABASE=BlueView Technologies, Inc. - -usb:v1707* - ID_VENDOR_FROM_DATABASE=ARTIMI - -usb:v170B* - ID_VENDOR_FROM_DATABASE=Swissonic - -usb:v170Bp0011* - ID_PRODUCT_FROM_DATABASE=MIDI-USB 1x1 - -usb:v170D* - ID_VENDOR_FROM_DATABASE=Avnera - -usb:v1725* - ID_VENDOR_FROM_DATABASE=Vitesse Semiconductor - -usb:v1726* - ID_VENDOR_FROM_DATABASE=Axesstel, Inc. - -usb:v1726p1000* - ID_PRODUCT_FROM_DATABASE=wireless modem - -usb:v1726p2000* - ID_PRODUCT_FROM_DATABASE=wireless modem - -usb:v1726p3000* - ID_PRODUCT_FROM_DATABASE=wireless modem - -usb:v172F* - ID_VENDOR_FROM_DATABASE=Waltop International Corp. - -usb:v172Fp0022* - ID_PRODUCT_FROM_DATABASE=Tablet - -usb:v172Fp0024* - ID_PRODUCT_FROM_DATABASE=Tablet - -usb:v172Fp0025* - ID_PRODUCT_FROM_DATABASE=Tablet - -usb:v172Fp0026* - ID_PRODUCT_FROM_DATABASE=Tablet - -usb:v172Fp0031* - ID_PRODUCT_FROM_DATABASE=Slim Tablet 12.1" - -usb:v172Fp0032* - ID_PRODUCT_FROM_DATABASE=Slim Tablet 5.8" - -usb:v172Fp0034* - ID_PRODUCT_FROM_DATABASE=Slim Tablet 12.1" - -usb:v172Fp0038* - ID_PRODUCT_FROM_DATABASE=Genius G-Pen F509 - -usb:v172Fp0500* - ID_PRODUCT_FROM_DATABASE=Media Tablet 14.1" - -usb:v172Fp0501* - ID_PRODUCT_FROM_DATABASE=Media Tablet 10.6" - -usb:v172Fp0502* - ID_PRODUCT_FROM_DATABASE=Sirius Battery Free Tablet - -usb:v1733* - ID_VENDOR_FROM_DATABASE=Cellink Technology Co., Ltd - -usb:v1733p0101* - ID_PRODUCT_FROM_DATABASE=RF Wireless Optical Mouse OP-701 - -usb:v1736* - ID_VENDOR_FROM_DATABASE=CANON IMAGING SYSTEM TECHNOLOGIES INC. - -usb:v1737* - ID_VENDOR_FROM_DATABASE=Linksys - -usb:v1737p0039* - ID_PRODUCT_FROM_DATABASE=USB1000 Gigabit Notebook Adapter - -usb:v1737p0070* - ID_PRODUCT_FROM_DATABASE=WUSB100 v1 RangePlus Wireless Network Adapter [Ralink RT2870] - -usb:v1737p0071* - ID_PRODUCT_FROM_DATABASE=WUSB600N v1 Dual-Band Wireless-N Network Adapter [Ralink RT2870] - -usb:v1737p0073* - ID_PRODUCT_FROM_DATABASE=WUSB54GC v2 802.11g Adapter [Realtek RTL8187B] - -usb:v1737p0075* - ID_PRODUCT_FROM_DATABASE=WUSB54GSC v2 802.11g Adapter [Broadcom 4326U] - -usb:v1737p0077* - ID_PRODUCT_FROM_DATABASE=WUSB54GC v3 802.11g Adapter [Ralink RT2070L] - -usb:v1737p0078* - ID_PRODUCT_FROM_DATABASE=WUSB100 v2 RangePlus Wireless Network Adapter [Ralink RT3070] - -usb:v1737p0079* - ID_PRODUCT_FROM_DATABASE=WUSB600N v2 Dual-Band Wireless-N Network Adapter [Ralink RT3572] - -usb:v1740* - ID_VENDOR_FROM_DATABASE=Senao - -usb:v1740p0605* - ID_PRODUCT_FROM_DATABASE=LevelOne WUA-0605 N_Max Wireless USB Adapter - -usb:v1740p0615* - ID_PRODUCT_FROM_DATABASE=LevelOne WUA-0615 N_Max Wireless USB Adapter - -usb:v1740p1000* - ID_PRODUCT_FROM_DATABASE=NUB-350 802.11g Wireless Adapter [Intersil ISL3887] - -usb:v1740p2000* - ID_PRODUCT_FROM_DATABASE=NUB-8301 802.11bg - -usb:v1740p3701* - ID_PRODUCT_FROM_DATABASE=EUB-3701 EXT 802.11g Wireless Adapter [Ralink RT2571W] - -usb:v1740p9603* - ID_PRODUCT_FROM_DATABASE=RTL8188S WLAN Adapter - -usb:v1740p9701* - ID_PRODUCT_FROM_DATABASE=EnGenius 802.11n Wireless USB Adapter - -usb:v1740p9702* - ID_PRODUCT_FROM_DATABASE=EnGenius 802.11n Wireless USB Adapter - -usb:v1740p9703* - ID_PRODUCT_FROM_DATABASE=EnGenius 802.11n Wireless USB Adapter - -usb:v1740p9705* - ID_PRODUCT_FROM_DATABASE=EnGenius 802.11n Wireless USB Adapter - -usb:v1740p9706* - ID_PRODUCT_FROM_DATABASE=EUB9706 802.11n Wireless Adapter [Ralink RT3072] - -usb:v1740p9801* - ID_PRODUCT_FROM_DATABASE=EUB9801 802.11abgn Wireless Adapter [Ralink RT3572] - -usb:v1743* - ID_VENDOR_FROM_DATABASE=General Atomics - -usb:v174C* - ID_VENDOR_FROM_DATABASE=ASMedia Technology Inc. - -usb:v174Cp5106* - ID_PRODUCT_FROM_DATABASE=Transcend StoreJet 25M3 - -usb:v174Cp55AA* - ID_PRODUCT_FROM_DATABASE=ASMedia 2105 SATA bridge - -usb:v174F* - ID_VENDOR_FROM_DATABASE=Syntek - -usb:v174Fp1105* - ID_PRODUCT_FROM_DATABASE=SM-MS/Pro-MMC-XD Card Reader - -usb:v174Fp110B* - ID_PRODUCT_FROM_DATABASE=HP Webcam - -usb:v174Fp1403* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam - -usb:v174Fp1404* - ID_PRODUCT_FROM_DATABASE=USB Camera device, 1.3 MPixel Web Cam - -usb:v174Fp5212* - ID_PRODUCT_FROM_DATABASE=USB 2.0 UVC PC Camera - -usb:v174Fp5A11* - ID_PRODUCT_FROM_DATABASE=PC Camera - -usb:v174Fp5A31* - ID_PRODUCT_FROM_DATABASE=Sonix USB 2.0 Camera - -usb:v174Fp5A35* - ID_PRODUCT_FROM_DATABASE=Sonix 1.3MPixel USB 2.0 Camera - -usb:v174Fp6A31* - ID_PRODUCT_FROM_DATABASE=Web Cam - Asus A8J, F3S, F5R, VX2S, V1S - -usb:v174Fp6A33* - ID_PRODUCT_FROM_DATABASE=Web Cam - Asus F3SA, F9J, F9S - -usb:v174Fp6A51* - ID_PRODUCT_FROM_DATABASE=2.0MPixel Web Cam - Asus Z96J, Z96S, S96S - -usb:v174Fp6A54* - ID_PRODUCT_FROM_DATABASE=Web Cam - -usb:v174Fp6D51* - ID_PRODUCT_FROM_DATABASE=2.0Mpixel Web Cam - Eurocom D900C - -usb:v174Fp8A12* - ID_PRODUCT_FROM_DATABASE=Syntek 0.3MPixel USB 2.0 UVC PC Camera - -usb:v174Fp8A33* - ID_PRODUCT_FROM_DATABASE=Syntek USB 2.0 UVC PC Camera - -usb:v174FpA311* - ID_PRODUCT_FROM_DATABASE=1.3MPixel Web Cam - Asus A3A, A6J, A6K, A6M, A6R, A6T, A6V, A7T, A7sv, A7U - -usb:v174FpA312* - ID_PRODUCT_FROM_DATABASE=1.3MPixel Web Cam - -usb:v174FpA821* - ID_PRODUCT_FROM_DATABASE=Web Cam - Packard Bell BU45, PB Easynote MX66-208W - -usb:v174FpAA11* - ID_PRODUCT_FROM_DATABASE=Web Cam - -usb:v1753* - ID_VENDOR_FROM_DATABASE=GERTEC Telecomunicacoes Ltda. - -usb:v1753pC901* - ID_PRODUCT_FROM_DATABASE=PPC900 Pinpad Terminal - -usb:v1759* - ID_VENDOR_FROM_DATABASE=LucidPort Technology, Inc. - -usb:v1761* - ID_VENDOR_FROM_DATABASE=ASUSTek Computer, Inc. (wrong ID) - -usb:v1761p0B05* - ID_PRODUCT_FROM_DATABASE=802.11n Network Adapter (wrong ID - swapped vendor and device) - -usb:v1772* - ID_VENDOR_FROM_DATABASE=System Level Solutions, Inc. - -usb:v1776* - ID_VENDOR_FROM_DATABASE=Arowana - -usb:v1776p501C* - ID_PRODUCT_FROM_DATABASE=300K CMOS Camera - -usb:v177F* - ID_VENDOR_FROM_DATABASE=Sweex - -usb:v177Fp0004* - ID_PRODUCT_FROM_DATABASE=MM004V5 Photo Key Chain (Digital Photo Frame) 1.5" - -usb:v177Fp0153* - ID_PRODUCT_FROM_DATABASE=LW153 802.11n Adapter [ralink rt3070] - -usb:v177Fp0154* - ID_PRODUCT_FROM_DATABASE=LW154 802.11bgn (1x1:1) Wireless Adapter [Realtek RTL8188SU] - -usb:v177Fp0313* - ID_PRODUCT_FROM_DATABASE=LW313 802.11n Adapter [ralink rt2770 + rt2720] - -usb:v1781* - ID_VENDOR_FROM_DATABASE=Multiple Vendors - -usb:v1781p083E* - ID_PRODUCT_FROM_DATABASE=MetaGeek Wi-Spy - -usb:v1781p083F* - ID_PRODUCT_FROM_DATABASE=MetaGeek Wi-Spy 2.4x - -usb:v1781p0938* - ID_PRODUCT_FROM_DATABASE=Iguanaworks USB IR Transceiver - -usb:v1781p0C30* - ID_PRODUCT_FROM_DATABASE=Telldus TellStick - -usb:v1781p0C31* - ID_PRODUCT_FROM_DATABASE=Telldus TellStick Duo - -usb:v1781p0C9F* - ID_PRODUCT_FROM_DATABASE=USBtiny - -usb:v1782* - ID_VENDOR_FROM_DATABASE=Spreadtrum Communications Inc. - -usb:v1784* - ID_VENDOR_FROM_DATABASE=TopSeed Technology Corp. - -usb:v1784p0001* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Transceiver - -usb:v1784p0004* - ID_PRODUCT_FROM_DATABASE=RF Combo Device - -usb:v1784p0006* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Transceiver - -usb:v1784p0007* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Transceiver - -usb:v1784p0008* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Transceiver - -usb:v1784p000A* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Transceiver - -usb:v1784p0011* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Transceiver - -usb:v1787* - ID_VENDOR_FROM_DATABASE=ATI AIB - -usb:v1788* - ID_VENDOR_FROM_DATABASE=ShenZhen Litkconn Technology Co., Ltd. - -usb:v1796* - ID_VENDOR_FROM_DATABASE=Printrex, Inc. - -usb:v1797* - ID_VENDOR_FROM_DATABASE=JALCO CO., LTD. - -usb:v1799* - ID_VENDOR_FROM_DATABASE=Belkin Components - -usb:v1799p7051* - ID_PRODUCT_FROM_DATABASE=F5D7051 802.11g Adapter v1000 [Broadcom 4320] - -usb:v1799p8051* - ID_PRODUCT_FROM_DATABASE=F5D8051 v2 802.11bgn Wireless Adapter [Marvell 88W8362] - -usb:v179D* - ID_VENDOR_FROM_DATABASE=Ricavision International, Inc. - -usb:v179Dp0010* - ID_PRODUCT_FROM_DATABASE=Internal Infrared Transceiver - -usb:v17A0* - ID_VENDOR_FROM_DATABASE=Samson Technologies Corp. - -usb:v17A0p0001* - ID_PRODUCT_FROM_DATABASE=C01U condenser microphone - -usb:v17A0p0002* - ID_PRODUCT_FROM_DATABASE=Q1U dynamic microphone - -usb:v17A0p0100* - ID_PRODUCT_FROM_DATABASE=C03U multi-pattern microphone - -usb:v17A0p0101* - ID_PRODUCT_FROM_DATABASE=UB1 boundary microphone - -usb:v17A0p0200* - ID_PRODUCT_FROM_DATABASE=StudioDock monitors (internal hub) - -usb:v17A0p0201* - ID_PRODUCT_FROM_DATABASE=StudioDock monitors (audio) - -usb:v17A0p0301* - ID_PRODUCT_FROM_DATABASE=Q2U handheld microphone with XLR - -usb:v17A0p0302* - ID_PRODUCT_FROM_DATABASE=GoMic compact condenser microphone - -usb:v17A0p0310* - ID_PRODUCT_FROM_DATABASE=Meteor condenser microphone - -usb:v17A4* - ID_VENDOR_FROM_DATABASE=Concept2 - -usb:v17A4p0001* - ID_PRODUCT_FROM_DATABASE=Performance Monitor 3 - -usb:v17A4p0002* - ID_PRODUCT_FROM_DATABASE=Performance Monitor 4 - -usb:v17A5* - ID_VENDOR_FROM_DATABASE=Advanced Connection Technology Inc. - -usb:v17A7* - ID_VENDOR_FROM_DATABASE=MICOMSOFT CO., LTD. - -usb:v17A8* - ID_VENDOR_FROM_DATABASE=Kamstrup A/S - -usb:v17A8p0001* - ID_PRODUCT_FROM_DATABASE=Optical Eye/3-wire - -usb:v17A8p0005* - ID_PRODUCT_FROM_DATABASE=M-Bus Master MultiPort 250D - -usb:v17B3* - ID_VENDOR_FROM_DATABASE=Grey Innovation - -usb:v17B3p0004* - ID_PRODUCT_FROM_DATABASE=Linux-USB Midi Gadget - -usb:v17BA* - ID_VENDOR_FROM_DATABASE=SAURIS GmbH - -usb:v17BAp0001* - ID_PRODUCT_FROM_DATABASE=SAU510-USB [no firmware] - -usb:v17BAp0510* - ID_PRODUCT_FROM_DATABASE=SAU510-USB and SAU510-USB plus JTAG Emulators - -usb:v17BAp0511* - ID_PRODUCT_FROM_DATABASE=SAU510-USB Iso Plus JTAG Emulator - -usb:v17BAp0520* - ID_PRODUCT_FROM_DATABASE=SAU510-USB Nano JTAG Emulator - -usb:v17BAp1511* - ID_PRODUCT_FROM_DATABASE=Onboard Emulator on SAUModule development kit - -usb:v17C3* - ID_VENDOR_FROM_DATABASE=Singim International Corp. - -usb:v17CC* - ID_VENDOR_FROM_DATABASE=Native Instruments - -usb:v17CCp041C* - ID_PRODUCT_FROM_DATABASE=Audio 2 DJ - -usb:v17CCp0808* - ID_PRODUCT_FROM_DATABASE=Maschine Controller - -usb:v17CCp0815* - ID_PRODUCT_FROM_DATABASE=Audio Kontrol 1 - -usb:v17CCp0839* - ID_PRODUCT_FROM_DATABASE=Audio 4 DJ - -usb:v17CCp0D8D* - ID_PRODUCT_FROM_DATABASE=Guitarrig Mobile - -usb:v17CCp1915* - ID_PRODUCT_FROM_DATABASE=Session I/O - -usb:v17CCp1940* - ID_PRODUCT_FROM_DATABASE=RigKontrol3 - -usb:v17CCp1969* - ID_PRODUCT_FROM_DATABASE=RigKontrol2 - -usb:v17CCp1978* - ID_PRODUCT_FROM_DATABASE=Audio 8 DJ - -usb:v17CCp2280* - ID_PRODUCT_FROM_DATABASE=Medion MDPNA1500 in card reader mode - -usb:v17CCp2305* - ID_PRODUCT_FROM_DATABASE=Traktor Kontrol X1 - -usb:v17CCp4711* - ID_PRODUCT_FROM_DATABASE=Kore Controller - -usb:v17CCp4712* - ID_PRODUCT_FROM_DATABASE=Kore Controller 2 - -usb:v17CCpBAFF* - ID_PRODUCT_FROM_DATABASE=Traktor Kontrol S4 - -usb:v17CF* - ID_VENDOR_FROM_DATABASE=Hip Hing Cable & Plug Mfy. Ltd. - -usb:v17D0* - ID_VENDOR_FROM_DATABASE=Sanford L.P. - -usb:v17D3* - ID_VENDOR_FROM_DATABASE=Korea Techtron Co., Ltd. - -usb:v17E9* - ID_VENDOR_FROM_DATABASE=DisplayLink - -usb:v17E9p0051* - ID_PRODUCT_FROM_DATABASE=USB VGA Adaptor - -usb:v17E9p0377* - ID_PRODUCT_FROM_DATABASE=Plugable UD-160-A (M) - -usb:v17E9p0378* - ID_PRODUCT_FROM_DATABASE=Plugable UGA-2K-A - -usb:v17E9p0379* - ID_PRODUCT_FROM_DATABASE=Plugable UGA-125 - -usb:v17E9p037A* - ID_PRODUCT_FROM_DATABASE=Plugable UGA-165 - -usb:v17E9p037B* - ID_PRODUCT_FROM_DATABASE=Plugable USB-VGA-165 - -usb:v17E9p037C* - ID_PRODUCT_FROM_DATABASE=Plugable DC-125 - -usb:v17E9p037D* - ID_PRODUCT_FROM_DATABASE=Plugable USB2-HDMI-165 - -usb:v17E9p430A* - ID_PRODUCT_FROM_DATABASE=HP Port Replicator (Composite Device) - -usb:v17EB* - ID_VENDOR_FROM_DATABASE=Cornice, Inc. - -usb:v17EF* - ID_VENDOR_FROM_DATABASE=Lenovo - -usb:v17EFp1003* - ID_PRODUCT_FROM_DATABASE=Integrated Smart Card Reader - -usb:v17EFp1004* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam - -usb:v17EFp100A* - ID_PRODUCT_FROM_DATABASE=ThinkPad Mini Dock Plus Series 3 - -usb:v17EFp3815* - ID_PRODUCT_FROM_DATABASE=ChipsBnk 2GB USB Stick - -usb:v17EFp4802* - ID_PRODUCT_FROM_DATABASE=Lenovo Vc0323+MI1310_SOC Camera - -usb:v17EFp4807* - ID_PRODUCT_FROM_DATABASE=UVC Camera - -usb:v17EFp480C* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam - -usb:v17EFp480D* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam [R5U877] - -usb:v17EFp480E* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam [R5U877] - -usb:v17EFp480F* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam [R5U877] - -usb:v17EFp4810* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam [R5U877] - -usb:v17EFp4811* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam [R5U877] - -usb:v17EFp4812* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam [R5U877] - -usb:v17EFp4813* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam [R5U877] - -usb:v17EFp4814* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam [R5U877] - -usb:v17EFp4815* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam [R5U877] - -usb:v17EFp481C* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam - -usb:v17EFp481D* - ID_PRODUCT_FROM_DATABASE=Integrated Webcam - -usb:v17EFp6007* - ID_PRODUCT_FROM_DATABASE=Smartcard Keyboard - -usb:v17EFp6009* - ID_PRODUCT_FROM_DATABASE=ThinkPad Keyboard with TrackPoint - -usb:v17EFp6014* - ID_PRODUCT_FROM_DATABASE=Mini Wireless Keyboard N5901 - -usb:v17EFp7423* - ID_PRODUCT_FROM_DATABASE=IdeaPad A1 Tablet - -usb:v17EFp7435* - ID_PRODUCT_FROM_DATABASE=A789 (Mass Storage mode, with debug) - -usb:v17EFp743A* - ID_PRODUCT_FROM_DATABASE=A789 (Mass Storage mode) - -usb:v17EFp7497* - ID_PRODUCT_FROM_DATABASE=A789 (MTP mode) - -usb:v17EFp7498* - ID_PRODUCT_FROM_DATABASE=A789 (MTP mode, with debug) - -usb:v17EFp749A* - ID_PRODUCT_FROM_DATABASE=A789 (PTP mode) - -usb:v17EFp749B* - ID_PRODUCT_FROM_DATABASE=A789 (PTP mode, with debug) - -usb:v17F4* - ID_VENDOR_FROM_DATABASE=WaveSense - -usb:v17F4pAAAA* - ID_PRODUCT_FROM_DATABASE=Jazz Blood Glucose Meter - -usb:v17F5* - ID_VENDOR_FROM_DATABASE=K.K. Rocky - -usb:v17F6* - ID_VENDOR_FROM_DATABASE=Unicomp, Inc - -usb:v17F6p0709* - ID_PRODUCT_FROM_DATABASE=Model M Keyboard - -usb:v1809* - ID_VENDOR_FROM_DATABASE=Advantech - -usb:v1809p4604* - ID_PRODUCT_FROM_DATABASE=USB-4604 - -usb:v1809p4761* - ID_PRODUCT_FROM_DATABASE=USB-4761 Portable Data Acquisition Module - -usb:v1822* - ID_VENDOR_FROM_DATABASE=Twinhan - -usb:v1822p3201* - ID_PRODUCT_FROM_DATABASE=VisionDTV USB-Ter/HAMA USB DVB-T device cold - -usb:v1822p3202* - ID_PRODUCT_FROM_DATABASE=VisionDTV USB-Ter/HAMA USB DVB-T device warm - -usb:v1831* - ID_VENDOR_FROM_DATABASE=Gwo Jinn Industries Co., Ltd. - -usb:v1832* - ID_VENDOR_FROM_DATABASE=Huizhou Shenghua Industrial Co., Ltd. - -usb:v183D* - ID_VENDOR_FROM_DATABASE=VIVOphone - -usb:v183Dp0010* - ID_PRODUCT_FROM_DATABASE=VoiceKey - -usb:v1843* - ID_VENDOR_FROM_DATABASE=Vaisala - -usb:v1849* - ID_VENDOR_FROM_DATABASE=ASRock Incorporation - -usb:v1852* - ID_VENDOR_FROM_DATABASE=GYROCOM C&C Co., LTD - -usb:v1852p7922* - ID_PRODUCT_FROM_DATABASE=Audiotrak DR.DAC2 DX [GYROCOM C&C] - -usb:v1854* - ID_VENDOR_FROM_DATABASE=Memory Devices Ltd. - -usb:v185B* - ID_VENDOR_FROM_DATABASE=Compro - -usb:v185Bp3020* - ID_PRODUCT_FROM_DATABASE=K100 Infrared Receiver - -usb:v185Bp3082* - ID_PRODUCT_FROM_DATABASE=K100 Infrared Receiver v2 - -usb:v185BpD000* - ID_PRODUCT_FROM_DATABASE=Compro Videomate DVB-U2000 - DVB-T USB cold - -usb:v185BpD001* - ID_PRODUCT_FROM_DATABASE=Compro Videomate DVB-U2000 - DVB-T USB warm - -usb:v1861* - ID_VENDOR_FROM_DATABASE=Tech Technology Industrial Company - -usb:v1862* - ID_VENDOR_FROM_DATABASE=Teridian Semiconductor Corp. - -usb:v1870* - ID_VENDOR_FROM_DATABASE=Nexio Co., Ltd - -usb:v1870p0001* - ID_PRODUCT_FROM_DATABASE=iNexio Touchscreen controller - -usb:v1871* - ID_VENDOR_FROM_DATABASE=Aveo Technology Corp. - -usb:v1871p0101* - ID_PRODUCT_FROM_DATABASE=UVC camera (Bresser microscope) - -usb:v1871p0D01* - ID_PRODUCT_FROM_DATABASE=USB2.0 Camera - -usb:v1873* - ID_VENDOR_FROM_DATABASE=Navilock - -usb:v1873pEE93* - ID_PRODUCT_FROM_DATABASE=EasyLogger - -usb:v187C* - ID_VENDOR_FROM_DATABASE=Alienware Corporation - -usb:v187Cp0600* - ID_PRODUCT_FROM_DATABASE=Dual Compatible Game Pad - -usb:v187F* - ID_VENDOR_FROM_DATABASE=Siano Mobile Silicon - -usb:v187Fp0010* - ID_PRODUCT_FROM_DATABASE=Stallar Board - -usb:v187Fp0100* - ID_PRODUCT_FROM_DATABASE=Stallar Board - -usb:v187Fp0200* - ID_PRODUCT_FROM_DATABASE=Nova A - -usb:v187Fp0201* - ID_PRODUCT_FROM_DATABASE=Nova B - -usb:v187Fp0202* - ID_PRODUCT_FROM_DATABASE=Nice - -usb:v187Fp0300* - ID_PRODUCT_FROM_DATABASE=Vega - -usb:v187Fp0301* - ID_PRODUCT_FROM_DATABASE=VeNice - -usb:v1892* - ID_VENDOR_FROM_DATABASE=Vast Technologies, Inc. - -usb:v1894* - ID_VENDOR_FROM_DATABASE=Topseed - -usb:v1894p5632* - ID_PRODUCT_FROM_DATABASE=Atek Tote Remote - -usb:v1894p5641* - ID_PRODUCT_FROM_DATABASE=TSAM-004 Presentation Remote - -usb:v1897* - ID_VENDOR_FROM_DATABASE=Evertop Wire Cable Co. - -usb:v189F* - ID_VENDOR_FROM_DATABASE=3Shape A/S - -usb:v189Fp0002* - ID_PRODUCT_FROM_DATABASE=Legato2 3D Scanner - -usb:v18A4* - ID_VENDOR_FROM_DATABASE=CSSN - -usb:v18A4p0001* - ID_PRODUCT_FROM_DATABASE=Snapshell IDR - -usb:v18A5* - ID_VENDOR_FROM_DATABASE=Verbatim, Ltd - -usb:v18A5p0214* - ID_PRODUCT_FROM_DATABASE=Portable Hard Drive - -usb:v18A5p0216* - ID_PRODUCT_FROM_DATABASE=External Hard Drive - -usb:v18A5p0218* - ID_PRODUCT_FROM_DATABASE=External Hard Drive - -usb:v18A5p0227* - ID_PRODUCT_FROM_DATABASE=Pocket Hard Drive - -usb:v18A5p022B* - ID_PRODUCT_FROM_DATABASE=Portable Hard Drive (Store'n'Go) - -usb:v18A5p0237* - ID_PRODUCT_FROM_DATABASE=Portable Harddrive (500 GB) - -usb:v18A5p0302* - ID_PRODUCT_FROM_DATABASE=32GB Flash Drive - -usb:v18B1* - ID_VENDOR_FROM_DATABASE=Petalynx - -usb:v18B1p0037* - ID_PRODUCT_FROM_DATABASE=Maxter Remote Control - -usb:v18B4* - ID_VENDOR_FROM_DATABASE=e3C Technologies - -usb:v18B4p1001* - ID_PRODUCT_FROM_DATABASE=DUTV007 - -usb:v18B4p1002* - ID_PRODUCT_FROM_DATABASE=EC168 (v5) based USB DVB-T receiver - -usb:v18B4p1689* - ID_PRODUCT_FROM_DATABASE=DUTV009 - -usb:v18B4pFFFA* - ID_PRODUCT_FROM_DATABASE=EC168 (v2) based USB DVB-T receiver - -usb:v18B4pFFFB* - ID_PRODUCT_FROM_DATABASE=EC168 (v3) based USB DVB-T receiver - -usb:v18B6* - ID_VENDOR_FROM_DATABASE=Mikkon Technology Limited - -usb:v18B7* - ID_VENDOR_FROM_DATABASE=Zotek Electronic Co., Ltd. - -usb:v18C5* - ID_VENDOR_FROM_DATABASE=AMIT Technology, Inc. - -usb:v18C5p0002* - ID_PRODUCT_FROM_DATABASE=CG-WLUSB2GO - -usb:v18C5p0008* - ID_PRODUCT_FROM_DATABASE=CG-WLUSB2GNR Corega Wireless USB Adapter - -usb:v18C5p0012* - ID_PRODUCT_FROM_DATABASE=CG-WLUSB10 Corega Wireless USB Adapter - -usb:v18CD* - ID_VENDOR_FROM_DATABASE=Ecamm - -usb:v18CDpCAFE* - ID_PRODUCT_FROM_DATABASE=Pico iMage - -usb:v18D1* - ID_VENDOR_FROM_DATABASE=Google Inc. - -usb:v18D1p0D02* - ID_PRODUCT_FROM_DATABASE=Celkon A88 - -usb:v18D1p2D00* - ID_PRODUCT_FROM_DATABASE=Android-powered device in accessory mode - -usb:v18D1p2D01* - ID_PRODUCT_FROM_DATABASE=Android-powered device in accessory mode with ADB support - -usb:v18D1p4E11* - ID_PRODUCT_FROM_DATABASE=Nexus One - -usb:v18D1p4E12* - ID_PRODUCT_FROM_DATABASE=Nexus One (debug) - -usb:v18D1p4E13* - ID_PRODUCT_FROM_DATABASE=Nexus One (tether) - -usb:v18D1p4E20* - ID_PRODUCT_FROM_DATABASE=Nexus S (fastboot) - -usb:v18D1p4E21* - ID_PRODUCT_FROM_DATABASE=Nexus S - -usb:v18D1p4E22* - ID_PRODUCT_FROM_DATABASE=Nexus S (debug) - -usb:v18D1p4E24* - ID_PRODUCT_FROM_DATABASE=Nexus S (tether) - -usb:v18D1p4E40* - ID_PRODUCT_FROM_DATABASE=Nexus 7 (fastboot) - -usb:v18D1p4E41* - ID_PRODUCT_FROM_DATABASE=ASUS Nexus 7 (MTP modus) - -usb:v18D1p4E42* - ID_PRODUCT_FROM_DATABASE=Nexus 7 (debug) - -usb:v18D1p4E43* - ID_PRODUCT_FROM_DATABASE=ASUS Nexus 7 (PTP modus) - -usb:v18D1p4EE1* - ID_PRODUCT_FROM_DATABASE=Nexus 4 - -usb:v18D1p4EE2* - ID_PRODUCT_FROM_DATABASE=Nexus 4 (debug) - -usb:v18D1p4EE3* - ID_PRODUCT_FROM_DATABASE=Nexus 4 (tether) - -usb:v18D1p4EE4* - ID_PRODUCT_FROM_DATABASE=Nexus 4 (debug + tether) - -usb:v18D1p7102* - ID_PRODUCT_FROM_DATABASE=Toshiba Thrive tablet - -usb:v18D1pB004* - ID_PRODUCT_FROM_DATABASE=Pandigital / B&N Novel 9" tablet - -usb:v18D5* - ID_VENDOR_FROM_DATABASE=Starline International Group Limited - -usb:v18D9* - ID_VENDOR_FROM_DATABASE=Kaba - -usb:v18D9p01A0* - ID_PRODUCT_FROM_DATABASE=B-Net 91 07 - -usb:v18DC* - ID_VENDOR_FROM_DATABASE=LKC Technologies, Inc. - -usb:v18DD* - ID_VENDOR_FROM_DATABASE=Planon System Solutions Inc. - -usb:v18DDp1000* - ID_PRODUCT_FROM_DATABASE=DocuPen RC800 - -usb:v18E3* - ID_VENDOR_FROM_DATABASE=Fitipower Integrated Technology Inc - -usb:v18E3p7102* - ID_PRODUCT_FROM_DATABASE=Multi Card Reader (Internal) - -usb:v18E3p9101* - ID_PRODUCT_FROM_DATABASE=All-in-1 Card Reader - -usb:v18E3p9102* - ID_PRODUCT_FROM_DATABASE=Multi Card Reader - -usb:v18E3p9512* - ID_PRODUCT_FROM_DATABASE=Webcam - -usb:v18E8* - ID_VENDOR_FROM_DATABASE=Qcom - -usb:v18E8p6144* - ID_PRODUCT_FROM_DATABASE=LR802UA 802.11b Wireless Adapter [ALi M4301AU] - -usb:v18E8p6196* - ID_PRODUCT_FROM_DATABASE=RT2573 - -usb:v18E8p6229* - ID_PRODUCT_FROM_DATABASE=RT2573 - -usb:v18E8p6232* - ID_PRODUCT_FROM_DATABASE=Wireless 802.11g 54Mbps Network Adapter [RTL8187] - -usb:v18EA* - ID_VENDOR_FROM_DATABASE=Matrox Graphics, Inc. - -usb:v18EAp0002* - ID_PRODUCT_FROM_DATABASE=DualHead2Go [Analog Edition] - -usb:v18EAp0004* - ID_PRODUCT_FROM_DATABASE=TripleHead2Go [Digital Edition] - -usb:v18EC* - ID_VENDOR_FROM_DATABASE=Arkmicro Technologies Inc. - -usb:v18ECp3118* - ID_PRODUCT_FROM_DATABASE=USB to IrDA adapter [ARK3116T] - -usb:v18ECp3188* - ID_PRODUCT_FROM_DATABASE=ARK3188 UVC Webcam - -usb:v18ECp3299* - ID_PRODUCT_FROM_DATABASE=Webcam Carrefour - -usb:v18ECp3366* - ID_PRODUCT_FROM_DATABASE=Bresser Biolux NV - -usb:v18FD* - ID_VENDOR_FROM_DATABASE=FineArch Inc. - -usb:v1908* - ID_VENDOR_FROM_DATABASE=GEMBIRD - -usb:v1908p1320* - ID_PRODUCT_FROM_DATABASE=PhotoFrame PF-15-1 - -usb:v190D* - ID_VENDOR_FROM_DATABASE=Motorola GSG - -usb:v1914* - ID_VENDOR_FROM_DATABASE=Alco Digital Devices Limited - -usb:v1915* - ID_VENDOR_FROM_DATABASE=Nordic Semiconductor ASA - -usb:v1915p2233* - ID_PRODUCT_FROM_DATABASE=Linksys WUSB11 v2.8 802.11b Adapter [Atmel AT76C505] - -usb:v1915p2234* - ID_PRODUCT_FROM_DATABASE=Linksys WUSB54G v1 OEM 802.11g Adapter [Intersil ISL3886] - -usb:v1915p2235* - ID_PRODUCT_FROM_DATABASE=Linksys WUSB54GP v1 OEM 802.11g Adapter [Intersil ISL3886] - -usb:v1915p2236* - ID_PRODUCT_FROM_DATABASE=Linksys WUSB11 v3.0 802.11b Adapter [Intersil PRISM 3] - -usb:v1926* - ID_VENDOR_FROM_DATABASE=NextWindow - -usb:v1926p0003* - ID_PRODUCT_FROM_DATABASE=1900 HID Touchscreen - -usb:v1926p0006* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0064* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0065* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0066* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0067* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0068* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0069* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0071* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0072* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0073* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0074* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0075* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0076* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0077* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0078* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0079* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p007A* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p007E* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p007F* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0080* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0081* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0082* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0083* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0084* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0085* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0086* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v1926p0087* - ID_PRODUCT_FROM_DATABASE=1950 HID Touchscreen - -usb:v192F* - ID_VENDOR_FROM_DATABASE=Avago Technologies, Pte. - -usb:v192Fp0000* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v192Fp0416* - ID_PRODUCT_FROM_DATABASE=ADNS-5700 Optical Mouse Controller (3-button) - -usb:v192Fp0616* - ID_PRODUCT_FROM_DATABASE=ADNS-5700 Optical Mouse Controller (5-button) - -usb:v1930* - ID_VENDOR_FROM_DATABASE=Shenzhen Xianhe Technology Co., Ltd. - -usb:v1931* - ID_VENDOR_FROM_DATABASE=Ningbo Broad Telecommunication Co., Ltd. - -usb:v1934* - ID_VENDOR_FROM_DATABASE=Feature Integration Technology Inc. (Fintek) - -usb:v1934p0602* - ID_PRODUCT_FROM_DATABASE=F71610 or F71612 Consumer Infrared Receiver/Transceiver - -usb:v1934p0702* - ID_PRODUCT_FROM_DATABASE=Integrated Consumer Infrared Receiver/Transceiver - -usb:v1934p5168* - ID_PRODUCT_FROM_DATABASE=F71610A or F71612A Consumer Infrared Receiver/Transceiver - -usb:v1941* - ID_VENDOR_FROM_DATABASE=Dream Link - -usb:v1941p8021* - ID_PRODUCT_FROM_DATABASE=WH1080 Weather Station / USB Missile Launcher - -usb:v1943* - ID_VENDOR_FROM_DATABASE=Sensoray Co., Inc. - -usb:v1943p2250* - ID_PRODUCT_FROM_DATABASE=Model 2250 MPEG and JPEG Capture Card - -usb:v1943p2253* - ID_PRODUCT_FROM_DATABASE=Model 2253 Audio/Video Codec Card - -usb:v1943p2255* - ID_PRODUCT_FROM_DATABASE=Model 2255 4 Channel Capture Card - -usb:v1943p2257* - ID_PRODUCT_FROM_DATABASE=Model 2257 4 Channel Capture Card - -usb:v1943pA250* - ID_PRODUCT_FROM_DATABASE=Model 2250 MPEG and JPEG Capture Card (cold) - -usb:v1943pA253* - ID_PRODUCT_FROM_DATABASE=Model 2253 Audio/Video Codec Card (cold) - -usb:v1949* - ID_VENDOR_FROM_DATABASE=Lab126, Inc. - -usb:v1949p0002* - ID_PRODUCT_FROM_DATABASE=Amazon Kindle - -usb:v1949p0004* - ID_PRODUCT_FROM_DATABASE=Amazon Kindle 3/4/Paperwhite - -usb:v1949p0006* - ID_PRODUCT_FROM_DATABASE=Kindle Fire - -usb:v1949p0008* - ID_PRODUCT_FROM_DATABASE=Amazon Kindle Fire HD 8.9" - -usb:v194F* - ID_VENDOR_FROM_DATABASE=PreSonus Audio Electronics, Inc. - -usb:v194Fp0101* - ID_PRODUCT_FROM_DATABASE=AudioBox 22 VSL - -usb:v194Fp0102* - ID_PRODUCT_FROM_DATABASE=AudioBox 44 VSL - -usb:v194Fp0103* - ID_PRODUCT_FROM_DATABASE=AudioBox 1818 VSL - -usb:v194Fp0301* - ID_PRODUCT_FROM_DATABASE=AudioBox - -usb:v1951* - ID_VENDOR_FROM_DATABASE=Hyperstone AG - -usb:v1953* - ID_VENDOR_FROM_DATABASE=Ironkey Inc. - -usb:v1954* - ID_VENDOR_FROM_DATABASE=Radiient Technologies - -usb:v195D* - ID_VENDOR_FROM_DATABASE=Itron Technology iONE - -usb:v195Dp7002* - ID_PRODUCT_FROM_DATABASE=Libra-Q11 IR remote - -usb:v195Dp7006* - ID_PRODUCT_FROM_DATABASE=Libra-Q26 / 1.0 Remote - -usb:v195Dp7777* - ID_PRODUCT_FROM_DATABASE=Scorpius wireless keyboard - -usb:v195Dp7779* - ID_PRODUCT_FROM_DATABASE=Scorpius-P20MT - -usb:v1965* - ID_VENDOR_FROM_DATABASE=Uniden Corporation - -usb:v1965p0016* - ID_PRODUCT_FROM_DATABASE=HomePatrol-1 - -usb:v1967* - ID_VENDOR_FROM_DATABASE=CASIO HITACHI Mobile Communications Co., Ltd. - -usb:v196B* - ID_VENDOR_FROM_DATABASE=Wispro Technology Inc. - -usb:v1970* - ID_VENDOR_FROM_DATABASE=Dane-Elec Corp. USA - -usb:v1970p0000* - ID_PRODUCT_FROM_DATABASE=Z Mate 16GB - -usb:v1975* - ID_VENDOR_FROM_DATABASE=Dongguan Guneetal Wire & Cable Co., Ltd. - -usb:v1976* - ID_VENDOR_FROM_DATABASE=Chipsbrand Microelectronics (HK) Co., Ltd. - -usb:v1976p6025* - ID_PRODUCT_FROM_DATABASE=Flash Drive 512 MB - -usb:v1977* - ID_VENDOR_FROM_DATABASE=T-Logic - -usb:v1977p0111* - ID_PRODUCT_FROM_DATABASE=TL203 MP3 Player and Voice Recorder - -usb:v197D* - ID_VENDOR_FROM_DATABASE=Leuze electronic - -usb:v197Dp0222* - ID_PRODUCT_FROM_DATABASE=BCL 508i - -usb:v1989* - ID_VENDOR_FROM_DATABASE=Nuconn Technology Corp. - -usb:v198F* - ID_VENDOR_FROM_DATABASE=Beceem Communications Inc. - -usb:v198Fp0210* - ID_PRODUCT_FROM_DATABASE=BCS200 WiMAX Adapter - -usb:v198Fp0220* - ID_PRODUCT_FROM_DATABASE=BCSM250 WiMAX Adapter - -usb:v1990* - ID_VENDOR_FROM_DATABASE=Acron Precision Industrial Co., Ltd. - -usb:v1995* - ID_VENDOR_FROM_DATABASE=Trillium Technology Pty. Ltd. - -usb:v1995p3202* - ID_PRODUCT_FROM_DATABASE=REC-ADPT-USB (recorder) - -usb:v1995p3203* - ID_PRODUCT_FROM_DATABASE=REC-A-ADPT-USB (recorder) - -usb:v199B* - ID_VENDOR_FROM_DATABASE=MicroStrain, Inc. - -usb:v199Bp3065* - ID_PRODUCT_FROM_DATABASE=3DM-GX3-25 Orientation Sensor - -usb:v199E* - ID_VENDOR_FROM_DATABASE=The Imaging Source Europe GmbH - -usb:v199Ep8101* - ID_PRODUCT_FROM_DATABASE=DFx 21BU04 Camera - -usb:v199F* - ID_VENDOR_FROM_DATABASE=Benica Corporation - -usb:v19A8* - ID_VENDOR_FROM_DATABASE=Biforst Technology Inc. - -usb:v19AB* - ID_VENDOR_FROM_DATABASE=Bodelin - -usb:v19ABp1000* - ID_PRODUCT_FROM_DATABASE=ProScope HR - -usb:v19AF* - ID_VENDOR_FROM_DATABASE=S Life - -usb:v19AFp6611* - ID_PRODUCT_FROM_DATABASE=Celestia VoIP Phone - -usb:v19B2* - ID_VENDOR_FROM_DATABASE=Batronix - -usb:v19B2p0010* - ID_PRODUCT_FROM_DATABASE=BX32 Batupo - -usb:v19B2p0011* - ID_PRODUCT_FROM_DATABASE=BX32P Barlino - -usb:v19B2p0012* - ID_PRODUCT_FROM_DATABASE=BX40 Bagero - -usb:v19B2p0013* - ID_PRODUCT_FROM_DATABASE=BX48 Batego - -usb:v19B4* - ID_VENDOR_FROM_DATABASE=Celestron - -usb:v19B4p0002* - ID_PRODUCT_FROM_DATABASE=SkyScout Personal Planetarium - -usb:v19B4p0101* - ID_PRODUCT_FROM_DATABASE=Handheld Digital Microscope 44302 - -usb:v19B5* - ID_VENDOR_FROM_DATABASE=B & W Group - -usb:v19B6* - ID_VENDOR_FROM_DATABASE=Infotech Logistic, LLC - -usb:v19B9* - ID_VENDOR_FROM_DATABASE=Data Robotics - -usb:v19B9p8D20* - ID_PRODUCT_FROM_DATABASE=Drobo Elite - -usb:v19C2* - ID_VENDOR_FROM_DATABASE=Futuba - -usb:v19C2p6A11* - ID_PRODUCT_FROM_DATABASE=MDM166A Fluorescent Display - -usb:v19CA* - ID_VENDOR_FROM_DATABASE=Mindtribe - -usb:v19CAp0001* - ID_PRODUCT_FROM_DATABASE=Sandio 3D HID Mouse - -usb:v19CF* - ID_VENDOR_FROM_DATABASE=Parrot SA - -usb:v19D2* - ID_VENDOR_FROM_DATABASE=ZTE WCDMA Technologies MSM - -usb:v19D2p0001* - ID_PRODUCT_FROM_DATABASE=CDMA Wireless Modem - -usb:v19D2p0002* - ID_PRODUCT_FROM_DATABASE=MF632/ONDA ET502HS/MT505UP - -usb:v19D2p0007* - ID_PRODUCT_FROM_DATABASE=TU25 WiMAX Adapter [Beceem BCS200] - -usb:v19D2p0031* - ID_PRODUCT_FROM_DATABASE=MF110/MF627/MF636 - -usb:v19D2p0063* - ID_PRODUCT_FROM_DATABASE=K3565-Z HSDPA - -usb:v19D2p0064* - ID_PRODUCT_FROM_DATABASE=MF627 AU - -usb:v19D2p0083* - ID_PRODUCT_FROM_DATABASE=MF190 - -usb:v19D2p0103* - ID_PRODUCT_FROM_DATABASE=MF112 - -usb:v19D2p0104* - ID_PRODUCT_FROM_DATABASE=K4505-Z - -usb:v19D2p0146* - ID_PRODUCT_FROM_DATABASE=MF 195E (HSPA+ Modem) - -usb:v19D2p0167* - ID_PRODUCT_FROM_DATABASE=MF820 4G LTE - -usb:v19D2p0172* - ID_PRODUCT_FROM_DATABASE=AX226 WIMAX MODEM (After Modeswitch) - -usb:v19D2p0325* - ID_PRODUCT_FROM_DATABASE=LTE4G O2 ZTE MF821D LTE/UMTS/GSM Modem/Networkcard - -usb:v19D2p0326* - ID_PRODUCT_FROM_DATABASE=LTE4G O2 ZTE MF821D LTE/UMTS/GSM Modem/Networkcard - -usb:v19D2p1008* - ID_PRODUCT_FROM_DATABASE=K3570-Z - -usb:v19D2p1010* - ID_PRODUCT_FROM_DATABASE=K3571-Z - -usb:v19D2p1017* - ID_PRODUCT_FROM_DATABASE=K5006-Z vodafone LTE/UMTS/GSM Modem/Networkcard - -usb:v19D2p1018* - ID_PRODUCT_FROM_DATABASE=K5006-Z vodafone LTE/UMTS/GSM Modem/Networkcard - -usb:v19D2p1203* - ID_PRODUCT_FROM_DATABASE=MF691 [ T-Mobile webConnect Rocket 2.0] - -usb:v19D2p1217* - ID_PRODUCT_FROM_DATABASE=MF652 - -usb:v19D2p1218* - ID_PRODUCT_FROM_DATABASE=MF652 - -usb:v19D2p2000* - ID_PRODUCT_FROM_DATABASE=MF627/MF628/MF628+/MF636+ HSDPA/HSUPA - -usb:v19D2pFFF2* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem (QDL mode) - -usb:v19D2pFFF3* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem - -usb:v19E1* - ID_VENDOR_FROM_DATABASE=WeiDuan Electronic Accessory (S.Z.) Co., Ltd. - -usb:v19E8* - ID_VENDOR_FROM_DATABASE=Industrial Technology Research Institute - -usb:v19EF* - ID_VENDOR_FROM_DATABASE=Pak Heng Technology (Shenzhen) Co., Ltd. - -usb:v19F7* - ID_VENDOR_FROM_DATABASE=RODE Microphones - -usb:v19F7p0001* - ID_PRODUCT_FROM_DATABASE=Podcaster - -usb:v19FA* - ID_VENDOR_FROM_DATABASE=Gampaq Co.Ltd - -usb:v19FAp0703* - ID_PRODUCT_FROM_DATABASE=Steering Wheel - -usb:v19FF* - ID_VENDOR_FROM_DATABASE=Dynex - -usb:v19FFp0102* - ID_PRODUCT_FROM_DATABASE=1.3MP Webcam - -usb:v19FFp0201* - ID_PRODUCT_FROM_DATABASE=Rocketfish Wireless 2.4G Laser Mouse - -usb:v1A08* - ID_VENDOR_FROM_DATABASE=Bellwood International, Inc. - -usb:v1A0A* - ID_VENDOR_FROM_DATABASE=USB-IF non-workshop - -usb:v1A0ApBADD* - ID_PRODUCT_FROM_DATABASE=USB OTG Compliance test device - -usb:v1A12* - ID_VENDOR_FROM_DATABASE=KES Co., Ltd. - -usb:v1A1D* - ID_VENDOR_FROM_DATABASE=Veho - -usb:v1A1Dp0407* - ID_PRODUCT_FROM_DATABASE=Mimi WiFi speakers - -usb:v1A25* - ID_VENDOR_FROM_DATABASE=Amphenol East Asia Ltd. - -usb:v1A2A* - ID_VENDOR_FROM_DATABASE=Seagate Branded Solutions - -usb:v1A2C* - ID_VENDOR_FROM_DATABASE=China Resource Semico Co., Ltd - -usb:v1A2Cp0021* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v1A2Cp0024* - ID_PRODUCT_FROM_DATABASE=Multimedia Keyboard - -usb:v1A32* - ID_VENDOR_FROM_DATABASE=Quanta Microsystems, Inc. - -usb:v1A32p0304* - ID_PRODUCT_FROM_DATABASE=802.11n Wireless LAN Card - -usb:v1A34* - ID_VENDOR_FROM_DATABASE=ACRUX - -usb:v1A34p0802* - ID_PRODUCT_FROM_DATABASE=Gamepad - -usb:v1A36* - ID_VENDOR_FROM_DATABASE=Biwin Technology Ltd. - -usb:v1A40* - ID_VENDOR_FROM_DATABASE=Terminus Technology Inc. - -usb:v1A40p0101* - ID_PRODUCT_FROM_DATABASE=4-Port HUB - -usb:v1A40p0201* - ID_PRODUCT_FROM_DATABASE=FE 2.1 7-port Hub - -usb:v1A41* - ID_VENDOR_FROM_DATABASE=Action Electronics Co., Ltd. - -usb:v1A44* - ID_VENDOR_FROM_DATABASE=VASCO Data Security International - -usb:v1A44p0001* - ID_PRODUCT_FROM_DATABASE=Digipass 905 SmartCard Reader - -usb:v1A4A* - ID_VENDOR_FROM_DATABASE=Silicon Image - -usb:v1A4B* - ID_VENDOR_FROM_DATABASE=SafeBoot International B.V. - -usb:v1A5A* - ID_VENDOR_FROM_DATABASE=Tandberg Data - -usb:v1A61* - ID_VENDOR_FROM_DATABASE=Abbott Diabetes Care - -usb:v1A61p3410* - ID_PRODUCT_FROM_DATABASE=CoPilot System Cable - -usb:v1A6A* - ID_VENDOR_FROM_DATABASE=Spansion Inc. - -usb:v1A6D* - ID_VENDOR_FROM_DATABASE=SamYoung Electronics Co., Ltd - -usb:v1A6E* - ID_VENDOR_FROM_DATABASE=Global Unichip Corp. - -usb:v1A6F* - ID_VENDOR_FROM_DATABASE=Sagem Orga GmbH - -usb:v1A72* - ID_VENDOR_FROM_DATABASE=Physik Instrumente - -usb:v1A72p1008* - ID_PRODUCT_FROM_DATABASE=E-861 PiezoWalk NEXACT Controller - -usb:v1A79* - ID_VENDOR_FROM_DATABASE=Bayer Health Care LLC - -usb:v1A7B* - ID_VENDOR_FROM_DATABASE=Lumberg Connect GmbH & Co. KG - -usb:v1A7C* - ID_VENDOR_FROM_DATABASE=Evoluent - -usb:v1A7Cp0068* - ID_PRODUCT_FROM_DATABASE=VerticalMouse 3 - -usb:v1A7Cp0168* - ID_PRODUCT_FROM_DATABASE=VerticalMouse 3 Wireless - -usb:v1A7Cp0191* - ID_PRODUCT_FROM_DATABASE=VerticalMouse 4 - -usb:v1A81* - ID_VENDOR_FROM_DATABASE=Holtek Semiconductor, Inc. - -usb:v1A81p2203* - ID_PRODUCT_FROM_DATABASE=Laser Gaming mouse - -usb:v1A81p2204* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v1A81p2205* - ID_PRODUCT_FROM_DATABASE=Laser Mouse - -usb:v1A86* - ID_VENDOR_FROM_DATABASE=QinHeng Electronics - -usb:v1A86p5512* - ID_PRODUCT_FROM_DATABASE=CH341 in EPP/MEM/I2C mode, EPP/I2C adapter - -usb:v1A86p5523* - ID_PRODUCT_FROM_DATABASE=CH341 in serial mode, usb to serial port converter - -usb:v1A86p5584* - ID_PRODUCT_FROM_DATABASE=CH341 in parallel mode, usb to printer port converter - -usb:v1A86p7523* - ID_PRODUCT_FROM_DATABASE=HL-340 USB-Serial adapter - -usb:v1A86p752D* - ID_PRODUCT_FROM_DATABASE=CH345 MIDI adapter - -usb:v1A86p7584* - ID_PRODUCT_FROM_DATABASE=CH340S - -usb:v1A86pE008* - ID_PRODUCT_FROM_DATABASE=HID-based serial adapater - -usb:v1A89* - ID_VENDOR_FROM_DATABASE=Dynalith Systems Co., Ltd. - -usb:v1A8B* - ID_VENDOR_FROM_DATABASE=SGS Taiwan Ltd. - -usb:v1A8D* - ID_VENDOR_FROM_DATABASE=BandRich, Inc. - -usb:v1A8Dp1002* - ID_PRODUCT_FROM_DATABASE=BandLuxe 3.5G HSDPA Adapter - -usb:v1A8Dp1009* - ID_PRODUCT_FROM_DATABASE=BandLuxe 3.5G HSPA Adapter - -usb:v1A8Dp100D* - ID_PRODUCT_FROM_DATABASE=4G LTE adapter - -usb:v1A98* - ID_VENDOR_FROM_DATABASE=Leica Camera AG - -usb:v1AA4* - ID_VENDOR_FROM_DATABASE=Data Drive Thru, Inc. - -usb:v1AA5* - ID_VENDOR_FROM_DATABASE=UBeacon Technologies, Inc. - -usb:v1AA6* - ID_VENDOR_FROM_DATABASE=eFortune Technology Corp. - -usb:v1AAD* - ID_VENDOR_FROM_DATABASE=KeeTouch - -usb:v1AADp0001* - ID_PRODUCT_FROM_DATABASE=Touchscreen - -usb:v1AB1* - ID_VENDOR_FROM_DATABASE=Rigol Technologies - -usb:v1AB1p0588* - ID_PRODUCT_FROM_DATABASE=DS1000 SERIES - -usb:v1ACB* - ID_VENDOR_FROM_DATABASE=Salcomp Plc - -usb:v1AD1* - ID_VENDOR_FROM_DATABASE=Desay Wire Co., Ltd. - -usb:v1AD4* - ID_VENDOR_FROM_DATABASE=APS - -usb:v1AD4p0002* - ID_PRODUCT_FROM_DATABASE=KM290-HRS - -usb:v1ADB* - ID_VENDOR_FROM_DATABASE=SEL C662 Serial Cable - -usb:v1AE4* - ID_VENDOR_FROM_DATABASE=ic-design Reinhard Gottinger GmbH - -usb:v1AE7* - ID_VENDOR_FROM_DATABASE=X-TENSIONS - -usb:v1AE7p0381* - ID_PRODUCT_FROM_DATABASE=VS-DVB-T 380U (af9015 based) - -usb:v1AE7p2001* - ID_PRODUCT_FROM_DATABASE=SpeedLink Snappy Mic webcam (SL-6825-SBK) - -usb:v1AE7p9003* - ID_PRODUCT_FROM_DATABASE=SpeedLink Vicious And Devine Laplace webcam, white (VD-1504-SWT) - -usb:v1AE7p9004* - ID_PRODUCT_FROM_DATABASE=SpeedLink Vicious And Devine Laplace webcam, black (VD-1504-SBK) - -usb:v1AED* - ID_VENDOR_FROM_DATABASE=High Top Precision Electronic Co., Ltd. - -usb:v1AEF* - ID_VENDOR_FROM_DATABASE=Conntech Electronic (Suzhou) Corporation - -usb:v1AF1* - ID_VENDOR_FROM_DATABASE=Connect One Ltd. - -usb:v1AFE* - ID_VENDOR_FROM_DATABASE=A. Eberle GmbH & Co. KG - -usb:v1AFEp0001* - ID_PRODUCT_FROM_DATABASE=PQ Box 100 - -usb:v1B04* - ID_VENDOR_FROM_DATABASE=Meilhaus Electronic GmbH - -usb:v1B04p0630* - ID_PRODUCT_FROM_DATABASE=ME-630 - -usb:v1B04p0940* - ID_PRODUCT_FROM_DATABASE=ME-94 - -usb:v1B04p0950* - ID_PRODUCT_FROM_DATABASE=ME-95 - -usb:v1B04p0960* - ID_PRODUCT_FROM_DATABASE=ME-96 - -usb:v1B04p1000* - ID_PRODUCT_FROM_DATABASE=ME-1000 - -usb:v1B04p100A* - ID_PRODUCT_FROM_DATABASE=ME-1000 - -usb:v1B04p100B* - ID_PRODUCT_FROM_DATABASE=ME-1000 - -usb:v1B04p1400* - ID_PRODUCT_FROM_DATABASE=ME-1400 - -usb:v1B04p140A* - ID_PRODUCT_FROM_DATABASE=ME-1400A - -usb:v1B04p140B* - ID_PRODUCT_FROM_DATABASE=ME-1400B - -usb:v1B04p140C* - ID_PRODUCT_FROM_DATABASE=ME-1400C - -usb:v1B04p140D* - ID_PRODUCT_FROM_DATABASE=ME-1400D - -usb:v1B04p140E* - ID_PRODUCT_FROM_DATABASE=ME-1400E - -usb:v1B04p14EA* - ID_PRODUCT_FROM_DATABASE=ME-1400EA - -usb:v1B04p14EB* - ID_PRODUCT_FROM_DATABASE=ME-1400EB - -usb:v1B04p1604* - ID_PRODUCT_FROM_DATABASE=ME-1600/4U - -usb:v1B04p1608* - ID_PRODUCT_FROM_DATABASE=ME-1600/8U - -usb:v1B04p160C* - ID_PRODUCT_FROM_DATABASE=ME-1600/12U - -usb:v1B04p160F* - ID_PRODUCT_FROM_DATABASE=ME-1600/16U - -usb:v1B04p168F* - ID_PRODUCT_FROM_DATABASE=ME-1600/16U8I - -usb:v1B04p4610* - ID_PRODUCT_FROM_DATABASE=ME-4610 - -usb:v1B04p4650* - ID_PRODUCT_FROM_DATABASE=ME-4650 - -usb:v1B04p4660* - ID_PRODUCT_FROM_DATABASE=ME-4660 - -usb:v1B04p4661* - ID_PRODUCT_FROM_DATABASE=ME-4660I - -usb:v1B04p4662* - ID_PRODUCT_FROM_DATABASE=ME-4660 - -usb:v1B04p4663* - ID_PRODUCT_FROM_DATABASE=ME-4660I - -usb:v1B04p4670* - ID_PRODUCT_FROM_DATABASE=ME-4670 - -usb:v1B04p4671* - ID_PRODUCT_FROM_DATABASE=ME-4670I - -usb:v1B04p4672* - ID_PRODUCT_FROM_DATABASE=ME-4670S - -usb:v1B04p4673* - ID_PRODUCT_FROM_DATABASE=ME-4670IS - -usb:v1B04p4680* - ID_PRODUCT_FROM_DATABASE=ME-4680 - -usb:v1B04p4681* - ID_PRODUCT_FROM_DATABASE=ME-4680I - -usb:v1B04p4682* - ID_PRODUCT_FROM_DATABASE=ME-4680S - -usb:v1B04p4683* - ID_PRODUCT_FROM_DATABASE=ME-4680IS - -usb:v1B04p6004* - ID_PRODUCT_FROM_DATABASE=ME-6000/4 - -usb:v1B04p6008* - ID_PRODUCT_FROM_DATABASE=ME-6000/8 - -usb:v1B04p600F* - ID_PRODUCT_FROM_DATABASE=ME-6000/16 - -usb:v1B04p6014* - ID_PRODUCT_FROM_DATABASE=ME-6000I/4 - -usb:v1B04p6018* - ID_PRODUCT_FROM_DATABASE=ME-6000I/8 - -usb:v1B04p601F* - ID_PRODUCT_FROM_DATABASE=ME-6000I/16 - -usb:v1B04p6034* - ID_PRODUCT_FROM_DATABASE=ME-6000ISLE/4 - -usb:v1B04p6038* - ID_PRODUCT_FROM_DATABASE=ME-6000ISLE/8 - -usb:v1B04p603F* - ID_PRODUCT_FROM_DATABASE=ME-6000ISLE/16 - -usb:v1B04p6044* - ID_PRODUCT_FROM_DATABASE=ME-6000/4/DIO - -usb:v1B04p6048* - ID_PRODUCT_FROM_DATABASE=ME-6000/8/DIO - -usb:v1B04p604F* - ID_PRODUCT_FROM_DATABASE=ME-6000/16/DIO - -usb:v1B04p6054* - ID_PRODUCT_FROM_DATABASE=ME-6000I/4/DIO - -usb:v1B04p6058* - ID_PRODUCT_FROM_DATABASE=ME-6000I/8/DIO - -usb:v1B04p605F* - ID_PRODUCT_FROM_DATABASE=ME-6000I/16/DIO - -usb:v1B04p6074* - ID_PRODUCT_FROM_DATABASE=ME-6000ISLE/4/DIO - -usb:v1B04p6078* - ID_PRODUCT_FROM_DATABASE=ME-6000ISLE/8/DIO - -usb:v1B04p607F* - ID_PRODUCT_FROM_DATABASE=ME-6000ISLE/16/DIO - -usb:v1B04p6104* - ID_PRODUCT_FROM_DATABASE=ME-6100/4 - -usb:v1B04p6108* - ID_PRODUCT_FROM_DATABASE=ME-6100/8 - -usb:v1B04p610F* - ID_PRODUCT_FROM_DATABASE=ME-6100/16 - -usb:v1B04p6114* - ID_PRODUCT_FROM_DATABASE=ME-6100I/4 - -usb:v1B04p6118* - ID_PRODUCT_FROM_DATABASE=ME-6100I/8 - -usb:v1B04p611F* - ID_PRODUCT_FROM_DATABASE=ME-6100I/16 - -usb:v1B04p6134* - ID_PRODUCT_FROM_DATABASE=ME-6100ISLE/4 - -usb:v1B04p6138* - ID_PRODUCT_FROM_DATABASE=ME-6100ISLE/8 - -usb:v1B04p613F* - ID_PRODUCT_FROM_DATABASE=ME-6100ISLE/16 - -usb:v1B04p6144* - ID_PRODUCT_FROM_DATABASE=ME-6100/4/DIO - -usb:v1B04p6148* - ID_PRODUCT_FROM_DATABASE=ME-6100/8/DIO - -usb:v1B04p614F* - ID_PRODUCT_FROM_DATABASE=ME-6100/16/DIO - -usb:v1B04p6154* - ID_PRODUCT_FROM_DATABASE=ME-6100I/4/DIO - -usb:v1B04p6158* - ID_PRODUCT_FROM_DATABASE=ME-6100I/8/DIO - -usb:v1B04p615F* - ID_PRODUCT_FROM_DATABASE=ME-6100I/16/DIO - -usb:v1B04p6174* - ID_PRODUCT_FROM_DATABASE=ME-6100ISLE/4/DIO - -usb:v1B04p6178* - ID_PRODUCT_FROM_DATABASE=ME-6100ISLE/8/DIO - -usb:v1B04p617F* - ID_PRODUCT_FROM_DATABASE=ME-6100ISLE/16/DIO - -usb:v1B04p6259* - ID_PRODUCT_FROM_DATABASE=ME-6200I/9/DIO - -usb:v1B04p6359* - ID_PRODUCT_FROM_DATABASE=ME-6300I/9/DIO - -usb:v1B04p810A* - ID_PRODUCT_FROM_DATABASE=ME-8100A - -usb:v1B04p810B* - ID_PRODUCT_FROM_DATABASE=ME-8100B - -usb:v1B04p820A* - ID_PRODUCT_FROM_DATABASE=ME-8200A - -usb:v1B04p820B* - ID_PRODUCT_FROM_DATABASE=ME-8200B - -usb:v1B0E* - ID_VENDOR_FROM_DATABASE=BLUTRONICS S.r.l. - -usb:v1B0Ep1078* - ID_PRODUCT_FROM_DATABASE=BLUDRIVE II CCID - -usb:v1B0Ep1079* - ID_PRODUCT_FROM_DATABASE=BLUDRIVE II CCID - -usb:v1B0Ep1080* - ID_PRODUCT_FROM_DATABASE=WRITECHIP II CCID - -usb:v1B1C* - ID_VENDOR_FROM_DATABASE=Corsair - -usb:v1B1Cp0890* - ID_PRODUCT_FROM_DATABASE=Flash Padlock - -usb:v1B1Cp0A00* - ID_PRODUCT_FROM_DATABASE=SP2500 Speakers - -usb:v1B1Cp0A60* - ID_PRODUCT_FROM_DATABASE=Vengeance K60 Keyboard - -usb:v1B1Cp1A01* - ID_PRODUCT_FROM_DATABASE=Flash Voyager GT - -usb:v1B1Cp1A0A* - ID_PRODUCT_FROM_DATABASE=Survivor Stealth Flash Drive - -usb:v1B1Cp1A90* - ID_PRODUCT_FROM_DATABASE=Flash Voyager GT - -usb:v1B20* - ID_VENDOR_FROM_DATABASE=MStar Semiconductor, Inc. - -usb:v1B22* - ID_VENDOR_FROM_DATABASE=WiLinx Corp. - -usb:v1B26* - ID_VENDOR_FROM_DATABASE=Cellex Power Products, Inc. - -usb:v1B27* - ID_VENDOR_FROM_DATABASE=Current Electronics Inc. - -usb:v1B28* - ID_VENDOR_FROM_DATABASE=NAVIsis Inc. - -usb:v1B32* - ID_VENDOR_FROM_DATABASE=Ugobe Life Forms, Inc. - -usb:v1B32p0064* - ID_PRODUCT_FROM_DATABASE=Pleo robotic dinosaur - -usb:v1B36* - ID_VENDOR_FROM_DATABASE=ViXS Systems, Inc. - -usb:v1B3B* - ID_VENDOR_FROM_DATABASE=iPassion Technology Inc. - -usb:v1B3Bp2933* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2935* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2936* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2937* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2938* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2939* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2950* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2951* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2952* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2953* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2955* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2956* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2957* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2958* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2959* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2960* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2961* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2962* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2963* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2965* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2966* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2967* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2968* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3Bp2969* - ID_PRODUCT_FROM_DATABASE=PC Camera/Webcam controller - -usb:v1B3F* - ID_VENDOR_FROM_DATABASE=Generalplus Technology Inc. - -usb:v1B3Fp0C52* - ID_PRODUCT_FROM_DATABASE=808 Camera #9 (mass storage mode) - -usb:v1B3Fp2002* - ID_PRODUCT_FROM_DATABASE=808 Camera #9 (web-cam mode) - -usb:v1B47* - ID_VENDOR_FROM_DATABASE=Energizer Holdings, Inc. - -usb:v1B47p0001* - ID_PRODUCT_FROM_DATABASE=CHUSB Duo Charger (NiMH AA/AAA USB smart charger) - -usb:v1B48* - ID_VENDOR_FROM_DATABASE=Plastron Precision Co., Ltd. - -usb:v1B59* - ID_VENDOR_FROM_DATABASE=K.S. Terminals Inc. - -usb:v1B5A* - ID_VENDOR_FROM_DATABASE=Chao Zhou Kai Yuan Electric Co., Ltd. - -usb:v1B65* - ID_VENDOR_FROM_DATABASE=The Hong Kong Standards and Testing Centre Ltd. - -usb:v1B72* - ID_VENDOR_FROM_DATABASE=ATERGI TECHNOLOGY CO., LTD. - -usb:v1B73* - ID_VENDOR_FROM_DATABASE=Fresco Logic - -usb:v1B73p1000* - ID_PRODUCT_FROM_DATABASE=xHC1 Controller - -usb:v1B75* - ID_VENDOR_FROM_DATABASE=Ovislink Corp. - -usb:v1B75p3072* - ID_PRODUCT_FROM_DATABASE=AirLive WN-360USB adapter - -usb:v1B75p8171* - ID_PRODUCT_FROM_DATABASE=WN-370USB 802.11bgn Wireless Adapter [Realtek RTL8188SU] - -usb:v1B75p8187* - ID_PRODUCT_FROM_DATABASE=AirLive WL-1600USB 802.11g Adapter [Realtek RTL8187L] - -usb:v1B75p9170* - ID_PRODUCT_FROM_DATABASE=AirLive X.USB 802.11abgn [Atheros AR9170+AR9104] - -usb:v1B75pA200* - ID_PRODUCT_FROM_DATABASE=AirLive WN-200USB wireless 11b/g/n dongle - -usb:v1B76* - ID_VENDOR_FROM_DATABASE=Legend Silicon Corp. - -usb:v1B80* - ID_VENDOR_FROM_DATABASE=Afatech - -usb:v1B80pC810* - ID_PRODUCT_FROM_DATABASE=MC810 [af9015] - -usb:v1B80pD393* - ID_PRODUCT_FROM_DATABASE=DVB-T receiver [RTL2832U] - -usb:v1B80pD396* - ID_PRODUCT_FROM_DATABASE=UB396-T [RTL2832U] - -usb:v1B80pD397* - ID_PRODUCT_FROM_DATABASE=DVB-T receiver [RTL2832U] - -usb:v1B80pD398* - ID_PRODUCT_FROM_DATABASE=DVB-T receiver [RTL2832U] - -usb:v1B80pD700* - ID_PRODUCT_FROM_DATABASE=FM Radio SnapMusic Mobile 700 (FM700) - -usb:v1B80pE297* - ID_PRODUCT_FROM_DATABASE=Conceptronic DVB-T CTVDIGRCU V3.0 - -usb:v1B80pE383* - ID_PRODUCT_FROM_DATABASE=DVB-T UB383-T [af9015] - -usb:v1B80pE385* - ID_PRODUCT_FROM_DATABASE=DVB-T UB385-T [af9015] - -usb:v1B80pE386* - ID_PRODUCT_FROM_DATABASE=DVB-T UB385-T [af9015] - -usb:v1B80pE399* - ID_PRODUCT_FROM_DATABASE=DVB-T KWorld PlusTV 399U [af9015] - -usb:v1B80pE39A* - ID_PRODUCT_FROM_DATABASE=DVB-T395U [af9015] - -usb:v1B80pE39B* - ID_PRODUCT_FROM_DATABASE=DVB-T395U [af9015] - -usb:v1B80pE401* - ID_PRODUCT_FROM_DATABASE=Sveon STV22 DVB-T [af9015] - -usb:v1B80pE409* - ID_PRODUCT_FROM_DATABASE=IT9137FN Dual DVB-T [KWorld UB499-2T] - -usb:v1B86* - ID_VENDOR_FROM_DATABASE=Dongguan Guanshang Electronics Co., Ltd. - -usb:v1B88* - ID_VENDOR_FROM_DATABASE=ShenMing Electron (Dong Guan) Co., Ltd. - -usb:v1B8C* - ID_VENDOR_FROM_DATABASE=Altium Limited - -usb:v1B8D* - ID_VENDOR_FROM_DATABASE=e-MOVE Technology Co., Ltd. - -usb:v1B8E* - ID_VENDOR_FROM_DATABASE=Amlogic, Inc. - -usb:v1B8F* - ID_VENDOR_FROM_DATABASE=MA LABS, Inc. - -usb:v1B96* - ID_VENDOR_FROM_DATABASE=N-Trig - -usb:v1B96p0001* - ID_PRODUCT_FROM_DATABASE=Duosense Transparent Electromagnetic Digitizer - -usb:v1B98* - ID_VENDOR_FROM_DATABASE=YMax Communications Corp. - -usb:v1B99* - ID_VENDOR_FROM_DATABASE=Shenzhen Yuanchuan Electronic - -usb:v1BA1* - ID_VENDOR_FROM_DATABASE=JINQ CHERN ENTERPRISE CO., LTD. - -usb:v1BA2* - ID_VENDOR_FROM_DATABASE=Lite Metals & Plastic (Shenzhen) Co., Ltd. - -usb:v1BA4* - ID_VENDOR_FROM_DATABASE=Ember Corporation - -usb:v1BA4p0001* - ID_PRODUCT_FROM_DATABASE=InSight USB Link - -usb:v1BA6* - ID_VENDOR_FROM_DATABASE=Abilis Systems - -usb:v1BA8* - ID_VENDOR_FROM_DATABASE=China Telecommunication Technology Labs - -usb:v1BAD* - ID_VENDOR_FROM_DATABASE=Harmonix Music - -usb:v1BADp0002* - ID_PRODUCT_FROM_DATABASE=Guitar for Xbox 360 - -usb:v1BADp0003* - ID_PRODUCT_FROM_DATABASE=Drum Kit for Xbox 360 - -usb:v1BAE* - ID_VENDOR_FROM_DATABASE=Vuzix Corporation - -usb:v1BAEp0002* - ID_PRODUCT_FROM_DATABASE=VR920 Immersive Eyewear - -usb:v1BBB* - ID_VENDOR_FROM_DATABASE=T & A Mobile Phones - -usb:v1BC4* - ID_VENDOR_FROM_DATABASE=Ford Motor Co. - -usb:v1BC5* - ID_VENDOR_FROM_DATABASE=AVIXE Technology (China) Ltd. - -usb:v1BC7* - ID_VENDOR_FROM_DATABASE=Telit - -usb:v1BC7p0020* - ID_PRODUCT_FROM_DATABASE=HE863 - -usb:v1BC7p0021* - ID_PRODUCT_FROM_DATABASE=HE910 - -usb:v1BC7p1003* - ID_PRODUCT_FROM_DATABASE=UC864-E - -usb:v1BC7p1004* - ID_PRODUCT_FROM_DATABASE=UC864-G - -usb:v1BC7p1005* - ID_PRODUCT_FROM_DATABASE=CC864-DUAL - -usb:v1BC7p1006* - ID_PRODUCT_FROM_DATABASE=CC864-SINGLE - -usb:v1BC7p1010* - ID_PRODUCT_FROM_DATABASE=DE910-DUAL - -usb:v1BCE* - ID_VENDOR_FROM_DATABASE=Contac Cable Industrial Limited - -usb:v1BCF* - ID_VENDOR_FROM_DATABASE=Sunplus Innovation Technology Inc. - -usb:v1BCFp0007* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v1BCFp053A* - ID_PRODUCT_FROM_DATABASE=Targa Silvercrest OMC807-C optische Funkmaus - -usb:v1BCFp05C5* - ID_PRODUCT_FROM_DATABASE=SPRF2413A [2.4GHz Wireless Keyboard/Mouse Receiver] - -usb:v1BCFp05CF* - ID_PRODUCT_FROM_DATABASE=Micro keyboard & mouse receiver - -usb:v1BCFp0C31* - ID_PRODUCT_FROM_DATABASE=SPIF30x Serial-ATA bridge - -usb:v1BCFp2885* - ID_PRODUCT_FROM_DATABASE=ASUS Webcam - -usb:v1BCFp2888* - ID_PRODUCT_FROM_DATABASE=HP Universal Camera - -usb:v1BD0* - ID_VENDOR_FROM_DATABASE=Hangzhou Riyue Electronic Co., Ltd. - -usb:v1BD5* - ID_VENDOR_FROM_DATABASE=BG Systems, Inc. - -usb:v1BDE* - ID_VENDOR_FROM_DATABASE=P-TWO INDUSTRIES, INC. - -usb:v1BEF* - ID_VENDOR_FROM_DATABASE=Shenzhen Tongyuan Network-Communication Cables Co., Ltd - -usb:v1BF0* - ID_VENDOR_FROM_DATABASE=RealVision Inc. - -usb:v1BF5* - ID_VENDOR_FROM_DATABASE=Extranet Systems Inc. - -usb:v1BF6* - ID_VENDOR_FROM_DATABASE=Orient Semiconductor Electronics, Ltd. - -usb:v1BFD* - ID_VENDOR_FROM_DATABASE=TouchPack - -usb:v1BFDp1268* - ID_PRODUCT_FROM_DATABASE=Touch Screen - -usb:v1BFDp1368* - ID_PRODUCT_FROM_DATABASE=Touch Screen - -usb:v1BFDp1568* - ID_PRODUCT_FROM_DATABASE=Capacitive Touch Screen - -usb:v1BFDp1668* - ID_PRODUCT_FROM_DATABASE=IR Touch Screen - -usb:v1BFDp1688* - ID_PRODUCT_FROM_DATABASE=Resistive Touch Screen - -usb:v1BFDp2968* - ID_PRODUCT_FROM_DATABASE=Touch Screen - -usb:v1BFDp5968* - ID_PRODUCT_FROM_DATABASE=Touch Screen - -usb:v1BFDp6968* - ID_PRODUCT_FROM_DATABASE=Touch Screen - -usb:v1C02* - ID_VENDOR_FROM_DATABASE=Kreton Corporation - -usb:v1C04* - ID_VENDOR_FROM_DATABASE=QNAP System Inc. - -usb:v1C0C* - ID_VENDOR_FROM_DATABASE=Ionics EMS, Inc. - -usb:v1C0Cp0102* - ID_PRODUCT_FROM_DATABASE=Plug Computer - -usb:v1C0D* - ID_VENDOR_FROM_DATABASE=Relm Wireless - -usb:v1C10* - ID_VENDOR_FROM_DATABASE=Lanterra Industrial Co., Ltd. - -usb:v1C13* - ID_VENDOR_FROM_DATABASE=ALECTRONIC LIMITED - -usb:v1C1A* - ID_VENDOR_FROM_DATABASE=Datel Electronics Ltd. - -usb:v1C1B* - ID_VENDOR_FROM_DATABASE=Volkswagen of America, Inc. - -usb:v1C1F* - ID_VENDOR_FROM_DATABASE=Goldvish S.A. - -usb:v1C20* - ID_VENDOR_FROM_DATABASE=Fuji Electric Device Technology Co., Ltd. - -usb:v1C21* - ID_VENDOR_FROM_DATABASE=ADDMM LLC - -usb:v1C22* - ID_VENDOR_FROM_DATABASE=ZHONGSHAN CHIANG YU ELECTRIC CO., LTD. - -usb:v1C26* - ID_VENDOR_FROM_DATABASE=Shanghai Haiying Electronics Co., Ltd. - -usb:v1C27* - ID_VENDOR_FROM_DATABASE=HuiYang D & S Cable Co., Ltd. - -usb:v1C31* - ID_VENDOR_FROM_DATABASE=LS Cable Ltd. - -usb:v1C34* - ID_VENDOR_FROM_DATABASE=SpringCard - -usb:v1C34p7241* - ID_PRODUCT_FROM_DATABASE=Prox'N'Roll RFID Scanner - -usb:v1C37* - ID_VENDOR_FROM_DATABASE=Authorizer Technologies, Inc. - -usb:v1C3D* - ID_VENDOR_FROM_DATABASE=NONIN MEDICAL INC. - -usb:v1C3E* - ID_VENDOR_FROM_DATABASE=Wep Peripherals - -usb:v1C40* - ID_VENDOR_FROM_DATABASE=EZPrototypes - -usb:v1C40p0533* - ID_PRODUCT_FROM_DATABASE=TiltStick - -usb:v1C40p0534* - ID_PRODUCT_FROM_DATABASE=i2c-tiny-usb interface - -usb:v1C40p0535* - ID_PRODUCT_FROM_DATABASE=glcd2usb interface - -usb:v1C40p0536* - ID_PRODUCT_FROM_DATABASE=Swiss ColorPAL - -usb:v1C49* - ID_VENDOR_FROM_DATABASE=Cherng Weei Technology Corp. - -usb:v1C4F* - ID_VENDOR_FROM_DATABASE=SiGma Micro - -usb:v1C4Fp0002* - ID_PRODUCT_FROM_DATABASE=Keyboard TRACER Gamma Ivory - -usb:v1C4Fp0003* - ID_PRODUCT_FROM_DATABASE=HID controller - -usb:v1C4Fp000E* - ID_PRODUCT_FROM_DATABASE=Genius KB-120 Keyboard - -usb:v1C4Fp0026* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v1C4Fp3000* - ID_PRODUCT_FROM_DATABASE=Micro USB Web Camera - -usb:v1C4Fp3002* - ID_PRODUCT_FROM_DATABASE=WebCam SiGma Micro - -usb:v1C6B* - ID_VENDOR_FROM_DATABASE=Philips & Lite-ON Digital Solutions Corporation - -usb:v1C6BpA222* - ID_PRODUCT_FROM_DATABASE=DVD Writer Slimtype eTAU108 - -usb:v1C6C* - ID_VENDOR_FROM_DATABASE=Skydigital Inc. - -usb:v1C73* - ID_VENDOR_FROM_DATABASE=AMT - -usb:v1C73p861F* - ID_PRODUCT_FROM_DATABASE=Anysee E30 USB 2.0 DVB-T Receiver - -usb:v1C77* - ID_VENDOR_FROM_DATABASE=Kaetat Industrial Co., Ltd. - -usb:v1C78* - ID_VENDOR_FROM_DATABASE=Datascope Corp. - -usb:v1C79* - ID_VENDOR_FROM_DATABASE=Unigen Corporation - -usb:v1C7A* - ID_VENDOR_FROM_DATABASE=LighTuning Technology Inc. - -usb:v1C7Ap0801* - ID_PRODUCT_FROM_DATABASE=Fingerprint Reader - -usb:v1C7B* - ID_VENDOR_FROM_DATABASE=LUXSHARE PRECISION INDUSTRY (SHENZHEN) CO., LTD. - -usb:v1C83* - ID_VENDOR_FROM_DATABASE=Schomäcker GmbH - -usb:v1C83p0001* - ID_PRODUCT_FROM_DATABASE=RS150 V2 - -usb:v1C87* - ID_VENDOR_FROM_DATABASE=2N TELEKOMUNIKACE a.s. - -usb:v1C88* - ID_VENDOR_FROM_DATABASE=Somagic, Inc. - -usb:v1C88p0007* - ID_PRODUCT_FROM_DATABASE=SMI Grabber (EasyCAP DC60+ clone) (no firmware) [SMI-2021CBE] - -usb:v1C88p003C* - ID_PRODUCT_FROM_DATABASE=SMI Grabber (EasyCAP DC60+ clone) [SMI-2021CBE] - -usb:v1C89* - ID_VENDOR_FROM_DATABASE=HONGKONG WEIDIDA ELECTRON LIMITED - -usb:v1C8E* - ID_VENDOR_FROM_DATABASE=ASTRON INTERNATIONAL CORP. - -usb:v1C98* - ID_VENDOR_FROM_DATABASE=ALPINE ELECTRONICS, INC. - -usb:v1C9E* - ID_VENDOR_FROM_DATABASE=OMEGA TECHNOLOGY - -usb:v1C9Ep6061* - ID_PRODUCT_FROM_DATABASE=WL-72B 3.5G MODEM - -usb:v1CA0* - ID_VENDOR_FROM_DATABASE=ACCARIO Inc. - -usb:v1CA1* - ID_VENDOR_FROM_DATABASE=Symwave - -usb:v1CA1p18AB* - ID_PRODUCT_FROM_DATABASE=SATA bridge - -usb:v1CAC* - ID_VENDOR_FROM_DATABASE=Kinstone - -usb:v1CACpA332* - ID_PRODUCT_FROM_DATABASE=C8 Webcam - -usb:v1CACpB288* - ID_PRODUCT_FROM_DATABASE=C18 Webcam - -usb:v1CB3* - ID_VENDOR_FROM_DATABASE=Aces Electronic Co., Ltd. - -usb:v1CB4* - ID_VENDOR_FROM_DATABASE=OPEX CORPORATION - -usb:v1CB6* - ID_VENDOR_FROM_DATABASE=IdeaCom Technology Inc. - -usb:v1CB6p6681* - ID_PRODUCT_FROM_DATABASE=IDC6681 - -usb:v1CBE* - ID_VENDOR_FROM_DATABASE=Luminary Micro Inc. - -usb:v1CBEp00FD* - ID_PRODUCT_FROM_DATABASE=In-Circuit Debug Interface - -usb:v1CBEp00FF* - ID_PRODUCT_FROM_DATABASE=Stellaris ROM DFU Bootloader - -usb:v1CBF* - ID_VENDOR_FROM_DATABASE=FORTAT SKYMARK INDUSTRIAL COMPANY - -usb:v1CC0* - ID_VENDOR_FROM_DATABASE=PlantSense - -usb:v1CCA* - ID_VENDOR_FROM_DATABASE=NextWave Broadband Inc. - -usb:v1CCD* - ID_VENDOR_FROM_DATABASE=Bodatong Technology (Shenzhen) Co., Ltd. - -usb:v1CD4* - ID_VENDOR_FROM_DATABASE=adp corporation - -usb:v1CD5* - ID_VENDOR_FROM_DATABASE=Firecomms Ltd. - -usb:v1CD6* - ID_VENDOR_FROM_DATABASE=Antonio Precise Products Manufactory Ltd. - -usb:v1CDE* - ID_VENDOR_FROM_DATABASE=Telecommunications Technology Association (TTA) - -usb:v1CDF* - ID_VENDOR_FROM_DATABASE=WonTen Technology Co., Ltd. - -usb:v1CE0* - ID_VENDOR_FROM_DATABASE=EDIMAX TECHNOLOGY CO., LTD. - -usb:v1CE1* - ID_VENDOR_FROM_DATABASE=Amphenol KAE - -usb:v1CF1* - ID_VENDOR_FROM_DATABASE=Dresden Elektronik - -usb:v1CF1p0001* - ID_PRODUCT_FROM_DATABASE=Sensor Terminal Board - -usb:v1CF1p0004* - ID_PRODUCT_FROM_DATABASE=Wireless Handheld Terminal - -usb:v1CF1p0017* - ID_PRODUCT_FROM_DATABASE=deRFusbSniffer 2.4 GHz - -usb:v1CF1p0018* - ID_PRODUCT_FROM_DATABASE=deRFusb24E001 - -usb:v1CF1p0019* - ID_PRODUCT_FROM_DATABASE=deRFusb14E001 - -usb:v1CF1p001A* - ID_PRODUCT_FROM_DATABASE=deRFusb23E00 - -usb:v1CF1p001B* - ID_PRODUCT_FROM_DATABASE=deRFusb13E00 - -usb:v1CF1p001C* - ID_PRODUCT_FROM_DATABASE=deRFnode - -usb:v1CF1p001D* - ID_PRODUCT_FROM_DATABASE=deRFnode / gateway - -usb:v1CF1p0022* - ID_PRODUCT_FROM_DATABASE=deUSB level shifter - -usb:v1CF1p0023* - ID_PRODUCT_FROM_DATABASE=deRFusbSniffer Sub-GHz - -usb:v1CF1p0025* - ID_PRODUCT_FROM_DATABASE=deRFusb23E06 - -usb:v1CF1p0027* - ID_PRODUCT_FROM_DATABASE=deRFusb13E06 - -usb:v1CFC* - ID_VENDOR_FROM_DATABASE=ANDES TECHNOLOGY CORPORATION - -usb:v1CFD* - ID_VENDOR_FROM_DATABASE=Flextronics Digital Design Japan, LTD. - -usb:v1D03* - ID_VENDOR_FROM_DATABASE=iCON - -usb:v1D03p0028* - ID_PRODUCT_FROM_DATABASE=iCreativ MIDI Controller - -usb:v1D07* - ID_VENDOR_FROM_DATABASE=Solid-Motion - -usb:v1D08* - ID_VENDOR_FROM_DATABASE=NINGBO HENTEK DRAGON ELECTRONICS CO., LTD. - -usb:v1D09* - ID_VENDOR_FROM_DATABASE=TechFaith Wireless Technology Limited - -usb:v1D09p1026* - ID_PRODUCT_FROM_DATABASE=HSUPA Modem FLYING-LARK46-VER0.07 [Flying Angel] - -usb:v1D0A* - ID_VENDOR_FROM_DATABASE=Johnson Controls, Inc. The Automotive Business Unit - -usb:v1D0B* - ID_VENDOR_FROM_DATABASE=HAN HUA CABLE & WIRE TECHNOLOGY (J.X.) CO., LTD. - -usb:v1D0F* - ID_VENDOR_FROM_DATABASE=Sonix Technology Co., Ltd. - -usb:v1D14* - ID_VENDOR_FROM_DATABASE=ALPHA-SAT TECHNOLOGY LIMITED - -usb:v1D17* - ID_VENDOR_FROM_DATABASE=C-Thru Music Ltd. - -usb:v1D17p0001* - ID_PRODUCT_FROM_DATABASE=AXiS-49 Harmonic Table MIDI Keyboard - -usb:v1D19* - ID_VENDOR_FROM_DATABASE=Dexatek Technology Ltd. - -usb:v1D19p1101* - ID_PRODUCT_FROM_DATABASE=DK DVB-T Dongle - -usb:v1D19p1102* - ID_PRODUCT_FROM_DATABASE=DK mini DVB-T Dongle - -usb:v1D19p1103* - ID_PRODUCT_FROM_DATABASE=DK 5217 DVB-T Dongle - -usb:v1D19p6105* - ID_PRODUCT_FROM_DATABASE=Video grabber - -usb:v1D19p8202* - ID_PRODUCT_FROM_DATABASE=DK DVBC/T DONGLE - -usb:v1D1F* - ID_VENDOR_FROM_DATABASE=Diostech Co., Ltd. - -usb:v1D20* - ID_VENDOR_FROM_DATABASE=SAMTACK INC. - -usb:v1D27* - ID_VENDOR_FROM_DATABASE=ASUS - -usb:v1D34* - ID_VENDOR_FROM_DATABASE=Dream Cheeky - -usb:v1D34p0001* - ID_PRODUCT_FROM_DATABASE=Dream Cheeky Fidget - -usb:v1D34p0004* - ID_PRODUCT_FROM_DATABASE=Dream Cheeky Webmail Notifier - -usb:v1D34p0008* - ID_PRODUCT_FROM_DATABASE=Dream Cheeky button - -usb:v1D34p000A* - ID_PRODUCT_FROM_DATABASE=Dream Cheeky Mailbox Friends Alert - -usb:v1D34p000D* - ID_PRODUCT_FROM_DATABASE=Dream Cheeky Big Red Button - -usb:v1D34p0013* - ID_PRODUCT_FROM_DATABASE=Dream Cheeky LED Message Board - -usb:v1D4D* - ID_VENDOR_FROM_DATABASE=PEGATRON CORPORATION - -usb:v1D4Dp0002* - ID_PRODUCT_FROM_DATABASE=Ralink RT2770/2720 802.11b/g/n Wireless LAN Mini-USB Device - -usb:v1D4Dp000C* - ID_PRODUCT_FROM_DATABASE=Ralink RT3070 802.11b/g/n Wireless Lan USB Device - -usb:v1D4Dp000E* - ID_PRODUCT_FROM_DATABASE=Ralink RT3070 802.11b/g/n Wireless Lan USB Device - -usb:v1D50* - ID_VENDOR_FROM_DATABASE=OpenMoko, Inc. - -usb:v1D50p5119* - ID_PRODUCT_FROM_DATABASE=GTA01/GTA02 U-Boot Bootloader - -usb:v1D50p602B* - ID_PRODUCT_FROM_DATABASE=FPGALink - -usb:v1D57* - ID_VENDOR_FROM_DATABASE=Xenta - -usb:v1D57p0005* - ID_PRODUCT_FROM_DATABASE=Wireless Receiver (Keyboard and Mouse) - -usb:v1D57p0006* - ID_PRODUCT_FROM_DATABASE=Wireless Receiver (RC Laser Pointer) - -usb:v1D57p000C* - ID_PRODUCT_FROM_DATABASE=Optical Mouse - -usb:v1D57p2400* - ID_PRODUCT_FROM_DATABASE=Wireless Mouse Receiver - -usb:v1D57p32DA* - ID_PRODUCT_FROM_DATABASE=2.4GHz Receiver (Keyboard and Mouse) - -usb:v1D57p83D0* - ID_PRODUCT_FROM_DATABASE=Click-mouse! - -usb:v1D57pAC01* - ID_PRODUCT_FROM_DATABASE=Wireless Receiver (Keyboard and Mouse) - -usb:v1D57pAD02* - ID_PRODUCT_FROM_DATABASE=SE340D PC Remote Control - -usb:v1D57pAF01* - ID_PRODUCT_FROM_DATABASE=AUVIO Universal Remote Receiver for PlayStation 3 - -usb:v1D5B* - ID_VENDOR_FROM_DATABASE=Smartronix, Inc. - -usb:v1D6B* - ID_VENDOR_FROM_DATABASE=Linux Foundation - -usb:v1D6Bp0001* - ID_PRODUCT_FROM_DATABASE=1.1 root hub - -usb:v1D6Bp0002* - ID_PRODUCT_FROM_DATABASE=2.0 root hub - -usb:v1D6Bp0003* - ID_PRODUCT_FROM_DATABASE=3.0 root hub - -usb:v1D6Bp0100* - ID_PRODUCT_FROM_DATABASE=PTP Gadget - -usb:v1D6Bp0101* - ID_PRODUCT_FROM_DATABASE=Audio Gadget - -usb:v1D6Bp0102* - ID_PRODUCT_FROM_DATABASE=EEM Gadget - -usb:v1D6Bp0103* - ID_PRODUCT_FROM_DATABASE=NCM (Ethernet) Gadget - -usb:v1D6Bp0104* - ID_PRODUCT_FROM_DATABASE=Multifunction Composite Gadget - -usb:v1D6Bp0105* - ID_PRODUCT_FROM_DATABASE=FunctionFS Gadget - -usb:v1D6Bp0200* - ID_PRODUCT_FROM_DATABASE=Qemu Audio Device - -usb:v1DE1* - ID_VENDOR_FROM_DATABASE=Actions Microelectronics Co. - -usb:v1DE1p1101* - ID_PRODUCT_FROM_DATABASE=Generic Display Device (Mass storage mode) - -usb:v1DE1pC101* - ID_PRODUCT_FROM_DATABASE=Generic Display Device - -usb:v1E0E* - ID_VENDOR_FROM_DATABASE=Qualcomm / Option - -usb:v1E0EpF000* - ID_PRODUCT_FROM_DATABASE=iCON 210 UMTS Surfstick - -usb:v1E10* - ID_VENDOR_FROM_DATABASE=Point Grey Research, Inc. - -usb:v1E10p2004* - ID_PRODUCT_FROM_DATABASE=Sony 1.3MP 1/3" ICX445 IIDC video camera [Chameleon] - -usb:v1E17* - ID_VENDOR_FROM_DATABASE=Mirion Technologies Dosimetry Services Division - -usb:v1E17p0001* - ID_PRODUCT_FROM_DATABASE=instadose dosimeter - -usb:v1E1D* - ID_VENDOR_FROM_DATABASE=Lumension Security - -usb:v1E1Dp0165* - ID_PRODUCT_FROM_DATABASE=Secure Pen drive - -usb:v1E1F* - ID_VENDOR_FROM_DATABASE=INVIA - -usb:v1E29* - ID_VENDOR_FROM_DATABASE=Festo AG & Co. KG - -usb:v1E29p0101* - ID_PRODUCT_FROM_DATABASE=CPX Adapter - -usb:v1E29p0102* - ID_PRODUCT_FROM_DATABASE=CPX Adapter >=HW10.09 [CP2102] - -usb:v1E29p0401* - ID_PRODUCT_FROM_DATABASE=iL3-TP [AT90USB646] - -usb:v1E29p0402* - ID_PRODUCT_FROM_DATABASE=FTDI232 [EasyPort] - -usb:v1E29p0403* - ID_PRODUCT_FROM_DATABASE=FTDI232 [EasyPort Mini] - -usb:v1E29p0404* - ID_PRODUCT_FROM_DATABASE=FTDI232 [Netzteil-GL] - -usb:v1E29p0405* - ID_PRODUCT_FROM_DATABASE=FTDI232 [MotorPrüfstand] - -usb:v1E29p0406* - ID_PRODUCT_FROM_DATABASE=STM32F103 [EasyKit] - -usb:v1E29p0407* - ID_PRODUCT_FROM_DATABASE=LPC2378 [Robotino] - -usb:v1E29p0408* - ID_PRODUCT_FROM_DATABASE=LPC2378 [Robotino-Arm] - -usb:v1E29p0409* - ID_PRODUCT_FROM_DATABASE=LPC2378 [Robotino-Arm Bootloader] - -usb:v1E29p040A* - ID_PRODUCT_FROM_DATABASE=LPC2378 [Robotino Bootloader] - -usb:v1E29p040B* - ID_PRODUCT_FROM_DATABASE=LPC2378 [Robotino XT] - -usb:v1E29p040C* - ID_PRODUCT_FROM_DATABASE=LPC2378 [Robotino XT Bootloader] - -usb:v1E29p040D* - ID_PRODUCT_FROM_DATABASE=LPC2378 [Robotino 3] - -usb:v1E29p040E* - ID_PRODUCT_FROM_DATABASE=LPC2378 [Robotino 3 Bootloader] - -usb:v1E29p0501* - ID_PRODUCT_FROM_DATABASE=CP2102 [CMSP] - -usb:v1E29p0601* - ID_PRODUCT_FROM_DATABASE=CMMP-AS - -usb:v1E3D* - ID_VENDOR_FROM_DATABASE=Chipsbank Microelectronics Co., Ltd - -usb:v1E3Dp2093* - ID_PRODUCT_FROM_DATABASE=CBM209x Flash Drive (OEM) - -usb:v1E3Dp4082* - ID_PRODUCT_FROM_DATABASE=CBM4082 SD Card Reader - -usb:v1E41* - ID_VENDOR_FROM_DATABASE=Cleverscope - -usb:v1E41p0001* - ID_PRODUCT_FROM_DATABASE=CS328A PC Oscilloscope - -usb:v1E4E* - ID_VENDOR_FROM_DATABASE=Cubeternet - -usb:v1E4Ep0100* - ID_PRODUCT_FROM_DATABASE=WebCam - -usb:v1E4Ep0102* - ID_PRODUCT_FROM_DATABASE=GL-UPC822 UVC WebCam - -usb:v1E54* - ID_VENDOR_FROM_DATABASE=TypeMatrix - -usb:v1E54p2030* - ID_PRODUCT_FROM_DATABASE=2030 USB Keyboard - -usb:v1E68* - ID_VENDOR_FROM_DATABASE=TrekStor GmbH & Co. KG - -usb:v1E68p001B* - ID_PRODUCT_FROM_DATABASE=DataStation maxi g.u - -usb:v1E71* - ID_VENDOR_FROM_DATABASE=NZXT - -usb:v1E71p0001* - ID_PRODUCT_FROM_DATABASE=Avatar Optical Mouse - -usb:v1E74* - ID_VENDOR_FROM_DATABASE=Coby Electronics Corporation - -usb:v1E74p2211* - ID_PRODUCT_FROM_DATABASE=MP300 - -usb:v1E74p2647* - ID_PRODUCT_FROM_DATABASE=2 GB 2 Go Video MP3 Player [MP601-2G] - -usb:v1E74p2659* - ID_PRODUCT_FROM_DATABASE=Coby 4GB Go Video MP3 Player [MP620-4G] - -usb:v1E74p4641* - ID_PRODUCT_FROM_DATABASE=A8705 MP3/Video Player - -usb:v1E74p6511* - ID_PRODUCT_FROM_DATABASE=MP705-8G MP3 player - -usb:v1E74p6512* - ID_PRODUCT_FROM_DATABASE=MP705-4G - -usb:v1E74p7111* - ID_PRODUCT_FROM_DATABASE=MP957 Music and Video Player - -usb:v1E7D* - ID_VENDOR_FROM_DATABASE=ROCCAT - -usb:v1E7Dp2C24* - ID_PRODUCT_FROM_DATABASE=Pyra Mouse (wired) - -usb:v1E7Dp2CED* - ID_PRODUCT_FROM_DATABASE=Kone Mouse - -usb:v1E7Dp2CF6* - ID_PRODUCT_FROM_DATABASE=Pyra Mouse (wireless) - -usb:v1E7Dp2D50* - ID_PRODUCT_FROM_DATABASE=Kova+ Mouse - -usb:v1E7Dp2D51* - ID_PRODUCT_FROM_DATABASE=Kone+ Mouse - -usb:v1E7Dp30D4* - ID_PRODUCT_FROM_DATABASE=Arvo Keyboard - -usb:v1EBB* - ID_VENDOR_FROM_DATABASE=NuCORE Technology, Inc. - -usb:v1EDA* - ID_VENDOR_FROM_DATABASE=AirTies Wireless Networks - -usb:v1EDAp2012* - ID_PRODUCT_FROM_DATABASE=Air2210 54 Mbps Wireless Adapter - -usb:v1EDAp2210* - ID_PRODUCT_FROM_DATABASE=Air2210 54 Mbps Wireless Adapter - -usb:v1EDAp2310* - ID_PRODUCT_FROM_DATABASE=Air2310 150 Mbps Wireless Adapter - -usb:v1EDAp2410* - ID_PRODUCT_FROM_DATABASE=Air2410 300 Mbps Wireless Adapter - -usb:v1EDB* - ID_VENDOR_FROM_DATABASE=Blackmagic design - -usb:v1EDBpBD3B* - ID_PRODUCT_FROM_DATABASE=Intensity Shuttle - -usb:v1EE8* - ID_VENDOR_FROM_DATABASE=ONDA COMMUNICATION S.p.a. - -usb:v1EE8p0014* - ID_PRODUCT_FROM_DATABASE=MT833UP - -usb:v1EF6* - ID_VENDOR_FROM_DATABASE=EADS Deutschland GmbH - -usb:v1EF6p5064* - ID_PRODUCT_FROM_DATABASE=FDR Interface - -usb:v1EF6p5648* - ID_PRODUCT_FROM_DATABASE=RIU CSMU/BSD - -usb:v1EF6p564A* - ID_PRODUCT_FROM_DATABASE=Cassidian RIU CSMU/BSD Simulator - -usb:v1F28* - ID_VENDOR_FROM_DATABASE=Cal-Comp - -usb:v1F28p0020* - ID_PRODUCT_FROM_DATABASE=CDMA USB Modem A600 - -usb:v1F28p0021* - ID_PRODUCT_FROM_DATABASE=CD INSTALLER USB Device - -usb:v1F44* - ID_VENDOR_FROM_DATABASE=The Neat Company - -usb:v1F44p0001* - ID_PRODUCT_FROM_DATABASE=NM-1000 scanner - -usb:v1F48* - ID_VENDOR_FROM_DATABASE=H-TRONIC GmbH - -usb:v1F48p0627* - ID_PRODUCT_FROM_DATABASE=Data capturing system - -usb:v1F48p0628* - ID_PRODUCT_FROM_DATABASE=Data capturing and control module - -usb:v1F4D* - ID_VENDOR_FROM_DATABASE=G-Tek Electronics Group - -usb:v1F4DpB803* - ID_PRODUCT_FROM_DATABASE=Lifeview LV5TDLX DVB-T [RTL2832U] - -usb:v1F6F* - ID_VENDOR_FROM_DATABASE=Aliph - -usb:v1F6Fp0023* - ID_PRODUCT_FROM_DATABASE=Jawbone Jambox - -usb:v1F6Fp8000* - ID_PRODUCT_FROM_DATABASE=Jawbone Jambox - Updating - -usb:v1F75* - ID_VENDOR_FROM_DATABASE=Innostor Technology Corporation - -usb:v1F75p0888* - ID_PRODUCT_FROM_DATABASE=IS888 SATA Storage Controller - -usb:v1F75p0902* - ID_PRODUCT_FROM_DATABASE=IS902 UFD controller - -usb:v1F82* - ID_VENDOR_FROM_DATABASE=TANDBERG - -usb:v1F82p0001* - ID_PRODUCT_FROM_DATABASE=PrecisionHD Camera - -usb:v1F84* - ID_VENDOR_FROM_DATABASE=Alere, Inc. - -usb:v1F87* - ID_VENDOR_FROM_DATABASE=Stantum - -usb:v1F87p0002* - ID_PRODUCT_FROM_DATABASE=Multi-touch HID Controller - -usb:v1F9B* - ID_VENDOR_FROM_DATABASE=Ubiquiti Networks, Inc. - -usb:v1F9Bp0241* - ID_PRODUCT_FROM_DATABASE=AirView2-EXT - -usb:v1FAB* - ID_VENDOR_FROM_DATABASE=Samsung Opto-Electroncs Co., Ltd. - -usb:v1FABp104D* - ID_PRODUCT_FROM_DATABASE=ES65 - -usb:v1FBD* - ID_VENDOR_FROM_DATABASE=Delphin Technology AG - -usb:v1FBDp0001* - ID_PRODUCT_FROM_DATABASE=Expert Key - Data aquisition system - -usb:v1FC9* - ID_VENDOR_FROM_DATABASE=NXP Semiconductors - -usb:v1FC9p0003* - ID_PRODUCT_FROM_DATABASE=LPC1343 - -usb:v1FC9p010B* - ID_PRODUCT_FROM_DATABASE=PR533 - -usb:v1FDE* - ID_VENDOR_FROM_DATABASE=ILX Lightwave Corporation - -usb:v1FDEp0001* - ID_PRODUCT_FROM_DATABASE=UART Bridge - -usb:v1FE7* - ID_VENDOR_FROM_DATABASE=Vertex Wireless Co., Ltd. - -usb:v1FE7p1000* - ID_PRODUCT_FROM_DATABASE=VW100 series CDMA EV-DO Rev.A modem - -usb:v1FF7* - ID_VENDOR_FROM_DATABASE=CVT Electronics.Co.,Ltd - -usb:v1FF7p0013* - ID_PRODUCT_FROM_DATABASE=CVTouch Screen (HID) - -usb:v1FF7p001A* - ID_PRODUCT_FROM_DATABASE=Human Interface Device - -usb:v1FFF* - ID_VENDOR_FROM_DATABASE=Ideofy Inc. - -usb:v2001* - ID_VENDOR_FROM_DATABASE=D-Link Corp. - -usb:v2001p0001* - ID_PRODUCT_FROM_DATABASE=DWL-120 WIRELESS ADAPTER - -usb:v2001p0201* - ID_PRODUCT_FROM_DATABASE=DHN-120 10Mb Home Phoneline Adapter - -usb:v2001p1A00* - ID_PRODUCT_FROM_DATABASE=DUB-E100 Fast Ethernet Adapter(rev.A) [ASIX AX88172] - -usb:v2001p1A02* - ID_PRODUCT_FROM_DATABASE=DUB-E100 Fast Ethernet Adapter(rev.C1) [ASIX AX88772] - -usb:v2001p200C* - ID_PRODUCT_FROM_DATABASE=10/100 Ethernet - -usb:v2001p3200* - ID_PRODUCT_FROM_DATABASE=DWL-120 802.11b Wireless Adapter(rev.E1) [Atmel at76c503a] - -usb:v2001p3301* - ID_PRODUCT_FROM_DATABASE=DWA-130 802.11n Wireless N Adapter(rev.C1) [Realtek RTL8192U] - -usb:v2001p3306* - ID_PRODUCT_FROM_DATABASE=DWL-G122 Wireless Adapter(rev.F1) [Realtek RTL8188SU] - -usb:v2001p3308* - ID_PRODUCT_FROM_DATABASE=DWA-121 802.11n Wireless N 150 Pico Adapter [Realtek RTL8188CUS] - -usb:v2001p3309* - ID_PRODUCT_FROM_DATABASE=DWA-135 802.11n Wireless N Adapter(rev.A1) [Realtek RTL8192CU] - -usb:v2001p330A* - ID_PRODUCT_FROM_DATABASE=DWA-133 802.11n Wireless N Adapter [Realtek RTL8192CU] - -usb:v2001p3500* - ID_PRODUCT_FROM_DATABASE=Elitegroup Computer Systems WLAN card WL-162 - -usb:v2001p3700* - ID_PRODUCT_FROM_DATABASE=DWL-122 802.11b [Intersil Prism 3] - -usb:v2001p3701* - ID_PRODUCT_FROM_DATABASE=DWL-G120 Spinnaker 802.11g [Intersil ISL3886] - -usb:v2001p3702* - ID_PRODUCT_FROM_DATABASE=DWL-120 802.11b Wireless Adapter(rev.F) [Intersil ISL3871] - -usb:v2001p3703* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter(rev.A1) [Intersil ISL3880] - -usb:v2001p3704* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter(rev.A2) [Intersil ISL3887] - -usb:v2001p3705* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G120 Wireless Adapter(rev.C) [Intersil ISL3887] - -usb:v2001p3761* - ID_PRODUCT_FROM_DATABASE=IEEE 802.11g USB2.0 Wireless Network Adapter-PN - -usb:v2001p3A00* - ID_PRODUCT_FROM_DATABASE=DWL-AG132 [Atheros AR5523] - -usb:v2001p3A01* - ID_PRODUCT_FROM_DATABASE=DWL-AG132 (no firmware) [Atheros AR5523] - -usb:v2001p3A02* - ID_PRODUCT_FROM_DATABASE=DWL-G132 [Atheros AR5523] - -usb:v2001p3A03* - ID_PRODUCT_FROM_DATABASE=DWL-G132 (no firmware) [Atheros AR5523] - -usb:v2001p3A04* - ID_PRODUCT_FROM_DATABASE=DWL-AG122 [Atheros AR5523] - -usb:v2001p3A05* - ID_PRODUCT_FROM_DATABASE=DWL-AG122 (no firmware) [Atheros AR5523] - -usb:v2001p3A80* - ID_PRODUCT_FROM_DATABASE=AirPlus Xtreme G DWL-G132 Wireless Adapter - -usb:v2001p3A81* - ID_PRODUCT_FROM_DATABASE=predator Bootloader Download - -usb:v2001p3A82* - ID_PRODUCT_FROM_DATABASE=AirPremier AG DWL-AG132 Wireless Adapter - -usb:v2001p3A83* - ID_PRODUCT_FROM_DATABASE=predator Bootloader Download - -usb:v2001p3B00* - ID_PRODUCT_FROM_DATABASE=AirPlus DWL-120+ Wireless Adapter [Texas Instruments ACX100USB] - -usb:v2001p3B01* - ID_PRODUCT_FROM_DATABASE=WLAN Boot Device - -usb:v2001p3C00* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter(rev.B1) [Ralink RT2571] - -usb:v2001p3C01* - ID_PRODUCT_FROM_DATABASE=AirPlus AG DWL-AG122 Wireless Adapter - -usb:v2001p3C02* - ID_PRODUCT_FROM_DATABASE=AirPlus G DWL-G122 Wireless Adapter - -usb:v2001p3C05* - ID_PRODUCT_FROM_DATABASE=DUB-E100 Fast Ethernet Adapter(rev.B1) [ASIX AX88772] - -usb:v2001p3C15* - ID_PRODUCT_FROM_DATABASE=DWA-140 RangeBooster N Adapter(rev.B3) [Ralink RT5372] - -usb:v2001p3C17* - ID_PRODUCT_FROM_DATABASE=DWA-123 Wireless N 150 Adapter(rev.A1) [Ralink RT3370] - -usb:v2001p3C19* - ID_PRODUCT_FROM_DATABASE=DWA-125 Wireless N 150 Adapter(rev.A3) [Ralink RT5370] - -usb:v2001p3C1A* - ID_PRODUCT_FROM_DATABASE=DWA-160 802.11abgn Xtreme N Dual Band Adapter(rev.B2) [Ralink RT5572] - -usb:v2001p3C1B* - ID_PRODUCT_FROM_DATABASE=DWA-127 Wireless N 150 High-Gain Adapter(rev.A1) [Ralink RT3070] - -usb:v2001p4000* - ID_PRODUCT_FROM_DATABASE=DSB-650C Ethernet [klsi] - -usb:v2001p4001* - ID_PRODUCT_FROM_DATABASE=DSB-650TX Ethernet [pegasus] - -usb:v2001p4002* - ID_PRODUCT_FROM_DATABASE=DSB-650TX Ethernet [pegasus] - -usb:v2001p4003* - ID_PRODUCT_FROM_DATABASE=DSB-650TX-PNA Ethernet [pegasus] - -usb:v2001p400B* - ID_PRODUCT_FROM_DATABASE=10/100 Ethernet - -usb:v2001p4102* - ID_PRODUCT_FROM_DATABASE=10/100 Ethernet - -usb:v2001p5100* - ID_PRODUCT_FROM_DATABASE=DSL-200 ADSL ATM Modem - -usb:v2001p5102* - ID_PRODUCT_FROM_DATABASE=DSL-200 ADSL Loader - -usb:v2001p5B00* - ID_PRODUCT_FROM_DATABASE=Remote NDIS Network Device - -usb:v2001p9414* - ID_PRODUCT_FROM_DATABASE=Cable Modem - -usb:v2001p9B00* - ID_PRODUCT_FROM_DATABASE=Broadband Cable Modem Remote NDIS Device - -usb:v2001pABC1* - ID_PRODUCT_FROM_DATABASE=DSB-650 Ethernet [pegasus] - -usb:v2001pF013* - ID_PRODUCT_FROM_DATABASE=DLink 7 port USB2.0 Hub - -usb:v2001pF103* - ID_PRODUCT_FROM_DATABASE=DUB-H7 7-port USB 2.0 hub - -usb:v2001pF10D* - ID_PRODUCT_FROM_DATABASE=Accent Communications Modem - -usb:v2001pF110* - ID_PRODUCT_FROM_DATABASE=DUB-AV300 A/V Capture - -usb:v2001pF111* - ID_PRODUCT_FROM_DATABASE=DBT-122 Bluetooth adapter - -usb:v2001pF112* - ID_PRODUCT_FROM_DATABASE=DUB-T210 Audio Device - -usb:v2001pF116* - ID_PRODUCT_FROM_DATABASE=Formosa 2 - -usb:v2001pF117* - ID_PRODUCT_FROM_DATABASE=Formosa 3 - -usb:v2001pF118* - ID_PRODUCT_FROM_DATABASE=Formosa 4 - -usb:v2002* - ID_VENDOR_FROM_DATABASE=DAP Technologies - -usb:v200C* - ID_VENDOR_FROM_DATABASE=Reloop - -usb:v200Cp100B* - ID_PRODUCT_FROM_DATABASE=Play audio soundcard - -usb:v2013* - ID_VENDOR_FROM_DATABASE=PCTV Systems - -usb:v2013p0245* - ID_PRODUCT_FROM_DATABASE=PCTV 73ESE - -usb:v2013p0246* - ID_PRODUCT_FROM_DATABASE=PCTV 74E - -usb:v2013p0248* - ID_PRODUCT_FROM_DATABASE=PCTV 282E - -usb:v2013p024F* - ID_PRODUCT_FROM_DATABASE=nanoStick T2 290e - -usb:v2019* - ID_VENDOR_FROM_DATABASE=PLANEX - -usb:v2019p3220* - ID_PRODUCT_FROM_DATABASE=GW-US11S WLAN [Atmel AT76C503A] - -usb:v2019p4901* - ID_PRODUCT_FROM_DATABASE=GW-USSuper300 802.11bgn Wireless Adapter [Realtek RTL8191SU] - -usb:v2019p4903* - ID_PRODUCT_FROM_DATABASE=GW-USFang300 802.11abgn Wireless Adapter [Realtek RTL8192DU] - -usb:v2019p4904* - ID_PRODUCT_FROM_DATABASE=GW-USUltra300 802.11abgn Wireless Adapter [Realtek RTL8192DU] - -usb:v2019p5303* - ID_PRODUCT_FROM_DATABASE=GW-US54GXS 802.11bg - -usb:v2019p5304* - ID_PRODUCT_FROM_DATABASE=GWUS300 802.11n - -usb:v2019pAB01* - ID_PRODUCT_FROM_DATABASE=GW-US54HP - -usb:v2019pAB24* - ID_PRODUCT_FROM_DATABASE=GW-US300MiniS - -usb:v2019pAB25* - ID_PRODUCT_FROM_DATABASE=GW-USMini2N 802.11n Wireless Adapter [Ralink RT2870] - -usb:v2019pAB28* - ID_PRODUCT_FROM_DATABASE=GW-USNano - -usb:v2019pAB29* - ID_PRODUCT_FROM_DATABASE=GW-USMicro300 - -usb:v2019pAB2A* - ID_PRODUCT_FROM_DATABASE=GW-USNano2 802.11n Wireless Adapter [Realtek RTL8188CUS] - -usb:v2019pAB2B* - ID_PRODUCT_FROM_DATABASE=GW-USEco300 802.11bgn Wireless Adapter [Realtek RTL8192CU] - -usb:v2019pAB2C* - ID_PRODUCT_FROM_DATABASE=GW-USDual300 802.11abgn Wireless Adapter [Realtek RTL8192DU] - -usb:v2019pAB50* - ID_PRODUCT_FROM_DATABASE=GW-US54Mini2 - -usb:v2019pC002* - ID_PRODUCT_FROM_DATABASE=GW-US54SG - -usb:v2019pC007* - ID_PRODUCT_FROM_DATABASE=GW-US54GZL - -usb:v2019pED02* - ID_PRODUCT_FROM_DATABASE=GW-USMM - -usb:v2019pED06* - ID_PRODUCT_FROM_DATABASE=GW-US300MiniW 802.11bgn Wireless Adapter - -usb:v2019pED10* - ID_PRODUCT_FROM_DATABASE=GW-US300Mini2 - -usb:v2019pED14* - ID_PRODUCT_FROM_DATABASE=GW-USMicroN - -usb:v2019pED16* - ID_PRODUCT_FROM_DATABASE=GW-USMicroN2W 802.11bgn Wireless Adapter [Realtek RTL8188SU] - -usb:v2019pED17* - ID_PRODUCT_FROM_DATABASE=GW-USValue-EZ 802.11n Wireless Adapter [Realtek RTL8188CUS] - -usb:v2019pED18* - ID_PRODUCT_FROM_DATABASE=GW-USHyper300 / GW-USH300N 802.11bgn Wireless Adapter [Realtek RTL8191SU] - -usb:v2040* - ID_VENDOR_FROM_DATABASE=Hauppauge - -usb:v2040p0C80* - ID_PRODUCT_FROM_DATABASE=Windham - -usb:v2040p0C90* - ID_PRODUCT_FROM_DATABASE=Windham - -usb:v2040p1700* - ID_PRODUCT_FROM_DATABASE=CataMount - -usb:v2040p1800* - ID_PRODUCT_FROM_DATABASE=Okemo A - -usb:v2040p1801* - ID_PRODUCT_FROM_DATABASE=Okemo B - -usb:v2040p2000* - ID_PRODUCT_FROM_DATABASE=Tiger Minicard - -usb:v2040p2009* - ID_PRODUCT_FROM_DATABASE=Tiger Minicard R2 - -usb:v2040p200A* - ID_PRODUCT_FROM_DATABASE=Tiger Minicard - -usb:v2040p2010* - ID_PRODUCT_FROM_DATABASE=Tiger Minicard - -usb:v2040p2011* - ID_PRODUCT_FROM_DATABASE=WinTV MiniCard [Dell Digital TV Receiver] - -usb:v2040p2019* - ID_PRODUCT_FROM_DATABASE=Tiger Minicard - -usb:v2040p2400* - ID_PRODUCT_FROM_DATABASE=WinTV PVR USB2 (Model 24019) - -usb:v2040p4700* - ID_PRODUCT_FROM_DATABASE=WinTV Nova-S-USB2 - -usb:v2040p4902* - ID_PRODUCT_FROM_DATABASE=HD PVR - -usb:v2040p4903* - ID_PRODUCT_FROM_DATABASE=HS PVR - -usb:v2040p4982* - ID_PRODUCT_FROM_DATABASE=HD PVR - -usb:v2040p5500* - ID_PRODUCT_FROM_DATABASE=Windham - -usb:v2040p5510* - ID_PRODUCT_FROM_DATABASE=Windham - -usb:v2040p5520* - ID_PRODUCT_FROM_DATABASE=Windham - -usb:v2040p5530* - ID_PRODUCT_FROM_DATABASE=Windham - -usb:v2040p5580* - ID_PRODUCT_FROM_DATABASE=Windham - -usb:v2040p5590* - ID_PRODUCT_FROM_DATABASE=Windham - -usb:v2040p6500* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-900 - -usb:v2040p6502* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-900 - -usb:v2040p6503* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-930 - -usb:v2040p6513* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-980 - -usb:v2040p7050* - ID_PRODUCT_FROM_DATABASE=Nova-T Stick - -usb:v2040p7060* - ID_PRODUCT_FROM_DATABASE=Nova-T Stick 2 - -usb:v2040p7070* - ID_PRODUCT_FROM_DATABASE=Nova-T Stick 3 - -usb:v2040p7240* - ID_PRODUCT_FROM_DATABASE=WinTV HVR-850 - -usb:v2040p8400* - ID_PRODUCT_FROM_DATABASE=WinTV Nova-T-500 - -usb:v2040p9300* - ID_PRODUCT_FROM_DATABASE=WinTV NOVA-T USB2 (cold) - -usb:v2040p9301* - ID_PRODUCT_FROM_DATABASE=WinTV NOVA-T USB2 (warm) - -usb:v2040p9941* - ID_PRODUCT_FROM_DATABASE=WinTV Nova-T-500 - -usb:v2040p9950* - ID_PRODUCT_FROM_DATABASE=WinTV Nova-T-500 - -usb:v2040pB910* - ID_PRODUCT_FROM_DATABASE=Windham - -usb:v2040pB980* - ID_PRODUCT_FROM_DATABASE=Windham - -usb:v2040pB990* - ID_PRODUCT_FROM_DATABASE=Windham - -usb:v2040pC000* - ID_PRODUCT_FROM_DATABASE=Windham - -usb:v2040pC010* - ID_PRODUCT_FROM_DATABASE=Windham - -usb:v2047* - ID_VENDOR_FROM_DATABASE=Texas Instruments - -usb:v2047p0200* - ID_PRODUCT_FROM_DATABASE=MSP430 USB HID Bootstrap Loader - -usb:v2080* - ID_VENDOR_FROM_DATABASE=Barnes & Noble - -usb:v2080p0001* - ID_PRODUCT_FROM_DATABASE=nook - -usb:v2080p0002* - ID_PRODUCT_FROM_DATABASE=NOOKcolor - -usb:v2080p0003* - ID_PRODUCT_FROM_DATABASE=NOOK Simple Touch - -usb:v2080p0004* - ID_PRODUCT_FROM_DATABASE=NOOK Tablet - -usb:v2087* - ID_VENDOR_FROM_DATABASE=Cando - -usb:v2087p0A01* - ID_PRODUCT_FROM_DATABASE=Multi Touch Panel - -usb:v2087p0A02* - ID_PRODUCT_FROM_DATABASE=Multi Touch Panel - -usb:v2087p0B03* - ID_PRODUCT_FROM_DATABASE=Multi Touch Panel - -usb:v20A0* - ID_VENDOR_FROM_DATABASE=Clay Logic - -usb:v20A0p4123* - ID_PRODUCT_FROM_DATABASE=IKALOGIC SCANALOGIC 2 - -usb:v20A0p414A* - ID_PRODUCT_FROM_DATABASE=MDE SPI Interface - -usb:v20A0p415A* - ID_PRODUCT_FROM_DATABASE=OpenPilot - -usb:v20A0p415B* - ID_PRODUCT_FROM_DATABASE=CopterControl - -usb:v20A0p415C* - ID_PRODUCT_FROM_DATABASE=PipXtreme - -usb:v20B1* - ID_VENDOR_FROM_DATABASE=XMOS Ltd - -usb:v20B1p10AD* - ID_PRODUCT_FROM_DATABASE=XUSB Loader - -usb:v20B1pF7D1* - ID_PRODUCT_FROM_DATABASE=XTAG2 - JTAG Adapter - -usb:v20B3* - ID_VENDOR_FROM_DATABASE=Hanvon - -usb:v20B3p0A18* - ID_PRODUCT_FROM_DATABASE=10.1 Touch screen overlay - -usb:v20B7* - ID_VENDOR_FROM_DATABASE=Qi Hardware - -usb:v20B7p0713* - ID_PRODUCT_FROM_DATABASE=Milkymist JTAG/serial - -usb:v20B7p1540* - ID_PRODUCT_FROM_DATABASE=ben-wpan, AT86RF230-based - -usb:v20B7p1DB5* - ID_PRODUCT_FROM_DATABASE=IDBG in DFU mode - -usb:v20B7p1DB6* - ID_PRODUCT_FROM_DATABASE=IDBG in normal mode - -usb:v20B7pC25B* - ID_PRODUCT_FROM_DATABASE=C2 Dongle - -usb:v20B7pCB72* - ID_PRODUCT_FROM_DATABASE=ben-wpan, cntr - -usb:v20DF* - ID_VENDOR_FROM_DATABASE=Simtec Electronics - -usb:v20DFp0001* - ID_PRODUCT_FROM_DATABASE=Entropy Key [UDEKEY01] - -usb:v20F4* - ID_VENDOR_FROM_DATABASE=TRENDnet - -usb:v20F4p648B* - ID_PRODUCT_FROM_DATABASE=TEW-648UBM 802.11n 150Mbps Micro Wireless N Adapter [Realtek RTL8188CUS] - -usb:v2101* - ID_VENDOR_FROM_DATABASE=ActionStar - -usb:v2101p0201* - ID_PRODUCT_FROM_DATABASE=SIIG 4-to-2 Printer Switch - -usb:v2162* - ID_VENDOR_FROM_DATABASE=Creative (?) - -usb:v2162p2031* - ID_PRODUCT_FROM_DATABASE=Network Blaster Wireless Adapter - -usb:v2162p500C* - ID_PRODUCT_FROM_DATABASE=DE5771 Modem Blaster - -usb:v2162p8001* - ID_PRODUCT_FROM_DATABASE=Broadxent BritePort DSL Bridge 8010U - -usb:v2184* - ID_VENDOR_FROM_DATABASE=GW Instek - -usb:v2184p0005* - ID_PRODUCT_FROM_DATABASE=GDS-3000 Oscilloscope - -usb:v2184p0006* - ID_PRODUCT_FROM_DATABASE=GDS-3000 Oscilloscope - -usb:v2184p0011* - ID_PRODUCT_FROM_DATABASE=AFG Function Generator (CDC) - -usb:v21A1* - ID_VENDOR_FROM_DATABASE=Emotiv Systems Pty. Ltd. - -usb:v21A1p0001* - ID_PRODUCT_FROM_DATABASE=EPOC Consumer Headset Wireless Dongle - -usb:v21D6* - ID_VENDOR_FROM_DATABASE=Agecodagis SARL - -usb:v21D6p0002* - ID_PRODUCT_FROM_DATABASE=Seismic recorder [Tellus] - -usb:v2222* - ID_VENDOR_FROM_DATABASE=MacAlly - -usb:v2222p0004* - ID_PRODUCT_FROM_DATABASE=iWebKey Keyboard - -usb:v2222p2520* - ID_PRODUCT_FROM_DATABASE=Mini Tablet - -usb:v2222p4050* - ID_PRODUCT_FROM_DATABASE=AirStick joystick - -usb:v2227* - ID_VENDOR_FROM_DATABASE=SAMWOO Enterprise - -usb:v2227p3105* - ID_PRODUCT_FROM_DATABASE=SKYDATA SKD-U100 - -usb:v2233* - ID_VENDOR_FROM_DATABASE=RadioShack Corporation - -usb:v2233p6323* - ID_PRODUCT_FROM_DATABASE=USB Electronic Scale - -usb:v2237* - ID_VENDOR_FROM_DATABASE=Kobo Inc. - -usb:v2237p4161* - ID_PRODUCT_FROM_DATABASE=eReader White - -usb:v22A6* - ID_VENDOR_FROM_DATABASE=Pie Digital, Inc. - -usb:v22A6pFFFF* - ID_PRODUCT_FROM_DATABASE=PieKey "beta" 4GB model 4E4F41482E4F5247 (SM3251Q BB) - -usb:v22B8* - ID_VENDOR_FROM_DATABASE=Motorola PCS - -usb:v22B8p0001* - ID_PRODUCT_FROM_DATABASE=Wally 2.2 chipset - -usb:v22B8p0002* - ID_PRODUCT_FROM_DATABASE=Wally 2.4 chipset - -usb:v22B8p0005* - ID_PRODUCT_FROM_DATABASE=V.60c/V.60i GSM Phone - -usb:v22B8p0830* - ID_PRODUCT_FROM_DATABASE=2386C-HT820 - -usb:v22B8p0833* - ID_PRODUCT_FROM_DATABASE=2386C-HT820 [Flash Mode] - -usb:v22B8p0850* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v22B8p1001* - ID_PRODUCT_FROM_DATABASE=Patriot 1.0 (GSM) chipset - -usb:v22B8p1002* - ID_PRODUCT_FROM_DATABASE=Patriot 2.0 chipset - -usb:v22B8p1005* - ID_PRODUCT_FROM_DATABASE=T280e GSM/GPRS Phone - -usb:v22B8p1101* - ID_PRODUCT_FROM_DATABASE=Patriot 1.0 (TDMA) chipset - -usb:v22B8p1801* - ID_PRODUCT_FROM_DATABASE=Rainbow chipset flash - -usb:v22B8p2035* - ID_PRODUCT_FROM_DATABASE=Bluetooth Device - -usb:v22B8p2805* - ID_PRODUCT_FROM_DATABASE=GSM Modem - -usb:v22B8p2821* - ID_PRODUCT_FROM_DATABASE=T720 GSM Phone - -usb:v22B8p2822* - ID_PRODUCT_FROM_DATABASE=V.120e GSM Phone - -usb:v22B8p2823* - ID_PRODUCT_FROM_DATABASE=Flash Interface - -usb:v22B8p2A01* - ID_PRODUCT_FROM_DATABASE=MSM6050 chipset - -usb:v22B8p2A02* - ID_PRODUCT_FROM_DATABASE=CDMA modem - -usb:v22B8p2A03* - ID_PRODUCT_FROM_DATABASE=MSM6050 chipset flash - -usb:v22B8p2A21* - ID_PRODUCT_FROM_DATABASE=V710 GSM Phone (P2K) - -usb:v22B8p2A22* - ID_PRODUCT_FROM_DATABASE=V710 GSM Phone (AT) - -usb:v22B8p2A23* - ID_PRODUCT_FROM_DATABASE=MSM6100 chipset flash - -usb:v22B8p2A41* - ID_PRODUCT_FROM_DATABASE=MSM6300 chipset - -usb:v22B8p2A42* - ID_PRODUCT_FROM_DATABASE=Usb Modem - -usb:v22B8p2A43* - ID_PRODUCT_FROM_DATABASE=MSM6300 chipset flash - -usb:v22B8p2A61* - ID_PRODUCT_FROM_DATABASE=E815 GSM Phone (P2K) - -usb:v22B8p2A62* - ID_PRODUCT_FROM_DATABASE=E815 GSM Phone (AT) - -usb:v22B8p2A63* - ID_PRODUCT_FROM_DATABASE=MSM6500 chipset flash - -usb:v22B8p2A81* - ID_PRODUCT_FROM_DATABASE=MSM6025 chipset - -usb:v22B8p2A83* - ID_PRODUCT_FROM_DATABASE=MSM6025 chipset flash - -usb:v22B8p2AC1* - ID_PRODUCT_FROM_DATABASE=MSM6100 chipset - -usb:v22B8p2AC3* - ID_PRODUCT_FROM_DATABASE=MSM6100 chipset flash - -usb:v22B8p2D78* - ID_PRODUCT_FROM_DATABASE=XT300[SPICE] - -usb:v22B8p3001* - ID_PRODUCT_FROM_DATABASE=A835/E1000 GSM Phone (P2K) - -usb:v22B8p3002* - ID_PRODUCT_FROM_DATABASE=A835/E1000 GSM Phone (AT) - -usb:v22B8p3801* - ID_PRODUCT_FROM_DATABASE=C350L/C450 (P2K) - -usb:v22B8p3802* - ID_PRODUCT_FROM_DATABASE=C330/C350L/C450/EZX GSM Phone (AT) - -usb:v22B8p3803* - ID_PRODUCT_FROM_DATABASE=Neptune LT chipset flash - -usb:v22B8p4001* - ID_PRODUCT_FROM_DATABASE=OMAP 1.0 chipset - -usb:v22B8p4002* - ID_PRODUCT_FROM_DATABASE=A920/A925 UMTS Phone - -usb:v22B8p4003* - ID_PRODUCT_FROM_DATABASE=OMAP 1.0 chipset flash - -usb:v22B8p4008* - ID_PRODUCT_FROM_DATABASE=OMAP 1.0 chipset RDL - -usb:v22B8p41D6* - ID_PRODUCT_FROM_DATABASE=Droid X (Windows media mode) - -usb:v22B8p41D9* - ID_PRODUCT_FROM_DATABASE=Droid/Milestone - -usb:v22B8p41DB* - ID_PRODUCT_FROM_DATABASE=Droid/Milestone (Debug mode) - -usb:v22B8p41DE* - ID_PRODUCT_FROM_DATABASE=Droid X (PC mode) - -usb:v22B8p4204* - ID_PRODUCT_FROM_DATABASE=MPx200 Smartphone - -usb:v22B8p4214* - ID_PRODUCT_FROM_DATABASE=MPc GSM - -usb:v22B8p4224* - ID_PRODUCT_FROM_DATABASE=MPx220 Smartphone - -usb:v22B8p4234* - ID_PRODUCT_FROM_DATABASE=MPc CDMA - -usb:v22B8p4244* - ID_PRODUCT_FROM_DATABASE=MPx100 Smartphone - -usb:v22B8p4285* - ID_PRODUCT_FROM_DATABASE=Droid X (Mass storage) - -usb:v22B8p4801* - ID_PRODUCT_FROM_DATABASE=Neptune LTS chipset - -usb:v22B8p4803* - ID_PRODUCT_FROM_DATABASE=Neptune LTS chipset flash - -usb:v22B8p4810* - ID_PRODUCT_FROM_DATABASE=Triplet GSM Phone (storage) - -usb:v22B8p4901* - ID_PRODUCT_FROM_DATABASE=Triplet GSM Phone (P2K) - -usb:v22B8p4902* - ID_PRODUCT_FROM_DATABASE=Triplet GSM Phone (AT) - -usb:v22B8p4903* - ID_PRODUCT_FROM_DATABASE=Neptune LTE chipset flash - -usb:v22B8p4A01* - ID_PRODUCT_FROM_DATABASE=Neptune LTX chipset - -usb:v22B8p4A03* - ID_PRODUCT_FROM_DATABASE=Neptune LTX chipset flash - -usb:v22B8p4A32* - ID_PRODUCT_FROM_DATABASE=L6-imode Phone - -usb:v22B8p5801* - ID_PRODUCT_FROM_DATABASE=Neptune ULS chipset - -usb:v22B8p5803* - ID_PRODUCT_FROM_DATABASE=Neptune ULS chipset flash - -usb:v22B8p5901* - ID_PRODUCT_FROM_DATABASE=Neptune VLT chipset - -usb:v22B8p5903* - ID_PRODUCT_FROM_DATABASE=Neptune VLT chipset flash - -usb:v22B8p6001* - ID_PRODUCT_FROM_DATABASE=Dalhart EZX - -usb:v22B8p6003* - ID_PRODUCT_FROM_DATABASE=Dalhart flash - -usb:v22B8p6004* - ID_PRODUCT_FROM_DATABASE=EZX GSM Phone (CDC Net) - -usb:v22B8p6006* - ID_PRODUCT_FROM_DATABASE=MOTOROKR E6 - -usb:v22B8p6008* - ID_PRODUCT_FROM_DATABASE=Dalhart RDL - -usb:v22B8p6009* - ID_PRODUCT_FROM_DATABASE=EZX GSM Phone (P2K) - -usb:v22B8p600A* - ID_PRODUCT_FROM_DATABASE=Dalhart EZX config 17 - -usb:v22B8p600B* - ID_PRODUCT_FROM_DATABASE=Dalhart EZX config 18 - -usb:v22B8p600C* - ID_PRODUCT_FROM_DATABASE=EZX GSM Phone (USBLAN) - -usb:v22B8p6021* - ID_PRODUCT_FROM_DATABASE=JUIX chipset - -usb:v22B8p6023* - ID_PRODUCT_FROM_DATABASE=JUIX chipset flash - -usb:v22B8p6026* - ID_PRODUCT_FROM_DATABASE=Flash RAM Downloader/miniOS - -usb:v22B8p6027* - ID_PRODUCT_FROM_DATABASE=USBLAN - -usb:v22B8p604C* - ID_PRODUCT_FROM_DATABASE=EZX GSM Phone (Storage) - -usb:v22B8p6101* - ID_PRODUCT_FROM_DATABASE=Talon integrated chipset - -usb:v22B8p6401* - ID_PRODUCT_FROM_DATABASE=Argon chipset - -usb:v22B8p6403* - ID_PRODUCT_FROM_DATABASE=Argon chipset flash - -usb:v22B8p6415* - ID_PRODUCT_FROM_DATABASE=ROKR Z6 (MTP mode) - -usb:v22B8p6604* - ID_PRODUCT_FROM_DATABASE=Washington CDMA Phone - -usb:v22B8p6631* - ID_PRODUCT_FROM_DATABASE=CDC Modem - -usb:v22B8p7001* - ID_PRODUCT_FROM_DATABASE=Q Smartphone - -usb:v22B8pFE01* - ID_PRODUCT_FROM_DATABASE=StarTAC III MS900 - -usb:v22B9* - ID_VENDOR_FROM_DATABASE=eTurboTouch Technology, Inc. - -usb:v22B9p0006* - ID_PRODUCT_FROM_DATABASE=Touch Screen - -usb:v22BA* - ID_VENDOR_FROM_DATABASE=Technology Innovation Holdings, Ltd - -usb:v2304* - ID_VENDOR_FROM_DATABASE=Pinnacle Systems, Inc. - -usb:v2304p0109* - ID_PRODUCT_FROM_DATABASE=Studio PCTV USB (SECAM) - -usb:v2304p0110* - ID_PRODUCT_FROM_DATABASE=Studio PCTV USB (PAL) - -usb:v2304p0111* - ID_PRODUCT_FROM_DATABASE=Miro PCTV USB - -usb:v2304p0112* - ID_PRODUCT_FROM_DATABASE=Studio PCTV USB (NTSC) with FM radio - -usb:v2304p0201* - ID_PRODUCT_FROM_DATABASE=Systems MovieBox Device - -usb:v2304p0204* - ID_PRODUCT_FROM_DATABASE=MovieBox USB_B - -usb:v2304p0205* - ID_PRODUCT_FROM_DATABASE=DVC 150B - -usb:v2304p0206* - ID_PRODUCT_FROM_DATABASE=Systems MovieBox Deluxe Device - -usb:v2304p0207* - ID_PRODUCT_FROM_DATABASE=Dazzle DVC90 Video Device - -usb:v2304p0208* - ID_PRODUCT_FROM_DATABASE=Studio PCTV USB2 - -usb:v2304p020E* - ID_PRODUCT_FROM_DATABASE=PCTV 200e - -usb:v2304p020F* - ID_PRODUCT_FROM_DATABASE=PCTV 400e BDA Device - -usb:v2304p0210* - ID_PRODUCT_FROM_DATABASE=Studio PCTV USB (PAL) with FM radio - -usb:v2304p0212* - ID_PRODUCT_FROM_DATABASE=Studio PCTV USB (NTSC) - -usb:v2304p0213* - ID_PRODUCT_FROM_DATABASE=500-USB Device - -usb:v2304p0214* - ID_PRODUCT_FROM_DATABASE=Studio PCTV USB (PAL) with FM radio - -usb:v2304p0216* - ID_PRODUCT_FROM_DATABASE=PCTV 60e - -usb:v2304p0219* - ID_PRODUCT_FROM_DATABASE=PCTV 260e - -usb:v2304p021A* - ID_PRODUCT_FROM_DATABASE=Dazzle DVC100 Audio Device - -usb:v2304p021B* - ID_PRODUCT_FROM_DATABASE=Dazzle DVC130/DVC170 - -usb:v2304p021D* - ID_PRODUCT_FROM_DATABASE=Dazzle DVC130 - -usb:v2304p021E* - ID_PRODUCT_FROM_DATABASE=Dazzle DVC170 - -usb:v2304p021F* - ID_PRODUCT_FROM_DATABASE=PCTV Sat HDTV Pro BDA Device - -usb:v2304p0222* - ID_PRODUCT_FROM_DATABASE=PCTV Sat Pro BDA Device - -usb:v2304p0223* - ID_PRODUCT_FROM_DATABASE=DazzleTV Sat BDA Device - -usb:v2304p0225* - ID_PRODUCT_FROM_DATABASE=Remote Kit Infrared Transceiver - -usb:v2304p0226* - ID_PRODUCT_FROM_DATABASE=PCTV 330e - -usb:v2304p0227* - ID_PRODUCT_FROM_DATABASE=PCTV for Mac, HD Stick - -usb:v2304p0228* - ID_PRODUCT_FROM_DATABASE=PCTV DVB-T Flash Stick - -usb:v2304p0229* - ID_PRODUCT_FROM_DATABASE=PCTV Dual DVB-T 2001e - -usb:v2304p022A* - ID_PRODUCT_FROM_DATABASE=PCTV 160e - -usb:v2304p022B* - ID_PRODUCT_FROM_DATABASE=PCTV 71e [Afatech AF9015] - -usb:v2304p0232* - ID_PRODUCT_FROM_DATABASE=PCTV 170e - -usb:v2304p0236* - ID_PRODUCT_FROM_DATABASE=PCTV 72e [DiBcom DiB7000PC] - -usb:v2304p0237* - ID_PRODUCT_FROM_DATABASE=PCTV 73e [DiBcom DiB7000PC] - -usb:v2304p023A* - ID_PRODUCT_FROM_DATABASE=PCTV 801e - -usb:v2304p023B* - ID_PRODUCT_FROM_DATABASE=PCTV 801e SE - -usb:v2304p023D* - ID_PRODUCT_FROM_DATABASE=PCTV 340e - -usb:v2304p023E* - ID_PRODUCT_FROM_DATABASE=PCTV 340e SE - -usb:v2304p0300* - ID_PRODUCT_FROM_DATABASE=Studio Linx Video input cable (NTSC) - -usb:v2304p0301* - ID_PRODUCT_FROM_DATABASE=Studio Linx Video input cable (PAL) - -usb:v2304p0302* - ID_PRODUCT_FROM_DATABASE=Dazzle DVC120 - -usb:v2304p0419* - ID_PRODUCT_FROM_DATABASE=PCTV Bungee USB (PAL) with FM radio - -usb:v2304p061D* - ID_PRODUCT_FROM_DATABASE=PCTV Deluxe (NTSC) Device - -usb:v2304p061E* - ID_PRODUCT_FROM_DATABASE=PCTV Deluxe (PAL) Device - -usb:v2318* - ID_VENDOR_FROM_DATABASE=Shining Technologies, Inc. [hex] - -usb:v2318p0011* - ID_PRODUCT_FROM_DATABASE=CitiDISK Jr. IDE Enclosure - -usb:v2341* - ID_VENDOR_FROM_DATABASE=Arduino SA - -usb:v2341p0001* - ID_PRODUCT_FROM_DATABASE=Uno (CDC ACM) - -usb:v2341p0010* - ID_PRODUCT_FROM_DATABASE=Mega 2560 (CDC ACM) - -usb:v2341p003B* - ID_PRODUCT_FROM_DATABASE=Serial Adapter (CDC ACM) - -usb:v2341p003F* - ID_PRODUCT_FROM_DATABASE=Mega ADK (CDC ACM) - -usb:v2341p0042* - ID_PRODUCT_FROM_DATABASE=Mega 2560 R3 (CDC ACM) - -usb:v2341p0043* - ID_PRODUCT_FROM_DATABASE=Uno R3 (CDC ACM) - -usb:v2341p0044* - ID_PRODUCT_FROM_DATABASE=Mega ADK R3 (CDC ACM) - -usb:v2341p0045* - ID_PRODUCT_FROM_DATABASE=Serial R3 (CDC ACM) - -usb:v2341p8036* - ID_PRODUCT_FROM_DATABASE=Leonardo (CDC ACM, HID) - -usb:v2373* - ID_VENDOR_FROM_DATABASE=Pumatronix Ltda - -usb:v2373p0001* - ID_PRODUCT_FROM_DATABASE=5 MegaPixel Digital Still Camera [DSC5M] - -usb:v2375* - ID_VENDOR_FROM_DATABASE=Digit@lway, Inc. - -usb:v2375p0001* - ID_PRODUCT_FROM_DATABASE=Digital Audio Player - -usb:v2406* - ID_VENDOR_FROM_DATABASE=SANHO Digital Electronics Co., Ltd. - -usb:v2406p6688* - ID_PRODUCT_FROM_DATABASE=PD7X Portable Storage - -usb:v2443* - ID_VENDOR_FROM_DATABASE=Aessent Technology Ltd - -usb:v2443p00DC* - ID_PRODUCT_FROM_DATABASE=aes220 FPGA Mini-Module - -usb:v2478* - ID_VENDOR_FROM_DATABASE=Tripp-Lite - -usb:v2478p2008* - ID_PRODUCT_FROM_DATABASE=U209-000-R Serial Port - -usb:v2632* - ID_VENDOR_FROM_DATABASE=TwinMOS - -usb:v2632p3209* - ID_PRODUCT_FROM_DATABASE=7-in-1 Card Reader - -usb:v2650* - ID_VENDOR_FROM_DATABASE=Electronics For Imaging, Inc. [hex] - -usb:v2659* - ID_VENDOR_FROM_DATABASE=Sundtek - -usb:v2659p1101* - ID_PRODUCT_FROM_DATABASE=TNT DVB-T/DAB/DAB+/FM - -usb:v2659p1201* - ID_PRODUCT_FROM_DATABASE=FM Transmitter/Receiver - -usb:v2659p1202* - ID_PRODUCT_FROM_DATABASE=MediaTV Analog/FM/DVB-T - -usb:v2659p1203* - ID_PRODUCT_FROM_DATABASE=MediaTV Analog/FM/DVB-T MiniPCIe - -usb:v2659p1204* - ID_PRODUCT_FROM_DATABASE=MediaTV Analog/FM/ATSC - -usb:v2659p1205* - ID_PRODUCT_FROM_DATABASE=SkyTV Ultimate V - -usb:v2659p1206* - ID_PRODUCT_FROM_DATABASE=MediaTV DVB-T MiniPCIe - -usb:v2659p1207* - ID_PRODUCT_FROM_DATABASE=Sundtek HD Capture - -usb:v2659p1208* - ID_PRODUCT_FROM_DATABASE=Sundtek SkyTV Ultimate III - -usb:v2659p1209* - ID_PRODUCT_FROM_DATABASE=MediaTV Analog/FM/ATSC MiniPCIe - -usb:v2659p1210* - ID_PRODUCT_FROM_DATABASE=MediaTV Pro III (EU) - -usb:v2659p1211* - ID_PRODUCT_FROM_DATABASE=MediaTV Pro III (US) - -usb:v2659p1212* - ID_PRODUCT_FROM_DATABASE=MediaTV Pro III MiniPCIe (EU) - -usb:v2659p1213* - ID_PRODUCT_FROM_DATABASE=MediaTV Pro III MiniPCIe (US) - -usb:v2730* - ID_VENDOR_FROM_DATABASE=Citizen - -usb:v2730p200F* - ID_PRODUCT_FROM_DATABASE=CT-S310 Label printer - -usb:v2735* - ID_VENDOR_FROM_DATABASE=DigitalWay - -usb:v2735p0003* - ID_PRODUCT_FROM_DATABASE=MPIO HS100 - -usb:v2735p1001* - ID_PRODUCT_FROM_DATABASE=MPIO FY200 - -usb:v2735p1002* - ID_PRODUCT_FROM_DATABASE=MPIO FL100 - -usb:v2735p1003* - ID_PRODUCT_FROM_DATABASE=MPIO FD100 - -usb:v2735p1004* - ID_PRODUCT_FROM_DATABASE=MPIO HD200 - -usb:v2735p1005* - ID_PRODUCT_FROM_DATABASE=MPIO HD300 - -usb:v2735p1006* - ID_PRODUCT_FROM_DATABASE=MPIO FG100 - -usb:v2735p1007* - ID_PRODUCT_FROM_DATABASE=MPIO FG130 - -usb:v2735p1008* - ID_PRODUCT_FROM_DATABASE=MPIO FY300 - -usb:v2735p1009* - ID_PRODUCT_FROM_DATABASE=MPIO FY400 - -usb:v2735p100A* - ID_PRODUCT_FROM_DATABASE=MPIO FL300 - -usb:v2735p100B* - ID_PRODUCT_FROM_DATABASE=MPIO HS200 - -usb:v2735p100C* - ID_PRODUCT_FROM_DATABASE=MPIO FL350 - -usb:v2735p100D* - ID_PRODUCT_FROM_DATABASE=MPIO FY500 - -usb:v2735p100E* - ID_PRODUCT_FROM_DATABASE=MPIO FY500 - -usb:v2735p100F* - ID_PRODUCT_FROM_DATABASE=MPIO FY600 - -usb:v2735p1012* - ID_PRODUCT_FROM_DATABASE=MPIO FL400 - -usb:v2735p1013* - ID_PRODUCT_FROM_DATABASE=MPIO HD400 - -usb:v2735p1014* - ID_PRODUCT_FROM_DATABASE=MPIO HD400 - -usb:v2735p1016* - ID_PRODUCT_FROM_DATABASE=MPIO FY700 - -usb:v2735p1017* - ID_PRODUCT_FROM_DATABASE=MPIO FY700 - -usb:v2735p1018* - ID_PRODUCT_FROM_DATABASE=MPIO FY800 - -usb:v2735p1019* - ID_PRODUCT_FROM_DATABASE=MPIO FY800 - -usb:v2735p101A* - ID_PRODUCT_FROM_DATABASE=MPIO FY900 - -usb:v2735p101B* - ID_PRODUCT_FROM_DATABASE=MPIO FY900 - -usb:v2735p102B* - ID_PRODUCT_FROM_DATABASE=MPIO FL500 - -usb:v2735p102C* - ID_PRODUCT_FROM_DATABASE=MPIO FL500 - -usb:v2735p103F* - ID_PRODUCT_FROM_DATABASE=MPIO FY570 - -usb:v2735p1040* - ID_PRODUCT_FROM_DATABASE=MPIO FY570 - -usb:v2735p1041* - ID_PRODUCT_FROM_DATABASE=MPIO FY670 - -usb:v2735p1042* - ID_PRODUCT_FROM_DATABASE=MPIO FY670 - -usb:v2735p1043* - ID_PRODUCT_FROM_DATABASE=HCT HMD-180A - -usb:v2735p1044* - ID_PRODUCT_FROM_DATABASE=HCT HMD-180A - -usb:v2770* - ID_VENDOR_FROM_DATABASE=NHJ, Ltd - -usb:v2770p0A01* - ID_PRODUCT_FROM_DATABASE=ScanJet 4600 series - -usb:v2770p905C* - ID_PRODUCT_FROM_DATABASE=Che-Ez Snap SNAP-U/Digigr8/Soundstar TDC-35 - -usb:v2770p9060* - ID_PRODUCT_FROM_DATABASE=A130 - -usb:v2770p9120* - ID_PRODUCT_FROM_DATABASE=Che-ez! Snap / iClick Tiny VGA Digital Camera - -usb:v2770p9130* - ID_PRODUCT_FROM_DATABASE=TCG 501 - -usb:v2770p913C* - ID_PRODUCT_FROM_DATABASE=Argus DC-1730 - -usb:v2770p9150* - ID_PRODUCT_FROM_DATABASE=Mini Cam - -usb:v2770p9153* - ID_PRODUCT_FROM_DATABASE=iClick 5X - -usb:v2770p915D* - ID_PRODUCT_FROM_DATABASE=Cyberpix S-210S / Little Tikes My Real Digital Camera - -usb:v2770p930B* - ID_PRODUCT_FROM_DATABASE=CCD Webcam(PC370R) - -usb:v2770p930C* - ID_PRODUCT_FROM_DATABASE=CCD Webcam(PC370R) - -usb:v2821* - ID_VENDOR_FROM_DATABASE=ASUSTek Computer Inc. - -usb:v2821p0161* - ID_PRODUCT_FROM_DATABASE=WL-161 802.11b Wireless Adapter [SiS 162U] - -usb:v2821p160F* - ID_PRODUCT_FROM_DATABASE=WL-160g 802.11g Wireless Adapter [Envara WiND512] - -usb:v2821p3300* - ID_PRODUCT_FROM_DATABASE=WL-140 / Hawking HWU36D 802.11b Wireless Adapter [Intersil PRISM 3] - -usb:v2899* - ID_VENDOR_FROM_DATABASE=Toptronic Industrial Co., Ltd - -usb:v2899p012C* - ID_PRODUCT_FROM_DATABASE=Camera Device - -usb:v2C02* - ID_VENDOR_FROM_DATABASE=Planex Communications - -usb:v2C02p14EA* - ID_PRODUCT_FROM_DATABASE=GW-US11H WLAN - -usb:v2C1A* - ID_VENDOR_FROM_DATABASE=Dolphin Peripherals - -usb:v2C1Ap0000* - ID_PRODUCT_FROM_DATABASE=Wireless Optical Mouse - -usb:v2FB2* - ID_VENDOR_FROM_DATABASE=Fujitsu, Ltd - -usb:v3125* - ID_VENDOR_FROM_DATABASE=Eagletron - -usb:v3125p0001* - ID_PRODUCT_FROM_DATABASE=TrackerPod Camera Stand - -usb:v3176* - ID_VENDOR_FROM_DATABASE=Whanam Electronics Co., Ltd - -usb:v3275* - ID_VENDOR_FROM_DATABASE=VidzMedia Pte Ltd - -usb:v3275p4FB1* - ID_PRODUCT_FROM_DATABASE=MonsterTV P2H - -usb:v3334* - ID_VENDOR_FROM_DATABASE=AEI - -usb:v3334p1701* - ID_PRODUCT_FROM_DATABASE=Fast Ethernet - -usb:v3340* - ID_VENDOR_FROM_DATABASE=Yakumo - -usb:v3340p043A* - ID_PRODUCT_FROM_DATABASE=Mio A701 DigiWalker PPCPhone - -usb:v3340p0E3A* - ID_PRODUCT_FROM_DATABASE=Pocket PC 300 GPS SL / Typhoon MyGuide 3500 - -usb:v3340pA0A3* - ID_PRODUCT_FROM_DATABASE=deltaX 5 BT (D) PDA - -usb:v3504* - ID_VENDOR_FROM_DATABASE=Micro Star - -usb:v3504pF110* - ID_PRODUCT_FROM_DATABASE=Security Key - -usb:v3538* - ID_VENDOR_FROM_DATABASE=Power Quotient International Co., Ltd - -usb:v3538p0001* - ID_PRODUCT_FROM_DATABASE=Travel Flash - -usb:v3538p0015* - ID_PRODUCT_FROM_DATABASE=Mass Storge Device - -usb:v3538p0022* - ID_PRODUCT_FROM_DATABASE=Hi-Speed Mass Storage Device - -usb:v3538p0042* - ID_PRODUCT_FROM_DATABASE=Cool Drive U339 Flash Disk - -usb:v3538p0054* - ID_PRODUCT_FROM_DATABASE=Flash Drive (2GB) - -usb:v3579* - ID_VENDOR_FROM_DATABASE=DIVA - -usb:v3579p6901* - ID_PRODUCT_FROM_DATABASE=Media Reader - -usb:v3636* - ID_VENDOR_FROM_DATABASE=InVibro - -usb:v3838* - ID_VENDOR_FROM_DATABASE=WEM - -usb:v3838p0001* - ID_PRODUCT_FROM_DATABASE=5-in-1 Card Reader - -usb:v3923* - ID_VENDOR_FROM_DATABASE=National Instruments Corp. - -usb:v3923p12C0* - ID_PRODUCT_FROM_DATABASE=DAQPad-6020E - -usb:v3923p12D0* - ID_PRODUCT_FROM_DATABASE=DAQPad-6507 - -usb:v3923p12E0* - ID_PRODUCT_FROM_DATABASE=NI 4350 - -usb:v3923p12F0* - ID_PRODUCT_FROM_DATABASE=NI 5102 - -usb:v3923p1750* - ID_PRODUCT_FROM_DATABASE=DAQPad-6508 - -usb:v3923p17B0* - ID_PRODUCT_FROM_DATABASE=USB-ISA-Bridge - -usb:v3923p1820* - ID_PRODUCT_FROM_DATABASE=DAQPad-6020E (68 pin I/O) - -usb:v3923p1830* - ID_PRODUCT_FROM_DATABASE=DAQPad-6020E (BNC) - -usb:v3923p1F00* - ID_PRODUCT_FROM_DATABASE=DAQPad-6024E - -usb:v3923p1F10* - ID_PRODUCT_FROM_DATABASE=DAQPad-6024E - -usb:v3923p1F20* - ID_PRODUCT_FROM_DATABASE=DAQPad-6025E - -usb:v3923p1F30* - ID_PRODUCT_FROM_DATABASE=DAQPad-6025E - -usb:v3923p1F40* - ID_PRODUCT_FROM_DATABASE=DAQPad-6036E - -usb:v3923p1F50* - ID_PRODUCT_FROM_DATABASE=DAQPad-6036E - -usb:v3923p2F80* - ID_PRODUCT_FROM_DATABASE=DAQPad-6052E - -usb:v3923p2F90* - ID_PRODUCT_FROM_DATABASE=DAQPad-6052E - -usb:v3923p702B* - ID_PRODUCT_FROM_DATABASE=GPIB-USB-B - -usb:v3923p703C* - ID_PRODUCT_FROM_DATABASE=USB-485 RS485 Cable - -usb:v3923p709B* - ID_PRODUCT_FROM_DATABASE=GPIB-USB-HS - -usb:v3923p7254* - ID_PRODUCT_FROM_DATABASE=NI MIO (data acquisition card) firmware updater - -usb:v3923p729E* - ID_PRODUCT_FROM_DATABASE=USB-6251 (OEM) data acquisition card - -usb:v40BB* - ID_VENDOR_FROM_DATABASE=I-O Data - -usb:v40BBp0A09* - ID_PRODUCT_FROM_DATABASE=USB2.0-SCSI Bridge USB2-SC - -usb:v4101* - ID_VENDOR_FROM_DATABASE=i-rocks - -usb:v4101p1301* - ID_PRODUCT_FROM_DATABASE=IR-2510 usb phone - -usb:v4102* - ID_VENDOR_FROM_DATABASE=iRiver, Ltd. - -usb:v4102p1001* - ID_PRODUCT_FROM_DATABASE=iFP-100 series mp3 player - -usb:v4102p1003* - ID_PRODUCT_FROM_DATABASE=iFP-300 series mp3 player - -usb:v4102p1005* - ID_PRODUCT_FROM_DATABASE=iFP-500 series mp3 player - -usb:v4102p1007* - ID_PRODUCT_FROM_DATABASE=iFP-700 series mp3/ogg vorbis player - -usb:v4102p1008* - ID_PRODUCT_FROM_DATABASE=iFP-800 series mp3/ogg vorbis player - -usb:v4102p100A* - ID_PRODUCT_FROM_DATABASE=iFP-1000 series mp3/ogg vorbis player - -usb:v4102p1014* - ID_PRODUCT_FROM_DATABASE=T20 series mp3/ogg vorbis player (ums firmware) - -usb:v4102p1019* - ID_PRODUCT_FROM_DATABASE=T30 - -usb:v4102p1034* - ID_PRODUCT_FROM_DATABASE=T60 - -usb:v4102p1040* - ID_PRODUCT_FROM_DATABASE=M1Player - -usb:v4102p1041* - ID_PRODUCT_FROM_DATABASE=E100 (ums) - -usb:v4102p1101* - ID_PRODUCT_FROM_DATABASE=iFP-100 series mp3 player (ums firmware) - -usb:v4102p1103* - ID_PRODUCT_FROM_DATABASE=iFP-300 series mp3 player (ums firmware) - -usb:v4102p1105* - ID_PRODUCT_FROM_DATABASE=iFP-500 series mp3 player (ums firmware) - -usb:v4102p1113* - ID_PRODUCT_FROM_DATABASE=T10 (alternate) - -usb:v4102p1117* - ID_PRODUCT_FROM_DATABASE=T10 - -usb:v4102p1119* - ID_PRODUCT_FROM_DATABASE=T30 series mp3/ogg/wma player - -usb:v4102p1141* - ID_PRODUCT_FROM_DATABASE=E100 (mtp) - -usb:v4102p2002* - ID_PRODUCT_FROM_DATABASE=H10 6GB - -usb:v4102p2101* - ID_PRODUCT_FROM_DATABASE=H10 20GB (mtp) - -usb:v4102p2102* - ID_PRODUCT_FROM_DATABASE=H10 5GB (mtp) - -usb:v4102p2105* - ID_PRODUCT_FROM_DATABASE=H10 5/6GB (mtp) - -usb:v413C* - ID_VENDOR_FROM_DATABASE=Dell Computer Corp. - -usb:v413Cp0000* - ID_PRODUCT_FROM_DATABASE=DRAC 5 Virtual Keyboard and Mouse - -usb:v413Cp0001* - ID_PRODUCT_FROM_DATABASE=DRAC 5 Virtual Media - -usb:v413Cp0058* - ID_PRODUCT_FROM_DATABASE=Port Replicator - -usb:v413Cp1001* - ID_PRODUCT_FROM_DATABASE=Keyboard Hub - -usb:v413Cp1002* - ID_PRODUCT_FROM_DATABASE=Keyboard Hub - -usb:v413Cp1003* - ID_PRODUCT_FROM_DATABASE=Keyboard Hub - -usb:v413Cp1005* - ID_PRODUCT_FROM_DATABASE=Multimedia Pro Keyboard Hub - -usb:v413Cp2001* - ID_PRODUCT_FROM_DATABASE=Keyboard HID Support - -usb:v413Cp2002* - ID_PRODUCT_FROM_DATABASE=SK-8125 Keyboard - -usb:v413Cp2003* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v413Cp2005* - ID_PRODUCT_FROM_DATABASE=RT7D50 Keyboard - -usb:v413Cp2010* - ID_PRODUCT_FROM_DATABASE=Keyboard - -usb:v413Cp2011* - ID_PRODUCT_FROM_DATABASE=Multimedia Pro Keyboard - -usb:v413Cp2100* - ID_PRODUCT_FROM_DATABASE=SK-3106 Keyboard - -usb:v413Cp2101* - ID_PRODUCT_FROM_DATABASE=SmartCard Reader Keyboard - -usb:v413Cp2105* - ID_PRODUCT_FROM_DATABASE=Model L100 Keyboard - -usb:v413Cp2106* - ID_PRODUCT_FROM_DATABASE=Dell QuietKey Keyboard - -usb:v413Cp2500* - ID_PRODUCT_FROM_DATABASE=DRAC4 Remote Access Card - -usb:v413Cp2513* - ID_PRODUCT_FROM_DATABASE=internal USB Hub of E-Port Replicator - -usb:v413Cp3010* - ID_PRODUCT_FROM_DATABASE=Optical Wheel Mouse - -usb:v413Cp3012* - ID_PRODUCT_FROM_DATABASE=Optical Wheel Mouse - -usb:v413Cp3016* - ID_PRODUCT_FROM_DATABASE=Optical 5-Button Wheel Mouse - -usb:v413Cp3200* - ID_PRODUCT_FROM_DATABASE=Mouse - -usb:v413Cp4001* - ID_PRODUCT_FROM_DATABASE=Axim X5 - -usb:v413Cp4002* - ID_PRODUCT_FROM_DATABASE=Axim X3 - -usb:v413Cp4003* - ID_PRODUCT_FROM_DATABASE=Axim X30 - -usb:v413Cp4004* - ID_PRODUCT_FROM_DATABASE=Axim Sync - -usb:v413Cp4005* - ID_PRODUCT_FROM_DATABASE=Axim Sync - -usb:v413Cp4006* - ID_PRODUCT_FROM_DATABASE=Axim Sync - -usb:v413Cp4007* - ID_PRODUCT_FROM_DATABASE=Axim Sync - -usb:v413Cp4008* - ID_PRODUCT_FROM_DATABASE=Axim Sync - -usb:v413Cp4009* - ID_PRODUCT_FROM_DATABASE=Axim Sync - -usb:v413Cp4011* - ID_PRODUCT_FROM_DATABASE=Axim X51v - -usb:v413Cp5103* - ID_PRODUCT_FROM_DATABASE=AIO Printer A940 - -usb:v413Cp5105* - ID_PRODUCT_FROM_DATABASE=AIO Printer A920 - -usb:v413Cp5107* - ID_PRODUCT_FROM_DATABASE=AIO Printer A960 - -usb:v413Cp5109* - ID_PRODUCT_FROM_DATABASE=Photo AIO Printer 922 - -usb:v413Cp5110* - ID_PRODUCT_FROM_DATABASE=Photo AIO Printer 962 - -usb:v413Cp5111* - ID_PRODUCT_FROM_DATABASE=Photo AIO Printer 942 - -usb:v413Cp5112* - ID_PRODUCT_FROM_DATABASE=Photo AIO Printer 924 - -usb:v413Cp5113* - ID_PRODUCT_FROM_DATABASE=Photo AIO Printer 944 - -usb:v413Cp5114* - ID_PRODUCT_FROM_DATABASE=Photo AIO Printer 964 - -usb:v413Cp5115* - ID_PRODUCT_FROM_DATABASE=Photo AIO Printer 926 - -usb:v413Cp5116* - ID_PRODUCT_FROM_DATABASE=AIO Printer 946 - -usb:v413Cp5117* - ID_PRODUCT_FROM_DATABASE=Photo AIO Printer 966 - -usb:v413Cp5118* - ID_PRODUCT_FROM_DATABASE=AIO 810 - -usb:v413Cp5124* - ID_PRODUCT_FROM_DATABASE=Laser MFP 1815 - -usb:v413Cp5128* - ID_PRODUCT_FROM_DATABASE=Photo AIO 928 - -usb:v413Cp5200* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v413Cp5202* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v413Cp5203* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v413Cp5210* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v413Cp5211* - ID_PRODUCT_FROM_DATABASE=1110 Laser Printer - -usb:v413Cp5220* - ID_PRODUCT_FROM_DATABASE=Laser MFP 1600n - -usb:v413Cp5225* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v413Cp5226* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v413Cp5300* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v413Cp5400* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v413Cp5401* - ID_PRODUCT_FROM_DATABASE=Laser Printer - -usb:v413Cp5513* - ID_PRODUCT_FROM_DATABASE=WLA3310 Wireless Adapter [Intersil ISL3887] - -usb:v413Cp5601* - ID_PRODUCT_FROM_DATABASE=Laser Printer 3100cn - -usb:v413Cp5602* - ID_PRODUCT_FROM_DATABASE=Laser Printer 3000cn - -usb:v413Cp5631* - ID_PRODUCT_FROM_DATABASE=Laser Printer 5100cn - -usb:v413Cp5905* - ID_PRODUCT_FROM_DATABASE=Printing Support - -usb:v413Cp8000* - ID_PRODUCT_FROM_DATABASE=BC02 Bluetooth Adapter - -usb:v413Cp8010* - ID_PRODUCT_FROM_DATABASE=TrueMobile Bluetooth Module in - -usb:v413Cp8100* - ID_PRODUCT_FROM_DATABASE=TrueMobile 1180 802.11b Adapter [Intersil PRISM 3] - -usb:v413Cp8102* - ID_PRODUCT_FROM_DATABASE=TrueMobile 1300 802.11g Wireless Adapter [Intersil ISL3880] - -usb:v413Cp8103* - ID_PRODUCT_FROM_DATABASE=Wireless 350 Bluetooth - -usb:v413Cp8104* - ID_PRODUCT_FROM_DATABASE=Wireless 1450 Dual-band (802.11a/b/g) Adapter [Intersil ISL3887] - -usb:v413Cp8105* - ID_PRODUCT_FROM_DATABASE=U2 in HID - Driver - -usb:v413Cp8106* - ID_PRODUCT_FROM_DATABASE=Wireless 350 Bluetooth Internal Card in - -usb:v413Cp8110* - ID_PRODUCT_FROM_DATABASE=Wireless 3xx Bluetooth Internal Card - -usb:v413Cp8111* - ID_PRODUCT_FROM_DATABASE=Wireless 3xx Bluetooth Internal Card in - -usb:v413Cp8114* - ID_PRODUCT_FROM_DATABASE=Wireless 5700 Mobile Broadband (CDMA EV-DO) Minicard Modem - -usb:v413Cp8115* - ID_PRODUCT_FROM_DATABASE=Wireless 5500 Mobile Broadband (3G HSDPA) Minicard Modem - -usb:v413Cp8116* - ID_PRODUCT_FROM_DATABASE=Wireless 5505 Mobile Broadband (3G HSDPA) Minicard Modem - -usb:v413Cp8117* - ID_PRODUCT_FROM_DATABASE=Wireless 5700 Mobile Broadband (CDMA EV-DO) Expresscard Modem - -usb:v413Cp8118* - ID_PRODUCT_FROM_DATABASE=Wireless 5510 Mobile Broadband (3G HSDPA) Expresscard Status Port - -usb:v413Cp8120* - ID_PRODUCT_FROM_DATABASE=Bluetooth adapter - -usb:v413Cp8121* - ID_PRODUCT_FROM_DATABASE=Eastfold in HID - -usb:v413Cp8122* - ID_PRODUCT_FROM_DATABASE=Eastfold in DFU - -usb:v413Cp8123* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v413Cp8124* - ID_PRODUCT_FROM_DATABASE=eHome Infrared Receiver - -usb:v413Cp8126* - ID_PRODUCT_FROM_DATABASE=Wireless 355 Bluetooth - -usb:v413Cp8127* - ID_PRODUCT_FROM_DATABASE=Wireless 355 Module with Bluetooth 2.0 + EDR Technology. - -usb:v413Cp8128* - ID_PRODUCT_FROM_DATABASE=Wireless 5700-Sprint Mobile Broadband (CDMA EV-DO) Mini-Card Status Port - -usb:v413Cp8129* - ID_PRODUCT_FROM_DATABASE=Wireless 5700-Telus Mobile Broadband (CDMA EV-DO) Mini-Card Status Port - -usb:v413Cp8131* - ID_PRODUCT_FROM_DATABASE=Wireless 360 Bluetooth 2.0 + EDR module. - -usb:v413Cp8133* - ID_PRODUCT_FROM_DATABASE=Wireless 5720 VZW Mobile Broadband (EVDO Rev-A) Minicard GPS Port - -usb:v413Cp8134* - ID_PRODUCT_FROM_DATABASE=Wireless 5720 Sprint Mobile Broadband (EVDO Rev-A) Minicard Status Port - -usb:v413Cp8135* - ID_PRODUCT_FROM_DATABASE=Wireless 5720 TELUS Mobile Broadband (EVDO Rev-A) Minicard Diagnostics Port - -usb:v413Cp8136* - ID_PRODUCT_FROM_DATABASE=Wireless 5520 Cingular Mobile Broadband (3G HSDPA) Minicard Diagnostics Port - -usb:v413Cp8137* - ID_PRODUCT_FROM_DATABASE=Wireless 5520 Voda L Mobile Broadband (3G HSDPA) Minicard Status Port - -usb:v413Cp8138* - ID_PRODUCT_FROM_DATABASE=Wireless 5520 Voda I Mobile Broadband (3G HSDPA) Minicard EAP-SIM Port - -usb:v413Cp8140* - ID_PRODUCT_FROM_DATABASE=Wireless 360 Bluetooth - -usb:v413Cp8142* - ID_PRODUCT_FROM_DATABASE=Mobile 360 in DFU - -usb:v413Cp8147* - ID_PRODUCT_FROM_DATABASE=F3507g Mobile Broadband Module - -usb:v413Cp8156* - ID_PRODUCT_FROM_DATABASE=Wireless 370 Bluetooth Mini-card - -usb:v413Cp8157* - ID_PRODUCT_FROM_DATABASE=Integrated Keyboard - -usb:v413Cp8158* - ID_PRODUCT_FROM_DATABASE=Integrated Touchpad / Trackstick - -usb:v413Cp8160* - ID_PRODUCT_FROM_DATABASE=Wireless 365 Bluetooth - -usb:v413Cp8161* - ID_PRODUCT_FROM_DATABASE=Integrated Keyboard - -usb:v413Cp8162* - ID_PRODUCT_FROM_DATABASE=Integrated Touchpad [Synaptics] - -usb:v413Cp8171* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem (QDL mode) - -usb:v413Cp8172* - ID_PRODUCT_FROM_DATABASE=Gobi Wireless Modem - -usb:v413Cp8183* - ID_PRODUCT_FROM_DATABASE=F3607gw Mobile Broadband Module - -usb:v413Cp8184* - ID_PRODUCT_FROM_DATABASE=F3607gw v2 Mobile Broadband Module - -usb:v413Cp8185* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem (QDL mode) - -usb:v413Cp8186* - ID_PRODUCT_FROM_DATABASE=Gobi 2000 Wireless Modem - -usb:v413Cp8187* - ID_PRODUCT_FROM_DATABASE=DW375 Bluetooth Module - -usb:v413Cp8501* - ID_PRODUCT_FROM_DATABASE=Bluetooth Adapter - -usb:v413Cp9500* - ID_PRODUCT_FROM_DATABASE=USB CP210x UART Bridge Controller [DW700] - -usb:v413CpA001* - ID_PRODUCT_FROM_DATABASE=Hub - -usb:v413CpA005* - ID_PRODUCT_FROM_DATABASE=Internal 2.0 Hub - -usb:v413CpA700* - ID_PRODUCT_FROM_DATABASE=Hub (in 1905FP LCD Monitor) - -usb:v4146* - ID_VENDOR_FROM_DATABASE=USBest Technology - -usb:v4146p9281* - ID_PRODUCT_FROM_DATABASE=Iomega Micro Mini 128MB Flash Drive - -usb:v4146pBA01* - ID_PRODUCT_FROM_DATABASE=Intuix Flash Drive - -usb:v4242* - ID_VENDOR_FROM_DATABASE=USB Design by Example - -usb:v4242p4201* - ID_PRODUCT_FROM_DATABASE=Buttons and Lights HID device - -usb:v4242p4220* - ID_PRODUCT_FROM_DATABASE=Echo 1 Camera - -usb:v4317* - ID_VENDOR_FROM_DATABASE=Broadcom Corp. - -usb:v4317p0700* - ID_PRODUCT_FROM_DATABASE=U.S. Robotics USR5426 802.11g Adapter - -usb:v4317p0701* - ID_PRODUCT_FROM_DATABASE=U.S. Robotics USR5425 Wireless MAXg Adapter - -usb:v4317p0711* - ID_PRODUCT_FROM_DATABASE=Belkin F5D7051 v3000 802.11g - -usb:v4317p0720* - ID_PRODUCT_FROM_DATABASE=Dynex DX-BUSB - -usb:v4348* - ID_VENDOR_FROM_DATABASE=WinChipHead - -usb:v4348p5523* - ID_PRODUCT_FROM_DATABASE=USB->RS 232 adapter with Prolifec PL 2303 chipset - -usb:v4348p5537* - ID_PRODUCT_FROM_DATABASE=13.56Mhz RFID Card Reader and Writer - -usb:v4348p5584* - ID_PRODUCT_FROM_DATABASE=CH34x printer adapter cable - -usb:v4572* - ID_VENDOR_FROM_DATABASE=Shuttle, Inc. - -usb:v4572p4572* - ID_PRODUCT_FROM_DATABASE=Shuttle PN31 Remote - -usb:v4586* - ID_VENDOR_FROM_DATABASE=Panram - -usb:v4586p1026* - ID_PRODUCT_FROM_DATABASE=Crystal Bar Flash Drive - -usb:v4670* - ID_VENDOR_FROM_DATABASE=EMS Production - -usb:v4670p9394* - ID_PRODUCT_FROM_DATABASE=Game Cube USB Memory Adaptor 64M - -usb:v4752* - ID_VENDOR_FROM_DATABASE=Miditech - -usb:v4752p0011* - ID_PRODUCT_FROM_DATABASE=Midistart-2 - -usb:v4757* - ID_VENDOR_FROM_DATABASE=GW Instek - -usb:v4757p2009* - ID_PRODUCT_FROM_DATABASE=PEL-2000 Series Electronic Load (CDC) - -usb:v4757p2010* - ID_PRODUCT_FROM_DATABASE=PEL-2000 Series Electronic Load (CDC) - -usb:v4766* - ID_VENDOR_FROM_DATABASE=Aceeca - -usb:v4766p0001* - ID_PRODUCT_FROM_DATABASE=MEZ1000 RDA - -usb:v4855* - ID_VENDOR_FROM_DATABASE=Memorex - -usb:v4855p7288* - ID_PRODUCT_FROM_DATABASE=Ultra Traveldrive 160G 2.5" HDD - -usb:v4971* - ID_VENDOR_FROM_DATABASE=SimpleTech - -usb:v4971pCB01* - ID_PRODUCT_FROM_DATABASE=SP-U25/120G - -usb:v4971pCE17* - ID_PRODUCT_FROM_DATABASE=1TB SimpleDrive II USB External Hard Drive - -usb:v4D46* - ID_VENDOR_FROM_DATABASE=Musical Fidelity - -usb:v4D46p0001* - ID_PRODUCT_FROM_DATABASE=V-Link - -usb:v4D46p0002* - ID_PRODUCT_FROM_DATABASE=V-DAC II - -usb:v5032* - ID_VENDOR_FROM_DATABASE=Grandtec - -usb:v5032p0BB8* - ID_PRODUCT_FROM_DATABASE=Grandtec USB1.1 DVB-T (cold) - -usb:v5032p0BB9* - ID_PRODUCT_FROM_DATABASE=Grandtec USB1.1 DVB-T (warm) - -usb:v5032p0FA0* - ID_PRODUCT_FROM_DATABASE=Grandtec USB1.1 DVB-T (cold) - -usb:v5032p0FA1* - ID_PRODUCT_FROM_DATABASE=Grandtec USB1.1 DVB-T (warm) - -usb:v5041* - ID_VENDOR_FROM_DATABASE=Linksys (?) - -usb:v5041p2234* - ID_PRODUCT_FROM_DATABASE=WUSB54G v1 802.11g Adapter [Intersil ISL3886] - -usb:v5041p2235* - ID_PRODUCT_FROM_DATABASE=WUSB54GP v1 802.11g Adapter [Intersil ISL3886] - -usb:v50C2* - ID_VENDOR_FROM_DATABASE=Averatec (?) - -usb:v50C2p4013* - ID_PRODUCT_FROM_DATABASE=WLAN Adapter - -usb:v5173* - ID_VENDOR_FROM_DATABASE=Sweex - -usb:v5173p1809* - ID_PRODUCT_FROM_DATABASE=ZD1211 - -usb:v5219* - ID_VENDOR_FROM_DATABASE=I-Tetra - -usb:v5219p1001* - ID_PRODUCT_FROM_DATABASE=Cetus CDC Device - -usb:v5345* - ID_VENDOR_FROM_DATABASE=Owon - -usb:v5345p1234* - ID_PRODUCT_FROM_DATABASE=PDS6062T Oscilloscope - -usb:v544D* - ID_VENDOR_FROM_DATABASE=Transmeta Corp. - -usb:v5543* - ID_VENDOR_FROM_DATABASE=UC-Logic Technology Corp. - -usb:v5543p0002* - ID_PRODUCT_FROM_DATABASE=SuperPen WP3325U Tablet - -usb:v5543p0003* - ID_PRODUCT_FROM_DATABASE=Tablet WP4030U - -usb:v5543p0004* - ID_PRODUCT_FROM_DATABASE=Tablet WP5540U - -usb:v5543p0005* - ID_PRODUCT_FROM_DATABASE=Tablet WP8060U - -usb:v5543p0041* - ID_PRODUCT_FROM_DATABASE=Genius PenSketch 6x8 Tablet - -usb:v5543p0042* - ID_PRODUCT_FROM_DATABASE=Tablet PF1209 - -usb:v5543p0064* - ID_PRODUCT_FROM_DATABASE=Aiptek HyperPen 10000U - -usb:v5555* - ID_VENDOR_FROM_DATABASE=Epiphan Systems Inc. - -usb:v5555p1110* - ID_PRODUCT_FROM_DATABASE=VGA2USB - -usb:v5555p1120* - ID_PRODUCT_FROM_DATABASE=KVM2USB - -usb:v5555p2222* - ID_PRODUCT_FROM_DATABASE=DVI2USB - -usb:v5555p3333* - ID_PRODUCT_FROM_DATABASE=VGA2USB Pro - -usb:v5555p3337* - ID_PRODUCT_FROM_DATABASE=KVM2USB Pro - -usb:v5555p3340* - ID_PRODUCT_FROM_DATABASE=VGA2USB LR - -usb:v5555p3344* - ID_PRODUCT_FROM_DATABASE=KVM2USB LR - -usb:v5555p3411* - ID_PRODUCT_FROM_DATABASE=DVI2USB Solo - -usb:v5555p3422* - ID_PRODUCT_FROM_DATABASE=DVI2USB Duo - -usb:v55AA* - ID_VENDOR_FROM_DATABASE=OnSpec Electronic, Inc. - -usb:v55AAp0015* - ID_PRODUCT_FROM_DATABASE=Hard Drive - -usb:v55AAp0102* - ID_PRODUCT_FROM_DATABASE=SuperDisk - -usb:v55AAp0103* - ID_PRODUCT_FROM_DATABASE=IDE Hard Drive - -usb:v55AAp0201* - ID_PRODUCT_FROM_DATABASE=DDI to Reader-19 - -usb:v55AAp1234* - ID_PRODUCT_FROM_DATABASE=ATAPI Bridge - -usb:v55AApA103* - ID_PRODUCT_FROM_DATABASE=Sandisk SDDR-55 SmartMedia Card Reader - -usb:v55AApB000* - ID_PRODUCT_FROM_DATABASE=USB to CompactFlash Card Reader - -usb:v55AApB004* - ID_PRODUCT_FROM_DATABASE=OnSpec MMC/SD Reader/Writer - -usb:v55AApB00B* - ID_PRODUCT_FROM_DATABASE=USB to Memory Stick Card Reader - -usb:v55AApB00C* - ID_PRODUCT_FROM_DATABASE=USB to SmartMedia Card Reader - -usb:v55AApB012* - ID_PRODUCT_FROM_DATABASE=Mitsumi FA402M 8-in-2 Card Reader - -usb:v55AApB200* - ID_PRODUCT_FROM_DATABASE=Compact Flash Reader - -usb:v55AApB204* - ID_PRODUCT_FROM_DATABASE=MMC/ SD Reader - -usb:v55AApB207* - ID_PRODUCT_FROM_DATABASE=Memory Stick Reader - -usb:v5656* - ID_VENDOR_FROM_DATABASE=Uni-Trend Group Limited - -usb:v5656p0832* - ID_PRODUCT_FROM_DATABASE=UT2000/UT3000 Digital Storage Oscilloscope - -usb:v595A* - ID_VENDOR_FROM_DATABASE=IRTOUCHSYSTEMS Co. Ltd. - -usb:v595Ap0001* - ID_PRODUCT_FROM_DATABASE=Touchscreen - -usb:v5986* - ID_VENDOR_FROM_DATABASE=Acer, Inc - -usb:v5986p0100* - ID_PRODUCT_FROM_DATABASE=Orbicam - -usb:v5986p0101* - ID_PRODUCT_FROM_DATABASE=USB2.0 Camera - -usb:v5986p0102* - ID_PRODUCT_FROM_DATABASE=Crystal Eye Webcam - -usb:v5986p01A6* - ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Webcam - -usb:v5986p01A7* - ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Webcam - -usb:v5986p01A9* - ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Webcam - -usb:v5986p0200* - ID_PRODUCT_FROM_DATABASE=OrbiCam - -usb:v5986p0203* - ID_PRODUCT_FROM_DATABASE=BisonCam NB Pro 1300 - -usb:v5986p0241* - ID_PRODUCT_FROM_DATABASE=BisonCam, NB Pro - -usb:v5986p02D0* - ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Webcam [R5U877] - -usb:v5986p03D0* - ID_PRODUCT_FROM_DATABASE=Lenovo Integrated Webcam [R5U877] - -usb:v5A57* - ID_VENDOR_FROM_DATABASE=Zinwell - -usb:v5A57p0260* - ID_PRODUCT_FROM_DATABASE=RT2570 - -usb:v5A57p0280* - ID_PRODUCT_FROM_DATABASE=802.11a/b/g/n USB Wireless LAN Card - -usb:v5A57p0282* - ID_PRODUCT_FROM_DATABASE=802.11b/g/n USB Wireless LAN Card - -usb:v5A57p0283* - ID_PRODUCT_FROM_DATABASE=802.11b/g/n USB Wireless LAN Card - -usb:v5A57p0284* - ID_PRODUCT_FROM_DATABASE=802.11a/b/g/n USB Wireless LAN Card - -usb:v5A57p0290* - ID_PRODUCT_FROM_DATABASE=ZW-N290 802.11n [Realtek RTL8192SU] - -usb:v5A57p5257* - ID_PRODUCT_FROM_DATABASE=Metronic 495257 wifi 802.11ng - -usb:v6000* - ID_VENDOR_FROM_DATABASE=Beholder International Ltd. - -usb:v6000pDEC0* - ID_PRODUCT_FROM_DATABASE=TV Wander - -usb:v6000pDEC1* - ID_PRODUCT_FROM_DATABASE=TV Voyage - -usb:v601A* - ID_VENDOR_FROM_DATABASE=Ingenic Semiconductor Ltd. - -usb:v601Ap4740* - ID_PRODUCT_FROM_DATABASE=XBurst Jz4740 boot mode - -usb:v6189* - ID_VENDOR_FROM_DATABASE=Sitecom - -usb:v6189p182D* - ID_PRODUCT_FROM_DATABASE=USB 2.0 Ethernet - -usb:v6189p2068* - ID_PRODUCT_FROM_DATABASE=USB to serial cable (v2) - -usb:v6253* - ID_VENDOR_FROM_DATABASE=TwinHan Technology Co., Ltd - -usb:v6253p0100* - ID_PRODUCT_FROM_DATABASE=Ir reciver f. remote control - -usb:v636C* - ID_VENDOR_FROM_DATABASE=CoreLogic, Inc. - -usb:v6472* - ID_VENDOR_FROM_DATABASE=Unknown (Sony?) - -usb:v6472p01C8* - ID_PRODUCT_FROM_DATABASE=PlayStation Portable [Mass Storage] - -usb:v6547* - ID_VENDOR_FROM_DATABASE=Arkmicro Technologies Inc. - -usb:v6547p0232* - ID_PRODUCT_FROM_DATABASE=ARK3116 Serial - -usb:v6615* - ID_VENDOR_FROM_DATABASE=IRTOUCHSYSTEMS Co. Ltd. - -usb:v6615p0001* - ID_PRODUCT_FROM_DATABASE=Touchscreen - -usb:v6666* - ID_VENDOR_FROM_DATABASE=Prototype product Vendor ID - -usb:v6666p0667* - ID_PRODUCT_FROM_DATABASE=WiseGroup Smart Joy PSX, PS-PC Smart JoyPad - -usb:v6666p2667* - ID_PRODUCT_FROM_DATABASE=JCOP BlueZ Smartcard reader - -usb:v6666p8802* - ID_PRODUCT_FROM_DATABASE=SmartJoy Dual Plus PS2 converter - -usb:v6666p8804* - ID_PRODUCT_FROM_DATABASE=WiseGroup SuperJoy Box 5 - -usb:v6677* - ID_VENDOR_FROM_DATABASE=WiseGroup, Ltd. - -usb:v6677p8802* - ID_PRODUCT_FROM_DATABASE=SmartJoy Dual Plus PS2 converter - -usb:v6677p8811* - ID_PRODUCT_FROM_DATABASE=Deluxe Dance Mat - -usb:v6891* - ID_VENDOR_FROM_DATABASE=3Com - -usb:v6891pA727* - ID_PRODUCT_FROM_DATABASE=3CRUSB10075 802.11bg [ZyDAS ZD1211] - -usb:v695C* - ID_VENDOR_FROM_DATABASE=Opera1 - -usb:v695Cp3829* - ID_PRODUCT_FROM_DATABASE=Opera1 DVB-S (warm state) - -usb:v6993* - ID_VENDOR_FROM_DATABASE=Yealink Network Technology Co., Ltd. - -usb:v6993pB001* - ID_PRODUCT_FROM_DATABASE=VoIP Phone - -usb:v6A75* - ID_VENDOR_FROM_DATABASE=Shanghai Jujo Electronics Co., Ltd - -usb:v7104* - ID_VENDOR_FROM_DATABASE=CME (Central Music Co.) - -usb:v7104p2202* - ID_PRODUCT_FROM_DATABASE=UF5/UF6/UF7/UF8 MIDI Master Keyboard - -usb:v726C* - ID_VENDOR_FROM_DATABASE=StackFoundry LLC - -usb:v726Cp2149* - ID_PRODUCT_FROM_DATABASE=EntropyKing Random Number Generator - -usb:v734C* - ID_VENDOR_FROM_DATABASE=TBS Technologies China - -usb:v734Cp5920* - ID_PRODUCT_FROM_DATABASE=Q-Box II DVB-S2 HD - -usb:v734Cp5928* - ID_PRODUCT_FROM_DATABASE=Q-Box II DVB-S2 HD - -usb:v7392* - ID_VENDOR_FROM_DATABASE=Edimax Technology Co., Ltd - -usb:v7392p7711* - ID_PRODUCT_FROM_DATABASE=EW-7711UTn nLite Wireless Adapter [Ralink RT2870] - -usb:v7392p7717* - ID_PRODUCT_FROM_DATABASE=EW-7717UN 802.11n Wireless Adapter [Ralink RT2870] - -usb:v7392p7718* - ID_PRODUCT_FROM_DATABASE=EW-7718UN 802.11n Wireless Adapter [Ralink RT2870] - -usb:v7392p7722* - ID_PRODUCT_FROM_DATABASE=EW-7722UTn 802.11n Wireless Adapter [Ralink RT307x] - -usb:v7392p7811* - ID_PRODUCT_FROM_DATABASE=EW-7811Un 802.11n Wireless Adapter [Realtek RTL8188CUS] - -usb:v8086* - ID_VENDOR_FROM_DATABASE=Intel Corp. - -usb:v8086p0001* - ID_PRODUCT_FROM_DATABASE=AnyPoint (TM) Home Network 1.6 Mbps Wireless Adapter - -usb:v8086p0044* - ID_PRODUCT_FROM_DATABASE=CPU DRAM Controller - -usb:v8086p0046* - ID_PRODUCT_FROM_DATABASE=HD Graphics - -usb:v8086p0100* - ID_PRODUCT_FROM_DATABASE=Personal Audio Player 3000 - -usb:v8086p0101* - ID_PRODUCT_FROM_DATABASE=Personal Audio Player 3000 - -usb:v8086p0110* - ID_PRODUCT_FROM_DATABASE=Easy PC Camera - -usb:v8086p0120* - ID_PRODUCT_FROM_DATABASE=PC Camera CS120 - -usb:v8086p0180* - ID_PRODUCT_FROM_DATABASE=WiMAX Connection 2400m - -usb:v8086p0181* - ID_PRODUCT_FROM_DATABASE=WiMAX Connection 2400m - -usb:v8086p0182* - ID_PRODUCT_FROM_DATABASE=WiMAX Connection 2400m - -usb:v8086p0186* - ID_PRODUCT_FROM_DATABASE=WiMAX Connection 2400m - -usb:v8086p0188* - ID_PRODUCT_FROM_DATABASE=WiMAX Connection 2400m - -usb:v8086p0200* - ID_PRODUCT_FROM_DATABASE=AnyPoint(TM) Wireless II Network 11Mbps Adapter [Atmel AT76C503A] - -usb:v8086p0431* - ID_PRODUCT_FROM_DATABASE=Intel Pro Video PC Camera - -usb:v8086p0510* - ID_PRODUCT_FROM_DATABASE=Digital Movie Creator - -usb:v8086p0630* - ID_PRODUCT_FROM_DATABASE=Pocket PC Camera - -usb:v8086p0780* - ID_PRODUCT_FROM_DATABASE=CS780 Microphone Input - -usb:v8086p07D3* - ID_PRODUCT_FROM_DATABASE=BLOB boot loader firmware - -usb:v8086p0DAD* - ID_PRODUCT_FROM_DATABASE=Cherry MiniatureCard Keyboard - -usb:v8086p1010* - ID_PRODUCT_FROM_DATABASE=AnyPoint(TM) Home Network 10 Mbps Phoneline Adapter - -usb:v8086p110A* - ID_PRODUCT_FROM_DATABASE=Bluetooth Controller from (Ericsson P4A) - -usb:v8086p110B* - ID_PRODUCT_FROM_DATABASE=Bluetooth Controller from (Intel/CSR) - -usb:v8086p1110* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless LAN Module - -usb:v8086p1111* - ID_PRODUCT_FROM_DATABASE=PRO/Wireless 2011B 802.11b Adapter [Intersil PRISM 2.5] - -usb:v8086p1134* - ID_PRODUCT_FROM_DATABASE=Hollister Mobile Monitor - -usb:v8086p1139* - ID_PRODUCT_FROM_DATABASE=In-Target Probe (ITP) - -usb:v8086p1234* - ID_PRODUCT_FROM_DATABASE=Prototype Reader/Writer - -usb:v8086p1403* - ID_PRODUCT_FROM_DATABASE=WiMAX Connection 2400m - -usb:v8086p1405* - ID_PRODUCT_FROM_DATABASE=WiMAX Connection 2400m - -usb:v8086p1406* - ID_PRODUCT_FROM_DATABASE=WiMAX Connection 2400m - -usb:v8086p2448* - ID_PRODUCT_FROM_DATABASE=82801 PCI Bridge - -usb:v8086p3100* - ID_PRODUCT_FROM_DATABASE=PRO/DSL 3220 Modem - WAN - -usb:v8086p3101* - ID_PRODUCT_FROM_DATABASE=PRO/DSL 3220 Modem - -usb:v8086p3240* - ID_PRODUCT_FROM_DATABASE=AnyPoint® 3240 Modem - WAN - -usb:v8086p3241* - ID_PRODUCT_FROM_DATABASE=AnyPoint® 3240 Modem - -usb:v8086p8602* - ID_PRODUCT_FROM_DATABASE=Miniature Card Slot - -usb:v8086p9303* - ID_PRODUCT_FROM_DATABASE=Intel 8x930Hx Hub - -usb:v8086p9500* - ID_PRODUCT_FROM_DATABASE=CE 9500 DVB-T - -usb:v8086p9890* - ID_PRODUCT_FROM_DATABASE=82930 Test Board - -usb:v8086pBEEF* - ID_PRODUCT_FROM_DATABASE=SCM Miniature Card Reader/Writer - -usb:v8086pC013* - ID_PRODUCT_FROM_DATABASE=Wireless HID Station - -usb:v8086pF001* - ID_PRODUCT_FROM_DATABASE=XScale PXA27x Bulverde flash - -usb:v8086pF1A5* - ID_PRODUCT_FROM_DATABASE=Z-U130 [Value Solid State Drive] - -usb:v8087* - ID_VENDOR_FROM_DATABASE=Intel Corp. - -usb:v8087p0020* - ID_PRODUCT_FROM_DATABASE=Integrated Rate Matching Hub - -usb:v8087p0024* - ID_PRODUCT_FROM_DATABASE=Integrated Rate Matching Hub - -usb:v80EE* - ID_VENDOR_FROM_DATABASE=VirtualBox - -usb:v80EEp0021* - ID_PRODUCT_FROM_DATABASE=USB Tablet - -usb:v8282* - ID_VENDOR_FROM_DATABASE=Keio - -usb:v8282p3201* - ID_PRODUCT_FROM_DATABASE=Retro Adapter - -usb:v8282p3301* - ID_PRODUCT_FROM_DATABASE=Retro Adapter Mouse - -usb:v8341* - ID_VENDOR_FROM_DATABASE=EGO Systems, Inc. - -usb:v8341p2000* - ID_PRODUCT_FROM_DATABASE=Flashdisk - -usb:v9016* - ID_VENDOR_FROM_DATABASE=Sitecom - -usb:v9016p182D* - ID_PRODUCT_FROM_DATABASE=WL-022 802.11b Adapter - -usb:v9022* - ID_VENDOR_FROM_DATABASE=TeVii Technology Ltd. - -usb:v9022pD630* - ID_PRODUCT_FROM_DATABASE=DVB-S S630 - -usb:v9022pD650* - ID_PRODUCT_FROM_DATABASE=DVB-S2 S650 - -usb:v9022pD660* - ID_PRODUCT_FROM_DATABASE=DVB-S2 S660 - -usb:v9148* - ID_VENDOR_FROM_DATABASE=GeoLab, Ltd - -usb:v9148p0004* - ID_PRODUCT_FROM_DATABASE=R3 Compatible Device - -usb:v9710* - ID_VENDOR_FROM_DATABASE=MosChip Semiconductor - -usb:v9710p7703* - ID_PRODUCT_FROM_DATABASE=MCS7703 Serial Port Adapter - -usb:v9710p7705* - ID_PRODUCT_FROM_DATABASE=MCS7705 Parallel port adapter - -usb:v9710p7715* - ID_PRODUCT_FROM_DATABASE=MCS7715 Parallel and serial port adapter - -usb:v9710p7717* - ID_PRODUCT_FROM_DATABASE=MCS7717 3-port hub with serial and parallel adapter - -usb:v9710p7720* - ID_PRODUCT_FROM_DATABASE=MCS7720 Dual serial port adapter - -usb:v9710p7730* - ID_PRODUCT_FROM_DATABASE=MCS7730 10/100 Mbps Ethernet adapter - -usb:v9710p7780* - ID_PRODUCT_FROM_DATABASE=MCS7780 4Mbps Fast IrDA Adapter - -usb:v9710p7830* - ID_PRODUCT_FROM_DATABASE=MCS7830 10/100 Mbps Ethernet adapter - -usb:v9710p7832* - ID_PRODUCT_FROM_DATABASE=MCS7832 10/100 Mbps Ethernet adapter - -usb:v9710p7840* - ID_PRODUCT_FROM_DATABASE=MCS7820/MCS7840 2/4 port serial adapter - -usb:v99FA* - ID_VENDOR_FROM_DATABASE=Grandtec - -usb:v99FAp8988* - ID_PRODUCT_FROM_DATABASE=V.cap Camera Device - -usb:v9AC4* - ID_VENDOR_FROM_DATABASE=J. Westhues - -usb:v9AC4p4B8F* - ID_PRODUCT_FROM_DATABASE=ProxMark-3 RFID Instrument - -usb:vA128* - ID_VENDOR_FROM_DATABASE=AnMo Electronics Corp. / Dino-Lite (?) - -usb:vA128p0610* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C201 + HV7131R) - -usb:vA128p0611* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C201 + HV7131R) - -usb:vA128p0612* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C120 + HV7131R) - -usb:vA128p0613* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C201 + HV7131R) - -usb:vA128p0614* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) - -usb:vA128p0615* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) - -usb:vA128p0616* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C120 + HV7131R) - -usb:vA128p0617* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C201 + MI1310/MT9M111) - -usb:vA128p0618* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Digital Microscope (SN9C201 + HV7131R) - -usb:vA168* - ID_VENDOR_FROM_DATABASE=AnMo Electronics Corporation - -usb:vA168p0610* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Digital Microscope - -usb:vA168p0611* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Digital Microscope - -usb:vA168p0613* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Digital Microscope - -usb:vA168p0614* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Pro Digital Microscope - -usb:vA168p0615* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Pro Digital Microscope - -usb:vA168p0617* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Pro Digital Microscope - -usb:vA168p0618* - ID_PRODUCT_FROM_DATABASE=Dino-Lite Digital Microscope - -usb:vA600* - ID_VENDOR_FROM_DATABASE=Asix - -usb:vA600pE110* - ID_PRODUCT_FROM_DATABASE=OK1ZIA Davac 4.x - -usb:vA727* - ID_VENDOR_FROM_DATABASE=3Com - -usb:vA727p6893* - ID_PRODUCT_FROM_DATABASE=3CRUSB20075 OfficeConnect Wireless 108Mbps 11g Adapter [Atheros AR5523] - -usb:vA727p6895* - ID_PRODUCT_FROM_DATABASE=AR5523 - -usb:vA727p6897* - ID_PRODUCT_FROM_DATABASE=AR5523 - -usb:vABCD* - ID_VENDOR_FROM_DATABASE=Unknown - -usb:vABCDpCDEE* - ID_PRODUCT_FROM_DATABASE=Petcam - -usb:vC251* - ID_VENDOR_FROM_DATABASE=Keil Software, Inc. - -usb:vC251p2710* - ID_PRODUCT_FROM_DATABASE=ULink - -usb:vCACE* - ID_VENDOR_FROM_DATABASE=CACE Technologies Inc. - -usb:vCACEp0002* - ID_PRODUCT_FROM_DATABASE=AirPCAP Classic 802.11 packet capture adapter - -usb:vCACEp0300* - ID_PRODUCT_FROM_DATABASE=AirPcap NX [Atheros AR9001U-(2)NG] - -usb:vD209* - ID_VENDOR_FROM_DATABASE=Ultimarc - -usb:vD209p0301* - ID_PRODUCT_FROM_DATABASE=I-PAC Arcade Control Interface - -usb:vD209p0501* - ID_PRODUCT_FROM_DATABASE=Ultra-Stik Ultimarc Ultra-Stik Player 1 - -usb:vE4E4* - ID_VENDOR_FROM_DATABASE=Xorcom Ltd. - -usb:vE4E4p1130* - ID_PRODUCT_FROM_DATABASE=Astribank series - -usb:vE4E4p1131* - ID_PRODUCT_FROM_DATABASE=Astribank series - -usb:vE4E4p1132* - ID_PRODUCT_FROM_DATABASE=Astribank series - -usb:vE4E4p1140* - ID_PRODUCT_FROM_DATABASE=Astribank series - -usb:vE4E4p1141* - ID_PRODUCT_FROM_DATABASE=Astribank series - -usb:vE4E4p1142* - ID_PRODUCT_FROM_DATABASE=Astribank series - -usb:vE4E4p1150* - ID_PRODUCT_FROM_DATABASE=Astribank series - -usb:vE4E4p1151* - ID_PRODUCT_FROM_DATABASE=Astribank series - -usb:vE4E4p1152* - ID_PRODUCT_FROM_DATABASE=Astribank series - -usb:vE4E4p1160* - ID_PRODUCT_FROM_DATABASE=Astribank 2 series - -usb:vE4E4p1161* - ID_PRODUCT_FROM_DATABASE=Astribank 2 series - -usb:vE4E4p1162* - ID_PRODUCT_FROM_DATABASE=Astribank 2 series - -usb:vEB03* - ID_VENDOR_FROM_DATABASE=MakingThings - -usb:vEB03p0920* - ID_PRODUCT_FROM_DATABASE=Make Controller Kit - -usb:vEB1A* - ID_VENDOR_FROM_DATABASE=eMPIA Technology, Inc. - -usb:vEB1Ap17DE* - ID_PRODUCT_FROM_DATABASE=KWorld V-Stream XPERT DTV - DVB-T USB cold - -usb:vEB1Ap17DF* - ID_PRODUCT_FROM_DATABASE=KWorld V-Stream XPERT DTV - DVB-T USB warm - -usb:vEB1Ap2571* - ID_PRODUCT_FROM_DATABASE=M035 Compact Web Cam - -usb:vEB1Ap2710* - ID_PRODUCT_FROM_DATABASE=SilverCrest Webcam - -usb:vEB1Ap2750* - ID_PRODUCT_FROM_DATABASE=ECS Elitegroup G220 integrated Webcam - -usb:vEB1Ap2761* - ID_PRODUCT_FROM_DATABASE=EeePC 701 integrated Webcam - -usb:vEB1Ap2776* - ID_PRODUCT_FROM_DATABASE=Combined audio and video input device - -usb:vEB1Ap2800* - ID_PRODUCT_FROM_DATABASE=Terratec Cinergy 200 - -usb:vEB1Ap2801* - ID_PRODUCT_FROM_DATABASE=GrabBeeX+ Video Encoder - -usb:vEB1Ap2863* - ID_PRODUCT_FROM_DATABASE=Video Grabber - -usb:vEB1Ap2870* - ID_PRODUCT_FROM_DATABASE=Pinnacle PCTV Stick - -usb:vEB1Ap2881* - ID_PRODUCT_FROM_DATABASE=EM2881 Video Controller - -usb:vEB1Ap50A3* - ID_PRODUCT_FROM_DATABASE=Gadmei UTV380 TV Box - -usb:vEB1Ap50A6* - ID_PRODUCT_FROM_DATABASE=Gadmei UTV330 TV Box - -usb:vEB1ApE355* - ID_PRODUCT_FROM_DATABASE=KWorld DVB-T 355U Digital TV Dongle - -usb:vEB2A* - ID_VENDOR_FROM_DATABASE=KWorld - -usb:vF003* - ID_VENDOR_FROM_DATABASE=Hewlett Packard - -usb:vF003p6002* - ID_PRODUCT_FROM_DATABASE=PhotoSmart C500 - -usb:vF4EC* - ID_VENDOR_FROM_DATABASE=Atten Electronics / Siglent Technologies - -usb:vF4ECpEE38* - ID_PRODUCT_FROM_DATABASE=Digital Storage Oscilloscope diff --git a/hwdb/ids-update.pl b/hwdb/ids-update.pl index 5782bb51ef..37d3556382 100755 --- a/hwdb/ids-update.pl +++ b/hwdb/ids-update.pl @@ -7,7 +7,7 @@ sub usb_vendor { my $vendor; open(IN, "<", "usb.ids"); - open(OUT, ">", "20-usb-vendor-product.hwdb"); + open(OUT, ">", "20-usb-vendor-model.hwdb"); print(OUT "# This file is part of systemd.\n" . "#\n" . "# Data imported from: http://www.linux-usb.org/usb.ids\n"); @@ -26,11 +26,11 @@ sub usb_vendor { $line =~ m/^\t([0-9a-f]{4})\s*(.+)$/; if (defined $1) { - my $product = uc $1; + my $model = uc $1; my $text = $2; print(OUT "\n"); - print(OUT "usb:v" . $vendor . "p" . $product . "*\n"); - print(OUT " ID_PRODUCT_FROM_DATABASE=" . $text . "\n"); + print(OUT "usb:v" . $vendor . "p" . $model . "*\n"); + print(OUT " ID_MODEL_FROM_DATABASE=" . $text . "\n"); } } @@ -109,7 +109,7 @@ sub pci_vendor { my $device; open(IN, "<", "pci.ids"); - open(OUT, ">", "20-pci-vendor-product.hwdb"); + open(OUT, ">", "20-pci-vendor-model.hwdb"); print(OUT "# This file is part of systemd.\n" . "#\n" . "# Data imported from: http://pci-ids.ucw.cz/v2.2/pci.ids\n"); @@ -133,7 +133,7 @@ sub pci_vendor { my $text = $2; print(OUT "\n"); print(OUT "pci:v0000" . $vendor . "d0000" . $device . "*\n"); - print(OUT " ID_PRODUCT_FROM_DATABASE=" . $text . "\n"); + print(OUT " ID_MODEL_FROM_DATABASE=" . $text . "\n"); next; } @@ -144,7 +144,7 @@ sub pci_vendor { my $text = $3; print(OUT "\n"); print(OUT "pci:v0000" . $vendor . "d0000" . $device . "sv0000" . $sub_vendor . "sd0000" . $sub_device . "*\n"); - print(OUT " ID_PRODUCT_FROM_DATABASE=" . $text . "\n"); + print(OUT " ID_MODEL_FROM_DATABASE=" . $text . "\n"); } } -- cgit v1.2.1 From 7eb1dfcfc4c9c02e772e042c39f801c6fa8ad1b4 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 23 Mar 2013 20:36:05 +0100 Subject: TODO: add journal MaxRetentionSec= bug --- TODO | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/TODO b/TODO index 132aeaccbe..565e85e07a 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,14 @@ Bugfixes: +* journal: setting MaxRetentionSec= to any value creates a /dev/kmsg loop: + epoll_wait(7, {?} 0x7fff220df200, 1, 799489421) = 1 + read(8, "46,156226155,545165984,-;systemd"..., 8192) = 75 + writev(6, [{"<46>", 4}, {"systemd-journald", 16}, {"[3822]: ", 8}, {"Sleeping for 799489421 ms", 25}, {"\n", 1}], 5) = 54 + epoll_wait(7, {?} 0x7fff220df200, 1, 799489421) = 1 + read(8, "46,156226156,545166076,-;systemd"..., 8192) = 75 + writev(6, [{"<46>", 4}, {"systemd-journald", 16}, {"[3822]: ", 8}, {"Sleeping for 799489421 ms", 25}, {"\n", 1}], 5) = 54 + epoll_wait(7, {?} 0x7fff220df200, 1, 799489421) = 1 + https://bbs.archlinux.org/viewtopic.php?pid=1200373 + * check systemd-tmpfiles for selinux context hookup for mknod(), symlink() and similar * swap units that are activated by one name but shown in the kernel under another are semi-broken -- cgit v1.2.1 From 7964dfca1b6c4b37d069b3713f9f1b11219c3474 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 23 Mar 2013 21:02:59 +0100 Subject: journald: remove unconditional log_*() use in the main loop Setting MaxRetentionSec= caused the kernel log to overflow and the journal daemon to enter an endless loop. Logging from the journald main loop gets directed to /dev/kmsg, which wakes up journald again. We skip the import of this message by checking for our own PID, but this still causes the main loop to never go to sleep again because we never stopped logging from there. --- TODO | 10 ---------- src/journal/journald.c | 1 - 2 files changed, 11 deletions(-) diff --git a/TODO b/TODO index 565e85e07a..132aeaccbe 100644 --- a/TODO +++ b/TODO @@ -1,14 +1,4 @@ Bugfixes: -* journal: setting MaxRetentionSec= to any value creates a /dev/kmsg loop: - epoll_wait(7, {?} 0x7fff220df200, 1, 799489421) = 1 - read(8, "46,156226155,545165984,-;systemd"..., 8192) = 75 - writev(6, [{"<46>", 4}, {"systemd-journald", 16}, {"[3822]: ", 8}, {"Sleeping for 799489421 ms", 25}, {"\n", 1}], 5) = 54 - epoll_wait(7, {?} 0x7fff220df200, 1, 799489421) = 1 - read(8, "46,156226156,545166076,-;systemd"..., 8192) = 75 - writev(6, [{"<46>", 4}, {"systemd-journald", 16}, {"[3822]: ", 8}, {"Sleeping for 799489421 ms", 25}, {"\n", 1}], 5) = 54 - epoll_wait(7, {?} 0x7fff220df200, 1, 799489421) = 1 - https://bbs.archlinux.org/viewtopic.php?pid=1200373 - * check systemd-tmpfiles for selinux context hookup for mknod(), symlink() and similar * swap units that are activated by one name but shown in the kernel under another are semi-broken diff --git a/src/journal/journald.c b/src/journal/journald.c index d6b9be5974..5fb10b1d3f 100644 --- a/src/journal/journald.c +++ b/src/journal/journald.c @@ -88,7 +88,6 @@ int main(int argc, char *argv[]) { /* Calculate when to rotate the next time */ t = (int) ((server.oldest_file_usec + server.max_retention_usec - n + USEC_PER_MSEC - 1) / USEC_PER_MSEC); - log_info("Sleeping for %i ms", t); } #ifdef HAVE_GCRYPT -- cgit v1.2.1 From 3f95f83c548d180cddc6b9907f8d8d72ebd5abe9 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Sun, 24 Mar 2013 10:06:38 +0100 Subject: service: no need to drop rc. prefix anymore This reverts commit f5c88ec1330b61787441156de7d764a140774bd2. It is no longer necessary, and adds unnecessary magic. --- src/core/service.c | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/src/core/service.c b/src/core/service.c index 080d583b69..4451d38eef 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -331,9 +331,6 @@ static char *sysv_translate_name(const char *name) { if (endswith(name, ".sh")) /* Drop .sh suffix */ strcpy(stpcpy(r, name) - 3, ".service"); - else if (startswith(name, "rc.")) - /* Drop rc. prefix */ - strcpy(stpcpy(r, name + 3), ".service"); else /* Normal init script name */ strcpy(stpcpy(r, name), ".service"); @@ -984,10 +981,8 @@ static int service_load_sysv_name(Service *s, const char *name) { assert(s); assert(name); - /* For SysV services we strip the rc.* and *.sh - * prefixes/suffixes. */ - if (startswith(name, "rc.") || - endswith(name, ".sh.service")) + /* For SysV services we strip the *.sh suffixes. */ + if (endswith(name, ".sh.service")) return -ENOENT; STRV_FOREACH(p, UNIT(s)->manager->lookup_paths.sysvinit_path) { @@ -1010,19 +1005,6 @@ static int service_load_sysv_name(Service *s, const char *name) { } free(path); - if (r >= 0 && UNIT(s)->load_state == UNIT_STUB) { - /* Try rc.* init scripts */ - - path = strjoin(*p, "/rc.", name, NULL); - if (!path) - return -ENOMEM; - - /* Drop .service suffix */ - path[strlen(path)-8] = 0; - r = service_load_sysv_path(s, path); - free(path); - } - if (r < 0) return r; -- cgit v1.2.1 From 2c93b4efeca3ccf38d604d85490b796e875e2c31 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 24 Mar 2013 22:02:05 +0100 Subject: bus: implement support for FD passing --- src/libsystemd-bus/bus-internal.h | 5 + src/libsystemd-bus/bus-message.c | 190 ++++++++++++++++++++++++++++------ src/libsystemd-bus/bus-message.h | 14 ++- src/libsystemd-bus/sd-bus.c | 50 +++++++-- src/libsystemd-bus/sd-bus.h | 1 - src/libsystemd-bus/test-bus-chat.c | 71 +++++++++++++ src/libsystemd-bus/test-bus-marshal.c | 2 +- src/shared/util.c | 2 + 8 files changed, 291 insertions(+), 44 deletions(-) diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index 82f60849d5..cdd7b2164f 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -114,6 +114,9 @@ struct sd_bus { struct ucred ucred; char label[NAME_MAX]; + + int *fds; + unsigned n_fds; }; static inline void bus_unrefp(sd_bus **b) { @@ -137,6 +140,8 @@ static inline void bus_unrefp(sd_bus **b) { * bytes */ #define BUS_ARRAY_MAX_SIZE 67108864 +#define BUS_FDS_MAX 1024 + bool object_path_is_valid(const char *p); bool interface_name_is_valid(const char *p); bool service_name_is_valid(const char *p); diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index 01213e31ad..22e6404209 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -20,6 +20,7 @@ ***/ #include +#include #include "util.h" #include "utf8.h" @@ -50,8 +51,6 @@ static void reset_containers(sd_bus_message *m) { } static void message_free(sd_bus_message *m) { - unsigned i; - assert(m); if (m->free_header) @@ -63,8 +62,10 @@ static void message_free(sd_bus_message *m) { if (m->free_body) free(m->body); - for (i = 0; i < m->n_fds; i++) - close_nointr_nofail(m->fds[i]); + if (m->free_fds) { + close_many(m->fds, m->n_fds); + free(m->fds); + } reset_containers(m); free(m->root_container.signature); @@ -227,7 +228,9 @@ static int message_append_field_uint32(sd_bus_message *m, uint8_t h, uint32_t x) int bus_message_from_malloc( void *buffer, size_t length, - struct ucred *ucred, + int *fds, + unsigned n_fds, + const struct ucred *ucred, const char *label, sd_bus_message **ret) { @@ -237,6 +240,7 @@ int bus_message_from_malloc( int r; assert(buffer || length <= 0); + assert(fds || n_fds <= 0); assert(ret); if (length < sizeof(struct bus_header)) @@ -276,11 +280,12 @@ int bus_message_from_malloc( return -ENOMEM; m->n_ref = 1; + m->sealed = true; m->header = h; - m->free_header = true; m->fields = (uint8_t*) buffer + sizeof(struct bus_header); m->body = (uint8_t*) buffer + sizeof(struct bus_header) + ALIGN_TO(fs, 8); - m->sealed = true; + m->fds = fds; + m->n_fds = n_fds; if (ucred) { m->uid = ucred->uid; @@ -299,13 +304,19 @@ int bus_message_from_malloc( m->iovec[0].iov_len = length; r = message_parse_fields(m); - if (r < 0) { - message_free(m); - return r; - } + if (r < 0) + goto fail; + + /* We take possession of the memory and fds now */ + m->free_header = true; + m->free_fds = true; *ret = m; return 0; + +fail: + message_free(m); + return r; } static sd_bus_message *message_new(sd_bus *bus, uint8_t type) { @@ -320,6 +331,7 @@ static sd_bus_message *message_new(sd_bus *bus, uint8_t type) { m->header->endian = SD_BUS_NATIVE_ENDIAN; m->header->type = type; m->header->version = bus ? bus->message_version : 1; + m->allow_fds = !bus || bus->can_fds; return m; } @@ -770,9 +782,14 @@ int message_append_basic(sd_bus_message *m, char type, const void *p, const void uint32_t k; void *a; char *e = NULL; + int fd = -1; + uint32_t fdi; + int r; if (!m) return -EINVAL; + if (!p) + return -EINVAL; if (m->sealed) return -EPERM; if (!bus_type_is_basic(type)) @@ -800,26 +817,12 @@ int message_append_basic(sd_bus_message *m, char type, const void *p, const void case SD_BUS_TYPE_STRING: case SD_BUS_TYPE_OBJECT_PATH: - if (!p) { - if (e) - c->signature[c->index] = 0; - - return -EINVAL; - } - align = 4; sz = 4 + strlen(p) + 1; break; case SD_BUS_TYPE_SIGNATURE: - if (!p) { - if (e) - c->signature[c->index] = 0; - - return -EINVAL; - } - align = 1; sz = 1 + strlen(p) + 1; break; @@ -833,6 +836,41 @@ int message_append_basic(sd_bus_message *m, char type, const void *p, const void p = &k; break; + case SD_BUS_TYPE_UNIX_FD: { + int z, *f; + + if (!m->allow_fds) { + r = -ENOTSUP; + goto fail; + } + + align = sz = 4; + + z = *(int*) p; + if (z < 0) { + r = -EINVAL; + goto fail; + } + + fd = fcntl(z, F_DUPFD_CLOEXEC, 3); + if (fd < 0) { + r = -errno; + goto fail; + } + + f = realloc(m->fds, sizeof(int) * (m->n_fds + 1)); + if (!f) { + r = -ENOMEM; + goto fail; + } + + fdi = m->n_fds; + f[fdi] = fd; + m->fds = f; + m->free_fds = true; + break; + } + default: align = bus_type_get_alignment(type); sz = bus_type_get_size(type); @@ -844,11 +882,8 @@ int message_append_basic(sd_bus_message *m, char type, const void *p, const void a = message_extend_body(m, align, sz); if (!a) { - /* Truncate extended signature again */ - if (e) - c->signature[c->index] = 0; - - return -ENOMEM; + r = -ENOMEM; + goto fail; } if (type == SD_BUS_TYPE_STRING || type == SD_BUS_TYPE_OBJECT_PATH) { @@ -864,6 +899,13 @@ int message_append_basic(sd_bus_message *m, char type, const void *p, const void if (stored) *stored = (const uint8_t*) a + 1; + } else if (type == SD_BUS_TYPE_UNIX_FD) { + *(uint32_t*) a = fdi; + + if (stored) + *stored = a; + + m->n_fds ++; } else { memcpy(a, p, sz); @@ -876,6 +918,16 @@ int message_append_basic(sd_bus_message *m, char type, const void *p, const void c->index++; return 0; + +fail: + /* Truncate extended signature again */ + if (e) + c->signature[c->index] = 0; + + if (fd >= 0) + close_nointr_nofail(fd); + + return r; } int sd_bus_message_append_basic(sd_bus_message *m, char type, const void *p) { @@ -1464,6 +1516,8 @@ int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p) { return -EPERM; if (!bus_type_is_basic(type)) return -EINVAL; + if (!p) + return -EINVAL; c = message_get_container(m); @@ -1530,12 +1584,13 @@ int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p) { } default: { - size_t sz, align; + size_t sz, align, rindex; align = bus_type_get_alignment(type); sz = bus_type_get_size(type); - r = message_peek_body(m, &m->rindex, align, sz, &q); + rindex = m->rindex; + r = message_peek_body(m, &rindex, align, sz, &q); if (r <= 0) return r; @@ -1565,10 +1620,28 @@ int sd_bus_message_read_basic(sd_bus_message *m, char type, void *p) { *(uint64_t*) p = BUS_MESSAGE_BSWAP64(m, *(uint64_t*) q); break; + case SD_BUS_TYPE_UNIX_FD: { + int copy; + uint32_t j; + + j = BUS_MESSAGE_BSWAP32(m, *(uint32_t*) q); + if (j >= m->n_fds) + return -EBADMSG; + + copy = fcntl(m->fds[j], F_DUPFD_CLOEXEC, 3); + if (copy < 0) + return -errno; + + *(int*) p = copy; + break; + } + default: assert_not_reached("Unknown basic type..."); } + m->rindex = rindex; + break; } } @@ -2028,7 +2101,8 @@ static int message_read_ap(sd_bus_message *m, const char *types, va_list ap) { case SD_BUS_TYPE_DOUBLE: case SD_BUS_TYPE_STRING: case SD_BUS_TYPE_OBJECT_PATH: - case SD_BUS_TYPE_SIGNATURE: { + case SD_BUS_TYPE_SIGNATURE: + case SD_BUS_TYPE_UNIX_FD: { void *p; p = va_arg(ap, void*); @@ -2399,6 +2473,7 @@ static int message_skip_fields( static int message_parse_fields(sd_bus_message *m) { size_t ri; int r; + uint32_t unix_fds = 0; assert(m); @@ -2419,6 +2494,10 @@ static int message_parse_fields(sd_bus_message *m) { return -EBADMSG; case SD_BUS_MESSAGE_HEADER_PATH: + + if (m->path) + return -EBADMSG; + if (!streq(signature, "o")) return -EBADMSG; @@ -2426,6 +2505,10 @@ static int message_parse_fields(sd_bus_message *m) { break; case SD_BUS_MESSAGE_HEADER_INTERFACE: + + if (m->interface) + return -EBADMSG; + if (!streq(signature, "s")) return -EBADMSG; @@ -2433,6 +2516,10 @@ static int message_parse_fields(sd_bus_message *m) { break; case SD_BUS_MESSAGE_HEADER_MEMBER: + + if (m->member) + return -EBADMSG; + if (!streq(signature, "s")) return -EBADMSG; @@ -2440,6 +2527,10 @@ static int message_parse_fields(sd_bus_message *m) { break; case SD_BUS_MESSAGE_HEADER_ERROR_NAME: + + if (m->error.name) + return -EBADMSG; + if (!streq(signature, "s")) return -EBADMSG; @@ -2447,6 +2538,10 @@ static int message_parse_fields(sd_bus_message *m) { break; case SD_BUS_MESSAGE_HEADER_DESTINATION: + + if (m->destination) + return -EBADMSG; + if (!streq(signature, "s")) return -EBADMSG; @@ -2454,6 +2549,10 @@ static int message_parse_fields(sd_bus_message *m) { break; case SD_BUS_MESSAGE_HEADER_SENDER: + + if (m->sender) + return -EBADMSG; + if (!streq(signature, "s")) return -EBADMSG; @@ -2465,6 +2564,9 @@ static int message_parse_fields(sd_bus_message *m) { const char *s; char *c; + if (m->root_container.signature) + return -EBADMSG; + if (!streq(signature, "g")) return -EBADMSG; @@ -2482,6 +2584,9 @@ static int message_parse_fields(sd_bus_message *m) { } case SD_BUS_MESSAGE_HEADER_REPLY_SERIAL: + if (m->reply_serial != 0) + return -EBADMSG; + if (!streq(signature, "u")) return -EBADMSG; @@ -2494,6 +2599,22 @@ static int message_parse_fields(sd_bus_message *m) { break; + case SD_BUS_MESSAGE_HEADER_UNIX_FDS: + if (unix_fds != 0) + return -EBADMSG; + + if (!streq(signature, "u")) + return -EBADMSG; + + r = message_peek_field_uint32(m, &ri, &unix_fds); + if (r < 0) + return -EBADMSG; + + if (unix_fds == 0) + return -EBADMSG; + + break; + default: r = message_skip_fields(m, &ri, (uint32_t) -1, (const char **) &signature); } @@ -2502,6 +2623,9 @@ static int message_parse_fields(sd_bus_message *m) { return r; } + if (m->n_fds != unix_fds) + return -EBADMSG; + if (isempty(m->root_container.signature) != (BUS_MESSAGE_BODY_SIZE(m) == 0)) return -EBADMSG; diff --git a/src/libsystemd-bus/bus-message.h b/src/libsystemd-bus/bus-message.h index 1a6c614611..3289b378f8 100644 --- a/src/libsystemd-bus/bus-message.h +++ b/src/libsystemd-bus/bus-message.h @@ -67,12 +67,14 @@ struct sd_bus_message { pid_t tid; bool sealed:1; + bool dont_send:1; + bool allow_fds:1; bool uid_valid:1; bool gid_valid:1; bool free_header:1; bool free_fields:1; bool free_body:1; - bool dont_send:1; + bool free_fds:1; struct bus_header *header; void *fields; @@ -130,5 +132,13 @@ static inline void bus_message_unrefp(sd_bus_message **m) { int bus_message_seal(sd_bus_message *m, uint64_t serial); int bus_message_dump(sd_bus_message *m); int bus_message_get_blob(sd_bus_message *m, void **buffer, size_t *sz); -int bus_message_from_malloc(void *buffer, size_t length, struct ucred *ucred, const char *label, sd_bus_message **ret); int bus_message_read_strv_extend(sd_bus_message *m, char ***l); + +int bus_message_from_malloc( + void *buffer, + size_t length, + int *fds, + unsigned n_fds, + const struct ucred *ucred, + const char *label, + sd_bus_message **ret); diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 0acc6b2d1e..72c790bd59 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -53,6 +53,9 @@ static void bus_free(sd_bus *b) { free(b->auth_uid); free(b->address); + close_many(b->fds, b->n_fds); + free(b->fds); + for (i = 0; i < b->rqueue_size; i++) sd_bus_message_unref(b->rqueue[i]); free(b->rqueue); @@ -889,6 +892,18 @@ static int message_write(sd_bus *bus, sd_bus_message *m, size_t *idx) { if (*idx >= m->size) return 0; + zero(mh); + + if (m->n_fds > 0) { + struct cmsghdr *control; + control = alloca(CMSG_SPACE(sizeof(int) * m->n_fds)); + + mh.msg_control = control; + control->cmsg_level = SOL_SOCKET; + control->cmsg_type = SCM_RIGHTS; + mh.msg_controllen = control->cmsg_len = CMSG_LEN(sizeof(int) * m->n_fds); + memcpy(CMSG_DATA(control), m->fds, sizeof(int) * m->n_fds); + } n = m->n_iovec * sizeof(struct iovec); iov = alloca(n); @@ -897,7 +912,6 @@ static int message_write(sd_bus *bus, sd_bus_message *m, size_t *idx) { j = 0; iovec_advance(iov, &j, *idx); - zero(mh); mh.msg_iov = iov; mh.msg_iovlen = m->n_iovec; @@ -963,7 +977,7 @@ static int message_read_need(sd_bus *bus, size_t *need) { static int message_make(sd_bus *bus, size_t size, sd_bus_message **m) { sd_bus_message *t; - void *b = NULL; + void *b; int r; assert(bus); @@ -976,11 +990,14 @@ static int message_make(sd_bus *bus, size_t size, sd_bus_message **m) { bus->rbuffer_size - size); if (!b) return -ENOMEM; - } + } else + b = NULL; r = bus_message_from_malloc(bus->rbuffer, size, + bus->fds, bus->n_fds, bus->ucred_valid ? &bus->ucred : NULL, - bus->label[0] ? bus->label : NULL, &t); + bus->label[0] ? bus->label : NULL, + &t); if (r < 0) { free(b); return r; @@ -989,6 +1006,9 @@ static int message_make(sd_bus *bus, size_t size, sd_bus_message **m) { bus->rbuffer = b; bus->rbuffer_size -= size; + bus->fds = NULL; + bus->n_fds = 0; + *m = t; return 1; } @@ -1002,7 +1022,8 @@ static int message_read(sd_bus *bus, sd_bus_message **m) { void *b; union { struct cmsghdr cmsghdr; - uint8_t buf[CMSG_SPACE(sizeof(struct ucred)) + + uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX) + + CMSG_SPACE(sizeof(struct ucred)) + CMSG_SPACE(NAME_MAX)]; /*selinux label */ } control; struct cmsghdr *cmsg; @@ -1039,11 +1060,24 @@ static int message_read(sd_bus *bus, sd_bus_message **m) { return errno == EAGAIN ? 0 : -errno; bus->rbuffer_size += k; - bus->ucred_valid = false; - bus->label[0] = 0; for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) { if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_RIGHTS) { + int n, *f; + + n = (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int); + + f = realloc(bus->fds, sizeof(int) + (bus->n_fds + n)); + if (!f) { + close_many((int*) CMSG_DATA(cmsg), n); + return -ENOMEM; + } + + memcpy(f + bus->n_fds, CMSG_DATA(cmsg), n * sizeof(int)); + bus->fds = f; + bus->n_fds += n; + } else if (cmsg->cmsg_level == SOL_SOCKET && cmsg->cmsg_type == SCM_CREDENTIALS && cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) { @@ -1157,6 +1191,8 @@ int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) { return -ENOTCONN; if (!m) return -EINVAL; + if (m->n_fds > 0 && !bus->can_fds) + return -ENOTSUP; /* If the serial number isn't kept, then we know that no reply * is expected */ diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index b82caec5f6..bffce10c1f 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -28,7 +28,6 @@ #include "sd-bus-protocol.h" /* TODO: - * - make unix fd passing work * - implicitly add stub introspection calls * - implement unix exec protocol * - server side diff --git a/src/libsystemd-bus/test-bus-chat.c b/src/libsystemd-bus/test-bus-chat.c index 92fdd13faf..bdcca18c84 100644 --- a/src/libsystemd-bus/test-bus-chat.c +++ b/src/libsystemd-bus/test-bus-chat.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "log.h" #include "util.h" @@ -202,6 +203,31 @@ static int server(sd_bus *bus) { } sleep(1); + + } else if (sd_bus_message_is_method_call(m, "org.freedesktop.systemd.test", "FileDescriptor")) { + int fd; + static const char x = 'X'; + + r = sd_bus_message_read(m, "h", &fd); + if (r < 0) { + log_error("Failed to get parameter: %s", strerror(-r)); + goto fail; + } + + if (write(fd, &x, 1) < 0) { + log_error("Failed to write to fd: %m"); + close_nointr_nofail(fd); + goto fail; + } + + close_nointr_nofail(fd); + + r = sd_bus_message_new_method_return(bus, m, &reply); + if (r < 0) { + log_error("Failed to allocate return: %s", strerror(-r)); + goto fail; + } + } else if (sd_bus_message_is_method_call(m, NULL, NULL)) { const sd_bus_error e = SD_BUS_ERROR_INIT_CONST("org.freedesktop.DBus.Error.UnknownMethod", "Unknown method."); @@ -242,6 +268,8 @@ static void* client1(void*p) { sd_bus_error error = SD_BUS_ERROR_INIT; const char *hello; int r; + int pp[2] = { -1, -1 }; + char x; r = sd_bus_open_user(&bus); if (r < 0) { @@ -281,6 +309,46 @@ static void* client1(void*p) { assert(streq(hello, "hello")); + if (pipe2(pp, O_CLOEXEC|O_NONBLOCK) < 0) { + log_error("Failed to allocate pipe: %m"); + r = -errno; + goto finish; + } + + sd_bus_message_unref(m); + m = NULL; + r = sd_bus_message_new_method_call( + bus, + "org.freedesktop.systemd.test", + "/", + "org.freedesktop.systemd.test", + "FileDescriptor", + &m); + if (r < 0) { + log_error("Failed to allocate method call: %s", strerror(-r)); + goto finish; + } + + r = sd_bus_message_append(m, "h", pp[1]); + if (r < 0) { + log_error("Failed to append string: %s", strerror(-r)); + goto finish; + } + + sd_bus_message_unref(reply); + reply = NULL; + r = sd_bus_send_with_reply_and_block(bus, m, 0, &error, &reply); + if (r < 0) { + log_error("Failed to issue method call: %s", bus_error_message(&error, -r)); + goto finish; + } + + errno = 0; + if (read(pp[0], &x, 1) <= 0) { + log_error("Failed to read from pipe: %s", errno ? strerror(errno) : "early read"); + goto finish; + } + r = 0; finish: @@ -305,6 +373,9 @@ finish: } sd_bus_error_free(&error); + + close_pipe(pp); + return INT_TO_PTR(r); } diff --git a/src/libsystemd-bus/test-bus-marshal.c b/src/libsystemd-bus/test-bus-marshal.c index 32bf44fffe..e7d0cc7d72 100644 --- a/src/libsystemd-bus/test-bus-marshal.c +++ b/src/libsystemd-bus/test-bus-marshal.c @@ -121,7 +121,7 @@ int main(int argc, char *argv[]) { m = sd_bus_message_unref(m); - r = bus_message_from_malloc(buffer, sz, NULL, NULL, &m); + r = bus_message_from_malloc(buffer, sz, NULL, 0, NULL, NULL, &m); assert_se(r >= 0); bus_message_dump(m); diff --git a/src/shared/util.c b/src/shared/util.c index 260c100868..03d6f00622 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -219,6 +219,8 @@ void close_nointr_nofail(int fd) { void close_many(const int fds[], unsigned n_fd) { unsigned i; + assert(fds || n_fd <= 0); + for (i = 0; i < n_fd; i++) close_nointr_nofail(fds[i]); } -- cgit v1.2.1 From 66f931b4c818a5f9f7f36b2a0f3b0422609a6e8d Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 24 Mar 2013 23:54:44 +0100 Subject: bus: properly handle termination of connections --- src/libsystemd-bus/sd-bus.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 72c790bd59..941b33ab69 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -532,6 +532,8 @@ static int bus_read_auth(sd_bus *b) { k = recvmsg(b->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL); if (k < 0) return errno == EAGAIN ? 0 : -errno; + if (k == 0) + return -ECONNRESET; b->rbuffer_size += k; @@ -1058,6 +1060,8 @@ static int message_read(sd_bus *bus, sd_bus_message **m) { k = recvmsg(bus->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC); if (k < 0) return errno == EAGAIN ? 0 : -errno; + if (k == 0) + return -ECONNRESET; bus->rbuffer_size += k; -- cgit v1.2.1 From 021a1e78d7621bcd844a9bf22efca88960a8e28b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 24 Mar 2013 23:55:03 +0100 Subject: bus: make optional whether unix socket passing is negotiated and whether hello is sent This alos gets rid of explicit sd_open_fd() and sd_open_address() constructors in favour of sd_new() + sd_new_start() where the negotiation parameters may be set it in between. --- src/libsystemd-bus/bus-internal.h | 5 +- src/libsystemd-bus/bus-message.c | 8 +- src/libsystemd-bus/sd-bus.c | 330 ++++++++++++++++++++++++-------------- src/libsystemd-bus/sd-bus.h | 10 +- 4 files changed, 226 insertions(+), 127 deletions(-) diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index cdd7b2164f..19965083c6 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -57,6 +57,7 @@ struct object_callback { }; enum bus_state { + BUS_UNSET, BUS_OPENING, BUS_AUTHENTICATING, BUS_HELLO, @@ -68,8 +69,10 @@ struct sd_bus { enum bus_state state; int fd; int message_version; + + bool negotiate_fds:1; bool can_fds:1; - bool sent_hello:1; + bool send_hello:1; bool ucred_valid:1; void *rbuffer; diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index 22e6404209..416eedc2ae 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -331,7 +331,7 @@ static sd_bus_message *message_new(sd_bus *bus, uint8_t type) { m->header->endian = SD_BUS_NATIVE_ENDIAN; m->header->type = type; m->header->version = bus ? bus->message_version : 1; - m->allow_fds = !bus || bus->can_fds; + m->allow_fds = !bus || bus->can_fds || (bus->state != BUS_HELLO && bus->state != BUS_RUNNING); return m; } @@ -354,6 +354,8 @@ int sd_bus_message_new_signal( return -EINVAL; if (!m) return -EINVAL; + if (bus && bus->state == BUS_UNSET) + return -ENOTCONN; t = message_new(bus, SD_BUS_MESSAGE_TYPE_SIGNAL); if (!t) @@ -396,6 +398,8 @@ int sd_bus_message_new_method_call( return -EINVAL; if (!m) return -EINVAL; + if (bus && bus->state == BUS_UNSET) + return -ENOTCONN; t = message_new(bus, SD_BUS_MESSAGE_TYPE_METHOD_CALL); if (!t) @@ -445,6 +449,8 @@ static int message_new_reply( return -EINVAL; if (!m) return -EINVAL; + if (bus && bus->state == BUS_UNSET) + return -ENOTCONN; t = message_new(bus, type); if (!t) diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 941b33ab69..df4010265f 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -82,33 +82,91 @@ static void bus_free(sd_bus *b) { free(b); } -static sd_bus* bus_new(void) { +int sd_bus_new(sd_bus **ret) { sd_bus *r; + if (!ret) + return -EINVAL; + r = new0(sd_bus, 1); if (!r) - return NULL; + return -ENOMEM; r->n_ref = 1; r->fd = -1; r->message_version = 1; + r->negotiate_fds = true; /* We guarantee that wqueue always has space for at least one * entry */ r->wqueue = new(sd_bus_message*, 1); if (!r->wqueue) { free(r); - return NULL; + return -ENOMEM; } - return r; -}; + *ret = r; + return 0; +} + +int sd_bus_set_address(sd_bus *bus, const char *address) { + char *a; + + if (!bus) + return -EINVAL; + if (bus->state != BUS_UNSET) + return -EPERM; + if (!address) + return -EINVAL; + + a = strdup(address); + if (!a) + return -ENOMEM; + + free(bus->address); + bus->address = a; + + return 0; +} + +int sd_bus_set_fd(sd_bus *bus, int fd) { + if (!bus) + return -EINVAL; + if (bus->state != BUS_UNSET) + return -EPERM; + if (fd < 0) + return -EINVAL; + + bus->fd = fd; + return 0; +} + +int sd_bus_set_hello(sd_bus *bus, int b) { + if (!bus) + return -EINVAL; + if (bus->state != BUS_UNSET) + return -EPERM; + + bus->send_hello = !!b; + return 0; +} + +int sd_bus_set_negotiate_fds(sd_bus *bus, int b) { + if (!bus) + return -EINVAL; + if (bus->state != BUS_UNSET) + return -EPERM; + + bus->negotiate_fds = !!b; + return 0; +} static int hello_callback(sd_bus *bus, int error, sd_bus_message *reply, void *userdata) { const char *s; int r; assert(bus); + assert(bus->state == BUS_HELLO); if (error != 0) return -error; @@ -137,6 +195,9 @@ static int bus_send_hello(sd_bus *bus) { assert(bus); + if (!bus->send_hello) + return 0; + r = sd_bus_message_new_method_call( bus, "org.freedesktop.DBus", @@ -151,14 +212,13 @@ static int bus_send_hello(sd_bus *bus) { if (r < 0) return r; - bus->sent_hello = true; return r; } static int bus_start_running(sd_bus *bus) { assert(bus); - if (bus->sent_hello) { + if (bus->send_hello) { bus->state = BUS_HELLO; return 1; } @@ -439,21 +499,31 @@ static int bus_write_auth(sd_bus *b) { } static int bus_auth_verify(sd_bus *b) { - char *e, *f; + char *e, *f, *start; sd_id128_t peer; unsigned i; int r; - /* We expect two response lines: "OK", "AGREE_UNIX_FD", and - * that's it */ + /* We expect two response lines: "OK" and possibly + * "AGREE_UNIX_FD" */ e = memmem(b->rbuffer, b->rbuffer_size, "\r\n", 2); if (!e) return 0; - f = memmem(e + 2, b->rbuffer_size - (e - (char*) b->rbuffer) - 2, "\r\n", 2); - if (!f) - return 0; + if (b->negotiate_fds) { + f = memmem(e + 2, b->rbuffer_size - (e - (char*) b->rbuffer) - 2, "\r\n", 2); + if (!f) + return 0; + + start = f + 2; + } else { + f = NULL; + start = e + 2; + } + + /* Nice! We got all the lines we need. First check the OK + * line */ if (e - (char*) b->rbuffer != 3 + 32) return -EPERM; @@ -479,12 +549,15 @@ static int bus_auth_verify(sd_bus *b) { b->peer = peer; - b->can_fds = - (f - e == sizeof("\r\nAGREE_UNIX_FD") - 1) && - memcmp(e + 2, "AGREE_UNIX_FD", sizeof("AGREE_UNIX_FD") - 1) == 0; + /* And possibly check the second line, too */ + + if (f) + b->can_fds = + (f - e == sizeof("\r\nAGREE_UNIX_FD") - 1) && + memcmp(e + 2, "AGREE_UNIX_FD", sizeof("AGREE_UNIX_FD") - 1) == 0; - b->rbuffer_size -= (f + 2 - (char*) b->rbuffer); - memmove(b->rbuffer, f + 2, b->rbuffer_size); + b->rbuffer_size -= (start - (char*) b->rbuffer); + memmove(b->rbuffer, start, b->rbuffer_size); r = bus_start_running(b); if (r < 0) @@ -564,10 +637,12 @@ static int bus_setup_fd(sd_bus *b) { static int bus_start_auth(sd_bus *b) { static const char auth_prefix[] = "\0AUTH EXTERNAL "; - static const char auth_suffix[] = "\r\nNEGOTIATE_UNIX_FD\r\nBEGIN\r\n"; + static const char auth_suffix_with_unix_fd[] = "\r\nNEGOTIATE_UNIX_FD\r\nBEGIN\r\n"; + static const char auth_suffix_without_unix_fd[] = "\r\nBEGIN\r\n"; char text[20 + 1]; /* enough space for a 64bit integer plus NUL */ size_t l; + const char *auth_suffix; assert(b); @@ -581,12 +656,14 @@ static int bus_start_auth(sd_bus *b) { if (!b->auth_uid) return -ENOMEM; + auth_suffix = b->negotiate_fds ? auth_suffix_with_unix_fd : auth_suffix_without_unix_fd; + b->auth_iovec[0].iov_base = (void*) auth_prefix; b->auth_iovec[0].iov_len = sizeof(auth_prefix) -1; b->auth_iovec[1].iov_base = (void*) b->auth_uid; b->auth_iovec[1].iov_len = l * 2; b->auth_iovec[2].iov_base = (void*) auth_suffix; - b->auth_iovec[2].iov_len = sizeof(auth_suffix) -1; + b->auth_iovec[2].iov_len = strlen(auth_suffix); b->auth_size = sizeof(auth_prefix) - 1 + l * 2 + sizeof(auth_suffix) - 1; return bus_write_auth(b); @@ -640,6 +717,49 @@ static int bus_start_connect(sd_bus *b) { } } +static int bus_start_fd(sd_bus *b) { + int r; + + assert(b); + + r = fd_nonblock(b->fd, true); + if (r < 0) + return r; + + r = fd_cloexec(b->fd, true); + if (r < 0) + return r; + + r = bus_setup_fd(b); + if (r < 0) + return r; + + return bus_start_auth(b); +} + +int sd_bus_start(sd_bus *bus) { + int r; + + if (!bus) + return -EINVAL; + if (bus->state != BUS_UNSET) + return -EPERM; + + bus->state = BUS_OPENING; + + if (bus->fd >= 0) + r = bus_start_fd(bus); + else if (bus->address) + r = bus_start_connect(bus); + else + return -EINVAL; + + if (r < 0) + return r; + + return bus_send_hello(bus); +} + int sd_bus_open_system(sd_bus **ret) { const char *e; sd_bus *b; @@ -648,35 +768,33 @@ int sd_bus_open_system(sd_bus **ret) { if (!ret) return -EINVAL; + r = sd_bus_new(&b); + if (r < 0) + return r; + e = getenv("DBUS_SYSTEM_BUS_ADDRESS"); if (e) { - r = sd_bus_open_address(e, &b); + r = sd_bus_set_address(b, e); if (r < 0) - return r; + goto fail; } else { - b = bus_new(); - if (!b) - return -ENOMEM; - b->sockaddr.un.sun_family = AF_UNIX; strncpy(b->sockaddr.un.sun_path, "/run/dbus/system_bus_socket", sizeof(b->sockaddr.un.sun_path)); b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + sizeof("/run/dbus/system_bus_socket") - 1; - - r = bus_start_connect(b); - if (r < 0) { - bus_free(b); - return r; - } } - r = bus_send_hello(b); - if (r < 0) { - sd_bus_unref(b); - return r; - } + b->send_hello = true; + + r = sd_bus_start(b); + if (r < 0) + goto fail; *ret = b; return 0; + +fail: + bus_free(b); + return r; } int sd_bus_open_user(sd_bus **ret) { @@ -688,102 +806,36 @@ int sd_bus_open_user(sd_bus **ret) { if (!ret) return -EINVAL; + r = sd_bus_new(&b); + if (r < 0) + return r; + e = getenv("DBUS_SESSION_BUS_ADDRESS"); if (e) { - r = sd_bus_open_address(e, &b); + r = sd_bus_set_address(b, e); if (r < 0) - return r; + goto fail; } else { e = getenv("XDG_RUNTIME_DIR"); - if (!e) - return -ENOENT; + if (!e) { + r = -ENOENT; + goto fail; + } l = strlen(e); - if (l + 4 > sizeof(b->sockaddr.un.sun_path)) - return -E2BIG; - - b = bus_new(); - if (!b) - return -ENOMEM; + if (l + 4 > sizeof(b->sockaddr.un.sun_path)) { + r = -E2BIG; + goto fail; + } b->sockaddr.un.sun_family = AF_UNIX; memcpy(mempcpy(b->sockaddr.un.sun_path, e, l), "/bus", 4); b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + l + 4; - - r = bus_start_connect(b); - if (r < 0) { - bus_free(b); - return r; - } } - r = bus_send_hello(b); - if (r < 0) { - sd_bus_unref(b); - return r; - } - - *ret = b; - return 0; -} - -int sd_bus_open_address(const char *address, sd_bus **ret) { - sd_bus *b; - int r; - - if (!address) - return -EINVAL; - if (!ret) - return -EINVAL; - - b = bus_new(); - if (!b) - return -ENOMEM; - - b->address = strdup(address); - if (!b->address) { - bus_free(b); - return -ENOMEM; - } - - r = bus_start_connect(b); - if (r < 0) { - bus_free(b); - return r; - } + b->send_hello = true; - *ret = b; - return 0; -} - -int sd_bus_open_fd(int fd, sd_bus **ret) { - sd_bus *b; - int r; - - if (fd < 0) - return -EINVAL; - if (!ret) - return -EINVAL; - - b = bus_new(); - if (!b) - return -ENOMEM; - - b->fd = fd; - - r = fd_nonblock(b->fd, true); - if (r < 0) - goto fail; - - fd_cloexec(b->fd, true); - if (r < 0) - goto fail; - - r = bus_setup_fd(b); - if (r < 0) - goto fail; - - r = bus_start_auth(b); + r = sd_bus_start(b); if (r < 0) goto fail; @@ -791,7 +843,7 @@ int sd_bus_open_fd(int fd, sd_bus **ret) { return 0; fail: - bus_free(b); + bus_free(b); return r; } @@ -832,7 +884,7 @@ int sd_bus_is_open(sd_bus *bus) { if (!bus) return -EINVAL; - return bus->fd >= 0; + return bus->state != BUS_UNSET && bus->fd >= 0; } int sd_bus_can_send(sd_bus *bus, char type) { @@ -840,8 +892,13 @@ int sd_bus_can_send(sd_bus *bus, char type) { if (!bus) return -EINVAL; + if (bus->fd < 0) + return -ENOTCONN; if (type == SD_BUS_TYPE_UNIX_FD) { + if (!bus->negotiate_fds) + return 0; + r = bus_ensure_running(bus); if (r < 0) return r; @@ -1191,12 +1248,20 @@ int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) { if (!bus) return -EINVAL; + if (bus->state == BUS_UNSET) + return -ENOTCONN; if (bus->fd < 0) return -ENOTCONN; if (!m) return -EINVAL; - if (m->n_fds > 0 && !bus->can_fds) - return -ENOTSUP; + + if (m->n_fds > 0) { + r = sd_bus_can_send(bus, SD_BUS_TYPE_UNIX_FD); + if (r < 0) + return r; + if (r == 0) + return -ENOTSUP; + } /* If the serial number isn't kept, then we know that no reply * is expected */ @@ -1292,6 +1357,8 @@ int sd_bus_send_with_reply( if (!bus) return -EINVAL; + if (bus->state == BUS_UNSET) + return -ENOTCONN; if (bus->fd < 0) return -ENOTCONN; if (!m) @@ -1374,6 +1441,11 @@ int bus_ensure_running(sd_bus *bus) { assert(bus); + if (bus->fd < 0) + return -ENOTCONN; + if (bus->state == BUS_UNSET) + return -ENOTCONN; + if (bus->state == BUS_RUNNING) return 1; @@ -1408,6 +1480,8 @@ int sd_bus_send_with_reply_and_block( return -EINVAL; if (bus->fd < 0) return -ENOTCONN; + if (bus->state == BUS_UNSET) + return -ENOTCONN; if (!m) return -EINVAL; if (m->header->type != SD_BUS_MESSAGE_TYPE_METHOD_CALL) @@ -1526,6 +1600,8 @@ int sd_bus_get_events(sd_bus *bus) { if (!bus) return -EINVAL; + if (bus->state == BUS_UNSET) + return -ENOTCONN; if (bus->fd < 0) return -ENOTCONN; @@ -1555,6 +1631,8 @@ int sd_bus_get_timeout(sd_bus *bus, uint64_t *timeout_usec) { return -EINVAL; if (!timeout_usec) return -EINVAL; + if (bus->state == BUS_UNSET) + return -ENOTCONN; if (bus->fd < 0) return -ENOTCONN; @@ -1782,6 +1860,8 @@ int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { if (!bus) return -EINVAL; + if (bus->state == BUS_UNSET) + return -ENOTCONN; if (bus->fd < 0) return -ENOTCONN; @@ -1938,6 +2018,8 @@ int sd_bus_wait(sd_bus *bus, uint64_t timeout_usec) { if (!bus) return -EINVAL; + if (bus->state == BUS_UNSET) + return -ENOTCONN; if (bus->fd < 0) return -ENOTCONN; if (bus->rqueue_size > 0) @@ -1951,6 +2033,8 @@ int sd_bus_flush(sd_bus *bus) { if (!bus) return -EINVAL; + if (bus->state == BUS_UNSET) + return -ENOTCONN; if (bus->fd < 0) return -ENOTCONN; diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index bffce10c1f..c97b2f4f49 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -53,8 +53,14 @@ typedef int (*sd_message_handler_t)(sd_bus *bus, int ret, sd_bus_message *m, voi int sd_bus_open_system(sd_bus **ret); int sd_bus_open_user(sd_bus **ret); -int sd_bus_open_address(const char *address, sd_bus **ret); -int sd_bus_open_fd(int fd, sd_bus **ret); + +int sd_bus_new(sd_bus **ret); +int sd_bus_set_address(sd_bus *bus, const char *address); +int sd_bus_set_fd(sd_bus *bus, int fd); +int sd_bus_set_hello(sd_bus *bus, int b); +int sd_bus_set_negotiate_fds(sd_bus *bus, int b); +int sd_bus_start(sd_bus *ret); + void sd_bus_close(sd_bus *bus); sd_bus *sd_bus_ref(sd_bus *bus); -- cgit v1.2.1 From 2fd9ae2e9bd585312e15f8383036caee704822fb Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 02:30:32 +0100 Subject: bus: implement 'unixexec:' protocol --- src/libsystemd-bus/bus-internal.h | 5 + src/libsystemd-bus/sd-bus.c | 540 ++++++++++++++++++++++++++++---------- src/libsystemd-bus/sd-bus.h | 3 +- src/shared/strv.c | 4 +- src/shared/strv.h | 6 +- 5 files changed, 417 insertions(+), 141 deletions(-) diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index 19965083c6..b7ed42ccd4 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -120,6 +120,9 @@ struct sd_bus { int *fds; unsigned n_fds; + + char *exec_path; + char **exec_argv; }; static inline void bus_unrefp(sd_bus **b) { @@ -145,6 +148,8 @@ static inline void bus_unrefp(sd_bus **b) { #define BUS_FDS_MAX 1024 +#define BUS_EXEC_ARGV_MAX 256 + bool object_path_is_valid(const char *p); bool interface_name_is_valid(const char *p); bool service_name_is_valid(const char *p); diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index df4010265f..3bdbd11132 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -30,6 +30,7 @@ #include "util.h" #include "macro.h" #include "missing.h" +#include "strv.h" #include "sd-bus.h" #include "bus-internal.h" @@ -53,6 +54,9 @@ static void bus_free(sd_bus *b) { free(b->auth_uid); free(b->address); + free(b->exec_path); + strv_free(b->exec_argv); + close_many(b->fds, b->n_fds); free(b->fds); @@ -141,6 +145,37 @@ int sd_bus_set_fd(sd_bus *bus, int fd) { return 0; } +int sd_bus_set_exec(sd_bus *bus, const char *path, char *const argv[]) { + char *p, **a; + + if (!bus) + return -EINVAL; + if (bus->state != BUS_UNSET) + return -EPERM; + if (!path) + return -EINVAL; + if (strv_isempty(argv)) + return -EINVAL; + + p = strdup(path); + if (!p) + return -ENOMEM; + + a = strv_copy(argv); + if (!a) { + free(p); + return -ENOMEM; + } + + free(bus->exec_path); + strv_free(bus->exec_argv); + + bus->exec_path = p; + bus->exec_argv = a; + + return 0; +} + int sd_bus_set_hello(sd_bus *bus, int b) { if (!bus) return -EINVAL; @@ -234,21 +269,24 @@ static int parse_address_key(const char **p, const char *key, char **value) { assert(p); assert(*p); - assert(key); assert(value); - l = strlen(key); - if (strncmp(*p, key, l) != 0) - return 0; + if (key) { + l = strlen(key); + if (strncmp(*p, key, l) != 0) + return 0; - if ((*p)[l] != '=') - return 0; + if ((*p)[l] != '=') + return 0; - if (*value) - return -EINVAL; + if (*value) + return -EINVAL; - a = *p + l + 1; - while (*a != ',' && *a != 0) { + a = *p + l + 1; + } else + a = *p; + + while (*a != ';' && *a != ',' && *a != 0) { char c, *t; if (*a == '%') { @@ -294,7 +332,10 @@ static int parse_address_key(const char **p, const char *key, char **value) { a++; *p = a; + + free(*value); *value = r; + return 1; } @@ -308,138 +349,293 @@ static void skip_address_key(const char **p) { (*p) ++; } -static int bus_parse_next_address(sd_bus *b) { - const char *a, *p; - _cleanup_free_ char *guid = NULL; +static int parse_unix_address(sd_bus *b, const char **p, char **guid) { + _cleanup_free_ char *path = NULL, *abstract = NULL; + size_t l; int r; assert(b); + assert(p); + assert(*p); + assert(guid); - if (!b->address) - return 0; - if (b->address[b->address_index] == 0) - return 0; + while (**p != 0 && **p != ';') { + r = parse_address_key(p, "guid", guid); + if (r < 0) + return r; + else if (r > 0) + continue; - a = b->address + b->address_index; + r = parse_address_key(p, "path", &path); + if (r < 0) + return r; + else if (r > 0) + continue; - zero(b->sockaddr); - b->sockaddr_size = 0; - b->peer = SD_ID128_NULL; + r = parse_address_key(p, "abstract", &abstract); + if (r < 0) + return r; + else if (r > 0) + continue; - if (startswith(a, "unix:")) { - _cleanup_free_ char *path = NULL, *abstract = NULL; + skip_address_key(p); + } - p = a + 5; - while (*p != 0) { - r = parse_address_key(&p, "guid", &guid); - if (r < 0) - return r; - else if (r > 0) - continue; + if (!path && !abstract) + return -EINVAL; - r = parse_address_key(&p, "path", &path); - if (r < 0) - return r; - else if (r > 0) - continue; + if (path && abstract) + return -EINVAL; + + if (path) { + l = strlen(path); + if (l > sizeof(b->sockaddr.un.sun_path)) + return -E2BIG; + + b->sockaddr.un.sun_family = AF_UNIX; + strncpy(b->sockaddr.un.sun_path, path, sizeof(b->sockaddr.un.sun_path)); + b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + l; + } else if (abstract) { + l = strlen(abstract); + if (l > sizeof(b->sockaddr.un.sun_path) - 1) + return -E2BIG; + + b->sockaddr.un.sun_family = AF_UNIX; + b->sockaddr.un.sun_path[0] = 0; + strncpy(b->sockaddr.un.sun_path+1, abstract, sizeof(b->sockaddr.un.sun_path)-1); + b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + 1 + l; + } + + return 0; +} + +static int parse_tcp_address(sd_bus *b, const char **p, char **guid) { + _cleanup_free_ char *host = NULL, *port = NULL, *family = NULL; + struct addrinfo hints, *result; + int r; + + assert(b); + assert(p); + assert(*p); + assert(guid); + + while (**p != 0 && **p != ';') { + r = parse_address_key(p, "guid", guid); + if (r < 0) + return r; + else if (r > 0) + continue; + + r = parse_address_key(p, "host", &host); + if (r < 0) + return r; + else if (r > 0) + continue; + + r = parse_address_key(p, "port", &port); + if (r < 0) + return r; + else if (r > 0) + continue; + + r = parse_address_key(p, "family", &family); + if (r < 0) + return r; + else if (r > 0) + continue; + + skip_address_key(p); + } + + if (!host || !port) + return -EINVAL; + + zero(hints); + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_ADDRCONFIG; + + if (family) { + if (streq(family, "ipv4")) + hints.ai_family = AF_INET; + else if (streq(family, "ipv6")) + hints.ai_family = AF_INET6; + else + return -EINVAL; + } + + r = getaddrinfo(host, port, &hints, &result); + if (r == EAI_SYSTEM) + return -errno; + else if (r != 0) + return -EADDRNOTAVAIL; + + memcpy(&b->sockaddr, result->ai_addr, result->ai_addrlen); + b->sockaddr_size = result->ai_addrlen; + + freeaddrinfo(result); + + return 0; +} + +static int parse_exec_address(sd_bus *b, const char **p, char **guid) { + char *path = NULL; + unsigned n_argv = 0, j; + char **argv = NULL; + int r; + + assert(b); + assert(p); + assert(*p); + assert(guid); + + while (**p != 0 && **p != ';') { + r = parse_address_key(p, "guid", guid); + if (r < 0) + goto fail; + else if (r > 0) + continue; + + r = parse_address_key(p, "path", &path); + if (r < 0) + goto fail; + else if (r > 0) + continue; + + if (startswith(*p, "argv")) { + unsigned ul; + + errno = 0; + ul = strtoul(*p + 4, (char**) p, 10); + if (errno != 0 || **p != '=' || ul > 256) { + r = -EINVAL; + goto fail; + } + + (*p) ++; - r = parse_address_key(&p, "abstract", &abstract); + if (ul >= n_argv) { + char **x; + + x = realloc(argv, sizeof(char*) * (ul + 2)); + if (!x) { + r = -ENOMEM; + goto fail; + } + + memset(x + n_argv, 0, sizeof(char*) * (ul - n_argv + 2)); + + argv = x; + n_argv = ul + 1; + } + + r = parse_address_key(p, NULL, argv + ul); if (r < 0) - return r; - else if (r > 0) - continue; + goto fail; - skip_address_key(&p); + continue; } - if (!path && !abstract) - return -EINVAL; + skip_address_key(p); + } - if (path && abstract) - return -EINVAL; + if (!path) + goto fail; - if (path) { - size_t l; + /* Make sure there are no holes in the array, with the + * exception of argv[0] */ + for (j = 1; j < n_argv; j++) + if (!argv[j]) { + r = -EINVAL; + goto fail; + } - l = strlen(path); - if (l > sizeof(b->sockaddr.un.sun_path)) - return -E2BIG; + if (argv && argv[0] == NULL) { + argv[0] = strdup(path); + if (!argv[0]) { + r = -ENOMEM; + goto fail; + } + } - b->sockaddr.un.sun_family = AF_UNIX; - strncpy(b->sockaddr.un.sun_path, path, sizeof(b->sockaddr.un.sun_path)); - b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + l; - } else if (abstract) { - size_t l; + b->exec_path = path; + b->exec_argv = argv; + return 0; + +fail: + for (j = 0; j < n_argv; j++) + free(argv[j]); + + free(argv); + free(path); + return r; +} + +static void bus_reset_parsed_address(sd_bus *b) { + assert(b); + + zero(b->sockaddr); + b->sockaddr_size = 0; + strv_free(b->exec_argv); + free(b->exec_path); + b->exec_path = NULL; + b->exec_argv = NULL; + b->peer = SD_ID128_NULL; +} + +static int bus_parse_next_address(sd_bus *b) { + _cleanup_free_ char *guid = NULL; + const char *a; + int r; + + assert(b); + + if (!b->address) + return 0; + if (b->address[b->address_index] == 0) + return 0; - l = strlen(abstract); - if (l > sizeof(b->sockaddr.un.sun_path) - 1) - return -E2BIG; + bus_reset_parsed_address(b); + + a = b->address + b->address_index; - b->sockaddr.un.sun_family = AF_UNIX; - b->sockaddr.un.sun_path[0] = 0; - strncpy(b->sockaddr.un.sun_path+1, abstract, sizeof(b->sockaddr.un.sun_path)-1); - b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + 1 + l; + while (*a != 0) { + + if (*a == ';') { + a++; + continue; } - } else if (startswith(a, "tcp:")) { - _cleanup_free_ char *host = NULL, *port = NULL, *family = NULL; - struct addrinfo hints, *result; + if (startswith(a, "unix:")) { + a += 5; - p = a + 4; - while (*p != 0) { - r = parse_address_key(&p, "guid", &guid); + r = parse_unix_address(b, &a, &guid); if (r < 0) return r; - else if (r > 0) - continue; + break; - r = parse_address_key(&p, "host", &host); - if (r < 0) - return r; - else if (r > 0) - continue; + } else if (startswith(a, "tcp:")) { - r = parse_address_key(&p, "port", &port); + a += 4; + r = parse_tcp_address(b, &a, &guid); if (r < 0) return r; - else if (r > 0) - continue; - r = parse_address_key(&p, "family", &family); + break; + + } else if (startswith(a, "unixexec:")) { + + a += 9; + r = parse_exec_address(b, &a, &guid); if (r < 0) return r; - else if (r > 0) - continue; - - skip_address_key(&p); - } - if (!host || !port) - return -EINVAL; + break; - zero(hints); - hints.ai_socktype = SOCK_STREAM; - hints.ai_flags = AI_ADDRCONFIG; - - if (family) { - if (streq(family, "ipv4")) - hints.ai_family = AF_INET; - else if (streq(family, "ipv6")) - hints.ai_family = AF_INET6; - else - return -EINVAL; } - r = getaddrinfo(host, port, &hints, &result); - if (r == EAI_SYSTEM) - return -errno; - else if (r != 0) - return -EADDRNOTAVAIL; - - memcpy(&b->sockaddr, result->ai_addr, result->ai_addrlen); - b->sockaddr_size = result->ai_addrlen; - - freeaddrinfo(result); + a = strchr(a, ';'); + if (!a) + return 0; } if (guid) { @@ -448,7 +644,7 @@ static int bus_parse_next_address(sd_bus *b) { return r; } - b->address_index = p - b->address; + b->address_index = a - b->address; return 1; } @@ -643,11 +839,21 @@ static int bus_start_auth(sd_bus *b) { char text[20 + 1]; /* enough space for a 64bit integer plus NUL */ size_t l; const char *auth_suffix; + int domain = 0, r; + socklen_t sl; assert(b); b->state = BUS_AUTHENTICATING; + sl = sizeof(domain); + r = getsockopt(b->fd, SOL_SOCKET, SO_DOMAIN, &domain, &sl); + if (r < 0) + return -errno; + + if (domain != AF_UNIX) + b->negotiate_fds = false; + snprintf(text, sizeof(text), "%llu", (unsigned long long) geteuid()); char_array_0(text); @@ -669,51 +875,114 @@ static int bus_start_auth(sd_bus *b) { return bus_write_auth(b); } -static int bus_start_connect(sd_bus *b) { +static int bus_connect(sd_bus *b) { int r; assert(b); assert(b->fd < 0); + assert(b->sockaddr.sa.sa_family != AF_UNSPEC); - for (;;) { - if (b->sockaddr.sa.sa_family == AF_UNSPEC) { - r = bus_parse_next_address(b); - if (r < 0) - return r; - if (r == 0) - return b->last_connect_error ? -b->last_connect_error : -ECONNREFUSED; - } + b->fd = socket(b->sockaddr.sa.sa_family, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); + if (b->fd < 0) + return -errno; - b->fd = socket(b->sockaddr.sa.sa_family, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); - if (b->fd < 0) { - b->last_connect_error = errno; - goto try_again; - } + r = bus_setup_fd(b); + if (r < 0) + return r; - r = bus_setup_fd(b); - if (r < 0) { - b->last_connect_error = errno; - goto try_again; - } + r = connect(b->fd, &b->sockaddr.sa, b->sockaddr_size); + if (r < 0) { + if (errno == EINPROGRESS) + return 1; - r = connect(b->fd, &b->sockaddr.sa, b->sockaddr_size); - if (r < 0) { - if (errno == EINPROGRESS) - return 1; + return -errno; + } + + return bus_start_auth(b); +} + +static int bus_exec(sd_bus *b) { + int s[2]; + pid_t pid; + + assert(b); + assert(b->fd < 0); + assert(b->exec_path); - b->last_connect_error = errno; - goto try_again; + b->fd = socketpair(AF_UNIX, SOCK_STREAM|SOCK_NONBLOCK|SOCK_CLOEXEC, 0, s); + if (b->fd < 0) + return -errno; + + pid = fork(); + if (pid < 0) { + close_pipe(s); + return -errno; + } + if (pid == 0) { + /* Child */ + + close_all_fds(s, 2); + close_nointr_nofail(s[0]); + + assert_se(dup3(s[1], STDIN_FILENO, 0) == STDIN_FILENO); + assert_se(dup3(s[1], STDOUT_FILENO, 0) == STDOUT_FILENO); + + if (s[1] != STDIN_FILENO && s[1] != STDOUT_FILENO) + close_nointr_nofail(s[1]); + + fd_cloexec(STDIN_FILENO, false); + fd_cloexec(STDOUT_FILENO, false); + fd_nonblock(STDIN_FILENO, false); + fd_nonblock(STDOUT_FILENO, false); + + if (b->exec_argv) + execvp(b->exec_path, b->exec_argv); + else { + const char *argv[] = { b->exec_path, NULL }; + execvp(b->exec_path, (char**) argv); } - return bus_start_auth(b); + _exit(EXIT_FAILURE); + } + + close_nointr_nofail(s[1]); + b->fd = s[0]; + + return bus_start_auth(b); +} - try_again: - zero(b->sockaddr); +static int bus_start_connect(sd_bus *b) { + int r; + assert(b); + + for (;;) { if (b->fd >= 0) { close_nointr_nofail(b->fd); b->fd = -1; } + + if (b->sockaddr.sa.sa_family != AF_UNSPEC) { + r = bus_connect(b); + if (r >= 0) + return r; + + b->last_connect_error = -r; + + } else if (b->exec_path) { + + r = bus_exec(b); + if (r >= 0) + return r; + + b->last_connect_error = -r; + } + + r = bus_parse_next_address(b); + if (r < 0) + return r; + if (r == 0) + return b->last_connect_error ? -b->last_connect_error : -ECONNREFUSED; } } @@ -1893,6 +2162,7 @@ int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { } /* Try next address */ + bus_reset_parsed_address(bus); r = bus_start_connect(bus); goto null_message; } diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index c97b2f4f49..e5990ad431 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -29,8 +29,8 @@ /* TODO: * - implicitly add stub introspection calls - * - implement unix exec protocol * - server side + * - split out actual sending logic into backend-socket.c * * Later: * - add page donation logic @@ -57,6 +57,7 @@ int sd_bus_open_user(sd_bus **ret); int sd_bus_new(sd_bus **ret); int sd_bus_set_address(sd_bus *bus, const char *address); int sd_bus_set_fd(sd_bus *bus, int fd); +int sd_bus_set_exec(sd_bus *bus, const char *path, char *const argv[]); int sd_bus_set_hello(sd_bus *bus, int b); int sd_bus_set_negotiate_fds(sd_bus *bus, int b); int sd_bus_start(sd_bus *ret); diff --git a/src/shared/strv.c b/src/shared/strv.c index e57e0ee7bf..a5ce7e9593 100644 --- a/src/shared/strv.c +++ b/src/shared/strv.c @@ -64,7 +64,7 @@ void strv_free(char **l) { free(l); } -char **strv_copy(char **l) { +char **strv_copy(char * const *l) { char **r, **k; k = r = new(char*, strv_length(l) + 1); @@ -84,7 +84,7 @@ char **strv_copy(char **l) { return r; } -unsigned strv_length(char **l) { +unsigned strv_length(char * const *l) { unsigned n = 0; if (!l) diff --git a/src/shared/strv.h b/src/shared/strv.h index 910d15337f..4cd3865e1d 100644 --- a/src/shared/strv.h +++ b/src/shared/strv.h @@ -34,8 +34,8 @@ static inline void strv_freep(char ***l) { strv_free(*l); } -char **strv_copy(char **l) _malloc_; -unsigned strv_length(char **l); +char **strv_copy(char * const *l) _malloc_; +unsigned strv_length(char * const *l); char **strv_merge(char **a, char **b); char **strv_merge_concat(char **a, char **b, const char *suffix); @@ -56,7 +56,7 @@ static inline const char* STRV_IFNOTNULL(const char *x) { return x ? x : (const char *) -1; } -static inline bool strv_isempty(char **l) { +static inline bool strv_isempty(char * const *l) { return !l || !*l; } -- cgit v1.2.1 From a7e3212d89d5aefee67de79c1e7eaccf2f5645ac Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 03:04:03 +0100 Subject: bus: split socket related code into bus-socket.[ch], to prepare for kdbus backend --- Makefile.am | 2 + src/libsystemd-bus/bus-internal.h | 2 + src/libsystemd-bus/bus-socket.c | 628 ++++++++++++++++++++++++++++++++ src/libsystemd-bus/bus-socket.h | 34 ++ src/libsystemd-bus/sd-bus.c | 728 +++++--------------------------------- src/libsystemd-bus/sd-bus.h | 2 +- 6 files changed, 756 insertions(+), 640 deletions(-) create mode 100644 src/libsystemd-bus/bus-socket.c create mode 100644 src/libsystemd-bus/bus-socket.h diff --git a/Makefile.am b/Makefile.am index d81a305441..f958974833 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1661,6 +1661,8 @@ libsystemd_bus_la_SOURCES = \ src/libsystemd-bus/bus-error.h \ src/libsystemd-bus/bus-internal.c \ src/libsystemd-bus/bus-internal.h \ + src/libsystemd-bus/bus-socket.c \ + src/libsystemd-bus/bus-socket.h \ src/libsystemd-bus/bus-message.c \ src/libsystemd-bus/bus-message.h \ src/libsystemd-bus/bus-signature.c \ diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index b7ed42ccd4..78d955d00f 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -158,3 +158,5 @@ bool member_name_is_valid(const char *p); #define error_name_is_valid interface_name_is_valid int bus_ensure_running(sd_bus *bus); +int bus_start_running(sd_bus *bus); +int bus_next_address(sd_bus *bus); diff --git a/src/libsystemd-bus/bus-socket.c b/src/libsystemd-bus/bus-socket.c new file mode 100644 index 0000000000..f40aa59f51 --- /dev/null +++ b/src/libsystemd-bus/bus-socket.c @@ -0,0 +1,628 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include +#include +#include +#include +#include + +#include "util.h" +#include "macro.h" +#include "missing.h" +#include "strv.h" + +#include "sd-bus.h" +#include "bus-socket.h" +#include "bus-internal.h" +#include "bus-message.h" + +static void iovec_advance(struct iovec *iov, unsigned *idx, size_t size) { + + while (size > 0) { + struct iovec *i = iov + *idx; + + if (i->iov_len > size) { + i->iov_base = (uint8_t*) i->iov_base + size; + i->iov_len -= size; + return; + } + + size -= i->iov_len; + + i->iov_base = NULL; + i->iov_len = 0; + + (*idx) ++; + } +} + +static int bus_socket_write_auth(sd_bus *b) { + struct msghdr mh; + ssize_t k; + + assert(b); + assert(b->state == BUS_AUTHENTICATING); + + if (b->auth_index >= ELEMENTSOF(b->auth_iovec)) + return 0; + + if (b->auth_timeout == 0) + b->auth_timeout = now(CLOCK_MONOTONIC) + BUS_DEFAULT_TIMEOUT; + + zero(mh); + mh.msg_iov = b->auth_iovec + b->auth_index; + mh.msg_iovlen = ELEMENTSOF(b->auth_iovec) - b->auth_index; + + k = sendmsg(b->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL); + if (k < 0) + return errno == EAGAIN ? 0 : -errno; + + iovec_advance(b->auth_iovec, &b->auth_index, (size_t) k); + + return 1; +} + +static int bus_socket_auth_verify(sd_bus *b) { + char *e, *f, *start; + sd_id128_t peer; + unsigned i; + int r; + + /* We expect two response lines: "OK" and possibly + * "AGREE_UNIX_FD" */ + + e = memmem(b->rbuffer, b->rbuffer_size, "\r\n", 2); + if (!e) + return 0; + + if (b->negotiate_fds) { + f = memmem(e + 2, b->rbuffer_size - (e - (char*) b->rbuffer) - 2, "\r\n", 2); + if (!f) + return 0; + + start = f + 2; + } else { + f = NULL; + start = e + 2; + } + + /* Nice! We got all the lines we need. First check the OK + * line */ + + if (e - (char*) b->rbuffer != 3 + 32) + return -EPERM; + + if (memcmp(b->rbuffer, "OK ", 3)) + return -EPERM; + + for (i = 0; i < 32; i += 2) { + int x, y; + + x = unhexchar(((char*) b->rbuffer)[3 + i]); + y = unhexchar(((char*) b->rbuffer)[3 + i + 1]); + + if (x < 0 || y < 0) + return -EINVAL; + + peer.bytes[i/2] = ((uint8_t) x << 4 | (uint8_t) y); + } + + if (!sd_id128_equal(b->peer, SD_ID128_NULL) && + !sd_id128_equal(b->peer, peer)) + return -EPERM; + + b->peer = peer; + + /* And possibly check the second line, too */ + + if (f) + b->can_fds = + (f - e == sizeof("\r\nAGREE_UNIX_FD") - 1) && + memcmp(e + 2, "AGREE_UNIX_FD", sizeof("AGREE_UNIX_FD") - 1) == 0; + + b->rbuffer_size -= (start - (char*) b->rbuffer); + memmove(b->rbuffer, start, b->rbuffer_size); + + r = bus_start_running(b); + if (r < 0) + return r; + + return 1; +} + +static int bus_socket_read_auth(sd_bus *b) { + struct msghdr mh; + struct iovec iov; + size_t n; + ssize_t k; + int r; + void *p; + + assert(b); + + r = bus_socket_auth_verify(b); + if (r != 0) + return r; + + n = MAX(3 + 32 + 2 + sizeof("AGREE_UNIX_FD") - 1 + 2, b->rbuffer_size * 2); + + if (n > BUS_AUTH_SIZE_MAX) + n = BUS_AUTH_SIZE_MAX; + + if (b->rbuffer_size >= n) + return -ENOBUFS; + + p = realloc(b->rbuffer, n); + if (!p) + return -ENOMEM; + + b->rbuffer = p; + + zero(iov); + iov.iov_base = (uint8_t*) b->rbuffer + b->rbuffer_size; + iov.iov_len = n - b->rbuffer_size; + + zero(mh); + mh.msg_iov = &iov; + mh.msg_iovlen = 1; + + k = recvmsg(b->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL); + if (k < 0) + return errno == EAGAIN ? 0 : -errno; + if (k == 0) + return -ECONNRESET; + + b->rbuffer_size += k; + + r = bus_socket_auth_verify(b); + if (r != 0) + return r; + + return 1; +} + +static int bus_socket_setup(sd_bus *b) { + int one; + + assert(b); + + /* Enable SO_PASSCRED + SO_PASSEC. We try this on any socket, + * just in case. This is actually irrelavant for */ + one = 1; + setsockopt(b->fd, SOL_SOCKET, SO_PASSCRED, &one, sizeof(one)); + setsockopt(b->fd, SOL_SOCKET, SO_PASSSEC, &one, sizeof(one)); + + /* Increase the buffers to a MB */ + fd_inc_rcvbuf(b->fd, 1024*1024); + fd_inc_sndbuf(b->fd, 1024*1024); + + return 0; +} + +static int bus_socket_start_auth(sd_bus *b) { + static const char auth_prefix[] = "\0AUTH EXTERNAL "; + static const char auth_suffix_with_unix_fd[] = "\r\nNEGOTIATE_UNIX_FD\r\nBEGIN\r\n"; + static const char auth_suffix_without_unix_fd[] = "\r\nBEGIN\r\n"; + + char text[20 + 1]; /* enough space for a 64bit integer plus NUL */ + size_t l; + const char *auth_suffix; + int domain = 0, r; + socklen_t sl; + + assert(b); + + b->state = BUS_AUTHENTICATING; + + sl = sizeof(domain); + r = getsockopt(b->fd, SOL_SOCKET, SO_DOMAIN, &domain, &sl); + if (r < 0) + return -errno; + + if (domain != AF_UNIX) + b->negotiate_fds = false; + + snprintf(text, sizeof(text), "%llu", (unsigned long long) geteuid()); + char_array_0(text); + + l = strlen(text); + b->auth_uid = hexmem(text, l); + if (!b->auth_uid) + return -ENOMEM; + + auth_suffix = b->negotiate_fds ? auth_suffix_with_unix_fd : auth_suffix_without_unix_fd; + + b->auth_iovec[0].iov_base = (void*) auth_prefix; + b->auth_iovec[0].iov_len = sizeof(auth_prefix) -1; + b->auth_iovec[1].iov_base = (void*) b->auth_uid; + b->auth_iovec[1].iov_len = l * 2; + b->auth_iovec[2].iov_base = (void*) auth_suffix; + b->auth_iovec[2].iov_len = strlen(auth_suffix); + b->auth_size = sizeof(auth_prefix) - 1 + l * 2 + sizeof(auth_suffix) - 1; + + return bus_socket_write_auth(b); +} + +int bus_socket_connect(sd_bus *b) { + int r; + + assert(b); + assert(b->fd < 0); + assert(b->sockaddr.sa.sa_family != AF_UNSPEC); + + b->fd = socket(b->sockaddr.sa.sa_family, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); + if (b->fd < 0) + return -errno; + + r = bus_socket_setup(b); + if (r < 0) + return r; + + r = connect(b->fd, &b->sockaddr.sa, b->sockaddr_size); + if (r < 0) { + if (errno == EINPROGRESS) + return 1; + + return -errno; + } + + return bus_socket_start_auth(b); +} + +int bus_socket_exec(sd_bus *b) { + int s[2]; + pid_t pid; + + assert(b); + assert(b->fd < 0); + assert(b->exec_path); + + b->fd = socketpair(AF_UNIX, SOCK_STREAM|SOCK_NONBLOCK|SOCK_CLOEXEC, 0, s); + if (b->fd < 0) + return -errno; + + pid = fork(); + if (pid < 0) { + close_pipe(s); + return -errno; + } + if (pid == 0) { + /* Child */ + + close_all_fds(s, 2); + close_nointr_nofail(s[0]); + + assert_se(dup3(s[1], STDIN_FILENO, 0) == STDIN_FILENO); + assert_se(dup3(s[1], STDOUT_FILENO, 0) == STDOUT_FILENO); + + if (s[1] != STDIN_FILENO && s[1] != STDOUT_FILENO) + close_nointr_nofail(s[1]); + + fd_cloexec(STDIN_FILENO, false); + fd_cloexec(STDOUT_FILENO, false); + fd_nonblock(STDIN_FILENO, false); + fd_nonblock(STDOUT_FILENO, false); + + if (b->exec_argv) + execvp(b->exec_path, b->exec_argv); + else { + const char *argv[] = { b->exec_path, NULL }; + execvp(b->exec_path, (char**) argv); + } + + _exit(EXIT_FAILURE); + } + + close_nointr_nofail(s[1]); + b->fd = s[0]; + + return bus_socket_start_auth(b); +} + +int bus_socket_take_fd(sd_bus *b) { + int r; + assert(b); + + r = bus_socket_setup(b); + if (r < 0) + return r; + + return bus_socket_start_auth(b); +} + +int bus_socket_write_message(sd_bus *bus, sd_bus_message *m, size_t *idx) { + struct msghdr mh; + struct iovec *iov; + ssize_t k; + size_t n; + unsigned j; + + assert(bus); + assert(m); + assert(idx); + assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); + + if (*idx >= m->size) + return 0; + zero(mh); + + if (m->n_fds > 0) { + struct cmsghdr *control; + control = alloca(CMSG_SPACE(sizeof(int) * m->n_fds)); + + mh.msg_control = control; + control->cmsg_level = SOL_SOCKET; + control->cmsg_type = SCM_RIGHTS; + mh.msg_controllen = control->cmsg_len = CMSG_LEN(sizeof(int) * m->n_fds); + memcpy(CMSG_DATA(control), m->fds, sizeof(int) * m->n_fds); + } + + n = m->n_iovec * sizeof(struct iovec); + iov = alloca(n); + memcpy(iov, m->iovec, n); + + j = 0; + iovec_advance(iov, &j, *idx); + + mh.msg_iov = iov; + mh.msg_iovlen = m->n_iovec; + + k = sendmsg(bus->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL); + if (k < 0) + return errno == EAGAIN ? 0 : -errno; + + *idx += (size_t) k; + return 1; +} + +static int bus_socket_read_message_need(sd_bus *bus, size_t *need) { + uint32_t a, b; + uint8_t e; + uint64_t sum; + + assert(bus); + assert(need); + assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); + + if (bus->rbuffer_size < sizeof(struct bus_header)) { + *need = sizeof(struct bus_header) + 8; + + /* Minimum message size: + * + * Header + + * + * Method Call: +2 string headers + * Signal: +3 string headers + * Method Error: +1 string headers + * +1 uint32 headers + * Method Reply: +1 uint32 headers + * + * A string header is at least 9 bytes + * A uint32 header is at least 8 bytes + * + * Hence the minimum message size of a valid message + * is header + 8 bytes */ + + return 0; + } + + a = ((const uint32_t*) bus->rbuffer)[1]; + b = ((const uint32_t*) bus->rbuffer)[3]; + + e = ((const uint8_t*) bus->rbuffer)[0]; + if (e == SD_BUS_LITTLE_ENDIAN) { + a = le32toh(a); + b = le32toh(b); + } else if (e == SD_BUS_BIG_ENDIAN) { + a = be32toh(a); + b = be32toh(b); + } else + return -EBADMSG; + + sum = (uint64_t) sizeof(struct bus_header) + (uint64_t) ALIGN_TO(b, 8) + (uint64_t) a; + if (sum >= BUS_MESSAGE_SIZE_MAX) + return -ENOBUFS; + + *need = (size_t) sum; + return 0; +} + +static int bus_socket_make_message(sd_bus *bus, size_t size, sd_bus_message **m) { + sd_bus_message *t; + void *b; + int r; + + assert(bus); + assert(m); + assert(bus->rbuffer_size >= size); + assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); + + if (bus->rbuffer_size > size) { + b = memdup((const uint8_t*) bus->rbuffer + size, + bus->rbuffer_size - size); + if (!b) + return -ENOMEM; + } else + b = NULL; + + r = bus_message_from_malloc(bus->rbuffer, size, + bus->fds, bus->n_fds, + bus->ucred_valid ? &bus->ucred : NULL, + bus->label[0] ? bus->label : NULL, + &t); + if (r < 0) { + free(b); + return r; + } + + bus->rbuffer = b; + bus->rbuffer_size -= size; + + bus->fds = NULL; + bus->n_fds = 0; + + *m = t; + return 1; +} + +int bus_socket_read_message(sd_bus *bus, sd_bus_message **m) { + struct msghdr mh; + struct iovec iov; + ssize_t k; + size_t need; + int r; + void *b; + union { + struct cmsghdr cmsghdr; + uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX) + + CMSG_SPACE(sizeof(struct ucred)) + + CMSG_SPACE(NAME_MAX)]; /*selinux label */ + } control; + struct cmsghdr *cmsg; + + assert(bus); + assert(m); + assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); + + r = bus_socket_read_message_need(bus, &need); + if (r < 0) + return r; + + if (bus->rbuffer_size >= need) + return bus_socket_make_message(bus, need, m); + + b = realloc(bus->rbuffer, need); + if (!b) + return -ENOMEM; + + bus->rbuffer = b; + + zero(iov); + iov.iov_base = (uint8_t*) bus->rbuffer + bus->rbuffer_size; + iov.iov_len = need - bus->rbuffer_size; + + zero(mh); + mh.msg_iov = &iov; + mh.msg_iovlen = 1; + mh.msg_control = &control; + mh.msg_controllen = sizeof(control); + + k = recvmsg(bus->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC); + if (k < 0) + return errno == EAGAIN ? 0 : -errno; + if (k == 0) + return -ECONNRESET; + + bus->rbuffer_size += k; + + for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) { + if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_RIGHTS) { + int n, *f; + + n = (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int); + + f = realloc(bus->fds, sizeof(int) + (bus->n_fds + n)); + if (!f) { + close_many((int*) CMSG_DATA(cmsg), n); + return -ENOMEM; + } + + memcpy(f + bus->n_fds, CMSG_DATA(cmsg), n * sizeof(int)); + bus->fds = f; + bus->n_fds += n; + } else if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_CREDENTIALS && + cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) { + + memcpy(&bus->ucred, CMSG_DATA(cmsg), sizeof(struct ucred)); + bus->ucred_valid = true; + + } else if (cmsg->cmsg_level == SOL_SOCKET && + cmsg->cmsg_type == SCM_SECURITY) { + + size_t l; + l = cmsg->cmsg_len - CMSG_LEN(0); + memcpy(&bus->label, CMSG_DATA(cmsg), l); + bus->label[l] = 0; + } + } + + r = bus_socket_read_message_need(bus, &need); + if (r < 0) + return r; + + if (bus->rbuffer_size >= need) + return bus_socket_make_message(bus, need, m); + + return 1; +} + +int bus_socket_process_opening(sd_bus *b) { + int error = 0; + socklen_t slen = sizeof(error); + struct pollfd p; + int r; + + assert(b); + assert(b->state == BUS_OPENING); + + zero(p); + p.fd = b->fd; + p.events = POLLOUT; + + r = poll(&p, 1, 0); + if (r < 0) + return -errno; + + if (!(p.revents & (POLLOUT|POLLERR|POLLHUP))) + return 0; + + r = getsockopt(b->fd, SOL_SOCKET, SO_ERROR, &error, &slen); + if (r < 0) + b->last_connect_error = errno; + else if (error != 0) + b->last_connect_error = error; + else if (p.revents & (POLLERR|POLLHUP)) + b->last_connect_error = ECONNREFUSED; + else + return bus_socket_start_auth(b); + + return bus_next_address(b); +} + +int bus_socket_process_authenticating(sd_bus *b) { + int r; + + assert(b); + assert(b->state == BUS_AUTHENTICATING); + + if (now(CLOCK_MONOTONIC) >= b->auth_timeout) + return -ETIMEDOUT; + + r = bus_socket_write_auth(b); + if (r != 0) + return r; + + return bus_socket_read_auth(b); +} diff --git a/src/libsystemd-bus/bus-socket.h b/src/libsystemd-bus/bus-socket.h new file mode 100644 index 0000000000..3656a442a3 --- /dev/null +++ b/src/libsystemd-bus/bus-socket.h @@ -0,0 +1,34 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +#pragma once + +/*** + This file is part of systemd. + + Copyright 2013 Lennart Poettering + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include "sd-bus.h" + +int bus_socket_connect(sd_bus *b); +int bus_socket_exec(sd_bus *b); +int bus_socket_take_fd(sd_bus *b); + +int bus_socket_write_message(sd_bus *bus, sd_bus_message *m, size_t *idx); +int bus_socket_read_message(sd_bus *bus, sd_bus_message **m); + +int bus_socket_process_opening(sd_bus *b); +int bus_socket_process_authenticating(sd_bus *b); diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 3bdbd11132..6eab4a5469 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -29,13 +29,13 @@ #include "util.h" #include "macro.h" -#include "missing.h" #include "strv.h" #include "sd-bus.h" #include "bus-internal.h" #include "bus-message.h" #include "bus-type.h" +#include "bus-socket.h" static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec); @@ -250,7 +250,7 @@ static int bus_send_hello(sd_bus *bus) { return r; } -static int bus_start_running(sd_bus *bus) { +int bus_start_running(sd_bus *bus) { assert(bus); if (bus->send_hello) { @@ -648,310 +648,7 @@ static int bus_parse_next_address(sd_bus *b) { return 1; } -static void iovec_advance(struct iovec *iov, unsigned *idx, size_t size) { - - while (size > 0) { - struct iovec *i = iov + *idx; - - if (i->iov_len > size) { - i->iov_base = (uint8_t*) i->iov_base + size; - i->iov_len -= size; - return; - } - - size -= i->iov_len; - - i->iov_base = NULL; - i->iov_len = 0; - - (*idx) ++; - } -} - -static int bus_write_auth(sd_bus *b) { - struct msghdr mh; - ssize_t k; - - assert(b); - assert(b->state == BUS_AUTHENTICATING); - - if (b->auth_index >= ELEMENTSOF(b->auth_iovec)) - return 0; - - if (b->auth_timeout == 0) - b->auth_timeout = now(CLOCK_MONOTONIC) + BUS_DEFAULT_TIMEOUT; - - zero(mh); - mh.msg_iov = b->auth_iovec + b->auth_index; - mh.msg_iovlen = ELEMENTSOF(b->auth_iovec) - b->auth_index; - - k = sendmsg(b->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL); - if (k < 0) - return errno == EAGAIN ? 0 : -errno; - - iovec_advance(b->auth_iovec, &b->auth_index, (size_t) k); - - return 1; -} - -static int bus_auth_verify(sd_bus *b) { - char *e, *f, *start; - sd_id128_t peer; - unsigned i; - int r; - - /* We expect two response lines: "OK" and possibly - * "AGREE_UNIX_FD" */ - - e = memmem(b->rbuffer, b->rbuffer_size, "\r\n", 2); - if (!e) - return 0; - - if (b->negotiate_fds) { - f = memmem(e + 2, b->rbuffer_size - (e - (char*) b->rbuffer) - 2, "\r\n", 2); - if (!f) - return 0; - - start = f + 2; - } else { - f = NULL; - start = e + 2; - } - - /* Nice! We got all the lines we need. First check the OK - * line */ - - if (e - (char*) b->rbuffer != 3 + 32) - return -EPERM; - - if (memcmp(b->rbuffer, "OK ", 3)) - return -EPERM; - - for (i = 0; i < 32; i += 2) { - int x, y; - - x = unhexchar(((char*) b->rbuffer)[3 + i]); - y = unhexchar(((char*) b->rbuffer)[3 + i + 1]); - - if (x < 0 || y < 0) - return -EINVAL; - - peer.bytes[i/2] = ((uint8_t) x << 4 | (uint8_t) y); - } - - if (!sd_id128_equal(b->peer, SD_ID128_NULL) && - !sd_id128_equal(b->peer, peer)) - return -EPERM; - - b->peer = peer; - - /* And possibly check the second line, too */ - - if (f) - b->can_fds = - (f - e == sizeof("\r\nAGREE_UNIX_FD") - 1) && - memcmp(e + 2, "AGREE_UNIX_FD", sizeof("AGREE_UNIX_FD") - 1) == 0; - - b->rbuffer_size -= (start - (char*) b->rbuffer); - memmove(b->rbuffer, start, b->rbuffer_size); - - r = bus_start_running(b); - if (r < 0) - return r; - - return 1; -} - -static int bus_read_auth(sd_bus *b) { - struct msghdr mh; - struct iovec iov; - size_t n; - ssize_t k; - int r; - void *p; - - assert(b); - - r = bus_auth_verify(b); - if (r != 0) - return r; - - n = MAX(3 + 32 + 2 + sizeof("AGREE_UNIX_FD") - 1 + 2, b->rbuffer_size * 2); - - if (n > BUS_AUTH_SIZE_MAX) - n = BUS_AUTH_SIZE_MAX; - - if (b->rbuffer_size >= n) - return -ENOBUFS; - - p = realloc(b->rbuffer, n); - if (!p) - return -ENOMEM; - - b->rbuffer = p; - - zero(iov); - iov.iov_base = (uint8_t*) b->rbuffer + b->rbuffer_size; - iov.iov_len = n - b->rbuffer_size; - - zero(mh); - mh.msg_iov = &iov; - mh.msg_iovlen = 1; - - k = recvmsg(b->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL); - if (k < 0) - return errno == EAGAIN ? 0 : -errno; - if (k == 0) - return -ECONNRESET; - - b->rbuffer_size += k; - - r = bus_auth_verify(b); - if (r != 0) - return r; - - return 1; -} - -static int bus_setup_fd(sd_bus *b) { - int one; - - assert(b); - - /* Enable SO_PASSCRED + SO_PASSEC. We try this on any socket, - * just in case. This is actually irrelavant for */ - one = 1; - setsockopt(b->fd, SOL_SOCKET, SO_PASSCRED, &one, sizeof(one)); - setsockopt(b->fd, SOL_SOCKET, SO_PASSSEC, &one, sizeof(one)); - - /* Increase the buffers to a MB */ - fd_inc_rcvbuf(b->fd, 1024*1024); - fd_inc_sndbuf(b->fd, 1024*1024); - - return 0; -} - -static int bus_start_auth(sd_bus *b) { - static const char auth_prefix[] = "\0AUTH EXTERNAL "; - static const char auth_suffix_with_unix_fd[] = "\r\nNEGOTIATE_UNIX_FD\r\nBEGIN\r\n"; - static const char auth_suffix_without_unix_fd[] = "\r\nBEGIN\r\n"; - - char text[20 + 1]; /* enough space for a 64bit integer plus NUL */ - size_t l; - const char *auth_suffix; - int domain = 0, r; - socklen_t sl; - - assert(b); - - b->state = BUS_AUTHENTICATING; - - sl = sizeof(domain); - r = getsockopt(b->fd, SOL_SOCKET, SO_DOMAIN, &domain, &sl); - if (r < 0) - return -errno; - - if (domain != AF_UNIX) - b->negotiate_fds = false; - - snprintf(text, sizeof(text), "%llu", (unsigned long long) geteuid()); - char_array_0(text); - - l = strlen(text); - b->auth_uid = hexmem(text, l); - if (!b->auth_uid) - return -ENOMEM; - - auth_suffix = b->negotiate_fds ? auth_suffix_with_unix_fd : auth_suffix_without_unix_fd; - - b->auth_iovec[0].iov_base = (void*) auth_prefix; - b->auth_iovec[0].iov_len = sizeof(auth_prefix) -1; - b->auth_iovec[1].iov_base = (void*) b->auth_uid; - b->auth_iovec[1].iov_len = l * 2; - b->auth_iovec[2].iov_base = (void*) auth_suffix; - b->auth_iovec[2].iov_len = strlen(auth_suffix); - b->auth_size = sizeof(auth_prefix) - 1 + l * 2 + sizeof(auth_suffix) - 1; - - return bus_write_auth(b); -} - -static int bus_connect(sd_bus *b) { - int r; - - assert(b); - assert(b->fd < 0); - assert(b->sockaddr.sa.sa_family != AF_UNSPEC); - - b->fd = socket(b->sockaddr.sa.sa_family, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); - if (b->fd < 0) - return -errno; - - r = bus_setup_fd(b); - if (r < 0) - return r; - - r = connect(b->fd, &b->sockaddr.sa, b->sockaddr_size); - if (r < 0) { - if (errno == EINPROGRESS) - return 1; - - return -errno; - } - - return bus_start_auth(b); -} - -static int bus_exec(sd_bus *b) { - int s[2]; - pid_t pid; - - assert(b); - assert(b->fd < 0); - assert(b->exec_path); - - b->fd = socketpair(AF_UNIX, SOCK_STREAM|SOCK_NONBLOCK|SOCK_CLOEXEC, 0, s); - if (b->fd < 0) - return -errno; - - pid = fork(); - if (pid < 0) { - close_pipe(s); - return -errno; - } - if (pid == 0) { - /* Child */ - - close_all_fds(s, 2); - close_nointr_nofail(s[0]); - - assert_se(dup3(s[1], STDIN_FILENO, 0) == STDIN_FILENO); - assert_se(dup3(s[1], STDOUT_FILENO, 0) == STDOUT_FILENO); - - if (s[1] != STDIN_FILENO && s[1] != STDOUT_FILENO) - close_nointr_nofail(s[1]); - - fd_cloexec(STDIN_FILENO, false); - fd_cloexec(STDOUT_FILENO, false); - fd_nonblock(STDIN_FILENO, false); - fd_nonblock(STDOUT_FILENO, false); - - if (b->exec_argv) - execvp(b->exec_path, b->exec_argv); - else { - const char *argv[] = { b->exec_path, NULL }; - execvp(b->exec_path, (char**) argv); - } - - _exit(EXIT_FAILURE); - } - - close_nointr_nofail(s[1]); - b->fd = s[0]; - - return bus_start_auth(b); -} - -static int bus_start_connect(sd_bus *b) { +static int bus_start_address(sd_bus *b) { int r; assert(b); @@ -963,7 +660,8 @@ static int bus_start_connect(sd_bus *b) { } if (b->sockaddr.sa.sa_family != AF_UNSPEC) { - r = bus_connect(b); + + r = bus_socket_connect(b); if (r >= 0) return r; @@ -971,7 +669,7 @@ static int bus_start_connect(sd_bus *b) { } else if (b->exec_path) { - r = bus_exec(b); + r = bus_socket_exec(b); if (r >= 0) return r; @@ -986,6 +684,13 @@ static int bus_start_connect(sd_bus *b) { } } +int bus_next_address(sd_bus *b) { + assert(b); + + bus_reset_parsed_address(b); + return bus_start_address(b); +} + static int bus_start_fd(sd_bus *b) { int r; @@ -999,11 +704,7 @@ static int bus_start_fd(sd_bus *b) { if (r < 0) return r; - r = bus_setup_fd(b); - if (r < 0) - return r; - - return bus_start_auth(b); + return bus_socket_take_fd(b); } int sd_bus_start(sd_bus *bus) { @@ -1019,7 +720,7 @@ int sd_bus_start(sd_bus *bus) { if (bus->fd >= 0) r = bus_start_fd(bus); else if (bus->address) - r = bus_start_connect(bus); + r = bus_start_address(bus); else return -EINVAL; @@ -1206,234 +907,6 @@ static int bus_seal_message(sd_bus *b, sd_bus_message *m) { return bus_message_seal(m, ++b->serial); } -static int message_write(sd_bus *bus, sd_bus_message *m, size_t *idx) { - struct msghdr mh; - struct iovec *iov; - ssize_t k; - size_t n; - unsigned j; - - assert(bus); - assert(m); - assert(idx); - assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); - - if (*idx >= m->size) - return 0; - zero(mh); - - if (m->n_fds > 0) { - struct cmsghdr *control; - control = alloca(CMSG_SPACE(sizeof(int) * m->n_fds)); - - mh.msg_control = control; - control->cmsg_level = SOL_SOCKET; - control->cmsg_type = SCM_RIGHTS; - mh.msg_controllen = control->cmsg_len = CMSG_LEN(sizeof(int) * m->n_fds); - memcpy(CMSG_DATA(control), m->fds, sizeof(int) * m->n_fds); - } - - n = m->n_iovec * sizeof(struct iovec); - iov = alloca(n); - memcpy(iov, m->iovec, n); - - j = 0; - iovec_advance(iov, &j, *idx); - - mh.msg_iov = iov; - mh.msg_iovlen = m->n_iovec; - - k = sendmsg(bus->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL); - if (k < 0) - return errno == EAGAIN ? 0 : -errno; - - *idx += (size_t) k; - return 1; -} - -static int message_read_need(sd_bus *bus, size_t *need) { - uint32_t a, b; - uint8_t e; - uint64_t sum; - - assert(bus); - assert(need); - assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); - - if (bus->rbuffer_size < sizeof(struct bus_header)) { - *need = sizeof(struct bus_header) + 8; - - /* Minimum message size: - * - * Header + - * - * Method Call: +2 string headers - * Signal: +3 string headers - * Method Error: +1 string headers - * +1 uint32 headers - * Method Reply: +1 uint32 headers - * - * A string header is at least 9 bytes - * A uint32 header is at least 8 bytes - * - * Hence the minimum message size of a valid message - * is header + 8 bytes */ - - return 0; - } - - a = ((const uint32_t*) bus->rbuffer)[1]; - b = ((const uint32_t*) bus->rbuffer)[3]; - - e = ((const uint8_t*) bus->rbuffer)[0]; - if (e == SD_BUS_LITTLE_ENDIAN) { - a = le32toh(a); - b = le32toh(b); - } else if (e == SD_BUS_BIG_ENDIAN) { - a = be32toh(a); - b = be32toh(b); - } else - return -EBADMSG; - - sum = (uint64_t) sizeof(struct bus_header) + (uint64_t) ALIGN_TO(b, 8) + (uint64_t) a; - if (sum >= BUS_MESSAGE_SIZE_MAX) - return -ENOBUFS; - - *need = (size_t) sum; - return 0; -} - -static int message_make(sd_bus *bus, size_t size, sd_bus_message **m) { - sd_bus_message *t; - void *b; - int r; - - assert(bus); - assert(m); - assert(bus->rbuffer_size >= size); - assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); - - if (bus->rbuffer_size > size) { - b = memdup((const uint8_t*) bus->rbuffer + size, - bus->rbuffer_size - size); - if (!b) - return -ENOMEM; - } else - b = NULL; - - r = bus_message_from_malloc(bus->rbuffer, size, - bus->fds, bus->n_fds, - bus->ucred_valid ? &bus->ucred : NULL, - bus->label[0] ? bus->label : NULL, - &t); - if (r < 0) { - free(b); - return r; - } - - bus->rbuffer = b; - bus->rbuffer_size -= size; - - bus->fds = NULL; - bus->n_fds = 0; - - *m = t; - return 1; -} - -static int message_read(sd_bus *bus, sd_bus_message **m) { - struct msghdr mh; - struct iovec iov; - ssize_t k; - size_t need; - int r; - void *b; - union { - struct cmsghdr cmsghdr; - uint8_t buf[CMSG_SPACE(sizeof(int) * BUS_FDS_MAX) + - CMSG_SPACE(sizeof(struct ucred)) + - CMSG_SPACE(NAME_MAX)]; /*selinux label */ - } control; - struct cmsghdr *cmsg; - - assert(bus); - assert(m); - assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); - - r = message_read_need(bus, &need); - if (r < 0) - return r; - - if (bus->rbuffer_size >= need) - return message_make(bus, need, m); - - b = realloc(bus->rbuffer, need); - if (!b) - return -ENOMEM; - - bus->rbuffer = b; - - zero(iov); - iov.iov_base = (uint8_t*) bus->rbuffer + bus->rbuffer_size; - iov.iov_len = need - bus->rbuffer_size; - - zero(mh); - mh.msg_iov = &iov; - mh.msg_iovlen = 1; - mh.msg_control = &control; - mh.msg_controllen = sizeof(control); - - k = recvmsg(bus->fd, &mh, MSG_DONTWAIT|MSG_NOSIGNAL|MSG_CMSG_CLOEXEC); - if (k < 0) - return errno == EAGAIN ? 0 : -errno; - if (k == 0) - return -ECONNRESET; - - bus->rbuffer_size += k; - - for (cmsg = CMSG_FIRSTHDR(&mh); cmsg; cmsg = CMSG_NXTHDR(&mh, cmsg)) { - if (cmsg->cmsg_level == SOL_SOCKET && - cmsg->cmsg_type == SCM_RIGHTS) { - int n, *f; - - n = (cmsg->cmsg_len - CMSG_LEN(0)) / sizeof(int); - - f = realloc(bus->fds, sizeof(int) + (bus->n_fds + n)); - if (!f) { - close_many((int*) CMSG_DATA(cmsg), n); - return -ENOMEM; - } - - memcpy(f + bus->n_fds, CMSG_DATA(cmsg), n * sizeof(int)); - bus->fds = f; - bus->n_fds += n; - } else if (cmsg->cmsg_level == SOL_SOCKET && - cmsg->cmsg_type == SCM_CREDENTIALS && - cmsg->cmsg_len == CMSG_LEN(sizeof(struct ucred))) { - - memcpy(&bus->ucred, CMSG_DATA(cmsg), sizeof(struct ucred)); - bus->ucred_valid = true; - - } else if (cmsg->cmsg_level == SOL_SOCKET && - cmsg->cmsg_type == SCM_SECURITY) { - - size_t l; - l = cmsg->cmsg_len - CMSG_LEN(0); - memcpy(&bus->label, CMSG_DATA(cmsg), l); - bus->label[l] = 0; - } - } - - r = message_read_need(bus, &need); - if (r < 0) - return r; - - if (bus->rbuffer_size >= need) - return message_make(bus, need, m); - - return 1; -} - static int dispatch_wqueue(sd_bus *bus) { int r, ret = 0; @@ -1445,7 +918,7 @@ static int dispatch_wqueue(sd_bus *bus) { while (bus->wqueue_size > 0) { - r = message_write(bus, bus->wqueue[0], &bus->windex); + r = bus_socket_write_message(bus, bus->wqueue[0], &bus->windex); if (r < 0) { sd_bus_close(bus); return r; @@ -1497,7 +970,7 @@ static int dispatch_rqueue(sd_bus *bus, sd_bus_message **m) { /* Try to read a new message */ do { - r = message_read(bus, &z); + r = bus_socket_read_message(bus, &z); if (r < 0) { sd_bus_close(bus); return r; @@ -1549,7 +1022,7 @@ int sd_bus_send(sd_bus *bus, sd_bus_message *m, uint64_t *serial) { if ((bus->state == BUS_RUNNING || bus->state == BUS_HELLO) && bus->wqueue_size <= 0) { size_t idx = 0; - r = message_write(bus, m, &idx); + r = bus_socket_write_message(bus, m, &idx); if (r < 0) { sd_bus_close(bus); return r; @@ -1791,7 +1264,7 @@ int sd_bus_send_with_reply_and_block( room = true; } - r = message_read(bus, &incoming); + r = bus_socket_read_message(bus, &incoming); if (r < 0) return r; if (incoming) { @@ -2119,126 +1592,103 @@ static int process_message(sd_bus *bus, sd_bus_message *m) { return process_object(bus, m); } -int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { +static int process_running(sd_bus *bus, sd_bus_message **ret) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL; int r; - /* Returns 0 when we didn't do anything. This should cause the - * caller to invoke sd_bus_wait() before returning the next - * time. Returns > 0 when we did something, which possibly - * means *ret is filled in with an unprocessed message. */ - - if (!bus) - return -EINVAL; - if (bus->state == BUS_UNSET) - return -ENOTCONN; - if (bus->fd < 0) - return -ENOTCONN; + assert(bus); + assert(bus->state == BUS_RUNNING || bus->state == BUS_HELLO); - if (bus->state == BUS_OPENING) { - struct pollfd p; + r = process_timeout(bus); + if (r != 0) + goto null_message; - zero(p); - p.fd = bus->fd; - p.events = POLLOUT; + r = dispatch_wqueue(bus); + if (r != 0) + goto null_message; - r = poll(&p, 1, 0); - if (r < 0) - return -errno; + r = dispatch_rqueue(bus, &m); + if (r < 0) + return r; + if (!m) + goto null_message; - if (p.revents & (POLLOUT|POLLERR|POLLHUP)) { - int error = 0; - socklen_t slen = sizeof(error); + r = process_message(bus, m); + if (r != 0) + goto null_message; - r = getsockopt(bus->fd, SOL_SOCKET, SO_ERROR, &error, &slen); - if (r < 0) - bus->last_connect_error = errno; - else if (error != 0) - bus->last_connect_error = error; - else if (p.revents & (POLLERR|POLLHUP)) - bus->last_connect_error = ECONNREFUSED; - else { - r = bus_start_auth(bus); - goto null_message; - } + if (ret) { + *ret = m; + m = NULL; + return 1; + } - /* Try next address */ - bus_reset_parsed_address(bus); - r = bus_start_connect(bus); - goto null_message; - } + if (m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_CALL) { + _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; + _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_INIT; - r = 0; - goto null_message; + sd_bus_error_set(&error, "org.freedesktop.DBus.Error.UnknownObject", "Unknown object '%s'.", m->path); - } else if (bus->state == BUS_AUTHENTICATING) { + r = sd_bus_message_new_method_error(bus, m, &error, &reply); + if (r < 0) + return r; - if (now(CLOCK_MONOTONIC) >= bus->auth_timeout) - return -ETIMEDOUT; + r = sd_bus_send(bus, reply, NULL); + if (r < 0) + return r; + } - r = bus_write_auth(bus); - if (r != 0) - goto null_message; + return 1; - r = bus_read_auth(bus); - goto null_message; +null_message: + if (r >= 0 && ret) + *ret = NULL; - } else if (bus->state == BUS_RUNNING || bus->state == BUS_HELLO) { - _cleanup_bus_message_unref_ sd_bus_message *m = NULL; - int k; + return r; +} - r = process_timeout(bus); - if (r != 0) - goto null_message; +int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { + int r; - r = dispatch_wqueue(bus); - if (r != 0) - goto null_message; + /* Returns 0 when we didn't do anything. This should cause the + * caller to invoke sd_bus_wait() before returning the next + * time. Returns > 0 when we did something, which possibly + * means *ret is filled in with an unprocessed message. */ - k = r; - r = dispatch_rqueue(bus, &m); - if (r < 0) - return r; - if (!m) { - if (r == 0) - r = k; - goto null_message; - } + if (!bus) + return -EINVAL; + if (bus->fd < 0) + return -ENOTCONN; - r = process_message(bus, m); - if (r != 0) - goto null_message; + switch (bus->state) { - if (ret) { - *ret = m; - m = NULL; - return 1; - } + case BUS_UNSET: + return -ENOTCONN; - if (m->header->type == SD_BUS_MESSAGE_TYPE_METHOD_CALL) { - _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; - _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_INIT; + case BUS_OPENING: + r = bus_socket_process_opening(bus); + if (r < 0) + return r; + if (ret) + *ret = NULL; + return r; - sd_bus_error_set(&error, "org.freedesktop.DBus.Error.UnknownObject", "Unknown object '%s'.", m->path); + case BUS_AUTHENTICATING: - r = sd_bus_message_new_method_error(bus, m, &error, &reply); - if (r < 0) - return r; + r = bus_socket_process_authenticating(bus); + if (r < 0) + return r; + if (ret) + *ret = NULL; + return r; - r = sd_bus_send(bus, reply, NULL); - if (r < 0) - return r; - } + case BUS_RUNNING: + case BUS_HELLO: - return 1; + return process_running(bus, ret); } assert_not_reached("Unknown state"); - -null_message: - if (r >= 0 && ret) - *ret = NULL; - - return r; } static int bus_poll(sd_bus *bus, bool need_more, uint64_t timeout_usec) { diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index e5990ad431..a15cc26e3f 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -25,12 +25,12 @@ #include #include +#include #include "sd-bus-protocol.h" /* TODO: * - implicitly add stub introspection calls * - server side - * - split out actual sending logic into backend-socket.c * * Later: * - add page donation logic -- cgit v1.2.1 From c5962bd1d11553425e3784ee00aa8d101c1b80fc Mon Sep 17 00:00:00 2001 From: Michal Schmidt Date: Mon, 25 Mar 2013 12:31:44 +0100 Subject: timer: downgrade time change message to debug The manager already prints "Time has been changed" at level info. It seems too verbose to print the time change message additionally for every waiting timer unit. Downgrade the per-unit message to debug. --- src/core/timer.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/core/timer.c b/src/core/timer.c index fd8e50e71c..d98468fd9e 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -555,8 +555,8 @@ static void timer_time_change(Unit *u) { if (t->state != TIMER_WAITING) return; - log_info_unit(u->id, - "%s: time change, recalculating next elapse.", u->id); + log_debug_unit(u->id, + "%s: time change, recalculating next elapse.", u->id); timer_enter_waiting(t, false); } -- cgit v1.2.1 From 8cc3f8c0bcd23bb68166cb197a4c541d7621b19c Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Mon, 25 Mar 2013 13:02:05 +0100 Subject: udevd.c: set udev children_max according to CPU count Setting children_max according to RAM leads to too much concurrent I/O. --- src/udev/udevd.c | 35 ++++++----------------------------- 1 file changed, 6 insertions(+), 29 deletions(-) diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 834c7d9778..b30bedfa5c 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -879,29 +879,6 @@ static void static_dev_create_from_modules(struct udev *udev) fclose(f); } -static int mem_size_mb(void) -{ - FILE *f; - char buf[4096]; - long int memsize = -1; - - f = fopen("/proc/meminfo", "re"); - if (f == NULL) - return -1; - - while (fgets(buf, sizeof(buf), f) != NULL) { - long int value; - - if (sscanf(buf, "MemTotal: %ld kB", &value) == 1) { - memsize = value / 1024; - break; - } - } - - fclose(f); - return memsize; -} - static int systemd_fds(struct udev *udev, int *rctrl, int *rnetlink) { int ctrl = -1, netlink = -1; @@ -1278,13 +1255,13 @@ int main(int argc, char *argv[]) } if (children_max <= 0) { - int memsize = mem_size_mb(); + cpu_set_t cpu_set; - /* set value depending on the amount of RAM */ - if (memsize > 0) - children_max = 16 + (memsize / 8); - else - children_max = 16; + children_max = 8; + + if (sched_getaffinity(0, sizeof (cpu_set), &cpu_set) == 0) { + children_max += CPU_COUNT(&cpu_set) * 2; + } } log_debug("set children_max to %u\n", children_max); -- cgit v1.2.1 From ce2c2265376c22c16b4c9bff3ac2d402ddbeda03 Mon Sep 17 00:00:00 2001 From: Frederic Crozat Date: Thu, 21 Mar 2013 15:40:45 +0100 Subject: core: ensure LSB Provides are handled correctly Let's say you have two initscripts, A and B: A contains in its LSB header: Required-Start: C and B contains in its LSB header: Provides: C When systemd is parsing /etc/rc.d/, depending on the file order, you can end up with either: - B is parsed first. An unit "C.service" will be "created" and will be added as additional name to B.service, with unit_add_name. No bug. - A is parsed first. An unit "C.service" is created for the "Required-Start" dependency (it will have no file attached, since nothing provides this dependency yet). Then B is parsed and when trying to handle "Provides: C", unit_add_name is called but will fail, because "C.service" already exists in manager->units. Therefore, a merge should occur for that case. --- src/core/service.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/service.c b/src/core/service.c index 4451d38eef..fa8a1cb039 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -762,7 +762,7 @@ static int service_load_sysv_path(Service *s, const char *path) { continue; if (unit_name_to_type(m) == UNIT_SERVICE) - r = unit_add_name(u, m); + r = unit_merge_by_name(u, m); else /* NB: SysV targets * which are provided -- cgit v1.2.1 From a9602630c64791571ca37606a0a5eabfac85820a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 17:25:48 +0100 Subject: update TODO --- TODO | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TODO b/TODO index 132aeaccbe..822779272c 100644 --- a/TODO +++ b/TODO @@ -43,6 +43,9 @@ Fedora 19: http://lists.freedesktop.org/archives/systemd-devel/2013-February/009021.html Features: + +* when prompting for a hdd password show GUID partition label + * teach udev + logind's uaccess to somehow handle the "dead" device nodes from: /lib/modules/$(uname -r)/modules.devname and apply ACLs to them if they have TAG=="uaccess" in udev rules. -- cgit v1.2.1 From 26687bf8a907009dedcff79346860ed41511405e Mon Sep 17 00:00:00 2001 From: Oleksii Shevchuk Date: Mon, 25 Mar 2013 18:49:03 +0200 Subject: journal: Add sync timer to journal server Add option to force journal sync with fsync. Default timeout is 5min. Interval configured via SyncIntervalSec option at journal.conf. Synced journal files will be marked as OFFLINE. Manual sync can be performed via sending SIGUSR1. --- man/journald.conf.xml | 10 ++++ src/journal/journal-file.c | 63 +++++++++++++++++----- src/journal/journal-file.h | 2 + src/journal/journald-gperf.gperf | 1 + src/journal/journald-server.c | 112 +++++++++++++++++++++++++++++++++++++-- src/journal/journald-server.h | 6 +++ src/journal/journald.conf | 1 + 7 files changed, 179 insertions(+), 16 deletions(-) diff --git a/man/journald.conf.xml b/man/journald.conf.xml index 0797deb115..0b9de65fe3 100644 --- a/man/journald.conf.xml +++ b/man/journald.conf.xml @@ -322,6 +322,16 @@ seconds. + + + SyncIntervalSec= + + The timeout before syncing journal + data to disk. After syncing journal files have + OFFLINE state. Default timeout is 5 minutes. + + + ForwardToSyslog= ForwardToKMsg= diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index 13fc8edea9..5b077be0da 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -68,6 +68,50 @@ /* How many entries to keep in the entry array chain cache at max */ #define CHAIN_CACHE_MAX 20 +int journal_file_set_online(JournalFile *f) { + assert(f); + + if (!f->writable) + return -EPERM; + + if (!(f->fd >= 0 && f->header)) + return -EINVAL; + + switch(f->header->state) { + case STATE_ONLINE: + return 0; + + case STATE_OFFLINE: + f->header->state = STATE_ONLINE; + fsync(f->fd); + return 0; + + default: + return -EINVAL; + } +} + +int journal_file_set_offline(JournalFile *f) { + assert(f); + + if (!f->writable) + return -EPERM; + + if (!(f->fd >= 0 && f->header)) + return -EINVAL; + + if (f->header->state != STATE_ONLINE) + return 0; + + fsync(f->fd); + + f->header->state = STATE_OFFLINE; + + fsync(f->fd); + + return 0; +} + void journal_file_close(JournalFile *f) { assert(f); @@ -81,16 +125,10 @@ void journal_file_close(JournalFile *f) { if (f->mmap && f->fd >= 0) mmap_cache_close_fd(f->mmap, f->fd); - if (f->writable && f->fd >= 0) - fdatasync(f->fd); - - if (f->header) { - /* Mark the file offline. Don't override the archived state if it already is set */ - if (f->writable && f->header->state == STATE_ONLINE) - f->header->state = STATE_OFFLINE; + journal_file_set_offline(f); + if (f->header) munmap(f->header, PAGE_ALIGN(sizeof(Header))); - } if (f->fd >= 0) close_nointr_nofail(f->fd); @@ -177,7 +215,7 @@ static int journal_file_refresh_header(JournalFile *f) { f->header->boot_id = boot_id; - f->header->state = STATE_ONLINE; + journal_file_set_online(f); /* Sync the online state to disk */ msync(f->header, PAGE_ALIGN(sizeof(Header)), MS_SYNC); @@ -457,6 +495,10 @@ int journal_file_append_object(JournalFile *f, int type, uint64_t size, Object * assert(offset); assert(ret); + r = journal_file_set_online(f); + if (r < 0) + return r; + p = le64toh(f->header->tail_object_offset); if (p == 0) p = le64toh(f->header->header_size); @@ -1267,9 +1309,6 @@ int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const st assert(f); assert(iovec || n_iovec == 0); - if (!f->writable) - return -EPERM; - if (!ts) { dual_timestamp_get(&_ts); ts = &_ts; diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h index cdbc8e41f6..0eab5017d7 100644 --- a/src/journal/journal-file.h +++ b/src/journal/journal-file.h @@ -106,6 +106,8 @@ int journal_file_open( JournalFile *template, JournalFile **ret); +int journal_file_set_offline(JournalFile *f); +int journal_file_set_online(JournalFile *f); void journal_file_close(JournalFile *j); int journal_file_open_reliably( diff --git a/src/journal/journald-gperf.gperf b/src/journal/journald-gperf.gperf index 1baef1411c..57b45f9232 100644 --- a/src/journal/journald-gperf.gperf +++ b/src/journal/journald-gperf.gperf @@ -18,6 +18,7 @@ struct ConfigPerfItem; Journal.Storage, config_parse_storage, 0, offsetof(Server, storage) Journal.Compress, config_parse_bool, 0, offsetof(Server, compress) Journal.Seal, config_parse_bool, 0, offsetof(Server, seal) +Journal.SyncIntervalSec, config_parse_usec, 0, offsetof(Server, sync_interval_usec) Journal.RateLimitInterval, config_parse_usec, 0, offsetof(Server, rate_limit_interval) Journal.RateLimitBurst, config_parse_unsigned, 0, offsetof(Server, rate_limit_burst) Journal.SystemMaxUse, config_parse_bytes_off, 0, offsetof(Server, system_metrics.max_use) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 855430a6ba..a9d7aa181d 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include @@ -67,6 +68,7 @@ #define USER_JOURNALS_MAX 1024 +#define DEFAULT_SYNC_INTERVAL_USEC (5*USEC_PER_MINUTE) #define DEFAULT_RATE_LIMIT_INTERVAL (10*USEC_PER_SEC) #define DEFAULT_RATE_LIMIT_BURST 200 @@ -344,6 +346,33 @@ void server_rotate(Server *s) { } } +void server_sync(Server *s) { + JournalFile *f; + void *k; + Iterator i; + int r; + + static const struct itimerspec sync_timer_disable = {}; + + if (s->system_journal) { + r = journal_file_set_offline(s->system_journal); + if (r < 0) + log_error("Failed to sync system journal: %s", strerror(-r)); + } + + HASHMAP_FOREACH_KEY(f, k, s->user_journals, i) { + r = journal_file_set_offline(f); + if (r < 0) + log_error("Failed to sync user journal: %s", strerror(-r)); + } + + r = timerfd_settime(s->sync_timer_fd, 0, &sync_timer_disable, NULL); + if (r < 0) + log_error("Failed to disable max timer: %m"); + + s->sync_scheduled = false; +} + void server_vacuum(Server *s) { char *p; char ids[33]; @@ -475,8 +504,10 @@ static void write_to_journal(Server *s, uid_t uid, struct iovec *iovec, unsigned } r = journal_file_append_entry(f, NULL, iovec, n, &s->seqnum, NULL, NULL); - if (r >= 0) + if (r >= 0) { + server_schedule_sync(s); return; + } if (vacuumed || !shall_try_append_again(f, r)) { log_error("Failed to write entry, ignoring: %s", strerror(-r)); @@ -990,11 +1021,10 @@ int process_event(Server *s, struct epoll_event *ev) { return -errno; } - log_info("Received SIG%s", signal_to_string(sfsi.ssi_signo)); - if (sfsi.ssi_signo == SIGUSR1) { touch("/run/systemd/journal/flushed"); server_flush_to_var(s); + server_sync(s); return 1; } @@ -1004,8 +1034,23 @@ int process_event(Server *s, struct epoll_event *ev) { return 1; } + log_info("Received SIG%s", signal_to_string(sfsi.ssi_signo)); + return 0; + } else if (ev->data.fd == s->sync_timer_fd) { + int r; + uint64_t t; + + log_debug("Got sync request from epoll."); + + r = read(ev->data.fd, (void *)&t, sizeof(t)); + if (r < 0) + return 0; + + server_sync(s); + return 1; + } else if (ev->data.fd == s->dev_kmsg_fd) { int r; @@ -1285,16 +1330,68 @@ static int server_parse_config_file(Server *s) { return r; } +static int server_open_sync_timer(Server *s) { + int r; + struct epoll_event ev; + + assert(s); + + s->sync_timer_fd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC); + if (s->sync_timer_fd < 0) + return -errno; + + zero(ev); + ev.events = EPOLLIN; + ev.data.fd = s->sync_timer_fd; + + r = epoll_ctl(s->epoll_fd, EPOLL_CTL_ADD, s->sync_timer_fd, &ev); + if (r < 0) { + log_error("Failed to add idle timer fd to epoll object: %m"); + return -errno; + } + + return 0; +} + +int server_schedule_sync(Server *s) { + int r; + + struct itimerspec sync_timer_enable; + + assert(s); + + if (s->sync_scheduled) + return 0; + + if (s->sync_interval_usec) { + zero(sync_timer_enable); + sync_timer_enable.it_value.tv_sec = s->sync_interval_usec / USEC_PER_SEC; + sync_timer_enable.it_value.tv_nsec = s->sync_interval_usec % MSEC_PER_SEC; + + r = timerfd_settime(s->sync_timer_fd, 0, &sync_timer_enable, NULL); + if (r < 0) + return -errno; + } + + s->sync_scheduled = true; + + return 0; +} + int server_init(Server *s) { int n, r, fd; assert(s); zero(*s); - s->syslog_fd = s->native_fd = s->stdout_fd = s->signal_fd = s->epoll_fd = s->dev_kmsg_fd = -1; + s->sync_timer_fd = s->syslog_fd = s->native_fd = s->stdout_fd = + s->signal_fd = s->epoll_fd = s->dev_kmsg_fd = -1; s->compress = true; s->seal = true; + s->sync_interval_usec = DEFAULT_SYNC_INTERVAL_USEC; + s->sync_scheduled = false; + s->rate_limit_interval = DEFAULT_RATE_LIMIT_INTERVAL; s->rate_limit_burst = DEFAULT_RATE_LIMIT_BURST; @@ -1394,6 +1491,10 @@ int server_init(Server *s) { if (r < 0) return r; + r = server_open_sync_timer(s); + if (r < 0) + return r; + r = open_signalfd(s); if (r < 0) return r; @@ -1466,6 +1567,9 @@ void server_done(Server *s) { if (s->dev_kmsg_fd >= 0) close_nointr_nofail(s->dev_kmsg_fd); + if (s->sync_timer_fd >= 0) + close_nointr_nofail(s->sync_timer_fd); + if (s->rate_limit) journal_rate_limit_free(s->rate_limit); diff --git a/src/journal/journald-server.h b/src/journal/journald-server.h index 9f50a29e50..21edd6bdaf 100644 --- a/src/journal/journald-server.h +++ b/src/journal/journald-server.h @@ -71,6 +71,7 @@ typedef struct Server { size_t buffer_size; JournalRateLimit *rate_limit; + usec_t sync_interval_usec; usec_t rate_limit_interval; unsigned rate_limit_burst; @@ -119,6 +120,9 @@ typedef struct Server { uint64_t *kernel_seqnum; struct udev *udev; + + int sync_timer_fd; + bool sync_scheduled; } Server; #define N_IOVEC_META_FIELDS 17 @@ -145,8 +149,10 @@ void server_fix_perms(Server *s, JournalFile *f, uid_t uid); bool shall_try_append_again(JournalFile *f, int r); int server_init(Server *s); void server_done(Server *s); +void server_sync(Server *s); void server_vacuum(Server *s); void server_rotate(Server *s); +int server_schedule_sync(Server *s); int server_flush_to_var(Server *s); int process_event(Server *s, struct epoll_event *ev); void server_maybe_append_tags(Server *s); diff --git a/src/journal/journald.conf b/src/journal/journald.conf index 948318bc62..5410477201 100644 --- a/src/journal/journald.conf +++ b/src/journal/journald.conf @@ -12,6 +12,7 @@ #Compress=yes #Seal=yes #SplitMode=login +#SyncIntervalSec=5m #RateLimitInterval=10s #RateLimitBurst=200 #SystemMaxUse= -- cgit v1.2.1 From eece8c6fb5f4d354dcef6fd369e876c4f3a3f163 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 18:17:15 +0100 Subject: update TODO --- TODO | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index 822779272c..646fad885a 100644 --- a/TODO +++ b/TODO @@ -44,6 +44,9 @@ Fedora 19: Features: +* when isolating, try to figure out a way how we implicitly can order + all units we stop before the isolating unit... + * when prompting for a hdd password show GUID partition label * teach udev + logind's uaccess to somehow handle the "dead" device nodes from: @@ -223,7 +226,6 @@ Features: and !FOOBAR for events without FOOBAR. - journal: when rotating, copy over old acls/access mode - journal: send out marker messages every now and then, and immediately sync with fdatasync() afterwards, in order to have hourly guaranteed syncs. - - journal: when we haven't written anything in a while, sync to disk and mark file as offline, in order to be more often than not in a clean state - journal-send.c, log.c: when the log socket is clogged, and we drop, count this and write a message about this when it gets unclogged again. - journal: find a way to allow dropping history early, based on priority, other rules - journal: When used on NFS, check payload hashes -- cgit v1.2.1 From 790838e4f16831f2bb06aeb845b9e2fb0f1d28dd Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 18:18:09 +0100 Subject: fstab-generator: rename x-initrd-rootfs.mount to x-initrd.rootfs This changes the fstab mount option x-initrd-rootfs.mount to x-initrd.rootfs, in order to only use a single namespace "x-initrd." for all mount options of the initrd. --- TODO | 2 -- src/fstab-generator/fstab-generator.c | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/TODO b/TODO index 646fad885a..f218d182c3 100644 --- a/TODO +++ b/TODO @@ -59,8 +59,6 @@ Features: * introduce timers.target and paths.target and automatucally order all timers and paths before it and after sysinit.target. -* x-initrd-rootfs.mount in fstab-generator needs to go or get a saner name - * matching against units is currently broken in journalctl. We really need another AND level in the expressions, i.e. sd_journal_add_conjunction(). diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index cf85d3189a..d5f9db49ca 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -202,7 +202,7 @@ static bool mount_in_initrd(struct mntent *me) { static bool mount_is_rootfs(struct mntent *me) { assert(me); - return hasmntopt(me, "x-initrd-rootfs.mount"); + return hasmntopt(me, "x-initrd.rootfs"); } static int add_mount(const char *what, const char *where, const char *type, const char *opts, -- cgit v1.2.1 From df3e57f542cf680cd891dfbd85615885b54770dc Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 18:18:57 +0100 Subject: fstab-generator: add missing OOM check --- src/fstab-generator/fstab-generator.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index d5f9db49ca..a0a87a15fc 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -389,13 +389,15 @@ static int add_mount(const char *what, const char *where, const char *type, cons } static int parse_fstab(const char *prefix, bool initrd) { - FILE *f; _cleanup_free_ char *fstab_path = NULL; + FILE *f; int r = 0; struct mntent *me; - errno = 0; - fstab_path = strjoin(prefix, "/etc/fstab", NULL); + fstab_path = strjoin(strempty(prefix), "/etc/fstab", NULL); + if (!fstab_path) + return log_oom(); + f = setmntent(fstab_path, "r"); if (!f) { if (errno == ENOENT) @@ -614,7 +616,7 @@ int main(int argc, char *argv[]) { if (!arg_enabled) return (r < 0) ? EXIT_FAILURE : EXIT_SUCCESS; - k = parse_fstab("", false); + k = parse_fstab(NULL, false); if (in_initrd()) l = parse_fstab("/sysroot", true); -- cgit v1.2.1 From 80c39ad27f5e99b1f18bdacd2b27a05ddee6cca1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 18:19:52 +0100 Subject: fstab-generator: fix minor memory leak on error path --- src/fstab-generator/fstab-generator.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index a0a87a15fc..7f065eb353 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -468,8 +468,8 @@ finish: } static int parse_new_root_from_proc_cmdline(void) { - char *w, *state; _cleanup_free_ char *what = NULL, *type = NULL, *opts = NULL, *line = NULL; + char *w, *state; int r; size_t l; @@ -487,7 +487,7 @@ static int parse_new_root_from_proc_cmdline(void) { /* root= and roofstype= may occur more than once, the last instance should take precedence. * In the case of multiple rootflags= the arguments should be concatenated */ FOREACH_WORD_QUOTED(w, l, line, state) { - char *word, *tmp_word; + _cleanup_free_ char *word; word = strndup(w, l); if (!word) @@ -506,22 +506,25 @@ static int parse_new_root_from_proc_cmdline(void) { return log_oom(); } else if (startswith(word, "rootflags=")) { - tmp_word = opts; - opts = strjoin(opts, ",", word + 10, NULL); - free(tmp_word); - if (!opts) + char *o; + + o = strjoin(opts, ",", word + 10, NULL); + if (!o) return log_oom(); + free(opts); + opts = o; + } else if (streq(word, "ro") || streq(word, "rw")) { - tmp_word = opts; - opts = strjoin(opts, ",", word, NULL); - free(tmp_word); - if (!opts) + char *o; + + o = strjoin(opts, ",", word, NULL); + if (!o) return log_oom(); + free(opts); + opts = o; } - - free(word); } if (!what) { -- cgit v1.2.1 From d95fd3df5997b0dab8650d9427997d295d0975e3 Mon Sep 17 00:00:00 2001 From: Umut Tezduyar Date: Thu, 14 Mar 2013 14:58:40 +0100 Subject: build-sys: configurable debug shell tty path --- configure.ac | 9 +++++++++ units/debug-shell.service.in | 4 ++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/configure.ac b/configure.ac index f1bf7582fd..d6e5a090bd 100644 --- a/configure.ac +++ b/configure.ac @@ -754,6 +754,15 @@ AS_IF([test "x$enable_keymap" = "xyes"], [ ]) AM_CONDITIONAL([ENABLE_KEYMAP], [test "x$enable_keymap" = "xyes"]) +# ------------------------------------------------------------------------------ +debugshell=/dev/tty9 +AC_ARG_WITH([debugshelltty], + [AS_HELP_STRING([--with-debugshelltty=PATH], + [Specify the tty device for debug shell])], + [debugshell="$withval"], + []) +AC_SUBST(debugshell) + # ------------------------------------------------------------------------------ have_manpages=no AC_ARG_ENABLE(manpages, AS_HELP_STRING([--disable-manpages], [disable manpages])) diff --git a/units/debug-shell.service.in b/units/debug-shell.service.in index 2aa98d3cc5..50afb11e90 100644 --- a/units/debug-shell.service.in +++ b/units/debug-shell.service.in @@ -6,7 +6,7 @@ # (at your option) any later version. [Unit] -Description=Early root shell on tty9 FOR DEBUGGING ONLY +Description=Early root shell on @debugshell@ FOR DEBUGGING ONLY Documentation=man:sushell(8) DefaultDependencies=no IgnoreOnIsolate=yes @@ -17,7 +17,7 @@ ExecStart=@sushell@ Restart=always RestartSec=0 StandardInput=tty -TTYPath=/dev/tty9 +TTYPath=@debugshell@ TTYReset=yes TTYVHangup=yes KillMode=process -- cgit v1.2.1 From 5ec6b15b65304d94dc1c8cbad05c8b996b470d3a Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 25 Mar 2013 18:49:55 +0100 Subject: build-sys: add missing sed substitution for DEBUGTTY --- Makefile.am | 3 ++- configure.ac | 12 ++++++------ units/debug-shell.service.in | 6 +++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/Makefile.am b/Makefile.am index f958974833..2a1a08ce9b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3734,7 +3734,8 @@ SED_PROCESS = \ -e 's,@VERSION\@,$(VERSION),g' \ -e 's,@rootprefix\@,$(rootprefix),g' \ -e 's,@udevlibexecdir\@,$(udevlibexecdir),g' \ - -e 's,@sushell\@,$(sushell),g' \ + -e 's,@SUSHELL\@,$(SUSHELL),g' \ + -e 's,@DEBUGTTY\@,$(DEBUGTTY),g' \ -e 's,@KILL\@,$(KILL),g' \ -e 's,@QUOTAON\@,$(QUOTAON),g' \ -e 's,@QUOTACHECK\@,$(QUOTACHECK),g' \ diff --git a/configure.ac b/configure.ac index d6e5a090bd..1c9d5596ea 100644 --- a/configure.ac +++ b/configure.ac @@ -275,11 +275,11 @@ if test "x$enable_selinux" != "xno"; then fi AM_CONDITIONAL(HAVE_SELINUX, [test "$have_selinux" = "yes"]) if test "x${have_selinux}" != xno ; then - sushell=/sbin/sushell + SUSHELL=/sbin/sushell else - sushell=/bin/sh + SUSHELL=/bin/sh fi -AC_SUBST(sushell) +AC_SUBST(SUSHELL) # ------------------------------------------------------------------------------ have_xz=no @@ -755,13 +755,13 @@ AS_IF([test "x$enable_keymap" = "xyes"], [ AM_CONDITIONAL([ENABLE_KEYMAP], [test "x$enable_keymap" = "xyes"]) # ------------------------------------------------------------------------------ -debugshell=/dev/tty9 +DEBUGTTY=/dev/tty9 AC_ARG_WITH([debugshelltty], [AS_HELP_STRING([--with-debugshelltty=PATH], [Specify the tty device for debug shell])], - [debugshell="$withval"], + [DEBUGTTY="$withval"], []) -AC_SUBST(debugshell) +AC_SUBST(DEBUGTTY) # ------------------------------------------------------------------------------ have_manpages=no diff --git a/units/debug-shell.service.in b/units/debug-shell.service.in index 50afb11e90..a6acad3ec5 100644 --- a/units/debug-shell.service.in +++ b/units/debug-shell.service.in @@ -6,18 +6,18 @@ # (at your option) any later version. [Unit] -Description=Early root shell on @debugshell@ FOR DEBUGGING ONLY +Description=Early root shell on @DEBUGTTY@ FOR DEBUGGING ONLY Documentation=man:sushell(8) DefaultDependencies=no IgnoreOnIsolate=yes [Service] Environment=TERM=linux -ExecStart=@sushell@ +ExecStart=@SUSHELL@ Restart=always RestartSec=0 StandardInput=tty -TTYPath=@debugshell@ +TTYPath=@DEBUGTTY@ TTYReset=yes TTYVHangup=yes KillMode=process -- cgit v1.2.1 From 1b036593b76614dd05942a78120c151161cccc0f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= Date: Mon, 25 Mar 2013 21:10:29 +0200 Subject: fstab-generator: add missing strempty() calls --- src/fstab-generator/fstab-generator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 7f065eb353..9754f3a69a 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -403,7 +403,7 @@ static int parse_fstab(const char *prefix, bool initrd) { if (errno == ENOENT) return 0; - log_error("Failed to open %s/etc/fstab: %m", prefix); + log_error("Failed to open %s/etc/fstab: %m", strempty(prefix)); return -errno; } @@ -415,7 +415,7 @@ static int parse_fstab(const char *prefix, bool initrd) { continue; what = fstab_node_to_udev_node(me->mnt_fsname); - where = strjoin(prefix, me->mnt_dir, NULL); + where = strjoin(strempty(prefix), me->mnt_dir, NULL); if (!what || !where) { r = log_oom(); goto finish; -- cgit v1.2.1 From e3d84721dc9bcf9008f72dae03ff0f7842d0bb4b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 21:20:08 +0100 Subject: units: introduce new timers.target and paths.target to hook timer/path units into for boot --- Makefile.am | 10 +- man/bootup.xml | 143 ++++++++++-------- man/systemd.special.xml | 258 ++++++++++++++++++++++---------- src/core/path.c | 10 +- src/core/service.c | 10 ++ src/core/socket.c | 10 +- src/core/special.h | 2 + src/core/timer.c | 8 +- units/basic.target | 4 +- units/paths.target | 10 ++ units/systemd-ask-password-console.path | 2 +- units/systemd-ask-password-wall.path | 2 +- units/timers.target | 10 ++ 13 files changed, 319 insertions(+), 160 deletions(-) create mode 100644 units/paths.target create mode 100644 units/timers.target diff --git a/Makefile.am b/Makefile.am index 2a1a08ce9b..8569983a15 100644 --- a/Makefile.am +++ b/Makefile.am @@ -193,8 +193,8 @@ SHUTDOWN_TARGET_WANTS = LOCAL_FS_TARGET_WANTS = MULTI_USER_TARGET_WANTS = SYSINIT_TARGET_WANTS = -BASIC_TARGET_WANTS = SOCKETS_TARGET_WANTS = +TIMERS_TARGET_WANTS = SYSTEM_UNIT_ALIASES = USER_UNIT_ALIASES = @@ -211,8 +211,8 @@ install-target-wants-hook: what="$(LOCAL_FS_TARGET_WANTS)" && wants=local-fs.target && $(add-wants) what="$(MULTI_USER_TARGET_WANTS)" && wants=multi-user.target && $(add-wants) what="$(SYSINIT_TARGET_WANTS)" && wants=sysinit.target && $(add-wants) - what="$(BASIC_TARGET_WANTS)" && wants=basic.target && $(add-wants) what="$(SOCKETS_TARGET_WANTS)" && wants=sockets.target && $(add-wants) + what="$(TIMERS_TARGET_WANTS)" && wants=timers.target && $(add-wants) define add-wants [ -z "$$what" ] || ( \ @@ -371,6 +371,8 @@ dist_systemunit_DATA = \ units/sigpwr.target \ units/sleep.target \ units/sockets.target \ + units/timers.target \ + units/paths.target \ units/suspend.target \ units/swap.target \ units/systemd-initctl.socket \ @@ -3916,7 +3918,7 @@ SYSINIT_TARGET_WANTS += \ systemd-tmpfiles-setup.service \ systemd-sysctl.service \ systemd-ask-password-console.path -BASIC_TARGET_WANTS += \ +TIMERS_TARGET_WANTS += \ systemd-tmpfiles-clean.timer if HAVE_SYSV_COMPAT @@ -3938,6 +3940,8 @@ SYSTEM_UNIT_ALIASES += \ USER_UNIT_ALIASES += \ $(systemunitdir)/shutdown.target shutdown.target \ $(systemunitdir)/sockets.target sockets.target \ + $(systemunitdir)/timers.target timers.target \ + $(systemunitdir)/paths.target paths.target \ $(systemunitdir)/bluetooth.target bluetooth.target \ $(systemunitdir)/printer.target printer.target \ $(systemunitdir)/sound.target sound.target diff --git a/man/bootup.xml b/man/bootup.xml index 65923528d4..a596e85b70 100644 --- a/man/bootup.xml +++ b/man/bootup.xml @@ -50,18 +50,20 @@ Description - A number of different components are involved in the - system boot. Immediately after power-up, the system - BIOS will do minimal hardware initialization, and hand - control over to a boot loader stored on a persistent - storage device. This boot loader will then invoke an - OS kernel from disk (or the network). In the Linux - case this kernel now (optionally) extracts and + A number of different components are involved in + the system boot. Immediately after power-up, the + system BIOS will do minimal hardware initialization, + and hand control over to a boot loader stored on a + persistent storage device. This boot loader will then + invoke an OS kernel from disk (or the network). In the + Linux case this kernel (optionally) extracts and executes an initial RAM disk image (initrd) such as dracut8 - which looks for the root file system. After the root - file system is found and mounted the initrd hands over - control to the system manager (such as + which looks for the root file system (possibly using + systemd1 + for this). After the root file system is found and + mounted the initrd hands over control to the host's + system manager (such as systemd1) stored on the OS image which is then responsible for probing all remaining hardware, mounting all necessary @@ -132,35 +134,35 @@ v sysinit.target | - _________________/|\___________________ - / | \ - | | | - v | v - (various | rescue.service - sockets...) | | - | | v - v | rescue.target - sockets.target | - | | - \_________________ | - \| + ____________________________________/|\________________________________________ + / | | | \ + | | | | | + v v | v v + (various (various | (various rescue.service + timers...) paths...) | sockets...) | + | | | | v + v v | v rescue.target + timers.target paths.target | sockets.target + | | | | + \__________________|_________________ | ___________________/ + \|/ v basic.target | - __________________________________/| emergency.service - / | | | - | | | v - v v v emergency.target - display- (various system (various system - manager.service services services) - | required for | - | graphical UIs) v - | | multi-user.target - | | | - \_______________ | _________________/ + ____________________________________/| emergency.service + / | | | + | | | v + v v v emergency.target + display- (various system (various system + manager.service services services) + | required for | + | graphical UIs) v + | | multi-user.target + | | | + \_________________ | _________________/ \|/ v - graphical.target + graphical.target Target units that are commonly used as boot targets are emphasized. These @@ -174,23 +176,41 @@ - Initrd System Manager Bootup - The default target in the initrd is the initrd.target. The bootup process is - identical to the System Manager Bootup until it reaches basic.target. From there, - systemd approaches the special initrd.target. If the root device can be mounted at - /sysroot, the sysroot.mount unit becomes active and the initrd-root-fs.target is - reached. - The initrd-parse-etc.service scans /sysroot/etc/fstab for a possible /usr mountpoint - and additional entries marked with the x-initrd.mount option. - All entries found are mounted below /sysroot, and the initrd-fs.target is reached. - The initrd-cleanup.service isolates to the initrd-switch-root.target, where cleanup - services can run. As the very last step, the initrd-switch-root.service is activated, - which will cause the system to switch its root to /sysroot. + Bootup in the Initial RAM Disk (initrd) + The initial RAM disk implementation (initrd) can + be set up using systemd as well. In this case boot up + inside the initrd follows the following + structure. + + The default target in the initrd is + initrd.target. The bootup process + begins identical to the system manager bootup (see + above) until it reaches + basic.target. From there, systemd + approaches the special target + initrd.target. If the root device + can be mounted at /sysroot, the + sysroot.mount unit becomes active + and initrd-root-fs.target is + reached. The service + initrd-parse-etc.service scans + /sysroot/etc/fstab for a possible + /usr mount point and additional + entries marked with the + x-initrd.mount option. All + entries found are mounted below + /sysroot, and + initrd-fs.target is reached. The + service initrd-cleanup.service + isolates to the + initrd-switch-root.target, where + cleanup services can run. As the very last step, the + initrd-switch-root.service is + activated, which will cause the system to switch its + root to /sysroot. - - (identical to System Manager Bootup) - : + : (beginning identical to above) : v basic.target @@ -203,13 +223,13 @@ | initrd-root-fs.target | | | v - | initrd-parse-etc.service - (custom initrd services) | - | v + v initrd-parse-etc.service + (custom initrd | + services...) v | (sysroot-usr.mount and | various mounts marked | with fstab option - | x-initrd.mount) + | x-initrd.mount...) | | | v | initrd-fs.target @@ -225,11 +245,11 @@ | v ______________________/| - / | + / v | initrd-udevadm-cleanup-db.service - | | - (custom initrd services) | - | | + v | + (custom initrd | + services...) | \______________________ | \| v @@ -239,17 +259,16 @@ initrd-switch-root.service | v - switch-root - + Transition to Host OS System Manager Shutdown - System shutdown also consists of various target - units with some minimal ordering structure - applied: + System shutdown with systemd also consists of + various target units with some minimal ordering + structure applied: diff --git a/man/systemd.special.xml b/man/systemd.special.xml index 67a81b639b..8a7242662d 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -73,6 +73,7 @@ network.target, nss-lookup.target, nss-user-lookup.target, + paths.target, poweroff.target, printer.target, reboot.target, @@ -97,6 +98,7 @@ syslog.socket, system-update.target, time-sync.target, + timers.target, umount.target @@ -116,22 +118,23 @@ basic.target A special target unit - covering early boot-up. + covering basic boot-up. systemd automatically adds dependencies of the types - Requires and After for this - target unit to all SysV - service units configured for - runlevel 1 to 5. - Usually this should pull-in - all sockets, mount points, - swap devices and other basic + Requires= + and After= + for this target unit to all + services (except for those + with + DefaultDependencies=no). + + Usually this should + pull-in all mount points, swap + devices, sockets, timers, and + path units and other basic initialization necessary for - the general purpose - daemons. Most normal daemons - should have dependencies of - type After and Requires on - this unit. + general purpose + daemons. @@ -139,9 +142,15 @@ This target is started automatically as soon as a - bluetooth controller is + Bluetooth controller is plugged in or becomes available at boot. + + This may be used to pull + in Bluetooth management + daemons dynamically when + Bluetooth hardware is + found. @@ -169,7 +178,7 @@ dbus.service A special unit for the - D-Bus system bus. As soon as + D-Bus bus daemon. As soon as this service is fully started up systemd will connect to it and register its @@ -182,7 +191,7 @@ A special unit for the D-Bus system bus socket. All units with - Type=dbus + Type=dbus automatically gain a dependency on this unit. @@ -198,6 +207,7 @@ multi-user.target or graphical.target. + The default unit systemd starts at bootup can be overridden with the @@ -247,8 +257,10 @@ getty.target A special target unit - that pulls in all local TTY - getty instances. + that pulls in statically + configured local TTY + getty + instances. @@ -261,11 +273,17 @@ multi-user.target. Units that are needed - for graphical login shall add - Wants dependencies for their - unit to this unit (or + for graphical logins shall add + Wants= + dependencies for their unit to + this unit (or multi-user.target) - during installation. + during installation. This is + best configured via + WantedBy=graphical.target + in the unit's + [Install] + section. @@ -290,7 +308,13 @@ halt.target A special target unit - for shutting down and halting the system. + for shutting down and halting + the system. Note that this + target is distinct from + poweroff.target + in that it generally really + just halts the system rather + than powering it down. Applications wanting to halt the system should start @@ -300,16 +324,17 @@ initrd-fs.target - systemd automatically - adds dependencies of type - Before to sysroot-usr.mount and - all mount points fround in + systemd-fstab-generator3 + automatically adds + dependencies of type + Before= to + sysroot-usr.mount + and all mount points fround in /etc/fstab that have the and mount options set. - See also systemd-fstab-generator. @@ -338,20 +363,21 @@ local-fs.target - systemd automatically + systemd-fstab-generator3 + automatically adds + dependencies of type + Before= to + all mount units that refer to + local mount points for this + target unit. In addition, it adds dependencies of type - After to all mount units that - refer to local mount points - for this target unit. In - addition, systemd adds - dependencies of type Wants to + Wants= to this target unit for those mounts listed in /etc/fstab that have the - and - - mount options set. + mount + option set. @@ -377,9 +403,15 @@ Units that are needed for a multi-user system shall - add Wants dependencies to - this unit for their unit during - installation. + add Wants= + dependencies for their unit to + this unit during + installation. This is best + configured via + WantedBy=multi-uer.target + in the unit's + [Install] + section. @@ -387,10 +419,10 @@ systemd automatically adds dependencies of type - After for this target unit to - all SysV init script service - units with an LSB header - referring to the + After= for + this target unit to all SysV + init script service units with + an LSB header referring to the $network facility. @@ -418,7 +450,8 @@ nss-user-lookup.target should be used. systemd automatically adds - dependencies of type After for + dependencies of type + After= for this target unit to all SysV init script service units with an LSB header referring to the @@ -440,6 +473,29 @@ should be used. + + paths.target + + A special target unit + that sets up all path units + (see + systemd.path5 + for details) that shall be + active after boot. + + It is recommended that + path units installed by + applications get pulled in via + Wants= + dependencies from this + unit. This is best configured + via a + WantedBy=paths.target + in the path unit's + [Install] + section. + + poweroff.target @@ -463,6 +519,12 @@ printer is plugged in or becomes available at boot. + + This may be used to pull + in printer management + daemons dynamically when + printer hardware is + found. @@ -490,10 +552,10 @@ systemd automatically adds dependencies of type - After for this target unit to - all SysV init script service - units with an LSB header - referring to the + After= for + this target unit to all SysV + init script service units with + an LSB header referring to the $remote_fs facility. @@ -525,11 +587,14 @@ initrd-root-fs.target - systemd automatically - adds dependencies of type - Before to the sysroot.mount unit, - which is generated from the kernel command - line by the systemd-fstab-generator. + systemd-fstab-generator3 + automatically adds + dependencies of type + Before= to + the + sysroot.mount + unit, which is generated from + the kernel command line. @@ -538,10 +603,10 @@ systemd automatically adds dependencies of type - After for this target unit to - all SysV init script service - units with an LSB header - referring to the + After= for + this target unit to all SysV + init script service units with + an LSB header referring to the $portmap facility. @@ -574,20 +639,12 @@ Services that shall be terminated on system shutdown - shall add Conflicts + shall add Conflicts= dependencies to this unit for their service unit, which is implicitly done when DefaultDependencies=yes is set (the default). - - systemd automatically - adds dependencies of type - Conflicts to this target unit - for all SysV init script - service units that shall be - terminated in SysV runlevels 0 - or 6. @@ -607,7 +664,9 @@ A special target unit that is pulled in by suspend.target, - hibernate.target and hybrid-sleep.target + hibernate.target + and + hybrid-sleep.target and may be used to hook units into the sleep state logic. @@ -621,20 +680,35 @@ smartcard controller is plugged in or becomes available at boot. + + This may be used to pull + in printer management + daemons dynamically when + smartcard hardware is + found. sockets.target A special target unit - that sets up all service - sockets. + that sets up all socket + units.(see + systemd.socket5 + for details) that shall be + active after boot. Services that can be socket-activated shall add - Wants dependencies to this - unit for their socket unit - during installation. + Wants= + dependencies to this unit for + their socket unit during + installation. This is best + configured via a + WantedBy=sockets.target + in the socket unit's + [Install] + section. @@ -645,6 +719,11 @@ sound card is plugged in or becomes available at boot. + + This may be used to pull + in audio management daemons + dynamically when printer + hardware is found. @@ -710,14 +789,37 @@ systemd automatically adds dependencies of type - After for this target unit to - all SysV init script service - units with an LSB header - referring to the + After= for + this target unit to all SysV + init script service units with + an LSB header referring to the $time facility. + + timers.target + + A special target unit + that sets up all timer + units (see + systemd.timer5 + for details) that shall be + active after boot. + + It is recommended that + timer units installed by + applications get pulled in via + Wants= + dependencies from this + unit. This is best configured + via + WantedBy=timers.target + in the timer unit's + [Install] + section. + + umount.target @@ -788,7 +890,7 @@ systemd.service5, systemd.socket5, systemd.target5, - bootup7 + bootup7, systemd-fstab-generator8 diff --git a/src/core/path.c b/src/core/path.c index 295e5cdf0e..ff49c069ee 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -361,12 +361,12 @@ static int path_add_default_dependencies(Path *p) { assert(p); - if (UNIT(p)->manager->running_as == SYSTEMD_SYSTEM) { - r = unit_add_dependency_by_name(UNIT(p), UNIT_BEFORE, - SPECIAL_BASIC_TARGET, NULL, true); - if (r < 0) - return r; + r = unit_add_dependency_by_name(UNIT(p), UNIT_BEFORE, + SPECIAL_PATHS_TARGET, NULL, true); + if (r < 0) + return r; + if (UNIT(p)->manager->running_as == SYSTEMD_SYSTEM) { r = unit_add_two_dependencies_by_name(UNIT(p), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, NULL, true); if (r < 0) diff --git a/src/core/service.c b/src/core/service.c index fa8a1cb039..98266a5a90 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1148,6 +1148,16 @@ static int service_add_default_dependencies(Service *s) { SPECIAL_SOCKETS_TARGET, NULL, true); if (r < 0) return r; + + r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, + SPECIAL_TIMERS_TARGET, NULL, true); + if (r < 0) + return r; + + r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, + SPECIAL_PATHS_TARGET, NULL, true); + if (r < 0) + return r; } /* Second, activate normal shutdown */ diff --git a/src/core/socket.c b/src/core/socket.c index a3e3631dac..31f4bf49b6 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -331,11 +331,13 @@ static int socket_add_default_dependencies(Socket *s) { int r; assert(s); - if (UNIT(s)->manager->running_as == SYSTEMD_SYSTEM) { - if ((r = unit_add_dependency_by_name(UNIT(s), UNIT_BEFORE, SPECIAL_SOCKETS_TARGET, NULL, true)) < 0) - return r; + r = unit_add_dependency_by_name(UNIT(s), UNIT_BEFORE, SPECIAL_SOCKETS_TARGET, NULL, true); + if (r < 0) + return r; - if ((r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, NULL, true)) < 0) + if (UNIT(s)->manager->running_as == SYSTEMD_SYSTEM) { + r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, NULL, true); + if (r < 0) return r; } diff --git a/src/core/special.h b/src/core/special.h index c7b856e2bd..ad873a9c31 100644 --- a/src/core/special.h +++ b/src/core/special.h @@ -46,6 +46,8 @@ /* Early boot targets */ #define SPECIAL_SYSINIT_TARGET "sysinit.target" #define SPECIAL_SOCKETS_TARGET "sockets.target" +#define SPECIAL_TIMERS_TARGET "timers.target" +#define SPECIAL_PATHS_TARGET "paths.target" #define SPECIAL_LOCAL_FS_TARGET "local-fs.target" #define SPECIAL_LOCAL_FS_PRE_TARGET "local-fs-pre.target" #define SPECIAL_INITRD_FS_TARGET "initrd-fs.target" diff --git a/src/core/timer.c b/src/core/timer.c index d98468fd9e..16b49174d3 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -96,11 +96,11 @@ static int timer_add_default_dependencies(Timer *t) { assert(t); - if (UNIT(t)->manager->running_as == SYSTEMD_SYSTEM) { - r = unit_add_dependency_by_name(UNIT(t), UNIT_BEFORE, SPECIAL_BASIC_TARGET, NULL, true); - if (r < 0) - return r; + r = unit_add_dependency_by_name(UNIT(t), UNIT_BEFORE, SPECIAL_TIMERS_TARGET, NULL, true); + if (r < 0) + return r; + if (UNIT(t)->manager->running_as == SYSTEMD_SYSTEM) { r = unit_add_two_dependencies_by_name(UNIT(t), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SYSINIT_TARGET, NULL, true); if (r < 0) return r; diff --git a/units/basic.target b/units/basic.target index f9d03fa16f..b67c996b39 100644 --- a/units/basic.target +++ b/units/basic.target @@ -8,6 +8,6 @@ [Unit] Description=Basic System Documentation=man:systemd.special(7) -Requires=sysinit.target sockets.target -After=sysinit.target sockets.target +Requires=sysinit.target sockets.target timers.target paths.target +After=sysinit.target sockets.target timers.target paths.target RefuseManualStart=yes diff --git a/units/paths.target b/units/paths.target new file mode 100644 index 0000000000..25c7fd031e --- /dev/null +++ b/units/paths.target @@ -0,0 +1,10 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Paths +Documentation=man:systemd.special(7) diff --git a/units/systemd-ask-password-console.path b/units/systemd-ask-password-console.path index 80f6cc4c18..2949635fea 100644 --- a/units/systemd-ask-password-console.path +++ b/units/systemd-ask-password-console.path @@ -11,7 +11,7 @@ Documentation=man:systemd-ask-password-console.service(8) DefaultDependencies=no Conflicts=shutdown.target After=plymouth-start.service -Before=basic.target shutdown.target +Before=paths.target shutdown.target ConditionPathExists=!/run/plymouth/pid [Path] diff --git a/units/systemd-ask-password-wall.path b/units/systemd-ask-password-wall.path index 62dee80552..95ec9bc8a0 100644 --- a/units/systemd-ask-password-wall.path +++ b/units/systemd-ask-password-wall.path @@ -10,7 +10,7 @@ Description=Forward Password Requests to Wall Directory Watch Documentation=man:systemd-ask-password-console.service(8) DefaultDependencies=no Conflicts=shutdown.target -Before=basic.target shutdown.target +Before=paths.target shutdown.target [Path] DirectoryNotEmpty=/run/systemd/ask-password diff --git a/units/timers.target b/units/timers.target new file mode 100644 index 0000000000..07fda3d9d0 --- /dev/null +++ b/units/timers.target @@ -0,0 +1,10 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Timers +Documentation=man:systemd.special(7) -- cgit v1.2.1 From ee64428ec25b8ebb47beda9f6729039f496cbc51 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 21:21:51 +0100 Subject: update TODO --- TODO | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index f218d182c3..1a414d5159 100644 --- a/TODO +++ b/TODO @@ -49,6 +49,10 @@ Features: * when prompting for a hdd password show GUID partition label +* document which targets shall be pulled in by users of the facility, + and which ones are to be pulled in by the implementors of the + facility. + * teach udev + logind's uaccess to somehow handle the "dead" device nodes from: /lib/modules/$(uname -r)/modules.devname and apply ACLs to them if they have TAG=="uaccess" in udev rules. @@ -56,9 +60,6 @@ Features: * clean up early boot services, and put them all before sysinit.target and leave basic.target alone. -* introduce timers.target and paths.target and automatucally order all - timers and paths before it and after sysinit.target. - * matching against units is currently broken in journalctl. We really need another AND level in the expressions, i.e. sd_journal_add_conjunction(). -- cgit v1.2.1 From b0afe214c043ec2360c652d02f1e28489b817628 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 21:22:52 +0100 Subject: units: order all udev services before sysinit.target, too Not that it would matter much, but let's make things a bit more systematic: early boot services shall order themselves before sysinit.target, and nothing else. --- units/systemd-udev-settle.service.in | 1 + units/systemd-udev-trigger.service.in | 3 ++- units/systemd-udevd.service.in | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/units/systemd-udev-settle.service.in b/units/systemd-udev-settle.service.in index 107fd8d1cc..037dd9a872 100644 --- a/units/systemd-udev-settle.service.in +++ b/units/systemd-udev-settle.service.in @@ -15,6 +15,7 @@ Documentation=man:udev(7) man:systemd-udevd.service(8) DefaultDependencies=no Wants=systemd-udevd.service After=systemd-udev-trigger.service +Before=sysinit.target ConditionCapability=CAP_MKNOD [Service] diff --git a/units/systemd-udev-trigger.service.in b/units/systemd-udev-trigger.service.in index bafea54573..604c369a1b 100644 --- a/units/systemd-udev-trigger.service.in +++ b/units/systemd-udev-trigger.service.in @@ -8,9 +8,10 @@ [Unit] Description=udev Coldplug all Devices Documentation=man:udev(7) man:systemd-udevd.service(8) +DefaultDependencies=no Wants=systemd-udevd.service After=systemd-udevd-kernel.socket systemd-udevd-control.socket -DefaultDependencies=no +Before=sysinit.target ConditionCapability=CAP_MKNOD [Service] diff --git a/units/systemd-udevd.service.in b/units/systemd-udevd.service.in index 97fb2f3ac5..ddef423625 100644 --- a/units/systemd-udevd.service.in +++ b/units/systemd-udevd.service.in @@ -8,10 +8,10 @@ [Unit] Description=udev Kernel Device Manager Documentation=man:systemd-udevd.service(8) man:udev(7) +DefaultDependencies=no Wants=systemd-udevd-control.socket systemd-udevd-kernel.socket After=systemd-udevd-control.socket systemd-udevd-kernel.socket Before=sysinit.target local-fs-pre.target -DefaultDependencies=no ConditionCapability=CAP_MKNOD [Service] -- cgit v1.2.1 From b17959153a460b2a468333868b101fc7e64d7347 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 21:25:06 +0100 Subject: units: and also, order all early-boot sockets before sockets.target --- units/systemd-udevd-control.socket | 1 + units/systemd-udevd-kernel.socket | 1 + 2 files changed, 2 insertions(+) diff --git a/units/systemd-udevd-control.socket b/units/systemd-udevd-control.socket index 9065ea2c64..ca17102dfa 100644 --- a/units/systemd-udevd-control.socket +++ b/units/systemd-udevd-control.socket @@ -9,6 +9,7 @@ Description=udev Control Socket Documentation=man:systemd-udevd.service(8) man:udev(7) DefaultDependencies=no +Before=sockets.target ConditionCapability=CAP_MKNOD [Socket] diff --git a/units/systemd-udevd-kernel.socket b/units/systemd-udevd-kernel.socket index 54a005b7a7..4b8a5b0fb5 100644 --- a/units/systemd-udevd-kernel.socket +++ b/units/systemd-udevd-kernel.socket @@ -9,6 +9,7 @@ Description=udev Kernel Socket Documentation=man:systemd-udevd.service(8) man:udev(7) DefaultDependencies=no +Before=sockets.target ConditionCapability=CAP_MKNOD [Socket] -- cgit v1.2.1 From a69fe051b85865cad5df74f9f58915e36c4b1418 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 21:29:58 +0100 Subject: Revert "remote-fs.target: want remote-fs-pre.target" This reverts commit 6bde0b3220e95a08cefb70846f73b2cf24b7734a. We should not pull in remote-fs-pre.target unconditionally. It's supposed to be pulled in by the implementors of it, rather then its users. --- units/remote-fs.target | 2 -- 1 file changed, 2 deletions(-) diff --git a/units/remote-fs.target b/units/remote-fs.target index b11074f8ac..9e68878ad8 100644 --- a/units/remote-fs.target +++ b/units/remote-fs.target @@ -8,8 +8,6 @@ [Unit] Description=Remote File Systems Documentation=man:systemd.special(7) -Wants=remote-fs-pre.target -After=remote-fs-pre.target [Install] WantedBy=multi-user.target -- cgit v1.2.1 From e8d2f6cde0af86eece9118718ad0a8a19e1cffec Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 22:04:40 +0100 Subject: units: introduce remote-fs-setup.target to pull in dependencies from remote mounts This introduces remote-fs-setup.target independently of remote-fs-pre.target. The former is only for pulling things in, the latter only for ordering. The new semantics: remote-fs-setup.target: is pulled in automatically by all remote mounts. Shall be used to pull in other units that want to run when at least one remote mount is set up. Is not ordered against the actual mount units, in order to allow activation of its dependencies even 'a posteriori', i.e. when a mount is established outside of systemd and is only picked up by it. remote-fs-pre.target: needs to be pulled in automatically by the implementing service, is otherwise not part of the initial transaction. This is ordered before all remote mount units. A service that wants to be pulled in and run before all remote mounts should hence have: a) WantedBy=remote-fs-setup.target -- so that it is pulled in b) Wants=remote-fs-pre.target + Before=remote-fs-pre.target -- so that it is ordered before the mount point, normally. --- man/systemd.special.xml | 50 ++++++++++++++++++++++++++++++++--- src/core/mount.c | 17 +++++++++--- src/core/special.h | 1 + src/fstab-generator/fstab-generator.c | 39 ++++++++++++++++++++------- units/local-fs.target | 1 + units/remote-fs-setup.target | 11 ++++++++ units/remote-fs.target | 1 + 7 files changed, 102 insertions(+), 18 deletions(-) create mode 100644 units/remote-fs-setup.target diff --git a/man/systemd.special.xml b/man/systemd.special.xml index 8a7242662d..18974477ea 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -79,6 +79,7 @@ reboot.target, remote-fs.target, remote-fs-pre.target, + remote-fs-setup.target, rescue.target, initrd-root-fs.target, rpcbind.target, @@ -565,11 +566,52 @@ This target unit is automatically ordered before - all remote mount points marked - with + all remote mount point units (see above). It can be used to - execute certain units before - all remote mounts. + run certain units before the + remote mounts are + established. Note that this + unit is generally not part of + the initial transaction, + unless the unit that wants to + be ordered before all remote + mounts pulls it in via a + Wants= type + dependency. If the unit wants + to be pulled in by the first + remote mount showing up it + should use + remote-fs-setup.target + (see below). + + Again, this target unit + is not + suitable for pulling in other + units, it is only useful for + ordering. + + + + remote-fs-setup.target + + This target unit is + automatically pulled in (by a + Wants= type + dependency) by all remote + mount points. It can be used + to run certain units when at + least one remote file system + is to be mounted. Note that + this target is not ordered + against the remote mounts, use + remote-fs-pre.target + for that. + + Again, this target unit + is not + suitable for ordering, it is + only useful for pulling in + other units. diff --git a/src/core/mount.c b/src/core/mount.c index 0adf04e9bf..c4074ebd2e 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -441,7 +441,7 @@ static int mount_add_quota_links(Mount *m) { static int mount_add_default_dependencies(Mount *m) { int r; MountParameters *p; - const char *after; + const char *after, *setup; assert(m); @@ -456,15 +456,24 @@ static int mount_add_default_dependencies(Mount *m) { if (path_equal(m->where, "/")) return 0; - if (mount_is_network(p)) + if (mount_is_network(p)) { after = SPECIAL_REMOTE_FS_PRE_TARGET; - else + setup = SPECIAL_REMOTE_FS_SETUP_TARGET; + } else { after = SPECIAL_LOCAL_FS_PRE_TARGET; + setup = NULL; + } - r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_WANTS, UNIT_AFTER, after, NULL, true); + r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after, NULL, true); if (r < 0) return r; + if (setup) { + r = unit_add_dependency_by_name(UNIT(m), UNIT_WANTS, setup, NULL, true); + if (r < 0) + return r; + } + r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_UMOUNT_TARGET, NULL, true); if (r < 0) return r; diff --git a/src/core/special.h b/src/core/special.h index ad873a9c31..dae7446d73 100644 --- a/src/core/special.h +++ b/src/core/special.h @@ -54,6 +54,7 @@ #define SPECIAL_INITRD_ROOT_FS_TARGET "initrd-root-fs.target" #define SPECIAL_REMOTE_FS_TARGET "remote-fs.target" /* LSB's $remote_fs */ #define SPECIAL_REMOTE_FS_PRE_TARGET "remote-fs-pre.target" +#define SPECIAL_REMOTE_FS_SETUP_TARGET "remote-fs-setup.target" #define SPECIAL_SWAP_TARGET "swap.target" #define SPECIAL_BASIC_TARGET "basic.target" diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 9754f3a69a..2f157c8348 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -205,9 +205,20 @@ static bool mount_is_rootfs(struct mntent *me) { return hasmntopt(me, "x-initrd.rootfs"); } -static int add_mount(const char *what, const char *where, const char *type, const char *opts, - int passno, bool noauto, bool nofail, bool automount, bool isbind, - const char *pre, const char *post, const char *source) { +static int add_mount( + const char *what, + const char *where, + const char *type, + const char *opts, + int passno, + bool noauto, + bool nofail, + bool automount, + bool isbind, + const char *pre, + const char *post, + const char *setup, + const char *source) { char _cleanup_free_ *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL, *automount_name = NULL, *automount_unit = NULL; @@ -259,10 +270,14 @@ static int add_mount(const char *what, const char *where, const char *type, cons if (!path_equal(where, "/")) { if (pre) fprintf(f, - "After=%s\n" - "Wants=%s\n", - pre, + "After=%s\n", pre); + + if (setup) + fprintf(f, + "Wants=%s\n", + setup); + fprintf(f, "Conflicts=" SPECIAL_UMOUNT_TARGET "\n" "Before=" SPECIAL_UMOUNT_TARGET "\n"); @@ -430,7 +445,7 @@ static int parse_fstab(const char *prefix, bool initrd) { k = add_swap(what, me); else { bool noauto, nofail, automount, isbind; - const char *pre, *post; + const char *pre, *post, *setup; noauto = !!hasmntopt(me, "noauto"); nofail = !!hasmntopt(me, "nofail"); @@ -442,20 +457,24 @@ static int parse_fstab(const char *prefix, bool initrd) { if (initrd) { post = SPECIAL_INITRD_FS_TARGET; pre = NULL; + setup = NULL; } else if (mount_is_rootfs(me)) { post = SPECIAL_INITRD_ROOT_FS_TARGET; pre = NULL; + setup = NULL; } else if (mount_is_network(me)) { post = SPECIAL_REMOTE_FS_TARGET; pre = SPECIAL_REMOTE_FS_PRE_TARGET; + setup = SPECIAL_REMOTE_FS_SETUP_TARGET; } else { post = SPECIAL_LOCAL_FS_TARGET; pre = SPECIAL_LOCAL_FS_PRE_TARGET; + setup = NULL; } k = add_mount(what, where, me->mnt_type, me->mnt_opts, - me->mnt_passno, noauto, nofail, automount, - isbind, pre, post, fstab_path); + me->mnt_passno, noauto, nofail, automount, + isbind, pre, post, setup, fstab_path); } if (k < 0) @@ -539,7 +558,7 @@ static int parse_new_root_from_proc_cmdline(void) { log_debug("Found entry what=%s where=/sysroot type=%s", what, type); r = add_mount(what, "/sysroot", type, opts, 0, false, false, false, - false, NULL, SPECIAL_INITRD_ROOT_FS_TARGET, "/proc/cmdline"); + false, NULL, SPECIAL_INITRD_ROOT_FS_TARGET, NULL, "/proc/cmdline"); return (r < 0) ? r : 0; } diff --git a/units/local-fs.target b/units/local-fs.target index dd92b17b6a..ee02e4e988 100644 --- a/units/local-fs.target +++ b/units/local-fs.target @@ -8,5 +8,6 @@ [Unit] Description=Local File Systems Documentation=man:systemd.special(7) +After=local-fs-pre.target OnFailure=emergency.target OnFailureIsolate=yes diff --git a/units/remote-fs-setup.target b/units/remote-fs-setup.target new file mode 100644 index 0000000000..8043717e4a --- /dev/null +++ b/units/remote-fs-setup.target @@ -0,0 +1,11 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Remote File System Setup +Documentation=man:systemd.special(7) +DefaultDependencies=no diff --git a/units/remote-fs.target b/units/remote-fs.target index 9e68878ad8..e867b8d997 100644 --- a/units/remote-fs.target +++ b/units/remote-fs.target @@ -8,6 +8,7 @@ [Unit] Description=Remote File Systems Documentation=man:systemd.special(7) +After=remote-fs-pre.target remote-fs-setup.target [Install] WantedBy=multi-user.target -- cgit v1.2.1 From 752beb0c8560fb7e989d2f8da5e10c4692d78422 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 22:09:53 +0100 Subject: update TODO --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index 1a414d5159..0eae14fec0 100644 --- a/TODO +++ b/TODO @@ -44,6 +44,8 @@ Fedora 19: Features: +* remove duplicate default deps logic from fstab-generator vs. mount.c + * when isolating, try to figure out a way how we implicitly can order all units we stop before the isolating unit... -- cgit v1.2.1 From 627506f104b8b4c974fb3a0958d8202217f599f6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 22:10:32 +0100 Subject: units: there is no point in pulling in ordering 'provides'-style targets Units such as nss-lookup.target, nss-user-lookup.target, remote-fs-pre.target, local-fs-pre.target, time-sync.target, rpcbind.target are to be pulled in by the implementing services, and that's there only purpose. They should not have any 'active component' otherwise, so let's drop all further deps from these units. --- units/nss-lookup.target | 1 - units/nss-user-lookup.target | 1 - units/remote-fs-pre.target | 1 - 3 files changed, 3 deletions(-) diff --git a/units/nss-lookup.target b/units/nss-lookup.target index eea905a715..339b507fae 100644 --- a/units/nss-lookup.target +++ b/units/nss-lookup.target @@ -11,4 +11,3 @@ [Unit] Description=Host and Network Name Lookups Documentation=man:systemd.special(7) -After=network.target diff --git a/units/nss-user-lookup.target b/units/nss-user-lookup.target index 3e0fced101..43b722c970 100644 --- a/units/nss-user-lookup.target +++ b/units/nss-user-lookup.target @@ -11,4 +11,3 @@ [Unit] Description=User and Group Name Lookups Documentation=man:systemd.special(7) -After=network.target diff --git a/units/remote-fs-pre.target b/units/remote-fs-pre.target index 2169533bd3..febdc01c7c 100644 --- a/units/remote-fs-pre.target +++ b/units/remote-fs-pre.target @@ -8,4 +8,3 @@ [Unit] Description=Remote File Systems (Pre) Documentation=man:systemd.special(7) -After=network.target nss-lookup.target -- cgit v1.2.1 From 54f874c56bebfaf199f84fca4bb2650a859bfac2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 22:30:51 +0100 Subject: man: rearrange systemd.special(7) to clarify which units are passive and which ones aren't This also adds a short explanation paragraph for this. --- TODO | 4 - man/systemd.special.xml | 371 ++++++++++++++++++++++++++---------------------- 2 files changed, 203 insertions(+), 172 deletions(-) diff --git a/TODO b/TODO index 0eae14fec0..b49d3e15d4 100644 --- a/TODO +++ b/TODO @@ -51,10 +51,6 @@ Features: * when prompting for a hdd password show GUID partition label -* document which targets shall be pulled in by users of the facility, - and which ones are to be pulled in by the implementors of the - facility. - * teach udev + logind's uaccess to somehow handle the "dead" device nodes from: /lib/modules/$(uname -r)/modules.devname and apply ACLs to them if they have TAG=="uaccess" in udev rules. diff --git a/man/systemd.special.xml b/man/systemd.special.xml index 18974477ea..a76e4cc94f 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -138,22 +138,6 @@ daemons. - - bluetooth.target - - This target is started - automatically as soon as a - Bluetooth controller is - plugged in or becomes - available at boot. - - This may be used to pull - in Bluetooth management - daemons dynamically when - Bluetooth hardware is - found. - - ctrl-alt-del.target @@ -381,18 +365,6 @@ option set. - - local-fs-pre.target - - This target unit is - automatically ordered before - all local mount points marked - with - (see above). It can be used to - execute certain units before - all local mounts. - - multi-user.target @@ -438,42 +410,6 @@ information. - - nss-lookup.target - - A target that should be - used as synchronization point - for all host/network name - service lookups. Note that - this is independent of - user/group name lookups for - which - nss-user-lookup.target - should be used. systemd - automatically adds - dependencies of type - After= for - this target unit to all SysV - init script service units with - an LSB header referring to the - $named - facility. - - - - nss-user-lookup.target - - A target that should be - used as synchronization point - for all user/group name - service lookups. Note that - this is independent of - host/network name lookups for - which - nss-lookup.target - should be used. - - paths.target @@ -512,22 +448,6 @@ unit, for compatibility with SysV. - - printer.target - - This target is started - automatically as soon as a - printer is plugged in or - becomes available at - boot. - - This may be used to pull - in printer management - daemons dynamically when - printer hardware is - found. - - reboot.target @@ -561,36 +481,6 @@ facility. - - remote-fs-pre.target - - This target unit is - automatically ordered before - all remote mount point units - (see above). It can be used to - run certain units before the - remote mounts are - established. Note that this - unit is generally not part of - the initial transaction, - unless the unit that wants to - be ordered before all remote - mounts pulls it in via a - Wants= type - dependency. If the unit wants - to be pulled in by the first - remote mount showing up it - should use - remote-fs-setup.target - (see below). - - Again, this target unit - is not - suitable for pulling in other - units, it is only useful for - ordering. - - remote-fs-setup.target @@ -605,7 +495,7 @@ this target is not ordered against the remote mounts, use remote-fs-pre.target - for that. + for that (see below). Again, this target unit is not @@ -640,19 +530,6 @@ - - rpcbind.target - - systemd automatically - adds dependencies of type - After= for - this target unit to all SysV - init script service units with - an LSB header referring to the - $portmap - facility. - - runlevel2.target runlevel3.target @@ -714,22 +591,6 @@ logic. - - smartcard.target - - This target is started - automatically as soon as a - smartcard controller is - plugged in or becomes - available at boot. - - This may be used to pull - in printer management - daemons dynamically when - smartcard hardware is - found. - - sockets.target @@ -753,21 +614,6 @@ section. - - sound.target - - This target is started - automatically as soon as a - sound card is plugged in or - becomes available at - boot. - - This may be used to pull - in audio management daemons - dynamically when printer - hardware is found. - - suspend.target @@ -826,19 +672,6 @@ Specification. - - time-sync.target - - systemd automatically - adds dependencies of type - After= for - this target unit to all SysV - init script service units with - an LSB header referring to the - $time - facility. - - timers.target @@ -884,6 +717,208 @@ + + Special System Units for Devices + + Some target units are automatically pulled in as + devices of certain kinds show up in the system. These + may be used to automatically activate various services + based on the specific type of the available + hardware. + + + + bluetooth.target + + This target is started + automatically as soon as a + Bluetooth controller is + plugged in or becomes + available at boot. + + This may be used to pull + in Bluetooth management + daemons dynamically when + Bluetooth hardware is + found. + + + + printer.target + + This target is started + automatically as soon as a + printer is plugged in or + becomes available at + boot. + + This may be used to pull + in printer management + daemons dynamically when + printer hardware is + found. + + + + smartcard.target + + This target is started + automatically as soon as a + smartcard controller is + plugged in or becomes + available at boot. + + This may be used to pull + in printer management + daemons dynamically when + smartcard hardware is + found. + + + + sound.target + + This target is started + automatically as soon as a + sound card is plugged in or + becomes available at + boot. + + This may be used to pull + in audio management daemons + dynamically when printer + hardware is found. + + + + + + + Special Passive System Units + + A number of special system targets are defined + that can be used to properly order boot-up of optional + services. These targets are generally not part of the + initial boot transaction, unless they are explicitly + pulled in by one of the implementing services. Note + specifically, that these passive + target units are generally not pulled in by the + consumer of a service, but by the provider of the + service. This means: a consuming service should order + itself after these targets (as appropriate), but not + pull it in. A providing service should order itself + before these targets (as appropriate) and pull it in + (via a Wants= type + dependency). + + + + local-fs-pre.target + + This target unit is + automatically ordered before + all local mount points marked + with + (see above). It can be used to + execute certain units before + all local mounts. + + + + nss-lookup.target + + A target that should be + used as synchronization point + for all host/network name + service lookups. Note that + this is independent of + user/group name lookups for + which + nss-user-lookup.target + should be used. systemd + automatically adds + dependencies of type + After= for + this target unit to all SysV + init script service units with + an LSB header referring to the + $named + facility. + + + + nss-user-lookup.target + + A target that should be + used as synchronization point + for all user/group name + service lookups. Note that + this is independent of + host/network name lookups for + which + nss-lookup.target + should be used. + + + + remote-fs-pre.target + + This target unit is + automatically ordered before + all remote mount point units + (see above). It can be used to + run certain units before the + remote mounts are + established. Note that this + unit is generally not part of + the initial transaction, + unless the unit that wants to + be ordered before all remote + mounts pulls it in via a + Wants= type + dependency. If the unit wants + to be pulled in by the first + remote mount showing up it + should use + remote-fs-setup.target + (see above). + + Again, this target unit + is not + suitable for pulling in other + units, it is only useful for + ordering. + + + + rpcbind.target + + systemd automatically + adds dependencies of type + After= for + this target unit to all SysV + init script service units with + an LSB header referring to the + $portmap + facility. + + + + time-sync.target + + systemd automatically + adds dependencies of type + After= for + this target unit to all SysV + init script service units with + an LSB header referring to the + $time + facility. + + + + + Special User Units -- cgit v1.2.1 From e06e62f4a1d7a976587c4241eca157ce98d2da33 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 22:32:59 +0100 Subject: man: properly document the system targets that are also available for the user instance --- Makefile.am | 3 ++- man/systemd.special.xml | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index 8569983a15..40453deae5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3944,7 +3944,8 @@ USER_UNIT_ALIASES += \ $(systemunitdir)/paths.target paths.target \ $(systemunitdir)/bluetooth.target bluetooth.target \ $(systemunitdir)/printer.target printer.target \ - $(systemunitdir)/sound.target sound.target + $(systemunitdir)/sound.target sound.target \ + $(systemunitdir)/smartcard.target smartcard.target GENERAL_ALIASES += \ $(systemunitdir)/remote-fs.target $(pkgsysconfdir)/system/multi-user.target.wants/remote-fs.target \ diff --git a/man/systemd.special.xml b/man/systemd.special.xml index a76e4cc94f..b77b60d920 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -927,7 +927,13 @@ similar definitions as their system counterparts: default.target, shutdown.target, - sockets.target + sockets.target, + timers.target, + paths.target, + bluetooth.target, + printer.target, + smartcard.target, + sound.target. In addition the following special unit is understood only when systemd runs as service instance: -- cgit v1.2.1 From 35911459410714a0e9108b35da78f96919b65ee7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 23:05:21 +0100 Subject: prepare NEWS for 199 --- NEWS | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) diff --git a/NEWS b/NEWS index 9fc5085b03..8815ce9c4e 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,62 @@ systemd System and Service Manager +CHANGES WITH 199: + + * systemd-python gained an API exposing libsystemd-daemon. + + * The SMACK setup logic gained support for uploading CIPSO + security policy. + + * Behaviour of PrivateTmp=, ReadWriteDirectories=, + ReadOnlyDirectories= and InaccessibleDirectories= has + changed. The private /tmp and /var/tmp directories are now + shared by all processes of a service (which means + ExecStartPre= may now leave data in /tmp that ExecStart= of + the same service can still access). When a service is + stopped its temporary directories are immediately deleted + (normal clean-up with tmpfiles still is done in addition to + this though). + + * By default, systemd will now set a couple of sysctl + variables in the kernel: the safe sysrq options are turned + on, IP route verification is turned on, and source routing + disabled. The recently added hardlink and softlink + protection of the kernel is turned on. These settings should + be reasonably safe, and good defaults for all new systems. + + * The predictable network naming logic may now be turned off + with a new kernel command line switch: net.ifnames=0 + + * A new libsystemd-bus module has been added that implements a + pretty complete D-Bus client library. For details see: + + http://lists.freedesktop.org/archives/systemd-devel/2013-March/009797.html + + * journald will not explicitly flush the journal files to disk + the latest 5min after each write. This will also mark the + files as offline then until the next read. This should + increase reliability. The synchronization delay can be + configured via SyncIntervalSec= in journald.conf. + + * There's a new remote-fs-setup.target unit that can be used + to pull in specific services when at least one remote file + system is to be mounted. + + * There are new targets timers.target and paths.target as + canonical targets to pull user timer and path units in + from. This complements sockets.target with a similar + purpose for socket units. + + Contributions from: Auke Kok, Colin Walters, Cristian + Rodríguez, Daniel Buch, Dave Reisner, Frederic Crozat, Hannes + Reinecke, Harald Hoyer, Jan Alexander Steffens, Jan + Engelhardt, Josh Triplett, Kay Sievers, Lennart Poettering, + Mantas Mikulėnas, Martin Pitt, Mathieu Bridon, Michael Biebl, + Michal Schmidt, Michal Sekletar, Miklos Vajna, Nathaniel Chen, + Oleksii Shevchuk, Ozan Çağlayan, Thomas Hindoe Paaboel + Andersen, Tollef Fog Heen, Tom Gundersen, Umut Tezduyar, + Zbigniew Jędrzejewski-Szmek + CHANGES WITH 198: * Configuration of unit files may now be extended via drop-in -- cgit v1.2.1 From 6a7d3d68bf1ae9bcdaa3a17bc76f72bb7b988ec4 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 23:48:08 +0100 Subject: update NEWS --- NEWS | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 8815ce9c4e..b2011cdf45 100644 --- a/NEWS +++ b/NEWS @@ -34,7 +34,7 @@ CHANGES WITH 199: * journald will not explicitly flush the journal files to disk the latest 5min after each write. This will also mark the - files as offline then until the next read. This should + files as offline then until the next write. This should increase reliability. The synchronization delay can be configured via SyncIntervalSec= in journald.conf. @@ -47,6 +47,9 @@ CHANGES WITH 199: from. This complements sockets.target with a similar purpose for socket units. + * libudev gained a new call udev_device_set_attribute_value() + to set sysfs attributes of a device. + Contributions from: Auke Kok, Colin Walters, Cristian Rodríguez, Daniel Buch, Dave Reisner, Frederic Crozat, Hannes Reinecke, Harald Hoyer, Jan Alexander Steffens, Jan -- cgit v1.2.1 From 608d41f355d580a6f73e76b298bfc1b4e3155b80 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 23:49:13 +0100 Subject: cryptsetup-generator: add a missing OOM check --- src/cryptsetup/cryptsetup-generator.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index 0a51db8939..5c4a2807a7 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -169,8 +169,6 @@ static int create_disk( } free(to); - to = NULL; - if (!nofail) to = strjoin(arg_dest, "/cryptsetup.target.requires/", n, NULL); else @@ -183,12 +181,13 @@ static int create_disk( log_error("Failed to create symlink '%s' to '%s': %m", from, to); return -errno; } - - free(to); - to = NULL; } e = unit_name_escape(name); + if (!e) + return log_oom(); + + free(to); to = strjoin(arg_dest, "/dev-mapper-", e, ".device.requires/", n, NULL); if (!to) return log_oom(); -- cgit v1.2.1 From e32530cbef746a3d346334a821a7c804f49af4e6 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 25 Mar 2013 23:49:41 +0100 Subject: cryptsetup-generator: let's be a bit more efficient with strv_extend() --- src/cryptsetup/cryptsetup-generator.c | 24 +++--------------------- 1 file changed, 3 insertions(+), 21 deletions(-) diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index 5c4a2807a7..8959bf51c8 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -258,26 +258,14 @@ static int parse_proc_cmdline(char ***arg_proc_cmdline_disks) { } } else if (startswith(word, "luks.uuid=")) { - char **t; - - t = strv_append(*arg_proc_cmdline_disks, word + 10); - if (!t) + if (strv_extend(arg_proc_cmdline_disks, word + 10) < 0) return log_oom(); - strv_free(*arg_proc_cmdline_disks); - *arg_proc_cmdline_disks = t; - } else if (startswith(word, "rd.luks.uuid=")) { if (in_initrd()) { - char **t; - - t = strv_append(*arg_proc_cmdline_disks, word + 13); - if (!t) + if (strv_extend(arg_proc_cmdline_disks, word + 13) < 0) return log_oom(); - - strv_free(*arg_proc_cmdline_disks); - *arg_proc_cmdline_disks = t; } } else if (startswith(word, "luks.") || @@ -370,17 +358,11 @@ int main(int argc, char *argv[]) { return log_oom(); if (streq(proc_device, device) || streq(proc_name, name)) { - char **t; - if (create_disk(name, device, password, options) < 0) r = EXIT_FAILURE; - t = strv_append(arg_proc_cmdline_disks_done, p); - if (!t) + if (strv_extend(&arg_proc_cmdline_disks_done, p) < 0) return log_oom(); - - strv_free(arg_proc_cmdline_disks_done); - arg_proc_cmdline_disks_done = t; } } } else { -- cgit v1.2.1 From c20d8298029a39cc3e9602b30a4d23b951e11df8 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 26 Mar 2013 00:41:07 +0100 Subject: NEWS: update --- NEWS | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index b2011cdf45..6aaca19b6d 100644 --- a/NEWS +++ b/NEWS @@ -32,7 +32,7 @@ CHANGES WITH 199: http://lists.freedesktop.org/archives/systemd-devel/2013-March/009797.html - * journald will not explicitly flush the journal files to disk + * journald will now explicitly flush the journal files to disk the latest 5min after each write. This will also mark the files as offline then until the next write. This should increase reliability. The synchronization delay can be @@ -50,6 +50,12 @@ CHANGES WITH 199: * libudev gained a new call udev_device_set_attribute_value() to set sysfs attributes of a device. + * The udev daemon now adjusts its default number of paralell + executed worker processes based on the number of available + CPUs instead of the amount of available RAM. This is supposed + to provide a more reliable default and limit a too agressive + paralellism for setups with 1000s of devices connected. + Contributions from: Auke Kok, Colin Walters, Cristian Rodríguez, Daniel Buch, Dave Reisner, Frederic Crozat, Hannes Reinecke, Harald Hoyer, Jan Alexander Steffens, Jan -- cgit v1.2.1 From 06f4289808f551675b3d1c953fa6f93de90b7c64 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 26 Mar 2013 01:00:14 +0100 Subject: build-sys: create kernel/install.d directories --- Makefile.am | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile.am b/Makefile.am index 40453deae5..d7c46408fe 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3969,6 +3969,8 @@ INSTALL_DIRS += \ $(sysconfdir)/modules-load.d \ $(prefix)/lib/sysctl.d \ $(sysconfdir)/sysctl.d \ + $(prefix)/lib/kernel/install.d \ + $(sysconfdir)/kernel/install.d \ $(systemshutdowndir) \ $(systemsleepdir) \ $(systemgeneratordir) \ -- cgit v1.2.1 From 94bbf1ba6d2c8f3c64879c7f1af114ca25edeb8f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 26 Mar 2013 00:36:43 +0100 Subject: bus: rename send_hello flag to bus_cient This way we can hide more than just the hello logic behind this flag, for example, later on automatic match management. --- src/libsystemd-bus/bus-internal.h | 2 +- src/libsystemd-bus/sd-bus.c | 12 ++++++------ src/libsystemd-bus/sd-bus.h | 3 ++- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/libsystemd-bus/bus-internal.h b/src/libsystemd-bus/bus-internal.h index 78d955d00f..c25a208aea 100644 --- a/src/libsystemd-bus/bus-internal.h +++ b/src/libsystemd-bus/bus-internal.h @@ -72,7 +72,7 @@ struct sd_bus { bool negotiate_fds:1; bool can_fds:1; - bool send_hello:1; + bool bus_client:1; bool ucred_valid:1; void *rbuffer; diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 6eab4a5469..6a76db960d 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -176,13 +176,13 @@ int sd_bus_set_exec(sd_bus *bus, const char *path, char *const argv[]) { return 0; } -int sd_bus_set_hello(sd_bus *bus, int b) { +int sd_bus_set_bus_client(sd_bus *bus, int b) { if (!bus) return -EINVAL; if (bus->state != BUS_UNSET) return -EPERM; - bus->send_hello = !!b; + bus->bus_client = !!b; return 0; } @@ -230,7 +230,7 @@ static int bus_send_hello(sd_bus *bus) { assert(bus); - if (!bus->send_hello) + if (!bus->bus_client) return 0; r = sd_bus_message_new_method_call( @@ -253,7 +253,7 @@ static int bus_send_hello(sd_bus *bus) { int bus_start_running(sd_bus *bus) { assert(bus); - if (bus->send_hello) { + if (bus->bus_client) { bus->state = BUS_HELLO; return 1; } @@ -753,7 +753,7 @@ int sd_bus_open_system(sd_bus **ret) { b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + sizeof("/run/dbus/system_bus_socket") - 1; } - b->send_hello = true; + b->bus_client = true; r = sd_bus_start(b); if (r < 0) @@ -803,7 +803,7 @@ int sd_bus_open_user(sd_bus **ret) { b->sockaddr_size = offsetof(struct sockaddr_un, sun_path) + l + 4; } - b->send_hello = true; + b->bus_client = true; r = sd_bus_start(b); if (r < 0) diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index a15cc26e3f..d680270c64 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -31,6 +31,7 @@ /* TODO: * - implicitly add stub introspection calls * - server side + * - allow installing match callbacks, * * Later: * - add page donation logic @@ -58,7 +59,7 @@ int sd_bus_new(sd_bus **ret); int sd_bus_set_address(sd_bus *bus, const char *address); int sd_bus_set_fd(sd_bus *bus, int fd); int sd_bus_set_exec(sd_bus *bus, const char *path, char *const argv[]); -int sd_bus_set_hello(sd_bus *bus, int b); +int sd_bus_set_bus_client(sd_bus *bus, int b); int sd_bus_set_negotiate_fds(sd_bus *bus, int b); int sd_bus_start(sd_bus *ret); -- cgit v1.2.1 From 0a72c2bdef69bae5f4677ee563019e3ccbd3dfe2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 26 Mar 2013 01:54:37 +0100 Subject: bus: automatically generate minimal introspection data to find installed objects --- src/libsystemd-bus/sd-bus-protocol.h | 42 ++++++++++++++ src/libsystemd-bus/sd-bus.c | 104 ++++++++++++++++++++++++++++++++++- src/libsystemd-bus/sd-bus.h | 5 +- 3 files changed, 147 insertions(+), 4 deletions(-) diff --git a/src/libsystemd-bus/sd-bus-protocol.h b/src/libsystemd-bus/sd-bus-protocol.h index f9a5217dda..ac4d0b1dc5 100644 --- a/src/libsystemd-bus/sd-bus-protocol.h +++ b/src/libsystemd-bus/sd-bus-protocol.h @@ -100,4 +100,46 @@ enum { _SD_BUS_MESSAGE_HEADER_MAX }; +#define SD_BUS_INTROSPECT_DOCTYPE \ + "\n" + +#define SD_BUS_INTROSPECT_INTERFACE_PROPERTIES \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" + +#define SD_BUS_INTROSPECT_INTERFACE_INTROSPECTABLE \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" + +#define SD_BUS_INTROSPECT_INTERFACE_PEER \ + "\n" \ + " \n" \ + " \n" \ + " \n" \ + " \n" \ + "\n" + #endif diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 6a76db960d..c82b738e02 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -30,6 +30,7 @@ #include "util.h" #include "macro.h" #include "strv.h" +#include "set.h" #include "sd-bus.h" #include "bus-internal.h" @@ -1553,7 +1554,10 @@ static int process_object(sd_bus *bus, sd_bus_message *m) { } } - if (!found) + /* We found some handlers but none wanted to take this, then + * return this -- with one exception, we can handle + * introspection minimally ourselves */ + if (!found || sd_bus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) return 0; sd_bus_error_set(&error, @@ -1571,6 +1575,98 @@ static int process_object(sd_bus *bus, sd_bus_message *m) { return 1; } +static int process_introspect(sd_bus *bus, sd_bus_message *m) { + _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; + _cleanup_free_ char *introspection = NULL; + _cleanup_set_free_free_ Set *s = NULL; + _cleanup_fclose_ FILE *f = NULL; + struct object_callback *c; + Iterator i; + size_t size = 0; + char *node; + int r; + + assert(bus); + assert(m); + + if (!sd_bus_message_is_method_call(m, "org.freedesktop.DBus.Introspectable", "Introspect")) + return 0; + + if (!m->path) + return 0; + + s = set_new(string_hash_func, string_compare_func); + if (!s) + return -ENOMEM; + + HASHMAP_FOREACH(c, bus->object_callbacks, i) { + const char *e; + char *a, *p; + + if (streq(c->path, "/")) + continue; + + if (streq(m->path, "/")) + e = c->path; + else { + e = startswith(c->path, m->path); + if (!e || *e != '/') + continue; + } + + a = strdup(e+1); + if (!a) + return -ENOMEM; + + p = strchr(a, '/'); + if (p) + *p = 0; + + r = set_put(s, a); + if (r < 0) { + free(a); + + if (r != -EEXIST) + return r; + } + } + + f = open_memstream(&introspection, &size); + if (!f) + return -ENOMEM; + + fputs(SD_BUS_INTROSPECT_DOCTYPE, f); + fputs("\n", f); + fputs(SD_BUS_INTROSPECT_INTERFACE_PEER, f); + fputs(SD_BUS_INTROSPECT_INTERFACE_INTROSPECTABLE, f); + + while ((node = set_steal_first(s))) { + fprintf(f, " \n", node); + free(node); + } + + fputs("\n", f); + + fflush(f); + + if (ferror(f)) + return -ENOMEM; + + r = sd_bus_message_new_method_return(bus, m, &reply); + if (r < 0) + return r; + + r = sd_bus_message_append(reply, "s", introspection); + if (r < 0) + return r; + + r = sd_bus_send(bus, reply, NULL); + if (r < 0) + return r; + + return 1; +} + static int process_message(sd_bus *bus, sd_bus_message *m) { int r; @@ -1589,7 +1685,11 @@ static int process_message(sd_bus *bus, sd_bus_message *m) { if (r != 0) return r; - return process_object(bus, m); + r = process_object(bus, m); + if (r != 0) + return r; + + return process_introspect(bus, m); } static int process_running(sd_bus *bus, sd_bus_message **ret) { diff --git a/src/libsystemd-bus/sd-bus.h b/src/libsystemd-bus/sd-bus.h index d680270c64..08c5e54230 100644 --- a/src/libsystemd-bus/sd-bus.h +++ b/src/libsystemd-bus/sd-bus.h @@ -29,9 +29,10 @@ #include "sd-bus-protocol.h" /* TODO: - * - implicitly add stub introspection calls * - server side - * - allow installing match callbacks, + * - allow installing match callbacks + * - anonymous auth + * - default policy * * Later: * - add page donation logic -- cgit v1.2.1 From d65ddaa40e60f91d4b29fdb37224b95675af896f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 26 Mar 2013 01:58:14 +0100 Subject: bus: when we are talking to a bus, SCM_CREDS/SCM_SECLABEL are not very useful --- src/libsystemd-bus/bus-socket.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/libsystemd-bus/bus-socket.c b/src/libsystemd-bus/bus-socket.c index f40aa59f51..4f1fd94548 100644 --- a/src/libsystemd-bus/bus-socket.c +++ b/src/libsystemd-bus/bus-socket.c @@ -206,8 +206,8 @@ static int bus_socket_setup(sd_bus *b) { assert(b); - /* Enable SO_PASSCRED + SO_PASSEC. We try this on any socket, - * just in case. This is actually irrelavant for */ + /* Enable SO_PASSCRED + SO_PASSEC. We try this on any + * socket, just in case. */ one = 1; setsockopt(b->fd, SOL_SOCKET, SO_PASSCRED, &one, sizeof(one)); setsockopt(b->fd, SOL_SOCKET, SO_PASSSEC, &one, sizeof(one)); @@ -467,8 +467,8 @@ static int bus_socket_make_message(sd_bus *bus, size_t size, sd_bus_message **m) r = bus_message_from_malloc(bus->rbuffer, size, bus->fds, bus->n_fds, - bus->ucred_valid ? &bus->ucred : NULL, - bus->label[0] ? bus->label : NULL, + !bus->bus_client && bus->ucred_valid ? &bus->ucred : NULL, + !bus->bus_client && bus->label[0] ? bus->label : NULL, &t); if (r < 0) { free(b); -- cgit v1.2.1 From ab9a2ef00b1a9fb2f1b0732efe5a67daa49e5e80 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 26 Mar 2013 02:32:20 +0100 Subject: units: downgrade dependency on sockets.target/timers.target/paths.target by basic.target There isn't really any need to require any targets but sysinit.target from basic.target, so downgrade sockets.target, paths.target, timers.target. --- units/basic.target | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/units/basic.target b/units/basic.target index b67c996b39..6b9cfe4c97 100644 --- a/units/basic.target +++ b/units/basic.target @@ -8,6 +8,7 @@ [Unit] Description=Basic System Documentation=man:systemd.special(7) -Requires=sysinit.target sockets.target timers.target paths.target +Requires=sysinit.target +Wants=sockets.target timers.target paths.target After=sysinit.target sockets.target timers.target paths.target RefuseManualStart=yes -- cgit v1.2.1 From 810bc2e3d594f6ed3f979b86b23c6868e17a2ad7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 26 Mar 2013 02:48:25 +0100 Subject: build-sys: ship missing unit file --- Makefile.am | 1 + 1 file changed, 1 insertion(+) diff --git a/Makefile.am b/Makefile.am index d7c46408fe..d5eb7ad6db 100644 --- a/Makefile.am +++ b/Makefile.am @@ -355,6 +355,7 @@ dist_systemunit_DATA = \ units/initrd-root-fs.target \ units/remote-fs.target \ units/remote-fs-pre.target \ + units/remote-fs-setup.target \ units/network.target \ units/nss-lookup.target \ units/nss-user-lookup.target \ -- cgit v1.2.1 From 62cfa9da28ac137dfdbf6207a4731858c081513c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 26 Mar 2013 03:03:13 +0100 Subject: build-sys: make gcc shut up --- src/libsystemd-bus/bus-message.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index 416eedc2ae..845e2c0040 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -789,7 +789,7 @@ int message_append_basic(sd_bus_message *m, char type, const void *p, const void void *a; char *e = NULL; int fd = -1; - uint32_t fdi; + uint32_t fdi = 0; int r; if (!m) -- cgit v1.2.1 From b56c267ffbd3a5598dfa1dba5e6a51b38fcaed57 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 26 Mar 2013 03:13:41 +0100 Subject: modules-load: there's really no point in mentioning that a certain modules is already loaded After all, this runs in parallel to udev, so there's quite a chance it already is.... --- src/modules-load/modules-load.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c index 28b53ec7a3..9ee260302e 100644 --- a/src/modules-load/modules-load.c +++ b/src/modules-load/modules-load.c @@ -148,7 +148,7 @@ static int load_module(struct kmod_ctx *ctx, const char *m) { break; case KMOD_MODULE_LIVE: - log_info("Module '%s' is already loaded", kmod_module_get_name(mod)); + log_debug("Module '%s' is already loaded", kmod_module_get_name(mod)); break; default: -- cgit v1.2.1 From 5a0f6033bed4c499f0b720e85f87ef9e46c5017e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 26 Mar 2013 03:42:03 +0100 Subject: bus: fix missing variable initialization --- src/libsystemd-bus/sd-bus.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index c82b738e02..5f2ede088a 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -539,8 +539,10 @@ static int parse_exec_address(sd_bus *b, const char **p, char **guid) { skip_address_key(p); } - if (!path) + if (!path) { + r = -EINVAL; goto fail; + } /* Make sure there are no holes in the array, with the * exception of argv[0] */ -- cgit v1.2.1 From 9717120e593fde25332e919b9d7406925261a1b1 Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Tue, 26 Mar 2013 11:35:17 +0100 Subject: Drop src/login/uaccess.c, dead code This moved to src/udev/udev-builtin-uaccess.c a while ago. --- src/login/uaccess.c | 91 ----------------------------------------------------- 1 file changed, 91 deletions(-) delete mode 100644 src/login/uaccess.c diff --git a/src/login/uaccess.c b/src/login/uaccess.c deleted file mode 100644 index 2c530c8f39..0000000000 --- a/src/login/uaccess.c +++ /dev/null @@ -1,91 +0,0 @@ -/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ - -/*** - This file is part of systemd. - - Copyright 2011 Lennart Poettering - - systemd is free software; you can redistribute it and/or modify it - under the terms of the GNU Lesser General Public License as published by - the Free Software Foundation; either version 2.1 of the License, or - (at your option) any later version. - - systemd is distributed in the hope that it will be useful, but - WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public License - along with systemd; If not, see . -***/ - -#include -#include - -#include -#include - -#include "logind-acl.h" -#include "util.h" -#include "log.h" - -int main(int argc, char *argv[]) { - int r; - const char *path = NULL, *seat; - bool changed_acl = false; - uid_t uid; - - log_set_target(LOG_TARGET_AUTO); - log_parse_environment(); - log_open(); - - umask(0022); - - if (argc < 2 || argc > 3) { - log_error("This program expects one or two arguments."); - r = -EINVAL; - goto finish; - } - - /* Make sure we don't muck around with ACLs the system is not - * running systemd. */ - if (!sd_booted()) - return 0; - - path = argv[1]; - seat = argc < 3 || isempty(argv[2]) ? "seat0" : argv[2]; - - r = sd_seat_get_active(seat, NULL, &uid); - if (r == -ENOENT) { - /* No active session on this seat */ - r = 0; - goto finish; - } else if (r < 0) { - log_error("Failed to determine active user on seat %s.", seat); - goto finish; - } - - r = devnode_acl(path, true, false, 0, true, uid); - if (r < 0) { - log_error("Failed to apply ACL on %s: %s", path, strerror(-r)); - goto finish; - } - - changed_acl = true; - r = 0; - -finish: - if (path && !changed_acl) { - int k; - /* Better be safe that sorry and reset ACL */ - - k = devnode_acl(path, true, false, 0, false, 0); - if (k < 0) { - log_error("Failed to apply ACL on %s: %s", path, strerror(-k)); - if (r >= 0) - r = k; - } - } - - return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; -} -- cgit v1.2.1 From 4e5ed9b69bb819d395e13da8ef033e17a0df8988 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 26 Mar 2013 14:46:35 +0100 Subject: fstab-generator: degrade the message about missing "root=" to log_debug Some installation media (fedora at least) does not have and need a "root=" argument on the kernel command line. --- src/fstab-generator/fstab-generator.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 2f157c8348..25b5460f88 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -547,7 +547,7 @@ static int parse_new_root_from_proc_cmdline(void) { } if (!what) { - log_error("Could not find a root= entry on the kernel commandline."); + log_debug("Could not find a root= entry on the kernel commandline."); return 0; } -- cgit v1.2.1 From 6a9280cc60b333817e22f0885b9c145e6252cc0b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 26 Mar 2013 15:14:27 +0100 Subject: units: disallow manual starting of passive units As passive units only are useful for ordering things within the initial transaction there is no point in ever activating them manually, hence refuse it. --- units/local-fs-pre.target | 1 + units/nss-lookup.target | 1 + units/nss-user-lookup.target | 1 + units/remote-fs-pre.target | 1 + units/rpcbind.target | 1 + units/time-sync.target | 1 + 6 files changed, 6 insertions(+) diff --git a/units/local-fs-pre.target b/units/local-fs-pre.target index f8760ec9df..809f2ed236 100644 --- a/units/local-fs-pre.target +++ b/units/local-fs-pre.target @@ -8,3 +8,4 @@ [Unit] Description=Local File Systems (Pre) Documentation=man:systemd.special(7) +RefuseManualStart=yes diff --git a/units/nss-lookup.target b/units/nss-lookup.target index 339b507fae..c9e3a7c419 100644 --- a/units/nss-lookup.target +++ b/units/nss-lookup.target @@ -11,3 +11,4 @@ [Unit] Description=Host and Network Name Lookups Documentation=man:systemd.special(7) +RefuseManualStart=yes diff --git a/units/nss-user-lookup.target b/units/nss-user-lookup.target index 43b722c970..80023cdfb6 100644 --- a/units/nss-user-lookup.target +++ b/units/nss-user-lookup.target @@ -11,3 +11,4 @@ [Unit] Description=User and Group Name Lookups Documentation=man:systemd.special(7) +RefuseManualStart=yes diff --git a/units/remote-fs-pre.target b/units/remote-fs-pre.target index febdc01c7c..36a196cfda 100644 --- a/units/remote-fs-pre.target +++ b/units/remote-fs-pre.target @@ -8,3 +8,4 @@ [Unit] Description=Remote File Systems (Pre) Documentation=man:systemd.special(7) +RefuseManualStart=yes diff --git a/units/rpcbind.target b/units/rpcbind.target index eb06a6db26..e03e915ee0 100644 --- a/units/rpcbind.target +++ b/units/rpcbind.target @@ -11,3 +11,4 @@ [Unit] Description=RPC Port Mapper Documentation=man:systemd.special(7) +RefuseManualStart=yes diff --git a/units/time-sync.target b/units/time-sync.target index ec00ecbbf4..54078069f2 100644 --- a/units/time-sync.target +++ b/units/time-sync.target @@ -11,3 +11,4 @@ [Unit] Description=System Time Synchronized Documentation=man:systemd.special(7) +RefuseManualStart=yes -- cgit v1.2.1 From a87586a17160f9a57fdc63604c48392cccb33454 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 26 Mar 2013 15:33:57 +0100 Subject: fstab-generator: drop x-initrd.rootfs mount option x-initrd.mount now has different meanings, if fstab-generator is called in the initramfs. initrd:/etc/fstab and x-initrd.mount defines mounts for the initrd-root-fs.target initrd:/sysroot/etc/fstab and x-initrd.mount defines mounts for the initrd-fs.target --- src/fstab-generator/fstab-generator.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 25b5460f88..78d9ce90d7 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -199,12 +199,6 @@ static bool mount_in_initrd(struct mntent *me) { streq(me->mnt_dir, "/usr"); } -static bool mount_is_rootfs(struct mntent *me) { - assert(me); - - return hasmntopt(me, "x-initrd.rootfs"); -} - static int add_mount( const char *what, const char *where, @@ -458,7 +452,7 @@ static int parse_fstab(const char *prefix, bool initrd) { post = SPECIAL_INITRD_FS_TARGET; pre = NULL; setup = NULL; - } else if (mount_is_rootfs(me)) { + } else if (mount_in_initrd(me)) { post = SPECIAL_INITRD_ROOT_FS_TARGET; pre = NULL; setup = NULL; -- cgit v1.2.1 From dfebfe67dd66e909ec2f982177faa8d4f70acb88 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 26 Mar 2013 15:16:50 +0100 Subject: man: document that the passive units cannot be pulled in mnaully --- man/systemd.special.xml | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/man/systemd.special.xml b/man/systemd.special.xml index b77b60d920..b7340ed978 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -811,6 +811,14 @@ (via a Wants= type dependency). + Note that these passive units cannot be started + manually, i.e. systemctl start + time-sync.target will fail with an + error. They can only be pulled in by dependency. This + is enforced since they exist for ordering purposes + only and thus are not useful as only unit within a + transaction. + local-fs-pre.target -- cgit v1.2.1 From 74b1c371744d6948094476a4c135afa54b21414b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 26 Mar 2013 15:23:54 +0100 Subject: cryptsetup: when prompting for password use GPT partition label If there's a GPT partition label set for a LUKS partition, then it's nicer to show that than the model number, when asking for a passphrase. --- src/cryptsetup/cryptsetup.c | 69 +++++++++++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 25 deletions(-) diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c index a8cdf10177..d5dc2335c8 100644 --- a/src/cryptsetup/cryptsetup.c +++ b/src/cryptsetup/cryptsetup.c @@ -68,7 +68,8 @@ static int parse_one_option(const char *option) { if (startswith(option, "cipher=")) { char *t; - if (!(t = strdup(option+7))) + t = strdup(option+7); + if (!t) return -ENOMEM; free(opt_cipher); @@ -98,7 +99,8 @@ static int parse_one_option(const char *option) { } else if (startswith(option, "hash=")) { char *t; - if (!(t = strdup(option+5))) + t = strdup(option+5); + if (!t) return -ENOMEM; free(opt_hash); @@ -137,22 +139,19 @@ static int parse_one_option(const char *option) { } static int parse_options(const char *options) { - char *state; - char *w; + char *state, *w; size_t l; + int r; assert(options); FOREACH_WORD_SEPARATOR(w, l, options, ",", state) { - char *o; - int r; + _cleanup_free_ char *o; - if (!(o = strndup(w, l))) + o = strndup(w, l); + if (!o) return -ENOMEM; - r = parse_one_option(o); - free(o); - if (r < 0) return r; } @@ -165,11 +164,19 @@ static void log_glue(int level, const char *msg, void *usrptr) { } static char *disk_description(const char *path) { + + static const char name_fields[] = { + "ID_PART_ENTRY_NAME\0" + "DM_NAME\0" + "ID_MODEL_FROM_DATABASE\0" + "ID_MODEL\0" + }; + struct udev *udev = NULL; struct udev_device *device = NULL; struct stat st; char *description = NULL; - const char *model; + const char *i; assert(path); @@ -179,16 +186,23 @@ static char *disk_description(const char *path) { if (!S_ISBLK(st.st_mode)) return NULL; - if (!(udev = udev_new())) + udev = udev_new(); + if (!udev) return NULL; - if (!(device = udev_device_new_from_devnum(udev, 'b', st.st_rdev))) + device = udev_device_new_from_devnum(udev, 'b', st.st_rdev); + if (!device) goto finish; - if ((model = udev_device_get_property_value(device, "ID_MODEL_FROM_DATABASE")) || - (model = udev_device_get_property_value(device, "ID_MODEL")) || - (model = udev_device_get_property_value(device, "DM_NAME"))) - description = strdup(model); + NULSTR_FOREACH(i, name_fields) { + const char *name; + + name = udev_device_get_property_value(device, i); + if (!isempty(name)) { + description = strdup(name); + break; + } + } finish: if (device) @@ -289,8 +303,10 @@ int main(int argc, char *argv[]) { key_file = argv[4]; } - if (argc >= 6 && argv[5][0] && !streq(argv[5], "-")) - parse_options(argv[5]); + if (argc >= 6 && argv[5][0] && !streq(argv[5], "-")) { + if (parse_options(argv[5]) < 0) + goto finish; + } /* A delicious drop of snake oil */ mlockall(MCL_FUTURE); @@ -315,7 +331,8 @@ int main(int argc, char *argv[]) { name = name_buffer ? name_buffer : argv[2]; - if ((k = crypt_init(&cd, argv[3]))) { + k = crypt_init(&cd, argv[3]); + if (k) { log_error("crypt_init() failed: %s", strerror(-k)); goto finish; } @@ -353,8 +370,9 @@ int main(int argc, char *argv[]) { size_t l; l = strcspn(opt_cipher, "-"); + truncated_cipher = strndup(opt_cipher, l); - if (!(truncated_cipher = strndup(opt_cipher, l))) { + if (!truncated_cipher) { log_oom(); goto finish; } @@ -373,8 +391,7 @@ int main(int argc, char *argv[]) { passwords = NULL; if (!key_file) { - char *text; - char **p; + char *text, **p; if (asprintf(&text, "Please enter passphrase for disk %s!", name) < 0) { log_oom(); @@ -521,14 +538,16 @@ int main(int argc, char *argv[]) { } else if (streq(argv[1], "detach")) { int k; - if ((k = crypt_init_by_name(&cd, argv[2]))) { + k = crypt_init_by_name(&cd, argv[2]); + if (k) { log_error("crypt_init() failed: %s", strerror(-k)); goto finish; } crypt_set_log_callback(cd, log_glue, NULL); - if ((k = crypt_deactivate(cd, argv[2])) < 0) { + k = crypt_deactivate(cd, argv[2]); + if (k < 0) { log_error("Failed to deactivate: %s", strerror(-k)); goto finish; } -- cgit v1.2.1 From 03e1151676fba62674e2219da624272e522e590f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 26 Mar 2013 15:43:43 +0100 Subject: build-sys: bump version and .so revisions --- Makefile.am | 8 ++++---- TODO | 5 ----- configure.ac | 2 +- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/Makefile.am b/Makefile.am index d5eb7ad6db..37c1cc2692 100644 --- a/Makefile.am +++ b/Makefile.am @@ -40,19 +40,19 @@ LIBGUDEV_REVISION=3 LIBGUDEV_AGE=1 LIBSYSTEMD_LOGIN_CURRENT=4 -LIBSYSTEMD_LOGIN_REVISION=0 +LIBSYSTEMD_LOGIN_REVISION=1 LIBSYSTEMD_LOGIN_AGE=4 LIBSYSTEMD_DAEMON_CURRENT=0 -LIBSYSTEMD_DAEMON_REVISION=7 +LIBSYSTEMD_DAEMON_REVISION=8 LIBSYSTEMD_DAEMON_AGE=0 LIBSYSTEMD_ID128_CURRENT=0 -LIBSYSTEMD_ID128_REVISION=17 +LIBSYSTEMD_ID128_REVISION=18 LIBSYSTEMD_ID128_AGE=0 LIBSYSTEMD_JOURNAL_CURRENT=8 -LIBSYSTEMD_JOURNAL_REVISION=0 +LIBSYSTEMD_JOURNAL_REVISION=1 LIBSYSTEMD_JOURNAL_AGE=8 # Dirs of external packages diff --git a/TODO b/TODO index b49d3e15d4..e54f84b964 100644 --- a/TODO +++ b/TODO @@ -49,15 +49,10 @@ Features: * when isolating, try to figure out a way how we implicitly can order all units we stop before the isolating unit... -* when prompting for a hdd password show GUID partition label - * teach udev + logind's uaccess to somehow handle the "dead" device nodes from: /lib/modules/$(uname -r)/modules.devname and apply ACLs to them if they have TAG=="uaccess" in udev rules. -* clean up early boot services, and put them all before sysinit.target - and leave basic.target alone. - * matching against units is currently broken in journalctl. We really need another AND level in the expressions, i.e. sd_journal_add_conjunction(). diff --git a/configure.ac b/configure.ac index 1c9d5596ea..5b88bcf005 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ AC_PREREQ([2.64]) AC_INIT([systemd], - [198], + [199], [http://bugs.freedesktop.org/enter_bug.cgi?product=systemd], [systemd], [http://www.freedesktop.org/wiki/Software/systemd]) -- cgit v1.2.1 From efc0ac6af6a105e38d1b0a37d8d5d016c76713cc Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 26 Mar 2013 15:51:57 +0100 Subject: NEWS: typo fix --- NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 6aaca19b6d..c39939c901 100644 --- a/NEWS +++ b/NEWS @@ -50,7 +50,7 @@ CHANGES WITH 199: * libudev gained a new call udev_device_set_attribute_value() to set sysfs attributes of a device. - * The udev daemon now adjusts its default number of paralell + * The udev daemon now adjusts its default number of parallel executed worker processes based on the number of available CPUs instead of the amount of available RAM. This is supposed to provide a more reliable default and limit a too agressive -- cgit v1.2.1 From a87197f5a22688626dc9bead29ddc1c572b074b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 26 Mar 2013 11:56:01 -0400 Subject: NEWS: tweak grammar --- NEWS | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/NEWS b/NEWS index c39939c901..8396c312bd 100644 --- a/NEWS +++ b/NEWS @@ -14,7 +14,7 @@ CHANGES WITH 199: ExecStartPre= may now leave data in /tmp that ExecStart= of the same service can still access). When a service is stopped its temporary directories are immediately deleted - (normal clean-up with tmpfiles still is done in addition to + (normal clean-up with tmpfiles is still done in addition to this though). * By default, systemd will now set a couple of sysctl @@ -25,7 +25,7 @@ CHANGES WITH 199: be reasonably safe, and good defaults for all new systems. * The predictable network naming logic may now be turned off - with a new kernel command line switch: net.ifnames=0 + with a new kernel command line switch: net.ifnames=0. * A new libsystemd-bus module has been added that implements a pretty complete D-Bus client library. For details see: @@ -33,10 +33,10 @@ CHANGES WITH 199: http://lists.freedesktop.org/archives/systemd-devel/2013-March/009797.html * journald will now explicitly flush the journal files to disk - the latest 5min after each write. This will also mark the - files as offline then until the next write. This should - increase reliability. The synchronization delay can be - configured via SyncIntervalSec= in journald.conf. + at the latest 5min after each write. The file will then also + be marked offline until the next write. This should increase + reliability in case of a crash. The synchronization delay + can be configured via SyncIntervalSec= in journald.conf. * There's a new remote-fs-setup.target unit that can be used to pull in specific services when at least one remote file @@ -50,8 +50,8 @@ CHANGES WITH 199: * libudev gained a new call udev_device_set_attribute_value() to set sysfs attributes of a device. - * The udev daemon now adjusts its default number of parallel - executed worker processes based on the number of available + * The udev daemon now sets the default number of worker + processes executed in parallel based on the number of available CPUs instead of the amount of available RAM. This is supposed to provide a more reliable default and limit a too agressive paralellism for setups with 1000s of devices connected. -- cgit v1.2.1 From 94243ef299425d6c7089a7a05c48c9bb8f6cf3da Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Fri, 22 Mar 2013 15:09:45 -0700 Subject: readahead: chunk on spinning media Readahead has all sorts of bad side effects depending on your storage media. On rotating disks, it may be degrading startup performance if enough requests are queued spanning linearly over all blocks early at boot, and mount, blkid and friends want to insert reads to the start of these block devices after. The end result is that on spinning disks with ext3/4 that udev and mounts take a very long time, and nothing really happens until readahead is completely finished. This has the net effect that the CPU is almost entirely idle for the entire period that readahead is working. We could have finished starting up quite a lot of services in this time if we were smarter at how we do readahead. This patch sorts all requests into 2 second "chunks" and sub-sorts each chunk by block. This adds a single cross-drive seek per "chunk" but has the benefit that we will have a lot of the blocks we need early on in the boot sequence loaded into memory faster. For a comparison of how before/after bootcharts look (ext4 on a mobile 5400rpm 250GB drive) please look at: http://foo-projects.org/~sofar/blocked-tests/ There are bootcharts in the "before" and "after" folders where you should be able to see that many low-level services finish 5-7 seconds earlier with the patch applied (after). --- Makefile.am | 2 +- src/readahead/readahead-collect.c | 28 +++++++++++++++++++++++++--- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/Makefile.am b/Makefile.am index 37c1cc2692..58619760f5 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2956,7 +2956,7 @@ systemd_readahead_SOURCES = \ systemd_readahead_LDADD = \ libsystemd-shared.la \ libsystemd-daemon.la \ - libudev.la + libudev.la -lm dist_doc_DATA += \ src/readahead/sd-readahead.c \ diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c index 5d07f4704a..5d22949a12 100644 --- a/src/readahead/readahead-collect.c +++ b/src/readahead/readahead-collect.c @@ -42,6 +42,7 @@ #include #include #include +#include #ifdef HAVE_FANOTIFY_INIT #include @@ -67,6 +68,7 @@ */ static ReadaheadShared *shared = NULL; +static struct timespec starttime; /* Avoid collisions with the NULL pointer */ #define SECTOR_TO_PTR(s) ULONG_TO_PTR((s)+1) @@ -205,6 +207,7 @@ static unsigned long fd_first_block(int fd) { struct item { const char *path; unsigned long block; + unsigned long bin; }; static int qsort_compare(const void *a, const void *b) { @@ -213,6 +216,13 @@ static int qsort_compare(const void *a, const void *b) { i = a; j = b; + /* sort by bin first */ + if (i->bin < j->bin) + return -1; + if (i->bin > j->bin) + return 1; + + /* then sort by sector */ if (i->block < j->block) return -1; if (i->block > j->block) @@ -250,6 +260,8 @@ static int collect(const char *root) { goto finish; } + clock_gettime(CLOCK_MONOTONIC, &starttime); + /* If there's no pack file yet we lower the kernel readahead * so that mincore() is accurate. If there is a pack file * already we assume it is accurate enough so that kernel @@ -447,10 +459,21 @@ static int collect(const char *root) { free(p); else { unsigned long ul; + struct timespec ts; + struct item *entry; + + entry = new0(struct item, 1); ul = fd_first_block(m->fd); - if ((k = hashmap_put(files, p, SECTOR_TO_PTR(ul))) < 0) { + clock_gettime(CLOCK_MONOTONIC, &ts); + + entry->block = ul; + entry->path = strdup(p); + entry->bin = round((ts.tv_sec - starttime.tv_sec + + ((ts.tv_nsec - starttime.tv_nsec) / 1000000000.0)) / 2.0); + + if ((k = hashmap_put(files, p, entry)) < 0) { log_warning("set_put() failed: %s", strerror(-k)); free(p); } @@ -518,8 +541,7 @@ done: j = ordered; HASHMAP_FOREACH_KEY(q, p, files, i) { - j->path = p; - j->block = PTR_TO_SECTOR(q); + memcpy(j, q, sizeof(struct item)); j++; } -- cgit v1.2.1 From b0640287f784a320661f7206c9ade07b99003fd5 Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Tue, 26 Mar 2013 11:13:47 -0700 Subject: readahead: cleanups - check for OOM - no need to use floats and round() --- Makefile.am | 2 +- src/readahead/readahead-collect.c | 20 ++++++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/Makefile.am b/Makefile.am index 58619760f5..37c1cc2692 100644 --- a/Makefile.am +++ b/Makefile.am @@ -2956,7 +2956,7 @@ systemd_readahead_SOURCES = \ systemd_readahead_LDADD = \ libsystemd-shared.la \ libsystemd-daemon.la \ - libudev.la -lm + libudev.la dist_doc_DATA += \ src/readahead/sd-readahead.c \ diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c index 5d22949a12..e2fd8dfd05 100644 --- a/src/readahead/readahead-collect.c +++ b/src/readahead/readahead-collect.c @@ -68,7 +68,7 @@ */ static ReadaheadShared *shared = NULL; -static struct timespec starttime; +static usec_t starttime; /* Avoid collisions with the NULL pointer */ #define SECTOR_TO_PTR(s) ULONG_TO_PTR((s)+1) @@ -260,7 +260,7 @@ static int collect(const char *root) { goto finish; } - clock_gettime(CLOCK_MONOTONIC, &starttime); + starttime = now(CLOCK_MONOTONIC); /* If there's no pack file yet we lower the kernel readahead * so that mincore() is accurate. If there is a pack file @@ -459,19 +459,27 @@ static int collect(const char *root) { free(p); else { unsigned long ul; - struct timespec ts; + usec_t entrytime; struct item *entry; entry = new0(struct item, 1); + if (!entry) { + r = log_oom(); + goto finish; + } ul = fd_first_block(m->fd); - clock_gettime(CLOCK_MONOTONIC, &ts); + entrytime = now(CLOCK_MONOTONIC); entry->block = ul; entry->path = strdup(p); - entry->bin = round((ts.tv_sec - starttime.tv_sec + - ((ts.tv_nsec - starttime.tv_nsec) / 1000000000.0)) / 2.0); + if (!entry->path) { + free(entry); + r = log_oom(); + goto finish; + } + entry->bin = (entrytime - starttime) / 2000000; if ((k = hashmap_put(files, p, entry)) < 0) { log_warning("set_put() failed: %s", strerror(-k)); -- cgit v1.2.1 From 1183f9b2252d0ee45ec7ad32ba34be746ceaaf6e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 27 Mar 2013 02:49:50 +0100 Subject: man: network.target is also a passive target --- man/systemd.special.xml | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/man/systemd.special.xml b/man/systemd.special.xml index b7340ed978..172836ee20 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -387,29 +387,6 @@ section. - - network.target - - systemd automatically - adds dependencies of type - After= for - this target unit to all SysV - init script service units with - an LSB header referring to the - $network - facility. - - This unit is supposed to - indicate when the network is - "up", but it is only very - loosely defined what that is - supposed to mean. Also see Running - Services After the Network is - up for more - information. - - paths.target @@ -832,6 +809,29 @@ all local mounts. + + network.target + + systemd automatically + adds dependencies of type + After= for + this target unit to all SysV + init script service units with + an LSB header referring to the + $network + facility. + + This unit is supposed to + indicate when the network is + "up", but it is only very + loosely defined what that is + supposed to mean. Also see Running + Services After the Network is + up for more + information. + + nss-lookup.target -- cgit v1.2.1 From a63a5c4687d192d89eea9715db2a56c810111de8 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 27 Mar 2013 02:51:33 +0100 Subject: units: automatically order all mount units after network.target Previously it was necessary to pull in remote-fs-pre.target to order the mount units against network.target since the ordering was done transitively via remote-fs-pre.target. As network implementations shouldn't need to know about the specific use-case of network mounts we instead now simply order network.target against all mounts too. This should make it unnecessary for network managing services to import remote-fs-pre.target explicitly, as network.target will now suffice. --- src/core/mount.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/core/mount.c b/src/core/mount.c index c4074ebd2e..3c63a391db 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -441,7 +441,7 @@ static int mount_add_quota_links(Mount *m) { static int mount_add_default_dependencies(Mount *m) { int r; MountParameters *p; - const char *after, *setup; + const char *after, *after2, *setup; assert(m); @@ -458,9 +458,11 @@ static int mount_add_default_dependencies(Mount *m) { if (mount_is_network(p)) { after = SPECIAL_REMOTE_FS_PRE_TARGET; + after2 = SPECIAL_NETWORK_TARGET; setup = SPECIAL_REMOTE_FS_SETUP_TARGET; } else { after = SPECIAL_LOCAL_FS_PRE_TARGET; + after2 = NULL; setup = NULL; } @@ -468,6 +470,12 @@ static int mount_add_default_dependencies(Mount *m) { if (r < 0) return r; + if (after2) { + r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after2, NULL, true); + if (r < 0) + return r; + } + if (setup) { r = unit_add_dependency_by_name(UNIT(m), UNIT_WANTS, setup, NULL, true); if (r < 0) -- cgit v1.2.1 From 3baed19327663d012c3313b72cc5b3d02a58720a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 26 Mar 2013 19:37:14 -0400 Subject: Simplify the meaning of %s The rules governing %s where just too complicated. First of all, looking at $SHELL is dangerous. For systemd --system, it usually wouldn't be set. But it could be set if the admin first started a debug shell, let's say /sbin/sash, and then launched systemd from it. This shouldn't influence how daemons are started later on, so is better ignored. Similar reasoning holds for session mode. Some shells set $SHELL, while other set it only when it wasn't set previously (e.g. zsh). This results in fragility that is better avoided by ignoring $SHELL totally. With $SHELL out of the way, simplify things by saying that %s==/bin/sh for root, and the configured shell otherwise. get_shell() is the only caller, so it can be inlined. Fixes one issue seen with 'make check'. --- man/systemd.unit.xml.in | 9 ++++++++- src/core/unit-printf.c | 33 +++++++++++++++++++++------------ src/shared/util.c | 47 ----------------------------------------------- src/shared/util.h | 1 - src/test/test-unit-name.c | 4 ++-- 5 files changed, 31 insertions(+), 63 deletions(-) diff --git a/man/systemd.unit.xml.in b/man/systemd.unit.xml.in index e99703f7b3..2196e73bb3 100644 --- a/man/systemd.unit.xml.in +++ b/man/systemd.unit.xml.in @@ -1270,7 +1270,14 @@ %s User shell - This is the shell of the configured user of the unit, or (if none is set) the user running the systemd instance. + This is the shell of the configured + user of the unit, or (if none is set) the user + running the systemd instance. If the user is + root (UID equal to 0), the + shell configured in account database is + ignored and /bin/sh is + always used. + %m diff --git a/src/core/unit-printf.c b/src/core/unit-printf.c index 7415824cdf..98274ee35d 100644 --- a/src/core/unit-printf.c +++ b/src/core/unit-printf.c @@ -190,28 +190,37 @@ static char *specifier_user_shell(char specifier, void *data, void *userdata) { ExecContext *c; int r; const char *username, *shell; + char *ret; assert(u); c = unit_get_exec_context(u); - /* return HOME if set, otherwise from passwd */ - if (!c || !c->user) { - char *sh; + if (c && c->user) + username = c->user; + else + username = "root"; - r = get_shell(&sh); - if (r < 0) - return strdup("/bin/sh"); + /* return /bin/sh for root, otherwise the value from passwd */ + r = get_user_creds(&username, NULL, NULL, NULL, &shell); + if (r < 0) { + log_warning_unit(u->id, + "Failed to determine shell: %s", + strerror(-r)); + return NULL; + } - return sh; + if (!path_is_absolute(shell)) { + log_warning_unit(u->id, + "Shell %s is not absolute, ignoring.", + shell); } - username = c->user; - r = get_user_creds(&username, NULL, NULL, NULL, &shell); - if (r < 0) - return strdup("/bin/sh"); + ret = strdup(shell); + if (!ret) + log_oom(); - return strdup(shell); + return ret; } char *unit_name_printf(Unit *u, const char* format) { diff --git a/src/shared/util.c b/src/shared/util.c index 03d6f00622..0444cf4456 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5246,53 +5246,6 @@ int get_home_dir(char **_h) { return 0; } -int get_shell(char **_sh) { - char *sh; - const char *e; - uid_t u; - struct passwd *p; - - assert(_sh); - - /* Take the user specified one */ - e = getenv("SHELL"); - if (e) { - sh = strdup(e); - if (!sh) - return -ENOMEM; - - *_sh = sh; - return 0; - } - - /* Hardcode home directory for root to avoid NSS */ - u = getuid(); - if (u == 0) { - sh = strdup("/bin/sh"); - if (!sh) - return -ENOMEM; - - *_sh = sh; - return 0; - } - - /* Check the database... */ - errno = 0; - p = getpwuid(u); - if (!p) - return errno ? -errno : -ESRCH; - - if (!path_is_absolute(p->pw_shell)) - return -EINVAL; - - sh = strdup(p->pw_shell); - if (!sh) - return -ENOMEM; - - *_sh = sh; - return 0; -} - void fclosep(FILE **f) { if (*f) fclose(*f); diff --git a/src/shared/util.h b/src/shared/util.h index 7a38421007..52c33238b1 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -519,7 +519,6 @@ bool in_initrd(void); void warn_melody(void); -int get_shell(char **ret); int get_home_dir(char **ret); static inline void freep(void *p) { diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c index 7bd99d31c8..0b6b56394e 100644 --- a/src/test/test-unit-name.c +++ b/src/test/test-unit-name.c @@ -164,7 +164,7 @@ static void test_unit_printf(void) { expect(u, "%u", root->pw_name); expect(u, "%U", root_uid); expect(u, "%h", root->pw_dir); - expect(u, "%s", root->pw_shell); + expect(u, "%s", "/bin/sh"); expect(u, "%m", mid); expect(u, "%b", bid); expect(u, "%H", host); @@ -184,7 +184,7 @@ static void test_unit_printf(void) { expect(u2, "%u", root->pw_name); expect(u2, "%U", root_uid); expect(u2, "%h", root->pw_dir); - expect(u2, "%s", root->pw_shell); + expect(u2, "%s", "/bin/sh"); expect(u2, "%m", mid); expect(u2, "%b", bid); expect(u2, "%H", host); -- cgit v1.2.1 From f7703533a4d6bac9ba708218a3244cdc60376446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 26 Mar 2013 23:47:25 -0400 Subject: tests: fix size_t in format string --- src/test/test-strxcpyx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/test-strxcpyx.c b/src/test/test-strxcpyx.c index 9b4dae805f..b7b70d4c15 100644 --- a/src/test/test-strxcpyx.c +++ b/src/test/test-strxcpyx.c @@ -48,7 +48,7 @@ static void test_strpcpyf(void) { size_t space_left; space_left = sizeof(target); - space_left = strpcpyf(&s, space_left, "space left: %ld. ", space_left); + space_left = strpcpyf(&s, space_left, "space left: %zd. ", space_left); space_left = strpcpyf(&s, space_left, "foo%s", "bar"); assert(streq(target, "space left: 25. foobar")); -- cgit v1.2.1 From 49e5de64e22ea4794092b91393545ab08e658e0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 26 Mar 2013 21:07:46 -0400 Subject: tests: skip bus test if bus cannot be opened To make the result more visible, special return value is used to tell automake that the test was skipped. While at it, use the same return value in other skipped tests. --- src/libsystemd-bus/test-bus-chat.c | 7 +++++-- src/shared/macro.h | 3 +++ src/test/test-sched-prio.c | 4 ++-- src/test/test-unit-name.c | 10 +++++----- 4 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/libsystemd-bus/test-bus-chat.c b/src/libsystemd-bus/test-bus-chat.c index bdcca18c84..e124b247d1 100644 --- a/src/libsystemd-bus/test-bus-chat.c +++ b/src/libsystemd-bus/test-bus-chat.c @@ -27,6 +27,7 @@ #include "log.h" #include "util.h" +#include "macro.h" #include "sd-bus.h" #include "bus-message.h" @@ -543,8 +544,10 @@ int main(int argc, char *argv[]) { int q, r; r = server_init(&bus); - if (r < 0) - return EXIT_FAILURE; + if (r < 0) { + log_info("Failed to connect to bus, skipping tests."); + return EXIT_TEST_SKIP; + } log_info("Initialized..."); diff --git a/src/shared/macro.h b/src/shared/macro.h index 80cb2f0892..898784ac83 100644 --- a/src/shared/macro.h +++ b/src/shared/macro.h @@ -46,6 +46,9 @@ #define _introspect_(x) __attribute__((section("introspect." x))) #define _alignas_(x) __attribute__((aligned(__alignof(x)))) +/* automake test harness */ +#define EXIT_TEST_SKIP 77 + #define XSTRINGIFY(x) #x #define STRINGIFY(x) XSTRINGIFY(x) diff --git a/src/test/test-sched-prio.c b/src/test/test-sched-prio.c index c57f6a3671..ba0aacf79d 100644 --- a/src/test/test-sched-prio.c +++ b/src/test/test-sched-prio.c @@ -22,7 +22,7 @@ #include #include "manager.h" - +#include "macro.h" int main(int argc, char *argv[]) { Manager *m; @@ -37,7 +37,7 @@ int main(int argc, char *argv[]) { r = manager_new(SYSTEMD_USER, &m); if (r == -EPERM) { puts("manager_new: Permission denied. Skipping test."); - return EXIT_SUCCESS; + return EXIT_TEST_SKIP; } assert(r >= 0); assert_se(manager_startup(m, serial, fdset) >= 0); diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c index 0b6b56394e..aba36e4df1 100644 --- a/src/test/test-unit-name.c +++ b/src/test/test-unit-name.c @@ -108,7 +108,7 @@ static void test_replacements(void) { #undef expect } -static void test_unit_printf(void) { +static int test_unit_printf(void) { Manager *m; Unit *u, *u2; int r; @@ -126,7 +126,7 @@ static void test_unit_printf(void) { r = manager_new(SYSTEMD_USER, &m); if (r == -EPERM) { puts("manager_new: Permission denied. Skipping test."); - return; + return EXIT_TEST_SKIP; } assert(r == 0); @@ -189,11 +189,11 @@ static void test_unit_printf(void) { expect(u2, "%b", bid); expect(u2, "%H", host); expect(u2, "%t", "/run/user/*"); + + return 0; } int main(int argc, char* argv[]) { test_replacements(); - test_unit_printf(); - - return 0; + return test_unit_printf(); } -- cgit v1.2.1 From 590888a0d0cb813714fa2a521e2ca711f75862fb Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Wed, 27 Mar 2013 08:15:12 +0100 Subject: keymap: Fix Touchpad Toggle on MSI Wind U90/U100 This key is handled by the hardware already, so handling it again in software nullifies the effect. Newer kernels read the real state and send out a separate KEY_TOUCHPAD_ON or KEY_TOUCHPAD_OFF event, so in both cases we need to ignore that key. https://bugs.freedesktop.org/show_bug.cgi?id=62404 --- src/udev/keymap/95-keymap.rules | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/udev/keymap/95-keymap.rules b/src/udev/keymap/95-keymap.rules index f2a9130d36..4e0ddfc16a 100644 --- a/src/udev/keymap/95-keymap.rules +++ b/src/udev/keymap/95-keymap.rules @@ -143,6 +143,9 @@ ENV{DMI_VENDOR}=="MICRO-STAR*|Micro-Star*", RUN+="keymap $name micro-star" # brightness; so ignore those atkbd ones, to avoid loops ENV{DMI_VENDOR}=="MICRO-STAR*", ATTR{[dmi/id]product_name}=="*U-100*|*U100*|*N033", RUN+="keymap $name 0xF7 reserved 0xF8 reserved" +# MSI Wind U90/U100 generates separate touchpad on/off keycodes so ignore touchpad toggle keycode +ENV{DMI_VENDOR}=="MICRO-STAR*", ATTR{[dmi/id]product_name}=="U90/U100", RUN+="keymap $name 0xE4 reserved" + ENV{DMI_VENDOR}=="INVENTEC", ATTR{[dmi/id]product_name}=="SYMPHONY 6.0/7.0", RUN+="keymap $name inventec-symphony_6.0_7.0" ENV{DMI_VENDOR}=="MAXDATA", ATTR{[dmi/id]product_name}=="Pro 7000*", RUN+="keymap $name maxdata-pro_7000" -- cgit v1.2.1 From 3483fab948f0e75d662f9a7abb8cd1937998c255 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 27 Mar 2013 04:26:12 +0100 Subject: bootctl: rename status output header --- src/boot/bootctl.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index b916012b40..4ec5d8196d 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -143,8 +143,8 @@ static int show_status(char **args, unsigned n) { err = boot_info_query(info); - printf("Machine:\n"); - printf(" ID: %s\n", sd_id128_to_string(info->machine_id, buf)); + printf("Identification:\n"); + printf(" Machine ID: %s\n", sd_id128_to_string(info->machine_id, buf)); printf(" Boot ID: %s\n", sd_id128_to_string(info->boot_id, buf)); printf("\n"); -- cgit v1.2.1 From ebf4fb3d368732d9f41cb40e3084182c04e731b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Pavl=C3=ADn?= Date: Wed, 27 Mar 2013 15:16:35 +0100 Subject: core: check return value of rm_rf_dangerous and warn if it fails --- src/core/execute.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/core/execute.c b/src/core/execute.c index bc876a3292..6aa0083bc0 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -1559,10 +1559,19 @@ void exec_context_tmp_dirs_done(ExecContext *c) { for(dirp = dirs; *dirp; dirp++) { char *dir; - rm_rf_dangerous(*dirp, false, true, false); + int r; + r = rm_rf_dangerous(*dirp, false, true, false); dir = dirname(*dirp); - rmdir(dir); + if (r < 0) + log_warning("Failed to remove content of temporary directory %s: %s", + dir, strerror(-r)); + else { + r = rmdir(dir); + if (r < 0) + log_warning("Failed to remove temporary directory %s: %s", + dir, strerror(-r)); + } free(*dirp); } -- cgit v1.2.1 From f36a783ca7b8200d4e865a49342e44929c0f4c06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Pavl=C3=ADn?= Date: Wed, 27 Mar 2013 15:16:37 +0100 Subject: shared: free dt (temporary dir name) on fail [zj: modified to not to try to rmdir() dir we haven't created.] --- src/shared/util.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/shared/util.c b/src/shared/util.c index 0444cf4456..8fa01fa8a4 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5708,7 +5708,7 @@ int create_tmp_dir(char template[], char** dir_name) { dt = strjoin(d, "/tmp", NULL); if (!dt) { r = log_oom(); - goto fail2; + goto fail3; } umask(0000); @@ -5716,7 +5716,7 @@ int create_tmp_dir(char template[], char** dir_name) { if (r) { log_error("Can't create directory %s: %m", dt); r = -errno; - goto fail1; + goto fail2; } log_debug("Created temporary directory %s", dt); @@ -5734,6 +5734,8 @@ int create_tmp_dir(char template[], char** dir_name) { fail1: rmdir(dt); fail2: + free(dt); +fail3: rmdir(template); return r; } -- cgit v1.2.1 From 6f6fad96addf6b00b55c98cc0d0d8026b0c1e7ca Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 27 Mar 2013 13:41:59 +0100 Subject: systemd-sysctl: Handle missing /etc/sysctl.conf properly Since fabe5c0e5fce730aa66e10a9c4f9fdd443d7aeda, systemd-sysctl returns a non-zero exit code if /etc/sysctl.conf does not exist, due to a broken ENOENT check. --- src/sysctl/sysctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/sysctl/sysctl.c b/src/sysctl/sysctl.c index 2d43660bb5..79f3f77676 100644 --- a/src/sysctl/sysctl.c +++ b/src/sysctl/sysctl.c @@ -125,7 +125,7 @@ static int parse_file(Hashmap *sysctl_options, const char *path, bool ignore_eno r = search_and_fopen_nulstr(path, "re", conf_file_dirs, &f); if (r < 0) { - if (ignore_enoent && errno == -ENOENT) + if (ignore_enoent && r == -ENOENT) return 0; log_error("Failed to open file '%s', ignoring: %s", path, strerror(-r)); -- cgit v1.2.1 From 531991b64d1fd28218c48bab364ef8c4e80354fa Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Wed, 27 Mar 2013 10:44:20 +0100 Subject: sd-bus: check c->path for null instead of path --- src/libsystemd-bus/sd-bus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 5f2ede088a..6acc59e82c 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -1944,7 +1944,7 @@ static int bus_add_object( return -ENOMEM; c->path = strdup(path); - if (!path) { + if (!c->path) { free(c); return -ENOMEM; } -- cgit v1.2.1 From 2e8fb7026d3c560194cfe9f83935ce0b16263da0 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Wed, 27 Mar 2013 10:44:21 +0100 Subject: log: fix error codes handling in catalog_list_items It does not make sense to print error code from previous loop. --- src/journal/catalog.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/journal/catalog.c b/src/journal/catalog.c index dacf5c50a1..6b195f6920 100644 --- a/src/journal/catalog.c +++ b/src/journal/catalog.c @@ -616,7 +616,7 @@ int catalog_list_items(FILE *f, bool oneline, char **items) { k = sd_id128_from_string(*item, &id); if (k < 0) { log_error("Failed to parse id128 '%s': %s", - *item, strerror(-r)); + *item, strerror(-k)); if (r < 0) r = k; continue; @@ -626,7 +626,7 @@ int catalog_list_items(FILE *f, bool oneline, char **items) { if (k < 0) { log_full(k == -ENOENT ? LOG_NOTICE : LOG_ERR, "Failed to retrieve catalog entry for '%s': %s", - *item, strerror(-r)); + *item, strerror(-k)); if (r < 0) r = k; continue; -- cgit v1.2.1 From 464264ac5a35b655065c5d95b8d8ffbbc7ff3bcf Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Wed, 27 Mar 2013 17:35:55 +0100 Subject: catalog: fix error codes handling in catalog_list_items Previously r was set to zero and so if(r<0) was never true. --- src/journal/catalog.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/journal/catalog.c b/src/journal/catalog.c index 6b195f6920..7ae7b3eecf 100644 --- a/src/journal/catalog.c +++ b/src/journal/catalog.c @@ -617,7 +617,7 @@ int catalog_list_items(FILE *f, bool oneline, char **items) { if (k < 0) { log_error("Failed to parse id128 '%s': %s", *item, strerror(-k)); - if (r < 0) + if (r == 0) r = k; continue; } @@ -627,7 +627,7 @@ int catalog_list_items(FILE *f, bool oneline, char **items) { log_full(k == -ENOENT ? LOG_NOTICE : LOG_ERR, "Failed to retrieve catalog entry for '%s': %s", *item, strerror(-k)); - if (r < 0) + if (r == 0) r = k; continue; } -- cgit v1.2.1 From f0b647223ded79068dd1d92da329d2ea95527590 Mon Sep 17 00:00:00 2001 From: William Douglas Date: Mon, 25 Mar 2013 14:07:49 -0700 Subject: man/os-release: Add BUILD_ID field BUILD_ID is a fairly generic field used to identify the system image that was used to install the distribution. --- man/os-release.xml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/man/os-release.xml b/man/os-release.xml index 98320efe31..45babd61b9 100644 --- a/man/os-release.xml +++ b/man/os-release.xml @@ -298,6 +298,28 @@ BUG_REPORT_URL="https://bugzilla.redhat.com/" + + BUILD_ID= + + A string uniquely + identifying the system image used as + the origin for a distribution (it is + not updated with system updates). The + field can be identical between + different VERSION_IDs as BUILD_ID is + an only a unique identifier to a + specific version. Distributions that + release each update as a new version + would only need to use VERSION_ID as + each build is already distinct based + on the VERSION_ID. This field is + optional. Example: + BUILD_ID="2013-03-20.3" + or + BUILD_ID=201303203. + + + -- cgit v1.2.1 From 33696ef4582c806b226ef5f65d420f60ff641d14 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 28 Mar 2013 03:42:39 +0100 Subject: bootctl: Binary: --> File: --- src/boot/bootctl.c | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index 4ec5d8196d..bdefd57dfc 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -143,45 +143,48 @@ static int show_status(char **args, unsigned n) { err = boot_info_query(info); - printf("Identification:\n"); + printf("System:\n"); printf(" Machine ID: %s\n", sd_id128_to_string(info->machine_id, buf)); printf(" Boot ID: %s\n", sd_id128_to_string(info->boot_id, buf)); - printf("\n"); - - printf("Firmware:\n"); if (info->fw_type) - printf(" Type: %s (%s)\n", info->fw_type, strna(info->fw_info)); - + printf(" Firmware: %s (%s)\n", info->fw_type, strna(info->fw_info)); if (info->fw_secure_boot >= 0) printf(" Secure Boot: %s\n", info->fw_secure_boot ? "enabled" : "disabled"); if (info->fw_secure_boot_setup_mode >= 0) printf(" Setup Mode: %s\n", info->fw_secure_boot_setup_mode ? "setup" : "user"); + printf("\n"); if (info->fw_entry_active >= 0) { + printf("Selected Firmware Entry:\n"); printf(" Title: %s\n", strna(info->fw_entries[info->fw_entry_active].title)); - if (info->fw_entries[info->fw_entry_active].path) - printf(" Binary: %s\n", info->fw_entries[info->fw_entry_active].path); if (!sd_id128_equal(info->fw_entries[info->fw_entry_active].part_uuid, SD_ID128_NULL)) - printf(" Partition: /dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", + printf(" ESP: /dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", SD_ID128_FORMAT_VAL(info->fw_entries[info->fw_entry_active].part_uuid)); + else + printf(" ESP: n/a\n"); + if (info->fw_entries[info->fw_entry_active].path) + printf(" File: %s%s\n", draw_special_char(DRAW_TREE_RIGHT), info->fw_entries[info->fw_entry_active].path); } printf("\n"); if (info->loader) { - printf("Boot loader:\n"); - printf(" Type: %s\n", info->loader); - printf(" Binary: %s\n", strna(info->loader_image_path)); + printf("Boot Loader:\n"); + printf(" Product: %s\n", info->loader); if (!sd_id128_equal(info->loader_part_uuid, SD_ID128_NULL)) - printf(" Partition: /dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", + printf(" ESP: /dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", SD_ID128_FORMAT_VAL(info->loader_part_uuid)); + else + printf(" ESP: n/a\n"); + printf(" File: %s%s\n", draw_special_char(DRAW_TREE_RIGHT), strna(info->loader_image_path)); + printf("\n"); if (info->loader_entry_active >= 0) { + printf("Selected Boot Loader Entry:\n"); printf(" Title: %s\n", strna(info->loader_entries[info->loader_entry_active].title)); - printf(" Entry: %s\n", info->loader_entries[info->loader_entry_active].path); + printf(" File: %s\n", info->loader_entries[info->loader_entry_active].path); + if (info->loader_options_added) + printf(" Options: %s\n", info->loader_options_added); } - - if (info->loader_options_added) - printf(" Options: %s\n", info->loader_options_added); } else printf("No suitable data is provided by the boot manager. See:\n" " http://www.freedesktop.org/wiki/Software/systemd/BootLoaderInterface\n" -- cgit v1.2.1 From 0014c5221ec559e558968d9028cc6b7c07116252 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 28 Mar 2013 11:42:32 +0100 Subject: bootctl: ESP --> Partition --- src/boot/bootctl.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index bdefd57dfc..a920277545 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -158,10 +158,10 @@ static int show_status(char **args, unsigned n) { printf("Selected Firmware Entry:\n"); printf(" Title: %s\n", strna(info->fw_entries[info->fw_entry_active].title)); if (!sd_id128_equal(info->fw_entries[info->fw_entry_active].part_uuid, SD_ID128_NULL)) - printf(" ESP: /dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", + printf(" Partition: /dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", SD_ID128_FORMAT_VAL(info->fw_entries[info->fw_entry_active].part_uuid)); else - printf(" ESP: n/a\n"); + printf(" Partition: n/a\n"); if (info->fw_entries[info->fw_entry_active].path) printf(" File: %s%s\n", draw_special_char(DRAW_TREE_RIGHT), info->fw_entries[info->fw_entry_active].path); } @@ -171,10 +171,10 @@ static int show_status(char **args, unsigned n) { printf("Boot Loader:\n"); printf(" Product: %s\n", info->loader); if (!sd_id128_equal(info->loader_part_uuid, SD_ID128_NULL)) - printf(" ESP: /dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", + printf(" Partition: /dev/disk/by-partuuid/%02x%02x%02x%02x-%02x%02x-%02x%02x-%02x%02x-%02x%02x%02x%02x%02x%02x\n", SD_ID128_FORMAT_VAL(info->loader_part_uuid)); else - printf(" ESP: n/a\n"); + printf(" Partition: n/a\n"); printf(" File: %s%s\n", draw_special_char(DRAW_TREE_RIGHT), strna(info->loader_image_path)); printf("\n"); -- cgit v1.2.1 From d8d4bee76cf3b40ea923bc57d44aa0815ca9b5ff Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 28 Mar 2013 15:28:10 +0100 Subject: build-sys: fix HAVE/ENABLE_FIRMWARE https://bugs.freedesktop.org/show_bug.cgi?id=62864 --- configure.ac | 2 +- src/udev/udev-builtin.c | 2 +- src/udev/udev.h | 4 ++-- src/udev/udevd.c | 6 +++--- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/configure.ac b/configure.ac index 5b88bcf005..e73cd5c76f 100644 --- a/configure.ac +++ b/configure.ac @@ -728,6 +728,7 @@ for i in $with_firmware_path; do done IFS=$OLD_IFS AC_SUBST(FIRMWARE_PATH) +AS_IF([test "x${FIRMWARE_PATH}" != "x"], [ AC_DEFINE(HAVE_FIRMWARE, 1, [Define if FIRMWARE is available]) ]) AM_CONDITIONAL(ENABLE_FIRMWARE, [test "x${FIRMWARE_PATH}" != "x"]) # ------------------------------------------------------------------------------ @@ -736,7 +737,6 @@ AC_ARG_ENABLE([gudev], [], [enable_gudev=yes]) AS_IF([test "x$enable_gudev" = "xyes"], [ PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.22.0 gobject-2.0 >= 2.22.0 gio-2.0]) ]) AM_CONDITIONAL([ENABLE_GUDEV], [test "x$enable_gudev" = "xyes"]) - AS_IF([test "x$enable_gudev" = "xyes"], [ AC_DEFINE(HAVE_GLIB, 1, [Define if glib is available]) ]) # ------------------------------------------------------------------------------ diff --git a/src/udev/udev-builtin.c b/src/udev/udev-builtin.c index 13922d3ce3..c7d431988d 100644 --- a/src/udev/udev-builtin.c +++ b/src/udev/udev-builtin.c @@ -34,7 +34,7 @@ static const struct udev_builtin *builtins[] = { [UDEV_BUILTIN_BLKID] = &udev_builtin_blkid, #endif [UDEV_BUILTIN_BTRFS] = &udev_builtin_btrfs, -#ifdef ENABLE_FIRMWARE +#ifdef HAVE_FIRMWARE [UDEV_BUILTIN_FIRMWARE] = &udev_builtin_firmware, #endif [UDEV_BUILTIN_HWDB] = &udev_builtin_hwdb, diff --git a/src/udev/udev.h b/src/udev/udev.h index aa2edbef6e..906dfbaa0b 100644 --- a/src/udev/udev.h +++ b/src/udev/udev.h @@ -140,7 +140,7 @@ enum udev_builtin_cmd { UDEV_BUILTIN_BLKID, #endif UDEV_BUILTIN_BTRFS, -#ifdef ENABLE_FIRMWARE +#ifdef HAVE_FIRMWARE UDEV_BUILTIN_FIRMWARE, #endif UDEV_BUILTIN_HWDB, @@ -169,7 +169,7 @@ struct udev_builtin { extern const struct udev_builtin udev_builtin_blkid; #endif extern const struct udev_builtin udev_builtin_btrfs; -#ifdef ENABLE_FIRMWARE +#ifdef HAVE_FIRMWARE extern const struct udev_builtin udev_builtin_firmware; #endif extern const struct udev_builtin udev_builtin_hwdb; diff --git a/src/udev/udevd.c b/src/udev/udevd.c index b30bedfa5c..2ad73881d6 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -98,7 +98,7 @@ struct event { dev_t devnum; int ifindex; bool is_block; -#ifdef ENABLE_FIRMWARE +#ifdef HAVE_FIRMWARE bool nodelay; #endif }; @@ -444,7 +444,7 @@ static int event_queue_insert(struct udev_device *dev) event->devnum = udev_device_get_devnum(dev); event->is_block = streq("block", udev_device_get_subsystem(dev)); event->ifindex = udev_device_get_ifindex(dev); -#ifdef ENABLE_FIRMWARE +#ifdef HAVE_FIRMWARE if (streq(udev_device_get_subsystem(dev), "firmware")) event->nodelay = true; #endif @@ -527,7 +527,7 @@ static bool is_devpath_busy(struct event *event) return true; } -#ifdef ENABLE_FIRMWARE +#ifdef HAVE_FIRMWARE /* allow to bypass the dependency tracking */ if (event->nodelay) continue; -- cgit v1.2.1 From 78a04605888f987ea4449bd088d679c7075ab533 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 28 Mar 2013 21:53:30 +0100 Subject: hwdb: update --- hwdb/20-OUI.hwdb | 344 ++++++++++++++++++++++++++---------------- hwdb/20-pci-vendor-model.hwdb | 302 +++++++++++++++++++----------------- hwdb/20-usb-vendor-model.hwdb | 6 +- 3 files changed, 380 insertions(+), 272 deletions(-) diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb index 5690a9d212..e337b0e15c 100644 --- a/hwdb/20-OUI.hwdb +++ b/hwdb/20-OUI.hwdb @@ -1649,7 +1649,7 @@ OUI:0050C222D* ID_OUI_FROM_DATABASE=asetek Inc. OUI:0050C222E* - ID_OUI_FROM_DATABASE=LORD INGEN IERIE + ID_OUI_FROM_DATABASE=LORD INGENIERIE OUI:0050C222F* ID_OUI_FROM_DATABASE=HTEC Limited @@ -2798,7 +2798,7 @@ OUI:0050C23AE* ID_OUI_FROM_DATABASE=Hankuk Tapi Computer Co., Ltd OUI:0050C23AF* - ID_OUI_FROM_DATABASE=Norbit AS + ID_OUI_FROM_DATABASE=Norbit ODM AS OUI:0050C23B0* ID_OUI_FROM_DATABASE=Microtarget Tecnologia Digital Ltda. @@ -3002,7 +3002,7 @@ OUI:0050C23F2* ID_OUI_FROM_DATABASE=STL GmbH OUI:0050C23F3* - ID_OUI_FROM_DATABASE=Hytec Gerätebau GmbH + ID_OUI_FROM_DATABASE=Hytec Geraetebau GmbH OUI:0050C23F4* ID_OUI_FROM_DATABASE=MC TECHNOLOGY GmbH @@ -3035,7 +3035,7 @@ OUI:0050C23FD* ID_OUI_FROM_DATABASE=HARTMANN software GbR OUI:0050C23FE* - ID_OUI_FROM_DATABASE=HaiVision Systems Incorporated + ID_OUI_FROM_DATABASE=HaiVision Systems Inc OUI:0050C23FF* ID_OUI_FROM_DATABASE=Cast Iron Systems @@ -3149,7 +3149,7 @@ OUI:0050C2423* ID_OUI_FROM_DATABASE=Power-One Inc. OUI:0050C2424* - ID_OUI_FROM_DATABASE=Metrolab Instruments SA + ID_OUI_FROM_DATABASE=Metrolab Technology SA OUI:0050C2425* ID_OUI_FROM_DATABASE=Pinnacle Technology @@ -3221,7 +3221,7 @@ OUI:0050C243B* ID_OUI_FROM_DATABASE=A3IP OUI:0050C243C* - ID_OUI_FROM_DATABASE=LaBarge + ID_OUI_FROM_DATABASE=Ducommun LaBarge Technologies, Inc OUI:0050C243D* ID_OUI_FROM_DATABASE=Ann Arbor Sensor Systems LLC @@ -3347,7 +3347,7 @@ OUI:0050C2465* ID_OUI_FROM_DATABASE=PDTS GmbH OUI:0050C2466* - ID_OUI_FROM_DATABASE=LoNAP Limited + ID_OUI_FROM_DATABASE=LONAP Limited OUI:0050C2467* ID_OUI_FROM_DATABASE=United Western Technologies @@ -3812,7 +3812,7 @@ OUI:0050C2500* ID_OUI_FROM_DATABASE=Orenco Systems, Inc. OUI:0050C2501* - ID_OUI_FROM_DATABASE=IBEX + ID_OUI_FROM_DATABASE=IBEX UK Limited OUI:0050C2502* ID_OUI_FROM_DATABASE=Criterion Systems Limited @@ -4127,7 +4127,7 @@ OUI:0050C2569* ID_OUI_FROM_DATABASE=Twinwin Technplogy Co.,Ltd. OUI:0050C256A* - ID_OUI_FROM_DATABASE=GRUPO EPELSA S. L. + ID_OUI_FROM_DATABASE=Grupo Epelsa S.L. OUI:0050C256B* ID_OUI_FROM_DATABASE=Dataton Utvecklings AB @@ -4553,7 +4553,7 @@ OUI:0050C25F7* ID_OUI_FROM_DATABASE=Metrologic Group OUI:0050C25F8* - ID_OUI_FROM_DATABASE=Grupo Epelsa s. l. + ID_OUI_FROM_DATABASE=Grupo Epelsa S.L. OUI:0050C25F9* ID_OUI_FROM_DATABASE=ROTHARY Solutions AG @@ -4607,7 +4607,7 @@ OUI:0050C2609* ID_OUI_FROM_DATABASE=Toptech Systems, Inc. OUI:0050C260A* - ID_OUI_FROM_DATABASE=Gradual Tecnologia Ltda + ID_OUI_FROM_DATABASE=Gradual Tecnologia Ltda. OUI:0050C260B* ID_OUI_FROM_DATABASE=Shanghai QianJin Electronic Equipment Co. Ltd. @@ -5078,7 +5078,7 @@ OUI:0050C26A7* ID_OUI_FROM_DATABASE=Hoer GmbH & Co. Industrie-Electronic KG OUI:0050C26A8* - ID_OUI_FROM_DATABASE=Intelligent Devices, Inc. + ID_OUI_FROM_DATABASE=Delcan Technologies, Inc OUI:0050C26A9* ID_OUI_FROM_DATABASE=Armida Technologies Corporation @@ -5852,7 +5852,7 @@ OUI:0050C27A9* ID_OUI_FROM_DATABASE=Delta Tau Data Systems, Inc OUI:0050C27AA* - ID_OUI_FROM_DATABASE=EPEL INDUSTRIAL + ID_OUI_FROM_DATABASE=Grupo Epelsa S.L. OUI:0050C27AB* ID_OUI_FROM_DATABASE=General Microsystems Sdn Bhd @@ -6365,7 +6365,7 @@ OUI:0050C2856* ID_OUI_FROM_DATABASE=CT Company OUI:0050C2857* - ID_OUI_FROM_DATABASE=EPEL INDUSTRIAL + ID_OUI_FROM_DATABASE=Grupo Epelsa S.L. OUI:0050C2858* ID_OUI_FROM_DATABASE=Wireless Acquisition LLC @@ -6731,7 +6731,7 @@ OUI:0050C28D0* ID_OUI_FROM_DATABASE=Saia-Burgess Controls AG OUI:0050C28D1* - ID_OUI_FROM_DATABASE=my-sen GmbH + ID_OUI_FROM_DATABASE=Bachmann Monitoring GmbH OUI:0050C28D2* ID_OUI_FROM_DATABASE=TTi Ltd @@ -6869,7 +6869,7 @@ OUI:0050C28FE* ID_OUI_FROM_DATABASE=Cross Country Systems AB OUI:0050C28FF* - ID_OUI_FROM_DATABASE=Luceat Spa + ID_OUI_FROM_DATABASE=Luceat OUI:0050C2900* ID_OUI_FROM_DATABASE=Magor Communications Corp @@ -7121,7 +7121,7 @@ OUI:0050C2952* ID_OUI_FROM_DATABASE=Tech Fass s.r.o. OUI:0050C2953* - ID_OUI_FROM_DATABASE=EPEL Industrial + ID_OUI_FROM_DATABASE=Grupo Epelsa S.L. OUI:0050C2954* ID_OUI_FROM_DATABASE=Phytec Messtechnik GmbH @@ -7373,7 +7373,7 @@ OUI:0050C29A6* ID_OUI_FROM_DATABASE=Metodo2 OUI:0050C29A7* - ID_OUI_FROM_DATABASE=Thales Communications France + ID_OUI_FROM_DATABASE=Thales Communications & Security S.A. OUI:0050C29A8* ID_OUI_FROM_DATABASE=DOMIS SA @@ -7748,7 +7748,7 @@ OUI:0050C2A23* ID_OUI_FROM_DATABASE=Agility Mfg, Inc. OUI:0050C2A24* - ID_OUI_FROM_DATABASE=GRUPO EPELSA s.l. + ID_OUI_FROM_DATABASE=Grupo Epelsa S.L. OUI:0050C2A25* ID_OUI_FROM_DATABASE=Saia-Burgess Controls AG @@ -8789,7 +8789,7 @@ OUI:0050C2B80* ID_OUI_FROM_DATABASE=iScreen LLC OUI:0050C2B81* - ID_OUI_FROM_DATABASE=GHL GmbH & Co.KG + ID_OUI_FROM_DATABASE=GHL Advanced Technolgy GmbH & Co. KG OUI:0050C2B82* ID_OUI_FROM_DATABASE=TANABIKI Inc. @@ -8810,7 +8810,7 @@ OUI:0050C2B87* ID_OUI_FROM_DATABASE=EMAC, Inc. OUI:0050C2B88* - ID_OUI_FROM_DATABASE=GIgatronik Köln GmbH + ID_OUI_FROM_DATABASE=Gigatronik Köln GmbH OUI:0050C2B89* ID_OUI_FROM_DATABASE=ENTEC Electric & Electronic Co., LTD. @@ -9083,7 +9083,7 @@ OUI:0050C2BE3* ID_OUI_FROM_DATABASE=Jiskoot Ltd OUI:0050C2BE4* - ID_OUI_FROM_DATABASE=GRUPO EPELSA S.L. + ID_OUI_FROM_DATABASE=Grupo Epelsa S.L. OUI:0050C2BE5* ID_OUI_FROM_DATABASE=RF Code, Inc @@ -9896,7 +9896,7 @@ OUI:0050C2CF9* ID_OUI_FROM_DATABASE=Elbit Systems of America OUI:0050C2CFA* - ID_OUI_FROM_DATABASE=GRUPO EPELSA S. L. + ID_OUI_FROM_DATABASE=Grupo Epelsa S.L. OUI:0050C2CFB* ID_OUI_FROM_DATABASE=New Embedded Technology @@ -9911,7 +9911,7 @@ OUI:0050C2CFE* ID_OUI_FROM_DATABASE=Techleader OUI:0050C2CFF* - ID_OUI_FROM_DATABASE=INFRASAFE INCORPORATED + ID_OUI_FROM_DATABASE=Infrasafe, Inc. OUI:0050C2D00* ID_OUI_FROM_DATABASE=Bodensee Gravitymeter Geosystem GmbH @@ -10631,7 +10631,7 @@ OUI:0050C2DF1* ID_OUI_FROM_DATABASE=Saia-Burgess Controls AG OUI:0050C2DF2* - ID_OUI_FROM_DATABASE=Instrument Concepts + ID_OUI_FROM_DATABASE=Ocean Sonics OUI:0050C2DF3* ID_OUI_FROM_DATABASE=INSEVIS GmbH @@ -10727,7 +10727,7 @@ OUI:0050C2E11* ID_OUI_FROM_DATABASE=RF Neulink OUI:0050C2E12* - ID_OUI_FROM_DATABASE=Innolex + ID_OUI_FROM_DATABASE=Kago Electronics BV OUI:0050C2E13* ID_OUI_FROM_DATABASE=Automation Assist Japan Company @@ -10850,7 +10850,7 @@ OUI:0050C2E3B* ID_OUI_FROM_DATABASE=Nanosolution Inc. OUI:0050C2E3C* - ID_OUI_FROM_DATABASE=GRUPO EPELSA S.L. + ID_OUI_FROM_DATABASE=Grupo Epelsa S.L. OUI:0050C2E3D* ID_OUI_FROM_DATABASE=Baudisch Electronic GmbH @@ -11018,7 +11018,7 @@ OUI:0050C2E74* ID_OUI_FROM_DATABASE=Will corp. OUI:0050C2E75* - ID_OUI_FROM_DATABASE=FSM Elektronik GmbH + ID_OUI_FROM_DATABASE=FSM AG OUI:0050C2E76* ID_OUI_FROM_DATABASE=Embedded Solution Bank Co., Ltd. @@ -11249,7 +11249,7 @@ OUI:0050C2EC1* ID_OUI_FROM_DATABASE=ANT Group s.r.l OUI:0050C2EC2* - ID_OUI_FROM_DATABASE=Ixonos Finland Ltd + ID_OUI_FROM_DATABASE=Ixonos Plc OUI:0050C2EC3* ID_OUI_FROM_DATABASE=Aplex Technology Inc. @@ -11591,7 +11591,7 @@ OUI:0050C2F34* ID_OUI_FROM_DATABASE=Sequip S+E GmbH OUI:0050C2F35* - ID_OUI_FROM_DATABASE=GRUPO EPELSA S.L. + ID_OUI_FROM_DATABASE=Grupo Epelsa S.L. OUI:0050C2F36* ID_OUI_FROM_DATABASE=Visitech AS @@ -12796,6 +12796,21 @@ OUI:40D8550C7* OUI:40D8550C8* ID_OUI_FROM_DATABASE=Mettler Toledo Hispeed +OUI:40D8550C9* + ID_OUI_FROM_DATABASE=QUANTAFLOW + +OUI:40D8550CA* + ID_OUI_FROM_DATABASE=NEUTRIK AG + +OUI:40D8550CB* + ID_OUI_FROM_DATABASE=ReliOn Inc + +OUI:40D8550CC* + ID_OUI_FROM_DATABASE=ATEME + +OUI:40D8550CD* + ID_OUI_FROM_DATABASE=Logical Product + OUI:000000* ID_OUI_FROM_DATABASE=XEROX CORPORATION @@ -13964,7 +13979,7 @@ OUI:000186* ID_OUI_FROM_DATABASE=Uwe Disch OUI:000187* - ID_OUI_FROM_DATABASE=i2SE GmbH + ID_OUI_FROM_DATABASE=I2SE GmbH OUI:000188* ID_OUI_FROM_DATABASE=LXCO Technologies ag @@ -15077,7 +15092,7 @@ OUI:0002F8* ID_OUI_FROM_DATABASE=SEAKR Engineering, Inc. OUI:0002F9* - ID_OUI_FROM_DATABASE=Mimos Semiconductor SDN BHD + ID_OUI_FROM_DATABASE=MIMOS Berhad OUI:0002FA* ID_OUI_FROM_DATABASE=DX Antenna Co., Ltd. @@ -15902,7 +15917,7 @@ OUI:00040B* ID_OUI_FROM_DATABASE=3com Europe Ltd. OUI:00040C* - ID_OUI_FROM_DATABASE=KANNO Work's Ltd. + ID_OUI_FROM_DATABASE=Kanno Works, Ltd. OUI:00040D* ID_OUI_FROM_DATABASE=Avaya, Inc. @@ -16151,7 +16166,7 @@ OUI:00045E* ID_OUI_FROM_DATABASE=PolyTrax Information Technology AG OUI:00045F* - ID_OUI_FROM_DATABASE=Evalue Technology, Inc. + ID_OUI_FROM_DATABASE=Avalue Technology, Inc. OUI:000460* ID_OUI_FROM_DATABASE=Knilink Technology, Inc. @@ -17576,7 +17591,7 @@ OUI:00063B* ID_OUI_FROM_DATABASE=Arcturus Networks Inc. OUI:00063C* - ID_OUI_FROM_DATABASE=Intrinsyc Europe Ltd + ID_OUI_FROM_DATABASE=Intrinsyc Software International Inc. OUI:00063D* ID_OUI_FROM_DATABASE=Microwave Data Systems Inc. @@ -18137,7 +18152,7 @@ OUI:0006F6* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. OUI:0006F7* - ID_OUI_FROM_DATABASE=ALPS Electric Co,. Ltd. + ID_OUI_FROM_DATABASE=ALPS Co,. Ltd. OUI:0006F8* ID_OUI_FROM_DATABASE=CPU Technology, Inc. @@ -18176,7 +18191,7 @@ OUI:000703* ID_OUI_FROM_DATABASE=CSEE Transport OUI:000704* - ID_OUI_FROM_DATABASE=ALPS Electric Co,. Ltd. + ID_OUI_FROM_DATABASE=ALPS Co,. Ltd. OUI:000705* ID_OUI_FROM_DATABASE=Endress & Hauser GmbH & Co @@ -18356,7 +18371,7 @@ OUI:00073F* ID_OUI_FROM_DATABASE=Woojyun Systec Co., Ltd. OUI:000740* - ID_OUI_FROM_DATABASE=Buffalo, Inc + ID_OUI_FROM_DATABASE=Buffalo Inc. OUI:000741* ID_OUI_FROM_DATABASE=Sierra Automated Systems @@ -18419,7 +18434,7 @@ OUI:000754* ID_OUI_FROM_DATABASE=Xyterra Computing, Inc. OUI:000755* - ID_OUI_FROM_DATABASE=Lafon SA + ID_OUI_FROM_DATABASE=Lafon OUI:000756* ID_OUI_FROM_DATABASE=Juyoung Telecom @@ -18794,7 +18809,7 @@ OUI:0007D1* ID_OUI_FROM_DATABASE=Spectrum Signal Processing Inc. OUI:0007D2* - ID_OUI_FROM_DATABASE=Logopak Systeme + ID_OUI_FROM_DATABASE=Logopak Systeme GmbH & Co. KG OUI:0007D3* ID_OUI_FROM_DATABASE=Stork Prints B.V. @@ -19484,7 +19499,7 @@ OUI:0008D2* ID_OUI_FROM_DATABASE=ZOOM Networks Inc. OUI:0008D3* - ID_OUI_FROM_DATABASE=Hercules Technologies S.A. + ID_OUI_FROM_DATABASE=Hercules Technologies S.A.S. OUI:0008D4* ID_OUI_FROM_DATABASE=IneoQuest Technologies, Inc @@ -19781,7 +19796,7 @@ OUI:000935* ID_OUI_FROM_DATABASE=Sandvine Incorporated OUI:000936* - ID_OUI_FROM_DATABASE=Ipetronik GmbH & Co.KG + ID_OUI_FROM_DATABASE=Ipetronik GmbH & Co. KG OUI:000937* ID_OUI_FROM_DATABASE=Inventec Appliance Corp @@ -20192,7 +20207,7 @@ OUI:0009BE* ID_OUI_FROM_DATABASE=Mamiya-OP Co.,Ltd. OUI:0009BF* - ID_OUI_FROM_DATABASE=Nintendo Co.,Ltd. + ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. OUI:0009C0* ID_OUI_FROM_DATABASE=6WIND @@ -20648,7 +20663,7 @@ OUI:000A57* ID_OUI_FROM_DATABASE=Hewlett-Packard Company - Standards OUI:000A58* - ID_OUI_FROM_DATABASE=Ingenieur-Büro Freyer & Siegel + ID_OUI_FROM_DATABASE=Freyer & Siegel Elektronik GmbH & Co. KG OUI:000A59* ID_OUI_FROM_DATABASE=HW server @@ -21443,7 +21458,7 @@ OUI:000B61* ID_OUI_FROM_DATABASE=Friedrich Lütze GmbH & Co. KG OUI:000B62* - ID_OUI_FROM_DATABASE=Ingenieurbüro für Elektronikdesign Ingo Mohnen + ID_OUI_FROM_DATABASE=ib-mohnen KG OUI:000B63* ID_OUI_FROM_DATABASE=Kaleidescape @@ -21836,7 +21851,7 @@ OUI:000BE4* ID_OUI_FROM_DATABASE=Hosiden Corporation OUI:000BE5* - ID_OUI_FROM_DATABASE=HIMS Korea Co., Ltd. + ID_OUI_FROM_DATABASE=HIMS International Corporation OUI:000BE6* ID_OUI_FROM_DATABASE=Datel Electronics @@ -22181,7 +22196,7 @@ OUI:000C59* ID_OUI_FROM_DATABASE=Indyme Electronics, Inc. OUI:000C5A* - ID_OUI_FROM_DATABASE=IBSmm Industrieelektronik Multimedia + ID_OUI_FROM_DATABASE=IBSmm Embedded Electronics Consulting OUI:000C5B* ID_OUI_FROM_DATABASE=HANWANG TECHNOLOGY CO.,LTD @@ -25184,7 +25199,7 @@ OUI:00104B* ID_OUI_FROM_DATABASE=3COM CORPORATION OUI:00104C* - ID_OUI_FROM_DATABASE=LeCroy Corporation + ID_OUI_FROM_DATABASE=Teledyne LeCroy, Inc OUI:00104D* ID_OUI_FROM_DATABASE=SURTEC INDUSTRIES, INC. @@ -25280,7 +25295,7 @@ OUI:00106B* ID_OUI_FROM_DATABASE=SONUS NETWORKS, INC. OUI:00106C* - ID_OUI_FROM_DATABASE=Infratec AG + ID_OUI_FROM_DATABASE=EDNT GmbH OUI:00106D* ID_OUI_FROM_DATABASE=Axxcelera Broadband Wireless @@ -25610,7 +25625,7 @@ OUI:0010D9* ID_OUI_FROM_DATABASE=IBM JAPAN, FUJISAWA MT+D OUI:0010DA* - ID_OUI_FROM_DATABASE=MOTION ENGINEERING, INC. + ID_OUI_FROM_DATABASE=Kollmorgen Corp OUI:0010DB* ID_OUI_FROM_DATABASE=Juniper Networks, Inc. @@ -26582,7 +26597,7 @@ OUI:00121E* ID_OUI_FROM_DATABASE=Juniper Networks, Inc. OUI:00121F* - ID_OUI_FROM_DATABASE=Harding Intruments + ID_OUI_FROM_DATABASE=Harding Instruments OUI:001220* ID_OUI_FROM_DATABASE=Cadco Systems @@ -26798,7 +26813,7 @@ OUI:001266* ID_OUI_FROM_DATABASE=Swisscom Hospitality Services SA OUI:001267* - ID_OUI_FROM_DATABASE=Matsushita Electronic Components Co., Ltd. + ID_OUI_FROM_DATABASE=Panasonic Corporation OUI:001268* ID_OUI_FROM_DATABASE=IPS d.o.o. @@ -27266,7 +27281,7 @@ OUI:001302* ID_OUI_FROM_DATABASE=Intel Corporate OUI:001303* - ID_OUI_FROM_DATABASE=GateConnect Technologies GmbH + ID_OUI_FROM_DATABASE=GateConnect OUI:001304* ID_OUI_FROM_DATABASE=Flaircomm Technologies Co. LTD @@ -27575,7 +27590,7 @@ OUI:001369* ID_OUI_FROM_DATABASE=Honda Electron Co., LED. OUI:00136A* - ID_OUI_FROM_DATABASE=Hach Lange SA + ID_OUI_FROM_DATABASE=Hach Lange Sarl OUI:00136B* ID_OUI_FROM_DATABASE=E-TEC @@ -28229,7 +28244,7 @@ OUI:001443* ID_OUI_FROM_DATABASE=Consultronics Europe Ltd OUI:001444* - ID_OUI_FROM_DATABASE=Grundfos Electronics + ID_OUI_FROM_DATABASE=Grundfos Holding OUI:001445* ID_OUI_FROM_DATABASE=Telefon-Gradnja d.o.o. @@ -28295,7 +28310,7 @@ OUI:001459* ID_OUI_FROM_DATABASE=Moram Co., Ltd. OUI:00145A* - ID_OUI_FROM_DATABASE=Neratec AG + ID_OUI_FROM_DATABASE=Neratec Solutions AG OUI:00145B* ID_OUI_FROM_DATABASE=SeekerNet Inc. @@ -28415,7 +28430,7 @@ OUI:001481* ID_OUI_FROM_DATABASE=Multilink Inc OUI:001482* - ID_OUI_FROM_DATABASE=GoBackTV, Inc + ID_OUI_FROM_DATABASE=Aurora Networks OUI:001483* ID_OUI_FROM_DATABASE=eXS Inc. @@ -29636,7 +29651,7 @@ OUI:001618* ID_OUI_FROM_DATABASE=HIVION Co., Ltd. OUI:001619* - ID_OUI_FROM_DATABASE=La Factoría de Comunicaciones Aplicadas,S.L. + ID_OUI_FROM_DATABASE=Lancelan Technologies S.L. OUI:00161A* ID_OUI_FROM_DATABASE=Dametric AB @@ -29894,7 +29909,7 @@ OUI:00166E* ID_OUI_FROM_DATABASE=Arbitron Inc. OUI:00166F* - ID_OUI_FROM_DATABASE=Intel Corporation + ID_OUI_FROM_DATABASE=Intel Corporate OUI:001670* ID_OUI_FROM_DATABASE=SKNET Corporation @@ -29915,7 +29930,7 @@ OUI:001675* ID_OUI_FROM_DATABASE=Motorola Mobility, Inc. OUI:001676* - ID_OUI_FROM_DATABASE=Intel Corporation + ID_OUI_FROM_DATABASE=Intel Corporate OUI:001677* ID_OUI_FROM_DATABASE=Bihl + Wiedemann GmbH @@ -30260,10 +30275,10 @@ OUI:0016E9* ID_OUI_FROM_DATABASE=Tiba Medical Inc OUI:0016EA* - ID_OUI_FROM_DATABASE=Intel Corporation + ID_OUI_FROM_DATABASE=Intel Corporate OUI:0016EB* - ID_OUI_FROM_DATABASE=Intel Corporation + ID_OUI_FROM_DATABASE=Intel Corporate OUI:0016EC* ID_OUI_FROM_DATABASE=Elitegroup Computer Systems Co., Ltd. @@ -30923,7 +30938,7 @@ OUI:0017C7* ID_OUI_FROM_DATABASE=MARA Systems Consulting AB OUI:0017C8* - ID_OUI_FROM_DATABASE=Kyocera Mita Corporation + ID_OUI_FROM_DATABASE=KYOCERA Document Solutions Inc. OUI:0017C9* ID_OUI_FROM_DATABASE=Samsung Electronics Co., Ltd. @@ -31754,7 +31769,7 @@ OUI:0018DD* ID_OUI_FROM_DATABASE=Silicondust Engineering Ltd OUI:0018DE* - ID_OUI_FROM_DATABASE=Intel Corporation + ID_OUI_FROM_DATABASE=Intel Corporate OUI:0018DF* ID_OUI_FROM_DATABASE=The Morey Corporation @@ -31943,7 +31958,7 @@ OUI:00191C* ID_OUI_FROM_DATABASE=Sensicast Systems OUI:00191D* - ID_OUI_FROM_DATABASE=Nintendo Co.,Ltd. + ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. OUI:00191E* ID_OUI_FROM_DATABASE=Beyondwiz Co., Ltd. @@ -32483,10 +32498,10 @@ OUI:0019D0* ID_OUI_FROM_DATABASE=Cathexis OUI:0019D1* - ID_OUI_FROM_DATABASE=Intel Corporation + ID_OUI_FROM_DATABASE=Intel Corporate OUI:0019D2* - ID_OUI_FROM_DATABASE=Intel Corporation + ID_OUI_FROM_DATABASE=Intel Corporate OUI:0019D3* ID_OUI_FROM_DATABASE=TRAK Microwave @@ -32498,7 +32513,7 @@ OUI:0019D5* ID_OUI_FROM_DATABASE=IP Innovations, Inc. OUI:0019D6* - ID_OUI_FROM_DATABASE=LS Cable Ltd. + ID_OUI_FROM_DATABASE=LS Cable and System Ltd. OUI:0019D7* ID_OUI_FROM_DATABASE=FORTUNETEK CO., LTD @@ -32747,7 +32762,7 @@ OUI:001A28* ID_OUI_FROM_DATABASE=ASWT Co., LTD. Taiwan Branch H.K. OUI:001A29* - ID_OUI_FROM_DATABASE=Techsonic Industries d/b/a Humminbird + ID_OUI_FROM_DATABASE=Johnson Outdoors Marine Electronics, Inc OUI:001A2A* ID_OUI_FROM_DATABASE=Arcadyan Technology Corporation @@ -34025,7 +34040,7 @@ OUI:001BD2* ID_OUI_FROM_DATABASE=ULTRA-X ASIA PACIFIC Inc. OUI:001BD3* - ID_OUI_FROM_DATABASE=Matsushita Electric Panasonic AVC + ID_OUI_FROM_DATABASE=Panasonic Corp. AVC Company OUI:001BD4* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -34061,7 +34076,7 @@ OUI:001BDE* ID_OUI_FROM_DATABASE=Renkus-Heinz, Inc. OUI:001BDF* - ID_OUI_FROM_DATABASE=Iskra MIS + ID_OUI_FROM_DATABASE=Iskra Sistemi d.d. OUI:001BE0* ID_OUI_FROM_DATABASE=TELENOT ELECTRONIC GmbH @@ -34298,7 +34313,7 @@ OUI:001C2D* ID_OUI_FROM_DATABASE=FlexRadio Systems OUI:001C2E* - ID_OUI_FROM_DATABASE=ProCurve Networking by HP + ID_OUI_FROM_DATABASE=HPN Supply Chain OUI:001C2F* ID_OUI_FROM_DATABASE=Pfister GmbH @@ -35243,7 +35258,7 @@ OUI:001D68* ID_OUI_FROM_DATABASE=Thomson Telecom Belgium OUI:001D69* - ID_OUI_FROM_DATABASE=Knorr-Bremse AG + ID_OUI_FROM_DATABASE=Knorr-Bremse IT-Services GmbH OUI:001D6A* ID_OUI_FROM_DATABASE=Alpha Networks Inc. @@ -35465,7 +35480,7 @@ OUI:001DB2* ID_OUI_FROM_DATABASE=HOKKAIDO ELECTRIC ENGINEERING CO.,LTD. OUI:001DB3* - ID_OUI_FROM_DATABASE=ProCurve Networking by HP + ID_OUI_FROM_DATABASE=HPN Supply Chain OUI:001DB4* ID_OUI_FROM_DATABASE=KUMHO ENG CO.,LTD @@ -35528,7 +35543,7 @@ OUI:001DC7* ID_OUI_FROM_DATABASE=L-3 Communications Geneva Aerospace OUI:001DC8* - ID_OUI_FROM_DATABASE=ScadaMetrcs, LLC. + ID_OUI_FROM_DATABASE=Navionics Research Inc., dba SCADAmetrics OUI:001DC9* ID_OUI_FROM_DATABASE=GainSpan Corp. @@ -35624,7 +35639,7 @@ OUI:001DE7* ID_OUI_FROM_DATABASE=Marine Sonic Technology, Ltd. OUI:001DE8* - ID_OUI_FROM_DATABASE=Nikko Denki Tsushin Company(NDTC) + ID_OUI_FROM_DATABASE=Nikko Denki Tsushin Corporation(NDTC) OUI:001DE9* ID_OUI_FROM_DATABASE=Nokia Danmark A/S @@ -36584,7 +36599,7 @@ OUI:001F27* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. OUI:001F28* - ID_OUI_FROM_DATABASE=ProCurve Networking by HP + ID_OUI_FROM_DATABASE=HPN Supply Chain OUI:001F29* ID_OUI_FROM_DATABASE=Hewlett-Packard Company @@ -37226,7 +37241,7 @@ OUI:001FFD* ID_OUI_FROM_DATABASE=Indigo Mobile Technologies Corp. OUI:001FFE* - ID_OUI_FROM_DATABASE=ProCurve Networking by HP + ID_OUI_FROM_DATABASE=HPN Supply Chain OUI:001FFF* ID_OUI_FROM_DATABASE=Respironics, Inc. @@ -38738,7 +38753,7 @@ OUI:0021F6* ID_OUI_FROM_DATABASE=Oracle Corporation OUI:0021F7* - ID_OUI_FROM_DATABASE=ProCurve Networking by HP + ID_OUI_FROM_DATABASE=HPN Supply Chain OUI:0021F8* ID_OUI_FROM_DATABASE=Enseo, Inc. @@ -40271,7 +40286,7 @@ OUI:0023FA* ID_OUI_FROM_DATABASE=RG Nets, Inc. OUI:0023FB* - ID_OUI_FROM_DATABASE=IP Datatel, Inc. + ID_OUI_FROM_DATABASE=IP Datatel, LLC. OUI:0023FC* ID_OUI_FROM_DATABASE=Ultra Stereo Labs, Inc @@ -40484,7 +40499,7 @@ OUI:002444* ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. OUI:002445* - ID_OUI_FROM_DATABASE=LiquidxStream Systems Inc. + ID_OUI_FROM_DATABASE=CommScope Canada Inc. OUI:002446* ID_OUI_FROM_DATABASE=MMB Research Inc. @@ -41564,7 +41579,7 @@ OUI:0025B1* ID_OUI_FROM_DATABASE=Maya-Creation Corporation OUI:0025B2* - ID_OUI_FROM_DATABASE=LFK-Lenkflugkörpersysteme GmbH + ID_OUI_FROM_DATABASE=MBDA Deutschland GmbH OUI:0025B3* ID_OUI_FROM_DATABASE=Hewlett-Packard Company @@ -41831,7 +41846,7 @@ OUI:00260C* ID_OUI_FROM_DATABASE=Dataram OUI:00260D* - ID_OUI_FROM_DATABASE=Micronetics, Inc. + ID_OUI_FROM_DATABASE=Mercury Systems, Inc. OUI:00260E* ID_OUI_FROM_DATABASE=Ablaze Systems, LLC @@ -42428,7 +42443,7 @@ OUI:0026D6* ID_OUI_FROM_DATABASE=Ningbo Andy Optoelectronic Co., Ltd. OUI:0026D7* - ID_OUI_FROM_DATABASE=Xiamen BB Electron & Technology Co., Ltd. + ID_OUI_FROM_DATABASE=KM Electornic Technology Co., Ltd. OUI:0026D8* ID_OUI_FROM_DATABASE=Magic Point Inc. @@ -43598,7 +43613,7 @@ OUI:004025* ID_OUI_FROM_DATABASE=MOLECULAR DYNAMICS OUI:004026* - ID_OUI_FROM_DATABASE=Buffalo, Inc + ID_OUI_FROM_DATABASE=Buffalo Inc. OUI:004027* ID_OUI_FROM_DATABASE=SMC MASSACHUSETTS, INC. @@ -46607,7 +46622,7 @@ OUI:009008* ID_OUI_FROM_DATABASE=HanA Systems Inc. OUI:009009* - ID_OUI_FROM_DATABASE=i Controls, Inc. + ID_OUI_FROM_DATABASE=I Controls, Inc. OUI:00900A* ID_OUI_FROM_DATABASE=PROTON ELECTRONIC INDUSTRIAL CO., LTD. @@ -47045,7 +47060,7 @@ OUI:00909A* ID_OUI_FROM_DATABASE=ONE WORLD SYSTEMS, INC. OUI:00909B* - ID_OUI_FROM_DATABASE=IMAJE + ID_OUI_FROM_DATABASE=MARKEM-IMAJE OUI:00909C* ID_OUI_FROM_DATABASE=Motorola, Inc. @@ -50327,7 +50342,7 @@ OUI:00E087* ID_OUI_FROM_DATABASE=LeCroy - Networking Productions Division OUI:00E088* - ID_OUI_FROM_DATABASE=LTX CORPORATION + ID_OUI_FROM_DATABASE=LTX-Credence CORPORATION OUI:00E089* ID_OUI_FROM_DATABASE=ION Networks, Inc. @@ -50930,7 +50945,7 @@ OUI:04C05B* ID_OUI_FROM_DATABASE=Tigo Energy OUI:04C06F* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd + ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd OUI:04C1B9* ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. @@ -50951,7 +50966,7 @@ OUI:04DAD2* ID_OUI_FROM_DATABASE=Cisco OUI:04DD4C* - ID_OUI_FROM_DATABASE=IPBlaze + ID_OUI_FROM_DATABASE=Velocytech OUI:04E0C4* ID_OUI_FROM_DATABASE=TRIUMPH-ADLER AG @@ -52582,6 +52597,9 @@ OUI:18D071* OUI:18D66A* ID_OUI_FROM_DATABASE=Inmarsat +OUI:18D6CF* + ID_OUI_FROM_DATABASE=Kurth Electronic GmbH + OUI:18D949* ID_OUI_FROM_DATABASE=Qvis Labs, LLC @@ -52627,6 +52645,9 @@ OUI:18FE34* OUI:1C0656* ID_OUI_FROM_DATABASE=IDY Corporation +OUI:1C08C1* + ID_OUI_FROM_DATABASE=Lg Innotek + OUI:1C0B52* ID_OUI_FROM_DATABASE=EPICOM S.A @@ -52652,7 +52673,7 @@ OUI:1C19DE* ID_OUI_FROM_DATABASE=eyevis GmbH OUI:1C1D67* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd + ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd OUI:1C334D* ID_OUI_FROM_DATABASE=ITS Telecom @@ -52738,6 +52759,9 @@ OUI:1C7C11* OUI:1C7C45* ID_OUI_FROM_DATABASE=Vitek Industrial Video Products, Inc. +OUI:1C7CC7* + ID_OUI_FROM_DATABASE=Coriant GmbH + OUI:1C7EE5* ID_OUI_FROM_DATABASE=D-Link International @@ -52850,7 +52874,7 @@ OUI:200505* ID_OUI_FROM_DATABASE=RADMAX COMMUNICATION PRIVATE LIMITED OUI:2005E8* - ID_OUI_FROM_DATABASE=OOO "InProMedia" + ID_OUI_FROM_DATABASE=OOO InProMedia OUI:200A5E* ID_OUI_FROM_DATABASE=Xiangshan Giant Eagle Technology Developing co.,LTD @@ -52870,6 +52894,9 @@ OUI:2016D8* OUI:201A06* ID_OUI_FROM_DATABASE=COMPAL INFORMATION (KUNSHAN) CO., LTD. +OUI:201D03* + ID_OUI_FROM_DATABASE=Elatec GmbH + OUI:2021A5* ID_OUI_FROM_DATABASE=LG Electronics Inc @@ -52877,7 +52904,7 @@ OUI:202598* ID_OUI_FROM_DATABASE=Teleview OUI:202BC1* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd + ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd OUI:202CB7* ID_OUI_FROM_DATABASE=Kong Yue Electronics & Information Industry (Xinhui) Ltd. @@ -53234,7 +53261,7 @@ OUI:24DAB6* ID_OUI_FROM_DATABASE=Sistemas de Gestión Energética S.A. de C.V OUI:24DBAC* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd + ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd OUI:24DBAD* ID_OUI_FROM_DATABASE=ShopperTrak RCT Corporation @@ -53342,7 +53369,7 @@ OUI:285132* ID_OUI_FROM_DATABASE=Shenzhen Prayfly Technology Co.,Ltd OUI:285FDB* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd + ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd OUI:286046* ID_OUI_FROM_DATABASE=Lantech Communications Global, Inc. @@ -53843,7 +53870,7 @@ OUI:3085A9* ID_OUI_FROM_DATABASE=Asustek Computer Inc OUI:308730* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd + ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd OUI:308999* ID_OUI_FROM_DATABASE=Guangdong East Power Co., @@ -53923,6 +53950,9 @@ OUI:340804* OUI:34159E* ID_OUI_FROM_DATABASE=Apple, Inc +OUI:341B22* + ID_OUI_FROM_DATABASE=Grandbeing Technology Co., Ltd + OUI:342109* ID_OUI_FROM_DATABASE=Jensen Scandinavia AS @@ -53987,7 +54017,7 @@ OUI:3482DE* ID_OUI_FROM_DATABASE=Kayo Technology, Inc. OUI:348302* - ID_OUI_FROM_DATABASE=iForcom Co., Ltd + ID_OUI_FROM_DATABASE=iFORCOM Co., Ltd OUI:348446* ID_OUI_FROM_DATABASE=Ericsson AB @@ -54077,7 +54107,7 @@ OUI:34C69A* ID_OUI_FROM_DATABASE=Enecsys Ltd OUI:34C731* - ID_OUI_FROM_DATABASE=ALPS Electric Co,. Ltd. + ID_OUI_FROM_DATABASE=ALPS Co,. Ltd. OUI:34C803* ID_OUI_FROM_DATABASE=Nokia Corporation @@ -54133,6 +54163,9 @@ OUI:34FC6F* OUI:380197* ID_OUI_FROM_DATABASE=Toshiba Samsung Storage Technolgoy Korea Corporation +OUI:3806B4* + ID_OUI_FROM_DATABASE=A.D.C. GmbH + OUI:380A0A* ID_OUI_FROM_DATABASE=Sky-City Communication and Electronics Limited Company @@ -54386,7 +54419,7 @@ OUI:3C3A73* ID_OUI_FROM_DATABASE=Avaya, Inc OUI:3C438E* - ID_OUI_FROM_DATABASE=Motorola Mobility, Inc. + ID_OUI_FROM_DATABASE=Motorola Mobility, LLC. OUI:3C4A92* ID_OUI_FROM_DATABASE=Hewlett-Packard Company @@ -54632,7 +54665,7 @@ OUI:404A03* ID_OUI_FROM_DATABASE=ZyXEL Communications Corporation OUI:404D8E* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd + ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd OUI:4050E0* ID_OUI_FROM_DATABASE=Milton Security Group LLC @@ -54646,6 +54679,9 @@ OUI:40520D* OUI:405539* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. +OUI:40560C* + ID_OUI_FROM_DATABASE=In Home Displays Ltd + OUI:405A9B* ID_OUI_FROM_DATABASE=ANOVO @@ -54815,7 +54851,7 @@ OUI:40F52E* ID_OUI_FROM_DATABASE=Leica Microsystems (Schweiz) AG OUI:40FC89* - ID_OUI_FROM_DATABASE=Motorola Mobility, Inc. + ID_OUI_FROM_DATABASE=Motorola Mobility, LLC. OUI:4403A7* ID_OUI_FROM_DATABASE=Cisco @@ -54941,7 +54977,7 @@ OUI:448312* ID_OUI_FROM_DATABASE=Star-Net OUI:448500* - ID_OUI_FROM_DATABASE=Intel Corporation + ID_OUI_FROM_DATABASE=Intel Corporate OUI:4487FC* ID_OUI_FROM_DATABASE=ELITEGROUP COMPUTER SYSTEM CO., LTD. @@ -55289,7 +55325,7 @@ OUI:4C5427* ID_OUI_FROM_DATABASE=Linepro Sp. z o.o. OUI:4C5499* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd + ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd OUI:4C5585* ID_OUI_FROM_DATABASE=Hamilton Systems @@ -55669,6 +55705,9 @@ OUI:542696* OUI:542A9C* ID_OUI_FROM_DATABASE=LSY Defense, LLC. +OUI:542CEA* + ID_OUI_FROM_DATABASE=PROTECTRON + OUI:543131* ID_OUI_FROM_DATABASE=Raster Vision Ltd @@ -55760,7 +55799,7 @@ OUI:54A04F* ID_OUI_FROM_DATABASE=t-mac Technologies Ltd OUI:54A51B* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd + ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd OUI:54A619* ID_OUI_FROM_DATABASE=Alcatel-Lucent Shanghai Bell Co., Ltd @@ -56084,7 +56123,7 @@ OUI:5C4A26* ID_OUI_FROM_DATABASE=Enguity Technology Corp OUI:5C4CA9* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd + ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd OUI:5C5015* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -56642,7 +56681,7 @@ OUI:64808B* ID_OUI_FROM_DATABASE=VG Controls, Inc. OUI:648099* - ID_OUI_FROM_DATABASE=Intel Corporation + ID_OUI_FROM_DATABASE=Intel Corporate OUI:648125* ID_OUI_FROM_DATABASE=Alphatron Marine BV @@ -56792,7 +56831,7 @@ OUI:64FC8C* ID_OUI_FROM_DATABASE=Zonar Systems OUI:6805CA* - ID_OUI_FROM_DATABASE=Intel Corporation + ID_OUI_FROM_DATABASE=Intel Corporate OUI:680927* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -57251,7 +57290,7 @@ OUI:701124* ID_OUI_FROM_DATABASE=Apple OUI:701404* - ID_OUI_FROM_DATABASE=Limited Liability Company "Research Center "Bresler" + ID_OUI_FROM_DATABASE=Limited Liability Company OUI:701A04* ID_OUI_FROM_DATABASE=Liteon Tech Corp. @@ -57418,6 +57457,9 @@ OUI:70B035* OUI:70B08C* ID_OUI_FROM_DATABASE=Shenou Communication Equipment Co.,Ltd +OUI:70B14E* + ID_OUI_FROM_DATABASE=Pace plc + OUI:70B265* ID_OUI_FROM_DATABASE=Hiltron s.r.l. @@ -57457,6 +57499,9 @@ OUI:70DDA1* OUI:70DEE2* ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:70E027* + ID_OUI_FROM_DATABASE=HONGYU COMMUNICATION TECHNOLOGY LIMITED + OUI:70E139* ID_OUI_FROM_DATABASE=3view Ltd @@ -57605,7 +57650,7 @@ OUI:7493A4* ID_OUI_FROM_DATABASE=Zebra Technologies Corp. OUI:74943D* - ID_OUI_FROM_DATABASE=Hemisphere GPS + ID_OUI_FROM_DATABASE=AgJunction OUI:749975* ID_OUI_FROM_DATABASE=IBM Corporation @@ -57637,6 +57682,9 @@ OUI:74BFA1* OUI:74C99A* ID_OUI_FROM_DATABASE=Ericsson AB +OUI:74CA25* + ID_OUI_FROM_DATABASE=Calxeda, Inc. + OUI:74CD0C* ID_OUI_FROM_DATABASE=Smith Myers Communications Ltd. @@ -58403,7 +58451,7 @@ OUI:80946C* ID_OUI_FROM_DATABASE=TOKYO RADAR CORPORATION OUI:8096B1* - ID_OUI_FROM_DATABASE=Motorola Mobility + ID_OUI_FROM_DATABASE=Motorola Mobility, LLC. OUI:80971B* ID_OUI_FROM_DATABASE=Altenergy Power System,Inc. @@ -58622,7 +58670,7 @@ OUI:84A6C8* ID_OUI_FROM_DATABASE=Intel Corporate OUI:84A8E4* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd + ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd OUI:84A991* ID_OUI_FROM_DATABASE=Cyber Trans Japan Co.,Ltd. @@ -58687,6 +58735,9 @@ OUI:84F64C* OUI:84FCFE* ID_OUI_FROM_DATABASE=Apple +OUI:880355* + ID_OUI_FROM_DATABASE=Arcadyan Technology Corp. + OUI:880905* ID_OUI_FROM_DATABASE=MTMCommunications @@ -59045,7 +59096,7 @@ OUI:8CB864* ID_OUI_FROM_DATABASE=AcSiP Technology Corp. OUI:8CC121* - ID_OUI_FROM_DATABASE=Panasonic AVC Networks Company + ID_OUI_FROM_DATABASE=Panasonic Corporation AVC Networks Company OUI:8CC5E1* ID_OUI_FROM_DATABASE=ShenZhen Konka Telecommunication Technology Co.,Ltd @@ -59327,10 +59378,10 @@ OUI:90DA4E* ID_OUI_FROM_DATABASE=AVANU OUI:90E0F0* - ID_OUI_FROM_DATABASE=IEEE P1722 + ID_OUI_FROM_DATABASE=Harman International OUI:90E2BA* - ID_OUI_FROM_DATABASE=Intel Corporation + ID_OUI_FROM_DATABASE=Intel Corporate OUI:90E6BA* ID_OUI_FROM_DATABASE=ASUSTek COMPUTER INC. @@ -59623,6 +59674,9 @@ OUI:983571* OUI:9835B8* ID_OUI_FROM_DATABASE=Assembled Products Corporation +OUI:983B16* + ID_OUI_FROM_DATABASE=Ampak + OUI:983F9F* ID_OUI_FROM_DATABASE=China SSJ (Suzhou) Network Technology Inc. @@ -59636,7 +59690,7 @@ OUI:984A47* ID_OUI_FROM_DATABASE=CHG Hospital Beds OUI:984B4A* - ID_OUI_FROM_DATABASE=Motorola Mobility Inc. + ID_OUI_FROM_DATABASE=Motorola Mobility, LLC. OUI:984BE1* ID_OUI_FROM_DATABASE=Hewlett-Packard Company @@ -60047,7 +60101,7 @@ OUI:A02EF3* ID_OUI_FROM_DATABASE=United Integrated Services Co., Led. OUI:A0369F* - ID_OUI_FROM_DATABASE=Intel Corporation + ID_OUI_FROM_DATABASE=Intel Corporate OUI:A036F0* ID_OUI_FROM_DATABASE=Comprehensive Power @@ -60166,6 +60220,9 @@ OUI:A098ED* OUI:A09A5A* ID_OUI_FROM_DATABASE=Time Domain +OUI:A09BBD* + ID_OUI_FROM_DATABASE=Total Aviation Solutions Pty Ltd + OUI:A0A130* ID_OUI_FROM_DATABASE=DLI Taiwan Branch office @@ -60175,6 +60232,9 @@ OUI:A0A763* OUI:A0AAFD* ID_OUI_FROM_DATABASE=EraThink Technologies Corp. +OUI:A0B100* + ID_OUI_FROM_DATABASE=ShenZhen Cando Electronics Co.,Ltd + OUI:A0B3CC* ID_OUI_FROM_DATABASE=Hewlett Packard @@ -60490,6 +60550,9 @@ OUI:A4F3C1* OUI:A4F7D0* ID_OUI_FROM_DATABASE=LAN Accessories Co., Ltd. +OUI:A4FCCE* + ID_OUI_FROM_DATABASE=Security Expert Ltd. + OUI:A80180* ID_OUI_FROM_DATABASE=IMAGO Technologies GmbH @@ -60833,7 +60896,7 @@ OUI:AC8317* ID_OUI_FROM_DATABASE=Shenzhen Furtunetel Communication Co., Ltd OUI:AC83F0* - ID_OUI_FROM_DATABASE=Magenta Video Networks + ID_OUI_FROM_DATABASE=ImmediaTV Corporation OUI:AC8674* ID_OUI_FROM_DATABASE=Open Mesh, Inc. @@ -61213,6 +61276,9 @@ OUI:B42CBE* OUI:B431B8* ID_OUI_FROM_DATABASE=Aviwest +OUI:B4346C* + ID_OUI_FROM_DATABASE=MATSUNICHI DIGITAL TECHNOLOGY (HONG KONG) LIMITED + OUI:B43564* ID_OUI_FROM_DATABASE=Fujian Tian Cheng Electron Science & Technical Development Co.,Ltd. @@ -61355,7 +61421,7 @@ OUI:B4DFFA* ID_OUI_FROM_DATABASE=Litemax Electronics Inc. OUI:B4E0CD* - ID_OUI_FROM_DATABASE=IO Turbine, Inc. + ID_OUI_FROM_DATABASE=Fusion-io, Inc OUI:B4E9B0* ID_OUI_FROM_DATABASE=Cisco @@ -61411,6 +61477,9 @@ OUI:B820E7* OUI:B82410* ID_OUI_FROM_DATABASE=Magneti Marelli Slovakia s.r.o. +OUI:B8241A* + ID_OUI_FROM_DATABASE=SWEDA INFORMATICA LTDA + OUI:B826D4* ID_OUI_FROM_DATABASE=Furukawa Industrial S.A. Produtos Elétricos @@ -61769,7 +61838,7 @@ OUI:BC764E* ID_OUI_FROM_DATABASE=Rackspace US, Inc. OUI:BC7670* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd + ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd OUI:BC7737* ID_OUI_FROM_DATABASE=Intel Corporate @@ -61963,6 +62032,9 @@ OUI:C0626B* OUI:C06C0F* ID_OUI_FROM_DATABASE=Dobbs Stanford +OUI:C06C6D* + ID_OUI_FROM_DATABASE=MagneMotion, Inc. + OUI:C07E40* ID_OUI_FROM_DATABASE=SHENZHEN XDK COMMUNICATION EQUIPMENT CO.,LTD @@ -62216,7 +62288,7 @@ OUI:C4823F* ID_OUI_FROM_DATABASE=Fujian Newland Auto-ID Tech. Co,.Ltd. OUI:C48508* - ID_OUI_FROM_DATABASE=Intel Corporation + ID_OUI_FROM_DATABASE=Intel Corporate OUI:C488E5* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -62462,7 +62534,7 @@ OUI:C8A729* ID_OUI_FROM_DATABASE=SYStronics Co., Ltd. OUI:C8AA21* - ID_OUI_FROM_DATABASE=Motorola Mobility, Inc. + ID_OUI_FROM_DATABASE=Motorola Mobility, LLC. OUI:C8AE9C* ID_OUI_FROM_DATABASE=Shanghai TYD Elecronic Technology Co. Ltd @@ -62564,7 +62636,7 @@ OUI:C8FE30* ID_OUI_FROM_DATABASE=Bejing DAYO Mobile Communication Technology Ltd. OUI:CC0080* - ID_OUI_FROM_DATABASE=TRUST SYSTEM Co., + ID_OUI_FROM_DATABASE=BETTINI SRL OUI:CC047C* ID_OUI_FROM_DATABASE=G-WAY Microwave @@ -62702,7 +62774,7 @@ OUI:CC944A* ID_OUI_FROM_DATABASE=Pfeiffer Vacuum GmbH OUI:CC96A0* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd + ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd OUI:CC9E00* ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. @@ -63161,7 +63233,7 @@ OUI:D479C3* ID_OUI_FROM_DATABASE=Cameronet GmbH & Co. KG OUI:D47B75* - ID_OUI_FROM_DATABASE=HARTING Electronics GmbH & Co. KG + ID_OUI_FROM_DATABASE=HARTING Electronics GmbH OUI:D4823E* ID_OUI_FROM_DATABASE=Argosy Technologies, Ltd. @@ -63374,7 +63446,7 @@ OUI:D8337F* ID_OUI_FROM_DATABASE=Office FA.com Co.,Ltd. OUI:D842AC* - ID_OUI_FROM_DATABASE=FreeComm Data Communication Co.,Ltd. + ID_OUI_FROM_DATABASE=Shanghai Feixun Communication Co.,Ltd. OUI:D84606* ID_OUI_FROM_DATABASE=Silicon Valley Global Marketing @@ -63581,7 +63653,7 @@ OUI:DC2B61* ID_OUI_FROM_DATABASE=Apple, Inc. OUI:DC2B66* - ID_OUI_FROM_DATABASE=Infoblock + ID_OUI_FROM_DATABASE=InfoBLOCK S.A. de C.V. OUI:DC2BCA* ID_OUI_FROM_DATABASE=Zera GmbH @@ -63593,7 +63665,7 @@ OUI:DC2E6A* ID_OUI_FROM_DATABASE=HCT. Co., Ltd. OUI:DC309C* - ID_OUI_FROM_DATABASE=SAY Systems Limited + ID_OUI_FROM_DATABASE=Heyrex Limited OUI:DC3350* ID_OUI_FROM_DATABASE=TechSAT GmbH @@ -63835,6 +63907,9 @@ OUI:E0757D* OUI:E07C62* ID_OUI_FROM_DATABASE=Whistle Labs, Inc. +OUI:E07F88* + ID_OUI_FROM_DATABASE=EVIDENCE Network SIA + OUI:E08177* ID_OUI_FROM_DATABASE=GreenBytes, Inc. @@ -63881,7 +63956,7 @@ OUI:E0ABFE* ID_OUI_FROM_DATABASE=Orb Networks, Inc. OUI:E0AE5E* - ID_OUI_FROM_DATABASE=ALPS Electric Co,. Ltd. + ID_OUI_FROM_DATABASE=ALPS Co,. Ltd. OUI:E0AEED* ID_OUI_FROM_DATABASE=LOENK @@ -64255,6 +64330,9 @@ OUI:E840F2* OUI:E843B6* ID_OUI_FROM_DATABASE=QNAP Systems, Inc. +OUI:E8481F* + ID_OUI_FROM_DATABASE=Advanced Automotive Antennas + OUI:E84E06* ID_OUI_FROM_DATABASE=EDUP INTERNATIONAL (HK) CO., LTD @@ -64303,6 +64381,9 @@ OUI:E878A1* OUI:E87AF3* ID_OUI_FROM_DATABASE=S5 Tech S.r.l. +OUI:E880D8* + ID_OUI_FROM_DATABASE=GNTEK Electronics Co.,Ltd. + OUI:E8892C* ID_OUI_FROM_DATABASE=ARRIS Group, Inc. @@ -65039,7 +65120,7 @@ OUI:F4C6D7* ID_OUI_FROM_DATABASE=blackned GmbH OUI:F4C714* - ID_OUI_FROM_DATABASE=Huawei Device Co., Ltd + ID_OUI_FROM_DATABASE=Shenzhen Huawei Communication Technologies Co., Ltd OUI:F4C795* ID_OUI_FROM_DATABASE=WEY Elektronik AG @@ -65285,7 +65366,7 @@ OUI:F8E4FB* ID_OUI_FROM_DATABASE=Actiontec Electronics, Inc OUI:F8E7B5* - ID_OUI_FROM_DATABASE=µTech Engenharia e Automação LTDA + ID_OUI_FROM_DATABASE=µTech Tecnologia LTDA OUI:F8E968* ID_OUI_FROM_DATABASE=Egker Kft. @@ -65374,6 +65455,9 @@ OUI:FC2F40* OUI:FC3598* ID_OUI_FROM_DATABASE=Favite Inc. +OUI:FC35E6* + ID_OUI_FROM_DATABASE=Visteon corp + OUI:FC4463* ID_OUI_FROM_DATABASE=Universal Audio diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb index add5156be6..a0ba702e59 100644 --- a/hwdb/20-pci-vendor-model.hwdb +++ b/hwdb/20-pci-vendor-model.hwdb @@ -1623,7 +1623,7 @@ pci:v00001002d00003150sv0000103Csd00000934* ID_MODEL_FROM_DATABASE=nx8220 pci:v00001002d00003151* - ID_MODEL_FROM_DATABASE=RV380 [FireMV 2400] + ID_MODEL_FROM_DATABASE=RV380 GL [FireMV 2400] pci:v00001002d00003152* ID_MODEL_FROM_DATABASE=RV370/M22 [Mobility Radeon X300] @@ -1632,16 +1632,16 @@ pci:v00001002d00003154* ID_MODEL_FROM_DATABASE=RV380/M24 GL [Mobility FireGL V3200] pci:v00001002d00003155* - ID_MODEL_FROM_DATABASE=RV380 [FireMV 2400] + ID_MODEL_FROM_DATABASE=RV380 GL [FireMV 2400] pci:v00001002d00003171* - ID_MODEL_FROM_DATABASE=RV380 [FireMV 2400] (Secondary) + ID_MODEL_FROM_DATABASE=RV380 GL [FireMV 2400] (Secondary) pci:v00001002d00003E50* ID_MODEL_FROM_DATABASE=RV380 [Radeon X600] pci:v00001002d00003E54* - ID_MODEL_FROM_DATABASE=RV380 [FireGL V3200] + ID_MODEL_FROM_DATABASE=RV380 GL [FireGL V3200] pci:v00001002d00003E70* ID_MODEL_FROM_DATABASE=RV380 [Radeon X600] (Secondary) @@ -1653,16 +1653,16 @@ pci:v00001002d00004137* ID_MODEL_FROM_DATABASE=RS200 [Radeon IGP 340] pci:v00001002d00004144* - ID_MODEL_FROM_DATABASE=R300 AD [Radeon 9500] + ID_MODEL_FROM_DATABASE=R300 [Radeon 9500] pci:v00001002d00004146* - ID_MODEL_FROM_DATABASE=R300 AF [Radeon 9700 PRO] + ID_MODEL_FROM_DATABASE=R300 [Radeon 9700 PRO] pci:v00001002d00004147* - ID_MODEL_FROM_DATABASE=R300 AG [FireGL Z1] + ID_MODEL_FROM_DATABASE=R300 GL [FireGL Z1] pci:v00001002d00004148* - ID_MODEL_FROM_DATABASE=R350 AH [Radeon 9800/9800 SE] + ID_MODEL_FROM_DATABASE=R350 [Radeon 9800/9800 SE] pci:v00001002d00004150* ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550/9600/X1050 Series] @@ -1728,7 +1728,7 @@ pci:v00001002d00004152sv00001787sd00004002* ID_MODEL_FROM_DATABASE=Radeon 9600 XT pci:v00001002d00004153* - ID_MODEL_FROM_DATABASE=RV350 AS [Radeon 9550] + ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550] pci:v00001002d00004153sv00001043sd0000010C* ID_MODEL_FROM_DATABASE=A9550GE/TD @@ -1737,25 +1737,25 @@ pci:v00001002d00004153sv00001462sd0000932C* ID_MODEL_FROM_DATABASE=RX9550SE-TD128 (MS-8932) pci:v00001002d00004154* - ID_MODEL_FROM_DATABASE=RV350 AT [FireGL T2] + ID_MODEL_FROM_DATABASE=RV350 GL [FireGL T2] pci:v00001002d00004155* ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600] pci:v00001002d00004157* - ID_MODEL_FROM_DATABASE=RV350 AW [FireGL T2] + ID_MODEL_FROM_DATABASE=RV350 GL [FireGL T2] pci:v00001002d00004158* ID_MODEL_FROM_DATABASE=68800AX [Mach32] pci:v00001002d00004164* - ID_MODEL_FROM_DATABASE=R300 AD [Radeon 9500 PRO] (Secondary) + ID_MODEL_FROM_DATABASE=R300 [Radeon 9500 PRO] (Secondary) pci:v00001002d00004165* - ID_MODEL_FROM_DATABASE=R300 AE [Radeon 9700 PRO] (Secondary) + ID_MODEL_FROM_DATABASE=R300 [Radeon 9700 PRO] (Secondary) pci:v00001002d00004166* - ID_MODEL_FROM_DATABASE=R300 AF [Radeon 9700 PRO] (Secondary) + ID_MODEL_FROM_DATABASE=R300 [Radeon 9700 PRO] (Secondary) pci:v00001002d00004168* ID_MODEL_FROM_DATABASE=RV350 [Radeon 9800 SE] (Secondary) @@ -1785,7 +1785,7 @@ pci:v00001002d00004170sv000018BCsd00000100* ID_MODEL_FROM_DATABASE=GC-R9600PRO (Secondary) pci:v00001002d00004171* - ID_MODEL_FROM_DATABASE=RV350 AQ [Radeon 9600] (Secondary) + ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600] (Secondary) pci:v00001002d00004171sv00001043sd0000C005* ID_MODEL_FROM_DATABASE=A9600SE (Secondary) @@ -1812,7 +1812,7 @@ pci:v00001002d00004172sv00001787sd00004003* ID_MODEL_FROM_DATABASE=Radeon 9600 XT (Secondary) pci:v00001002d00004173* - ID_MODEL_FROM_DATABASE=RV350 AS [Radeon 9550] (Secondary) + ID_MODEL_FROM_DATABASE=RV350 [Radeon 9550] (Secondary) pci:v00001002d00004173sv00001043sd0000010D* ID_MODEL_FROM_DATABASE=A9550GE/TD (Secondary) @@ -2718,7 +2718,7 @@ pci:v00001002d00004A4B* ID_MODEL_FROM_DATABASE=R420 [Radeon X800 AGP Series] pci:v00001002d00004A4D* - ID_MODEL_FROM_DATABASE=R420 JM [FireGL X3] + ID_MODEL_FROM_DATABASE=R420 GL [FireGL X3-256] pci:v00001002d00004A4E* ID_MODEL_FROM_DATABASE=RV420/M18 [Mobility Radeon 9800] @@ -2889,7 +2889,7 @@ pci:v00001002d00004C57sv0000144Dsd0000C006* ID_MODEL_FROM_DATABASE=Radeon Mobility M7 LW in vpr Matrix 170B4 pci:v00001002d00004C58* - ID_MODEL_FROM_DATABASE=RV200/M7 [Mobility FireGL 7800] + ID_MODEL_FROM_DATABASE=RV200/M7 GL [Mobility FireGL 7800] pci:v00001002d00004C59* ID_MODEL_FROM_DATABASE=RV100/M6 [Rage/Radeon Mobility Series] @@ -2916,7 +2916,7 @@ pci:v00001002d00004C59sv00001509sd00001930* ID_MODEL_FROM_DATABASE=Medion MD9703 pci:v00001002d00004C66* - ID_MODEL_FROM_DATABASE=RV250/M9 [Mobility FireGL 9000/Radeon 9000] + ID_MODEL_FROM_DATABASE=RV250/M9 GL [Mobility FireGL 9000/Radeon 9000] pci:v00001002d00004C66sv00001014sd0000054D* ID_MODEL_FROM_DATABASE=ThinkPad T41 @@ -2925,7 +2925,7 @@ pci:v00001002d00004C6E* ID_MODEL_FROM_DATABASE=RV250/M9 [Mobility Radeon 9000] (Secondary) pci:v00001002d00004D46* - ID_MODEL_FROM_DATABASE=Mobility 128 AGP 4X/Mobility M4 + ID_MODEL_FROM_DATABASE=Rage Mobility 128 AGP 4X/Mobility M4 pci:v00001002d00004D52* ID_MODEL_FROM_DATABASE=Theater 550 PRO PCI [ATI TV Wonder 550] @@ -2952,10 +2952,10 @@ pci:v00001002d00004E45sv00001681sd00000002* ID_MODEL_FROM_DATABASE=Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] pci:v00001002d00004E46* - ID_MODEL_FROM_DATABASE=R300 NF [Radeon 9600 TX] + ID_MODEL_FROM_DATABASE=R300 [Radeon 9600 TX] pci:v00001002d00004E47* - ID_MODEL_FROM_DATABASE=R300 [FireGL X1] + ID_MODEL_FROM_DATABASE=R300 GL [FireGL X1] pci:v00001002d00004E48* ID_MODEL_FROM_DATABASE=R350 [Radeon 9800 Series] @@ -2970,7 +2970,7 @@ pci:v00001002d00004E4Asv00001002sd00004E4A* ID_MODEL_FROM_DATABASE=R360 [Radeon 9800 XT] pci:v00001002d00004E4B* - ID_MODEL_FROM_DATABASE=R350 [FireGL X2 AGP Pro] + ID_MODEL_FROM_DATABASE=R350 GL [FireGL X2 AGP Pro] pci:v00001002d00004E50* ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility Radeon 9600 PRO Turbo] @@ -3003,7 +3003,7 @@ pci:v00001002d00004E52sv0000144Dsd0000C00C* ID_MODEL_FROM_DATABASE=P35 notebook pci:v00001002d00004E54* - ID_MODEL_FROM_DATABASE=RV350/M10 [Mobility FireGL T2] + ID_MODEL_FROM_DATABASE=RV350/M10 GL [Mobility FireGL T2] pci:v00001002d00004E56* ID_MODEL_FROM_DATABASE=RV360/M12 [Mobility Radeon 9550] @@ -3021,10 +3021,10 @@ pci:v00001002d00004E65sv00001681sd00000003* ID_MODEL_FROM_DATABASE=Hercules 3D Prophet 9500 PRO [Radeon 9500 Pro] (Secondary) pci:v00001002d00004E66* - ID_MODEL_FROM_DATABASE=RV350 NF [Radeon 9600] (Secondary) + ID_MODEL_FROM_DATABASE=RV350 [Radeon 9600] (Secondary) pci:v00001002d00004E67* - ID_MODEL_FROM_DATABASE=R300 [FireGL X1] (Secondary) + ID_MODEL_FROM_DATABASE=R300 GL [FireGL X1] (Secondary) pci:v00001002d00004E68* ID_MODEL_FROM_DATABASE=R350 [Radeon 9800 PRO] (Secondary) @@ -3033,7 +3033,7 @@ pci:v00001002d00004E69* ID_MODEL_FROM_DATABASE=R350 [Radeon 9800] (Secondary) pci:v00001002d00004E6A* - ID_MODEL_FROM_DATABASE=RV350 NJ [Radeon 9800 XT] (Secondary) + ID_MODEL_FROM_DATABASE=RV350 [Radeon 9800 XT] (Secondary) pci:v00001002d00004E6Asv00001002sd00004E6A* ID_MODEL_FROM_DATABASE=R360 [Radeon 9800 XT] (Secondary) @@ -3060,7 +3060,7 @@ pci:v00001002d00005044sv00001002sd00000029* ID_MODEL_FROM_DATABASE=Rage 128 AIW pci:v00001002d00005046* - ID_MODEL_FROM_DATABASE=Rage 128 PF/PRO AGP 4x TMDS + ID_MODEL_FROM_DATABASE=Rage 128 PRO AGP 4x TMDS pci:v00001002d00005046sv00001002sd00000004* ID_MODEL_FROM_DATABASE=Rage Fury Pro @@ -3099,7 +3099,7 @@ pci:v00001002d00005052* ID_MODEL_FROM_DATABASE=Rage 128 PRO AGP 4X TMDS pci:v00001002d00005144* - ID_MODEL_FROM_DATABASE=R100 QD [Radeon 7200] + ID_MODEL_FROM_DATABASE=R100 [Radeon 7200 / All-In-Wonder Radeon] pci:v00001002d00005144sv00001002sd00000008* ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon VE @@ -3141,7 +3141,7 @@ pci:v00001002d00005144sv00001002sd0000053A* ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon pci:v00001002d00005148* - ID_MODEL_FROM_DATABASE=R200 QH [Radeon 8500] + ID_MODEL_FROM_DATABASE=R200 GL [FireGL 8800] pci:v00001002d00005148sv00001002sd0000010A* ID_MODEL_FROM_DATABASE=FireGL 8800 64Mb @@ -3156,7 +3156,7 @@ pci:v00001002d00005148sv00001002sd00000172* ID_MODEL_FROM_DATABASE=FireGL 8700 64Mb pci:v00001002d0000514C* - ID_MODEL_FROM_DATABASE=R200 QL [Radeon 8500/8500 LE] + ID_MODEL_FROM_DATABASE=R200 [Radeon 8500/8500 LE] pci:v00001002d0000514Csv00001002sd0000003A* ID_MODEL_FROM_DATABASE=Radeon R200 QL [Radeon 8500 LE] @@ -3177,10 +3177,10 @@ pci:v00001002d0000514Csv00001787sd00000F08* ID_MODEL_FROM_DATABASE=Radeon R200 QL [PowerMagic Radeon 8500] pci:v00001002d0000514D* - ID_MODEL_FROM_DATABASE=R200 QM [Radeon 9100] + ID_MODEL_FROM_DATABASE=R200 [Radeon 9100] pci:v00001002d00005157* - ID_MODEL_FROM_DATABASE=RV200 QW [Radeon 7500] + ID_MODEL_FROM_DATABASE=RV200 [Radeon 7500/7500 LE] pci:v00001002d00005157sv00001002sd0000013A* ID_MODEL_FROM_DATABASE=Radeon 7500 @@ -3216,7 +3216,7 @@ pci:v00001002d00005157sv000017AFsd00000202* ID_MODEL_FROM_DATABASE=RV200 QW [Excalibur Radeon 7500LE] pci:v00001002d00005159* - ID_MODEL_FROM_DATABASE=RV100 QY [Radeon 7000/VE] + ID_MODEL_FROM_DATABASE=RV100 [Radeon 7000 / Radeon VE] pci:v00001002d00005159sv00001002sd0000000A* ID_MODEL_FROM_DATABASE=Radeon 7000/Radeon VE @@ -3459,13 +3459,13 @@ pci:v00001002d00005464* ID_MODEL_FROM_DATABASE=RV370/M22 GL [Mobility FireGL V3100] pci:v00001002d00005549* - ID_MODEL_FROM_DATABASE=R423 UI [Radeon X800 GTO] + ID_MODEL_FROM_DATABASE=R423 [Radeon X800 GTO] pci:v00001002d0000554A* ID_MODEL_FROM_DATABASE=R423 [Radeon X800 XT Platinum Edition] pci:v00001002d0000554B* - ID_MODEL_FROM_DATABASE=R423 UK [Radeon X800 GT] + ID_MODEL_FROM_DATABASE=R423 [Radeon X800 GT/SE] pci:v00001002d0000554Bsv00001002sd00000302* ID_MODEL_FROM_DATABASE=Radeon X800 SE @@ -3486,13 +3486,13 @@ pci:v00001002d0000554F* ID_MODEL_FROM_DATABASE=R430 [Radeon X800] pci:v00001002d00005550* - ID_MODEL_FROM_DATABASE=R423 [FireGL V7100] + ID_MODEL_FROM_DATABASE=R423 GL [FireGL V7100] pci:v00001002d00005551* - ID_MODEL_FROM_DATABASE=R423 [FireGL V5100] + ID_MODEL_FROM_DATABASE=R423 GL [FireGL V5100] pci:v00001002d00005569* - ID_MODEL_FROM_DATABASE=R423 UI [Radeon X800 PRO] (Secondary) + ID_MODEL_FROM_DATABASE=R423 [Radeon X800 PRO] (Secondary) pci:v00001002d0000556B* ID_MODEL_FROM_DATABASE=R423 [Radeon X800 GT] (Secondary) @@ -3510,7 +3510,7 @@ pci:v00001002d00005571* ID_MODEL_FROM_DATABASE=R423 GL [FireGL V5100] (Secondary) pci:v00001002d0000564B* - ID_MODEL_FROM_DATABASE=RV410/M26 [Mobility FireGL V5000] + ID_MODEL_FROM_DATABASE=RV410/M26 GL [Mobility FireGL V5000] pci:v00001002d0000564F* ID_MODEL_FROM_DATABASE=RV410/M26 [Mobility Radeon X700 XL] @@ -3552,7 +3552,7 @@ pci:v00001002d00005832* ID_MODEL_FROM_DATABASE=RS300 Host Bridge pci:v00001002d00005833* - ID_MODEL_FROM_DATABASE=Radeon 9100 IGP Host Bridge + ID_MODEL_FROM_DATABASE=RS300 Host Bridge pci:v00001002d00005834* ID_MODEL_FROM_DATABASE=RS300 [Radeon 9100 IGP] @@ -3561,7 +3561,7 @@ pci:v00001002d00005835* ID_MODEL_FROM_DATABASE=RS300M [Mobility Radeon 9100 IGP] pci:v00001002d00005838* - ID_MODEL_FROM_DATABASE=Radeon 9100 IGP AGP Bridge + ID_MODEL_FROM_DATABASE=RS300 AGP Bridge pci:v00001002d00005854* ID_MODEL_FROM_DATABASE=RS480 [Radeon Xpress 200 Series] (Secondary) @@ -3594,7 +3594,7 @@ pci:v00001002d00005944* ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 SE PCI] pci:v00001002d00005950* - ID_MODEL_FROM_DATABASE=RS480 Host Bridge + ID_MODEL_FROM_DATABASE=RS480/RS482/RS485 Host Bridge pci:v00001002d00005950sv00001025sd00000080* ID_MODEL_FROM_DATABASE=Aspire 5024WLMMi @@ -3615,10 +3615,10 @@ pci:v00001002d00005950sv00001462sd00007217* ID_MODEL_FROM_DATABASE=Aspire L250 pci:v00001002d00005951* - ID_MODEL_FROM_DATABASE=Radeon Xpress 200 (RS480/RS482/RX480/RX482) Chipset - Host bridge + ID_MODEL_FROM_DATABASE=RX480/RX482 Host Bridge pci:v00001002d00005952* - ID_MODEL_FROM_DATABASE=RD580 [CrossFire Xpress 3200] Chipset Host Bridge + ID_MODEL_FROM_DATABASE=RD580 Host Bridge pci:v00001002d00005954* ID_MODEL_FROM_DATABASE=RS480 [Radeon Xpress 200 Series] @@ -3639,16 +3639,16 @@ pci:v00001002d00005955sv00001462sd00000131* ID_MODEL_FROM_DATABASE=MS-1013 Notebook pci:v00001002d00005956* - ID_MODEL_FROM_DATABASE=RD790 Northbridge only dual slot PCI-e_GFX and HT3 K8 part + ID_MODEL_FROM_DATABASE=RD790 Host Bridge pci:v00001002d00005957* - ID_MODEL_FROM_DATABASE=RX780/RX790 Chipset Host Bridge + ID_MODEL_FROM_DATABASE=RX780/RX790 Host Bridge pci:v00001002d00005957sv00001849sd00005957* ID_MODEL_FROM_DATABASE=A770CrossFire Motherboard pci:v00001002d00005958* - ID_MODEL_FROM_DATABASE=RD780 Northbridge only dual slot PCI-e_GFX and HT1 K8 part + ID_MODEL_FROM_DATABASE=RD780 Host Bridge pci:v00001002d00005960* ID_MODEL_FROM_DATABASE=RV280 [Radeon 9200 PRO] @@ -3726,10 +3726,10 @@ pci:v00001002d00005964sv000018BCsd00000173* ID_MODEL_FROM_DATABASE=GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] pci:v00001002d00005965* - ID_MODEL_FROM_DATABASE=RV280 [FireMV 2200 PCI] + ID_MODEL_FROM_DATABASE=RV280 GL [FireMV 2200 PCI] pci:v00001002d00005974* - ID_MODEL_FROM_DATABASE=RS482 [Radeon Xpress 200/1150] + ID_MODEL_FROM_DATABASE=RS482/RS485 [Radeon Xpress 1100/1150] pci:v00001002d00005974sv0000103Csd0000280A* ID_MODEL_FROM_DATABASE=DC5750 Microtower @@ -3912,10 +3912,10 @@ pci:v00001002d00005B63* ID_MODEL_FROM_DATABASE=RV370 [Radeon X300/X550/X1050 Series] pci:v00001002d00005B64* - ID_MODEL_FROM_DATABASE=RV370 [FireGL V3100] + ID_MODEL_FROM_DATABASE=RV370 GL [FireGL V3100] pci:v00001002d00005B65* - ID_MODEL_FROM_DATABASE=RV370 [FireMV 2200] + ID_MODEL_FROM_DATABASE=RV370 GL [FireMV 2200] pci:v00001002d00005B66* ID_MODEL_FROM_DATABASE=RV370X @@ -3939,10 +3939,10 @@ pci:v00001002d00005B73* ID_MODEL_FROM_DATABASE=RV370 [Radeon X300/X550/X1050 Series] (Secondary) pci:v00001002d00005B74* - ID_MODEL_FROM_DATABASE=RV370 [FireGL V3100] (Secondary) + ID_MODEL_FROM_DATABASE=RV370 GL [FireGL V3100] (Secondary) pci:v00001002d00005B75* - ID_MODEL_FROM_DATABASE=RV370 [FireMV 2200] (Secondary) + ID_MODEL_FROM_DATABASE=RV370 GL [FireMV 2200] (Secondary) pci:v00001002d00005C61* ID_MODEL_FROM_DATABASE=RV280/M9+ [Mobility Radeon 9200 AGP] @@ -3984,13 +3984,13 @@ pci:v00001002d00005D44sv000018BCsd00000172* ID_MODEL_FROM_DATABASE=GC-R9200L(SE)-C3H [Radeon 9200 Game Buster] pci:v00001002d00005D45* - ID_MODEL_FROM_DATABASE=RV280 [FireMV 2200 PCI] (Secondary) + ID_MODEL_FROM_DATABASE=RV280 GL [FireMV 2200 PCI] (Secondary) pci:v00001002d00005D48* ID_MODEL_FROM_DATABASE=R423/M28 [Mobility Radeon X800 XT] pci:v00001002d00005D49* - ID_MODEL_FROM_DATABASE=R423/M28 [Mobility FireGL V5100] + ID_MODEL_FROM_DATABASE=R423/M28 GL [Mobility FireGL V5100] pci:v00001002d00005D4A* ID_MODEL_FROM_DATABASE=R423/M28 [Mobility Radeon X800] @@ -4005,7 +4005,7 @@ pci:v00001002d00005D4F* ID_MODEL_FROM_DATABASE=R480 [Radeon X800 GTO] pci:v00001002d00005D50* - ID_MODEL_FROM_DATABASE=R480 [FireGL V7200] + ID_MODEL_FROM_DATABASE=R480 GL [FireGL V7200] pci:v00001002d00005D52* ID_MODEL_FROM_DATABASE=R480 [Radeon X850 XT] @@ -4032,7 +4032,7 @@ pci:v00001002d00005D77* ID_MODEL_FROM_DATABASE=R423 [Radeon X800 XT] (Secondary) pci:v00001002d00005E48* - ID_MODEL_FROM_DATABASE=RV410 [FireGL V5000] + ID_MODEL_FROM_DATABASE=RV410 GL [FireGL V5000] pci:v00001002d00005E49* ID_MODEL_FROM_DATABASE=RV410 [Radeon X700 Series] @@ -4112,6 +4112,9 @@ pci:v00001002d00006631* pci:v00001002d0000665C* ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790] +pci:v00001002d0000665Csv00001787sd00002329* + ID_MODEL_FROM_DATABASE=Radeon HD 7790 TurboDuo + pci:v00001002d00006660* ID_MODEL_FROM_DATABASE=Sun [Radeon HD 8600M Series] @@ -4172,6 +4175,9 @@ pci:v00001002d00006720sv00001028sd00000490* pci:v00001002d00006720sv00001028sd000004A4* ID_MODEL_FROM_DATABASE=FirePro M8900 +pci:v00001002d00006720sv00001028sd000004BA* + ID_MODEL_FROM_DATABASE=Radeon HD 6990M + pci:v00001002d00006720sv00001028sd0000053F* ID_MODEL_FROM_DATABASE=FirePro M8900 @@ -4392,7 +4398,7 @@ pci:v00001002d0000677B* ID_MODEL_FROM_DATABASE=Caicos PRO [Radeon HD 7450] pci:v00001002d00006780* - ID_MODEL_FROM_DATABASE=Tahiti XT [FirePro W9000] + ID_MODEL_FROM_DATABASE=Tahiti XT GL [FirePro W9000] pci:v00001002d00006784* ID_MODEL_FROM_DATABASE=Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] @@ -4401,7 +4407,7 @@ pci:v00001002d00006788* ID_MODEL_FROM_DATABASE=Tahiti [ATI FirePro V (FireGL V) Graphics Adapter] pci:v00001002d0000678A* - ID_MODEL_FROM_DATABASE=Tahiti PRO [FirePro Series] + ID_MODEL_FROM_DATABASE=Tahiti PRO GL [FirePro Series] pci:v00001002d0000678Asv00001002sd0000030C* ID_MODEL_FROM_DATABASE=FirePro W8000 @@ -4509,13 +4515,13 @@ pci:v00001002d00006806* ID_MODEL_FROM_DATABASE=Pitcairn pci:v00001002d00006808* - ID_MODEL_FROM_DATABASE=Pitcairn XT [FirePro W7000] + ID_MODEL_FROM_DATABASE=Pitcairn XT GL [FirePro W7000] pci:v00001002d00006808sv00001002sd00000310* ID_MODEL_FROM_DATABASE=FirePro S7000 pci:v00001002d00006809* - ID_MODEL_FROM_DATABASE=Pitcairn LE [FirePro W5000] + ID_MODEL_FROM_DATABASE=Pitcairn LE GL [FirePro W5000] pci:v00001002d00006810* ID_MODEL_FROM_DATABASE=Pitcairn @@ -4572,7 +4578,7 @@ pci:v00001002d0000682B* ID_MODEL_FROM_DATABASE=Venus LE [Radeon HD 8800M Series] pci:v00001002d0000682D* - ID_MODEL_FROM_DATABASE=Chelsea [AMD Radeon HD 7700M Series] + ID_MODEL_FROM_DATABASE=Chelsea XT GL [FirePro M4000] pci:v00001002d0000682F* ID_MODEL_FROM_DATABASE=Chelsea LP [Radeon HD 7730M] @@ -4746,7 +4752,7 @@ pci:v00001002d000068BFsv0000174Bsd00006750* ID_MODEL_FROM_DATABASE=Radeon HD 6750 pci:v00001002d000068C0* - ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5000 Series] + ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5730 / 6570M] pci:v00001002d000068C0sv0000103Csd00001521* ID_MODEL_FROM_DATABASE=Madison XT [FirePro M5800] @@ -4761,7 +4767,7 @@ pci:v00001002d000068C0sv0000103Csd00001599* ID_MODEL_FROM_DATABASE=Mobility Radeon HD 6570 pci:v00001002d000068C1* - ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750/6550M] + ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5650/5750 / 6550M] pci:v00001002d000068C1sv00001025sd0000033D* ID_MODEL_FROM_DATABASE=Mobility Radeon HD 5650 @@ -4776,10 +4782,10 @@ pci:v00001002d000068C7* ID_MODEL_FROM_DATABASE=Madison [Mobility Radeon HD 5570/6550A] pci:v00001002d000068C8* - ID_MODEL_FROM_DATABASE=Redwood XT [FirePro V4800] + ID_MODEL_FROM_DATABASE=Redwood XT GL [FirePro V4800] pci:v00001002d000068C9* - ID_MODEL_FROM_DATABASE=Redwood PRO [FirePro V3800] + ID_MODEL_FROM_DATABASE=Redwood PRO GL [FirePro V3800] pci:v00001002d000068D8* ID_MODEL_FROM_DATABASE=Redwood XT [Radeon HD 5670] @@ -4809,7 +4815,7 @@ pci:v00001002d000068DE* ID_MODEL_FROM_DATABASE=Redwood pci:v00001002d000068E0* - ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5400 Series] + ID_MODEL_FROM_DATABASE=Park [Mobility Radeon HD 5430/5450/5470] pci:v00001002d000068E0sv0000103Csd00001486* ID_MODEL_FROM_DATABASE=TouchSmart tm2-2050er discrete GPU (Mobility Radeon HD 5450) @@ -4851,10 +4857,10 @@ pci:v00001002d000068E9* ID_MODEL_FROM_DATABASE=Cedar [ATI FirePro (FireGL) Graphics Adapter] pci:v00001002d000068F1* - ID_MODEL_FROM_DATABASE=Cedar [FirePro 2460] + ID_MODEL_FROM_DATABASE=Cedar GL [FirePro 2460] pci:v00001002d000068F2* - ID_MODEL_FROM_DATABASE=Cedar [FirePro 2270] + ID_MODEL_FROM_DATABASE=Cedar GL [FirePro 2270] pci:v00001002d000068F8* ID_MODEL_FROM_DATABASE=Cedar [Radeon HD 7300 Series] @@ -4911,10 +4917,10 @@ pci:v00001002d000068FE* ID_MODEL_FROM_DATABASE=Cedar LE pci:v00001002d0000700F* - ID_MODEL_FROM_DATABASE=PCI Bridge [IGP 320M] + ID_MODEL_FROM_DATABASE=RS100 AGP Bridge pci:v00001002d00007010* - ID_MODEL_FROM_DATABASE=PCI Bridge [IGP 340M] + ID_MODEL_FROM_DATABASE=RS200/RS250 AGP Bridge pci:v00001002d00007100* ID_MODEL_FROM_DATABASE=R520 [Radeon X1800 XT] @@ -5073,7 +5079,7 @@ pci:v00001002d00007196* ID_MODEL_FROM_DATABASE=RV516/M62-S [Mobility Radeon X1350] pci:v00001002d0000719B* - ID_MODEL_FROM_DATABASE=RV516 [FireMV 2250] + ID_MODEL_FROM_DATABASE=RV516 GL [FireMV 2250] pci:v00001002d0000719F* ID_MODEL_FROM_DATABASE=RV516 [Radeon X1550 Series] @@ -5091,7 +5097,7 @@ pci:v00001002d000071A7* ID_MODEL_FROM_DATABASE=RV516 [Radeon X1300/X1550 Series] (Secondary) pci:v00001002d000071BB* - ID_MODEL_FROM_DATABASE=RV516 [FireMV 2250] (Secondary) + ID_MODEL_FROM_DATABASE=RV516 GL [FireMV 2250] (Secondary) pci:v00001002d000071C0* ID_MODEL_FROM_DATABASE=RV530 [Radeon X1600 XT/X1650 GTO] @@ -5229,7 +5235,7 @@ pci:v00001002d0000724Bsv00001002sd00000B13* ID_MODEL_FROM_DATABASE=Radeon X1900 (Secondary) pci:v00001002d0000724E* - ID_MODEL_FROM_DATABASE=R580 [FireGL V7350] + ID_MODEL_FROM_DATABASE=R580 GL [FireGL V7350] pci:v00001002d00007269* ID_MODEL_FROM_DATABASE=R580 [Radeon X1900 XT] (Secondary) @@ -5268,7 +5274,7 @@ pci:v00001002d000072B3* ID_MODEL_FROM_DATABASE=RV560 [Radeon X1650 GT] (Secondary) pci:v00001002d00007833* - ID_MODEL_FROM_DATABASE=Radeon 9100 IGP Host Bridge + ID_MODEL_FROM_DATABASE=RS350 Host Bridge pci:v00001002d00007834* ID_MODEL_FROM_DATABASE=RS350 [Radeon 9100 PRO/XT IGP] @@ -5277,7 +5283,7 @@ pci:v00001002d00007835* ID_MODEL_FROM_DATABASE=RS350M [Mobility Radeon 9000 IGP] pci:v00001002d00007838* - ID_MODEL_FROM_DATABASE=Radeon 9100 IGP PCI/AGP Bridge + ID_MODEL_FROM_DATABASE=RS350 AGP Bridge pci:v00001002d00007910* ID_MODEL_FROM_DATABASE=RS690 Host Bridge @@ -5415,10 +5421,10 @@ pci:v00001002d00009443* ID_MODEL_FROM_DATABASE=R700 [Radeon HD 4850 X2] pci:v00001002d00009444* - ID_MODEL_FROM_DATABASE=RV770 [FirePro V8750] + ID_MODEL_FROM_DATABASE=RV770 GL [FirePro V8750] pci:v00001002d00009446* - ID_MODEL_FROM_DATABASE=RV770 [FirePro V7760] + ID_MODEL_FROM_DATABASE=RV770 GL [FirePro V7760] pci:v00001002d0000944A* ID_MODEL_FROM_DATABASE=RV770/M98L [Mobility Radeon HD 4850] @@ -5436,13 +5442,13 @@ pci:v00001002d0000944Esv0000174Bsd00003261* ID_MODEL_FROM_DATABASE=Sapphire Radeon HD 4810 pci:v00001002d00009450* - ID_MODEL_FROM_DATABASE=RV770 [FireStream 9270] + ID_MODEL_FROM_DATABASE=RV770 GL [FireStream 9270] pci:v00001002d00009452* - ID_MODEL_FROM_DATABASE=RV770 [FireStream 9250] + ID_MODEL_FROM_DATABASE=RV770 GL [FireStream 9250] pci:v00001002d00009456* - ID_MODEL_FROM_DATABASE=RV770 [FirePro V8700] + ID_MODEL_FROM_DATABASE=RV770 GL [FirePro V8700] pci:v00001002d0000945A* ID_MODEL_FROM_DATABASE=RV770/M98-XT [Mobility Radeon HD 4870] @@ -5454,7 +5460,7 @@ pci:v00001002d00009462* ID_MODEL_FROM_DATABASE=RV790 [Radeon HD 4860] pci:v00001002d0000946A* - ID_MODEL_FROM_DATABASE=RV770 [FirePro M7750] + ID_MODEL_FROM_DATABASE=RV770 GL [FirePro M7750] pci:v00001002d00009480* ID_MODEL_FROM_DATABASE=RV730/M96 [Mobility Radeon HD 4650/5165] @@ -5466,7 +5472,7 @@ pci:v00001002d00009488* ID_MODEL_FROM_DATABASE=RV730/M96-XT [Mobility Radeon HD 4670] pci:v00001002d00009489* - ID_MODEL_FROM_DATABASE=RV730/M96-XT [Mobility FireGL V5725] + ID_MODEL_FROM_DATABASE=RV730/M96 GL [Mobility FireGL V5725] pci:v00001002d00009490* ID_MODEL_FROM_DATABASE=RV730 XT [Radeon HD 4670] @@ -5493,13 +5499,13 @@ pci:v00001002d00009498* ID_MODEL_FROM_DATABASE=RV730 PRO [Radeon HD 4650] pci:v00001002d0000949C* - ID_MODEL_FROM_DATABASE=RV730 [FirePro V7750] + ID_MODEL_FROM_DATABASE=RV730 GL [FirePro V7750] pci:v00001002d0000949E* - ID_MODEL_FROM_DATABASE=RV730 [FirePro V5700] + ID_MODEL_FROM_DATABASE=RV730 GL [FirePro V5700] pci:v00001002d0000949F* - ID_MODEL_FROM_DATABASE=RV730 [FirePro V3750] + ID_MODEL_FROM_DATABASE=RV730 GL [FirePro V3750] pci:v00001002d000094A0* ID_MODEL_FROM_DATABASE=RV740/M97 [Mobility Radeon HD 4830] @@ -5616,7 +5622,7 @@ pci:v00001002d00009515* ID_MODEL_FROM_DATABASE=RV670 PRO [Radeon HD 3850 AGP] pci:v00001002d00009519* - ID_MODEL_FROM_DATABASE=RV670 [FireStream 9170] + ID_MODEL_FROM_DATABASE=RV670 GL [FireStream 9170] pci:v00001002d00009540* ID_MODEL_FROM_DATABASE=RV710 [Radeon HD 4550] @@ -5658,7 +5664,7 @@ pci:v00001002d00009555sv0000103Csd00001411* ID_MODEL_FROM_DATABASE=ProBook 4720s GPU (Mobility Radeon HD 4350) pci:v00001002d00009557* - ID_MODEL_FROM_DATABASE=RV711 [FirePro RG220] + ID_MODEL_FROM_DATABASE=RV711 GL [FirePro RG220] pci:v00001002d0000955F* ID_MODEL_FROM_DATABASE=RV710/M92 [Mobility Radeon HD 4330] @@ -5778,10 +5784,10 @@ pci:v00001002d000095C9* ID_MODEL_FROM_DATABASE=RV620 LE [Radeon HD 3450 PCI] pci:v00001002d000095CC* - ID_MODEL_FROM_DATABASE=RV620 [FirePro V3700] + ID_MODEL_FROM_DATABASE=RV620 GL [FirePro V3700] pci:v00001002d000095CF* - ID_MODEL_FROM_DATABASE=RV620 [FirePro 2260] + ID_MODEL_FROM_DATABASE=RV620 GL [FirePro 2260] pci:v00001002d0000960F* ID_MODEL_FROM_DATABASE=RS780 HDMI Audio [Radeon (HD) 3000 Series] @@ -5871,7 +5877,7 @@ pci:v00001002d00009710sv00001043sd000083A2* ID_MODEL_FROM_DATABASE=M4A785TD Motherboard pci:v00001002d00009712* - ID_MODEL_FROM_DATABASE=RS880M [Mobility Radeon HD 4200 Series] + ID_MODEL_FROM_DATABASE=RS880M [Mobility Radeon HD 4225/4250] pci:v00001002d00009713* ID_MODEL_FROM_DATABASE=RS880M [Mobility Radeon HD 4100] @@ -6168,16 +6174,16 @@ pci:v00001002d0000AC12* ID_MODEL_FROM_DATABASE=Theater HD T507 (DVB-T) TV tuner/capture device pci:v00001002d0000CAB0* - ID_MODEL_FROM_DATABASE=RS100 AGP Bridge [IGP 320M] + ID_MODEL_FROM_DATABASE=RS100 Host Bridge pci:v00001002d0000CAB2* - ID_MODEL_FROM_DATABASE=RS200/RS200M AGP Bridge [IGP 340M] + ID_MODEL_FROM_DATABASE=RS200 Host Bridge pci:v00001002d0000CAB3* - ID_MODEL_FROM_DATABASE=R200 AGP Bridge [Mobility Radeon 7000 IGP] + ID_MODEL_FROM_DATABASE=RS250 Host Bridge pci:v00001002d0000CBB2* - ID_MODEL_FROM_DATABASE=RS200/RS200M AGP Bridge [IGP 340M] + ID_MODEL_FROM_DATABASE=RS200 Host Bridge pci:v00001003* ID_VENDOR_FROM_DATABASE=ULSI Systems @@ -17450,12 +17456,6 @@ pci:v000010DEd00000047sv00001682sd00002109* pci:v000010DEd00000048* ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 XT] -pci:v000010DEd00000049* - ID_MODEL_FROM_DATABASE=NV40GL - -pci:v000010DEd0000004D* - ID_MODEL_FROM_DATABASE=NV40GL [Quadro FX 4000] - pci:v000010DEd0000004E* ID_MODEL_FROM_DATABASE=NV40GL [Quadro FX 4000] @@ -18192,10 +18192,10 @@ pci:v000010DEd000000F6sv00001682sd0000217E* ID_MODEL_FROM_DATABASE=XFX GeForce 6800 XTreme 256MB DDR3 AGP pci:v000010DEd000000F8* - ID_MODEL_FROM_DATABASE=NV45GL [Quadro FX 3400/4400] + ID_MODEL_FROM_DATABASE=NV40GL [Quadro FX 3400/4400] pci:v000010DEd000000F9* - ID_MODEL_FROM_DATABASE=NV45 [GeForce 6800 GTO] + ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 GT/GTO/Ultra] pci:v000010DEd000000F9sv000010DEsd000000F9* ID_MODEL_FROM_DATABASE=NV40 [GeForce 6800 GT] @@ -18207,7 +18207,7 @@ pci:v000010DEd000000FA* ID_MODEL_FROM_DATABASE=NV36 [GeForce PCX 5750] pci:v000010DEd000000FB* - ID_MODEL_FROM_DATABASE=NV35 [GeForce PCX 5900] + ID_MODEL_FROM_DATABASE=NV38 [GeForce PCX 5900] pci:v000010DEd000000FC* ID_MODEL_FROM_DATABASE=NV37GL [Quadro FX 330/GeForce PCX 5300] @@ -20997,7 +20997,7 @@ pci:v000010DEd000006C4* ID_MODEL_FROM_DATABASE=GF100 [GeForce GTX 465] pci:v000010DEd000006CA* - ID_MODEL_FROM_DATABASE=GF100 [GeForce GTX 480M] + ID_MODEL_FROM_DATABASE=GF100M [GeForce GTX 480M] pci:v000010DEd000006CD* ID_MODEL_FROM_DATABASE=GF100 [GeForce GTX 470] @@ -21117,7 +21117,7 @@ pci:v000010DEd000006E9sv00001043sd000019B2* ID_MODEL_FROM_DATABASE=U6V laptop pci:v000010DEd000006EA* - ID_MODEL_FROM_DATABASE=G86M [Quadro NVS 150M] + ID_MODEL_FROM_DATABASE=G98M [Quadro NVS 150M] pci:v000010DEd000006EB* ID_MODEL_FROM_DATABASE=G98M [Quadro NVS 160M] @@ -21765,22 +21765,22 @@ pci:v000010DEd00000A27* ID_MODEL_FROM_DATABASE=GT216 [GeForce 405] pci:v000010DEd00000A28* - ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 230M] + ID_MODEL_FROM_DATABASE=GT216M [GeForce GT 230M] pci:v000010DEd00000A29* - ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 330M] + ID_MODEL_FROM_DATABASE=GT216M [GeForce GT 330M] pci:v000010DEd00000A2A* - ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 230M] + ID_MODEL_FROM_DATABASE=GT216M [GeForce GT 230M] pci:v000010DEd00000A2B* - ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 330M] + ID_MODEL_FROM_DATABASE=GT216M [GeForce GT 330M] pci:v000010DEd00000A2C* - ID_MODEL_FROM_DATABASE=GT216 [NVS 5100M] + ID_MODEL_FROM_DATABASE=GT216M [NVS 5100M] pci:v000010DEd00000A2D* - ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 320M] + ID_MODEL_FROM_DATABASE=GT216M [GeForce GT 320M] pci:v000010DEd00000A30* ID_MODEL_FROM_DATABASE=GT216 [GeForce 505] @@ -21789,10 +21789,10 @@ pci:v000010DEd00000A32* ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 415] pci:v000010DEd00000A34* - ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 240M] + ID_MODEL_FROM_DATABASE=GT216M [GeForce GT 240M] pci:v000010DEd00000A35* - ID_MODEL_FROM_DATABASE=GT216 [GeForce GT 325M] + ID_MODEL_FROM_DATABASE=GT216M [GeForce GT 325M] pci:v000010DEd00000A38* ID_MODEL_FROM_DATABASE=GT216GL [Quadro 400] @@ -21831,10 +21831,10 @@ pci:v000010DEd00000A69* ID_MODEL_FROM_DATABASE=GT218M [GeForce G 105M] pci:v000010DEd00000A6A* - ID_MODEL_FROM_DATABASE=GT218 [NVS 2100M] + ID_MODEL_FROM_DATABASE=GT218M [NVS 2100M] pci:v000010DEd00000A6C* - ID_MODEL_FROM_DATABASE=GT218 [NVS 3100M] + ID_MODEL_FROM_DATABASE=GT218M [NVS 3100M] pci:v000010DEd00000A6Csv00001028sd0000040B* ID_MODEL_FROM_DATABASE=Latitude E6510 @@ -21843,28 +21843,28 @@ pci:v000010DEd00000A6Csv000017AAsd00002142* ID_MODEL_FROM_DATABASE=ThinkPad T410 pci:v000010DEd00000A6E* - ID_MODEL_FROM_DATABASE=GT218 [GeForce 305M] + ID_MODEL_FROM_DATABASE=GT218M [GeForce 305M] pci:v000010DEd00000A6F* ID_MODEL_FROM_DATABASE=GT218 [ION] pci:v000010DEd00000A70* - ID_MODEL_FROM_DATABASE=GT218 [GeForce 310M] + ID_MODEL_FROM_DATABASE=GT218M [GeForce 310M] pci:v000010DEd00000A71* - ID_MODEL_FROM_DATABASE=GT218 [GeForce 305M] + ID_MODEL_FROM_DATABASE=GT218M [GeForce 305M] pci:v000010DEd00000A72* - ID_MODEL_FROM_DATABASE=GT218 [GeForce 310M] + ID_MODEL_FROM_DATABASE=GT218M [GeForce 310M] pci:v000010DEd00000A73* - ID_MODEL_FROM_DATABASE=GT218 [GeForce 305M] + ID_MODEL_FROM_DATABASE=GT218M [GeForce 305M] pci:v000010DEd00000A74* - ID_MODEL_FROM_DATABASE=GT218 [GeForce G210M] + ID_MODEL_FROM_DATABASE=GT218M [GeForce G210M] pci:v000010DEd00000A75* - ID_MODEL_FROM_DATABASE=GT218 [GeForce 310M] + ID_MODEL_FROM_DATABASE=GT218M [GeForce 310M] pci:v000010DEd00000A76* ID_MODEL_FROM_DATABASE=GT218 [ION 2] @@ -22200,22 +22200,22 @@ pci:v000010DEd00000CA7* ID_MODEL_FROM_DATABASE=GT215 [GeForce GT 330] pci:v000010DEd00000CA8* - ID_MODEL_FROM_DATABASE=GT215 [GeForce GTS 260M] + ID_MODEL_FROM_DATABASE=GT215M [GeForce GTS 260M] pci:v000010DEd00000CA9* - ID_MODEL_FROM_DATABASE=GT215 [GeForce GTS 250M] + ID_MODEL_FROM_DATABASE=GT215M [GeForce GTS 250M] pci:v000010DEd00000CAC* ID_MODEL_FROM_DATABASE=GT215 [GeForce GT 220/315] pci:v000010DEd00000CAF* - ID_MODEL_FROM_DATABASE=GT215 [GeForce GT 335M] + ID_MODEL_FROM_DATABASE=GT215M [GeForce GT 335M] pci:v000010DEd00000CB0* - ID_MODEL_FROM_DATABASE=GT215 [GeForce GTS 350M] + ID_MODEL_FROM_DATABASE=GT215M [GeForce GTS 350M] pci:v000010DEd00000CB1* - ID_MODEL_FROM_DATABASE=GT215 [GeForce GTS 360M] + ID_MODEL_FROM_DATABASE=GT215M [GeForce GTS 360M] pci:v000010DEd00000CBC* ID_MODEL_FROM_DATABASE=GT215GLM [Quadro FX 1800M] @@ -22443,10 +22443,10 @@ pci:v000010DEd00000E24* ID_MODEL_FROM_DATABASE=GF104 [GeForce GTX 460 OEM] pci:v000010DEd00000E30* - ID_MODEL_FROM_DATABASE=GF104 [GeForce GTX 470M] + ID_MODEL_FROM_DATABASE=GF104M [GeForce GTX 470M] pci:v000010DEd00000E31* - ID_MODEL_FROM_DATABASE=GF104 [GeForce GTX 485M] + ID_MODEL_FROM_DATABASE=GF104M [GeForce GTX 485M] pci:v000010DEd00000E3A* ID_MODEL_FROM_DATABASE=GF104GLM [Quadro 3000M] @@ -47117,6 +47117,9 @@ pci:v00001C3B* pci:v00001C3Bd00000200* ID_MODEL_FROM_DATABASE=Telas2 +pci:v00001C3Bd00000300* + ID_MODEL_FROM_DATABASE=Telas 2.V + pci:v00001C44* ID_VENDOR_FROM_DATABASE=Enmotus Inc @@ -48303,7 +48306,7 @@ pci:v00005301d00000001* ID_MODEL_FROM_DATABASE=ProMotion aT3D pci:v00005333* - ID_VENDOR_FROM_DATABASE=S3 Inc. + ID_VENDOR_FROM_DATABASE=S3 Graphics Ltd. pci:v00005333d00000551* ID_MODEL_FROM_DATABASE=Plato/PX (system) @@ -48621,13 +48624,13 @@ pci:v00005333d00008C03* ID_MODEL_FROM_DATABASE=ViRGE/MX+MV pci:v00005333d00008C10* - ID_MODEL_FROM_DATABASE=86C270-294 Savage/MX-MV + ID_MODEL_FROM_DATABASE=86C270-294 [SavageMX-MV] pci:v00005333d00008C11* - ID_MODEL_FROM_DATABASE=82C270-294 Savage/MX + ID_MODEL_FROM_DATABASE=82C270-294 [SavageMX] pci:v00005333d00008C12* - ID_MODEL_FROM_DATABASE=86C270-294 Savage/IX-MV + ID_MODEL_FROM_DATABASE=86C270-294 [SavageIX-MV] pci:v00005333d00008C12sv00001014sd0000017F* ID_MODEL_FROM_DATABASE=ThinkPad T20/T22 @@ -48636,7 +48639,7 @@ pci:v00005333d00008C12sv00001179sd00000001* ID_MODEL_FROM_DATABASE=86C584 SuperSavage/IXC Toshiba pci:v00005333d00008C13* - ID_MODEL_FROM_DATABASE=86C270-294 Savage/IX + ID_MODEL_FROM_DATABASE=86C270-294 [SavageIX] pci:v00005333d00008C13sv00001179sd00000001* ID_MODEL_FROM_DATABASE=Magnia Z310 @@ -48683,17 +48686,32 @@ pci:v00005333d00008D03* pci:v00005333d00008D04* ID_MODEL_FROM_DATABASE=VT8375 [ProSavage8 KM266/KL266] +pci:v00005333d00008E00* + ID_MODEL_FROM_DATABASE=DeltaChrome + +pci:v00005333d00008E26* + ID_MODEL_FROM_DATABASE=ProSavage + pci:v00005333d00008E40* ID_MODEL_FROM_DATABASE=2300E Graphics Processor pci:v00005333d00008E48* - ID_MODEL_FROM_DATABASE=Chrome S27 PCIE + ID_MODEL_FROM_DATABASE=Matrix [Chrome S25 / S27] pci:v00005333d00008E48sv00005333sd00000130* ID_MODEL_FROM_DATABASE=Chrome S27 256M DDR2 +pci:v00005333d00009043* + ID_MODEL_FROM_DATABASE=Chrome 430 GT + +pci:v00005333d00009045* + ID_MODEL_FROM_DATABASE=Chrome 430 ULP / 435 ULP / 440 GTX + +pci:v00005333d00009060* + ID_MODEL_FROM_DATABASE=Chrome 530 GT + pci:v00005333d00009102* - ID_MODEL_FROM_DATABASE=86C410 Savage 2000 + ID_MODEL_FROM_DATABASE=86C410 [Savage 2000] pci:v00005333d00009102sv00001092sd00005932* ID_MODEL_FROM_DATABASE=Viper II Z200 @@ -60707,9 +60725,15 @@ pci:v00008086d00002F6E* pci:v00008086d00002F6F* ID_MODEL_FROM_DATABASE=Haswell-E DDRIO Global Broadcast +pci:v00008086d00002F70* + ID_MODEL_FROM_DATABASE=Haswell-E Home Agent 0 Debug + pci:v00008086d00002F71* ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 0 Target Address, Thermal & RAS Registers +pci:v00008086d00002F78* + ID_MODEL_FROM_DATABASE=Haswell-E Home Agent 1 Debug + pci:v00008086d00002F79* ID_MODEL_FROM_DATABASE=Haswell-E Integrated Memory Controller 1 Target Address, Thermal & RAS Registers @@ -64068,7 +64092,7 @@ pci:v00008086d00008D6E* ID_MODEL_FROM_DATABASE=Wellsburg sSATA Controller [RAID mode] pci:v00008086d00008D7C* - ID_MODEL_FROM_DATABASE=Wellsburg SPSR + ID_MODEL_FROM_DATABASE=Wellsburg EPSS pci:v00008086d00008D7D* ID_MODEL_FROM_DATABASE=Wellsburg MS SMBus 0 diff --git a/hwdb/20-usb-vendor-model.hwdb b/hwdb/20-usb-vendor-model.hwdb index c78bfe37c0..8c9584b358 100644 --- a/hwdb/20-usb-vendor-model.hwdb +++ b/hwdb/20-usb-vendor-model.hwdb @@ -43455,13 +43455,13 @@ usb:v1797* ID_VENDOR_FROM_DATABASE=JALCO CO., LTD. usb:v1799* - ID_VENDOR_FROM_DATABASE=Belkin Components + ID_VENDOR_FROM_DATABASE=Thales Norway A/S usb:v1799p7051* - ID_MODEL_FROM_DATABASE=F5D7051 802.11g Adapter v1000 [Broadcom 4320] + ID_MODEL_FROM_DATABASE=Belkin F5D7051 802.11g Adapter v1000 [Broadcom 4320] usb:v1799p8051* - ID_MODEL_FROM_DATABASE=F5D8051 v2 802.11bgn Wireless Adapter [Marvell 88W8362] + ID_MODEL_FROM_DATABASE=Belkin F5D8051 v2 802.11bgn Wireless Adapter [Marvell 88W8362] usb:v179D* ID_VENDOR_FROM_DATABASE=Ricavision International, Inc. -- cgit v1.2.1 From 0c17fbce55a9a2ca48318a918adce4c58ae79d98 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 28 Mar 2013 21:18:58 +0100 Subject: unit: replace remote-fs-setup.target by network-online.target https://bugzilla.redhat.com/show_bug.cgi?id=787314 --- Makefile.am | 2 +- man/systemd.special.xml | 115 ++++++++++++++++++++++++---------- src/core/mount.c | 12 ++-- src/core/special.h | 2 +- src/fstab-generator/fstab-generator.c | 35 ++++++----- units/network-online.target | 11 ++++ units/remote-fs-setup.target | 11 ---- 7 files changed, 122 insertions(+), 66 deletions(-) create mode 100644 units/network-online.target delete mode 100644 units/remote-fs-setup.target diff --git a/Makefile.am b/Makefile.am index 37c1cc2692..85c0e2aea8 100644 --- a/Makefile.am +++ b/Makefile.am @@ -355,8 +355,8 @@ dist_systemunit_DATA = \ units/initrd-root-fs.target \ units/remote-fs.target \ units/remote-fs-pre.target \ - units/remote-fs-setup.target \ units/network.target \ + units/network-online.target \ units/nss-lookup.target \ units/nss-user-lookup.target \ units/hibernate.target \ diff --git a/man/systemd.special.xml b/man/systemd.special.xml index 172836ee20..cd0f5aa5df 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -71,6 +71,7 @@ local-fs-pre.target, multi-user.target, network.target, + network-online.target, nss-lookup.target, nss-user-lookup.target, paths.target, @@ -79,7 +80,6 @@ reboot.target, remote-fs.target, remote-fs-pre.target, - remote-fs-setup.target, rescue.target, initrd-root-fs.target, rpcbind.target, @@ -387,6 +387,67 @@ section. + + network-online.target + + Units that strictly + require a configured network + connection should pull in + network-online.target + (via a + Wants= type + dependency) and order + themselves after it. This + target unit is intended to + pull in a service that delays + further execution until the + network is sufficiently set + up. What precisely this + requires is left to the + implementation of the network + managing service. + + Note the distinction + between this unit and + network.target. This + unit is an active unit + (i.e. pulled in by the + consumer rather than the + provider of this + functionality) and pulls in a + service which possibly adds + substantial delays to further + execution. In contrast, + network.target + is a passive unit (i.e. pulled + in by the provider of the + functionality, rather than the + consumer) that usually does + not delay execution + much. Usually, + network.target + is part of the boot of most + systems, while + network-online.target + is not, except when at least + one unit requires it. Also see + Running + Services After the Network is + up for more + information. + + All mount units for + remote network file systems + automatically pull in this + unit, and order themselves + after it. Note that networking + daemons that simply provide + functionality to other hosts + generally don't need to pull + this in. + + paths.target @@ -458,29 +519,6 @@ facility. - - remote-fs-setup.target - - This target unit is - automatically pulled in (by a - Wants= type - dependency) by all remote - mount points. It can be used - to run certain units when at - least one remote file system - is to be mounted. Note that - this target is not ordered - against the remote mounts, use - remote-fs-pre.target - for that (see below). - - Again, this target unit - is not - suitable for ordering, it is - only useful for pulling in - other units. - - rescue.target @@ -812,6 +850,26 @@ network.target + This unit is supposed to + indicate when network + functionality is available, + but it is only very weakly + defined what that is supposed + to mean, with one exception: + at shutdown, a unit that is + ordered after + network.target + will be stopped before the + network -- to whatever level + it might be set up then -- is + shut down. Also see Running + Services After the Network is + up for more + information. Also see + network-online.target + described above. + systemd automatically adds dependencies of type After= for @@ -821,15 +879,6 @@ $network facility. - This unit is supposed to - indicate when the network is - "up", but it is only very - loosely defined what that is - supposed to mean. Also see Running - Services After the Network is - up for more - information. diff --git a/src/core/mount.c b/src/core/mount.c index 3c63a391db..7839300110 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -439,9 +439,9 @@ static int mount_add_quota_links(Mount *m) { } static int mount_add_default_dependencies(Mount *m) { - int r; + const char *after, *after2, *online; MountParameters *p; - const char *after, *after2, *setup; + int r; assert(m); @@ -459,11 +459,11 @@ static int mount_add_default_dependencies(Mount *m) { if (mount_is_network(p)) { after = SPECIAL_REMOTE_FS_PRE_TARGET; after2 = SPECIAL_NETWORK_TARGET; - setup = SPECIAL_REMOTE_FS_SETUP_TARGET; + online = SPECIAL_NETWORK_ONLINE_TARGET; } else { after = SPECIAL_LOCAL_FS_PRE_TARGET; after2 = NULL; - setup = NULL; + online = NULL; } r = unit_add_dependency_by_name(UNIT(m), UNIT_AFTER, after, NULL, true); @@ -476,8 +476,8 @@ static int mount_add_default_dependencies(Mount *m) { return r; } - if (setup) { - r = unit_add_dependency_by_name(UNIT(m), UNIT_WANTS, setup, NULL, true); + if (online) { + r = unit_add_two_dependencies_by_name(UNIT(m), UNIT_WANTS, UNIT_AFTER, online, NULL, true); if (r < 0) return r; } diff --git a/src/core/special.h b/src/core/special.h index dae7446d73..a9b50bce05 100644 --- a/src/core/special.h +++ b/src/core/special.h @@ -54,8 +54,8 @@ #define SPECIAL_INITRD_ROOT_FS_TARGET "initrd-root-fs.target" #define SPECIAL_REMOTE_FS_TARGET "remote-fs.target" /* LSB's $remote_fs */ #define SPECIAL_REMOTE_FS_PRE_TARGET "remote-fs-pre.target" -#define SPECIAL_REMOTE_FS_SETUP_TARGET "remote-fs-setup.target" #define SPECIAL_SWAP_TARGET "swap.target" +#define SPECIAL_NETWORK_ONLINE_TARGET "network-online.target" #define SPECIAL_BASIC_TARGET "basic.target" /* LSB compatibility */ diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 78d9ce90d7..4eaa52d1c2 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -210,8 +210,9 @@ static int add_mount( bool automount, bool isbind, const char *pre, + const char *pre2, + const char *online, const char *post, - const char *setup, const char *source) { char _cleanup_free_ *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL, @@ -267,10 +268,17 @@ static int add_mount( "After=%s\n", pre); - if (setup) + if (pre2) fprintf(f, + "After=%s\n", + pre2); + + if (online) + fprintf(f, + "After=%s\n" "Wants=%s\n", - setup); + online, + online); fprintf(f, "Conflicts=" SPECIAL_UMOUNT_TARGET "\n" @@ -439,7 +447,7 @@ static int parse_fstab(const char *prefix, bool initrd) { k = add_swap(what, me); else { bool noauto, nofail, automount, isbind; - const char *pre, *post, *setup; + const char *pre, *pre2, *post, *online; noauto = !!hasmntopt(me, "noauto"); nofail = !!hasmntopt(me, "nofail"); @@ -449,26 +457,25 @@ static int parse_fstab(const char *prefix, bool initrd) { isbind = mount_is_bind(me); if (initrd) { + pre = pre2 = online = NULL; post = SPECIAL_INITRD_FS_TARGET; - pre = NULL; - setup = NULL; } else if (mount_in_initrd(me)) { + pre = pre2 = online = NULL; post = SPECIAL_INITRD_ROOT_FS_TARGET; - pre = NULL; - setup = NULL; } else if (mount_is_network(me)) { - post = SPECIAL_REMOTE_FS_TARGET; pre = SPECIAL_REMOTE_FS_PRE_TARGET; - setup = SPECIAL_REMOTE_FS_SETUP_TARGET; + pre2 = SPECIAL_NETWORK_TARGET; + online = SPECIAL_NETWORK_ONLINE_TARGET; + post = SPECIAL_REMOTE_FS_TARGET; } else { - post = SPECIAL_LOCAL_FS_TARGET; pre = SPECIAL_LOCAL_FS_PRE_TARGET; - setup = NULL; + pre2 = online = NULL; + post = SPECIAL_LOCAL_FS_TARGET; } k = add_mount(what, where, me->mnt_type, me->mnt_opts, me->mnt_passno, noauto, nofail, automount, - isbind, pre, post, setup, fstab_path); + isbind, pre, pre2, online, post, fstab_path); } if (k < 0) @@ -552,7 +559,7 @@ static int parse_new_root_from_proc_cmdline(void) { log_debug("Found entry what=%s where=/sysroot type=%s", what, type); r = add_mount(what, "/sysroot", type, opts, 0, false, false, false, - false, NULL, SPECIAL_INITRD_ROOT_FS_TARGET, NULL, "/proc/cmdline"); + false, NULL, NULL, NULL, SPECIAL_INITRD_ROOT_FS_TARGET, "/proc/cmdline"); return (r < 0) ? r : 0; } diff --git a/units/network-online.target b/units/network-online.target new file mode 100644 index 0000000000..8043717e4a --- /dev/null +++ b/units/network-online.target @@ -0,0 +1,11 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Remote File System Setup +Documentation=man:systemd.special(7) +DefaultDependencies=no diff --git a/units/remote-fs-setup.target b/units/remote-fs-setup.target deleted file mode 100644 index 8043717e4a..0000000000 --- a/units/remote-fs-setup.target +++ /dev/null @@ -1,11 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -[Unit] -Description=Remote File System Setup -Documentation=man:systemd.special(7) -DefaultDependencies=no -- cgit v1.2.1 From 9ca3c17f207121b3c19a44217558b056a7585944 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 28 Mar 2013 21:31:55 +0100 Subject: build-sys: prepare release 200 --- Makefile.am | 8 ++++---- NEWS | 17 +++++++++++++++++ configure.ac | 2 +- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/Makefile.am b/Makefile.am index 85c0e2aea8..e44b07501e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -32,7 +32,7 @@ SUBDIRS = . po .SECONDARY: LIBUDEV_CURRENT=4 -LIBUDEV_REVISION=0 +LIBUDEV_REVISION=1 LIBUDEV_AGE=3 LIBGUDEV_CURRENT=1 @@ -40,7 +40,7 @@ LIBGUDEV_REVISION=3 LIBGUDEV_AGE=1 LIBSYSTEMD_LOGIN_CURRENT=4 -LIBSYSTEMD_LOGIN_REVISION=1 +LIBSYSTEMD_LOGIN_REVISION=2 LIBSYSTEMD_LOGIN_AGE=4 LIBSYSTEMD_DAEMON_CURRENT=0 @@ -48,11 +48,11 @@ LIBSYSTEMD_DAEMON_REVISION=8 LIBSYSTEMD_DAEMON_AGE=0 LIBSYSTEMD_ID128_CURRENT=0 -LIBSYSTEMD_ID128_REVISION=18 +LIBSYSTEMD_ID128_REVISION=19 LIBSYSTEMD_ID128_AGE=0 LIBSYSTEMD_JOURNAL_CURRENT=8 -LIBSYSTEMD_JOURNAL_REVISION=1 +LIBSYSTEMD_JOURNAL_REVISION=2 LIBSYSTEMD_JOURNAL_AGE=8 # Dirs of external packages diff --git a/NEWS b/NEWS index 8396c312bd..60c669e92a 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,22 @@ systemd System and Service Manager +CHANGES WITH 200: + + * The boot-time readahead implementation for rotating media + will now read the read-ahead data in multiple passes which + consist of all read requests made in equidistant time + intervals. This means instead of strictly reading read-ahead + data in its physical order on disk we now try to find a + middle ground between physical and access time order. + + * /etc/os-release files gained a new BUILD_ID= field for usage + on operating systems that provide continuous builds of OS + images. + + Contributions from: Auke Kok, Eelco Dolstra, Kay Sievers, + Lennart Poettering, Lukas Nykryn, Martin Pitt, Václav Pavlín + William Douglas, Zbigniew Jędrzejewski-Szmek + CHANGES WITH 199: * systemd-python gained an API exposing libsystemd-daemon. diff --git a/configure.ac b/configure.ac index e73cd5c76f..5e3561394a 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ AC_PREREQ([2.64]) AC_INIT([systemd], - [199], + [200], [http://bugs.freedesktop.org/enter_bug.cgi?product=systemd], [systemd], [http://www.freedesktop.org/wiki/Software/systemd]) -- cgit v1.2.1 From 5e75606a419059e6fbd8705b0b60c183c8aca246 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 28 Mar 2013 22:09:28 -0400 Subject: coredump: do not free twice --- src/journal/coredump.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/journal/coredump.c b/src/journal/coredump.c index bada8487c4..c56d283268 100644 --- a/src/journal/coredump.c +++ b/src/journal/coredump.c @@ -95,15 +95,15 @@ static int divert_coredump(void) { int main(int argc, char* argv[]) { int r, j = 0; - _cleanup_free_ char *p = NULL; + char *t; ssize_t n; pid_t pid; uid_t uid; gid_t gid; struct iovec iovec[14]; - _cleanup_free_ char *core_pid = NULL, *core_uid = NULL, *core_gid = NULL, *core_signal = NULL, + char _cleanup_free_ *core_pid = NULL, *core_uid = NULL, *core_gid = NULL, *core_signal = NULL, *core_timestamp = NULL, *core_comm = NULL, *core_exe = NULL, *core_unit = NULL, - *core_session = NULL, *core_message = NULL, *core_cmdline = NULL, *t = NULL; + *core_session = NULL, *core_message = NULL, *core_cmdline = NULL, *p = NULL; prctl(PR_SET_DUMPABLE, 0); -- cgit v1.2.1 From c8c9c69f390ea9cf8e700515757d18fc08d8c4fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 28 Mar 2013 22:54:22 -0400 Subject: build-sys: remove papersize option from sphinx We don't use it currently for anything (no latex output), but it was messing up stuff if /etc/papersize had comments. --- Makefile.am | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index e44b07501e..923f81bb20 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3685,8 +3685,7 @@ src/python-systemd/id128-constants.h: src/systemd/sd-messages.h Makefile BUILT_SOURCES += \ src/python-systemd/id128-constants.h -PAPER = $(shell cat /etc/papersize 2>/dev/null || echo a4) -SPHINXOPTS = -D latex_paper_size=$(PAPER) -D version=$(VERSION) -D release=$(VERSION) +SPHINXOPTS = -D version=$(VERSION) -D release=$(VERSION) sphinx-%: $(AM_V_at)test -n "$(SPHINX_BUILD)" || { echo " *** sphinx-build is not available"; exit 1; } $(AM_V_GEN)PYTHONPATH=$(DESTDIR)$(pyexecdir) LD_LIBRARY_PATH=$(DESTDIR)$(libdir) $(SPHINX_BUILD) -b $* $(SPHINXOPTS) $(top_srcdir)/src/python-systemd/docs $(top_builddir)/docs/html/python-systemd/ -- cgit v1.2.1 From 268888765352e4dcf07e40917fef6ab41b7deba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 28 Mar 2013 23:19:19 -0400 Subject: utmp-wtmp: don't try to read past end of string systemd-199/src/shared/utmp-wtmp.c:228: buffer_size_warning: Calling strncpy with a maximum size argument of 32 bytes on destination array "store.ut_line" of size 32 bytes might leave the destination string unterminated. The destination string is unterminated on purpose, but we must remember that. --- src/shared/utmp-wtmp.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/shared/utmp-wtmp.c b/src/shared/utmp-wtmp.c index 046fb584fb..8717dbac2d 100644 --- a/src/shared/utmp-wtmp.c +++ b/src/shared/utmp-wtmp.c @@ -403,10 +403,12 @@ int utmp_wall(const char *message, bool (*match_tty)(const char *tty)) { if (u->ut_type != USER_PROCESS || u->ut_user[0] == 0) continue; + /* this access is fine, because strlen("/dev/") << 32 (UT_LINESIZE) */ if (path_startswith(u->ut_line, "/dev/")) path = u->ut_line; else { - if (asprintf(&buf, "/dev/%s", u->ut_line) < 0) { + if (asprintf(&buf, "/dev/%.*s", + sizeof(u->ut_line), u->ut_line) < 0) { r = -ENOMEM; goto finish; } -- cgit v1.2.1 From c309a7137b06516eafc055eaab31df964599a8b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 28 Mar 2013 23:41:07 -0400 Subject: bootchart: properly terminate string systemd-199/src/bootchart/store.c:289: buffer_size_warning: Calling strncpy with a maximum size argument of 256 bytes on destination array "ps->name" of size 256 bytes might leave the destination string unterminated. ...and indeed, the string was used as NULL-terminated later on. pid_cmdline_strncpy is renamed to pid_cmdline_strscpy to commemorate the fact that it *does* properly terminate the string. --- src/bootchart/store.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/bootchart/store.c b/src/bootchart/store.c index 0253ebb5af..343365e612 100644 --- a/src/bootchart/store.c +++ b/src/bootchart/store.c @@ -34,6 +34,7 @@ #include #include "util.h" +#include "strxcpyx.h" #include "store.h" #include "bootchart.h" @@ -89,7 +90,7 @@ static char *bufgetline(char *buf) { return c; } -static int pid_cmdline_strncpy(char *buffer, int pid, size_t buf_len) { +static int pid_cmdline_strscpy(char *buffer, size_t buf_len, int pid) { char filename[PATH_MAX]; int _cleanup_close_ fd=-1; ssize_t n; @@ -286,11 +287,11 @@ schedstat_next: if (!sscanf(buf, "%s %*s %*s", key)) continue; - strncpy(ps->name, key, 256); + strscpy(ps->name, sizeof(ps->name), key); /* cmdline */ if (arg_show_cmdline) - pid_cmdline_strncpy(ps->name, pid, 256); + pid_cmdline_strscpy(ps->name, sizeof(ps->name), pid); /* discard line 2 */ m = bufgetline(buf); @@ -449,11 +450,11 @@ catch_rename: if (!sscanf(buf, "%s %*s %*s", key)) continue; - strncpy(ps->name, key, 256); + strscpy(ps->name, sizeof(ps->name), key); /* cmdline */ if (arg_show_cmdline) - pid_cmdline_strncpy(ps->name, pid, 256); + pid_cmdline_strscpy(ps->name, sizeof(ps->name), pid); } } } -- cgit v1.2.1 From f45928521249bbaf5dbea84933ae2fcaf5354080 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?V=C3=A1clav=20Pavl=C3=ADn?= Date: Wed, 27 Mar 2013 15:16:36 +0100 Subject: udev: check return value of uname. --- src/udev/udevd.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/udev/udevd.c b/src/udev/udevd.c index 2ad73881d6..42cf994b0d 100644 --- a/src/udev/udevd.c +++ b/src/udev/udevd.c @@ -819,7 +819,11 @@ static void static_dev_create_from_modules(struct udev *udev) char buf[4096]; FILE *f; - uname(&kernel); + if (uname(&kernel) < 0) { + log_error("uname failed: %m"); + return; + } + strscpyl(modules, sizeof(modules), ROOTPREFIX "/lib/modules/", kernel.release, "/modules.devname", NULL); f = fopen(modules, "re"); if (f == NULL) -- cgit v1.2.1 From 18cd5fe99f70a55a2d6f2303d6ee0624942695b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 27 Mar 2013 23:16:32 -0400 Subject: catalog: make sure strings are terminated Coverity complains: systemd-199/src/journal/catalog.c:126: buffer_size_warning: Calling strncpy with a maximum size argument of 32 bytes on destination array "i->language" of size 32 bytes might leave the destination string unterminated. ...and unfortunately it was right. The string was defined as a fixed-size string in some parts of the code, and used a null-terminated string in others (e.g. in log statements). There's no point in conserving one byte, so just define the max language tag length to 31 bytes, and use null terminated strings everywhere. Also, wrap some lines, zero-fill less bytes, use '\0' instead of just 0 to be more explicit that this is one byte. --- src/journal/catalog.c | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/journal/catalog.c b/src/journal/catalog.c index 7ae7b3eecf..b2c684ac2d 100644 --- a/src/journal/catalog.c +++ b/src/journal/catalog.c @@ -34,6 +34,7 @@ #include "hashmap.h" #include "strv.h" #include "strbuf.h" +#include "strxcpyx.h" #include "conf-files.h" #include "mkdir.h" #include "catalog.h" @@ -96,7 +97,7 @@ static int catalog_compare_func(const void *a, const void *b) { return 1; } - return strncmp(i->language, j->language, sizeof(i->language)); + return strcmp(i->language, j->language); } static int finish_item( @@ -123,12 +124,13 @@ static int finish_item( return log_oom(); i->id = id; - strncpy(i->language, language, sizeof(i->language)); + strscpy(i->language, sizeof(i->language), language); i->offset = htole64((uint64_t) offset); r = hashmap_put(h, i, i); if (r == EEXIST) { - log_warning("Duplicate entry for " SD_ID128_FORMAT_STR ".%s, ignoring.", SD_ID128_FORMAT_VAL(id), language ? language : "C"); + log_warning("Duplicate entry for " SD_ID128_FORMAT_STR ".%s, ignoring.", + SD_ID128_FORMAT_VAL(id), language ? language : "C"); free(i); return 0; } @@ -185,15 +187,15 @@ static int import_file(Hashmap *h, struct strbuf *sb, const char *path) { line[0] == '-' && line[1] == '-' && line[2] == ' ' && - (line[2+1+32] == ' ' || line[2+1+32] == 0)) { + (line[2+1+32] == ' ' || line[2+1+32] == '\0')) { bool with_language; sd_id128_t jd; /* New entry */ - with_language = line[2+1+32] != 0; - line[2+1+32] = 0; + with_language = line[2+1+32] != '\0'; + line[2+1+32] = '\0'; if (sd_id128_from_string(line + 2 + 1, &jd) >= 0) { @@ -211,21 +213,21 @@ static int import_file(Hashmap *h, struct strbuf *sb, const char *path) { log_error("[%s:%u] Language too short.", path, n); return -EINVAL; } - if (c > sizeof(language)) { + if (c > sizeof(language) - 1) { log_error("[%s:%u] language too long.", path, n); return -EINVAL; } - strncpy(language, t, sizeof(language)); + strscpy(language, sizeof(language), t); } else - zero(language); + language[0] = '\0'; got_id = true; empty_line = false; id = jd; if (payload) - payload[0] = 0; + payload[0] = '\0'; continue; } @@ -324,7 +326,9 @@ int catalog_update(void) { n = 0; HASHMAP_FOREACH(i, h, j) { - log_debug("Found " SD_ID128_FORMAT_STR ", language %s", SD_ID128_FORMAT_VAL(i->id), isempty(i->language) ? "C" : i->language); + log_debug("Found " SD_ID128_FORMAT_STR ", language %s", + SD_ID128_FORMAT_VAL(i->id), + isempty(i->language) ? "C" : i->language); items[n++] = *i; } -- cgit v1.2.1 From 844ec79b3c2f246114ea316ebe1f36044bdb688e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 28 Mar 2013 20:17:24 -0400 Subject: catalog: open up catalog internals In order to write tests for the catalog functions, they are made non-static and start taking a 'database' parameter, which is the name of a file with the preprocessed catalog entries. This makes it possible to make test-catalog part of the normal test suite, since it now only operates on files in /tmp. Some more tests are added. --- Makefile.am | 8 +- src/journal/catalog.c | 188 ++++++++++++++++++++++++--------------------- src/journal/catalog.h | 16 ++-- src/journal/journalctl.c | 32 ++++---- src/journal/sd-journal.c | 4 +- src/journal/test-catalog.c | 99 ++++++++++++++++++++++-- src/shared/conf-files.c | 2 +- src/shared/conf-files.h | 2 +- src/shared/util.c | 19 +++++ src/shared/util.h | 1 + src/udev/udevadm-hwdb.c | 2 +- 11 files changed, 251 insertions(+), 122 deletions(-) diff --git a/Makefile.am b/Makefile.am index 923f81bb20..2eae8773fc 100644 --- a/Makefile.am +++ b/Makefile.am @@ -138,7 +138,7 @@ AM_CPPFLAGS = \ -DUSER_CONFIG_FILE=\"$(pkgsysconfdir)/user.conf\" \ -DUSER_CONFIG_UNIT_PATH=\"$(pkgsysconfdir)/user\" \ -DUSER_DATA_UNIT_PATH=\"$(userunitdir)\" \ - -DCATALOG_PATH=\"$(catalogstatedir)\" \ + -DCATALOG_DATABASE=\"$(catalogstatedir)/database\" \ -DSYSTEMD_CGROUP_AGENT_PATH=\"$(rootlibexecdir)/systemd-cgroups-agent\" \ -DSYSTEMD_BINARY_PATH=\"$(rootlibexecdir)/systemd\" \ -DSYSTEMD_SHUTDOWN_BINARY_PATH=\"$(rootlibexecdir)/systemd-shutdown\" \ @@ -2748,8 +2748,7 @@ UNINSTALL_DATA_HOOKS += \ catalog-remove-hook noinst_PROGRAMS += \ - test-journal-enum \ - test-catalog + test-journal-enum noinst_tests += \ test-journal \ @@ -2758,7 +2757,8 @@ noinst_tests += \ test-journal-match \ test-journal-stream \ test-journal-verify \ - test-mmap-cache + test-mmap-cache \ + test-catalog pkginclude_HEADERS += \ src/systemd/sd-journal.h \ diff --git a/src/journal/catalog.c b/src/journal/catalog.c index b2c684ac2d..ebf0622609 100644 --- a/src/journal/catalog.c +++ b/src/journal/catalog.c @@ -26,6 +26,7 @@ #include #include #include +#include #include "util.h" #include "log.h" @@ -39,7 +40,7 @@ #include "mkdir.h" #include "catalog.h" -static const char * const conf_file_dirs[] = { +const char * const catalog_file_dirs[] = { "/usr/local/lib/systemd/catalog/", "/usr/lib/systemd/catalog/", NULL @@ -62,7 +63,7 @@ typedef struct CatalogItem { le64_t offset; } CatalogItem; -static unsigned catalog_hash_func(const void *p) { +unsigned catalog_hash_func(const void *p) { const CatalogItem *i = p; assert_cc(sizeof(unsigned) == sizeof(uint8_t)*4); @@ -86,7 +87,7 @@ static unsigned catalog_hash_func(const void *p) { string_hash_func(i->language); } -static int catalog_compare_func(const void *a, const void *b) { +int catalog_compare_func(const void *a, const void *b) { const CatalogItem *i = a, *j = b; unsigned k; @@ -138,7 +139,7 @@ static int finish_item( return 0; } -static int import_file(Hashmap *h, struct strbuf *sb, const char *path) { +int catalog_import_file(Hashmap *h, struct strbuf *sb, const char *path) { _cleanup_fclose_ FILE *f = NULL; _cleanup_free_ char *payload = NULL; unsigned n = 0; @@ -271,34 +272,99 @@ static int import_file(Hashmap *h, struct strbuf *sb, const char *path) { return 0; } -#define CATALOG_DATABASE CATALOG_PATH "/database" +static long write_catalog(const char *database, Hashmap *h, struct strbuf *sb, + CatalogItem *items, size_t n) { + CatalogHeader header; + _cleanup_fclose_ FILE *w = NULL; + int r; + char _cleanup_free_ *d, *p = NULL; + size_t k; + + d = dirname_malloc(database); + if (!d) + return log_oom(); + + r = mkdir_p(d, 0775); + if (r < 0) { + log_error("Recursive mkdir %s: %s", d, strerror(-r)); + return r; + } + + r = fopen_temporary(database, &w, &p); + if (r < 0) { + log_error("Failed to open database for writing: %s: %s", + database, strerror(-r)); + return r; + } + + zero(header); + memcpy(header.signature, CATALOG_SIGNATURE, sizeof(header.signature)); + header.header_size = htole64(ALIGN_TO(sizeof(CatalogHeader), 8)); + header.catalog_item_size = htole64(sizeof(CatalogItem)); + header.n_items = htole64(hashmap_size(h)); -int catalog_update(void) { + r = -EIO; + + k = fwrite(&header, 1, sizeof(header), w); + if (k != sizeof(header)) { + log_error("%s: failed to write header.", p); + goto error; + } + + k = fwrite(items, 1, n * sizeof(CatalogItem), w); + if (k != n * sizeof(CatalogItem)) { + log_error("%s: failed to write database.", p); + goto error; + } + + k = fwrite(sb->buf, 1, sb->len, w); + if (k != sb->len) { + log_error("%s: failed to write strings.", p); + goto error; + } + + fflush(w); + + if (ferror(w)) { + log_error("%s: failed to write database.", p); + goto error; + } + + fchmod(fileno(w), 0644); + + if (rename(p, database) < 0) { + log_error("rename (%s -> %s) failed: %m", p, database); + r = -errno; + goto error; + } + + return ftell(w); + +error: + unlink(p); + return r; +} + +int catalog_update(const char* database, const char* root, const char* const* dirs) { _cleanup_strv_free_ char **files = NULL; - _cleanup_fclose_ FILE *w = NULL; - _cleanup_free_ char *p = NULL; char **f; Hashmap *h; struct strbuf *sb = NULL; _cleanup_free_ CatalogItem *items = NULL; CatalogItem *i; - CatalogHeader header; - size_t k; Iterator j; unsigned n; - int r; + long r; h = hashmap_new(catalog_hash_func, catalog_compare_func); - if (!h) - return -ENOMEM; - sb = strbuf_new(); - if (!sb) { + + if (!h || !sb) { r = log_oom(); goto finish; } - r = conf_files_list_strv(&files, ".catalog", NULL, (const char **) conf_file_dirs); + r = conf_files_list_strv(&files, ".catalog", root, dirs); if (r < 0) { log_error("Failed to get catalog files: %s", strerror(-r)); goto finish; @@ -306,7 +372,7 @@ int catalog_update(void) { STRV_FOREACH(f, files) { log_debug("reading file '%s'", *f); - import_file(h, sb, *f); + catalog_import_file(h, sb, *f); } if (hashmap_size(h) <= 0) { @@ -335,79 +401,25 @@ int catalog_update(void) { assert(n == hashmap_size(h)); qsort(items, n, sizeof(CatalogItem), catalog_compare_func); - r = mkdir_p(CATALOG_PATH, 0775); - if (r < 0) { - log_error("Recursive mkdir %s: %s", CATALOG_PATH, strerror(-r)); - goto finish; - } - - r = fopen_temporary(CATALOG_DATABASE, &w, &p); - if (r < 0) { - log_error("Failed to open database for writing: %s: %s", - CATALOG_DATABASE, strerror(-r)); - goto finish; - } - - zero(header); - memcpy(header.signature, CATALOG_SIGNATURE, sizeof(header.signature)); - header.header_size = htole64(ALIGN_TO(sizeof(CatalogHeader), 8)); - header.catalog_item_size = htole64(sizeof(CatalogItem)); - header.n_items = htole64(hashmap_size(h)); - - k = fwrite(&header, 1, sizeof(header), w); - if (k != sizeof(header)) { - log_error("%s: failed to write header.", p); - goto finish; - } - - k = fwrite(items, 1, n * sizeof(CatalogItem), w); - if (k != n * sizeof(CatalogItem)) { - log_error("%s: failed to write database.", p); - goto finish; - } - - k = fwrite(sb->buf, 1, sb->len, w); - if (k != sb->len) { - log_error("%s: failed to write strings.", p); - goto finish; - } - - fflush(w); - - if (ferror(w)) { - log_error("%s: failed to write database.", p); - goto finish; - } - - fchmod(fileno(w), 0644); - - if (rename(p, CATALOG_DATABASE) < 0) { - log_error("rename (%s -> %s) failed: %m", p, CATALOG_DATABASE); - r = -errno; - goto finish; - } - - log_debug("%s: wrote %u items, with %zu bytes of strings, %ld total size.", - CATALOG_DATABASE, n, sb->len, ftell(w)); - - free(p); - p = NULL; + r = write_catalog(database, h, sb, items, n); + if (r < 0) + log_error("Failed to write %s: %s", database, strerror(-r)); + else + log_debug("%s: wrote %u items, with %zu bytes of strings, %ld total size.", + database, n, sb->len, r); r = 0; finish: - hashmap_free_free(h); - + if (h) + hashmap_free_free(h); if (sb) strbuf_cleanup(sb); - if (p) - unlink(p); - - return r; + return r < 0 ? r : 0; } -static int open_mmap(int *_fd, struct stat *_st, void **_p) { +static int open_mmap(const char *database, int *_fd, struct stat *_st, void **_p) { const CatalogHeader *h; int fd; void *p; @@ -417,7 +429,7 @@ static int open_mmap(int *_fd, struct stat *_st, void **_p) { assert(_st); assert(_p); - fd = open(CATALOG_DATABASE, O_RDONLY|O_CLOEXEC); + fd = open(database, O_RDONLY|O_CLOEXEC); if (fd < 0) return -errno; @@ -495,7 +507,7 @@ static const char *find_id(void *p, sd_id128_t id) { le64toh(f->offset); } -int catalog_get(sd_id128_t id, char **_text) { +int catalog_get(const char* database, sd_id128_t id, char **_text) { _cleanup_close_ int fd = -1; void *p = NULL; struct stat st; @@ -505,7 +517,7 @@ int catalog_get(sd_id128_t id, char **_text) { assert(_text); - r = open_mmap(&fd, &st, &p); + r = open_mmap(database, &fd, &st, &p); if (r < 0) return r; @@ -571,7 +583,7 @@ static void dump_catalog_entry(FILE *f, sd_id128_t id, const char *s, bool oneli } -int catalog_list(FILE *f, bool oneline) { +int catalog_list(FILE *f, const char *database, bool oneline) { _cleanup_close_ int fd = -1; void *p = NULL; struct stat st; @@ -582,7 +594,7 @@ int catalog_list(FILE *f, bool oneline) { sd_id128_t last_id; bool last_id_set = false; - r = open_mmap(&fd, &st, &p); + r = open_mmap(database, &fd, &st, &p); if (r < 0) return r; @@ -608,7 +620,7 @@ int catalog_list(FILE *f, bool oneline) { return 0; } -int catalog_list_items(FILE *f, bool oneline, char **items) { +int catalog_list_items(FILE *f, const char *database, bool oneline, char **items) { char **item; int r = 0; @@ -626,7 +638,7 @@ int catalog_list_items(FILE *f, bool oneline, char **items) { continue; } - k = catalog_get(id, &msg); + k = catalog_get(database, id, &msg); if (k < 0) { log_full(k == -ENOENT ? LOG_NOTICE : LOG_ERR, "Failed to retrieve catalog entry for '%s': %s", diff --git a/src/journal/catalog.h b/src/journal/catalog.h index 8ea2c41c2d..89f8f93d03 100644 --- a/src/journal/catalog.h +++ b/src/journal/catalog.h @@ -24,8 +24,14 @@ #include #include "sd-id128.h" - -int catalog_update(void); -int catalog_get(sd_id128_t id, char **data); -int catalog_list(FILE *f, bool oneline); -int catalog_list_items(FILE *f, bool oneline, char **items); +#include "hashmap.h" +#include "strbuf.h" + +int catalog_import_file(Hashmap *h, struct strbuf *sb, const char *path); +unsigned catalog_hash_func(const void *p); +int catalog_compare_func(const void *a, const void *b); +int catalog_update(const char* database, const char* root, const char* const* dirs); +int catalog_get(const char* database, sd_id128_t id, char **data); +int catalog_list(FILE *f, const char* database, bool oneline); +int catalog_list_items(FILE *f, const char* database, bool oneline, char **items); +extern const char * const catalog_file_dirs[]; diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 0a82a1cf15..03daafe9db 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -1020,20 +1020,26 @@ int main(int argc, char *argv[]) { goto finish; } - if (arg_action == ACTION_LIST_CATALOG || - arg_action == ACTION_DUMP_CATALOG) { - bool oneline = arg_action == ACTION_LIST_CATALOG; - if (optind < argc) - r = catalog_list_items(stdout, oneline, argv + optind); - else - r = catalog_list(stdout, oneline); - if (r < 0) - log_error("Failed to list catalog: %s", strerror(-r)); - goto finish; - } + if (arg_action == ACTION_UPDATE_CATALOG || + arg_action == ACTION_LIST_CATALOG || + arg_action == ACTION_DUMP_CATALOG) { + + if (arg_action == ACTION_UPDATE_CATALOG) { + r = catalog_update(CATALOG_DATABASE, NULL, catalog_file_dirs); + if (r < 0) + log_error("Failed to list catalog: %s", strerror(-r)); + } else { + bool oneline = arg_action == ACTION_LIST_CATALOG; + + if (optind < argc) + r = catalog_list_items(stdout, CATALOG_DATABASE, + oneline, argv + optind); + else + r = catalog_list(stdout, CATALOG_DATABASE, oneline); + if (r < 0) + log_error("Failed to list catalog: %s", strerror(-r)); + } - if (arg_action == ACTION_UPDATE_CATALOG) { - r = catalog_update(); goto finish; } diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 82cacf3674..bb99671934 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -2439,7 +2439,7 @@ _public_ int sd_journal_get_catalog(sd_journal *j, char **ret) { if (r < 0) return r; - r = catalog_get(id, &text); + r = catalog_get(CATALOG_DATABASE, id, &text); if (r < 0) return r; @@ -2455,7 +2455,7 @@ _public_ int sd_journal_get_catalog_for_message_id(sd_id128_t id, char **ret) { if (!ret) return -EINVAL; - return catalog_get(id, ret); + return catalog_get(CATALOG_DATABASE, id, ret); } _public_ int sd_journal_set_data_threshold(sd_journal *j, size_t sz) { diff --git a/src/journal/test-catalog.c b/src/journal/test-catalog.c index c75b1464fe..21149f18a5 100644 --- a/src/journal/test-catalog.c +++ b/src/journal/test-catalog.c @@ -4,6 +4,7 @@ This file is part of systemd. Copyright 2012 Lennart Poettering + Copyright 2013 Zbigniew Jędrzejewski-Szmek systemd is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -20,31 +21,115 @@ ***/ #include +#include +#include +#include #include "util.h" #include "log.h" -#include "catalog.h" +#include "macro.h" #include "sd-messages.h" +#include "catalog.h" -int main(int argc, char *argv[]) { +static void test_import(Hashmap *h, struct strbuf *sb, + const char* contents, ssize_t size, int code) { + int r; + char name[] = "/tmp/test-catalog.XXXXXX"; + int _cleanup_close_ fd = mkstemp(name); + assert(fd >= 0); + assert_se(write(fd, contents, size) == size); + + r = catalog_import_file(h, sb, name); + assert(r == code); + + unlink(name); +} + +static void test_catalog_importing(void) { + Hashmap *h; + struct strbuf *sb; + + assert_se(h = hashmap_new(catalog_hash_func, catalog_compare_func)); + assert_se(sb = strbuf_new()); + +#define BUF "xxx" + test_import(h, sb, BUF, sizeof(BUF), -EINVAL); +#undef BUF + assert(hashmap_isempty(h)); + log_debug("----------------------------------------"); + +#define BUF \ +"-- 0027229ca0644181a76c4e92458afaff dededededededededededededededede\n" \ +"Subject: message\n" \ +"\n" \ +"payload\n" + test_import(h, sb, BUF, sizeof(BUF), -EINVAL); +#undef BUF + + log_debug("----------------------------------------"); + +#define BUF \ +"-- 0027229ca0644181a76c4e92458afaff dededededededededededededededed\n" \ +"Subject: message\n" \ +"\n" \ +"payload\n" + test_import(h, sb, BUF, sizeof(BUF), 0); +#undef BUF + + assert(hashmap_size(h) == 1); + log_debug("----------------------------------------"); + + hashmap_free_free(h); + strbuf_cleanup(sb); +} + + +static const char* database = NULL; + +static void test_catalog_update(void) { + int r; + char _cleanup_free_ *path = NULL; + + static char name[] = "/tmp/test-catalog.XXXXXX"; + r = mkstemp(name); + assert(r >= 0); + + database = name; + + /* Test what happens if there are no files. */ + r = catalog_update(database, NULL, NULL); + assert(r >= 0); + + /* Note: this might actually not find anything, if systemd was + * not installed before. That should be fine too. */ + r = catalog_update(database, NULL, catalog_file_dirs); + assert(r >= 0); +} + +int main(int argc, char *argv[]) { _cleanup_free_ char *text = NULL; + int r; setlocale(LC_ALL, "de_DE.UTF-8"); log_set_max_level(LOG_DEBUG); - assert_se(catalog_update() >= 0); + test_catalog_importing(); - assert_se(catalog_list(stdout, true) >= 0); + test_catalog_update(); - assert_se(catalog_list(stdout, false) >= 0); + r = catalog_list(stdout, database, true); + assert_se(r >= 0); - assert_se(catalog_get(SD_MESSAGE_COREDUMP, &text) >= 0); + r = catalog_list(stdout, database, false); + assert_se(r >= 0); + assert_se(catalog_get(database, SD_MESSAGE_COREDUMP, &text) >= 0); printf(">>>%s<<<\n", text); - fflush(stdout); + if (database) + unlink(database); return 0; } diff --git a/src/shared/conf-files.c b/src/shared/conf-files.c index 296e605761..6d99739353 100644 --- a/src/shared/conf-files.c +++ b/src/shared/conf-files.c @@ -134,7 +134,7 @@ static int conf_files_list_strv_internal(char ***strv, const char *suffix, const return 0; } -int conf_files_list_strv(char ***strv, const char *suffix, const char *root, const char **dirs) { +int conf_files_list_strv(char ***strv, const char *suffix, const char *root, const char* const* dirs) { _cleanup_strv_free_ char **copy = NULL; assert(strv); diff --git a/src/shared/conf-files.h b/src/shared/conf-files.h index 28588e6f03..3bd3d2f3d4 100644 --- a/src/shared/conf-files.h +++ b/src/shared/conf-files.h @@ -26,7 +26,7 @@ #include "macro.h" int conf_files_list(char ***strv, const char *suffix, const char *root, const char *dir, ...); -int conf_files_list_strv(char ***strv, const char *suffix, const char *root, const char **dirs); +int conf_files_list_strv(char ***strv, const char *suffix, const char *root, const char* const* dirs); int conf_files_list_nulstr(char ***strv, const char *suffix, const char *root, const char *dirs); #endif diff --git a/src/shared/util.c b/src/shared/util.c index 8fa01fa8a4..2241b79859 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -59,6 +59,7 @@ #include #include #include +#include #include "macro.h" #include "util.h" @@ -2356,6 +2357,24 @@ int dir_is_empty(const char *path) { } } +char* dirname_malloc(const char *path) { + char *d, *dir, *dir2; + + d = strdup(path); + if (!d) + return NULL; + dir = dirname(d); + assert(dir); + + if (dir != d) { + dir2 = strdup(dir); + free(d); + return dir2; + } + + return dir; +} + unsigned long long random_ull(void) { _cleanup_close_ int fd; uint64_t ull; diff --git a/src/shared/util.h b/src/shared/util.h index 52c33238b1..aefde5f85a 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -329,6 +329,7 @@ ssize_t loop_write(int fd, const void *buf, size_t nbytes, bool do_poll); bool is_device_path(const char *path); int dir_is_empty(const char *path); +char* dirname_malloc(const char *path); void rename_process(const char name[8]); diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index ca1bf165a9..a2df291a40 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -544,7 +544,7 @@ static int adm_hwdb(struct udev *udev, int argc, char *argv[]) { } trie->nodes_count++; - err = conf_files_list_strv(&files, ".hwdb", root, (const char **)conf_file_dirs); + err = conf_files_list_strv(&files, ".hwdb", root, conf_file_dirs); if (err < 0) { log_error("failed to enumerate hwdb files: %s\n", strerror(-err)); rc = EXIT_FAILURE; -- cgit v1.2.1 From 13cbf3a5f0cf4a1d89413d0ffc4a9067b1d6d1a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 28 Mar 2013 21:44:00 -0400 Subject: journalctl: support --root for message catalogs --- TODO | 2 -- man/journalctl.xml | 14 ++++++++++++++ src/journal/journalctl.c | 21 ++++++++++++++++++--- 3 files changed, 32 insertions(+), 5 deletions(-) diff --git a/TODO b/TODO index e54f84b964..0dbaad5032 100644 --- a/TODO +++ b/TODO @@ -144,8 +144,6 @@ Features: * timedate: have global on/off switches for auto-time (NTP), and auto-timezone that connman can subscribe to. -* support --root= in msgcatalog compiler - * Honour "-" prefix for InaccessibleDirectories= and ReadOnlyDirectories= to suppress errors of the specified path doesn't exist diff --git a/man/journalctl.xml b/man/journalctl.xml index 6b4b7572f6..144b54f663 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -447,6 +447,20 @@ paths. + + + + Takes a directory path + as argument. If specified journalctl + will operate on catalog file hierarchy + underneath the specified directory + instead of the root directory + (e.g. + will create + ROOT/var/lib/systemd/catalog/database). + + + diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 03daafe9db..3ae6482e99 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -86,6 +86,7 @@ static bool arg_unit_system; static const char *arg_field = NULL; static bool arg_catalog = false; static bool arg_reverse = false; +static const char *arg_root = NULL; static enum { ACTION_SHOW, @@ -125,6 +126,7 @@ static int help(void) { " --no-pager Do not pipe output into a pager\n" " -m --merge Show entries from all available journals\n" " -D --directory=PATH Show journal files from directory\n" + " --root=ROOT Operate on catalog files underneath the root ROOT\n" #ifdef HAVE_GCRYPT " --interval=TIME Time interval for changing the FSS sealing key\n" " --verify-key=KEY Specify FSS verification key\n" @@ -155,6 +157,7 @@ static int parse_argv(int argc, char *argv[]) { ARG_NO_PAGER, ARG_NO_TAIL, ARG_NEW_ID128, + ARG_ROOT, ARG_HEADER, ARG_FULL, ARG_SETUP_KEYS, @@ -186,6 +189,7 @@ static int parse_argv(int argc, char *argv[]) { { "merge", no_argument, NULL, 'm' }, { "this-boot", no_argument, NULL, 'b' }, { "directory", required_argument, NULL, 'D' }, + { "root", required_argument, NULL, ARG_ROOT }, { "header", no_argument, NULL, ARG_HEADER }, { "priority", required_argument, NULL, 'p' }, { "setup-keys", no_argument, NULL, ARG_SETUP_KEYS }, @@ -318,6 +322,10 @@ static int parse_argv(int argc, char *argv[]) { arg_directory = optarg; break; + case ARG_ROOT: + arg_root = optarg; + break; + case 'c': arg_cursor = optarg; break; @@ -1024,18 +1032,25 @@ int main(int argc, char *argv[]) { arg_action == ACTION_LIST_CATALOG || arg_action == ACTION_DUMP_CATALOG) { + char _cleanup_free_ *database; + database = strjoin(arg_root, "/", CATALOG_DATABASE, NULL); + if (!database) { + r = log_oom(); + goto finish; + } + if (arg_action == ACTION_UPDATE_CATALOG) { - r = catalog_update(CATALOG_DATABASE, NULL, catalog_file_dirs); + r = catalog_update(database, arg_root, catalog_file_dirs); if (r < 0) log_error("Failed to list catalog: %s", strerror(-r)); } else { bool oneline = arg_action == ACTION_LIST_CATALOG; if (optind < argc) - r = catalog_list_items(stdout, CATALOG_DATABASE, + r = catalog_list_items(stdout, database, oneline, argv + optind); else - r = catalog_list(stdout, CATALOG_DATABASE, oneline); + r = catalog_list(stdout, database, oneline); if (r < 0) log_error("Failed to list catalog: %s", strerror(-r)); } -- cgit v1.2.1 From 76877b46b652fbfcf8618458556178717b815cd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 28 Mar 2013 22:03:53 -0400 Subject: tests: add some silly tests for path-util.c --- Makefile.am | 7 ++++ src/shared/path-util.h | 5 +-- src/test/test-path-util.c | 85 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 src/test/test-path-util.c diff --git a/Makefile.am b/Makefile.am index 2eae8773fc..86ad16888a 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1071,6 +1071,7 @@ noinst_tests += \ test-env-replace \ test-strbuf \ test-strv \ + test-path-util \ test-strxcpyx \ test-unit-name \ test-unit-file \ @@ -1259,6 +1260,12 @@ test_strv_LDADD = \ libsystemd-units.la \ libsystemd-id128-internal.la +test_path_util_SOURCES = \ + src/test/test-path-util.c + +test_path_util_LDADD = \ + libsystemd-shared.la + test_strxcpyx_SOURCES = \ src/test/test-strxcpyx.c diff --git a/src/shared/path-util.h b/src/shared/path-util.h index ff523943dc..9347bc3a9b 100644 --- a/src/shared/path-util.h +++ b/src/shared/path-util.h @@ -1,7 +1,6 @@ /*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ -#ifndef foopathutilhfoo -#define foopathutilhfoo +#pragma once /*** This file is part of systemd. @@ -41,5 +40,3 @@ char **path_strv_canonicalize_uniq(char **l); int path_is_mount_point(const char *path, bool allow_symlink); int path_is_read_only_fs(const char *path); - -#endif diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c new file mode 100644 index 0000000000..2bca5ef604 --- /dev/null +++ b/src/test/test-path-util.c @@ -0,0 +1,85 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include "path-util.h" +#include "util.h" +#include "macro.h" + + +static void test_path(void) { + assert_se(path_equal("/goo", "/goo")); + assert_se(path_equal("//goo", "/goo")); + assert_se(path_equal("//goo/////", "/goo")); + assert_se(path_equal("goo/////", "goo")); + + assert_se(path_equal("/goo/boo", "/goo//boo")); + assert_se(path_equal("//goo/boo", "/goo/boo//")); + + assert_se(path_equal("/", "///")); + + assert_se(!path_equal("/x", "x/")); + assert_se(!path_equal("x/", "/")); + + assert_se(!path_equal("/x/./y", "x/y")); + assert_se(!path_equal("x/.y", "x/y")); + + assert_se(path_is_absolute("/")); + assert_se(!path_is_absolute("./")); + + assert_se(is_path("/dir")); + assert_se(is_path("a/b")); + assert_se(!is_path(".")); + + assert_se(streq(path_get_file_name("./aa/bb/../file.da."), "file.da.")); + assert_se(streq(path_get_file_name("/aa///.file"), ".file")); + assert_se(streq(path_get_file_name("/aa///file..."), "file...")); + assert_se(streq(path_get_file_name("file.../"), ".")); + +#define test_parent(x, y) { \ + char *z; \ + int r = path_get_parent(x, &z); \ + assert_se(r==0); \ + assert_se(streq(z, y)); \ + } + + test_parent("./aa/bb/../file.da.", "./aa/bb/.."); + test_parent("/aa///.file", "/aa///"); + test_parent("/aa///file...", "/aa///"); + test_parent("file.../", "file..."); + + assert_se(path_is_mount_point("/", true)); + assert_se(path_is_mount_point("/", false)); + + { + char p1[] = "aaa/bbb////ccc"; + char p2[] = "//aaa/.////ccc"; + char p3[] = "/./"; + + assert(path_equal(path_kill_slashes(p1), "aaa/bbb/ccc")); + assert(path_equal(path_kill_slashes(p2), "/aaa/./ccc")); + assert(path_equal(path_kill_slashes(p3), "/./")); + } +} + +int main(void) { + test_path(); + return 0; +} -- cgit v1.2.1 From 0db809489fd88a320ae1023ffe36a9965e9a91b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 29 Mar 2013 10:09:21 -0400 Subject: journalctl: fix --update-catalog with not --root arg grawity> `journalctl --update-catalog` from latest git prints: "Recursive mkdir .: Invalid argument" and "Failed to write : Invalid argument" --- src/journal/journalctl.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 3ae6482e99..c96d68dd4c 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -1032,11 +1032,16 @@ int main(int argc, char *argv[]) { arg_action == ACTION_LIST_CATALOG || arg_action == ACTION_DUMP_CATALOG) { - char _cleanup_free_ *database; - database = strjoin(arg_root, "/", CATALOG_DATABASE, NULL); - if (!database) { - r = log_oom(); - goto finish; + const char* database = CATALOG_DATABASE; + char _cleanup_free_ *copy = NULL; + if (arg_root) { + copy = strjoin(arg_root, "/", CATALOG_DATABASE, NULL); + if (!database) { + r = log_oom(); + goto finish; + } + path_kill_slashes(copy); + database = copy; } if (arg_action == ACTION_UPDATE_CATALOG) { -- cgit v1.2.1 From 8333c77edf8fd1654cd96f3f6ee0f078dd64b58b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 28 Mar 2013 09:24:15 -0400 Subject: Always use errno > 0 to help gcc gcc thinks that errno might be negative, and functions could return something positive on error (-errno). Should not matter in practice, but makes an -O4 build much quieter. --- src/fstab-generator/fstab-generator.c | 2 +- src/libsystemd-bus/sd-bus.c | 2 +- src/libsystemd-daemon/sd-daemon.c | 4 ++-- src/locale/localectl.c | 2 +- src/shared/calendarspec.c | 4 ++-- src/shared/fileio.c | 2 +- src/shared/socket-util.c | 2 +- src/shared/time-util.c | 4 ++-- src/shared/util.c | 6 +++--- src/shared/util.h | 2 +- src/systemctl/systemctl.c | 4 ++-- src/tmpfiles/tmpfiles.c | 2 +- 12 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 4eaa52d1c2..2790fc6e8e 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -69,7 +69,7 @@ static int mount_find_pri(struct mntent *me, int *ret) { errno = 0; r = strtoul(pri, &end, 10); - if (errno != 0) + if (errno > 0) return -errno; if (end == pri || (*end != ',' && *end != 0)) diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 6acc59e82c..08a218b7cc 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -507,7 +507,7 @@ static int parse_exec_address(sd_bus *b, const char **p, char **guid) { errno = 0; ul = strtoul(*p + 4, (char**) p, 10); - if (errno != 0 || **p != '=' || ul > 256) { + if (errno > 0 || **p != '=' || ul > 256) { r = -EINVAL; goto fail; } diff --git a/src/libsystemd-daemon/sd-daemon.c b/src/libsystemd-daemon/sd-daemon.c index 79d8ca3709..b1ff43132a 100644 --- a/src/libsystemd-daemon/sd-daemon.c +++ b/src/libsystemd-daemon/sd-daemon.c @@ -84,7 +84,7 @@ _sd_export_ int sd_listen_fds(int unset_environment) { errno = 0; l = strtoul(e, &p, 10); - if (errno != 0) { + if (errno > 0) { r = -errno; goto finish; } @@ -109,7 +109,7 @@ _sd_export_ int sd_listen_fds(int unset_environment) { errno = 0; l = strtoul(e, &p, 10); - if (errno != 0) { + if (errno > 0) { r = -errno; goto finish; } diff --git a/src/locale/localectl.c b/src/locale/localectl.c index 9f996dbc98..fc312894c6 100644 --- a/src/locale/localectl.c +++ b/src/locale/localectl.c @@ -421,7 +421,7 @@ static int add_locales_from_libdir (Set *locales) { errno = 0; } - if (errno != 0) { + if (errno > 0) { log_error("Failed to read locale directory: %m"); return -errno; } diff --git a/src/shared/calendarspec.c b/src/shared/calendarspec.c index cc680779b5..13f70d8e72 100644 --- a/src/shared/calendarspec.c +++ b/src/shared/calendarspec.c @@ -391,7 +391,7 @@ static int prepend_component(const char **p, CalendarComponent **c) { errno = 0; value = strtoul(*p, &e, 10); - if (errno != 0) + if (errno > 0) return -errno; if (e == *p) return -EINVAL; @@ -400,7 +400,7 @@ static int prepend_component(const char **p, CalendarComponent **c) { if (*e == '/') { repeat = strtoul(e+1, &ee, 10); - if (errno != 0) + if (errno > 0) return -errno; if (ee == e+1) return -EINVAL; diff --git a/src/shared/fileio.c b/src/shared/fileio.c index 0eca4416f8..1c7d485130 100644 --- a/src/shared/fileio.c +++ b/src/shared/fileio.c @@ -364,7 +364,7 @@ int write_env_file(const char *fname, char **l) { fflush(f); if (ferror(f)) { - if (errno != 0) + if (errno > 0) r = -errno; else r = -EIO; diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c index f6ddea3183..53457886e2 100644 --- a/src/shared/socket-util.c +++ b/src/shared/socket-util.c @@ -68,7 +68,7 @@ int socket_address_parse(SocketAddress *a, const char *s) { errno = 0; if (inet_pton(AF_INET6, n, &a->sockaddr.in6.sin6_addr) <= 0) { free(n); - return errno != 0 ? -errno : -EINVAL; + return errno > 0 ? -errno : -EINVAL; } free(n); diff --git a/src/shared/time-util.c b/src/shared/time-util.c index e192d5ef58..0c6deb66f4 100644 --- a/src/shared/time-util.c +++ b/src/shared/time-util.c @@ -547,7 +547,7 @@ int parse_usec(const char *t, usec_t *usec) { errno = 0; l = strtoll(p, &e, 10); - if (errno != 0) + if (errno > 0) return -errno; if (l < 0) @@ -627,7 +627,7 @@ int parse_nsec(const char *t, nsec_t *nsec) { errno = 0; l = strtoll(p, &e, 10); - if (errno != 0) + if (errno > 0) return -errno; if (l < 0) diff --git a/src/shared/util.c b/src/shared/util.c index 2241b79859..7281cc8ab8 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -2265,7 +2265,7 @@ int parse_bytes(const char *t, off_t *bytes) { errno = 0; l = strtoll(p, &e, 10); - if (errno != 0) + if (errno > 0) return -errno; if (l < 0) @@ -4191,7 +4191,7 @@ int get_user_creds( } if (!p) - return errno != 0 ? -errno : -ESRCH; + return errno > 0 ? -errno : -ESRCH; if (uid) *uid = p->pw_uid; @@ -4272,7 +4272,7 @@ int get_group_creds(const char **groupname, gid_t *gid) { } if (!g) - return errno != 0 ? -errno : -ESRCH; + return errno > 0 ? -errno : -ESRCH; if (gid) *gid = g->gr_gid; diff --git a/src/shared/util.h b/src/shared/util.h index aefde5f85a..485733f650 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -595,7 +595,7 @@ int create_tmp_dir(char template[], char** dir_name); #define FOREACH_DIRENT(de, d, on_error) \ for (errno = 0, de = readdir(d);; errno = 0, de = readdir(d)) \ if (!de) { \ - if (errno != 0) { \ + if (errno > 0) { \ on_error; \ } \ break; \ diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index edd136addd..f7ae47e7c7 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -4629,11 +4629,11 @@ static int parse_time_spec(const char *t, usec_t *_u) { errno = 0; hour = strtol(t, &e, 10); - if (errno != 0 || *e != ':' || hour < 0 || hour > 23) + if (errno > 0 || *e != ':' || hour < 0 || hour > 23) return -EINVAL; minute = strtol(e+1, &e, 10); - if (errno != 0 || *e != 0 || minute < 0 || minute > 59) + if (errno > 0 || *e != 0 || minute < 0 || minute > 59) return -EINVAL; n = now(CLOCK_REALTIME); diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index 614644a0ab..918702e06f 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -611,7 +611,7 @@ static int glob_item(Item *i, int (*action)(Item *, const char *)) { if ((k = glob(i->path, GLOB_NOSORT|GLOB_BRACE, NULL, &g)) != 0) { if (k != GLOB_NOMATCH) { - if (errno != 0) + if (errno > 0) errno = EIO; log_error("glob(%s) failed: %m", i->path); -- cgit v1.2.1 From 813ac7d3dded660486e3b22b27929d78328e3ab3 Mon Sep 17 00:00:00 2001 From: Maksim Melnikau Date: Fri, 29 Mar 2013 15:55:50 +0300 Subject: cgtop --help: default depth is 3 not 2 use default depth from variable for --help --- src/cgtop/cgtop.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cgtop/cgtop.c b/src/cgtop/cgtop.c index f80d51efed..eebebf0333 100644 --- a/src/cgtop/cgtop.c +++ b/src/cgtop/cgtop.c @@ -522,8 +522,8 @@ static void help(void) { " -d --delay=DELAY Specify delay\n" " -n --iterations=N Run for N iterations before exiting\n" " -b --batch Run in batch mode, accepting no input\n" - " --depth=DEPTH Maximum traversal depth (default: 2)\n", - program_invocation_short_name); + " --depth=DEPTH Maximum traversal depth (default: %d)\n", + program_invocation_short_name, arg_depth); } static void version(void) { -- cgit v1.2.1 From f04c0bd6ed2632f2e91c725388fd2f70859bfde5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 29 Mar 2013 15:47:18 +0100 Subject: utmp: make gcc shut up, we need to pass an int here, not size_t --- src/shared/utmp-wtmp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/utmp-wtmp.c b/src/shared/utmp-wtmp.c index 8717dbac2d..0a0180979b 100644 --- a/src/shared/utmp-wtmp.c +++ b/src/shared/utmp-wtmp.c @@ -408,7 +408,7 @@ int utmp_wall(const char *message, bool (*match_tty)(const char *tty)) { path = u->ut_line; else { if (asprintf(&buf, "/dev/%.*s", - sizeof(u->ut_line), u->ut_line) < 0) { + (int) sizeof(u->ut_line), u->ut_line) < 0) { r = -ENOMEM; goto finish; } -- cgit v1.2.1 From 8b3227c90d20eaa834bd5efc68007cf6b20fbdbb Mon Sep 17 00:00:00 2001 From: Koen Kooi Date: Fri, 29 Mar 2013 09:10:31 +0100 Subject: bootctl: fix help text It currently says 'time settings', change that to 'boot settings'. --- src/boot/bootctl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/boot/bootctl.c b/src/boot/bootctl.c index a920277545..af694fdf64 100644 --- a/src/boot/bootctl.c +++ b/src/boot/bootctl.c @@ -38,7 +38,7 @@ static int help(void) { " -h --help Show this help\n" " --version Show package version\n" "Commands:\n" - " status Show current time settings\n", + " status Show current boot settings\n", program_invocation_short_name); return 0; -- cgit v1.2.1 From 590f50130f3d30f660fee6781cf4ba97cba8f627 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 29 Mar 2013 10:45:05 -0400 Subject: test-path-util: fix botched test --- src/test/test-path-util.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c index 2bca5ef604..be686f29e7 100644 --- a/src/test/test-path-util.c +++ b/src/test/test-path-util.c @@ -51,7 +51,7 @@ static void test_path(void) { assert_se(streq(path_get_file_name("./aa/bb/../file.da."), "file.da.")); assert_se(streq(path_get_file_name("/aa///.file"), ".file")); assert_se(streq(path_get_file_name("/aa///file..."), "file...")); - assert_se(streq(path_get_file_name("file.../"), ".")); + assert_se(streq(path_get_file_name("file.../"), "")); #define test_parent(x, y) { \ char *z; \ -- cgit v1.2.1 From b5c03638d48c07aa0eaf13b5f54000c7133e1883 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 29 Mar 2013 18:28:43 +0100 Subject: update TODO --- TODO | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/TODO b/TODO index 0dbaad5032..10a2b8c8c0 100644 --- a/TODO +++ b/TODO @@ -44,6 +44,11 @@ Fedora 19: Features: +* seems that when we follow symlinks to units we prefer the symlink + destination path over /etc and /usr. We shouldn't do that. Instead + /etc should always override /run+/usr and also any symlink + destination. + * remove duplicate default deps logic from fstab-generator vs. mount.c * when isolating, try to figure out a way how we implicitly can order -- cgit v1.2.1 From 1dda524f05ebe2ccb72f9bbd58506527685aaa1e Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 29 Mar 2013 18:28:58 +0100 Subject: units: fix network-online.target fields --- units/network-online.target | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/units/network-online.target b/units/network-online.target index 8043717e4a..a40c44c9be 100644 --- a/units/network-online.target +++ b/units/network-online.target @@ -6,6 +6,6 @@ # (at your option) any later version. [Unit] -Description=Remote File System Setup +Description=Network is Online Documentation=man:systemd.special(7) -DefaultDependencies=no +Documentation=http://www.freedesktop.org/wiki/Software/systemd/NetworkTarget -- cgit v1.2.1 From a696dbef3474f3586b0f189245804b355a700795 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 29 Mar 2013 20:26:47 -0400 Subject: test-path-util: fix another stupid test failure --- src/test/test-path-util.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/test/test-path-util.c b/src/test/test-path-util.c index be686f29e7..127e17803f 100644 --- a/src/test/test-path-util.c +++ b/src/test/test-path-util.c @@ -19,6 +19,8 @@ along with systemd; If not, see . ***/ +#include + #include "path-util.h" #include "util.h" #include "macro.h" @@ -53,17 +55,19 @@ static void test_path(void) { assert_se(streq(path_get_file_name("/aa///file..."), "file...")); assert_se(streq(path_get_file_name("file.../"), "")); -#define test_parent(x, y) { \ - char *z; \ - int r = path_get_parent(x, &z); \ - assert_se(r==0); \ - assert_se(streq(z, y)); \ +#define test_parent(x, y) { \ + char *z; \ + int r = path_get_parent(x, &z); \ + printf("expected: %s\n", y ? y : "error"); \ + printf("actual: %s\n", r<0 ? "error" : z); \ + assert_se((y==NULL) ^ (r==0)); \ + assert_se(y==NULL || path_equal(z, y)); \ } test_parent("./aa/bb/../file.da.", "./aa/bb/.."); test_parent("/aa///.file", "/aa///"); test_parent("/aa///file...", "/aa///"); - test_parent("file.../", "file..."); + test_parent("file.../", NULL); assert_se(path_is_mount_point("/", true)); assert_se(path_is_mount_point("/", false)); -- cgit v1.2.1 From aa0bb9c2c4500696530957f715e097c00bd9e8c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 29 Mar 2013 13:09:52 -0400 Subject: Revert "build-sys: substitute strings in systemd.unit(5)" This reverts commits c78ab91132aab9193f3c17a9a206f8825ff4be84 and 185c3be03cec26023acc11b49553753aa7330a1d. It is simpler to just use includes... --- Makefile-man.am | 3 - Makefile.am | 2 +- make-man-rules.py | 20 +- man/.gitignore | 1 - man/systemd.unit.xml | 1329 +++++++++++++++++++++++++++++++++++++++++++++++ man/systemd.unit.xml.in | 1329 ----------------------------------------------- 6 files changed, 1334 insertions(+), 1350 deletions(-) create mode 100644 man/systemd.unit.xml delete mode 100644 man/systemd.unit.xml.in diff --git a/Makefile-man.am b/Makefile-man.am index 6e63135756..bc2f9b4696 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -896,6 +896,3 @@ MANPAGES_ALIAS += \ endif - -CLEANFILES += \ - man/systemd.unit.xml diff --git a/Makefile.am b/Makefile.am index 86ad16888a..0d572cd7b2 100644 --- a/Makefile.am +++ b/Makefile.am @@ -558,7 +558,7 @@ CLEANFILES += \ NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES)) -XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml $(top_srcdir)/man/*.xml.in $(top_builddir)/man/*.xml) +XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml) update-man-list: make-man-rules.py $(XML_GLOB) $(AM_V_GEN)$(PYTHON) $^ > $(top_srcdir)/Makefile-man.tmp $(AM_V_at)mv $(top_srcdir)/Makefile-man.tmp $(top_srcdir)/Makefile-man.am diff --git a/make-man-rules.py b/make-man-rules.py index 9f53b55bbd..46a586374f 100644 --- a/make-man-rules.py +++ b/make-man-rules.py @@ -21,7 +21,6 @@ from __future__ import print_function import xml.etree.ElementTree as tree import collections import sys -import os SECTION = '''\ MANPAGES += \\ @@ -46,12 +45,6 @@ HEADER = '''\ ''' -CLEANFILES = '''\ - -CLEANFILES += \\ - {cleanfiles} -''' - HTML_ALIAS_RULE = '''\ {}.html: {}.html $(html-alias) @@ -89,7 +82,7 @@ def create_rules(*xml_files): def mjoin(files): return ' \\\n\t'.join(sorted(files) or '#') -def make_makefile(rules, cleanfiles): +def make_makefile(rules): return HEADER + '\n'.join( (CONDITIONAL if conditional else SECTION).format( manpages=mjoin(set(rulegroup.values())), @@ -101,13 +94,8 @@ def make_makefile(rules, cleanfiles): for k,v in sorted(rulegroup.items()) if k != v), conditional=conditional) - for conditional,rulegroup in sorted(rules.items())) + \ - CLEANFILES.format(cleanfiles=mjoin(cleanfiles)) + for conditional,rulegroup in sorted(rules.items())) if __name__ == '__main__': - sources = set(sys.argv[1:]) - basenames = [os.path.basename(source) for source in sources] - spares = set([source for source in sources - if os.path.basename(source) + '.in' in basenames]) - rules = create_rules(*(sources - spares)) - print(make_makefile(rules, spares), end='') + rules = create_rules(*sys.argv[1:]) + print(make_makefile(rules), end='') diff --git a/man/.gitignore b/man/.gitignore index fcf4dabd2a..3798c75f1d 100644 --- a/man/.gitignore +++ b/man/.gitignore @@ -1,5 +1,4 @@ /systemd.directives.xml /systemd.index.xml -/systemd.unit.xml /*.[13578] /python-systemd/ diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml new file mode 100644 index 0000000000..2196e73bb3 --- /dev/null +++ b/man/systemd.unit.xml @@ -0,0 +1,1329 @@ + + + + + + + + + systemd.unit + systemd + + + + Developer + Lennart + Poettering + lennart@poettering.net + + + + + + systemd.unit + 5 + + + + systemd.unit + Unit configuration + + + + service.service, + socket.socket, + device.device, + mount.mount, + automount.automount, + swap.swap, + target.target, + path.path, + timer.timer, + snapshot.snapshot + + /etc/systemd/system/* +/run/systemd/system/* +/usr/lib/systemd/system/* +... + + + /etc/systemd/user/* +/run/systemd/user/* +/usr/lib/systemd/user/* +... + + + + + Description + + A unit configuration file encodes information + about a service, a socket, a device, a mount point, an + automount point, a swap file or partition, a start-up + target, a file system path, or a timer controlled and + supervised by + systemd1. The + syntax is inspired by XDG + Desktop Entry Specification .desktop files, which are in turn + inspired by Microsoft Windows + .ini files. + + This man page lists the common configuration + options of all the unit types. These options need to + be configured in the [Unit] or [Install] + sections of the unit files. + + In addition to the generic [Unit] and [Install] + sections described here, each unit may have a + type-specific section, e.g. [Service] for a service + unit. See the respective man pages for more + information: + systemd.service5, + systemd.socket5, + systemd.device5, + systemd.mount5, + systemd.automount5, + systemd.swap5, + systemd.target5, + systemd.path5, + systemd.timer5, + systemd.snapshot5. + + + Unit files are loaded from a set of paths + determined during compilation, described in the next section. + + + Unit files may contain additional options on top + of those listed here. If systemd encounters an unknown + option it will write a warning log message but + continue loading the unit. If an option is prefixed + with it is ignored completely by + systemd. Applications may use this to include + additional information in the unit files. + + Boolean arguments used in unit files can be + written in various formats. For positive settings the + strings , , + and are + equivalent. For negative settings the strings + , , + and are + equivalent. + + Time span values encoded in unit files can be + written in various formats. A stand-alone number + specifies a time in seconds. If suffixed with a time + unit, the unit is honored. A concatenation of multiple + values with units is supported, in which case the + values are added up. Example: "50" refers to 50 + seconds; "2min 200ms" refers to 2 minutes plus 200 + milliseconds, i.e. 120200ms. The following time units + are understood: s, min, h, d, w, ms, us. For details + see + systemd.time7. + + Empty lines and lines starting with # or ; are + ignored. This may be used for commenting. Lines ending + in a backslash are concatenated with the following + line while reading and the backslash is replaced by a + space character. This may be used to wrap long lines. + + Along with a unit file + foo.service the directory + foo.service.wants/ may exist. All + unit files symlinked from such a directory are + implicitly added as dependencies of type + Wanted= to the unit. This is useful + to hook units into the start-up of other units, + without having to modify their unit files. For details + about the semantics of Wanted= see + below. The preferred way to create symlinks in the + .wants/ directory of a unit file + is with the enable command of the + systemctl1 + tool which reads information from the [Install] + section of unit files (see below). A similar + functionality exists for Requires= + type dependencies as well, the directory suffix is + .requires/ in this case. + + Along with a unit file + foo.service a directory + foo.service.d/ may exist. All + files with the suffix .conf from + this directory will be parsed after the file itself is + parsed. This is useful to alter or add configuration + settings to a unit, without having to modify their + unit files. Make sure that the file that is included + has the appropriate section headers before any + directive. + + If a line starts with + followed by a file name, the specified file will be + parsed at this point. Make sure that the file that is + included has the appropriate section headers before + any directives. + + Note that while systemd offers a flexible + dependency system between units it is recommended to + use this functionality only sparingly and instead rely + on techniques such as bus-based or socket-based + activation which make dependencies implicit, resulting + in a both simpler and more flexible system. + + Some unit names reflect paths existing in the + file system name space. Example: a device unit + dev-sda.device refers to a device + with the device node /dev/sda in + the file system namespace. If this applies a special + way to escape the path name is used, so that the + result is usable as part of a file name. Basically, + given a path, "/" is replaced by "-", and all + unprintable characters and the "-" are replaced by + C-style "\x20" escapes. The root directory "/" is + encoded as single dash, while otherwise the initial + and ending "/" is removed from all paths during + transformation. This escaping is reversible. + + Optionally, units may be instantiated from a + template file at runtime. This allows creation of + multiple units from a single configuration file. If + systemd looks for a unit configuration file it will + first search for the literal unit name in the + filesystem. If that yields no success and the unit + name contains an @ character, systemd will look for a + unit template that shares the same name but with the + instance string (i.e. the part between the @ character + and the suffix) removed. Example: if a service + getty@tty3.service is requested + and no file by that name is found, systemd will look + for getty@.service and + instantiate a service from that configuration file if + it is found. + + To refer to the instance string from + within the configuration file you may use the special + %i specifier in many of the + configuration options. See below for details. + + If a unit file is empty (i.e. has the file size + 0) or is symlinked to /dev/null + its configuration will not be loaded and it appears + with a load state of masked, and + cannot be activated. Use this as an effective way to + fully disable a unit, making it impossible to start it + even manually. + + The unit file format is covered by the + Interface + Stability Promise. + + + + + Unit load path + + Unit files are loaded from a set of paths + determined during compilation, described in the two + tables below. Unit files found in directories higher + in the hierarchy override files with the same name + lower in the hierarchy, thus allowing overrides. + + + When systemd is running in session mode + () and the variable + $SYSTEMD_UNIT_PATH is set, this + contents of this variable overrides the unit load + path. + + + + + Load path when running in system mode (<option>--system</option>). + + + + + + + + Path + Description + + + + + /run/systemd/generator.early + Generated units + + + @SYSTEM_CONFIG_UNIT_PATH@ + Local configuration + + + /etc/systemd/system + + + /run/systemd/systemd + Volatile units + + + /run/systemd/generator + Generated units + + + /usr/local/lib/systemd/system + Units for local packages + + + @systemunitdir@ + Systemd package configuration + + + /usr/lib/systemd/system + Units for installed packages + + + /lib/systemd/system + + + /run/systemd/generator.late + Generated units + + + +
+ + + + Load path when running in session mode (<option>--user</option>). + + + + + + + + Path + Description + + + + + /tmp/systemd-generator.early.XXXXXX + Generated units + + + @USER_CONFIG_UNIT_PATH@ + Local configuration + + + /etc/systemd/user + + + /run/systemd/user + Volatile units + + + /tmp/systemd-generator.XXXXXX + Generated units + + + /usr/local/lib/systemd/user + Units for local packages + + + /usr/local/share/systemd/user + + + @userunitdir@ + Systemd package configuration + + + /usr/lib/systemd/user + Units for installed packages + + + /usr/share/systemd/user + + + /tmp/systemd-generator.late.XXXXXX + Generated units + + + +
+ + Note: the paths listed above are set at + compilation time and differ between distributions. The + "authorative" list is printed by + systemd at during start and daemon + reconfiguration. + + Additional units might be loaded into systemd + ("linked") from directories not on the unit load + path. See the link command for + systemctl1. + +
+ + + Options + + Unit file may include a [Unit] section, which + carries generic information about the unit that is not + dependent on the type of unit: + + + + + Description= + A free-form string + describing the unit. This is intended + for use in UIs to show descriptive + information along with the unit + name. + + + + Documentation= + A space separated list + of URIs referencing documentation for + this unit or its + configuration. Accepted are only URIs + of the types + http://, + https://, + file:, + info:, + man:. For more + information about the syntax of these + URIs see + uri7. The + URIs should be listed in order of + relevance, starting with the most + relevant. It is a good idea to first + reference documentation that explains + what the unit's purpose is, followed + by how it is configured, followed by + any other related documentation. This + option may be specified more than once + in which case the specified list of + URIs is merged. If the empty string is + assigned to this option the list is + reset and all prior assignments will + have no effect. + + + + Requires= + + Configures requirement + dependencies on other units. If this + unit gets activated, the units listed + here will be activated as well. If one + of the other units gets deactivated or + its activation fails, this unit will + be deactivated. This option may be + specified more than once, in which + case requirement dependencies for all + listed names are created. Note that + requirement dependencies do not + influence the order in which services + are started or stopped. This has to be + configured independently with the + After= or + Before= options. If + a unit + foo.service + requires a unit + bar.service as + configured with + Requires= and no + ordering is configured with + After= or + Before=, then both + units will be started simultaneously + and without any delay between them if + foo.service is + activated. Often it is a better choice + to use Wants= + instead of + Requires= in order + to achieve a system that is more + robust when dealing with failing + services. + + Note that dependencies of this + type may also be configured outside of + the unit configuration file by + adding a symlink to a + .requires/ directory + accompanying the unit file. For + details see above. + + + + RequiresOverridable= + + Similar to + Requires=. + Dependencies listed in + RequiresOverridable= + which cannot be fulfilled or fail to + start are ignored if the startup was + explicitly requested by the user. If + the start-up was pulled in indirectly + by some dependency or automatic + start-up of units that is not + requested by the user this dependency + must be fulfilled and otherwise the + transaction fails. Hence, this option + may be used to configure dependencies + that are normally honored unless the + user explicitly starts up the unit, in + which case whether they failed or not + is irrelevant. + + + + Requisite= + RequisiteOverridable= + + Similar to + Requires= + and RequiresOverridable=, respectively. However, + if a unit listed here is not started + already it will not be started and the + transaction fails + immediately. + + + + Wants= + + A weaker version of + Requires=. A unit + listed in this option will be started + if the configuring unit is. However, + if the listed unit fails to start up + or cannot be added to the transaction + this has no impact on the validity of + the transaction as a whole. This is + the recommended way to hook start-up + of one unit to the start-up of another + unit. + + Note that dependencies of this + type may also be configured outside of + the unit configuration file by + adding a symlink to a + .wants/ directory + accompanying the unit file. For + details see above. + + + + BindsTo= + + Configures requirement + dependencies, very similar in style to + Requires=, however + in addition to this behavior it also + declares that this unit is stopped + when any of the units listed suddenly + disappears. Units can suddenly, + unexpectedly disappear if a service + terminates on its own choice, a device + is unplugged or a mount point + unmounted without involvement of + systemd. + + + + PartOf= + + Configures dependencies + similar to Requires=, + but limited to stopping and restarting + of units. When systemd stops or restarts + the units listed here, the action is + propagated to this unit. + Note that this is a one way dependency - + changes to this unit do not affect the + listed units. + + + + + Conflicts= + + Configures negative + requirement dependencies. If a unit + has a + Conflicts= setting + on another unit, starting the former + will stop the latter and vice + versa. Note that this setting is + independent of and orthogonal to the + After= and + Before= ordering + dependencies. + + If a unit A that conflicts with + a unit B is scheduled to be started at + the same time as B, the transaction + will either fail (in case both are + required part of the transaction) or + be modified to be fixed (in case one + or both jobs are not a required part + of the transaction). In the latter + case the job that is not the required + will be removed, or in case both are + not required the unit that conflicts + will be started and the unit that is + conflicted is + stopped. + + + + Before= + After= + + Configures ordering + dependencies between units. If a unit + foo.service + contains a setting + + and both units are being started, + bar.service's + start-up is delayed until + foo.service is + started up. Note that this setting is + independent of and orthogonal to the + requirement dependencies as configured + by Requires=. It is + a common pattern to include a unit + name in both the + After= and + Requires= option in + which case the unit listed will be + started before the unit that is + configured with these options. This + option may be specified more than + once, in which case ordering + dependencies for all listed names are + created. After= is + the inverse of + Before=, i.e. while + After= ensures that + the configured unit is started after + the listed unit finished starting up, + Before= ensures the + opposite, i.e. that the configured + unit is fully started up before the + listed unit is started. Note that when + two units with an ordering dependency + between them are shut down, the + inverse of the start-up order is + applied. i.e. if a unit is configured + with After= on + another unit, the former is stopped + before the latter if both are shut + down. If one unit with an ordering + dependency on another unit is shut + down while the latter is started up, + the shut down is ordered before the + start-up regardless whether the + ordering dependency is actually of + type After= or + Before=. If two + units have no ordering dependencies + between them they are shut down + or started up simultaneously, and + no ordering takes + place. + + + + OnFailure= + + Lists one or more + units that are activated when this + unit enters the + 'failed' + state. + + + + PropagatesReloadTo= + ReloadPropagatedFrom= + + Lists one or more + units where reload requests on the + unit will be propagated to/on the + other unit will be propagated + from. Issuing a reload request on a + unit will automatically also enqueue a + reload request on all units that the + reload request shall be propagated to + via these two + settings. + + + + RequiresMountsFor= + + Takes a space + separated list of absolute paths. Automatically + adds dependencies of type + Requires= and + After= for all + mount units required to access the + specified path. + + + + OnFailureIsolate= + + Takes a boolean + argument. If the + unit listed in + OnFailure= will be + enqueued in isolation mode, i.e. all + units that are not its dependency will + be stopped. If this is set only a + single unit may be listed in + OnFailure=. Defaults + to + . + + + + IgnoreOnIsolate= + + Takes a boolean + argument. If + this unit will not be stopped when + isolating another unit. Defaults to + . + + + + IgnoreOnSnapshot= + + Takes a boolean + argument. If + this unit will not be included in + snapshots. Defaults to + for device and + snapshot units, + for the others. + + + + StopWhenUnneeded= + + Takes a boolean + argument. If + this unit will be stopped when it is + no longer used. Note that in order to + minimize the work to be executed, + systemd will not stop units by default + unless they are conflicting with other + units, or the user explicitly + requested their shut down. If this + option is set, a unit will be + automatically cleaned up if no other + active unit requires it. Defaults to + . + + + + RefuseManualStart= + RefuseManualStop= + + Takes a boolean + argument. If + this unit can only be activated + or deactivated indirectly. In + this case explicit start-up + or termination requested by the + user is denied, however if it is + started or stopped as a + dependency of another unit, start-up + or termination will succeed. This + is mostly a safety feature to ensure + that the user does not accidentally + activate units that are not intended + to be activated explicitly, and not + accidentally deactivate units that are + not intended to be deactivated. + These options default to + . + + + + AllowIsolate= + + Takes a boolean + argument. If + this unit may be used with the + systemctl isolate + command. Otherwise this will be + refused. It probably is a good idea to + leave this disabled except for target + units that shall be used similar to + runlevels in SysV init systems, just + as a precaution to avoid unusable + system states. This option defaults to + . + + + + DefaultDependencies= + + Takes a boolean + argument. If + (the default), a few default + dependencies will implicitly be + created for the unit. The actual + dependencies created depend on the + unit type. For example, for service + units, these dependencies ensure that + the service is started only after + basic system initialization is + completed and is properly terminated on + system shutdown. See the respective + man pages for details. Generally, only + services involved with early boot or + late shutdown should set this option + to . It is + highly recommended to leave this + option enabled for the majority of + common units. If set to + this option + does not disable all implicit + dependencies, just non-essential + ones. + + + + JobTimeoutSec= + + When clients are + waiting for a job of this unit to + complete, time out after the specified + time. If this time limit is reached + the job will be cancelled, the unit + however will not change state or even + enter the 'failed' + mode. This value defaults to 0 (job + timeouts disabled), except for device + units. NB: this timeout is independent + from any unit-specific timeout (for + example, the timeout set with + Timeout= in service + units) as the job timeout has no + effect on the unit itself, only on the + job that might be pending for it. Or + in other words: unit-specific timeouts + are useful to abort unit state + changes, and revert them. The job + timeout set with this option however + is useful to abort only the job + waiting for the unit state to + change. + + + + ConditionPathExists= + ConditionPathExistsGlob= + ConditionPathIsDirectory= + ConditionPathIsSymbolicLink= + ConditionPathIsMountPoint= + ConditionPathIsReadWrite= + ConditionDirectoryNotEmpty= + ConditionFileNotEmpty= + ConditionFileIsExecutable= + ConditionKernelCommandLine= + ConditionVirtualization= + ConditionSecurity= + ConditionCapability= + ConditionHost= + ConditionACPower= + ConditionNull= + + Before starting a unit + verify that the specified condition is + true. If it is not true the starting + of the unit will be skipped, however + all ordering dependencies of it are + still respected. A failing condition + will not result in the unit being + moved into a failure state. The + condition is checked at the time the + queued start job is to be + executed. + + With + ConditionPathExists= + a file existence condition is + checked before a unit is started. If + the specified absolute path name does + not exist the condition will + fail. If the absolute path name passed + to + ConditionPathExists= + is prefixed with an exclamation mark + ('!'), the test is negated, and the unit + is only started if the path does not + exist. + + ConditionPathExistsGlob= + is similar to + ConditionPathExists=, + but checks for the existence of at + least one file or directory matching + the specified globbing pattern. + + ConditionPathIsDirectory= + is similar to + ConditionPathExists= + but verifies whether a certain path + exists and is a + directory. + + ConditionPathIsSymbolicLink= + is similar to + ConditionPathExists= + but verifies whether a certain path + exists and is a symbolic + link. + + ConditionPathIsMountPoint= + is similar to + ConditionPathExists= + but verifies whether a certain path + exists and is a mount + point. + + ConditionPathIsReadWrite= + is similar to + ConditionPathExists= + but verifies whether the underlying + file system is readable and writable + (i.e. not mounted + read-only). + + ConditionDirectoryNotEmpty= + is similar to + ConditionPathExists= + but verifies whether a certain path + exists and is a non-empty + directory. + + ConditionFileNotEmpty= + is similar to + ConditionPathExists= + but verifies whether a certain path + exists and refers to a regular file + with a non-zero size. + + ConditionFileIsExecutable= + is similar to + ConditionPathExists= + but verifies whether a certain path + exists, is a regular file and marked + executable. + + Similar, + ConditionKernelCommandLine= + may be used to check whether a + specific kernel command line option is + set (or if prefixed with the + exclamation mark unset). The argument + must either be a single word, or an + assignment (i.e. two words, separated + '='). In the former + case the kernel command line is + searched for the word appearing as is, + or as left hand side of an + assignment. In the latter case the + exact assignment is looked for with + right and left hand side + matching. + + ConditionVirtualization= + may be used to check whether the + system is executed in a virtualized + environment and optionally test + whether it is a specific + implementation. Takes either boolean + value to check if being executed in + any virtualized environment, or one of + vm and + container to test + against a generic type of + virtualization solution, or one of + qemu, + kvm, + vmware, + microsoft, + oracle, + xen, + bochs, + chroot, + openvz, + lxc, + lxc-libvirt, + systemd-nspawn to + test against a specific + implementation. If multiple + virtualization technologies are nested + only the innermost is considered. The + test may be negated by prepending an + exclamation mark. + + ConditionSecurity= + may be used to check whether the given + security module is enabled on the + system. Currently the only recognized + value is selinux. + The test may be negated by prepending + an exclamation + mark. + + ConditionCapability= + may be used to check whether the given + capability exists in the capability + bounding set of the service manager + (i.e. this does not check whether + capability is actually available in + the permitted or effective sets, see + capabilities7 + for details). Pass a capability name + such as CAP_MKNOD, + possibly prefixed with an exclamation + mark to negate the check. + + ConditionHost= + may be used to match against the + host name or machine ID of the + host. This either takes a host name + string (optionally with shell style + globs) which is tested against the + locally set host name as returned by + gethostname2, + or a machine ID formatted as string + (see + machine-id5). + The test may be negated by prepending + an exclamation mark. + + ConditionACPower= + may be used to check whether the + system has AC power, or is exclusively + battery powered at the time of + activation of the unit. This takes a + boolean argument. If set to + true the condition + will hold only if at least one AC + connector of the system is connected + to a power source, or if no AC + connectors are known. Conversely, if + set to false the + condition will hold only if there is + at least one AC connector known and + all AC connectors are disconnected + from a power source. + + Finally, + ConditionNull= may + be used to add a constant condition + check value to the unit. It takes a + boolean argument. If set to + false the condition + will always fail, otherwise + succeed. + + If multiple conditions are + specified the unit will be executed if + all of them apply (i.e. a logical AND + is applied). Condition checks can be + prefixed with a pipe symbol (|) in + which case a condition becomes a + triggering condition. If at least one + triggering condition is defined for a + unit then the unit will be executed if + at least one of the triggering + conditions apply and all of the + non-triggering conditions. If you + prefix an argument with the pipe + symbol and an exclamation mark the + pipe symbol must be passed first, the + exclamation second. Except for + ConditionPathIsSymbolicLink=, + all path checks follow symlinks. If + any of these options is assigned the + empty string the list of conditions is + reset completely, all previous + condition settings (of any kind) will + have no effect. + + + + SourcePath= + A path to a + configuration file this unit has been + generated from. This is primarily + useful for implementation of generator + tools that convert configuration from + an external configuration file format + into native unit files. Thus + functionality should not be used in + normal units. + + + + Unit file may include a [Install] section, which + carries installation information for the unit. This + section is not interpreted by + systemd1 + during runtime. It is used exclusively by the + enable and + disable commands of the + systemctl1 + tool during installation of a unit: + + + + Alias= + + Additional names this + unit shall be installed under. The + names listed here must have the same + suffix (i.e. type) as the unit file + name. This option may be specified + more than once, in which case all + listed names are used. At installation + time, + systemctl enable + will create symlinks from these names + to the unit file name. + + + + WantedBy= + RequiredBy= + + Installs a symlink in + the .wants/ + or .requires/ + subdirectory for a unit, respectively. This has the + effect that when the listed unit name + is activated the unit listing it is + activated + too. WantedBy=foo.service + in a service + bar.service is + mostly equivalent to + Alias=foo.service.wants/bar.service + in the same file. + + + + Also= + + Additional units to + install when this unit is + installed. If the user requests + installation of a unit with this + option configured, + systemctl enable + will automatically install units + listed in this option as + well. + + + + The following specifiers are interpreted in the + Install section: %n, %N, %p, %i, %U, %u, %m, %H, %b. + For their meaning see the next section. + + + + + Specifiers + + Many settings resolve specifiers which may be + used to write generic unit files referring to runtime + or unit parameters that are replaced when the unit + files are loaded. The following specifiers are + understood: + + + Specifiers available in unit files + + + + + + + Specifier + Meaning + Details + + + + + %n + Full unit name + + + + %N + Unescaped full unit name + + + + %p + Prefix name + For instantiated units this refers to the string before the @. For non-instantiated units this refers to to the name of the unit with the type suffix removed. + + + %P + Unescaped prefix name + + + + %i + Instance name + For instantiated units: this is the string between the @ character and the suffix. + + + %I + Unescaped instance name + + + + %f + Unescaped file name + This is either the unescaped instance name (if applicable) with / prepended (if applicable), or the prefix name similarly prepended with /. + + + %c + Control group path of the unit + + + + %r + Root control group path of systemd + + + + %R + Parent directory of the root control group path of systemd + + + + %t + Runtime socket dir + This is either /run (for the system manager) or $XDG_RUNTIME_DIR (for user managers). + + + %u + User name + This is the name of the configured user of the unit, or (if none is set) the user running the systemd instance. + + + %U + User UID + This is the UID of the configured user of the unit, or (if none is set) the user running the systemd instance. + + + %h + User home directory + This is the home directory of the configured user of the unit, or (if none is set) the user running the systemd instance. + + + %s + User shell + This is the shell of the configured + user of the unit, or (if none is set) the user + running the systemd instance. If the user is + root (UID equal to 0), the + shell configured in account database is + ignored and /bin/sh is + always used. + + + + %m + Machine ID + The machine ID of the running system, formatted as string. See machine-id5 for more information. + + + %b + Boot ID + The boot ID of the running system, formatted as string. See random4 for more information. + + + %H + Host name + The host name of the running system. + + + %% + Escaped % + Single percent sign. + + + +
+
+ + + See Also + + systemd1, + systemctl8, + systemd.special7, + systemd.service5, + systemd.socket5, + systemd.device5, + systemd.mount5, + systemd.automount5, + systemd.swap5, + systemd.target5, + systemd.path5, + systemd.timer5, + systemd.snapshot5, + systemd.time7, + capabilities7, + systemd.directives7 + + + +
diff --git a/man/systemd.unit.xml.in b/man/systemd.unit.xml.in deleted file mode 100644 index 2196e73bb3..0000000000 --- a/man/systemd.unit.xml.in +++ /dev/null @@ -1,1329 +0,0 @@ - - - - - - - - - systemd.unit - systemd - - - - Developer - Lennart - Poettering - lennart@poettering.net - - - - - - systemd.unit - 5 - - - - systemd.unit - Unit configuration - - - - service.service, - socket.socket, - device.device, - mount.mount, - automount.automount, - swap.swap, - target.target, - path.path, - timer.timer, - snapshot.snapshot - - /etc/systemd/system/* -/run/systemd/system/* -/usr/lib/systemd/system/* -... - - - /etc/systemd/user/* -/run/systemd/user/* -/usr/lib/systemd/user/* -... - - - - - Description - - A unit configuration file encodes information - about a service, a socket, a device, a mount point, an - automount point, a swap file or partition, a start-up - target, a file system path, or a timer controlled and - supervised by - systemd1. The - syntax is inspired by XDG - Desktop Entry Specification .desktop files, which are in turn - inspired by Microsoft Windows - .ini files. - - This man page lists the common configuration - options of all the unit types. These options need to - be configured in the [Unit] or [Install] - sections of the unit files. - - In addition to the generic [Unit] and [Install] - sections described here, each unit may have a - type-specific section, e.g. [Service] for a service - unit. See the respective man pages for more - information: - systemd.service5, - systemd.socket5, - systemd.device5, - systemd.mount5, - systemd.automount5, - systemd.swap5, - systemd.target5, - systemd.path5, - systemd.timer5, - systemd.snapshot5. - - - Unit files are loaded from a set of paths - determined during compilation, described in the next section. - - - Unit files may contain additional options on top - of those listed here. If systemd encounters an unknown - option it will write a warning log message but - continue loading the unit. If an option is prefixed - with it is ignored completely by - systemd. Applications may use this to include - additional information in the unit files. - - Boolean arguments used in unit files can be - written in various formats. For positive settings the - strings , , - and are - equivalent. For negative settings the strings - , , - and are - equivalent. - - Time span values encoded in unit files can be - written in various formats. A stand-alone number - specifies a time in seconds. If suffixed with a time - unit, the unit is honored. A concatenation of multiple - values with units is supported, in which case the - values are added up. Example: "50" refers to 50 - seconds; "2min 200ms" refers to 2 minutes plus 200 - milliseconds, i.e. 120200ms. The following time units - are understood: s, min, h, d, w, ms, us. For details - see - systemd.time7. - - Empty lines and lines starting with # or ; are - ignored. This may be used for commenting. Lines ending - in a backslash are concatenated with the following - line while reading and the backslash is replaced by a - space character. This may be used to wrap long lines. - - Along with a unit file - foo.service the directory - foo.service.wants/ may exist. All - unit files symlinked from such a directory are - implicitly added as dependencies of type - Wanted= to the unit. This is useful - to hook units into the start-up of other units, - without having to modify their unit files. For details - about the semantics of Wanted= see - below. The preferred way to create symlinks in the - .wants/ directory of a unit file - is with the enable command of the - systemctl1 - tool which reads information from the [Install] - section of unit files (see below). A similar - functionality exists for Requires= - type dependencies as well, the directory suffix is - .requires/ in this case. - - Along with a unit file - foo.service a directory - foo.service.d/ may exist. All - files with the suffix .conf from - this directory will be parsed after the file itself is - parsed. This is useful to alter or add configuration - settings to a unit, without having to modify their - unit files. Make sure that the file that is included - has the appropriate section headers before any - directive. - - If a line starts with - followed by a file name, the specified file will be - parsed at this point. Make sure that the file that is - included has the appropriate section headers before - any directives. - - Note that while systemd offers a flexible - dependency system between units it is recommended to - use this functionality only sparingly and instead rely - on techniques such as bus-based or socket-based - activation which make dependencies implicit, resulting - in a both simpler and more flexible system. - - Some unit names reflect paths existing in the - file system name space. Example: a device unit - dev-sda.device refers to a device - with the device node /dev/sda in - the file system namespace. If this applies a special - way to escape the path name is used, so that the - result is usable as part of a file name. Basically, - given a path, "/" is replaced by "-", and all - unprintable characters and the "-" are replaced by - C-style "\x20" escapes. The root directory "/" is - encoded as single dash, while otherwise the initial - and ending "/" is removed from all paths during - transformation. This escaping is reversible. - - Optionally, units may be instantiated from a - template file at runtime. This allows creation of - multiple units from a single configuration file. If - systemd looks for a unit configuration file it will - first search for the literal unit name in the - filesystem. If that yields no success and the unit - name contains an @ character, systemd will look for a - unit template that shares the same name but with the - instance string (i.e. the part between the @ character - and the suffix) removed. Example: if a service - getty@tty3.service is requested - and no file by that name is found, systemd will look - for getty@.service and - instantiate a service from that configuration file if - it is found. - - To refer to the instance string from - within the configuration file you may use the special - %i specifier in many of the - configuration options. See below for details. - - If a unit file is empty (i.e. has the file size - 0) or is symlinked to /dev/null - its configuration will not be loaded and it appears - with a load state of masked, and - cannot be activated. Use this as an effective way to - fully disable a unit, making it impossible to start it - even manually. - - The unit file format is covered by the - Interface - Stability Promise. - - - - - Unit load path - - Unit files are loaded from a set of paths - determined during compilation, described in the two - tables below. Unit files found in directories higher - in the hierarchy override files with the same name - lower in the hierarchy, thus allowing overrides. - - - When systemd is running in session mode - () and the variable - $SYSTEMD_UNIT_PATH is set, this - contents of this variable overrides the unit load - path. - - - - - Load path when running in system mode (<option>--system</option>). - - - - - - - - Path - Description - - - - - /run/systemd/generator.early - Generated units - - - @SYSTEM_CONFIG_UNIT_PATH@ - Local configuration - - - /etc/systemd/system - - - /run/systemd/systemd - Volatile units - - - /run/systemd/generator - Generated units - - - /usr/local/lib/systemd/system - Units for local packages - - - @systemunitdir@ - Systemd package configuration - - - /usr/lib/systemd/system - Units for installed packages - - - /lib/systemd/system - - - /run/systemd/generator.late - Generated units - - - -
- - - - Load path when running in session mode (<option>--user</option>). - - - - - - - - Path - Description - - - - - /tmp/systemd-generator.early.XXXXXX - Generated units - - - @USER_CONFIG_UNIT_PATH@ - Local configuration - - - /etc/systemd/user - - - /run/systemd/user - Volatile units - - - /tmp/systemd-generator.XXXXXX - Generated units - - - /usr/local/lib/systemd/user - Units for local packages - - - /usr/local/share/systemd/user - - - @userunitdir@ - Systemd package configuration - - - /usr/lib/systemd/user - Units for installed packages - - - /usr/share/systemd/user - - - /tmp/systemd-generator.late.XXXXXX - Generated units - - - -
- - Note: the paths listed above are set at - compilation time and differ between distributions. The - "authorative" list is printed by - systemd at during start and daemon - reconfiguration. - - Additional units might be loaded into systemd - ("linked") from directories not on the unit load - path. See the link command for - systemctl1. - -
- - - Options - - Unit file may include a [Unit] section, which - carries generic information about the unit that is not - dependent on the type of unit: - - - - - Description= - A free-form string - describing the unit. This is intended - for use in UIs to show descriptive - information along with the unit - name. - - - - Documentation= - A space separated list - of URIs referencing documentation for - this unit or its - configuration. Accepted are only URIs - of the types - http://, - https://, - file:, - info:, - man:. For more - information about the syntax of these - URIs see - uri7. The - URIs should be listed in order of - relevance, starting with the most - relevant. It is a good idea to first - reference documentation that explains - what the unit's purpose is, followed - by how it is configured, followed by - any other related documentation. This - option may be specified more than once - in which case the specified list of - URIs is merged. If the empty string is - assigned to this option the list is - reset and all prior assignments will - have no effect. - - - - Requires= - - Configures requirement - dependencies on other units. If this - unit gets activated, the units listed - here will be activated as well. If one - of the other units gets deactivated or - its activation fails, this unit will - be deactivated. This option may be - specified more than once, in which - case requirement dependencies for all - listed names are created. Note that - requirement dependencies do not - influence the order in which services - are started or stopped. This has to be - configured independently with the - After= or - Before= options. If - a unit - foo.service - requires a unit - bar.service as - configured with - Requires= and no - ordering is configured with - After= or - Before=, then both - units will be started simultaneously - and without any delay between them if - foo.service is - activated. Often it is a better choice - to use Wants= - instead of - Requires= in order - to achieve a system that is more - robust when dealing with failing - services. - - Note that dependencies of this - type may also be configured outside of - the unit configuration file by - adding a symlink to a - .requires/ directory - accompanying the unit file. For - details see above. - - - - RequiresOverridable= - - Similar to - Requires=. - Dependencies listed in - RequiresOverridable= - which cannot be fulfilled or fail to - start are ignored if the startup was - explicitly requested by the user. If - the start-up was pulled in indirectly - by some dependency or automatic - start-up of units that is not - requested by the user this dependency - must be fulfilled and otherwise the - transaction fails. Hence, this option - may be used to configure dependencies - that are normally honored unless the - user explicitly starts up the unit, in - which case whether they failed or not - is irrelevant. - - - - Requisite= - RequisiteOverridable= - - Similar to - Requires= - and RequiresOverridable=, respectively. However, - if a unit listed here is not started - already it will not be started and the - transaction fails - immediately. - - - - Wants= - - A weaker version of - Requires=. A unit - listed in this option will be started - if the configuring unit is. However, - if the listed unit fails to start up - or cannot be added to the transaction - this has no impact on the validity of - the transaction as a whole. This is - the recommended way to hook start-up - of one unit to the start-up of another - unit. - - Note that dependencies of this - type may also be configured outside of - the unit configuration file by - adding a symlink to a - .wants/ directory - accompanying the unit file. For - details see above. - - - - BindsTo= - - Configures requirement - dependencies, very similar in style to - Requires=, however - in addition to this behavior it also - declares that this unit is stopped - when any of the units listed suddenly - disappears. Units can suddenly, - unexpectedly disappear if a service - terminates on its own choice, a device - is unplugged or a mount point - unmounted without involvement of - systemd. - - - - PartOf= - - Configures dependencies - similar to Requires=, - but limited to stopping and restarting - of units. When systemd stops or restarts - the units listed here, the action is - propagated to this unit. - Note that this is a one way dependency - - changes to this unit do not affect the - listed units. - - - - - Conflicts= - - Configures negative - requirement dependencies. If a unit - has a - Conflicts= setting - on another unit, starting the former - will stop the latter and vice - versa. Note that this setting is - independent of and orthogonal to the - After= and - Before= ordering - dependencies. - - If a unit A that conflicts with - a unit B is scheduled to be started at - the same time as B, the transaction - will either fail (in case both are - required part of the transaction) or - be modified to be fixed (in case one - or both jobs are not a required part - of the transaction). In the latter - case the job that is not the required - will be removed, or in case both are - not required the unit that conflicts - will be started and the unit that is - conflicted is - stopped. - - - - Before= - After= - - Configures ordering - dependencies between units. If a unit - foo.service - contains a setting - - and both units are being started, - bar.service's - start-up is delayed until - foo.service is - started up. Note that this setting is - independent of and orthogonal to the - requirement dependencies as configured - by Requires=. It is - a common pattern to include a unit - name in both the - After= and - Requires= option in - which case the unit listed will be - started before the unit that is - configured with these options. This - option may be specified more than - once, in which case ordering - dependencies for all listed names are - created. After= is - the inverse of - Before=, i.e. while - After= ensures that - the configured unit is started after - the listed unit finished starting up, - Before= ensures the - opposite, i.e. that the configured - unit is fully started up before the - listed unit is started. Note that when - two units with an ordering dependency - between them are shut down, the - inverse of the start-up order is - applied. i.e. if a unit is configured - with After= on - another unit, the former is stopped - before the latter if both are shut - down. If one unit with an ordering - dependency on another unit is shut - down while the latter is started up, - the shut down is ordered before the - start-up regardless whether the - ordering dependency is actually of - type After= or - Before=. If two - units have no ordering dependencies - between them they are shut down - or started up simultaneously, and - no ordering takes - place. - - - - OnFailure= - - Lists one or more - units that are activated when this - unit enters the - 'failed' - state. - - - - PropagatesReloadTo= - ReloadPropagatedFrom= - - Lists one or more - units where reload requests on the - unit will be propagated to/on the - other unit will be propagated - from. Issuing a reload request on a - unit will automatically also enqueue a - reload request on all units that the - reload request shall be propagated to - via these two - settings. - - - - RequiresMountsFor= - - Takes a space - separated list of absolute paths. Automatically - adds dependencies of type - Requires= and - After= for all - mount units required to access the - specified path. - - - - OnFailureIsolate= - - Takes a boolean - argument. If the - unit listed in - OnFailure= will be - enqueued in isolation mode, i.e. all - units that are not its dependency will - be stopped. If this is set only a - single unit may be listed in - OnFailure=. Defaults - to - . - - - - IgnoreOnIsolate= - - Takes a boolean - argument. If - this unit will not be stopped when - isolating another unit. Defaults to - . - - - - IgnoreOnSnapshot= - - Takes a boolean - argument. If - this unit will not be included in - snapshots. Defaults to - for device and - snapshot units, - for the others. - - - - StopWhenUnneeded= - - Takes a boolean - argument. If - this unit will be stopped when it is - no longer used. Note that in order to - minimize the work to be executed, - systemd will not stop units by default - unless they are conflicting with other - units, or the user explicitly - requested their shut down. If this - option is set, a unit will be - automatically cleaned up if no other - active unit requires it. Defaults to - . - - - - RefuseManualStart= - RefuseManualStop= - - Takes a boolean - argument. If - this unit can only be activated - or deactivated indirectly. In - this case explicit start-up - or termination requested by the - user is denied, however if it is - started or stopped as a - dependency of another unit, start-up - or termination will succeed. This - is mostly a safety feature to ensure - that the user does not accidentally - activate units that are not intended - to be activated explicitly, and not - accidentally deactivate units that are - not intended to be deactivated. - These options default to - . - - - - AllowIsolate= - - Takes a boolean - argument. If - this unit may be used with the - systemctl isolate - command. Otherwise this will be - refused. It probably is a good idea to - leave this disabled except for target - units that shall be used similar to - runlevels in SysV init systems, just - as a precaution to avoid unusable - system states. This option defaults to - . - - - - DefaultDependencies= - - Takes a boolean - argument. If - (the default), a few default - dependencies will implicitly be - created for the unit. The actual - dependencies created depend on the - unit type. For example, for service - units, these dependencies ensure that - the service is started only after - basic system initialization is - completed and is properly terminated on - system shutdown. See the respective - man pages for details. Generally, only - services involved with early boot or - late shutdown should set this option - to . It is - highly recommended to leave this - option enabled for the majority of - common units. If set to - this option - does not disable all implicit - dependencies, just non-essential - ones. - - - - JobTimeoutSec= - - When clients are - waiting for a job of this unit to - complete, time out after the specified - time. If this time limit is reached - the job will be cancelled, the unit - however will not change state or even - enter the 'failed' - mode. This value defaults to 0 (job - timeouts disabled), except for device - units. NB: this timeout is independent - from any unit-specific timeout (for - example, the timeout set with - Timeout= in service - units) as the job timeout has no - effect on the unit itself, only on the - job that might be pending for it. Or - in other words: unit-specific timeouts - are useful to abort unit state - changes, and revert them. The job - timeout set with this option however - is useful to abort only the job - waiting for the unit state to - change. - - - - ConditionPathExists= - ConditionPathExistsGlob= - ConditionPathIsDirectory= - ConditionPathIsSymbolicLink= - ConditionPathIsMountPoint= - ConditionPathIsReadWrite= - ConditionDirectoryNotEmpty= - ConditionFileNotEmpty= - ConditionFileIsExecutable= - ConditionKernelCommandLine= - ConditionVirtualization= - ConditionSecurity= - ConditionCapability= - ConditionHost= - ConditionACPower= - ConditionNull= - - Before starting a unit - verify that the specified condition is - true. If it is not true the starting - of the unit will be skipped, however - all ordering dependencies of it are - still respected. A failing condition - will not result in the unit being - moved into a failure state. The - condition is checked at the time the - queued start job is to be - executed. - - With - ConditionPathExists= - a file existence condition is - checked before a unit is started. If - the specified absolute path name does - not exist the condition will - fail. If the absolute path name passed - to - ConditionPathExists= - is prefixed with an exclamation mark - ('!'), the test is negated, and the unit - is only started if the path does not - exist. - - ConditionPathExistsGlob= - is similar to - ConditionPathExists=, - but checks for the existence of at - least one file or directory matching - the specified globbing pattern. - - ConditionPathIsDirectory= - is similar to - ConditionPathExists= - but verifies whether a certain path - exists and is a - directory. - - ConditionPathIsSymbolicLink= - is similar to - ConditionPathExists= - but verifies whether a certain path - exists and is a symbolic - link. - - ConditionPathIsMountPoint= - is similar to - ConditionPathExists= - but verifies whether a certain path - exists and is a mount - point. - - ConditionPathIsReadWrite= - is similar to - ConditionPathExists= - but verifies whether the underlying - file system is readable and writable - (i.e. not mounted - read-only). - - ConditionDirectoryNotEmpty= - is similar to - ConditionPathExists= - but verifies whether a certain path - exists and is a non-empty - directory. - - ConditionFileNotEmpty= - is similar to - ConditionPathExists= - but verifies whether a certain path - exists and refers to a regular file - with a non-zero size. - - ConditionFileIsExecutable= - is similar to - ConditionPathExists= - but verifies whether a certain path - exists, is a regular file and marked - executable. - - Similar, - ConditionKernelCommandLine= - may be used to check whether a - specific kernel command line option is - set (or if prefixed with the - exclamation mark unset). The argument - must either be a single word, or an - assignment (i.e. two words, separated - '='). In the former - case the kernel command line is - searched for the word appearing as is, - or as left hand side of an - assignment. In the latter case the - exact assignment is looked for with - right and left hand side - matching. - - ConditionVirtualization= - may be used to check whether the - system is executed in a virtualized - environment and optionally test - whether it is a specific - implementation. Takes either boolean - value to check if being executed in - any virtualized environment, or one of - vm and - container to test - against a generic type of - virtualization solution, or one of - qemu, - kvm, - vmware, - microsoft, - oracle, - xen, - bochs, - chroot, - openvz, - lxc, - lxc-libvirt, - systemd-nspawn to - test against a specific - implementation. If multiple - virtualization technologies are nested - only the innermost is considered. The - test may be negated by prepending an - exclamation mark. - - ConditionSecurity= - may be used to check whether the given - security module is enabled on the - system. Currently the only recognized - value is selinux. - The test may be negated by prepending - an exclamation - mark. - - ConditionCapability= - may be used to check whether the given - capability exists in the capability - bounding set of the service manager - (i.e. this does not check whether - capability is actually available in - the permitted or effective sets, see - capabilities7 - for details). Pass a capability name - such as CAP_MKNOD, - possibly prefixed with an exclamation - mark to negate the check. - - ConditionHost= - may be used to match against the - host name or machine ID of the - host. This either takes a host name - string (optionally with shell style - globs) which is tested against the - locally set host name as returned by - gethostname2, - or a machine ID formatted as string - (see - machine-id5). - The test may be negated by prepending - an exclamation mark. - - ConditionACPower= - may be used to check whether the - system has AC power, or is exclusively - battery powered at the time of - activation of the unit. This takes a - boolean argument. If set to - true the condition - will hold only if at least one AC - connector of the system is connected - to a power source, or if no AC - connectors are known. Conversely, if - set to false the - condition will hold only if there is - at least one AC connector known and - all AC connectors are disconnected - from a power source. - - Finally, - ConditionNull= may - be used to add a constant condition - check value to the unit. It takes a - boolean argument. If set to - false the condition - will always fail, otherwise - succeed. - - If multiple conditions are - specified the unit will be executed if - all of them apply (i.e. a logical AND - is applied). Condition checks can be - prefixed with a pipe symbol (|) in - which case a condition becomes a - triggering condition. If at least one - triggering condition is defined for a - unit then the unit will be executed if - at least one of the triggering - conditions apply and all of the - non-triggering conditions. If you - prefix an argument with the pipe - symbol and an exclamation mark the - pipe symbol must be passed first, the - exclamation second. Except for - ConditionPathIsSymbolicLink=, - all path checks follow symlinks. If - any of these options is assigned the - empty string the list of conditions is - reset completely, all previous - condition settings (of any kind) will - have no effect. - - - - SourcePath= - A path to a - configuration file this unit has been - generated from. This is primarily - useful for implementation of generator - tools that convert configuration from - an external configuration file format - into native unit files. Thus - functionality should not be used in - normal units. - - - - Unit file may include a [Install] section, which - carries installation information for the unit. This - section is not interpreted by - systemd1 - during runtime. It is used exclusively by the - enable and - disable commands of the - systemctl1 - tool during installation of a unit: - - - - Alias= - - Additional names this - unit shall be installed under. The - names listed here must have the same - suffix (i.e. type) as the unit file - name. This option may be specified - more than once, in which case all - listed names are used. At installation - time, - systemctl enable - will create symlinks from these names - to the unit file name. - - - - WantedBy= - RequiredBy= - - Installs a symlink in - the .wants/ - or .requires/ - subdirectory for a unit, respectively. This has the - effect that when the listed unit name - is activated the unit listing it is - activated - too. WantedBy=foo.service - in a service - bar.service is - mostly equivalent to - Alias=foo.service.wants/bar.service - in the same file. - - - - Also= - - Additional units to - install when this unit is - installed. If the user requests - installation of a unit with this - option configured, - systemctl enable - will automatically install units - listed in this option as - well. - - - - The following specifiers are interpreted in the - Install section: %n, %N, %p, %i, %U, %u, %m, %H, %b. - For their meaning see the next section. - - - - - Specifiers - - Many settings resolve specifiers which may be - used to write generic unit files referring to runtime - or unit parameters that are replaced when the unit - files are loaded. The following specifiers are - understood: - - - Specifiers available in unit files - - - - - - - Specifier - Meaning - Details - - - - - %n - Full unit name - - - - %N - Unescaped full unit name - - - - %p - Prefix name - For instantiated units this refers to the string before the @. For non-instantiated units this refers to to the name of the unit with the type suffix removed. - - - %P - Unescaped prefix name - - - - %i - Instance name - For instantiated units: this is the string between the @ character and the suffix. - - - %I - Unescaped instance name - - - - %f - Unescaped file name - This is either the unescaped instance name (if applicable) with / prepended (if applicable), or the prefix name similarly prepended with /. - - - %c - Control group path of the unit - - - - %r - Root control group path of systemd - - - - %R - Parent directory of the root control group path of systemd - - - - %t - Runtime socket dir - This is either /run (for the system manager) or $XDG_RUNTIME_DIR (for user managers). - - - %u - User name - This is the name of the configured user of the unit, or (if none is set) the user running the systemd instance. - - - %U - User UID - This is the UID of the configured user of the unit, or (if none is set) the user running the systemd instance. - - - %h - User home directory - This is the home directory of the configured user of the unit, or (if none is set) the user running the systemd instance. - - - %s - User shell - This is the shell of the configured - user of the unit, or (if none is set) the user - running the systemd instance. If the user is - root (UID equal to 0), the - shell configured in account database is - ignored and /bin/sh is - always used. - - - - %m - Machine ID - The machine ID of the running system, formatted as string. See machine-id5 for more information. - - - %b - Boot ID - The boot ID of the running system, formatted as string. See random4 for more information. - - - %H - Host name - The host name of the running system. - - - %% - Escaped % - Single percent sign. - - - -
-
- - - See Also - - systemd1, - systemctl8, - systemd.special7, - systemd.service5, - systemd.socket5, - systemd.device5, - systemd.mount5, - systemd.automount5, - systemd.swap5, - systemd.target5, - systemd.path5, - systemd.timer5, - systemd.snapshot5, - systemd.time7, - capabilities7, - systemd.directives7 - - - -
-- cgit v1.2.1 From 4e7b3c20e00c40372c551bd42c57e40500f4ceb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 29 Mar 2013 13:59:51 -0400 Subject: build-sys: generate sed substitution from a list I want to use the substitutions in different form for xml entities. --- Makefile.am | 83 ++++++++++++++++++++++++++++++++----------------------------- 1 file changed, 43 insertions(+), 40 deletions(-) diff --git a/Makefile.am b/Makefile.am index 0d572cd7b2..d5b319e2cb 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3712,48 +3712,51 @@ clean-sphinx: -rm -rf docs/html/python-systemd/ # ------------------------------------------------------------------------------ +substitutions = \ + '|rootlibexecdir=$(rootlibexecdir)|' \ + '|rootbindir=$(rootbindir)|' \ + '|bindir=$(bindir)|' \ + '|SYSTEMCTL=$(rootbindir)/systemctl|' \ + '|SYSTEMD_NOTIFY=$(rootbindir)/systemd-notify|' \ + '|pkgsysconfdir=$(pkgsysconfdir)|' \ + '|SYSTEM_CONFIG_UNIT_PATH=$(pkgsysconfdir)/system|' \ + '|USER_CONFIG_UNIT_PATH=$(pkgsysconfdir)/user|' \ + '|pkgdatadir=$(pkgdatadir)|' \ + '|systemunitdir=$(systemunitdir)|' \ + '|userunitdir=$(userunitdir)|' \ + '|systempresetdir=$(systempresetdir)|' \ + '|userpresetdir=$(userpresetdir)|' \ + '|udevhwdbdir=$(udevhwdbdir)|' \ + '|udevrulesdir=$(udevrulesdir)|' \ + '|catalogdir=$(catalogdir)|' \ + '|tmpfilesdir=$(tmpfilesdir)|' \ + '|sysctldir=$(sysctldir)|' \ + '|PACKAGE_VERSION=$(PACKAGE_VERSION)|' \ + '|PACKAGE_NAME=$(PACKAGE_NAME)|' \ + '|PACKAGE_URL=$(PACKAGE_URL)|' \ + '|RANDOM_SEED=$(localstatedir)/lib/random-seed|' \ + '|prefix=$(prefix)|' \ + '|exec_prefix=$(exec_prefix)|' \ + '|libdir=$(libdir)|' \ + '|includedir=$(includedir)|' \ + '|VERSION=$(VERSION)|' \ + '|rootprefix=$(rootprefix)|' \ + '|udevlibexecdir=$(udevlibexecdir)|' \ + '|SUSHELL=$(SUSHELL)|' \ + '|DEBUGTTY=$(DEBUGTTY)|' \ + '|KILL=$(KILL)|' \ + '|QUOTAON=$(QUOTAON)|' \ + '|QUOTACHECK=$(QUOTACHECK)|' \ + '|SYSTEM_SYSVINIT_PATH=$(sysvinitdir)|' \ + '|VARLOGDIR=$(varlogdir)|' \ + '|RC_LOCAL_SCRIPT_PATH_START=$(RC_LOCAL_SCRIPT_PATH_START)|' \ + '|RC_LOCAL_SCRIPT_PATH_STOP=$(RC_LOCAL_SCRIPT_PATH_STOP)|' \ + '|PYTHON=$(PYTHON)|' \ + '|PYTHON_BINARY=$(PYTHON_BINARY)|' + SED_PROCESS = \ $(AM_V_GEN)$(MKDIR_P) $(dir $@) && \ - $(SED) -e 's,@rootlibexecdir\@,$(rootlibexecdir),g' \ - -e 's,@rootbindir\@,$(rootbindir),g' \ - -e 's,@bindir\@,$(bindir),g' \ - -e 's,@SYSTEMCTL\@,$(rootbindir)/systemctl,g' \ - -e 's,@SYSTEMD_NOTIFY\@,$(rootbindir)/systemd-notify,g' \ - -e 's,@pkgsysconfdir\@,$(pkgsysconfdir),g' \ - -e 's,@SYSTEM_CONFIG_UNIT_PATH\@,$(pkgsysconfdir)/system,g' \ - -e 's,@USER_CONFIG_UNIT_PATH\@,$(pkgsysconfdir)/user,g' \ - -e 's,@pkgdatadir\@,$(pkgdatadir),g' \ - -e 's,@systemunitdir\@,$(systemunitdir),g' \ - -e 's,@userunitdir\@,$(userunitdir),g' \ - -e 's,@systempresetdir\@,$(systempresetdir),g' \ - -e 's,@userpresetdir\@,$(userpresetdir),g' \ - -e 's,@udevhwdbdir\@,$(udevhwdbdir),g' \ - -e 's,@udevrulesdir\@,$(udevrulesdir),g' \ - -e 's,@catalogdir\@,$(catalogdir),g' \ - -e 's,@tmpfilesdir\@,$(tmpfilesdir),g' \ - -e 's,@sysctldir\@,$(sysctldir),g' \ - -e 's,@PACKAGE_VERSION\@,$(PACKAGE_VERSION),g' \ - -e 's,@PACKAGE_NAME\@,$(PACKAGE_NAME),g' \ - -e 's,@PACKAGE_URL\@,$(PACKAGE_URL),g' \ - -e 's,@RANDOM_SEED\@,$(localstatedir)/lib/random-seed,g' \ - -e 's,@prefix\@,$(prefix),g' \ - -e 's,@exec_prefix\@,$(exec_prefix),g' \ - -e 's,@libdir\@,$(libdir),g' \ - -e 's,@includedir\@,$(includedir),g' \ - -e 's,@VERSION\@,$(VERSION),g' \ - -e 's,@rootprefix\@,$(rootprefix),g' \ - -e 's,@udevlibexecdir\@,$(udevlibexecdir),g' \ - -e 's,@SUSHELL\@,$(SUSHELL),g' \ - -e 's,@DEBUGTTY\@,$(DEBUGTTY),g' \ - -e 's,@KILL\@,$(KILL),g' \ - -e 's,@QUOTAON\@,$(QUOTAON),g' \ - -e 's,@QUOTACHECK\@,$(QUOTACHECK),g' \ - -e 's,@SYSTEM_SYSVINIT_PATH\@,$(sysvinitdir),g' \ - -e 's,@VARLOGDIR\@,$(varlogdir),g' \ - -e 's,@RC_LOCAL_SCRIPT_PATH_START\@,$(RC_LOCAL_SCRIPT_PATH_START),g' \ - -e 's,@RC_LOCAL_SCRIPT_PATH_STOP\@,$(RC_LOCAL_SCRIPT_PATH_STOP),g' \ - -e 's,@PYTHON\@,$(PYTHON),g' \ - -e 's,@PYTHON_BINARY\@,$(PYTHON_BINARY),g' \ + $(SED) $(subst '|,-e 's|@,$(subst =,\@|,$(subst |',|g',$(substitutions)))) \ < $< > $@ units/%: units/%.in Makefile -- cgit v1.2.1 From 1a13e31d275430ffba713c8a68ee7f22093c29e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 29 Mar 2013 14:22:27 -0400 Subject: build-sys,man: use XML entities to substite strings This makes it easier to add substitutions to man pages, avoiding the separate transformation step. mkdir -p's are removed from the rule, because xsltproc will will create directories on it's own. All in all, two or three forks per man page are avoided, which should make things marginally faster. Unfortunately python parsers must too be tweaked to handle entities. This isn't particularly easy: with lxml a custom Resolver can be used, but the stdlib etree doesn't support external entities *at all*. So when running without lxml, the entities are just removed. Right now it doesn't matter, since the entities are not indexed anyway. But I intend to add indexing of filenames in the near future, and then the index generated without lxml might be missing a few lines. Oh well. --- .gitignore | 2 ++ Makefile.am | 43 +++++++++++++++++++++++++++---------------- make-directive-index.py | 12 ++++-------- make-man-index.py | 16 +++++++--------- make-man-rules.py | 4 ++-- man/.gitignore | 2 +- man/systemd.unit.xml | 13 ++++++++----- xml_helper.py | 40 ++++++++++++++++++++++++++++++++++++++++ 8 files changed, 91 insertions(+), 41 deletions(-) create mode 100644 xml_helper.py diff --git a/.gitignore b/.gitignore index c3bb81b1f7..58a5000211 100644 --- a/.gitignore +++ b/.gitignore @@ -139,6 +139,8 @@ *.lo *.o *.stamp +*.pyc +__pycache__/ *~ .deps/ .dirstamp diff --git a/Makefile.am b/Makefile.am index d5b319e2cb..92bd542767 100644 --- a/Makefile.am +++ b/Makefile.am @@ -97,6 +97,7 @@ rootbindir=$(rootprefix)/bin rootlibexecdir=$(rootprefix)/lib/systemd CLEANFILES = $(BUILT_SOURCES) +DISTCLEANFILES = EXTRA_DIST = BUILT_SOURCES = INSTALL_EXEC_HOOKS = @@ -556,9 +557,10 @@ noinst_DATA += \ CLEANFILES += \ man/index.html +XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml) NON_INDEX_XML_FILES = $(filter-out man/systemd.index.xml,$(XML_FILES)) +SOURCE_XML_FILES = $(filter-out man/systemd.directives.xml,$(NON_INDEX_XML_FILES)) -XML_GLOB = $(wildcard $(top_srcdir)/man/*.xml) update-man-list: make-man-rules.py $(XML_GLOB) $(AM_V_GEN)$(PYTHON) $^ > $(top_srcdir)/Makefile-man.tmp $(AM_V_at)mv $(top_srcdir)/Makefile-man.tmp $(top_srcdir)/Makefile-man.am @@ -566,11 +568,11 @@ update-man-list: make-man-rules.py $(XML_GLOB) man/systemd.index.xml: make-man-index.py $(NON_INDEX_XML_FILES) $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_GEN)$(PYTHON) $^ > $@ + $(AM_V_GEN)$(PYTHON) $< $@ $(filter-out $<,$^) -man/systemd.directives.xml: make-directive-index.py $(filter-out man/systemd.directives.xml,$(NON_INDEX_XML_FILES)) +man/systemd.directives.xml: make-directive-index.py $(SOURCE_XML_FILES) $(AM_V_at)$(MKDIR_P) $(dir $@) - $(AM_V_GEN)$(PYTHON) $^ > $@ + $(AM_V_GEN)$(PYTHON) $< $@ $(filter-out $<,$^) EXTRA_DIST += \ man/systemd.index.xml \ @@ -591,7 +593,8 @@ EXTRA_DIST += \ $(HTML_ALIAS) \ $(dist_MANS) \ make-man-index.py \ - make-directive-index.py + make-directive-index.py \ + xml_helper.py # ------------------------------------------------------------------------------ noinst_LTLIBRARIES += \ @@ -3819,38 +3822,46 @@ CLEANFILES += \ # ------------------------------------------------------------------------------ if ENABLE_MANPAGES +man/custom-entities.ent: Makefile + $(AM_V_GEN)$(MKDIR_P) $(dir $@) + $(AM_V_GEN)(echo '' && \ + echo '$(subst '|,,$(substitutions))))') \ + > $@ # ' + +DISTCLEANFILES += \ + man/custom-entities.ent + XSLTPROC_FLAGS = \ --nonet \ --stringparam man.output.quietly 1 \ --stringparam funcsynopsis.style ansi \ --stringparam man.authors.section.enabled 0 \ --stringparam man.copyright.section.enabled 0 \ - --stringparam systemd.version $(VERSION) + --stringparam systemd.version $(VERSION) \ + --path '$(builddir)/man:$(srcdir)/man' XSLTPROC_PROCESS_MAN = \ - $(AM_V_XSLT)$(MKDIR_P) $(dir $@) && \ - $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(srcdir)/man/custom-man.xsl $< + $(AM_V_XSLT)$(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(srcdir)/man/custom-man.xsl $< XSLTPROC_PROCESS_HTML = \ - $(AM_V_XSLT)$(MKDIR_P) $(dir $@) && \ - $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(srcdir)/man/custom-html.xsl $< + $(AM_V_XSLT)$(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(srcdir)/man/custom-html.xsl $< -man/%.1: man/%.xml man/custom-man.xsl +man/%.1: man/%.xml man/custom-man.xsl man/custom-entities.ent $(XSLTPROC_PROCESS_MAN) -man/%.3: man/%.xml man/custom-man.xsl +man/%.3: man/%.xml man/custom-man.xsl man/custom-entities.ent $(XSLTPROC_PROCESS_MAN) -man/%.5: man/%.xml man/custom-man.xsl +man/%.5: man/%.xml man/custom-man.xsl man/custom-entities.ent $(XSLTPROC_PROCESS_MAN) -man/%.7: man/%.xml man/custom-man.xsl +man/%.7: man/%.xml man/custom-man.xsl man/custom-entities.ent $(XSLTPROC_PROCESS_MAN) -man/%.8: man/%.xml man/custom-man.xsl +man/%.8: man/%.xml man/custom-man.xsl man/custom-entities.ent $(XSLTPROC_PROCESS_MAN) -man/%.html: man/%.xml man/custom-html.xsl +man/%.html: man/%.xml man/custom-html.xsl man/custom-entities.ent $(XSLTPROC_PROCESS_HTML) define html-alias diff --git a/make-directive-index.py b/make-directive-index.py index 039efaa434..99e7bfaf28 100755 --- a/make-directive-index.py +++ b/make-directive-index.py @@ -19,13 +19,8 @@ import sys import collections -try: - from lxml import etree as tree - PRETTY = dict(pretty_print=True) -except ImportError: - import xml.etree.ElementTree as tree - PRETTY = {} import re +from xml_helper import * TEMPLATE = '''\ @@ -173,7 +168,7 @@ referring to {pages} individual manual pages. ''' def _extract_directives(directive_groups, formatting, page): - t = tree.parse(page) + t = xml_parse(page) section = t.find('./refmeta/manvolnum').text pagename = t.find('./refmeta/refentrytitle').text @@ -282,4 +277,5 @@ def make_page(*xml_files): return _make_page(template, directive_groups, formatting) if __name__ == '__main__': - tree.dump(make_page(*sys.argv[1:]), **PRETTY) + with open(sys.argv[1], 'wb') as f: + f.write(xml_print(make_page(*sys.argv[2:]))) diff --git a/make-man-index.py b/make-man-index.py index d9ab5cc752..74a47b821a 100755 --- a/make-man-index.py +++ b/make-man-index.py @@ -19,14 +19,10 @@ # along with systemd; If not, see . import collections -try: - from lxml import etree as tree - PRETTY = dict(pretty_print=True) -except ImportError: - import xml.etree.ElementTree as tree - PRETTY = {} import sys import re +from xml_helper import * + MDASH = ' — ' if sys.version_info.major >= 3 else ' -- ' TEMPLATE = '''\ @@ -72,6 +68,7 @@ SUMMARY = '''\ COUNTS = '\ This index contains {count} entries, referring to {pages} individual manual pages.' + def check_id(page, t): id = t.getroot().get('id') if not re.search('/' + id + '[.]', page): @@ -80,7 +77,7 @@ def check_id(page, t): def make_index(pages): index = collections.defaultdict(list) for p in pages: - t = tree.parse(p) + t = xml_parse(p) check_id(p, t) section = t.find('./refmeta/manvolnum').text refname = t.find('./refnamediv/refname').text @@ -123,7 +120,7 @@ def add_summary(template, indexpages): para = template.find(".//para[@id='counts']") para.text = COUNTS.format(count=count, pages=len(pages)) -def make_page(xml_files): +def make_page(*xml_files): template = tree.fromstring(TEMPLATE) index = make_index(xml_files) @@ -135,4 +132,5 @@ def make_page(xml_files): return template if __name__ == '__main__': - tree.dump(make_page(sys.argv[1:]), **PRETTY) + with open(sys.argv[1], 'wb') as f: + f.write(xml_print(make_page(*sys.argv[2:]))) diff --git a/make-man-rules.py b/make-man-rules.py index 46a586374f..ad601f874f 100644 --- a/make-man-rules.py +++ b/make-man-rules.py @@ -18,9 +18,9 @@ # along with systemd; If not, see . from __future__ import print_function -import xml.etree.ElementTree as tree import collections import sys +from xml_helper import * SECTION = '''\ MANPAGES += \\ @@ -54,7 +54,7 @@ def man(page, number): return 'man/{}.{}'.format(page, number) def add_rules(rules, name): - xml = tree.parse(name) + xml = xml_parse(name) # print('parsing {}'.format(name), file=sys.stderr) conditional = xml.getroot().get('conditional') or '' rulegroup = rules[conditional] diff --git a/man/.gitignore b/man/.gitignore index 3798c75f1d..bf5eeab938 100644 --- a/man/.gitignore +++ b/man/.gitignore @@ -1,4 +1,4 @@ /systemd.directives.xml /systemd.index.xml /*.[13578] -/python-systemd/ +/custom-entities.ent diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 2196e73bb3..47c50315ae 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -1,6 +1,9 @@ + "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd" [ + +%entities; +]> \n"); ps = ps_first; while (ps->next_ps) { - char _cleanup_free_ *enc_name = NULL; + _cleanup_free_ char *enc_name = NULL; ps = ps->next_ps; if (!ps) continue; @@ -711,7 +711,7 @@ static int ps_filter(struct ps_struct *ps) { } static void svg_do_initcall(int count_only) { - FILE _cleanup_pclose_ *f = NULL; + _cleanup_pclose_ FILE *f = NULL; double t; char func[256]; int ret; @@ -815,7 +815,7 @@ static void svg_ps_bars(void) { /* pass 2 - ps boxes */ ps = ps_first; while ((ps = get_next_ps(ps))) { - char _cleanup_free_ *enc_name = NULL; + _cleanup_free_ char *enc_name = NULL; double starttime; int t; diff --git a/src/cgls/cgls.c b/src/cgls/cgls.c index e01a7b13a1..8ddd733dfd 100644 --- a/src/cgls/cgls.c +++ b/src/cgls/cgls.c @@ -157,7 +157,7 @@ int main(int argc, char *argv[]) { } } else { - char _cleanup_free_ *p; + _cleanup_free_ char *p; p = get_current_dir_name(); if (!p) { @@ -170,7 +170,7 @@ int main(int argc, char *argv[]) { r = show_cgroup_by_path(p, NULL, 0, arg_kernel_threads, output_flags); } else { - char _cleanup_free_ *root = NULL; + _cleanup_free_ char *root = NULL; r = cg_get_root_path(&root); if (r < 0) { diff --git a/src/core/dbus-socket.c b/src/core/dbus-socket.c index 728958131d..77d98ea0fd 100644 --- a/src/core/dbus-socket.c +++ b/src/core/dbus-socket.c @@ -114,7 +114,7 @@ static int bus_socket_append_listen(DBusMessageIter *i, const char *property, vo LIST_FOREACH(port, p, s->ports) { const char *type = socket_port_type_to_string(p); - char _cleanup_free_ *address = NULL; + _cleanup_free_ char *address = NULL; const char *a; if (!dbus_message_iter_open_container(&array, DBUS_TYPE_STRUCT, NULL, &stru)) diff --git a/src/core/dbus-unit.c b/src/core/dbus-unit.c index 8c1ce61151..575f8eb36a 100644 --- a/src/core/dbus-unit.c +++ b/src/core/dbus-unit.c @@ -314,7 +314,7 @@ static int bus_unit_append_cgroups(DBusMessageIter *i, const char *property, voi return -ENOMEM; LIST_FOREACH(by_unit, cgb, u->cgroup_bondings) { - char _cleanup_free_ *t = NULL; + _cleanup_free_ char *t = NULL; bool success; t = cgroup_bonding_to_string(cgb); @@ -341,7 +341,7 @@ static int bus_unit_append_cgroup_attrs(DBusMessageIter *i, const char *property return -ENOMEM; LIST_FOREACH(by_unit, a, u->cgroup_attributes) { - char _cleanup_free_ *v = NULL; + _cleanup_free_ char *v = NULL; bool success; if (a->semantics && a->semantics->map_write) diff --git a/src/core/execute.c b/src/core/execute.c index 26cde24f15..5767037acd 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -997,7 +997,7 @@ int exec_spawn(ExecCommand *command, int r; char *line; int socket_fd; - char _cleanup_strv_free_ **files_env = NULL; + _cleanup_strv_free_ char **files_env = NULL; assert(command); assert(context); @@ -1069,7 +1069,7 @@ int exec_spawn(ExecCommand *command, const char *username = NULL, *home = NULL; uid_t uid = (uid_t) -1; gid_t gid = (gid_t) -1; - char _cleanup_strv_free_ **our_env = NULL, **pam_env = NULL, + _cleanup_strv_free_ char **our_env = NULL, **pam_env = NULL, **final_env = NULL, **final_argv = NULL; unsigned n_env = 0; bool set_access = false; @@ -1362,7 +1362,7 @@ int exec_spawn(ExecCommand *command, goto fail_child; } } else { - char _cleanup_free_ *d = NULL; + _cleanup_free_ char *d = NULL; if (asprintf(&d, "%s/%s", context->root_directory ? context->root_directory : "", @@ -1727,7 +1727,7 @@ int exec_context_load_environment(const ExecContext *c, char ***l) { int k; bool ignore = false; char **p; - glob_t _cleanup_globfree_ pglob = {}; + _cleanup_globfree_ glob_t pglob = {}; int count, n; fn = *i; diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index e71194301d..c3f4f92611 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -91,7 +91,7 @@ int config_parse_unit_deps(const char* unit, assert(rvalue); FOREACH_WORD_QUOTED(w, l, rvalue, state) { - char _cleanup_free_ *t = NULL, *k = NULL; + _cleanup_free_ char *t = NULL, *k = NULL; int r; t = strndup(w, l); @@ -785,7 +785,7 @@ int config_parse_exec_cpu_affinity(const char *unit, } FOREACH_WORD_QUOTED(w, l, rvalue, state) { - char _cleanup_free_ *t = NULL; + _cleanup_free_ char *t = NULL; int r; unsigned cpu; @@ -927,7 +927,7 @@ int config_parse_bounding_set(const char *unit, * interface. */ FOREACH_WORD_QUOTED(w, l, rvalue, state) { - char _cleanup_free_ *t = NULL; + _cleanup_free_ char *t = NULL; int r; cap_value_t cap; @@ -1019,7 +1019,7 @@ int config_parse_unit_cgroup(const char *unit, } FOREACH_WORD_QUOTED(w, l, rvalue, state) { - char _cleanup_free_ *t = NULL, *k = NULL, *ku = NULL; + _cleanup_free_ char *t = NULL, *k = NULL, *ku = NULL; int r; t = strndup(w, l); @@ -1161,7 +1161,7 @@ int config_parse_exec_mount_flags(const char *unit, assert(data); FOREACH_WORD_SEPARATOR(w, l, rvalue, ", ", state) { - char _cleanup_free_ *t; + _cleanup_free_ char *t; t = strndup(w, l); if (!t) @@ -1314,7 +1314,7 @@ int config_parse_path_spec(const char *unit, Path *p = data; PathSpec *s; PathType b; - char _cleanup_free_ *k = NULL; + _cleanup_free_ char *k = NULL; assert(filename); assert(lvalue); @@ -1480,7 +1480,7 @@ int config_parse_service_sockets(const char *unit, assert(data); FOREACH_WORD_QUOTED(w, l, rvalue, state) { - char _cleanup_free_ *t = NULL, *k = NULL; + _cleanup_free_ char *t = NULL, *k = NULL; t = strndup(w, l); if (!t) @@ -2074,7 +2074,7 @@ int config_parse_syscall_filter(const char *unit, FOREACH_WORD_QUOTED(w, l, rvalue, state) { int id; - char _cleanup_free_ *t = NULL; + _cleanup_free_ char *t = NULL; t = strndup(w, l); if (!t) diff --git a/src/core/loopback-setup.c b/src/core/loopback-setup.c index f98a29806e..aff24fa642 100644 --- a/src/core/loopback-setup.c +++ b/src/core/loopback-setup.c @@ -228,7 +228,7 @@ static int read_response(int fd, unsigned requests_max) { static int check_loopback(void) { int r; - int _cleanup_close_ fd; + _cleanup_close_ int fd; union { struct sockaddr sa; struct sockaddr_in in; @@ -261,7 +261,7 @@ int loopback_setup(void) { .nl.nl_family = AF_NETLINK, }; unsigned requests = 0, i; - int _cleanup_close_ fd = -1; + _cleanup_close_ int fd = -1; bool eperm = false; errno = 0; diff --git a/src/core/main.c b/src/core/main.c index 51c83154a5..ce8ec99f9b 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -666,7 +666,7 @@ static int parse_config_file(void) { { NULL, NULL, NULL, 0, NULL } }; - FILE _cleanup_fclose_ *f; + _cleanup_fclose_ FILE *f; const char *fn; int r; @@ -688,7 +688,7 @@ static int parse_config_file(void) { } static int parse_proc_cmdline(void) { - char _cleanup_free_ *line = NULL; + _cleanup_free_ char *line = NULL; char *w, *state; int r; size_t l; @@ -705,7 +705,7 @@ static int parse_proc_cmdline(void) { } FOREACH_WORD_QUOTED(w, l, line, state) { - char _cleanup_free_ *word; + _cleanup_free_ char *word; word = strndup(w, l); if (!word) diff --git a/src/core/manager.c b/src/core/manager.c index 1ee6a8ed53..208b240ba1 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -768,7 +768,7 @@ int manager_coldplug(Manager *m) { static void manager_build_unit_path_cache(Manager *m) { char **i; - DIR _cleanup_free_ *d = NULL; + _cleanup_free_ DIR *d = NULL; int r; assert(m); @@ -1191,7 +1191,7 @@ static int manager_process_notify_fd(Manager *m) { }; struct ucred *ucred; Unit *u; - char _cleanup_strv_free_ **tags = NULL; + _cleanup_strv_free_ char **tags = NULL; n = recvmsg(m->notify_watch.fd, &msghdr, MSG_DONTWAIT); if (n <= 0) { @@ -1264,7 +1264,7 @@ static int manager_dispatch_sigchld(Manager *m) { break; if (si.si_code == CLD_EXITED || si.si_code == CLD_KILLED || si.si_code == CLD_DUMPED) { - char _cleanup_free_ *name = NULL; + _cleanup_free_ char *name = NULL; get_process_comm(si.si_pid, &name); log_debug("Got SIGCHLD for process %lu (%s)", (unsigned long) si.si_pid, strna(name)); diff --git a/src/core/path.c b/src/core/path.c index b8ba057561..d5b5eeb4a1 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -156,7 +156,7 @@ void path_spec_unwatch(PathSpec *s, Unit *u) { } int path_spec_fd_event(PathSpec *s, uint32_t events) { - uint8_t _cleanup_free_ *buf = NULL; + _cleanup_free_ uint8_t *buf = NULL; struct inotify_event *e; ssize_t k; int l; diff --git a/src/core/service.c b/src/core/service.c index cf19ccb7b8..cf0bbe05fc 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1275,7 +1275,7 @@ static void service_dump(Unit *u, FILE *f, const char *prefix) { ServiceExecCommand c; Service *s = SERVICE(u); const char *prefix2; - char _cleanup_free_ *p2 = NULL; + _cleanup_free_ char *p2 = NULL; assert(s); @@ -1373,7 +1373,7 @@ static void service_dump(Unit *u, FILE *f, const char *prefix) { } static int service_load_pid_file(Service *s, bool may_warn) { - char _cleanup_free_ *k = NULL; + _cleanup_free_ char *k = NULL; int r; pid_t pid; @@ -1740,9 +1740,9 @@ static int service_spawn( pid_t pid; int r; int *fds = NULL; - int _cleanup_free_ *fdsbuf = NULL; + _cleanup_free_ int *fdsbuf = NULL; unsigned n_fds = 0, n_env = 0; - char _cleanup_strv_free_ + _cleanup_strv_free_ char **argv = NULL, **final_env = NULL, **our_env = NULL; assert(s); @@ -3444,10 +3444,10 @@ static void service_notify_message(Unit *u, pid_t pid, char **tags) { static int service_enumerate(Manager *m) { char **p; unsigned i; - DIR _cleanup_closedir_ *d = NULL; - char _cleanup_free_ *path = NULL, *fpath = NULL, *name = NULL; + _cleanup_closedir_ DIR *d = NULL; + _cleanup_free_ char *path = NULL, *fpath = NULL, *name = NULL; Set *runlevel_services[ELEMENTSOF(rcnd_table)] = {}; - Set _cleanup_set_free_ *shutdown_services = NULL; + _cleanup_set_free_ Set *shutdown_services = NULL; Unit *service; Iterator j; int r; diff --git a/src/core/swap.c b/src/core/swap.c index b363c5ec09..e7cc19596e 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -214,7 +214,7 @@ static int swap_add_default_dependencies(Swap *s) { static int swap_verify(Swap *s) { bool b; - char _cleanup_free_ *e = NULL; + _cleanup_free_ char *e = NULL; if (UNIT(s)->load_state != UNIT_LOADED) return 0; @@ -315,7 +315,7 @@ static int swap_add_one( bool set_flags) { Unit *u = NULL; - char _cleanup_free_ *e = NULL; + _cleanup_free_ char *e = NULL; char *wp = NULL; bool delete = false; int r; diff --git a/src/core/umount.c b/src/core/umount.c index acfbbe5e03..1e95ad70dd 100644 --- a/src/core/umount.c +++ b/src/core/umount.c @@ -379,7 +379,7 @@ static int delete_loopback(const char *device) { } static int delete_dm(dev_t devnum) { - int _cleanup_close_ fd = -1; + _cleanup_close_ int fd = -1; int r; struct dm_ioctl dm = { .version = {DM_VERSION_MAJOR, diff --git a/src/core/unit-printf.c b/src/core/unit-printf.c index 98274ee35d..85a05b872a 100644 --- a/src/core/unit-printf.c +++ b/src/core/unit-printf.c @@ -124,7 +124,7 @@ static char *specifier_user_name(char specifier, void *data, void *userdata) { ExecContext *c; int r; const char *username; - char _cleanup_free_ *tmp = NULL; + _cleanup_free_ char *tmp = NULL; uid_t uid; char *printed = NULL; diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index fd634ae74c..ac0ed58dae 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -70,8 +70,8 @@ static int create_disk( const char *password, const char *options) { - char _cleanup_free_ *p = NULL, *n = NULL, *d = NULL, *u = NULL, *from = NULL, *to = NULL, *e = NULL; - FILE _cleanup_fclose_ *f = NULL; + _cleanup_free_ char *p = NULL, *n = NULL, *d = NULL, *u = NULL, *from = NULL, *to = NULL, *e = NULL; + _cleanup_fclose_ FILE *f = NULL; bool noauto, nofail; assert(name); @@ -234,7 +234,7 @@ static int create_disk( } static int parse_proc_cmdline(char ***arg_proc_cmdline_disks, char **arg_proc_cmdline_keyfile) { - char _cleanup_free_ *line = NULL; + _cleanup_free_ char *line = NULL; char *w = NULL, *state = NULL; int r; size_t l; @@ -249,7 +249,7 @@ static int parse_proc_cmdline(char ***arg_proc_cmdline_disks, char **arg_proc_cm } FOREACH_WORD_QUOTED(w, l, line, state) { - char _cleanup_free_ *word = NULL; + _cleanup_free_ char *word = NULL; word = strndup(w, l); if (!word) @@ -328,13 +328,13 @@ static int parse_proc_cmdline(char ***arg_proc_cmdline_disks, char **arg_proc_cm } int main(int argc, char *argv[]) { - FILE _cleanup_fclose_ *f = NULL; + _cleanup_fclose_ FILE *f = NULL; unsigned n = 0; int r = EXIT_SUCCESS; char **i; - char _cleanup_strv_free_ **arg_proc_cmdline_disks_done = NULL; - char _cleanup_strv_free_ **arg_proc_cmdline_disks = NULL; - char _cleanup_free_ *arg_proc_cmdline_keyfile = NULL; + _cleanup_strv_free_ char **arg_proc_cmdline_disks_done = NULL; + _cleanup_strv_free_ char **arg_proc_cmdline_disks = NULL; + _cleanup_free_ char *arg_proc_cmdline_keyfile = NULL; if (argc > 1 && argc != 4) { log_error("This program takes three or no arguments."); @@ -368,7 +368,7 @@ int main(int argc, char *argv[]) { } } else for (;;) { char line[LINE_MAX], *l; - char _cleanup_free_ *name = NULL, *device = NULL, *password = NULL, *options = NULL; + _cleanup_free_ char *name = NULL, *device = NULL, *password = NULL, *options = NULL; int k; if (!fgets(line, sizeof(line), f)) @@ -393,7 +393,7 @@ int main(int argc, char *argv[]) { for /etc/crypttab and only generate units for those. */ STRV_FOREACH(i, arg_proc_cmdline_disks) { - char _cleanup_free_ *proc_device = NULL, *proc_name = NULL; + _cleanup_free_ char *proc_device = NULL, *proc_name = NULL; const char *p = *i; if (startswith(p, "luks-")) @@ -426,7 +426,7 @@ int main(int argc, char *argv[]) { on the kernel command line and not yet written. */ - char _cleanup_free_ *name = NULL, *device = NULL; + _cleanup_free_ char *name = NULL, *device = NULL; const char *p = *i; if (startswith(p, "luks-")) diff --git a/src/fstab-generator/fstab-generator.c b/src/fstab-generator/fstab-generator.c index 2790fc6e8e..c17299f267 100644 --- a/src/fstab-generator/fstab-generator.c +++ b/src/fstab-generator/fstab-generator.c @@ -80,8 +80,8 @@ static int mount_find_pri(struct mntent *me, int *ret) { } static int add_swap(const char *what, struct mntent *me) { - char _cleanup_free_ *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL; - FILE _cleanup_fclose_ *f = NULL; + _cleanup_free_ char *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL; + _cleanup_fclose_ FILE *f = NULL; bool noauto, nofail; int r, pri = -1; @@ -214,10 +214,10 @@ static int add_mount( const char *online, const char *post, const char *source) { - char _cleanup_free_ + _cleanup_free_ char *name = NULL, *unit = NULL, *lnk = NULL, *device = NULL, *automount_name = NULL, *automount_unit = NULL; - FILE _cleanup_fclose_ *f = NULL; + _cleanup_fclose_ FILE *f = NULL; int r; assert(what); @@ -425,7 +425,7 @@ static int parse_fstab(const char *prefix, bool initrd) { } while ((me = getmntent(f))) { - char _cleanup_free_ *where = NULL, *what = NULL; + _cleanup_free_ char *where = NULL, *what = NULL; int k; if (initrd && !mount_in_initrd(me)) @@ -565,7 +565,7 @@ static int parse_new_root_from_proc_cmdline(void) { } static int parse_proc_cmdline(void) { - char _cleanup_free_ *line = NULL; + _cleanup_free_ char *line = NULL; char *w, *state; int r; size_t l; @@ -580,7 +580,7 @@ static int parse_proc_cmdline(void) { } FOREACH_WORD_QUOTED(w, l, line, state) { - char _cleanup_free_ *word = NULL; + _cleanup_free_ char *word = NULL; word = strndup(w, l); if (!word) diff --git a/src/journal/catalog.c b/src/journal/catalog.c index 7681af6629..7738d243a5 100644 --- a/src/journal/catalog.c +++ b/src/journal/catalog.c @@ -277,7 +277,7 @@ static long write_catalog(const char *database, Hashmap *h, struct strbuf *sb, CatalogHeader header; _cleanup_fclose_ FILE *w = NULL; int r; - char _cleanup_free_ *d, *p = NULL; + _cleanup_free_ char *d, *p = NULL; size_t k; d = dirname_malloc(database); @@ -627,7 +627,7 @@ int catalog_list_items(FILE *f, const char *database, bool oneline, char **items STRV_FOREACH(item, items) { sd_id128_t id; int k; - char _cleanup_free_ *msg = NULL; + _cleanup_free_ char *msg = NULL; k = sd_id128_from_string(*item, &id); if (k < 0) { diff --git a/src/journal/coredump.c b/src/journal/coredump.c index 2dfb04afdf..2be6d94c22 100644 --- a/src/journal/coredump.c +++ b/src/journal/coredump.c @@ -103,7 +103,7 @@ int main(int argc, char* argv[]) { uid_t uid; gid_t gid; struct iovec iovec[14]; - char _cleanup_free_ *core_pid = NULL, *core_uid = NULL, *core_gid = NULL, *core_signal = NULL, + _cleanup_free_ char *core_pid = NULL, *core_uid = NULL, *core_gid = NULL, *core_signal = NULL, *core_timestamp = NULL, *core_comm = NULL, *core_exe = NULL, *core_unit = NULL, *core_session = NULL, *core_message = NULL, *core_cmdline = NULL, *p = NULL; diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c index 97d967db3c..0bbfff2ecd 100644 --- a/src/journal/coredumpctl.c +++ b/src/journal/coredumpctl.c @@ -104,7 +104,7 @@ static int add_match(Set *set, const char *match) { unsigned pid; const char* prefix; char *pattern = NULL; - char _cleanup_free_ *p = NULL; + _cleanup_free_ char *p = NULL; if (strchr(match, '=')) prefix = ""; @@ -269,7 +269,7 @@ static int retrieve(const void *data, } static void print_field(FILE* file, sd_journal *j) { - const char _cleanup_free_ *value = NULL; + _cleanup_free_ const char *value = NULL; const void *d; size_t l; @@ -282,7 +282,7 @@ static void print_field(FILE* file, sd_journal *j) { } static int print_entry(FILE* file, sd_journal *j, int had_legend) { - const char _cleanup_free_ + _cleanup_free_ const char *pid = NULL, *uid = NULL, *gid = NULL, *sgnl = NULL, *exe = NULL; const void *d; @@ -520,11 +520,11 @@ finish: } int main(int argc, char *argv[]) { - sd_journal _cleanup_journal_close_ *j = NULL; + _cleanup_journal_close_ sd_journal*j = NULL; const char* match; Iterator it; int r = 0; - Set _cleanup_set_free_free_ *matches = NULL; + _cleanup_set_free_free_ Set *matches = NULL; setlocale(LC_ALL, ""); log_parse_environment(); diff --git a/src/journal/journal-gatewayd.c b/src/journal/journal-gatewayd.c index a633638f80..51a938b79e 100644 --- a/src/journal/journal-gatewayd.c +++ b/src/journal/journal-gatewayd.c @@ -335,7 +335,7 @@ static int request_parse_range( colon2 = strchr(colon + 1, ':'); if (colon2) { - char _cleanup_free_ *t; + _cleanup_free_ char *t; t = strndup(colon + 1, colon2 - colon - 1); if (!t) diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index 68be369f30..d1b201beba 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -544,7 +544,7 @@ static int add_matches(sd_journal *j, char **args) { if (streq(*i, "+")) r = sd_journal_add_disjunction(j); else if (path_is_absolute(*i)) { - char _cleanup_free_ *p, *t = NULL; + _cleanup_free_ char *p, *t = NULL; const char *path; struct stat st; @@ -1028,7 +1028,7 @@ static int access_check(sd_journal *j) { int main(int argc, char *argv[]) { int r; - sd_journal _cleanup_journal_close_ *j = NULL; + _cleanup_journal_close_ sd_journal*j = NULL; bool need_seek = false; sd_id128_t previous_boot_id; bool previous_boot_id_valid = false, first_line = true; @@ -1059,7 +1059,7 @@ int main(int argc, char *argv[]) { arg_action == ACTION_DUMP_CATALOG) { const char* database = CATALOG_DATABASE; - char _cleanup_free_ *copy = NULL; + _cleanup_free_ char *copy = NULL; if (arg_root) { copy = strjoin(arg_root, "/", CATALOG_DATABASE, NULL); if (!copy) { diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index ef6189e22d..7e7b379df8 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -95,13 +95,13 @@ DEFINE_CONFIG_PARSE_ENUM(config_parse_split_mode, split_mode, SplitMode, "Failed static uint64_t available_space(Server *s) { char ids[33]; - char _cleanup_free_ *p = NULL; + _cleanup_free_ char *p = NULL; const char *f; sd_id128_t machine; struct statvfs ss; uint64_t sum = 0, avail = 0, ss_avail = 0; int r; - DIR _cleanup_closedir_ *d = NULL; + _cleanup_closedir_ DIR *d = NULL; usec_t ts; JournalMetrics *m; @@ -512,12 +512,12 @@ static void dispatch_message_real( boot_id[sizeof("_BOOT_ID=") + 32] = "_BOOT_ID=", machine_id[sizeof("_MACHINE_ID=") + 32] = "_MACHINE_ID="; - char _cleanup_free_ *comm = NULL, *cmdline = NULL, *hostname = NULL, + _cleanup_free_ char *comm = NULL, *cmdline = NULL, *hostname = NULL, *exe = NULL, *cgroup = NULL, *session = NULL, *owner_uid = NULL, *unit = NULL, *selinux_context = NULL; #ifdef HAVE_AUDIT - char _cleanup_free_ *audit_session = NULL, *audit_loginuid = NULL; + _cleanup_free_ char *audit_session = NULL, *audit_loginuid = NULL; #endif sd_id128_t id; @@ -745,7 +745,7 @@ void server_dispatch_message( int priority) { int rl, r; - char _cleanup_free_ *path = NULL; + _cleanup_free_ char *path = NULL; char *c; assert(s); @@ -1247,7 +1247,7 @@ static int open_signalfd(Server *s) { } static int server_parse_proc_cmdline(Server *s) { - char _cleanup_free_ *line = NULL; + _cleanup_free_ char *line = NULL; char *w, *state; int r; size_t l; @@ -1262,7 +1262,7 @@ static int server_parse_proc_cmdline(Server *s) { } FOREACH_WORD_QUOTED(w, l, line, state) { - char _cleanup_free_ *word; + _cleanup_free_ char *word; word = strndup(w, l); if (!word) @@ -1295,7 +1295,7 @@ static int server_parse_proc_cmdline(Server *s) { static int server_parse_config_file(Server *s) { static const char *fn = "/etc/systemd/journald.conf"; - FILE _cleanup_fclose_ *f = NULL; + _cleanup_fclose_ FILE *f = NULL; int r; assert(s); diff --git a/src/journal/microhttpd-util.c b/src/journal/microhttpd-util.c index dc91b81bde..382087c790 100644 --- a/src/journal/microhttpd-util.c +++ b/src/journal/microhttpd-util.c @@ -28,7 +28,7 @@ #include "util.h" void microhttpd_logger(void *arg, const char *fmt, va_list ap) { - char _cleanup_free_ *f; + _cleanup_free_ char *f; if (asprintf(&f, "microhttpd: %s", fmt) <= 0) { log_oom(); return; diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index bc9e41e047..064929bf18 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -1256,7 +1256,7 @@ static void check_network(sd_journal *j, int fd) { } static int add_file(sd_journal *j, const char *prefix, const char *filename) { - char _cleanup_free_ *path = NULL; + _cleanup_free_ char *path = NULL; int r; JournalFile *f; @@ -1347,9 +1347,9 @@ static int remove_file(sd_journal *j, const char *prefix, const char *filename) } static int add_directory(sd_journal *j, const char *prefix, const char *dirname) { - char _cleanup_free_ *path = NULL; + _cleanup_free_ char *path = NULL; int r; - DIR _cleanup_closedir_ *d = NULL; + _cleanup_closedir_ DIR *d = NULL; sd_id128_t id, mid; Directory *m; @@ -1437,7 +1437,7 @@ static int add_directory(sd_journal *j, const char *prefix, const char *dirname) } static int add_root_directory(sd_journal *j, const char *p) { - DIR _cleanup_closedir_ *d = NULL; + _cleanup_closedir_ DIR *d = NULL; Directory *m; int r; diff --git a/src/journal/test-catalog.c b/src/journal/test-catalog.c index c463035891..987867f0c8 100644 --- a/src/journal/test-catalog.c +++ b/src/journal/test-catalog.c @@ -35,7 +35,7 @@ static void test_import(Hashmap *h, struct strbuf *sb, const char* contents, ssize_t size, int code) { int r; char name[] = "/tmp/test-catalog.XXXXXX"; - int _cleanup_close_ fd = mkstemp(name); + _cleanup_close_ int fd = mkstemp(name); assert(fd >= 0); assert_se(write(fd, contents, size) == size); diff --git a/src/journal/test-journal-enum.c b/src/journal/test-journal-enum.c index bd1f5199e5..980244e016 100644 --- a/src/journal/test-journal-enum.c +++ b/src/journal/test-journal-enum.c @@ -29,7 +29,7 @@ int main(int argc, char *argv[]) { unsigned n = 0; - sd_journal _cleanup_journal_close_ *j = NULL; + _cleanup_journal_close_ sd_journal*j = NULL; log_set_max_level(LOG_DEBUG); diff --git a/src/journal/test-journal-match.c b/src/journal/test-journal-match.c index 7b14568fd2..37bffc1883 100644 --- a/src/journal/test-journal-match.c +++ b/src/journal/test-journal-match.c @@ -28,8 +28,8 @@ #include "log.h" int main(int argc, char *argv[]) { - sd_journal _cleanup_journal_close_ *j; - char _cleanup_free_ *t; + _cleanup_journal_close_ sd_journal*j; + _cleanup_free_ char *t; log_set_max_level(LOG_DEBUG); diff --git a/src/journal/test-journal-stream.c b/src/journal/test-journal-stream.c index 4b73ac7906..4aba7febc7 100644 --- a/src/journal/test-journal-stream.c +++ b/src/journal/test-journal-stream.c @@ -75,7 +75,7 @@ int main(int argc, char *argv[]) { JournalFile *one, *two, *three; char t[] = "/tmp/journal-stream-XXXXXX"; unsigned i; - sd_journal _cleanup_journal_close_ *j = NULL; + _cleanup_journal_close_ sd_journal*j = NULL; char *z; const void *data; size_t l; @@ -126,7 +126,7 @@ int main(int argc, char *argv[]) { assert_se(sd_journal_add_match(j, "MAGIC=quux", 0) >= 0); SD_JOURNAL_FOREACH_BACKWARDS(j) { - char _cleanup_free_ *c; + _cleanup_free_ char *c; assert_se(sd_journal_get_data(j, "NUMBER", &data, &l) >= 0); printf("\t%.*s\n", (int) l, (const char*) data); @@ -136,7 +136,7 @@ int main(int argc, char *argv[]) { } SD_JOURNAL_FOREACH(j) { - char _cleanup_free_ *c; + _cleanup_free_ char *c; assert_se(sd_journal_get_data(j, "NUMBER", &data, &l) >= 0); printf("\t%.*s\n", (int) l, (const char*) data); diff --git a/src/journal/test-journal-syslog.c b/src/journal/test-journal-syslog.c index 895975caa5..b9419372ad 100644 --- a/src/journal/test-journal-syslog.c +++ b/src/journal/test-journal-syslog.c @@ -25,7 +25,7 @@ static void test_syslog_parse_identifier(const char* str, const char *ident, const char*pid, int ret) { const char *buf = str; - char _cleanup_free_ *ident2 = NULL, *pid2 = NULL; + _cleanup_free_ char *ident2 = NULL, *pid2 = NULL; int ret2; ret2 = syslog_parse_identifier(&buf, &ident2, &pid2); diff --git a/src/locale/localectl.c b/src/locale/localectl.c index eb94d13ad5..ea9187ff84 100644 --- a/src/locale/localectl.c +++ b/src/locale/localectl.c @@ -387,7 +387,7 @@ static int add_locales_from_archive(Set *locales) { } static int add_locales_from_libdir (Set *locales) { - DIR _cleanup_closedir_ *dir; + _cleanup_closedir_ DIR *dir; struct dirent *entry; int r; @@ -539,7 +539,7 @@ static int nftw_cb( } static int list_vconsole_keymaps(DBusConnection *bus, char **args, unsigned n) { - char _cleanup_strv_free_ **l = NULL; + _cleanup_strv_free_ char **l = NULL; keymaps = set_new(string_hash_func, string_compare_func); if (!keymaps) @@ -611,7 +611,7 @@ static int set_x11_keymap(DBusConnection *bus, char **args, unsigned n) { static int list_x11_keymaps(DBusConnection *bus, char **args, unsigned n) { _cleanup_fclose_ FILE *f = NULL; - char _cleanup_strv_free_ **list = NULL; + _cleanup_strv_free_ char **list = NULL; char line[LINE_MAX]; enum { NONE, diff --git a/src/login/inhibit.c b/src/login/inhibit.c index fbab42aff1..fe108c6ef0 100644 --- a/src/login/inhibit.c +++ b/src/login/inhibit.c @@ -229,7 +229,7 @@ int main(int argc, char *argv[]) { int r, exit_code = 0; DBusConnection *bus = NULL; DBusError error; - int _cleanup_close_ fd = -1; + _cleanup_close_ int fd = -1; dbus_error_init(&error); diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index b63b79d9a6..4176902a3e 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -922,7 +922,7 @@ finish: static int attach_device(Manager *m, const char *seat, const char *sysfs) { struct udev_device *d; - char _cleanup_free_ *rule = NULL, *file = NULL; + _cleanup_free_ char *rule = NULL, *file = NULL; const char *id_for_seat; int r; @@ -971,7 +971,7 @@ finish: } static int flush_devices(Manager *m) { - DIR _cleanup_closedir_ *d; + _cleanup_closedir_ DIR *d; assert(m); diff --git a/src/login/logind-seat-dbus.c b/src/login/logind-seat-dbus.c index 82f25a0d1c..5c535ba0ec 100644 --- a/src/login/logind-seat-dbus.c +++ b/src/login/logind-seat-dbus.c @@ -61,7 +61,7 @@ static int bus_seat_append_active(DBusMessageIter *i, const char *property, void DBusMessageIter sub; Seat *s = data; const char *id, *path; - char _cleanup_free_ *p = NULL; + _cleanup_free_ char *p = NULL; assert(i); assert(property); @@ -104,7 +104,7 @@ static int bus_seat_append_sessions(DBusMessageIter *i, const char *property, vo return -ENOMEM; LIST_FOREACH(sessions_by_seat, session, s->sessions) { - char _cleanup_free_ *p = NULL; + _cleanup_free_ char *p = NULL; if (!dbus_message_iter_open_container(&sub, DBUS_TYPE_STRUCT, NULL, &sub2)) return -ENOMEM; @@ -348,7 +348,7 @@ const DBusObjectPathVTable bus_seat_vtable = { }; char *seat_bus_path(Seat *s) { - char _cleanup_free_ *t; + _cleanup_free_ char *t; assert(s); diff --git a/src/login/logind-session-dbus.c b/src/login/logind-session-dbus.c index 0e425e48d3..ec823af547 100644 --- a/src/login/logind-session-dbus.c +++ b/src/login/logind-session-dbus.c @@ -120,7 +120,7 @@ static int bus_session_append_seat(DBusMessageIter *i, const char *property, voi static int bus_session_append_user(DBusMessageIter *i, const char *property, void *data) { DBusMessageIter sub; User *u = data; - char _cleanup_free_ *p = NULL; + _cleanup_free_ char *p = NULL; assert(i); assert(property); @@ -197,7 +197,7 @@ static int bus_session_append_idle_hint_since(DBusMessageIter *i, const char *pr static int bus_session_append_default_cgroup(DBusMessageIter *i, const char *property, void *data) { Session *s = data; - char _cleanup_free_ *t = NULL; + _cleanup_free_ char *t = NULL; int r; bool success; @@ -448,7 +448,7 @@ const DBusObjectPathVTable bus_session_vtable = { }; char *session_bus_path(Session *s) { - char _cleanup_free_ *t; + _cleanup_free_ char *t; assert(s); diff --git a/src/login/logind-user-dbus.c b/src/login/logind-user-dbus.c index 8cc1dd49fd..3ec3ff8e61 100644 --- a/src/login/logind-user-dbus.c +++ b/src/login/logind-user-dbus.c @@ -65,7 +65,7 @@ static int bus_user_append_display(DBusMessageIter *i, const char *property, voi DBusMessageIter sub; User *u = data; const char *id, *path; - char _cleanup_free_ *p = NULL; + _cleanup_free_ char *p = NULL; assert(i); assert(property); @@ -187,7 +187,7 @@ static int bus_user_append_idle_hint_since(DBusMessageIter *i, const char *prope static int bus_user_append_default_cgroup(DBusMessageIter *i, const char *property, void *data) { User *u = data; - char _cleanup_free_ *t = NULL; + _cleanup_free_ char *t = NULL; int r; bool success; diff --git a/src/login/pam-module.c b/src/login/pam-module.c index 609317e9dd..13290fd8ea 100644 --- a/src/login/pam-module.c +++ b/src/login/pam-module.c @@ -256,15 +256,15 @@ static bool check_user_lists( } static int get_seat_from_display(const char *display, const char **seat, uint32_t *vtnr) { - char _cleanup_free_ *p = NULL; + _cleanup_free_ char *p = NULL; int r; - int _cleanup_close_ fd = -1; + _cleanup_close_ int fd = -1; union sockaddr_union sa = { .un.sun_family = AF_UNIX, }; struct ucred ucred; socklen_t l; - char _cleanup_free_ *tty = NULL; + _cleanup_free_ char *tty = NULL; int v; assert(display); diff --git a/src/modules-load/modules-load.c b/src/modules-load/modules-load.c index b3f7af0ef8..7b19ee02ef 100644 --- a/src/modules-load/modules-load.c +++ b/src/modules-load/modules-load.c @@ -76,7 +76,7 @@ static int add_modules(const char *p) { } static int parse_proc_cmdline(void) { - char _cleanup_free_ *line = NULL; + _cleanup_free_ char *line = NULL; char *w, *state; int r; size_t l; @@ -91,7 +91,7 @@ static int parse_proc_cmdline(void) { } FOREACH_WORD_QUOTED(w, l, line, state) { - char _cleanup_free_ *word; + _cleanup_free_ char *word; word = strndup(w, l); if (!word) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 416d4a69b4..f57c75ffee 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -365,7 +365,7 @@ static int mount_all(const char *dest) { int r = 0; for (k = 0; k < ELEMENTSOF(mount_table); k++) { - char _cleanup_free_ *where = NULL; + _cleanup_free_ char *where = NULL; int t; where = strjoin(dest, "/", mount_table[k].where, NULL); @@ -515,7 +515,7 @@ static int setup_resolv_conf(const char *dest) { } static int setup_boot_id(const char *dest) { - char _cleanup_free_ *from = NULL, *to = NULL; + _cleanup_free_ char *from = NULL, *to = NULL; sd_id128_t rnd; char as_uuid[37]; int r; @@ -569,7 +569,7 @@ static int copy_devnodes(const char *dest) { const char *d; int r = 0; - mode_t _cleanup_umask_ u; + _cleanup_umask_ mode_t u; assert(dest); @@ -577,7 +577,7 @@ static int copy_devnodes(const char *dest) { NULSTR_FOREACH(d, devnodes) { struct stat st; - char _cleanup_free_ *from = NULL, *to = NULL; + _cleanup_free_ char *from = NULL, *to = NULL; asprintf(&from, "/dev/%s", d); asprintf(&to, "%s/dev/%s", dest, d); @@ -633,9 +633,9 @@ static int setup_ptmx(const char *dest) { static int setup_dev_console(const char *dest, const char *console) { struct stat st; - char _cleanup_free_ *to = NULL; + _cleanup_free_ char *to = NULL; int r; - mode_t _cleanup_umask_ u; + _cleanup_umask_ mode_t u; assert(dest); assert(console); @@ -681,9 +681,9 @@ static int setup_dev_console(const char *dest, const char *console) { } static int setup_kmsg(const char *dest, int kmsg_socket) { - char _cleanup_free_ *from = NULL, *to = NULL; + _cleanup_free_ char *from = NULL, *to = NULL; int r, fd, k; - mode_t _cleanup_umask_ u; + _cleanup_umask_ mode_t u; union { struct cmsghdr cmsghdr; uint8_t buf[CMSG_SPACE(sizeof(int))]; @@ -765,7 +765,7 @@ static int setup_hostname(void) { static int setup_journal(const char *directory) { sd_id128_t machine_id; - char _cleanup_free_ *p = NULL, *b = NULL, *q = NULL, *d = NULL; + _cleanup_free_ char *p = NULL, *b = NULL, *q = NULL, *d = NULL; char *id; int r; diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c index 2dd3d4a57c..16ccb3ee39 100644 --- a/src/nss-myhostname/nss-myhostname.c +++ b/src/nss-myhostname/nss-myhostname.c @@ -379,7 +379,7 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r( int32_t *ttlp) { char hn[HOST_NAME_MAX+1] = {}; - struct address _cleanup_free_ *addresses = NULL; + _cleanup_free_ struct address *addresses = NULL; struct address *a; unsigned n_addresses = 0, n; diff --git a/src/python-systemd/_daemon.c b/src/python-systemd/_daemon.c index 8f93d91b48..ce2064935d 100644 --- a/src/python-systemd/_daemon.c +++ b/src/python-systemd/_daemon.c @@ -244,7 +244,7 @@ static PyObject* is_socket_unix(PyObject *self, PyObject *args) { Py_ssize_t length = 0; #if PY_MAJOR_VERSION >=3 && PY_MINOR_VERSION >= 1 - PyObject _cleanup_Py_DECREF_ *_path = NULL; + _cleanup_Py_DECREF_ PyObject *_path = NULL; if (!PyArg_ParseTuple(args, "i|iiO&:_is_socket_unix", &fd, &type, &listening, Unicode_FSConverter, &_path)) return NULL; diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 14f8a40347..05993b33cd 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -429,7 +429,7 @@ static PyObject* Reader_get_all(Reader *self, PyObject *args) return NULL; SD_JOURNAL_FOREACH_DATA(self->j, msg, msg_len) { - PyObject _cleanup_Py_DECREF_ *key = NULL, *value = NULL; + _cleanup_Py_DECREF_ PyObject *key = NULL, *value = NULL; r = extract(msg, msg_len, &key, &value); if (r < 0) @@ -443,7 +443,7 @@ static PyObject* Reader_get_all(Reader *self, PyObject *args) if (r < 0) goto error; } else { - PyObject _cleanup_Py_DECREF_ *tmp_list = PyList_New(0); + _cleanup_Py_DECREF_ PyObject *tmp_list = PyList_New(0); if (!tmp_list) goto error; @@ -760,7 +760,7 @@ PyDoc_STRVAR(Reader_get_cursor__doc__, "Wraps sd_journal_get_cursor(). See man:sd_journal_get_cursor(3)."); static PyObject* Reader_get_cursor(Reader *self, PyObject *args) { - char _cleanup_free_ *cursor = NULL; + _cleanup_free_ char *cursor = NULL; int r; assert(self); @@ -846,7 +846,7 @@ PyDoc_STRVAR(Reader_get_catalog__doc__, static PyObject* Reader_get_catalog(Reader *self, PyObject *args) { int r; - char _cleanup_free_ *msg = NULL; + _cleanup_free_ char *msg = NULL; assert(self); assert(!args); @@ -885,7 +885,7 @@ static PyObject* get_catalog(PyObject *self, PyObject *args) int r; char *id_ = NULL; sd_id128_t id; - char _cleanup_free_ *msg = NULL; + _cleanup_free_ char *msg = NULL; assert(!self); assert(args); diff --git a/src/python-systemd/id128.c b/src/python-systemd/id128.c index a9611c4802..1c2fe5dd0b 100644 --- a/src/python-systemd/id128.c +++ b/src/python-systemd/id128.c @@ -52,7 +52,7 @@ PyDoc_STRVAR(get_boot__doc__, ); static PyObject* make_uuid(sd_id128_t id) { - PyObject _cleanup_Py_DECREF_ + _cleanup_Py_DECREF_ PyObject *uuid = NULL, *UUID = NULL, *bytes = NULL, *args = NULL, *kwargs = NULL; diff --git a/src/readahead/readahead-analyze.c b/src/readahead/readahead-analyze.c index e24b2a3298..f409b2f7ac 100644 --- a/src/readahead/readahead-analyze.c +++ b/src/readahead/readahead-analyze.c @@ -34,7 +34,7 @@ int main_analyze(const char *pack_path) { char line[LINE_MAX]; - FILE _cleanup_fclose_ *pack = NULL; + _cleanup_fclose_ FILE *pack = NULL; int a; int missing = 0; size_t tsize = 0; diff --git a/src/shared/cgroup-show.c b/src/shared/cgroup-show.c index 0e82375ea9..83cc0731b8 100644 --- a/src/shared/cgroup-show.c +++ b/src/shared/cgroup-show.c @@ -237,7 +237,7 @@ int show_cgroup(const char *controller, const char *path, const char *prefix, un } static int show_extra_pids(const char *controller, const char *path, const char *prefix, unsigned n_columns, const pid_t pids[], unsigned n_pids, OutputFlags flags) { - pid_t _cleanup_free_ *copy = NULL; + _cleanup_free_ pid_t *copy = NULL; unsigned i, j; int r; @@ -257,7 +257,7 @@ static int show_extra_pids(const char *controller, const char *path, const char return -ENOMEM; for (i = 0, j = 0; i < n_pids; i++) { - char _cleanup_free_ *k = NULL; + _cleanup_free_ char *k = NULL; r = cg_pid_get_path(controller, pids[i], &k); if (r < 0) diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 0749b61154..5d44342bbe 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -1250,7 +1250,7 @@ int cg_path_get_unit(const char *path, char **unit) { } int cg_pid_get_unit(pid_t pid, char **unit) { - char _cleanup_free_ *cgroup = NULL; + _cleanup_free_ char *cgroup = NULL; int r; assert(unit); @@ -1306,7 +1306,7 @@ int cg_path_get_user_unit(const char *path, char **unit) { } int cg_pid_get_user_unit(pid_t pid, char **unit) { - char _cleanup_free_ *cgroup = NULL; + _cleanup_free_ char *cgroup = NULL; int r; assert(unit); @@ -1342,7 +1342,7 @@ int cg_path_get_machine_name(const char *path, char **machine) { } int cg_pid_get_machine_name(pid_t pid, char **machine) { - char _cleanup_free_ *cgroup = NULL; + _cleanup_free_ char *cgroup = NULL; int r; assert(machine); @@ -1386,7 +1386,7 @@ int cg_path_get_session(const char *path, char **session) { } int cg_pid_get_session(pid_t pid, char **session) { - char _cleanup_free_ *cgroup = NULL; + _cleanup_free_ char *cgroup = NULL; int r; assert(session); diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 7a986623fb..3d14c58d13 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -219,7 +219,7 @@ static int parse_line(const char* unit, return 0; if (startswith(l, ".include ")) { - char _cleanup_free_ *fn; + _cleanup_free_ char *fn; fn = file_in_same_dir(filename, strstrip(l+9)); if (!fn) @@ -302,8 +302,8 @@ int config_parse(const char *unit, void *userdata) { unsigned line = 0; - char _cleanup_free_ *section = NULL, *continuation = NULL; - FILE _cleanup_fclose_ *ours = NULL; + _cleanup_free_ char *section = NULL, *continuation = NULL; + _cleanup_fclose_ FILE *ours = NULL; int r; assert(filename); diff --git a/src/shared/dbus-loop.c b/src/shared/dbus-loop.c index fadbd43958..c533242220 100644 --- a/src/shared/dbus-loop.c +++ b/src/shared/dbus-loop.c @@ -44,7 +44,7 @@ typedef struct EpollData { } EpollData; static dbus_bool_t add_watch(DBusWatch *watch, void *data) { - EpollData _cleanup_free_ *e = NULL; + _cleanup_free_ EpollData *e = NULL; struct epoll_event ev = {}; assert(watch); @@ -89,7 +89,7 @@ static dbus_bool_t add_watch(DBusWatch *watch, void *data) { } static void remove_watch(DBusWatch *watch, void *data) { - EpollData _cleanup_free_ *e = NULL; + _cleanup_free_ EpollData *e = NULL; assert(watch); @@ -175,7 +175,7 @@ fail: } static void remove_timeout(DBusTimeout *timeout, void *data) { - EpollData _cleanup_free_ *e = NULL; + _cleanup_free_ EpollData *e = NULL; assert(timeout); diff --git a/src/shared/fileio.c b/src/shared/fileio.c index 4390726a93..2a272593a8 100644 --- a/src/shared/fileio.c +++ b/src/shared/fileio.c @@ -544,8 +544,8 @@ static void write_env_var(FILE *f, const char *v) { int write_env_file(const char *fname, char **l) { char **i; - char _cleanup_free_ *p = NULL; - FILE _cleanup_fclose_ *f = NULL; + _cleanup_free_ char *p = NULL; + _cleanup_fclose_ FILE *f = NULL; int r; r = fopen_temporary(fname, &f, &p); diff --git a/src/shared/hwclock.c b/src/shared/hwclock.c index 9076d8ffc7..a3b33ed4cc 100644 --- a/src/shared/hwclock.c +++ b/src/shared/hwclock.c @@ -163,7 +163,7 @@ int hwclock_set_time(const struct tm *tm) { } int hwclock_is_localtime(void) { - FILE _cleanup_fclose_ *f; + _cleanup_fclose_ FILE *f; /* * The third line of adjtime is "UTC" or "LOCAL" or nothing. diff --git a/src/shared/install-printf.c b/src/shared/install-printf.c index 10b0cf379b..c44459b4e0 100644 --- a/src/shared/install-printf.c +++ b/src/shared/install-printf.c @@ -60,7 +60,7 @@ static char *specifier_instance(char specifier, void *data, void *userdata) { static char *specifier_user_name(char specifier, void *data, void *userdata) { InstallInfo *i = userdata; const char *username; - char _cleanup_free_ *tmp = NULL; + _cleanup_free_ char *tmp = NULL; char *printed = NULL; assert(i); diff --git a/src/shared/install.c b/src/shared/install.c index 75d6ca3619..959de04810 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -198,7 +198,7 @@ static int remove_marked_symlinks_fd( char** files) { int r = 0; - DIR _cleanup_closedir_ *d = NULL; + _cleanup_closedir_ DIR *d = NULL; assert(remove_symlinks_to); assert(fd >= 0); @@ -235,7 +235,7 @@ static int remove_marked_symlinks_fd( if (de->d_type == DT_DIR) { int nfd, q; - char _cleanup_free_ *p = NULL; + _cleanup_free_ char *p = NULL; nfd = openat(fd, de->d_name, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|O_NOFOLLOW); if (nfd < 0) { @@ -260,7 +260,7 @@ static int remove_marked_symlinks_fd( r = q; } else if (de->d_type == DT_LNK) { - char _cleanup_free_ *p = NULL, *dest = NULL; + _cleanup_free_ char *p = NULL, *dest = NULL; int q; bool found; @@ -362,7 +362,7 @@ static int find_symlinks_fd( bool *same_name_link) { int r = 0; - DIR _cleanup_closedir_ *d = NULL; + _cleanup_closedir_ DIR *d = NULL; assert(name); assert(fd >= 0); @@ -395,7 +395,7 @@ static int find_symlinks_fd( if (de->d_type == DT_DIR) { int nfd, q; - char _cleanup_free_ *p = NULL; + _cleanup_free_ char *p = NULL; nfd = openat(fd, de->d_name, O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC|O_NOFOLLOW); if (nfd < 0) { @@ -423,7 +423,7 @@ static int find_symlinks_fd( r = q; } else if (de->d_type == DT_LNK) { - char _cleanup_free_ *p = NULL, *dest = NULL; + _cleanup_free_ char *p = NULL, *dest = NULL; bool found_path, found_dest, b = false; int q; @@ -458,7 +458,7 @@ static int find_symlinks_fd( found_dest = streq(path_get_file_name(dest), name); if (found_path && found_dest) { - char _cleanup_free_ *t = NULL; + _cleanup_free_ char *t = NULL; /* Filter out same name links in the main * config path */ @@ -508,7 +508,7 @@ static int find_symlinks_in_scope( UnitFileState *state) { int r; - char _cleanup_free_ *path = NULL; + _cleanup_free_ char *path = NULL; bool same_name_link_runtime = false, same_name_link = false; assert(scope >= 0); @@ -567,7 +567,7 @@ int unit_file_mask( unsigned *n_changes) { char **i; - char _cleanup_free_ *prefix; + _cleanup_free_ char *prefix; int r; assert(scope >= 0); @@ -578,7 +578,7 @@ int unit_file_mask( return r; STRV_FOREACH(i, files) { - char _cleanup_free_ *path = NULL; + _cleanup_free_ char *path = NULL; if (!unit_name_is_valid(*i, true)) { if (r == 0) @@ -700,9 +700,9 @@ int unit_file_link( UnitFileChange **changes, unsigned *n_changes) { - LookupPaths _cleanup_lookup_paths_free_ paths = {}; + _cleanup_lookup_paths_free_ LookupPaths paths = {}; char **i; - char _cleanup_free_ *config_path = NULL; + _cleanup_free_ char *config_path = NULL; int r, q; assert(scope >= 0); @@ -717,7 +717,7 @@ int unit_file_link( return r; STRV_FOREACH(i, files) { - char _cleanup_free_ *path = NULL; + _cleanup_free_ char *path = NULL; char *fn; struct stat st; @@ -758,7 +758,7 @@ int unit_file_link( } if (errno == EEXIST) { - char _cleanup_free_ *dest = NULL; + _cleanup_free_ char *dest = NULL; q = readlink_and_make_absolute(path, &dest); @@ -941,7 +941,7 @@ static int config_parse_also(const char *unit, assert(rvalue); FOREACH_WORD_QUOTED(w, l, rvalue, state) { - char _cleanup_free_ *n; + _cleanup_free_ char *n; int r; n = strndup(w, l); @@ -999,7 +999,7 @@ static int unit_file_load( }; int fd; - FILE _cleanup_fclose_ *f = NULL; + _cleanup_fclose_ FILE *f = NULL; int r; assert(c); @@ -1117,7 +1117,7 @@ static int unit_file_can_install( const char *name, bool allow_symlink) { - InstallContext _cleanup_install_context_done_ c = {}; + _cleanup_install_context_done_ InstallContext c = {}; InstallInfo *i; int r; @@ -1148,7 +1148,7 @@ static int create_symlink( UnitFileChange **changes, unsigned *n_changes) { - char _cleanup_free_ *dest = NULL; + _cleanup_free_ char *dest = NULL; int r; assert(old_path); @@ -1199,7 +1199,7 @@ static int install_info_symlink_alias( assert(config_path); STRV_FOREACH(s, i->aliases) { - char _cleanup_free_ *alias_path = NULL, *dst = NULL; + _cleanup_free_ char *alias_path = NULL, *dst = NULL; dst = install_full_printf(i, *s); if (!dst) @@ -1231,7 +1231,7 @@ static int install_info_symlink_wants( assert(config_path); STRV_FOREACH(s, i->wanted_by) { - char _cleanup_free_ *path = NULL, *dst = NULL; + _cleanup_free_ char *path = NULL, *dst = NULL; dst = install_full_printf(i, *s); if (!dst) @@ -1268,7 +1268,7 @@ static int install_info_symlink_requires( assert(config_path); STRV_FOREACH(s, i->required_by) { - char _cleanup_free_ *path = NULL, *dst = NULL; + _cleanup_free_ char *path = NULL, *dst = NULL; dst = install_full_printf(i, *s); if (!dst) @@ -1300,7 +1300,7 @@ static int install_info_symlink_link( unsigned *n_changes) { int r; - char _cleanup_free_ *path = NULL; + _cleanup_free_ char *path = NULL; assert(i); assert(paths); @@ -1453,10 +1453,10 @@ int unit_file_enable( UnitFileChange **changes, unsigned *n_changes) { - LookupPaths _cleanup_lookup_paths_free_ paths = {}; - InstallContext _cleanup_install_context_done_ c = {}; + _cleanup_lookup_paths_free_ LookupPaths paths = {}; + _cleanup_install_context_done_ InstallContext c = {}; char **i; - char _cleanup_free_ *config_path = NULL; + _cleanup_free_ char *config_path = NULL; int r; assert(scope >= 0); @@ -1492,11 +1492,11 @@ int unit_file_disable( UnitFileChange **changes, unsigned *n_changes) { - LookupPaths _cleanup_lookup_paths_free_ paths = {}; - InstallContext _cleanup_install_context_done_ c = {}; + _cleanup_lookup_paths_free_ LookupPaths paths = {}; + _cleanup_install_context_done_ InstallContext c = {}; char **i; - char _cleanup_free_ *config_path = NULL; - Set _cleanup_set_free_free_ *remove_symlinks_to = NULL; + _cleanup_free_ char *config_path = NULL; + _cleanup_set_free_free_ Set *remove_symlinks_to = NULL; int r, q; assert(scope >= 0); @@ -1534,11 +1534,11 @@ int unit_file_reenable( UnitFileChange **changes, unsigned *n_changes) { - LookupPaths _cleanup_lookup_paths_free_ paths = {}; - InstallContext _cleanup_install_context_done_ c = {}; + _cleanup_lookup_paths_free_ LookupPaths paths = {}; + _cleanup_install_context_done_ InstallContext c = {}; char **i; - char _cleanup_free_ *config_path = NULL; - Set _cleanup_set_free_free_ *remove_symlinks_to = NULL; + _cleanup_free_ char *config_path = NULL; + _cleanup_set_free_free_ Set *remove_symlinks_to = NULL; int r, q; assert(scope >= 0); @@ -1577,10 +1577,10 @@ UnitFileState unit_file_get_state( const char *root_dir, const char *name) { - LookupPaths _cleanup_lookup_paths_free_ paths = {}; + _cleanup_lookup_paths_free_ LookupPaths paths = {}; UnitFileState state = _UNIT_FILE_STATE_INVALID; char **i; - char _cleanup_free_ *path = NULL; + _cleanup_free_ char *path = NULL; int r; assert(scope >= 0); @@ -1650,7 +1650,7 @@ UnitFileState unit_file_get_state( } int unit_file_query_preset(UnitFileScope scope, const char *name) { - char _cleanup_strv_free_ **files = NULL; + _cleanup_strv_free_ char **files = NULL; char **i; int r; @@ -1680,7 +1680,7 @@ int unit_file_query_preset(UnitFileScope scope, const char *name) { return r; STRV_FOREACH(i, files) { - FILE _cleanup_fclose_ *f; + _cleanup_fclose_ FILE *f; f = fopen(*i, "re"); if (!f) { @@ -1735,11 +1735,11 @@ int unit_file_preset( UnitFileChange **changes, unsigned *n_changes) { - LookupPaths _cleanup_lookup_paths_free_ paths = {}; - InstallContext _cleanup_install_context_done_ plus = {}, minus = {}; + _cleanup_lookup_paths_free_ LookupPaths paths = {}; + _cleanup_install_context_done_ InstallContext plus = {}, minus = {}; char **i; - char _cleanup_free_ *config_path = NULL; - Set _cleanup_set_free_free_ *remove_symlinks_to = NULL; + _cleanup_free_ char *config_path = NULL; + _cleanup_set_free_free_ Set *remove_symlinks_to = NULL; int r, q; assert(scope >= 0); @@ -1801,10 +1801,10 @@ int unit_file_get_list( const char *root_dir, Hashmap *h) { - LookupPaths _cleanup_lookup_paths_free_ paths = {}; + _cleanup_lookup_paths_free_ LookupPaths paths = {}; char **i; - char _cleanup_free_ *buf = NULL; - DIR _cleanup_closedir_ *d = NULL; + _cleanup_free_ char *buf = NULL; + _cleanup_closedir_ DIR *d = NULL; int r; assert(scope >= 0); diff --git a/src/shared/logs-show.c b/src/shared/logs-show.c index 5700321215..116dc8a36c 100644 --- a/src/shared/logs-show.c +++ b/src/shared/logs-show.c @@ -278,7 +278,7 @@ static int output_short( } else if ((flags & OUTPUT_FULL_WIDTH) || (message_len + n + 1 < n_columns)) fprintf(f, ": %s%.*s%s\n", color_on, (int) message_len, message, color_off); else if (n < n_columns && n_columns - n - 2 >= 3) { - char _cleanup_free_ *e; + _cleanup_free_ char *e; e = ellipsize_mem(message, message_len, n_columns - n - 2, 90); @@ -304,7 +304,7 @@ static int output_verbose( const void *data; size_t length; - char _cleanup_free_ *cursor = NULL; + _cleanup_free_ char *cursor = NULL; uint64_t realtime; char ts[FORMAT_TIMESTAMP_MAX]; int r; @@ -366,7 +366,7 @@ static int output_export( char sid[33]; int r; usec_t realtime, monotonic; - char _cleanup_free_ *cursor = NULL; + _cleanup_free_ char *cursor = NULL; const void *data; size_t length; @@ -495,7 +495,7 @@ static int output_json( OutputFlags flags) { uint64_t realtime, monotonic; - char _cleanup_free_ *cursor = NULL; + _cleanup_free_ char *cursor = NULL; const void *data; size_t length; sd_id128_t boot_id; @@ -942,7 +942,7 @@ int show_journal_by_unit( OutputFlags flags, bool system) { - sd_journal _cleanup_journal_close_ *j = NULL; + _cleanup_journal_close_ sd_journal*j = NULL; int r; int jflags = SD_JOURNAL_LOCAL_ONLY | system * SD_JOURNAL_SYSTEM_ONLY; diff --git a/src/shared/path-lookup.c b/src/shared/path-lookup.c index 6bb390fc90..1a47ea9ce7 100644 --- a/src/shared/path-lookup.c +++ b/src/shared/path-lookup.c @@ -322,7 +322,7 @@ int lookup_paths_init( strv_uniq(p->unit_path); if (!strv_isempty(p->unit_path)) { - char _cleanup_free_ *t = strv_join(p->unit_path, "\n\t"); + _cleanup_free_ char *t = strv_join(p->unit_path, "\n\t"); if (!t) return -ENOMEM; log_debug("Looking for unit files in (higher priority first):\n\t%s", t); @@ -382,7 +382,7 @@ int lookup_paths_init( strv_uniq(p->sysvrcnd_path); if (!strv_isempty(p->sysvinit_path)) { - char _cleanup_free_ *t = strv_join(p->sysvinit_path, "\n\t"); + _cleanup_free_ char *t = strv_join(p->sysvinit_path, "\n\t"); if (!t) return -ENOMEM; log_debug("Looking for SysV init scripts in:\n\t%s", t); @@ -393,7 +393,7 @@ int lookup_paths_init( } if (!strv_isempty(p->sysvrcnd_path)) { - char _cleanup_free_ *t = + _cleanup_free_ char *t = strv_join(p->sysvrcnd_path, "\n\t"); if (!t) return -ENOMEM; diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c index 4933fe08e2..c583d3dfea 100644 --- a/src/shared/socket-util.c +++ b/src/shared/socket-util.c @@ -364,7 +364,7 @@ int socket_address_print(const SocketAddress *a, char **p) { } case AF_NETLINK: { - char _cleanup_free_ *sfamily = NULL; + _cleanup_free_ char *sfamily = NULL; r = netlink_family_to_string_alloc(a->protocol, &sfamily); if (r < 0) @@ -568,7 +568,7 @@ bool socket_address_matches_fd(const SocketAddress *a, int fd) { int make_socket_fd(const char* address, int flags) { SocketAddress a; int fd, r; - char _cleanup_free_ *p = NULL; + _cleanup_free_ char *p = NULL; r = socket_address_parse(&a, address); if (r < 0) { diff --git a/src/shared/util.c b/src/shared/util.c index e8431839b0..1fc6c5aa1a 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -2080,7 +2080,7 @@ int release_terminal(void) { .sa_handler = SIG_IGN, .sa_flags = SA_RESTART, }; - int _cleanup_close_ fd; + _cleanup_close_ int fd; fd = open("/dev/tty", O_RDWR|O_NOCTTY|O_NDELAY|O_CLOEXEC); if (fd < 0) @@ -4344,7 +4344,7 @@ int in_group(const char *name) { } int glob_exists(const char *path) { - glob_t _cleanup_globfree_ g = {}; + _cleanup_globfree_ glob_t g = {}; int r, k; assert(path); diff --git a/src/shared/utmp-wtmp.c b/src/shared/utmp-wtmp.c index 5ee3d22e71..342e0a9cf1 100644 --- a/src/shared/utmp-wtmp.c +++ b/src/shared/utmp-wtmp.c @@ -287,7 +287,7 @@ int utmp_put_runlevel(int runlevel, int previous) { #define TIMEOUT_MSEC 50 static int write_to_terminal(const char *tty, const char *message) { - int _cleanup_close_ fd = -1; + _cleanup_close_ int fd = -1; const char *p; size_t left; usec_t end; diff --git a/src/shared/virt.c b/src/shared/virt.c index 7b18e58c16..1c86a3dd1e 100644 --- a/src/shared/virt.c +++ b/src/shared/virt.c @@ -168,7 +168,7 @@ int detect_vm(const char **id) { } int detect_container(const char **id) { - char _cleanup_free_ *e = NULL; + _cleanup_free_ char *e = NULL; int r; /* Unfortunately many of these operations require root access diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 13b6ab0201..c2b1749def 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -353,7 +353,7 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) { id_len = max_id_len; for (u = unit_infos; u < unit_infos + c; u++) { - char _cleanup_free_ *e = NULL; + _cleanup_free_ char *e = NULL; const char *on_loaded, *off_loaded, *on = ""; const char *on_active, *off_active, *off = ""; @@ -495,7 +495,7 @@ static int get_triggered_units(DBusConnection *bus, const char* unit_path, { const char *interface = "org.freedesktop.systemd1.Unit", *triggers_property = "Triggers"; - DBusMessage _cleanup_dbus_message_unref_ *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; DBusMessageIter iter, sub; int r; @@ -546,7 +546,7 @@ static int get_listening(DBusConnection *bus, const char* unit_path, { const char *interface = "org.freedesktop.systemd1.Socket", *listen_property = "Listen"; - DBusMessage _cleanup_dbus_message_unref_ *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; DBusMessageIter iter, sub; int r; @@ -702,7 +702,7 @@ static int list_sockets(DBusConnection *bus, char **args) { for (u = unit_infos; u < unit_infos + cu; u++) { const char *dot; - char _cleanup_strv_free_ **listen = NULL, **triggered = NULL; + _cleanup_strv_free_ char **listen = NULL, **triggered = NULL; unsigned c = 0, i; if (!output_show_unit(u)) @@ -808,7 +808,7 @@ static void output_unit_file_list(const UnitFileList *units, unsigned c) { printf("%-*s %-*s\n", id_cols, "UNIT FILE", state_cols, "STATE"); for (u = units; u < units + c; u++) { - char _cleanup_free_ *e = NULL; + _cleanup_free_ char *e = NULL; const char *on, *off; const char *id; @@ -1092,7 +1092,7 @@ static int list_dependencies_compare(const void *_a, const void *_b) { } static int list_dependencies_one(DBusConnection *bus, const char *name, int level, char **units, unsigned int branches) { - char _cleanup_strv_free_ **deps = NULL, **u; + _cleanup_strv_free_ char **deps = NULL, **u; char **c; int r = 0; @@ -1197,7 +1197,7 @@ static void list_jobs_print(struct job_info* jobs, size_t n) { l3, "STATE"); for (i = 0, j = jobs; i < n; i++, j++) { - char _cleanup_free_ *e = NULL; + _cleanup_free_ char *e = NULL; if (streq(j->state, "running")) { on = ansi_highlight(true); @@ -1439,7 +1439,7 @@ typedef struct WaitData { } WaitData; static DBusHandlerResult wait_filter(DBusConnection *connection, DBusMessage *message, void *data) { - DBusError _cleanup_dbus_error_free_ error; + _cleanup_dbus_error_free_ DBusError error; WaitData *d = data; dbus_error_init(&error); @@ -1675,7 +1675,7 @@ static void check_triggering_units( *load_state_property = "LoadState", *triggered_by_property = "TriggeredBy", *state; - char _cleanup_free_ *unit_path = NULL, *n = NULL; + _cleanup_free_ char *unit_path = NULL, *n = NULL; bool print_warning_label = true; int r; @@ -1889,8 +1889,8 @@ static int start_unit(DBusConnection *bus, char **args) { int r, ret = 0; const char *method, *mode, *one_name; - Set _cleanup_set_free_free_ *s = NULL; - DBusError _cleanup_dbus_error_free_ error; + _cleanup_set_free_free_ Set *s = NULL; + _cleanup_dbus_error_free_ DBusError error; char **name; dbus_error_init(&error); @@ -2916,7 +2916,7 @@ static void show_unit_help(UnitStatusInfo *i) { if (startswith(*p, "man:")) { size_t k; char *e = NULL; - char _cleanup_free_ *page = NULL, *section = NULL; + _cleanup_free_ char *page = NULL, *section = NULL; const char *args[4] = { "man", NULL, NULL, NULL }; pid_t pid; @@ -3361,7 +3361,7 @@ static int print_property(const char *name, DBusMessageIter *iter) { if (exec_status_info_deserialize(&sub, &info) >= 0) { char timestamp1[FORMAT_TIMESTAMP_MAX], timestamp2[FORMAT_TIMESTAMP_MAX]; - char _cleanup_free_ *t; + _cleanup_free_ char *t; t = strv_join(info.argv, " "); @@ -3401,7 +3401,7 @@ static int print_property(const char *name, DBusMessageIter *iter) { } static int show_one(const char *verb, DBusConnection *bus, const char *path, bool show_properties, bool *new_line) { - DBusMessage _cleanup_free_ *reply = NULL; + _cleanup_free_ DBusMessage *reply = NULL; const char *interface = ""; int r; DBusMessageIter iter, sub, sub2, sub3; @@ -3494,7 +3494,7 @@ static int show_one(const char *verb, DBusConnection *bus, const char *path, boo static int show_one_by_pid(const char *verb, DBusConnection *bus, uint32_t pid, bool *new_line) { _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; const char *path = NULL; - DBusError _cleanup_dbus_error_free_ error; + _cleanup_dbus_error_free_ DBusError error; int r; dbus_error_init(&error); @@ -3537,7 +3537,7 @@ static int show_all(const char* verb, DBusConnection *bus, bool show_properties, qsort(unit_infos, c, sizeof(struct unit_info), compare_unit_info); for (u = unit_infos; u < unit_infos + c; u++) { - char _cleanup_free_ *p = NULL; + _cleanup_free_ char *p = NULL; if (!output_show_unit(u)) continue; @@ -4009,7 +4009,7 @@ static int enable_sysv_units(char **args) { r = 0; for (f = 1; args[f]; f++) { const char *name; - char _cleanup_free_ *p = NULL, *q = NULL; + _cleanup_free_ char *p = NULL, *q = NULL; bool found_native = false, found_sysv; unsigned c = 1; const char *argv[6] = { "/sbin/chkconfig", NULL, NULL, NULL, NULL }; @@ -4181,10 +4181,10 @@ static int enable_unit(DBusConnection *bus, char **args) { UnitFileChange *changes = NULL; unsigned n_changes = 0, i; int carries_install_info = -1; - DBusMessage _cleanup_dbus_message_unref_ *m = NULL, *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL; int r; - DBusError _cleanup_dbus_error_free_ error; - char _cleanup_strv_free_ **mangled_names = NULL; + _cleanup_dbus_error_free_ DBusError error; + _cleanup_strv_free_ char **mangled_names = NULL; dbus_error_init(&error); @@ -4380,9 +4380,9 @@ finish: } static int unit_is_enabled(DBusConnection *bus, char **args) { - DBusError _cleanup_dbus_error_free_ error; + _cleanup_dbus_error_free_ DBusError error; int r; - DBusMessage _cleanup_dbus_message_unref_ *reply = NULL; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; bool enabled; char **name; char *n; @@ -4760,7 +4760,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { size_t size; FOREACH_WORD_SEPARATOR(word, size, optarg, ",", state) { - char _cleanup_free_ *type; + _cleanup_free_ char *type; type = strndup(word, size); if (!type) @@ -5400,8 +5400,8 @@ static int action_to_runlevel(void) { } static int talk_upstart(void) { - DBusMessage _cleanup_dbus_message_unref_ *m = NULL, *reply = NULL; - DBusError _cleanup_dbus_error_free_ error; + _cleanup_dbus_message_unref_ DBusMessage *m = NULL, *reply = NULL; + _cleanup_dbus_error_free_ DBusError error; int previous, rl, r; char env1_buf[] = "RUNLEVEL=X", @@ -5490,7 +5490,7 @@ finish: static int talk_initctl(void) { struct init_request request = {}; int r; - int _cleanup_close_ fd = -1; + _cleanup_close_ int fd = -1; char rl; rl = action_to_runlevel(); @@ -5693,7 +5693,7 @@ static int systemctl_main(DBusConnection *bus, int argc, char *argv[], DBusError } static int send_shutdownd(usec_t t, char mode, bool dry_run, bool warn, const char *message) { - int _cleanup_close_ fd; + _cleanup_close_ int fd; struct sd_shutdown_command c = { .usec = t, .mode = mode, @@ -5835,7 +5835,7 @@ static int halt_main(DBusConnection *bus) { } if (arg_when > 0) { - char _cleanup_free_ *m; + _cleanup_free_ char *m; m = strv_join(arg_wall, " "); r = send_shutdownd(arg_when, @@ -5898,7 +5898,7 @@ static int runlevel_main(void) { int main(int argc, char*argv[]) { int r, retval = EXIT_FAILURE; DBusConnection *bus = NULL; - DBusError _cleanup_dbus_error_free_ error; + _cleanup_dbus_error_free_ DBusError error; dbus_error_init(&error); diff --git a/src/test/test-unit-file.c b/src/test/test-unit-file.c index 31b0fb2665..a7fe77af24 100644 --- a/src/test/test-unit-file.c +++ b/src/test/test-unit-file.c @@ -211,11 +211,11 @@ static void test_config_parse_exec(void) { static void test_load_env_file_1(void) { - char _cleanup_strv_free_ **data = NULL; + _cleanup_strv_free_ char **data = NULL; int r; char name[] = "/tmp/test-load-env-file.XXXXXX"; - int _cleanup_close_ fd = mkstemp(name); + _cleanup_close_ int fd = mkstemp(name); assert(fd >= 0); assert_se(write(fd, env_file_1, sizeof(env_file_1)) == sizeof(env_file_1)); @@ -232,11 +232,11 @@ static void test_load_env_file_1(void) { } static void test_load_env_file_2(void) { - char _cleanup_strv_free_ **data = NULL; + _cleanup_strv_free_ char **data = NULL; int r; char name[] = "/tmp/test-load-env-file.XXXXXX"; - int _cleanup_close_ fd = mkstemp(name); + _cleanup_close_ int fd = mkstemp(name); assert(fd >= 0); assert_se(write(fd, env_file_2, sizeof(env_file_2)) == sizeof(env_file_2)); @@ -248,11 +248,11 @@ static void test_load_env_file_2(void) { } static void test_load_env_file_3(void) { - char _cleanup_strv_free_ **data = NULL; + _cleanup_strv_free_ char **data = NULL; int r; char name[] = "/tmp/test-load-env-file.XXXXXX"; - int _cleanup_close_ fd = mkstemp(name); + _cleanup_close_ int fd = mkstemp(name); assert(fd >= 0); assert_se(write(fd, env_file_3, sizeof(env_file_3)) == sizeof(env_file_3)); @@ -263,11 +263,11 @@ static void test_load_env_file_3(void) { } static void test_load_env_file_4(void) { - char _cleanup_strv_free_ **data = NULL; + _cleanup_strv_free_ char **data = NULL; int r; char name[] = "/tmp/test-load-env-file.XXXXXX"; - int _cleanup_close_ fd = mkstemp(name); + _cleanup_close_ int fd = mkstemp(name); assert(fd >= 0); assert_se(write(fd, env_file_4, sizeof(env_file_4)) == sizeof(env_file_4)); @@ -295,7 +295,7 @@ static void test_install_printf(void) { InstallInfo i3 = {name3, path3, user}; InstallInfo i4 = {name3, path3, NULL}; - char _cleanup_free_ *mid, *bid, *host; + _cleanup_free_ char *mid, *bid, *host; assert_se((mid = specifier_machine_id('m', NULL, NULL))); assert_se((bid = specifier_boot_id('b', NULL, NULL))); @@ -303,8 +303,8 @@ static void test_install_printf(void) { #define expect(src, pattern, result) \ do { \ - char _cleanup_free_ *t = install_full_printf(&src, pattern); \ - char _cleanup_free_ \ + _cleanup_free_ char *t = install_full_printf(&src, pattern); \ + _cleanup_free_ char \ *d1 = strdup(i.name), \ *d2 = strdup(i.path), \ *d3 = strdup(i.user); \ diff --git a/src/test/test-unit-name.c b/src/test/test-unit-name.c index aba36e4df1..86cb2b8da6 100644 --- a/src/test/test-unit-name.c +++ b/src/test/test-unit-name.c @@ -38,7 +38,7 @@ static void test_replacements(void) { #define expect(pattern, repl, expected) \ { \ - char _cleanup_free_ *t = \ + _cleanup_free_ char *t = \ unit_name_replace_instance(pattern, repl); \ puts(t); \ assert(streq(t, expected)); \ @@ -57,7 +57,7 @@ static void test_replacements(void) { #undef expect #define expect(path, suffix, expected) \ { \ - char _cleanup_free_ *k, *t = \ + _cleanup_free_ char *k, *t = \ unit_name_from_path(path, suffix); \ puts(t); \ k = unit_name_to_path(t); \ @@ -75,7 +75,7 @@ static void test_replacements(void) { #undef expect #define expect(pattern, path, suffix, expected) \ { \ - char _cleanup_free_ *t = \ + _cleanup_free_ char *t = \ unit_name_from_path_instance(pattern, path, suffix); \ puts(t); \ assert(streq(t, expected)); \ @@ -90,7 +90,7 @@ static void test_replacements(void) { #undef expect #define expect(pattern) \ { \ - char _cleanup_free_ *k, *t; \ + _cleanup_free_ char *k, *t; \ assert_se(t = unit_name_mangle(pattern)); \ assert_se(k = unit_name_mangle(t)); \ puts(t); \ @@ -113,7 +113,7 @@ static int test_unit_printf(void) { Unit *u, *u2; int r; - char _cleanup_free_ *mid, *bid, *host, *root_uid; + _cleanup_free_ char *mid, *bid, *host, *root_uid; struct passwd *root; assert_se((mid = specifier_machine_id('m', NULL, NULL))); @@ -133,7 +133,7 @@ static int test_unit_printf(void) { #define expect(unit, pattern, expected) \ { \ char *e; \ - char _cleanup_free_ *t = \ + _cleanup_free_ char *t = \ unit_full_printf(unit, pattern); \ printf("result: %s\nexpect: %s\n", t, expected); \ if ((e = endswith(expected, "*"))) \ diff --git a/src/timedate/timedated.c b/src/timedate/timedated.c index bb134b7fff..cdb6e5b16c 100644 --- a/src/timedate/timedated.c +++ b/src/timedate/timedated.c @@ -218,7 +218,7 @@ static int write_data_timezone(void) { static int write_data_local_rtc(void) { int r; - char _cleanup_free_ *s = NULL, *w = NULL; + _cleanup_free_ char *s = NULL, *w = NULL; r = read_full_file("/etc/adjtime", &s, NULL); if (r < 0) { @@ -270,7 +270,7 @@ static int write_data_local_rtc(void) { } static char** get_ntp_services(void) { - char _cleanup_strv_free_ **r = NULL, **files; + _cleanup_strv_free_ char **r = NULL, **files; char **i; int k; @@ -284,7 +284,7 @@ static char** get_ntp_services(void) { return NULL; STRV_FOREACH(i, files) { - FILE _cleanup_fclose_ *f; + _cleanup_fclose_ FILE *f; f = fopen(*i, "re"); if (!f) diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index fea1ca2fc2..535381c470 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -135,7 +135,7 @@ static struct Item* find_glob(Hashmap *h, const char *match) { } static void load_unix_sockets(void) { - FILE _cleanup_fclose_ *f = NULL; + _cleanup_fclose_ FILE *f = NULL; char line[LINE_MAX]; if (unix_sockets) @@ -269,7 +269,7 @@ static int dir_cleanup( while ((dent = readdir(d))) { struct stat s; usec_t age; - char _cleanup_free_ *sub_path = NULL; + _cleanup_free_ char *sub_path = NULL; if (streq(dent->d_name, ".") || streq(dent->d_name, "..")) @@ -321,7 +321,7 @@ static int dir_cleanup( if (maxdepth <= 0) log_warning("Reached max depth on %s.", sub_path); else { - DIR _cleanup_closedir_ *sub_dir; + _cleanup_closedir_ DIR *sub_dir; int q; sub_dir = xopendirat(dirfd(d), dent->d_name, O_NOFOLLOW|O_NOATIME); @@ -515,7 +515,7 @@ static int write_one_file(Item *i, const char *path) { } static int recursive_relabel_children(Item *i, const char *path) { - DIR _cleanup_closedir_ *d; + _cleanup_closedir_ DIR *d; int ret = 0; /* This returns the first error we run into, but nevertheless @@ -530,7 +530,7 @@ static int recursive_relabel_children(Item *i, const char *path) { union dirent_storage buf; bool is_dir; int r; - char _cleanup_free_ *entry_path = NULL; + _cleanup_free_ char *entry_path = NULL; r = readdir_r(d, &buf.de, &de); if (r != 0) { @@ -601,7 +601,7 @@ static int recursive_relabel(Item *i, const char *path) { static int glob_item(Item *i, int (*action)(Item *, const char *)) { int r = 0, k; - glob_t _cleanup_globfree_ g = {}; + _cleanup_globfree_ glob_t g = {}; char **fn; errno = 0; @@ -879,7 +879,7 @@ static int remove_item(Item *i) { } static int clean_item_instance(Item *i, const char* instance) { - DIR _cleanup_closedir_ *d = NULL; + _cleanup_closedir_ DIR *d = NULL; struct stat s, ps; bool mountpoint; int r; @@ -1017,9 +1017,9 @@ static bool item_equal(Item *a, Item *b) { } static int parse_line(const char *fname, unsigned line, const char *buffer) { - Item _cleanup_free_ *i = NULL; + _cleanup_free_ Item *i = NULL; Item *existing; - char _cleanup_free_ + _cleanup_free_ char *mode = NULL, *user = NULL, *group = NULL, *age = NULL; char type; Hashmap *h; diff --git a/src/udev/accelerometer/accelerometer.c b/src/udev/accelerometer/accelerometer.c index b6913b46f8..e611b48a42 100644 --- a/src/udev/accelerometer/accelerometer.c +++ b/src/udev/accelerometer/accelerometer.c @@ -187,7 +187,7 @@ static void test_orientation(struct udev *udev, const char *devpath) { OrientationUp old, new; - int _cleanup_close_ fd = -1; + _cleanup_close_ int fd = -1; struct input_event ev[64]; bool got_syn = false; bool got_x = false, got_y = false, got_z = false; diff --git a/src/udev/udev-builtin-usb_id.c b/src/udev/udev-builtin-usb_id.c index 269aa4e1aa..e3bbd05e4b 100644 --- a/src/udev/udev-builtin-usb_id.c +++ b/src/udev/udev-builtin-usb_id.c @@ -151,8 +151,8 @@ static void set_scsi_type(char *to, const char *from, size_t len) static int dev_if_packed_info(struct udev_device *dev, char *ifs_str, size_t len) { - char _cleanup_free_ *filename = NULL; - int _cleanup_close_ fd = -1; + _cleanup_free_ char *filename = NULL; + _cleanup_close_ int fd = -1; ssize_t size; unsigned char buf[18 + 65535]; int pos = 0; diff --git a/src/udev/udevadm-hwdb.c b/src/udev/udevadm-hwdb.c index b18b28aca7..3e849aaed6 100644 --- a/src/udev/udevadm-hwdb.c +++ b/src/udev/udevadm-hwdb.c @@ -181,9 +181,9 @@ static int trie_insert(struct trie *trie, struct trie_node *node, const char *se struct trie_node *child; for (p = 0; (c = trie->strings->buf[node->prefix_off + p]); p++) { - char _cleanup_free_ *s = NULL; + _cleanup_free_ char *s = NULL; ssize_t off; - struct trie_node _cleanup_free_ *new_child = NULL; + _cleanup_free_ struct trie_node *new_child = NULL; if (c == search[i + p]) continue; diff --git a/src/vconsole/vconsole-setup.c b/src/vconsole/vconsole-setup.c index ee1f3ebdb0..1bbf737c36 100644 --- a/src/vconsole/vconsole-setup.c +++ b/src/vconsole/vconsole-setup.c @@ -189,7 +189,7 @@ static void font_copy_to_all_vcs(int fd) { for (i = 1; i <= 15; i++) { char vcname[16]; - int _cleanup_close_ vcfd = -1; + _cleanup_close_ int vcfd = -1; struct console_font_op cfo = {}; if (i == vcs.v_active) -- cgit v1.2.1 From bef89518003a37f0fbd2f53beaa6bb7d01efed45 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 18 Apr 2013 10:16:17 +0200 Subject: sd-login.c: fixup for d70964d0 p pointer is not _cleanup_free_ --- src/login/sd-login.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/login/sd-login.c b/src/login/sd-login.c index 45523921b5..30e07a9322 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -74,7 +74,8 @@ _public_ int sd_pid_get_machine_name(pid_t pid, char **name) { _public_ int sd_pid_get_owner_uid(pid_t pid, uid_t *uid) { int r; - _cleanup_free_ char *root = NULL, *cgroup = NULL, *p = NULL, *cc = NULL; + _cleanup_free_ char *root = NULL, *cgroup = NULL, *cc = NULL; + char *p; struct stat st; if (pid < 0) -- cgit v1.2.1 From 98f59e59e0c31ffcb953d3a7dba0da5e6f2f55f7 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 18 Apr 2013 10:15:25 +0200 Subject: fileio.c: do not parse comments after non-whitespace chars systemd does not want to understand comments after the first non-whitespace char occured. key=foo #comment will result into key == "foo #comment" key="foo" #comment will result into key == "foo#comment" "key= #comment" will result into key == "#comment" "key #comment" is an invalid line --- src/shared/fileio.c | 9 +++++---- src/test/test-fileio.c | 26 ++++++++++++++------------ 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/src/shared/fileio.c b/src/shared/fileio.c index 2a272593a8..337b9e4147 100644 --- a/src/shared/fileio.c +++ b/src/shared/fileio.c @@ -239,7 +239,7 @@ static int parse_env_file_internal( break; case PRE_VALUE: - if (strchr(newline, c) || strchr(COMMENTS, c)) { + if (strchr(newline, c)) { state = PRE_KEY; key[n_key] = 0; @@ -247,7 +247,7 @@ static int parse_env_file_internal( value[n_value] = 0; /* strip trailing whitespace from key */ - while(strchr(WHITESPACE, key[--n_key])) + while(n_key && strchr(WHITESPACE, key[--n_key])) key[n_key]=0; r = push(key, value, userdata); @@ -279,6 +279,7 @@ static int parse_env_file_internal( case VALUE: if (strchr(newline, c)) { state = PRE_KEY; + key[n_key] = 0; if (value) @@ -289,7 +290,7 @@ static int parse_env_file_internal( value[last_whitespace] = 0; /* strip trailing whitespace from key */ - while(strchr(WHITESPACE, key[--n_key])) + while(n_key && strchr(WHITESPACE, key[--n_key])) key[n_key]=0; r = push(key, value, userdata); @@ -417,7 +418,7 @@ static int parse_env_file_internal( value[n_value] = 0; /* strip trailing whitespace from key */ - while(strchr(WHITESPACE, key[--n_key])) + while(n_key && strchr(WHITESPACE, key[--n_key])) key[n_key]=0; r = push(key, value, userdata); diff --git a/src/test/test-fileio.c b/src/test/test-fileio.c index 2a74104e7a..d56f7cc856 100644 --- a/src/test/test-fileio.c +++ b/src/test/test-fileio.c @@ -47,16 +47,18 @@ static void test_parse_env_file(void) { fputs("one=BAR \n" "# comment\n" " # comment \n" + " ; comment \n" " two = bar \n" "invalid line\n" + "invalid line #comment\n" "three = \"333\n" "xxxx\"\n" "four = \'44\\\"44\'\n" "five = \'55\\\'55\' \"FIVE\" cinco \n" "six = seis sechs\\\n" " sis\n" - "seven=\"sevenval\"#comment\n" - "eight=#comment\n" + "seven=\"sevenval\" #nocomment\n" + "eight=eightval #nocomment\n" "export nine=nineval\n" "ten=", f); @@ -75,20 +77,14 @@ static void test_parse_env_file(void) { assert_se(streq(a[3], "four=44\"44")); assert_se(streq(a[4], "five=55\'55FIVEcinco")); assert_se(streq(a[5], "six=seis sechs sis")); - assert_se(streq(a[6], "seven=sevenval")); - assert_se(streq(a[7], "eight=")); + assert_se(streq(a[6], "seven=sevenval#nocomment")); + assert_se(streq(a[7], "eight=eightval #nocomment")); assert_se(streq(a[8], "export nine=nineval")); assert_se(streq(a[9], "ten=")); assert_se(a[10] == NULL); strv_env_clean_log(a, "/tmp/test-fileio"); - r = write_env_file("/tmp/test-fileio", a); - assert_se(r >= 0); - - r = load_env_file("/tmp/test-fileio", NULL, &b); - assert_se(r >= 0); - k = 0; STRV_FOREACH(i, b) { log_info("Got2: <%s>", *i); @@ -128,11 +124,17 @@ static void test_parse_env_file(void) { assert_se(streq(four, "44\"44")); assert_se(streq(five, "55\'55FIVEcinco")); assert_se(streq(six, "seis sechs sis")); - assert_se(streq(seven, "sevenval")); - assert_se(eight == NULL); + assert_se(streq(seven, "sevenval#nocomment")); + assert_se(streq(eight, "eightval #nocomment")); assert_se(streq(nine, "nineval")); assert_se(ten == NULL); + r = write_env_file("/tmp/test-fileio", a); + assert_se(r >= 0); + + r = load_env_file("/tmp/test-fileio", NULL, &b); + assert_se(r >= 0); + unlink(t); unlink("/tmp/test-fileio"); } -- cgit v1.2.1 From a858b64dddf79177e12ed30f5e8c47a1471c8bfe Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 18 Apr 2013 12:05:41 +0200 Subject: macro.h: let F_TYPE_CMP() macro fail to compile, if second parameter is not const If the magic parameter is not a const, then the macro does not work, so better fail to compile, than be surprised afterwards. --- src/shared/macro.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/shared/macro.h b/src/shared/macro.h index 08b40fd2b8..2bb72f0d16 100644 --- a/src/shared/macro.h +++ b/src/shared/macro.h @@ -272,11 +272,12 @@ do { \ * signed int in the kernel and these negative numbers are extended to * long, which cannot be simply compared to the magic constants anymore. */ -#define F_TYPE_CMP(f, c) \ +#define F_TYPE_CMP(f_type, magic) \ __extension__ ({ \ - __SWORD_TYPE _f = (f); \ - const __SWORD_TYPE _c = (c); \ - const int _c32 = (c); \ + __SWORD_TYPE _f = (f_type); \ + const __SWORD_TYPE _c = (magic); \ + const int _c32 = 1 ? (magic) \ + : sizeof((int[magic]){0}); \ (_f == _c || _f == _c32 ); \ }) -- cgit v1.2.1 From 4826f0b7b5c0aefa08b8cc7ef64d69027f84da2c Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 18 Apr 2013 14:50:42 +0200 Subject: Revert f_type fixups This reverts commit a858b64dddf79177e12ed30f5e8c47a1471c8bfe. This reverts commit aea275c43194b6ac519ef907b62c5c995050fde0. This reverts commit fc6e6d245ee3989c222a2a8cc82a33475f9922f3. This reverts commit c4073a27c555aeceac87a3b02a83141cde641a1e. This reverts commit cddf148028f525be8176e7f1cbbf4f862bd287f6. This reverts commit 8c68a70170b31f93c287f29fd06c6c17edaf19ad. The constants are now casted to __SWORD_TYPE, which should resolve the compiler warnings about signed vs unsigned. After talking to Kay, we concluded: This should be fixed in the kernel, not worked around in userspace tools. Architectures cannot use int and expect magic constants lager than INT_MAX to work correctly. The kernel header needs to be fixed. Even coreutils cannot handle it: #define RAMFS_MAGIC 0x858458f6 # stat -f -c%t / ffffffff858458f6 #define BTRFS_SUPER_MAGIC 0x9123683E # stat -f -c%t /mnt ffffffff9123683e Although I found the perfect working macro to fix the thing :) __extension__ ({ \ bool _ret = false; \ switch(f) { case c: _ret=true; }; \ ( _ret ); \ }) --- src/journal/sd-journal.c | 10 +++++----- src/readahead/readahead-collect.c | 2 +- src/shared/macro.h | 18 ------------------ src/shared/util.c | 5 ++--- 4 files changed, 8 insertions(+), 27 deletions(-) diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 064929bf18..88af68c1f1 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -1248,11 +1248,11 @@ static void check_network(sd_journal *j, int fd) { return; j->on_network = - F_TYPE_CMP(sfs.f_type, CIFS_MAGIC_NUMBER) || - F_TYPE_CMP(sfs.f_type, CODA_SUPER_MAGIC) || - F_TYPE_CMP(sfs.f_type, NCP_SUPER_MAGIC) || - F_TYPE_CMP(sfs.f_type, NFS_SUPER_MAGIC) || - F_TYPE_CMP(sfs.f_type, SMB_SUPER_MAGIC); + sfs.f_type == (__SWORD_TYPE) CIFS_MAGIC_NUMBER || + sfs.f_type == (__SWORD_TYPE) CODA_SUPER_MAGIC || + sfs.f_type == (__SWORD_TYPE) NCP_SUPER_MAGIC || + sfs.f_type == (__SWORD_TYPE) NFS_SUPER_MAGIC || + sfs.f_type == (__SWORD_TYPE) SMB_SUPER_MAGIC; } static int add_file(sd_journal *j, const char *prefix, const char *filename) { diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c index 75ec5b70c7..02ecbe56c9 100644 --- a/src/readahead/readahead-collect.c +++ b/src/readahead/readahead-collect.c @@ -505,7 +505,7 @@ done: on_ssd = fs_on_ssd(root) > 0; log_debug("On SSD: %s", yes_no(on_ssd)); - on_btrfs = statfs(root, &sfs) >= 0 && F_TYPE_CMP(sfs.f_type, BTRFS_SUPER_MAGIC); + on_btrfs = statfs(root, &sfs) >= 0 && sfs.f_type == (__SWORD_TYPE) BTRFS_SUPER_MAGIC; log_debug("On btrfs: %s", yes_no(on_btrfs)); if (asprintf(&pack_fn_new, "%s/.readahead.new", root) < 0) { diff --git a/src/shared/macro.h b/src/shared/macro.h index 2bb72f0d16..9bf81dc3cc 100644 --- a/src/shared/macro.h +++ b/src/shared/macro.h @@ -264,24 +264,6 @@ do { \ } \ } while(false) -/* Remove this macro, when the kernel has f_type as unsigned int or long - * for every architecure. Currently some 64bit architecures (like s390x) - * have int in the kernel, but long in userspace for f_type, so glibc - * extends the int to long and carries over the sign. Negative numbers are - * caused by the 32bit magic constants in linux/magic.h stuffed into the - * signed int in the kernel and these negative numbers are extended to - * long, which cannot be simply compared to the magic constants anymore. - */ -#define F_TYPE_CMP(f_type, magic) \ - __extension__ ({ \ - __SWORD_TYPE _f = (f_type); \ - const __SWORD_TYPE _c = (magic); \ - const int _c32 = 1 ? (magic) \ - : sizeof((int[magic]){0}); \ - (_f == _c || _f == _c32 ); \ - }) - - /* Returns the number of chars needed to format variables of the * specified type as a decimal string. Adds in extra space for a * negative '-' prefix. */ diff --git a/src/shared/util.c b/src/shared/util.c index 1fc6c5aa1a..5d03272619 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -2779,9 +2779,8 @@ int rm_rf_children_dangerous(int fd, bool only_dirs, bool honour_sticky, struct static int is_temporary_fs(struct statfs *s) { assert(s); - return - F_TYPE_CMP(s->f_type, TMPFS_MAGIC) || - F_TYPE_CMP(s->f_type, RAMFS_MAGIC); + return s->f_type == (__SWORD_TYPE) TMPFS_MAGIC || + s->f_type == (__SWORD_TYPE) RAMFS_MAGIC; } int rm_rf_children(int fd, bool only_dirs, bool honour_sticky, struct stat *root_dev) { -- cgit v1.2.1 From cee22bd3cb253734a8a0183751d786128e2ea5e4 Mon Sep 17 00:00:00 2001 From: Henrik Grindal Bakken Date: Thu, 18 Apr 2013 14:40:24 +0200 Subject: buildsys: Add --disable-tests to avoid building tests This patch adds --disable-tests to configure. It is based on a patch posted by Thierry Reding in 2010. The motivation for adding it is that some tests fail link-time when cross-compiling. The patch adds a new Makefile variable -- manual_tests -- and uses that instead of noinst_PROGRAMS. However, if ENABLE_TESTS is true, the former is added to the latter. It also renames noinst_tests to simply tests. --- Makefile.am | 30 ++++++++++++++++++------------ configure.ac | 5 +++++ 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/Makefile.am b/Makefile.am index 7b4b2d8c48..80d0f1fb8b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -124,9 +124,15 @@ dbusinterface_DATA = dist_dbussystemservice_DATA = check_PROGRAMS = check_DATA = -noinst_tests= -noinst_PROGRAMS = $(noinst_tests) -TESTS = $(noinst_tests) +tests= +manual_tests = +if ENABLE_TESTS +noinst_PROGRAMS = $(manual_tests) $(tests) +TESTS = $(tests) +else +noinst_PROGRAMS = +TESTS = +endif udevlibexec_PROGRAMS = AM_CPPFLAGS = \ @@ -1063,7 +1069,7 @@ CLEANFILES += \ src/core/org.freedesktop.systemd1.policy.in # ------------------------------------------------------------------------------ -noinst_PROGRAMS += \ +manual_tests += \ test-engine \ test-ns \ test-loopback \ @@ -1074,7 +1080,7 @@ noinst_PROGRAMS += \ test-watchdog \ test-log -noinst_tests += \ +tests += \ test-job-type \ test-env-replace \ test-strbuf \ @@ -1145,7 +1151,7 @@ test_hostname_LDADD = \ libsystemd-core.la if ENABLE_EFI -noinst_PROGRAMS += \ +manual_tests += \ test-efivars test_efivars_SOURCES = \ @@ -1726,7 +1732,7 @@ libsystemd_bus_la_LIBADD = \ noinst_LTLIBRARIES += \ libsystemd-bus.la -noinst_tests += \ +tests += \ test-bus-marshal \ test-bus-signature \ test-bus-chat \ @@ -2074,7 +2080,7 @@ TESTS += \ test/udev-test.pl \ test/rules-test.sh -noinst_PROGRAMS += \ +manual_tests += \ test-libudev \ test-udev @@ -2527,7 +2533,7 @@ test_id128_LDADD = \ libsystemd-shared.la \ libsystemd-id128-internal.la -noinst_tests += \ +tests += \ test-id128 pkginclude_HEADERS += \ @@ -2835,10 +2841,10 @@ catalog-remove-hook: UNINSTALL_DATA_HOOKS += \ catalog-remove-hook -noinst_PROGRAMS += \ +manual_tests += \ test-journal-enum -noinst_tests += \ +tests += \ test-journal \ test-journal-send \ test-journal-syslog \ @@ -3536,7 +3542,7 @@ test_inhibit_CFLAGS = \ $(AM_CFLAGS) \ $(DBUS_CFLAGS) -noinst_PROGRAMS += \ +manual_tests += \ test-login \ test-inhibit diff --git a/configure.ac b/configure.ac index 519f1a95e0..aec85ea615 100644 --- a/configure.ac +++ b/configure.ac @@ -880,6 +880,11 @@ AS_IF([test "x$0" != "x./configure"], [ AC_SUBST([INTLTOOL_UPDATE], [/bin/true]) ]) +AC_ARG_ENABLE(tests, + [AC_HELP_STRING([--disable-tests], [disable tests])], + enable_tests=$enableval, enable_tests=yes) +AM_CONDITIONAL(ENABLE_TESTS, [test x$enable_tests = xyes]) + AC_SUBST([dbuspolicydir], [$with_dbuspolicydir]) AC_SUBST([dbussessionservicedir], [$with_dbussessionservicedir]) AC_SUBST([dbussystemservicedir], [$with_dbussystemservicedir]) -- cgit v1.2.1 From a2cef833cf46ee9ec35a4e4e4861944b25cd9a23 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 18 Apr 2013 18:54:17 +0200 Subject: bus: catch up with kernel changes --- src/libsystemd-bus/bus-kernel.c | 22 ++++++++++--- src/libsystemd-bus/kdbus.h | 69 +++++++++++++++++++++++++---------------- 2 files changed, 59 insertions(+), 32 deletions(-) diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index 2bb1b9a19a..5172b32113 100644 --- a/src/libsystemd-bus/bus-kernel.c +++ b/src/libsystemd-bus/bus-kernel.c @@ -540,6 +540,7 @@ int bus_kernel_read_message(sd_bus *bus, sd_bus_message **m) { int bus_kernel_create(const char *name, char **s) { struct kdbus_cmd_bus_make *make; + struct kdbus_cmd_make_item *n, *cg; size_t l; int fd; char *p; @@ -552,16 +553,27 @@ int bus_kernel_create(const char *name, char **s) { return -errno; l = strlen(name); - make = alloca0(offsetof(struct kdbus_cmd_bus_make, name) + DECIMAL_STR_MAX(uid_t) + 1 + l + 1); - sprintf(make->name, "%lu-%s", (unsigned long) getuid(), name); - make->size = offsetof(struct kdbus_cmd_bus_make, name) + strlen(make->name) + 1; + make = alloca0(offsetof(struct kdbus_cmd_bus_make, items) + + sizeof(struct kdbus_cmd_make_item) + sizeof(uint64_t) + + sizeof(struct kdbus_cmd_make_item) + DECIMAL_STR_MAX(uid_t) + 1 + l + 1); + + cg = make->items; + cg->type = KDBUS_CMD_MAKE_CGROUP; + cg->data64[0] = 1; + cg->size = sizeof(struct kdbus_cmd_make_item) + sizeof(uint64_t); + + n = KDBUS_ITEM_NEXT(cg); + n->type = KDBUS_CMD_MAKE_NAME; + sprintf(n->str, "%lu-%s", (unsigned long) getuid(), name); + n->size = sizeof(struct kdbus_cmd_make_item) + strlen(n->str) + 1; + + make->size = offsetof(struct kdbus_cmd_bus_make, items) + cg->size + n->size; make->flags = KDBUS_ACCESS_WORLD | KDBUS_POLICY_OPEN; make->bus_flags = 0; make->bloom_size = BLOOM_SIZE; - make->cgroup_id = 1; assert_cc(BLOOM_SIZE % 8 == 0); - p = strjoin("/dev/kdbus/", make->name, "/bus", NULL); + p = strjoin("/dev/kdbus/", n->str, "/bus", NULL); if (!p) return -ENOMEM; diff --git a/src/libsystemd-bus/kdbus.h b/src/libsystemd-bus/kdbus.h index 305ded720e..6d93454702 100644 --- a/src/libsystemd-bus/kdbus.h +++ b/src/libsystemd-bus/kdbus.h @@ -2,6 +2,8 @@ * Copyright (C) 2013 Kay Sievers * Copyright (C) 2013 Greg Kroah-Hartman * Copyright (C) 2013 Linux Foundation + * Copyright (C) 2013 Lennart Poettering + * Copyright (C) 2013 Daniel Mack * * kdbus is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the @@ -92,7 +94,6 @@ enum { KDBUS_MSG_NAME_CHANGE, /* .name_change */ KDBUS_MSG_ID_ADD, /* .id_change */ KDBUS_MSG_ID_REMOVE, /* .id_change */ - KDBUS_MSG_ID_CHANGE, /* .id_change */ KDBUS_MSG_REPLY_TIMEOUT, /* empty, but .reply_cookie in .kdbus_msg is filled in */ KDBUS_MSG_REPLY_DEAD, /* dito */ }; @@ -227,7 +228,35 @@ enum { KDBUS_POLICY_OPEN = 4, }; +/* Items to append to kdbus_cmd_bus_make, kdbus_cmd_ep_make and + * kdbus_cmd_ns_make */ + +enum { + KDBUS_CMD_MAKE_NONE, + KDBUS_CMD_MAKE_NAME, + KDBUS_CMD_MAKE_CGROUP, /* the cgroup hierarchy ID for which to attach + * cgroup membership paths * to messages. */ + KDBUS_CMD_MAKE_CRED, /* allow translator services which connect + * to the bus on behalf of somebody else, + * allow specifiying the credentials of the + * client to connect on behalf on. Needs + * privileges */ + +}; + +struct kdbus_cmd_make_item { + __u64 size; + __u64 type; + union { + __u8 data[0]; + __u64 data64[0]; + char str[0]; + }; +}; + struct kdbus_cmd_hello { + __u64 size; + /* userspace → kernel, kernel → userspace */ __u64 conn_flags; /* userspace specifies its * capabilities and more, kernel @@ -236,26 +265,16 @@ struct kdbus_cmd_hello { * capabilities by returning an error * from KDBUS_CMD_HELLO */ - /* userspace → kernel */ - __u64 pid; /* To allow translator services which - * connect to the bus on behalf of - * somebody else, allow specifiying - * the PID of the client to connect on - * behalf on. Normal clients should - * pass this as 0 (i.e. to do things - * under their own PID). Priviliged - * clients can pass != 0, to operate - * on behalf of somebody else. */ - /* kernel → userspace */ __u64 bus_flags; /* this is .flags copied verbatim from * from original KDBUS_CMD_BUS_MAKE * ioctl. It's intended to be useful * to do negotiation of features of * the payload that is transfreted. */ - __u64 id; /* peer id */ + __u64 id; /* id assigned to this connection */ __u64 bloom_size; /* The bloom filter size chosen by the * bus owner */ + struct kdbus_cmd_make_item items[0]; }; struct kdbus_cmd_bus_make { @@ -268,12 +287,9 @@ struct kdbus_cmd_bus_make { * copied verbatim into the bus * structure and returned from * KDBUS_CMD_HELLO, later */ - __u64 cgroup_id; /* the cgroup hierarchy ID for which - * to attach cgroup membership paths - * to messages. 0 if no cgroup data - * shall be attached. */ - __u64 bloom_size; /* Size of the bloom filter for this bus. */ - char name[0]; + __u64 bloom_size; /* size of the bloom filter for this bus */ + struct kdbus_cmd_make_item items[0]; + }; struct kdbus_cmd_ep_make { @@ -284,7 +300,7 @@ struct kdbus_cmd_ep_make { * same way as for * KDBUS_CMD_BUS_MAKE. Unused for * now. */ - char name[0]; + struct kdbus_cmd_make_item items[0]; }; struct kdbus_cmd_ns_make { @@ -295,7 +311,7 @@ struct kdbus_cmd_ns_make { * same way as for * KDBUS_CMD_BUS_MAKE. Unused for * now. */ - char name[0]; + struct kdbus_cmd_make_item items[0]; }; enum { @@ -322,15 +338,15 @@ struct kdbus_cmd_names { }; enum { - KDBUS_CMD_NAME_INFO_ITEM_NAME, - KDBUS_CMD_NAME_INFO_ITEM_SECLABEL, - KDBUS_CMD_NAME_INFO_ITEM_AUDIT, + KDBUS_CMD_NAME_INFO_ITEM_NAME, /* userspace → kernel */ + KDBUS_CMD_NAME_INFO_ITEM_SECLABEL, /* kernel → userspace */ + KDBUS_CMD_NAME_INFO_ITEM_AUDIT, /* kernel → userspace */ }; struct kdbus_cmd_name_info_item { __u64 size; __u64 type; - __u8 items[0]; + __u8 data[0]; }; struct kdbus_cmd_name_info { @@ -338,7 +354,7 @@ struct kdbus_cmd_name_info { __u64 flags; __u64 id; /* either ID, or 0 and _ITEM_NAME follows */ struct kdbus_creds creds; - struct kdbus_cmd_name_info_item item[0]; /* list of item records */ + struct kdbus_cmd_name_info_item items[0]; /* list of item records */ }; enum { @@ -349,7 +365,6 @@ enum { KDBUS_CMD_MATCH_NAME_CHANGE, /* Matches a name string against KDBUS_MSG_NAME_CHANGE */ KDBUS_CMD_MATCH_ID_ADD, /* Matches an ID against KDBUS_MSG_ID_ADD */ KDBUS_CMD_MATCH_ID_REMOVE, /* Matches an ID against KDBUS_MSG_ID_REMOVE */ - KDBUS_CMD_MATCH_ID_CHANGE, /* Matches an ID against KDBUS_MSG_ID_CHANGE */ }; struct kdbus_cmd_match_item { -- cgit v1.2.1 From b030d1f86443ba535dd257cb30826b813f291138 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 18 Apr 2013 19:05:10 +0200 Subject: bus: test - add hack to receive messages --- src/libsystemd-bus/test-bus-kernel.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/libsystemd-bus/test-bus-kernel.c b/src/libsystemd-bus/test-bus-kernel.c index 5a5d9fc252..ffabdcbd14 100644 --- a/src/libsystemd-bus/test-bus-kernel.c +++ b/src/libsystemd-bus/test-bus-kernel.c @@ -71,6 +71,20 @@ int main(int argc, char *argv[]) { printf("unique b: %s\n", ub); + { + //FIXME: + struct kdbus_cmd_match cmd_match; + + cmd_match.size = sizeof(cmd_match); + cmd_match.src_id = KDBUS_MATCH_SRC_ID_ANY; + + r = ioctl(sd_bus_get_fd(a), KDBUS_CMD_MATCH_ADD, &cmd_match); + assert_se(r >= 0); + + r = ioctl(sd_bus_get_fd(b), KDBUS_CMD_MATCH_ADD, &cmd_match); + assert_se(r >= 0); + } + r = sd_bus_emit_signal(a, "/foo/bar/waldo", "waldo.com", "Piep", "sss", "I am a string", "/this/is/a/path", "and.this.a.domain.name"); assert_se(r >= 0); -- cgit v1.2.1 From 4befe2eba061fa47cd0c30eff3f8348971e5d088 Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Thu, 18 Apr 2013 11:32:26 -0700 Subject: systemd-logind: Fix linking by reordering libraries in LDADD libsystemd-audit needs functions from libsystemd-shared, so libsystemd-audit needs to appear first. Otherwise: CCLD systemd-logind ./.libs/libsystemd-audit.a(audit.o): In function `audit_session_from_pid': /home/josh/src/systemd/src/shared/audit.c:50: undefined reference to `detect_container' --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 80d0f1fb8b..a9f72c1e15 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3467,8 +3467,8 @@ systemd_logind_CFLAGS = \ systemd_logind_LDADD = \ libsystemd-label.la \ - libsystemd-shared.la \ libsystemd-audit.la \ + libsystemd-shared.la \ libsystemd-daemon.la \ libsystemd-dbus.la \ libudev.la -- cgit v1.2.1 From 8d768d9962b3c9348a732bb83434911e1d2d9775 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 18 Apr 2013 09:41:23 +0200 Subject: cryptsetup: ask for password, if key file cannot be accessed If the key file cannot be accessed, we can at least ask for the password. --- src/cryptsetup/cryptsetup.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c index 376f748153..a24e61a035 100644 --- a/src/cryptsetup/cryptsetup.c +++ b/src/cryptsetup/cryptsetup.c @@ -500,6 +500,11 @@ int main(int argc, char *argv[]) { if (key_file) k = crypt_activate_by_keyfile_offset(cd, argv[2], CRYPT_ANY_SLOT, key_file, opt_keyfile_size, opt_keyfile_offset, flags); + if (k < 0) { + log_error("Failed to activate with key file '%s': %s", key_file, strerror(-k)); + key_file = NULL; + continue; + } else { char **p; -- cgit v1.2.1 From 461bd8e47cafacfcd38389e7558330bfb6e902ad Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 18 Apr 2013 22:19:33 +0200 Subject: update TODO --- TODO | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/TODO b/TODO index 966418d6e3..1221b39cd4 100644 --- a/TODO +++ b/TODO @@ -13,10 +13,6 @@ Bugfixes: Fedora 19: -* timedatectl: NTP enabled: n/a - -* fix match logic to add another level of disjunction/conjunction - * external: maybe it is time to patch procps so that "ps" links to libsystemd-logind to print a pretty service name, seat name, session name in its output. Currently it only shows cgroup membership, but @@ -36,6 +32,9 @@ Fedora 19: Features: +* dbus: when a unit failed to load (i.e. is in UNIT_ERROR state), we + should be able to safely try another attempt when the bus call LoadUnit() is invoked. + * for instanced unit drop-ins we should look in foo@bar.service.d/ as well as foo@.service.d/ * if pam_systemd is invoked by su from a process that is outside of a -- cgit v1.2.1 From cc400110ffe1fb29b32e995e770819c1817bbfbc Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 18 Apr 2013 22:20:56 +0200 Subject: man: document the new login class 'background' --- man/sd_session_is_active.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/man/sd_session_is_active.xml b/man/sd_session_is_active.xml index 76f6f9544c..6fa803bfa2 100644 --- a/man/sd_session_is_active.xml +++ b/man/sd_session_is_active.xml @@ -179,8 +179,9 @@ be used to determine the class of the session identified by the specified session identifier. The returned string is one of user, - greeter or - lock-screen and needs to be freed + greeter, + lock-screen, or + background and needs to be freed with the libc free3 call after use. -- cgit v1.2.1 From a3e6f050de81a9830e52af09d5d38dad9a356e3b Mon Sep 17 00:00:00 2001 From: Marius Vollmer Date: Thu, 18 Apr 2013 22:34:36 +0200 Subject: journal: when iterating through a file we might lose messages when changing direction. https://bugs.freedesktop.org/show_bug.cgi?id=63672 --- TODO | 2 ++ src/journal/sd-journal.c | 3 +++ 2 files changed, 5 insertions(+) diff --git a/TODO b/TODO index 1221b39cd4..cd66914b5c 100644 --- a/TODO +++ b/TODO @@ -32,6 +32,8 @@ Fedora 19: Features: +* truncate whitespace of var names the same way as values in parse_env_file_internal() + * dbus: when a unit failed to load (i.e. is in UNIT_ERROR state), we should be able to safely try another attempt when the bus call LoadUnit() is invoked. diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 88af68c1f1..e021d98155 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -109,6 +109,9 @@ static void set_location(sd_journal *j, LocationType type, JournalFile *f, Objec init_location(&j->current_location, type, f, o); + if (j->current_file) + j->current_file->current_offset = 0; + j->current_file = f; j->current_field = 0; -- cgit v1.2.1 From ef3b5246879094e29cc99c4d24cbfeb19b7da49b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 19 Apr 2013 00:41:24 +0200 Subject: build-sys: prepare release 202 --- Makefile.am | 14 +++++++------- NEWS | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ TODO | 3 +++ configure.ac | 2 +- 4 files changed, 71 insertions(+), 8 deletions(-) diff --git a/Makefile.am b/Makefile.am index a9f72c1e15..d594a3d935 100644 --- a/Makefile.am +++ b/Makefile.am @@ -32,28 +32,28 @@ SUBDIRS = . po .SECONDARY: LIBUDEV_CURRENT=4 -LIBUDEV_REVISION=2 +LIBUDEV_REVISION=3 LIBUDEV_AGE=3 LIBGUDEV_CURRENT=1 LIBGUDEV_REVISION=3 LIBGUDEV_AGE=1 -LIBSYSTEMD_LOGIN_CURRENT=5 +LIBSYSTEMD_LOGIN_CURRENT=6 LIBSYSTEMD_LOGIN_REVISION=0 -LIBSYSTEMD_LOGIN_AGE=5 +LIBSYSTEMD_LOGIN_AGE=6 LIBSYSTEMD_DAEMON_CURRENT=0 -LIBSYSTEMD_DAEMON_REVISION=9 +LIBSYSTEMD_DAEMON_REVISION=10 LIBSYSTEMD_DAEMON_AGE=0 LIBSYSTEMD_ID128_CURRENT=0 -LIBSYSTEMD_ID128_REVISION=20 +LIBSYSTEMD_ID128_REVISION=21 LIBSYSTEMD_ID128_AGE=0 -LIBSYSTEMD_JOURNAL_CURRENT=9 +LIBSYSTEMD_JOURNAL_CURRENT=10 LIBSYSTEMD_JOURNAL_REVISION=0 -LIBSYSTEMD_JOURNAL_AGE=9 +LIBSYSTEMD_JOURNAL_AGE=10 # Dirs of external packages dbuspolicydir=@dbuspolicydir@ diff --git a/NEWS b/NEWS index 9ea3eee772..e8b7b392c5 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,65 @@ systemd System and Service Manager +CHANGES WITH 202: + + * The output of 'systemctl list-jobs' got some polishing. The + '--type=' argument may now be passed more than once. A new + command 'systemctl list-sockets' has been added which shows + a list of kernel sockets systemd is listening on with the + socket units they belong to, plus the units these socket + units activate. + + * The experimental libsystemd-bus library got substantial + updates to work in conjunction with the (also experimental) + kdbus kernel project. It works well enough to exchange + messages with some sophistication. Note that kdbus is not + ready yet, and the library is mostly an elaborate test case + for now, and not installable. + + * systemd gained a new unit 'systemd-static-nodes.service' + that generates static device nodes earlier during boot, and + can run in conjunction with udev. + + * libsystemd-login gained a new call sd_pid_get_user_unit() + to retrieve the user systemd unit a process is running + in. This is useful for systems where systemd is used as + session manager. + + * systemd-nspawn now places all containers in the new /machine + top-level cgroup directory in the name=systemd + hierarchy. libvirt will soon do the same, so that we get a + uniform separation of /system, /user and /machine for system + services, user processes and containers/virtual + machines. This new cgroup hierarchy is also useful to stick + stable names to specific container instances, which can be + recognized later on this way (this name may be controlled + via systemd-nspawn's new -M switch). libsystemd-login also + gained a new call sd_pid_get_machine_name() to retrieve the + name of the container/VM a specific process belongs to. + + * bootchart can now store its data in the journal. + + * libsystemd-journal gained a new call + sd_journal_add_conjunction() for AND expressions to the + matching logic. This can be used to express more complex + logical expressions. + + * journactl can now take multiple --unit= and --user-unit= + switches. + + * The cryptsetup logic now understands the "luks.key=" kernel + command line switch for specifying a file to read the + decryption key from. Also, if a configured keyfile is now + found the tool will now automatically fall back to prompting + the user. + + Contributions from: Anatol Pomozov, Auke Kok, Harald Hoyer, + Henrik Grindal Bakken, Josh Triplett, Kay Sievers, Lennart + Poettering, Lukas Nykryn, Mantas Mikulėnas Marius Vollmer, + Martin Jansa, Martin Pitt, Michael Biebl, Michal Schmidt, + Mirco Tischler, Pali Rohar, Simon Peeters, Steven Hiscocks, + Tom Gundersen, Zbigniew Jędrzejewski-Szmek + CHANGES WITH 201: * journalctl --update-catalog now understands a new --root= diff --git a/TODO b/TODO index cd66914b5c..7f42dedf17 100644 --- a/TODO +++ b/TODO @@ -32,6 +32,9 @@ Fedora 19: Features: +* see if we can fix https://bugs.freedesktop.org/show_bug.cgi?id=63672 + without dropping the location cache entirely. + * truncate whitespace of var names the same way as values in parse_env_file_internal() * dbus: when a unit failed to load (i.e. is in UNIT_ERROR state), we diff --git a/configure.ac b/configure.ac index aec85ea615..5173783948 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ AC_PREREQ([2.64]) AC_INIT([systemd], - [201], + [202], [http://bugs.freedesktop.org/enter_bug.cgi?product=systemd], [systemd], [http://www.freedesktop.org/wiki/Software/systemd]) -- cgit v1.2.1 From 7c04ad2da1cf08ebf53b9aa9671c8c1dc9577135 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 19 Apr 2013 01:11:38 +0200 Subject: build-sys: run 'make update-man-list' --- Makefile-man.am | 5 +++++ NEWS | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Makefile-man.am b/Makefile-man.am index 10779ddbaf..9786fa1119 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -131,6 +131,7 @@ MANPAGES_ALIAS += \ man/sd_is_socket_inet.3 \ man/sd_is_socket_unix.3 \ man/sd_journal.3 \ + man/sd_journal_add_conjunction.3 \ man/sd_journal_add_disjunction.3 \ man/sd_journal_close.3 \ man/sd_journal_enumerate_data.3 \ @@ -227,6 +228,7 @@ man/sd_is_socket.3: man/sd_is_fifo.3 man/sd_is_socket_inet.3: man/sd_is_fifo.3 man/sd_is_socket_unix.3: man/sd_is_fifo.3 man/sd_journal.3: man/sd_journal_open.3 +man/sd_journal_add_conjunction.3: man/sd_journal_add_match.3 man/sd_journal_add_disjunction.3: man/sd_journal_add_match.3 man/sd_journal_close.3: man/sd_journal_open.3 man/sd_journal_enumerate_data.3: man/sd_journal_get_data.3 @@ -395,6 +397,9 @@ man/sd_is_socket_unix.html: man/sd_is_fifo.html man/sd_journal.html: man/sd_journal_open.html $(html-alias) +man/sd_journal_add_conjunction.html: man/sd_journal_add_match.html + $(html-alias) + man/sd_journal_add_disjunction.html: man/sd_journal_add_match.html $(html-alias) diff --git a/NEWS b/NEWS index e8b7b392c5..2b46246576 100644 --- a/NEWS +++ b/NEWS @@ -32,7 +32,7 @@ CHANGES WITH 202: services, user processes and containers/virtual machines. This new cgroup hierarchy is also useful to stick stable names to specific container instances, which can be - recognized later on this way (this name may be controlled + recognized later this way (this name may be controlled via systemd-nspawn's new -M switch). libsystemd-login also gained a new call sd_pid_get_machine_name() to retrieve the name of the container/VM a specific process belongs to. @@ -49,7 +49,7 @@ CHANGES WITH 202: * The cryptsetup logic now understands the "luks.key=" kernel command line switch for specifying a file to read the - decryption key from. Also, if a configured keyfile is now + decryption key from. Also, if a configured key file is not found the tool will now automatically fall back to prompting the user. -- cgit v1.2.1 From f333fbb1efc2f32527f78cbdb003d59bae01aa07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 17 Apr 2013 14:13:09 -0400 Subject: nspawn: create empty /etc/resolv.conf if necessary nspawn will overmount resolv.conf if it exists. Since e.g. default install with yum doesn't create /etc/resolv.conf, a container created with yum will not have network. This seems undesirable, and since we overmount the file anyway, let's create it too. Also, mounting a read-write /etc/resolv.conf in the container is treated as a failure, since it makes it possible to modify hosts /etc/resolv.conf from inside the container. --- src/nspawn/nspawn.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index f57c75ffee..5a43d5ed12 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -492,7 +492,8 @@ static int setup_timezone(const char *dest) { } static int setup_resolv_conf(const char *dest) { - char *where; + char _cleanup_free_ *where = NULL; + _cleanup_close_ int fd = -1; assert(dest); @@ -504,12 +505,18 @@ static int setup_resolv_conf(const char *dest) { if (!where) return log_oom(); + fd = open(where, O_WRONLY|O_CREAT|O_EXCL|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW, 0644); + /* We don't really care for the results of this really. If it * fails, it fails, but meh... */ - if (mount("/etc/resolv.conf", where, "bind", MS_BIND, NULL) >= 0) - mount("/etc/resolv.conf", where, "bind", MS_BIND|MS_REMOUNT|MS_RDONLY, NULL); - - free(where); + if (mount("/etc/resolv.conf", where, "bind", MS_BIND, NULL) < 0) + log_warning("Failed to bind mount /etc/resolv.conf: %m"); + else + if (mount("/etc/resolv.conf", where, "bind", + MS_BIND|MS_REMOUNT|MS_RDONLY, NULL) < 0) { + log_error("Failed to remount /etc/resolv.conf readonly: %m"); + return -errno; + } return 0; } -- cgit v1.2.1 From 7f876bc4281145e6c74e98de07c6648a5b51ed90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 18 Apr 2013 19:37:26 -0400 Subject: systemd-python: wrap sd_journal_add_conjunction --- src/python-systemd/_reader.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 05993b33cd..b836597746 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -567,7 +567,10 @@ static PyObject* Reader_add_match(Reader *self, PyObject *args, PyObject *keywds PyDoc_STRVAR(Reader_add_disjunction__doc__, "add_disjunction() -> None\n\n" - "Inserts a logical OR between matches added before and afterwards."); + "Inserts a logical OR between matches added since previous\n" + "add_disjunction() or add_conjunction() and the next\n" + "add_disjunction() or add_conjunction().\n\n" + "See man:sd_journal_add_disjunction(3) for explanation."); static PyObject* Reader_add_disjunction(Reader *self, PyObject *args) { int r; @@ -579,6 +582,23 @@ static PyObject* Reader_add_disjunction(Reader *self, PyObject *args) } +PyDoc_STRVAR(Reader_add_conjunction__doc__, + "add_conjunction() -> None\n\n" + "Inserts a logical AND between matches added since previous\n" + "add_disjunction() or add_conjunction() and the next\n" + "add_disjunction() or add_conjunction().\n\n" + "See man:sd_journal_add_disjunction(3) for explanation."); +static PyObject* Reader_add_conjunction(Reader *self, PyObject *args) +{ + int r; + r = sd_journal_add_conjunction(self->j); + set_error(r, NULL, NULL); + if (r < 0) + return NULL; + Py_RETURN_NONE; +} + + PyDoc_STRVAR(Reader_flush_matches__doc__, "flush_matches() -> None\n\n" "Clear all current match filters."); @@ -980,6 +1000,7 @@ static PyMethodDef Reader_methods[] = { {"_get_monotonic", (PyCFunction) Reader_get_monotonic, METH_NOARGS, Reader_get_monotonic__doc__}, {"add_match", (PyCFunction) Reader_add_match, METH_VARARGS|METH_KEYWORDS, Reader_add_match__doc__}, {"add_disjunction", (PyCFunction) Reader_add_disjunction, METH_NOARGS, Reader_add_disjunction__doc__}, + {"add_conjunction", (PyCFunction) Reader_add_conjunction, METH_NOARGS, Reader_add_conjunction__doc__}, {"flush_matches", (PyCFunction) Reader_flush_matches, METH_NOARGS, Reader_flush_matches__doc__}, {"seek_head", (PyCFunction) Reader_seek_head, METH_NOARGS, Reader_seek_head__doc__}, {"seek_tail", (PyCFunction) Reader_seek_tail, METH_NOARGS, Reader_seek_tail__doc__}, -- cgit v1.2.1 From cbeabcfbc5a5fa27385e5794780e8f034e090606 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 18 Apr 2013 19:59:12 -0400 Subject: Update NEWS --- NEWS | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/NEWS b/NEWS index 2b46246576..afaadf3db6 100644 --- a/NEWS +++ b/NEWS @@ -53,6 +53,13 @@ CHANGES WITH 202: found the tool will now automatically fall back to prompting the user. + * Python systemd.journal module was updated to wrap recently + added functions from libsystemd-journal. The interface was + changed to bring the low level interface in s.j._Reader + closer to the C API, and the high level interface in + s.j.Reader was updated to wrap and convert all data about + an entry. + Contributions from: Anatol Pomozov, Auke Kok, Harald Hoyer, Henrik Grindal Bakken, Josh Triplett, Kay Sievers, Lennart Poettering, Lukas Nykryn, Mantas Mikulėnas Marius Vollmer, -- cgit v1.2.1 From bdd29249a882e599e5e365536372d08dee398cd4 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Fri, 19 Apr 2013 13:44:56 +0200 Subject: Reintroduce f_type comparison macro This reverts commit 4826f0b7b5c0aefa08b8cc7ef64d69027f84da2c. Because statfs.t_type can be int on some architecures, we have to cast the const magic to the type, otherwise the compiler warns about signed/unsigned comparison, because the magic can be 32 bit unsigned. statfs(2) man page is also wrong on some systems, because f_type is not __SWORD_TYPE on some architecures. The following program: int main(int argc, char**argv) { struct statfs s; statfs(argv[1], &s); printf("sizeof(f_type) = %d\n", sizeof(s.f_type)); printf("sizeof(__SWORD_TYPE) = %d\n", sizeof(__SWORD_TYPE)); printf("sizeof(long) = %d\n", sizeof(long)); printf("sizeof(int) = %d\n", sizeof(int)); if (sizeof(s.f_type) == sizeof(int)) { printf("f_type = 0x%x\n", s.f_type); } else { printf("f_type = 0x%lx\n", s.f_type); } return 0; } executed on s390x gives for a btrfs: sizeof(f_type) = 4 sizeof(__SWORD_TYPE) = 8 sizeof(long) = 8 sizeof(int) = 4 f_type = 0x9123683e --- src/journal/sd-journal.c | 10 +++++----- src/readahead/readahead-collect.c | 2 +- src/shared/macro.h | 7 +++++++ src/shared/util.c | 5 +++-- 4 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index e021d98155..15239b5688 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -1251,11 +1251,11 @@ static void check_network(sd_journal *j, int fd) { return; j->on_network = - sfs.f_type == (__SWORD_TYPE) CIFS_MAGIC_NUMBER || - sfs.f_type == (__SWORD_TYPE) CODA_SUPER_MAGIC || - sfs.f_type == (__SWORD_TYPE) NCP_SUPER_MAGIC || - sfs.f_type == (__SWORD_TYPE) NFS_SUPER_MAGIC || - sfs.f_type == (__SWORD_TYPE) SMB_SUPER_MAGIC; + F_TYPE_CMP(sfs.f_type, CIFS_MAGIC_NUMBER) || + F_TYPE_CMP(sfs.f_type, CODA_SUPER_MAGIC) || + F_TYPE_CMP(sfs.f_type, NCP_SUPER_MAGIC) || + F_TYPE_CMP(sfs.f_type, NFS_SUPER_MAGIC) || + F_TYPE_CMP(sfs.f_type, SMB_SUPER_MAGIC); } static int add_file(sd_journal *j, const char *prefix, const char *filename) { diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c index 02ecbe56c9..75ec5b70c7 100644 --- a/src/readahead/readahead-collect.c +++ b/src/readahead/readahead-collect.c @@ -505,7 +505,7 @@ done: on_ssd = fs_on_ssd(root) > 0; log_debug("On SSD: %s", yes_no(on_ssd)); - on_btrfs = statfs(root, &sfs) >= 0 && sfs.f_type == (__SWORD_TYPE) BTRFS_SUPER_MAGIC; + on_btrfs = statfs(root, &sfs) >= 0 && F_TYPE_CMP(sfs.f_type, BTRFS_SUPER_MAGIC); log_debug("On btrfs: %s", yes_no(on_btrfs)); if (asprintf(&pack_fn_new, "%s/.readahead.new", root) < 0) { diff --git a/src/shared/macro.h b/src/shared/macro.h index 9bf81dc3cc..ac61b49588 100644 --- a/src/shared/macro.h +++ b/src/shared/macro.h @@ -264,6 +264,13 @@ do { \ } \ } while(false) + /* Because statfs.t_type can be int on some architecures, we have to cast + * the const magic to the type, otherwise the compiler warns about + * signed/unsigned comparison, because the magic can be 32 bit unsigned. + */ +#define F_TYPE_CMP(a, b) (a == (typeof(a)) b) + + /* Returns the number of chars needed to format variables of the * specified type as a decimal string. Adds in extra space for a * negative '-' prefix. */ diff --git a/src/shared/util.c b/src/shared/util.c index 5d03272619..1fc6c5aa1a 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -2779,8 +2779,9 @@ int rm_rf_children_dangerous(int fd, bool only_dirs, bool honour_sticky, struct static int is_temporary_fs(struct statfs *s) { assert(s); - return s->f_type == (__SWORD_TYPE) TMPFS_MAGIC || - s->f_type == (__SWORD_TYPE) RAMFS_MAGIC; + return + F_TYPE_CMP(s->f_type, TMPFS_MAGIC) || + F_TYPE_CMP(s->f_type, RAMFS_MAGIC); } int rm_rf_children(int fd, bool only_dirs, bool honour_sticky, struct stat *root_dev) { -- cgit v1.2.1 From 31885cd5e38ec9807a6a7ab32660cf8c2fcf48f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 17 Apr 2013 17:19:38 -0400 Subject: core/killall: use procfs_file_alloca --- src/core/killall.c | 9 ++------- src/shared/util.c | 9 --------- src/shared/util.h | 10 ++++++++++ 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/core/killall.c b/src/core/killall.c index e078012c1b..a0f57455fb 100644 --- a/src/core/killall.c +++ b/src/core/killall.c @@ -32,8 +32,7 @@ #define TIMEOUT_USEC (10 * USEC_PER_SEC) static bool ignore_proc(pid_t pid) { - char buf[PATH_MAX]; - FILE *f; + _cleanup_fclose_ FILE *f = NULL; char c; size_t count; uid_t uid; @@ -51,15 +50,11 @@ static bool ignore_proc(pid_t pid) { if (uid != 0) return false; - snprintf(buf, sizeof(buf), "/proc/%lu/cmdline", (unsigned long) pid); - char_array_0(buf); - - f = fopen(buf, "re"); + f = fopen(procfs_file_alloca(pid, "cmdline"), "re"); if (!f) return true; /* not really, but has the desired effect */ count = fread(&c, 1, 1, f); - fclose(f); /* Kernel threads have an empty cmdline */ if (count <= 0) diff --git a/src/shared/util.c b/src/shared/util.c index 1fc6c5aa1a..a6ec79a292 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -80,15 +80,6 @@ char **saved_argv = NULL; static volatile unsigned cached_columns = 0; static volatile unsigned cached_lines = 0; -#define procfs_file_alloca(pid, field) \ - ({ \ - pid_t _pid_ = (pid); \ - char *_r_; \ - _r_ = alloca(sizeof("/proc/") -1 + DECIMAL_STR_MAX(pid_t) + 1 + sizeof(field)); \ - sprintf(_r_, "/proc/%lu/" field, (unsigned long) _pid_); \ - _r_; \ - }) - size_t page_size(void) { static __thread size_t pgsz = 0; long r; diff --git a/src/shared/util.h b/src/shared/util.h index cfb54939cd..6575f56811 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -21,6 +21,7 @@ along with systemd; If not, see . ***/ +#include #include #include #include @@ -696,3 +697,12 @@ int unlink_noerrno(const char *path); strcpy(stpcpy(_c_, _a_), _b_); \ _c_; \ }) + +#define procfs_file_alloca(pid, field) \ + ({ \ + pid_t _pid_ = (pid); \ + char *_r_; \ + _r_ = alloca(sizeof("/proc/") -1 + DECIMAL_STR_MAX(pid_t) + 1 + sizeof(field)); \ + sprintf(_r_, "/proc/%lu/" field, (unsigned long) _pid_); \ + _r_; \ + }) -- cgit v1.2.1 From 5a8e21785907df7466fef5e1cb54ce3bf99e5362 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Fri, 19 Apr 2013 13:58:57 +0200 Subject: crypt-setup-generator: correctly check return of strdup --- src/cryptsetup/cryptsetup-generator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index ac0ed58dae..b31329dc09 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -302,7 +302,7 @@ static int parse_proc_cmdline(char ***arg_proc_cmdline_disks, char **arg_proc_cm } else if (startswith(word, "luks.key=")) { *arg_proc_cmdline_keyfile = strdup(word + 9); - if (! arg_proc_cmdline_keyfile) + if (!*arg_proc_cmdline_keyfile) return log_oom(); } else if (startswith(word, "rd.luks.key=")) { @@ -311,7 +311,7 @@ static int parse_proc_cmdline(char ***arg_proc_cmdline_disks, char **arg_proc_cm if (*arg_proc_cmdline_keyfile) free(*arg_proc_cmdline_keyfile); *arg_proc_cmdline_keyfile = strdup(word + 12); - if (!arg_proc_cmdline_keyfile) + if (!*arg_proc_cmdline_keyfile) return log_oom(); } -- cgit v1.2.1 From 7f6437976d31fa772ccef9abedd152d6f5372303 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Fri, 19 Apr 2013 13:58:58 +0200 Subject: logind-dbus: initialize result variable --- src/login/logind-dbus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 4176902a3e..05cc1fdd13 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -1137,7 +1137,7 @@ static int bus_manager_can_shutdown_or_sleep( DBusMessage **_reply) { bool multiple_sessions, challenge, blocked, b; - const char *result; + const char *result = NULL; _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; int r; unsigned long ul; -- cgit v1.2.1 From 1e335af70f29d1a1e9c132338aa35b8971934441 Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Fri, 19 Apr 2013 16:31:25 -0400 Subject: nss-myhostname: ensure that glibc's assert is used --- src/nss-myhostname/nss-myhostname.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c index 16ccb3ee39..8699098b54 100644 --- a/src/nss-myhostname/nss-myhostname.c +++ b/src/nss-myhostname/nss-myhostname.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include @@ -35,6 +34,11 @@ #include "macro.h" #include "util.h" +/* Ensure that glibc's assert is used. We cannot use assert from macro.h, as + * libnss_myhostname will be linked into arbitrary programs which will, in turn + * attempt to write to the journal via log_dispatch() */ +#include + /* We use 127.0.0.2 as IPv4 address. This has the advantage over * 127.0.0.1 that it can be translated back to the local hostname. For * IPv6 we use ::1 which unfortunately will not translate back to the -- cgit v1.2.1 From 9d2d0fe1e3f28a639c26b62391f79cfd1450d91b Mon Sep 17 00:00:00 2001 From: Evangelos Foutras Date: Sat, 20 Apr 2013 00:17:08 +0300 Subject: build-sys: prevent library underlinking Underlinking can cause subtle bugs like the recent issue with libnss_myhostname (which was fixed in commit 1e335af7). --- configure.ac | 1 + 1 file changed, 1 insertion(+) diff --git a/configure.ac b/configure.ac index 5173783948..ce02ff6f80 100644 --- a/configure.ac +++ b/configure.ac @@ -144,6 +144,7 @@ AC_SUBST([OUR_CPPFLAGS], $with_cppflags) CC_CHECK_FLAGS_APPEND([with_ldflags], [LDFLAGS], [\ -Wl,--as-needed \ + -Wl,--no-undefined \ -Wl,--gc-sections \ -Wl,-z,relro \ -Wl,-z,now]) -- cgit v1.2.1 From de7a659c055f613efd77b6d54b8491b0f3fd50f1 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 20 Apr 2013 18:41:57 +0200 Subject: hwdb: update --- hwdb/20-OUI.hwdb | 121 +++++++++++++++++++++++++++++++++++++----- hwdb/20-pci-vendor-model.hwdb | 69 ++++++++++++++---------- 2 files changed, 149 insertions(+), 41 deletions(-) diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb index 1fc88fa8f6..afdc9e4b2a 100644 --- a/hwdb/20-OUI.hwdb +++ b/hwdb/20-OUI.hwdb @@ -1730,7 +1730,7 @@ OUI:0050C2248* ID_OUI_FROM_DATABASE=Dixtal Biomedica Ind. Com. Ltda. OUI:0050C2249* - ID_OUI_FROM_DATABASE=Dipl.-Ing. W. Bender GmbH & Co. KG + ID_OUI_FROM_DATABASE=Bender GmbH & Co. KG OUI:0050C224A* ID_OUI_FROM_DATABASE=CDS Rail @@ -2351,7 +2351,7 @@ OUI:0050C2319* ID_OUI_FROM_DATABASE=Invatron Systems Corp. OUI:0050C231A* - ID_OUI_FROM_DATABASE=IN-SNEC ZODIAC + ID_OUI_FROM_DATABASE=Zodiak Data Systems OUI:0050C231B* ID_OUI_FROM_DATABASE=Datacon @@ -10859,7 +10859,7 @@ OUI:0050C2E3E* ID_OUI_FROM_DATABASE=Monnit Corp. OUI:0050C2E3F* - ID_OUI_FROM_DATABASE=VISITO S.R.L. IT10346660011 + ID_OUI_FROM_DATABASE=VISITO S.R.L. OUI:0050C2E40* ID_OUI_FROM_DATABASE=Ecrin Systems @@ -12844,6 +12844,24 @@ OUI:40D8550D7* OUI:40D8550D8* ID_OUI_FROM_DATABASE=NEXT! s.c. S.Piela B.Dryja +OUI:40D8550D9* + ID_OUI_FROM_DATABASE=YUKO ELECTRIC CO.,LTD + +OUI:40D8550DA* + ID_OUI_FROM_DATABASE=Devialet SA + +OUI:40D8550DB* + ID_OUI_FROM_DATABASE=Top Connect OU + +OUI:40D8550DC* + ID_OUI_FROM_DATABASE=NVS Technologies Inc + +OUI:40D8550DD* + ID_OUI_FROM_DATABASE=Embed Limited + +OUI:40D8550DE* + ID_OUI_FROM_DATABASE=Vishay Nobel AB + OUI:000000* ID_OUI_FROM_DATABASE=XEROX CORPORATION @@ -14354,7 +14372,7 @@ OUI:0001F7* ID_OUI_FROM_DATABASE=Image Display Systems, Inc. OUI:0001F8* - ID_OUI_FROM_DATABASE=Adherent Systems, Ltd. + ID_OUI_FROM_DATABASE=Texio Technology Corporation OUI:0001F9* ID_OUI_FROM_DATABASE=TeraGlobal Communications Corp. @@ -17318,7 +17336,7 @@ OUI:0005D5* ID_OUI_FROM_DATABASE=Speedcom Wireless OUI:0005D6* - ID_OUI_FROM_DATABASE=Titan Wireless + ID_OUI_FROM_DATABASE=L-3 Linkabit OUI:0005D7* ID_OUI_FROM_DATABASE=Vista Imaging, Inc. @@ -21563,7 +21581,7 @@ OUI:000B79* ID_OUI_FROM_DATABASE=X-COM, Inc. OUI:000B7A* - ID_OUI_FROM_DATABASE=Wave Science Inc. + ID_OUI_FROM_DATABASE=L-3 Linkabit OUI:000B7B* ID_OUI_FROM_DATABASE=Test-Um Inc. @@ -23147,7 +23165,7 @@ OUI:000D8C* ID_OUI_FROM_DATABASE=Shanghai Wedone Digital Ltd. CO. OUI:000D8D* - ID_OUI_FROM_DATABASE=ProLinx Communication Gateways, Inc. + ID_OUI_FROM_DATABASE=Prosoft Technology, Inc OUI:000D8E* ID_OUI_FROM_DATABASE=Koden Electronics Co., Ltd. @@ -23912,7 +23930,7 @@ OUI:000E91* ID_OUI_FROM_DATABASE=Navico Auckland Ltd OUI:000E92* - ID_OUI_FROM_DATABASE=Millinet Co., Ltd. + ID_OUI_FROM_DATABASE=Open Telecom OUI:000E93* ID_OUI_FROM_DATABASE=Milénio 3 Sistemas Electrónicos, Lda. @@ -24515,7 +24533,7 @@ OUI:000F5C* ID_OUI_FROM_DATABASE=Day One Digital Media Limited OUI:000F5D* - ID_OUI_FROM_DATABASE=PacketFront Network Products AB + ID_OUI_FROM_DATABASE=Genexis BV OUI:000F5E* ID_OUI_FROM_DATABASE=Veo @@ -24680,7 +24698,7 @@ OUI:000F93* ID_OUI_FROM_DATABASE=Landis+Gyr Ltd. OUI:000F94* - ID_OUI_FROM_DATABASE=Genexis + ID_OUI_FROM_DATABASE=Genexis BV OUI:000F95* ID_OUI_FROM_DATABASE=ELECOM Co.,LTD Laneed Division @@ -28508,7 +28526,7 @@ OUI:001490* ID_OUI_FROM_DATABASE=ASP Corporation OUI:001491* - ID_OUI_FROM_DATABASE=Daniels Electronics Ltd. + ID_OUI_FROM_DATABASE=Daniels Electronics Ltd. dbo Codan Rado Communications OUI:001492* ID_OUI_FROM_DATABASE=Liteon, Mobile Media Solution SBU @@ -43010,7 +43028,7 @@ OUI:003061* ID_OUI_FROM_DATABASE=MobyTEL OUI:003062* - ID_OUI_FROM_DATABASE=PATH 1 NETWORK TECHNOL'S INC. + ID_OUI_FROM_DATABASE=IP Video Networks Inc OUI:003063* ID_OUI_FROM_DATABASE=SANTERA SYSTEMS, INC. @@ -45832,6 +45850,9 @@ OUI:0070B0* OUI:0070B3* ID_OUI_FROM_DATABASE=DATA RECALL LTD. +OUI:0075E1* + ID_OUI_FROM_DATABASE=Ampt, LLC + OUI:00789E* ID_OUI_FROM_DATABASE=SAGEMCOM @@ -46526,7 +46547,7 @@ OUI:0080E4* ID_OUI_FROM_DATABASE=NORTHWEST DIGITAL SYSTEMS, INC OUI:0080E5* - ID_OUI_FROM_DATABASE=LSI Logic Corporation + ID_OUI_FROM_DATABASE=NetApp, Inc OUI:0080E6* ID_OUI_FROM_DATABASE=PEER NETWORKS, INC. @@ -47291,7 +47312,7 @@ OUI:0090DC* ID_OUI_FROM_DATABASE=TECO INFORMATION SYSTEMS OUI:0090DD* - ID_OUI_FROM_DATABASE=THE MIHARU COMMUNICATIONS CO., LTD. + ID_OUI_FROM_DATABASE=MIHARU COMMUNICATIONS Inc OUI:0090DE* ID_OUI_FROM_DATABASE=CARDKEY SYSTEMS, INC. @@ -51979,6 +52000,9 @@ OUI:0CEEE6* OUI:0CEF7C* ID_OUI_FROM_DATABASE=AnaCom Inc +OUI:0CF019* + ID_OUI_FROM_DATABASE=Malgn Technology Co., Ltd. + OUI:0CF0B4* ID_OUI_FROM_DATABASE=Globalsat International Technology Ltd @@ -52150,6 +52174,9 @@ OUI:1077B1* OUI:1078D2* ID_OUI_FROM_DATABASE=ELITEGROUP COMPUTER SYSTEM CO., LTD. +OUI:107A86* + ID_OUI_FROM_DATABASE=U&U ENGINEERING INC. + OUI:1083D2* ID_OUI_FROM_DATABASE=Microseven Systems, LLC @@ -54142,12 +54169,18 @@ OUI:34A183* OUI:34A55D* ID_OUI_FROM_DATABASE=TECHNOSOFT INTERNATIONAL SRL +OUI:34A68C* + ID_OUI_FROM_DATABASE=Shine Profit Development Limited + OUI:34A709* ID_OUI_FROM_DATABASE=Trevil srl OUI:34A7BA* ID_OUI_FROM_DATABASE=Fischer International Systems Corporation +OUI:34A843* + ID_OUI_FROM_DATABASE=KYOCERA Display Corporation + OUI:34A84E* ID_OUI_FROM_DATABASE=Cisco @@ -54595,6 +54628,9 @@ OUI:3C94D5* OUI:3C970E* ID_OUI_FROM_DATABASE=Wistron InfoComm(Kunshan)Co.,Ltd. +OUI:3C977E* + ID_OUI_FROM_DATABASE=IPS Technology Limited + OUI:3C98BF* ID_OUI_FROM_DATABASE=Quest Controls, Inc. @@ -54892,6 +54928,9 @@ OUI:40BC73* OUI:40BC8B* ID_OUI_FROM_DATABASE=itelio GmbH +OUI:40BD9E* + ID_OUI_FROM_DATABASE=Physio-Control, Inc + OUI:40BF17* ID_OUI_FROM_DATABASE=Digistar Telecom. SA @@ -56050,6 +56089,9 @@ OUI:587521* OUI:587675* ID_OUI_FROM_DATABASE=Beijing ECHO Technologies Co.,Ltd +OUI:587A4D* + ID_OUI_FROM_DATABASE=Stonesoft Corporation + OUI:587FC8* ID_OUI_FROM_DATABASE=S2M @@ -56155,6 +56197,9 @@ OUI:58ECE1* OUI:58EECE* ID_OUI_FROM_DATABASE=Icon Time Systems +OUI:58F387* + ID_OUI_FROM_DATABASE=HCCP + OUI:58F67B* ID_OUI_FROM_DATABASE=Xia Men UnionCore Technology LTD. @@ -56962,6 +57007,9 @@ OUI:680927* OUI:68122D* ID_OUI_FROM_DATABASE=Special Instrument Development Co., Ltd. +OUI:681590* + ID_OUI_FROM_DATABASE=SAGEMCOM SAS + OUI:6815D3* ID_OUI_FROM_DATABASE=Zaklady Elektroniki i Mechaniki Precyzyjnej R&G S.A. @@ -57247,6 +57295,9 @@ OUI:6C416A* OUI:6C504D* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. +OUI:6C5779* + ID_OUI_FROM_DATABASE=Aclima, Inc. + OUI:6C5A34* ID_OUI_FROM_DATABASE=Shenzhen Haitianxiong Electronic Co., Ltd. @@ -60052,6 +60103,9 @@ OUI:9C4E36* OUI:9C4E8E* ID_OUI_FROM_DATABASE=ALT Systems Ltd +OUI:9C4EBF* + ID_OUI_FROM_DATABASE=BoxCast + OUI:9C53CD* ID_OUI_FROM_DATABASE=ENGICAM s.r.l. @@ -60721,6 +60775,9 @@ OUI:A4F3C1* OUI:A4F7D0* ID_OUI_FROM_DATABASE=LAN Accessories Co., Ltd. +OUI:A4FB8D* + ID_OUI_FROM_DATABASE=Hangzhou Dunchong Technology Co.Ltd + OUI:A4FCCE* ID_OUI_FROM_DATABASE=Security Expert Ltd. @@ -61276,6 +61333,9 @@ OUI:B075D5* OUI:B077AC* ID_OUI_FROM_DATABASE=Motorola Mobility, Inc. +OUI:B0793C* + ID_OUI_FROM_DATABASE=Revolv Inc + OUI:B07994* ID_OUI_FROM_DATABASE=Motorola Mobility LLC @@ -62182,6 +62242,9 @@ OUI:C038F9* OUI:C03B8F* ID_OUI_FROM_DATABASE=Minicom Digital Signage +OUI:C03E0F* + ID_OUI_FROM_DATABASE=BSkyB Ltd + OUI:C03F0E* ID_OUI_FROM_DATABASE=NETGEAR @@ -62320,6 +62383,9 @@ OUI:C0D044* OUI:C0D962* ID_OUI_FROM_DATABASE=Askey Computer Corp. +OUI:C0DA74* + ID_OUI_FROM_DATABASE=Hangzhou Sunyard Technology Co., Ltd. + OUI:C0DF77* ID_OUI_FROM_DATABASE=Conrad Electronic SE @@ -63034,6 +63100,9 @@ OUI:CCCD64* OUI:CCCE40* ID_OUI_FROM_DATABASE=Janteq Corp +OUI:CCD29B* + ID_OUI_FROM_DATABASE=Shenzhen Bopengfa Elec&Technology CO.,Ltd + OUI:CCD539* ID_OUI_FROM_DATABASE=Cisco @@ -63424,6 +63493,9 @@ OUI:D466A8* OUI:D467E7* ID_OUI_FROM_DATABASE=Fiberhome Telecommunication Tech.Co.,Ltd. +OUI:D46A91* + ID_OUI_FROM_DATABASE=Snap AV + OUI:D46CBF* ID_OUI_FROM_DATABASE=Goodrich ISR @@ -63742,6 +63814,9 @@ OUI:D8AFF1* OUI:D8B02E* ID_OUI_FROM_DATABASE=Guangzhou Zonerich Business Machine Co., Ltd +OUI:D8B04C* + ID_OUI_FROM_DATABASE=Jinan USR IOT Technology Co., Ltd. + OUI:D8B12A* ID_OUI_FROM_DATABASE=Panasonic Mobile Communications Co., Ltd. @@ -63790,6 +63865,9 @@ OUI:D8D5B9* OUI:D8D67E* ID_OUI_FROM_DATABASE=GSK CNC EQUIPMENT CO.,LTD +OUI:D8DA52* + ID_OUI_FROM_DATABASE=APATOR S.A. + OUI:D8DCE9* ID_OUI_FROM_DATABASE=Kunshan Erlab ductless filtration system Co.,Ltd @@ -64558,6 +64636,9 @@ OUI:E84E06* OUI:E84ECE* ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. +OUI:E8519D* + ID_OUI_FROM_DATABASE=Yeonhab Precision Co.,LTD + OUI:E85484* ID_OUI_FROM_DATABASE=NEO INFORMATION SYSTEMS CO., LTD. @@ -64612,6 +64693,9 @@ OUI:E88D28* OUI:E88DF5* ID_OUI_FROM_DATABASE=ZNYX Networks, Inc. +OUI:E89218* + ID_OUI_FROM_DATABASE=Arcontia International AB + OUI:E892A4* ID_OUI_FROM_DATABASE=LG Electronics @@ -64960,6 +65044,9 @@ OUI:F0219D* OUI:F02329* ID_OUI_FROM_DATABASE=SHOWA DENKI CO.,LTD. +OUI:F02405* + ID_OUI_FROM_DATABASE=OPUS High Technology Corporation + OUI:F02408* ID_OUI_FROM_DATABASE=Talaris (Sweden) AB @@ -64969,6 +65056,9 @@ OUI:F02572* OUI:F0264C* ID_OUI_FROM_DATABASE=Dr. Sigrist AG +OUI:F02765* + ID_OUI_FROM_DATABASE=Murata Manufactuaring Co.,Ltd. + OUI:F02929* ID_OUI_FROM_DATABASE=Cisco @@ -65449,6 +65539,9 @@ OUI:F83376* OUI:F83553* ID_OUI_FROM_DATABASE=Magenta Research Ltd. +OUI:F835DD* + ID_OUI_FROM_DATABASE=Gemtek Technology Co., Ltd. + OUI:F83DFF* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb index fafa324446..a46426f520 100644 --- a/hwdb/20-pci-vendor-model.hwdb +++ b/hwdb/20-pci-vendor-model.hwdb @@ -1590,7 +1590,7 @@ pci:v00001001d00009100* ID_MODEL_FROM_DATABASE=INI-9100/9100W SCSI Host pci:v00001002* - ID_VENDOR_FROM_DATABASE=Advanced Micro Devices [AMD] nee ATI + ID_VENDOR_FROM_DATABASE=AMD/ATI [Advanced Micro Devices, Inc.] pci:v00001002d00001304* ID_MODEL_FROM_DATABASE=Kaveri @@ -2808,7 +2808,7 @@ pci:v00001002d00004C46sv00001028sd000000B1* ID_MODEL_FROM_DATABASE=Latitude C600 pci:v00001002d00004C47* - ID_MODEL_FROM_DATABASE=3D Rage IIC PCI/Mobility Radeon 7500/7500C + ID_MODEL_FROM_DATABASE=3D Rage IIC PCI / Mobility Radeon 7500/7500C pci:v00001002d00004C49* ID_MODEL_FROM_DATABASE=3D Rage LT PRO PCI @@ -4083,10 +4083,10 @@ pci:v00001002d00006603* ID_MODEL_FROM_DATABASE=Mars pci:v00001002d00006606* - ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8790M] + ID_MODEL_FROM_DATABASE=Mars XTX [Radeon HD 8790M] pci:v00001002d00006607* - ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8530M] + ID_MODEL_FROM_DATABASE=Mars LE [Radeon HD 8530M] pci:v00001002d00006610* ID_MODEL_FROM_DATABASE=Oland [Radeon HD 8600 Series] @@ -4101,7 +4101,7 @@ pci:v00001002d00006620* ID_MODEL_FROM_DATABASE=Mars pci:v00001002d00006621* - ID_MODEL_FROM_DATABASE=Mars + ID_MODEL_FROM_DATABASE=Mars PRO pci:v00001002d00006623* ID_MODEL_FROM_DATABASE=Mars @@ -4110,10 +4110,10 @@ pci:v00001002d00006631* ID_MODEL_FROM_DATABASE=Oland pci:v00001002d00006640* - ID_MODEL_FROM_DATABASE=Saturn + ID_MODEL_FROM_DATABASE=Saturn XT pci:v00001002d00006641* - ID_MODEL_FROM_DATABASE=Saturn + ID_MODEL_FROM_DATABASE=Saturn PRO pci:v00001002d00006649* ID_MODEL_FROM_DATABASE=Bonaire @@ -4134,13 +4134,19 @@ pci:v00001002d0000665Csv00001787sd00002329* ID_MODEL_FROM_DATABASE=Radeon HD 7790 TurboDuo pci:v00001002d00006660* - ID_MODEL_FROM_DATABASE=Sun [Radeon HD 8600M Series] + ID_MODEL_FROM_DATABASE=Sun XT [Radeon HD 8600M Series] + +pci:v00001002d00006663* + ID_MODEL_FROM_DATABASE=Sun PRO [Radeon HD 8500M Series] pci:v00001002d00006667* ID_MODEL_FROM_DATABASE=Sun pci:v00001002d0000666F* - ID_MODEL_FROM_DATABASE=Sun + ID_MODEL_FROM_DATABASE=Sun LE + +pci:v00001002d00006670* + ID_MODEL_FROM_DATABASE=Hainan pci:v00001002d00006704* ID_MODEL_FROM_DATABASE=Cayman PRO GL [FirePro V7900] @@ -4253,15 +4259,6 @@ pci:v00001002d00006742sv00008086sd00002111* pci:v00001002d00006743* ID_MODEL_FROM_DATABASE=Whistler [Radeon E6760] -pci:v00001002d00006746* - ID_MODEL_FROM_DATABASE=Turks GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006747* - ID_MODEL_FROM_DATABASE=Turks GL [ATI FirePro V (FireGL V) Graphics Adapter] - -pci:v00001002d00006748* - ID_MODEL_FROM_DATABASE=Turks GL [ATI FirePro V (FireGL V) Graphics Adapter] - pci:v00001002d00006749* ID_MODEL_FROM_DATABASE=Turks GL [FirePro V4900] @@ -4319,9 +4316,6 @@ pci:v00001002d00006760sv00001043sd000084A0* pci:v00001002d00006761* ID_MODEL_FROM_DATABASE=Seymour LP [Radeon HD 6430M] -pci:v00001002d00006762* - ID_MODEL_FROM_DATABASE=Caicos GL [ATI FirePro V (FireGL V) Graphics Adapter] - pci:v00001002d00006763* ID_MODEL_FROM_DATABASE=Seymour [Radeon E6460] @@ -4473,7 +4467,7 @@ pci:v00001002d0000679Asv00001462sd00003000* ID_MODEL_FROM_DATABASE=Radeon HD 8950 OEM pci:v00001002d0000679B* - ID_MODEL_FROM_DATABASE=New Zealand [Radeon HD 7900 Series] + ID_MODEL_FROM_DATABASE=New Zealand [Radeon HD 7990] pci:v00001002d0000679E* ID_MODEL_FROM_DATABASE=Tahiti LE [Radeon HD 7870 XT] @@ -4634,9 +4628,6 @@ pci:v00001002d00006849* pci:v00001002d0000684C* ID_MODEL_FROM_DATABASE=Pitcairn [ATI FirePro V(FireGL V) Graphics Adapter] -pci:v00001002d00006858* - ID_MODEL_FROM_DATABASE=Lombok [Radeon HD 7400 series] - pci:v00001002d00006880* ID_MODEL_FROM_DATABASE=Cypress @@ -7575,7 +7566,7 @@ pci:v00001021* ID_VENDOR_FROM_DATABASE=OKI Electric Industry Co. Ltd. pci:v00001022* - ID_VENDOR_FROM_DATABASE=Advanced Micro Devices [AMD] + ID_VENDOR_FROM_DATABASE=Advanced Micro Devices, Inc. [AMD] pci:v00001022d00001100* ID_MODEL_FROM_DATABASE=K8 [Athlon64/Opteron] HyperTransport Technology Configuration @@ -22482,7 +22473,7 @@ pci:v000010DEd00000FC6sv00001043sd00008428* ID_MODEL_FROM_DATABASE=GTX650-DC-1GD5 pci:v000010DEd00000FD1* - ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 650M / GTX 660M LE] + ID_MODEL_FROM_DATABASE=GK107M [GeForce GT 650M] pci:v000010DEd00000FD1sv00001043sd00001597* ID_MODEL_FROM_DATABASE=GeForce GT 650M @@ -22871,6 +22862,9 @@ pci:v000010DEd00001140sv000017AAsd0000500D* pci:v000010DEd00001180* ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 680] +pci:v000010DEd00001180sv00003842sd00003682* + ID_MODEL_FROM_DATABASE=GeForce GTX 680 Mac Edition + pci:v000010DEd00001183* ID_MODEL_FROM_DATABASE=GK104 [GeForce GTX 660 Ti] @@ -22946,6 +22940,9 @@ pci:v000010DEd000011C2* pci:v000010DEd000011C3* ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti OEM] +pci:v000010DEd000011C3sv000010DEsd00001030* + ID_MODEL_FROM_DATABASE=GeForce GTX 650 Ti OEM + pci:v000010DEd000011C4* ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 645 OEM] @@ -24161,6 +24158,9 @@ pci:v00001102d00000004sv00001102sd00001007* pci:v00001102d00000004sv00001102sd00001009* ID_MODEL_FROM_DATABASE=SB Audigy2 OEM HP +pci:v00001102d00000004sv00001102sd00002001* + ID_MODEL_FROM_DATABASE=SB Audigy 2 ZS Platinum Pro + pci:v00001102d00000004sv00001102sd00002002* ID_MODEL_FROM_DATABASE=SB Audigy 2 ZS (SB0350) @@ -49994,6 +49994,12 @@ pci:v00008086d000008AFsv00008086sd00001015* pci:v00008086d000008AFsv00008086sd00001017* ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 BG +pci:v00008086d000008B1* + ID_MODEL_FROM_DATABASE=Intel(R) Dual Band Wireless-AC 7260 + +pci:v00008086d000008B2* + ID_MODEL_FROM_DATABASE=Intel(R) Dual Band Wireless-AC 7260 + pci:v00008086d00000960* ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor/Bridge @@ -52985,6 +52991,9 @@ pci:v00008086d00001521sv00001028sd00001F60* pci:v00008086d00001521sv00001028sd00001F62* ID_MODEL_FROM_DATABASE=Intel GbE 2P I350crNDC +pci:v00008086d00001521sv0000103Csd000017D1* + ID_MODEL_FROM_DATABASE=Ethernet 1Gb 4-port 366FLR Adapter + pci:v00008086d00001521sv0000103Csd0000337F* ID_MODEL_FROM_DATABASE=Ethernet 1Gb 2-port 361i Adapter @@ -53198,6 +53207,9 @@ pci:v00008086d0000155A* pci:v00008086d00001560* ID_MODEL_FROM_DATABASE=Ethernet Controller X540-AT1 +pci:v00008086d0000157B* + ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection + pci:v00008086d00001960* ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor @@ -66107,6 +66119,9 @@ pci:v0000CACEd00000002* pci:v0000CACEd00000023* ID_MODEL_FROM_DATABASE=AirPcap N +pci:v0000CAED* + ID_VENDOR_FROM_DATABASE=Canny Edge + pci:v0000CAFE* ID_VENDOR_FROM_DATABASE=Chrysalis-ITS -- cgit v1.2.1 From 601d9d6fb394a780765e80581daab850623e9698 Mon Sep 17 00:00:00 2001 From: Josh Triplett Date: Fri, 19 Apr 2013 14:13:42 -0700 Subject: TODO: journal enhancements --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index 7f42dedf17..1ead61861a 100644 --- a/TODO +++ b/TODO @@ -287,6 +287,8 @@ Features: - journal: store euid in journal if it differs from uid - journal: sanely deal with entries which are larger than the individual file size, but where the components would fit - journalctl: make journalctl smarter, and actually check groups that have access to /var/log/journal before printing message about recomming group membership for journal access + - Replace utmp, wtmp, btmp, and lastlog completely with journal + - Port upower to use the journal for historical power information used in future calculations * document: - document unit_name_mangle() -- cgit v1.2.1 From fcdfc159248fa484f443e17ab2bde8e354ecc560 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 20 Apr 2013 19:26:28 +0200 Subject: TODO: remove dbus items which we will not touch anymore --- TODO | 4 ---- 1 file changed, 4 deletions(-) diff --git a/TODO b/TODO index 1ead61861a..786275143c 100644 --- a/TODO +++ b/TODO @@ -536,12 +536,8 @@ Features: * default unix qlen is too small (10). bump sysctl? add sockopt? -* figure out whether we should leave dbus around during shutdown - * dbus: in fedora, make /var/lib/dbus/machine-id a symlink to /etc/machine-id -* dbus: move dbus to early boot - * save coredump in Windows/Mozilla minidump format * support crash reporting operation modes (https://live.gnome.org/GnomeOS/Design/Whiteboards/ProblemReporting) -- cgit v1.2.1 From 9097fe299f22c46316979356d945ebb494e85814 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Sun, 21 Apr 2013 22:24:50 -0300 Subject: bus: implement client logic for fd passing --- src/libsystemd-bus/bus-kernel.c | 25 +++++++++++++++++++++++-- src/libsystemd-bus/test-bus-kernel.c | 28 ++++++++++++++++++++++++++-- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index 5172b32113..115297dca4 100644 --- a/src/libsystemd-bus/bus-kernel.c +++ b/src/libsystemd-bus/bus-kernel.c @@ -35,6 +35,7 @@ #define KDBUS_ITEM_NEXT(item) \ (typeof(item))(((uint8_t *)item) + ALIGN8((item)->size)) + #define KDBUS_ITEM_FOREACH(item, head) \ for (item = (head)->items; \ (uint8_t *)(item) < (uint8_t *)(head) + (head)->size; \ @@ -100,6 +101,19 @@ static void* append_bloom(struct kdbus_msg_item **d, size_t length) { return r; } +static void append_fds(struct kdbus_msg_item **d, const int fds[], unsigned n_fds) { + assert(d); + assert(fds); + assert(n_fds > 0); + + *d = ALIGN8_PTR(*d); + (*d)->size = offsetof(struct kdbus_msg_item, fds) + sizeof(int) * n_fds; + (*d)->type = KDBUS_MSG_UNIX_FDS; + memcpy((*d)->fds, fds, sizeof(int) * n_fds); + + *d = (struct kdbus_msg_item *) ((uint8_t*) *d + (*d)->size); +} + static int bus_message_setup_bloom(sd_bus_message *m, void *bloom) { unsigned i; int r; @@ -200,6 +214,10 @@ static int bus_message_setup_kmsg(sd_bus *b, sd_bus_message *m) { sz += ALIGN8(offsetof(struct kdbus_msg_item, str) + dl + 1); } + /* Add space for unix fds */ + if (m->n_fds > 0) + sz += ALIGN8(offsetof(struct kdbus_msg_item, fds) + sizeof(int)*m->n_fds); + m->kdbus = memalign(8, sz); if (!m->kdbus) return -ENOMEM; @@ -233,7 +251,6 @@ static int bus_message_setup_kmsg(sd_bus *b, sd_bus_message *m) { if (m->kdbus->dst_id == KDBUS_DST_ID_BROADCAST) { void *p; - /* For now, let's add a mask all bloom filter */ p = append_bloom(&d, BLOOM_SIZE); r = bus_message_setup_bloom(m, p); if (r < 0) { @@ -243,6 +260,9 @@ static int bus_message_setup_kmsg(sd_bus *b, sd_bus_message *m) { } } + if (m->n_fds > 0) + append_fds(&d, m->fds, m->n_fds); + m->kdbus->size = (uint8_t*) d - (uint8_t*) m->kdbus; assert(m->kdbus->size <= sz); @@ -289,6 +309,7 @@ int bus_kernel_take_fd(sd_bus *b) { b->is_kernel = true; b->bus_client = true; + b->can_fds = true; r = bus_start_running(b); if (r < 0) @@ -389,7 +410,7 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k, sd_bus_mess return -ENOMEM; fds = f; - memcpy(fds + n_fds, d->fds, j); + memcpy(fds + n_fds, d->fds, sizeof(int) * j); n_fds += j; } else if (d->type == KDBUS_MSG_DST_NAME) diff --git a/src/libsystemd-bus/test-bus-kernel.c b/src/libsystemd-bus/test-bus-kernel.c index ffabdcbd14..1095e57e42 100644 --- a/src/libsystemd-bus/test-bus-kernel.c +++ b/src/libsystemd-bus/test-bus-kernel.c @@ -19,6 +19,8 @@ along with systemd; If not, see . ***/ +#include + #include "util.h" #include "sd-bus.h" @@ -32,7 +34,7 @@ int main(int argc, char *argv[]) { _cleanup_bus_message_unref_ sd_bus_message *m = NULL; const char *ua = NULL, *ub = NULL, *the_string = NULL; sd_bus *a, *b; - int r; + int r, pipe_fds[2]; bus_ref = bus_kernel_create("deine-mutter", &bus_name); if (bus_ref == -ENOENT) @@ -108,6 +110,19 @@ int main(int argc, char *argv[]) { r = sd_bus_message_new_method_call(b, "net.x0pointer.foobar", "/a/path", "an.inter.face", "AMethod", &m); assert_se(r >= 0); + assert_se(pipe2(pipe_fds, O_CLOEXEC) >= 0); + + assert_se(write(pipe_fds[1], "x", 1) == 1); + + close_nointr_nofail(pipe_fds[1]); + pipe_fds[1] = -1; + + r = sd_bus_message_append(m, "h", pipe_fds[0]); + assert_se(r >= 0); + + close_nointr_nofail(pipe_fds[0]); + pipe_fds[0] = -1; + r = sd_bus_send(b, m, NULL); assert_se(r >= 0); @@ -121,8 +136,17 @@ int main(int argc, char *argv[]) { bus_message_dump(m); assert_se(sd_bus_message_rewind(m, true) >= 0); - if (sd_bus_message_is_method_call(m, "an.inter.face", "AMethod")) + if (sd_bus_message_is_method_call(m, "an.inter.face", "AMethod")) { + int fd; + char x; + + r = sd_bus_message_read(m, "h", &fd); + assert_se(r >= 0); + + assert_se(read(fd, &x, 1) == 1); + assert_se(x == 'x'); break; + } } r = sd_bus_release_name(a, "net.x0pointer.foobar"); -- cgit v1.2.1 From a383724e4202ee9681bd31cb668c44bdbbf83638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sun, 21 Apr 2013 20:25:01 -0400 Subject: systemd,nspawn: use extended attributes to store metadata All attributes are stored as text, since root_directory is already text, and it seems easier to have all of them in text format. Attributes are written in the trusted. namespace, because the kernel currently does not allow user. attributes on cgroups. This is a PITA, and CAP_SYS_ADMIN is required to *read* the attributes. Alas. A second pipe is opened for the child to signal the parent that the cgroup hierarchy has been set up. --- TODO | 3 --- src/core/mount-setup.c | 8 ++++++- src/nspawn/nspawn.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 67 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index 786275143c..9adec5ea96 100644 --- a/TODO +++ b/TODO @@ -55,8 +55,6 @@ Features: * timedatctl, localectl: possibly make some commands work without the daemon, for chroot situations... -* nspawn: expose init PID, UUID, root directory as cgroup EAs. names should be: 'user.machine_id', 'user.init_pid', 'user.root_directory'. - * logind: consider making suspend inhibitor locks non-session specific, but keep suspend-key inhibitor locks session specific * logind: add Suspend() bus calls which take timestamps to fix double suspend issues when somebody hits suspend and closes laptop quickly. @@ -405,7 +403,6 @@ Features: interfaces to the container - nspawn: maybe add a way to drop additional caps, in addition to add additional caps - nspawn: maybe explicitly reset loginuid? - - nspawn: move all containers to name=systemd:/containers/, and introduce externally visible names for containers - nspawn: make it work for dwalsh and shared /usr containers -- tmpfs mounts as command line parameters, selinux exec context * cryptsetup: diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index e45a6bc1c8..56d358b094 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -68,6 +68,12 @@ typedef struct MountPoint { * other ones we can delay until SELinux and IMA are loaded. */ #define N_EARLY_MOUNT 5 +#ifdef HAVE_XATTR +# define FS_XATTR_OPT ",xattr" +#else +# define FS_XATTR_OPT "" +#endif + static const MountPoint mount_table[] = { { "proc", "/proc", "proc", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_FATAL|MNT_IN_CONTAINER }, @@ -87,7 +93,7 @@ static const MountPoint mount_table[] = { NULL, MNT_FATAL|MNT_IN_CONTAINER }, { "tmpfs", "/sys/fs/cgroup", "tmpfs", "mode=755", MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME, NULL, MNT_IN_CONTAINER }, - { "cgroup", "/sys/fs/cgroup/systemd", "cgroup", "none,name=systemd", MS_NOSUID|MS_NOEXEC|MS_NODEV, + { "cgroup", "/sys/fs/cgroup/systemd", "cgroup", "none,name=systemd" FS_XATTR_OPT, MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_IN_CONTAINER }, { "pstore", "/sys/fs/pstore", "pstore", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_NONE }, diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 5a43d5ed12..b59b2673cd 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -921,6 +922,46 @@ static int setup_cgroup(const char *path) { return 0; } +static int save_attributes(const char *cgroup, pid_t pid, const char *uuid, const char *directory) { + char buf[DECIMAL_STR_MAX(pid_t)], path[PATH_MAX]; + int r = 0, k; + + assert(cgroup); + assert(pid >= 0); + assert(arg_directory); + +#ifdef HAVE_XATTR + assert_se(snprintf(buf, sizeof(buf), "%lu", (unsigned long) pid) < (int) sizeof(buf)); + + r = snprintf(path, sizeof(path), "/sys/fs/cgroup/systemd/%s", cgroup); + if (r >= (int) sizeof(path)) { + log_error("cgroup name too long"); + return -EINVAL; + } + + r = setxattr(path, "trusted.init_pid", buf, strlen(buf), XATTR_CREATE); + if (r < 0) + log_warning("Failed to set %s attribute on %s: %m", "trusted.init_pid", path); + + if (uuid) { + k = setxattr(path, "trusted.machine_id", uuid, strlen(uuid), XATTR_CREATE); + if (k < 0) { + log_warning("Failed to set %s attribute on %s: %m", "trusted.machine_id", path); + if (r == 0) + r = k; + } + } + + k = setxattr(path, "trusted.root_directory", directory, strlen(directory), XATTR_CREATE); + if (k < 0) { + log_warning("Failed to set %s attribute on %s: %m", "trusted.machine_id", path); + if (r == 0) + r = k; + } +#endif + return r; +} + static int drop_capabilities(void) { return capability_bounding_set_drop(~arg_retain, false); } @@ -1198,7 +1239,7 @@ int main(int argc, char *argv[]) { arg_directory = get_current_dir_name(); if (!arg_directory) { - log_error("Failed to determine path"); + log_error("Failed to determine path, please use -D."); goto finish; } @@ -1313,13 +1354,19 @@ int main(int argc, char *argv[]) { for (;;) { siginfo_t status; - int pipefd[2]; + int pipefd[2], pipefd2[2]; if (pipe2(pipefd, O_NONBLOCK|O_CLOEXEC) < 0) { log_error("pipe2(): %m"); goto finish; } + if (pipe2(pipefd2, O_NONBLOCK|O_CLOEXEC) < 0) { + log_error("pipe2(): %m"); + close_pipe(pipefd); + goto finish; + } + pid = syscall(__NR_clone, SIGCHLD|CLONE_NEWIPC|CLONE_NEWNS|CLONE_NEWPID|CLONE_NEWUTS|(arg_private_network ? CLONE_NEWNET : 0), NULL); if (pid < 0) { if (errno == EINVAL) @@ -1353,6 +1400,7 @@ int main(int argc, char *argv[]) { if (envp[n_env]) n_env ++; + /* Wait for the parent process to log our PID */ close_nointr_nofail(pipefd[1]); fd_wait_for_event(pipefd[0], POLLHUP, -1); close_nointr_nofail(pipefd[0]); @@ -1409,6 +1457,9 @@ int main(int argc, char *argv[]) { if (setup_cgroup(newcg) < 0) goto child_fail; + close_nointr_nofail(pipefd2[1]); + close_nointr_nofail(pipefd2[0]); + /* Mark everything as slave, so that we still * receive mounts from the real root, but don't * propagate mounts to the real root. */ @@ -1617,6 +1668,13 @@ int main(int argc, char *argv[]) { close_nointr_nofail(pipefd[0]); close_nointr_nofail(pipefd[1]); + /* Wait for the child process to establish cgroup hierarchy */ + close_nointr_nofail(pipefd2[1]); + fd_wait_for_event(pipefd2[0], POLLHUP, -1); + close_nointr_nofail(pipefd2[0]); + + save_attributes(newcg, pid, arg_uuid, arg_directory); + fdset_free(fds); fds = NULL; -- cgit v1.2.1 From bf83067c1ded45c1ba1d9d679e6190a5de51f960 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Mon, 22 Apr 2013 11:38:40 +0200 Subject: shell-completion: add shell completion for "systemctl help" --- shell-completion/bash/systemctl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl index 3e51f34cba..f5829b72f8 100644 --- a/shell-completion/bash/systemctl +++ b/shell-completion/bash/systemctl @@ -117,7 +117,7 @@ _systemctl () { fi local -A VERBS=( - [ALL_UNITS]='is-active is-failed is-enabled status show mask preset' + [ALL_UNITS]='is-active is-failed is-enabled status show mask preset help' [ENABLED_UNITS]='disable' [DISABLED_UNITS]='enable' [REENABLABLE_UNITS]='reenable' -- cgit v1.2.1 From 3e8037f17c985a99b26fff92917e8567480ab246 Mon Sep 17 00:00:00 2001 From: Tom Gundersen Date: Mon, 22 Apr 2013 21:57:39 +0200 Subject: units: rename systemd-static-nodes -> systemd-tmpfiles-setup-dev This is really just a special case of systemd-tmpfiles-setup, moreover it could easily create more than static nodes. --- Makefile.am | 8 +++----- units/.gitignore | 2 +- units/systemd-static-nodes.service.in | 16 ---------------- units/systemd-tmpfiles-setup-dev.service.in | 16 ++++++++++++++++ 4 files changed, 20 insertions(+), 22 deletions(-) delete mode 100644 units/systemd-static-nodes.service.in create mode 100644 units/systemd-tmpfiles-setup-dev.service.in diff --git a/Makefile.am b/Makefile.am index d594a3d935..1e155d5abd 100644 --- a/Makefile.am +++ b/Makefile.am @@ -416,6 +416,7 @@ nodist_systemunit_DATA = \ units/systemd-remount-fs.service \ units/systemd-update-utmp-runlevel.service \ units/systemd-update-utmp-shutdown.service \ + units/systemd-tmpfiles-setup-dev.service \ units/systemd-tmpfiles-setup.service \ units/systemd-tmpfiles-clean.service \ units/systemd-ask-password-wall.service \ @@ -433,7 +434,6 @@ nodist_systemunit_DATA = \ units/systemd-kexec.service \ units/systemd-fsck@.service \ units/systemd-fsck-root.service \ - units/systemd-static-nodes.service \ units/systemd-udevd.service \ units/systemd-udev-trigger.service \ units/systemd-udev-settle.service \ @@ -461,6 +461,7 @@ EXTRA_DIST += \ units/systemd-remount-fs.service.in \ units/systemd-update-utmp-runlevel.service.in \ units/systemd-update-utmp-shutdown.service.in \ + units/systemd-tmpfiles-setup-dev.service.in \ units/systemd-tmpfiles-setup.service.in \ units/systemd-tmpfiles-clean.service.in \ units/systemd-ask-password-wall.service.in \ @@ -475,7 +476,6 @@ EXTRA_DIST += \ units/systemd-fsck@.service.in \ units/systemd-fsck-root.service.in \ units/user@.service.in \ - units/systemd-static-nodes.service \ units/systemd-udevd.service \ units/systemd-udev-trigger.service \ units/systemd-udev-settle.service \ @@ -1952,13 +1952,11 @@ CLEANFILES += \ src/udev/udev.pc EXTRA_DIST += \ - units/systemd-static-nodes.service.in \ units/systemd-udevd.service.in \ units/systemd-udev-trigger.service.in \ units/systemd-udev-settle.service.in CLEANFILES += \ - units/systemd-static-nodes.service \ units/systemd-udevd.service \ units/systemd-udev-trigger.service \ units/systemd-udev-settle.service @@ -1967,7 +1965,6 @@ SOCKETS_TARGET_WANTS += \ systemd-udevd-control.socket \ systemd-udevd-kernel.socket SYSINIT_TARGET_WANTS += \ - systemd-static-nodes.service \ systemd-udevd.service \ systemd-udev-trigger.service @@ -4021,6 +4018,7 @@ SYSINIT_TARGET_WANTS += \ sys-kernel-config.mount \ sys-kernel-debug.mount \ sys-fs-fuse-connections.mount \ + systemd-tmpfiles-setup-dev.service \ systemd-tmpfiles-setup.service \ systemd-sysctl.service \ systemd-ask-password-console.path diff --git a/units/.gitignore b/units/.gitignore index 6c9582e026..d2f3eb40d6 100644 --- a/units/.gitignore +++ b/units/.gitignore @@ -26,6 +26,7 @@ /systemd-fsck-root.service /systemd-tmpfiles-clean.service /systemd-tmpfiles-setup.service +/systemd-tmpfiles-setup-dev.service /systemd-halt.service /systemd-poweroff.service /systemd-reboot.service @@ -43,7 +44,6 @@ /systemd-random-seed-load.service /systemd-random-seed-save.service /systemd-initctl.service -/systemd-static-nodes.service /getty@.service /systemd-update-utmp-runlevel.service /systemd-update-utmp-shutdown.service diff --git a/units/systemd-static-nodes.service.in b/units/systemd-static-nodes.service.in deleted file mode 100644 index 3553226c67..0000000000 --- a/units/systemd-static-nodes.service.in +++ /dev/null @@ -1,16 +0,0 @@ -# This file is part of systemd. -# -# systemd is free software; you can redistribute it and/or modify it -# under the terms of the GNU Lesser General Public License as published by -# the Free Software Foundation; either version 2.1 of the License, or -# (at your option) any later version. - -[Unit] -Description=Create static device nodes in /dev -DefaultDependencies=no -Before=sysinit.target systemd-udevd.service -ConditionCapability=CAP_MKNOD - -[Service] -Type=oneshot -ExecStart=@rootbindir@/systemd-tmpfiles --prefix=/dev --create diff --git a/units/systemd-tmpfiles-setup-dev.service.in b/units/systemd-tmpfiles-setup-dev.service.in new file mode 100644 index 0000000000..3553226c67 --- /dev/null +++ b/units/systemd-tmpfiles-setup-dev.service.in @@ -0,0 +1,16 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Create static device nodes in /dev +DefaultDependencies=no +Before=sysinit.target systemd-udevd.service +ConditionCapability=CAP_MKNOD + +[Service] +Type=oneshot +ExecStart=@rootbindir@/systemd-tmpfiles --prefix=/dev --create -- cgit v1.2.1 From 8fc66914c068e6fa0e1c610b9cdbef429e469a88 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 22 Apr 2013 17:03:59 -0300 Subject: update TODO --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index 9adec5ea96..b53c2a54fa 100644 --- a/TODO +++ b/TODO @@ -32,6 +32,8 @@ Fedora 19: Features: +* suffix/escape all our objects in the cgroup tree + * see if we can fix https://bugs.freedesktop.org/show_bug.cgi?id=63672 without dropping the location cache entirely. -- cgit v1.2.1 From dc2c75602dc9f2529e6ba6db02fa53d057ce0f8c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 22 Apr 2013 17:11:05 -0300 Subject: nspawn: always use cg_get_path() to determine fs path for a cgroup --- src/nspawn/nspawn.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index b59b2673cd..0a5a151202 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -923,7 +923,8 @@ static int setup_cgroup(const char *path) { } static int save_attributes(const char *cgroup, pid_t pid, const char *uuid, const char *directory) { - char buf[DECIMAL_STR_MAX(pid_t)], path[PATH_MAX]; + _cleanup_free_ char *path = NULL; + char buf[DECIMAL_STR_MAX(pid_t)]; int r = 0, k; assert(cgroup); @@ -933,10 +934,10 @@ static int save_attributes(const char *cgroup, pid_t pid, const char *uuid, cons #ifdef HAVE_XATTR assert_se(snprintf(buf, sizeof(buf), "%lu", (unsigned long) pid) < (int) sizeof(buf)); - r = snprintf(path, sizeof(path), "/sys/fs/cgroup/systemd/%s", cgroup); - if (r >= (int) sizeof(path)) { - log_error("cgroup name too long"); - return -EINVAL; + r = cg_get_path(SYSTEMD_CGROUP_CONTROLLER, cgroup, NULL, &path); + if (r < 0) { + log_error("Failed to get path: %s", strerror(-r)); + return r; } r = setxattr(path, "trusted.init_pid", buf, strlen(buf), XATTR_CREATE); @@ -954,7 +955,7 @@ static int save_attributes(const char *cgroup, pid_t pid, const char *uuid, cons k = setxattr(path, "trusted.root_directory", directory, strlen(directory), XATTR_CREATE); if (k < 0) { - log_warning("Failed to set %s attribute on %s: %m", "trusted.machine_id", path); + log_warning("Failed to set %s attribute on %s: %m", "trusted.root_directory", path); if (r == 0) r = k; } @@ -1457,8 +1458,7 @@ int main(int argc, char *argv[]) { if (setup_cgroup(newcg) < 0) goto child_fail; - close_nointr_nofail(pipefd2[1]); - close_nointr_nofail(pipefd2[0]); + close_pipe(pipefd2); /* Mark everything as slave, so that we still * receive mounts from the real root, but don't -- cgit v1.2.1 From aff38e74bd776471f15ba54b305a24b0251eb865 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 22 Apr 2013 17:26:06 -0300 Subject: nspawn: suffix the nspawn cgroups with ".nspawn" As discussed with Dan Berrange it's a good idea to suffix all objects in the cgroup tree with ".something", so that when the system is partitioned using a resource management tool we can drop objects of different types into the same partition directory without generate namespace conflicts. We'l add this to the Pax Control Group document as soon as write access to the fdo wiki is restored. --- src/nspawn/nspawn.c | 2 +- src/shared/cgroup-util.c | 6 +++++- src/test/test-cgroup-util.c | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 0a5a151202..1e7df38c16 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1298,7 +1298,7 @@ int main(int argc, char *argv[]) { goto finish; } - newcg = strjoin(machine_root, "/", arg_machine, NULL); + newcg = strjoin(machine_root, "/", arg_machine, ".nspawn", NULL); if (!newcg) { log_error("Failed to allocate cgroup path."); goto finish; diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 5d44342bbe..e54b94658c 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -1320,7 +1320,7 @@ int cg_pid_get_user_unit(pid_t pid, char **unit) { int cg_path_get_machine_name(const char *path, char **machine) { const char *e, *n; - char *s; + char *s, *dot; assert(path); assert(machine); @@ -1337,6 +1337,10 @@ int cg_path_get_machine_name(const char *path, char **machine) { if (!s) return -ENOMEM; + dot = strrchr(s, '.'); + if (dot) + *dot = 0; + *machine = s; return 0; } diff --git a/src/test/test-cgroup-util.c b/src/test/test-cgroup-util.c index 5eaa129418..f632df11eb 100644 --- a/src/test/test-cgroup-util.c +++ b/src/test/test-cgroup-util.c @@ -89,11 +89,51 @@ static void test_get_paths(void) { log_info("Machine = %s", d); } +static void test_proc(void) { + _cleanup_closedir_ DIR *d = NULL; + struct dirent *de; + int r; + + d = opendir("/proc"); + assert_se(d); + + FOREACH_DIRENT(de, d, break) { + _cleanup_free_ char *path = NULL, *path_shifted = NULL, *session = NULL, *unit = NULL, *user_unit = NULL, *machine = NULL, *prefix = NULL; + pid_t pid; + + if (de->d_type != DT_DIR && + de->d_type != DT_UNKNOWN) + continue; + + r = parse_pid(de->d_name, &pid); + if (r < 0) + continue; + + cg_pid_get_path(SYSTEMD_CGROUP_CONTROLLER, pid, &path); + cg_pid_get_path_shifted(pid, &prefix, &path_shifted); + cg_pid_get_session(pid, &session); + cg_pid_get_unit(pid, &unit); + cg_pid_get_user_unit(pid, &user_unit); + cg_pid_get_machine_name(pid, &machine); + + printf("%lu\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", + (unsigned long) pid, + path, + prefix, + path_shifted, + session, + unit, + user_unit, + machine); + } +} + int main(void) { test_path_decode_unit(); test_path_get_unit(); test_path_get_user_unit(); test_get_paths(); + test_proc(); return 0; } -- cgit v1.2.1 From cd8f53ab1601513cc3407447bfe3359ee7139676 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 22 Apr 2013 23:09:02 -0300 Subject: core: there's no point to complain so loudly about non-isolatable boot targets --- src/core/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/main.c b/src/core/main.c index ce8ec99f9b..6a981a0b7e 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -1683,7 +1683,7 @@ int main(int argc, char *argv[]) { r = manager_add_job(m, JOB_START, target, JOB_ISOLATE, false, &error, &default_unit_job); if (r == -EPERM) { - log_error("Default target could not be isolated, starting instead: %s", bus_error(&error, r)); + log_debug("Default target could not be isolated, starting instead: %s", bus_error(&error, r)); dbus_error_free(&error); r = manager_add_job(m, JOB_START, target, JOB_REPLACE, false, &error, &default_unit_job); -- cgit v1.2.1 From ae018d9bc900d6355dea4af05119b49c67945184 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 22 Apr 2013 23:10:13 -0300 Subject: cgroup: make sure all our cgroup objects have a suffix and are properly escaped Session objects will now get the .session suffix, user objects the .user suffix, nspawn containers the .nspawn suffix. This also changes the user cgroups to be named after the numeric UID rather than the username, since this allows us the parse these paths standalone without requiring access to the cgroup file system. This also changes the mapping of instanced units to cgroups. Instead of mapping foo@bar.service to the cgroup path /user/foo@.service/bar we will now map it to /user/foo@.service/foo@bar.service, in order to ensure that all our objects are properly suffixed in the tree. --- TODO | 2 - src/core/unit.c | 26 +++++-- src/journal/journald-server.c | 162 ++++++++++++++++++------------------------ src/login/logind-session.c | 13 +++- src/login/logind-user.c | 12 +++- src/login/sd-login.c | 35 +-------- src/nspawn/nspawn.c | 18 ++++- src/shared/cgroup-util.c | 123 +++++++++++++++++++++++++++----- src/shared/cgroup-util.h | 5 ++ src/test/test-cgroup-util.c | 40 +++++++++-- 10 files changed, 271 insertions(+), 165 deletions(-) diff --git a/TODO b/TODO index b53c2a54fa..9adec5ea96 100644 --- a/TODO +++ b/TODO @@ -32,8 +32,6 @@ Fedora 19: Features: -* suffix/escape all our objects in the cgroup tree - * see if we can fix https://bugs.freedesktop.org/show_bug.cgi?id=63672 without dropping the location cache entirely. diff --git a/src/core/unit.c b/src/core/unit.c index 2525f49980..5834009445 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1810,14 +1810,13 @@ static const char *resolve_template(Unit *u, const char *name, const char*path, if (u->instance) s = unit_name_replace_instance(name, u->instance); else { - char *i; + _cleanup_free_ char *i = NULL; i = unit_name_to_prefix(u->id); if (!i) return NULL; s = unit_name_replace_instance(name, i); - free(i); } if (!s) @@ -1972,15 +1971,30 @@ char *unit_default_cgroup_path(Unit *u) { assert(u); if (u->instance) { - _cleanup_free_ char *t = NULL; + _cleanup_free_ char *t = NULL, *escaped_template = NULL, *escaped_instance = NULL; t = unit_name_template(u->id); if (!t) return NULL; - return strjoin(u->manager->cgroup_hierarchy, "/", t, "/", u->instance, NULL); - } else - return strjoin(u->manager->cgroup_hierarchy, "/", u->id, NULL); + escaped_template = cg_escape(t); + if (!escaped_template) + return NULL; + + escaped_instance = cg_escape(u->id); + if (!escaped_instance) + return NULL; + + return strjoin(u->manager->cgroup_hierarchy, "/", escaped_template, "/", escaped_instance, NULL); + } else { + _cleanup_free_ char *escaped = NULL; + + escaped = cg_escape(u->id); + if (!escaped) + return NULL; + + return strjoin(u->manager->cgroup_hierarchy, "/", escaped, NULL); + } } int unit_add_cgroup_from_text(Unit *u, const char *name, bool overwrite, CGroupBonding **ret) { diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 7e7b379df8..4134e9fc67 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -31,10 +31,6 @@ #include #include -#ifdef HAVE_LOGIND -#include -#endif - #include "fileio.h" #include "mkdir.h" #include "hashmap.h" @@ -505,26 +501,26 @@ static void dispatch_message_real( const char *label, size_t label_len, const char *unit_id) { - char pid[sizeof("_PID=") + DECIMAL_STR_MAX(ucred->pid)], - uid[sizeof("_UID=") + DECIMAL_STR_MAX(ucred->uid)], - gid[sizeof("_GID=") + DECIMAL_STR_MAX(ucred->gid)], + char pid[sizeof("_PID=") + DECIMAL_STR_MAX(pid_t)], + uid[sizeof("_UID=") + DECIMAL_STR_MAX(uid_t)], + gid[sizeof("_GID=") + DECIMAL_STR_MAX(gid_t)], + owner_uid[sizeof("_SYSTEMD_OWNER_UID=") + DECIMAL_STR_MAX(uid_t)], source_time[sizeof("_SOURCE_REALTIME_TIMESTAMP=") + DECIMAL_STR_MAX(usec_t)], boot_id[sizeof("_BOOT_ID=") + 32] = "_BOOT_ID=", machine_id[sizeof("_MACHINE_ID=") + 32] = "_MACHINE_ID="; - - _cleanup_free_ char *comm = NULL, *cmdline = NULL, *hostname = NULL, - *exe = NULL, *cgroup = NULL, *session = NULL, - *owner_uid = NULL, *unit = NULL, *selinux_context = NULL; - -#ifdef HAVE_AUDIT - _cleanup_free_ char *audit_session = NULL, *audit_loginuid = NULL; -#endif - + char *comm, *exe, *cmdline, *cgroup, *session, *unit, *selinux_context, *hostname; sd_id128_t id; int r; - char *t; + char *t, *c; uid_t realuid = 0, owner = 0, journal_uid; bool owner_valid = false; +#ifdef HAVE_AUDIT + char audit_session[sizeof("_AUDIT_SESSION=") + DECIMAL_STR_MAX(uint32_t)], + audit_loginuid[sizeof("_AUDIT_LOGINUID=") + DECIMAL_STR_MAX(uid_t)]; + + uint32_t audit; + uid_t loginuid; +#endif assert(s); assert(iovec); @@ -532,130 +528,111 @@ static void dispatch_message_real( assert(n + N_IOVEC_META_FIELDS <= m); if (ucred) { -#ifdef HAVE_AUDIT - uint32_t audit; - uid_t loginuid; -#endif - realuid = ucred->uid; - snprintf(pid, sizeof(pid) - 1, "_PID=%lu", (unsigned long) ucred->pid); - char_array_0(pid); + sprintf(pid, "_PID=%lu", (unsigned long) ucred->pid); IOVEC_SET_STRING(iovec[n++], pid); - snprintf(uid, sizeof(uid) - 1, "_UID=%lu", (unsigned long) ucred->uid); - char_array_0(uid); + sprintf(uid, "_UID=%lu", (unsigned long) ucred->uid); IOVEC_SET_STRING(iovec[n++], uid); - snprintf(gid, sizeof(gid) - 1, "_GID=%lu", (unsigned long) ucred->gid); - char_array_0(gid); + sprintf(gid, "_GID=%lu", (unsigned long) ucred->gid); IOVEC_SET_STRING(iovec[n++], gid); r = get_process_comm(ucred->pid, &t); if (r >= 0) { - comm = strappend("_COMM=", t); + comm = strappenda("_COMM=", t); free(t); - - if (comm) - IOVEC_SET_STRING(iovec[n++], comm); + IOVEC_SET_STRING(iovec[n++], comm); } r = get_process_exe(ucred->pid, &t); if (r >= 0) { - exe = strappend("_EXE=", t); + exe = strappenda("_EXE=", t); free(t); - - if (exe) - IOVEC_SET_STRING(iovec[n++], exe); + IOVEC_SET_STRING(iovec[n++], exe); } r = get_process_cmdline(ucred->pid, 0, false, &t); if (r >= 0) { - cmdline = strappend("_CMDLINE=", t); + cmdline = strappenda("_CMDLINE=", t); free(t); - - if (cmdline) - IOVEC_SET_STRING(iovec[n++], cmdline); + IOVEC_SET_STRING(iovec[n++], cmdline); } #ifdef HAVE_AUDIT r = audit_session_from_pid(ucred->pid, &audit); - if (r >= 0) - if (asprintf(&audit_session, "_AUDIT_SESSION=%lu", (unsigned long) audit) >= 0) - IOVEC_SET_STRING(iovec[n++], audit_session); + if (r >= 0) { + sprintf(audit_session, "_AUDIT_SESSION=%lu", (unsigned long) audit); + IOVEC_SET_STRING(iovec[n++], audit_session); + } r = audit_loginuid_from_pid(ucred->pid, &loginuid); - if (r >= 0) - if (asprintf(&audit_loginuid, "_AUDIT_LOGINUID=%lu", (unsigned long) loginuid) >= 0) - IOVEC_SET_STRING(iovec[n++], audit_loginuid); -#endif - - r = cg_pid_get_path(NULL, ucred->pid, &t); if (r >= 0) { - cgroup = strappend("_SYSTEMD_CGROUP=", t); - free(t); - - if (cgroup) - IOVEC_SET_STRING(iovec[n++], cgroup); + sprintf(audit_loginuid, "_AUDIT_LOGINUID=%lu", (unsigned long) loginuid); + IOVEC_SET_STRING(iovec[n++], audit_loginuid); } +#endif -#ifdef HAVE_LOGIND - r = cg_pid_get_session(ucred->pid, &t); + r = cg_pid_get_path_shifted(ucred->pid, NULL, &c); if (r >= 0) { - session = strappend("_SYSTEMD_SESSION=", t); - free(t); + cgroup = strappenda("_SYSTEMD_CGROUP=", c); + IOVEC_SET_STRING(iovec[n++], cgroup); - if (session) + r = cg_path_get_session(c, &t); + if (r >= 0) { + session = strappenda("_SYSTEMD_SESSION=", t); + free(t); IOVEC_SET_STRING(iovec[n++], session); - } + } - if (sd_pid_get_owner_uid(ucred->pid, &owner) >= 0) { - owner_valid = true; - if (asprintf(&owner_uid, "_SYSTEMD_OWNER_UID=%lu", (unsigned long) owner) >= 0) + if (cg_path_get_owner_uid(c, &owner) >= 0) { + owner_valid = true; + + sprintf(owner_uid, "_SYSTEMD_OWNER_UID=%lu", (unsigned long) owner); IOVEC_SET_STRING(iovec[n++], owner_uid); - } -#endif + } - if (cg_pid_get_unit(ucred->pid, &t) >= 0) { - unit = strappend("_SYSTEMD_UNIT=", t); - free(t); - } else if (cg_pid_get_user_unit(ucred->pid, &t) >= 0) { - unit = strappend("_SYSTEMD_USER_UNIT=", t); - free(t); - } else if (unit_id) { - if (session) - unit = strappend("_SYSTEMD_USER_UNIT=", unit_id); - else - unit = strappend("_SYSTEMD_UNIT=", unit_id); + if (cg_path_get_unit(c, &t) >= 0) { + unit = strappenda("_SYSTEMD_UNIT=", t); + free(t); + } else if (cg_path_get_user_unit(c, &t) >= 0) { + unit = strappenda("_SYSTEMD_USER_UNIT=", t); + free(t); + } else if (unit_id) { + if (session) + unit = strappenda("_SYSTEMD_USER_UNIT=", unit_id); + else + unit = strappenda("_SYSTEMD_UNIT=", unit_id); + } else + unit = NULL; + + if (unit) + IOVEC_SET_STRING(iovec[n++], unit); + + free(c); } - if (unit) - IOVEC_SET_STRING(iovec[n++], unit); - #ifdef HAVE_SELINUX if (label) { - selinux_context = malloc(sizeof("_SELINUX_CONTEXT=") + label_len); - if (selinux_context) { - *((char*) mempcpy(stpcpy(selinux_context, "_SELINUX_CONTEXT="), label, label_len)) = 0; - IOVEC_SET_STRING(iovec[n++], selinux_context); - } + selinux_context = alloca(sizeof("_SELINUX_CONTEXT=") + label_len); + + *((char*) mempcpy(stpcpy(selinux_context, "_SELINUX_CONTEXT="), label, label_len)) = 0; + IOVEC_SET_STRING(iovec[n++], selinux_context); } else { security_context_t con; if (getpidcon(ucred->pid, &con) >= 0) { - selinux_context = strappend("_SELINUX_CONTEXT=", con); - if (selinux_context) - IOVEC_SET_STRING(iovec[n++], selinux_context); + selinux_context = strappenda("_SELINUX_CONTEXT=", con); freecon(con); + IOVEC_SET_STRING(iovec[n++], selinux_context); } } #endif } if (tv) { - snprintf(source_time, sizeof(source_time) - 1, "_SOURCE_REALTIME_TIMESTAMP=%llu", - (unsigned long long) timeval_load(tv)); - char_array_0(source_time); + sprintf(source_time, "_SOURCE_REALTIME_TIMESTAMP=%llu", (unsigned long long) timeval_load(tv)); IOVEC_SET_STRING(iovec[n++], source_time); } @@ -676,10 +653,9 @@ static void dispatch_message_real( t = gethostname_malloc(); if (t) { - hostname = strappend("_HOSTNAME=", t); + hostname = strappenda("_HOSTNAME=", t); free(t); - if (hostname) - IOVEC_SET_STRING(iovec[n++], hostname); + IOVEC_SET_STRING(iovec[n++], hostname); } assert(n <= m); diff --git a/src/login/logind-session.c b/src/login/logind-session.c index 2f7ab3451f..662273b07f 100644 --- a/src/login/logind-session.c +++ b/src/login/logind-session.c @@ -465,7 +465,18 @@ static int session_create_cgroup(Session *s) { assert(s->user->cgroup_path); if (!s->cgroup_path) { - if (asprintf(&p, "%s/%s", s->user->cgroup_path, s->id) < 0) + _cleanup_free_ char *name = NULL, *escaped = NULL; + + name = strappend(s->id, ".session"); + if (!name) + return log_oom(); + + escaped = cg_escape(name); + if (!escaped) + return log_oom(); + + p = strjoin(s->user->cgroup_path, "/", escaped, NULL); + if (!p) return log_oom(); } else p = s->cgroup_path; diff --git a/src/login/logind-user.c b/src/login/logind-user.c index 4b0ac5e737..9e2cbf646b 100644 --- a/src/login/logind-user.c +++ b/src/login/logind-user.c @@ -315,7 +315,17 @@ static int user_create_cgroup(User *u) { assert(u); if (!u->cgroup_path) { - if (asprintf(&p, "%s/%s", u->manager->cgroup_path, u->name) < 0) + _cleanup_free_ char *name = NULL, *escaped = NULL; + + if (asprintf(&name, "%lu.user", (unsigned long) u->uid) < 0) + return log_oom(); + + escaped = cg_escape(name); + if (!escaped) + return log_oom(); + + p = strjoin(u->manager->cgroup_path, "/", escaped, NULL); + if (!p) return log_oom(); } else p = u->cgroup_path; diff --git a/src/login/sd-login.c b/src/login/sd-login.c index 30e07a9322..157b7e0fb4 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -73,10 +73,6 @@ _public_ int sd_pid_get_machine_name(pid_t pid, char **name) { } _public_ int sd_pid_get_owner_uid(pid_t pid, uid_t *uid) { - int r; - _cleanup_free_ char *root = NULL, *cgroup = NULL, *cc = NULL; - char *p; - struct stat st; if (pid < 0) return -EINVAL; @@ -84,36 +80,7 @@ _public_ int sd_pid_get_owner_uid(pid_t pid, uid_t *uid) { if (!uid) return -EINVAL; - r = cg_pid_get_path_shifted(pid, &root, &cgroup); - if (r < 0) - return r; - - if (!startswith(cgroup, "/user/")) - return -ENOENT; - - p = strchr(cgroup + 6, '/'); - if (!p) - return -ENOENT; - - p++; - p += strcspn(p, "/"); - *p = 0; - - r = cg_get_path(SYSTEMD_CGROUP_CONTROLLER, root, cgroup, &cc); - - if (r < 0) - return -ENOMEM; - - r = lstat(cc, &st); - - if (r < 0) - return -errno; - - if (!S_ISDIR(st.st_mode)) - return -ENOTDIR; - - *uid = st.st_uid; - return 0; + return cg_pid_get_owner_uid(pid, uid); } _public_ int sd_uid_get_state(uid_t uid, char**state) { diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 1e7df38c16..7b41571034 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1212,7 +1212,7 @@ finish: int main(int argc, char *argv[]) { pid_t pid = 0; int r = EXIT_FAILURE, k; - _cleanup_free_ char *machine_root = NULL, *newcg = NULL; + _cleanup_free_ char *machine_root = NULL, *name = NULL, *escaped = NULL, *newcg = NULL; _cleanup_close_ int master = -1; int n_fd_passed; const char *console = NULL; @@ -1298,9 +1298,21 @@ int main(int argc, char *argv[]) { goto finish; } - newcg = strjoin(machine_root, "/", arg_machine, ".nspawn", NULL); + name = strappend(arg_machine, ".nspawn"); + if (!name) { + log_oom(); + goto finish; + } + + escaped = cg_escape(name); + if (!escaped) { + log_oom(); + goto finish; + } + + newcg = strjoin(machine_root, "/", escaped, NULL); if (!newcg) { - log_error("Failed to allocate cgroup path."); + log_oom(); goto finish; } diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index e54b94658c..9ec4f40c88 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -1197,8 +1197,8 @@ int cg_pid_get_path_shifted(pid_t pid, char **root, char **cgroup) { return 0; } -/* non-static only for testing purposes */ int cg_path_decode_unit(const char *cgroup, char **unit){ + _cleanup_free_ char *unescaped = NULL; char *p, *e, *c, *s, *k; assert(cgroup); @@ -1206,6 +1206,7 @@ int cg_path_decode_unit(const char *cgroup, char **unit){ e = strchrnul(cgroup, '/'); c = strndupa(cgroup, e - cgroup); + c = cg_unescape(c); /* Could this be a valid unit name? */ if (!unit_name_is_valid(c, true)) @@ -1218,15 +1219,15 @@ int cg_path_decode_unit(const char *cgroup, char **unit){ return -EINVAL; e += strspn(e, "/"); + p = strchrnul(e, '/'); + k = strndupa(e, p - e); + k = cg_unescape(k); - /* Don't allow empty instance strings */ - if (p == e) + if (!unit_name_is_valid(k, false)) return -EINVAL; - k = strndupa(e, p - e); - - s = unit_name_replace_instance(c, k); + s = strdup(k); } if (!s) @@ -1320,7 +1321,7 @@ int cg_pid_get_user_unit(pid_t pid, char **unit) { int cg_path_get_machine_name(const char *path, char **machine) { const char *e, *n; - char *s, *dot; + char *s, *r; assert(path); assert(machine); @@ -1333,15 +1334,13 @@ int cg_path_get_machine_name(const char *path, char **machine) { if (e == n) return -ENOENT; - s = strndup(e, n - e); - if (!s) - return -ENOMEM; + s = strndupa(e, n - e); - dot = strrchr(s, '.'); - if (dot) - *dot = 0; + r = strdup(cg_unescape(s)); + if (!r) + return -ENOMEM; - *machine = s; + *machine = r; return 0; } @@ -1375,13 +1374,12 @@ int cg_path_get_session(const char *path, char **session) { return -ENOENT; n = strchrnul(e, '/'); - if (e == n) + if (n - e < 8) return -ENOENT; - - if (n - e == 6 && memcmp(e, "shared", 6) == 0) + if (memcmp(n - 8, ".session", 8) != 0) return -ENOENT; - s = strndup(e, n - e); + s = strndup(e, n - e - 8); if (!s) return -ENOMEM; @@ -1402,6 +1400,43 @@ int cg_pid_get_session(pid_t pid, char **session) { return cg_path_get_session(cgroup, session); } +int cg_path_get_owner_uid(const char *path, uid_t *uid) { + const char *e, *n; + char *s; + + assert(path); + assert(uid); + + e = path_startswith(path, "/user/"); + if (!e) + return -ENOENT; + + n = strchrnul(e, '/'); + if (n - e < 5) + return -ENOENT; + if (memcmp(n - 5, ".user", 5) != 0) + return -ENOENT; + + s = strndupa(e, n - e - 5); + if (!s) + return -ENOMEM; + + return parse_uid(s, uid); +} + +int cg_pid_get_owner_uid(pid_t pid, uid_t *uid) { + _cleanup_free_ char *cgroup = NULL; + int r; + + assert(uid); + + r = cg_pid_get_path_shifted(pid, NULL, &cgroup); + if (r < 0) + return r; + + return cg_path_get_owner_uid(cgroup, uid); +} + int cg_controller_from_attr(const char *attr, char **controller) { const char *dot; char *c; @@ -1430,3 +1465,55 @@ int cg_controller_from_attr(const char *attr, char **controller) { *controller = c; return 1; } + +char *cg_escape(const char *p) { + bool need_prefix = false; + + /* This implements very minimal escaping for names to be used + * as file names in the cgroup tree: any name which might + * conflict with a kernel name or is prefixed with '_' is + * prefixed with a '_'. That way, when reading cgroup names it + * is sufficient to remove a single prefixing underscore if + * there is one. */ + + /* The return value of this function (unlike cg_unescape()) + * needs free()! */ + + if (p[0] == '_' || streq(p, "notify_on_release") || streq(p, "release_agent") || streq(p, "tasks")) + need_prefix = true; + else { + const char *dot; + + dot = strrchr(p, '.'); + if (dot) { + + if (dot - p == 6 && memcmp(p, "cgroup", 6) == 0) + need_prefix = true; + else { + char *n; + + n = strndupa(p, dot - p); + + if (check_hierarchy(n) >= 0) + need_prefix = true; + } + } + } + + if (need_prefix) + return strappend("_", p); + else + return strdup(p); +} + +char *cg_unescape(const char *p) { + assert(p); + + /* The return value of this function (unlike cg_escape()) + * doesn't need free()! */ + + if (p[0] == '_') + return (char*) p+1; + + return (char*) p; +} diff --git a/src/shared/cgroup-util.h b/src/shared/cgroup-util.h index 5457d1bcaa..2099f934b4 100644 --- a/src/shared/cgroup-util.h +++ b/src/shared/cgroup-util.h @@ -75,6 +75,7 @@ int cg_get_user_path(char **path); int cg_get_machine_path(char **path); int cg_path_get_session(const char *path, char **session); +int cg_path_get_owner_uid(const char *path, uid_t *uid); int cg_path_get_unit(const char *path, char **unit); int cg_path_get_user_unit(const char *path, char **unit); int cg_path_get_machine_name(const char *path, char **machine); @@ -82,6 +83,7 @@ int cg_path_get_machine_name(const char *path, char **machine); int cg_pid_get_path_shifted(pid_t pid, char **root, char **cgroup); int cg_pid_get_session(pid_t pid, char **session); +int cg_pid_get_owner_uid(pid_t pid, uid_t *uid); int cg_pid_get_unit(pid_t pid, char **unit); int cg_pid_get_user_unit(pid_t pid, char **unit); int cg_pid_get_machine_name(pid_t pid, char **machine); @@ -91,3 +93,6 @@ int cg_path_decode_unit(const char *cgroup, char **unit); char **cg_shorten_controllers(char **controllers); int cg_controller_from_attr(const char *attr, char **controller); + +char *cg_escape(const char *p); +char *cg_unescape(const char *p); diff --git a/src/test/test-cgroup-util.c b/src/test/test-cgroup-util.c index f632df11eb..95cede7a22 100644 --- a/src/test/test-cgroup-util.c +++ b/src/test/test-cgroup-util.c @@ -32,8 +32,8 @@ static void check_p_d_u(const char *path, int code, const char *result) { } static void test_path_decode_unit(void) { - check_p_d_u("getty@.service/tty2", 0, "getty@tty2.service"); - check_p_d_u("getty@.service/tty2/xxx", 0, "getty@tty2.service"); + check_p_d_u("getty@.service/getty@tty2.service", 0, "getty@tty2.service"); + check_p_d_u("getty@.service/getty@tty2.service/xxx", 0, "getty@tty2.service"); check_p_d_u("getty@.service/", -EINVAL, NULL); check_p_d_u("getty@.service", -EINVAL, NULL); check_p_d_u("getty.service", 0, "getty.service"); @@ -56,9 +56,9 @@ static void check_p_g_u_u(const char *path, int code, const char *result) { static void test_path_get_unit(void) { check_p_g_u("/system/foobar.service/sdfdsaf", 0, "foobar.service"); - check_p_g_u("/system/getty@.service/tty5", 0, "getty@tty5.service"); - check_p_g_u("/system/getty@.service/tty5/aaa/bbb", 0, "getty@tty5.service"); - check_p_g_u("/system/getty@.service/tty5/", 0, "getty@tty5.service"); + check_p_g_u("/system/getty@.service/getty@tty5.service", 0, "getty@tty5.service"); + check_p_g_u("/system/getty@.service/getty@tty5.service/aaa/bbb", 0, "getty@tty5.service"); + check_p_g_u("/system/getty@.service/getty@tty5.service/", 0, "getty@tty5.service"); check_p_g_u("/system/getty@tty6.service/tty5", 0, "getty@tty6.service"); check_p_g_u("sadfdsafsda", -ENOENT, NULL); check_p_g_u("/system/getty####@tty6.service/tty5", -EINVAL, NULL); @@ -70,7 +70,7 @@ static void test_path_get_user_unit(void) { check_p_g_u_u("/user/lennart/2/systemd-21548/foobar.service/waldo/uuuux", 0, "foobar.service"); check_p_g_u_u("/user/lennart/2/systemd-21548/waldo/waldo/uuuux", -EINVAL, NULL); check_p_g_u_u("/user/lennart/2/foobar.service", -ENOENT, NULL); - check_p_g_u_u("/user/lennart/2/systemd-21548/foobar@.service/pie/pa/po", 0, "foobar@pie.service"); + check_p_g_u_u("/user/lennart/2/systemd-21548/foobar@.service/foobar@pie.service/pa/po", 0, "foobar@pie.service"); } static void test_get_paths(void) { @@ -100,6 +100,7 @@ static void test_proc(void) { FOREACH_DIRENT(de, d, break) { _cleanup_free_ char *path = NULL, *path_shifted = NULL, *session = NULL, *unit = NULL, *user_unit = NULL, *machine = NULL, *prefix = NULL; pid_t pid; + uid_t uid = (uid_t) -1; if (de->d_type != DT_DIR && de->d_type != DT_UNKNOWN) @@ -109,18 +110,23 @@ static void test_proc(void) { if (r < 0) continue; + if (is_kernel_thread(pid)) + continue; + cg_pid_get_path(SYSTEMD_CGROUP_CONTROLLER, pid, &path); cg_pid_get_path_shifted(pid, &prefix, &path_shifted); + cg_pid_get_owner_uid(pid, &uid); cg_pid_get_session(pid, &session); cg_pid_get_unit(pid, &unit); cg_pid_get_user_unit(pid, &user_unit); cg_pid_get_machine_name(pid, &machine); - printf("%lu\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", + printf("%lu\t%s\t%s\t%s\t%lu\t%s\t%s\t%s\t%s\n", (unsigned long) pid, path, prefix, path_shifted, + (unsigned long) uid, session, unit, user_unit, @@ -128,12 +134,32 @@ static void test_proc(void) { } } +static void test_escape_one(const char *s, const char *r) { + _cleanup_free_ char *b; + + b = cg_escape(s); + assert_se(b); + assert_se(streq(b, r)); + + assert_se(streq(cg_unescape(b), s)); +} + +static void test_escape(void) { + test_escape_one("foobar", "foobar"); + test_escape_one("foobar.service", "foobar.service"); + test_escape_one("cgroup.service", "_cgroup.service"); + test_escape_one("cpu.service", "_cpu.service"); + test_escape_one("tasks", "_tasks"); + test_escape_one("_foobar", "__foobar"); +} + int main(void) { test_path_decode_unit(); test_path_get_unit(); test_path_get_user_unit(); test_get_paths(); test_proc(); + test_escape(); return 0; } -- cgit v1.2.1 From bc7f3beb3090716d12406e2bfdba1df0e9d4b333 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 22 Apr 2013 23:27:38 -0300 Subject: bus: parse owner uid from cgroup path, too --- src/libsystemd-bus/bus-message.c | 14 ++++++++++++++ src/systemd/sd-bus.h | 1 + 2 files changed, 15 insertions(+) diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index 8134d77f36..f0de7a32fb 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -861,6 +861,17 @@ int sd_bus_message_get_session(sd_bus_message *m, const char **ret) { return 0; } +int sd_bus_message_get_owner_uid(sd_bus_message *m, uid_t *uid) { + if (!m) + return -EINVAL; + if (!uid) + return -EINVAL; + if (!m->cgroup) + return -ESRCH; + + return cg_path_get_owner_uid(m->cgroup, uid); +} + int sd_bus_message_get_cmdline(sd_bus_message *m, char ***cmdline) { size_t n, i; const char *p; @@ -3073,6 +3084,7 @@ int bus_message_dump(sd_bus_message *m) { char **cmdline = NULL; unsigned level = 1; int r; + uid_t owner; assert(m); @@ -3149,6 +3161,8 @@ int bus_message_dump(sd_bus_message *m) { sd_bus_message_get_session(m, &s); if (s) printf("\tsession=[%s]\n", s); + if (sd_bus_message_get_owner_uid(m, &owner) >= 0) + printf("\towner_uid=%lu\n", (unsigned long) owner); if (sd_bus_message_get_cmdline(m, &cmdline) >= 0) { char **c; diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h index 1352acc908..92ae31b771 100644 --- a/src/systemd/sd-bus.h +++ b/src/systemd/sd-bus.h @@ -139,6 +139,7 @@ int sd_bus_message_get_cmdline(sd_bus_message *m, char ***cmdline); int sd_bus_message_get_unit(sd_bus_message *m, const char **unit); int sd_bus_message_get_user_unit(sd_bus_message *m, const char **unit); int sd_bus_message_get_session(sd_bus_message *m, const char **session); +int sd_bus_message_get_owner_uid(sd_bus_message *m, uid_t *uid); int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, const char *member); int sd_bus_message_is_method_call(sd_bus_message *m, const char *interface, const char *member); -- cgit v1.2.1 From 120f919e708b49d58e4302c91d32d12917068ba3 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 22 Apr 2013 23:38:38 -0300 Subject: bus: parse audit metadata from kdbus messages --- src/libsystemd-bus/bus-kernel.c | 2 ++ src/libsystemd-bus/bus-message.c | 31 ++++++++++++++++++++++++++++++- src/libsystemd-bus/bus-message.h | 2 ++ src/systemd/sd-bus.h | 2 ++ 4 files changed, 36 insertions(+), 1 deletion(-) diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index 115297dca4..42b16966bd 100644 --- a/src/libsystemd-bus/bus-kernel.c +++ b/src/libsystemd-bus/bus-kernel.c @@ -473,6 +473,8 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k, sd_bus_mess m->cmdline_length = l; } else if (d->type == KDBUS_MSG_SRC_CGROUP) m->cgroup = d->str; + else if (d->type == KDBUS_MSG_SRC_AUDIT) + m->audit = &d->audit; else log_debug("Got unknown field from kernel %llu", d->type); } diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index f0de7a32fb..6b4a0f3432 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -904,6 +904,30 @@ int sd_bus_message_get_cmdline(sd_bus_message *m, char ***cmdline) { return 0; } +int sd_bus_message_get_audit_sessionid(sd_bus_message *m, uint32_t *sessionid) { + if (!m) + return -EINVAL; + if (!sessionid) + return -EINVAL; + if (!m->audit) + return -ESRCH; + + *sessionid = m->audit->sessionid; + return 0; +} + +int sd_bus_message_get_audit_loginuid(sd_bus_message *m, uid_t *uid) { + if (!m) + return -EINVAL; + if (!uid) + return -EINVAL; + if (!m->audit) + return -ESRCH; + + *uid = m->audit->loginuid; + return 0; +} + int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, const char *member) { if (!m) return -EINVAL; @@ -3084,7 +3108,8 @@ int bus_message_dump(sd_bus_message *m) { char **cmdline = NULL; unsigned level = 1; int r; - uid_t owner; + uid_t owner, audit_loginuid; + uint32_t audit_sessionid; assert(m); @@ -3163,6 +3188,10 @@ int bus_message_dump(sd_bus_message *m) { printf("\tsession=[%s]\n", s); if (sd_bus_message_get_owner_uid(m, &owner) >= 0) printf("\towner_uid=%lu\n", (unsigned long) owner); + if (sd_bus_message_get_audit_loginuid(m, &audit_loginuid) >= 0) + printf("\taudit_loginuid=%lu\n", (unsigned long) audit_loginuid); + if (sd_bus_message_get_audit_sessionid(m, &audit_sessionid) >= 0) + printf("\taudit_sessionid=%lu\n", (unsigned long) audit_sessionid); if (sd_bus_message_get_cmdline(m, &cmdline) >= 0) { char **c; diff --git a/src/libsystemd-bus/bus-message.h b/src/libsystemd-bus/bus-message.h index 9440bbebb4..66b434816c 100644 --- a/src/libsystemd-bus/bus-message.h +++ b/src/libsystemd-bus/bus-message.h @@ -119,6 +119,8 @@ struct sd_bus_message { char *session; char *unit; char *user_unit; + + struct kdbus_audit *audit; }; #define BUS_MESSAGE_NEED_BSWAP(m) ((m)->header->endian != SD_BUS_NATIVE_ENDIAN) diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h index 92ae31b771..67923e7fe1 100644 --- a/src/systemd/sd-bus.h +++ b/src/systemd/sd-bus.h @@ -140,6 +140,8 @@ int sd_bus_message_get_unit(sd_bus_message *m, const char **unit); int sd_bus_message_get_user_unit(sd_bus_message *m, const char **unit); int sd_bus_message_get_session(sd_bus_message *m, const char **session); int sd_bus_message_get_owner_uid(sd_bus_message *m, uid_t *uid); +int sd_bus_message_get_audit_sessionid(sd_bus_message *m, uint32_t *sessionid); +int sd_bus_message_get_audit_loginuid(sd_bus_message *m, uid_t *loginuid); int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, const char *member); int sd_bus_message_is_method_call(sd_bus_message *m, const char *interface, const char *member); -- cgit v1.2.1 From 102ea8e4f27f0e54de88e7fb7667fd1ed84072ec Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 23 Apr 2013 00:14:30 -0300 Subject: bus: parse capability kdbus meta data of messages --- src/libsystemd-bus/bus-kernel.c | 5 ++++- src/libsystemd-bus/bus-message.c | 19 +++++++++++++++++++ src/libsystemd-bus/bus-message.h | 3 +++ src/systemd/sd-bus.h | 1 + 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index 42b16966bd..9e057fb138 100644 --- a/src/libsystemd-bus/bus-kernel.c +++ b/src/libsystemd-bus/bus-kernel.c @@ -475,7 +475,10 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k, sd_bus_mess m->cgroup = d->str; else if (d->type == KDBUS_MSG_SRC_AUDIT) m->audit = &d->audit; - else + else if (d->type == KDBUS_MSG_SRC_CAPS) { + m->capability = d->data; + m->capability_size = l; + } else log_debug("Got unknown field from kernel %llu", d->type); } diff --git a/src/libsystemd-bus/bus-message.c b/src/libsystemd-bus/bus-message.c index 6b4a0f3432..835a9f9a44 100644 --- a/src/libsystemd-bus/bus-message.c +++ b/src/libsystemd-bus/bus-message.c @@ -928,6 +928,23 @@ int sd_bus_message_get_audit_loginuid(sd_bus_message *m, uid_t *uid) { return 0; } +int sd_bus_message_has_effective_cap(sd_bus_message *m, int capability) { + unsigned sz; + + if (!m) + return -EINVAL; + if (capability < 0) + return -EINVAL; + if (!m->capability) + return -ESRCH; + + sz = m->capability_size / 4; + if ((unsigned) capability >= sz*8) + return 0; + + return !!(m->capability[2 * sz + (capability / 8)] & (1 << (capability % 8))); +} + int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, const char *member) { if (!m) return -EINVAL; @@ -3193,6 +3210,8 @@ int bus_message_dump(sd_bus_message *m) { if (sd_bus_message_get_audit_sessionid(m, &audit_sessionid) >= 0) printf("\taudit_sessionid=%lu\n", (unsigned long) audit_sessionid); + printf("\tCAP_KILL=%i\n", sd_bus_message_has_effective_cap(m, 5)); + if (sd_bus_message_get_cmdline(m, &cmdline) >= 0) { char **c; diff --git a/src/libsystemd-bus/bus-message.h b/src/libsystemd-bus/bus-message.h index 66b434816c..9c0829c7fa 100644 --- a/src/libsystemd-bus/bus-message.h +++ b/src/libsystemd-bus/bus-message.h @@ -121,6 +121,9 @@ struct sd_bus_message { char *user_unit; struct kdbus_audit *audit; + + uint8_t *capability; + size_t capability_size; }; #define BUS_MESSAGE_NEED_BSWAP(m) ((m)->header->endian != SD_BUS_NATIVE_ENDIAN) diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h index 67923e7fe1..8824efeaba 100644 --- a/src/systemd/sd-bus.h +++ b/src/systemd/sd-bus.h @@ -142,6 +142,7 @@ int sd_bus_message_get_session(sd_bus_message *m, const char **session); int sd_bus_message_get_owner_uid(sd_bus_message *m, uid_t *uid); int sd_bus_message_get_audit_sessionid(sd_bus_message *m, uint32_t *sessionid); int sd_bus_message_get_audit_loginuid(sd_bus_message *m, uid_t *loginuid); +int sd_bus_message_has_effective_cap(sd_bus_message *m, int capability); int sd_bus_message_is_signal(sd_bus_message *m, const char *interface, const char *member); int sd_bus_message_is_method_call(sd_bus_message *m, const char *interface, const char *member); -- cgit v1.2.1 From 195f8e36122b83bbfef27bf63afe888e7101a320 Mon Sep 17 00:00:00 2001 From: Umut Tezduyar Date: Tue, 23 Apr 2013 09:56:32 +0200 Subject: man: link systemd-tmpfiles-setup-dev.service --- Makefile-man.am | 5 +++++ man/systemd-tmpfiles.xml | 2 ++ units/systemd-tmpfiles-clean.service.in | 2 +- units/systemd-tmpfiles-clean.timer | 2 +- units/systemd-tmpfiles-setup-dev.service.in | 1 + units/systemd-tmpfiles-setup.service.in | 2 +- 6 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Makefile-man.am b/Makefile-man.am index 9786fa1119..0ce8142433 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -185,6 +185,7 @@ MANPAGES_ALIAS += \ man/systemd-sysctl.8 \ man/systemd-tmpfiles-clean.service.8 \ man/systemd-tmpfiles-clean.timer.8 \ + man/systemd-tmpfiles-setup-dev.service.8 \ man/systemd-tmpfiles-setup.service.8 \ man/systemd-udevd-control.socket.8 \ man/systemd-udevd-kernel.socket.8 \ @@ -282,6 +283,7 @@ man/systemd-sleep.8: man/systemd-suspend.service.8 man/systemd-sysctl.8: man/systemd-sysctl.service.8 man/systemd-tmpfiles-clean.service.8: man/systemd-tmpfiles.8 man/systemd-tmpfiles-clean.timer.8: man/systemd-tmpfiles.8 +man/systemd-tmpfiles-setup-dev.service.8: man/systemd-tmpfiles.8 man/systemd-tmpfiles-setup.service.8: man/systemd-tmpfiles.8 man/systemd-udevd-control.socket.8: man/systemd-udevd.service.8 man/systemd-udevd-kernel.socket.8: man/systemd-udevd.service.8 @@ -559,6 +561,9 @@ man/systemd-tmpfiles-clean.service.html: man/systemd-tmpfiles.html man/systemd-tmpfiles-clean.timer.html: man/systemd-tmpfiles.html $(html-alias) +man/systemd-tmpfiles-setup-dev.service.html: man/systemd-tmpfiles.html + $(html-alias) + man/systemd-tmpfiles-setup.service.html: man/systemd-tmpfiles.html $(html-alias) diff --git a/man/systemd-tmpfiles.xml b/man/systemd-tmpfiles.xml index 22744c7c41..0d2d65d593 100644 --- a/man/systemd-tmpfiles.xml +++ b/man/systemd-tmpfiles.xml @@ -45,6 +45,7 @@ systemd-tmpfiles systemd-tmpfiles-setup.service + systemd-tmpfiles-setup-dev.service systemd-tmpfiles-clean.service systemd-tmpfiles-clean.timer Creates, deletes and cleans up volatile @@ -57,6 +58,7 @@ systemd-tmpfiles-setup.service + systemd-tmpfiles-setup-dev.service systemd-tmpfiles-clean.service systemd-tmpfiles-clean.timer diff --git a/units/systemd-tmpfiles-clean.service.in b/units/systemd-tmpfiles-clean.service.in index a288232e12..a5b5acb0c2 100644 --- a/units/systemd-tmpfiles-clean.service.in +++ b/units/systemd-tmpfiles-clean.service.in @@ -7,7 +7,7 @@ [Unit] Description=Cleanup of Temporary Directories -Documentation=man:tmpfiles.d(5) +Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) DefaultDependencies=no Wants=local-fs.target After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target diff --git a/units/systemd-tmpfiles-clean.timer b/units/systemd-tmpfiles-clean.timer index fac4ee3da8..9975dcfaca 100644 --- a/units/systemd-tmpfiles-clean.timer +++ b/units/systemd-tmpfiles-clean.timer @@ -7,7 +7,7 @@ [Unit] Description=Daily Cleanup of Temporary Directories -Documentation=man:tmpfiles.d(5) +Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) [Timer] OnBootSec=15min diff --git a/units/systemd-tmpfiles-setup-dev.service.in b/units/systemd-tmpfiles-setup-dev.service.in index 3553226c67..f029285bc0 100644 --- a/units/systemd-tmpfiles-setup-dev.service.in +++ b/units/systemd-tmpfiles-setup-dev.service.in @@ -7,6 +7,7 @@ [Unit] Description=Create static device nodes in /dev +Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) DefaultDependencies=no Before=sysinit.target systemd-udevd.service ConditionCapability=CAP_MKNOD diff --git a/units/systemd-tmpfiles-setup.service.in b/units/systemd-tmpfiles-setup.service.in index dbd6bfb6d5..4a3441c3ac 100644 --- a/units/systemd-tmpfiles-setup.service.in +++ b/units/systemd-tmpfiles-setup.service.in @@ -7,7 +7,7 @@ [Unit] Description=Recreate Volatile Files and Directories -Documentation=man:tmpfiles.d(5) +Documentation=man:tmpfiles.d(5) man:systemd-tmpfiles(8) DefaultDependencies=no Wants=local-fs.target After=systemd-readahead-collect.service systemd-readahead-replay.service local-fs.target -- cgit v1.2.1 From 70666185703ee173811d74b8cb0e0e47e2aa9b49 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 23 Apr 2013 11:18:17 -0300 Subject: bus: add cal to determine machine id of an owner of a service --- src/libsystemd-bus/bus-control.c | 32 ++++++++++++++++++++++++++++++++ src/systemd/sd-bus.h | 1 + 2 files changed, 33 insertions(+) diff --git a/src/libsystemd-bus/bus-control.c b/src/libsystemd-bus/bus-control.c index e980bfc740..a4dc9bf511 100644 --- a/src/libsystemd-bus/bus-control.c +++ b/src/libsystemd-bus/bus-control.c @@ -344,3 +344,35 @@ int bus_remove_match_internal(sd_bus *bus, const char *match) { "s", match); } + +int sd_bus_get_owner_machine_id(sd_bus *bus, const char *name, sd_id128_t *machine) { + _cleanup_bus_message_unref_ sd_bus_message *reply = NULL; + const char *mid; + int r; + + if (!bus) + return -EINVAL; + if (!name) + return -EINVAL; + + if (streq_ptr(name, bus->unique_name)) + return sd_id128_get_machine(machine); + + r = sd_bus_call_method(bus, + name, + "/", + "org.freedesktop.DBus.Peer", + "GetMachineId", + NULL, + &reply, + NULL); + + if (r < 0) + return r; + + r = sd_bus_message_read(reply, "s", &mid); + if (r < 0) + return r; + + return sd_id128_from_string(mid, machine); +} diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h index 8824efeaba..36fab9ffa1 100644 --- a/src/systemd/sd-bus.h +++ b/src/systemd/sd-bus.h @@ -179,6 +179,7 @@ int sd_bus_list_names(sd_bus *bus, char ***l); int sd_bus_get_owner(sd_bus *bus, const char *name, char **owner); int sd_bus_get_owner_uid(sd_bus *bus, const char *name, uid_t *uid); int sd_bus_get_owner_pid(sd_bus *bus, const char *name, pid_t *pid); +int sd_bus_get_owner_machine_id(sd_bus *bus, const char *name, sd_id128_t *machine); /* Error structures */ -- cgit v1.2.1 From a34cb32e54ed51125957f69622efef30f42d5fae Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 23 Apr 2013 11:21:14 -0300 Subject: units: update user@.service to reflect new user cgroup paths --- units/user@.service.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/units/user@.service.in b/units/user@.service.in index 901a334ef6..3cf1347b16 100644 --- a/units/user@.service.in +++ b/units/user@.service.in @@ -13,7 +13,7 @@ After=systemd-user-sessions.service User=%I PAMName=systemd-shared # in order to allow MEM_CG features to work, add "memory:/" here -ControlGroup=%R/user/%u/shared cpu:/ +ControlGroup=%R/user/%U.user/shared cpu:/ ControlGroupModify=yes Type=notify ExecStart=-@rootlibexecdir@/systemd --user -- cgit v1.2.1 From 3ecaa09bccd8a59c9f1e06756a1334a162206dc4 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 23 Apr 2013 15:53:16 -0300 Subject: unit: rework trigger dependency logic Instead of having explicit type-specific callbacks that inform the triggering unit when a triggered unit changes state, make this generic so that state changes are forwarded betwee any triggered and triggering unit. Also, get rid of UnitRef references from automount, timer, path units, to the units they trigger and rely exclsuively on UNIT_TRIGGER type dendencies. --- src/core/automount.c | 40 ++++++------- src/core/automount.h | 2 - src/core/dbus-path.c | 6 +- src/core/dbus-timer.c | 6 +- src/core/job.c | 4 +- src/core/load-fragment-gperf.gperf.m4 | 4 +- src/core/load-fragment.c | 103 ++++++++++----------------------- src/core/load-fragment.h | 3 +- src/core/path.c | 69 +++++++++++----------- src/core/path.h | 4 -- src/core/timer.c | 105 ++++++++++++++++------------------ src/core/timer.h | 3 - src/core/unit.c | 19 ++++-- src/core/unit.h | 11 +++- 14 files changed, 166 insertions(+), 213 deletions(-) diff --git a/src/core/automount.c b/src/core/automount.c index 4a98540d82..e6eedda96f 100644 --- a/src/core/automount.c +++ b/src/core/automount.c @@ -109,7 +109,6 @@ static void automount_done(Unit *u) { assert(a); unmount_autofs(a); - unit_ref_unset(&a->mount); free(a->where); a->where = NULL; @@ -200,8 +199,8 @@ static int automount_verify(Automount *a) { } static int automount_load(Unit *u) { - int r; Automount *a = AUTOMOUNT(u); + int r; assert(u); assert(u->load_state == UNIT_STUB); @@ -222,17 +221,15 @@ static int automount_load(Unit *u) { path_kill_slashes(a->where); - r = automount_add_mount_links(a); + r = unit_load_related_unit(u, ".mount", &x); if (r < 0) return r; - r = unit_load_related_unit(u, ".mount", &x); + r = unit_add_two_dependencies(u, UNIT_BEFORE, UNIT_TRIGGERS, x, true); if (r < 0) return r; - unit_ref_set(&a->mount, x); - - r = unit_add_two_dependencies(u, UNIT_BEFORE, UNIT_TRIGGERS, UNIT_DEREF(a->mount), true); + r = automount_add_mount_links(a); if (r < 0) return r; @@ -586,12 +583,11 @@ fail: } static void automount_enter_runnning(Automount *a) { - int r; - struct stat st; _cleanup_dbus_error_free_ DBusError error; + struct stat st; + int r; assert(a); - assert(UNIT_DEREF(a->mount)); dbus_error_init(&error); @@ -616,11 +612,15 @@ static void automount_enter_runnning(Automount *a) { if (!S_ISDIR(st.st_mode) || st.st_dev != a->dev_id) log_info_unit(UNIT(a)->id, "%s's automount point already active?", UNIT(a)->id); - else if ((r = manager_add_job(UNIT(a)->manager, JOB_START, UNIT_DEREF(a->mount), JOB_REPLACE, true, &error, NULL)) < 0) { - log_warning_unit(UNIT(a)->id, - "%s failed to queue mount startup job: %s", - UNIT(a)->id, bus_error(&error, r)); - goto fail; + else { + r = manager_add_job(UNIT(a)->manager, JOB_START, UNIT_TRIGGER(UNIT(a)), + JOB_REPLACE, true, &error, NULL); + if (r < 0) { + log_warning_unit(UNIT(a)->id, + "%s failed to queue mount startup job: %s", + UNIT(a)->id, bus_error(&error, r)); + goto fail; + } } automount_set_state(a, AUTOMOUNT_RUNNING); @@ -643,7 +643,7 @@ static int automount_start(Unit *u) { return -EEXIST; } - if (UNIT_DEREF(a->mount)->load_state != UNIT_LOADED) + if (UNIT_TRIGGER(u)->load_state != UNIT_LOADED) return -ENOENT; a->result = AUTOMOUNT_SUCCESS; @@ -765,14 +765,12 @@ static const char *automount_sub_state_to_string(Unit *u) { } static bool automount_check_gc(Unit *u) { - Automount *a = AUTOMOUNT(u); - - assert(a); + assert(u); - if (!UNIT_DEREF(a->mount)) + if (!UNIT_TRIGGER(u)) return false; - return UNIT_VTABLE(UNIT_DEREF(a->mount))->check_gc(UNIT_DEREF(a->mount)); + return UNIT_VTABLE(UNIT_TRIGGER(u))->check_gc(UNIT_TRIGGER(u)); } static void automount_fd_event(Unit *u, int fd, uint32_t events, Watch *w) { diff --git a/src/core/automount.h b/src/core/automount.h index 3d5736d1cb..8276051352 100644 --- a/src/core/automount.h +++ b/src/core/automount.h @@ -48,8 +48,6 @@ struct Automount { char *where; - UnitRef mount; - int pipe_fd; mode_t directory_mode; Watch pipe_watch; diff --git a/src/core/dbus-path.c b/src/core/dbus-path.c index f7fed1754d..1e62083d9b 100644 --- a/src/core/dbus-path.c +++ b/src/core/dbus-path.c @@ -84,15 +84,15 @@ static int bus_path_append_paths(DBusMessageIter *i, const char *property, void } static int bus_path_append_unit(DBusMessageIter *i, const char *property, void *data) { - Unit *u = data; - Path *p = PATH(u); + Unit *u = data, *trigger; const char *t; assert(i); assert(property); assert(u); - t = UNIT_DEREF(p->unit) ? UNIT_DEREF(p->unit)->id : ""; + trigger = UNIT_TRIGGER(u); + t = trigger ? trigger->id : ""; return dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &t) ? 0 : -ENOMEM; } diff --git a/src/core/dbus-timer.c b/src/core/dbus-timer.c index 75add81519..4082f7f9b9 100644 --- a/src/core/dbus-timer.c +++ b/src/core/dbus-timer.c @@ -152,15 +152,15 @@ static int bus_timer_append_calendar_timers(DBusMessageIter *i, const char *prop } static int bus_timer_append_unit(DBusMessageIter *i, const char *property, void *data) { - Unit *u = data; - Timer *timer = TIMER(u); + Unit *u = data, *trigger; const char *t; assert(i); assert(property); assert(u); - t = UNIT_DEREF(timer->unit) ? UNIT_DEREF(timer->unit)->id : ""; + trigger = UNIT_TRIGGER(u); + t = trigger ? trigger->id : ""; return dbus_message_iter_append_basic(i, DBUS_TYPE_STRING, &t) ? 0 : -ENOMEM; } diff --git a/src/core/job.c b/src/core/job.c index af5855b71d..9a425a6da1 100644 --- a/src/core/job.c +++ b/src/core/job.c @@ -840,9 +840,11 @@ int job_finish_and_invalidate(Job *j, JobResult result, bool recursive) { job_result_to_string(result), NULL); - unit_trigger_on_failure(u); + unit_start_on_failure(u); } + unit_trigger_notify(u); + finish: /* Try to start the next jobs that can be started */ SET_FOREACH(other, u->dependencies[UNIT_AFTER], i) diff --git a/src/core/load-fragment-gperf.gperf.m4 b/src/core/load-fragment-gperf.gperf.m4 index d5e579fd7f..4e1454ee6c 100644 --- a/src/core/load-fragment-gperf.gperf.m4 +++ b/src/core/load-fragment-gperf.gperf.m4 @@ -241,14 +241,14 @@ Timer.OnBootSec, config_parse_timer, 0, Timer.OnStartupSec, config_parse_timer, 0, 0 Timer.OnUnitActiveSec, config_parse_timer, 0, 0 Timer.OnUnitInactiveSec, config_parse_timer, 0, 0 -Timer.Unit, config_parse_timer_unit, 0, 0 +Timer.Unit, config_parse_trigger_unit, 0, 0 m4_dnl Path.PathExists, config_parse_path_spec, 0, 0 Path.PathExistsGlob, config_parse_path_spec, 0, 0 Path.PathChanged, config_parse_path_spec, 0, 0 Path.PathModified, config_parse_path_spec, 0, 0 Path.DirectoryNotEmpty, config_parse_path_spec, 0, 0 -Path.Unit, config_parse_path_unit, 0, 0 +Path.Unit, config_parse_trigger_unit, 0, 0 Path.MakeDirectory, config_parse_bool, 0, offsetof(Path, make_directory) Path.DirectoryMode, config_parse_mode, 0, offsetof(Path, directory_mode) m4_dnl The [Install] section is ignored here. diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index c3f4f92611..0571d517b0 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -1254,50 +1254,57 @@ int config_parse_timer(const char *unit, return 0; } -int config_parse_timer_unit(const char *unit, - const char *filename, - unsigned line, - const char *section, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { +int config_parse_trigger_unit( + const char *unit, + const char *filename, + unsigned line, + const char *section, + const char *lvalue, + int ltype, + const char *rvalue, + void *data, + void *userdata) { - Timer *t = data; - int r; - DBusError error; - Unit *u; _cleanup_free_ char *p = NULL; + Unit *u = data; + UnitType type; + int r; assert(filename); assert(lvalue); assert(rvalue); assert(data); - dbus_error_init(&error); + if (!set_isempty(u->dependencies[UNIT_TRIGGERS])) { + log_syntax(unit, LOG_ERR, filename, line, EINVAL, + "Multiple units to trigger specified, ignoring: %s", rvalue); + return 0; + } - p = unit_name_printf(UNIT(t), rvalue); + p = unit_name_printf(u, rvalue); if (!p) return log_oom(); - if (endswith(p, ".timer")) { + type = unit_name_to_type(p); + if (type < 0) { log_syntax(unit, LOG_ERR, filename, line, EINVAL, - "Unit cannot be of type timer, ignoring: %s", rvalue); + "Unit type not valid, ignoring: %s", rvalue); return 0; } - r = manager_load_unit(UNIT(t)->manager, p, NULL, NULL, &u); + if (type == u->type) { + log_syntax(unit, LOG_ERR, filename, line, EINVAL, + "Trigger cannot be of same type, ignoring: %s", rvalue); + return 0; + } + + r = unit_add_two_dependencies_by_name(u, UNIT_BEFORE, UNIT_TRIGGERS, p, NULL, true); if (r < 0) { log_syntax(unit, LOG_ERR, filename, line, -r, - "Failed to load unit %s, ignoring: %s", - rvalue, bus_error(&error, r)); - dbus_error_free(&error); + "Failed to add trigger on %s, ignoring: %s", p, strerror(-r)); return 0; } - unit_ref_set(&t->unit, u); - return 0; } @@ -1365,53 +1372,6 @@ int config_parse_path_spec(const char *unit, return 0; } -int config_parse_path_unit(const char *unit, - const char *filename, - unsigned line, - const char *section, - const char *lvalue, - int ltype, - const char *rvalue, - void *data, - void *userdata) { - - Path *t = data; - int r; - DBusError error; - Unit *u; - _cleanup_free_ char *p = NULL; - - assert(filename); - assert(lvalue); - assert(rvalue); - assert(data); - - dbus_error_init(&error); - - p = unit_name_printf(UNIT(t), rvalue); - if (!p) - return log_oom(); - - if (endswith(p, ".path")) { - log_syntax(unit, LOG_ERR, filename, line, EINVAL, - "Unit cannot be of type path, ignoring: %s", p); - return 0; - } - - r = manager_load_unit(UNIT(t)->manager, p, NULL, &error, &u); - if (r < 0) { - log_syntax(unit, LOG_ERR, filename, line, EINVAL, - "Failed to load unit %s, ignoring: %s", - p, bus_error(&error, r)); - dbus_error_free(&error); - return 0; - } - - unit_ref_set(&t->unit, u); - - return 0; -} - int config_parse_socket_service(const char *unit, const char *filename, unsigned line, @@ -2480,10 +2440,9 @@ void unit_dump_config_items(FILE *f) { { config_parse_unit_requires_mounts_for, "PATH [...]" }, { config_parse_exec_mount_flags, "MOUNTFLAG [...]" }, { config_parse_unit_string_printf, "STRING" }, + { config_parse_trigger_unit, "UNIT" }, { config_parse_timer, "TIMER" }, - { config_parse_timer_unit, "NAME" }, { config_parse_path_spec, "PATH" }, - { config_parse_path_unit, "UNIT" }, { config_parse_notify_access, "ACCESS" }, { config_parse_ip_tos, "TOS" }, { config_parse_unit_condition_path, "CONDITION" }, diff --git a/src/core/load-fragment.h b/src/core/load-fragment.h index 0161ce0938..ff7f22a6f0 100644 --- a/src/core/load-fragment.h +++ b/src/core/load-fragment.h @@ -61,9 +61,8 @@ int config_parse_fsck_passno(const char *unit, const char *filename, unsigned li int config_parse_kill_signal(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_exec_mount_flags(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_timer(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); -int config_parse_timer_unit(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); +int config_parse_trigger_unit(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_path_spec(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); -int config_parse_path_unit(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_socket_service(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_service_sockets(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); int config_parse_unit_env_file(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); diff --git a/src/core/path.c b/src/core/path.c index d5b5eeb4a1..e1330f6c95 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -298,7 +298,6 @@ static void path_done(Unit *u) { assert(p); - unit_ref_unset(&p->unit); path_free_specs(p); } @@ -390,21 +389,18 @@ static int path_load(Unit *u) { if (u->load_state == UNIT_LOADED) { - if (!UNIT_DEREF(p->unit)) { + if (set_isempty(u->dependencies[UNIT_TRIGGERS])) { Unit *x; r = unit_load_related_unit(u, ".service", &x); if (r < 0) return r; - unit_ref_set(&p->unit, x); + r = unit_add_two_dependencies(u, UNIT_BEFORE, UNIT_TRIGGERS, x, true); + if (r < 0) + return r; } - r = unit_add_two_dependencies(u, UNIT_BEFORE, UNIT_TRIGGERS, - UNIT_DEREF(p->unit), true); - if (r < 0) - return r; - r = path_add_mount_links(p); if (r < 0) return r; @@ -421,11 +417,14 @@ static int path_load(Unit *u) { static void path_dump(Unit *u, FILE *f, const char *prefix) { Path *p = PATH(u); + Unit *trigger; PathSpec *s; assert(p); assert(f); + trigger = UNIT_TRIGGER(u); + fprintf(f, "%sPath State: %s\n" "%sResult: %s\n" @@ -434,7 +433,7 @@ static void path_dump(Unit *u, FILE *f, const char *prefix) { "%sDirectoryMode: %04o\n", prefix, path_state_to_string(p->state), prefix, path_result_to_string(p->result), - prefix, UNIT_DEREF(p->unit)->id, + prefix, trigger ? trigger->id : "n/a", prefix, yes_no(p->make_directory), prefix, p->directory_mode); @@ -516,17 +515,18 @@ static void path_enter_dead(Path *p, PathResult f) { } static void path_enter_running(Path *p) { + _cleanup_dbus_error_free_ DBusError error; int r; - DBusError error; assert(p); + dbus_error_init(&error); /* Don't start job if we are supposed to go down */ - if (UNIT(p)->job && UNIT(p)->job->type == JOB_STOP) + if (unit_pending_inactive(UNIT(p))) return; - r = manager_add_job(UNIT(p)->manager, JOB_START, UNIT_DEREF(p->unit), + r = manager_add_job(UNIT(p)->manager, JOB_START, UNIT_TRIGGER(UNIT(p)), JOB_REPLACE, true, &error, NULL); if (r < 0) goto fail; @@ -544,8 +544,6 @@ fail: log_warning("%s failed to queue unit startup job: %s", UNIT(p)->id, bus_error(&error, r)); path_enter_dead(p, PATH_FAILURE_RESOURCES); - - dbus_error_free(&error); } static bool path_check_good(Path *p, bool initial) { @@ -616,7 +614,7 @@ static int path_start(Unit *u) { assert(p); assert(p->state == PATH_DEAD || p->state == PATH_FAILED); - if (UNIT_DEREF(p->unit)->load_state != UNIT_LOADED) + if (UNIT_TRIGGER(u)->load_state != UNIT_LOADED) return -ENOENT; path_mkdir(p); @@ -737,33 +735,28 @@ fail: path_enter_dead(p, PATH_FAILURE_RESOURCES); } -void path_unit_notify(Unit *u, UnitActiveState new_state) { - Iterator i; - Unit *k; - - if (u->type == UNIT_PATH) - return; +static void path_trigger_notify(Unit *u, Unit *other) { + Path *p = PATH(u); - SET_FOREACH(k, u->dependencies[UNIT_TRIGGERED_BY], i) { - Path *p; + assert(u); + assert(other); - if (k->type != UNIT_PATH) - continue; + /* Invoked whenever the unit we trigger changes state or gains + * or loses a job */ - if (k->load_state != UNIT_LOADED) - continue; - - p = PATH(k); + if (other->load_state != UNIT_LOADED) + return; - if (p->state == PATH_RUNNING && new_state == UNIT_INACTIVE) { - log_debug("%s got notified about unit deactivation.", - UNIT(p)->id); + if (p->state == PATH_RUNNING && + UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(other))) { + log_debug_unit(UNIT(p)->id, + "%s got notified about unit deactivation.", + UNIT(p)->id); - /* Hmm, so inotify was triggered since the - * last activation, so I guess we need to - * recheck what is going on. */ - path_enter_waiting(p, false, p->inotify_triggered); - } + /* Hmm, so inotify was triggered since the + * last activation, so I guess we need to + * recheck what is going on. */ + path_enter_waiting(p, false, p->inotify_triggered); } } @@ -830,6 +823,8 @@ const UnitVTable path_vtable = { .fd_event = path_fd_event, + .trigger_notify = path_trigger_notify, + .reset_failed = path_reset_failed, .bus_interface = "org.freedesktop.systemd1.Path", diff --git a/src/core/path.h b/src/core/path.h index 645feef191..974041539b 100644 --- a/src/core/path.h +++ b/src/core/path.h @@ -80,8 +80,6 @@ struct Path { LIST_HEAD(PathSpec, specs); - UnitRef unit; - PathState state, deserialized_state; bool inotify_triggered; @@ -92,8 +90,6 @@ struct Path { PathResult result; }; -void path_unit_notify(Unit *u, UnitActiveState new_state); - /* Called from the mount code figure out if a mount is a dependency of * any of the paths of this path object */ int path_add_one_mount_link(Path *p, Mount *m); diff --git a/src/core/timer.c b/src/core/timer.c index 107dbb3f21..b5d895f048 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -72,8 +72,6 @@ static void timer_done(Unit *u) { unit_unwatch_timer(u, &t->monotonic_watch); unit_unwatch_timer(u, &t->realtime_watch); - - unit_ref_unset(&t->unit); } static int timer_verify(Timer *t) { @@ -122,20 +120,18 @@ static int timer_load(Unit *u) { if (u->load_state == UNIT_LOADED) { - if (!UNIT_DEREF(t->unit)) { + if (set_isempty(u->dependencies[UNIT_TRIGGERS])) { Unit *x; r = unit_load_related_unit(u, ".service", &x); if (r < 0) return r; - unit_ref_set(&t->unit, x); + r = unit_add_two_dependencies(u, UNIT_BEFORE, UNIT_TRIGGERS, x, true); + if (r < 0) + return r; } - r = unit_add_two_dependencies(u, UNIT_BEFORE, UNIT_TRIGGERS, UNIT_DEREF(t->unit), true); - if (r < 0) - return r; - if (UNIT(t)->default_dependencies) { r = timer_add_default_dependencies(t); if (r < 0) @@ -148,15 +144,18 @@ static int timer_load(Unit *u) { static void timer_dump(Unit *u, FILE *f, const char *prefix) { Timer *t = TIMER(u); + Unit *trigger; TimerValue *v; + trigger = UNIT_TRIGGER(u); + fprintf(f, "%sTimer State: %s\n" "%sResult: %s\n" "%sUnit: %s\n", prefix, timer_state_to_string(t->state), prefix, timer_result_to_string(t->result), - prefix, UNIT_DEREF(t->unit)->id); + prefix, trigger ? trigger->id : "n/a"); LIST_FOREACH(value, v, t->values) { @@ -285,18 +284,18 @@ static void timer_enter_waiting(Timer *t, bool initial) { case TIMER_UNIT_ACTIVE: - if (UNIT_DEREF(t->unit)->inactive_exit_timestamp.monotonic <= 0) + if (UNIT_TRIGGER(UNIT(t))->inactive_exit_timestamp.monotonic <= 0) continue; - base = UNIT_DEREF(t->unit)->inactive_exit_timestamp.monotonic; + base = UNIT_TRIGGER(UNIT(t))->inactive_exit_timestamp.monotonic; break; case TIMER_UNIT_INACTIVE: - if (UNIT_DEREF(t->unit)->inactive_enter_timestamp.monotonic <= 0) + if (UNIT_TRIGGER(UNIT(t))->inactive_enter_timestamp.monotonic <= 0) continue; - base = UNIT_DEREF(t->unit)->inactive_enter_timestamp.monotonic; + base = UNIT_TRIGGER(UNIT(t))->inactive_enter_timestamp.monotonic; break; default: @@ -369,10 +368,11 @@ static void timer_enter_running(Timer *t) { dbus_error_init(&error); /* Don't start job if we are supposed to go down */ - if (UNIT(t)->job && UNIT(t)->job->type == JOB_STOP) + if (unit_pending_inactive(UNIT(t))) return; - r = manager_add_job(UNIT(t)->manager, JOB_START, UNIT_DEREF(t->unit), JOB_REPLACE, true, &error, NULL); + r = manager_add_job(UNIT(t)->manager, JOB_START, UNIT_TRIGGER(UNIT(t)), + JOB_REPLACE, true, &error, NULL); if (r < 0) goto fail; @@ -394,7 +394,7 @@ static int timer_start(Unit *u) { assert(t); assert(t->state == TIMER_DEAD || t->state == TIMER_FAILED); - if (UNIT_DEREF(t->unit)->load_state != UNIT_LOADED) + if (UNIT_TRIGGER(u)->load_state != UNIT_LOADED) return -ENOENT; t->result = TIMER_SUCCESS; @@ -481,58 +481,49 @@ static void timer_timer_event(Unit *u, uint64_t elapsed, Watch *w) { timer_enter_running(t); } -void timer_unit_notify(Unit *u, UnitActiveState new_state) { - Iterator i; - Unit *k; +static void timer_trigger_notify(Unit *u, Unit *other) { + Timer *t = TIMER(u); + TimerValue *v; - if (u->type == UNIT_TIMER) - return; + assert(u); + assert(other); - SET_FOREACH(k, u->dependencies[UNIT_TRIGGERED_BY], i) { - Timer *t; - TimerValue *v; + log_error("NOTIFY!"); - if (k->type != UNIT_TIMER) - continue; + if (other->load_state != UNIT_LOADED) + return; - if (k->load_state != UNIT_LOADED) - continue; + /* Reenable all timers that depend on unit state */ + LIST_FOREACH(value, v, t->values) + if (v->base == TIMER_UNIT_ACTIVE || + v->base == TIMER_UNIT_INACTIVE) + v->disabled = false; - t = TIMER(k); + switch (t->state) { - /* Reenable all timers that depend on unit state */ - LIST_FOREACH(value, v, t->values) - if (v->base == TIMER_UNIT_ACTIVE || - v->base == TIMER_UNIT_INACTIVE) - v->disabled = false; + case TIMER_WAITING: + case TIMER_ELAPSED: - switch (t->state) { + /* Recalculate sleep time */ + timer_enter_waiting(t, false); + break; - case TIMER_WAITING: - case TIMER_ELAPSED: + case TIMER_RUNNING: - /* Recalculate sleep time */ + if (UNIT_IS_INACTIVE_OR_FAILED(unit_active_state(other))) { + log_debug_unit(UNIT(t)->id, + "%s got notified about unit deactivation.", + UNIT(t)->id); timer_enter_waiting(t, false); - break; - - case TIMER_RUNNING: - - if (UNIT_IS_INACTIVE_OR_FAILED(new_state)) { - log_debug_unit(UNIT(t)->id, - "%s got notified about unit deactivation.", - UNIT(t)->id); - timer_enter_waiting(t, false); - } - - break; + } + break; - case TIMER_DEAD: - case TIMER_FAILED: - break; + case TIMER_DEAD: + case TIMER_FAILED: + break; - default: - assert_not_reached("Unknown timer state"); - } + default: + assert_not_reached("Unknown timer state"); } } @@ -614,6 +605,8 @@ const UnitVTable timer_vtable = { .timer_event = timer_timer_event, + .trigger_notify = timer_trigger_notify, + .reset_failed = timer_reset_failed, .time_change = timer_time_change, diff --git a/src/core/timer.h b/src/core/timer.h index c145348c7d..163bd6c3be 100644 --- a/src/core/timer.h +++ b/src/core/timer.h @@ -74,7 +74,6 @@ struct Timer { usec_t next_elapse_realtime; TimerState state, deserialized_state; - UnitRef unit; Watch monotonic_watch; Watch realtime_watch; @@ -82,8 +81,6 @@ struct Timer { TimerResult result; }; -void timer_unit_notify(Unit *u, UnitActiveState new_state); - void timer_free_values(Timer *t); extern const UnitVTable timer_vtable; diff --git a/src/core/unit.c b/src/core/unit.c index 5834009445..4b9abf32dc 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1304,7 +1304,7 @@ static void check_unneeded_dependencies(Unit *u) { unit_check_unneeded(other); } -void unit_trigger_on_failure(Unit *u) { +void unit_start_on_failure(Unit *u) { Unit *other; Iterator i; @@ -1324,6 +1324,17 @@ void unit_trigger_on_failure(Unit *u) { } } +void unit_trigger_notify(Unit *u) { + Unit *other; + Iterator i; + + assert(u); + + SET_FOREACH(other, u->dependencies[UNIT_TRIGGERED_BY], i) + if (UNIT_VTABLE(other)->trigger_notify) + UNIT_VTABLE(other)->trigger_notify(other, u); +} + void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_success) { Manager *m; bool unexpected; @@ -1354,9 +1365,6 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su u->active_enter_timestamp = ts; else if (UNIT_IS_ACTIVE_OR_RELOADING(os) && !UNIT_IS_ACTIVE_OR_RELOADING(ns)) u->active_exit_timestamp = ts; - - timer_unit_notify(u, ns); - path_unit_notify(u, ns); } if (UNIT_IS_INACTIVE_OR_FAILED(ns)) @@ -1461,7 +1469,7 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su if (ns != os && ns == UNIT_FAILED) { log_notice_unit(u->id, "MESSAGE=Unit %s entered failed state.", u->id); - unit_trigger_on_failure(u); + unit_start_on_failure(u); } } @@ -1512,6 +1520,7 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su } manager_recheck_journal(m); + unit_trigger_notify(u); /* Maybe we finished startup and are now ready for being * stopped because unneeded? */ diff --git a/src/core/unit.h b/src/core/unit.h index a972a31366..51a8364d63 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -352,7 +352,7 @@ struct UnitVTable { /* Called whenever a process of this unit sends us a message */ void (*notify_message)(Unit *u, pid_t pid, char **tags); - /* Called whenever a name thus Unit registered for comes or + /* Called whenever a name this Unit registered for comes or * goes away. */ void (*bus_name_owner_change)(Unit *u, const char *name, const char *old_owner, const char *new_owner); @@ -368,6 +368,10 @@ struct UnitVTable { /* Return the set of units that are following each other */ int (*following_set)(Unit *u, Set **s); + /* Invoked each time a unit this unit is triggering changes + * state or gains/loses a job */ + void (*trigger_notify)(Unit *u, Unit *trigger); + /* Called whenever CLOCK_REALTIME made a jump */ void (*time_change)(Unit *u); @@ -417,6 +421,8 @@ extern const UnitVTable * const unit_vtable[_UNIT_TYPE_MAX]; /* For casting the various unit types into a unit */ #define UNIT(u) (&(u)->meta) +#define UNIT_TRIGGER(u) ((Unit*) set_first((u)->dependencies[UNIT_TRIGGERS])) + DEFINE_CAST(SOCKET, Socket); DEFINE_CAST(TIMER, Timer); DEFINE_CAST(SERVICE, Service); @@ -540,7 +546,8 @@ char *unit_default_cgroup_path(Unit *u); int unit_following_set(Unit *u, Set **s); -void unit_trigger_on_failure(Unit *u); +void unit_start_on_failure(Unit *u); +void unit_trigger_notify(Unit *u); bool unit_condition_test(Unit *u); -- cgit v1.2.1 From 0e99f1d6f8d41677d401a89f97a887a92fc7084a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 23 Apr 2013 15:55:41 -0300 Subject: update TODO --- TODO | 2 -- 1 file changed, 2 deletions(-) diff --git a/TODO b/TODO index 9adec5ea96..de950d7a88 100644 --- a/TODO +++ b/TODO @@ -67,8 +67,6 @@ Features: * sd-login: allow enumerating machines and add inotify iface -* move session owner code from sd-login.c to cgroup-util.c - * cgroup-util: verify syntax of cgroup controllers * cgtop: make cgtop useful in a container -- cgit v1.2.1 From e41e194340f9a8dbd982b5030449281c3c8bf0dd Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 23 Apr 2013 17:42:31 -0300 Subject: timer: make sure we restart timers even if units are still running or if one of their conditions fails --- TODO | 6 ------ src/core/timer.c | 30 ++++++++++++++++++------------ src/core/timer.h | 2 ++ 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/TODO b/TODO index de950d7a88..fe27d2b2a0 100644 --- a/TODO +++ b/TODO @@ -24,12 +24,6 @@ Fedora 19: * localed: - localectl: support new converted x11→console keymaps -* timer logic is confused by units which are skipped due to failing condition - http://lists.freedesktop.org/archives/systemd-devel/2013-February/008816.html - -* timer logic is also confused if a service it triggers hasn't finished when the next timer elapses: - http://lists.freedesktop.org/archives/systemd-devel/2013-February/009021.html - Features: * see if we can fix https://bugs.freedesktop.org/show_bug.cgi?id=63672 diff --git a/src/core/timer.c b/src/core/timer.c index b5d895f048..b8039d82ec 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -251,11 +251,6 @@ static void timer_enter_waiting(Timer *t, bool initial) { if (r < 0) continue; - if (!initial && v->next_elapse < ts.realtime) { - v->disabled = true; - continue; - } - if (!found_realtime) t->next_elapse_realtime = v->next_elapse; else @@ -284,18 +279,26 @@ static void timer_enter_waiting(Timer *t, bool initial) { case TIMER_UNIT_ACTIVE: - if (UNIT_TRIGGER(UNIT(t))->inactive_exit_timestamp.monotonic <= 0) + base = UNIT_TRIGGER(UNIT(t))->inactive_exit_timestamp.monotonic; + + if (base <= 0) + base = t->last_trigger_monotonic; + + if (base <= 0) continue; - base = UNIT_TRIGGER(UNIT(t))->inactive_exit_timestamp.monotonic; break; case TIMER_UNIT_INACTIVE: - if (UNIT_TRIGGER(UNIT(t))->inactive_enter_timestamp.monotonic <= 0) + base = UNIT_TRIGGER(UNIT(t))->inactive_enter_timestamp.monotonic; + + if (base <= 0) + base = t->last_trigger_monotonic; + + if (base <= 0) continue; - base = UNIT_TRIGGER(UNIT(t))->inactive_enter_timestamp.monotonic; break; default: @@ -304,7 +307,10 @@ static void timer_enter_waiting(Timer *t, bool initial) { v->next_elapse = base + v->value; - if (!initial && v->next_elapse < ts.monotonic) { + if (!initial && + v->next_elapse < ts.monotonic && + (v->base == TIMER_ACTIVE || v->base == TIMER_BOOT || v->base == TIMER_STARTUP)) { + /* This is a one time trigger, disable it now */ v->disabled = true; continue; } @@ -376,6 +382,8 @@ static void timer_enter_running(Timer *t) { if (r < 0) goto fail; + t->last_trigger_monotonic = now(CLOCK_MONOTONIC); + timer_set_state(t, TIMER_RUNNING); return; @@ -488,8 +496,6 @@ static void timer_trigger_notify(Unit *u, Unit *other) { assert(u); assert(other); - log_error("NOTIFY!"); - if (other->load_state != UNIT_LOADED) return; diff --git a/src/core/timer.h b/src/core/timer.h index 163bd6c3be..fed15e9165 100644 --- a/src/core/timer.h +++ b/src/core/timer.h @@ -79,6 +79,8 @@ struct Timer { Watch realtime_watch; TimerResult result; + + usec_t last_trigger_monotonic; }; void timer_free_values(Timer *t); -- cgit v1.2.1 From 2e3ffafcabcd5077c2d96757bd407cde1f88a883 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 24 Apr 2013 05:19:50 +0200 Subject: kdbus: update kdbus.h from upstream --- src/libsystemd-bus/kdbus.h | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/libsystemd-bus/kdbus.h b/src/libsystemd-bus/kdbus.h index 6d93454702..0589370125 100644 --- a/src/libsystemd-bus/kdbus.h +++ b/src/libsystemd-bus/kdbus.h @@ -405,12 +405,9 @@ enum kdbus_cmd { KDBUS_CMD_BUS_MAKE = _IOWR(KDBUS_IOC_MAGIC, 0x00, struct kdbus_cmd_bus_make), KDBUS_CMD_NS_MAKE = _IOWR(KDBUS_IOC_MAGIC, 0x10, struct kdbus_cmd_ns_make), - /* kdbus control node commands: require bus owner state */ - KDBUS_CMD_BUS_POLICY_SET = _IOWR(KDBUS_IOC_MAGIC, 0x20, struct kdbus_cmd_policy), - /* kdbus ep node commands: require unset state */ - KDBUS_CMD_EP_MAKE = _IOWR(KDBUS_IOC_MAGIC, 0x30, struct kdbus_cmd_ep_make), - KDBUS_CMD_HELLO = _IOWR(KDBUS_IOC_MAGIC, 0x31, struct kdbus_cmd_hello), + KDBUS_CMD_EP_MAKE = _IOWR(KDBUS_IOC_MAGIC, 0x20, struct kdbus_cmd_ep_make), + KDBUS_CMD_HELLO = _IOWR(KDBUS_IOC_MAGIC, 0x30, struct kdbus_cmd_hello), /* kdbus ep node commands: require connected state */ KDBUS_CMD_MSG_SEND = _IOWR(KDBUS_IOC_MAGIC, 0x40, struct kdbus_msg), -- cgit v1.2.1 From 0ee679580e55b4b7fe6c68bf63d953017c489617 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 22 Apr 2013 20:39:03 -0400 Subject: systemd: fall back to mounting /sys/fs/cgroup sans xattr xattrs on cgroup fs were added back in v3.6-rc3-3-g03b1cde. But we support kernels >= 2.6.39, and we should also support kernels compiled w/o xattr support, even if systemd is compiled with xattr support. Fall back to mounting without xattr support. Tested-by: Colin Walters --- src/core/mount-setup.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index 56d358b094..a0fd7a078f 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -68,12 +68,6 @@ typedef struct MountPoint { * other ones we can delay until SELinux and IMA are loaded. */ #define N_EARLY_MOUNT 5 -#ifdef HAVE_XATTR -# define FS_XATTR_OPT ",xattr" -#else -# define FS_XATTR_OPT "" -#endif - static const MountPoint mount_table[] = { { "proc", "/proc", "proc", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_FATAL|MNT_IN_CONTAINER }, @@ -93,7 +87,11 @@ static const MountPoint mount_table[] = { NULL, MNT_FATAL|MNT_IN_CONTAINER }, { "tmpfs", "/sys/fs/cgroup", "tmpfs", "mode=755", MS_NOSUID|MS_NOEXEC|MS_NODEV|MS_STRICTATIME, NULL, MNT_IN_CONTAINER }, - { "cgroup", "/sys/fs/cgroup/systemd", "cgroup", "none,name=systemd" FS_XATTR_OPT, MS_NOSUID|MS_NOEXEC|MS_NODEV, +#ifdef HAVE_XATTR + { "cgroup", "/sys/fs/cgroup/systemd", "cgroup", "none,name=systemd,xattr", MS_NOSUID|MS_NOEXEC|MS_NODEV, + NULL, MNT_IN_CONTAINER }, +#endif + { "cgroup", "/sys/fs/cgroup/systemd", "cgroup", "none,name=systemd", MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_IN_CONTAINER }, { "pstore", "/sys/fs/pstore", "pstore", NULL, MS_NOSUID|MS_NOEXEC|MS_NODEV, NULL, MNT_NONE }, -- cgit v1.2.1 From fff87a35d9e26c0d4ea41273a963c0eb20e18da4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 22 Apr 2013 20:39:40 -0400 Subject: test: make it easier to override kernel version --- TODO | 6 ++++-- test/TEST-01-BASIC/test.sh | 4 +--- test/TEST-02-CRYPTSETUP/test.sh | 4 +--- test/TEST-03-JOBS/test.sh | 4 +--- 4 files changed, 7 insertions(+), 11 deletions(-) diff --git a/TODO b/TODO index fe27d2b2a0..aa2c1cea94 100644 --- a/TODO +++ b/TODO @@ -72,8 +72,10 @@ Features: * explicitly disallow changing the cgroup path of units in the name=systemd hierarchy, unless it is outside of /system -* add 'set -e' to scripts in test/ -* make test in test/ work with separate output dir +* test/: + - add 'set -e' to scripts in test/ + - make stuff in test/ work with separate output dir + - remove all the duplicated code in test/ * suppress log output on shutdown when "quiet" is used diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh index 90492079e4..e41ed9dcfe 100755 --- a/test/TEST-01-BASIC/test.sh +++ b/test/TEST-01-BASIC/test.sh @@ -3,8 +3,7 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh TEST_DESCRIPTION="Basic systemd setup" -KVERSION=${KVERSION-$(uname -r)} -KERNEL_VER=$(uname -r) +. $TEST_BASE_DIR/test-functions # Uncomment this to debug failures #DEBUGFAIL="systemd.unit=multi-user.target" @@ -242,5 +241,4 @@ test_cleanup() { return 0 } -. $TEST_BASE_DIR/test-functions do_test "$@" diff --git a/test/TEST-02-CRYPTSETUP/test.sh b/test/TEST-02-CRYPTSETUP/test.sh index e0945313f8..ec714301c6 100755 --- a/test/TEST-02-CRYPTSETUP/test.sh +++ b/test/TEST-02-CRYPTSETUP/test.sh @@ -3,8 +3,7 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh TEST_DESCRIPTION="cryptsetup systemd setup" -KVERSION=${KVERSION-$(uname -r)} -KERNEL_VER=$(uname -r) +. $TEST_BASE_DIR/test-functions # Uncomment this to debug failures #DEBUGFAIL="systemd.unit=multi-user.target" @@ -254,5 +253,4 @@ test_cleanup() { return 0 } -. $TEST_BASE_DIR/test-functions do_test "$@" diff --git a/test/TEST-03-JOBS/test.sh b/test/TEST-03-JOBS/test.sh index 6eaba72e57..6440d1f54b 100755 --- a/test/TEST-03-JOBS/test.sh +++ b/test/TEST-03-JOBS/test.sh @@ -3,8 +3,7 @@ # ex: ts=8 sw=4 sts=4 et filetype=sh TEST_DESCRIPTION="Job-related tests" -KVERSION=${KVERSION-$(uname -r)} -KERNEL_VER=$(uname -r) +. $TEST_BASE_DIR/test-functions # Uncomment this to debug failures #DEBUGFAIL="systemd.unit=multi-user.target" @@ -247,5 +246,4 @@ test_cleanup() { return 0 } -. $TEST_BASE_DIR/test-functions do_test "$@" -- cgit v1.2.1 From c79bb9e4e2e5b96b2ae2c432bf8b0ff9674fce60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 22 Apr 2013 20:51:29 -0400 Subject: Standarize on one spelling of symlink error message It's polite to print the name of the link that wasn't created, and it makes little sense to print the target. --- src/core/mount-setup.c | 6 ++---- src/cryptsetup/cryptsetup-generator.c | 6 +++--- src/efi-boot-generator/efi-boot-generator.c | 2 +- src/getty-generator/getty-generator.c | 2 +- src/rc-local-generator/rc-local-generator.c | 2 +- src/system-update-generator/system-update-generator.c | 7 ++----- src/udev/udev-watch.c | 2 +- 7 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index a0fd7a078f..89adb0b4a3 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -334,7 +334,7 @@ int mount_cgroup_controllers(char ***join_controllers) { char **i; for (i = *k; *i; i++) { - char *t; + _cleanup_free_ char *t; t = strappend("/sys/fs/cgroup/", *i); if (!t) { @@ -344,10 +344,8 @@ int mount_cgroup_controllers(char ***join_controllers) { } r = symlink(options, t); - free(t); - if (r < 0 && errno != EEXIST) { - log_error("Failed to create symlink: %m"); + log_error("Failed to create symlink %s: %m", t); r = -errno; free(options); goto finish; diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index b31329dc09..228039d91f 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -179,7 +179,7 @@ static int create_disk( mkdir_parents_label(to, 0755); if (symlink(from, to) < 0) { - log_error("Failed to create symlink '%s' to '%s': %m", from, to); + log_error("Failed to create symlink %s: %m", to); return -errno; } @@ -193,7 +193,7 @@ static int create_disk( mkdir_parents_label(to, 0755); if (symlink(from, to) < 0) { - log_error("Failed to create symlink '%s' to '%s': %m", from, to); + log_error("Failed to create symlink %s: %m", to); return -errno; } } @@ -209,7 +209,7 @@ static int create_disk( mkdir_parents_label(to, 0755); if (symlink(from, to) < 0) { - log_error("Failed to create symlink '%s' to '%s': %m", from, to); + log_error("Failed to create symlink %s: %m", to); return -errno; } diff --git a/src/efi-boot-generator/efi-boot-generator.c b/src/efi-boot-generator/efi-boot-generator.c index 88fa220d2f..4367c536b0 100644 --- a/src/efi-boot-generator/efi-boot-generator.c +++ b/src/efi-boot-generator/efi-boot-generator.c @@ -115,7 +115,7 @@ int main(int argc, char *argv[]) { mkdir_parents(name, 0755); if (symlink("../boot.automount", name) < 0) { - log_error("Failed to create symlink: %m"); + log_error("Failed to create symlink %s: %m", name); return EXIT_FAILURE; } diff --git a/src/getty-generator/getty-generator.c b/src/getty-generator/getty-generator.c index e811830a6b..4b7a60a4ec 100644 --- a/src/getty-generator/getty-generator.c +++ b/src/getty-generator/getty-generator.c @@ -55,7 +55,7 @@ static int add_symlink(const char *fservice, const char *tservice) { /* In case console=hvc0 is passed this will very likely result in EEXIST */ r = 0; else { - log_error("Failed to create symlink from %s to %s: %m", from, to); + log_error("Failed to create symlink %s: %m", to); r = -errno; } } diff --git a/src/rc-local-generator/rc-local-generator.c b/src/rc-local-generator/rc-local-generator.c index 448980ba2d..9265501250 100644 --- a/src/rc-local-generator/rc-local-generator.c +++ b/src/rc-local-generator/rc-local-generator.c @@ -59,7 +59,7 @@ static int add_symlink(const char *service, const char *where) { if (errno == EEXIST) r = 0; else { - log_error("Failed to create symlink from %s to %s: %m", from, to); + log_error("Failed to create symlink %s: %m", to); r = -errno; } } diff --git a/src/system-update-generator/system-update-generator.c b/src/system-update-generator/system-update-generator.c index 6660192f5e..13b8a0c426 100644 --- a/src/system-update-generator/system-update-generator.c +++ b/src/system-update-generator/system-update-generator.c @@ -36,7 +36,7 @@ static const char *arg_dest = "/tmp"; static int generate_symlink(void) { struct stat st; - char *p; + char _cleanup_free_ *p = NULL; if (lstat("/system-update", &st) < 0) { if (errno == ENOENT) @@ -51,13 +51,10 @@ static int generate_symlink(void) { return log_oom(); if (symlink(SYSTEM_DATA_UNIT_PATH "/system-update.target", p) < 0) { - free(p); - log_error("Failed to create symlink: %m"); + log_error("Failed to create symlink %s: %m", p); return -errno; } - free(p); - return 0; } diff --git a/src/udev/udev-watch.c b/src/udev/udev-watch.c index 311f5bdf23..9b694c6666 100644 --- a/src/udev/udev-watch.c +++ b/src/udev/udev-watch.c @@ -116,7 +116,7 @@ void udev_watch_begin(struct udev *udev, struct udev_device *dev) unlink(filename); r = symlink(udev_device_get_id_filename(dev), filename); if (r < 0) - log_error("Failed to create symlink: %m"); + log_error("Failed to create symlink %s: %m", filename); udev_device_set_watch_handle(dev, wd); } -- cgit v1.2.1 From ef42202ac8ed27e7ff1fc90ef8bc2590046dff25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 22 Apr 2013 23:12:15 -0400 Subject: Add set_consume which always takes ownership Freeing in error path is the common pattern with set_put(). --- src/core/dbus-manager.c | 6 ++---- src/core/load-fragment.c | 6 ++---- src/core/manager.c | 6 ++---- src/core/mount-setup.c | 3 +-- src/journal/coredumpctl.c | 12 +++++------- src/libsystemd-bus/sd-bus.c | 10 +++------- src/locale/localectl.c | 22 +++++++--------------- src/readahead/readahead-collect.c | 5 +++-- src/shared/install.c | 6 ++---- src/shared/set.c | 7 +++++++ src/shared/set.h | 1 + src/systemctl/systemctl.c | 3 +-- src/test/test-prioq.c | 2 +- src/tmpfiles/tmpfiles.c | 10 +++------- 14 files changed, 40 insertions(+), 59 deletions(-) diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index d767dd5236..1f5a7d94fd 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -1186,11 +1186,9 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, if (!client) goto oom; - r = set_put(s, client); - if (r < 0) { - free(client); + r = set_consume(s, client); + if (r < 0) return bus_send_error_reply(connection, message, NULL, r); - } reply = dbus_message_new_method_return(message); if (!reply) diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 0571d517b0..3d23372630 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -2095,11 +2095,9 @@ static int open_follow(char **filename, FILE **_f, Set *names, char **_final) { if (!id) return -ENOMEM; - r = set_put(names, id); - if (r < 0) { - free(id); + r = set_consume(names, id); + if (r < 0) return r; - } } } diff --git a/src/core/manager.c b/src/core/manager.c index 208b240ba1..b1a22890fb 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -806,11 +806,9 @@ static void manager_build_unit_path_cache(Manager *m) { goto fail; } - r = set_put(m->unit_path_cache, p); - if (r < 0) { - free(p); + r = set_consume(m->unit_path_cache, p); + if (r < 0) goto fail; - } } closedir(d); diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index 89adb0b4a3..b841f478c3 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -251,10 +251,9 @@ int mount_cgroup_controllers(char ***join_controllers) { continue; } - r = set_put(controllers, controller); + r = set_consume(controllers, controller); if (r < 0) { log_error("Failed to add controller to set."); - free(controller); goto finish; } } diff --git a/src/journal/coredumpctl.c b/src/journal/coredumpctl.c index 0bbfff2ecd..5652c2f91a 100644 --- a/src/journal/coredumpctl.c +++ b/src/journal/coredumpctl.c @@ -68,10 +68,9 @@ static Set *new_matches(void) { return NULL; } - r = set_put(set, tmp); + r = set_consume(set, tmp); if (r < 0) { log_error("failed to add to set: %s", strerror(-r)); - free(tmp); set_free(set); return NULL; } @@ -125,18 +124,17 @@ static int add_match(Set *set, const char *match) { if (!pattern) goto fail; - r = set_put(set, pattern); + log_debug("Adding pattern: %s", pattern); + r = set_consume(set, pattern); if (r < 0) { - log_error("failed to add pattern '%s': %s", + log_error("Failed to add pattern '%s': %s", pattern, strerror(-r)); goto fail; } - log_debug("Added pattern: %s", pattern); return 0; fail: - free(pattern); - log_error("failed to add match: %s", strerror(-r)); + log_error("Failed to add match: %s", strerror(-r)); return r; } diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index c7511c32d2..7d6d848ec5 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -1841,13 +1841,9 @@ static int process_introspect(sd_bus *bus, sd_bus_message *m) { if (p) *p = 0; - r = set_put(s, a); - if (r < 0) { - free(a); - - if (r != -EEXIST) - return r; - } + r = set_consume(s, a); + if (r < 0 && r != -EEXIST) + return r; } f = open_memstream(&introspection, &size); diff --git a/src/locale/localectl.c b/src/locale/localectl.c index ea9187ff84..50250c4b47 100644 --- a/src/locale/localectl.c +++ b/src/locale/localectl.c @@ -369,9 +369,8 @@ static int add_locales_from_archive(Set *locales) { goto finish; } - r = set_put(locales, z); + r = set_consume(locales, z); if (r < 0) { - free(z); log_error("Failed to add locale: %s", strerror(-r)); goto finish; } @@ -411,14 +410,10 @@ static int add_locales_from_libdir (Set *locales) { if (!z) return log_oom(); - r = set_put(locales, z); - if (r < 0) { - free(z); - - if (r != -EEXIST) { - log_error("Failed to add locale: %s", strerror(-r)); - return r; - } + r = set_consume(locales, z); + if (r < 0 && r != -EEXIST) { + log_error("Failed to add locale: %s", strerror(-r)); + return r; } errno = 0; @@ -526,12 +521,9 @@ static int nftw_cb( if (e) *e = 0; - r = set_put(keymaps, p); - if (r == -EEXIST) - free(p); - else if (r < 0) { + r = set_consume(keymaps, p); + if (r < 0 && r != -EEXIST) { log_error("Can't add keymap: %s", strerror(-r)); - free(p); return r; } diff --git a/src/readahead/readahead-collect.c b/src/readahead/readahead-collect.c index 75ec5b70c7..ccd8408c1b 100644 --- a/src/readahead/readahead-collect.c +++ b/src/readahead/readahead-collect.c @@ -479,8 +479,9 @@ static int collect(const char *root) { } entry->bin = (entrytime - starttime) / 2000000; - if ((k = hashmap_put(files, p, entry)) < 0) { - log_warning("set_put() failed: %s", strerror(-k)); + k = hashmap_put(files, p, entry); + if (k < 0) { + log_warning("hashmap_put() failed: %s", strerror(-k)); free(p); } } diff --git a/src/shared/install.c b/src/shared/install.c index 959de04810..b22019d7b5 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -178,11 +178,9 @@ static int mark_symlink_for_removal( path_kill_slashes(n); - r = set_put(*remove_symlinks_to, n); - if (r < 0) { - free(n); + r = set_consume(*remove_symlinks_to, n); + if (r < 0) return r == -EEXIST ? 0 : r; - } return 0; } diff --git a/src/shared/set.c b/src/shared/set.c index 5f83c50839..c338dc3a44 100644 --- a/src/shared/set.c +++ b/src/shared/set.c @@ -49,6 +49,13 @@ int set_put(Set *s, void *value) { return hashmap_put(MAKE_HASHMAP(s), value, value); } +int set_consume(Set *s, void *value) { + int r = set_put(s, value); + if (r < 0) + free(value); + return r; +} + int set_replace(Set *s, void *value) { return hashmap_replace(MAKE_HASHMAP(s), value, value); } diff --git a/src/shared/set.h b/src/shared/set.h index 8864f7b34e..e5d46e9a8f 100644 --- a/src/shared/set.h +++ b/src/shared/set.h @@ -46,6 +46,7 @@ Set* set_copy(Set *s); int set_ensure_allocated(Set **s, hash_func_t hash_func, compare_func_t compare_func); int set_put(Set *s, void *value); +int set_consume(Set *s, void *value); int set_replace(Set *s, void *value); void *set_get(Set *s, void *value); bool set_contains(Set *s, void *value); diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index c2b1749def..b94f7f7958 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1843,9 +1843,8 @@ static int start_unit_one( if (!p) return log_oom(); - r = set_put(s, p); + r = set_consume(s, p); if (r < 0) { - free(p); log_error("Failed to add path to set."); return r; } diff --git a/src/test/test-prioq.c b/src/test/test-prioq.c index 73c640840a..aeac73973b 100644 --- a/src/test/test-prioq.c +++ b/src/test/test-prioq.c @@ -119,7 +119,7 @@ static void test_struct(void) { assert_se(r >= 0); if (i % 4 == 0) { - r = set_put(s, t); + r = set_consume(s, t); assert_se(r >= 0); } } diff --git a/src/tmpfiles/tmpfiles.c b/src/tmpfiles/tmpfiles.c index 535381c470..f4885ec942 100644 --- a/src/tmpfiles/tmpfiles.c +++ b/src/tmpfiles/tmpfiles.c @@ -186,13 +186,9 @@ static void load_unix_sockets(void) { path_kill_slashes(s); - k = set_put(unix_sockets, s); - if (k < 0) { - free(s); - - if (k != -EEXIST) - goto fail; - } + k = set_consume(unix_sockets, s); + if (k < 0 && k != -EEXIST) + goto fail; } return; -- cgit v1.2.1 From 90ae6c0b822bbfd433c801d7945cadcabd1bc1c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 23 Apr 2013 19:05:43 -0400 Subject: readahead: be more verbose about creation failures systemd-readahead reports "Failed to create shared memory segment: No such file or directory", but it's unclear how it can happen. Be more verbose about failures. --- src/readahead/readahead-common.c | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/readahead/readahead-common.c b/src/readahead/readahead-common.c index ed81c14d89..a234a89954 100644 --- a/src/readahead/readahead-common.c +++ b/src/readahead/readahead-common.c @@ -216,16 +216,23 @@ bool enough_ram(void) { return si.totalram > 127 * 1024*1024 / si.mem_unit; } +static void mkdirs(void) { + if (mkdir("/run/systemd", 0755) && errno != EEXIST) + log_warning("Failed to create /run/systemd: %m"); + if (mkdir("/run/systemd/readahead", 0755) && errno != EEXIST) + log_warning("Failed to create /run/systemd: %m"); +} + int open_inotify(void) { int fd; - if ((fd = inotify_init1(IN_CLOEXEC|IN_NONBLOCK)) < 0) { + fd = inotify_init1(IN_CLOEXEC|IN_NONBLOCK); + if (fd < 0) { log_error("Failed to create inotify handle: %m"); return -errno; } - mkdir("/run/systemd", 0755); - mkdir("/run/systemd/readahead", 0755); + mkdirs(); if (inotify_add_watch(fd, "/run/systemd/readahead", IN_CREATE) < 0) { log_error("Failed to watch /run/systemd/readahead: %m"); @@ -237,32 +244,28 @@ int open_inotify(void) { } ReadaheadShared *shared_get(void) { - int fd; + int _cleanup_close_ fd = -1; ReadaheadShared *m = NULL; - mkdir("/run/systemd", 0755); - mkdir("/run/systemd/readahead", 0755); + mkdirs(); - if ((fd = open("/run/systemd/readahead/shared", O_CREAT|O_RDWR|O_CLOEXEC, 0644)) < 0) { + fd = open("/run/systemd/readahead/shared", O_CREAT|O_RDWR|O_CLOEXEC, 0644); + if (fd < 0) { log_error("Failed to create shared memory segment: %m"); - goto finish; + return NULL; } if (ftruncate(fd, sizeof(ReadaheadShared)) < 0) { log_error("Failed to truncate shared memory segment: %m"); - goto finish; + return NULL; } - if ((m = mmap(NULL, sizeof(ReadaheadShared), PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0)) == MAP_FAILED) { + m = mmap(NULL, sizeof(ReadaheadShared), PROT_WRITE|PROT_READ, MAP_SHARED, fd, 0); + if (m == MAP_FAILED) { log_error("Failed to mmap shared memory segment: %m"); - m = NULL; - goto finish; + return NULL; } -finish: - if (fd >= 0) - close_nointr_nofail(fd); - return m; } -- cgit v1.2.1 From a6b26d9011de60e1c41f51e8d2aab1d2f7bbf0f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 23 Apr 2013 08:28:10 -0400 Subject: Small cleanup --- src/core/main.c | 13 +++----- src/core/mount-setup.c | 82 ++++++++++++++------------------------------------ 2 files changed, 27 insertions(+), 68 deletions(-) diff --git a/src/core/main.c b/src/core/main.c index 6a981a0b7e..ab2ac00d76 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -522,9 +522,6 @@ static void strv_free_free(char ***l) { } static void free_join_controllers(void) { - if (!arg_join_controllers) - return; - strv_free_free(arg_join_controllers); arg_join_controllers = NULL; } @@ -1219,14 +1216,14 @@ static int initialize_join_controllers(void) { return -ENOMEM; arg_join_controllers[0] = strv_new("cpu", "cpuacct", NULL); - if (!arg_join_controllers[0]) - return -ENOMEM; - arg_join_controllers[1] = strv_new("net_cls", "net_prio", NULL); - if (!arg_join_controllers[1]) + arg_join_controllers[2] = NULL; + + if (!arg_join_controllers[0] || !arg_join_controllers[1]) { + free_join_controllers(); return -ENOMEM; + } - arg_join_controllers[2] = NULL; return 0; } diff --git a/src/core/mount-setup.c b/src/core/mount-setup.c index b841f478c3..4629808a7a 100644 --- a/src/core/mount-setup.c +++ b/src/core/mount-setup.c @@ -211,9 +211,9 @@ int mount_setup_early(void) { int mount_cgroup_controllers(char ***join_controllers) { int r; - FILE *f; char buf[LINE_MAX]; - Set *controllers; + _cleanup_set_free_free_ Set *controllers = NULL; + _cleanup_fclose_ FILE *f; /* Mount all available cgroup controllers that are built into the kernel. */ @@ -224,10 +224,8 @@ int mount_cgroup_controllers(char ***join_controllers) { } controllers = set_new(string_hash_func, string_compare_func); - if (!controllers) { - r = log_oom(); - goto finish; - } + if (!controllers) + return log_oom(); /* Ignore the header line */ (void) fgets(buf, sizeof(buf), f); @@ -242,8 +240,7 @@ int mount_cgroup_controllers(char ***join_controllers) { break; log_error("Failed to parse /proc/cgroups."); - r = -EIO; - goto finish; + return -EIO; } if (!enabled) { @@ -254,14 +251,19 @@ int mount_cgroup_controllers(char ***join_controllers) { r = set_consume(controllers, controller); if (r < 0) { log_error("Failed to add controller to set."); - goto finish; + return r; } } for (;;) { - MountPoint p; - char *controller, *where, *options; + MountPoint p = { + .what = "cgroup", + .type = "cgroup", + .flags = MS_NOSUID|MS_NOEXEC|MS_NODEV, + .mode = MNT_IN_CONTAINER, + }; char ***k = NULL; + _cleanup_free_ char *options = NULL, *controller; controller = set_steal_first(controllers); if (!controller) @@ -278,14 +280,13 @@ int mount_cgroup_controllers(char ***join_controllers) { for (i = *k, j = *k; *i; i++) { if (!streq(*i, controller)) { - char *t; + char _cleanup_free_ *t; t = set_remove(controllers, *i); if (!t) { free(*i); continue; } - free(t); } *(j++) = *i; @@ -294,75 +295,36 @@ int mount_cgroup_controllers(char ***join_controllers) { *j = NULL; options = strv_join(*k, ","); - if (!options) { - free(controller); - r = log_oom(); - goto finish; - } - + if (!options) + return log_oom(); } else { options = controller; controller = NULL; } - where = strappend("/sys/fs/cgroup/", options); - if (!where) { - free(options); - r = log_oom(); - goto finish; - } - - zero(p); - p.what = "cgroup"; - p.where = where; - p.type = "cgroup"; + p.where = strappenda("/sys/fs/cgroup/", options); p.options = options; - p.flags = MS_NOSUID|MS_NOEXEC|MS_NODEV; - p.mode = MNT_IN_CONTAINER; r = mount_one(&p, true); - free(controller); - free(where); - - if (r < 0) { - free(options); - goto finish; - } + if (r < 0) + return r; if (r > 0 && k && *k) { char **i; for (i = *k; *i; i++) { - _cleanup_free_ char *t; - - t = strappend("/sys/fs/cgroup/", *i); - if (!t) { - r = log_oom(); - free(options); - goto finish; - } + char *t = strappenda("/sys/fs/cgroup/", *i); r = symlink(options, t); if (r < 0 && errno != EEXIST) { log_error("Failed to create symlink %s: %m", t); - r = -errno; - free(options); - goto finish; + return -errno; } } } - - free(options); } - r = 0; - -finish: - set_free_free(controllers); - - fclose(f); - - return r; + return 0; } static int nftw_cb( -- cgit v1.2.1 From afba41995de65d8f378b138ea6d9804be32625a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 23 Apr 2013 23:49:46 -0400 Subject: systemctl: show reverse dependencies or before/after ordering Also update completion scripts a bit. --- man/systemctl.xml | 23 +++++++++++++ shell-completion/bash/systemctl | 4 +-- shell-completion/systemd-zsh-completion.zsh | 7 +++- src/systemctl/systemctl.c | 50 ++++++++++++++++++++++++----- 4 files changed, 73 insertions(+), 11 deletions(-) diff --git a/man/systemctl.xml b/man/systemctl.xml index 96cd10810f..2739df69d4 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -142,6 +142,29 @@ along with systemd; If not, see .
+ + + + + Show reverse dependencies between units with + list-dependencies, i.e. units with + dependencies of type Wants= or + Requires= on the given unit. + + + + + + + + + + Show which units are started after, resp. before + with list-dependencies. + + + + diff --git a/shell-completion/bash/systemctl b/shell-completion/bash/systemctl index f5829b72f8..191b8d13ec 100644 --- a/shell-completion/bash/systemctl +++ b/shell-completion/bash/systemctl @@ -70,7 +70,7 @@ _systemctl () { local i verb comps mode local -A OPTS=( - [STANDALONE]='--all -a --defaults --fail --ignore-dependencies --failed --force -f --full --global + [STANDALONE]='--all -a --reverse --after --before --defaults --fail --ignore-dependencies --failed --force -f --full --global --help -h --no-ask-password --no-block --no-legend --no-pager --no-reload --no-wall --quiet -q --privileged -P --system --user --version --runtime' [ARG]='--host -H --kill-mode --kill-who --property -p --signal -s --type -t --root' @@ -117,7 +117,7 @@ _systemctl () { fi local -A VERBS=( - [ALL_UNITS]='is-active is-failed is-enabled status show mask preset help' + [ALL_UNITS]='is-active is-failed is-enabled status show mask preset help list-dependencies' [ENABLED_UNITS]='disable' [DISABLED_UNITS]='enable' [REENABLABLE_UNITS]='reenable' diff --git a/shell-completion/systemd-zsh-completion.zsh b/shell-completion/systemd-zsh-completion.zsh index 8b60859c23..73db3786d6 100644 --- a/shell-completion/systemd-zsh-completion.zsh +++ b/shell-completion/systemd-zsh-completion.zsh @@ -12,6 +12,9 @@ _ctls() {-t,--type=}'[List only units of a particular type]:unit type:(automount device mount path service snapshot socket swap target timer)' \ \*{-p,--property=}'[Show only properties by specific name]:unit property' \ {-a,--all}'[Show all units/properties, including dead/empty ones]' \ + '--reverse[Show reverse dependencies]' \ + '--after[Show units ordered after]' \ + '--before[Show units ordered before]' \ '--failed[Show only failed units]' \ "--full[Don't ellipsize unit names on output]" \ '--fail[When queueing a new job, fail if conflicting jobs are pending]' \ @@ -348,6 +351,8 @@ _outputmodes() { "disable:Disable one or more unit files" "reenable:Reenable one or more unit files" "preset:Enable/disable one or more unit files based on preset configuration" + "help:Show documentation for specified units" + "list-dependencies:Show unit dependency tree" "mask:Mask one or more units" "unmask:Unmask one or more units" "link:Link one or more units files into the search path" @@ -462,7 +467,7 @@ _systemctl_disabled_units(){_sys_disabled_units=($(__systemctl list-unit-files _systemctl_masked_units() {_sys_masked_units=( $(__systemctl list-unit-files | { while read a b; do [[ $b == "masked" ]] && echo " $a"; done; }) )} # Completion functions for ALL_UNITS -for fun in is-active is-failed is-enabled status show mask preset ; do +for fun in is-active is-failed is-enabled status show mask preset help list-dependencies ; do (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() { _systemctl_really_all_units diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index b94f7f7958..6067781cf1 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -72,6 +72,12 @@ static char **arg_types = NULL; static char **arg_load_states = NULL; static char **arg_properties = NULL; static bool arg_all = false; +static enum dependency { + DEPENDENCY_FORWARD, + DEPENDENCY_REVERSE, + DEPENDENCY_AFTER, + DEPENDENCY_BEFORE, +} arg_dependency = DEPENDENCY_FORWARD; static const char *arg_job_mode = "replace"; static UnitFileScope arg_scope = UNIT_FILE_SYSTEM; static bool arg_no_block = false; @@ -979,12 +985,19 @@ static int list_dependencies_print(const char *name, int level, unsigned int bra } static int list_dependencies_get_dependencies(DBusConnection *bus, const char *name, char ***deps) { - static const char dependencies[] = - "Requires\0" - "RequiresOverridable\0" - "Requisite\0" - "RequisiteOverridable\0" - "Wants\0"; + static const char *dependencies[] = { + [DEPENDENCY_FORWARD] = "Requires\0" + "RequiresOverridable\0" + "Requisite\0" + "RequisiteOverridable\0" + "Wants\0", + [DEPENDENCY_REVERSE] = "RequiredBy\0" + "RequiredByOverridable\0" + "WantedBy\0" + "PartOf\0", + [DEPENDENCY_AFTER] = "After\0", + [DEPENDENCY_BEFORE] = "Before\0", + }; _cleanup_free_ char *path; const char *interface = "org.freedesktop.systemd1.Unit"; @@ -1049,7 +1062,8 @@ static int list_dependencies_get_dependencies(DBusConnection *bus, const char *n dbus_message_iter_recurse(&sub2, &sub3); dbus_message_iter_next(&sub); - if (!nulstr_contains(dependencies, prop)) + assert(arg_dependency < ELEMENTSOF(dependencies)); + if (!nulstr_contains(dependencies[arg_dependency], prop)) continue; if (dbus_message_iter_get_arg_type(&sub3) == DBUS_TYPE_ARRAY) { @@ -4479,6 +4493,7 @@ static int systemctl_help(void) { " -a --all Show all loaded units/properties, including dead/empty\n" " ones. To list all units installed on the system, use\n" " the 'list-unit-files' command instead.\n" + " --reverse Show reverse dependencies with 'list-dependencies'\n" " --failed Show only failed units\n" " --full Don't ellipsize unit names on output\n" " --fail When queueing a new job, fail if conflicting jobs are\n" @@ -4544,7 +4559,8 @@ static int systemctl_help(void) { " unset-cgroup [NAME] [CGROUP...] Remove unit from a control group\n" " load [NAME...] Load one or more units\n" " list-dependencies [NAME] Recursively show units which are required\n" - " or wanted by this unit\n\n" + " or wanted by this unit or by which this\n" + " unit is required or wanted\n\n" "Unit File Commands:\n" " list-unit-files List installed unit files\n" " enable [NAME...] Enable one or more unit files\n" @@ -4680,6 +4696,9 @@ static int systemctl_parse_argv(int argc, char *argv[]) { enum { ARG_FAIL = 0x100, + ARG_REVERSE, + ARG_AFTER, + ARG_BEFORE, ARG_SHOW_TYPES, ARG_IRREVERSIBLE, ARG_IGNORE_DEPENDENCIES, @@ -4707,6 +4726,9 @@ static int systemctl_parse_argv(int argc, char *argv[]) { { "type", required_argument, NULL, 't' }, { "property", required_argument, NULL, 'p' }, { "all", no_argument, NULL, 'a' }, + { "reverse", no_argument, NULL, ARG_REVERSE }, + { "after", no_argument, NULL, ARG_AFTER }, + { "before", no_argument, NULL, ARG_BEFORE }, { "show-types", no_argument, NULL, ARG_SHOW_TYPES }, { "failed", no_argument, NULL, ARG_FAILED }, { "full", no_argument, NULL, ARG_FULL }, @@ -4829,6 +4851,18 @@ static int systemctl_parse_argv(int argc, char *argv[]) { arg_all = true; break; + case ARG_REVERSE: + arg_dependency = DEPENDENCY_REVERSE; + break; + + case ARG_AFTER: + arg_dependency = DEPENDENCY_AFTER; + break; + + case ARG_BEFORE: + arg_dependency = DEPENDENCY_BEFORE; + break; + case ARG_SHOW_TYPES: arg_show_types = true; break; -- cgit v1.2.1 From 4470d8413749af1c29c3769c7159493ccd77e000 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 24 Apr 2013 10:30:40 -0300 Subject: logind: properly enumerate user/session cgroups under their new suffixed names --- src/login/logind.c | 74 +++++++++++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 32 deletions(-) diff --git a/src/login/logind.c b/src/login/logind.c index 66a786a3f8..3b9da19858 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -597,9 +597,9 @@ int manager_enumerate_seats(Manager *m) { } static int manager_enumerate_users_from_cgroup(Manager *m) { + _cleanup_closedir_ DIR *d = NULL; int r = 0, k; char *name; - DIR *d; r = cg_enumerate_subgroups(SYSTEMD_CGROUP_CONTROLLER, m->cgroup_path, &d); if (r < 0) { @@ -612,31 +612,37 @@ static int manager_enumerate_users_from_cgroup(Manager *m) { while ((k = cg_read_subgroup(d, &name)) > 0) { User *user; + char *e; - k = manager_add_user_by_name(m, name, &user); - if (k < 0) { - free(name); - r = k; - continue; - } - - user_add_to_gc_queue(user); + e = endswith(name, ".user"); + if (e) { + *e = 0; - if (!user->cgroup_path) - if (asprintf(&user->cgroup_path, "%s/%s", m->cgroup_path, name) < 0) { - r = -ENOMEM; + k = manager_add_user_by_name(m, name, &user); + if (k < 0) { free(name); - break; + r = k; + continue; + } + + user_add_to_gc_queue(user); + + if (!user->cgroup_path) { + user->cgroup_path = strjoin(m->cgroup_path, "/", name, NULL); + if (!user->cgroup_path) { + k = log_oom(); + free(name); + break; + } } + } free(name); } - if (r >= 0 && k < 0) + if (k < 0) r = k; - closedir(d); - return r; } @@ -732,7 +738,7 @@ static int manager_enumerate_sessions_from_cgroup(Manager *m) { int r = 0; HASHMAP_FOREACH(u, m->users, i) { - DIR *d; + _cleanup_closedir_ DIR *d = NULL; char *name; int k; @@ -751,30 +757,34 @@ static int manager_enumerate_sessions_from_cgroup(Manager *m) { while ((k = cg_read_subgroup(d, &name)) > 0) { Session *session; + char *e; - if (streq(name, "shared")) - continue; + e = endswith(name, ".session"); + if (e) { + *e = 0; - k = manager_add_session(m, u, name, &session); - if (k < 0) { - free(name); - break; - } + k = manager_add_session(m, u, name, &session); + if (k < 0) { + free(name); + r = k; + continue; + } - session_add_to_gc_queue(session); + session_add_to_gc_queue(session); - if (!session->cgroup_path) - if (asprintf(&session->cgroup_path, "%s/%s", u->cgroup_path, name) < 0) { - k = -ENOMEM; - free(name); - break; + if (!session->cgroup_path) { + session->cgroup_path = strjoin(m->cgroup_path, "/", name, NULL); + if (!session->cgroup_path) { + k = log_oom(); + free(name); + break; + } } + } free(name); } - closedir(d); - if (k < 0) r = k; } -- cgit v1.2.1 From 83cb95b530ca5ae17bd9249774940840a4bbb667 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Wed, 24 Apr 2013 16:44:44 +0200 Subject: add bash completion for systemd-analyze --- Makefile.am | 1 + shell-completion/bash/systemd-analyze | 70 +++++++++++++++++++++++++++++++++++ 2 files changed, 71 insertions(+) create mode 100644 shell-completion/bash/systemd-analyze diff --git a/Makefile.am b/Makefile.am index 1e155d5abd..ff70223395 100644 --- a/Makefile.am +++ b/Makefile.am @@ -331,6 +331,7 @@ systemd_analyze_LDADD = \ dist_bashcompletion_DATA = \ shell-completion/bash/journalctl \ shell-completion/bash/systemctl \ + shell-completion/bash/systemd-analyze \ shell-completion/bash/udevadm dist_tmpfiles_DATA = \ diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze new file mode 100644 index 0000000000..8a4453d405 --- /dev/null +++ b/shell-completion/bash/systemd-analyze @@ -0,0 +1,70 @@ +# systemd-analyze(1) completion -*- shell-script -*- +# +# This file is part of systemd. +# +# Copyright 2010 Ran Benita +# Copyright 2013 Harald Hoyer +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. +# +# systemd is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public License +# along with systemd; If not, see . + +__contains_word () { + local word=$1; shift + for w in $*; do [[ $w = $word ]] && return 0; done + return 1 +} + +_systemd_analyze() { + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='--help --version --system --user --from-pattern --to-pattern --order --require' + + local -A VERBS=( + [NO_OPTION]='time blame plot' + [DOT]='dot' + ) + + _init_completion || return + + for ((i=0; $i <= $COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb && $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + + elif __contains_word "$verb" ${VERBS[NO_OPTION]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user' + fi + + elif __contains_word "$verb" ${VERBS[DOT]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user --from-pattern --to-pattern --order --require' + fi + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 +} + +complete -F _systemd_analyze systemd-analyze -- cgit v1.2.1 From 2b3c81b02fa5dd47b19558c7684e113f36a48486 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Wed, 24 Apr 2013 19:12:44 +0200 Subject: do not create /dev/rtc symlink, let systemd search for it if needed The export of the RTCs hctosys flag is uneccesary, the kernel takes care of the persistemt clock management itself, without any need for: CONFIG_RTC_HCTOSYS=y CONFIG_RTC_HCTOSYS_DEVICE="rtc0" "Chaotic hardware platforms" without native kernel persistent clock support will find the proper RTC with the logic rtc_open() without the need for a custom symlink. --- rules/50-udev-default.rules | 3 --- src/shared/hwclock.c | 17 ++++++++--------- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/rules/50-udev-default.rules b/rules/50-udev-default.rules index 179065211a..234dc3b915 100644 --- a/rules/50-udev-default.rules +++ b/rules/50-udev-default.rules @@ -1,6 +1,5 @@ # do not edit this file, it will be overwritten on update -SUBSYSTEM=="rtc", ATTR{hctosys}=="1", SYMLINK+="rtc" SUBSYSTEM=="virtio-ports", KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}" SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" @@ -15,8 +14,6 @@ SUBSYSTEM=="tty", KERNEL=="tty[0-9]*", GROUP="tty", MODE="0620" SUBSYSTEM=="vc", KERNEL=="vcs*|vcsa*", GROUP="tty" KERNEL=="tty[A-Z]*[0-9]|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*", GROUP="dialout" -SUBSYSTEM=="rtc", ATTR{hctosys}=="1", MODE="0644" - SUBSYSTEM=="mem", KERNEL=="mem|kmem|port", GROUP="kmem", MODE="0640" SUBSYSTEM=="input", KERNEL=="mouse*|mice|event*", MODE="0640" diff --git a/src/shared/hwclock.c b/src/shared/hwclock.c index a3b33ed4cc..837f51f947 100644 --- a/src/shared/hwclock.c +++ b/src/shared/hwclock.c @@ -47,15 +47,14 @@ static int rtc_open(int flags) { int fd; DIR *d; - /* First, we try to make use of the /dev/rtc symlink. If that - * doesn't exist, we open the first RTC which has hctosys=1 - * set. If we don't find any we just take the first RTC that - * exists at all. */ - - fd = open("/dev/rtc", flags); - if (fd >= 0) - return fd; - + /* + * Some "chaotic platforms" have multiple RTCs and we need to + * find the "system RTC", which is in some setups /dev/rtc1. + * + * First, we try to find the RTC which has hctosys=1 set. If we + * don't find any we just take the first RTC that exists at all, + * then try to open /dev/rtc0. + */ d = opendir("/sys/class/rtc"); if (!d) goto fallback; -- cgit v1.2.1 From 1f8497905d7a60c5bf098039a971deb1b52cef09 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 24 Apr 2013 12:56:28 -0300 Subject: bus: add monitoring facility to busctl --- src/libsystemd-bus/busctl.c | 266 +++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 250 insertions(+), 16 deletions(-) diff --git a/src/libsystemd-bus/busctl.c b/src/libsystemd-bus/busctl.c index 7348894c5b..220c1eb34e 100644 --- a/src/libsystemd-bus/busctl.c +++ b/src/libsystemd-bus/busctl.c @@ -19,33 +19,49 @@ along with systemd; If not, see . ***/ +#include + #include "strv.h" #include "util.h" #include "log.h" +#include "build.h" +#include "pager.h" #include "sd-bus.h" #include "bus-message.h" #include "bus-internal.h" -int main(int argc, char *argv[]) { - _cleanup_bus_unref_ sd_bus *bus = NULL; +static bool arg_no_pager = false; +static char *arg_address = NULL; +static bool arg_user = false; +static bool arg_no_unique = false; +static char **arg_matches = NULL; + +static void pager_open_if_enabled(void) { + + /* Cache result before we open the pager */ + if (arg_no_pager) + return; + + pager_open(false); +} + +static int list_bus_names(sd_bus *bus, char **argv) { _cleanup_strv_free_ char **l = NULL; char **i; int r; size_t max_i = 0; - r = sd_bus_open_user(&bus); - if (r < 0) { - log_error("Failed to connect to bus: %s", strerror(-r)); - goto fail; - } + assert(bus); r = sd_bus_list_names(bus, &l); if (r < 0) { log_error("Failed to list names: %s", strerror(-r)); - goto fail; + return r; } + pager_open_if_enabled(); + strv_sort(l); STRV_FOREACH(i, l) @@ -59,8 +75,8 @@ int main(int argc, char *argv[]) { pid_t pid; uid_t uid; - /* if ((*i)[0] == ':') */ - /* continue; */ + if (arg_no_unique && (*i)[0] == ':') + continue; printf("%-*s", (int) max_i, *i); @@ -80,10 +96,8 @@ int main(int argc, char *argv[]) { _cleanup_free_ char *u = NULL; u = uid_to_name(uid); - if (!u) { - log_oom(); - goto fail; - } + if (!u) + return log_oom(); if (strlen(u) > 16) u[16] = 0; @@ -99,8 +113,228 @@ int main(int argc, char *argv[]) { printf(" -\n"); } - r = 0; + return 0; +} + +static int monitor(sd_bus *bus, char *argv[]) { + char **i; + int r; + + STRV_FOREACH(i, argv+1) { + _cleanup_free_ char *m = NULL; + + if (!service_name_is_valid(*i)) { + log_error("Invalid service name '%s'", *i); + return -EINVAL; + } + + m = strjoin("sender='", *i, "'", NULL); + if (!m) + return log_oom(); + + r = sd_bus_add_match(bus, m, NULL, NULL); + if (r < 0) { + log_error("Failed to add match: %s", strerror(-r)); + return r; + } + } + + STRV_FOREACH(i, arg_matches) { + r = sd_bus_add_match(bus, *i, NULL, NULL); + if (r < 0) { + log_error("Failed to add match: %s", strerror(-r)); + return r; + } + } + + for (;;) { + _cleanup_bus_message_unref_ sd_bus_message *m = NULL; + + r = sd_bus_process(bus, &m); + if (r < 0) { + log_error("Failed to process bus: %s", strerror(-r)); + return r; + } + + if (m) { + bus_message_dump(m); + continue; + } + + if (r > 0) + continue; + + r = sd_bus_wait(bus, (uint64_t) -1); + if (r < 0) { + log_error("Failed to wait for bus: %s", strerror(-r)); + return r; + } + } + + return -EINVAL; +} + +static int help(void) { + + printf("%s [OPTIONS...] {COMMAND} ...\n\n" + "Introspect the bus.\n\n" + " -h --help Show this help\n" + " --version Show package version\n" + " --system Connect to system bus\n" + " --user Connect to user bus\n" + " --address=ADDRESS Connect to bus specified by address\n" + " --no-unique Only show well-known names\n" + " --match=MATCH Only show matching messages\n" + " --no-pager Do not pipe output into a pager\n\n" + "Commands:\n" + " list List bus names\n" + " monitor [SERVICE...] Show bus traffic\n", + program_invocation_short_name); + + return 0; +} + +static int parse_argv(int argc, char *argv[]) { + + enum { + ARG_VERSION = 0x100, + ARG_NO_PAGER, + ARG_SYSTEM, + ARG_USER, + ARG_ADDRESS, + ARG_MATCH, + ARG_NO_UNIQUE + }; + + static const struct option options[] = { + { "help", no_argument, NULL, 'h' }, + { "version", no_argument, NULL, ARG_VERSION }, + { "no-pager", no_argument, NULL, ARG_NO_PAGER }, + { "system", no_argument, NULL, ARG_SYSTEM }, + { "user", no_argument, NULL, ARG_USER }, + { "address", required_argument, NULL, ARG_ADDRESS }, + { "no-unique", no_argument, NULL, ARG_NO_UNIQUE }, + { "match", required_argument, NULL, ARG_MATCH }, + { NULL, 0, NULL, 0 }, + }; + + int c; + + assert(argc >= 0); + assert(argv); + + while ((c = getopt_long(argc, argv, "h", options, NULL)) >= 0) { + + switch (c) { + + case 'h': + return help(); + + case ARG_VERSION: + puts(PACKAGE_STRING); + puts(SYSTEMD_FEATURES); + return 0; + + case ARG_NO_PAGER: + arg_no_pager = true; + break; + + case ARG_USER: + arg_user = true; + break; + + case ARG_SYSTEM: + arg_user = false; + break; + + case ARG_ADDRESS: + arg_address = optarg; + break; + + case ARG_NO_UNIQUE: + arg_no_unique = true; + break; + + case ARG_MATCH: + if (strv_extend(&arg_matches, optarg) < 0) + return log_oom(); + break; + + case '?': + return -EINVAL; + + default: + log_error("Unknown option code %c", c); + return -EINVAL; + } + } + + return 1; +} + +static int busctl_main(sd_bus *bus, int argc, char *argv[]) { + assert(bus); + + if (optind >= argc || + streq(argv[optind], "list")) + return list_bus_names(bus, argv + optind); + + if (streq(argv[optind], "monitor")) + return monitor(bus, argv + optind); + + if (streq(argv[optind], "help")) + return help(); + + log_error("Unknown command '%s'", argv[optind]); + return -EINVAL; +} + +int main(int argc, char *argv[]) { + _cleanup_bus_unref_ sd_bus *bus = NULL; + int r; + + log_parse_environment(); + log_open(); + + r = parse_argv(argc, argv); + if (r <= 0) + goto finish; + + if (arg_address) { + r = sd_bus_new(&bus); + if (r < 0) { + log_error("Failed to allocate bus: %s", strerror(-r)); + goto finish; + } + + r = sd_bus_set_address(bus, arg_address); + if (r < 0) { + log_error("Failed to set address: %s", strerror(-r)); + goto finish; + } + + r = sd_bus_set_bus_client(bus, true); + if (r < 0) { + log_error("Failed to set bus client: %s", strerror(-r)); + goto finish; + } + + r = sd_bus_start(bus); + } else if (arg_user) + r = sd_bus_open_user(&bus); + else + r = sd_bus_open_system(&bus); + + if (r < 0) { + log_error("Failed to connect to bus: %s", strerror(-r)); + goto finish; + } + + r = busctl_main(bus, argc, argv); + +finish: + pager_close(); + strv_free(arg_matches); -fail: return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; } -- cgit v1.2.1 From 391a4f72422ab18c0a6b5f291fa47f8d606b9e14 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 24 Apr 2013 12:56:47 -0300 Subject: inhbit: show comm field of inhibiting processes --- src/login/inhibit.c | 8 ++++++-- src/login/loginctl.c | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/login/inhibit.c b/src/login/inhibit.c index fe108c6ef0..29e50c1447 100644 --- a/src/login/inhibit.c +++ b/src/login/inhibit.c @@ -96,6 +96,7 @@ static int print_inhibitors(DBusConnection *bus, DBusError *error) { dbus_message_iter_recurse(&iter, &sub); while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { const char *what, *who, *why, *mode; + _cleanup_free_ char *comm = NULL, *u = NULL; dbus_uint32_t uid, pid; if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRUCT) @@ -111,11 +112,14 @@ static int print_inhibitors(DBusConnection *bus, DBusError *error) { bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_UINT32, &pid, false) < 0) return -EIO; - printf(" Who: %s (UID %lu, PID %lu)\n" + get_process_comm(pid, &comm); + u = uid_to_name(uid); + + printf(" Who: %s (UID %lu/%s, PID %lu/%s)\n" " What: %s\n" " Why: %s\n" " Mode: %s\n\n", - who, (unsigned long) uid, (unsigned long) pid, + who, (unsigned long) uid, strna(u), (unsigned long) pid, strna(comm), what, why, mode); diff --git a/src/login/loginctl.c b/src/login/loginctl.c index 36c65bc8d0..caaea8dfaa 100644 --- a/src/login/loginctl.c +++ b/src/login/loginctl.c @@ -1296,7 +1296,7 @@ static int help(void) { " -p --property=NAME Show only properties by this name\n" " -a --all Show all properties, including empty ones\n" " --kill-who=WHO Who to send signal to\n" - " --full Do not ellipsize output\n" + " --full Do not ellipsize output\n" " -s --signal=SIGNAL Which signal to send\n" " --no-ask-password Don't prompt for password\n" " -H --host=[USER@]HOST Show information for remote host\n" -- cgit v1.2.1 From 842865365e598a090045894f8990fd384e801ccb Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 24 Apr 2013 15:23:01 -0300 Subject: logind: don't busy loop if a job is still running but the delay timeout expires --- src/core/dbus-job.c | 17 +++++++---------- src/login/logind-dbus.c | 3 +-- src/login/logind.c | 2 +- 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/src/core/dbus-job.c b/src/core/dbus-job.c index 096542be39..98ccfa62ec 100644 --- a/src/core/dbus-job.c +++ b/src/core/dbus-job.c @@ -218,7 +218,7 @@ const DBusObjectPathVTable bus_job_vtable = { }; static int job_send_message(Job *j, DBusMessage* (*new_message)(Job *j)) { - DBusMessage *m = NULL; + _cleanup_dbus_message_unref_ DBusMessage *m = NULL; int r; assert(j); @@ -227,9 +227,9 @@ static int job_send_message(Job *j, DBusMessage* (*new_message)(Job *j)) { if (bus_has_subscriber(j->manager) || j->forgot_bus_clients) { m = new_message(j); if (!m) - goto oom; + return -ENOMEM; + r = bus_broadcast(j->manager, m); - dbus_message_unref(m); if (r < 0) return r; @@ -238,18 +238,19 @@ static int job_send_message(Job *j, DBusMessage* (*new_message)(Job *j)) { * to the client(s) which created the job */ JobBusClient *cl; assert(j->bus_client_list); + LIST_FOREACH(client, cl, j->bus_client_list) { assert(cl->bus); m = new_message(j); if (!m) - goto oom; + return -ENOMEM; if (!dbus_message_set_destination(m, cl->name)) - goto oom; + return -ENOMEM; if (!dbus_connection_send(cl->bus, m, NULL)) - goto oom; + return -ENOMEM; dbus_message_unref(m); m = NULL; @@ -257,10 +258,6 @@ static int job_send_message(Job *j, DBusMessage* (*new_message)(Job *j)) { } return 0; -oom: - if (m) - dbus_message_unref(m); - return -ENOMEM; } static DBusMessage* new_change_signal_message(Job *j) { diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 05cc1fdd13..68e499f52c 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -2400,7 +2400,6 @@ DBusHandlerResult bus_message_filter( log_error("Failed to parse JobRemoved message: %s", bus_error_message(&error)); else if (m->action_job && streq(m->action_job, path)) { - log_info("Operation finished."); /* Tell people that they now may take a lock again */ @@ -2441,7 +2440,7 @@ int manager_dispatch_delayed(Manager *manager) { assert(manager); - if (!manager->action_unit || manager->action_job) + if (manager->action_what == 0 || manager->action_job) return 0; /* Continue delay? */ diff --git a/src/login/logind.c b/src/login/logind.c index 3b9da19858..536612cbd2 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -1626,7 +1626,7 @@ int manager_run(Manager *m) { manager_gc(m, true); - if (m->action_what != 0) { + if (m->action_what != 0 && !m->action_job) { usec_t x, y; x = now(CLOCK_MONOTONIC); -- cgit v1.2.1 From 2b77f67e78827cc7e85fb43b05d3e1623b31a1bf Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 24 Apr 2013 15:44:28 -0300 Subject: fileio: unify how we chop off whitespace from key and value in parse_env_file_internal() --- TODO | 2 -- src/shared/fileio.c | 46 ++++++++++++++++++++++++++++++---------------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/TODO b/TODO index aa2c1cea94..9a23ab5eb6 100644 --- a/TODO +++ b/TODO @@ -29,8 +29,6 @@ Features: * see if we can fix https://bugs.freedesktop.org/show_bug.cgi?id=63672 without dropping the location cache entirely. -* truncate whitespace of var names the same way as values in parse_env_file_internal() - * dbus: when a unit failed to load (i.e. is in UNIT_ERROR state), we should be able to safely try another attempt when the bus call LoadUnit() is invoked. diff --git a/src/shared/fileio.c b/src/shared/fileio.c index 337b9e4147..48dd44239f 100644 --- a/src/shared/fileio.c +++ b/src/shared/fileio.c @@ -177,7 +177,7 @@ static int parse_env_file_internal( void *userdata) { _cleanup_free_ char *contents = NULL, *key = NULL; - size_t key_alloc = 0, n_key = 0, value_alloc = 0, n_value = 0, last_whitespace = (size_t) -1; + size_t key_alloc = 0, n_key = 0, value_alloc = 0, n_value = 0, last_value_whitespace = (size_t) -1, last_key_whitespace = (size_t) -1; char *p, *value = NULL; int r; @@ -212,6 +212,8 @@ static int parse_env_file_internal( state = COMMENT; else if (!strchr(WHITESPACE, c)) { state = KEY; + last_key_whitespace = (size_t) -1; + if (!greedy_realloc((void**) &key, &key_alloc, n_key+2)) { r = -ENOMEM; goto fail; @@ -225,9 +227,15 @@ static int parse_env_file_internal( if (strchr(newline, c)) { state = PRE_KEY; n_key = 0; - } else if (c == '=') + } else if (c == '=') { state = PRE_VALUE; - else { + last_value_whitespace = (size_t) -1; + } else { + if (!strchr(WHITESPACE, c)) + last_key_whitespace = (size_t) -1; + else if (last_key_whitespace == (size_t) -1) + last_key_whitespace = n_key; + if (!greedy_realloc((void**) &key, &key_alloc, n_key+2)) { r = -ENOMEM; goto fail; @@ -247,8 +255,8 @@ static int parse_env_file_internal( value[n_value] = 0; /* strip trailing whitespace from key */ - while(n_key && strchr(WHITESPACE, key[--n_key])) - key[n_key]=0; + if (last_key_whitespace != (size_t) -1) + key[last_key_whitespace] = 0; r = push(key, value, userdata); if (r < 0) @@ -257,6 +265,7 @@ static int parse_env_file_internal( n_key = 0; value = NULL; value_alloc = n_value = 0; + } else if (c == '\'') state = SINGLE_QUOTE_VALUE; else if (c == '\"') @@ -285,13 +294,13 @@ static int parse_env_file_internal( if (value) value[n_value] = 0; - /* Chomp off trailing whitespace */ - if (last_whitespace != (size_t) -1) - value[last_whitespace] = 0; + /* Chomp off trailing whitespace from value */ + if (last_value_whitespace != (size_t) -1) + value[last_value_whitespace] = 0; /* strip trailing whitespace from key */ - while(n_key && strchr(WHITESPACE, key[--n_key])) - key[n_key]=0; + if (last_key_whitespace != (size_t) -1) + key[last_key_whitespace] = 0; r = push(key, value, userdata); if (r < 0) @@ -300,14 +309,15 @@ static int parse_env_file_internal( n_key = 0; value = NULL; value_alloc = n_value = 0; + } else if (c == '\\') { state = VALUE_ESCAPE; - last_whitespace = (size_t) -1; + last_value_whitespace = (size_t) -1; } else { if (!strchr(WHITESPACE, c)) - last_whitespace = (size_t) -1; - else if (last_whitespace == (size_t) -1) - last_whitespace = n_value; + last_value_whitespace = (size_t) -1; + else if (last_value_whitespace == (size_t) -1) + last_value_whitespace = n_value; if (!greedy_realloc((void**) &value, &value_alloc, n_value+2)) { r = -ENOMEM; @@ -417,9 +427,13 @@ static int parse_env_file_internal( if (value) value[n_value] = 0; + if (state == VALUE) + if (last_value_whitespace != (size_t) -1) + value[last_value_whitespace] = 0; + /* strip trailing whitespace from key */ - while(n_key && strchr(WHITESPACE, key[--n_key])) - key[n_key]=0; + if (last_key_whitespace != (size_t) -1) + key[last_key_whitespace] = 0; r = push(key, value, userdata); if (r < 0) -- cgit v1.2.1 From e8a7a315391a6a07897122725cd707f4e9ce63d7 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 24 Apr 2013 17:18:01 -0300 Subject: nss-myhostname: resolve 'localhost' so that /etc/hosts becomes optional This makes sure nss-myhostname not only resolves the local host name to 127.0.0.2/::1 but also the host name 'localhost: to 127.0.0.1/::1. This makes installation of /etc/passwd optional, as it usually only includes a mapping for 'localhost'. This change also resolves ::1 to the local hostname (as before), but also lists 'localhost' as an alias. This means look-ups are now fully reversible, even though they are 1:n mappings. Finally, the module will no longer erroneously claim that local IP addresses which aren't on the loopback device were. --- TODO | 8 +- src/nss-myhostname/nss-myhostname.c | 180 ++++++++++++++++++++++++++---------- 2 files changed, 134 insertions(+), 54 deletions(-) diff --git a/TODO b/TODO index 9a23ab5eb6..88a3b2cb45 100644 --- a/TODO +++ b/TODO @@ -26,6 +26,10 @@ Fedora 19: Features: +* nss-myhostname: investigate whether there's any point in also + resolving localhost6, localhost.localdomain, ip6-localhost or any of + the other names often seen in /etc/hosts + * see if we can fix https://bugs.freedesktop.org/show_bug.cgi?id=63672 without dropping the location cache entirely. @@ -47,14 +51,10 @@ Features: * timedatctl, localectl: possibly make some commands work without the daemon, for chroot situations... -* logind: consider making suspend inhibitor locks non-session specific, but keep suspend-key inhibitor locks session specific - * logind: add Suspend() bus calls which take timestamps to fix double suspend issues when somebody hits suspend and closes laptop quickly. * we need dynamic units -* nss-myhostname should also resolve 'localhost' so that /etc/hosts becomes optional. - * add s.th. like "systemctl set-log-level debug" * sd-login: allow enumerating machines and add inotify iface diff --git a/src/nss-myhostname/nss-myhostname.c b/src/nss-myhostname/nss-myhostname.c index 8699098b54..60e256d54f 100644 --- a/src/nss-myhostname/nss-myhostname.c +++ b/src/nss-myhostname/nss-myhostname.c @@ -32,7 +32,6 @@ #include "ifconf.h" #include "macro.h" -#include "util.h" /* Ensure that glibc's assert is used. We cannot use assert from macro.h, as * libnss_myhostname will be linked into arbitrary programs which will, in turn @@ -101,31 +100,46 @@ enum nss_status _nss_myhostname_gethostbyname4_r( unsigned lo_ifi; char hn[HOST_NAME_MAX+1] = {}; + const char *canonical = NULL; size_t l, idx, ms; char *r_name; struct gaih_addrtuple *r_tuple, *r_tuple_prev = NULL; struct address *addresses = NULL, *a; unsigned n_addresses = 0, n; + uint32_t local_address_ipv4; - if (gethostname(hn, sizeof(hn)-1) < 0) { - *errnop = errno; - *h_errnop = NO_RECOVERY; - return NSS_STATUS_UNAVAIL; - } + if (strcasecmp(name, "localhost") == 0) { + /* We respond to 'localhost', so that /etc/hosts + * is optional */ - if (strcasecmp(name, hn) != 0) { - *errnop = ENOENT; - *h_errnop = HOST_NOT_FOUND; - return NSS_STATUS_NOTFOUND; - } + canonical = "localhost"; + local_address_ipv4 = htonl(INADDR_LOOPBACK); + } else { + /* We respond to our local host name */ - /* If this fails, n_addresses is 0. Which is fine */ - ifconf_acquire_addresses(&addresses, &n_addresses); + if (gethostname(hn, sizeof(hn)-1) < 0) { + *errnop = errno; + *h_errnop = NO_RECOVERY; + return NSS_STATUS_UNAVAIL; + } + + if (strcasecmp(name, hn) != 0) { + *errnop = ENOENT; + *h_errnop = HOST_NOT_FOUND; + return NSS_STATUS_NOTFOUND; + } + + /* If this fails, n_addresses is 0. Which is fine */ + ifconf_acquire_addresses(&addresses, &n_addresses); + + canonical = hn; + local_address_ipv4 = LOCALADDRESS_IPV4; + } /* If this call fails we fill in 0 as scope. Which is fine */ - lo_ifi = if_nametoindex(LOOPBACK_INTERFACE); + lo_ifi = n_addresses <= 0 ? if_nametoindex(LOOPBACK_INTERFACE) : 0; - l = strlen(hn); + l = strlen(canonical); ms = ALIGN(l+1)+ALIGN(sizeof(struct gaih_addrtuple))*(n_addresses > 0 ? n_addresses : 2); if (buflen < ms) { *errnop = ENOMEM; @@ -136,7 +150,7 @@ enum nss_status _nss_myhostname_gethostbyname4_r( /* First, fill in hostname */ r_name = buffer; - memcpy(r_name, hn, l+1); + memcpy(r_name, canonical, l+1); idx = ALIGN(l+1); if (n_addresses <= 0) { @@ -156,7 +170,7 @@ enum nss_status _nss_myhostname_gethostbyname4_r( r_tuple->next = r_tuple_prev; r_tuple->name = r_name; r_tuple->family = AF_INET; - *(uint32_t*) r_tuple->addr = LOCALADDRESS_IPV4; + *(uint32_t*) r_tuple->addr = local_address_ipv4; r_tuple->scopeid = (uint32_t) lo_ifi; idx += ALIGN(sizeof(struct gaih_addrtuple)); @@ -194,31 +208,34 @@ enum nss_status _nss_myhostname_gethostbyname4_r( } static enum nss_status fill_in_hostent( - const char *hn, + const char *canonical, const char *additional, int af, + struct address *addresses, unsigned n_addresses, + uint32_t local_address_ipv4, struct hostent *result, char *buffer, size_t buflen, int *errnop, int *h_errnop, int32_t *ttlp, char **canonp) { - size_t l, idx, ms; - char *r_addr, *r_name, *r_aliases, *r_addr_list; + size_t l_canonical, l_additional, idx, ms; + char *r_addr, *r_name, *r_aliases, *r_alias = NULL, *r_addr_list; size_t alen; - struct address *addresses = NULL, *a; - unsigned n_addresses = 0, n, c; + struct address *a; + unsigned n, c; alen = PROTO_ADDRESS_SIZE(af); - ifconf_acquire_addresses(&addresses, &n_addresses); - for (a = addresses, n = 0, c = 0; n < n_addresses; a++, n++) if (af == a->family) c++; - l = strlen(hn); - ms = ALIGN(l+1)+ + l_canonical = strlen(canonical); + l_additional = additional ? strlen(additional) : 0; + ms = ALIGN(l_canonical+1)+ + (additional ? ALIGN(l_additional+1) : 0) + sizeof(char*)+ + (additional ? sizeof(char*) : 0) + (c > 0 ? c : 1)*ALIGN(alen)+ (c > 0 ? c+1 : 2)*sizeof(char*); @@ -229,15 +246,27 @@ static enum nss_status fill_in_hostent( return NSS_STATUS_TRYAGAIN; } - /* First, fill in hostname */ + /* First, fill in hostnames */ r_name = buffer; - memcpy(r_name, hn, l+1); - idx = ALIGN(l+1); + memcpy(r_name, canonical, l_canonical+1); + idx = ALIGN(l_canonical+1); - /* Second, create (empty) aliases array */ + if (additional) { + r_alias = buffer + idx; + memcpy(r_alias, additional, l_additional+1); + idx += ALIGN(l_additional+1); + } + + /* Second, create aliases array */ r_aliases = buffer + idx; - *(char**) r_aliases = NULL; - idx += sizeof(char*); + if (additional) { + ((char**) r_aliases)[0] = r_alias; + ((char**) r_aliases)[1] = NULL; + idx += 2*sizeof(char*); + } else { + ((char**) r_aliases)[0] = NULL; + idx += sizeof(char*); + } /* Third, add addresses */ r_addr = buffer + idx; @@ -256,7 +285,7 @@ static enum nss_status fill_in_hostent( idx += c*ALIGN(alen); } else { if (af == AF_INET) - *(uint32_t*) r_addr = LOCALADDRESS_IPV4; + *(uint32_t*) r_addr = local_address_ipv4; else memcpy(r_addr, LOCALADDRESS_IPV6, 16); @@ -316,6 +345,10 @@ enum nss_status _nss_myhostname_gethostbyname3_r( char **canonp) { char hn[HOST_NAME_MAX+1] = {}; + struct address *addresses = NULL; + unsigned n_addresses = 0; + const char *canonical, *additional = NULL; + uint32_t local_address_ipv4; if (af == AF_UNSPEC) af = AF_INET; @@ -326,19 +359,39 @@ enum nss_status _nss_myhostname_gethostbyname3_r( return NSS_STATUS_UNAVAIL; } - if (gethostname(hn, sizeof(hn)-1) < 0) { - *errnop = errno; - *h_errnop = NO_RECOVERY; - return NSS_STATUS_UNAVAIL; - } + if (strcasecmp(name, "localhost") == 0) { + canonical = "localhost"; + local_address_ipv4 = htonl(INADDR_LOOPBACK); + } else { + if (gethostname(hn, sizeof(hn)-1) < 0) { + *errnop = errno; + *h_errnop = NO_RECOVERY; + return NSS_STATUS_UNAVAIL; + } - if (strcasecmp(name, hn) != 0) { - *errnop = ENOENT; - *h_errnop = HOST_NOT_FOUND; - return NSS_STATUS_NOTFOUND; + if (strcasecmp(name, hn) != 0) { + *errnop = ENOENT; + *h_errnop = HOST_NOT_FOUND; + return NSS_STATUS_NOTFOUND; + } + + ifconf_acquire_addresses(&addresses, &n_addresses); + + canonical = hn; + additional = n_addresses <= 0 && af == AF_INET6 ? "localhost" : NULL; + local_address_ipv4 = LOCALADDRESS_IPV4; } - return fill_in_hostent(hn, af, host, buffer, buflen, errnop, h_errnop, ttlp, canonp); + return fill_in_hostent( + canonical, additional, + af, + addresses, n_addresses, + local_address_ipv4, + host, + buffer, buflen, + errnop, h_errnop, + ttlp, + canonp); } enum nss_status _nss_myhostname_gethostbyname2_r( @@ -383,9 +436,11 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r( int32_t *ttlp) { char hn[HOST_NAME_MAX+1] = {}; - _cleanup_free_ struct address *addresses = NULL; + struct address *addresses = NULL; struct address *a; unsigned n_addresses = 0, n; + uint32_t local_address_ipv4 = LOCALADDRESS_IPV4; + const char *canonical = NULL, *additional = NULL; if (len != PROTO_ADDRESS_SIZE(af)) { *errnop = EINVAL; @@ -398,10 +453,18 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r( if ((*(uint32_t*) addr) == LOCALADDRESS_IPV4) goto found; + if ((*(uint32_t*) addr) == htonl(INADDR_LOOPBACK)) { + canonical = "localhost"; + local_address_ipv4 = htonl(INADDR_LOOPBACK); + goto found; + } + } else if (af == AF_INET6) { - if (memcmp(addr, LOCALADDRESS_IPV6, 16) == 0) + if (memcmp(addr, LOCALADDRESS_IPV6, 16) == 0) { + additional = "localhost"; goto found; + } } else { *errnop = EAFNOSUPPORT; @@ -422,17 +485,34 @@ enum nss_status _nss_myhostname_gethostbyaddr2_r( *errnop = ENOENT; *h_errnop = HOST_NOT_FOUND; + free(addresses); + return NSS_STATUS_NOTFOUND; found: - if (gethostname(hn, sizeof(hn)-1) < 0) { - *errnop = errno; - *h_errnop = NO_RECOVERY; + if (!canonical) { + if (gethostname(hn, sizeof(hn)-1) < 0) { + *errnop = errno; + *h_errnop = NO_RECOVERY; - return NSS_STATUS_UNAVAIL; + free(addresses); + + return NSS_STATUS_UNAVAIL; + } + + canonical = hn; } - return fill_in_hostent(hn, af, host, buffer, buflen, errnop, h_errnop, ttlp, NULL); + return fill_in_hostent( + canonical, additional, + af, + addresses, n_addresses, + local_address_ipv4, + host, + buffer, buflen, + errnop, h_errnop, + ttlp, + NULL); } -- cgit v1.2.1 From a20affe2f0fb4c8d488155a0b860549e9389f32a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 24 Apr 2013 17:54:17 -0300 Subject: login: add new call sd_get_machine_names() to get a list of current virtual machines and containers --- man/sd_get_seats.xml | 27 ++++++++++++++++++++------- src/login/libsystemd-login.sym | 5 +++++ src/login/sd-login.c | 37 +++++++++++++++++++++++++++++++++++++ src/login/test-login.c | 12 ++++++++++-- src/systemd/sd-login.h | 3 +++ 5 files changed, 75 insertions(+), 9 deletions(-) diff --git a/man/sd_get_seats.xml b/man/sd_get_seats.xml index 4bdb5c3e9e..9bc866dc68 100644 --- a/man/sd_get_seats.xml +++ b/man/sd_get_seats.xml @@ -46,7 +46,8 @@ sd_get_seats sd_get_sessions sd_get_uids - Determine available seats, sessions and logged in users + sd_get_machine_names + Determine available seats, sessions, logged in users and virtual machines/containers @@ -68,6 +69,11 @@ uid_t** users + + int sd_get_machine_names + char*** machines + + @@ -90,6 +96,11 @@ Similar, sd_get_uids() may be used to determine all Unix users who currently have login sessions. + Similar, + sd_get_machine_names() may be + used to determine all current virtual machines and + containers on the system. + Note that the returned lists are not sorted and in an undefined order. @@ -97,18 +108,20 @@ Return Value On success sd_get_seats(), - sd_get_sessions() and - sd_get_uids() return the number - of entries in the arrays. On failure, these calls - return a negative errno-style error code. + sd_get_sessions(), + sd_get_uids() and + sd_get_machine_names() return the + number of entries in the arrays. On failure, these + calls return a negative errno-style error code. Notes The sd_get_seats(), - sd_get_sessions() and - sd_get_uids() interfaces + sd_get_sessions(), + sd_get_uids() and + sd_get_machine_names() interfaces are available as shared library, which can be compiled and linked to with the libsystemd-login diff --git a/src/login/libsystemd-login.sym b/src/login/libsystemd-login.sym index f4cd209700..925fb91095 100644 --- a/src/login/libsystemd-login.sym +++ b/src/login/libsystemd-login.sym @@ -70,3 +70,8 @@ global: sd_pid_get_user_unit; sd_pid_get_machine_name; } LIBSYSTEMD_LOGIN_201; + +LIBSYSTEMD_LOGIN_203 { +global: + sd_get_machine_names; +} LIBSYSTEMD_LOGIN_202; diff --git a/src/login/sd-login.c b/src/login/sd-login.c index 157b7e0fb4..35deb85f2d 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -591,6 +591,43 @@ _public_ int sd_get_uids(uid_t **users) { return r; } +int sd_get_machine_names(char ***machines) { + _cleanup_closedir_ DIR *d = NULL; + _cleanup_strv_free_ char **l = NULL; + _cleanup_free_ char *md = NULL; + char *n; + int c = 0, r; + + r = cg_get_machine_path(&md); + if (r < 0) + return r; + + r = cg_enumerate_subgroups(SYSTEMD_CGROUP_CONTROLLER, md, &d); + if (r < 0) + return r; + + while ((r = cg_read_subgroup(d, &n)) > 0) { + + r = strv_push(&l, n); + if (r < 0) { + free(n); + return -ENOMEM; + } + + c++; + } + + if (r < 0) + return r; + + if (machines) { + *machines = l; + l = NULL; + } + + return c; +} + static inline int MONITOR_TO_FD(sd_login_monitor *m) { return (int) (unsigned long) m - 1; } diff --git a/src/login/test-login.c b/src/login/test-login.c index e4d0c93378..945cb38be9 100644 --- a/src/login/test-login.c +++ b/src/login/test-login.c @@ -35,7 +35,7 @@ int main(int argc, char* argv[]) { char *state; char *session2; char *t; - char **seats, **sessions; + char **seats, **sessions, **machines; uid_t *uids; unsigned n; struct pollfd pollfd; @@ -180,9 +180,17 @@ int main(int argc, char* argv[]) { printf("n_uids = %i\n", r); assert_se(sd_get_uids(NULL) == r); - r = sd_login_monitor_new("session", &m); + r = sd_get_machine_names(&machines); assert_se(r >= 0); + assert_se(r == (int) strv_length(machines)); + assert_se(t = strv_join(machines, ", ")); + strv_free(machines); + printf("n_machines = %i\n", r); + printf("machines = %s\n", t); + free(t); + r = sd_login_monitor_new("session", &m); + assert_se(r >= 0); for (n = 0; n < 5; n++) { usec_t timeout, nw; diff --git a/src/systemd/sd-login.h b/src/systemd/sd-login.h index 1083742beb..2415039410 100644 --- a/src/systemd/sd-login.h +++ b/src/systemd/sd-login.h @@ -150,6 +150,9 @@ int sd_get_sessions(char ***sessions); * users. If users is NULL only returns the number of users. */ int sd_get_uids(uid_t **users); +/* Get all running virtual machines/containers */ +int sd_get_machine_names(char ***machines); + /* Monitor object */ typedef struct sd_login_monitor sd_login_monitor; -- cgit v1.2.1 From e10375f2c0f5dd0dc8508f3ca165eb8aa63c64fb Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 24 Apr 2013 17:54:55 -0300 Subject: login: allow watching virtual machines with sd_get_machine_names() --- man/sd_login_monitor_new.xml | 31 +++++++++++++++++-------------- src/login/sd-login.c | 21 +++++++++++++++++++++ src/systemd/sd-login.h | 3 ++- 3 files changed, 40 insertions(+), 15 deletions(-) diff --git a/man/sd_login_monitor_new.xml b/man/sd_login_monitor_new.xml index b187ad0dbe..26af0ea247 100644 --- a/man/sd_login_monitor_new.xml +++ b/man/sd_login_monitor_new.xml @@ -50,7 +50,7 @@ sd_login_monitor_get_events sd_login_monitor_get_timeout sd_login_monitor - Monitor login sessions, seats and users + Monitor login sessions, seats, users and virtual machines/containers @@ -96,23 +96,26 @@ Description sd_login_monitor_new() may - be used to monitor login sessions, users and seats. Via - a monitor object a file descriptor can be integrated - into an application defined event loop which is woken - up each time a user logs in, logs out or a seat is - added or removed, or a session, user, or seat changes - state otherwise. The first parameter takes a string - which can be seat (to get + be used to monitor login sessions, users, seats and + virtual machines/containers. Via a monitor object a + file descriptor can be integrated into an application + defined event loop which is woken up each time a user + logs in, logs out or a seat is added or removed, or a + session, user, seat or virtual machine/container + changes state otherwise. The first parameter takes a + string which can be seat (to get only notifications about seats being added, removed or changed), session (to get only notifications about sessions being created or removed - or changed) or uid (to get only + or changed), uid (to get only notifications when a user changes state in respect to - logins). If notifications shall be generated in all - these conditions, NULL may be passed. Note that in the - future additional categories may be defined. The - second parameter returns a monitor object and needs to - be freed with the + logins) or machine (to get only + notifications when a virtual machine or container is + started or stopped). If notifications shall be + generated in all these conditions, NULL may be + passed. Note that in the future additional categories + may be defined. The second parameter returns a monitor + object and needs to be freed with the sd_login_monitor_unref() call after use. diff --git a/src/login/sd-login.c b/src/login/sd-login.c index 35deb85f2d..bc8cd8ae8c 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -677,6 +677,27 @@ _public_ int sd_login_monitor_new(const char *category, sd_login_monitor **m) { good = true; } + if (!category || streq(category, "machine")) { + _cleanup_free_ char *md = NULL, *p = NULL; + int r; + + r = cg_get_machine_path(&md); + if (r < 0) + return r; + + r = cg_get_path(SYSTEMD_CGROUP_CONTROLLER, md, NULL, &p); + if (r < 0) + return r; + + k = inotify_add_watch(fd, p, IN_MOVED_TO|IN_CREATE|IN_DELETE); + if (k < 0) { + close_nointr_nofail(fd); + return -errno; + } + + good = true; + } + if (!good) { close_nointr(fd); return -EINVAL; diff --git a/src/systemd/sd-login.h b/src/systemd/sd-login.h index 2415039410..4855e327a1 100644 --- a/src/systemd/sd-login.h +++ b/src/systemd/sd-login.h @@ -157,7 +157,8 @@ int sd_get_machine_names(char ***machines); typedef struct sd_login_monitor sd_login_monitor; /* Create a new monitor. Category must be NULL, "seat", "session", - * "uid" to get monitor events for the specific category (or all). */ + * "uid", "machine" to get monitor events for the specific category + * (or all). */ int sd_login_monitor_new(const char *category, sd_login_monitor** ret); /* Destroys the passed monitor. Returns NULL. */ -- cgit v1.2.1 From 78edb35ab4f4227485cb9ec816b43c37e0d5e62a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 24 Apr 2013 19:01:29 -0300 Subject: cgroup: always validate cgroup controller names Let's better be safe than sorry. --- TODO | 4 --- src/core/unit.c | 26 ++++++++------- src/core/unit.h | 1 - src/shared/cgroup-util.c | 77 ++++++++++++++++++++++++++++++++++----------- src/shared/cgroup-util.h | 2 ++ src/test/test-cgroup-util.c | 14 +++++++++ 6 files changed, 89 insertions(+), 35 deletions(-) diff --git a/TODO b/TODO index 88a3b2cb45..cfd42ce745 100644 --- a/TODO +++ b/TODO @@ -57,10 +57,6 @@ Features: * add s.th. like "systemctl set-log-level debug" -* sd-login: allow enumerating machines and add inotify iface - -* cgroup-util: verify syntax of cgroup controllers - * cgtop: make cgtop useful in a container * make sure cg_pid_get_path() works properly for co-mounted controllers diff --git a/src/core/unit.c b/src/core/unit.c index 4b9abf32dc..c0c3ce90a7 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1938,7 +1938,7 @@ char *unit_dbus_path(Unit *u) { return unit_dbus_path_from_name(u->id); } -int unit_add_cgroup(Unit *u, CGroupBonding *b) { +static int unit_add_cgroup(Unit *u, CGroupBonding *b) { int r; assert(u); @@ -2100,6 +2100,9 @@ static int unit_add_one_default_cgroup(Unit *u, const char *controller) { assert(u); + if (controller && !cg_controller_is_valid(controller, true)) + return -EINVAL; + if (!controller) controller = SYSTEMD_CGROUP_CONTROLLER; @@ -2202,13 +2205,15 @@ int unit_add_cgroup_attribute( controller = c; } - if (!controller || streq(controller, SYSTEMD_CGROUP_CONTROLLER)) + if (!controller || + streq(controller, SYSTEMD_CGROUP_CONTROLLER) || + streq(controller, "systemd")) return -EINVAL; if (!filename_is_safe(name)) return -EINVAL; - if (!filename_is_safe(controller)) + if (!cg_controller_is_valid(controller, false)) return -EINVAL; /* Check if this attribute already exists. Note that we will @@ -2276,42 +2281,39 @@ int unit_add_cgroup_attribute( } int unit_load_related_unit(Unit *u, const char *type, Unit **_found) { - char *t; + _cleanup_free_ char *t = NULL; int r; assert(u); assert(type); assert(_found); - if (!(t = unit_name_change_suffix(u->id, type))) + t = unit_name_change_suffix(u->id, type); + if (!t) return -ENOMEM; assert(!unit_has_name(u, t)); r = manager_load_unit(u->manager, t, NULL, NULL, _found); - free(t); - assert(r < 0 || *_found != u); - return r; } int unit_get_related_unit(Unit *u, const char *type, Unit **_found) { + _cleanup_free_ char *t = NULL; Unit *found; - char *t; assert(u); assert(type); assert(_found); - if (!(t = unit_name_change_suffix(u->id, type))) + t = unit_name_change_suffix(u->id, type); + if (!t) return -ENOMEM; assert(!unit_has_name(u, t)); found = manager_get_unit(u->manager, t); - free(t); - if (!found) return -ENOENT; diff --git a/src/core/unit.h b/src/core/unit.h index 51a8364d63..6bfe58c8bf 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -450,7 +450,6 @@ int unit_add_two_dependencies_by_name_inverse(Unit *u, UnitDependency d, UnitDep int unit_add_exec_dependencies(Unit *u, ExecContext *c); -int unit_add_cgroup(Unit *u, CGroupBonding *b); int unit_add_cgroup_from_text(Unit *u, const char *name, bool overwrite, CGroupBonding **ret); int unit_add_default_cgroups(Unit *u); CGroupBonding* unit_get_default_cgroup(Unit *u); diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 9ec4f40c88..b79a24a495 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -510,6 +510,9 @@ int cg_get_path(const char *controller, const char *path, const char *suffix, ch assert(fs); + if (controller && !cg_controller_is_valid(controller, true)) + return -EINVAL; + if (_unlikely_(!good)) { int r; @@ -546,7 +549,7 @@ int cg_get_path_and_check(const char *controller, const char *path, const char * assert(fs); - if (isempty(controller)) + if (!cg_controller_is_valid(controller, true)) return -EINVAL; /* Normalize the controller syntax */ @@ -741,6 +744,9 @@ int cg_pid_get_path(const char *controller, pid_t pid, char **path) { assert(path); assert(pid >= 0); + if (controller && !cg_controller_is_valid(controller, true)) + return -EINVAL; + if (!controller) controller = SYSTEMD_CGROUP_CONTROLLER; @@ -933,7 +939,7 @@ int cg_split_spec(const char *spec, char **controller, char **path) { e = strchr(spec, ':'); if (!e) { - if (!filename_is_safe(spec)) + if (!cg_controller_is_valid(spec, true)) return -EINVAL; if (controller) { @@ -953,7 +959,7 @@ int cg_split_spec(const char *spec, char **controller, char **path) { t = strndup(spec, e-spec); if (!t) return -ENOMEM; - if (!filename_is_safe(t)) { + if (!cg_controller_is_valid(t, true)) { free(t); return -EINVAL; } @@ -987,18 +993,19 @@ int cg_join_spec(const char *controller, const char *path, char **spec) { assert(path); + if (!controller) controller = "systemd"; - else if (controller[0] == 0 || - strchr(controller, ':') || - strchr(controller, '/')) - return -EINVAL; + else { + if (!cg_controller_is_valid(controller, true)) + return -EINVAL; + + controller = normalize_controller(controller); + } if (!path_is_absolute(path)) return -EINVAL; - controller = normalize_controller(controller); - s = strjoin(controller, ":", path, NULL); if (!s) return -ENOMEM; @@ -1008,7 +1015,8 @@ int cg_join_spec(const char *controller, const char *path, char **spec) { } int cg_mangle_path(const char *path, char **result) { - char *t, *c, *p; + _cleanup_free_ char *c = NULL, *p = NULL; + char *t; int r; assert(path); @@ -1030,11 +1038,7 @@ int cg_mangle_path(const char *path, char **result) { if (r < 0) return r; - r = cg_get_path(c ? c : SYSTEMD_CGROUP_CONTROLLER, p ? p : "/", NULL, result); - free(c); - free(p); - - return r; + return cg_get_path(c ? c : SYSTEMD_CGROUP_CONTROLLER, p ? p : "/", NULL, result); } int cg_get_system_path(char **path) { @@ -1138,14 +1142,20 @@ char **cg_shorten_controllers(char **controllers) { p = normalize_controller(*f); - if (streq(*f, "systemd")) { + if (streq(p, "systemd")) { + free(*f); + continue; + } + + if (!cg_controller_is_valid(p, true)) { + log_warning("Controller %s is not valid, removing from controllers list.", p); free(*f); continue; } r = check_hierarchy(p); if (r < 0) { - log_debug("Controller %s is not available, removing from controllers list.", *f); + log_debug("Controller %s is not available, removing from controllers list.", p); free(*f); continue; } @@ -1457,7 +1467,7 @@ int cg_controller_from_attr(const char *attr, char **controller) { if (!c) return -ENOMEM; - if (!filename_is_safe(c)) { + if (!cg_controller_is_valid(c, false)) { free(c); return -EINVAL; } @@ -1517,3 +1527,34 @@ char *cg_unescape(const char *p) { return (char*) p; } + +#define CONTROLLER_VALID \ + "0123456789" \ + "abcdefghijklmnopqrstuvwxyz" \ + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \ + "_" + +bool cg_controller_is_valid(const char *p, bool allow_named) { + const char *t, *s; + + if (!p) + return false; + + if (allow_named) { + s = startswith(p, "name="); + if (s) + p = s; + } + + if (*p == 0 || *p == '_') + return false; + + for (t = p; *t; t++) + if (!strchr(CONTROLLER_VALID, *t)) + return false; + + if (t - p > FILENAME_MAX) + return false; + + return true; +} diff --git a/src/shared/cgroup-util.h b/src/shared/cgroup-util.h index 2099f934b4..a2ee72d67f 100644 --- a/src/shared/cgroup-util.h +++ b/src/shared/cgroup-util.h @@ -96,3 +96,5 @@ int cg_controller_from_attr(const char *attr, char **controller); char *cg_escape(const char *p); char *cg_unescape(const char *p); + +bool cg_controller_is_valid(const char *p, bool allow_named); diff --git a/src/test/test-cgroup-util.c b/src/test/test-cgroup-util.c index 95cede7a22..6726f8fb13 100644 --- a/src/test/test-cgroup-util.c +++ b/src/test/test-cgroup-util.c @@ -153,6 +153,19 @@ static void test_escape(void) { test_escape_one("_foobar", "__foobar"); } +static void test_controller_is_valid(void) { + assert_se(cg_controller_is_valid("foobar", false)); + assert_se(cg_controller_is_valid("foo_bar", false)); + assert_se(cg_controller_is_valid("name=foo", true)); + assert_se(!cg_controller_is_valid("", false)); + assert_se(!cg_controller_is_valid("name=", true)); + assert_se(!cg_controller_is_valid("=", false)); + assert_se(!cg_controller_is_valid("cpu,cpuacct", false)); + assert_se(!cg_controller_is_valid("_", false)); + assert_se(!cg_controller_is_valid("_foobar", false)); + assert_se(!cg_controller_is_valid("tatü", false)); +} + int main(void) { test_path_decode_unit(); test_path_get_unit(); @@ -160,6 +173,7 @@ int main(void) { test_get_paths(); test_proc(); test_escape(); + test_controller_is_valid(); return 0; } -- cgit v1.2.1 From e7ff4e7fe9f3abd2297e4ef7b95dcb2804e051c3 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 24 Apr 2013 13:04:27 -0700 Subject: journal: remove build warning when SELinux is disabled A small patch to remove a build warnining when SELinux is disabled. --- src/journal/journald-server.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 4134e9fc67..8eab5ad677 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -508,7 +508,7 @@ static void dispatch_message_real( source_time[sizeof("_SOURCE_REALTIME_TIMESTAMP=") + DECIMAL_STR_MAX(usec_t)], boot_id[sizeof("_BOOT_ID=") + 32] = "_BOOT_ID=", machine_id[sizeof("_MACHINE_ID=") + 32] = "_MACHINE_ID="; - char *comm, *exe, *cmdline, *cgroup, *session, *unit, *selinux_context, *hostname; + char *comm, *exe, *cmdline, *cgroup, *session, *unit, *hostname; sd_id128_t id; int r; char *t, *c; @@ -615,7 +615,7 @@ static void dispatch_message_real( #ifdef HAVE_SELINUX if (label) { - selinux_context = alloca(sizeof("_SELINUX_CONTEXT=") + label_len); + char *selinux_context = alloca(sizeof("_SELINUX_CONTEXT=") + label_len); *((char*) mempcpy(stpcpy(selinux_context, "_SELINUX_CONTEXT="), label, label_len)) = 0; IOVEC_SET_STRING(iovec[n++], selinux_context); @@ -623,7 +623,8 @@ static void dispatch_message_real( security_context_t con; if (getpidcon(ucred->pid, &con) >= 0) { - selinux_context = strappenda("_SELINUX_CONTEXT=", con); + char *selinux_context = strappenda("_SELINUX_CONTEXT=", con); + freecon(con); IOVEC_SET_STRING(iovec[n++], selinux_context); } -- cgit v1.2.1 From 60b6991a4dd687097bbc4f1e1ef7585efee079d9 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 25 Apr 2013 02:18:32 +0200 Subject: kdbus: update kdbus.h from upstream --- src/libsystemd-bus/kdbus.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsystemd-bus/kdbus.h b/src/libsystemd-bus/kdbus.h index 0589370125..4b3acae0e4 100644 --- a/src/libsystemd-bus/kdbus.h +++ b/src/libsystemd-bus/kdbus.h @@ -387,7 +387,7 @@ struct kdbus_cmd_match { struct kdbus_cmd_monitor { __u64 id; /* We allow setting the monitor flag of other peers */ - int enabled; /* A boolean to enable/disable monitoring */ + unsigned int enabled; /* A boolean to enable/disable monitoring */ }; /* FD states: -- cgit v1.2.1 From db5c0122853a9ecf1cc92e6593461932df2fa866 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 24 Apr 2013 19:53:16 -0300 Subject: conf-parser: restrict .include usage Disallow recursive .include, and make it unavailable in anything but unit files. --- TODO | 6 ------ src/bootchart/bootchart.c | 2 +- src/core/load-dropin.c | 2 +- src/core/load-fragment.c | 2 +- src/core/main.c | 2 +- src/journal/journald-server.c | 4 ++-- src/login/logind.c | 10 ++++------ src/shared/conf-parser.c | 17 +++++++++++++---- src/shared/conf-parser.h | 1 + src/shared/install.c | 2 +- src/tty-ask-password-agent/tty-ask-password-agent.c | 2 +- 11 files changed, 26 insertions(+), 24 deletions(-) diff --git a/TODO b/TODO index cfd42ce745..3133ec7bdb 100644 --- a/TODO +++ b/TODO @@ -100,10 +100,6 @@ Features: /lib/modules/$(uname -r)/modules.devname and apply ACLs to them if they have TAG=="uaccess" in udev rules. -* matching against units is currently broken in journalctl. We really - need another AND level in the expressions, - i.e. sd_journal_add_conjunction(). - * add ConditionArchitecture= or so * teach ConditionKernelCommandLine= globs or regexes (in order to match foobar={no,0,off}) @@ -125,8 +121,6 @@ Features: * man: remove .include documentation, and instead push people to use .d/*.conf -* disallow .include from included files - * safe_atod() is too naive, as it is vulnerable to locale parameters, should be locale independent. * think about requeuing jobs when daemon-reload is issued? usecase: diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index 002f3df8b6..b73319123f 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -124,7 +124,7 @@ static void parse_conf(void) { return; r = config_parse(NULL, BOOTCHART_CONF, f, - NULL, config_item_table_lookup, (void*) items, true, NULL); + NULL, config_item_table_lookup, (void*) items, true, false, NULL); if (r < 0) log_warning("Failed to parse configuration file: %s", strerror(-r)); diff --git a/src/core/load-dropin.c b/src/core/load-dropin.c index 67774d5238..0318296f1f 100644 --- a/src/core/load-dropin.c +++ b/src/core/load-dropin.c @@ -200,7 +200,7 @@ int unit_load_dropin(Unit *u) { STRV_FOREACH(f, u->dropin_paths) { r = config_parse(u->id, *f, NULL, UNIT_VTABLE(u)->sections, config_item_perf_lookup, - (void*) load_fragment_gperf_lookup, false, u); + (void*) load_fragment_gperf_lookup, false, false, u); if (r < 0) return r; } diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 3d23372630..e2015ed58f 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -2270,7 +2270,7 @@ static int load_from_path(Unit *u, const char *path) { /* Now, parse the file contents */ r = config_parse(u->id, filename, f, UNIT_VTABLE(u)->sections, config_item_perf_lookup, - (void*) load_fragment_gperf_lookup, false, u); + (void*) load_fragment_gperf_lookup, false, true, u); if (r < 0) goto finish; diff --git a/src/core/main.c b/src/core/main.c index ab2ac00d76..695e232514 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -677,7 +677,7 @@ static int parse_config_file(void) { return 0; } - r = config_parse(NULL, fn, f, "Manager\0", config_item_table_lookup, (void*) items, false, NULL); + r = config_parse(NULL, fn, f, "Manager\0", config_item_table_lookup, (void*) items, false, false, NULL); if (r < 0) log_warning("Failed to parse configuration file: %s", strerror(-r)); diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 8eab5ad677..1b5a22b122 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -1271,7 +1271,7 @@ static int server_parse_proc_cmdline(Server *s) { } static int server_parse_config_file(Server *s) { - static const char *fn = "/etc/systemd/journald.conf"; + static const char fn[] = "/etc/systemd/journald.conf"; _cleanup_fclose_ FILE *f = NULL; int r; @@ -1287,7 +1287,7 @@ static int server_parse_config_file(Server *s) { } r = config_parse(NULL, fn, f, "Journal\0", config_item_perf_lookup, - (void*) journald_gperf_lookup, false, s); + (void*) journald_gperf_lookup, false, false, s); if (r < 0) log_warning("Failed to parse configuration file: %s", strerror(-r)); diff --git a/src/login/logind.c b/src/login/logind.c index 536612cbd2..5a394401dc 100644 --- a/src/login/logind.c +++ b/src/login/logind.c @@ -1683,13 +1683,12 @@ int manager_run(Manager *m) { } static int manager_parse_config_file(Manager *m) { - FILE *f; - const char *fn; + static const char fn[] = "/etc/systemd/logind.conf"; + _cleanup_fclose_ FILE *f = NULL; int r; assert(m); - fn = "/etc/systemd/logind.conf"; f = fopen(fn, "re"); if (!f) { if (errno == ENOENT) @@ -1699,12 +1698,11 @@ static int manager_parse_config_file(Manager *m) { return -errno; } - r = config_parse(NULL, fn, f, "Login\0", config_item_perf_lookup, (void*) logind_gperf_lookup, false, m); + r = config_parse(NULL, fn, f, "Login\0", config_item_perf_lookup, + (void*) logind_gperf_lookup, false, false, m); if (r < 0) log_warning("Failed to parse configuration file: %s", strerror(-r)); - fclose(f); - return r; } diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index 3d14c58d13..2303d9a50b 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -70,7 +70,7 @@ int log_syntax_internal(const char *unit, int level, "ERRNO=%d", error > 0 ? error : EINVAL, "MESSAGE=[%s:%u] %s", config_file, config_line, msg, NULL); - log_info("logged here: '%s': %d", msg, r); + return r; } @@ -199,6 +199,7 @@ static int parse_line(const char* unit, ConfigItemLookup lookup, void *table, bool relaxed, + bool allow_include, char **section, char *l, void *userdata) { @@ -219,13 +220,19 @@ static int parse_line(const char* unit, return 0; if (startswith(l, ".include ")) { - _cleanup_free_ char *fn; + _cleanup_free_ char *fn = NULL; + + if (!allow_include) { + log_syntax(unit, LOG_ERR, filename, line, EBADMSG, + ".include not allowed here. Ignoring."); + return 0; + } fn = file_in_same_dir(filename, strstrip(l+9)); if (!fn) return -ENOMEM; - return config_parse(unit, fn, NULL, sections, lookup, table, relaxed, userdata); + return config_parse(unit, fn, NULL, sections, lookup, table, relaxed, false, userdata); } if (*l == '[') { @@ -299,11 +306,12 @@ int config_parse(const char *unit, ConfigItemLookup lookup, void *table, bool relaxed, + bool allow_include, void *userdata) { - unsigned line = 0; _cleanup_free_ char *section = NULL, *continuation = NULL; _cleanup_fclose_ FILE *ours = NULL; + unsigned line = 0; int r; assert(filename); @@ -370,6 +378,7 @@ int config_parse(const char *unit, lookup, table, relaxed, + allow_include, §ion, p, userdata); diff --git a/src/shared/conf-parser.h b/src/shared/conf-parser.h index 9ea84e652b..08428a514a 100644 --- a/src/shared/conf-parser.h +++ b/src/shared/conf-parser.h @@ -87,6 +87,7 @@ int config_parse(const char *unit, ConfigItemLookup lookup, void *table, bool relaxed, + bool allow_include, void *userdata); /* Generic parsers */ diff --git a/src/shared/install.c b/src/shared/install.c index b22019d7b5..edf4d2a9fe 100644 --- a/src/shared/install.c +++ b/src/shared/install.c @@ -1015,7 +1015,7 @@ static int unit_file_load( } r = config_parse(NULL, path, f, NULL, - config_item_table_lookup, (void*) items, true, info); + config_item_table_lookup, (void*) items, true, true, info); if (r < 0) return r; diff --git a/src/tty-ask-password-agent/tty-ask-password-agent.c b/src/tty-ask-password-agent/tty-ask-password-agent.c index 6888a64d4d..f463662d6b 100644 --- a/src/tty-ask-password-agent/tty-ask-password-agent.c +++ b/src/tty-ask-password-agent/tty-ask-password-agent.c @@ -275,7 +275,7 @@ static int parse_password(const char *filename, char **wall) { return -errno; } - r = config_parse(NULL, filename, f, NULL, config_item_table_lookup, (void*) items, true, NULL); + r = config_parse(NULL, filename, f, NULL, config_item_table_lookup, (void*) items, true, false, NULL); if (r < 0) { log_error("Failed to parse password file %s: %s", filename, strerror(-r)); goto finish; -- cgit v1.2.1 From d6dd604b551987b411ec8930c23bd5c9c93ef864 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 25 Apr 2013 00:04:02 -0300 Subject: util: rework safe_atod() to be locale-independent This adds some syntactic sugar with a macro RUN_WITH_LOCALE() that reset the thread-specific locale temporarily. --- TODO | 2 -- src/shared/util.c | 6 ++++-- src/shared/util.h | 35 +++++++++++++++++++++++++++++++---- src/test/test-util.c | 38 +++++++++++++++++++++++++++++++++++++- 4 files changed, 72 insertions(+), 9 deletions(-) diff --git a/TODO b/TODO index 3133ec7bdb..80a591f017 100644 --- a/TODO +++ b/TODO @@ -121,8 +121,6 @@ Features: * man: remove .include documentation, and instead push people to use .d/*.conf -* safe_atod() is too naive, as it is vulnerable to locale parameters, should be locale independent. - * think about requeuing jobs when daemon-reload is issued? usecase: the initrd issues a reload after fstab from the host is accessible and we might want to requeue the mounts local-fs acquired through diff --git a/src/shared/util.c b/src/shared/util.c index a6ec79a292..38ee493a81 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -372,8 +372,10 @@ int safe_atod(const char *s, double *ret_d) { assert(s); assert(ret_d); - errno = 0; - d = strtod(s, &x); + RUN_WITH_LOCALE(LC_NUMERIC_MASK, "C") { + errno = 0; + d = strtod(s, &x); + } if (!x || x == s || *x || errno) return errno ? -errno : -EINVAL; diff --git a/src/shared/util.h b/src/shared/util.h index 6575f56811..d76f41e777 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -38,6 +38,7 @@ #include #include #include +#include #include "macro.h" #include "time-util.h" @@ -643,19 +644,19 @@ static inline void _reset_errno_(int *saved_errno) { errno = *saved_errno; } -#define PROTECT_ERRNO __attribute__((cleanup(_reset_errno_))) int _saved_errno_ = errno +#define PROTECT_ERRNO _cleanup_(_reset_errno_) int _saved_errno_ = errno -struct umask_struct { +struct _umask_struct_ { mode_t mask; bool quit; }; -static inline void _reset_umask_(struct umask_struct *s) { +static inline void _reset_umask_(struct _umask_struct_ *s) { umask(s->mask); }; #define RUN_WITH_UMASK(mask) \ - for (__attribute__((cleanup(_reset_umask_))) struct umask_struct _saved_umask_ = { umask(mask), false }; \ + for (_cleanup_(_reset_umask_) struct _umask_struct_ _saved_umask_ = { umask(mask), false }; \ !_saved_umask_.quit ; \ _saved_umask_.quit = true) @@ -706,3 +707,29 @@ int unlink_noerrno(const char *path); sprintf(_r_, "/proc/%lu/" field, (unsigned long) _pid_); \ _r_; \ }) + +struct _locale_struct_ { + locale_t saved_locale; + locale_t new_locale; + bool quit; +}; + +static inline void _reset_locale_(struct _locale_struct_ *s) { + PROTECT_ERRNO; + if (s->saved_locale != (locale_t) 0) + uselocale(s->saved_locale); + if (s->new_locale != (locale_t) 0) + freelocale(s->new_locale); +} + +#define RUN_WITH_LOCALE(mask, loc) \ + for (_cleanup_(_reset_locale_) struct _locale_struct_ _saved_locale_ = { (locale_t) 0, (locale_t) 0, false }; \ + ({ \ + if (!_saved_locale_.quit) { \ + PROTECT_ERRNO; \ + _saved_locale_.new_locale = newlocale((mask), (loc), (locale_t) 0); \ + if (_saved_locale_.new_locale != (locale_t) 0) \ + _saved_locale_.saved_locale = uselocale(_saved_locale_.new_locale); \ + } \ + !_saved_locale_.quit; }) ; \ + _saved_locale_.quit = true) diff --git a/src/test/test-util.c b/src/test/test-util.c index 83959c0950..66a10ead46 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "util.h" @@ -145,13 +146,48 @@ static void test_safe_atolli(void) { static void test_safe_atod(void) { int r; double d; + char *e; + + r = safe_atod("junk", &d); + assert_se(r == -EINVAL); r = safe_atod("0.2244", &d); assert_se(r == 0); assert_se(abs(d - 0.2244) < 0.000001); - r = safe_atod("junk", &d); + r = safe_atod("0,5", &d); assert_se(r == -EINVAL); + + errno = 0; + strtod("0,5", &e); + assert_se(*e == ','); + + /* Check if this really is locale independent */ + setlocale(LC_NUMERIC, "de_DE.utf8"); + + r = safe_atod("0.2244", &d); + assert_se(r == 0); + assert_se(abs(d - 0.2244) < 0.000001); + + r = safe_atod("0,5", &d); + assert_se(r == -EINVAL); + + errno = 0; + assert_se(abs(strtod("0,5", &e) - 0.5) < 0.00001); + + /* And check again, reset */ + setlocale(LC_NUMERIC, "C"); + + r = safe_atod("0.2244", &d); + assert_se(r == 0); + assert_se(abs(d - 0.2244) < 0.000001); + + r = safe_atod("0,5", &d); + assert_se(r == -EINVAL); + + errno = 0; + strtod("0,5", &e); + assert_se(*e == ','); } static void test_strappend(void) { -- cgit v1.2.1 From c3a170f3d3358135a39ac6eafe66f18aef0bd67d Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Wed, 24 Apr 2013 17:15:47 +0200 Subject: systemd: record the timestamps as early as possible The time for systemd initialization and selinux policy loading is accounted to the initrd or the kernel, which is wrong. Instead of: Startup finished in 5.559s (firmware) + 36ms (loader) + 665ms (kernel) + 975ms (initrd) + 1.410s (userspace) = 8.647s the more correct output is: Startup finished in 5.559s (firmware) + 36ms (loader) + 665ms (kernel) + 475ms (initrd) + 1.910s (userspace) = 8.647s --- src/core/main.c | 34 +++++++++++++++++++++++++++------- src/core/manager.c | 9 --------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/core/main.c b/src/core/main.c index 695e232514..22cec4ed15 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -69,6 +69,7 @@ #include "ima-setup.h" #include "fileio.h" #include "smack-setup.h" +#include "efivars.h" static enum { ACTION_RUN, @@ -1236,6 +1237,10 @@ int main(int argc, char *argv[]) { bool reexecute = false; const char *shutdown_verb = NULL; dual_timestamp initrd_timestamp = { 0ULL, 0ULL }; + dual_timestamp userspace_timestamp = { 0ULL, 0ULL }; + dual_timestamp kernel_timestamp = { 0ULL, 0ULL }; + dual_timestamp firmware_timestamp = { 0ULL, 0ULL }; + dual_timestamp loader_timestamp = { 0ULL, 0ULL }; static char systemd[] = "systemd"; bool skip_setup = false; int j; @@ -1257,6 +1262,9 @@ int main(int argc, char *argv[]) { } #endif + dual_timestamp_from_monotonic(&kernel_timestamp, 0); + dual_timestamp_get(&userspace_timestamp); + /* Determine if this is a reexecution or normal bootup. We do * the full command line parsing much later, so let's just * have a quick peek here. */ @@ -1281,7 +1289,9 @@ int main(int argc, char *argv[]) { log_show_color(isatty(STDERR_FILENO) > 0); if (getpid() == 1 && detect_container(NULL) <= 0) { - +#ifdef ENABLE_EFI + efi_get_boot_timestamps(&userspace_timestamp, &firmware_timestamp, &loader_timestamp); +#endif /* Running outside of a container as PID 1 */ arg_running_as = SYSTEMD_SYSTEM; make_null_stdio(); @@ -1291,7 +1301,7 @@ int main(int argc, char *argv[]) { if (in_initrd()) { char *rd_timestamp = NULL; - dual_timestamp_get(&initrd_timestamp); + initrd_timestamp = userspace_timestamp; asprintf(&rd_timestamp, "%llu %llu", (unsigned long long) initrd_timestamp.realtime, (unsigned long long) initrd_timestamp.monotonic); @@ -1351,7 +1361,6 @@ int main(int argc, char *argv[]) { log_set_target(LOG_TARGET_JOURNAL_OR_KMSG); } else if (getpid() == 1) { - /* Running inside a container, as PID 1 */ arg_running_as = SYSTEMD_SYSTEM; log_set_target(LOG_TARGET_CONSOLE); @@ -1360,12 +1369,21 @@ int main(int argc, char *argv[]) { /* For the later on, see above... */ log_set_target(LOG_TARGET_JOURNAL); - } else { + /* clear the kernel timestamp, + * because we are in a container */ + kernel_timestamp.monotonic = 0ULL; + kernel_timestamp.realtime = 0ULL; + } else { /* Running as user instance */ arg_running_as = SYSTEMD_USER; log_set_target(LOG_TARGET_AUTO); log_open(); + + /* clear the kernel timestamp, + * because we are not PID 1 */ + kernel_timestamp.monotonic = 0ULL; + kernel_timestamp.realtime = 0ULL; } /* Initialize default unit */ @@ -1607,12 +1625,14 @@ int main(int argc, char *argv[]) { m->default_std_error = arg_default_std_error; m->runtime_watchdog = arg_runtime_watchdog; m->shutdown_watchdog = arg_shutdown_watchdog; + m->userspace_timestamp = userspace_timestamp; + m->kernel_timestamp = kernel_timestamp; + m->firmware_timestamp = firmware_timestamp; + m->loader_timestamp = loader_timestamp; + m->initrd_timestamp = initrd_timestamp; manager_set_default_rlimits(m, arg_default_rlimit); - if (dual_timestamp_is_set(&initrd_timestamp)) - m->initrd_timestamp = initrd_timestamp; - if (arg_default_controllers) manager_set_default_controllers(m, arg_default_controllers); diff --git a/src/core/manager.c b/src/core/manager.c index b1a22890fb..2265ef7173 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -70,7 +70,6 @@ #include "cgroup-util.h" #include "path-util.h" #include "audit-fd.h" -#include "efivars.h" #include "env-util.h" /* As soon as 16 units are in our GC queue, make sure to run a gc sweep */ @@ -440,14 +439,6 @@ int manager_new(SystemdRunningAs running_as, Manager **_m) { if (!m) return -ENOMEM; - dual_timestamp_get(&m->userspace_timestamp); - if (detect_container(NULL) <= 0) { - dual_timestamp_from_monotonic(&m->kernel_timestamp, 0); -#ifdef ENABLE_EFI - efi_get_boot_timestamps(&m->userspace_timestamp, &m->firmware_timestamp, &m->loader_timestamp); -#endif - } - m->running_as = running_as; m->name_data_slot = m->conn_data_slot = m->subscribed_data_slot = -1; m->exit_code = _MANAGER_EXIT_CODE_INVALID; -- cgit v1.2.1 From 67fb4482acb0ecccb8a30e7ca49e5de28ba49eaf Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 25 Apr 2013 02:02:40 +0200 Subject: always unconditionally create /dev/rtc and use it internally Partially revert 2b3c81b02fa5dd47b19558c7684e113f36a48486, which tried to avoid inconsistent rules about when and how to create the /dev/rtc symlink. Instead of conditionally or not creating the /dev/rtc link at all, now always create it with additional and more reliable udev rules. First try to find the "system rtc" with the hctosys flag, if this is not found, fall back to create the link for /dev/rtc0. Our code now never actively searches for the "system rtc" it can always use /dev/rtc. --- rules/50-udev-default.rules | 4 +++ src/shared/hwclock.c | 80 ++------------------------------------------- 2 files changed, 6 insertions(+), 78 deletions(-) diff --git a/rules/50-udev-default.rules b/rules/50-udev-default.rules index 234dc3b915..f7647893d4 100644 --- a/rules/50-udev-default.rules +++ b/rules/50-udev-default.rules @@ -2,6 +2,10 @@ SUBSYSTEM=="virtio-ports", KERNEL=="vport*", ATTR{name}=="?*", SYMLINK+="virtio-ports/$attr{name}" +# select "system RTC" or just use the first one +SUBSYSTEM=="rtc", ATTR{hctosys}=="1", SYMLINK+="rtc" +SUBSYSTEM=="rtc", KERNEL=="rtc0", SYMLINK+="rtc", OPTIONS+="link_priority=-100" + SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", IMPORT{builtin}="usb_id", IMPORT{builtin}="hwdb --subsystem=usb" SUBSYSTEM=="input", ENV{ID_INPUT}=="", IMPORT{builtin}="input_id" ENV{MODALIAS}!="", IMPORT{builtin}="hwdb --subsystem=$env{SUBSYSTEM}" diff --git a/src/shared/hwclock.c b/src/shared/hwclock.c index 837f51f947..cc11faa6c3 100644 --- a/src/shared/hwclock.c +++ b/src/shared/hwclock.c @@ -43,89 +43,13 @@ #include "hwclock.h" #include "fileio.h" -static int rtc_open(int flags) { - int fd; - DIR *d; - - /* - * Some "chaotic platforms" have multiple RTCs and we need to - * find the "system RTC", which is in some setups /dev/rtc1. - * - * First, we try to find the RTC which has hctosys=1 set. If we - * don't find any we just take the first RTC that exists at all, - * then try to open /dev/rtc0. - */ - d = opendir("/sys/class/rtc"); - if (!d) - goto fallback; - - for (;;) { - char *p, *v; - struct dirent *de; - union dirent_storage buf; - int r; - - r = readdir_r(d, &buf.de, &de); - if (r != 0) - goto fallback; - - if (!de) - goto fallback; - - if (ignore_file(de->d_name)) - continue; - - p = strjoin("/sys/class/rtc/", de->d_name, "/hctosys", NULL); - if (!p) { - closedir(d); - return -ENOMEM; - } - - r = read_one_line_file(p, &v); - free(p); - - if (r < 0) - continue; - - r = parse_boolean(v); - free(v); - - if (r <= 0) - continue; - - p = strappend("/dev/", de->d_name); - if (!p) { - closedir(d); - return -ENOMEM; - } - - fd = open(p, flags); - free(p); - - if (fd >= 0) { - closedir(d); - return fd; - } - } - -fallback: - if (d) - closedir(d); - - fd = open("/dev/rtc0", flags); - if (fd < 0) - return -errno; - - return fd; -} - int hwclock_get_time(struct tm *tm) { int fd; int err = 0; assert(tm); - fd = rtc_open(O_RDONLY|O_CLOEXEC); + fd = open("/dev/rtc", O_RDONLY|O_CLOEXEC); if (fd < 0) return -errno; @@ -149,7 +73,7 @@ int hwclock_set_time(const struct tm *tm) { assert(tm); - fd = rtc_open(O_RDONLY|O_CLOEXEC); + fd = open("/dev/rtc", O_RDONLY|O_CLOEXEC); if (fd < 0) return -errno; -- cgit v1.2.1 From 31afa0a44c2d7f93d837c840cdbd623982ac165f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 25 Apr 2013 21:57:41 -0300 Subject: unit: rework stop pending logic When a trigger unit wants to know if a stop is queued for it, we should just check precisely that and do not check whether it is actually stopped already. This is because we use these checks usually from state change calls where the state variables are not updated yet. This change splits unit_pending_inactive() into two calls unit_inactive_or_pending() and unit_stop_pending(). The former checks state and pending jobs, the latter only pending jobs. --- src/core/automount.c | 2 +- src/core/dbus.c | 4 ++-- src/core/manager.c | 4 ++-- src/core/manager.h | 2 +- src/core/path.c | 2 +- src/core/socket.c | 4 ++-- src/core/timer.c | 2 +- src/core/unit.c | 29 +++++++++++++++++++---------- src/core/unit.h | 5 +++-- 9 files changed, 32 insertions(+), 22 deletions(-) diff --git a/src/core/automount.c b/src/core/automount.c index e6eedda96f..a20d5340f2 100644 --- a/src/core/automount.c +++ b/src/core/automount.c @@ -593,7 +593,7 @@ static void automount_enter_runnning(Automount *a) { /* We don't take mount requests anymore if we are supposed to * shut down anyway */ - if (unit_pending_inactive(UNIT(a))) { + if (unit_stop_pending(UNIT(a))) { log_debug_unit(UNIT(a)->id, "Suppressing automount request on %s since unit stop is scheduled.", UNIT(a)->id); automount_send_ready(a, -EHOSTDOWN); diff --git a/src/core/dbus.c b/src/core/dbus.c index 67ab1ae7f7..5a61a1a654 100644 --- a/src/core/dbus.c +++ b/src/core/dbus.c @@ -363,8 +363,8 @@ static DBusHandlerResult api_bus_message_filter(DBusConnection *connection, DBus log_debug("Got D-Bus activation request for %s", name); - if (manager_unit_pending_inactive(m, SPECIAL_DBUS_SERVICE) || - manager_unit_pending_inactive(m, SPECIAL_DBUS_SOCKET)) { + if (manager_unit_inactive_or_pending(m, SPECIAL_DBUS_SERVICE) || + manager_unit_inactive_or_pending(m, SPECIAL_DBUS_SOCKET)) { r = -EADDRNOTAVAIL; dbus_set_error(&error, BUS_ERROR_SHUTTING_DOWN, "Refusing activation, D-Bus is shutting down."); } else { diff --git a/src/core/manager.c b/src/core/manager.c index 2265ef7173..c7f8f20a70 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -2328,7 +2328,7 @@ void manager_reset_failed(Manager *m) { unit_reset_failed(u); } -bool manager_unit_pending_inactive(Manager *m, const char *name) { +bool manager_unit_inactive_or_pending(Manager *m, const char *name) { Unit *u; assert(m); @@ -2339,7 +2339,7 @@ bool manager_unit_pending_inactive(Manager *m, const char *name) { if (!u) return true; - return unit_pending_inactive(u); + return unit_inactive_or_pending(u); } void manager_check_finished(Manager *m) { diff --git a/src/core/manager.h b/src/core/manager.h index 649a8aac51..a0be2927f7 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -291,7 +291,7 @@ void manager_reset_failed(Manager *m); void manager_send_unit_audit(Manager *m, Unit *u, int type, bool success); void manager_send_unit_plymouth(Manager *m, Unit *u); -bool manager_unit_pending_inactive(Manager *m, const char *name); +bool manager_unit_inactive_or_pending(Manager *m, const char *name); void manager_check_finished(Manager *m); diff --git a/src/core/path.c b/src/core/path.c index e1330f6c95..ab1fe2eb65 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -523,7 +523,7 @@ static void path_enter_running(Path *p) { dbus_error_init(&error); /* Don't start job if we are supposed to go down */ - if (unit_pending_inactive(UNIT(p))) + if (unit_stop_pending(UNIT(p))) return; r = manager_add_job(UNIT(p)->manager, JOB_START, UNIT_TRIGGER(UNIT(p)), diff --git a/src/core/socket.c b/src/core/socket.c index 9f1af1e28f..c276afe38f 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -1447,7 +1447,7 @@ static void socket_enter_running(Socket *s, int cfd) { /* We don't take connections anymore if we are supposed to * shut down anyway */ - if (unit_pending_inactive(UNIT(s))) { + if (unit_stop_pending(UNIT(s))) { log_debug_unit(UNIT(s)->id, "Suppressing connection request on %s since unit stop is scheduled.", UNIT(s)->id); @@ -1478,7 +1478,7 @@ static void socket_enter_running(Socket *s, int cfd) { /* If there's already a start pending don't bother to * do anything */ SET_FOREACH(u, UNIT(s)->dependencies[UNIT_TRIGGERS], i) - if (unit_pending_active(u)) { + if (unit_active_or_pending(u)) { pending = true; break; } diff --git a/src/core/timer.c b/src/core/timer.c index b8039d82ec..ff8c30583c 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -374,7 +374,7 @@ static void timer_enter_running(Timer *t) { dbus_error_init(&error); /* Don't start job if we are supposed to go down */ - if (unit_pending_inactive(UNIT(t))) + if (unit_stop_pending(UNIT(t))) return; r = manager_add_job(UNIT(t)->manager, JOB_START, UNIT_TRIGGER(UNIT(t)), diff --git a/src/core/unit.c b/src/core/unit.c index c0c3ce90a7..b4a4f8cd2e 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1206,19 +1206,19 @@ static void unit_check_unneeded(Unit *u) { return; SET_FOREACH(other, u->dependencies[UNIT_REQUIRED_BY], i) - if (unit_pending_active(other)) + if (unit_active_or_pending(other)) return; SET_FOREACH(other, u->dependencies[UNIT_REQUIRED_BY_OVERRIDABLE], i) - if (unit_pending_active(other)) + if (unit_active_or_pending(other)) return; SET_FOREACH(other, u->dependencies[UNIT_WANTED_BY], i) - if (unit_pending_active(other)) + if (unit_active_or_pending(other)) return; SET_FOREACH(other, u->dependencies[UNIT_BOUND_BY], i) - if (unit_pending_active(other)) + if (unit_active_or_pending(other)) return; log_info_unit(u->id, "Service %s is not needed anymore. Stopping.", u->id); @@ -2651,21 +2651,30 @@ Unit *unit_following(Unit *u) { return NULL; } -bool unit_pending_inactive(Unit *u) { +bool unit_stop_pending(Unit *u) { assert(u); - /* Returns true if the unit is inactive or going down */ + /* This call does check the current state of the unit. It's + * hence useful to be called from state change calls of the + * unit itself, where the state isn't updated yet. This is + * different from unit_inactive_or_pending() which checks both + * the current state and for a queued job. */ - if (UNIT_IS_INACTIVE_OR_DEACTIVATING(unit_active_state(u))) - return true; + return u->job && u->job->type == JOB_STOP; +} + +bool unit_inactive_or_pending(Unit *u) { + assert(u); + + /* Returns true if the unit is inactive or going down */ - if (u->job && u->job->type == JOB_STOP) + if (unit_stop_pending(u)) return true; return false; } -bool unit_pending_active(Unit *u) { +bool unit_active_or_pending(Unit *u) { assert(u); /* Returns true if the unit is active or going up */ diff --git a/src/core/unit.h b/src/core/unit.h index 6bfe58c8bf..a086538c61 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -536,8 +536,9 @@ void unit_reset_failed(Unit *u); Unit *unit_following(Unit *u); -bool unit_pending_inactive(Unit *u); -bool unit_pending_active(Unit *u); +bool unit_stop_pending(Unit *u); +bool unit_inactive_or_pending(Unit *u); +bool unit_active_or_pending(Unit *u); int unit_add_default_target_dependency(Unit *u, Unit *target); -- cgit v1.2.1 From b5edbff0356c0b161c46992d9e298866e54c448c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 22 Apr 2013 22:07:18 -0400 Subject: systemd-python: attach fields to JournalHandler, add SYSLOG_IDENTIFIER Arbitrary fields can be attached at the level of the handler, and they'll be sent with all messages from this handler. This facility is used to attach SYSLOG_IDENTIFIER to all messages, since otherwise journald attaches SYSLOG_IDENTIFIER=python or something similar, which is completely useless. --- src/python-systemd/journal.py | 42 +++++++++++++++++++++++++++++++++--------- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 6c740b08eb..7d42525ab2 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -27,7 +27,7 @@ import uuid as _uuid import traceback as _traceback import os as _os import logging as _logging -if _sys.version_info >= (3,): +if _sys.version_info >= (3,3): from collections import ChainMap as _ChainMap from syslog import (LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG) @@ -96,6 +96,11 @@ DEFAULT_CONVERTERS = { 'COREDUMP_TIMESTAMP': _convert_timestamp, } +_IDENT_LETTER = set('ABCDEFGHIJKLMNOPQRTSUVWXYZ_') + +def _valid_field_name(s): + return not (set(s) - _IDENT_LETTER) + class Reader(_Reader): """Reader allows the access and filtering of systemd journal entries. Note that in order to access the system journal, a @@ -450,12 +455,6 @@ class JournalHandler(_logging.Handler): >>> log.setLevel(logging.DEBUG) - To attach journal MESSAGE_ID, an extra field is supported: - - >>> import uuid - >>> mid = uuid.UUID('0123456789ABCDEF0123456789ABCDEF') - >>> log.warn("Message with ID", extra={'MESSAGE_ID': mid}) - To redirect all logging messages to journal regardless of where they come from, attach it to the root logger: @@ -466,12 +465,36 @@ class JournalHandler(_logging.Handler): handler class. Only standard handler configuration options are supported: `level`, `formatter`, `filters`. + To attach journal MESSAGE_ID, an extra field is supported: + + >>> import uuid + >>> mid = uuid.UUID('0123456789ABCDEF0123456789ABCDEF') + >>> log.warn("Message with ID", extra={'MESSAGE_ID': mid}) + + Fields to be attached to all messages sent through this + handler can be specified as keyword arguments. This probably + makes sense only for SYSLOG_IDENTIFIER and similar fields + which are constant for the whole program: + + >>> journal.JournalHandler(SYSLOG_IDENTIFIER='my-cool-app') + The following journal fields will be sent: `MESSAGE`, `PRIORITY`, `THREAD_NAME`, `CODE_FILE`, `CODE_LINE`, `CODE_FUNC`, `LOGGER` (name as supplied to getLogger call), - `MESSAGE_ID` (optional, see above). + `MESSAGE_ID` (optional, see above), `SYSLOG_IDENTIFIER` (defaults + to sys.argv[0]). """ + def __init__(self, level=_logging.NOTSET, **kwargs): + super(JournalHandler, self).__init__(level) + + for name in kwargs: + if not _valid_field_name(name): + raise ValueError('Invalid field name: ' + name) + if 'SYSLOG_IDENTIFIER' not in kwargs: + kwargs['SYSLOG_IDENTIFIER'] = _sys.argv[0] + self._extra = kwargs + def emit(self, record): """Write record as journal event. @@ -492,7 +515,8 @@ class JournalHandler(_logging.Handler): THREAD_NAME=record.threadName, CODE_FILE=record.pathname, CODE_LINE=record.lineno, - CODE_FUNC=record.funcName) + CODE_FUNC=record.funcName, + **self._extra) except Exception: self.handleError(record) -- cgit v1.2.1 From b231b54780dfa687fc116ed436790c87d5557188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 25 Apr 2013 19:47:43 -0400 Subject: Remove erroneous attribute((malloc)) annotations According to gcc documentation, returned pointer "cannot alias any other pointer valid when the function returns" and "the memory has undefined content". This second part is (hopefully) untrue for all those functions. --- src/shared/strv.h | 14 +++++++------- src/shared/util.h | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/shared/strv.h b/src/shared/strv.h index 92696b02fa..73ee416b1b 100644 --- a/src/shared/strv.h +++ b/src/shared/strv.h @@ -36,7 +36,7 @@ static inline void strv_freep(char ***l) { #define _cleanup_strv_free_ _cleanup_(strv_freep) -char **strv_copy(char * const *l) _malloc_; +char **strv_copy(char * const *l); unsigned strv_length(char * const *l); char **strv_merge(char **a, char **b); @@ -51,8 +51,8 @@ char **strv_uniq(char **l); #define strv_contains(l, s) (!!strv_find((l), (s))) -char **strv_new(const char *x, ...) _sentinel_ _malloc_; -char **strv_new_ap(const char *x, va_list ap) _malloc_; +char **strv_new(const char *x, ...) _sentinel_; +char **strv_new_ap(const char *x, va_list ap); static inline const char* STRV_IFNOTNULL(const char *x) { return x ? x : (const char *) -1; @@ -62,11 +62,11 @@ static inline bool strv_isempty(char * const *l) { return !l || !*l; } -char **strv_split(const char *s, const char *separator) _malloc_; -char **strv_split_quoted(const char *s) _malloc_; -char **strv_split_newlines(const char *s) _malloc_; +char **strv_split(const char *s, const char *separator); +char **strv_split_quoted(const char *s); +char **strv_split_newlines(const char *s); -char *strv_join(char **l, const char *separator) _malloc_; +char *strv_join(char **l, const char *separator); char **strv_parse_nulstr(const char *s, size_t l); char **strv_split_nulstr(const char *s); diff --git a/src/shared/util.h b/src/shared/util.h index d76f41e777..c0398f1aec 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -500,7 +500,7 @@ char *format_bytes(char *buf, size_t l, off_t t); int fd_wait_for_event(int fd, int event, usec_t timeout); -void* memdup(const void *p, size_t l) _malloc_; +void* memdup(const void *p, size_t l); int is_kernel_thread(pid_t pid); @@ -567,7 +567,7 @@ _malloc_ static inline void *malloc_multiply(size_t a, size_t b) { return malloc(a * b); } -_malloc_ static inline void *memdup_multiply(const void *p, size_t a, size_t b) { + static inline void *memdup_multiply(const void *p, size_t a, size_t b) { if (_unlikely_(b == 0 || a > ((size_t) -1) / b)) return NULL; -- cgit v1.2.1 From 750ef27274cdc274f8c6b9245d6ba0179c68fa50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 25 Apr 2013 19:59:35 -0400 Subject: Make up for attribute malloc with alloc_size It is imperative that open source code be well attributed. Sprinkle attribute((alloc_size)) here and there, telling gcc how much memory we are actually allocating. --- src/shared/macro.h | 1 + src/shared/util.h | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/shared/macro.h b/src/shared/macro.h index ac61b49588..0874102ece 100644 --- a/src/shared/macro.h +++ b/src/shared/macro.h @@ -28,6 +28,7 @@ #include #define _printf_attr_(a,b) __attribute__ ((format (printf, a, b))) +#define _alloc_(...) __attribute__ ((alloc_size(__VA_ARGS__))) #define _sentinel_ __attribute__ ((sentinel)) #define _noreturn_ __attribute__((noreturn)) #define _unused_ __attribute__ ((unused)) diff --git a/src/shared/util.h b/src/shared/util.h index c0398f1aec..69b717ed93 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -500,7 +500,7 @@ char *format_bytes(char *buf, size_t l, off_t t); int fd_wait_for_event(int fd, int event, usec_t timeout); -void* memdup(const void *p, size_t l); +void* memdup(const void *p, size_t l) _alloc_(2); int is_kernel_thread(pid_t pid); @@ -560,14 +560,14 @@ static inline void umaskp(mode_t *u) { #define _cleanup_umask_ _cleanup_(umaskp) #define _cleanup_globfree_ _cleanup_(globfree) -_malloc_ static inline void *malloc_multiply(size_t a, size_t b) { +_malloc_ _alloc_(1, 2) static inline void *malloc_multiply(size_t a, size_t b) { if (_unlikely_(b == 0 || a > ((size_t) -1) / b)) return NULL; return malloc(a * b); } - static inline void *memdup_multiply(const void *p, size_t a, size_t b) { +_alloc_(2, 3) static inline void *memdup_multiply(const void *p, size_t a, size_t b) { if (_unlikely_(b == 0 || a > ((size_t) -1) / b)) return NULL; -- cgit v1.2.1 From b1e2b33c5258f1cefcee55116ac5d049478c804d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= Date: Tue, 2 Apr 2013 04:02:58 -0300 Subject: Add some extra __attribute__ ((format)) s --- src/core/manager.h | 2 +- src/core/unit.c | 3 +++ src/core/unit.h | 2 +- src/journal/journald-server.h | 2 +- src/journal/microhttpd-util.h | 4 +++- src/shared/log.h | 6 +++--- src/shared/util.h | 4 ++-- 7 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/core/manager.h b/src/core/manager.h index a0be2927f7..b9bd2099f8 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -301,6 +301,6 @@ void manager_undo_generators(Manager *m); void manager_recheck_journal(Manager *m); void manager_set_show_status(Manager *m, bool b); -void manager_status_printf(Manager *m, bool ephemeral, const char *status, const char *format, ...); +void manager_status_printf(Manager *m, bool ephemeral, const char *status, const char *format, ...) _printf_attr_(4,5); void watch_init(Watch *w); diff --git a/src/core/unit.c b/src/core/unit.c index b4a4f8cd2e..7029b6443e 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -2576,9 +2576,12 @@ int unit_coldplug(Unit *u) { return 0; } +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wformat-nonliteral" void unit_status_printf(Unit *u, const char *status, const char *unit_status_msg_format) { manager_status_printf(u->manager, false, status, unit_status_msg_format, unit_description(u)); } +#pragma GCC diagnostic pop bool unit_need_daemon_reload(Unit *u) { _cleanup_strv_free_ char **t = NULL; diff --git a/src/core/unit.h b/src/core/unit.h index a086538c61..0f121e244e 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -528,7 +528,7 @@ int unit_add_node_link(Unit *u, const char *what, bool wants); int unit_coldplug(Unit *u); -void unit_status_printf(Unit *u, const char *status, const char *unit_status_msg_format); +void unit_status_printf(Unit *u, const char *status, const char *unit_status_msg_format) _printf_attr_(3, 0); bool unit_need_daemon_reload(Unit *u); diff --git a/src/journal/journald-server.h b/src/journal/journald-server.h index fb4e8e4c3d..86f7145292 100644 --- a/src/journal/journald-server.h +++ b/src/journal/journald-server.h @@ -130,7 +130,7 @@ typedef struct Server { #define N_IOVEC_UDEV_FIELDS 32 void server_dispatch_message(Server *s, struct iovec *iovec, unsigned n, unsigned m, struct ucred *ucred, struct timeval *tv, const char *label, size_t label_len, const char *unit_id, int priority); -void server_driver_message(Server *s, sd_id128_t message_id, const char *format, ...); +void server_driver_message(Server *s, sd_id128_t message_id, const char *format, ...) _printf_attr_(3,4); /* gperf lookup function */ const struct ConfigPerfItem* journald_gperf_lookup(const char *key, unsigned length); diff --git a/src/journal/microhttpd-util.h b/src/journal/microhttpd-util.h index d4fefa72d3..20ad76990c 100644 --- a/src/journal/microhttpd-util.h +++ b/src/journal/microhttpd-util.h @@ -23,4 +23,6 @@ #include -void microhttpd_logger(void *arg, const char *fmt, va_list ap); +#include "macro.h" + +void microhttpd_logger(void *arg, const char *fmt, va_list ap) _printf_attr_(2, 0); diff --git a/src/shared/log.h b/src/shared/log.h index 9aafcb4100..5fc89880ad 100644 --- a/src/shared/log.h +++ b/src/shared/log.h @@ -83,7 +83,7 @@ int log_metav( int line, const char *func, const char *format, - va_list ap); + va_list ap) _printf_attr_(5,0); int log_meta_object( int level, @@ -102,14 +102,14 @@ int log_metav_object( const char *object_name, const char *object, const char *format, - va_list ap); + va_list ap) _printf_attr_(7,0); int log_struct_internal( int level, const char *file, int line, const char *func, - const char *format, ...) _sentinel_; + const char *format, ...) _printf_attr_(5,0) _sentinel_; int log_oom_internal( const char *file, diff --git a/src/shared/util.h b/src/shared/util.h index 69b717ed93..68e87da7cd 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -361,8 +361,8 @@ int pipe_eof(int fd); cpu_set_t* cpu_set_malloc(unsigned *ncpus); -int status_vprintf(const char *status, bool ellipse, bool ephemeral, const char *format, va_list ap); -int status_printf(const char *status, bool ellipse, bool ephemeral, const char *format, ...); +int status_vprintf(const char *status, bool ellipse, bool ephemeral, const char *format, va_list ap) _printf_attr_(4,0); +int status_printf(const char *status, bool ellipse, bool ephemeral, const char *format, ...) _printf_attr_(4,5); int status_welcome(void); int fd_columns(int fd); -- cgit v1.2.1 From e4d2bfdd73648f4b2bce123b6425d3e63bb99f33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 25 Apr 2013 21:31:05 -0400 Subject: Add printf attributes in exported headers gcc (and other compilers) sometimes generate spurious warnings, and thus users of public headers must be able to disable warnings. Printf format attributes can be disabled by setting #define _sd_printf_attr_ before including the header file. Also, add similar logic for sentinel attribute: #define _sd_sentinel_attr_ before including the header file disables the attribute. --- src/systemd/sd-bus.h | 10 +++++++++- src/systemd/sd-daemon.h | 10 +++++----- src/systemd/sd-journal.h | 24 ++++++++++++++++++------ src/udev/udev.h | 7 +++---- 4 files changed, 35 insertions(+), 16 deletions(-) diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h index 36fab9ffa1..55648e0b34 100644 --- a/src/systemd/sd-bus.h +++ b/src/systemd/sd-bus.h @@ -32,6 +32,14 @@ extern "C" { #endif +#ifndef _sd_printf_attr_ +# if __GNUC__ >= 4 +# define _sd_printf_attr_(a,b) __attribute__ ((format (printf, a, b))) +# else +# define _sd_printf_attr_(a,b) +# endif +#endif + /* TODO: * - add page donation logic * - api for appending/reading fixed arrays @@ -187,7 +195,7 @@ int sd_bus_get_owner_machine_id(sd_bus *bus, const char *name, sd_id128_t *machi #define SD_BUS_ERROR_MAKE(name, message) ((sd_bus_error) {(name), (message), 0}) void sd_bus_error_free(sd_bus_error *e); -int sd_bus_error_set(sd_bus_error *e, const char *name, const char *format, ...); +int sd_bus_error_set(sd_bus_error *e, const char *name, const char *format, ...) _sd_printf_attr_(3, 0); void sd_bus_error_set_const(sd_bus_error *e, const char *name, const char *message); int sd_bus_error_copy(sd_bus_error *dest, const sd_bus_error *e); int sd_bus_error_is_set(const sd_bus_error *e); diff --git a/src/systemd/sd-daemon.h b/src/systemd/sd-daemon.h index fb7456d50f..daa3f4c857 100644 --- a/src/systemd/sd-daemon.h +++ b/src/systemd/sd-daemon.h @@ -68,11 +68,11 @@ extern "C" { */ #ifndef _sd_printf_attr_ -#if __GNUC__ >= 4 -#define _sd_printf_attr_(a,b) __attribute__ ((format (printf, a, b))) -#else -#define _sd_printf_attr_(a,b) -#endif +# if __GNUC__ >= 4 +# define _sd_printf_attr_(a,b) __attribute__ ((format (printf, a, b))) +# else +# define _sd_printf_attr_(a,b) +# endif #endif /* diff --git a/src/systemd/sd-journal.h b/src/systemd/sd-journal.h index 51653bafe9..5375d49963 100644 --- a/src/systemd/sd-journal.h +++ b/src/systemd/sd-journal.h @@ -34,19 +34,31 @@ extern "C" { #endif +#ifndef _sd_printf_attr_ +# if __GNUC__ >= 4 +# define _sd_printf_attr_(a,b) __attribute__ ((format (printf, a, b))) +# else +# define _sd_printf_attr_(a,b) +# endif +#endif + +#ifndef _sd_sentinel_attr_ +# define _sd_sentinel_attr_ __attribute__((sentinel)) +#endif + /* Journal APIs. See sd-journal(3) for more information. */ /* Write to daemon */ -int sd_journal_print(int priority, const char *format, ...) __attribute__ ((format (printf, 2, 3))); -int sd_journal_printv(int priority, const char *format, va_list ap); -int sd_journal_send(const char *format, ...) __attribute__((sentinel)); +int sd_journal_print(int priority, const char *format, ...) _sd_printf_attr_(2, 3); +int sd_journal_printv(int priority, const char *format, va_list ap) _sd_printf_attr_(2, 0); +int sd_journal_send(const char *format, ...) _sd_printf_attr_(1, 0) _sd_sentinel_attr_; int sd_journal_sendv(const struct iovec *iov, int n); int sd_journal_perror(const char *message); /* Used by the macros below. Don't call this directly. */ -int sd_journal_print_with_location(int priority, const char *file, const char *line, const char *func, const char *format, ...) __attribute__ ((format (printf, 5, 6))); -int sd_journal_printv_with_location(int priority, const char *file, const char *line, const char *func, const char *format, va_list ap); -int sd_journal_send_with_location(const char *file, const char *line, const char *func, const char *format, ...) __attribute__((sentinel)); +int sd_journal_print_with_location(int priority, const char *file, const char *line, const char *func, const char *format, ...) _sd_printf_attr_(5, 6); +int sd_journal_printv_with_location(int priority, const char *file, const char *line, const char *func, const char *format, va_list ap) _sd_printf_attr_(5, 0); +int sd_journal_send_with_location(const char *file, const char *line, const char *func, const char *format, ...) _sd_printf_attr_(4, 0) _sd_sentinel_attr_; int sd_journal_sendv_with_location(const char *file, const char *line, const char *func, const struct iovec *iov, int n); int sd_journal_perror_with_location(const char *file, const char *line, const char *func, const char *message); diff --git a/src/udev/udev.h b/src/udev/udev.h index 906dfbaa0b..caec5f0a5d 100644 --- a/src/udev/udev.h +++ b/src/udev/udev.h @@ -16,13 +16,13 @@ * along with this program. If not, see . */ -#ifndef _UDEV_H_ -#define _UDEV_H_ +#pragma once #include #include #include +#include "macro.h" #include "libudev.h" #include "libudev-private.h" #include "util.h" @@ -195,7 +195,7 @@ int udev_builtin_hwdb_lookup(struct udev_device *dev, const char *modalias, bool /* udev logging */ void udev_main_log(struct udev *udev, int priority, const char *file, int line, const char *fn, - const char *format, va_list args); + const char *format, va_list args) _printf_attr_(6, 0); /* udevadm commands */ struct udevadm_cmd { @@ -212,4 +212,3 @@ extern const struct udevadm_cmd udevadm_monitor; extern const struct udevadm_cmd udevadm_hwdb; extern const struct udevadm_cmd udevadm_test; extern const struct udevadm_cmd udevadm_test_builtin; -#endif -- cgit v1.2.1 From 406e86fdd59946641737ef9d4df3bfd46c6e23c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 25 Apr 2013 20:10:57 -0400 Subject: readahead: fix format string issue (struct stat).st is off_t, which usually is a long, or a long long. There's no good format string modifier for it, so use a cast. --- src/readahead/readahead-analyze.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/readahead/readahead-analyze.c b/src/readahead/readahead-analyze.c index f409b2f7ac..76db3cb7e4 100644 --- a/src/readahead/readahead-analyze.c +++ b/src/readahead/readahead-analyze.c @@ -105,7 +105,7 @@ int main_analyze(const char *pack_path) { } if (stat(path, &st) == 0) { - size_t size; + off_t size; if (sections == 0) size = st.st_size; @@ -114,11 +114,11 @@ int main_analyze(const char *pack_path) { tsize += size; - printf(" %4zd%% (%2d) %12zd: %s\n", - sections && st.st_size ? size * 100 / st.st_size : 100, - sections ? sections : 1, - size, - path); + printf(" %4jd%% (%2d) %12jd: %s\n", + (intmax_t) (sections && st.st_size ? size * 100 / st.st_size : 100), + sections ? sections : 1, + (intmax_t) size, + path); } else { printf(" %4dp (%2d) %12s: %s (MISSING)\n", sections ? pages : -1, -- cgit v1.2.1 From e0a974b471cced122a91f03b3f635a6dd89e1499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 25 Apr 2013 20:31:49 -0400 Subject: bus: avoid gcc warning about casting a pointer to int of different size --- src/libsystemd-bus/bus-kernel.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index 9e057fb138..61013ff3c4 100644 --- a/src/libsystemd-bus/bus-kernel.c +++ b/src/libsystemd-bus/bus-kernel.c @@ -66,7 +66,7 @@ static void append_payload_vec(struct kdbus_msg_item **d, const void *p, size_t (*d)->size = offsetof(struct kdbus_msg_item, vec) + sizeof(struct kdbus_vec); (*d)->type = KDBUS_MSG_PAYLOAD_VEC; - (*d)->vec.address = (uint64_t) p; + (*d)->vec.address = (intptr_t) p; (*d)->vec.size = sz; *d = (struct kdbus_msg_item *) ((uint8_t*) *d + (*d)->size); -- cgit v1.2.1 From 2a371001f8d23533a339a150eeffa3215773058d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 25 Apr 2013 20:53:29 -0400 Subject: Use attribute(unused) in PROTECT_ERRNO MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit clang emits warnings about unused attribute _saved_errno_, which drown out other—potentially useful—warnings. gcc documentation is not exactly verbose about the effects of __attribute__((unused)) on variables, but let's assume that it works if the unit test passes. --- src/shared/cgroup-util.c | 1 - src/shared/util.h | 2 +- src/test/test-util.c | 11 +++++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index b79a24a495..46a8128eb4 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -1208,7 +1208,6 @@ int cg_pid_get_path_shifted(pid_t pid, char **root, char **cgroup) { } int cg_path_decode_unit(const char *cgroup, char **unit){ - _cleanup_free_ char *unescaped = NULL; char *p, *e, *c, *s, *k; assert(cgroup); diff --git a/src/shared/util.h b/src/shared/util.h index 68e87da7cd..e3fc876857 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -644,7 +644,7 @@ static inline void _reset_errno_(int *saved_errno) { errno = *saved_errno; } -#define PROTECT_ERRNO _cleanup_(_reset_errno_) int _saved_errno_ = errno +#define PROTECT_ERRNO _cleanup_(_reset_errno_) __attribute__((unused)) int _saved_errno_ = errno struct _umask_struct_ { mode_t mask; diff --git a/src/test/test-util.c b/src/test/test-util.c index 66a10ead46..4c3a8a6b88 100644 --- a/src/test/test-util.c +++ b/src/test/test-util.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "util.h" @@ -429,6 +430,15 @@ static void test_get_process_comm(void) { log_info("pid1 $PATH: '%s'", strna(i)); } +static void test_protect_errno(void) { + errno = 12; + { + PROTECT_ERRNO; + errno = 11; + } + assert(errno == 12); +} + int main(int argc, char *argv[]) { test_streq_ptr(); test_first_word(); @@ -456,6 +466,7 @@ int main(int argc, char *argv[]) { test_hostname_is_valid(); test_u64log2(); test_get_process_comm(); + test_protect_errno(); return 0; } -- cgit v1.2.1 From fcf8c44041a5138a170f9a442809c032259a26b1 Mon Sep 17 00:00:00 2001 From: Mirco Tischler Date: Thu, 25 Apr 2013 15:14:57 +0200 Subject: core: remove duplicate MESSAGE= from log message This was needed with log_struct_unit() but log_notice_unit() adds it anyway. --- src/core/unit.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/unit.c b/src/core/unit.c index 7029b6443e..282852fed3 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1468,7 +1468,7 @@ void unit_notify(Unit *u, UnitActiveState os, UnitActiveState ns, bool reload_su if (ns != os && ns == UNIT_FAILED) { log_notice_unit(u->id, - "MESSAGE=Unit %s entered failed state.", u->id); + "Unit %s entered failed state.", u->id); unit_start_on_failure(u); } } -- cgit v1.2.1 From 45df1f2c9a7fee67b37f64ddd00adad5982844fa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= Date: Wed, 24 Apr 2013 21:51:23 -0300 Subject: build-sys: add --with-debug-shell=PATH Distributions may have selinux but not sushell or might need to set a custom debug shell. Defaults to /sbin/sushell if selinux is enabled, /bin/sh if not. [zj: Renamed --with-debugshelltty to --with-debug-tty, and added a line in output showing DEBUGSHELL and DEBUGTTY. I figure that debug shell is pretty useful, and I hope the extra line in configure status will draw attention to it.] --- configure.ac | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/configure.ac b/configure.ac index ce02ff6f80..285fc44fa2 100644 --- a/configure.ac +++ b/configure.ac @@ -275,13 +275,23 @@ if test "x$enable_selinux" != "xno"; then fi fi AM_CONDITIONAL(HAVE_SELINUX, [test "$have_selinux" = "yes"]) -if test "x${have_selinux}" != xno ; then - SUSHELL=/sbin/sushell -else - SUSHELL=/bin/sh -fi + +AC_ARG_WITH(debug-shell, + AS_HELP_STRING([--with-debug-shell=PATH], + [Path to debug shell binary]), + [SUSHELL="$withval"],[ + AS_IF([test "x${have_selinux}" != "xno"], [SUSHELL="/sbin/sushell"] , [SUSHELL="/bin/sh"])]) + AC_SUBST(SUSHELL) +AC_ARG_WITH([debug-tty], + AS_HELP_STRING([--with-debug-tty=PATH], + [Specify the tty device for debug shell]), + [DEBUGTTY="$withval"], + [DEBUGTTY=/dev/tty9]) + +AC_SUBST(DEBUGTTY) + # ------------------------------------------------------------------------------ have_xz=no AC_ARG_ENABLE(xz, AS_HELP_STRING([--disable-xz], [Disable optional XZ support])) @@ -757,15 +767,6 @@ AS_IF([test "x$enable_keymap" = "xyes"], [ ]) AM_CONDITIONAL([ENABLE_KEYMAP], [test "x$enable_keymap" = "xyes"]) -# ------------------------------------------------------------------------------ -DEBUGTTY=/dev/tty9 -AC_ARG_WITH([debugshelltty], - [AS_HELP_STRING([--with-debugshelltty=PATH], - [Specify the tty device for debug shell])], - [DEBUGTTY="$withval"], - []) -AC_SUBST(DEBUGTTY) - # ------------------------------------------------------------------------------ have_manpages=no AC_ARG_ENABLE(manpages, AS_HELP_STRING([--disable-manpages], [disable manpages])) @@ -967,6 +968,7 @@ AC_MSG_RESULT([ Bash completions dir: ${with_bashcompletiondir} Extra start script: ${RC_LOCAL_SCRIPT_PATH_START} Extra stop script: ${RC_LOCAL_SCRIPT_PATH_STOP} + Debug shell: ${SUSHELL} @ ${DEBUGTTY} CFLAGS: ${OUR_CFLAGS} ${CFLAGS} CPPFLAGS: ${OUR_CPPFLAGS} ${CPPFLAGS} -- cgit v1.2.1 From 910003d022ed299b50ab36228732bb74a23d46ba Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Wed, 24 Apr 2013 18:19:04 -0400 Subject: coredump: use realloc() loop instead of malloc(768M) I typically run VMs with 1024MiB allocated; systemd is unable to write coredumps in this scenario at all because the default kernel configuration will only overcommit 50% of available RAM. Avoid this failure by using a realloc() loop. See: http://lists.freedesktop.org/archives/systemd-devel/2013-April/010709.html --- src/journal/coredump.c | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/src/journal/coredump.c b/src/journal/coredump.c index 2be6d94c22..fd03e389bb 100644 --- a/src/journal/coredump.c +++ b/src/journal/coredump.c @@ -37,6 +37,8 @@ #include "special.h" #include "cgroup-util.h" +/* Few programs have less than 3MiB resident */ +#define COREDUMP_MIN_START (3*1024*1024) /* Make sure to not make this larger than the maximum journal entry * size. See ENTRY_SIZE_MAX in journald-native.c. */ #define COREDUMP_MAX (768*1024*1024) @@ -103,9 +105,10 @@ int main(int argc, char* argv[]) { uid_t uid; gid_t gid; struct iovec iovec[14]; + size_t coredump_bufsize, coredump_size; _cleanup_free_ char *core_pid = NULL, *core_uid = NULL, *core_gid = NULL, *core_signal = NULL, *core_timestamp = NULL, *core_comm = NULL, *core_exe = NULL, *core_unit = NULL, - *core_session = NULL, *core_message = NULL, *core_cmdline = NULL, *p = NULL; + *core_session = NULL, *core_message = NULL, *core_cmdline = NULL, *coredump_data = NULL; prctl(PR_SET_DUMPABLE, 0); @@ -234,23 +237,35 @@ int main(int argc, char* argv[]) { goto finish; } - p = malloc(9 + COREDUMP_MAX); - if (!p) { + coredump_bufsize = COREDUMP_MIN_START; + coredump_data = malloc(coredump_bufsize); + if (!coredump_data) { r = log_oom(); goto finish; } - memcpy(p, "COREDUMP=", 9); + memcpy(coredump_data, "COREDUMP=", 9); + coredump_size = 9; - n = loop_read(STDIN_FILENO, p + 9, COREDUMP_MAX, false); - if (n < 0) { - log_error("Failed to read core dump data: %s", strerror(-n)); - r = (int) n; - goto finish; + for (;;) { + n = loop_read(STDIN_FILENO, coredump_data + coredump_size, + coredump_bufsize - coredump_size, false); + if (n < 0) { + log_error("Failed to read core dump data: %s", strerror(-n)); + r = (int) n; + goto finish; + } else if (n == 0) + break; + + coredump_size += n; + if (!GREEDY_REALLOC(coredump_data, coredump_bufsize, coredump_size + 1)) { + r = log_oom(); + goto finish; + } } - iovec[j].iov_base = p; - iovec[j].iov_len = 9 + n; + iovec[j].iov_base = coredump_data; + iovec[j].iov_len = coredump_size; j++; r = sd_journal_sendv(iovec, j); -- cgit v1.2.1 From 17f5e4577b774f8df87c7fc6068b6b32bf5d44f0 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Thu, 25 Apr 2013 10:35:14 +0200 Subject: dbus-manager.c: log error, why switch-root is refused --- src/core/dbus-manager.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/core/dbus-manager.c b/src/core/dbus-manager.c index 1f5a7d94fd..56b02a1cf5 100644 --- a/src/core/dbus-manager.c +++ b/src/core/dbus-manager.c @@ -1503,8 +1503,11 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, } /* Safety check */ - if (isempty(switch_root_init)) + if (isempty(switch_root_init)) { good = path_is_os_tree(switch_root); + if (!good) + log_error("Not switching root: %s does not seem to be an OS tree. /etc/os-release is missing.", switch_root); + } else { _cleanup_free_ char *p = NULL; @@ -1513,6 +1516,8 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection, goto oom; good = access(p, X_OK) >= 0; + if (!good) + log_error("Not switching root: cannot execute new init %s", p); } if (!good) return bus_send_error_reply(connection, message, NULL, -EINVAL); -- cgit v1.2.1 From bb150966c0687d2fa94da0a36dabba90c1a84b8b Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 23 Apr 2013 11:11:10 +0200 Subject: systemd-analyse: add "critical-chain" command MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "critical-chain" prints a tree of the critical chain of units $ ./systemd-analyze critical-chain graphical.target @1.226s └─multi-user.target @1.226s └─nfs-lock.service @961ms +265ms └─rpcbind.service @958ms +1ms └─network.target @957ms └─NetworkManager.service @434ms +522ms └─basic.target @428ms └─sockets.target @428ms └─dbus.socket @428ms └─sysinit.target @427ms └─systemd-tmpfiles-setup.service @411ms +15ms └─local-fs.target @410ms └─boot-efi.automount @410ms └─boot.mount @397ms +9ms └─local-fs-pre.target @192ms └─systemd-udevd.service @187ms +5ms └─systemd-udevd-control.socket @140ms └─-.mount With the "--fuzz=" parameter one can display more units around the critical units. $ ./systemd-analyze --fuzz=10ms critical-chain └─multi-user.target @1.226s └─nfs-lock.service @961ms +265ms ├─rpcbind.service @958ms +1ms │ └─network.target @957ms │ └─NetworkManager.service @434ms +522ms │ ├─basic.target @428ms │ │ ├─sockets.target @428ms │ │ │ ├─dbus.socket @428ms │ │ │ │ └─sysinit.target @427ms │ │ │ │ ├─systemd-tmpfiles-setup.service @411ms +15ms │ │ │ │ │ └─local-fs.target @410ms │ │ │ │ │ └─boot-efi.automount @410ms │ │ │ │ │ └─boot.mount @397ms +9ms │ │ │ │ │ └─local-fs-pre.target @192ms │ │ │ │ │ └─systemd-udevd.service @187ms +5ms │ │ │ │ │ ├─systemd-udevd-control.socket @140ms │ │ │ │ │ │ └─-.mount │ │ │ │ │ └─systemd-udevd-kernel.socket @140ms │ │ │ │ └─swap.target @421ms │ │ │ │ └─dev-disk-by\x2duuid-....swap @414ms +6ms │ │ │ │ └─systemd-journald.socket │ │ │ ├─rpcbind.socket @428ms │ │ │ └─cups.socket @428ms │ │ ├─paths.target @428ms │ │ │ └─cups.path @428ms │ │ ├─timers.target @427ms │ │ │ └─systemd-tmpfiles-clean.timer @427ms │ │ └─sysinit.target @427ms │ │ └─... │ └─dbus.socket @428ms │ └─... └─network.target @957ms └─... --- man/systemd-analyze.xml | 32 ++++ shell-completion/bash/systemd-analyze | 6 + src/analyze/systemd-analyze.c | 351 +++++++++++++++++++++++++++++++++- 3 files changed, 387 insertions(+), 2 deletions(-) diff --git a/man/systemd-analyze.xml b/man/systemd-analyze.xml index 9f313d76f1..ae45bfcf31 100644 --- a/man/systemd-analyze.xml +++ b/man/systemd-analyze.xml @@ -34,6 +34,12 @@ Poettering lennart@poettering.net + + Developer + Harald + Hoyer + harald@redhat.com +
@@ -54,6 +60,9 @@ systemd-analyze OPTIONS blame + + systemd-analyze OPTIONS critical-chain + systemd-analyze OPTIONS plot > file.svg @@ -88,6 +97,16 @@ be slow simply because it waits for the initialization of another service to complete. + systemd-analyze critical-chain + prints a tree of the time critical chain of units. + The time after the unit is active or started is printed + after the "@" character. The time the unit takes to + start is printed after the "+" character. + Note that the output might be misleading as the + initialization of one service might depend on socket + activation and because of the parallel execution + of units. + systemd-analyze plot prints an SVG graphic detailing which system services have been started at what time, highlighting the time they @@ -181,6 +200,19 @@ unit name must match one of given values. + + + timespan + + When used in conjunction + with the critical-chain + command (see above), also show units, which + finished timespan earlier, than the + latest unit in the same level. The unit of + timespan is seconds + unless specified with a different unit, + i.e. "50ms". + diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze index 8a4453d405..11276ef09c 100644 --- a/shell-completion/bash/systemd-analyze +++ b/shell-completion/bash/systemd-analyze @@ -31,6 +31,7 @@ _systemd_analyze() { local -A VERBS=( [NO_OPTION]='time blame plot' + [CRITICAL_CHAIN]='critical-chain' [DOT]='dot' ) @@ -57,6 +58,11 @@ _systemd_analyze() { comps='--help --version --system --user' fi + elif __contains_word "$verb" ${VERBS[CRITICAL_CHAIN]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user --fuzz' + fi + elif __contains_word "$verb" ${VERBS[DOT]}; then if [[ $cur = -* ]]; then comps='--help --version --system --user --from-pattern --to-pattern --order --require' diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c index e648a4449f..14c07e409e 100644 --- a/src/analyze/systemd-analyze.c +++ b/src/analyze/systemd-analyze.c @@ -35,6 +35,9 @@ #include "strxcpyx.h" #include "fileio.h" #include "strv.h" +#include "unit-name.h" +#include "special.h" +#include "hashmap.h" #define SCALE_X (0.1 / 1000.0) /* pixels per us */ #define SCALE_Y 20.0 @@ -65,6 +68,8 @@ static enum dot { static char** arg_dot_from_patterns = NULL; static char** arg_dot_to_patterns = NULL; +usec_t arg_fuzz = 0; + struct boot_times { usec_t firmware_time; usec_t loader_time; @@ -548,6 +553,331 @@ static int analyze_plot(DBusConnection *bus) { return 0; } + +static int list_dependencies_print(const char *name, unsigned int level, unsigned int branches, + bool last, struct unit_times *times, struct boot_times *boot) { + unsigned int i; + char ts[FORMAT_TIMESPAN_MAX], ts2[FORMAT_TIMESPAN_MAX]; + + for (i = level; i != 0; i--) + printf("%s", draw_special_char(branches & (1 << (i-1)) ? DRAW_TREE_VERT : DRAW_TREE_SPACE)); + + printf("%s", draw_special_char(last ? DRAW_TREE_RIGHT : DRAW_TREE_BRANCH)); + + if (times) { + if (times->time) + printf("%s%s @%s +%s%s", ANSI_HIGHLIGHT_RED_ON, name, + format_timespan(ts, sizeof(ts), times->ixt - boot->userspace_time, USEC_PER_MSEC), + format_timespan(ts2, sizeof(ts2), times->time, USEC_PER_MSEC), ANSI_HIGHLIGHT_OFF); + else if (times->aet > boot->userspace_time) + printf("%s @%s", name, format_timespan(ts, sizeof(ts), times->aet - boot->userspace_time, USEC_PER_MSEC)); + else + printf("%s", name); + } else printf("%s", name); + printf("\n"); + + return 0; +} + +static int list_dependencies_get_dependencies(DBusConnection *bus, const char *name, char ***deps) { + static const char dependencies[] = + "After\0"; + + _cleanup_free_ char *path; + const char *interface = "org.freedesktop.systemd1.Unit"; + + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + DBusMessageIter iter, sub, sub2, sub3; + + int r = 0; + char **ret = NULL; + + assert(bus); + assert(name); + assert(deps); + + path = unit_dbus_path_from_name(name); + if (path == NULL) { + r = -EINVAL; + goto finish; + } + + r = bus_method_call_with_reply( + bus, + "org.freedesktop.systemd1", + path, + "org.freedesktop.DBus.Properties", + "GetAll", + &reply, + NULL, + DBUS_TYPE_STRING, &interface, + DBUS_TYPE_INVALID); + if (r < 0) + goto finish; + + if (!dbus_message_iter_init(reply, &iter) || + dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_ARRAY || + dbus_message_iter_get_element_type(&iter) != DBUS_TYPE_DICT_ENTRY) { + log_error("Failed to parse reply."); + r = -EIO; + goto finish; + } + + dbus_message_iter_recurse(&iter, &sub); + + while (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_INVALID) { + const char *prop; + + assert(dbus_message_iter_get_arg_type(&sub) == DBUS_TYPE_DICT_ENTRY); + dbus_message_iter_recurse(&sub, &sub2); + + if (bus_iter_get_basic_and_next(&sub2, DBUS_TYPE_STRING, &prop, true) < 0) { + log_error("Failed to parse reply."); + r = -EIO; + goto finish; + } + + if (dbus_message_iter_get_arg_type(&sub2) != DBUS_TYPE_VARIANT) { + log_error("Failed to parse reply."); + r = -EIO; + goto finish; + } + + dbus_message_iter_recurse(&sub2, &sub3); + dbus_message_iter_next(&sub); + + if (!nulstr_contains(dependencies, prop)) + continue; + + if (dbus_message_iter_get_arg_type(&sub3) == DBUS_TYPE_ARRAY) { + if (dbus_message_iter_get_element_type(&sub3) == DBUS_TYPE_STRING) { + DBusMessageIter sub4; + dbus_message_iter_recurse(&sub3, &sub4); + + while (dbus_message_iter_get_arg_type(&sub4) != DBUS_TYPE_INVALID) { + const char *s; + + assert(dbus_message_iter_get_arg_type(&sub4) == DBUS_TYPE_STRING); + dbus_message_iter_get_basic(&sub4, &s); + + r = strv_extend(&ret, s); + if (r < 0) { + log_oom(); + goto finish; + } + + dbus_message_iter_next(&sub4); + } + } + } + } +finish: + if (r < 0) + strv_free(ret); + else + *deps = ret; + return r; +} + +static Hashmap *unit_times_hashmap; + +static int list_dependencies_compare(const void *_a, const void *_b) { + const char **a = (const char**) _a, **b = (const char**) _b; + usec_t usa = 0, usb = 0; + struct unit_times *times; + + times = hashmap_get(unit_times_hashmap, *a); + if (times) + usa = times->aet; + times = hashmap_get(unit_times_hashmap, *b); + if (times) + usb = times->aet; + + return usb - usa; +} + +static int list_dependencies_one(DBusConnection *bus, const char *name, unsigned int level, char ***units, + unsigned int branches) { + _cleanup_strv_free_ char **deps = NULL; + char **c; + int r = 0; + usec_t service_longest = 0; + int to_print = 0; + struct unit_times *times; + struct boot_times *boot; + + if(strv_extend(units, name)) + return log_oom(); + + r = list_dependencies_get_dependencies(bus, name, &deps); + if (r < 0) + return r; + + qsort(deps, strv_length(deps), sizeof (char*), list_dependencies_compare); + + r = acquire_boot_times(bus, &boot); + if (r < 0) + return r; + + STRV_FOREACH(c, deps) { + times = hashmap_get(unit_times_hashmap, *c); + if (times + && times->aet + && times->aet <= boot->finish_time + && (times->aet >= service_longest + || service_longest == 0)) { + service_longest = times->aet; + break; + } + } + + if (service_longest == 0 ) + return r; + + STRV_FOREACH(c, deps) { + times = hashmap_get(unit_times_hashmap, *c); + if (times && times->aet + && times->aet <= boot->finish_time + && (service_longest - times->aet) <= arg_fuzz) { + to_print++; + } + } + + if(!to_print) + return r; + + STRV_FOREACH(c, deps) { + times = hashmap_get(unit_times_hashmap, *c); + if (!times + || !times->aet + || times->aet > boot->finish_time + || service_longest - times->aet > arg_fuzz) + continue; + + to_print--; + + r = list_dependencies_print(*c, level, branches, to_print == 0, times, boot); + if (r < 0) + return r; + + if (strv_contains(*units, *c)) { + r = list_dependencies_print("...", level + 1, (branches << 1) | (to_print ? 1 : 0), + true, NULL, boot); + continue; + } + + r = list_dependencies_one(bus, *c, level + 1, units, + (branches << 1) | (to_print ? 1 : 0)); + if(r < 0) + return r; + + + if(!to_print) + break; + + } + return 0; +} + +static int list_dependencies(DBusConnection *bus) { + _cleanup_free_ char *unit = NULL; + _cleanup_strv_free_ char **units = NULL; + char ts[FORMAT_TIMESPAN_MAX]; + struct unit_times *times; + int r; + const char + *path, *id, + *interface = "org.freedesktop.systemd1.Unit", + *property = "Id"; + DBusMessageIter iter, sub; + _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; + struct boot_times *boot; + + assert(bus); + + path = unit_dbus_path_from_name(SPECIAL_DEFAULT_TARGET); + if (path == NULL) + return -EINVAL; + + r = bus_method_call_with_reply ( + bus, + "org.freedesktop.systemd1", + path, + "org.freedesktop.DBus.Properties", + "Get", + &reply, + NULL, + DBUS_TYPE_STRING, &interface, + DBUS_TYPE_STRING, &property, + DBUS_TYPE_INVALID); + if (r < 0) + return r; + + if (!dbus_message_iter_init(reply, &iter) || + dbus_message_iter_get_arg_type(&iter) != DBUS_TYPE_VARIANT) { + log_error("Failed to parse reply."); + return -EIO; + } + + dbus_message_iter_recurse(&iter, &sub); + + if (dbus_message_iter_get_arg_type(&sub) != DBUS_TYPE_STRING) { + log_error("Failed to parse reply."); + return -EIO; + } + + dbus_message_iter_get_basic(&sub, &id); + + times = hashmap_get(unit_times_hashmap, id); + + r = acquire_boot_times(bus, &boot); + if (r < 0) + return r; + + if (times) { + if (times->time) + printf("%s%s +%s%s\n", ANSI_HIGHLIGHT_RED_ON, id, + format_timespan(ts, sizeof(ts), times->time, USEC_PER_MSEC), ANSI_HIGHLIGHT_OFF); + else if (times->aet > boot->userspace_time) + printf("%s @%s\n", id, format_timespan(ts, sizeof(ts), times->aet - boot->userspace_time, USEC_PER_MSEC)); + else + printf("%s\n", id); + } + + return list_dependencies_one(bus, SPECIAL_DEFAULT_TARGET, 0, &units, 0); +} + +static int analyze_critical_chain(DBusConnection *bus) { + struct unit_times *times; + int n, r; + unsigned int i; + Hashmap *h; + + n = acquire_time_data(bus, ×); + if (n <= 0) + return n; + + h = hashmap_new(string_hash_func, string_compare_func); + if (!h) + return -ENOMEM; + + for (i = 0; i < (unsigned)n; i++) { + r = hashmap_put(h, times[i].name, ×[i]); + if (r < 0) + return r; + } + unit_times_hashmap = h; + + puts("The time after the unit is active or started is printed after the \"@\" character.\n" + "The time the unit takes to start is printed after the \"+\" character.\n"); + + list_dependencies(bus); + + hashmap_free(h); + free_unit_times(times, (unsigned) n); + return 0; +} + static int analyze_blame(DBusConnection *bus) { struct unit_times *times; unsigned i; @@ -795,10 +1125,15 @@ static void analyze_help(void) " --require When generating a dependency graph, show only requirement\n" " --from-pattern=GLOB, --to-pattern=GLOB\n" " When generating a dependency graph, filter only origins\n" - " or destinations, respectively\n\n" + " or destinations, respectively\n" + " --fuzz=TIMESPAN When printing the tree of the critical chain, print also\n" + " services, which finished TIMESPAN earlier, than the\n" + " latest in the branch. The unit of TIMESPAN is seconds\n" + " unless specified with a different unit, i.e. 50ms\n\n" "Commands:\n" " time Print time spent in the kernel before reaching userspace\n" " blame Print list of running units ordered by time to init\n" + " critical-chain Print a tree of the time critical chain of units\n" " plot Output SVG graphic showing service initialization\n" " dot Dump dependency graph (in dot(1) format)\n\n", program_invocation_short_name); @@ -806,6 +1141,8 @@ static void analyze_help(void) static int parse_argv(int argc, char *argv[]) { + int r; + enum { ARG_VERSION = 0x100, ARG_ORDER, @@ -813,7 +1150,8 @@ static int parse_argv(int argc, char *argv[]) ARG_USER, ARG_SYSTEM, ARG_DOT_FROM_PATTERN, - ARG_DOT_TO_PATTERN + ARG_DOT_TO_PATTERN, + ARG_FUZZ }; static const struct option options[] = { @@ -825,6 +1163,7 @@ static int parse_argv(int argc, char *argv[]) { "system", no_argument, NULL, ARG_SYSTEM }, { "from-pattern", required_argument, NULL, ARG_DOT_FROM_PATTERN}, { "to-pattern", required_argument, NULL, ARG_DOT_TO_PATTERN }, + { "fuzz", required_argument, NULL, ARG_FUZZ }, { NULL, 0, NULL, 0 } }; @@ -870,6 +1209,12 @@ static int parse_argv(int argc, char *argv[]) break; + case ARG_FUZZ: + r = parse_sec(optarg, &arg_fuzz); + if (r < 0) + return r; + break; + case -1: return 1; @@ -905,6 +1250,8 @@ int main(int argc, char *argv[]) { r = analyze_time(bus); else if (streq(argv[optind], "blame")) r = analyze_blame(bus); + else if (streq(argv[optind], "critical-chain")) + r = analyze_critical_chain(bus); else if (streq(argv[optind], "plot")) r = analyze_plot(bus); else if (streq(argv[optind], "dot")) -- cgit v1.2.1 From e29380ebbe7d14d821a04122660c8449a2c0b300 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Sat, 27 Apr 2013 00:01:32 +0200 Subject: Makefile-man.am: update --- Makefile-man.am | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Makefile-man.am b/Makefile-man.am index 0ce8142433..4f14a6aaf6 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -795,6 +795,7 @@ MANPAGES += \ man/sd_uid_get_state.3 \ man/systemd-user-sessions.service.8 MANPAGES_ALIAS += \ + man/sd_get_machine_names.3 \ man/sd_get_sessions.3 \ man/sd_get_uids.3 \ man/sd_login_monitor.3 \ @@ -821,6 +822,7 @@ MANPAGES_ALIAS += \ man/sd_uid_get_sessions.3 \ man/sd_uid_is_on_seat.3 \ man/systemd-user-sessions.8 +man/sd_get_machine_names.3: man/sd_get_seats.3 man/sd_get_sessions.3: man/sd_get_seats.3 man/sd_get_uids.3: man/sd_get_seats.3 man/sd_login_monitor.3: man/sd_login_monitor_new.3 @@ -847,6 +849,9 @@ man/sd_uid_get_seats.3: man/sd_uid_get_state.3 man/sd_uid_get_sessions.3: man/sd_uid_get_state.3 man/sd_uid_is_on_seat.3: man/sd_uid_get_state.3 man/systemd-user-sessions.8: man/systemd-user-sessions.service.8 +man/sd_get_machine_names.html: man/sd_get_seats.html + $(html-alias) + man/sd_get_sessions.html: man/sd_get_seats.html $(html-alias) -- cgit v1.2.1 From d7e011e5bfa3361faf52b7b2dbacd11373d7fb86 Mon Sep 17 00:00:00 2001 From: Evangelos Foutras Date: Mon, 29 Apr 2013 13:12:28 +0300 Subject: nspawn: add -M option to optstring This was missed in commit 7027ff61a34a12487712b382a061c654acc3a679 and means that the --machine option would work but not its shorthand, -M. --- src/nspawn/nspawn.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 7b41571034..a49cbc2238 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -173,7 +173,7 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 0); assert(argv); - while ((c = getopt_long(argc, argv, "+hD:u:C:bj", options, NULL)) >= 0) { + while ((c = getopt_long(argc, argv, "+hD:u:C:bM:j", options, NULL)) >= 0) { switch (c) { -- cgit v1.2.1 From a827e37371be78ba7eda63fa6edca1074c431524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 29 Apr 2013 19:46:19 -0400 Subject: man: clarify what Restart= means Related to https://bugzilla.redhat.com/show_bug.cgi?id=957135. --- man/systemd.service.xml | 77 ++++++++++++++++++++++++++++++++++--------------- src/core/service.c | 3 ++ 2 files changed, 56 insertions(+), 24 deletions(-) diff --git a/man/systemd.service.xml b/man/systemd.service.xml index b82a5c1817..09d1d5ff7d 100644 --- a/man/systemd.service.xml +++ b/man/systemd.service.xml @@ -553,8 +553,8 @@ WatchdogSec= Configures the - watchdog timeout for a service. This - is activated when the start-up is + watchdog timeout for a service. The + watchdog is activated when the start-up is completed. The service must call sd_notify3 regularly with "WATCHDOG=1" (i.e. the @@ -588,37 +588,66 @@ Restart= Configures whether the - main service process shall be - restarted when it exits. Takes one of + service shall be restarted when the + service process exits, is killed, + or a timeout is reached. The service + process may be the main service + process, but also one of the processes + specified with + ExecStartPre=, + ExecStartPost=, + ExecStopPre=, + ExecStopPost=, or + ExecReload=. + When the death of the process is a + result of systemd operation (e.g. service + stop or restart), the service will not be + restarted. Timeouts include missing + the watchdog "keep-alive ping" + deadline and a service start, reload, + and stop operation timeouts. + + Takes one of , , , - or + , or . If set to (the default) the - service will not be restarted when it - exits. If set to + service will not be restarted. If set to it will be - restarted only when it exited cleanly, - i.e. terminated with an exit code of - 0. If set to - it will be - restarted only when it exited with an - exit code not equaling 0, when - terminated by a signal (including on + restarted only when the service process + exits cleanly. + In this context, a clean exit means + an exit code of 0, or one of the signals + SIGHUP, SIGINT, SIGTERM, or SIGPIPE, and + additonally, exit statuses and signals + specified in SuccessExitStatus=. + If set to + the service will be restarted when the + process exits with an nonzero exit code, + is terminated by a signal (including on core dump), when an operation (such as - service reload) times out or when the - configured watchdog timeout is - triggered. If set to - it will be - restarted only if it exits due to - reception of an uncaught signal - (including on core dump). If set to + service reload) times out, and when the + configured watchdog timeout is triggered. + If set to + the service + will be restarted only if the service + process exits due to an uncaught + signal not specified as a clean exit + status. + If set to the service will be restarted regardless whether it exited cleanly or not, got terminated abnormally by a signal or - hit a timeout. + hit a timeout. + + In addition to the above settings, + the service will not be restarted if the + exit code or signal is specified in + RestartPreventExitStatus= + (see below). @@ -631,8 +660,8 @@ code 0 and the signals SIGHUP, SIGINT, SIGTERM and SIGPIPE. Exit status definitions can either be numeric exit - codes or termination signal names, and - are separated by spaces. Example: + codes or termination signal names, + separated by spaces. Example: "SuccessExitStatus=1 2 8 SIGKILL", ensures that exit codes 1, 2, 8 and the termination diff --git a/src/core/service.c b/src/core/service.c index cf0bbe05fc..5803f798e0 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1466,6 +1466,9 @@ static int service_search_main_pid(Service *s) { r = unit_watch_pid(UNIT(s), pid); if (r < 0) /* FIXME: we need to do something here */ + log_warning_unit(UNIT(s)->id, + "Failed to watch PID %lu from service %s", + (unsigned long) pid, UNIT(s)->id); return r; return 0; -- cgit v1.2.1 From 6886b0449dbf264f6b7db2a93a1cfee0e4d4080a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mantas=20Mikul=C4=97nas?= Date: Thu, 25 Apr 2013 20:59:44 +0300 Subject: kernel-install: Clean up - Consistent use of $VAR vs ${VAR} - Consistent use of && vs 'if' - Add error checking to some places - Consistent error messages ("Can't" vs "Cannot", etc.) - Function declarations at the top - Miscellaneous adjustments --- src/kernel-install/kernel-install | 137 +++++++++++++++++++++----------------- 1 file changed, 75 insertions(+), 62 deletions(-) diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install index 9f3a523218..be4a8e274d 100644 --- a/src/kernel-install/kernel-install +++ b/src/kernel-install/kernel-install @@ -19,23 +19,62 @@ # You should have received a copy of the GNU Lesser General Public License # along with systemd; If not, see . +usage() +{ + echo "Usage:" >&2 + echo " $0 add " >&2 + echo " $0 remove " >&2 +} + +dropindirs_sort() +{ + local suffix=$1; shift + local -a files + local f d i + + readarray -t files < <( + for d in "$@"; do + for i in "$d/"*"$suffix"; do + if [[ -e "$i" ]]; then + echo "${i##*/}" + fi + done + done | sort -Vu + ) + + for f in "${files[@]}"; do + for d in "$@"; do + if [[ -e "$d/$f" ]]; then + echo "$d/$f" + continue 2 + fi + done + done +} + export LC_COLLATE=C COMMAND="$1" KERNEL_VERSION="$2" KERNEL_IMAGE="$3" -[[ -f /etc/os-release ]] && . /etc/os-release +if [[ -f /etc/os-release ]]; then + . /etc/os-release +fi + if ! [[ $ID ]]; then - echo "Can't determine the name of your distribution. Please create /etc/os-release." >&2 - echo "See man:os-release(5)" >&2 + echo "Could not determine the distribution name from /etc/os-release." >&2 + echo "Please specify ID=... in /etc/os-release. See man:os-release(5)" >&2 exit 1 fi -[[ -f /etc/machine-id ]] && read MACHINE_ID < /etc/machine-id +if [[ -f /etc/machine-id ]]; then + read MACHINE_ID < /etc/machine-id +fi + if ! [[ $MACHINE_ID ]]; then - echo "Can't determine your machine id. Please create /etc/machine-id!" >&2 - echo "See man:machine-id(5)" >&2 + echo "Could not determine your machine ID from /etc/machine-id." >&2 + echo "Please run 'systemd-machine-id-setup' as root. See man:machine-id(5)" >&2 exit 1 fi @@ -43,97 +82,71 @@ if [[ -f /etc/kernel/cmdline ]]; then readarray -t BOOT_OPTIONS < /etc/kernel/cmdline fi -if ! [[ "${BOOT_OPTIONS[@]}" ]]; then +if ! [[ ${BOOT_OPTIONS[*]} ]]; then readarray -t BOOT_OPTIONS < /proc/cmdline fi if ! [[ $BOOT_OPTIONS ]]; then - echo "Can't determine the kernel command line parameters." >&2 + echo "Could not determine the kernel command line parameters." >&2 echo "Please specify the kernel command line in /etc/kernel/cmdline!" >&2 exit 1 fi -usage() -{ - { - echo "Usage:" - echo " $0 add " - echo " $0 remove " - } >&2 -} - -if ! ( [[ $COMMAND ]] && [[ $KERNEL_VERSION ]] ); then +if [[ ! $COMMAND ]] || [[ ! $KERNEL_VERSION ]]; then usage exit 1 fi -BOOT_DIR="/${MACHINE_ID}/${KERNEL_VERSION}" -BOOT_DIR_ABS="/boot${BOOT_DIR}" -LOADER_ENTRY="/boot/loader/entries/${MACHINE_ID}-${KERNEL_VERSION}.conf" +BOOT_DIR="/$MACHINE_ID/$KERNEL_VERSION" +BOOT_DIR_ABS="/boot$BOOT_DIR" +LOADER_ENTRY="/boot/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf" ret=0 -dropindirs_sort() -{ - suffix=$1; shift - readarray -t files< <( - for d in "$@"; do - for i in "${d}/"*${suffix}; do - [[ -e $i ]] && echo ${i##*/} - done - done | sort -Vu - ) - - for f in "${files[@]}"; do - for d in "$@"; do - if [[ -e "$d/$f" ]]; then - echo "$d/$f" - continue 2 - fi - done - done -} - readarray -t PLUGINS < <( dropindirs_sort ".install" \ "/etc/kernel/install.d" \ "/usr/lib/kernel/install.d" ) -case "$COMMAND" in +case $COMMAND in add) - if [[ -z $KERNEL_IMAGE ]]; then + if [[ ! $KERNEL_IMAGE ]]; then usage exit 1 fi - mkdir -p "$BOOT_DIR_ABS" || exit 1 + + mkdir -p "$BOOT_DIR_ABS" || { + echo "Could not create boot directory '$BOOT_DIR_ABS'." >&2 + exit 1 + } for f in "${PLUGINS[@]}"; do [[ -x $f ]] && "$f" add "$KERNEL_VERSION" "$BOOT_DIR_ABS" ((ret+=$?)) done - if ! cp --preserve "$KERNEL_IMAGE" "$BOOT_DIR_ABS"/linux; then - echo "Can't copy '$KERNEL_IMAGE to '$BOOT_DIR_ABS/linux'!" >&2 - fi + cp --preserve "$KERNEL_IMAGE" "$BOOT_DIR_ABS/linux" || { + echo "Could not copy '$KERNEL_IMAGE to '$BOOT_DIR_ABS/linux'." >&2 + exit 1 + } - [[ -d /boot/loader/entries ]] || mkdir -p /boot/loader/entries + mkdir -p "${LOADER_ENTRY%/*}" || { + echo "Could not create loader entry directory '${LOADER_ENTRY%/*}'." >&2 + exit 1 + } { echo "title $PRETTY_NAME" echo "version $KERNEL_VERSION" echo "machine-id $MACHINE_ID" - echo "options ${BOOT_OPTIONS[@]}" + echo "options ${BOOT_OPTIONS[*]}" echo "linux $BOOT_DIR/linux" - [[ -f "${BOOT_DIR_ABS}"/initrd ]] && \ + [[ -f $BOOT_DIR_ABS/initrd ]] && \ echo "initrd $BOOT_DIR/initrd" - : - } > $LOADER_ENTRY - - ((ret+=$?)) - - if ! [[ -f $LOADER_ENTRY ]]; then - echo "Could not create '$LOADER_ENTRY'!" >&2 - fi + } > "$LOADER_ENTRY" || { + echo "Could not create loader entry '$LOADER_ENTRY'." >&2 + exit 1 + } ;; remove) @@ -142,13 +155,13 @@ case "$COMMAND" in ((ret+=$?)) done - rm -fr "$BOOT_DIR_ABS" - rm -f "$LOADER_ENTRY" + rm -rf "$LOADER_ENTRY" "$BOOT_DIR_ABS" ;; *) usage - ret=1;; + exit 1 + ;; esac ((ret+=$?)) -- cgit v1.2.1 From aa96c6cb44a6eeccc506ae055aae2519a7f914e1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 29 Apr 2013 18:39:12 -0300 Subject: id128: when taking user input for a 128bit ID, validate syntax Also, always accept both our simple hexdump syntax and UUID syntax. --- TODO | 8 +----- man/sd_id128_to_string.xml | 17 ++++++++---- src/core/load-dropin.c | 40 +++++++++++++++++---------- src/core/machine-id-setup.c | 30 +++++++++++--------- src/libsystemd-id128/sd-id128.c | 61 ++++++++++++++++++++++++++--------------- src/nspawn/nspawn.c | 5 ++++ src/shared/util.c | 41 +++++++++++++++++++++++++++ src/shared/util.h | 2 ++ src/systemd/sd-id128.h | 2 +- src/test/test-id128.c | 27 ++++++++++++++++-- 10 files changed, 168 insertions(+), 65 deletions(-) diff --git a/TODO b/TODO index 80a591f017..bb1802813f 100644 --- a/TODO +++ b/TODO @@ -26,9 +26,7 @@ Fedora 19: Features: -* nss-myhostname: investigate whether there's any point in also - resolving localhost6, localhost.localdomain, ip6-localhost or any of - the other names often seen in /etc/hosts +* investigate endianess issues of UUID vs. GUID * see if we can fix https://bugs.freedesktop.org/show_bug.cgi?id=63672 without dropping the location cache entirely. @@ -36,8 +34,6 @@ Features: * dbus: when a unit failed to load (i.e. is in UNIT_ERROR state), we should be able to safely try another attempt when the bus call LoadUnit() is invoked. -* for instanced unit drop-ins we should look in foo@bar.service.d/ as well as foo@.service.d/ - * if pam_systemd is invoked by su from a process that is outside of a any session we should probably just become a NOP, since that's usually not a real user session but just some system code that just @@ -61,8 +57,6 @@ Features: * make sure cg_pid_get_path() works properly for co-mounted controllers -* nspawn: ensure syntax of --uuid= argument is correct - * explicitly disallow changing the cgroup path of units in the name=systemd hierarchy, unless it is outside of /system diff --git a/man/sd_id128_to_string.xml b/man/sd_id128_to_string.xml index ec8b263e0d..593d0752d5 100644 --- a/man/sd_id128_to_string.xml +++ b/man/sd_id128_to_string.xml @@ -59,7 +59,7 @@ int sd_id128_from_string - const char s[33], sd_id128_t* ret + const char* s, sd_id128_t* ret @@ -77,14 +77,19 @@ sd_id128_from_string() implements the reverse operation: it takes a 33 - character array with 32 hexadecimal digits - (terminated by NUL) and parses them back into an - 128 bit ID returned in - ret. + character string with 32 hexadecimal digits + (either lowercase or uppercase, terminated by NUL) and parses them back into an 128 + bit ID returned in + ret. Alternatively, this call + can also parse a 37 character string with a 128bit ID + formatted as RFC UUID. For more information about the sd_id128_t type see - sd-id1283. + sd-id1283. Note + that these calls operate the same way on all + architectures, i.e. the results do not depend on + endianess. When formatting a 128 bit ID into a string it is often easier to use a format string for diff --git a/src/core/load-dropin.c b/src/core/load-dropin.c index 0318296f1f..a877e66098 100644 --- a/src/core/load-dropin.c +++ b/src/core/load-dropin.c @@ -31,7 +31,12 @@ #include "load-fragment.h" #include "conf-files.h" -static int iterate_dir(Unit *u, const char *path, UnitDependency dependency, char ***strv) { +static int iterate_dir( + Unit *u, + const char *path, + UnitDependency dependency, + char ***strv) { + _cleanup_closedir_ DIR *d = NULL; int r; @@ -86,7 +91,14 @@ static int iterate_dir(Unit *u, const char *path, UnitDependency dependency, cha return 0; } -static int process_dir(Unit *u, const char *unit_path, const char *name, const char *suffix, UnitDependency dependency, char ***strv) { +static int process_dir( + Unit *u, + const char *unit_path, + const char *name, + const char *suffix, + UnitDependency dependency, + char ***strv) { + int r; char *path; @@ -97,7 +109,7 @@ static int process_dir(Unit *u, const char *unit_path, const char *name, const c path = strjoin(unit_path, "/", name, suffix, NULL); if (!path) - return -ENOMEM; + return log_oom(); if (u->manager->unit_path_cache && !set_get(u->manager->unit_path_cache, path)) @@ -115,13 +127,13 @@ static int process_dir(Unit *u, const char *unit_path, const char *name, const c template = unit_name_template(name); if (!template) - return -ENOMEM; + return log_oom(); path = strjoin(unit_path, "/", template, suffix, NULL); free(template); if (!path) - return -ENOMEM; + return log_oom(); if (u->manager->unit_path_cache && !set_get(u->manager->unit_path_cache, path)) @@ -138,10 +150,10 @@ static int process_dir(Unit *u, const char *unit_path, const char *name, const c } char **unit_find_dropin_paths(Unit *u) { - Iterator i; - char *t; _cleanup_strv_free_ char **strv = NULL; char **configs = NULL; + Iterator i; + char *t; int r; assert(u); @@ -157,14 +169,14 @@ char **unit_find_dropin_paths(Unit *u) { } } - if (!strv_isempty(strv)) { - r = conf_files_list_strv(&configs, ".conf", NULL, (const char**) strv); - if (r < 0) { - log_error("Failed to get list of configuration files: %s", strerror(-r)); - strv_free(configs); - return NULL; - } + if (strv_isempty(strv)) + return NULL; + r = conf_files_list_strv(&configs, ".conf", NULL, (const char**) strv); + if (r < 0) { + log_error("Failed to get list of configuration files: %s", strerror(-r)); + strv_free(configs); + return NULL; } return configs; diff --git a/src/core/machine-id-setup.c b/src/core/machine-id-setup.c index 608b0a5e7e..18e015fe7f 100644 --- a/src/core/machine-id-setup.c +++ b/src/core/machine-id-setup.c @@ -72,16 +72,19 @@ static int generate(char id[34]) { /* First, try reading the D-Bus machine id, unless it is a symlink */ fd = open("/var/lib/dbus/machine-id", O_RDONLY|O_CLOEXEC|O_NOCTTY|O_NOFOLLOW); if (fd >= 0) { - - k = loop_read(fd, id, 32, false); + k = loop_read(fd, id, 33, false); close_nointr_nofail(fd); - if (k >= 32) { - id[32] = '\n'; - id[33] = 0; + if (k == 33 && id[32] == '\n') { - log_info("Initializing machine ID from D-Bus machine ID."); - return 0; + id[32] = 0; + if (id128_is_valid(id)) { + id[32] = '\n'; + id[33] = 0; + + log_info("Initializing machine ID from D-Bus machine ID."); + return 0; + } } } @@ -113,7 +116,7 @@ static int generate(char id[34]) { * $container_uuid the way libvirt/LXC does it */ r = detect_container(NULL); if (r > 0) { - char *e; + _cleanup_free_ char *e = NULL; r = getenv_for_pid(1, "container_uuid", &e); if (r > 0) { @@ -121,12 +124,9 @@ static int generate(char id[34]) { r = shorten_uuid(id, e); if (r >= 0) { log_info("Initializing machine ID from container UUID."); - free(e); return 0; } } - - free(e); } } @@ -183,8 +183,12 @@ int machine_id_setup(void) { } if (S_ISREG(st.st_mode)) - if (loop_read(fd, id, 32, false) >= 32) - return 0; + if (loop_read(fd, id, 33, false) == 33 && id[32] == '\n') { + id[32] = 0; + + if (id128_is_valid(id)) + return 0; + } /* Hmm, so, the id currently stored is not useful, then let's * generate one */ diff --git a/src/libsystemd-id128/sd-id128.c b/src/libsystemd-id128/sd-id128.c index 68c4987149..64ddd09236 100644 --- a/src/libsystemd-id128/sd-id128.c +++ b/src/libsystemd-id128/sd-id128.c @@ -44,30 +44,50 @@ _public_ char *sd_id128_to_string(sd_id128_t id, char s[33]) { return s; } -_public_ int sd_id128_from_string(const char s[33], sd_id128_t *ret) { - unsigned n; +_public_ int sd_id128_from_string(const char s[], sd_id128_t *ret) { + unsigned n, i; sd_id128_t t; + bool is_guid = false; if (!s) return -EINVAL; if (!ret) return -EINVAL; - for (n = 0; n < 16; n++) { + for (n = 0, i = 0; n < 16;) { int a, b; - a = unhexchar(s[n*2]); + if (s[i] == '-') { + /* Is this a GUID? Then be nice, and skip over + * the dashes */ + + if (i == 8) + is_guid = true; + else if (i == 13 || i == 18 || i == 23) { + if (!is_guid) + return -EINVAL; + } else + return -EINVAL; + + i++; + continue; + } + + a = unhexchar(s[i++]); if (a < 0) return -EINVAL; - b = unhexchar(s[n*2+1]); + b = unhexchar(s[i++]); if (b < 0) return -EINVAL; - t.bytes[n] = (a << 4) | b; + t.bytes[n++] = (a << 4) | b; } - if (s[32] != 0) + if (i != (is_guid ? 36 : 32)) + return -EINVAL; + + if (s[i] != 0) return -EINVAL; *ret = t; @@ -90,8 +110,8 @@ static sd_id128_t make_v4_uuid(sd_id128_t id) { _public_ int sd_id128_get_machine(sd_id128_t *ret) { static __thread sd_id128_t saved_machine_id; static __thread bool saved_machine_id_valid = false; - int fd; - char buf[32]; + _cleanup_close_ int fd = -1; + char buf[33]; ssize_t k; unsigned j; sd_id128_t t; @@ -108,13 +128,14 @@ _public_ int sd_id128_get_machine(sd_id128_t *ret) { if (fd < 0) return -errno; - k = loop_read(fd, buf, 32, false); - close_nointr_nofail(fd); - + k = loop_read(fd, buf, 33, false); if (k < 0) return (int) k; - if (k < 32) + if (k != 33) + return -EIO; + + if (buf[32] !='\n') return -EIO; for (j = 0; j < 16; j++) { @@ -139,7 +160,7 @@ _public_ int sd_id128_get_machine(sd_id128_t *ret) { _public_ int sd_id128_get_boot(sd_id128_t *ret) { static __thread sd_id128_t saved_boot_id; static __thread bool saved_boot_id_valid = false; - int fd; + _cleanup_close_ int fd = -1; char buf[36]; ssize_t k; unsigned j; @@ -159,12 +180,10 @@ _public_ int sd_id128_get_boot(sd_id128_t *ret) { return -errno; k = loop_read(fd, buf, 36, false); - close_nointr_nofail(fd); - if (k < 0) return (int) k; - if (k < 36) + if (k != 36) return -EIO; for (j = 0, p = buf; j < 16; j++) { @@ -195,9 +214,9 @@ _public_ int sd_id128_get_boot(sd_id128_t *ret) { } _public_ int sd_id128_randomize(sd_id128_t *ret) { - int fd; - ssize_t k; + _cleanup_close_ int fd = -1; sd_id128_t t; + ssize_t k; if (!ret) return -EINVAL; @@ -207,12 +226,10 @@ _public_ int sd_id128_randomize(sd_id128_t *ret) { return -errno; k = loop_read(fd, &t, 16, false); - close_nointr_nofail(fd); - if (k < 0) return (int) k; - if (k < 16) + if (k != 16) return -EIO; /* Turn this into a valid v4 UUID, to be nice. Note that we diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index a49cbc2238..0a46313636 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -222,6 +222,11 @@ static int parse_argv(int argc, char *argv[]) { break; case ARG_UUID: + if (!id128_is_valid(optarg)) { + log_error("Invalid UUID: %s", optarg); + return -EINVAL; + } + arg_uuid = optarg; break; diff --git a/src/shared/util.c b/src/shared/util.c index 38ee493a81..f9ec14aff4 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5854,3 +5854,44 @@ void* greedy_realloc(void **p, size_t *allocated, size_t need) { *allocated = a; return q; } + +bool id128_is_valid(const char *s) { + size_t i, l; + + l = strlen(s); + if (l == 32) { + + /* Simple formatted 128bit hex string */ + + for (i = 0; i < l; i++) { + char c = s[i]; + + if (!(c >= '0' && c <= '9') && + !(c >= 'a' && c <= 'z') && + !(c >= 'A' && c <= 'Z')) + return false; + } + + } else if (l == 36) { + + /* Formatted UUID */ + + for (i = 0; i < l; i++) { + char c = s[i]; + + if ((i == 8 || i == 13 || i == 18 || i == 23)) { + if (c != '-') + return false; + } else { + if (!(c >= '0' && c <= '9') && + !(c >= 'a' && c <= 'z') && + !(c >= 'A' && c <= 'Z')) + return false; + } + } + + } else + return false; + + return true; +} diff --git a/src/shared/util.h b/src/shared/util.h index e3fc876857..5d1b0b1c31 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -733,3 +733,5 @@ static inline void _reset_locale_(struct _locale_struct_ *s) { } \ !_saved_locale_.quit; }) ; \ _saved_locale_.quit = true) + +bool id128_is_valid(const char *s); diff --git a/src/systemd/sd-id128.h b/src/systemd/sd-id128.h index 79bb8b3c99..3a83932093 100644 --- a/src/systemd/sd-id128.h +++ b/src/systemd/sd-id128.h @@ -40,7 +40,7 @@ union sd_id128 { char *sd_id128_to_string(sd_id128_t id, char s[33]); -int sd_id128_from_string(const char s[33], sd_id128_t *ret); +int sd_id128_from_string(const char *s, sd_id128_t *ret); int sd_id128_randomize(sd_id128_t *ret); diff --git a/src/test/test-id128.c b/src/test/test-id128.c index bfd743eca3..2ed8e292e6 100644 --- a/src/test/test-id128.c +++ b/src/test/test-id128.c @@ -27,10 +27,13 @@ #include "macro.h" #define ID128_WALDI SD_ID128_MAKE(01, 02, 03, 04, 05, 06, 07, 08, 09, 0a, 0b, 0c, 0d, 0e, 0f, 10) +#define STR_WALDI "0102030405060708090a0b0c0d0e0f10" +#define UUID_WALDI "01020304-0506-0708-090a-0b0c0d0e0f10" int main(int argc, char *argv[]) { sd_id128_t id, id2; char t[33]; + _cleanup_free_ char *b = NULL; assert_se(sd_id128_randomize(&id) == 0); printf("random: %s\n", sd_id128_to_string(id, t)); @@ -45,8 +48,28 @@ int main(int argc, char *argv[]) { printf("boot: %s\n", sd_id128_to_string(id, t)); printf("waldi: %s\n", sd_id128_to_string(ID128_WALDI, t)); - - printf("waldi2: " SD_ID128_FORMAT_STR "\n", SD_ID128_FORMAT_VAL(ID128_WALDI)); + assert_se(streq(t, STR_WALDI)); + + assert_se(asprintf(&b, SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL(ID128_WALDI)) == 32); + printf("waldi2: %s\n", b); + assert_se(streq(t, b)); + + assert_se(sd_id128_from_string(UUID_WALDI, &id) >= 0); + assert_se(sd_id128_equal(id, ID128_WALDI)); + + assert_se(sd_id128_from_string("", &id) < 0); + assert_se(sd_id128_from_string("01020304-0506-0708-090a-0b0c0d0e0f101", &id) < 0); + assert_se(sd_id128_from_string("01020304-0506-0708-090a-0b0c0d0e0f10-", &id) < 0); + assert_se(sd_id128_from_string("01020304-0506-0708-090a0b0c0d0e0f10", &id) < 0); + assert_se(sd_id128_from_string("010203040506-0708-090a-0b0c0d0e0f10", &id) < 0); + + assert_se(id128_is_valid(STR_WALDI)); + assert_se(id128_is_valid(UUID_WALDI)); + assert_se(!id128_is_valid("")); + assert_se(!id128_is_valid("01020304-0506-0708-090a-0b0c0d0e0f101")); + assert_se(!id128_is_valid("01020304-0506-0708-090a-0b0c0d0e0f10-")); + assert_se(!id128_is_valid("01020304-0506-0708-090a0b0c0d0e0f10")); + assert_se(!id128_is_valid("010203040506-0708-090a-0b0c0d0e0f10")); return 0; } -- cgit v1.2.1 From 5954c07433b134694256b9989f2ad3f85a643976 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 29 Apr 2013 19:15:30 -0300 Subject: cgroup: do not allow manipulating the cgroup path of units within the systemd:/system subtree --- TODO | 7 ++++--- src/core/unit.c | 35 ++++++++++++++++++++--------------- src/shared/cgroup-util.c | 18 ++++++++++++++---- src/shared/cgroup-util.h | 15 +++++++++++++++ 4 files changed, 53 insertions(+), 22 deletions(-) diff --git a/TODO b/TODO index bb1802813f..1a35703d1a 100644 --- a/TODO +++ b/TODO @@ -26,6 +26,10 @@ Fedora 19: Features: +* handle named vs controller hierarchies correctly in cg_pid_get_path() + +* add nspawn@.service + * investigate endianess issues of UUID vs. GUID * see if we can fix https://bugs.freedesktop.org/show_bug.cgi?id=63672 @@ -57,9 +61,6 @@ Features: * make sure cg_pid_get_path() works properly for co-mounted controllers -* explicitly disallow changing the cgroup path of units in the - name=systemd hierarchy, unless it is outside of /system - * test/: - add 'set -e' to scripts in test/ - make stuff in test/ work with separate output dir diff --git a/src/core/unit.c b/src/core/unit.c index 282852fed3..c0f156c928 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -1977,10 +1977,16 @@ static int unit_add_cgroup(Unit *u, CGroupBonding *b) { } char *unit_default_cgroup_path(Unit *u) { + _cleanup_free_ char *escaped_instance = NULL; + assert(u); + escaped_instance = cg_escape(u->id); + if (!escaped_instance) + return NULL; + if (u->instance) { - _cleanup_free_ char *t = NULL, *escaped_template = NULL, *escaped_instance = NULL; + _cleanup_free_ char *t = NULL, *escaped_template = NULL; t = unit_name_template(u->id); if (!t) @@ -1990,20 +1996,9 @@ char *unit_default_cgroup_path(Unit *u) { if (!escaped_template) return NULL; - escaped_instance = cg_escape(u->id); - if (!escaped_instance) - return NULL; - return strjoin(u->manager->cgroup_hierarchy, "/", escaped_template, "/", escaped_instance, NULL); - } else { - _cleanup_free_ char *escaped = NULL; - - escaped = cg_escape(u->id); - if (!escaped) - return NULL; - - return strjoin(u->manager->cgroup_hierarchy, "/", escaped, NULL); - } + } else + return strjoin(u->manager->cgroup_hierarchy, "/", escaped_instance, NULL); } int unit_add_cgroup_from_text(Unit *u, const char *name, bool overwrite, CGroupBonding **ret) { @@ -2025,7 +2020,7 @@ int unit_add_cgroup_from_text(Unit *u, const char *name, bool overwrite, CGroupB } if (!controller) { - controller = strdup(SYSTEMD_CGROUP_CONTROLLER); + controller = strdup("systemd"); ours = true; } @@ -2035,6 +2030,16 @@ int unit_add_cgroup_from_text(Unit *u, const char *name, bool overwrite, CGroupB return log_oom(); } + if (streq(controller, "systemd")) { + /* Within the systemd unit hierarchy we do not allow changes. */ + if (path_startswith(path, "/system")) { + log_warning_unit(u->id, "Manipulating the systemd:/system cgroup hierarchy is not permitted."); + free(path); + free(controller); + return -EPERM; + } + } + b = cgroup_bonding_find_list(u->cgroup_bondings, controller); if (b) { if (streq(path, b->path)) { diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 46a8128eb4..016080f65b 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -916,6 +916,7 @@ int cg_is_empty_recursive(const char *controller, const char *path, bool ignore_ int cg_split_spec(const char *spec, char **controller, char **path) { const char *e; char *t = NULL, *u = NULL; + _cleanup_free_ char *v = NULL; assert(spec); @@ -928,6 +929,7 @@ int cg_split_spec(const char *spec, char **controller, char **path) { if (!t) return -ENOMEM; + path_kill_slashes(t); *path = t; } @@ -943,7 +945,7 @@ int cg_split_spec(const char *spec, char **controller, char **path) { return -EINVAL; if (controller) { - t = strdup(spec); + t = strdup(normalize_controller(spec)); if (!t) return -ENOMEM; @@ -956,7 +958,10 @@ int cg_split_spec(const char *spec, char **controller, char **path) { return 0; } - t = strndup(spec, e-spec); + v = strndup(spec, e-spec); + if (!v) + return -ENOMEM; + t = strdup(normalize_controller(v)); if (!t) return -ENOMEM; if (!cg_controller_is_valid(t, true)) { @@ -969,12 +974,15 @@ int cg_split_spec(const char *spec, char **controller, char **path) { free(t); return -ENOMEM; } - if (!path_is_safe(u)) { + if (!path_is_safe(u) || + !path_is_absolute(u)) { free(t); free(u); return -EINVAL; } + path_kill_slashes(u); + if (controller) *controller = t; else @@ -993,7 +1001,6 @@ int cg_join_spec(const char *controller, const char *path, char **spec) { assert(path); - if (!controller) controller = "systemd"; else { @@ -1010,6 +1017,8 @@ int cg_join_spec(const char *controller, const char *path, char **spec) { if (!s) return -ENOMEM; + path_kill_slashes(s + strlen(controller) + 1); + *spec = s; return 0; } @@ -1029,6 +1038,7 @@ int cg_mangle_path(const char *path, char **result) { if (!t) return -ENOMEM; + path_kill_slashes(t); *result = t; return 0; } diff --git a/src/shared/cgroup-util.h b/src/shared/cgroup-util.h index a2ee72d67f..7bd02c1008 100644 --- a/src/shared/cgroup-util.h +++ b/src/shared/cgroup-util.h @@ -28,6 +28,21 @@ #include "set.h" #include "def.h" +/* + * General rules: + * + * We accept named hierarchies in the syntax "foo" and "name=foo". + * + * We expect that named hierarchies do not conflict in name with a + * kernel hierarchy, modulo the "name=" prefix. + * + * We always generate "normalized" controller names, i.e. without the + * "name=" prefix. + * + * We require absolute cgroup paths. When returning, we will always + * generate paths with multiple adjacent / removed. + */ + int cg_enumerate_processes(const char *controller, const char *path, FILE **_f); int cg_enumerate_tasks(const char *controller, const char *path, FILE **_f); int cg_read_pid(FILE *f, pid_t *_pid); -- cgit v1.2.1 From 8973790ee6f62132b1b57de15c4edaef2c097004 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 29 Apr 2013 19:48:03 -0300 Subject: cryptsetup: warn if /etc/crypttab is world-readable --- TODO | 62 +++++++++++++++-------------------- src/cryptsetup/cryptsetup-generator.c | 25 +++++++++++--- src/systemd/sd-bus.h | 2 ++ 3 files changed, 48 insertions(+), 41 deletions(-) diff --git a/TODO b/TODO index 1a35703d1a..339a34d015 100644 --- a/TODO +++ b/TODO @@ -121,8 +121,6 @@ Features: and we might want to requeue the mounts local-fs acquired through that automatically. -* neither pkexec nor sudo initialize environ[] from the PAM environment? - * rework specifier logic so that we can distuingish OOM errors from other errors * systemd-inhibit: make taking delay locks useful: support sending SIGINT or SIGTERM on PrepareForSleep() @@ -131,9 +129,7 @@ Features: * remove any syslog support from log.c -- we probably can't do this before split-off udev is gone for good -* fedora: connect the timer units of a service to the service via Also= in [Install] - -* fedora: F20: go timer units all the way, leave cron.daily for cron +* documentation: recommend to connect the timer units of a service to the service via Also= in [Install] * add a tool that lists active timer units plus their next elapstion and the time the units ran last @@ -151,12 +147,6 @@ Features: * man: maybe sort directives in man pages, and take sections from --help and apply them to man too -* add "# export SYSTEMD_PAGER=" to bash login - -* /usr/bin/service should actually show the new command line - -* fedora: suggest auto-restart on failure, but not on sucess and not on coredump. also, ask people to think about changing the start limit logic. Also point people to RestartPreventExitStatus=, SuccessExitStatus= - * write UI tool that pops up emergency messages from the journal as notification * think about window-manager-run-as-user-service problem: exit 0 → activate shutdown.target; exit != 0 → restart service @@ -214,6 +204,9 @@ Features: - pam: when leaving a session explicitly exclude the ReleaseSession() caller process from the killing spree - logind: GetSessionByPID() should accept 0 as PID value - we should probably handle SIGTERM/SIGINT to not leave dot files around, just in case + - add configuration/switches to use + freeze (http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git) and + standby (https://bugs.freedesktop.org/show_bug.cgi?id=57793) as suspend modes * exec: when deinitializating a tty device fix the perms and group, too, not only when initializing. Set access mode/gid to 0620/tty. @@ -239,7 +232,6 @@ Features: - check if we can make journalctl by default use --follow mode inside of less if called without args? - maybe add API to send pairs of iovecs via sd_journal_send - journal: when writing journal auto-rotate if time jumps backwards - - gatewayd: should run under its own UID - journal: add a setgid "systemd-journal" utility to invoke from libsystemd-journal, which passes fds via STDOUT and does PK access - journactl: support negative filtering, i.e. FOOBAR!="waldo", and !FOOBAR for events without FOOBAR. @@ -248,7 +240,6 @@ Features: - journal-send.c, log.c: when the log socket is clogged, and we drop, count this and write a message about this when it gets unclogged again. - journal: find a way to allow dropping history early, based on priority, other rules - journal: When used on NFS, check payload hashes - - journal: When used on NFS make sure wake up sd_journal_wait() every 2s, to handle missing inotify - Introduce journalctl -b to show journal messages of a previous boot - journald: check whether it is OK if the client can still modify delivered journal entries - journal live copy, based on libneon (client) and libmicrohttpd (server) @@ -259,7 +250,6 @@ Features: - journalctl: show multiline log messages sanely, expand tabs, and show all valid utf8 messages - journal: store euid in journal if it differs from uid - journal: sanely deal with entries which are larger than the individual file size, but where the components would fit - - journalctl: make journalctl smarter, and actually check groups that have access to /var/log/journal before printing message about recomming group membership for journal access - Replace utmp, wtmp, btmp, and lastlog completely with journal - Port upower to use the journal for historical power information used in future calculations @@ -288,9 +278,6 @@ Features: - systemctl: "Journal has been rotated since unit was started." message is misleading - support "systemctl stop foobar@.service" to stop all units matching a certain template - Something is wrong with symlink handling of "autovt@.service" in "systemctl list-unit-files" - - add configuration/switches to use - freeze (http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git) and - standby (https://bugs.freedesktop.org/show_bug.cgi?id=57793) as suspend modes * introduce ntp.service (or suchlike) as symlink that is used to arbitrate between various NTP implementations @@ -363,8 +350,6 @@ Features: * currently x-systemd.timeout is lost in the initrd, since crypttab is copied into dracut, but fstab isn't -* WorkingDirectory: support env var replacements like in ExecStart= so that people can use $HOME - * refuse boot if /etc/machine-id is not useful (or set taint?) * nspawn: @@ -385,7 +370,6 @@ Features: - cryptsetup-generator: allow specification of passwords in crypttab itself - move cryptsetup key caching into kernel keyctl? https://bugs.freedesktop.org/show_bug.cgi?id=54982 - - when key file cannot be found, read it from kbd in cryptsetup * move debug shell to tty6 and make sure this doesn't break the gettys on tty6 @@ -454,14 +438,10 @@ Features: * introduce Type=pid-file -* maybe allow services with ExecStop= set, but no ExecStart=? - * change Requires=basic.target to RequisiteOverride=basic.target * support rd.luks.allow-discards= kernel cmdline params in cryptsetup generator -* drop accountsservice's StandardOutput=syslog and Type=dbus fields - * when breaking cycles drop sysv services first, then services from /run, then from /etc, then from /usr * move passno parsing to fstab generator @@ -492,8 +472,6 @@ Features: * cleanup syslog 'priority' vs. 'level' wording -* dbus upstream still refers to dbus.target and shouldn't - * when a service has the same env var set twice we actually store it twice and return that in systemctl show -p... We should only show the last setting * support container_ttys= @@ -508,8 +486,6 @@ Features: * default unix qlen is too small (10). bump sysctl? add sockopt? -* dbus: in fedora, make /var/lib/dbus/machine-id a symlink to /etc/machine-id - * save coredump in Windows/Mozilla minidump format * support crash reporting operation modes (https://live.gnome.org/GnomeOS/Design/Whiteboards/ProblemReporting) @@ -592,8 +568,6 @@ Features: * support systemd.mask= on the kernel command line. -* reuse mkdtemp namespace dirs in /tmp? - * recreate systemd's D-Bus private socket file on SIGUSR2 * Support --test based on current system state @@ -624,6 +598,13 @@ Features: works with ^C - add documentation to systemd.daemon +* bootchart: + - plot per-process IO utilization + - group processes based on service association (cgroups) + - document initcall_debug + - put bootcharts in the journal + - kernel cmdline "bootchart" option for simplicity? + External: * dbus: @@ -649,12 +630,21 @@ External: * kernel: add device_type = "fb", "fbcon" to class "graphics" -* bootchart: - - plot per-process IO utilization - - group processes based on service association (cgroups) - - document initcall_debug - - put bootcharts in the journal - - kernel cmdline "bootchart" option for simplicity? +* drop accountsservice's StandardOutput=syslog and Type=dbus fields + +* dbus upstream still refers to dbus.target and shouldn't + +* dbus: in fedora, make /var/lib/dbus/machine-id a symlink to /etc/machine-id + +* add "# export SYSTEMD_PAGER=" to bash login + +* /usr/bin/service should actually show the new command line + +* fedora: suggest auto-restart on failure, but not on sucess and not on coredump. also, ask people to think about changing the start limit logic. Also point people to RestartPreventExitStatus=, SuccessExitStatus= + +* fedora: F20: go timer units all the way, leave cron.daily for cron + +* neither pkexec nor sudo initialize environ[] from the PAM environment? Regularly: diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index 228039d91f..7eae1c8c67 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -328,13 +328,13 @@ static int parse_proc_cmdline(char ***arg_proc_cmdline_disks, char **arg_proc_cm } int main(int argc, char *argv[]) { + _cleanup_strv_free_ char **arg_proc_cmdline_disks_done = NULL; + _cleanup_strv_free_ char **arg_proc_cmdline_disks = NULL; + _cleanup_free_ char *arg_proc_cmdline_keyfile = NULL; _cleanup_fclose_ FILE *f = NULL; unsigned n = 0; int r = EXIT_SUCCESS; char **i; - _cleanup_strv_free_ char **arg_proc_cmdline_disks_done = NULL; - _cleanup_strv_free_ char **arg_proc_cmdline_disks = NULL; - _cleanup_free_ char *arg_proc_cmdline_keyfile = NULL; if (argc > 1 && argc != 4) { log_error("This program takes three or no arguments."); @@ -357,8 +357,9 @@ int main(int argc, char *argv[]) { return EXIT_SUCCESS; if (arg_read_crypttab) { - f = fopen("/etc/crypttab", "re"); + struct stat st; + f = fopen("/etc/crypttab", "re"); if (!f) { if (errno == ENOENT) r = EXIT_SUCCESS; @@ -366,7 +367,20 @@ int main(int argc, char *argv[]) { r = EXIT_FAILURE; log_error("Failed to open /etc/crypttab: %m"); } - } else for (;;) { + + goto next; + } + + if (fstat(fileno(f), &st) < 0) { + log_error("Failed to stat /etc/crypttab: %m"); + r = EXIT_FAILURE; + goto next; + } + + if (st.st_mode & 0005) + log_warning("/etc/crypttab is world-readable. This is usually not a good idea."); + + for (;;) { char line[LINE_MAX], *l; _cleanup_free_ char *name = NULL, *device = NULL, *password = NULL, *options = NULL; int k; @@ -420,6 +434,7 @@ int main(int argc, char *argv[]) { } } +next: STRV_FOREACH(i, arg_proc_cmdline_disks) { /* Generate units for those UUIDs, which were specified diff --git a/src/systemd/sd-bus.h b/src/systemd/sd-bus.h index 55648e0b34..c1ec50871f 100644 --- a/src/systemd/sd-bus.h +++ b/src/systemd/sd-bus.h @@ -48,6 +48,8 @@ extern "C" { * * - enforce alignment of pointers passed in * - negotiation for attach attributes + * + * - for kernel and unix transports allow setting the unix user/access mode for the node */ typedef struct sd_bus sd_bus; -- cgit v1.2.1 From 5f1dac6bf605871615b35891a3966fa474db5b20 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 29 Apr 2013 19:57:29 -0300 Subject: cryptsetup: warn if keyfiles are world-readable --- TODO | 6 +----- src/cryptsetup/cryptsetup.c | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/TODO b/TODO index 339a34d015..78d168c360 100644 --- a/TODO +++ b/TODO @@ -158,8 +158,6 @@ Features: * use "log level" rather than "log priority" everywhere -* ensure sd_journal_seek_monotonic actually works properly. - * timedate: have global on/off switches for auto-time (NTP), and auto-timezone that connman can subscribe to. * Honour "-" prefix for InaccessibleDirectories= and ReadOnlyDirectories= to @@ -366,10 +364,10 @@ Features: - nspawn: make it work for dwalsh and shared /usr containers -- tmpfs mounts as command line parameters, selinux exec context * cryptsetup: - - cryptsetup-generator: warn if the password files are world-readable - cryptsetup-generator: allow specification of passwords in crypttab itself - move cryptsetup key caching into kernel keyctl? https://bugs.freedesktop.org/show_bug.cgi?id=54982 + - support rd.luks.allow-discards= kernel cmdline params in cryptsetup generator * move debug shell to tty6 and make sure this doesn't break the gettys on tty6 @@ -440,8 +438,6 @@ Features: * change Requires=basic.target to RequisiteOverride=basic.target -* support rd.luks.allow-discards= kernel cmdline params in cryptsetup generator - * when breaking cycles drop sysv services first, then services from /run, then from /etc, then from /usr * move passno parsing to fstab generator diff --git a/src/cryptsetup/cryptsetup.c b/src/cryptsetup/cryptsetup.c index a24e61a035..347394db8e 100644 --- a/src/cryptsetup/cryptsetup.c +++ b/src/cryptsetup/cryptsetup.c @@ -497,15 +497,25 @@ int main(int argc, char *argv[]) { crypt_get_volume_key_size(cd)*8, argv[3]); - if (key_file) - k = crypt_activate_by_keyfile_offset(cd, argv[2], CRYPT_ANY_SLOT, key_file, opt_keyfile_size, - opt_keyfile_offset, flags); + if (key_file) { + struct stat st; + + /* Ideally we'd do this on the open + * fd, but since this is just a + * warning it's OK to do this in two + * steps */ + if (stat(key_file, &st) >= 0 && (st.st_mode & 0005)) + log_warning("Key file %s is world-readable. That's certainly not a good idea.", key_file); + + k = crypt_activate_by_keyfile_offset( + cd, argv[2], CRYPT_ANY_SLOT, key_file, opt_keyfile_size, + opt_keyfile_offset, flags); if (k < 0) { log_error("Failed to activate with key file '%s': %s", key_file, strerror(-k)); key_file = NULL; continue; } - else { + } else { char **p; STRV_FOREACH(p, passwords) { -- cgit v1.2.1 From 8af8afd6b3a34d1218826f55ada8ece8b4e36fed Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 29 Apr 2013 20:22:36 -0300 Subject: cgroup: make cg_pid_get_path() work properly for co-mounted controllers and normalized named hierarchies --- TODO | 4 ---- src/shared/cgroup-util.c | 44 ++++++++++++++++++++++++++++++++++---------- 2 files changed, 34 insertions(+), 14 deletions(-) diff --git a/TODO b/TODO index 78d168c360..eedabd8ba9 100644 --- a/TODO +++ b/TODO @@ -26,8 +26,6 @@ Fedora 19: Features: -* handle named vs controller hierarchies correctly in cg_pid_get_path() - * add nspawn@.service * investigate endianess issues of UUID vs. GUID @@ -59,8 +57,6 @@ Features: * cgtop: make cgtop useful in a container -* make sure cg_pid_get_path() works properly for co-mounted controllers - * test/: - add 'set -e' to scripts in test/ - make stuff in test/ work with separate output dir diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 016080f65b..1366f5865f 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -736,24 +736,27 @@ int cg_set_task_access( } int cg_pid_get_path(const char *controller, pid_t pid, char **path) { - char fs[sizeof("/proc/") - 1 + DECIMAL_STR_MAX(pid_t) + sizeof("/cgroup")]; _cleanup_fclose_ FILE *f = NULL; char line[LINE_MAX]; + const char *fs; size_t cs; assert(path); assert(pid >= 0); - if (controller && !cg_controller_is_valid(controller, true)) - return -EINVAL; + if (controller) { + if (!cg_controller_is_valid(controller, true)) + return -EINVAL; - if (!controller) + controller = normalize_controller(controller); + } else controller = SYSTEMD_CGROUP_CONTROLLER; if (pid == 0) - pid = getpid(); + fs = "/proc/self/cgroup"; + else + fs = procfs_file_alloca(pid, "cgroup"); - sprintf(fs, "/proc/%lu/cgroup", (unsigned long) pid); f = fopen(fs, "re"); if (!f) return errno == ENOENT ? -ESRCH : -errno; @@ -761,7 +764,10 @@ int cg_pid_get_path(const char *controller, pid_t pid, char **path) { cs = strlen(controller); FOREACH_LINE(line, f, return -errno) { - char *l, *p; + char *l, *p, *w, *e; + size_t k; + char *state; + bool found = false; truncate_nl(line); @@ -770,13 +776,31 @@ int cg_pid_get_path(const char *controller, pid_t pid, char **path) { continue; l++; - if (!strneq(l, controller, cs)) + e = strchr(l, ':'); + if (!e) continue; - if (l[cs] != ':') + *e = 0; + + FOREACH_WORD_SEPARATOR(w, k, l, ",", state) { + + if (k == cs && memcmp(w, controller, cs) == 0) { + found = true; + break; + } + + if (k == 5 + cs && + memcmp(w, "name=", 5) == 0 && + memcmp(w+5, controller, cs) == 0) { + found = true; + break; + } + } + + if (!found) continue; - p = strdup(l + cs + 1); + p = strdup(e + 1); if (!p) return -ENOMEM; -- cgit v1.2.1 From 00d1818bb7fbc01086cc956fdb1fcbc8fb90482b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 29 Apr 2013 20:36:49 -0300 Subject: man: we need to be more careful with the unit search paths we document We generally document the suggested paths, not the paths possible in weird, non-standard setups. We do this in order to not confuse administrators/users unnecessarily and to push people to install things into the same directories on all distributions. We are PID 1 after all, the really basic building block of the OS. Unlike for an app there's very little benefit in being entirely relocatable. --- man/systemd.unit.xml | 55 +++++++++++++--------------------------------------- 1 file changed, 13 insertions(+), 42 deletions(-) diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 26c16deb98..68f02fcb6c 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -245,7 +245,7 @@ - Unit load path + Unit Load Path Unit files are loaded from a set of paths determined during compilation, described in the two @@ -254,7 +254,7 @@ lower in the hierarchy, thus allowing overrides. - When systemd is running in session mode + When systemd is running in user mode () and the variable $SYSTEMD_UNIT_PATH is set, this contents of this variable overrides the unit load @@ -278,14 +278,11 @@ /run/systemd/generator.early - Generated units - - - &SYSTEM_CONFIG_UNIT_PATH; - Local configuration + Generated units (early) /etc/systemd/system + Local configuration /run/systemd/systemd @@ -293,26 +290,19 @@ /run/systemd/generator - Generated units + Generated units (middle) /usr/local/lib/systemd/system Units for local packages - - &systemunitdir; - Systemd package configuration - /usr/lib/systemd/system - Units for installed packages - - - /lib/systemd/system + Units for installed packages /run/systemd/generator.late - Generated units + Generated units (late) @@ -335,14 +325,11 @@ /tmp/systemd-generator.early.XXXXXX - Generated units - - - &USER_CONFIG_UNIT_PATH; - Local configuration + Generated units (early) /etc/systemd/user + Local configuration /run/systemd/user @@ -350,40 +337,24 @@ /tmp/systemd-generator.XXXXXX - Generated units + Generated units (middle) /usr/local/lib/systemd/user - Units for local packages - - - /usr/local/share/systemd/user - - - &userunitdir; - Systemd package configuration + Units for local packages /usr/lib/systemd/user - Units for installed packages - - - /usr/share/systemd/user + Units for installed packages /tmp/systemd-generator.late.XXXXXX - Generated units + Generated units (late) - Note: the paths listed above are set at - compilation time and differ between distributions. The - "authoritative" list is printed by - systemd at during start and daemon - reconfiguration. - Additional units might be loaded into systemd ("linked") from directories not on the unit load path. See the link command for -- cgit v1.2.1 From c12d1eec7fdd55d9e32e8e7443d41999809d66a2 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 29 Apr 2013 20:39:46 -0300 Subject: build-sys: add makefile stub link to nss-myhostname/ --- src/nss-myhostname/Makefile | 1 + 1 file changed, 1 insertion(+) create mode 120000 src/nss-myhostname/Makefile diff --git a/src/nss-myhostname/Makefile b/src/nss-myhostname/Makefile new file mode 120000 index 0000000000..d0b0e8e008 --- /dev/null +++ b/src/nss-myhostname/Makefile @@ -0,0 +1 @@ +../Makefile \ No newline at end of file -- cgit v1.2.1 From 0df2d38abfc787f40149072340d79b4f7b682a24 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 29 Apr 2013 20:55:34 -0300 Subject: man: improve documentation for specifiers --- man/systemd.unit.xml | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 68f02fcb6c..f924ef69dd 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -1204,7 +1204,7 @@ %f Unescaped file name - This is either the unescaped instance name (if applicable) with / prepended (if applicable), or the prefix name similarly prepended with /. + This is either the unescaped instance name (if applicable) with / prepended (if applicable), or the prefix name similarly prepended with /. %c @@ -1213,13 +1213,13 @@ %r - Root control group path of systemd - + Root control group path where units are placed. + For system instances this usually resolves to /system, except in containers, where the path might be prefixed with the container's root control group. %R - Parent directory of the root control group path of systemd - + Parent directory of the control group path where units are placed. + For system instances this usually resolves to /, except in containers, where this resolves to the container's root directory. This specifier is particularly useful in the ControlGroup= setting (see systemd.exec5). %t @@ -1244,14 +1244,7 @@ %s User shell - This is the shell of the configured - user of the unit, or (if none is set) the user - running the systemd instance. If the user is - root (UID equal to 0), the - shell configured in account database is - ignored and /bin/sh is - always used. - + This is the shell of the configured user of the unit, or (if none is set) the user running the systemd instance. If the user is root (UID equal to 0), the shell configured in account database is ignored and /bin/sh is always used. %m -- cgit v1.2.1 From 05947befcec9afb83b9ce48d613ff372c63e2ed1 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 29 Apr 2013 21:11:37 -0300 Subject: units: add an easy-to-use unit template file systemd-nspawn@.service for running containers as system services --- Makefile.am | 4 +++- src/nspawn/nspawn.c | 18 ++++++++++++------ units/.gitignore | 1 + units/systemd-nspawn@.service.in | 18 ++++++++++++++++++ 4 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 units/systemd-nspawn@.service.in diff --git a/Makefile.am b/Makefile.am index ff70223395..9e0f5fb20e 100644 --- a/Makefile.am +++ b/Makefile.am @@ -442,7 +442,8 @@ nodist_systemunit_DATA = \ units/initrd-parse-etc.service \ units/initrd-cleanup.service \ units/initrd-udevadm-cleanup-db.service \ - units/initrd-switch-root.service + units/initrd-switch-root.service \ + units/systemd-nspawn@.service dist_userunit_DATA = \ units/user/default.target \ @@ -489,6 +490,7 @@ EXTRA_DIST += \ units/initrd-cleanup.service.in \ units/initrd-udevadm-cleanup-db.service.in \ units/initrd-switch-root.service.in \ + units/systemd-nspawn@.service.in \ introspect.awk CLEANFILES += \ diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 0a46313636..d772b478fd 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1231,9 +1231,13 @@ int main(int argc, char *argv[]) { log_parse_environment(); log_open(); - r = parse_argv(argc, argv); - if (r <= 0) + k = parse_argv(argc, argv); + if (k < 0) goto finish; + else if (k == 0) { + r = EXIT_SUCCESS; + goto finish; + } if (arg_directory) { char *p; @@ -1321,8 +1325,8 @@ int main(int argc, char *argv[]) { goto finish; } - r = cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, newcg, false); - if (r <= 0 && r != -ENOENT) { + k = cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, newcg, true); + if (k <= 0 && k != -ENOENT) { log_error("Container already running."); free(newcg); @@ -1366,6 +1370,8 @@ int main(int argc, char *argv[]) { goto finish; } + sd_notify(0, "READY=1"); + assert_se(sigemptyset(&mask) == 0); sigset_add_many(&mask, SIGCHLD, SIGWINCH, SIGTERM, SIGINT, -1); assert_se(sigprocmask(SIG_BLOCK, &mask, NULL) == 0); @@ -1701,8 +1707,8 @@ int main(int argc, char *argv[]) { if (saved_attr_valid) tcsetattr(STDIN_FILENO, TCSANOW, &saved_attr); - r = wait_for_terminate(pid, &status); - if (r < 0) { + k = wait_for_terminate(pid, &status); + if (k < 0) { r = EXIT_FAILURE; break; } diff --git a/units/.gitignore b/units/.gitignore index d2f3eb40d6..606d947634 100644 --- a/units/.gitignore +++ b/units/.gitignore @@ -57,3 +57,4 @@ /initrd-parse-etc.service /initrd-switch-root.service /initrd-udevadm-cleanup-db.service +/systemd-nspawn@.service diff --git a/units/systemd-nspawn@.service.in b/units/systemd-nspawn@.service.in new file mode 100644 index 0000000000..c0d5886f88 --- /dev/null +++ b/units/systemd-nspawn@.service.in @@ -0,0 +1,18 @@ +# This file is part of systemd. +# +# systemd is free software; you can redistribute it and/or modify it +# under the terms of the GNU Lesser General Public License as published by +# the Free Software Foundation; either version 2.1 of the License, or +# (at your option) any later version. + +[Unit] +Description=Container %i +Documentation=man:systemd-nspawn(1) + +[Service] +ExecStart=@bindir@/systemd-nspawn -bjD /var/lib/container/%i +ControlGroup=%R/machine/%i.nspawn cpu:/ +Type=notify + +[Install] +Also=multi-user.target -- cgit v1.2.1 From 675aae254e37f2c4eeb86a2b944eeb660ad682b3 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 30 Apr 2013 08:35:51 -0300 Subject: update TODO --- TODO | 2 -- 1 file changed, 2 deletions(-) diff --git a/TODO b/TODO index eedabd8ba9..052ec1394c 100644 --- a/TODO +++ b/TODO @@ -26,8 +26,6 @@ Fedora 19: Features: -* add nspawn@.service - * investigate endianess issues of UUID vs. GUID * see if we can fix https://bugs.freedesktop.org/show_bug.cgi?id=63672 -- cgit v1.2.1 From 0f0cf8d2e329a6b5d1e7791da527f8704fc95df2 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 30 Apr 2013 19:13:54 +0200 Subject: hwdb: update --- hwdb/20-OUI.hwdb | 175 +++++++++++++++++++++++-- hwdb/20-pci-vendor-model.hwdb | 295 ++++++++++++++++++++++++++++++++++++------ 2 files changed, 421 insertions(+), 49 deletions(-) diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb index afdc9e4b2a..91d2668808 100644 --- a/hwdb/20-OUI.hwdb +++ b/hwdb/20-OUI.hwdb @@ -2090,7 +2090,7 @@ OUI:0050C22C1* ID_OUI_FROM_DATABASE=Stage Tec Entwicklungsgesellschaft für professionelle Audio OUI:0050C22C2* - ID_OUI_FROM_DATABASE=smarteye corporation + ID_OUI_FROM_DATABASE=Smarteye Corporation OUI:0050C22C3* ID_OUI_FROM_DATABASE=Digital SP Ltd @@ -2606,7 +2606,7 @@ OUI:0050C236E* ID_OUI_FROM_DATABASE=Minicom Advanced Systems Ltd OUI:0050C236F* - ID_OUI_FROM_DATABASE=SOFTHARD Technology Ltd + ID_OUI_FROM_DATABASE=XIMEA s.r.o. OUI:0050C2370* ID_OUI_FROM_DATABASE=Europe Technologies @@ -9827,7 +9827,7 @@ OUI:0050C2CE1* ID_OUI_FROM_DATABASE=Satellink Inc. OUI:0050C2CE2* - ID_OUI_FROM_DATABASE=Sicon srl + ID_OUI_FROM_DATABASE=Sicon s.r.l. OUI:0050C2CE3* ID_OUI_FROM_DATABASE=Industrial Automatics Design Bureau @@ -10328,7 +10328,7 @@ OUI:0050C2D8A* ID_OUI_FROM_DATABASE=OptoLink Industria e Comercio Ltda OUI:0050C2D8B* - ID_OUI_FROM_DATABASE=Sicon srl + ID_OUI_FROM_DATABASE=Sicon s.r.l. OUI:0050C2D8C* ID_OUI_FROM_DATABASE=iRphotonics @@ -10703,7 +10703,7 @@ OUI:0050C2E09* ID_OUI_FROM_DATABASE=ATEME OUI:0050C2E0A* - ID_OUI_FROM_DATABASE=Sicon srl + ID_OUI_FROM_DATABASE=Sicon s.r.l. OUI:0050C2E0B* ID_OUI_FROM_DATABASE=Seartech @@ -11885,7 +11885,7 @@ OUI:0050C2F96* ID_OUI_FROM_DATABASE=JLCooper Electronics OUI:0050C2F97* - ID_OUI_FROM_DATABASE=Sicon srl + ID_OUI_FROM_DATABASE=Sicon s.r.l. OUI:0050C2F98* ID_OUI_FROM_DATABASE=Infotech North America @@ -12862,6 +12862,36 @@ OUI:40D8550DD* OUI:40D8550DE* ID_OUI_FROM_DATABASE=Vishay Nobel AB +OUI:40D8550DF* + ID_OUI_FROM_DATABASE=Xadi Inc + +OUI:40D8550E0* + ID_OUI_FROM_DATABASE=Richter + +OUI:40D8550E1* + ID_OUI_FROM_DATABASE=STV Electronic GmbH + +OUI:40D8550E2* + ID_OUI_FROM_DATABASE=Keocko International + +OUI:40D8550E3* + ID_OUI_FROM_DATABASE=Medigus Ltd + +OUI:40D8550E4* + ID_OUI_FROM_DATABASE=ARAGO SYSTEMS + +OUI:40D8550E5* + ID_OUI_FROM_DATABASE=Triton Electronics LTD + +OUI:40D8550E6* + ID_OUI_FROM_DATABASE=Kyoritsu Electric Corp. + +OUI:40D8550E7* + ID_OUI_FROM_DATABASE=LIGHTSTAR + +OUI:40D8550E8* + ID_OUI_FROM_DATABASE=HEITEC AG + OUI:000000* ID_OUI_FROM_DATABASE=XEROX CORPORATION @@ -23960,7 +23990,7 @@ OUI:000E9B* ID_OUI_FROM_DATABASE=Ambit Microsystems Corporation OUI:000E9C* - ID_OUI_FROM_DATABASE=Pemstar + ID_OUI_FROM_DATABASE=Benchmark Electronics OUI:000E9D* ID_OUI_FROM_DATABASE=Tiscali UK Ltd @@ -27635,7 +27665,7 @@ OUI:001367* ID_OUI_FROM_DATABASE=Narayon. Co., Ltd. OUI:001368* - ID_OUI_FROM_DATABASE=Maersk Data Defence + ID_OUI_FROM_DATABASE=Saab Danmark A/S OUI:001369* ID_OUI_FROM_DATABASE=Honda Electron Co., LED. @@ -49141,6 +49171,9 @@ OUI:00C14F* OUI:00C2C6* ID_OUI_FROM_DATABASE=Intel Corporate +OUI:00C5DB* + ID_OUI_FROM_DATABASE=Datatech Sistemas Digitales Avanzados SL + OUI:00C610* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -51628,6 +51661,9 @@ OUI:0868D0* OUI:0868EA* ID_OUI_FROM_DATABASE=EITO ELECTRONICS CO., LTD. +OUI:087045* + ID_OUI_FROM_DATABASE=Apple + OUI:087572* ID_OUI_FROM_DATABASE=Obelux Oy @@ -51832,6 +51868,9 @@ OUI:0C5A19* OUI:0C6076* ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. +OUI:0C6803* + ID_OUI_FROM_DATABASE=Cisco + OUI:0C6E4F* ID_OUI_FROM_DATABASE=PrimeVOLT Co., Ltd. @@ -52171,6 +52210,9 @@ OUI:10768A* OUI:1077B1* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD +OUI:1078CE* + ID_OUI_FROM_DATABASE=Hanvit SI, Inc. + OUI:1078D2* ID_OUI_FROM_DATABASE=ELITEGROUP COMPUTER SYSTEM CO., LTD. @@ -52189,6 +52231,9 @@ OUI:108CCF* OUI:1093E9* ID_OUI_FROM_DATABASE=Apple, Inc. +OUI:109AB9* + ID_OUI_FROM_DATABASE=Tosibox Oy + OUI:109ADD* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -52321,6 +52366,9 @@ OUI:141BF0* OUI:1423D7* ID_OUI_FROM_DATABASE=EUTRONIX CO., LTD. +OUI:142D8B* + ID_OUI_FROM_DATABASE=Incipio Technologies, Inc + OUI:142DF5* ID_OUI_FROM_DATABASE=Amphitech @@ -52801,6 +52849,9 @@ OUI:1C43EC* OUI:1C4593* ID_OUI_FROM_DATABASE=Texas Instruments +OUI:1C48F9* + ID_OUI_FROM_DATABASE=GN Netcom A/S + OUI:1C4AF7* ID_OUI_FROM_DATABASE=AMON INC @@ -53167,6 +53218,9 @@ OUI:20DC93* OUI:20DCE6* ID_OUI_FROM_DATABASE=TP-LINK TECHNOLOGIES CO., LTD. +OUI:20DF3F* + ID_OUI_FROM_DATABASE=Nanjing SAC Power Grid Automation Co., Ltd. + OUI:20E52A* ID_OUI_FROM_DATABASE=NETGEAR INC., @@ -53773,6 +53827,9 @@ OUI:2C8BF2* OUI:2C9127* ID_OUI_FROM_DATABASE=Eintechno Corporation +OUI:2C922C* + ID_OUI_FROM_DATABASE=Kishu Giken Kogyou Company Ltd,. + OUI:2C9464* ID_OUI_FROM_DATABASE=Cincoze Co., Ltd. @@ -53920,6 +53977,9 @@ OUI:3039F2* OUI:303D08* ID_OUI_FROM_DATABASE=GLINTT TES S.A. +OUI:303EAD* + ID_OUI_FROM_DATABASE=Sonavox Canada Inc + OUI:304174* ID_OUI_FROM_DATABASE=ALTEC LANSING LLC @@ -53971,6 +54031,9 @@ OUI:306E5C* OUI:3071B2* ID_OUI_FROM_DATABASE=Hangzhou Prevail Optoelectronic Equipment Co.,LTD. +OUI:30786B* + ID_OUI_FROM_DATABASE=TIANJIN Golden Pentagon Electronics Co., Ltd. + OUI:3078C2* ID_OUI_FROM_DATABASE=Innowireless, Co. Ltd. @@ -55054,6 +55117,9 @@ OUI:443D21* OUI:443EB2* ID_OUI_FROM_DATABASE=DEOTRON Co., LTD. +OUI:444A65* + ID_OUI_FROM_DATABASE=Silverflare Ltd. + OUI:444C0C* ID_OUI_FROM_DATABASE=Apple Inc @@ -55306,6 +55372,9 @@ OUI:4891F6* OUI:489BE2* ID_OUI_FROM_DATABASE=SCI Innovations Ltd +OUI:489D24* + ID_OUI_FROM_DATABASE=Research In Motion + OUI:48A22D* ID_OUI_FROM_DATABASE=Shenzhen Huaxuchang Telecom Technology Co.,Ltd @@ -55387,6 +55456,9 @@ OUI:48F925* OUI:48FCB8* ID_OUI_FROM_DATABASE=Woodstream Corporation +OUI:4C0082* + ID_OUI_FROM_DATABASE=Cisco + OUI:4C022E* ID_OUI_FROM_DATABASE=CMR KOREA CO., LTD @@ -55471,6 +55543,9 @@ OUI:4C5585* OUI:4C55B8* ID_OUI_FROM_DATABASE=Turkcell Teknoloji +OUI:4C55CC* + ID_OUI_FROM_DATABASE=ACKme Networks Pty Ltd + OUI:4C5DCD* ID_OUI_FROM_DATABASE=Oy Finnish Electric Vehicle Technologies Ltd @@ -55588,6 +55663,9 @@ OUI:4CCA53* OUI:4CCC34* ID_OUI_FROM_DATABASE=Motorola Solutions Inc. +OUI:4CD637* + ID_OUI_FROM_DATABASE=Qsono Electronics Co., Ltd + OUI:4CE676* ID_OUI_FROM_DATABASE=Buffalo Inc. @@ -55741,6 +55819,9 @@ OUI:509772* OUI:509F27* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd +OUI:50A0BF* + ID_OUI_FROM_DATABASE=Alba Fiber Systems Inc. + OUI:50A4C8* ID_OUI_FROM_DATABASE=Samsung Electronics Co.,Ltd @@ -56092,6 +56173,9 @@ OUI:587675* OUI:587A4D* ID_OUI_FROM_DATABASE=Stonesoft Corporation +OUI:587E61* + ID_OUI_FROM_DATABASE=Hisense Electric Co., Ltd + OUI:587FC8* ID_OUI_FROM_DATABASE=S2M @@ -57223,6 +57307,9 @@ OUI:68EC62* OUI:68ED43* ID_OUI_FROM_DATABASE=Research In Motion +OUI:68EE96* + ID_OUI_FROM_DATABASE=Cisco SPVTG + OUI:68EFBD* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -57757,6 +57844,9 @@ OUI:74458A* OUI:7446A0* ID_OUI_FROM_DATABASE=Hewlett Packard +OUI:744BE9* + ID_OUI_FROM_DATABASE=EXPLORER HYPERTECH CO.,LTD + OUI:744D79* ID_OUI_FROM_DATABASE=Arrive Systems Inc. @@ -57844,6 +57934,9 @@ OUI:74A4A7* OUI:74A722* ID_OUI_FROM_DATABASE=LG Electronics +OUI:74ADB7* + ID_OUI_FROM_DATABASE=China Mobile Group Device Co.,Ltd. + OUI:74AE76* ID_OUI_FROM_DATABASE=iNovo Broadband, Inc. @@ -58129,6 +58222,9 @@ OUI:78A714* OUI:78AB60* ID_OUI_FROM_DATABASE=ABB Australia +OUI:78ABBB* + ID_OUI_FROM_DATABASE=Samsung Electronics Co.,LTD + OUI:78ACC0* ID_OUI_FROM_DATABASE=Hewlett-Packard Company @@ -58180,6 +58276,9 @@ OUI:78D129* OUI:78D34F* ID_OUI_FROM_DATABASE=Pace-O-Matic, Inc. +OUI:78D38D* + ID_OUI_FROM_DATABASE=HONGKONG YUNLINK TECHNOLOGY LIMITED + OUI:78D5B5* ID_OUI_FROM_DATABASE=NAVIELEKTRO KY @@ -59011,6 +59110,9 @@ OUI:88685C* OUI:886B76* ID_OUI_FROM_DATABASE=CHINA HOPEFUL GROUP HOPEFUL ELECTRIC CO.,LTD +OUI:887398* + ID_OUI_FROM_DATABASE=K2E Tekpoint + OUI:887556* ID_OUI_FROM_DATABASE=Cisco @@ -59344,6 +59446,9 @@ OUI:8CE7B3* OUI:8CEEC6* ID_OUI_FROM_DATABASE=Precepscion Pty. Ltd. +OUI:8CF945* + ID_OUI_FROM_DATABASE=Power Automation pte Ltd + OUI:8CF9C9* ID_OUI_FROM_DATABASE=MESADA Technology Co.,Ltd. @@ -59656,6 +59761,9 @@ OUI:94319B* OUI:9433DD* ID_OUI_FROM_DATABASE=Taco Electronic Solutions, Inc. +OUI:9436E0* + ID_OUI_FROM_DATABASE=Sichuan Bihong Broadcast & Television New Technologies Co.,Ltd + OUI:9439E5* ID_OUI_FROM_DATABASE=Hon Hai Precision Ind. Co.,Ltd. @@ -60052,6 +60160,9 @@ OUI:9C066E* OUI:9C0DAC* ID_OUI_FROM_DATABASE=Tymphany HK Limited +OUI:9C1465* + ID_OUI_FROM_DATABASE=Edata Elektronik San. ve Tic. A.Ş. + OUI:9C1874* ID_OUI_FROM_DATABASE=Nokia Danmark A/S @@ -60898,6 +61009,9 @@ OUI:A895B0* OUI:A8968A* ID_OUI_FROM_DATABASE=Apple +OUI:A897DC* + ID_OUI_FROM_DATABASE=IBM + OUI:A898C6* ID_OUI_FROM_DATABASE=Shinbo Co., Ltd. @@ -61741,6 +61855,9 @@ OUI:B82ADC* OUI:B82CA0* ID_OUI_FROM_DATABASE=Honeywell HomMed +OUI:B836D8* + ID_OUI_FROM_DATABASE=Videoswitch + OUI:B838CA* ID_OUI_FROM_DATABASE=Kyokko Tsushin System CO.,LTD @@ -61912,6 +62029,9 @@ OUI:B8C855* OUI:B8CA3A* ID_OUI_FROM_DATABASE=Dell PCBA Test +OUI:B8CD93* + ID_OUI_FROM_DATABASE=Penetek, Inc + OUI:B8CDA7* ID_OUI_FROM_DATABASE=Maxeler Technologies Ltd. @@ -62233,6 +62353,9 @@ OUI:C02BFC* OUI:C02C7A* ID_OUI_FROM_DATABASE=Shen Zhen Horn audio Co., Ltd. +OUI:C034B4* + ID_OUI_FROM_DATABASE=Gigastone Corporation + OUI:C035BD* ID_OUI_FROM_DATABASE=Velocytech Aps @@ -62485,6 +62608,9 @@ OUI:C44B44* OUI:C44EAC* ID_OUI_FROM_DATABASE=Shenzhen Shiningworth Technology Co., Ltd. +OUI:C45444* + ID_OUI_FROM_DATABASE=QUANTA COMPUTER INC. + OUI:C455A6* ID_OUI_FROM_DATABASE=Cadac Holdings Ltd @@ -62545,6 +62671,9 @@ OUI:C47DCC* OUI:C47DFE* ID_OUI_FROM_DATABASE=A.N. Solutions GmbH +OUI:C47F51* + ID_OUI_FROM_DATABASE=Inventek Systems + OUI:C4823F* ID_OUI_FROM_DATABASE=Fujian Newland Auto-ID Tech. Co,.Ltd. @@ -62653,6 +62782,9 @@ OUI:C81AFE* OUI:C81E8E* ID_OUI_FROM_DATABASE=ADV Security (S) Pte Ltd +OUI:C81F66* + ID_OUI_FROM_DATABASE=Dell Inc PCBA Test + OUI:C8208E* ID_OUI_FROM_DATABASE=Storagedata @@ -62860,6 +62992,9 @@ OUI:C8DE51* OUI:C8DF7C* ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:C8E0EB* + ID_OUI_FROM_DATABASE=Apple + OUI:C8E1A7* ID_OUI_FROM_DATABASE=Vertu Corporation Limited @@ -63118,6 +63253,9 @@ OUI:CCE798* OUI:CCE7DF* ID_OUI_FROM_DATABASE=American Magnetics, Inc. +OUI:CCE8AC* + ID_OUI_FROM_DATABASE=SOYEA Technology Co.,Ltd. + OUI:CCEA1C* ID_OUI_FROM_DATABASE=DCONWORKS Co., Ltd @@ -63619,6 +63757,9 @@ OUI:D4D184* OUI:D4D249* ID_OUI_FROM_DATABASE=Power Ethernet +OUI:D4D50D* + ID_OUI_FROM_DATABASE=Southwest Microwave, Inc + OUI:D4D748* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. @@ -63859,6 +64000,9 @@ OUI:D8D27C* OUI:D8D385* ID_OUI_FROM_DATABASE=Hewlett-Packard Company +OUI:D8D43C* + ID_OUI_FROM_DATABASE=Sony Corporation + OUI:D8D5B9* ID_OUI_FROM_DATABASE=Rainforest Automation, Inc. @@ -63895,6 +64039,9 @@ OUI:D8F0F2* OUI:D8FE8F* ID_OUI_FROM_DATABASE=IDFone Co., Ltd. +OUI:D8FEE3* + ID_OUI_FROM_DATABASE=D-Link International + OUI:DC0265* ID_OUI_FROM_DATABASE=Meditech Kft @@ -65545,6 +65692,9 @@ OUI:F835DD* OUI:F83DFF* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd +OUI:F842FB* + ID_OUI_FROM_DATABASE=Yasuda Joho Co.,ltd. + OUI:F8462D* ID_OUI_FROM_DATABASE=SYNTEC Incorporation @@ -65557,6 +65707,9 @@ OUI:F84897* OUI:F85063* ID_OUI_FROM_DATABASE=Verathon +OUI:F8516D* + ID_OUI_FROM_DATABASE=Denwa Technology Corp. + OUI:F852DF* ID_OUI_FROM_DATABASE=VNL Europe AB @@ -65794,6 +65947,9 @@ OUI:FC455F* OUI:FC48EF* ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD +OUI:FC4BBC* + ID_OUI_FROM_DATABASE=Sunplus Technology Co., Ltd. + OUI:FC4DD4* ID_OUI_FROM_DATABASE=Universal Global Scientific Industrial Co., Ltd. @@ -65812,6 +65968,9 @@ OUI:FC5B24* OUI:FC5B26* ID_OUI_FROM_DATABASE=MikroBits +OUI:FC6018* + ID_OUI_FROM_DATABASE=Zhejiang Kangtai Electric Co., Ltd. + OUI:FC6198* ID_OUI_FROM_DATABASE=NEC Personal Products, Ltd diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb index a46426f520..ea67fee344 100644 --- a/hwdb/20-pci-vendor-model.hwdb +++ b/hwdb/20-pci-vendor-model.hwdb @@ -1590,7 +1590,7 @@ pci:v00001001d00009100* ID_MODEL_FROM_DATABASE=INI-9100/9100W SCSI Host pci:v00001002* - ID_VENDOR_FROM_DATABASE=AMD/ATI [Advanced Micro Devices, Inc.] + ID_VENDOR_FROM_DATABASE=Advanced Micro Devices, Inc. [AMD/ATI] pci:v00001002d00001304* ID_MODEL_FROM_DATABASE=Kaveri @@ -3924,13 +3924,13 @@ pci:v00001002d00005B70* ID_MODEL_FROM_DATABASE=RV370 [Radeon X300 SE] pci:v00001002d00005B70sv00001462sd00000403* - ID_MODEL_FROM_DATABASE=RX300SE-TD128E (MS-8940) (secondary display) + ID_MODEL_FROM_DATABASE=Radeon X300 SE 128MB DDR pci:v00001002d00005B70sv0000174Bsd00000501* - ID_MODEL_FROM_DATABASE=Radeon X300SE + ID_MODEL_FROM_DATABASE=Sapphire Radeon X300 SE pci:v00001002d00005B70sv0000196Dsd00001087* - ID_MODEL_FROM_DATABASE=X300SE HM + ID_MODEL_FROM_DATABASE=Radeon X300 SE HyperMemory pci:v00001002d00005B72* ID_MODEL_FROM_DATABASE=RV380 [Radeon X300/X550/X1050 Series] (Secondary) @@ -4128,7 +4128,22 @@ pci:v00001002d00006658* ID_MODEL_FROM_DATABASE=Bonaire pci:v00001002d0000665C* - ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790] + ID_MODEL_FROM_DATABASE=Bonaire XT [Radeon HD 7790/8770] + +pci:v00001002d0000665Csv00001043sd00000452* + ID_MODEL_FROM_DATABASE=Radeon HD 7790 DirectCU II OC + +pci:v00001002d0000665Csv00001462sd00002930* + ID_MODEL_FROM_DATABASE=Radeon HD 7790 OC + +pci:v00001002d0000665Csv00001462sd00002932* + ID_MODEL_FROM_DATABASE=Radeon HD 8770 + +pci:v00001002d0000665Csv00001682sd00003310* + ID_MODEL_FROM_DATABASE=Radeon HD 7790 Black Edition 2 GB + +pci:v00001002d0000665Csv0000174Bsd0000E253* + ID_MODEL_FROM_DATABASE=Radeon HD 7790 Dual-X OC pci:v00001002d0000665Csv00001787sd00002329* ID_MODEL_FROM_DATABASE=Radeon HD 7790 TurboDuo @@ -4359,7 +4374,7 @@ pci:v00001002d00006779sv0000174Bsd00007450* ID_MODEL_FROM_DATABASE=Radeon HD 7450 pci:v00001002d00006779sv0000174Bsd0000E164* - ID_MODEL_FROM_DATABASE=Sapphire HD 6450 1GB DDR3 + ID_MODEL_FROM_DATABASE=Radeon HD 6450 1 GB DDR3 pci:v00001002d00006779sv000017AFsd00008450* ID_MODEL_FROM_DATABASE=Radeon HD 8450 OEM @@ -4461,13 +4476,13 @@ pci:v00001002d0000679Asv00001002sd00000B01* ID_MODEL_FROM_DATABASE=Radeon HD 8950 OEM pci:v00001002d0000679Asv00001002sd00003000* - ID_MODEL_FROM_DATABASE=Radeon HD 7950 Boost Edition + ID_MODEL_FROM_DATABASE=Tahiti PRO2 [Radeon HD 7950 Boost] pci:v00001002d0000679Asv00001462sd00003000* ID_MODEL_FROM_DATABASE=Radeon HD 8950 OEM pci:v00001002d0000679B* - ID_MODEL_FROM_DATABASE=New Zealand [Radeon HD 7990] + ID_MODEL_FROM_DATABASE=Malta [Radeon HD 7990] pci:v00001002d0000679E* ID_MODEL_FROM_DATABASE=Tahiti LE [Radeon HD 7870 XT] @@ -4536,7 +4551,7 @@ pci:v00001002d00006819* ID_MODEL_FROM_DATABASE=Pitcairn PRO [Radeon HD 7850] pci:v00001002d00006819sv0000174Bsd0000E221* - ID_MODEL_FROM_DATABASE=Sapphire HD 7850 2G GDDR5 PCI-E DVI-I/DVI-D/HDMI/DP + ID_MODEL_FROM_DATABASE=Sapphire Radeon HD 7850 2 GB GDDR5 DVI-I/DVI-D/HDMI/DP pci:v00001002d00006820* ID_MODEL_FROM_DATABASE=Venus XTX [Radeon HD 8800M Series] @@ -4584,7 +4599,10 @@ pci:v00001002d00006831* ID_MODEL_FROM_DATABASE=Cape Verde [AMD Radeon HD 7700M Series] pci:v00001002d00006837* - ID_MODEL_FROM_DATABASE=Cape Verde LE [Radeon HD 7700 Series] + ID_MODEL_FROM_DATABASE=Cape Verde LE [Radeon HD 7730] + +pci:v00001002d00006837sv00001787sd00003000* + ID_MODEL_FROM_DATABASE=Radeon HD 6570 pci:v00001002d00006838* ID_MODEL_FROM_DATABASE=Cape Verde @@ -4599,7 +4617,7 @@ pci:v00001002d0000683D* ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 7770 GHz Edition] pci:v00001002d0000683Dsv00001002sd00000030* - ID_MODEL_FROM_DATABASE=Cape Verde XT [Radeon HD 8760 OEM] + ID_MODEL_FROM_DATABASE=Radeon HD 8760 OEM pci:v00001002d0000683Dsv00001019sd00000030* ID_MODEL_FROM_DATABASE=Radeon HD 8760 OEM @@ -4625,9 +4643,6 @@ pci:v00001002d00006843* pci:v00001002d00006849* ID_MODEL_FROM_DATABASE=Lombok [AMD Radeon HD 7400 Series] -pci:v00001002d0000684C* - ID_MODEL_FROM_DATABASE=Pitcairn [ATI FirePro V(FireGL V) Graphics Adapter] - pci:v00001002d00006880* ID_MODEL_FROM_DATABASE=Cypress @@ -4662,22 +4677,22 @@ pci:v00001002d00006898sv0000106Bsd000000D0* ID_MODEL_FROM_DATABASE=Radeon HD 5870 Mac Edition pci:v00001002d00006898sv00001462sd00008032* - ID_MODEL_FROM_DATABASE=R5870 PM2D1G + ID_MODEL_FROM_DATABASE=Radeon HD 5870 1 GB GDDR5 pci:v00001002d00006898sv0000174Bsd00006870* - ID_MODEL_FROM_DATABASE=Radeon HD 6870 OEM + ID_MODEL_FROM_DATABASE=Radeon HD 6870 1600SP Edition pci:v00001002d00006899* ID_MODEL_FROM_DATABASE=Cypress PRO [Radeon HD 5850] pci:v00001002d00006899sv00001043sd00000330* - ID_MODEL_FROM_DATABASE=EAH5850 [Radeon HD5850] + ID_MODEL_FROM_DATABASE=Radeon HD 5850 pci:v00001002d00006899sv0000174Bsd0000237B* ID_MODEL_FROM_DATABASE=Radeon HD 5850 X2 pci:v00001002d00006899sv0000174Bsd00006850* - ID_MODEL_FROM_DATABASE=Radeon HD 6850 OEM + ID_MODEL_FROM_DATABASE=Radeon HD 6850 1440SP Edition pci:v00001002d0000689B* ID_MODEL_FROM_DATABASE=Cypress PRO [Radeon HD 6800 Series] @@ -4734,7 +4749,7 @@ pci:v00001002d000068BE* ID_MODEL_FROM_DATABASE=Juniper PRO [Radeon HD 5750] pci:v00001002d000068BEsv0000148Csd00003000* - ID_MODEL_FROM_DATABASE=Powercolor HD 6750 + ID_MODEL_FROM_DATABASE=Radeon HD 6750 pci:v00001002d000068BF* ID_MODEL_FROM_DATABASE=Juniper PRO [Radeon HD 6750] @@ -5403,10 +5418,10 @@ pci:v00001002d00009442* ID_MODEL_FROM_DATABASE=RV770 [Radeon HD 4850] pci:v00001002d00009442sv00001002sd00000502* - ID_MODEL_FROM_DATABASE=MSI R4850-T2D512 + ID_MODEL_FROM_DATABASE=MSI Radeon HD 4850 512MB GDDR3 pci:v00001002d00009442sv0000174Bsd0000E810* - ID_MODEL_FROM_DATABASE=Sapphire HD 4850 512MB GDDR3 PCI-E Dual Slot Fansink + ID_MODEL_FROM_DATABASE=Sapphire Radeon HD 4850 512MB GDDR3 pci:v00001002d00009443* ID_MODEL_FROM_DATABASE=R700 [Radeon HD 4850 X2] @@ -5477,14 +5492,20 @@ pci:v00001002d00009491* pci:v00001002d00009495* ID_MODEL_FROM_DATABASE=RV730 [Radeon HD 4600 AGP Series] -pci:v00001002d00009495sv00001002sd00009495* - ID_MODEL_FROM_DATABASE=RV730 XT [PowerColor Radeon HD4670 AGP 1GB DDR] +pci:v00001002d00009495sv00001002sd00000028* + ID_MODEL_FROM_DATABASE=Radeon HD 4650/4670 AGP + +pci:v00001002d00009495sv00001092sd00000028* + ID_MODEL_FROM_DATABASE=Radeon HD 4670 AGP 512MB DDR2 pci:v00001002d00009495sv00001458sd00000028* - ID_MODEL_FROM_DATABASE=HD4650 + ID_MODEL_FROM_DATABASE=Radeon HD 4650 AGP pci:v00001002d00009495sv00001682sd00000028* - ID_MODEL_FROM_DATABASE=HD465X + ID_MODEL_FROM_DATABASE=Radeon HD 4650 AGP + +pci:v00001002d00009495sv0000174Bsd00000028* + ID_MODEL_FROM_DATABASE=Radeon HD 4650 AGP DDR2 pci:v00001002d00009498* ID_MODEL_FROM_DATABASE=RV730 PRO [Radeon HD 4650] @@ -5528,17 +5549,14 @@ pci:v00001002d000094C1sv00001028sd00000D02* pci:v00001002d000094C3* ID_MODEL_FROM_DATABASE=RV610 [Radeon HD 2400 PRO] -pci:v00001002d000094C3sv00001002sd000094C3* - ID_MODEL_FROM_DATABASE=Radeon HD 2400PRO - pci:v00001002d000094C3sv00001028sd00000302* ID_MODEL_FROM_DATABASE=Radeon HD 2400 Pro pci:v00001002d000094C3sv0000174Bsd0000E400* - ID_MODEL_FROM_DATABASE=Sapphire HD 2400 PRO video device + ID_MODEL_FROM_DATABASE=Sapphire Radeon HD 2400 PRO pci:v00001002d000094C3sv000018BCsd00003550* - ID_MODEL_FROM_DATABASE=GeCube Radeon HD2400 PRO + ID_MODEL_FROM_DATABASE=GeCube Radeon HD 2400 PRO pci:v00001002d000094C4* ID_MODEL_FROM_DATABASE=RV610 LE [Radeon HD 2400 PRO AGP] @@ -5724,10 +5742,10 @@ pci:v00001002d00009596sv00001043sd00000028* ID_MODEL_FROM_DATABASE=EAH3650 SILENT/HTDI/512M/A pci:v00001002d00009597* - ID_MODEL_FROM_DATABASE=RV635 [Radeon HD 3600 Series] + ID_MODEL_FROM_DATABASE=RV635 PRO [Radeon HD 3650 AGP] pci:v00001002d00009598* - ID_MODEL_FROM_DATABASE=RV635 [Radeon HD 3600 Series] + ID_MODEL_FROM_DATABASE=RV635 [Radeon HD 3650/3750/4570/4580] pci:v00001002d00009598sv00001002sd00009598* ID_MODEL_FROM_DATABASE=Mobility Radeon HD 3600 @@ -5745,7 +5763,7 @@ pci:v00001002d00009598sv0000174Bsd00004580* ID_MODEL_FROM_DATABASE=RV635 PRO [Radeon HD 4580] pci:v00001002d00009599* - ID_MODEL_FROM_DATABASE=RV635 [Radeon HD 3650 AGP] + ID_MODEL_FROM_DATABASE=RV635 PRO [Radeon HD 3650 AGP] pci:v00001002d000095C0* ID_MODEL_FROM_DATABASE=RV620 PRO [Radeon HD 3470] @@ -22754,9 +22772,6 @@ pci:v000010DEd000010C0* pci:v000010DEd000010C3* ID_MODEL_FROM_DATABASE=GT218 [GeForce 8400 GS Rev. 3] -pci:v000010DEd000010C3sv000010DEsd0000066D* - ID_MODEL_FROM_DATABASE=G98 [GeForce 8400GS] - pci:v000010DEd000010C5* ID_MODEL_FROM_DATABASE=GT218 [GeForce 405] @@ -22980,7 +22995,7 @@ pci:v000010DEd00001206* ID_MODEL_FROM_DATABASE=GF114 [GeForce GTX 555] pci:v000010DEd00001207* - ID_MODEL_FROM_DATABASE=GF114 [GeForce GTX 645] + ID_MODEL_FROM_DATABASE=GF114 [GeForce GT 645 OEM] pci:v000010DEd00001208* ID_MODEL_FROM_DATABASE=GF114 [GeForce GTX 560 SE] @@ -40076,6 +40091,9 @@ pci:v000014E4d00004312sv0000103Csd00001373* pci:v000014E4d00004312sv0000103Csd000030B5* ID_MODEL_FROM_DATABASE=Presario V3242AU +pci:v000014E4d00004312sv0000106Bsd00000089* + ID_MODEL_FROM_DATABASE=AirPort Extreme + pci:v000014E4d00004312sv00001371sd0000103C* ID_MODEL_FROM_DATABASE=Broadcom 802.11 Multiband-netwerkadapter(6715s) @@ -40316,6 +40334,21 @@ pci:v000014E4d00004328sv0000103Csd00001368* pci:v000014E4d00004328sv0000103Csd00001369* ID_MODEL_FROM_DATABASE=BCM4321 802.11a/b/g/n Wireless LAN Controller +pci:v000014E4d00004328sv0000106Bsd00000087* + ID_MODEL_FROM_DATABASE=AirPort Extreme + +pci:v000014E4d00004328sv0000106Bsd00000088* + ID_MODEL_FROM_DATABASE=AirPort Extreme + +pci:v000014E4d00004328sv0000106Bsd0000008B* + ID_MODEL_FROM_DATABASE=AirPort Extreme + +pci:v000014E4d00004328sv0000106Bsd0000008C* + ID_MODEL_FROM_DATABASE=AirPort Extreme + +pci:v000014E4d00004328sv0000106Bsd00000090* + ID_MODEL_FROM_DATABASE=AirPort Extreme + pci:v000014E4d00004328sv000014E4sd00004328* ID_MODEL_FROM_DATABASE=BCM4328 802.11a/b/g/n @@ -40346,6 +40379,9 @@ pci:v000014E4d0000432B* pci:v000014E4d0000432Bsv00001028sd0000000D* ID_MODEL_FROM_DATABASE=Wireless 1510 Wireless-N WLAN Mini-Card +pci:v000014E4d0000432Bsv0000106Bsd0000008D* + ID_MODEL_FROM_DATABASE=AirPort Extreme + pci:v000014E4d0000432Bsv0000106Bsd0000008E* ID_MODEL_FROM_DATABASE=AirPort Extreme @@ -40364,6 +40400,24 @@ pci:v000014E4d00004331* pci:v000014E4d00004331sv0000106Bsd000000D6* ID_MODEL_FROM_DATABASE=AirPort Extreme +pci:v000014E4d00004331sv0000106Bsd000000E4* + ID_MODEL_FROM_DATABASE=AirPort Extreme + +pci:v000014E4d00004331sv0000106Bsd000000EF* + ID_MODEL_FROM_DATABASE=AirPort Extreme + +pci:v000014E4d00004331sv0000106Bsd000000F4* + ID_MODEL_FROM_DATABASE=AirPort Extreme + +pci:v000014E4d00004331sv0000106Bsd000000F5* + ID_MODEL_FROM_DATABASE=AirPort Extreme + +pci:v000014E4d00004331sv0000106Bsd0000010E* + ID_MODEL_FROM_DATABASE=AirPort Extreme + +pci:v000014E4d00004331sv0000106Bsd0000010F* + ID_MODEL_FROM_DATABASE=AirPort Extreme + pci:v000014E4d00004333* ID_MODEL_FROM_DATABASE=Serial (EDGE/GPRS modem part of Option GT Combo Edge) @@ -40379,6 +40433,15 @@ pci:v000014E4d00004353sv00001028sd0000000E* pci:v000014E4d00004353sv0000103Csd00001509* ID_MODEL_FROM_DATABASE=WMIB-275N Half-size Mini PCIe Card +pci:v000014E4d00004353sv0000106Bsd00000093* + ID_MODEL_FROM_DATABASE=AirPort Extreme + +pci:v000014E4d00004353sv0000106Bsd000000D1* + ID_MODEL_FROM_DATABASE=AirPort Extreme + +pci:v000014E4d00004353sv0000106Bsd000000E9* + ID_MODEL_FROM_DATABASE=AirPort Extreme + pci:v000014E4d00004357* ID_MODEL_FROM_DATABASE=BCM43225 802.11b/g/n @@ -43593,7 +43656,7 @@ pci:v0000168Cd0000001Csv0000103Csd0000137A* ID_MODEL_FROM_DATABASE=AR5BXB63 (Foxconn) 802.11bg Mini PCIe NIC pci:v0000168Cd0000001Csv0000106Bsd00000086* - ID_MODEL_FROM_DATABASE=AR5BXB6 802.11abg Wireless Mini PCIe Card + ID_MODEL_FROM_DATABASE=AirPort Extreme pci:v0000168Cd0000001Csv0000144Fsd00007106* ID_MODEL_FROM_DATABASE=WLL3140 (Toshiba PA3501U-1MPC) 802.11bg Wireless Mini PCIe Card @@ -43704,7 +43767,7 @@ pci:v0000168Cd00000024* ID_MODEL_FROM_DATABASE=AR5418 Wireless Network Adapter [AR5008E 802.11(a)bgn] (PCI-Express) pci:v0000168Cd00000024sv0000106Bsd00000087* - ID_MODEL_FROM_DATABASE=AR5BXB72 802.11abgn Mini PCIe Card [AR5008E-3NX] + ID_MODEL_FROM_DATABASE=AirPort Extreme pci:v0000168Cd00000024sv00001186sd00003A70* ID_MODEL_FROM_DATABASE=DWA-556 Xtreme N PCI Express Desktop Adapter @@ -43742,6 +43805,9 @@ pci:v0000168Cd0000002Asv0000105Bsd0000E006* pci:v0000168Cd0000002Asv0000105Bsd0000E01F* ID_MODEL_FROM_DATABASE=T77H047.31 802.11bgn Wireless Half-size Mini PCIe Card [AR9283] +pci:v0000168Cd0000002Asv0000106Bsd0000008F* + ID_MODEL_FROM_DATABASE=AirPort Extreme + pci:v0000168Cd0000002Asv000011ADsd00006600* ID_MODEL_FROM_DATABASE=WN6600A 802.11bgn Wireless Mini PCIe Card [AR9281] @@ -43820,6 +43886,9 @@ pci:v0000168Cd00000030* pci:v0000168Cd00000030sv0000103Csd00001627* ID_MODEL_FROM_DATABASE=AR9380/HB112 802.11abgn 3×3 Wi-Fi Adapter +pci:v0000168Cd00000030sv0000106Bsd0000009A* + ID_MODEL_FROM_DATABASE=AirPort Extreme + pci:v0000168Cd00000030sv00001186sd00003A7E* ID_MODEL_FROM_DATABASE=DWA-566 Wireless N 300 Dual Band PCIe Desktop Adapter @@ -45689,6 +45758,9 @@ pci:v000018F7d00000020* pci:v000018F7d00000021* ID_MODEL_FROM_DATABASE=422/8-PCIe Serial PCIe Adapter [Fastcom] +pci:v000018F7d00000022* + ID_MODEL_FROM_DATABASE=SuperFSCC/4-LVDS Serial PCIe Adapter [Fastcom] + pci:v000018FB* ID_VENDOR_FROM_DATABASE=Resilience Corporation @@ -49995,10 +50067,151 @@ pci:v00008086d000008AFsv00008086sd00001017* ID_MODEL_FROM_DATABASE=Centrino Wireless-N 100 BG pci:v00008086d000008B1* - ID_MODEL_FROM_DATABASE=Intel(R) Dual Band Wireless-AC 7260 + ID_MODEL_FROM_DATABASE=Wireless 7260 + +pci:v00008086d000008B1sv00008086sd00004060* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260 + +pci:v00008086d000008B1sv00008086sd00004062* + ID_MODEL_FROM_DATABASE=Wireless-N 7260 + +pci:v00008086d000008B1sv00008086sd00004070* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260 + +pci:v00008086d000008B1sv00008086sd00004160* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260 + +pci:v00008086d000008B1sv00008086sd00004162* + ID_MODEL_FROM_DATABASE=Wireless-N 7260 + +pci:v00008086d000008B1sv00008086sd00004170* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260 + +pci:v00008086d000008B1sv00008086sd00004460* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260 + +pci:v00008086d000008B1sv00008086sd00004462* + ID_MODEL_FROM_DATABASE=Wireless-N 7260 + +pci:v00008086d000008B1sv00008086sd00004470* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260 + +pci:v00008086d000008B1sv00008086sd0000486E* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260 + +pci:v00008086d000008B1sv00008086sd00004870* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260 + +pci:v00008086d000008B1sv00008086sd00004A6C* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260 + +pci:v00008086d000008B1sv00008086sd00004A6E* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260 + +pci:v00008086d000008B1sv00008086sd00004A70* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260 + +pci:v00008086d000008B1sv00008086sd0000C020* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260 + +pci:v00008086d000008B1sv00008086sd0000C060* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260 + +pci:v00008086d000008B1sv00008086sd0000C062* + ID_MODEL_FROM_DATABASE=Wireless-N 7260 + +pci:v00008086d000008B1sv00008086sd0000C070* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260 + +pci:v00008086d000008B1sv00008086sd0000C160* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260 + +pci:v00008086d000008B1sv00008086sd0000C162* + ID_MODEL_FROM_DATABASE=Wireless-N 7260 + +pci:v00008086d000008B1sv00008086sd0000C170* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260 + +pci:v00008086d000008B1sv00008086sd0000C420* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260 + +pci:v00008086d000008B1sv00008086sd0000C460* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260 + +pci:v00008086d000008B1sv00008086sd0000C462* + ID_MODEL_FROM_DATABASE=Wireless-N 7260 + +pci:v00008086d000008B1sv00008086sd0000C470* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260 pci:v00008086d000008B2* - ID_MODEL_FROM_DATABASE=Intel(R) Dual Band Wireless-AC 7260 + ID_MODEL_FROM_DATABASE=Wireless 7260 + +pci:v00008086d000008B2sv00008086sd00004220* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260 + +pci:v00008086d000008B2sv00008086sd00004260* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260 + +pci:v00008086d000008B2sv00008086sd00004262* + ID_MODEL_FROM_DATABASE=Wireless-N 7260 + +pci:v00008086d000008B2sv00008086sd00004270* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260 + +pci:v00008086d000008B2sv00008086sd0000C220* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260 + +pci:v00008086d000008B2sv00008086sd0000C260* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 7260 + +pci:v00008086d000008B2sv00008086sd0000C262* + ID_MODEL_FROM_DATABASE=Wireless-N 7260 + +pci:v00008086d000008B2sv00008086sd0000C270* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 7260 + +pci:v00008086d000008B3* + ID_MODEL_FROM_DATABASE=Wireless 3160 + +pci:v00008086d000008B3sv00008086sd00000060* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-N 3160 + +pci:v00008086d000008B3sv00008086sd00000062* + ID_MODEL_FROM_DATABASE=Wireless-N 3160 + +pci:v00008086d000008B3sv00008086sd00000070* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 3160 + +pci:v00008086d000008B3sv00008086sd00000170* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 3160 + +pci:v00008086d000008B3sv00008086sd00000470* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 3160 + +pci:v00008086d000008B3sv00008086sd00008060* + ID_MODEL_FROM_DATABASE=Dual Band Wireless N-3160 + +pci:v00008086d000008B3sv00008086sd00008062* + ID_MODEL_FROM_DATABASE=Wireless N-3160 + +pci:v00008086d000008B3sv00008086sd00008070* + ID_MODEL_FROM_DATABASE=Dual Band Wireless AC 3160 + +pci:v00008086d000008B3sv00008086sd00008170* + ID_MODEL_FROM_DATABASE=Dual Band Wireless AC 3160 + +pci:v00008086d000008B3sv00008086sd00008470* + ID_MODEL_FROM_DATABASE=Dual Band Wireless AC 3160 + +pci:v00008086d000008B4* + ID_MODEL_FROM_DATABASE=Wireless 3160 + +pci:v00008086d000008B4sv00008086sd00000270* + ID_MODEL_FROM_DATABASE=Dual Band Wireless-AC 3160 + +pci:v00008086d000008B4sv00008086sd00008270* + ID_MODEL_FROM_DATABASE=Dual Band Wireless AC 3160 pci:v00008086d00000960* ID_MODEL_FROM_DATABASE=80960RP (i960RP) Microprocessor/Bridge -- cgit v1.2.1 From 27eda16e98ca5763bd505647f974676741917833 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Tue, 30 Apr 2013 19:15:35 +0200 Subject: kdbus: update kdbus.h from upstream --- src/libsystemd-bus/bus-kernel.c | 1 - src/libsystemd-bus/kdbus.h | 49 ++++++++++++++++++++++++----------------- 2 files changed, 29 insertions(+), 21 deletions(-) diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index 61013ff3c4..2be2acf2a9 100644 --- a/src/libsystemd-bus/bus-kernel.c +++ b/src/libsystemd-bus/bus-kernel.c @@ -275,7 +275,6 @@ int bus_kernel_take_fd(sd_bus *b) { struct kdbus_cmd_hello hello = { .conn_flags = KDBUS_CMD_HELLO_ACCEPT_FD| - KDBUS_CMD_HELLO_ACCEPT_MMAP| KDBUS_CMD_HELLO_ATTACH_COMM| KDBUS_CMD_HELLO_ATTACH_EXE| KDBUS_CMD_HELLO_ATTACH_CMDLINE| diff --git a/src/libsystemd-bus/kdbus.h b/src/libsystemd-bus/kdbus.h index 4b3acae0e4..a597c87dc7 100644 --- a/src/libsystemd-bus/kdbus.h +++ b/src/libsystemd-bus/kdbus.h @@ -67,10 +67,11 @@ struct kdbus_timestamp { /* Message Item Types */ enum { + KDBUS_MSG_NULL, + /* Filled in by userspace */ - KDBUS_MSG_NULL, /* empty record */ - KDBUS_MSG_PAYLOAD, /* .data */ - KDBUS_MSG_PAYLOAD_VEC, /* .data_vec */ + KDBUS_MSG_PAYLOAD, /* .data, inline memory */ + KDBUS_MSG_PAYLOAD_VEC, /* .data_vec, reference to memory area */ KDBUS_MSG_UNIX_FDS, /* .data_fds of file descriptors */ KDBUS_MSG_BLOOM, /* for broadcasts, carries bloom filter blob in .data */ KDBUS_MSG_DST_NAME, /* destination's well-known name, in .str */ @@ -98,9 +99,14 @@ enum { KDBUS_MSG_REPLY_DEAD, /* dito */ }; +enum { + KDBUS_VEC_ALIGNED = 1 << 0, +}; + struct kdbus_vec { __u64 address; __u64 size; + __u64 flags; }; /** @@ -133,12 +139,12 @@ struct kdbus_msg_item { }; enum { - KDBUS_MSG_FLAGS_EXPECT_REPLY = 1, - KDBUS_MSG_FLAGS_NO_AUTO_START = 2, /* possibly? */ + KDBUS_MSG_FLAGS_EXPECT_REPLY = 1 << 0, + KDBUS_MSG_FLAGS_NO_AUTO_START = 1 << 1, }; enum { - KDBUS_PAYLOAD_NONE = 0, + KDBUS_PAYLOAD_NONE, KDBUS_PAYLOAD_DBUS1 = 0x4442757356657231ULL, /* 'DBusVer1' */ KDBUS_PAYLOAD_GVARIANT = 0x4756617269616e74ULL, /* 'GVariant' */ }; @@ -169,20 +175,22 @@ struct kdbus_msg { }; enum { + KDBUS_POLICY_NULL, KDBUS_POLICY_NAME, KDBUS_POLICY_ACCESS, }; enum { - KDBUS_POLICY_USER, - KDBUS_POLICY_GROUP, - KDBUS_POLICY_WORLD, + KDBUS_POLICY_ACCESS_NULL, + KDBUS_POLICY_ACCESS_USER, + KDBUS_POLICY_ACCESS_GROUP, + KDBUS_POLICY_ACCESS_WORLD, }; enum { - KDBUS_POLICY_RECV = 4, - KDBUS_POLICY_SEND = 2, - KDBUS_POLICY_OWN = 1, + KDBUS_POLICY_RECV = 1 << 2, + KDBUS_POLICY_SEND = 1 << 1, + KDBUS_POLICY_OWN = 1 << 0, }; struct kdbus_policy { @@ -207,7 +215,6 @@ struct kdbus_cmd_policy { enum { KDBUS_CMD_HELLO_STARTER = 1 << 0, KDBUS_CMD_HELLO_ACCEPT_FD = 1 << 1, - KDBUS_CMD_HELLO_ACCEPT_MMAP = 1 << 2, /* The following have an effect on directed messages only -- * not for broadcasts */ @@ -223,9 +230,9 @@ enum { /* Flags for kdbus_cmd_bus_make, kdbus_cmd_ep_make and * kdbus_cmd_ns_make */ enum { - KDBUS_ACCESS_GROUP = 1, - KDBUS_ACCESS_WORLD = 2, - KDBUS_POLICY_OPEN = 4, + KDBUS_ACCESS_GROUP = 1 << 0, + KDBUS_ACCESS_WORLD = 1 << 1, + KDBUS_POLICY_OPEN = 1 << 2, }; /* Items to append to kdbus_cmd_bus_make, kdbus_cmd_ep_make and @@ -316,12 +323,12 @@ struct kdbus_cmd_ns_make { enum { /* userspace → kernel */ - KDBUS_CMD_NAME_REPLACE_EXISTING = 1, - KDBUS_CMD_NAME_QUEUE = 2, - KDBUS_CMD_NAME_ALLOW_REPLACEMENT = 4, + KDBUS_CMD_NAME_REPLACE_EXISTING = 1 << 0, + KDBUS_CMD_NAME_QUEUE = 1 << 1, + KDBUS_CMD_NAME_ALLOW_REPLACEMENT = 1 << 2, /* kernel → userspace */ - KDBUS_CMD_NAME_IN_QUEUE = 0x200, + KDBUS_CMD_NAME_IN_QUEUE = 1 << 16, }; struct kdbus_cmd_name { @@ -338,6 +345,7 @@ struct kdbus_cmd_names { }; enum { + KDBUS_CMD_NAME_INFO_ITEM_NULL, KDBUS_CMD_NAME_INFO_ITEM_NAME, /* userspace → kernel */ KDBUS_CMD_NAME_INFO_ITEM_SECLABEL, /* kernel → userspace */ KDBUS_CMD_NAME_INFO_ITEM_AUDIT, /* kernel → userspace */ @@ -358,6 +366,7 @@ struct kdbus_cmd_name_info { }; enum { + KDBUS_CMD_MATCH_NULL, KDBUS_CMD_MATCH_BLOOM, /* Matches a mask blob against KDBUS_MSG_BLOOM */ KDBUS_CMD_MATCH_SRC_NAME, /* Matches a name string against KDBUS_MSG_SRC_NAMES */ KDBUS_CMD_MATCH_NAME_ADD, /* Matches a name string against KDBUS_MSG_NAME_ADD */ -- cgit v1.2.1 From a432cb691ca3c1e18b012cb8e9f6e5654b3652a2 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Tue, 30 Apr 2013 13:11:49 -0400 Subject: util: Add _sentinel_ to strextend() Since it must be NULL terminated. --- src/shared/util.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/util.h b/src/shared/util.h index 5d1b0b1c31..eee66ccf64 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -633,7 +633,7 @@ static inline void *mempset(void *s, int c, size_t n) { char *hexmem(const void *p, size_t l); void *unhexmem(const char *p, size_t l); -char *strextend(char **x, ...); +char *strextend(char **x, ...) _sentinel_; char *strrep(const char *s, unsigned n); void* greedy_realloc(void **p, size_t *allocated, size_t need); -- cgit v1.2.1 From 96de7c047f23eb07af0844de8d450530d56f8dfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 29 Apr 2013 22:02:57 -0400 Subject: zsh-completion: add s-a critical-chain --- shell-completion/systemd-zsh-completion.zsh | 10 ++++++---- src/analyze/systemd-analyze.c | 4 ++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/shell-completion/systemd-zsh-completion.zsh b/shell-completion/systemd-zsh-completion.zsh index 73db3786d6..a30fcf8c05 100644 --- a/shell-completion/systemd-zsh-completion.zsh +++ b/shell-completion/systemd-zsh-completion.zsh @@ -294,11 +294,13 @@ _systemd_inhibit_command(){ _systemd_analyze_command(){ local -a _systemd_analyze_cmds + # Descriptions taken from systemd-analyze --help. _systemd_analyze_cmds=( - 'time:Print the time taken to start' - 'blame:prints a list of all running units, ordered by the time they took to initialize' - 'plot:prints an SVG graphic detailing which system services have been started at what time' - 'dot:Dump dependency graph for dot(1)' + 'time:Print time spent in the kernel before reaching userspace' + 'blame:Print list of running units ordered by time to init' + 'critical-chain:Print a tree of the time critical chain of units' + 'plot:Output SVG graphic showing service initialization' + 'dot:Dump dependency graph (in dot(1) format)' ) if (( CURRENT == 1 )); then diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c index 14c07e409e..7f0b69c5a1 100644 --- a/src/analyze/systemd-analyze.c +++ b/src/analyze/systemd-analyze.c @@ -1137,6 +1137,10 @@ static void analyze_help(void) " plot Output SVG graphic showing service initialization\n" " dot Dump dependency graph (in dot(1) format)\n\n", program_invocation_short_name); + + /* When updating this list, including descriptions, apply + * changes to shell-completion/bash/systemd and + * shell-completion/systemd-zsh-completion.zsh too. */ } static int parse_argv(int argc, char *argv[]) -- cgit v1.2.1 From 57277cbe40bc9a1421c810cee39c606f11d39008 Mon Sep 17 00:00:00 2001 From: Daniel Wallace Date: Tue, 30 Apr 2013 18:42:22 -0500 Subject: zsh_completion: fix udevadm monitor flags The brackets in the _arguments description of udevadm monitor need to be escaped. --- shell-completion/systemd-zsh-completion.zsh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shell-completion/systemd-zsh-completion.zsh b/shell-completion/systemd-zsh-completion.zsh index a30fcf8c05..b29a2e9223 100644 --- a/shell-completion/systemd-zsh-completion.zsh +++ b/shell-completion/systemd-zsh-completion.zsh @@ -971,7 +971,7 @@ _udevadm_monitor(){ '--kernel[Print the kernel uevents.]' \ '--udev[Print the udev event after the rule processing.]' \ '--property[Also print the properties of the event.]' \ - '--subsystem-match=[Filter events by subsystem[/devtype].]' \ + '--subsystem-match=[Filter events by subsystem/\[devtype\].]' \ '--tag-match=[Filter events by property.]' \ '--help[Print help text.]' } -- cgit v1.2.1 From 38158b920e772ea3a7cc9dfcf705666ce3aa5ce3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 30 Apr 2013 00:35:38 -0400 Subject: cgls: add --machine/-M cg_get_machine_path is modified to include the escaped machine name + ".nspawn" if the machine argument is nonnull. --- man/systemd-cgls.xml | 15 +++++++++++++- src/analyze/systemd-analyze.c | 1 - src/cgls/cgls.c | 46 ++++++++++++++++++++++++++++++------------- src/login/sd-login.c | 4 ++-- src/nspawn/nspawn.c | 22 ++------------------- src/shared/cgroup-util.c | 17 ++++++++++------ src/shared/cgroup-util.h | 2 +- src/test/test-cgroup-util.c | 2 +- 8 files changed, 63 insertions(+), 46 deletions(-) diff --git a/man/systemd-cgls.xml b/man/systemd-cgls.xml index b280b87e6d..6249d05a8c 100644 --- a/man/systemd-cgls.xml +++ b/man/systemd-cgls.xml @@ -49,7 +49,9 @@ - systemd-cgls OPTIONS CGROUP + systemd-cgls + OPTIONS + CGROUP @@ -125,6 +127,16 @@ threads in output. + + + + + Limit cgroups shown to + the part corresponding to the + container MACHINE. + + + @@ -142,6 +154,7 @@ systemd1, systemctl1, systemd-cgtop1, + systemd-nspawn1, ps1 diff --git a/src/analyze/systemd-analyze.c b/src/analyze/systemd-analyze.c index 7f0b69c5a1..bb86ec7da8 100644 --- a/src/analyze/systemd-analyze.c +++ b/src/analyze/systemd-analyze.c @@ -780,7 +780,6 @@ static int list_dependencies_one(DBusConnection *bus, const char *name, unsigned } static int list_dependencies(DBusConnection *bus) { - _cleanup_free_ char *unit = NULL; _cleanup_strv_free_ char **units = NULL; char ts[FORMAT_TIMESPAN_MAX]; struct unit_times *times; diff --git a/src/cgls/cgls.c b/src/cgls/cgls.c index 8ddd733dfd..ef3e5672ab 100644 --- a/src/cgls/cgls.c +++ b/src/cgls/cgls.c @@ -39,6 +39,7 @@ static bool arg_no_pager = false; static bool arg_kernel_threads = false; static bool arg_all = false; static int arg_full = -1; +static char* arg_machine = NULL; static void help(void) { @@ -49,7 +50,8 @@ static void help(void) { " --no-pager Do not pipe output into a pager\n" " -a --all Show all groups, including empty\n" " --full Do not ellipsize output\n" - " -k Include kernel threads in output\n", + " -k Include kernel threads in output\n" + " -M --machine Show container\n", program_invocation_short_name); } @@ -67,6 +69,7 @@ static int parse_argv(int argc, char *argv[]) { { "no-pager", no_argument, NULL, ARG_NO_PAGER }, { "all", no_argument, NULL, 'a' }, { "full", no_argument, NULL, ARG_FULL }, + { "machine", required_argument, NULL, 'M' }, { NULL, 0, NULL, 0 } }; @@ -75,7 +78,7 @@ static int parse_argv(int argc, char *argv[]) { assert(argc >= 1); assert(argv); - while ((c = getopt_long(argc, argv, "hka", options, NULL)) >= 0) { + while ((c = getopt_long(argc, argv, "hkaM:", options, NULL)) >= 0) { switch (c) { @@ -104,6 +107,10 @@ static int parse_argv(int argc, char *argv[]) { arg_kernel_threads = true; break; + case 'M': + arg_machine = optarg; + break; + case '?': return -EINVAL; @@ -119,6 +126,7 @@ static int parse_argv(int argc, char *argv[]) { int main(int argc, char *argv[]) { int r = 0, retval = EXIT_FAILURE; int output_flags; + char _cleanup_free_ *root = NULL; log_parse_environment(); log_open(); @@ -144,13 +152,20 @@ int main(int argc, char *argv[]) { (arg_full > 0) * OUTPUT_FULL_WIDTH; if (optind < argc) { - unsigned i; + int i; - for (i = (unsigned) optind; i < (unsigned) argc; i++) { + for (i = optind; i < argc; i++) { int q; printf("%s:\n", argv[i]); - q = show_cgroup_by_path(argv[i], NULL, 0, + if (arg_machine) + root = strjoin("machine/", arg_machine, "/", argv[i], NULL); + else + root = strdup(argv[i]); + if (!root) + return log_oom(); + + q = show_cgroup_by_path(root, NULL, 0, arg_kernel_threads, output_flags); if (q < 0) r = q; @@ -165,16 +180,18 @@ int main(int argc, char *argv[]) { goto finish; } - if (path_startswith(p, "/sys/fs/cgroup")) { + if (path_startswith(p, "/sys/fs/cgroup") && !arg_machine) { printf("Working Directory %s:\n", p); r = show_cgroup_by_path(p, NULL, 0, arg_kernel_threads, output_flags); } else { - _cleanup_free_ char *root = NULL; - - r = cg_get_root_path(&root); + if (arg_machine) + r = cg_get_machine_path(arg_machine, &root); + else + r = cg_get_root_path(&root); if (r < 0) { - log_error("Failed to get root path: %s", strerror(-r)); + log_error("Failed to get %s path: %s", + arg_machine ? "machine" : "root", strerror(-r)); goto finish; } @@ -183,10 +200,11 @@ int main(int argc, char *argv[]) { } } - if (r < 0) - log_error("Failed to list cgroup tree: %s", strerror(-r)); - - retval = EXIT_SUCCESS; + if (r < 0) { + log_error("Failed to list cgroup tree %s: %s", root, strerror(-r)); + retval = EXIT_FAILURE; + } else + retval = EXIT_SUCCESS; finish: pager_close(); diff --git a/src/login/sd-login.c b/src/login/sd-login.c index bc8cd8ae8c..66c4487ff8 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -598,7 +598,7 @@ int sd_get_machine_names(char ***machines) { char *n; int c = 0, r; - r = cg_get_machine_path(&md); + r = cg_get_machine_path(NULL, &md); if (r < 0) return r; @@ -681,7 +681,7 @@ _public_ int sd_login_monitor_new(const char *category, sd_login_monitor **m) { _cleanup_free_ char *md = NULL, *p = NULL; int r; - r = cg_get_machine_path(&md); + r = cg_get_machine_path(NULL, &md); if (r < 0) return r; diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index d772b478fd..bbb3334ba1 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1217,7 +1217,7 @@ finish: int main(int argc, char *argv[]) { pid_t pid = 0; int r = EXIT_FAILURE, k; - _cleanup_free_ char *machine_root = NULL, *name = NULL, *escaped = NULL, *newcg = NULL; + _cleanup_free_ char *newcg = NULL; _cleanup_close_ int master = -1; int n_fd_passed; const char *console = NULL; @@ -1301,30 +1301,12 @@ int main(int argc, char *argv[]) { fdset_close_others(fds); log_open(); - k = cg_get_machine_path(&machine_root); + k = cg_get_machine_path(arg_machine, &newcg); if (k < 0) { log_error("Failed to determine machine cgroup path: %s", strerror(-k)); goto finish; } - name = strappend(arg_machine, ".nspawn"); - if (!name) { - log_oom(); - goto finish; - } - - escaped = cg_escape(name); - if (!escaped) { - log_oom(); - goto finish; - } - - newcg = strjoin(machine_root, "/", escaped, NULL); - if (!newcg) { - log_oom(); - goto finish; - } - k = cg_is_empty_recursive(SYSTEMD_CGROUP_CONTROLLER, newcg, true); if (k <= 0 && k != -ENOENT) { log_error("Container already running."); diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 1366f5865f..8c2ef45530 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -1146,17 +1146,22 @@ int cg_get_user_path(char **path) { return 0; } -int cg_get_machine_path(char **path) { - _cleanup_free_ char *root = NULL; +int cg_get_machine_path(const char *machine, char **path) { + _cleanup_free_ char *root = NULL, *escaped = NULL; char *p; assert(path); - if (cg_get_root_path(&root) < 0 || streq(root, "/")) - p = strdup("/machine"); - else - p = strappend(root, "/machine"); + if (machine) { + const char *name = strappenda(machine, ".nspawn"); + + escaped = cg_escape(name); + if (!escaped) + return -ENOMEM; + } + p = strjoin(cg_get_root_path(&root) >= 0 && !streq(root, "/") ? root : "", + "/machine", machine ? "/" : "", machine ? escaped : "", NULL); if (!p) return -ENOMEM; diff --git a/src/shared/cgroup-util.h b/src/shared/cgroup-util.h index 7bd02c1008..92caa0c448 100644 --- a/src/shared/cgroup-util.h +++ b/src/shared/cgroup-util.h @@ -87,7 +87,7 @@ int cg_is_empty_recursive(const char *controller, const char *path, bool ignore_ int cg_get_root_path(char **path); int cg_get_system_path(char **path); int cg_get_user_path(char **path); -int cg_get_machine_path(char **path); +int cg_get_machine_path(const char *machine, char **path); int cg_path_get_session(const char *path, char **session); int cg_path_get_owner_uid(const char *path, uid_t *uid); diff --git a/src/test/test-cgroup-util.c b/src/test/test-cgroup-util.c index 6726f8fb13..cc1a6fd723 100644 --- a/src/test/test-cgroup-util.c +++ b/src/test/test-cgroup-util.c @@ -85,7 +85,7 @@ static void test_get_paths(void) { assert_se(cg_get_user_path(&c) >= 0); log_info("User = %s", c); - assert_se(cg_get_machine_path(&d) >= 0); + assert_se(cg_get_machine_path("harley", &d) >= 0); log_info("Machine = %s", d); } -- cgit v1.2.1 From 92dd3633b4257ccd82da662a64c24cbc73668c32 Mon Sep 17 00:00:00 2001 From: Ronny Chevalier Date: Wed, 24 Apr 2013 15:17:19 +0200 Subject: dbus-execute: fix introspection Add missing property and remove duplicate properties already in src/core/dbus-kill.h --- src/core/dbus-execute.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/core/dbus-execute.h b/src/core/dbus-execute.h index eaa1b73e69..91d70e535f 100644 --- a/src/core/dbus-execute.h +++ b/src/core/dbus-execute.h @@ -37,6 +37,7 @@ #define BUS_EXEC_CONTEXT_INTERFACE \ " \n" \ + " \n" \ " \n" \ " \n" \ " \n" \ @@ -88,13 +89,11 @@ " \n" \ " \n" \ " \n" \ + " \n" \ " \n" \ - " \n" \ - " \n" \ " \n" \ " \n" \ " \n" \ - " \n" \ " \n" \ " \n" \ " \n" -- cgit v1.2.1 From bcb92f480fb538c50a0e0b5b3c1ac6d49411a7e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= Date: Tue, 30 Apr 2013 22:07:33 -0400 Subject: Annotate some functions as _const_ hexchar,unhexchar,octchar,unoctchar,decchar,undecchar are all const functions. --- src/shared/util.h | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/shared/util.h b/src/shared/util.h index eee66ccf64..eb82ff4197 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -211,12 +211,12 @@ int get_process_exe(pid_t pid, char **name); int get_process_uid(pid_t pid, uid_t *uid); int get_process_gid(pid_t pid, gid_t *gid); -char hexchar(int x); -int unhexchar(char c); -char octchar(int x); -int unoctchar(char c); -char decchar(int x); -int undecchar(char c); +char hexchar(int x) _const_; +int unhexchar(char c) _const_; +char octchar(int x) _const_; +int unoctchar(char c) _const_; +char decchar(int x) _const_; +int undecchar(char c) _const_; char *cescape(const char *s); char *cunescape(const char *s); -- cgit v1.2.1 From a5f5f8a07743bb9aa31fa361c90fce8d4a62388e Mon Sep 17 00:00:00 2001 From: Dave Reisner Date: Thu, 2 May 2013 10:39:53 -0400 Subject: nspawn: inherit the exit status of container If we get as far as successfully starting the container, nspawn should inherit the exit status of the child container process as its own. --- src/nspawn/nspawn.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index bbb3334ba1..e907a1daa7 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1696,9 +1696,9 @@ int main(int argc, char *argv[]) { } if (status.si_code == CLD_EXITED) { + r = status.si_status; if (status.si_status != 0) { log_error("Container failed with error code %i.", status.si_status); - r = status.si_status; break; } -- cgit v1.2.1 From 799e7ea85845bd343eb46daaefa11fd14c9e67cc Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 2 May 2013 17:57:49 +0200 Subject: kdbus: update kdbus.h from upstream --- src/libsystemd-bus/bus-kernel.c | 22 +++---- src/libsystemd-bus/kdbus.h | 128 ++++++++++++++++++++++------------------ 2 files changed, 81 insertions(+), 69 deletions(-) diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index 2be2acf2a9..c35d95727c 100644 --- a/src/libsystemd-bus/bus-kernel.c +++ b/src/libsystemd-bus/bus-kernel.c @@ -274,14 +274,14 @@ static int bus_message_setup_kmsg(sd_bus *b, sd_bus_message *m) { int bus_kernel_take_fd(sd_bus *b) { struct kdbus_cmd_hello hello = { .conn_flags = - KDBUS_CMD_HELLO_ACCEPT_FD| - KDBUS_CMD_HELLO_ATTACH_COMM| - KDBUS_CMD_HELLO_ATTACH_EXE| - KDBUS_CMD_HELLO_ATTACH_CMDLINE| - KDBUS_CMD_HELLO_ATTACH_CGROUP| - KDBUS_CMD_HELLO_ATTACH_CAPS| - KDBUS_CMD_HELLO_ATTACH_SECLABEL| - KDBUS_CMD_HELLO_ATTACH_AUDIT + KDBUS_HELLO_ACCEPT_FD| + KDBUS_HELLO_ATTACH_COMM| + KDBUS_HELLO_ATTACH_EXE| + KDBUS_HELLO_ATTACH_CMDLINE| + KDBUS_HELLO_ATTACH_CGROUP| + KDBUS_HELLO_ATTACH_CAPS| + KDBUS_HELLO_ATTACH_SECLABEL| + KDBUS_HELLO_ATTACH_AUDIT }; int r; @@ -583,17 +583,17 @@ int bus_kernel_create(const char *name, char **s) { sizeof(struct kdbus_cmd_make_item) + DECIMAL_STR_MAX(uid_t) + 1 + l + 1); cg = make->items; - cg->type = KDBUS_CMD_MAKE_CGROUP; + cg->type = KDBUS_MAKE_CGROUP; cg->data64[0] = 1; cg->size = sizeof(struct kdbus_cmd_make_item) + sizeof(uint64_t); n = KDBUS_ITEM_NEXT(cg); - n->type = KDBUS_CMD_MAKE_NAME; + n->type = KDBUS_MAKE_NAME; sprintf(n->str, "%lu-%s", (unsigned long) getuid(), name); n->size = sizeof(struct kdbus_cmd_make_item) + strlen(n->str) + 1; make->size = offsetof(struct kdbus_cmd_bus_make, items) + cg->size + n->size; - make->flags = KDBUS_ACCESS_WORLD | KDBUS_POLICY_OPEN; + make->flags = KDBUS_MAKE_ACCESS_WORLD | KDBUS_MAKE_POLICY_OPEN; make->bus_flags = 0; make->bloom_size = BLOOM_SIZE; assert_cc(BLOOM_SIZE % 8 == 0); diff --git a/src/libsystemd-bus/kdbus.h b/src/libsystemd-bus/kdbus.h index a597c87dc7..6d817b8a2b 100644 --- a/src/libsystemd-bus/kdbus.h +++ b/src/libsystemd-bus/kdbus.h @@ -27,13 +27,13 @@ struct kdbus_manager_msg_name_change { __u64 old_id; __u64 new_id; - __u64 flags; /* 0 or (possibly?) KDBUS_CMD_NAME_IN_QUEUE */ + __u64 flags; /* 0 or (possibly?) KDBUS_NAME_IN_QUEUE */ char name[0]; }; struct kdbus_manager_msg_id_change { __u64 id; - __u64 flags; /* The kernel flags field from KDBUS_CMD_HELLO */ + __u64 flags; /* The kernel flags field from KDBUS_HELLO */ }; struct kdbus_creds { @@ -144,7 +144,7 @@ enum { }; enum { - KDBUS_PAYLOAD_NONE, + KDBUS_PAYLOAD_NULL, KDBUS_PAYLOAD_DBUS1 = 0x4442757356657231ULL, /* 'DBusVer1' */ KDBUS_PAYLOAD_GVARIANT = 0x4756617269616e74ULL, /* 'GVariant' */ }; @@ -163,10 +163,10 @@ enum { struct kdbus_msg { __u64 size; __u64 flags; - __u64 dst_id; /* connection, 0 == name in data, ~0 broadcast */ - __u64 src_id; /* connection, 0 == kernel */ - __u64 payload_type; /* 'DBusVer1', 'GVariant', ... */ - __u64 cookie; /* userspace-supplied cookie */ + __u64 dst_id; /* connection, 0 == name in data, ~0 broadcast */ + __u64 src_id; /* connection, 0 == kernel */ + __u64 payload_type; /* 'DBusVer1', 'GVariant', ... */ + __u64 cookie; /* userspace-supplied cookie */ union { __u64 cookie_reply; /* cookie we reply to */ __u64 timeout_ns; /* timespan to wait for reply */ @@ -208,50 +208,32 @@ struct kdbus_policy { struct kdbus_cmd_policy { __u64 size; - __u8 buffer[0]; /* a series of KDBUS_POLICY_NAME plus one or - * more KDBUS_POLICY_ACCESS each. */ + __u8 buffer[0]; /* a series of KDBUS_POLICY_NAME plus one or + * more KDBUS_POLICY_ACCESS each. */ }; +/* Flags for struct kdbus_cmd_hello */ enum { - KDBUS_CMD_HELLO_STARTER = 1 << 0, - KDBUS_CMD_HELLO_ACCEPT_FD = 1 << 1, + KDBUS_HELLO_STARTER = 1 << 0, + KDBUS_HELLO_ACCEPT_FD = 1 << 1, /* The following have an effect on directed messages only -- * not for broadcasts */ - KDBUS_CMD_HELLO_ATTACH_COMM = 1 << 10, - KDBUS_CMD_HELLO_ATTACH_EXE = 1 << 11, - KDBUS_CMD_HELLO_ATTACH_CMDLINE = 1 << 12, - KDBUS_CMD_HELLO_ATTACH_CGROUP = 1 << 13, - KDBUS_CMD_HELLO_ATTACH_CAPS = 1 << 14, - KDBUS_CMD_HELLO_ATTACH_SECLABEL = 1 << 15, - KDBUS_CMD_HELLO_ATTACH_AUDIT = 1 << 16, + KDBUS_HELLO_ATTACH_COMM = 1 << 10, + KDBUS_HELLO_ATTACH_EXE = 1 << 11, + KDBUS_HELLO_ATTACH_CMDLINE = 1 << 12, + KDBUS_HELLO_ATTACH_CGROUP = 1 << 13, + KDBUS_HELLO_ATTACH_CAPS = 1 << 14, + KDBUS_HELLO_ATTACH_SECLABEL = 1 << 15, + KDBUS_HELLO_ATTACH_AUDIT = 1 << 16, }; -/* Flags for kdbus_cmd_bus_make, kdbus_cmd_ep_make and - * kdbus_cmd_ns_make */ +/* Items to append to struct kdbus_cmd_hello */ enum { - KDBUS_ACCESS_GROUP = 1 << 0, - KDBUS_ACCESS_WORLD = 1 << 1, - KDBUS_POLICY_OPEN = 1 << 2, + KDBUS_HELLO_NULL, }; -/* Items to append to kdbus_cmd_bus_make, kdbus_cmd_ep_make and - * kdbus_cmd_ns_make */ - -enum { - KDBUS_CMD_MAKE_NONE, - KDBUS_CMD_MAKE_NAME, - KDBUS_CMD_MAKE_CGROUP, /* the cgroup hierarchy ID for which to attach - * cgroup membership paths * to messages. */ - KDBUS_CMD_MAKE_CRED, /* allow translator services which connect - * to the bus on behalf of somebody else, - * allow specifiying the credentials of the - * client to connect on behalf on. Needs - * privileges */ - -}; - -struct kdbus_cmd_make_item { +struct kdbus_cmd_hello_item { __u64 size; __u64 type; union { @@ -270,7 +252,7 @@ struct kdbus_cmd_hello { * returns its capabilites and * more. Kernel might refuse client's * capabilities by returning an error - * from KDBUS_CMD_HELLO */ + * from KDBUS_HELLO */ /* kernel → userspace */ __u64 bus_flags; /* this is .flags copied verbatim from @@ -281,7 +263,37 @@ struct kdbus_cmd_hello { __u64 id; /* id assigned to this connection */ __u64 bloom_size; /* The bloom filter size chosen by the * bus owner */ - struct kdbus_cmd_make_item items[0]; + struct kdbus_cmd_hello_item items[0]; +}; + +/* Flags for kdbus_cmd_{bus,ep,ns}_make */ +enum { + KDBUS_MAKE_ACCESS_GROUP = 1 << 0, + KDBUS_MAKE_ACCESS_WORLD = 1 << 1, + KDBUS_MAKE_POLICY_OPEN = 1 << 2, +}; + +/* Items to append to kdbus_cmd_{bus,ep,ns}_make */ +enum { + KDBUS_MAKE_NULL, + KDBUS_MAKE_NAME, + KDBUS_MAKE_CGROUP, /* the cgroup hierarchy ID for which to attach + * cgroup membership paths * to messages. */ + KDBUS_MAKE_CRED, /* allow translator services which connect + * to the bus on behalf of somebody else, + * allow specifiying the credentials of the + * client to connect on behalf on. Needs + * privileges */ +}; + +struct kdbus_cmd_make_item { + __u64 size; + __u64 type; + union { + __u8 data[0]; + __u64 data64[0]; + char str[0]; + }; }; struct kdbus_cmd_bus_make { @@ -323,12 +335,12 @@ struct kdbus_cmd_ns_make { enum { /* userspace → kernel */ - KDBUS_CMD_NAME_REPLACE_EXISTING = 1 << 0, - KDBUS_CMD_NAME_QUEUE = 1 << 1, - KDBUS_CMD_NAME_ALLOW_REPLACEMENT = 1 << 2, + KDBUS_NAME_REPLACE_EXISTING = 1 << 0, + KDBUS_NAME_QUEUE = 1 << 1, + KDBUS_NAME_ALLOW_REPLACEMENT = 1 << 2, /* kernel → userspace */ - KDBUS_CMD_NAME_IN_QUEUE = 1 << 16, + KDBUS_NAME_IN_QUEUE = 1 << 16, }; struct kdbus_cmd_name { @@ -345,10 +357,10 @@ struct kdbus_cmd_names { }; enum { - KDBUS_CMD_NAME_INFO_ITEM_NULL, - KDBUS_CMD_NAME_INFO_ITEM_NAME, /* userspace → kernel */ - KDBUS_CMD_NAME_INFO_ITEM_SECLABEL, /* kernel → userspace */ - KDBUS_CMD_NAME_INFO_ITEM_AUDIT, /* kernel → userspace */ + KDBUS_NAME_INFO_ITEM_NULL, + KDBUS_NAME_INFO_ITEM_NAME, /* userspace → kernel */ + KDBUS_NAME_INFO_ITEM_SECLABEL, /* kernel → userspace */ + KDBUS_NAME_INFO_ITEM_AUDIT, /* kernel → userspace */ }; struct kdbus_cmd_name_info_item { @@ -366,14 +378,14 @@ struct kdbus_cmd_name_info { }; enum { - KDBUS_CMD_MATCH_NULL, - KDBUS_CMD_MATCH_BLOOM, /* Matches a mask blob against KDBUS_MSG_BLOOM */ - KDBUS_CMD_MATCH_SRC_NAME, /* Matches a name string against KDBUS_MSG_SRC_NAMES */ - KDBUS_CMD_MATCH_NAME_ADD, /* Matches a name string against KDBUS_MSG_NAME_ADD */ - KDBUS_CMD_MATCH_NAME_REMOVE, /* Matches a name string against KDBUS_MSG_NAME_REMOVE */ - KDBUS_CMD_MATCH_NAME_CHANGE, /* Matches a name string against KDBUS_MSG_NAME_CHANGE */ - KDBUS_CMD_MATCH_ID_ADD, /* Matches an ID against KDBUS_MSG_ID_ADD */ - KDBUS_CMD_MATCH_ID_REMOVE, /* Matches an ID against KDBUS_MSG_ID_REMOVE */ + KDBUS_MATCH_NULL, + KDBUS_MATCH_BLOOM, /* Matches a mask blob against KDBUS_MSG_BLOOM */ + KDBUS_MATCH_SRC_NAME, /* Matches a name string against KDBUS_MSG_SRC_NAMES */ + KDBUS_MATCH_NAME_ADD, /* Matches a name string against KDBUS_MSG_NAME_ADD */ + KDBUS_MATCH_NAME_REMOVE, /* Matches a name string against KDBUS_MSG_NAME_REMOVE */ + KDBUS_MATCH_NAME_CHANGE, /* Matches a name string against KDBUS_MSG_NAME_CHANGE */ + KDBUS_MATCH_ID_ADD, /* Matches an ID against KDBUS_MSG_ID_ADD */ + KDBUS_MATCH_ID_REMOVE, /* Matches an ID against KDBUS_MSG_ID_REMOVE */ }; struct kdbus_cmd_match_item { -- cgit v1.2.1 From 8368868452fc24536bf3322bfab536c66bf56a13 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Thu, 2 May 2013 09:21:23 -0700 Subject: Add help option to bootchart man page Bootchart has a help option. For the sake of consistency, this patch adds it to the man page. Also, the TODO is updated. Bootcharts were added to the journal in commit c4d58b0. --- TODO | 1 - man/systemd-bootchart.xml | 6 ++++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/TODO b/TODO index 052ec1394c..3fda3a7f23 100644 --- a/TODO +++ b/TODO @@ -592,7 +592,6 @@ Features: - plot per-process IO utilization - group processes based on service association (cgroups) - document initcall_debug - - put bootcharts in the journal - kernel cmdline "bootchart" option for simplicity? External: diff --git a/man/systemd-bootchart.xml b/man/systemd-bootchart.xml index 1569d2c8a2..8de4c69a2d 100644 --- a/man/systemd-bootchart.xml +++ b/man/systemd-bootchart.xml @@ -145,6 +145,12 @@ + + + + Prints a short help text and exits. + + -- cgit v1.2.1 From 8dfb6e718d621a5115bd3b8e7e826195dc6bfe14 Mon Sep 17 00:00:00 2001 From: Nathaniel Chen Date: Wed, 24 Apr 2013 14:56:15 -0700 Subject: Dynamically allocate bootchart logs Instead of storing bootchart sample data in arrays, this patch moves storage to linked lists so that there is no more limit on samples. This patch also fixes parsing of /proc//smaps in kernels > 3.7. --- src/bootchart/bootchart.c | 48 ++++-- src/bootchart/bootchart.h | 23 ++- src/bootchart/store.c | 96 ++++++++--- src/bootchart/store.h | 3 +- src/bootchart/svg.c | 410 +++++++++++++++++++++++++++++++++++----------- 5 files changed, 437 insertions(+), 143 deletions(-) mode change 100644 => 100755 src/bootchart/store.c diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c index b73319123f..8be5a27afa 100644 --- a/src/bootchart/bootchart.c +++ b/src/bootchart/bootchart.c @@ -59,14 +59,11 @@ #include "store.h" #include "svg.h" #include "bootchart.h" +#include "list.h" double graph_start; double log_start; -double sampletime[MAXSAMPLES]; struct ps_struct *ps_first; -struct block_stat_struct blockstat[MAXSAMPLES]; -int entropy_avail[MAXSAMPLES]; -struct cpu_stat_struct cpustat[MAXCPUS]; int pscount; int cpus; double interval; @@ -87,6 +84,8 @@ int arg_samples_len = 500; /* we record len+1 (1 start sample) */ double arg_hz = 25.0; /* 20 seconds log time */ double arg_scale_x = 100.0; /* 100px = 1sec */ double arg_scale_y = 20.0; /* 16px = 1 process bar */ +static struct list_sample_data *sampledata; +struct list_sample_data *head; char arg_init_path[PATH_MAX] = "/sbin/init"; char arg_output_path[PATH_MAX] = "/run/log"; @@ -227,11 +226,6 @@ static int parse_args(int argc, char *argv[]) { } } - if (arg_samples_len > MAXSAMPLES) { - fprintf(stderr, "Error: samples exceeds maximum\n"); - return -EINVAL; - } - if (arg_hz <= 0.0) { fprintf(stderr, "Error: Frequency needs to be > 0\n"); return -EINVAL; @@ -338,6 +332,8 @@ int main(int argc, char *argv[]) { log_uptime(); + LIST_HEAD_INIT(struct list_sample_data, head); + /* main program loop */ for (samples = 0; !exiting && samples < arg_samples_len; samples++) { int res; @@ -348,7 +344,14 @@ int main(int argc, char *argv[]) { double elapsed; double timeleft; - sampletime[samples] = gettime_ns(); + sampledata = new0(struct list_sample_data, 1); + if (sampledata == NULL) { + log_error("Failed to allocate memory for a node: %m"); + return -1; + } + + sampledata->sampletime = gettime_ns(); + sampledata->counter = samples; if (!of && (access(arg_output_path, R_OK|W_OK|X_OK) == 0)) { t = time(NULL); @@ -369,11 +372,11 @@ int main(int argc, char *argv[]) { if (graph_start <= 0.0) log_uptime(); else - log_sample(samples); + log_sample(samples, &sampledata); sample_stop = gettime_ns(); - elapsed = (sample_stop - sampletime[samples]) * 1000000000.0; + elapsed = (sample_stop - sampledata->sampletime) * 1000000000.0; timeleft = interval - elapsed; newint_s = (time_t)(timeleft / 1000000000.0); @@ -403,6 +406,7 @@ int main(int argc, char *argv[]) { /* calculate how many samples we lost and scrap them */ arg_samples_len -= (int)(newint_ns / interval); } + LIST_PREPEND(struct list_sample_data, link, head, sampledata); } /* do some cleanup, close fd's */ @@ -443,16 +447,32 @@ int main(int argc, char *argv[]) { close(sysfd); /* nitpic cleanups */ - ps = ps_first; + ps = ps_first->next_ps; while (ps->next_ps) { - struct ps_struct *old = ps; + struct ps_struct *old; + + old = ps; + old->sample = ps->first; ps = ps->next_ps; + while (old->sample->next) { + struct ps_sched_struct *oldsample = old->sample; + + old->sample = old->sample->next; + free(oldsample); + } free(old->sample); free(old); } free(ps->sample); free(ps); + sampledata = head; + while (sampledata->link_prev) { + struct list_sample_data *old_sampledata = sampledata; + sampledata = sampledata->link_prev; + free(old_sampledata); + } + free(sampledata); /* don't complain when overrun once, happens most commonly on 1st sample */ if (overrun > 1) fprintf(stderr, "systemd-boochart: Warning: sample time overrun %i times\n", overrun); diff --git a/src/bootchart/bootchart.h b/src/bootchart/bootchart.h index a9541caf4a..ee1e67604d 100644 --- a/src/bootchart/bootchart.h +++ b/src/bootchart/bootchart.h @@ -26,6 +26,7 @@ #include #include +#include "list.h" #define MAXCPUS 16 #define MAXPIDS 65535 @@ -54,6 +55,22 @@ struct ps_sched_struct { double runtime; double waittime; int pss; + struct list_sample_data *sampledata; + struct ps_sched_struct *next; + struct ps_sched_struct *prev; + struct ps_sched_struct *cross; /* cross pointer */ + struct ps_struct *ps_new; +}; + +struct list_sample_data { + double runtime[MAXCPUS]; + double waittime[MAXCPUS]; + double sampletime; + int entropy_avail; + struct block_stat_struct blockstat; + struct cpu_stat_struct cpustat; + LIST_FIELDS(struct list_sample_data, link); /* DLL */ + int counter; }; /* process info */ @@ -73,9 +90,9 @@ struct ps_struct { int schedstat; FILE *smaps; - /* index to first/last seen timestamps */ - int first; - int last; + /* pointers to first/last seen timestamps */ + struct ps_sched_struct *first; + struct ps_sched_struct *last; /* records actual start time, may be way before bootchart runs */ double starttime; diff --git a/src/bootchart/store.c b/src/bootchart/store.c old mode 100644 new mode 100755 index 4de187c8bc..b2afb8d13b --- a/src/bootchart/store.c +++ b/src/bootchart/store.c @@ -44,6 +44,7 @@ * read() overhead. */ static char smaps_buf[4096]; +static int skip = 0; DIR *proc; int procfd = -1; @@ -111,7 +112,7 @@ static int pid_cmdline_strscpy(char *buffer, size_t buf_len, int pid) { return 0; } -void log_sample(int sample) { +void log_sample(int sample, struct list_sample_data **ptr) { static int vmstat; static int schedstat; char buf[4096]; @@ -128,6 +129,12 @@ void log_sample(int sample) { ssize_t n; struct dirent *ent; int fd; + struct list_sample_data *sampledata; + struct ps_sched_struct *ps_prev = NULL; + + + + sampledata = *ptr; /* all the per-process stuff goes here */ if (!proc) { @@ -161,9 +168,9 @@ void log_sample(int sample) { if (sscanf(m, "%s %s", key, val) < 2) goto vmstat_next; if (streq(key, "pgpgin")) - blockstat[sample].bi = atoi(val); + sampledata->blockstat.bi = atoi(val); if (streq(key, "pgpgout")) { - blockstat[sample].bo = atoi(val); + sampledata->blockstat.bo = atoi(val); break; } vmstat_next: @@ -198,8 +205,8 @@ vmstat_next: if (c > MAXCPUS) /* Oops, we only have room for MAXCPUS data */ break; - cpustat[c].sample[sample].runtime = atoll(rt); - cpustat[c].sample[sample].waittime = atoll(wt); + sampledata->runtime[c] = atoll(rt); + sampledata->waittime[c] = atoll(wt); if (c == cpus) cpus = c + 1; @@ -219,7 +226,7 @@ schedstat_next: n = pread(e_fd, buf, sizeof(buf) - 1, 0); if (n > 0) { buf[n] = '\0'; - entropy_avail[sample] = atoi(buf); + sampledata->entropy_avail = atoi(buf); } } } @@ -258,16 +265,19 @@ schedstat_next: ps = ps->next_ps; ps->pid = pid; - ps->sample = calloc(arg_samples_len + 1, sizeof(struct ps_sched_struct)); + ps->sample = calloc(1, sizeof(struct ps_sched_struct)); if (!ps->sample) { perror("calloc(ps_struct)"); exit (EXIT_FAILURE); } + ps->sample->sampledata = sampledata; pscount++; /* mark our first sample */ - ps->first = sample; + ps->first = ps->sample; + ps->sample->runtime = atoll(rt); + ps->sample->waittime = atoll(wt); /* get name, start time */ if (!ps->sched) { @@ -383,16 +393,28 @@ schedstat_next: if (!sscanf(buf, "%s %s %*s", rt, wt)) continue; - ps->last = sample; - ps->sample[sample].runtime = atoll(rt); - ps->sample[sample].waittime = atoll(wt); - - ps->total = (ps->sample[ps->last].runtime - - ps->sample[ps->first].runtime) - / 1000000000.0; + ps->sample->next = calloc(1, sizeof(struct ps_sched_struct)); + if (!ps->sample) { + perror("calloc(ps_struct)"); + exit (EXIT_FAILURE); + } + ps->sample->next->prev = ps->sample; + ps->sample = ps->sample->next; + ps->last = ps->sample; + ps->sample->runtime = atoll(rt); + ps->sample->waittime = atoll(wt); + ps->sample->sampledata = sampledata; + ps->sample->ps_new = ps; + if (ps_prev) { + ps_prev->cross = ps->sample; + } + ps_prev = ps->sample; + ps->total = (ps->last->runtime - ps->first->runtime) + / 1000000000.0; if (!arg_pss) goto catch_rename; + /* Pss */ if (!ps->smaps) { sprintf(filename, "%d/smaps", pid); @@ -401,31 +423,53 @@ schedstat_next: if (!ps->smaps) continue; setvbuf(ps->smaps, smaps_buf, _IOFBF, sizeof(smaps_buf)); - } else { + } + else { + rewind(ps->smaps); + } + /* test to see if we need to skip another field */ + if (skip == 0) { + if (fgets(buf, sizeof(buf), ps->smaps) == NULL) { + continue; + } + if (fread(buf, 1, 28 * 15, ps->smaps) != (28 * 15)) { + continue; + } + if (buf[392] == 'V') { + skip = 2; + } + else { + skip = 1; + } rewind(ps->smaps); } - while (1) { int pss_kb; - /* skip one line, this contains the object mapped */ - if (fgets(buf, sizeof(buf), ps->smaps) == NULL) + /* skip one line, this contains the object mapped. */ + if (fgets(buf, sizeof(buf), ps->smaps) == NULL) { break; + } /* then there's a 28 char 14 line block */ - if (fread(buf, 1, 28 * 14, ps->smaps) != 28 * 14) + if (fread(buf, 1, 28 * 14, ps->smaps) != 28 * 14) { break; - + } pss_kb = atoi(&buf[61]); - ps->sample[sample].pss += pss_kb; - } + ps->sample->pss += pss_kb; - if (ps->sample[sample].pss > ps->pss_max) - ps->pss_max = ps->sample[sample].pss; + /* skip one more line if this is a newer kernel */ + if (skip == 2) { + if (fgets(buf, sizeof(buf), ps->smaps) == NULL) + break; + } + } + if (ps->sample->pss > ps->pss_max) + ps->pss_max = ps->sample->pss; catch_rename: /* catch process rename, try to randomize time */ mod = (arg_hz < 4.0) ? 4.0 : (arg_hz / 4.0); - if (((samples - ps->first) + pid) % (int)(mod) == 0) { + if (((samples - ps->pid) + pid) % (int)(mod) == 0) { /* re-fetch name */ /* get name, start time */ diff --git a/src/bootchart/store.h b/src/bootchart/store.h index e8d013cde4..7c8ad284da 100644 --- a/src/bootchart/store.h +++ b/src/bootchart/store.h @@ -25,10 +25,11 @@ ***/ #include +#include "bootchart.h" extern DIR *proc; extern int procfd; double gettime_ns(void); void log_uptime(void); -void log_sample(int sample); +void log_sample(int sample, struct list_sample_data **ptr); diff --git a/src/bootchart/svg.c b/src/bootchart/svg.c index 1e87fb5739..859cf81c22 100644 --- a/src/bootchart/svg.c +++ b/src/bootchart/svg.c @@ -38,6 +38,7 @@ #include "store.h" #include "svg.h" #include "bootchart.h" +#include "list.h" #define time_to_graph(t) ((t) * arg_scale_x) #define ps_to_graph(n) ((n) * arg_scale_y) @@ -70,13 +71,24 @@ static int kcount = 0; static float psize = 0; static float ksize = 0; static float esize = 0; +static struct list_sample_data *sampledata; +static struct list_sample_data *prev_sampledata; +extern struct list_sample_data *head; static void svg_header(void) { float w; float h; + struct list_sample_data *sampledata_last; + + sampledata = head; + LIST_FIND_TAIL(struct list_sample_data, link, sampledata, head); + sampledata_last = head; + LIST_FOREACH_BEFORE(link, sampledata, head) { + sampledata_last = sampledata; + } /* min width is about 1600px due to the label */ - w = 150.0 + 10.0 + time_to_graph(sampletime[samples-1] - graph_start); + w = 150.0 + 10.0 + time_to_graph(sampledata_last->sampletime - graph_start); w = ((w < 1600.0) ? 1600.0 : w); /* height is variable based on pss, psize, ksize */ @@ -223,14 +235,23 @@ static void svg_title(const char *build) { static void svg_graph_box(int height) { double d = 0.0; int i = 0; + double finalsample = 0.0; + struct list_sample_data *sampledata_last; + + sampledata_last = head; + LIST_FOREACH_BEFORE(link, sampledata, head) { + sampledata_last = sampledata; + } + + finalsample = sampledata_last->sampletime; /* outside box, fill */ svg("\n", time_to_graph(0.0), - time_to_graph(sampletime[samples-1] - graph_start), + time_to_graph(finalsample - graph_start), ps_to_graph(height)); - for (d = graph_start; d <= sampletime[samples-1]; + for (d = graph_start; d <= finalsample; d += (arg_scale_x < 2.0 ? 60.0 : arg_scale_x < 10.0 ? 1.0 : 0.1)) { /* lines for each second */ if (i % 50 == 0) @@ -278,6 +299,13 @@ static char* xml_comment_encode(const char* name) { static void svg_pss_graph(void) { struct ps_struct *ps; int i; + struct list_sample_data *sampledata_last; + + sampledata_last = head; + LIST_FOREACH_BEFORE(link, sampledata, head) { + sampledata_last = sampledata; + } + svg("\n\n\n"); @@ -290,18 +318,21 @@ static void svg_pss_graph(void) { svg(" \n", time_to_graph(.0), kb_to_graph(i), - time_to_graph(sampletime[samples-1] - graph_start), + time_to_graph(sampledata_last->sampletime - graph_start), kb_to_graph(i)); svg(" %dM\n", - time_to_graph(sampletime[samples-1] - graph_start) + 5, + time_to_graph(sampledata_last->sampletime - graph_start) + 5, kb_to_graph(i), (1000000 - i) / 1000); } svg("\n"); /* now plot the graph itself */ - for (i = 1; i < samples ; i++) { + i = 1; + prev_sampledata = head; + LIST_FOREACH_BEFORE(link, sampledata, head) { int bottom; int top; + struct ps_sched_struct *cross_place; bottom = 0; top = 0; @@ -312,16 +343,32 @@ static void svg_pss_graph(void) { ps = ps->next_ps; if (!ps) continue; - if (ps->sample[i].pss <= (100 * arg_scale_y)) - top += ps->sample[i].pss; - }; + ps->sample = ps->first; + while (ps->sample->next) { + ps->sample = ps->sample->next; + if (ps->sample->sampledata == sampledata) + break; + } + if (ps->sample->sampledata == sampledata) { + if (ps->sample->pss <= (100 * arg_scale_y)) + top += ps->sample->pss; + break; + } + } + while (ps->sample->cross) { + cross_place = ps->sample->cross; + ps = ps->sample->cross->ps_new; + ps->sample = cross_place; + if (ps->sample->pss <= (100 * arg_scale_y)) + top += ps->sample->pss; + } + svg(" \n", "rgb(64,64,64)", - time_to_graph(sampletime[i - 1] - graph_start), + time_to_graph(prev_sampledata->sampletime - graph_start), kb_to_graph(1000000.0 - top), - time_to_graph(sampletime[i] - sampletime[i - 1]), + time_to_graph(sampledata->sampletime - prev_sampledata->sampletime), kb_to_graph(top - bottom)); - bottom = top; /* now plot the ones that are of significant size */ @@ -330,59 +377,129 @@ static void svg_pss_graph(void) { ps = ps->next_ps; if (!ps) continue; + ps->sample = ps->first; + while (ps->sample->next) { + ps->sample = ps->sample->next; + if (ps->sample->sampledata == sampledata) + break; + } /* don't draw anything smaller than 2mb */ - if (ps->sample[i].pss > (100 * arg_scale_y)) { - top = bottom + ps->sample[i].pss; + if (ps->sample->sampledata == sampledata) { + if (ps->sample->pss > (100 * arg_scale_y)) { + top = bottom + ps->sample->pss; svg(" \n", - colorwheel[ps->pid % 12], - time_to_graph(sampletime[i - 1] - graph_start), - kb_to_graph(1000000.0 - top), - time_to_graph(sampletime[i] - sampletime[i - 1]), - kb_to_graph(top - bottom)); + colorwheel[ps->pid % 12], + time_to_graph(prev_sampledata->sampletime - graph_start), + kb_to_graph(1000000.0 - top), + time_to_graph(sampledata->sampletime - prev_sampledata->sampletime), + kb_to_graph(top - bottom)); + bottom = top; + } + break; + } + } + while ((cross_place = ps->sample->cross)) { + ps = ps->sample->cross->ps_new; + ps->sample = cross_place; + if (ps->sample->pss > (100 * arg_scale_y)) { + top = bottom + ps->sample->pss; + svg(" \n", + colorwheel[ps->pid % 12], + time_to_graph(prev_sampledata->sampletime - graph_start), + kb_to_graph(1000000.0 - top), + time_to_graph(sampledata->sampletime - prev_sampledata->sampletime), + kb_to_graph(top - bottom)); bottom = top; } } + prev_sampledata = sampledata; + i++; } /* overlay all the text labels */ - for (i = 1; i < samples ; i++) { + i = 1; + LIST_FOREACH_BEFORE(link, sampledata, head) { int bottom; int top; + struct ps_sched_struct *prev_sample; + struct ps_sched_struct *cross_place; bottom = 0; top = 0; /* put all the small pss blocks into the bottom */ - ps = ps_first; + ps = ps_first->next_ps; while (ps->next_ps) { ps = ps->next_ps; if (!ps) continue; - if (ps->sample[i].pss <= (100 * arg_scale_y)) - top += ps->sample[i].pss; - }; - + ps->sample = ps->first; + while (ps->sample->next) { + ps->sample = ps->sample->next; + if (ps->sample->sampledata == sampledata) + break; + } + if (ps->sample->sampledata == sampledata) { + if (ps->sample->pss <= (100 * arg_scale_y)) + top += ps->sample->pss; + break; + } + } + while ((cross_place = ps->sample->cross)) { + ps = ps->sample->cross->ps_new; + ps->sample = cross_place; + if (ps->sample->pss <= (100 * arg_scale_y)) + top += ps->sample->pss; + } bottom = top; /* now plot the ones that are of significant size */ ps = ps_first; while (ps->next_ps) { + prev_sample = ps->sample; ps = ps->next_ps; if (!ps) continue; + ps->sample = ps->first; + while (ps->sample->next) { + prev_sample = ps->sample; + ps->sample = ps->sample->next; + if (ps->sample->sampledata == sampledata) + break; + } /* don't draw anything smaller than 2mb */ - if (ps->sample[i].pss > (100 * arg_scale_y)) { - top = bottom + ps->sample[i].pss; + if (ps->sample->sampledata == sampledata) { + if (ps->sample->pss > (100 * arg_scale_y)) { + top = bottom + ps->sample->pss; + /* draw a label with the process / PID */ + if ((i == 1) || (prev_sample->pss <= (100 * arg_scale_y))) + svg(" [%i]\n", + time_to_graph(sampledata->sampletime - graph_start), + kb_to_graph(1000000.0 - bottom - ((top - bottom) / 2)), + ps->name, + ps->pid); + bottom = top; + } + break; + } + } + while ((cross_place = ps->sample->cross)) { + ps = ps->sample->cross->ps_new; + ps->sample = cross_place; + prev_sample = ps->sample->prev; + if (ps->sample->pss > (100 * arg_scale_y)) { + top = bottom + ps->sample->pss; /* draw a label with the process / PID */ - if ((i == 1) || (ps->sample[i - 1].pss <= (100 * arg_scale_y))) + if ((i == 1) || (prev_sample->pss <= (100 * arg_scale_y))) svg(" [%i]\n", - time_to_graph(sampletime[i] - graph_start), + time_to_graph(sampledata->sampletime - graph_start), kb_to_graph(1000000.0 - bottom - ((top - bottom) / 2)), ps->name, ps->pid); bottom = top; } } + i++; } /* debug output - full data dump */ @@ -400,8 +517,10 @@ static void svg_pss_graph(void) { svg("\n"); } @@ -413,6 +532,9 @@ static void svg_io_bi_bar(void) { double range; int max_here = 0; int i; + int k; + struct list_sample_data *start_sampledata = sampledata; + struct list_sample_data *stop_sampledata = sampledata; svg("\n"); @@ -433,54 +555,89 @@ static void svg_io_bi_bar(void) { svg_graph_box(5); /* find the max IO first */ - for (i = 1; i < samples; i++) { + i = 1; + LIST_FOREACH_BEFORE(link, sampledata, head) { int start; int stop; + int diff; double tot; start = MAX(i - ((range / 2) - 1), 0); stop = MIN(i + (range / 2), samples - 1); + diff = (stop - start); + + start_sampledata = sampledata; + stop_sampledata = sampledata; + + for (k=0;(k<((range/2)-1))&&(start_sampledata->link_next);k++) + start_sampledata = start_sampledata->link_next; + for (k=0;(k<(range/2))&&(stop_sampledata->link_prev);k++) + stop_sampledata = stop_sampledata->link_prev; + + tot = (double)(stop_sampledata->blockstat.bi - start_sampledata->blockstat.bi) + / diff; - tot = (double)(blockstat[stop].bi - blockstat[start].bi) - / (stop - start); if (tot > max) { max = tot; max_here = i; } - tot = (double)(blockstat[stop].bo - blockstat[start].bo) - / (stop - start); + + tot = (double)(stop_sampledata->blockstat.bo - start_sampledata->blockstat.bo) + / diff; + if (tot > max) max = tot; + + i++; } /* plot bi */ - for (i = 1; i < samples; i++) { + i = 1; + prev_sampledata = head; + LIST_FOREACH_BEFORE(link, sampledata, head) { int start; int stop; + int diff; double tot; double pbi; + tot = 0; + pbi = 0; + start = MAX(i - ((range / 2) - 1), 0); stop = MIN(i + (range / 2), samples); + diff = (stop - start); + + start_sampledata = sampledata; + stop_sampledata = sampledata; + + for (k=0;(k<((range/2)-1))&&(start_sampledata->link_next);k++) + start_sampledata = start_sampledata->link_next; + for (k=0;(k<(range/2))&&(stop_sampledata->link_prev);k++) + stop_sampledata = stop_sampledata->link_prev; - tot = (double)(blockstat[stop].bi - blockstat[start].bi) - / (stop - start); - pbi = tot / max; + tot = (double)(stop_sampledata->blockstat.bi - start_sampledata->blockstat.bi) + / diff; + + if (max > 0) + pbi = tot / max; if (pbi > 0.001) svg("\n", - time_to_graph(sampletime[i - 1] - graph_start), + time_to_graph(prev_sampledata->sampletime - graph_start), (arg_scale_y * 5) - (pbi * (arg_scale_y * 5)), - time_to_graph(sampletime[i] - sampletime[i - 1]), + time_to_graph(sampledata->sampletime - prev_sampledata->sampletime), pbi * (arg_scale_y * 5)); /* labels around highest value */ if (i == max_here) { svg(" %0.2fmb/sec\n", - time_to_graph(sampletime[i] - graph_start) + 5, + time_to_graph(sampledata->sampletime - graph_start) + 5, ((arg_scale_y * 5) - (pbi * (arg_scale_y * 5))) + 15, max / 1024.0 / (interval / 1000000000.0)); } + i++; + prev_sampledata = sampledata; } } @@ -489,6 +646,9 @@ static void svg_io_bo_bar(void) { double range; int max_here = 0; int i; + int k; + struct list_sample_data *start_sampledata = sampledata; + struct list_sample_data *stop_sampledata = sampledata; svg("\n"); @@ -509,59 +669,89 @@ static void svg_io_bo_bar(void) { svg_graph_box(5); /* find the max IO first */ - for (i = 1; i < samples; i++) { + i = 0; + LIST_FOREACH_BEFORE(link, sampledata, head) { int start; int stop; + int diff; double tot; start = MAX(i - ((range / 2) - 1), 0); stop = MIN(i + (range / 2), samples - 1); + diff = (stop - start); + + start_sampledata = sampledata; + stop_sampledata = sampledata; + + for (k=0;(k<((range/2)-1))&&(start_sampledata->link_next);k++) + start_sampledata = start_sampledata->link_next; + for (k=0;(k<(range/2))&&(stop_sampledata->link_prev);k++) + stop_sampledata = stop_sampledata->link_prev; - tot = (double)(blockstat[stop].bi - blockstat[start].bi) - / (stop - start); + tot = (double)(stop_sampledata->blockstat.bi - start_sampledata->blockstat.bi) + / diff; if (tot > max) max = tot; - tot = (double)(blockstat[stop].bo - blockstat[start].bo) - / (stop - start); + tot = (double)(stop_sampledata->blockstat.bo - start_sampledata->blockstat.bo) + / diff; if (tot > max) { max = tot; max_here = i; } + i++; } /* plot bo */ - for (i = 1; i < samples; i++) { + prev_sampledata = head; + i=1; + LIST_FOREACH_BEFORE(link, sampledata, head) { int start; int stop; + int diff; double tot; double pbo; + tot = 0; + pbo = 0; + start = MAX(i - ((range / 2) - 1), 0); stop = MIN(i + (range / 2), samples); + diff = (stop - start); + + start_sampledata = sampledata; + stop_sampledata = sampledata; + + for (k=0;(k<((range/2)-1))&&(start_sampledata->link_next);k++) + start_sampledata = start_sampledata->link_next; + for (k=0;(k<(range/2))&&(stop_sampledata->link_prev);k++) + stop_sampledata = stop_sampledata->link_prev; - tot = (double)(blockstat[stop].bo - blockstat[start].bo) - / (stop - start); - pbo = tot / max; + tot = (double)(stop_sampledata->blockstat.bo - start_sampledata->blockstat.bo) + / diff; + + if (max > 0) + pbo = tot / max; if (pbo > 0.001) svg("\n", - time_to_graph(sampletime[i - 1] - graph_start), + time_to_graph(prev_sampledata->sampletime - graph_start), (arg_scale_y * 5) - (pbo * (arg_scale_y * 5)), - time_to_graph(sampletime[i] - sampletime[i - 1]), + time_to_graph(sampledata->sampletime - prev_sampledata->sampletime), pbo * (arg_scale_y * 5)); /* labels around highest bo value */ if (i == max_here) { svg(" %0.2fmb/sec\n", - time_to_graph(sampletime[i] - graph_start) + 5, + time_to_graph(sampledata->sampletime - graph_start) + 5, ((arg_scale_y * 5) - (pbo * (arg_scale_y * 5))), max / 1024.0 / (interval / 1000000000.0)); } + i++; + prev_sampledata = sampledata; } } static void svg_cpu_bar(void) { - int i; svg("\n"); @@ -570,7 +760,8 @@ static void svg_cpu_bar(void) { svg_graph_box(5); /* bars for each sample, proportional to the CPU util. */ - for (i = 1; i < samples; i++) { + prev_sampledata = head; + LIST_FOREACH_BEFORE(link, sampledata, head) { int c; double trt; double ptrt; @@ -578,30 +769,30 @@ static void svg_cpu_bar(void) { ptrt = trt = 0.0; for (c = 0; c < cpus; c++) - trt += cpustat[c].sample[i].runtime - cpustat[c].sample[i - 1].runtime; + trt += sampledata->runtime[c] - prev_sampledata->runtime[c]; trt = trt / 1000000000.0; trt = trt / (double)cpus; if (trt > 0.0) - ptrt = trt / (sampletime[i] - sampletime[i - 1]); + ptrt = trt / (sampledata->sampletime - prev_sampledata->sampletime); if (ptrt > 1.0) ptrt = 1.0; if (ptrt > 0.001) { svg("\n", - time_to_graph(sampletime[i - 1] - graph_start), + time_to_graph(prev_sampledata->sampletime - graph_start), (arg_scale_y * 5) - (ptrt * (arg_scale_y * 5)), - time_to_graph(sampletime[i] - sampletime[i - 1]), + time_to_graph(sampledata->sampletime - prev_sampledata->sampletime), ptrt * (arg_scale_y * 5)); } + prev_sampledata = sampledata; } } static void svg_wait_bar(void) { - int i; svg("\n"); @@ -611,7 +802,8 @@ static void svg_wait_bar(void) { svg_graph_box(5); /* bars for each sample, proportional to the CPU util. */ - for (i = 1; i < samples; i++) { + prev_sampledata = head; + LIST_FOREACH_BEFORE(link, sampledata, head) { int c; double twt; double ptwt; @@ -619,31 +811,31 @@ static void svg_wait_bar(void) { ptwt = twt = 0.0; for (c = 0; c < cpus; c++) - twt += cpustat[c].sample[i].waittime - cpustat[c].sample[i - 1].waittime; + twt += sampledata->waittime[c] - prev_sampledata->waittime[c]; twt = twt / 1000000000.0; twt = twt / (double)cpus; if (twt > 0.0) - ptwt = twt / (sampletime[i] - sampletime[i - 1]); + ptwt = twt / (sampledata->sampletime - prev_sampledata->sampletime); if (ptwt > 1.0) ptwt = 1.0; if (ptwt > 0.001) { svg("\n", - time_to_graph(sampletime[i - 1] - graph_start), + time_to_graph(prev_sampledata->sampletime - graph_start), ((arg_scale_y * 5) - (ptwt * (arg_scale_y * 5))), - time_to_graph(sampletime[i] - sampletime[i - 1]), + time_to_graph(sampledata->sampletime - prev_sampledata->sampletime), ptwt * (arg_scale_y * 5)); } + prev_sampledata = sampledata; } } static void svg_entropy_bar(void) { - int i; svg("\n"); @@ -652,13 +844,15 @@ static void svg_entropy_bar(void) { svg_graph_box(5); /* bars for each sample, scale 0-4096 */ - for (i = 1; i < samples; i++) { + prev_sampledata = head; + LIST_FOREACH_BEFORE(link, sampledata, head) { /* svg("\n", sampletime[i], entropy_avail[i]); */ svg("\n", - time_to_graph(sampletime[i - 1] - graph_start), - ((arg_scale_y * 5) - ((entropy_avail[i] / 4096.) * (arg_scale_y * 5))), - time_to_graph(sampletime[i] - sampletime[i - 1]), - (entropy_avail[i] / 4096.) * (arg_scale_y * 5)); + time_to_graph(prev_sampledata->sampletime - graph_start), + ((arg_scale_y * 5) - ((sampledata->entropy_avail / 4096.) * (arg_scale_y * 5))), + time_to_graph(sampledata->sampletime - prev_sampledata->sampletime), + (sampledata->entropy_avail / 4096.) * (arg_scale_y * 5)); + prev_sampledata = sampledata; } } @@ -802,8 +996,8 @@ static void svg_ps_bars(void) { struct ps_struct *ps; int i = 0; int j = 0; - int w; int pid; + double w = 0.0; svg("\n"); @@ -816,7 +1010,7 @@ static void svg_ps_bars(void) { ps = ps_first; while ((ps = get_next_ps(ps))) { _cleanup_free_ char *enc_name = NULL; - + double endtime; double starttime; int t; @@ -828,15 +1022,13 @@ static void svg_ps_bars(void) { svg("\n", enc_name, ps->pid, ps->ppid, ps->total); - /* it would be nice if we could use exec_start from /proc/pid/sched, - * but it's unreliable and gives bogus numbers */ - starttime = sampletime[ps->first]; + starttime = ps->first->sampledata->sampletime; if (!ps_filter(ps)) { /* remember where _to_ our children need to draw a line */ ps->pos_x = time_to_graph(starttime - graph_start); ps->pos_y = ps_to_graph(j+1); /* bottom left corner */ - } else { + } else if (ps->parent){ /* hook children to our parent coords instead */ ps->pos_x = ps->parent->pos_x; ps->pos_y = ps->parent->pos_y; @@ -851,23 +1043,30 @@ static void svg_ps_bars(void) { continue; } + endtime = ps->last->sampledata->sampletime; svg(" \n", time_to_graph(starttime - graph_start), ps_to_graph(j), - time_to_graph(sampletime[ps->last] - starttime), + time_to_graph(ps->last->sampledata->sampletime - starttime), ps_to_graph(1)); /* paint cpu load over these */ - for (t = ps->first + 1; t < ps->last; t++) { + ps->sample = ps->first; + t = 1; + while (ps->sample->next) { double rt, prt; double wt, wrt; + struct ps_sched_struct *prev; + + prev = ps->sample; + ps->sample = ps->sample->next; /* calculate over interval */ - rt = ps->sample[t].runtime - ps->sample[t-1].runtime; - wt = ps->sample[t].waittime - ps->sample[t-1].waittime; + rt = ps->sample->runtime - prev->runtime; + wt = ps->sample->waittime - prev->waittime; - prt = (rt / 1000000000) / (sampletime[t] - sampletime[t-1]); - wrt = (wt / 1000000000) / (sampletime[t] - sampletime[t-1]); + prt = (rt / 1000000000) / (ps->sample->sampledata->sampletime - prev->sampledata->sampletime); + wrt = (wt / 1000000000) / (ps->sample->sampledata->sampletime - prev->sampledata->sampletime); /* this can happen if timekeeping isn't accurate enough */ if (prt > 1.0) @@ -879,33 +1078,34 @@ static void svg_ps_bars(void) { continue; svg(" \n", - time_to_graph(sampletime[t - 1] - graph_start), + time_to_graph(prev->sampledata->sampletime - graph_start), ps_to_graph(j), - time_to_graph(sampletime[t] - sampletime[t - 1]), + time_to_graph(ps->sample->sampledata->sampletime - prev->sampledata->sampletime), ps_to_graph(wrt)); /* draw cpu over wait - TODO figure out how/why run + wait > interval */ svg(" \n", - time_to_graph(sampletime[t - 1] - graph_start), + time_to_graph(prev->sampledata->sampletime - graph_start), ps_to_graph(j + (1.0 - prt)), - time_to_graph(sampletime[t] - sampletime[t - 1]), + time_to_graph(ps->sample->sampledata->sampletime - prev->sampledata->sampletime), ps_to_graph(prt)); + t++; } /* determine where to display the process name */ - if (sampletime[ps->last] - sampletime[ps->first] < 1.5) + if ((endtime - starttime) < 1.5) /* too small to fit label inside the box */ - w = ps->last; + w = endtime; else - w = ps->first; + w = starttime; /* text label of process name */ svg(" [%i]%.03fs\n", - time_to_graph(sampletime[w] - graph_start) + 5.0, + time_to_graph(w - graph_start) + 5.0, ps_to_graph(j) + 14.0, ps->name, ps->pid, - (ps->sample[ps->last].runtime - ps->sample[ps->first].runtime) / 1000000000.0); + (ps->last->runtime - ps->first->runtime) / 1000000000.0); /* paint lines to the parent process */ if (ps->parent) { /* horizontal part */ @@ -934,6 +1134,7 @@ static void svg_ps_bars(void) { /* make sure we start counting from the point where we actually have * data: assume that bootchart's first sample is when data started */ + ps = ps_first; while (ps->next_ps) { ps = ps->next_ps; @@ -941,17 +1142,27 @@ static void svg_ps_bars(void) { break; } - for (i = ps->first; i < samples - (arg_hz / 2); i++) { + /* need to know last node first */ + ps->sample = ps->first; + i = ps->sample->next->sampledata->counter; + + while (ps->sample->next && i<(samples-(arg_hz/2))) { double crt; double brt; int c; + int ii; + struct ps_sched_struct *sample_hz; + + ps->sample = ps->sample->next; + sample_hz = ps->sample; + for (ii=0;((ii<(int)arg_hz/2)&&(ps->sample->next));ii++) + sample_hz = sample_hz->next; /* subtract bootchart cpu utilization from total */ crt = 0.0; for (c = 0; c < cpus; c++) - crt += cpustat[c].sample[i + ((int)arg_hz / 2)].runtime - cpustat[c].sample[i].runtime; - brt = ps->sample[i + ((int)arg_hz / 2)].runtime - ps->sample[i].runtime; - + crt += sample_hz->sampledata->runtime[c] - ps->sample->sampledata->runtime[c]; + brt = sample_hz->runtime - ps->sample->runtime; /* * our definition of "idle": * @@ -959,7 +1170,7 @@ static void svg_ps_bars(void) { * defaults to 4.0%, which experimentally, is where atom idles */ if ((crt - brt) < (interval / 2.0)) { - idletime = sampletime[i] - graph_start; + idletime = ps->sample->sampledata->sampletime - graph_start; svg("\n\n", idletime); svg("\n", @@ -973,6 +1184,7 @@ static void svg_ps_bars(void) { idletime); break; } + i++; } } -- cgit v1.2.1 From 184d2ed770ccddbb9b6f6a452fdff42c16cb709f Mon Sep 17 00:00:00 2001 From: Auke Kok Date: Thu, 2 May 2013 09:40:52 -0700 Subject: bootchart: cleanup unused structs and globals --- src/bootchart/bootchart.h | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/bootchart/bootchart.h b/src/bootchart/bootchart.h index ee1e67604d..d0273421de 100644 --- a/src/bootchart/bootchart.h +++ b/src/bootchart/bootchart.h @@ -30,7 +30,6 @@ #define MAXCPUS 16 #define MAXPIDS 65535 -#define MAXSAMPLES 8192 struct block_stat_struct { /* /proc/vmstat pgpgin & pgpgout */ @@ -44,11 +43,6 @@ struct cpu_stat_sample_struct { double waittime; }; -struct cpu_stat_struct { - /* per cpu array */ - struct cpu_stat_sample_struct sample[MAXSAMPLES]; -}; - /* per process, per sample data we will log */ struct ps_sched_struct { /* /proc//schedstat fields 1 & 2 */ @@ -68,7 +62,6 @@ struct list_sample_data { double sampletime; int entropy_avail; struct block_stat_struct blockstat; - struct cpu_stat_struct cpustat; LIST_FIELDS(struct list_sample_data, link); /* DLL */ int counter; }; @@ -117,7 +110,6 @@ extern double log_start; extern double sampletime[]; extern struct ps_struct *ps_first; extern struct block_stat_struct blockstat[]; -extern struct cpu_stat_struct cpustat[]; extern int pscount; extern bool arg_relative; extern bool arg_filter; -- cgit v1.2.1 From febfd508297280846588f0e97514065ac23945bc Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Thu, 2 May 2013 19:01:49 +0200 Subject: kdbus: update kdbus.h from upstream --- src/libsystemd-bus/bus-kernel.c | 57 +++++++++++++++++++----------------- src/libsystemd-bus/kdbus.h | 65 +++++++++++------------------------------ 2 files changed, 47 insertions(+), 75 deletions(-) diff --git a/src/libsystemd-bus/bus-kernel.c b/src/libsystemd-bus/bus-kernel.c index c35d95727c..0762b7836f 100644 --- a/src/libsystemd-bus/bus-kernel.c +++ b/src/libsystemd-bus/bus-kernel.c @@ -41,6 +41,9 @@ (uint8_t *)(item) < (uint8_t *)(head) + (head)->size; \ item = KDBUS_ITEM_NEXT(item)) +#define KDBUS_ITEM_HEADER_SIZE offsetof(struct kdbus_item, data) +#define KDBUS_ITEM_SIZE(s) ALIGN8((s) + KDBUS_ITEM_HEADER_SIZE) + static int parse_unique_name(const char *s, uint64_t *id) { int r; @@ -57,61 +60,61 @@ static int parse_unique_name(const char *s, uint64_t *id) { return 1; } -static void append_payload_vec(struct kdbus_msg_item **d, const void *p, size_t sz) { +static void append_payload_vec(struct kdbus_item **d, const void *p, size_t sz) { assert(d); assert(p); assert(sz > 0); *d = ALIGN8_PTR(*d); - (*d)->size = offsetof(struct kdbus_msg_item, vec) + sizeof(struct kdbus_vec); + (*d)->size = offsetof(struct kdbus_item, vec) + sizeof(struct kdbus_vec); (*d)->type = KDBUS_MSG_PAYLOAD_VEC; (*d)->vec.address = (intptr_t) p; (*d)->vec.size = sz; - *d = (struct kdbus_msg_item *) ((uint8_t*) *d + (*d)->size); + *d = (struct kdbus_item *) ((uint8_t*) *d + (*d)->size); } -static void append_destination(struct kdbus_msg_item **d, const char *s, size_t length) { +static void append_destination(struct kdbus_item **d, const char *s, size_t length) { assert(d); assert(s); *d = ALIGN8_PTR(*d); - (*d)->size = offsetof(struct kdbus_msg_item, str) + length + 1; + (*d)->size = offsetof(struct kdbus_item, str) + length + 1; (*d)->type = KDBUS_MSG_DST_NAME; memcpy((*d)->str, s, length + 1); - *d = (struct kdbus_msg_item *) ((uint8_t*) *d + (*d)->size); + *d = (struct kdbus_item *) ((uint8_t*) *d + (*d)->size); } -static void* append_bloom(struct kdbus_msg_item **d, size_t length) { +static void* append_bloom(struct kdbus_item **d, size_t length) { void *r; assert(d); *d = ALIGN8_PTR(*d); - (*d)->size = offsetof(struct kdbus_msg_item, data) + length; + (*d)->size = offsetof(struct kdbus_item, data) + length; (*d)->type = KDBUS_MSG_BLOOM; r = (*d)->data; - *d = (struct kdbus_msg_item *) ((uint8_t*) *d + (*d)->size); + *d = (struct kdbus_item *) ((uint8_t*) *d + (*d)->size); return r; } -static void append_fds(struct kdbus_msg_item **d, const int fds[], unsigned n_fds) { +static void append_fds(struct kdbus_item **d, const int fds[], unsigned n_fds) { assert(d); assert(fds); assert(n_fds > 0); *d = ALIGN8_PTR(*d); - (*d)->size = offsetof(struct kdbus_msg_item, fds) + sizeof(int) * n_fds; + (*d)->size = offsetof(struct kdbus_item, fds) + sizeof(int) * n_fds; (*d)->type = KDBUS_MSG_UNIX_FDS; memcpy((*d)->fds, fds, sizeof(int) * n_fds); - *d = (struct kdbus_msg_item *) ((uint8_t*) *d + (*d)->size); + *d = (struct kdbus_item *) ((uint8_t*) *d + (*d)->size); } static int bus_message_setup_bloom(sd_bus_message *m, void *bloom) { @@ -178,7 +181,7 @@ static int bus_message_setup_bloom(sd_bus_message *m, void *bloom) { } static int bus_message_setup_kmsg(sd_bus *b, sd_bus_message *m) { - struct kdbus_msg_item *d; + struct kdbus_item *d; bool well_known; uint64_t unique; size_t sz, dl; @@ -203,20 +206,20 @@ static int bus_message_setup_kmsg(sd_bus *b, sd_bus_message *m) { sz = offsetof(struct kdbus_msg, items); /* Add in fixed header, fields header and payload */ - sz += 3 * ALIGN8(offsetof(struct kdbus_msg_item, vec) + sizeof(struct kdbus_vec)); + sz += 3 * ALIGN8(offsetof(struct kdbus_item, vec) + sizeof(struct kdbus_vec)); /* Add space for bloom filter */ - sz += ALIGN8(offsetof(struct kdbus_msg_item, data) + BLOOM_SIZE); + sz += ALIGN8(offsetof(struct kdbus_item, data) + BLOOM_SIZE); /* Add in well-known destination header */ if (well_known) { dl = strlen(m->destination); - sz += ALIGN8(offsetof(struct kdbus_msg_item, str) + dl + 1); + sz += ALIGN8(offsetof(struct kdbus_item, str) + dl + 1); } /* Add space for unix fds */ if (m->n_fds > 0) - sz += ALIGN8(offsetof(struct kdbus_msg_item, fds) + sizeof(int)*m->n_fds); + sz += ALIGN8(offsetof(struct kdbus_item, fds) + sizeof(int)*m->n_fds); m->kdbus = memalign(8, sz); if (!m->kdbus) @@ -354,20 +357,20 @@ int bus_kernel_write_message(sd_bus *bus, sd_bus_message *m) { } static void close_kdbus_msg(struct kdbus_msg *k) { - struct kdbus_msg_item *d; + struct kdbus_item *d; KDBUS_ITEM_FOREACH(d, k) { if (d->type != KDBUS_MSG_UNIX_FDS) continue; - close_many(d->fds, (d->size - offsetof(struct kdbus_msg_item, fds)) / sizeof(int)); + close_many(d->fds, (d->size - offsetof(struct kdbus_item, fds)) / sizeof(int)); } } static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k, sd_bus_message **ret) { sd_bus_message *m = NULL; - struct kdbus_msg_item *d; + struct kdbus_item *d; unsigned n_payload = 0, n_fds = 0; _cleanup_free_ int *fds = NULL; struct bus_header *h = NULL; @@ -385,7 +388,7 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k, sd_bus_mess KDBUS_ITEM_FOREACH(d, k) { size_t l; - l = d->size - offsetof(struct kdbus_msg_item, data); + l = d->size - offsetof(struct kdbus_item, data); if (d->type == KDBUS_MSG_PAYLOAD) { @@ -435,7 +438,7 @@ static int bus_kernel_make_message(sd_bus *bus, struct kdbus_msg *k, sd_bus_mess KDBUS_ITEM_FOREACH(d, k) { size_t l; - l = d->size - offsetof(struct kdbus_msg_item, data); + l = d->size - offsetof(struct kdbus_item, data); if (d->type == KDBUS_MSG_PAYLOAD) { @@ -565,7 +568,7 @@ int bus_kernel_read_message(sd_bus *bus, sd_bus_message **m) { int bus_kernel_create(const char *name, char **s) { struct kdbus_cmd_bus_make *make; - struct kdbus_cmd_make_item *n, *cg; + struct kdbus_item *n, *cg; size_t l; int fd; char *p; @@ -579,18 +582,18 @@ int bus_kernel_create(const char *name, char **s) { l = strlen(name); make = alloca0(offsetof(struct kdbus_cmd_bus_make, items) + - sizeof(struct kdbus_cmd_make_item) + sizeof(uint64_t) + - sizeof(struct kdbus_cmd_make_item) + DECIMAL_STR_MAX(uid_t) + 1 + l + 1); + KDBUS_ITEM_HEADER_SIZE + sizeof(uint64_t) + + KDBUS_ITEM_HEADER_SIZE + DECIMAL_STR_MAX(uid_t) + 1 + l + 1); cg = make->items; cg->type = KDBUS_MAKE_CGROUP; cg->data64[0] = 1; - cg->size = sizeof(struct kdbus_cmd_make_item) + sizeof(uint64_t); + cg->size = KDBUS_ITEM_HEADER_SIZE + sizeof(uint64_t); n = KDBUS_ITEM_NEXT(cg); n->type = KDBUS_MAKE_NAME; sprintf(n->str, "%lu-%s", (unsigned long) getuid(), name); - n->size = sizeof(struct kdbus_cmd_make_item) + strlen(n->str) + 1; + n->size = KDBUS_ITEM_HEADER_SIZE + strlen(n->str) + 1; make->size = offsetof(struct kdbus_cmd_bus_make, items) + cg->size + n->size; make->flags = KDBUS_MAKE_ACCESS_WORLD | KDBUS_MAKE_POLICY_OPEN; diff --git a/src/libsystemd-bus/kdbus.h b/src/libsystemd-bus/kdbus.h index 6d817b8a2b..049c988a47 100644 --- a/src/libsystemd-bus/kdbus.h +++ b/src/libsystemd-bus/kdbus.h @@ -110,12 +110,12 @@ struct kdbus_vec { }; /** - * struct kdbus_msg_item - chain of data blocks + * struct kdbus_item - chain of data blocks * * size: overall data record size - * type: kdbus_msg_item type of data + * type: kdbus_item type of data */ -struct kdbus_msg_item { +struct kdbus_item { __u64 size; __u64 type; union { @@ -125,14 +125,19 @@ struct kdbus_msg_item { __u64 data64[0]; char str[0]; + /* connection */ + __u64 id; + /* data vector */ struct kdbus_vec vec; - /* specific fields */ - int fds[0]; /* int array of file descriptors */ + /* process credentials and properties*/ struct kdbus_creds creds; struct kdbus_audit audit; struct kdbus_timestamp timestamp; + + /* specific fields */ + int fds[0]; struct kdbus_manager_msg_name_change name_change; struct kdbus_manager_msg_id_change id_change; }; @@ -171,7 +176,7 @@ struct kdbus_msg { __u64 cookie_reply; /* cookie we reply to */ __u64 timeout_ns; /* timespan to wait for reply */ }; - struct kdbus_msg_item items[0]; + struct kdbus_item items[0]; }; enum { @@ -233,16 +238,6 @@ enum { KDBUS_HELLO_NULL, }; -struct kdbus_cmd_hello_item { - __u64 size; - __u64 type; - union { - __u8 data[0]; - __u64 data64[0]; - char str[0]; - }; -}; - struct kdbus_cmd_hello { __u64 size; @@ -263,7 +258,7 @@ struct kdbus_cmd_hello { __u64 id; /* id assigned to this connection */ __u64 bloom_size; /* The bloom filter size chosen by the * bus owner */ - struct kdbus_cmd_hello_item items[0]; + struct kdbus_item items[0]; }; /* Flags for kdbus_cmd_{bus,ep,ns}_make */ @@ -286,16 +281,6 @@ enum { * privileges */ }; -struct kdbus_cmd_make_item { - __u64 size; - __u64 type; - union { - __u8 data[0]; - __u64 data64[0]; - char str[0]; - }; -}; - struct kdbus_cmd_bus_make { __u64 size; __u64 flags; /* userspace → kernel, kernel → userspace @@ -307,7 +292,7 @@ struct kdbus_cmd_bus_make { * structure and returned from * KDBUS_CMD_HELLO, later */ __u64 bloom_size; /* size of the bloom filter for this bus */ - struct kdbus_cmd_make_item items[0]; + struct kdbus_item items[0]; }; @@ -319,7 +304,7 @@ struct kdbus_cmd_ep_make { * same way as for * KDBUS_CMD_BUS_MAKE. Unused for * now. */ - struct kdbus_cmd_make_item items[0]; + struct kdbus_item items[0]; }; struct kdbus_cmd_ns_make { @@ -330,7 +315,7 @@ struct kdbus_cmd_ns_make { * same way as for * KDBUS_CMD_BUS_MAKE. Unused for * now. */ - struct kdbus_cmd_make_item items[0]; + struct kdbus_item items[0]; }; enum { @@ -363,18 +348,12 @@ enum { KDBUS_NAME_INFO_ITEM_AUDIT, /* kernel → userspace */ }; -struct kdbus_cmd_name_info_item { - __u64 size; - __u64 type; - __u8 data[0]; -}; - struct kdbus_cmd_name_info { __u64 size; /* overall size of info */ __u64 flags; __u64 id; /* either ID, or 0 and _ITEM_NAME follows */ struct kdbus_creds creds; - struct kdbus_cmd_name_info_item items[0]; /* list of item records */ + struct kdbus_item items[0]; /* list of item records */ }; enum { @@ -388,22 +367,12 @@ enum { KDBUS_MATCH_ID_REMOVE, /* Matches an ID against KDBUS_MSG_ID_REMOVE */ }; -struct kdbus_cmd_match_item { - __u64 size; - __u64 type; - union { - __u64 id; - __u8 data[0]; - char str[0]; - }; -}; - struct kdbus_cmd_match { __u64 size; __u64 id; /* We allow registration/deregestration of matches for other peers */ __u64 cookie; /* userspace supplied cookie; when removing; kernel deletes everything with same cookie */ __u64 src_id; /* ~0: any. other: exact unique match */ - struct kdbus_cmd_match_item items[0]; + struct kdbus_item items[0]; }; struct kdbus_cmd_monitor { -- cgit v1.2.1 From 9341a4a167f348fc42cdd6f7ac8763bf3a0c5911 Mon Sep 17 00:00:00 2001 From: Daniel Buch Date: Thu, 2 May 2013 23:50:49 +0200 Subject: test-hashmap.c: add unit-test for hashmap --- Makefile.am | 12 +- src/test/test-hashmap.c | 508 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 519 insertions(+), 1 deletion(-) create mode 100644 src/test/test-hashmap.c diff --git a/Makefile.am b/Makefile.am index 9e0f5fb20e..d50ab3d704 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1102,7 +1102,8 @@ tests += \ test-cgroup-util \ test-prioq \ test-fileio \ - test-time + test-time \ + test-hashmap EXTRA_DIST += \ test/sched_idle_bad.service \ @@ -1193,6 +1194,15 @@ test_util_CFLAGS = \ test_util_LDADD = \ libsystemd-core.la +test_hashmap_SOURCES = \ + src/test/test-hashmap.c + +test_hashmap_CFLAGS = \ + $(AM_CFLAGS) + +test_hashmap_LDADD = \ + libsystemd-core.la + test_prioq_SOURCES = \ src/test/test-prioq.c diff --git a/src/test/test-hashmap.c b/src/test/test-hashmap.c new file mode 100644 index 0000000000..2aead79bb1 --- /dev/null +++ b/src/test/test-hashmap.c @@ -0,0 +1,508 @@ +/*** + This file is part of systemd + + Copyright 2013 Daniel Buch + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include +#include "strv.h" +#include "util.h" +#include "hashmap.h" + +static void test_hashmap_replace(void) { + Hashmap *m; + char *val1, *val2, *val3, *val4, *val5, *r; + + m = hashmap_new(string_hash_func, string_compare_func); + + val1 = strdup("val1"); + assert_se(val1); + val2 = strdup("val2"); + assert_se(val2); + val3 = strdup("val3"); + assert_se(val3); + val4 = strdup("val4"); + assert_se(val4); + val5 = strdup("val5"); + assert_se(val5); + + hashmap_put(m, "key 1", val1); + hashmap_put(m, "key 2", val2); + hashmap_put(m, "key 3", val3); + hashmap_put(m, "key 4", val4); + + hashmap_replace(m, "key 3", val1); + r = hashmap_get(m, "key 3"); + assert_se(streq(r, "val1")); + + hashmap_replace(m, "key 5", val5); + r = hashmap_get(m, "key 5"); + assert_se(streq(r, "val5")); + + free(val1); + free(val2); + free(val3); + free(val4); + free(val5); + hashmap_free(m); +} + +static void test_hashmap_copy(void) { + Hashmap *m, *copy; + char *val1, *val2, *val3, *val4, *r; + + val1 = strdup("val1"); + assert_se(val1); + val2 = strdup("val2"); + assert_se(val2); + val3 = strdup("val3"); + assert_se(val3); + val4 = strdup("val4"); + assert_se(val4); + + m = hashmap_new(string_hash_func, string_compare_func); + + hashmap_put(m, "key 1", val1); + hashmap_put(m, "key 2", val2); + hashmap_put(m, "key 3", val3); + hashmap_put(m, "key 4", val4); + + copy = hashmap_copy(m); + + r = hashmap_get(copy, "key 1"); + assert_se(streq(r, "val1")); + r = hashmap_get(copy, "key 2"); + assert_se(streq(r, "val2")); + r = hashmap_get(copy, "key 3"); + assert_se(streq(r, "val3")); + r = hashmap_get(copy, "key 4"); + assert_se(streq(r, "val4")); + + hashmap_free_free(copy); + hashmap_free(m); +} + +static void test_hashmap_get_strv(void) { + Hashmap *m; + char **strv; + char *val1, *val2, *val3, *val4; + + val1 = strdup("val1"); + assert_se(val1); + val2 = strdup("val2"); + assert_se(val2); + val3 = strdup("val3"); + assert_se(val3); + val4 = strdup("val4"); + assert_se(val4); + + m = hashmap_new(string_hash_func, string_compare_func); + + hashmap_put(m, "key 1", val1); + hashmap_put(m, "key 2", val2); + hashmap_put(m, "key 3", val3); + hashmap_put(m, "key 4", val4); + + strv = hashmap_get_strv(m); + + assert_se(streq(strv[0], "val1")); + assert_se(streq(strv[1], "val2")); + assert_se(streq(strv[2], "val3")); + assert_se(streq(strv[3], "val4")); + + strv_free(strv); + + hashmap_free(m); +} + +static void test_hashmap_move_one(void) { + Hashmap *m, *n; + char *val1, *val2, *val3, *val4, *r; + + val1 = strdup("val1"); + assert_se(val1); + val2 = strdup("val2"); + assert_se(val2); + val3 = strdup("val3"); + assert_se(val3); + val4 = strdup("val4"); + assert_se(val4); + + m = hashmap_new(string_hash_func, string_compare_func); + n = hashmap_new(string_hash_func, string_compare_func); + + hashmap_put(m, "key 1", val1); + hashmap_put(m, "key 2", val2); + hashmap_put(m, "key 3", val3); + hashmap_put(m, "key 4", val4); + + hashmap_move_one(n, m, "key 3"); + hashmap_move_one(n, m, "key 4"); + + r = hashmap_get(n, "key 3"); + assert_se(r && streq(r, "val3")); + r = hashmap_get(n, "key 4"); + assert_se(r && streq(r, "val4")); + r = hashmap_get(m, "key 3"); + assert_se(!r); + + + hashmap_free_free(m); + hashmap_free_free(n); +} + +static void test_hashmap_next(void) { + Hashmap *m; + char *val1, *val2, *val3, *val4, *r; + + m = hashmap_new(string_hash_func, string_compare_func); + val1 = strdup("val1"); + assert_se(val1); + val2 = strdup("val2"); + assert_se(val2); + val3 = strdup("val3"); + assert_se(val3); + val4 = strdup("val4"); + assert_se(val4); + + hashmap_put(m, "key 1", val1); + hashmap_put(m, "key 2", val2); + hashmap_put(m, "key 3", val3); + hashmap_put(m, "key 4", val4); + + r = hashmap_next(m, "key 1"); + assert_se(streq(r, val2)); + r = hashmap_next(m, "key 2"); + assert_se(streq(r, val3)); + r = hashmap_next(m, "key 3"); + assert_se(streq(r, val4)); + r = hashmap_next(m, "key 4"); + assert_se(!r); + + hashmap_free_free(m); +} + +static void test_hashmap_update(void) { + Hashmap *m; + char *val1, *val2, *r; + + m = hashmap_new(string_hash_func, string_compare_func); + val1 = strdup("old_value"); + assert_se(val1); + val2 = strdup("new_value"); + assert_se(val2); + + hashmap_put(m, "key 1", val1); + r = hashmap_get(m, "key 1"); + assert_se(streq(r, "old_value")); + + hashmap_update(m, "key 1", val2); + r = hashmap_get(m, "key 1"); + assert_se(streq(r, "new_value")); + + free(val1); + free(val2); + hashmap_free(m); +} + +static void test_hashmap_put(void) { + Hashmap *m; + int valid_hashmap_put; + + m = hashmap_new(string_hash_func, string_compare_func); + + valid_hashmap_put = hashmap_put(m, "key 1", (void*) (const char *) "val 1"); + assert_se(valid_hashmap_put == 1); + + assert_se(m); + hashmap_free(m); +} + +static void test_hashmap_ensure_allocated(void) { + Hashmap *m; + int valid_hashmap; + + m = hashmap_new(string_hash_func, string_compare_func); + + valid_hashmap = hashmap_ensure_allocated(&m, string_hash_func, string_compare_func); + assert_se(valid_hashmap == 0); + + assert_se(m); + hashmap_free(m); +} + +static void test_hashmap_foreach_key(void) { + Hashmap *m; + Iterator i; + bool key_found[] = { false, false, false, false }; + const char *s; + const char *key; + static const char key_table[] = + "key 1\0" + "key 2\0" + "key 3\0" + "key 4\0"; + + m = hashmap_new(string_hash_func, string_compare_func); + + NULSTR_FOREACH(key, key_table) + hashmap_put(m, key, (void*) (const char*) "my dummy val"); + + HASHMAP_FOREACH_KEY(s, key, m, i) { + if (!key_found[0] && streq(key, "key 1")) + key_found[0] = true; + else if (!key_found[1] && streq(key, "key 2")) + key_found[1] = true; + else if (!key_found[2] && streq(key, "key 3")) + key_found[2] = true; + else if (!key_found[3] && streq(key, "fail")) + key_found[3] = true; + } + + assert_se(m); + assert_se(key_found[0] && key_found[1] && key_found[2] && !key_found[3]); + + hashmap_free(m); +} + +static void test_hashmap_foreach(void) { + Hashmap *m; + Iterator i; + bool value_found[] = { false, false, false, false }; + char *val1, *val2, *val3, *val4, *s; + + val1 = strdup("my val1"); + assert_se(val1); + val2 = strdup("my val2"); + assert_se(val2); + val3 = strdup("my val3"); + assert_se(val3); + val4 = strdup("my val4"); + assert_se(val4); + + m = hashmap_new(string_hash_func, string_compare_func); + + hashmap_put(m, "Key 1", val1); + hashmap_put(m, "Key 2", val2); + hashmap_put(m, "Key 3", val3); + hashmap_put(m, "Key 4", val4); + + HASHMAP_FOREACH(s, m, i) { + if (!value_found[0] && streq(s, val1)) + value_found[0] = true; + else if (!value_found[1] && streq(s, val2)) + value_found[1] = true; + else if (!value_found[2] && streq(s, val3)) + value_found[2] = true; + else if (!value_found[3] && streq(s, val4)) + value_found[3] = true; + } + + assert_se(m); + assert_se(value_found[0] && value_found[1] && value_found[2] && value_found[3]); + + hashmap_free_free(m); +} + +static void test_hashmap_foreach_backwards(void) { + Hashmap *m; + Iterator i; + char *val1, *val2, *val3, *val4, *s; + bool value_found[] = { false, false, false, false }; + + val1 = strdup("my val1"); + assert_se(val1); + val2 = strdup("my val2"); + assert_se(val2); + val3 = strdup("my val3"); + assert_se(val3); + val4 = strdup("my val4"); + assert_se(val4); + + m = hashmap_new(string_hash_func, string_compare_func); + hashmap_put(m, "Key 1", val1); + hashmap_put(m, "Key 2", val2); + hashmap_put(m, "Key 3", val3); + hashmap_put(m, "Key 4", val4); + + HASHMAP_FOREACH_BACKWARDS(s, m, i) { + if (!value_found[0] && streq(s, val1)) + value_found[0] = true; + else if (!value_found[1] && streq(s, val2)) + value_found[1] = true; + else if (!value_found[2] && streq(s, val3)) + value_found[2] = true; + else if (!value_found[3] && streq(s, val4)) + value_found[3] = true; + } + + assert_se(m); + assert_se(value_found[0] && value_found[1] && value_found[2] && value_found[3]); + + hashmap_free_free(m); +} + +static void test_hashmap_merge(void) { + Hashmap *m; + Hashmap *n; + char *val1, *val2, *val3, *val4, *r; + + val1 = strdup("my val1"); + assert_se(val1); + val2 = strdup("my val2"); + assert_se(val2); + val3 = strdup("my val3"); + assert_se(val3); + val4 = strdup("my val4"); + assert_se(val4); + + n = hashmap_new(string_hash_func, string_compare_func); + m = hashmap_new(string_hash_func, string_compare_func); + + hashmap_put(m, "Key 1", val1); + hashmap_put(m, "Key 2", val2); + hashmap_put(n, "Key 3", val3); + hashmap_put(n, "Key 4", val4); + + assert_se(hashmap_merge(m, n) == 0); + r = hashmap_get(m, "Key 3"); + assert_se(r && streq(r, "my val3")); + r = hashmap_get(m, "Key 4"); + assert_se(r && streq(r, "my val4")); + + assert_se(n); + assert_se(m); + hashmap_free(n); + hashmap_free_free(m); +} + +static void test_hashmap_contains(void) { + Hashmap *m; + char *val1; + + val1 = strdup("my val"); + assert_se(val1); + + m = hashmap_new(string_hash_func, string_compare_func); + + assert_se(!hashmap_contains(m, "Key 1")); + hashmap_put(m, "Key 1", val1); + assert_se(hashmap_contains(m, "Key 1")); + + assert_se(m); + hashmap_free_free(m); +} + +static void test_hashmap_isempty(void) { + Hashmap *m; + char *val1; + + val1 = strdup("my val"); + assert_se(val1); + + m = hashmap_new(string_hash_func, string_compare_func); + + assert_se(hashmap_isempty(m)); + hashmap_put(m, "Key 1", val1); + assert_se(!hashmap_isempty(m)); + + assert_se(m); + hashmap_free_free(m); +} + +static void test_hashmap_size(void) { + Hashmap *m; + char *val1, *val2, *val3, *val4; + + val1 = strdup("my val"); + assert_se(val1); + val2 = strdup("my val"); + assert_se(val2); + val3 = strdup("my val"); + assert_se(val3); + val4 = strdup("my val"); + assert_se(val4); + + m = hashmap_new(string_hash_func, string_compare_func); + + hashmap_put(m, "Key 1", val1); + hashmap_put(m, "Key 2", val2); + hashmap_put(m, "Key 3", val3); + hashmap_put(m, "Key 4", val4); + + assert_se(m); + assert_se(hashmap_size(m) == 4); + hashmap_free_free(m); +} + +static void test_hashmap_get(void) { + Hashmap *m; + char *r; + char *val; + + val = strdup("my val"); + assert_se(val); + + m = hashmap_new(string_hash_func, string_compare_func); + + hashmap_put(m, "Key 1", val); + + r = hashmap_get(m, "Key 1"); + assert_se(streq(r, val)); + + assert_se(m); + hashmap_free_free(m); +} + +static void test_uint64_compare_func(void) { + assert_se(uint64_compare_func("a", "a") == 0); + assert_se(uint64_compare_func("a", "b") == -1); + assert_se(uint64_compare_func("b", "a") == 1); +} + +static void test_trivial_compare_func(void) { + assert_se(trivial_compare_func(INT_TO_PTR('a'), INT_TO_PTR('a')) == 0); + assert_se(trivial_compare_func(INT_TO_PTR('a'), INT_TO_PTR('b')) == -1); + assert_se(trivial_compare_func(INT_TO_PTR('b'), INT_TO_PTR('a')) == 1); +} + +static void test_string_compare_func(void) { + assert_se(!string_compare_func("fred", "wilma") == 0); + assert_se(string_compare_func("fred", "fred") == 0); +} + +int main(int argc, const char *argv[]) +{ + test_hashmap_copy(); + test_hashmap_get_strv(); + test_hashmap_move_one(); + test_hashmap_next(); + test_hashmap_replace(); + test_hashmap_update(); + test_hashmap_put(); + test_hashmap_ensure_allocated(); + test_hashmap_foreach(); + test_hashmap_foreach_backwards(); + test_hashmap_foreach_key(); + test_hashmap_contains(); + test_hashmap_merge(); + test_hashmap_isempty(); + test_hashmap_get(); + test_hashmap_size(); + test_uint64_compare_func(); + test_trivial_compare_func(); + test_string_compare_func(); +} -- cgit v1.2.1 From 2f79c10e9aef916efbcf29315eea8c25d0a50ac4 Mon Sep 17 00:00:00 2001 From: Daniel Buch Date: Fri, 26 Apr 2013 18:40:08 +0200 Subject: hashmap.h: fix coding style issue --- src/shared/hashmap.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/shared/hashmap.h b/src/shared/hashmap.h index 26bd03096d..f52517f476 100644 --- a/src/shared/hashmap.h +++ b/src/shared/hashmap.h @@ -57,11 +57,11 @@ int hashmap_ensure_allocated(Hashmap **h, hash_func_t hash_func, compare_func_t int hashmap_put(Hashmap *h, const void *key, void *value); int hashmap_update(Hashmap *h, const void *key, void *value); int hashmap_replace(Hashmap *h, const void *key, void *value); -void* hashmap_get(Hashmap *h, const void *key); -void* hashmap_get2(Hashmap *h, const void *key, void **rkey); +void *hashmap_get(Hashmap *h, const void *key); +void *hashmap_get2(Hashmap *h, const void *key, void **rkey); bool hashmap_contains(Hashmap *h, const void *key); -void* hashmap_remove(Hashmap *h, const void *key); -void* hashmap_remove_value(Hashmap *h, const void *key, void *value); +void *hashmap_remove(Hashmap *h, const void *key); +void *hashmap_remove_value(Hashmap *h, const void *key, void *value); int hashmap_remove_and_put(Hashmap *h, const void *old_key, const void *new_key, void *value); int hashmap_remove_and_replace(Hashmap *h, const void *old_key, const void *new_key, void *value); @@ -82,9 +82,9 @@ void hashmap_clear_free_free(Hashmap *h); void *hashmap_steal_first(Hashmap *h); void *hashmap_steal_first_key(Hashmap *h); -void* hashmap_first(Hashmap *h); -void* hashmap_first_key(Hashmap *h); -void* hashmap_last(Hashmap *h); +void *hashmap_first(Hashmap *h); +void *hashmap_first_key(Hashmap *h); +void *hashmap_last(Hashmap *h); void *hashmap_next(Hashmap *h, const void *key); -- cgit v1.2.1 From 44a6b1b68029833893f6e9cee35aa27a974038f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 2 May 2013 22:51:50 -0400 Subject: Add __attribute__((const, pure, format)) in various places I'm assuming that it's fine if a _const_ or _pure_ function calls assert. It is assumed that the assert won't trigger, and even if it does, it can only trigger on the first call with a given set of parameters, and we don't care if the compiler moves the order of calls. --- src/core/automount.h | 8 +++--- src/core/cgroup-attr.h | 4 +-- src/core/cgroup.h | 2 +- src/core/condition.h | 4 +-- src/core/device.c | 4 +-- src/core/device.h | 4 +-- src/core/execute.c | 4 +-- src/core/execute.h | 8 +++--- src/core/job.c | 4 +-- src/core/job.h | 26 +++++++++--------- src/core/kill.h | 10 ++++--- src/core/manager.h | 2 +- src/core/mount.c | 10 +++---- src/core/mount.h | 12 ++++---- src/core/path.c | 4 +-- src/core/path.h | 12 ++++---- src/core/selinux-access.c | 2 +- src/core/service.c | 8 +++--- src/core/service.h | 28 +++++++++---------- src/core/snapshot.c | 4 +-- src/core/snapshot.h | 4 +-- src/core/socket.c | 10 +++---- src/core/socket.h | 14 +++++----- src/core/swap.c | 6 ++-- src/core/swap.h | 12 ++++---- src/core/target.c | 4 +-- src/core/target.h | 4 +-- src/core/timer.c | 4 +-- src/core/timer.h | 12 ++++---- src/core/transaction.c | 4 +-- src/core/unit.c | 4 +-- src/core/unit.h | 26 +++++++++--------- src/journal/catalog.h | 2 +- src/journal/fsprg.c | 2 +- src/journal/fsprg.h | 10 ++++--- src/journal/journal-file.c | 2 +- src/journal/journal-file.h | 6 ++-- src/journal/journal-send.c | 2 +- src/journal/journald-rate-limit.c | 2 +- src/journal/journald-server.h | 8 +++--- src/journal/journald-syslog.h | 2 +- src/journal/lookup3.h | 8 ++++-- src/journal/mmap-cache.c | 2 +- src/journal/sd-journal.c | 2 +- src/login/logind-action.h | 4 +-- src/login/logind-session.h | 16 +++++------ src/login/logind-user.h | 4 +-- src/shared/calendarspec.c | 4 +-- src/shared/cgroup-util.c | 2 +- src/shared/cgroup-util.h | 2 +- src/shared/dbus-common.h | 8 ++++-- src/shared/env-util.c | 2 +- src/shared/env-util.h | 4 +-- src/shared/exit-status.h | 2 +- src/shared/hashmap.h | 24 ++++++++-------- src/shared/install.h | 8 +++--- src/shared/log.h | 10 +++---- src/shared/logs-show.h | 4 +-- src/shared/pager.h | 4 ++- src/shared/path-lookup.h | 4 +-- src/shared/path-util.h | 30 ++++++++++---------- src/shared/prioq.c | 2 +- src/shared/prioq.h | 6 ++-- src/shared/socket-util.h | 10 +++---- src/shared/strv.h | 8 +++--- src/shared/time-util.h | 4 +-- src/shared/unit-name.h | 22 ++++++++------- src/shared/util.c | 6 ++-- src/shared/util.h | 58 +++++++++++++++++++-------------------- src/shared/utmp-wtmp.c | 2 +- src/shutdownd/shutdownd.c | 2 +- src/systemctl/systemctl.c | 2 +- 72 files changed, 291 insertions(+), 275 deletions(-) diff --git a/src/core/automount.h b/src/core/automount.h index 8276051352..0c6b8a72e9 100644 --- a/src/core/automount.h +++ b/src/core/automount.h @@ -64,8 +64,8 @@ int automount_send_ready(Automount *a, int status); int automount_add_one_mount_link(Automount *a, Mount *m); -const char* automount_state_to_string(AutomountState i); -AutomountState automount_state_from_string(const char *s); +const char* automount_state_to_string(AutomountState i) _const_; +AutomountState automount_state_from_string(const char *s) _pure_; -const char* automount_result_to_string(AutomountResult i); -AutomountResult automount_result_from_string(const char *s); +const char* automount_result_to_string(AutomountResult i) _const_; +AutomountResult automount_result_from_string(const char *s) _pure_; diff --git a/src/core/cgroup-attr.h b/src/core/cgroup-attr.h index 0b542981e8..3a13b7c92d 100644 --- a/src/core/cgroup-attr.h +++ b/src/core/cgroup-attr.h @@ -42,8 +42,8 @@ struct CGroupAttribute { int cgroup_attribute_apply(CGroupAttribute *a, CGroupBonding *b); int cgroup_attribute_apply_list(CGroupAttribute *first, CGroupBonding *b); -bool cgroup_attribute_matches(CGroupAttribute *a, const char *controller, const char *name); -CGroupAttribute *cgroup_attribute_find_list(CGroupAttribute *first, const char *controller, const char *name); +bool cgroup_attribute_matches(CGroupAttribute *a, const char *controller, const char *name) _pure_; +CGroupAttribute *cgroup_attribute_find_list(CGroupAttribute *first, const char *controller, const char *name) _pure_; void cgroup_attribute_free(CGroupAttribute *a); void cgroup_attribute_free_list(CGroupAttribute *first); diff --git a/src/core/cgroup.h b/src/core/cgroup.h index 2ff39e5767..6555d89e37 100644 --- a/src/core/cgroup.h +++ b/src/core/cgroup.h @@ -76,7 +76,7 @@ void cgroup_bonding_trim_list(CGroupBonding *first, bool delete_root); int cgroup_bonding_is_empty(CGroupBonding *b); int cgroup_bonding_is_empty_list(CGroupBonding *first); -CGroupBonding *cgroup_bonding_find_list(CGroupBonding *first, const char *controller); +CGroupBonding *cgroup_bonding_find_list(CGroupBonding *first, const char *controller) _pure_; char *cgroup_bonding_to_string(CGroupBonding *b); diff --git a/src/core/condition.h b/src/core/condition.h index 1797385d26..50ed955af9 100644 --- a/src/core/condition.h +++ b/src/core/condition.h @@ -66,5 +66,5 @@ bool condition_test_list(Condition *c); void condition_dump(Condition *c, FILE *f, const char *prefix); void condition_dump_list(Condition *c, FILE *f, const char *prefix); -const char* condition_type_to_string(ConditionType t); -int condition_type_from_string(const char *s); +const char* condition_type_to_string(ConditionType t) _const_; +int condition_type_from_string(const char *s) _pure_; diff --git a/src/core/device.c b/src/core/device.c index 734d3f32e1..e83e797787 100644 --- a/src/core/device.c +++ b/src/core/device.c @@ -124,13 +124,13 @@ static void device_dump(Unit *u, FILE *f, const char *prefix) { prefix, strna(d->sysfs)); } -static UnitActiveState device_active_state(Unit *u) { +_pure_ static UnitActiveState device_active_state(Unit *u) { assert(u); return state_translation_table[DEVICE(u)->state]; } -static const char *device_sub_state_to_string(Unit *u) { +_pure_ static const char *device_sub_state_to_string(Unit *u) { assert(u); return device_state_to_string(DEVICE(u)->state); diff --git a/src/core/device.h b/src/core/device.h index 3c4604f60e..41e8de9703 100644 --- a/src/core/device.h +++ b/src/core/device.h @@ -52,5 +52,5 @@ extern const UnitVTable device_vtable; void device_fd_event(Manager *m, int events); -const char* device_state_to_string(DeviceState i); -DeviceState device_state_from_string(const char *s); +const char* device_state_to_string(DeviceState i) _const_; +DeviceState device_state_from_string(const char *s) _pure_; diff --git a/src/core/execute.c b/src/core/execute.c index 5767037acd..3959ef9623 100644 --- a/src/core/execute.c +++ b/src/core/execute.c @@ -144,7 +144,7 @@ static int flags_fds(const int fds[], unsigned n_fds, bool nonblock) { return 0; } -static const char *tty_path(const ExecContext *context) { +_pure_ static const char *tty_path(const ExecContext *context) { assert(context); if (context->tty_path) @@ -509,7 +509,7 @@ fail: return r; } -static int write_confirm_message(const char *format, ...) { +_printf_attr_(1, 2) static int write_confirm_message(const char *format, ...) { int fd; va_list ap; diff --git a/src/core/execute.h b/src/core/execute.h index 3ce9221ab1..15574dc97e 100644 --- a/src/core/execute.h +++ b/src/core/execute.h @@ -210,8 +210,8 @@ void exec_status_start(ExecStatus *s, pid_t pid); void exec_status_exit(ExecStatus *s, ExecContext *context, pid_t pid, int code, int status); void exec_status_dump(ExecStatus *s, FILE *f, const char *prefix); -const char* exec_output_to_string(ExecOutput i); -ExecOutput exec_output_from_string(const char *s); +const char* exec_output_to_string(ExecOutput i) _const_; +ExecOutput exec_output_from_string(const char *s) _pure_; -const char* exec_input_to_string(ExecInput i); -ExecInput exec_input_from_string(const char *s); +const char* exec_input_to_string(ExecInput i) _const_; +ExecInput exec_input_from_string(const char *s) _pure_; diff --git a/src/core/job.c b/src/core/job.c index 9a425a6da1..d304a16d06 100644 --- a/src/core/job.c +++ b/src/core/job.c @@ -569,7 +569,7 @@ int job_run_and_invalidate(Job *j) { return r; } -static const char *job_get_status_message_format(Unit *u, JobType t, JobResult result) { +_pure_ static const char *job_get_status_message_format(Unit *u, JobType t, JobResult result) { const UnitStatusMessageFormats *format_table; assert(u); @@ -588,7 +588,7 @@ static const char *job_get_status_message_format(Unit *u, JobType t, JobResult r return NULL; } -static const char *job_get_status_message_format_try_harder(Unit *u, JobType t, JobResult result) { +_pure_ static const char *job_get_status_message_format_try_harder(Unit *u, JobType t, JobResult result) { const char *format; assert(u); diff --git a/src/core/job.h b/src/core/job.h index 45d0487451..d90bc96b76 100644 --- a/src/core/job.h +++ b/src/core/job.h @@ -183,22 +183,22 @@ void job_dependency_free(JobDependency *l); int job_merge(Job *j, Job *other); -JobType job_type_lookup_merge(JobType a, JobType b); +JobType job_type_lookup_merge(JobType a, JobType b) _pure_; -static inline bool job_type_is_mergeable(JobType a, JobType b) { +_pure_ static inline bool job_type_is_mergeable(JobType a, JobType b) { return job_type_lookup_merge(a, b) >= 0; } -static inline bool job_type_is_conflicting(JobType a, JobType b) { +_pure_ static inline bool job_type_is_conflicting(JobType a, JobType b) { return !job_type_is_mergeable(a, b); } -static inline bool job_type_is_superset(JobType a, JobType b) { +_pure_ static inline bool job_type_is_superset(JobType a, JobType b) { /* Checks whether operation a is a "superset" of b in its actions */ return a == job_type_lookup_merge(a, b); } -bool job_type_is_redundant(JobType a, UnitActiveState b); +bool job_type_is_redundant(JobType a, UnitActiveState b) _pure_; /* Collapses a state-dependent job type into a simpler type by observing * the state of the unit which it is going to be applied to. */ @@ -221,14 +221,14 @@ char *job_dbus_path(Job *j); void job_shutdown_magic(Job *j); -const char* job_type_to_string(JobType t); -JobType job_type_from_string(const char *s); +const char* job_type_to_string(JobType t) _const_; +JobType job_type_from_string(const char *s) _pure_; -const char* job_state_to_string(JobState t); -JobState job_state_from_string(const char *s); +const char* job_state_to_string(JobState t) _const_; +JobState job_state_from_string(const char *s) _pure_; -const char* job_mode_to_string(JobMode t); -JobMode job_mode_from_string(const char *s); +const char* job_mode_to_string(JobMode t) _const_; +JobMode job_mode_from_string(const char *s) _pure_; -const char* job_result_to_string(JobResult t); -JobResult job_result_from_string(const char *s); +const char* job_result_to_string(JobResult t) _const_; +JobResult job_result_from_string(const char *s) _pure_; diff --git a/src/core/kill.h b/src/core/kill.h index 3c9b0ab8db..71a0513e84 100644 --- a/src/core/kill.h +++ b/src/core/kill.h @@ -26,6 +26,8 @@ typedef struct KillContext KillContext; #include #include +#include "macro.h" + typedef enum KillMode { /* The kill mode is a property of a unit. */ KILL_CONTROL_GROUP = 0, @@ -53,8 +55,8 @@ typedef enum KillWho { void kill_context_init(KillContext *c); void kill_context_dump(KillContext *c, FILE *f, const char *prefix); -const char *kill_mode_to_string(KillMode k); -KillMode kill_mode_from_string(const char *s); +const char *kill_mode_to_string(KillMode k) _const_; +KillMode kill_mode_from_string(const char *s) _pure_; -const char *kill_who_to_string(KillWho k); -KillWho kill_who_from_string(const char *s); +const char *kill_who_to_string(KillWho k) _const_; +KillWho kill_who_from_string(const char *s) _pure_; diff --git a/src/core/manager.h b/src/core/manager.h index b9bd2099f8..bf833540ae 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -284,7 +284,7 @@ int manager_distribute_fds(Manager *m, FDSet *fds); int manager_reload(Manager *m); -bool manager_is_reloading_or_reexecuting(Manager *m); +bool manager_is_reloading_or_reexecuting(Manager *m) _pure_; void manager_reset_failed(Manager *m); diff --git a/src/core/mount.c b/src/core/mount.c index 4f245555f2..10073b50be 100644 --- a/src/core/mount.c +++ b/src/core/mount.c @@ -136,7 +136,7 @@ static void mount_done(Unit *u) { unit_unwatch_timer(u, &m->timer_watch); } -static MountParameters* get_mount_parameters_fragment(Mount *m) { +_pure_ static MountParameters* get_mount_parameters_fragment(Mount *m) { assert(m); if (m->from_fragment) @@ -145,7 +145,7 @@ static MountParameters* get_mount_parameters_fragment(Mount *m) { return NULL; } -static MountParameters* get_mount_parameters(Mount *m) { +_pure_ static MountParameters* get_mount_parameters(Mount *m) { assert(m); if (m->from_proc_self_mountinfo) @@ -1260,19 +1260,19 @@ static int mount_deserialize_item(Unit *u, const char *key, const char *value, F return 0; } -static UnitActiveState mount_active_state(Unit *u) { +_pure_ static UnitActiveState mount_active_state(Unit *u) { assert(u); return state_translation_table[MOUNT(u)->state]; } -static const char *mount_sub_state_to_string(Unit *u) { +_pure_ static const char *mount_sub_state_to_string(Unit *u) { assert(u); return mount_state_to_string(MOUNT(u)->state); } -static bool mount_check_gc(Unit *u) { +_pure_ static bool mount_check_gc(Unit *u) { Mount *m = MOUNT(u); assert(m); diff --git a/src/core/mount.h b/src/core/mount.h index 30c6d9b249..bcc10ee0d4 100644 --- a/src/core/mount.h +++ b/src/core/mount.h @@ -111,13 +111,13 @@ extern const UnitVTable mount_vtable; void mount_fd_event(Manager *m, int events); -const char* mount_state_to_string(MountState i); -MountState mount_state_from_string(const char *s); +const char* mount_state_to_string(MountState i) _const_; +MountState mount_state_from_string(const char *s) _pure_; -const char* mount_exec_command_to_string(MountExecCommand i); -MountExecCommand mount_exec_command_from_string(const char *s); +const char* mount_exec_command_to_string(MountExecCommand i) _const_; +MountExecCommand mount_exec_command_from_string(const char *s) _pure_; -const char* mount_result_to_string(MountResult i); -MountResult mount_result_from_string(const char *s); +const char* mount_result_to_string(MountResult i) _const_; +MountResult mount_result_from_string(const char *s) _pure_; void warn_if_dir_nonempty(const char *unit, const char* where); diff --git a/src/core/path.c b/src/core/path.c index ab1fe2eb65..8a09deb4ff 100644 --- a/src/core/path.c +++ b/src/core/path.c @@ -680,13 +680,13 @@ static int path_deserialize_item(Unit *u, const char *key, const char *value, FD return 0; } -static UnitActiveState path_active_state(Unit *u) { +_pure_ static UnitActiveState path_active_state(Unit *u) { assert(u); return state_translation_table[PATH(u)->state]; } -static const char *path_sub_state_to_string(Unit *u) { +_pure_ static const char *path_sub_state_to_string(Unit *u) { assert(u); return path_state_to_string(PATH(u)->state); diff --git a/src/core/path.h b/src/core/path.h index 974041539b..6adab5897d 100644 --- a/src/core/path.h +++ b/src/core/path.h @@ -98,11 +98,11 @@ void path_free_specs(Path *p); extern const UnitVTable path_vtable; -const char* path_state_to_string(PathState i); -PathState path_state_from_string(const char *s); +const char* path_state_to_string(PathState i) _const_; +PathState path_state_from_string(const char *s) _pure_; -const char* path_type_to_string(PathType i); -PathType path_type_from_string(const char *s); +const char* path_type_to_string(PathType i) _const_; +PathType path_type_from_string(const char *s) _pure_; -const char* path_result_to_string(PathResult i); -PathResult path_result_from_string(const char *s); +const char* path_result_to_string(PathResult i) _const_; +PathResult path_result_from_string(const char *s) _pure_; diff --git a/src/core/selinux-access.c b/src/core/selinux-access.c index bc195f3c56..426aed07d2 100644 --- a/src/core/selinux-access.c +++ b/src/core/selinux-access.c @@ -174,7 +174,7 @@ static int audit_callback( user_avc's into the /var/log/audit/audit.log, otherwise they will be sent to syslog. */ -static int log_callback(int type, const char *fmt, ...) { +_printf_attr_(2, 3) static int log_callback(int type, const char *fmt, ...) { va_list ap; va_start(ap, fmt); diff --git a/src/core/service.c b/src/core/service.c index 5803f798e0..3617c24711 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1878,7 +1878,7 @@ static int main_pid_good(Service *s) { return -EAGAIN; } -static int control_pid_good(Service *s) { +_pure_ static int control_pid_good(Service *s) { assert(s); return s->control_pid > 0; @@ -2570,7 +2570,7 @@ static int service_reload(Unit *u) { return 0; } -static bool service_can_reload(Unit *u) { +_pure_ static bool service_can_reload(Unit *u) { Service *s = SERVICE(u); assert(s); @@ -2782,7 +2782,7 @@ static int service_deserialize_item(Unit *u, const char *key, const char *value, return 0; } -static UnitActiveState service_active_state(Unit *u) { +_pure_ static UnitActiveState service_active_state(Unit *u) { const UnitActiveState *table; assert(u); @@ -2818,7 +2818,7 @@ static bool service_check_gc(Unit *u) { return false; } -static bool service_check_snapshot(Unit *u) { +_pure_ static bool service_check_snapshot(Unit *u) { Service *s = SERVICE(u); assert(s); diff --git a/src/core/service.h b/src/core/service.h index d1e53bf727..703d3faa45 100644 --- a/src/core/service.h +++ b/src/core/service.h @@ -203,23 +203,23 @@ struct Socket; int service_set_socket_fd(Service *s, int fd, struct Socket *socket); -const char* service_state_to_string(ServiceState i); -ServiceState service_state_from_string(const char *s); +const char* service_state_to_string(ServiceState i) _const_; +ServiceState service_state_from_string(const char *s) _pure_; -const char* service_restart_to_string(ServiceRestart i); -ServiceRestart service_restart_from_string(const char *s); +const char* service_restart_to_string(ServiceRestart i) _const_; +ServiceRestart service_restart_from_string(const char *s) _pure_; -const char* service_type_to_string(ServiceType i); -ServiceType service_type_from_string(const char *s); +const char* service_type_to_string(ServiceType i) _const_; +ServiceType service_type_from_string(const char *s) _pure_; -const char* service_exec_command_to_string(ServiceExecCommand i); -ServiceExecCommand service_exec_command_from_string(const char *s); +const char* service_exec_command_to_string(ServiceExecCommand i) _const_; +ServiceExecCommand service_exec_command_from_string(const char *s) _pure_; -const char* notify_access_to_string(NotifyAccess i); -NotifyAccess notify_access_from_string(const char *s); +const char* notify_access_to_string(NotifyAccess i) _const_; +NotifyAccess notify_access_from_string(const char *s) _pure_; -const char* service_result_to_string(ServiceResult i); -ServiceResult service_result_from_string(const char *s); +const char* service_result_to_string(ServiceResult i) _const_; +ServiceResult service_result_from_string(const char *s) _pure_; -const char* start_limit_action_to_string(StartLimitAction i); -StartLimitAction start_limit_action_from_string(const char *s); +const char* start_limit_action_to_string(StartLimitAction i) _const_; +StartLimitAction start_limit_action_from_string(const char *s) _pure_; diff --git a/src/core/snapshot.c b/src/core/snapshot.c index a3f5e908eb..a63eccd8de 100644 --- a/src/core/snapshot.c +++ b/src/core/snapshot.c @@ -173,13 +173,13 @@ static int snapshot_deserialize_item(Unit *u, const char *key, const char *value return 0; } -static UnitActiveState snapshot_active_state(Unit *u) { +_pure_ static UnitActiveState snapshot_active_state(Unit *u) { assert(u); return state_translation_table[SNAPSHOT(u)->state]; } -static const char *snapshot_sub_state_to_string(Unit *u) { +_pure_ static const char *snapshot_sub_state_to_string(Unit *u) { assert(u); return snapshot_state_to_string(SNAPSHOT(u)->state); diff --git a/src/core/snapshot.h b/src/core/snapshot.h index 9662d93164..56f87cff4d 100644 --- a/src/core/snapshot.h +++ b/src/core/snapshot.h @@ -46,5 +46,5 @@ extern const UnitVTable snapshot_vtable; int snapshot_create(Manager *m, const char *name, bool cleanup, DBusError *e, Snapshot **s); void snapshot_remove(Snapshot *s); -const char* snapshot_state_to_string(SnapshotState i); -SnapshotState snapshot_state_from_string(const char *s); +const char* snapshot_state_to_string(SnapshotState i) _const_; +SnapshotState snapshot_state_from_string(const char *s) _pure_; diff --git a/src/core/socket.c b/src/core/socket.c index c276afe38f..8c829d3043 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -344,7 +344,7 @@ static int socket_add_default_dependencies(Socket *s) { return unit_add_two_dependencies_by_name(UNIT(s), UNIT_BEFORE, UNIT_CONFLICTS, SPECIAL_SHUTDOWN_TARGET, NULL, true); } -static bool socket_has_exec(Socket *s) { +_pure_ static bool socket_has_exec(Socket *s) { unsigned i; assert(s); @@ -410,7 +410,7 @@ static int socket_load(Unit *u) { return socket_verify(s); } -static const char* listen_lookup(int family, int type) { +_const_ static const char* listen_lookup(int family, int type) { if (family == AF_NETLINK) return "ListenNetlink"; @@ -1957,13 +1957,13 @@ static int socket_distribute_fds(Unit *u, FDSet *fds) { return 0; } -static UnitActiveState socket_active_state(Unit *u) { +_pure_ static UnitActiveState socket_active_state(Unit *u) { assert(u); return state_translation_table[SOCKET(u)->state]; } -static const char *socket_sub_state_to_string(Unit *u) { +_pure_ static const char *socket_sub_state_to_string(Unit *u) { assert(u); return socket_state_to_string(SOCKET(u)->state); @@ -1991,7 +1991,7 @@ const char* socket_port_type_to_string(SocketPort *p) { } } -static bool socket_check_gc(Unit *u) { +_pure_ static bool socket_check_gc(Unit *u) { Socket *s = SOCKET(u); assert(u); diff --git a/src/core/socket.h b/src/core/socket.h index dbc363217b..4826bb331b 100644 --- a/src/core/socket.h +++ b/src/core/socket.h @@ -167,13 +167,13 @@ void socket_free_ports(Socket *s); extern const UnitVTable socket_vtable; -const char* socket_state_to_string(SocketState i); -SocketState socket_state_from_string(const char *s); +const char* socket_state_to_string(SocketState i) _const_; +SocketState socket_state_from_string(const char *s) _pure_; -const char* socket_exec_command_to_string(SocketExecCommand i); -SocketExecCommand socket_exec_command_from_string(const char *s); +const char* socket_exec_command_to_string(SocketExecCommand i) _const_; +SocketExecCommand socket_exec_command_from_string(const char *s) _pure_; -const char* socket_result_to_string(SocketResult i); -SocketResult socket_result_from_string(const char *s); +const char* socket_result_to_string(SocketResult i) _const_; +SocketResult socket_result_from_string(const char *s) _pure_; -const char* socket_port_type_to_string(SocketPort *p); +const char* socket_port_type_to_string(SocketPort *p) _pure_; diff --git a/src/core/swap.c b/src/core/swap.c index e7cc19596e..d503fe20df 100644 --- a/src/core/swap.c +++ b/src/core/swap.c @@ -899,19 +899,19 @@ static int swap_deserialize_item(Unit *u, const char *key, const char *value, FD return 0; } -static UnitActiveState swap_active_state(Unit *u) { +_pure_ static UnitActiveState swap_active_state(Unit *u) { assert(u); return state_translation_table[SWAP(u)->state]; } -static const char *swap_sub_state_to_string(Unit *u) { +_pure_ static const char *swap_sub_state_to_string(Unit *u) { assert(u); return swap_state_to_string(SWAP(u)->state); } -static bool swap_check_gc(Unit *u) { +_pure_ static bool swap_check_gc(Unit *u) { Swap *s = SWAP(u); assert(s); diff --git a/src/core/swap.h b/src/core/swap.h index 35d47fd46f..121889d1d5 100644 --- a/src/core/swap.h +++ b/src/core/swap.h @@ -111,11 +111,11 @@ int swap_add_one_mount_link(Swap *s, Mount *m); int swap_dispatch_reload(Manager *m); int swap_fd_event(Manager *m, int events); -const char* swap_state_to_string(SwapState i); -SwapState swap_state_from_string(const char *s); +const char* swap_state_to_string(SwapState i) _const_; +SwapState swap_state_from_string(const char *s) _pure_; -const char* swap_exec_command_to_string(SwapExecCommand i); -SwapExecCommand swap_exec_command_from_string(const char *s); +const char* swap_exec_command_to_string(SwapExecCommand i) _const_; +SwapExecCommand swap_exec_command_from_string(const char *s) _pure_; -const char* swap_result_to_string(SwapResult i); -SwapResult swap_result_from_string(const char *s); +const char* swap_result_to_string(SwapResult i) _const_; +SwapResult swap_result_from_string(const char *s) _pure_; diff --git a/src/core/target.c b/src/core/target.c index 981424132b..3fffa0d2f5 100644 --- a/src/core/target.c +++ b/src/core/target.c @@ -184,13 +184,13 @@ static int target_deserialize_item(Unit *u, const char *key, const char *value, return 0; } -static UnitActiveState target_active_state(Unit *u) { +_pure_ static UnitActiveState target_active_state(Unit *u) { assert(u); return state_translation_table[TARGET(u)->state]; } -static const char *target_sub_state_to_string(Unit *u) { +_pure_ static const char *target_sub_state_to_string(Unit *u) { assert(u); return target_state_to_string(TARGET(u)->state); diff --git a/src/core/target.h b/src/core/target.h index 1676553add..a5398d9e98 100644 --- a/src/core/target.h +++ b/src/core/target.h @@ -40,5 +40,5 @@ struct Target { extern const UnitVTable target_vtable; -const char* target_state_to_string(TargetState i); -TargetState target_state_from_string(const char *s); +const char* target_state_to_string(TargetState i) _const_; +TargetState target_state_from_string(const char *s) _pure_; diff --git a/src/core/timer.c b/src/core/timer.c index ff8c30583c..9166c1e2fc 100644 --- a/src/core/timer.c +++ b/src/core/timer.c @@ -464,13 +464,13 @@ static int timer_deserialize_item(Unit *u, const char *key, const char *value, F return 0; } -static UnitActiveState timer_active_state(Unit *u) { +_pure_ static UnitActiveState timer_active_state(Unit *u) { assert(u); return state_translation_table[TIMER(u)->state]; } -static const char *timer_sub_state_to_string(Unit *u) { +_pure_ static const char *timer_sub_state_to_string(Unit *u) { assert(u); return timer_state_to_string(TIMER(u)->state); diff --git a/src/core/timer.h b/src/core/timer.h index fed15e9165..4168553e9d 100644 --- a/src/core/timer.h +++ b/src/core/timer.h @@ -87,11 +87,11 @@ void timer_free_values(Timer *t); extern const UnitVTable timer_vtable; -const char *timer_state_to_string(TimerState i); -TimerState timer_state_from_string(const char *s); +const char *timer_state_to_string(TimerState i) _const_; +TimerState timer_state_from_string(const char *s) _pure_; -const char *timer_base_to_string(TimerBase i); -TimerBase timer_base_from_string(const char *s); +const char *timer_base_to_string(TimerBase i) _const_; +TimerBase timer_base_from_string(const char *s) _pure_; -const char* timer_result_to_string(TimerResult i); -TimerResult timer_result_from_string(const char *s); +const char* timer_result_to_string(TimerResult i) _const_; +TimerResult timer_result_from_string(const char *s) _pure_; diff --git a/src/core/transaction.c b/src/core/transaction.c index 610344eff3..fa97b69755 100644 --- a/src/core/transaction.c +++ b/src/core/transaction.c @@ -140,7 +140,7 @@ static void transaction_merge_and_delete_job(Transaction *tr, Job *j, Job *other transaction_delete_job(tr, other, true); } -static bool job_is_conflicted_by(Job *j) { +_pure_ static bool job_is_conflicted_by(Job *j) { JobDependency *l; assert(j); @@ -320,7 +320,7 @@ rescan: } } -static bool unit_matters_to_anchor(Unit *u, Job *j) { +_pure_ static bool unit_matters_to_anchor(Unit *u, Job *j) { assert(u); assert(!j->transaction_prev); diff --git a/src/core/unit.c b/src/core/unit.c index c0f156c928..dc8bf83383 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -949,7 +949,7 @@ bool unit_condition_test(Unit *u) { return u->condition_result; } -static const char* unit_get_status_message_format(Unit *u, JobType t) { +_pure_ static const char* unit_get_status_message_format(Unit *u, JobType t) { const UnitStatusMessageFormats *format_table; assert(u); @@ -966,7 +966,7 @@ static const char* unit_get_status_message_format(Unit *u, JobType t) { return format_table->starting_stopping[t == JOB_STOP]; } -static const char *unit_get_status_message_format_try_harder(Unit *u, JobType t) { +_pure_ static const char *unit_get_status_message_format_try_harder(Unit *u, JobType t) { const char *format; assert(u); diff --git a/src/core/unit.h b/src/core/unit.h index 0f121e244e..b04475e4fb 100644 --- a/src/core/unit.h +++ b/src/core/unit.h @@ -468,13 +468,13 @@ void unit_add_to_gc_queue(Unit *u); int unit_merge(Unit *u, Unit *other); int unit_merge_by_name(Unit *u, const char *other); -Unit *unit_follow_merge(Unit *u); +Unit *unit_follow_merge(Unit *u) _pure_; int unit_load_fragment_and_dropin(Unit *u); int unit_load_fragment_and_dropin_optional(Unit *u); int unit_load(Unit *unit); -const char *unit_description(Unit *u); +const char *unit_description(Unit *u) _pure_; bool unit_has_name(Unit *u, const char *name); @@ -484,9 +484,9 @@ const char* unit_sub_state_to_string(Unit *u); void unit_dump(Unit *u, FILE *f, const char *prefix); -bool unit_can_reload(Unit *u); -bool unit_can_start(Unit *u); -bool unit_can_isolate(Unit *u); +bool unit_can_reload(Unit *u) _pure_; +bool unit_can_start(Unit *u) _pure_; +bool unit_can_isolate(Unit *u) _pure_; int unit_start(Unit *u); int unit_stop(Unit *u); @@ -518,7 +518,7 @@ char *unit_dbus_path(Unit *u); int unit_load_related_unit(Unit *u, const char *type, Unit **_found); int unit_get_related_unit(Unit *u, const char *type, Unit **_found); -bool unit_can_serialize(Unit *u); +bool unit_can_serialize(Unit *u) _pure_; int unit_serialize(Unit *u, FILE *f, FDSet *fds, bool serialize_jobs); void unit_serialize_item_format(Unit *u, FILE *f, const char *key, const char *value, ...) _printf_attr_(4,5); void unit_serialize_item(Unit *u, FILE *f, const char *key, const char *value); @@ -536,8 +536,8 @@ void unit_reset_failed(Unit *u); Unit *unit_following(Unit *u); -bool unit_stop_pending(Unit *u); -bool unit_inactive_or_pending(Unit *u); +bool unit_stop_pending(Unit *u) _pure_; +bool unit_inactive_or_pending(Unit *u) _pure_; bool unit_active_or_pending(Unit *u); int unit_add_default_target_dependency(Unit *u, Unit *target); @@ -563,18 +563,18 @@ int unit_add_mount_links(Unit *u); int unit_exec_context_defaults(Unit *u, ExecContext *c); -ExecContext *unit_get_exec_context(Unit *u); +ExecContext *unit_get_exec_context(Unit *u) _pure_; int unit_write_drop_in(Unit *u, bool runtime, const char *name, const char *data); int unit_remove_drop_in(Unit *u, bool runtime, const char *name); int unit_kill_context(Unit *u, KillContext *c, bool sigkill, pid_t main_pid, pid_t control_pid, bool main_pid_alien); -const char *unit_active_state_to_string(UnitActiveState i); -UnitActiveState unit_active_state_from_string(const char *s); +const char *unit_active_state_to_string(UnitActiveState i) _const_; +UnitActiveState unit_active_state_from_string(const char *s) _pure_; -const char *unit_dependency_to_string(UnitDependency i); -UnitDependency unit_dependency_from_string(const char *s); +const char *unit_dependency_to_string(UnitDependency i) _const_; +UnitDependency unit_dependency_from_string(const char *s) _pure_; /* Macros which append UNIT= or USER_UNIT= to the message */ diff --git a/src/journal/catalog.h b/src/journal/catalog.h index 89f8f93d03..24a2d0b553 100644 --- a/src/journal/catalog.h +++ b/src/journal/catalog.h @@ -29,7 +29,7 @@ int catalog_import_file(Hashmap *h, struct strbuf *sb, const char *path); unsigned catalog_hash_func(const void *p); -int catalog_compare_func(const void *a, const void *b); +int catalog_compare_func(const void *a, const void *b) _pure_; int catalog_update(const char* database, const char* root, const char* const* dirs); int catalog_get(const char* database, sd_id128_t id, char **data); int catalog_list(FILE *f, const char* database, bool oneline); diff --git a/src/journal/fsprg.c b/src/journal/fsprg.c index 2190b7c796..6817a629c8 100644 --- a/src/journal/fsprg.c +++ b/src/journal/fsprg.c @@ -74,7 +74,7 @@ static void uint64_export(void *buf, size_t buflen, uint64_t x) { ((uint8_t*) buf)[7] = (x >> 0) & 0xff; } -static uint64_t uint64_import(const void *buf, size_t buflen) { +_pure_ static uint64_t uint64_import(const void *buf, size_t buflen) { assert(buflen == 8); return (uint64_t)(((uint8_t*) buf)[0]) << 56 | diff --git a/src/journal/fsprg.h b/src/journal/fsprg.h index 306ef18d73..150d034828 100644 --- a/src/journal/fsprg.h +++ b/src/journal/fsprg.h @@ -28,6 +28,8 @@ #include #include +#include "macro.h" + #ifdef __cplusplus extern "C" { #endif @@ -35,9 +37,9 @@ extern "C" { #define FSPRG_RECOMMENDED_SECPAR 1536 #define FSPRG_RECOMMENDED_SEEDLEN (96/8) -size_t FSPRG_mskinbytes(unsigned secpar); -size_t FSPRG_mpkinbytes(unsigned secpar); -size_t FSPRG_stateinbytes(unsigned secpar); +size_t FSPRG_mskinbytes(unsigned secpar) _const_; +size_t FSPRG_mpkinbytes(unsigned secpar) _const_; +size_t FSPRG_stateinbytes(unsigned secpar) _const_; /* Setup msk and mpk. Providing seed != NULL makes this algorithm deterministic. */ void FSPRG_GenMK(void *msk, void *mpk, const void *seed, size_t seedlen, unsigned secpar); @@ -50,7 +52,7 @@ void FSPRG_GenState0(void *state, const void *mpk, const void *seed, size_t seed void FSPRG_Evolve(void *state); -uint64_t FSPRG_GetEpoch(const void *state); +uint64_t FSPRG_GetEpoch(const void *state) _pure_; /* Seek to any arbitrary state (by providing msk together with seed from GenState0). */ void FSPRG_Seek(void *state, uint64_t epoch, const void *msk, const void *seed, size_t seedlen); diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index a44e126c0e..876224dc9f 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -1712,7 +1712,7 @@ found: return 1; } -static int test_object_offset(JournalFile *f, uint64_t p, uint64_t needle) { +_pure_ static int test_object_offset(JournalFile *f, uint64_t p, uint64_t needle) { assert(f); assert(p > 0); diff --git a/src/journal/journal-file.h b/src/journal/journal-file.h index 0eab5017d7..7b1cd42854 100644 --- a/src/journal/journal-file.h +++ b/src/journal/journal-file.h @@ -150,9 +150,9 @@ static inline bool VALID_EPOCH(uint64_t u) { int journal_file_move_to_object(JournalFile *f, int type, uint64_t offset, Object **ret); -uint64_t journal_file_entry_n_items(Object *o); -uint64_t journal_file_entry_array_n_items(Object *o); -uint64_t journal_file_hash_table_n_items(Object *o); +uint64_t journal_file_entry_n_items(Object *o) _pure_; +uint64_t journal_file_entry_array_n_items(Object *o) _pure_; +uint64_t journal_file_hash_table_n_items(Object *o) _pure_; int journal_file_append_object(JournalFile *f, int type, uint64_t size, Object **ret, uint64_t *offset); int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const struct iovec iovec[], unsigned n_iovec, uint64_t *seqno, Object **ret, uint64_t *offset); diff --git a/src/journal/journal-send.c b/src/journal/journal-send.c index 4b9109a3c8..14c437da78 100644 --- a/src/journal/journal-send.c +++ b/src/journal/journal-send.c @@ -111,7 +111,7 @@ _public_ int sd_journal_printv(int priority, const char *format, va_list ap) { return sd_journal_sendv(iov, 2); } -static int fill_iovec_sprintf(const char *format, va_list ap, int extra, struct iovec **_iov) { +_printf_attr_(1, 0) static int fill_iovec_sprintf(const char *format, va_list ap, int extra, struct iovec **_iov) { PROTECT_ERRNO; int r, n = 0, i = 0, j; struct iovec *iov = NULL; diff --git a/src/journal/journald-rate-limit.c b/src/journal/journald-rate-limit.c index da3aed64ea..32e35a926d 100644 --- a/src/journal/journald-rate-limit.c +++ b/src/journal/journald-rate-limit.c @@ -115,7 +115,7 @@ void journal_rate_limit_free(JournalRateLimit *r) { free(r); } -static bool journal_rate_limit_group_expired(JournalRateLimitGroup *g, usec_t ts) { +_pure_ static bool journal_rate_limit_group_expired(JournalRateLimitGroup *g, usec_t ts) { unsigned i; assert(g); diff --git a/src/journal/journald-server.h b/src/journal/journald-server.h index 86f7145292..129f7e8ab4 100644 --- a/src/journal/journald-server.h +++ b/src/journal/journald-server.h @@ -137,13 +137,13 @@ const struct ConfigPerfItem* journald_gperf_lookup(const char *key, unsigned len int config_parse_storage(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); -const char *storage_to_string(Storage s); -Storage storage_from_string(const char *s); +const char *storage_to_string(Storage s) _const_; +Storage storage_from_string(const char *s) _pure_; int config_parse_split_mode(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); -const char *split_mode_to_string(SplitMode s); -SplitMode split_mode_from_string(const char *s); +const char *split_mode_to_string(SplitMode s) _const_; +SplitMode split_mode_from_string(const char *s) _pure_; void server_fix_perms(Server *s, JournalFile *f, uid_t uid); bool shall_try_append_again(JournalFile *f, int r); diff --git a/src/journal/journald-syslog.h b/src/journal/journald-syslog.h index 7ff215b524..324b70eef0 100644 --- a/src/journal/journald-syslog.h +++ b/src/journal/journald-syslog.h @@ -23,7 +23,7 @@ #include "journald-server.h" -int syslog_fixup_facility(int priority); +int syslog_fixup_facility(int priority) _const_; void syslog_parse_priority(char **p, int *priority); size_t syslog_parse_identifier(const char **buf, char **identifier, char **pid); diff --git a/src/journal/lookup3.h b/src/journal/lookup3.h index 502b42c209..3224473a6a 100644 --- a/src/journal/lookup3.h +++ b/src/journal/lookup3.h @@ -5,13 +5,15 @@ #include #include -uint32_t jenkins_hashword(const uint32_t *k, size_t length, uint32_t initval); +#include "macro.h" + +uint32_t jenkins_hashword(const uint32_t *k, size_t length, uint32_t initval) _pure_; void jenkins_hashword2(const uint32_t *k, size_t length, uint32_t *pc, uint32_t *pb); -uint32_t jenkins_hashlittle(const void *key, size_t length, uint32_t initval); +uint32_t jenkins_hashlittle(const void *key, size_t length, uint32_t initval) _pure_; void jenkins_hashlittle2(const void *key, size_t length, uint32_t *pc, uint32_t *pb); -uint32_t jenkins_hashbig(const void *key, size_t length, uint32_t initval); +uint32_t jenkins_hashbig(const void *key, size_t length, uint32_t initval) _pure_; static inline uint64_t hash64(const void *data, size_t length) { uint32_t a = 0, b = 0; diff --git a/src/journal/mmap-cache.c b/src/journal/mmap-cache.c index 251aefe121..54bf1148e1 100644 --- a/src/journal/mmap-cache.c +++ b/src/journal/mmap-cache.c @@ -134,7 +134,7 @@ static void window_free(Window *w) { free(w); } -static bool window_matches(Window *w, int fd, int prot, uint64_t offset, size_t size) { +_pure_ static bool window_matches(Window *w, int fd, int prot, uint64_t offset, size_t size) { assert(w); assert(fd >= 0); assert(size > 0); diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index 15239b5688..d81e4ddfa9 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -498,7 +498,7 @@ static int compare_entry_order(JournalFile *af, Object *_ao, return 0; } -static int compare_with_location(JournalFile *af, Object *ao, Location *l) { +_pure_ static int compare_with_location(JournalFile *af, Object *ao, Location *l) { uint64_t a; assert(af); diff --git a/src/login/logind-action.h b/src/login/logind-action.h index df080d98ed..552713637d 100644 --- a/src/login/logind-action.h +++ b/src/login/logind-action.h @@ -46,8 +46,8 @@ int manager_handle_action( bool ignore_inhibited, bool is_edge); -const char* handle_action_to_string(HandleAction h); -HandleAction handle_action_from_string(const char *s); +const char* handle_action_to_string(HandleAction h) _const_; +HandleAction handle_action_from_string(const char *s) _pure_; int config_parse_handle_action(const char *unit, const char *filename, unsigned line, const char *section, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata); diff --git a/src/login/logind-session.h b/src/login/logind-session.h index c8dd181e7b..a73df3a3bc 100644 --- a/src/login/logind-session.h +++ b/src/login/logind-session.h @@ -135,14 +135,14 @@ int session_send_changed(Session *s, const char *properties); int session_send_lock(Session *s, bool lock); int session_send_lock_all(Manager *m, bool lock); -const char* session_state_to_string(SessionState t); -SessionState session_state_from_string(const char *s); +const char* session_state_to_string(SessionState t) _const_; +SessionState session_state_from_string(const char *s) _pure_; -const char* session_type_to_string(SessionType t); -SessionType session_type_from_string(const char *s); +const char* session_type_to_string(SessionType t) _const_; +SessionType session_type_from_string(const char *s) _pure_; -const char* session_class_to_string(SessionClass t); -SessionClass session_class_from_string(const char *s); +const char* session_class_to_string(SessionClass t) _const_; +SessionClass session_class_from_string(const char *s) _pure_; -const char *kill_who_to_string(KillWho k); -KillWho kill_who_from_string(const char *s); +const char *kill_who_to_string(KillWho k) _const_; +KillWho kill_who_from_string(const char *s) _pure_; diff --git a/src/login/logind-user.h b/src/login/logind-user.h index a679d43a30..080354da74 100644 --- a/src/login/logind-user.h +++ b/src/login/logind-user.h @@ -80,5 +80,5 @@ extern const DBusObjectPathVTable bus_user_vtable; int user_send_signal(User *u, bool new_user); int user_send_changed(User *u, const char *properties); -const char* user_state_to_string(UserState s); -UserState user_state_from_string(const char *s); +const char* user_state_to_string(UserState s) _const_; +UserState user_state_from_string(const char *s) _pure_; diff --git a/src/shared/calendarspec.c b/src/shared/calendarspec.c index 13f70d8e72..7979e2384f 100644 --- a/src/shared/calendarspec.c +++ b/src/shared/calendarspec.c @@ -133,7 +133,7 @@ int calendar_spec_normalize(CalendarSpec *c) { return 0; } -static bool chain_valid(CalendarComponent *c, int from, int to) { +_pure_ static bool chain_valid(CalendarComponent *c, int from, int to) { if (!c) return true; @@ -149,7 +149,7 @@ static bool chain_valid(CalendarComponent *c, int from, int to) { return true; } -bool calendar_spec_valid(CalendarSpec *c) { +_pure_ bool calendar_spec_valid(CalendarSpec *c) { assert(c); if (c->weekdays_bits > 127) diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index 8c2ef45530..c5a5f8df83 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -1311,7 +1311,7 @@ int cg_pid_get_unit(pid_t pid, char **unit) { return cg_path_get_unit(cgroup, unit); } -static const char *skip_label(const char *e) { +_pure_ static const char *skip_label(const char *e) { assert(e); e = strchr(e, '/'); diff --git a/src/shared/cgroup-util.h b/src/shared/cgroup-util.h index 92caa0c448..25dd277ba5 100644 --- a/src/shared/cgroup-util.h +++ b/src/shared/cgroup-util.h @@ -110,6 +110,6 @@ char **cg_shorten_controllers(char **controllers); int cg_controller_from_attr(const char *attr, char **controller); char *cg_escape(const char *p); -char *cg_unescape(const char *p); +char *cg_unescape(const char *p) _pure_; bool cg_controller_is_valid(const char *p, bool allow_named); diff --git a/src/shared/dbus-common.h b/src/shared/dbus-common.h index 16fc14b8e4..9752f08c05 100644 --- a/src/shared/dbus-common.h +++ b/src/shared/dbus-common.h @@ -25,6 +25,8 @@ #include #include +#include "macro.h" + #ifndef DBUS_ERROR_UNKNOWN_OBJECT #define DBUS_ERROR_UNKNOWN_OBJECT "org.freedesktop.DBus.Error.UnknownObject" #endif @@ -187,13 +189,13 @@ int bus_property_set_uint64(DBusMessageIter *i, const char *property, void *data return 0; \ } -const char *bus_errno_to_dbus(int error); +const char *bus_errno_to_dbus(int error) _const_; DBusMessage* bus_properties_changed_new(const char *path, const char *interface, const char *properties); DBusMessage* bus_properties_changed_one_new(const char *path, const char *interface, const char *property); -uint32_t bus_flags_to_events(DBusWatch *bus_watch); -unsigned bus_events_to_flags(uint32_t events); +uint32_t bus_flags_to_events(DBusWatch *bus_watch) _pure_; +unsigned bus_events_to_flags(uint32_t events) _const_; int bus_parse_strv(DBusMessage *m, char ***_l); int bus_parse_strv_iter(DBusMessageIter *iter, char ***_l); diff --git a/src/shared/env-util.c b/src/shared/env-util.c index d3d4c59ab9..6a52fb960d 100644 --- a/src/shared/env-util.c +++ b/src/shared/env-util.c @@ -227,7 +227,7 @@ fail: return NULL; } -static bool env_match(const char *t, const char *pattern) { +_pure_ static bool env_match(const char *t, const char *pattern) { assert(t); assert(pattern); diff --git a/src/shared/env-util.h b/src/shared/env-util.h index b2e520c102..8d2114b64c 100644 --- a/src/shared/env-util.h +++ b/src/shared/env-util.h @@ -40,5 +40,5 @@ char **strv_env_delete(char **x, unsigned n_lists, ...); /* New copy */ char **strv_env_set(char **x, const char *p); /* New copy ... */ char **strv_env_unset(char **l, const char *p); /* In place ... */ -char *strv_env_get_n(char **l, const char *name, size_t k); -char *strv_env_get(char **x, const char *n); +char *strv_env_get_n(char **l, const char *name, size_t k) _pure_; +char *strv_env_get(char **x, const char *n) _pure_; diff --git a/src/shared/exit-status.h b/src/shared/exit-status.h index d3b548fc96..1f035a3007 100644 --- a/src/shared/exit-status.h +++ b/src/shared/exit-status.h @@ -82,7 +82,7 @@ typedef struct ExitStatusSet { Set *signal; } ExitStatusSet; -const char* exit_status_to_string(ExitStatus status, ExitStatusLevel level); +const char* exit_status_to_string(ExitStatus status, ExitStatusLevel level) _const_; bool is_clean_exit(int code, int status, ExitStatusSet *success_status); bool is_clean_exit_lsb(int code, int status, ExitStatusSet *success_status); diff --git a/src/shared/hashmap.h b/src/shared/hashmap.h index f52517f476..8f6e644b25 100644 --- a/src/shared/hashmap.h +++ b/src/shared/hashmap.h @@ -23,6 +23,8 @@ #include +#include "macro.h" + /* Pretty straightforward hash table implementation. As a minor * optimization a NULL hashmap object will be treated as empty hashmap * for all read operations. That way it is not necessary to @@ -38,14 +40,14 @@ typedef _IteratorStruct* Iterator; typedef unsigned (*hash_func_t)(const void *p); typedef int (*compare_func_t)(const void *a, const void *b); -unsigned string_hash_func(const void *p); -int string_compare_func(const void *a, const void *b); +unsigned string_hash_func(const void *p) _pure_; +int string_compare_func(const void *a, const void *b) _pure_; -unsigned trivial_hash_func(const void *p); -int trivial_compare_func(const void *a, const void *b); +unsigned trivial_hash_func(const void *p) _const_; +int trivial_compare_func(const void *a, const void *b) _const_; -unsigned uint64_hash_func(const void *p); -int uint64_compare_func(const void *a, const void *b); +unsigned uint64_hash_func(const void *p) _pure_; +int uint64_compare_func(const void *a, const void *b) _pure_; Hashmap *hashmap_new(hash_func_t hash_func, compare_func_t compare_func); void hashmap_free(Hashmap *h); @@ -69,8 +71,8 @@ int hashmap_merge(Hashmap *h, Hashmap *other); void hashmap_move(Hashmap *h, Hashmap *other); int hashmap_move_one(Hashmap *h, Hashmap *other, const void *key); -unsigned hashmap_size(Hashmap *h); -bool hashmap_isempty(Hashmap *h); +unsigned hashmap_size(Hashmap *h) _pure_; +bool hashmap_isempty(Hashmap *h) _pure_; void *hashmap_iterate(Hashmap *h, Iterator *i, const void **key); void *hashmap_iterate_backwards(Hashmap *h, Iterator *i, const void **key); @@ -82,9 +84,9 @@ void hashmap_clear_free_free(Hashmap *h); void *hashmap_steal_first(Hashmap *h); void *hashmap_steal_first_key(Hashmap *h); -void *hashmap_first(Hashmap *h); -void *hashmap_first_key(Hashmap *h); -void *hashmap_last(Hashmap *h); +void *hashmap_first(Hashmap *h) _pure_; +void *hashmap_first_key(Hashmap *h) _pure_; +void *hashmap_last(Hashmap *h) _pure_; void *hashmap_next(Hashmap *h, const void *key); diff --git a/src/shared/install.h b/src/shared/install.h index 755dddeb12..94516c9d05 100644 --- a/src/shared/install.h +++ b/src/shared/install.h @@ -90,8 +90,8 @@ void unit_file_changes_free(UnitFileChange *changes, unsigned n_changes); int unit_file_query_preset(UnitFileScope scope, const char *name); -const char *unit_file_state_to_string(UnitFileState s); -UnitFileState unit_file_state_from_string(const char *s); +const char *unit_file_state_to_string(UnitFileState s) _const_; +UnitFileState unit_file_state_from_string(const char *s) _pure_; -const char *unit_file_change_type_to_string(UnitFileChangeType s); -UnitFileChangeType unit_file_change_type_from_string(const char *s); +const char *unit_file_change_type_to_string(UnitFileChangeType s) _const_; +UnitFileChangeType unit_file_change_type_from_string(const char *s) _pure_; diff --git a/src/shared/log.h b/src/shared/log.h index 5fc89880ad..979f833d57 100644 --- a/src/shared/log.h +++ b/src/shared/log.h @@ -56,8 +56,8 @@ void log_show_location(bool b); int log_show_color_from_string(const char *e); int log_show_location_from_string(const char *e); -LogTarget log_get_target(void); -int log_get_max_level(void); +LogTarget log_get_target(void) _pure_; +int log_get_max_level(void) _pure_; int log_open(void); void log_close(void); @@ -151,9 +151,9 @@ _noreturn_ void log_assert_failed_unreachable( /* This modifies the buffer passed! */ #define log_dump(level, buffer) log_dump_internal(level, __FILE__, __LINE__, __func__, buffer) -bool log_on_console(void); +bool log_on_console(void) _pure_; -const char *log_target_to_string(LogTarget target); -LogTarget log_target_from_string(const char *s); +const char *log_target_to_string(LogTarget target) _const_; +LogTarget log_target_from_string(const char *s) _pure_; #define MESSAGE_ID(x) "MESSAGE_ID=" SD_ID128_FORMAT_STR, SD_ID128_FORMAT_VAL(x) diff --git a/src/shared/logs-show.h b/src/shared/logs-show.h index 5a4c9f24d7..b0f93a661a 100644 --- a/src/shared/logs-show.h +++ b/src/shared/logs-show.h @@ -63,5 +63,5 @@ void json_escape( size_t l, OutputFlags flags); -const char* output_mode_to_string(OutputMode m); -OutputMode output_mode_from_string(const char *s); +const char* output_mode_to_string(OutputMode m) _const_; +OutputMode output_mode_from_string(const char *s) _pure_; diff --git a/src/shared/pager.h b/src/shared/pager.h index 325ca98f79..03dca8bc03 100644 --- a/src/shared/pager.h +++ b/src/shared/pager.h @@ -23,6 +23,8 @@ #include +#include "macro.h" + int pager_open(bool jump_to_end); void pager_close(void); -bool pager_have(void); +bool pager_have(void) _pure_; diff --git a/src/shared/path-lookup.h b/src/shared/path-lookup.h index baef62228a..9dee85f967 100644 --- a/src/shared/path-lookup.h +++ b/src/shared/path-lookup.h @@ -36,8 +36,8 @@ typedef enum SystemdRunningAs { _SYSTEMD_RUNNING_AS_INVALID = -1 } SystemdRunningAs; -const char* systemd_running_as_to_string(SystemdRunningAs i); -SystemdRunningAs systemd_running_as_from_string(const char *s); +const char* systemd_running_as_to_string(SystemdRunningAs i) _const_; +SystemdRunningAs systemd_running_as_from_string(const char *s) _pure_; int user_config_home(char **config_home); diff --git a/src/shared/path-util.h b/src/shared/path-util.h index ea0f173082..d187743769 100644 --- a/src/shared/path-util.h +++ b/src/shared/path-util.h @@ -21,22 +21,24 @@ along with systemd; If not, see . ***/ -#include "stdbool.h" +#include -bool is_path(const char *p); -char **path_split_and_make_absolute(const char *p); -char *path_get_file_name(const char *p); +#include "macro.h" + +bool is_path(const char *p) _pure_; +char** path_split_and_make_absolute(const char *p); +char* path_get_file_name(const char *p) _pure_; int path_get_parent(const char *path, char **parent); -bool path_is_absolute(const char *p); -char *path_make_absolute(const char *p, const char *prefix); -char *path_make_absolute_cwd(const char *p); -char *path_kill_slashes(char *path); -char *path_startswith(const char *path, const char *prefix); -bool path_equal(const char *a, const char *b); - -char **path_strv_make_absolute_cwd(char **l); -char **path_strv_canonicalize(char **l); -char **path_strv_canonicalize_uniq(char **l); +bool path_is_absolute(const char *p) _pure_; +char* path_make_absolute(const char *p, const char *prefix); +char* path_make_absolute_cwd(const char *p); +char* path_kill_slashes(char *path); +char* path_startswith(const char *path, const char *prefix) _pure_; +bool path_equal(const char *a, const char *b) _pure_; + +char** path_strv_make_absolute_cwd(char **l); +char** path_strv_canonicalize(char **l); +char** path_strv_canonicalize_uniq(char **l); int path_is_mount_point(const char *path, bool allow_symlink); int path_is_read_only_fs(const char *path); diff --git a/src/shared/prioq.c b/src/shared/prioq.c index a2205719b4..2d166360aa 100644 --- a/src/shared/prioq.c +++ b/src/shared/prioq.c @@ -211,7 +211,7 @@ static void remove_item(Prioq *q, struct prioq_item *i) { } } -static struct prioq_item* find_item(Prioq *q, void *data, unsigned *idx) { +_pure_ static struct prioq_item* find_item(Prioq *q, void *data, unsigned *idx) { struct prioq_item *i; assert(q); diff --git a/src/shared/prioq.h b/src/shared/prioq.h index 17679b2aaf..4a206a3e59 100644 --- a/src/shared/prioq.h +++ b/src/shared/prioq.h @@ -33,8 +33,8 @@ int prioq_put(Prioq *q, void *data, unsigned *idx); int prioq_remove(Prioq *q, void *data, unsigned *idx); int prioq_reshuffle(Prioq *q, void *data, unsigned *idx); -void *prioq_peek(Prioq *q); +void *prioq_peek(Prioq *q) _pure_; void *prioq_pop(Prioq *q); -unsigned prioq_size(Prioq *q); -bool prioq_isempty(Prioq *q); +unsigned prioq_size(Prioq *q) _pure_; +bool prioq_isempty(Prioq *q) _pure_; diff --git a/src/shared/socket-util.h b/src/shared/socket-util.h index 33838345ed..7829a337fc 100644 --- a/src/shared/socket-util.h +++ b/src/shared/socket-util.h @@ -67,9 +67,9 @@ typedef enum SocketAddressBindIPv6Only { int socket_address_parse(SocketAddress *a, const char *s); int socket_address_parse_netlink(SocketAddress *a, const char *s); int socket_address_print(const SocketAddress *a, char **p); -int socket_address_verify(const SocketAddress *a); +int socket_address_verify(const SocketAddress *a) _pure_; -bool socket_address_can_accept(const SocketAddress *a); +bool socket_address_can_accept(const SocketAddress *a) _pure_; int socket_address_listen( const SocketAddress *a, @@ -90,12 +90,12 @@ bool socket_address_matches_fd(const SocketAddress *a, int fd); int make_socket_fd(const char* address, int flags); -bool socket_address_equal(const SocketAddress *a, const SocketAddress *b); +bool socket_address_equal(const SocketAddress *a, const SocketAddress *b) _pure_; bool socket_address_needs_mount(const SocketAddress *a, const char *prefix); -const char* socket_address_bind_ipv6_only_to_string(SocketAddressBindIPv6Only b); -SocketAddressBindIPv6Only socket_address_bind_ipv6_only_from_string(const char *s); +const char* socket_address_bind_ipv6_only_to_string(SocketAddressBindIPv6Only b) _const_; +SocketAddressBindIPv6Only socket_address_bind_ipv6_only_from_string(const char *s) _pure_; int netlink_family_to_string_alloc(int b, char **s); int netlink_family_from_string(const char *s); diff --git a/src/shared/strv.h b/src/shared/strv.h index 73ee416b1b..e35118752f 100644 --- a/src/shared/strv.h +++ b/src/shared/strv.h @@ -26,8 +26,8 @@ #include "macro.h" -char *strv_find(char **l, const char *name); -char *strv_find_prefix(char **l, const char *name); +char *strv_find(char **l, const char *name) _pure_; +char *strv_find_prefix(char **l, const char *name) _pure_; void strv_free(char **l); static inline void strv_freep(char ***l) { @@ -37,7 +37,7 @@ static inline void strv_freep(char ***l) { #define _cleanup_strv_free_ _cleanup_(strv_freep) char **strv_copy(char * const *l); -unsigned strv_length(char * const *l); +unsigned strv_length(char * const *l) _pure_; char **strv_merge(char **a, char **b); char **strv_merge_concat(char **a, char **b, const char *suffix); @@ -71,7 +71,7 @@ char *strv_join(char **l, const char *separator); char **strv_parse_nulstr(const char *s, size_t l); char **strv_split_nulstr(const char *s); -bool strv_overlap(char **a, char **b); +bool strv_overlap(char **a, char **b) _pure_; #define STRV_FOREACH(s, l) \ for ((s) = (l); (s) && *(s); (s)++) diff --git a/src/shared/time-util.h b/src/shared/time-util.h index 3fc339507c..f27a006891 100644 --- a/src/shared/time-util.h +++ b/src/shared/time-util.h @@ -66,10 +66,10 @@ dual_timestamp* dual_timestamp_from_monotonic(dual_timestamp *ts, usec_t u); #define dual_timestamp_is_set(ts) ((ts)->realtime > 0) -usec_t timespec_load(const struct timespec *ts); +usec_t timespec_load(const struct timespec *ts) _pure_; struct timespec *timespec_store(struct timespec *ts, usec_t u); -usec_t timeval_load(const struct timeval *tv); +usec_t timeval_load(const struct timeval *tv) _pure_; struct timeval *timeval_store(struct timeval *tv, usec_t u); char *format_timestamp(char *buf, size_t l, usec_t t); diff --git a/src/shared/unit-name.h b/src/shared/unit-name.h index c28d55d3e8..9eca8eb3c1 100644 --- a/src/shared/unit-name.h +++ b/src/shared/unit-name.h @@ -23,6 +23,8 @@ #include +#include "macro.h" + #define UNIT_NAME_MAX 256 typedef enum UnitType UnitType; @@ -53,21 +55,21 @@ enum UnitLoadState { _UNIT_LOAD_STATE_INVALID = -1 }; -const char *unit_type_to_string(UnitType i); -UnitType unit_type_from_string(const char *s); +const char *unit_type_to_string(UnitType i) _const_; +UnitType unit_type_from_string(const char *s) _pure_; -const char *unit_load_state_to_string(UnitLoadState i); -UnitLoadState unit_load_state_from_string(const char *s); +const char *unit_load_state_to_string(UnitLoadState i) _const_; +UnitLoadState unit_load_state_from_string(const char *s) _pure_; int unit_name_to_instance(const char *n, char **instance); char* unit_name_to_prefix(const char *n); char* unit_name_to_prefix_and_instance(const char *n); -bool unit_name_is_valid(const char *n, bool template_ok); -bool unit_prefix_is_valid(const char *p); -bool unit_instance_is_valid(const char *i); +bool unit_name_is_valid(const char *n, bool template_ok) _pure_; +bool unit_prefix_is_valid(const char *p) _pure_; +bool unit_instance_is_valid(const char *i) _pure_; -UnitType unit_name_to_type(const char *n); +UnitType unit_name_to_type(const char *n) _pure_; char *unit_name_change_suffix(const char *n, const char *suffix); @@ -78,8 +80,8 @@ char *unit_name_unescape(const char *f); char *unit_name_path_escape(const char *f); char *unit_name_path_unescape(const char *f); -bool unit_name_is_template(const char *n); -bool unit_name_is_instance(const char *n); +bool unit_name_is_template(const char *n) _pure_; +bool unit_name_is_instance(const char *n) _pure_; char *unit_name_replace_instance(const char *f, const char *i); diff --git a/src/shared/util.c b/src/shared/util.c index f9ec14aff4..5d01802ed9 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -1449,7 +1449,7 @@ char *ascii_strlower(char *t) { return t; } -static bool ignore_file_allow_backup(const char *filename) { +_pure_ static bool ignore_file_allow_backup(const char *filename) { assert(filename); return @@ -1512,7 +1512,7 @@ int fd_cloexec(int fd, bool cloexec) { return 0; } -static bool fd_in_set(int fd, const int fdset[], unsigned n_fdset) { +_pure_ static bool fd_in_set(int fd, const int fdset[], unsigned n_fdset) { unsigned i; assert(n_fdset == 0 || fdset); @@ -2770,7 +2770,7 @@ int rm_rf_children_dangerous(int fd, bool only_dirs, bool honour_sticky, struct return ret; } -static int is_temporary_fs(struct statfs *s) { +_pure_ static int is_temporary_fs(struct statfs *s) { assert(s); return F_TYPE_CMP(s->f_type, TMPFS_MAGIC) || diff --git a/src/shared/util.h b/src/shared/util.h index eb82ff4197..0bcda48b6d 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -74,7 +74,7 @@ size_t page_size(void); #define strcaseeq(a,b) (strcasecmp((a),(b)) == 0) #define strncaseeq(a, b, n) (strncasecmp((a), (b), (n)) == 0) -bool streq_ptr(const char *a, const char *b); +bool streq_ptr(const char *a, const char *b) _pure_; #define new(t, n) ((t*) malloc_multiply(sizeof(t), (n))) @@ -106,17 +106,17 @@ static inline bool isempty(const char *p) { return !p || !p[0]; } -char *endswith(const char *s, const char *postfix); -char *startswith(const char *s, const char *prefix); -char *startswith_no_case(const char *s, const char *prefix); +char *endswith(const char *s, const char *postfix) _pure_; +char *startswith(const char *s, const char *prefix) _pure_; +char *startswith_no_case(const char *s, const char *prefix) _pure_; -bool first_word(const char *s, const char *word); +bool first_word(const char *s, const char *word) _pure_; int close_nointr(int fd); void close_nointr_nofail(int fd); void close_many(const int fds[], unsigned n_fd); -int parse_boolean(const char *v); +int parse_boolean(const char *v) _pure_; int parse_bytes(const char *t, off_t *bytes); int parse_pid(const char *s, pid_t* ret_pid); int parse_uid(const char *s, uid_t* ret_uid); @@ -230,12 +230,12 @@ char *bus_path_unescape(const char *s); char *ascii_strlower(char *path); -bool dirent_is_file(const struct dirent *de); -bool dirent_is_file_with_suffix(const struct dirent *de, const char *suffix); +bool dirent_is_file(const struct dirent *de) _pure_; +bool dirent_is_file_with_suffix(const struct dirent *de, const char *suffix) _pure_; -bool ignore_file(const char *filename); +bool ignore_file(const char *filename) _pure_; -bool chars_intersect(const char *a, const char *b); +bool chars_intersect(const char *a, const char *b) _pure_; int make_stdio(int fd); int make_null_stdio(void); @@ -307,7 +307,7 @@ bool fstype_is_network(const char *fstype); int chvt(int vt); int read_one_char(FILE *f, char *ret, usec_t timeout, bool *need_nl); -int ask(char *ret, const char *replies, const char *text, ...); +int ask(char *ret, const char *replies, const char *text, ...) _printf_attr_(3, 4); int reset_terminal_fd(int fd, bool switch_to_text); int reset_terminal(const char *name); @@ -388,7 +388,7 @@ int wait_for_terminate_and_warn(const char *name, pid_t pid); _noreturn_ void freeze(void); -bool null_or_empty(struct stat *st); +bool null_or_empty(struct stat *st) _pure_; int null_or_empty_path(const char *fn); DIR *xopendirat(int dirfd, const char *name, int flags); @@ -398,7 +398,7 @@ char *fstab_node_to_udev_node(const char *p); char *resolve_dev_console(char **active); bool tty_is_vc(const char *tty); bool tty_is_vc_resolve(const char *tty); -bool tty_is_console(const char *tty); +bool tty_is_console(const char *tty) _pure_; int vtnr_from_tty(const char *tty); const char *default_term_for_tty(const char *tty); @@ -410,7 +410,7 @@ bool nulstr_contains(const char*nulstr, const char *needle); bool plymouth_running(void); -bool hostname_is_valid(const char *s); +bool hostname_is_valid(const char *s) _pure_; char* hostname_cleanup(char *s); char* strshorten(char *s, size_t l); @@ -426,7 +426,7 @@ int symlink_atomic(const char *from, const char *to); int fchmod_umask(int fd, mode_t mode); -bool display_is_local(const char *display); +bool display_is_local(const char *display) _pure_; int socket_from_display(const char *display, char **path); int get_user_creds(const char **username, uid_t *uid, gid_t *gid, const char **home, const char **shell); @@ -449,7 +449,7 @@ char *strjoin(const char *x, ...) _sentinel_; bool is_main_thread(void); -bool in_charset(const char *s, const char* charset); +bool in_charset(const char *s, const char* charset) _pure_; int block_get_whole_disk(dev_t d, dev_t *ret); @@ -466,8 +466,8 @@ int strdup_or_null(const char *a, char **b); int ioprio_class_to_string_alloc(int i, char **s); int ioprio_class_from_string(const char *s); -const char *sigchld_code_to_string(int i); -int sigchld_code_from_string(const char *s); +const char *sigchld_code_to_string(int i) _const_; +int sigchld_code_from_string(const char *s) _pure_; int log_facility_unshifted_to_string_alloc(int i, char **s); int log_facility_unshifted_from_string(const char *s); @@ -478,14 +478,14 @@ int log_level_from_string(const char *s); int sched_policy_to_string_alloc(int i, char **s); int sched_policy_from_string(const char *s); -const char *rlimit_to_string(int i); -int rlimit_from_string(const char *s); +const char *rlimit_to_string(int i) _const_; +int rlimit_from_string(const char *s) _pure_; int ip_tos_to_string_alloc(int i, char **s); int ip_tos_from_string(const char *s); -const char *signal_to_string(int i); -int signal_from_string(const char *s); +const char *signal_to_string(int i) _const_; +int signal_from_string(const char *s) _pure_; int signal_from_string_try_harder(const char *s); @@ -494,7 +494,7 @@ extern char **saved_argv; bool kexec_loaded(void); -int prot_from_flags(int flags); +int prot_from_flags(int flags) _const_; char *format_bytes(char *buf, size_t l, off_t t); @@ -516,7 +516,7 @@ int getenv_for_pid(pid_t pid, const char *field, char **_value); int can_sleep(const char *type); int can_sleep_disk(const char *type); -bool is_valid_documentation_url(const char *url); +bool is_valid_documentation_url(const char *url) _pure_; bool in_initrd(void); @@ -574,10 +574,10 @@ _alloc_(2, 3) static inline void *memdup_multiply(const void *p, size_t a, size_ return memdup(p, a * b); } -bool filename_is_safe(const char *p); -bool path_is_safe(const char *p); -bool string_is_safe(const char *p); -bool string_has_cc(const char *p); +bool filename_is_safe(const char *p) _pure_; +bool path_is_safe(const char *p) _pure_; +bool string_is_safe(const char *p) _pure_; +bool string_has_cc(const char *p) _pure_; void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size, int (*compar) (const void *, const void *, void *), @@ -734,4 +734,4 @@ static inline void _reset_locale_(struct _locale_struct_ *s) { !_saved_locale_.quit; }) ; \ _saved_locale_.quit = true) -bool id128_is_valid(const char *s); +bool id128_is_valid(const char *s) _pure_; diff --git a/src/shared/utmp-wtmp.c b/src/shared/utmp-wtmp.c index 342e0a9cf1..5d88405e13 100644 --- a/src/shared/utmp-wtmp.c +++ b/src/shared/utmp-wtmp.c @@ -190,7 +190,7 @@ int utmp_put_reboot(usec_t t) { return write_entry_both(&store); } -static const char *sanitize_id(const char *id) { +_pure_ static const char *sanitize_id(const char *id) { size_t l; assert(id); diff --git a/src/shutdownd/shutdownd.c b/src/shutdownd/shutdownd.c index 4c9c149a2d..461a7261f4 100644 --- a/src/shutdownd/shutdownd.c +++ b/src/shutdownd/shutdownd.c @@ -150,7 +150,7 @@ static void warn_wall(usec_t n, struct sd_shutdown_command *c) { } } -static usec_t when_wall(usec_t n, usec_t elapse) { +_const_ static usec_t when_wall(usec_t n, usec_t elapse) { static const struct { usec_t delay; diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 6067781cf1..f9a03cad0d 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -5414,7 +5414,7 @@ static int parse_argv(int argc, char *argv[]) { return systemctl_parse_argv(argc, argv); } -static int action_to_runlevel(void) { +_pure_ static int action_to_runlevel(void) { static const char table[_ACTION_MAX] = { [ACTION_HALT] = '0', -- cgit v1.2.1 From 11f22867f9cdbfc6656905861090cded91a41bd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 2 May 2013 22:51:50 -0400 Subject: time-dst: use _cleanup_ --- src/shared/path-util.c | 3 ++- src/shared/time-dst.c | 69 ++++++++++++++++++++++---------------------------- 2 files changed, 32 insertions(+), 40 deletions(-) diff --git a/src/shared/path-util.c b/src/shared/path-util.c index b623fc3dd5..0c1b6a0ab0 100644 --- a/src/shared/path-util.c +++ b/src/shared/path-util.c @@ -50,7 +50,8 @@ char *path_get_file_name(const char *p) { assert(p); - if ((r = strrchr(p, '/'))) + r = strrchr(p, '/'); + if (r) return r + 1; return (char*) p; diff --git a/src/shared/time-dst.c b/src/shared/time-dst.c index afc893cccc..3950a882bf 100644 --- a/src/shared/time-dst.c +++ b/src/shared/time-dst.c @@ -38,6 +38,7 @@ #include #include "time-dst.h" +#include "util.h" /* * If tzh_version is '2' or greater, the above is followed by a second instance @@ -84,15 +85,12 @@ static inline int64_t decode64(const void *ptr) { int time_get_dst(time_t date, const char *tzfile, time_t *switch_cur, char **zone_cur, bool *dst_cur, time_t *switch_next, int *delta_next, char **zone_next, bool *dst_next) { - time_t *transitions = NULL; - size_t num_transitions = 0; unsigned char *type_idxs = 0; size_t num_types = 0; struct ttinfo *types = NULL; char *zone_names = NULL; struct stat st; size_t num_isstd, num_isgmt; - FILE *f; struct tzhead tzhead; size_t chars; size_t i; @@ -102,22 +100,21 @@ int time_get_dst(time_t date, const char *tzfile, size_t tzspec_len; size_t num_leaps; size_t lo, hi; - int err = -EINVAL; + size_t num_transitions = 0; + _cleanup_free_ time_t *transitions = NULL; + _cleanup_fclose_ FILE *f; f = fopen(tzfile, "re"); if (f == NULL) return -errno; - if (fstat(fileno(f), &st) < 0) { - err = -errno; - fclose(f); - return err; - } + if (fstat(fileno(f), &st) < 0) + return -errno; read_again: if (fread((void *)&tzhead, sizeof(tzhead), 1, f) != 1 || memcmp(tzhead.tzh_magic, TZ_MAGIC, sizeof(tzhead.tzh_magic)) != 0) - goto lose; + return -EINVAL; num_transitions = (size_t)decode(tzhead.tzh_timecnt); num_types = (size_t)decode(tzhead.tzh_typecnt); @@ -139,31 +136,31 @@ read_again: + chars + num_leaps * 8 + num_isstd + num_isgmt); if (fseek(f, to_skip, SEEK_CUR) != 0) - goto lose; + return -EINVAL; goto read_again; } if (num_transitions > ((SIZE_MAX - (__alignof__(struct ttinfo) - 1)) / (sizeof(time_t) + 1))) - goto lose; + return -EINVAL; total_size = num_transitions * (sizeof(time_t) + 1); total_size = ((total_size + __alignof__(struct ttinfo) - 1) & ~(__alignof__(struct ttinfo) - 1)); types_idx = total_size; if (num_leaps > (SIZE_MAX - total_size) / sizeof(struct ttinfo)) - goto lose; + return -EINVAL; total_size += num_types * sizeof(struct ttinfo); if (chars > SIZE_MAX - total_size) - goto lose; + return -EINVAL; total_size += chars; if (__alignof__(struct leap) - 1 > SIZE_MAX - total_size) - goto lose; + return -EINVAL; total_size = ((total_size + __alignof__(struct leap) - 1) & ~(__alignof__(struct leap) - 1)); if (num_leaps > (SIZE_MAX - total_size) / sizeof(struct leap)) - goto lose; + return -EINVAL; total_size += num_leaps * sizeof(struct leap); tzspec_len = 0; @@ -171,24 +168,24 @@ read_again: off_t rem = st.st_size - ftello(f); if (rem < 0 || (size_t) rem < (num_transitions * (8 + 1) + num_types * 6 + chars)) - goto lose; + return -EINVAL; tzspec_len = (size_t) rem - (num_transitions * (8 + 1) + num_types * 6 + chars); if (num_leaps > SIZE_MAX / 12 || tzspec_len < num_leaps * 12) - goto lose; + return -EINVAL; tzspec_len -= num_leaps * 12; if (tzspec_len < num_isstd) - goto lose; + return -EINVAL; tzspec_len -= num_isstd; if (tzspec_len == 0 || tzspec_len - 1 < num_isgmt) - goto lose; + return -EINVAL; tzspec_len -= num_isgmt + 1; if (SIZE_MAX - total_size < tzspec_len) - goto lose; + return -EINVAL; } transitions = (time_t *)calloc(total_size + tzspec_len, 1); if (transitions == NULL) - goto lose; + return -EINVAL; type_idxs = (unsigned char *)transitions + (num_transitions * sizeof(time_t)); @@ -197,18 +194,18 @@ read_again: if (sizeof(time_t) == 4 || trans_width == 8) { if (fread(transitions, trans_width + 1, num_transitions, f) != num_transitions) - goto lose; + return -EINVAL; } else { if (fread(transitions, 4, num_transitions, f) != num_transitions || fread(type_idxs, 1, num_transitions, f) != num_transitions) - goto lose; + return -EINVAL; } /* Check for bogus indices in the data file, so we can hereafter safely use type_idxs[T] as indices into `types' and never crash. */ for (i = 0; i < num_transitions; ++i) if (type_idxs[i] >= num_types) - goto lose; + return -EINVAL; if ((BYTE_ORDER != BIG_ENDIAN && (sizeof(time_t) == 4 || trans_width == 4)) || (BYTE_ORDER == BIG_ENDIAN && sizeof(time_t) == 8 && trans_width == 4)) { @@ -231,26 +228,26 @@ read_again: int c; if (fread(x, 1, sizeof(x), f) != sizeof(x)) - goto lose; + return -EINVAL; c = getc(f); if ((unsigned int)c > 1u) - goto lose; + return -EINVAL; types[i].isdst = c; c = getc(f); if ((size_t) c > chars) /* Bogus index in data file. */ - goto lose; + return -EINVAL; types[i].idx = c; types[i].offset = (long int)decode(x); } if (fread(zone_names, 1, chars, f) != chars) - goto lose; + return -EINVAL; for (i = 0; i < num_isstd; ++i) { int c = getc(f); if (c == EOF) - goto lose; + return -EINVAL; types[i].isstd = c != 0; } @@ -260,7 +257,7 @@ read_again: for (i = 0; i < num_isgmt; ++i) { int c = getc(f); if (c == EOF) - goto lose; + return -EINVAL; types[i].isgmt = c != 0; } @@ -268,10 +265,10 @@ read_again: types[i++].isgmt = 0; if (num_transitions == 0) - goto lose; + return -EINVAL; if (date < transitions[0] || date >= transitions[num_transitions - 1]) - goto lose; + return -EINVAL; /* Find the first transition after TIMER, and then pick the type of the transition before it. */ @@ -331,11 +328,5 @@ found: if (dst_next) *dst_next = types[type_idxs[i]].isdst; - free(transitions); - fclose(f); return 0; -lose: - free(transitions); - fclose(f); - return err; } -- cgit v1.2.1 From b5fafdf63f72b07ff646a898ef94a81643b8d1a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 1 May 2013 22:30:54 -0400 Subject: build-sys: "link" python _reader and pam_systemd against libsd-daemon-internal The same old story as d3b9e0ff: those two use libsystemd-shared, and in turn, some functions in libsystemd-shared use libsystemd-daemon. The fact that *those* functions are used neither by the python modules in question nor pam_systemd isn't always enough. Currently, I'm seeing linking failures with -flto. The result of adding libsystemd-daemon-internal to the list of linked libraries should be harmless, with no change in size or final link requirements. --- Makefile.am | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index d50ab3d704..4040a85291 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3597,6 +3597,7 @@ pam_systemd_la_LIBADD = \ libsystemd-audit.la \ libsystemd-dbus.la \ libsystemd-shared.la \ + libsystemd-daemon-internal.la \ $(PAM_LIBS) pamlib_LTLIBRARIES = \ @@ -3776,7 +3777,8 @@ _reader_la_LIBADD = \ $(PYTHON_LIBS) \ libsystemd-journal.la \ libsystemd-id128.la \ - libsystemd-shared.la + libsystemd-shared.la \ + libsystemd-daemon-internal.la dist_pkgpyexec_PYTHON = \ src/python-systemd/journal.py \ -- cgit v1.2.1 From 7d617113eeafa5d7f7cc2994a81ec6b2a54481b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 2 May 2013 23:35:45 -0400 Subject: man: link to socket activation blog entries --- TODO | 2 -- man/systemd.socket.xml | 8 ++++++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/TODO b/TODO index 3fda3a7f23..01fc1eaba6 100644 --- a/TODO +++ b/TODO @@ -135,8 +135,6 @@ Features: * systemctl: maybe add "systemctl add-wants" or so... -* man: add a link to socket activation blog from systemd.socket(5) - * man: add more examples to man pages * man: maybe sort directives in man pages, and take sections from --help and apply them to man too diff --git a/man/systemd.socket.xml b/man/systemd.socket.xml index e594422889..6dc847df3f 100644 --- a/man/systemd.socket.xml +++ b/man/systemd.socket.xml @@ -686,6 +686,14 @@ systemd.service5, systemd.directives7 + + + For more extensive descriptions see the "Systemd for Developers" series: + Socket Activation, + Socket Activation, part II, + Converting inetd Services, + Socket Activated Internet Services and OS Containers. +
-- cgit v1.2.1 From 202288be83b56a724c316ce0ad2fcb41bd63f0eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 2 May 2013 23:54:00 -0400 Subject: build-sys: tell rsync no to tranfer times and permissions When rsyncing to fd.o, rsync would fail on symlinks in man/. We don't care about the times too much anyway. rsync will set times to "now", which is fine, since modification times don't matter much outside of each uploader's machine anyway. The point is to complete all steps of the transfer, so Python documentation is properly updated. --- Makefile.am | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Makefile.am b/Makefile.am index 4040a85291..d4c2f8577d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -4161,11 +4161,11 @@ upload: all distcheck www_target = www.freedesktop.org:/srv/www.freedesktop.org/www/software/systemd doc-sync: all destdir-sphinx gtkdoc-rebase --html-dir=docs/libudev/html --online - rsync -av --delete docs/libudev/html/ --omit-dir-times $(www_target)/libudev/ + rsync -rlv --delete docs/libudev/html/ --omit-dir-times $(www_target)/libudev/ gtkdoc-rebase --html-dir=docs/gudev/html --online - rsync -av --delete docs/gudev/html/ --omit-dir-times $(www_target)/gudev/ - rsync -av --delete-excluded --include="*.html" --exclude="*" --omit-dir-times man/ $(www_target)/man/ - rsync -av --delete --omit-dir-times docs/html/python-systemd/ $(www_target)/python-systemd/ + rsync -rlv --delete docs/gudev/html/ --omit-dir-times $(www_target)/gudev/ + rsync -rlv --delete-excluded --include="*.html" --exclude="*" --omit-dir-times man/ $(www_target)/man/ + rsync -rlv --delete --omit-dir-times docs/html/python-systemd/ $(www_target)/python-systemd/ git-tag: git tag "v$(VERSION)" -m "systemd $(VERSION)" -- cgit v1.2.1 From 845c53246f73a505f12bb7f685a530045fa60a40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 3 May 2013 00:55:20 -0400 Subject: man: add various filenames to the index Everything which is an absolute filename marked with lands in the index, unless noindex= attribute is present. Should make it easier for people to find stuff when they are looking at a file on disk. Various formatting errors in manpages are fixed, kernel-install(1) is restored to formatting sanity. --- make-directive-index.py | 13 ++++++-- man/journalctl.xml | 2 +- man/kernel-install.xml | 67 ++++++++++++++++++++++++-------------- man/locale.conf.xml | 2 +- man/systemd-cat.xml | 2 +- man/systemd-nspawn.xml | 2 +- man/systemd-remount-fs.service.xml | 2 +- man/systemd.automount.xml | 2 +- man/systemd.device.xml | 2 +- man/systemd.exec.xml | 4 +-- man/systemd.mount.xml | 2 +- man/systemd.swap.xml | 2 +- man/systemd.unit.xml | 2 +- man/vconsole.conf.xml | 2 +- 14 files changed, 67 insertions(+), 39 deletions(-) diff --git a/make-directive-index.py b/make-directive-index.py index 99e7bfaf28..396947b303 100755 --- a/make-directive-index.py +++ b/make-directive-index.py @@ -193,16 +193,25 @@ def _extract_directives(directive_groups, formatting, page): formatting[text] = name storfile = directive_groups['filenames'] - for xpath in ('.//refsynopsisdiv//filename', - './/refsynopsisdiv//command'): + for xpath, absolute_only in (('.//refsynopsisdiv//filename', False), + ('.//refsynopsisdiv//command', False), + ('.//filename', True)): for name in t.iterfind(xpath): + if absolute_only and not (name.text and name.text.startswith('/')): + continue + if name.attrib.get('noindex'): + continue name.tail = '' if name.text: + if name.text.endswith('*'): + name.text = name.text[:-1] if not name.text.startswith('.'): text = name.text.partition(' ')[0] if text != name.text: name.clear() name.text = text + if text.endswith('/'): + text = text[:-1] storfile[text].append((pagename, section)) if text not in formatting: # use element as formatted display diff --git a/man/journalctl.xml b/man/journalctl.xml index 91cc322604..cc7d1a0533 100644 --- a/man/journalctl.xml +++ b/man/journalctl.xml @@ -652,7 +652,7 @@ journalctl /usr/bin/dbus-daemon - Show all logs of the kernel device node /dev/sda: + Show all logs of the kernel device node /dev/sda: journalctl /dev/sda diff --git a/man/kernel-install.xml b/man/kernel-install.xml index df3549dcb7..9c2ecc48b2 100644 --- a/man/kernel-install.xml +++ b/man/kernel-install.xml @@ -49,7 +49,10 @@ along with systemd; If not, see . - kernel-install COMMAND KERNEL VERSION KERNEL IMAGE + kernel-install + COMMAND + KERNEL-VERSION + KERNEL-IMAGE @@ -60,9 +63,10 @@ along with systemd; If not, see . initramfs images to and from /boot. - kernel-install will execute the files located in the directory /usr/lib/kernel/install.d/ + kernel-install will execute the files + located in the directory /usr/lib/kernel/install.d/ and the local administration directory /etc/kernel/install.d/. - All files are collectively sorted and executed in lexical order, regardless of the directories in + All files are collectively sorted and executed in lexical order, regardless of the directory in which they live. However, files with identical file names replace each other. Files in /etc/kernel/install.d/ take precedence over files with the same name in /usr/lib/kernel/install.d/. This can be used to override a system-supplied @@ -78,29 +82,44 @@ along with systemd; If not, see . The following commands are understood: - add <KERNEL VERSION> <KERNEL IMAGE> + add KERNEL-VERSION KERNEL-IMAGE - calls every executable /usr/lib/kernel/install.d/*.install - and /etc/kernel/install.d/*.install with the arguments - "add <KERNEL VERSION> /boot/<MACHINE-ID>/<KERNEL VERSION>/" - - kernel-install copies <KERNEL IMAGE> to - /boot/<MACHINE-ID>/<KERNEL VERSION>/linux. - - kernel-install also creates a boot loader entry according to the boot loader specification - in /boot/loader/entries/<MACHINE-ID>-<KERNEL VERSION>.conf. - If the file initrd is found next to the linux file, - the initrd will be added to the configuration. + calls every executable + /usr/lib/kernel/install.d/*.install and + /etc/kernel/install.d/*.install with + the arguments + +add KERNEL-VERSION /boot/MACHINE-ID/KERNEL-VERSION/ + + + + kernel-install copies + KERNEL-IMAGE to + /boot/MACHINE-ID/KERNEL-VERSION/linux. + + + kernel-install also creates a boot + loader entry according to the boot loader specification in + /boot/loader/entries/MACHINE-ID-KERNEL-VERSION.conf. + If the file initrd is found next to the + linux file, the initrd will be added to + the configuration. - remove <KERNEL VERSION> <KERNEL IMAGE> - calls every executable /usr/lib/kernel/install.d/*.install - and /etc/kernel/install.d/*.install with the arguments: - "remove <KERNEL VERSION> /boot/<MACHINE-ID>/<KERNEL VERSION>/" - - kernel-install removes the entire directory /boot/<MACHINE-ID>/<KERNEL VERSION>/ - and the file /boot/loader/entries/<MACHINE-ID>-<KERNEL VERSION>.conf + remove KERNEL-VERSION KERNEL-IMAGE + + calls every executable /usr/lib/kernel/install.d/*.install + and /etc/kernel/install.d/*.install with the arguments + +remove KERNEL-VERSION /boot/MACHINE-ID/KERNEL-VERSION/ + + + + kernel-install removes the entire directory + /boot/MACHINE-ID/KERNEL-VERSION/ + and the file + /boot/loader/entries/MACHINE-ID-KERNEL-VERSION.conf @@ -140,7 +159,7 @@ along with systemd; If not, see . /etc/machine-id - The content of the file specifies the machine identification <MACHINE-ID>. + The content of the file specifies the machine identification MACHINE-ID. @@ -148,7 +167,7 @@ along with systemd; If not, see . /etc/os-release - The content of the file specifies the operating system id <OS-ID>. + The content of the file specifies the operating system id OS-ID. diff --git a/man/locale.conf.xml b/man/locale.conf.xml index 06c0af0bf7..42634febac 100644 --- a/man/locale.conf.xml +++ b/man/locale.conf.xml @@ -129,7 +129,7 @@ German locale with English messages - /etc/locale.conf: + /etc/locale.conf: LANG=de_DE.UTF-8 LC_MESSAGES=C diff --git a/man/systemd-cat.xml b/man/systemd-cat.xml index cac275b453..876ebfa3cc 100644 --- a/man/systemd-cat.xml +++ b/man/systemd-cat.xml @@ -168,7 +168,7 @@ Invoke a program - This calls /bin/ls + This calls /bin/ls with STDOUT/STDERR connected to the journal: diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index a80cec4e6c..e7c859d11d 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -360,7 +360,7 @@ # systemd-nspawn -bD /srv/mycontainer This installs a minimal Fedora distribution into - the directory /srv/mycontainer/ and + the directory /srv/mycontainer/ and then boots an OS in a namespace container in it. diff --git a/man/systemd-remount-fs.service.xml b/man/systemd-remount-fs.service.xml index 9fe953e8c6..cf04713a00 100644 --- a/man/systemd-remount-fs.service.xml +++ b/man/systemd-remount-fs.service.xml @@ -70,7 +70,7 @@ /usr and the virtual kernel API file systems such as /proc, /sys or - /dev/. This service executes no + /dev. This service executes no operation if /etc/fstab does not exist or lists no entries for the mentioned file systems. diff --git a/man/systemd.automount.xml b/man/systemd.automount.xml index f0a4293dea..e01cac7bc2 100644 --- a/man/systemd.automount.xml +++ b/man/systemd.automount.xml @@ -70,7 +70,7 @@ Automount units must be named after the automount directories they control. Example: the - automount point /home/lennart + automount point /home/lennart must be configured in a unit file home-lennart.automount. For details about the escaping logic used to convert a diff --git a/man/systemd.device.xml b/man/systemd.device.xml index 3f6d012c11..7dffa236cf 100644 --- a/man/systemd.device.xml +++ b/man/systemd.device.xml @@ -80,7 +80,7 @@ Device units are named after the /sys and /dev paths they control. Example: - the device /dev/sda5 is exposed + the device /dev/sda5 is exposed in systemd as dev-sda5.device. For details about the escaping logic used to convert a file system path to a unit name see diff --git a/man/systemd.exec.xml b/man/systemd.exec.xml index c25d96e9fd..b3e0287d72 100644 --- a/man/systemd.exec.xml +++ b/man/systemd.exec.xml @@ -799,10 +799,10 @@ space-separated list of cgroup identifiers. A cgroup identifier is formatted like - cpu:/foo/bar, + cpu:/foo/bar, where "cpu" indicates the kernel control group controller used, and - /foo/bar is the + /foo/bar is the control group path. The controller name and ":" may be omitted in which case the named systemd control group diff --git a/man/systemd.mount.xml b/man/systemd.mount.xml index 23e1e6c28e..21177a2623 100644 --- a/man/systemd.mount.xml +++ b/man/systemd.mount.xml @@ -86,7 +86,7 @@ Mount units must be named after the mount point directories they control. Example: the mount point - /home/lennart must be configured + /home/lennart must be configured in a unit file home-lennart.mount. For details about the escaping logic used to convert a file system diff --git a/man/systemd.swap.xml b/man/systemd.swap.xml index 78b04f58d9..8268e6164d 100644 --- a/man/systemd.swap.xml +++ b/man/systemd.swap.xml @@ -79,7 +79,7 @@ Swap units must be named after the devices or files they control. Example: the swap device - /dev/sda5 must be configured in a + /dev/sda5 must be configured in a unit file dev-sda5.swap. For details about the escaping logic used to convert a file system path to a unit name see diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index f924ef69dd..2f2d1a1d4a 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -197,7 +197,7 @@ Some unit names reflect paths existing in the file system name space. Example: a device unit dev-sda.device refers to a device - with the device node /dev/sda in + with the device node /dev/sda in the file system namespace. If this applies a special way to escape the path name is used, so that the result is usable as part of a file name. Basically, diff --git a/man/vconsole.conf.xml b/man/vconsole.conf.xml index f60b571b72..09a4776705 100644 --- a/man/vconsole.conf.xml +++ b/man/vconsole.conf.xml @@ -124,7 +124,7 @@ German keyboard and console - /etc/vconsole.conf: + /etc/vconsole.conf: KEYMAP=de-latin1 FONT=latarcyrheb-sun16 -- cgit v1.2.1 From 19aa7c4fef4a3f1dfc6d9980574ca220a6a40a71 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 3 May 2013 14:19:19 +0200 Subject: update TODO --- TODO | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TODO b/TODO index 01fc1eaba6..eb00fba075 100644 --- a/TODO +++ b/TODO @@ -26,6 +26,8 @@ Fedora 19: Features: +* maybe add a warning to the unit file parses whern the acces mode of unit files is non-sensical. + * investigate endianess issues of UUID vs. GUID * see if we can fix https://bugs.freedesktop.org/show_bug.cgi?id=63672 @@ -633,6 +635,8 @@ External: * neither pkexec nor sudo initialize environ[] from the PAM environment? +* fedora: update policy to declare access mode and ownership of unit files, and add an rpmlint check for it + Regularly: * look for close() vs. close_nointr() vs. close_nointr_nofail() -- cgit v1.2.1 From 2b68185ac97a98bf9d6f31b2ac1fddbaaffaa887 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 3 May 2013 15:25:44 +0200 Subject: cryptsetup: downgrade world-writable warning again This semi-reverts 8973790ee6f62132b1b57de15c4edaef2c097004. --- src/cryptsetup/cryptsetup-generator.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/cryptsetup/cryptsetup-generator.c b/src/cryptsetup/cryptsetup-generator.c index 7eae1c8c67..81b770890a 100644 --- a/src/cryptsetup/cryptsetup-generator.c +++ b/src/cryptsetup/cryptsetup-generator.c @@ -377,8 +377,12 @@ int main(int argc, char *argv[]) { goto next; } + /* If we readd support for specifying passphrases + * directly in crypttabe we should upgrade the warning + * below, though possibly only if a passphrase is + * specified directly. */ if (st.st_mode & 0005) - log_warning("/etc/crypttab is world-readable. This is usually not a good idea."); + log_debug("/etc/crypttab is world-readable. This is usually not a good idea."); for (;;) { char line[LINE_MAX], *l; -- cgit v1.2.1 From 417b1a62ed9ca700a180f27ed6ea8e972194b9ad Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 3 May 2013 16:32:41 +0200 Subject: core: bump simultaneous bus connection limit to 512 --- src/core/dbus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/dbus.c b/src/core/dbus.c index 5a61a1a654..1272c938cf 100644 --- a/src/core/dbus.c +++ b/src/core/dbus.c @@ -48,7 +48,7 @@ #include "special.h" #include "dbus-common.h" -#define CONNECTIONS_MAX 52 +#define CONNECTIONS_MAX 512 /* Well-known address (http://dbus.freedesktop.org/doc/dbus-specification.html#message-bus-types) */ #define DBUS_SYSTEM_BUS_DEFAULT_ADDRESS "unix:path=/var/run/dbus/system_bus_socket" -- cgit v1.2.1 From 8621b1109b0bbe097f2b3bfce2211fe8474c567b Mon Sep 17 00:00:00 2001 From: Colin Guthrie Date: Tue, 30 Apr 2013 11:48:11 +0100 Subject: journal: Set the default keep free value to 15% (up from 5%) As some SSDs are still seeing performance degredation when reaching 85% usage the default value of 5% seems a little low. Set this to 15% by default. --- man/journald.conf.xml | 2 +- src/journal/journal-file.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/man/journald.conf.xml b/man/journald.conf.xml index 0b9de65fe3..6d54c94b57 100644 --- a/man/journald.conf.xml +++ b/man/journald.conf.xml @@ -246,7 +246,7 @@ configured in SystemMaxUse= and RuntimeMaxUse= is - available. Defaults to 5% of the size + available. Defaults to 15% of the size of the respective file system. SystemMaxFileSize= and diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index 876224dc9f..f0be24c85c 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -2769,7 +2769,7 @@ void journal_default_metrics(JournalMetrics *m, int fd) { if (m->keep_free == (uint64_t) -1) { if (fs_size > 0) { - m->keep_free = PAGE_ALIGN(fs_size / 20); /* 5% of file system size */ + m->keep_free = PAGE_ALIGN(fs_size * 3 / 20); /* 15% of file system size */ if (m->keep_free > DEFAULT_KEEP_FREE_UPPER) m->keep_free = DEFAULT_KEEP_FREE_UPPER; -- cgit v1.2.1 From 5d0c05e5f417325e8505dde857a93a88eb7ebdc0 Mon Sep 17 00:00:00 2001 From: Lukas Nykryn Date: Fri, 3 May 2013 12:52:19 +0200 Subject: systemctl: add --plain option to list-dependencies This patch adds more script-friendly output for list-dependencies. --- man/systemctl.xml | 9 +++++++++ src/systemctl/systemctl.c | 50 +++++++++++++++++++++++++++++++---------------- 2 files changed, 42 insertions(+), 17 deletions(-) diff --git a/man/systemctl.xml b/man/systemctl.xml index 2739df69d4..27eabf2652 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -493,6 +493,15 @@ along with systemd; If not, see . + + + + + When used with list-dependencies + the output is printed as a list instead of a tree. + + + diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index f9a03cad0d..1905d0c05a 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -132,6 +132,7 @@ static enum transport { static const char *arg_host = NULL; static unsigned arg_lines = 10; static OutputMode arg_output = OUTPUT_SHORT; +static bool arg_plain = false; static bool private_bus = false; @@ -956,20 +957,22 @@ static int list_dependencies_print(const char *name, int level, unsigned int bra size_t len = 0; size_t max_len = MAX(columns(),20u); - for (i = level - 1; i >= 0; i--) { + if (!arg_plain) { + for (i = level - 1; i >= 0; i--) { + len += 2; + if(len > max_len - 3 && !arg_full) { + printf("%s...\n",max_len % 2 ? "" : " "); + return 0; + } + printf("%s", draw_special_char(branches & (1 << i) ? DRAW_TREE_VERT : DRAW_TREE_SPACE)); + } len += 2; if(len > max_len - 3 && !arg_full) { printf("%s...\n",max_len % 2 ? "" : " "); return 0; } - printf("%s", draw_special_char(branches & (1 << i) ? DRAW_TREE_VERT : DRAW_TREE_SPACE)); - } - len += 2; - if(len > max_len - 3 && !arg_full) { - printf("%s...\n",max_len % 2 ? "" : " "); - return 0; + printf("%s", draw_special_char(last ? DRAW_TREE_RIGHT : DRAW_TREE_BRANCH)); } - printf("%s", draw_special_char(last ? DRAW_TREE_RIGHT : DRAW_TREE_BRANCH)); if(arg_full){ printf("%s\n", name); @@ -1105,12 +1108,12 @@ static int list_dependencies_compare(const void *_a, const void *_b) { return strcasecmp(*a, *b); } -static int list_dependencies_one(DBusConnection *bus, const char *name, int level, char **units, unsigned int branches) { +static int list_dependencies_one(DBusConnection *bus, const char *name, int level, char ***units, unsigned int branches) { _cleanup_strv_free_ char **deps = NULL, **u; char **c; int r = 0; - u = strv_append(units, name); + u = strv_append(*units, name); if (!u) return log_oom(); @@ -1122,9 +1125,11 @@ static int list_dependencies_one(DBusConnection *bus, const char *name, int leve STRV_FOREACH(c, deps) { if (strv_contains(u, *c)) { - r = list_dependencies_print("...", level + 1, (branches << 1) | (c[1] == NULL ? 0 : 1), 1); - if (r < 0) - return r; + if (!arg_plain) { + r = list_dependencies_print("...", level + 1, (branches << 1) | (c[1] == NULL ? 0 : 1), 1); + if (r < 0) + return r; + } continue; } @@ -1133,17 +1138,22 @@ static int list_dependencies_one(DBusConnection *bus, const char *name, int leve return r; if (arg_all || unit_name_to_type(*c) == UNIT_TARGET) { - r = list_dependencies_one(bus, *c, level + 1, u, (branches << 1) | (c[1] == NULL ? 0 : 1)); + r = list_dependencies_one(bus, *c, level + 1, &u, (branches << 1) | (c[1] == NULL ? 0 : 1)); if(r < 0) return r; } } - + if (arg_plain) { + strv_free(*units); + *units = u; + u = NULL; + } return 0; } static int list_dependencies(DBusConnection *bus, char **args) { _cleanup_free_ char *unit = NULL; + _cleanup_strv_free_ char **units = NULL; const char *u; assert(bus); @@ -1160,7 +1170,7 @@ static int list_dependencies(DBusConnection *bus, char **args) { puts(u); - return list_dependencies_one(bus, u, 0, NULL, 0); + return list_dependencies_one(bus, u, 0, &units, 0); } struct job_info { @@ -4717,7 +4727,8 @@ static int systemctl_parse_argv(int argc, char *argv[]) { ARG_NO_ASK_PASSWORD, ARG_FAILED, ARG_RUNTIME, - ARG_FORCE + ARG_FORCE, + ARG_PLAIN }; static const struct option options[] = { @@ -4755,6 +4766,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) { { "runtime", no_argument, NULL, ARG_RUNTIME }, { "lines", required_argument, NULL, 'n' }, { "output", required_argument, NULL, 'o' }, + { "plain", no_argument, NULL, ARG_PLAIN }, { NULL, 0, NULL, 0 } }; @@ -4982,6 +4994,10 @@ static int systemctl_parse_argv(int argc, char *argv[]) { arg_ignore_inhibitors = true; break; + case ARG_PLAIN: + arg_plain = true; + break; + case '?': return -EINVAL; -- cgit v1.2.1 From 4641a16b15a0e50b61259316b3fda43e0b48f7d5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 3 May 2013 18:58:44 +0200 Subject: update TODO --- TODO | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TODO b/TODO index eb00fba075..087017fac1 100644 --- a/TODO +++ b/TODO @@ -635,7 +635,7 @@ External: * neither pkexec nor sudo initialize environ[] from the PAM environment? -* fedora: update policy to declare access mode and ownership of unit files, and add an rpmlint check for it +* fedora: update policy to declare access mode and ownership of unit files to root:root 0644, and add an rpmlint check for it Regularly: -- cgit v1.2.1 From a0ab566574303be1ca12cdb334f284cfd407caa5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 3 May 2013 19:02:24 +0200 Subject: cgroup: when escaping a cgroup object name, also escape names that start with a dot --- src/shared/cgroup-util.c | 7 ++++++- src/test/test-cgroup-util.c | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/shared/cgroup-util.c b/src/shared/cgroup-util.c index c5a5f8df83..43c415d760 100644 --- a/src/shared/cgroup-util.c +++ b/src/shared/cgroup-util.c @@ -1527,7 +1527,12 @@ char *cg_escape(const char *p) { /* The return value of this function (unlike cg_unescape()) * needs free()! */ - if (p[0] == '_' || streq(p, "notify_on_release") || streq(p, "release_agent") || streq(p, "tasks")) + if (p[0] == 0 || + p[0] == '_' || + p[0] == '.' || + streq(p, "notify_on_release") || + streq(p, "release_agent") || + streq(p, "tasks")) need_prefix = true; else { const char *dot; diff --git a/src/test/test-cgroup-util.c b/src/test/test-cgroup-util.c index cc1a6fd723..c9634d42b0 100644 --- a/src/test/test-cgroup-util.c +++ b/src/test/test-cgroup-util.c @@ -146,11 +146,15 @@ static void test_escape_one(const char *s, const char *r) { static void test_escape(void) { test_escape_one("foobar", "foobar"); + test_escape_one(".foobar", "_.foobar"); test_escape_one("foobar.service", "foobar.service"); test_escape_one("cgroup.service", "_cgroup.service"); test_escape_one("cpu.service", "_cpu.service"); test_escape_one("tasks", "_tasks"); test_escape_one("_foobar", "__foobar"); + test_escape_one("", "_"); + test_escape_one("_", "__"); + test_escape_one(".", "_."); } static void test_controller_is_valid(void) { -- cgit v1.2.1 From 47838ab3250d975cf4c23819ee695ed0e9861c04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 3 May 2013 19:56:18 -0400 Subject: =?UTF-8?q?journal:=20as=20a=20=C2=B5-opt,=20use=20sizeof=20instea?= =?UTF-8?q?d=20of=20strlen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/journal/journal-file.c | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index f0be24c85c..6eb905e05e 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -1830,6 +1830,17 @@ static int test_object_monotonic(JournalFile *f, uint64_t p, uint64_t needle) { return TEST_RIGHT; } +static inline int find_data_object_by_boot_id( + JournalFile *f, + sd_id128_t boot_id, + Object **o, + uint64_t *b) { + char t[sizeof("_BOOT_ID=")-1 + 32 + 1] = "_BOOT_ID="; + + sd_id128_to_string(boot_id, t + 9); + return journal_file_find_data_object(f, t, sizeof(t) - 1, o, b); +} + int journal_file_move_to_entry_by_monotonic( JournalFile *f, sd_id128_t boot_id, @@ -1838,14 +1849,12 @@ int journal_file_move_to_entry_by_monotonic( Object **ret, uint64_t *offset) { - char t[9+32+1] = "_BOOT_ID="; Object *o; int r; assert(f); - sd_id128_to_string(boot_id, t + 9); - r = journal_file_find_data_object(f, t, strlen(t), &o, NULL); + r = find_data_object_by_boot_id(f, boot_id, &o, NULL); if (r < 0) return r; if (r == 0) @@ -2059,7 +2068,6 @@ int journal_file_move_to_entry_by_monotonic_for_data( direction_t direction, Object **ret, uint64_t *offset) { - char t[9+32+1] = "_BOOT_ID="; Object *o, *d; int r; uint64_t b, z; @@ -2067,8 +2075,7 @@ int journal_file_move_to_entry_by_monotonic_for_data( assert(f); /* First, seek by time */ - sd_id128_to_string(boot_id, t + 9); - r = journal_file_find_data_object(f, t, strlen(t), &o, &b); + r = find_data_object_by_boot_id(f, boot_id, &o, &b); if (r < 0) return r; if (r == 0) @@ -2807,7 +2814,6 @@ int journal_file_get_cutoff_realtime_usec(JournalFile *f, usec_t *from, usec_t * } int journal_file_get_cutoff_monotonic_usec(JournalFile *f, sd_id128_t boot_id, usec_t *from, usec_t *to) { - char t[9+32+1] = "_BOOT_ID="; Object *o; uint64_t p; int r; @@ -2815,9 +2821,7 @@ int journal_file_get_cutoff_monotonic_usec(JournalFile *f, sd_id128_t boot_id, u assert(f); assert(from || to); - sd_id128_to_string(boot_id, t + 9); - - r = journal_file_find_data_object(f, t, strlen(t), &o, &p); + r = find_data_object_by_boot_id(f, boot_id, &o, &p); if (r <= 0) return r; -- cgit v1.2.1 From e9dd0369e4b3fa05569521eb83ff8142e6dd9a7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 3 May 2013 19:56:54 -0400 Subject: systemctl: use GREEDY_REALLOC in one more place --- src/systemctl/systemctl.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/systemctl/systemctl.c b/src/systemctl/systemctl.c index 1905d0c05a..3cca861cf6 100644 --- a/src/systemctl/systemctl.c +++ b/src/systemctl/systemctl.c @@ -1295,8 +1295,7 @@ static int list_jobs(DBusConnection *bus, char **args) { goto finish; } - if (!greedy_realloc((void**) &jobs, &size, - sizeof(struct job_info) * (used + 1))) { + if (!GREEDY_REALLOC(jobs, size, used + 1)) { r = log_oom(); goto finish; } -- cgit v1.2.1 From 20089f95e83dd6a3e9238b3448ce2e55536184ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 3 May 2013 20:25:57 -0400 Subject: man: provide "permalinks" to sections and terms So no one needs to say "go to fd.o/software/systemd/man, open page X, then scroll down to section 3, and look for ..." anymore. --- man/custom-html.xsl | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/man/custom-html.xsl b/man/custom-html.xsl index c4099b26ba..2e40ab1660 100644 --- a/man/custom-html.xsl +++ b/man/custom-html.xsl @@ -33,8 +33,86 @@ + + +

+ + + + + + + headerlink + + + Permalink to this headline + + + + # + + + + +

+
+ + +
+ + + + + + + + + + + headerlink + + + Permalink to this term + + + + # + + + + + + + + +
+
+ +
+
+ + + + index.html -- cgit v1.2.1 From d2bbca6855b174fb7ea90b4767a886bb88bd2400 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Fri, 3 May 2013 23:43:11 +0300 Subject: Spelling fixes --- TODO | 2 +- man/systemctl.xml | 2 +- man/systemd.service.xml | 2 +- src/libsystemd-bus/kdbus.h | 2 +- src/python-systemd/journal.py | 2 +- src/udev/keymap/95-keymap.rules | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/TODO b/TODO index 087017fac1..84ede8ca51 100644 --- a/TODO +++ b/TODO @@ -629,7 +629,7 @@ External: * /usr/bin/service should actually show the new command line -* fedora: suggest auto-restart on failure, but not on sucess and not on coredump. also, ask people to think about changing the start limit logic. Also point people to RestartPreventExitStatus=, SuccessExitStatus= +* fedora: suggest auto-restart on failure, but not on success and not on coredump. also, ask people to think about changing the start limit logic. Also point people to RestartPreventExitStatus=, SuccessExitStatus= * fedora: F20: go timer units all the way, leave cron.daily for cron diff --git a/man/systemctl.xml b/man/systemctl.xml index 27eabf2652..0afb0cc626 100644 --- a/man/systemctl.xml +++ b/man/systemctl.xml @@ -122,7 +122,7 @@ along with systemd; If not, see . show command, limit display to certain properties as specified as argument. If not specified all set properties are shown. The argument should be a - comma-seperated list of property names, such as + comma-separated list of property names, such as MainPID. If specified more than once all properties with the specified names are shown.
diff --git a/man/systemd.service.xml b/man/systemd.service.xml index 09d1d5ff7d..0454cf292e 100644 --- a/man/systemd.service.xml +++ b/man/systemd.service.xml @@ -621,7 +621,7 @@ In this context, a clean exit means an exit code of 0, or one of the signals SIGHUP, SIGINT, SIGTERM, or SIGPIPE, and - additonally, exit statuses and signals + additionally, exit statuses and signals specified in SuccessExitStatus=. If set to the service will be restarted when the diff --git a/src/libsystemd-bus/kdbus.h b/src/libsystemd-bus/kdbus.h index 049c988a47..db5e243c17 100644 --- a/src/libsystemd-bus/kdbus.h +++ b/src/libsystemd-bus/kdbus.h @@ -276,7 +276,7 @@ enum { * cgroup membership paths * to messages. */ KDBUS_MAKE_CRED, /* allow translator services which connect * to the bus on behalf of somebody else, - * allow specifiying the credentials of the + * allow specifying the credentials of the * client to connect on behalf on. Needs * privileges */ }; diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 7d42525ab2..9e40cbc57e 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -240,7 +240,7 @@ class Reader(_Reader): Entries will be processed with converters specified during Reader creation. - Equivilent to get_next(-skip). + Equivalent to get_next(-skip). """ return self.get_next(-skip) diff --git a/src/udev/keymap/95-keymap.rules b/src/udev/keymap/95-keymap.rules index 33baa72523..7956092030 100644 --- a/src/udev/keymap/95-keymap.rules +++ b/src/udev/keymap/95-keymap.rules @@ -102,7 +102,7 @@ ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="HP ProBook*", R ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="HP EliteBook 8440p", RUN+="keymap $name hewlett-packard_elitebook-8440p" ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="HP EliteBook 8460p", RUN+="keymap $name hewlett-packard_elitebook-8460p" ENV{DMI_VENDOR}=="Hewlett-Packard", ATTR{[dmi/id]product_name}=="HDX9494NR", RUN+="keymap $name hewlett-packard-hdx9494nr" -# HP Pavillion dv6315ea has empty DMI_VENDOR +# HP Pavilion dv6315ea has empty DMI_VENDOR ATTR{[dmi/id]board_vendor}=="Quanta", ATTR{[dmi/id]board_name}=="30B7", ATTR{[dmi/id]board_version}=="65.2B", RUN+="keymap $name 0x88 media" # "quick play # Gateway clone of Acer Aspire One AOA110/AOA150 -- cgit v1.2.1 From c95686c6ed1879f959a4eb70249167e297751834 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Fri, 3 May 2013 23:43:12 +0300 Subject: keymap/findkeyboards: avoid throwaway attribute-walk --- src/udev/keymap/findkeyboards | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/udev/keymap/findkeyboards b/src/udev/keymap/findkeyboards index 9ce27429b2..c6b50d12d0 100755 --- a/src/udev/keymap/findkeyboards +++ b/src/udev/keymap/findkeyboards @@ -33,12 +33,12 @@ str_line_starts() { keyboard_devices() { # standard AT keyboard for dev in `udevadm trigger --dry-run --verbose --property-match=ID_INPUT_KEYBOARD=1`; do - walk=`udevadm info --attribute-walk --path=$dev` env=`udevadm info --query=env --path=$dev` # filter out non-event devices, such as the parent input devices which have no devnode if ! echo "$env" | str_line_starts 'DEVNAME='; then continue fi + walk=`udevadm info --attribute-walk --path=$dev` if strstr "$walk" 'DRIVERS=="atkbd"'; then echo -n 'AT keyboard: ' elif echo "$env" | str_line_starts 'ID_USB_DRIVER=usbhid'; then -- cgit v1.2.1 From 8f51399e75e5d0d0741ecb18c549a57840bd1cc3 Mon Sep 17 00:00:00 2001 From: Harald Hoyer Date: Tue, 30 Apr 2013 18:01:47 +0200 Subject: kernel-install: add default install scripts Do the depmod in the kernel-install hooks, so hooks can produce/install kernel modules and be part of the depmod. Also move the basic boot loader entry creation and removal to a plugin script. If PRETTY_NAME is not defined in /etc/os-release, fallback to PRETTY_NAME="Linux $KERNEL_VERSION". Add documentation for everything in the man page. --- Makefile.am | 8 ++-- man/kernel-install.xml | 26 ++++++----- src/kernel-install/50-depmod.install | 8 ++++ src/kernel-install/90-loaderentry.install | 77 +++++++++++++++++++++++++++++++ src/kernel-install/kernel-install | 68 +++++---------------------- 5 files changed, 116 insertions(+), 71 deletions(-) create mode 100644 src/kernel-install/50-depmod.install create mode 100644 src/kernel-install/90-loaderentry.install diff --git a/Makefile.am b/Makefile.am index d4c2f8577d..cba9a3e609 100644 --- a/Makefile.am +++ b/Makefile.am @@ -90,6 +90,7 @@ udevhomedir=$(udevlibexecdir) udevrulesdir=$(udevlibexecdir)/rules.d udevhwdbdir=$(udevlibexecdir)/hwdb.d catalogdir=$(prefix)/lib/systemd/catalog +kernelinstalldir = $(prefix)/lib/kernel/install.d # And these are the special ones for / rootprefix=@rootprefix@ @@ -291,11 +292,12 @@ bin_PROGRAMS = \ systemd-delta \ systemd-analyze -bin_SCRIPTS = \ +dist_bin_SCRIPTS = \ src/kernel-install/kernel-install -EXTRA_DIST += \ - src/kernel-install/kernel-install +dist_kernelinstall_SCRIPTS = \ + src/kernel-install/50-depmod.install \ + src/kernel-install/90-loaderentry.install rootlibexec_PROGRAMS = \ systemd \ diff --git a/man/kernel-install.xml b/man/kernel-install.xml index 9c2ecc48b2..8c2abc747c 100644 --- a/man/kernel-install.xml +++ b/man/kernel-install.xml @@ -84,7 +84,9 @@ along with systemd; If not, see . add KERNEL-VERSION KERNEL-IMAGE - calls every executable + kernel-install creates the directory + /boot/MACHINE-ID/KERNEL-VERSION/ + and calls every executable /usr/lib/kernel/install.d/*.install and /etc/kernel/install.d/*.install with the arguments @@ -93,21 +95,22 @@ add KERNEL-VERSION /boot/MACHI - kernel-install copies + The kernel-install plugin 50-depmod.install runs depmod for the KERNEL-VERSION. + + The kernel-install plugin 90-loaderentry.install copies KERNEL-IMAGE to /boot/MACHINE-ID/KERNEL-VERSION/linux. - - - kernel-install also creates a boot - loader entry according to the boot loader specification in + It also creates a boot loader entry according to the boot loader specification in /boot/loader/entries/MACHINE-ID-KERNEL-VERSION.conf. + The title of the entry is the PRETTY_NAME parameter specified in /etc/os-release, + or "Linux KERNEL-VERSION", if unset. If the file initrd is found next to the linux file, the initrd will be added to the configuration. - remove KERNEL-VERSION KERNEL-IMAGE + remove KERNEL-VERSION calls every executable /usr/lib/kernel/install.d/*.install and /etc/kernel/install.d/*.install with the arguments @@ -117,9 +120,10 @@ remove KERNEL-VERSION /boot/MA kernel-install removes the entire directory - /boot/MACHINE-ID/KERNEL-VERSION/ - and the file - /boot/loader/entries/MACHINE-ID-KERNEL-VERSION.conf + /boot/MACHINE-ID/KERNEL-VERSION/ afterwards.
+ + The kernel-install plugin 90-loaderentry.install removes the file + /boot/loader/entries/MACHINE-ID-KERNEL-VERSION.conf. @@ -167,7 +171,7 @@ remove KERNEL-VERSION /boot/MA /etc/os-release - The content of the file specifies the operating system id OS-ID. + The content of the file specifies the operating system title PRETTY_NAME. diff --git a/src/kernel-install/50-depmod.install b/src/kernel-install/50-depmod.install new file mode 100644 index 0000000000..68c24bed7a --- /dev/null +++ b/src/kernel-install/50-depmod.install @@ -0,0 +1,8 @@ +#!/bin/bash +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh + +[[ $1 == "add" ]] || exit 0 +[[ $2 ]] || exit 1 + +exec depmod -a "$2" diff --git a/src/kernel-install/90-loaderentry.install b/src/kernel-install/90-loaderentry.install new file mode 100644 index 0000000000..55b4d24672 --- /dev/null +++ b/src/kernel-install/90-loaderentry.install @@ -0,0 +1,77 @@ +#!/bin/bash +# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ex: ts=8 sw=4 sts=4 et filetype=sh + +COMMAND="$1" +KERNEL_VERSION="$2" +BOOT_DIR_ABS="$3" +KERNEL_IMAGE="$4" + +if [[ -f /etc/machine-id ]]; then + read MACHINE_ID < /etc/machine-id +fi + +if ! [[ $MACHINE_ID ]]; then + exit 1 +fi + +BOOT_DIR="/$MACHINE_ID/$KERNEL_VERSION" +LOADER_ENTRY="/boot/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf" + +if [[ $COMMAND == remove ]]; then + exec rm -f "$LOADER_ENTRY" +fi + +if ! [[ $COMMAND == add ]]; then + exit 1 +fi + +if ! [[ $KERNEL_IMAGE ]]; then + exit 1 +fi + +if [[ -f /etc/os-release ]]; then + . /etc/os-release +fi + +if ! [[ $PRETTY_NAME ]]; then + PRETTY_NAME="Linux $KERNEL_VERSION" +fi + +if [[ -f /etc/kernel/cmdline ]]; then + readarray -t BOOT_OPTIONS < /etc/kernel/cmdline +fi + +if ! [[ ${BOOT_OPTIONS[*]} ]]; then + readarray -t BOOT_OPTIONS < /proc/cmdline +fi + +if ! [[ $BOOT_OPTIONS ]]; then + echo "Could not determine the kernel command line parameters." >&2 + echo "Please specify the kernel command line in /etc/kernel/cmdline!" >&2 + exit 1 +fi + +cp --preserve "$KERNEL_IMAGE" "$BOOT_DIR_ABS/linux" || { + echo "Could not copy '$KERNEL_IMAGE to '$BOOT_DIR_ABS/linux'." >&2 + exit 1 +} + +mkdir -p "${LOADER_ENTRY%/*}" || { + echo "Could not create loader entry directory '${LOADER_ENTRY%/*}'." >&2 + exit 1 +} + +{ + echo "title $PRETTY_NAME" + echo "version $KERNEL_VERSION" + echo "machine-id $MACHINE_ID" + echo "options ${BOOT_OPTIONS[*]}" + echo "linux $BOOT_DIR/linux" + [[ -f $BOOT_DIR_ABS/initrd ]] && \ + echo "initrd $BOOT_DIR/initrd" +} > "$LOADER_ENTRY" || { + echo "Could not create loader entry '$LOADER_ENTRY'." >&2 + exit 1 +} +exit 0 diff --git a/src/kernel-install/kernel-install b/src/kernel-install/kernel-install index be4a8e274d..fb2ee57b5b 100644 --- a/src/kernel-install/kernel-install +++ b/src/kernel-install/kernel-install @@ -58,16 +58,6 @@ COMMAND="$1" KERNEL_VERSION="$2" KERNEL_IMAGE="$3" -if [[ -f /etc/os-release ]]; then - . /etc/os-release -fi - -if ! [[ $ID ]]; then - echo "Could not determine the distribution name from /etc/os-release." >&2 - echo "Please specify ID=... in /etc/os-release. See man:os-release(5)" >&2 - exit 1 -fi - if [[ -f /etc/machine-id ]]; then read MACHINE_ID < /etc/machine-id fi @@ -78,28 +68,12 @@ if ! [[ $MACHINE_ID ]]; then exit 1 fi -if [[ -f /etc/kernel/cmdline ]]; then - readarray -t BOOT_OPTIONS < /etc/kernel/cmdline -fi - -if ! [[ ${BOOT_OPTIONS[*]} ]]; then - readarray -t BOOT_OPTIONS < /proc/cmdline -fi - -if ! [[ $BOOT_OPTIONS ]]; then - echo "Could not determine the kernel command line parameters." >&2 - echo "Please specify the kernel command line in /etc/kernel/cmdline!" >&2 - exit 1 -fi - if [[ ! $COMMAND ]] || [[ ! $KERNEL_VERSION ]]; then usage exit 1 fi -BOOT_DIR="/$MACHINE_ID/$KERNEL_VERSION" -BOOT_DIR_ABS="/boot$BOOT_DIR" -LOADER_ENTRY="/boot/loader/entries/$MACHINE_ID-$KERNEL_VERSION.conf" +BOOT_DIR_ABS="/boot/$MACHINE_ID/$KERNEL_VERSION" ret=0 readarray -t PLUGINS < <( @@ -121,41 +95,23 @@ case $COMMAND in } for f in "${PLUGINS[@]}"; do - [[ -x $f ]] && "$f" add "$KERNEL_VERSION" "$BOOT_DIR_ABS" - ((ret+=$?)) + if [[ -x $f ]]; then + "$f" add "$KERNEL_VERSION" "$BOOT_DIR_ABS" "$KERNEL_IMAGE" + ((ret+=$?)) + fi done - - cp --preserve "$KERNEL_IMAGE" "$BOOT_DIR_ABS/linux" || { - echo "Could not copy '$KERNEL_IMAGE to '$BOOT_DIR_ABS/linux'." >&2 - exit 1 - } - - mkdir -p "${LOADER_ENTRY%/*}" || { - echo "Could not create loader entry directory '${LOADER_ENTRY%/*}'." >&2 - exit 1 - } - - { - echo "title $PRETTY_NAME" - echo "version $KERNEL_VERSION" - echo "machine-id $MACHINE_ID" - echo "options ${BOOT_OPTIONS[*]}" - echo "linux $BOOT_DIR/linux" - [[ -f $BOOT_DIR_ABS/initrd ]] && \ - echo "initrd $BOOT_DIR/initrd" - } > "$LOADER_ENTRY" || { - echo "Could not create loader entry '$LOADER_ENTRY'." >&2 - exit 1 - } ;; remove) for f in "${PLUGINS[@]}"; do - [[ -x $f ]] && "$f" remove "$KERNEL_VERSION" "$BOOT_DIR_ABS" - ((ret+=$?)) + if [[ -x $f ]]; then + "$f" remove "$KERNEL_VERSION" "$BOOT_DIR_ABS" + ((ret+=$?)) + fi done - rm -rf "$LOADER_ENTRY" "$BOOT_DIR_ABS" + rm -rf "$BOOT_DIR_ABS" + ((ret+=$?)) ;; *) @@ -164,6 +120,4 @@ case $COMMAND in ;; esac -((ret+=$?)) - exit $ret -- cgit v1.2.1 From b4763d9d4c2f993e96686b51885ddffa86aeaaed Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 6 May 2013 17:38:27 +0200 Subject: TODO: update --- TODO | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TODO b/TODO index 84ede8ca51..0b70fef993 100644 --- a/TODO +++ b/TODO @@ -1,4 +1,7 @@ Bugfixes: +* systemctl status *.path shows all logs, not only the ones since the unit is + active + * check systemd-tmpfiles for selinux context hookup for mknod(), symlink() and similar * swap units that are activated by one name but shown in the kernel under another are semi-broken -- cgit v1.2.1 From 07125a9240088f7859b18908cc7d07e396947e24 Mon Sep 17 00:00:00 2001 From: Kay Sievers Date: Mon, 6 May 2013 17:39:07 +0200 Subject: hwdb: update --- hwdb/20-OUI.hwdb | 90 +++++++++++++++++++++++++++++++++++++++++++ hwdb/20-pci-vendor-model.hwdb | 70 +++++++++++++++++++++++---------- 2 files changed, 140 insertions(+), 20 deletions(-) diff --git a/hwdb/20-OUI.hwdb b/hwdb/20-OUI.hwdb index 91d2668808..72795c6a6d 100644 --- a/hwdb/20-OUI.hwdb +++ b/hwdb/20-OUI.hwdb @@ -12892,6 +12892,30 @@ OUI:40D8550E7* OUI:40D8550E8* ID_OUI_FROM_DATABASE=HEITEC AG +OUI:40D8550E9* + ID_OUI_FROM_DATABASE=HAMEG GmbH + +OUI:40D8550EA* + ID_OUI_FROM_DATABASE=A-Z-E + +OUI:40D8550EB* + ID_OUI_FROM_DATABASE=WANTECH Networks + +OUI:40D8550EC* + ID_OUI_FROM_DATABASE=Sentry 360 Security + +OUI:40D8550ED* + ID_OUI_FROM_DATABASE=IntelliDesign Pty Ltd + +OUI:40D8550EE* + ID_OUI_FROM_DATABASE=Siegmar Zander HuSWare + +OUI:40D8550EF* + ID_OUI_FROM_DATABASE=GeneSys Elektronik GmbH + +OUI:40D8550F0* + ID_OUI_FROM_DATABASE=Redwood Systems + OUI:000000* ID_OUI_FROM_DATABASE=XEROX CORPORATION @@ -51001,6 +51025,9 @@ OUI:048A15* OUI:048B42* ID_OUI_FROM_DATABASE=Skspruce Technology Limited +OUI:048C03* + ID_OUI_FROM_DATABASE=ThinPAD Technology (Shenzhen)CO.,LTD + OUI:048D38* ID_OUI_FROM_DATABASE=Netcore Technology Inc. @@ -52069,6 +52096,9 @@ OUI:1000E8* OUI:1000FD* ID_OUI_FROM_DATABASE=LaonPeople +OUI:1001CA* + ID_OUI_FROM_DATABASE=Ashley Butterworth + OUI:10090C* ID_OUI_FROM_DATABASE=Janome Sewing Machine Co., Ltd. @@ -53323,6 +53353,9 @@ OUI:24694A* OUI:2469A5* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd +OUI:246AAB* + ID_OUI_FROM_DATABASE=IT-IS International + OUI:24767D* ID_OUI_FROM_DATABASE=Cisco SPVTG @@ -53689,6 +53722,9 @@ OUI:28EE2C* OUI:28F358* ID_OUI_FROM_DATABASE=2C - Trifonov & Co +OUI:28F532* + ID_OUI_FROM_DATABASE=ADD-Engineering BV + OUI:28F606* ID_OUI_FROM_DATABASE=Syes srl @@ -54307,6 +54343,9 @@ OUI:34C803* OUI:34C99D* ID_OUI_FROM_DATABASE=EIDOLON COMMUNICATIONS TECHNOLOGY CO. LTD. +OUI:34CD6D* + ID_OUI_FROM_DATABASE=CommSky Technologies + OUI:34CDBE* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd @@ -54403,6 +54442,9 @@ OUI:3831AC* OUI:383F10* ID_OUI_FROM_DATABASE=DBL Technology Ltd. +OUI:384233* + ID_OUI_FROM_DATABASE=Wildeboer Bauteile GmbH + OUI:384369* ID_OUI_FROM_DATABASE=Patrol Products Consortium LLC @@ -54673,6 +54715,9 @@ OUI:3C83B5* OUI:3C86A8* ID_OUI_FROM_DATABASE=Sangshin elecom .co,, LTD +OUI:3C8AB0* + ID_OUI_FROM_DATABASE=Juniper Networks + OUI:3C8AE5* ID_OUI_FROM_DATABASE=Tensun Information Technology(Hangzhou) Co.,LTD @@ -54799,6 +54844,9 @@ OUI:4007C0* OUI:400E67* ID_OUI_FROM_DATABASE=Tremol Ltd. +OUI:400E85* + ID_OUI_FROM_DATABASE=Samsung Electro Mechanics co.,LTD. + OUI:4012E4* ID_OUI_FROM_DATABASE=Compass-EOS @@ -55816,6 +55864,9 @@ OUI:50934F* OUI:509772* ID_OUI_FROM_DATABASE=Westinghouse Digital +OUI:509871* + ID_OUI_FROM_DATABASE=Inventum Technologies Private Limited + OUI:509F27* ID_OUI_FROM_DATABASE=Huawei Technologies Co., Ltd @@ -55921,6 +55972,9 @@ OUI:541FD5* OUI:542018* ID_OUI_FROM_DATABASE=Tely Labs +OUI:542160* + ID_OUI_FROM_DATABASE=Resolution Products + OUI:542696* ID_OUI_FROM_DATABASE=Apple @@ -56614,6 +56668,9 @@ OUI:6063FD* OUI:606720* ID_OUI_FROM_DATABASE=Intel Corporate +OUI:60699B* + ID_OUI_FROM_DATABASE=isepos GmbH + OUI:606BBD* ID_OUI_FROM_DATABASE=Samsung Electronics Co., LTD @@ -58687,6 +58744,9 @@ OUI:8065E9* OUI:806629* ID_OUI_FROM_DATABASE=Prescope Technologies CO.,LTD. +OUI:806C8B* + ID_OUI_FROM_DATABASE=KAESER KOMPRESSOREN AG + OUI:806CBC* ID_OUI_FROM_DATABASE=NET New Electronic Technology GmbH @@ -59011,6 +59071,9 @@ OUI:84DF0C* OUI:84E4D9* ID_OUI_FROM_DATABASE=Shenzhen NEED technology Ltd. +OUI:84E629* + ID_OUI_FROM_DATABASE=Bluwan SA + OUI:84E714* ID_OUI_FROM_DATABASE=Liang Herng Enterprise,Co.Ltd. @@ -59083,6 +59146,9 @@ OUI:8841C1* OUI:8843E1* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. +OUI:88462A* + ID_OUI_FROM_DATABASE=Telechips Inc. + OUI:884B39* ID_OUI_FROM_DATABASE=Siemens AG, Healthcare Sector @@ -59770,6 +59836,9 @@ OUI:9439E5* OUI:943AF0* ID_OUI_FROM_DATABASE=Nokia Corporation +OUI:9440A2* + ID_OUI_FROM_DATABASE=Anywave Communication Technologies, Inc. + OUI:944444* ID_OUI_FROM_DATABASE=LG Innotek @@ -60091,6 +60160,9 @@ OUI:98A7B0* OUI:98AAD7* ID_OUI_FROM_DATABASE=BLUE WAVE NETWORKING CO LTD +OUI:98B039* + ID_OUI_FROM_DATABASE=Alcatel-Lucent + OUI:98B8E3* ID_OUI_FROM_DATABASE=Apple @@ -60727,6 +60799,9 @@ OUI:A45A1C* OUI:A45C27* ID_OUI_FROM_DATABASE=Nintendo Co., Ltd. +OUI:A45D36* + ID_OUI_FROM_DATABASE=Hewlett Packard + OUI:A46706* ID_OUI_FROM_DATABASE=Apple, Inc. @@ -61609,6 +61684,9 @@ OUI:B40EDC* OUI:B41489* ID_OUI_FROM_DATABASE=CISCO SYSTEMS, INC. +OUI:B41513* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + OUI:B41DEF* ID_OUI_FROM_DATABASE=Internet Laboratories, Inc. @@ -61660,6 +61738,9 @@ OUI:B451F9* OUI:B45253* ID_OUI_FROM_DATABASE=Seagate Technology +OUI:B4527D* + ID_OUI_FROM_DATABASE=Sony Mobile Communications AB + OUI:B45570* ID_OUI_FROM_DATABASE=Borea @@ -61855,6 +61936,9 @@ OUI:B82ADC* OUI:B82CA0* ID_OUI_FROM_DATABASE=Honeywell HomMed +OUI:B830A8* + ID_OUI_FROM_DATABASE=Road-Track Telematics Development + OUI:B836D8* ID_OUI_FROM_DATABASE=Videoswitch @@ -62758,6 +62842,9 @@ OUI:C4F57C* OUI:C4FCE4* ID_OUI_FROM_DATABASE=DishTV NZ Ltd +OUI:C80258* + ID_OUI_FROM_DATABASE=ITW GSE ApS + OUI:C802A6* ID_OUI_FROM_DATABASE=Beijing Newmine Technology @@ -63721,6 +63808,9 @@ OUI:D4AC4E* OUI:D4AE52* ID_OUI_FROM_DATABASE=Dell Inc +OUI:D4B110* + ID_OUI_FROM_DATABASE=HUAWEI TECHNOLOGIES CO.,LTD + OUI:D4BED9* ID_OUI_FROM_DATABASE=Dell Inc diff --git a/hwdb/20-pci-vendor-model.hwdb b/hwdb/20-pci-vendor-model.hwdb index ea67fee344..a8dcc31776 100644 --- a/hwdb/20-pci-vendor-model.hwdb +++ b/hwdb/20-pci-vendor-model.hwdb @@ -4074,7 +4074,7 @@ pci:v00001002d00006600* ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8670A/8750M] pci:v00001002d00006601* - ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8500/8700M Series] + ID_MODEL_FROM_DATABASE=Mars [Radeon HD 8730M] pci:v00001002d00006602* ID_MODEL_FROM_DATABASE=Mars @@ -4217,9 +4217,6 @@ pci:v00001002d00006720sv00001558sd00007201* pci:v00001002d00006720sv0000174Bsd0000E188* ID_MODEL_FROM_DATABASE=Radeon HD 6970M -pci:v00001002d00006723* - ID_MODEL_FROM_DATABASE=Barts GL [ATI FirePro V (FireGL V) Graphics Adapter] - pci:v00001002d00006724* ID_MODEL_FROM_DATABASE=Blackcomb [Mobility Radeon HD 6000 series] @@ -5534,9 +5531,6 @@ pci:v00001002d000094B3* pci:v00001002d000094B4* ID_MODEL_FROM_DATABASE=RV740 PRO [Radeon HD 4750] -pci:v00001002d000094B5* - ID_MODEL_FROM_DATABASE=RV740 [Radeon HD 4770] - pci:v00001002d000094C1* ID_MODEL_FROM_DATABASE=RV610 [Radeon HD 2400 PRO/XT] @@ -22952,6 +22946,24 @@ pci:v000010DEd000011C0* pci:v000010DEd000011C2* ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti Boost] +pci:v000010DEd000011C2sv00001043sd0000845B* + ID_MODEL_FROM_DATABASE=GeForce GTX 650 Ti Boost DirectCU II OC + +pci:v000010DEd000011C2sv00001462sd00002874* + ID_MODEL_FROM_DATABASE=GeForce GTX 650 Ti Boost TwinFrozr II OC + +pci:v000010DEd000011C2sv00001569sd000011C2* + ID_MODEL_FROM_DATABASE=GeForce GTX 650 Ti Boost OC + +pci:v000010DEd000011C2sv000019DAsd00001281* + ID_MODEL_FROM_DATABASE=GeForce GTX 650 Ti Boost OC + +pci:v000010DEd000011C2sv00003842sd00003657* + ID_MODEL_FROM_DATABASE=GeForce GTX 650 Ti Boost + +pci:v000010DEd000011C2sv00003842sd00003658* + ID_MODEL_FROM_DATABASE=GeForce GTX 650 Ti Boost Superclocked + pci:v000010DEd000011C3* ID_MODEL_FROM_DATABASE=GK106 [GeForce GTX 650 Ti OEM] @@ -23861,6 +23873,9 @@ pci:v000010ECd00008177* pci:v000010ECd00008178* ID_MODEL_FROM_DATABASE=RTL8188CE 802.11b/g/n WiFi Adapter +pci:v000010ECd00008179* + ID_MODEL_FROM_DATABASE=RTL8188EE Wireless Network Adapter + pci:v000010ECd00008180* ID_MODEL_FROM_DATABASE=RTL8180L 802.11b MAC @@ -34094,6 +34109,9 @@ pci:v000012D8d0000E110* pci:v000012D8d0000E110sv00001775sd000011CC* ID_MODEL_FROM_DATABASE=CC11/CL11 CompactPCI Bridge +pci:v000012D8d0000E111* + ID_MODEL_FROM_DATABASE=PI7C9X111SL PCIe-to-PCI Reversible Bridge + pci:v000012D8d0000E130* ID_MODEL_FROM_DATABASE=PCI Express to PCI-XPI7C9X130 PCI-X Bridge @@ -40424,6 +40442,9 @@ pci:v000014E4d00004333* pci:v000014E4d00004344* ID_MODEL_FROM_DATABASE=EDGE/GPRS data and 802.11b/g combo cardbus [GC89] +pci:v000014E4d00004350* + ID_MODEL_FROM_DATABASE=BCM43222 Wireless Network Adapter + pci:v000014E4d00004353* ID_MODEL_FROM_DATABASE=BCM43224 802.11a/b/g/n @@ -40466,6 +40487,9 @@ pci:v000014E4d00004365* pci:v000014E4d00004365sv00001028sd00000016* ID_MODEL_FROM_DATABASE=Wireless 1704 802.11n + BT 4.0 +pci:v000014E4d000043B1* + ID_MODEL_FROM_DATABASE=BCM4352 802.11ac Wireless Network Adapter + pci:v000014E4d00004401* ID_MODEL_FROM_DATABASE=BCM4401 100Base-T @@ -40637,6 +40661,9 @@ pci:v000014E4d00005850* pci:v000014E4d00008602* ID_MODEL_FROM_DATABASE=BCM7400/BCM7405 Serial ATA Controller +pci:v000014E4d0000A8D8* + ID_MODEL_FROM_DATABASE=BCM43224/5 Wireless Network Adapter + pci:v000014E4d0000B302* ID_MODEL_FROM_DATABASE=BCM56302 StrataXGS 24x1GE 2x10GE Switch Controller @@ -43290,7 +43317,7 @@ pci:v00001688d00001170* ID_MODEL_FROM_DATABASE=WLAN 802.11b card pci:v0000168C* - ID_VENDOR_FROM_DATABASE=Atheros Communications Inc. + ID_VENDOR_FROM_DATABASE=Qualcomm Atheros pci:v0000168Cd00000007* ID_MODEL_FROM_DATABASE=AR5210 Wireless Network Adapter [AR5000 802.11a] @@ -43881,7 +43908,7 @@ pci:v0000168Cd0000002E* ID_MODEL_FROM_DATABASE=AR9287 Wireless Network Adapter (PCI-Express) pci:v0000168Cd00000030* - ID_MODEL_FROM_DATABASE=AR9300 Wireless LAN adaptor + ID_MODEL_FROM_DATABASE=AR93xx Wireless Network Adapter pci:v0000168Cd00000030sv0000103Csd00001627* ID_MODEL_FROM_DATABASE=AR9380/HB112 802.11abgn 3×3 Wi-Fi Adapter @@ -43911,7 +43938,10 @@ pci:v0000168Cd00000034* ID_MODEL_FROM_DATABASE=AR9462 Wireless Network Adapter pci:v0000168Cd00000036* - ID_MODEL_FROM_DATABASE=AR9565 Wireless Network Adapter + ID_MODEL_FROM_DATABASE=QCA9565 / AR9565 Wireless Network Adapter + +pci:v0000168Cd0000003C* + ID_MODEL_FROM_DATABASE=QCA988x 802.11ac Wireless Network Adapter pci:v0000168Cd00000207* ID_MODEL_FROM_DATABASE=AR5210 Wireless Network Adapter [AR5000 802.11a] @@ -52356,7 +52386,7 @@ pci:v00008086d000010F6* ID_MODEL_FROM_DATABASE=82574L Gigabit Network Connection pci:v00008086d000010F7* - ID_MODEL_FROM_DATABASE=82599EB 10-Gigabit KX4 Network Connection + ID_MODEL_FROM_DATABASE=10 Gigabit BR KX4 Dual Port Network Connection pci:v00008086d000010F7sv0000108Esd00007B12* ID_MODEL_FROM_DATABASE=Sun Dual 10GbE PCIe 2.0 FEM @@ -52365,7 +52395,7 @@ pci:v00008086d000010F7sv00008086sd0000000D* ID_MODEL_FROM_DATABASE=Ethernet Mezzanine Adapter X520-KX4-2 pci:v00008086d000010F8* - ID_MODEL_FROM_DATABASE=82599EB 10 Gigabit Dual Port Backplane Connection + ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection pci:v00008086d000010F8sv00001028sd00001F63* ID_MODEL_FROM_DATABASE=10GbE 2P X520k bNDC @@ -52380,7 +52410,7 @@ pci:v00008086d000010F8sv00008086sd0000000C* ID_MODEL_FROM_DATABASE=Ethernet X520 10GbE Dual Port KX4-KR Mezz pci:v00008086d000010F9* - ID_MODEL_FROM_DATABASE=82599EB 10 Gigabit CX4 Dual Port Network Connection + ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Network Connection pci:v00008086d000010FB* ID_MODEL_FROM_DATABASE=82599EB 10-Gigabit SFI/SFP+ Network Connection @@ -52431,7 +52461,7 @@ pci:v00008086d000010FBsv00008086sd00007A12* ID_MODEL_FROM_DATABASE=Ethernet Server Adapter X520-2 pci:v00008086d000010FC* - ID_MODEL_FROM_DATABASE=82599EB 10-Gigabit XAUI/BX4 Network Connection + ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Network Connection pci:v00008086d000010FE* ID_MODEL_FROM_DATABASE=82552 10/100 Network Connection @@ -53109,7 +53139,7 @@ pci:v00008086d00001503sv00001043sd0000849C* ID_MODEL_FROM_DATABASE=P8P67 Deluxe Motherboard pci:v00008086d00001507* - ID_MODEL_FROM_DATABASE=82599EB 10 Gigabit Network Connection + ID_MODEL_FROM_DATABASE=Ethernet Express Module X520-P2 pci:v00008086d00001508* ID_MODEL_FROM_DATABASE=82598EB Gigabit BX Network Connection @@ -53160,7 +53190,7 @@ pci:v00008086d00001511* ID_MODEL_FROM_DATABASE=82580 Gigabit SFP Connection pci:v00008086d00001514* - ID_MODEL_FROM_DATABASE=82599EB 10 Gigabit KX4 Network Connection + ID_MODEL_FROM_DATABASE=Ethernet X520 10GbE Dual Port KX4 Mezz pci:v00008086d00001514sv00008086sd0000000B* ID_MODEL_FROM_DATABASE=Ethernet X520 10GbE Dual Port KX4 Mezz @@ -53187,7 +53217,7 @@ pci:v00008086d00001518* ID_MODEL_FROM_DATABASE=82576NS SerDes Gigabit Network Connection pci:v00008086d0000151C* - ID_MODEL_FROM_DATABASE=82599EB 10 Gigabit TN Network Connection + ID_MODEL_FROM_DATABASE=82599 10 Gigabit TN Network Connection pci:v00008086d0000151Csv0000108Esd00007B13* ID_MODEL_FROM_DATABASE=Dual 10GBASE-T LP @@ -53346,10 +53376,10 @@ pci:v00008086d00001528sv00008086sd00005003* ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X540-t Adapter pci:v00008086d00001529* - ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection with FCoE + ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Network Connection with FCoE pci:v00008086d0000152A* - ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual port Network Connection with FCoE + ID_MODEL_FROM_DATABASE=82599 10 Gigabit Dual Port Backplane Connection with FCoE pci:v00008086d00001533* ID_MODEL_FROM_DATABASE=I210 Gigabit Network Connection @@ -53403,7 +53433,7 @@ pci:v00008086d0000154Asv00008086sd0000011C* ID_MODEL_FROM_DATABASE=Ethernet Converged Network Adapter X520-4 pci:v00008086d0000154D* - ID_MODEL_FROM_DATABASE=82599EB 10-Gigabit SFP+ Network Connection + ID_MODEL_FROM_DATABASE=Ethernet 10G 2P X520 Adapter pci:v00008086d0000154Dsv00008086sd00007B11* ID_MODEL_FROM_DATABASE=10GbE 2P X520 Adapter -- cgit v1.2.1 From f8964235e69f58225dec378437b1789744cd22a9 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 6 May 2013 21:04:31 +0200 Subject: nspawn: explain that we look for /etc/os-release in the container directory https://bugs.freedesktop.org/show_bug.cgi?id=64014 --- man/systemd-nspawn.xml | 9 +++++++++ src/nspawn/nspawn.c | 2 +- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index e7c859d11d..cab5990a56 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -133,6 +133,15 @@ Container Interface specification.
+ + As a safety check + systemd-nspawn will verify the + existance of /etc/os-release in + the container tree before starting the container (see + os-release5). It + might be necessary to add this file to the container + tree manually if the OS of the container is too old to + contain this file out-of-the-box. diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index e907a1daa7..f3568ab40c 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1285,7 +1285,7 @@ int main(int argc, char *argv[]) { } if (path_is_os_tree(arg_directory) <= 0) { - log_error("Directory %s doesn't look like an OS root directory. Refusing.", arg_directory); + log_error("Directory %s doesn't look like an OS root directory (/etc/os-release is missing). Refusing.", arg_directory); goto finish; } -- cgit v1.2.1 From 83374163014eb50ed0ecd4f18ab45e5280ce7081 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 6 May 2013 21:15:38 +0200 Subject: quota: use QUOTACHECK path correctly as tested in configure.ac https://bugs.freedesktop.org/show_bug.cgi?id=63555 --- Makefile.am | 1 + src/quotacheck/quotacheck.c | 28 +++++++++++++--------------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/Makefile.am b/Makefile.am index cba9a3e609..179b9b902d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -165,6 +165,7 @@ AM_CPPFLAGS = \ -DX_SERVER=\"$(bindir)/X\" \ -DUDEVLIBEXECDIR=\"$(udevlibexecdir)\" \ -DPOLKIT_AGENT_BINARY_PATH=\"$(bindir)/pkttyagent\" \ + -DQUOTACHECK=\"$(QUOTACHECK)\" \ -I $(top_srcdir)/src \ -I $(top_srcdir)/src/shared \ -I $(top_srcdir)/src/login \ diff --git a/src/quotacheck/quotacheck.c b/src/quotacheck/quotacheck.c index 32f3ff904d..1f63785041 100644 --- a/src/quotacheck/quotacheck.c +++ b/src/quotacheck/quotacheck.c @@ -33,14 +33,16 @@ static bool arg_skip = false; static bool arg_force = false; static int parse_proc_cmdline(void) { - char *line, *w, *state; - int r; + _cleanup_free_ char *line = NULL; + char *w, *state; size_t l; + int r; if (detect_container(NULL) > 0) return 0; - if ((r = read_one_line_file("/proc/cmdline", &line)) < 0) { + r = read_one_line_file("/proc/cmdline", &line); + if (r < 0) { log_warning("Failed to read /proc/cmdline, ignoring: %s", strerror(-r)); return 0; } @@ -62,8 +64,6 @@ static int parse_proc_cmdline(void) { } #endif } - - free(line); return 0; } @@ -77,13 +77,13 @@ static void test_files(void) { } int main(int argc, char *argv[]) { + static const char * const cmdline[] = { - "/sbin/quotacheck", + QUOTACHECK, "-anug", NULL }; - int r = EXIT_FAILURE; pid_t pid; if (argc > 1) { @@ -102,23 +102,21 @@ int main(int argc, char *argv[]) { if (!arg_force) { if (arg_skip) - return 0; + return EXIT_SUCCESS; if (access("/run/systemd/quotacheck", F_OK) < 0) - return 0; + return EXIT_SUCCESS; } - if ((pid = fork()) < 0) { + pid = fork(); + if (pid < 0) { log_error("fork(): %m"); - goto finish; + return EXIT_FAILURE; } else if (pid == 0) { /* Child */ execv(cmdline[0], (char**) cmdline); _exit(1); /* Operational error */ } - r = wait_for_terminate_and_warn("quotacheck", pid) == 0 ? EXIT_SUCCESS : EXIT_FAILURE; - -finish: - return r; + return wait_for_terminate_and_warn("quotacheck", pid) >= 0 ? EXIT_SUCCESS : EXIT_FAILURE; } -- cgit v1.2.1 From 80f53eb59516f87e26e3afa405c61b4eed9ffe30 Mon Sep 17 00:00:00 2001 From: Nirbheek Chauhan Date: Tue, 9 Apr 2013 18:30:24 +0530 Subject: condition, man: Add support for ConditionSecurity=apparmor Checking for the apparmor directory in securityfs means the apparmor module is loaded and enabled, and hence should suffice as a test. https://bugs.freedesktop.org/show_bug.cgi?id=63312 --- man/systemd.unit.xml | 3 ++- src/core/condition.c | 2 ++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 2f2d1a1d4a..3360a719a2 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -984,7 +984,8 @@ may be used to check whether the given security module is enabled on the system. Currently the only recognized - value is selinux. + values are selinux + and apparmor. The test may be negated by prepending an exclamation mark.
diff --git a/src/core/condition.c b/src/core/condition.c index 30199c10e3..4aa5530c36 100644 --- a/src/core/condition.c +++ b/src/core/condition.c @@ -162,6 +162,8 @@ static bool test_security(const char *parameter) { if (streq(parameter, "selinux")) return is_selinux_enabled() > 0; #endif + if (streq(parameter, "apparmor")) + return access("/sys/kernel/security/apparmor/", F_OK) == 0; return false; } -- cgit v1.2.1 From d686f034c3b9021e07faefe172ee660abd952871 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 6 May 2013 22:26:55 +0200 Subject: update TODO --- TODO | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TODO b/TODO index 0b70fef993..ec067d55cd 100644 --- a/TODO +++ b/TODO @@ -29,6 +29,9 @@ Fedora 19: Features: +* Introduce a way how we can kill the main process of a service with KillSignal, but all processes with SIGKILL later on + https://bugzilla.redhat.com/show_bug.cgi?id=952634 + * maybe add a warning to the unit file parses whern the acces mode of unit files is non-sensical. * investigate endianess issues of UUID vs. GUID -- cgit v1.2.1 From d956ac29a1b8120e83922fa8e75cdd8f6e562529 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 6 May 2013 22:28:39 +0200 Subject: core: unit_inactive_or_pending() should actually do as it claims --- src/core/unit.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/core/unit.c b/src/core/unit.c index dc8bf83383..9b36b225fa 100644 --- a/src/core/unit.c +++ b/src/core/unit.c @@ -2676,6 +2676,9 @@ bool unit_inactive_or_pending(Unit *u) { /* Returns true if the unit is inactive or going down */ + if (UNIT_IS_INACTIVE_OR_DEACTIVATING(unit_active_state(u))) + return true; + if (unit_stop_pending(u)) return true; -- cgit v1.2.1 From e943ecc88d87f8747cc6396688c1347b40c15e03 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 6 May 2013 22:39:17 +0200 Subject: man: correct SIGUSR1 semantics for journald --- man/systemd-journald.service.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/man/systemd-journald.service.xml b/man/systemd-journald.service.xml index bc32c8e38b..822f3c28f0 100644 --- a/man/systemd-journald.service.xml +++ b/man/systemd-journald.service.xml @@ -111,13 +111,13 @@ is flushed to /var/ in order to make it persistent (if this is - enabled). This may be used after + enabled). This must be used after /var/ is mounted, - but is generally not required since - the first journal write when - /var/ becomes - writable triggers the flushing - anyway.
+ as otherwise log data from + /run is never + flushed to /var + regardless of the + configuration.
-- cgit v1.2.1 From a7be37a5014f5d7f8aa372915943611fe1112834 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 6 May 2013 22:47:41 +0200 Subject: man: clarify behaviour of Also= in unit files --- man/systemd.unit.xml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 3360a719a2..49103dad56 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -1132,13 +1132,14 @@ Also= Additional units to - install when this unit is - installed. If the user requests - installation of a unit with this - option configured, + install/deinstall when this unit is + installed/deinstalled. If the user + requests installation/deinstallation + of a unit with this option configured, systemctl enable - will automatically install units - listed in this option as + and systemctl + disable will automatically + install/uninstall units listed in this option as well. -- cgit v1.2.1 From ab75ca91dcc6504c88931bed4e025b8b53b11c2d Mon Sep 17 00:00:00 2001 From: Ross Lagerwall Date: Mon, 6 May 2013 15:32:23 +0100 Subject: man: fix typos in systemd.special --- man/systemd.special.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/systemd.special.xml b/man/systemd.special.xml index 61d45ff88d..7164b1e614 100644 --- a/man/systemd.special.xml +++ b/man/systemd.special.xml @@ -784,7 +784,7 @@ available at boot.
This may be used to pull - in printer management + in smartcard management daemons dynamically when smartcard hardware is found. @@ -801,7 +801,7 @@ This may be used to pull in audio management daemons - dynamically when printer + dynamically when audio hardware is found. -- cgit v1.2.1 From 9494131b91decc5300f9bbfa0568e64546d7917a Mon Sep 17 00:00:00 2001 From: Daniel Wallace Date: Sun, 5 May 2013 18:09:53 -0500 Subject: zsh_completion: complete only pids for systemd-coredumpctl Instead of completing the whole line, which doesn't work, only complete the pid, but still show the whole line so the user can see which command was which. Users can also let the parameter expansion sort the completion by date instead of by pid, by setting zstyle ':completion:*:*:systemd-coredumpctl:*' sort no so that the zshcompsys doesn't sort the _describe function for only systemd-coredumpctl. --- shell-completion/systemd-zsh-completion.zsh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/shell-completion/systemd-zsh-completion.zsh b/shell-completion/systemd-zsh-completion.zsh index b29a2e9223..411646ea59 100644 --- a/shell-completion/systemd-zsh-completion.zsh +++ b/shell-completion/systemd-zsh-completion.zsh @@ -896,12 +896,13 @@ _systemd-coredumpctl_command(){ _describe -t commands 'systemd-coredumpctl command' _systemd_coredumpctl_cmds else local curcontext="$curcontext" - local -a dumps + local -a _dumps cmd="${${_systemd_coredumpctl_cmds[(r)$words[1]:*]%%:*}}" if (( $#cmd )); then - dumps=( "${(f)$(_call_program dumps "systemd-coredumpctl list 2>/dev/null")}" ) - if [[ -n "$dumps" ]]; then - compadd "${dumps[@]}" + # user can set zstyle ':completion:*:*:systemd-coredumpctl:*' sort no for coredumps to be ordered by date, otherwise they get ordered by pid + _dumps=( "${(foa)$(systemd-coredumpctl list | awk 'BEGIN{OFS=":"} /^\s/ {sub(/[[ \t]+/, ""); print $5,$0}' 2>/dev/null)}" ) + if [[ -n "$_dumps" ]]; then + _describe -t pids 'coredumps' _dumps else _message "no coredumps" fi -- cgit v1.2.1 From b4bc041b1756aab117df40abdcc16a9dc2e72d07 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 4 May 2013 11:38:23 -0400 Subject: fileio: split write_one_line_file into two The new function allows one to write to an already open file. --- src/shared/fileio.c | 23 ++++++++++++++--------- src/shared/fileio.h | 4 ++++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/shared/fileio.c b/src/shared/fileio.c index 48dd44239f..ad068bf30d 100644 --- a/src/shared/fileio.c +++ b/src/shared/fileio.c @@ -24,16 +24,8 @@ #include "util.h" #include "strv.h" -int write_string_file(const char *fn, const char *line) { - _cleanup_fclose_ FILE *f = NULL; - - assert(fn); - assert(line); - - f = fopen(fn, "we"); - if (!f) - return -errno; +int write_string_to_file(FILE *f, const char *line) { errno = 0; fputs(line, f); if (!endswith(line, "\n")) @@ -47,6 +39,19 @@ int write_string_file(const char *fn, const char *line) { return 0; } +int write_string_file(const char *fn, const char *line) { + _cleanup_fclose_ FILE *f = NULL; + + assert(fn); + assert(line); + + f = fopen(fn, "we"); + if (!f) + return -errno; + + return write_string_to_file(f, line); +} + int write_string_file_atomic(const char *fn, const char *line) { _cleanup_fclose_ FILE *f = NULL; _cleanup_free_ char *p = NULL; diff --git a/src/shared/fileio.h b/src/shared/fileio.h index 34ed3c1e97..0ca6878ea4 100644 --- a/src/shared/fileio.h +++ b/src/shared/fileio.h @@ -21,10 +21,14 @@ along with systemd; If not, see . ***/ #include +#include + #include "macro.h" +int write_string_to_file(FILE *f, const char *line); int write_string_file(const char *fn, const char *line); int write_string_file_atomic(const char *fn, const char *line); + int read_one_line_file(const char *fn, char **line); int read_full_file(const char *fn, char **contents, size_t *size); -- cgit v1.2.1 From 19adb8a3204fefd91411b5f0f350c8bc6bcf75fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Sat, 4 May 2013 12:31:28 -0400 Subject: systemd-sleep: add support for freeze and standby A new config file /etc/systemd/sleep.conf is added. It is parsed by systemd-sleep and logind. The strings written to /sys/power/disk and /sys/power/state can be configured. This allows people to use different modes of suspend on systems with broken or special hardware. Configuration is shared between systemd-sleep and logind to enable logind to answer the question "can the system be put to sleep" as correctly as possible without actually invoking the action. If the user configured systemd-sleep to only use 'freeze', but current kernel does not support it, logind will properly report that the system cannot be put to sleep. https://bugs.freedesktop.org/show_bug.cgi?id=57793 https://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=commit;h=7e73c5ae6e7991a6c01f6d096ff8afaef4458c36 http://lists.freedesktop.org/archives/systemd-devel/2013-February/009238.html SYSTEM_CONFIG_FILE and USER_CONFIG_FILE defines were removed since they were used in only a few places and with the addition of /etc/systemd/sleep.conf it becomes easier to just append the name of each file to the dir name. --- Makefile-man.am | 1 + Makefile.am | 5 +- TODO | 3 - man/systemd-sleep.conf.xml | 181 +++++++++++++++++++++++++++++ man/systemd-suspend.service.xml | 50 +++++++- man/systemd.xml | 2 +- src/core/main.c | 2 +- src/login/logind-action.c | 7 +- src/login/logind-dbus.c | 56 +++------ src/shared/sleep-config.c | 182 ++++++++++++++++++++++++++++++ src/shared/sleep-config.h | 26 +++++ src/shared/util.c | 53 --------- src/shared/util.h | 3 - src/sleep/sleep.c | 244 ++++++++++++++++++++++++++++------------ src/test/test-sleep.c | 30 ++++- 15 files changed, 653 insertions(+), 192 deletions(-) create mode 100644 man/systemd-sleep.conf.xml create mode 100644 src/shared/sleep-config.c create mode 100644 src/shared/sleep-config.h diff --git a/Makefile-man.am b/Makefile-man.am index 4f14a6aaf6..481423a963 100644 --- a/Makefile-man.am +++ b/Makefile-man.am @@ -64,6 +64,7 @@ MANPAGES += \ man/systemd-nspawn.1 \ man/systemd-remount-fs.service.8 \ man/systemd-shutdownd.service.8 \ + man/systemd-sleep.conf.5 \ man/systemd-suspend.service.8 \ man/systemd-sysctl.service.8 \ man/systemd-system-update-generator.8 \ diff --git a/Makefile.am b/Makefile.am index 179b9b902d..1a6817fca1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -138,12 +138,11 @@ udevlibexec_PROGRAMS = AM_CPPFLAGS = \ -include $(top_builddir)/config.h \ - -DSYSTEM_CONFIG_FILE=\"$(pkgsysconfdir)/system.conf\" \ + -DPKGSYSCONFDIR=\"$(pkgsysconfdir)\" \ -DSYSTEM_CONFIG_UNIT_PATH=\"$(pkgsysconfdir)/system\" \ -DSYSTEM_DATA_UNIT_PATH=\"$(systemunitdir)\" \ -DSYSTEM_SYSVINIT_PATH=\"$(SYSTEM_SYSVINIT_PATH)\" \ -DSYSTEM_SYSVRCND_PATH=\"$(SYSTEM_SYSVRCND_PATH)\" \ - -DUSER_CONFIG_FILE=\"$(pkgsysconfdir)/user.conf\" \ -DUSER_CONFIG_UNIT_PATH=\"$(pkgsysconfdir)/user\" \ -DUSER_DATA_UNIT_PATH=\"$(userunitdir)\" \ -DCATALOG_DATABASE=\"$(catalogstatedir)/database\" \ @@ -643,6 +642,8 @@ libsystemd_shared_la_SOURCES = \ src/shared/fdset.h \ src/shared/prioq.c \ src/shared/prioq.h \ + src/shared/sleep-config.c \ + src/shared/sleep-config.h \ src/shared/strv.c \ src/shared/strv.h \ src/shared/env-util.c \ diff --git a/TODO b/TODO index ec067d55cd..4f5af140f0 100644 --- a/TODO +++ b/TODO @@ -202,9 +202,6 @@ Features: - pam: when leaving a session explicitly exclude the ReleaseSession() caller process from the killing spree - logind: GetSessionByPID() should accept 0 as PID value - we should probably handle SIGTERM/SIGINT to not leave dot files around, just in case - - add configuration/switches to use - freeze (http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git) and - standby (https://bugs.freedesktop.org/show_bug.cgi?id=57793) as suspend modes * exec: when deinitializating a tty device fix the perms and group, too, not only when initializing. Set access mode/gid to 0620/tty. diff --git a/man/systemd-sleep.conf.xml b/man/systemd-sleep.conf.xml new file mode 100644 index 0000000000..dc4b0da68e --- /dev/null +++ b/man/systemd-sleep.conf.xml @@ -0,0 +1,181 @@ + + + + + + + + + systemd-sleep.conf + systemd + + + + Developer + Zbigniew + Jędrzejewski-Szmek + zbyszek@in.waw.pl + + + + + + systemd-sleep.conf + 5 + + + + systemd-sleep.conf + Suspend and hibernation configuration file + + + + /etc/systemd/sleep.conf + + + + Description + + systemd supports three general + power-saving modes: + + + + suspend + + a low-power state + where execution of the OS is paused, + and complete power loss might result + in lost data, and which is fast to + enter and exit. This corresponds to + suspend, standby, or freeze states as + understood by the kernel. + + + + + hibernate + + a low-power state + where execution of the OS is paused, + and complete power loss does not + result in lost data, and which might + be slow to enter and exit. This + corresponds to the hibernation as + understood by the kernel. + + + + + hybrid-sleep + + a low-power state + where execution of the OS is paused, + which might be slow to enter, and on + complete power loss does not result in + lost data but might be slower to exit + in that case. This mode is called + suspend-to-both by the kernel. + + + + + Settings in this file determine what strings + will be written to + /sys/power/disk and + /sys/power/state by + systemd-sleep8 + when + systemd1 + attempts to suspend or hibernate the machine. + + + + Options + + The following options can be configured in the + [Sleep] section of + /etc/systemd/sleep.conf: + + + + SuspendMode= + HibernateMode= + HybridSleepMode= + + The string to be written to + /sys/power/disk by, + respectively, + systemd-suspend.service8, + systemd-hibernate.service8, or + systemd-hybrid-sleep.service8. + More than one value can be specified by seperating + multiple values with commas. They will be tried + in turn, until one is written without error. If + neither suceeds, the operation will be aborted. + + + + + SuspendState= + HibernateState= + HybridSleepState= + + The string to be written to + /sys/power/state by, + respectively, + systemd-suspend.service8, + systemd-hibernate.service8, or + systemd-hybrid-sleep.service8. + More than one value can be specified by seperating + multiple values with commas. They will be tried + in turn, until one is written without error. If + neither suceeds, the operation will be aborted. + + + + + + + Example: freeze + + Example: to exploit the freeze mode added + in Linux 3.9, one can use systemctl suspend + with + +[Sleep] +SuspendState=freeze + + + + + See Also + + systemd-sleep8, + systemd-suspend.service8, + systemd-hibernate.service8, + systemd-hybrid-sleep.service8, + systemd1, + systemd.directives7 + + + + diff --git a/man/systemd-suspend.service.xml b/man/systemd-suspend.service.xml index 9b8bad4791..4a4ed5cbdb 100644 --- a/man/systemd-suspend.service.xml +++ b/man/systemd-suspend.service.xml @@ -6,6 +6,7 @@ This file is part of systemd. Copyright 2012 Lennart Poettering + Copyright 2013 Zbigniew Jędrzejewski-Szmek systemd is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -63,7 +64,7 @@ systemd-suspend.service is a system service that is pulled in by suspend.target and is responsible - for the actual system suspend. Similar, + for the actual system suspend. Similarly, systemd-hibernate.service is pulled in by hibernate.target to execute the actual hibernation. Finally, @@ -88,8 +89,8 @@ but the first argument is now "post". All executables in this directory are executed in parallel, and execution of - the action is not continued before all executables - finished. + the action is not continued until all executables + have finished. Note that scripts or binaries dropped in /usr/lib/systemd/system-sleep/ @@ -100,7 +101,7 @@ Note that systemd-suspend.service, - systemd-hibernate.service and + systemd-hibernate.service, and systemd-hybrid-sleep.service should never be executed directly. Instead, trigger system sleep states with a command such as @@ -108,14 +109,51 @@ similar. Internally, this service will echo a string like - mem into + "mem" into /sys/power/state, to trigger the - actual system suspend. + actual system suspend. What exactly is written + where can be configured in the [Sleep] + section of /etc/systemd/sleep.conf. + See systemd-sleep.conf5. + + + + + Options + + systemd-sleep understands the + following commands: + + + + + + + Print a short help + text and exit. + + + + + Print the systemd version + identifier and exit. + + + + + + + Suspend, hibernate, or + put the system to hybrid sleep. + + + See Also + systemd-sleep.conf5, systemd1, systemctl1, systemd.special7, diff --git a/man/systemd.xml b/man/systemd.xml index cd38c16375..d009ed8e1c 100644 --- a/man/systemd.xml +++ b/man/systemd.xml @@ -508,7 +508,7 @@ Directories - + System unit directories diff --git a/src/core/main.c b/src/core/main.c index 22cec4ed15..7fc06bea05 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -668,7 +668,7 @@ static int parse_config_file(void) { const char *fn; int r; - fn = arg_running_as == SYSTEMD_SYSTEM ? SYSTEM_CONFIG_FILE : USER_CONFIG_FILE; + fn = arg_running_as == SYSTEMD_SYSTEM ? PKGSYSCONFDIR "/system.conf" : PKGSYSCONFDIR "/user.conf"; f = fopen(fn, "re"); if (!f) { if (errno == ENOENT) diff --git a/src/login/logind-action.c b/src/login/logind-action.c index 4091e411b0..c930591023 100644 --- a/src/login/logind-action.c +++ b/src/login/logind-action.c @@ -27,6 +27,7 @@ #include "special.h" #include "dbus-common.h" #include "logind-action.h" +#include "sleep-config.h" int manager_handle_action( Manager *m, @@ -74,11 +75,11 @@ int manager_handle_action( } if (handle == HANDLE_SUSPEND) - supported = can_sleep("mem") > 0; + supported = can_sleep("suspend") > 0; else if (handle == HANDLE_HIBERNATE) - supported = can_sleep("disk") > 0; + supported = can_sleep("hibernate") > 0; else if (handle == HANDLE_HYBRID_SLEEP) - supported = can_sleep("disk") > 0 && can_sleep_disk("suspend") > 0; + supported = can_sleep("hybrid-sleep") > 0; else if (handle == HANDLE_KEXEC) supported = access("/sbin/kexec", X_OK) >= 0; else diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c index 68e499f52c..4a84b860f1 100644 --- a/src/login/logind-dbus.c +++ b/src/login/logind-dbus.c @@ -31,6 +31,7 @@ #include "path-util.h" #include "polkit.h" #include "special.h" +#include "sleep-config.h" #include "systemd/sd-id128.h" #include "systemd/sd-messages.h" #include "fileio-label.h" @@ -1131,8 +1132,7 @@ static int bus_manager_can_shutdown_or_sleep( const char *action, const char *action_multiple_sessions, const char *action_ignore_inhibit, - const char *sleep_type, - const char *sleep_disk_type, + const char *sleep_verb, DBusError *error, DBusMessage **_reply) { @@ -1153,22 +1153,10 @@ static int bus_manager_can_shutdown_or_sleep( assert(error); assert(_reply); - if (sleep_type) { - r = can_sleep(sleep_type); + if (sleep_verb) { + r = can_sleep(sleep_verb); if (r < 0) return r; - - if (r == 0) { - result = "na"; - goto finish; - } - } - - if (sleep_disk_type) { - r = can_sleep_disk(sleep_disk_type); - if (r < 0) - return r; - if (r == 0) { result = "na"; goto finish; @@ -1313,8 +1301,7 @@ static int bus_manager_do_shutdown_or_sleep( const char *action, const char *action_multiple_sessions, const char *action_ignore_inhibit, - const char *sleep_type, - const char *sleep_disk_type, + const char *sleep_verb, DBusError *error, DBusMessage **_reply) { @@ -1347,17 +1334,8 @@ static int bus_manager_do_shutdown_or_sleep( DBUS_TYPE_INVALID)) return -EINVAL; - if (sleep_type) { - r = can_sleep(sleep_type); - if (r < 0) - return r; - - if (r == 0) - return -ENOTSUP; - } - - if (sleep_disk_type) { - r = can_sleep_disk(sleep_disk_type); + if (sleep_verb) { + r = can_sleep(sleep_verb); if (r < 0) return r; @@ -2160,7 +2138,7 @@ static DBusHandlerResult manager_message_handler( "org.freedesktop.login1.power-off", "org.freedesktop.login1.power-off-multiple-sessions", "org.freedesktop.login1.power-off-ignore-inhibit", - NULL, NULL, + NULL, &error, &reply); if (r < 0) return bus_send_error_reply(connection, message, &error, r); @@ -2172,7 +2150,7 @@ static DBusHandlerResult manager_message_handler( "org.freedesktop.login1.reboot", "org.freedesktop.login1.reboot-multiple-sessions", "org.freedesktop.login1.reboot-ignore-inhibit", - NULL, NULL, + NULL, &error, &reply); if (r < 0) return bus_send_error_reply(connection, message, &error, r); @@ -2185,7 +2163,7 @@ static DBusHandlerResult manager_message_handler( "org.freedesktop.login1.suspend", "org.freedesktop.login1.suspend-multiple-sessions", "org.freedesktop.login1.suspend-ignore-inhibit", - "mem", NULL, + "suspend", &error, &reply); if (r < 0) return bus_send_error_reply(connection, message, &error, r); @@ -2197,7 +2175,7 @@ static DBusHandlerResult manager_message_handler( "org.freedesktop.login1.hibernate", "org.freedesktop.login1.hibernate-multiple-sessions", "org.freedesktop.login1.hibernate-ignore-inhibit", - "disk", NULL, + "hibernate", &error, &reply); if (r < 0) return bus_send_error_reply(connection, message, &error, r); @@ -2210,7 +2188,7 @@ static DBusHandlerResult manager_message_handler( "org.freedesktop.login1.hibernate", "org.freedesktop.login1.hibernate-multiple-sessions", "org.freedesktop.login1.hibernate-ignore-inhibit", - "disk", "suspend", + "hybrid-sleep", &error, &reply); if (r < 0) return bus_send_error_reply(connection, message, &error, r); @@ -2223,7 +2201,7 @@ static DBusHandlerResult manager_message_handler( "org.freedesktop.login1.power-off", "org.freedesktop.login1.power-off-multiple-sessions", "org.freedesktop.login1.power-off-ignore-inhibit", - NULL, NULL, + NULL, &error, &reply); if (r < 0) return bus_send_error_reply(connection, message, &error, r); @@ -2234,7 +2212,7 @@ static DBusHandlerResult manager_message_handler( "org.freedesktop.login1.reboot", "org.freedesktop.login1.reboot-multiple-sessions", "org.freedesktop.login1.reboot-ignore-inhibit", - NULL, NULL, + NULL, &error, &reply); if (r < 0) return bus_send_error_reply(connection, message, &error, r); @@ -2246,7 +2224,7 @@ static DBusHandlerResult manager_message_handler( "org.freedesktop.login1.suspend", "org.freedesktop.login1.suspend-multiple-sessions", "org.freedesktop.login1.suspend-ignore-inhibit", - "mem", NULL, + "suspend", &error, &reply); if (r < 0) return bus_send_error_reply(connection, message, &error, r); @@ -2258,7 +2236,7 @@ static DBusHandlerResult manager_message_handler( "org.freedesktop.login1.hibernate", "org.freedesktop.login1.hibernate-multiple-sessions", "org.freedesktop.login1.hibernate-ignore-inhibit", - "disk", NULL, + "hibernate", &error, &reply); if (r < 0) return bus_send_error_reply(connection, message, &error, r); @@ -2270,7 +2248,7 @@ static DBusHandlerResult manager_message_handler( "org.freedesktop.login1.hibernate", "org.freedesktop.login1.hibernate-multiple-sessions", "org.freedesktop.login1.hibernate-ignore-inhibit", - "disk", "suspend", + "hybrid-sleep", &error, &reply); if (r < 0) return bus_send_error_reply(connection, message, &error, r); diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c new file mode 100644 index 0000000000..73a3acb8be --- /dev/null +++ b/src/shared/sleep-config.c @@ -0,0 +1,182 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#include + +#include "conf-parser.h" +#include "sleep-config.h" +#include "fileio.h" +#include "log.h" +#include "strv.h" +#include "util.h" + +int parse_sleep_config(const char *verb, char ***modes, char ***states) { + _cleanup_strv_free_ char + **suspend_mode = NULL, **suspend_state = NULL, + **hibernate_mode = NULL, **hibernate_state = NULL, + **hybrid_mode = NULL, **hybrid_state = NULL; + + const ConfigTableItem items[] = { + { "Sleep", "SuspendMode", config_parse_strv, 0, &suspend_mode }, + { "Sleep", "SuspendState", config_parse_strv, 0, &suspend_state }, + { "Sleep", "HibernateMode", config_parse_strv, 0, &hibernate_mode }, + { "Sleep", "HibernateState", config_parse_strv, 0, &hibernate_state }, + { "Sleep", "HybridSleepMode", config_parse_strv, 0, &hybrid_mode }, + { "Sleep", "HybridSleepState", config_parse_strv, 0, &hybrid_state }, + {}}; + + int r; + FILE _cleanup_fclose_ *f; + + f = fopen(PKGSYSCONFDIR "/sleep.conf", "re"); + if (!f) { + if (errno == ENOENT) + return 0; + + log_warning("Failed to open configuration file " PKGSYSCONFDIR "/sleep.conf: %m"); + return 0; + } + + r = config_parse(NULL, PKGSYSCONFDIR "/sleep.conf", f, "Sleep\0", + config_item_table_lookup, (void*) items, false, false, NULL); + if (r < 0) + log_warning("Failed to parse configuration file: %s", strerror(-r)); + + if (streq(verb, "suspend")) { + /* empty by default */ + *modes = suspend_mode; + + if (suspend_state) + *states = suspend_state; + else + *states = strv_split_nulstr("mem\0standby\0freeze\0"); + + suspend_mode = suspend_state = NULL; + } else if (streq(verb, "hibernate")) { + if (hibernate_mode) + *modes = hibernate_mode; + else + *modes = strv_split_nulstr("platform\0shutdown\0"); + + if (hibernate_state) + *states = hibernate_state; + else + *states = strv_split_nulstr("disk\0"); + + hibernate_mode = hibernate_state = NULL; + } else if (streq(verb, "hybrid-sleep")) { + if (hybrid_mode) + *modes = hybrid_mode; + else + *modes = strv_split_nulstr("suspend\0platform\0shutdown\0"); + + if (hybrid_state) + *states = hybrid_state; + else + *states = strv_split_nulstr("disk\0"); + + hybrid_mode = hybrid_state = NULL; + } else + assert_not_reached("what verb"); + + if (!modes || !states) { + strv_free(*modes); + strv_free(*states); + return log_oom(); + } + + return 0; +} + +int can_sleep_state(char **types) { + char *w, *state, **type; + int r; + _cleanup_free_ char *p = NULL; + + if (strv_isempty(types)) + return true; + + /* If /sys is read-only we cannot sleep */ + if (access("/sys/power/state", W_OK) < 0) + return false; + + r = read_one_line_file("/sys/power/state", &p); + if (r < 0) + return false; + + STRV_FOREACH(type, types) { + size_t l, k; + + k = strlen(*type); + FOREACH_WORD_SEPARATOR(w, l, p, WHITESPACE, state) + if (l == k && memcmp(w, *type, l) == 0) + return true; + } + + return false; +} + +int can_sleep_disk(char **types) { + char *w, *state, **type; + int r; + _cleanup_free_ char *p = NULL; + + if (strv_isempty(types)) + return true; + + /* If /sys is read-only we cannot sleep */ + if (access("/sys/power/disk", W_OK) < 0) + return false; + + r = read_one_line_file("/sys/power/disk", &p); + if (r < 0) + return false; + + STRV_FOREACH(type, types) { + size_t l, k; + + k = strlen(*type); + FOREACH_WORD_SEPARATOR(w, l, p, WHITESPACE, state) { + if (l == k && memcmp(w, *type, l) == 0) + return true; + + if (l == k + 2 && w[0] == '[' && memcmp(w + 1, *type, l - 2) == 0 && w[l-1] == ']') + return true; + } + } + + return false; +} + +int can_sleep(const char *verb) { + _cleanup_strv_free_ char **modes = NULL, **states = NULL; + int r; + + assert(streq(verb, "suspend") || + streq(verb, "hibernate") || + streq(verb, "hybrid-sleep")); + + r = parse_sleep_config(verb, &modes, &states); + if (r < 0) + return false; + + return can_sleep_state(states) && can_sleep_disk(modes); +} diff --git a/src/shared/sleep-config.h b/src/shared/sleep-config.h new file mode 100644 index 0000000000..51d2dec7b4 --- /dev/null +++ b/src/shared/sleep-config.h @@ -0,0 +1,26 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +int parse_sleep_config(const char *verb, char ***modes, char ***states); + +int can_sleep(const char *verb); +int can_sleep_disk(char **types); +int can_sleep_state(char **types); diff --git a/src/shared/util.c b/src/shared/util.c index 5d01802ed9..00d3ace616 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5090,59 +5090,6 @@ int getenv_for_pid(pid_t pid, const char *field, char **_value) { return r; } -int can_sleep(const char *type) { - char *w, *state; - size_t l, k; - int r; - _cleanup_free_ char *p = NULL; - - assert(type); - - /* If /sys is read-only we cannot sleep */ - if (access("/sys/power/state", W_OK) < 0) - return false; - - r = read_one_line_file("/sys/power/state", &p); - if (r < 0) - return false; - - k = strlen(type); - FOREACH_WORD_SEPARATOR(w, l, p, WHITESPACE, state) - if (l == k && memcmp(w, type, l) == 0) - return true; - - return false; -} - -int can_sleep_disk(const char *type) { - char *w, *state; - size_t l, k; - int r; - _cleanup_free_ char *p = NULL; - - assert(type); - - /* If /sys is read-only we cannot sleep */ - if (access("/sys/power/state", W_OK) < 0 || - access("/sys/power/disk", W_OK) < 0) - return false; - - r = read_one_line_file("/sys/power/disk", &p); - if (r < 0) - return false; - - k = strlen(type); - FOREACH_WORD_SEPARATOR(w, l, p, WHITESPACE, state) { - if (l == k && memcmp(w, type, l) == 0) - return true; - - if (l == k + 2 && w[0] == '[' && memcmp(w + 1, type, l - 2) == 0 && w[l-1] == ']') - return true; - } - - return false; -} - bool is_valid_documentation_url(const char *url) { assert(url); diff --git a/src/shared/util.h b/src/shared/util.h index 0bcda48b6d..7ef46e8f1e 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -513,9 +513,6 @@ int setrlimit_closest(int resource, const struct rlimit *rlim); int getenv_for_pid(pid_t pid, const char *field, char **_value); -int can_sleep(const char *type); -int can_sleep_disk(const char *type); - bool is_valid_documentation_url(const char *url) _pure_; bool in_initrd(void); diff --git a/src/sleep/sleep.c b/src/sleep/sleep.c index f5e78c13c6..a56ab89e54 100644 --- a/src/sleep/sleep.c +++ b/src/sleep/sleep.c @@ -4,6 +4,7 @@ This file is part of systemd. Copyright 2012 Lennart Poettering + Copyright 2013 Zbigniew Jędrzejewski-Szmek systemd is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by @@ -22,107 +23,200 @@ #include #include #include +#include -#include "log.h" -#include "util.h" #include "systemd/sd-id128.h" #include "systemd/sd-messages.h" +#include "log.h" +#include "util.h" +#include "strv.h" #include "fileio.h" +#include "build.h" +#include "sleep-config.h" + +static char* arg_verb = NULL; + +static int write_mode(char **modes) { + int r = 0; + char **mode; + + STRV_FOREACH(mode, modes) { + int k = write_string_file("/sys/power/disk", *mode); + if (k == 0) + return 0; + log_debug("Failed to write '%s' to /sys/power/disk: %s", + *mode, strerror(-k)); + if (r == 0) + r = k; + } -int main(int argc, char *argv[]) { - const char *verb; - char* arguments[4]; - int r; - FILE *f; + if (r < 0) + log_error("Failed to write mode to /sys/power/disk: %s", + strerror(-r)); - log_set_target(LOG_TARGET_AUTO); - log_parse_environment(); - log_open(); + return r; +} - if (argc != 2) { - log_error("Invalid number of arguments."); - r = -EINVAL; - goto finish; +static int write_state(FILE *f0, char **states) { + FILE _cleanup_fclose_ *f = f0; + char **state; + int r = 0; + + STRV_FOREACH(state, states) { + int k; + + k = write_string_to_file(f, *state); + if (k == 0) + return 0; + log_debug("Failed to write '%s' to /sys/power/state: %s", + *state, strerror(-k)); + if (r == 0) + r = k; + + fclose(f); + f = fopen("/sys/power/state", "we"); + if (!f) { + log_error("Failed to open /sys/power/state: %m"); + return -errno; + } } - if (streq(argv[1], "suspend")) - verb = "mem"; - else if (streq(argv[1], "hibernate") || streq(argv[1], "hybrid-sleep")) - verb = "disk"; - else { - log_error("Unknown action '%s'.", argv[1]); - r = -EINVAL; - goto finish; - } + return r; +} - /* Configure the hibernation mode */ - if (streq(argv[1], "hibernate")) { - if (write_string_file("/sys/power/disk", "platform") < 0) - write_string_file("/sys/power/disk", "shutdown"); - } else if (streq(argv[1], "hybrid-sleep")) { - if (write_string_file("/sys/power/disk", "suspend") < 0) - if (write_string_file("/sys/power/disk", "platform") < 0) - write_string_file("/sys/power/disk", "shutdown"); - } +static int execute(char **modes, char **states) { + char* arguments[4]; + int r; + FILE *f; + const char* note = strappenda("SLEEP=", arg_verb); + /* This file is opened first, so that if we hit an error, + * we can abort before modyfing any state. */ f = fopen("/sys/power/state", "we"); if (!f) { log_error("Failed to open /sys/power/state: %m"); - r = -errno; - goto finish; + return -errno; } + /* Configure the hibernation mode */ + r = write_mode(modes); + if (r < 0) + return r; + arguments[0] = NULL; arguments[1] = (char*) "pre"; - arguments[2] = argv[1]; + arguments[2] = arg_verb; arguments[3] = NULL; execute_directory(SYSTEM_SLEEP_PATH, NULL, arguments); - if (streq(argv[1], "suspend")) - log_struct(LOG_INFO, - MESSAGE_ID(SD_MESSAGE_SLEEP_START), - "MESSAGE=Suspending system...", - "SLEEP=suspend", - NULL); - else if (streq(argv[1], "hibernate")) - log_struct(LOG_INFO, - MESSAGE_ID(SD_MESSAGE_SLEEP_START), - "MESSAGE=Hibernating system...", - "SLEEP=hibernate", - NULL); - else - log_struct(LOG_INFO, - MESSAGE_ID(SD_MESSAGE_SLEEP_START), - "MESSAGE=Hibernating and suspending system...", - "SLEEP=hybrid-sleep", - NULL); - - fputs(verb, f); - fputc('\n', f); - fflush(f); - - r = ferror(f) ? -errno : 0; - - if (streq(argv[1], "suspend")) - log_struct(LOG_INFO, - MESSAGE_ID(SD_MESSAGE_SLEEP_STOP), - "MESSAGE=System resumed.", - "SLEEP=suspend", - NULL); - else - log_struct(LOG_INFO, - MESSAGE_ID(SD_MESSAGE_SLEEP_STOP), - "MESSAGE=System thawed.", - "SLEEP=hibernate", - NULL); + log_struct(LOG_INFO, + MESSAGE_ID(SD_MESSAGE_SLEEP_START), + "MESSAGE=Suspending system...", + note, + NULL); + + r = write_state(f, states); + if (r < 0) + return r; + + log_struct(LOG_INFO, + MESSAGE_ID(SD_MESSAGE_SLEEP_STOP), + "MESSAGE=System resumed.", + note, + NULL); arguments[1] = (char*) "post"; execute_directory(SYSTEM_SLEEP_PATH, NULL, arguments); - fclose(f); + return r; +} -finish: +static int help(void) { + printf("%s COMMAND\n\n" + "Suspend the system, hibernate the system, or both.\n\n" + "Commands:\n" + " -h --help Show this help and exit\n" + " --version Print version string and exit\n" + " suspend Suspend the system\n" + " hibernate Hibernate the system\n" + " hybrid-sleep Both hibernate and suspend the system\n" + , program_invocation_short_name + ); + + return 0; +} - return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; +static int parse_argv(int argc, char *argv[]) { + enum { + ARG_VERSION = 0x100, + }; + + static const struct option options[] = { + { "help", no_argument, NULL, 'h' }, + { "version", no_argument, NULL, ARG_VERSION }, + { NULL, 0, NULL, 0 } + }; + + int c; + + assert(argc >= 0); + assert(argv); + + while ((c = getopt_long(argc, argv, "+h", options, NULL)) >= 0) + switch(c) { + case 'h': + help(); + return 0 /* done */; + + case ARG_VERSION: + puts(PACKAGE_STRING); + puts(SYSTEMD_FEATURES); + return 0 /* done */; + + case '?': + return -EINVAL; + + default: + log_error("Unknown option code %c", c); + return -EINVAL; + } + + if (argc - optind != 1) { + log_error("Usage: %s COMMAND", + program_invocation_short_name); + return -EINVAL; + } + + arg_verb = argv[optind]; + if (!streq(arg_verb, "suspend") && + !streq(arg_verb, "hibernate") && + !streq(arg_verb, "hybrid-sleep")) { + log_error("Unknown command '%s'.", arg_verb); + return -EINVAL; + } + + return 1 /* work to do */; +} + +int main(int argc, char *argv[]) { + _cleanup_strv_free_ char **modes = NULL, **states = NULL; + int r; + + log_set_target(LOG_TARGET_AUTO); + log_parse_environment(); + log_open(); + + r = parse_argv(argc, argv); + if (r <= 0) + goto finish; + + r = parse_sleep_config(arg_verb, &modes, &states); + if (r < 0) + goto finish; + + r = execute(modes, states); + +finish: + return r < 0 ? EXIT_FAILURE : EXIT_SUCCESS; } diff --git a/src/test/test-sleep.c b/src/test/test-sleep.c index 5a98ecda2f..c3cb9c531d 100644 --- a/src/test/test-sleep.c +++ b/src/test/test-sleep.c @@ -26,14 +26,32 @@ #include "util.h" #include "log.h" +#include "sleep-config.h" +#include "strv.h" int main(int argc, char* argv[]) { - log_info("Can Suspend: %s", yes_no(can_sleep("mem") > 0)); - log_info("Can Hibernate: %s", yes_no(can_sleep("disk") > 0)); - log_info("Can Hibernate+Suspend (Hybrid-Sleep): %s", yes_no(can_sleep_disk("suspend") > 0)); - log_info("Can Hibernate+Reboot: %s", yes_no(can_sleep_disk("reboot") > 0)); - log_info("Can Hibernate+Platform: %s", yes_no(can_sleep_disk("platform") > 0)); - log_info("Can Hibernate+Shutdown: %s", yes_no(can_sleep_disk("shutdown") > 0)); + _cleanup_strv_free_ char + **standby = strv_new("standby", NULL), + **mem = strv_new("mem", NULL), + **disk = strv_new("disk", NULL), + **suspend = strv_new("suspend", NULL), + **reboot = strv_new("reboot", NULL), + **platform = strv_new("platform", NULL), + **shutdown = strv_new("shutdown", NULL), + **freez = strv_new("freeze", NULL); + + log_info("Can Standby: %s", yes_no(can_sleep_state(standby) > 0)); + log_info("Can Suspend: %s", yes_no(can_sleep_state(mem) > 0)); + log_info("Can Hibernate: %s", yes_no(can_sleep_state(disk) > 0)); + log_info("Can Hibernate+Suspend (Hybrid-Sleep): %s", yes_no(can_sleep_disk(suspend) > 0)); + log_info("Can Hibernate+Reboot: %s", yes_no(can_sleep_disk(reboot) > 0)); + log_info("Can Hibernate+Platform: %s", yes_no(can_sleep_disk(platform) > 0)); + log_info("Can Hibernate+Shutdown: %s", yes_no(can_sleep_disk(shutdown) > 0)); + log_info("Can Freeze: %s", yes_no(can_sleep_disk(freez) > 0)); + + log_info("Suspend configured and possible: %s", yes_no(can_sleep("suspend") > 0)); + log_info("Hibernation configured and possible: %s", yes_no(can_sleep("hibernate") > 0)); + log_info("Hybrid-sleep configured and possible: %s", yes_no(can_sleep("hybrid-sleep") > 0)); return 0; } -- cgit v1.2.1 From d9abd1493d6adca4038121f2c969fdcaf89b9b7a Mon Sep 17 00:00:00 2001 From: MUNEDA Takahiro Date: Tue, 23 Apr 2013 13:34:38 -0400 Subject: core: escape unit name from udev This patch escapes a unit name which was derived from udev. Please imagine following udev rule. ACTION=="online|offline", TAG+="systemd", ENV{SYSTEMD_WANTS}="muneda@%p.service" ACTION=="online|offline", TAG+="systemd", ENV{SYSTEMD_WANTS}="muneda@%r.service" ACTION=="online|offline", TAG+="systemd", ENV{SYSTEMD_WANTS}="muneda@%S.service" When unit name is derived from udev via udev_device_get_property_value(), the name may contains '/' if ENV{SYSTEMD_WANTS} has the udev options $devpath(%p), $root(%r), or $sys(%S). However, '/' is a invalid char for unit name so processing of this rule fails as Invalid argument with following message. Apr 22 13:21:37 localhost systemd[1]: Failed to load device unit: Invalid argument Apr 22 13:21:37 localhost systemd[1]: Failed to process udev device event: Invalid argument This patch escapes those invalid chars in a unit name. Tested with 202, and confirmed to apply cleanly on top of commit 195f8e36. Thanks, Takahiro --- src/core/device.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/core/device.c b/src/core/device.c index e83e797787..9fca82ab16 100644 --- a/src/core/device.c +++ b/src/core/device.c @@ -281,16 +281,22 @@ static int device_update_unit(Manager *m, struct udev_device *dev, const char *p size_t l; FOREACH_WORD_QUOTED(w, l, wants, state) { - char *e; + char *e, *n; e = strndup(w, l); if (!e) { r = -ENOMEM; goto fail; } - - r = unit_add_dependency_by_name(u, UNIT_WANTS, e, NULL, true); + n = unit_name_mangle(e); + if (!n) { + r = -ENOMEM; + goto fail; + } free(e); + + r = unit_add_dependency_by_name(u, UNIT_WANTS, n, NULL, true); + free(n); if (r < 0) goto fail; } -- cgit v1.2.1 From 2f3fcf85c5fa6c9c483b31823a0efdd28914c756 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 6 May 2013 23:43:59 +0200 Subject: build-sys: prepare new release --- Makefile.am | 10 ++++---- NEWS | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ configure.ac | 2 +- 3 files changed, 88 insertions(+), 6 deletions(-) diff --git a/Makefile.am b/Makefile.am index 1a6817fca1..96f80d73c1 100644 --- a/Makefile.am +++ b/Makefile.am @@ -32,27 +32,27 @@ SUBDIRS = . po .SECONDARY: LIBUDEV_CURRENT=4 -LIBUDEV_REVISION=3 +LIBUDEV_REVISION=4 LIBUDEV_AGE=3 LIBGUDEV_CURRENT=1 LIBGUDEV_REVISION=3 LIBGUDEV_AGE=1 -LIBSYSTEMD_LOGIN_CURRENT=6 +LIBSYSTEMD_LOGIN_CURRENT=7 LIBSYSTEMD_LOGIN_REVISION=0 -LIBSYSTEMD_LOGIN_AGE=6 +LIBSYSTEMD_LOGIN_AGE=7 LIBSYSTEMD_DAEMON_CURRENT=0 LIBSYSTEMD_DAEMON_REVISION=10 LIBSYSTEMD_DAEMON_AGE=0 LIBSYSTEMD_ID128_CURRENT=0 -LIBSYSTEMD_ID128_REVISION=21 +LIBSYSTEMD_ID128_REVISION=22 LIBSYSTEMD_ID128_AGE=0 LIBSYSTEMD_JOURNAL_CURRENT=10 -LIBSYSTEMD_JOURNAL_REVISION=0 +LIBSYSTEMD_JOURNAL_REVISION=1 LIBSYSTEMD_JOURNAL_AGE=10 # Dirs of external packages diff --git a/NEWS b/NEWS index afaadf3db6..4ac956b6c0 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,87 @@ systemd System and Service Manager +CHANGES WITH 203: + + * systemd-nspawn will now create /etc/resolv.conf if + necessary, before bind-mounting the host's file onto it. + + * systemd-nspawn will now store meta information about a + container on the container's cgroup as extended attribute + fields, including the root directory. + + * The cgroup hierarchy has been reworked in many ways. All + objects any of the components systemd creates in the cgroup + tree is now suffixed. More specifically, user sessions are + now placed in cgroups suffixed with ".session", users in + cgroups suffixed with ".user", and nspawn containers in + cgroups suffixed with ".nspawn". Furthermore, all cgroup + names are now escaped in a simple scheme to avoid collision + of userspace object names with kernel filenames. This work + is preparation for making these objects relocatable in the + cgroup tree, in order to allow easy resource partitioning of + these objects without causing naming conflicts. + + * systemctl list-dependencies gained the new switches + --plain, --reverse, --after and --before. + + * systemd-inhibit now shows the process name of processes that + have taken an inhibitor lock. + + * nss-myhostname will now also resolve "localhost" + implicitly. This makes /etc/hosts an optional file and + nicely handles that on IPv6 ::1 maps to both "localhost" and + the local hostname. + + * libsystemd-logind.so gained a new call + sd_get_machine_names() to enumerate running containers and + VMs (currently only supported by very new libvirt and + nspawn). sd_login_monitor can now be used to watch + VMs/containers coming and going. + + * .include is not allowed recursively anymore, and only in + unit files. Usually it is better to use drop-in snippets in + .d/*.conf anyway, as introduced with systemd 198. + + * systemd-analyze gained a new "critical-chain" command that + determines the slowest chain of units run during system + boot-up. It is very useful for tracking down where + optimizing boot time is the most beneficial. + + * systemd will no longer allow manipulating service paths in + the name=systemd:/system cgroup tree using ControlGroup= in + units. (But is still fine with it in all other dirs.) + + * There's a new systemd-nspawn@.service service file that may + be used to easily run nspawn containers as system + services. With the container's root directory in + /var/lib/container/foobar it is now sufficient to run + "systemctl start systemd-nspawn@foobar.service" to boot it. + + * systemd-cgls gained a new parameter "--machine" to list only + the processes within a certain container. + + * ConditionSecurity= now can check for "apparmor". We still + are lacking checks for SMACK and IMA for this condition + check though. Patches welcome! + + * A new configuration file /etc/systemd/sleep.conf has been + added that may be used to configure which kernel operation + systemd is supposed to execute when "suspend", "hibernate" + or "hybrid-sleep" is requested. This makes the new kernel + "freeze" state accessible to the user. + + * ENV{SYSTEMD_WANTS} in udev rules will now implicitly escape + the passed argument if applicable. + + Contributions from: Auke Kok, Colin Guthrie, Colin Walters, + Cristian Rodríguez, Daniel Buch, Daniel Wallace, Dave Reisner, + Evangelos Foutras, Greg Kroah-Hartman, Harald Hoyer, Josh + Triplett, Kay Sievers, Lennart Poettering, Lukas Nykryn, + MUNEDA Takahiro, Mantas Mikulėnas, Mirco Tischler, Nathaniel + Chen, Nirbheek Chauhan, Ronny Chevalier, Ross Lagerwall, Tom + Gundersen, Umut Tezduyar, Ville Skyttä, Zbigniew + Jędrzejewski-Szmek + CHANGES WITH 202: * The output of 'systemctl list-jobs' got some polishing. The diff --git a/configure.ac b/configure.ac index 285fc44fa2..1a90c19f09 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ AC_PREREQ([2.64]) AC_INIT([systemd], - [202], + [203], [http://bugs.freedesktop.org/enter_bug.cgi?product=systemd], [systemd], [http://www.freedesktop.org/wiki/Software/systemd]) -- cgit v1.2.1 From b82eed9af95668ab38cac33c7996e4d665f8709a Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Mon, 6 May 2013 23:59:14 +0200 Subject: NEWS: typo fix --- NEWS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 4ac956b6c0..3900b9ba4b 100644 --- a/NEWS +++ b/NEWS @@ -11,7 +11,7 @@ CHANGES WITH 203: * The cgroup hierarchy has been reworked in many ways. All objects any of the components systemd creates in the cgroup - tree is now suffixed. More specifically, user sessions are + tree are now suffixed. More specifically, user sessions are now placed in cgroups suffixed with ".session", users in cgroups suffixed with ".user", and nspawn containers in cgroups suffixed with ".nspawn". Furthermore, all cgroup -- cgit v1.2.1 From 253f59dff9c93ee1d2c33444b5715e42bc1c6889 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 7 May 2013 01:09:33 +0200 Subject: journald: be more careful when we try to flush the runtime journal to disk and the disk is close to being full Bump the minimal size of the journal so that we can be sure creating the journal file will always succeed. Previously the minimum size was smaller than a empty jounral file... --- src/journal/journal-file.c | 2 +- src/journal/journald-server.c | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/journal/journal-file.c b/src/journal/journal-file.c index 6eb905e05e..38499a6881 100644 --- a/src/journal/journal-file.c +++ b/src/journal/journal-file.c @@ -44,7 +44,7 @@ #define COMPRESSION_SIZE_THRESHOLD (512ULL) /* This is the minimum journal file size */ -#define JOURNAL_FILE_SIZE_MIN (64ULL*1024ULL) /* 64 KiB */ +#define JOURNAL_FILE_SIZE_MIN (4ULL*1024ULL*1024ULL) /* 4 MiB */ /* These are the lower and upper bounds if we deduce the max_use value * from the file system size */ diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 1b5a22b122..88163c0116 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -938,6 +938,12 @@ int server_flush_to_var(Server *s) { server_rotate(s); server_vacuum(s); + if (!s->system_journal) { + log_notice("Didn't flush runtime journal since rotation of system journal wasn't successful."); + r = -EIO; + goto finish; + } + log_debug("Retrying write."); r = journal_file_copy_entry(f, s->system_journal, o, f->current_offset, NULL, NULL, NULL); if (r < 0) { -- cgit v1.2.1 From 815ac0f1dbcc94663ca7598d1784ba91b7518e86 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 7 May 2013 02:42:15 +0200 Subject: update TODO --- TODO | 2 ++ 1 file changed, 2 insertions(+) diff --git a/TODO b/TODO index 4f5af140f0..269e7f882e 100644 --- a/TODO +++ b/TODO @@ -29,6 +29,8 @@ Fedora 19: Features: +* journald: user journals get the wrong ACL mask? + * Introduce a way how we can kill the main process of a service with KillSignal, but all processes with SIGKILL later on https://bugzilla.redhat.com/show_bug.cgi?id=952634 -- cgit v1.2.1 From 4d5fb96252d289e7899bc0bb87262127d19de949 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 7 May 2013 12:47:30 +0200 Subject: login: add missing _public_ to sd_get_machine_names() --- src/login/sd-login.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/login/sd-login.c b/src/login/sd-login.c index 66c4487ff8..d0dc42f685 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -591,7 +591,7 @@ _public_ int sd_get_uids(uid_t **users) { return r; } -int sd_get_machine_names(char ***machines) { +_public_ int sd_get_machine_names(char ***machines) { _cleanup_closedir_ DIR *d = NULL; _cleanup_strv_free_ char **l = NULL; _cleanup_free_ char *md = NULL; -- cgit v1.2.1 From 0ee8d63649ab475fe2a16b2d62b5a5e2a8a69829 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 7 May 2013 11:35:23 -0400 Subject: systemd-sleep: it is not an error if the config file is missing --- src/shared/sleep-config.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/shared/sleep-config.c b/src/shared/sleep-config.c index 73a3acb8be..cd3238b405 100644 --- a/src/shared/sleep-config.c +++ b/src/shared/sleep-config.c @@ -47,19 +47,16 @@ int parse_sleep_config(const char *verb, char ***modes, char ***states) { FILE _cleanup_fclose_ *f; f = fopen(PKGSYSCONFDIR "/sleep.conf", "re"); - if (!f) { - if (errno == ENOENT) - return 0; - - log_warning("Failed to open configuration file " PKGSYSCONFDIR "/sleep.conf: %m"); - return 0; + if (!f) + log_full(errno == ENOENT ? LOG_DEBUG: LOG_WARNING, + "Failed to open configuration file " PKGSYSCONFDIR "/sleep.conf: %m"); + else { + r = config_parse(NULL, PKGSYSCONFDIR "/sleep.conf", f, "Sleep\0", + config_item_table_lookup, (void*) items, false, false, NULL); + if (r < 0) + log_warning("Failed to parse configuration file: %s", strerror(-r)); } - r = config_parse(NULL, PKGSYSCONFDIR "/sleep.conf", f, "Sleep\0", - config_item_table_lookup, (void*) items, false, false, NULL); - if (r < 0) - log_warning("Failed to parse configuration file: %s", strerror(-r)); - if (streq(verb, "suspend")) { /* empty by default */ *modes = suspend_mode; -- cgit v1.2.1 From b4b879648c378e7cfaef940489c3c1ccc21b27e0 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 7 May 2013 17:48:25 +0200 Subject: kmod-setup: properly iterate through module table Previously we skipped every second entry. This also cleans up much of the code and removes some dead code. --- src/core/kmod-setup.c | 72 ++++++++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 33 deletions(-) diff --git a/src/core/kmod-setup.c b/src/core/kmod-setup.c index 20ab232374..e4885fb212 100644 --- a/src/core/kmod-setup.c +++ b/src/core/kmod-setup.c @@ -30,66 +30,72 @@ #include "kmod-setup.h" -typedef struct Kmodule { - const char *name; - const char *directory; - bool (*condition_fn)(void); -} KModule; - -static const KModule kmod_table[] = { - { "autofs4", "/sys/class/misc/autofs", NULL } , - { "ipv6", "/sys/module/ipv6", NULL }, - { "unix", "/proc/net/unix", NULL } , -}; - #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wformat-nonliteral" -static void systemd_kmod_log(void *data, int priority, const char *file, int line, - const char *fn, const char *format, va_list args) -{ + +static void systemd_kmod_log( + void *data, + int priority, + const char *file, int line, + const char *fn, + const char *format, + va_list args) { + /* library logging is enabled at debug only */ log_metav(LOG_DEBUG, file, line, fn, format, args); } + #pragma GCC diagnostic pop int kmod_setup(void) { - unsigned i; + + static const char kmod_table[] = + /* This one we need to load explicitly, since + * auto-loading on use doesn't work before udev + * created the ghost device nodes, and we need it + * earlier than that. */ + "autofs4\0" "/sys/class/misc/autofs\0" + + /* This one we need to load explicitly, since + * auto-loading of IPv6 is not done when we try to + * configure ::1 on the loopback device. */ + "ipv6\0" "/sys/module/ipv6\0" + + "unix\0" "/proc/net/unix\0"; + struct kmod_ctx *ctx = NULL; - struct kmod_module *mod; - int err; + const char *name, *path; + int r; - for (i = 0; i < ELEMENTSOF(kmod_table); i += 2) { - if (kmod_table[i].condition_fn && !kmod_table[i].condition_fn()) - continue; + NULSTR_FOREACH_PAIR(name, path, kmod_table) { + struct kmod_module *mod; - if (access(kmod_table[i].directory, F_OK) >= 0) + if (access(path, F_OK) >= 0) continue; log_debug("Your kernel apparently lacks built-in %s support. Might be a good idea to compile it in. " "We'll now try to work around this by loading the module...", - kmod_table[i].name); + name); if (!ctx) { ctx = kmod_new(NULL, NULL); - if (!ctx) { - log_error("Failed to allocate memory for kmod"); - return -ENOMEM; - } + if (!ctx) + return log_oom(); kmod_set_log_fn(ctx, systemd_kmod_log, NULL); kmod_load_resources(ctx); } - err = kmod_module_new_from_name(ctx, kmod_table[i].name, &mod); - if (err < 0) { - log_error("Failed to lookup module '%s'", kmod_table[i].name); + r = kmod_module_new_from_name(ctx, name, &mod); + if (r < 0) { + log_error("Failed to lookup module '%s'", name); continue; } - err = kmod_module_probe_insert_module(mod, KMOD_PROBE_APPLY_BLACKLIST, NULL, NULL, NULL, NULL); - if (err == 0) + r = kmod_module_probe_insert_module(mod, KMOD_PROBE_APPLY_BLACKLIST, NULL, NULL, NULL, NULL); + if (r == 0) log_info("Inserted module '%s'", kmod_module_get_name(mod)); - else if (err == KMOD_PROBE_APPLY_BLACKLIST) + else if (r == KMOD_PROBE_APPLY_BLACKLIST) log_info("Module '%s' is blacklisted", kmod_module_get_name(mod)); else log_error("Failed to insert module '%s'", kmod_module_get_name(mod)); -- cgit v1.2.1 From 1210bc667d2d133814a0eb3cbcfcfb7e721fba9f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 7 May 2013 17:51:41 +0200 Subject: hashmap: document trivial_hash_func() --- src/shared/hashmap.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/shared/hashmap.h b/src/shared/hashmap.h index 8f6e644b25..15b7e27585 100644 --- a/src/shared/hashmap.h +++ b/src/shared/hashmap.h @@ -43,6 +43,9 @@ typedef int (*compare_func_t)(const void *a, const void *b); unsigned string_hash_func(const void *p) _pure_; int string_compare_func(const void *a, const void *b) _pure_; +/* This will compare the passed pointers directly, and will not + * dereference them. This is hence not useful for strings or + * suchlike. */ unsigned trivial_hash_func(const void *p) _const_; int trivial_compare_func(const void *a, const void *b) _const_; -- cgit v1.2.1 From b00ad20fa0e490dde28e196739b4e18abb10e9b4 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 7 May 2013 19:03:46 +0200 Subject: build-sys: support builds without EAs again --- src/core/socket.c | 6 +++--- src/nspawn/nspawn.c | 11 ++++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/core/socket.c b/src/core/socket.c index 8c829d3043..1b08f0a5fd 100644 --- a/src/core/socket.c +++ b/src/core/socket.c @@ -28,7 +28,7 @@ #include #include #include -#ifdef HAVE_ATTR_XATTR_H +#ifdef HAVE_XATTR #include #endif @@ -788,7 +788,7 @@ static void socket_apply_socket_options(Socket *s, int fd) { if (setsockopt(fd, SOL_TCP, TCP_CONGESTION, s->tcp_congestion, strlen(s->tcp_congestion)+1) < 0) log_warning_unit(UNIT(s)->id, "TCP_CONGESTION failed: %m"); -#ifdef HAVE_ATTR_XATTR_H +#ifdef HAVE_XATTR if (s->smack_ip_in) if (fsetxattr(fd, "security.SMACK64IPIN", s->smack_ip_in, strlen(s->smack_ip_in), 0) < 0) log_error_unit(UNIT(s)->id, @@ -810,7 +810,7 @@ static void socket_apply_fifo_options(Socket *s, int fd) { log_warning_unit(UNIT(s)->id, "F_SETPIPE_SZ: %m"); -#ifdef HAVE_ATTR_XATTR_H +#ifdef HAVE_XATTR if (s->smack) if (fsetxattr(fd, "security.SMACK64", s->smack, strlen(s->smack), 0) < 0) log_error_unit(UNIT(s)->id, diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index f3568ab40c..a58cbec38a 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -22,7 +22,6 @@ #include #include #include -#include #include #include #include @@ -43,6 +42,10 @@ #include #include +#ifdef HAVE_XATTR +#include +#endif + #include #include "log.h" @@ -928,6 +931,7 @@ static int setup_cgroup(const char *path) { } static int save_attributes(const char *cgroup, pid_t pid, const char *uuid, const char *directory) { +#ifdef HAVE_XATTR _cleanup_free_ char *path = NULL; char buf[DECIMAL_STR_MAX(pid_t)]; int r = 0, k; @@ -936,7 +940,6 @@ static int save_attributes(const char *cgroup, pid_t pid, const char *uuid, cons assert(pid >= 0); assert(arg_directory); -#ifdef HAVE_XATTR assert_se(snprintf(buf, sizeof(buf), "%lu", (unsigned long) pid) < (int) sizeof(buf)); r = cg_get_path(SYSTEMD_CGROUP_CONTROLLER, cgroup, NULL, &path); @@ -964,8 +967,10 @@ static int save_attributes(const char *cgroup, pid_t pid, const char *uuid, cons if (r == 0) r = k; } -#endif return r; +#else + return 0; +#endif } static int drop_capabilities(void) { -- cgit v1.2.1 From 11ec7cede5bd0255e9df7bf95325d8b69993e40f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 7 May 2013 19:07:27 +0200 Subject: journald: don't recalculate the ACL mask Otherwise we might end up with executable files if some default ACL is set for the journal directory. --- src/journal/journald-server.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/journal/journald-server.c b/src/journal/journald-server.c index 88163c0116..cc52b8a5c9 100644 --- a/src/journal/journald-server.c +++ b/src/journal/journald-server.c @@ -227,9 +227,9 @@ void server_fix_perms(Server *s, JournalFile *f, uid_t uid) { } } + /* We do not recalculate the mask here, so that the fchmod() mask above stays intact. */ if (acl_get_permset(entry, &permset) < 0 || - acl_add_perm(permset, ACL_READ) < 0 || - acl_calc_mask(&acl) < 0) { + acl_add_perm(permset, ACL_READ) < 0) { log_warning("Failed to patch ACL on %s, ignoring: %m", f->path); goto finish; } -- cgit v1.2.1 From 20d4087669a09410ed1fd3bfaf8d295a18609fef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 7 May 2013 14:13:04 -0400 Subject: build-sys: properly mkdir with DESTDIR set MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit grawity> ln: failed to create symbolic link ‘/home/grawity/pkg/aur/systemd-git/pkg/systemd//etc/systemd/system/multi-user.target.wants/remote-fs.target’: No such file or directory --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 96f80d73c1..1b8ed92237 100644 --- a/Makefile.am +++ b/Makefile.am @@ -244,7 +244,7 @@ install-aliases-hook: dir= && $(install-aliases) define install-aliases - $(MKDIR_P) /$(DESTDIR)$$dir && \ + $(MKDIR_P) $(DESTDIR)$$dir && \ while [ -n "$$1" ]; do \ rm -f $(DESTDIR)$$dir/$$2 && \ $(LN_S) $$1 $(DESTDIR)$$dir/$$2 && \ -- cgit v1.2.1 From 0b95a21bd70f63fc57f62020ae84e467712d69f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 7 May 2013 14:38:51 -0400 Subject: build-sys: properly mkdir for GENERAL_ALIASES Previous commit (20d408766) was broken. The problem is not connected to DESTDIR being set or not, but to the fact that targets in $GENERAL_ALIASES have directory components, so mkdir -p wasn't recursing deep enough. --- Makefile.am | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile.am b/Makefile.am index 1b8ed92237..6200610499 100644 --- a/Makefile.am +++ b/Makefile.am @@ -244,8 +244,8 @@ install-aliases-hook: dir= && $(install-aliases) define install-aliases - $(MKDIR_P) $(DESTDIR)$$dir && \ while [ -n "$$1" ]; do \ + $(MKDIR_P) `dirname $(DESTDIR)$$dir/$$2` && \ rm -f $(DESTDIR)$$dir/$$2 && \ $(LN_S) $$1 $(DESTDIR)$$dir/$$2 && \ shift 2 || exit $$?; \ -- cgit v1.2.1 From e724b0639c43c2821613fc4f7f755f87c49a22e8 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 7 May 2013 20:55:11 +0200 Subject: hostname: only suppress setting of pretty hostname if it is non-equal to the static hostname and if the static hostname is set, too https://bugzilla.redhat.com/show_bug.cgi?id=957814 --- src/core/hostname-setup.c | 2 +- src/hostname/hostnamectl.c | 35 ++++++++--------------------------- src/journal/journal-gatewayd.c | 2 +- src/journal/journalctl.c | 2 +- src/nspawn/nspawn.c | 2 +- src/shared/util.c | 17 +++++++++++------ src/shared/util.h | 2 +- 7 files changed, 24 insertions(+), 38 deletions(-) diff --git a/src/core/hostname-setup.c b/src/core/hostname-setup.c index ac508af122..8aa1cff1d3 100644 --- a/src/core/hostname-setup.c +++ b/src/core/hostname-setup.c @@ -42,7 +42,7 @@ static int read_and_strip_hostname(const char *path, char **hn) { if (r < 0) return r; - hostname_cleanup(s); + hostname_cleanup(s, false); if (isempty(s)) { free(s); diff --git a/src/hostname/hostnamectl.c b/src/hostname/hostnamectl.c index 1c9043534a..a1e1bd8443 100644 --- a/src/hostname/hostnamectl.c +++ b/src/hostname/hostnamectl.c @@ -213,26 +213,6 @@ static int show_status(DBusConnection *bus, char **args, unsigned n) { return 0; } -static char* hostname_simplify(char *s) { - char *p, *d; - - for (p = s, d = s; *p; p++) { - if ((*p >= 'a' && *p <= 'z') || - (*p >= '0' && *p <= '9') || - *p == '-' || *p == '_') - *(d++) = *p; - else if (*p >= 'A' && *p <= 'Z') - *(d++) = *p - 'A' + 'a'; - else if (*p == ' ') - *(d++) = '-'; - } - - *d = 0; - - strshorten(s, HOST_NAME_MAX); - return s; -} - static int set_hostname(DBusConnection *bus, char **args, unsigned n) { _cleanup_dbus_message_unref_ DBusMessage *reply = NULL; dbus_bool_t interactive = true; @@ -254,16 +234,17 @@ static int set_hostname(DBusConnection *bus, char **args, unsigned n) { * just set the passed hostname as static/dynamic * hostname. */ - if (hostname_is_valid(hostname)) + h = strdup(hostname); + if (!h) + return log_oom(); + + hostname_cleanup(h, true); + + if (arg_set_static && streq(h, hostname)) p = ""; else { p = hostname; - - h = strdup(hostname); - if (!h) - return log_oom(); - - hostname = hostname_simplify(h); + hostname = h; } r = bus_method_call_with_reply( diff --git a/src/journal/journal-gatewayd.c b/src/journal/journal-gatewayd.c index 51a938b79e..745f45f932 100644 --- a/src/journal/journal-gatewayd.c +++ b/src/journal/journal-gatewayd.c @@ -839,7 +839,7 @@ static int request_handler_machine( "\"cutoff_to_realtime\" : \"%llu\" }\n", SD_ID128_FORMAT_VAL(mid), SD_ID128_FORMAT_VAL(bid), - hostname_cleanup(hostname), + hostname_cleanup(hostname, false), os_name ? os_name : "Linux", v ? v : "bare", (unsigned long long) usage, diff --git a/src/journal/journalctl.c b/src/journal/journalctl.c index d1b201beba..409f082276 100644 --- a/src/journal/journalctl.c +++ b/src/journal/journalctl.c @@ -835,7 +835,7 @@ static int setup_keys(void) { hn = gethostname_malloc(); if (hn) { - hostname_cleanup(hn); + hostname_cleanup(hn, false); fprintf(stderr, "\nThe keys have been generated for host %s/" SD_ID128_FORMAT_STR ".\n", hn, SD_ID128_FORMAT_VAL(machine)); } else fprintf(stderr, "\nThe keys have been generated for host " SD_ID128_FORMAT_STR ".\n", SD_ID128_FORMAT_VAL(machine)); diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index a58cbec38a..09153c87ce 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -1267,7 +1267,7 @@ int main(int argc, char *argv[]) { goto finish; } - hostname_cleanup(arg_machine); + hostname_cleanup(arg_machine, false); if (isempty(arg_machine)) { log_error("Failed to determine machine name automatically, please use -M."); goto finish; diff --git a/src/shared/util.c b/src/shared/util.c index 00d3ace616..673e0da6b6 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -3838,24 +3838,29 @@ bool hostname_is_valid(const char *s) { return true; } -char* hostname_cleanup(char *s) { +char* hostname_cleanup(char *s, bool lowercase) { char *p, *d; bool dot; for (p = s, d = s, dot = true; *p; p++) { if (*p == '.') { - if (dot || p[1] == 0) + if (dot) continue; + *(d++) = '.'; dot = true; - } else + } else if (hostname_valid_char(*p)) { + *(d++) = lowercase ? tolower(*p) : *p; dot = false; + } - if (hostname_valid_char(*p)) - *(d++) = *p; } - *d = 0; + if (dot && d > s) + d[-1] = 0; + else + *d = 0; + strshorten(s, HOST_NAME_MAX); return s; diff --git a/src/shared/util.h b/src/shared/util.h index 7ef46e8f1e..64e63b8c07 100644 --- a/src/shared/util.h +++ b/src/shared/util.h @@ -411,7 +411,7 @@ bool nulstr_contains(const char*nulstr, const char *needle); bool plymouth_running(void); bool hostname_is_valid(const char *s) _pure_; -char* hostname_cleanup(char *s); +char* hostname_cleanup(char *s, bool lowercase); char* strshorten(char *s, size_t l); -- cgit v1.2.1 From c0b21b9669a86a5e404b73865080494063ee8351 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 7 May 2013 20:56:05 +0200 Subject: hostnamectl: suppress outputting of pretty hostname field in status if empty --- src/hostname/hostnamectl.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/hostname/hostnamectl.c b/src/hostname/hostnamectl.c index a1e1bd8443..064581a31c 100644 --- a/src/hostname/hostnamectl.c +++ b/src/hostname/hostnamectl.c @@ -79,14 +79,18 @@ static void print_status_info(StatusInfo *i) { printf(" Static hostname: %s\n", strna(i->static_hostname)); - if (!streq_ptr(i->hostname, i->static_hostname)) + if (!isempty(i->pretty_hostname) && + !streq_ptr(i->pretty_hostname, i->static_hostname)) + printf(" Pretty hostname: %s\n", + strna(i->pretty_hostname)); + + if (!isempty(i->hostname) && + !streq_ptr(i->hostname, i->static_hostname)) printf("Transient hostname: %s\n", strna(i->hostname)); - printf(" Pretty hostname: %s\n" - " Icon name: %s\n" + printf(" Icon name: %s\n" " Chassis: %s\n", - strna(i->pretty_hostname), strna(i->icon_name), strna(i->chassis)); -- cgit v1.2.1 From cdf173349c73c9a097ec63eec56772ec47f496cc Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Tue, 7 May 2013 20:56:30 +0200 Subject: update TODO --- TODO | 2 -- 1 file changed, 2 deletions(-) diff --git a/TODO b/TODO index 269e7f882e..4f5af140f0 100644 --- a/TODO +++ b/TODO @@ -29,8 +29,6 @@ Fedora 19: Features: -* journald: user journals get the wrong ACL mask? - * Introduce a way how we can kill the main process of a service with KillSignal, but all processes with SIGKILL later on https://bugzilla.redhat.com/show_bug.cgi?id=952634 -- cgit v1.2.1 From fa13e4a78487971a5093db3fdc61cad224d47c16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Mon, 6 May 2013 20:00:16 -0400 Subject: man: add permalinks to subsection titles too --- man/custom-html.xsl | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/man/custom-html.xsl b/man/custom-html.xsl index 2e40ab1660..dde9d7af0e 100644 --- a/man/custom-html.xsl +++ b/man/custom-html.xsl @@ -48,7 +48,6 @@ Permalink to this headline - # @@ -57,6 +56,28 @@ + +

+ + + + + + + headerlink + + + Permalink to this headline + + + # + + + + +

+ +
-- cgit v1.2.1 From 6866780115a7c0af034f287d965f4bf6b02c1e6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Tue, 7 May 2013 21:07:39 -0400 Subject: Rearrange a few fields to reduce holes --- src/core/socket.h | 7 ++++--- src/journal/journal-internal.h | 9 +++++---- src/journal/mmap-cache.c | 5 ++--- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/core/socket.h b/src/core/socket.h index 4826bb331b..9d48cde0a6 100644 --- a/src/core/socket.h +++ b/src/core/socket.h @@ -130,6 +130,10 @@ struct Socket { bool broadcast; bool pass_cred; bool pass_sec; + + /* Only for INET6 sockets: issue IPV6_V6ONLY sockopt */ + SocketAddressBindIPv6Only bind_ipv6_only; + int priority; int mark; size_t receive_buffer; @@ -142,9 +146,6 @@ struct Socket { long mq_maxmsg; long mq_msgsize; - /* Only for INET6 sockets: issue IPV6_V6ONLY sockopt */ - SocketAddressBindIPv6Only bind_ipv6_only; - char *smack; char *smack_ip_in; char *smack_ip_out; diff --git a/src/journal/journal-internal.h b/src/journal/journal-internal.h index eea56e4713..c7e585d810 100644 --- a/src/journal/journal-internal.h +++ b/src/journal/journal-internal.h @@ -74,19 +74,20 @@ typedef enum LocationType { struct Location { LocationType type; + bool seqnum_set; + bool realtime_set; + bool monotonic_set; + bool xor_hash_set; + uint64_t seqnum; sd_id128_t seqnum_id; - bool seqnum_set; uint64_t realtime; - bool realtime_set; uint64_t monotonic; sd_id128_t boot_id; - bool monotonic_set; uint64_t xor_hash; - bool xor_hash_set; }; struct Directory { diff --git a/src/journal/mmap-cache.c b/src/journal/mmap-cache.c index 54bf1148e1..767f555526 100644 --- a/src/journal/mmap-cache.c +++ b/src/journal/mmap-cache.c @@ -41,9 +41,9 @@ struct Window { bool keep_always; bool in_unused; + int prot; void *ptr; uint64_t offset; - int prot; size_t size; FileDescriptor *fd; @@ -70,12 +70,11 @@ struct FileDescriptor { struct MMapCache { int n_ref; + unsigned n_windows; Hashmap *fds; Hashmap *contexts; - unsigned n_windows; - LIST_HEAD(Window, unused); Window *last_unused; }; -- cgit v1.2.1 From 5afbe712db5cc68213a24c45396ffb43fab05e3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 8 May 2013 21:08:14 -0400 Subject: systemd-python: add __version__ strings --- src/journal/sd-journal.c | 2 +- src/python-systemd/_daemon.c | 4 +++- src/python-systemd/_journal.c | 21 +++++++++++++++++++-- src/python-systemd/_reader.c | 4 +++- src/python-systemd/daemon.py | 3 ++- src/python-systemd/id128.c | 5 ++--- src/python-systemd/journal.py | 2 +- 7 files changed, 31 insertions(+), 10 deletions(-) diff --git a/src/journal/sd-journal.c b/src/journal/sd-journal.c index d81e4ddfa9..c21712b7c4 100644 --- a/src/journal/sd-journal.c +++ b/src/journal/sd-journal.c @@ -415,7 +415,7 @@ _public_ void sd_journal_flush_matches(sd_journal *j) { } static int compare_entry_order(JournalFile *af, Object *_ao, - JournalFile *bf, uint64_t bp) { + JournalFile *bf, uint64_t bp) { uint64_t a, b; Object *ao, *bo; diff --git a/src/python-systemd/_daemon.c b/src/python-systemd/_daemon.c index ce2064935d..d3b4807368 100644 --- a/src/python-systemd/_daemon.c +++ b/src/python-systemd/_daemon.c @@ -291,6 +291,7 @@ PyMODINIT_FUNC init_daemon(void) { return; PyModule_AddIntConstant(m, "LISTEN_FDS_START", SD_LISTEN_FDS_START); + PyModule_AddStringConstant(m, "__version__", PACKAGE_VERSION); } #else @@ -310,7 +311,8 @@ PyMODINIT_FUNC PyInit__daemon(void) { if (m == NULL) return NULL; - if (PyModule_AddIntConstant(m, "LISTEN_FDS_START", SD_LISTEN_FDS_START)) { + if (PyModule_AddIntConstant(m, "LISTEN_FDS_START", SD_LISTEN_FDS_START) || + PyModule_AddStringConstant(m, "__version__", PACKAGE_VERSION)) { Py_DECREF(m); return NULL; } diff --git a/src/python-systemd/_journal.c b/src/python-systemd/_journal.c index 2de0d4f91d..f8e0b4f7f2 100644 --- a/src/python-systemd/_journal.c +++ b/src/python-systemd/_journal.c @@ -119,7 +119,13 @@ static PyMethodDef methods[] = { #if PY_MAJOR_VERSION < 3 PyMODINIT_FUNC init_journal(void) { - (void) Py_InitModule("_journal", methods); + PyObject *m; + + m = Py_InitModule("_journal", methods); + if (m == NULL) + return; + + PyModule_AddStringConstant(m, "__version__", PACKAGE_VERSION); } #else @@ -133,7 +139,18 @@ static struct PyModuleDef module = { }; PyMODINIT_FUNC PyInit__journal(void) { - return PyModule_Create(&module); + PyObject *m; + + m = PyModule_Create(&module); + if (m == NULL) + return NULL; + + if (PyModule_AddStringConstant(m, "__version__", PACKAGE_VERSION)) { + Py_DECREF(m); + return NULL; + } + + return m; } #endif diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index b836597746..50ad889201 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -30,6 +30,7 @@ #include "pyutil.h" #include "macro.h" #include "util.h" +#include "build.h" typedef struct { PyObject_HEAD @@ -1126,7 +1127,8 @@ init_reader(void) PyModule_AddIntConstant(m, "INVALIDATE", SD_JOURNAL_INVALIDATE) || PyModule_AddIntConstant(m, "LOCAL_ONLY", SD_JOURNAL_LOCAL_ONLY) || PyModule_AddIntConstant(m, "RUNTIME_ONLY", SD_JOURNAL_RUNTIME_ONLY) || - PyModule_AddIntConstant(m, "SYSTEM_ONLY", SD_JOURNAL_SYSTEM_ONLY)) { + PyModule_AddIntConstant(m, "SYSTEM_ONLY", SD_JOURNAL_SYSTEM_ONLY) || + PyModule_AddStringConstant(m, "__version__", PACKAGE_VERSION)) { #if PY_MAJOR_VERSION >= 3 Py_DECREF(m); return NULL; diff --git a/src/python-systemd/daemon.py b/src/python-systemd/daemon.py index 4a02204433..e2829d1671 100644 --- a/src/python-systemd/daemon.py +++ b/src/python-systemd/daemon.py @@ -1,4 +1,5 @@ -from ._daemon import (booted, +from ._daemon import (__version__, + booted, _listen_fds, _is_fifo, _is_socket, diff --git a/src/python-systemd/id128.c b/src/python-systemd/id128.c index 1c2fe5dd0b..ec1d9fb4a2 100644 --- a/src/python-systemd/id128.c +++ b/src/python-systemd/id128.c @@ -19,8 +19,6 @@ along with systemd; If not, see . ***/ -#include - #include #include @@ -126,6 +124,7 @@ PyMODINIT_FUNC initid128(void) { #define JOINER ; #include "id128-constants.h" #undef JOINER + PyModule_AddStringConstant(m, "__version__", PACKAGE_VERSION); } #else @@ -149,7 +148,7 @@ PyMODINIT_FUNC PyInit_id128(void) { #define JOINER || #include "id128-constants.h" #undef JOINER - false) { + PyModule_AddStringConstant(m, "__version__", PACKAGE_VERSION)) { Py_DECREF(m); return NULL; } diff --git a/src/python-systemd/journal.py b/src/python-systemd/journal.py index 9e40cbc57e..9ef1ede229 100644 --- a/src/python-systemd/journal.py +++ b/src/python-systemd/journal.py @@ -31,7 +31,7 @@ if _sys.version_info >= (3,3): from collections import ChainMap as _ChainMap from syslog import (LOG_EMERG, LOG_ALERT, LOG_CRIT, LOG_ERR, LOG_WARNING, LOG_NOTICE, LOG_INFO, LOG_DEBUG) -from ._journal import sendv, stream_fd +from ._journal import __version__, sendv, stream_fd from ._reader import (_Reader, NOP, APPEND, INVALIDATE, LOCAL_ONLY, RUNTIME_ONLY, SYSTEM_ONLY, _get_catalog) -- cgit v1.2.1 From 539e0a4d583bca7db837275b07a20a933b7f8f83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Wed, 8 May 2013 19:46:49 -0400 Subject: systemd-python: add wrappers for easy functions in sd-login sd_get_uids, sd_get_seats, sd_get_sessions, and sd_get_machine_names. --- Makefile.am | 26 +++++- src/python-systemd/_reader.c | 14 +-- src/python-systemd/docs/index.rst | 1 + src/python-systemd/docs/login.rst | 5 ++ src/python-systemd/login.c | 176 ++++++++++++++++++++++++++++++++++++++ src/python-systemd/pyutil.c | 16 ++++ src/python-systemd/pyutil.h | 1 + 7 files changed, 225 insertions(+), 14 deletions(-) create mode 100644 src/python-systemd/docs/login.rst create mode 100644 src/python-systemd/login.c diff --git a/Makefile.am b/Makefile.am index 6200610499..1e7c9df38f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3698,7 +3698,8 @@ pkgpyexec_LTLIBRARIES = \ _journal.la \ id128.la \ _daemon.la \ - _reader.la + _reader.la \ + login.la _journal_la_SOURCES = \ src/python-systemd/_journal.c @@ -3784,6 +3785,29 @@ _reader_la_LIBADD = \ libsystemd-shared.la \ libsystemd-daemon-internal.la +login_la_SOURCES = \ + src/python-systemd/login.c \ + src/python-systemd/pyutil.c \ + src/python-systemd/pyutil.h + +login_la_CFLAGS = \ + $(AM_CFLAGS) \ + -fvisibility=default \ + $(PYTHON_CFLAGS) + +login_la_LDFLAGS = \ + $(AM_LDFLAGS) \ + -shared \ + -module \ + -avoid-version + +login_la_LIBADD = \ + $(PYTHON_LIBS) \ + libsystemd-journal.la \ + libsystemd-login.la \ + libsystemd-shared.la \ + libsystemd-daemon-internal.la + dist_pkgpyexec_PYTHON = \ src/python-systemd/journal.py \ src/python-systemd/daemon.py \ diff --git a/src/python-systemd/_reader.c b/src/python-systemd/_reader.c index 50ad889201..d20c58d2a8 100644 --- a/src/python-systemd/_reader.c +++ b/src/python-systemd/_reader.c @@ -213,19 +213,7 @@ static PyObject* Reader_get_timeout_ms(Reader *self, PyObject *args) if (r < 0) return NULL; - if (t == (uint64_t) -1) - return PyLong_FromLong(-1); - else { - struct timespec ts; - uint64_t n; - int msec; - - clock_gettime(CLOCK_MONOTONIC, &ts); - n = (uint64_t) ts.tv_sec * 1000000 + ts.tv_nsec / 1000; - msec = t > n ? (int) ((t - n + 999) / 1000) : 0; - - return PyLong_FromLong(msec); - } + return absolute_timeout(t); } diff --git a/src/python-systemd/docs/index.rst b/src/python-systemd/docs/index.rst index 8a94d0750b..e78d966274 100644 --- a/src/python-systemd/docs/index.rst +++ b/src/python-systemd/docs/index.rst @@ -14,6 +14,7 @@ Contents: journal id128 daemon + login Indices and tables ================== diff --git a/src/python-systemd/docs/login.rst b/src/python-systemd/docs/login.rst new file mode 100644 index 0000000000..2cd9d8cbee --- /dev/null +++ b/src/python-systemd/docs/login.rst @@ -0,0 +1,5 @@ +`systemd.login` module +======================= + +.. automodule:: systemd.login + :members: diff --git a/src/python-systemd/login.c b/src/python-systemd/login.c new file mode 100644 index 0000000000..1dbe5ac5bf --- /dev/null +++ b/src/python-systemd/login.c @@ -0,0 +1,176 @@ +/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/ + +/*** + This file is part of systemd. + + Copyright 2013 Zbigniew Jędrzejewski-Szmek + + systemd is free software; you can redistribute it and/or modify it + under the terms of the GNU Lesser General Public License as published by + the Free Software Foundation; either version 2.1 of the License, or + (at your option) any later version. + + systemd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License + along with systemd; If not, see . +***/ + +#define PY_SSIZE_T_CLEAN +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wredundant-decls" +#include +#pragma GCC diagnostic pop + +#include "systemd/sd-login.h" +#include "pyutil.h" +#include "util.h" +#include "strv.h" + +PyDoc_STRVAR(module__doc__, + "Python interface to the libsystemd-login library." +); + +#define helper(name) \ +static PyObject* name(PyObject *self, PyObject *args) { \ + _cleanup_strv_free_ char **list = NULL; \ + int r; \ + PyObject *ans; \ + \ + assert(args == NULL); \ + \ + r = sd_get_##name(&list); \ + if (r < 0) { \ + errno = -r; \ + return PyErr_SetFromErrno(PyExc_IOError); \ + } \ + \ + ans = PyList_New(r); \ + if (!ans) \ + return NULL; \ + \ + for (r--; r >= 0; r--) { \ + PyObject *s = unicode_FromString(list[r]); \ + if (!s) { \ + Py_DECREF(ans); \ + return NULL; \ + } \ + \ + PyList_SetItem(ans, r, s); \ + } \ + \ + return ans; \ +} + +helper(seats) +helper(sessions) +helper(machine_names) +#undef helper + +static PyObject* uids(PyObject *self, PyObject *args) { + _cleanup_free_ uid_t *list = NULL; + int r; + PyObject *ans; + + assert(args == NULL); + + r = sd_get_uids(&list); + if (r < 0) { + errno = -r; + return PyErr_SetFromErrno(PyExc_IOError); + } + + ans = PyList_New(r); + if (!ans) + return NULL; + + for (r--; r >= 0; r--) { + PyObject *s = long_FromLong(list[r]); + if (!s) { + Py_DECREF(ans); + return NULL; + } + + PyList_SetItem(ans, r, s); + } + + return ans; +} + +PyDoc_STRVAR(seats__doc__, + "seats() -> list\n\n" + "Returns a list of currently available local seats.\n" + "Wraps sd_get_seats(3)." +); + +PyDoc_STRVAR(sessions__doc__, + "sessions() -> list\n\n" + "Returns a list of current login sessions.\n" + "Wraps sd_get_sessions(3)." +); + +PyDoc_STRVAR(machine_names__doc__, + "machine_names() -> list\n\n" + "Returns a list of currently running virtual machines\n" + "and containers on the system.\n" + "Wraps sd_get_machine_names(3)." +); + +PyDoc_STRVAR(uids__doc__, + "uids() -> list\n\n" + "Returns a list of uids of users who currently have login sessions.\n" + "Wraps sd_get_uids(3)." +); + +static PyMethodDef methods[] = { + { "seats", seats, METH_NOARGS, seats__doc__}, + { "sessions", sessions, METH_NOARGS, sessions__doc__}, + { "machine_names", machine_names, METH_NOARGS, machine_names__doc__}, + { "uids", uids, METH_NOARGS, uids__doc__}, + {} /* Sentinel */ +}; + +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-prototypes" + +#if PY_MAJOR_VERSION < 3 + +PyMODINIT_FUNC initlogin(void) { + PyObject *m; + + m = Py_InitModule3("login", methods, module__doc__); + if (m == NULL) + return; + PyModule_AddStringConstant(m, "__version__", PACKAGE_VERSION); +} +#else + +static struct PyModuleDef module = { + PyModuleDef_HEAD_INIT, + "login", /* name of module */ + module__doc__, /* module documentation, may be NULL */ + -1, /* size of per-interpreter state of the module */ + methods +}; + +PyMODINIT_FUNC PyInit_login(void) { + PyObject *m; + + m = PyModule_Create(&module); + if (m == NULL) + return NULL; + + if (PyModule_AddStringConstant(m, "__version__", PACKAGE_VERSION)) { + Py_DECREF(m); + return NULL; + } + + return m; +} + +#endif + +#pragma GCC diagnostic pop diff --git a/src/python-systemd/pyutil.c b/src/python-systemd/pyutil.c index 79065a11c0..9510acdddb 100644 --- a/src/python-systemd/pyutil.c +++ b/src/python-systemd/pyutil.c @@ -28,3 +28,19 @@ void cleanup_Py_DECREFp(PyObject **p) { Py_DECREF(*p); } + +PyObject* absolute_timeout(uint64_t t) { + if (t == (uint64_t) -1) + return PyLong_FromLong(-1); + else { + struct timespec ts; + uint64_t n; + int msec; + + clock_gettime(CLOCK_MONOTONIC, &ts); + n = (uint64_t) ts.tv_sec * 1000000 + ts.tv_nsec / 1000; + msec = t > n ? (int) ((t - n + 999) / 1000) : 0; + + return PyLong_FromLong(msec); + } +} diff --git a/src/python-systemd/pyutil.h b/src/python-systemd/pyutil.h index 2163fda9ef..5c7ea37cdb 100644 --- a/src/python-systemd/pyutil.h +++ b/src/python-systemd/pyutil.h @@ -27,6 +27,7 @@ #endif void cleanup_Py_DECREFp(PyObject **p); +PyObject* absolute_timeout(uint64_t t); #define _cleanup_Py_DECREF_ __attribute__((cleanup(cleanup_Py_DECREFp))) -- cgit v1.2.1 From b62ee5249da92ff8960322eab770f742425831e3 Mon Sep 17 00:00:00 2001 From: Karol Lewandowski Date: Tue, 7 May 2013 13:21:46 +0200 Subject: condition, man: Add support for ConditionSecurity=smack According to Documentation/security/Smack.txt: In keeping with the intent of Smack, configuration data is minimal and not strictly required. The most important configuration step is mounting the smackfs pseudo filesystem. This means that checking the mount point should be enough. --- man/systemd.unit.xml | 5 +++-- src/core/condition.c | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/man/systemd.unit.xml b/man/systemd.unit.xml index 49103dad56..c56837a6e5 100644 --- a/man/systemd.unit.xml +++ b/man/systemd.unit.xml @@ -984,8 +984,9 @@ may be used to check whether the given security module is enabled on the system. Currently the only recognized - values are selinux - and apparmor. + values are selinux, + apparmor, and + smack. The test may be negated by prepending an exclamation mark. diff --git a/src/core/condition.c b/src/core/condition.c index 4aa5530c36..16cae6d23b 100644 --- a/src/core/condition.c +++ b/src/core/condition.c @@ -164,6 +164,8 @@ static bool test_security(const char *parameter) { #endif if (streq(parameter, "apparmor")) return access("/sys/kernel/security/apparmor/", F_OK) == 0; + if (streq(parameter, "smack")) + return access("/sys/fs/smackfs", F_OK) == 0; return false; } -- cgit v1.2.1 From 2aba426ffb345408a461ed0ff6fba46e63ae625b Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 9 May 2013 15:32:27 +0200 Subject: man: document that the kernel's audit subsystem is currently incompatible with nspawn containers --- man/systemd-nspawn.xml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/man/systemd-nspawn.xml b/man/systemd-nspawn.xml index cab5990a56..d9fb899895 100644 --- a/man/systemd-nspawn.xml +++ b/man/systemd-nspawn.xml @@ -142,6 +142,16 @@ might be necessary to add this file to the container tree manually if the OS of the container is too old to contain this file out-of-the-box. + + Note that the kernel auditing subsystem is + currently broken when used together with + containers. We hence recommend turning it off entirely + when using systemd-nspawn by + booting with audit=0 on the kernel + command line, or by turning it off at kernel build + time. If auditing is enabled in the kernel operating + systems booted in an nspawn container might refuse + log-in attempts. -- cgit v1.2.1 From 606c24e3bd41207c395f24a56bcfcad791e265a5 Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Thu, 9 May 2013 15:45:50 +0200 Subject: build-sys: prepare 204 --- Makefile.am | 8 ++++---- NEWS | 12 ++++++++++++ configure.ac | 2 +- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/Makefile.am b/Makefile.am index 1e7c9df38f..3a196a65e7 100644 --- a/Makefile.am +++ b/Makefile.am @@ -32,7 +32,7 @@ SUBDIRS = . po .SECONDARY: LIBUDEV_CURRENT=4 -LIBUDEV_REVISION=4 +LIBUDEV_REVISION=5 LIBUDEV_AGE=3 LIBGUDEV_CURRENT=1 @@ -40,7 +40,7 @@ LIBGUDEV_REVISION=3 LIBGUDEV_AGE=1 LIBSYSTEMD_LOGIN_CURRENT=7 -LIBSYSTEMD_LOGIN_REVISION=0 +LIBSYSTEMD_LOGIN_REVISION=1 LIBSYSTEMD_LOGIN_AGE=7 LIBSYSTEMD_DAEMON_CURRENT=0 @@ -48,11 +48,11 @@ LIBSYSTEMD_DAEMON_REVISION=10 LIBSYSTEMD_DAEMON_AGE=0 LIBSYSTEMD_ID128_CURRENT=0 -LIBSYSTEMD_ID128_REVISION=22 +LIBSYSTEMD_ID128_REVISION=23 LIBSYSTEMD_ID128_AGE=0 LIBSYSTEMD_JOURNAL_CURRENT=10 -LIBSYSTEMD_JOURNAL_REVISION=1 +LIBSYSTEMD_JOURNAL_REVISION=2 LIBSYSTEMD_JOURNAL_AGE=10 # Dirs of external packages diff --git a/NEWS b/NEWS index 3900b9ba4b..6cfe0dfc59 100644 --- a/NEWS +++ b/NEWS @@ -1,5 +1,17 @@ systemd System and Service Manager +CHANGES WITH 204: + + * The Python bindings gained some minimal support for the APIs + exposed by libsystemd-logind. + + * ConditionSecurity= gained support for detecting SMACK. Since + this condition already supports SELinux and AppArmor we only + miss IMA for this. Patches welcome! + + Contributions from: Karol Lewandowski, Lennart Poettering, + Zbigniew Jędrzejewski-Szmek + CHANGES WITH 203: * systemd-nspawn will now create /etc/resolv.conf if diff --git a/configure.ac b/configure.ac index 1a90c19f09..e1278e8504 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ AC_PREREQ([2.64]) AC_INIT([systemd], - [203], + [204], [http://bugs.freedesktop.org/enter_bug.cgi?product=systemd], [systemd], [http://www.freedesktop.org/wiki/Software/systemd]) -- cgit v1.2.1